zen-gitsync 2.18.9 → 2.18.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/README.md +2 -2
  2. package/package.json +1 -1
  3. package/src/cli/ai/tools.js +152 -1
  4. package/src/cli/ai/tools.test.js +70 -1
  5. package/src/ui/public/assets/{AgentView-CV_8sYX6.css → AgentView-BnEgu3NT.css} +1 -1
  6. package/src/ui/public/assets/AgentView-DQQe_ivW.js +1 -0
  7. package/src/ui/public/assets/{AppVersionBadge-C4OhcUi8.js → AppVersionBadge-D7PiBP0p.js} +1 -1
  8. package/src/ui/public/assets/{BranchSelector-CrLieQyJ.js → BranchSelector-BzHoMBOc.js} +1 -1
  9. package/src/ui/public/assets/{CommitForm-KGQisnPQ.js → CommitForm-CNTjLYTR.js} +1 -1
  10. package/src/ui/public/assets/{CopySessionButton-y5Rzmact.js → CopySessionButton-Dy5t8Mjy.js} +1 -1
  11. package/src/ui/public/assets/{EditorView-CkZb2kw5.js → EditorView-CwcdA0Ei.js} +1 -1
  12. package/src/ui/public/assets/{FlowOrchestrationWorkspace-BMQSVm3V.js → FlowOrchestrationWorkspace-CJHpEBCw.js} +1 -1
  13. package/src/ui/public/assets/{LogList-BxH6QNlK.js → LogList-KUePBjAt.js} +1 -1
  14. package/src/ui/public/assets/{MindmapView-D9_qjJsR.js → MindmapView-CwdvsuEK.js} +1 -1
  15. package/src/ui/public/assets/{MonitorView-z_fsnE8Y.js → MonitorView-CjEnnrTL.js} +1 -1
  16. package/src/ui/public/assets/{ProjectStartupButton-CFB_JpYG.js → ProjectStartupButton-B36lRb6-.js} +1 -1
  17. package/src/ui/public/assets/{RecentDirectoriesChat-BYI8lkjQ.js → RecentDirectoriesChat-DNiji9Pr.js} +1 -1
  18. package/src/ui/public/assets/{RemoteManagerDialog-DXDcN8e7.js → RemoteManagerDialog-Dj_GpA-c.js} +1 -1
  19. package/src/ui/public/assets/{RemoteRepoCard-C_TYGsXi.js → RemoteRepoCard-C8u9M6dn.js} +1 -1
  20. package/src/ui/public/assets/{SourceMapView-D6cSweDt.js → SourceMapView-eng0B9U2.js} +1 -1
  21. package/src/ui/public/assets/{WorkbenchView-D4UDurhF.js → WorkbenchView-CZO18THH.js} +1 -1
  22. package/src/ui/public/assets/agentConversations-De3wKTsN.js +10 -0
  23. package/src/ui/public/assets/{index-C7Y9odvZ.js → index-DQ82h1aq.js} +5 -5
  24. package/src/ui/public/assets/{useOrchestrator-C236G5P5.js → useOrchestrator-BjC7oHpt.js} +1 -1
  25. package/src/ui/public/index.html +1 -1
  26. package/src/ui/server/routes/git/clone.js +5 -13
  27. package/src/ui/server/routes/workbench/agentChat.js +5 -2
  28. package/src/ui/server/routes/workbench/agentRoutes.js +17 -0
  29. package/src/ui/server/routes/workbench/index.js +16 -4
  30. package/src/ui/server/routes/workbench/scheduler.js +3 -0
  31. package/src/utils/gitRepoName.js +33 -0
  32. package/src/ui/public/assets/AgentView-DxmnqJxE.js +0 -1
  33. package/src/ui/public/assets/agentConversations-DyzaxUXm.js +0 -10
@@ -1 +1 @@
1
- import"./rolldown-runtime-C0FnF6B9.js";import{$r as e,An as t,Ct as n,Dn as r,Dr as i,En as a,Fn as o,Fr as s,Ht as c,J as l,Jn as u,Jr as d,L as f,Ln as p,On as m,Pn as h,Qn as g,Sn as _,Vn as v,W as y,Xn as b,Xr as x,Y as S,a as C,dn as w,er as T,ht as E,i as D,kn as O,lr as k,lt as A,mr as j,pt as ee,r as M,sr as te,ur as N,wn as ne,xn as P,xr as F,xt as re,yn as ie,z as ae,zt as oe}from"./element-plus-J45pKUrE.js";import{C as se,S as I,m as ce}from"./vendor-B3NyhlYR.js";import{n as L,t as R}from"./_plugin-vue_export-helper-Csn085FF.js";import{o as le,t as z}from"./configStore-DOaPZ6Mq.js";import{n as ue,t as de}from"./flow-mindmap-DvB74LE1.js";import{a as B,w as fe}from"./index-C7Y9odvZ.js";j(),v();function V(e){let t=(e||``).trim();if(!t)return``;let n=t.replace(/[\\/]+$/,``);return n?/^[a-z]:$/i.test(n)?`${n}\\`:n:t}function H(e){return V(e).replace(/\//g,`\\`).replace(/\\+$/,``).toLowerCase()}function U(e,t){let n=H(e),r=H(t);return!n||!r?!1:n===r||n.startsWith(r.endsWith(`\\`)?r:`${r}\\`)}function W(e){let t=Math.max(e.lastIndexOf(`\\`),e.lastIndexOf(`/`));return t>0?e.slice(0,t):e}var pe=I(`mindmap`,()=>{let e=z(),t=F([]),n=F([]),r=F(null),i=F(!1),o=F(!1),s=F(null),c=F(``),l=F(``),u=a(()=>r.value!==null),d=a(()=>n.value.reduce((e,t)=>e+t.files.length,0)),f=a(()=>n.value.some(e=>e.loading));function p(){e.ui.mindmapDirs=[...t.value]}function m(e){return n.value.find(t=>H(t.dir)===H(e))}function h(e){let t=m(e);if(t)return t;let r={dir:e,files:[],error:null,loading:!1};return n.value.push(r),r}function g(e){let n=V(e);return!n||t.value.some(e=>H(e)===H(n))?!1:(t.value.push(n),h(n),!0)}let _=new Map;async function v(e){let n=m(e);if(!n)return;let r=H(n.dir),i=(_.get(r)||0)+1;_.set(r,i),n.loading=!0,n.error=null;try{let e=await(await fetch(`/api/mindmap/list?dir=${encodeURIComponent(n.dir)}`)).json();if(_.get(r)!==i)return;if(e.success){let r=typeof e.dir==`string`&&e.dir?e.dir:n.dir;if(r!==n.dir){let e=t.value.findIndex(e=>H(e)===H(n.dir));e>=0&&(t.value[e]=r),n.dir=r,p()}n.files=e.files||[]}else n.error=e.error||`读取目录失败`,n.files=[]}catch(e){if(_.get(r)!==i)return;n.error=e?.message||String(e),n.files=[]}finally{_.get(r)===i&&(n.loading=!1)}}async function y(){await Promise.all(t.value.map(e=>v(e)))}async function b(){let n=Array.isArray(e.ui.mindmapDirs)?e.ui.mindmapDirs:[];for(let e of n)g(e);c.value&&!t.value.some(e=>H(e)===H(c.value))&&(c.value=``),await y()}async function x(e){let t=[];for(let n of e||[]){let e=V(n);e&&g(e)&&t.push(e)}return t.length===0?0:(p(),c.value||=t[0],await Promise.all(t.map(e=>v(e))),t.length)}function S(e){let r=H(e);t.value=t.value.filter(e=>H(e)!==r),n.value=n.value.filter(e=>H(e.dir)!==r),_.delete(r),c.value&&H(c.value)===r&&(c.value=``),p()}function C(){if(t.value.length===0)return{dir:null,ambiguous:!1};let e=t.value.find(e=>H(e)===H(c.value));if(e)return{dir:e,ambiguous:!1};let n=r.value?.path;if(n){let e=t.value.find(e=>U(n,e));if(e)return{dir:e,ambiguous:!1}}return t.value.length===1?{dir:t.value[0],ambiguous:!1}:{dir:null,ambiguous:!0}}async function w(e,n=!1){if(!n&&i.value&&r.value)throw Error(`UNSAVED_CHANGES`);o.value=!0,s.value=null;try{let n=await(await fetch(`/api/mindmap/read?path=${encodeURIComponent(e)}`)).json();if(n.success){r.value={path:n.path,title:n.title,content:n.content,mtime:n.mtime},l.value=n.content,i.value=!1;let e=t.value.find(e=>U(n.path,e));c.value=e||W(n.path)}else s.value=n.error||`读取文件失败`}catch(e){s.value=e?.message||String(e)}finally{o.value=!1}}async function T(e,t=!1,n){let a=n?V(n):C().dir;if(!a)throw Error(`未选择目录`);if(!t&&i.value&&r.value)throw Error(`UNSAVED_CHANGES`);o.value=!0,s.value=null;try{let t=await(await fetch(`/api/mindmap/create`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({dir:a,name:e})})).json();if(t.success)r.value={path:t.path,title:t.title,content:t.content,mtime:t.mtime},l.value=t.content,i.value=!1,c.value=a,await v(a);else throw s.value=t.error||`新建失败`,Error(t.error||`新建失败`)}catch(e){throw e.message===`UNSAVED_CHANGES`||(s.value=e?.message||String(e)),e}finally{o.value=!1}}async function E(e){if(!r.value)throw Error(`没有打开的文件`);o.value=!0,s.value=null;try{let t=await(await fetch(`/api/mindmap/save`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:r.value.path,content:e})})).json();if(t.success){let n=r.value.path;return r.value&&(r.value.content=e,r.value.mtime=t.mtime),l.value=e,i.value=!1,await D(n),t}throw s.value=t.error||`保存失败`,Error(t.error||`保存失败`)}catch(e){throw s.value=e?.message||String(e),e}finally{o.value=!1}}async function D(e){let t=n.value.find(t=>U(e,t.dir));t&&await v(t.dir)}async function O(e){let t=await(await fetch(`/api/mindmap/delete`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e})})).json();if(!t.success)throw Error(t.error||`删除失败`);return r.value&&r.value.path===e&&(r.value=null,i.value=!1,l.value=``),await D(e),t}async function k(e,t){let n=await(await fetch(`/api/mindmap/rename`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e,newName:t})})).json();if(!n.success)throw Error(n.error||`重命名失败`);return r.value&&e===r.value.path&&(r.value={...r.value,path:n.path,title:t}),await D(n.path||e),n}function A(){r.value&&(i.value=!0)}function j(){r.value=null,i.value=!1,l.value=``}return{dirs:t,groups:n,current:r,dirty:i,loading:o,refreshing:f,error:s,activeDir:c,hasCurrent:u,filesCount:d,init:b,addDirs:x,removeDir:S,refresh:y,refreshDir:v,resolveTargetDir:C,openFile:w,createFile:T,saveCurrent:E,deleteFile:O,renameFile:k,markDirty:A,closeCurrent:j}});v(),j(),s(),w();var me={class:`mindmap-view`},he={class:`mm-toolbar`},ge={class:`mm-toolbar-left`},_e={class:`mm-dir-tooltip`},ve={key:1,class:`mm-dir-empty`},ye={class:`mm-toolbar-right`},be={key:0,class:`mm-status`},xe=[`title`],Se={key:0,class:`mm-status-dirty`},Ce={class:`mm-body`},we={class:`mm-sidebar`},Te={class:`mm-sidebar-header`},Ee={class:`mm-sidebar-title`},De={class:`mm-sidebar-list`},Oe={key:0,class:`mm-sidebar-error`},ke=[`title`,`onClick`,`onContextmenu`],Ae={class:`mm-group-info`},je={class:`mm-group-name`},Me={class:`mm-group-title`},Ne={class:`mm-group-count`},Pe={class:`mm-group-path`},Fe={class:`mm-group-body`},Ie=[`title`],Le=[`onClick`],Re={class:`mm-file-info`},ze=[`title`],Be={class:`mm-file-meta`},Ve={class:`mm-editor`},He=1500,G=R(p({__name:`MindmapView`,setup(s){let p=pe(),v=z(),{currentLocale:w}=se(le()),j=a(()=>{let e=v.theme;return e===`dark`?!0:e===`light`?!1:window.matchMedia?.(`(prefers-color-scheme: dark)`).matches??!1}),I=F(null),R=F(!1);function V(){R.value=!0}async function H(e){R.value=!1;let t=(e||[]).filter(Boolean);if(t.length!==0)try{let e=await p.addDirs(t);e>0?D.success(L(`@MINDMAP:已添加目录`,{n:e})):D.info(L(`@MINDMAP:重复目录已忽略`))}catch(e){D.error(e?.message||L(`@MINDMAP:读取目录失败`))}}let W=F({});function G(e){W.value={...W.value,[e]:!W.value[e]},p.activeDir=e}function Ue(e){let t=e.replace(/[\\/]+$/,``).split(/[\\/]/);return t[t.length-1]||e}function We(e){return!!p.activeDir&&p.activeDir.toLowerCase()===e.toLowerCase()}function K(){let{dir:e,ambiguous:t}=p.resolveTargetDir();return e||(D.warning(L(t?`@MINDMAP:请选择目标目录`:`@MINDMAP:请先添加目录`)),null)}async function q(e){let t=e||K();if(!t||(e&&(p.activeDir=e),!await Ke()))return;let n=``;try{n=(await M.prompt(L(`@MINDMAP:输入文件名提示`),L(`@MINDMAP:新建思维导图`),{confirmButtonText:L(`@MINDMAP:新建`),cancelButtonText:L(`@MINDMAP:取消`),inputPlaceholder:L(`@MINDMAP:文件名占位`),inputValidator:e=>!e||!e.trim()?L(`@MINDMAP:名称不能为空`):!/[\\/:*?"<>|]/.test(e)||L(`@MINDMAP:名称含非法字符`)})).value.trim()}catch{return}try{await p.createFile(n,!0,t),D.success(L(`@MINDMAP:已新建并打开`))}catch(e){D.error(e?.message||L(`@MINDMAP:新建失败`))}}async function J(e=!1){if(p.current)try{let t=I.value?.exportData();if(!t){e||D.warning(L(`@MINDMAP:无法获取数据`));return}await p.saveCurrent(t),e||D.success(L(`@MINDMAP:已保存`))}catch(e){D.error(e?.message||L(`@MINDMAP:保存失败`))}}let Y=null;function Ge(){p.current&&p.dirty&&(Y&&clearTimeout(Y),Y=setTimeout(()=>{Y=null,p.current&&p.dirty&&J(!0)},He))}function X(){Y&&=(clearTimeout(Y),null)}async function Ke(){if(!p.dirty||!p.current)return!0;try{await M.confirm(L(`@MINDMAP:未保存提示`,{title:p.current.title}),L(`@MINDMAP:未保存的改动`),{confirmButtonText:L(`@MINDMAP:保存`),cancelButtonText:L(`@MINDMAP:丢弃`),distinguishCancelAndClose:!0,type:`warning`}),X();let e=I.value?.exportData();return e&&(await p.saveCurrent(e),D.success(L(`@MINDMAP:已保存`))),!0}catch(e){return e===`cancel`&&(X(),!0)}}async function qe(e){if(!(p.current&&p.current.path===e)&&await Ke())try{await p.openFile(e,!0)}catch(e){D.error(e?.message||L(`@MINDMAP:打开失败`))}}async function Je(e){let t=!!p.current&&U(p.current.path,e),n=L(`@MINDMAP:确认移除目录提示`,{dir:e});t&&(n=`${n} ${L(`@MINDMAP:当前文件将保持打开`)}`);try{await M.confirm(n,L(`@MINDMAP:移除目录`),{confirmButtonText:L(`@MINDMAP:移除目录`),cancelButtonText:L(`@MINDMAP:取消`),type:`warning`})}catch{return}p.removeDir(e),D.success(L(`@MINDMAP:已移除目录`))}let Z=F(null);function Ye(e,t){e.preventDefault(),Z.value={x:e.clientX,y:e.clientY,dir:t}}function Q(){Z.value=null}async function Xe(){let e=Z.value?.dir;if(Q(),!e)return;let t=await fe(e);t.success?D.success(t.message||L(`@MINDMAP:已在文件管理器中打开`)):D.error(t.error||L(`@MINDMAP:打开目录失败`))}function Ze(){let e=Z.value?.dir;Q(),e&&q(e)}function Qe(){let e=Z.value?.dir;Q(),e&&Je(e)}async function $e(e){try{await M.confirm(L(`@MINDMAP:确认删除提示`,{title:e.title}),L(`@MINDMAP:删除`),{confirmButtonText:L(`@MINDMAP:删除`),cancelButtonText:L(`@MINDMAP:取消`),type:`warning`})}catch{return}try{await p.deleteFile(e.path),D.success(L(`@MINDMAP:已删除`))}catch(e){D.error(e?.message||L(`@MINDMAP:删除失败`))}}async function et(e){let t=``;try{t=(await M.prompt(L(`@MINDMAP:输入新名称提示`),L(`@MINDMAP:重命名`),{confirmButtonText:L(`@MINDMAP:确定`),cancelButtonText:L(`@MINDMAP:取消`),inputValue:e.title,inputValidator:e=>!e||!e.trim()?L(`@MINDMAP:名称不能为空`):!/[\\/:*?"<>|]/.test(e)||L(`@MINDMAP:名称含非法字符`)})).value.trim()}catch{return}try{await p.renameFile(e.path,t),D.success(L(`@MINDMAP:已重命名`))}catch(e){D.error(e?.message||L(`@MINDMAP:重命名失败`))}}function tt(e){p.markDirty(),Ge()}function nt(e){}async function rt(e){let t=e||K();if(!t)return;let n=``,r=``;try{n=(await M.prompt(L(`@MINDMAP:粘贴Markdown提示`),L(`@MINDMAP:从Markdown导入`),{confirmButtonText:L(`@MINDMAP:导入`),cancelButtonText:L(`@MINDMAP:取消`),inputType:`textarea`,inputPlaceholder:L(`@MINDMAP:Markdown占位`),inputValidator:e=>!e||!e.trim()?L(`@MINDMAP:内容不能为空`):!0})).value}catch{return}try{r=(await M.prompt(L(`@MINDMAP:输入文件名提示`),L(`@MINDMAP:文件名`),{confirmButtonText:L(`@MINDMAP:新建`),cancelButtonText:L(`@MINDMAP:取消`),inputValidator:e=>!e||!e.trim()?L(`@MINDMAP:名称不能为空`):!/[\\/:*?"<>|]/.test(e)||L(`@MINDMAP:名称含非法字符`)})).value.trim()}catch{return}try{await p.createFile(r,!0,t);let e=de(n,r),i=JSON.stringify(e,null,2);await p.saveCurrent(i),D.success(L(`@MINDMAP:已导入`))}catch(e){D.error(e?.message||L(`@MINDMAP:导入失败`))}}async function it(){if(I.value)try{let e=I.value.getMarkdown();await navigator.clipboard.writeText(e),D.success(L(`@MINDMAP:已复制Markdown`))}catch(e){D.error(e?.message||L(`@MINDMAP:复制失败`))}}function at(e){(e.ctrlKey||e.metaKey)&&e.key===`s`&&(e.preventDefault(),p.current&&p.dirty&&(X(),J()))}let ot=F(0);te(()=>p.current?.path,()=>{ot.value++});let $=F(!1);function st(){$.value=!$.value}let ct=a(()=>{let e=p.current?.content;if(!e)return null;try{return JSON.parse(e)}catch{return null}});b(async()=>{window.addEventListener(`keydown`,at),document.addEventListener(`click`,Q),await p.init()}),u(()=>{window.removeEventListener(`keydown`,at),document.removeEventListener(`click`,Q),X()});function lt(e){if(!e)return`-`;let t=new Date(e),n=Date.now()-e;return n<6e4?L(`@MINDMAP:刚刚`):n<36e5?`${Math.floor(n/6e4)}${L(`@MINDMAP:分钟前`)}`:n<864e5?`${Math.floor(n/36e5)}${L(`@MINDMAP:小时前`)}`:`${t.getMonth()+1}/${t.getDate()} ${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`}function ut(e){return e?e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(1)} MB`:`0 B`}return(a,s)=>{let u=ae,v=f,b=y,D=l,M=C;return g(),t(`div`,me,[r(`div`,he,[r(`div`,ge,[o(u,{size:`small`,icon:i(n),onClick:V},{default:k(()=>[h(e(i(L)(`@MINDMAP:添加目录`)),1)]),_:1},8,[`icon`]),i(p).dirs.length>0?(g(),m(b,{key:0,placement:`bottom-start`,"show-after":200},{content:k(()=>[r(`div`,_e,[(g(!0),t(_,null,T(i(p).dirs,n=>(g(),t(`div`,{key:n},e(n),1))),128))])]),default:k(()=>[o(v,{size:`small`,type:`info`,class:`mm-dir-tag`},{default:k(()=>[h(e(i(L)(`@MINDMAP:个目录`,{n:i(p).dirs.length})),1)]),_:1})]),_:1})):(g(),t(`span`,ve,e(i(L)(`@MINDMAP:请先添加目录`)),1))]),r(`div`,ye,[o(u,{size:`small`,icon:i(oe),disabled:i(p).dirs.length===0,onClick:s[0]||=e=>q()},{default:k(()=>[h(e(i(L)(`@MINDMAP:新建`)),1)]),_:1},8,[`icon`,`disabled`]),o(u,{size:`small`,icon:i(ee),disabled:i(p).dirs.length===0,onClick:s[1]||=e=>rt()},{default:k(()=>[h(e(i(L)(`@MINDMAP:从MD导入`)),1)]),_:1},8,[`icon`,`disabled`]),o(u,{size:`small`,icon:i(E),disabled:!i(p).current,onClick:it},{default:k(()=>[h(e(i(L)(`@MINDMAP:复制MD`)),1)]),_:1},8,[`icon`,`disabled`]),o(u,{size:`small`,type:`primary`,icon:i(re),disabled:!i(p).current||!i(p).dirty,loading:i(p).loading,onClick:s[2]||=()=>{X(),J()}},{default:k(()=>[h(e(i(L)(`@MINDMAP:保存`)),1)]),_:1},8,[`icon`,`disabled`,`loading`]),i(p).current?(g(),t(`span`,be,[r(`span`,{class:`mm-status-title`,title:i(p).current.title},e(i(p).current.title),9,xe),i(p).dirty?(g(),t(`span`,Se,`●`)):O(``,!0)])):O(``,!0)])]),r(`div`,Ce,[r(`div`,we,[r(`div`,Te,[r(`span`,Ee,e(i(L)(`@MINDMAP:文件列表`)),1),o(u,{size:`small`,text:``,icon:i(c),loading:i(p).refreshing,onClick:s[3]||=e=>i(p).refresh(),disabled:i(p).dirs.length===0},null,8,[`icon`,`loading`,`disabled`])]),N((g(),t(`div`,De,[i(p).error?(g(),t(`div`,Oe,e(i(p).error),1)):O(``,!0),i(p).dirs.length===0?(g(),m(B,{key:1,class:`mm-sidebar-empty`,size:`inline`,title:i(L)(`@MINDMAP:请先添加目录`)},null,8,[`title`])):(g(!0),t(_,{key:2},T(i(p).groups,n=>(g(),t(`div`,{key:n.dir,class:`mm-group`},[r(`div`,{class:d([`mm-group-header`,{active:We(n.dir)}]),title:n.dir,onClick:e=>G(n.dir),onContextmenu:e=>Ye(e,n.dir)},[o(D,{class:d([`mm-group-caret`,{collapsed:W.value[n.dir]}])},{default:k(()=>[o(i(S))]),_:1},8,[`class`]),r(`div`,Ae,[r(`div`,je,[r(`span`,Me,e(Ue(n.dir)),1),r(`span`,Ne,e(n.files.length),1)]),r(`div`,Pe,e(n.dir),1)])],42,ke),N(r(`div`,Fe,[n.error?(g(),t(`div`,{key:0,class:`mm-group-error`,title:n.error},[r(`span`,null,e(i(L)(`@MINDMAP:目录不存在或已删除`)),1),o(u,{size:`small`,text:``,type:`danger`,onClick:e=>Je(n.dir)},{default:k(()=>[h(e(i(L)(`@MINDMAP:移除目录`)),1)]),_:1},8,[`onClick`])],8,Ie)):n.files.length===0?(g(),m(B,{key:1,class:`mm-sidebar-empty`,size:`inline`,title:i(L)(`@MINDMAP:该目录暂无思维导图`)},null,8,[`title`])):(g(!0),t(_,{key:2},T(n.files,n=>(g(),t(`div`,{key:n.path,class:d([`mm-file-item`,{active:i(p).current?.path===n.path}]),onClick:e=>qe(n.path)},[r(`div`,Re,[r(`div`,{class:`mm-file-title`,title:n.title},e(n.title),9,ze),r(`div`,Be,e(lt(n.mtime))+` · `+e(ut(n.size)),1)]),r(`div`,{class:`mm-file-actions`,onClick:s[4]||=P(()=>{},[`stop`])},[o(u,{size:`small`,text:``,icon:i(E),onClick:e=>et(n),title:i(L)(`@MINDMAP:重命名`)},null,8,[`icon`,`onClick`,`title`]),o(u,{size:`small`,text:``,type:`danger`,icon:i(A),onClick:e=>$e(n),title:i(L)(`@MINDMAP:删除`)},null,8,[`icon`,`onClick`,`title`])])],10,Le))),128))],512),[[ie,!W.value[n.dir]]])]))),128))])),[[M,i(p).refreshing]])]),r(`div`,Ve,[i(p).current?(g(),m(i(ue),{key:ot.value,ref_key:`mmRef`,ref:I,data:ct.value,"preview-mode":$.value,onChange:tt,onSelect:nt,onCanvasTogglePreview:st},null,8,[`data`,`preview-mode`])):(g(),m(B,{key:0,class:`mm-editor-empty`,title:i(L)(`@MINDMAP:思维导图编辑器`),hint:i(p).dirs.length>0?i(L)(`@MINDMAP:从左侧选择或新建`):i(L)(`@MINDMAP:先选择目录提示`)},{icon:k(()=>[...s[7]||=[r(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[r(`circle`,{cx:`12`,cy:`12`,r:`2`}),r(`circle`,{cx:`5`,cy:`5`,r:`2`}),r(`circle`,{cx:`19`,cy:`5`,r:`2`}),r(`circle`,{cx:`5`,cy:`19`,r:`2`}),r(`circle`,{cx:`19`,cy:`19`,r:`2`}),r(`line`,{x1:`10.5`,y1:`10.5`,x2:`6.5`,y2:`6.5`}),r(`line`,{x1:`13.5`,y1:`10.5`,x2:`17.5`,y2:`6.5`}),r(`line`,{x1:`10.5`,y1:`13.5`,x2:`6.5`,y2:`17.5`}),r(`line`,{x1:`13.5`,y1:`13.5`,x2:`17.5`,y2:`17.5`})],-1)]]),_:1},8,[`title`,`hint`]))])]),o(i(ce),{visible:R.value,mode:`directory`,multiple:!0,theme:j.value?`dark`:`light`,locale:i(w),"default-path":i(p).activeDir||i(p).dirs[0]||``,onClose:s[5]||=e=>R.value=!1,onConfirm:H},null,8,[`visible`,`theme`,`locale`,`default-path`]),(g(),m(ne,{to:`body`},[Z.value?(g(),t(`div`,{key:0,class:`ctx-menu`,style:x({left:Z.value.x+`px`,top:Z.value.y+`px`}),onClick:s[6]||=P(()=>{},[`stop`])},[r(`button`,{class:`ctx-menu-item`,onClick:Xe},[s[8]||=r(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[r(`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`}),r(`path`,{d:`M3 7v10a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2`})],-1),h(` `+e(i(L)(`@MINDMAP:打开目录`)),1)]),r(`button`,{class:`ctx-menu-item`,onClick:Ze},[s[9]||=r(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[r(`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`}),r(`polyline`,{points:`14 2 14 8 20 8`}),r(`line`,{x1:`12`,y1:`13`,x2:`12`,y2:`19`}),r(`line`,{x1:`9`,y1:`16`,x2:`15`,y2:`16`})],-1),h(` `+e(i(L)(`@MINDMAP:在此新建`)),1)]),s[11]||=r(`div`,{class:`ctx-menu-sep`},null,-1),r(`button`,{class:`ctx-menu-item ctx-menu-item--danger`,onClick:Qe},[s[10]||=r(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[r(`polyline`,{points:`3 6 5 6 21 6`}),r(`path`,{d:`M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6`}),r(`path`,{d:`M10 11v6`}),r(`path`,{d:`M14 11v6`}),r(`path`,{d:`M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2`})],-1),h(` `+e(i(L)(`@MINDMAP:移除目录`)),1)])],4)):O(``,!0)]))])}}}),[[`__scopeId`,`data-v-6567b053`]]);export{G as default};
1
+ import"./rolldown-runtime-C0FnF6B9.js";import{$r as e,An as t,Ct as n,Dn as r,Dr as i,En as a,Fn as o,Fr as s,Ht as c,J as l,Jn as u,Jr as d,L as f,Ln as p,On as m,Pn as h,Qn as g,Sn as _,Vn as v,W as y,Xn as b,Xr as x,Y as S,a as C,dn as w,er as T,ht as E,i as D,kn as O,lr as k,lt as A,mr as j,pt as ee,r as M,sr as te,ur as N,wn as ne,xn as P,xr as F,xt as re,yn as ie,z as ae,zt as oe}from"./element-plus-J45pKUrE.js";import{C as se,S as I,m as ce}from"./vendor-B3NyhlYR.js";import{n as L,t as R}from"./_plugin-vue_export-helper-Csn085FF.js";import{o as le,t as z}from"./configStore-DOaPZ6Mq.js";import{n as ue,t as de}from"./flow-mindmap-DvB74LE1.js";import{a as B,w as fe}from"./index-DQ82h1aq.js";j(),v();function V(e){let t=(e||``).trim();if(!t)return``;let n=t.replace(/[\\/]+$/,``);return n?/^[a-z]:$/i.test(n)?`${n}\\`:n:t}function H(e){return V(e).replace(/\//g,`\\`).replace(/\\+$/,``).toLowerCase()}function U(e,t){let n=H(e),r=H(t);return!n||!r?!1:n===r||n.startsWith(r.endsWith(`\\`)?r:`${r}\\`)}function W(e){let t=Math.max(e.lastIndexOf(`\\`),e.lastIndexOf(`/`));return t>0?e.slice(0,t):e}var pe=I(`mindmap`,()=>{let e=z(),t=F([]),n=F([]),r=F(null),i=F(!1),o=F(!1),s=F(null),c=F(``),l=F(``),u=a(()=>r.value!==null),d=a(()=>n.value.reduce((e,t)=>e+t.files.length,0)),f=a(()=>n.value.some(e=>e.loading));function p(){e.ui.mindmapDirs=[...t.value]}function m(e){return n.value.find(t=>H(t.dir)===H(e))}function h(e){let t=m(e);if(t)return t;let r={dir:e,files:[],error:null,loading:!1};return n.value.push(r),r}function g(e){let n=V(e);return!n||t.value.some(e=>H(e)===H(n))?!1:(t.value.push(n),h(n),!0)}let _=new Map;async function v(e){let n=m(e);if(!n)return;let r=H(n.dir),i=(_.get(r)||0)+1;_.set(r,i),n.loading=!0,n.error=null;try{let e=await(await fetch(`/api/mindmap/list?dir=${encodeURIComponent(n.dir)}`)).json();if(_.get(r)!==i)return;if(e.success){let r=typeof e.dir==`string`&&e.dir?e.dir:n.dir;if(r!==n.dir){let e=t.value.findIndex(e=>H(e)===H(n.dir));e>=0&&(t.value[e]=r),n.dir=r,p()}n.files=e.files||[]}else n.error=e.error||`读取目录失败`,n.files=[]}catch(e){if(_.get(r)!==i)return;n.error=e?.message||String(e),n.files=[]}finally{_.get(r)===i&&(n.loading=!1)}}async function y(){await Promise.all(t.value.map(e=>v(e)))}async function b(){let n=Array.isArray(e.ui.mindmapDirs)?e.ui.mindmapDirs:[];for(let e of n)g(e);c.value&&!t.value.some(e=>H(e)===H(c.value))&&(c.value=``),await y()}async function x(e){let t=[];for(let n of e||[]){let e=V(n);e&&g(e)&&t.push(e)}return t.length===0?0:(p(),c.value||=t[0],await Promise.all(t.map(e=>v(e))),t.length)}function S(e){let r=H(e);t.value=t.value.filter(e=>H(e)!==r),n.value=n.value.filter(e=>H(e.dir)!==r),_.delete(r),c.value&&H(c.value)===r&&(c.value=``),p()}function C(){if(t.value.length===0)return{dir:null,ambiguous:!1};let e=t.value.find(e=>H(e)===H(c.value));if(e)return{dir:e,ambiguous:!1};let n=r.value?.path;if(n){let e=t.value.find(e=>U(n,e));if(e)return{dir:e,ambiguous:!1}}return t.value.length===1?{dir:t.value[0],ambiguous:!1}:{dir:null,ambiguous:!0}}async function w(e,n=!1){if(!n&&i.value&&r.value)throw Error(`UNSAVED_CHANGES`);o.value=!0,s.value=null;try{let n=await(await fetch(`/api/mindmap/read?path=${encodeURIComponent(e)}`)).json();if(n.success){r.value={path:n.path,title:n.title,content:n.content,mtime:n.mtime},l.value=n.content,i.value=!1;let e=t.value.find(e=>U(n.path,e));c.value=e||W(n.path)}else s.value=n.error||`读取文件失败`}catch(e){s.value=e?.message||String(e)}finally{o.value=!1}}async function T(e,t=!1,n){let a=n?V(n):C().dir;if(!a)throw Error(`未选择目录`);if(!t&&i.value&&r.value)throw Error(`UNSAVED_CHANGES`);o.value=!0,s.value=null;try{let t=await(await fetch(`/api/mindmap/create`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({dir:a,name:e})})).json();if(t.success)r.value={path:t.path,title:t.title,content:t.content,mtime:t.mtime},l.value=t.content,i.value=!1,c.value=a,await v(a);else throw s.value=t.error||`新建失败`,Error(t.error||`新建失败`)}catch(e){throw e.message===`UNSAVED_CHANGES`||(s.value=e?.message||String(e)),e}finally{o.value=!1}}async function E(e){if(!r.value)throw Error(`没有打开的文件`);o.value=!0,s.value=null;try{let t=await(await fetch(`/api/mindmap/save`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:r.value.path,content:e})})).json();if(t.success){let n=r.value.path;return r.value&&(r.value.content=e,r.value.mtime=t.mtime),l.value=e,i.value=!1,await D(n),t}throw s.value=t.error||`保存失败`,Error(t.error||`保存失败`)}catch(e){throw s.value=e?.message||String(e),e}finally{o.value=!1}}async function D(e){let t=n.value.find(t=>U(e,t.dir));t&&await v(t.dir)}async function O(e){let t=await(await fetch(`/api/mindmap/delete`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e})})).json();if(!t.success)throw Error(t.error||`删除失败`);return r.value&&r.value.path===e&&(r.value=null,i.value=!1,l.value=``),await D(e),t}async function k(e,t){let n=await(await fetch(`/api/mindmap/rename`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e,newName:t})})).json();if(!n.success)throw Error(n.error||`重命名失败`);return r.value&&e===r.value.path&&(r.value={...r.value,path:n.path,title:t}),await D(n.path||e),n}function A(){r.value&&(i.value=!0)}function j(){r.value=null,i.value=!1,l.value=``}return{dirs:t,groups:n,current:r,dirty:i,loading:o,refreshing:f,error:s,activeDir:c,hasCurrent:u,filesCount:d,init:b,addDirs:x,removeDir:S,refresh:y,refreshDir:v,resolveTargetDir:C,openFile:w,createFile:T,saveCurrent:E,deleteFile:O,renameFile:k,markDirty:A,closeCurrent:j}});v(),j(),s(),w();var me={class:`mindmap-view`},he={class:`mm-toolbar`},ge={class:`mm-toolbar-left`},_e={class:`mm-dir-tooltip`},ve={key:1,class:`mm-dir-empty`},ye={class:`mm-toolbar-right`},be={key:0,class:`mm-status`},xe=[`title`],Se={key:0,class:`mm-status-dirty`},Ce={class:`mm-body`},we={class:`mm-sidebar`},Te={class:`mm-sidebar-header`},Ee={class:`mm-sidebar-title`},De={class:`mm-sidebar-list`},Oe={key:0,class:`mm-sidebar-error`},ke=[`title`,`onClick`,`onContextmenu`],Ae={class:`mm-group-info`},je={class:`mm-group-name`},Me={class:`mm-group-title`},Ne={class:`mm-group-count`},Pe={class:`mm-group-path`},Fe={class:`mm-group-body`},Ie=[`title`],Le=[`onClick`],Re={class:`mm-file-info`},ze=[`title`],Be={class:`mm-file-meta`},Ve={class:`mm-editor`},He=1500,G=R(p({__name:`MindmapView`,setup(s){let p=pe(),v=z(),{currentLocale:w}=se(le()),j=a(()=>{let e=v.theme;return e===`dark`?!0:e===`light`?!1:window.matchMedia?.(`(prefers-color-scheme: dark)`).matches??!1}),I=F(null),R=F(!1);function V(){R.value=!0}async function H(e){R.value=!1;let t=(e||[]).filter(Boolean);if(t.length!==0)try{let e=await p.addDirs(t);e>0?D.success(L(`@MINDMAP:已添加目录`,{n:e})):D.info(L(`@MINDMAP:重复目录已忽略`))}catch(e){D.error(e?.message||L(`@MINDMAP:读取目录失败`))}}let W=F({});function G(e){W.value={...W.value,[e]:!W.value[e]},p.activeDir=e}function Ue(e){let t=e.replace(/[\\/]+$/,``).split(/[\\/]/);return t[t.length-1]||e}function We(e){return!!p.activeDir&&p.activeDir.toLowerCase()===e.toLowerCase()}function K(){let{dir:e,ambiguous:t}=p.resolveTargetDir();return e||(D.warning(L(t?`@MINDMAP:请选择目标目录`:`@MINDMAP:请先添加目录`)),null)}async function q(e){let t=e||K();if(!t||(e&&(p.activeDir=e),!await Ke()))return;let n=``;try{n=(await M.prompt(L(`@MINDMAP:输入文件名提示`),L(`@MINDMAP:新建思维导图`),{confirmButtonText:L(`@MINDMAP:新建`),cancelButtonText:L(`@MINDMAP:取消`),inputPlaceholder:L(`@MINDMAP:文件名占位`),inputValidator:e=>!e||!e.trim()?L(`@MINDMAP:名称不能为空`):!/[\\/:*?"<>|]/.test(e)||L(`@MINDMAP:名称含非法字符`)})).value.trim()}catch{return}try{await p.createFile(n,!0,t),D.success(L(`@MINDMAP:已新建并打开`))}catch(e){D.error(e?.message||L(`@MINDMAP:新建失败`))}}async function J(e=!1){if(p.current)try{let t=I.value?.exportData();if(!t){e||D.warning(L(`@MINDMAP:无法获取数据`));return}await p.saveCurrent(t),e||D.success(L(`@MINDMAP:已保存`))}catch(e){D.error(e?.message||L(`@MINDMAP:保存失败`))}}let Y=null;function Ge(){p.current&&p.dirty&&(Y&&clearTimeout(Y),Y=setTimeout(()=>{Y=null,p.current&&p.dirty&&J(!0)},He))}function X(){Y&&=(clearTimeout(Y),null)}async function Ke(){if(!p.dirty||!p.current)return!0;try{await M.confirm(L(`@MINDMAP:未保存提示`,{title:p.current.title}),L(`@MINDMAP:未保存的改动`),{confirmButtonText:L(`@MINDMAP:保存`),cancelButtonText:L(`@MINDMAP:丢弃`),distinguishCancelAndClose:!0,type:`warning`}),X();let e=I.value?.exportData();return e&&(await p.saveCurrent(e),D.success(L(`@MINDMAP:已保存`))),!0}catch(e){return e===`cancel`&&(X(),!0)}}async function qe(e){if(!(p.current&&p.current.path===e)&&await Ke())try{await p.openFile(e,!0)}catch(e){D.error(e?.message||L(`@MINDMAP:打开失败`))}}async function Je(e){let t=!!p.current&&U(p.current.path,e),n=L(`@MINDMAP:确认移除目录提示`,{dir:e});t&&(n=`${n} ${L(`@MINDMAP:当前文件将保持打开`)}`);try{await M.confirm(n,L(`@MINDMAP:移除目录`),{confirmButtonText:L(`@MINDMAP:移除目录`),cancelButtonText:L(`@MINDMAP:取消`),type:`warning`})}catch{return}p.removeDir(e),D.success(L(`@MINDMAP:已移除目录`))}let Z=F(null);function Ye(e,t){e.preventDefault(),Z.value={x:e.clientX,y:e.clientY,dir:t}}function Q(){Z.value=null}async function Xe(){let e=Z.value?.dir;if(Q(),!e)return;let t=await fe(e);t.success?D.success(t.message||L(`@MINDMAP:已在文件管理器中打开`)):D.error(t.error||L(`@MINDMAP:打开目录失败`))}function Ze(){let e=Z.value?.dir;Q(),e&&q(e)}function Qe(){let e=Z.value?.dir;Q(),e&&Je(e)}async function $e(e){try{await M.confirm(L(`@MINDMAP:确认删除提示`,{title:e.title}),L(`@MINDMAP:删除`),{confirmButtonText:L(`@MINDMAP:删除`),cancelButtonText:L(`@MINDMAP:取消`),type:`warning`})}catch{return}try{await p.deleteFile(e.path),D.success(L(`@MINDMAP:已删除`))}catch(e){D.error(e?.message||L(`@MINDMAP:删除失败`))}}async function et(e){let t=``;try{t=(await M.prompt(L(`@MINDMAP:输入新名称提示`),L(`@MINDMAP:重命名`),{confirmButtonText:L(`@MINDMAP:确定`),cancelButtonText:L(`@MINDMAP:取消`),inputValue:e.title,inputValidator:e=>!e||!e.trim()?L(`@MINDMAP:名称不能为空`):!/[\\/:*?"<>|]/.test(e)||L(`@MINDMAP:名称含非法字符`)})).value.trim()}catch{return}try{await p.renameFile(e.path,t),D.success(L(`@MINDMAP:已重命名`))}catch(e){D.error(e?.message||L(`@MINDMAP:重命名失败`))}}function tt(e){p.markDirty(),Ge()}function nt(e){}async function rt(e){let t=e||K();if(!t)return;let n=``,r=``;try{n=(await M.prompt(L(`@MINDMAP:粘贴Markdown提示`),L(`@MINDMAP:从Markdown导入`),{confirmButtonText:L(`@MINDMAP:导入`),cancelButtonText:L(`@MINDMAP:取消`),inputType:`textarea`,inputPlaceholder:L(`@MINDMAP:Markdown占位`),inputValidator:e=>!e||!e.trim()?L(`@MINDMAP:内容不能为空`):!0})).value}catch{return}try{r=(await M.prompt(L(`@MINDMAP:输入文件名提示`),L(`@MINDMAP:文件名`),{confirmButtonText:L(`@MINDMAP:新建`),cancelButtonText:L(`@MINDMAP:取消`),inputValidator:e=>!e||!e.trim()?L(`@MINDMAP:名称不能为空`):!/[\\/:*?"<>|]/.test(e)||L(`@MINDMAP:名称含非法字符`)})).value.trim()}catch{return}try{await p.createFile(r,!0,t);let e=de(n,r),i=JSON.stringify(e,null,2);await p.saveCurrent(i),D.success(L(`@MINDMAP:已导入`))}catch(e){D.error(e?.message||L(`@MINDMAP:导入失败`))}}async function it(){if(I.value)try{let e=I.value.getMarkdown();await navigator.clipboard.writeText(e),D.success(L(`@MINDMAP:已复制Markdown`))}catch(e){D.error(e?.message||L(`@MINDMAP:复制失败`))}}function at(e){(e.ctrlKey||e.metaKey)&&e.key===`s`&&(e.preventDefault(),p.current&&p.dirty&&(X(),J()))}let ot=F(0);te(()=>p.current?.path,()=>{ot.value++});let $=F(!1);function st(){$.value=!$.value}let ct=a(()=>{let e=p.current?.content;if(!e)return null;try{return JSON.parse(e)}catch{return null}});b(async()=>{window.addEventListener(`keydown`,at),document.addEventListener(`click`,Q),await p.init()}),u(()=>{window.removeEventListener(`keydown`,at),document.removeEventListener(`click`,Q),X()});function lt(e){if(!e)return`-`;let t=new Date(e),n=Date.now()-e;return n<6e4?L(`@MINDMAP:刚刚`):n<36e5?`${Math.floor(n/6e4)}${L(`@MINDMAP:分钟前`)}`:n<864e5?`${Math.floor(n/36e5)}${L(`@MINDMAP:小时前`)}`:`${t.getMonth()+1}/${t.getDate()} ${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`}function ut(e){return e?e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(1)} MB`:`0 B`}return(a,s)=>{let u=ae,v=f,b=y,D=l,M=C;return g(),t(`div`,me,[r(`div`,he,[r(`div`,ge,[o(u,{size:`small`,icon:i(n),onClick:V},{default:k(()=>[h(e(i(L)(`@MINDMAP:添加目录`)),1)]),_:1},8,[`icon`]),i(p).dirs.length>0?(g(),m(b,{key:0,placement:`bottom-start`,"show-after":200},{content:k(()=>[r(`div`,_e,[(g(!0),t(_,null,T(i(p).dirs,n=>(g(),t(`div`,{key:n},e(n),1))),128))])]),default:k(()=>[o(v,{size:`small`,type:`info`,class:`mm-dir-tag`},{default:k(()=>[h(e(i(L)(`@MINDMAP:个目录`,{n:i(p).dirs.length})),1)]),_:1})]),_:1})):(g(),t(`span`,ve,e(i(L)(`@MINDMAP:请先添加目录`)),1))]),r(`div`,ye,[o(u,{size:`small`,icon:i(oe),disabled:i(p).dirs.length===0,onClick:s[0]||=e=>q()},{default:k(()=>[h(e(i(L)(`@MINDMAP:新建`)),1)]),_:1},8,[`icon`,`disabled`]),o(u,{size:`small`,icon:i(ee),disabled:i(p).dirs.length===0,onClick:s[1]||=e=>rt()},{default:k(()=>[h(e(i(L)(`@MINDMAP:从MD导入`)),1)]),_:1},8,[`icon`,`disabled`]),o(u,{size:`small`,icon:i(E),disabled:!i(p).current,onClick:it},{default:k(()=>[h(e(i(L)(`@MINDMAP:复制MD`)),1)]),_:1},8,[`icon`,`disabled`]),o(u,{size:`small`,type:`primary`,icon:i(re),disabled:!i(p).current||!i(p).dirty,loading:i(p).loading,onClick:s[2]||=()=>{X(),J()}},{default:k(()=>[h(e(i(L)(`@MINDMAP:保存`)),1)]),_:1},8,[`icon`,`disabled`,`loading`]),i(p).current?(g(),t(`span`,be,[r(`span`,{class:`mm-status-title`,title:i(p).current.title},e(i(p).current.title),9,xe),i(p).dirty?(g(),t(`span`,Se,`●`)):O(``,!0)])):O(``,!0)])]),r(`div`,Ce,[r(`div`,we,[r(`div`,Te,[r(`span`,Ee,e(i(L)(`@MINDMAP:文件列表`)),1),o(u,{size:`small`,text:``,icon:i(c),loading:i(p).refreshing,onClick:s[3]||=e=>i(p).refresh(),disabled:i(p).dirs.length===0},null,8,[`icon`,`loading`,`disabled`])]),N((g(),t(`div`,De,[i(p).error?(g(),t(`div`,Oe,e(i(p).error),1)):O(``,!0),i(p).dirs.length===0?(g(),m(B,{key:1,class:`mm-sidebar-empty`,size:`inline`,title:i(L)(`@MINDMAP:请先添加目录`)},null,8,[`title`])):(g(!0),t(_,{key:2},T(i(p).groups,n=>(g(),t(`div`,{key:n.dir,class:`mm-group`},[r(`div`,{class:d([`mm-group-header`,{active:We(n.dir)}]),title:n.dir,onClick:e=>G(n.dir),onContextmenu:e=>Ye(e,n.dir)},[o(D,{class:d([`mm-group-caret`,{collapsed:W.value[n.dir]}])},{default:k(()=>[o(i(S))]),_:1},8,[`class`]),r(`div`,Ae,[r(`div`,je,[r(`span`,Me,e(Ue(n.dir)),1),r(`span`,Ne,e(n.files.length),1)]),r(`div`,Pe,e(n.dir),1)])],42,ke),N(r(`div`,Fe,[n.error?(g(),t(`div`,{key:0,class:`mm-group-error`,title:n.error},[r(`span`,null,e(i(L)(`@MINDMAP:目录不存在或已删除`)),1),o(u,{size:`small`,text:``,type:`danger`,onClick:e=>Je(n.dir)},{default:k(()=>[h(e(i(L)(`@MINDMAP:移除目录`)),1)]),_:1},8,[`onClick`])],8,Ie)):n.files.length===0?(g(),m(B,{key:1,class:`mm-sidebar-empty`,size:`inline`,title:i(L)(`@MINDMAP:该目录暂无思维导图`)},null,8,[`title`])):(g(!0),t(_,{key:2},T(n.files,n=>(g(),t(`div`,{key:n.path,class:d([`mm-file-item`,{active:i(p).current?.path===n.path}]),onClick:e=>qe(n.path)},[r(`div`,Re,[r(`div`,{class:`mm-file-title`,title:n.title},e(n.title),9,ze),r(`div`,Be,e(lt(n.mtime))+` · `+e(ut(n.size)),1)]),r(`div`,{class:`mm-file-actions`,onClick:s[4]||=P(()=>{},[`stop`])},[o(u,{size:`small`,text:``,icon:i(E),onClick:e=>et(n),title:i(L)(`@MINDMAP:重命名`)},null,8,[`icon`,`onClick`,`title`]),o(u,{size:`small`,text:``,type:`danger`,icon:i(A),onClick:e=>$e(n),title:i(L)(`@MINDMAP:删除`)},null,8,[`icon`,`onClick`,`title`])])],10,Le))),128))],512),[[ie,!W.value[n.dir]]])]))),128))])),[[M,i(p).refreshing]])]),r(`div`,Ve,[i(p).current?(g(),m(i(ue),{key:ot.value,ref_key:`mmRef`,ref:I,data:ct.value,"preview-mode":$.value,onChange:tt,onSelect:nt,onCanvasTogglePreview:st},null,8,[`data`,`preview-mode`])):(g(),m(B,{key:0,class:`mm-editor-empty`,title:i(L)(`@MINDMAP:思维导图编辑器`),hint:i(p).dirs.length>0?i(L)(`@MINDMAP:从左侧选择或新建`):i(L)(`@MINDMAP:先选择目录提示`)},{icon:k(()=>[...s[7]||=[r(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[r(`circle`,{cx:`12`,cy:`12`,r:`2`}),r(`circle`,{cx:`5`,cy:`5`,r:`2`}),r(`circle`,{cx:`19`,cy:`5`,r:`2`}),r(`circle`,{cx:`5`,cy:`19`,r:`2`}),r(`circle`,{cx:`19`,cy:`19`,r:`2`}),r(`line`,{x1:`10.5`,y1:`10.5`,x2:`6.5`,y2:`6.5`}),r(`line`,{x1:`13.5`,y1:`10.5`,x2:`17.5`,y2:`6.5`}),r(`line`,{x1:`10.5`,y1:`13.5`,x2:`6.5`,y2:`17.5`}),r(`line`,{x1:`13.5`,y1:`13.5`,x2:`17.5`,y2:`17.5`})],-1)]]),_:1},8,[`title`,`hint`]))])]),o(i(ce),{visible:R.value,mode:`directory`,multiple:!0,theme:j.value?`dark`:`light`,locale:i(w),"default-path":i(p).activeDir||i(p).dirs[0]||``,onClose:s[5]||=e=>R.value=!1,onConfirm:H},null,8,[`visible`,`theme`,`locale`,`default-path`]),(g(),m(ne,{to:`body`},[Z.value?(g(),t(`div`,{key:0,class:`ctx-menu`,style:x({left:Z.value.x+`px`,top:Z.value.y+`px`}),onClick:s[6]||=P(()=>{},[`stop`])},[r(`button`,{class:`ctx-menu-item`,onClick:Xe},[s[8]||=r(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[r(`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`}),r(`path`,{d:`M3 7v10a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2`})],-1),h(` `+e(i(L)(`@MINDMAP:打开目录`)),1)]),r(`button`,{class:`ctx-menu-item`,onClick:Ze},[s[9]||=r(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[r(`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`}),r(`polyline`,{points:`14 2 14 8 20 8`}),r(`line`,{x1:`12`,y1:`13`,x2:`12`,y2:`19`}),r(`line`,{x1:`9`,y1:`16`,x2:`15`,y2:`16`})],-1),h(` `+e(i(L)(`@MINDMAP:在此新建`)),1)]),s[11]||=r(`div`,{class:`ctx-menu-sep`},null,-1),r(`button`,{class:`ctx-menu-item ctx-menu-item--danger`,onClick:Qe},[s[10]||=r(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[r(`polyline`,{points:`3 6 5 6 21 6`}),r(`path`,{d:`M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6`}),r(`path`,{d:`M10 11v6`}),r(`path`,{d:`M14 11v6`}),r(`path`,{d:`M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2`})],-1),h(` `+e(i(L)(`@MINDMAP:移除目录`)),1)])],4)):O(``,!0)]))])}}}),[[`__scopeId`,`data-v-6567b053`]]);export{G as default};
@@ -1 +1 @@
1
- import"./rolldown-runtime-C0FnF6B9.js";import{$r as e,An as t,Dn as n,Dr as r,En as i,Fn as a,Fr as o,Gt as ee,Ht as s,J as te,Jn as c,Jr as l,Ln as u,Nn as ne,On as re,Pn as d,Qn as f,Sn as p,U as ie,Vn as m,W as ae,Xn as h,Xr as g,er as _,g as oe,i as v,kn as y,lr as b,m as se,mr as x,r as S,xr as C,z as ce}from"./element-plus-J45pKUrE.js";import{n as w,t as T}from"./_plugin-vue_export-helper-Csn085FF.js";import{i as E}from"./index-C7Y9odvZ.js";m(),x(),o();var D={class:`monitor-view`},O={class:`monitor-toolbar`},k={class:`toolbar-title`},A={key:0,class:`toolbar-host`},j={class:`toolbar-actions`},M={class:`toolbar-label`},N={class:`toolbar-label`},P={class:`metric-card`},F={class:`metric-card__header`},I={class:`metric-card__body`},L={class:`metric-sub`},R=[`title`],z={class:`metric-card`},B={class:`metric-card__header`},V={class:`metric-card__body`},H={class:`metric-sub`},U={class:`metric-card__footer`},W={class:`metric-card`},G={class:`metric-card__header`},le={class:`metric-card__body`},ue={class:`metric-value`},de={class:`metric-sub`},fe={class:`metric-card__footer`},pe={class:`metric-card`},me={class:`metric-card__header`},he={class:`metric-card__body`},ge={class:`metric-value`},_e={class:`metric-sub`},ve={class:`metric-card__footer`},ye={key:0,class:`metric-card disk-card`},be={class:`metric-card__header`},xe={key:0,class:`disks-rows`},Se={class:`disk-row`},Ce={class:`disk-mount`},we={class:`disk-usage`},Te={key:1,class:`disks-empty`},Ee={key:2,class:`metric-card__footer disks-summary`},De={key:1,class:`monitor-placeholder`},Oe={key:2,class:`monitor-error`},ke={key:3,class:`monitor-ports`},Ae={class:`ports-header`},je={class:`ports-title`},Me={class:`ports-table-wrap`},Ne={class:`ports-table`},Pe={class:`col-protocol`},Fe={class:`col-address`},Ie={class:`col-state`},Le={class:`col-action`},Re={class:`col-protocol`},ze={class:`col-address`},Be={class:`col-port`},Ve={class:`port-num`},He={class:`col-state`},Ue={class:`col-pid`},We=[`title`],Ge={class:`col-action`},Ke=[`title`],qe={key:0},Je={colspan:`7`,class:`ports-empty`},K=T(u({__name:`MonitorView`,setup(o){let u=E(),m=C(``),x=C(`port`),T=C(`asc`);function K(e){x.value===e?T.value=T.value===`asc`?`desc`:`asc`:(x.value=e,T.value=`asc`)}let q=i(()=>{let e=u.ports.slice(),t=m.value.trim().toLowerCase();t&&(e=e.filter(e=>String(e.localPort).includes(t)||String(e.pid).includes(t)||(e.processName||``).toLowerCase().includes(t)||(e.localAddress||``).toLowerCase().includes(t)||(e.protocol||``).toLowerCase().includes(t)||(e.state||``).toLowerCase().includes(t)));let n=T.value===`asc`?1:-1;return e.sort((e,t)=>{let r,i;return x.value===`port`?(r=e.localPort,i=t.localPort):x.value===`pid`?(r=Number(e.pid)||0,i=Number(t.pid)||0):(r=(e.processName||``).toLowerCase(),i=(t.processName||``).toLowerCase()),r<i?-1*n:r>i?1*n:0}),e});function J(e){if(!Number.isFinite(e)||e<=0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${n.toFixed(r===0?0:1)} ${t[r]}`}function Y(e){if(!Number.isFinite(e)||e<=0)return`-`;let t=Math.floor(e/86400),n=Math.floor(e%86400/3600),r=Math.floor(e%3600/60),i=Math.floor(e%60),a=[];return t>0&&a.push(`${t} ${w(`@MONITOR:天`)}`),n>0&&a.push(`${n} ${w(`@MONITOR:时`)}`),r>0&&a.push(`${r} ${w(`@MONITOR:分`)}`),a.push(`${i} ${w(`@MONITOR:秒`)}`),a.join(` `)}function X(e){return e>=90?`var(--color-danger)`:e>=70?`var(--color-warning)`:`var(--color-success)`}let Z=C(new Set),Ye=new Set([0,1,4]),Q=new Set([`system`,`idle`,`registry`,`memory compression`,`secure system`,`smss.exe`,`csrss.exe`,`wininit.exe`,`winlogon.exe`,`services.exe`,`lsass.exe`,`svchost.exe`,`fontdrvhost.exe`,`dwm.exe`]);function Xe(e){if(Ye.has(Number(e.pid)))return!0;let t=(e.processName||``).trim().toLowerCase();return t?Q.has(t)||Q.has(t.replace(/\.exe$/,``)):!1}async function Ze(e){let t=e.pid,n=e.processName||w(`@MONITOR:未知进程`);try{await S.confirm(w(`@MONITOR:确认终止进程提示`).replace(`{pid}`,String(t)).replace(`{process}`,n).replace(`{port}`,String(e.localPort)),w(`@MONITOR:终止进程`),{confirmButtonText:w(`@MONITOR:终止`),cancelButtonText:w(`@MONITOR:取消`),type:`warning`})}catch{return}Z.value.add(t);try{await u.killProcess(t,!0),v.success(w(`@MONITOR:已终止进程`).replace(`{pid}`,String(t)))}catch(e){v.error(e?.message||w(`@MONITOR:终止进程失败`))}finally{Z.value.delete(t)}}function $(){u.refresh().catch(e=>{v.error(e?.message||w(`@MONITOR:刷新失败`))})}function Qe(e){u.setAutoRefresh(e)}function $e(e){u.setShowAllPorts(e)}return h(()=>{u.startAutoRefresh()}),c(()=>{u.stopAutoRefresh()}),(i,o)=>{let c=se,h=ae,v=ce,S=oe,C=te,E=ie;return f(),t(`div`,D,[n(`div`,O,[n(`div`,k,[o[4]||=n(`svg`,{viewBox:`0 0 24 24`,width:`18`,height:`18`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`path`,{d:`M22 12h-4l-3 9L9 3l-3 9H2`})],-1),n(`span`,null,e(r(w)(`@MONITOR:系统监控`)),1),r(u).overview?(f(),t(`span`,A,e(r(u).overview.system.hostname)+` · `+e(r(u).overview.system.platform)+`/`+e(r(u).overview.system.arch),1)):y(``,!0)]),n(`div`,j,[a(h,{content:r(w)(`@MONITOR:显示所有连接`),placement:`bottom`},{default:b(()=>[a(c,{"model-value":r(u).showAllPorts,onChange:$e,size:`small`},null,8,[`model-value`])]),_:1},8,[`content`]),n(`span`,M,e(r(w)(`@MONITOR:全部连接`)),1),a(h,{content:r(w)(`@MONITOR:自动刷新`),placement:`bottom`},{default:b(()=>[a(c,{"model-value":r(u).autoRefresh,onChange:Qe,size:`small`},null,8,[`model-value`])]),_:1},8,[`content`]),n(`span`,N,e(r(w)(`@MONITOR:自动`)),1),a(v,{size:`small`,icon:r(s),loading:r(u).loading,onClick:$},{default:b(()=>[d(e(r(w)(`@MONITOR:刷新`)),1)]),_:1},8,[`icon`,`loading`])])]),r(u).overview?(f(),t(`div`,{key:0,class:l([`monitor-cards`,{"monitor-cards--no-disks":!r(u).overview?.disks}])},[n(`div`,P,[n(`div`,F,[o[5]||=n(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`rect`,{x:`4`,y:`4`,width:`16`,height:`16`,rx:`2`}),n(`rect`,{x:`9`,y:`9`,width:`6`,height:`6`}),n(`path`,{d:`M9 2v2M15 2v2M9 20v2M15 20v2M2 9h2M2 15h2M20 9h2M20 15h2`})],-1),n(`span`,null,e(r(w)(`@MONITOR:CPU 占用`)),1)]),n(`div`,I,[n(`div`,{class:`metric-value`,style:g({color:X(r(u).overview.cpu.usage)})},[d(e(r(u).overview.cpu.usage.toFixed(1)),1),o[6]||=n(`span`,{class:`metric-unit`},`%`,-1)],4),n(`div`,L,e(r(u).overview.cpu.cores)+` `+e(r(w)(`@MONITOR:核心`)),1)]),a(S,{percentage:r(u).overview.cpu.usage,"stroke-width":6,"show-text":!1,color:X(r(u).overview.cpu.usage)},null,8,[`percentage`,`color`]),n(`div`,{class:`metric-card__footer`,title:r(u).overview.cpu.model},e(r(u).overview.cpu.model),9,R)]),n(`div`,z,[n(`div`,B,[o[7]||=n(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`rect`,{x:`2`,y:`6`,width:`20`,height:`12`,rx:`2`}),n(`path`,{d:`M6 10v4M10 10v4M14 10v4M18 10v4`})],-1),n(`span`,null,e(r(w)(`@MONITOR:内存占用`)),1)]),n(`div`,V,[n(`div`,{class:`metric-value`,style:g({color:X(r(u).overview.memory.usagePercent)})},[d(e(r(u).overview.memory.usagePercent.toFixed(1)),1),o[8]||=n(`span`,{class:`metric-unit`},`%`,-1)],4),n(`div`,H,e(J(r(u).overview.memory.used))+` / `+e(J(r(u).overview.memory.total)),1)]),a(S,{percentage:r(u).overview.memory.usagePercent,"stroke-width":6,"show-text":!1,color:X(r(u).overview.memory.usagePercent)},null,8,[`percentage`,`color`]),n(`div`,U,e(r(w)(`@MONITOR:空闲`))+` `+e(J(r(u).overview.memory.free)),1)]),n(`div`,W,[n(`div`,G,[o[9]||=n(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`circle`,{cx:`12`,cy:`12`,r:`10`}),n(`polyline`,{points:`12 6 12 12 16 14`})],-1),n(`span`,null,e(r(w)(`@MONITOR:系统运行时间`)),1)]),n(`div`,le,[n(`div`,ue,e(Y(r(u).overview.system.uptime)),1),n(`div`,de,e(r(u).overview.system.nodeVersion),1)]),n(`div`,fe,e(r(u).overview.system.hostname),1)]),n(`div`,pe,[n(`div`,me,[o[10]||=n(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`path`,{d:`M22 12h-4l-3 9L9 3l-3 9H2`})],-1),n(`span`,null,e(r(w)(`@MONITOR:监听端口`)),1)]),n(`div`,he,[n(`div`,ge,e(r(u).ports.length),1),n(`div`,_e,e(r(w)(`@MONITOR:TCP`))+` `+e(r(u).ports.filter(e=>e.protocol===`TCP`).length)+` · `+e(r(w)(`@MONITOR:UDP`))+` `+e(r(u).ports.filter(e=>e.protocol===`UDP`).length),1)]),n(`div`,ve,e(r(u).showAllPorts?r(w)(`@MONITOR:显示全部连接`):r(w)(`@MONITOR:仅监听端口`)),1)]),r(u).overview.disks?(f(),t(`div`,ye,[n(`div`,be,[o[11]||=ne(`<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-v-954fa37e><line x1="22" y1="12" x2="2" y2="12" data-v-954fa37e></line><path d="M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z" data-v-954fa37e></path><line x1="6" y1="16" x2="6.01" y2="16" data-v-954fa37e></line><line x1="10" y1="16" x2="10.01" y2="16" data-v-954fa37e></line></svg>`,1),n(`span`,null,e(r(w)(`@MONITOR:磁盘占用`)),1)]),r(u).overview.disks.drives.length>0?(f(),t(`div`,xe,[(f(!0),t(p,null,_(r(u).overview.disks.drives,r=>(f(),t(`div`,{class:`disk-item`,key:r.mount},[n(`div`,Se,[n(`span`,Ce,e(r.mount),1),a(S,{class:`disk-bar`,percentage:r.usagePercent,"stroke-width":6,"show-text":!1,color:X(r.usagePercent)},null,8,[`percentage`,`color`]),n(`span`,{class:`disk-percent`,style:g({color:X(r.usagePercent)})},e(r.usagePercent.toFixed(1))+`% `,5)]),n(`div`,we,e(J(r.used))+` / `+e(J(r.total)),1)]))),128))])):(f(),t(`div`,Te,e(r(w)(`@MONITOR:暂无磁盘数据`)),1)),r(u).overview.disks.drives.length>1?(f(),t(`div`,Ee,e(J(r(u).overview.disks.used))+` / `+e(J(r(u).overview.disks.total))+` · `+e(r(u).overview.disks.usagePercent.toFixed(1))+`% `,1)):y(``,!0)])):y(``,!0)],2)):y(``,!0),!r(u).overview&&r(u).loading?(f(),t(`div`,De,[a(C,{class:`is-loading`},{default:b(()=>[a(r(s))]),_:1}),n(`span`,null,e(r(w)(`@MONITOR:加载中`)),1)])):y(``,!0),r(u).error&&!r(u).overview?(f(),t(`div`,Oe,[o[12]||=n(`svg`,{viewBox:`0 0 24 24`,width:`20`,height:`20`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`circle`,{cx:`12`,cy:`12`,r:`10`}),n(`line`,{x1:`12`,y1:`8`,x2:`12`,y2:`12`}),n(`line`,{x1:`12`,y1:`16`,x2:`12.01`,y2:`16`})],-1),n(`span`,null,e(r(u).error),1),a(v,{size:`small`,onClick:$},{default:b(()=>[d(e(r(w)(`@MONITOR:重试`)),1)]),_:1})])):y(``,!0),r(u).overview?(f(),t(`div`,ke,[n(`div`,Ae,[n(`span`,je,e(r(w)(`@MONITOR:端口占用列表`)),1),a(E,{modelValue:m.value,"onUpdate:modelValue":o[0]||=e=>m.value=e,placeholder:r(w)(`@MONITOR:搜索端口 / PID / 进程名`),size:`small`,clearable:``,class:`ports-search`},{prefix:b(()=>[a(C,null,{default:b(()=>[a(r(ee))]),_:1})]),_:1},8,[`modelValue`,`placeholder`])]),n(`div`,Me,[n(`table`,Ne,[n(`thead`,null,[n(`tr`,null,[n(`th`,Pe,e(r(w)(`@MONITOR:协议`)),1),n(`th`,Fe,e(r(w)(`@MONITOR:本地地址`)),1),n(`th`,{class:`col-port sortable`,onClick:o[1]||=e=>K(`port`)},[d(e(r(w)(`@MONITOR:端口`))+` `,1),n(`span`,{class:l([`sort-arrow`,{active:x.value===`port`,desc:T.value===`desc`}])},`↕`,2)]),n(`th`,Ie,e(r(w)(`@MONITOR:状态`)),1),n(`th`,{class:`col-pid sortable`,onClick:o[2]||=e=>K(`pid`)},[o[13]||=d(` PID `,-1),n(`span`,{class:l([`sort-arrow`,{active:x.value===`pid`,desc:T.value===`desc`}])},`↕`,2)]),n(`th`,{class:`col-process sortable`,onClick:o[3]||=e=>K(`process`)},[d(e(r(w)(`@MONITOR:进程`))+` `,1),n(`span`,{class:l([`sort-arrow`,{active:x.value===`process`,desc:T.value===`desc`}])},`↕`,2)]),n(`th`,Le,e(r(w)(`@MONITOR:操作`)),1)])]),n(`tbody`,null,[(f(!0),t(p,null,_(q.value,(i,a)=>(f(),t(`tr`,{key:`${i.protocol}-${i.localPort}-${i.pid}-${a}`},[n(`td`,Re,[n(`span`,{class:l([`proto-badge`,`proto-${i.protocol.toLowerCase()}`])},e(i.protocol),3)]),n(`td`,ze,e(i.localAddress),1),n(`td`,Be,[n(`span`,Ve,e(i.localPort),1)]),n(`td`,He,[n(`span`,{class:l([`state-tag`,`state-${(i.state||`unknown`).toLowerCase()}`])},e(i.state||`-`),3)]),n(`td`,Ue,e(i.pid),1),n(`td`,{class:`col-process`,title:i.processName},e(i.processName||r(w)(`@MONITOR:未知`)),9,We),n(`td`,Ge,[Xe(i)?(f(),t(`span`,{key:0,class:`kill-protected`,title:r(w)(`@MONITOR:系统进程,不可终止`)},e(r(w)(`@MONITOR:系统`)),9,Ke)):(f(),re(v,{key:1,class:`kill-btn`,size:`small`,text:``,loading:Z.value.has(i.pid),disabled:Z.value.has(i.pid),onClick:e=>Ze(i)},{default:b(()=>[d(e(r(w)(`@MONITOR:终止`)),1)]),_:1},8,[`loading`,`disabled`,`onClick`]))])]))),128)),q.value.length===0?(f(),t(`tr`,qe,[n(`td`,Je,e(m.value?r(w)(`@MONITOR:无匹配结果`):r(w)(`@MONITOR:暂无端口占用`)),1)])):y(``,!0)])])])])):y(``,!0)])}}}),[[`__scopeId`,`data-v-954fa37e`]]);export{K as default};
1
+ import"./rolldown-runtime-C0FnF6B9.js";import{$r as e,An as t,Dn as n,Dr as r,En as i,Fn as a,Fr as o,Gt as ee,Ht as s,J as te,Jn as c,Jr as l,Ln as u,Nn as ne,On as re,Pn as d,Qn as f,Sn as p,U as ie,Vn as m,W as ae,Xn as h,Xr as g,er as _,g as oe,i as v,kn as y,lr as b,m as se,mr as x,r as S,xr as C,z as ce}from"./element-plus-J45pKUrE.js";import{n as w,t as T}from"./_plugin-vue_export-helper-Csn085FF.js";import{i as E}from"./index-DQ82h1aq.js";m(),x(),o();var D={class:`monitor-view`},O={class:`monitor-toolbar`},k={class:`toolbar-title`},A={key:0,class:`toolbar-host`},j={class:`toolbar-actions`},M={class:`toolbar-label`},N={class:`toolbar-label`},P={class:`metric-card`},F={class:`metric-card__header`},I={class:`metric-card__body`},L={class:`metric-sub`},R=[`title`],z={class:`metric-card`},B={class:`metric-card__header`},V={class:`metric-card__body`},H={class:`metric-sub`},U={class:`metric-card__footer`},W={class:`metric-card`},G={class:`metric-card__header`},le={class:`metric-card__body`},ue={class:`metric-value`},de={class:`metric-sub`},fe={class:`metric-card__footer`},pe={class:`metric-card`},me={class:`metric-card__header`},he={class:`metric-card__body`},ge={class:`metric-value`},_e={class:`metric-sub`},ve={class:`metric-card__footer`},ye={key:0,class:`metric-card disk-card`},be={class:`metric-card__header`},xe={key:0,class:`disks-rows`},Se={class:`disk-row`},Ce={class:`disk-mount`},we={class:`disk-usage`},Te={key:1,class:`disks-empty`},Ee={key:2,class:`metric-card__footer disks-summary`},De={key:1,class:`monitor-placeholder`},Oe={key:2,class:`monitor-error`},ke={key:3,class:`monitor-ports`},Ae={class:`ports-header`},je={class:`ports-title`},Me={class:`ports-table-wrap`},Ne={class:`ports-table`},Pe={class:`col-protocol`},Fe={class:`col-address`},Ie={class:`col-state`},Le={class:`col-action`},Re={class:`col-protocol`},ze={class:`col-address`},Be={class:`col-port`},Ve={class:`port-num`},He={class:`col-state`},Ue={class:`col-pid`},We=[`title`],Ge={class:`col-action`},Ke=[`title`],qe={key:0},Je={colspan:`7`,class:`ports-empty`},K=T(u({__name:`MonitorView`,setup(o){let u=E(),m=C(``),x=C(`port`),T=C(`asc`);function K(e){x.value===e?T.value=T.value===`asc`?`desc`:`asc`:(x.value=e,T.value=`asc`)}let q=i(()=>{let e=u.ports.slice(),t=m.value.trim().toLowerCase();t&&(e=e.filter(e=>String(e.localPort).includes(t)||String(e.pid).includes(t)||(e.processName||``).toLowerCase().includes(t)||(e.localAddress||``).toLowerCase().includes(t)||(e.protocol||``).toLowerCase().includes(t)||(e.state||``).toLowerCase().includes(t)));let n=T.value===`asc`?1:-1;return e.sort((e,t)=>{let r,i;return x.value===`port`?(r=e.localPort,i=t.localPort):x.value===`pid`?(r=Number(e.pid)||0,i=Number(t.pid)||0):(r=(e.processName||``).toLowerCase(),i=(t.processName||``).toLowerCase()),r<i?-1*n:r>i?1*n:0}),e});function J(e){if(!Number.isFinite(e)||e<=0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${n.toFixed(r===0?0:1)} ${t[r]}`}function Y(e){if(!Number.isFinite(e)||e<=0)return`-`;let t=Math.floor(e/86400),n=Math.floor(e%86400/3600),r=Math.floor(e%3600/60),i=Math.floor(e%60),a=[];return t>0&&a.push(`${t} ${w(`@MONITOR:天`)}`),n>0&&a.push(`${n} ${w(`@MONITOR:时`)}`),r>0&&a.push(`${r} ${w(`@MONITOR:分`)}`),a.push(`${i} ${w(`@MONITOR:秒`)}`),a.join(` `)}function X(e){return e>=90?`var(--color-danger)`:e>=70?`var(--color-warning)`:`var(--color-success)`}let Z=C(new Set),Ye=new Set([0,1,4]),Q=new Set([`system`,`idle`,`registry`,`memory compression`,`secure system`,`smss.exe`,`csrss.exe`,`wininit.exe`,`winlogon.exe`,`services.exe`,`lsass.exe`,`svchost.exe`,`fontdrvhost.exe`,`dwm.exe`]);function Xe(e){if(Ye.has(Number(e.pid)))return!0;let t=(e.processName||``).trim().toLowerCase();return t?Q.has(t)||Q.has(t.replace(/\.exe$/,``)):!1}async function Ze(e){let t=e.pid,n=e.processName||w(`@MONITOR:未知进程`);try{await S.confirm(w(`@MONITOR:确认终止进程提示`).replace(`{pid}`,String(t)).replace(`{process}`,n).replace(`{port}`,String(e.localPort)),w(`@MONITOR:终止进程`),{confirmButtonText:w(`@MONITOR:终止`),cancelButtonText:w(`@MONITOR:取消`),type:`warning`})}catch{return}Z.value.add(t);try{await u.killProcess(t,!0),v.success(w(`@MONITOR:已终止进程`).replace(`{pid}`,String(t)))}catch(e){v.error(e?.message||w(`@MONITOR:终止进程失败`))}finally{Z.value.delete(t)}}function $(){u.refresh().catch(e=>{v.error(e?.message||w(`@MONITOR:刷新失败`))})}function Qe(e){u.setAutoRefresh(e)}function $e(e){u.setShowAllPorts(e)}return h(()=>{u.startAutoRefresh()}),c(()=>{u.stopAutoRefresh()}),(i,o)=>{let c=se,h=ae,v=ce,S=oe,C=te,E=ie;return f(),t(`div`,D,[n(`div`,O,[n(`div`,k,[o[4]||=n(`svg`,{viewBox:`0 0 24 24`,width:`18`,height:`18`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`path`,{d:`M22 12h-4l-3 9L9 3l-3 9H2`})],-1),n(`span`,null,e(r(w)(`@MONITOR:系统监控`)),1),r(u).overview?(f(),t(`span`,A,e(r(u).overview.system.hostname)+` · `+e(r(u).overview.system.platform)+`/`+e(r(u).overview.system.arch),1)):y(``,!0)]),n(`div`,j,[a(h,{content:r(w)(`@MONITOR:显示所有连接`),placement:`bottom`},{default:b(()=>[a(c,{"model-value":r(u).showAllPorts,onChange:$e,size:`small`},null,8,[`model-value`])]),_:1},8,[`content`]),n(`span`,M,e(r(w)(`@MONITOR:全部连接`)),1),a(h,{content:r(w)(`@MONITOR:自动刷新`),placement:`bottom`},{default:b(()=>[a(c,{"model-value":r(u).autoRefresh,onChange:Qe,size:`small`},null,8,[`model-value`])]),_:1},8,[`content`]),n(`span`,N,e(r(w)(`@MONITOR:自动`)),1),a(v,{size:`small`,icon:r(s),loading:r(u).loading,onClick:$},{default:b(()=>[d(e(r(w)(`@MONITOR:刷新`)),1)]),_:1},8,[`icon`,`loading`])])]),r(u).overview?(f(),t(`div`,{key:0,class:l([`monitor-cards`,{"monitor-cards--no-disks":!r(u).overview?.disks}])},[n(`div`,P,[n(`div`,F,[o[5]||=n(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`rect`,{x:`4`,y:`4`,width:`16`,height:`16`,rx:`2`}),n(`rect`,{x:`9`,y:`9`,width:`6`,height:`6`}),n(`path`,{d:`M9 2v2M15 2v2M9 20v2M15 20v2M2 9h2M2 15h2M20 9h2M20 15h2`})],-1),n(`span`,null,e(r(w)(`@MONITOR:CPU 占用`)),1)]),n(`div`,I,[n(`div`,{class:`metric-value`,style:g({color:X(r(u).overview.cpu.usage)})},[d(e(r(u).overview.cpu.usage.toFixed(1)),1),o[6]||=n(`span`,{class:`metric-unit`},`%`,-1)],4),n(`div`,L,e(r(u).overview.cpu.cores)+` `+e(r(w)(`@MONITOR:核心`)),1)]),a(S,{percentage:r(u).overview.cpu.usage,"stroke-width":6,"show-text":!1,color:X(r(u).overview.cpu.usage)},null,8,[`percentage`,`color`]),n(`div`,{class:`metric-card__footer`,title:r(u).overview.cpu.model},e(r(u).overview.cpu.model),9,R)]),n(`div`,z,[n(`div`,B,[o[7]||=n(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`rect`,{x:`2`,y:`6`,width:`20`,height:`12`,rx:`2`}),n(`path`,{d:`M6 10v4M10 10v4M14 10v4M18 10v4`})],-1),n(`span`,null,e(r(w)(`@MONITOR:内存占用`)),1)]),n(`div`,V,[n(`div`,{class:`metric-value`,style:g({color:X(r(u).overview.memory.usagePercent)})},[d(e(r(u).overview.memory.usagePercent.toFixed(1)),1),o[8]||=n(`span`,{class:`metric-unit`},`%`,-1)],4),n(`div`,H,e(J(r(u).overview.memory.used))+` / `+e(J(r(u).overview.memory.total)),1)]),a(S,{percentage:r(u).overview.memory.usagePercent,"stroke-width":6,"show-text":!1,color:X(r(u).overview.memory.usagePercent)},null,8,[`percentage`,`color`]),n(`div`,U,e(r(w)(`@MONITOR:空闲`))+` `+e(J(r(u).overview.memory.free)),1)]),n(`div`,W,[n(`div`,G,[o[9]||=n(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`circle`,{cx:`12`,cy:`12`,r:`10`}),n(`polyline`,{points:`12 6 12 12 16 14`})],-1),n(`span`,null,e(r(w)(`@MONITOR:系统运行时间`)),1)]),n(`div`,le,[n(`div`,ue,e(Y(r(u).overview.system.uptime)),1),n(`div`,de,e(r(u).overview.system.nodeVersion),1)]),n(`div`,fe,e(r(u).overview.system.hostname),1)]),n(`div`,pe,[n(`div`,me,[o[10]||=n(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`path`,{d:`M22 12h-4l-3 9L9 3l-3 9H2`})],-1),n(`span`,null,e(r(w)(`@MONITOR:监听端口`)),1)]),n(`div`,he,[n(`div`,ge,e(r(u).ports.length),1),n(`div`,_e,e(r(w)(`@MONITOR:TCP`))+` `+e(r(u).ports.filter(e=>e.protocol===`TCP`).length)+` · `+e(r(w)(`@MONITOR:UDP`))+` `+e(r(u).ports.filter(e=>e.protocol===`UDP`).length),1)]),n(`div`,ve,e(r(u).showAllPorts?r(w)(`@MONITOR:显示全部连接`):r(w)(`@MONITOR:仅监听端口`)),1)]),r(u).overview.disks?(f(),t(`div`,ye,[n(`div`,be,[o[11]||=ne(`<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-v-954fa37e><line x1="22" y1="12" x2="2" y2="12" data-v-954fa37e></line><path d="M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z" data-v-954fa37e></path><line x1="6" y1="16" x2="6.01" y2="16" data-v-954fa37e></line><line x1="10" y1="16" x2="10.01" y2="16" data-v-954fa37e></line></svg>`,1),n(`span`,null,e(r(w)(`@MONITOR:磁盘占用`)),1)]),r(u).overview.disks.drives.length>0?(f(),t(`div`,xe,[(f(!0),t(p,null,_(r(u).overview.disks.drives,r=>(f(),t(`div`,{class:`disk-item`,key:r.mount},[n(`div`,Se,[n(`span`,Ce,e(r.mount),1),a(S,{class:`disk-bar`,percentage:r.usagePercent,"stroke-width":6,"show-text":!1,color:X(r.usagePercent)},null,8,[`percentage`,`color`]),n(`span`,{class:`disk-percent`,style:g({color:X(r.usagePercent)})},e(r.usagePercent.toFixed(1))+`% `,5)]),n(`div`,we,e(J(r.used))+` / `+e(J(r.total)),1)]))),128))])):(f(),t(`div`,Te,e(r(w)(`@MONITOR:暂无磁盘数据`)),1)),r(u).overview.disks.drives.length>1?(f(),t(`div`,Ee,e(J(r(u).overview.disks.used))+` / `+e(J(r(u).overview.disks.total))+` · `+e(r(u).overview.disks.usagePercent.toFixed(1))+`% `,1)):y(``,!0)])):y(``,!0)],2)):y(``,!0),!r(u).overview&&r(u).loading?(f(),t(`div`,De,[a(C,{class:`is-loading`},{default:b(()=>[a(r(s))]),_:1}),n(`span`,null,e(r(w)(`@MONITOR:加载中`)),1)])):y(``,!0),r(u).error&&!r(u).overview?(f(),t(`div`,Oe,[o[12]||=n(`svg`,{viewBox:`0 0 24 24`,width:`20`,height:`20`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`circle`,{cx:`12`,cy:`12`,r:`10`}),n(`line`,{x1:`12`,y1:`8`,x2:`12`,y2:`12`}),n(`line`,{x1:`12`,y1:`16`,x2:`12.01`,y2:`16`})],-1),n(`span`,null,e(r(u).error),1),a(v,{size:`small`,onClick:$},{default:b(()=>[d(e(r(w)(`@MONITOR:重试`)),1)]),_:1})])):y(``,!0),r(u).overview?(f(),t(`div`,ke,[n(`div`,Ae,[n(`span`,je,e(r(w)(`@MONITOR:端口占用列表`)),1),a(E,{modelValue:m.value,"onUpdate:modelValue":o[0]||=e=>m.value=e,placeholder:r(w)(`@MONITOR:搜索端口 / PID / 进程名`),size:`small`,clearable:``,class:`ports-search`},{prefix:b(()=>[a(C,null,{default:b(()=>[a(r(ee))]),_:1})]),_:1},8,[`modelValue`,`placeholder`])]),n(`div`,Me,[n(`table`,Ne,[n(`thead`,null,[n(`tr`,null,[n(`th`,Pe,e(r(w)(`@MONITOR:协议`)),1),n(`th`,Fe,e(r(w)(`@MONITOR:本地地址`)),1),n(`th`,{class:`col-port sortable`,onClick:o[1]||=e=>K(`port`)},[d(e(r(w)(`@MONITOR:端口`))+` `,1),n(`span`,{class:l([`sort-arrow`,{active:x.value===`port`,desc:T.value===`desc`}])},`↕`,2)]),n(`th`,Ie,e(r(w)(`@MONITOR:状态`)),1),n(`th`,{class:`col-pid sortable`,onClick:o[2]||=e=>K(`pid`)},[o[13]||=d(` PID `,-1),n(`span`,{class:l([`sort-arrow`,{active:x.value===`pid`,desc:T.value===`desc`}])},`↕`,2)]),n(`th`,{class:`col-process sortable`,onClick:o[3]||=e=>K(`process`)},[d(e(r(w)(`@MONITOR:进程`))+` `,1),n(`span`,{class:l([`sort-arrow`,{active:x.value===`process`,desc:T.value===`desc`}])},`↕`,2)]),n(`th`,Le,e(r(w)(`@MONITOR:操作`)),1)])]),n(`tbody`,null,[(f(!0),t(p,null,_(q.value,(i,a)=>(f(),t(`tr`,{key:`${i.protocol}-${i.localPort}-${i.pid}-${a}`},[n(`td`,Re,[n(`span`,{class:l([`proto-badge`,`proto-${i.protocol.toLowerCase()}`])},e(i.protocol),3)]),n(`td`,ze,e(i.localAddress),1),n(`td`,Be,[n(`span`,Ve,e(i.localPort),1)]),n(`td`,He,[n(`span`,{class:l([`state-tag`,`state-${(i.state||`unknown`).toLowerCase()}`])},e(i.state||`-`),3)]),n(`td`,Ue,e(i.pid),1),n(`td`,{class:`col-process`,title:i.processName},e(i.processName||r(w)(`@MONITOR:未知`)),9,We),n(`td`,Ge,[Xe(i)?(f(),t(`span`,{key:0,class:`kill-protected`,title:r(w)(`@MONITOR:系统进程,不可终止`)},e(r(w)(`@MONITOR:系统`)),9,Ke)):(f(),re(v,{key:1,class:`kill-btn`,size:`small`,text:``,loading:Z.value.has(i.pid),disabled:Z.value.has(i.pid),onClick:e=>Ze(i)},{default:b(()=>[d(e(r(w)(`@MONITOR:终止`)),1)]),_:1},8,[`loading`,`disabled`,`onClick`]))])]))),128)),q.value.length===0?(f(),t(`tr`,qe,[n(`td`,Je,e(m.value?r(w)(`@MONITOR:无匹配结果`):r(w)(`@MONITOR:暂无端口占用`)),1)])):y(``,!0)])])])])):y(``,!0)])}}}),[[`__scopeId`,`data-v-954fa37e`]]);export{K as default};
@@ -1 +1 @@
1
- import"./rolldown-runtime-C0FnF6B9.js";import{$r as e,An as t,Dn as n,Dr as r,En as i,F as a,Fn as o,Fr as s,I as c,J as l,Jr as u,Ln as d,M as ee,On as f,Pn as p,Qn as m,Sn as h,Vn as g,W as te,Wt as ne,er as _,i as v,j as re,kn as ie,lr as y,lt as ae,m as oe,mr as b,r as x,rn as se,sr as S,xr as C,z as ce,zt as le}from"./element-plus-J45pKUrE.js";import{b as w}from"./vendor-B3NyhlYR.js";import{t as T}from"./_plugin-vue_export-helper-Csn085FF.js";import{t as E}from"./SvgIcon-5AlG3IfR.js";import{t as ue}from"./configStore-DOaPZ6Mq.js";import{t as de}from"./CommonDialog-j_53ORvj.js";import{W as D}from"./index-C7Y9odvZ.js";g(),b(),s();var fe={class:`project-startup-dialog`},pe={class:`after-quick-push`},me={class:`after-quick-push__header`},he={class:`after-quick-push__title`},ge={class:`after-quick-push__switch`},_e={class:`after-quick-push__label`},ve={class:`after-quick-push__row`},O={class:`after-quick-push__hint`},k={class:`startup-toolbar`},A={class:`startup-toolbar__left`},j={class:`startup-toolbar__title`},M={class:`startup-toolbar__meta`},N={key:0,class:`startup-toolbar__warn`},P={class:`startup-toolbar__right`},F={class:`startup-auto-run`},ye={class:`startup-auto-run__label`},be={key:0,class:`startup-empty`},xe={key:1,class:`startup-list`},Se={class:`startup-item__main`},Ce=[`title`],we=[`title`],Te=[`title`],Ee=[`title`],De=[`title`],Oe={class:`startup-item__actions`},ke={class:`startup-add`},Ae={class:`startup-add__title`},je={class:`startup-add__type`},Me={class:`startup-add__row`},Ne={class:`startup-option`},Pe={class:`startup-option__name`},Fe={class:`startup-option__cmd`},Ie={class:`startup-option`},Le={class:`startup-option__name`},Re={class:`startup-option__cmd`},I=T(d({__name:`ProjectStartupDialog`,props:{visible:{type:Boolean}},emits:[`update:visible`,`execute-command`,`execute-workflow`],setup(s,{emit:d}){let{t:g}=w(),b=s,T=d,E=ue(),D=i({get:()=>b.visible,set:e=>T(`update:visible`,e)}),I=i({get:()=>E.startupAutoRun,set:async e=>{Z.value=!0;try{await E.saveStartupItems(L.value,e)}finally{Z.value=!1}}}),L=i({get:()=>E.startupItems,set:e=>{E.saveStartupItems(e,I.value)}}),R=i(()=>E.customCommands||[]),z=i(()=>{let e=new Map;for(let t of R.value)t?.id&&e.set(String(t.id),t);return e}),B=i(()=>E.orchestrations||[]),V=i(()=>{let e=new Map;for(let t of B.value)t?.id&&e.set(String(t.id),t);return e}),H=i({get:()=>E.afterQuickPushAction,set:e=>{E.saveAfterQuickPushAction(e)}}),U=i({get:()=>!!H.value?.enabled,set:async e=>{K.value=!0;try{await E.saveAfterQuickPushAction({enabled:e,type:W.value,refId:G.value})}finally{K.value=!1}}}),W=i({get:()=>H.value?.type===`workflow`?`workflow`:`command`,set:async e=>{K.value=!0;try{G.value=``,await E.saveAfterQuickPushAction({enabled:U.value,type:e,refId:``})}finally{K.value=!1}}}),G=C(``),K=C(!1);S(()=>E.afterQuickPushAction,e=>{G.value=String(e?.refId||``)},{immediate:!0});async function ze(e){K.value=!0;try{await E.saveAfterQuickPushAction({enabled:U.value,type:W.value,refId:e})}finally{K.value=!1}}let q=i(()=>L.value.map(e=>({...e,cmd:e.type===`command`?z.value.get(e.refId):null,wf:e.type===`workflow`?V.value.get(e.refId):null})).filter(e=>e.type===`command`?!!e.cmd:!!e.wf)),J=i(()=>L.value.filter(e=>e.type===`workflow`?!V.value.get(e.refId):!z.value.get(e.refId)).length),Y=C(`command`),X=C(``),Z=C(!1),Q=C({});async function Be(e,t){Q.value={...Q.value,[e]:!0};try{let n=L.value.map(n=>n.id===e?{...n,enabled:t}:n);await E.saveStartupItems(n,I.value)}finally{let{[e]:t,...n}=Q.value;Q.value=n}}function Ve(){if(!X.value){Y.value===`workflow`?v.warning(g(`@PSTART:请选择一个工作流`)):v.warning(g(`@PSTART:请选择一个命令`));return}if(L.value.some(e=>e.type===Y.value&&e.refId===X.value)){v.info(g(`@PSTART:该启动项已存在`));return}let e={id:`startup_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,type:Y.value,refId:X.value,createdAt:Date.now(),enabled:!0},t=[...L.value,e];E.saveStartupItems(t,I.value),X.value=``,v.success(g(`@PSTART:已添加启动项`))}async function $(e){try{await x.confirm(g(`@PSTART:删除确认`),g(`@PSTART:删除启动项`),{confirmButtonText:g(`@PSTART:确定`),cancelButtonText:g(`@PSTART:取消`),type:`warning`});let t=L.value.filter(t=>t.id!==e.id);E.saveStartupItems(t,I.value),v.success(g(`@PSTART:已删除启动项`))}catch{}}function He(){let e=L.value.length,t=L.value.filter(e=>e.type===`workflow`?!!V.value.get(e.refId):!!z.value.get(e.refId)),n=t.length;n===e?v.info(g(`@PSTART:没有需要清理的启动项`)):(E.saveStartupItems(t,I.value),v.success(g(`@PSTART:已清理N个失效启动项`,{count:e-n})))}function Ue(e){if(e.type===`command`){let t=e.cmd;if(!t){v.warning(g(`@PSTART:命令不存在`));return}T(`execute-command`,t),v.success(g(`@PSTART:已触发命令执行`))}else if(e.type===`workflow`){let t=e.wf;if(!t){v.warning(g(`@PSTART:工作流不存在`));return}T(`execute-workflow`,t),v.success(g(`@PSTART:已触发工作流执行`))}}return(i,s)=>{let d=oe,v=re,b=ee,x=a,S=c,C=l,w=ce,T=te;return m(),f(de,{modelValue:D.value,"onUpdate:modelValue":s[8]||=e=>D.value=e,title:r(g)(`@PSTART:项目启动项`),size:`medium`,type:`flex`,"height-mode":`max`,"height-offset":`140px`},{default:y(()=>[n(`div`,fe,[n(`div`,pe,[n(`div`,me,[n(`div`,he,e(r(g)(`@PSTART:一键推送成功后执行`)),1),n(`div`,ge,[n(`span`,_e,e(r(g)(`@PSTART:启用`)),1),o(d,{modelValue:U.value,"onUpdate:modelValue":s[0]||=e=>U.value=e,size:`small`,loading:K.value},null,8,[`modelValue`,`loading`])])]),n(`div`,ve,[o(b,{modelValue:W.value,"onUpdate:modelValue":s[1]||=e=>W.value=e,size:`small`,disabled:K.value},{default:y(()=>[o(v,{label:`command`},{default:y(()=>[p(e(r(g)(`@PSTART:命令`)),1)]),_:1}),o(v,{label:`workflow`},{default:y(()=>[p(e(r(g)(`@PSTART:工作流`)),1)]),_:1})]),_:1},8,[`modelValue`,`disabled`]),o(S,{modelValue:G.value,"onUpdate:modelValue":s[2]||=e=>G.value=e,class:`after-quick-push__select`,placeholder:W.value===`workflow`?r(g)(`@PSTART:选择一个工作流`):r(g)(`@PSTART:选择一个自定义命令`),filterable:``,clearable:``,disabled:K.value,onChange:s[3]||=e=>ze(String(e||``))},{default:y(()=>[W.value===`workflow`?(m(!0),t(h,{key:0},_(B.value,e=>(m(),f(x,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128)):(m(!0),t(h,{key:1},_(R.value,e=>(m(),f(x,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`disabled`])]),n(`div`,O,e(r(g)(`@PSTART:仅在一键推送成功后触发,不影响主流程`)),1)]),n(`div`,k,[n(`div`,A,[n(`div`,j,e(r(g)(`@PSTART:启动项列表`)),1),n(`div`,M,`(`+e(q.value.length)+`)`,1),J.value>0?(m(),t(`div`,N,e(r(g)(`@PSTART:有N项已失效`,{count:J.value})),1)):ie(``,!0)]),n(`div`,P,[n(`div`,F,[n(`span`,ye,e(r(g)(`@PSTART:刷新页面自动执行`)),1),o(d,{modelValue:I.value,"onUpdate:modelValue":s[4]||=e=>I.value=e,size:`small`,loading:Z.value},null,8,[`modelValue`,`loading`])]),o(T,{content:r(g)(`@PSTART:清理失效启动项`),placement:`bottom`},{default:y(()=>[o(w,{size:`small`,onClick:He,disabled:J.value===0},{default:y(()=>[o(C,null,{default:y(()=>[o(r(ne))]),_:1}),p(` `+e(r(g)(`@PSTART:清理`)),1)]),_:1},8,[`disabled`])]),_:1},8,[`content`])])]),q.value.length===0?(m(),t(`div`,be,e(r(g)(`@PSTART:暂无启动项`)),1)):(m(),t(`div`,xe,[(m(!0),t(h,null,_(q.value,i=>(m(),t(`div`,{key:i.id,class:`startup-item`},[n(`div`,Se,[n(`div`,{class:`startup-item__name`,title:i.type===`workflow`?i.wf?.name:i.cmd?.name},[n(`span`,{class:u([`startup-item__type`,i.type===`workflow`?`is-workflow`:`is-command`])},e(i.type===`workflow`?r(g)(`@PSTART:工作流`):r(g)(`@PSTART:命令`)),3),p(` `+e(i.type===`workflow`?i.wf?.name:i.cmd?.name),1)],8,Ce),i.type===`command`?(m(),t(`div`,{key:0,class:`startup-item__desc`,title:i.cmd?.command},e(i.cmd?.command),9,we)):(m(),t(`div`,{key:1,class:`startup-item__desc`,title:i.wf?.description||i.wf?.name},e(i.wf?.description||r(g)(`@PSTART:工作流`)),9,Te)),i.type===`command`?(m(),t(`div`,{key:2,class:`startup-item__dir`,title:i.cmd?.directory},e(r(g)(`@PSTART:目录`))+`:`+e(i.cmd?.directory||`-`),9,Ee)):(m(),t(`div`,{key:3,class:`startup-item__dir`,title:String(i.wf?.flowData?.nodes?.length||0)},e(r(g)(`@PSTART:步骤`))+`:`+e(i.wf?.flowData?.nodes?.length||0),9,De))]),n(`div`,Oe,[o(T,{content:r(g)(`@PSTART:刷新页面自动执行`),placement:`top`},{default:y(()=>[o(d,{"model-value":i.enabled!==!1,size:`small`,loading:!!Q.value[i.id],"onUpdate:modelValue":e=>Be(i.id,!!e)},null,8,[`model-value`,`loading`,`onUpdate:modelValue`])]),_:2},1032,[`content`]),o(T,{content:r(g)(`@PSTART:执行`),placement:`top`},{default:y(()=>[o(w,{text:``,type:`primary`,size:`small`,onClick:e=>Ue(i)},{default:y(()=>[o(C,null,{default:y(()=>[o(r(se))]),_:1})]),_:1},8,[`onClick`])]),_:2},1032,[`content`]),o(T,{content:r(g)(`@PSTART:删除`),placement:`top`},{default:y(()=>[o(w,{text:``,type:`danger`,size:`small`,onClick:e=>$(i)},{default:y(()=>[o(C,null,{default:y(()=>[o(r(ae))]),_:1})]),_:1},8,[`onClick`])]),_:2},1032,[`content`])])]))),128))])),n(`div`,ke,[n(`div`,Ae,e(r(g)(`@PSTART:添加启动项`)),1),n(`div`,je,[o(b,{modelValue:Y.value,"onUpdate:modelValue":s[5]||=e=>Y.value=e,size:`small`,onChange:s[6]||=e=>X.value=``},{default:y(()=>[o(v,{label:`command`},{default:y(()=>[p(e(r(g)(`@PSTART:命令`)),1)]),_:1}),o(v,{label:`workflow`},{default:y(()=>[p(e(r(g)(`@PSTART:工作流`)),1)]),_:1})]),_:1},8,[`modelValue`])]),n(`div`,Me,[o(S,{modelValue:X.value,"onUpdate:modelValue":s[7]||=e=>X.value=e,class:`startup-add__select`,placeholder:Y.value===`workflow`?r(g)(`@PSTART:选择一个工作流`):r(g)(`@PSTART:选择一个自定义命令`),filterable:``,clearable:``},{default:y(()=>[Y.value===`workflow`?(m(!0),t(h,{key:0},_(B.value,t=>(m(),f(x,{key:t.id,label:t.name,value:t.id},{default:y(()=>[n(`div`,Ne,[n(`div`,Pe,e(t.name),1),n(`div`,Fe,e(t.description||`步骤: ${t.flowData?.nodes?.length||0}`),1)])]),_:2},1032,[`label`,`value`]))),128)):(m(!0),t(h,{key:1},_(R.value,t=>(m(),f(x,{key:t.id,label:t.name,value:t.id},{default:y(()=>[n(`div`,Ie,[n(`div`,Le,e(t.name),1),n(`div`,Re,e(t.command),1)])]),_:2},1032,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`]),o(w,{type:`primary`,onClick:Ve},{default:y(()=>[o(C,null,{default:y(()=>[o(r(le))]),_:1}),p(` `+e(r(g)(`@PSTART:添加`)),1)]),_:1})])])])]),_:1},8,[`modelValue`,`title`])}}}),[[`__scopeId`,`data-v-58205c25`]]);g(),b();var L=T(d({__name:`ProjectStartupButton`,emits:[`execute-command`,`execute-workflow`],setup(e,{emit:n}){let{t:i}=w(),a=n,s=C(!1);function c(){s.value=!0}function l(e){a(`execute-command`,e)}function u(e){a(`execute-workflow`,e)}return(e,n)=>(m(),t(`div`,null,[o(D,{tooltip:r(i)(`@PSTART:项目启动项`),"hover-color":`var(--color-primary)`,onClick:c,"custom-class":`project-startup-btn`},{default:y(()=>[o(E,{"icon-class":`start-run-command`,"class-name":`icon-btn`})]),_:1},8,[`tooltip`]),o(I,{visible:s.value,"onUpdate:visible":n[0]||=e=>s.value=e,onExecuteCommand:l,onExecuteWorkflow:u},null,8,[`visible`])]))}}),[[`__scopeId`,`data-v-844604ed`]]);export{L as default};
1
+ import"./rolldown-runtime-C0FnF6B9.js";import{$r as e,An as t,Dn as n,Dr as r,En as i,F as a,Fn as o,Fr as s,I as c,J as l,Jr as u,Ln as d,M as ee,On as f,Pn as p,Qn as m,Sn as h,Vn as g,W as te,Wt as ne,er as _,i as v,j as re,kn as ie,lr as y,lt as ae,m as oe,mr as b,r as x,rn as se,sr as S,xr as C,z as ce,zt as le}from"./element-plus-J45pKUrE.js";import{b as w}from"./vendor-B3NyhlYR.js";import{t as T}from"./_plugin-vue_export-helper-Csn085FF.js";import{t as E}from"./SvgIcon-5AlG3IfR.js";import{t as ue}from"./configStore-DOaPZ6Mq.js";import{t as de}from"./CommonDialog-j_53ORvj.js";import{W as D}from"./index-DQ82h1aq.js";g(),b(),s();var fe={class:`project-startup-dialog`},pe={class:`after-quick-push`},me={class:`after-quick-push__header`},he={class:`after-quick-push__title`},ge={class:`after-quick-push__switch`},_e={class:`after-quick-push__label`},ve={class:`after-quick-push__row`},O={class:`after-quick-push__hint`},k={class:`startup-toolbar`},A={class:`startup-toolbar__left`},j={class:`startup-toolbar__title`},M={class:`startup-toolbar__meta`},N={key:0,class:`startup-toolbar__warn`},P={class:`startup-toolbar__right`},F={class:`startup-auto-run`},ye={class:`startup-auto-run__label`},be={key:0,class:`startup-empty`},xe={key:1,class:`startup-list`},Se={class:`startup-item__main`},Ce=[`title`],we=[`title`],Te=[`title`],Ee=[`title`],De=[`title`],Oe={class:`startup-item__actions`},ke={class:`startup-add`},Ae={class:`startup-add__title`},je={class:`startup-add__type`},Me={class:`startup-add__row`},Ne={class:`startup-option`},Pe={class:`startup-option__name`},Fe={class:`startup-option__cmd`},Ie={class:`startup-option`},Le={class:`startup-option__name`},Re={class:`startup-option__cmd`},I=T(d({__name:`ProjectStartupDialog`,props:{visible:{type:Boolean}},emits:[`update:visible`,`execute-command`,`execute-workflow`],setup(s,{emit:d}){let{t:g}=w(),b=s,T=d,E=ue(),D=i({get:()=>b.visible,set:e=>T(`update:visible`,e)}),I=i({get:()=>E.startupAutoRun,set:async e=>{Z.value=!0;try{await E.saveStartupItems(L.value,e)}finally{Z.value=!1}}}),L=i({get:()=>E.startupItems,set:e=>{E.saveStartupItems(e,I.value)}}),R=i(()=>E.customCommands||[]),z=i(()=>{let e=new Map;for(let t of R.value)t?.id&&e.set(String(t.id),t);return e}),B=i(()=>E.orchestrations||[]),V=i(()=>{let e=new Map;for(let t of B.value)t?.id&&e.set(String(t.id),t);return e}),H=i({get:()=>E.afterQuickPushAction,set:e=>{E.saveAfterQuickPushAction(e)}}),U=i({get:()=>!!H.value?.enabled,set:async e=>{K.value=!0;try{await E.saveAfterQuickPushAction({enabled:e,type:W.value,refId:G.value})}finally{K.value=!1}}}),W=i({get:()=>H.value?.type===`workflow`?`workflow`:`command`,set:async e=>{K.value=!0;try{G.value=``,await E.saveAfterQuickPushAction({enabled:U.value,type:e,refId:``})}finally{K.value=!1}}}),G=C(``),K=C(!1);S(()=>E.afterQuickPushAction,e=>{G.value=String(e?.refId||``)},{immediate:!0});async function ze(e){K.value=!0;try{await E.saveAfterQuickPushAction({enabled:U.value,type:W.value,refId:e})}finally{K.value=!1}}let q=i(()=>L.value.map(e=>({...e,cmd:e.type===`command`?z.value.get(e.refId):null,wf:e.type===`workflow`?V.value.get(e.refId):null})).filter(e=>e.type===`command`?!!e.cmd:!!e.wf)),J=i(()=>L.value.filter(e=>e.type===`workflow`?!V.value.get(e.refId):!z.value.get(e.refId)).length),Y=C(`command`),X=C(``),Z=C(!1),Q=C({});async function Be(e,t){Q.value={...Q.value,[e]:!0};try{let n=L.value.map(n=>n.id===e?{...n,enabled:t}:n);await E.saveStartupItems(n,I.value)}finally{let{[e]:t,...n}=Q.value;Q.value=n}}function Ve(){if(!X.value){Y.value===`workflow`?v.warning(g(`@PSTART:请选择一个工作流`)):v.warning(g(`@PSTART:请选择一个命令`));return}if(L.value.some(e=>e.type===Y.value&&e.refId===X.value)){v.info(g(`@PSTART:该启动项已存在`));return}let e={id:`startup_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,type:Y.value,refId:X.value,createdAt:Date.now(),enabled:!0},t=[...L.value,e];E.saveStartupItems(t,I.value),X.value=``,v.success(g(`@PSTART:已添加启动项`))}async function $(e){try{await x.confirm(g(`@PSTART:删除确认`),g(`@PSTART:删除启动项`),{confirmButtonText:g(`@PSTART:确定`),cancelButtonText:g(`@PSTART:取消`),type:`warning`});let t=L.value.filter(t=>t.id!==e.id);E.saveStartupItems(t,I.value),v.success(g(`@PSTART:已删除启动项`))}catch{}}function He(){let e=L.value.length,t=L.value.filter(e=>e.type===`workflow`?!!V.value.get(e.refId):!!z.value.get(e.refId)),n=t.length;n===e?v.info(g(`@PSTART:没有需要清理的启动项`)):(E.saveStartupItems(t,I.value),v.success(g(`@PSTART:已清理N个失效启动项`,{count:e-n})))}function Ue(e){if(e.type===`command`){let t=e.cmd;if(!t){v.warning(g(`@PSTART:命令不存在`));return}T(`execute-command`,t),v.success(g(`@PSTART:已触发命令执行`))}else if(e.type===`workflow`){let t=e.wf;if(!t){v.warning(g(`@PSTART:工作流不存在`));return}T(`execute-workflow`,t),v.success(g(`@PSTART:已触发工作流执行`))}}return(i,s)=>{let d=oe,v=re,b=ee,x=a,S=c,C=l,w=ce,T=te;return m(),f(de,{modelValue:D.value,"onUpdate:modelValue":s[8]||=e=>D.value=e,title:r(g)(`@PSTART:项目启动项`),size:`medium`,type:`flex`,"height-mode":`max`,"height-offset":`140px`},{default:y(()=>[n(`div`,fe,[n(`div`,pe,[n(`div`,me,[n(`div`,he,e(r(g)(`@PSTART:一键推送成功后执行`)),1),n(`div`,ge,[n(`span`,_e,e(r(g)(`@PSTART:启用`)),1),o(d,{modelValue:U.value,"onUpdate:modelValue":s[0]||=e=>U.value=e,size:`small`,loading:K.value},null,8,[`modelValue`,`loading`])])]),n(`div`,ve,[o(b,{modelValue:W.value,"onUpdate:modelValue":s[1]||=e=>W.value=e,size:`small`,disabled:K.value},{default:y(()=>[o(v,{label:`command`},{default:y(()=>[p(e(r(g)(`@PSTART:命令`)),1)]),_:1}),o(v,{label:`workflow`},{default:y(()=>[p(e(r(g)(`@PSTART:工作流`)),1)]),_:1})]),_:1},8,[`modelValue`,`disabled`]),o(S,{modelValue:G.value,"onUpdate:modelValue":s[2]||=e=>G.value=e,class:`after-quick-push__select`,placeholder:W.value===`workflow`?r(g)(`@PSTART:选择一个工作流`):r(g)(`@PSTART:选择一个自定义命令`),filterable:``,clearable:``,disabled:K.value,onChange:s[3]||=e=>ze(String(e||``))},{default:y(()=>[W.value===`workflow`?(m(!0),t(h,{key:0},_(B.value,e=>(m(),f(x,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128)):(m(!0),t(h,{key:1},_(R.value,e=>(m(),f(x,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`disabled`])]),n(`div`,O,e(r(g)(`@PSTART:仅在一键推送成功后触发,不影响主流程`)),1)]),n(`div`,k,[n(`div`,A,[n(`div`,j,e(r(g)(`@PSTART:启动项列表`)),1),n(`div`,M,`(`+e(q.value.length)+`)`,1),J.value>0?(m(),t(`div`,N,e(r(g)(`@PSTART:有N项已失效`,{count:J.value})),1)):ie(``,!0)]),n(`div`,P,[n(`div`,F,[n(`span`,ye,e(r(g)(`@PSTART:刷新页面自动执行`)),1),o(d,{modelValue:I.value,"onUpdate:modelValue":s[4]||=e=>I.value=e,size:`small`,loading:Z.value},null,8,[`modelValue`,`loading`])]),o(T,{content:r(g)(`@PSTART:清理失效启动项`),placement:`bottom`},{default:y(()=>[o(w,{size:`small`,onClick:He,disabled:J.value===0},{default:y(()=>[o(C,null,{default:y(()=>[o(r(ne))]),_:1}),p(` `+e(r(g)(`@PSTART:清理`)),1)]),_:1},8,[`disabled`])]),_:1},8,[`content`])])]),q.value.length===0?(m(),t(`div`,be,e(r(g)(`@PSTART:暂无启动项`)),1)):(m(),t(`div`,xe,[(m(!0),t(h,null,_(q.value,i=>(m(),t(`div`,{key:i.id,class:`startup-item`},[n(`div`,Se,[n(`div`,{class:`startup-item__name`,title:i.type===`workflow`?i.wf?.name:i.cmd?.name},[n(`span`,{class:u([`startup-item__type`,i.type===`workflow`?`is-workflow`:`is-command`])},e(i.type===`workflow`?r(g)(`@PSTART:工作流`):r(g)(`@PSTART:命令`)),3),p(` `+e(i.type===`workflow`?i.wf?.name:i.cmd?.name),1)],8,Ce),i.type===`command`?(m(),t(`div`,{key:0,class:`startup-item__desc`,title:i.cmd?.command},e(i.cmd?.command),9,we)):(m(),t(`div`,{key:1,class:`startup-item__desc`,title:i.wf?.description||i.wf?.name},e(i.wf?.description||r(g)(`@PSTART:工作流`)),9,Te)),i.type===`command`?(m(),t(`div`,{key:2,class:`startup-item__dir`,title:i.cmd?.directory},e(r(g)(`@PSTART:目录`))+`:`+e(i.cmd?.directory||`-`),9,Ee)):(m(),t(`div`,{key:3,class:`startup-item__dir`,title:String(i.wf?.flowData?.nodes?.length||0)},e(r(g)(`@PSTART:步骤`))+`:`+e(i.wf?.flowData?.nodes?.length||0),9,De))]),n(`div`,Oe,[o(T,{content:r(g)(`@PSTART:刷新页面自动执行`),placement:`top`},{default:y(()=>[o(d,{"model-value":i.enabled!==!1,size:`small`,loading:!!Q.value[i.id],"onUpdate:modelValue":e=>Be(i.id,!!e)},null,8,[`model-value`,`loading`,`onUpdate:modelValue`])]),_:2},1032,[`content`]),o(T,{content:r(g)(`@PSTART:执行`),placement:`top`},{default:y(()=>[o(w,{text:``,type:`primary`,size:`small`,onClick:e=>Ue(i)},{default:y(()=>[o(C,null,{default:y(()=>[o(r(se))]),_:1})]),_:1},8,[`onClick`])]),_:2},1032,[`content`]),o(T,{content:r(g)(`@PSTART:删除`),placement:`top`},{default:y(()=>[o(w,{text:``,type:`danger`,size:`small`,onClick:e=>$(i)},{default:y(()=>[o(C,null,{default:y(()=>[o(r(ae))]),_:1})]),_:1},8,[`onClick`])]),_:2},1032,[`content`])])]))),128))])),n(`div`,ke,[n(`div`,Ae,e(r(g)(`@PSTART:添加启动项`)),1),n(`div`,je,[o(b,{modelValue:Y.value,"onUpdate:modelValue":s[5]||=e=>Y.value=e,size:`small`,onChange:s[6]||=e=>X.value=``},{default:y(()=>[o(v,{label:`command`},{default:y(()=>[p(e(r(g)(`@PSTART:命令`)),1)]),_:1}),o(v,{label:`workflow`},{default:y(()=>[p(e(r(g)(`@PSTART:工作流`)),1)]),_:1})]),_:1},8,[`modelValue`])]),n(`div`,Me,[o(S,{modelValue:X.value,"onUpdate:modelValue":s[7]||=e=>X.value=e,class:`startup-add__select`,placeholder:Y.value===`workflow`?r(g)(`@PSTART:选择一个工作流`):r(g)(`@PSTART:选择一个自定义命令`),filterable:``,clearable:``},{default:y(()=>[Y.value===`workflow`?(m(!0),t(h,{key:0},_(B.value,t=>(m(),f(x,{key:t.id,label:t.name,value:t.id},{default:y(()=>[n(`div`,Ne,[n(`div`,Pe,e(t.name),1),n(`div`,Fe,e(t.description||`步骤: ${t.flowData?.nodes?.length||0}`),1)])]),_:2},1032,[`label`,`value`]))),128)):(m(!0),t(h,{key:1},_(R.value,t=>(m(),f(x,{key:t.id,label:t.name,value:t.id},{default:y(()=>[n(`div`,Ie,[n(`div`,Le,e(t.name),1),n(`div`,Re,e(t.command),1)])]),_:2},1032,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`]),o(w,{type:`primary`,onClick:Ve},{default:y(()=>[o(C,null,{default:y(()=>[o(r(le))]),_:1}),p(` `+e(r(g)(`@PSTART:添加`)),1)]),_:1})])])])]),_:1},8,[`modelValue`,`title`])}}}),[[`__scopeId`,`data-v-58205c25`]]);g(),b();var L=T(d({__name:`ProjectStartupButton`,emits:[`execute-command`,`execute-workflow`],setup(e,{emit:n}){let{t:i}=w(),a=n,s=C(!1);function c(){s.value=!0}function l(e){a(`execute-command`,e)}function u(e){a(`execute-workflow`,e)}return(e,n)=>(m(),t(`div`,null,[o(D,{tooltip:r(i)(`@PSTART:项目启动项`),"hover-color":`var(--color-primary)`,onClick:c,"custom-class":`project-startup-btn`},{default:y(()=>[o(E,{"icon-class":`start-run-command`,"class-name":`icon-btn`})]),_:1},8,[`tooltip`]),o(I,{visible:s.value,"onUpdate:visible":n[0]||=e=>s.value=e,onExecuteCommand:l,onExecuteWorkflow:u},null,8,[`visible`])]))}}),[[`__scopeId`,`data-v-844604ed`]]);export{L as default};
@@ -1 +1 @@
1
- import{$r as e,An as t,Dn as n,Dr as r,En as i,Fn as a,Fr as o,Jn as s,Jr as c,Ln as l,Qn as u,Vn as d,kn as f,mr as p}from"./element-plus-J45pKUrE.js";import{a as m}from"./vendor-B3NyhlYR.js";import{n as h,t as g}from"./_plugin-vue_export-helper-Csn085FF.js";import{I as _}from"./index-C7Y9odvZ.js";import{i as v,n as y,o as b,r as x,s as S,u as C}from"./agentConversations-DyzaxUXm.js";d(),p(),o();var w={key:0,class:`dir-chat__bar`},T=[`title`,`aria-label`],E=g(l({__name:`RecentDirectoriesChat`,props:{dirStatus:{},summary:{},fill:{type:Boolean}},setup(o){let l=o,{theme:d}=_(),p=i(()=>d.value===`dark`?`dark`:`light`),{messages:g,displayMessages:E,isStreaming:D,questionPanel:O,answeringQuestion:k,sendMessage:A,retryTurn:j,answerQuestion:M,newSession:N,stop:P,queuedMessages:F,queuePaused:I,removeQueuedMessage:L,flushQueued:R}=C(),z=b(),B=S(),V=i(()=>[{id:`priority`,label:h(`@13D1C:这些项目该先处理哪个?`),prompt:h(`@13D1C:这些项目里该先处理哪个?按优先级给我一个处理顺序,并说明每一项该做什么。`)},{id:`behind`,label:h(`@13D1C:哪些项目落后远端?`),prompt:h(`@13D1C:哪些项目落后远端?分别落后多少个提交?`)},{id:`pull-behind`,label:h(`@13D1C:落后远端的都帮我 pull 下代码`),prompt:h(`@13D1C:落后远端的项目都帮我 pull 下代码,逐个执行并汇报结果。`)},{id:`uncommitted`,label:h(`@13D1C:看一下各项目未提交的都改了什么`),prompt:h(`@13D1C:看一下各项目未提交的改动都改了什么,按项目列出来。`)}]);async function H(e){await A(e.text,e.files,{engine:`gai`,dirStatus:l.dirStatus,dirSummary:l.summary})}async function U(e){await H({text:e.prompt,files:[]})}function W(){P(),N()}return s(()=>{P()}),(i,s)=>(u(),t(`div`,{class:c([`dir-chat`,{"dir-chat--fill":o.fill}])},[r(g).length?(u(),t(`div`,w,[n(`button`,{type:`button`,class:`dir-chat__new`,title:r(h)(`@13D1C:新建对话,当前会话会保留`),"aria-label":r(h)(`@13D1C:新建对话`),onClick:W},[s[0]||=n(`svg`,{viewBox:`0 0 24 24`,width:`12`,height:`12`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[n(`line`,{x1:`12`,y1:`5`,x2:`12`,y2:`19`}),n(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`})],-1),n(`span`,null,e(r(h)(`@13D1C:新建对话`)),1)],8,T)])):f(``,!0),a(r(m),{messages:r(E),"assistant-name":r(y),theme:p.value,generating:r(D),"allow-queue":!0,queued:r(F),"queue-paused":r(I),"queue-labels":r(B),"show-avatar":!1,"upload-config":{enabled:!1},placeholder:r(D)?r(h)(`@13D1C:g ai 正在回答…发送会先排队,等本轮跑完自动接上`):r(h)(`@13D1C:追问 g ai:这批项目该怎么处理?`),"welcome-title":r(h)(`@13D1C:可以接着问 g ai`),"welcome-description":r(h)(`@13D1C:它已经拿到了这批目录的 Git 状态,可以直接问该先处理哪个、某个项目落后了什么。`),"preset-questions":V.value,question:r(O),"question-submitting":r(k),"question-labels":r(z),"plan-config":{labels:{title:r(h)(`@AGENT:计划`),raw:r(h)(`@AGENT:原始参数`)}},"message-rail-config":r(v),"message-meta-config":r(x),onSend:H,onSelect:U,onStop:r(P),onUnqueue:r(L),onFlushQueued:r(R),onAnswer:r(M),onRetry:r(j)},null,8,[`messages`,`assistant-name`,`theme`,`generating`,`queued`,`queue-paused`,`queue-labels`,`placeholder`,`welcome-title`,`welcome-description`,`preset-questions`,`question`,`question-submitting`,`question-labels`,`plan-config`,`message-rail-config`,`message-meta-config`,`onStop`,`onUnqueue`,`onFlushQueued`,`onAnswer`,`onRetry`])],2))}}),[[`__scopeId`,`data-v-1ad84e11`]]);export{E as default};
1
+ import{$r as e,An as t,Dn as n,Dr as r,En as i,Fn as a,Fr as o,Jn as s,Jr as c,Ln as l,Qn as u,Vn as d,kn as f,mr as p}from"./element-plus-J45pKUrE.js";import{a as m}from"./vendor-B3NyhlYR.js";import{n as h,t as g}from"./_plugin-vue_export-helper-Csn085FF.js";import{I as _}from"./index-DQ82h1aq.js";import{i as v,n as y,o as b,r as x,s as S,u as C}from"./agentConversations-De3wKTsN.js";d(),p(),o();var w={key:0,class:`dir-chat__bar`},T=[`title`,`aria-label`],E=g(l({__name:`RecentDirectoriesChat`,props:{dirStatus:{},summary:{},fill:{type:Boolean}},setup(o){let l=o,{theme:d}=_(),p=i(()=>d.value===`dark`?`dark`:`light`),{messages:g,displayMessages:E,isStreaming:D,questionPanel:O,answeringQuestion:k,sendMessage:A,retryTurn:j,answerQuestion:M,newSession:N,stop:P,queuedMessages:F,queuePaused:I,removeQueuedMessage:L,flushQueued:R}=C(),z=b(),B=S(),V=i(()=>[{id:`priority`,label:h(`@13D1C:这些项目该先处理哪个?`),prompt:h(`@13D1C:这些项目里该先处理哪个?按优先级给我一个处理顺序,并说明每一项该做什么。`)},{id:`behind`,label:h(`@13D1C:哪些项目落后远端?`),prompt:h(`@13D1C:哪些项目落后远端?分别落后多少个提交?`)},{id:`pull-behind`,label:h(`@13D1C:落后远端的都帮我 pull 下代码`),prompt:h(`@13D1C:落后远端的项目都帮我 pull 下代码,逐个执行并汇报结果。`)},{id:`uncommitted`,label:h(`@13D1C:看一下各项目未提交的都改了什么`),prompt:h(`@13D1C:看一下各项目未提交的改动都改了什么,按项目列出来。`)}]);async function H(e){await A(e.text,e.files,{engine:`gai`,dirStatus:l.dirStatus,dirSummary:l.summary})}async function U(e){await H({text:e.prompt,files:[]})}function W(){P(),N()}return s(()=>{P()}),(i,s)=>(u(),t(`div`,{class:c([`dir-chat`,{"dir-chat--fill":o.fill}])},[r(g).length?(u(),t(`div`,w,[n(`button`,{type:`button`,class:`dir-chat__new`,title:r(h)(`@13D1C:新建对话,当前会话会保留`),"aria-label":r(h)(`@13D1C:新建对话`),onClick:W},[s[0]||=n(`svg`,{viewBox:`0 0 24 24`,width:`12`,height:`12`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[n(`line`,{x1:`12`,y1:`5`,x2:`12`,y2:`19`}),n(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`})],-1),n(`span`,null,e(r(h)(`@13D1C:新建对话`)),1)],8,T)])):f(``,!0),a(r(m),{messages:r(E),"assistant-name":r(y),theme:p.value,generating:r(D),"allow-queue":!0,queued:r(F),"queue-paused":r(I),"queue-labels":r(B),"show-avatar":!1,"upload-config":{enabled:!1},placeholder:r(D)?r(h)(`@13D1C:g ai 正在回答…发送会先排队,等本轮跑完自动接上`):r(h)(`@13D1C:追问 g ai:这批项目该怎么处理?`),"welcome-title":r(h)(`@13D1C:可以接着问 g ai`),"welcome-description":r(h)(`@13D1C:它已经拿到了这批目录的 Git 状态,可以直接问该先处理哪个、某个项目落后了什么。`),"preset-questions":V.value,question:r(O),"question-submitting":r(k),"question-labels":r(z),"plan-config":{labels:{title:r(h)(`@AGENT:计划`),raw:r(h)(`@AGENT:原始参数`)}},"message-rail-config":r(v),"message-meta-config":r(x),onSend:H,onSelect:U,onStop:r(P),onUnqueue:r(L),onFlushQueued:r(R),onAnswer:r(M),onRetry:r(j)},null,8,[`messages`,`assistant-name`,`theme`,`generating`,`queued`,`queue-paused`,`queue-labels`,`placeholder`,`welcome-title`,`welcome-description`,`preset-questions`,`question`,`question-submitting`,`question-labels`,`plan-config`,`message-rail-config`,`message-meta-config`,`onStop`,`onUnqueue`,`onFlushQueued`,`onAnswer`,`onRetry`])],2))}}),[[`__scopeId`,`data-v-1ad84e11`]]);export{E as default};
@@ -1 +1 @@
1
- import"./rolldown-runtime-C0FnF6B9.js";import{$r as e,An as t,At as n,Dn as r,Dr as i,En as a,Fn as o,Fr as s,G as ee,J as te,Jr as ne,Jt as re,K as ie,L as ae,Ln as c,On as l,Pn as u,Qn as d,Sn as f,U as oe,Vn as p,W as se,bn as m,dn as h,er as g,gt as ce,i as _,kn as v,lr as y,lt as b,mr as x,nn as S,nt as le,r as C,rt as ue,sr as w,st as de,xr as T,z as fe,zt as E}from"./element-plus-J45pKUrE.js";import{n as D,t as O}from"./_plugin-vue_export-helper-Csn085FF.js";import{t as pe}from"./SvgIcon-5AlG3IfR.js";import{t as k}from"./CommonDialog-j_53ORvj.js";import{U as A,W as j,k as M}from"./index-C7Y9odvZ.js";p(),x(),s(),h();var me={class:`remote-manager`},he={class:`rm-hero`},ge={class:`rm-hero__icon`},_e={class:`rm-hero__text`},ve={class:`rm-section`},ye={class:`rm-section__title`},be={class:`rm-add`},xe={class:`rm-field rm-field--name`},Se={for:`rm-add-name`},Ce={class:`rm-field rm-field--url`},we={for:`rm-add-url`},Te={class:`rm-section rm-section--list`},Ee={class:`rm-section__title`},De={class:`rm-count`},Oe={key:0,class:`rm-empty`},ke={key:1,class:`rm-empty`},Ae={key:2,class:`rm-rows`},je={class:`rm-row__head`},Me={class:`rm-row__name`},Ne={class:`rm-row__actions`},Pe={class:`rm-row__urls`},Fe={class:`rm-url`},Ie={class:`rm-url__label`},Le=[`onClick`],Re={key:0,class:`rm-url`},ze={class:`rm-url__label`},Be={key:1,class:`rm-url`},Ve={class:`rm-url__hint`},He={class:`rm-footer`},Ue={key:0,class:`rm-push-results`},We={class:`rm-push-results__title`},Ge=[`title`],Ke={class:`rm-footer__actions`},qe={class:`rm-tip`},N={key:0,class:`rm-tip rm-tip--warn`},Je={class:`rm-pushurls`},Ye={class:`rm-tip`},P=O(c({__name:`RemoteManagerDialog`,setup(s){let c=A(),p=a({get:()=>c.isRemoteManagerVisible,set:e=>{c.isRemoteManagerVisible=e}}),h=T({name:`origin`,url:``}),x=T(!1),O=a(()=>`git remote add ${h.value.name.trim()||D(`@RMT01:<名称>`)} ${h.value.url.trim()||D(`@RMT01:<地址>`)}`);async function P(){let e=h.value.name.trim(),t=h.value.url.trim();if(!e){_.warning(D(`@RMT01:请输入远程名称`));return}if(!t){_.warning(D(`@RMT01:请输入远程地址`));return}if(c.remotes.some(t=>t.name===e)){_.warning(D(`@RMT01:远程名称已存在`));return}x.value=!0;try{await c.addRemote(t,e)&&(_.success(D(`@RMT01:远程添加成功`)),h.value={name:``,url:``})}finally{x.value=!1}}let F=T(!1),I=T(null),L=T(``),R=T(!1),Xe=a(()=>`git remote rename ${I.value?.name||D(`@RMT01:<原名称>`)} ${L.value.trim()||D(`@RMT01:<新名称>`)}`);function Ze(e){I.value=e,L.value=e.name,F.value=!0}async function z(){let e=I.value;if(!e)return;let t=L.value.trim();if(!t){_.warning(D(`@RMT01:请输入新名称`));return}if(t===e.name){_.warning(D(`@RMT01:新名称与原名称相同`));return}if(c.remotes.some(e=>e.name===t)){_.warning(D(`@RMT01:远程名称已存在`));return}R.value=!0;try{await c.renameRemote(e.name,t)&&(F.value=!1)}finally{R.value=!1}}let B=T(!1),V=T(null),H=T(``),U=T(!1),Qe=a(()=>`git remote set-url ${V.value?.name||D(`@RMT01:<名称>`)} ${H.value.trim()||D(`@RMT01:<地址>`)}`);function $e(e){V.value=e,H.value=e.fetchUrl,B.value=!0}async function W(){let e=V.value;if(!e)return;let t=H.value.trim();if(!t){_.warning(D(`@RMT01:请输入远程地址`));return}U.value=!0;try{await c.setRemoteUrl(e.name,t)&&(B.value=!1)}finally{U.value=!1}}let G=T(!1),K=T(null),q=T([{url:``}]),J=T(!1),et=a(()=>{let e=K.value?.name||D(`@RMT01:<名称>`),t=q.value.map(e=>e.url.trim()).filter(Boolean),n=[`git config --unset-all remote.${e}.pushurl`];for(let r of t)n.push(`git remote set-url --push --add ${e} ${r}`);return n.join(` && `)});function tt(e){K.value=e,q.value=e.hasExplicitPushUrls&&e.pushUrls.length>0?e.pushUrls.map(e=>({url:e})):[{url:``}],G.value=!0}function nt(){if(q.value.length>=10){_.warning(D(`@RMT01:推送地址最多 10 条`));return}q.value.push({url:``})}function rt(e){q.value.splice(e,1),q.value.length===0&&q.value.push({url:``})}async function Y(){let e=K.value;if(!e)return;let t=q.value.map(e=>e.url.trim()).filter(Boolean);J.value=!0;try{await c.setRemotePushUrls(e.name,t)&&(G.value=!1)}finally{J.value=!1}}async function it(e){try{await C.confirm(e.isUpstream?D(`@RMT01:当前分支上游指向该远程,删除后将解除上游跟踪`):D(`@RMT01:删除后本地配置将移除,远程仓库本身不受影响`),`${D(`@RMT01:确认删除远程`)} "${e.name}"`,{type:`warning`,confirmButtonText:D(`@RMT01:删除`),cancelButtonText:D(`@RMT01:取消`)})}catch{return}await c.removeRemote(e.name)}let X=T(``),Z=T(!1);async function at(e){X.value=e.name;try{await c.pushToRemoteWithProgress(void 0,e.name)&&_.success(`${D(`@RMT01:已推送到`)} ${e.name}`)}finally{X.value=``}}async function ot(){Z.value=!0;try{await c.pushAllRemotes()}finally{Z.value=!1}}async function Q(e){if(e)try{await navigator.clipboard.writeText(e),_.success(D(`@RMT01:地址已复制`))}catch{_.error(D(`@RMT01:复制失败`))}}return w(p,e=>{e&&(c.fetchRemotes(),c.lastPushAllResults=[])}),(a,s)=>{let _=pe,C=te,w=oe,T=fe,A=ae,I=se,K=ie,$=ee;return d(),t(f,null,[o(k,{modelValue:p.value,"onUpdate:modelValue":s[3]||=e=>p.value=e,title:i(D)(`@RMT01:远程仓库管理`),size:`large`,type:`flex`,"close-on-click-modal":!1,"custom-class":`remote-manager-dialog`},{footer:y(()=>[r(`div`,He,[i(c).lastPushAllResults.length?(d(),t(`div`,Ue,[r(`span`,We,e(i(D)(`@RMT01:上次推送结果`)),1),(d(!0),t(f,null,g(i(c).lastPushAllResults,n=>(d(),t(`span`,{key:n.name,class:ne([`rm-push-result`,n.ok?`is-ok`:`is-fail`]),title:n.error||``},[o(C,null,{default:y(()=>[n.ok?(d(),l(i(le),{key:0})):(d(),l(i(ue),{key:1}))]),_:2},1024),u(` `+e(n.name),1)],10,Ge))),128))])):v(``,!0),r(`div`,Ke,[i(c).hasMultipleRemotes?(d(),l(T,{key:0,type:`primary`,icon:i(S),loading:Z.value,onClick:ot},{default:y(()=>[u(e(i(D)(`@RMT01:推送到全部远程`)),1)]),_:1},8,[`icon`,`loading`])):v(``,!0),o(T,{onClick:s[2]||=e=>p.value=!1},{default:y(()=>[u(e(i(D)(`@RMT01:关闭`)),1)]),_:1})])])]),default:y(()=>[r(`div`,me,[r(`div`,he,[r(`div`,ge,[o(_,{"icon-class":`remote-repo`})]),r(`div`,_e,[r(`h4`,null,e(i(D)(`@RMT01:管理多个远程仓库`)),1),r(`p`,null,e(i(D)(`@RMT01:一个仓库可配置多个远程(如 origin / upstream / backup),推送时按名称选择目标。`)),1)])]),r(`section`,ve,[r(`h4`,ye,[o(C,null,{default:y(()=>[o(i(E))]),_:1}),r(`span`,null,e(i(D)(`@RMT01:添加远程`)),1)]),r(`div`,be,[r(`div`,xe,[r(`label`,Se,e(i(D)(`@RMT01:远程名称`)),1),o(w,{id:`rm-add-name`,modelValue:h.value.name,"onUpdate:modelValue":s[0]||=e=>h.value.name=e,placeholder:i(D)(`@RMT01:例如 origin、upstream、backup`),clearable:``,onKeyup:m(P,[`enter`])},null,8,[`modelValue`,`placeholder`])]),r(`div`,Ce,[r(`label`,we,e(i(D)(`@RMT01:远程地址`)),1),o(w,{id:`rm-add-url`,modelValue:h.value.url,"onUpdate:modelValue":s[1]||=e=>h.value.url=e,placeholder:`git@github.com:user/project.git`,clearable:``,onKeyup:m(P,[`enter`])},null,8,[`modelValue`])]),o(T,{type:`primary`,loading:x.value,class:`rm-add__btn`,onClick:P},{default:y(()=>[u(e(i(D)(`@RMT01:添加`)),1)]),_:1},8,[`loading`])]),o(M,{command:O.value,title:i(D)(`@RMT01:命令预览:`),placeholder:i(D)(`@RMT01:填写名称与地址后显示命令`)},null,8,[`command`,`title`,`placeholder`])]),r(`section`,Te,[r(`h4`,Ee,[o(C,null,{default:y(()=>[o(i(de))]),_:1}),r(`span`,null,e(i(D)(`@RMT01:远程仓库列表`)),1),r(`span`,De,e(i(c).remotes.length),1)]),i(c).isLoadingRemotes&&i(c).remotes.length===0?(d(),t(`div`,Oe,[o(C,{class:`is-loading`},{default:y(()=>[o(i(n))]),_:1}),r(`span`,null,e(i(D)(`@RMT01:加载中…`)),1)])):i(c).remotes.length===0?(d(),t(`div`,ke,[r(`span`,null,e(i(D)(`@RMT01:暂无远程仓库`)),1)])):(d(),t(`div`,Ae,[(d(!0),t(f,null,g(i(c).remotes,n=>(d(),t(`div`,{key:n.name,class:`rm-row`},[r(`div`,je,[r(`span`,Me,e(n.name),1),n.isUpstream?(d(),l(A,{key:0,size:`small`,type:`success`,effect:`light`},{default:y(()=>[u(e(i(D)(`@RMT01:上游`)),1)]),_:1})):v(``,!0),n.isPushDefault?(d(),l(A,{key:1,size:`small`,type:`warning`,effect:`light`},{default:y(()=>[u(e(i(D)(`@RMT01:默认推送`)),1)]),_:1})):v(``,!0),s[9]||=r(`span`,{class:`rm-row__spacer`},null,-1),r(`div`,Ne,[o(T,{size:`small`,type:`primary`,icon:i(S),loading:X.value===n.name,disabled:i(c).isPushing,onClick:e=>at(n)},{default:y(()=>[u(e(i(D)(`@RMT01:推送`)),1)]),_:1},8,[`icon`,`loading`,`disabled`,`onClick`]),o(j,{tooltip:i(D)(`@RMT01:编辑地址`),size:`small`,onClick:e=>$e(n)},{default:y(()=>[o(C,null,{default:y(()=>[o(i(ce))]),_:1})]),_:1},8,[`tooltip`,`onClick`]),o(j,{tooltip:i(D)(`@RMT01:管理推送地址`),size:`small`,onClick:e=>tt(n)},{default:y(()=>[o(C,null,{default:y(()=>[o(i(re))]),_:1})]),_:1},8,[`tooltip`,`onClick`]),o(j,{tooltip:i(D)(`@RMT01:重命名`),size:`small`,onClick:e=>Ze(n)},{default:y(()=>[o(_,{"icon-class":`git-branch`})]),_:1},8,[`tooltip`,`onClick`]),o(j,{tooltip:i(D)(`@RMT01:删除`),size:`small`,"hover-color":`var(--color-danger)`,onClick:e=>it(n)},{default:y(()=>[o(C,null,{default:y(()=>[o(i(b))]),_:1})]),_:1},8,[`tooltip`,`onClick`])])]),r(`div`,Pe,[r(`div`,Fe,[r(`span`,Ie,e(i(D)(`@RMT01:拉取地址`)),1),o(I,{content:i(D)(`@RMT01:点击复制`),placement:`top`,"show-after":300},{default:y(()=>[r(`span`,{class:`rm-url__value`,onClick:e=>Q(n.fetchUrl)},e(n.fetchUrl),9,Le)]),_:2},1032,[`content`])]),n.hasExplicitPushUrls?(d(),t(`div`,Re,[r(`span`,ze,e(i(D)(`@RMT01:推送地址`)),1),(d(!0),t(f,null,g(n.pushUrls,(t,n)=>(d(),l(I,{key:n,content:i(D)(`@RMT01:点击复制`),placement:`top`,"show-after":300},{default:y(()=>[o(A,{size:`small`,class:`rm-pushurl`,onClick:e=>Q(t)},{default:y(()=>[u(e(t),1)]),_:2},1032,[`onClick`])]),_:2},1032,[`content`]))),128))])):(d(),t(`div`,Be,[r(`span`,Ve,e(i(D)(`@RMT01:推送地址与拉取地址一致`)),1)]))])]))),128))]))])])]),_:1},8,[`modelValue`,`title`]),o(k,{modelValue:F.value,"onUpdate:modelValue":s[5]||=e=>F.value=e,title:i(D)(`@RMT01:重命名远程仓库`),width:`min(660px, 92vw)`,"close-on-click-modal":!1,"show-footer":``,"confirm-text":i(D)(`@RMT01:保存`),"cancel-text":i(D)(`@RMT01:取消`),"confirm-loading":R.value,onConfirm:z},{default:y(()=>[o($,{"label-position":`top`},{default:y(()=>[o(K,{label:i(D)(`@RMT01:新名称`)},{default:y(()=>[o(w,{modelValue:L.value,"onUpdate:modelValue":s[4]||=e=>L.value=e,placeholder:i(D)(`@RMT01:请输入新名称`),clearable:``,onKeyup:m(z,[`enter`])},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1}),r(`p`,qe,e(i(D)(`@RMT01:重命名后当前分支的上游跟踪会自动跟随,无需手动调整。`)),1),o(M,{command:Xe.value,title:i(D)(`@RMT01:命令预览:`)},null,8,[`command`,`title`])]),_:1},8,[`modelValue`,`title`,`confirm-text`,`cancel-text`,`confirm-loading`]),o(k,{modelValue:B.value,"onUpdate:modelValue":s[7]||=e=>B.value=e,title:i(D)(`@RMT01:编辑远程地址`),width:`min(660px, 92vw)`,"close-on-click-modal":!1,"show-footer":``,"confirm-text":i(D)(`@RMT01:保存`),"cancel-text":i(D)(`@RMT01:取消`),"confirm-loading":U.value,onConfirm:W},{default:y(()=>[o($,{"label-position":`top`},{default:y(()=>[o(K,{label:i(D)(`@RMT01:远程地址`)},{default:y(()=>[o(w,{modelValue:H.value,"onUpdate:modelValue":s[6]||=e=>H.value=e,placeholder:`git@github.com:user/project.git`,clearable:``,onKeyup:m(W,[`enter`])},null,8,[`modelValue`])]),_:1},8,[`label`])]),_:1}),V.value?.hasExplicitPushUrls?(d(),t(`p`,N,e(i(D)(`@RMT01:该远程配置了独立的推送地址,不受本次修改影响`)),1)):v(``,!0),o(M,{command:Qe.value,title:i(D)(`@RMT01:命令预览:`)},null,8,[`command`,`title`])]),_:1},8,[`modelValue`,`title`,`confirm-text`,`cancel-text`,`confirm-loading`]),o(k,{modelValue:G.value,"onUpdate:modelValue":s[8]||=e=>G.value=e,title:i(D)(`@RMT01:管理推送地址`),width:`min(660px, 92vw)`,"close-on-click-modal":!1,"show-footer":``,"confirm-text":i(D)(`@RMT01:保存`),"cancel-text":i(D)(`@RMT01:取消`),"confirm-loading":J.value,onConfirm:Y},{default:y(()=>[r(`div`,Je,[(d(!0),t(f,null,g(q.value,(e,n)=>(d(),t(`div`,{key:n,class:`rm-pushurl-row`},[o(w,{modelValue:e.url,"onUpdate:modelValue":t=>e.url=t,placeholder:i(D)(`@RMT01:推送地址`),clearable:``,onKeyup:m(Y,[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),o(j,{tooltip:i(D)(`@RMT01:删除`),size:`small`,"hover-color":`var(--color-danger)`,onClick:e=>rt(n)},{default:y(()=>[o(C,null,{default:y(()=>[o(i(b))]),_:1})]),_:1},8,[`tooltip`,`onClick`])]))),128)),o(T,{link:``,type:`primary`,icon:i(E),onClick:nt},{default:y(()=>[u(e(i(D)(`@RMT01:添加一行`)),1)]),_:1},8,[`icon`]),r(`p`,Ye,e(i(D)(`@RMT01:留空则推送地址与拉取地址一致;配置多个推送地址后可一次推送到多处。`)),1)]),o(M,{command:et.value,title:i(D)(`@RMT01:命令预览:`)},null,8,[`command`,`title`])]),_:1},8,[`modelValue`,`title`,`confirm-text`,`cancel-text`,`confirm-loading`])],64)}}}),[[`__scopeId`,`data-v-6b4b7931`]]);export{P as default};
1
+ import"./rolldown-runtime-C0FnF6B9.js";import{$r as e,An as t,At as n,Dn as r,Dr as i,En as a,Fn as o,Fr as s,G as ee,J as te,Jr as ne,Jt as re,K as ie,L as ae,Ln as c,On as l,Pn as u,Qn as d,Sn as f,U as oe,Vn as p,W as se,bn as m,dn as h,er as g,gt as ce,i as _,kn as v,lr as y,lt as b,mr as x,nn as S,nt as le,r as C,rt as ue,sr as w,st as de,xr as T,z as fe,zt as E}from"./element-plus-J45pKUrE.js";import{n as D,t as O}from"./_plugin-vue_export-helper-Csn085FF.js";import{t as pe}from"./SvgIcon-5AlG3IfR.js";import{t as k}from"./CommonDialog-j_53ORvj.js";import{U as A,W as j,k as M}from"./index-DQ82h1aq.js";p(),x(),s(),h();var me={class:`remote-manager`},he={class:`rm-hero`},ge={class:`rm-hero__icon`},_e={class:`rm-hero__text`},ve={class:`rm-section`},ye={class:`rm-section__title`},be={class:`rm-add`},xe={class:`rm-field rm-field--name`},Se={for:`rm-add-name`},Ce={class:`rm-field rm-field--url`},we={for:`rm-add-url`},Te={class:`rm-section rm-section--list`},Ee={class:`rm-section__title`},De={class:`rm-count`},Oe={key:0,class:`rm-empty`},ke={key:1,class:`rm-empty`},Ae={key:2,class:`rm-rows`},je={class:`rm-row__head`},Me={class:`rm-row__name`},Ne={class:`rm-row__actions`},Pe={class:`rm-row__urls`},Fe={class:`rm-url`},Ie={class:`rm-url__label`},Le=[`onClick`],Re={key:0,class:`rm-url`},ze={class:`rm-url__label`},Be={key:1,class:`rm-url`},Ve={class:`rm-url__hint`},He={class:`rm-footer`},Ue={key:0,class:`rm-push-results`},We={class:`rm-push-results__title`},Ge=[`title`],Ke={class:`rm-footer__actions`},qe={class:`rm-tip`},N={key:0,class:`rm-tip rm-tip--warn`},Je={class:`rm-pushurls`},Ye={class:`rm-tip`},P=O(c({__name:`RemoteManagerDialog`,setup(s){let c=A(),p=a({get:()=>c.isRemoteManagerVisible,set:e=>{c.isRemoteManagerVisible=e}}),h=T({name:`origin`,url:``}),x=T(!1),O=a(()=>`git remote add ${h.value.name.trim()||D(`@RMT01:<名称>`)} ${h.value.url.trim()||D(`@RMT01:<地址>`)}`);async function P(){let e=h.value.name.trim(),t=h.value.url.trim();if(!e){_.warning(D(`@RMT01:请输入远程名称`));return}if(!t){_.warning(D(`@RMT01:请输入远程地址`));return}if(c.remotes.some(t=>t.name===e)){_.warning(D(`@RMT01:远程名称已存在`));return}x.value=!0;try{await c.addRemote(t,e)&&(_.success(D(`@RMT01:远程添加成功`)),h.value={name:``,url:``})}finally{x.value=!1}}let F=T(!1),I=T(null),L=T(``),R=T(!1),Xe=a(()=>`git remote rename ${I.value?.name||D(`@RMT01:<原名称>`)} ${L.value.trim()||D(`@RMT01:<新名称>`)}`);function Ze(e){I.value=e,L.value=e.name,F.value=!0}async function z(){let e=I.value;if(!e)return;let t=L.value.trim();if(!t){_.warning(D(`@RMT01:请输入新名称`));return}if(t===e.name){_.warning(D(`@RMT01:新名称与原名称相同`));return}if(c.remotes.some(e=>e.name===t)){_.warning(D(`@RMT01:远程名称已存在`));return}R.value=!0;try{await c.renameRemote(e.name,t)&&(F.value=!1)}finally{R.value=!1}}let B=T(!1),V=T(null),H=T(``),U=T(!1),Qe=a(()=>`git remote set-url ${V.value?.name||D(`@RMT01:<名称>`)} ${H.value.trim()||D(`@RMT01:<地址>`)}`);function $e(e){V.value=e,H.value=e.fetchUrl,B.value=!0}async function W(){let e=V.value;if(!e)return;let t=H.value.trim();if(!t){_.warning(D(`@RMT01:请输入远程地址`));return}U.value=!0;try{await c.setRemoteUrl(e.name,t)&&(B.value=!1)}finally{U.value=!1}}let G=T(!1),K=T(null),q=T([{url:``}]),J=T(!1),et=a(()=>{let e=K.value?.name||D(`@RMT01:<名称>`),t=q.value.map(e=>e.url.trim()).filter(Boolean),n=[`git config --unset-all remote.${e}.pushurl`];for(let r of t)n.push(`git remote set-url --push --add ${e} ${r}`);return n.join(` && `)});function tt(e){K.value=e,q.value=e.hasExplicitPushUrls&&e.pushUrls.length>0?e.pushUrls.map(e=>({url:e})):[{url:``}],G.value=!0}function nt(){if(q.value.length>=10){_.warning(D(`@RMT01:推送地址最多 10 条`));return}q.value.push({url:``})}function rt(e){q.value.splice(e,1),q.value.length===0&&q.value.push({url:``})}async function Y(){let e=K.value;if(!e)return;let t=q.value.map(e=>e.url.trim()).filter(Boolean);J.value=!0;try{await c.setRemotePushUrls(e.name,t)&&(G.value=!1)}finally{J.value=!1}}async function it(e){try{await C.confirm(e.isUpstream?D(`@RMT01:当前分支上游指向该远程,删除后将解除上游跟踪`):D(`@RMT01:删除后本地配置将移除,远程仓库本身不受影响`),`${D(`@RMT01:确认删除远程`)} "${e.name}"`,{type:`warning`,confirmButtonText:D(`@RMT01:删除`),cancelButtonText:D(`@RMT01:取消`)})}catch{return}await c.removeRemote(e.name)}let X=T(``),Z=T(!1);async function at(e){X.value=e.name;try{await c.pushToRemoteWithProgress(void 0,e.name)&&_.success(`${D(`@RMT01:已推送到`)} ${e.name}`)}finally{X.value=``}}async function ot(){Z.value=!0;try{await c.pushAllRemotes()}finally{Z.value=!1}}async function Q(e){if(e)try{await navigator.clipboard.writeText(e),_.success(D(`@RMT01:地址已复制`))}catch{_.error(D(`@RMT01:复制失败`))}}return w(p,e=>{e&&(c.fetchRemotes(),c.lastPushAllResults=[])}),(a,s)=>{let _=pe,C=te,w=oe,T=fe,A=ae,I=se,K=ie,$=ee;return d(),t(f,null,[o(k,{modelValue:p.value,"onUpdate:modelValue":s[3]||=e=>p.value=e,title:i(D)(`@RMT01:远程仓库管理`),size:`large`,type:`flex`,"close-on-click-modal":!1,"custom-class":`remote-manager-dialog`},{footer:y(()=>[r(`div`,He,[i(c).lastPushAllResults.length?(d(),t(`div`,Ue,[r(`span`,We,e(i(D)(`@RMT01:上次推送结果`)),1),(d(!0),t(f,null,g(i(c).lastPushAllResults,n=>(d(),t(`span`,{key:n.name,class:ne([`rm-push-result`,n.ok?`is-ok`:`is-fail`]),title:n.error||``},[o(C,null,{default:y(()=>[n.ok?(d(),l(i(le),{key:0})):(d(),l(i(ue),{key:1}))]),_:2},1024),u(` `+e(n.name),1)],10,Ge))),128))])):v(``,!0),r(`div`,Ke,[i(c).hasMultipleRemotes?(d(),l(T,{key:0,type:`primary`,icon:i(S),loading:Z.value,onClick:ot},{default:y(()=>[u(e(i(D)(`@RMT01:推送到全部远程`)),1)]),_:1},8,[`icon`,`loading`])):v(``,!0),o(T,{onClick:s[2]||=e=>p.value=!1},{default:y(()=>[u(e(i(D)(`@RMT01:关闭`)),1)]),_:1})])])]),default:y(()=>[r(`div`,me,[r(`div`,he,[r(`div`,ge,[o(_,{"icon-class":`remote-repo`})]),r(`div`,_e,[r(`h4`,null,e(i(D)(`@RMT01:管理多个远程仓库`)),1),r(`p`,null,e(i(D)(`@RMT01:一个仓库可配置多个远程(如 origin / upstream / backup),推送时按名称选择目标。`)),1)])]),r(`section`,ve,[r(`h4`,ye,[o(C,null,{default:y(()=>[o(i(E))]),_:1}),r(`span`,null,e(i(D)(`@RMT01:添加远程`)),1)]),r(`div`,be,[r(`div`,xe,[r(`label`,Se,e(i(D)(`@RMT01:远程名称`)),1),o(w,{id:`rm-add-name`,modelValue:h.value.name,"onUpdate:modelValue":s[0]||=e=>h.value.name=e,placeholder:i(D)(`@RMT01:例如 origin、upstream、backup`),clearable:``,onKeyup:m(P,[`enter`])},null,8,[`modelValue`,`placeholder`])]),r(`div`,Ce,[r(`label`,we,e(i(D)(`@RMT01:远程地址`)),1),o(w,{id:`rm-add-url`,modelValue:h.value.url,"onUpdate:modelValue":s[1]||=e=>h.value.url=e,placeholder:`git@github.com:user/project.git`,clearable:``,onKeyup:m(P,[`enter`])},null,8,[`modelValue`])]),o(T,{type:`primary`,loading:x.value,class:`rm-add__btn`,onClick:P},{default:y(()=>[u(e(i(D)(`@RMT01:添加`)),1)]),_:1},8,[`loading`])]),o(M,{command:O.value,title:i(D)(`@RMT01:命令预览:`),placeholder:i(D)(`@RMT01:填写名称与地址后显示命令`)},null,8,[`command`,`title`,`placeholder`])]),r(`section`,Te,[r(`h4`,Ee,[o(C,null,{default:y(()=>[o(i(de))]),_:1}),r(`span`,null,e(i(D)(`@RMT01:远程仓库列表`)),1),r(`span`,De,e(i(c).remotes.length),1)]),i(c).isLoadingRemotes&&i(c).remotes.length===0?(d(),t(`div`,Oe,[o(C,{class:`is-loading`},{default:y(()=>[o(i(n))]),_:1}),r(`span`,null,e(i(D)(`@RMT01:加载中…`)),1)])):i(c).remotes.length===0?(d(),t(`div`,ke,[r(`span`,null,e(i(D)(`@RMT01:暂无远程仓库`)),1)])):(d(),t(`div`,Ae,[(d(!0),t(f,null,g(i(c).remotes,n=>(d(),t(`div`,{key:n.name,class:`rm-row`},[r(`div`,je,[r(`span`,Me,e(n.name),1),n.isUpstream?(d(),l(A,{key:0,size:`small`,type:`success`,effect:`light`},{default:y(()=>[u(e(i(D)(`@RMT01:上游`)),1)]),_:1})):v(``,!0),n.isPushDefault?(d(),l(A,{key:1,size:`small`,type:`warning`,effect:`light`},{default:y(()=>[u(e(i(D)(`@RMT01:默认推送`)),1)]),_:1})):v(``,!0),s[9]||=r(`span`,{class:`rm-row__spacer`},null,-1),r(`div`,Ne,[o(T,{size:`small`,type:`primary`,icon:i(S),loading:X.value===n.name,disabled:i(c).isPushing,onClick:e=>at(n)},{default:y(()=>[u(e(i(D)(`@RMT01:推送`)),1)]),_:1},8,[`icon`,`loading`,`disabled`,`onClick`]),o(j,{tooltip:i(D)(`@RMT01:编辑地址`),size:`small`,onClick:e=>$e(n)},{default:y(()=>[o(C,null,{default:y(()=>[o(i(ce))]),_:1})]),_:1},8,[`tooltip`,`onClick`]),o(j,{tooltip:i(D)(`@RMT01:管理推送地址`),size:`small`,onClick:e=>tt(n)},{default:y(()=>[o(C,null,{default:y(()=>[o(i(re))]),_:1})]),_:1},8,[`tooltip`,`onClick`]),o(j,{tooltip:i(D)(`@RMT01:重命名`),size:`small`,onClick:e=>Ze(n)},{default:y(()=>[o(_,{"icon-class":`git-branch`})]),_:1},8,[`tooltip`,`onClick`]),o(j,{tooltip:i(D)(`@RMT01:删除`),size:`small`,"hover-color":`var(--color-danger)`,onClick:e=>it(n)},{default:y(()=>[o(C,null,{default:y(()=>[o(i(b))]),_:1})]),_:1},8,[`tooltip`,`onClick`])])]),r(`div`,Pe,[r(`div`,Fe,[r(`span`,Ie,e(i(D)(`@RMT01:拉取地址`)),1),o(I,{content:i(D)(`@RMT01:点击复制`),placement:`top`,"show-after":300},{default:y(()=>[r(`span`,{class:`rm-url__value`,onClick:e=>Q(n.fetchUrl)},e(n.fetchUrl),9,Le)]),_:2},1032,[`content`])]),n.hasExplicitPushUrls?(d(),t(`div`,Re,[r(`span`,ze,e(i(D)(`@RMT01:推送地址`)),1),(d(!0),t(f,null,g(n.pushUrls,(t,n)=>(d(),l(I,{key:n,content:i(D)(`@RMT01:点击复制`),placement:`top`,"show-after":300},{default:y(()=>[o(A,{size:`small`,class:`rm-pushurl`,onClick:e=>Q(t)},{default:y(()=>[u(e(t),1)]),_:2},1032,[`onClick`])]),_:2},1032,[`content`]))),128))])):(d(),t(`div`,Be,[r(`span`,Ve,e(i(D)(`@RMT01:推送地址与拉取地址一致`)),1)]))])]))),128))]))])])]),_:1},8,[`modelValue`,`title`]),o(k,{modelValue:F.value,"onUpdate:modelValue":s[5]||=e=>F.value=e,title:i(D)(`@RMT01:重命名远程仓库`),width:`min(660px, 92vw)`,"close-on-click-modal":!1,"show-footer":``,"confirm-text":i(D)(`@RMT01:保存`),"cancel-text":i(D)(`@RMT01:取消`),"confirm-loading":R.value,onConfirm:z},{default:y(()=>[o($,{"label-position":`top`},{default:y(()=>[o(K,{label:i(D)(`@RMT01:新名称`)},{default:y(()=>[o(w,{modelValue:L.value,"onUpdate:modelValue":s[4]||=e=>L.value=e,placeholder:i(D)(`@RMT01:请输入新名称`),clearable:``,onKeyup:m(z,[`enter`])},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1}),r(`p`,qe,e(i(D)(`@RMT01:重命名后当前分支的上游跟踪会自动跟随,无需手动调整。`)),1),o(M,{command:Xe.value,title:i(D)(`@RMT01:命令预览:`)},null,8,[`command`,`title`])]),_:1},8,[`modelValue`,`title`,`confirm-text`,`cancel-text`,`confirm-loading`]),o(k,{modelValue:B.value,"onUpdate:modelValue":s[7]||=e=>B.value=e,title:i(D)(`@RMT01:编辑远程地址`),width:`min(660px, 92vw)`,"close-on-click-modal":!1,"show-footer":``,"confirm-text":i(D)(`@RMT01:保存`),"cancel-text":i(D)(`@RMT01:取消`),"confirm-loading":U.value,onConfirm:W},{default:y(()=>[o($,{"label-position":`top`},{default:y(()=>[o(K,{label:i(D)(`@RMT01:远程地址`)},{default:y(()=>[o(w,{modelValue:H.value,"onUpdate:modelValue":s[6]||=e=>H.value=e,placeholder:`git@github.com:user/project.git`,clearable:``,onKeyup:m(W,[`enter`])},null,8,[`modelValue`])]),_:1},8,[`label`])]),_:1}),V.value?.hasExplicitPushUrls?(d(),t(`p`,N,e(i(D)(`@RMT01:该远程配置了独立的推送地址,不受本次修改影响`)),1)):v(``,!0),o(M,{command:Qe.value,title:i(D)(`@RMT01:命令预览:`)},null,8,[`command`,`title`])]),_:1},8,[`modelValue`,`title`,`confirm-text`,`cancel-text`,`confirm-loading`]),o(k,{modelValue:G.value,"onUpdate:modelValue":s[8]||=e=>G.value=e,title:i(D)(`@RMT01:管理推送地址`),width:`min(660px, 92vw)`,"close-on-click-modal":!1,"show-footer":``,"confirm-text":i(D)(`@RMT01:保存`),"cancel-text":i(D)(`@RMT01:取消`),"confirm-loading":J.value,onConfirm:Y},{default:y(()=>[r(`div`,Je,[(d(!0),t(f,null,g(q.value,(e,n)=>(d(),t(`div`,{key:n,class:`rm-pushurl-row`},[o(w,{modelValue:e.url,"onUpdate:modelValue":t=>e.url=t,placeholder:i(D)(`@RMT01:推送地址`),clearable:``,onKeyup:m(Y,[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),o(j,{tooltip:i(D)(`@RMT01:删除`),size:`small`,"hover-color":`var(--color-danger)`,onClick:e=>rt(n)},{default:y(()=>[o(C,null,{default:y(()=>[o(i(b))]),_:1})]),_:1},8,[`tooltip`,`onClick`])]))),128)),o(T,{link:``,type:`primary`,icon:i(E),onClick:nt},{default:y(()=>[u(e(i(D)(`@RMT01:添加一行`)),1)]),_:1},8,[`icon`]),r(`p`,Ye,e(i(D)(`@RMT01:留空则推送地址与拉取地址一致;配置多个推送地址后可一次推送到多处。`)),1)]),o(M,{command:et.value,title:i(D)(`@RMT01:命令预览:`)},null,8,[`command`,`title`])]),_:1},8,[`modelValue`,`title`,`confirm-text`,`cancel-text`,`confirm-loading`])],64)}}}),[[`__scopeId`,`data-v-6b4b7931`]]);export{P as default};
@@ -1 +1 @@
1
- import"./rolldown-runtime-C0FnF6B9.js";import{$r as e,An as t,Dn as n,Dr as r,En as i,Fn as a,Fr as o,J as s,Jt as c,Ln as l,Qn as u,Sn as d,Vn as f,W as p,dn as m,lr as h,mr as g,xn as _}from"./element-plus-J45pKUrE.js";import{n as v,t as y}from"./_plugin-vue_export-helper-Csn085FF.js";import{t as b}from"./SvgIcon-5AlG3IfR.js";import{U as x,W as S}from"./index-C7Y9odvZ.js";f(),g(),m(),o();var C={class:`remote-wrapper`},w=[`href`,`aria-label`],T=[`aria-label`],E={key:1,class:`repo-url repo-url--empty`},D=y(l({__name:`RemoteRepoCard`,setup(o){let l=x(),f=i(()=>{let e=l.remoteUrl||``,t=e.replace(/\.git$/,``).replace(/\/+$/,``).split(/[\\/:]+/).filter(Boolean);return t.length>=2?t.slice(-2).join(`/`):e});return(i,o)=>{let m=s,g=b,y=p;return u(),t(`div`,C,[a(S,{size:`small`,tooltip:r(v)(`@F13B4:管理远程仓库`),onClick:o[0]||=e=>r(l).isRemoteManagerVisible=!0},{default:h(()=>[a(m,null,{default:h(()=>[a(r(c))]),_:1})]),_:1},8,[`tooltip`]),r(l).remoteUrl?(u(),t(d,{key:0},[a(y,{content:r(l).isRemoteBrowsable?r(v)(`@F13B4:在浏览器中打开仓库主页`):r(v)(`@F13B4:无法识别该远程仓库的网页地址`),placement:`top`,effect:`dark`,"show-after":300},{default:h(()=>[r(l).isRemoteBrowsable?(u(),t(`a`,{key:0,href:r(l).remoteWebUrl,target:`_blank`,rel:`noopener noreferrer`,class:`remote-repo-link`,"aria-label":r(v)(`@F13B4:在浏览器中打开仓库主页`),onClick:o[1]||=_(()=>{},[`stop`])},[a(g,{"icon-class":`remote-repo`,"class-name":`remote-repo-icon`})],8,w)):(u(),t(`span`,{key:1,class:`remote-repo-link remote-repo-link--disabled`,"aria-label":r(v)(`@F13B4:无法识别该远程仓库的网页地址`)},[a(g,{"icon-class":`remote-repo`,"class-name":`remote-repo-icon`})],8,T))]),_:1},8,[`content`]),a(y,{content:`${r(v)(`@F13B4:复制仓库地址`)} · ${r(l).remoteUrl}`,placement:`top`,effect:`dark`,"show-after":300},{default:h(()=>[n(`span`,{class:`repo-url clickable`,onClick:o[2]||=e=>r(l).copyRemoteUrl()},e(f.value),1)]),_:1},8,[`content`])],64)):(u(),t(`span`,E,e(r(v)(`@F13B4:未配置远程仓库`)),1))])}}}),[[`__scopeId`,`data-v-a4f3fbeb`]]);export{D as default};
1
+ import"./rolldown-runtime-C0FnF6B9.js";import{$r as e,An as t,Dn as n,Dr as r,En as i,Fn as a,Fr as o,J as s,Jt as c,Ln as l,Qn as u,Sn as d,Vn as f,W as p,dn as m,lr as h,mr as g,xn as _}from"./element-plus-J45pKUrE.js";import{n as v,t as y}from"./_plugin-vue_export-helper-Csn085FF.js";import{t as b}from"./SvgIcon-5AlG3IfR.js";import{U as x,W as S}from"./index-DQ82h1aq.js";f(),g(),m(),o();var C={class:`remote-wrapper`},w=[`href`,`aria-label`],T=[`aria-label`],E={key:1,class:`repo-url repo-url--empty`},D=y(l({__name:`RemoteRepoCard`,setup(o){let l=x(),f=i(()=>{let e=l.remoteUrl||``,t=e.replace(/\.git$/,``).replace(/\/+$/,``).split(/[\\/:]+/).filter(Boolean);return t.length>=2?t.slice(-2).join(`/`):e});return(i,o)=>{let m=s,g=b,y=p;return u(),t(`div`,C,[a(S,{size:`small`,tooltip:r(v)(`@F13B4:管理远程仓库`),onClick:o[0]||=e=>r(l).isRemoteManagerVisible=!0},{default:h(()=>[a(m,null,{default:h(()=>[a(r(c))]),_:1})]),_:1},8,[`tooltip`]),r(l).remoteUrl?(u(),t(d,{key:0},[a(y,{content:r(l).isRemoteBrowsable?r(v)(`@F13B4:在浏览器中打开仓库主页`):r(v)(`@F13B4:无法识别该远程仓库的网页地址`),placement:`top`,effect:`dark`,"show-after":300},{default:h(()=>[r(l).isRemoteBrowsable?(u(),t(`a`,{key:0,href:r(l).remoteWebUrl,target:`_blank`,rel:`noopener noreferrer`,class:`remote-repo-link`,"aria-label":r(v)(`@F13B4:在浏览器中打开仓库主页`),onClick:o[1]||=_(()=>{},[`stop`])},[a(g,{"icon-class":`remote-repo`,"class-name":`remote-repo-icon`})],8,w)):(u(),t(`span`,{key:1,class:`remote-repo-link remote-repo-link--disabled`,"aria-label":r(v)(`@F13B4:无法识别该远程仓库的网页地址`)},[a(g,{"icon-class":`remote-repo`,"class-name":`remote-repo-icon`})],8,T))]),_:1},8,[`content`]),a(y,{content:`${r(v)(`@F13B4:复制仓库地址`)} · ${r(l).remoteUrl}`,placement:`top`,effect:`dark`,"show-after":300},{default:h(()=>[n(`span`,{class:`repo-url clickable`,onClick:o[2]||=e=>r(l).copyRemoteUrl()},e(f.value),1)]),_:1},8,[`content`])],64)):(u(),t(`span`,E,e(r(v)(`@F13B4:未配置远程仓库`)),1))])}}}),[[`__scopeId`,`data-v-a4f3fbeb`]]);export{D as default};
@@ -1,3 +1,3 @@
1
- import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{$r as t,An as n,Dn as r,Dr as i,En as a,Fn as o,Fr as s,Gn as c,Jn as ee,Jr as l,Ln as u,Nn as te,Pn as d,Qn as f,Sn as p,Sr as ne,Vn as m,W as re,Xn as ie,Xr as h,bn as ae,dn as g,er as _,i as oe,kn as v,lr as y,mr as b,sr as x,ur as S,vn as se,xr as C,yn as w}from"./element-plus-J45pKUrE.js";import{n as T,t as ce}from"./_plugin-vue_export-helper-Csn085FF.js";import{t as E}from"./dagre-DPkLmI0C.js";import{t as le}from"./configStore-DOaPZ6Mq.js";import{r as D}from"./monaco-ChZ0d0qB.js";import{a as ue,c as de,i as fe,l as pe,n as me,o as he,r as ge,s as _e,t as ve}from"./vue-flow-8aIpM5CU.js";import{I as ye,R as be}from"./index-C7Y9odvZ.js";m(),b(),s(),g();var xe=e(E(),1),Se={class:`source-map-view`},Ce={class:`sm-toolbar`},we={class:`sm-toolbar-left`},Te={class:`sm-title`},Ee={class:`sm-toolbar-center`},De=[`placeholder`,`disabled`],Oe=[`disabled`],ke={class:`sm-toolbar-right`},Ae={class:`sm-body`},je={class:`sm-panel-header sm-panel-header--tabs`},Me={key:0,class:`sm-badge`},Ne={class:`sm-panel-body sm-file-tree`},Pe=[`onClick`],Fe={key:1,class:`sm-tree-arrow-spacer`},Ie={key:2,class:`sm-tree-icon mit-icon`,"aria-hidden":`true`},Le=[`xlink:href`],Re={key:3,class:`sm-tree-icon mit-icon`,"aria-hidden":`true`},ze=[`xlink:href`],Be=[`title`],Ve={key:1,class:`sm-tree-empty`},He={class:`sm-panel-body sm-outline-body`},Ue={class:`sm-badge`,style:{"margin-left":`auto`}},We=[`onClick`],Ge=[`title`],Ke={key:0,class:`sm-outline-desc`},qe={key:1,class:`sm-tree-empty`},Je={class:`sm-panel sm-panel-graph`},Ye={key:0,class:`sm-project-info`},Xe={class:`sm-lang-badge`},Ze={class:`sm-summary-text`},Qe={class:`sm-graph-container`},$e={class:`sm-layout-btn-wrap`},et=[`disabled`],tt=[`title`],nt={class:`sm-fn-label`},rt={key:0,class:`sm-fn-desc`},it={key:0,class:`sm-graph-empty`},at={viewBox:`0 0 24 24`,width:`48`,height:`48`,fill:`none`,stroke:`currentColor`,"stroke-width":`1`,style:{opacity:`0.3`}},ot={key:1,class:`sm-graph-loading`},st={class:`sm-log-header`},ct={key:0,class:`sm-log-indicator`},lt={class:`sm-log-body`,ref:`logBodyRef`},ut={key:0,class:`sm-empty`},dt={class:`sm-panel-header`},ft={key:0,class:`sm-badge sm-badge-amber`},pt={key:0,class:`sm-node-detail`},mt={class:`sm-node-name`},ht={class:`sm-node-file`},gt={key:0},_t={key:0,class:`sm-node-desc`},vt={class:`sm-panel-body sm-source-body`},yt={key:0,class:`sm-source-overlay`},bt={key:1,class:`sm-source-overlay sm-source-placeholder`},O=ce(u({__name:`SourceMapView`,setup(e){let{theme:s}=ye(),u=le(),m=C(u.currentDirectory||``),g=C(`idle`),b=C([]),ce=0,E=C(null),O=C(null),k=C(`files`),A=C(``),j=C(``),M=C(!1),N=C([]),P=C(new Set),F=C({files:!0,graph:!0,source:!0}),I=C(!1),L=C(220),R=C(360),z=C(140),B=null,V=0,xt=0,H=0;function U(e,t){B=e,V=t.clientX,xt=t.clientY,H=e===`files`?L.value:e===`source`?R.value:z.value,document.addEventListener(`mousemove`,St),document.addEventListener(`mouseup`,W),t.preventDefault()}function St(e){B&&(B===`files`?L.value=Math.max(120,Math.min(480,H+e.clientX-V)):B===`source`?R.value=Math.max(200,Math.min(700,H+V-e.clientX)):z.value=Math.max(60,Math.min(500,H+xt-e.clientY)))}function W(){B=null,document.removeEventListener(`mousemove`,St),document.removeEventListener(`mouseup`,W)}let G=C(null),K=ne(null),{fitView:Ct,setNodes:q,setEdges:J,getNodes:wt,getEdges:Tt,updateNodeInternals:Et}=pe(),Y=a(()=>g.value===`scanning`||g.value===`analyzing`),Dt=a(()=>s.value===`dark`?`#334155`:`#cbd5e1`),X=a(()=>E.value?.nodes.find(e=>e.id===O.value)??null),Ot=a(()=>{if(!E.value)return[];let e=new Map;for(let t of E.value.nodes){let n=t.subsystem??`__default__`;if(!e.has(n)){let r=E.value.subsystems?.find(e=>e.name===n);e.set(n,{displayName:r?.displayName||t.subsystem||T(`@SRCMAP:默认`),color:t.subsystemColor||Q[0],nodes:[]})}e.get(n).nodes.push(t)}return[...e.entries()].map(([,e])=>e)});function Z(e,t=`info`){b.value.push({id:++ce,message:e,type:t,timestamp:Date.now()}),b.value.length>200&&b.value.splice(0,b.value.length-200)}function kt(e){let t={name:``,path:``,kind:`dir`,children:[],childMap:new Map};for(let n of e){let e=n.trim().split(`/`).filter(Boolean),r=t,i=``;for(let t=0;t<e.length;t++){let n=e[t];i=i?`${i}/${n}`:n;let a=t===e.length-1,o=r.childMap.get(n);o||(o={name:n,path:i,kind:a?`file`:`dir`,children:[],childMap:new Map},r.childMap.set(n,o),r.children.push(o)),r=o}}let n=e=>{e.sort((e,t)=>e.kind===t.kind?e.name.localeCompare(t.name):e.kind===`dir`?-1:1),e.forEach(e=>{e.kind===`dir`&&n(e.children)})};return n(t.children),t.children}let Q=[`var(--color-warning-light)`,`var(--color-primary)`,`var(--color-success-light)`,`var(--color-think)`];function At(e){return e.subsystemColor?e.subsystemColor:e.subsystemIndex===void 0?e.importance===`high`?`var(--color-warning-light)`:e.importance===`low`?`#94a3b8`:`var(--color-primary)`:Q[e.subsystemIndex%Q.length]}function jt(e){return{ts:`typescript`,tsx:`typescript`,js:`javascript`,mjs:`javascript`,cjs:`javascript`,jsx:`javascript`,vue:`html`,svelte:`html`,html:`html`,py:`python`,java:`java`,go:`go`,rs:`rust`,cpp:`cpp`,cc:`cpp`,cxx:`cpp`,c:`c`,h:`c`,hpp:`cpp`,cs:`csharp`,rb:`ruby`,php:`php`,swift:`swift`,kt:`kotlin`,sh:`shell`,bash:`shell`,json:`json`,yaml:`yaml`,yml:`yaml`,md:`markdown`,css:`css`,scss:`scss`,less:`less`,sql:`sql`}[e.split(`.`).pop()?.toLowerCase()||``]||`plaintext`}function Mt(){G.value&&!K.value&&(K.value=D.create(G.value,{value:``,language:`plaintext`,theme:s.value===`dark`?`vs-dark`:`vs`,readOnly:!0,fontSize:12,lineHeight:19,fontFamily:`'JetBrains Mono', 'Fira Code', Consolas, monospace`,minimap:{enabled:!1},scrollBeyondLastLine:!1,automaticLayout:!0,wordWrap:`off`,padding:{top:8,bottom:8},scrollbar:{verticalScrollbarSize:6,horizontalScrollbarSize:6}}))}x(s,e=>{K.value&&D.setTheme(e===`dark`?`vs-dark`:`vs`)});function Nt(e,t){let n={};t.forEach(e=>{n[e.source]||(n[e.source]=[]),n[e.source].push(e.target)});let r=new Map;e.forEach(e=>{let t=e.subsystem??`__default`;r.has(t)||r.set(t,[]),r.get(t).push(e)});let i=[],a=0;for(let[,e]of r){let t=new Set(e.map(e=>e.id)),r={},o=e.length?[e[0].id]:[];for(o[0]&&(r[o[0]]=0);o.length;){let e=o.shift();(n[e]||[]).filter(e=>t.has(e)).forEach(t=>{r[t]===void 0&&(r[t]=(r[e]??0)+1,o.push(t))})}let s={};e.forEach(e=>{let t=r[e.id]??0;s[t]=(s[t]||0)+1});let c={};e.forEach(e=>{let t=r[e.id]??0;c[t]=(c[t]??-1)+1;let n=c[t],o=s[t]??1,ee=a*600+n*220-(o-1)*220/2,l=t*110,u=At(e);i.push({id:e.id,type:`default`,position:{x:ee,y:l},label:e.label,class:`sm-fn-node`,data:{...e,_accentColor:u},style:{"--node-accent":u}})}),a++}return{flowNodes:i,flowEdges:t.map((e,t)=>({id:`e_${t}_${e.source}_${e.target}`,source:e.source,target:e.target,type:`smoothstep`,animated:!1,class:`sm-fn-edge`,markerEnd:{type:ue.ArrowClosed}}))}}async function Pt(){let e=wt.value,t=Tt.value;if(e.length!==0){I.value=!0;try{await c(),await new Promise(e=>requestAnimationFrame(()=>e())),Et(e.map(e=>e.id)),await new Promise(e=>requestAnimationFrame(()=>e()));let n=new Map;e.forEach(e=>{let t=e.data?.subsystem??`__default__`;n.has(t)||n.set(t,[]),n.get(t).push(e)});let r=new Map,i=0;for(let[,e]of n){let n=new xe.default.graphlib.Graph;n.setDefaultEdgeLabel(()=>({})),n.setGraph({rankdir:`TB`,nodesep:55,ranksep:75,marginx:40,marginy:40});let a=new Set(e.map(e=>e.id));e.forEach(e=>{let t=190,r=e.data?.description?68:48,i=document.querySelector(`.vue-flow__node[data-id="${e.id}"]`);i&&i.offsetWidth>0&&(t=i.offsetWidth,r=i.offsetHeight),n.setNode(e.id,{width:t,height:r})}),t.forEach(e=>{a.has(e.source)&&a.has(e.target)&&n.setEdge(e.source,e.target)}),xe.default.layout(n);let o=0;e.forEach(e=>{let t=n.node(e.id);t&&(r.set(e.id,{x:i+t.x-t.width/2,y:t.y-t.height/2}),o=Math.max(o,t.x+t.width/2))}),i+=o+120}let a=e.map(e=>({...e,position:r.get(e.id)??e.position}));q(a),await c(),Ct({padding:.18})}finally{I.value=!1}}}async function Ft(){if(!m.value.trim()){oe.warning(T(`@SRCMAP:请先输入项目路径`));return}if(!Y.value){b.value=[],E.value=null,O.value=null,A.value=``,j.value=``,q([]),J([]),g.value=`scanning`,Z(T(`@SRCMAP:开始分析项目...`),`info`);try{let e=await fetch(`/api/code-analysis/analyze`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:m.value})});if(!e.ok){let t=await e.json().catch(()=>({error:`请求失败`}));throw Error(t.error||`HTTP ${e.status}`)}let t=e.body.getReader(),n=new TextDecoder,r=``;g.value=`analyzing`;let i=``,a=[];for(;;){let{done:e,value:o}=await t.read();if(e)break;r+=n.decode(o,{stream:!0});let s=r.split(`
1
+ import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{$r as t,An as n,Dn as r,Dr as i,En as a,Fn as o,Fr as s,Gn as c,Jn as ee,Jr as l,Ln as u,Nn as te,Pn as d,Qn as f,Sn as p,Sr as ne,Vn as m,W as re,Xn as ie,Xr as h,bn as ae,dn as g,er as _,i as oe,kn as v,lr as y,mr as b,sr as x,ur as S,vn as se,xr as C,yn as w}from"./element-plus-J45pKUrE.js";import{n as T,t as ce}from"./_plugin-vue_export-helper-Csn085FF.js";import{t as E}from"./dagre-DPkLmI0C.js";import{t as le}from"./configStore-DOaPZ6Mq.js";import{r as D}from"./monaco-ChZ0d0qB.js";import{a as ue,c as de,i as fe,l as pe,n as me,o as he,r as ge,s as _e,t as ve}from"./vue-flow-8aIpM5CU.js";import{I as ye,R as be}from"./index-DQ82h1aq.js";m(),b(),s(),g();var xe=e(E(),1),Se={class:`source-map-view`},Ce={class:`sm-toolbar`},we={class:`sm-toolbar-left`},Te={class:`sm-title`},Ee={class:`sm-toolbar-center`},De=[`placeholder`,`disabled`],Oe=[`disabled`],ke={class:`sm-toolbar-right`},Ae={class:`sm-body`},je={class:`sm-panel-header sm-panel-header--tabs`},Me={key:0,class:`sm-badge`},Ne={class:`sm-panel-body sm-file-tree`},Pe=[`onClick`],Fe={key:1,class:`sm-tree-arrow-spacer`},Ie={key:2,class:`sm-tree-icon mit-icon`,"aria-hidden":`true`},Le=[`xlink:href`],Re={key:3,class:`sm-tree-icon mit-icon`,"aria-hidden":`true`},ze=[`xlink:href`],Be=[`title`],Ve={key:1,class:`sm-tree-empty`},He={class:`sm-panel-body sm-outline-body`},Ue={class:`sm-badge`,style:{"margin-left":`auto`}},We=[`onClick`],Ge=[`title`],Ke={key:0,class:`sm-outline-desc`},qe={key:1,class:`sm-tree-empty`},Je={class:`sm-panel sm-panel-graph`},Ye={key:0,class:`sm-project-info`},Xe={class:`sm-lang-badge`},Ze={class:`sm-summary-text`},Qe={class:`sm-graph-container`},$e={class:`sm-layout-btn-wrap`},et=[`disabled`],tt=[`title`],nt={class:`sm-fn-label`},rt={key:0,class:`sm-fn-desc`},it={key:0,class:`sm-graph-empty`},at={viewBox:`0 0 24 24`,width:`48`,height:`48`,fill:`none`,stroke:`currentColor`,"stroke-width":`1`,style:{opacity:`0.3`}},ot={key:1,class:`sm-graph-loading`},st={class:`sm-log-header`},ct={key:0,class:`sm-log-indicator`},lt={class:`sm-log-body`,ref:`logBodyRef`},ut={key:0,class:`sm-empty`},dt={class:`sm-panel-header`},ft={key:0,class:`sm-badge sm-badge-amber`},pt={key:0,class:`sm-node-detail`},mt={class:`sm-node-name`},ht={class:`sm-node-file`},gt={key:0},_t={key:0,class:`sm-node-desc`},vt={class:`sm-panel-body sm-source-body`},yt={key:0,class:`sm-source-overlay`},bt={key:1,class:`sm-source-overlay sm-source-placeholder`},O=ce(u({__name:`SourceMapView`,setup(e){let{theme:s}=ye(),u=le(),m=C(u.currentDirectory||``),g=C(`idle`),b=C([]),ce=0,E=C(null),O=C(null),k=C(`files`),A=C(``),j=C(``),M=C(!1),N=C([]),P=C(new Set),F=C({files:!0,graph:!0,source:!0}),I=C(!1),L=C(220),R=C(360),z=C(140),B=null,V=0,xt=0,H=0;function U(e,t){B=e,V=t.clientX,xt=t.clientY,H=e===`files`?L.value:e===`source`?R.value:z.value,document.addEventListener(`mousemove`,St),document.addEventListener(`mouseup`,W),t.preventDefault()}function St(e){B&&(B===`files`?L.value=Math.max(120,Math.min(480,H+e.clientX-V)):B===`source`?R.value=Math.max(200,Math.min(700,H+V-e.clientX)):z.value=Math.max(60,Math.min(500,H+xt-e.clientY)))}function W(){B=null,document.removeEventListener(`mousemove`,St),document.removeEventListener(`mouseup`,W)}let G=C(null),K=ne(null),{fitView:Ct,setNodes:q,setEdges:J,getNodes:wt,getEdges:Tt,updateNodeInternals:Et}=pe(),Y=a(()=>g.value===`scanning`||g.value===`analyzing`),Dt=a(()=>s.value===`dark`?`#334155`:`#cbd5e1`),X=a(()=>E.value?.nodes.find(e=>e.id===O.value)??null),Ot=a(()=>{if(!E.value)return[];let e=new Map;for(let t of E.value.nodes){let n=t.subsystem??`__default__`;if(!e.has(n)){let r=E.value.subsystems?.find(e=>e.name===n);e.set(n,{displayName:r?.displayName||t.subsystem||T(`@SRCMAP:默认`),color:t.subsystemColor||Q[0],nodes:[]})}e.get(n).nodes.push(t)}return[...e.entries()].map(([,e])=>e)});function Z(e,t=`info`){b.value.push({id:++ce,message:e,type:t,timestamp:Date.now()}),b.value.length>200&&b.value.splice(0,b.value.length-200)}function kt(e){let t={name:``,path:``,kind:`dir`,children:[],childMap:new Map};for(let n of e){let e=n.trim().split(`/`).filter(Boolean),r=t,i=``;for(let t=0;t<e.length;t++){let n=e[t];i=i?`${i}/${n}`:n;let a=t===e.length-1,o=r.childMap.get(n);o||(o={name:n,path:i,kind:a?`file`:`dir`,children:[],childMap:new Map},r.childMap.set(n,o),r.children.push(o)),r=o}}let n=e=>{e.sort((e,t)=>e.kind===t.kind?e.name.localeCompare(t.name):e.kind===`dir`?-1:1),e.forEach(e=>{e.kind===`dir`&&n(e.children)})};return n(t.children),t.children}let Q=[`var(--color-warning-light)`,`var(--color-primary)`,`var(--color-success-light)`,`var(--color-think)`];function At(e){return e.subsystemColor?e.subsystemColor:e.subsystemIndex===void 0?e.importance===`high`?`var(--color-warning-light)`:e.importance===`low`?`#94a3b8`:`var(--color-primary)`:Q[e.subsystemIndex%Q.length]}function jt(e){return{ts:`typescript`,tsx:`typescript`,js:`javascript`,mjs:`javascript`,cjs:`javascript`,jsx:`javascript`,vue:`html`,svelte:`html`,html:`html`,py:`python`,java:`java`,go:`go`,rs:`rust`,cpp:`cpp`,cc:`cpp`,cxx:`cpp`,c:`c`,h:`c`,hpp:`cpp`,cs:`csharp`,rb:`ruby`,php:`php`,swift:`swift`,kt:`kotlin`,sh:`shell`,bash:`shell`,json:`json`,yaml:`yaml`,yml:`yaml`,md:`markdown`,css:`css`,scss:`scss`,less:`less`,sql:`sql`}[e.split(`.`).pop()?.toLowerCase()||``]||`plaintext`}function Mt(){G.value&&!K.value&&(K.value=D.create(G.value,{value:``,language:`plaintext`,theme:s.value===`dark`?`vs-dark`:`vs`,readOnly:!0,fontSize:12,lineHeight:19,fontFamily:`'JetBrains Mono', 'Fira Code', Consolas, monospace`,minimap:{enabled:!1},scrollBeyondLastLine:!1,automaticLayout:!0,wordWrap:`off`,padding:{top:8,bottom:8},scrollbar:{verticalScrollbarSize:6,horizontalScrollbarSize:6}}))}x(s,e=>{K.value&&D.setTheme(e===`dark`?`vs-dark`:`vs`)});function Nt(e,t){let n={};t.forEach(e=>{n[e.source]||(n[e.source]=[]),n[e.source].push(e.target)});let r=new Map;e.forEach(e=>{let t=e.subsystem??`__default`;r.has(t)||r.set(t,[]),r.get(t).push(e)});let i=[],a=0;for(let[,e]of r){let t=new Set(e.map(e=>e.id)),r={},o=e.length?[e[0].id]:[];for(o[0]&&(r[o[0]]=0);o.length;){let e=o.shift();(n[e]||[]).filter(e=>t.has(e)).forEach(t=>{r[t]===void 0&&(r[t]=(r[e]??0)+1,o.push(t))})}let s={};e.forEach(e=>{let t=r[e.id]??0;s[t]=(s[t]||0)+1});let c={};e.forEach(e=>{let t=r[e.id]??0;c[t]=(c[t]??-1)+1;let n=c[t],o=s[t]??1,ee=a*600+n*220-(o-1)*220/2,l=t*110,u=At(e);i.push({id:e.id,type:`default`,position:{x:ee,y:l},label:e.label,class:`sm-fn-node`,data:{...e,_accentColor:u},style:{"--node-accent":u}})}),a++}return{flowNodes:i,flowEdges:t.map((e,t)=>({id:`e_${t}_${e.source}_${e.target}`,source:e.source,target:e.target,type:`smoothstep`,animated:!1,class:`sm-fn-edge`,markerEnd:{type:ue.ArrowClosed}}))}}async function Pt(){let e=wt.value,t=Tt.value;if(e.length!==0){I.value=!0;try{await c(),await new Promise(e=>requestAnimationFrame(()=>e())),Et(e.map(e=>e.id)),await new Promise(e=>requestAnimationFrame(()=>e()));let n=new Map;e.forEach(e=>{let t=e.data?.subsystem??`__default__`;n.has(t)||n.set(t,[]),n.get(t).push(e)});let r=new Map,i=0;for(let[,e]of n){let n=new xe.default.graphlib.Graph;n.setDefaultEdgeLabel(()=>({})),n.setGraph({rankdir:`TB`,nodesep:55,ranksep:75,marginx:40,marginy:40});let a=new Set(e.map(e=>e.id));e.forEach(e=>{let t=190,r=e.data?.description?68:48,i=document.querySelector(`.vue-flow__node[data-id="${e.id}"]`);i&&i.offsetWidth>0&&(t=i.offsetWidth,r=i.offsetHeight),n.setNode(e.id,{width:t,height:r})}),t.forEach(e=>{a.has(e.source)&&a.has(e.target)&&n.setEdge(e.source,e.target)}),xe.default.layout(n);let o=0;e.forEach(e=>{let t=n.node(e.id);t&&(r.set(e.id,{x:i+t.x-t.width/2,y:t.y-t.height/2}),o=Math.max(o,t.x+t.width/2))}),i+=o+120}let a=e.map(e=>({...e,position:r.get(e.id)??e.position}));q(a),await c(),Ct({padding:.18})}finally{I.value=!1}}}async function Ft(){if(!m.value.trim()){oe.warning(T(`@SRCMAP:请先输入项目路径`));return}if(!Y.value){b.value=[],E.value=null,O.value=null,A.value=``,j.value=``,q([]),J([]),g.value=`scanning`,Z(T(`@SRCMAP:开始分析项目...`),`info`);try{let e=await fetch(`/api/code-analysis/analyze`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:m.value})});if(!e.ok){let t=await e.json().catch(()=>({error:`请求失败`}));throw Error(t.error||`HTTP ${e.status}`)}let t=e.body.getReader(),n=new TextDecoder,r=``;g.value=`analyzing`;let i=``,a=[];for(;;){let{done:e,value:o}=await t.read();if(e)break;r+=n.decode(o,{stream:!0});let s=r.split(`
2
2
  `);r=s.pop()??``;for(let e of s)if(e.startsWith(`event:`))i=e.slice(6).trim(),a=[];else if(e.startsWith(`data:`))a.push(e.slice(5).trim());else if(e===``){if(i&&a.length){let e=a.join(``);try{let t=JSON.parse(e);It(i,t)}catch{}}i=``,a=[]}}}catch(e){Z(`${T(`@SRCMAP:分析失败`)}: ${e.message}`,`error`),g.value=`error`}}}function It(e,t){if(e===`log`)Z(t.message,t.type||`info`);else if(e===`files`){let e=t.files||[];N.value=kt(e),N.value.forEach(e=>{e.kind===`dir`&&P.value.add(e.path)})}else if(e===`result`){E.value={language:t.language||``,entryFile:t.entryFile||``,entryFunction:t.entryFunction||``,nodes:Array.isArray(t.nodes)?t.nodes:[],edges:Array.isArray(t.edges)?t.edges:[],techStack:Array.isArray(t.techStack)?t.techStack:[],summary:t.summary||``,allFiles:Array.isArray(t.allFiles)?t.allFiles:[],codeFiles:Array.isArray(t.codeFiles)?t.codeFiles:[],subsystems:Array.isArray(t.subsystems)?t.subsystems:void 0};let{flowNodes:e,flowEdges:n}=Nt(E.value.nodes,E.value.edges);q(e),J(n),c(()=>Pt())}else e===`done`&&(t.error?(Z(`${T(`@SRCMAP:分析失败`)}: ${t.error}`,`error`),g.value=`error`):g.value=`done`)}async function $(e){if(e&&!M.value&&j.value!==e){M.value=!0,j.value=e,A.value=``;try{let t=await(await fetch(`/api/code-analysis/file-content?path=${encodeURIComponent(m.value)}&file=${encodeURIComponent(e)}`)).json();if(t.error)throw Error(t.error);A.value=t.content||``}catch(e){A.value=`// ${T(`@SRCMAP:加载失败`)}: ${e.message}`}finally{M.value=!1}}}function Lt(e){let t=e.node.data;O.value=t.id,t.file&&$(t.file)}function Rt(e){P.value.has(e)?P.value.delete(e):P.value.add(e)}let zt=a(()=>{let e=[];function t(n,r){for(let i of n){let n=P.value.has(i.path);e.push({name:i.name,path:i.path,kind:i.kind,depth:r,expanded:n}),i.kind===`dir`&&n&&t(i.children,r+1)}}return t(N.value,0),e});return x(()=>u.currentDirectory,e=>{e&&!m.value&&(m.value=e)}),x([A,j],([e,t])=>{let n=K.value;if(!n)return;let r=jt(t||``),i=n.getModel(),a=D.createModel(e||``,r);n.setModel(a),i?.dispose(),n.setScrollPosition({scrollTop:0,scrollLeft:0})}),ie(()=>{Mt(),!m.value&&u.currentDirectory&&(m.value=u.currentDirectory)}),ee(()=>{K.value?.getModel()?.dispose(),K.value?.dispose(),W()}),(e,a)=>{let c=re;return f(),n(`div`,Se,[r(`div`,Ce,[r(`div`,we,[a[9]||=r(`svg`,{viewBox:`0 0 24 24`,width:`18`,height:`18`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,class:`sm-icon-map`},[r(`polygon`,{points:`3 6 9 3 15 6 21 3 21 18 15 21 9 18 3 21`}),r(`line`,{x1:`9`,y1:`3`,x2:`9`,y2:`18`}),r(`line`,{x1:`15`,y1:`6`,x2:`15`,y2:`21`})],-1),r(`span`,Te,t(i(T)(`@SRCMAP:源码地图`)),1)]),r(`div`,Ee,[S(r(`input`,{"onUpdate:modelValue":a[0]||=e=>m.value=e,class:`sm-path-input`,placeholder:i(T)(`@SRCMAP:输入项目目录路径`),disabled:Y.value,onKeydown:ae(Ft,[`enter`])},null,40,De),[[se,m.value]]),r(`button`,{class:`sm-btn sm-btn-primary`,disabled:Y.value,onClick:Ft},[Y.value?(f(),n(p,{key:0},[a[10]||=r(`span`,{class:`sm-spinner`},null,-1),d(` `+t(i(T)(`@SRCMAP:分析中...`)),1)],64)):(f(),n(p,{key:1},[d(t(g.value===`done`?i(T)(`@SRCMAP:重新分析`):i(T)(`@SRCMAP:开始分析`)),1)],64))],8,Oe)]),r(`div`,ke,[o(c,{content:i(T)(`@SRCMAP:文件列表`),placement:`bottom`},{default:y(()=>[r(`button`,{class:l([`sm-panel-btn`,{active:F.value.files}]),onClick:a[1]||=e=>F.value.files=!F.value.files},[...a[11]||=[r(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`},[r(`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`})],-1)]],2)]),_:1},8,[`content`]),o(c,{content:i(T)(`@SRCMAP:调用图`),placement:`bottom`},{default:y(()=>[r(`button`,{class:l([`sm-panel-btn`,{active:F.value.graph}]),onClick:a[2]||=e=>F.value.graph=!F.value.graph},[...a[12]||=[r(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`},[r(`circle`,{cx:`12`,cy:`12`,r:`3`}),r(`circle`,{cx:`3`,cy:`6`,r:`2`}),r(`circle`,{cx:`21`,cy:`6`,r:`2`}),r(`circle`,{cx:`3`,cy:`18`,r:`2`}),r(`circle`,{cx:`21`,cy:`18`,r:`2`}),r(`line`,{x1:`5`,y1:`6`,x2:`9`,y2:`11`}),r(`line`,{x1:`19`,y1:`6`,x2:`15`,y2:`11`}),r(`line`,{x1:`5`,y1:`18`,x2:`9`,y2:`13`}),r(`line`,{x1:`19`,y1:`18`,x2:`15`,y2:`13`})],-1)]],2)]),_:1},8,[`content`]),o(c,{content:i(T)(`@SRCMAP:源码面板`),placement:`bottom`},{default:y(()=>[r(`button`,{class:l([`sm-panel-btn`,{active:F.value.source}]),onClick:a[3]||=e=>F.value.source=!F.value.source},[...a[13]||=[r(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`},[r(`polyline`,{points:`16 18 22 12 16 6`}),r(`polyline`,{points:`8 6 2 12 8 18`})],-1)]],2)]),_:1},8,[`content`])])]),r(`div`,Ae,[S(r(`div`,{class:`sm-panel sm-panel-files`,style:h({width:L.value+`px`})},[r(`div`,je,[r(`button`,{class:l([`sm-tab-btn`,{active:k.value===`files`}]),onClick:a[4]||=e=>k.value=`files`},[a[14]||=r(`svg`,{viewBox:`0 0 24 24`,width:`12`,height:`12`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`},[r(`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`})],-1),d(` `+t(i(T)(`@SRCMAP:文件列表`))+` `,1),E.value?(f(),n(`span`,Me,t(E.value.allFiles.length),1)):v(``,!0)],2),r(`button`,{class:l([`sm-tab-btn`,{active:k.value===`outline`}]),onClick:a[5]||=e=>k.value=`outline`},[a[15]||=te(`<svg viewBox="0 0 24 24" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.8" data-v-8d465389><line x1="8" y1="6" x2="21" y2="6" data-v-8d465389></line><line x1="8" y1="12" x2="21" y2="12" data-v-8d465389></line><line x1="8" y1="18" x2="21" y2="18" data-v-8d465389></line><line x1="3" y1="6" x2="3.01" y2="6" data-v-8d465389></line><line x1="3" y1="12" x2="3.01" y2="12" data-v-8d465389></line><line x1="3" y1="18" x2="3.01" y2="18" data-v-8d465389></line></svg>`,1),d(` `+t(i(T)(`@SRCMAP:大纲`)),1)],2)]),S(r(`div`,Ne,[zt.value.length>0?(f(!0),n(p,{key:0},_(zt.value,e=>(f(),n(`div`,{key:e.path,class:l([`sm-tree-node`,{"sm-tree-node--dir":e.kind===`dir`,"sm-tree-node--active":e.kind===`file`&&j.value===e.path}]),style:h({paddingLeft:10+e.depth*14+`px`}),onClick:t=>e.kind===`dir`?Rt(e.path):$(e.path)},[e.kind===`dir`?(f(),n(`span`,{key:0,class:l([`sm-tree-arrow`,{expanded:e.expanded}])},[...a[16]||=[r(`svg`,{viewBox:`0 0 24 24`,width:`10`,height:`10`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[r(`polyline`,{points:`9 18 15 12 9 6`})],-1)]],2)):(f(),n(`span`,Fe)),e.kind===`dir`?(f(),n(`svg`,Ie,[r(`use`,{"xlink:href":`#${i(be)(e.name)||`icon-folder`}`},null,8,Le)])):(f(),n(`svg`,Re,[r(`use`,{"xlink:href":`#${i(be)(e.name)}`},null,8,ze)])),r(`span`,{class:`sm-tree-name`,title:e.path},t(e.name),9,Be)],14,Pe))),128)):(f(),n(`div`,Ve,t(i(T)(`@SRCMAP:暂无文件,请先开始分析`)),1))],512),[[w,k.value===`files`]]),S(r(`div`,He,[Ot.value.length>0?(f(!0),n(p,{key:0},_(Ot.value,e=>(f(),n(`div`,{key:e.displayName,class:`sm-outline-group`},[r(`div`,{class:`sm-outline-group-header`,style:h({color:e.color})},[a[17]||=r(`svg`,{viewBox:`0 0 24 24`,width:`8`,height:`8`,fill:`currentColor`},[r(`circle`,{cx:`12`,cy:`12`,r:`6`})],-1),d(` `+t(e.displayName)+` `,1),r(`span`,Ue,t(e.nodes.length),1)],4),(f(!0),n(p,null,_(e.nodes,i=>(f(),n(`div`,{key:i.id,class:l([`sm-outline-node`,{"sm-outline-node--active":O.value===i.id}]),onClick:e=>{O.value=i.id,i.file&&$(i.file)}},[r(`span`,{class:`sm-outline-dot`,style:h({background:e.color})},null,4),r(`span`,{class:`sm-outline-label`,title:i.file||i.label},t(i.label),9,Ge),i.description?(f(),n(`span`,Ke,t(i.description.length>18?i.description.slice(0,18)+`…`:i.description),1)):v(``,!0)],10,We))),128))]))),128)):(f(),n(`div`,qe,t(i(T)(`@SRCMAP:暂无分析结果`)),1))],512),[[w,k.value===`outline`]])],4),[[w,F.value.files]]),S(r(`div`,{class:`sm-resizer sm-resizer-v`,onMousedown:a[6]||=e=>U(`files`,e)},null,544),[[w,F.value.files&&F.value.graph]]),S(r(`div`,Je,[E.value?(f(),n(`div`,Ye,[r(`span`,Xe,t(E.value.language),1),E.value.subsystems&&E.value.subsystems.length>1?(f(!0),n(p,{key:0},_(E.value.subsystems,e=>(f(),n(`span`,{key:e.name,class:`sm-subsystem-tag`,style:h({borderColor:e.color,color:e.color})},`● `+t(e.displayName||e.name),5))),128)):(f(!0),n(p,{key:1},_(E.value.techStack.slice(0,4),e=>(f(),n(`span`,{key:e,class:`sm-tech-tag`},t(e),1))),128)),r(`span`,Ze,t(E.value.summary),1)])):v(``,!0),r(`div`,Qe,[r(`div`,$e,[r(`button`,{class:`sm-layout-btn`,disabled:I.value||!E.value,onClick:Pt},[a[18]||=te(`<svg viewBox="0 0 24 24" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.8" data-v-8d465389><rect x="3" y="3" width="7" height="7" rx="1" data-v-8d465389></rect><rect x="14" y="3" width="7" height="7" rx="1" data-v-8d465389></rect><rect x="3" y="14" width="7" height="7" rx="1" data-v-8d465389></rect><rect x="14" y="14" width="7" height="7" rx="1" data-v-8d465389></rect></svg>`,1),d(` `+t(I.value?i(T)(`@SRCMAP:布局中...`):i(T)(`@SRCMAP:优化布局`)),1)],8,et)]),o(i(_e),{class:`sm-vue-flow`,"default-viewport":{zoom:1},"min-zoom":.2,"max-zoom":4,"fit-view-on-init":``,onNodeClick:Lt},{"node-default":y(({data:e,label:a})=>[o(i(de),{type:`target`,position:i(he).Top},null,8,[`position`]),r(`div`,{class:`sm-fn-inner`,title:`${a}${e?.description?`
3
3
  `+e.description:``}`},[r(`div`,nt,t(a),1),e?.description?(f(),n(`div`,rt,t(e.description.length>22?e.description.slice(0,22)+`…`:e.description),1)):v(``,!0)],8,tt),o(i(de),{type:`source`,position:i(he).Bottom},null,8,[`position`])]),default:y(()=>[o(i(fe),{variant:i(ge).Dots,gap:20,size:1,"pattern-color":Dt.value},null,8,[`variant`,`pattern-color`]),o(i(me)),o(i(ve),{"node-color":`var(--color-primary)`,"mask-color":i(s)===`dark`?`rgba(0,0,0,0.55)`:`rgba(15,23,42,0.06)`},null,8,[`mask-color`])]),_:1}),!E.value&&!Y.value?(f(),n(`div`,it,[(f(),n(`svg`,at,[...a[19]||=[r(`polygon`,{points:`3 6 9 3 15 6 21 3 21 18 15 21 9 18 3 21`},null,-1),r(`line`,{x1:`9`,y1:`3`,x2:`9`,y2:`18`},null,-1),r(`line`,{x1:`15`,y1:`6`,x2:`15`,y2:`21`},null,-1)]])),r(`p`,null,t(i(T)(`@SRCMAP:输入项目路径后点击开始分析`)),1)])):v(``,!0),Y.value&&!E.value?(f(),n(`div`,ot,[a[20]||=r(`span`,{class:`sm-spinner sm-spinner-lg`},null,-1),r(`p`,null,t(i(T)(`@SRCMAP:AI 正在分析项目结构...`)),1)])):v(``,!0)]),r(`div`,{class:`sm-resizer sm-resizer-h`,onMousedown:a[7]||=e=>U(`log`,e)},null,32),r(`div`,{class:`sm-log-panel`,style:h({height:z.value+`px`})},[r(`div`,st,[a[21]||=r(`svg`,{viewBox:`0 0 24 24`,width:`12`,height:`12`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`},[r(`polyline`,{points:`4 17 10 11 4 5`}),r(`line`,{x1:`12`,y1:`19`,x2:`20`,y2:`19`})],-1),d(` `+t(i(T)(`@SRCMAP:Agent 日志`))+` `,1),Y.value?(f(),n(`span`,ct)):v(``,!0)]),r(`div`,lt,[(f(!0),n(p,null,_(b.value.slice(-50),e=>(f(),n(`div`,{key:e.id,class:l([`sm-log-entry`,`sm-log-entry--${e.type}`])},t(e.message),3))),128)),b.value.length===0?(f(),n(`div`,ut,t(i(T)(`@SRCMAP:等待开始分析`)),1)):v(``,!0)],512)],4)],512),[[w,F.value.graph]]),S(r(`div`,{class:`sm-resizer sm-resizer-v`,onMousedown:a[8]||=e=>U(`source`,e)},null,544),[[w,F.value.graph&&F.value.source]]),S(r(`div`,{class:`sm-panel sm-panel-source`,style:h({width:R.value+`px`})},[r(`div`,dt,[a[22]||=r(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`},[r(`polyline`,{points:`16 18 22 12 16 6`}),r(`polyline`,{points:`8 6 2 12 8 18`})],-1),d(` `+t(j.value||i(T)(`@SRCMAP:源码面板`))+` `,1),X.value?(f(),n(`span`,ft,t(X.value.label),1)):v(``,!0)]),X.value?(f(),n(`div`,pt,[r(`div`,mt,t(X.value.label),1),r(`div`,ht,[d(t(X.value.file),1),X.value.line?(f(),n(`span`,gt,` :`+t(X.value.line),1)):v(``,!0)]),X.value.description?(f(),n(`div`,_t,t(X.value.description),1)):v(``,!0)])):v(``,!0),r(`div`,vt,[M.value?(f(),n(`div`,yt,[...a[23]||=[r(`span`,{class:`sm-spinner`},null,-1)]])):v(``,!0),!M.value&&!A.value?(f(),n(`div`,bt,t(i(T)(`@SRCMAP:点击调用图中的节点查看源码`)),1)):v(``,!0),r(`div`,{ref_key:`monacoContainerRef`,ref:G,class:`sm-monaco-container`},null,512)])],4),[[w,F.value.source]])])])}}}),[[`__scopeId`,`data-v-8d465389`]]);export{O as default};
@@ -1,4 +1,4 @@
1
- import"./rolldown-runtime-C0FnF6B9.js";import{$r as e,An as t,C as n,Ct as r,Dn as i,Dr as a,En as o,Et as s,F as c,Fn as l,Fr as u,Ft as d,Gn as f,Gt as p,Ht as m,I as h,J as g,Jn as _,Jr as v,Jt as y,Ln as b,Lt as x,N as ee,Nn as S,On as C,Pn as w,Qn as T,Rt as E,S as D,Sn as O,St as te,U as k,Vn as A,Vt as ne,X as re,Xn as ie,Xr as ae,Y as j,Z as oe,_ as se,_n as ce,_t as le,a as M,an as ue,b as de,bn as N,ct as P,dn as F,dt as fe,er as I,i as L,kn as R,lr as z,lt as pe,mn as me,mr as B,ot as V,pt as he,r as H,rr as U,sr as W,tt as ge,ur as G,v as _e,vn as K,w as ve,wn as ye,xn as q,xr as J,y as be,yn as xe,yr as Se,yt as Ce,z as we,zt as Te}from"./element-plus-J45pKUrE.js";import{a as Ee,i as Y,l as De,n as Oe,r as ke}from"./vendor-B3NyhlYR.js";import{n as X,t as Z}from"./_plugin-vue_export-helper-Csn085FF.js";import{t as Ae}from"./SvgIcon-5AlG3IfR.js";import{c as je,l as Me,s as Ne,t as Pe}from"./configStore-DOaPZ6Mq.js";import{t as Fe}from"./CommonDialog-j_53ORvj.js";import{C as Ie,D as Le,E as Re,G as Q,H as $,I as ze,O as Be,S as Ve,T as He,b as Ue,g as We,h as Ge,w as Ke,x as qe}from"./index-C7Y9odvZ.js";import{a as Je,c as Ye,d as Xe,i as Ze,l as Qe,m as $e,n as et,o as tt,r as nt,s as rt,t as it,u as at}from"./agentConversations-DyzaxUXm.js";import{a as ot,c as st,i as ct,n as lt,o as ut,r as dt,s as ft,t as pt}from"./CopySessionButton-y5Rzmact.js";import{a as mt,c as ht,i as gt,l as _t,n as vt,o as yt,r as bt,s as xt,t as St}from"./useOrchestrator-C236G5P5.js";A(),B(),u(),F();var Ct={class:`wb-attachments__head`},wt={class:`wb-attachments__label`},Tt={class:`wb-attachments__count`},Et=[`disabled`],Dt={key:0,class:`wb-attachments__paste-hint`},Ot={key:1,class:`wb-attachments__list`},kt=[`title`,`onClick`,`onContextmenu`],At=[`src`,`alt`],jt={key:1},Mt={class:`wb-attachment__meta`},Nt=[`title`],Pt=[`onClick`,`title`],Ft=Z(b({__name:`AttachmentZone`,props:{attachments:{},isImage:{type:Function},humanSize:{type:Function},isUploading:{type:Boolean},isPasteHover:{type:Boolean},onPick:{type:Function},onRemove:{type:Function},rawBase:{}},emits:[`paste`,`drop`,`dragover`,`dragenter`,`dragleave`],setup(n,{emit:r}){let s=n;function c(e){return`${s.rawBase||`/api/workbench/attachments`}/${e.id}/raw`}let l=r,u=o(()=>s.attachments.filter(e=>s.isImage(e))),d=o(()=>u.value.map(e=>c(e))),f=J(0),p=J(!1);function m(e){if(s.isImage(e)){let t=u.value.findIndex(t=>t.id===e.id);f.value=t>=0?t:0,p.value=!0}else window.open(c(e),`_blank`,`noopener`)}function h(){p.value=!1}let g=J({visible:!1,x:0,y:0,att:null}),y=J(!1);function b(e,t){if(!s.isImage(e))return;t.preventDefault();let n=window.innerWidth-180,r=window.innerHeight-120;g.value={visible:!0,x:Math.min(t.clientX,n),y:Math.min(t.clientY,r),att:e}}function x(){g.value.visible&&(g.value.visible=!1)}async function ee(){let e=g.value.att;if(e&&!y.value){if(x(),!navigator.clipboard||typeof ClipboardItem>`u`){L({type:`warning`,message:X(`@WORKBENCH:当前浏览器不支持复制图片`)});return}y.value=!0;try{let t=await fetch(c(e),{credentials:`same-origin`});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.blob(),r=[`image/png`,`image/jpeg`,`image/webp`,`image/gif`].includes(n.type)?n.type:`image/png`,i=new ClipboardItem({[r]:n});await navigator.clipboard.write([i]),L({type:`success`,message:X(`@WORKBENCH:图片已复制到剪贴板`),duration:1800})}catch(e){L({type:`error`,message:X(`@WORKBENCH:复制失败 {error}`,{error:e?.message||``})})}finally{y.value=!1}}}return typeof window<`u`&&(window.addEventListener(`click`,x),window.addEventListener(`scroll`,x,!0),window.addEventListener(`blur`,x)),_(()=>{typeof window>`u`||(window.removeEventListener(`click`,x),window.removeEventListener(`scroll`,x,!0),window.removeEventListener(`blur`,x))}),(r,o)=>(T(),t(O,null,[i(`div`,{class:v([`wb-attachments`,{"is-paste-hover":n.isPasteHover}]),onPaste:o[1]||=e=>l(`paste`,e),onDrop:o[2]||=q(e=>l(`drop`,e),[`prevent`]),onDragover:o[3]||=q(e=>l(`dragover`,e),[`prevent`]),onDragenter:o[4]||=q(e=>l(`dragenter`,e),[`prevent`]),onDragleave:o[5]||=e=>l(`dragleave`,e)},[i(`div`,Ct,[i(`span`,wt,[w(e(a(X)(`@WORKBENCH:附件`))+` `,1),i(`span`,Tt,e(n.attachments.length),1)]),i(`button`,{class:`wb-attachments__add`,disabled:n.isUploading,onClick:o[0]||=(...e)=>n.onPick&&n.onPick(...e)},e(n.isUploading?a(X)(`@WORKBENCH:上传中…`):a(X)(`@WORKBENCH:添加附件`)),9,Et)]),n.isPasteHover?(T(),t(`div`,Dt,e(a(X)(`@WORKBENCH:粘贴图片以快速添加`)),1)):R(``,!0),n.attachments.length>0?(T(),t(`ul`,Ot,[(T(!0),t(O,null,I(n.attachments,r=>(T(),t(`li`,{key:r.id,class:`wb-attachment`},[i(`button`,{type:`button`,class:`wb-attachment__preview`,title:a(X)(`@WORKBENCH:点击预览`),onClick:e=>m(r),onContextmenu:e=>b(r,e)},[i(`div`,{class:v([`wb-attachment__icon`,{"wb-attachment__icon--img":n.isImage(r)}])},[n.isImage(r)?(T(),t(`img`,{key:0,src:c(r),alt:r.originalName,loading:`lazy`},null,8,At)):(T(),t(`span`,jt,e(r.ext.toUpperCase()),1))],2),i(`div`,Mt,[i(`div`,{class:`wb-attachment__name`,title:`${r.originalName} (${n.humanSize(r.size)})`},e(r.originalName),9,Nt)])],40,kt),i(`button`,{class:`wb-attachment__del`,onClick:q(e=>n.onRemove(r),[`stop`]),title:a(X)(`@WORKBENCH:删除`)},`×`,8,Pt)]))),128))])):R(``,!0)],34),p.value&&d.value.length>0?(T(),C(a(de),{key:0,"url-list":d.value,"initial-index":f.value,"hide-on-click-modal":!0,teleported:!0,onClose:h},null,8,[`url-list`,`initial-index`])):R(``,!0),(T(),C(ye,{to:`body`},[g.value.visible&&g.value.att&&n.isImage(g.value.att)?(T(),t(`ul`,{key:0,class:`wb-ctx-menu`,style:ae({top:g.value.y+`px`,left:g.value.x+`px`}),onContextmenu:o[6]||=q(()=>{},[`prevent`])},[i(`li`,{class:v([`wb-ctx-menu__item`,{"is-disabled":y.value}]),onClick:ee},[o[7]||=i(`span`,{class:`wb-ctx-menu__icon`,"aria-hidden":`true`},[i(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[i(`rect`,{x:`9`,y:`9`,width:`11`,height:`11`,rx:`2`}),i(`path`,{d:`M5 15V5a2 2 0 0 1 2-2h10`})])],-1),i(`span`,null,e(a(X)(`@WORKBENCH:复制图片`)),1)],2)],36)):R(``,!0)]))],64))}}),[[`__scopeId`,`data-v-e3e872cb`]]),It=Y(`claude`),Lt=Y(`opencode`),Rt=Y(`codex`),zt=We;function Bt(e){return e===`opencode`?Lt:e===`codex`?Rt:e===`codebuddy`?zt:It}function Vt(e){if(typeof e!=`string`||!e)return;let t=Date.parse(e);return Number.isFinite(t)?t:void 0}function Ht(e){let t=Vt(e?.thinkingStartedAt);return t===void 0?{}:{reasoningStartedAt:t,reasoningEndedAt:Vt(e?.thinkingEndedAt)}}A(),B(),u(),F();var Ut=[`aria-expanded`],Wt={class:`wb-log-summary__left`},Gt={key:0,class:`wb-log-summary__status wb-log-summary__status--running`},Kt={class:`wb-log-summary__label`},qt={key:0,class:`wb-log-summary__elapsed`},Jt={key:1,class:`wb-log-summary__status wb-log-summary__status--pending`},Yt={class:`wb-log-summary__label`},Xt={class:`wb-log-summary__icon`},Zt={class:`wb-log-summary__label`},Qt={key:0,class:`wb-log-summary__elapsed`},$t={key:3},en={class:`wb-log-summary__right`},tn={class:`wb-log-summary__meta`},nn=[`title`,`aria-label`],rn={class:`wb-log-details__body`},an={class:`wb-job-chat`},on={key:0,class:`wb-chat__foot`},sn=[`title`,`aria-label`],cn={key:1,class:`wb-log-fullscreen__empty`},ln=65536,un=Z(b({__name:`JobLogDetails`,props:{job:{}},emits:[`re-execute`],setup(n,{emit:r}){let s=Pe(),c=n,u=r,d=J(!1);function p(){d.value=!d.value}let m=o(()=>c.job.status===`running`||c.job.status===`pending`);W(()=>c.job.status,(e,t)=>{t!==`running`&&t!==`pending`&&(e===`running`||e===`pending`)&&(d.value=!1)});function h(){let e=c.job.output||``;if(!e)return``;let t=e.length<=ln?e:`${X(`@WORKBENCH:…(前文已截断)`)}\n${e.slice(-65536)}`;return Xe(t,c.job.id)}function g(){let e=c.job.thinking||``;return e?e.length<=ln?e:`${X(`@WORKBENCH:…(前文已截断)`)}\n${e.slice(-65536)}`:``}async function _(e){try{if(navigator?.clipboard?.writeText)return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,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 y(){let e=[];if(c.job.prompt&&e.push(`## ${X(`@WORKBENCH:用户提示词`)}\n\n${c.job.prompt}`),c.job.thinking&&e.push(`## ${X(`@WORKBENCH:Claude 思考`)}\n\n${c.job.thinking}`),c.job.output&&e.push(`## ${X(`@WORKBENCH:模型返回`)}\n\n${c.job.output}`),!e.length){L.warning(X(`@WORKBENCH:暂无内容可复制`));return}await _(e.join(`
1
+ import"./rolldown-runtime-C0FnF6B9.js";import{$r as e,An as t,C as n,Ct as r,Dn as i,Dr as a,En as o,Et as s,F as c,Fn as l,Fr as u,Ft as d,Gn as f,Gt as p,Ht as m,I as h,J as g,Jn as _,Jr as v,Jt as y,Ln as b,Lt as x,N as ee,Nn as S,On as C,Pn as w,Qn as T,Rt as E,S as D,Sn as O,St as te,U as k,Vn as A,Vt as ne,X as re,Xn as ie,Xr as ae,Y as j,Z as oe,_ as se,_n as ce,_t as le,a as M,an as ue,b as de,bn as N,ct as P,dn as F,dt as fe,er as I,i as L,kn as R,lr as z,lt as pe,mn as me,mr as B,ot as V,pt as he,r as H,rr as U,sr as W,tt as ge,ur as G,v as _e,vn as K,w as ve,wn as ye,xn as q,xr as J,y as be,yn as xe,yr as Se,yt as Ce,z as we,zt as Te}from"./element-plus-J45pKUrE.js";import{a as Ee,i as Y,l as De,n as Oe,r as ke}from"./vendor-B3NyhlYR.js";import{n as X,t as Z}from"./_plugin-vue_export-helper-Csn085FF.js";import{t as Ae}from"./SvgIcon-5AlG3IfR.js";import{c as je,l as Me,s as Ne,t as Pe}from"./configStore-DOaPZ6Mq.js";import{t as Fe}from"./CommonDialog-j_53ORvj.js";import{C as Ie,D as Le,E as Re,G as Q,H as $,I as ze,O as Be,S as Ve,T as He,b as Ue,g as We,h as Ge,w as Ke,x as qe}from"./index-DQ82h1aq.js";import{a as Je,c as Ye,d as Xe,i as Ze,l as Qe,m as $e,n as et,o as tt,r as nt,s as rt,t as it,u as at}from"./agentConversations-De3wKTsN.js";import{a as ot,c as st,i as ct,n as lt,o as ut,r as dt,s as ft,t as pt}from"./CopySessionButton-Dy5t8Mjy.js";import{a as mt,c as ht,i as gt,l as _t,n as vt,o as yt,r as bt,s as xt,t as St}from"./useOrchestrator-BjC7oHpt.js";A(),B(),u(),F();var Ct={class:`wb-attachments__head`},wt={class:`wb-attachments__label`},Tt={class:`wb-attachments__count`},Et=[`disabled`],Dt={key:0,class:`wb-attachments__paste-hint`},Ot={key:1,class:`wb-attachments__list`},kt=[`title`,`onClick`,`onContextmenu`],At=[`src`,`alt`],jt={key:1},Mt={class:`wb-attachment__meta`},Nt=[`title`],Pt=[`onClick`,`title`],Ft=Z(b({__name:`AttachmentZone`,props:{attachments:{},isImage:{type:Function},humanSize:{type:Function},isUploading:{type:Boolean},isPasteHover:{type:Boolean},onPick:{type:Function},onRemove:{type:Function},rawBase:{}},emits:[`paste`,`drop`,`dragover`,`dragenter`,`dragleave`],setup(n,{emit:r}){let s=n;function c(e){return`${s.rawBase||`/api/workbench/attachments`}/${e.id}/raw`}let l=r,u=o(()=>s.attachments.filter(e=>s.isImage(e))),d=o(()=>u.value.map(e=>c(e))),f=J(0),p=J(!1);function m(e){if(s.isImage(e)){let t=u.value.findIndex(t=>t.id===e.id);f.value=t>=0?t:0,p.value=!0}else window.open(c(e),`_blank`,`noopener`)}function h(){p.value=!1}let g=J({visible:!1,x:0,y:0,att:null}),y=J(!1);function b(e,t){if(!s.isImage(e))return;t.preventDefault();let n=window.innerWidth-180,r=window.innerHeight-120;g.value={visible:!0,x:Math.min(t.clientX,n),y:Math.min(t.clientY,r),att:e}}function x(){g.value.visible&&(g.value.visible=!1)}async function ee(){let e=g.value.att;if(e&&!y.value){if(x(),!navigator.clipboard||typeof ClipboardItem>`u`){L({type:`warning`,message:X(`@WORKBENCH:当前浏览器不支持复制图片`)});return}y.value=!0;try{let t=await fetch(c(e),{credentials:`same-origin`});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.blob(),r=[`image/png`,`image/jpeg`,`image/webp`,`image/gif`].includes(n.type)?n.type:`image/png`,i=new ClipboardItem({[r]:n});await navigator.clipboard.write([i]),L({type:`success`,message:X(`@WORKBENCH:图片已复制到剪贴板`),duration:1800})}catch(e){L({type:`error`,message:X(`@WORKBENCH:复制失败 {error}`,{error:e?.message||``})})}finally{y.value=!1}}}return typeof window<`u`&&(window.addEventListener(`click`,x),window.addEventListener(`scroll`,x,!0),window.addEventListener(`blur`,x)),_(()=>{typeof window>`u`||(window.removeEventListener(`click`,x),window.removeEventListener(`scroll`,x,!0),window.removeEventListener(`blur`,x))}),(r,o)=>(T(),t(O,null,[i(`div`,{class:v([`wb-attachments`,{"is-paste-hover":n.isPasteHover}]),onPaste:o[1]||=e=>l(`paste`,e),onDrop:o[2]||=q(e=>l(`drop`,e),[`prevent`]),onDragover:o[3]||=q(e=>l(`dragover`,e),[`prevent`]),onDragenter:o[4]||=q(e=>l(`dragenter`,e),[`prevent`]),onDragleave:o[5]||=e=>l(`dragleave`,e)},[i(`div`,Ct,[i(`span`,wt,[w(e(a(X)(`@WORKBENCH:附件`))+` `,1),i(`span`,Tt,e(n.attachments.length),1)]),i(`button`,{class:`wb-attachments__add`,disabled:n.isUploading,onClick:o[0]||=(...e)=>n.onPick&&n.onPick(...e)},e(n.isUploading?a(X)(`@WORKBENCH:上传中…`):a(X)(`@WORKBENCH:添加附件`)),9,Et)]),n.isPasteHover?(T(),t(`div`,Dt,e(a(X)(`@WORKBENCH:粘贴图片以快速添加`)),1)):R(``,!0),n.attachments.length>0?(T(),t(`ul`,Ot,[(T(!0),t(O,null,I(n.attachments,r=>(T(),t(`li`,{key:r.id,class:`wb-attachment`},[i(`button`,{type:`button`,class:`wb-attachment__preview`,title:a(X)(`@WORKBENCH:点击预览`),onClick:e=>m(r),onContextmenu:e=>b(r,e)},[i(`div`,{class:v([`wb-attachment__icon`,{"wb-attachment__icon--img":n.isImage(r)}])},[n.isImage(r)?(T(),t(`img`,{key:0,src:c(r),alt:r.originalName,loading:`lazy`},null,8,At)):(T(),t(`span`,jt,e(r.ext.toUpperCase()),1))],2),i(`div`,Mt,[i(`div`,{class:`wb-attachment__name`,title:`${r.originalName} (${n.humanSize(r.size)})`},e(r.originalName),9,Nt)])],40,kt),i(`button`,{class:`wb-attachment__del`,onClick:q(e=>n.onRemove(r),[`stop`]),title:a(X)(`@WORKBENCH:删除`)},`×`,8,Pt)]))),128))])):R(``,!0)],34),p.value&&d.value.length>0?(T(),C(a(de),{key:0,"url-list":d.value,"initial-index":f.value,"hide-on-click-modal":!0,teleported:!0,onClose:h},null,8,[`url-list`,`initial-index`])):R(``,!0),(T(),C(ye,{to:`body`},[g.value.visible&&g.value.att&&n.isImage(g.value.att)?(T(),t(`ul`,{key:0,class:`wb-ctx-menu`,style:ae({top:g.value.y+`px`,left:g.value.x+`px`}),onContextmenu:o[6]||=q(()=>{},[`prevent`])},[i(`li`,{class:v([`wb-ctx-menu__item`,{"is-disabled":y.value}]),onClick:ee},[o[7]||=i(`span`,{class:`wb-ctx-menu__icon`,"aria-hidden":`true`},[i(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[i(`rect`,{x:`9`,y:`9`,width:`11`,height:`11`,rx:`2`}),i(`path`,{d:`M5 15V5a2 2 0 0 1 2-2h10`})])],-1),i(`span`,null,e(a(X)(`@WORKBENCH:复制图片`)),1)],2)],36)):R(``,!0)]))],64))}}),[[`__scopeId`,`data-v-e3e872cb`]]),It=Y(`claude`),Lt=Y(`opencode`),Rt=Y(`codex`),zt=We;function Bt(e){return e===`opencode`?Lt:e===`codex`?Rt:e===`codebuddy`?zt:It}function Vt(e){if(typeof e!=`string`||!e)return;let t=Date.parse(e);return Number.isFinite(t)?t:void 0}function Ht(e){let t=Vt(e?.thinkingStartedAt);return t===void 0?{}:{reasoningStartedAt:t,reasoningEndedAt:Vt(e?.thinkingEndedAt)}}A(),B(),u(),F();var Ut=[`aria-expanded`],Wt={class:`wb-log-summary__left`},Gt={key:0,class:`wb-log-summary__status wb-log-summary__status--running`},Kt={class:`wb-log-summary__label`},qt={key:0,class:`wb-log-summary__elapsed`},Jt={key:1,class:`wb-log-summary__status wb-log-summary__status--pending`},Yt={class:`wb-log-summary__label`},Xt={class:`wb-log-summary__icon`},Zt={class:`wb-log-summary__label`},Qt={key:0,class:`wb-log-summary__elapsed`},$t={key:3},en={class:`wb-log-summary__right`},tn={class:`wb-log-summary__meta`},nn=[`title`,`aria-label`],rn={class:`wb-log-details__body`},an={class:`wb-job-chat`},on={key:0,class:`wb-chat__foot`},sn=[`title`,`aria-label`],cn={key:1,class:`wb-log-fullscreen__empty`},ln=65536,un=Z(b({__name:`JobLogDetails`,props:{job:{}},emits:[`re-execute`],setup(n,{emit:r}){let s=Pe(),c=n,u=r,d=J(!1);function p(){d.value=!d.value}let m=o(()=>c.job.status===`running`||c.job.status===`pending`);W(()=>c.job.status,(e,t)=>{t!==`running`&&t!==`pending`&&(e===`running`||e===`pending`)&&(d.value=!1)});function h(){let e=c.job.output||``;if(!e)return``;let t=e.length<=ln?e:`${X(`@WORKBENCH:…(前文已截断)`)}\n${e.slice(-65536)}`;return Xe(t,c.job.id)}function g(){let e=c.job.thinking||``;return e?e.length<=ln?e:`${X(`@WORKBENCH:…(前文已截断)`)}\n${e.slice(-65536)}`:``}async function _(e){try{if(navigator?.clipboard?.writeText)return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,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 y(){let e=[];if(c.job.prompt&&e.push(`## ${X(`@WORKBENCH:用户提示词`)}\n\n${c.job.prompt}`),c.job.thinking&&e.push(`## ${X(`@WORKBENCH:Claude 思考`)}\n\n${c.job.thinking}`),c.job.output&&e.push(`## ${X(`@WORKBENCH:模型返回`)}\n\n${c.job.output}`),!e.length){L.warning(X(`@WORKBENCH:暂无内容可复制`));return}await _(e.join(`
2
2
 
3
3
  ---
4
4
 
@@ -0,0 +1,10 @@
1
+ import"./rolldown-runtime-C0FnF6B9.js";import{En as e,Vn as t,i as n,mr as r,r as i,xr as a,yr as o}from"./element-plus-J45pKUrE.js";import{c as s,o as c,s as l,t as u}from"./vendor-B3NyhlYR.js";import{n as d}from"./_plugin-vue_export-helper-Csn085FF.js";import{c as f,s as p,t as m}from"./configStore-DOaPZ6Mq.js";import{_ as h,n as g,p as _,r as v,t as y,v as b}from"./index-DQ82h1aq.js";function x(e,t=200){let n=typeof e==`string`?e:``;if(!n.trim())return``;let r=n.split(`
2
+ `).map(e=>e.trim()).filter(Boolean),i=(r.length?r[r.length-1]:``).replace(/\s+/g,` `);return i.length>t?`${i.slice(0,t-1)}…`:i}function S(e){return d(e===`done`?`@AGENT:对话已完成`:`@AGENT:对话出错`)}function C(){let e={page:!1,browser:!1,sound:!1};try{let t=m();e.page=!!t.notifyPageOnTaskDone,e.browser=!!t.notifyBrowserOnTaskDone,e.sound=!!t.notifySoundOnTaskDone}catch{}return e}function w(){return C().sound?v():!1}function T(e){let t=C();if(!y(t))return!1;let r=String(e.title||``).trim()||d(`@AGENT:无标题`),i=x(e.detail),a=e.tag||`zen-gitsync-agent`,o=i?`${r}\n${i}`:r;return t.sound&&g(e.kind),b(t)&&h({title:S(e.kind),body:o,tag:a})||!t.page||e.alreadyToast||(e.kind===`done`?n.success(d(`@AGENT:对话完成:{name}`,{name:r})):n.error(d(`@AGENT:对话出错:{name}`,{name:r}))),!0}var E=`g ai`,D=`g-ai`,O=[{id:`gai`,name:E},...p.map(e=>({id:e.id,name:e.name}))],k=`zen-gitsync-agent-engine`;function A(e){return e===`gai`||f(e)}function j(e){return O.find(t=>t.id===e)?.name||`g ai`}function ee(e){return f(e)}function te(){try{let e=localStorage.getItem(k);if(A(e))return e}catch{}return`gai`}function ne(e){try{localStorage.setItem(k,e)}catch{}}var M=[`png`,`jpg`,`jpeg`,`gif`,`webp`,`bmp`,`svg`],N=/!\[([^\]]*)\]\(\s*(?:<([^<>\n]+)>|([^()\s]+))(\s+["'][^"']*["'])?\s*\)/g,P=/^\s*(`{3,}|~{3,})/,re=/\.([a-z0-9]+)$/;function F(e){let t=e.trim().toLowerCase().match(re);return!!t&&M.includes(t[1])}function I(e){let t=String(e||``).trim();if(!t)return!1;if(/^[a-zA-Z]:[\\/]/.test(t))return F(t);let n=t.match(/^([a-z][a-z0-9+.-]+):/i);return n&&n[1].toLowerCase()!==`file`||t.startsWith(`//`)||t.startsWith(`/`)?!1:F(t)}function L(e,t){return`/api/workbench/jobs/${encodeURIComponent(e)}/image?path=${encodeURIComponent(t)}`}function R(e,t){return`/api/agent/sessions/${encodeURIComponent(e)}/image?path=${encodeURIComponent(t)}`}function z(e,t){return e.includes(`![`)?e.replace(N,(e,n,r,i,a)=>{let o=(r??i??``).trim();return I(o)?`![${n}](${t(o)}${a||``})`:e}):e}function B(e,t){let n=typeof e==`string`?e:``;if(!n||!t||!n.includes(`![`))return n;let r=n.split(`
3
+ `),i=null,a=[];for(let e of r){let n=e.match(P);if(n){let t=n[1][0];i===null?i=t:i===t&&(i=null),a.push(e);continue}a.push(i===null?z(e,t):e)}return a.join(`
4
+ `)}function V(e,t){return B(e,t?e=>L(t,e):null)}function ie(e,t){return B(e,t?e=>R(t,e):null)}t(),r();var H=[`image/*`,`.pdf`,`.txt`,`.md`,`.json`,`.csv`,`.log`,`.yml`,`.yaml`,`.xml`,`.toml`,`.ini`,`.html`,`.css`,`.js`,`.ts`,`.tsx`,`.vue`,`.py`,`.java`,`.go`,`.rs`,`.sql`,`.sh`].join(`,`),U=65536,W=`local-`,ae=0;function oe(e){if(!e||!Array.isArray(e.messages))return[];let t=[],n=e.messages.length,r=new Map;for(let t of e.turnTimings||[])typeof t?.turnIndex==`number`&&Number.isFinite(t?.durationMs)&&r.set(t.turnIndex,t);let i=-1;for(let a=0;a<n;a++){let o=e.messages[a];if(o.role!==`system`){if(o.role===`user`){i+=1;let e=``,n;if(typeof o.content==`string`)e=o.content;else if(Array.isArray(o.content)){e=o.content.filter(e=>e?.type===`text`).map(e=>e.text||``).join(` `);let t=o.content.filter(e=>e?.type===`image_url`&&typeof e.image_url?.url==`string`).map((e,t)=>({id:`att-${a}-${t}`,name:`image`,size:0,type:q(e.image_url?.url||``)||`image/*`,preview:e.image_url?.url}));t.length>0&&(n=t)}(e||n)&&t.push({id:`msg-${a}`,role:`user`,content:e,attachments:n,status:`done`,createdAt:Date.now()})}else if(o.role===`assistant`){let o=`msg-${a}`,s=``,l=[],u=a;for(;u<n;){let t=e.messages[u];if(t.role!==`assistant`&&t.role!==`tool`)break;if(t.role===`assistant`){if(typeof t.content==`string`&&(s+=t.content),t.tool_calls&&t.tool_calls.length>0)for(let e of t.tool_calls)l.push({id:e.id||e.function?.name||c(),name:e.function?.name||``,arguments:e.function?.arguments||``,argsPreview:G(e.function?.name||``,e.function?.arguments||``),status:`done`,result:``})}else{let e=t.tool_call_id||t.name||``,n=l.find(t=>t.id===e);if(n){let e;e=typeof t.content==`string`?t.content:Array.isArray(t.content)&&t.content.filter(e=>e?.type===`text`).map(e=>e.text||``).join(`
5
+ `)||`(non-text result)`,e.length>U&&(e=`…(前文已截断)\n${e.slice(-65536)}`),n.result=e}}u++}a=u-1,s.length>U&&(s=`…(前文已截断)\n${s.slice(-65536)}`);let d=!!s,f=l.length>0;if(d||f){let e=r.get(i),n=e?.finishedAt?Date.parse(e.finishedAt):NaN;t.push({id:o,role:`assistant`,content:s,toolCalls:f?l:void 0,status:`done`,createdAt:Number.isFinite(n)&&e?n-e.durationMs:Date.now(),finishedAt:Number.isFinite(n)?n:void 0,meta:e?{durationMs:e.durationMs}:void 0})}}}}return t}function G(e,t){try{let n=JSON.parse(t);switch(e){case`run_command`:return String(n.command||``).slice(0,200);case`read_file`:case`write_file`:case`edit_file`:return String(n.path||``);case`list_files`:return String(n.path||`.`);case`search_text`:return String(n.pattern||``);case`update_plan`:{let e=s(t,`update_plan`);if(!e)return``;let{total:r,done:i}=u(e),a=String(n.explanation||``).replace(/\s+/g,` `).trim();return[`${i}/${r}`,a].filter(Boolean).join(` — `).slice(0,200)}default:return JSON.stringify(n).slice(0,200)}}catch{return t.slice(0,200)}}function K(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(String(r.result||``)),r.onerror=()=>n(r.error||Error(`FileReader failed`)),r.readAsDataURL(e)})}function q(e){let t=/^data:([^;,]+)/.exec(e);return t?t[1]:``}function J(){let t=m(),r=_(),s=++ae,u=a([]),f=a(!1),p=a(te());function h(e){A(e)&&(p.value=e,ne(e))}let g=o(new Map),v=a(null),y=a(!1),b=0,x=0,S=new Set,C=new Map;function E(e){return{key:e,sessionId:e.startsWith(W)?null:e,title:``,messages:[],isStreaming:!1,abortController:null,nonce:0,pendingQuestion:null,answeringQuestion:!1,contextUsage:null,queue:[],queuePaused:!1}}function D(e){let t=g.get(e);return t||=(g.set(e,E(e)),g.get(e)),t}let O=e(()=>v.value?g.get(v.value)??null:null),k=e(()=>O.value?.messages??[]),j=e(()=>{let e=k.value,t=O.value?.sessionId??null;if(!t)return e;let n=!1,r=e.map(e=>{if(!e.content||!e.content.includes(`![`))return e;let r=ie(e.content,t);return r===e.content?e:(n=!0,{...e,content:r})});return n?r:e}),ee=e(()=>O.value?.isStreaming??!1),M=e(()=>O.value?.contextUsage??null),N=e(()=>{let e=M.value;return e?{ratio:Math.min(Math.max(e.tokenRatio,e.messageRatio),1),current:e.tokens,total:e.maxTokens,unit:`K`,suffix:`上下文已使用`,detail:[`${e.messages} / ${e.maxMessages} 条消息`,typeof e.actualInputTokens==`number`&&e.actualInputTokens>0?`实测 ${e.actualInputTokens.toLocaleString()} token`:`估算 ${Math.round(e.estTokens).toLocaleString()} token`,e.droppedMessages>0?`会话共 ${e.transcriptMessages} 条,本次只带入 ${e.messages} 条(其余已摘成梗概)`:``].filter(Boolean).join(`
6
+ `)}:null}),P=e(()=>{let e=u.value.find(e=>e.sessionId===v.value);return A(e?.engine)?e.engine:p.value}),re=e(()=>u.value.some(e=>e.sessionId===v.value)),F=e(()=>O.value?.pendingQuestion??null),I=e(()=>O.value?.answeringQuestion??!1),L=e(()=>O.value?.pendingQuestion??null),R=e(()=>O.value?.queuePaused??!1),z=e(()=>(O.value?.queue??[]).map(e=>({id:e.id,text:e.text,attachmentNames:e.files.map(e=>e.file.name)})));function B(e){let t=O.value;if(!t)return;let n=t.queue.findIndex(t=>t.id===e);n<0||(t.queue.splice(n,1),t.queue.length===0&&(t.queuePaused=!1))}function V(e){if(e.isStreaming)return;let t=e.queue.shift();t&&$(t.text,t.files,{...t.options,targetKey:e.key,background:!0})}function H(){let e=O.value;e&&!e.isStreaming&&e.queue.length!==0&&(e.queuePaused=!1,V(e))}function G(e){return!!g.get(e)?.isStreaming}function q(e){let n=[...e];for(let e of g.values()){if(!e.sessionId)continue;let r=n.findIndex(t=>t.sessionId===e.sessionId);if(r!==-1){S.delete(e.sessionId),e.isStreaming&&(n[r]={...n[r],isGenerating:!0});continue}if(!e.isStreaming&&!S.has(e.sessionId))continue;let i=new Date().toISOString();n.unshift({sessionId:e.sessionId,title:e.title||d(`@AGENT:无标题`),source:`web`,cwd:t.currentDirectory||``,model:``,engine:p.value,createdAt:i,updatedAt:i,messageCount:e.messages.filter(e=>e.role===`user`).length||1,size:0,isGenerating:e.isStreaming})}return n}function J(e,t){return(t.updatedAt||``).localeCompare(e.updatedAt||``)}function Y(e){if(!e?.sessionId||u.value.some(t=>t.sessionId===e.sessionId))return;let n={sessionId:e.sessionId,title:e.title||d(`@AGENT:无标题`),source:e.source||`web`,cwd:e.cwd||``,model:e.model||``,engine:e.engine,createdAt:e.createdAt||``,updatedAt:e.updatedAt||``,messageCount:Array.isArray(e.messages)?e.messages.length:0,size:0};C.set(e.sessionId,{meta:n,cwd:t.currentDirectory||``}),u.value=[...u.value,n].sort(J)}function X(){if(C.size===0)return;let e=t.currentDirectory||``,n=[];for(let[t,r]of[...C]){if(r.cwd!==e||u.value.some(e=>e.sessionId===t)){C.delete(t);continue}n.push(r.meta)}n.length&&(u.value=[...u.value,...n].sort(J))}async function Z(){let e=++b,r=t.currentDirectory||``;if(!r){u.value=[],f.value=!1;return}f.value=!0;try{let t=`/api/agent/sessions?cwd=${encodeURIComponent(r)}`,i=await fetch(t).then(e=>e.json());if(e!==b)return;if(!i.success){n.error(i.error||d(`@AGENT:加载会话列表失败`));return}let a=Array.isArray(i.sessions)?i.sessions:[];u.value=q(a),X()}catch(t){if(e!==b)return;n.error(d(`@AGENT:加载会话列表失败`)+`: `+(t?.message||t))}finally{e===b&&(f.value=!1)}}function se(e,n){let r=new Date().toISOString(),i=u.value.find(t=>t.sessionId===e);if(i){i.isGenerating=!0,i.updatedAt=r;return}u.value=[{sessionId:e,title:n||d(`@AGENT:无标题`),source:`web`,cwd:t.currentDirectory||``,model:``,engine:p.value,createdAt:r,updatedAt:r,messageCount:1,size:0,isGenerating:!0},...u.value]}function Q(e){let t=u.value.find(t=>t.sessionId===e);t&&(t.isGenerating=!1)}async function ce(e){if(g.get(e)?.isStreaming){v.value=e;return}y.value=!0,v.value=e;try{let t=await fetch(`/api/agent/sessions/${encodeURIComponent(e)}`).then(e=>e.json());if(!t.success){n.error(t.error||d(`@AGENT:加载会话失败`));return}let r=D(e);r.sessionId=e,r.messages=oe(t.session),t.session?.title&&(r.title=t.session.title),Y(t.session)}catch(e){n.error(d(`@AGENT:加载会话失败`)+`: `+(e?.message||e))}finally{y.value=!1}}async function le(e){try{await i.confirm(d(`@AGENT:确认删除该会话`),d(`@AGENT:删除后无法恢复`),{type:`warning`})}catch{return}let t=g.get(e);if(t?.abortController)try{t.abortController.abort()}catch{}g.delete(e);try{let t=await fetch(`/api/agent/sessions/${encodeURIComponent(e)}`,{method:`DELETE`}).then(e=>e.json());if(!t.success){n.error(t.error||d(`@AGENT:删除失败`));return}u.value=u.value.filter(t=>t.sessionId!==e),C.delete(e),v.value===e&&(v.value=null),n.success(d(`@AGENT:已删除`))}catch(e){n.error(d(`@AGENT:删除失败`)+`: `+(e?.message||e))}}async function ue(e,t){try{let r=await fetch(`/api/agent/sessions/${encodeURIComponent(e)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({title:t})}).then(e=>e.json());if(!r.success){n.error(r.error||d(`@AGENT:重命名失败`));return}let i=u.value.find(t=>t.sessionId===e);i&&(i.title=t);let a=g.get(e);a&&(a.title=t),n.success(d(`@AGENT:已重命名`))}catch(e){n.error(d(`@AGENT:重命名失败`)+`: `+(e?.message||e))}}function de(){v.value=null}async function $(e,i=[],a={}){let l=i.filter(e=>e?.file?.type?.startsWith(`image/`)),u=i.filter(e=>!e?.file?.type?.startsWith(`image/`)),f=[],p=0;for(let e of u){let t=e.file.size||0;if(!(t>10485760)){if(f.length>=10||p+t>20971520)break;p+=t,f.push(e)}}let m=u.filter(e=>!f.includes(e));m.length>0&&n.warning(`${d(`@AGENT:以下附件超过大小或数量上限,已忽略:`)}${m.map(e=>e.file.name).join(`、`)}`);let h=a.targetKey||v.value||`${W}${Date.now()}-${++x}`,g=D(h);if(!e.trim()&&l.length===0&&f.length===0)return;if(g.isStreaming){g.queue.push({id:c(),text:e,files:[...l,...f],options:a});return}let _=(await Promise.allSettled(l.map(e=>K(e.file)))).map(e=>e.status===`fulfilled`?e.value:``).filter(e=>e.startsWith(`data:image/`)),y=(await Promise.allSettled(f.map(async e=>({name:e.file.name||`file`,dataUrl:await K(e.file)})))).map(e=>e.status===`fulfilled`?e.value:null).filter(e=>!!e&&typeof e.dataUrl==`string`&&e.dataUrl.startsWith(`data:`));a.background||(v.value=g.key),g.nonce+=1;let b=g.nonce;g.abortController=new AbortController;let S=g.abortController;g.pendingQuestion=null,g.answeringQuestion=!1;let C={id:c(),role:`user`,content:e,status:`done`,createdAt:Date.now()},w=[...l,...f];w.length>0&&(C.attachments=w.map(e=>({id:e.id,name:e.file.name||`image`,size:e.file.size||0,type:e.file.type||``,preview:e.preview}))),g.messages.push(C);let T=o({id:c(),role:`assistant`,content:``,status:`pending`,createdAt:Date.now()});g.messages.push(T),g.isStreaming=!0,g.lastSendOptions=a;let E=`${s}:${h}:${b}`;r.begin(E),await fe(g,b,S,T,E,{sessionId:g.sessionId||``,userMessage:e,cwd:t.currentDirectory||``,engine:a.engine??P.value,..._.length>0?{images:_}:{},...y.length>0?{attachments:y}:{},...a.openFilePath?{openFilePath:a.openFilePath}:{},...a.dirStatus?.length?{dirStatus:a.dirStatus}:{},...a.dirSummary?{dirSummary:a.dirSummary}:{},...a.allowDispatch?{allowDispatch:!0,dispatchExecutor:a.dispatchExecutor||``,dispatchUseDefaultPrompt:a.dispatchUseDefaultPrompt!==!1}:{}})}async function fe(e,t,i,a,s,u){let f=String(u.userMessage||``),p=[],m=e.sessionId,h=!1,_=null;try{let r=await fetch(`/api/agent/chat`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify(u),signal:i.signal});if(t!==e.nonce)return;if(!r.ok||!r.body){let e=await r.text().catch(()=>``);throw Error(e||`HTTP ${r.status}`)}let s=r.body.getReader(),h=new TextDecoder(`utf-8`),y=``;for(;;){let{value:r,done:i}=await s.read();if(t!==e.nonce)return;if(i)break;y+=h.decode(r,{stream:!0});let u=y.split(`
7
+ `);y=u.pop()??``;for(let t of u){let r=t.trim();if(!r.startsWith(`data:`))continue;let i=r.slice(5).trim();if(!i)continue;let s;try{s=JSON.parse(i)}catch{continue}switch(s.type){case`context`:s.usage&&(e.contextUsage={...e.contextUsage||{},...s.usage});break;case`meta`:if(s.sessionId){let t=String(s.sessionId);if(m=t,e.sessionId!==t){let n=e.key;e.sessionId=t,e.key=t,n!==t&&(g.delete(n),g.set(t,e),v.value===n&&(v.value=t))}let n=String(s.title||``).trim()||f.trim().split(`
8
+ `)[0].trim().slice(0,40)||d(`@AGENT:无标题`);e.title||=n,se(t,n)}break;case`attempt`:_={content:(a.content||``).length,reasoning:(a.reasoning||``).length,tools:a.toolCalls?.length??0};break;case`retry`:_&&(a.content=(a.content||``).slice(0,_.content),a.reasoning&&=a.reasoning.slice(0,_.reasoning),a.toolCalls&&a.toolCalls.length>_.tools&&(a.toolCalls.length=_.tools,p=[...a.toolCalls])),a.status=`pending`,a.error=``,a.finishedAt=void 0,a.reasoningStatus===`streaming`&&(a.reasoningStatus=`done`),n.info(d(`@AGENT:连接中断,正在自动重试({attempt}/{max}):{reason}`,{attempt:Number(s.attempt)||0,max:Number(s.maxRetries)||0,reason:String(s.reason||``)}));break;case`thinking`:a.reasoning||(a.reasoning=``,a.reasoningStatus=`streaming`),typeof a.reasoningStartedAt!=`number`&&(a.reasoningStartedAt=Date.now()),a.reasoningEndedAt=Date.now(),a.reasoning+=String(s.delta||``),a.status=`streaming`;break;case`content`:a.status===`pending`&&(a.status=`streaming`);{let e=String(s.delta||``);a.content+=e;let t=l(a.content);t.reasoning&&(a.reasoning||(a.reasoning=``,a.reasoningStatus=`streaming`),a.reasoning=t.reasoning,a.content=t.content)}break;case`tool_call_start`:{let e=o({id:s.toolCallId||c(),name:s.name||``,argsPreview:s.argsPreview||``,arguments:s.arguments||s.argsPreview||``,status:`running`,result:``});p.push(e),a.toolCalls||=[],a.toolCalls.push(e),a.status===`pending`&&(a.status=`streaming`);break}case`tool_output`:{let e=p.find(e=>e.id===s.toolCallId);if(e){let t=`${e.result||``}${String(s.chunk||``)}`;e.result=t.length>U?`…(前文已截断)\n${t.slice(-65536)}`:t}break}case`tool_result`:{let t=p.find(e=>e.id===s.toolCallId);t&&(t.result=String(s.result||``),t.status=`done`,t.name===`ask_user`&&(e.pendingQuestion=null));break}case`ask_user`:e.pendingQuestion={interactionId:String(s.interactionId||``),question:String(s.question||``),options:Array.isArray(s.options)?s.options.map(e=>String(e)):[],allowFreeText:s.allowFreeText!==!1,multiple:s.multiple===!0},w();break;case`done`:{let e=s.content||a.content,t=l(e);t.reasoning&&!a.reasoning&&(a.reasoning=t.reasoning),a.content=t.content,a.status=`done`,a.reasoningStatus===`streaming`&&(a.reasoningStatus=`done`);break}case`turn_done`:{let e=Number(s.durationMs);if(!Number.isFinite(e)||e<0||a.meta?.durationMs!==void 0)break;a.finishedAt=Date.now(),a.meta={...a.meta||{},durationMs:e};break}case`error`:a.status=`error`,a.error=String(s.error||d(`@AGENT:未知错误`)),a.reasoningStatus===`streaming`&&(a.reasoningStatus=`done`)}}}if(t!==e.nonce)return;a.status===`pending`&&(a.status=`done`)}catch(r){if(t!==e.nonce)return;r?.name===`AbortError`||i.signal.aborted?(h=!0,a.content=(a.content||``)+`
9
+
10
+ [`+d(`@AGENT:已停止`)+`]`,a.status=`done`,a.reasoningStatus===`streaming`&&(a.reasoningStatus=`done`),a.meta?.durationMs===void 0&&(a.finishedAt=Date.now(),a.meta={...a.meta||{},durationMs:a.finishedAt-(a.createdAt||a.finishedAt)})):(a.status=`error`,a.error=r?.message||String(r),n.error(a.error||d(`@AGENT:对话失败`)))}finally{let n=!!e.pendingQuestion,i=a.status===`error`?`error`:`done`;r.end(s),t===e.nonce&&(e.isStreaming=!1,e.pendingQuestion=null,e.answeringQuestion=!1,e.abortController=null,!h&&!n&&T({kind:i,title:e.title,detail:i===`error`&&a.error||a.content,tag:`zen-gitsync-agent-${m||e.key}`,alreadyToast:i===`error`}),e.queue.length>0&&(h||a.status===`error`?e.queuePaused=!0:n||V(e))),m&&(h&&S.add(m),Q(m)),Z().catch(()=>{})}}async function pe(e){let i=O.value;if(!i||i.isStreaming)return!1;let a=[...i.messages].reverse().find(e=>e.role===`assistant`),o=(e?.id?i.messages.find(t=>t.id===e.id):null)||a;if(!o||o.role!==`assistant`)return!1;if(a&&o.id!==a.id)return n.warning(d(`@AGENT:只能重试最后一轮`)),!1;if(!i.sessionId)return n.warning(d(`@AGENT:这条会话还没在服务端建立,请重新发送消息`)),!1;let c=u.value.find(e=>e.sessionId===i.sessionId)?.engine||P.value;if(c!==`gai`)return n.warning(d(`@AGENT:该会话由外部 CLI 引擎运行,不支持重试上一轮,请重新发送`)),!1;o.content=``,o.reasoning=void 0,o.reasoningStatus=void 0,o.reasoningStartedAt=void 0,o.reasoningEndedAt=void 0,o.error=``,o.status=`pending`,o.finishedAt=void 0,o.meta&&={...o.meta,durationMs:void 0},i.nonce+=1;let l=i.nonce;i.abortController=new AbortController;let f=i.abortController;i.pendingQuestion=null,i.answeringQuestion=!1,i.isStreaming=!0;let p=`${s}:${i.key}:${l}`;return r.begin(p),await fe(i,l,f,o,p,{sessionId:i.sessionId||``,resume:!0,cwd:t.currentDirectory||``,engine:c,...i.lastSendOptions?.openFilePath?{openFilePath:i.lastSendOptions.openFilePath}:{},...i.lastSendOptions?.dirStatus?.length?{dirStatus:i.lastSendOptions.dirStatus}:{},...i.lastSendOptions?.dirSummary?{dirSummary:i.lastSendOptions.dirSummary}:{},...i.lastSendOptions?.allowDispatch?{allowDispatch:!0,dispatchExecutor:i.lastSendOptions.dispatchExecutor||``,dispatchUseDefaultPrompt:i.lastSendOptions.dispatchUseDefaultPrompt!==!1}:{}}),!0}async function me(e){let t=O.value,r=t?.pendingQuestion,i=t?.sessionId,a=(Array.isArray(e)?e:[e]).map(e=>String(e??``).trim()).filter(Boolean);if(!t||!r||!i||!a.length||t.answeringQuestion)return!1;t.answeringQuestion=!0;try{let e=await fetch(`/api/agent/respond`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({sessionId:i,interactionId:r.interactionId,answer:r.multiple?a:a[0]})}).then(e=>e.json());if(!e.success)throw Error(e.error||d(`@AGENT:回答提交失败`));return t.pendingQuestion=null,!0}catch(e){return n.error(e?.message||d(`@AGENT:回答提交失败`)),!1}finally{t.answeringQuestion=!1}}function he(){let e=O.value;e?.abortController&&(e.abortController.abort(),e.abortController=null)}return{sessions:u,sessionsLoading:f,currentSessionId:v,messages:k,displayMessages:j,isStreaming:ee,sessionLoading:y,pendingQuestion:F,questionPanel:L,answeringQuestion:I,isSessionGenerating:G,contextUsage:M,inputContextUsage:N,queuedMessages:z,queuePaused:R,removeQueuedMessage:B,flushQueued:H,currentEngine:P,pendingEngine:p,isEngineLocked:re,pickEngine:h,loadSessions:Z,loadSession:ce,deleteSession:le,renameSession:ue,newSession:de,sendMessage:$,retryTurn:pe,answerQuestion:me,stop:he}}var Y=`data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2032%2032'%20fill='none'%3e%3crect%20x='2'%20y='6'%20width='27'%20height='23'%20rx='6'%20fill='%235364E8'/%3e%3cpath%20d='M9.419%2012.581a1.3%201.3%200%200%200-1.838%201.838L11.162%2018l-3.581%203.581a1.3%201.3%200%200%200%201.838%201.838l4.5-4.5a1.3%201.3%200%200%200%200-1.838Z'%20fill='%23FFFFFF'/%3e%3crect%20x='15.7'%20y='21.2'%20width='7.6'%20height='2.6'%20rx='1.3'%20fill='%23FFFFFF'/%3e%3cpath%20d='M25%20.4%2027.115%204.885%2031.6%207l-4.485%202.115L25%2013.6l-2.115-4.485L18.4%207l4.485-2.115Z'%20fill='%23FFFFFF'/%3e%3cpath%20d='M25%202.5%2026.22%205.78%2029.5%207l-3.28%201.22L25%2011.5l-1.22-3.28L20.5%207l3.28-1.22Z'%20fill='%2339D7B5'/%3e%3c/svg%3e`;function X(e){if(!e)return``;try{let t=new Date(e);if(Number.isNaN(t.getTime()))return e;let n=new Date,r=n.getTime()-t.getTime(),i=e=>String(e).padStart(2,`0`);if(t.toDateString()===n.toDateString())return`${i(t.getHours())}:${i(t.getMinutes())}`;if(r<6048e5){let e=Math.floor(r/864e5);return e===0?d(`@AGENT:今天`):`${e}${d(`@AGENT:天前`)}`}return`${t.getFullYear()}-${i(t.getMonth()+1)}-${i(t.getDate())}`}catch{return e}}function Z(e,t){return e.map(e=>({id:e.sessionId,title:e.title||d(`@AGENT:无标题`),meta:`${X(e.updatedAt)} · ${e.messageCount??0} ${d(`@AGENT:条`)}`,generatingText:e.isGenerating||t(e.sessionId)?d(`@AGENT:正在生成中...`):``,badge:e.source===`cli`?`CLI`:``,searchText:e.model}))}function se(){return{newConversation:d(`@AGENT:新建会话`),searchPlaceholder:d(`@AGENT:搜索会话...`),empty:d(`@AGENT:暂无会话`),emptyHint:d(`@AGENT:点击上方按钮开始对话`),noResult:d(`@AGENT:未找到匹配的会话`),loading:d(`@AGENT:加载会话中...`),rename:d(`@AGENT:重命名`),delete:d(`@AGENT:删除`),untitled:d(`@AGENT:无标题`)}}var Q=`g ai`,ce=Y,le={enable:!0},ue={enable:!0,items:[`duration`],visibility:`always`};function de(){return{title:d(`@AGENT:等待你的回答`),placeholder:d(`@AGENT:输入回答`),submit:d(`@AGENT:提交回答`),answered:d(`@AGENT:已回答`),expand:d(`@AGENT:展开完整问答`),collapse:d(`@AGENT:收起完整问答`)}}function $(){return{title:d(`@AGENT:排队中`),hint:d(`@AGENT:本轮结束后依次发送`),pausedHint:d(`@AGENT:已暂停,点「立即发送」继续`),send:d(`@AGENT:加入队列`),flush:d(`@AGENT:立即发送`),remove:d(`@AGENT:移出队列`)}}export{se as a,Z as c,V as d,O as f,ee as h,le as i,H as l,j as m,Q as n,de as o,D as p,ue as r,$ as s,ce as t,J as u};