chatlab-cli 0.37.0 → 0.37.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.
- package/dist/{chat-command-WBAJBKIE.mjs → chat-command-YAFRLHMQ.mjs} +8 -8
- package/dist/{chunk-N2WGG3MS.mjs → chunk-2PY4XCH3.mjs} +6 -3
- package/dist/chunk-2PY4XCH3.mjs.map +1 -0
- package/dist/{chunk-FM3GXNEO.mjs → chunk-73TJ2S7W.mjs} +2 -2
- package/dist/{chunk-MSMDLDPB.mjs → chunk-ARIBCH47.mjs} +4 -4
- package/dist/{chunk-CR2MU7LN.mjs → chunk-FPVRSXQ4.mjs} +12 -12
- package/dist/{chunk-DQR2YS3I.mjs → chunk-GKCIRKOH.mjs} +8 -6
- package/dist/{chunk-DQR2YS3I.mjs.map → chunk-GKCIRKOH.mjs.map} +1 -1
- package/dist/{chunk-5YOHLJFB.mjs → chunk-JWJREWVN.mjs} +24 -7
- package/dist/chunk-JWJREWVN.mjs.map +1 -0
- package/dist/{chunk-RXMSZIYD.mjs → chunk-MMTEGUQA.mjs} +3 -3
- package/dist/{chunk-EJBBVLUN.mjs → chunk-N4SB6QZV.mjs} +2 -2
- package/dist/{chunk-4J4MA3RC.mjs → chunk-OTYNMDDL.mjs} +83 -55
- package/dist/chunk-OTYNMDDL.mjs.map +1 -0
- package/dist/{chunk-SQWN4GTQ.mjs → chunk-PDQV4RUA.mjs} +2 -2
- package/dist/{chunk-DKIYHA3O.mjs → chunk-UP6JIV3S.mjs} +15 -22
- package/dist/chunk-UP6JIV3S.mjs.map +1 -0
- package/dist/{chunk-2TV7M4CC.mjs → chunk-WDLO7OLX.mjs} +2 -2
- package/dist/cli.mjs +9 -9
- package/dist/contacts-worker.mjs +2 -2
- package/dist/global-insight-worker.mjs +1 -1
- package/dist/{http-X6OEOOSH.mjs → http-LPFPVTBC.mjs} +12 -12
- package/dist/{import-WBJ6YIQ7.mjs → import-T4WX2ZJL.mjs} +7 -7
- package/dist/index.mjs +12 -12
- package/dist/{mcp-FR6OKWKL.mjs → mcp-SMF3NWIN.mjs} +8 -8
- package/dist/people-relationships-worker.mjs +2 -2
- package/dist/semantic-index-worker.mjs +1 -1
- package/dist/{src-WE5HNN2O.mjs → src-EGLLMTAU.mjs} +6 -6
- package/dist/{stream-import-YYQVZDGQ.mjs → stream-import-2BXJTTCE.mjs} +7 -7
- package/dist/{worker-runtime-YGB5ZDE4.mjs → worker-runtime-RDLSPXFT.mjs} +5 -5
- package/dist-cli-web/assets/{AISettingsTab-Co2sM1iY.js → AISettingsTab-CEhrXlYR.js} +1 -1
- package/dist-cli-web/assets/{AboutTab-DQ8r6mYE.js → AboutTab-Bbu0SsMM.js} +1 -1
- package/dist-cli-web/assets/{ActionToolsPanel-CmYpw8Mt.css → ActionToolsPanel-DDNXXH8v.css} +1 -1
- package/dist-cli-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang-IB1yZxCE.js +75 -0
- package/dist-cli-web/assets/{Alert-DU1tLAAg.js → Alert-510jTN3l.js} +1 -1
- package/dist-cli-web/assets/{ApiSettingsTab-D5g5b79L.js → ApiSettingsTab-Bi1GRMN4.js} +1 -1
- package/dist-cli-web/assets/{BatchManageTab-BFUyVaGU.js → BatchManageTab-DhnqMCSM.js} +1 -1
- package/dist-cli-web/assets/{BufferResource-C-RfYwQW.js → BufferResource-CKZxnACp.js} +1 -1
- package/dist-cli-web/assets/{CanvasRenderer-Dz7JAMrR.js → CanvasRenderer-BeK5POBy.js} +1 -1
- package/dist-cli-web/assets/{CardDecoration-D28DI1G9.js → CardDecoration-RuBA3N2j.js} +1 -1
- package/dist-cli-web/assets/{ChatRecordDrawer-Cph819yY.js → ChatRecordDrawer-BY_-lIEj.js} +1 -1
- package/dist-cli-web/assets/{ChatRecordWorkspace-BAfERdPc.js → ChatRecordWorkspace-7prKd-Tq.js} +1 -1
- package/dist-cli-web/assets/{Checkbox-B8uqt13j.js → Checkbox-_eH64bb0.js} +1 -1
- package/dist-cli-web/assets/{DataDirCleanupNotice-3sGBE5vU.js → DataDirCleanupNotice-BHaXwlfr.js} +1 -1
- package/dist-cli-web/assets/{DatePicker.vue_vue_type_script_setup_true_lang-CQuub8-f.js → DatePicker.vue_vue_type_script_setup_true_lang-D9Ul_GYz.js} +1 -1
- package/dist-cli-web/assets/{DebugToolsPanel-Cwkr0BOY.js → DebugToolsPanel-ByKItGrS.js} +1 -1
- package/dist-cli-web/assets/{EChart.vue_vue_type_script_setup_true_lang-BuLujQCF.js → EChart.vue_vue_type_script_setup_true_lang-DubnuUXI.js} +1 -1
- package/dist-cli-web/assets/{EChartBar.vue_vue_type_script_setup_true_lang-DuA5xbcC.js → EChartBar.vue_vue_type_script_setup_true_lang-DKNCZuFm.js} +1 -1
- package/dist-cli-web/assets/{EChartLine.vue_vue_type_script_setup_true_lang-CvmMEfYq.js → EChartLine.vue_vue_type_script_setup_true_lang-Fl7xAOSR.js} +1 -1
- package/dist-cli-web/assets/{EChartWordcloud-CHVtyPR7.js → EChartWordcloud-C6XM4KOX.js} +1 -1
- package/dist-cli-web/assets/{FileDropZone.vue_vue_type_script_setup_true_lang-BKPy9Qv-.js → FileDropZone.vue_vue_type_script_setup_true_lang-DYDdRSNE.js} +1 -1
- package/dist-cli-web/assets/{Filter-CMfRHIoK.js → Filter-CByj_rCR.js} +1 -1
- package/dist-cli-web/assets/{GlobalTaskBar-Jz6MASCu.js → GlobalTaskBar-BdELjzrs.js} +1 -1
- package/dist-cli-web/assets/{GroupRelationshipGalaxyView-Ch4obfEq.js → GroupRelationshipGalaxyView-CnzPEgUS.js} +1 -1
- package/dist-cli-web/assets/{Label-CuryuymO.js → Label-DCIcxkhU.js} +1 -1
- package/dist-cli-web/assets/{LoadingState.vue_vue_type_script_setup_true_lang-CoeQsaiL.js → LoadingState.vue_vue_type_script_setup_true_lang-BBcCt_Qm.js} +1 -1
- package/dist-cli-web/assets/{MessageExportModal-JqGZ-iLr.js → MessageExportModal-DNU16Bs8.js} +1 -1
- package/dist-cli-web/assets/{PageHeader-D4up77TB.js → PageHeader-CKeZjNNR.js} +1 -1
- package/dist-cli-web/assets/{PageTabs.vue_vue_type_script_setup_true_lang-DYQRFk9s.js → PageTabs.vue_vue_type_script_setup_true_lang-C8M3wNNH.js} +1 -1
- package/dist-cli-web/assets/{RelationshipGalaxyCanvas-Cn7Eta5U.js → RelationshipGalaxyCanvas-CDhljGyJ.js} +3 -3
- package/dist-cli-web/assets/{RelationshipGalaxyThreeCanvas-LlaX57z6.js → RelationshipGalaxyThreeCanvas-BP8fsvvf.js} +1 -1
- package/dist-cli-web/assets/{RenderTargetSystem-JhA2PUFi.js → RenderTargetSystem-D76QrDT_.js} +1 -1
- package/dist-cli-web/assets/{RovingFocusItem-DHaiTb4j.js → RovingFocusItem-BJMUQ5DJ.js} +1 -1
- package/dist-cli-web/assets/{ScreenCaptureModal-Bxhyt5g1.js → ScreenCaptureModal-DkX4z-M1.js} +1 -1
- package/dist-cli-web/assets/{SectionTabs.vue_vue_type_script_setup_true_lang-BlAje3Tf.js → SectionTabs.vue_vue_type_script_setup_true_lang-qFhJO5B0.js} +1 -1
- package/dist-cli-web/assets/{Select-Beeqv0wU.js → Select-B5oJc5y1.js} +1 -1
- package/dist-cli-web/assets/SettingsModal-BO-QKQ2h.js +2 -0
- package/dist-cli-web/assets/{StorageTab-B7GHadia.js → StorageTab-CPPXXaRm.js} +1 -1
- package/dist-cli-web/assets/{Switch-u4zlvUMa.js → Switch-CDk3LZ4_.js} +1 -1
- package/dist-cli-web/assets/{Tabs-RWKHwtfM.js → Tabs-BMq9wODW.js} +1 -1
- package/dist-cli-web/assets/{Tabs-B7-Koq3x.js → Tabs-DqWTBV8x.js} +1 -1
- package/dist-cli-web/assets/{ThemeCard.vue_vue_type_script_setup_true_lang-ndsa3-aT.js → ThemeCard.vue_vue_type_script_setup_true_lang-D2outEOV.js} +1 -1
- package/dist-cli-web/assets/{TimeSelect.vue_vue_type_script_setup_true_lang-DKa1flT-.js → TimeSelect.vue_vue_type_script_setup_true_lang-BcflxP_U.js} +1 -1
- package/dist-cli-web/assets/{VisuallyHiddenInput-DGDqcvUy.js → VisuallyHiddenInput-BAFpkxMI.js} +1 -1
- package/dist-cli-web/assets/{WebGLRenderer-ifvgA1fe.js → WebGLRenderer-DjCPvR_O.js} +1 -1
- package/dist-cli-web/assets/{WebGPURenderer-DwzmuWF0.js → WebGPURenderer-C2B_u03z.js} +1 -1
- package/dist-cli-web/assets/aiChat--CR4g2M7.js +8 -0
- package/dist-cli-web/assets/{base-BWDX-164.js → base-F6s0vTrr.js} +1 -1
- package/dist-cli-web/assets/{browserAll-CSIIETeE.js → browserAll-DiUAZg4L.js} +1 -1
- package/dist-cli-web/assets/{chatMessages--r0obAVw.css → chatMessages-BGRbSlvD.css} +1 -1
- package/dist-cli-web/assets/{chatMessages-Zywjea1n.js → chatMessages-Bd33SSXI.js} +20 -20
- package/dist-cli-web/assets/{cli-web-BRY49NWe.js → cli-web-DoibEdj2.js} +1 -1
- package/dist-cli-web/assets/{fetch-jx1VdM9j.js → fetch-4nh1LaVF.js} +1 -1
- package/dist-cli-web/assets/{fetch-qBaUXqFt.js → fetch-7lUvXbhU.js} +1 -1
- package/dist-cli-web/assets/{fetch-DNSDHSqQ.js → fetch-BEaW1j5H.js} +1 -1
- package/dist-cli-web/assets/{fetch-wzv71PYy.js → fetch-B_YFABxI.js} +1 -1
- package/dist-cli-web/assets/{fetch-D3nLtFBi.js → fetch-BeX69kpS.js} +1 -1
- package/dist-cli-web/assets/{fetch-Bf4cqeM3.js → fetch-CRocA-4C.js} +1 -1
- package/dist-cli-web/assets/{fetch-BiXab0IF.js → fetch-CXM-cjDS.js} +1 -1
- package/dist-cli-web/assets/{fetch-Co2vLmiE.js → fetch-CXqeAbnY.js} +1 -1
- package/dist-cli-web/assets/{fetch-r6mhEGrP.js → fetch-CxVcHNid.js} +1 -1
- package/dist-cli-web/assets/fetch-DBpDMy29.js +1 -0
- package/dist-cli-web/assets/{fetch-mYSeL4Ki.js → fetch-DKBBS9Op.js} +1 -1
- package/dist-cli-web/assets/{fetch-DeHqF6yL.js → fetch-epFXmPIQ.js} +1 -1
- package/dist-cli-web/assets/{host-jXJHyyOX.js → host-C4rU8pKA.js} +1 -1
- package/dist-cli-web/assets/{host-1emQf9_4.js → host-CtSqR_Zm.js} +1 -1
- package/dist-cli-web/assets/{index-Cw0IhKZ6.js → index-4DVZ2g0M.js} +1 -1
- package/dist-cli-web/assets/{index-DnpnIyle.js → index-B1oj9KDv.js} +33 -33
- package/dist-cli-web/assets/{index-slDUxib2.js → index-BFH1j_R9.js} +1 -1
- package/dist-cli-web/assets/{index-DOqbUvhA.js → index-BvMAw3Zd.js} +1 -1
- package/dist-cli-web/assets/{index-2dJCozDq.js → index-CaYtkONV.js} +4 -4
- package/dist-cli-web/assets/{index-B4mJkX_d.js → index-CuCQ1d9f.js} +1 -1
- package/dist-cli-web/assets/index-D3Hyjv4e.js +137 -0
- package/dist-cli-web/assets/{index-ClHMs0-a.js → index-D8cHMqV-.js} +2 -2
- package/dist-cli-web/assets/{index-BQ463TS7.js → index-DlHuILT_.js} +1 -1
- package/dist-cli-web/assets/{index-6ejRbH3h.js → index-R4LqAnx9.js} +2 -2
- package/dist-cli-web/assets/{index-LV9LfFNu.js → index-_m1mf1jm.js} +1 -1
- package/dist-cli-web/assets/{index-CYc_VLgK.js → index-ekvsNmfe.js} +1 -1
- package/dist-cli-web/assets/{index-B7biznha.js → index-mXe1LssU.js} +1 -1
- package/dist-cli-web/assets/{index-BOcFyPCa.js → index-mbLXPIyC.js} +1 -1
- package/dist-cli-web/assets/{people-page-header-Cx5r9Bk2.js → people-page-header-BbYSSpsO.js} +1 -1
- package/dist-cli-web/assets/{prompt-BggEDxxi.js → prompt-C-ofJ7t_.js} +1 -1
- package/dist-cli-web/assets/{semantic-index-config-builder-1sO0aEc1.js → semantic-index-config-builder-D3TYVYC-.js} +1 -1
- package/dist-cli-web/assets/service-BYOUkk7V.js +1 -0
- package/dist-cli-web/assets/{service-Bvq1fRkC.js → service-CppETV4a.js} +1 -1
- package/dist-cli-web/assets/service-tEx-5LUL.js +1 -0
- package/dist-cli-web/assets/useFormControl-CrWi_6Hn.js +1 -0
- package/dist-cli-web/assets/{useTable-DC7oxmBl.js → useTable-Clk7ecq-.js} +1 -1
- package/dist-cli-web/assets/{useToast-CCPBE-Sy.js → useToast-B5LaA6c-.js} +1 -1
- package/dist-cli-web/assets/{webworkerAll-FCJk6reG.js → webworkerAll-CyA4b4LT.js} +1 -1
- package/dist-cli-web/index.html +1 -1
- package/package.json +3 -3
- package/dist/chunk-4J4MA3RC.mjs.map +0 -1
- package/dist/chunk-5YOHLJFB.mjs.map +0 -1
- package/dist/chunk-DKIYHA3O.mjs.map +0 -1
- package/dist/chunk-N2WGG3MS.mjs.map +0 -1
- package/dist-cli-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang--RPlmfIu.js +0 -75
- package/dist-cli-web/assets/SettingsModal-DV8yDBJs.js +0 -2
- package/dist-cli-web/assets/aiChat-BY4C3UQe.js +0 -8
- package/dist-cli-web/assets/fetch-C8CcoTWY.js +0 -1
- package/dist-cli-web/assets/index-kePiJ3ca.js +0 -137
- package/dist-cli-web/assets/service-DkPheDt8.js +0 -1
- package/dist-cli-web/assets/service-DvI8O_7K.js +0 -1
- package/dist-cli-web/assets/useFormControl-B0aShtLp.js +0 -1
- /package/dist/{chat-command-WBAJBKIE.mjs.map → chat-command-YAFRLHMQ.mjs.map} +0 -0
- /package/dist/{chunk-FM3GXNEO.mjs.map → chunk-73TJ2S7W.mjs.map} +0 -0
- /package/dist/{chunk-MSMDLDPB.mjs.map → chunk-ARIBCH47.mjs.map} +0 -0
- /package/dist/{chunk-CR2MU7LN.mjs.map → chunk-FPVRSXQ4.mjs.map} +0 -0
- /package/dist/{chunk-RXMSZIYD.mjs.map → chunk-MMTEGUQA.mjs.map} +0 -0
- /package/dist/{chunk-EJBBVLUN.mjs.map → chunk-N4SB6QZV.mjs.map} +0 -0
- /package/dist/{chunk-SQWN4GTQ.mjs.map → chunk-PDQV4RUA.mjs.map} +0 -0
- /package/dist/{chunk-2TV7M4CC.mjs.map → chunk-WDLO7OLX.mjs.map} +0 -0
- /package/dist/{http-X6OEOOSH.mjs.map → http-LPFPVTBC.mjs.map} +0 -0
- /package/dist/{import-WBJ6YIQ7.mjs.map → import-T4WX2ZJL.mjs.map} +0 -0
- /package/dist/{mcp-FR6OKWKL.mjs.map → mcp-SMF3NWIN.mjs.map} +0 -0
- /package/dist/{src-WE5HNN2O.mjs.map → src-EGLLMTAU.mjs.map} +0 -0
- /package/dist/{stream-import-YYQVZDGQ.mjs.map → stream-import-2BXJTTCE.mjs.map} +0 -0
- /package/dist/{worker-runtime-YGB5ZDE4.mjs.map → worker-runtime-RDLSPXFT.mjs.map} +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/AISettingsTab-Co2sM1iY.js","assets/index-DnpnIyle.js","assets/vendor-snapdom--nZvo8Sg.js","assets/index-BZpR015e.css","assets/Tabs-RWKHwtfM.js","assets/RovingFocusItem-DHaiTb4j.js","assets/Tabs-B7-Koq3x.js","assets/Alert-DU1tLAAg.js","assets/Select-Beeqv0wU.js","assets/useFormControl-B0aShtLp.js","assets/clamp-jFYhBC76.js","assets/VisuallyHiddenInput-DGDqcvUy.js","assets/semantic-index-config-builder-1sO0aEc1.js","assets/Switch-u4zlvUMa.js","assets/Label-CuryuymO.js","assets/prompt-BggEDxxi.js","assets/Checkbox-B8uqt13j.js","assets/BatchManageTab-BFUyVaGU.js","assets/useToast-CCPBE-Sy.js","assets/useTable-DC7oxmBl.js","assets/StorageTab-B7GHadia.js","assets/service-Bvq1fRkC.js","assets/AboutTab-DQ8r6mYE.js","assets/ApiSettingsTab-D5g5b79L.js","assets/SectionTabs.vue_vue_type_script_setup_true_lang-BlAje3Tf.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{d as R,bo as oe,o as i,f as C,bp as ne,m as ie,g as s,a6 as K,x as Z,c as f,a as e,z as d,a7 as Q,a9 as j,p as u,aq as le,w as H,a8 as re,n as W,l as V,b as T,e as A,J as X,ab as ce,aA as Y,I as de,aC as F,F as G,be as q,j as ue,O as ge,bq as me,aB as be,ad as ve,aa as pe,_ as fe,r as _e,K as he,aE as ye,br as xe,bs as O,bt as D,C as J,ah as ke}from"./index-DnpnIyle.js";import{_ as ee}from"./Tabs-RWKHwtfM.js";import{_ as we}from"./Switch-u4zlvUMa.js";import{T as Te}from"./Tabs-B7-Koq3x.js";import{u as Ce}from"./prompt-BggEDxxi.js";import{_ as Se}from"./PageTabs.vue_vue_type_script_setup_true_lang-DYQRFk9s.js";import"./vendor-snapdom--nZvo8Sg.js";import"./RovingFocusItem-DHaiTb4j.js";import"./Label-CuryuymO.js";import"./useFormControl-B0aShtLp.js";import"./VisuallyHiddenInput-DGDqcvUy.js";const $e=R({inheritAttrs:!1,__name:"UiIconButton",props:{icon:{},label:{},tone:{default:"neutral"},variant:{default:"ghost"},size:{default:"sm"},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},emits:["click","focus","blur","keydown","keyup"],setup(b,{emit:t}){const g=t,l=oe();return(r,m)=>(i(),C(ne,ie(s(l),{icon:b.icon,"accessible-label":b.label,tone:b.tone,variant:b.variant,size:b.size,loading:b.loading,disabled:b.disabled,onClick:m[0]||(m[0]=o=>g("click",o)),onFocus:m[1]||(m[1]=o=>g("focus",o)),onBlur:m[2]||(m[2]=o=>g("blur",o)),onKeydown:m[3]||(m[3]=o=>g("keydown",o)),onKeyup:m[4]||(m[4]=o=>g("keyup",o))}),null,16,["icon","accessible-label","tone","variant","size","loading","disabled"]))}}),Pe={class:"mb-3 flex items-center gap-2 text-sm font-semibold text-gray-900 dark:text-white"},Ve={class:"rounded-lg border border-gray-200 bg-gray-50 p-4 dark:border-gray-700 dark:bg-gray-800/50"},Ae={class:"flex items-center justify-between"},Ue={class:"flex-1 pr-4"},Be={class:"text-sm font-medium text-gray-900 dark:text-white"},Ie={class:"text-xs text-gray-500 dark:text-gray-400"},Le={class:"w-64"},Me={key:0,class:"mt-4 space-y-3"},ze={class:"mb-1.5 block text-xs font-medium text-gray-700 dark:text-gray-300"},Ee={key:0,class:"mt-1 text-xs text-red-500"},Oe={key:1,class:"mt-1 text-xs text-gray-400"},De={class:"flex items-center gap-3"},je={key:0,class:"flex items-center gap-1.5"},Re=R({__name:"NetworkSettingsSection",setup(b){const{t}=K(),g=T("system"),l=T(""),r=T(""),m=T(!1),o=T(!1),n=T(null),x=A(()=>[{label:t("settings.basic.network.modeOff"),value:"off"},{label:t("settings.basic.network.modeSystem"),value:"system"},{label:t("settings.basic.network.modeManual"),value:"manual"}]);async function w(){try{const a=await window.networkApi.getProxyConfig();g.value=a.mode||"system",l.value=a.url||""}catch(a){console.error("获取代理配置失败:",a)}}function S(a){if(!a)return r.value="",!0;try{const k=new URL(a);return["http:","https:"].includes(k.protocol)?(r.value="",!0):(r.value=t("settings.basic.network.onlyHttpSupported"),!1)}catch{return r.value=t("settings.basic.network.invalidProxyUrl"),!1}}async function $(){if(n.value=null,g.value==="manual"&&!l.value.trim()){r.value=t("settings.basic.network.enterProxyFirst");return}if(!(g.value==="manual"&&!S(l.value))){m.value=!0;try{const a=await window.networkApi.saveProxyConfig({mode:g.value,url:l.value.trim()});a.success||(r.value=a.error||t("settings.basic.network.saveFailed"))}catch(a){console.error("保存代理配置失败:",a),r.value=t("settings.basic.network.saveFailed")}finally{m.value=!1}}}async function B(a){const k=a;g.value=k,n.value=null,r.value="",k!=="manual"&&await $()}function U(){n.value=null,l.value?S(l.value):r.value=""}async function L(){g.value==="manual"&&l.value.trim()&&await $()}async function v(){if(!l.value.trim()){r.value=t("settings.basic.network.enterProxyFirst");return}if(S(l.value)){o.value=!0,n.value=null;try{const a=await window.networkApi.testProxyConnection(l.value.trim());n.value={success:a.success,message:a.success?t("settings.basic.network.connectionSuccess"):a.error||t("settings.basic.network.connectionFailed")}}catch(a){n.value={success:!1,message:t("settings.basic.network.connectionFailed")+": "+(a instanceof Error?a.message:String(a))}}finally{o.value=!1}}}return Z(()=>{w()}),(a,k)=>{const I=Q,M=ee,z=le,_=re;return i(),f("div",null,[e("h3",Pe,[d(I,{name:"i-heroicons-globe-alt",class:"h-4 w-4 text-cyan-500"}),j(" "+u(s(t)("settings.basic.network.title")),1)]),e("div",Ve,[e("div",Ae,[e("div",Ue,[e("p",Be,u(s(t)("settings.basic.network.proxyMode")),1),e("p",Ie,u(s(t)("settings.basic.network.proxyModeDesc")),1)]),e("div",Le,[d(M,{"model-value":g.value,size:"sm",class:"gap-0",items:x.value,"onUpdate:modelValue":B},null,8,["model-value","items"])])]),g.value==="manual"?(i(),f("div",Me,[e("div",null,[e("label",ze,u(s(t)("settings.basic.network.proxyAddress")),1),d(z,{modelValue:l.value,"onUpdate:modelValue":k[0]||(k[0]=h=>l.value=h),placeholder:s(t)("settings.basic.network.proxyPlaceholder"),color:r.value?"error":"neutral",size:"sm",class:"w-full",onInput:U,onBlur:L},null,8,["modelValue","placeholder","color"]),r.value?(i(),f("p",Ee,u(r.value),1)):(i(),f("p",Oe,u(s(t)("settings.basic.network.proxyHelp")),1))]),e("div",De,[d(_,{loading:o.value,disabled:o.value||!l.value.trim(),color:"neutral",variant:"soft",size:"sm",onClick:v},{default:H(()=>[d(I,{name:"i-heroicons-signal",class:"mr-1 h-4 w-4"}),j(" "+u(o.value?s(t)("settings.basic.network.testing"):s(t)("settings.basic.network.testConnection")),1)]),_:1},8,["loading","disabled"]),n.value?(i(),f("div",je,[d(I,{name:n.value.success?"i-heroicons-check-circle":"i-heroicons-x-circle",class:W(["h-4 w-4",n.value.success?"text-green-500":"text-red-500"])},null,8,["name","class"]),e("span",{class:W(["text-xs",n.value.success?"text-green-600 dark:text-green-400":"text-red-600 dark:text-red-400"])},u(n.value.message),3)])):V("",!0)])])):V("",!0)])])}}}),Ne={class:"space-y-6 pb-6"},Fe={class:"mb-3 flex items-center gap-2 text-sm font-semibold text-gray-900 dark:text-white"},qe={class:"rounded-lg border border-gray-200 bg-gray-50 dark:border-gray-700 dark:bg-gray-800/50"},He={class:"flex items-center justify-between p-4"},Ke={class:"flex-1 pr-4"},Ge={class:"text-sm font-medium text-gray-900 dark:text-white"},Je={class:"w-72"},We={class:"flex items-center justify-between p-4"},Ye={class:"flex-1 pr-4"},Ze={class:"text-sm font-medium text-gray-900 dark:text-white"},Qe={class:"text-xs text-gray-500 dark:text-gray-400"},Xe={class:"flex items-center justify-between p-4"},et={class:"flex-1 pr-4"},tt={class:"text-sm font-medium text-gray-900 dark:text-white"},st={class:"w-64"},at={class:"mb-3 flex items-center gap-2 text-sm font-semibold text-gray-900 dark:text-white"},ot={class:"rounded-lg border border-gray-200 bg-gray-50 dark:border-gray-700 dark:bg-gray-800/50"},nt={class:"flex items-center justify-between p-4"},it={class:"flex-1 pr-4"},lt={class:"text-sm font-medium text-gray-900 dark:text-white"},rt={class:"w-64"},ct={class:"flex items-center justify-between p-4"},dt={class:"flex-1 pr-4"},ut={class:"text-sm font-medium text-gray-900 dark:text-white"},gt={class:"flex shrink-0 items-center gap-1.5"},mt=["aria-label","aria-pressed","onClick"],bt={key:0,class:"absolute inset-0 flex items-center justify-center text-gray-800/70"},vt={class:"mb-3 flex items-center gap-2 text-sm font-semibold text-gray-900 dark:text-white"},pt={class:"rounded-lg border border-gray-200 bg-gray-50 dark:border-gray-700 dark:bg-gray-800/50"},ft={class:"flex items-center justify-between p-4"},_t={class:"flex-1 pr-4"},ht={class:"text-sm font-medium text-gray-900 dark:text-white"},yt={class:"w-64"},xt={key:0,class:"border-t border-gray-200 dark:border-gray-700"},kt={key:1,class:"flex items-center justify-between p-4"},wt={class:"flex-1 pr-4"},Tt={class:"text-sm font-medium text-gray-900 dark:text-white"},Ct={class:"text-xs text-gray-500 dark:text-gray-400"},St={class:"w-64"},$t=R({__name:"BasicSettingsTab",props:{showToolsPanel:{type:Boolean,default:!0}},setup(b){const{t}=K(),g=X(),l=ce(),{toolsPanelPosition:r}=Y(g),{locale:m,defaultSessionTab:o,insightCardTheme:n,debugMode:x}=Y(l),w=T(!1),S=T(!0),$=F,B=T("background");let U="background";Z(async()=>{{S.value=!1;return}});async function L(y){}async function v(y){if(y!=="background"&&y!=="quit")return;const c=y;B.value=c,(await be().setDesktopCloseBehavior(c)).success?U=c:B.value=U}const a=de({emitAuto:!0,initialValue:"light"}),k=A(()=>[{label:t("settings.basic.appearance.auto"),value:"auto"},{label:t("settings.basic.appearance.light"),value:"light"},{label:t("settings.basic.appearance.dark"),value:"dark"}]);function I(y,c){return{background:`linear-gradient(135deg, color-mix(in srgb, ${y} 35%, white), color-mix(in srgb, ${c} 42%, white))`}}function M(y){n.value=y}const z=A(()=>ve.map(y=>({label:y.nativeName,value:y.code}))),_=A({get:()=>m.value,set:y=>l.setLocale(y)}),h=A(()=>[{label:t("settings.basic.defaultTab.insights"),value:"insights"},{label:t("settings.basic.defaultTab.aiChat"),value:"ai-chat"}]),P=A(()=>[{label:t("settings.basic.toolsPanel.positionHeader"),value:"header"},{label:t("settings.basic.toolsPanel.positionSide"),value:"side"}]),te=A(()=>[{label:t("settings.basic.closeBehavior.background"),value:"background"},{label:t("settings.basic.closeBehavior.quit"),value:"quit"}]);return(y,c)=>{const E=Q,se=we,N=ee;return i(),f("div",Ne,[e("div",null,[e("h3",Fe,[d(E,{name:"i-heroicons-cog-6-tooth",class:"h-4 w-4 text-gray-500"}),j(" "+u(s(t)("settings.basic.general.title")),1)]),e("div",qe,[e("div",He,[e("div",Ke,[e("p",Ge,u(s(t)("settings.basic.language.description")),1)]),e("div",Je,[d(Te,{modelValue:_.value,"onUpdate:modelValue":c[0]||(c[0]=p=>_.value=p),size:"sm",class:"gap-0",items:z.value},null,8,["modelValue","items"])])]),s(F)?(i(),f(G,{key:0},[c[6]||(c[6]=e("div",{class:"border-t border-gray-200 dark:border-gray-700"},null,-1)),e("div",We,[e("div",Ye,[e("p",Ze,u(s(t)("settings.basic.autoLaunch.openAtLogin")),1),e("p",Qe,u(S.value?s(t)("settings.basic.autoLaunch.openAtLoginDesc"):s(t)("settings.basic.autoLaunch.devModeHint")),1)]),d(se,{modelValue:w.value,"onUpdate:modelValue":[c[1]||(c[1]=p=>w.value=p),L],disabled:!S.value},null,8,["modelValue","disabled"])]),s($)?(i(),f(G,{key:0},[c[5]||(c[5]=e("div",{class:"border-t border-gray-200 dark:border-gray-700"},null,-1)),e("div",Xe,[e("div",et,[e("p",tt,u(s(t)("settings.basic.closeBehavior.label")),1)]),e("div",st,[d(N,{"model-value":B.value,size:"sm",class:"gap-0",items:te.value,"onUpdate:modelValue":v},null,8,["model-value","items"])])])],64)):V("",!0)],64)):V("",!0)])]),e("div",null,[e("h3",at,[d(E,{name:"i-heroicons-paint-brush",class:"h-4 w-4 text-pink-500"}),j(" "+u(s(t)("settings.basic.appearance.title")),1)]),e("div",ot,[e("div",nt,[e("div",it,[e("p",lt,u(s(t)("settings.basic.appearance.themeMode")),1)]),e("div",rt,[d(N,{modelValue:s(a),"onUpdate:modelValue":c[2]||(c[2]=p=>q(a)?a.value=p:null),size:"sm",class:"gap-0",items:k.value},null,8,["modelValue","items"])])]),c[7]||(c[7]=e("div",{class:"border-t border-gray-200 dark:border-gray-700"},null,-1)),e("div",ct,[e("div",dt,[e("p",ut,u(s(t)("settings.basic.appearance.insightCardTheme")),1)]),e("div",gt,[(i(!0),f(G,null,ue(s(me),(p,ae)=>(i(),f("button",{key:p.id,type:"button",class:"group flex h-9 w-9 items-center justify-center rounded-full outline-none transition-colors hover:bg-gray-200/60 focus-visible:ring-2 focus-visible:ring-primary-500/40 dark:hover:bg-gray-700/70","aria-label":s(t)("settings.basic.appearance.insightCardThemeOption",{index:ae+1}),"aria-pressed":s(n)===p.id,onClick:Rt=>M(p.id)},[e("span",{class:W(["relative block h-6 w-6 overflow-hidden rounded-full shadow-sm ring-1 transition-all",s(n)===p.id?"ring-2 ring-primary-500 ring-offset-2 ring-offset-gray-50 dark:ring-primary-400 dark:ring-offset-gray-800":"ring-black/5 group-hover:ring-black/10 dark:ring-white/10 dark:group-hover:ring-white/20"]),style:ge(I(p.startColor,p.endColor))},[s(n)===p.id?(i(),f("span",bt,[d(E,{name:"i-heroicons-check-20-solid",class:"h-3.5 w-3.5"})])):V("",!0)],6)],8,mt))),128))])])])]),e("div",null,[e("h3",vt,[d(E,{name:"i-heroicons-adjustments-horizontal",class:"h-4 w-4 text-purple-500"}),j(" "+u(s(t)("settings.basic.preferences.title")),1)]),e("div",pt,[e("div",ft,[e("div",_t,[e("p",ht,u(s(t)("settings.basic.defaultTab.description")),1)]),e("div",yt,[d(N,{modelValue:s(o),"onUpdate:modelValue":c[3]||(c[3]=p=>q(o)?o.value=p:null),size:"sm",class:"gap-0",items:h.value},null,8,["modelValue","items"])])]),b.showToolsPanel&&s(x)?(i(),f("div",xt)):V("",!0),b.showToolsPanel&&s(x)?(i(),f("div",kt,[e("div",wt,[e("p",Tt,u(s(t)("settings.basic.toolsPanel.positionLabel")),1),e("p",Ct,u(s(t)("settings.basic.toolsPanel.positionDesc")),1)]),e("div",St,[d(N,{modelValue:s(r),"onUpdate:modelValue":c[4]||(c[4]=p=>q(r)?r.value=p:null),size:"sm",class:"gap-0",items:P.value},null,8,["modelValue","items"])])])):V("",!0)])]),s(F)?(i(),C(Re,{key:0})):V("",!0)])}}}),Pt={class:"flex h-[100dvh] min-h-0 flex-col overflow-hidden sm:h-[85vh] sm:min-h-[650px]"},Vt={class:"shrink-0 border-b border-gray-200 px-4 pt-4 sm:px-6 sm:pt-5 dark:border-gray-800"},At={class:"flex items-center justify-between"},Ut={class:"flex items-center gap-3"},Bt={class:"flex h-8 w-8 items-center justify-center rounded-lg bg-primary-600 dark:bg-primary-500"},It={class:"text-lg font-semibold text-gray-900 dark:text-white"},Lt={class:"relative flex-1"},Mt={class:"absolute inset-0 overflow-y-auto p-4 sm:p-6"},zt=R({__name:"SettingsDialogShell",props:{open:{type:Boolean},activeTab:{},tabs:{}},emits:["update:open","update:activeTab"],setup(b,{emit:t}){const g=b,l=t,{t:r}=K(),m=A({get:()=>g.activeTab,set:o=>l("update:activeTab",o)});return(o,n)=>{const x=pe;return i(),C(x,{open:b.open,ui:{content:"w-full sm:max-w-[900px] z-[100]",overlay:"z-[99] bg-gray-200/80 backdrop-blur-sm dark:bg-page-dark/80"},"onUpdate:open":n[2]||(n[2]=w=>l("update:open",w))},{content:H(()=>[e("div",Pt,[e("div",Vt,[e("div",At,[e("div",Ut,[e("div",Bt,[d(s(fe),{name:"i-heroicons-cog-6-tooth",size:"md",class:"text-white"})]),e("h2",It,u(s(r)("settings.title")),1)]),d(s($e),{icon:"i-heroicons-x-mark",label:s(r)("common.close"),onClick:n[0]||(n[0]=w=>l("update:open",!1))},null,8,["label"])]),d(s(Se),{modelValue:m.value,"onUpdate:modelValue":n[1]||(n[1]=w=>m.value=w),class:"mt-4 pb-3",items:b.tabs},null,8,["modelValue","items"])]),e("div",Lt,[e("div",Mt,[_e(o.$slots,"default")])])])]),_:3},8,["open"])}}});function Et(b,t){return he(b,t,{immediate:!0})}const Ot={key:"settings",class:"h-full"},Dt={key:"about",class:"h-full overflow-y-auto"},jt=R({__name:"SettingsModal",setup(b){const t=O(()=>D(()=>import("./AISettingsTab-Co2sM1iY.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]))),g=null,l=O(()=>D(()=>import("./BatchManageTab-BFUyVaGU.js"),__vite__mapDeps([17,1,2,3,16,9,11,5,14,18,19]))),r=O(()=>D(()=>import("./StorageTab-B7GHadia.js"),__vite__mapDeps([20,1,2,3,4,5,21]))),m=O(()=>D(()=>import("./AboutTab-DQ8r6mYE.js"),__vite__mapDeps([22,13,1,2,3,14,9,11,18]))),o=O(()=>D(()=>import("./ApiSettingsTab-D5g5b79L.js"),__vite__mapDeps([23,1,2,3,13,14,9,11,24,16,5,4]))),n=null,{t:x}=K(),w=Ce(),S=X(),{showSettings:$,settingsTab:B,settingsSubTab:U}=Y(S),L=A(()=>[{id:"settings",label:x("settings.tabs.basic"),icon:"i-heroicons-cog-6-tooth"},{id:"ai",label:x("settings.tabs.ai"),icon:"i-heroicons-sparkles"},{id:"api",label:x("settings.tabs.api"),icon:"i-heroicons-server-stack"},{id:"data",label:x("settings.tabs.dataManage"),icon:"i-heroicons-rectangle-stack"},{id:"storage",label:x("settings.tabs.storage"),icon:"i-heroicons-folder-open"},{id:"about",label:x("settings.tabs.about"),icon:"i-heroicons-information-circle"}]),v=T("settings"),a=T({});function k(_,h){a.value[_]=h}function I(){w.notifyAIConfigChanged()}function M(_){v.value=_,J(()=>{a.value[_]?.refresh?.()})}function z(_){const h=a.value[v.value];h?.scrollToSection&&h.scrollToSection(_)}return Et($,async _=>{if(_){const h=B.value||"settings";v.value=L.value.some(P=>P.id===h)?h:"settings",U.value&&(await J(),setTimeout(()=>z(U.value),100)),J(()=>{a.value[v.value]?.refresh?.()})}}),(_,h)=>(i(),C(zt,{open:s($),"onUpdate:open":h[0]||(h[0]=P=>q($)?$.value=P:null),"active-tab":v.value,tabs:L.value,"onUpdate:activeTab":M},{default:H(()=>[d(ye,{name:"tab-slide",mode:"out-in"},{default:H(()=>[v.value==="settings"?(i(),f("div",Ot,[d($t)])):v.value==="ai"?(i(),C(s(t),{key:"ai",ref:P=>k("ai",P),onConfigChanged:I},null,512)):s(xe)&&v.value==="navigation"?(i(),C(s(g),{key:"navigation"})):v.value==="data"?(i(),C(s(l),{key:"data","focus-owner-issues":s(U)==="missing-owner"},null,8,["focus-owner-issues"])):v.value==="api"?(i(),C(s(o),{key:"api"})):v.value==="storage"?(i(),C(s(r),{key:"storage",ref:P=>k("storage",P)},null,512)):s(F)&&v.value==="security"?(i(),C(s(n),{key:"security"})):v.value==="about"?(i(),f("div",Dt,[d(s(m))])):V("",!0)]),_:1})]),_:1},8,["open","active-tab","tabs"]))}}),Xt=ke(jt,[["__scopeId","data-v-0c35b6a3"]]);export{Xt as default};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-DnpnIyle.js","assets/vendor-snapdom--nZvo8Sg.js","assets/index-BZpR015e.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{$ as qt,h as ht,b as z,e as ae,aB as rt,aG as st,bP as ut,bQ as Vt,Z as Gt,bt as Qt,bR as Ct,ap as Yt,ab as Zt,bS as Xt,aA as Kt,L as At,aF as ke,bT as bt,a5 as es}from"./index-DnpnIyle.js";import{u as ts}from"./prompt-BggEDxxi.js";import{C as Ot}from"./chatlabSiteLocale-CrCNb8QP.js";const Ve="chart_runtime",ss=4e3,ns=`
|
|
3
|
-
…[truncated]`;function wt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Bt(e){return!wt(e)||!Array.isArray(e.content)?"":e.content.map(s=>wt(s)&&s.type==="text"&&typeof s.text=="string"?s.text:"").filter(s=>s.length>0).join(`
|
|
4
|
-
`)}function Rt(e,s=ss){return e.length<=s?e:e.slice(0,s)+ns}function se(){return qt("assistant-crud")}function Te(){return qt("skill-crud")}const Mt=Ot,rs={"zh-CN":"cn","zh-TW":"cn","en-US":"en","ja-JP":"ja"},$t=ht("assistant",()=>{const e=z([]),s=z(null),o=z(!1),c=new Set;let i=null;const g=z([]),b=z([]),C=z([]),w=z(!1),M=z(null),q=z("group"),W=z("zh-CN"),D=ae(()=>s.value?e.value.find(m=>m.id===s.value)??null:null),O=ae(()=>e.value.filter(m=>{const f=!m.applicableChatTypes?.length||m.applicableChatTypes.includes(q.value),R=!m.supportedLocales?.length||m.supportedLocales.some(H=>W.value.startsWith(H));return f&&R})),G=4,re=ae(()=>O.value.slice(0,G)),$=ae(()=>O.value.slice(G)),L=ae(()=>O.value.length>G),Z=ae(()=>{const m=new Set(e.value.map(f=>f.id));return C.value.map(f=>({...f,imported:m.has(f.id)}))});function Ae(m,f){q.value=m,W.value=f}async function te(){try{const m=se();e.value=await m.getAll(),o.value=!0}catch(m){console.error("[AssistantStore] Failed to load assistants:",m)}}async function ie(){try{g.value=await se().getBuiltinCatalog()}catch(m){console.error("[AssistantStore] Failed to load builtin catalog:",m)}}async function be(){try{b.value=await se().getBuiltinToolCatalog()}catch(m){console.error("[AssistantStore] Failed to load builtin tool catalog:",m)}}async function he(m){const f=rs[m||W.value]??"en",R=`${Mt}/${f}/assistant.json`;w.value=!0,M.value=null;try{const H=await rt().fetchRemoteConfig(R);if(!H.success||!H.data){M.value=H.error||"Failed to fetch cloud catalog",C.value=[];return}const $e=H.data;if(!Array.isArray($e)){M.value="Invalid catalog format",C.value=[];return}C.value=$e.filter(Be=>Be.id&&Be.name&&Be.path)}catch(H){M.value=String(H),C.value=[]}finally{w.value=!1}}async function j(m){const f=`${Mt}${m.path}`;try{const R=await rt().fetchRemoteConfig(f);if(!R.success||typeof R.data!="string")return{success:!1,error:R.error||"Failed to fetch assistant content"};const H=await se().importFromMd(R.data);return H.success&&await te(),H}catch(R){return{success:!1,error:String(R)}}}function qe(m){return e.value.some(f=>f.id===m)}function Oe(m){s.value=m}function le(){s.value=null}async function _e(m){try{return await se().getConfig(m)}catch(f){return console.error("[AssistantStore] Failed to get config:",f),null}}async function I(m,f){try{const R=await se().update(m,f);return R.success&&await te(),R}catch(R){return{success:!1,error:String(R)}}}async function h(m){try{const f=await se().reset(m);return f.success&&await te(),f}catch(f){return{success:!1,error:String(f)}}}async function P(m){const f=st(m);if(c.has(f))return null;c.add(f);try{const R=await se().getUpgradeInfo(f);if(!R)return null;try{if(i||(i={...(await ut().getPreferences()).assistantUpgradeSkippedVersions}),R.latestVersion!==null&&i[R.builtinId]===R.latestVersion)return null}catch(H){console.error("[AssistantStore] Failed to load skipped assistant upgrades:",H)}return R}catch(R){return c.delete(f),console.error("[AssistantStore] Failed to check assistant upgrade:",R),null}}async function ce(m){if(m.latestVersion===null)return{success:!1,error:"Assistant template version is unavailable"};try{i||(i={...(await ut().getPreferences()).assistantUpgradeSkippedVersions});const f={...i,[m.builtinId]:m.latestVersion},R=await ut().savePreferences({assistantUpgradeSkippedVersions:f});return R.success&&(i=f),R}catch(f){return{success:!1,error:String(f)}}}async function we(m,f){try{const R=await se().upgradeWithBackup(m.assistantId,f);return R.success&&await te(),R}catch(R){return{success:!1,error:String(R)}}}async function Qe(m){try{const f=await se().importBuiltin(m);return f.success&&(await te(),await ie()),f}catch(f){return{success:!1,error:String(f)}}}async function ot(m){try{const f=await se().reimport(m);return f.success&&(await te(),await ie()),f}catch(f){return{success:!1,error:String(f)}}}async function at(m){try{const f=await se().create(m);return f.success&&await te(),f}catch(f){return{success:!1,error:String(f)}}}async function Ye(m){try{const f=se(),R=await f.getConfig(m);if(!R)return{success:!1,error:"Assistant not found"};const{id:H,builtinId:$e,...Be}=R,ze=await f.create({...Be,name:`${R.name}${Vt.global.t("ai.assistant.duplicateSuffix")}`});return ze.success&&await te(),ze}catch(f){return{success:!1,error:String(f)}}}async function it(m){try{const f=await se().delete(m);return f.success&&await te(),f}catch(f){return{success:!1,error:String(f)}}}return{assistants:e,selectedAssistantId:s,selectedAssistant:D,isLoaded:o,builtinCatalog:g,builtinToolCatalog:b,cloudCatalog:C,cloudLoading:w,cloudError:M,cloudCatalogWithStatus:Z,currentChatType:q,currentLocale:W,filteredAssistants:O,defaultAssistants:re,moreAssistants:$,hasMoreAssistants:L,loadAssistants:te,loadBuiltinCatalog:ie,loadBuiltinToolCatalog:be,fetchCloudCatalog:he,importFromCloud:j,isCloudItemImported:qe,selectAssistant:Oe,clearSelection:le,setFilterContext:Ae,getAssistantConfig:_e,updateAssistant:I,createAssistant:at,duplicateAssistant:Ye,resetAssistant:h,checkDefaultAssistantUpgrade:P,skipAssistantUpgrade:ce,upgradeAssistantWithBackup:we,importAssistant:Qe,reimportAssistant:ot,deleteAssistant:it}}),Pt=Ot,os={"zh-CN":"cn","zh-TW":"cn","en-US":"en","ja-JP":"ja"},as=ht("skill",()=>{const e=z([]),s=z(null),o=z(!1),c=z([]),i=z([]),g=z(!1),b=z(null),C=z("group"),w=z("zh-CN");function M(){const I=w.value.startsWith("zh");return{id:Ve,name:I?"绘图助手":"Chart Assistant",description:I?"按本轮问题生成灵活的聊天数据图表":"Generate flexible charts for this chat question",tags:[I?"图表":"chart"],chatScope:"all",tools:["render_chart","get_schema"],builtinId:Ve}}const q=ae(()=>s.value?s.value===Ve?M():e.value.find(I=>I.id===s.value)??null:null),W=ae(()=>M()),D=ae(()=>e.value.filter(I=>I.chatScope==="all"||I.chatScope===C.value)),O=ae(()=>{const h=$t().selectedAssistant,P=[W.value,...D.value];return h?P.filter(ce=>(ce.tools.length,!0)):P}),G=ae(()=>{const I={};for(const h of O.value){const P=h.tags[0]||"other";I[P]||(I[P]=[]),I[P].push(h)}return I}),re=ae(()=>{const I=new Set(e.value.map(h=>h.id));return i.value.map(h=>({...h,imported:I.has(h.id)}))});function $(I,h){C.value=I,h&&(w.value=h)}async function L(){try{e.value=await Te().getAll(),o.value=!0}catch(I){console.error("[SkillStore] Failed to load skills:",I)}}async function Z(){try{c.value=await Te().getBuiltinCatalog()}catch(I){console.error("[SkillStore] Failed to load builtin catalog:",I)}}async function Ae(){const I=os[w.value]??"en",h=`${Pt}/${I}/skill.json`;g.value=!0,b.value=null;try{const P=await rt().fetchRemoteConfig(h);if(!P.success||!P.data){b.value=P.error||"Failed to fetch cloud catalog",i.value=[];return}const ce=P.data;if(!Array.isArray(ce)){b.value="Invalid catalog format",i.value=[];return}i.value=ce.filter(we=>we.id&&we.name&&we.path)}catch(P){b.value=String(P),i.value=[]}finally{g.value=!1}}async function te(I){const h=`${Pt}${I.path}`;try{const P=await rt().fetchRemoteConfig(h);if(!P.success||typeof P.data!="string")return{success:!1,error:P.error||"Failed to fetch skill content"};const ce=await Te().importFromMd(P.data);return ce.success&&await L(),ce}catch(P){return{success:!1,error:String(P)}}}function ie(I){return e.value.some(h=>h.id===I)}function be(I){s.value=I}async function he(I){if(I===Ve)return{...M(),prompt:"",builtinId:Ve};try{return await Te().getConfig(I)}catch(h){return console.error("[SkillStore] Failed to get skill config:",h),null}}async function j(I,h){try{const P=await Te().update(I,h);return P.success&&await L(),P}catch(P){return{success:!1,error:String(P)}}}async function qe(I){try{const h=await Te().create(I);return h.success&&await L(),h}catch(h){return{success:!1,error:String(h)}}}async function Oe(I){try{const h=await Te().delete(I);return h.success&&(s.value===I&&(s.value=null),await L()),h}catch(h){return{success:!1,error:String(h)}}}async function le(I){try{const h=await Te().importBuiltin(I);return h.success&&(await L(),await Z()),h}catch(h){return{success:!1,error:String(h)}}}async function _e(I){try{const h=await Te().reimport(I);return h.success&&(await L(),await Z()),h}catch(h){return{success:!1,error:String(h)}}}return{skills:e,activeSkillId:s,builtinCatalog:c,isLoaded:o,currentChatType:C,currentLocale:w,activeSkill:q,scopedSkills:D,compatibleSkills:O,groupedSkills:G,cloudCatalog:i,cloudLoading:g,cloudError:b,cloudCatalogWithStatus:re,setFilterContext:$,loadSkills:L,loadBuiltinCatalog:Z,fetchCloudCatalog:Ae,importFromCloud:te,isCloudItemImported:ie,activateSkill:be,getSkillConfig:he,updateSkill:j,createSkill:qe,deleteSkill:Oe,importSkill:le,reimportSkill:_e}});async function zt(e){const{url:s,method:o="POST",headers:c={},body:i,signal:g,onEvent:b}=e,C=await Gt(s,{method:o,headers:{"Content-Type":"application/json",...c},body:i!=null?JSON.stringify(i):void 0,signal:g});if(!C.ok){const D=await C.text().catch(()=>"");throw new Error(`SSE request failed: HTTP ${C.status} ${D}`)}if(!C.body)throw new Error("SSE response has no body");const w=C.body.getReader(),M=new TextDecoder;let q="",W="";for(;;){const{done:D,value:O}=await w.read();if(D)break;q+=M.decode(O,{stream:!0});const G=q.split(`
|
|
5
|
-
`);q=G.pop()||"";for(const re of G)re.startsWith("event: ")?W=re.slice(7).trim():re.startsWith("data: ")&&(b({event:W,data:re.slice(6)}),W="")}q.trim()&&q.startsWith("data: ")&&b({event:W,data:q.slice(6)})}function xs(){return{async chatStream(e,s,o){let c;try{return await zt({url:"/_web/ai/llm/chat-stream",body:{messages:e,options:s},onEvent:({data:i})=>{try{const g=JSON.parse(i);g.finishReason==="error"&&g.error&&(c=g.error),o?.(g)}catch{}}}),c?{success:!1,error:c}:{success:!0}}catch(i){const g=i instanceof Error?i.message:String(i);return{success:!1,error:c??g}}}}}const Fe=new Map;function dt(){return{runStream(e,s){const o=Date.now();Ct("ai_request_started");const c=new AbortController,i=`local_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;Fe.set(i,{serverId:"",abortController:c});const b=new Promise(C=>{let w="";const M=[];let q=0,W,D=!1,O;zt({url:"/_web/ai/agent/stream",body:e,signal:c.signal,onEvent:({event:G,data:re})=>{try{const $=JSON.parse(re);if(G==="meta"){const Z=Fe.get(i);Z&&(Z.serverId=$.requestId??"");return}const L=$;switch(s?.(L),L.type){case"content":L.content&&(w+=L.content);break;case"tool_start":L.toolName&&M.push(L.toolName);break;case"status":L.status&&(q=L.status.round);break;case"done":L.usage&&(W=L.usage);break;case"error":D=!0,O=L.error;break}}catch{}}}).then(()=>{Fe.delete(i),C({success:!D,result:{content:w,toolsUsed:M,toolRounds:q,totalUsage:W},...D&&O?{error:O}:{}})}).catch(G=>{Fe.delete(i),c.signal.aborted?C({success:!1,result:{content:w,toolsUsed:M,toolRounds:q,aborted:!0}}):C({success:!1,error:{name:"FetchError",message:G.message??String(G),stack:null}})})}).then(C=>(Ct("ai_request_completed",{success:C.success,duration_ms:Date.now()-o,...C.success?{}:{failure_reason:C.result?.aborted?"aborted":C.error?.name==="FetchError"?"network":"unknown"}}),C));return{requestId:i,promise:b}},async abort(e){const s=Fe.get(e);if(!s)return{success:!1,error:"Request not found"};if(s.abortController.abort(),s.serverId)try{const{post:o}=await Qt(async()=>{const{post:c}=await import("./index-DnpnIyle.js").then(i=>i.dW);return{post:c}},__vite__mapDeps([0,1,2]));await o("/ai/agent/abort",{requestId:s.serverId})}catch{}return Fe.delete(e),{success:!0}}}}function is(e){return e.desensitize&&!e.desensitizeRules.some(s=>s.builtin)}function ls(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(o=>({...o,locales:[...o.locales]})),anonymizeNames:e.anonymizeNames}}function me(e){return e==="render_chart"}function cs(e,s,o){if(!e||!me(e))return null;const c=e;return{type:"tool",tool:{name:c,displayName:c,status:"running",params:s,toolCallId:o,transient:!0}}}function St(e,s,o){if(!ne(e))return!1;const c=e;return c.type!=="tool"||!c.tool||c.tool.transient!==!0||c.tool.name!==s||o&&c.tool.toolCallId!==o?!1:me(String(c.tool.name))}function us(e,s,o){let c=!1;const i=[...e];for(let g=i.length-1;g>=0;g--)if(St(i[g],s,o)){i.splice(g,1),c=!0;break}return c?i:[...e]}function ne(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function xt(e){return ne(e)&&e.version===1&&ne(e.spec)&&ne(e.dataset)}function kt(e){if(!ne(e))return[];const s=ne(e.details)?e.details:e,o=[];if(xt(s.chart)&&o.push(s.chart),Array.isArray(s.charts))for(const c of s.charts)xt(c)&&o.push(c);return o}function Wt(e){return{...e,dataset:{...e.dataset,rows:[]}}}function jt(e){return e.map(s=>({type:"chart",chart:Wt(s)}))}function yt(e){return Array.isArray(e)?`[${e.map(yt).join(",")}]`:ne(e)?`{${Object.keys(e).sort().map(s=>`${JSON.stringify(s)}:${yt(e[s])}`).join(",")}}`:JSON.stringify(e)}function Et(e){const s=Wt(e);return yt({spec:s.spec,columns:s.dataset.columns,data:s.data,rowCount:s.rowCount,truncated:s.truncated})}function ds(e,s){const o=Et(s);return e.some(c=>{if(!ne(c))return!1;const i=c;return i.type==="chart"&&i.chart?Et(i.chart)===o:!1})}function fs(e,s,o,c){const i=[...e];let g=-1;for(let M=i.length-1;M>=0;M--)if(St(i[M],s,o)){g=M;break}const b=g>=0?i.filter((M,q)=>q!==g):i,C=c.filter(M=>!ds(b,M)),w=jt(C);return g>=0?(i.splice(g,1,...w),i):[...i,...w]}function ps(e,s,o,c,i){if(c.length>0)return fs(e,s,o,c);if(i){let b=!1;const C=e.map(w=>{if(!St(w,s,o))return w;b=!0;const M={...w.tool};return delete M.transient,{...w,tool:{...M,status:"error",result:i.error.message,displayResult:i.error.message,isError:!0}}});return b?C:[...e,i]}return us(e,s,o)}function Es(e,s,o){const c=e[s];return!ne(c)||c.type!=="error"||!ne(c.error)||c.error.name!=="ChartRenderError"?!1:o?.isStreaming?!0:e.slice(s+1).some(i=>ne(i)&&i.type==="chart")}function gs(e){return ne(e)?typeof e.error=="string"?e.error:ne(e.error)&&typeof e.error.message=="string"?e.error.message:Array.isArray(e.content)?e.content.map(s=>ne(s)&&s.type==="text"&&typeof s.text=="string"?s.text:"").join(`
|
|
6
|
-
`).trim():null:null}function Nt(e,s){if(!me(e)||kt(s).length>0)return null;const o=gs(s);if(!o)return null;const i=/^Error:\s*(.+)$/is.exec(o)?.[1]?.trim();return!i||/^Call get_schema before render_chart\b/i.test(i)?null:{type:"error",error:{name:"ChartRenderError",message:i,stack:null}}}function nt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ft(e){return nt(e)&&e.version===1&&typeof e.query=="string"&&Array.isArray(e.groups)}function _t(e){if(!nt(e))return null;const s=nt(e.details)?e.details:null;if(s&&ft(s.evidence))return s.evidence;const o=nt(e.data)?e.data:null;return o&&ft(o.evidence)?o.evidence:ft(e.evidence)?e.evidence:null}function ms(e){return{type:"evidence",evidence:e}}function Ge(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function pt(e){return Ge(e)?e.version===1&&typeof e.query=="string"&&Array.isArray(e.sources)&&Ge(e.coverage):!1}function ks(e){if(!Ge(e))return null;const s=Ge(e.details)?e.details:null;if(s&&pt(s.crossChatEvidence))return s.crossChatEvidence;const o=Ge(e.data)?e.data:null;return o&&pt(o.crossChatEvidence)?o.crossChatEvidence:pt(e.crossChatEvidence)?e.crossChatEvidence:null}function ys(e){return{type:"cross_chat_evidence",evidence:e}}function Dt(e){return JSON.parse(JSON.stringify(e))}function vt(e){return JSON.parse(JSON.stringify(e))}function Ht(e){return e?.type==="plan_draft"&&typeof e.text=="string"}function Is(e,s){const o=e.map(vt),c=o[o.length-1];return Ht(c)?c.text+=s:o.push({type:"plan_draft",version:1,status:"streaming",text:s}),o}function Ts(e,s){const o=e.map(vt);for(let c=o.length-1;c>=0;c--){const i=o[c];if(Ht(i)){const g=i.text.trim();return o[c]={...Dt(s),...g?{displayText:g}:{}},o}}return o.push(Dt(s)),o}function hs(e){return e.filter(s=>s.type!=="plan_draft").map(vt)}function Ss(e){if(e)for(let s=e.length-1;s>=0;s-=1){const o=e[s];if(o.type==="text"&&o.processDurationMs!==void 0)return o.processDurationMs}}function Ke(e,s){if(!e)return;const o=e.findLastIndex(c=>c.type==="text");return o<0?e:e.map((c,i)=>i===o&&c.type==="text"?{...c,processDurationMs:s}:c)}function Ut(e){if(!e)return;const s=JSON.parse(JSON.stringify(e));for(const o of s)o.type==="tool"&&delete o.tool.displayResult;return s}function gt(e){return e.toolCallId?`id:${e.toolCallId}`:`name:${e.name}`}function Lt(){const e=new Map;let s=null;const o=()=>{if(s){const i=e.get(s);if(i)return i}const c=Array.from(e.entries()).at(-1);return s=c?.[0]??null,c?.[1]??null};return{start(c){const i=gt(c),g={name:c.name,displayName:c.name,status:"running",toolCallId:c.toolCallId};return e.set(i,g),s=i,g},update(c){const i=gt(c),g=e.get(i);if(!g)return o();const b={...g,progress:c.progress};return e.set(i,b),s=i,b},finish(c){const i=gt(c),g=e.get(i);e.delete(i),s===i&&(s=null);const b=o();return b||(g?{...g,status:c.status}:null)},current(){return o()},clear(){e.clear(),s=null}}}function vs(e,s){if(!e.isStreaming)return null;const o=e.contentBlocks?[...e.contentBlocks]:[];let c=e.content,i=!1;for(const g of s){const b=o[o.length-1];if(g.type==="content"){if(g.content.trim().length===0&&b?.type!=="text")continue;b?.type==="text"?b.text=(b.text||"")+g.content:o.push({type:"text",text:g.content}),c+=g.content,i=!0;continue}const C=g.thinkTag||"think";b?.type==="think"&&b.tag===C?(b.text=(b.text||"")+g.content,i=!0):g.content.trim().length>0&&(o.push({type:"think",tag:C,text:g.content}),i=!0)}return i?{content:c,contentBlocks:o}:{content:e.content,contentBlocks:e.contentBlocks||[]}}function Cs(){return typeof requestAnimationFrame=="function"&&typeof cancelAnimationFrame=="function"?{request:e=>requestAnimationFrame(e),cancel:e=>cancelAnimationFrame(e)}:{request:e=>setTimeout(e,16),cancel:e=>clearTimeout(e)}}function As(e,s=Cs()){let o=null,c=[];function i(){if(o!==null&&(s.cancel(o),o=null),c.length===0)return;const C=c;c=[],e(C)}function g(C){const w=c[c.length-1];w?.type==="content"&&C.type==="content"||w?.type==="think"&&C.type==="think"&&w.thinkTag===C.thinkTag?w.content+=C.content:c.push({...C}),o===null&&(o=s.request(()=>{o=null,i()}))}function b(){o!==null&&(s.cancel(o),o=null),c=[]}return{push:g,flush:i,cancel:b}}const ge="__draft__";function bs(e){return e?`${e.startTs}_${e.endTs}`:"all"}function ws(e){return e.kind==="global"?"global":`${e.sessionId}:${e.chatType}:${bs(e.timeFilter)}`}function It(){return{promptTokens:0,completionTokens:0,totalTokens:0,cacheReadTokens:0,cacheWriteTokens:0}}function Ft(e){return{promptTokens:e.promptTokens??0,completionTokens:e.completionTokens??0,totalTokens:e.totalTokens??0,cacheReadTokens:e.cacheReadTokens??0,cacheWriteTokens:e.cacheWriteTokens??0}}function et(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 tt(e){const s=e.contentBlocks;return{id:e.id,role:e.role,content:e.content,timestamp:e.timestamp*1e3,parentId:e.parentId,contentBlocks:s,processDurationMs:Ss(s),entityRefs:e.entityRefs}}function Tt(e=null){return{messages:[],sourceMessages:[],currentKeywords:[],assistantId:e,loaded:!1}}function Bs(e){const s=Tt(null);return{kind:e.kind??"session",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:It(),agentStatus:null,ownerInfo:void 0,ownerInfoInitialized:!1,isAborted:!1,currentRequestId:"",currentAgentRequestId:"",aiChatBuffers:{[ge]:s}}}function mt(e){return e.currentAIChatId??ge}const Ns=ht("aiChatRuntime",()=>{const e=z({}),s=z(null),o=ts(),c=Yt(),i=Zt(),g=$t(),b=as(),C=Xt(),{aiGlobalSettings:w}=Kt(o);let M=null;const q=new Map;function W(n){const t=(q.get(n)??0)+1;return q.set(n,t),t}function D(n,t){return q.get(n)===t}function O(n){return`${n}_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function G(n){const t=ws(n),a=e.value[t];if(a)return a.sessionName=n.sessionName,a.chatType=n.chatType,a.locale=n.locale,a.timeFilter=n.timeFilter,{chatKey:t,state:a};const r=Bs(n);e.value[t]=r;const u=e.value[t];return be(t),{chatKey:t,state:u}}function re(n){return G({kind:"global",sessionId:"",sessionName:"Global AI analysis",chatType:"group",locale:n})}function $(n){return e.value[n]??null}function L(){return s.value?$(s.value.chatKey):null}function Z(n,t,a=null){return n.aiChatBuffers[t]||(n.aiChatBuffers[t]=Tt(a)),n.aiChatBuffers[t]}function Ae(n,t){const a=n.currentAIChatId??ge,r=n.aiChatBuffers[a];r&&(r.sessionTokenUsage={...n.sessionTokenUsage});const u=Z(n,t);n.currentAIChatId=t===ge?null:t,n.messages=u.messages,n.sourceMessages=u.sourceMessages,n.currentKeywords=u.currentKeywords,n.selectedAssistantId=u.assistantId,n.sessionTokenUsage=u.sessionTokenUsage?{...u.sessionTokenUsage}:It(),n.agentStatus=null}function te(n,t,a){const r=Z(n,t);return n.aiChatBuffers[a]=r,t!==a&&delete n.aiChatBuffers[t],n.currentAIChatId===null&&t===ge&&(n.currentAIChatId=a),r}function ie(n){const t=$(n);t&&(t.selectedAssistantId?g.selectAssistant(t.selectedAssistantId):g.clearSelection())}async function be(n){const t=$(n);if(!t||t.kind==="global")return;const r=c.sessions.find(u=>u.id===t.sessionId)?.ownerId;if(!r){t.ownerInfo=void 0,t.ownerInfoInitialized=!0;return}if(!(t.ownerInfoInitialized&&t.ownerInfo?.platformId===r))try{const v=(await At().getMembers(t.sessionId)).find(p=>p.platformId===r);t.ownerInfo=v?{platformId:r,displayName:v.groupNickname||v.accountName||r}:{platformId:r,displayName:r},t.ownerInfoInitialized=!0}catch(u){console.error("[AI] 获取 Owner 信息失败:",u),t.ownerInfo=void 0,t.ownerInfoInitialized=!0}}function he(n,t,a,r=null){const u=$(n);u&&(s.value={requestId:a,kind:u.kind,chatKey:n,sessionId:u.sessionId,sessionName:u.sessionName,chatType:u.chatType,aiChatId:r,questionPreview:t.trim().slice(0,80),startedAt:Date.now()})}function j(n,t){s.value&&s.value.chatKey===n&&(t&&s.value.requestId!==t||(s.value=null))}function qe(n,t){s.value&&s.value.chatKey===n&&(s.value.aiChatId=t)}function Oe(n){return{phase:"preparing",round:0,toolsUsed:n.toolsUsedInCurrentRound.length,contextTokens:0,totalUsage:{...n.sessionTokenUsage},updatedAt:Date.now()}}function le(n,t,a){const r=n.agentStatus?{...n.agentStatus}:Oe(n);n.agentStatus={...r,...a,phase:t,updatedAt:Date.now()}}function _e(n,t){const a=$(n);if(!a||a.isAIThinking)return!1;const r=Z(a,mt(a),t);return r.assistantId=t,a.selectedAssistantId=t,g.selectAssistant(t),!0}async function I(n,t,a){const r=$(n);if(!r||!D(n,a))return!1;try{const u=await ke().getAIChat(t);if(!D(n,a))return!1;const v=u?.kind===r.kind&&(r.kind==="global"||u.sessionId===r.sessionId);if(!u||!v)return!1;const p=Z(r,t,u.assistantId);if(!p.loaded){const[T,A]=await Promise.all([ke().getMessages(t),ke().getAIChatTokenUsage(t)]);if(!D(n,a))return!1;p.messages.splice(0,p.messages.length,...T.map(B=>tt(B))),p.sourceMessages.splice(0,p.sourceMessages.length),p.currentKeywords.splice(0,p.currentKeywords.length),p.sessionTokenUsage=Ft(A),p.loaded=!0}return D(n,a)?(p.assistantId=u.assistantId,Ae(r,t),ie(n),!0):!1}catch(u){return D(n,a)&&console.error("[AI] 加载对话历史失败:",u),!1}}async function h(n,t){return $(n)?I(n,t,W(n)):!1}function P(n,t){const a=$(n);if(!a)return!1;const r=t??ge;return a.aiChatBuffers[r]?(W(n),Ae(a,r),ie(n),!0):!1}function ce(){if(!s.value)return!1;const n=s.value,t=P(n.chatKey,n.aiChatId);return M=t&&n.kind==="session"?n.chatKey:null,t}async function we(n,t){const a=M===n;if(M=null,a)return;const r=$(n);if(!r||r.isAIThinking)return;const u=W(n);if(!(!g.isLoaded&&(await g.loadAssistants(),!D(n,u)))&&!(t&&(await I(n,t,u)||!D(n,u)))){try{const v=(await ke().getAIChats(r.sessionId))[0];if(!D(n,u)||v&&v.id!==t&&(await I(n,v.id,u)||!D(n,u)))return}catch(v){if(!D(n,u))return;console.error("[AI] Failed to load the latest conversation:",v)}if(D(n,u)){if(!r.selectedAssistantId){const v=st(r.locale);_e(n,v)}Qe(n)}}}function Qe(n,t){const a=$(n);if(!a||a.isAIThinking)return!1;W(n);const r=Tt(a.selectedAssistantId);return a.aiChatBuffers[ge]=r,Ae(a,ge),a.currentToolStatus=null,a.toolsUsedInCurrentRound=[],a.isLoadingSource=!1,a.sessionTokenUsage=It(),a.agentStatus=null,a.isAborted=!1,a.currentRequestId="",a.currentAgentRequestId="",t&&r.messages.push({id:O("welcome"),role:"assistant",content:t,timestamp:Date.now()}),!0}async function ot(){}async function at(){}function Ye(n,t){let a;const r=y=>{const S=t();n.messages[S]={...n.messages[S],...y}},u=(y,S,k)=>{const N=t(),x=n.messages[N].contentBlocks||[],K=S||"think",J=x[x.length-1];let F=J;if(J&&J.type==="think"&&J.tag===K)J.text+=y;else if(y.trim().length>0)F={type:"think",tag:K,text:y},x.push(F);else if(k!==void 0)for(let V=x.length-1;V>=0;V--){const ve=x[V];if(ve.type==="think"&&ve.tag===K){F=ve;break}}k!==void 0&&F&&F.type==="think"&&(F.durationMs=k),r({contentBlocks:[...x]})},v=As(y=>{const S=t(),k=n.messages[S],N=vs(k,y);N&&r({content:N.content,contentBlocks:N.contentBlocks})}),p=()=>v.flush(),T=()=>v.cancel(),A=y=>{p(),r(y)};return{updateAIMessage:A,appendTextToBlocks:y=>{y&&(y.trim().length>0&&a===void 0&&(a=Date.now()),v.push({type:"content",content:y}))},appendThinkToBlocks:(y,S,k)=>{!y&&k===void 0||(y&&v.push({type:"think",content:y,thinkTag:S}),k!==void 0&&(p(),u("",S,k)))},appendChartsToBlocks:y=>{if(y.length===0)return;p();const S=t(),k=n.messages[S].contentBlocks||[];k.push(...jt(y)),A({contentBlocks:[...k]})},appendEvidenceToBlocks:y=>{p();const S=t(),k=n.messages[S].contentBlocks||[];k.push(ms(y)),A({contentBlocks:[...k]})},appendCrossChatEvidenceToBlocks:y=>{p();const S=t(),k=n.messages[S].contentBlocks||[];k.push(ys(y)),A({contentBlocks:[...k]})},appendPlanDraftToBlocks:y=>{if(!y)return;p();const S=t(),k=n.messages[S].contentBlocks||[];A({contentBlocks:[...Is(k,y)]})},appendPlanToBlocks:y=>{p();const S=t(),k=n.messages[S].contentBlocks||[];A({contentBlocks:[...Ts(k,y)]})},removePlanDraftsFromBlocks:()=>{p();const y=t(),S=n.messages[y].contentBlocks||[];A({contentBlocks:[...hs(S)]})},updatePlanBlockStatus:y=>{p();const S=t(),k=n.messages[S].contentBlocks||[];for(let N=k.length-1;N>=0;N--){const x=k[N];if(x.type==="plan"){x.status=y;break}}A({contentBlocks:[...k]})},appendErrorToBlocks:y=>{p();const S=t(),k=n.messages[S].contentBlocks||[];k.push({type:"error",error:y}),A({contentBlocks:[...k]})},addToolBlock:(y,S,k)=>{p();const N=t(),x=n.messages[N].contentBlocks||[];x.push({type:"tool",tool:{name:y,displayName:y,status:"running",params:S,toolCallId:k}}),A({contentBlocks:[...x]})},addRenderOnlyToolPendingBlock:(y,S,k)=>{const N=cs(y,S,k);if(!N)return;p();const x=t(),K=n.messages[x].contentBlocks||[];K.push(N),A({contentBlocks:[...K]})},updateRenderOnlyToolResult:(y,S,k,N)=>{p();const x=t(),K=n.messages[x].contentBlocks||[];A({contentBlocks:ps(K,y,S,k,N)})},updateToolBlockStatus:(y,S,k)=>{p();const N=t(),x=n.messages[N].contentBlocks||[],K=F=>F.type==="tool"&&F.tool.status==="running";let J;if(k?.toolCallId)for(let F=x.length-1;F>=0;F--){const V=x[F];if(K(V)&&V.tool.toolCallId===k.toolCallId){J=V;break}}if(!J)for(let F=x.length-1;F>=0;F--){const V=x[F];if(K(V)&&V.tool.name===y){J=V;break}}J&&(J.tool.status=S,k?.result!==void 0&&(J.tool.result=k.result),k?.displayResult!==void 0&&(J.tool.displayResult=k.displayResult),k?.isError!==void 0&&(J.tool.isError=k.isError)),A({contentBlocks:[...x]})},completeTurn:y=>{p();const S=a;if(a=void 0,y||S===void 0)return;const k=t(),N=n.messages[k];if(!N||N.processDurationMs!==void 0)return;const x=Math.max(0,S-N.timestamp);r({processDurationMs:x,contentBlocks:Ke(N.contentBlocks,x)})},settleProcessDuration:()=>{p();const y=t(),S=n.messages[y];if(!S||S.processDurationMs!==void 0)return;const k=Math.max(0,Date.now()-S.timestamp);r({processDurationMs:k,contentBlocks:Ke(S.contentBlocks,k)})},flushPendingText:p,discardPendingText:T}}async function it(n,t,a){const r=$(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 u=O("req"),v=mt(r);let p=v===ge?null:v;const T=Z(r,v,r.selectedAssistantId);let A,B;const Q=new Set;let Y=null;T.assistantId=r.selectedAssistantId,T.loaded=!0,he(n,t,u,p),ie(n),r.kind==="session"&&be(n);const ue=r.kind==="session"?b.activeSkillId:null,ye=r.kind==="session"?b.activeSkill?.name:null,De=w.value.enableAutoSkill??!0,Ze=De?w.value.chartAutoMode??"suggest":"explicit",We=(a?.mentionedMembers??[]).map(E=>({memberId:E.memberId,platformId:E.platformId,displayName:E.displayName,aliases:[...E.aliases],mentionText:E.mentionText})),X=(a?.entityRefs??[]).map(E=>({...E}));r.isAIThinking=!0,r.isLoadingSource=!0,r.currentToolStatus=null,r.toolsUsedInCurrentRound=[],r.agentStatus=null,r.isAborted=!1,r.currentRequestId=u,r.currentAgentRequestId="";try{const E=await bt().hasConfig();if(r.isAborted)return j(n,u),{success:!1,reason:"aborted"};if(r.currentRequestId!==u)return j(n,u),{success:!1,reason:"busy",activeTask:s.value};if(!E)return T.messages.push({id:O("error"),role:"assistant",content:"⚠️ 请先配置 AI 服务。点击左下角「设置」按钮前往「模型配置Tab」进行配置。",timestamp:Date.now()}),j(n,u),{success:!1,reason:"no_config"};const _={id:O("user"),role:"user",content:t,timestamp:Date.now(),toolCalls:[],entityRefs:X};A=_,T.messages.push(_);const Re={id:O("ai"),role:"assistant",content:"",timestamp:Date.now(),isStreaming:!0,contentBlocks:[]};ue&&ye&&Re.contentBlocks.push({type:"skill",skillId:ue,skillName:ye}),T.messages.push(Re);try{a?.onAccepted?.()}catch(l){console.error("[AI] Failed to acknowledge accepted user message:",l)}let U=T.messages.length-1,de=!1;const oe=Lt(),{updateAIMessage:Se,appendTextToBlocks:y,appendThinkToBlocks:S,appendChartsToBlocks:k,appendEvidenceToBlocks:N,appendCrossChatEvidenceToBlocks:x,appendPlanDraftToBlocks:K,appendPlanToBlocks:J,removePlanDraftsFromBlocks:F,updatePlanBlockStatus:V,appendErrorToBlocks:ve,addToolBlock:je,addRenderOnlyToolPendingBlock:lt,updateRenderOnlyToolResult:fe,updateToolBlockStatus:Me,completeTurn:Xe,settleProcessDuration:Pe,flushPendingText:Ue,discardPendingText:xe}=Ye(T,()=>U),Ie=T.assistantId??st(r.locale);if(!p){const l=t.slice(0,50)+(t.length>50?"...":""),d=r.kind==="global"?await ke().createGlobalAIChat(l,Ie):await ke().createAIChat(r.sessionId,l,Ie);if(r.isAborted)return Pe(),Se({isStreaming:!1}),j(n,u),{success:!1,reason:"aborted"};if(r.currentRequestId!==u)return Pe(),Se({isStreaming:!1}),j(n,u),{success:!1,reason:"busy",activeTask:s.value};p=d.id,te(r,ge,d.id),T.assistantId=Ie,qe(n,d.id)}const Ee={sessionId:r.sessionId,aiChatId:p,timeFilter:r.timeFilter?{startTs:r.timeFilter.startTs,endTs:r.timeFilter.endTs}:void 0,maxMessagesLimit:w.value.maxMessagesPerRequest,ownerInfo:r.ownerInfo?{platformId:r.ownerInfo.platformId,displayName:r.ownerInfo.displayName}:void 0,mentionedMembers:We.length>0?We:void 0,preprocessConfig:await f(),searchContextBefore:w.value.searchContextBefore,searchContextAfter:w.value.searchContextAfter},{requestId:pe,promise:ct}=dt().runStream({userMessage:t,chatKind:r.kind,sessionId:r.kind==="session"?r.sessionId:void 0,entityRefs:r.kind==="global"&&X.length>0?X:void 0,aiChatId:p,timeFilter:Ee.timeFilter,maxMessagesLimit:Ee.maxMessagesLimit,ownerInfo:r.kind==="session"?Ee.ownerInfo:void 0,mentionedMembers:r.kind==="session"?Ee.mentionedMembers:void 0,preprocessConfig:Ee.preprocessConfig,chatType:r.chatType,locale:r.locale,assistantId:Ie,skillId:r.kind==="session"?ue:void 0,enableAutoSkill:r.kind==="session"&&!ue?De:void 0,chartAutoMode:r.kind==="session"&&!ue?Ze:void 0,thinkingLevel:(()=>{const l=C.defaultAssistant;if(!(!l?.configId||!l?.modelId))return o.getThinkingLevel(l.configId,l.modelId)})()},l=>{if(!(r.isAborted||u!==r.currentRequestId))switch(l.type){case"content":l.content&&(r.currentToolStatus=oe.current(),y(l.content));break;case"think":l.content?S(l.content,l.thinkTag):l.thinkDurationMs!==void 0&&S("",l.thinkTag,l.thinkDurationMs);break;case"tool_start":if(l.toolName){const d=l.toolParams;r.currentToolStatus=oe.start({name:l.toolName,toolCallId:l.toolCallId}),r.toolsUsedInCurrentRound.push(l.toolName),me(l.toolName)?lt(l.toolName,d,l.toolCallId):je(l.toolName,d,l.toolCallId)}break;case"tool_update":Ue(),l.toolName&&l.toolProgress&&(r.currentToolStatus=oe.update({name:l.toolName,toolCallId:l.toolCallId,progress:l.toolProgress}));break;case"tool_result":if(l.toolName){const d=kt(l.toolResult),ee=Nt(l.toolName,l.toolResult);me(l.toolName)?fe(l.toolName,l.toolCallId,d,ee):k(d);const Ne=_t(l.toolResult);Ne&&N(Ne);const He=ks(l.toolResult);He&&x(He),ee&&(me(l.toolName)||ve(ee.error));const Le=ee!==null||l.toolIsError===!0;if(r.currentToolStatus?.name===l.toolName&&(r.currentToolStatus={...r.currentToolStatus,status:Le?"error":"done"}),!me(l.toolName)){const Je=Bt(l.toolResult);Me(l.toolName,Le?"error":"done",{toolCallId:l.toolCallId,result:Rt(Je),displayResult:Je,isError:l.toolIsError})}r.currentToolStatus=oe.finish({name:l.toolName,toolCallId:l.toolCallId,status:Le?"error":"done"})}r.isLoadingSource=!1;break;case"plan_delta":l.planDelta&&K(l.planDelta);break;case"memory_change":l.memoryId&&Q.add(l.memoryId),l.provenanceToken&&(Y=l.provenanceToken);break;case"plan":l.plan&&(J(l.plan),V("executing"));break;case"plan_skipped":F();break;case"turn_end":Xe(!!l.hadToolCalls);break;case"status":Ue(),l.status&&(!r.agentStatus||l.status.updatedAt>=r.agentStatus.updatedAt)&&(r.agentStatus=l.status);break;case"compression_done":if(Ue(),l.compressionResult){const d={id:`summary-${Date.now()}`,role:"summary",content:l.compressionResult.summaryContent,timestamp:l.compressionResult.timestamp},ee=Math.max(0,T.messages.length-2);T.messages.splice(ee,0,d),U++}break;case"done":Pe(),oe.clear(),r.currentToolStatus=null,de||V("done"),l.usage&&(B={...l.usage},r.sessionTokenUsage={promptTokens:r.sessionTokenUsage.promptTokens+l.usage.promptTokens,completionTokens:r.sessionTokenUsage.completionTokens+l.usage.completionTokens,totalTokens:r.sessionTokenUsage.totalTokens+l.usage.totalTokens,cacheReadTokens:r.sessionTokenUsage.cacheReadTokens+l.usage.cacheReadTokens,cacheWriteTokens:r.sessionTokenUsage.cacheWriteTokens+l.usage.cacheWriteTokens}),le(r,de?"error":"completed",l.usage?{totalUsage:l.usage}:void 0);break;case"error":if(Pe(),F(),V("skipped"),r.currentToolStatus&&(r.currentToolStatus={...r.currentToolStatus,status:"error"},Me(r.currentToolStatus.name,"error",{toolCallId:r.currentToolStatus.toolCallId})),oe.clear(),!de){de=!0;const d=T.messages[U].contentBlocks||[];d.push({type:"error",error:et(l.error)}),Se({contentBlocks:[...d],isStreaming:!1})}le(r,"error");break}});r.currentAgentRequestId=pe,he(n,t,pe,p);const Ce=await ct;if(r.isAborted)return xe(),j(n,pe),{success:!1,reason:"aborted"};if(Ue(),u!==r.currentRequestId)return j(n,pe),{success:!1,reason:"busy",activeTask:s.value};if(Ce.success&&Ce.result){T.messages[U]={...T.messages[U],dataSource:{toolsUsed:Ce.result.toolsUsed,toolRounds:Ce.result.toolRounds},isStreaming:!1};const l=await m(p,_,T.messages[U],B,[...Q],Y);if(!l)return{success:!1,reason:"error"};Object.assign(_,l.userMessage),T.messages[U]={...T.messages[U],...l.assistantMessage,isStreaming:!1}}else if(de){const l=await m(p,_,T.messages[U],B,[...Q],Y);if(!l)return{success:!1,reason:"error"};Object.assign(_,l.userMessage),T.messages[U]={...T.messages[U],...l.assistantMessage,isStreaming:!1}}else{le(r,"error");const l=T.messages[U].contentBlocks||[];l.push({type:"error",error:et(Ce.error)}),T.messages[U]={...T.messages[U],contentBlocks:[...l],isStreaming:!1};const d=await m(p,_,T.messages[U],B,[...Q],Y);if(!d)return{success:!1,reason:"error"};Object.assign(_,d.userMessage),T.messages[U]={...T.messages[U],...d.assistantMessage,isStreaming:!1}}return Ce.success?{success:!0}:{success:!1,reason:"error"}}catch(E){console.error("[AI] 处理失败:",E),r.agentStatus=null;const _=T.messages[T.messages.length-1];if(_&&_.role==="assistant"){const Re={name:E instanceof Error?E.name:null,message:E instanceof Error?E.message:String(E),stack:E instanceof Error?E.stack??null:null},U=_.contentBlocks||[];U.push({type:"error",error:Re}),_.contentBlocks=[...U];const de=_.processDurationMs??Math.max(0,Date.now()-_.timestamp);_.processDurationMs=de,_.contentBlocks=Ke(_.contentBlocks,de),_.isStreaming=!1;const oe=A||T.messages.findLast(Se=>Se.role==="user");oe&&await m(p,oe,_,B,[...Q],Y)}return{success:!1,reason:"error"}}finally{r.isAIThinking=!1,r.isLoadingSource=!1,r.currentToolStatus=null,r.isAborted=!1,r.currentRequestId="",r.currentAgentRequestId="",j(n)}}async function m(n,t,a,r,u=[],v=null){try{if(!n)return null;const p=Ut(a.contentBlocks),{userMessage:T,assistantMessage:A}=await ke().addMessagePair(n,{content:t.content,entityRefs:t.entityRefs},{content:a.content,contentBlocks:p,tokenUsage:r});if(u.length>0)try{if(!v)throw new Error("Memory provenance token is missing");await ke().linkAIMemorySources({provenanceToken:v,aiChatId:n,userMessageId:T.id,assistantMessageId:A.id,memoryIds:u})}catch(B){es("AI memory source linking failed",B instanceof Error?B.stack:void 0)}return{userMessage:tt(T),assistantMessage:tt(A)}}catch(p){return console.error("[AI] 保存对话失败:",p),null}}async function f(){const n=i.aiPreprocessConfig;return is(n)&&await i.ensureDesensitizeRules(),ls(i.aiPreprocessConfig)}function R(n){return n.trim().replace(/^[\s"'“”‘’([{<]+|[\s"'“”‘’)\]}>.,!?;:,。!?;:、]+$/g,"").toLocaleLowerCase()}async function H(n,t){const a=new Set;for(const r of t.matchAll(/@([^\s@]+)/g)){const u=R(r[1]??"");u&&a.add(u)}if(a.size===0)return[];try{const r=await At().getMembers(n.sessionId),u=new Map;r.forEach(A=>{const B=A.groupNickname||A.accountName||A.platformId;u.set(B,(u.get(B)??0)+1)});const v=r.map(A=>{const B=A.groupNickname||A.accountName||A.platformId,Q=(u.get(B)??0)>1?`${B}·${A.platformId}`:B,Y=[...A.aliases],ue=[B,A.groupNickname||"",A.accountName||"",A.platformId,Q,...Y].map(R).filter(Boolean);return{memberId:A.id,platformId:A.platformId,displayName:B,aliases:Y,mentionText:`@${Q}`,lookupValues:ue}}),p=[],T=new Set;for(const A of a){const B=v.find(Q=>!T.has(Q.memberId)&&Q.lookupValues.includes(A));B&&(T.add(B.memberId),p.push({memberId:B.memberId,platformId:B.platformId,displayName:B.displayName,aliases:B.aliases,mentionText:B.mentionText}))}return p}catch(r){return console.error("[AI] Failed to resolve mentioned members for edited message:",r),[]}}async function $e(n,t,a){const r=$(n),u=a.trim();if(!r||!r.currentAIChatId)return{success:!1,reason:"error"};if(!u)return{success:!1,reason:"empty"};if(r.isAIThinking||s.value)return{success:!1,reason:"busy",activeTask:s.value};const v=Z(r,r.currentAIChatId,r.selectedAssistantId),p=v.messages.findIndex(Y=>Y.id===t),T=v.messages[p];if(!T||T.role!=="user"||T.isStreaming)return{success:!1,reason:"error"};if(T.content.trim()===u)return{success:!1,reason:"empty"};const A=v.messages.findLastIndex(Y=>Y.role==="user"),B=v.messages.slice(p+1);return p===A&&(B.length===0||B.length===1&&B[0]?.role==="assistant")?Be(n,r,v,p,T,u):{success:!1,reason:"error"}}async function Be(n,t,a,r,u,v){const p=O("req");let T,A=!1;const B=Lt();he(n,v,p,t.currentAIChatId),ie(n),be(n),t.isAIThinking=!0,t.isLoadingSource=!0,t.currentToolStatus=null,t.toolsUsedInCurrentRound=[],t.agentStatus=null,t.isAborted=!1,t.currentRequestId=p,t.currentAgentRequestId="";const Q=a.messages[r+1],Y=Q?.role==="assistant",ue={id:O("ai"),role:"assistant",content:"",timestamp:Date.now(),isStreaming:!0,contentBlocks:[]},ye=b.activeSkillId,De=b.activeSkill?.name;ye&&De&&ue.contentBlocks.push({type:"skill",skillId:ye,skillName:De});const Ze={...u,content:v},We=Y?2:1;a.messages.splice(r,We,Ze,ue);const X=r+1,E=()=>{a.messages.splice(r,a.messages.length-r,u),Y&&a.messages.splice(r+1,0,Q)},{updateAIMessage:_,appendTextToBlocks:Re,appendThinkToBlocks:U,appendChartsToBlocks:de,appendEvidenceToBlocks:oe,appendPlanDraftToBlocks:Se,appendPlanToBlocks:y,removePlanDraftsFromBlocks:S,updatePlanBlockStatus:k,appendErrorToBlocks:N,addToolBlock:x,addRenderOnlyToolPendingBlock:K,updateRenderOnlyToolResult:J,updateToolBlockStatus:F,completeTurn:V,settleProcessDuration:ve,flushPendingText:je,discardPendingText:lt}=Ye(a,()=>X);try{if(!await bt().hasConfig())return E(),j(n,p),{success:!1,reason:"no_config"};const Me=a.assistantId??st(t.locale),Xe=await H(t,v);if(t.isAborted)return E(),j(n,p),{success:!1,reason:"aborted"};if(p!==t.currentRequestId)return E(),j(n,p),{success:!1,reason:"busy",activeTask:s.value};const Pe=w.value.enableAutoSkill??!0,Ue=Pe?w.value.chartAutoMode??"suggest":"explicit",xe={sessionId:t.sessionId,aiChatId:t.currentAIChatId,historyLeafMessageId:u.parentId??null,timeFilter:t.timeFilter?{startTs:t.timeFilter.startTs,endTs:t.timeFilter.endTs}:void 0,maxMessagesLimit:w.value.maxMessagesPerRequest,ownerInfo:t.ownerInfo?{platformId:t.ownerInfo.platformId,displayName:t.ownerInfo.displayName}:void 0,mentionedMembers:Xe.length>0?Xe:void 0,preprocessConfig:await f(),searchContextBefore:w.value.searchContextBefore,searchContextAfter:w.value.searchContextAfter},{requestId:Ie,promise:Ee}=dt().runStream({userMessage:v,sessionId:t.sessionId,aiChatId:t.currentAIChatId,historyLeafMessageId:u.parentId??null,timeFilter:xe.timeFilter,maxMessagesLimit:xe.maxMessagesLimit,ownerInfo:xe.ownerInfo,mentionedMembers:xe.mentionedMembers,preprocessConfig:xe.preprocessConfig,chatType:t.chatType,locale:t.locale,assistantId:Me,skillId:ye,enableAutoSkill:ye?void 0:Pe,chartAutoMode:ye?void 0:Ue,thinkingLevel:(()=>{const d=C.defaultAssistant;if(!(!d?.configId||!d?.modelId))return o.getThinkingLevel(d.configId,d.modelId)})()},d=>{if(!(t.isAborted||p!==t.currentRequestId))switch(d.type){case"content":t.currentToolStatus=B.current(),Re(d.content||"");break;case"think":d.content?U(d.content,d.thinkTag):d.thinkDurationMs!==void 0&&U("",d.thinkTag,d.thinkDurationMs);break;case"tool_start":if(d.toolName){const ee=d.toolParams;t.currentToolStatus=B.start({name:d.toolName,toolCallId:d.toolCallId}),t.toolsUsedInCurrentRound.push(d.toolName),me(d.toolName)?K(d.toolName,ee,d.toolCallId):x(d.toolName,ee,d.toolCallId)}break;case"tool_update":je(),d.toolName&&d.toolProgress&&(t.currentToolStatus=B.update({name:d.toolName,toolCallId:d.toolCallId,progress:d.toolProgress}));break;case"tool_result":if(d.toolName){const ee=kt(d.toolResult),Ne=Nt(d.toolName,d.toolResult),He=Ne!==null||d.toolIsError===!0;me(d.toolName)?J(d.toolName,d.toolCallId,ee,Ne):de(ee);const Le=_t(d.toolResult);if(Le&&oe(Le),Ne&&(me(d.toolName)||N(Ne.error)),!me(d.toolName)){const Je=Bt(d.toolResult);F(d.toolName,He?"error":"done",{toolCallId:d.toolCallId,result:Rt(Je),displayResult:Je,isError:d.toolIsError})}t.currentToolStatus=B.finish({name:d.toolName,toolCallId:d.toolCallId,status:He?"error":"done"})}t.isLoadingSource=!1;break;case"plan_delta":d.planDelta&&Se(d.planDelta);break;case"plan":d.plan&&(y(d.plan),k("executing"));break;case"plan_skipped":S();break;case"turn_end":V(!!d.hadToolCalls);break;case"status":je(),d.status&&(!t.agentStatus||d.status.updatedAt>=t.agentStatus.updatedAt)&&(t.agentStatus=d.status);break;case"done":ve(),B.clear(),t.currentToolStatus=null,A||k("done"),d.usage&&(T={...d.usage}),le(t,A?"error":"completed",d.usage?{totalUsage:d.usage}:void 0);break;case"error":{ve(),S(),k("skipped"),A=!0,t.currentToolStatus&&F(t.currentToolStatus.name,"error",{toolCallId:t.currentToolStatus.toolCallId}),B.clear();const ee=a.messages[X].contentBlocks||[];ee.push({type:"error",error:et(d.error)}),_({contentBlocks:[...ee],isStreaming:!1}),le(t,"error");break}}});t.currentAgentRequestId=Ie,he(n,v,Ie,t.currentAIChatId);const pe=await Ee;if(t.isAborted)return lt(),E(),j(n,Ie),{success:!1,reason:"aborted"};if(je(),p!==t.currentRequestId)return E(),j(n,Ie),{success:!1,reason:"busy",activeTask:s.value};if(pe.success&&pe.result)_({dataSource:{toolsUsed:pe.result.toolsUsed,toolRounds:pe.result.toolRounds},isStreaming:!1});else if(!A){le(t,"error");const d=a.messages[X].contentBlocks||[];d.push({type:"error",error:et(pe.error)}),_({contentBlocks:[...d],isStreaming:!1})}if(!pe.success)return E(),{success:!1,reason:"error"};const ct=Ut(a.messages[X].contentBlocks),Ce=await ke().replaceLatestMessageRound(t.currentAIChatId,{userMessageId:u.id,userContent:v,assistantMessage:{content:a.messages[X].content,contentBlocks:ct,tokenUsage:T}}),l=a.messages[X].processDurationMs;return a.messages[X]={...tt(Ce),dataSource:a.messages[X].dataSource,processDurationMs:l,isStreaming:!1},a.messages[r]={...a.messages[r],content:v},a.sessionTokenUsage=Ft(await ke().getAIChatTokenUsage(t.currentAIChatId)),t.sessionTokenUsage={...a.sessionTokenUsage},{success:!0}}catch(fe){if(t.isAborted)return E(),{success:!1,reason:"aborted"};console.error("[AI] edit and regenerate failed:",fe);const Me=a.messages[X]?.contentBlocks||[];return Me.push({type:"error",error:{name:fe instanceof Error?fe.name:null,message:fe instanceof Error?fe.message:String(fe),stack:fe instanceof Error?fe.stack??null:null}}),a.messages[X]&&_({contentBlocks:[...Me],isStreaming:!1}),{success:!1,reason:"error"}}finally{t.isAIThinking=!1,t.isLoadingSource=!1,t.currentToolStatus=null,t.isAborted=!1,t.currentRequestId="",t.currentAgentRequestId="",j(n)}}async function ze(n){const t=$(n);if(!t||!t.isAIThinking)return!1;t.isAborted=!0,t.isAIThinking=!1,t.isLoadingSource=!1,t.currentToolStatus=null,le(t,"aborted");const a=s.value?.chatKey===n?s.value.aiChatId??ge:mt(t),r=t.aiChatBuffers[a],u=r?r.messages[r.messages.length-1]:void 0;if(u&&u.role==="assistant"&&u.isStreaming){const v=u.processDurationMs??Math.max(0,Date.now()-u.timestamp);u.processDurationMs=v,u.contentBlocks=Ke(u.contentBlocks,v),u.isStreaming=!1,u.content+=`
|
|
7
|
-
|
|
8
|
-
_(已停止生成)_`}if(t.currentAgentRequestId)try{await dt().abort(t.currentAgentRequestId)}catch(v){console.error("[AI] 中止 Agent 请求失败:",v)}return t.currentRequestId="",t.currentAgentRequestId="",j(n),!0}async function Jt(){return s.value?ze(s.value.chatKey):!1}return{sessionStates:e,activeTask:s,ensureSessionState:G,ensureGlobalState:re,getSessionState:$,getActiveTaskState:L,applySessionAssistantSelection:ie,selectAssistantForSession:_e,loadAIChat:h,focusAIChat:P,focusActiveTaskAIChat:ce,resetToSelectorOnEnter:we,startNewAIChat:Qe,loadMoreSourceMessages:ot,updateMaxMessages:at,sendMessage:it,editMessageAndRegenerate:$e,stopGeneration:ze,stopActiveTask:Jt}});export{as as a,xs as b,$t as c,Es as s,Ns as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{S as a,V as s,W as n,T as i}from"./index-DnpnIyle.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};
|