chatlab-cli 0.37.0 → 0.37.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/dist/{chat-command-WBAJBKIE.mjs → chat-command-G2EX7VHR.mjs} +24 -12
  2. package/dist/chat-command-G2EX7VHR.mjs.map +1 -0
  3. package/dist/{chunk-N2WGG3MS.mjs → chunk-E6LCCPIB.mjs} +6 -3
  4. package/dist/chunk-E6LCCPIB.mjs.map +1 -0
  5. package/dist/{chunk-EJBBVLUN.mjs → chunk-EFX66A2O.mjs} +2 -2
  6. package/dist/{chunk-DKIYHA3O.mjs → chunk-EK5QIJLZ.mjs} +20 -23
  7. package/dist/chunk-EK5QIJLZ.mjs.map +1 -0
  8. package/dist/{chunk-5YOHLJFB.mjs → chunk-F4HVCFZL.mjs} +48 -7
  9. package/dist/chunk-F4HVCFZL.mjs.map +1 -0
  10. package/dist/{chunk-SQWN4GTQ.mjs → chunk-FCUUAGGC.mjs} +2 -2
  11. package/dist/{chunk-DQR2YS3I.mjs → chunk-H46CLFWK.mjs} +8 -6
  12. package/dist/{chunk-DQR2YS3I.mjs.map → chunk-H46CLFWK.mjs.map} +1 -1
  13. package/dist/{chunk-4J4MA3RC.mjs → chunk-HBAQPF6X.mjs} +2180 -1941
  14. package/dist/chunk-HBAQPF6X.mjs.map +1 -0
  15. package/dist/{chunk-RXMSZIYD.mjs → chunk-HMVM7VCA.mjs} +3 -3
  16. package/dist/{chunk-FM3GXNEO.mjs → chunk-L6RJIVLS.mjs} +2 -2
  17. package/dist/{chunk-MSMDLDPB.mjs → chunk-T5H56AZV.mjs} +16 -8
  18. package/dist/chunk-T5H56AZV.mjs.map +1 -0
  19. package/dist/{chunk-2TV7M4CC.mjs → chunk-XQ6Z2KNN.mjs} +2 -2
  20. package/dist/{chunk-CR2MU7LN.mjs → chunk-YI3EQYEG.mjs} +12 -12
  21. package/dist/cli.mjs +9 -9
  22. package/dist/contacts-worker.mjs +2 -2
  23. package/dist/global-insight-worker.mjs +1 -1
  24. package/dist/{http-X6OEOOSH.mjs → http-5BRVWAJR.mjs} +12 -12
  25. package/dist/{import-WBJ6YIQ7.mjs → import-IAECQDKC.mjs} +7 -7
  26. package/dist/index.mjs +12 -12
  27. package/dist/{mcp-FR6OKWKL.mjs → mcp-XXSQJBGU.mjs} +8 -8
  28. package/dist/people-relationships-worker.mjs +2 -2
  29. package/dist/semantic-index-worker.mjs +1 -1
  30. package/dist/{src-WE5HNN2O.mjs → src-4HLKMQ7S.mjs} +6 -6
  31. package/dist/{stream-import-YYQVZDGQ.mjs → stream-import-PUG42I36.mjs} +7 -7
  32. package/dist/{worker-runtime-YGB5ZDE4.mjs → worker-runtime-X5563TVT.mjs} +5 -5
  33. package/dist-cli-web/assets/{AISettingsTab-Co2sM1iY.js → AISettingsTab-m_r2fFEj.js} +1 -1
  34. package/dist-cli-web/assets/{AboutTab-DQ8r6mYE.js → AboutTab-J65UqIuk.js} +1 -1
  35. package/dist-cli-web/assets/{Alert-DU1tLAAg.js → Alert-qBIGn_CW.js} +1 -1
  36. package/dist-cli-web/assets/{ApiSettingsTab-D5g5b79L.js → ApiSettingsTab-CxWRJI9j.js} +1 -1
  37. package/dist-cli-web/assets/{BatchManageTab-BFUyVaGU.js → BatchManageTab-BINNVwm1.js} +1 -1
  38. package/dist-cli-web/assets/{BufferResource-C-RfYwQW.js → BufferResource-C-jLPrHv.js} +1 -1
  39. package/dist-cli-web/assets/{CanvasRenderer-Dz7JAMrR.js → CanvasRenderer-kDLW8GSt.js} +1 -1
  40. package/dist-cli-web/assets/{CardDecoration-D28DI1G9.js → CardDecoration-CnYxleQM.js} +1 -1
  41. package/dist-cli-web/assets/{ChatRecordDrawer-Cph819yY.js → ChatRecordDrawer-CMg3FEWH.js} +1 -1
  42. package/dist-cli-web/assets/{ChatRecordWorkspace-BAfERdPc.js → ChatRecordWorkspace-AfFIMUbZ.js} +1 -1
  43. package/dist-cli-web/assets/{Checkbox-B8uqt13j.js → Checkbox-D-hAv15R.js} +1 -1
  44. package/dist-cli-web/assets/{DataDirCleanupNotice-3sGBE5vU.js → DataDirCleanupNotice-P80h2p4l.js} +1 -1
  45. package/dist-cli-web/assets/{DatePicker.vue_vue_type_script_setup_true_lang-CQuub8-f.js → DatePicker.vue_vue_type_script_setup_true_lang-CSp691Uv.js} +1 -1
  46. package/dist-cli-web/assets/{DebugToolsPanel-Cwkr0BOY.js → DebugToolsPanel-BK2VbKB0.js} +1 -1
  47. package/dist-cli-web/assets/{EChart.vue_vue_type_script_setup_true_lang-BuLujQCF.js → EChart.vue_vue_type_script_setup_true_lang-BcE0mE_N.js} +1 -1
  48. package/dist-cli-web/assets/{EChartBar.vue_vue_type_script_setup_true_lang-DuA5xbcC.js → EChartBar.vue_vue_type_script_setup_true_lang-BypaV5wc.js} +1 -1
  49. package/dist-cli-web/assets/{EChartLine.vue_vue_type_script_setup_true_lang-CvmMEfYq.js → EChartLine.vue_vue_type_script_setup_true_lang-D8SyOfWC.js} +1 -1
  50. package/dist-cli-web/assets/{EChartWordcloud-CHVtyPR7.js → EChartWordcloud-0rihhg03.js} +1 -1
  51. package/dist-cli-web/assets/{FileDropZone.vue_vue_type_script_setup_true_lang-BKPy9Qv-.js → FileDropZone.vue_vue_type_script_setup_true_lang-Dyuzh7Ex.js} +1 -1
  52. package/dist-cli-web/assets/{Filter-CMfRHIoK.js → Filter-rD_jWpbO.js} +1 -1
  53. package/dist-cli-web/assets/{GlobalTaskBar-Jz6MASCu.js → GlobalTaskBar-sXQuGvF-.js} +1 -1
  54. package/dist-cli-web/assets/{GroupRelationshipGalaxyView-Ch4obfEq.js → GroupRelationshipGalaxyView-BN1L9DFf.js} +1 -1
  55. package/dist-cli-web/assets/{Label-CuryuymO.js → Label-Ce4wl_Ph.js} +1 -1
  56. package/dist-cli-web/assets/{LoadingState.vue_vue_type_script_setup_true_lang-CoeQsaiL.js → LoadingState.vue_vue_type_script_setup_true_lang-DmVfwvnD.js} +1 -1
  57. package/dist-cli-web/assets/{MessageExportModal-JqGZ-iLr.js → MessageExportModal-C2IUNPhg.js} +1 -1
  58. package/dist-cli-web/assets/{PageHeader-D4up77TB.js → PageHeader-D5BcYKBs.js} +1 -1
  59. package/dist-cli-web/assets/{PageTabs.vue_vue_type_script_setup_true_lang-DYQRFk9s.js → PageTabs.vue_vue_type_script_setup_true_lang-DHly2-fe.js} +1 -1
  60. package/dist-cli-web/assets/{RelationshipGalaxyCanvas-Cn7Eta5U.js → RelationshipGalaxyCanvas-CHPqtqQz.js} +3 -3
  61. package/dist-cli-web/assets/{RelationshipGalaxyThreeCanvas-LlaX57z6.js → RelationshipGalaxyThreeCanvas-qR4S-9n7.js} +1 -1
  62. package/dist-cli-web/assets/{RenderTargetSystem-JhA2PUFi.js → RenderTargetSystem-BaIFulUj.js} +1 -1
  63. package/dist-cli-web/assets/{RovingFocusItem-DHaiTb4j.js → RovingFocusItem-Bqgmzo42.js} +1 -1
  64. package/dist-cli-web/assets/{ScreenCaptureModal-Bxhyt5g1.js → ScreenCaptureModal-sJqB_hrK.js} +1 -1
  65. package/dist-cli-web/assets/SectionTabs.vue_vue_type_script_setup_true_lang-BPt98e6z.js +1 -0
  66. package/dist-cli-web/assets/{Select-Beeqv0wU.js → Select-BAnN4HMs.js} +1 -1
  67. package/dist-cli-web/assets/SettingsModal-C4ANMlJJ.js +2 -0
  68. package/dist-cli-web/assets/{StorageTab-B7GHadia.js → StorageTab-BgNQliz4.js} +1 -1
  69. package/dist-cli-web/assets/{Switch-u4zlvUMa.js → Switch-DddEvDJa.js} +1 -1
  70. package/dist-cli-web/assets/{Tabs-B7-Koq3x.js → Tabs-DwjL-ueH.js} +1 -1
  71. package/dist-cli-web/assets/{Tabs-RWKHwtfM.js → Tabs-xVtuBuO0.js} +1 -1
  72. package/dist-cli-web/assets/{ThemeCard.vue_vue_type_script_setup_true_lang-ndsa3-aT.js → ThemeCard.vue_vue_type_script_setup_true_lang-CNCVa86b.js} +1 -1
  73. package/dist-cli-web/assets/{TimeSelect.vue_vue_type_script_setup_true_lang-DKa1flT-.js → TimeSelect.vue_vue_type_script_setup_true_lang-BehUIWki.js} +1 -1
  74. package/dist-cli-web/assets/{VisuallyHiddenInput-DGDqcvUy.js → VisuallyHiddenInput-ST6JNfSG.js} +1 -1
  75. package/dist-cli-web/assets/{WebGLRenderer-ifvgA1fe.js → WebGLRenderer-DRraqD4Y.js} +1 -1
  76. package/dist-cli-web/assets/{WebGPURenderer-DwzmuWF0.js → WebGPURenderer-CnzaYARg.js} +1 -1
  77. package/dist-cli-web/assets/aiChat-CeJy-gG-.js +8 -0
  78. package/dist-cli-web/assets/{base-BWDX-164.js → base-BHbtUviQ.js} +1 -1
  79. package/dist-cli-web/assets/{browserAll-CSIIETeE.js → browserAll-DYxkitnx.js} +1 -1
  80. package/dist-cli-web/assets/{chatMessages--r0obAVw.css → chatMessages-BGRbSlvD.css} +1 -1
  81. package/dist-cli-web/assets/{chatMessages-Zywjea1n.js → chatMessages-Dj1u-tFB.js} +20 -20
  82. package/dist-cli-web/assets/{cli-web-BRY49NWe.js → cli-web-BtH8nfjA.js} +1 -1
  83. package/dist-cli-web/assets/{fetch-DNSDHSqQ.js → fetch-BJ82mWvv.js} +1 -1
  84. package/dist-cli-web/assets/{fetch-D3nLtFBi.js → fetch-C1Tm66i9.js} +1 -1
  85. package/dist-cli-web/assets/{fetch-jx1VdM9j.js → fetch-CAEyoWQA.js} +1 -1
  86. package/dist-cli-web/assets/{fetch-qBaUXqFt.js → fetch-CGnWNSsG.js} +1 -1
  87. package/dist-cli-web/assets/{fetch-mYSeL4Ki.js → fetch-D7hfFyoG.js} +1 -1
  88. package/dist-cli-web/assets/{fetch-BiXab0IF.js → fetch-DNmRaRxX.js} +1 -1
  89. package/dist-cli-web/assets/{fetch-wzv71PYy.js → fetch-DogRrvT6.js} +1 -1
  90. package/dist-cli-web/assets/fetch-JEEBqR_7.js +1 -0
  91. package/dist-cli-web/assets/{fetch-r6mhEGrP.js → fetch-T5Gi1TUZ.js} +1 -1
  92. package/dist-cli-web/assets/{fetch-DeHqF6yL.js → fetch-U9QyidNZ.js} +1 -1
  93. package/dist-cli-web/assets/{fetch-Co2vLmiE.js → fetch-ejEMWPM2.js} +1 -1
  94. package/dist-cli-web/assets/{fetch-Bf4cqeM3.js → fetch-emZXHmoE.js} +1 -1
  95. package/dist-cli-web/assets/{host-1emQf9_4.js → host-BUvwCvZR.js} +1 -1
  96. package/dist-cli-web/assets/{host-jXJHyyOX.js → host-VTWF81F5.js} +1 -1
  97. package/dist-cli-web/assets/{index-CYc_VLgK.js → index-B3MCGDwx.js} +1 -1
  98. package/dist-cli-web/assets/index-BI2Rb_L3.js +2 -0
  99. package/dist-cli-web/assets/{index-BOcFyPCa.js → index-BLYSew5C.js} +1 -1
  100. package/dist-cli-web/assets/index-Bs7gk1gf.css +1 -0
  101. package/dist-cli-web/assets/{index-BgelKQTW.css → index-C75W1B5J.css} +1 -1
  102. package/dist-cli-web/assets/{index-DOqbUvhA.js → index-CVRBBnQw.js} +1 -1
  103. package/dist-cli-web/assets/index-Cza8BzZE.js +137 -0
  104. package/dist-cli-web/assets/{index-DnpnIyle.js → index-D9C3dyV8.js} +33 -33
  105. package/dist-cli-web/assets/{index-LV9LfFNu.js → index-DDt7Tfda.js} +1 -1
  106. package/dist-cli-web/assets/{index-B4mJkX_d.js → index-DQFcmWSa.js} +1 -1
  107. package/dist-cli-web/assets/{index-slDUxib2.js → index-DUBl6aBF.js} +1 -1
  108. package/dist-cli-web/assets/{index-B7biznha.js → index-DZK9Njvy.js} +1 -1
  109. package/dist-cli-web/assets/{index-Cw0IhKZ6.js → index-HjrJ3DXO.js} +1 -1
  110. package/dist-cli-web/assets/index-KpnLSzzX.js +64 -0
  111. package/dist-cli-web/assets/{index-BQ463TS7.js → index-e6fOnhNS.js} +1 -1
  112. package/dist-cli-web/assets/{index-ClHMs0-a.js → index-iEQnKg2R.js} +2 -2
  113. package/dist-cli-web/assets/{people-page-header-Cx5r9Bk2.js → people-page-header-DWXwFJ8M.js} +1 -1
  114. package/dist-cli-web/assets/{prompt-BggEDxxi.js → prompt-Cepfb-5-.js} +1 -1
  115. package/dist-cli-web/assets/{semantic-index-config-builder-1sO0aEc1.js → semantic-index-config-builder-hTY6QyCe.js} +1 -1
  116. package/dist-cli-web/assets/service-BjE0YJaM.js +1 -0
  117. package/dist-cli-web/assets/service-DQxttlJp.js +1 -0
  118. package/dist-cli-web/assets/{service-Bvq1fRkC.js → service-DwCmXFtI.js} +1 -1
  119. package/dist-cli-web/assets/useFormControl-CJyJY8AK.js +1 -0
  120. package/dist-cli-web/assets/useInsightTabAnalytics-CplGbsbe.js +75 -0
  121. package/dist-cli-web/assets/{ActionToolsPanel-CmYpw8Mt.css → useInsightTabAnalytics-DDNXXH8v.css} +1 -1
  122. package/dist-cli-web/assets/{useTable-DC7oxmBl.js → useTable-Dmpbk7fZ.js} +1 -1
  123. package/dist-cli-web/assets/{useToast-CCPBE-Sy.js → useToast-Bmgpd3sl.js} +1 -1
  124. package/dist-cli-web/assets/{webworkerAll-FCJk6reG.js → webworkerAll-DkPWEyVL.js} +1 -1
  125. package/dist-cli-web/index.html +1 -1
  126. package/package.json +3 -3
  127. package/dist/chat-command-WBAJBKIE.mjs.map +0 -1
  128. package/dist/chunk-4J4MA3RC.mjs.map +0 -1
  129. package/dist/chunk-5YOHLJFB.mjs.map +0 -1
  130. package/dist/chunk-DKIYHA3O.mjs.map +0 -1
  131. package/dist/chunk-MSMDLDPB.mjs.map +0 -1
  132. package/dist/chunk-N2WGG3MS.mjs.map +0 -1
  133. package/dist-cli-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang--RPlmfIu.js +0 -75
  134. package/dist-cli-web/assets/SectionTabs.vue_vue_type_script_setup_true_lang-BlAje3Tf.js +0 -1
  135. package/dist-cli-web/assets/SettingsModal-DV8yDBJs.js +0 -2
  136. package/dist-cli-web/assets/aiChat-BY4C3UQe.js +0 -8
  137. package/dist-cli-web/assets/fetch-C8CcoTWY.js +0 -1
  138. package/dist-cli-web/assets/index-2dJCozDq.js +0 -64
  139. package/dist-cli-web/assets/index-6ejRbH3h.js +0 -2
  140. package/dist-cli-web/assets/index-CIIyg_o9.css +0 -1
  141. package/dist-cli-web/assets/index-kePiJ3ca.js +0 -137
  142. package/dist-cli-web/assets/service-DkPheDt8.js +0 -1
  143. package/dist-cli-web/assets/service-DvI8O_7K.js +0 -1
  144. package/dist-cli-web/assets/useFormControl-B0aShtLp.js +0 -1
  145. /package/dist/{chunk-EJBBVLUN.mjs.map → chunk-EFX66A2O.mjs.map} +0 -0
  146. /package/dist/{chunk-SQWN4GTQ.mjs.map → chunk-FCUUAGGC.mjs.map} +0 -0
  147. /package/dist/{chunk-RXMSZIYD.mjs.map → chunk-HMVM7VCA.mjs.map} +0 -0
  148. /package/dist/{chunk-FM3GXNEO.mjs.map → chunk-L6RJIVLS.mjs.map} +0 -0
  149. /package/dist/{chunk-2TV7M4CC.mjs.map → chunk-XQ6Z2KNN.mjs.map} +0 -0
  150. /package/dist/{chunk-CR2MU7LN.mjs.map → chunk-YI3EQYEG.mjs.map} +0 -0
  151. /package/dist/{http-X6OEOOSH.mjs.map → http-5BRVWAJR.mjs.map} +0 -0
  152. /package/dist/{import-WBJ6YIQ7.mjs.map → import-IAECQDKC.mjs.map} +0 -0
  153. /package/dist/{mcp-FR6OKWKL.mjs.map → mcp-XXSQJBGU.mjs.map} +0 -0
  154. /package/dist/{src-WE5HNN2O.mjs.map → src-4HLKMQ7S.mjs.map} +0 -0
  155. /package/dist/{stream-import-YYQVZDGQ.mjs.map → stream-import-PUG42I36.mjs.map} +0 -0
  156. /package/dist/{worker-runtime-YGB5ZDE4.mjs.map → worker-runtime-X5563TVT.mjs.map} +0 -0
@@ -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-DnpnIyle.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-Zywjea1n.js";import{_ as tt}from"./Tabs-RWKHwtfM.js";import{u as Se}from"./useToast-CCPBE-Sy.js";import{P as at}from"./PageHeader-D4up77TB.js";import{u as st}from"./aiChat-BY4C3UQe.js";import"./vendor-snapdom--nZvo8Sg.js";import"./index-Cw0IhKZ6.js";import"./service-Bvq1fRkC.js";import"./EChartBar.vue_vue_type_script_setup_true_lang-DuA5xbcC.js";import"./EChart.vue_vue_type_script_setup_true_lang-BuLujQCF.js";import"./vendor-echarts-C9ugTmum.js";import"./vendor-zrender-D8psf1AA.js";import"./EChartLine.vue_vue_type_script_setup_true_lang-CvmMEfYq.js";import"./prompt-BggEDxxi.js";import"./RovingFocusItem-DHaiTb4j.js";import"./chatlabSiteLocale-CrCNb8QP.js";const lt={class:"flex max-h-[78vh] min-h-[520px] flex-col overflow-hidden"},ot={class:"flex items-start justify-between border-b border-gray-200 px-5 py-4 dark:border-gray-800"},nt={class:"text-base font-semibold text-gray-900 dark:text-white"},it={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},rt={class:"flex min-h-0 flex-1 flex-col px-5 py-4"},ct={class:"mb-3 flex items-center justify-between gap-3"},ut={class:"flex items-center gap-2"},dt={class:"text-xs text-gray-400"},mt={key:0,class:"mb-3 rounded-xl border border-primary-200 bg-primary-50/40 p-3 dark:border-primary-900/70 dark:bg-primary-950/20"},ft={class:"mb-2 flex items-center justify-between gap-3"},pt={class:"text-xs font-medium text-gray-700 dark:text-gray-200"},vt={class:"truncate text-[11px] text-gray-400"},gt={key:0,class:"mb-3 space-y-2"},yt={class:"max-h-36 space-y-1 overflow-y-auto rounded-lg border border-gray-200 p-1 dark:border-gray-800"},ht={key:0,class:"flex h-20 items-center justify-center"},bt=["onClick"],xt={class:"truncate"},_t={class:"shrink-0 text-[10px] text-gray-400"},kt={key:2,class:"flex h-20 items-center justify-center text-xs text-gray-400"},wt={class:"mt-2 flex items-center justify-between gap-3"},Ct={class:"text-[11px] text-gray-400"},St={class:"flex items-center gap-2"},It={class:"min-h-0 flex-1 overflow-y-auto pr-1"},Tt={key:0,class:"flex h-full min-h-56 items-center justify-center"},At={key:1,class:"flex min-h-56 flex-col items-center justify-center text-center"},$t={class:"text-sm text-gray-500 dark:text-gray-400"},Mt={key:2,class:"space-y-2"},Vt={key:0,class:"mb-2 flex items-center gap-1.5 text-xs text-gray-500"},zt={class:"truncate"},Pt={key:1},Et={class:"mt-2 flex justify-end gap-2"},Ut={class:"whitespace-pre-wrap break-words text-sm leading-6 text-gray-800 dark:text-gray-200"},jt={class:"mt-2 flex items-center justify-between gap-3"},qt={class:"flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1 text-[11px] text-gray-400"},Rt={class:"flex shrink-0 items-center gap-0.5"},Ft={key:0,class:"mt-2 flex flex-wrap items-center justify-between gap-2 border-t border-gray-100 pt-2 text-[11px] dark:border-gray-800"},Bt={key:0,class:"text-amber-600 dark:text-amber-400"},Lt={key:1,class:"ml-auto text-gray-400 dark:text-gray-500"},Nt={class:"flex items-center justify-between border-t border-gray-200 px-5 py-3 dark:border-gray-800"},Dt={class:"flex items-center gap-2"},Ot=1500,Gt=_e({__name:"AIMemoryManagerModal",props:{open:{type:Boolean}},emits:["update:open","view-source"],setup(ue,{emit:_}){const ae=ue,z=_,{t:s,locale:D}=ke(),S=Se(),h=we(),O=ze(),A=Pe(),f=g("preferences"),k=g([]),j=g(new Map),v=g(!1),w=g(null),G=g(null),I=g(""),L=g(!1),q=g(""),C=g("contact"),b=g(null),$=g(""),M=g([]),R=g(!1);let T=null,P=null,F=0;const se=H(()=>[{label:s("ai.global.memory.preferences"),value:"preferences"},{label:s("ai.global.memory.self"),value:"self"},{label:s("ai.global.memory.entities"),value:"entities"}]),J=H(()=>k.value.filter(e=>f.value==="preferences"?e.scopeType==="global":f.value==="self"?e.scopeType==="self":e.scopeType==="contact"||e.scopeType==="group")),re=H(()=>[{label:s("ai.global.entityPicker.contacts"),value:"contact"},{label:s("ai.global.entityPicker.groups"),value:"group"}]),le=H(()=>{const e=$.value.trim().toLocaleLowerCase();return A.sessions.filter(a=>a.type==="group").filter(a=>!e||`${a.name} ${a.platform}`.toLocaleLowerCase().includes(e)).map(a=>({scopeType:"group",scopeId:a.id,label:a.name,detail:a.platform}))}),oe=H(()=>C.value==="contact"?M.value:le.value),ce=H(()=>f.value==="preferences"?s("ai.global.memory.preferences"):f.value==="self"?s("ai.global.memory.self"):b.value?.label??s("ai.global.memory.selectEntity")),Y=H(()=>q.value.trim().length>0&&q.value.trim().length<=2e3&&(f.value!=="entities"||b.value!==null));function Q(){z("update:open",!1)}function ne(e){G.value=e.id,I.value=e.content}function N(){G.value=null,I.value=""}function de(){N(),L.value=!0,q.value="",b.value=null,$.value="",f.value==="entities"&&C.value==="contact"&&t("")}function W(){L.value=!1,q.value="",b.value=null,$.value="",F++,R.value=!1,T&&(clearTimeout(T),T=null),o()}function ie(e){return new Intl.DateTimeFormat(D.value,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}).format(e)}function me(e){!e.sourceAIChatId||e.sourceStatus!=="conversation"&&e.sourceStatus!=="message"||(z("update:open",!1),z("view-source",{aiChatId:e.sourceAIChatId,messageId:e.sourceStatus==="message"?e.sourceMessageId:null}))}function fe(e){return e.scopeId?e.scopeType==="contact"?j.value.get(e.scopeId)??e.scopeId:A.sessions.find(a=>a.id===e.scopeId)?.name??e.scopeId:""}async function pe(e){const a=[...new Set(e.filter(x=>x.scopeType==="contact").map(x=>x.scopeId))].filter(x=>!!x),p=new Map,X=await Promise.allSettled(a.map(async x=>({key:x,detail:await O.getContactDetail(x,{acceptStale:!0})})));for(const x of X)x.status==="fulfilled"&&x.value.detail.contact&&p.set(x.value.key,x.value.detail.contact.displayName);j.value=p}async function t(e){const a=++F;R.value=!0;try{const p={acceptStale:!0,timeRangePreset:"all",page:1,pageSize:100,query:e.trim()||void 0},X=await Promise.all([O.getContacts({...p,pool:"friend"}),O.getContacts({...p,pool:"non_friend"})]);if(a!==F)return;const x=new Map;X.flatMap(V=>V.contacts).forEach(V=>x.set(V.key,V)),M.value=[...x.values()].map(V=>({scopeType:"contact",scopeId:V.key,label:V.displayName,detail:V.platformId})),y(X,e)}catch(p){if(a!==F)return;o(),M.value=[],S.fail(s("ai.global.entityPicker.loadFailed"),{description:String(p)})}finally{a===F&&(R.value=!1)}}function o(){P&&(clearTimeout(P),P=null)}function y(e,a){o(),!(!L.value||f.value!=="entities"||C.value!=="contact")&&e.some(p=>p.task?.status==="running")&&(P=setTimeout(()=>{P=null,t(a)},Ot))}function l(e){T&&clearTimeout(T),o(),F++,T=setTimeout(()=>{T=null,t(e)},200)}async function ve(){v.value=!0;try{const e=await h.getAIMemories();k.value=e,await Promise.all([A.loadSessions(),pe(e)])}catch(e){S.fail(s("ai.global.memory.toast.loadFailed"),{description:String(e)})}finally{v.value=!1}}async function Ie(e){if(I.value.trim()){w.value=e.id;try{const a=await h.updateAIMemory(e.id,I.value);k.value=k.value.map(p=>p.id===a.id?a:p),N(),S.success(s("ai.global.memory.toast.saved"))}catch(a){S.fail(s("ai.global.memory.toast.saveFailed"),{description:String(a)})}finally{w.value=null}}}async function Te(){if(Y.value){w.value="new";try{const e=f.value==="preferences"?{scopeType:"global",scopeId:null}:f.value==="self"?{scopeType:"self",scopeId:null}:{scopeType:b.value.scopeType,scopeId:b.value.scopeId},a=await h.createAIMemory({...e,content:q.value});k.value=[a,...k.value],a.scopeType==="contact"&&a.scopeId&&b.value&&(j.value=new Map(j.value).set(a.scopeId,b.value.label)),W(),S.success(s("ai.global.memory.toast.created"))}catch(e){S.fail(s("ai.global.memory.toast.createFailed"),{description:String(e)})}finally{w.value=null}}}async function Ae(e){if(confirm(s("ai.global.memory.confirmDelete"))){w.value=e.id;try{await h.deleteAIMemory(e.id),k.value=k.value.filter(a=>a.id!==e.id),G.value===e.id&&N(),S.success(s("ai.global.memory.toast.deleted"))}catch(a){S.fail(s("ai.global.memory.toast.deleteFailed"),{description:String(a)})}finally{w.value=null}}}async function $e(){const e=J.value;if(!(e.length===0||!confirm(s("ai.global.memory.confirmClearView")))){v.value=!0;try{f.value==="entities"?await Promise.all(e.map(a=>h.deleteAIMemory(a.id))):await h.clearAIMemories({scopeType:f.value==="preferences"?"global":"self",scopeId:null}),await ve(),S.success(s("ai.global.memory.toast.cleared"))}catch(a){await ve(),S.fail(s("ai.global.memory.toast.clearFailed"),{description:String(a)})}finally{v.value=!1}}}async function Me(){if(!(k.value.length===0||!confirm(s("ai.global.memory.confirmClearAll")))){v.value=!0;try{await h.clearAIMemories({all:!0}),k.value=[],j.value=new Map,N(),S.success(s("ai.global.memory.toast.cleared"))}catch(e){S.fail(s("ai.global.memory.toast.clearFailed"),{description:String(e)})}finally{v.value=!1}}}return K(()=>ae.open,e=>{e?ve():(N(),W())},{immediate:!0}),K(f,()=>W()),K(C,e=>{o(),F++,R.value=!1,b.value=null,$.value="",L.value&&f.value==="entities"&&e==="contact"&&t("")}),K($,e=>{b.value=null,L.value&&f.value==="entities"&&C.value==="contact"&&l(e)}),Ee(()=>{F++,T&&clearTimeout(T),o()}),(e,a)=>{const p=Ue,X=tt,x=je,V=Ce,xe=He,Ve=Re;return c(),ee(Ve,{open:ue.open,ui:{content:"sm:max-w-2xl"},"onUpdate:open":a[6]||(a[6]=r=>z("update:open",r))},{content:E(()=>[i("div",lt,[i("header",ot,[i("div",null,[i("h2",nt,d(n(s)("ai.global.memory.title")),1),i("p",it,d(n(s)("ai.global.memory.description")),1)]),u(p,{icon:"i-lucide-x",color:"neutral",variant:"ghost",size:"sm","aria-label":n(s)("common.close"),onClick:Q},null,8,["aria-label"])]),i("div",rt,[i("div",ct,[u(X,{modelValue:f.value,"onUpdate:modelValue":a[0]||(a[0]=r=>f.value=r),items:se.value,content:!1,size:"sm",class:"min-w-max"},null,8,["modelValue","items"]),i("div",ut,[i("span",dt,d(n(s)("ai.global.memory.count",{count:J.value.length})),1),u(p,{icon:"i-lucide-plus",color:"primary",variant:"soft",size:"xs",disabled:v.value,onClick:a[1]||(a[1]=r=>L.value?W():de())},{default:E(()=>[B(d(n(s)("ai.global.memory.add")),1)]),_:1},8,["disabled"])])]),L.value?(c(),m("div",mt,[i("div",ft,[i("span",pt,d(n(s)("ai.global.memory.createTitle")),1),i("span",vt,d(n(s)("ai.global.memory.scopeLabel",{scope:ce.value})),1)]),f.value==="entities"?(c(),m("div",gt,[u(X,{modelValue:C.value,"onUpdate:modelValue":a[2]||(a[2]=r=>C.value=r),items:re.value,content:!1,size:"xs"},null,8,["modelValue","items"]),u(x,{modelValue:$.value,"onUpdate:modelValue":a[3]||(a[3]=r=>$.value=r),icon:"i-lucide-search",size:"sm",placeholder:n(s)("ai.global.entityPicker.search")},null,8,["modelValue","placeholder"]),i("div",yt,[R.value?(c(),m("div",ht,[u(V,{name:"i-lucide-loader-2",class:"h-4 w-4 animate-spin text-gray-400"})])):(c(!0),m(te,{key:1},be(oe.value,r=>(c(),m("button",{key:`${r.scopeType}:${r.scopeId}`,type:"button",class:qe(["flex w-full items-center justify-between gap-3 rounded-md px-2.5 py-2 text-left text-xs transition-colors",b.value?.scopeId===r.scopeId&&b.value.scopeType===r.scopeType?"bg-primary-100 text-primary-700 dark:bg-primary-900/50 dark:text-primary-200":"hover:bg-gray-100 dark:hover:bg-gray-800"]),onClick:Z=>b.value=r},[i("span",xt,d(r.label),1),i("span",_t,d(r.detail),1)],10,bt))),128)),!R.value&&oe.value.length===0?(c(),m("p",kt,d(n(s)("ai.global.entityPicker.empty")),1)):U("",!0)])])):U("",!0),u(xe,{modelValue:q.value,"onUpdate:modelValue":a[4]||(a[4]=r=>q.value=r),rows:3,maxlength:2e3,autoresize:"",class:"w-full",placeholder:n(s)("ai.global.memory.contentPlaceholder")},null,8,["modelValue","placeholder"]),i("div",wt,[i("span",Ct,d(q.value.trim().length)+" / 2000",1),i("div",St,[u(p,{color:"neutral",variant:"ghost",size:"xs",onClick:W},{default:E(()=>[B(d(n(s)("common.cancel")),1)]),_:1}),u(p,{size:"xs",loading:w.value==="new",disabled:!Y.value,onClick:Te},{default:E(()=>[B(d(n(s)("common.save")),1)]),_:1},8,["loading","disabled"])])])])):U("",!0),i("div",It,[v.value?(c(),m("div",Tt,[u(V,{name:"i-lucide-loader-2",class:"h-5 w-5 animate-spin text-gray-400"})])):J.value.length===0?(c(),m("div",At,[u(V,{name:"i-lucide-brain",class:"mb-3 h-8 w-8 text-gray-300 dark:text-gray-600"}),i("p",$t,d(n(s)("ai.global.memory.empty")),1)])):(c(),m("div",Mt,[(c(!0),m(te,null,be(J.value,r=>(c(),m("article",{key:r.id,class:"rounded-xl border border-gray-200 px-4 py-3 dark:border-gray-800"},[r.scopeType==="contact"||r.scopeType==="group"?(c(),m("div",Vt,[u(V,{name:r.scopeType==="contact"?"i-lucide-user-round":"i-lucide-users-round",class:"h-3.5 w-3.5"},null,8,["name"]),i("span",zt,d(fe(r)),1)])):U("",!0),G.value===r.id?(c(),m("div",Pt,[u(xe,{modelValue:I.value,"onUpdate:modelValue":a[5]||(a[5]=Z=>I.value=Z),rows:3,autoresize:"",class:"w-full"},null,8,["modelValue"]),i("div",Et,[u(p,{color:"neutral",variant:"ghost",size:"xs",onClick:N},{default:E(()=>[B(d(n(s)("common.cancel")),1)]),_:1}),u(p,{size:"xs",loading:w.value===r.id,disabled:!I.value.trim(),onClick:Z=>Ie(r)},{default:E(()=>[B(d(n(s)("common.save")),1)]),_:1},8,["loading","disabled","onClick"])])])):(c(),m(te,{key:2},[i("p",Ut,d(r.content),1),i("div",jt,[i("div",qt,[i("span",null,d(n(s)(`ai.global.memory.source.${r.sourceType}`)),1),a[8]||(a[8]=i("span",{"aria-hidden":"true"},"·",-1)),i("span",null,d(n(s)("ai.global.memory.createdAt",{time:ie(r.createdAt)})),1),r.updatedAt!==r.createdAt?(c(),m(te,{key:0},[a[7]||(a[7]=i("span",{"aria-hidden":"true"},"·",-1)),i("span",null,d(n(s)("ai.global.memory.updatedAt",{time:ie(r.updatedAt)})),1)],64)):U("",!0)]),i("div",Rt,[u(p,{icon:"i-lucide-pencil",color:"neutral",variant:"ghost",size:"xs","aria-label":n(s)("common.edit"),onClick:Z=>ne(r)},null,8,["aria-label","onClick"]),u(p,{icon:"i-lucide-trash-2",color:"error",variant:"ghost",size:"xs",loading:w.value===r.id,"aria-label":n(s)("common.delete"),onClick:Z=>Ae(r)},null,8,["loading","aria-label","onClick"])])]),r.sourceType==="ai"||r.sourceStatus!=="none"?(c(),m("div",Ft,[r.sourceType==="ai"?(c(),m("span",Bt,d(n(s)("ai.global.memory.aiSourceWarning")),1)):U("",!0),r.sourceStatus==="unavailable"?(c(),m("span",Lt,d(n(s)("ai.global.memory.sourceUnavailable")),1)):r.sourceStatus==="conversation"||r.sourceStatus==="message"?(c(),ee(p,{key:2,class:"ml-auto",icon:"i-lucide-external-link",color:"neutral",variant:"ghost",size:"xs",onClick:Z=>me(r)},{default:E(()=>[B(d(n(s)("ai.global.memory.viewSource")),1)]),_:1},8,["onClick"])):U("",!0)])):U("",!0)],64))]))),128))]))])]),i("footer",Nt,[u(p,{color:"error",variant:"ghost",size:"sm",disabled:J.value.length===0||v.value,onClick:$e},{default:E(()=>[B(d(n(s)("ai.global.memory.clearCurrent")),1)]),_:1},8,["disabled"]),i("div",Dt,[u(p,{color:"error",variant:"soft",size:"sm",disabled:k.value.length===0||v.value,onClick:Me},{default:E(()=>[B(d(n(s)("ai.global.memory.clearAll")),1)]),_:1},8,["disabled"]),u(p,{color:"neutral",variant:"outline",size:"sm",onClick:Q},{default:E(()=>[B(d(n(s)("common.close")),1)]),_:1})])])])]),_:1},8,["open"])}}}),Ht={class:"flex h-full min-w-0 flex-col dark:bg-page-dark",style:{"padding-top":"var(--titlebar-area-height)"}},Kt=["aria-expanded"],Jt={class:"main-content flex min-h-0 flex-1 overflow-hidden"},Qt={class:"flex h-full min-w-0 flex-1 flex-col overflow-hidden"},Wt={class:"relative min-h-0 flex-1"},Xt={key:0,class:"flex h-full items-center justify-center"},Yt={key:1,class:"mx-auto flex h-full max-w-lg flex-col items-center justify-center pb-16 text-center"},Zt={class:"mb-4 flex h-12 w-12 items-center justify-center rounded-2xl bg-primary-50 text-primary-500 dark:bg-primary-500/10 dark:text-primary-300"},ea={class:"text-base text-gray-800 dark:text-gray-100"},ta={class:"mt-2 text-sm leading-6 text-gray-500 dark:text-gray-400"},aa={key:2,class:"mx-auto max-w-3xl space-y-4"},sa={key:0,class:"flex justify-center pb-2"},la={key:1,class:"qa-pair space-y-6 pb-4"},oa={class:"shrink-0 px-4 pb-4"},na={class:"relative mx-auto max-w-3xl overflow-visible rounded-2xl bg-white shadow-[0_2px_14px_rgba(0,0,0,0.04)] ring-1 ring-gray-200/60 transition-all focus-within:ring-primary-500/40 focus-within:shadow-[0_4px_20px_rgba(0,0,0,0.08)] dark:bg-page-dark dark:ring-white/5"},Ca=_e({__name:"index",setup(ue){const{t:_,locale:ae}=ke(),z=Fe(),s=Be(),D=Se(),S=Le(),h=st(),O=we(),{chatKey:A,state:f}=h.ensureGlobalState(ae.value),k=ye(f,"messages"),j=ye(f,"isAIThinking"),v=ye(f,"currentAIChatId"),w=g([]),G=g(!1),I=g(!0),L=g(null);let q=!1,C=0,b=0,$=null;function M(){return!q&&z.name==="global-ai"}const R=g(0),T=g(!1),P=g(null),F=H(()=>et(k.value)),{messagesContainer:se,showScrollToBottom:J,handleScrollToBottom:re,scrollToBottom:le}=Ke(k,j),{visiblePairs:oe,hasOlderPairs:ce,loadOlderPairs:Y}=Je(F,v,se);async function Q(t){!M()||(typeof z.query.aiChatId=="string"?z.query.aiChatId:null)===t||await s.replace({query:{...z.query,aiChatId:t||void 0}})}async function ne(){G.value=!0;try{w.value=await O.getGlobalAIChats()}catch(t){D.fail(_("ai.global.toast.loadFailed"),{description:String(t)})}finally{G.value=!1}}async function N(t,o=null){const y=++C,l=await h.loadAIChat(A,t);if(!(y!==C||!M())){if(!l){D.fail(_("ai.global.toast.loadFailed"));return}I.value=!1,await Q(t),!(y!==C||!M())&&(await ge(),o?await de(o):(P.value=null,le(!0)))}}async function de(t){if(!F.value.some(l=>l.user?.id===t||l.assistant?.id===t||l.standalone?.id===t)){D.warn(_("ai.global.memory.sourceUnavailable"));return}for(;ce.value&&!oe.value.some(l=>l.user?.id===t||l.assistant?.id===t||l.standalone?.id===t);)await Y();P.value=t,await ge(),se.value?.querySelector(`[data-ai-message-id="${CSS.escape(t)}"]`)?.scrollIntoView({behavior:"smooth",block:"center"}),$&&clearTimeout($),$=setTimeout(()=>{P.value===t&&(P.value=null)},4e3)}async function W(t){await N(t.aiChatId,t.messageId)}function ie(){C++,h.startNewAIChat(A)&&(L.value?.clearDraft(),I.value=!1,Q(null))}async function me(t){try{await O.updateAIChatTitle(t.id,t.title);const o=w.value.find(y=>y.id===t.id);o&&(o.title=t.title)}catch(o){D.fail(_("ai.global.toast.renameFailed"),{description:String(o)})}}async function fe(t){try{await O.deleteAIChat(t),w.value=w.value.filter(o=>o.id!==t),v.value===t&&ie()}catch(o){D.fail(_("ai.global.toast.deleteFailed"),{description:String(o)})}}async function pe(t){const o=await h.sendMessage(A,t.content,{entityRefs:t.entityRefs,onAccepted:t.onAccepted});if(o.success){le(!0),await ne();return}if(o.reason!=="aborted"){if(o.reason==="no_config"){S.openSettings("ai","defaultModel");return}o.reason==="busy"&&D.warn(_("ai.global.toast.busy"))}}return K(ae,t=>{h.ensureGlobalState(t)}),K(v,(t,o)=>{t!==o&&(I.value||Q(t),t&&ne())}),K(v,async t=>{const o=++b;if(!t){R.value=0;return}try{const y=await O.estimateContextTokens(t);if(o!==b||v.value!==t)return;R.value=y.success?y.tokens:0}catch{if(o!==b||v.value!==t)return;R.value=0}},{immediate:!0}),K(()=>z.query.aiChatId,t=>{const o=typeof t=="string"?t:null;if(!(I.value||j.value)){if(!o){v.value&&h.startNewAIChat(A);return}o!==v.value&&N(o)}}),Ne(async()=>{if(h.selectAssistantForSession(A,De(ae.value)),await ne(),!M())return;const t=++C,o=typeof z.query.aiChatId=="string"?z.query.aiChatId:null;let y=o?await h.loadAIChat(A,o):!1;if(t!==C||!M())return;const l=w.value[0]?.id;!y&&l&&l!==o&&(y=await h.loadAIChat(A,l),t!==C||!M())||(y||h.startNewAIChat(A),M()&&(I.value=!1,await Q(v.value),M()&&(await ge(),M()&&le(!0))))}),Oe(()=>{q=!0,C++,b++,$&&clearTimeout($)}),(t,o)=>{const y=Ce;return c(),m("div",Ht,[u(at,{title:n(_)("ai.global.title"),description:n(_)("ai.global.subtitle"),icon:"i-heroicons-sparkles","icon-class":"bg-primary-600 text-white dark:bg-primary-500 dark:text-white",size:"compact"},{actions:E(()=>[i("button",{type:"button",class:"flex items-center gap-1 rounded-md px-1.5 py-1 text-xs text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-800 dark:hover:text-gray-200","aria-expanded":T.value,onClick:o[0]||(o[0]=l=>T.value=!0)},[u(y,{name:"i-lucide-brain",class:"h-3.5 w-3.5"}),i("span",null,d(n(_)("ai.global.memory.button")),1)],8,Kt),u(Qe,{"current-ai-chat-id":v.value,"current-messages":k.value,"fallback-title":n(_)("ai.global.title")},null,8,["current-ai-chat-id","current-messages","fallback-title"])]),_:1},8,["title","description"]),i("div",Jt,[u(We,{"session-id":"","active-id":v.value,conversations:w.value,loading:G.value,disabled:j.value,onSelect:N,onCreate:ie,onRename:me,onDelete:fe},null,8,["active-id","conversations","loading","disabled"]),i("section",Qt,[i("div",Wt,[i("div",{ref_key:"messagesContainer",ref:se,class:"absolute inset-0 overflow-y-auto px-5 py-6"},[I.value?(c(),m("div",Xt,[u(y,{name:"i-lucide-loader-2",class:"h-5 w-5 animate-spin text-gray-400"})])):k.value.length===0?(c(),m("div",Yt,[i("div",Zt,[u(y,{name:"i-heroicons-chat-bubble-left-right",class:"h-6 w-6"})]),i("h2",ea,d(n(_)("ai.global.empty.title")),1),i("p",ta,d(n(_)("ai.global.empty.description")),1)])):(c(),m("div",aa,[n(ce)?(c(),m("div",sa,[i("button",{type:"button",class:"flex h-8 items-center gap-1.5 rounded-full px-3 text-xs text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-800 dark:hover:text-gray-200",onClick:o[1]||(o[1]=(...l)=>n(Y)&&n(Y)(...l))},[u(y,{name:"i-heroicons-arrow-up",class:"h-3.5 w-3.5"}),B(" "+d(n(_)("ai.chat.history.loadEarlier")),1)])])):U("",!0),(c(!0),m(te,null,be(n(oe),l=>(c(),m(te,{key:l.id},[l.standalone?(c(),ee(he,{key:0,role:l.standalone.role,content:l.standalone.content,timestamp:l.standalone.timestamp},null,8,["role","content","timestamp"])):(c(),m("div",la,[l.user?(c(),ee(he,{key:0,role:l.user.role,"message-id":l.user.id,content:l.user.content,timestamp:l.user.timestamp,"entity-refs":l.user.entityRefs,highlighted:P.value===l.user.id},null,8,["role","message-id","content","timestamp","entity-refs","highlighted"])):U("",!0),l.assistant&&(l.assistant.content||l.assistant.contentBlocks?.length||!l.assistant.isStreaming)?(c(),ee(he,{key:1,role:l.assistant.role,"message-id":l.assistant.id,content:l.assistant.content,timestamp:l.assistant.timestamp,"is-streaming":l.assistant.isStreaming,"process-duration-ms":l.assistant.processDurationMs,"content-blocks":l.assistant.contentBlocks,"show-capture-button":!l.assistant.isStreaming,"active-tool":l.assistant.isStreaming?n(f).currentToolStatus:null,highlighted:P.value===l.assistant.id},null,8,["role","message-id","content","timestamp","is-streaming","process-duration-ms","content-blocks","show-capture-button","active-tool","highlighted"])):l.assistant?.isStreaming?(c(),ee(Xe,{key:2,"current-tool-status":n(f).currentToolStatus,"agent-status":n(f).agentStatus},null,8,["current-tool-status","agent-status"])):U("",!0)]))],64))),128))]))],512),u(Ge,{name:"fade-up"},{default:E(()=>[n(J)?(c(),m("button",{key:0,type:"button",class:"absolute bottom-4 left-1/2 z-10 flex -translate-x-1/2 items-center gap-1.5 rounded-full bg-gray-800/90 px-3 py-1.5 text-xs text-white shadow-lg backdrop-blur-sm hover:bg-gray-700 dark:bg-gray-700/90",onClick:o[2]||(o[2]=(...l)=>n(re)&&n(re)(...l))},[u(y,{name:"i-heroicons-arrow-down",class:"h-3.5 w-3.5"}),B(" "+d(n(_)("ai.chat.scrollToBottom")),1)])):U("",!0)]),_:1})]),i("div",oa,[i("div",na,[u(Ye,{ref_key:"chatInputRef",ref:L,embedded:"",disabled:j.value,status:j.value?"streaming":"ready","mention-scope":"global","skills-enabled":!1,placeholder:n(_)("ai.global.input.placeholder"),onSend:pe,onStop:o[3]||(o[3]=l=>n(h).stopGeneration(n(A)))},null,8,["disabled","status","placeholder"]),u(Ze,{class:"pb-1.5 pl-2 pr-[52px] pt-0.5","session-token-usage":n(f).sessionTokenUsage,"agent-status":n(f).agentStatus,"estimated-context-tokens":R.value},null,8,["session-token-usage","agent-status","estimated-context-tokens"])])])])]),u(Gt,{open:T.value,"onUpdate:open":o[4]||(o[4]=l=>T.value=l),onViewSource:W},null,8,["open"])])}}});export{Ca as default};
1
+ import{d as _e,a6 as ke,aF as we,L as ze,ap as Pe,K,al as Ee,o as c,f as ee,w as E,a as i,p as d,g as n,z as u,a8 as Ue,a9 as B,c as m,aq as je,a7 as Ce,F as te,j as be,n as qe,l as U,b as g,e as H,aa as Re,aD as Fe,ay as Be,J as Le,x as Ne,aG as De,C as ge,y as Oe,aE as Ge,aH as ye}from"./index-D9C3dyV8.js";import{_ as He,u as Ke,a as Je,b as Qe,c as We,d as he,e as Xe,f as Ye,g as Ze,h as et}from"./chatMessages-Dj1u-tFB.js";import{_ as tt}from"./Tabs-xVtuBuO0.js";import{u as Se}from"./useToast-Bmgpd3sl.js";import{P as at}from"./PageHeader-D5BcYKBs.js";import{u as st}from"./aiChat-CeJy-gG-.js";import"./vendor-snapdom--nZvo8Sg.js";import"./index-HjrJ3DXO.js";import"./service-DwCmXFtI.js";import"./EChartBar.vue_vue_type_script_setup_true_lang-BypaV5wc.js";import"./EChart.vue_vue_type_script_setup_true_lang-BcE0mE_N.js";import"./vendor-echarts-C9ugTmum.js";import"./vendor-zrender-D8psf1AA.js";import"./EChartLine.vue_vue_type_script_setup_true_lang-D8SyOfWC.js";import"./prompt-Cepfb-5-.js";import"./RovingFocusItem-Bqgmzo42.js";import"./chatlabSiteLocale-CrCNb8QP.js";const lt={class:"flex max-h-[78vh] min-h-[520px] flex-col overflow-hidden"},ot={class:"flex items-start justify-between border-b border-gray-200 px-5 py-4 dark:border-gray-800"},nt={class:"text-base font-semibold text-gray-900 dark:text-white"},it={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},rt={class:"flex min-h-0 flex-1 flex-col px-5 py-4"},ct={class:"mb-3 flex items-center justify-between gap-3"},ut={class:"flex items-center gap-2"},dt={class:"text-xs text-gray-400"},mt={key:0,class:"mb-3 rounded-xl border border-primary-200 bg-primary-50/40 p-3 dark:border-primary-900/70 dark:bg-primary-950/20"},ft={class:"mb-2 flex items-center justify-between gap-3"},pt={class:"text-xs font-medium text-gray-700 dark:text-gray-200"},vt={class:"truncate text-[11px] text-gray-400"},gt={key:0,class:"mb-3 space-y-2"},yt={class:"max-h-36 space-y-1 overflow-y-auto rounded-lg border border-gray-200 p-1 dark:border-gray-800"},ht={key:0,class:"flex h-20 items-center justify-center"},bt=["onClick"],xt={class:"truncate"},_t={class:"shrink-0 text-[10px] text-gray-400"},kt={key:2,class:"flex h-20 items-center justify-center text-xs text-gray-400"},wt={class:"mt-2 flex items-center justify-between gap-3"},Ct={class:"text-[11px] text-gray-400"},St={class:"flex items-center gap-2"},It={class:"min-h-0 flex-1 overflow-y-auto pr-1"},Tt={key:0,class:"flex h-full min-h-56 items-center justify-center"},At={key:1,class:"flex min-h-56 flex-col items-center justify-center text-center"},$t={class:"text-sm text-gray-500 dark:text-gray-400"},Mt={key:2,class:"space-y-2"},Vt={key:0,class:"mb-2 flex items-center gap-1.5 text-xs text-gray-500"},zt={class:"truncate"},Pt={key:1},Et={class:"mt-2 flex justify-end gap-2"},Ut={class:"whitespace-pre-wrap break-words text-sm leading-6 text-gray-800 dark:text-gray-200"},jt={class:"mt-2 flex items-center justify-between gap-3"},qt={class:"flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1 text-[11px] text-gray-400"},Rt={class:"flex shrink-0 items-center gap-0.5"},Ft={key:0,class:"mt-2 flex flex-wrap items-center justify-between gap-2 border-t border-gray-100 pt-2 text-[11px] dark:border-gray-800"},Bt={key:0,class:"text-amber-600 dark:text-amber-400"},Lt={key:1,class:"ml-auto text-gray-400 dark:text-gray-500"},Nt={class:"flex items-center justify-between border-t border-gray-200 px-5 py-3 dark:border-gray-800"},Dt={class:"flex items-center gap-2"},Ot=1500,Gt=_e({__name:"AIMemoryManagerModal",props:{open:{type:Boolean}},emits:["update:open","view-source"],setup(ue,{emit:_}){const ae=ue,z=_,{t:s,locale:D}=ke(),S=Se(),h=we(),O=ze(),A=Pe(),f=g("preferences"),k=g([]),j=g(new Map),v=g(!1),w=g(null),G=g(null),I=g(""),L=g(!1),q=g(""),C=g("contact"),b=g(null),$=g(""),M=g([]),R=g(!1);let T=null,P=null,F=0;const se=H(()=>[{label:s("ai.global.memory.preferences"),value:"preferences"},{label:s("ai.global.memory.self"),value:"self"},{label:s("ai.global.memory.entities"),value:"entities"}]),J=H(()=>k.value.filter(e=>f.value==="preferences"?e.scopeType==="global":f.value==="self"?e.scopeType==="self":e.scopeType==="contact"||e.scopeType==="group")),re=H(()=>[{label:s("ai.global.entityPicker.contacts"),value:"contact"},{label:s("ai.global.entityPicker.groups"),value:"group"}]),le=H(()=>{const e=$.value.trim().toLocaleLowerCase();return A.sessions.filter(a=>a.type==="group").filter(a=>!e||`${a.name} ${a.platform}`.toLocaleLowerCase().includes(e)).map(a=>({scopeType:"group",scopeId:a.id,label:a.name,detail:a.platform}))}),oe=H(()=>C.value==="contact"?M.value:le.value),ce=H(()=>f.value==="preferences"?s("ai.global.memory.preferences"):f.value==="self"?s("ai.global.memory.self"):b.value?.label??s("ai.global.memory.selectEntity")),Y=H(()=>q.value.trim().length>0&&q.value.trim().length<=2e3&&(f.value!=="entities"||b.value!==null));function Q(){z("update:open",!1)}function ne(e){G.value=e.id,I.value=e.content}function N(){G.value=null,I.value=""}function de(){N(),L.value=!0,q.value="",b.value=null,$.value="",f.value==="entities"&&C.value==="contact"&&t("")}function W(){L.value=!1,q.value="",b.value=null,$.value="",F++,R.value=!1,T&&(clearTimeout(T),T=null),o()}function ie(e){return new Intl.DateTimeFormat(D.value,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}).format(e)}function me(e){!e.sourceAIChatId||e.sourceStatus!=="conversation"&&e.sourceStatus!=="message"||(z("update:open",!1),z("view-source",{aiChatId:e.sourceAIChatId,messageId:e.sourceStatus==="message"?e.sourceMessageId:null}))}function fe(e){return e.scopeId?e.scopeType==="contact"?j.value.get(e.scopeId)??e.scopeId:A.sessions.find(a=>a.id===e.scopeId)?.name??e.scopeId:""}async function pe(e){const a=[...new Set(e.filter(x=>x.scopeType==="contact").map(x=>x.scopeId))].filter(x=>!!x),p=new Map,X=await Promise.allSettled(a.map(async x=>({key:x,detail:await O.getContactDetail(x,{acceptStale:!0})})));for(const x of X)x.status==="fulfilled"&&x.value.detail.contact&&p.set(x.value.key,x.value.detail.contact.displayName);j.value=p}async function t(e){const a=++F;R.value=!0;try{const p={acceptStale:!0,timeRangePreset:"all",page:1,pageSize:100,query:e.trim()||void 0},X=await Promise.all([O.getContacts({...p,pool:"friend"}),O.getContacts({...p,pool:"non_friend"})]);if(a!==F)return;const x=new Map;X.flatMap(V=>V.contacts).forEach(V=>x.set(V.key,V)),M.value=[...x.values()].map(V=>({scopeType:"contact",scopeId:V.key,label:V.displayName,detail:V.platformId})),y(X,e)}catch(p){if(a!==F)return;o(),M.value=[],S.fail(s("ai.global.entityPicker.loadFailed"),{description:String(p)})}finally{a===F&&(R.value=!1)}}function o(){P&&(clearTimeout(P),P=null)}function y(e,a){o(),!(!L.value||f.value!=="entities"||C.value!=="contact")&&e.some(p=>p.task?.status==="running")&&(P=setTimeout(()=>{P=null,t(a)},Ot))}function l(e){T&&clearTimeout(T),o(),F++,T=setTimeout(()=>{T=null,t(e)},200)}async function ve(){v.value=!0;try{const e=await h.getAIMemories();k.value=e,await Promise.all([A.loadSessions(),pe(e)])}catch(e){S.fail(s("ai.global.memory.toast.loadFailed"),{description:String(e)})}finally{v.value=!1}}async function Ie(e){if(I.value.trim()){w.value=e.id;try{const a=await h.updateAIMemory(e.id,I.value);k.value=k.value.map(p=>p.id===a.id?a:p),N(),S.success(s("ai.global.memory.toast.saved"))}catch(a){S.fail(s("ai.global.memory.toast.saveFailed"),{description:String(a)})}finally{w.value=null}}}async function Te(){if(Y.value){w.value="new";try{const e=f.value==="preferences"?{scopeType:"global",scopeId:null}:f.value==="self"?{scopeType:"self",scopeId:null}:{scopeType:b.value.scopeType,scopeId:b.value.scopeId},a=await h.createAIMemory({...e,content:q.value});k.value=[a,...k.value],a.scopeType==="contact"&&a.scopeId&&b.value&&(j.value=new Map(j.value).set(a.scopeId,b.value.label)),W(),S.success(s("ai.global.memory.toast.created"))}catch(e){S.fail(s("ai.global.memory.toast.createFailed"),{description:String(e)})}finally{w.value=null}}}async function Ae(e){if(confirm(s("ai.global.memory.confirmDelete"))){w.value=e.id;try{await h.deleteAIMemory(e.id),k.value=k.value.filter(a=>a.id!==e.id),G.value===e.id&&N(),S.success(s("ai.global.memory.toast.deleted"))}catch(a){S.fail(s("ai.global.memory.toast.deleteFailed"),{description:String(a)})}finally{w.value=null}}}async function $e(){const e=J.value;if(!(e.length===0||!confirm(s("ai.global.memory.confirmClearView")))){v.value=!0;try{f.value==="entities"?await Promise.all(e.map(a=>h.deleteAIMemory(a.id))):await h.clearAIMemories({scopeType:f.value==="preferences"?"global":"self",scopeId:null}),await ve(),S.success(s("ai.global.memory.toast.cleared"))}catch(a){await ve(),S.fail(s("ai.global.memory.toast.clearFailed"),{description:String(a)})}finally{v.value=!1}}}async function Me(){if(!(k.value.length===0||!confirm(s("ai.global.memory.confirmClearAll")))){v.value=!0;try{await h.clearAIMemories({all:!0}),k.value=[],j.value=new Map,N(),S.success(s("ai.global.memory.toast.cleared"))}catch(e){S.fail(s("ai.global.memory.toast.clearFailed"),{description:String(e)})}finally{v.value=!1}}}return K(()=>ae.open,e=>{e?ve():(N(),W())},{immediate:!0}),K(f,()=>W()),K(C,e=>{o(),F++,R.value=!1,b.value=null,$.value="",L.value&&f.value==="entities"&&e==="contact"&&t("")}),K($,e=>{b.value=null,L.value&&f.value==="entities"&&C.value==="contact"&&l(e)}),Ee(()=>{F++,T&&clearTimeout(T),o()}),(e,a)=>{const p=Ue,X=tt,x=je,V=Ce,xe=He,Ve=Re;return c(),ee(Ve,{open:ue.open,ui:{content:"sm:max-w-2xl"},"onUpdate:open":a[6]||(a[6]=r=>z("update:open",r))},{content:E(()=>[i("div",lt,[i("header",ot,[i("div",null,[i("h2",nt,d(n(s)("ai.global.memory.title")),1),i("p",it,d(n(s)("ai.global.memory.description")),1)]),u(p,{icon:"i-lucide-x",color:"neutral",variant:"ghost",size:"sm","aria-label":n(s)("common.close"),onClick:Q},null,8,["aria-label"])]),i("div",rt,[i("div",ct,[u(X,{modelValue:f.value,"onUpdate:modelValue":a[0]||(a[0]=r=>f.value=r),items:se.value,content:!1,size:"sm",class:"min-w-max"},null,8,["modelValue","items"]),i("div",ut,[i("span",dt,d(n(s)("ai.global.memory.count",{count:J.value.length})),1),u(p,{icon:"i-lucide-plus",color:"primary",variant:"soft",size:"xs",disabled:v.value,onClick:a[1]||(a[1]=r=>L.value?W():de())},{default:E(()=>[B(d(n(s)("ai.global.memory.add")),1)]),_:1},8,["disabled"])])]),L.value?(c(),m("div",mt,[i("div",ft,[i("span",pt,d(n(s)("ai.global.memory.createTitle")),1),i("span",vt,d(n(s)("ai.global.memory.scopeLabel",{scope:ce.value})),1)]),f.value==="entities"?(c(),m("div",gt,[u(X,{modelValue:C.value,"onUpdate:modelValue":a[2]||(a[2]=r=>C.value=r),items:re.value,content:!1,size:"xs"},null,8,["modelValue","items"]),u(x,{modelValue:$.value,"onUpdate:modelValue":a[3]||(a[3]=r=>$.value=r),icon:"i-lucide-search",size:"sm",placeholder:n(s)("ai.global.entityPicker.search")},null,8,["modelValue","placeholder"]),i("div",yt,[R.value?(c(),m("div",ht,[u(V,{name:"i-lucide-loader-2",class:"h-4 w-4 animate-spin text-gray-400"})])):(c(!0),m(te,{key:1},be(oe.value,r=>(c(),m("button",{key:`${r.scopeType}:${r.scopeId}`,type:"button",class:qe(["flex w-full items-center justify-between gap-3 rounded-md px-2.5 py-2 text-left text-xs transition-colors",b.value?.scopeId===r.scopeId&&b.value.scopeType===r.scopeType?"bg-primary-100 text-primary-700 dark:bg-primary-900/50 dark:text-primary-200":"hover:bg-gray-100 dark:hover:bg-gray-800"]),onClick:Z=>b.value=r},[i("span",xt,d(r.label),1),i("span",_t,d(r.detail),1)],10,bt))),128)),!R.value&&oe.value.length===0?(c(),m("p",kt,d(n(s)("ai.global.entityPicker.empty")),1)):U("",!0)])])):U("",!0),u(xe,{modelValue:q.value,"onUpdate:modelValue":a[4]||(a[4]=r=>q.value=r),rows:3,maxlength:2e3,autoresize:"",class:"w-full",placeholder:n(s)("ai.global.memory.contentPlaceholder")},null,8,["modelValue","placeholder"]),i("div",wt,[i("span",Ct,d(q.value.trim().length)+" / 2000",1),i("div",St,[u(p,{color:"neutral",variant:"ghost",size:"xs",onClick:W},{default:E(()=>[B(d(n(s)("common.cancel")),1)]),_:1}),u(p,{size:"xs",loading:w.value==="new",disabled:!Y.value,onClick:Te},{default:E(()=>[B(d(n(s)("common.save")),1)]),_:1},8,["loading","disabled"])])])])):U("",!0),i("div",It,[v.value?(c(),m("div",Tt,[u(V,{name:"i-lucide-loader-2",class:"h-5 w-5 animate-spin text-gray-400"})])):J.value.length===0?(c(),m("div",At,[u(V,{name:"i-lucide-brain",class:"mb-3 h-8 w-8 text-gray-300 dark:text-gray-600"}),i("p",$t,d(n(s)("ai.global.memory.empty")),1)])):(c(),m("div",Mt,[(c(!0),m(te,null,be(J.value,r=>(c(),m("article",{key:r.id,class:"rounded-xl border border-gray-200 px-4 py-3 dark:border-gray-800"},[r.scopeType==="contact"||r.scopeType==="group"?(c(),m("div",Vt,[u(V,{name:r.scopeType==="contact"?"i-lucide-user-round":"i-lucide-users-round",class:"h-3.5 w-3.5"},null,8,["name"]),i("span",zt,d(fe(r)),1)])):U("",!0),G.value===r.id?(c(),m("div",Pt,[u(xe,{modelValue:I.value,"onUpdate:modelValue":a[5]||(a[5]=Z=>I.value=Z),rows:3,autoresize:"",class:"w-full"},null,8,["modelValue"]),i("div",Et,[u(p,{color:"neutral",variant:"ghost",size:"xs",onClick:N},{default:E(()=>[B(d(n(s)("common.cancel")),1)]),_:1}),u(p,{size:"xs",loading:w.value===r.id,disabled:!I.value.trim(),onClick:Z=>Ie(r)},{default:E(()=>[B(d(n(s)("common.save")),1)]),_:1},8,["loading","disabled","onClick"])])])):(c(),m(te,{key:2},[i("p",Ut,d(r.content),1),i("div",jt,[i("div",qt,[i("span",null,d(n(s)(`ai.global.memory.source.${r.sourceType}`)),1),a[8]||(a[8]=i("span",{"aria-hidden":"true"},"·",-1)),i("span",null,d(n(s)("ai.global.memory.createdAt",{time:ie(r.createdAt)})),1),r.updatedAt!==r.createdAt?(c(),m(te,{key:0},[a[7]||(a[7]=i("span",{"aria-hidden":"true"},"·",-1)),i("span",null,d(n(s)("ai.global.memory.updatedAt",{time:ie(r.updatedAt)})),1)],64)):U("",!0)]),i("div",Rt,[u(p,{icon:"i-lucide-pencil",color:"neutral",variant:"ghost",size:"xs","aria-label":n(s)("common.edit"),onClick:Z=>ne(r)},null,8,["aria-label","onClick"]),u(p,{icon:"i-lucide-trash-2",color:"error",variant:"ghost",size:"xs",loading:w.value===r.id,"aria-label":n(s)("common.delete"),onClick:Z=>Ae(r)},null,8,["loading","aria-label","onClick"])])]),r.sourceType==="ai"||r.sourceStatus!=="none"?(c(),m("div",Ft,[r.sourceType==="ai"?(c(),m("span",Bt,d(n(s)("ai.global.memory.aiSourceWarning")),1)):U("",!0),r.sourceStatus==="unavailable"?(c(),m("span",Lt,d(n(s)("ai.global.memory.sourceUnavailable")),1)):r.sourceStatus==="conversation"||r.sourceStatus==="message"?(c(),ee(p,{key:2,class:"ml-auto",icon:"i-lucide-external-link",color:"neutral",variant:"ghost",size:"xs",onClick:Z=>me(r)},{default:E(()=>[B(d(n(s)("ai.global.memory.viewSource")),1)]),_:1},8,["onClick"])):U("",!0)])):U("",!0)],64))]))),128))]))])]),i("footer",Nt,[u(p,{color:"error",variant:"ghost",size:"sm",disabled:J.value.length===0||v.value,onClick:$e},{default:E(()=>[B(d(n(s)("ai.global.memory.clearCurrent")),1)]),_:1},8,["disabled"]),i("div",Dt,[u(p,{color:"error",variant:"soft",size:"sm",disabled:k.value.length===0||v.value,onClick:Me},{default:E(()=>[B(d(n(s)("ai.global.memory.clearAll")),1)]),_:1},8,["disabled"]),u(p,{color:"neutral",variant:"outline",size:"sm",onClick:Q},{default:E(()=>[B(d(n(s)("common.close")),1)]),_:1})])])])]),_:1},8,["open"])}}}),Ht={class:"flex h-full min-w-0 flex-col dark:bg-page-dark",style:{"padding-top":"var(--titlebar-area-height)"}},Kt=["aria-expanded"],Jt={class:"main-content flex min-h-0 flex-1 overflow-hidden"},Qt={class:"flex h-full min-w-0 flex-1 flex-col overflow-hidden"},Wt={class:"relative min-h-0 flex-1"},Xt={key:0,class:"flex h-full items-center justify-center"},Yt={key:1,class:"mx-auto flex h-full max-w-lg flex-col items-center justify-center pb-16 text-center"},Zt={class:"mb-4 flex h-12 w-12 items-center justify-center rounded-2xl bg-primary-50 text-primary-500 dark:bg-primary-500/10 dark:text-primary-300"},ea={class:"text-base text-gray-800 dark:text-gray-100"},ta={class:"mt-2 text-sm leading-6 text-gray-500 dark:text-gray-400"},aa={key:2,class:"mx-auto max-w-3xl space-y-4"},sa={key:0,class:"flex justify-center pb-2"},la={key:1,class:"qa-pair space-y-6 pb-4"},oa={class:"shrink-0 px-4 pb-4"},na={class:"relative mx-auto max-w-3xl overflow-visible rounded-2xl bg-white shadow-[0_2px_14px_rgba(0,0,0,0.04)] ring-1 ring-gray-200/60 transition-all focus-within:ring-primary-500/40 focus-within:shadow-[0_4px_20px_rgba(0,0,0,0.08)] dark:bg-page-dark dark:ring-white/5"},Ca=_e({__name:"index",setup(ue){const{t:_,locale:ae}=ke(),z=Fe(),s=Be(),D=Se(),S=Le(),h=st(),O=we(),{chatKey:A,state:f}=h.ensureGlobalState(ae.value),k=ye(f,"messages"),j=ye(f,"isAIThinking"),v=ye(f,"currentAIChatId"),w=g([]),G=g(!1),I=g(!0),L=g(null);let q=!1,C=0,b=0,$=null;function M(){return!q&&z.name==="global-ai"}const R=g(0),T=g(!1),P=g(null),F=H(()=>et(k.value)),{messagesContainer:se,showScrollToBottom:J,handleScrollToBottom:re,scrollToBottom:le}=Ke(k,j),{visiblePairs:oe,hasOlderPairs:ce,loadOlderPairs:Y}=Je(F,v,se);async function Q(t){!M()||(typeof z.query.aiChatId=="string"?z.query.aiChatId:null)===t||await s.replace({query:{...z.query,aiChatId:t||void 0}})}async function ne(){G.value=!0;try{w.value=await O.getGlobalAIChats()}catch(t){D.fail(_("ai.global.toast.loadFailed"),{description:String(t)})}finally{G.value=!1}}async function N(t,o=null){const y=++C,l=await h.loadAIChat(A,t);if(!(y!==C||!M())){if(!l){D.fail(_("ai.global.toast.loadFailed"));return}I.value=!1,await Q(t),!(y!==C||!M())&&(await ge(),o?await de(o):(P.value=null,le(!0)))}}async function de(t){if(!F.value.some(l=>l.user?.id===t||l.assistant?.id===t||l.standalone?.id===t)){D.warn(_("ai.global.memory.sourceUnavailable"));return}for(;ce.value&&!oe.value.some(l=>l.user?.id===t||l.assistant?.id===t||l.standalone?.id===t);)await Y();P.value=t,await ge(),se.value?.querySelector(`[data-ai-message-id="${CSS.escape(t)}"]`)?.scrollIntoView({behavior:"smooth",block:"center"}),$&&clearTimeout($),$=setTimeout(()=>{P.value===t&&(P.value=null)},4e3)}async function W(t){await N(t.aiChatId,t.messageId)}function ie(){C++,h.startNewAIChat(A)&&(L.value?.clearDraft(),I.value=!1,Q(null))}async function me(t){try{await O.updateAIChatTitle(t.id,t.title);const o=w.value.find(y=>y.id===t.id);o&&(o.title=t.title)}catch(o){D.fail(_("ai.global.toast.renameFailed"),{description:String(o)})}}async function fe(t){try{await O.deleteAIChat(t),w.value=w.value.filter(o=>o.id!==t),v.value===t&&ie()}catch(o){D.fail(_("ai.global.toast.deleteFailed"),{description:String(o)})}}async function pe(t){const o=await h.sendMessage(A,t.content,{entityRefs:t.entityRefs,onAccepted:t.onAccepted});if(o.success){le(!0),await ne();return}if(o.reason!=="aborted"){if(o.reason==="no_config"){S.openSettings("ai","defaultModel");return}o.reason==="busy"&&D.warn(_("ai.global.toast.busy"))}}return K(ae,t=>{h.ensureGlobalState(t)}),K(v,(t,o)=>{t!==o&&(I.value||Q(t),t&&ne())}),K(v,async t=>{const o=++b;if(!t){R.value=0;return}try{const y=await O.estimateContextTokens(t);if(o!==b||v.value!==t)return;R.value=y.success?y.tokens:0}catch{if(o!==b||v.value!==t)return;R.value=0}},{immediate:!0}),K(()=>z.query.aiChatId,t=>{const o=typeof t=="string"?t:null;if(!(I.value||j.value)){if(!o){v.value&&h.startNewAIChat(A);return}o!==v.value&&N(o)}}),Ne(async()=>{if(h.selectAssistantForSession(A,De(ae.value)),await ne(),!M())return;const t=++C,o=typeof z.query.aiChatId=="string"?z.query.aiChatId:null;let y=o?await h.loadAIChat(A,o):!1;if(t!==C||!M())return;const l=w.value[0]?.id;!y&&l&&l!==o&&(y=await h.loadAIChat(A,l),t!==C||!M())||(y||h.startNewAIChat(A),M()&&(I.value=!1,await Q(v.value),M()&&(await ge(),M()&&le(!0))))}),Oe(()=>{q=!0,C++,b++,$&&clearTimeout($)}),(t,o)=>{const y=Ce;return c(),m("div",Ht,[u(at,{title:n(_)("ai.global.title"),description:n(_)("ai.global.subtitle"),icon:"i-heroicons-sparkles","icon-class":"bg-primary-600 text-white dark:bg-primary-500 dark:text-white",size:"compact"},{actions:E(()=>[i("button",{type:"button",class:"flex items-center gap-1 rounded-md px-1.5 py-1 text-xs text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-800 dark:hover:text-gray-200","aria-expanded":T.value,onClick:o[0]||(o[0]=l=>T.value=!0)},[u(y,{name:"i-lucide-brain",class:"h-3.5 w-3.5"}),i("span",null,d(n(_)("ai.global.memory.button")),1)],8,Kt),u(Qe,{"current-ai-chat-id":v.value,"current-messages":k.value,"fallback-title":n(_)("ai.global.title")},null,8,["current-ai-chat-id","current-messages","fallback-title"])]),_:1},8,["title","description"]),i("div",Jt,[u(We,{"session-id":"","active-id":v.value,conversations:w.value,loading:G.value,disabled:j.value,onSelect:N,onCreate:ie,onRename:me,onDelete:fe},null,8,["active-id","conversations","loading","disabled"]),i("section",Qt,[i("div",Wt,[i("div",{ref_key:"messagesContainer",ref:se,class:"absolute inset-0 overflow-y-auto px-5 py-6"},[I.value?(c(),m("div",Xt,[u(y,{name:"i-lucide-loader-2",class:"h-5 w-5 animate-spin text-gray-400"})])):k.value.length===0?(c(),m("div",Yt,[i("div",Zt,[u(y,{name:"i-heroicons-chat-bubble-left-right",class:"h-6 w-6"})]),i("h2",ea,d(n(_)("ai.global.empty.title")),1),i("p",ta,d(n(_)("ai.global.empty.description")),1)])):(c(),m("div",aa,[n(ce)?(c(),m("div",sa,[i("button",{type:"button",class:"flex h-8 items-center gap-1.5 rounded-full px-3 text-xs text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-800 dark:hover:text-gray-200",onClick:o[1]||(o[1]=(...l)=>n(Y)&&n(Y)(...l))},[u(y,{name:"i-heroicons-arrow-up",class:"h-3.5 w-3.5"}),B(" "+d(n(_)("ai.chat.history.loadEarlier")),1)])])):U("",!0),(c(!0),m(te,null,be(n(oe),l=>(c(),m(te,{key:l.id},[l.standalone?(c(),ee(he,{key:0,role:l.standalone.role,content:l.standalone.content,timestamp:l.standalone.timestamp},null,8,["role","content","timestamp"])):(c(),m("div",la,[l.user?(c(),ee(he,{key:0,role:l.user.role,"message-id":l.user.id,content:l.user.content,timestamp:l.user.timestamp,"entity-refs":l.user.entityRefs,highlighted:P.value===l.user.id},null,8,["role","message-id","content","timestamp","entity-refs","highlighted"])):U("",!0),l.assistant&&(l.assistant.content||l.assistant.contentBlocks?.length||!l.assistant.isStreaming)?(c(),ee(he,{key:1,role:l.assistant.role,"message-id":l.assistant.id,content:l.assistant.content,timestamp:l.assistant.timestamp,"is-streaming":l.assistant.isStreaming,"process-duration-ms":l.assistant.processDurationMs,"content-blocks":l.assistant.contentBlocks,"show-capture-button":!l.assistant.isStreaming,"active-tool":l.assistant.isStreaming?n(f).currentToolStatus:null,highlighted:P.value===l.assistant.id},null,8,["role","message-id","content","timestamp","is-streaming","process-duration-ms","content-blocks","show-capture-button","active-tool","highlighted"])):l.assistant?.isStreaming?(c(),ee(Xe,{key:2,"current-tool-status":n(f).currentToolStatus,"agent-status":n(f).agentStatus},null,8,["current-tool-status","agent-status"])):U("",!0)]))],64))),128))]))],512),u(Ge,{name:"fade-up"},{default:E(()=>[n(J)?(c(),m("button",{key:0,type:"button",class:"absolute bottom-4 left-1/2 z-10 flex -translate-x-1/2 items-center gap-1.5 rounded-full bg-gray-800/90 px-3 py-1.5 text-xs text-white shadow-lg backdrop-blur-sm hover:bg-gray-700 dark:bg-gray-700/90",onClick:o[2]||(o[2]=(...l)=>n(re)&&n(re)(...l))},[u(y,{name:"i-heroicons-arrow-down",class:"h-3.5 w-3.5"}),B(" "+d(n(_)("ai.chat.scrollToBottom")),1)])):U("",!0)]),_:1})]),i("div",oa,[i("div",na,[u(Ye,{ref_key:"chatInputRef",ref:L,embedded:"",disabled:j.value,status:j.value?"streaming":"ready","mention-scope":"global","skills-enabled":!1,placeholder:n(_)("ai.global.input.placeholder"),onSend:pe,onStop:o[3]||(o[3]=l=>n(h).stopGeneration(n(A)))},null,8,["disabled","status","placeholder"]),u(Ze,{class:"pb-1.5 pl-2 pr-[52px] pt-0.5","session-token-usage":n(f).sessionTokenUsage,"agent-status":n(f).agentStatus,"estimated-context-tokens":R.value},null,8,["session-token-usage","agent-status","estimated-context-tokens"])])])])]),u(Gt,{open:T.value,"onUpdate:open":o[4]||(o[4]=l=>T.value=l),onViewSource:W},null,8,["open"])])}}});export{Ca as default};
@@ -0,0 +1 @@
1
+ .tab-slide-enter-active[data-v-223aca33]{transition:opacity .2s ease,transform .2s ease}.tab-slide-enter-from[data-v-223aca33]{opacity:0;transform:translateY(10px)}
@@ -1 +1 @@
1
- .fade-enter-active[data-v-8da082e6],.fade-leave-active[data-v-8da082e6]{transition:opacity .15s ease}.fade-enter-from[data-v-8da082e6],.fade-leave-to[data-v-8da082e6]{opacity:0}.tab-slide-enter-active[data-v-b0a4ab03]{transition:opacity .2s ease,transform .2s ease}.tab-slide-enter-from[data-v-b0a4ab03]{opacity:0;transform:translateY(10px)}
1
+ .fade-enter-active[data-v-8da082e6],.fade-leave-active[data-v-8da082e6]{transition:opacity .15s ease}.fade-enter-from[data-v-8da082e6],.fade-leave-to[data-v-8da082e6]{opacity:0}.tab-slide-enter-active[data-v-021279bd]{transition:opacity .2s ease,transform .2s ease}.tab-slide-enter-from[data-v-021279bd]{opacity:0;transform:translateY(10px)}
@@ -1 +1 @@
1
- import{d as a,a6 as n,o,c,a as e,z as r,a7 as i,p as m,g as p}from"./index-DnpnIyle.js";import"./vendor-snapdom--nZvo8Sg.js";const _={class:"flex min-h-0 flex-1 items-center justify-center px-6 py-12"},l={class:"text-center text-sm text-gray-500 dark:text-gray-400"},h=a({__name:"index",setup(d){const{t}=n();return(x,u)=>{const s=i;return o(),c("main",_,[e("div",l,[r(s,{name:"i-lucide-git-compare-arrows",class:"mx-auto mb-3 h-8 w-8 text-pink-500"}),e("p",null,m(p(t)("insight.reserved")),1)])])}}});export{h as default};
1
+ import{d as a,a6 as n,o,c,a as e,z as r,a7 as i,p as m,g as p}from"./index-D9C3dyV8.js";import"./vendor-snapdom--nZvo8Sg.js";const _={class:"flex min-h-0 flex-1 items-center justify-center px-6 py-12"},l={class:"text-center text-sm text-gray-500 dark:text-gray-400"},h=a({__name:"index",setup(d){const{t}=n();return(x,u)=>{const s=i;return o(),c("main",_,[e("div",l,[r(s,{name:"i-lucide-git-compare-arrows",class:"mx-auto mb-3 h-8 w-8 text-pink-500"}),e("p",null,m(p(t)("insight.reserved")),1)])])}}});export{h as default};