chatlab-cli 0.35.0 → 0.36.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/README.md +7 -7
  2. package/dist/{chat-command-24RYGJAS.mjs → chat-command-XPJ43KSW.mjs} +11 -11
  3. package/dist/chat-command-XPJ43KSW.mjs.map +1 -0
  4. package/dist/{chunk-7IGBPZMI.mjs → chunk-2JPFBIAG.mjs} +268 -76
  5. package/dist/chunk-2JPFBIAG.mjs.map +1 -0
  6. package/dist/{chunk-GQMCDWZQ.mjs → chunk-5MJO4AJB.mjs} +2 -2
  7. package/dist/{chunk-QKEARRFH.mjs → chunk-67HNPYZJ.mjs} +3 -3
  8. package/dist/{chunk-U36TQMAF.mjs → chunk-6QP47LID.mjs} +2 -2
  9. package/dist/{chunk-4GWWKHWA.mjs → chunk-FJOGBUXU.mjs} +892 -6990
  10. package/dist/chunk-FJOGBUXU.mjs.map +1 -0
  11. package/dist/{chunk-KIMJXKZO.mjs → chunk-JOVL7OTW.mjs} +2 -2
  12. package/dist/{chunk-ZBPPLXM4.mjs → chunk-L7TIIVAY.mjs} +63 -63
  13. package/dist/chunk-L7TIIVAY.mjs.map +1 -0
  14. package/dist/{chunk-DC7IUDNV.mjs → chunk-NFTCEJBJ.mjs} +27 -9
  15. package/dist/chunk-NFTCEJBJ.mjs.map +1 -0
  16. package/dist/{chunk-KXDJ7N6N.mjs → chunk-NQHZPSW2.mjs} +2 -2
  17. package/dist/chunk-Q3NEL2KK.mjs +19126 -0
  18. package/dist/chunk-Q3NEL2KK.mjs.map +1 -0
  19. package/dist/{chunk-DEFEU567.mjs → chunk-R73XMAB2.mjs} +13 -11
  20. package/dist/chunk-R73XMAB2.mjs.map +1 -0
  21. package/dist/{chunk-BRZ6YIBR.mjs → chunk-X2QBH24F.mjs} +8 -3
  22. package/dist/chunk-X2QBH24F.mjs.map +1 -0
  23. package/dist/chunk-YKMQLAVP.mjs +25 -0
  24. package/dist/chunk-YKMQLAVP.mjs.map +1 -0
  25. package/dist/cli.mjs +10 -10
  26. package/dist/contacts-worker.mjs +2 -2
  27. package/dist/global-insight-worker.mjs +136 -4
  28. package/dist/global-insight-worker.mjs.map +1 -1
  29. package/dist/{http-3K4YMWDE.mjs → http-5RVY5J5U.mjs} +13 -13
  30. package/dist/{import-D4LV565A.mjs → import-ILTWVHKU.mjs} +8 -8
  31. package/dist/index.mjs +13 -13
  32. package/dist/{mcp-KL22FKQ2.mjs → mcp-Y2YXOFB4.mjs} +9 -9
  33. package/dist/people-relationships-worker.mjs +2 -2
  34. package/dist/semantic-index-worker.mjs +1 -1
  35. package/dist/{service-KZTHBDQ5.mjs → service-ZAHXRSFD.mjs} +6 -6
  36. package/dist/service-ZAHXRSFD.mjs.map +1 -0
  37. package/dist/{src-COIB6Z4P.mjs → src-OV5ZNE3Z.mjs} +124 -98
  38. package/dist/{stream-import-FSXCFG4M.mjs → stream-import-XOUM3Z5W.mjs} +8 -8
  39. package/dist/{undici-MU5I3L6Q.mjs → undici-UGXDRJLV.mjs} +193 -193
  40. package/dist/undici-UGXDRJLV.mjs.map +1 -0
  41. package/dist/{update-checker-3N7HQEP2.mjs → update-checker-UL2FBLXH.mjs} +3 -5
  42. package/dist/{update-checker-3N7HQEP2.mjs.map → update-checker-UL2FBLXH.mjs.map} +1 -1
  43. package/dist/{worker-runtime-DPS2LURI.mjs → worker-runtime-JNGURHDM.mjs} +6 -6
  44. package/dist-cli-web/assets/AISettingsTab-vvjijrc5.js +1 -0
  45. package/dist-cli-web/assets/{AboutTab-DMPziKjj.js → AboutTab-CxI8zJNz.js} +1 -1
  46. package/dist-cli-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang-w0hHEodr.js +110 -0
  47. package/dist-cli-web/assets/Alert-_MYcI_E2.js +1 -0
  48. package/dist-cli-web/assets/ApiSettingsTab-CK7U6dVA.js +2 -0
  49. package/dist-cli-web/assets/BatchManageTab-1WnEqqpB.js +1 -0
  50. package/dist-cli-web/assets/{BufferResource-BXSJADxx.js → BufferResource-i64DlwQT.js} +1 -1
  51. package/dist-cli-web/assets/{CanvasRenderer-Cq--8UQ_.js → CanvasRenderer-B76mEt9A.js} +1 -1
  52. package/dist-cli-web/assets/ChatRecordDrawer-Bp6OSCrz.js +1 -0
  53. package/dist-cli-web/assets/ChatRecordWorkspace-CyfPIlIy.js +11 -0
  54. package/dist-cli-web/assets/ChatRecordWorkspace-D_oJMtqh.css +1 -0
  55. package/dist-cli-web/assets/Checkbox-Ci7IeRw1.js +1 -0
  56. package/dist-cli-web/assets/DataDirCleanupNotice-Dh63pOLt.js +1 -0
  57. package/dist-cli-web/assets/DatePicker.vue_vue_type_script_setup_true_lang-DqNBNa1D.js +1 -0
  58. package/dist-cli-web/assets/DebugToolsPanel-CbNsD9co.js +1 -0
  59. package/dist-cli-web/assets/EChart.vue_vue_type_script_setup_true_lang-YeqmodwE.js +1 -0
  60. package/dist-cli-web/assets/EChartBar.vue_vue_type_script_setup_true_lang-C3pZmq0v.js +1 -0
  61. package/dist-cli-web/assets/EChartLine.vue_vue_type_script_setup_true_lang-Co6olfwv.js +1 -0
  62. package/dist-cli-web/assets/{EChartWordcloud-KV0MdsDE.js → EChartWordcloud-rDusZwSq.js} +1 -1
  63. package/dist-cli-web/assets/{Filter-DVaqcFmI.js → Filter-yxkeHO78.js} +1 -1
  64. package/dist-cli-web/assets/GlobalTaskBar-BlZ-fFiq.js +1 -0
  65. package/dist-cli-web/assets/GroupRelationshipGalaxyView-BXQBX0zJ.js +1 -0
  66. package/dist-cli-web/assets/Label-CFAZFBQX.js +1 -0
  67. package/dist-cli-web/assets/LoadingState.vue_vue_type_script_setup_true_lang-CwgpqtMZ.js +1 -0
  68. package/dist-cli-web/assets/MessageExportModal-DU71grc7.js +1 -0
  69. package/dist-cli-web/assets/PageHeader-BDPf4NuI.js +1 -0
  70. package/dist-cli-web/assets/PageTabs.vue_vue_type_script_setup_true_lang-_j82asQU.js +1 -0
  71. package/dist-cli-web/assets/{RelationshipGalaxyCanvas-6EamagxG.js → RelationshipGalaxyCanvas-BODk18aA.js} +14 -14
  72. package/dist-cli-web/assets/RelationshipGalaxyThreeCanvas-BJyuRiC-.js +4168 -0
  73. package/dist-cli-web/assets/RelationshipGalaxyThreeCanvas-CCasBcBQ.css +1 -0
  74. package/dist-cli-web/assets/{RenderTargetSystem-mYuj4uBS.js → RenderTargetSystem-CVMvAUSv.js} +1 -1
  75. package/dist-cli-web/assets/RovingFocusItem-DC_06OmN.js +1 -0
  76. package/dist-cli-web/assets/ScreenCaptureModal-DrBFDOtC.js +1 -0
  77. package/dist-cli-web/assets/SectionTabs.vue_vue_type_script_setup_true_lang-C-Zj2biH.js +1 -0
  78. package/dist-cli-web/assets/Select-DLK2LYhO.js +1 -0
  79. package/dist-cli-web/assets/SettingsModal-BFkxzo0Y.css +1 -0
  80. package/dist-cli-web/assets/SettingsModal-DqaR4Dx5.js +2 -0
  81. package/dist-cli-web/assets/StorageTab-B0ebN0f8.js +1 -0
  82. package/dist-cli-web/assets/Switch-CokhQWxm.js +1 -0
  83. package/dist-cli-web/assets/Tabs-D1UiZNaZ.js +1 -0
  84. package/dist-cli-web/assets/Tabs-N3Q-Mpqi.js +1 -0
  85. package/dist-cli-web/assets/{ThemeCard.vue_vue_type_script_setup_true_lang-DPIvbq75.js → ThemeCard.vue_vue_type_script_setup_true_lang-OT-I0mbU.js} +1 -1
  86. package/dist-cli-web/assets/TimeSelect.vue_vue_type_script_setup_true_lang-Ccunouyf.js +1 -0
  87. package/dist-cli-web/assets/{VisuallyHiddenInput-BOdkR_GC.js → VisuallyHiddenInput-OAJEt_Y5.js} +1 -1
  88. package/dist-cli-web/assets/{WebGLRenderer-BB8ukBI_.js → WebGLRenderer-DuUeftYD.js} +1 -1
  89. package/dist-cli-web/assets/{WebGPURenderer-DDOzF1Kc.js → WebGPURenderer-DoWQxiWZ.js} +1 -1
  90. package/dist-cli-web/assets/aiChat-CdADfRnU.js +8 -0
  91. package/dist-cli-web/assets/{browserAll-BRqlnNxq.js → browserAll-Cb-mtR2y.js} +1 -1
  92. package/dist-cli-web/assets/{cli-web-ClAJ6Tao.js → cli-web-BHQCZLLg.js} +1 -1
  93. package/dist-cli-web/assets/{fetch-LY-yerw1.js → fetch-AvsnJLWJ.js} +1 -1
  94. package/dist-cli-web/assets/{fetch-Dy38lkAa.js → fetch-B-6tyYWu.js} +1 -1
  95. package/dist-cli-web/assets/{fetch-Bcy2T8Fe.js → fetch-B4PYy5JS.js} +1 -1
  96. package/dist-cli-web/assets/{fetch-DWAIk_6_.js → fetch-BbcFaCRB.js} +1 -1
  97. package/dist-cli-web/assets/fetch-BkA_so1e.js +1 -0
  98. package/dist-cli-web/assets/{fetch-q480XYZQ.js → fetch-BzXuAaT3.js} +8 -5
  99. package/dist-cli-web/assets/fetch-CW2fKvGp.js +1 -0
  100. package/dist-cli-web/assets/{fetch-DijSOvop.js → fetch-DEub4tOo.js} +1 -1
  101. package/dist-cli-web/assets/{fetch-CGu53cxT.js → fetch-DLTlYnDB.js} +1 -1
  102. package/dist-cli-web/assets/fetch-Qs38Hx1V.js +1 -0
  103. package/dist-cli-web/assets/{fetch-CP1afnT0.js → fetch-sYDJ-Zs8.js} +1 -1
  104. package/dist-cli-web/assets/{fetch-DzKlTaLz.js → fetch-ul8-uQIb.js} +1 -1
  105. package/dist-cli-web/assets/host-B6SQ6OGo.js +1 -0
  106. package/dist-cli-web/assets/host-DYIkQqvY.js +1 -0
  107. package/dist-cli-web/assets/{index-Di6FmCdk.js → index--IEkRjKe.js} +10 -10
  108. package/dist-cli-web/assets/index-9iaY_EWG.js +1 -0
  109. package/dist-cli-web/assets/index-B4J99zv3.css +1 -0
  110. package/dist-cli-web/assets/index-BBeqtL8d.css +1 -0
  111. package/dist-cli-web/assets/index-BnaLj2dx.css +1 -0
  112. package/dist-cli-web/assets/index-C7omDgiJ.js +2 -0
  113. package/dist-cli-web/assets/index-CHsM84U1.js +2 -0
  114. package/dist-cli-web/assets/index-CL8u01Pf.js +137 -0
  115. package/dist-cli-web/assets/{index-CNzv7aBW.js → index-CShh95fU.js} +1 -1
  116. package/dist-cli-web/assets/index-C_OS8Y8W.js +1 -0
  117. package/dist-cli-web/assets/{index-BRV_D8dv.js → index-D64XYYts.js} +1 -1
  118. package/dist-cli-web/assets/index-DrCc8p_I.css +1 -0
  119. package/dist-cli-web/assets/index-Dz_ddyZS.css +1 -0
  120. package/dist-cli-web/assets/index-UpTe1KzQ.js +1 -0
  121. package/dist-cli-web/assets/index-a8Hw6eD8.js +1 -0
  122. package/dist-cli-web/assets/index-jwjzZNKm.js +1 -0
  123. package/dist-cli-web/assets/index-pkxlF8Ee.js +1 -0
  124. package/dist-cli-web/assets/index-sWxuTsa7.js +36 -0
  125. package/dist-cli-web/assets/{people-page-header-Bh3KXD4g.js → people-page-header-0jvXFFnh.js} +1 -1
  126. package/dist-cli-web/assets/{prompt-DcAcgQiB.js → prompt-BPYj29Vq.js} +1 -1
  127. package/dist-cli-web/assets/{semantic-index-config-builder-CK6v64Y1.js → semantic-index-config-builder-vO37z355.js} +1 -1
  128. package/dist-cli-web/assets/service-CVoA9yNf.js +1 -0
  129. package/dist-cli-web/assets/{service-YZnJyEMq.js → service-D29Vftq9.js} +1 -1
  130. package/dist-cli-web/assets/service-DMysyLCa.js +1 -0
  131. package/dist-cli-web/assets/{useFormControl-B-aXrJZN.js → useFormControl-DVawP2DO.js} +1 -1
  132. package/dist-cli-web/assets/useTable-Bv3R_Hux.js +1 -0
  133. package/dist-cli-web/assets/useToast-BA0EwImD.js +1 -0
  134. package/dist-cli-web/assets/{vendor-echarts-DfAMQxdr.js → vendor-echarts-hTLhTs52.js} +5 -5
  135. package/dist-cli-web/assets/{vendor-echarts-wordcloud-BsaEJTPY.js → vendor-echarts-wordcloud-B8CF_NgP.js} +1 -1
  136. package/dist-cli-web/assets/{vendor-zrender-PFmZe1EY.js → vendor-zrender-D8psf1AA.js} +2 -2
  137. package/dist-cli-web/assets/{webworkerAll-Dwqmy_YO.js → webworkerAll-ZPE_yGnC.js} +1 -1
  138. package/dist-cli-web/index.html +2 -2
  139. package/package.json +4 -4
  140. package/dist/chat-command-24RYGJAS.mjs.map +0 -1
  141. package/dist/chunk-22YJOBA3.mjs +0 -9826
  142. package/dist/chunk-22YJOBA3.mjs.map +0 -1
  143. package/dist/chunk-4GWWKHWA.mjs.map +0 -1
  144. package/dist/chunk-7IGBPZMI.mjs.map +0 -1
  145. package/dist/chunk-BRZ6YIBR.mjs.map +0 -1
  146. package/dist/chunk-DC7IUDNV.mjs.map +0 -1
  147. package/dist/chunk-DEFEU567.mjs.map +0 -1
  148. package/dist/chunk-QZCNVAH6.mjs +0 -14
  149. package/dist/chunk-QZCNVAH6.mjs.map +0 -1
  150. package/dist/chunk-ZBPPLXM4.mjs.map +0 -1
  151. package/dist/service-KZTHBDQ5.mjs.map +0 -1
  152. package/dist/undici-MU5I3L6Q.mjs.map +0 -1
  153. package/dist-cli-web/assets/AISettingsTab-rQC2ocFH.js +0 -1
  154. package/dist-cli-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang-CnRLt_1j.js +0 -110
  155. package/dist-cli-web/assets/Alert--bTQXRcZ.js +0 -1
  156. package/dist-cli-web/assets/ApiSettingsTab-CtXl4I28.js +0 -2
  157. package/dist-cli-web/assets/BatchManageTab-1KaCPweN.js +0 -1
  158. package/dist-cli-web/assets/ChatRecordDrawer-BC0F7ok1.js +0 -11
  159. package/dist-cli-web/assets/ChatRecordDrawer-Tt6UduRC.css +0 -1
  160. package/dist-cli-web/assets/Checkbox-CwajNPGF.js +0 -1
  161. package/dist-cli-web/assets/DataDirCleanupNotice-D0Oruka2.js +0 -1
  162. package/dist-cli-web/assets/DatePicker.vue_vue_type_script_setup_true_lang-C4CsoIlq.js +0 -1
  163. package/dist-cli-web/assets/DebugToolsPanel-DVDwS-wz.js +0 -1
  164. package/dist-cli-web/assets/GlobalTaskBar-DpPMX0jx.js +0 -1
  165. package/dist-cli-web/assets/GroupRelationshipGalaxyView-CLnO3phW.js +0 -1
  166. package/dist-cli-web/assets/Label-Bt2U4lGy.js +0 -1
  167. package/dist-cli-web/assets/LoadingState.vue_vue_type_script_setup_true_lang-Cnshyn0f.js +0 -1
  168. package/dist-cli-web/assets/MessageExportModal-BozaR9UZ.js +0 -1
  169. package/dist-cli-web/assets/PageHeader-CEe0xTl3.js +0 -1
  170. package/dist-cli-web/assets/PageTabs.vue_vue_type_script_setup_true_lang-D2DZrrnv.js +0 -1
  171. package/dist-cli-web/assets/RelationshipGalaxyThreeCanvas-B6GB4PWS.js +0 -4108
  172. package/dist-cli-web/assets/RelationshipGalaxyThreeCanvas-TYGOUDiv.css +0 -1
  173. package/dist-cli-web/assets/RovingFocusItem-B2y6BG1a.js +0 -1
  174. package/dist-cli-web/assets/ScreenCaptureModal-BvAtSNNR.js +0 -1
  175. package/dist-cli-web/assets/SectionTabs.vue_vue_type_script_setup_true_lang-ueEF4zHE.js +0 -1
  176. package/dist-cli-web/assets/Select-Cm4I8u9n.js +0 -1
  177. package/dist-cli-web/assets/SettingsModal-CjVax3I6.css +0 -1
  178. package/dist-cli-web/assets/SettingsModal-Cwshzj7i.js +0 -2
  179. package/dist-cli-web/assets/StorageTab-D7HzH16Y.js +0 -1
  180. package/dist-cli-web/assets/Switch-BVw4e_19.js +0 -1
  181. package/dist-cli-web/assets/Tabs-Dqwkh3Ea.js +0 -1
  182. package/dist-cli-web/assets/Tabs-OrJkANIA.js +0 -1
  183. package/dist-cli-web/assets/TimeSelect.vue_vue_type_script_setup_true_lang-dEdo6CqM.js +0 -1
  184. package/dist-cli-web/assets/aiChat-CzFSFuOJ.js +0 -8
  185. package/dist-cli-web/assets/annual-summary-time-range-CmrAqcuj.js +0 -1
  186. package/dist-cli-web/assets/base-CawUl6ET.js +0 -1
  187. package/dist-cli-web/assets/dateFormat-DXuDxIye.js +0 -1
  188. package/dist-cli-web/assets/fetch-3_xX8Yi8.js +0 -1
  189. package/dist-cli-web/assets/index-0dp58uL4.css +0 -1
  190. package/dist-cli-web/assets/index-1X7zdLgJ.css +0 -1
  191. package/dist-cli-web/assets/index-4enwdBcq.css +0 -1
  192. package/dist-cli-web/assets/index-AudHHbMs.js +0 -1
  193. package/dist-cli-web/assets/index-CF4DTbvD.js +0 -1
  194. package/dist-cli-web/assets/index-CMLoht5R.js +0 -1
  195. package/dist-cli-web/assets/index-CMPHZH6B.css +0 -1
  196. package/dist-cli-web/assets/index-CXUTiy-V.js +0 -1
  197. package/dist-cli-web/assets/index-D5m0P4ss.js +0 -36
  198. package/dist-cli-web/assets/index-DkOrt7_X.js +0 -2
  199. package/dist-cli-web/assets/index-Dlb6fC68.js +0 -1
  200. package/dist-cli-web/assets/index-IA7YUjQX.js +0 -2
  201. package/dist-cli-web/assets/index-ZsZwPLWy.css +0 -1
  202. package/dist-cli-web/assets/index-kzU381y1.js +0 -1
  203. package/dist-cli-web/assets/index-z8Vogc-b.js +0 -137
  204. package/dist-cli-web/assets/lazy-overlay-visibility-Bd9ZFOgR.js +0 -1
  205. package/dist-cli-web/assets/member-select-utils-BXZ3oHct.js +0 -1
  206. package/dist-cli-web/assets/useTable-DPEMaGby.js +0 -1
  207. package/dist-cli-web/assets/useToast-B36MzFFy.js +0 -1
  208. /package/dist/{chunk-GQMCDWZQ.mjs.map → chunk-5MJO4AJB.mjs.map} +0 -0
  209. /package/dist/{chunk-QKEARRFH.mjs.map → chunk-67HNPYZJ.mjs.map} +0 -0
  210. /package/dist/{chunk-U36TQMAF.mjs.map → chunk-6QP47LID.mjs.map} +0 -0
  211. /package/dist/{chunk-KIMJXKZO.mjs.map → chunk-JOVL7OTW.mjs.map} +0 -0
  212. /package/dist/{chunk-KXDJ7N6N.mjs.map → chunk-NQHZPSW2.mjs.map} +0 -0
  213. /package/dist/{http-3K4YMWDE.mjs.map → http-5RVY5J5U.mjs.map} +0 -0
  214. /package/dist/{import-D4LV565A.mjs.map → import-ILTWVHKU.mjs.map} +0 -0
  215. /package/dist/{mcp-KL22FKQ2.mjs.map → mcp-Y2YXOFB4.mjs.map} +0 -0
  216. /package/dist/{src-COIB6Z4P.mjs.map → src-OV5ZNE3Z.mjs.map} +0 -0
  217. /package/dist/{stream-import-FSXCFG4M.mjs.map → stream-import-XOUM3Z5W.mjs.map} +0 -0
  218. /package/dist/{worker-runtime-DPS2LURI.mjs.map → worker-runtime-JNGURHDM.mjs.map} +0 -0
@@ -0,0 +1,8 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-sWxuTsa7.js","assets/vendor-snapdom--nZvo8Sg.js","assets/index-DrCc8p_I.css"])))=>i.map(i=>d[i]);
2
+ import{X as Mt,d as ct,r as D,f as se,aA as He,bO as We,bP as Ke,bQ as qt,W as Dt,bs as Ft,bR as gt,ao as Ot,a8 as $t,bS as zt,az as Wt,K as mt,aK as oe,bT as et}from"./index-sWxuTsa7.js";import{u as jt}from"./prompt-BPYj29Vq.js";import{C as Nt}from"./chatlabSiteLocale-CrCNb8QP.js";const xe="chart_runtime",Ht=4e3,Jt=`
3
+ …[truncated]`;function It(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function yt(e){return!It(e)||!Array.isArray(e.content)?"":e.content.map(s=>It(s)&&s.type==="text"&&typeof s.text=="string"?s.text:"").filter(s=>s.length>0).join(`
4
+ `)}function kt(e,s=Ht){return e.length<=s?e:e.slice(0,s)+Jt}function X(){return Mt("assistant-crud")}function ue(){return Mt("skill-crud")}const St=Nt,Vt={"zh-CN":"cn","zh-TW":"cn","en-US":"en","ja-JP":"ja"},Pt=ct("assistant",()=>{const e=D([]),s=D(null),d=D(!1),c=new Set;let l=null;const y=D([]),x=D([]),w=D([]),M=D(!1),_=D(null),U=D("group"),J=D("zh-CN"),L=se(()=>s.value?e.value.find(m=>m.id===s.value)??null:null),V=se(()=>e.value.filter(m=>{const f=!m.applicableChatTypes?.length||m.applicableChatTypes.includes(U.value),T=!m.supportedLocales?.length||m.supportedLocales.some(W=>J.value.startsWith(W));return f&&T})),F=4,Y=se(()=>V.value.slice(0,F)),de=se(()=>V.value.slice(F)),E=se(()=>V.value.length>F),K=se(()=>{const m=new Set(e.value.map(f=>f.id));return w.value.map(f=>({...f,imported:m.has(f.id)}))});function fe(m,f){U.value=m,J.value=f}async function N(){try{const m=X();e.value=await m.getAll(),d.value=!0}catch(m){console.error("[AssistantStore] Failed to load assistants:",m)}}async function ye(){try{y.value=await X().getBuiltinCatalog()}catch(m){console.error("[AssistantStore] Failed to load builtin catalog:",m)}}async function Re(){try{x.value=await X().getBuiltinToolCatalog()}catch(m){console.error("[AssistantStore] Failed to load builtin tool catalog:",m)}}async function ie(m){const f=Vt[m||J.value]??"en",T=`${St}/${f}/assistant.json`;M.value=!0,_.value=null;try{const W=await He().fetchRemoteConfig(T);if(!W.success||!W.data){_.value=W.error||"Failed to fetch cloud catalog",w.value=[];return}const n=W.data;if(!Array.isArray(n)){_.value="Invalid catalog format",w.value=[];return}w.value=n.filter(t=>t.id&&t.name&&t.path)}catch(W){_.value=String(W),w.value=[]}finally{M.value=!1}}async function he(m){const f=`${St}${m.path}`;try{const T=await He().fetchRemoteConfig(f);if(!T.success||typeof T.data!="string")return{success:!1,error:T.error||"Failed to fetch assistant content"};const W=await X().importFromMd(T.data);return W.success&&await N(),W}catch(T){return{success:!1,error:String(T)}}}function Me(m){return e.value.some(f=>f.id===m)}function ve(m){s.value=m}function Ne(){s.value=null}async function Pe(m){try{return await X().getConfig(m)}catch(f){return console.error("[AssistantStore] Failed to get config:",f),null}}async function I(m,f){try{const T=await X().update(m,f);return T.success&&await N(),T}catch(T){return{success:!1,error:String(T)}}}async function k(m){try{const f=await X().reset(m);return f.success&&await N(),f}catch(f){return{success:!1,error:String(f)}}}async function R(m){const f=We(m);if(c.has(f))return null;c.add(f);try{const T=await X().getUpgradeInfo(f);if(!T)return null;try{if(l||(l={...(await Ke().getPreferences()).assistantUpgradeSkippedVersions}),T.latestVersion!==null&&l[T.builtinId]===T.latestVersion)return null}catch(W){console.error("[AssistantStore] Failed to load skipped assistant upgrades:",W)}return T}catch(T){return c.delete(f),console.error("[AssistantStore] Failed to check assistant upgrade:",T),null}}async function ee(m){if(m.latestVersion===null)return{success:!1,error:"Assistant template version is unavailable"};try{l||(l={...(await Ke().getPreferences()).assistantUpgradeSkippedVersions});const f={...l,[m.builtinId]:m.latestVersion},T=await Ke().savePreferences({assistantUpgradeSkippedVersions:f});return T.success&&(l=f),T}catch(f){return{success:!1,error:String(f)}}}async function pe(m,f){try{const T=await X().upgradeWithBackup(m.assistantId,f);return T.success&&await N(),T}catch(T){return{success:!1,error:String(T)}}}async function Ae(m){try{const f=await X().importBuiltin(m);return f.success&&(await N(),await ye()),f}catch(f){return{success:!1,error:String(f)}}}async function Ue(m){try{const f=await X().reimport(m);return f.success&&(await N(),await ye()),f}catch(f){return{success:!1,error:String(f)}}}async function Le(m){try{const f=await X().create(m);return f.success&&await N(),f}catch(f){return{success:!1,error:String(f)}}}async function Je(m){try{const f=X(),T=await f.getConfig(m);if(!T)return{success:!1,error:"Assistant not found"};const{id:W,builtinId:n,...t}=T,o=await f.create({...t,name:`${T.name}${qt.global.t("ai.assistant.duplicateSuffix")}`});return o.success&&await N(),o}catch(f){return{success:!1,error:String(f)}}}async function Ve(m){try{const f=await X().delete(m);return f.success&&await N(),f}catch(f){return{success:!1,error:String(f)}}}return{assistants:e,selectedAssistantId:s,selectedAssistant:L,isLoaded:d,builtinCatalog:y,builtinToolCatalog:x,cloudCatalog:w,cloudLoading:M,cloudError:_,cloudCatalogWithStatus:K,currentChatType:U,currentLocale:J,filteredAssistants:V,defaultAssistants:Y,moreAssistants:de,hasMoreAssistants:E,loadAssistants:N,loadBuiltinCatalog:ye,loadBuiltinToolCatalog:Re,fetchCloudCatalog:ie,importFromCloud:he,isCloudItemImported:Me,selectAssistant:ve,clearSelection:Ne,setFilterContext:fe,getAssistantConfig:Pe,updateAssistant:I,createAssistant:Le,duplicateAssistant:Je,resetAssistant:k,checkDefaultAssistantUpgrade:R,skipAssistantUpgrade:ee,upgradeAssistantWithBackup:pe,importAssistant:Ae,reimportAssistant:Ue,deleteAssistant:Ve}}),Tt=Nt,Gt={"zh-CN":"cn","zh-TW":"cn","en-US":"en","ja-JP":"ja"},Yt=ct("skill",()=>{const e=D([]),s=D(null),d=D(!1),c=D([]),l=D([]),y=D(!1),x=D(null),w=D("group"),M=D("zh-CN");function _(){const I=M.value.startsWith("zh");return{id:xe,name:I?"绘图助手":"Chart Assistant",description:I?"按本轮问题生成灵活的聊天数据图表":"Generate flexible charts for this chat question",tags:[I?"图表":"chart"],chatScope:"all",tools:["render_chart","get_schema"],builtinId:xe}}const U=se(()=>s.value?s.value===xe?_():e.value.find(I=>I.id===s.value)??null:null),J=se(()=>_()),L=se(()=>e.value.filter(I=>I.chatScope==="all"||I.chatScope===w.value)),V=se(()=>{const k=Pt().selectedAssistant,R=[J.value,...L.value];return k?R.filter(ee=>(ee.tools.length,!0)):R}),F=se(()=>{const I={};for(const k of V.value){const R=k.tags[0]||"other";I[R]||(I[R]=[]),I[R].push(k)}return I}),Y=se(()=>{const I=new Set(e.value.map(k=>k.id));return l.value.map(k=>({...k,imported:I.has(k.id)}))});function de(I,k){w.value=I,k&&(M.value=k)}async function E(){try{e.value=await ue().getAll(),d.value=!0}catch(I){console.error("[SkillStore] Failed to load skills:",I)}}async function K(){try{c.value=await ue().getBuiltinCatalog()}catch(I){console.error("[SkillStore] Failed to load builtin catalog:",I)}}async function fe(){const I=Gt[M.value]??"en",k=`${Tt}/${I}/skill.json`;y.value=!0,x.value=null;try{const R=await He().fetchRemoteConfig(k);if(!R.success||!R.data){x.value=R.error||"Failed to fetch cloud catalog",l.value=[];return}const ee=R.data;if(!Array.isArray(ee)){x.value="Invalid catalog format",l.value=[];return}l.value=ee.filter(pe=>pe.id&&pe.name&&pe.path)}catch(R){x.value=String(R),l.value=[]}finally{y.value=!1}}async function N(I){const k=`${Tt}${I.path}`;try{const R=await He().fetchRemoteConfig(k);if(!R.success||typeof R.data!="string")return{success:!1,error:R.error||"Failed to fetch skill content"};const ee=await ue().importFromMd(R.data);return ee.success&&await E(),ee}catch(R){return{success:!1,error:String(R)}}}function ye(I){return e.value.some(k=>k.id===I)}function Re(I){s.value=I}async function ie(I){if(I===xe)return{..._(),prompt:"",builtinId:xe};try{return await ue().getConfig(I)}catch(k){return console.error("[SkillStore] Failed to get skill config:",k),null}}async function he(I,k){try{const R=await ue().update(I,k);return R.success&&await E(),R}catch(R){return{success:!1,error:String(R)}}}async function Me(I){try{const k=await ue().create(I);return k.success&&await E(),k}catch(k){return{success:!1,error:String(k)}}}async function ve(I){try{const k=await ue().delete(I);return k.success&&(s.value===I&&(s.value=null),await E()),k}catch(k){return{success:!1,error:String(k)}}}async function Ne(I){try{const k=await ue().importBuiltin(I);return k.success&&(await E(),await K()),k}catch(k){return{success:!1,error:String(k)}}}async function Pe(I){try{const k=await ue().reimport(I);return k.success&&(await E(),await K()),k}catch(k){return{success:!1,error:String(k)}}}return{skills:e,activeSkillId:s,builtinCatalog:c,isLoaded:d,currentChatType:w,currentLocale:M,activeSkill:U,scopedSkills:L,compatibleSkills:V,groupedSkills:F,cloudCatalog:l,cloudLoading:y,cloudError:x,cloudCatalogWithStatus:Y,setFilterContext:de,loadSkills:E,loadBuiltinCatalog:K,fetchCloudCatalog:fe,importFromCloud:N,isCloudItemImported:ye,activateSkill:Re,getSkillConfig:ie,updateSkill:he,createSkill:Me,deleteSkill:ve,importSkill:Ne,reimportSkill:Pe}});async function _t(e){const{url:s,method:d="POST",headers:c={},body:l,signal:y,onEvent:x}=e,w=await Dt(s,{method:d,headers:{"Content-Type":"application/json",...c},body:l!=null?JSON.stringify(l):void 0,signal:y});if(!w.ok){const L=await w.text().catch(()=>"");throw new Error(`SSE request failed: HTTP ${w.status} ${L}`)}if(!w.body)throw new Error("SSE response has no body");const M=w.body.getReader(),_=new TextDecoder;let U="",J="";for(;;){const{done:L,value:V}=await M.read();if(L)break;U+=_.decode(V,{stream:!0});const F=U.split(`
5
+ `);U=F.pop()||"";for(const Y of F)Y.startsWith("event: ")?J=Y.slice(7).trim():Y.startsWith("data: ")&&(x({event:J,data:Y.slice(6)}),J="")}U.trim()&&U.startsWith("data: ")&&x({event:J,data:U.slice(6)})}function gs(){return{async chatStream(e,s,d){let c;try{return await _t({url:"/_web/ai/llm/chat-stream",body:{messages:e,options:s},onEvent:({data:l})=>{try{const y=JSON.parse(l);y.finishReason==="error"&&y.error&&(c=y.error),d?.(y)}catch{}}}),c?{success:!1,error:c}:{success:!0}}catch(l){const y=l instanceof Error?l.message:String(l);return{success:!1,error:c??y}}}}}const Be=new Map;function tt(){return{runStream(e,s){const d=Date.now();gt("ai_request_started");const c=new AbortController,l=`local_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;Be.set(l,{serverId:"",abortController:c});const x=new Promise(w=>{let M="";const _=[];let U=0,J,L=!1,V;_t({url:"/_web/ai/agent/stream",body:e,signal:c.signal,onEvent:({event:F,data:Y})=>{try{const de=JSON.parse(Y);if(F==="meta"){const K=Be.get(l);K&&(K.serverId=de.requestId??"");return}const E=de;switch(s?.(E),E.type){case"content":E.content&&(M+=E.content);break;case"tool_start":E.toolName&&_.push(E.toolName);break;case"status":E.status&&(U=E.status.round);break;case"done":E.usage&&(J=E.usage);break;case"error":L=!0,V=E.error;break}}catch{}}}).then(()=>{Be.delete(l),w({success:!L,result:{content:M,toolsUsed:_,toolRounds:U,totalUsage:J},...L&&V?{error:V}:{}})}).catch(F=>{Be.delete(l),c.signal.aborted?w({success:!1,result:{content:M,toolsUsed:_,toolRounds:U,aborted:!0}}):w({success:!1,error:{name:"FetchError",message:F.message??String(F),stack:null}})})}).then(w=>(gt("ai_request_completed",{success:w.success,duration_ms:Date.now()-d,...w.success?{}:{failure_reason:w.result?.aborted?"aborted":w.error?.name==="FetchError"?"network":"unknown"}}),w));return{requestId:l,promise:x}},async abort(e){const s=Be.get(e);if(!s)return{success:!1,error:"Request not found"};if(s.abortController.abort(),s.serverId)try{const{post:d}=await Ft(async()=>{const{post:c}=await import("./index-sWxuTsa7.js").then(l=>l.cY);return{post:c}},__vite__mapDeps([0,1,2]));await d("/ai/agent/abort",{requestId:s.serverId})}catch{}return Be.delete(e),{success:!0}}}}function Xt(e){return e.desensitize&&!e.desensitizeRules.some(s=>s.builtin)}function Qt(e){if(e.dataCleaning||e.mergeConsecutive||e.blacklistKeywords.length>0||e.denoise||e.desensitize||e.anonymizeNames)return{dataCleaning:e.dataCleaning,mergeConsecutive:e.mergeConsecutive,mergeWindowSeconds:e.mergeWindowSeconds,blacklistKeywords:[...e.blacklistKeywords],denoise:e.denoise,desensitize:e.desensitize,desensitizeRules:e.desensitizeRules.map(d=>({...d,locales:[...d.locales]})),anonymizeNames:e.anonymizeNames}}function le(e){return e==="render_chart"}function Zt(e,s,d){if(!e||!le(e))return null;const c=e;return{type:"tool",tool:{name:c,displayName:c,status:"running",params:s,toolCallId:d,transient:!0}}}function Et(e,s,d){if(!Q(e))return!1;const c=e;return c.type!=="tool"||!c.tool||c.tool.transient!==!0||c.tool.name!==s||d&&c.tool.toolCallId!==d?!1:le(String(c.tool.name))}function Kt(e,s,d){let c=!1;const l=[...e];for(let y=l.length-1;y>=0;y--)if(Et(l[y],s,d)){l.splice(y,1),c=!0;break}return c?l:[...e]}function Q(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ht(e){return Q(e)&&e.version===1&&Q(e.spec)&&Q(e.dataset)}function ot(e){if(!Q(e))return[];const s=Q(e.details)?e.details:e,d=[];if(ht(s.chart)&&d.push(s.chart),Array.isArray(s.charts))for(const c of s.charts)ht(c)&&d.push(c);return d}function xt(e){return{...e,dataset:{...e.dataset,rows:[]}}}function Ut(e){return e.map(s=>({type:"chart",chart:xt(s)}))}function at(e){return Array.isArray(e)?`[${e.map(at).join(",")}]`:Q(e)?`{${Object.keys(e).sort().map(s=>`${JSON.stringify(s)}:${at(e[s])}`).join(",")}}`:JSON.stringify(e)}function vt(e){const s=xt(e);return at({spec:s.spec,columns:s.dataset.columns,data:s.data,rowCount:s.rowCount,truncated:s.truncated})}function es(e,s){const d=vt(s);return e.some(c=>{if(!Q(c))return!1;const l=c;return l.type==="chart"&&l.chart?vt(l.chart)===d:!1})}function ts(e,s,d,c){const l=[...e];let y=-1;for(let _=l.length-1;_>=0;_--)if(Et(l[_],s,d)){y=_;break}const x=y>=0?l.filter((_,U)=>U!==y):l,w=c.filter(_=>!es(x,_)),M=Ut(w);return y>=0?(l.splice(y,1,...M),l):[...l,...M]}function ss(e,s,d,c,l){if(c.length>0)return ts(e,s,d,c);const y=Kt(e,s,d);return l?[...y,l]:y}function ms(e,s,d){const c=e[s];return!Q(c)||c.type!=="error"||!Q(c.error)||c.error.name!=="ChartRenderError"?!1:d?.isStreaming?!0:e.slice(s+1).some(l=>Q(l)&&l.type==="chart")}function ns(e){return Q(e)?typeof e.error=="string"?e.error:Q(e.error)&&typeof e.error.message=="string"?e.error.message:Array.isArray(e.content)?e.content.map(s=>Q(s)&&s.type==="text"&&typeof s.text=="string"?s.text:"").join(`
6
+ `).trim():null:null}function At(e,s){if(!le(e)||ot(s).length>0)return null;const d=ns(s);if(!d)return null;const l=/^Error:\s*(.+)$/is.exec(d)?.[1]?.trim();return!l||/^Call get_schema before render_chart\b/i.test(l)?null:{type:"error",error:{name:"ChartRenderError",message:l,stack:null}}}function je(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function st(e){return je(e)&&e.version===1&&typeof e.query=="string"&&Array.isArray(e.groups)}function Ct(e){if(!je(e))return null;const s=je(e.details)?e.details:null;if(s&&st(s.evidence))return s.evidence;const d=je(e.data)?e.data:null;return d&&st(d.evidence)?d.evidence:st(e.evidence)?e.evidence:null}function rs(e){return{type:"evidence",evidence:e}}function bt(e){return JSON.parse(JSON.stringify(e))}function ut(e){return JSON.parse(JSON.stringify(e))}function Lt(e){return e?.type==="plan_draft"&&typeof e.text=="string"}function os(e,s){const d=e.map(ut),c=d[d.length-1];return Lt(c)?c.text+=s:d.push({type:"plan_draft",version:1,status:"streaming",text:s}),d}function as(e,s){const d=e.map(ut);for(let c=d.length-1;c>=0;c--){const l=d[c];if(Lt(l)){const y=l.text.trim();return d[c]={...bt(s),...y?{displayText:y}:{}},d}}return d.push(bt(s)),d}function ls(e){return e.filter(s=>s.type!=="plan_draft").map(ut)}function wt(e){if(!e)return;const s=JSON.parse(JSON.stringify(e));for(const d of s)d.type==="tool"&&delete d.tool.displayResult;return s}function nt(e){return e.toolCallId?`id:${e.toolCallId}`:`name:${e.name}`}function Bt(){const e=new Map;let s=null;const d=()=>{if(s){const l=e.get(s);if(l)return l}const c=Array.from(e.entries()).at(-1);return s=c?.[0]??null,c?.[1]??null};return{start(c){const l=nt(c),y={name:c.name,displayName:c.name,status:"running",toolCallId:c.toolCallId};return e.set(l,y),s=l,y},update(c){const l=nt(c),y=e.get(l);if(!y)return d();const x={...y,progress:c.progress};return e.set(l,x),s=l,x},finish(c){const l=nt(c),y=e.get(l);e.delete(l),s===l&&(s=null);const x=d();return x||(y?{...y,status:c.status}:null)},current(){return d()},clear(){e.clear(),s=null}}}const ae="__draft__";function is(e){return e?`${e.startTs}_${e.endTs}`:"all"}function cs(e){return`${e.sessionId}:${e.chatType}:${is(e.timeFilter)}`}function lt(){return{promptTokens:0,completionTokens:0,totalTokens:0,cacheReadTokens:0,cacheWriteTokens:0}}function Rt(e){return{promptTokens:e.promptTokens??0,completionTokens:e.completionTokens??0,totalTokens:e.totalTokens??0,cacheReadTokens:e.cacheReadTokens??0,cacheWriteTokens:e.cacheWriteTokens??0}}function $e(e){if(e&&typeof e=="object"){const s=e;return{name:typeof s.name=="string"?s.name:null,message:typeof s.message=="string"?s.message:"未知错误",stack:typeof s.stack=="string"?s.stack:null,statusCode:typeof s.statusCode=="number"?s.statusCode:null,url:typeof s.url=="string"?s.url:null,responseBody:typeof s.responseBody=="string"?s.responseBody:null,responseHeaders:s.responseHeaders&&typeof s.responseHeaders=="object"?s.responseHeaders:null,requestBody:typeof s.requestBody=="string"?s.requestBody:null,cause:typeof s.cause=="string"?s.cause:null,provider:typeof s.provider=="string"?s.provider:null,friendlyMessage:typeof s.friendlyMessage=="string"?s.friendlyMessage:null}}return{name:null,message:e?String(e):"未知错误",stack:null}}function ze(e){return{id:e.id,role:e.role,content:e.content,timestamp:e.timestamp*1e3,parentId:e.parentId,contentBlocks:e.contentBlocks}}function it(e=null){return{messages:[],sourceMessages:[],currentKeywords:[],assistantId:e,loaded:!1}}function us(e){const s=it(null);return{sessionId:e.sessionId,sessionName:e.sessionName,chatType:e.chatType,locale:e.locale,timeFilter:e.timeFilter,selectedAssistantId:null,messages:s.messages,sourceMessages:s.sourceMessages,currentKeywords:s.currentKeywords,isLoadingSource:!1,isAIThinking:!1,currentAIChatId:null,currentToolStatus:null,toolsUsedInCurrentRound:[],sessionTokenUsage:lt(),agentStatus:null,ownerInfo:void 0,ownerInfoInitialized:!1,isAborted:!1,currentRequestId:"",currentAgentRequestId:"",aiChatBuffers:{[ae]:s}}}function rt(e){return e.currentAIChatId??ae}const Is=ct("aiChatRuntime",()=>{const e=D({}),s=D(null),d=jt(),c=Ot(),l=$t(),y=Pt(),x=Yt(),w=zt(),{aiGlobalSettings:M}=Wt(d);let _=!1;function U(n){return`${n}_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function J(n){const t=cs(n),o=e.value[t];if(o)return o.sessionName=n.sessionName,o.chatType=n.chatType,o.locale=n.locale,o.timeFilter=n.timeFilter,{chatKey:t,state:o};const r=us(n);e.value[t]=r;const i=e.value[t];return K(t),{chatKey:t,state:i}}function L(n){return e.value[n]??null}function V(){return s.value?L(s.value.chatKey):null}function F(n,t,o=null){return n.aiChatBuffers[t]||(n.aiChatBuffers[t]=it(o)),n.aiChatBuffers[t]}function Y(n,t){const o=n.currentAIChatId??ae,r=n.aiChatBuffers[o];r&&(r.sessionTokenUsage={...n.sessionTokenUsage});const i=F(n,t);n.currentAIChatId=t===ae?null:t,n.messages=i.messages,n.sourceMessages=i.sourceMessages,n.currentKeywords=i.currentKeywords,n.selectedAssistantId=i.assistantId,n.sessionTokenUsage=i.sessionTokenUsage?{...i.sessionTokenUsage}:lt(),n.agentStatus=null}function de(n,t,o){const r=F(n,t);return n.aiChatBuffers[o]=r,t!==o&&delete n.aiChatBuffers[t],n.currentAIChatId===null&&t===ae&&(n.currentAIChatId=o),r}function E(n){const t=L(n);t&&(t.selectedAssistantId?y.selectAssistant(t.selectedAssistantId):y.clearSelection())}async function K(n){const t=L(n);if(!t)return;const r=c.sessions.find(i=>i.id===t.sessionId)?.ownerId;if(!r){t.ownerInfo=void 0,t.ownerInfoInitialized=!0;return}if(!(t.ownerInfoInitialized&&t.ownerInfo?.platformId===r))try{const B=(await mt().getMembers(t.sessionId)).find(b=>b.platformId===r);t.ownerInfo=B?{platformId:r,displayName:B.groupNickname||B.accountName||r}:{platformId:r,displayName:r},t.ownerInfoInitialized=!0}catch(i){console.error("[AI] 获取 Owner 信息失败:",i),t.ownerInfo=void 0,t.ownerInfoInitialized=!0}}function fe(n,t,o,r=null){const i=L(n);i&&(s.value={requestId:o,chatKey:n,sessionId:i.sessionId,sessionName:i.sessionName,chatType:i.chatType,aiChatId:r,questionPreview:t.trim().slice(0,80),startedAt:Date.now()})}function N(n,t){s.value&&s.value.chatKey===n&&(t&&s.value.requestId!==t||(s.value=null))}function ye(n,t){s.value&&s.value.chatKey===n&&(s.value.aiChatId=t)}function Re(n){return{phase:"preparing",round:0,toolsUsed:n.toolsUsedInCurrentRound.length,contextTokens:0,totalUsage:{...n.sessionTokenUsage},updatedAt:Date.now()}}function ie(n,t,o){const r=n.agentStatus?{...n.agentStatus}:Re(n);n.agentStatus={...r,...o,phase:t,updatedAt:Date.now()}}function he(n,t){const o=L(n);if(!o||o.isAIThinking)return!1;const r=F(o,rt(o),t);return r.assistantId=t,o.selectedAssistantId=t,y.selectAssistant(t),!0}async function Me(n,t){const o=L(n);if(!o)return!1;try{const r=await oe().getAIChat(t),i=F(o,t,r?.assistantId??null);if(!i.loaded){const[B,b]=await Promise.all([oe().getMessages(t),oe().getAIChatTokenUsage(t)]);i.messages.splice(0,i.messages.length,...B.map(S=>ze(S))),i.sourceMessages.splice(0,i.sourceMessages.length),i.currentKeywords.splice(0,i.currentKeywords.length),i.sessionTokenUsage=Rt(b),i.loaded=!0}return i.assistantId=r?.assistantId??i.assistantId??null,Y(o,t),E(n),!0}catch(r){return console.error("[AI] 加载对话历史失败:",r),!1}}function ve(n,t){const o=L(n);if(!o)return!1;const r=t??ae;return o.aiChatBuffers[r]?(Y(o,r),E(n),!0):!1}function Ne(){return s.value?(_=!0,ve(s.value.chatKey,s.value.aiChatId)):!1}async function Pe(n){if(_){_=!1;return}const t=L(n);if(!(!t||t.isAIThinking)){if(y.isLoaded||await y.loadAssistants(),!t.selectedAssistantId){const o=We(t.locale);he(n,o)}I(n)}}function I(n,t){const o=L(n);if(!o||o.isAIThinking)return!1;const r=it(o.selectedAssistantId);return o.aiChatBuffers[ae]=r,Y(o,ae),o.currentToolStatus=null,o.toolsUsedInCurrentRound=[],o.isLoadingSource=!1,o.sessionTokenUsage=lt(),o.agentStatus=null,o.isAborted=!1,o.currentRequestId="",o.currentAgentRequestId="",t&&r.messages.push({id:U("welcome"),role:"assistant",content:t,timestamp:Date.now()}),!0}async function k(){}async function R(){}function ee(n,t){const o=g=>{const v=t();n.messages[v]={...n.messages[v],...g}};return{updateAIMessage:o,appendTextToBlocks:g=>{if(!g)return;const v=t(),u=n.messages[v].contentBlocks||[],A=u[u.length-1];g.trim().length===0&&(!A||A.type!=="text")||(A&&A.type==="text"?A.text+=g:u.push({type:"text",text:g}),o({contentBlocks:[...u],content:n.messages[v].content+g}))},appendThinkToBlocks:(g,v,u)=>{if(!g&&u===void 0)return;const A=t(),C=n.messages[A].contentBlocks||[],H=v||"think",z=C[C.length-1];let q=z;if(z&&z.type==="think"&&z.tag===H)z.text+=g;else if(g.trim().length>0)q={type:"think",tag:H,text:g},C.push(q);else if(u!==void 0)for(let G=C.length-1;G>=0;G--){const Se=C[G];if(Se.type==="think"&&Se.tag===H){q=Se;break}}u!==void 0&&q&&q.type==="think"&&(q.durationMs=u),o({contentBlocks:[...C]})},appendChartsToBlocks:g=>{if(g.length===0)return;const v=t(),u=n.messages[v].contentBlocks||[];u.push(...Ut(g)),o({contentBlocks:[...u]})},appendEvidenceToBlocks:g=>{const v=t(),u=n.messages[v].contentBlocks||[];u.push(rs(g)),o({contentBlocks:[...u]})},appendPlanDraftToBlocks:g=>{if(!g)return;const v=t(),u=n.messages[v].contentBlocks||[];o({contentBlocks:[...os(u,g)]})},appendPlanToBlocks:g=>{const v=t(),u=n.messages[v].contentBlocks||[];o({contentBlocks:[...as(u,g)]})},removePlanDraftsFromBlocks:()=>{const g=t(),v=n.messages[g].contentBlocks||[];o({contentBlocks:[...ls(v)]})},updatePlanBlockStatus:g=>{const v=t(),u=n.messages[v].contentBlocks||[];for(let A=u.length-1;A>=0;A--){const C=u[A];if(C.type==="plan"){C.status=g;break}}o({contentBlocks:[...u]})},appendErrorToBlocks:g=>{const v=t(),u=n.messages[v].contentBlocks||[];u.push({type:"error",error:g}),o({contentBlocks:[...u]})},addToolBlock:(g,v,u)=>{const A=t(),C=n.messages[A].contentBlocks||[];C.push({type:"tool",tool:{name:g,displayName:g,status:"running",params:v,toolCallId:u}}),o({contentBlocks:[...C]})},addRenderOnlyToolPendingBlock:(g,v,u)=>{const A=Zt(g,v,u);if(!A)return;const C=t(),H=n.messages[C].contentBlocks||[];H.push(A),o({contentBlocks:[...H]})},updateRenderOnlyToolResult:(g,v,u,A)=>{const C=t(),H=n.messages[C].contentBlocks||[];o({contentBlocks:ss(H,g,v,u,A)})},updateToolBlockStatus:(g,v,u)=>{const A=t(),C=n.messages[A].contentBlocks||[],H=q=>q.type==="tool"&&q.tool.status==="running";let z;if(u?.toolCallId)for(let q=C.length-1;q>=0;q--){const G=C[q];if(H(G)&&G.tool.toolCallId===u.toolCallId){z=G;break}}if(!z)for(let q=C.length-1;q>=0;q--){const G=C[q];if(H(G)&&G.tool.name===g){z=G;break}}z&&(z.tool.status=v,u?.result!==void 0&&(z.tool.result=u.result),u?.displayResult!==void 0&&(z.tool.displayResult=u.displayResult),u?.isError!==void 0&&(z.tool.isError=u.isError)),o({contentBlocks:[...C]})}}}async function pe(n,t,o){const r=L(n);if(!r)return{success:!1,reason:"error"};if(!t.trim())return{success:!1,reason:"empty"};if(r.isAIThinking||s.value)return{success:!1,reason:"busy",activeTask:s.value};const i=U("req"),B=rt(r);let b=B===ae?null:B;const S=F(r,B,r.selectedAssistantId);let P,h;S.assistantId=r.selectedAssistantId,S.loaded=!0,fe(n,t,i,b),E(n),K(n);const j=x.activeSkillId,ne=x.activeSkill?.name,ke=M.value.enableAutoSkill??!0,_e=ke?M.value.chartAutoMode??"suggest":"explicit",ce=(o?.mentionedMembers??[]).map(O=>({memberId:O.memberId,platformId:O.platformId,displayName:O.displayName,aliases:[...O.aliases],mentionText:O.mentionText}));r.isAIThinking=!0,r.isLoadingSource=!0,r.currentToolStatus=null,r.toolsUsedInCurrentRound=[],r.agentStatus=null,r.isAborted=!1,r.currentRequestId=i,r.currentAgentRequestId="";try{const O=await et().hasConfig();if(r.isAborted)return N(n,i),{success:!1,reason:"aborted"};if(r.currentRequestId!==i)return N(n,i),{success:!1,reason:"busy",activeTask:s.value};if(!O)return S.messages.push({id:U("error"),role:"assistant",content:"⚠️ 请先配置 AI 服务。点击左下角「设置」按钮前往「模型配置Tab」进行配置。",timestamp:Date.now()}),N(n,i),{success:!1,reason:"no_config"};const g={id:U("user"),role:"user",content:t,timestamp:Date.now(),toolCalls:[]};P=g,S.messages.push(g);const v={id:U("ai"),role:"assistant",content:"",timestamp:Date.now(),isStreaming:!0,contentBlocks:[]};j&&ne&&v.contentBlocks.push({type:"skill",skillId:j,skillName:ne}),S.messages.push(v);let u=S.messages.length-1,A=!1;const C=Bt(),{updateAIMessage:H,appendTextToBlocks:z,appendThinkToBlocks:q,appendChartsToBlocks:G,appendEvidenceToBlocks:Se,appendPlanDraftToBlocks:Ge,appendPlanToBlocks:qe,removePlanDraftsFromBlocks:Ce,updatePlanBlockStatus:Ee,appendErrorToBlocks:Ye,addToolBlock:Xe,addRenderOnlyToolPendingBlock:Qe,updateRenderOnlyToolResult:De,updateToolBlockStatus:te}=ee(S,()=>u),ge=S.assistantId??We(r.locale);if(!b){const a=t.slice(0,50)+(t.length>50?"...":""),$=await oe().createAIChat(r.sessionId,a,ge);if(r.isAborted)return H({isStreaming:!1}),N(n,i),{success:!1,reason:"aborted"};if(r.currentRequestId!==i)return H({isStreaming:!1}),N(n,i),{success:!1,reason:"busy",activeTask:s.value};b=$.id,de(r,ae,$.id),S.assistantId=ge,ye(n,$.id)}const me={sessionId:r.sessionId,aiChatId:b,timeFilter:r.timeFilter?{startTs:r.timeFilter.startTs,endTs:r.timeFilter.endTs}:void 0,maxMessagesLimit:M.value.maxMessagesPerRequest,ownerInfo:r.ownerInfo?{platformId:r.ownerInfo.platformId,displayName:r.ownerInfo.displayName}:void 0,mentionedMembers:ce.length>0?ce:void 0,preprocessConfig:await Ue(),searchContextBefore:M.value.searchContextBefore,searchContextAfter:M.value.searchContextAfter},{requestId:Te,promise:Ze}=tt().runStream({userMessage:t,sessionId:r.sessionId,aiChatId:b,timeFilter:me.timeFilter,maxMessagesLimit:me.maxMessagesLimit,ownerInfo:me.ownerInfo,mentionedMembers:me.mentionedMembers,preprocessConfig:me.preprocessConfig,chatType:r.chatType,locale:r.locale,assistantId:ge,skillId:j,enableAutoSkill:j?void 0:ke,chartAutoMode:j?void 0:_e,thinkingLevel:(()=>{const a=w.defaultAssistant;if(!(!a?.configId||!a?.modelId))return d.getThinkingLevel(a.configId,a.modelId)})()},a=>{if(!(r.isAborted||i!==r.currentRequestId))switch(a.type){case"content":a.content&&(r.currentToolStatus=C.current(),z(a.content));break;case"think":a.content?q(a.content,a.thinkTag):a.thinkDurationMs!==void 0&&q("",a.thinkTag,a.thinkDurationMs);break;case"tool_start":if(a.toolName){const $=a.toolParams;r.currentToolStatus=C.start({name:a.toolName,toolCallId:a.toolCallId}),r.toolsUsedInCurrentRound.push(a.toolName),le(a.toolName)?Qe(a.toolName,$,a.toolCallId):Xe(a.toolName,$,a.toolCallId)}break;case"tool_update":a.toolName&&a.toolProgress&&(r.currentToolStatus=C.update({name:a.toolName,toolCallId:a.toolCallId,progress:a.toolProgress}));break;case"tool_result":if(a.toolName){const $=ot(a.toolResult),Z=At(a.toolName,a.toolResult);le(a.toolName)?De(a.toolName,a.toolCallId,$,Z):G($);const Fe=Ct(a.toolResult);Fe&&Se(Fe),Z&&(le(a.toolName)||Ye(Z.error));const be=Z!==null||a.toolIsError===!0;if(r.currentToolStatus?.name===a.toolName&&(r.currentToolStatus={...r.currentToolStatus,status:be?"error":"done"}),!le(a.toolName)){const we=yt(a.toolResult);te(a.toolName,be?"error":"done",{toolCallId:a.toolCallId,result:kt(we),displayResult:we,isError:a.toolIsError})}r.currentToolStatus=C.finish({name:a.toolName,toolCallId:a.toolCallId,status:be?"error":"done"})}r.isLoadingSource=!1;break;case"plan_delta":a.planDelta&&Ge(a.planDelta);break;case"plan":a.plan&&(qe(a.plan),Ee("executing"));break;case"plan_skipped":Ce();break;case"status":a.status&&(!r.agentStatus||a.status.updatedAt>=r.agentStatus.updatedAt)&&(r.agentStatus=a.status);break;case"compression_done":if(a.compressionResult){const $={id:`summary-${Date.now()}`,role:"summary",content:a.compressionResult.summaryContent,timestamp:a.compressionResult.timestamp},Z=Math.max(0,S.messages.length-1);S.messages.splice(Z,0,$),u++}break;case"done":C.clear(),r.currentToolStatus=null,A||Ee("done"),a.usage&&(h={...a.usage},r.sessionTokenUsage={promptTokens:r.sessionTokenUsage.promptTokens+a.usage.promptTokens,completionTokens:r.sessionTokenUsage.completionTokens+a.usage.completionTokens,totalTokens:r.sessionTokenUsage.totalTokens+a.usage.totalTokens,cacheReadTokens:r.sessionTokenUsage.cacheReadTokens+a.usage.cacheReadTokens,cacheWriteTokens:r.sessionTokenUsage.cacheWriteTokens+a.usage.cacheWriteTokens}),ie(r,"completed",a.usage?{totalUsage:a.usage}:void 0);break;case"error":if(Ce(),Ee("skipped"),r.currentToolStatus&&(r.currentToolStatus={...r.currentToolStatus,status:"error"},te(r.currentToolStatus.name,"error",{toolCallId:r.currentToolStatus.toolCallId})),C.clear(),!A){A=!0;const $=S.messages[u].contentBlocks||[];$.push({type:"error",error:$e(a.error)}),H({contentBlocks:[...$],isStreaming:!1})}ie(r,"error");break}});r.currentAgentRequestId=Te,fe(n,t,Te,b);const re=await Ze;if(r.isAborted)return N(n,Te),{success:!1,reason:"aborted"};if(i!==r.currentRequestId)return N(n,Te),{success:!1,reason:"busy",activeTask:s.value};if(re.success&&re.result){S.messages[u]={...S.messages[u],dataSource:{toolsUsed:re.result.toolsUsed,toolRounds:re.result.toolRounds},isStreaming:!1};const a=await Ae(b,g,S.messages[u],h);a&&(Object.assign(g,a.userMessage),S.messages[u]={...S.messages[u],...a.assistantMessage,isStreaming:!1})}else if(A){const a=await Ae(b,g,S.messages[u],h);a&&(Object.assign(g,a.userMessage),S.messages[u]={...S.messages[u],...a.assistantMessage,isStreaming:!1})}else{const a=S.messages[u].contentBlocks||[];a.push({type:"error",error:$e(re.error)}),S.messages[u]={...S.messages[u],contentBlocks:[...a],isStreaming:!1};const $=await Ae(b,g,S.messages[u],h);$&&(Object.assign(g,$.userMessage),S.messages[u]={...S.messages[u],...$.assistantMessage,isStreaming:!1})}return{success:!0}}catch(O){console.error("[AI] 处理失败:",O),r.agentStatus=null;const g=S.messages[S.messages.length-1];if(g&&g.role==="assistant"){const v={name:O instanceof Error?O.name:null,message:O instanceof Error?O.message:String(O),stack:O instanceof Error?O.stack??null:null},u=g.contentBlocks||[];u.push({type:"error",error:v}),g.contentBlocks=[...u],g.isStreaming=!1;const A=P||S.messages.findLast(C=>C.role==="user");A&&await Ae(b,A,g,h)}return{success:!1,reason:"error"}}finally{r.isAIThinking=!1,r.isLoadingSource=!1,r.currentToolStatus=null,r.isAborted=!1,r.currentRequestId="",r.currentAgentRequestId="",N(n)}}async function Ae(n,t,o,r){try{if(!n)return null;const i=await oe().addMessage(n,"user",t.content),B=wt(o.contentBlocks),b=await oe().addMessage(n,"assistant",o.content,void 0,void 0,B,r);return{userMessage:ze(i),assistantMessage:ze(b)}}catch(i){return console.error("[AI] 保存对话失败:",i),null}}async function Ue(){const n=l.aiPreprocessConfig;return Xt(n)&&await l.ensureDesensitizeRules(),Qt(l.aiPreprocessConfig)}function Le(n){return n.trim().replace(/^[\s"'“”‘’([{<]+|[\s"'“”‘’)\]}>.,!?;:,。!?;:、]+$/g,"").toLocaleLowerCase()}async function Je(n,t){const o=new Set;for(const r of t.matchAll(/@([^\s@]+)/g)){const i=Le(r[1]??"");i&&o.add(i)}if(o.size===0)return[];try{const r=await mt().getMembers(n.sessionId),i=new Map;r.forEach(P=>{const h=P.groupNickname||P.accountName||P.platformId;i.set(h,(i.get(h)??0)+1)});const B=r.map(P=>{const h=P.groupNickname||P.accountName||P.platformId,j=(i.get(h)??0)>1?`${h}·${P.platformId}`:h,ne=[...P.aliases],ke=[h,P.groupNickname||"",P.accountName||"",P.platformId,j,...ne].map(Le).filter(Boolean);return{memberId:P.id,platformId:P.platformId,displayName:h,aliases:ne,mentionText:`@${j}`,lookupValues:ke}}),b=[],S=new Set;for(const P of o){const h=B.find(j=>!S.has(j.memberId)&&j.lookupValues.includes(P));h&&(S.add(h.memberId),b.push({memberId:h.memberId,platformId:h.platformId,displayName:h.displayName,aliases:h.aliases,mentionText:h.mentionText}))}return b}catch(r){return console.error("[AI] Failed to resolve mentioned members for edited message:",r),[]}}async function Ve(n,t,o,r){const i=L(n),B=o.trim();if(!i||!i.currentAIChatId)return{success:!1,reason:"error"};if(!B)return{success:!1,reason:"empty"};if(i.isAIThinking||s.value)return{success:!1,reason:"busy",activeTask:s.value};const b=r?.overwriteSubsequent??!1,S=F(i,i.currentAIChatId,i.selectedAssistantId),P=S.messages.findIndex(j=>j.id===t),h=S.messages[P];return!h||h.role!=="user"||h.isStreaming?{success:!1,reason:"error"}:h.content.trim()===B?{success:!1,reason:"empty"}:b?m(n,i,S,P,h,B):f(n,i,S,P,h,B)}async function m(n,t,o,r,i,B){try{return await et().hasConfig()?t.isAborted?{success:!1,reason:"aborted"}:t.isAIThinking||s.value?{success:!1,reason:"busy",activeTask:s.value}:(await oe().deleteMessagesFrom(t.currentAIChatId,i.id),o.messages.splice(r,o.messages.length-r),pe(n,B)):{success:!1,reason:"no_config"}}catch(b){return console.error("[AI] edit and overwrite failed:",b),{success:!1,reason:"error"}}}async function f(n,t,o,r,i,B){const b=U("req");let S,P=!1;const h=Bt();fe(n,B,b,t.currentAIChatId),E(n),K(n),t.isAIThinking=!0,t.isLoadingSource=!0,t.currentToolStatus=null,t.toolsUsedInCurrentRound=[],t.agentStatus=null,t.isAborted=!1,t.currentRequestId=b,t.currentAgentRequestId="";const j=o.messages[r+1],ne=j?.role==="assistant",ke=ne?o.messages.slice(r+2):o.messages.slice(r+1),_e={id:U("ai"),role:"assistant",content:"",timestamp:Date.now(),isStreaming:!0,contentBlocks:[]},ce=x.activeSkillId,O=x.activeSkill?.name;ce&&O&&_e.contentBlocks.push({type:"skill",skillId:ce,skillName:O});const g={...i,content:B},v=ne?2:1;o.messages.splice(r,v,g,_e);const u=r+1,A=()=>{o.messages.splice(r,o.messages.length-r,i),ne&&o.messages.splice(r+1,0,j),o.messages.push(...ke)},{updateAIMessage:C,appendTextToBlocks:H,appendThinkToBlocks:z,appendChartsToBlocks:q,appendEvidenceToBlocks:G,appendPlanDraftToBlocks:Se,appendPlanToBlocks:Ge,removePlanDraftsFromBlocks:qe,updatePlanBlockStatus:Ce,appendErrorToBlocks:Ee,addToolBlock:Ye,addRenderOnlyToolPendingBlock:Xe,updateRenderOnlyToolResult:Qe,updateToolBlockStatus:De}=ee(o,()=>u);try{if(!await et().hasConfig())return A(),N(n,b),{success:!1,reason:"no_config"};const ge=o.assistantId??We(t.locale),me=await Je(t,B);if(t.isAborted)return A(),N(n,b),{success:!1,reason:"aborted"};if(b!==t.currentRequestId)return A(),N(n,b),{success:!1,reason:"busy",activeTask:s.value};const Te=M.value.enableAutoSkill??!0,Ze=Te?M.value.chartAutoMode??"suggest":"explicit",re={sessionId:t.sessionId,aiChatId:t.currentAIChatId,historyLeafMessageId:i.parentId??null,timeFilter:t.timeFilter?{startTs:t.timeFilter.startTs,endTs:t.timeFilter.endTs}:void 0,maxMessagesLimit:M.value.maxMessagesPerRequest,ownerInfo:t.ownerInfo?{platformId:t.ownerInfo.platformId,displayName:t.ownerInfo.displayName}:void 0,mentionedMembers:me.length>0?me:void 0,preprocessConfig:await Ue(),searchContextBefore:M.value.searchContextBefore,searchContextAfter:M.value.searchContextAfter},{requestId:a,promise:$}=tt().runStream({userMessage:B,sessionId:t.sessionId,aiChatId:t.currentAIChatId,historyLeafMessageId:i.parentId??null,timeFilter:re.timeFilter,maxMessagesLimit:re.maxMessagesLimit,ownerInfo:re.ownerInfo,mentionedMembers:re.mentionedMembers,preprocessConfig:re.preprocessConfig,chatType:t.chatType,locale:t.locale,assistantId:ge,skillId:ce,enableAutoSkill:ce?void 0:Te,chartAutoMode:ce?void 0:Ze,thinkingLevel:(()=>{const p=w.defaultAssistant;if(!(!p?.configId||!p?.modelId))return d.getThinkingLevel(p.configId,p.modelId)})()},p=>{if(!(t.isAborted||b!==t.currentRequestId))switch(p.type){case"content":t.currentToolStatus=h.current(),H(p.content||"");break;case"think":p.content?z(p.content,p.thinkTag):p.thinkDurationMs!==void 0&&z("",p.thinkTag,p.thinkDurationMs);break;case"tool_start":if(p.toolName){const Ie=p.toolParams;t.currentToolStatus=h.start({name:p.toolName,toolCallId:p.toolCallId}),t.toolsUsedInCurrentRound.push(p.toolName),le(p.toolName)?Xe(p.toolName,Ie,p.toolCallId):Ye(p.toolName,Ie,p.toolCallId)}break;case"tool_update":p.toolName&&p.toolProgress&&(t.currentToolStatus=h.update({name:p.toolName,toolCallId:p.toolCallId,progress:p.toolProgress}));break;case"tool_result":if(p.toolName){const Ie=ot(p.toolResult),Oe=At(p.toolName,p.toolResult),dt=Oe!==null||p.toolIsError===!0;le(p.toolName)?Qe(p.toolName,p.toolCallId,Ie,Oe):q(Ie);const ft=Ct(p.toolResult);if(ft&&G(ft),Oe&&(le(p.toolName)||Ee(Oe.error)),!le(p.toolName)){const pt=yt(p.toolResult);De(p.toolName,dt?"error":"done",{toolCallId:p.toolCallId,result:kt(pt),displayResult:pt,isError:p.toolIsError})}t.currentToolStatus=h.finish({name:p.toolName,toolCallId:p.toolCallId,status:dt?"error":"done"})}t.isLoadingSource=!1;break;case"plan_delta":p.planDelta&&Se(p.planDelta);break;case"plan":p.plan&&(Ge(p.plan),Ce("executing"));break;case"plan_skipped":qe();break;case"status":p.status&&(!t.agentStatus||p.status.updatedAt>=t.agentStatus.updatedAt)&&(t.agentStatus=p.status);break;case"done":h.clear(),t.currentToolStatus=null,P||Ce("done"),p.usage&&(S={...p.usage}),ie(t,"completed",p.usage?{totalUsage:p.usage}:void 0);break;case"error":{qe(),Ce("skipped"),P=!0,t.currentToolStatus&&De(t.currentToolStatus.name,"error",{toolCallId:t.currentToolStatus.toolCallId}),h.clear();const Ie=o.messages[u].contentBlocks||[];Ie.push({type:"error",error:$e(p.error)}),C({contentBlocks:[...Ie],isStreaming:!1}),ie(t,"error");break}}});t.currentAgentRequestId=a,fe(n,B,a,t.currentAIChatId);const Z=await $;if(t.isAborted)return A(),N(n,a),{success:!1,reason:"aborted"};if(b!==t.currentRequestId)return A(),N(n,a),{success:!1,reason:"busy",activeTask:s.value};if(Z.success&&Z.result)C({dataSource:{toolsUsed:Z.result.toolsUsed,toolRounds:Z.result.toolRounds},isStreaming:!1});else if(!P){const p=o.messages[u].contentBlocks||[];p.push({type:"error",error:$e(Z.error)}),C({contentBlocks:[...p],isStreaming:!1})}if(!Z.success)return A(),{success:!1,reason:"error"};await oe().updateMessageContent(i.id,B),ne&&await oe().deleteAndRelinkMessage(t.currentAIChatId,j.id);const Fe=wt(o.messages[u].contentBlocks),be=await oe().insertMessageAfter(t.currentAIChatId,i.id,"assistant",o.messages[u].content,Fe,S);o.messages[u]={...ze(be),dataSource:o.messages[u].dataSource,isStreaming:!1},o.messages[r]={...o.messages[r],content:B};const we=u+1;return we<o.messages.length&&(o.messages[we]={...o.messages[we],parentId:be.id}),o.sessionTokenUsage=Rt(await oe().getAIChatTokenUsage(t.currentAIChatId)),t.sessionTokenUsage={...o.sessionTokenUsage},{success:!0}}catch(te){if(t.isAborted)return A(),{success:!1,reason:"aborted"};console.error("[AI] edit and regenerate failed:",te);const ge=o.messages[u]?.contentBlocks||[];return ge.push({type:"error",error:{name:te instanceof Error?te.name:null,message:te instanceof Error?te.message:String(te),stack:te instanceof Error?te.stack??null:null}}),o.messages[u]&&C({contentBlocks:[...ge],isStreaming:!1}),{success:!1,reason:"error"}}finally{t.isAIThinking=!1,t.isLoadingSource=!1,t.currentToolStatus=null,t.isAborted=!1,t.currentRequestId="",t.currentAgentRequestId="",N(n)}}async function T(n){const t=L(n);if(!t||!t.isAIThinking)return!1;t.isAborted=!0,t.isAIThinking=!1,t.isLoadingSource=!1,t.currentToolStatus=null,ie(t,"aborted");const o=s.value?.chatKey===n?s.value.aiChatId??ae:rt(t),r=t.aiChatBuffers[o],i=r?r.messages[r.messages.length-1]:void 0;if(i&&i.role==="assistant"&&i.isStreaming&&(i.isStreaming=!1,i.content+=`
7
+
8
+ _(已停止生成)_`),t.currentAgentRequestId)try{await tt().abort(t.currentAgentRequestId)}catch(B){console.error("[AI] 中止 Agent 请求失败:",B)}return t.currentRequestId="",t.currentAgentRequestId="",N(n),!0}async function W(){return s.value?T(s.value.chatKey):!1}return{sessionStates:e,activeTask:s,ensureSessionState:J,getSessionState:L,getActiveTaskState:V,applySessionAssistantSelection:E,selectAssistantForSession:he,loadAIChat:Me,focusAIChat:ve,focusActiveTaskAIChat:Ne,resetToSelectorOnEnter:Pe,startNewAIChat:I,loadMoreSourceMessages:k,updateMaxMessages:R,sendMessage:pe,editMessageAndRegenerate:Ve,stopGeneration:T,stopActiveTask:W}});export{gs as a,Yt as b,Pt as c,ms as s,Is as u};
@@ -1,4 +1,4 @@
1
- import{t as M,U as Z,P as f,v as te,j as y,E as ie,w as g,r as P,x as V}from"./RelationshipGalaxyCanvas-6EamagxG.js";import"./webworkerAll-Dwqmy_YO.js";import"./index-D5m0P4ss.js";import"./vendor-snapdom--nZvo8Sg.js";import"./index-IA7YUjQX.js";import"./Tabs-OrJkANIA.js";import"./RovingFocusItem-B2y6BG1a.js";import"./useToast-B36MzFFy.js";import"./LoadingState.vue_vue_type_script_setup_true_lang-Cnshyn0f.js";import"./people-page-header-Bh3KXD4g.js";import"./relationship-galaxy-connections-Cg4G5yYE.js";import"./relationship-galaxy-viewport-Cwfa51ER.js";import"./Filter-DVaqcFmI.js";class q{constructor(e){this._lastTransform="",this._observer=null,this._tickerAttached=!1,this.updateTranslation=()=>{if(!this._canvas)return;const t=this._canvas.getBoundingClientRect(),i=this._canvas.width,n=this._canvas.height,s=t.width/i*this._renderer.resolution,o=t.height/n*this._renderer.resolution,r=t.left,l=t.top,d=`translate(${r}px, ${l}px) scale(${s}, ${o})`;d!==this._lastTransform&&(this._domElement.style.transform=d,this._lastTransform=d)},this._domElement=e.domElement,this._renderer=e.renderer,!(globalThis.OffscreenCanvas&&this._renderer.canvas instanceof OffscreenCanvas)&&(this._canvas=this._renderer.canvas,this._attachObserver())}get canvas(){return this._canvas}ensureAttached(){!this._domElement.parentNode&&this._canvas.parentNode&&(this._canvas.parentNode.appendChild(this._domElement),this.updateTranslation())}_attachObserver(){"ResizeObserver"in globalThis?(this._observer&&(this._observer.disconnect(),this._observer=null),this._observer=new ResizeObserver(e=>{for(const t of e){if(t.target!==this._canvas)continue;const i=this.canvas.width,n=this.canvas.height,s=t.contentRect.width/i*this._renderer.resolution,o=t.contentRect.height/n*this._renderer.resolution;(this._lastScaleX!==s||this._lastScaleY!==o)&&(this.updateTranslation(),this._lastScaleX=s,this._lastScaleY=o)}}),this._observer.observe(this._canvas)):this._tickerAttached||M.shared.add(this.updateTranslation,this,Z.HIGH)}destroy(){this._observer?(this._observer.disconnect(),this._observer=null):this._tickerAttached&&M.shared.remove(this.updateTranslation),this._domElement=null,this._renderer=null,this._canvas=null,this._tickerAttached=!1,this._lastTransform="",this._lastScaleX=null,this._lastScaleY=null}}class w{constructor(e){this.bubbles=!0,this.cancelBubble=!0,this.cancelable=!1,this.composed=!1,this.defaultPrevented=!1,this.eventPhase=w.prototype.NONE,this.propagationStopped=!1,this.propagationImmediatelyStopped=!1,this.layer=new f,this.page=new f,this.NONE=0,this.CAPTURING_PHASE=1,this.AT_TARGET=2,this.BUBBLING_PHASE=3,this.manager=e}get layerX(){return this.layer.x}get layerY(){return this.layer.y}get pageX(){return this.page.x}get pageY(){return this.page.y}get data(){return this}composedPath(){return this.manager&&(!this.path||this.path[this.path.length-1]!==this.target)&&(this.path=this.target?this.manager.propagationPath(this.target):[]),this.path}initEvent(e,t,i){throw new Error("initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}initUIEvent(e,t,i,n,s){throw new Error("initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}preventDefault(){this.nativeEvent instanceof Event&&this.nativeEvent.cancelable&&this.nativeEvent.preventDefault(),this.defaultPrevented=!0}stopImmediatePropagation(){this.propagationImmediatelyStopped=!0}stopPropagation(){this.propagationStopped=!0}}var I=/iPhone/i,B=/iPod/i,C=/iPad/i,U=/\biOS-universal(?:.+)Mac\b/i,k=/\bAndroid(?:.+)Mobile\b/i,R=/Android/i,b=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,O=/Silk/i,v=/Windows Phone/i,X=/\bWindows(?:.+)ARM\b/i,K=/BlackBerry/i,Y=/BB10/i,H=/Opera Mini/i,F=/\b(CriOS|Chrome)(?:.+)Mobile/i,N=/Mobile(?:.+)Firefox\b/i,$=function(a){return typeof a<"u"&&a.platform==="MacIntel"&&typeof a.maxTouchPoints=="number"&&a.maxTouchPoints>1&&typeof MSStream>"u"};function ne(a){return function(e){return e.test(a)}}function j(a){var e={userAgent:"",platform:"",maxTouchPoints:0};!a&&typeof navigator<"u"?e={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0}:typeof a=="string"?e.userAgent=a:a&&a.userAgent&&(e={userAgent:a.userAgent,platform:a.platform,maxTouchPoints:a.maxTouchPoints||0});var t=e.userAgent,i=t.split("[FBAN");typeof i[1]<"u"&&(t=i[0]),i=t.split("Twitter"),typeof i[1]<"u"&&(t=i[0]);var n=ne(t),s={apple:{phone:n(I)&&!n(v),ipod:n(B),tablet:!n(I)&&(n(C)||$(e))&&!n(v),universal:n(U),device:(n(I)||n(B)||n(C)||n(U)||$(e))&&!n(v)},amazon:{phone:n(b),tablet:!n(b)&&n(O),device:n(b)||n(O)},android:{phone:!n(v)&&n(b)||!n(v)&&n(k),tablet:!n(v)&&!n(b)&&!n(k)&&(n(O)||n(R)),device:!n(v)&&(n(b)||n(O)||n(k)||n(R))||n(/\bokhttp\b/i)},windows:{phone:n(v),tablet:n(X),device:n(v)||n(X)},other:{blackberry:n(K),blackberry10:n(Y),opera:n(H),firefox:n(N),chrome:n(F),device:n(K)||n(Y)||n(H)||n(N)||n(F)},any:!1,phone:!1,tablet:!1};return s.any=s.apple.device||s.android.device||s.windows.device||s.other.device,s.phone=s.apple.phone||s.android.phone||s.windows.phone,s.tablet=s.apple.tablet||s.android.tablet||s.windows.tablet,s}const se=j.default??j,oe=se(globalThis.navigator),re=9,G=100,ae=0,le=0,W=2,z=1,he=-1e3,ce=-1e3,de=2,L=class J{constructor(e,t=oe){this._mobileInfo=t,this.debug=!1,this._activateOnTab=!0,this._deactivateOnMouseMove=!0,this._isActive=!1,this._isMobileAccessibility=!1,this._div=null,this._pools={},this._renderId=0,this._children=[],this._androidUpdateCount=0,this._androidUpdateFrequency=500,this._isRunningTests=!1,this._boundOnKeyDown=this._onKeyDown.bind(this),this._boundOnMouseMove=this._onMouseMove.bind(this),this._hookDiv=null,(t.tablet||t.phone)&&this._createTouchHook(),this._renderer=e}get isActive(){return this._isActive}get isMobileAccessibility(){return this._isMobileAccessibility}get hookDiv(){return this._hookDiv}get div(){return this._div}_createTouchHook(){const e=document.createElement("button");e.style.width=`${z}px`,e.style.height=`${z}px`,e.style.position="absolute",e.style.top=`${he}px`,e.style.left=`${ce}px`,e.style.zIndex=de.toString(),e.style.backgroundColor="#FF0000",e.title="select to enable accessibility for this content",e.addEventListener("focus",()=>{this._isMobileAccessibility=!0,this._activate(),this._destroyTouchHook()}),document.body.appendChild(e),this._hookDiv=e}_destroyTouchHook(){this._hookDiv&&(document.body.removeChild(this._hookDiv),this._hookDiv=null)}_activate(){if(this._isActive)return;this._isActive=!0,this._div||(this._div=document.createElement("div"),this._div.style.position="absolute",this._div.style.top=`${ae}px`,this._div.style.left=`${le}px`,this._div.style.pointerEvents="none",this._div.style.zIndex=W.toString(),this._canvasObserver=new q({domElement:this._div,renderer:this._renderer})),this._activateOnTab&&globalThis.addEventListener("keydown",this._boundOnKeyDown,!1),this._deactivateOnMouseMove&&globalThis.document.addEventListener("mousemove",this._boundOnMouseMove,!0);const e=this._renderer.view.canvas;if(e.parentNode)this._canvasObserver.ensureAttached(),this._initAccessibilitySetup();else{const t=new MutationObserver(()=>{e.parentNode&&(t.disconnect(),this._canvasObserver.ensureAttached(),this._initAccessibilitySetup())});t.observe(document.body,{childList:!0,subtree:!0})}}_initAccessibilitySetup(){this._renderer.runners.postrender.add(this),this._renderer.lastObjectRendered&&this._updateAccessibleObjects(this._renderer.lastObjectRendered)}_deactivate(){if(!(!this._isActive||this._isMobileAccessibility)){this._isActive=!1,globalThis.document.removeEventListener("mousemove",this._boundOnMouseMove,!0),this._activateOnTab&&globalThis.addEventListener("keydown",this._boundOnKeyDown,!1),this._renderer.runners.postrender.remove(this);for(const e of this._children)e._accessibleDiv?.parentNode&&(e._accessibleDiv.parentNode.removeChild(e._accessibleDiv),e._accessibleDiv=null),e._accessibleActive=!1;for(const e in this._pools)this._pools[e].forEach(i=>{i.parentNode&&i.parentNode.removeChild(i)}),delete this._pools[e];this._div?.parentNode&&this._div.parentNode.removeChild(this._div),this._pools={},this._children=[]}}_updateAccessibleObjects(e){if(!e.visible||!e.accessibleChildren)return;e.accessible&&(e._accessibleActive||this._addChild(e),e._renderId=this._renderId);const t=e.children;if(t)for(let i=0;i<t.length;i++)this._updateAccessibleObjects(t[i])}init(e){const i={accessibilityOptions:{...J.defaultOptions,...e?.accessibilityOptions||{}}};this.debug=i.accessibilityOptions.debug,this._activateOnTab=i.accessibilityOptions.activateOnTab,this._deactivateOnMouseMove=i.accessibilityOptions.deactivateOnMouseMove,i.accessibilityOptions.enabledByDefault&&this._activate(),this._renderer.runners.postrender.remove(this)}postrender(){const e=performance.now();if(this._mobileInfo.android.device&&e<this._androidUpdateCount||(this._androidUpdateCount=e+this._androidUpdateFrequency,(!this._renderer.renderingToScreen||!this._renderer.view.canvas)&&!this._isRunningTests))return;const t=new Set;if(this._renderer.lastObjectRendered){this._updateAccessibleObjects(this._renderer.lastObjectRendered);for(const i of this._children)i._renderId===this._renderId&&t.add(this._children.indexOf(i))}for(let i=this._children.length-1;i>=0;i--){const n=this._children[i];t.has(i)||(n._accessibleDiv&&n._accessibleDiv.parentNode&&(n._accessibleDiv.parentNode.removeChild(n._accessibleDiv),this._getPool(n.accessibleType).push(n._accessibleDiv),n._accessibleDiv=null),n._accessibleActive=!1,te(this._children,i,1))}this._renderer.renderingToScreen&&this._canvasObserver.ensureAttached();for(let i=0;i<this._children.length;i++){const n=this._children[i];if(!n._accessibleActive||!n._accessibleDiv)continue;const s=n._accessibleDiv,o=n.hitArea||n.getBounds().rectangle;if(n.hitArea){const r=n.worldTransform;s.style.left=`${r.tx+o.x*r.a}px`,s.style.top=`${r.ty+o.y*r.d}px`,s.style.width=`${o.width*r.a}px`,s.style.height=`${o.height*r.d}px`}else this._capHitArea(o),s.style.left=`${o.x}px`,s.style.top=`${o.y}px`,s.style.width=`${o.width}px`,s.style.height=`${o.height}px`}this._renderId++}_updateDebugHTML(e){e.innerHTML=`type: ${e.type}</br> title : ${e.title}</br> tabIndex: ${e.tabIndex}`}_capHitArea(e){e.x<0&&(e.width+=e.x,e.x=0),e.y<0&&(e.height+=e.y,e.y=0);const{width:t,height:i}=this._renderer;e.x+e.width>t&&(e.width=t-e.x),e.y+e.height>i&&(e.height=i-e.y)}_addChild(e){let i=this._getPool(e.accessibleType).pop();i?(i.innerHTML="",i.removeAttribute("title"),i.removeAttribute("aria-label"),i.tabIndex=0):(e.accessibleType==="button"?i=document.createElement("button"):(i=document.createElement(e.accessibleType),i.style.cssText=`
1
+ import{t as M,U as Z,P as f,v as te,j as y,E as ie,w as g,r as P,x as V}from"./RelationshipGalaxyCanvas-BODk18aA.js";import"./webworkerAll-ZPE_yGnC.js";import"./index-sWxuTsa7.js";import"./vendor-snapdom--nZvo8Sg.js";import"./index-C7omDgiJ.js";import"./Tabs-D1UiZNaZ.js";import"./RovingFocusItem-DC_06OmN.js";import"./useToast-BA0EwImD.js";import"./LoadingState.vue_vue_type_script_setup_true_lang-CwgpqtMZ.js";import"./people-page-header-0jvXFFnh.js";import"./relationship-galaxy-connections-Cg4G5yYE.js";import"./relationship-galaxy-viewport-Cwfa51ER.js";import"./Filter-yxkeHO78.js";class q{constructor(e){this._lastTransform="",this._observer=null,this._tickerAttached=!1,this.updateTranslation=()=>{if(!this._canvas)return;const t=this._canvas.getBoundingClientRect(),i=this._canvas.width,n=this._canvas.height,s=t.width/i*this._renderer.resolution,o=t.height/n*this._renderer.resolution,r=t.left,l=t.top,d=`translate(${r}px, ${l}px) scale(${s}, ${o})`;d!==this._lastTransform&&(this._domElement.style.transform=d,this._lastTransform=d)},this._domElement=e.domElement,this._renderer=e.renderer,!(globalThis.OffscreenCanvas&&this._renderer.canvas instanceof OffscreenCanvas)&&(this._canvas=this._renderer.canvas,this._attachObserver())}get canvas(){return this._canvas}ensureAttached(){!this._domElement.parentNode&&this._canvas.parentNode&&(this._canvas.parentNode.appendChild(this._domElement),this.updateTranslation())}_attachObserver(){"ResizeObserver"in globalThis?(this._observer&&(this._observer.disconnect(),this._observer=null),this._observer=new ResizeObserver(e=>{for(const t of e){if(t.target!==this._canvas)continue;const i=this.canvas.width,n=this.canvas.height,s=t.contentRect.width/i*this._renderer.resolution,o=t.contentRect.height/n*this._renderer.resolution;(this._lastScaleX!==s||this._lastScaleY!==o)&&(this.updateTranslation(),this._lastScaleX=s,this._lastScaleY=o)}}),this._observer.observe(this._canvas)):this._tickerAttached||M.shared.add(this.updateTranslation,this,Z.HIGH)}destroy(){this._observer?(this._observer.disconnect(),this._observer=null):this._tickerAttached&&M.shared.remove(this.updateTranslation),this._domElement=null,this._renderer=null,this._canvas=null,this._tickerAttached=!1,this._lastTransform="",this._lastScaleX=null,this._lastScaleY=null}}class w{constructor(e){this.bubbles=!0,this.cancelBubble=!0,this.cancelable=!1,this.composed=!1,this.defaultPrevented=!1,this.eventPhase=w.prototype.NONE,this.propagationStopped=!1,this.propagationImmediatelyStopped=!1,this.layer=new f,this.page=new f,this.NONE=0,this.CAPTURING_PHASE=1,this.AT_TARGET=2,this.BUBBLING_PHASE=3,this.manager=e}get layerX(){return this.layer.x}get layerY(){return this.layer.y}get pageX(){return this.page.x}get pageY(){return this.page.y}get data(){return this}composedPath(){return this.manager&&(!this.path||this.path[this.path.length-1]!==this.target)&&(this.path=this.target?this.manager.propagationPath(this.target):[]),this.path}initEvent(e,t,i){throw new Error("initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}initUIEvent(e,t,i,n,s){throw new Error("initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}preventDefault(){this.nativeEvent instanceof Event&&this.nativeEvent.cancelable&&this.nativeEvent.preventDefault(),this.defaultPrevented=!0}stopImmediatePropagation(){this.propagationImmediatelyStopped=!0}stopPropagation(){this.propagationStopped=!0}}var I=/iPhone/i,B=/iPod/i,C=/iPad/i,U=/\biOS-universal(?:.+)Mac\b/i,k=/\bAndroid(?:.+)Mobile\b/i,R=/Android/i,b=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,O=/Silk/i,v=/Windows Phone/i,X=/\bWindows(?:.+)ARM\b/i,K=/BlackBerry/i,Y=/BB10/i,H=/Opera Mini/i,F=/\b(CriOS|Chrome)(?:.+)Mobile/i,N=/Mobile(?:.+)Firefox\b/i,$=function(a){return typeof a<"u"&&a.platform==="MacIntel"&&typeof a.maxTouchPoints=="number"&&a.maxTouchPoints>1&&typeof MSStream>"u"};function ne(a){return function(e){return e.test(a)}}function j(a){var e={userAgent:"",platform:"",maxTouchPoints:0};!a&&typeof navigator<"u"?e={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0}:typeof a=="string"?e.userAgent=a:a&&a.userAgent&&(e={userAgent:a.userAgent,platform:a.platform,maxTouchPoints:a.maxTouchPoints||0});var t=e.userAgent,i=t.split("[FBAN");typeof i[1]<"u"&&(t=i[0]),i=t.split("Twitter"),typeof i[1]<"u"&&(t=i[0]);var n=ne(t),s={apple:{phone:n(I)&&!n(v),ipod:n(B),tablet:!n(I)&&(n(C)||$(e))&&!n(v),universal:n(U),device:(n(I)||n(B)||n(C)||n(U)||$(e))&&!n(v)},amazon:{phone:n(b),tablet:!n(b)&&n(O),device:n(b)||n(O)},android:{phone:!n(v)&&n(b)||!n(v)&&n(k),tablet:!n(v)&&!n(b)&&!n(k)&&(n(O)||n(R)),device:!n(v)&&(n(b)||n(O)||n(k)||n(R))||n(/\bokhttp\b/i)},windows:{phone:n(v),tablet:n(X),device:n(v)||n(X)},other:{blackberry:n(K),blackberry10:n(Y),opera:n(H),firefox:n(N),chrome:n(F),device:n(K)||n(Y)||n(H)||n(N)||n(F)},any:!1,phone:!1,tablet:!1};return s.any=s.apple.device||s.android.device||s.windows.device||s.other.device,s.phone=s.apple.phone||s.android.phone||s.windows.phone,s.tablet=s.apple.tablet||s.android.tablet||s.windows.tablet,s}const se=j.default??j,oe=se(globalThis.navigator),re=9,G=100,ae=0,le=0,W=2,z=1,he=-1e3,ce=-1e3,de=2,L=class J{constructor(e,t=oe){this._mobileInfo=t,this.debug=!1,this._activateOnTab=!0,this._deactivateOnMouseMove=!0,this._isActive=!1,this._isMobileAccessibility=!1,this._div=null,this._pools={},this._renderId=0,this._children=[],this._androidUpdateCount=0,this._androidUpdateFrequency=500,this._isRunningTests=!1,this._boundOnKeyDown=this._onKeyDown.bind(this),this._boundOnMouseMove=this._onMouseMove.bind(this),this._hookDiv=null,(t.tablet||t.phone)&&this._createTouchHook(),this._renderer=e}get isActive(){return this._isActive}get isMobileAccessibility(){return this._isMobileAccessibility}get hookDiv(){return this._hookDiv}get div(){return this._div}_createTouchHook(){const e=document.createElement("button");e.style.width=`${z}px`,e.style.height=`${z}px`,e.style.position="absolute",e.style.top=`${he}px`,e.style.left=`${ce}px`,e.style.zIndex=de.toString(),e.style.backgroundColor="#FF0000",e.title="select to enable accessibility for this content",e.addEventListener("focus",()=>{this._isMobileAccessibility=!0,this._activate(),this._destroyTouchHook()}),document.body.appendChild(e),this._hookDiv=e}_destroyTouchHook(){this._hookDiv&&(document.body.removeChild(this._hookDiv),this._hookDiv=null)}_activate(){if(this._isActive)return;this._isActive=!0,this._div||(this._div=document.createElement("div"),this._div.style.position="absolute",this._div.style.top=`${ae}px`,this._div.style.left=`${le}px`,this._div.style.pointerEvents="none",this._div.style.zIndex=W.toString(),this._canvasObserver=new q({domElement:this._div,renderer:this._renderer})),this._activateOnTab&&globalThis.addEventListener("keydown",this._boundOnKeyDown,!1),this._deactivateOnMouseMove&&globalThis.document.addEventListener("mousemove",this._boundOnMouseMove,!0);const e=this._renderer.view.canvas;if(e.parentNode)this._canvasObserver.ensureAttached(),this._initAccessibilitySetup();else{const t=new MutationObserver(()=>{e.parentNode&&(t.disconnect(),this._canvasObserver.ensureAttached(),this._initAccessibilitySetup())});t.observe(document.body,{childList:!0,subtree:!0})}}_initAccessibilitySetup(){this._renderer.runners.postrender.add(this),this._renderer.lastObjectRendered&&this._updateAccessibleObjects(this._renderer.lastObjectRendered)}_deactivate(){if(!(!this._isActive||this._isMobileAccessibility)){this._isActive=!1,globalThis.document.removeEventListener("mousemove",this._boundOnMouseMove,!0),this._activateOnTab&&globalThis.addEventListener("keydown",this._boundOnKeyDown,!1),this._renderer.runners.postrender.remove(this);for(const e of this._children)e._accessibleDiv?.parentNode&&(e._accessibleDiv.parentNode.removeChild(e._accessibleDiv),e._accessibleDiv=null),e._accessibleActive=!1;for(const e in this._pools)this._pools[e].forEach(i=>{i.parentNode&&i.parentNode.removeChild(i)}),delete this._pools[e];this._div?.parentNode&&this._div.parentNode.removeChild(this._div),this._pools={},this._children=[]}}_updateAccessibleObjects(e){if(!e.visible||!e.accessibleChildren)return;e.accessible&&(e._accessibleActive||this._addChild(e),e._renderId=this._renderId);const t=e.children;if(t)for(let i=0;i<t.length;i++)this._updateAccessibleObjects(t[i])}init(e){const i={accessibilityOptions:{...J.defaultOptions,...e?.accessibilityOptions||{}}};this.debug=i.accessibilityOptions.debug,this._activateOnTab=i.accessibilityOptions.activateOnTab,this._deactivateOnMouseMove=i.accessibilityOptions.deactivateOnMouseMove,i.accessibilityOptions.enabledByDefault&&this._activate(),this._renderer.runners.postrender.remove(this)}postrender(){const e=performance.now();if(this._mobileInfo.android.device&&e<this._androidUpdateCount||(this._androidUpdateCount=e+this._androidUpdateFrequency,(!this._renderer.renderingToScreen||!this._renderer.view.canvas)&&!this._isRunningTests))return;const t=new Set;if(this._renderer.lastObjectRendered){this._updateAccessibleObjects(this._renderer.lastObjectRendered);for(const i of this._children)i._renderId===this._renderId&&t.add(this._children.indexOf(i))}for(let i=this._children.length-1;i>=0;i--){const n=this._children[i];t.has(i)||(n._accessibleDiv&&n._accessibleDiv.parentNode&&(n._accessibleDiv.parentNode.removeChild(n._accessibleDiv),this._getPool(n.accessibleType).push(n._accessibleDiv),n._accessibleDiv=null),n._accessibleActive=!1,te(this._children,i,1))}this._renderer.renderingToScreen&&this._canvasObserver.ensureAttached();for(let i=0;i<this._children.length;i++){const n=this._children[i];if(!n._accessibleActive||!n._accessibleDiv)continue;const s=n._accessibleDiv,o=n.hitArea||n.getBounds().rectangle;if(n.hitArea){const r=n.worldTransform;s.style.left=`${r.tx+o.x*r.a}px`,s.style.top=`${r.ty+o.y*r.d}px`,s.style.width=`${o.width*r.a}px`,s.style.height=`${o.height*r.d}px`}else this._capHitArea(o),s.style.left=`${o.x}px`,s.style.top=`${o.y}px`,s.style.width=`${o.width}px`,s.style.height=`${o.height}px`}this._renderId++}_updateDebugHTML(e){e.innerHTML=`type: ${e.type}</br> title : ${e.title}</br> tabIndex: ${e.tabIndex}`}_capHitArea(e){e.x<0&&(e.width+=e.x,e.x=0),e.y<0&&(e.height+=e.y,e.y=0);const{width:t,height:i}=this._renderer;e.x+e.width>t&&(e.width=t-e.x),e.y+e.height>i&&(e.height=i-e.y)}_addChild(e){let i=this._getPool(e.accessibleType).pop();i?(i.innerHTML="",i.removeAttribute("title"),i.removeAttribute("aria-label"),i.tabIndex=0):(e.accessibleType==="button"?i=document.createElement("button"):(i=document.createElement(e.accessibleType),i.style.cssText=`
2
2
  color: transparent;
3
3
  pointer-events: none;
4
4
  padding: 0;
@@ -1 +1 @@
1
- import{T as a,V as n}from"./index-D5m0P4ss.js";import"./vendor-snapdom--nZvo8Sg.js";class p{async getVersion(){return"0.35.0"}async fetchRemoteConfig(e){try{const t=await fetch(e);return t.ok?{success:!0,data:(t.headers.get("content-type")||"").includes("application/json")||e.split("?")[0].endsWith(".json")?await t.json():await t.text()}:{success:!1,error:`HTTP ${t.status}`}}catch(t){return{success:!1,error:String(t)}}}setThemeSource(e){}async getOpenAtLogin(){return!1}async setOpenAtLogin(e){return{success:!1,error:"Not available in CLI Web"}}async getDesktopCloseBehavior(){return"background"}async setDesktopCloseBehavior(e){return{success:!1,error:"Not available in CLI Web"}}async getAnalyticsEnabled(){try{return(await(await a("/_web/telemetry/enabled")).json()).enabled===!0}catch{return!1}}async setAnalyticsEnabled(e){try{return await(await a("/_web/telemetry/enabled",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({enabled:e})})).json()}catch{return{success:!1}}}async trackDailyActive(e){await a("/_web/telemetry/track",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({eventName:"app_active",properties:{app_locale:e}})}).catch(()=>{})}async trackAnalyticsEvent(e,t){await a("/_web/telemetry/track",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({eventName:e,properties:t})}).catch(()=>{})}async showOpenDialog(e){return{canceled:!0,filePaths:[]}}async copyImageToClipboard(e){if(globalThis.isSecureContext===!1)return{success:!1,error:"Image clipboard requires HTTPS or localhost"};if(typeof navigator>"u"||typeof navigator.clipboard?.write!="function"||typeof ClipboardItem>"u")return{success:!1,error:"Image clipboard is not supported by this browser"};try{const t=fetch(e).then(async r=>{if(!r.ok)throw new Error(`Failed to read screenshot data: HTTP ${r.status}`);const s=await r.blob();if(s.type!=="image/png")throw new Error(`Unsupported screenshot MIME type: ${s.type||"unknown"}`);return s});return await navigator.clipboard.write([new ClipboardItem({"image/png":t})]),{success:!0}}catch(t){const r=t instanceof Error?`${t.name}: ${t.message}`:String(t);return n(`Image clipboard write failed: ${r}`,t instanceof Error?t.stack:void 0),{success:!1,error:r}}}async checkUpdate(){try{return await(await a("/_web/system/check-update")).json()}catch(e){return{hasUpdate:!1,currentVersion:"unknown",error:e instanceof Error?e.message:String(e)}}}async performUpdate(){return{success:!1,error:"Web update is unavailable. Run clb update in your terminal."}}async relaunch(){window.location.reload()}}export{p as CliWebPlatformAdapter};
1
+ import{W as a,Y as n}from"./index-sWxuTsa7.js";import"./vendor-snapdom--nZvo8Sg.js";class p{async getVersion(){return"0.36.1"}async fetchRemoteConfig(e){try{const t=await fetch(e);return t.ok?{success:!0,data:(t.headers.get("content-type")||"").includes("application/json")||e.split("?")[0].endsWith(".json")?await t.json():await t.text()}:{success:!1,error:`HTTP ${t.status}`}}catch(t){return{success:!1,error:String(t)}}}setThemeSource(e){}async getOpenAtLogin(){return!1}async setOpenAtLogin(e){return{success:!1,error:"Not available in CLI Web"}}async getDesktopCloseBehavior(){return"background"}async setDesktopCloseBehavior(e){return{success:!1,error:"Not available in CLI Web"}}async getAnalyticsEnabled(){try{return(await(await a("/_web/telemetry/enabled")).json()).enabled===!0}catch{return!1}}async setAnalyticsEnabled(e){try{return await(await a("/_web/telemetry/enabled",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({enabled:e})})).json()}catch{return{success:!1}}}async trackDailyActive(e){await a("/_web/telemetry/track",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({eventName:"app_active",properties:{app_locale:e}})}).catch(()=>{})}async trackAnalyticsEvent(e,t){await a("/_web/telemetry/track",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({eventName:e,properties:t})}).catch(()=>{})}async showOpenDialog(e){return{canceled:!0,filePaths:[]}}async copyImageToClipboard(e){if(globalThis.isSecureContext===!1)return{success:!1,error:"Image clipboard requires HTTPS or localhost"};if(typeof navigator>"u"||typeof navigator.clipboard?.write!="function"||typeof ClipboardItem>"u")return{success:!1,error:"Image clipboard is not supported by this browser"};try{const t=fetch(e).then(async r=>{if(!r.ok)throw new Error(`Failed to read screenshot data: HTTP ${r.status}`);const s=await r.blob();if(s.type!=="image/png")throw new Error(`Unsupported screenshot MIME type: ${s.type||"unknown"}`);return s});return await navigator.clipboard.write([new ClipboardItem({"image/png":t})]),{success:!0}}catch(t){const r=t instanceof Error?`${t.name}: ${t.message}`:String(t);return n(`Image clipboard write failed: ${r}`,t instanceof Error?t.stack:void 0),{success:!1,error:r}}}async checkUpdate(){try{return await(await a("/_web/system/check-update")).json()}catch(e){return{hasUpdate:!1,currentVersion:"unknown",error:e instanceof Error?e.message:String(e)}}}async performUpdate(){return{success:!1,error:"Web update is unavailable. Run clb update in your terminal."}}async relaunch(){window.location.reload()}}export{p as CliWebPlatformAdapter};
@@ -1 +1 @@
1
- import{K as s,O as l,N as o,L as i}from"./index-D5m0P4ss.js";import"./vendor-snapdom--nZvo8Sg.js";class g{async hasConfig(){return s("/ai/llm/has-config")}async getConfigStore(){return s("/ai/llm/configs")}async getAllConfigs(){return(await this.getConfigStore()).configs}async getDefaultAssistantSlot(){return s("/ai/llm/default-assistant-slot")}async getFastModelSlot(){return s("/ai/llm/fast-model-slot")}async setDefaultAssistantModel(e,t){return l("/ai/llm/default-assistant-slot",{configId:e,modelId:t})}async setFastModel(e){return l("/ai/llm/fast-model-slot",e)}async getProviders(){return s("/ai/llm/providers")}async getProviderRegistry(){return s("/ai/llm/provider-registry")}async getModelCatalog(){return s("/ai/llm/model-catalog")}async addConfig(e){return o("/ai/llm/configs",e)}async updateConfig(e,t){return l(`/ai/llm/configs/${e}`,t)}async deleteConfig(e){return i(`/ai/llm/configs/${e}`)}async validateApiKey(e,t,a,r,n,m){return o("/ai/llm/validate-key",{provider:e,apiKey:t,baseUrl:a,model:r,apiFormat:n,configId:m})}async fetchRemoteModels(e,t,a,r,n){return o("/ai/llm/remote-models",{provider:e,apiKey:t,baseUrl:a,apiFormat:r,configId:n})}async addCustomProvider(e){return o("/ai/llm/custom-providers",e)}async updateCustomProvider(e,t){return l(`/ai/llm/custom-providers/${e}`,t)}async deleteCustomProvider(e){return i(`/ai/llm/custom-providers/${e}`)}async addCustomModel(e){return o("/ai/llm/custom-models",e)}async updateCustomModel(e,t,a){return l(`/ai/llm/custom-models/${e}/${encodeURIComponent(t)}`,a)}async deleteCustomModel(e,t){return i(`/ai/llm/custom-models/${e}/${encodeURIComponent(t)}`)}}export{g as FetchLLMAdapter};
1
+ import{N as s,T as l,S as o,O as i}from"./index-sWxuTsa7.js";import"./vendor-snapdom--nZvo8Sg.js";class g{async hasConfig(){return s("/ai/llm/has-config")}async getConfigStore(){return s("/ai/llm/configs")}async getAllConfigs(){return(await this.getConfigStore()).configs}async getDefaultAssistantSlot(){return s("/ai/llm/default-assistant-slot")}async getFastModelSlot(){return s("/ai/llm/fast-model-slot")}async setDefaultAssistantModel(e,t){return l("/ai/llm/default-assistant-slot",{configId:e,modelId:t})}async setFastModel(e){return l("/ai/llm/fast-model-slot",e)}async getProviders(){return s("/ai/llm/providers")}async getProviderRegistry(){return s("/ai/llm/provider-registry")}async getModelCatalog(){return s("/ai/llm/model-catalog")}async addConfig(e){return o("/ai/llm/configs",e)}async updateConfig(e,t){return l(`/ai/llm/configs/${e}`,t)}async deleteConfig(e){return i(`/ai/llm/configs/${e}`)}async validateApiKey(e,t,a,r,n,m){return o("/ai/llm/validate-key",{provider:e,apiKey:t,baseUrl:a,model:r,apiFormat:n,configId:m})}async fetchRemoteModels(e,t,a,r,n){return o("/ai/llm/remote-models",{provider:e,apiKey:t,baseUrl:a,apiFormat:r,configId:n})}async addCustomProvider(e){return o("/ai/llm/custom-providers",e)}async updateCustomProvider(e,t){return l(`/ai/llm/custom-providers/${e}`,t)}async deleteCustomProvider(e){return i(`/ai/llm/custom-providers/${e}`)}async addCustomModel(e){return o("/ai/llm/custom-models",e)}async updateCustomModel(e,t,a){return l(`/ai/llm/custom-models/${e}/${encodeURIComponent(t)}`,a)}async deleteCustomModel(e,t){return i(`/ai/llm/custom-models/${e}/${encodeURIComponent(t)}`)}}export{g as FetchLLMAdapter};
@@ -1 +1 @@
1
- import{K as i,N as r,O as s,L as l}from"./index-D5m0P4ss.js";import"./vendor-snapdom--nZvo8Sg.js";class c{async getAll(){return i("/ai/skills")}async getConfig(t){try{return await i(`/ai/skills/${t}`)}catch{return null}}async create(t){return r("/ai/skills",{rawMd:t})}async update(t,a){return s(`/ai/skills/${t}`,{rawMd:a})}async delete(t){return l(`/ai/skills/${t}`)}async importFromMd(t){return r("/ai/skills/import",{rawMd:t})}async importBuiltin(t){return r("/ai/skills/import-builtin",{builtinId:t})}async reimport(t){return r(`/ai/skills/${t}/reimport`,{})}async getBuiltinCatalog(){try{return await i("/ai/skills/builtin-catalog")}catch{return[]}}}export{c as FetchSkillAdapter};
1
+ import{N as i,S as r,T as s,O as l}from"./index-sWxuTsa7.js";import"./vendor-snapdom--nZvo8Sg.js";class c{async getAll(){return i("/ai/skills")}async getConfig(t){try{return await i(`/ai/skills/${t}`)}catch{return null}}async create(t){return r("/ai/skills",{rawMd:t})}async update(t,a){return s(`/ai/skills/${t}`,{rawMd:a})}async delete(t){return l(`/ai/skills/${t}`)}async importFromMd(t){return r("/ai/skills/import",{rawMd:t})}async importBuiltin(t){return r("/ai/skills/import-builtin",{builtinId:t})}async reimport(t){return r(`/ai/skills/${t}/reimport`,{})}async getBuiltinCatalog(){try{return await i("/ai/skills/builtin-catalog")}catch{return[]}}}export{c as FetchSkillAdapter};
@@ -1,4 +1,4 @@
1
- import{U as O}from"./index-D5m0P4ss.js";import"./vendor-snapdom--nZvo8Sg.js";const N=`
1
+ import{X as O}from"./index-sWxuTsa7.js";import"./vendor-snapdom--nZvo8Sg.js";const N=`
2
2
  msg.id,
3
3
  m.id as senderId,
4
4
  COALESCE(m.group_nickname, m.account_name, m.platform_id) as senderName,
@@ -1,4 +1,4 @@
1
- import{T as d,ae as l,K as I}from"./index-D5m0P4ss.js";import"./vendor-snapdom--nZvo8Sg.js";function g(i){return{success:i.success,sessionId:i.sessionId,platform:i.platform,error:i.error,importMode:i.importMode,matchedBy:i.matchedBy,createReason:i.createReason,newMessageCount:i.newMessageCount,duplicateCount:i.duplicateCount,messageCount:i.messageCount,memberCount:i.memberCount,diagnostics:i.diagnostics}}async function S(i,e,t){const o=i.body?.getReader();if(!o)return e;const s=new TextDecoder;let r="",a=e;for(;;){const{done:n,value:y}=await o.read();if(n)break;r+=s.decode(y,{stream:!0});const w=r.split(`
1
+ import{W as d,aw as l,N as I}from"./index-sWxuTsa7.js";import"./vendor-snapdom--nZvo8Sg.js";function g(i){return{success:i.success,sessionId:i.sessionId,platform:i.platform,error:i.error,importMode:i.importMode,matchedBy:i.matchedBy,createReason:i.createReason,newMessageCount:i.newMessageCount,duplicateCount:i.duplicateCount,messageCount:i.messageCount,memberCount:i.memberCount,diagnostics:i.diagnostics}}async function S(i,e,t){const o=i.body?.getReader();if(!o)return e;const s=new TextDecoder;let r="",a=e;for(;;){const{done:n,value:y}=await o.read();if(n)break;r+=s.decode(y,{stream:!0});const w=r.split(`
2
2
  `);r=w.pop()||"";let p="";for(const u of w)if(u.startsWith("event: "))p=u.slice(7).trim();else if(u.startsWith("data: ")){const f=JSON.parse(u.slice(6));p==="progress"?t?.(f):(p==="done"||p==="error")&&(a=f),p=""}}return a}class B{constructor(){this.activeBatch=null}async requestBatchCancellation(e){try{await d(`${l()}/import/batch/${encodeURIComponent(e)}/cancel`,{method:"POST"})}catch{}}async importFile(e,t,o){if(typeof e=="string")return{success:!1,error:"File path import is not supported in Web mode"};const s=new FormData;s.append("file",e),t?.formatId&&s.append("formatId",t.formatId),t?.chatIndex!==void 0&&s.append("chatIndex",String(t.chatIndex)),t?.sessionGapThreshold!==void 0&&s.append("sessionGapThreshold",String(t.sessionGapThreshold));const r=await d(`${l()}/import`,{method:"POST",body:s});if(!r.ok){const a=await r.text();return{success:!1,error:`HTTP ${r.status}: ${a}`}}return g(await S(r,{success:!1,error:"Unknown error"},o))}async importBatch(e,t,o){if(e.some(n=>typeof n.file=="string"))return e.map(n=>({id:n.id,status:"failed",error:"File path import is not supported in Web mode"}));const s=new FormData;for(const n of e)s.append("files",n.file);t?.sessionGapThreshold!==void 0&&s.append("sessionGapThreshold",String(t.sessionGapThreshold));const r={id:crypto.randomUUID(),cancelRequested:!1};this.activeBatch=r;const a=Array(e.length);try{const n=await d(`${l()}/import/batch`,{method:"POST",body:s,headers:{"X-ChatLab-Import-Batch-Id":r.id}});if(r.cancelRequested&&await this.requestBatchCancellation(r.id),!n.ok||!n.body){const m=await n.text();return e.map(T=>({id:T.id,status:"failed",error:`HTTP ${n.status}: ${m}`}))}const y=n.body.getReader(),w=new TextDecoder;let p="",u=null,f=null,c="";for(;;){const{done:m,value:T}=await y.read();if(m)break;p+=w.decode(T,{stream:!0});const v=p.split(`
3
3
  `);p=v.pop()||"";for(const b of v){if(b.startsWith("event: ")){c=b.slice(7).trim();continue}if(!b.startsWith("data: "))continue;const h=JSON.parse(b.slice(6));if(c==="batch-start")o?.({index:h.index,event:"start"});else if(c==="batch-progress")o?.({index:h.index,event:"progress",progress:h.progress});else if(c==="batch-complete"){const $=x(e,h.index,h.result);a[h.index]=$,o?.({index:h.index,event:"complete",result:$})}else c==="done"?u=h.map(($,C)=>x(e,C,$)):c==="error"&&(f=typeof h?.error=="string"?h.error:"Batch import failed");c=""}}return u??e.map((m,T)=>a[T]??{id:m.id,status:"failed",error:f??"Batch response ended without results"})}catch(n){return e.map((y,w)=>a[w]??{id:y.id,status:"failed",error:n instanceof Error?n.message:String(n)})}finally{this.activeBatch===r&&(this.activeBatch=null)}}cancelActiveImport(){this.activeBatch&&(this.activeBatch.cancelRequested=!0,this.requestBatchCancellation(this.activeBatch.id))}async detectFormat(e){if(typeof e=="string")return null;const t=new FormData;t.append("file",e);const o=await d(`${l()}/detect-format`,{method:"POST",body:t});return o.ok?(await o.json()).format:null}async scanMultiChatFile(e){if(typeof e=="string")return[];const t=new FormData;t.append("file",e);const o=await d(`${l()}/scan-multi-chat`,{method:"POST",body:t});return o.ok?(await o.json()).chats:[]}async prepareImportSource(e){if(typeof e=="string")return{success:!1,error:"File path import is not supported in Web mode"};const t=new FormData;t.append("file",e);const o=await d(`${l()}/import-sources`,{method:"POST",body:t}),s=await o.json().catch(()=>null);return o.ok?s??{success:!1,error:"Invalid import source response"}:{success:!1,error:s?.error||`HTTP ${o.status}`}}async importPreparedChat(e,t,o,s){const r=await d(`${l()}/import-sources/${encodeURIComponent(e)}/import`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chatId:t,sessionGapThreshold:s?.sessionGapThreshold})});if(!r.ok){const a=await r.text();return{success:!1,error:`HTTP ${r.status}: ${a}`}}return g(await S(r,{success:!1,error:"Unknown error"},o))}async releaseImportSource(e){await d(`${l()}/import-sources/${encodeURIComponent(e)}`,{method:"DELETE"})}getSupportedFormats(){return I("/supported-formats")}async importDemo(e,t,o){return new Promise(s=>{d(`${l()}/demo/import`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({locale:e,timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,sessionGapThreshold:o?.sessionGapThreshold})}).then(async r=>{if(!r.ok||!r.body){s({success:!1,error:`HTTP ${r.status}`});return}const a=r.body.getReader(),n=new TextDecoder;let y="";for(;;){const{done:w,value:p}=await a.read();if(w)break;y+=n.decode(p,{stream:!0});const u=y.split(`
4
4
  `);y=u.pop()||"";let f="";for(const c of u)if(c.startsWith("event: "))f=c.slice(7).trim();else if(c.startsWith("data: ")){const m=JSON.parse(c.slice(6));if(f==="progress")(m.stage==="downloading"||m.stage==="importing")&&t?.({stage:m.stage});else if(f==="result"){s(m);return}f=""}}s({success:!1,error:"Stream ended without result"})}).catch(r=>s({success:!1,error:String(r)}))})}async analyzeIncrementalImport(e,t){if(typeof t=="string")return{newMessageCount:0,duplicateCount:0,totalInFile:0,error:"File path not supported in Web mode"};const o=new FormData;o.append("file",t);const s=await d(`${l()}/sessions/${e}/import/incremental/analyze`,{method:"POST",body:o});if(!s.ok){const r=await s.text();return{newMessageCount:0,duplicateCount:0,totalInFile:0,error:`HTTP ${s.status}: ${r}`}}return await s.json()}async incrementalImport(e,t,o){if(typeof t=="string")return{success:!1,newMessageCount:0,error:"File path not supported in Web mode"};const s=new FormData;s.append("file",t);const r=await d(`${l()}/sessions/${e}/import/incremental`,{method:"POST",body:s});if(!r.ok){const a=await r.text();return{success:!1,newMessageCount:0,error:`HTTP ${r.status}: ${a}`}}return S(r,{success:!1,newMessageCount:0,error:"Unknown error"},o)}async importDirectory(e,t,o){if(typeof e=="string")return{success:!1,error:"Directory path import is not supported in Web mode"};if(e.length===0)return{success:!1,error:"No files in directory"};const s=new FormData;for(const a of e)s.append("files",a),s.append("relativePaths",a.webkitRelativePath||a.name);t?.sessionGapThreshold!==void 0&&s.append("sessionGapThreshold",String(t.sessionGapThreshold));const r=await d(`${l()}/import-directory`,{method:"POST",body:s});if(!r.ok){const a=await r.text();return{success:!1,error:`HTTP ${r.status}: ${a}`}}return g(await S(r,{success:!1,error:"Unknown error"},o))}}function x(i,e,t){const o=i[e]?.id??String(e);return t?.status==="cancelled"?{id:o,status:"cancelled"}:t?.status==="success"?{id:o,status:"success",result:g(t.result)}:{id:o,status:"failed",error:t?.error??t?.result?.error??"error.import_failed",result:t?.result?g(t.result):void 0}}export{B as FetchImportAdapter};
@@ -0,0 +1 @@
1
+ import{N as c,O as o,Q as l,S as m,T as $,U as a,V as y}from"./index-sWxuTsa7.js";import"./vendor-snapdom--nZvo8Sg.js";function S(i,e){e&&(e.startTs&&i.set("startTs",String(e.startTs)),e.endTs&&i.set("endTs",String(e.endTs)),e.memberId&&i.set("memberId",String(e.memberId)))}function n(i){const e=new URLSearchParams;S(e,i);const s=e.toString();return s?`?${s}`:""}function u(i){const e=new URLSearchParams;i?.mode&&e.set("mode",i.mode),i?.year&&e.set("year",String(i.year)),i?.days&&e.set("days",String(i.days)),i?.acceptStale&&e.set("acceptStale","1");const s=e.toString();return s?`?${s}`:""}class h{getSessions(){return c("/sessions")}getSession(e){return c(`/sessions/${e}`)}async deleteSession(e){return(await o(`/sessions/${e}`)).success}async renameSession(e,s){return(await l(`/sessions/${e}/name`,{name:s})).success}async updateSessionOwnerId(e,s){return(await l(`/sessions/${e}/owner`,{ownerId:s})).success}tryApplyOwnerProfile(e){return m(`/sessions/${e}/owner/apply-profile`,{})}setOwnerAndApplyProfile(e,s){return m(`/sessions/${e}/owner/select`,{ownerPlatformId:s})}async excludeOwnerSession(e){return(await m(`/sessions/${e}/owner/exclude`,{})).success}getContacts(e){const s=new URLSearchParams;e?.acceptStale&&s.set("acceptStale","1"),e?.timeRangePreset&&s.set("timeRange",e.timeRangePreset),e?.pool&&s.set("pool",e.pool),e?.page&&s.set("page",String(e.page)),e?.pageSize&&s.set("pageSize",String(e.pageSize)),e?.query&&s.set("q",e.query);const t=s.toString();return c(`/contacts${t?`?${t}`:""}`)}getContactDetail(e,s){const t=new URLSearchParams;s?.acceptStale&&t.set("acceptStale","1"),s?.timeRangePreset&&t.set("timeRange",s.timeRangePreset);const r=t.toString();return c(`/contacts/${encodeURIComponent(e)}/detail${r?`?${r}`:""}`)}recomputeContacts(e){const s=new URLSearchParams;e?.timeRangePreset&&s.set("timeRange",e.timeRangePreset),e?.pool&&s.set("pool",e.pool),e?.page&&s.set("page",String(e.page)),e?.pageSize&&s.set("pageSize",String(e.pageSize)),e?.query&&s.set("q",e.query);const t=s.toString();return m(`/contacts/recompute${t?`?${t}`:""}`,{})}async markContactAsFriend(e,s){const t=new URLSearchParams;s?.timeRangePreset&&t.set("timeRange",s.timeRangePreset);const r=t.toString();return(await $(`/contacts/${encodeURIComponent(e)}/mark-friend${r?`?${r}`:""}`)).success}async unmarkContactAsFriend(e,s){const t=new URLSearchParams;s?.timeRangePreset&&t.set("timeRange",s.timeRangePreset);const r=t.toString();return(await o(`/contacts/${encodeURIComponent(e)}/mark-friend${r?`?${r}`:""}`)).success}getPeopleRelationships(e){const s=new URLSearchParams;e?.acceptStale&&s.set("acceptStale","1"),e?.timeRangePreset&&s.set("timeRange",e.timeRangePreset),e?.graphScope&&s.set("scope",e.graphScope),e?.query&&s.set("q",e.query);const t=s.toString();return c(`/people/relationships${t?`?${t}`:""}`)}recomputePeopleRelationships(e){const s=new URLSearchParams;e?.timeRangePreset&&s.set("timeRange",e.timeRangePreset),e?.graphScope&&s.set("scope",e.graphScope),e?.query&&s.set("q",e.query);const t=s.toString();return m(`/people/relationships/recompute${t?`?${t}`:""}`,{})}getPeopleRelationshipNeighborhood(e,s){const t=new URLSearchParams;s?.acceptStale&&t.set("acceptStale","1"),s?.timeRangePreset&&t.set("timeRange",s.timeRangePreset),s?.graphScope&&t.set("scope",s.graphScope);const r=t.toString();return c(`/people/relationships/${encodeURIComponent(e)}/neighborhood${r?`?${r}`:""}`)}getAnnualSummary(e){return c(`/global-insight/annual-summary${u(e)}`)}recomputeAnnualSummary(e){return m(`/global-insight/annual-summary/recompute${u(e)}`,{})}getTimeInvestment(e){return c(`/global-insight/time-investment${u(e)}`)}recomputeTimeInvestment(e){return m(`/global-insight/time-investment/recompute${u(e)}`,{})}getAvailableYears(e){return c(`/sessions/${e}/years`)}getTimeRange(e){return c(`/sessions/${e}/time-range`)}getMemberActivity(e,s){return a(`/sessions/${e}/stats/member-activity${n(s)}`)}getHourlyActivity(e,s){return a(`/sessions/${e}/stats/hourly${n(s)}`)}getDailyActivity(e,s){return a(`/sessions/${e}/stats/daily${n(s)}`)}getWeekdayActivity(e,s){return a(`/sessions/${e}/stats/weekday${n(s)}`)}getMonthlyActivity(e,s){return a(`/sessions/${e}/analytics/monthly-activity${n(s)}`)}getYearlyActivity(e,s){return a(`/sessions/${e}/analytics/yearly-activity${n(s)}`)}getMessageLengthDistribution(e,s){return a(`/sessions/${e}/analytics/message-length-distribution${n(s)}`)}getMessageTypeDistribution(e,s){return a(`/sessions/${e}/stats/message-types${n(s)}`)}getTextStats(e,s){return a(`/sessions/${e}/analytics/text-stats${n(s)}`)}getLongMessageCount(e,s,t){const r=new URLSearchParams;s?.startTs&&r.set("startTs",String(s.startTs)),s?.endTs&&r.set("endTs",String(s.endTs)),s?.memberId&&r.set("memberId",String(s.memberId)),t!=null&&r.set("minLength",String(t));const g=r.toString();return a(`/sessions/${e}/analytics/long-message-count${g?`?${g}`:""}`)}getMemberMonthlyTrend(e,s){return a(`/sessions/${e}/analytics/member-monthly-trend${n(s)}`)}getTextLengthPercentiles(e,s){return a(`/sessions/${e}/analytics/text-length-percentiles${n(s)}`)}getWordFrequency(e,s){return y("/nlp/word-frequency",{sessionId:e,...s})}getDragonKingAnalysis(e,s){return a(`/sessions/${e}/analytics/dragon-king${n(s)}`)}getDivingAnalysis(e,s){return a(`/sessions/${e}/analytics/diving${n(s)}`)}getCheckInAnalysis(e,s){return a(`/sessions/${e}/analytics/check-in${n(s)}`)}getMemeBattleAnalysis(e,s){return a(`/sessions/${e}/analytics/meme-battle${n(s)}`)}getNightOwlAnalysis(e,s){return a(`/sessions/${e}/analytics/night-owl${n(s)}`)}getRepeatAnalysis(e,s){return a(`/sessions/${e}/analytics/repeat${n(s)}`)}getMembers(e){return c(`/sessions/${e}/members`)}getMembersPaginated(e,s){const t=new URLSearchParams({page:String(s.page),pageSize:String(s.pageSize)});return s.search&&t.set("search",s.search),s.sortOrder&&t.set("sortOrder",s.sortOrder),c(`/sessions/${e}/members/paginated?${t}`)}getMemberNameHistory(e,s){return c(`/sessions/${e}/members/${s}/history`)}async updateMemberAliases(e,s,t){return(await l(`/sessions/${e}/members/${s}/aliases`,{aliases:t})).success}async mergeMembers(e,s,t){return(await m(`/sessions/${e}/members/merge`,{memberId1:s,memberId2:t})).success}async deleteMember(e,s){return(await o(`/sessions/${e}/members/${s}`)).success}async deleteMembers(e,s){return(await m(`/sessions/${e}/members/batch-delete`,{memberIds:s})).success}getCatchphraseAnalysis(e,s){return a(`/sessions/${e}/analytics/catchphrase${n(s)}`)}getLanguagePreferenceAnalysis(e,s,t,r){const g=new URLSearchParams;return g.set("locale",s),t?.startTs&&g.set("startTs",String(t.startTs)),t?.endTs&&g.set("endTs",String(t.endTs)),t?.memberId&&g.set("memberId",String(t.memberId)),a(`/sessions/${e}/analytics/language-preference?${g}`)}getMentionAnalysis(e,s){return a(`/sessions/${e}/analytics/mention${n(s)}`)}getGroupRelationshipGalaxy(e,s){return a(`/sessions/${e}/analytics/relationship-galaxy${n(s)}`)}getClusterGraph(e,s,t){const r=new URLSearchParams;s?.startTs&&r.set("startTs",String(s.startTs)),s?.endTs&&r.set("endTs",String(s.endTs)),s?.memberId&&r.set("memberId",String(s.memberId)),t?.topEdges&&r.set("topEdges",String(t.topEdges)),t?.lookAhead&&r.set("lookAhead",String(t.lookAhead)),t?.decaySeconds&&r.set("decaySeconds",String(t.decaySeconds));const g=r.toString();return a(`/sessions/${e}/analytics/cluster${g?`?${g}`:""}`)}getLaughAnalysis(e,s,t){return y(`/sessions/${e}/analytics/laugh${n(s)}`,{keywords:t??[]})}getRelationshipStats(e,s,t){return a(`/sessions/${e}/analytics/relationship${n(s)}`)}getJourneyStats(e,s){return a(`/sessions/${e}/analytics/journey${n(s)}`)}executeSQL(e,s){return m(`/sessions/${e}/sql`,{sql:s})}getSchema(e){return c(`/sessions/${e}/schema`)}pluginQuery(e,s,t){return m(`/sessions/${e}/query`,{sql:s,params:t??[]})}}export{h as FetchDataAdapter};
@@ -1,6 +1,9 @@
1
- import{T as r,U as d}from"./index-D5m0P4ss.js";import"./vendor-snapdom--nZvo8Sg.js";function c(){return d("data")}const u=`(SELECT mc.message_id FROM message_context mc
1
+ import{W as r,X as m}from"./index-sWxuTsa7.js";import"./vendor-snapdom--nZvo8Sg.js";function u(){return m("data")}const c=`(SELECT mc.message_id FROM message_context mc
2
2
  JOIN message first_msg ON first_msg.id = mc.message_id
3
- WHERE mc.segment_id = segment.id ORDER BY first_msg.ts ASC, first_msg.id ASC LIMIT 1) as firstMessageId`;class h{async generate(s,t=1800){const e=await r(`/_web/sessions/${s}/generate-index`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({gapThreshold:t})});if(!e.ok)throw new Error(`Failed to generate session index: ${e.status}`);return(await e.json()).sessionCount}async generateIncremental(s,t=1800){const e=await r(`/_web/sessions/${s}/generate-incremental-index`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({gapThreshold:t})});if(!e.ok)throw new Error(`Failed to generate incremental session index: ${e.status}`);return(await e.json()).sessionCount}async hasIndex(s){return(await this.getStats(s)).hasIndex}async getStats(s){try{const e=(await c().pluginQuery(s,"SELECT COUNT(*) as cnt FROM segment",[]))[0]?.cnt??0;return{hasIndex:e>0,sessionCount:e,gapThreshold:1800}}catch{return{hasIndex:!1,sessionCount:0,gapThreshold:1800}}}async getAllIndexStats(){const s=await r("/_web/sessions/index-stats");return s.ok?await s.json():[]}async clear(s){return await r(`/_web/sessions/${s}/clear-index`,{method:"POST"}),!0}async updateGapThreshold(s,t){return!0}async getSessions(s){return c().pluginQuery(s,`SELECT id, start_ts as startTs, end_ts as endTs, message_count as messageCount, summary, ${u}
4
- FROM segment ORDER BY start_ts ASC`,[])}async getByTimeRange(s,t,e){return c().pluginQuery(s,`SELECT id, start_ts as startTs, end_ts as endTs, message_count as messageCount, summary, ${u}
5
- FROM segment WHERE start_ts >= ? AND end_ts <= ? ORDER BY start_ts ASC`,[t,e])}async getRecent(s,t){return c().pluginQuery(s,`SELECT id, start_ts as startTs, end_ts as endTs, message_count as messageCount, summary, ${u}
6
- FROM segment ORDER BY start_ts DESC LIMIT ?`,[t])}async generateSummary(s,t,e,a,o){try{const n=await r(`/_web/sessions/${s}/summaries/generate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({segmentId:t,locale:e,forceRegenerate:a,strategy:o})}),i=await n.json();return n.ok?i:{success:!1,error:i.error||`HTTP ${n.status}`}}catch(n){return{success:!1,error:n instanceof Error?n.message:String(n)}}}async generateSummaries(s,t,e){let a=0,o=0;const n=0;for(const i of t)try{(await this.generateSummary(s,i,e)).success?a++:o++}catch{o++}return{success:a,failed:o,skipped:n}}async checkCanGenerateSummary(s,t){try{const e=await r(`/_web/sessions/${s}/summaries/check-can-generate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({segmentIds:t})});return e.ok?await e.json():{}}catch{return{}}}}export{h as FetchSessionIndexAdapter};
3
+ WHERE mc.segment_id = segment.id ORDER BY first_msg.ts ASC, first_msg.id ASC LIMIT 1) as firstMessageId`;class l{async generate(s,t=1800){const e=await r(`/_web/sessions/${s}/generate-index`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({gapThreshold:t})});if(!e.ok)throw new Error(`Failed to generate session index: ${e.status}`);return(await e.json()).sessionCount}async generateIncremental(s,t=1800){const e=await r(`/_web/sessions/${s}/generate-incremental-index`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({gapThreshold:t})});if(!e.ok)throw new Error(`Failed to generate incremental session index: ${e.status}`);return(await e.json()).sessionCount}async hasIndex(s){return(await this.getStats(s)).hasIndex}async getStats(s){try{const e=(await u().pluginQuery(s,"SELECT COUNT(*) as cnt FROM segment",[]))[0]?.cnt??0;return{hasIndex:e>0,sessionCount:e,gapThreshold:1800}}catch{return{hasIndex:!1,sessionCount:0,gapThreshold:1800}}}async getAllIndexStats(){const s=await r("/_web/sessions/index-stats");return s.ok?await s.json():[]}async clear(s){return await r(`/_web/sessions/${s}/clear-index`,{method:"POST"}),!0}async updateGapThreshold(s,t){return!0}async getSessions(s){return u().pluginQuery(s,`SELECT id, start_ts as startTs, end_ts as endTs, message_count as messageCount, summary,
4
+ summary_message_count as summaryMessageCount, ${c}
5
+ FROM segment ORDER BY start_ts ASC`,[])}async getByTimeRange(s,t,e){return u().pluginQuery(s,`SELECT id, start_ts as startTs, end_ts as endTs, message_count as messageCount, summary,
6
+ summary_message_count as summaryMessageCount, ${c}
7
+ FROM segment WHERE start_ts >= ? AND end_ts <= ? ORDER BY start_ts ASC`,[t,e])}async getRecent(s,t){return u().pluginQuery(s,`SELECT id, start_ts as startTs, end_ts as endTs, message_count as messageCount, summary,
8
+ summary_message_count as summaryMessageCount, ${c}
9
+ FROM segment ORDER BY start_ts DESC LIMIT ?`,[t])}async generateSummary(s,t,e,n,o){try{const a=await r(`/_web/sessions/${s}/summaries/generate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({segmentId:t,locale:e,forceRegenerate:n,strategy:o})}),i=await a.json();return a.ok?i:{success:!1,error:i.error||`HTTP ${a.status}`}}catch(a){return{success:!1,error:a instanceof Error?a.message:String(a)}}}async generateSummaries(s,t,e){let n=0,o=0;const a=0;for(const i of t)try{(await this.generateSummary(s,i,e)).success?n++:o++}catch{o++}return{success:n,failed:o,skipped:a}}async checkCanGenerateSummary(s,t){try{const e=await r(`/_web/sessions/${s}/summaries/check-can-generate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({segmentIds:t})});return e.ok?await e.json():{}}catch{return{}}}}export{l as FetchSessionIndexAdapter};
@@ -0,0 +1 @@
1
+ import{N as t,T as o,O as r}from"./index-sWxuTsa7.js";import"./vendor-snapdom--nZvo8Sg.js";class u{load(){return t("/navigation-layout")}save(a){return o("/navigation-layout",a)}reset(){return r("/navigation-layout")}}export{u as FetchNavigationLayoutAdapter};
@@ -1 +1 @@
1
- import{K as a,N as s,O as n,L as i}from"./index-D5m0P4ss.js";import"./vendor-snapdom--nZvo8Sg.js";class c{async getAll(){return a("/ai/assistants")}async getConfig(t){try{return await a(`/ai/assistants/${t}`)}catch{return null}}async create(t){return s("/ai/assistants",t)}async update(t,r){return n(`/ai/assistants/${t}`,r)}async delete(t){return i(`/ai/assistants/${t}`)}async reset(t){return s(`/ai/assistants/${t}/reset`,{})}async getUpgradeInfo(t){return a(`/ai/assistants/${t}/upgrade-status`)}async upgradeWithBackup(t,r){return s(`/ai/assistants/${t}/upgrade`,{backupName:r})}async importFromMd(t){return s("/ai/assistants/import",{rawMd:t})}async getBuiltinCatalog(){return[]}async importBuiltin(t){return s("/ai/assistants/import-builtin",{builtinId:t})}async reimport(t){return s(`/ai/assistants/${t}/reimport`,{})}async getBuiltinToolCatalog(){return a("/ai/tools/catalog")}}export{c as FetchAssistantAdapter};
1
+ import{N as a,S as s,T as n,O as i}from"./index-sWxuTsa7.js";import"./vendor-snapdom--nZvo8Sg.js";class c{async getAll(){return a("/ai/assistants")}async getConfig(t){try{return await a(`/ai/assistants/${t}`)}catch{return null}}async create(t){return s("/ai/assistants",t)}async update(t,r){return n(`/ai/assistants/${t}`,r)}async delete(t){return i(`/ai/assistants/${t}`)}async reset(t){return s(`/ai/assistants/${t}/reset`,{})}async getUpgradeInfo(t){return a(`/ai/assistants/${t}/upgrade-status`)}async upgradeWithBackup(t,r){return s(`/ai/assistants/${t}/upgrade`,{backupName:r})}async importFromMd(t){return s("/ai/assistants/import",{rawMd:t})}async getBuiltinCatalog(){return[]}async importBuiltin(t){return s("/ai/assistants/import-builtin",{builtinId:t})}async reimport(t){return s(`/ai/assistants/${t}/reimport`,{})}async getBuiltinToolCatalog(){return a("/ai/tools/catalog")}}export{c as FetchAssistantAdapter};
@@ -1 +1 @@
1
- import{K as t,N as e}from"./index-D5m0P4ss.js";import"./vendor-snapdom--nZvo8Sg.js";class o{async getInfo(){return t("/cache/info")}async clear(a){return e("/cache/clear",{cacheId:a})}async getDataDir(){return t("/cache/data-dir")}async setDataDir(a,r=!0){return e("/cache/data-dir",{path:a,migrate:r})}async openDataDirCleanup(a){return e("/cache/data-dir/cleanup/open",{cleanupId:a})}async dismissDataDirCleanupNotice(a){return e("/cache/data-dir/cleanup/dismiss",{cleanupId:a})}async deleteDataDirCleanup(a){return e("/cache/data-dir/cleanup/delete",{cleanupId:a})}async getLatestImportLog(){return t("/cache/latest-import-log")}async saveToDownloads(a,r){return e("/cache/save-to-downloads",{filename:a,dataUrl:r})}async openDir(a){return e("/cache/open-dir",{cacheId:a})}async showInFolder(a){return e("/cache/show-in-folder",{filePath:a})}}export{o as FetchCacheAdapter};
1
+ import{N as t,S as e}from"./index-sWxuTsa7.js";import"./vendor-snapdom--nZvo8Sg.js";class o{async getInfo(){return t("/cache/info")}async clear(a){return e("/cache/clear",{cacheId:a})}async getDataDir(){return t("/cache/data-dir")}async setDataDir(a,r=!0){return e("/cache/data-dir",{path:a,migrate:r})}async openDataDirCleanup(a){return e("/cache/data-dir/cleanup/open",{cleanupId:a})}async dismissDataDirCleanupNotice(a){return e("/cache/data-dir/cleanup/dismiss",{cleanupId:a})}async deleteDataDirCleanup(a){return e("/cache/data-dir/cleanup/delete",{cleanupId:a})}async getLatestImportLog(){return t("/cache/latest-import-log")}async saveToDownloads(a,r){return e("/cache/save-to-downloads",{filename:a,dataUrl:r})}async openDir(a){return e("/cache/open-dir",{cacheId:a})}async showInFolder(a){return e("/cache/show-in-folder",{filePath:a})}}export{o as FetchCacheAdapter};
@@ -0,0 +1 @@
1
+ import{W as c}from"./index-sWxuTsa7.js";import"./vendor-snapdom--nZvo8Sg.js";class p{preflight(e,n){return s(`/_web/sessions/${encodeURIComponent(e)}/topics/preflight`,{method:"POST",body:JSON.stringify(n)})}start(e,n){return s(`/_web/sessions/${encodeURIComponent(e)}/topics/runs`,{method:"POST",body:JSON.stringify(n)})}generateDay(e,n,o,t){return s(`/_web/sessions/${encodeURIComponent(e)}/topics/days/${encodeURIComponent(n)}/generate`,{method:"POST",body:JSON.stringify({timezone:o,locale:t})})}getLatestRun(e){return s(`/_web/sessions/${encodeURIComponent(e)}/topics/runs/latest`)}getRun(e,n){return s(`/_web/sessions/${encodeURIComponent(e)}/topics/runs/${encodeURIComponent(n)}`)}pause(e,n){return this.runAction(e,n,"pause")}resume(e,n){return this.runAction(e,n,"resume")}cancel(e,n){return this.runAction(e,n,"cancel")}getDay(e,n,o){return s(`/_web/sessions/${encodeURIComponent(e)}/topics/days/${encodeURIComponent(n)}?timezone=${encodeURIComponent(o)}`)}async deleteDay(e,n){return(await s(`/_web/sessions/${encodeURIComponent(e)}/topics/days/${encodeURIComponent(n)}`,{method:"DELETE"})).success}runAction(e,n,o){return s(`/_web/sessions/${encodeURIComponent(e)}/topics/runs/${encodeURIComponent(n)}/${o}`,{method:"POST"})}}async function s(r,e={}){const n=new Headers(e.headers);e.body!==void 0&&n.set("Content-Type","application/json");const o=await c(r,{...e,headers:n});if(!o.ok){const t=await o.json().catch(()=>null);throw new Error(t?.error||t?.message||`HTTP ${o.status}`)}return o.json()}export{p as FetchChatTopicsAdapter};
@@ -1 +1 @@
1
- import{K as r,M as n}from"./index-D5m0P4ss.js";import"./vendor-snapdom--nZvo8Sg.js";class a{getPresentationPreferences(){return r("/preferences/bootstrap")}getPreferences(){return r("/preferences")}savePreferences(e){return n("/preferences",e)}getUiConfig(){return r("/preferences/ui-config")}saveUiConfig(e){return n("/preferences/ui-config",e)}async getLocale(){return(await r("/preferences/locale")).lang}saveLocale(e){return n("/preferences/locale",{lang:e})}}export{a as FetchPreferencesAdapter};
1
+ import{N as r,Q as n}from"./index-sWxuTsa7.js";import"./vendor-snapdom--nZvo8Sg.js";class a{getPresentationPreferences(){return r("/preferences/bootstrap")}getPreferences(){return r("/preferences")}savePreferences(e){return n("/preferences",e)}getUiConfig(){return r("/preferences/ui-config")}saveUiConfig(e){return n("/preferences/ui-config",e)}async getLocale(){return(await r("/preferences/locale")).lang}saveLocale(e){return n("/preferences/locale",{lang:e})}}export{a as FetchPreferencesAdapter};
@@ -1 +1 @@
1
- import{K as r,N as a,O as u,L as l,T as h}from"./index-D5m0P4ss.js";import"./vendor-snapdom--nZvo8Sg.js";const g="This feature is not available in web mode";class ${async getAIChat(e){try{return await r(`/ai/chats/${e}`)}catch{return null}}async getAIChats(e){return r(`/ai/chats?sessionId=${encodeURIComponent(e)}`)}async createAIChat(e,t,s){return a("/ai/chats",{sessionId:e,title:t,assistantId:s})}async updateAIChatTitle(e,t){return u(`/ai/chats/${e}/title`,{title:t})}async deleteAIChat(e){return l(`/ai/chats/${e}`)}async getMessages(e){return r(`/ai/chats/${e}/messages`)}async addMessage(e,t,s,c,n,o,i){return a(`/ai/chats/${e}/messages`,{role:t,content:s,dataKeywords:c,dataMessageCount:n,contentBlocks:o,tokenUsage:i})}async deleteMessagesFrom(e,t){return a(`/ai/chats/${e}/messages/${t}/delete-from`,{})}async forkAIChat(e,t,s){return a(`/ai/chats/${e}/fork`,{upToMessageId:t,title:s})}async updateMessageContent(e,t){await u(`/ai/messages/${e}/content`,{content:t})}async deleteAndRelinkMessage(e,t){await a(`/ai/chats/${e}/messages/${t}/delete-relink`,{})}async insertMessageAfter(e,t,s,c,n,o){return a(`/ai/chats/${e}/messages/insert-after`,{afterMessageId:t,role:s,content:c,contentBlocks:n,tokenUsage:o})}async getAIChatTokenUsage(e){return r(`/ai/chats/${e}/token-usage`)}async estimateContextTokens(e){try{return await r(`/ai/chats/${e}/estimate-tokens`)}catch(t){return{success:!1,tokens:0,error:t instanceof Error?t.message:String(t)}}}async exportFilterResultToFile(e){try{const t=await h(`/_web/sessions/${e.sessionId}/export`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionName:e.sessionName,format:e.format||"txt",timeFilter:e.timeFilter})});if(!t.ok)return{success:!1,error:(await t.json().catch(()=>null))?.error||`HTTP ${t.status}`};const s=await t.blob(),c=t.headers.get("Content-Disposition")?.match(/filename="?(.+?)"?$/)?.[1]||`${e.sessionName}_export.txt`,n=URL.createObjectURL(s),o=document.createElement("a");return o.href=n,o.download=decodeURIComponent(c),o.click(),URL.revokeObjectURL(n),{success:!0}}catch(t){return{success:!1,error:t instanceof Error?t.message:String(t)}}}onExportProgress(e){return()=>{}}async executeAiSQL(e){return a("/ai/debug/execute-sql",{sql:e})}async getAiSchema(){return r("/ai/debug/schema")}async clearDebugContext(){return a("/ai/debug/clear-debug-context",{})}async getToolCatalog(){try{return await r("/ai/tools/full-catalog")}catch{return r("/ai/tools/catalog")}}async executeTool(e,t,s,c){try{return await a("/ai/tools/execute",{testId:e,toolName:t,params:s,sessionId:c})}catch(n){return{success:!1,error:String(n)}}}async cancelToolTest(e){try{return await a("/ai/tools/cancel",{testId:e})}catch{return{success:!1}}}async getDefaultDesensitizeRules(e){try{return await r(`/ai/desensitize-rules/defaults?locale=${encodeURIComponent(e)}`)}catch{return[]}}async mergeDesensitizeRules(e,t,s={}){try{return await a("/ai/desensitize-rules/merge",{existingRules:e,locale:t,overrides:s})}catch{return e}}async showAiLogFile(){try{return await a("/ai/logs/show")}catch(e){return{success:!1,error:e instanceof Error?e.message:g}}}}export{$ as FetchAIAdapter};
1
+ import{N as r,S as a,T as u,O as l,W as h}from"./index-sWxuTsa7.js";import"./vendor-snapdom--nZvo8Sg.js";const g="This feature is not available in web mode";class ${async getAIChat(e){try{return await r(`/ai/chats/${e}`)}catch{return null}}async getAIChats(e){return r(`/ai/chats?sessionId=${encodeURIComponent(e)}`)}async createAIChat(e,t,s){return a("/ai/chats",{sessionId:e,title:t,assistantId:s})}async updateAIChatTitle(e,t){return u(`/ai/chats/${e}/title`,{title:t})}async deleteAIChat(e){return l(`/ai/chats/${e}`)}async getMessages(e){return r(`/ai/chats/${e}/messages`)}async addMessage(e,t,s,c,n,o,i){return a(`/ai/chats/${e}/messages`,{role:t,content:s,dataKeywords:c,dataMessageCount:n,contentBlocks:o,tokenUsage:i})}async deleteMessagesFrom(e,t){return a(`/ai/chats/${e}/messages/${t}/delete-from`,{})}async forkAIChat(e,t,s){return a(`/ai/chats/${e}/fork`,{upToMessageId:t,title:s})}async updateMessageContent(e,t){await u(`/ai/messages/${e}/content`,{content:t})}async deleteAndRelinkMessage(e,t){await a(`/ai/chats/${e}/messages/${t}/delete-relink`,{})}async insertMessageAfter(e,t,s,c,n,o){return a(`/ai/chats/${e}/messages/insert-after`,{afterMessageId:t,role:s,content:c,contentBlocks:n,tokenUsage:o})}async getAIChatTokenUsage(e){return r(`/ai/chats/${e}/token-usage`)}async estimateContextTokens(e){try{return await r(`/ai/chats/${e}/estimate-tokens`)}catch(t){return{success:!1,tokens:0,error:t instanceof Error?t.message:String(t)}}}async exportFilterResultToFile(e){try{const t=await h(`/_web/sessions/${e.sessionId}/export`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionName:e.sessionName,format:e.format||"txt",timeFilter:e.timeFilter})});if(!t.ok)return{success:!1,error:(await t.json().catch(()=>null))?.error||`HTTP ${t.status}`};const s=await t.blob(),c=t.headers.get("Content-Disposition")?.match(/filename="?(.+?)"?$/)?.[1]||`${e.sessionName}_export.txt`,n=URL.createObjectURL(s),o=document.createElement("a");return o.href=n,o.download=decodeURIComponent(c),o.click(),URL.revokeObjectURL(n),{success:!0}}catch(t){return{success:!1,error:t instanceof Error?t.message:String(t)}}}onExportProgress(e){return()=>{}}async executeAiSQL(e){return a("/ai/debug/execute-sql",{sql:e})}async getAiSchema(){return r("/ai/debug/schema")}async clearDebugContext(){return a("/ai/debug/clear-debug-context",{})}async getToolCatalog(){try{return await r("/ai/tools/full-catalog")}catch{return r("/ai/tools/catalog")}}async executeTool(e,t,s,c){try{return await a("/ai/tools/execute",{testId:e,toolName:t,params:s,sessionId:c})}catch(n){return{success:!1,error:String(n)}}}async cancelToolTest(e){try{return await a("/ai/tools/cancel",{testId:e})}catch{return{success:!1}}}async getDefaultDesensitizeRules(e){try{return await r(`/ai/desensitize-rules/defaults?locale=${encodeURIComponent(e)}`)}catch{return[]}}async mergeDesensitizeRules(e,t,s={}){try{return await a("/ai/desensitize-rules/merge",{existingRules:e,locale:t,overrides:s})}catch{return e}}async showAiLogFile(){try{return await a("/ai/logs/show")}catch(e){return{success:!1,error:e instanceof Error?e.message:g}}}}export{$ as FetchAIAdapter};
@@ -0,0 +1 @@
1
+ import{I as t,J as o,K as r,M as m}from"./index-sWxuTsa7.js";import{T as a}from"./service-DMysyLCa.js";import"./vendor-snapdom--nZvo8Sg.js";function u(){return{canConfigureOwner:!m.usesBrowserRuntime,get:e=>r().getTimeInvestment(e),recompute:e=>r().recomputeTimeInvestment(e),openOwnerSettings:()=>t().openSettings("data","missing-owner"),subscribeOwnerSettingsClosed:e=>{const n=t();return o(()=>n.showSettings,(s,i)=>{i&&!s&&e()})}}}function g(e){e.register(a,u())}export{u as createTimeInvestmentUiService,g as registerTimeInvestmentUiService};
@@ -0,0 +1 @@
1
+ import{I as t,J as o,K as r}from"./index-sWxuTsa7.js";import{A as s}from"./service-CVoA9yNf.js";import"./vendor-snapdom--nZvo8Sg.js";function u(){return{get:e=>r().getAnnualSummary(e),recompute:e=>r().recomputeAnnualSummary(e),openOwnerSettings:()=>t().openSettings("data","missing-owner"),subscribeOwnerSettingsClosed:e=>{const n=t();return o(()=>n.showSettings,(a,i)=>{i&&!a&&e()})}}}function g(e){e.register(s,u())}export{u as createAnnualSummaryUiService,g as registerAnnualSummaryUiService};