zen-gitsync 2.17.1 → 2.17.2

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.
@@ -1 +1 @@
1
- import"./rolldown-runtime-BM3Ffeng.js";import{Bt as e,Cr as t,Dn as n,Fn as r,G as i,Gn as a,Kr as o,Mn as s,Nn as c,On as l,Tn as u,U as ee,Ut as te,Wr as d,Yn as f,Yr as p,Zn as m,_r as h,bn as g,h as ne,i as _,jn as re,on as ie,or as v,q as ae,qn as y,r as b,v as oe,wn as x}from"./element-plus-H7kW-grr.js";import{n as S,t as C}from"./_plugin-vue_export-helper-BaSe6lmR.js";import{t as w}from"./index-SjRTI8Of.js";var se={class:`monitor-view`},ce={class:`monitor-toolbar`},le={class:`toolbar-title`},ue={key:0,class:`toolbar-host`},T={class:`toolbar-actions`},E={class:`toolbar-label`},D={class:`toolbar-label`},O={key:0,class:`monitor-cards`},k={class:`metric-card`},A={class:`metric-card__header`},j={class:`metric-card__body`},M={class:`metric-sub`},N=[`title`],P={class:`metric-card`},F={class:`metric-card__header`},I={class:`metric-card__body`},L={class:`metric-sub`},R={class:`metric-card__footer`},z={class:`metric-card`},B={class:`metric-card__header`},V={class:`metric-card__body`},H={class:`metric-value`},U={class:`metric-sub`},de={class:`metric-card__footer`},fe={class:`metric-card`},pe={class:`metric-card__header`},me={class:`metric-card__body`},he={class:`metric-value`},ge={class:`metric-sub`},_e={class:`metric-card__footer`},ve={key:1,class:`monitor-disks`},ye={class:`disks-header`},be={class:`disks-title`},xe={class:`disks-summary`},Se={key:0,class:`disks-rows`},Ce={class:`disk-mount`},we={class:`disk-usage`},Te={key:1,class:`disks-empty`},W={key:2,class:`monitor-placeholder`},Ee={key:3,class:`monitor-error`},De={key:4,class:`monitor-ports`},Oe={class:`ports-header`},ke={class:`ports-title`},Ae={class:`ports-table-wrap`},je={class:`ports-table`},Me={class:`col-protocol`},Ne={class:`col-address`},Pe={class:`col-state`},Fe={class:`col-action`},Ie={class:`col-protocol`},Le={class:`col-address`},Re={class:`col-port`},ze={class:`port-num`},Be={class:`col-state`},Ve={class:`col-pid`},He=[`title`],Ue={class:`col-action`},We={key:0},Ge={colspan:`7`,class:`ports-empty`},G=C(r({__name:`MonitorView`,setup(r){let C=w(),G=h(``),K=h(`port`),q=h(`asc`);function J(e){K.value===e?q.value=q.value===`asc`?`desc`:`asc`:(K.value=e,q.value=`asc`)}let Y=x(()=>{let e=C.ports.slice(),t=G.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=q.value===`asc`?1:-1;return e.sort((e,t)=>{let r,i;return K.value===`port`?(r=e.localPort,i=t.localPort):K.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 X(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 Ke(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} ${S(`@MONITOR:天`)}`),n>0&&a.push(`${n} ${S(`@MONITOR:时`)}`),r>0&&a.push(`${r} ${S(`@MONITOR:分`)}`),a.push(`${i} ${S(`@MONITOR:秒`)}`),a.join(` `)}function Z(e){return e>=90?`var(--color-danger)`:e>=70?`var(--color-warning)`:`var(--color-success)`}let Q=h(new Set);async function qe(e){let t=e.pid,n=e.processName||S(`@MONITOR:未知进程`);try{await b.confirm(S(`@MONITOR:确认终止进程提示`).replace(`{pid}`,String(t)).replace(`{process}`,n).replace(`{port}`,String(e.localPort)),S(`@MONITOR:终止进程`),{confirmButtonText:S(`@MONITOR:终止`),cancelButtonText:S(`@MONITOR:取消`),type:`warning`})}catch{return}Q.value.add(t);try{await C.killProcess(t,!0),_.success(S(`@MONITOR:已终止进程`).replace(`{pid}`,String(t)))}catch(e){_.error(e?.message||S(`@MONITOR:终止进程失败`))}finally{Q.value.delete(t)}}function $(){C.refresh().catch(e=>{_.error(e?.message||S(`@MONITOR:刷新失败`))})}function Je(e){C.setAutoRefresh(e)}function Ye(e){C.setShowAllPorts(e)}return y(()=>{C.startAutoRefresh()}),a(()=>{C.stopAutoRefresh()}),(r,a)=>{let h=ne,_=i,y=ee,b=oe,x=ie,w=ae;return f(),l(`div`,se,[u(`div`,ce,[u(`div`,le,[a[4]||=u(`svg`,{viewBox:`0 0 24 24`,width:`18`,height:`18`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`path`,{d:`M22 12h-4l-3 9L9 3l-3 9H2`})],-1),u(`span`,null,p(t(S)(`@MONITOR:系统监控`)),1),t(C).overview?(f(),l(`span`,ue,p(t(C).overview.system.hostname)+` · `+p(t(C).overview.system.platform)+`/`+p(t(C).overview.system.arch),1)):n(``,!0)]),u(`div`,T,[c(_,{content:t(S)(`@MONITOR:显示所有连接`),placement:`bottom`},{default:v(()=>[c(h,{"model-value":t(C).showAllPorts,onChange:Ye,size:`small`},null,8,[`model-value`])]),_:1},8,[`content`]),u(`span`,E,p(t(S)(`@MONITOR:全部连接`)),1),c(_,{content:t(S)(`@MONITOR:自动刷新`),placement:`bottom`},{default:v(()=>[c(h,{"model-value":t(C).autoRefresh,onChange:Je,size:`small`},null,8,[`model-value`])]),_:1},8,[`content`]),u(`span`,D,p(t(S)(`@MONITOR:自动`)),1),c(y,{size:`small`,icon:t(e),loading:t(C).loading,onClick:$},{default:v(()=>[s(p(t(S)(`@MONITOR:刷新`)),1)]),_:1},8,[`icon`,`loading`])])]),t(C).overview?(f(),l(`div`,O,[u(`div`,k,[u(`div`,A,[a[5]||=u(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`rect`,{x:`4`,y:`4`,width:`16`,height:`16`,rx:`2`}),u(`rect`,{x:`9`,y:`9`,width:`6`,height:`6`}),u(`path`,{d:`M9 2v2M15 2v2M9 20v2M15 20v2M2 9h2M2 15h2M20 9h2M20 15h2`})],-1),u(`span`,null,p(t(S)(`@MONITOR:CPU 占用`)),1)]),u(`div`,j,[u(`div`,{class:`metric-value`,style:o({color:Z(t(C).overview.cpu.usage)})},[s(p(t(C).overview.cpu.usage.toFixed(1)),1),a[6]||=u(`span`,{class:`metric-unit`},`%`,-1)],4),u(`div`,M,p(t(C).overview.cpu.cores)+` `+p(t(S)(`@MONITOR:核心`)),1)]),c(b,{percentage:t(C).overview.cpu.usage,"stroke-width":6,"show-text":!1,color:Z(t(C).overview.cpu.usage)},null,8,[`percentage`,`color`]),u(`div`,{class:`metric-card__footer`,title:t(C).overview.cpu.model},p(t(C).overview.cpu.model),9,N)]),u(`div`,P,[u(`div`,F,[a[7]||=u(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`rect`,{x:`2`,y:`6`,width:`20`,height:`12`,rx:`2`}),u(`path`,{d:`M6 10v4M10 10v4M14 10v4M18 10v4`})],-1),u(`span`,null,p(t(S)(`@MONITOR:内存占用`)),1)]),u(`div`,I,[u(`div`,{class:`metric-value`,style:o({color:Z(t(C).overview.memory.usagePercent)})},[s(p(t(C).overview.memory.usagePercent.toFixed(1)),1),a[8]||=u(`span`,{class:`metric-unit`},`%`,-1)],4),u(`div`,L,p(X(t(C).overview.memory.used))+` / `+p(X(t(C).overview.memory.total)),1)]),c(b,{percentage:t(C).overview.memory.usagePercent,"stroke-width":6,"show-text":!1,color:Z(t(C).overview.memory.usagePercent)},null,8,[`percentage`,`color`]),u(`div`,R,p(t(S)(`@MONITOR:空闲`))+` `+p(X(t(C).overview.memory.free)),1)]),u(`div`,z,[u(`div`,B,[a[9]||=u(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`circle`,{cx:`12`,cy:`12`,r:`10`}),u(`polyline`,{points:`12 6 12 12 16 14`})],-1),u(`span`,null,p(t(S)(`@MONITOR:系统运行时间`)),1)]),u(`div`,V,[u(`div`,H,p(Ke(t(C).overview.system.uptime)),1),u(`div`,U,p(t(C).overview.system.nodeVersion),1)]),u(`div`,de,p(t(C).overview.system.hostname),1)]),u(`div`,fe,[u(`div`,pe,[a[10]||=u(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`path`,{d:`M22 12h-4l-3 9L9 3l-3 9H2`})],-1),u(`span`,null,p(t(S)(`@MONITOR:监听端口`)),1)]),u(`div`,me,[u(`div`,he,p(t(C).ports.length),1),u(`div`,ge,p(t(S)(`@MONITOR:TCP`))+` `+p(t(C).ports.filter(e=>e.protocol===`TCP`).length)+` · `+p(t(S)(`@MONITOR:UDP`))+` `+p(t(C).ports.filter(e=>e.protocol===`UDP`).length),1)]),u(`div`,_e,p(t(C).showAllPorts?t(S)(`@MONITOR:显示全部连接`):t(S)(`@MONITOR:仅监听端口`)),1)])])):n(``,!0),t(C).overview&&t(C).overview.disks?(f(),l(`div`,ve,[u(`div`,ye,[a[11]||=re(`<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-v-23dd5995><line x1="22" y1="12" x2="2" y2="12" data-v-23dd5995></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-23dd5995></path><line x1="6" y1="16" x2="6.01" y2="16" data-v-23dd5995></line><line x1="10" y1="16" x2="10.01" y2="16" data-v-23dd5995></line></svg>`,1),u(`span`,be,p(t(S)(`@MONITOR:磁盘占用`)),1),u(`span`,xe,p(X(t(C).overview.disks.used))+` / `+p(X(t(C).overview.disks.total))+` · `+p(t(C).overview.disks.usagePercent.toFixed(1))+`% `,1)]),t(C).overview.disks.drives.length>0?(f(),l(`div`,Se,[(f(!0),l(g,null,m(t(C).overview.disks.drives,e=>(f(),l(`div`,{class:`disk-row`,key:e.mount},[u(`span`,Ce,p(e.mount),1),c(b,{class:`disk-bar`,percentage:e.usagePercent,"stroke-width":6,"show-text":!1,color:Z(e.usagePercent)},null,8,[`percentage`,`color`]),u(`span`,we,p(X(e.used))+` / `+p(X(e.total)),1),u(`span`,{class:`disk-percent`,style:o({color:Z(e.usagePercent)})},p(e.usagePercent.toFixed(1))+`% `,5)]))),128))])):(f(),l(`div`,Te,p(t(S)(`@MONITOR:暂无磁盘数据`)),1))])):n(``,!0),!t(C).overview&&t(C).loading?(f(),l(`div`,W,[c(x,{class:`is-loading`},{default:v(()=>[c(t(e))]),_:1}),u(`span`,null,p(t(S)(`@MONITOR:加载中`)),1)])):n(``,!0),t(C).error&&!t(C).overview?(f(),l(`div`,Ee,[a[12]||=u(`svg`,{viewBox:`0 0 24 24`,width:`20`,height:`20`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`circle`,{cx:`12`,cy:`12`,r:`10`}),u(`line`,{x1:`12`,y1:`8`,x2:`12`,y2:`12`}),u(`line`,{x1:`12`,y1:`16`,x2:`12.01`,y2:`16`})],-1),u(`span`,null,p(t(C).error),1),c(y,{size:`small`,onClick:$},{default:v(()=>[s(p(t(S)(`@MONITOR:重试`)),1)]),_:1})])):n(``,!0),t(C).overview?(f(),l(`div`,De,[u(`div`,Oe,[u(`span`,ke,p(t(S)(`@MONITOR:端口占用列表`)),1),c(w,{modelValue:G.value,"onUpdate:modelValue":a[0]||=e=>G.value=e,placeholder:t(S)(`@MONITOR:搜索端口 / PID / 进程名`),size:`small`,clearable:``,class:`ports-search`},{prefix:v(()=>[c(x,null,{default:v(()=>[c(t(te))]),_:1})]),_:1},8,[`modelValue`,`placeholder`])]),u(`div`,Ae,[u(`table`,je,[u(`thead`,null,[u(`tr`,null,[u(`th`,Me,p(t(S)(`@MONITOR:协议`)),1),u(`th`,Ne,p(t(S)(`@MONITOR:本地地址`)),1),u(`th`,{class:`col-port sortable`,onClick:a[1]||=e=>J(`port`)},[s(p(t(S)(`@MONITOR:端口`))+` `,1),u(`span`,{class:d([`sort-arrow`,{active:K.value===`port`,desc:q.value===`desc`}])},`↕`,2)]),u(`th`,Pe,p(t(S)(`@MONITOR:状态`)),1),u(`th`,{class:`col-pid sortable`,onClick:a[2]||=e=>J(`pid`)},[a[13]||=s(` PID `),u(`span`,{class:d([`sort-arrow`,{active:K.value===`pid`,desc:q.value===`desc`}])},`↕`,2)]),u(`th`,{class:`col-process sortable`,onClick:a[3]||=e=>J(`process`)},[s(p(t(S)(`@MONITOR:进程`))+` `,1),u(`span`,{class:d([`sort-arrow`,{active:K.value===`process`,desc:q.value===`desc`}])},`↕`,2)]),u(`th`,Fe,p(t(S)(`@MONITOR:操作`)),1)])]),u(`tbody`,null,[(f(!0),l(g,null,m(Y.value,(e,n)=>(f(),l(`tr`,{key:`${e.protocol}-${e.localPort}-${e.pid}-${n}`},[u(`td`,Ie,[u(`span`,{class:d([`proto-badge`,`proto-${e.protocol.toLowerCase()}`])},p(e.protocol),3)]),u(`td`,Le,p(e.localAddress),1),u(`td`,Re,[u(`span`,ze,p(e.localPort),1)]),u(`td`,Be,[u(`span`,{class:d([`state-tag`,`state-${(e.state||`unknown`).toLowerCase()}`])},p(e.state||`-`),3)]),u(`td`,Ve,p(e.pid),1),u(`td`,{class:`col-process`,title:e.processName},p(e.processName||t(S)(`@MONITOR:未知`)),9,He),u(`td`,Ue,[c(y,{size:`small`,type:`danger`,plain:``,loading:Q.value.has(e.pid),disabled:Q.value.has(e.pid),onClick:t=>qe(e)},{default:v(()=>[s(p(t(S)(`@MONITOR:终止`)),1)]),_:2},1032,[`loading`,`disabled`,`onClick`])])]))),128)),Y.value.length===0?(f(),l(`tr`,We,[u(`td`,Ge,p(G.value?t(S)(`@MONITOR:无匹配结果`):t(S)(`@MONITOR:暂无端口占用`)),1)])):n(``,!0)])])])])):n(``,!0)])}}}),[[`__scopeId`,`data-v-23dd5995`]]);export{G as default};
1
+ import"./rolldown-runtime-BM3Ffeng.js";import{Bt as e,Cr as t,Dn as n,Fn as r,G as i,Gn as a,Kr as o,Mn as s,Nn as c,On as l,Tn as u,U as ee,Ut as te,Wr as d,Yn as f,Yr as p,Zn as m,_r as h,bn as g,h as ne,i as _,jn as re,on as ie,or as v,q as ae,qn as y,r as b,v as oe,wn as x}from"./element-plus-H7kW-grr.js";import{n as S,t as C}from"./_plugin-vue_export-helper-BaSe6lmR.js";import{t as w}from"./index-BeNCRYqM.js";var se={class:`monitor-view`},ce={class:`monitor-toolbar`},le={class:`toolbar-title`},ue={key:0,class:`toolbar-host`},T={class:`toolbar-actions`},E={class:`toolbar-label`},D={class:`toolbar-label`},O={key:0,class:`monitor-cards`},k={class:`metric-card`},A={class:`metric-card__header`},j={class:`metric-card__body`},M={class:`metric-sub`},N=[`title`],P={class:`metric-card`},F={class:`metric-card__header`},I={class:`metric-card__body`},L={class:`metric-sub`},R={class:`metric-card__footer`},z={class:`metric-card`},B={class:`metric-card__header`},V={class:`metric-card__body`},H={class:`metric-value`},U={class:`metric-sub`},de={class:`metric-card__footer`},fe={class:`metric-card`},pe={class:`metric-card__header`},me={class:`metric-card__body`},he={class:`metric-value`},ge={class:`metric-sub`},_e={class:`metric-card__footer`},ve={key:1,class:`monitor-disks`},ye={class:`disks-header`},be={class:`disks-title`},xe={class:`disks-summary`},Se={key:0,class:`disks-rows`},Ce={class:`disk-mount`},we={class:`disk-usage`},Te={key:1,class:`disks-empty`},W={key:2,class:`monitor-placeholder`},Ee={key:3,class:`monitor-error`},De={key:4,class:`monitor-ports`},Oe={class:`ports-header`},ke={class:`ports-title`},Ae={class:`ports-table-wrap`},je={class:`ports-table`},Me={class:`col-protocol`},Ne={class:`col-address`},Pe={class:`col-state`},Fe={class:`col-action`},Ie={class:`col-protocol`},Le={class:`col-address`},Re={class:`col-port`},ze={class:`port-num`},Be={class:`col-state`},Ve={class:`col-pid`},He=[`title`],Ue={class:`col-action`},We={key:0},Ge={colspan:`7`,class:`ports-empty`},G=C(r({__name:`MonitorView`,setup(r){let C=w(),G=h(``),K=h(`port`),q=h(`asc`);function J(e){K.value===e?q.value=q.value===`asc`?`desc`:`asc`:(K.value=e,q.value=`asc`)}let Y=x(()=>{let e=C.ports.slice(),t=G.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=q.value===`asc`?1:-1;return e.sort((e,t)=>{let r,i;return K.value===`port`?(r=e.localPort,i=t.localPort):K.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 X(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 Ke(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} ${S(`@MONITOR:天`)}`),n>0&&a.push(`${n} ${S(`@MONITOR:时`)}`),r>0&&a.push(`${r} ${S(`@MONITOR:分`)}`),a.push(`${i} ${S(`@MONITOR:秒`)}`),a.join(` `)}function Z(e){return e>=90?`var(--color-danger)`:e>=70?`var(--color-warning)`:`var(--color-success)`}let Q=h(new Set);async function qe(e){let t=e.pid,n=e.processName||S(`@MONITOR:未知进程`);try{await b.confirm(S(`@MONITOR:确认终止进程提示`).replace(`{pid}`,String(t)).replace(`{process}`,n).replace(`{port}`,String(e.localPort)),S(`@MONITOR:终止进程`),{confirmButtonText:S(`@MONITOR:终止`),cancelButtonText:S(`@MONITOR:取消`),type:`warning`})}catch{return}Q.value.add(t);try{await C.killProcess(t,!0),_.success(S(`@MONITOR:已终止进程`).replace(`{pid}`,String(t)))}catch(e){_.error(e?.message||S(`@MONITOR:终止进程失败`))}finally{Q.value.delete(t)}}function $(){C.refresh().catch(e=>{_.error(e?.message||S(`@MONITOR:刷新失败`))})}function Je(e){C.setAutoRefresh(e)}function Ye(e){C.setShowAllPorts(e)}return y(()=>{C.startAutoRefresh()}),a(()=>{C.stopAutoRefresh()}),(r,a)=>{let h=ne,_=i,y=ee,b=oe,x=ie,w=ae;return f(),l(`div`,se,[u(`div`,ce,[u(`div`,le,[a[4]||=u(`svg`,{viewBox:`0 0 24 24`,width:`18`,height:`18`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`path`,{d:`M22 12h-4l-3 9L9 3l-3 9H2`})],-1),u(`span`,null,p(t(S)(`@MONITOR:系统监控`)),1),t(C).overview?(f(),l(`span`,ue,p(t(C).overview.system.hostname)+` · `+p(t(C).overview.system.platform)+`/`+p(t(C).overview.system.arch),1)):n(``,!0)]),u(`div`,T,[c(_,{content:t(S)(`@MONITOR:显示所有连接`),placement:`bottom`},{default:v(()=>[c(h,{"model-value":t(C).showAllPorts,onChange:Ye,size:`small`},null,8,[`model-value`])]),_:1},8,[`content`]),u(`span`,E,p(t(S)(`@MONITOR:全部连接`)),1),c(_,{content:t(S)(`@MONITOR:自动刷新`),placement:`bottom`},{default:v(()=>[c(h,{"model-value":t(C).autoRefresh,onChange:Je,size:`small`},null,8,[`model-value`])]),_:1},8,[`content`]),u(`span`,D,p(t(S)(`@MONITOR:自动`)),1),c(y,{size:`small`,icon:t(e),loading:t(C).loading,onClick:$},{default:v(()=>[s(p(t(S)(`@MONITOR:刷新`)),1)]),_:1},8,[`icon`,`loading`])])]),t(C).overview?(f(),l(`div`,O,[u(`div`,k,[u(`div`,A,[a[5]||=u(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`rect`,{x:`4`,y:`4`,width:`16`,height:`16`,rx:`2`}),u(`rect`,{x:`9`,y:`9`,width:`6`,height:`6`}),u(`path`,{d:`M9 2v2M15 2v2M9 20v2M15 20v2M2 9h2M2 15h2M20 9h2M20 15h2`})],-1),u(`span`,null,p(t(S)(`@MONITOR:CPU 占用`)),1)]),u(`div`,j,[u(`div`,{class:`metric-value`,style:o({color:Z(t(C).overview.cpu.usage)})},[s(p(t(C).overview.cpu.usage.toFixed(1)),1),a[6]||=u(`span`,{class:`metric-unit`},`%`,-1)],4),u(`div`,M,p(t(C).overview.cpu.cores)+` `+p(t(S)(`@MONITOR:核心`)),1)]),c(b,{percentage:t(C).overview.cpu.usage,"stroke-width":6,"show-text":!1,color:Z(t(C).overview.cpu.usage)},null,8,[`percentage`,`color`]),u(`div`,{class:`metric-card__footer`,title:t(C).overview.cpu.model},p(t(C).overview.cpu.model),9,N)]),u(`div`,P,[u(`div`,F,[a[7]||=u(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`rect`,{x:`2`,y:`6`,width:`20`,height:`12`,rx:`2`}),u(`path`,{d:`M6 10v4M10 10v4M14 10v4M18 10v4`})],-1),u(`span`,null,p(t(S)(`@MONITOR:内存占用`)),1)]),u(`div`,I,[u(`div`,{class:`metric-value`,style:o({color:Z(t(C).overview.memory.usagePercent)})},[s(p(t(C).overview.memory.usagePercent.toFixed(1)),1),a[8]||=u(`span`,{class:`metric-unit`},`%`,-1)],4),u(`div`,L,p(X(t(C).overview.memory.used))+` / `+p(X(t(C).overview.memory.total)),1)]),c(b,{percentage:t(C).overview.memory.usagePercent,"stroke-width":6,"show-text":!1,color:Z(t(C).overview.memory.usagePercent)},null,8,[`percentage`,`color`]),u(`div`,R,p(t(S)(`@MONITOR:空闲`))+` `+p(X(t(C).overview.memory.free)),1)]),u(`div`,z,[u(`div`,B,[a[9]||=u(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`circle`,{cx:`12`,cy:`12`,r:`10`}),u(`polyline`,{points:`12 6 12 12 16 14`})],-1),u(`span`,null,p(t(S)(`@MONITOR:系统运行时间`)),1)]),u(`div`,V,[u(`div`,H,p(Ke(t(C).overview.system.uptime)),1),u(`div`,U,p(t(C).overview.system.nodeVersion),1)]),u(`div`,de,p(t(C).overview.system.hostname),1)]),u(`div`,fe,[u(`div`,pe,[a[10]||=u(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`path`,{d:`M22 12h-4l-3 9L9 3l-3 9H2`})],-1),u(`span`,null,p(t(S)(`@MONITOR:监听端口`)),1)]),u(`div`,me,[u(`div`,he,p(t(C).ports.length),1),u(`div`,ge,p(t(S)(`@MONITOR:TCP`))+` `+p(t(C).ports.filter(e=>e.protocol===`TCP`).length)+` · `+p(t(S)(`@MONITOR:UDP`))+` `+p(t(C).ports.filter(e=>e.protocol===`UDP`).length),1)]),u(`div`,_e,p(t(C).showAllPorts?t(S)(`@MONITOR:显示全部连接`):t(S)(`@MONITOR:仅监听端口`)),1)])])):n(``,!0),t(C).overview&&t(C).overview.disks?(f(),l(`div`,ve,[u(`div`,ye,[a[11]||=re(`<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-v-23dd5995><line x1="22" y1="12" x2="2" y2="12" data-v-23dd5995></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-23dd5995></path><line x1="6" y1="16" x2="6.01" y2="16" data-v-23dd5995></line><line x1="10" y1="16" x2="10.01" y2="16" data-v-23dd5995></line></svg>`,1),u(`span`,be,p(t(S)(`@MONITOR:磁盘占用`)),1),u(`span`,xe,p(X(t(C).overview.disks.used))+` / `+p(X(t(C).overview.disks.total))+` · `+p(t(C).overview.disks.usagePercent.toFixed(1))+`% `,1)]),t(C).overview.disks.drives.length>0?(f(),l(`div`,Se,[(f(!0),l(g,null,m(t(C).overview.disks.drives,e=>(f(),l(`div`,{class:`disk-row`,key:e.mount},[u(`span`,Ce,p(e.mount),1),c(b,{class:`disk-bar`,percentage:e.usagePercent,"stroke-width":6,"show-text":!1,color:Z(e.usagePercent)},null,8,[`percentage`,`color`]),u(`span`,we,p(X(e.used))+` / `+p(X(e.total)),1),u(`span`,{class:`disk-percent`,style:o({color:Z(e.usagePercent)})},p(e.usagePercent.toFixed(1))+`% `,5)]))),128))])):(f(),l(`div`,Te,p(t(S)(`@MONITOR:暂无磁盘数据`)),1))])):n(``,!0),!t(C).overview&&t(C).loading?(f(),l(`div`,W,[c(x,{class:`is-loading`},{default:v(()=>[c(t(e))]),_:1}),u(`span`,null,p(t(S)(`@MONITOR:加载中`)),1)])):n(``,!0),t(C).error&&!t(C).overview?(f(),l(`div`,Ee,[a[12]||=u(`svg`,{viewBox:`0 0 24 24`,width:`20`,height:`20`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[u(`circle`,{cx:`12`,cy:`12`,r:`10`}),u(`line`,{x1:`12`,y1:`8`,x2:`12`,y2:`12`}),u(`line`,{x1:`12`,y1:`16`,x2:`12.01`,y2:`16`})],-1),u(`span`,null,p(t(C).error),1),c(y,{size:`small`,onClick:$},{default:v(()=>[s(p(t(S)(`@MONITOR:重试`)),1)]),_:1})])):n(``,!0),t(C).overview?(f(),l(`div`,De,[u(`div`,Oe,[u(`span`,ke,p(t(S)(`@MONITOR:端口占用列表`)),1),c(w,{modelValue:G.value,"onUpdate:modelValue":a[0]||=e=>G.value=e,placeholder:t(S)(`@MONITOR:搜索端口 / PID / 进程名`),size:`small`,clearable:``,class:`ports-search`},{prefix:v(()=>[c(x,null,{default:v(()=>[c(t(te))]),_:1})]),_:1},8,[`modelValue`,`placeholder`])]),u(`div`,Ae,[u(`table`,je,[u(`thead`,null,[u(`tr`,null,[u(`th`,Me,p(t(S)(`@MONITOR:协议`)),1),u(`th`,Ne,p(t(S)(`@MONITOR:本地地址`)),1),u(`th`,{class:`col-port sortable`,onClick:a[1]||=e=>J(`port`)},[s(p(t(S)(`@MONITOR:端口`))+` `,1),u(`span`,{class:d([`sort-arrow`,{active:K.value===`port`,desc:q.value===`desc`}])},`↕`,2)]),u(`th`,Pe,p(t(S)(`@MONITOR:状态`)),1),u(`th`,{class:`col-pid sortable`,onClick:a[2]||=e=>J(`pid`)},[a[13]||=s(` PID `),u(`span`,{class:d([`sort-arrow`,{active:K.value===`pid`,desc:q.value===`desc`}])},`↕`,2)]),u(`th`,{class:`col-process sortable`,onClick:a[3]||=e=>J(`process`)},[s(p(t(S)(`@MONITOR:进程`))+` `,1),u(`span`,{class:d([`sort-arrow`,{active:K.value===`process`,desc:q.value===`desc`}])},`↕`,2)]),u(`th`,Fe,p(t(S)(`@MONITOR:操作`)),1)])]),u(`tbody`,null,[(f(!0),l(g,null,m(Y.value,(e,n)=>(f(),l(`tr`,{key:`${e.protocol}-${e.localPort}-${e.pid}-${n}`},[u(`td`,Ie,[u(`span`,{class:d([`proto-badge`,`proto-${e.protocol.toLowerCase()}`])},p(e.protocol),3)]),u(`td`,Le,p(e.localAddress),1),u(`td`,Re,[u(`span`,ze,p(e.localPort),1)]),u(`td`,Be,[u(`span`,{class:d([`state-tag`,`state-${(e.state||`unknown`).toLowerCase()}`])},p(e.state||`-`),3)]),u(`td`,Ve,p(e.pid),1),u(`td`,{class:`col-process`,title:e.processName},p(e.processName||t(S)(`@MONITOR:未知`)),9,He),u(`td`,Ue,[c(y,{size:`small`,type:`danger`,plain:``,loading:Q.value.has(e.pid),disabled:Q.value.has(e.pid),onClick:t=>qe(e)},{default:v(()=>[s(p(t(S)(`@MONITOR:终止`)),1)]),_:2},1032,[`loading`,`disabled`,`onClick`])])]))),128)),Y.value.length===0?(f(),l(`tr`,We,[u(`td`,Ge,p(G.value?t(S)(`@MONITOR:无匹配结果`):t(S)(`@MONITOR:暂无端口占用`)),1)])):n(``,!0)])])])])):n(``,!0)])}}}),[[`__scopeId`,`data-v-23dd5995`]]);export{G as default};
@@ -1 +1 @@
1
- import"./rolldown-runtime-BM3Ffeng.js";import{B as e,Cr as t,Dn as n,En as r,Fn as i,G as a,Ht as o,Lt as s,Mn as c,Nn as l,On as u,S as ee,Tn as d,U as te,Wr as ne,Yn as f,Yr as p,Zn as m,_r as h,bn as g,en as re,h as ie,i as _,ir as v,lt as ae,on as oe,or as y,r as b,wn as x,x as se,z as ce}from"./element-plus-H7kW-grr.js";import{ma as S}from"./vendor-Dwln8rZH.js";import{t as C}from"./_plugin-vue_export-helper-BaSe6lmR.js";import{t as w}from"./SvgIcon-BpKq_phu.js";import{t as T}from"./configStore-CyAQ0a-U.js";import{t as le}from"./CommonDialog-OCekbVQM.js";import{E}from"./index-SjRTI8Of.js";var ue={class:`project-startup-dialog`},de={class:`after-quick-push`},fe={class:`after-quick-push__header`},pe={class:`after-quick-push__title`},me={class:`after-quick-push__switch`},he={class:`after-quick-push__label`},ge={class:`after-quick-push__row`},_e={class:`after-quick-push__hint`},ve={class:`startup-toolbar`},ye={class:`startup-toolbar__left`},be={class:`startup-toolbar__title`},xe={class:`startup-toolbar__meta`},D={key:0,class:`startup-toolbar__warn`},O={class:`startup-toolbar__right`},k={class:`startup-auto-run`},A={class:`startup-auto-run__label`},j={key:0,class:`startup-empty`},M={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`},N={class:`startup-add__type`},je={class:`startup-add__row`},Me={class:`startup-option`},Ne={class:`startup-option__name`},Pe={class:`startup-option__cmd`},Fe={class:`startup-option`},Ie={class:`startup-option__name`},Le={class:`startup-option__cmd`},P=C(i({__name:`ProjectStartupDialog`,props:{visible:{type:Boolean}},emits:[`update:visible`,`execute-command`,`execute-workflow`],setup(i,{emit:C}){let{t:w}=S(),E=i,P=C,F=T(),I=x({get:()=>E.visible,set:e=>P(`update:visible`,e)}),L=x({get:()=>F.startupAutoRun,set:async e=>{Q.value=!0;try{await F.saveStartupItems(R.value,e)}finally{Q.value=!1}}}),R=x({get:()=>F.startupItems,set:e=>{F.saveStartupItems(e,L.value)}}),z=x(()=>F.customCommands||[]),B=x(()=>{let e=new Map;for(let t of z.value)t?.id&&e.set(String(t.id),t);return e}),V=x(()=>F.orchestrations||[]),H=x(()=>{let e=new Map;for(let t of V.value)t?.id&&e.set(String(t.id),t);return e}),U=x({get:()=>F.afterQuickPushAction,set:e=>{F.saveAfterQuickPushAction(e)}}),W=x({get:()=>!!U.value?.enabled,set:async e=>{q.value=!0;try{await F.saveAfterQuickPushAction({enabled:e,type:G.value,refId:K.value})}finally{q.value=!1}}}),G=x({get:()=>U.value?.type===`workflow`?`workflow`:`command`,set:async e=>{q.value=!0;try{K.value=``,await F.saveAfterQuickPushAction({enabled:W.value,type:e,refId:``})}finally{q.value=!1}}}),K=h(``),q=h(!1);v(()=>F.afterQuickPushAction,e=>{K.value=String(e?.refId||``)},{immediate:!0});async function Re(e){q.value=!0;try{await F.saveAfterQuickPushAction({enabled:W.value,type:G.value,refId:e})}finally{q.value=!1}}let J=x(()=>R.value.map(e=>({...e,cmd:e.type===`command`?B.value.get(e.refId):null,wf:e.type===`workflow`?H.value.get(e.refId):null})).filter(e=>e.type===`command`?!!e.cmd:!!e.wf)),Y=x(()=>R.value.filter(e=>e.type===`workflow`?!H.value.get(e.refId):!B.value.get(e.refId)).length),X=h(`command`),Z=h(``),Q=h(!1),$=h({});async function ze(e,t){$.value={...$.value,[e]:!0};try{let n=R.value.map(n=>n.id===e?{...n,enabled:t}:n);await F.saveStartupItems(n,L.value)}finally{let{[e]:t,...n}=$.value;$.value=n}}function Be(){if(!Z.value){X.value===`workflow`?_.warning(w(`@PSTART:请选择一个工作流`)):_.warning(w(`@PSTART:请选择一个命令`));return}if(R.value.some(e=>e.type===X.value&&e.refId===Z.value)){_.info(w(`@PSTART:该启动项已存在`));return}let e={id:`startup_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,type:X.value,refId:Z.value,createdAt:Date.now(),enabled:!0},t=[...R.value,e];F.saveStartupItems(t,L.value),Z.value=``,_.success(w(`@PSTART:已添加启动项`))}async function Ve(e){try{await b.confirm(w(`@PSTART:删除确认`),w(`@PSTART:删除启动项`),{confirmButtonText:w(`@PSTART:确定`),cancelButtonText:w(`@PSTART:取消`),type:`warning`});let t=R.value.filter(t=>t.id!==e.id);F.saveStartupItems(t,L.value),_.success(w(`@PSTART:已删除启动项`))}catch{}}function He(){let e=R.value.length,t=R.value.filter(e=>e.type===`workflow`?!!H.value.get(e.refId):!!B.value.get(e.refId)),n=t.length;n===e?_.info(w(`@PSTART:没有需要清理的启动项`)):(F.saveStartupItems(t,L.value),_.success(w(`@PSTART:已清理N个失效启动项`,{count:e-n})))}function Ue(e){if(e.type===`command`){let t=e.cmd;if(!t){_.warning(w(`@PSTART:命令不存在`));return}P(`execute-command`,t),_.success(w(`@PSTART:已触发命令执行`))}else if(e.type===`workflow`){let t=e.wf;if(!t){_.warning(w(`@PSTART:工作流不存在`));return}P(`execute-workflow`,t),_.success(w(`@PSTART:已触发工作流执行`))}}return(i,h)=>{let _=ie,v=ce,b=e,x=se,S=ee,C=oe,T=te,E=a;return f(),r(le,{modelValue:I.value,"onUpdate:modelValue":h[8]||=e=>I.value=e,title:t(w)(`@PSTART:项目启动项`),size:`medium`,type:`flex`,"height-mode":`max`,"height-offset":`140px`},{default:y(()=>[d(`div`,ue,[d(`div`,de,[d(`div`,fe,[d(`div`,pe,p(t(w)(`@PSTART:一键推送成功后执行`)),1),d(`div`,me,[d(`span`,he,p(t(w)(`@PSTART:启用`)),1),l(_,{modelValue:W.value,"onUpdate:modelValue":h[0]||=e=>W.value=e,size:`small`,loading:q.value},null,8,[`modelValue`,`loading`])])]),d(`div`,ge,[l(b,{modelValue:G.value,"onUpdate:modelValue":h[1]||=e=>G.value=e,size:`small`,disabled:q.value},{default:y(()=>[l(v,{label:`command`},{default:y(()=>[c(p(t(w)(`@PSTART:命令`)),1)]),_:1}),l(v,{label:`workflow`},{default:y(()=>[c(p(t(w)(`@PSTART:工作流`)),1)]),_:1})]),_:1},8,[`modelValue`,`disabled`]),l(S,{modelValue:K.value,"onUpdate:modelValue":h[2]||=e=>K.value=e,class:`after-quick-push__select`,placeholder:G.value===`workflow`?t(w)(`@PSTART:选择一个工作流`):t(w)(`@PSTART:选择一个自定义命令`),filterable:``,clearable:``,disabled:q.value,onChange:h[3]||=e=>Re(String(e||``))},{default:y(()=>[G.value===`workflow`?(f(!0),u(g,{key:0},m(V.value,e=>(f(),r(x,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128)):(f(!0),u(g,{key:1},m(z.value,e=>(f(),r(x,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`disabled`])]),d(`div`,_e,p(t(w)(`@PSTART:仅在一键推送成功后触发,不影响主流程`)),1)]),d(`div`,ve,[d(`div`,ye,[d(`div`,be,p(t(w)(`@PSTART:启动项列表`)),1),d(`div`,xe,`(`+p(J.value.length)+`)`,1),Y.value>0?(f(),u(`div`,D,p(t(w)(`@PSTART:有N项已失效`,{count:Y.value})),1)):n(``,!0)]),d(`div`,O,[d(`div`,k,[d(`span`,A,p(t(w)(`@PSTART:刷新页面自动执行`)),1),l(_,{modelValue:L.value,"onUpdate:modelValue":h[4]||=e=>L.value=e,size:`small`,loading:Q.value},null,8,[`modelValue`,`loading`])]),l(E,{content:t(w)(`@PSTART:清理失效启动项`),placement:`bottom`},{default:y(()=>[l(T,{size:`small`,onClick:He,disabled:Y.value===0},{default:y(()=>[l(C,null,{default:y(()=>[l(t(o))]),_:1}),c(` `+p(t(w)(`@PSTART:清理`)),1)]),_:1},8,[`disabled`])]),_:1},8,[`content`])])]),J.value.length===0?(f(),u(`div`,j,p(t(w)(`@PSTART:暂无启动项`)),1)):(f(),u(`div`,M,[(f(!0),u(g,null,m(J.value,e=>(f(),u(`div`,{key:e.id,class:`startup-item`},[d(`div`,Se,[d(`div`,{class:`startup-item__name`,title:e.type===`workflow`?e.wf?.name:e.cmd?.name},[d(`span`,{class:ne([`startup-item__type`,e.type===`workflow`?`is-workflow`:`is-command`])},p(e.type===`workflow`?t(w)(`@PSTART:工作流`):t(w)(`@PSTART:命令`)),3),c(` `+p(e.type===`workflow`?e.wf?.name:e.cmd?.name),1)],8,Ce),e.type===`command`?(f(),u(`div`,{key:0,class:`startup-item__desc`,title:e.cmd?.command},p(e.cmd?.command),9,we)):(f(),u(`div`,{key:1,class:`startup-item__desc`,title:e.wf?.description||e.wf?.name},p(e.wf?.description||t(w)(`@PSTART:工作流`)),9,Te)),e.type===`command`?(f(),u(`div`,{key:2,class:`startup-item__dir`,title:e.cmd?.directory},p(t(w)(`@PSTART:目录`))+`:`+p(e.cmd?.directory||`-`),9,Ee)):(f(),u(`div`,{key:3,class:`startup-item__dir`,title:String(e.wf?.flowData?.nodes?.length||0)},p(t(w)(`@PSTART:步骤`))+`:`+p(e.wf?.flowData?.nodes?.length||0),9,De))]),d(`div`,Oe,[l(E,{content:t(w)(`@PSTART:刷新页面自动执行`),placement:`top`},{default:y(()=>[l(_,{"model-value":e.enabled!==!1,size:`small`,loading:!!$.value[e.id],"onUpdate:modelValue":t=>ze(e.id,!!t)},null,8,[`model-value`,`loading`,`onUpdate:modelValue`])]),_:2},1032,[`content`]),l(E,{content:t(w)(`@PSTART:执行`),placement:`top`},{default:y(()=>[l(T,{text:``,type:`primary`,size:`small`,onClick:t=>Ue(e)},{default:y(()=>[l(C,null,{default:y(()=>[l(t(re))]),_:1})]),_:2},1032,[`onClick`])]),_:2},1032,[`content`]),l(E,{content:t(w)(`@PSTART:删除`),placement:`top`},{default:y(()=>[l(T,{text:``,type:`danger`,size:`small`,onClick:t=>Ve(e)},{default:y(()=>[l(C,null,{default:y(()=>[l(t(ae))]),_:1})]),_:2},1032,[`onClick`])]),_:2},1032,[`content`])])]))),128))])),d(`div`,ke,[d(`div`,Ae,p(t(w)(`@PSTART:添加启动项`)),1),d(`div`,N,[l(b,{modelValue:X.value,"onUpdate:modelValue":h[5]||=e=>X.value=e,size:`small`,onChange:h[6]||=e=>Z.value=``},{default:y(()=>[l(v,{label:`command`},{default:y(()=>[c(p(t(w)(`@PSTART:命令`)),1)]),_:1}),l(v,{label:`workflow`},{default:y(()=>[c(p(t(w)(`@PSTART:工作流`)),1)]),_:1})]),_:1},8,[`modelValue`])]),d(`div`,je,[l(S,{modelValue:Z.value,"onUpdate:modelValue":h[7]||=e=>Z.value=e,class:`startup-add__select`,placeholder:X.value===`workflow`?t(w)(`@PSTART:选择一个工作流`):t(w)(`@PSTART:选择一个自定义命令`),filterable:``,clearable:``},{default:y(()=>[X.value===`workflow`?(f(!0),u(g,{key:0},m(V.value,e=>(f(),r(x,{key:e.id,label:e.name,value:e.id},{default:y(()=>[d(`div`,Me,[d(`div`,Ne,p(e.name),1),d(`div`,Pe,p(e.description||`步骤: ${e.flowData?.nodes?.length||0}`),1)])]),_:2},1032,[`label`,`value`]))),128)):(f(!0),u(g,{key:1},m(z.value,e=>(f(),r(x,{key:e.id,label:e.name,value:e.id},{default:y(()=>[d(`div`,Fe,[d(`div`,Ie,p(e.name),1),d(`div`,Le,p(e.command),1)])]),_:2},1032,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`]),l(T,{type:`primary`,onClick:Be},{default:y(()=>[l(C,null,{default:y(()=>[l(t(s))]),_:1}),c(` `+p(t(w)(`@PSTART:添加`)),1)]),_:1})])])])]),_:1},8,[`modelValue`,`title`])}}}),[[`__scopeId`,`data-v-12193bc4`]]),F=C(i({__name:`ProjectStartupButton`,emits:[`execute-command`,`execute-workflow`],setup(e,{emit:n}){let{t:r}=S(),i=n,a=h(!1);function o(){a.value=!0}function s(e){i(`execute-command`,e)}function c(e){i(`execute-workflow`,e)}return(e,n)=>(f(),u(`div`,null,[l(E,{tooltip:t(r)(`@PSTART:项目启动项`),"hover-color":`#409EFF`,onClick:o,"custom-class":`project-startup-btn`},{default:y(()=>[l(w,{"icon-class":`start-run-command`,"class-name":`icon-btn`})]),_:1},8,[`tooltip`]),l(P,{visible:a.value,"onUpdate:visible":n[0]||=e=>a.value=e,onExecuteCommand:s,onExecuteWorkflow:c},null,8,[`visible`])]))}}),[[`__scopeId`,`data-v-f09d73dd`]]);export{F as default};
1
+ import"./rolldown-runtime-BM3Ffeng.js";import{B as e,Cr as t,Dn as n,En as r,Fn as i,G as a,Ht as o,Lt as s,Mn as c,Nn as l,On as u,S as ee,Tn as d,U as te,Wr as ne,Yn as f,Yr as p,Zn as m,_r as h,bn as g,en as re,h as ie,i as _,ir as v,lt as ae,on as oe,or as y,r as b,wn as x,x as se,z as ce}from"./element-plus-H7kW-grr.js";import{ma as S}from"./vendor-Dwln8rZH.js";import{t as C}from"./_plugin-vue_export-helper-BaSe6lmR.js";import{t as w}from"./SvgIcon-BpKq_phu.js";import{t as T}from"./configStore-CyAQ0a-U.js";import{t as le}from"./CommonDialog-OCekbVQM.js";import{E}from"./index-BeNCRYqM.js";var ue={class:`project-startup-dialog`},de={class:`after-quick-push`},fe={class:`after-quick-push__header`},pe={class:`after-quick-push__title`},me={class:`after-quick-push__switch`},he={class:`after-quick-push__label`},ge={class:`after-quick-push__row`},_e={class:`after-quick-push__hint`},ve={class:`startup-toolbar`},ye={class:`startup-toolbar__left`},be={class:`startup-toolbar__title`},xe={class:`startup-toolbar__meta`},D={key:0,class:`startup-toolbar__warn`},O={class:`startup-toolbar__right`},k={class:`startup-auto-run`},A={class:`startup-auto-run__label`},j={key:0,class:`startup-empty`},M={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`},N={class:`startup-add__type`},je={class:`startup-add__row`},Me={class:`startup-option`},Ne={class:`startup-option__name`},Pe={class:`startup-option__cmd`},Fe={class:`startup-option`},Ie={class:`startup-option__name`},Le={class:`startup-option__cmd`},P=C(i({__name:`ProjectStartupDialog`,props:{visible:{type:Boolean}},emits:[`update:visible`,`execute-command`,`execute-workflow`],setup(i,{emit:C}){let{t:w}=S(),E=i,P=C,F=T(),I=x({get:()=>E.visible,set:e=>P(`update:visible`,e)}),L=x({get:()=>F.startupAutoRun,set:async e=>{Q.value=!0;try{await F.saveStartupItems(R.value,e)}finally{Q.value=!1}}}),R=x({get:()=>F.startupItems,set:e=>{F.saveStartupItems(e,L.value)}}),z=x(()=>F.customCommands||[]),B=x(()=>{let e=new Map;for(let t of z.value)t?.id&&e.set(String(t.id),t);return e}),V=x(()=>F.orchestrations||[]),H=x(()=>{let e=new Map;for(let t of V.value)t?.id&&e.set(String(t.id),t);return e}),U=x({get:()=>F.afterQuickPushAction,set:e=>{F.saveAfterQuickPushAction(e)}}),W=x({get:()=>!!U.value?.enabled,set:async e=>{q.value=!0;try{await F.saveAfterQuickPushAction({enabled:e,type:G.value,refId:K.value})}finally{q.value=!1}}}),G=x({get:()=>U.value?.type===`workflow`?`workflow`:`command`,set:async e=>{q.value=!0;try{K.value=``,await F.saveAfterQuickPushAction({enabled:W.value,type:e,refId:``})}finally{q.value=!1}}}),K=h(``),q=h(!1);v(()=>F.afterQuickPushAction,e=>{K.value=String(e?.refId||``)},{immediate:!0});async function Re(e){q.value=!0;try{await F.saveAfterQuickPushAction({enabled:W.value,type:G.value,refId:e})}finally{q.value=!1}}let J=x(()=>R.value.map(e=>({...e,cmd:e.type===`command`?B.value.get(e.refId):null,wf:e.type===`workflow`?H.value.get(e.refId):null})).filter(e=>e.type===`command`?!!e.cmd:!!e.wf)),Y=x(()=>R.value.filter(e=>e.type===`workflow`?!H.value.get(e.refId):!B.value.get(e.refId)).length),X=h(`command`),Z=h(``),Q=h(!1),$=h({});async function ze(e,t){$.value={...$.value,[e]:!0};try{let n=R.value.map(n=>n.id===e?{...n,enabled:t}:n);await F.saveStartupItems(n,L.value)}finally{let{[e]:t,...n}=$.value;$.value=n}}function Be(){if(!Z.value){X.value===`workflow`?_.warning(w(`@PSTART:请选择一个工作流`)):_.warning(w(`@PSTART:请选择一个命令`));return}if(R.value.some(e=>e.type===X.value&&e.refId===Z.value)){_.info(w(`@PSTART:该启动项已存在`));return}let e={id:`startup_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,type:X.value,refId:Z.value,createdAt:Date.now(),enabled:!0},t=[...R.value,e];F.saveStartupItems(t,L.value),Z.value=``,_.success(w(`@PSTART:已添加启动项`))}async function Ve(e){try{await b.confirm(w(`@PSTART:删除确认`),w(`@PSTART:删除启动项`),{confirmButtonText:w(`@PSTART:确定`),cancelButtonText:w(`@PSTART:取消`),type:`warning`});let t=R.value.filter(t=>t.id!==e.id);F.saveStartupItems(t,L.value),_.success(w(`@PSTART:已删除启动项`))}catch{}}function He(){let e=R.value.length,t=R.value.filter(e=>e.type===`workflow`?!!H.value.get(e.refId):!!B.value.get(e.refId)),n=t.length;n===e?_.info(w(`@PSTART:没有需要清理的启动项`)):(F.saveStartupItems(t,L.value),_.success(w(`@PSTART:已清理N个失效启动项`,{count:e-n})))}function Ue(e){if(e.type===`command`){let t=e.cmd;if(!t){_.warning(w(`@PSTART:命令不存在`));return}P(`execute-command`,t),_.success(w(`@PSTART:已触发命令执行`))}else if(e.type===`workflow`){let t=e.wf;if(!t){_.warning(w(`@PSTART:工作流不存在`));return}P(`execute-workflow`,t),_.success(w(`@PSTART:已触发工作流执行`))}}return(i,h)=>{let _=ie,v=ce,b=e,x=se,S=ee,C=oe,T=te,E=a;return f(),r(le,{modelValue:I.value,"onUpdate:modelValue":h[8]||=e=>I.value=e,title:t(w)(`@PSTART:项目启动项`),size:`medium`,type:`flex`,"height-mode":`max`,"height-offset":`140px`},{default:y(()=>[d(`div`,ue,[d(`div`,de,[d(`div`,fe,[d(`div`,pe,p(t(w)(`@PSTART:一键推送成功后执行`)),1),d(`div`,me,[d(`span`,he,p(t(w)(`@PSTART:启用`)),1),l(_,{modelValue:W.value,"onUpdate:modelValue":h[0]||=e=>W.value=e,size:`small`,loading:q.value},null,8,[`modelValue`,`loading`])])]),d(`div`,ge,[l(b,{modelValue:G.value,"onUpdate:modelValue":h[1]||=e=>G.value=e,size:`small`,disabled:q.value},{default:y(()=>[l(v,{label:`command`},{default:y(()=>[c(p(t(w)(`@PSTART:命令`)),1)]),_:1}),l(v,{label:`workflow`},{default:y(()=>[c(p(t(w)(`@PSTART:工作流`)),1)]),_:1})]),_:1},8,[`modelValue`,`disabled`]),l(S,{modelValue:K.value,"onUpdate:modelValue":h[2]||=e=>K.value=e,class:`after-quick-push__select`,placeholder:G.value===`workflow`?t(w)(`@PSTART:选择一个工作流`):t(w)(`@PSTART:选择一个自定义命令`),filterable:``,clearable:``,disabled:q.value,onChange:h[3]||=e=>Re(String(e||``))},{default:y(()=>[G.value===`workflow`?(f(!0),u(g,{key:0},m(V.value,e=>(f(),r(x,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128)):(f(!0),u(g,{key:1},m(z.value,e=>(f(),r(x,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`,`disabled`])]),d(`div`,_e,p(t(w)(`@PSTART:仅在一键推送成功后触发,不影响主流程`)),1)]),d(`div`,ve,[d(`div`,ye,[d(`div`,be,p(t(w)(`@PSTART:启动项列表`)),1),d(`div`,xe,`(`+p(J.value.length)+`)`,1),Y.value>0?(f(),u(`div`,D,p(t(w)(`@PSTART:有N项已失效`,{count:Y.value})),1)):n(``,!0)]),d(`div`,O,[d(`div`,k,[d(`span`,A,p(t(w)(`@PSTART:刷新页面自动执行`)),1),l(_,{modelValue:L.value,"onUpdate:modelValue":h[4]||=e=>L.value=e,size:`small`,loading:Q.value},null,8,[`modelValue`,`loading`])]),l(E,{content:t(w)(`@PSTART:清理失效启动项`),placement:`bottom`},{default:y(()=>[l(T,{size:`small`,onClick:He,disabled:Y.value===0},{default:y(()=>[l(C,null,{default:y(()=>[l(t(o))]),_:1}),c(` `+p(t(w)(`@PSTART:清理`)),1)]),_:1},8,[`disabled`])]),_:1},8,[`content`])])]),J.value.length===0?(f(),u(`div`,j,p(t(w)(`@PSTART:暂无启动项`)),1)):(f(),u(`div`,M,[(f(!0),u(g,null,m(J.value,e=>(f(),u(`div`,{key:e.id,class:`startup-item`},[d(`div`,Se,[d(`div`,{class:`startup-item__name`,title:e.type===`workflow`?e.wf?.name:e.cmd?.name},[d(`span`,{class:ne([`startup-item__type`,e.type===`workflow`?`is-workflow`:`is-command`])},p(e.type===`workflow`?t(w)(`@PSTART:工作流`):t(w)(`@PSTART:命令`)),3),c(` `+p(e.type===`workflow`?e.wf?.name:e.cmd?.name),1)],8,Ce),e.type===`command`?(f(),u(`div`,{key:0,class:`startup-item__desc`,title:e.cmd?.command},p(e.cmd?.command),9,we)):(f(),u(`div`,{key:1,class:`startup-item__desc`,title:e.wf?.description||e.wf?.name},p(e.wf?.description||t(w)(`@PSTART:工作流`)),9,Te)),e.type===`command`?(f(),u(`div`,{key:2,class:`startup-item__dir`,title:e.cmd?.directory},p(t(w)(`@PSTART:目录`))+`:`+p(e.cmd?.directory||`-`),9,Ee)):(f(),u(`div`,{key:3,class:`startup-item__dir`,title:String(e.wf?.flowData?.nodes?.length||0)},p(t(w)(`@PSTART:步骤`))+`:`+p(e.wf?.flowData?.nodes?.length||0),9,De))]),d(`div`,Oe,[l(E,{content:t(w)(`@PSTART:刷新页面自动执行`),placement:`top`},{default:y(()=>[l(_,{"model-value":e.enabled!==!1,size:`small`,loading:!!$.value[e.id],"onUpdate:modelValue":t=>ze(e.id,!!t)},null,8,[`model-value`,`loading`,`onUpdate:modelValue`])]),_:2},1032,[`content`]),l(E,{content:t(w)(`@PSTART:执行`),placement:`top`},{default:y(()=>[l(T,{text:``,type:`primary`,size:`small`,onClick:t=>Ue(e)},{default:y(()=>[l(C,null,{default:y(()=>[l(t(re))]),_:1})]),_:2},1032,[`onClick`])]),_:2},1032,[`content`]),l(E,{content:t(w)(`@PSTART:删除`),placement:`top`},{default:y(()=>[l(T,{text:``,type:`danger`,size:`small`,onClick:t=>Ve(e)},{default:y(()=>[l(C,null,{default:y(()=>[l(t(ae))]),_:1})]),_:2},1032,[`onClick`])]),_:2},1032,[`content`])])]))),128))])),d(`div`,ke,[d(`div`,Ae,p(t(w)(`@PSTART:添加启动项`)),1),d(`div`,N,[l(b,{modelValue:X.value,"onUpdate:modelValue":h[5]||=e=>X.value=e,size:`small`,onChange:h[6]||=e=>Z.value=``},{default:y(()=>[l(v,{label:`command`},{default:y(()=>[c(p(t(w)(`@PSTART:命令`)),1)]),_:1}),l(v,{label:`workflow`},{default:y(()=>[c(p(t(w)(`@PSTART:工作流`)),1)]),_:1})]),_:1},8,[`modelValue`])]),d(`div`,je,[l(S,{modelValue:Z.value,"onUpdate:modelValue":h[7]||=e=>Z.value=e,class:`startup-add__select`,placeholder:X.value===`workflow`?t(w)(`@PSTART:选择一个工作流`):t(w)(`@PSTART:选择一个自定义命令`),filterable:``,clearable:``},{default:y(()=>[X.value===`workflow`?(f(!0),u(g,{key:0},m(V.value,e=>(f(),r(x,{key:e.id,label:e.name,value:e.id},{default:y(()=>[d(`div`,Me,[d(`div`,Ne,p(e.name),1),d(`div`,Pe,p(e.description||`步骤: ${e.flowData?.nodes?.length||0}`),1)])]),_:2},1032,[`label`,`value`]))),128)):(f(!0),u(g,{key:1},m(z.value,e=>(f(),r(x,{key:e.id,label:e.name,value:e.id},{default:y(()=>[d(`div`,Fe,[d(`div`,Ie,p(e.name),1),d(`div`,Le,p(e.command),1)])]),_:2},1032,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`]),l(T,{type:`primary`,onClick:Be},{default:y(()=>[l(C,null,{default:y(()=>[l(t(s))]),_:1}),c(` `+p(t(w)(`@PSTART:添加`)),1)]),_:1})])])])]),_:1},8,[`modelValue`,`title`])}}}),[[`__scopeId`,`data-v-12193bc4`]]),F=C(i({__name:`ProjectStartupButton`,emits:[`execute-command`,`execute-workflow`],setup(e,{emit:n}){let{t:r}=S(),i=n,a=h(!1);function o(){a.value=!0}function s(e){i(`execute-command`,e)}function c(e){i(`execute-workflow`,e)}return(e,n)=>(f(),u(`div`,null,[l(E,{tooltip:t(r)(`@PSTART:项目启动项`),"hover-color":`#409EFF`,onClick:o,"custom-class":`project-startup-btn`},{default:y(()=>[l(w,{"icon-class":`start-run-command`,"class-name":`icon-btn`})]),_:1},8,[`tooltip`]),l(P,{visible:a.value,"onUpdate:visible":n[0]||=e=>a.value=e,onExecuteCommand:s,onExecuteWorkflow:c},null,8,[`visible`])]))}}),[[`__scopeId`,`data-v-f09d73dd`]]);export{F as default};
@@ -1 +1 @@
1
- import"./rolldown-runtime-BM3Ffeng.js";import{$t as e,Cr as t,Dn as n,E as r,En as i,Fn as ee,G as te,Kt as ne,L as re,Lt as a,Mn as o,Nn as s,On as c,T as ie,Tn as l,U as ae,Wr as oe,Yn as u,Yr as d,Zn as f,_r as p,bn as m,gt as se,i as h,ir as g,kt as ce,lt as _,nt as v,on as le,or as y,q as ue,r as b,rt as de,st as fe,vn as x,wn as S}from"./element-plus-H7kW-grr.js";import{n as C,t as w}from"./_plugin-vue_export-helper-BaSe6lmR.js";import{t as pe}from"./SvgIcon-BpKq_phu.js";import{t as T}from"./CommonDialog-OCekbVQM.js";import{E,l as D,w as O}from"./index-SjRTI8Of.js";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`},k={for:`rm-add-url`},A={class:`rm-section rm-section--list`},we={class:`rm-section__title`},Te={class:`rm-count`},Ee={key:0,class:`rm-empty`},De={key:1,class:`rm-empty`},Oe={key:2,class:`rm-rows`},ke={class:`rm-row__head`},Ae={class:`rm-row__name`},je={class:`rm-row__actions`},Me={class:`rm-row__urls`},Ne={class:`rm-url`},Pe={class:`rm-url__label`},Fe=[`onClick`],Ie={key:0,class:`rm-url`},Le={class:`rm-url__label`},Re={key:1,class:`rm-url`},ze={class:`rm-url__hint`},Be={class:`rm-footer`},Ve={key:0,class:`rm-push-results`},He={class:`rm-push-results__title`},Ue=[`title`],We={class:`rm-footer__actions`},Ge={class:`rm-tip`},Ke={key:0,class:`rm-tip rm-tip--warn`},qe={class:`rm-pushurls`},Je={class:`rm-tip`},j=w(ee({__name:`RemoteManagerDialog`,setup(ee){let w=O(),j=S({get:()=>w.isRemoteManagerVisible,set:e=>{w.isRemoteManagerVisible=e}}),M=p({name:`origin`,url:``}),N=p(!1),Ye=S(()=>`git remote add ${M.value.name.trim()||C(`@RMT01:<名称>`)} ${M.value.url.trim()||C(`@RMT01:<地址>`)}`);async function P(){let e=M.value.name.trim(),t=M.value.url.trim();if(!e){h.warning(C(`@RMT01:请输入远程名称`));return}if(!t){h.warning(C(`@RMT01:请输入远程地址`));return}if(w.remotes.some(t=>t.name===e)){h.warning(C(`@RMT01:远程名称已存在`));return}N.value=!0;try{await w.addRemote(t,e)&&(h.success(C(`@RMT01:远程添加成功`)),M.value={name:``,url:``})}finally{N.value=!1}}let F=p(!1),I=p(null),L=p(``),R=p(!1),Xe=S(()=>`git remote rename ${I.value?.name||C(`@RMT01:<原名称>`)} ${L.value.trim()||C(`@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){h.warning(C(`@RMT01:请输入新名称`));return}if(t===e.name){h.warning(C(`@RMT01:新名称与原名称相同`));return}if(w.remotes.some(e=>e.name===t)){h.warning(C(`@RMT01:远程名称已存在`));return}R.value=!0;try{await w.renameRemote(e.name,t)&&(F.value=!1)}finally{R.value=!1}}let B=p(!1),V=p(null),H=p(``),U=p(!1),Qe=S(()=>`git remote set-url ${V.value?.name||C(`@RMT01:<名称>`)} ${H.value.trim()||C(`@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){h.warning(C(`@RMT01:请输入远程地址`));return}U.value=!0;try{await w.setRemoteUrl(e.name,t)&&(B.value=!1)}finally{U.value=!1}}let G=p(!1),K=p(null),q=p([{url:``}]),J=p(!1),et=S(()=>{let e=K.value?.name||C(`@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){h.warning(C(`@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 w.setRemotePushUrls(e.name,t)&&(G.value=!1)}finally{J.value=!1}}async function it(e){try{await b.confirm(e.isUpstream?C(`@RMT01:当前分支上游指向该远程,删除后将解除上游跟踪`):C(`@RMT01:删除后本地配置将移除,远程仓库本身不受影响`),`${C(`@RMT01:确认删除远程`)} "${e.name}"`,{type:`warning`,confirmButtonText:C(`@RMT01:删除`),cancelButtonText:C(`@RMT01:取消`)})}catch{return}await w.removeRemote(e.name)}let X=p(``),Z=p(!1);async function at(e){X.value=e.name;try{await w.pushToRemoteWithProgress(void 0,e.name)&&h.success(`${C(`@RMT01:已推送到`)} ${e.name}`)}finally{X.value=``}}async function ot(){Z.value=!0;try{await w.pushAllRemotes()}finally{Z.value=!1}}async function Q(e){if(e)try{await navigator.clipboard.writeText(e),h.success(C(`@RMT01:地址已复制`))}catch{h.error(C(`@RMT01:复制失败`))}}return g(j,e=>{e&&(w.fetchRemotes(),w.lastPushAllResults=[])}),(ee,p)=>{let h=pe,g=le,b=ue,S=ae,O=re,I=te,K=r,$=ie;return u(),c(m,null,[s(T,{modelValue:j.value,"onUpdate:modelValue":p[3]||=e=>j.value=e,title:t(C)(`@RMT01:远程仓库管理`),size:`large`,type:`flex`,"close-on-click-modal":!1,"custom-class":`remote-manager-dialog`},{footer:y(()=>[l(`div`,Be,[t(w).lastPushAllResults.length?(u(),c(`div`,Ve,[l(`span`,He,d(t(C)(`@RMT01:上次推送结果`)),1),(u(!0),c(m,null,f(t(w).lastPushAllResults,e=>(u(),c(`span`,{key:e.name,class:oe([`rm-push-result`,e.ok?`is-ok`:`is-fail`]),title:e.error||``},[s(g,null,{default:y(()=>[e.ok?(u(),i(t(v),{key:0})):(u(),i(t(de),{key:1}))]),_:2},1024),o(` `+d(e.name),1)],10,Ue))),128))])):n(``,!0),l(`div`,We,[t(w).hasMultipleRemotes?(u(),i(S,{key:0,type:`primary`,icon:t(e),loading:Z.value,onClick:ot},{default:y(()=>[o(d(t(C)(`@RMT01:推送到全部远程`)),1)]),_:1},8,[`icon`,`loading`])):n(``,!0),s(S,{onClick:p[2]||=e=>j.value=!1},{default:y(()=>[o(d(t(C)(`@RMT01:关闭`)),1)]),_:1})])])]),default:y(()=>[l(`div`,me,[l(`div`,he,[l(`div`,ge,[s(h,{"icon-class":`remote-repo`})]),l(`div`,_e,[l(`h4`,null,d(t(C)(`@RMT01:管理多个远程仓库`)),1),l(`p`,null,d(t(C)(`@RMT01:一个仓库可配置多个远程(如 origin / upstream / backup),推送时按名称选择目标。`)),1)])]),l(`section`,ve,[l(`h4`,ye,[s(g,null,{default:y(()=>[s(t(a))]),_:1}),l(`span`,null,d(t(C)(`@RMT01:添加远程`)),1)]),l(`div`,be,[l(`div`,xe,[l(`label`,Se,d(t(C)(`@RMT01:远程名称`)),1),s(b,{id:`rm-add-name`,modelValue:M.value.name,"onUpdate:modelValue":p[0]||=e=>M.value.name=e,placeholder:t(C)(`@RMT01:例如 origin、upstream、backup`),clearable:``,onKeyup:x(P,[`enter`])},null,8,[`modelValue`,`placeholder`])]),l(`div`,Ce,[l(`label`,k,d(t(C)(`@RMT01:远程地址`)),1),s(b,{id:`rm-add-url`,modelValue:M.value.url,"onUpdate:modelValue":p[1]||=e=>M.value.url=e,placeholder:`git@github.com:user/project.git`,clearable:``,onKeyup:x(P,[`enter`])},null,8,[`modelValue`])]),s(S,{type:`primary`,loading:N.value,class:`rm-add__btn`,onClick:P},{default:y(()=>[o(d(t(C)(`@RMT01:添加`)),1)]),_:1},8,[`loading`])]),s(D,{command:Ye.value,title:t(C)(`@RMT01:命令预览:`),placeholder:t(C)(`@RMT01:填写名称与地址后显示命令`)},null,8,[`command`,`title`,`placeholder`])]),l(`section`,A,[l(`h4`,we,[s(g,null,{default:y(()=>[s(t(fe))]),_:1}),l(`span`,null,d(t(C)(`@RMT01:远程仓库列表`)),1),l(`span`,Te,d(t(w).remotes.length),1)]),t(w).isLoadingRemotes&&t(w).remotes.length===0?(u(),c(`div`,Ee,[s(g,{class:`is-loading`},{default:y(()=>[s(t(ce))]),_:1}),l(`span`,null,d(t(C)(`@RMT01:加载中…`)),1)])):t(w).remotes.length===0?(u(),c(`div`,De,[l(`span`,null,d(t(C)(`@RMT01:暂无远程仓库`)),1)])):(u(),c(`div`,Oe,[(u(!0),c(m,null,f(t(w).remotes,r=>(u(),c(`div`,{key:r.name,class:`rm-row`},[l(`div`,ke,[l(`span`,Ae,d(r.name),1),r.isUpstream?(u(),i(O,{key:0,size:`small`,type:`success`,effect:`light`},{default:y(()=>[o(d(t(C)(`@RMT01:上游`)),1)]),_:1})):n(``,!0),r.isPushDefault?(u(),i(O,{key:1,size:`small`,type:`warning`,effect:`light`},{default:y(()=>[o(d(t(C)(`@RMT01:默认推送`)),1)]),_:1})):n(``,!0),p[9]||=l(`span`,{class:`rm-row__spacer`},null,-1),l(`div`,je,[s(S,{size:`small`,type:`primary`,icon:t(e),loading:X.value===r.name,disabled:t(w).isPushing,onClick:e=>at(r)},{default:y(()=>[o(d(t(C)(`@RMT01:推送`)),1)]),_:2},1032,[`icon`,`loading`,`disabled`,`onClick`]),s(E,{tooltip:t(C)(`@RMT01:编辑地址`),size:`small`,onClick:e=>$e(r)},{default:y(()=>[s(g,null,{default:y(()=>[s(t(se))]),_:1})]),_:2},1032,[`tooltip`,`onClick`]),s(E,{tooltip:t(C)(`@RMT01:管理推送地址`),size:`small`,onClick:e=>tt(r)},{default:y(()=>[s(g,null,{default:y(()=>[s(t(ne))]),_:1})]),_:2},1032,[`tooltip`,`onClick`]),s(E,{tooltip:t(C)(`@RMT01:重命名`),size:`small`,onClick:e=>Ze(r)},{default:y(()=>[s(h,{"icon-class":`git-branch`})]),_:2},1032,[`tooltip`,`onClick`]),s(E,{tooltip:t(C)(`@RMT01:删除`),size:`small`,"hover-color":`var(--color-danger)`,onClick:e=>it(r)},{default:y(()=>[s(g,null,{default:y(()=>[s(t(_))]),_:1})]),_:2},1032,[`tooltip`,`onClick`])])]),l(`div`,Me,[l(`div`,Ne,[l(`span`,Pe,d(t(C)(`@RMT01:拉取地址`)),1),s(I,{content:t(C)(`@RMT01:点击复制`),placement:`top`,"show-after":300},{default:y(()=>[l(`span`,{class:`rm-url__value`,onClick:e=>Q(r.fetchUrl)},d(r.fetchUrl),9,Fe)]),_:2},1032,[`content`])]),r.hasExplicitPushUrls?(u(),c(`div`,Ie,[l(`span`,Le,d(t(C)(`@RMT01:推送地址`)),1),(u(!0),c(m,null,f(r.pushUrls,(e,n)=>(u(),i(I,{key:n,content:t(C)(`@RMT01:点击复制`),placement:`top`,"show-after":300},{default:y(()=>[s(O,{size:`small`,class:`rm-pushurl`,onClick:t=>Q(e)},{default:y(()=>[o(d(e),1)]),_:2},1032,[`onClick`])]),_:2},1032,[`content`]))),128))])):(u(),c(`div`,Re,[l(`span`,ze,d(t(C)(`@RMT01:推送地址与拉取地址一致`)),1)]))])]))),128))]))])])]),_:1},8,[`modelValue`,`title`]),s(T,{modelValue:F.value,"onUpdate:modelValue":p[5]||=e=>F.value=e,title:t(C)(`@RMT01:重命名远程仓库`),width:`min(660px, 92vw)`,"close-on-click-modal":!1,"show-footer":``,"confirm-text":t(C)(`@RMT01:保存`),"cancel-text":t(C)(`@RMT01:取消`),"confirm-loading":R.value,onConfirm:z},{default:y(()=>[s($,{"label-position":`top`},{default:y(()=>[s(K,{label:t(C)(`@RMT01:新名称`)},{default:y(()=>[s(b,{modelValue:L.value,"onUpdate:modelValue":p[4]||=e=>L.value=e,placeholder:t(C)(`@RMT01:请输入新名称`),clearable:``,onKeyup:x(z,[`enter`])},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1}),l(`p`,Ge,d(t(C)(`@RMT01:重命名后当前分支的上游跟踪会自动跟随,无需手动调整。`)),1),s(D,{command:Xe.value,title:t(C)(`@RMT01:命令预览:`)},null,8,[`command`,`title`])]),_:1},8,[`modelValue`,`title`,`confirm-text`,`cancel-text`,`confirm-loading`]),s(T,{modelValue:B.value,"onUpdate:modelValue":p[7]||=e=>B.value=e,title:t(C)(`@RMT01:编辑远程地址`),width:`min(660px, 92vw)`,"close-on-click-modal":!1,"show-footer":``,"confirm-text":t(C)(`@RMT01:保存`),"cancel-text":t(C)(`@RMT01:取消`),"confirm-loading":U.value,onConfirm:W},{default:y(()=>[s($,{"label-position":`top`},{default:y(()=>[s(K,{label:t(C)(`@RMT01:远程地址`)},{default:y(()=>[s(b,{modelValue:H.value,"onUpdate:modelValue":p[6]||=e=>H.value=e,placeholder:`git@github.com:user/project.git`,clearable:``,onKeyup:x(W,[`enter`])},null,8,[`modelValue`])]),_:1},8,[`label`])]),_:1}),V.value?.hasExplicitPushUrls?(u(),c(`p`,Ke,d(t(C)(`@RMT01:该远程配置了独立的推送地址,不受本次修改影响`)),1)):n(``,!0),s(D,{command:Qe.value,title:t(C)(`@RMT01:命令预览:`)},null,8,[`command`,`title`])]),_:1},8,[`modelValue`,`title`,`confirm-text`,`cancel-text`,`confirm-loading`]),s(T,{modelValue:G.value,"onUpdate:modelValue":p[8]||=e=>G.value=e,title:t(C)(`@RMT01:管理推送地址`),width:`min(660px, 92vw)`,"close-on-click-modal":!1,"show-footer":``,"confirm-text":t(C)(`@RMT01:保存`),"cancel-text":t(C)(`@RMT01:取消`),"confirm-loading":J.value,onConfirm:Y},{default:y(()=>[l(`div`,qe,[(u(!0),c(m,null,f(q.value,(e,n)=>(u(),c(`div`,{key:n,class:`rm-pushurl-row`},[s(b,{modelValue:e.url,"onUpdate:modelValue":t=>e.url=t,placeholder:t(C)(`@RMT01:推送地址`),clearable:``,onKeyup:x(Y,[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),s(E,{tooltip:t(C)(`@RMT01:删除`),size:`small`,"hover-color":`var(--color-danger)`,onClick:e=>rt(n)},{default:y(()=>[s(g,null,{default:y(()=>[s(t(_))]),_:1})]),_:2},1032,[`tooltip`,`onClick`])]))),128)),s(S,{link:``,type:`primary`,icon:t(a),onClick:nt},{default:y(()=>[o(d(t(C)(`@RMT01:添加一行`)),1)]),_:1},8,[`icon`]),l(`p`,Je,d(t(C)(`@RMT01:留空则推送地址与拉取地址一致;配置多个推送地址后可一次推送到多处。`)),1)]),s(D,{command:et.value,title:t(C)(`@RMT01:命令预览:`)},null,8,[`command`,`title`])]),_:1},8,[`modelValue`,`title`,`confirm-text`,`cancel-text`,`confirm-loading`])],64)}}}),[[`__scopeId`,`data-v-6113d77c`]]);export{j as default};
1
+ import"./rolldown-runtime-BM3Ffeng.js";import{$t as e,Cr as t,Dn as n,E as r,En as i,Fn as ee,G as te,Kt as ne,L as re,Lt as a,Mn as o,Nn as s,On as c,T as ie,Tn as l,U as ae,Wr as oe,Yn as u,Yr as d,Zn as f,_r as p,bn as m,gt as se,i as h,ir as g,kt as ce,lt as _,nt as v,on as le,or as y,q as ue,r as b,rt as de,st as fe,vn as x,wn as S}from"./element-plus-H7kW-grr.js";import{n as C,t as w}from"./_plugin-vue_export-helper-BaSe6lmR.js";import{t as pe}from"./SvgIcon-BpKq_phu.js";import{t as T}from"./CommonDialog-OCekbVQM.js";import{E,l as D,w as O}from"./index-BeNCRYqM.js";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`},k={for:`rm-add-url`},A={class:`rm-section rm-section--list`},we={class:`rm-section__title`},Te={class:`rm-count`},Ee={key:0,class:`rm-empty`},De={key:1,class:`rm-empty`},Oe={key:2,class:`rm-rows`},ke={class:`rm-row__head`},Ae={class:`rm-row__name`},je={class:`rm-row__actions`},Me={class:`rm-row__urls`},Ne={class:`rm-url`},Pe={class:`rm-url__label`},Fe=[`onClick`],Ie={key:0,class:`rm-url`},Le={class:`rm-url__label`},Re={key:1,class:`rm-url`},ze={class:`rm-url__hint`},Be={class:`rm-footer`},Ve={key:0,class:`rm-push-results`},He={class:`rm-push-results__title`},Ue=[`title`],We={class:`rm-footer__actions`},Ge={class:`rm-tip`},Ke={key:0,class:`rm-tip rm-tip--warn`},qe={class:`rm-pushurls`},Je={class:`rm-tip`},j=w(ee({__name:`RemoteManagerDialog`,setup(ee){let w=O(),j=S({get:()=>w.isRemoteManagerVisible,set:e=>{w.isRemoteManagerVisible=e}}),M=p({name:`origin`,url:``}),N=p(!1),Ye=S(()=>`git remote add ${M.value.name.trim()||C(`@RMT01:<名称>`)} ${M.value.url.trim()||C(`@RMT01:<地址>`)}`);async function P(){let e=M.value.name.trim(),t=M.value.url.trim();if(!e){h.warning(C(`@RMT01:请输入远程名称`));return}if(!t){h.warning(C(`@RMT01:请输入远程地址`));return}if(w.remotes.some(t=>t.name===e)){h.warning(C(`@RMT01:远程名称已存在`));return}N.value=!0;try{await w.addRemote(t,e)&&(h.success(C(`@RMT01:远程添加成功`)),M.value={name:``,url:``})}finally{N.value=!1}}let F=p(!1),I=p(null),L=p(``),R=p(!1),Xe=S(()=>`git remote rename ${I.value?.name||C(`@RMT01:<原名称>`)} ${L.value.trim()||C(`@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){h.warning(C(`@RMT01:请输入新名称`));return}if(t===e.name){h.warning(C(`@RMT01:新名称与原名称相同`));return}if(w.remotes.some(e=>e.name===t)){h.warning(C(`@RMT01:远程名称已存在`));return}R.value=!0;try{await w.renameRemote(e.name,t)&&(F.value=!1)}finally{R.value=!1}}let B=p(!1),V=p(null),H=p(``),U=p(!1),Qe=S(()=>`git remote set-url ${V.value?.name||C(`@RMT01:<名称>`)} ${H.value.trim()||C(`@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){h.warning(C(`@RMT01:请输入远程地址`));return}U.value=!0;try{await w.setRemoteUrl(e.name,t)&&(B.value=!1)}finally{U.value=!1}}let G=p(!1),K=p(null),q=p([{url:``}]),J=p(!1),et=S(()=>{let e=K.value?.name||C(`@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){h.warning(C(`@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 w.setRemotePushUrls(e.name,t)&&(G.value=!1)}finally{J.value=!1}}async function it(e){try{await b.confirm(e.isUpstream?C(`@RMT01:当前分支上游指向该远程,删除后将解除上游跟踪`):C(`@RMT01:删除后本地配置将移除,远程仓库本身不受影响`),`${C(`@RMT01:确认删除远程`)} "${e.name}"`,{type:`warning`,confirmButtonText:C(`@RMT01:删除`),cancelButtonText:C(`@RMT01:取消`)})}catch{return}await w.removeRemote(e.name)}let X=p(``),Z=p(!1);async function at(e){X.value=e.name;try{await w.pushToRemoteWithProgress(void 0,e.name)&&h.success(`${C(`@RMT01:已推送到`)} ${e.name}`)}finally{X.value=``}}async function ot(){Z.value=!0;try{await w.pushAllRemotes()}finally{Z.value=!1}}async function Q(e){if(e)try{await navigator.clipboard.writeText(e),h.success(C(`@RMT01:地址已复制`))}catch{h.error(C(`@RMT01:复制失败`))}}return g(j,e=>{e&&(w.fetchRemotes(),w.lastPushAllResults=[])}),(ee,p)=>{let h=pe,g=le,b=ue,S=ae,O=re,I=te,K=r,$=ie;return u(),c(m,null,[s(T,{modelValue:j.value,"onUpdate:modelValue":p[3]||=e=>j.value=e,title:t(C)(`@RMT01:远程仓库管理`),size:`large`,type:`flex`,"close-on-click-modal":!1,"custom-class":`remote-manager-dialog`},{footer:y(()=>[l(`div`,Be,[t(w).lastPushAllResults.length?(u(),c(`div`,Ve,[l(`span`,He,d(t(C)(`@RMT01:上次推送结果`)),1),(u(!0),c(m,null,f(t(w).lastPushAllResults,e=>(u(),c(`span`,{key:e.name,class:oe([`rm-push-result`,e.ok?`is-ok`:`is-fail`]),title:e.error||``},[s(g,null,{default:y(()=>[e.ok?(u(),i(t(v),{key:0})):(u(),i(t(de),{key:1}))]),_:2},1024),o(` `+d(e.name),1)],10,Ue))),128))])):n(``,!0),l(`div`,We,[t(w).hasMultipleRemotes?(u(),i(S,{key:0,type:`primary`,icon:t(e),loading:Z.value,onClick:ot},{default:y(()=>[o(d(t(C)(`@RMT01:推送到全部远程`)),1)]),_:1},8,[`icon`,`loading`])):n(``,!0),s(S,{onClick:p[2]||=e=>j.value=!1},{default:y(()=>[o(d(t(C)(`@RMT01:关闭`)),1)]),_:1})])])]),default:y(()=>[l(`div`,me,[l(`div`,he,[l(`div`,ge,[s(h,{"icon-class":`remote-repo`})]),l(`div`,_e,[l(`h4`,null,d(t(C)(`@RMT01:管理多个远程仓库`)),1),l(`p`,null,d(t(C)(`@RMT01:一个仓库可配置多个远程(如 origin / upstream / backup),推送时按名称选择目标。`)),1)])]),l(`section`,ve,[l(`h4`,ye,[s(g,null,{default:y(()=>[s(t(a))]),_:1}),l(`span`,null,d(t(C)(`@RMT01:添加远程`)),1)]),l(`div`,be,[l(`div`,xe,[l(`label`,Se,d(t(C)(`@RMT01:远程名称`)),1),s(b,{id:`rm-add-name`,modelValue:M.value.name,"onUpdate:modelValue":p[0]||=e=>M.value.name=e,placeholder:t(C)(`@RMT01:例如 origin、upstream、backup`),clearable:``,onKeyup:x(P,[`enter`])},null,8,[`modelValue`,`placeholder`])]),l(`div`,Ce,[l(`label`,k,d(t(C)(`@RMT01:远程地址`)),1),s(b,{id:`rm-add-url`,modelValue:M.value.url,"onUpdate:modelValue":p[1]||=e=>M.value.url=e,placeholder:`git@github.com:user/project.git`,clearable:``,onKeyup:x(P,[`enter`])},null,8,[`modelValue`])]),s(S,{type:`primary`,loading:N.value,class:`rm-add__btn`,onClick:P},{default:y(()=>[o(d(t(C)(`@RMT01:添加`)),1)]),_:1},8,[`loading`])]),s(D,{command:Ye.value,title:t(C)(`@RMT01:命令预览:`),placeholder:t(C)(`@RMT01:填写名称与地址后显示命令`)},null,8,[`command`,`title`,`placeholder`])]),l(`section`,A,[l(`h4`,we,[s(g,null,{default:y(()=>[s(t(fe))]),_:1}),l(`span`,null,d(t(C)(`@RMT01:远程仓库列表`)),1),l(`span`,Te,d(t(w).remotes.length),1)]),t(w).isLoadingRemotes&&t(w).remotes.length===0?(u(),c(`div`,Ee,[s(g,{class:`is-loading`},{default:y(()=>[s(t(ce))]),_:1}),l(`span`,null,d(t(C)(`@RMT01:加载中…`)),1)])):t(w).remotes.length===0?(u(),c(`div`,De,[l(`span`,null,d(t(C)(`@RMT01:暂无远程仓库`)),1)])):(u(),c(`div`,Oe,[(u(!0),c(m,null,f(t(w).remotes,r=>(u(),c(`div`,{key:r.name,class:`rm-row`},[l(`div`,ke,[l(`span`,Ae,d(r.name),1),r.isUpstream?(u(),i(O,{key:0,size:`small`,type:`success`,effect:`light`},{default:y(()=>[o(d(t(C)(`@RMT01:上游`)),1)]),_:1})):n(``,!0),r.isPushDefault?(u(),i(O,{key:1,size:`small`,type:`warning`,effect:`light`},{default:y(()=>[o(d(t(C)(`@RMT01:默认推送`)),1)]),_:1})):n(``,!0),p[9]||=l(`span`,{class:`rm-row__spacer`},null,-1),l(`div`,je,[s(S,{size:`small`,type:`primary`,icon:t(e),loading:X.value===r.name,disabled:t(w).isPushing,onClick:e=>at(r)},{default:y(()=>[o(d(t(C)(`@RMT01:推送`)),1)]),_:2},1032,[`icon`,`loading`,`disabled`,`onClick`]),s(E,{tooltip:t(C)(`@RMT01:编辑地址`),size:`small`,onClick:e=>$e(r)},{default:y(()=>[s(g,null,{default:y(()=>[s(t(se))]),_:1})]),_:2},1032,[`tooltip`,`onClick`]),s(E,{tooltip:t(C)(`@RMT01:管理推送地址`),size:`small`,onClick:e=>tt(r)},{default:y(()=>[s(g,null,{default:y(()=>[s(t(ne))]),_:1})]),_:2},1032,[`tooltip`,`onClick`]),s(E,{tooltip:t(C)(`@RMT01:重命名`),size:`small`,onClick:e=>Ze(r)},{default:y(()=>[s(h,{"icon-class":`git-branch`})]),_:2},1032,[`tooltip`,`onClick`]),s(E,{tooltip:t(C)(`@RMT01:删除`),size:`small`,"hover-color":`var(--color-danger)`,onClick:e=>it(r)},{default:y(()=>[s(g,null,{default:y(()=>[s(t(_))]),_:1})]),_:2},1032,[`tooltip`,`onClick`])])]),l(`div`,Me,[l(`div`,Ne,[l(`span`,Pe,d(t(C)(`@RMT01:拉取地址`)),1),s(I,{content:t(C)(`@RMT01:点击复制`),placement:`top`,"show-after":300},{default:y(()=>[l(`span`,{class:`rm-url__value`,onClick:e=>Q(r.fetchUrl)},d(r.fetchUrl),9,Fe)]),_:2},1032,[`content`])]),r.hasExplicitPushUrls?(u(),c(`div`,Ie,[l(`span`,Le,d(t(C)(`@RMT01:推送地址`)),1),(u(!0),c(m,null,f(r.pushUrls,(e,n)=>(u(),i(I,{key:n,content:t(C)(`@RMT01:点击复制`),placement:`top`,"show-after":300},{default:y(()=>[s(O,{size:`small`,class:`rm-pushurl`,onClick:t=>Q(e)},{default:y(()=>[o(d(e),1)]),_:2},1032,[`onClick`])]),_:2},1032,[`content`]))),128))])):(u(),c(`div`,Re,[l(`span`,ze,d(t(C)(`@RMT01:推送地址与拉取地址一致`)),1)]))])]))),128))]))])])]),_:1},8,[`modelValue`,`title`]),s(T,{modelValue:F.value,"onUpdate:modelValue":p[5]||=e=>F.value=e,title:t(C)(`@RMT01:重命名远程仓库`),width:`min(660px, 92vw)`,"close-on-click-modal":!1,"show-footer":``,"confirm-text":t(C)(`@RMT01:保存`),"cancel-text":t(C)(`@RMT01:取消`),"confirm-loading":R.value,onConfirm:z},{default:y(()=>[s($,{"label-position":`top`},{default:y(()=>[s(K,{label:t(C)(`@RMT01:新名称`)},{default:y(()=>[s(b,{modelValue:L.value,"onUpdate:modelValue":p[4]||=e=>L.value=e,placeholder:t(C)(`@RMT01:请输入新名称`),clearable:``,onKeyup:x(z,[`enter`])},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1}),l(`p`,Ge,d(t(C)(`@RMT01:重命名后当前分支的上游跟踪会自动跟随,无需手动调整。`)),1),s(D,{command:Xe.value,title:t(C)(`@RMT01:命令预览:`)},null,8,[`command`,`title`])]),_:1},8,[`modelValue`,`title`,`confirm-text`,`cancel-text`,`confirm-loading`]),s(T,{modelValue:B.value,"onUpdate:modelValue":p[7]||=e=>B.value=e,title:t(C)(`@RMT01:编辑远程地址`),width:`min(660px, 92vw)`,"close-on-click-modal":!1,"show-footer":``,"confirm-text":t(C)(`@RMT01:保存`),"cancel-text":t(C)(`@RMT01:取消`),"confirm-loading":U.value,onConfirm:W},{default:y(()=>[s($,{"label-position":`top`},{default:y(()=>[s(K,{label:t(C)(`@RMT01:远程地址`)},{default:y(()=>[s(b,{modelValue:H.value,"onUpdate:modelValue":p[6]||=e=>H.value=e,placeholder:`git@github.com:user/project.git`,clearable:``,onKeyup:x(W,[`enter`])},null,8,[`modelValue`])]),_:1},8,[`label`])]),_:1}),V.value?.hasExplicitPushUrls?(u(),c(`p`,Ke,d(t(C)(`@RMT01:该远程配置了独立的推送地址,不受本次修改影响`)),1)):n(``,!0),s(D,{command:Qe.value,title:t(C)(`@RMT01:命令预览:`)},null,8,[`command`,`title`])]),_:1},8,[`modelValue`,`title`,`confirm-text`,`cancel-text`,`confirm-loading`]),s(T,{modelValue:G.value,"onUpdate:modelValue":p[8]||=e=>G.value=e,title:t(C)(`@RMT01:管理推送地址`),width:`min(660px, 92vw)`,"close-on-click-modal":!1,"show-footer":``,"confirm-text":t(C)(`@RMT01:保存`),"cancel-text":t(C)(`@RMT01:取消`),"confirm-loading":J.value,onConfirm:Y},{default:y(()=>[l(`div`,qe,[(u(!0),c(m,null,f(q.value,(e,n)=>(u(),c(`div`,{key:n,class:`rm-pushurl-row`},[s(b,{modelValue:e.url,"onUpdate:modelValue":t=>e.url=t,placeholder:t(C)(`@RMT01:推送地址`),clearable:``,onKeyup:x(Y,[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),s(E,{tooltip:t(C)(`@RMT01:删除`),size:`small`,"hover-color":`var(--color-danger)`,onClick:e=>rt(n)},{default:y(()=>[s(g,null,{default:y(()=>[s(t(_))]),_:1})]),_:2},1032,[`tooltip`,`onClick`])]))),128)),s(S,{link:``,type:`primary`,icon:t(a),onClick:nt},{default:y(()=>[o(d(t(C)(`@RMT01:添加一行`)),1)]),_:1},8,[`icon`]),l(`p`,Je,d(t(C)(`@RMT01:留空则推送地址与拉取地址一致;配置多个推送地址后可一次推送到多处。`)),1)]),s(D,{command:et.value,title:t(C)(`@RMT01:命令预览:`)},null,8,[`command`,`title`])]),_:1},8,[`modelValue`,`title`,`confirm-text`,`cancel-text`,`confirm-loading`])],64)}}}),[[`__scopeId`,`data-v-6113d77c`]]);export{j as default};
@@ -1 +1 @@
1
- import"./rolldown-runtime-BM3Ffeng.js";import{Cr as e,Fn as t,G as n,Kt as r,Nn as i,On as a,Tn as o,Yn as s,Yr as c,bn as l,on as u,or as d,yn as f}from"./element-plus-H7kW-grr.js";import{n as p,t as m}from"./_plugin-vue_export-helper-BaSe6lmR.js";import{t as h}from"./SvgIcon-BpKq_phu.js";import{E as g,w as _}from"./index-SjRTI8Of.js";var v={class:`remote-wrapper`},y=[`href`,`aria-label`],b=[`aria-label`],x={key:1,class:`repo-url repo-url--empty`},S=m(t({__name:`RemoteRepoCard`,setup(t){let m=_();return(t,_)=>{let S=u,C=h,w=n;return s(),a(`div`,v,[i(g,{size:`small`,tooltip:e(p)(`@F13B4:管理远程仓库`),onClick:_[0]||=t=>e(m).isRemoteManagerVisible=!0},{default:d(()=>[i(S,null,{default:d(()=>[i(e(r))]),_:1})]),_:1},8,[`tooltip`]),e(m).remoteUrl?(s(),a(l,{key:0},[i(w,{content:e(m).isRemoteBrowsable?e(p)(`@F13B4:在浏览器中打开仓库主页`):e(p)(`@F13B4:无法识别该远程仓库的网页地址`),placement:`top`,effect:`dark`,"show-after":300},{default:d(()=>[e(m).isRemoteBrowsable?(s(),a(`a`,{key:0,href:e(m).remoteWebUrl,target:`_blank`,rel:`noopener noreferrer`,class:`remote-repo-link`,"aria-label":e(p)(`@F13B4:在浏览器中打开仓库主页`),onClick:_[1]||=f(()=>{},[`stop`])},[i(C,{"icon-class":`remote-repo`,"class-name":`remote-repo-icon`})],8,y)):(s(),a(`span`,{key:1,class:`remote-repo-link remote-repo-link--disabled`,"aria-label":e(p)(`@F13B4:无法识别该远程仓库的网页地址`)},[i(C,{"icon-class":`remote-repo`,"class-name":`remote-repo-icon`})],8,b))]),_:1},8,[`content`]),i(w,{content:e(p)(`@F13B4:复制仓库地址`),placement:`top`,effect:`dark`,"show-after":300},{default:d(()=>[o(`span`,{class:`repo-url clickable`,onClick:_[2]||=t=>e(m).copyRemoteUrl()},c(e(m).remoteUrl),1)]),_:1},8,[`content`])],64)):(s(),a(`span`,x,c(e(p)(`@F13B4:未配置远程仓库`)),1))])}}}),[[`__scopeId`,`data-v-48cb7d10`]]);export{S as default};
1
+ import"./rolldown-runtime-BM3Ffeng.js";import{Cr as e,Fn as t,G as n,Kt as r,Nn as i,On as a,Tn as o,Yn as s,Yr as c,bn as l,on as u,or as d,yn as f}from"./element-plus-H7kW-grr.js";import{n as p,t as m}from"./_plugin-vue_export-helper-BaSe6lmR.js";import{t as h}from"./SvgIcon-BpKq_phu.js";import{E as g,w as _}from"./index-BeNCRYqM.js";var v={class:`remote-wrapper`},y=[`href`,`aria-label`],b=[`aria-label`],x={key:1,class:`repo-url repo-url--empty`},S=m(t({__name:`RemoteRepoCard`,setup(t){let m=_();return(t,_)=>{let S=u,C=h,w=n;return s(),a(`div`,v,[i(g,{size:`small`,tooltip:e(p)(`@F13B4:管理远程仓库`),onClick:_[0]||=t=>e(m).isRemoteManagerVisible=!0},{default:d(()=>[i(S,null,{default:d(()=>[i(e(r))]),_:1})]),_:1},8,[`tooltip`]),e(m).remoteUrl?(s(),a(l,{key:0},[i(w,{content:e(m).isRemoteBrowsable?e(p)(`@F13B4:在浏览器中打开仓库主页`):e(p)(`@F13B4:无法识别该远程仓库的网页地址`),placement:`top`,effect:`dark`,"show-after":300},{default:d(()=>[e(m).isRemoteBrowsable?(s(),a(`a`,{key:0,href:e(m).remoteWebUrl,target:`_blank`,rel:`noopener noreferrer`,class:`remote-repo-link`,"aria-label":e(p)(`@F13B4:在浏览器中打开仓库主页`),onClick:_[1]||=f(()=>{},[`stop`])},[i(C,{"icon-class":`remote-repo`,"class-name":`remote-repo-icon`})],8,y)):(s(),a(`span`,{key:1,class:`remote-repo-link remote-repo-link--disabled`,"aria-label":e(p)(`@F13B4:无法识别该远程仓库的网页地址`)},[i(C,{"icon-class":`remote-repo`,"class-name":`remote-repo-icon`})],8,b))]),_:1},8,[`content`]),i(w,{content:e(p)(`@F13B4:复制仓库地址`),placement:`top`,effect:`dark`,"show-after":300},{default:d(()=>[o(`span`,{class:`repo-url clickable`,onClick:_[2]||=t=>e(m).copyRemoteUrl()},c(e(m).remoteUrl),1)]),_:1},8,[`content`])],64)):(s(),a(`span`,x,c(e(p)(`@F13B4:未配置远程仓库`)),1))])}}}),[[`__scopeId`,`data-v-48cb7d10`]]);export{S as default};
@@ -1,3 +1,3 @@
1
- import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{Cr as t,Dn as n,Fn as r,G as i,Gn as a,Hn as o,Kr as s,M as c,Mn as l,Nn as u,On as d,Tn as f,U as ee,Wr as p,Yn as m,Yr as h,Zn as g,_n as _,_r as v,bn as y,gn as te,i as ne,ir as b,jn as re,or as x,qn as ie,sr as S,vn as ae,vr as oe,wn as C}from"./element-plus-H7kW-grr.js";import{n as w,t as T}from"./_plugin-vue_export-helper-BaSe6lmR.js";import{t as se}from"./configStore-CyAQ0a-U.js";import{gt as E}from"./monaco-Dje8Rg13.js";import{a as ce,c as le,i as ue,l as de,n as fe,o as pe,r as me,s as he,t as ge}from"./vue-flow-BfBE1dKN.js";import{b as _e,v as ve}from"./index-SjRTI8Of.js";import{t as D}from"./dagre-DbCZu0j9.js";var ye=e(D(),1),be={class:`source-map-view`},xe={class:`sm-toolbar`},Se={class:`sm-toolbar-left`},Ce={class:`sm-title`},we={class:`sm-toolbar-center`},Te=[`placeholder`,`disabled`],Ee=[`disabled`],De={class:`sm-toolbar-right`},Oe=[`aria-label`],ke={class:`sm-body`},Ae={class:`sm-panel-header sm-panel-header--tabs`},je={key:0,class:`sm-badge`},Me={class:`sm-panel-body sm-file-tree`},Ne=[`onClick`],Pe={key:1,class:`sm-tree-arrow-spacer`},Fe={key:2,class:`sm-tree-icon mit-icon`,"aria-hidden":`true`},Ie=[`xlink:href`],Le={key:3,class:`sm-tree-icon mit-icon`,"aria-hidden":`true`},Re=[`xlink:href`],ze=[`title`],Be={key:1,class:`sm-tree-empty`},Ve={class:`sm-panel-body sm-outline-body`},He={class:`sm-badge`,style:{"margin-left":`auto`}},Ue=[`onClick`],We=[`title`],Ge={key:0,class:`sm-outline-desc`},Ke={key:1,class:`sm-tree-empty`},qe={class:`sm-panel sm-panel-graph`},Je={key:0,class:`sm-project-info`},Ye={class:`sm-lang-badge`},Xe={class:`sm-summary-text`},Ze={class:`sm-graph-container`},Qe={class:`sm-layout-btn-wrap`},$e=[`disabled`],et=[`title`],tt={class:`sm-fn-label`},nt={key:0,class:`sm-fn-desc`},rt={key:0,class:`sm-graph-empty`},it={viewBox:`0 0 24 24`,width:`48`,height:`48`,fill:`none`,stroke:`currentColor`,"stroke-width":`1`,style:{opacity:`0.3`}},at={key:1,class:`sm-graph-loading`},ot={class:`sm-log-header`},st={key:0,class:`sm-log-indicator`},ct={class:`sm-log-body`,ref:`logBodyRef`},lt={key:0,class:`sm-empty`},ut={class:`sm-panel-header`},dt={key:0,class:`sm-badge sm-badge-amber`},ft={key:0,class:`sm-node-detail`},pt={class:`sm-node-name`},mt={class:`sm-node-file`},ht={key:0},gt={key:0,class:`sm-node-desc`},_t={class:`sm-panel-body sm-source-body`},vt={key:0,class:`sm-source-overlay`},yt={key:1,class:`sm-source-overlay sm-source-placeholder`},bt={class:`sm-gitnexus-dialog`},xt={class:`sm-gitnexus-intro`},St={class:`sm-gitnexus-h`},Ct={class:`sm-gitnexus-cmd`},wt={class:`sm-gitnexus-h`},Tt={class:`sm-gitnexus-tip`},Et={class:`sm-gitnexus-cmd`},Dt={class:`sm-gitnexus-h`},Ot={class:`sm-gitnexus-cmd`},kt={class:`sm-gitnexus-cmd`},At={class:`sm-gitnexus-tip sm-gitnexus-tip--windows`},jt={class:`sm-gitnexus-h`},Mt={class:`sm-gitnexus-tip`},Nt={class:`sm-gitnexus-cmd`},Pt={class:`sm-gitnexus-h`},Ft={class:`sm-gitnexus-cmd`},It={viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,style:{"vertical-align":`-2px`,"margin-right":`4px`}},Lt=`https://github.com/abhigyanpatwari/GitNexus`,O=T(r({__name:`SourceMapView`,setup(e){let{theme:r}=ve(),T=se(),D=v(T.currentDirectory||``),O=v(`idle`),k=v([]),Rt=0,A=v(null),j=v(null),M=v(`files`),N=v(``),P=v(``),F=v(!1),zt=v([]),I=v(new Set),L=v({files:!0,graph:!0,source:!0}),R=v(!1),z=v(!1);function Bt(){window.open(Lt,`_blank`,`noopener,noreferrer`)}async function B(e){try{if(navigator.clipboard?.writeText)await navigator.clipboard.writeText(e);else{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select(),document.execCommand(`copy`),document.body.removeChild(t)}ne.success(w(`@SRCMAP:已复制到剪贴板`))}catch{ne.warning(w(`@SRCMAP:复制失败,请手动选择`))}}let V=v(220),H=v(360),U=v(140),W=null,G=0,Vt=0,K=0;function q(e,t){W=e,G=t.clientX,Vt=t.clientY,K=e===`files`?V.value:e===`source`?H.value:U.value,document.addEventListener(`mousemove`,Ht),document.addEventListener(`mouseup`,J),t.preventDefault()}function Ht(e){W&&(W===`files`?V.value=Math.max(120,Math.min(480,K+e.clientX-G)):W===`source`?H.value=Math.max(200,Math.min(700,K+G-e.clientX)):U.value=Math.max(60,Math.min(500,K+Vt-e.clientY)))}function J(){W=null,document.removeEventListener(`mousemove`,Ht),document.removeEventListener(`mouseup`,J)}let Y=v(null),X=oe(null),{fitView:Ut,setNodes:Wt,setEdges:Gt,getNodes:Kt,getEdges:qt,updateNodeInternals:Jt}=de(),Z=C(()=>O.value===`scanning`||O.value===`analyzing`),Yt=C(()=>r.value===`dark`?`#334155`:`#cbd5e1`),Q=C(()=>A.value?.nodes.find(e=>e.id===j.value)??null),Xt=C(()=>{if(!A.value)return[];let e=new Map;for(let t of A.value.nodes){let n=t.subsystem??`__default__`;if(!e.has(n)){let r=A.value.subsystems?.find(e=>e.name===n);e.set(n,{displayName:r?.displayName||t.subsystem||w(`@SRCMAP:默认`),color:t.subsystemColor||Qt[0],nodes:[]})}e.get(n).nodes.push(t)}return[...e.entries()].map(([,e])=>e)});function $(e,t=`info`){k.value.push({id:++Rt,message:e,type:t,timestamp:Date.now()}),k.value.length>200&&k.value.splice(0,k.value.length-200)}function Zt(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 Qt=[`#f59e0b`,`#3b82f6`,`#10b981`,`#8b5cf6`];function $t(e){return e.subsystemColor?e.subsystemColor:e.subsystemIndex===void 0?e.importance===`high`?`#f59e0b`:e.importance===`low`?`#94a3b8`:`#3b82f6`:Qt[e.subsystemIndex%Qt.length]}function en(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 tn(){!Y.value||X.value||(X.value=E.create(Y.value,{value:``,language:`plaintext`,theme:r.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}}))}b(r,e=>{X.value&&E.setTheme(e===`dark`?`vs-dark`:`vs`)});function nn(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,l=a*600+n*220-(o-1)*220/2,u=t*110,d=$t(e);i.push({id:e.id,type:`default`,position:{x:l,y:u},label:e.label,class:`sm-fn-node`,data:{...e,_accentColor:d},style:{"--node-accent":d}})}),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:ce.ArrowClosed}}))}}async function rn(){let e=Kt.value,t=qt.value;if(e.length!==0){R.value=!0;try{await o(),await new Promise(e=>requestAnimationFrame(()=>e())),Jt(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 ye.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)}),ye.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}Wt(e.map(e=>({...e,position:r.get(e.id)??e.position}))),await o(),Ut({padding:.18})}finally{R.value=!1}}}async function an(){if(!D.value.trim()){ne.warning(w(`@SRCMAP:请先输入项目路径`));return}if(!Z.value){k.value=[],A.value=null,j.value=null,N.value=``,P.value=``,Wt([]),Gt([]),O.value=`scanning`,$(w(`@SRCMAP:开始分析项目...`),`info`);try{let e=await fetch(`/api/code-analysis/analyze`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:D.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=``;O.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-BM3Ffeng.js";import{Cr as t,Dn as n,Fn as r,G as i,Gn as a,Hn as o,Kr as s,M as c,Mn as l,Nn as u,On as d,Tn as f,U as ee,Wr as p,Yn as m,Yr as h,Zn as g,_n as _,_r as v,bn as y,gn as te,i as ne,ir as b,jn as re,or as x,qn as ie,sr as S,vn as ae,vr as oe,wn as C}from"./element-plus-H7kW-grr.js";import{n as w,t as T}from"./_plugin-vue_export-helper-BaSe6lmR.js";import{t as se}from"./configStore-CyAQ0a-U.js";import{gt as E}from"./monaco-Dje8Rg13.js";import{a as ce,c as le,i as ue,l as de,n as fe,o as pe,r as me,s as he,t as ge}from"./vue-flow-BfBE1dKN.js";import{b as _e,v as ve}from"./index-BeNCRYqM.js";import{t as D}from"./dagre-DbCZu0j9.js";var ye=e(D(),1),be={class:`source-map-view`},xe={class:`sm-toolbar`},Se={class:`sm-toolbar-left`},Ce={class:`sm-title`},we={class:`sm-toolbar-center`},Te=[`placeholder`,`disabled`],Ee=[`disabled`],De={class:`sm-toolbar-right`},Oe=[`aria-label`],ke={class:`sm-body`},Ae={class:`sm-panel-header sm-panel-header--tabs`},je={key:0,class:`sm-badge`},Me={class:`sm-panel-body sm-file-tree`},Ne=[`onClick`],Pe={key:1,class:`sm-tree-arrow-spacer`},Fe={key:2,class:`sm-tree-icon mit-icon`,"aria-hidden":`true`},Ie=[`xlink:href`],Le={key:3,class:`sm-tree-icon mit-icon`,"aria-hidden":`true`},Re=[`xlink:href`],ze=[`title`],Be={key:1,class:`sm-tree-empty`},Ve={class:`sm-panel-body sm-outline-body`},He={class:`sm-badge`,style:{"margin-left":`auto`}},Ue=[`onClick`],We=[`title`],Ge={key:0,class:`sm-outline-desc`},Ke={key:1,class:`sm-tree-empty`},qe={class:`sm-panel sm-panel-graph`},Je={key:0,class:`sm-project-info`},Ye={class:`sm-lang-badge`},Xe={class:`sm-summary-text`},Ze={class:`sm-graph-container`},Qe={class:`sm-layout-btn-wrap`},$e=[`disabled`],et=[`title`],tt={class:`sm-fn-label`},nt={key:0,class:`sm-fn-desc`},rt={key:0,class:`sm-graph-empty`},it={viewBox:`0 0 24 24`,width:`48`,height:`48`,fill:`none`,stroke:`currentColor`,"stroke-width":`1`,style:{opacity:`0.3`}},at={key:1,class:`sm-graph-loading`},ot={class:`sm-log-header`},st={key:0,class:`sm-log-indicator`},ct={class:`sm-log-body`,ref:`logBodyRef`},lt={key:0,class:`sm-empty`},ut={class:`sm-panel-header`},dt={key:0,class:`sm-badge sm-badge-amber`},ft={key:0,class:`sm-node-detail`},pt={class:`sm-node-name`},mt={class:`sm-node-file`},ht={key:0},gt={key:0,class:`sm-node-desc`},_t={class:`sm-panel-body sm-source-body`},vt={key:0,class:`sm-source-overlay`},yt={key:1,class:`sm-source-overlay sm-source-placeholder`},bt={class:`sm-gitnexus-dialog`},xt={class:`sm-gitnexus-intro`},St={class:`sm-gitnexus-h`},Ct={class:`sm-gitnexus-cmd`},wt={class:`sm-gitnexus-h`},Tt={class:`sm-gitnexus-tip`},Et={class:`sm-gitnexus-cmd`},Dt={class:`sm-gitnexus-h`},Ot={class:`sm-gitnexus-cmd`},kt={class:`sm-gitnexus-cmd`},At={class:`sm-gitnexus-tip sm-gitnexus-tip--windows`},jt={class:`sm-gitnexus-h`},Mt={class:`sm-gitnexus-tip`},Nt={class:`sm-gitnexus-cmd`},Pt={class:`sm-gitnexus-h`},Ft={class:`sm-gitnexus-cmd`},It={viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,style:{"vertical-align":`-2px`,"margin-right":`4px`}},Lt=`https://github.com/abhigyanpatwari/GitNexus`,O=T(r({__name:`SourceMapView`,setup(e){let{theme:r}=ve(),T=se(),D=v(T.currentDirectory||``),O=v(`idle`),k=v([]),Rt=0,A=v(null),j=v(null),M=v(`files`),N=v(``),P=v(``),F=v(!1),zt=v([]),I=v(new Set),L=v({files:!0,graph:!0,source:!0}),R=v(!1),z=v(!1);function Bt(){window.open(Lt,`_blank`,`noopener,noreferrer`)}async function B(e){try{if(navigator.clipboard?.writeText)await navigator.clipboard.writeText(e);else{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select(),document.execCommand(`copy`),document.body.removeChild(t)}ne.success(w(`@SRCMAP:已复制到剪贴板`))}catch{ne.warning(w(`@SRCMAP:复制失败,请手动选择`))}}let V=v(220),H=v(360),U=v(140),W=null,G=0,Vt=0,K=0;function q(e,t){W=e,G=t.clientX,Vt=t.clientY,K=e===`files`?V.value:e===`source`?H.value:U.value,document.addEventListener(`mousemove`,Ht),document.addEventListener(`mouseup`,J),t.preventDefault()}function Ht(e){W&&(W===`files`?V.value=Math.max(120,Math.min(480,K+e.clientX-G)):W===`source`?H.value=Math.max(200,Math.min(700,K+G-e.clientX)):U.value=Math.max(60,Math.min(500,K+Vt-e.clientY)))}function J(){W=null,document.removeEventListener(`mousemove`,Ht),document.removeEventListener(`mouseup`,J)}let Y=v(null),X=oe(null),{fitView:Ut,setNodes:Wt,setEdges:Gt,getNodes:Kt,getEdges:qt,updateNodeInternals:Jt}=de(),Z=C(()=>O.value===`scanning`||O.value===`analyzing`),Yt=C(()=>r.value===`dark`?`#334155`:`#cbd5e1`),Q=C(()=>A.value?.nodes.find(e=>e.id===j.value)??null),Xt=C(()=>{if(!A.value)return[];let e=new Map;for(let t of A.value.nodes){let n=t.subsystem??`__default__`;if(!e.has(n)){let r=A.value.subsystems?.find(e=>e.name===n);e.set(n,{displayName:r?.displayName||t.subsystem||w(`@SRCMAP:默认`),color:t.subsystemColor||Qt[0],nodes:[]})}e.get(n).nodes.push(t)}return[...e.entries()].map(([,e])=>e)});function $(e,t=`info`){k.value.push({id:++Rt,message:e,type:t,timestamp:Date.now()}),k.value.length>200&&k.value.splice(0,k.value.length-200)}function Zt(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 Qt=[`#f59e0b`,`#3b82f6`,`#10b981`,`#8b5cf6`];function $t(e){return e.subsystemColor?e.subsystemColor:e.subsystemIndex===void 0?e.importance===`high`?`#f59e0b`:e.importance===`low`?`#94a3b8`:`#3b82f6`:Qt[e.subsystemIndex%Qt.length]}function en(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 tn(){!Y.value||X.value||(X.value=E.create(Y.value,{value:``,language:`plaintext`,theme:r.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}}))}b(r,e=>{X.value&&E.setTheme(e===`dark`?`vs-dark`:`vs`)});function nn(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,l=a*600+n*220-(o-1)*220/2,u=t*110,d=$t(e);i.push({id:e.id,type:`default`,position:{x:l,y:u},label:e.label,class:`sm-fn-node`,data:{...e,_accentColor:d},style:{"--node-accent":d}})}),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:ce.ArrowClosed}}))}}async function rn(){let e=Kt.value,t=qt.value;if(e.length!==0){R.value=!0;try{await o(),await new Promise(e=>requestAnimationFrame(()=>e())),Jt(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 ye.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)}),ye.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}Wt(e.map(e=>({...e,position:r.get(e.id)??e.position}))),await o(),Ut({padding:.18})}finally{R.value=!1}}}async function an(){if(!D.value.trim()){ne.warning(w(`@SRCMAP:请先输入项目路径`));return}if(!Z.value){k.value=[],A.value=null,j.value=null,N.value=``,P.value=``,Wt([]),Gt([]),O.value=`scanning`,$(w(`@SRCMAP:开始分析项目...`),`info`);try{let e=await fetch(`/api/code-analysis/analyze`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:D.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=``;O.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);on(i,t)}catch{}}i=``,a=[]}}}catch(e){$(`${w(`@SRCMAP:分析失败`)}: ${e.message}`,`error`),O.value=`error`}}}function on(e,t){if(e===`log`)$(t.message,t.type||`info`);else if(e===`files`)zt.value=Zt(t.files||[]),zt.value.forEach(e=>{e.kind===`dir`&&I.value.add(e.path)});else if(e===`result`){A.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}=nn(A.value.nodes,A.value.edges);Wt(e),Gt(n),o(()=>rn())}else e===`done`&&(t.error?($(`${w(`@SRCMAP:分析失败`)}: ${t.error}`,`error`),O.value=`error`):O.value=`done`)}async function sn(e){if(!(!e||F.value)&&P.value!==e){F.value=!0,P.value=e,N.value=``;try{let t=await(await fetch(`/api/code-analysis/file-content?path=${encodeURIComponent(D.value)}&file=${encodeURIComponent(e)}`)).json();if(t.error)throw Error(t.error);N.value=t.content||``}catch(e){N.value=`// ${w(`@SRCMAP:加载失败`)}: ${e.message}`}finally{F.value=!1}}}function cn(e){let t=e.node.data;j.value=t.id,t.file&&sn(t.file)}function ln(e){I.value.has(e)?I.value.delete(e):I.value.add(e)}let un=C(()=>{let e=[];function t(n,r){for(let i of n){let n=I.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(zt.value,0),e});return b(()=>T.currentDirectory,e=>{e&&!D.value&&(D.value=e)}),b([N,P],([e,t])=>{let n=X.value;if(!n)return;let r=en(t||``),i=n.getModel(),a=E.createModel(e||``,r);n.setModel(a),i?.dispose(),n.setScrollPosition({scrollTop:0,scrollLeft:0})}),ie(()=>{tn(),!D.value&&T.currentDirectory&&(D.value=T.currentDirectory)}),a(()=>{X.value?.getModel()?.dispose(),X.value?.dispose(),J()}),(e,a)=>{let o=i,v=ee;return m(),d(`div`,be,[f(`div`,xe,[f(`div`,Se,[a[18]||=f(`svg`,{viewBox:`0 0 24 24`,width:`18`,height:`18`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,class:`sm-icon-map`},[f(`polygon`,{points:`3 6 9 3 15 6 21 3 21 18 15 21 9 18 3 21`}),f(`line`,{x1:`9`,y1:`3`,x2:`9`,y2:`18`}),f(`line`,{x1:`15`,y1:`6`,x2:`15`,y2:`21`})],-1),f(`span`,Ce,h(t(w)(`@SRCMAP:源码地图`)),1)]),f(`div`,we,[S(f(`input`,{"onUpdate:modelValue":a[0]||=e=>D.value=e,class:`sm-path-input`,placeholder:t(w)(`@SRCMAP:输入项目目录路径`),disabled:Z.value,onKeydown:ae(an,[`enter`])},null,40,Te),[[te,D.value]]),f(`button`,{class:`sm-btn sm-btn-primary`,disabled:Z.value,onClick:an},[Z.value?(m(),d(y,{key:0},[a[19]||=f(`span`,{class:`sm-spinner`},null,-1),l(` `+h(t(w)(`@SRCMAP:分析中...`)),1)],64)):(m(),d(y,{key:1},[l(h(O.value===`done`?t(w)(`@SRCMAP:重新分析`):t(w)(`@SRCMAP:开始分析`)),1)],64))],8,Ee)]),f(`div`,De,[u(o,{content:t(w)(`@SRCMAP:推荐安装 GitNexus - 更强的代码知识图谱 MCP`),placement:`bottom`},{default:x(()=>[f(`button`,{class:`sm-panel-btn sm-gitnexus-btn`,"aria-label":t(w)(`@SRCMAP:推荐安装 GitNexus`),onClick:a[1]||=e=>z.value=!0},a[20]||=[f(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[f(`circle`,{cx:`6`,cy:`6`,r:`2.5`}),f(`circle`,{cx:`18`,cy:`6`,r:`2.5`}),f(`circle`,{cx:`6`,cy:`18`,r:`2.5`}),f(`circle`,{cx:`18`,cy:`18`,r:`2.5`}),f(`circle`,{cx:`12`,cy:`12`,r:`2.5`}),f(`line`,{x1:`8`,y1:`7.5`,x2:`10.5`,y2:`10.5`}),f(`line`,{x1:`16`,y1:`7.5`,x2:`13.5`,y2:`10.5`}),f(`line`,{x1:`8`,y1:`16.5`,x2:`10.5`,y2:`13.5`}),f(`line`,{x1:`16`,y1:`16.5`,x2:`13.5`,y2:`13.5`})],-1)],8,Oe)]),_:1},8,[`content`]),u(o,{content:t(w)(`@SRCMAP:文件列表`),placement:`bottom`},{default:x(()=>[f(`button`,{class:p([`sm-panel-btn`,{active:L.value.files}]),onClick:a[2]||=e=>L.value.files=!L.value.files},a[21]||=[f(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`},[f(`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`]),u(o,{content:t(w)(`@SRCMAP:调用图`),placement:`bottom`},{default:x(()=>[f(`button`,{class:p([`sm-panel-btn`,{active:L.value.graph}]),onClick:a[3]||=e=>L.value.graph=!L.value.graph},a[22]||=[f(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`},[f(`circle`,{cx:`12`,cy:`12`,r:`3`}),f(`circle`,{cx:`3`,cy:`6`,r:`2`}),f(`circle`,{cx:`21`,cy:`6`,r:`2`}),f(`circle`,{cx:`3`,cy:`18`,r:`2`}),f(`circle`,{cx:`21`,cy:`18`,r:`2`}),f(`line`,{x1:`5`,y1:`6`,x2:`9`,y2:`11`}),f(`line`,{x1:`19`,y1:`6`,x2:`15`,y2:`11`}),f(`line`,{x1:`5`,y1:`18`,x2:`9`,y2:`13`}),f(`line`,{x1:`19`,y1:`18`,x2:`15`,y2:`13`})],-1)],2)]),_:1},8,[`content`]),u(o,{content:t(w)(`@SRCMAP:源码面板`),placement:`bottom`},{default:x(()=>[f(`button`,{class:p([`sm-panel-btn`,{active:L.value.source}]),onClick:a[4]||=e=>L.value.source=!L.value.source},a[23]||=[f(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`},[f(`polyline`,{points:`16 18 22 12 16 6`}),f(`polyline`,{points:`8 6 2 12 8 18`})],-1)],2)]),_:1},8,[`content`])])]),f(`div`,ke,[S(f(`div`,{class:`sm-panel sm-panel-files`,style:s({width:V.value+`px`})},[f(`div`,Ae,[f(`button`,{class:p([`sm-tab-btn`,{active:M.value===`files`}]),onClick:a[5]||=e=>M.value=`files`},[a[24]||=f(`svg`,{viewBox:`0 0 24 24`,width:`12`,height:`12`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`},[f(`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),l(` `+h(t(w)(`@SRCMAP:文件列表`))+` `,1),A.value?(m(),d(`span`,je,h(A.value.allFiles.length),1)):n(``,!0)],2),f(`button`,{class:p([`sm-tab-btn`,{active:M.value===`outline`}]),onClick:a[6]||=e=>M.value=`outline`},[a[25]||=re(`<svg viewBox="0 0 24 24" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.8" data-v-d4696b78><line x1="8" y1="6" x2="21" y2="6" data-v-d4696b78></line><line x1="8" y1="12" x2="21" y2="12" data-v-d4696b78></line><line x1="8" y1="18" x2="21" y2="18" data-v-d4696b78></line><line x1="3" y1="6" x2="3.01" y2="6" data-v-d4696b78></line><line x1="3" y1="12" x2="3.01" y2="12" data-v-d4696b78></line><line x1="3" y1="18" x2="3.01" y2="18" data-v-d4696b78></line></svg>`,1),l(` `+h(t(w)(`@SRCMAP:大纲`)),1)],2)]),S(f(`div`,Me,[un.value.length>0?(m(!0),d(y,{key:0},g(un.value,e=>(m(),d(`div`,{key:e.path,class:p([`sm-tree-node`,{"sm-tree-node--dir":e.kind===`dir`,"sm-tree-node--active":e.kind===`file`&&P.value===e.path}]),style:s({paddingLeft:10+e.depth*14+`px`}),onClick:t=>e.kind===`dir`?ln(e.path):sn(e.path)},[e.kind===`dir`?(m(),d(`span`,{key:0,class:p([`sm-tree-arrow`,{expanded:e.expanded}])},a[26]||=[f(`svg`,{viewBox:`0 0 24 24`,width:`10`,height:`10`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[f(`polyline`,{points:`9 18 15 12 9 6`})],-1)],2)):(m(),d(`span`,Pe)),e.kind===`dir`?(m(),d(`svg`,Fe,[f(`use`,{"xlink:href":`#${t(_e)(e.name)||`icon-folder`}`},null,8,Ie)])):(m(),d(`svg`,Le,[f(`use`,{"xlink:href":`#${t(_e)(e.name)}`},null,8,Re)])),f(`span`,{class:`sm-tree-name`,title:e.path},h(e.name),9,ze)],14,Ne))),128)):(m(),d(`div`,Be,h(t(w)(`@SRCMAP:暂无文件,请先开始分析`)),1))],512),[[_,M.value===`files`]]),S(f(`div`,Ve,[Xt.value.length>0?(m(!0),d(y,{key:0},g(Xt.value,e=>(m(),d(`div`,{key:e.displayName,class:`sm-outline-group`},[f(`div`,{class:`sm-outline-group-header`,style:s({color:e.color})},[a[27]||=f(`svg`,{viewBox:`0 0 24 24`,width:`8`,height:`8`,fill:`currentColor`},[f(`circle`,{cx:`12`,cy:`12`,r:`6`})],-1),l(` `+h(e.displayName)+` `,1),f(`span`,He,h(e.nodes.length),1)],4),(m(!0),d(y,null,g(e.nodes,t=>(m(),d(`div`,{key:t.id,class:p([`sm-outline-node`,{"sm-outline-node--active":j.value===t.id}]),onClick:e=>{j.value=t.id,t.file&&sn(t.file)}},[f(`span`,{class:`sm-outline-dot`,style:s({background:e.color})},null,4),f(`span`,{class:`sm-outline-label`,title:t.file||t.label},h(t.label),9,We),t.description?(m(),d(`span`,Ge,h(t.description.length>18?t.description.slice(0,18)+`…`:t.description),1)):n(``,!0)],10,Ue))),128))]))),128)):(m(),d(`div`,Ke,h(t(w)(`@SRCMAP:暂无分析结果`)),1))],512),[[_,M.value===`outline`]])],4),[[_,L.value.files]]),S(f(`div`,{class:`sm-resizer sm-resizer-v`,onMousedown:a[7]||=e=>q(`files`,e)},null,544),[[_,L.value.files&&L.value.graph]]),S(f(`div`,qe,[A.value?(m(),d(`div`,Je,[f(`span`,Ye,h(A.value.language),1),A.value.subsystems&&A.value.subsystems.length>1?(m(!0),d(y,{key:0},g(A.value.subsystems,e=>(m(),d(`span`,{key:e.name,class:`sm-subsystem-tag`,style:s({borderColor:e.color,color:e.color})},`● `+h(e.displayName||e.name),5))),128)):(m(!0),d(y,{key:1},g(A.value.techStack.slice(0,4),e=>(m(),d(`span`,{key:e,class:`sm-tech-tag`},h(e),1))),128)),f(`span`,Xe,h(A.value.summary),1)])):n(``,!0),f(`div`,Ze,[f(`div`,Qe,[f(`button`,{class:`sm-layout-btn`,disabled:R.value||!A.value,onClick:rn},[a[28]||=re(`<svg viewBox="0 0 24 24" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.8" data-v-d4696b78><rect x="3" y="3" width="7" height="7" rx="1" data-v-d4696b78></rect><rect x="14" y="3" width="7" height="7" rx="1" data-v-d4696b78></rect><rect x="3" y="14" width="7" height="7" rx="1" data-v-d4696b78></rect><rect x="14" y="14" width="7" height="7" rx="1" data-v-d4696b78></rect></svg>`,1),l(` `+h(R.value?t(w)(`@SRCMAP:布局中...`):t(w)(`@SRCMAP:优化布局`)),1)],8,$e)]),u(t(he),{class:`sm-vue-flow`,"default-viewport":{zoom:1},"min-zoom":.2,"max-zoom":4,"fit-view-on-init":``,onNodeClick:cn},{"node-default":x(({data:e,label:r})=>[u(t(le),{type:`target`,position:t(pe).Top},null,8,[`position`]),f(`div`,{class:`sm-fn-inner`,title:`${r}${e?.description?`
3
3
  `+e.description:``}`},[f(`div`,tt,h(r),1),e?.description?(m(),d(`div`,nt,h(e.description.length>22?e.description.slice(0,22)+`…`:e.description),1)):n(``,!0)],8,et),u(t(le),{type:`source`,position:t(pe).Bottom},null,8,[`position`])]),default:x(()=>[u(t(ue),{variant:t(me).Dots,gap:20,size:1,"pattern-color":Yt.value},null,8,[`variant`,`pattern-color`]),u(t(fe)),u(t(ge),{"node-color":`#3b82f6`,"mask-color":t(r)===`dark`?`rgba(0,0,0,0.55)`:`rgba(15,23,42,0.06)`},null,8,[`mask-color`])]),_:1}),!A.value&&!Z.value?(m(),d(`div`,rt,[(m(),d(`svg`,it,a[29]||=[f(`polygon`,{points:`3 6 9 3 15 6 21 3 21 18 15 21 9 18 3 21`},null,-1),f(`line`,{x1:`9`,y1:`3`,x2:`9`,y2:`18`},null,-1),f(`line`,{x1:`15`,y1:`6`,x2:`15`,y2:`21`},null,-1)])),f(`p`,null,h(t(w)(`@SRCMAP:输入项目路径后点击开始分析`)),1)])):n(``,!0),Z.value&&!A.value?(m(),d(`div`,at,[a[30]||=f(`span`,{class:`sm-spinner sm-spinner-lg`},null,-1),f(`p`,null,h(t(w)(`@SRCMAP:AI 正在分析项目结构...`)),1)])):n(``,!0)]),f(`div`,{class:`sm-resizer sm-resizer-h`,onMousedown:a[8]||=e=>q(`log`,e)},null,32),f(`div`,{class:`sm-log-panel`,style:s({height:U.value+`px`})},[f(`div`,ot,[a[31]||=f(`svg`,{viewBox:`0 0 24 24`,width:`12`,height:`12`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`},[f(`polyline`,{points:`4 17 10 11 4 5`}),f(`line`,{x1:`12`,y1:`19`,x2:`20`,y2:`19`})],-1),l(` `+h(t(w)(`@SRCMAP:Agent 日志`))+` `,1),Z.value?(m(),d(`span`,st)):n(``,!0)]),f(`div`,ct,[(m(!0),d(y,null,g(k.value.slice(-50),e=>(m(),d(`div`,{key:e.id,class:p([`sm-log-entry`,`sm-log-entry--${e.type}`])},h(e.message),3))),128)),k.value.length===0?(m(),d(`div`,lt,h(t(w)(`@SRCMAP:等待开始分析`)),1)):n(``,!0)],512)],4)],512),[[_,L.value.graph]]),S(f(`div`,{class:`sm-resizer sm-resizer-v`,onMousedown:a[9]||=e=>q(`source`,e)},null,544),[[_,L.value.graph&&L.value.source]]),S(f(`div`,{class:`sm-panel sm-panel-source`,style:s({width:H.value+`px`})},[f(`div`,ut,[a[32]||=f(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`},[f(`polyline`,{points:`16 18 22 12 16 6`}),f(`polyline`,{points:`8 6 2 12 8 18`})],-1),l(` `+h(P.value||t(w)(`@SRCMAP:源码面板`))+` `,1),Q.value?(m(),d(`span`,dt,h(Q.value.label),1)):n(``,!0)]),Q.value?(m(),d(`div`,ft,[f(`div`,pt,h(Q.value.label),1),f(`div`,mt,[l(h(Q.value.file),1),Q.value.line?(m(),d(`span`,ht,` :`+h(Q.value.line),1)):n(``,!0)]),Q.value.description?(m(),d(`div`,gt,h(Q.value.description),1)):n(``,!0)])):n(``,!0),f(`div`,_t,[F.value?(m(),d(`div`,vt,a[33]||=[f(`span`,{class:`sm-spinner`},null,-1)])):n(``,!0),!F.value&&!N.value?(m(),d(`div`,yt,h(t(w)(`@SRCMAP:点击调用图中的节点查看源码`)),1)):n(``,!0),f(`div`,{ref_key:`monacoContainerRef`,ref:Y,class:`sm-monaco-container`},null,512)])],4),[[_,L.value.source]])]),u(t(c),{modelValue:z.value,"onUpdate:modelValue":a[17]||=e=>z.value=e,title:t(w)(`@SRCMAP:推荐安装 GitNexus`),width:`640px`,"close-on-click-modal":!0,"show-close":!0,"align-center":``,"destroy-on-close":``},{footer:x(()=>[u(v,{onClick:a[16]||=e=>z.value=!1},{default:x(()=>[l(h(t(w)(`@SRCMAP:关闭`)),1)]),_:1}),u(v,{type:`primary`,onClick:Bt},{default:x(()=>[(m(),d(`svg`,It,a[40]||=[f(`path`,{d:`M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22`},null,-1)])),l(` `+h(t(w)(`@SRCMAP:查看 GitHub 仓库`)),1)]),_:1})]),default:x(()=>[f(`div`,bt,[f(`p`,xt,h(t(w)(`@SRCMAP:GitNexus 是把代码库索引为知识图谱的开源工具,通过 MCP 协议喂给 Claude Code / Cursor 等 AI 助手,让它们在动手改代码前就能完整感知项目结构与调用链。`)),1),f(`h4`,St,h(t(w)(`@SRCMAP:安装 GitNexus`)),1),f(`div`,Ct,[a[34]||=f(`code`,null,`npm install -g gitnexus`,-1),u(v,{size:`small`,type:`primary`,plain:``,onClick:a[10]||=e=>B(`npm install -g gitnexus`)},{default:x(()=>[l(h(t(w)(`@SRCMAP:复制`)),1)]),_:1})]),f(`h4`,wt,h(t(w)(`@SRCMAP:一键配置编辑器 MCP`)),1),f(`p`,Tt,h(t(w)(`@SRCMAP:自动检测本机已装的 Cursor / Claude Code / OpenCode / Codex / Windsurf 等编辑器,写入 MCP 配置并安装 Skill。`)),1),f(`div`,Et,[a[35]||=f(`code`,null,`gitnexus setup`,-1),u(v,{size:`small`,type:`primary`,plain:``,onClick:a[11]||=e=>B(`gitnexus setup`)},{default:x(()=>[l(h(t(w)(`@SRCMAP:复制`)),1)]),_:1})]),f(`h4`,Dt,h(t(w)(`@SRCMAP:仅配置 Claude Code`)),1),f(`div`,Ot,[a[36]||=f(`code`,null,`claude mcp add gitnexus -- gitnexus mcp`,-1),u(v,{size:`small`,type:`primary`,plain:``,onClick:a[12]||=e=>B(`claude mcp add gitnexus -- gitnexus mcp`)},{default:x(()=>[l(h(t(w)(`@SRCMAP:复制`)),1)]),_:1})]),f(`div`,kt,[a[37]||=f(`code`,null,`claude mcp add gitnexus -- cmd /c gitnexus mcp`,-1),u(v,{size:`small`,type:`primary`,plain:``,onClick:a[13]||=e=>B(`claude mcp add gitnexus -- cmd /c gitnexus mcp`)},{default:x(()=>[l(h(t(w)(`@SRCMAP:复制`)),1)]),_:1})]),f(`p`,At,h(t(w)(`@SRCMAP:第二行为 Windows 专用。配置后需完全退出再重启 Claude Code,MCP server 才生效。`)),1),f(`h4`,jt,h(t(w)(`@SRCMAP:索引当前项目`)),1),f(`p`,Mt,h(t(w)(`@SRCMAP:推荐用完整索引 —— 含语义搜索与每个功能社区的 SKILL.md。`)),1),f(`div`,Nt,[a[38]||=f(`code`,null,`gitnexus analyze --embeddings --skills --verbose`,-1),u(v,{size:`small`,type:`primary`,plain:``,onClick:a[14]||=e=>B(`gitnexus analyze --embeddings --skills --verbose`)},{default:x(()=>[l(h(t(w)(`@SRCMAP:复制`)),1)]),_:1})]),f(`h4`,Pt,h(t(w)(`@SRCMAP:验证安装`)),1),f(`div`,Ft,[a[39]||=f(`code`,null,`gitnexus --version`,-1),u(v,{size:`small`,type:`primary`,plain:``,onClick:a[15]||=e=>B(`gitnexus --version`)},{default:x(()=>[l(h(t(w)(`@SRCMAP:复制`)),1)]),_:1})])])]),_:1},8,[`modelValue`,`title`])])}}}),[[`__scopeId`,`data-v-d4696b78`]]);export{O as default};
@@ -1,4 +1,4 @@
1
- import"./rolldown-runtime-BM3Ffeng.js";import{$t as e,B as t,Bt as n,C as r,Cr as i,Ct as a,Dn as o,E as s,En as c,F as l,Fn as u,Gn as d,Hn as f,I as p,It as m,J as h,Kr as g,Lt as _,M as v,Mn as y,Nn as b,On as x,Ot as S,R as C,S as w,Sn as T,St as E,T as D,Tn as O,Tt as k,U as ee,Ut as A,V as j,Wr as M,X as te,Y as ne,Yn as N,Yr as P,Z as re,Zn as F,_n as ie,_r as I,_t as ae,a as oe,at as se,b as ce,bn as L,c as le,ct as R,d as ue,dt as z,en as de,er as fe,et as pe,f as me,fn as he,gn as ge,h as _e,hn as ve,hr as ye,i as B,ir as V,it as be,j as xe,jn as H,jt as Se,kt as U,lt as Ce,mn as we,nn as Te,on as Ee,or as W,ot as G,pt as De,q as Oe,qn as ke,r as Ae,rt as je,sr as K,vn as q,w as Me,wn as J,x as Ne,y as Pe,yn as Y,yt as Fe,zt as Ie}from"./element-plus-H7kW-grr.js";import{a as Le,i as X,n as Re}from"./vendor-Dwln8rZH.js";import{n as Z,t as ze}from"./_plugin-vue_export-helper-BaSe6lmR.js";import{n as Q,t as Be}from"./toolsStore-BcJP9HmK.js";import{t as Ve}from"./SvgIcon-BpKq_phu.js";import{t as He}from"./configStore-CyAQ0a-U.js";import{t as Ue}from"./CommonDialog-OCekbVQM.js";import{a as We}from"./index-SjRTI8Of.js";var Ge={class:`ai-split-direct-pane`},Ke={key:0,class:`ai-split-status`},qe={key:1,class:`ai-split-status`},Je={key:1},Ye={key:2},Xe={key:2,class:`ai-split-status is-error`},Ze={key:3,class:`ai-split-idle`},$={class:`ai-split-idle__title`},Qe={class:`ai-split-idle__desc`},$e={class:`ai-split-prompt-actions`},et={key:0,class:`ai-split-prompt-editor`},tt={class:`ai-split-prompt-editor__actions`},nt={key:1,class:`ai-split-pre`},rt={class:`ai-split-subhead`},it={class:`ai-split-user-actions`},at={key:3,class:`ai-split-pre`},ot={key:0,class:`ai-split-tab-count`},st={class:`ai-split-pre ai-split-pre--think`},ct={key:0,class:`ai-split-tab-count`},lt={class:`ai-split-parse-error__detail`},ut={class:`ai-split-parse-error__hint`},dt={class:`ai-split-parse-error__actions`},ft={key:1,class:`ai-split-raw-toolbar`},pt={class:`ai-split-raw-tip`},mt={key:0,class:`ai-split-tab-count`},ht={key:0,class:`ai-split-empty`},gt={key:1,class:`ai-split-list`},_t={class:`ai-split-list__no`},vt={class:`ai-split-list__body`},yt={class:`ai-split-list__title`},bt={class:`ai-split-list__desc`},xt={key:5,class:`ai-split-footer-hint`},St={class:`ai-split-direct-footer`},Ct=ze(u({__name:`AISplitDirectPane`,props:{title:{},desc:{},taskId:{},promptId:{}},emits:[`confirm`],setup(e,{emit:t}){let n=e,r=t,a=I(`idle`),s=I(`prompt`),l=I(``),u=I(``),d=I(``),f=I(``),p=I(``),m=I([]),g=I(``),_=I(``),v=I(``),S=null,C=0,w=J(()=>d.value.length),T=J(()=>f.value.length),E=J(()=>a.value===`result`&&m.value.length>0),D=J(()=>a.value===`running`),k=J(()=>a.value===`preview`),A=I(``),j=I(!1);function M(){S&&=(S.abort(),null)}function te(){M(),a.value=`idle`,s.value=`prompt`,l.value=``,u.value=``,A.value=``,d.value=``,f.value=``,p.value=``,m.value=[],g.value=``,_.value=``,v.value=``}async function ne(){if(!n.title.trim()){B.warning(Z(`@WORKBENCH:请先填写任务标题`));return}te(),a.value=`preview`,s.value=`prompt`,j.value=!0;try{let e=await fetch(`/api/workbench/tasks/ai-split-preview`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({title:n.title,desc:n.desc,taskId:n.taskId||``,promptId:n.promptId||``})}).then(e=>e.json());if(!e.success){a.value=`error`,g.value=e.error||Z(`@WORKBENCH:生成预览失败`);return}l.value=e.system||``,u.value=e.user||``,A.value=e.user||``}catch(e){a.value=`error`,g.value=e?.message||String(e)}finally{j.value=!1}}async function re(){if(!A.value.trim()){B.warning(Z(`@WORKBENCH:提示词不能为空`));return}let e=++C;M(),d.value=``,f.value=``,p.value=``,m.value=[],_.value=``,v.value=``,g.value=``,a.value=`running`,s.value=`thinking`,u.value=A.value,S=new AbortController;let t=S;try{let r=await fetch(`/api/workbench/tasks/ai-split-subtasks`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify({title:n.title,desc:n.desc,taskId:n.taskId||``,promptId:n.promptId||``,customUserBlock:A.value}),signal:t.signal});if(e!==C)return;if(!r.ok||!r.body){let e=await r.text().catch(()=>``);throw Error(e||`HTTP ${r.status}`)}let i=r.body.getReader(),o=new TextDecoder(`utf-8`),c=``,u=null;for(;;){let{value:t,done:n}=await i.read();if(e!==C)return;if(n)break;c+=o.decode(t,{stream:!0});let r=c.split(`
1
+ import"./rolldown-runtime-BM3Ffeng.js";import{$t as e,B as t,Bt as n,C as r,Cr as i,Ct as a,Dn as o,E as s,En as c,F as l,Fn as u,Gn as d,Hn as f,I as p,It as m,J as h,Kr as g,Lt as _,M as v,Mn as y,Nn as b,On as x,Ot as S,R as C,S as w,Sn as T,St as E,T as D,Tn as O,Tt as k,U as ee,Ut as A,V as j,Wr as M,X as te,Y as ne,Yn as N,Yr as P,Z as re,Zn as F,_n as ie,_r as I,_t as ae,a as oe,at as se,b as ce,bn as L,c as le,ct as R,d as ue,dt as z,en as de,er as fe,et as pe,f as me,fn as he,gn as ge,h as _e,hn as ve,hr as ye,i as B,ir as V,it as be,j as xe,jn as H,jt as Se,kt as U,lt as Ce,mn as we,nn as Te,on as Ee,or as W,ot as G,pt as De,q as Oe,qn as ke,r as Ae,rt as je,sr as K,vn as q,w as Me,wn as J,x as Ne,y as Pe,yn as Y,yt as Fe,zt as Ie}from"./element-plus-H7kW-grr.js";import{a as Le,i as X,n as Re}from"./vendor-Dwln8rZH.js";import{n as Z,t as ze}from"./_plugin-vue_export-helper-BaSe6lmR.js";import{n as Q,t as Be}from"./toolsStore-BcJP9HmK.js";import{t as Ve}from"./SvgIcon-BpKq_phu.js";import{t as He}from"./configStore-CyAQ0a-U.js";import{t as Ue}from"./CommonDialog-OCekbVQM.js";import{a as We}from"./index-BeNCRYqM.js";var Ge={class:`ai-split-direct-pane`},Ke={key:0,class:`ai-split-status`},qe={key:1,class:`ai-split-status`},Je={key:1},Ye={key:2},Xe={key:2,class:`ai-split-status is-error`},Ze={key:3,class:`ai-split-idle`},$={class:`ai-split-idle__title`},Qe={class:`ai-split-idle__desc`},$e={class:`ai-split-prompt-actions`},et={key:0,class:`ai-split-prompt-editor`},tt={class:`ai-split-prompt-editor__actions`},nt={key:1,class:`ai-split-pre`},rt={class:`ai-split-subhead`},it={class:`ai-split-user-actions`},at={key:3,class:`ai-split-pre`},ot={key:0,class:`ai-split-tab-count`},st={class:`ai-split-pre ai-split-pre--think`},ct={key:0,class:`ai-split-tab-count`},lt={class:`ai-split-parse-error__detail`},ut={class:`ai-split-parse-error__hint`},dt={class:`ai-split-parse-error__actions`},ft={key:1,class:`ai-split-raw-toolbar`},pt={class:`ai-split-raw-tip`},mt={key:0,class:`ai-split-tab-count`},ht={key:0,class:`ai-split-empty`},gt={key:1,class:`ai-split-list`},_t={class:`ai-split-list__no`},vt={class:`ai-split-list__body`},yt={class:`ai-split-list__title`},bt={class:`ai-split-list__desc`},xt={key:5,class:`ai-split-footer-hint`},St={class:`ai-split-direct-footer`},Ct=ze(u({__name:`AISplitDirectPane`,props:{title:{},desc:{},taskId:{},promptId:{}},emits:[`confirm`],setup(e,{emit:t}){let n=e,r=t,a=I(`idle`),s=I(`prompt`),l=I(``),u=I(``),d=I(``),f=I(``),p=I(``),m=I([]),g=I(``),_=I(``),v=I(``),S=null,C=0,w=J(()=>d.value.length),T=J(()=>f.value.length),E=J(()=>a.value===`result`&&m.value.length>0),D=J(()=>a.value===`running`),k=J(()=>a.value===`preview`),A=I(``),j=I(!1);function M(){S&&=(S.abort(),null)}function te(){M(),a.value=`idle`,s.value=`prompt`,l.value=``,u.value=``,A.value=``,d.value=``,f.value=``,p.value=``,m.value=[],g.value=``,_.value=``,v.value=``}async function ne(){if(!n.title.trim()){B.warning(Z(`@WORKBENCH:请先填写任务标题`));return}te(),a.value=`preview`,s.value=`prompt`,j.value=!0;try{let e=await fetch(`/api/workbench/tasks/ai-split-preview`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({title:n.title,desc:n.desc,taskId:n.taskId||``,promptId:n.promptId||``})}).then(e=>e.json());if(!e.success){a.value=`error`,g.value=e.error||Z(`@WORKBENCH:生成预览失败`);return}l.value=e.system||``,u.value=e.user||``,A.value=e.user||``}catch(e){a.value=`error`,g.value=e?.message||String(e)}finally{j.value=!1}}async function re(){if(!A.value.trim()){B.warning(Z(`@WORKBENCH:提示词不能为空`));return}let e=++C;M(),d.value=``,f.value=``,p.value=``,m.value=[],_.value=``,v.value=``,g.value=``,a.value=`running`,s.value=`thinking`,u.value=A.value,S=new AbortController;let t=S;try{let r=await fetch(`/api/workbench/tasks/ai-split-subtasks`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify({title:n.title,desc:n.desc,taskId:n.taskId||``,promptId:n.promptId||``,customUserBlock:A.value}),signal:t.signal});if(e!==C)return;if(!r.ok||!r.body){let e=await r.text().catch(()=>``);throw Error(e||`HTTP ${r.status}`)}let i=r.body.getReader(),o=new TextDecoder(`utf-8`),c=``,u=null;for(;;){let{value:t,done:n}=await i.read();if(e!==C)return;if(n)break;c+=o.decode(t,{stream:!0});let r=c.split(`
2
2
  `);c=r.pop()??``;for(let e of r){let t=e.trim();if(!t.startsWith(`data:`))continue;let n=t.slice(5).trim();if(!n)continue;let r;try{r=JSON.parse(n)}catch{continue}switch(r.type){case`meta`:l.value=r.prompt?.system||l.value;break;case`thinking`:d.value+=String(r.delta||``);break;case`content`:f.value+=String(r.delta||``);break;case`done`:u=r;break;case`error`:throw Error(r.error||`AI 拆分失败`)}}}if(e!==C)return;if(!u)throw Error(Z(`@WORKBENCH:AI 未返回结果`));m.value=Array.isArray(u.subtasks)?u.subtasks:[],p.value=u.raw||f.value,_.value=String(u.parseError||``),v.value=String(u.parseStage||``),d.value||=Z(`@WORKBENCH:(当前模型未返回独立的思考内容,可切换到「原始结果」查看完整输出)`),a.value=`result`,s.value=m.value.length>0?`confirm`:`raw`}catch(n){if(e!==C)return;if(n?.name===`AbortError`||t.signal.aborted){a.value=`preview`,s.value=`prompt`;return}a.value=`error`,g.value=n?.message||String(n)}finally{e===C&&(S=null)}}function ie(){E.value&&r(`confirm`,m.value.slice())}function ae(){A.value.trim()?re():ne()}function oe(){S&&(S.abort(),S=null,B.info(Z(`@WORKBENCH:已停止拆分`)))}let se=I(!1);async function ce(){if(!f.value.trim()){B.warning(Z(`@WORKBENCH:原始结果为空,无法解析`));return}se.value=!0;try{let e=await fetch(`/api/workbench/tasks/parse-subtasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({raw:f.value})}).then(e=>e.json());if(!e.success){B.error(e.error||Z(`@WORKBENCH:解析失败`));return}m.value=Array.isArray(e.subtasks)?e.subtasks:[],_.value=String(e.parseError||``),v.value=String(e.parseStage||``),p.value=f.value,m.value.length>0?(B.success(Z(`@WORKBENCH:解析成功,已识别 {n} 个子任务`,{n:m.value.length})),s.value=`confirm`):B.warning(Z(`@WORKBENCH:仍未解析到子任务,请继续修改原始结果`))}catch(e){B.error(Z(`@WORKBENCH:解析失败: `)+(e?.message||e))}finally{se.value=!1}}V(()=>n.taskId,()=>{te()});let le=I(!1),R=I(``),z=I(!1);function de(){R.value=l.value,le.value=!0}async function fe(){if(!R.value.trim()){B.warning(Z(`@WORKBENCH:指令内容不能为空`));return}z.value=!0;try{let e=await fetch(`/api/workbench/tasks/ai-subtask-instruction`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({instruction:R.value})}).then(e=>e.json());e.success?(B.success(Z(`@WORKBENCH:已保存指令`)),le.value=!1,ne()):B.error(e.error||Z(`@WORKBENCH:保存失败`))}catch(e){B.error(Z(`@WORKBENCH:保存失败: `)+(e?.message||e))}finally{z.value=!1}}function pe(){le.value=!1}return(e,t)=>{let n=Ee,r=ee,p=Oe,v=ue,S=h,C=me;return N(),x(`div`,Ge,[D.value?(N(),x(`div`,Ke,[b(n,{class:`is-loading`},{default:W(()=>[b(i(U))]),_:1}),O(`span`,null,P(i(Z)(`@WORKBENCH:AI 正在拆分…`)),1),b(r,{size:`small`,link:``,type:`danger`,class:`ai-split-status__stop`,onClick:oe},{default:W(()=>[y(P(i(Z)(`@WORKBENCH:停止拆分`)),1)]),_:1})])):k.value?(N(),x(`div`,qe,[j.value?(N(),c(n,{key:0,class:`is-loading`},{default:W(()=>[b(i(U))]),_:1})):o(``,!0),j.value?(N(),x(`span`,Je,P(i(Z)(`@WORKBENCH:正在生成提示词预览…`)),1)):(N(),x(`span`,Ye,P(i(Z)(`@WORKBENCH:提示词已就绪,可在下方编辑后点「发送给 AI」开始拆分`)),1))])):a.value===`error`?(N(),x(`div`,Xe,[b(n,{color:`var(--color-danger)`},{default:W(()=>[b(i(je))]),_:1}),O(`span`,null,P(g.value),1)])):a.value===`idle`?(N(),x(`div`,Ze,[t[5]||=H(`<div class="ai-split-idle__icon" aria-hidden="true" data-v-bff9eaf1><svg viewBox="0 0 24 24" width="36" height="36" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-v-bff9eaf1><path d="M12 3v3" data-v-bff9eaf1></path><path d="M12 18v3" data-v-bff9eaf1></path><path d="M3 12h3" data-v-bff9eaf1></path><path d="M18 12h3" data-v-bff9eaf1></path><path d="M5.6 5.6l2.1 2.1" data-v-bff9eaf1></path><path d="M16.3 16.3l2.1 2.1" data-v-bff9eaf1></path><path d="M5.6 18.4l2.1-2.1" data-v-bff9eaf1></path><path d="M16.3 7.7l2.1-2.1" data-v-bff9eaf1></path><circle cx="12" cy="12" r="4" data-v-bff9eaf1></circle></svg></div>`,1),O(`div`,$,P(i(Z)(`@WORKBENCH:准备用 AI 拆分任务`)),1),O(`div`,Qe,P(i(Z)(`@WORKBENCH:点击下方按钮开始生成。生成期间可切换到「思考 / 原始结果」实时查看模型输出。`)),1),b(r,{type:`primary`,icon:i(Ie),onClick:ne},{default:W(()=>[y(P(i(Z)(`@WORKBENCH:开始拆分`)),1)]),_:1},8,[`icon`])])):o(``,!0),a.value===`idle`?o(``,!0):(N(),c(C,{key:4,modelValue:s.value,"onUpdate:modelValue":t[4]||=e=>s.value=e,class:`ai-split-tabs`},{default:W(()=>[b(v,{label:i(Z)(`@WORKBENCH:提示词`),name:`prompt`},{default:W(()=>[O(`div`,$e,[b(r,{size:`small`,disabled:D.value,onClick:de},{default:W(()=>[y(P(i(Z)(`@WORKBENCH:编辑指令`)),1)]),_:1},8,[`disabled`])]),le.value?(N(),x(`div`,et,[b(p,{modelValue:R.value,"onUpdate:modelValue":t[0]||=e=>R.value=e,type:`textarea`,rows:12,placeholder:i(Z)(`@WORKBENCH:指令内容`)},null,8,[`modelValue`,`placeholder`]),O(`div`,tt,[b(r,{size:`small`,onClick:pe},{default:W(()=>[y(P(i(Z)(`@WORKBENCH:取消`)),1)]),_:1}),b(r,{size:`small`,type:`primary`,loading:z.value,onClick:fe},{default:W(()=>[y(P(i(Z)(`@WORKBENCH:保存并重跑`)),1)]),_:1},8,[`loading`])])])):(N(),x(`pre`,nt,P(l.value||`(等待 LLM 启动…)`),1)),O(`h4`,rt,P(i(Z)(`@WORKBENCH:用户提示词(拼装后)`)),1),k.value?(N(),x(L,{key:2},[b(p,{modelValue:A.value,"onUpdate:modelValue":t[1]||=e=>A.value=e,type:`textarea`,rows:16,placeholder:i(Z)(`@WORKBENCH:正在生成预览…`),readonly:j.value,class:`ai-split-user-editor`,resize:`none`},null,8,[`modelValue`,`placeholder`,`readonly`]),O(`div`,it,[b(r,{size:`small`,disabled:j.value,onClick:te},{default:W(()=>[y(P(i(Z)(`@WORKBENCH:取消`)),1)]),_:1},8,[`disabled`]),b(r,{type:`primary`,icon:i(Ie),disabled:j.value||!A.value.trim(),onClick:re},{default:W(()=>[y(P(i(Z)(`@WORKBENCH:发送给 AI`)),1)]),_:1},8,[`icon`,`disabled`])])],64)):(N(),x(`pre`,at,P(u.value||`(等待 LLM 启动…)`),1))]),_:1},8,[`label`]),b(v,{name:`thinking`},{label:W(()=>[O(`span`,null,[y(P(i(Z)(`@WORKBENCH:思考`))+` `,1),w.value>0?(N(),x(`span`,ot,`(`+P(w.value)+`)`,1)):o(``,!0)])]),default:W(()=>[O(`pre`,st,P(d.value||i(Z)(`@WORKBENCH:(暂无输出)`)),1)]),_:1}),b(v,{name:`raw`},{label:W(()=>[O(`span`,null,[y(P(i(Z)(`@WORKBENCH:原始结果`))+` `,1),T.value>0?(N(),x(`span`,ct,`(`+P(T.value)+`)`,1)):o(``,!0)])]),default:W(()=>[_.value&&a.value===`result`?(N(),c(S,{key:0,type:`warning`,"show-icon":``,closable:!1,class:`ai-split-parse-error`},{title:W(()=>[y(P(i(Z)(`@WORKBENCH:模型返回内容解析失败,无法识别为有效的子任务 JSON`)),1)]),default:W(()=>[O(`div`,lt,P(_.value),1),O(`div`,ut,P(i(Z)(`@WORKBENCH:常见原因:desc 内夹杂了 ASCII 双引号、出现尾随逗号,或输出被截断。可在下方文本框中手动修改后点「重新解析」,或重新生成。`)),1),O(`div`,dt,[b(r,{size:`small`,type:`primary`,loading:se.value,onClick:ce},{default:W(()=>[y(P(i(Z)(`@WORKBENCH:重新解析`)),1)]),_:1},8,[`loading`]),b(r,{size:`small`,onClick:ae},{default:W(()=>[y(P(i(Z)(`@WORKBENCH:重新生成`)),1)]),_:1}),b(r,{size:`small`,onClick:t[2]||=e=>s.value=`prompt`},{default:W(()=>[y(P(i(Z)(`@WORKBENCH:去编辑指令`)),1)]),_:1})])]),_:1})):o(``,!0),a.value===`result`||f.value?(N(),x(`div`,ft,[O(`span`,pt,P(i(Z)(`@WORKBENCH:可直接编辑下方文本,修正后点「重新解析」即可入库`)),1),b(r,{size:`small`,type:`primary`,loading:se.value,disabled:!f.value.trim(),onClick:ce},{default:W(()=>[y(P(i(Z)(`@WORKBENCH:重新解析`)),1)]),_:1},8,[`loading`,`disabled`])])):o(``,!0),b(p,{modelValue:f.value,"onUpdate:modelValue":t[3]||=e=>f.value=e,type:`textarea`,rows:14,placeholder:i(Z)(`@WORKBENCH:(暂无输出)`),readonly:D.value,class:`ai-split-raw-editor`,resize:`none`},null,8,[`modelValue`,`placeholder`,`readonly`])]),_:1}),b(v,{name:`confirm`,disabled:m.value.length===0},{label:W(()=>[O(`span`,null,[y(P(i(Z)(`@WORKBENCH:确认入库`))+` `,1),m.value.length>0?(N(),x(`span`,mt,`(`+P(m.value.length)+`)`,1)):o(``,!0)])]),default:W(()=>[m.value.length===0?(N(),x(`div`,ht,P(i(Z)(`@WORKBENCH:(暂无子任务)`)),1)):(N(),x(`ul`,gt,[(N(!0),x(L,null,F(m.value,(e,t)=>(N(),x(`li`,{key:t,class:`ai-split-list__item`},[O(`div`,_t,P(t+1),1),O(`div`,vt,[O(`div`,yt,P(e.title),1),O(`div`,bt,P(e.desc),1)])]))),128))]))]),_:1},8,[`disabled`])]),_:1},8,[`modelValue`])),_.value&&a.value===`result`&&m.value.length===0?(N(),x(`div`,xt,[b(n,{color:`var(--color-warning)`},{default:W(()=>[b(i(je))]),_:1}),O(`span`,null,P(i(Z)(`@WORKBENCH:解析失败,未能从模型输出中提取出子任务 — 请查看「原始结果」`)),1)])):o(``,!0),O(`div`,St,[a.value===`error`||a.value===`result`&&_.value&&m.value.length===0?(N(),c(r,{key:0,onClick:ae},{default:W(()=>[y(P(i(Z)(`@WORKBENCH:重新生成`)),1)]),_:1})):o(``,!0),a.value===`result`&&m.value.length>0?(N(),c(r,{key:1,onClick:ae},{default:W(()=>[y(P(i(Z)(`@WORKBENCH:重新拆分`)),1)]),_:1})):o(``,!0),b(r,{type:`primary`,disabled:!E.value,onClick:ie},{default:W(()=>[y(P(i(Z)(`@WORKBENCH:确认入库`))+` (`+P(m.value.length)+`) `,1)]),_:1},8,[`disabled`])])])}}}),[[`__scopeId`,`data-v-bff9eaf1`]]),wt={class:`ai-chat-pane`},Tt={key:0,class:`ai-chat-streaming-banner`},Et={key:1,class:`ai-chat-empty`},Dt={class:`ai-chat-empty__title`},Ot={class:`ai-chat-empty__desc`},kt={key:0,class:`ai-chat-bubble user`},At={class:`ai-chat-content`},jt={key:1,class:`ai-chat-bubble assistant`},Mt={class:`ai-chat-pre ai-chat-pre--think`},Nt={key:1,class:`ai-chat-content-text`},Pt={key:2,class:`ai-chat-subtasks`},Ft={class:`ai-chat-subtasks__head`},It={class:`ai-chat-subtasks__count`},Lt={class:`ai-chat-list`},Rt={class:`ai-chat-list__no`},zt={class:`ai-chat-list__body`},Bt={class:`ai-chat-list__title`},Vt={class:`ai-chat-list__desc`},Ht={class:`ai-chat-parse-error__detail`},Ut={class:`ai-chat-pre`},Wt={key:5,class:`ai-chat-turn__actions`},Gt={class:`ai-chat-input`},Kt={class:`ai-chat-input__actions`},qt={key:0,class:`ai-chat-history__loading`},Jt={key:1,class:`ai-chat-history__empty`},Yt={key:2,class:`ai-chat-history__list`},Xt={class:`ai-chat-history__title`},Zt={class:`ai-chat-history__meta`},Qt={class:`ai-chat-history__actions`},$t=ze(u({__name:`AISplitChatPane`,props:{title:{},desc:{},taskId:{},promptId:{},initialSessionId:{}},emits:[`confirm`],setup(e,{emit:t}){let r=e,a=t,s=I(`idle`),u=I(``),d=I([]),m=I(``),h=I(``),g=null,_=0,v=I(null),S=J(()=>s.value===`streaming`),C=J(()=>{if(!S.value)return``;let e=[...d.value].reverse().find(e=>e.role===`assistant`);return e?e.content?Z(`@WORKBENCH:AI 正在输出…`):e.thinking?Z(`@WORKBENCH:AI 正在思考… (已思考 {n} 字)`,{n:e.thinking.length}):Z(`@WORKBENCH:AI 正在思考…`):Z(`@WORKBENCH:AI 正在思考…`)}),w=I(!1),T=I(!1),E=I([]);function D(){v.value&&(v.value.scrollTop=v.value.scrollHeight)}async function k(){let e=m.value.trim();if(!e||S.value)return;if(!u.value&&!r.title.trim()){B.warning(Z(`@WORKBENCH:请先填写任务标题`));return}let t=++_;g=new AbortController;let n=g,i={role:`user`,content:e};d.value.push(i),m.value=``;let a={role:`assistant`,content:``,thinking:``};d.value.push(a),s.value=`streaming`,await f(),D();try{let i=await fetch(`/api/workbench/tasks/ai-chat-split`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify({sessionId:u.value,title:r.title,desc:r.desc,taskId:r.taskId||``,promptId:r.promptId||``,userMessage:e}),signal:n.signal});if(t!==_)return;if(!i.ok||!i.body){let e=await i.text().catch(()=>``);throw Error(e||`HTTP ${i.status}`)}let o=i.body.getReader(),c=new TextDecoder(`utf-8`),l=``,p=null,m=!1;for(;;){let{value:e,done:n}=await o.read();if(t!==_)return;if(n)break;l+=c.decode(e,{stream:!0});let r=l.split(`
3
3
  `);l=r.pop()??``;for(let e of r){let t=e.trim();if(!t.startsWith(`data:`))continue;let n=t.slice(5).trim();if(!n)continue;let r;try{r=JSON.parse(n)}catch{continue}switch(r.type){case`meta`:r.sessionId&&(u.value=r.sessionId);break;case`user_echo`:m=!0;break;case`thinking`:a.thinking=(a.thinking||``)+String(r.delta||``);break;case`content`:a.content+=String(r.delta||``);break;case`done`:p=r;break;case`error`:throw Error(r.error||`对话拆分失败`)}}d.value=[...d.value],await f(),D()}if(t!==_)return;if(!m&&!p)throw Error(Z(`@WORKBENCH:AI 未返回结果`));p&&(a.subtasks=Array.isArray(p.subtasks)?p.subtasks:[],a.raw=String(p.raw||a.content),a.parseError=String(p.parseError||``),a.parseStage=String(p.parseStage||``)),d.value=[...d.value],await f(),D(),s.value=`idle`}catch(e){if(t!==_)return;if(e?.name===`AbortError`||n.signal.aborted){a.content=(a.content||``)+`
4
4