zen-gitsync 2.17.25 → 2.17.27

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 (131) hide show
  1. package/README.md +3 -3
  2. package/package.json +1 -1
  3. package/scripts/release.js +8 -10
  4. package/src/cli/ai/tools.js +2 -1
  5. package/src/ui/public/assets/AgentEngineSelector-BUZYAFe-.js +2 -0
  6. package/src/ui/public/assets/AgentEngineSelector-DUf0TfaU.css +1 -0
  7. package/src/ui/public/assets/AgentView-BFSmHCq7.js +10 -0
  8. package/src/ui/public/assets/AgentView-BaYMwfC4.css +1 -0
  9. package/src/ui/public/assets/AppVersionBadge-BVZKGETC.js +2 -0
  10. package/src/ui/public/assets/{AppVersionBadge--5If494j.css → AppVersionBadge-DDYQqoy7.css} +1 -1
  11. package/src/ui/public/assets/BranchSelector-DHWPodUA.js +1 -0
  12. package/src/ui/public/assets/{BranchSelector-BTCMYwG0.css → BranchSelector-F4ibldMN.css} +1 -1
  13. package/src/ui/public/assets/CommitForm-4kI2csgs.css +1 -0
  14. package/src/ui/public/assets/CommitForm-OhIAOaq7.js +6 -0
  15. package/src/ui/public/assets/CommonDialog-BXR1wKBq.js +1 -0
  16. package/src/ui/public/assets/CommonDialog-w6EmBEXv.css +1 -0
  17. package/src/ui/public/assets/EditorView-8SLDYcaH.js +37 -0
  18. package/src/ui/public/assets/EditorView-CftLj8-x.css +1 -0
  19. package/src/ui/public/assets/FileDiffViewer-CfMdcN2j.js +15 -0
  20. package/src/ui/public/assets/FileDiffViewer-n5ea9qMe.css +1 -0
  21. package/src/ui/public/assets/FlowExecutionViewer-Dp3ZiatT.js +1 -0
  22. package/src/ui/public/assets/FlowExecutionViewer-jNHI5zdm.css +1 -0
  23. package/src/ui/public/assets/FlowOrchestrationWorkspace-D97DHgyy.js +21 -0
  24. package/src/ui/public/assets/FlowOrchestrationWorkspace-DwuSSxJ1.css +1 -0
  25. package/src/ui/public/assets/IconButton-BburHRSR.js +1 -0
  26. package/src/ui/public/assets/IconButton-RlXqKOeu.css +1 -0
  27. package/src/ui/public/assets/LogList-XspUhx-C.css +1 -0
  28. package/src/ui/public/assets/LogList-gFCt4Zlu.js +7 -0
  29. package/src/ui/public/assets/MindmapView-Diq2Cu4O.css +1 -0
  30. package/src/ui/public/assets/MindmapView-N67x62Qk.js +2 -0
  31. package/src/ui/public/assets/MonitorView-BQr56ZSC.js +1 -0
  32. package/src/ui/public/assets/MonitorView-DwUwJXnY.css +1 -0
  33. package/src/ui/public/assets/ProjectStartupButton-CB8IOg1E.css +1 -0
  34. package/src/ui/public/assets/ProjectStartupButton-DuWf9Z0m.js +1 -0
  35. package/src/ui/public/assets/RecentDirectoriesChat-6OG0eOqz.js +3 -0
  36. package/src/ui/public/assets/RecentDirectoriesChat-BMkc7fS1.css +1 -0
  37. package/src/ui/public/assets/RemoteManagerDialog-D4WphMtO.css +1 -0
  38. package/src/ui/public/assets/RemoteManagerDialog-DrR79IRj.js +4 -0
  39. package/src/ui/public/assets/RemoteRepoCard-BU6qOfoG.js +7 -0
  40. package/src/ui/public/assets/RemoteRepoCard-o01IrbVz.css +1 -0
  41. package/src/ui/public/assets/SourceMapView-Ba73NVs8.js +3 -0
  42. package/src/ui/public/assets/SourceMapView-CfDydtsu.css +1 -0
  43. package/src/ui/public/assets/SvgIcon-22vrNtgL.js +1 -0
  44. package/src/ui/public/assets/{SvgIcon-BQ6bR7l0.css → SvgIcon-CDNsk4-Q.css} +1 -1
  45. package/src/ui/public/assets/TemplateManager-C9CzSc6Y.js +1 -0
  46. package/src/ui/public/assets/TemplateManager-DO7EPfj8.css +1 -0
  47. package/src/ui/public/assets/UserInputNode-4m8zpMv9.js +1 -0
  48. package/src/ui/public/assets/UserInputNode-DDNSarag.css +1 -0
  49. package/src/ui/public/assets/{WorkbenchView-CJCxYK-K.css → WorkbenchView-B4F_TeL5.css} +1 -1
  50. package/src/ui/public/assets/WorkbenchView-CcqEZ_GQ.js +142 -0
  51. package/src/ui/public/assets/_plugin-vue_export-helper-DRfZJqP7.js +19 -0
  52. package/src/ui/public/assets/agentConversations-17Pw5IQJ.js +6 -0
  53. package/src/ui/public/assets/{configStore-C-htWfWm.js → configStore-Gzz89_z_.js} +1 -1
  54. package/src/ui/public/assets/element-plus-AaVXaSqv.js +48 -0
  55. package/src/ui/public/assets/{flow-mindmap-OPE_D4da.js → flow-mindmap-C22NSZc1.js} +34 -34
  56. package/src/ui/public/assets/{gitStore-DYpd8vZK.js → gitStore--fzrTf_y.js} +1 -1
  57. package/src/ui/public/assets/index-C7Ad5BGO.css +1 -0
  58. package/src/ui/public/assets/index-EJrJOx7s.js +142 -0
  59. package/src/ui/public/assets/office-docx-CJ6JSCs6.js +32 -0
  60. package/src/ui/public/assets/{office-excel-DMRySOdK.js → office-excel-BOjWK-1x.js} +1 -1
  61. package/src/ui/public/assets/office-pptx-CF43ZwXE.js +74 -0
  62. package/src/ui/public/assets/previewSandbox-BOIpC6hW.js +9 -0
  63. package/src/ui/public/assets/{previewSandbox-SqNQvuHv.css → previewSandbox-PYnM6Paz.css} +1 -1
  64. package/src/ui/public/assets/socket-io-BFqQXqAp.js +1 -0
  65. package/src/ui/public/assets/{toolsStore-DFu4Alwg.js → toolsStore-B3bFcRXP.js} +1 -1
  66. package/src/ui/public/assets/{useThemeObserver-DYxFoHh1.js → useThemeObserver-CiUpR4zj.js} +1 -1
  67. package/src/ui/public/assets/vendor-Bwl4dT-P.css +1 -0
  68. package/src/ui/public/assets/{vendor-BjomZKSS.js → vendor-viKaN257.js} +180 -173
  69. package/src/ui/public/assets/vue-flow-DwYB6Myr.js +39 -0
  70. package/src/ui/public/index.html +25 -25
  71. package/src/ui/server/routes/workbench/dispatchInstruction.js +8 -6
  72. package/src/ui/server/routes/workbench/dispatchInstruction.test.js +29 -2
  73. package/src/ui/server/routes/workbench/index.js +22 -15
  74. package/src/ui/server/routes/workbench/orchestratorPrompt.test.js +47 -2
  75. package/src/ui/server/routes/workbench/orchestratorStore.js +29 -1
  76. package/src/ui/server/routes/workbench/shared.js +28 -2
  77. package/src/utils/selfUpdatePolicy.js +26 -4
  78. package/src/utils/selfUpdatePolicy.test.js +21 -2
  79. package/src/ui/public/assets/AgentEngineSelector-BArUIELz.js +0 -1
  80. package/src/ui/public/assets/AgentEngineSelector-DR3r5eQE.css +0 -1
  81. package/src/ui/public/assets/AgentView-B3LhhRsy.css +0 -1
  82. package/src/ui/public/assets/AgentView-LpT8A9Fo.js +0 -1
  83. package/src/ui/public/assets/AppVersionBadge-DNXQm_Si.js +0 -2
  84. package/src/ui/public/assets/BranchSelector-DZPTz5Ql.js +0 -1
  85. package/src/ui/public/assets/CommitForm-6avyu1Kv.js +0 -6
  86. package/src/ui/public/assets/CommitForm-C-cL8_vz.css +0 -1
  87. package/src/ui/public/assets/CommonDialog-Bzi5ISqT.css +0 -1
  88. package/src/ui/public/assets/CommonDialog-CRXyMlp5.js +0 -1
  89. package/src/ui/public/assets/EditorView-BIHL8I9g.js +0 -1
  90. package/src/ui/public/assets/EditorView-DqxBkn6c.css +0 -1
  91. package/src/ui/public/assets/FileDiffViewer-B6zy6NiA.css +0 -1
  92. package/src/ui/public/assets/FileDiffViewer-BEYcCYs5.js +0 -14
  93. package/src/ui/public/assets/FlowExecutionViewer-B5kh7VxS.css +0 -1
  94. package/src/ui/public/assets/FlowExecutionViewer-DKRHDqbG.js +0 -1
  95. package/src/ui/public/assets/FlowOrchestrationWorkspace-BnCsF4z4.js +0 -21
  96. package/src/ui/public/assets/FlowOrchestrationWorkspace-CM2_9TW3.css +0 -1
  97. package/src/ui/public/assets/IconButton-D4df4t9A.js +0 -1
  98. package/src/ui/public/assets/IconButton-W2X09OKH.css +0 -1
  99. package/src/ui/public/assets/LogList-C7q0Y4J_.css +0 -1
  100. package/src/ui/public/assets/LogList-DXqB4JJv.js +0 -7
  101. package/src/ui/public/assets/MindmapView-C4xg3TwX.css +0 -1
  102. package/src/ui/public/assets/MindmapView-Ddc55wzp.js +0 -1
  103. package/src/ui/public/assets/MonitorView-BWOQfPtI.css +0 -1
  104. package/src/ui/public/assets/MonitorView-DeERavq-.js +0 -1
  105. package/src/ui/public/assets/ProjectStartupButton-DaLU4iS4.js +0 -1
  106. package/src/ui/public/assets/ProjectStartupButton-VoQqFee4.css +0 -1
  107. package/src/ui/public/assets/RecentDirectoriesChat-DVtsf7lW.js +0 -1
  108. package/src/ui/public/assets/RecentDirectoriesChat-o4xK1Koc.css +0 -1
  109. package/src/ui/public/assets/RemoteManagerDialog-BSOph2h2.css +0 -1
  110. package/src/ui/public/assets/RemoteManagerDialog-C3cfDsZi.js +0 -1
  111. package/src/ui/public/assets/RemoteRepoCard-CG9WPcA_.css +0 -1
  112. package/src/ui/public/assets/RemoteRepoCard-D1Hso5Fq.js +0 -1
  113. package/src/ui/public/assets/SourceMapView-CO_BZJKu.css +0 -1
  114. package/src/ui/public/assets/SourceMapView-Dwn5wy1o.js +0 -3
  115. package/src/ui/public/assets/SvgIcon-diKLLWK9.js +0 -1
  116. package/src/ui/public/assets/TemplateManager-D9gyZbHP.js +0 -1
  117. package/src/ui/public/assets/TemplateManager-DiM3vrbf.css +0 -1
  118. package/src/ui/public/assets/UserInputNode-JNtVWcbE.js +0 -1
  119. package/src/ui/public/assets/UserInputNode-d-oRXM_J.css +0 -1
  120. package/src/ui/public/assets/WorkbenchView-DxaAjZAA.js +0 -6
  121. package/src/ui/public/assets/_plugin-vue_export-helper-C7IvbEC3.js +0 -19
  122. package/src/ui/public/assets/agentConversations-nN-yDz8q.js +0 -5
  123. package/src/ui/public/assets/element-plus-Bx3j6vzG.js +0 -28
  124. package/src/ui/public/assets/index-BZFKDSGv.css +0 -1
  125. package/src/ui/public/assets/index-eq1OUcdk.js +0 -29
  126. package/src/ui/public/assets/office-docx-B0sJQnr-.js +0 -31
  127. package/src/ui/public/assets/office-pptx-Do2blxao.js +0 -60
  128. package/src/ui/public/assets/previewSandbox-Z707CZD9.js +0 -9
  129. package/src/ui/public/assets/socket-io-TBtw0msS.js +0 -1
  130. package/src/ui/public/assets/vendor-BY5ZDlW1.css +0 -1
  131. package/src/ui/public/assets/vue-flow-fVVGZspa.js +0 -39
@@ -1,5 +0,0 @@
1
- import"./rolldown-runtime-C0FnF6B9.js";import{Cn as e,Rn as t,a as n,br as r,i,pr as a,vr as o}from"./element-plus-Bx3j6vzG.js";import{i as s,l as c,o as l,s as u}from"./vendor-BjomZKSS.js";import{n as d}from"./_plugin-vue_export-helper-C7IvbEC3.js";import{i as f,o as p,t as m}from"./configStore-C-htWfWm.js";var h=`g ai`,g=`g-ai`,_=[{id:`gai`,name:h},...f.map(e=>({id:e.id,name:e.name}))],v=`zen-gitsync-agent-engine`;function y(e){return e===`gai`||p(e)}function b(e){return _.find(t=>t.id===e)?.name||`g ai`}function x(e){return p(e)}function S(){try{let e=localStorage.getItem(v);if(y(e))return e}catch{}return`gai`}function C(e){try{localStorage.setItem(v,e)}catch{}}t(),a();var w=[`image/*`,`.pdf`,`.txt`,`.md`,`.json`,`.csv`,`.log`,`.yml`,`.yaml`,`.xml`,`.toml`,`.ini`,`.html`,`.css`,`.js`,`.ts`,`.tsx`,`.vue`,`.py`,`.java`,`.go`,`.rs`,`.sql`,`.sh`].join(`,`),T=65536,E=`local-`;function D(e){if(!e||!Array.isArray(e.messages))return[];let t=[],n=e.messages.length;for(let r=0;r<n;r++){let i=e.messages[r];if(i.role!==`system`){if(i.role===`user`){let e=``,n;if(typeof i.content==`string`)e=i.content;else if(Array.isArray(i.content)){e=i.content.filter(e=>e?.type===`text`).map(e=>e.text||``).join(` `);let t=i.content.filter(e=>e?.type===`image_url`&&typeof e.image_url?.url==`string`).map((e,t)=>({id:`att-${r}-${t}`,name:`image`,size:0,type:A(e.image_url?.url||``)||`image/*`,preview:e.image_url?.url}));t.length>0&&(n=t)}(e||n)&&t.push({id:`msg-${r}`,role:`user`,content:e,attachments:n,status:`done`,createdAt:Date.now()})}else if(i.role===`assistant`){let i=`msg-${r}`,a=``,o=[],s=r;for(;s<n;){let t=e.messages[s];if(t.role!==`assistant`&&t.role!==`tool`)break;if(t.role===`assistant`){if(typeof t.content==`string`&&(a+=t.content),t.tool_calls&&t.tool_calls.length>0)for(let e of t.tool_calls)o.push({id:e.id||e.function?.name||l(),name:e.function?.name||``,arguments:e.function?.arguments||``,argsPreview:O(e.function?.name||``,e.function?.arguments||``),status:`done`,result:``})}else{let e=t.tool_call_id||t.name||``,n=o.find(t=>t.id===e);if(n){let e=t.content;typeof e!=`string`&&(e=`(non-text result)`),e.length>T&&(e=`…(前文已截断)\n${e.slice(-65536)}`),n.result=e}}s++}r=s-1,a.length>T&&(a=`…(前文已截断)\n${a.slice(-65536)}`);let c=!!a,u=o.length>0;(c||u)&&t.push({id:i,role:`assistant`,content:a,toolCalls:u?o:void 0,status:`done`,createdAt:Date.now()})}}}return t}function O(e,t){try{let n=JSON.parse(t);switch(e){case`run_command`:return String(n.command||``).slice(0,200);case`read_file`:case`write_file`:case`edit_file`:return String(n.path||``);case`list_files`:return String(n.path||`.`);case`search_text`:return String(n.pattern||``);case`update_plan`:{let e=c(t,`update_plan`);if(!e)return``;let{total:r,done:i}=s(e),a=String(n.explanation||``).replace(/\s+/g,` `).trim();return[`${i}/${r}`,a].filter(Boolean).join(` — `).slice(0,200)}default:return JSON.stringify(n).slice(0,200)}}catch{return t.slice(0,200)}}function k(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(String(r.result||``)),r.onerror=()=>n(r.error||Error(`FileReader failed`)),r.readAsDataURL(e)})}function A(e){let t=/^data:([^;,]+)/.exec(e);return t?t[1]:``}function j(){let t=m(),a=r([]),s=r(!1),c=r(S());function f(e){y(e)&&(c.value=e,C(e))}let p=o(new Map),h=r(null),g=r(!1),_=0,v=0,b=new Set;function x(e){return{key:e,sessionId:e.startsWith(E)?null:e,title:``,messages:[],isStreaming:!1,abortController:null,nonce:0,pendingQuestion:null,answeringQuestion:!1}}function w(e){let t=p.get(e);return t||=(p.set(e,x(e)),p.get(e)),t}let O=e(()=>h.value?p.get(h.value)??null:null),A=e(()=>O.value?.messages??[]),j=e(()=>O.value?.isStreaming??!1),M=e(()=>{let e=a.value.find(e=>e.sessionId===h.value);return y(e?.engine)?e.engine:c.value}),N=e(()=>a.value.some(e=>e.sessionId===h.value)),P=e(()=>O.value?.pendingQuestion??null),F=e(()=>O.value?.answeringQuestion??!1);function I(e){return!!p.get(e)?.isStreaming}function L(e){let n=[...e];for(let e of p.values()){if(!e.sessionId)continue;let r=n.findIndex(t=>t.sessionId===e.sessionId);if(r!==-1){b.delete(e.sessionId),e.isStreaming&&(n[r]={...n[r],isGenerating:!0});continue}if(!e.isStreaming&&!b.has(e.sessionId))continue;let i=new Date().toISOString();n.unshift({sessionId:e.sessionId,title:e.title||d(`@AGENT:无标题`),source:`web`,cwd:t.currentDirectory||``,model:``,engine:c.value,createdAt:i,updatedAt:i,messageCount:e.messages.filter(e=>e.role===`user`).length||1,size:0,isGenerating:e.isStreaming})}return n}async function R(){let e=++_,r=t.currentDirectory||``;if(!r){a.value=[],s.value=!1;return}s.value=!0;try{let t=`/api/agent/sessions?cwd=${encodeURIComponent(r)}`,i=await fetch(t).then(e=>e.json());if(e!==_)return;if(!i.success){n.error(i.error||d(`@AGENT:加载会话列表失败`));return}let o=Array.isArray(i.sessions)?i.sessions:[];a.value=L(o)}catch(t){if(e!==_)return;n.error(d(`@AGENT:加载会话列表失败`)+`: `+(t?.message||t))}finally{e===_&&(s.value=!1)}}function z(e,n){let r=new Date().toISOString(),i=a.value.find(t=>t.sessionId===e);if(i){i.isGenerating=!0,i.updatedAt=r;return}a.value=[{sessionId:e,title:n||d(`@AGENT:无标题`),source:`web`,cwd:t.currentDirectory||``,model:``,engine:c.value,createdAt:r,updatedAt:r,messageCount:1,size:0,isGenerating:!0},...a.value]}function B(e){let t=a.value.find(t=>t.sessionId===e);t&&(t.isGenerating=!1)}async function V(e){if(p.get(e)?.isStreaming){h.value=e;return}g.value=!0,h.value=e;try{let t=await fetch(`/api/agent/sessions/${encodeURIComponent(e)}`).then(e=>e.json());if(!t.success){n.error(t.error||d(`@AGENT:加载会话失败`));return}let r=w(e);r.sessionId=e,r.messages=D(t.session),t.session?.title&&(r.title=t.session.title)}catch(e){n.error(d(`@AGENT:加载会话失败`)+`: `+(e?.message||e))}finally{g.value=!1}}async function H(e){try{await i.confirm(d(`@AGENT:确认删除该会话`),d(`@AGENT:删除后无法恢复`),{type:`warning`})}catch{return}let t=p.get(e);if(t?.abortController)try{t.abortController.abort()}catch{}p.delete(e);try{let t=await fetch(`/api/agent/sessions/${encodeURIComponent(e)}`,{method:`DELETE`}).then(e=>e.json());if(!t.success){n.error(t.error||d(`@AGENT:删除失败`));return}a.value=a.value.filter(t=>t.sessionId!==e),h.value===e&&(h.value=null),n.success(d(`@AGENT:已删除`))}catch(e){n.error(d(`@AGENT:删除失败`)+`: `+(e?.message||e))}}async function U(e,t){try{let r=await fetch(`/api/agent/sessions/${encodeURIComponent(e)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({title:t})}).then(e=>e.json());if(!r.success){n.error(r.error||d(`@AGENT:重命名失败`));return}let i=a.value.find(t=>t.sessionId===e);i&&(i.title=t);let o=p.get(e);o&&(o.title=t),n.success(d(`@AGENT:已重命名`))}catch(e){n.error(d(`@AGENT:重命名失败`)+`: `+(e?.message||e))}}function W(){h.value=null}async function G(e,r=[],i={}){let a=r.filter(e=>e?.file?.type?.startsWith(`image/`)),s=r.filter(e=>!e?.file?.type?.startsWith(`image/`)),c=[],f=0;for(let e of s){let t=e.file.size||0;if(!(t>10485760)){if(c.length>=10||f+t>20971520)break;f+=t,c.push(e)}}let m=s.filter(e=>!c.includes(e));m.length>0&&n.warning(`${d(`@AGENT:以下附件超过大小或数量上限,已忽略:`)}${m.map(e=>e.file.name).join(`、`)}`);let g=w(h.value||`${E}${Date.now()}-${++v}`);if(!e.trim()&&a.length===0&&c.length===0||g.isStreaming)return;let _=(await Promise.allSettled(a.map(e=>k(e.file)))).map(e=>e.status===`fulfilled`?e.value:``).filter(e=>e.startsWith(`data:image/`)),y=(await Promise.allSettled(c.map(async e=>({name:e.file.name||`file`,dataUrl:await k(e.file)})))).map(e=>e.status===`fulfilled`?e.value:null).filter(e=>!!e&&typeof e.dataUrl==`string`&&e.dataUrl.startsWith(`data:`));h.value=g.key,g.nonce+=1;let x=g.nonce;g.abortController=new AbortController;let S=g.abortController;g.pendingQuestion=null,g.answeringQuestion=!1;let C={id:l(),role:`user`,content:e,status:`done`,createdAt:Date.now()},D=[...a,...c];D.length>0&&(C.attachments=D.map(e=>({id:e.id,name:e.file.name||`image`,size:e.file.size||0,type:e.file.type||``,preview:e.preview}))),g.messages.push(C);let O=o({id:l(),role:`assistant`,content:``,status:`pending`,createdAt:Date.now()});g.messages.push(O),g.isStreaming=!0;let A=[],j=g.sessionId,N=!1;try{let n=await fetch(`/api/agent/chat`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify({sessionId:g.sessionId||``,userMessage:e,cwd:t.currentDirectory||``,engine:i.engine??M.value,..._.length>0?{images:_}:{},...y.length>0?{attachments:y}:{},...i.openFilePath?{openFilePath:i.openFilePath}:{},...i.dirStatus?.length?{dirStatus:i.dirStatus}:{},...i.dirSummary?{dirSummary:i.dirSummary}:{},...i.allowDispatch?{allowDispatch:!0,dispatchExecutor:i.dispatchExecutor||``,dispatchUseDefaultPrompt:i.dispatchUseDefaultPrompt!==!1}:{}}),signal:S.signal});if(x!==g.nonce)return;if(!n.ok||!n.body){let e=await n.text().catch(()=>``);throw Error(e||`HTTP ${n.status}`)}let r=n.body.getReader(),a=new TextDecoder(`utf-8`),s=``;for(;;){let{value:t,done:n}=await r.read();if(x!==g.nonce)return;if(n)break;s+=a.decode(t,{stream:!0});let i=s.split(`
2
- `);s=i.pop()??``;for(let t of i){let n=t.trim();if(!n.startsWith(`data:`))continue;let r=n.slice(5).trim();if(!r)continue;let i;try{i=JSON.parse(r)}catch{continue}switch(i.type){case`meta`:if(i.sessionId){let t=String(i.sessionId);if(j=t,g.sessionId!==t){let e=g.key;g.sessionId=t,g.key=t,e!==t&&(p.delete(e),p.set(t,g),h.value===e&&(h.value=t))}let n=String(i.title||``).trim()||e.trim().split(`
3
- `)[0].trim().slice(0,40)||d(`@AGENT:无标题`);g.title||=n,z(t,n)}break;case`thinking`:O.reasoning||(O.reasoning=``,O.reasoningStatus=`streaming`),O.reasoning+=String(i.delta||``),O.status=`streaming`;break;case`content`:O.status===`pending`&&(O.status=`streaming`);{let e=String(i.delta||``);O.content+=e;let t=u(O.content);t.reasoning&&(O.reasoning||(O.reasoning=``,O.reasoningStatus=`streaming`),O.reasoning=t.reasoning,O.content=t.content)}break;case`tool_call_start`:{let e=o({id:i.toolCallId||l(),name:i.name||``,argsPreview:i.argsPreview||``,arguments:i.arguments||i.argsPreview||``,status:`running`,result:``});A.push(e),O.toolCalls||=[],O.toolCalls.push(e),O.status===`pending`&&(O.status=`streaming`);break}case`tool_output`:{let e=A.find(e=>e.id===i.toolCallId);if(e){let t=`${e.result||``}${String(i.chunk||``)}`;e.result=t.length>T?`…(前文已截断)\n${t.slice(-65536)}`:t}break}case`tool_result`:{let e=A.find(e=>e.id===i.toolCallId);e&&(e.result=String(i.result||``),e.status=`done`,e.name===`ask_user`&&(g.pendingQuestion=null));break}case`ask_user`:g.pendingQuestion={interactionId:String(i.interactionId||``),question:String(i.question||``),options:Array.isArray(i.options)?i.options.map(e=>String(e)):[],allowFreeText:i.allowFreeText!==!1,multiple:i.multiple===!0};break;case`done`:{let e=i.content||O.content,t=u(e);t.reasoning&&!O.reasoning&&(O.reasoning=t.reasoning),O.content=t.content,O.status=`done`,O.reasoningStatus===`streaming`&&(O.reasoningStatus=`done`);break}case`error`:O.status=`error`,O.error=String(i.error||d(`@AGENT:未知错误`)),O.reasoningStatus===`streaming`&&(O.reasoningStatus=`done`)}}}if(x!==g.nonce)return;O.status===`pending`&&(O.status=`done`)}catch(e){if(x!==g.nonce)return;e?.name===`AbortError`||S.signal.aborted?(N=!0,O.content=(O.content||``)+`
4
-
5
- [`+d(`@AGENT:已停止`)+`]`,O.status=`done`,O.reasoningStatus===`streaming`&&(O.reasoningStatus=`done`)):(O.status=`error`,O.error=e?.message||String(e),n.error(O.error||d(`@AGENT:对话失败`)))}finally{x===g.nonce&&(g.isStreaming=!1,g.pendingQuestion=null,g.answeringQuestion=!1,g.abortController=null),j&&(N&&b.add(j),B(j)),R().catch(()=>{})}}async function K(e){let t=O.value,r=t?.pendingQuestion,i=t?.sessionId,a=(Array.isArray(e)?e:[e]).map(e=>String(e??``).trim()).filter(Boolean);if(!t||!r||!i||!a.length||t.answeringQuestion)return!1;t.answeringQuestion=!0;try{let e=await fetch(`/api/agent/respond`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({sessionId:i,interactionId:r.interactionId,answer:r.multiple?a:a[0]})}).then(e=>e.json());if(!e.success)throw Error(e.error||d(`@AGENT:回答提交失败`));return t.pendingQuestion=null,!0}catch(e){return n.error(e?.message||d(`@AGENT:回答提交失败`)),!1}finally{t.answeringQuestion=!1}}function q(){let e=O.value;e?.abortController&&(e.abortController.abort(),e.abortController=null)}return{sessions:a,sessionsLoading:s,currentSessionId:h,messages:A,isStreaming:j,sessionLoading:g,pendingQuestion:P,answeringQuestion:F,isSessionGenerating:I,currentEngine:M,pendingEngine:c,isEngineLocked:N,pickEngine:f,loadSessions:R,loadSession:V,deleteSession:H,renameSession:U,newSession:W,sendMessage:G,answerQuestion:K,stop:q}}var M=`data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2032%2032'%20fill='none'%3e%3crect%20x='2'%20y='6'%20width='27'%20height='23'%20rx='6'%20fill='%235364E8'/%3e%3cpath%20d='M9.419%2012.581a1.3%201.3%200%200%200-1.838%201.838L11.162%2018l-3.581%203.581a1.3%201.3%200%200%200%201.838%201.838l4.5-4.5a1.3%201.3%200%200%200%200-1.838Z'%20fill='%23FFFFFF'/%3e%3crect%20x='15.7'%20y='21.2'%20width='7.6'%20height='2.6'%20rx='1.3'%20fill='%23FFFFFF'/%3e%3cpath%20d='M25%20.4%2027.115%204.885%2031.6%207l-4.485%202.115L25%2013.6l-2.115-4.485L18.4%207l4.485-2.115Z'%20fill='%23FFFFFF'/%3e%3cpath%20d='M25%202.5%2026.22%205.78%2029.5%207l-3.28%201.22L25%2011.5l-1.22-3.28L20.5%207l3.28-1.22Z'%20fill='%2339D7B5'/%3e%3c/svg%3e`;function N(e){if(!e)return``;try{let t=new Date(e);if(Number.isNaN(t.getTime()))return e;let n=new Date,r=n.getTime()-t.getTime(),i=e=>String(e).padStart(2,`0`);if(t.toDateString()===n.toDateString())return`${i(t.getHours())}:${i(t.getMinutes())}`;if(r<6048e5){let e=Math.floor(r/864e5);return e===0?d(`@AGENT:今天`):`${e}${d(`@AGENT:天前`)}`}return`${t.getFullYear()}-${i(t.getMonth()+1)}-${i(t.getDate())}`}catch{return e}}function P(e,t){return e.map(e=>({id:e.sessionId,title:e.title||d(`@AGENT:无标题`),meta:`${N(e.updatedAt)} · ${e.messageCount??0} ${d(`@AGENT:条`)}`,generatingText:e.isGenerating||t(e.sessionId)?d(`@AGENT:正在生成中...`):``,badge:e.source===`cli`?`CLI`:``,searchText:e.model}))}function F(){return{newConversation:d(`@AGENT:新建会话`),searchPlaceholder:d(`@AGENT:搜索会话...`),empty:d(`@AGENT:暂无会话`),emptyHint:d(`@AGENT:点击上方按钮开始对话`),noResult:d(`@AGENT:未找到匹配的会话`),loading:d(`@AGENT:加载会话中...`),rename:d(`@AGENT:重命名`),delete:d(`@AGENT:删除`),untitled:d(`@AGENT:无标题`)}}var I=`g ai`,L=M;function R(){return{title:d(`@AGENT:等待你的回答`),placeholder:d(`@AGENT:输入回答`),submit:d(`@AGENT:提交回答`)}}export{P as a,_ as c,x as d,R as i,g as l,I as n,w as o,F as r,j as s,L as t,b as u};