chatlab-cli 0.37.1 → 0.37.3

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 (153) hide show
  1. package/dist/{chat-command-YAFRLHMQ.mjs → chat-command-RQC44FPF.mjs} +53 -13
  2. package/dist/chat-command-RQC44FPF.mjs.map +1 -0
  3. package/dist/{chunk-FPVRSXQ4.mjs → chunk-4FAEB4C2.mjs} +12 -12
  4. package/dist/{chunk-MMTEGUQA.mjs → chunk-5OA4QI3Q.mjs} +3 -3
  5. package/dist/{chunk-UP6JIV3S.mjs → chunk-E2ZFGNZQ.mjs} +16 -12
  6. package/dist/chunk-E2ZFGNZQ.mjs.map +1 -0
  7. package/dist/{chunk-JWJREWVN.mjs → chunk-E6IRRNBQ.mjs} +27 -3
  8. package/dist/chunk-E6IRRNBQ.mjs.map +1 -0
  9. package/dist/{chunk-PDQV4RUA.mjs → chunk-GDKQKHJT.mjs} +2 -2
  10. package/dist/{chunk-GKCIRKOH.mjs → chunk-HJWBFHNR.mjs} +4 -4
  11. package/dist/{chunk-73TJ2S7W.mjs → chunk-IDDTW5JN.mjs} +313 -24
  12. package/dist/chunk-IDDTW5JN.mjs.map +1 -0
  13. package/dist/{chunk-2PY4XCH3.mjs → chunk-IMJVOODY.mjs} +2 -2
  14. package/dist/{chunk-ARIBCH47.mjs → chunk-LUENE6L7.mjs} +25 -15
  15. package/dist/chunk-LUENE6L7.mjs.map +1 -0
  16. package/dist/{chunk-WDLO7OLX.mjs → chunk-O57SQSCO.mjs} +2 -2
  17. package/dist/{chunk-N4SB6QZV.mjs → chunk-ZGXXAPLX.mjs} +2 -2
  18. package/dist/{chunk-OTYNMDDL.mjs → chunk-ZOHSWBD2.mjs} +2237 -1977
  19. package/dist/chunk-ZOHSWBD2.mjs.map +1 -0
  20. package/dist/cli.mjs +9 -9
  21. package/dist/contacts-worker.mjs +2 -2
  22. package/dist/global-insight-worker.mjs +1 -1
  23. package/dist/{http-LPFPVTBC.mjs → http-QJDZKDNJ.mjs} +12 -12
  24. package/dist/{import-T4WX2ZJL.mjs → import-XK6YM26A.mjs} +7 -7
  25. package/dist/index.mjs +12 -12
  26. package/dist/{mcp-SMF3NWIN.mjs → mcp-DMGZFSYN.mjs} +24 -17
  27. package/dist/mcp-DMGZFSYN.mjs.map +1 -0
  28. package/dist/people-relationships-worker.mjs +2 -2
  29. package/dist/semantic-index-worker.mjs +1 -1
  30. package/dist/{src-EGLLMTAU.mjs → src-4AHJUFCW.mjs} +6 -6
  31. package/dist/{stream-import-2BXJTTCE.mjs → stream-import-7VQVT5ST.mjs} +7 -7
  32. package/dist/{worker-runtime-RDLSPXFT.mjs → worker-runtime-PQBAV75N.mjs} +5 -5
  33. package/dist-cli-web/assets/{AISettingsTab-CEhrXlYR.js → AISettingsTab-qS3XKnvh.js} +1 -1
  34. package/dist-cli-web/assets/{AboutTab-Bbu0SsMM.js → AboutTab-K-i40dPv.js} +1 -1
  35. package/dist-cli-web/assets/{Alert-510jTN3l.js → Alert-GSvA5B7J.js} +1 -1
  36. package/dist-cli-web/assets/{ApiSettingsTab-Bi1GRMN4.js → ApiSettingsTab-DIVGTR3g.js} +1 -1
  37. package/dist-cli-web/assets/{BatchManageTab-DhnqMCSM.js → BatchManageTab-CJhwvYWV.js} +1 -1
  38. package/dist-cli-web/assets/{BufferResource-CKZxnACp.js → BufferResource-Cjm0m7sF.js} +1 -1
  39. package/dist-cli-web/assets/{CanvasRenderer-BeK5POBy.js → CanvasRenderer-C-fmrahh.js} +1 -1
  40. package/dist-cli-web/assets/{CardDecoration-RuBA3N2j.js → CardDecoration-Cz54ZPyh.js} +1 -1
  41. package/dist-cli-web/assets/{ChatRecordDrawer-BY_-lIEj.js → ChatRecordDrawer-Cst8zTUv.js} +1 -1
  42. package/dist-cli-web/assets/{ChatRecordWorkspace-7prKd-Tq.js → ChatRecordWorkspace-DKVKaimw.js} +1 -1
  43. package/dist-cli-web/assets/{Checkbox-_eH64bb0.js → Checkbox-CrlY3jiJ.js} +1 -1
  44. package/dist-cli-web/assets/{DataDirCleanupNotice-BHaXwlfr.js → DataDirCleanupNotice-Cjqiub4e.js} +1 -1
  45. package/dist-cli-web/assets/{DatePicker.vue_vue_type_script_setup_true_lang-D9Ul_GYz.js → DatePicker.vue_vue_type_script_setup_true_lang-BYY2UmPA.js} +1 -1
  46. package/dist-cli-web/assets/{DebugToolsPanel-ByKItGrS.js → DebugToolsPanel-I00RV_Lr.js} +1 -1
  47. package/dist-cli-web/assets/{EChart.vue_vue_type_script_setup_true_lang-DubnuUXI.js → EChart.vue_vue_type_script_setup_true_lang-CRTZh9kh.js} +1 -1
  48. package/dist-cli-web/assets/{EChartBar.vue_vue_type_script_setup_true_lang-DKNCZuFm.js → EChartBar.vue_vue_type_script_setup_true_lang-DjDFhnN9.js} +1 -1
  49. package/dist-cli-web/assets/{EChartLine.vue_vue_type_script_setup_true_lang-Fl7xAOSR.js → EChartLine.vue_vue_type_script_setup_true_lang-BLqlW9E4.js} +1 -1
  50. package/dist-cli-web/assets/{EChartWordcloud-C6XM4KOX.js → EChartWordcloud-ChKJM8bU.js} +1 -1
  51. package/dist-cli-web/assets/{FileDropZone.vue_vue_type_script_setup_true_lang-DYDdRSNE.js → FileDropZone.vue_vue_type_script_setup_true_lang-CsRmQhVQ.js} +1 -1
  52. package/dist-cli-web/assets/{Filter-CByj_rCR.js → Filter-Duzxgudo.js} +1 -1
  53. package/dist-cli-web/assets/{GlobalTaskBar-BdELjzrs.js → GlobalTaskBar-DL0IJxlt.js} +1 -1
  54. package/dist-cli-web/assets/{GroupRelationshipGalaxyView-CnzPEgUS.js → GroupRelationshipGalaxyView-BZrB2o2g.js} +1 -1
  55. package/dist-cli-web/assets/{Label-DCIcxkhU.js → Label-CaVKlQnJ.js} +1 -1
  56. package/dist-cli-web/assets/{LoadingState.vue_vue_type_script_setup_true_lang-BBcCt_Qm.js → LoadingState.vue_vue_type_script_setup_true_lang-uF54r-dT.js} +1 -1
  57. package/dist-cli-web/assets/{MessageExportModal-DNU16Bs8.js → MessageExportModal-JpurBsUW.js} +1 -1
  58. package/dist-cli-web/assets/{PageHeader-CKeZjNNR.js → PageHeader-BciykZ_-.js} +1 -1
  59. package/dist-cli-web/assets/{PageTabs.vue_vue_type_script_setup_true_lang-C8M3wNNH.js → PageTabs.vue_vue_type_script_setup_true_lang-2Xe2iUFO.js} +1 -1
  60. package/dist-cli-web/assets/{RelationshipGalaxyCanvas-CDhljGyJ.js → RelationshipGalaxyCanvas-BO5-MowG.js} +3 -3
  61. package/dist-cli-web/assets/{RelationshipGalaxyThreeCanvas-BP8fsvvf.js → RelationshipGalaxyThreeCanvas-Dp4CcWU5.js} +1 -1
  62. package/dist-cli-web/assets/{RenderTargetSystem-D76QrDT_.js → RenderTargetSystem-CfuoUG_y.js} +1 -1
  63. package/dist-cli-web/assets/{RovingFocusItem-BJMUQ5DJ.js → RovingFocusItem-FpYwYEP_.js} +1 -1
  64. package/dist-cli-web/assets/{ScreenCaptureModal-DkX4z-M1.js → ScreenCaptureModal-cElYPaSj.js} +1 -1
  65. package/dist-cli-web/assets/SectionTabs.vue_vue_type_script_setup_true_lang-pVQMbTsj.js +1 -0
  66. package/dist-cli-web/assets/{Select-B5oJc5y1.js → Select-H8Fz6RkU.js} +1 -1
  67. package/dist-cli-web/assets/{SettingsModal-BO-QKQ2h.js → SettingsModal-52Fw4fVW.js} +2 -2
  68. package/dist-cli-web/assets/{StorageTab-CPPXXaRm.js → StorageTab-BnugE5BO.js} +1 -1
  69. package/dist-cli-web/assets/{Switch-CDk3LZ4_.js → Switch-K4aqYC4Y.js} +1 -1
  70. package/dist-cli-web/assets/{Tabs-DqWTBV8x.js → Tabs-BXjD45rO.js} +1 -1
  71. package/dist-cli-web/assets/{Tabs-BMq9wODW.js → Tabs-DJ5p8gb6.js} +1 -1
  72. package/dist-cli-web/assets/{ThemeCard.vue_vue_type_script_setup_true_lang-D2outEOV.js → ThemeCard.vue_vue_type_script_setup_true_lang-BLmTpx4f.js} +1 -1
  73. package/dist-cli-web/assets/{TimeSelect.vue_vue_type_script_setup_true_lang-BcflxP_U.js → TimeSelect.vue_vue_type_script_setup_true_lang-geQAlopO.js} +1 -1
  74. package/dist-cli-web/assets/{VisuallyHiddenInput-BAFpkxMI.js → VisuallyHiddenInput-J2KEIQBX.js} +1 -1
  75. package/dist-cli-web/assets/{WebGLRenderer-DjCPvR_O.js → WebGLRenderer-BDFzRniS.js} +1 -1
  76. package/dist-cli-web/assets/{WebGPURenderer-C2B_u03z.js → WebGPURenderer-BKYZyUCZ.js} +1 -1
  77. package/dist-cli-web/assets/aiChat-CdJzpNYW.js +8 -0
  78. package/dist-cli-web/assets/{base-F6s0vTrr.js → base-129JztT1.js} +1 -1
  79. package/dist-cli-web/assets/{browserAll-DiUAZg4L.js → browserAll-CZNZDK1i.js} +1 -1
  80. package/dist-cli-web/assets/{chatMessages-Bd33SSXI.js → chatMessages-zmzHCUCy.js} +3 -3
  81. package/dist-cli-web/assets/{cli-web-DoibEdj2.js → cli-web-_WGCg-ZY.js} +1 -1
  82. package/dist-cli-web/assets/{fetch-CXM-cjDS.js → fetch-B7Tdp7Uo.js} +1 -1
  83. package/dist-cli-web/assets/{fetch-DBpDMy29.js → fetch-BBdyPNj3.js} +1 -1
  84. package/dist-cli-web/assets/{fetch-B_YFABxI.js → fetch-Bafz8jLM.js} +1 -1
  85. package/dist-cli-web/assets/{fetch-CxVcHNid.js → fetch-C4W6tD-D.js} +1 -1
  86. package/dist-cli-web/assets/{fetch-BeX69kpS.js → fetch-DOsmgros.js} +1 -1
  87. package/dist-cli-web/assets/{fetch-CRocA-4C.js → fetch-DTPDtL38.js} +1 -1
  88. package/dist-cli-web/assets/{fetch-CXqeAbnY.js → fetch-DaeoNUip.js} +1 -1
  89. package/dist-cli-web/assets/{fetch-7lUvXbhU.js → fetch-DgHdAlO7.js} +1 -1
  90. package/dist-cli-web/assets/{fetch-DKBBS9Op.js → fetch-Di4QpfqL.js} +1 -1
  91. package/dist-cli-web/assets/{fetch-4nh1LaVF.js → fetch-Dw33HaVP.js} +11 -13
  92. package/dist-cli-web/assets/{fetch-BEaW1j5H.js → fetch-IP6i-mtr.js} +1 -1
  93. package/dist-cli-web/assets/{fetch-epFXmPIQ.js → fetch-sbr95ipd.js} +1 -1
  94. package/dist-cli-web/assets/{host-CtSqR_Zm.js → host-CMnAiJSx.js} +1 -1
  95. package/dist-cli-web/assets/{host-C4rU8pKA.js → host-CuuNLUWx.js} +1 -1
  96. package/dist-cli-web/assets/{index-ekvsNmfe.js → index-BBYtZa7g.js} +1 -1
  97. package/dist-cli-web/assets/{index-mXe1LssU.js → index-BOXh7X5Y.js} +1 -1
  98. package/dist-cli-web/assets/index-BepItDCQ.js +64 -0
  99. package/dist-cli-web/assets/{index-4DVZ2g0M.js → index-BmGA3geF.js} +1 -1
  100. package/dist-cli-web/assets/{index-BvMAw3Zd.js → index-C-u3l4Uh.js} +1 -1
  101. package/dist-cli-web/assets/{index-D8cHMqV-.js → index-CN9WMxb3.js} +2 -2
  102. package/dist-cli-web/assets/{index-BFH1j_R9.js → index-Chh0gCp7.js} +1 -1
  103. package/dist-cli-web/assets/index-DRFMz0cs.css +1 -0
  104. package/dist-cli-web/assets/{index-BgelKQTW.css → index-DbP9vQhR.css} +1 -1
  105. package/dist-cli-web/assets/index-DgCXdbsG.js +2 -0
  106. package/dist-cli-web/assets/{index-CuCQ1d9f.js → index-DhRaZS6z.js} +1 -1
  107. package/dist-cli-web/assets/{index-_m1mf1jm.js → index-Dz4yfeg6.js} +1 -1
  108. package/dist-cli-web/assets/{index-mbLXPIyC.js → index-EtteazuD.js} +1 -1
  109. package/dist-cli-web/assets/index-GNMlsoVH.js +137 -0
  110. package/dist-cli-web/assets/{index-B1oj9KDv.js → index-bQ9oj54q.js} +4 -4
  111. package/dist-cli-web/assets/{index-DlHuILT_.js → index-fsLAooCi.js} +1 -1
  112. package/dist-cli-web/assets/{people-page-header-BbYSSpsO.js → people-page-header-CKXRSnpl.js} +1 -1
  113. package/dist-cli-web/assets/{prompt-C-ofJ7t_.js → prompt-DNxAd1Bj.js} +1 -1
  114. package/dist-cli-web/assets/{semantic-index-config-builder-D3TYVYC-.js → semantic-index-config-builder-CQ27G4TK.js} +1 -1
  115. package/dist-cli-web/assets/{service-CppETV4a.js → service-BwbGKwDn.js} +1 -1
  116. package/dist-cli-web/assets/service-DQjyjQZx.js +1 -0
  117. package/dist-cli-web/assets/service-Dtve_40X.js +1 -0
  118. package/dist-cli-web/assets/useFormControl-CNmp_2bd.js +1 -0
  119. package/dist-cli-web/assets/{ActionToolsPanel.vue_vue_type_script_setup_true_lang-IB1yZxCE.js → useInsightTabAnalytics-DaU_ADbQ.js} +8 -8
  120. package/dist-cli-web/assets/{useTable-Clk7ecq-.js → useTable-BYXxnZMd.js} +1 -1
  121. package/dist-cli-web/assets/{useToast-B5LaA6c-.js → useToast-DPkgv34s.js} +1 -1
  122. package/dist-cli-web/assets/{webworkerAll-CyA4b4LT.js → webworkerAll-Um4PrCaA.js} +1 -1
  123. package/dist-cli-web/index.html +1 -1
  124. package/package.json +1 -1
  125. package/dist/chat-command-YAFRLHMQ.mjs.map +0 -1
  126. package/dist/chunk-73TJ2S7W.mjs.map +0 -1
  127. package/dist/chunk-ARIBCH47.mjs.map +0 -1
  128. package/dist/chunk-JWJREWVN.mjs.map +0 -1
  129. package/dist/chunk-OTYNMDDL.mjs.map +0 -1
  130. package/dist/chunk-UP6JIV3S.mjs.map +0 -1
  131. package/dist/mcp-SMF3NWIN.mjs.map +0 -1
  132. package/dist-cli-web/assets/SectionTabs.vue_vue_type_script_setup_true_lang-qFhJO5B0.js +0 -1
  133. package/dist-cli-web/assets/aiChat--CR4g2M7.js +0 -8
  134. package/dist-cli-web/assets/index-CIIyg_o9.css +0 -1
  135. package/dist-cli-web/assets/index-CaYtkONV.js +0 -64
  136. package/dist-cli-web/assets/index-D3Hyjv4e.js +0 -137
  137. package/dist-cli-web/assets/index-R4LqAnx9.js +0 -2
  138. package/dist-cli-web/assets/service-BYOUkk7V.js +0 -1
  139. package/dist-cli-web/assets/service-tEx-5LUL.js +0 -1
  140. package/dist-cli-web/assets/useFormControl-CrWi_6Hn.js +0 -1
  141. /package/dist/{chunk-FPVRSXQ4.mjs.map → chunk-4FAEB4C2.mjs.map} +0 -0
  142. /package/dist/{chunk-MMTEGUQA.mjs.map → chunk-5OA4QI3Q.mjs.map} +0 -0
  143. /package/dist/{chunk-PDQV4RUA.mjs.map → chunk-GDKQKHJT.mjs.map} +0 -0
  144. /package/dist/{chunk-GKCIRKOH.mjs.map → chunk-HJWBFHNR.mjs.map} +0 -0
  145. /package/dist/{chunk-2PY4XCH3.mjs.map → chunk-IMJVOODY.mjs.map} +0 -0
  146. /package/dist/{chunk-WDLO7OLX.mjs.map → chunk-O57SQSCO.mjs.map} +0 -0
  147. /package/dist/{chunk-N4SB6QZV.mjs.map → chunk-ZGXXAPLX.mjs.map} +0 -0
  148. /package/dist/{http-LPFPVTBC.mjs.map → http-QJDZKDNJ.mjs.map} +0 -0
  149. /package/dist/{import-T4WX2ZJL.mjs.map → import-XK6YM26A.mjs.map} +0 -0
  150. /package/dist/{src-EGLLMTAU.mjs.map → src-4AHJUFCW.mjs.map} +0 -0
  151. /package/dist/{stream-import-2BXJTTCE.mjs.map → stream-import-7VQVT5ST.mjs.map} +0 -0
  152. /package/dist/{worker-runtime-RDLSPXFT.mjs.map → worker-runtime-PQBAV75N.mjs.map} +0 -0
  153. /package/dist-cli-web/assets/{ActionToolsPanel-DDNXXH8v.css → useInsightTabAnalytics-DDNXXH8v.css} +0 -0
@@ -1 +1 @@
1
- import{d as ve,ai as ke,aj as _e,ak as fe,b as $,K as be,al as we,a5 as Se,c as u,a as e,g as r,z as g,p as s,l as v,a9 as P,w as S,f as H,F as k,e as p,a8 as Te,am as ze,o as d,j as T,a7 as De,n as z,O as q,an as h}from"./index-B1oj9KDv.js";import{_ as Ce}from"./LoadingState.vue_vue_type_script_setup_true_lang-BBcCt_Qm.js";import{_ as j}from"./ThemeCard.vue_vue_type_script_setup_true_lang-D2outEOV.js";import{C as Ie}from"./CardDecoration-RuBA3N2j.js";import{_ as Ee}from"./EChartLine.vue_vue_type_script_setup_true_lang-Fl7xAOSR.js";import"./vendor-echarts-wordcloud-DNiU8Psq.js";import{T as Me}from"./service-BYOUkk7V.js";import"./vendor-snapdom--nZvo8Sg.js";import"./EChart.vue_vue_type_script_setup_true_lang-DubnuUXI.js";import"./vendor-echarts-C9ugTmum.js";import"./vendor-zrender-D8psf1AA.js";const Ae={class:"min-h-0 flex-1 overflow-y-auto"},Pe={class:"mx-auto w-full max-w-[920px] space-y-6 px-4 py-5 sm:px-6 sm:py-6"},Le={class:"min-w-0"},Oe={key:1,class:"flex items-center gap-2 rounded-xl border border-amber-100 bg-amber-50/50 px-4 py-2.5 text-xs text-amber-800 dark:border-amber-950/40 dark:bg-amber-950/20 dark:text-amber-300"},Ne={key:2,class:"flex flex-wrap items-center justify-between gap-3 rounded-xl border border-red-200 bg-red-50/50 px-4 py-2.5 text-xs text-red-800 dark:border-red-950/40 dark:bg-red-950/20 dark:text-red-300"},Re={key:0,class:"flex flex-wrap items-center justify-between gap-3 rounded-xl border border-gray-200 bg-white p-4 text-xs text-gray-600 dark:border-zinc-800 dark:bg-zinc-900/50 dark:text-zinc-300"},Ye={key:0},Ve={key:1},$e={key:2},je={class:"space-y-4"},Ue={class:"relative z-10 min-w-0 px-5 pt-6 pb-5 sm:px-8 sm:pt-8 sm:pb-6"},Be={class:"text-2xl font-bold tracking-tight text-gray-900 dark:text-white sm:text-3xl"},Fe={class:"mt-6 max-w-3xl space-y-3 text-gray-600 dark:text-zinc-300"},We={class:"flex flex-wrap items-baseline gap-x-2 gap-y-1 text-lg leading-relaxed sm:text-xl"},Ge={class:"font-black text-2xl tracking-tight tabular-nums text-pink-600 sm:text-3xl dark:text-pink-400"},He={class:"flex flex-wrap items-baseline gap-x-2 gap-y-1 text-base leading-relaxed sm:text-lg"},qe={class:"font-black text-2xl tabular-nums text-indigo-600 dark:text-indigo-400"},Ke={class:"font-black text-2xl tabular-nums text-blue-600 dark:text-blue-400"},Je={class:"mt-7"},Ze={class:"mb-2 text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-zinc-500"},Qe={class:"grid grid-cols-2 gap-2 lg:grid-cols-4"},Xe={class:"min-w-0"},et={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-zinc-400"},tt={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-zinc-500"},st={class:"mt-6"},at={class:"text-xs font-bold tracking-wide text-gray-700 dark:text-zinc-300"},nt={class:"mt-1 text-[10px] text-gray-400 dark:text-zinc-500"},ot={class:"mt-2"},rt={class:"mt-2 text-[10px] leading-5 text-gray-400 dark:text-zinc-500"},it={class:"mt-4 flex flex-wrap items-center justify-between gap-x-6 gap-y-1 border-t border-gray-200/60 pt-4 font-mono text-[10px] text-gray-400 dark:border-white/5 dark:text-zinc-500"},lt={class:"min-w-0 p-5 sm:p-6"},ct={class:"flex items-center gap-2 text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-zinc-300"},dt={class:"mt-1 text-[11px] text-gray-400 dark:text-zinc-500"},ut={class:"mt-5 grid gap-6 lg:grid-cols-7 lg:gap-0"},pt={class:"min-w-0 lg:col-span-4 lg:pr-8"},mt={key:0,class:"space-y-3.5"},xt={class:"text-xs font-medium text-gray-500 dark:text-zinc-400"},gt={class:"h-1.5 overflow-hidden rounded-full bg-gray-100 dark:bg-zinc-800"},ht={class:"min-w-[4.75rem] whitespace-nowrap text-right font-mono text-[10px] font-semibold tabular-nums text-gray-600 dark:text-zinc-300"},yt={key:1,class:"text-xs text-gray-400"},vt={class:"min-w-0 border-t border-gray-200/60 pt-5 lg:col-span-3 lg:border-t-0 lg:border-l lg:pt-0 lg:pl-8 dark:border-white/5"},kt={class:"text-xs font-semibold text-gray-700 dark:text-zinc-300"},_t={key:0,class:"mt-3 divide-y divide-gray-200/60 dark:divide-white/5"},ft={class:"flex h-5 w-5 items-center justify-center rounded-full bg-pink-50 font-mono text-[9px] font-bold text-pink-600 dark:bg-pink-950/30 dark:text-pink-400"},bt={class:"flex min-w-0 items-baseline gap-2"},wt={class:"font-mono text-xs font-semibold tabular-nums text-gray-700 dark:text-zinc-200"},St={class:"truncate text-[10px] text-gray-400 dark:text-zinc-500"},Tt={class:"whitespace-nowrap font-mono text-[10px] font-semibold tabular-nums text-gray-600 dark:text-zinc-300"},zt={key:1,class:"mt-3 text-xs text-gray-400"},Dt={class:"min-w-0 p-5 sm:p-6"},Ct={class:"flex flex-wrap items-end justify-between gap-x-6 gap-y-2"},It={class:"text-base font-semibold text-gray-800 dark:text-zinc-200"},Et={class:"mt-1 text-[11px] text-gray-400 dark:text-zinc-500"},Mt={key:0,class:"mt-5 grid gap-8 lg:grid-cols-2 lg:gap-0 lg:divide-x lg:divide-gray-200/60 dark:lg:divide-white/5"},At={class:"flex items-center justify-between gap-4 border-b border-gray-200/60 pb-3 dark:border-white/5"},Pt={class:"flex min-w-0 items-center gap-2"},Lt={class:"truncate text-sm font-semibold text-gray-700 dark:text-zinc-200"},Ot={class:"shrink-0 text-[10px] text-gray-400 dark:text-zinc-500"},Nt={key:0,class:"divide-y divide-gray-200/60 dark:divide-white/5"},Rt={class:"grid grid-cols-[28px_minmax(0,1fr)_auto] items-center gap-3"},Yt={class:"min-w-0"},Vt={class:"block truncate text-sm font-semibold text-gray-700 dark:text-zinc-200"},$t={class:"mt-1 block truncate text-[10px] text-gray-400 dark:text-zinc-500"},jt={class:"shrink-0 text-right"},Ut={class:"whitespace-nowrap font-mono text-xs font-black tabular-nums text-gray-900 dark:text-white"},Bt={class:"mt-1 font-mono text-[10px] tabular-nums text-gray-400 dark:text-zinc-500"},Ft={class:"mt-2 ml-10 h-1 overflow-hidden rounded-full bg-gray-100 dark:bg-zinc-800"},Wt={key:1,class:"pt-4 text-xs text-gray-400"},Gt={key:1,class:"mt-5 text-xs text-gray-400"},os=ve({__name:"index",setup(Ht){const U=ke(),n=_e(ze),{formatDate:_,formatNumber:K}=fe(),f=U.insightScope,b=U.services.get(Me),J=new Date().getFullYear(),D=$(f.getSnapshot()),l=$(null),C=$("");let I=null,E=0;const L=p(()=>{const t=D.value.time;return t?t.mode==="recent"?{mode:"recent",days:365,acceptStale:!0}:{mode:"year",year:t.year??J,acceptStale:!0}:null}),Z=p(()=>JSON.stringify(L.value)),O=p(()=>(l.value?.coverage.missingOwnerSessions??0)+(l.value?.coverage.unresolvedOwnerSessions??0)),N=p(()=>l.value?.metrics!==null&&l.value?.metrics!==void 0),Q=p(()=>l.value?.task.status==="running"),X=p(()=>N.value&&l.value?.metrics?.estimatedSeconds===0),ee=p(()=>(l.value?.coverage.totalSessions??0)>0&&l.value?.coverage.analyzedSessions===0&&O.value>0),te=p(()=>D.value.time?.mode==="year"?D.value.time.year:void 0),M=p(()=>{const t=te.value,a=l.value?.latestDataYear;return t===void 0||a===null||a===void 0||t===a?null:{year:t,latestYear:a}}),se=p(()=>l.value?.range.mode==="year"?n("yearTitle",{year:l.value.range.year}):n("recentTitle")),ae=p(()=>{const t=l.value?.range;if(!t)return"";const a={day:"2-digit",month:"2-digit",year:"numeric"},i=_(t.startTs*1e3,a),c=_(t.endTs*1e3,a);return i===c?i:`${i} – ${c}`}),ne=p(()=>{const t=l.value?.range,a=l.value?.monthlyActivity??[];return{labels:a.map(i=>t?.mode==="year"?n("monthLabel",{month:Number(i.key.slice(5))}):i.key.replace("-","/")),values:a.map(i=>me(i.estimatedSeconds))}}),R=p(()=>{const t=l.value?.range;if(!t)return[];const a=Array(7).fill(0),i=Array(7).fill(0),c=new Map((l.value?.dailyActivity??[]).map(x=>[x.key,x.estimatedSeconds])),o=W(new Date(t.startTs*1e3)),m=W(new Date(t.endTs*1e3));for(;o<=m;){const x=(o.getDay()+6)%7;a[x]+=c.get(xe(o))??0,i[x]++,o.setDate(o.getDate()+1)}const G=a.map((x,w)=>i[w]?Math.round(x/i[w]):0),ye=Math.max(...G,1);return G.map((x,w)=>({key:w,label:_(new Date(2024,0,1+w),{weekday:"short"}),seconds:x,width:x>0?Math.max(x/ye*100,3):0}))}),oe=p(()=>R.value.some(t=>t.seconds>0)),Y=p(()=>[...l.value?.dailyActivity??[]].filter(t=>t.estimatedSeconds>0).sort((t,a)=>a.estimatedSeconds-t.estimatedSeconds||t.key.localeCompare(a.key)).slice(0,3).map(t=>{const a=ge(t.key);return{...t,dateLabel:_(a,{month:"2-digit",day:"2-digit"}),weekdayLabel:_(a,{weekday:"short"})}})),B=p(()=>[h.GROUP,h.PRIVATE].map(t=>l.value?.chatTypes.find(a=>a.type===t)).filter(t=>t!==void 0)),re=p(()=>{const t=B.value.find(o=>o.type===h.PRIVATE),a=B.value.find(o=>o.type===h.GROUP),i=Y.value[0],c=[...R.value].sort((o,m)=>m.seconds-o.seconds)[0];return[{key:"private",icon:"i-heroicons-user",colorClass:"text-pink-600 dark:text-pink-400",label:n("privateChat"),value:t?y(t.seconds):"—",subtext:n("shareOfTotal",{share:t?.share??0})},{key:"group",icon:"i-heroicons-user-group",colorClass:"text-blue-600 dark:text-blue-400",label:n("groupChat"),value:a?y(a.seconds):"—",subtext:n("shareOfTotal",{share:a?.share??0})},{key:"peakDay",icon:"i-heroicons-fire",colorClass:"text-red-600 dark:text-red-400",label:n("peakDay"),value:i?.dateLabel??"—",subtext:i?y(i.estimatedSeconds):"—"},{key:"peakWeekday",icon:"i-heroicons-calendar-days",colorClass:"text-amber-600 dark:text-amber-400",label:n("peakWeekday"),value:c?.seconds?c.label:"—",subtext:c?.seconds?y(c.seconds):"—"}]}),F=p(()=>[h.PRIVATE,h.GROUP].map(t=>{const a=(l.value?.sessionRanking??[]).filter(i=>i.type===t).slice(0,10).map((i,c)=>({...i,rank:c+1}));return{type:t,items:a,maxSeconds:Math.max(...a.map(i=>i.seconds),1)}})),ie=p(()=>F.value.some(t=>t.items.length>0)),le=f.subscribe(()=>{D.value=f.getSnapshot()}),ce=b.subscribeOwnerSettingsClosed(()=>{A(!1)});be(Z,()=>{V(),L.value&&(l.value=null,A(!1))},{immediate:!0}),we(()=>{E++,V(),le(),ce()});async function A(t){const a=L.value;if(!a)return;const i=++E;C.value="";try{const c=t?await b.recompute(a):await b.get(a);if(i!==E)return;l.value=c,c.metrics&&f.setAvailableTimeYears(c.availableDataYears),c.task.status==="running"&&de()}catch(c){if(i!==E)return;const o=c instanceof Error?c.message:String(c);C.value=o,Se(`Global insight time investment failed: ${o}`,c instanceof Error?c.stack:void 0)}}function de(){V(),I=setTimeout(()=>{A(!1)},900)}function V(){I&&(clearTimeout(I),I=null)}function ue(){const t=l.value?.latestDataYear;t&&f.switchTimeToYear(t)}function pe(){b.openOwnerSettings()}function y(t){const a=Math.round(t/60);if(t>0&&a<1)return n("duration.lessThanMinute");if(a<60)return n("duration.minutes",{count:a});const i=Math.floor(a/60),c=a%60;return c?n("duration.hoursMinutes",{hours:i,minutes:c}):n("duration.hours",{count:i})}function me(t){return Math.round(t/3600*10)/10}function W(t){return new Date(t.getFullYear(),t.getMonth(),t.getDate())}function xe(t){return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`}function ge(t){const[a,i,c]=t.split("-").map(Number);return new Date(a,i-1,c)}function he(t){return n(t===h.PRIVATE?"privateChat":"groupChat")}return(t,a)=>{const i=De,c=Te;return d(),u("main",Ae,[e("div",Pe,[O.value>0&&r(b).canConfigureOwner?(d(),u("button",{key:0,type:"button",class:"inline-flex w-fit max-w-full items-center gap-2 rounded-lg bg-amber-50 px-3 py-2 text-left text-xs text-amber-800 transition-colors hover:bg-amber-100 dark:bg-amber-950/20 dark:text-amber-300 dark:hover:bg-amber-950/30",onClick:pe},[g(i,{name:"i-heroicons-user-circle",class:"h-4 w-4 shrink-0"}),e("span",Le,s(r(n)("status.ownerIssues",{count:O.value})),1),g(i,{name:"i-heroicons-arrow-right",class:"h-3.5 w-3.5 shrink-0 opacity-70"})])):v("",!0),l.value?.cache.status==="stale"||Q.value&&N.value?(d(),u("div",Oe,[g(i,{name:"i-heroicons-arrow-path",class:"h-4 w-4 shrink-0 animate-spin"}),P(" "+s(r(n)("status.updating")),1)])):v("",!0),C.value||l.value?.task.status==="failed"?(d(),u("div",Ne,[e("span",null,s(r(n)("failed")),1),g(c,{size:"xs",color:"error",variant:"soft",icon:"i-heroicons-arrow-path",onClick:a[0]||(a[0]=o=>A(!0))},{default:S(()=>[P(s(r(n)("actions.retry")),1)]),_:1})])):v("",!0),!N.value&&!C.value&&l.value?.task.status!=="failed"?(d(),H(Ce,{key:3,height:"min(52vh, 420px)",text:l.value?.task.status==="running"?r(n)("status.computingProgress",{processed:l.value.task.processedSessions,total:l.value.task.totalSessions}):r(n)("loading")},null,8,["text"])):l.value?.metrics?(d(),u(k,{key:4},[X.value?(d(),u("div",Re,[ee.value?(d(),u("span",Ye,s(r(n)("status.noAnalyzableOwner")),1)):M.value?(d(),u("span",Ve,s(r(n)("status.noDataWithLatest",M.value)),1)):(d(),u("span",$e,s(r(n)("noData")),1)),M.value?(d(),H(c,{key:3,size:"xs",variant:"soft",color:"neutral",icon:"i-heroicons-arrow-right",onClick:ue},{default:S(()=>[P(s(r(n)("actions.switchYear",{year:M.value.latestYear})),1)]),_:1})):v("",!0)])):v("",!0),e("div",je,[g(r(j),{class:"relative isolate overflow-hidden"},{default:S(()=>[g(r(Ie)),e("section",Ue,[e("h2",Be,s(se.value),1),e("div",Fe,[e("p",We,[e("span",null,s(r(n)("narrative.totalPrefix")),1),e("span",Ge,s(y(l.value.metrics.estimatedSeconds)),1),e("span",null,s(r(n)("narrative.totalSuffix")),1)]),e("p",He,[e("span",null,s(r(n)("narrative.daysPrefix")),1),e("span",qe,s(r(K)(l.value.metrics.activeDayCount)),1),e("span",null,s(r(n)("narrative.daysMiddle")),1),e("span",Ke,s(y(l.value.metrics.averagePerActiveDaySeconds)),1),e("span",null,s(r(n)("narrative.daysSuffix")),1)])]),e("div",Je,[e("div",Ze,s(r(n)("keyMetrics")),1),e("div",Qe,[(d(!0),u(k,null,T(re.value,o=>(d(),u("div",{key:o.key,class:"flex min-w-0 items-start gap-2 px-2.5 py-2"},[g(i,{name:o.icon,class:z(["mt-0.5 h-3.5 w-3.5 shrink-0",o.colorClass])},null,8,["name","class"]),e("div",Xe,[e("div",{class:z(["truncate font-mono text-sm leading-tight font-black tabular-nums",o.colorClass])},s(o.value),3),e("div",et,s(o.label),1),e("div",tt,s(o.subtext),1)])]))),128))])]),e("div",st,[e("div",null,[e("h3",at,s(r(n)("monthlyTitle")),1),e("p",nt,s(r(n)("monthlyDescription")),1)]),e("div",ot,[g(r(Ee),{data:ne.value,height:240,mode:"compact",smooth:!1,"show-area":!1},null,8,["data"])]),e("p",rt,s(r(n)("estimateNote")),1)]),e("div",it,[e("span",null,s(ae.value),1),e("span",null,s(r(n)("status.coverage",{analyzed:l.value.coverage.analyzedSessions,total:l.value.coverage.totalSessions})),1)])])]),_:1}),g(r(j),null,{default:S(()=>[e("section",lt,[e("h3",ct,[a[1]||(a[1]=e("span",{class:"inline-block h-2 w-2 rounded-full bg-pink-500 dark:bg-pink-400"},null,-1)),P(" "+s(r(n)("rhythmTitle")),1)]),e("p",dt,s(r(n)("rhythmDescription")),1),e("div",ut,[e("div",pt,[oe.value?(d(),u("div",mt,[(d(!0),u(k,null,T(R.value,o=>(d(),u("div",{key:o.key,class:"grid grid-cols-[2.25rem_minmax(0,1fr)_auto] items-center gap-3"},[e("span",xt,s(o.label),1),e("div",gt,[e("div",{class:"h-full rounded-full bg-pink-500 transition-[width] duration-500 dark:bg-pink-400",style:q({width:`${o.width}%`})},null,4)]),e("span",ht,s(y(o.seconds)),1)]))),128))])):(d(),u("p",yt,s(r(n)("noData")),1))]),e("div",vt,[e("h4",kt,s(r(n)("topDaysTitle")),1),Y.value.length?(d(),u("div",_t,[(d(!0),u(k,null,T(Y.value,(o,m)=>(d(),u("div",{key:o.key,class:"grid grid-cols-[1.5rem_minmax(0,1fr)_auto] items-center gap-3 py-2.5 first:pt-0 last:pb-0"},[e("span",ft,s(m+1),1),e("div",bt,[e("span",wt,s(o.dateLabel),1),e("span",St,s(o.weekdayLabel),1)]),e("span",Tt,s(y(o.estimatedSeconds)),1)]))),128))])):(d(),u("p",zt,s(r(n)("noData")),1))])])])]),_:1}),g(r(j),null,{default:S(()=>[e("section",Dt,[e("div",Ct,[e("div",null,[e("h3",It,s(r(n)("rankingTitle")),1),e("p",Et,s(r(n)("rankingDescription")),1)])]),ie.value?(d(),u("div",Mt,[(d(!0),u(k,null,T(F.value,o=>(d(),u("div",{key:o.type,class:"min-w-0 lg:px-10 lg:first:pl-0 lg:last:pr-0"},[e("div",At,[e("div",Pt,[e("span",{class:z(["h-2.5 w-2.5 shrink-0 rounded-full",o.type===r(h).PRIVATE?"bg-pink-500 dark:bg-pink-400":"bg-blue-500 dark:bg-blue-400"])},null,2),e("h4",Lt,s(he(o.type)),1)]),e("span",Ot,s(r(n)("rankingCount",{count:o.items.length})),1)]),o.items.length?(d(),u("div",Nt,[(d(!0),u(k,null,T(o.items,m=>(d(),u("div",{key:m.sessionId,class:"min-w-0 py-3 last:pb-0"},[e("div",Rt,[e("span",{class:z(["flex h-6 w-6 items-center justify-center rounded-full font-mono text-[10px] font-bold",m.rank<=3?o.type===r(h).PRIVATE?"bg-pink-50 text-pink-600 dark:bg-pink-950/30 dark:text-pink-400":"bg-blue-50 text-blue-600 dark:bg-blue-950/30 dark:text-blue-400":"bg-gray-100 text-gray-500 dark:bg-zinc-800 dark:text-zinc-400"])},s(m.rank),3),e("div",Yt,[e("span",Vt,s(m.name),1),e("span",$t,s(m.platform),1)]),e("div",jt,[e("div",Ut,s(y(m.seconds)),1),e("div",Bt,s(m.share)+"% ",1)])]),e("div",Ft,[e("div",{class:z(["h-full rounded-full",o.type===r(h).PRIVATE?"bg-pink-500 dark:bg-pink-400":"bg-blue-500 dark:bg-blue-400"]),style:q({width:`${m.seconds/o.maxSeconds*100}%`})},null,6)])]))),128))])):(d(),u("p",Wt,s(r(n)("noData")),1))]))),128))])):(d(),u("p",Gt,s(r(n)("noData")),1))])]),_:1})])],64)):v("",!0)])])}}});export{os as default};
1
+ import{d as ve,ai as ke,aj as _e,ak as fe,b as $,K as be,al as we,a5 as Se,c as u,a as e,g as r,z as g,p as s,l as v,a9 as P,w as S,f as H,F as k,e as p,a8 as Te,am as ze,o as d,j as T,a7 as De,n as z,O as q,an as h}from"./index-bQ9oj54q.js";import{_ as Ce}from"./LoadingState.vue_vue_type_script_setup_true_lang-uF54r-dT.js";import{_ as j}from"./ThemeCard.vue_vue_type_script_setup_true_lang-BLmTpx4f.js";import{C as Ie}from"./CardDecoration-Cz54ZPyh.js";import{_ as Ee}from"./EChartLine.vue_vue_type_script_setup_true_lang-BLqlW9E4.js";import"./vendor-echarts-wordcloud-DNiU8Psq.js";import{T as Me}from"./service-Dtve_40X.js";import"./vendor-snapdom--nZvo8Sg.js";import"./EChart.vue_vue_type_script_setup_true_lang-CRTZh9kh.js";import"./vendor-echarts-C9ugTmum.js";import"./vendor-zrender-D8psf1AA.js";const Ae={class:"min-h-0 flex-1 overflow-y-auto"},Pe={class:"mx-auto w-full max-w-[920px] space-y-6 px-4 py-5 sm:px-6 sm:py-6"},Le={class:"min-w-0"},Oe={key:1,class:"flex items-center gap-2 rounded-xl border border-amber-100 bg-amber-50/50 px-4 py-2.5 text-xs text-amber-800 dark:border-amber-950/40 dark:bg-amber-950/20 dark:text-amber-300"},Ne={key:2,class:"flex flex-wrap items-center justify-between gap-3 rounded-xl border border-red-200 bg-red-50/50 px-4 py-2.5 text-xs text-red-800 dark:border-red-950/40 dark:bg-red-950/20 dark:text-red-300"},Re={key:0,class:"flex flex-wrap items-center justify-between gap-3 rounded-xl border border-gray-200 bg-white p-4 text-xs text-gray-600 dark:border-zinc-800 dark:bg-zinc-900/50 dark:text-zinc-300"},Ye={key:0},Ve={key:1},$e={key:2},je={class:"space-y-4"},Ue={class:"relative z-10 min-w-0 px-5 pt-6 pb-5 sm:px-8 sm:pt-8 sm:pb-6"},Be={class:"text-2xl font-bold tracking-tight text-gray-900 dark:text-white sm:text-3xl"},Fe={class:"mt-6 max-w-3xl space-y-3 text-gray-600 dark:text-zinc-300"},We={class:"flex flex-wrap items-baseline gap-x-2 gap-y-1 text-lg leading-relaxed sm:text-xl"},Ge={class:"font-black text-2xl tracking-tight tabular-nums text-pink-600 sm:text-3xl dark:text-pink-400"},He={class:"flex flex-wrap items-baseline gap-x-2 gap-y-1 text-base leading-relaxed sm:text-lg"},qe={class:"font-black text-2xl tabular-nums text-indigo-600 dark:text-indigo-400"},Ke={class:"font-black text-2xl tabular-nums text-blue-600 dark:text-blue-400"},Je={class:"mt-7"},Ze={class:"mb-2 text-[10px] font-bold uppercase tracking-widest text-gray-400 dark:text-zinc-500"},Qe={class:"grid grid-cols-2 gap-2 lg:grid-cols-4"},Xe={class:"min-w-0"},et={class:"mt-0.5 truncate text-[10px] font-medium text-gray-500 dark:text-zinc-400"},tt={class:"mt-0.5 truncate text-[9px] text-gray-400 dark:text-zinc-500"},st={class:"mt-6"},at={class:"text-xs font-bold tracking-wide text-gray-700 dark:text-zinc-300"},nt={class:"mt-1 text-[10px] text-gray-400 dark:text-zinc-500"},ot={class:"mt-2"},rt={class:"mt-2 text-[10px] leading-5 text-gray-400 dark:text-zinc-500"},it={class:"mt-4 flex flex-wrap items-center justify-between gap-x-6 gap-y-1 border-t border-gray-200/60 pt-4 font-mono text-[10px] text-gray-400 dark:border-white/5 dark:text-zinc-500"},lt={class:"min-w-0 p-5 sm:p-6"},ct={class:"flex items-center gap-2 text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-zinc-300"},dt={class:"mt-1 text-[11px] text-gray-400 dark:text-zinc-500"},ut={class:"mt-5 grid gap-6 lg:grid-cols-7 lg:gap-0"},pt={class:"min-w-0 lg:col-span-4 lg:pr-8"},mt={key:0,class:"space-y-3.5"},xt={class:"text-xs font-medium text-gray-500 dark:text-zinc-400"},gt={class:"h-1.5 overflow-hidden rounded-full bg-gray-100 dark:bg-zinc-800"},ht={class:"min-w-[4.75rem] whitespace-nowrap text-right font-mono text-[10px] font-semibold tabular-nums text-gray-600 dark:text-zinc-300"},yt={key:1,class:"text-xs text-gray-400"},vt={class:"min-w-0 border-t border-gray-200/60 pt-5 lg:col-span-3 lg:border-t-0 lg:border-l lg:pt-0 lg:pl-8 dark:border-white/5"},kt={class:"text-xs font-semibold text-gray-700 dark:text-zinc-300"},_t={key:0,class:"mt-3 divide-y divide-gray-200/60 dark:divide-white/5"},ft={class:"flex h-5 w-5 items-center justify-center rounded-full bg-pink-50 font-mono text-[9px] font-bold text-pink-600 dark:bg-pink-950/30 dark:text-pink-400"},bt={class:"flex min-w-0 items-baseline gap-2"},wt={class:"font-mono text-xs font-semibold tabular-nums text-gray-700 dark:text-zinc-200"},St={class:"truncate text-[10px] text-gray-400 dark:text-zinc-500"},Tt={class:"whitespace-nowrap font-mono text-[10px] font-semibold tabular-nums text-gray-600 dark:text-zinc-300"},zt={key:1,class:"mt-3 text-xs text-gray-400"},Dt={class:"min-w-0 p-5 sm:p-6"},Ct={class:"flex flex-wrap items-end justify-between gap-x-6 gap-y-2"},It={class:"text-base font-semibold text-gray-800 dark:text-zinc-200"},Et={class:"mt-1 text-[11px] text-gray-400 dark:text-zinc-500"},Mt={key:0,class:"mt-5 grid gap-8 lg:grid-cols-2 lg:gap-0 lg:divide-x lg:divide-gray-200/60 dark:lg:divide-white/5"},At={class:"flex items-center justify-between gap-4 border-b border-gray-200/60 pb-3 dark:border-white/5"},Pt={class:"flex min-w-0 items-center gap-2"},Lt={class:"truncate text-sm font-semibold text-gray-700 dark:text-zinc-200"},Ot={class:"shrink-0 text-[10px] text-gray-400 dark:text-zinc-500"},Nt={key:0,class:"divide-y divide-gray-200/60 dark:divide-white/5"},Rt={class:"grid grid-cols-[28px_minmax(0,1fr)_auto] items-center gap-3"},Yt={class:"min-w-0"},Vt={class:"block truncate text-sm font-semibold text-gray-700 dark:text-zinc-200"},$t={class:"mt-1 block truncate text-[10px] text-gray-400 dark:text-zinc-500"},jt={class:"shrink-0 text-right"},Ut={class:"whitespace-nowrap font-mono text-xs font-black tabular-nums text-gray-900 dark:text-white"},Bt={class:"mt-1 font-mono text-[10px] tabular-nums text-gray-400 dark:text-zinc-500"},Ft={class:"mt-2 ml-10 h-1 overflow-hidden rounded-full bg-gray-100 dark:bg-zinc-800"},Wt={key:1,class:"pt-4 text-xs text-gray-400"},Gt={key:1,class:"mt-5 text-xs text-gray-400"},os=ve({__name:"index",setup(Ht){const U=ke(),n=_e(ze),{formatDate:_,formatNumber:K}=fe(),f=U.insightScope,b=U.services.get(Me),J=new Date().getFullYear(),D=$(f.getSnapshot()),l=$(null),C=$("");let I=null,E=0;const L=p(()=>{const t=D.value.time;return t?t.mode==="recent"?{mode:"recent",days:365,acceptStale:!0}:{mode:"year",year:t.year??J,acceptStale:!0}:null}),Z=p(()=>JSON.stringify(L.value)),O=p(()=>(l.value?.coverage.missingOwnerSessions??0)+(l.value?.coverage.unresolvedOwnerSessions??0)),N=p(()=>l.value?.metrics!==null&&l.value?.metrics!==void 0),Q=p(()=>l.value?.task.status==="running"),X=p(()=>N.value&&l.value?.metrics?.estimatedSeconds===0),ee=p(()=>(l.value?.coverage.totalSessions??0)>0&&l.value?.coverage.analyzedSessions===0&&O.value>0),te=p(()=>D.value.time?.mode==="year"?D.value.time.year:void 0),M=p(()=>{const t=te.value,a=l.value?.latestDataYear;return t===void 0||a===null||a===void 0||t===a?null:{year:t,latestYear:a}}),se=p(()=>l.value?.range.mode==="year"?n("yearTitle",{year:l.value.range.year}):n("recentTitle")),ae=p(()=>{const t=l.value?.range;if(!t)return"";const a={day:"2-digit",month:"2-digit",year:"numeric"},i=_(t.startTs*1e3,a),c=_(t.endTs*1e3,a);return i===c?i:`${i} – ${c}`}),ne=p(()=>{const t=l.value?.range,a=l.value?.monthlyActivity??[];return{labels:a.map(i=>t?.mode==="year"?n("monthLabel",{month:Number(i.key.slice(5))}):i.key.replace("-","/")),values:a.map(i=>me(i.estimatedSeconds))}}),R=p(()=>{const t=l.value?.range;if(!t)return[];const a=Array(7).fill(0),i=Array(7).fill(0),c=new Map((l.value?.dailyActivity??[]).map(x=>[x.key,x.estimatedSeconds])),o=W(new Date(t.startTs*1e3)),m=W(new Date(t.endTs*1e3));for(;o<=m;){const x=(o.getDay()+6)%7;a[x]+=c.get(xe(o))??0,i[x]++,o.setDate(o.getDate()+1)}const G=a.map((x,w)=>i[w]?Math.round(x/i[w]):0),ye=Math.max(...G,1);return G.map((x,w)=>({key:w,label:_(new Date(2024,0,1+w),{weekday:"short"}),seconds:x,width:x>0?Math.max(x/ye*100,3):0}))}),oe=p(()=>R.value.some(t=>t.seconds>0)),Y=p(()=>[...l.value?.dailyActivity??[]].filter(t=>t.estimatedSeconds>0).sort((t,a)=>a.estimatedSeconds-t.estimatedSeconds||t.key.localeCompare(a.key)).slice(0,3).map(t=>{const a=ge(t.key);return{...t,dateLabel:_(a,{month:"2-digit",day:"2-digit"}),weekdayLabel:_(a,{weekday:"short"})}})),B=p(()=>[h.GROUP,h.PRIVATE].map(t=>l.value?.chatTypes.find(a=>a.type===t)).filter(t=>t!==void 0)),re=p(()=>{const t=B.value.find(o=>o.type===h.PRIVATE),a=B.value.find(o=>o.type===h.GROUP),i=Y.value[0],c=[...R.value].sort((o,m)=>m.seconds-o.seconds)[0];return[{key:"private",icon:"i-heroicons-user",colorClass:"text-pink-600 dark:text-pink-400",label:n("privateChat"),value:t?y(t.seconds):"—",subtext:n("shareOfTotal",{share:t?.share??0})},{key:"group",icon:"i-heroicons-user-group",colorClass:"text-blue-600 dark:text-blue-400",label:n("groupChat"),value:a?y(a.seconds):"—",subtext:n("shareOfTotal",{share:a?.share??0})},{key:"peakDay",icon:"i-heroicons-fire",colorClass:"text-red-600 dark:text-red-400",label:n("peakDay"),value:i?.dateLabel??"—",subtext:i?y(i.estimatedSeconds):"—"},{key:"peakWeekday",icon:"i-heroicons-calendar-days",colorClass:"text-amber-600 dark:text-amber-400",label:n("peakWeekday"),value:c?.seconds?c.label:"—",subtext:c?.seconds?y(c.seconds):"—"}]}),F=p(()=>[h.PRIVATE,h.GROUP].map(t=>{const a=(l.value?.sessionRanking??[]).filter(i=>i.type===t).slice(0,10).map((i,c)=>({...i,rank:c+1}));return{type:t,items:a,maxSeconds:Math.max(...a.map(i=>i.seconds),1)}})),ie=p(()=>F.value.some(t=>t.items.length>0)),le=f.subscribe(()=>{D.value=f.getSnapshot()}),ce=b.subscribeOwnerSettingsClosed(()=>{A(!1)});be(Z,()=>{V(),L.value&&(l.value=null,A(!1))},{immediate:!0}),we(()=>{E++,V(),le(),ce()});async function A(t){const a=L.value;if(!a)return;const i=++E;C.value="";try{const c=t?await b.recompute(a):await b.get(a);if(i!==E)return;l.value=c,c.metrics&&f.setAvailableTimeYears(c.availableDataYears),c.task.status==="running"&&de()}catch(c){if(i!==E)return;const o=c instanceof Error?c.message:String(c);C.value=o,Se(`Global insight time investment failed: ${o}`,c instanceof Error?c.stack:void 0)}}function de(){V(),I=setTimeout(()=>{A(!1)},900)}function V(){I&&(clearTimeout(I),I=null)}function ue(){const t=l.value?.latestDataYear;t&&f.switchTimeToYear(t)}function pe(){b.openOwnerSettings()}function y(t){const a=Math.round(t/60);if(t>0&&a<1)return n("duration.lessThanMinute");if(a<60)return n("duration.minutes",{count:a});const i=Math.floor(a/60),c=a%60;return c?n("duration.hoursMinutes",{hours:i,minutes:c}):n("duration.hours",{count:i})}function me(t){return Math.round(t/3600*10)/10}function W(t){return new Date(t.getFullYear(),t.getMonth(),t.getDate())}function xe(t){return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`}function ge(t){const[a,i,c]=t.split("-").map(Number);return new Date(a,i-1,c)}function he(t){return n(t===h.PRIVATE?"privateChat":"groupChat")}return(t,a)=>{const i=De,c=Te;return d(),u("main",Ae,[e("div",Pe,[O.value>0&&r(b).canConfigureOwner?(d(),u("button",{key:0,type:"button",class:"inline-flex w-fit max-w-full items-center gap-2 rounded-lg bg-amber-50 px-3 py-2 text-left text-xs text-amber-800 transition-colors hover:bg-amber-100 dark:bg-amber-950/20 dark:text-amber-300 dark:hover:bg-amber-950/30",onClick:pe},[g(i,{name:"i-heroicons-user-circle",class:"h-4 w-4 shrink-0"}),e("span",Le,s(r(n)("status.ownerIssues",{count:O.value})),1),g(i,{name:"i-heroicons-arrow-right",class:"h-3.5 w-3.5 shrink-0 opacity-70"})])):v("",!0),l.value?.cache.status==="stale"||Q.value&&N.value?(d(),u("div",Oe,[g(i,{name:"i-heroicons-arrow-path",class:"h-4 w-4 shrink-0 animate-spin"}),P(" "+s(r(n)("status.updating")),1)])):v("",!0),C.value||l.value?.task.status==="failed"?(d(),u("div",Ne,[e("span",null,s(r(n)("failed")),1),g(c,{size:"xs",color:"error",variant:"soft",icon:"i-heroicons-arrow-path",onClick:a[0]||(a[0]=o=>A(!0))},{default:S(()=>[P(s(r(n)("actions.retry")),1)]),_:1})])):v("",!0),!N.value&&!C.value&&l.value?.task.status!=="failed"?(d(),H(Ce,{key:3,height:"min(52vh, 420px)",text:l.value?.task.status==="running"?r(n)("status.computingProgress",{processed:l.value.task.processedSessions,total:l.value.task.totalSessions}):r(n)("loading")},null,8,["text"])):l.value?.metrics?(d(),u(k,{key:4},[X.value?(d(),u("div",Re,[ee.value?(d(),u("span",Ye,s(r(n)("status.noAnalyzableOwner")),1)):M.value?(d(),u("span",Ve,s(r(n)("status.noDataWithLatest",M.value)),1)):(d(),u("span",$e,s(r(n)("noData")),1)),M.value?(d(),H(c,{key:3,size:"xs",variant:"soft",color:"neutral",icon:"i-heroicons-arrow-right",onClick:ue},{default:S(()=>[P(s(r(n)("actions.switchYear",{year:M.value.latestYear})),1)]),_:1})):v("",!0)])):v("",!0),e("div",je,[g(r(j),{class:"relative isolate overflow-hidden"},{default:S(()=>[g(r(Ie)),e("section",Ue,[e("h2",Be,s(se.value),1),e("div",Fe,[e("p",We,[e("span",null,s(r(n)("narrative.totalPrefix")),1),e("span",Ge,s(y(l.value.metrics.estimatedSeconds)),1),e("span",null,s(r(n)("narrative.totalSuffix")),1)]),e("p",He,[e("span",null,s(r(n)("narrative.daysPrefix")),1),e("span",qe,s(r(K)(l.value.metrics.activeDayCount)),1),e("span",null,s(r(n)("narrative.daysMiddle")),1),e("span",Ke,s(y(l.value.metrics.averagePerActiveDaySeconds)),1),e("span",null,s(r(n)("narrative.daysSuffix")),1)])]),e("div",Je,[e("div",Ze,s(r(n)("keyMetrics")),1),e("div",Qe,[(d(!0),u(k,null,T(re.value,o=>(d(),u("div",{key:o.key,class:"flex min-w-0 items-start gap-2 px-2.5 py-2"},[g(i,{name:o.icon,class:z(["mt-0.5 h-3.5 w-3.5 shrink-0",o.colorClass])},null,8,["name","class"]),e("div",Xe,[e("div",{class:z(["truncate font-mono text-sm leading-tight font-black tabular-nums",o.colorClass])},s(o.value),3),e("div",et,s(o.label),1),e("div",tt,s(o.subtext),1)])]))),128))])]),e("div",st,[e("div",null,[e("h3",at,s(r(n)("monthlyTitle")),1),e("p",nt,s(r(n)("monthlyDescription")),1)]),e("div",ot,[g(r(Ee),{data:ne.value,height:240,mode:"compact",smooth:!1,"show-area":!1},null,8,["data"])]),e("p",rt,s(r(n)("estimateNote")),1)]),e("div",it,[e("span",null,s(ae.value),1),e("span",null,s(r(n)("status.coverage",{analyzed:l.value.coverage.analyzedSessions,total:l.value.coverage.totalSessions})),1)])])]),_:1}),g(r(j),null,{default:S(()=>[e("section",lt,[e("h3",ct,[a[1]||(a[1]=e("span",{class:"inline-block h-2 w-2 rounded-full bg-pink-500 dark:bg-pink-400"},null,-1)),P(" "+s(r(n)("rhythmTitle")),1)]),e("p",dt,s(r(n)("rhythmDescription")),1),e("div",ut,[e("div",pt,[oe.value?(d(),u("div",mt,[(d(!0),u(k,null,T(R.value,o=>(d(),u("div",{key:o.key,class:"grid grid-cols-[2.25rem_minmax(0,1fr)_auto] items-center gap-3"},[e("span",xt,s(o.label),1),e("div",gt,[e("div",{class:"h-full rounded-full bg-pink-500 transition-[width] duration-500 dark:bg-pink-400",style:q({width:`${o.width}%`})},null,4)]),e("span",ht,s(y(o.seconds)),1)]))),128))])):(d(),u("p",yt,s(r(n)("noData")),1))]),e("div",vt,[e("h4",kt,s(r(n)("topDaysTitle")),1),Y.value.length?(d(),u("div",_t,[(d(!0),u(k,null,T(Y.value,(o,m)=>(d(),u("div",{key:o.key,class:"grid grid-cols-[1.5rem_minmax(0,1fr)_auto] items-center gap-3 py-2.5 first:pt-0 last:pb-0"},[e("span",ft,s(m+1),1),e("div",bt,[e("span",wt,s(o.dateLabel),1),e("span",St,s(o.weekdayLabel),1)]),e("span",Tt,s(y(o.estimatedSeconds)),1)]))),128))])):(d(),u("p",zt,s(r(n)("noData")),1))])])])]),_:1}),g(r(j),null,{default:S(()=>[e("section",Dt,[e("div",Ct,[e("div",null,[e("h3",It,s(r(n)("rankingTitle")),1),e("p",Et,s(r(n)("rankingDescription")),1)])]),ie.value?(d(),u("div",Mt,[(d(!0),u(k,null,T(F.value,o=>(d(),u("div",{key:o.type,class:"min-w-0 lg:px-10 lg:first:pl-0 lg:last:pr-0"},[e("div",At,[e("div",Pt,[e("span",{class:z(["h-2.5 w-2.5 shrink-0 rounded-full",o.type===r(h).PRIVATE?"bg-pink-500 dark:bg-pink-400":"bg-blue-500 dark:bg-blue-400"])},null,2),e("h4",Lt,s(he(o.type)),1)]),e("span",Ot,s(r(n)("rankingCount",{count:o.items.length})),1)]),o.items.length?(d(),u("div",Nt,[(d(!0),u(k,null,T(o.items,m=>(d(),u("div",{key:m.sessionId,class:"min-w-0 py-3 last:pb-0"},[e("div",Rt,[e("span",{class:z(["flex h-6 w-6 items-center justify-center rounded-full font-mono text-[10px] font-bold",m.rank<=3?o.type===r(h).PRIVATE?"bg-pink-50 text-pink-600 dark:bg-pink-950/30 dark:text-pink-400":"bg-blue-50 text-blue-600 dark:bg-blue-950/30 dark:text-blue-400":"bg-gray-100 text-gray-500 dark:bg-zinc-800 dark:text-zinc-400"])},s(m.rank),3),e("div",Yt,[e("span",Vt,s(m.name),1),e("span",$t,s(m.platform),1)]),e("div",jt,[e("div",Ut,s(y(m.seconds)),1),e("div",Bt,s(m.share)+"% ",1)])]),e("div",Ft,[e("div",{class:z(["h-full rounded-full",o.type===r(h).PRIVATE?"bg-pink-500 dark:bg-pink-400":"bg-blue-500 dark:bg-blue-400"]),style:q({width:`${m.seconds/o.maxSeconds*100}%`})},null,6)])]))),128))])):(d(),u("p",Wt,s(r(n)("noData")),1))]))),128))])):(d(),u("p",Gt,s(r(n)("noData")),1))])]),_:1})])],64)):v("",!0)])])}}});export{os 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-bQ9oj54q.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-zmzHCUCy.js";import{_ as tt}from"./Tabs-DJ5p8gb6.js";import{u as Se}from"./useToast-DPkgv34s.js";import{P as at}from"./PageHeader-BciykZ_-.js";import{u as st}from"./aiChat-CdJzpNYW.js";import"./vendor-snapdom--nZvo8Sg.js";import"./index-BmGA3geF.js";import"./service-BwbGKwDn.js";import"./EChartBar.vue_vue_type_script_setup_true_lang-DjDFhnN9.js";import"./EChart.vue_vue_type_script_setup_true_lang-CRTZh9kh.js";import"./vendor-echarts-C9ugTmum.js";import"./vendor-zrender-D8psf1AA.js";import"./EChartLine.vue_vue_type_script_setup_true_lang-BLqlW9E4.js";import"./prompt-DNxAd1Bj.js";import"./RovingFocusItem-FpYwYEP_.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};