zen-gitsync 2.18.3 → 2.18.4
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/README.md +6 -6
- package/package.json +3 -2
- package/src/cli/ai/modelSetup.js +120 -7
- package/src/cli/ai/modelSetup.test.js +157 -0
- package/src/ui/public/assets/{AgentView-juB5wmpE.js → AgentView-0eP_Qb7Z.js} +1 -1
- package/src/ui/public/assets/{AppVersionBadge-BDi3TXTG.js → AppVersionBadge-sYoxE7hr.js} +2 -2
- package/src/ui/public/assets/{BranchSelector-B8hW4D64.js → BranchSelector-BJyAmmrt.js} +1 -1
- package/src/ui/public/assets/{CommitForm-epNRsZc3.js → CommitForm-DY6P1_B2.js} +1 -1
- package/src/ui/public/assets/{CommonDialog-CTbNV8Wg.js → CommonDialog-9td95UkD.js} +1 -1
- package/src/ui/public/assets/{CopySessionButton-DEFGS3YY.js → CopySessionButton-De46dtzF.js} +1 -1
- package/src/ui/public/assets/EditorView-B2uGxtRE.js +1 -0
- package/src/ui/public/assets/{EditorView-Cf9u2vkM.css → EditorView-C4eN80vi.css} +1 -1
- package/src/ui/public/assets/{FlowExecutionViewer-BEip7kmz.js → FlowExecutionViewer-BhgFKaIR.js} +1 -1
- package/src/ui/public/assets/{FlowOrchestrationWorkspace-Bsszwf6-.js → FlowOrchestrationWorkspace-DQpWyRai.js} +1 -1
- package/src/ui/public/assets/{LogList-EfGFN896.js → LogList-uk1cDDEM.js} +1 -1
- package/src/ui/public/assets/{MindmapView-BM81SZBC.js → MindmapView-Cjk4g62c.js} +1 -1
- package/src/ui/public/assets/{MonitorView-D6yTQA3g.js → MonitorView-BzjrUh7I.js} +1 -1
- package/src/ui/public/assets/{ProjectStartupButton-DFgM7Pgz.js → ProjectStartupButton-C0nPW6ku.js} +1 -1
- package/src/ui/public/assets/{RecentDirectoriesChat-CeAb-DSk.js → RecentDirectoriesChat-DN7CtUV6.js} +1 -1
- package/src/ui/public/assets/{RemoteManagerDialog-C7pqRpzl.js → RemoteManagerDialog-5JJITbBA.js} +1 -1
- package/src/ui/public/assets/{RemoteRepoCard-BZcV9S8Z.js → RemoteRepoCard-BAksLs0D.js} +1 -1
- package/src/ui/public/assets/{SourceMapView-Bo7xTfCi.js → SourceMapView-IGoZ_15F.js} +1 -1
- package/src/ui/public/assets/{SvgIcon-_bACg8fN.js → SvgIcon-BPexLObf.js} +1 -1
- package/src/ui/public/assets/{UserInputNode-Cfzi_G75.js → UserInputNode-Bi7sIefa.js} +1 -1
- package/src/ui/public/assets/{WorkbenchView-Ifx4f8MG.js → WorkbenchView-CMsyIBYe.js} +2 -2
- package/src/ui/public/assets/{WorkbenchView-5tjrtuRX.css → WorkbenchView-PaqqcDj9.css} +1 -1
- package/src/ui/public/assets/{_plugin-vue_export-helper-BXpA-5RR.js → _plugin-vue_export-helper-BO6qa5C3.js} +5 -5
- package/src/ui/public/assets/{agentConversations-vfZW1S6H.js → agentConversations-mDAcOgXq.js} +1 -1
- package/src/ui/public/assets/{configStore-BpKN8VOg.js → configStore-D_CFFOs9.js} +1 -1
- package/src/ui/public/assets/{dagre-56EqSb7a.js → dagre-Cnlh8k5K.js} +3 -3
- package/src/ui/public/assets/{element-plus-DAeQkmsV.js → element-plus-CNJIhPSG.js} +1 -1
- package/src/ui/public/assets/{flow-mindmap-DSMXo-RP.js → flow-mindmap-DdKeBM_G.js} +1 -1
- package/src/ui/public/assets/index-BsHc5Rxd.js +57 -0
- package/src/ui/public/assets/index-CUvENjYd.css +1 -0
- package/src/ui/public/assets/{monaco-iQW4tGZA.js → monaco-Cs1I4pfm.js} +1 -1
- package/src/ui/public/assets/{office-docx-CX5czsEV.js → office-docx-DmRJb9rE.js} +1 -1
- package/src/ui/public/assets/{office-excel-D4925wfu.js → office-excel-DavLx3AP.js} +1 -1
- package/src/ui/public/assets/{office-pptx-92XfuytY.js → office-pptx-DYg4i8gh.js} +1 -1
- package/src/ui/public/assets/{vendor-DpIR4Sxg.css → vendor-B3_-csNx.css} +1 -1
- package/src/ui/public/assets/{vendor-ytAMhfHM.js → vendor-Dtqsc1If.js} +4 -4
- package/src/ui/public/assets/{vue-flow-COq_ygQX.js → vue-flow-3t3hqiSq.js} +1 -1
- package/src/ui/public/index.html +13 -13
- package/src/ui/public/assets/EditorView-BFAjQLzT.js +0 -1
- package/src/ui/public/assets/index-DDofdm66.js +0 -57
- package/src/ui/public/assets/index-DnNE9KX8.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./rolldown-runtime-C0FnF6B9.js";import{At as e,Ct as t,Dn as n,En as r,Fn as i,J as a,Jn as o,Jr as s,Jt as c,Kn as l,Kr as u,M as d,Mn as f,Nn as p,Nr as m,On as h,Qn as g,Tn as _,Tr as v,Tt as y,Un as b,Vt as ee,W as x,Wt as S,Xn as C,Zr as w,Zt as T,_r as E,a as D,ar as O,bn as k,cr as A,et as j,fn as M,fr as N,gn as P,hn as F,i as I,j as te,kt as ne,ln as L,lt as re,mn as R,mt as ie,r as ae,rn as z,sr as B,st as V,tr as H,tt as U,wn as W,yr as G,zn as K}from"./element-plus-DAeQkmsV.js";import{i as q,o as J}from"./vendor-ytAMhfHM.js";import{n as Y,t as X}from"./_plugin-vue_export-helper-BXpA-5RR.js";import{t as oe}from"./configStore-BpKN8VOg.js";import{t as se}from"./CommonDialog-CTbNV8Wg.js";import{_ as ce}from"./index-DDofdm66.js";import{a as Z,c as le,i as ue,l as de,n as fe,o as pe,p as me,r as he,s as ge,t as _e,u as ve}from"./agentConversations-vfZW1S6H.js";import{c as ye,s as be,t as xe}from"./CopySessionButton-DEFGS3YY.js";K(),N(),L(),m();var Se={class:`marketplace-panel`},Ce={class:`mp-toolbar`},we={class:`mp-search`},Te=[`placeholder`],Ee={class:`mp-toolbar-sub`},De={class:`mp-target-hint`},Oe={class:`mp-source-filter`},ke=[`onClick`],Ae={class:`mp-body`},je={class:`mp-group-header`},Me={class:`mp-group-title`},Ne={key:0,class:`mp-group-count`},Pe={key:1,class:`mp-group-error`},Fe=[`href`,`title`],Ie={key:0,class:`mp-grid`},Le={class:`mp-card-head`},Re=[`title`],ze={key:0,class:`mp-card-metric`},Be=[`title`],Ve={class:`mp-card-meta`},He=[`title`],Ue=[`title`],We={key:2,class:`mp-tag remote`},Ge={class:`mp-card-foot`},Ke=[`href`],qe={key:1,class:`mp-installed-chip`},Je=[`disabled`,`onClick`],Ye={key:3,class:`mp-not-installable`},Xe={key:1,class:`mp-empty`},Ze={key:0,class:`mp-group installed`},Qe={class:`mp-group-header`},$e={class:`mp-group-title`},et={class:`mp-group-count`},tt={key:0,class:`mp-installed-block`},nt={class:`mp-installed-target`},rt={class:`mp-installed-list`},it=[`title`],at=[`title`],ot={key:1,class:`mp-meta-pkg`},st={key:2,class:`mp-tag warn`},ct=[`disabled`,`title`,`onClick`],lt=[`disabled`,`onClick`],ut={key:1,class:`mp-empty all`},dt={key:0,class:`mkt-form`},ft={class:`mkt-form-name`},pt=[`onUpdate:modelValue`,`placeholder`],mt={key:0,class:`mkt-field`},ht={class:`mkt-hint`},gt=X(i({__name:`MarketplacePanel`,props:{type:{}},setup(e){let i=e,o=oe(),s=G([]),l=G([]),m=G(!1),y=G(``),b=G(``),T=G([]),j=G(`project`),M=G(new Set),N=G(new Set),F=G(new Set),L=W(()=>o.currentDirectory||``),R=null;async function V(){if(!m.value){m.value=!0;try{let e=new URLSearchParams({type:i.type,cwd:L.value});b.value&&e.set(`q`,b.value),T.value.length&&e.set(`sources`,T.value.join(`,`));let t=await(await fetch(`/api/agent/marketplace/catalog?${e}`)).json();t?.success?(s.value=t.groups||[],l.value=t.installed||[]):I.error(t?.error||Y(`@MKT:加载失败`))}catch{I.error(Y(`@MKT:加载失败`))}finally{m.value=!1}}}O(y,e=>{R&&clearTimeout(R),R=setTimeout(()=>{b.value=e.trim(),V()},400)}),O(T,()=>V()),O(()=>i.type,()=>{T.value=[],b.value=``,y.value=``,V()}),O(L,()=>V()),V();let H=W(()=>{let e=L.value?L.value.split(/[\\/]/).filter(Boolean).pop():``;return j.value===`project`?e||Y(`@MKT:当前项目`):Y(`@MKT:g ai 智能体`)});function K(e){return e.stars?`${q(e.stars)} ★`:e.downloads?`${q(e.downloads)} ${Y(`@MKT:周下载`)}`:e.uses?`${q(e.uses)} ${Y(`@MKT:次使用`)}`:``}function q(e){return e>=1e3?`${(e/1e3).toFixed(e>=1e4?0:1)}k`:String(e)}function J(e){return`${e.id}`}function X(e){return M.value.has(J(e))}let ce=W(()=>{let e={project:[],global:[]};for(let t of l.value)(e[t.target]||=[]).push(t);return e}),Z=E({visible:!1,item:null,env:{},args:``});function le(e){return i.type===`mcp`&&(!!e.envKeys?.length||!!e.args?.length)}function ue(e){Z.item=e,Z.env=Object.fromEntries((e.envKeys||[]).map(e=>[e,``])),Z.args=(e.args||[]).join(` `),Z.visible=!0}function de(){let e=Z.item;if(Z.visible=!1,!e)return;let t=Object.fromEntries(Object.entries(Z.env).filter(([,e])=>e.trim()!==``)),n=Z.args.trim()?Z.args.trim().match(/(?:[^\s"]+|"[^"]*")+/g)?.map(e=>e.replace(/^"|"$/g,``))??void 0:void 0;pe(e,{env:t,...n?{args:n}:{}})}async function fe(e){if(!e.installed||await me(e)){if(le(e)){ue(e);return}await pe(e,{})}}async function pe(e,t){let n=J(e);M.value.add(n);try{let n=await fetch(`/api/agent/marketplace/install`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({type:i.type,target:j.value,cwd:L.value,item:{...e,...t}})}),r=await n.json().catch(()=>null);if(!n.ok||!r?.success){I.error(r?.error||Y(`@MKT:安装失败`));return}r.item?.warning&&I.warning(r.item.warning),r.item?.envKeys?.length?I.warning(`${Y(`@MKT:还缺环境变量`)}: ${r.item.envKeys.join(`, `)}`):I.success(Y(`@MKT:安装成功`)),await V()}catch{I.error(Y(`@MKT:安装失败`))}finally{M.value.delete(n)}}async function me(e){try{return await ae.confirm(`${e.name} ${Y(`@MKT:已安装,要重新安装吗?`)}`,Y(`@MKT:重新安装`),{confirmButtonText:Y(`@MKT:重装`),cancelButtonText:Y(`@MKT:取消`),type:`warning`}),!0}catch{return!1}}async function he(e){let t=`${e.target}:${e.id}`;F.value.add(t);try{let t=await fetch(`/api/agent/marketplace/reveal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({type:i.type,target:e.target,cwd:L.value,id:e.id})}),n=await t.json().catch(()=>null);(!t.ok||!n?.success)&&I.error(n?.error||Y(`@MKT:打开失败`))}catch{I.error(Y(`@MKT:打开失败`))}finally{F.value.delete(t)}}async function ge(e){try{await ae.confirm(`${Y(`@MKT:确定卸载`)} ${e.name}?`,Y(`@MKT:卸载`),{confirmButtonText:Y(`@MKT:卸载`),cancelButtonText:Y(`@MKT:取消`),type:`warning`})}catch{return}let t=`${e.target}:${e.id}`;N.value.add(t);try{let t=new URLSearchParams({target:e.target,cwd:L.value}),n=await fetch(`/api/agent/marketplace/item/${i.type}/${encodeURIComponent(e.id)}?${t}`,{method:`DELETE`}),r=await n.json().catch(()=>null);if(!n.ok||!r?.success){I.error(r?.error||Y(`@MKT:卸载失败`));return}I.success(Y(`@MKT:已卸载`)),await V()}catch{I.error(Y(`@MKT:卸载失败`))}finally{N.value.delete(t)}}return(i,o)=>{let b=a,E=te,O=d,M=x,I=D;return C(),h(`div`,Se,[_(`div`,Ce,[_(`div`,we,[p(b,{class:`mp-search-icon`},{default:B(()=>[p(v(S))]),_:1}),A(_(`input`,{"onUpdate:modelValue":o[0]||=e=>y.value=e,class:`mp-search-input`,type:`text`,placeholder:e.type===`skill`?v(Y)(`@MKT:搜索 Skill...`):v(Y)(`@MKT:搜索 MCP 服务...`)},null,8,Te),[[P,y.value]])]),p(O,{modelValue:j.value,"onUpdate:modelValue":o[1]||=e=>j.value=e,size:`small`,class:`mp-target`},{default:B(()=>[p(E,{value:`project`},{default:B(()=>[f(w(v(Y)(`@MKT:当前项目`)),1)]),_:1}),p(E,{value:`global`},{default:B(()=>[f(w(v(Y)(`@MKT:g ai 智能体`)),1)]),_:1})]),_:1},8,[`modelValue`]),p(M,{content:v(Y)(`@MKT:刷新`),placement:`top`,"show-after":300},{default:B(()=>[_(`button`,{class:u([`mp-refresh`,{spinning:m.value}]),onClick:V},[p(b,null,{default:B(()=>[p(v(ee))]),_:1})],2)]),_:1},8,[`content`])]),_(`div`,Ee,[_(`span`,De,[f(w(v(Y)(`@MKT:安装到`))+` `,1),_(`b`,null,w(H.value),1)]),_(`div`,Oe,[(C(!0),h(k,null,g(s.value,e=>(C(),h(`button`,{key:e.id,class:u([`mp-chip`,{active:T.value.includes(e.id)}]),onClick:()=>{let t=T.value.indexOf(e.id);t>=0?T.value.splice(t,1):T.value.push(e.id)}},w(e.label),11,ke))),128)),T.value.length?(C(),h(`button`,{key:0,class:`mp-chip clear`,onClick:o[2]||=e=>T.value=[]},w(v(Y)(`@MKT:全部来源`)),1)):n(``,!0)])]),A((C(),h(`div`,Ae,[(C(!0),h(k,null,g(s.value,e=>(C(),h(`section`,{key:e.id,class:`mp-group`},[_(`header`,je,[_(`h3`,Me,w(e.label),1),e.status===`ok`?(C(),h(`span`,Ne,w(e.items.length),1)):(C(),h(`span`,Pe,[p(b,null,{default:B(()=>[p(v(z))]),_:1}),f(` `+w(e.error||v(Y)(`@MKT:来源不可用`)),1)])),e.homepage?(C(),h(`a`,{key:2,class:`mp-group-link`,href:e.homepage,target:`_blank`,rel:`noopener noreferrer`,title:e.homepage},[p(b,null,{default:B(()=>[p(v(ne))]),_:1})],8,Fe)):n(``,!0)]),e.status===`ok`&&e.items.length?(C(),h(`div`,Ie,[(C(!0),h(k,null,g(e.items,e=>(C(),h(`article`,{key:J(e),class:`mp-card`},[_(`div`,Le,[_(`span`,{class:`mp-card-name`,title:e.name},w(e.name),9,Re),K(e)?(C(),h(`span`,ze,[p(b,null,{default:B(()=>[e.stars?(C(),r(v(c),{key:0})):(C(),r(v(ie),{key:1}))]),_:2},1024),f(` `+w(K(e)),1)])):n(``,!0)]),_(`p`,{class:`mp-card-desc`,title:e.description},w(e.description||v(Y)(`@MKT:暂无描述`)),9,Be),_(`div`,Ve,[e.package?(C(),h(`code`,{key:0,class:`mp-meta-pkg`,title:e.package},w(e.package),9,He)):e.repository?(C(),h(`span`,{key:1,class:`mp-meta-repo`,title:e.repository+(e.subpath?` · `+e.subpath:``)},[f(w(e.repository),1),e.subpath?(C(),h(k,{key:0},[f(` · `+w(e.subpath),1)],64)):n(``,!0)],8,Ue)):n(``,!0),e.transport===`remote`?(C(),h(`span`,We,w(v(Y)(`@MKT:远程服务`)),1)):n(``,!0),(C(!0),h(k,null,g((e.tags||[]).slice(0,2),e=>(C(),h(`span`,{key:e,class:`mp-tag`},w(e),1))),128))]),_(`div`,Ge,[e.upstream?(C(),h(`a`,{key:0,class:`mp-card-link`,href:e.upstream,target:`_blank`,rel:`noopener noreferrer`},w(v(Y)(`@MKT:查看来源`)),9,Ke)):n(``,!0),o[6]||=_(`span`,{class:`mp-foot-spacer`},null,-1),e.installed?(C(),h(`span`,qe,[p(b,null,{default:B(()=>[p(v(U))]),_:1}),f(w(v(Y)(`@MKT:已安装`)),1)])):e.installable===!1?(C(),h(`span`,Ye,w(v(Y)(`@MKT:暂不支持一键安装`)),1)):(C(),h(`button`,{key:2,class:`mp-install-btn`,disabled:X(e),onClick:t=>fe(e)},w(X(e)?v(Y)(`@MKT:安装中...`):v(Y)(`@MKT:安装`)),9,Je))])]))),128))])):e.status===`ok`?(C(),h(`div`,Xe,w(v(Y)(`@MKT:该来源暂无结果`)),1)):n(``,!0)]))),128)),l.value.length?(C(),h(`section`,Ze,[_(`header`,Qe,[_(`h3`,$e,w(v(Y)(`@MKT:已安装`)),1),_(`span`,et,w(l.value.length),1)]),(C(),h(k,null,g([`project`,`global`],e=>_(`div`,{key:e},[ce.value[e]?.length?(C(),h(`div`,tt,[_(`div`,nt,w(e===`project`?v(Y)(`@MKT:当前项目`):v(Y)(`@MKT:g ai 智能体`)),1),_(`div`,rt,[(C(!0),h(k,null,g(ce.value[e],r=>(C(),h(`div`,{key:e+r.id,class:`mp-installed-row`},[_(`span`,{class:`mp-installed-name`,title:r.name},w(r.name),9,it),r.id&&r.id!==r.name?(C(),h(`code`,{key:0,class:`mp-installed-id`,title:r.dir||r.file||r.id},w(r.id),9,at)):n(``,!0),r.package?(C(),h(`code`,ot,w(r.package),1)):n(``,!0),r.requiredEnv?.length?(C(),h(`span`,st,w(v(Y)(`@MKT:待配置`))+`: `+w(r.requiredEnv.join(`, `)),1)):n(``,!0),o[7]||=_(`span`,{class:`mp-foot-spacer`},null,-1),_(`button`,{class:`mp-reveal-btn`,disabled:F.value.has(e+r.id),title:r.dir||r.file||``,onClick:e=>he(r)},[p(b,null,{default:B(()=>[p(v(t))]),_:1}),f(` `+w(v(Y)(`@MKT:打开文件夹`)),1)],8,ct),_(`button`,{class:`mp-remove-btn`,disabled:N.value.has(e+r.id),onClick:e=>ge(r)},[p(b,null,{default:B(()=>[p(v(re))]),_:1}),f(` `+w(N.value.has(e+r.id)?v(Y)(`@MKT:卸载中...`):v(Y)(`@MKT:卸载`)),1)],8,lt)]))),128))])])):n(``,!0)])),64))])):n(``,!0),!m.value&&!s.value.length?(C(),h(`div`,ut,w(v(Y)(`@MKT:加载失败`)),1)):n(``,!0)])),[[I,m.value]]),p(se,{modelValue:Z.visible,"onUpdate:modelValue":o[5]||=e=>Z.visible=e,title:v(Y)(`@MKT:配置 MCP`),width:`460px`,type:`flex`,"close-on-click-modal":!1,"append-to-body":``},{footer:B(()=>[_(`button`,{class:`mkt-cancel`,onClick:o[4]||=e=>Z.visible=!1},w(v(Y)(`@MKT:取消`)),1),_(`button`,{class:`mkt-confirm`,onClick:de},w(v(Y)(`@MKT:安装`)),1)]),default:B(()=>[Z.item?(C(),h(`div`,dt,[_(`p`,ft,w(Z.item.name),1),(C(!0),h(k,null,g(Object.keys(Z.env),e=>(C(),h(`div`,{key:e,class:`mkt-field`},[_(`label`,null,w(e),1),A(_(`input`,{"onUpdate:modelValue":t=>Z.env[e]=t,type:`text`,autocomplete:`off`,placeholder:v(Y)(`@MKT:环境变量值`),spellcheck:`false`},null,8,pt),[[P,Z.env[e]]])]))),128)),Z.item.args?.length?(C(),h(`div`,mt,[_(`label`,null,w(v(Y)(`@MKT:启动参数`)),1),A(_(`input`,{"onUpdate:modelValue":o[3]||=e=>Z.args=e,type:`text`,autocomplete:`off`,spellcheck:`false`},null,512),[[P,Z.args]]),_(`p`,ht,w(v(Y)(`@MKT:参数提示`)),1)])):n(``,!0)])):n(``,!0)]),_:1},8,[`modelValue`,`title`])])}}}),[[`__scopeId`,`data-v-536d7952`]]);async function Q(e,t){let n=await fetch(e,{headers:{"Content-Type":`application/json`},...t}),r={};try{r=await n.json()}catch{}if(!n.ok||r.success===!1)throw Error(r.error||`请求失败 (${n.status})`);return r}async function _t(){let e=await Q(`/api/schedules`);return Array.isArray(e.tasks)?e.tasks:[]}async function vt(e){return(await Q(`/api/schedules`,{method:`POST`,body:JSON.stringify(e)})).task}async function yt(e,t){return(await Q(`/api/schedules/${encodeURIComponent(e)}`,{method:`PUT`,body:JSON.stringify(t)})).task}async function bt(e){await Q(`/api/schedules/${encodeURIComponent(e)}`,{method:`DELETE`})}async function xt(e){await Q(`/api/schedules/${encodeURIComponent(e)}/run`,{method:`POST`})}async function St(e){await Q(`/api/schedules/${encodeURIComponent(e)}/stop`,{method:`POST`})}function Ct(e){if(typeof EventSource>`u`)return()=>{};let t=new EventSource(`/api/schedules/events`);return t.onmessage=t=>{try{e(JSON.parse(t.data))}catch{}},()=>t.close()}var wt=e=>/^\d+$/.test(e)?Number(e):null;function Tt(e){let t=String(e||``).trim(),n=t.split(/\s+/);if(n.length!==5)return{kind:`custom`,raw:t};let[r,i,a,o,s]=n,c=wt(r),l=wt(i);if(t===`* * * * *`)return{kind:`every-minute`,raw:t};let u=r.match(/^\*\/(\d+)$/);if(u&&i===`*`&&a===`*`&&o===`*`&&s===`*`)return{kind:`every-n-minutes`,n:Number(u[1]),raw:t};if(c!==null&&i===`*`&&a===`*`&&o===`*`&&s===`*`)return{kind:`hourly`,minute:c,raw:t};if(c!==null&&l!==null&&a===`*`&&o===`*`&&s===`*`)return{kind:`daily`,hour:l,minute:c,raw:t};let d=wt(s);if(c!==null&&l!==null&&a===`*`&&o===`*`&&d!==null)return{kind:`weekly`,weekday:d%7,hour:l,minute:c,raw:t};let f=wt(a);return c!==null&&l!==null&&f!==null&&o===`*`&&s===`*`?{kind:`monthly`,day:f,hour:l,minute:c,raw:t}:{kind:`custom`,raw:t}}var $=e=>String(e).padStart(2,`0`),Et=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime();function Dt(e,t=new Date){if(!e)return{kind:`none`};let n=new Date(e);if(Number.isNaN(n.getTime()))return{kind:`none`};let r=`${$(n.getHours())}:${$(n.getMinutes())}`,i=Math.round((Et(n)-Et(t))/864e5);return i<0?{kind:`date`,date:`${n.getMonth()+1}-${$(n.getDate())}`,time:r}:i===0?{kind:`today`,time:r}:i===1?{kind:`tomorrow`,time:r}:i<7?{kind:`weekday`,weekday:n.getDay(),time:r}:{kind:`date`,date:`${n.getMonth()+1}-${$(n.getDate())}`,time:r}}function Ot(e){switch(e){case`ok`:return`ok`;case`error`:case`timed-out`:return`error`;case`skipped-busy`:case`missed`:case`cancelled`:return`skipped`;default:return`pending`}}function kt(e){let t=Number(e);if(!Number.isFinite(t)||t<0)return``;if(t<1e3)return`<1s`;let n=Math.round(t/1e3);if(n<60)return`${n}s`;let r=Math.floor(n/60);return r<60?`${r}m${$(n%60)}s`:`${Math.floor(r/60)}h${$(r%60)}m`}function At(e){let t=Math.min(59,Math.max(0,Math.floor(e.minute))),n=Math.min(23,Math.max(0,Math.floor(e.hour))),r=(Math.floor(e.weekday)%7+7)%7;switch(e.freq){case`minutes`:return`*/${Math.min(59,Math.max(1,Math.floor(e.everyMinutes??30)))} * * * *`;case`hourly`:return`${t} * * * *`;case`daily`:return`${t} ${n} * * *`;case`weekly`:return`${t} ${n} * * ${r}`;case`custom`:return String(e.custom||``).trim()}}K(),m(),N(),L();var jt={class:`schedule-panel`},Mt={class:`schedule-toolbar`},Nt={class:`schedule-summary`},Pt={key:0,class:`schedule-error`},Ft={key:1,class:`schedule-loading`},It={key:2,class:`schedule-empty`},Lt={class:`schedule-empty-title`},Rt={class:`schedule-empty-desc`},zt={key:3,class:`schedule-list`},Bt={class:`schedule-card-body`},Vt={class:`schedule-card-head`},Ht={class:`schedule-name`},Ut={key:0,class:`schedule-running`},Wt=[`aria-checked`,`aria-label`,`onClick`],Gt={class:`schedule-card-sub`},Kt={class:`schedule-desc`},qt=[`onClick`],Jt={class:`schedule-card-side`},Yt={class:`schedule-actions`},Xt=[`disabled`,`onClick`],Zt=[`disabled`,`onClick`],Qt=[`onClick`],$t=[`onClick`],en={class:`sch-form`},tn={class:`sch-field`},nn={class:`sch-field-label`},rn=[`placeholder`],an={class:`sch-field`},on={class:`sch-field-label`},sn={class:`sch-freq-row`},cn=[`value`],ln={class:`sch-inline-label`},un=[`value`],dn={class:`sch-inline-label`},fn=[`value`],pn=[`value`],mn=[`value`],hn={class:`sch-inline-label`},gn=[`value`],_n={class:`sch-inline-label`},vn=[`placeholder`],yn={class:`sch-hint`},bn={class:`sch-field`},xn={class:`sch-field-label`},Sn=[`placeholder`],Cn={class:`sch-field`},wn={class:`sch-field-label`},Tn=[`placeholder`],En={class:`sch-field`},Dn={class:`sch-field-label`},On={class:`sch-radio-row`},kn={class:`sch-radio`},An={class:`sch-radio`},jn={class:`sch-radio`},Mn={key:0,class:`sch-form-error`},Nn={class:`sch-form-footer`},Pn=[`disabled`],Fn={class:`sch-confirm-text`},In={class:`sch-form-footer`},Ln=X(i({__name:`SchedulePanel`,emits:[`open-session`],setup(e,{emit:t}){let r=t,i=oe(),a=G([]),s=G(!0),c=G(``),d=G({}),f=null,m=null;async function y(){try{a.value=await _t(),c.value=``}catch(e){c.value=e?.message||String(e)}finally{s.value=!1}}function b(){m===null&&(m=window.setTimeout(()=>{m=null,y()},150))}o(async()=>{await y(),f=Ct(e=>{[`tasks_changed`,`task_started`,`task_finished`,`hello`].includes(e.type)&&b()})}),l(()=>{f?.(),m!==null&&window.clearTimeout(m)});let ee=W(()=>{let e=a.value.filter(e=>e.enabled).length,t=a.value.length-e;return a.value.length?Y(`@SCHED:{on} 个启用 · {off} 个停用`,{on:e,off:t}):``}),x=[`@SCHED:周日`,`@SCHED:周一`,`@SCHED:周二`,`@SCHED:周三`,`@SCHED:周四`,`@SCHED:周五`,`@SCHED:周六`];function S(e){let t=Tt(e.schedule);switch(t.kind){case`every-minute`:return Y(`@SCHED:每分钟`);case`every-n-minutes`:return Y(`@SCHED:每 {n} 分钟`,{n:t.n});case`hourly`:return Y(`@SCHED:每小时第 {minute} 分钟`,{minute:t.minute});case`daily`:return Y(`@SCHED:每天 {time}`,{time:`${String(t.hour).padStart(2,`0`)}:${String(t.minute).padStart(2,`0`)}`});case`weekly`:return Y(`@SCHED:每周 {weekday} {time}`,{weekday:Y(x[t.weekday]),time:`${String(t.hour).padStart(2,`0`)}:${String(t.minute).padStart(2,`0`)}`});case`monthly`:return Y(`@SCHED:每月 {day} 日 {time}`,{day:t.day,time:`${String(t.hour).padStart(2,`0`)}:${String(t.minute).padStart(2,`0`)}`});default:return t.raw}}function T(e){if(!e.enabled)return Y(`@SCHED:已停用`);if(e.running)return Y(`@SCHED:运行中...`);let t=Dt(e.nextRunAt);switch(t.kind){case`none`:return``;case`today`:return Y(`@SCHED:下次 今天 {time}`,{time:t.time});case`tomorrow`:return Y(`@SCHED:下次 明天 {time}`,{time:t.time});case`weekday`:return Y(`@SCHED:下次 {weekday} {time}`,{weekday:Y(x[t.weekday]),time:t.time});case`date`:return Y(`@SCHED:下次 {date} {time}`,{date:t.date,time:t.time})}}function E(e){let t=e.lastRun;if(!t)return Y(`@SCHED:还没执行过`);switch(t.status){case`ok`:return Y(`@SCHED:成功`);case`error`:return Y(`@SCHED:失败`);case`timed-out`:return Y(`@SCHED:超时中止`);case`skipped-busy`:return Y(`@SCHED:已跳过(会话忙)`);case`missed`:return Y(`@SCHED:已错过(未运行)`);case`cancelled`:return Y(`@SCHED:已停止`);default:return t.status}}function D(e){let t=e.lastRun;if(!t)return Y(`@SCHED:还没执行过`);let n=kt(t.durationMs),r=Y(`@SCHED:上次 {status}`,{status:E(e)});return n?`${r} · ${n}`:r}function O(e){return e.lastRun?`is-${Ot(e.lastRun.status)}`:`is-muted`}async function j(e,t){if(!d.value[e.id]){d.value={...d.value,[e.id]:!0};try{await t(),await y()}catch(e){I.error(e?.message||String(e))}finally{let t={...d.value};delete t[e.id],d.value=t}}}function N(e){return j(e,()=>yt(e.id,{enabled:!e.enabled}))}function te(e){return j(e,()=>xt(e.id))}function ne(e){return j(e,()=>St(e.id))}let L=G(!1),re=G(null);function ie(e){re.value=e,L.value=!0}async function ae(){let e=re.value;if(e)try{await bt(e.id),L.value=!1,await y()}catch(e){I.error(e?.message||String(e))}}let z=G(!1),V=G(``),H=G(``),U=G(!1),K=G({name:``,freq:`daily`,everyMinutes:30,minute:0,hour:9,weekday:1,custom:``,cwd:``,prompt:``,onMissed:`run`,enabled:!0}),q=W(()=>[{value:`minutes`,label:Y(`@SCHED:每 N 分钟`)},{value:`hourly`,label:Y(`@SCHED:每小时`)},{value:`daily`,label:Y(`@SCHED:每天`)},{value:`weekly`,label:Y(`@SCHED:每周`)},{value:`custom`,label:Y(`@SCHED:自定义 cron`)}]),J=W(()=>At({freq:K.value.freq,everyMinutes:K.value.everyMinutes,minute:K.value.minute,hour:K.value.hour,weekday:K.value.weekday,custom:K.value.custom}));function X(){K.value={name:``,freq:`daily`,everyMinutes:30,minute:0,hour:9,weekday:1,custom:``,cwd:i.currentDirectory||``,prompt:``,onMissed:`run`,enabled:!0},H.value=``}function ce(){V.value=``,X(),z.value=!0}function Z(e){V.value=e.id;let t=Tt(e.schedule),n={name:e.name,freq:`custom`,everyMinutes:30,minute:0,hour:9,weekday:1,custom:e.schedule,cwd:e.cwd,prompt:e.prompt,onMissed:e.onMissed===`skip`?`skip`:`run`,enabled:e.enabled};switch(t.kind){case`every-n-minutes`:n.freq=`minutes`,n.everyMinutes=t.n;break;case`hourly`:n.freq=`hourly`,n.minute=t.minute;break;case`daily`:n.freq=`daily`,n.minute=t.minute,n.hour=t.hour;break;case`weekly`:n.freq=`weekly`,n.minute=t.minute,n.hour=t.hour,n.weekday=t.weekday;break;default:n.freq=`custom`}K.value=n,H.value=``,z.value=!0}async function le(){let e=K.value;if(!e.name.trim()){H.value=Y(`@SCHED:任务名不能为空`);return}if(!e.prompt.trim()){H.value=Y(`@SCHED:提示词不能为空`);return}let t=J.value;if(!t){H.value=Y(`@SCHED:cron 表达式不能为空`);return}let n={name:e.name.trim(),schedule:t,cwd:e.cwd.trim(),prompt:e.prompt.trim(),enabled:e.enabled,onMissed:e.onMissed};U.value=!0;try{V.value?await yt(V.value,n):await vt(n),z.value=!1,await y()}catch(e){H.value=e?.message||String(e)}finally{U.value=!1}}return(e,t)=>(C(),h(`div`,jt,[_(`div`,Mt,[_(`span`,Nt,w(ee.value),1),_(`button`,{type:`button`,class:`sch-btn sch-btn-primary`,onClick:ce},w(v(Y)(`@SCHED:新建任务`)),1)]),c.value?(C(),h(`div`,Pt,w(v(Y)(`@SCHED:操作失败:{error}`,{error:c.value})),1)):n(``,!0),s.value?(C(),h(`div`,Ft,w(v(Y)(`@SCHED:加载中...`)),1)):a.value.length?(C(),h(`div`,zt,[(C(!0),h(k,null,g(a.value,e=>(C(),h(`article`,{key:e.id,class:u([`schedule-card`,{"is-disabled":!e.enabled,"is-running":!!e.running}])},[_(`div`,Bt,[_(`div`,Vt,[_(`span`,Ht,w(e.name),1),e.running?(C(),h(`span`,Ut,w(v(Y)(`@SCHED:运行中`)),1)):n(``,!0),_(`button`,{type:`button`,class:u([`sch-switch`,{on:e.enabled}]),role:`switch`,"aria-checked":e.enabled,"aria-label":e.enabled?v(Y)(`@SCHED:停用`):v(Y)(`@SCHED:启用`),onClick:t=>N(e)},[...t[17]||=[_(`span`,{class:`sch-switch-knob`},null,-1)]],10,Wt)]),_(`div`,Gt,[_(`span`,Kt,w(S(e)),1),t[18]||=_(`span`,{class:`schedule-sep`},`·`,-1),_(`span`,{class:u([`schedule-last`,O(e)])},w(D(e)),3),e.sessionId?(C(),h(`button`,{key:0,type:`button`,class:`sch-link`,onClick:t=>r(`open-session`,e.sessionId)},w(v(Y)(`@SCHED:查看会话`)),9,qt)):n(``,!0)])]),_(`div`,Jt,[_(`div`,{class:u([`schedule-next`,{"is-muted":!e.enabled}])},w(T(e)),3),_(`div`,Yt,[e.running?(C(),h(`button`,{key:0,type:`button`,class:`sch-btn`,disabled:!!d.value[e.id],onClick:t=>ne(e)},w(v(Y)(`@SCHED:停止`)),9,Xt)):(C(),h(`button`,{key:1,type:`button`,class:`sch-btn`,disabled:!!d.value[e.id],onClick:t=>te(e)},w(v(Y)(`@SCHED:运行`)),9,Zt)),_(`button`,{type:`button`,class:`sch-btn`,onClick:t=>Z(e)},w(v(Y)(`@SCHED:编辑`)),9,Qt),_(`button`,{type:`button`,class:`sch-btn sch-btn-danger`,onClick:t=>ie(e)},w(v(Y)(`@SCHED:删除`)),9,$t)])])],2))),128))])):(C(),h(`div`,It,[_(`p`,Lt,w(v(Y)(`@SCHED:还没有定时任务`)),1),_(`p`,Rt,w(v(Y)(`@SCHED:让 g ai 在指定时间自动做事:定时拉代码、定时巡检、定时汇总。也可以在对话里直接说「每天 9 点帮我…」,让 g ai 来创建。`)),1)])),p(se,{modelValue:z.value,"onUpdate:modelValue":t[14]||=e=>z.value=e,title:V.value?v(Y)(`@SCHED:编辑任务`):v(Y)(`@SCHED:新建任务`),"close-on-click-modal":!1,"append-to-body":!0,size:`medium`,width:`560px`,"z-index":3e6,"custom-class":`schedule-dialog`},{default:B(()=>[_(`div`,en,[_(`label`,tn,[_(`span`,nn,w(v(Y)(`@SCHED:任务名`)),1),A(_(`input`,{"onUpdate:modelValue":t[0]||=e=>K.value.name=e,class:`sch-input`,type:`text`,placeholder:v(Y)(`@SCHED:如:每日拉代码`)},null,8,rn),[[P,K.value.name]])]),_(`div`,an,[_(`span`,on,w(v(Y)(`@SCHED:执行计划`)),1),_(`div`,sn,[A(_(`select`,{"onUpdate:modelValue":t[1]||=e=>K.value.freq=e,class:`sch-input sch-select`},[(C(!0),h(k,null,g(q.value,e=>(C(),h(`option`,{key:e.value,value:e.value},w(e.label),9,cn))),128))],512),[[F,K.value.freq]]),K.value.freq===`minutes`?(C(),h(k,{key:0},[_(`span`,ln,w(v(Y)(`@SCHED:每`)),1),A(_(`select`,{"onUpdate:modelValue":t[2]||=e=>K.value.everyMinutes=e,class:`sch-input sch-select sch-select-sm`},[(C(),h(k,null,g([5,10,15,20,30,60],e=>_(`option`,{key:e,value:e},w(e),9,un)),64))],512),[[F,K.value.everyMinutes,void 0,{number:!0}]]),_(`span`,dn,w(v(Y)(`@SCHED:分钟`)),1)],64)):K.value.freq===`daily`||K.value.freq===`weekly`?(C(),h(k,{key:1},[K.value.freq===`weekly`?A((C(),h(`select`,{key:0,"onUpdate:modelValue":t[3]||=e=>K.value.weekday=e,class:`sch-input sch-select sch-select-sm`},[(C(),h(k,null,g(x,(e,t)=>_(`option`,{key:t,value:t},w(v(Y)(e)),9,fn)),64))],512)),[[F,K.value.weekday,void 0,{number:!0}]]):n(``,!0),A(_(`select`,{"onUpdate:modelValue":t[4]||=e=>K.value.hour=e,class:`sch-input sch-select sch-select-sm`},[(C(),h(k,null,g(24,e=>_(`option`,{key:e-1,value:e-1},w(String(e-1).padStart(2,`0`)),9,pn)),64))],512),[[F,K.value.hour,void 0,{number:!0}]]),t[19]||=_(`span`,{class:`sch-inline-label`},`:`,-1),A(_(`select`,{"onUpdate:modelValue":t[5]||=e=>K.value.minute=e,class:`sch-input sch-select sch-select-sm`},[(C(),h(k,null,g(60,e=>_(`option`,{key:e-1,value:e-1},w(String(e-1).padStart(2,`0`)),9,mn)),64))],512),[[F,K.value.minute,void 0,{number:!0}]])],64)):K.value.freq===`hourly`?(C(),h(k,{key:2},[_(`span`,hn,w(v(Y)(`@SCHED:第`)),1),A(_(`select`,{"onUpdate:modelValue":t[6]||=e=>K.value.minute=e,class:`sch-input sch-select sch-select-sm`},[(C(),h(k,null,g(60,e=>_(`option`,{key:e-1,value:e-1},w(String(e-1).padStart(2,`0`)),9,gn)),64))],512),[[F,K.value.minute,void 0,{number:!0}]]),_(`span`,_n,w(v(Y)(`@SCHED:分钟`)),1)],64)):A((C(),h(`input`,{key:3,"onUpdate:modelValue":t[7]||=e=>K.value.custom=e,class:`sch-input sch-input-cron`,type:`text`,spellcheck:`false`,placeholder:v(Y)(`@SCHED:如:0 9 * * 1-5`)},null,8,vn)),[[P,K.value.custom]])]),_(`span`,yn,w(v(Y)(`@SCHED:cron:{cron}(分 时 日 月 周,本地时间)`,{cron:J.value||`—`})),1)]),_(`label`,bn,[_(`span`,xn,w(v(Y)(`@SCHED:项目目录`)),1),A(_(`input`,{"onUpdate:modelValue":t[8]||=e=>K.value.cwd=e,class:`sch-input`,type:`text`,spellcheck:`false`,placeholder:v(Y)(`@SCHED:任务在该目录下执行(默认当前项目)`)},null,8,Sn),[[P,K.value.cwd]])]),_(`label`,Cn,[_(`span`,wn,w(v(Y)(`@SCHED:提示词`)),1),A(_(`textarea`,{"onUpdate:modelValue":t[9]||=e=>K.value.prompt=e,class:`sch-input sch-textarea`,rows:`4`,placeholder:v(Y)(`@SCHED:到点后发给 g ai 的完整指令,例如:检查所有仓库远端更新,有变更就 pull;写成一次自足的请求(未来那一轮没有现在的上下文)`)},null,8,Tn),[[P,K.value.prompt]])]),_(`div`,En,[_(`span`,Dn,w(v(Y)(`@SCHED:错过补偿`)),1),_(`div`,On,[_(`label`,kn,[A(_(`input`,{"onUpdate:modelValue":t[10]||=e=>K.value.onMissed=e,type:`radio`,value:`run`},null,512),[[R,K.value.onMissed]]),_(`span`,null,w(v(Y)(`@SCHED:补跑一次(g ui 重新运行后)`)),1)]),_(`label`,An,[A(_(`input`,{"onUpdate:modelValue":t[11]||=e=>K.value.onMissed=e,type:`radio`,value:`skip`},null,512),[[R,K.value.onMissed]]),_(`span`,null,w(v(Y)(`@SCHED:跳过`)),1)]),_(`label`,jn,[A(_(`input`,{"onUpdate:modelValue":t[12]||=e=>K.value.enabled=e,type:`checkbox`},null,512),[[M,K.value.enabled]]),_(`span`,null,w(v(Y)(`@SCHED:创建后启用`)),1)])])]),H.value?(C(),h(`p`,Mn,w(H.value),1)):n(``,!0)]),_(`div`,Nn,[_(`button`,{type:`button`,class:`sch-btn`,onClick:t[13]||=e=>z.value=!1},w(v(Y)(`@SCHED:取消`)),1),_(`button`,{type:`button`,class:`sch-btn sch-btn-primary`,disabled:U.value,onClick:le},w(U.value?v(Y)(`@SCHED:保存中...`):v(Y)(`@SCHED:保存`)),9,Pn)])]),_:1},8,[`modelValue`,`title`]),p(se,{modelValue:L.value,"onUpdate:modelValue":t[16]||=e=>L.value=e,title:v(Y)(`@SCHED:删除任务`),"close-on-click-modal":!1,"append-to-body":!0,size:`small`,width:`400px`,"z-index":3e6,"custom-class":`schedule-dialog-confirm`},{default:B(()=>[_(`p`,Fn,w(v(Y)(`@SCHED:确定删除「{name}」吗?已产生的会话会保留,但任务不再执行。`,{name:re.value?.name||``})),1),_(`div`,In,[_(`button`,{type:`button`,class:`sch-btn`,onClick:t[15]||=e=>L.value=!1},w(v(Y)(`@SCHED:取消`)),1),_(`button`,{type:`button`,class:`sch-btn sch-btn-danger`,onClick:ae},w(v(Y)(`@SCHED:删除`)),1)])]),_:1},8,[`modelValue`,`title`])]))}}),[[`__scopeId`,`data-v-75be84e5`]]);K(),N(),m();var Rn={class:`agent-chat-area`},zn={class:`agent-tabs`,role:`tablist`},Bn=[`aria-selected`,`onClick`],Vn={class:`agent-tab-body`},Hn={key:0,class:`agent-chat-pane`},Un={key:0,class:`agent-list-page`},Wn={key:0,class:`agent-page-bar`},Gn=[`title`,`aria-label`],Kn={class:`agent-page-title`},qn={key:0,class:`chat-loading`},Jn=X(i({__name:`AgentView`,setup(t){let i=oe(),o=G(null),{narrow:c}=ye(o),l=G(`chat`),d=G(`chat`),f=W(()=>d.value===`mcp`?`mcp`:`skill`),m=W(()=>[{id:`chat`,label:Y(`@AGENT:对话`),icon:j},{id:`schedule`,label:Y(`@AGENT:定时任务`),icon:T},{id:`skill`,label:Y(`@AGENT:Skill 广场`),icon:y},{id:`mcp`,label:Y(`@AGENT:MCP 广场`),icon:V}]),{sessions:ee,sessionsLoading:x,currentSessionId:S,messages:E,isStreaming:D,sessionLoading:A,loadSessions:M,loadSession:N,deleteSession:P,renameSession:F,newSession:I,sendMessage:te,retryTurn:ne,pendingQuestion:L,answeringQuestion:re,answerQuestion:R,isSessionGenerating:ie,currentEngine:ae,pendingEngine:z,isEngineLocked:U,pickEngine:K,stop:X,inputContextUsage:se,queuedMessages:Se,queuePaused:Ce,removeQueuedMessage:we,flushQueued:Te}=ve(),Ee=W(()=>U.value?ae.value:z.value);function De(e){U.value||K(e)}let Oe=W(()=>{let e=i.theme;return e===`dark`||e===`auto`&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}),ke=W(()=>le(ee.value,ie)),Ae=Z(),je=W(()=>ke.value.find(e=>e.id===S.value)?.title||Y(`@AGENT:对话`)),Me={"--welcome-avatar":`url("${_e}")`},Ne=W(()=>ce(i.agentPresetPrompts));async function Pe(e){await te(e.text,e.files),await b(),ze()}async function Fe(e){await te(e.prompt),await b(),ze()}let Ie=pe(),Le=G(null),Re=ge();function ze(e=!0){Le.value?.scrollToBottom(e)}O(()=>E.value.length,()=>{b(()=>ze(!1))});function Be(e){N(e),l.value=`chat`}function Ve(e){e&&(d.value=`chat`,Be(e))}function He(){I(),l.value=`chat`}let Ue=G(280),We=G(!1);function Ge(e){We.value=!0;let t=e.clientX,n=Ue.value,r=e=>{let r=e.clientX-t,i=Math.max(200,Math.min(500,n+r));Ue.value=i},i=()=>{We.value=!1,document.removeEventListener(`mousemove`,r),document.removeEventListener(`mouseup`,i)};document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)}return O(c,e=>{e||(l.value=`chat`)}),O(()=>[i.currentDirectory,D.value],async([e,t],n)=>{let r=!n||e!==n[0],i=!!n&&n[1]===!0&&!t;(r||i)&&await M(),S.value&&!D.value&&!ee.value.some(e=>e.sessionId===S.value)&&I()},{immediate:!0}),(t,i)=>(C(),h(`div`,{ref_key:`rootRef`,ref:o,class:`agent-view`},[d.value===`chat`&&!v(c)?(C(),h(k,{key:0},[_(`aside`,{class:`agent-sidebar`,style:s({width:Ue.value+`px`})},[p(v(J),{class:`agent-conversations`,items:ke.value,"active-id":v(S),loading:v(x),labels:v(Ae),onSelect:Be,onNew:He,onRename:v(F),onDelete:v(P)},null,8,[`items`,`active-id`,`loading`,`labels`,`onRename`,`onDelete`])],4),_(`div`,{class:u([`sidebar-resizer`,{active:We.value}]),onMousedown:Ge},null,34)],64)):n(``,!0),_(`main`,Rn,[_(`nav`,zn,[(C(!0),h(k,null,g(m.value,e=>(C(),h(`button`,{key:e.id,type:`button`,class:u([`agent-tab`,{active:d.value===e.id}]),role:`tab`,"aria-selected":d.value===e.id,onClick:t=>d.value=e.id},[p(v(a),null,{default:B(()=>[(C(),r(H(e.icon)))]),_:2},1024),_(`span`,null,w(e.label),1)],10,Bn))),128)),d.value===`chat`?(C(),r(be,{key:0,class:`agent-engine`,engine:Ee.value,locked:v(U),onSelect:De},null,8,[`engine`,`locked`])):n(``,!0),d.value===`chat`?(C(),r(xe,{key:1,class:`agent-copy`,messages:v(E),title:je.value,engine:v(me)(Ee.value)},null,8,[`messages`,`title`,`engine`])):n(``,!0)]),_(`div`,Vn,[d.value===`chat`?(C(),h(`div`,Hn,[v(c)&&l.value===`list`?(C(),h(`div`,Un,[p(v(J),{class:`agent-conversations`,items:ke.value,"active-id":v(S),loading:v(x),labels:v(Ae),onSelect:Be,onNew:He,onRename:v(F),onDelete:v(P)},null,8,[`items`,`active-id`,`loading`,`labels`,`onRename`,`onDelete`])])):(C(),h(k,{key:1},[v(c)?(C(),h(`div`,Wn,[_(`button`,{type:`button`,class:`agent-page-back`,title:v(Y)(`@AGENT:返回会话列表`),"aria-label":v(Y)(`@AGENT:返回会话列表`),onClick:i[0]||=e=>l.value=`list`},[...i[1]||=[_(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[_(`line`,{x1:`19`,y1:`12`,x2:`5`,y2:`12`}),_(`polyline`,{points:`12 19 5 12 12 5`})],-1)]],8,Gn),_(`span`,Kn,w(je.value),1)])):n(``,!0),_(`div`,{class:`agent-chat-host`,style:Me},[v(A)?(C(),h(`div`,qn,[p(v(a),{class:`is-loading`,size:32},{default:B(()=>[p(v(e))]),_:1}),_(`span`,null,w(v(Y)(`@AGENT:加载会话中...`)),1)])):(C(),r(v(q),{key:1,ref_key:`chatContainerRef`,ref:Le,messages:v(E),"preset-questions":Ne.value,"welcome-title":v(Y)(`@AGENT:智能体助手`),"welcome-description":v(Y)(`@AGENT:我可以帮你阅读代码、执行命令、修改文件。选择下方话题或直接输入你的问题。`),"assistant-name":v(fe),"assistant-avatar":v(_e),theme:Oe.value,generating:v(D),"allow-queue":!0,queued:v(Se),"queue-paused":v(Ce),"queue-labels":v(Re),"upload-config":{accept:v(de)},"context-usage":v(se),placeholder:v(D)?v(Y)(`@AGENT:生成中,发送后会排队,等本轮跑完自动接上…`):v(Y)(`@AGENT:输入消息,Enter 发送`),question:v(L),"question-submitting":v(re),"question-labels":v(Ie),"plan-config":{labels:{title:v(Y)(`@AGENT:计划`),raw:v(Y)(`@AGENT:原始参数`)}},"message-rail-config":v(ue),"message-meta-config":v(he),onSend:Pe,onSelect:Fe,onStop:v(X),onUnqueue:v(we),onFlushQueued:v(Te),onAnswer:v(R),onRetry:v(ne)},null,8,[`messages`,`preset-questions`,`welcome-title`,`welcome-description`,`assistant-name`,`assistant-avatar`,`theme`,`generating`,`queued`,`queue-paused`,`queue-labels`,`upload-config`,`context-usage`,`placeholder`,`question`,`question-submitting`,`question-labels`,`plan-config`,`message-rail-config`,`message-meta-config`,`onStop`,`onUnqueue`,`onFlushQueued`,`onAnswer`,`onRetry`]))])],64))])):d.value===`schedule`?(C(),r(Ln,{key:1,onOpenSession:Ve})):(C(),r(gt,{key:2,type:f.value},null,8,[`type`]))])])],512))}}),[[`__scopeId`,`data-v-853bde85`]]);export{Jn as default};
|
|
1
|
+
import"./rolldown-runtime-C0FnF6B9.js";import{At as e,Ct as t,Dn as n,En as r,Fn as i,J as a,Jn as o,Jr as s,Jt as c,Kn as l,Kr as u,M as d,Mn as f,Nn as p,Nr as m,On as h,Qn as g,Tn as _,Tr as v,Tt as y,Un as b,Vt as ee,W as x,Wt as S,Xn as C,Zr as w,Zt as T,_r as E,a as D,ar as O,bn as k,cr as A,et as j,fn as M,fr as N,gn as P,hn as F,i as I,j as te,kt as ne,ln as L,lt as re,mn as R,mt as ie,r as ae,rn as z,sr as B,st as V,tr as H,tt as U,wn as W,yr as G,zn as K}from"./element-plus-CNJIhPSG.js";import{i as q,o as J}from"./vendor-Dtqsc1If.js";import{n as Y,t as X}from"./_plugin-vue_export-helper-BO6qa5C3.js";import{t as oe}from"./configStore-D_CFFOs9.js";import{t as se}from"./CommonDialog-9td95UkD.js";import{_ as ce}from"./index-BsHc5Rxd.js";import{a as Z,c as le,i as ue,l as de,n as fe,o as pe,p as me,r as he,s as ge,t as _e,u as ve}from"./agentConversations-mDAcOgXq.js";import{c as ye,s as be,t as xe}from"./CopySessionButton-De46dtzF.js";K(),N(),L(),m();var Se={class:`marketplace-panel`},Ce={class:`mp-toolbar`},we={class:`mp-search`},Te=[`placeholder`],Ee={class:`mp-toolbar-sub`},De={class:`mp-target-hint`},Oe={class:`mp-source-filter`},ke=[`onClick`],Ae={class:`mp-body`},je={class:`mp-group-header`},Me={class:`mp-group-title`},Ne={key:0,class:`mp-group-count`},Pe={key:1,class:`mp-group-error`},Fe=[`href`,`title`],Ie={key:0,class:`mp-grid`},Le={class:`mp-card-head`},Re=[`title`],ze={key:0,class:`mp-card-metric`},Be=[`title`],Ve={class:`mp-card-meta`},He=[`title`],Ue=[`title`],We={key:2,class:`mp-tag remote`},Ge={class:`mp-card-foot`},Ke=[`href`],qe={key:1,class:`mp-installed-chip`},Je=[`disabled`,`onClick`],Ye={key:3,class:`mp-not-installable`},Xe={key:1,class:`mp-empty`},Ze={key:0,class:`mp-group installed`},Qe={class:`mp-group-header`},$e={class:`mp-group-title`},et={class:`mp-group-count`},tt={key:0,class:`mp-installed-block`},nt={class:`mp-installed-target`},rt={class:`mp-installed-list`},it=[`title`],at=[`title`],ot={key:1,class:`mp-meta-pkg`},st={key:2,class:`mp-tag warn`},ct=[`disabled`,`title`,`onClick`],lt=[`disabled`,`onClick`],ut={key:1,class:`mp-empty all`},dt={key:0,class:`mkt-form`},ft={class:`mkt-form-name`},pt=[`onUpdate:modelValue`,`placeholder`],mt={key:0,class:`mkt-field`},ht={class:`mkt-hint`},gt=X(i({__name:`MarketplacePanel`,props:{type:{}},setup(e){let i=e,o=oe(),s=G([]),l=G([]),m=G(!1),y=G(``),b=G(``),T=G([]),j=G(`project`),M=G(new Set),N=G(new Set),F=G(new Set),L=W(()=>o.currentDirectory||``),R=null;async function V(){if(!m.value){m.value=!0;try{let e=new URLSearchParams({type:i.type,cwd:L.value});b.value&&e.set(`q`,b.value),T.value.length&&e.set(`sources`,T.value.join(`,`));let t=await(await fetch(`/api/agent/marketplace/catalog?${e}`)).json();t?.success?(s.value=t.groups||[],l.value=t.installed||[]):I.error(t?.error||Y(`@MKT:加载失败`))}catch{I.error(Y(`@MKT:加载失败`))}finally{m.value=!1}}}O(y,e=>{R&&clearTimeout(R),R=setTimeout(()=>{b.value=e.trim(),V()},400)}),O(T,()=>V()),O(()=>i.type,()=>{T.value=[],b.value=``,y.value=``,V()}),O(L,()=>V()),V();let H=W(()=>{let e=L.value?L.value.split(/[\\/]/).filter(Boolean).pop():``;return j.value===`project`?e||Y(`@MKT:当前项目`):Y(`@MKT:g ai 智能体`)});function K(e){return e.stars?`${q(e.stars)} ★`:e.downloads?`${q(e.downloads)} ${Y(`@MKT:周下载`)}`:e.uses?`${q(e.uses)} ${Y(`@MKT:次使用`)}`:``}function q(e){return e>=1e3?`${(e/1e3).toFixed(e>=1e4?0:1)}k`:String(e)}function J(e){return`${e.id}`}function X(e){return M.value.has(J(e))}let ce=W(()=>{let e={project:[],global:[]};for(let t of l.value)(e[t.target]||=[]).push(t);return e}),Z=E({visible:!1,item:null,env:{},args:``});function le(e){return i.type===`mcp`&&(!!e.envKeys?.length||!!e.args?.length)}function ue(e){Z.item=e,Z.env=Object.fromEntries((e.envKeys||[]).map(e=>[e,``])),Z.args=(e.args||[]).join(` `),Z.visible=!0}function de(){let e=Z.item;if(Z.visible=!1,!e)return;let t=Object.fromEntries(Object.entries(Z.env).filter(([,e])=>e.trim()!==``)),n=Z.args.trim()?Z.args.trim().match(/(?:[^\s"]+|"[^"]*")+/g)?.map(e=>e.replace(/^"|"$/g,``))??void 0:void 0;pe(e,{env:t,...n?{args:n}:{}})}async function fe(e){if(!e.installed||await me(e)){if(le(e)){ue(e);return}await pe(e,{})}}async function pe(e,t){let n=J(e);M.value.add(n);try{let n=await fetch(`/api/agent/marketplace/install`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({type:i.type,target:j.value,cwd:L.value,item:{...e,...t}})}),r=await n.json().catch(()=>null);if(!n.ok||!r?.success){I.error(r?.error||Y(`@MKT:安装失败`));return}r.item?.warning&&I.warning(r.item.warning),r.item?.envKeys?.length?I.warning(`${Y(`@MKT:还缺环境变量`)}: ${r.item.envKeys.join(`, `)}`):I.success(Y(`@MKT:安装成功`)),await V()}catch{I.error(Y(`@MKT:安装失败`))}finally{M.value.delete(n)}}async function me(e){try{return await ae.confirm(`${e.name} ${Y(`@MKT:已安装,要重新安装吗?`)}`,Y(`@MKT:重新安装`),{confirmButtonText:Y(`@MKT:重装`),cancelButtonText:Y(`@MKT:取消`),type:`warning`}),!0}catch{return!1}}async function he(e){let t=`${e.target}:${e.id}`;F.value.add(t);try{let t=await fetch(`/api/agent/marketplace/reveal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({type:i.type,target:e.target,cwd:L.value,id:e.id})}),n=await t.json().catch(()=>null);(!t.ok||!n?.success)&&I.error(n?.error||Y(`@MKT:打开失败`))}catch{I.error(Y(`@MKT:打开失败`))}finally{F.value.delete(t)}}async function ge(e){try{await ae.confirm(`${Y(`@MKT:确定卸载`)} ${e.name}?`,Y(`@MKT:卸载`),{confirmButtonText:Y(`@MKT:卸载`),cancelButtonText:Y(`@MKT:取消`),type:`warning`})}catch{return}let t=`${e.target}:${e.id}`;N.value.add(t);try{let t=new URLSearchParams({target:e.target,cwd:L.value}),n=await fetch(`/api/agent/marketplace/item/${i.type}/${encodeURIComponent(e.id)}?${t}`,{method:`DELETE`}),r=await n.json().catch(()=>null);if(!n.ok||!r?.success){I.error(r?.error||Y(`@MKT:卸载失败`));return}I.success(Y(`@MKT:已卸载`)),await V()}catch{I.error(Y(`@MKT:卸载失败`))}finally{N.value.delete(t)}}return(i,o)=>{let b=a,E=te,O=d,M=x,I=D;return C(),h(`div`,Se,[_(`div`,Ce,[_(`div`,we,[p(b,{class:`mp-search-icon`},{default:B(()=>[p(v(S))]),_:1}),A(_(`input`,{"onUpdate:modelValue":o[0]||=e=>y.value=e,class:`mp-search-input`,type:`text`,placeholder:e.type===`skill`?v(Y)(`@MKT:搜索 Skill...`):v(Y)(`@MKT:搜索 MCP 服务...`)},null,8,Te),[[P,y.value]])]),p(O,{modelValue:j.value,"onUpdate:modelValue":o[1]||=e=>j.value=e,size:`small`,class:`mp-target`},{default:B(()=>[p(E,{value:`project`},{default:B(()=>[f(w(v(Y)(`@MKT:当前项目`)),1)]),_:1}),p(E,{value:`global`},{default:B(()=>[f(w(v(Y)(`@MKT:g ai 智能体`)),1)]),_:1})]),_:1},8,[`modelValue`]),p(M,{content:v(Y)(`@MKT:刷新`),placement:`top`,"show-after":300},{default:B(()=>[_(`button`,{class:u([`mp-refresh`,{spinning:m.value}]),onClick:V},[p(b,null,{default:B(()=>[p(v(ee))]),_:1})],2)]),_:1},8,[`content`])]),_(`div`,Ee,[_(`span`,De,[f(w(v(Y)(`@MKT:安装到`))+` `,1),_(`b`,null,w(H.value),1)]),_(`div`,Oe,[(C(!0),h(k,null,g(s.value,e=>(C(),h(`button`,{key:e.id,class:u([`mp-chip`,{active:T.value.includes(e.id)}]),onClick:()=>{let t=T.value.indexOf(e.id);t>=0?T.value.splice(t,1):T.value.push(e.id)}},w(e.label),11,ke))),128)),T.value.length?(C(),h(`button`,{key:0,class:`mp-chip clear`,onClick:o[2]||=e=>T.value=[]},w(v(Y)(`@MKT:全部来源`)),1)):n(``,!0)])]),A((C(),h(`div`,Ae,[(C(!0),h(k,null,g(s.value,e=>(C(),h(`section`,{key:e.id,class:`mp-group`},[_(`header`,je,[_(`h3`,Me,w(e.label),1),e.status===`ok`?(C(),h(`span`,Ne,w(e.items.length),1)):(C(),h(`span`,Pe,[p(b,null,{default:B(()=>[p(v(z))]),_:1}),f(` `+w(e.error||v(Y)(`@MKT:来源不可用`)),1)])),e.homepage?(C(),h(`a`,{key:2,class:`mp-group-link`,href:e.homepage,target:`_blank`,rel:`noopener noreferrer`,title:e.homepage},[p(b,null,{default:B(()=>[p(v(ne))]),_:1})],8,Fe)):n(``,!0)]),e.status===`ok`&&e.items.length?(C(),h(`div`,Ie,[(C(!0),h(k,null,g(e.items,e=>(C(),h(`article`,{key:J(e),class:`mp-card`},[_(`div`,Le,[_(`span`,{class:`mp-card-name`,title:e.name},w(e.name),9,Re),K(e)?(C(),h(`span`,ze,[p(b,null,{default:B(()=>[e.stars?(C(),r(v(c),{key:0})):(C(),r(v(ie),{key:1}))]),_:2},1024),f(` `+w(K(e)),1)])):n(``,!0)]),_(`p`,{class:`mp-card-desc`,title:e.description},w(e.description||v(Y)(`@MKT:暂无描述`)),9,Be),_(`div`,Ve,[e.package?(C(),h(`code`,{key:0,class:`mp-meta-pkg`,title:e.package},w(e.package),9,He)):e.repository?(C(),h(`span`,{key:1,class:`mp-meta-repo`,title:e.repository+(e.subpath?` · `+e.subpath:``)},[f(w(e.repository),1),e.subpath?(C(),h(k,{key:0},[f(` · `+w(e.subpath),1)],64)):n(``,!0)],8,Ue)):n(``,!0),e.transport===`remote`?(C(),h(`span`,We,w(v(Y)(`@MKT:远程服务`)),1)):n(``,!0),(C(!0),h(k,null,g((e.tags||[]).slice(0,2),e=>(C(),h(`span`,{key:e,class:`mp-tag`},w(e),1))),128))]),_(`div`,Ge,[e.upstream?(C(),h(`a`,{key:0,class:`mp-card-link`,href:e.upstream,target:`_blank`,rel:`noopener noreferrer`},w(v(Y)(`@MKT:查看来源`)),9,Ke)):n(``,!0),o[6]||=_(`span`,{class:`mp-foot-spacer`},null,-1),e.installed?(C(),h(`span`,qe,[p(b,null,{default:B(()=>[p(v(U))]),_:1}),f(w(v(Y)(`@MKT:已安装`)),1)])):e.installable===!1?(C(),h(`span`,Ye,w(v(Y)(`@MKT:暂不支持一键安装`)),1)):(C(),h(`button`,{key:2,class:`mp-install-btn`,disabled:X(e),onClick:t=>fe(e)},w(X(e)?v(Y)(`@MKT:安装中...`):v(Y)(`@MKT:安装`)),9,Je))])]))),128))])):e.status===`ok`?(C(),h(`div`,Xe,w(v(Y)(`@MKT:该来源暂无结果`)),1)):n(``,!0)]))),128)),l.value.length?(C(),h(`section`,Ze,[_(`header`,Qe,[_(`h3`,$e,w(v(Y)(`@MKT:已安装`)),1),_(`span`,et,w(l.value.length),1)]),(C(),h(k,null,g([`project`,`global`],e=>_(`div`,{key:e},[ce.value[e]?.length?(C(),h(`div`,tt,[_(`div`,nt,w(e===`project`?v(Y)(`@MKT:当前项目`):v(Y)(`@MKT:g ai 智能体`)),1),_(`div`,rt,[(C(!0),h(k,null,g(ce.value[e],r=>(C(),h(`div`,{key:e+r.id,class:`mp-installed-row`},[_(`span`,{class:`mp-installed-name`,title:r.name},w(r.name),9,it),r.id&&r.id!==r.name?(C(),h(`code`,{key:0,class:`mp-installed-id`,title:r.dir||r.file||r.id},w(r.id),9,at)):n(``,!0),r.package?(C(),h(`code`,ot,w(r.package),1)):n(``,!0),r.requiredEnv?.length?(C(),h(`span`,st,w(v(Y)(`@MKT:待配置`))+`: `+w(r.requiredEnv.join(`, `)),1)):n(``,!0),o[7]||=_(`span`,{class:`mp-foot-spacer`},null,-1),_(`button`,{class:`mp-reveal-btn`,disabled:F.value.has(e+r.id),title:r.dir||r.file||``,onClick:e=>he(r)},[p(b,null,{default:B(()=>[p(v(t))]),_:1}),f(` `+w(v(Y)(`@MKT:打开文件夹`)),1)],8,ct),_(`button`,{class:`mp-remove-btn`,disabled:N.value.has(e+r.id),onClick:e=>ge(r)},[p(b,null,{default:B(()=>[p(v(re))]),_:1}),f(` `+w(N.value.has(e+r.id)?v(Y)(`@MKT:卸载中...`):v(Y)(`@MKT:卸载`)),1)],8,lt)]))),128))])])):n(``,!0)])),64))])):n(``,!0),!m.value&&!s.value.length?(C(),h(`div`,ut,w(v(Y)(`@MKT:加载失败`)),1)):n(``,!0)])),[[I,m.value]]),p(se,{modelValue:Z.visible,"onUpdate:modelValue":o[5]||=e=>Z.visible=e,title:v(Y)(`@MKT:配置 MCP`),width:`460px`,type:`flex`,"close-on-click-modal":!1,"append-to-body":``},{footer:B(()=>[_(`button`,{class:`mkt-cancel`,onClick:o[4]||=e=>Z.visible=!1},w(v(Y)(`@MKT:取消`)),1),_(`button`,{class:`mkt-confirm`,onClick:de},w(v(Y)(`@MKT:安装`)),1)]),default:B(()=>[Z.item?(C(),h(`div`,dt,[_(`p`,ft,w(Z.item.name),1),(C(!0),h(k,null,g(Object.keys(Z.env),e=>(C(),h(`div`,{key:e,class:`mkt-field`},[_(`label`,null,w(e),1),A(_(`input`,{"onUpdate:modelValue":t=>Z.env[e]=t,type:`text`,autocomplete:`off`,placeholder:v(Y)(`@MKT:环境变量值`),spellcheck:`false`},null,8,pt),[[P,Z.env[e]]])]))),128)),Z.item.args?.length?(C(),h(`div`,mt,[_(`label`,null,w(v(Y)(`@MKT:启动参数`)),1),A(_(`input`,{"onUpdate:modelValue":o[3]||=e=>Z.args=e,type:`text`,autocomplete:`off`,spellcheck:`false`},null,512),[[P,Z.args]]),_(`p`,ht,w(v(Y)(`@MKT:参数提示`)),1)])):n(``,!0)])):n(``,!0)]),_:1},8,[`modelValue`,`title`])])}}}),[[`__scopeId`,`data-v-536d7952`]]);async function Q(e,t){let n=await fetch(e,{headers:{"Content-Type":`application/json`},...t}),r={};try{r=await n.json()}catch{}if(!n.ok||r.success===!1)throw Error(r.error||`请求失败 (${n.status})`);return r}async function _t(){let e=await Q(`/api/schedules`);return Array.isArray(e.tasks)?e.tasks:[]}async function vt(e){return(await Q(`/api/schedules`,{method:`POST`,body:JSON.stringify(e)})).task}async function yt(e,t){return(await Q(`/api/schedules/${encodeURIComponent(e)}`,{method:`PUT`,body:JSON.stringify(t)})).task}async function bt(e){await Q(`/api/schedules/${encodeURIComponent(e)}`,{method:`DELETE`})}async function xt(e){await Q(`/api/schedules/${encodeURIComponent(e)}/run`,{method:`POST`})}async function St(e){await Q(`/api/schedules/${encodeURIComponent(e)}/stop`,{method:`POST`})}function Ct(e){if(typeof EventSource>`u`)return()=>{};let t=new EventSource(`/api/schedules/events`);return t.onmessage=t=>{try{e(JSON.parse(t.data))}catch{}},()=>t.close()}var wt=e=>/^\d+$/.test(e)?Number(e):null;function Tt(e){let t=String(e||``).trim(),n=t.split(/\s+/);if(n.length!==5)return{kind:`custom`,raw:t};let[r,i,a,o,s]=n,c=wt(r),l=wt(i);if(t===`* * * * *`)return{kind:`every-minute`,raw:t};let u=r.match(/^\*\/(\d+)$/);if(u&&i===`*`&&a===`*`&&o===`*`&&s===`*`)return{kind:`every-n-minutes`,n:Number(u[1]),raw:t};if(c!==null&&i===`*`&&a===`*`&&o===`*`&&s===`*`)return{kind:`hourly`,minute:c,raw:t};if(c!==null&&l!==null&&a===`*`&&o===`*`&&s===`*`)return{kind:`daily`,hour:l,minute:c,raw:t};let d=wt(s);if(c!==null&&l!==null&&a===`*`&&o===`*`&&d!==null)return{kind:`weekly`,weekday:d%7,hour:l,minute:c,raw:t};let f=wt(a);return c!==null&&l!==null&&f!==null&&o===`*`&&s===`*`?{kind:`monthly`,day:f,hour:l,minute:c,raw:t}:{kind:`custom`,raw:t}}var $=e=>String(e).padStart(2,`0`),Et=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime();function Dt(e,t=new Date){if(!e)return{kind:`none`};let n=new Date(e);if(Number.isNaN(n.getTime()))return{kind:`none`};let r=`${$(n.getHours())}:${$(n.getMinutes())}`,i=Math.round((Et(n)-Et(t))/864e5);return i<0?{kind:`date`,date:`${n.getMonth()+1}-${$(n.getDate())}`,time:r}:i===0?{kind:`today`,time:r}:i===1?{kind:`tomorrow`,time:r}:i<7?{kind:`weekday`,weekday:n.getDay(),time:r}:{kind:`date`,date:`${n.getMonth()+1}-${$(n.getDate())}`,time:r}}function Ot(e){switch(e){case`ok`:return`ok`;case`error`:case`timed-out`:return`error`;case`skipped-busy`:case`missed`:case`cancelled`:return`skipped`;default:return`pending`}}function kt(e){let t=Number(e);if(!Number.isFinite(t)||t<0)return``;if(t<1e3)return`<1s`;let n=Math.round(t/1e3);if(n<60)return`${n}s`;let r=Math.floor(n/60);return r<60?`${r}m${$(n%60)}s`:`${Math.floor(r/60)}h${$(r%60)}m`}function At(e){let t=Math.min(59,Math.max(0,Math.floor(e.minute))),n=Math.min(23,Math.max(0,Math.floor(e.hour))),r=(Math.floor(e.weekday)%7+7)%7;switch(e.freq){case`minutes`:return`*/${Math.min(59,Math.max(1,Math.floor(e.everyMinutes??30)))} * * * *`;case`hourly`:return`${t} * * * *`;case`daily`:return`${t} ${n} * * *`;case`weekly`:return`${t} ${n} * * ${r}`;case`custom`:return String(e.custom||``).trim()}}K(),m(),N(),L();var jt={class:`schedule-panel`},Mt={class:`schedule-toolbar`},Nt={class:`schedule-summary`},Pt={key:0,class:`schedule-error`},Ft={key:1,class:`schedule-loading`},It={key:2,class:`schedule-empty`},Lt={class:`schedule-empty-title`},Rt={class:`schedule-empty-desc`},zt={key:3,class:`schedule-list`},Bt={class:`schedule-card-body`},Vt={class:`schedule-card-head`},Ht={class:`schedule-name`},Ut={key:0,class:`schedule-running`},Wt=[`aria-checked`,`aria-label`,`onClick`],Gt={class:`schedule-card-sub`},Kt={class:`schedule-desc`},qt=[`onClick`],Jt={class:`schedule-card-side`},Yt={class:`schedule-actions`},Xt=[`disabled`,`onClick`],Zt=[`disabled`,`onClick`],Qt=[`onClick`],$t=[`onClick`],en={class:`sch-form`},tn={class:`sch-field`},nn={class:`sch-field-label`},rn=[`placeholder`],an={class:`sch-field`},on={class:`sch-field-label`},sn={class:`sch-freq-row`},cn=[`value`],ln={class:`sch-inline-label`},un=[`value`],dn={class:`sch-inline-label`},fn=[`value`],pn=[`value`],mn=[`value`],hn={class:`sch-inline-label`},gn=[`value`],_n={class:`sch-inline-label`},vn=[`placeholder`],yn={class:`sch-hint`},bn={class:`sch-field`},xn={class:`sch-field-label`},Sn=[`placeholder`],Cn={class:`sch-field`},wn={class:`sch-field-label`},Tn=[`placeholder`],En={class:`sch-field`},Dn={class:`sch-field-label`},On={class:`sch-radio-row`},kn={class:`sch-radio`},An={class:`sch-radio`},jn={class:`sch-radio`},Mn={key:0,class:`sch-form-error`},Nn={class:`sch-form-footer`},Pn=[`disabled`],Fn={class:`sch-confirm-text`},In={class:`sch-form-footer`},Ln=X(i({__name:`SchedulePanel`,emits:[`open-session`],setup(e,{emit:t}){let r=t,i=oe(),a=G([]),s=G(!0),c=G(``),d=G({}),f=null,m=null;async function y(){try{a.value=await _t(),c.value=``}catch(e){c.value=e?.message||String(e)}finally{s.value=!1}}function b(){m===null&&(m=window.setTimeout(()=>{m=null,y()},150))}o(async()=>{await y(),f=Ct(e=>{[`tasks_changed`,`task_started`,`task_finished`,`hello`].includes(e.type)&&b()})}),l(()=>{f?.(),m!==null&&window.clearTimeout(m)});let ee=W(()=>{let e=a.value.filter(e=>e.enabled).length,t=a.value.length-e;return a.value.length?Y(`@SCHED:{on} 个启用 · {off} 个停用`,{on:e,off:t}):``}),x=[`@SCHED:周日`,`@SCHED:周一`,`@SCHED:周二`,`@SCHED:周三`,`@SCHED:周四`,`@SCHED:周五`,`@SCHED:周六`];function S(e){let t=Tt(e.schedule);switch(t.kind){case`every-minute`:return Y(`@SCHED:每分钟`);case`every-n-minutes`:return Y(`@SCHED:每 {n} 分钟`,{n:t.n});case`hourly`:return Y(`@SCHED:每小时第 {minute} 分钟`,{minute:t.minute});case`daily`:return Y(`@SCHED:每天 {time}`,{time:`${String(t.hour).padStart(2,`0`)}:${String(t.minute).padStart(2,`0`)}`});case`weekly`:return Y(`@SCHED:每周 {weekday} {time}`,{weekday:Y(x[t.weekday]),time:`${String(t.hour).padStart(2,`0`)}:${String(t.minute).padStart(2,`0`)}`});case`monthly`:return Y(`@SCHED:每月 {day} 日 {time}`,{day:t.day,time:`${String(t.hour).padStart(2,`0`)}:${String(t.minute).padStart(2,`0`)}`});default:return t.raw}}function T(e){if(!e.enabled)return Y(`@SCHED:已停用`);if(e.running)return Y(`@SCHED:运行中...`);let t=Dt(e.nextRunAt);switch(t.kind){case`none`:return``;case`today`:return Y(`@SCHED:下次 今天 {time}`,{time:t.time});case`tomorrow`:return Y(`@SCHED:下次 明天 {time}`,{time:t.time});case`weekday`:return Y(`@SCHED:下次 {weekday} {time}`,{weekday:Y(x[t.weekday]),time:t.time});case`date`:return Y(`@SCHED:下次 {date} {time}`,{date:t.date,time:t.time})}}function E(e){let t=e.lastRun;if(!t)return Y(`@SCHED:还没执行过`);switch(t.status){case`ok`:return Y(`@SCHED:成功`);case`error`:return Y(`@SCHED:失败`);case`timed-out`:return Y(`@SCHED:超时中止`);case`skipped-busy`:return Y(`@SCHED:已跳过(会话忙)`);case`missed`:return Y(`@SCHED:已错过(未运行)`);case`cancelled`:return Y(`@SCHED:已停止`);default:return t.status}}function D(e){let t=e.lastRun;if(!t)return Y(`@SCHED:还没执行过`);let n=kt(t.durationMs),r=Y(`@SCHED:上次 {status}`,{status:E(e)});return n?`${r} · ${n}`:r}function O(e){return e.lastRun?`is-${Ot(e.lastRun.status)}`:`is-muted`}async function j(e,t){if(!d.value[e.id]){d.value={...d.value,[e.id]:!0};try{await t(),await y()}catch(e){I.error(e?.message||String(e))}finally{let t={...d.value};delete t[e.id],d.value=t}}}function N(e){return j(e,()=>yt(e.id,{enabled:!e.enabled}))}function te(e){return j(e,()=>xt(e.id))}function ne(e){return j(e,()=>St(e.id))}let L=G(!1),re=G(null);function ie(e){re.value=e,L.value=!0}async function ae(){let e=re.value;if(e)try{await bt(e.id),L.value=!1,await y()}catch(e){I.error(e?.message||String(e))}}let z=G(!1),V=G(``),H=G(``),U=G(!1),K=G({name:``,freq:`daily`,everyMinutes:30,minute:0,hour:9,weekday:1,custom:``,cwd:``,prompt:``,onMissed:`run`,enabled:!0}),q=W(()=>[{value:`minutes`,label:Y(`@SCHED:每 N 分钟`)},{value:`hourly`,label:Y(`@SCHED:每小时`)},{value:`daily`,label:Y(`@SCHED:每天`)},{value:`weekly`,label:Y(`@SCHED:每周`)},{value:`custom`,label:Y(`@SCHED:自定义 cron`)}]),J=W(()=>At({freq:K.value.freq,everyMinutes:K.value.everyMinutes,minute:K.value.minute,hour:K.value.hour,weekday:K.value.weekday,custom:K.value.custom}));function X(){K.value={name:``,freq:`daily`,everyMinutes:30,minute:0,hour:9,weekday:1,custom:``,cwd:i.currentDirectory||``,prompt:``,onMissed:`run`,enabled:!0},H.value=``}function ce(){V.value=``,X(),z.value=!0}function Z(e){V.value=e.id;let t=Tt(e.schedule),n={name:e.name,freq:`custom`,everyMinutes:30,minute:0,hour:9,weekday:1,custom:e.schedule,cwd:e.cwd,prompt:e.prompt,onMissed:e.onMissed===`skip`?`skip`:`run`,enabled:e.enabled};switch(t.kind){case`every-n-minutes`:n.freq=`minutes`,n.everyMinutes=t.n;break;case`hourly`:n.freq=`hourly`,n.minute=t.minute;break;case`daily`:n.freq=`daily`,n.minute=t.minute,n.hour=t.hour;break;case`weekly`:n.freq=`weekly`,n.minute=t.minute,n.hour=t.hour,n.weekday=t.weekday;break;default:n.freq=`custom`}K.value=n,H.value=``,z.value=!0}async function le(){let e=K.value;if(!e.name.trim()){H.value=Y(`@SCHED:任务名不能为空`);return}if(!e.prompt.trim()){H.value=Y(`@SCHED:提示词不能为空`);return}let t=J.value;if(!t){H.value=Y(`@SCHED:cron 表达式不能为空`);return}let n={name:e.name.trim(),schedule:t,cwd:e.cwd.trim(),prompt:e.prompt.trim(),enabled:e.enabled,onMissed:e.onMissed};U.value=!0;try{V.value?await yt(V.value,n):await vt(n),z.value=!1,await y()}catch(e){H.value=e?.message||String(e)}finally{U.value=!1}}return(e,t)=>(C(),h(`div`,jt,[_(`div`,Mt,[_(`span`,Nt,w(ee.value),1),_(`button`,{type:`button`,class:`sch-btn sch-btn-primary`,onClick:ce},w(v(Y)(`@SCHED:新建任务`)),1)]),c.value?(C(),h(`div`,Pt,w(v(Y)(`@SCHED:操作失败:{error}`,{error:c.value})),1)):n(``,!0),s.value?(C(),h(`div`,Ft,w(v(Y)(`@SCHED:加载中...`)),1)):a.value.length?(C(),h(`div`,zt,[(C(!0),h(k,null,g(a.value,e=>(C(),h(`article`,{key:e.id,class:u([`schedule-card`,{"is-disabled":!e.enabled,"is-running":!!e.running}])},[_(`div`,Bt,[_(`div`,Vt,[_(`span`,Ht,w(e.name),1),e.running?(C(),h(`span`,Ut,w(v(Y)(`@SCHED:运行中`)),1)):n(``,!0),_(`button`,{type:`button`,class:u([`sch-switch`,{on:e.enabled}]),role:`switch`,"aria-checked":e.enabled,"aria-label":e.enabled?v(Y)(`@SCHED:停用`):v(Y)(`@SCHED:启用`),onClick:t=>N(e)},[...t[17]||=[_(`span`,{class:`sch-switch-knob`},null,-1)]],10,Wt)]),_(`div`,Gt,[_(`span`,Kt,w(S(e)),1),t[18]||=_(`span`,{class:`schedule-sep`},`·`,-1),_(`span`,{class:u([`schedule-last`,O(e)])},w(D(e)),3),e.sessionId?(C(),h(`button`,{key:0,type:`button`,class:`sch-link`,onClick:t=>r(`open-session`,e.sessionId)},w(v(Y)(`@SCHED:查看会话`)),9,qt)):n(``,!0)])]),_(`div`,Jt,[_(`div`,{class:u([`schedule-next`,{"is-muted":!e.enabled}])},w(T(e)),3),_(`div`,Yt,[e.running?(C(),h(`button`,{key:0,type:`button`,class:`sch-btn`,disabled:!!d.value[e.id],onClick:t=>ne(e)},w(v(Y)(`@SCHED:停止`)),9,Xt)):(C(),h(`button`,{key:1,type:`button`,class:`sch-btn`,disabled:!!d.value[e.id],onClick:t=>te(e)},w(v(Y)(`@SCHED:运行`)),9,Zt)),_(`button`,{type:`button`,class:`sch-btn`,onClick:t=>Z(e)},w(v(Y)(`@SCHED:编辑`)),9,Qt),_(`button`,{type:`button`,class:`sch-btn sch-btn-danger`,onClick:t=>ie(e)},w(v(Y)(`@SCHED:删除`)),9,$t)])])],2))),128))])):(C(),h(`div`,It,[_(`p`,Lt,w(v(Y)(`@SCHED:还没有定时任务`)),1),_(`p`,Rt,w(v(Y)(`@SCHED:让 g ai 在指定时间自动做事:定时拉代码、定时巡检、定时汇总。也可以在对话里直接说「每天 9 点帮我…」,让 g ai 来创建。`)),1)])),p(se,{modelValue:z.value,"onUpdate:modelValue":t[14]||=e=>z.value=e,title:V.value?v(Y)(`@SCHED:编辑任务`):v(Y)(`@SCHED:新建任务`),"close-on-click-modal":!1,"append-to-body":!0,size:`medium`,width:`560px`,"z-index":3e6,"custom-class":`schedule-dialog`},{default:B(()=>[_(`div`,en,[_(`label`,tn,[_(`span`,nn,w(v(Y)(`@SCHED:任务名`)),1),A(_(`input`,{"onUpdate:modelValue":t[0]||=e=>K.value.name=e,class:`sch-input`,type:`text`,placeholder:v(Y)(`@SCHED:如:每日拉代码`)},null,8,rn),[[P,K.value.name]])]),_(`div`,an,[_(`span`,on,w(v(Y)(`@SCHED:执行计划`)),1),_(`div`,sn,[A(_(`select`,{"onUpdate:modelValue":t[1]||=e=>K.value.freq=e,class:`sch-input sch-select`},[(C(!0),h(k,null,g(q.value,e=>(C(),h(`option`,{key:e.value,value:e.value},w(e.label),9,cn))),128))],512),[[F,K.value.freq]]),K.value.freq===`minutes`?(C(),h(k,{key:0},[_(`span`,ln,w(v(Y)(`@SCHED:每`)),1),A(_(`select`,{"onUpdate:modelValue":t[2]||=e=>K.value.everyMinutes=e,class:`sch-input sch-select sch-select-sm`},[(C(),h(k,null,g([5,10,15,20,30,60],e=>_(`option`,{key:e,value:e},w(e),9,un)),64))],512),[[F,K.value.everyMinutes,void 0,{number:!0}]]),_(`span`,dn,w(v(Y)(`@SCHED:分钟`)),1)],64)):K.value.freq===`daily`||K.value.freq===`weekly`?(C(),h(k,{key:1},[K.value.freq===`weekly`?A((C(),h(`select`,{key:0,"onUpdate:modelValue":t[3]||=e=>K.value.weekday=e,class:`sch-input sch-select sch-select-sm`},[(C(),h(k,null,g(x,(e,t)=>_(`option`,{key:t,value:t},w(v(Y)(e)),9,fn)),64))],512)),[[F,K.value.weekday,void 0,{number:!0}]]):n(``,!0),A(_(`select`,{"onUpdate:modelValue":t[4]||=e=>K.value.hour=e,class:`sch-input sch-select sch-select-sm`},[(C(),h(k,null,g(24,e=>_(`option`,{key:e-1,value:e-1},w(String(e-1).padStart(2,`0`)),9,pn)),64))],512),[[F,K.value.hour,void 0,{number:!0}]]),t[19]||=_(`span`,{class:`sch-inline-label`},`:`,-1),A(_(`select`,{"onUpdate:modelValue":t[5]||=e=>K.value.minute=e,class:`sch-input sch-select sch-select-sm`},[(C(),h(k,null,g(60,e=>_(`option`,{key:e-1,value:e-1},w(String(e-1).padStart(2,`0`)),9,mn)),64))],512),[[F,K.value.minute,void 0,{number:!0}]])],64)):K.value.freq===`hourly`?(C(),h(k,{key:2},[_(`span`,hn,w(v(Y)(`@SCHED:第`)),1),A(_(`select`,{"onUpdate:modelValue":t[6]||=e=>K.value.minute=e,class:`sch-input sch-select sch-select-sm`},[(C(),h(k,null,g(60,e=>_(`option`,{key:e-1,value:e-1},w(String(e-1).padStart(2,`0`)),9,gn)),64))],512),[[F,K.value.minute,void 0,{number:!0}]]),_(`span`,_n,w(v(Y)(`@SCHED:分钟`)),1)],64)):A((C(),h(`input`,{key:3,"onUpdate:modelValue":t[7]||=e=>K.value.custom=e,class:`sch-input sch-input-cron`,type:`text`,spellcheck:`false`,placeholder:v(Y)(`@SCHED:如:0 9 * * 1-5`)},null,8,vn)),[[P,K.value.custom]])]),_(`span`,yn,w(v(Y)(`@SCHED:cron:{cron}(分 时 日 月 周,本地时间)`,{cron:J.value||`—`})),1)]),_(`label`,bn,[_(`span`,xn,w(v(Y)(`@SCHED:项目目录`)),1),A(_(`input`,{"onUpdate:modelValue":t[8]||=e=>K.value.cwd=e,class:`sch-input`,type:`text`,spellcheck:`false`,placeholder:v(Y)(`@SCHED:任务在该目录下执行(默认当前项目)`)},null,8,Sn),[[P,K.value.cwd]])]),_(`label`,Cn,[_(`span`,wn,w(v(Y)(`@SCHED:提示词`)),1),A(_(`textarea`,{"onUpdate:modelValue":t[9]||=e=>K.value.prompt=e,class:`sch-input sch-textarea`,rows:`4`,placeholder:v(Y)(`@SCHED:到点后发给 g ai 的完整指令,例如:检查所有仓库远端更新,有变更就 pull;写成一次自足的请求(未来那一轮没有现在的上下文)`)},null,8,Tn),[[P,K.value.prompt]])]),_(`div`,En,[_(`span`,Dn,w(v(Y)(`@SCHED:错过补偿`)),1),_(`div`,On,[_(`label`,kn,[A(_(`input`,{"onUpdate:modelValue":t[10]||=e=>K.value.onMissed=e,type:`radio`,value:`run`},null,512),[[R,K.value.onMissed]]),_(`span`,null,w(v(Y)(`@SCHED:补跑一次(g ui 重新运行后)`)),1)]),_(`label`,An,[A(_(`input`,{"onUpdate:modelValue":t[11]||=e=>K.value.onMissed=e,type:`radio`,value:`skip`},null,512),[[R,K.value.onMissed]]),_(`span`,null,w(v(Y)(`@SCHED:跳过`)),1)]),_(`label`,jn,[A(_(`input`,{"onUpdate:modelValue":t[12]||=e=>K.value.enabled=e,type:`checkbox`},null,512),[[M,K.value.enabled]]),_(`span`,null,w(v(Y)(`@SCHED:创建后启用`)),1)])])]),H.value?(C(),h(`p`,Mn,w(H.value),1)):n(``,!0)]),_(`div`,Nn,[_(`button`,{type:`button`,class:`sch-btn`,onClick:t[13]||=e=>z.value=!1},w(v(Y)(`@SCHED:取消`)),1),_(`button`,{type:`button`,class:`sch-btn sch-btn-primary`,disabled:U.value,onClick:le},w(U.value?v(Y)(`@SCHED:保存中...`):v(Y)(`@SCHED:保存`)),9,Pn)])]),_:1},8,[`modelValue`,`title`]),p(se,{modelValue:L.value,"onUpdate:modelValue":t[16]||=e=>L.value=e,title:v(Y)(`@SCHED:删除任务`),"close-on-click-modal":!1,"append-to-body":!0,size:`small`,width:`400px`,"z-index":3e6,"custom-class":`schedule-dialog-confirm`},{default:B(()=>[_(`p`,Fn,w(v(Y)(`@SCHED:确定删除「{name}」吗?已产生的会话会保留,但任务不再执行。`,{name:re.value?.name||``})),1),_(`div`,In,[_(`button`,{type:`button`,class:`sch-btn`,onClick:t[15]||=e=>L.value=!1},w(v(Y)(`@SCHED:取消`)),1),_(`button`,{type:`button`,class:`sch-btn sch-btn-danger`,onClick:ae},w(v(Y)(`@SCHED:删除`)),1)])]),_:1},8,[`modelValue`,`title`])]))}}),[[`__scopeId`,`data-v-75be84e5`]]);K(),N(),m();var Rn={class:`agent-chat-area`},zn={class:`agent-tabs`,role:`tablist`},Bn=[`aria-selected`,`onClick`],Vn={class:`agent-tab-body`},Hn={key:0,class:`agent-chat-pane`},Un={key:0,class:`agent-list-page`},Wn={key:0,class:`agent-page-bar`},Gn=[`title`,`aria-label`],Kn={class:`agent-page-title`},qn={key:0,class:`chat-loading`},Jn=X(i({__name:`AgentView`,setup(t){let i=oe(),o=G(null),{narrow:c}=ye(o),l=G(`chat`),d=G(`chat`),f=W(()=>d.value===`mcp`?`mcp`:`skill`),m=W(()=>[{id:`chat`,label:Y(`@AGENT:对话`),icon:j},{id:`schedule`,label:Y(`@AGENT:定时任务`),icon:T},{id:`skill`,label:Y(`@AGENT:Skill 广场`),icon:y},{id:`mcp`,label:Y(`@AGENT:MCP 广场`),icon:V}]),{sessions:ee,sessionsLoading:x,currentSessionId:S,messages:E,isStreaming:D,sessionLoading:A,loadSessions:M,loadSession:N,deleteSession:P,renameSession:F,newSession:I,sendMessage:te,retryTurn:ne,pendingQuestion:L,answeringQuestion:re,answerQuestion:R,isSessionGenerating:ie,currentEngine:ae,pendingEngine:z,isEngineLocked:U,pickEngine:K,stop:X,inputContextUsage:se,queuedMessages:Se,queuePaused:Ce,removeQueuedMessage:we,flushQueued:Te}=ve(),Ee=W(()=>U.value?ae.value:z.value);function De(e){U.value||K(e)}let Oe=W(()=>{let e=i.theme;return e===`dark`||e===`auto`&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}),ke=W(()=>le(ee.value,ie)),Ae=Z(),je=W(()=>ke.value.find(e=>e.id===S.value)?.title||Y(`@AGENT:对话`)),Me={"--welcome-avatar":`url("${_e}")`},Ne=W(()=>ce(i.agentPresetPrompts));async function Pe(e){await te(e.text,e.files),await b(),ze()}async function Fe(e){await te(e.prompt),await b(),ze()}let Ie=pe(),Le=G(null),Re=ge();function ze(e=!0){Le.value?.scrollToBottom(e)}O(()=>E.value.length,()=>{b(()=>ze(!1))});function Be(e){N(e),l.value=`chat`}function Ve(e){e&&(d.value=`chat`,Be(e))}function He(){I(),l.value=`chat`}let Ue=G(280),We=G(!1);function Ge(e){We.value=!0;let t=e.clientX,n=Ue.value,r=e=>{let r=e.clientX-t,i=Math.max(200,Math.min(500,n+r));Ue.value=i},i=()=>{We.value=!1,document.removeEventListener(`mousemove`,r),document.removeEventListener(`mouseup`,i)};document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)}return O(c,e=>{e||(l.value=`chat`)}),O(()=>[i.currentDirectory,D.value],async([e,t],n)=>{let r=!n||e!==n[0],i=!!n&&n[1]===!0&&!t;(r||i)&&await M(),S.value&&!D.value&&!ee.value.some(e=>e.sessionId===S.value)&&I()},{immediate:!0}),(t,i)=>(C(),h(`div`,{ref_key:`rootRef`,ref:o,class:`agent-view`},[d.value===`chat`&&!v(c)?(C(),h(k,{key:0},[_(`aside`,{class:`agent-sidebar`,style:s({width:Ue.value+`px`})},[p(v(J),{class:`agent-conversations`,items:ke.value,"active-id":v(S),loading:v(x),labels:v(Ae),onSelect:Be,onNew:He,onRename:v(F),onDelete:v(P)},null,8,[`items`,`active-id`,`loading`,`labels`,`onRename`,`onDelete`])],4),_(`div`,{class:u([`sidebar-resizer`,{active:We.value}]),onMousedown:Ge},null,34)],64)):n(``,!0),_(`main`,Rn,[_(`nav`,zn,[(C(!0),h(k,null,g(m.value,e=>(C(),h(`button`,{key:e.id,type:`button`,class:u([`agent-tab`,{active:d.value===e.id}]),role:`tab`,"aria-selected":d.value===e.id,onClick:t=>d.value=e.id},[p(v(a),null,{default:B(()=>[(C(),r(H(e.icon)))]),_:2},1024),_(`span`,null,w(e.label),1)],10,Bn))),128)),d.value===`chat`?(C(),r(be,{key:0,class:`agent-engine`,engine:Ee.value,locked:v(U),onSelect:De},null,8,[`engine`,`locked`])):n(``,!0),d.value===`chat`?(C(),r(xe,{key:1,class:`agent-copy`,messages:v(E),title:je.value,engine:v(me)(Ee.value)},null,8,[`messages`,`title`,`engine`])):n(``,!0)]),_(`div`,Vn,[d.value===`chat`?(C(),h(`div`,Hn,[v(c)&&l.value===`list`?(C(),h(`div`,Un,[p(v(J),{class:`agent-conversations`,items:ke.value,"active-id":v(S),loading:v(x),labels:v(Ae),onSelect:Be,onNew:He,onRename:v(F),onDelete:v(P)},null,8,[`items`,`active-id`,`loading`,`labels`,`onRename`,`onDelete`])])):(C(),h(k,{key:1},[v(c)?(C(),h(`div`,Wn,[_(`button`,{type:`button`,class:`agent-page-back`,title:v(Y)(`@AGENT:返回会话列表`),"aria-label":v(Y)(`@AGENT:返回会话列表`),onClick:i[0]||=e=>l.value=`list`},[...i[1]||=[_(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[_(`line`,{x1:`19`,y1:`12`,x2:`5`,y2:`12`}),_(`polyline`,{points:`12 19 5 12 12 5`})],-1)]],8,Gn),_(`span`,Kn,w(je.value),1)])):n(``,!0),_(`div`,{class:`agent-chat-host`,style:Me},[v(A)?(C(),h(`div`,qn,[p(v(a),{class:`is-loading`,size:32},{default:B(()=>[p(v(e))]),_:1}),_(`span`,null,w(v(Y)(`@AGENT:加载会话中...`)),1)])):(C(),r(v(q),{key:1,ref_key:`chatContainerRef`,ref:Le,messages:v(E),"preset-questions":Ne.value,"welcome-title":v(Y)(`@AGENT:智能体助手`),"welcome-description":v(Y)(`@AGENT:我可以帮你阅读代码、执行命令、修改文件。选择下方话题或直接输入你的问题。`),"assistant-name":v(fe),"assistant-avatar":v(_e),theme:Oe.value,generating:v(D),"allow-queue":!0,queued:v(Se),"queue-paused":v(Ce),"queue-labels":v(Re),"upload-config":{accept:v(de)},"context-usage":v(se),placeholder:v(D)?v(Y)(`@AGENT:生成中,发送后会排队,等本轮跑完自动接上…`):v(Y)(`@AGENT:输入消息,Enter 发送`),question:v(L),"question-submitting":v(re),"question-labels":v(Ie),"plan-config":{labels:{title:v(Y)(`@AGENT:计划`),raw:v(Y)(`@AGENT:原始参数`)}},"message-rail-config":v(ue),"message-meta-config":v(he),onSend:Pe,onSelect:Fe,onStop:v(X),onUnqueue:v(we),onFlushQueued:v(Te),onAnswer:v(R),onRetry:v(ne)},null,8,[`messages`,`preset-questions`,`welcome-title`,`welcome-description`,`assistant-name`,`assistant-avatar`,`theme`,`generating`,`queued`,`queue-paused`,`queue-labels`,`upload-config`,`context-usage`,`placeholder`,`question`,`question-submitting`,`question-labels`,`plan-config`,`message-rail-config`,`message-meta-config`,`onStop`,`onUnqueue`,`onFlushQueued`,`onAnswer`,`onRetry`]))])],64))])):d.value===`schedule`?(C(),r(Ln,{key:1,onOpenSession:Ve})):(C(),r(gt,{key:2,type:f.value},null,8,[`type`]))])])],512))}}),[[`__scopeId`,`data-v-853bde85`]]);export{Jn as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"./rolldown-runtime-C0FnF6B9.js";import{At as e,Dn as t,En as n,Fn as r,J as i,Jn as a,Kn as o,Kr as s,Mn as c,Nn as l,Nr as u,On as d,Tn as f,Tr as p,Un as m,W as h,Xn as g,Zr as _,ar as v,fr as y,i as b,nt as x,r as S,rt as C,sr as w,wn as T,yr as E,z as D,zn as O}from"./element-plus-
|
|
2
|
-
`);i=o.pop()??``;for(let e of o)e.trim()&&t(e)}i.trim()&&t(i)}async function N(){let e=await fetch(`/api/app-version`);return e.ok?e.json():{success:!1,current:``,latest:null,hasUpdate:!1,error:`HTTP ${e.status}`}}async function P(e){let t=await fetch(`/api/app-upgrade`,{method:`POST`});if(!t.ok){let n=`HTTP ${t.status}`;try{let e=await t.json();e?.error&&(n=e.error)}catch{}e({type:`error`,message:n}),e({type:`done`,code:t.status});return}if(!t.body){e({type:`error`,message:`响应无 body`}),e({type:`done`,code:-1});return}await M(t,t=>{try{e(JSON.parse(t))}catch{}})}async function F(){let e=await fetch(`/api/app-restart`,{method:`POST`});if(!e.ok){let t=`HTTP ${e.status}`;try{let n=await e.json();n?.error&&(t=n.error)}catch{}throw Error(t)}if(!e.body)throw Error(`响应无 body`);return new Promise((t,n)=>{let r=!1,i=e=>{r||(r=!0,e())};M(e,e=>{try{let r=JSON.parse(e);r.type===`ready`&&typeof r.port==`number`&&r.port>0?i(()=>t(r.port)):r.type===`timeout`?i(()=>n(Error(`restart.timeout`))):r.type===`error`&&i(()=>n(Error(r.message||`restart.failed`)))}catch{}}).then(()=>{i(()=>n(Error(`restart.stream-closed`)))}).catch(()=>{})})}O(),y(),u();var I={key:3},L={key:4},R={key:5},z={key:0,class:`upgrade-hint`},B={key:0,class:`upgrade-countdown`},V={key:1,class:`upgrade-manual`},H={class:`upgrade-manual__label`},U=`npm install -g zen-gitsync --registry https://registry.npmjs.org/`,W=A(r({__name:`UpgradeDialog`,props:{modelValue:{type:Boolean},logs:{},status:{},countdown:{default:0}},emits:[`update:modelValue`,`retry`,`restart`,`cancel`],setup(r,{emit:a}){let o=r,u=a,h=E(null);v(()=>o.logs,async()=>{await m(),h.value&&(h.value.scrollTop=h.value.scrollHeight)});function y(){o.status!==`running`&&(o.status===`success`&&o.countdown>0&&u(`cancel`),u(`update:modelValue`,!1))}function S(){u(`retry`)}function T(){u(`restart`)}function O(){u(`cancel`),u(`update:modelValue`,!1)}async function A(){try{await navigator.clipboard.writeText(U),b.success(k(`@F13B4:已复制升级命令`))}catch{b.warning(k(`@F13B4:复制失败,请手动复制`))}}return(a,o)=>{let m=i,v=D;return g(),n(j,{"model-value":r.modelValue,"onUpdate:modelValue":o[0]||=e=>u(`update:modelValue`,e),title:p(k)(`@F13B4:升级`),width:`680px`,type:`flex`,"close-on-click-modal":!1,"close-on-press-escape":!1,"show-close":r.status!==`running`,"append-to-body":``,onClose:y},{footer:w(()=>[r.status===`failed`?(g(),n(v,{key:0,type:`primary`,onClick:S},{default:w(()=>[c(_(p(k)(`@F13B4:重试`)),1)]),_:1})):t(``,!0),r.status===`failed`?(g(),n(v,{key:1,onClick:A},{default:w(()=>[c(_(p(k)(`@F13B4:复制升级命令`)),1)]),_:1})):t(``,!0),r.status===`success`?(g(),n(v,{key:2,type:`primary`,onClick:T},{default:w(()=>[c(_(p(k)(`@F13B4:立即重启并刷新`)),1)]),_:1})):t(``,!0),r.status===`success`?(g(),n(v,{key:3,onClick:O},{default:w(()=>[c(_(p(k)(`@F13B4:稍后手动重启`)),1)]),_:1})):t(``,!0),r.status===`running`?(g(),n(v,{key:4,disabled:``},{default:w(()=>[c(_(p(k)(`@F13B4:升级中`))+`... `,1)]),_:1})):t(``,!0)]),default:w(()=>[f(`div`,{class:s([`upgrade-status`,`is-${r.status}`])},[r.status===`running`?(g(),n(m,{key:0,class:`is-loading`},{default:w(()=>[l(p(e))]),_:1})):r.status===`success`?(g(),n(m,{key:1,color:`var(--color-success)`},{default:w(()=>[l(p(x))]),_:1})):(g(),n(m,{key:2,color:`var(--color-danger)`},{default:w(()=>[l(p(C))]),_:1})),r.status===`running`?(g(),d(`span`,I,_(p(k)(`@F13B4:升级中`)),1)):r.status===`success`?(g(),d(`span`,L,_(p(k)(`@F13B4:升级完成`)),1)):(g(),d(`span`,R,_(p(k)(`@F13B4:升级失败`)),1))],2),r.status===`success`?(g(),d(`p`,z,[c(_(p(k)(`@F13B4:新版本已全局安装,需要重启服务才能生效`))+` `,1),r.countdown>0?(g(),d(`span`,B,_(p(k)(`@F13B4:{seconds} 秒后自动刷新`,{seconds:r.countdown})),1)):t(``,!0)])):t(``,!0),r.status===`failed`?(g(),d(`p`,V,[f(`span`,H,_(p(k)(`@F13B4:手动升级命令`)),1),f(`code`,{class:`upgrade-manual__cmd`},_(U))])):t(``,!0),f(`pre`,{ref_key:`logEl`,ref:h,class:`upgrade-log`},_(r.logs||p(k)(`@F13B4:等待日志输出`)),513)]),_:1},8,[`model-value`,`title`,`show-close`])}}}),[[`__scopeId`,`data-v-6de8caee`]]);O(),y(),u();var G={class:`app-version-badge`},K=[`aria-label`],q=[`aria-label`],J=[`title`,`aria-label`],Y={class:`upgrade-btn__label`},X={class:`upgrade-btn__version`},Z=`https://github.com/xz333221/zen-gitsync/releases`,Q=5,$=`app-version-check`,ee=36e5,te=A(r({__name:`AppVersionBadge`,setup(e){let n=`2.18.
|
|
1
|
+
import"./rolldown-runtime-C0FnF6B9.js";import{At as e,Dn as t,En as n,Fn as r,J as i,Jn as a,Kn as o,Kr as s,Mn as c,Nn as l,Nr as u,On as d,Tn as f,Tr as p,Un as m,W as h,Xn as g,Zr as _,ar as v,fr as y,i as b,nt as x,r as S,rt as C,sr as w,wn as T,yr as E,z as D,zn as O}from"./element-plus-CNJIhPSG.js";import{n as k,t as A}from"./_plugin-vue_export-helper-BO6qa5C3.js";import{t as j}from"./CommonDialog-9td95UkD.js";async function M(e,t){let n=e.body.getReader(),r=new TextDecoder(`utf-8`),i=``;for(;;){let{done:e,value:a}=await n.read();if(e)break;i+=r.decode(a,{stream:!0});let o=i.split(`
|
|
2
|
+
`);i=o.pop()??``;for(let e of o)e.trim()&&t(e)}i.trim()&&t(i)}async function N(){let e=await fetch(`/api/app-version`);return e.ok?e.json():{success:!1,current:``,latest:null,hasUpdate:!1,error:`HTTP ${e.status}`}}async function P(e){let t=await fetch(`/api/app-upgrade`,{method:`POST`});if(!t.ok){let n=`HTTP ${t.status}`;try{let e=await t.json();e?.error&&(n=e.error)}catch{}e({type:`error`,message:n}),e({type:`done`,code:t.status});return}if(!t.body){e({type:`error`,message:`响应无 body`}),e({type:`done`,code:-1});return}await M(t,t=>{try{e(JSON.parse(t))}catch{}})}async function F(){let e=await fetch(`/api/app-restart`,{method:`POST`});if(!e.ok){let t=`HTTP ${e.status}`;try{let n=await e.json();n?.error&&(t=n.error)}catch{}throw Error(t)}if(!e.body)throw Error(`响应无 body`);return new Promise((t,n)=>{let r=!1,i=e=>{r||(r=!0,e())};M(e,e=>{try{let r=JSON.parse(e);r.type===`ready`&&typeof r.port==`number`&&r.port>0?i(()=>t(r.port)):r.type===`timeout`?i(()=>n(Error(`restart.timeout`))):r.type===`error`&&i(()=>n(Error(r.message||`restart.failed`)))}catch{}}).then(()=>{i(()=>n(Error(`restart.stream-closed`)))}).catch(()=>{})})}O(),y(),u();var I={key:3},L={key:4},R={key:5},z={key:0,class:`upgrade-hint`},B={key:0,class:`upgrade-countdown`},V={key:1,class:`upgrade-manual`},H={class:`upgrade-manual__label`},U=`npm install -g zen-gitsync --registry https://registry.npmjs.org/`,W=A(r({__name:`UpgradeDialog`,props:{modelValue:{type:Boolean},logs:{},status:{},countdown:{default:0}},emits:[`update:modelValue`,`retry`,`restart`,`cancel`],setup(r,{emit:a}){let o=r,u=a,h=E(null);v(()=>o.logs,async()=>{await m(),h.value&&(h.value.scrollTop=h.value.scrollHeight)});function y(){o.status!==`running`&&(o.status===`success`&&o.countdown>0&&u(`cancel`),u(`update:modelValue`,!1))}function S(){u(`retry`)}function T(){u(`restart`)}function O(){u(`cancel`),u(`update:modelValue`,!1)}async function A(){try{await navigator.clipboard.writeText(U),b.success(k(`@F13B4:已复制升级命令`))}catch{b.warning(k(`@F13B4:复制失败,请手动复制`))}}return(a,o)=>{let m=i,v=D;return g(),n(j,{"model-value":r.modelValue,"onUpdate:modelValue":o[0]||=e=>u(`update:modelValue`,e),title:p(k)(`@F13B4:升级`),width:`680px`,type:`flex`,"close-on-click-modal":!1,"close-on-press-escape":!1,"show-close":r.status!==`running`,"append-to-body":``,onClose:y},{footer:w(()=>[r.status===`failed`?(g(),n(v,{key:0,type:`primary`,onClick:S},{default:w(()=>[c(_(p(k)(`@F13B4:重试`)),1)]),_:1})):t(``,!0),r.status===`failed`?(g(),n(v,{key:1,onClick:A},{default:w(()=>[c(_(p(k)(`@F13B4:复制升级命令`)),1)]),_:1})):t(``,!0),r.status===`success`?(g(),n(v,{key:2,type:`primary`,onClick:T},{default:w(()=>[c(_(p(k)(`@F13B4:立即重启并刷新`)),1)]),_:1})):t(``,!0),r.status===`success`?(g(),n(v,{key:3,onClick:O},{default:w(()=>[c(_(p(k)(`@F13B4:稍后手动重启`)),1)]),_:1})):t(``,!0),r.status===`running`?(g(),n(v,{key:4,disabled:``},{default:w(()=>[c(_(p(k)(`@F13B4:升级中`))+`... `,1)]),_:1})):t(``,!0)]),default:w(()=>[f(`div`,{class:s([`upgrade-status`,`is-${r.status}`])},[r.status===`running`?(g(),n(m,{key:0,class:`is-loading`},{default:w(()=>[l(p(e))]),_:1})):r.status===`success`?(g(),n(m,{key:1,color:`var(--color-success)`},{default:w(()=>[l(p(x))]),_:1})):(g(),n(m,{key:2,color:`var(--color-danger)`},{default:w(()=>[l(p(C))]),_:1})),r.status===`running`?(g(),d(`span`,I,_(p(k)(`@F13B4:升级中`)),1)):r.status===`success`?(g(),d(`span`,L,_(p(k)(`@F13B4:升级完成`)),1)):(g(),d(`span`,R,_(p(k)(`@F13B4:升级失败`)),1))],2),r.status===`success`?(g(),d(`p`,z,[c(_(p(k)(`@F13B4:新版本已全局安装,需要重启服务才能生效`))+` `,1),r.countdown>0?(g(),d(`span`,B,_(p(k)(`@F13B4:{seconds} 秒后自动刷新`,{seconds:r.countdown})),1)):t(``,!0)])):t(``,!0),r.status===`failed`?(g(),d(`p`,V,[f(`span`,H,_(p(k)(`@F13B4:手动升级命令`)),1),f(`code`,{class:`upgrade-manual__cmd`},_(U))])):t(``,!0),f(`pre`,{ref_key:`logEl`,ref:h,class:`upgrade-log`},_(r.logs||p(k)(`@F13B4:等待日志输出`)),513)]),_:1},8,[`model-value`,`title`,`show-close`])}}}),[[`__scopeId`,`data-v-6de8caee`]]);O(),y(),u();var G={class:`app-version-badge`},K=[`aria-label`],q=[`aria-label`],J=[`title`,`aria-label`],Y={class:`upgrade-btn__label`},X={class:`upgrade-btn__version`},Z=`https://github.com/xz333221/zen-gitsync/releases`,Q=5,$=`app-version-check`,ee=36e5,te=A(r({__name:`AppVersionBadge`,setup(e){let n=`2.18.4`,r=E(n),i=T(()=>r.value||n),s=E(null),c=E(!1),u=E(``),m=E(`running`),v=E(0),y=null,x=E(!1);function C(){try{let e=sessionStorage.getItem($);if(!e)return null;let{at:t,data:n}=JSON.parse(e);return Date.now()-t>ee?null:n}catch{return null}}function D(e){try{sessionStorage.setItem($,JSON.stringify({at:Date.now(),data:e}))}catch{}}async function O(e=!1){let t=C();t&&(s.value=t);try{let t=await N();s.value=t,D(t),t.current&&(r.value=t.current),!e&&t.success&&t.hasUpdate&&b({type:`success`,message:k(`@F13B4:发现新版本 {version}`,{version:t.latest??``}),duration:4e3})}catch(t){e||b({type:`warning`,message:k(`@F13B4:检查更新失败 {error}`,{error:t?.message||``})})}}async function A(){if(s.value?.hasUpdate){try{await S.confirm(k(`@F13B4:确定要从 {current} 升级到 {latest} 吗?`,{current:s.value.current,latest:s.value.latest}),k(`@F13B4:升级`),{confirmButtonText:k(`@F13B4:确定升级`),cancelButtonText:k(`@F13B4:取消`),type:`info`})}catch{return}u.value=``,m.value=`running`,c.value=!0,await P(e=>{if(e.type===`done`){if(m.value=e.code===0?`success`:`failed`,e.code===0){try{sessionStorage.removeItem($)}catch{}s.value?.latest&&(r.value=s.value.latest),j()}}else e.message&&(u.value+=e.message)})}}function j(){M(),v.value=Q,y=setInterval(()=>{--v.value,v.value<=0&&(y&&=(clearInterval(y),null),L())},1e3)}function M(){y&&=(clearInterval(y),null),v.value=0}function I(){M()}async function L(){if(M(),!x.value){x.value=!0;try{let e=await F(),{pathname:t,search:n,hash:r}=window.location;window.location.href=`http://localhost:${e}${t}${n}${r}`}catch(e){let t=e?.message||``,n={"restart.timeout":`@F13B4:重启超时`,"restart.stream-closed":`@F13B4:重启失败,请刷新页面重试`,"restart.failed":`@F13B4:重启失败`}[t];b({type:`warning`,message:n?k(n):k(`@F13B4:重启失败 {error}`,{error:t})}),x.value=!1}}}return o(()=>{M()}),a(()=>{O(!0)}),(e,n)=>{let r=h;return g(),d(`div`,G,[l(r,{content:p(k)(`@F13B4:在 GitHub 上查看源码`),placement:`top`,effect:`dark`,"show-after":300},{default:w(()=>[f(`a`,{href:`https://github.com/xz333221/zen-gitsync`,target:`_blank`,rel:`noopener noreferrer`,class:`badge-icon-link`,"aria-label":p(k)(`@F13B4:在 GitHub 上查看源码`)},[...n[1]||=[f(`svg`,{viewBox:`0 0 24 24`,width:`15`,height:`15`,"aria-hidden":`true`,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`},[f(`path`,{d:`M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0 1 12 6.844a9.59 9.59 0 0 1 2.504.337c1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.02 10.02 0 0 0 22 12.017C22 6.484 17.522 2 12 2z`})],-1)]],8,K)]),_:1},8,[`content`]),l(r,{content:p(k)(`@F13B4:在 npm 上查看包`),placement:`top`,effect:`dark`,"show-after":300},{default:w(()=>[f(`a`,{href:`https://www.npmjs.com/package/zen-gitsync`,target:`_blank`,rel:`noopener noreferrer`,class:`badge-icon-link badge-icon-link--npm`,"aria-label":p(k)(`@F13B4:在 npm 上查看包`)},[...n[2]||=[f(`svg`,{viewBox:`0 0 24 24`,width:`15`,height:`15`,"aria-hidden":`true`,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`},[f(`path`,{d:`M2 2v20h20V2H2zm17.167 17.167H12.5v-10h-3.333v10H4.833V4.833h14.334v14.334z`})],-1)]],8,q)]),_:1},8,[`content`]),l(r,{content:p(k)(`@F13B4:查看更新`),placement:`top`,effect:`dark`,"show-after":300},{default:w(()=>[f(`a`,{href:Z,target:`_blank`,rel:`noopener noreferrer`,class:`version-link`},`v`+_(i.value),1)]),_:1},8,[`content`]),s.value?.hasUpdate?(g(),d(`button`,{key:0,type:`button`,class:`upgrade-btn`,title:p(k)(`@F13B4:发现新版本 {version},点击升级`,{version:s.value.latest??``}),"aria-label":p(k)(`@F13B4:发现新版本 {version},点击升级`,{version:s.value.latest??``}),onClick:A},[n[3]||=f(`span`,{class:`upgrade-btn__dot`,"aria-hidden":`true`},null,-1),f(`span`,Y,_(p(k)(`@F13B4:升级`)),1),f(`span`,X,`v`+_(s.value.latest),1)],8,J)):t(``,!0),l(W,{modelValue:c.value,"onUpdate:modelValue":n[0]||=e=>c.value=e,logs:u.value,status:m.value,countdown:v.value,onRetry:A,onRestart:L,onCancel:I},null,8,[`modelValue`,`logs`,`status`,`countdown`])])}}}),[[`__scopeId`,`data-v-81522bab`]]);export{te as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./rolldown-runtime-C0FnF6B9.js";import{Dn as e,En as t,F as n,Fn as ee,G as te,I as r,J as i,K as ne,Kr as a,Nn as o,Nr as s,Nt as re,On as c,Qn as l,Rt as u,Tn as d,Tr as f,U as ie,Vt as ae,Xn as p,Zr as m,_ as h,bn as g,fr as _,ln as v,sr as y,tt as b,vn as x,wn as S,yr as C,zn as w}from"./element-plus-
|
|
1
|
+
import"./rolldown-runtime-C0FnF6B9.js";import{Dn as e,En as t,F as n,Fn as ee,G as te,I as r,J as i,K as ne,Kr as a,Nn as o,Nr as s,Nt as re,On as c,Qn as l,Rt as u,Tn as d,Tr as f,U as ie,Vt as ae,Xn as p,Zr as m,_ as h,bn as g,fr as _,ln as v,sr as y,tt as b,vn as x,wn as S,yr as C,zn as w}from"./element-plus-CNJIhPSG.js";import{n as T,t as E}from"./_plugin-vue_export-helper-BO6qa5C3.js";import{t as D}from"./SvgIcon-BPexLObf.js";import{t as O}from"./CommonDialog-9td95UkD.js";import{H as k,V as A}from"./index-BsHc5Rxd.js";w(),_(),s(),v();var j={key:0,class:`branch-info`},M={class:`branch-wrapper`},N={class:`branch-btn`},P={class:`branch-btn-name`},F={class:`branch-btn-caret`},I={class:`branch-popover-inner`},L={class:`branch-search`},R={class:`branch-list`},z=[`onClick`],B={key:1,class:`branch-item-check-placeholder`},oe={class:`branch-item-name`},V={key:0,class:`branch-empty`},H={class:`branch-popover-footer`},U={class:`create-branch-content`},W={class:`form-label`},G={class:`form-label`},K={class:`dialog-footer`},q={class:`footer-actions`},se=[`disabled`],J=E(ee({__name:`BranchSelector`,emits:[`branchChanged`],setup(ee,{emit:s}){let _=A(),v=s,w=C(!1),E=C(``),J=S(()=>{let e=E.value.trim().toLowerCase();return e?_.allBranches.filter(t=>t.toLowerCase().includes(e)):_.allBranches});async function ce(e){if(e===_.currentBranch){w.value=!1;return}w.value=!1,await _.changeBranch(e)&&(v(`branchChanged`),_.refreshLog())}let Y=C(!1),X=C(``),Z=C(``);function le(){w.value=!1,Z.value=_.currentBranch,Y.value=!0}async function Q(){await _.createBranch(X.value,Z.value)&&(Y.value=!1,X.value=``,v(`branchChanged`))}let $=C(!1);async function ue(){if(!$.value){$.value=!0;try{await Promise.all([_.getCurrentBranch(!0),_.getBranchStatus(!0),_.getAllBranches()]),v(`branchChanged`),_.refreshLog()}finally{$.value=!1}}}return(ee,s)=>{let v=i,S=ie,C=h,A=ne,de=n,fe=r,pe=te;return f(_).currentBranch?(p(),c(`div`,j,[d(`div`,M,[o(C,{visible:w.value,"onUpdate:visible":s[1]||=e=>w.value=e,placement:`top-start`,width:260,trigger:`click`,"popper-class":`branch-popover`,"show-arrow":!1,onShow:s[2]||=e=>E.value=``},{reference:y(()=>[d(`button`,N,[o(D,{"icon-class":`git-branch`,"class-name":`branch-btn-icon`}),d(`span`,P,m(f(_).currentBranch),1),d(`span`,F,[o(v,null,{default:y(()=>[...s[7]||=[d(`svg`,{viewBox:`0 0 1024 1024`,xmlns:`http://www.w3.org/2000/svg`},[d(`path`,{fill:`currentColor`,d:`M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.776a29.12 29.12 0 0 0 0-41.6 30.592 30.592 0 0 0-42.752 0z`})],-1)]]),_:1})])])]),default:y(()=>[d(`div`,I,[d(`div`,L,[o(S,{modelValue:E.value,"onUpdate:modelValue":s[0]||=e=>E.value=e,placeholder:f(T)(`@F13B4:搜索或签出分支`),size:`small`,clearable:``,autofocus:``},null,8,[`modelValue`,`placeholder`])]),d(`div`,R,[(p(!0),c(g,null,l(J.value,e=>(p(),c(`div`,{key:e,class:a([`branch-item`,{"is-active":e===f(_).currentBranch}]),onClick:t=>ce(e)},[e===f(_).currentBranch?(p(),t(v,{key:0,class:`branch-item-check`},{default:y(()=>[o(f(b))]),_:1})):(p(),c(`span`,B)),o(D,{"icon-class":`git-branch`,"class-name":`branch-item-icon`}),d(`span`,oe,m(e),1)],10,z))),128)),J.value.length===0?(p(),c(`div`,V,m(f(T)(`@F13B4:没有匹配的分支`)),1)):e(``,!0)]),d(`div`,H,[d(`button`,{class:`branch-create-btn`,onClick:le},[o(v,null,{default:y(()=>[o(f(u))]),_:1}),d(`span`,null,m(f(T)(`@F13B4:创建新分支`)),1)])])])]),_:1},8,[`visible`]),o(k,{tooltip:f(T)(`@CMDCON:刷新`),onClick:ue},{default:y(()=>[o(v,{class:a({"is-loading":$.value})},{default:y(()=>[o(f(ae))]),_:1},8,[`class`])]),_:1},8,[`tooltip`])]),o(O,{modelValue:Y.value,"onUpdate:modelValue":s[6]||=e=>Y.value=e,title:f(T)(`@F13B4:创建新分支`),size:`small`,"destroy-on-close":!0,"append-to-body":!0,"custom-class":`create-branch-dialog`},{footer:y(()=>[d(`div`,K,[d(`div`,q,[d(`button`,{type:`button`,class:`dialog-cancel-btn`,onClick:s[5]||=e=>Y.value=!1},m(f(T)(`@F13B4:取消`)),1),d(`button`,{type:`button`,class:`dialog-confirm-btn`,onClick:Q,disabled:f(_).isCreatingBranch},[f(_).isCreatingBranch?(p(),t(v,{key:1,class:`is-loading`},{default:y(()=>[...s[8]||=[d(`svg`,{viewBox:`0 0 1024 1024`,xmlns:`http://www.w3.org/2000/svg`},[d(`path`,{fill:`currentColor`,d:`M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32zm0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32zm448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32zm-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32z`})],-1)]]),_:1})):(p(),t(v,{key:0},{default:y(()=>[o(f(b))]),_:1})),d(`span`,null,m(f(T)(`@F13B4:创建`)),1)],8,se)])])]),default:y(()=>[d(`div`,U,[o(pe,{model:{newBranchName:X.value,selectedBaseBranch:Z.value},"label-position":`top`},{default:y(()=>[o(A,null,{label:y(()=>[d(`div`,W,[o(v,{class:`label-icon`},{default:y(()=>[o(f(u))]),_:1}),d(`span`,null,m(f(T)(`@F13B4:新分支名称`)),1)])]),default:y(()=>[o(S,{modelValue:X.value,"onUpdate:modelValue":s[3]||=e=>X.value=e,placeholder:f(T)(`@F13B4:请输入新分支名称`),class:`modern-input`,size:`large`,onKeyup:x(Q,[`enter`])},null,8,[`modelValue`,`placeholder`])]),_:1}),o(A,null,{label:y(()=>[d(`div`,G,[o(v,{class:`label-icon`},{default:y(()=>[o(f(re))]),_:1}),d(`span`,null,m(f(T)(`@F13B4:基于分支`)),1)])]),default:y(()=>[o(fe,{modelValue:Z.value,"onUpdate:modelValue":s[4]||=e=>Z.value=e,placeholder:f(T)(`@F13B4:选择基础分支`),class:`modern-select`,size:`large`,style:{width:`100%`}},{default:y(()=>[(p(!0),c(g,null,l(f(_).allBranches,e=>(p(),t(de,{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1})]),_:1},8,[`model`])])]),_:1},8,[`modelValue`,`title`])])):e(``,!0)}}}),[[`__scopeId`,`data-v-407da320`]]);export{J as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"./rolldown-runtime-C0FnF6B9.js";import{At as e,Dn as t,En as n,F as r,Fn as i,I as a,J as o,Jn as s,Jr as c,Kr as l,Nn as u,Nr as d,On as f,Qn as p,Sn as m,Tn as h,Tr as g,U as ee,Un as _,V as te,W as v,Xn as y,Y as ne,Zr as b,_n as re,_r as ie,ar as x,bn as ae,cr as oe,fr as S,ht as C,i as w,ln as T,q as se,sn as E,sr as D,wn as O,yn as k,yr as A,z as ce,zn as j}from"./element-plus-DAeQkmsV.js";import{n as M,t as N}from"./_plugin-vue_export-helper-BXpA-5RR.js";import{t as le}from"./SvgIcon-_bACg8fN.js";import{r as ue,t as de}from"./configStore-BpKN8VOg.js";import{D as fe,H as pe,V as me,c as P,l as F,o as he,s as I,u as L,z as R}from"./index-DDofdm66.js";j(),d(),T();var z={class:`loading-container`},B={class:`loading-text`},V={key:0,class:`loading-progress`},H=i({__name:`GlobalLoading`,props:{visible:{type:Boolean,default:!1},text:{default:M(`@2AEBA:加载中...`)},showProgress:{type:Boolean,default:!1},progress:{default:0},mock:{type:Boolean,default:!1}},setup(e){return(r,i)=>(y(),n(m,{to:`body`},[u(E,{name:`loading-fade`},{default:D(()=>[e.visible||e.mock?(y(),f(`div`,{key:0,class:`global-loading-overlay`,onClick:i[0]||=k(()=>{},[`stop`])},[h(`div`,z,[i[1]||=h(`div`,{class:`loading-spinner`},[h(`div`,{class:`spinner-ring`}),h(`div`,{class:`spinner-ring`}),h(`div`,{class:`spinner-ring`})],-1),h(`div`,B,b(e.text),1),e.showProgress||e.mock?(y(),f(`div`,V,[h(`div`,{class:l([`progress-bar`,{"is-mock":e.mock&&!e.showProgress}]),style:c(e.showProgress?{width:e.progress+`%`}:void 0)},null,6)])):t(``,!0)])])):t(``,!0)]),_:1})]))}}),ge=N(H,[[`__scopeId`,`data-v-f4fe1f34`]]);j(),d(),T();var U={class:`success-container`},W={class:`success-text`},G={key:0,class:`success-description`},K=i({__name:`SuccessModal`,props:{visible:{type:Boolean,default:!1},text:{default:M(`@71545:操作成功!`)},description:{default:``}},setup(e){return(r,i)=>(y(),n(m,{to:`body`},[u(E,{name:`success-fade`},{default:D(()=>[e.visible?(y(),f(`div`,{key:0,class:`success-overlay`,onClick:i[0]||=k(()=>{},[`stop`])},[h(`div`,U,[i[1]||=h(`div`,{class:`success-icon`},[h(`svg`,{viewBox:`0 0 52 52`,class:`success-svg`},[h(`circle`,{class:`success-circle`,cx:`26`,cy:`26`,r:`25`,fill:`none`}),h(`path`,{class:`success-check`,fill:`none`,d:`m14.1 27.2l7.1 7.2 16.7-16.8`})])],-1),h(`div`,W,b(e.text),1),e.description?(y(),f(`div`,G,b(e.description),1)):t(``,!0)])])):t(``,!0)]),_:1})]))}}),_e=N(K,[[`__scopeId`,`data-v-3e82b431`]]);S();var q=ie({visible:!1,text:M(`@F2A3A:加载中...`),showProgress:!1,progress:0});function ve(){return{loadingState:q,show:e=>{q.visible=!0,q.text=e?.text||M(`@F2A3A:加载中...`),q.showProgress=e?.showProgress||!1,q.progress=e?.progress||0},hide:()=>{q.visible=!1},updateProgress:e=>{q.progress=Math.max(0,Math.min(100,e))},updateText:e=>{q.text=e},setText:e=>{q.visible&&(q.text=e)}}}S();var J=ie({visible:!1,text:M(`@B8591:操作成功!`),description:``});function ye(){let e=e=>{J.visible=!0,J.text=e?.text||M(`@B8591:操作成功!`),J.description=e?.description||``;let n=e?.duration||2e3;setTimeout(()=>{t()},n)},t=()=>{J.visible=!1};return{successState:J,show:e,hide:t}}j(),S(),d();var Y={class:`one-commit-content`},X={class:`one-commit-text`},Z={class:`one-commit-title`},be={key:0,class:`one-commit-desc`},Q=N(i({__name:`QuickCommitButton`,props:{from:{default:`form`},hasUserCommitMessage:{type:Boolean,default:!1},finalCommitMessage:{default:``},skipHooks:{type:Boolean,default:!1}},emits:[`beforeCommit`,`afterCommit`,`clearFields`],setup(e,{expose:n,emit:r}){let i=me(),a=de(),s=e,c=r,d=O(()=>i.fileList.some(e=>!R(e.path,a.lockedFiles))),p=O(()=>i.isSelectionMode&&i.selectedFiles.size>0&&i.selectedUnstagedPaths.length>0),m=O(()=>i.hasConflictedFiles?!0:i.isSelectionMode?!p.value||!s.hasUserCommitMessage:!d.value||!s.hasUserCommitMessage),ee=O(()=>i.isAddingFiles||i.isCommiting),_=O(()=>i.hasConflictedFiles?M(`@2E184:存在冲突文件,请先解决冲突`):i.isSelectionMode?i.selectedFiles.size===0?M(`@2E184:请先勾选要提交的文件`):i.selectedUnstagedPaths.length===0?M(`@2E184:所选文件无需暂存或被锁定`):s.hasUserCommitMessage?M(`@2E184:一键完成:仅暂存所选文件 → 提交`):M(`@2E184:请输入提交信息`):d.value?s.hasUserCommitMessage?M(`@2E184:一键完成:暂存所有更改 → 提交`):M(`@2E184:请输入提交信息`):M(`@2E184:没有需要提交的更改`)),te=O(()=>i.isSelectionMode&&p.value?M(`@2E184:一键提交所选`):M(`@2E184:一键提交`)),ne=O(()=>s.from===`form`?i.isSelectionMode&&p.value?M(`@2E184:暂存所选 + 提交`):M(`@2E184:暂存 + 提交`):``);async function re(){c(`beforeCommit`);try{let e=await i.stageSelectedAndCommit(s.finalCommitMessage,s.skipHooks);e&&c(`clearFields`),c(`afterCommit`,e)}catch(e){console.error(`一键提交失败:`,e),c(`afterCommit`,!1)}}return n({triggerQuickCommit:re}),(n,r)=>{let i=o,a=ce;return y(),f(`div`,null,[u(g(v),{content:_.value,placement:`top`,"show-after":200},{default:D(()=>[u(a,{type:`primary`,onClick:re,loading:ee.value,disabled:m.value,class:l([e.from,`one-commit-button`])},{default:D(()=>[h(`div`,Y,[u(i,{class:`one-commit-icon`},{default:D(()=>[u(g(C))]),_:1}),h(`div`,X,[h(`span`,Z,b(te.value),1),e.from===`form`?(y(),f(`span`,be,b(ne.value),1)):t(``,!0)])])]),_:1},8,[`loading`,`disabled`,`class`])]),_:1},8,[`content`])])}}}),[[`__scopeId`,`data-v-7621b470`]]);j(),d(),S();var xe={class:`one-ai-push`},$={class:`one-ai-push-content`},Se={class:`one-ai-push-text`},Ce={class:`one-ai-push-title`},we={key:0,class:`one-ai-push-desc`},Te=N(i({__name:`AiQuickPushButton`,props:{from:{default:`form`},generating:{type:Boolean,default:!1}},emits:[`trigger`],setup(e,{emit:n}){let r=me(),i=de(),a=e,o=n,s=O(()=>r.fileList.some(e=>!R(e.path,i.lockedFiles))),c=O(()=>r.isSelectionMode&&r.selectedFiles.size>0&&r.selectedUnstagedPaths.length>0),d=O(()=>!r.isSelectionMode&&!s.value&&r.branchAhead>0),p=O(()=>r.hasConflictedFiles||!r.hasUpstream?!0:r.isSelectionMode?!c.value:!s.value&&r.branchAhead===0),m=O(()=>a.generating||r.isAddingFiles||r.isCommiting||r.isPushing),ee=O(()=>r.hasConflictedFiles?M(`@2E184:存在冲突文件,请先解决冲突`):r.hasUpstream?a.generating?M(`@2E184:AI 正在生成提交信息…`):r.isSelectionMode?c.value?M(`@2E184:一键完成:AI 生成提交信息 → 仅暂存所选文件 → 提交 → 推送`):M(`@2E184:请先勾选要推送的文件`):!s.value&&r.branchAhead===0?M(`@2E184:没有需要提交或推送的更改`):s.value?M(`@2E184:一键完成:AI 生成提交信息 → 暂存所有更改 → 提交 → 推送`):M(`@2E184:本地已提交,AI 将直接推送到远程仓库`):M(`@2E184:当前分支没有上游分支`)),_=O(()=>a.generating?M(`@2E184:AI 正在生成提交信息…`):r.isSelectionMode&&c.value?M(`@2E184:AI 提交并推送所选`):M(`@2E184:AI 提交并推送`)),te=O(()=>a.from!==`form`||a.generating?``:d.value?M(`@2E184:本地已提交,直接推送`):M(`@2E184:AI 生成信息 + 推送`));function ne(){p.value||m.value||o(`trigger`)}return(n,r)=>{let i=ce;return y(),f(`div`,xe,[u(g(v),{content:ee.value,placement:`top`,"show-after":200},{default:D(()=>[u(i,{type:`primary`,onClick:ne,loading:m.value,disabled:p.value,class:l([e.from,`one-ai-push-button`])},{default:D(()=>[h(`div`,$,[u(le,{class:`one-ai-push-icon`,"icon-class":`ai-commit`,style:{color:`#fff`}}),h(`div`,Se,[h(`span`,Ce,b(_.value),1),e.from===`form`?(y(),f(`span`,we,b(te.value),1)):t(``,!0)])])]),_:1},8,[`loading`,`disabled`,`class`])]),_:1},8,[`content`])])}}}),[[`__scopeId`,`data-v-8a2a3d74`]]);j(),S();var Ee={class:`form-bottom-actions`},De={class:`actions-flex-container`},Oe={class:`left-actions`},ke={class:`button-grid`},Ae={class:`right-actions`},je=N(i({__name:`GitActionButtons`,props:{hasUserCommitMessage:{type:Boolean,default:!1},finalCommitMessage:{default:``},skipHooks:{type:Boolean,default:!1},from:{default:`form`},aiGenerating:{type:Boolean,default:!1}},emits:[`afterCommit`,`afterPush`,`beforePush`,`pushStart`,`clearFields`,`aiQuickPush`],setup(e,{expose:t,emit:n}){let r=n,i=A(null);function a(e){r(`afterCommit`,e)}function o(e){r(`afterPush`,e)}function s(){r(`beforePush`)}function c(){r(`pushStart`)}function l(){r(`clearFields`)}function d(){r(`aiQuickPush`)}async function p(){return i.value?.triggerQuickPush()}return t({triggerQuickPush:p}),(t,n)=>(y(),f(`div`,Ee,[h(`div`,De,[h(`div`,Oe,[h(`div`,ke,[u(L,{onClick:()=>{},from:e.from},null,8,[`from`]),u(F,{"has-user-commit-message":e.hasUserCommitMessage,"final-commit-message":e.finalCommitMessage,"skip-hooks":e.skipHooks,onBeforeCommit:()=>{},onAfterCommit:a,onClick:()=>{},from:e.from},null,8,[`has-user-commit-message`,`final-commit-message`,`skip-hooks`,`from`]),u(P,{onBeforePush:()=>{},onAfterPush:o,onClick:()=>{},from:e.from},null,8,[`from`])])]),h(`div`,Ae,[u(Q,{from:e.from,"has-user-commit-message":e.hasUserCommitMessage,"final-commit-message":e.finalCommitMessage,"skip-hooks":e.skipHooks,onAfterCommit:a,onClearFields:l},null,8,[`from`,`has-user-commit-message`,`final-commit-message`,`skip-hooks`]),u(I,{ref_key:`quickPushRef`,ref:i,from:e.from,"has-user-commit-message":e.hasUserCommitMessage,"final-commit-message":e.finalCommitMessage,"skip-hooks":e.skipHooks,onBeforePush:s,onPushStart:c,onAfterPush:o,onClearFields:l},null,8,[`from`,`has-user-commit-message`,`final-commit-message`,`skip-hooks`]),u(Te,{from:e.from,generating:e.aiGenerating,onTrigger:d},null,8,[`from`,`generating`])])])]))}}),[[`__scopeId`,`data-v-de459eed`]]);j(),S(),d(),T();var Me={class:`card-header app-card-header`},Ne={class:`header-left`},Pe={class:`card-content app-card-content`},Fe={class:`layout-container`},Ie={key:0,class:`git-config-warning`},Le={key:0,class:`merge-in-progress-banner`},Re={class:`commit-section`},ze={key:0,class:`commit-form`},Be={class:`description-container`},Ve={key:1,class:`standard-commit-form`},He={class:`standard-commit-header`},Ue={class:`type-scope-container`},We={class:`scope-wrapper`},Ge={class:`description-container description-inline`},Ke=[`aria-expanded`],qe={class:`advanced-fields`},Je={key:0,class:`status-updating-indicator`},Ye={key:0,class:`status-updating-indicator`},Xe=N(i({__name:`CommitForm`,setup(i){let c=A(!1),d=A(!1);async function m(){let e=S.isSelectionMode&&S.selectedFiles.size>0?[...S.selectedFiles]:[],t=ue(),n=await(await fetch(`/api/config/generate-commit-message`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({selectedPaths:e,locale:t.currentLocale})})).json();if(!n.success){let e=n.code,t=n.error||M(`@76872:AI生成失败`),r=e?{TIMEOUT:`@76872:AI生成超时,请重试或检查模型响应速度`,NO_MODEL:`@76872:未配置AI模型,请先在通用设置中添加模型`,NO_JSON:`@76872:AI未返回有效结果,请重试`,PARSE_FAILED:`@76872:AI返回格式无法解析,请重试`,GENERATE_FAILED:`@76872:AI生成失败`,HTTP_ERR:`@76872:AI生成失败`}[e]:null;return w.error(r?M(r):t),!1}let r=[`feat`,`fix`,`docs`,`style`,`refactor`,`test`,`chore`];if(I.value)n.type&&r.includes(n.type)&&(L.value=n.type),n.scope!==void 0&&(z.value=n.scope),n.description&&(B.value=n.description);else{let e=n.type&&n.description?n.scope?`${n.type}(${n.scope}): ${n.description}`:`${n.type}: ${n.description}`:n.description||``;e&&(T.value=e)}return!0}async function v(){if(!c.value){c.value=!0;try{if(!await m())return;w.success(M(`@76872:AI已生成提交信息`))}catch(e){w.error(`${M(`@76872:AI生成失败`)}: ${e.message}`)}finally{c.value=!1}}}async function ie(){if(!d.value){d.value=!0;try{let e=S.isSelectionMode&&S.selectedFiles.size>0,t=S.fileList.some(e=>!R(e.path,C.lockedFiles));if(e||t){if(!await m())return;if(await _(),!$.value){w.error(M(`@76872:AI生成失败`));return}}await X.value?.triggerQuickPush?.()}catch(e){console.error(`AI 提交并推送失败:`,e),w.error(`${M(`@76872:AI生成失败`)}: ${e.message}`)}finally{d.value=!1}}}let S=me(),C=de(),T=A(``),{loadingState:k,show:ce,hide:j,setText:N}=ve(),{successState:le}=ye(),P=A(!1),F=A(``),I=O({get:()=>C.isStandardCommit,set:e=>{C.isStandardCommit=e}}),L=A(`feat`),z=A(``),B=A(``),V=A(``),H=A(``),U=A([]),W=A(!1),G=A([]),K=A(!1),q=A(!1),J=O({get:()=>C.skipHooks,set:e=>{C.skipHooks=e}}),Y=O({get:()=>C.autoQuickPushOnEnter,set:e=>{C.autoQuickPushOnEnter=e}}),X=A(null),Z=A(!1),be=O(()=>[{value:`feat`,label:`feat: ${M(`@76872:新功能`)}`},{value:`fix`,label:`fix: ${M(`@76872:修复bug`)}`},{value:`docs`,label:`docs: ${M(`@76872:文档修改`)}`},{value:`style`,label:`style: ${M(`@76872:样式修改`)}`},{value:`refactor`,label:`refactor: ${M(`@76872:代码重构`)}`},{value:`test`,label:`test: ${M(`@76872:测试代码`)}`},{value:`chore`,label:`chore: ${M(`@76872:构建/工具修改`)}`}]),Q=A([]),xe=O(()=>{if(!I.value)return T.value||F.value;let e=`${L.value||``}`;return z.value&&(e+=`(${z.value})`),e+=`: ${B.value}`,V.value&&(e+=`\n\n${V.value}`),H.value&&(e+=`\n\n${H.value}`),e}),$=O(()=>I.value?(S.isMergeInProgress||(L.value||``).trim()!==``)&&(B.value||``).trim()!==``:T.value.trim()!==``),Se=O(()=>S.hasConflictedFiles?!0:S.isMergeInProgress?!$.value:!S.fileList.some(e=>!R(e.path,C.lockedFiles))||!$.value),Ce=O(()=>{let e=`${M(`@76872:输入提交信息 (默认: `)}${F.value})`;return Y.value?`${e}${M(`@76872:(按回车一键推送)`)}`:e}),we=O(()=>{let e=M(`@76872:简短描述(必填)`);return Y.value?M(`@76872:简短描述(必填,按回车一键推送)`):e}),Te=O(()=>{let e=`git commit -m "${xe.value}"`;return J.value&&(e+=` --no-verify`),e});function Ee(){let e=C.config;e&&(F.value=e.defaultCommitMessage||``,e.descriptionTemplates&&Array.isArray(e.descriptionTemplates)&&(U.value=e.descriptionTemplates),e.scopeTemplates&&Array.isArray(e.scopeTemplates)&&(G.value=e.scopeTemplates),e.messageTemplates&&Array.isArray(e.messageTemplates)&&(Q.value=e.messageTemplates))}function De(e){B.value=e,W.value=!1}function Oe(e){z.value=e,K.value=!1}function ke(){W.value=!0}function Ae(){K.value=!0}function Xe(){T.value=``,B.value=``,V.value=``,H.value=``,L.value=`feat`,C.autoSetDefaultMessage&&C.defaultCommitMessage&&(I.value?B.value=C.defaultCommitMessage:T.value=C.defaultCommitMessage)}function Ze(){ce({text:M(`@76872:正在暂存文件…`),showProgress:!1})}function Qe(){j()}function $e(e){if(j(),e){P.value=!0;try{setTimeout(async()=>{try{console.log(M(`@76872:推送成功,状态已更新`))}catch(e){console.error(`一键推送后处理失败:`,e)}finally{P.value=!1}},1e3)}catch(e){console.error(`一键推送后处理失败:`,e),P.value=!1}}}function et(e){T.value=e,q.value=!1}async function tt(e){if(!Y.value||!$.value)return;let t=S.fileList.some(e=>!R(e.path,C.lockedFiles)),n=S.hasConflictedFiles;if(t&&$.value&&S.hasUpstream&&!n&&e.key===`Enter`&&!e.shiftKey){e.preventDefault();try{await X.value?.triggerQuickPush()}catch(e){console.error(`回车自动一键提交失败:`,e)}}}async function nt(e){try{await C.saveDefaultMessage(e)&&w.success(M(`@76872:默认提交信息设置成功`))}catch(e){w.error(`${M(`@76872:设置默认提交信息失败: `)}${e.message}`)}}x(()=>S.pendingMergeMessage,e=>{e&&(I.value?(L.value=``,B.value=e):T.value=e,S.pendingMergeMessage=``,w.info(M(`@76872:已自动填充合并提交信息`)))}),x(()=>S.isAddingFiles,e=>{e&&k.visible&&N(M(`@76872:正在暂存文件…`))}),x(()=>S.isCommiting,e=>{e&&k.visible&&N(M(`@76872:正在提交更改...`))}),x(()=>S.isPushing,e=>{e&&k.visible&&j()}),s(async()=>{x(()=>C.config,Ee,{immediate:!0}),C.config||await C.loadConfig(),C.autoSetDefaultMessage&&C.defaultCommitMessage&&(I.value?B.value||=C.defaultCommitMessage:T.value||=C.defaultCommitMessage),S.pendingMergeMessage&&(I.value?(L.value=``,B.value=S.pendingMergeMessage):T.value=S.pendingMergeMessage,S.pendingMergeMessage=``,w.info(M(`@76872:已自动填充合并提交信息`)))});function rt(e,t){t([...e?U.value.filter(t=>t.toLowerCase().includes(e.toLowerCase())).map(e=>({value:e})):U.value.map(e=>({value:e})),{value:`⚙️ 管理模板…`,isSettings:!0}])}function it(e,t){t([...e?G.value.filter(t=>t.toLowerCase().includes(e.toLowerCase())).map(e=>({value:e})):G.value.map(e=>({value:e})),{value:`⚙️ 管理模板…`,isSettings:!0}])}function at(e){e.isSettings?(ke(),B.value=``):B.value=e.value}function ot(e){e.isSettings?(Ae(),z.value=``):z.value=e.value}function st(e,t){t([...e?Q.value.filter(t=>t.toLowerCase().includes(e.toLowerCase())).map(e=>({value:e})):Q.value.map(e=>({value:e})),{value:`⚙️ 管理模板…`,isSettings:!0}])}function ct(e){e.isSettings?(q.value=!0,T.value=``):T.value=e.value}return(i,s)=>{let m=se,_=te,x=o,C=r,w=a,O=ee;return y(),f(ae,null,[h(`div`,{class:l([`card app-card`,{"is-pushing":g(S).isPushing}])},[h(`div`,Me,[h(`div`,Ne,[g(S).userName!==``&&g(S).userEmail!==``?(y(),n(je,{key:0,ref_key:`gitActionButtonsRef`,ref:X,"has-user-commit-message":$.value,"final-commit-message":xe.value,"skip-hooks":J.value,"ai-generating":d.value,onAfterCommit:s[0]||=e=>{e&&Xe()},onAfterPush:$e,onBeforePush:Ze,onPushStart:Qe,onClearFields:Xe,onAiQuickPush:ie},null,8,[`has-user-commit-message`,`final-commit-message`,`skip-hooks`,`ai-generating`])):t(``,!0)])]),h(`div`,Pe,[h(`div`,Fe,[g(S).userName===``||g(S).userEmail===``?(y(),f(`div`,Ie,[u(m,{title:g(M)(`@76872:Git用户信息未配置`),type:`warning`,closable:!1,"show-icon":``},{default:D(()=>[h(`p`,null,b(g(M)(`@76872:您需要配置Git用户名和邮箱才能提交代码。请使用以下命令配置:`)),1),s[11]||=h(`pre`,{class:`config-command`},`git config --global user.name "Your Name"
|
|
1
|
+
import"./rolldown-runtime-C0FnF6B9.js";import{At as e,Dn as t,En as n,F as r,Fn as i,I as a,J as o,Jn as s,Jr as c,Kr as l,Nn as u,Nr as d,On as f,Qn as p,Sn as m,Tn as h,Tr as g,U as ee,Un as _,V as te,W as v,Xn as y,Y as ne,Zr as b,_n as re,_r as ie,ar as x,bn as ae,cr as oe,fr as S,ht as C,i as w,ln as T,q as se,sn as E,sr as D,wn as O,yn as k,yr as A,z as ce,zn as j}from"./element-plus-CNJIhPSG.js";import{n as M,t as N}from"./_plugin-vue_export-helper-BO6qa5C3.js";import{t as le}from"./SvgIcon-BPexLObf.js";import{r as ue,t as de}from"./configStore-D_CFFOs9.js";import{D as fe,H as pe,V as me,c as P,l as F,o as he,s as I,u as L,z as R}from"./index-BsHc5Rxd.js";j(),d(),T();var z={class:`loading-container`},B={class:`loading-text`},V={key:0,class:`loading-progress`},H=i({__name:`GlobalLoading`,props:{visible:{type:Boolean,default:!1},text:{default:M(`@2AEBA:加载中...`)},showProgress:{type:Boolean,default:!1},progress:{default:0},mock:{type:Boolean,default:!1}},setup(e){return(r,i)=>(y(),n(m,{to:`body`},[u(E,{name:`loading-fade`},{default:D(()=>[e.visible||e.mock?(y(),f(`div`,{key:0,class:`global-loading-overlay`,onClick:i[0]||=k(()=>{},[`stop`])},[h(`div`,z,[i[1]||=h(`div`,{class:`loading-spinner`},[h(`div`,{class:`spinner-ring`}),h(`div`,{class:`spinner-ring`}),h(`div`,{class:`spinner-ring`})],-1),h(`div`,B,b(e.text),1),e.showProgress||e.mock?(y(),f(`div`,V,[h(`div`,{class:l([`progress-bar`,{"is-mock":e.mock&&!e.showProgress}]),style:c(e.showProgress?{width:e.progress+`%`}:void 0)},null,6)])):t(``,!0)])])):t(``,!0)]),_:1})]))}}),ge=N(H,[[`__scopeId`,`data-v-f4fe1f34`]]);j(),d(),T();var U={class:`success-container`},W={class:`success-text`},G={key:0,class:`success-description`},K=i({__name:`SuccessModal`,props:{visible:{type:Boolean,default:!1},text:{default:M(`@71545:操作成功!`)},description:{default:``}},setup(e){return(r,i)=>(y(),n(m,{to:`body`},[u(E,{name:`success-fade`},{default:D(()=>[e.visible?(y(),f(`div`,{key:0,class:`success-overlay`,onClick:i[0]||=k(()=>{},[`stop`])},[h(`div`,U,[i[1]||=h(`div`,{class:`success-icon`},[h(`svg`,{viewBox:`0 0 52 52`,class:`success-svg`},[h(`circle`,{class:`success-circle`,cx:`26`,cy:`26`,r:`25`,fill:`none`}),h(`path`,{class:`success-check`,fill:`none`,d:`m14.1 27.2l7.1 7.2 16.7-16.8`})])],-1),h(`div`,W,b(e.text),1),e.description?(y(),f(`div`,G,b(e.description),1)):t(``,!0)])])):t(``,!0)]),_:1})]))}}),_e=N(K,[[`__scopeId`,`data-v-3e82b431`]]);S();var q=ie({visible:!1,text:M(`@F2A3A:加载中...`),showProgress:!1,progress:0});function ve(){return{loadingState:q,show:e=>{q.visible=!0,q.text=e?.text||M(`@F2A3A:加载中...`),q.showProgress=e?.showProgress||!1,q.progress=e?.progress||0},hide:()=>{q.visible=!1},updateProgress:e=>{q.progress=Math.max(0,Math.min(100,e))},updateText:e=>{q.text=e},setText:e=>{q.visible&&(q.text=e)}}}S();var J=ie({visible:!1,text:M(`@B8591:操作成功!`),description:``});function ye(){let e=e=>{J.visible=!0,J.text=e?.text||M(`@B8591:操作成功!`),J.description=e?.description||``;let n=e?.duration||2e3;setTimeout(()=>{t()},n)},t=()=>{J.visible=!1};return{successState:J,show:e,hide:t}}j(),S(),d();var Y={class:`one-commit-content`},X={class:`one-commit-text`},Z={class:`one-commit-title`},be={key:0,class:`one-commit-desc`},Q=N(i({__name:`QuickCommitButton`,props:{from:{default:`form`},hasUserCommitMessage:{type:Boolean,default:!1},finalCommitMessage:{default:``},skipHooks:{type:Boolean,default:!1}},emits:[`beforeCommit`,`afterCommit`,`clearFields`],setup(e,{expose:n,emit:r}){let i=me(),a=de(),s=e,c=r,d=O(()=>i.fileList.some(e=>!R(e.path,a.lockedFiles))),p=O(()=>i.isSelectionMode&&i.selectedFiles.size>0&&i.selectedUnstagedPaths.length>0),m=O(()=>i.hasConflictedFiles?!0:i.isSelectionMode?!p.value||!s.hasUserCommitMessage:!d.value||!s.hasUserCommitMessage),ee=O(()=>i.isAddingFiles||i.isCommiting),_=O(()=>i.hasConflictedFiles?M(`@2E184:存在冲突文件,请先解决冲突`):i.isSelectionMode?i.selectedFiles.size===0?M(`@2E184:请先勾选要提交的文件`):i.selectedUnstagedPaths.length===0?M(`@2E184:所选文件无需暂存或被锁定`):s.hasUserCommitMessage?M(`@2E184:一键完成:仅暂存所选文件 → 提交`):M(`@2E184:请输入提交信息`):d.value?s.hasUserCommitMessage?M(`@2E184:一键完成:暂存所有更改 → 提交`):M(`@2E184:请输入提交信息`):M(`@2E184:没有需要提交的更改`)),te=O(()=>i.isSelectionMode&&p.value?M(`@2E184:一键提交所选`):M(`@2E184:一键提交`)),ne=O(()=>s.from===`form`?i.isSelectionMode&&p.value?M(`@2E184:暂存所选 + 提交`):M(`@2E184:暂存 + 提交`):``);async function re(){c(`beforeCommit`);try{let e=await i.stageSelectedAndCommit(s.finalCommitMessage,s.skipHooks);e&&c(`clearFields`),c(`afterCommit`,e)}catch(e){console.error(`一键提交失败:`,e),c(`afterCommit`,!1)}}return n({triggerQuickCommit:re}),(n,r)=>{let i=o,a=ce;return y(),f(`div`,null,[u(g(v),{content:_.value,placement:`top`,"show-after":200},{default:D(()=>[u(a,{type:`primary`,onClick:re,loading:ee.value,disabled:m.value,class:l([e.from,`one-commit-button`])},{default:D(()=>[h(`div`,Y,[u(i,{class:`one-commit-icon`},{default:D(()=>[u(g(C))]),_:1}),h(`div`,X,[h(`span`,Z,b(te.value),1),e.from===`form`?(y(),f(`span`,be,b(ne.value),1)):t(``,!0)])])]),_:1},8,[`loading`,`disabled`,`class`])]),_:1},8,[`content`])])}}}),[[`__scopeId`,`data-v-7621b470`]]);j(),d(),S();var xe={class:`one-ai-push`},$={class:`one-ai-push-content`},Se={class:`one-ai-push-text`},Ce={class:`one-ai-push-title`},we={key:0,class:`one-ai-push-desc`},Te=N(i({__name:`AiQuickPushButton`,props:{from:{default:`form`},generating:{type:Boolean,default:!1}},emits:[`trigger`],setup(e,{emit:n}){let r=me(),i=de(),a=e,o=n,s=O(()=>r.fileList.some(e=>!R(e.path,i.lockedFiles))),c=O(()=>r.isSelectionMode&&r.selectedFiles.size>0&&r.selectedUnstagedPaths.length>0),d=O(()=>!r.isSelectionMode&&!s.value&&r.branchAhead>0),p=O(()=>r.hasConflictedFiles||!r.hasUpstream?!0:r.isSelectionMode?!c.value:!s.value&&r.branchAhead===0),m=O(()=>a.generating||r.isAddingFiles||r.isCommiting||r.isPushing),ee=O(()=>r.hasConflictedFiles?M(`@2E184:存在冲突文件,请先解决冲突`):r.hasUpstream?a.generating?M(`@2E184:AI 正在生成提交信息…`):r.isSelectionMode?c.value?M(`@2E184:一键完成:AI 生成提交信息 → 仅暂存所选文件 → 提交 → 推送`):M(`@2E184:请先勾选要推送的文件`):!s.value&&r.branchAhead===0?M(`@2E184:没有需要提交或推送的更改`):s.value?M(`@2E184:一键完成:AI 生成提交信息 → 暂存所有更改 → 提交 → 推送`):M(`@2E184:本地已提交,AI 将直接推送到远程仓库`):M(`@2E184:当前分支没有上游分支`)),_=O(()=>a.generating?M(`@2E184:AI 正在生成提交信息…`):r.isSelectionMode&&c.value?M(`@2E184:AI 提交并推送所选`):M(`@2E184:AI 提交并推送`)),te=O(()=>a.from!==`form`||a.generating?``:d.value?M(`@2E184:本地已提交,直接推送`):M(`@2E184:AI 生成信息 + 推送`));function ne(){p.value||m.value||o(`trigger`)}return(n,r)=>{let i=ce;return y(),f(`div`,xe,[u(g(v),{content:ee.value,placement:`top`,"show-after":200},{default:D(()=>[u(i,{type:`primary`,onClick:ne,loading:m.value,disabled:p.value,class:l([e.from,`one-ai-push-button`])},{default:D(()=>[h(`div`,$,[u(le,{class:`one-ai-push-icon`,"icon-class":`ai-commit`,style:{color:`#fff`}}),h(`div`,Se,[h(`span`,Ce,b(_.value),1),e.from===`form`?(y(),f(`span`,we,b(te.value),1)):t(``,!0)])])]),_:1},8,[`loading`,`disabled`,`class`])]),_:1},8,[`content`])])}}}),[[`__scopeId`,`data-v-8a2a3d74`]]);j(),S();var Ee={class:`form-bottom-actions`},De={class:`actions-flex-container`},Oe={class:`left-actions`},ke={class:`button-grid`},Ae={class:`right-actions`},je=N(i({__name:`GitActionButtons`,props:{hasUserCommitMessage:{type:Boolean,default:!1},finalCommitMessage:{default:``},skipHooks:{type:Boolean,default:!1},from:{default:`form`},aiGenerating:{type:Boolean,default:!1}},emits:[`afterCommit`,`afterPush`,`beforePush`,`pushStart`,`clearFields`,`aiQuickPush`],setup(e,{expose:t,emit:n}){let r=n,i=A(null);function a(e){r(`afterCommit`,e)}function o(e){r(`afterPush`,e)}function s(){r(`beforePush`)}function c(){r(`pushStart`)}function l(){r(`clearFields`)}function d(){r(`aiQuickPush`)}async function p(){return i.value?.triggerQuickPush()}return t({triggerQuickPush:p}),(t,n)=>(y(),f(`div`,Ee,[h(`div`,De,[h(`div`,Oe,[h(`div`,ke,[u(L,{onClick:()=>{},from:e.from},null,8,[`from`]),u(F,{"has-user-commit-message":e.hasUserCommitMessage,"final-commit-message":e.finalCommitMessage,"skip-hooks":e.skipHooks,onBeforeCommit:()=>{},onAfterCommit:a,onClick:()=>{},from:e.from},null,8,[`has-user-commit-message`,`final-commit-message`,`skip-hooks`,`from`]),u(P,{onBeforePush:()=>{},onAfterPush:o,onClick:()=>{},from:e.from},null,8,[`from`])])]),h(`div`,Ae,[u(Q,{from:e.from,"has-user-commit-message":e.hasUserCommitMessage,"final-commit-message":e.finalCommitMessage,"skip-hooks":e.skipHooks,onAfterCommit:a,onClearFields:l},null,8,[`from`,`has-user-commit-message`,`final-commit-message`,`skip-hooks`]),u(I,{ref_key:`quickPushRef`,ref:i,from:e.from,"has-user-commit-message":e.hasUserCommitMessage,"final-commit-message":e.finalCommitMessage,"skip-hooks":e.skipHooks,onBeforePush:s,onPushStart:c,onAfterPush:o,onClearFields:l},null,8,[`from`,`has-user-commit-message`,`final-commit-message`,`skip-hooks`]),u(Te,{from:e.from,generating:e.aiGenerating,onTrigger:d},null,8,[`from`,`generating`])])])]))}}),[[`__scopeId`,`data-v-de459eed`]]);j(),S(),d(),T();var Me={class:`card-header app-card-header`},Ne={class:`header-left`},Pe={class:`card-content app-card-content`},Fe={class:`layout-container`},Ie={key:0,class:`git-config-warning`},Le={key:0,class:`merge-in-progress-banner`},Re={class:`commit-section`},ze={key:0,class:`commit-form`},Be={class:`description-container`},Ve={key:1,class:`standard-commit-form`},He={class:`standard-commit-header`},Ue={class:`type-scope-container`},We={class:`scope-wrapper`},Ge={class:`description-container description-inline`},Ke=[`aria-expanded`],qe={class:`advanced-fields`},Je={key:0,class:`status-updating-indicator`},Ye={key:0,class:`status-updating-indicator`},Xe=N(i({__name:`CommitForm`,setup(i){let c=A(!1),d=A(!1);async function m(){let e=S.isSelectionMode&&S.selectedFiles.size>0?[...S.selectedFiles]:[],t=ue(),n=await(await fetch(`/api/config/generate-commit-message`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({selectedPaths:e,locale:t.currentLocale})})).json();if(!n.success){let e=n.code,t=n.error||M(`@76872:AI生成失败`),r=e?{TIMEOUT:`@76872:AI生成超时,请重试或检查模型响应速度`,NO_MODEL:`@76872:未配置AI模型,请先在通用设置中添加模型`,NO_JSON:`@76872:AI未返回有效结果,请重试`,PARSE_FAILED:`@76872:AI返回格式无法解析,请重试`,GENERATE_FAILED:`@76872:AI生成失败`,HTTP_ERR:`@76872:AI生成失败`}[e]:null;return w.error(r?M(r):t),!1}let r=[`feat`,`fix`,`docs`,`style`,`refactor`,`test`,`chore`];if(I.value)n.type&&r.includes(n.type)&&(L.value=n.type),n.scope!==void 0&&(z.value=n.scope),n.description&&(B.value=n.description);else{let e=n.type&&n.description?n.scope?`${n.type}(${n.scope}): ${n.description}`:`${n.type}: ${n.description}`:n.description||``;e&&(T.value=e)}return!0}async function v(){if(!c.value){c.value=!0;try{if(!await m())return;w.success(M(`@76872:AI已生成提交信息`))}catch(e){w.error(`${M(`@76872:AI生成失败`)}: ${e.message}`)}finally{c.value=!1}}}async function ie(){if(!d.value){d.value=!0;try{let e=S.isSelectionMode&&S.selectedFiles.size>0,t=S.fileList.some(e=>!R(e.path,C.lockedFiles));if(e||t){if(!await m())return;if(await _(),!$.value){w.error(M(`@76872:AI生成失败`));return}}await X.value?.triggerQuickPush?.()}catch(e){console.error(`AI 提交并推送失败:`,e),w.error(`${M(`@76872:AI生成失败`)}: ${e.message}`)}finally{d.value=!1}}}let S=me(),C=de(),T=A(``),{loadingState:k,show:ce,hide:j,setText:N}=ve(),{successState:le}=ye(),P=A(!1),F=A(``),I=O({get:()=>C.isStandardCommit,set:e=>{C.isStandardCommit=e}}),L=A(`feat`),z=A(``),B=A(``),V=A(``),H=A(``),U=A([]),W=A(!1),G=A([]),K=A(!1),q=A(!1),J=O({get:()=>C.skipHooks,set:e=>{C.skipHooks=e}}),Y=O({get:()=>C.autoQuickPushOnEnter,set:e=>{C.autoQuickPushOnEnter=e}}),X=A(null),Z=A(!1),be=O(()=>[{value:`feat`,label:`feat: ${M(`@76872:新功能`)}`},{value:`fix`,label:`fix: ${M(`@76872:修复bug`)}`},{value:`docs`,label:`docs: ${M(`@76872:文档修改`)}`},{value:`style`,label:`style: ${M(`@76872:样式修改`)}`},{value:`refactor`,label:`refactor: ${M(`@76872:代码重构`)}`},{value:`test`,label:`test: ${M(`@76872:测试代码`)}`},{value:`chore`,label:`chore: ${M(`@76872:构建/工具修改`)}`}]),Q=A([]),xe=O(()=>{if(!I.value)return T.value||F.value;let e=`${L.value||``}`;return z.value&&(e+=`(${z.value})`),e+=`: ${B.value}`,V.value&&(e+=`\n\n${V.value}`),H.value&&(e+=`\n\n${H.value}`),e}),$=O(()=>I.value?(S.isMergeInProgress||(L.value||``).trim()!==``)&&(B.value||``).trim()!==``:T.value.trim()!==``),Se=O(()=>S.hasConflictedFiles?!0:S.isMergeInProgress?!$.value:!S.fileList.some(e=>!R(e.path,C.lockedFiles))||!$.value),Ce=O(()=>{let e=`${M(`@76872:输入提交信息 (默认: `)}${F.value})`;return Y.value?`${e}${M(`@76872:(按回车一键推送)`)}`:e}),we=O(()=>{let e=M(`@76872:简短描述(必填)`);return Y.value?M(`@76872:简短描述(必填,按回车一键推送)`):e}),Te=O(()=>{let e=`git commit -m "${xe.value}"`;return J.value&&(e+=` --no-verify`),e});function Ee(){let e=C.config;e&&(F.value=e.defaultCommitMessage||``,e.descriptionTemplates&&Array.isArray(e.descriptionTemplates)&&(U.value=e.descriptionTemplates),e.scopeTemplates&&Array.isArray(e.scopeTemplates)&&(G.value=e.scopeTemplates),e.messageTemplates&&Array.isArray(e.messageTemplates)&&(Q.value=e.messageTemplates))}function De(e){B.value=e,W.value=!1}function Oe(e){z.value=e,K.value=!1}function ke(){W.value=!0}function Ae(){K.value=!0}function Xe(){T.value=``,B.value=``,V.value=``,H.value=``,L.value=`feat`,C.autoSetDefaultMessage&&C.defaultCommitMessage&&(I.value?B.value=C.defaultCommitMessage:T.value=C.defaultCommitMessage)}function Ze(){ce({text:M(`@76872:正在暂存文件…`),showProgress:!1})}function Qe(){j()}function $e(e){if(j(),e){P.value=!0;try{setTimeout(async()=>{try{console.log(M(`@76872:推送成功,状态已更新`))}catch(e){console.error(`一键推送后处理失败:`,e)}finally{P.value=!1}},1e3)}catch(e){console.error(`一键推送后处理失败:`,e),P.value=!1}}}function et(e){T.value=e,q.value=!1}async function tt(e){if(!Y.value||!$.value)return;let t=S.fileList.some(e=>!R(e.path,C.lockedFiles)),n=S.hasConflictedFiles;if(t&&$.value&&S.hasUpstream&&!n&&e.key===`Enter`&&!e.shiftKey){e.preventDefault();try{await X.value?.triggerQuickPush()}catch(e){console.error(`回车自动一键提交失败:`,e)}}}async function nt(e){try{await C.saveDefaultMessage(e)&&w.success(M(`@76872:默认提交信息设置成功`))}catch(e){w.error(`${M(`@76872:设置默认提交信息失败: `)}${e.message}`)}}x(()=>S.pendingMergeMessage,e=>{e&&(I.value?(L.value=``,B.value=e):T.value=e,S.pendingMergeMessage=``,w.info(M(`@76872:已自动填充合并提交信息`)))}),x(()=>S.isAddingFiles,e=>{e&&k.visible&&N(M(`@76872:正在暂存文件…`))}),x(()=>S.isCommiting,e=>{e&&k.visible&&N(M(`@76872:正在提交更改...`))}),x(()=>S.isPushing,e=>{e&&k.visible&&j()}),s(async()=>{x(()=>C.config,Ee,{immediate:!0}),C.config||await C.loadConfig(),C.autoSetDefaultMessage&&C.defaultCommitMessage&&(I.value?B.value||=C.defaultCommitMessage:T.value||=C.defaultCommitMessage),S.pendingMergeMessage&&(I.value?(L.value=``,B.value=S.pendingMergeMessage):T.value=S.pendingMergeMessage,S.pendingMergeMessage=``,w.info(M(`@76872:已自动填充合并提交信息`)))});function rt(e,t){t([...e?U.value.filter(t=>t.toLowerCase().includes(e.toLowerCase())).map(e=>({value:e})):U.value.map(e=>({value:e})),{value:`⚙️ 管理模板…`,isSettings:!0}])}function it(e,t){t([...e?G.value.filter(t=>t.toLowerCase().includes(e.toLowerCase())).map(e=>({value:e})):G.value.map(e=>({value:e})),{value:`⚙️ 管理模板…`,isSettings:!0}])}function at(e){e.isSettings?(ke(),B.value=``):B.value=e.value}function ot(e){e.isSettings?(Ae(),z.value=``):z.value=e.value}function st(e,t){t([...e?Q.value.filter(t=>t.toLowerCase().includes(e.toLowerCase())).map(e=>({value:e})):Q.value.map(e=>({value:e})),{value:`⚙️ 管理模板…`,isSettings:!0}])}function ct(e){e.isSettings?(q.value=!0,T.value=``):T.value=e.value}return(i,s)=>{let m=se,_=te,x=o,C=r,w=a,O=ee;return y(),f(ae,null,[h(`div`,{class:l([`card app-card`,{"is-pushing":g(S).isPushing}])},[h(`div`,Me,[h(`div`,Ne,[g(S).userName!==``&&g(S).userEmail!==``?(y(),n(je,{key:0,ref_key:`gitActionButtonsRef`,ref:X,"has-user-commit-message":$.value,"final-commit-message":xe.value,"skip-hooks":J.value,"ai-generating":d.value,onAfterCommit:s[0]||=e=>{e&&Xe()},onAfterPush:$e,onBeforePush:Ze,onPushStart:Qe,onClearFields:Xe,onAiQuickPush:ie},null,8,[`has-user-commit-message`,`final-commit-message`,`skip-hooks`,`ai-generating`])):t(``,!0)])]),h(`div`,Pe,[h(`div`,Fe,[g(S).userName===``||g(S).userEmail===``?(y(),f(`div`,Ie,[u(m,{title:g(M)(`@76872:Git用户信息未配置`),type:`warning`,closable:!1,"show-icon":``},{default:D(()=>[h(`p`,null,b(g(M)(`@76872:您需要配置Git用户名和邮箱才能提交代码。请使用以下命令配置:`)),1),s[11]||=h(`pre`,{class:`config-command`},`git config --global user.name "Your Name"
|
|
2
2
|
git config --global user.email "your.email@example.com"`,-1)]),_:1},8,[`title`])])):(y(),f(ae,{key:1},[g(S).isMergeInProgress?(y(),f(`div`,Le,[u(m,{title:g(M)(`@76872:合并进行中`),type:`warning`,closable:!1,"show-icon":``},{default:D(()=>[h(`span`,null,b(g(M)(`@76872:分支合并尚未完成,请输入提交信息后点击「提交」按钮完成合并。`)),1)]),_:1},8,[`title`])])):t(``,!0),h(`div`,Re,[I.value?(y(),f(`div`,Ve,[h(`div`,He,[h(`div`,Ue,[u(w,{modelValue:L.value,"onUpdate:modelValue":s[2]||=e=>L.value=e,placeholder:g(M)(`@76872:提交类型`),class:`type-select`,clearable:``},{default:D(()=>[(y(!0),f(ae,null,p(be.value,e=>(y(),n(C,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`]),h(`div`,We,[u(_,{modelValue:z.value,"onUpdate:modelValue":s[3]||=e=>z.value=e,"fetch-suggestions":it,placeholder:g(M)(`@76872:作用域(可选)`),class:`scope-input`,clearable:``,onSelect:ot},null,8,[`modelValue`,`placeholder`])]),h(`div`,Ge,[u(_,{modelValue:B.value,"onUpdate:modelValue":s[4]||=e=>B.value=e,"fetch-suggestions":rt,placeholder:we.value,class:`description-input`,clearable:``,onSelect:at,onKeydown:tt},{suffix:D(()=>[u(pe,{"custom-class":`ai-suffix-btn`,tooltip:g(M)(`@76872:AI生成提交信息`),"icon-class":c.value?``:`ai-commit`,size:`small`,disabled:c.value,onClick:v},{default:D(()=>[c.value?(y(),n(x,{key:0,class:`is-loading`},{default:D(()=>[u(g(e))]),_:1})):t(``,!0)]),_:1},8,[`tooltip`,`icon-class`,`disabled`])]),_:1},8,[`modelValue`,`placeholder`])])])]),h(`button`,{type:`button`,class:`advanced-options-toggle`,"aria-expanded":Z.value,onClick:s[5]||=e=>Z.value=!Z.value},[h(`span`,null,b(Z.value?g(M)(`@76872:收起`):g(M)(`@76872:正文及页脚`)),1),u(x,{class:l([`toggle-icon`,{"is-active":Z.value}])},{default:D(()=>[u(g(ne))]),_:1},8,[`class`])],8,Ke),oe(h(`div`,qe,[u(O,{modelValue:V.value,"onUpdate:modelValue":s[6]||=e=>V.value=e,type:`textarea`,rows:4,placeholder:g(M)(`@76872:正文(可选):详细描述本次提交的内容和原因`),class:`body-input`,clearable:``},null,8,[`modelValue`,`placeholder`]),u(O,{modelValue:H.value,"onUpdate:modelValue":s[7]||=e=>H.value=e,placeholder:g(M)(`@76872:页脚(可选):如 Closes #123`),class:`footer-input`,clearable:``},null,8,[`modelValue`,`placeholder`])],512),[[re,Z.value]])])):(y(),f(`div`,ze,[h(`div`,Be,[u(_,{modelValue:T.value,"onUpdate:modelValue":s[1]||=e=>T.value=e,"fetch-suggestions":st,placeholder:Ce.value,type:`textarea`,rows:3,resize:`none`,class:`commit-message-input`,onSelect:ct,onKeydown:tt},null,8,[`modelValue`,`placeholder`]),u(pe,{"custom-class":`ai-suffix-btn ai-suffix-btn--ta`,tooltip:g(M)(`@76872:AI生成提交信息`),"icon-class":c.value?``:`ai-commit`,size:`small`,disabled:c.value,onClick:v},{default:D(()=>[c.value?(y(),n(x,{key:0,class:`is-loading`},{default:D(()=>[u(g(e))]),_:1})):t(``,!0)]),_:1},8,[`tooltip`,`icon-class`,`disabled`])])])),Se.value?t(``,!0):(y(),n(fe,{key:2,command:Te.value,title:g(M)(`@76872:提交命令预览:`),placeholder:`git commit -m "<提交信息>"`},null,8,[`command`,`title`]))])],64))])])],2),u(he,{visible:W.value,"onUpdate:visible":s[8]||=e=>W.value=e,type:`description`,title:g(M)(`@76872:简短描述模板设置`),placeholder:g(M)(`@76872:输入新模板内容`),"edit-placeholder":g(M)(`@76872:编辑模板内容`),"empty-description":g(M)(`@76872:暂无保存的模板`),onUseTemplate:De},null,8,[`visible`,`title`,`placeholder`,`edit-placeholder`,`empty-description`]),u(he,{visible:K.value,"onUpdate:visible":s[9]||=e=>K.value=e,type:`scope`,title:g(M)(`@76872:作用域模板设置`),placeholder:g(M)(`@76872:输入新作用域模板`),"edit-placeholder":g(M)(`@76872:编辑作用域模板内容`),"empty-description":g(M)(`@76872:暂无保存的作用域`),onUseTemplate:Oe},null,8,[`visible`,`title`,`placeholder`,`edit-placeholder`,`empty-description`]),u(he,{visible:q.value,"onUpdate:visible":s[10]||=e=>q.value=e,type:`message`,title:g(M)(`@76872:默认提交信息设置`),placeholder:g(M)(`@76872:输入新模板内容`),"edit-placeholder":g(M)(`@76872:编辑模板内容`),"empty-description":g(M)(`@76872:暂无保存的模板`),"show-default-section":!0,"show-help-text":!0,onUseTemplate:et,onSetDefault:nt},null,8,[`visible`,`title`,`placeholder`,`edit-placeholder`,`empty-description`]),u(E,{name:`el-fade-in-linear`},{default:D(()=>[P.value?(y(),f(`div`,Je,[u(x,{class:`is-loading`},{default:D(()=>[u(g(e))]),_:1}),h(`span`,null,b(g(M)(`@76872:更新状态中...`)),1)])):t(``,!0)]),_:1}),u(ge,{visible:g(k).visible,text:g(k).text,"show-progress":g(k).showProgress,progress:g(k).progress},null,8,[`visible`,`text`,`show-progress`,`progress`]),u(_e,{visible:g(le).visible,text:g(le).text,description:g(le).description},null,8,[`visible`,`text`,`description`]),u(E,{name:`el-fade-in-linear`},{default:D(()=>[P.value?(y(),f(`div`,Ye,[u(x,{class:`is-loading`},{default:D(()=>[u(g(e))]),_:1}),h(`span`,null,b(g(M)(`@76872:更新状态中...`)),1)])):t(``,!0)]),_:1})],64)}}}),[[`__scopeId`,`data-v-3f8848af`]]);export{Xe as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./rolldown-runtime-C0FnF6B9.js";import{$n as e,An as t,Dn as n,E as r,En as i,Fn as a,Jr as o,Kr as s,Mn as c,Nn as l,Nr as u,Tn as d,Tr as f,Un as p,Xn as m,Zr as h,fr as g,rr as _,sr as v,wn as y,z as b,zn as x}from"./element-plus-
|
|
1
|
+
import"./rolldown-runtime-C0FnF6B9.js";import{$n as e,An as t,Dn as n,E as r,En as i,Fn as a,Jr as o,Kr as s,Mn as c,Nn as l,Nr as u,Tn as d,Tr as f,Un as p,Xn as m,Zr as h,fr as g,rr as _,sr as v,wn as y,z as b,zn as x}from"./element-plus-CNJIhPSG.js";import{n as S,t as C}from"./_plugin-vue_export-helper-BO6qa5C3.js";x(),g(),u();var w=[`id`],T={class:`common-dialog__footer`},E=a({__name:`CommonDialog`,props:{modelValue:{type:Boolean},title:{},size:{default:`medium`},type:{default:`default`},width:{},height:{},top:{default:`50px`},closeOnClickModal:{type:Boolean,default:!1},closeOnPressEscape:{type:Boolean,default:!0},destroyOnClose:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1},customClass:{},modalClass:{},appendToBody:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},zIndex:{},showClose:{type:Boolean,default:!0},heightMode:{default:`max`},heightOffset:{default:`100px`},showFooter:{type:Boolean,default:!1},confirmText:{default:S(`@803A9:确定`)},cancelText:{default:S(`@803A9:取消`)},showCancel:{type:Boolean,default:!0},confirmLoading:{type:Boolean,default:!1}},emits:[`update:modelValue`,`confirm`,`cancel`,`close`,`opened`,`closed`],setup(a,{emit:u}){let g=a,x=u,S=y(()=>{if(g.width)return g.width;switch(g.size){case`small`:return`30%`;case`medium`:return`50%`;case`large`:return`80%`;case`extra-large`:return`90%`;case`fullscreen`:return`100vw`;default:return`50%`}}),C=_(),E=null;function D(){x(`opened`),p(()=>{let e=document.querySelector(`.el-dialog__wrapper:not([style*="display: none"]) .el-dialog`);e&&(e.querySelector(`button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])`)||e).focus?.()})}function O(){x(`closed`),E&&typeof E.focus==`function`&&(p(()=>E?.focus()),E=null)}function k(e){e&&!g.modelValue&&(E=document.activeElement),x(`update:modelValue`,e)}let A=y(()=>g.size===`fullscreen`?`0`:g.top),j=y(()=>{let e=[];return g.customClass&&e.push(g.customClass),g.type===`flex`&&e.push(`common-dialog--flex`),g.type===`full-height`&&e.push(`common-dialog--full-height`),g.size===`fullscreen`&&e.push(`common-dialog--fullscreen`),e.join(` `)}),M=y(()=>{if(g.size===`fullscreen`)return{height:`100vh`,maxHeight:`100vh`};let e=`calc(100% - ${g.heightOffset})`;return g.heightMode===`fixed`?{height:e}:{maxHeight:e}});function N(){x(`update:modelValue`,!1),x(`close`)}function P(){x(`confirm`)}function F(){x(`cancel`),N()}return(u,p)=>{let g=b;return m(),i(f(r),{"model-value":a.modelValue,title:a.title,width:S.value,top:A.value,style:o(M.value),"z-index":a.zIndex,fullscreen:a.size===`fullscreen`,"close-on-click-modal":a.closeOnClickModal,"close-on-press-escape":a.closeOnPressEscape,"destroy-on-close":a.destroyOnClose,draggable:a.draggable,class:s(j.value),"show-close":a.showClose,"modal-class":a.modalClass,"data-dialog-shell":`common`,"append-to-body":a.appendToBody,"lock-scroll":a.lockScroll,"aria-modal":!0,"aria-labelledby":f(C),role:`dialog`,onClose:N,"onUpdate:modelValue":k,onOpened:D,onClosed:O},t({header:v(({titleClass:e})=>[d(`span`,{id:f(C),class:s([`el-dialog__title`,e]),role:`heading`,"aria-level":`2`},h(a.title),11,w)]),default:v(()=>[e(u.$slots,`default`,{},void 0,!0)]),_:2},[a.showFooter||u.$slots.footer?{name:`footer`,fn:v(()=>[e(u.$slots,`footer`,{},()=>[d(`div`,T,[a.showCancel?(m(),i(g,{key:0,type:`button`,onClick:F},{default:v(()=>[c(h(a.cancelText),1)]),_:1})):n(``,!0),l(g,{type:`primary`,loading:a.confirmLoading,onClick:P},{default:v(()=>[c(h(a.confirmText),1)]),_:1},8,[`loading`])])],!0)]),key:`0`}:void 0]),1032,[`model-value`,`title`,`width`,`top`,`style`,`z-index`,`fullscreen`,`close-on-click-modal`,`close-on-press-escape`,`destroy-on-close`,`draggable`,`class`,`show-close`,`modal-class`,`append-to-body`,`lock-scroll`,`aria-labelledby`])}}}),D=C(E,[[`__scopeId`,`data-v-6969f391`]]);export{D as t};
|
package/src/ui/public/assets/{CopySessionButton-DEFGS3YY.js → CopySessionButton-De46dtzF.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import"./rolldown-runtime-C0FnF6B9.js";import{C as e,Dn as t,En as n,Fn as r,J as i,Jn as a,Kn as o,Kr as s,Mn as c,Nn as l,Nr as u,On as d,Qn as f,S as p,Tn as m,Tr as h,Un as g,Xn as _,Y as ee,Zr as v,bn as te,fr as y,i as b,sr as x,tt as ne,w as S,wn as C,yr as w,zn as T}from"./element-plus-
|
|
1
|
+
import"./rolldown-runtime-C0FnF6B9.js";import{C as e,Dn as t,En as n,Fn as r,J as i,Jn as a,Kn as o,Kr as s,Mn as c,Nn as l,Nr as u,On as d,Qn as f,S as p,Tn as m,Tr as h,Un as g,Xn as _,Y as ee,Zr as v,bn as te,fr as y,i as b,sr as x,tt as ne,w as S,wn as C,yr as w,zn as T}from"./element-plus-CNJIhPSG.js";import{n as E,t as D}from"./_plugin-vue_export-helper-BO6qa5C3.js";import{t as O}from"./SvgIcon-BPexLObf.js";import{o as k}from"./configStore-D_CFFOs9.js";import{B as re,E as ie,m as A}from"./index-BsHc5Rxd.js";import{d as ae,f as j,m as M,n as oe,p as se}from"./agentConversations-mDAcOgXq.js";T(),y();function N(e,t=680){let n=w(0),r=null;function i(){let t=e.value;return t?(n.value=t.clientWidth,typeof ResizeObserver>`u`||(r=new ResizeObserver(e=>{let t=e[0]?.contentRect?.width;typeof t==`number`&&(n.value=t)}),r.observe(t),!0)):!1}return a(()=>{i()||g(()=>i())}),o(()=>{r?.disconnect(),r=null}),{width:n,narrow:C(()=>n.value>0&&n.value<t)}}T(),y(),u();var P={class:`agent-engine`},F=[`disabled`,`title`,`aria-label`],I={class:`agent-engine__name`},L={class:`agent-engine__item`},R={class:`agent-engine__item-name`},z={key:3,class:`agent-engine__item-missing`},B=D(r({__name:`AgentEngineSelector`,props:{engine:{},locked:{type:Boolean}},emits:[`select`],setup(r,{emit:a}){let o=r,c=a,u=re(),g=C(()=>se(o.engine)),y=C(()=>({gai:!0,claude:u.claudeAvailable,opencode:u.opencodeAvailable,codex:u.codexAvailable})),b=w(!1),T=w(null);function D(e){if(!o.locked){if(!y.value[e]){if(!M(e))return;T.value=e,b.value=!0;return}c(`select`,e)}}return(a,o)=>(_(),d(`div`,P,[l(h(p),{trigger:`click`,onCommand:D},{dropdown:x(()=>[l(h(S),null,{default:x(()=>[(_(!0),d(te,null,f(h(ae),a=>(_(),n(h(e),{key:a.id,command:a.id},{default:x(()=>[m(`span`,L,[h(M)(a.id)?(_(),n(A,{key:0,executor:a.id,class:`agent-engine__item-icon`},null,8,[`executor`])):(_(),n(O,{key:1,"icon-class":h(j),class:`agent-engine__item-icon`},null,8,[`icon-class`])),m(`span`,R,v(a.name),1),r.engine===a.id?(_(),n(h(i),{key:2,class:`agent-engine__item-check`},{default:x(()=>[l(h(ne))]),_:1})):y.value[a.id]?t(``,!0):(_(),d(`span`,z,v(h(E)(`@42BB9:未安装`)),1))])]),_:2},1032,[`command`]))),128))]),_:1})]),default:x(()=>[m(`button`,{type:`button`,class:s([`agent-engine__btn`,{"is-locked":r.locked}]),disabled:r.locked,title:r.locked?h(E)(`@AGENT:本会话的引擎已锁定;要换引擎请新建会话`):h(E)(`@AGENT:新建会话使用的引擎`),"aria-label":h(E)(`@AGENT:智能体引擎`)},[h(M)(r.engine)?(_(),n(A,{key:0,executor:r.engine,class:`agent-engine__icon`},null,8,[`executor`])):(_(),n(O,{key:1,"icon-class":h(j),class:`agent-engine__icon`},null,8,[`icon-class`])),m(`span`,I,v(g.value),1),l(h(i),{class:`agent-engine__caret`},{default:x(()=>[l(h(ee))]),_:1})],10,F)]),_:1}),l(ie,{modelValue:b.value,"onUpdate:modelValue":o[0]||=e=>b.value=e,tool:T.value},null,8,[`modelValue`,`tool`])]))}}),[[`__scopeId`,`data-v-cc0a8973`]]),V=8192;function H(e,t){return e.length>t?`…(前文已截断)\n${e.slice(-t)}`:e}function U(e,t){let n=e||`done`;return n!==`pending`&&n!==`running`||t===`running`||t===`pending`?n:t===`cancelled`||t===`error`?`error`:`done`}function W(e){let t=e?.toolCalls;if(!Array.isArray(t)||t.length===0)return[];let n=e?.status||`done`,r=[];for(let e=0;e<t.length;e++){let i=t[e];if(!i||typeof i!=`object`)continue;let a=U(i.status,n),o=typeof i.result==`string`?i.result:``;r.push({id:typeof i.id==`string`&&i.id?i.id:`tool-${e}`,name:typeof i.name==`string`?i.name:``,argsPreview:typeof i.argsPreview==`string`?i.argsPreview:``,arguments:typeof i.arguments==`string`?i.arguments:``,result:o?H(o,V):``,status:a,error:typeof i.error==`string`&&i.error?i.error:void 0})}return r}var G=`
|
|
2
2
|
|
|
3
3
|
---
|
|
4
4
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./rolldown-runtime-C0FnF6B9.js";import{Dn as e,En as t,Fn as n,Jn as r,Jr as i,Kn as a,Kr as o,Mn as s,Nn as c,Nr as ee,On as l,Qn as te,Sn as ne,Tn as u,Tr as d,Un as f,W as re,Xn as p,Zr as m,_n as ie,ar as h,bn as g,br as ae,cr as _,fn as oe,fr as v,gn as y,i as b,jn as se,ln as ce,r as le,sr as ue,vn as de,wn as x,yn as fe,yr as S,zn as C}from"./element-plus-CNJIhPSG.js";import{i as pe,n as w,o as me}from"./vendor-Dtqsc1If.js";import{n as T,t as E}from"./_plugin-vue_export-helper-BO6qa5C3.js";import{t as he}from"./SvgIcon-BPexLObf.js";import{t as ge}from"./configStore-D_CFFOs9.js";import{a as _e,c as ve,i as ye,n as be,o as xe,r as Se,s as Ce}from"./monaco-Cs1I4pfm.js";import{n as we,r as Te}from"./flow-mindmap-DdKeBM_G.js";import{A as Ee,F as De,I as Oe,L as ke,M as Ae,N as je,P as Me,d as Ne,i as Pe,j as Fe,k as Ie}from"./index-BsHc5Rxd.js";import{a as Le,c as Re,i as ze,l as Be,n as Ve,o as He,p as Ue,r as We,s as D,t as O,u as Ge}from"./agentConversations-mDAcOgXq.js";import{c as Ke,s as qe,t as Je}from"./CopySessionButton-De46dtzF.js";function Ye(e){return{ts:`typescript`,tsx:`typescript`,js:`javascript`,mjs:`javascript`,cjs:`javascript`,jsx:`javascript`,vue:`html`,html:`html`,htm:`html`,css:`css`,scss:`scss`,less:`less`,json:`json`,jsonc:`json`,md:`markdown`,markdown:`markdown`,yaml:`yaml`,yml:`yaml`,toml:`ini`,xml:`xml`,svg:`xml`,sh:`shell`,bash:`shell`,zsh:`shell`,fish:`shell`,ps1:`powershell`,py:`python`,go:`go`,rs:`rust`,java:`java`,kt:`kotlin`,rb:`ruby`,php:`php`,c:`c`,cpp:`cpp`,h:`cpp`,cs:`csharp`,sql:`sql`,graphql:`graphql`,gql:`graphql`,txt:`plaintext`,log:`plaintext`,ini:`ini`,env:`ini`,gitignore:`ini`,dockerfile:`dockerfile`}[e.toLowerCase()]??`plaintext`}C(),v();var Xe={class:`mindmap-preview`},Ze={class:`mindmap-preview-canvas`},Qe=E(n({__name:`MindmapPreview`,props:{content:{}},setup(e){let t=e,n=x(()=>Te(t.content||``,`未命名文档`));return(e,t)=>(p(),l(`div`,Xe,[t[0]||=u(`div`,{class:`mindmap-preview-header`},[u(`span`,{class:`mindmap-preview-title`},`整篇导图`),u(`span`,{class:`mindmap-preview-hint`},`基于整篇 Markdown 自动生成 · 阅读模式`)],-1),u(`div`,Ze,[c(d(we),{data:n.value,"preview-mode":``},null,8,[`data`])])]))}}),[[`__scopeId`,`data-v-d2fe328b`]]);C(),v(),ee(),ce();var $e={class:`agent-panel-header`},et=[`title`,`aria-label`],tt={class:`agent-panel-title`},k={key:1,class:`agent-panel-title`},A=[`title`,`aria-label`],j=[`title`],nt={class:`agent-panel-convs`},rt=[`data-theme`],it=[`title`],at={class:`agent-context-att-name`},ot=[`title`,`aria-label`],st=E(n({__name:`EditorAgentPanel`,props:{activeFilePath:{},activeFileName:{},active:{type:Boolean}},emits:[`close`],setup(n,{emit:i}){let s=n,ee=i,{theme:te}=Me(),re=x(()=>te.value===`dark`?`dark`:`light`),{sessions:ae,sessionsLoading:oe,currentSessionId:v,messages:y,isStreaming:b,pendingQuestion:ce,answeringQuestion:le,isSessionGenerating:ue,currentEngine:de,pendingEngine:fe,isEngineLocked:C,pickEngine:E,loadSessions:he,loadSession:ge,deleteSession:_e,renameSession:ve,newSession:ye,sendMessage:be,retryTurn:xe,answerQuestion:Se,stop:Ce,inputContextUsage:we,queuedMessages:Te,queuePaused:Ee,removeQueuedMessage:De,flushQueued:Oe}=Ge(),ke=x(()=>C.value?de.value:fe.value);function Ae(e){C.value||E(e)}let je=x(()=>Re(ae.value,ue)),Ne=Le(),Pe=He(),Fe=D(),Ie=x(()=>je.value.find(e=>e.id===v.value)?.title||``),Ye=S(null),Xe=S(null),Ze=S(null),Qe=S(null),st=S(null),{width:M,narrow:N}=Ke(st),P=S(`chat`),F=S(null),I=S(!1),L=null,R=x(()=>!!s.activeFileName&&!I.value);function ct(e){return Array.from(e.children).find(e=>e.classList?.contains(`acu-input-attachments`))??null}function lt(){let e=Xe.value?.$el;if(!e)return;let t=e.querySelector(`.agent-context-slot`);if(!R.value){if(!t)return;F.value=null,f(()=>t.remove());return}let n=F.value&&e.contains(F.value)?F.value:t;n||(n=document.createElement(`div`),n.className=`agent-context-slot`);let r=ct(e),i=r??e;n.parentElement!==i&&i.insertBefore(n,r?r.firstChild:e.firstChild),F.value=n}function ut(e=!0){Ye.value?.scrollToBottom(e)}async function z(e){let t=I.value?void 0:s.activeFilePath||void 0;await be(e.text,e.files,{openFilePath:t}),await f(),ut()}function dt(e){ge(e),P.value=`chat`}function ft(){ye(),P.value=`chat`}h(()=>y.value.length,()=>{f(()=>ut(!1))});function pt(){let e=Qe.value;!e||typeof MutationObserver>`u`||(L?.disconnect(),L=new MutationObserver(()=>lt()),L.observe(e,{childList:!0,subtree:!0}))}return h(()=>s.active,e=>{e&&(P.value=`chat`,he().catch(()=>{}),f(()=>{lt(),ut(!1)}))}),h(N,e=>{e||(P.value=`chat`)}),h(()=>s.activeFilePath,()=>{I.value=!1}),h(R,e=>{e&&f(lt)}),r(()=>{he().catch(()=>{}),f(()=>{lt(),pt()})}),a(()=>{L?.disconnect(),L=null,F.value=null}),(r,i)=>(p(),l(`div`,{ref_key:`rootRef`,ref:st,class:`editor-agent-panel`},[u(`div`,$e,[d(N)&&P.value===`list`?(p(),l(g,{key:0},[u(`button`,{class:`agent-panel-icon-btn agent-panel-back-btn`,title:d(T)(`@EDITOR:返回对话`),"aria-label":d(T)(`@EDITOR:返回对话`),onClick:i[0]||=e=>P.value=`chat`},[...i[4]||=[u(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`line`,{x1:`19`,y1:`12`,x2:`5`,y2:`12`}),u(`polyline`,{points:`12 19 5 12 12 5`})],-1)]],8,et),u(`span`,tt,m(d(T)(`@EDITOR:会话列表`)),1)],64)):(p(),l(`span`,k,m(d(T)(`@EDITOR:g ai 对话`)),1)),i[7]||=u(`div`,{class:`agent-panel-spacer`},null,-1),!d(N)||P.value===`chat`?(p(),t(qe,{key:2,class:`agent-panel-engine`,engine:ke.value,locked:d(C),onSelect:Ae},null,8,[`engine`,`locked`])):e(``,!0),!d(N)||P.value===`chat`?(p(),t(Je,{key:3,class:`agent-panel-copy`,messages:d(y),title:Ie.value,engine:d(Ue)(ke.value)},null,8,[`messages`,`title`,`engine`])):e(``,!0),d(N)&&P.value===`chat`?(p(),l(`button`,{key:4,class:`agent-panel-icon-btn agent-panel-list-btn`,title:d(T)(`@EDITOR:会话列表`),"aria-label":d(T)(`@EDITOR:会话列表`),onClick:i[1]||=e=>P.value=`list`},[...i[5]||=[se(`<svg viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" data-v-d1b2759e><line x1="8" y1="6" x2="21" y2="6" data-v-d1b2759e></line><line x1="8" y1="12" x2="21" y2="12" data-v-d1b2759e></line><line x1="8" y1="18" x2="21" y2="18" data-v-d1b2759e></line><line x1="3" y1="6" x2="3.01" y2="6" data-v-d1b2759e></line><line x1="3" y1="12" x2="3.01" y2="12" data-v-d1b2759e></line><line x1="3" y1="18" x2="3.01" y2="18" data-v-d1b2759e></line></svg>`,1)]],8,A)):e(``,!0),u(`button`,{class:`agent-panel-icon-btn`,title:d(T)(`@EDITOR:关闭对话`),onClick:i[2]||=e=>ee(`close`)},[...i[6]||=[u(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"stroke-linecap":`round`},[u(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),u(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]],8,j)]),u(`div`,{class:o([`agent-panel-body`,{"is-wide":!d(N)}])},[_(u(`div`,nt,[c(d(me),{"show-search":!0,items:je.value,"active-id":d(v),loading:d(oe),labels:d(Ne),onSelect:dt,onNew:ft,onRename:d(ve),onDelete:d(_e)},null,8,[`items`,`active-id`,`loading`,`labels`,`onRename`,`onDelete`])],512),[[ie,!d(N)||P.value===`list`]]),_(u(`div`,{ref_key:`chatHostRef`,ref:Ze,class:`agent-panel-chat`},[c(d(pe),{ref_key:`chatRef`,ref:Ye,"show-input":!1,messages:d(y),"assistant-name":d(Ve),"assistant-avatar":d(O),theme:re.value,question:d(ce),"question-submitting":d(le),"question-labels":d(Pe),"plan-config":{labels:{title:d(T)(`@AGENT:计划`),raw:d(T)(`@AGENT:原始参数`)}},"message-rail-config":d(ze),"message-meta-config":d(We),onAnswer:d(Se),onRetry:d(xe)},null,8,[`messages`,`assistant-name`,`assistant-avatar`,`theme`,`question`,`question-submitting`,`question-labels`,`plan-config`,`message-rail-config`,`message-meta-config`,`onAnswer`,`onRetry`])],512),[[ie,!d(N)||P.value===`chat`]]),d(M)>0?(p(),l(`div`,{key:0,ref_key:`composerRef`,ref:Qe,class:`agent-panel-composer acu-root`,"data-theme":re.value},[c(d(w),{ref_key:`inputRef`,ref:Xe,generating:d(b),"allow-queue":!0,queued:d(Te),"queue-paused":d(Ee),"queue-labels":d(Fe),placeholder:d(b)?d(T)(`@AGENT:生成中,发送后会排队,等本轮跑完自动接上…`):d(T)(`@AGENT:输入消息,Enter 发送`),"upload-config":{accept:d(Be)},"context-usage":d(we),onSend:z,onStop:d(Ce),onUnqueue:d(De),onFlushQueued:d(Oe)},null,8,[`generating`,`queued`,`queue-paused`,`queue-labels`,`placeholder`,`upload-config`,`context-usage`,`onStop`,`onUnqueue`,`onFlushQueued`]),F.value?(p(),t(ne,{key:0,to:F.value},[R.value?(p(),l(`div`,{key:0,class:`agent-context-att`,title:n.activeFilePath||``},[i[9]||=u(`svg`,{class:`agent-context-att-icon`,viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.7`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[u(`path`,{d:`M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z`}),u(`polyline`,{points:`14 3 14 8 19 8`})],-1),u(`span`,at,m(n.activeFileName),1),u(`button`,{type:`button`,class:`agent-context-att-remove`,title:d(T)(`@EDITOR:不引用当前文档`),"aria-label":d(T)(`@EDITOR:不引用当前文档`),onClick:i[3]||=e=>I.value=!0},[...i[8]||=[u(`svg`,{viewBox:`0 0 24 24`,width:`10`,height:`10`,fill:`none`,stroke:`currentColor`,"stroke-width":`3`,"stroke-linecap":`round`,"aria-hidden":`true`},[u(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),u(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]],8,ot)],8,it)):e(``,!0)],8,[`to`])):e(``,!0)],8,rt)):e(``,!0)],2)],512))}}),[[`__scopeId`,`data-v-d1b2759e`]]),M=1080,N=6e5,P=.86;function F(e){if(!e||e.startsWith(`data:`))return!1;if(e.startsWith(`blob:`)||e.startsWith(`/`))return!0;try{return new URL(e,location.href).origin===location.origin}catch{return!1}}async function I(e){try{let t=await fetch(e);if(!t.ok)return null;let n=await t.blob();return await new Promise(e=>{let t=new FileReader;t.onload=()=>e(t.result||``),t.onerror=()=>e(``),t.readAsDataURL(n)})}catch{return null}}function L(e){return new Promise(t=>{let n=!1,r=e=>{n||(n=!0,t(e))};if(typeof Image>`u`){r(e);return}let i=new Image,a=setTimeout(()=>r(e),4e3);i.onload=()=>{if(clearTimeout(a),!(i.naturalWidth>M||e.length>N)){r(e);return}try{let t=Math.min(1,M/i.naturalWidth),n=Math.max(1,Math.round(i.naturalWidth*t)),a=Math.max(1,Math.round(i.naturalHeight*t)),o=document.createElement(`canvas`);o.width=n,o.height=a;let s=o.getContext(`2d`);if(!s){r(e);return}s.fillStyle=`#ffffff`,s.fillRect(0,0,n,a),s.drawImage(i,0,0,n,a),r(o.toDataURL(`image/jpeg`,P))}catch{r(e)}},i.onerror=()=>{clearTimeout(a),r(e)},i.src=e})}async function R(e){let t=await I(e);return t?L(t):null}async function ct(e){let t=Array.from(e.querySelectorAll(`img`)).filter(e=>F(e.getAttribute(`src`)||``)),n=0;return await Promise.all(t.map(async e=>{let t=await R(e.getAttribute(`src`)||``);t?e.setAttribute(`src`,t):n+=1})),n}function lt(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}var ut={h1:`font-size:26px;font-weight:700;line-height:1.35;margin:28px 0 16px;color:#111;`,h2:`font-size:22px;font-weight:700;line-height:1.4;margin:26px 0 14px;color:#111;`,h3:`font-size:19px;font-weight:700;line-height:1.45;margin:22px 0 12px;color:#222;`,h4:`font-size:17px;font-weight:600;line-height:1.5;margin:20px 0 10px;color:#333;`,h5:`font-size:16px;font-weight:600;line-height:1.5;margin:18px 0 8px;color:#333;`,h6:`font-size:15px;font-weight:600;line-height:1.5;margin:18px 0 8px;color:#555;`,p:`font-size:16px;line-height:1.8;margin:16px 0;color:#333;`,li:`font-size:16px;line-height:1.8;margin:0 0 6px;color:#333;`,ul:`margin:16px 0;padding-left:24px;`,ol:`margin:16px 0;padding-left:24px;`,blockquote:`margin:16px 0;padding:8px 16px;border-left:4px solid #e2e2e2;background:#f7f7f7;color:#666;font-size:15px;line-height:1.8;`,hr:`border:none;border-top:1px solid #e5e5e5;margin:26px 0;`,a:`color:#576b95;text-decoration:none;`,strong:`font-weight:700;color:#111;`,em:`font-style:italic;color:#555;`,code:`font-family:Menlo,Consolas,Monaco,monospace;font-size:0.92em;background:#f2f3f5;color:#c7254e;padding:1px 5px;border-radius:3px;`,pre:`font-family:Menlo,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;background:#f6f8fa;color:#24292f;padding:12px 14px;border-radius:6px;overflow-x:auto;margin:16px 0;`,table:`border-collapse:collapse;width:100%;margin:16px 0;font-size:14px;`,th:`border:1px solid #e0e0e0;padding:8px 10px;background:#f6f8fa;font-weight:600;text-align:left;color:#333;`,td:`border:1px solid #e0e0e0;padding:8px 10px;color:#333;`,img:`max-width:100%;height:auto;display:block;margin:16px auto;border-radius:6px;`};function z(e){e.querySelectorAll(`*`).forEach(e=>{let t=ut[e.tagName.toLowerCase()];t&&e.setAttribute(`style`,t)}),e.querySelectorAll(`pre code`).forEach(e=>e.setAttribute(`style`,`background:none;padding:0;color:inherit;font-size:inherit;`))}async function dt(e,t){let n=e.cloneNode(!0),r=t?await ct(n):0;return{html:n.innerHTML,leftover:r}}async function ft(e,t){let n=e.cloneNode(!0),r=t.inline?await ct(n):0;z(n);let i=(t.title||``).trim();return{html:`<section style="font-size:16px;line-height:1.8;color:#333;word-break:break-word;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;">${i?`<h1 style="font-size:26px;font-weight:700;line-height:1.35;margin:0 0 22px;color:#111;">${lt(i)}</h1>`:``}${n.innerHTML}</section>`,leftover:r}}C(),v(),ee(),ce();var pt={class:`sidebar-header`},mt={class:`sidebar-title`},ht={class:`sidebar-actions`},gt={class:`sidebar-search`},_t=[`placeholder`,`title`],vt=[`title`,`aria-label`],yt={key:0,class:`sidebar-tree`},bt={key:1,class:`tree-arrow-spacer`},xt={class:`tree-icon mit-icon`,"aria-hidden":`true`},St=[`xlink:href`],Ct=[`onClick`,`onContextmenu`],wt={key:1,class:`tree-arrow-spacer`},Tt={key:2,class:`tree-icon mit-icon`,"aria-hidden":`true`},Et=[`xlink:href`],Dt={key:3,class:`tree-icon mit-icon`,"aria-hidden":`true`},Ot=[`xlink:href`],kt=[`title`],At={key:0,class:`tree-name-hit`},jt={key:4,class:`tree-loading`},Mt={key:0,viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,style:{"flex-shrink":`0`,color:`var(--color-warning-dark)`}},Nt={key:1,viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,style:{"flex-shrink":`0`,color:`var(--text-meta)`}},Pt=[`placeholder`],Ft={key:0,class:`tree-node tree-inline-input-row`,style:{paddingLeft:`12px`}},It={key:0,viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,style:{"flex-shrink":`0`,color:`var(--color-warning-dark)`}},Lt={key:1,viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,style:{"flex-shrink":`0`,color:`var(--text-meta)`}},Rt=[`placeholder`],zt={key:1,class:`tree-empty`},Bt={key:1,class:`sidebar-loading`},Vt={class:`editor-main`},Ht={key:0,class:`editor-tabs`},Ut=[`onClick`,`title`],Wt={class:`tab-name`},Gt={key:0,class:`tab-dirty-dot`},Kt=[`onClick`],qt=[`title`],Jt=[`disabled`,`title`],Yt=[`title`],Xt={class:`editor-body`},Zt={key:0,class:`image-tab-placeholder`},Qt={viewBox:`0 0 24 24`,width:`56`,height:`56`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,style:{opacity:`.35`}},$t={class:`image-tab-placeholder-title`},en={class:`image-tab-placeholder-hint`},tn={class:`preview-header`},nn={class:`preview-title`},rn={class:`preview-ext-badge`},an=[`title`],on={class:`preview-body`},sn={key:0,class:`preview-copybar`},cn=[`disabled`,`title`],ln=[`disabled`,`title`],un=[`disabled`,`title`],dn=[`title`],fn=[`sandbox`,`srcdoc`],pn=6e4,mn=3e4,hn=E(n({__name:`EditorView`,props:{pendingFilePath:{}},setup(n){self.MonacoEnvironment={getWorker(e,t){return t===`json`?new Ce:t===`css`||t===`scss`||t===`less`?new xe:t===`html`||t===`handlebars`||t===`razor`?new _e:t===`typescript`||t===`javascript`?new ye:new ve}};let ee=n,v=ge(),ce=Ne(),C=S([]),pe=S(!1),w=S(``),me=S(``),E=null;function we(){w.value=``,me.value=``,E&&=(clearTimeout(E),null)}h(w,e=>{E&&clearTimeout(E),E=setTimeout(()=>{me.value=e,E=null},180)}),a(()=>{E&&clearTimeout(E),Re(),wn()});let Te=null;function Le(){Re(),v.ui.fileTreeAutoRefresh&&(Te=setInterval(()=>{document.hidden||v.currentDirectory&&(w.value.trim()||D())},pn))}function Re(){Te&&=(clearInterval(Te),null)}h(()=>v.currentDirectory,async()=>{if(M=!1,Le(),await Be(),k.value.some(e=>e.isDirty)){M=!0;return}k.value=[],A.value=null,lt(),await F()}),h(()=>v.ui.fileTreeAutoRefresh,()=>{Le()});async function ze(e,t=0){let n=await(await fetch(`/api/browse_directory?path=${encodeURIComponent(e)}`)).json();return n.success?n.items.map(e=>({...e,depth:t,expanded:!1,loading:!1,children:(e.type,void 0)})):[]}async function Be(){let e=v.currentDirectory;if(e){pe.value=!0;try{C.value=await ze(e,0)}finally{pe.value=!1}}}function Ve(e,t=new Set){for(let n of e)n.type===`directory`&&n.expanded&&(t.add(n.path),n.children&&Ve(n.children,t));return t}function He(e,t=0){return(e||[]).map(e=>{let n={name:e.name,path:e.path,type:e.type,depth:t,expanded:!1,loading:!1};return n.type===`directory`&&Array.isArray(e.children)&&(n.children=He(e.children,t+1),n.expanded=!0),n})}async function Ue(e){let t=v.currentDirectory;if(!t)return null;try{let n=await(await fetch(`/api/browse_directory_tree`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:t,expand:e})})).json().catch(()=>null);return!n?.success||!Array.isArray(n.items)?null:He(n.items,0)}catch{return null}}function We(e,t){let n=new Map(e.map(e=>[e.path,e])),r=e.length!==t.length;if(!r){for(let n=0;n<t.length;n++)if(e[n].path!==t[n].path){r=!0;break}}for(let e=0;e<t.length;e++){let i=t[e],a=n.get(i.path);a&&(t[e]=a,a.name!==i.name&&(a.name=i.name,r=!0),a.type===`directory`&&a.expanded&&Array.isArray(i.children)&&(Array.isArray(a.children)?We(a.children,i.children)&&(a.children=i.children,r=!0):(a.children=i.children,r=!0)))}return r}async function D(e={}){if(!v.currentDirectory)return;let t=await Ue([...Ve(C.value)]);if(!t){e.notifyOnError&&b.error(T(`@EDITOR:刷新失败`));return}if(C.value.length===0){C.value=t;return}We(C.value,t)&&(C.value=t)}async function O(e){if(e.type===`directory`){if(e.expanded)e.expanded=!1;else{if(!e.children){e.loading=!0;try{e.children=await ze(e.path,e.depth+1)}finally{e.loading=!1}}e.expanded=!0}}}function Ge(e){let t=[];for(let n of e)t.push(n),n.type===`directory`&&n.expanded&&n.children&&t.push(...Ge(n.children));return t}let Ke=x(()=>me.value.trim().toLowerCase());function qe(e,t){if(!t)return e;let n=[];for(let r of e){let e=r.children?qe(r.children,t):[],i=r.name.toLowerCase().includes(t);r.type===`directory`?(i||e.length>0)&&(r.expanded=!0,r.children!==void 0&&(r.children=e),n.push(r)):i&&n.push(r)}return n}let Je=x(()=>qe(C.value,Ke.value)),Xe=x(()=>Ke.value.length>0&&Je.value.length===0);function Ze(e){let t=me.value.trim();if(!t)return[{text:e,hit:!1}];let n=e.toLowerCase(),r=t.toLowerCase(),i=[],a=0,o=n.indexOf(r,a);for(;o!==-1;)o>a&&i.push({text:e.slice(a,o),hit:!1}),i.push({text:e.slice(o,o+r.length),hit:!0}),a=o+r.length,o=n.indexOf(r,a);return a<e.length&&i.push({text:e.slice(a),hit:!1}),i}let $e=S(null);function et(){let e=$e.value;e&&(e.focus(),e.select())}function tt(){w.value?(we(),$e.value?.focus()):($e.value?.blur(),L.value?.focus())}let k=S([]),A=S(null),j=S(null);async function nt(e){if(j.value=e,e.type!==`file`){O(e);return}let t=k.value.find(t=>t.path===e.path);if(console.log(`[debug-open-in-editor] EditorView openFile existing tab check:`,{path:e.path,found:!!t,tabsCount:k.value.length}),t){A.value=e.path,f(()=>z());return}let n=e.name.split(`.`).pop()||``;if(sr.has(n.toLowerCase())){let t={path:e.path,name:e.name,content:``,originalContent:``,isDirty:!1,language:`plaintext`,diskMtimeMs:null};k.value.push(t),A.value=e.path,q.value=!0;return}if(De(e.name)){let t={path:e.path,name:e.name,content:``,originalContent:``,isDirty:!1,language:`office`,diskMtimeMs:null};k.value.push(t),A.value=e.path,J.value=!1,q.value=!0;return}try{let t=await fetch(`/api/editor/file?path=${encodeURIComponent(e.path)}`),r=await t.json();if(console.log(`[debug-open-in-editor] EditorView fetch /api/editor/file response:`,{path:e.path,status:t.status,data:r}),!r.success){b.error(`${T(`@EDITOR:打开文件失败: `)}${r.error}`);return}let i=Ye(n),a=R.get(e.path);a&&!a.isDisposed()&&a.setValue(r.content);let o={path:e.path,name:e.name,content:r.content,originalContent:r.content,isDirty:!1,language:i,diskMtimeMs:typeof r.mtimeMs==`number`?r.mtimeMs:null};console.log(`[debug-open-in-editor] EditorView pushing tab:`,{path:o.path,name:o.name,contentLen:o.content.length,lang:o.language}),k.value.push(o),A.value=e.path,console.log(`[debug-open-in-editor] EditorView tabs after push:`,k.value.length,`activeTabPath=`,A.value)}catch(e){console.log(`[debug-open-in-editor] EditorView fetch threw:`,e),b.error(`${T(`@EDITOR:打开文件失败: `)}${e.message}`)}}h(()=>ee.pendingFilePath,async e=>{if(console.log(`[debug-open-in-editor] EditorView watcher fired, filePath=`,e),!e)return;await f();let t=e.split(/[\\/]/).pop()||e;console.log(`[debug-open-in-editor] EditorView calling openFile, name=`,t,`path=`,e),await nt({name:t,path:e,type:`file`,depth:0}),console.log(`[debug-open-in-editor] EditorView openFile returned`)},{immediate:!0});function rt(e,t){t.stopPropagation();let n=k.value.findIndex(t=>t.path===e);n!==-1&&(!k.value[n].isDirty||confirm(T(`@EDITOR:文件未保存,确认关闭?`)))&&(k.value.splice(n,1),A.value===e&&(A.value=k.value[Math.min(n,k.value.length-1)]?.path??null))}let it=()=>k.value.find(e=>e.path===A.value)??null,at=x(()=>({expandedDirs:[...Ve(C.value)],tabs:k.value.map(e=>e.path),activeTab:A.value})),ot=!1,M=!1;function N(){M&&!ot&&v.isUiLoaded&&v.saveEditorWorkspace(at.value)}h(at,()=>N());async function P(e){if(k.value.some(t=>t.path===e))return;let t=e.split(/[\\/]/).pop()||e,n=(t.split(`.`).pop()||``).toLowerCase();if(sr.has(n)){k.value.push({path:e,name:t,content:``,originalContent:``,isDirty:!1,language:`plaintext`,diskMtimeMs:null});return}if(De(t)){k.value.push({path:e,name:t,content:``,originalContent:``,isDirty:!1,language:`office`,diskMtimeMs:null});return}try{let r=await(await fetch(`/api/editor/file?path=${encodeURIComponent(e)}`)).json();if(!r.success)return;let i=R.get(e);i&&!i.isDisposed()&&L.value?.getModel()!==i&&(i.dispose(),R.delete(e)),k.value.push({path:e,name:t,content:r.content,originalContent:r.content,isDirty:!1,language:Ye(n),diskMtimeMs:typeof r.mtimeMs==`number`?r.mtimeMs:null})}catch{}}async function F(){try{for(let e=0;e<100&&!v.isUiLoaded;e++)await new Promise(e=>setTimeout(e,50));if(!v.isUiLoaded)return;V.value=v.ui.editorSidebarWidth;let e=v.getEditorWorkspace();if(!e)return;ot=!0;try{if(e.expandedDirs.length>0){let t=await Ue(e.expandedDirs);t&&(C.value=t)}for(let t of e.tabs)await P(t);if(!ee.pendingFilePath&&e.activeTab&&k.value.some(t=>t.path===e.activeTab)){A.value=e.activeTab;let t=it(),n=(t?.name.split(`.`).pop()||``).toLowerCase();t&&(sr.has(n)||De(t.name))&&(q.value=!0)}}finally{ot=!1}}finally{M=!0,N()}}let I=S(null),L=ae(null),R=new Map;function ct(e){let t=R.get(e.path);return(!t||t.isDisposed())&&(t=Se.createModel(e.content,e.language,be.file(e.path)),R.set(e.path,t)),t}function lt(){L.value?.setModel(null);for(let e of R.values())e.isDisposed()||e.dispose();R.clear()}function ut(){if(!I.value)return;let e=document.documentElement.getAttribute(`data-theme`)===`dark`;L.value=Se.create(I.value,{theme:e?`vs-dark`:`vs`,fontSize:13,lineHeight:20,fontFamily:`'JetBrains Mono', 'Fira Code', 'Cascadia Code', Consolas, monospace`,minimap:{enabled:!0},scrollBeyondLastLine:!1,renderWhitespace:`selection`,automaticLayout:!0,tabSize:2,wordWrap:`off`,smoothScrolling:!0,cursorBlinking:`smooth`,padding:{top:8,bottom:8},editContext:!1}),L.value.onDidChangeModelContent(()=>{let e=it();if(!e)return;let t=L.value.getValue();e.content=t,e.isDirty=t!==e.originalContent}),L.value.onDidBlurEditorText(()=>{v.ui.editorAutoSave&&it()?.isDirty&&Dn(!1),requestAnimationFrame(()=>{if(!B.value||B.value.offsetParent===null)return;let e=document.activeElement;e&&(e.tagName===`INPUT`||e.tagName===`TEXTAREA`||e.isContentEditable||e.classList?.contains(`native-edit-context`)||e.classList?.contains(`monaco-editor`))||z()})})}h(A,e=>{if(!L.value||!e)return;let t=k.value.find(t=>t.path===e);if(!t)return;let n=ct(t);L.value.setModel(n),f(()=>z()),bn(e)});function z(){if(!L.value)return;L.value.focus();let e=document.querySelector(`.monaco-editor .native-edit-context`);e&&document.activeElement!==e&&requestAnimationFrame(()=>e.focus?.())}let hn=0,gn=new Map;async function _n(e){try{let t=await(await fetch(`/api/editor/file?path=${encodeURIComponent(e)}&meta=1`)).json();return!t?.success||typeof t.mtimeMs!=`number`?null:{mtimeMs:t.mtimeMs}}catch{return null}}async function vn(e){try{let t=await(await fetch(`/api/editor/file?path=${encodeURIComponent(e)}`)).json();return t?.success?{content:t.content,mtimeMs:typeof t.mtimeMs==`number`?t.mtimeMs:null}:null}catch{return null}}function yn(e,t,n){e.content=t,e.originalContent=t,e.isDirty=!1,e.diskMtimeMs=n;let r=R.get(e.path);if(!r||r.isDisposed())return;let i=L.value;if(!i||i.getModel()!==r){r.setValue(t);return}let a=i.saveViewState();r.pushEditOperations([],[{range:r.getFullModelRange(),text:t}],()=>null),i.restoreViewState(a)}async function bn(e){if(!e)return;let t=k.value.find(t=>t.path===e);if(!t||t.diskMtimeMs===null)return;let n=++hn,r=await _n(e);if(n!==hn||k.value.find(t=>t.path===e)!==t||!r||r.mtimeMs===t.diskMtimeMs)return;if(t.isDirty){if(gn.get(e)===r.mtimeMs)return;gn.set(e,r.mtimeMs);try{await le.confirm(T(`@EDITOR:这个文件在磁盘上已被改动,你这边也有未保存的编辑。重新加载会丢弃你的改动。`),T(`@EDITOR:文件已被外部改动`),{confirmButtonText:T(`@EDITOR:重新加载`),cancelButtonText:T(`@EDITOR:保留我的`),type:`warning`})}catch{return}if(t.isDirty)return}let i=await vn(e);i&&k.value.find(t=>t.path===e)===t&&yn(t,i.content,i.mtimeMs)}function xn(){document.hidden||bn(A.value)}let Sn=null;function Cn(){wn(),Sn=setInterval(()=>{document.hidden||bn(A.value)},mn)}function wn(){Sn&&=(clearInterval(Sn),null)}h(()=>k.value.filter(e=>e.isDirty).length,e=>{ce.setDirtyCount(e)},{immediate:!0}),a(()=>ce.setDirtyCount(0)),Me(()=>{let e=document.documentElement.getAttribute(`data-theme`)===`dark`;Se.setTheme(e?`vs-dark`:`vs`)});let Tn=null;function En(){if(Tn||!B.value)return;let e=[B.value],t=B.value.parentElement;for(;t;){if(t.classList.contains(`view-pane`)||t.classList.contains(`editor-pane`)){e.push(t);break}t=t.parentElement}Tn=new MutationObserver(()=>{B.value&&B.value.offsetParent!==null&&A.value&&L.value&&(bn(A.value),requestAnimationFrame(()=>{let e=document.activeElement;e&&(e.tagName===`INPUT`||e.tagName===`TEXTAREA`||e.isContentEditable||e.classList?.contains(`native-edit-context`)||e.classList?.contains(`monaco-editor`))||z()}))});let n=Tn;e.forEach(e=>n.observe(e,{attributes:!0,attributeFilter:[`style`,`class`,`hidden`]}))}r(async()=>{ut(),await Be(),await F(),En(),Le(),window.addEventListener(`focus`,xn),document.addEventListener(`visibilitychange`,xn),Cn(),A.value&&f(()=>z())}),a(()=>{Tn?.disconnect(),Tn=null,window.removeEventListener(`focus`,xn),document.removeEventListener(`visibilitychange`,xn),L.value?.dispose(),R.forEach(e=>e.dispose()),R.clear()});async function Dn(e=!1){let t=it();if(t)try{let n=await(await fetch(`/api/editor/file`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:t.path,content:t.content})})).json();if(!n.success){b.error(`${T(`@EDITOR:保存失败: `)}${n.error}`);return}t.originalContent=t.content,t.isDirty=!1,typeof n.mtimeMs==`number`&&(t.diskMtimeMs=n.mtimeMs),e||b.success(T(`@EDITOR:已保存`))}catch(e){b.error(`${T(`@EDITOR:保存失败: `)}${e.message}`)}}function On(e){let t=e.ctrlKey||e.metaKey;if(t&&e.key.toLowerCase()===`f`){e.preventDefault(),et();return}t&&e.key===`s`&&(e.preventDefault(),Dn())}r(()=>window.addEventListener(`keydown`,On)),a(()=>window.removeEventListener(`keydown`,On));let B=S(null),V=S(v.ui.editorSidebarWidth),kn=!1,An=0,jn=0;function Mn(e){kn=!0,An=e.clientX,jn=V.value,document.addEventListener(`mousemove`,Nn),document.addEventListener(`mouseup`,Pn),e.preventDefault()}function Nn(e){if(!kn)return;let t=e.clientX-An;V.value=Math.max(140,Math.min(400,jn+t))}function Pn(){kn=!1,document.removeEventListener(`mousemove`,Nn),document.removeEventListener(`mouseup`,Pn),V.value!==v.ui.editorSidebarWidth&&v.setEditorSidebarWidth(V.value)}function Fn(e){return e.type===`directory`?ke(e.name):Oe(e.name)}let H=S(null),U=S(null),W=S(null),In=S(null);function Ln(){let e=j.value;return e?e.type===`directory`?{parentPath:e.path,afterNode:e,depth:e.depth+1}:{parentPath:e.path.includes(`/`)||e.path.includes(`\\`)?e.path.replace(/[\\/][^\\/]+$/,``):v.currentDirectory??``,afterNode:e,depth:e.depth}:{parentPath:v.currentDirectory??``,afterNode:null,depth:0}}async function Rn(){let e=Ln();j.value?.type===`directory`&&!j.value.expanded&&await O(j.value),H.value={...e,kind:`file`,value:``},await f(),W.value?.focus()}async function zn(){let e=Ln();j.value?.type===`directory`&&!j.value.expanded&&await O(j.value),H.value={...e,kind:`directory`,value:``},await f(),W.value?.focus()}function Bn(){H.value=null}async function Vn(){let e=H.value;if(!e||!e.value.trim()){H.value=null;return}let t=e.value.trim(),n=e.parentPath.replace(/[/\\]$/,``)+`/`+t;if(e.kind===`file`){let e=await(await fetch(`/api/editor/file`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:n})})).json();if(!e.success){b.error(e.error);return}b.success(T(`@EDITOR:创建成功`))}else{let e=await(await fetch(`/api/editor/directory`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:n})})).json();if(!e.success){b.error(e.error);return}b.success(T(`@EDITOR:创建成功`))}H.value=null,await D()}function Hn(e){e.key===`Enter`&&(e.preventDefault(),Vn()),e.key===`Escape`&&(e.preventDefault(),Bn())}let G=S(null),Un=S(null);function Wn(e,t){e.preventDefault(),G.value={x:e.clientX,y:e.clientY,node:t}}function K(){G.value=null}async function Gn(){let e=G.value?.node;K(),e&&(j.value=e),e?.type===`directory`&&!e.expanded&&await O(e);let t=Ln();H.value={...t,kind:`file`,value:``},await f(),W.value?.focus()}async function Kn(){let e=G.value?.node;K(),e&&(j.value=e),e?.type===`directory`&&!e.expanded&&await O(e);let t=Ln();H.value={...t,kind:`directory`,value:``},await f(),W.value?.focus()}async function qn(){let e=G.value?.node;K(),e&&(U.value={node:e,value:e.name},await f(),In.value?.focus(),In.value?.select())}async function Jn(){let e=U.value;if(!e||!e.value.trim()||e.value.trim()===e.node.name){U.value=null;return}let t=e.value.trim(),n=e.node.path.replace(/[\\/][^\\/]+$/,``).replace(/[/\\]$/,``)+`/`+t,r=await(await fetch(`/api/editor/rename`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({oldPath:e.node.path,newPath:n})})).json();if(!r.success){b.error(r.error);return}let i=k.value.find(t=>t.path===e.node.path);i&&(i.path=n,i.name=t,A.value===e.node.path&&(A.value=n)),U.value=null,await D()}function Yn(e){e.key===`Enter`&&(e.preventDefault(),Jn()),e.key===`Escape`&&(e.preventDefault(),U.value=null)}async function Xn(){let e=G.value?.node;if(K(),!e)return;let t=e.type===`directory`?T(`@EDITOR:文件夹`):T(`@EDITOR:文件`);if(!confirm(`${T(`@EDITOR:确认删除`)} ${t} "${e.name}"?`))return;let n=await(await fetch(`/api/editor/entry?path=${encodeURIComponent(e.path)}`,{method:`DELETE`})).json();if(!n.success){b.error(n.error);return}let r=k.value.findIndex(t=>t.path===e.path);r!==-1&&(k.value.splice(r,1),A.value===e.path&&(A.value=k.value[Math.max(0,r-1)]?.path??null)),b.success(T(`@EDITOR:已删除`)),await D()}async function Zn(){let e=G.value?.node;if(K(),e)try{let t=await(await fetch(`/api/editor/reveal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e.path})})).json();t.success||b.error(t.error)}catch(e){b.error(e?.message||String(e))}}function Qn(e){let t=v.currentDirectory;if(!t)return e;let n=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``),r=n(t),i=n(e);return i===r?`.`:i.startsWith(r+`/`)?i.slice(r.length+1):i}async function $n(e){try{if(navigator.clipboard&&window.isSecureContext)return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.left=`-9999px`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch{return!1}}async function er(){let e=G.value?.node;K(),e&&(await $n(e.path)?b.success(T(`@EDITOR:已复制到剪贴板`)):b.error(T(`@EDITOR:复制失败`)))}async function tr(){let e=G.value?.node;K(),e&&(await $n(Qn(e.path))?b.success(T(`@EDITOR:已复制到剪贴板`)):b.error(T(`@EDITOR:复制失败`)))}async function nr(){let e=G.value?.node;if(K(),e)try{let t=await(await fetch(`/api/editor/open-in-vscode`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e.path})})).json();t.success||b.error(t.error||T(`@EDITOR:VSCode 未安装`))}catch(e){b.error(e?.message||String(e))}}let rr=new Set([`html`,`htm`]),ir=x(()=>{let e=G.value?.node;if(!e||e.type!==`file`)return!1;let t=e.name.slice(e.name.lastIndexOf(`.`)+1).toLowerCase();return rr.has(t)});async function ar(){let e=G.value?.node;if(K(),e)try{let t=await(await fetch(`/api/editor/open-in-browser`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e.path})})).json();t.success||b.error(t.error||T(`@EDITOR:浏览器打开失败`))}catch(e){b.error(e?.message||String(e))}}r(()=>document.addEventListener(`click`,K)),a(()=>document.removeEventListener(`click`,K));let or=new Set([`md`,`html`,`htm`,`svg`]),sr=new Set([`png`,`jpg`,`jpeg`,`gif`,`webp`,`ico`,`bmp`]),q=S(!1),J=S(!1),Y=S(!1),cr=S(!1),lr=S(0),X=x(()=>k.value.find(e=>e.path===A.value)??null),ur=x(()=>X.value?.language===`plaintext`&&X.value?.content===``),dr=x(()=>X.value?.language===`office`),Z=x(()=>(X.value?.name??``).split(`.`).pop()?.toLowerCase()??``),fr=x(()=>or.has(Z.value)||sr.has(Z.value)||De(Z.value)),pr=x(()=>((X.value?.content??``).match(/^#{1,6}\s+/gm)||[]).length),mr=x(()=>Z.value===`md`&&pr.value>0);h(A,()=>{q.value&&!fr.value&&(q.value=!1),J.value&&!mr.value&&(J.value=!1)});function hr(){fr.value&&(q.value||(J.value=!1,Y.value=!1),q.value=!q.value)}function gr(){mr.value&&(J.value||(q.value=!1,Y.value=!1),J.value=!J.value)}function _r(){Y.value||(q.value=!1,J.value=!1),Y.value=!Y.value,cr.value=!0}let vr=S(null),Q=S(!1),$=S(``),yr=S(!0),br=null,xr=x(()=>!J.value&&q.value&&Z.value===`md`&&!!X.value);function Sr(){return X.value?.content??``}function Cr(){return Sr().match(/^\s*#\s+(.+?)\s*(?:\r?\n|$)/)?.[1]?.trim()??``}function wr(e,t,n){if(!e){b.error(T(`@EDITOR:复制失败`));return}$.value=n,br&&clearTimeout(br),br=setTimeout(()=>{$.value=``},1800),t>0?b.warning(T(`@EDITOR:{n} 张图片未能转成 Base64,已保留原地址`,{n:t})):b.success(T(`@EDITOR:已复制`))}async function Tr(){wr(await $n(Sr()),0,`md`)}async function Er(){let e=vr.value?.getRenderedElement();if(e){Q.value=!0;try{let{html:t,leftover:n}=await dt(e,yr.value);wr(await $n(t),n,`html`)}finally{Q.value=!1}}}function Dr(e){let t=document.createElement(`div`);t.style.cssText=`position:fixed;top:-9999px;left:-9999px;opacity:0;`,t.innerHTML=e,document.body.appendChild(t);try{let e=window.getSelection(),n=document.createRange();n.selectNodeContents(t),e?.removeAllRanges(),e?.addRange(n);let r=document.execCommand(`copy`);return e?.removeAllRanges(),r}catch{return!1}finally{document.body.removeChild(t)}}async function Or(){let e=vr.value?.getRenderedElement();if(e){Q.value=!0;try{let{html:t,leftover:n}=await ft(e,{inline:yr.value,title:Cr()}),r=Sr(),i=!1;try{navigator.clipboard?.write&&typeof ClipboardItem<`u`&&(await navigator.clipboard.write([new ClipboardItem({"text/html":new Blob([t],{type:`text/html`}),"text/plain":new Blob([r],{type:`text/plain`})})]),i=!0)}catch{i=!1}i||=Dr(t),wr(i,n,`rich`)}finally{Q.value=!1}}}let kr=x(()=>{let e=X.value;if(!e)return``;let t=Z.value,n=document.documentElement.getAttribute(`data-theme`)===`light`?`#ffffff`:`#0d1117`;return t===`html`||t===`htm`?Ee(e.content):t===`svg`?`<!DOCTYPE html><html><head><meta charset="utf-8"><style>html,body{margin:0;padding:0;background:${n};display:flex;align-items:center;justify-content:center;min-height:100vh;}svg{max-width:100%;max-height:90vh;}</style></head><body>${e.content}</body></html>`:``}),Ar=!1,jr=0,Mr=0;function Nr(e){Ar=!0,jr=e.clientX,Mr=lr.value,document.addEventListener(`mousemove`,Pr),document.addEventListener(`mouseup`,Fr),e.preventDefault()}function Pr(e){if(!Ar)return;let t=e.clientX-jr;lr.value=Math.max(200,Math.min(900,Mr+t))}function Fr(){Ar=!1,document.removeEventListener(`mousemove`,Pr),document.removeEventListener(`mouseup`,Fr)}return(n,r)=>(p(),l(g,null,[u(`div`,{class:`editor-view`,ref_key:`containerRef`,ref:B},[u(`div`,{class:`editor-sidebar`,style:i({width:V.value+`px`})},[u(`div`,pt,[u(`span`,mt,m(d(T)(`@EDITOR:资源管理器`)),1),u(`div`,ht,[c(d(re),{content:d(T)(`@EDITOR:新建文件`),placement:`bottom`,"show-after":300},{default:ue(()=>[u(`button`,{class:`sidebar-action-btn`,onClick:Rn},[...r[12]||=[u(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`path`,{d:`M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z`}),u(`polyline`,{points:`14 2 14 8 20 8`}),u(`line`,{x1:`12`,y1:`13`,x2:`12`,y2:`19`}),u(`line`,{x1:`9`,y1:`16`,x2:`15`,y2:`16`})],-1)]])]),_:1},8,[`content`]),c(d(re),{content:d(T)(`@EDITOR:新建文件夹`),placement:`bottom`,"show-after":300},{default:ue(()=>[u(`button`,{class:`sidebar-action-btn`,onClick:zn},[...r[13]||=[u(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`path`,{d:`M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z`}),u(`line`,{x1:`12`,y1:`11`,x2:`12`,y2:`17`}),u(`line`,{x1:`9`,y1:`14`,x2:`15`,y2:`14`})],-1)]])]),_:1},8,[`content`]),c(d(re),{content:d(T)(`@EDITOR:刷新`),placement:`bottom`,"show-after":300},{default:ue(()=>[u(`button`,{class:`sidebar-action-btn`,onClick:r[0]||=e=>D({notifyOnError:!0})},[...r[14]||=[u(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`polyline`,{points:`1 4 1 10 7 10`}),u(`polyline`,{points:`23 20 23 14 17 14`}),u(`path`,{d:`M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15`})],-1)]])]),_:1},8,[`content`])])]),u(`div`,gt,[r[16]||=u(`svg`,{class:`sidebar-search-icon`,viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[u(`circle`,{cx:`11`,cy:`11`,r:`7`}),u(`line`,{x1:`21`,y1:`21`,x2:`16.65`,y2:`16.65`})],-1),_(u(`input`,{ref_key:`searchInputRef`,ref:$e,"onUpdate:modelValue":r[1]||=e=>w.value=e,type:`text`,class:`sidebar-search-input`,placeholder:d(T)(`@EDITOR:搜索文件...`),title:d(T)(`@EDITOR:搜索文件...`),spellcheck:`false`,autocomplete:`off`,onKeydown:de(tt,[`escape`])},null,40,_t),[[y,w.value]]),w.value?(p(),l(`button`,{key:0,class:`sidebar-search-clear`,title:d(T)(`@EDITOR:清除搜索`),"aria-label":d(T)(`@EDITOR:清除搜索`),onClick:we},[...r[15]||=[u(`svg`,{viewBox:`0 0 24 24`,width:`12`,height:`12`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[u(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),u(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]],8,vt)):e(``,!0)]),pe.value?(p(),l(`div`,Bt,[...r[25]||=[u(`span`,{class:`spin-icon`},null,-1)]])):(p(),l(`div`,yt,[(p(!0),l(g,null,te(Ge(Je.value),t=>(p(),l(g,{key:t.path},[U.value&&U.value.node.path===t.path?(p(),l(`div`,{key:0,class:`tree-node tree-inline-input-row`,style:i({paddingLeft:12+t.depth*14+`px`})},[t.type===`directory`?(p(),l(`span`,{key:0,class:o([`tree-arrow`,{expanded:t.expanded}])},[...r[17]||=[u(`svg`,{viewBox:`0 0 24 24`,width:`10`,height:`10`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`polyline`,{points:`9 18 15 12 9 6`})],-1)]],2)):(p(),l(`span`,bt)),(p(),l(`svg`,xt,[u(`use`,{"xlink:href":`#${Fn(t)}`},null,8,St)])),_(u(`input`,{ref_for:!0,ref_key:`renameInputRef`,ref:In,"onUpdate:modelValue":r[2]||=e=>U.value.value=e,onKeydown:Yn,onBlur:Jn,onClick:r[3]||=fe(()=>{},[`stop`])},null,544),[[y,U.value.value]])],4)):(p(),l(`div`,{key:1,class:o([`tree-node`,{"tree-node--dir":t.type===`directory`,"tree-node--file":t.type===`file`,"tree-node--active":A.value===t.path,"tree-node--selected":j.value?.path===t.path&&A.value!==t.path}]),style:i({paddingLeft:12+t.depth*14+`px`}),onClick:e=>nt(t),onContextmenu:e=>Wn(e,t)},[t.type===`directory`?(p(),l(`span`,{key:0,class:o([`tree-arrow`,{expanded:t.expanded}])},[...r[18]||=[u(`svg`,{viewBox:`0 0 24 24`,width:`10`,height:`10`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`polyline`,{points:`9 18 15 12 9 6`})],-1)]],2)):(p(),l(`span`,wt)),t.type===`directory`?(p(),l(`svg`,Tt,[u(`use`,{"xlink:href":`#${Fn(t)}`},null,8,Et)])):(p(),l(`svg`,Dt,[u(`use`,{"xlink:href":`#${Fn(t)}`},null,8,Ot)])),u(`span`,{class:`tree-name`,title:t.path},[(p(!0),l(g,null,te(Ze(t.name),(e,t)=>(p(),l(g,{key:t},[e.hit?(p(),l(`span`,At,m(e.text),1)):(p(),l(g,{key:1},[s(m(e.text),1)],64))],64))),128))],8,kt),t.loading?(p(),l(`span`,jt)):e(``,!0)],46,Ct)),H.value&&H.value.afterNode?.path===t.path?(p(),l(`div`,{key:2,class:`tree-node tree-inline-input-row`,style:i({paddingLeft:12+H.value.depth*14+`px`})},[r[21]||=u(`span`,{class:`tree-arrow-spacer`},null,-1),H.value.kind===`directory`?(p(),l(`svg`,Mt,[...r[19]||=[u(`path`,{d:`M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z`},null,-1)]])):(p(),l(`svg`,Nt,[...r[20]||=[u(`path`,{d:`M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z`},null,-1),u(`polyline`,{points:`14 2 14 8 20 8`},null,-1)]])),_(u(`input`,{ref_for:!0,ref_key:`inlineInputRef`,ref:W,class:`tree-inline-input`,"onUpdate:modelValue":r[4]||=e=>H.value.value=e,placeholder:H.value.kind===`file`?d(T)(`@EDITOR:输入文件名`):d(T)(`@EDITOR:输入文件夹名`),onKeydown:Hn,onBlur:Bn,onClick:r[5]||=fe(()=>{},[`stop`])},null,40,Pt),[[y,H.value.value]])],4)):e(``,!0)],64))),128)),H.value&&H.value.afterNode===null?(p(),l(`div`,Ft,[r[24]||=u(`span`,{class:`tree-arrow-spacer`},null,-1),H.value.kind===`directory`?(p(),l(`svg`,It,[...r[22]||=[u(`path`,{d:`M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z`},null,-1)]])):(p(),l(`svg`,Lt,[...r[23]||=[u(`path`,{d:`M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z`},null,-1),u(`polyline`,{points:`14 2 14 8 20 8`},null,-1)]])),_(u(`input`,{ref_key:`inlineInputRef`,ref:W,class:`tree-inline-input`,"onUpdate:modelValue":r[6]||=e=>H.value.value=e,placeholder:H.value.kind===`file`?d(T)(`@EDITOR:输入文件名`):d(T)(`@EDITOR:输入文件夹名`),onKeydown:Hn,onBlur:Bn,onClick:r[7]||=fe(()=>{},[`stop`])},null,40,Rt),[[y,H.value.value]])])):e(``,!0),!H.value&&(Xe.value||C.value.length===0)?(p(),l(`div`,zt,m(Xe.value?d(T)(`@EDITOR:未找到匹配文件`):d(T)(`@EDITOR:暂无文件`)),1)):e(``,!0)]))],4),u(`div`,{class:`editor-resizer`,onMousedown:Mn},null,32),u(`div`,Vt,[k.value.length>0?(p(),l(`div`,Ht,[(p(!0),l(g,null,te(k.value,t=>(p(),l(`div`,{key:t.path,class:o([`editor-tab`,{active:A.value===t.path,dirty:t.isDirty}]),onClick:e=>A.value=t.path,title:t.path},[u(`span`,Wt,m(t.name),1),t.isDirty?(p(),l(`span`,Gt)):e(``,!0),u(`button`,{class:`tab-close`,onClick:e=>rt(t.path,e)},[...r[26]||=[u(`svg`,{viewBox:`0 0 24 24`,width:`12`,height:`12`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"stroke-linecap":`round`},[u(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),u(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]],8,Kt)],10,Ut))),128)),r[30]||=u(`div`,{class:`editor-tabs-spacer`},null,-1),fr.value?(p(),l(`button`,{key:0,class:o([`preview-toggle-btn`,{active:q.value}]),title:q.value?d(T)(`@EDITOR:关闭预览`):d(T)(`@EDITOR:打开预览`),onClick:hr},[r[27]||=u(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`path`,{d:`M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z`}),u(`circle`,{cx:`12`,cy:`12`,r:`3`})],-1),u(`span`,null,m(d(T)(`@EDITOR:预览`)),1)],10,qt)):e(``,!0),mr.value?(p(),l(`button`,{key:1,class:o([`preview-toggle-btn mindmap-toggle-btn`,{active:J.value,disabled:!mr.value}]),disabled:!mr.value,title:mr.value?J.value?d(T)(`@EDITOR:关闭思维导图`):d(T)(`@EDITOR:打开思维导图`):d(T)(`@EDITOR:需要至少一个 # 标题`),onClick:gr},[r[28]||=se(`<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-v-843a938c><circle cx="12" cy="12" r="2" data-v-843a938c></circle><circle cx="5" cy="6" r="1.6" data-v-843a938c></circle><circle cx="19" cy="6" r="1.6" data-v-843a938c></circle><circle cx="5" cy="18" r="1.6" data-v-843a938c></circle><circle cx="19" cy="18" r="1.6" data-v-843a938c></circle><line x1="11" y1="11" x2="6.4" y2="7" data-v-843a938c></line><line x1="13" y1="11" x2="17.6" y2="7" data-v-843a938c></line><line x1="11" y1="13" x2="6.4" y2="17" data-v-843a938c></line><line x1="13" y1="13" x2="17.6" y2="17" data-v-843a938c></line></svg>`,1),u(`span`,null,m(d(T)(`@EDITOR:思维导图`)),1)],10,Jt)):e(``,!0),u(`button`,{class:o([`preview-toggle-btn agent-toggle-btn`,{active:Y.value}]),title:Y.value?d(T)(`@EDITOR:关闭 g ai 对话`):d(T)(`@EDITOR:打开 g ai 对话`),onClick:_r},[r[29]||=u(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`path`,{d:`M12 3l1.9 4.6L18.5 9.5l-4.6 1.9L12 16l-1.9-4.6L5.5 9.5l4.6-1.9z`}),u(`path`,{d:`M18 16.5l.9 2.1 2.1.9-2.1.9-.9 2.1-.9-2.1-2.1-.9 2.1-.9z`})],-1),u(`span`,null,m(d(T)(`@EDITOR:g ai 对话`)),1)],10,Yt)])):e(``,!0),k.value.length===0?(p(),t(Pe,{key:1,class:`editor-empty`,title:d(T)(`@EDITOR:从左侧选择文件打开`),hint:d(T)(`@EDITOR:Ctrl+S 保存`)},{icon:ue(()=>[...r[31]||=[u(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`path`,{d:`M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z`}),u(`polyline`,{points:`14 2 14 8 20 8`})],-1)]]),_:1},8,[`title`,`hint`])):e(``,!0),u(`div`,Xt,[u(`div`,{class:o([`monaco-container`,{hidden:k.value.length===0||ur.value||dr.value}]),ref_key:`editorContainerRef`,ref:I},null,2),ur.value&&k.value.length>0&&!q.value&&!J.value?(p(),l(`div`,Zt,[(p(),l(`svg`,Qt,[...r[32]||=[u(`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`},null,-1),u(`circle`,{cx:`9`,cy:`9`,r:`2`},null,-1),u(`path`,{d:`m21 15-5-5L5 21`},null,-1)]])),u(`p`,$t,m(X.value?.name),1),u(`p`,en,m(d(T)(`@EDITOR:这是图片文件,已在右侧预览面板中打开`)),1)])):e(``,!0),(q.value||J.value||Y.value)&&k.value.length>0?(p(),l(`div`,{key:1,class:`preview-resizer`,onMousedown:Nr},null,32)):e(``,!0),cr.value?_((p(),t(st,{key:2,active:Y.value&&k.value.length>0,"active-file-path":A.value,"active-file-name":X.value?.name??``,style:i({flexBasis:lr.value+`px`}),onClose:r[8]||=e=>Y.value=!1},null,8,[`active`,`active-file-path`,`active-file-name`,`style`])),[[ie,Y.value&&k.value.length>0]]):e(``,!0),(q.value||J.value)&&k.value.length>0?(p(),l(`div`,{key:3,class:`preview-panel`,style:i({flexBasis:lr.value+`px`})},[u(`div`,tn,[u(`span`,nn,m(J.value?d(T)(`@EDITOR:思维导图`):d(T)(`@EDITOR:预览`)),1),u(`span`,rn,m(Z.value.toUpperCase()),1),r[34]||=u(`div`,{class:`preview-header-spacer`},null,-1),u(`button`,{class:`preview-close-btn`,title:J.value?d(T)(`@EDITOR:关闭思维导图`):d(T)(`@EDITOR:关闭预览`),onClick:r[9]||=e=>J.value?J.value=!1:q.value=!1},[...r[33]||=[u(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"stroke-linecap":`round`},[u(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),u(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]],8,an)]),u(`div`,on,[xr.value?(p(),l(`div`,sn,[u(`button`,{class:o([`preview-copy-btn`,{done:$.value===`md`}]),disabled:Q.value,title:d(T)(`@EDITOR:复制 Markdown 源码`),onClick:Tr},[r[35]||=u(`span`,{class:`preview-copy-btn-icon`},`{ }`,-1),u(`span`,null,m($.value===`md`?d(T)(`@EDITOR:已复制`):`Markdown`),1)],10,cn),u(`button`,{class:o([`preview-copy-btn`,{done:$.value===`html`}]),disabled:Q.value,title:d(T)(`@EDITOR:复制渲染后的 HTML(图片按开关内嵌)`),onClick:Er},[r[36]||=u(`span`,{class:`preview-copy-btn-icon`},`</>`,-1),u(`span`,null,m($.value===`html`?d(T)(`@EDITOR:已复制`):`HTML`),1)],10,ln),u(`button`,{class:o([`preview-copy-btn preview-copy-btn--primary`,{done:$.value===`rich`}]),disabled:Q.value,title:d(T)(`@EDITOR:复制为富文本,可直接粘贴到公众号编辑器`),onClick:Or},[r[37]||=u(`span`,{class:`preview-copy-btn-icon`},`⊞`,-1),u(`span`,null,m(Q.value?d(T)(`@EDITOR:转换图片中…`):$.value===`rich`?d(T)(`@EDITOR:已复制`):d(T)(`@EDITOR:复制富文本`)),1)],10,un),u(`label`,{class:`preview-copy-embed`,title:d(T)(`@EDITOR:复制时把本地图片转成 Base64 内嵌,关闭后保留原图地址`)},[_(u(`input`,{"onUpdate:modelValue":r[10]||=e=>yr.value=e,type:`checkbox`},null,512),[[oe,yr.value]]),u(`span`,null,m(d(T)(`@EDITOR:图片转 Base64`)),1)],8,dn)])):e(``,!0),J.value&&Z.value===`md`&&X.value?(p(),t(Qe,{key:1,content:X.value.content,class:`preview-mindmap`},null,8,[`content`])):q.value&&Z.value===`md`&&X.value?(p(),t(Ae,{ref_key:`mdPreviewRef`,ref:vr,key:X.value.path,content:X.value.content,"base-path":X.value.path,class:`preview-markdown`},null,8,[`content`,`base-path`])):q.value&&[`html`,`htm`,`svg`].includes(Z.value)?(p(),l(`iframe`,{key:3,class:`preview-iframe`,sandbox:d(Ie),srcdoc:kr.value},null,8,fn)):q.value&&d(sr).has(Z.value)&&X.value?(p(),t(je,{key:4,"file-path":X.value.path,"file-name":X.value.name},null,8,[`file-path`,`file-name`])):q.value&&dr.value&&X.value?(p(),t(Fe,{key:5,"file-path":X.value.path},null,8,[`file-path`])):e(``,!0)])],4)):e(``,!0)])])],512),(p(),t(ne,{to:`body`},[G.value?(p(),l(`div`,{key:0,ref_key:`ctxMenuRef`,ref:Un,class:`ctx-menu`,style:i({left:G.value.x+`px`,top:G.value.y+`px`}),onClick:r[11]||=fe(()=>{},[`stop`])},[u(`button`,{class:`ctx-menu-item`,onClick:Gn},[r[38]||=u(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`path`,{d:`M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z`}),u(`polyline`,{points:`14 2 14 8 20 8`}),u(`line`,{x1:`12`,y1:`13`,x2:`12`,y2:`19`}),u(`line`,{x1:`9`,y1:`16`,x2:`15`,y2:`16`})],-1),s(` `+m(d(T)(`@EDITOR:新建文件`)),1)]),u(`button`,{class:`ctx-menu-item`,onClick:Kn},[r[39]||=u(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`path`,{d:`M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z`}),u(`line`,{x1:`12`,y1:`11`,x2:`12`,y2:`17`}),u(`line`,{x1:`9`,y1:`14`,x2:`15`,y2:`14`})],-1),s(` `+m(d(T)(`@EDITOR:新建文件夹`)),1)]),r[46]||=u(`div`,{class:`ctx-menu-sep`},null,-1),u(`button`,{class:`ctx-menu-item`,onClick:er},[r[40]||=u(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`rect`,{x:`9`,y:`9`,width:`13`,height:`13`,rx:`2`,ry:`2`}),u(`path`,{d:`M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1`})],-1),s(` `+m(d(T)(`@EDITOR:复制绝对路径`)),1)]),u(`button`,{class:`ctx-menu-item`,onClick:tr},[r[41]||=u(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`path`,{d:`M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71`}),u(`path`,{d:`M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71`})],-1),s(` `+m(d(T)(`@EDITOR:复制相对路径`)),1)]),r[47]||=u(`div`,{class:`ctx-menu-sep`},null,-1),ir.value?(p(),l(`button`,{key:0,class:`ctx-menu-item`,onClick:ar},[r[42]||=u(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`circle`,{cx:`12`,cy:`12`,r:`9`}),u(`line`,{x1:`3`,y1:`12`,x2:`21`,y2:`12`}),u(`path`,{d:`M12 3a13 13 0 0 1 3.5 9 13 13 0 0 1-3.5 9 13 13 0 0 1-3.5-9A13 13 0 0 1 12 3z`})],-1),s(` `+m(d(T)(`@EDITOR:在浏览器中打开`)),1)])):e(``,!0),u(`button`,{class:`ctx-menu-item`,onClick:Zn},[r[43]||=u(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`path`,{d:`M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`}),u(`path`,{d:`M3 7v10a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2`})],-1),s(` `+m(d(T)(`@EDITOR:在资源管理器中打开`)),1)]),u(`button`,{class:`ctx-menu-item`,onClick:nr},[c(he,{"icon-class":`vscode`,"class-name":`ctx-menu-icon`}),s(` `+m(d(T)(`@EDITOR:在 VSCode 中打开`)),1)]),u(`button`,{class:`ctx-menu-item`,onClick:qn},[r[44]||=u(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`path`,{d:`M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`}),u(`path`,{d:`M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z`})],-1),s(` `+m(d(T)(`@EDITOR:重命名`)),1)]),u(`button`,{class:`ctx-menu-item ctx-menu-item--danger`,onClick:Xn},[r[45]||=u(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`polyline`,{points:`3 6 5 6 21 6`}),u(`path`,{d:`M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6`}),u(`path`,{d:`M10 11v6`}),u(`path`,{d:`M14 11v6`}),u(`path`,{d:`M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2`})],-1),s(` `+m(d(T)(`@EDITOR:删除`)),1)])],4)):e(``,!0)]))],64))}}),[[`__scopeId`,`data-v-843a938c`]]);export{hn as default};
|