zen-gitsync 2.13.8 → 2.13.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/scripts/verify-subtask-row.mjs +284 -0
- package/src/ui/public/assets/{EditorView-CSUfBR5z.js → EditorView-eQBqgBEd.js} +0 -0
- package/src/ui/public/assets/{SourceMapView-CPsyB1rP.js → SourceMapView-BLkrjBFW.js} +1 -1
- package/src/ui/public/assets/WorkbenchView-BMtAZx07.css +1 -0
- package/src/ui/public/assets/WorkbenchView-D2eEOP1R.js +6 -0
- package/src/ui/public/assets/{_plugin-vue_export-helper-rFkdzaHd.js → _plugin-vue_export-helper-BMDM_R2D.js} +3 -3
- package/src/ui/public/assets/{index-CLVL3Inb.js → index-BaFDF44N.js} +6 -6
- package/src/ui/public/assets/{index-ChSExFC3.css → index-BvzxdkDp.css} +1 -1
- package/src/ui/public/index.html +3 -3
- package/src/ui/public/assets/WorkbenchView-BBDJOY3C.js +0 -6
- package/src/ui/public/assets/WorkbenchView-CA91BJc8.css +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-CDAfMQIV.js","assets/rolldown-runtime-BM3Ffeng.js","assets/vendor-CIeR0bF6.css","assets/EditorView-
|
|
2
|
-
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{$r as t,$t as n,Ai as r,An as i,Ar as a,Bi as o,Bn as s,Br as c,Bt as l,Ci as u,Cn as d,Cr as f,Di as p,Dn as m,Dr as h,Ei as g,En as _,Fi as v,Fn as y,Fr as b,Gi as x,Gn as S,Gr as C,Gt as ee,Hi as w,Hn as T,Hr as E,Ht as D,Ii as O,In as k,Ir as te,Jn as A,Jr as j,Jt as M,Ki as N,Kn as P,Kr as ne,Li as F,Ln as re,Lr as ie,Mi as I,Mn as ae,Mr as oe,Ni as L,Nn as se,Oi as ce,On as le,Or as ue,Pi as de,Pn as fe,Pr as pe,Qn as me,Qr as he,Qt as ge,Ri as R,Rn as _e,Rr as ve,Si as z,Sn as ye,Sr as be,Ti as xe,Tr as Se,Un as Ce,Ur as we,Ut as Te,Vi as Ee,Vn as De,Vr as Oe,Vt as ke,Wi as B,Wn as Ae,Wr as je,Xn as Me,Xr as Ne,Xt as Pe,Yn as Fe,Yr as Ie,Yt as Le,Zn as Re,Zr as ze,Zt as Be,_i as V,_n as Ve,ai as He,an as Ue,ar as We,bi as Ge,bn as Ke,br as qe,ci as Je,cn as Ye,cr as Xe,di as H,dn as Ze,dr as Qe,ei as $e,en as et,er as tt,fi as nt,fn as rt,fr as it,gi as U,gn as at,gr as ot,hi as W,hn as st,hr as ct,ii as lt,in as ut,ir as dt,ji as G,jn as ft,jr as pt,ki as mt,li as ht,ln as gt,lr as _t,mi as K,mn as vt,mr as yt,ni as bt,nn as xt,nr as St,on as Ct,or as wt,pi as Tt,pn as Et,pr as Dt,qi as q,qn as Ot,qr as kt,qt as At,ri as jt,rn as Mt,rr as Nt,sr as Pt,ti as Ft,tn as It,tr as Lt,ui as Rt,un as J,ur as zt,vi as Y,vn as Bt,vr as Vt,wi as X,wn as Ht,wr as Ut,xi as Z,xn as Wt,xr as Gt,yi as Kt,yn as qt,yr as Jt,zi as Yt,zn as Xt,zr as Zt}from"./vendor-CDAfMQIV.js";import{a as Qt,i as $t,n as Q,r as en,t as $}from"./_plugin-vue_export-helper-rFkdzaHd.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();function tn(e){if(!e)return`Zen GitSync`;let t=e.replace(/\\/g,`/`).split(`/`).filter(e=>e);return t.length>0?t[t.length-1]:`Zen GitSync`}var nn=[`width`,`height`],rn=X({__name:`TreeIcon`,props:{size:{default:`1em`}},setup(e){return(e,t)=>(G(),Y(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,width:e.size,height:e.size,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`},t[0]||=[Ge(`<line x1="3" y1="2" x2="3" y2="14"></line><line x1="3" y1="4" x2="6" y2="4"></line><rect x="2" y="3" width="8" height="2" rx="0.5" fill="currentColor" stroke="none"></rect><line x1="3" y1="8" x2="6" y2="8"></line><rect x="4" y="7" width="8" height="2" rx="0.5" fill="currentColor" stroke="none"></rect><line x1="3" y1="12" x2="6" y2="12"></line><rect x="6" y="11" width="8" height="2" rx="0.5" fill="currentColor" stroke="none"></rect>`,7)],8,nn))}}),an=[`xlink:href`],on=$(X({__name:`index`,props:{iconClass:{type:String,required:!0},className:{type:String,default:``}},setup(e){let t=e,n=K(()=>`#icon-${t.iconClass}`),r=K(()=>t.className?`svg-icon ${t.className}`:`svg-icon`);return(e,t)=>(G(),Y(`svg`,{class:x(r.value),"aria-hidden":`true`},[W(`use`,{"xlink:href":n.value},null,8,an)],2))}}),[[`__scopeId`,`data-v-0adf8958`]]),sn=[`disabled`],cn=[`src`],ln=$(X({__name:`IconButton`,props:{iconClass:{},imageUrl:{},size:{default:`medium`},disabled:{type:Boolean,default:!1},active:{type:Boolean,default:!1},tooltip:{default:``},customClass:{default:``},color:{default:``},hoverColor:{default:`var(--color-primary)`}},emits:[`click`],setup(e,{emit:t}){He(e=>({"156eeeef":e.hoverColor}));let n=e,r=t,i=K(()=>`icon-button--${n.size}`),a=e=>{n.disabled||r(`click`,e)};return(e,t)=>{let n=A;return G(),U(n,{content:e.tooltip,disabled:!e.tooltip,placement:`bottom`,"show-after":300},{default:R(()=>[W(`button`,{class:x([`icon-button`,[i.value,e.customClass,{"is-disabled":e.disabled,"is-active":e.active}]]),disabled:e.disabled,onClick:a},[e.iconClass?(G(),U(on,{key:0,"icon-class":e.iconClass,style:N({color:e.color||void 0})},null,8,[`icon-class`,`style`])):e.imageUrl?(G(),Y(`img`,{key:1,src:e.imageUrl,alt:`icon`,class:`icon-image`},null,8,cn)):de(e.$slots,`default`,{key:2},void 0,!0)],10,sn)]),_:3},8,[`content`,`disabled`])}}}),[[`__scopeId`,`data-v-48359d01`]]),un=[`width`,`height`],dn=X({__name:`ListIcon`,props:{size:{default:`1em`}},setup(e){return(e,t)=>(G(),Y(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,width:e.size,height:e.size,fill:`currentColor`,stroke:`none`},t[0]||=[W(`rect`,{x:`2`,y:`3`,width:`12`,height:`2`,rx:`0.5`},null,-1),W(`rect`,{x:`2`,y:`7`,width:`12`,height:`2`,rx:`0.5`},null,-1),W(`rect`,{x:`2`,y:`11`,width:`12`,height:`2`,rx:`0.5`},null,-1)],8,un))}}),fn={"zh-CN":Ue,"en-US":ut};function pn(e){return fn[e]||Ue}var mn=Ft(`locale`,()=>{let e=w(en()),t=K(()=>pn(e.value));async function n(t){Qt(t),e.value=t;let n=hn();n.locale!==t&&await n.saveGeneralSettings({locale:t})}return{currentLocale:e,elementPlusLocale:t,changeLocale:n}}),hn=Ft(`config`,()=>{let e=w(``),t=w([]),n=w([]),r=w([]),i=w([]),a=w([]),o=w([]),s=w([]),c=w([]),l=w(!1),u=w({enabled:!1,type:`command`,refId:``}),d=w(!1),f=w(!1),p=w(``),m=w(``),h=w(``),g=w(!0),_=w(!1),v=w(!0),y=w(!1),b=w(!1),x=w(!0),S=w(`light`),C=w(`zh-CN`),ee=w([]),T={layout:{leftRatio:.25,midRatio:.375,rightRatio:.375,topRatio:.5},fileListViewMode:`list`,fileDiffSplitPercent:35,commandConsole:{expanded:!0,useTerminal:!0,showTerminalSessions:!0,splitPercent:25},editorAutoSave:!1},E=w(JSON.parse(JSON.stringify(T))),D=w(!1);function O(e){h.value=e||``}function k(e){let t=document.documentElement;e===`dark`?t.setAttribute(`data-theme`,`dark`):e===`light`?t.removeAttribute(`data-theme`):window.matchMedia(`(prefers-color-scheme: dark)`).matches?t.setAttribute(`data-theme`,`dark`):t.removeAttribute(`data-theme`)}k(S.value);let te=K(()=>({defaultCommitMessage:e.value,descriptionTemplates:t.value,scopeTemplates:n.value,messageTemplates:r.value,commandTemplates:i.value,lockedFiles:a.value,customCommands:o.value,orchestrations:s.value,startupItems:c.value,startupAutoRun:l.value,afterQuickPushAction:u.value,currentDirectory:h.value})),A=K(()=>!!(p.value&&p.value.trim()));async function j(){try{let e=await fetch(`/api/config/open-file`,{method:`POST`,headers:{"Content-Type":`application/json`}}),t=await e.json().catch(()=>({}));return e.ok&&t?.success?(J.success(Q(`@D50BB:已打开系统配置文件`)),!0):(J.error(`${Q(`@D50BB:打开系统配置文件失败: `)}${t?.error||``}`),!1)}catch(e){return J.error(`${Q(`@D50BB:打开系统配置文件失败: `)}${e.message}`),!1}}async function M(w=!1){if(!w&&f.value&&!d.value)return console.log(Q(`@D50BB:使用缓存的配置信息`)),te.value;d.value=!0;try{d.value=!0,console.log(Q(`@D50BB:加载配置信息...`));let w=await fetch(`/api/config/getConfig`),O=await w.json().catch(()=>({}));if(!w.ok||O&&O.success===!1){let e=String(O?.error||Q(`@D50BB:加载配置失败`)),t=String(O?.configPath||``),n=t?`\n${Q(`@D50BB:配置文件`)}: ${t}`:``;return J.error(`${Q(`@D50BB:加载配置失败: `)}${e}${n}`),p.value=e,m.value=t,null}if(p.value=``,m.value=``,e.value=O.defaultCommitMessage||``,t.value=O.descriptionTemplates||[],n.value=O.scopeTemplates||[],r.value=O.messageTemplates||[],i.value=O.commandTemplates||[],a.value=O.lockedFiles||[],o.value=O.customCommands||[],s.value=O.orchestrations||[],c.value=(O.startupItems||[]).map(e=>({id:String(e?.id??``),type:e?.type===`workflow`?`workflow`:`command`,refId:String(e?.refId??e?.commandId??``),createdAt:Number(e?.createdAt??Date.now()),enabled:typeof e?.enabled==`boolean`?e.enabled:!0})).filter(e=>e.id&&e.refId),l.value=O.startupAutoRun||!1,u.value={enabled:!!O?.afterQuickPushAction?.enabled,type:O?.afterQuickPushAction?.type===`workflow`?`workflow`:`command`,refId:String(O?.afterQuickPushAction?.refId||``).trim()},O.isStandardCommit!==void 0&&(v.value=!!O.isStandardCommit),O.skipHooks!==void 0&&(y.value=!!O.skipHooks),O.autoQuickPushOnEnter!==void 0&&(b.value=!!O.autoQuickPushOnEnter),O.autoSetDefaultMessage!==void 0&&(_.value=!!O.autoSetDefaultMessage),O.autoClosePushModal!==void 0&&(g.value=!!O.autoClosePushModal),O.pullBeforePush!==void 0&&(x.value=!!O.pullBeforePush),Array.isArray(O.models)&&(ee.value=O.models),O.theme&&[`light`,`dark`,`auto`].includes(O.theme)&&(S.value=O.theme,k(O.theme)),O.locale&&[`zh-CN`,`en-US`].includes(O.locale)){C.value=O.locale,Qt(O.locale);let e=mn();e.currentLocale=O.locale}if(O.currentDirectory&&(h.value=O.currentDirectory),O.ui==null){let e=e=>{try{return localStorage.getItem(e)}catch{return null}},t={},n=e(`zen-gitsync-layout-left-ratio`),r=e(`zen-gitsync-layout-mid-ratio`),i=e(`zen-gitsync-layout-right-ratio`),a=e(`zen-gitsync-layout-top-ratio`);if(n||r||i||a){let e=(e,t)=>{let n=e==null?NaN:parseFloat(e);return Number.isFinite(n)?n:t};t.layout={leftRatio:e(n,T.layout.leftRatio),midRatio:e(r,T.layout.midRatio),rightRatio:e(i,T.layout.rightRatio),topRatio:e(a,T.layout.topRatio)}}let o=e(`zen-gitsync-file-list-view-mode`);(o===`list`||o===`tree`)&&(t.fileListViewMode=o);let s=e(`zen-gitsync-filediff-ratio`)??e(`fileDiff.splitPercent`);if(s!=null){let e=parseFloat(s);Number.isFinite(e)&&(t.fileDiffSplitPercent=Math.min(85,Math.max(15,e)))}let c=e(`useTerminal`),l=e(`isConsoleExpanded`),u=e(`showTerminalSessions`),d=e(`zen-gitsync-commandconsole-ratio`);if(c!==null||l!==null||u!==null||d!=null){let e=d==null?NaN:parseFloat(d);t.commandConsole={useTerminal:c!==`false`,expanded:l!==`false`,showTerminalSessions:u==null?!0:u===`true`,splitPercent:Number.isFinite(e)?Math.min(85,Math.max(15,e)):T.commandConsole.splitPercent}}let f=e(`zen-gitsync-editor-auto-save`);f!=null&&(t.editorAutoSave=f===`true`),Object.keys(t).length>0&&(E.value={...E.value,...t}),Object.keys(t).length>0&&ie(t,{immediate:!0}).catch(e=>{console.error(`迁移 UI 设置到文件失败:`,e)});try{[`zen-gitsync-theme`,`zen-gitsync-locale`,`zen-gitsync-editor-auto-save`,`zen-gitsync-file-list-view-mode`,`zen-gitsync-filediff-ratio`,`fileDiff.splitPercent`,`isConsoleExpanded`,`useTerminal`,`showTerminalSessions`,`zen-gitsync-commandconsole-ratio`,`zen-gitsync-layout-left-ratio`,`zen-gitsync-layout-mid-ratio`,`zen-gitsync-layout-right-ratio`,`zen-gitsync-layout-top-ratio`,`locale`].forEach(e=>localStorage.removeItem(e))}catch{}}else E.value={layout:{...T.layout,...O.ui.layout||{}},fileListViewMode:O.ui.fileListViewMode===`tree`?`tree`:`list`,fileDiffSplitPercent:Number.isFinite(Number(O.ui.fileDiffSplitPercent))?Math.min(85,Math.max(15,Number(O.ui.fileDiffSplitPercent))):T.fileDiffSplitPercent,commandConsole:{expanded:typeof O.ui.commandConsole?.expanded==`boolean`?O.ui.commandConsole.expanded:T.commandConsole.expanded,useTerminal:typeof O.ui.commandConsole?.useTerminal==`boolean`?O.ui.commandConsole.useTerminal:T.commandConsole.useTerminal,showTerminalSessions:typeof O.ui.commandConsole?.showTerminalSessions==`boolean`?O.ui.commandConsole.showTerminalSessions:T.commandConsole.showTerminalSessions,splitPercent:Number.isFinite(Number(O.ui.commandConsole?.splitPercent))?Math.min(85,Math.max(15,Number(O.ui.commandConsole.splitPercent))):T.commandConsole.splitPercent},editorAutoSave:typeof O.ui.editorAutoSave==`boolean`?O.ui.editorAutoSave:T.editorAutoSave};return D.value=!0,f.value=!0,console.log(Q(`@D50BB:配置信息加载完成`)),te.value}catch(e){return console.error(`加载配置失败:`,e),J.error(`${Q(`@D50BB:加载配置失败: `)}${e.message}`),p.value=e.message,null}finally{d.value=!1}}async function N(){try{await fetch(`/api/config/save-commit-settings`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({isStandardCommit:v.value,skipHooks:y.value,autoQuickPushOnEnter:b.value,autoSetDefaultMessage:_.value,autoClosePushModal:g.value,pullBeforePush:x.value})})}catch(e){console.error(`保存提交设置失败:`,e)}}F([v,y,b,_,g,x],()=>{f.value&&N()});let P=null,ne={};async function re(){if(P&&=(clearTimeout(P),null),Object.keys(ne).length===0)return;let e=ne;ne={};try{await fetch(`/api/config/save-ui-settings`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})}catch(e){console.error(`保存 UI 设置失败:`,e)}}async function ie(e,t={}){if(D.value){if(t.immediate){Object.assign(ne,e),await re();return}Object.assign(ne,e),P&&clearTimeout(P),P=setTimeout(()=>{re()},300)}}async function I(){return E.value.layout={...T.layout},await ie({layout:E.value.layout},{immediate:!0}),E.value.layout}F(()=>E.value.fileListViewMode,e=>{D.value&&ie({fileListViewMode:e})}),F(()=>E.value.fileDiffSplitPercent,e=>{D.value&&ie({fileDiffSplitPercent:e})}),F(()=>E.value.editorAutoSave,e=>{D.value&&ie({editorAutoSave:e})}),F(()=>E.value.layout,e=>{D.value&&ie({layout:e})},{deep:!0}),F(()=>E.value.commandConsole,e=>{D.value&&ie({commandConsole:e})},{deep:!0}),typeof window<`u`&&window.addEventListener(`beforeunload`,()=>{re()});async function ae(t){try{let n=await(await fetch(`/api/config/saveDefaultMessage`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({defaultCommitMessage:t})})).json();return n.success?(e.value=t,J.success(Q(`@D50BB:默认提交信息已保存`)),!0):(J.error(`${Q(`@D50BB:保存失败: `)}${n.error}`),!1)}catch(e){return J.error(`${Q(`@D50BB:保存失败: `)}${e.message}`),!1}}async function oe(e){try{let t=await(await fetch(`/api/config/save-after-quick-push-action`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({afterQuickPushAction:{enabled:!!e?.enabled,type:e?.type===`workflow`?`workflow`:`command`,refId:String(e?.refId||``).trim()}})})).json();return t.success?(u.value={enabled:!!e?.enabled,type:e?.type===`workflow`?`workflow`:`command`,refId:String(e?.refId||``).trim()},!0):(J.error(`保存提交后启动项失败: ${t.error}`),!1)}catch(e){return J.error(`保存提交后启动项失败: ${e.message}`),!1}}async function L(e,a){try{let o=await(await fetch(`/api/config/save-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({template:e,type:a})})).json();return o.success?(a===`description`?t.value.includes(e)||t.value.push(e):a===`scope`?n.value.includes(e)||n.value.push(e):a===`message`?r.value.includes(e)||r.value.push(e):a===`command`&&(i.value.includes(e)||i.value.push(e)),J.success(Q(`@D50BB:模板已保存`)),!0):(J.error(`${Q(`@D50BB:保存模板失败: `)}${o.error}`),!1)}catch(e){return J.error(`${Q(`@D50BB:保存模板失败: `)}${e.message}`),!1}}async function se(e,a){try{let o=await(await fetch(`/api/config/delete-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({template:e,type:a})})).json();return o.success?(a===`description`?t.value=t.value.filter(t=>t!==e):a===`scope`?n.value=n.value.filter(t=>t!==e):a===`message`?r.value=r.value.filter(t=>t!==e):a===`command`&&(i.value=i.value.filter(t=>t!==e)),J.success(Q(`@D50BB:模板已删除`)),!0):(J.error(`${Q(`@D50BB:删除模板失败: `)}${o.error}`),!1)}catch(e){return J.error(`${Q(`@D50BB:删除模板失败: `)}${e.message}`),!1}}async function ce(e,a,o){try{let s=await(await fetch(`/api/config/update-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({oldTemplate:e,newTemplate:a,type:o})})).json();if(s.success){if(o===`description`){let n=t.value.indexOf(e);n!==-1&&(t.value[n]=a)}else if(o===`scope`){let t=n.value.indexOf(e);t!==-1&&(n.value[t]=a)}else if(o===`message`){let t=r.value.indexOf(e);t!==-1&&(r.value[t]=a)}else if(o===`command`){let t=i.value.indexOf(e);t!==-1&&(i.value[t]=a)}return J.success(Q(`@D50BB:模板已更新`)),!0}else return J.error(`${Q(`@D50BB:更新模板失败: `)}${s.error}`),!1}catch(e){return J.error(`${Q(`@D50BB:更新模板失败: `)}${e.message}`),!1}}async function le(e,a){try{let o=await(await fetch(`/api/config/pin-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({template:e,type:a})})).json();return o.success?(a===`description`?(t.value=t.value.filter(t=>t!==e),t.value.unshift(e)):a===`scope`?(n.value=n.value.filter(t=>t!==e),n.value.unshift(e)):a===`message`?(r.value=r.value.filter(t=>t!==e),r.value.unshift(e)):a===`command`&&(i.value=i.value.filter(t=>t!==e),i.value.unshift(e)),J.success(Q(`@D50BB:模板已置顶`)),!0):(J.error(`${Q(`@D50BB:置顶模板失败: `)}${o.error}`),!1)}catch(e){return J.error(`${Q(`@D50BB:置顶模板失败: `)}${e.message}`),!1}}async function ue(){try{let e=await(await fetch(`/api/locked-files`)).json();return e.success?(a.value=e.lockedFiles||[],e.lockedFiles):(J.error(`${Q(`@D50BB:加载锁定文件列表失败: `)}${e.error}`),[])}catch(e){return console.error(`加载锁定文件列表失败:`,e),J.error(`${Q(`@D50BB:加载锁定文件列表失败: `)}${e.message}`),[]}}async function de(e){try{let t=await(await fetch(`/api/lock-file`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return t.success?(await ue(),J.success(`${Q(`@D50BB:文件已锁定: `)}${e}`),!0):(J.error(`${Q(`@D50BB:锁定文件失败: `)}${t.error}`),!1)}catch(e){return console.error(`锁定文件失败:`,e),J.error(`${Q(`@D50BB:锁定文件失败: `)}${e.message}`),!1}}async function fe(e){try{let t=await(await fetch(`/api/unlock-file`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return t.success?(await ue(),J.success(`${Q(`@D50BB:文件已解锁: `)}${e}`),!0):(J.error(`${Q(`@D50BB:解锁文件失败: `)}${t.error}`),!1)}catch(e){return console.error(`解锁文件失败:`,e),J.error(`${Q(`@D50BB:解锁文件失败: `)}${e.message}`),!1}}async function pe(e){try{let t=await(await fetch(`/api/check-file-lock`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return t.success?t.isLocked:(console.error(`检查文件锁定状态失败:`,t.error),!1)}catch(e){return console.error(`检查文件锁定状态失败:`,e),!1}}async function me(e){try{let t=await(await fetch(`/api/config/save-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({command:e})})).json();return t.success?(await M(!0),J.success(Q(`@CMD01:命令已保存`)),!0):(J.error(`${Q(`@CMD01:保存命令失败: `)}${t.error}`),!1)}catch(e){return J.error(`${Q(`@CMD01:保存命令失败: `)}${e.message}`),!1}}async function he(e){try{let t=await(await fetch(`/api/config/delete-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e})})).json();return t.success?(await M(!0),J.success(Q(`@CMD01:命令已删除`)),!0):(J.error(`${Q(`@CMD01:删除命令失败: `)}${t.error}`),!1)}catch(e){return J.error(`${Q(`@CMD01:删除命令失败: `)}${e.message}`),!1}}async function ge(e,t){try{let n=await(await fetch(`/api/config/update-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e,command:t})})).json();return n.success?(await M(!0),J.success(Q(`@CMD01:命令已更新`)),!0):(J.error(`${Q(`@CMD01:更新命令失败: `)}${n.error}`),!1)}catch(e){return J.error(`${Q(`@CMD01:更新命令失败: `)}${e.message}`),!1}}async function R(e){try{let t=await(await fetch(`/api/config/pin-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e})})).json();return t.success?(await M(!0),!0):(J.error(t.error),!1)}catch(e){return J.error(e.message),!1}}async function _e(e){try{let t=await(await fetch(`/api/config/save-orchestration`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({orchestration:e})})).json();return t.success?(await M(!0),J.success(Q(`@ORCH:编排已保存`)),t.orchestration||null):(J.error(`${Q(`@ORCH:保存编排失败: `)}${t.error}`),null)}catch(e){return J.error(`${Q(`@ORCH:保存编排失败: `)}${e.message}`),null}}async function ve(e){try{let t=await(await fetch(`/api/config/delete-orchestration`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e})})).json();return t.success?(await M(!0),J.success(Q(`@ORCH:编排已删除`)),!0):(J.error(`${Q(`@ORCH:删除编排失败: `)}${t.error}`),!1)}catch(e){return J.error(`${Q(`@ORCH:删除编排失败: `)}${e.message}`),!1}}async function z(e,t){try{let n=await(await fetch(`/api/config/update-orchestration`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e,orchestration:t})})).json();return n.success?(await M(!0),J.success(Q(`@ORCH:编排已更新`)),!0):(J.error(`${Q(`@ORCH:更新编排失败: `)}${n.error}`),!1)}catch(e){return J.error(`${Q(`@ORCH:更新编排失败: `)}${e.message}`),!1}}async function ye(e,t){try{let n=await(await fetch(`/api/config/save-startup-items`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({startupItems:e,startupAutoRun:t===void 0?l.value:t})})).json();return n.success?(c.value=e,t!==void 0&&(l.value=t),!0):(J.error(`保存启动项失败: ${n.error}`),!1)}catch(e){return J.error(`保存启动项失败: ${e.message}`),!1}}async function be(e){try{let t=await(await fetch(`/api/config/save-models`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({models:e})})).json();return t.success?(ee.value=e,!0):(J.error(`${Q(`@D50BB:保存模型失败: `)}${t.error}`),!1)}catch(e){return J.error(`${Q(`@D50BB:保存模型失败: `)}${e.message}`),!1}}async function xe(e){try{let t=await(await fetch(`/api/config/save-general-settings`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})).json();if(t.success){if(e.theme&&(S.value=e.theme,k(e.theme)),e.locale){C.value=e.locale,Qt(e.locale);let t=mn();t.currentLocale=e.locale}return!0}else return J.error(`保存通用设置失败: ${t.error}`),!1}catch(e){return J.error(`保存通用设置失败: ${e.message}`),!1}}return{models:ee,defaultCommitMessage:e,descriptionTemplates:t,scopeTemplates:n,messageTemplates:r,commandTemplates:i,lockedFiles:a,customCommands:o,orchestrations:s,startupItems:c,startupAutoRun:l,afterQuickPushAction:u,isLoading:d,isLoaded:f,configLoadError:p,configFilePath:m,hasConfigLoadError:A,currentDirectory:h,config:te,autoClosePushModal:g,autoSetDefaultMessage:_,isStandardCommit:v,skipHooks:y,autoQuickPushOnEnter:b,pullBeforePush:x,theme:S,locale:C,ui:E,isUiLoaded:D,loadConfig:M,setCurrentDirectory:O,openSystemConfigFile:j,saveTemplate:L,saveModels:be,saveGeneralSettings:xe,saveUiSettings:ie,resetUiLayout:I,applyTheme:k,saveDefaultMessage:ae,deleteTemplate:se,updateTemplate:ce,pinTemplate:le,loadLockedFiles:ue,lockFile:de,unlockFile:fe,isFileLocked:pe,saveCustomCommand:me,deleteCustomCommand:he,updateCustomCommand:ge,pinCustomCommand:R,saveOrchestration:_e,deleteOrchestration:ve,updateOrchestration:z,saveStartupItems:ye,saveAfterQuickPushAction:oe,saveCommitSettings:N}}),gn=800;function _n(){let e=window.location.port||`80`;if(e===`5173`||e===`4173`||e===`5544`)return console.log(`${Q(`@C298B:开发环境:从环境变量读取后端端口 `)}4752`),4752;let t=parseInt(e,10);return console.log(`${Q(`@C298B:生产环境:使用当前页面端口 `)}${t}`),t}var vn=_n(),yn=Ft(`git`,()=>{let e=hn(),t=w(``),n=w([]),i=w(``),a=w(``),o=w(!1),s=w(!1),c=w(!1),l=w(0),u=w(``),d=w(!1),f=w(!1),p=w(!1),m=w(!1),h=w(!1),g=w(!1),_=w(0),v=w(0),y=w(!1),b=w(``),x=w(0),S=w(``),C=w(null),ee=w(``),T=w(``),E=w([]),D=w({staged:[],unstaged:[],untracked:[]}),O=w([]),k=w(!1),te=w(!1),A=w(!1),j=w(!1),M=w(!1),N=w(1),P=w(!0),ne=w(0),F=w([]),re=w(!1),ie=w(!1),I=w(!1),ae=w(!1);function oe(){t.value=``,n.value=[],i.value=``,a.value=``,o.value=!1,s.value=!1,c.value=!1,l.value=0,_.value=0,v.value=0,y.value=!1,b.value=``,x.value=0,f.value=!1,p.value=!1,m.value=!1,h.value=!1,u.value=``,d.value=!1,E.value=[],D.value={staged:[],unstaged:[],untracked:[]},O.value=[],k.value=!1,te.value=!1,A.value=!1,j.value=!1,M.value=!1,N.value=1,P.value=!0,ne.value=0}async function L(e=!1,t=!1){if(c.value)try{console.log(Q(`@C298B:获取分支状态...`));let n=`/api/branch-status`,r=[];e&&r.push(`force=true`),t&&r.push(`countOnly=true`),r.length>0&&(n+=`?`+r.join(`&`));let i=await(await fetch(n)).json();i&&(_.value=i.ahead||0,v.value=i.behind||0,y.value=i.hasUpstream||!1,b.value=i.upstreamBranch||``,console.log(`${Q(`@C298B:分支状态更新:领先 `)}${_.value}${Q(`@C298B: 个提交,落后 `)}${v.value}${Q(`@C298B: 个提交,上游分支:`)}${y.value?b.value:Q(`@C298B:无`)}`))}catch(e){console.error(`获取分支状态失败:`,e),_.value=0,v.value=0,y.value=!1,b.value=``}}async function se(){let e=Date.now();if(e-l.value<1e3)return console.log(`使用缓存的Git仓库状态:`,c.value?`是`:Q(`@C298B:不是`)),c.value;try{return c.value=(await(await fetch(`/api/current_directory`)).json()).isGitRepo===!0,l.value=e,console.log(`${Q(`@C298B:当前目录`)}${c.value?Q(`@C298B:是`):Q(`@C298B:不是`)}${Q(`@C298B:Git仓库`)}`),c.value}catch(t){return console.error(`检查Git仓库状态失败:`,t),c.value=!1,l.value=e,!1}}async function ce(e=!1){try{let n=await(await fetch(e?`/api/branch?force=true`:`/api/branch`)).json();n.branch&&(t.value=n.branch,console.log(`${Q(`@C298B:当前分支更新为: `)}${n.branch}${e?Q(`@C298B: (强制刷新)`):``}`))}catch(e){console.error(`获取分支信息失败:`,e)}}async function le(){if(c.value)try{console.log(Q(`@C298B:获取所有分支...`));let e=await(await fetch(`/api/branches`)).json();e.branches&&Array.isArray(e.branches)&&(n.value=e.branches,x.value=Date.now(),console.log(`${Q(`@C298B:获取到`)}${e.branches.length}${Q(`@C298B:个分支`)}`))}catch(e){console.error(`获取所有分支信息失败:`,e)}}async function ue(e){console.log(`切换到分支:`,e);try{o.value=!0;let t=await(await fetch(`/api/checkout`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({branch:e})})).json();return t.success?(J({message:`${Q(`@C298B:已切换到分支: `)}${e}`,type:`success`}),await ce(!0),await L(!0),!0):(J({message:`${Q(`@C298B:切换分支失败: `)}${t.error}`,type:`error`}),!1)}catch(e){return J({message:`${Q(`@C298B:切换分支失败: `)}${e.message}`,type:`error`}),!1}finally{o.value=!1}}async function de(){try{let e=await(await fetch(`/api/user-info`)).json();e.name&&e.email&&(i.value=e.name,a.value=e.email)}catch(e){console.error(`获取用户信息失败:`,e)}}async function fe(e,n){if(!e.trim())return J({message:Q(`@C298B:分支名称不能为空`),type:`warning`}),!1;try{s.value=!0;let r=await(await fetch(`/api/create-branch`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({newBranchName:e,baseBranch:n||t.value})})).json();return r.success?(J({message:`${Q(`@C298B:已创建并切换到分支: `)}${e}`,type:`success`}),await ce(!0),await L(!0),await le(),!0):(J({message:`${Q(`@C298B:创建分支失败: `)}${r.error}`,type:`error`}),!1)}catch(e){return J({message:`${Q(`@C298B:创建分支失败: `)}${e.message}`,type:`error`}),!1}finally{s.value=!1}}async function pe(){try{let e=await(await fetch(`/api/clear-user-config`,{method:`POST`})).json();return e.success?(i.value=``,a.value=``,J({message:Q(`@C298B:已清除Git用户配置`),type:`success`}),!0):(J({message:`${Q(`@C298B:清除配置失败: `)}${e.error}`,type:`error`}),!1)}catch(e){return J({message:`${Q(`@C298B:清除配置失败: `)}${e.message}`,type:`error`}),!1}}async function me(e,t){try{let n=await(await fetch(`/api/restore-user-config`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e,email:t})})).json();return n.success?(i.value=e,a.value=t,J({message:Q(`@C298B:已恢复Git用户配置`),type:`success`}),!0):(J({message:`${Q(`@C298B:恢复配置失败: `)}${n.error}`,type:`error`}),!1)}catch(e){return J({message:`${Q(`@C298B:恢复配置失败: `)}${e.message}`,type:`error`}),!1}}async function he(){if(!c.value)return J({message:Q(`@C298B:当前目录不是Git仓库`),type:`warning`}),{success:!1,needsMerge:!1,error:Q(`@C298B:当前目录不是Git仓库`),fullError:``,pullOutput:``};try{p.value=!0;let e=await(await fetch(`/api/pull`,{method:`POST`})).json();return e.success?(J({message:Q(`@C298B:拉取成功`),type:`success`}),await L(!0),{success:!0}):{success:!1,needsMerge:e.needsMerge||!1,error:e.error||``,fullError:e.fullError||e.error||``,pullOutput:e.pullOutput||``}}catch(e){return{success:!1,needsMerge:!1,error:e.message,fullError:e.message,pullOutput:``}}finally{p.value=!1}}async function ge(){if(!c.value)return J({message:Q(`@C298B:当前目录不是Git仓库`),type:`warning`}),!1;try{m.value=!0;let e=await(await fetch(`/api/fetch-all`,{method:`POST`})).json();return e.success?(J({message:Q(`@C298B:获取所有远程分支信息成功`),type:`success`}),await L(),!0):(J({message:`${Q(`@C298B:获取远程分支信息失败: `)}${e.error}`,type:`error`}),!1)}catch(e){return J({message:`${Q(`@C298B:获取远程分支信息失败: `)}${e.message}`,type:`error`}),!1}finally{m.value=!1}}async function R(){C.value&&C.value.disconnect();try{let e=`http://localhost:${vn}`;if(console.log(`尝试连接Socket.IO服务器:`,e),C.value=Ct(e,{reconnectionDelayMax:1e4,reconnection:!0,reconnectionAttempts:10,reconnectionDelay:1e3,timeout:2e4,autoConnect:!0,forceNew:!0,transports:[`websocket`,`polling`]}),!C.value){console.error(`Socket.IO初始化失败: socket为null`);return}console.log(Q(`@C298B:Socket.IO客户端已创建,开始注册事件监听器...`)),C.value.on(`connect`,()=>{console.log(`✅ Socket.IO连接成功,事件监听器已生效,Socket ID:`,C.value?.id)}),C.value.on(`project_info`,e=>{ee.value=e.projectPath,T.value=e.projectRoomId,console.log(`${Q(`@C298B:当前项目: `)}${e.projectPath}`),console.log(`${Q(`@C298B:房间ID: `)}${e.projectRoomId}`)}),C.value.on(`project_changed`,e=>{console.log(`${Q(`@C298B:项目已切换: `)}${e.oldProjectPath} -> ${e.newProjectPath}`),ee.value=e.newProjectPath,T.value=e.newProjectRoomId,C.value&&C.value.emit(`join_room`,e.newProjectRoomId),console.log(`${Q(`@C298B:已加入新项目房间: `)}${e.newProjectRoomId}`)}),C.value.on(`disconnect`,e=>{console.log(`与Socket.IO服务器断开连接:`,e)}),C.value.on(`git_status_update`,e=>{if(console.log(`✅ 成功监听到 git_status_update 事件:`,new Date().toLocaleTimeString()),console.log(`git_status_update data ==>`,e),console.log(`currentProjectPath.value ==>`,ee.value),console.log(`data.projectPath ==>`,e.projectPath),e.projectPath&&ee.value&&e.projectPath!==ee.value){console.log(`${Q(`@C298B:忽略不同项目的状态更新: `)}${e.projectPath}`);return}console.log(Q(`@C298B:正在更新 Git 文件状态...`)),e.porcelain!==void 0&&_e(e.porcelain)}),C.value.on(`connect_error`,e=>{console.error(`Socket连接错误:`,e.message)}),C.value.on(`connect_timeout`,()=>{console.error(Q(`@C298B:Socket连接超时`))}),C.value.on(`reconnect`,e=>{console.log(`${Q(`@C298B:Socket重连成功,尝试次数: `)}${e}`)}),C.value.on(`reconnect_attempt`,e=>{console.log(`${Q(`@C298B:Socket尝试重连,第 `)}${e}${Q(`@C298B: 次尝试`)}`)}),C.value.on(`reconnect_error`,e=>{console.error(`Socket重连错误:`,e.message)}),C.value.on(`reconnect_failed`,()=>{console.error(Q(`@C298B:Socket重连失败,已达到最大重试次数`))}),console.log(Q(`@C298B:Socket.IO事件监听器注册完成:connect, project_info, project_changed, git_status_update, monitoring_status`)),C.value&&!C.value.connected&&(console.log(Q(`@C298B:Socket未连接,尝试手动连接...`)),C.value.connect())}catch(e){console.error(`Socket.IO连接初始化失败:`,e)}}function _e(e){if(e===void 0||e===``){O.value=[];return}let t=e.split(`
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-CDAfMQIV.js","assets/rolldown-runtime-BM3Ffeng.js","assets/vendor-CIeR0bF6.css","assets/EditorView-eQBqgBEd.js","assets/_plugin-vue_export-helper-BMDM_R2D.js","assets/EditorView-Dvg7sMyU.css","assets/SourceMapView-BLkrjBFW.js","assets/SourceMapView-P9hbpXgz.css","assets/WorkbenchView-D2eEOP1R.js","assets/WorkbenchView-BMtAZx07.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{o as e}from"./rolldown-runtime-BM3Ffeng.js";import{$r as t,$t as n,Ai as r,An as i,Ar as a,Bi as o,Bn as s,Br as c,Bt as l,Ci as u,Cn as d,Cr as f,Di as p,Dn as m,Dr as h,Ei as g,En as _,Fi as v,Fn as y,Fr as b,Gi as x,Gn as S,Gr as C,Gt as ee,Hi as w,Hn as T,Hr as E,Ht as D,Ii as O,In as k,Ir as te,Jn as A,Jr as j,Jt as M,Ki as N,Kn as P,Kr as ne,Li as F,Ln as re,Lr as ie,Mi as I,Mn as ae,Mr as oe,Ni as L,Nn as se,Oi as ce,On as le,Or as ue,Pi as de,Pn as fe,Pr as pe,Qn as me,Qr as he,Qt as ge,Ri as R,Rn as _e,Rr as ve,Si as z,Sn as ye,Sr as be,Ti as xe,Tr as Se,Un as Ce,Ur as we,Ut as Te,Vi as Ee,Vn as De,Vr as Oe,Vt as ke,Wi as B,Wn as Ae,Wr as je,Xn as Me,Xr as Ne,Xt as Pe,Yn as Fe,Yr as Ie,Yt as Le,Zn as Re,Zr as ze,Zt as Be,_i as V,_n as Ve,ai as He,an as Ue,ar as We,bi as Ge,bn as Ke,br as qe,ci as Je,cn as Ye,cr as Xe,di as H,dn as Ze,dr as Qe,ei as $e,en as et,er as tt,fi as nt,fn as rt,fr as it,gi as U,gn as at,gr as ot,hi as W,hn as st,hr as ct,ii as lt,in as ut,ir as dt,ji as G,jn as ft,jr as pt,ki as mt,li as ht,ln as gt,lr as _t,mi as K,mn as vt,mr as yt,ni as bt,nn as xt,nr as St,on as Ct,or as wt,pi as Tt,pn as Et,pr as Dt,qi as q,qn as Ot,qr as kt,qt as At,ri as jt,rn as Mt,rr as Nt,sr as Pt,ti as Ft,tn as It,tr as Lt,ui as Rt,un as J,ur as zt,vi as Y,vn as Bt,vr as Vt,wi as X,wn as Ht,wr as Ut,xi as Z,xn as Wt,xr as Gt,yi as Kt,yn as qt,yr as Jt,zi as Yt,zn as Xt,zr as Zt}from"./vendor-CDAfMQIV.js";import{a as Qt,i as $t,n as Q,r as en,t as $}from"./_plugin-vue_export-helper-BMDM_R2D.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();function tn(e){if(!e)return`Zen GitSync`;let t=e.replace(/\\/g,`/`).split(`/`).filter(e=>e);return t.length>0?t[t.length-1]:`Zen GitSync`}var nn=[`width`,`height`],rn=X({__name:`TreeIcon`,props:{size:{default:`1em`}},setup(e){return(e,t)=>(G(),Y(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,width:e.size,height:e.size,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`},t[0]||=[Ge(`<line x1="3" y1="2" x2="3" y2="14"></line><line x1="3" y1="4" x2="6" y2="4"></line><rect x="2" y="3" width="8" height="2" rx="0.5" fill="currentColor" stroke="none"></rect><line x1="3" y1="8" x2="6" y2="8"></line><rect x="4" y="7" width="8" height="2" rx="0.5" fill="currentColor" stroke="none"></rect><line x1="3" y1="12" x2="6" y2="12"></line><rect x="6" y="11" width="8" height="2" rx="0.5" fill="currentColor" stroke="none"></rect>`,7)],8,nn))}}),an=[`xlink:href`],on=$(X({__name:`index`,props:{iconClass:{type:String,required:!0},className:{type:String,default:``}},setup(e){let t=e,n=K(()=>`#icon-${t.iconClass}`),r=K(()=>t.className?`svg-icon ${t.className}`:`svg-icon`);return(e,t)=>(G(),Y(`svg`,{class:x(r.value),"aria-hidden":`true`},[W(`use`,{"xlink:href":n.value},null,8,an)],2))}}),[[`__scopeId`,`data-v-0adf8958`]]),sn=[`disabled`],cn=[`src`],ln=$(X({__name:`IconButton`,props:{iconClass:{},imageUrl:{},size:{default:`medium`},disabled:{type:Boolean,default:!1},active:{type:Boolean,default:!1},tooltip:{default:``},customClass:{default:``},color:{default:``},hoverColor:{default:`var(--color-primary)`}},emits:[`click`],setup(e,{emit:t}){He(e=>({"156eeeef":e.hoverColor}));let n=e,r=t,i=K(()=>`icon-button--${n.size}`),a=e=>{n.disabled||r(`click`,e)};return(e,t)=>{let n=A;return G(),U(n,{content:e.tooltip,disabled:!e.tooltip,placement:`bottom`,"show-after":300},{default:R(()=>[W(`button`,{class:x([`icon-button`,[i.value,e.customClass,{"is-disabled":e.disabled,"is-active":e.active}]]),disabled:e.disabled,onClick:a},[e.iconClass?(G(),U(on,{key:0,"icon-class":e.iconClass,style:N({color:e.color||void 0})},null,8,[`icon-class`,`style`])):e.imageUrl?(G(),Y(`img`,{key:1,src:e.imageUrl,alt:`icon`,class:`icon-image`},null,8,cn)):de(e.$slots,`default`,{key:2},void 0,!0)],10,sn)]),_:3},8,[`content`,`disabled`])}}}),[[`__scopeId`,`data-v-48359d01`]]),un=[`width`,`height`],dn=X({__name:`ListIcon`,props:{size:{default:`1em`}},setup(e){return(e,t)=>(G(),Y(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,width:e.size,height:e.size,fill:`currentColor`,stroke:`none`},t[0]||=[W(`rect`,{x:`2`,y:`3`,width:`12`,height:`2`,rx:`0.5`},null,-1),W(`rect`,{x:`2`,y:`7`,width:`12`,height:`2`,rx:`0.5`},null,-1),W(`rect`,{x:`2`,y:`11`,width:`12`,height:`2`,rx:`0.5`},null,-1)],8,un))}}),fn={"zh-CN":Ue,"en-US":ut};function pn(e){return fn[e]||Ue}var mn=Ft(`locale`,()=>{let e=w(en()),t=K(()=>pn(e.value));async function n(t){Qt(t),e.value=t;let n=hn();n.locale!==t&&await n.saveGeneralSettings({locale:t})}return{currentLocale:e,elementPlusLocale:t,changeLocale:n}}),hn=Ft(`config`,()=>{let e=w(``),t=w([]),n=w([]),r=w([]),i=w([]),a=w([]),o=w([]),s=w([]),c=w([]),l=w(!1),u=w({enabled:!1,type:`command`,refId:``}),d=w(!1),f=w(!1),p=w(``),m=w(``),h=w(``),g=w(!0),_=w(!1),v=w(!0),y=w(!1),b=w(!1),x=w(!0),S=w(`light`),C=w(`zh-CN`),ee=w([]),T={layout:{leftRatio:.25,midRatio:.375,rightRatio:.375,topRatio:.5},fileListViewMode:`list`,fileDiffSplitPercent:35,commandConsole:{expanded:!0,useTerminal:!0,showTerminalSessions:!0,splitPercent:25},editorAutoSave:!1},E=w(JSON.parse(JSON.stringify(T))),D=w(!1);function O(e){h.value=e||``}function k(e){let t=document.documentElement;e===`dark`?t.setAttribute(`data-theme`,`dark`):e===`light`?t.removeAttribute(`data-theme`):window.matchMedia(`(prefers-color-scheme: dark)`).matches?t.setAttribute(`data-theme`,`dark`):t.removeAttribute(`data-theme`)}k(S.value);let te=K(()=>({defaultCommitMessage:e.value,descriptionTemplates:t.value,scopeTemplates:n.value,messageTemplates:r.value,commandTemplates:i.value,lockedFiles:a.value,customCommands:o.value,orchestrations:s.value,startupItems:c.value,startupAutoRun:l.value,afterQuickPushAction:u.value,currentDirectory:h.value})),A=K(()=>!!(p.value&&p.value.trim()));async function j(){try{let e=await fetch(`/api/config/open-file`,{method:`POST`,headers:{"Content-Type":`application/json`}}),t=await e.json().catch(()=>({}));return e.ok&&t?.success?(J.success(Q(`@D50BB:已打开系统配置文件`)),!0):(J.error(`${Q(`@D50BB:打开系统配置文件失败: `)}${t?.error||``}`),!1)}catch(e){return J.error(`${Q(`@D50BB:打开系统配置文件失败: `)}${e.message}`),!1}}async function M(w=!1){if(!w&&f.value&&!d.value)return console.log(Q(`@D50BB:使用缓存的配置信息`)),te.value;d.value=!0;try{d.value=!0,console.log(Q(`@D50BB:加载配置信息...`));let w=await fetch(`/api/config/getConfig`),O=await w.json().catch(()=>({}));if(!w.ok||O&&O.success===!1){let e=String(O?.error||Q(`@D50BB:加载配置失败`)),t=String(O?.configPath||``),n=t?`\n${Q(`@D50BB:配置文件`)}: ${t}`:``;return J.error(`${Q(`@D50BB:加载配置失败: `)}${e}${n}`),p.value=e,m.value=t,null}if(p.value=``,m.value=``,e.value=O.defaultCommitMessage||``,t.value=O.descriptionTemplates||[],n.value=O.scopeTemplates||[],r.value=O.messageTemplates||[],i.value=O.commandTemplates||[],a.value=O.lockedFiles||[],o.value=O.customCommands||[],s.value=O.orchestrations||[],c.value=(O.startupItems||[]).map(e=>({id:String(e?.id??``),type:e?.type===`workflow`?`workflow`:`command`,refId:String(e?.refId??e?.commandId??``),createdAt:Number(e?.createdAt??Date.now()),enabled:typeof e?.enabled==`boolean`?e.enabled:!0})).filter(e=>e.id&&e.refId),l.value=O.startupAutoRun||!1,u.value={enabled:!!O?.afterQuickPushAction?.enabled,type:O?.afterQuickPushAction?.type===`workflow`?`workflow`:`command`,refId:String(O?.afterQuickPushAction?.refId||``).trim()},O.isStandardCommit!==void 0&&(v.value=!!O.isStandardCommit),O.skipHooks!==void 0&&(y.value=!!O.skipHooks),O.autoQuickPushOnEnter!==void 0&&(b.value=!!O.autoQuickPushOnEnter),O.autoSetDefaultMessage!==void 0&&(_.value=!!O.autoSetDefaultMessage),O.autoClosePushModal!==void 0&&(g.value=!!O.autoClosePushModal),O.pullBeforePush!==void 0&&(x.value=!!O.pullBeforePush),Array.isArray(O.models)&&(ee.value=O.models),O.theme&&[`light`,`dark`,`auto`].includes(O.theme)&&(S.value=O.theme,k(O.theme)),O.locale&&[`zh-CN`,`en-US`].includes(O.locale)){C.value=O.locale,Qt(O.locale);let e=mn();e.currentLocale=O.locale}if(O.currentDirectory&&(h.value=O.currentDirectory),O.ui==null){let e=e=>{try{return localStorage.getItem(e)}catch{return null}},t={},n=e(`zen-gitsync-layout-left-ratio`),r=e(`zen-gitsync-layout-mid-ratio`),i=e(`zen-gitsync-layout-right-ratio`),a=e(`zen-gitsync-layout-top-ratio`);if(n||r||i||a){let e=(e,t)=>{let n=e==null?NaN:parseFloat(e);return Number.isFinite(n)?n:t};t.layout={leftRatio:e(n,T.layout.leftRatio),midRatio:e(r,T.layout.midRatio),rightRatio:e(i,T.layout.rightRatio),topRatio:e(a,T.layout.topRatio)}}let o=e(`zen-gitsync-file-list-view-mode`);(o===`list`||o===`tree`)&&(t.fileListViewMode=o);let s=e(`zen-gitsync-filediff-ratio`)??e(`fileDiff.splitPercent`);if(s!=null){let e=parseFloat(s);Number.isFinite(e)&&(t.fileDiffSplitPercent=Math.min(85,Math.max(15,e)))}let c=e(`useTerminal`),l=e(`isConsoleExpanded`),u=e(`showTerminalSessions`),d=e(`zen-gitsync-commandconsole-ratio`);if(c!==null||l!==null||u!==null||d!=null){let e=d==null?NaN:parseFloat(d);t.commandConsole={useTerminal:c!==`false`,expanded:l!==`false`,showTerminalSessions:u==null?!0:u===`true`,splitPercent:Number.isFinite(e)?Math.min(85,Math.max(15,e)):T.commandConsole.splitPercent}}let f=e(`zen-gitsync-editor-auto-save`);f!=null&&(t.editorAutoSave=f===`true`),Object.keys(t).length>0&&(E.value={...E.value,...t}),Object.keys(t).length>0&&ie(t,{immediate:!0}).catch(e=>{console.error(`迁移 UI 设置到文件失败:`,e)});try{[`zen-gitsync-theme`,`zen-gitsync-locale`,`zen-gitsync-editor-auto-save`,`zen-gitsync-file-list-view-mode`,`zen-gitsync-filediff-ratio`,`fileDiff.splitPercent`,`isConsoleExpanded`,`useTerminal`,`showTerminalSessions`,`zen-gitsync-commandconsole-ratio`,`zen-gitsync-layout-left-ratio`,`zen-gitsync-layout-mid-ratio`,`zen-gitsync-layout-right-ratio`,`zen-gitsync-layout-top-ratio`,`locale`].forEach(e=>localStorage.removeItem(e))}catch{}}else E.value={layout:{...T.layout,...O.ui.layout||{}},fileListViewMode:O.ui.fileListViewMode===`tree`?`tree`:`list`,fileDiffSplitPercent:Number.isFinite(Number(O.ui.fileDiffSplitPercent))?Math.min(85,Math.max(15,Number(O.ui.fileDiffSplitPercent))):T.fileDiffSplitPercent,commandConsole:{expanded:typeof O.ui.commandConsole?.expanded==`boolean`?O.ui.commandConsole.expanded:T.commandConsole.expanded,useTerminal:typeof O.ui.commandConsole?.useTerminal==`boolean`?O.ui.commandConsole.useTerminal:T.commandConsole.useTerminal,showTerminalSessions:typeof O.ui.commandConsole?.showTerminalSessions==`boolean`?O.ui.commandConsole.showTerminalSessions:T.commandConsole.showTerminalSessions,splitPercent:Number.isFinite(Number(O.ui.commandConsole?.splitPercent))?Math.min(85,Math.max(15,Number(O.ui.commandConsole.splitPercent))):T.commandConsole.splitPercent},editorAutoSave:typeof O.ui.editorAutoSave==`boolean`?O.ui.editorAutoSave:T.editorAutoSave};return D.value=!0,f.value=!0,console.log(Q(`@D50BB:配置信息加载完成`)),te.value}catch(e){return console.error(`加载配置失败:`,e),J.error(`${Q(`@D50BB:加载配置失败: `)}${e.message}`),p.value=e.message,null}finally{d.value=!1}}async function N(){try{await fetch(`/api/config/save-commit-settings`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({isStandardCommit:v.value,skipHooks:y.value,autoQuickPushOnEnter:b.value,autoSetDefaultMessage:_.value,autoClosePushModal:g.value,pullBeforePush:x.value})})}catch(e){console.error(`保存提交设置失败:`,e)}}F([v,y,b,_,g,x],()=>{f.value&&N()});let P=null,ne={};async function re(){if(P&&=(clearTimeout(P),null),Object.keys(ne).length===0)return;let e=ne;ne={};try{await fetch(`/api/config/save-ui-settings`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})}catch(e){console.error(`保存 UI 设置失败:`,e)}}async function ie(e,t={}){if(D.value){if(t.immediate){Object.assign(ne,e),await re();return}Object.assign(ne,e),P&&clearTimeout(P),P=setTimeout(()=>{re()},300)}}async function I(){return E.value.layout={...T.layout},await ie({layout:E.value.layout},{immediate:!0}),E.value.layout}F(()=>E.value.fileListViewMode,e=>{D.value&&ie({fileListViewMode:e})}),F(()=>E.value.fileDiffSplitPercent,e=>{D.value&&ie({fileDiffSplitPercent:e})}),F(()=>E.value.editorAutoSave,e=>{D.value&&ie({editorAutoSave:e})}),F(()=>E.value.layout,e=>{D.value&&ie({layout:e})},{deep:!0}),F(()=>E.value.commandConsole,e=>{D.value&&ie({commandConsole:e})},{deep:!0}),typeof window<`u`&&window.addEventListener(`beforeunload`,()=>{re()});async function ae(t){try{let n=await(await fetch(`/api/config/saveDefaultMessage`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({defaultCommitMessage:t})})).json();return n.success?(e.value=t,J.success(Q(`@D50BB:默认提交信息已保存`)),!0):(J.error(`${Q(`@D50BB:保存失败: `)}${n.error}`),!1)}catch(e){return J.error(`${Q(`@D50BB:保存失败: `)}${e.message}`),!1}}async function oe(e){try{let t=await(await fetch(`/api/config/save-after-quick-push-action`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({afterQuickPushAction:{enabled:!!e?.enabled,type:e?.type===`workflow`?`workflow`:`command`,refId:String(e?.refId||``).trim()}})})).json();return t.success?(u.value={enabled:!!e?.enabled,type:e?.type===`workflow`?`workflow`:`command`,refId:String(e?.refId||``).trim()},!0):(J.error(`保存提交后启动项失败: ${t.error}`),!1)}catch(e){return J.error(`保存提交后启动项失败: ${e.message}`),!1}}async function L(e,a){try{let o=await(await fetch(`/api/config/save-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({template:e,type:a})})).json();return o.success?(a===`description`?t.value.includes(e)||t.value.push(e):a===`scope`?n.value.includes(e)||n.value.push(e):a===`message`?r.value.includes(e)||r.value.push(e):a===`command`&&(i.value.includes(e)||i.value.push(e)),J.success(Q(`@D50BB:模板已保存`)),!0):(J.error(`${Q(`@D50BB:保存模板失败: `)}${o.error}`),!1)}catch(e){return J.error(`${Q(`@D50BB:保存模板失败: `)}${e.message}`),!1}}async function se(e,a){try{let o=await(await fetch(`/api/config/delete-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({template:e,type:a})})).json();return o.success?(a===`description`?t.value=t.value.filter(t=>t!==e):a===`scope`?n.value=n.value.filter(t=>t!==e):a===`message`?r.value=r.value.filter(t=>t!==e):a===`command`&&(i.value=i.value.filter(t=>t!==e)),J.success(Q(`@D50BB:模板已删除`)),!0):(J.error(`${Q(`@D50BB:删除模板失败: `)}${o.error}`),!1)}catch(e){return J.error(`${Q(`@D50BB:删除模板失败: `)}${e.message}`),!1}}async function ce(e,a,o){try{let s=await(await fetch(`/api/config/update-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({oldTemplate:e,newTemplate:a,type:o})})).json();if(s.success){if(o===`description`){let n=t.value.indexOf(e);n!==-1&&(t.value[n]=a)}else if(o===`scope`){let t=n.value.indexOf(e);t!==-1&&(n.value[t]=a)}else if(o===`message`){let t=r.value.indexOf(e);t!==-1&&(r.value[t]=a)}else if(o===`command`){let t=i.value.indexOf(e);t!==-1&&(i.value[t]=a)}return J.success(Q(`@D50BB:模板已更新`)),!0}else return J.error(`${Q(`@D50BB:更新模板失败: `)}${s.error}`),!1}catch(e){return J.error(`${Q(`@D50BB:更新模板失败: `)}${e.message}`),!1}}async function le(e,a){try{let o=await(await fetch(`/api/config/pin-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({template:e,type:a})})).json();return o.success?(a===`description`?(t.value=t.value.filter(t=>t!==e),t.value.unshift(e)):a===`scope`?(n.value=n.value.filter(t=>t!==e),n.value.unshift(e)):a===`message`?(r.value=r.value.filter(t=>t!==e),r.value.unshift(e)):a===`command`&&(i.value=i.value.filter(t=>t!==e),i.value.unshift(e)),J.success(Q(`@D50BB:模板已置顶`)),!0):(J.error(`${Q(`@D50BB:置顶模板失败: `)}${o.error}`),!1)}catch(e){return J.error(`${Q(`@D50BB:置顶模板失败: `)}${e.message}`),!1}}async function ue(){try{let e=await(await fetch(`/api/locked-files`)).json();return e.success?(a.value=e.lockedFiles||[],e.lockedFiles):(J.error(`${Q(`@D50BB:加载锁定文件列表失败: `)}${e.error}`),[])}catch(e){return console.error(`加载锁定文件列表失败:`,e),J.error(`${Q(`@D50BB:加载锁定文件列表失败: `)}${e.message}`),[]}}async function de(e){try{let t=await(await fetch(`/api/lock-file`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return t.success?(await ue(),J.success(`${Q(`@D50BB:文件已锁定: `)}${e}`),!0):(J.error(`${Q(`@D50BB:锁定文件失败: `)}${t.error}`),!1)}catch(e){return console.error(`锁定文件失败:`,e),J.error(`${Q(`@D50BB:锁定文件失败: `)}${e.message}`),!1}}async function fe(e){try{let t=await(await fetch(`/api/unlock-file`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return t.success?(await ue(),J.success(`${Q(`@D50BB:文件已解锁: `)}${e}`),!0):(J.error(`${Q(`@D50BB:解锁文件失败: `)}${t.error}`),!1)}catch(e){return console.error(`解锁文件失败:`,e),J.error(`${Q(`@D50BB:解锁文件失败: `)}${e.message}`),!1}}async function pe(e){try{let t=await(await fetch(`/api/check-file-lock`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return t.success?t.isLocked:(console.error(`检查文件锁定状态失败:`,t.error),!1)}catch(e){return console.error(`检查文件锁定状态失败:`,e),!1}}async function me(e){try{let t=await(await fetch(`/api/config/save-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({command:e})})).json();return t.success?(await M(!0),J.success(Q(`@CMD01:命令已保存`)),!0):(J.error(`${Q(`@CMD01:保存命令失败: `)}${t.error}`),!1)}catch(e){return J.error(`${Q(`@CMD01:保存命令失败: `)}${e.message}`),!1}}async function he(e){try{let t=await(await fetch(`/api/config/delete-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e})})).json();return t.success?(await M(!0),J.success(Q(`@CMD01:命令已删除`)),!0):(J.error(`${Q(`@CMD01:删除命令失败: `)}${t.error}`),!1)}catch(e){return J.error(`${Q(`@CMD01:删除命令失败: `)}${e.message}`),!1}}async function ge(e,t){try{let n=await(await fetch(`/api/config/update-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e,command:t})})).json();return n.success?(await M(!0),J.success(Q(`@CMD01:命令已更新`)),!0):(J.error(`${Q(`@CMD01:更新命令失败: `)}${n.error}`),!1)}catch(e){return J.error(`${Q(`@CMD01:更新命令失败: `)}${e.message}`),!1}}async function R(e){try{let t=await(await fetch(`/api/config/pin-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e})})).json();return t.success?(await M(!0),!0):(J.error(t.error),!1)}catch(e){return J.error(e.message),!1}}async function _e(e){try{let t=await(await fetch(`/api/config/save-orchestration`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({orchestration:e})})).json();return t.success?(await M(!0),J.success(Q(`@ORCH:编排已保存`)),t.orchestration||null):(J.error(`${Q(`@ORCH:保存编排失败: `)}${t.error}`),null)}catch(e){return J.error(`${Q(`@ORCH:保存编排失败: `)}${e.message}`),null}}async function ve(e){try{let t=await(await fetch(`/api/config/delete-orchestration`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e})})).json();return t.success?(await M(!0),J.success(Q(`@ORCH:编排已删除`)),!0):(J.error(`${Q(`@ORCH:删除编排失败: `)}${t.error}`),!1)}catch(e){return J.error(`${Q(`@ORCH:删除编排失败: `)}${e.message}`),!1}}async function z(e,t){try{let n=await(await fetch(`/api/config/update-orchestration`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e,orchestration:t})})).json();return n.success?(await M(!0),J.success(Q(`@ORCH:编排已更新`)),!0):(J.error(`${Q(`@ORCH:更新编排失败: `)}${n.error}`),!1)}catch(e){return J.error(`${Q(`@ORCH:更新编排失败: `)}${e.message}`),!1}}async function ye(e,t){try{let n=await(await fetch(`/api/config/save-startup-items`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({startupItems:e,startupAutoRun:t===void 0?l.value:t})})).json();return n.success?(c.value=e,t!==void 0&&(l.value=t),!0):(J.error(`保存启动项失败: ${n.error}`),!1)}catch(e){return J.error(`保存启动项失败: ${e.message}`),!1}}async function be(e){try{let t=await(await fetch(`/api/config/save-models`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({models:e})})).json();return t.success?(ee.value=e,!0):(J.error(`${Q(`@D50BB:保存模型失败: `)}${t.error}`),!1)}catch(e){return J.error(`${Q(`@D50BB:保存模型失败: `)}${e.message}`),!1}}async function xe(e){try{let t=await(await fetch(`/api/config/save-general-settings`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})).json();if(t.success){if(e.theme&&(S.value=e.theme,k(e.theme)),e.locale){C.value=e.locale,Qt(e.locale);let t=mn();t.currentLocale=e.locale}return!0}else return J.error(`保存通用设置失败: ${t.error}`),!1}catch(e){return J.error(`保存通用设置失败: ${e.message}`),!1}}return{models:ee,defaultCommitMessage:e,descriptionTemplates:t,scopeTemplates:n,messageTemplates:r,commandTemplates:i,lockedFiles:a,customCommands:o,orchestrations:s,startupItems:c,startupAutoRun:l,afterQuickPushAction:u,isLoading:d,isLoaded:f,configLoadError:p,configFilePath:m,hasConfigLoadError:A,currentDirectory:h,config:te,autoClosePushModal:g,autoSetDefaultMessage:_,isStandardCommit:v,skipHooks:y,autoQuickPushOnEnter:b,pullBeforePush:x,theme:S,locale:C,ui:E,isUiLoaded:D,loadConfig:M,setCurrentDirectory:O,openSystemConfigFile:j,saveTemplate:L,saveModels:be,saveGeneralSettings:xe,saveUiSettings:ie,resetUiLayout:I,applyTheme:k,saveDefaultMessage:ae,deleteTemplate:se,updateTemplate:ce,pinTemplate:le,loadLockedFiles:ue,lockFile:de,unlockFile:fe,isFileLocked:pe,saveCustomCommand:me,deleteCustomCommand:he,updateCustomCommand:ge,pinCustomCommand:R,saveOrchestration:_e,deleteOrchestration:ve,updateOrchestration:z,saveStartupItems:ye,saveAfterQuickPushAction:oe,saveCommitSettings:N}}),gn=800;function _n(){let e=window.location.port||`80`;if(e===`5173`||e===`4173`||e===`5544`)return console.log(`${Q(`@C298B:开发环境:从环境变量读取后端端口 `)}4177`),4177;let t=parseInt(e,10);return console.log(`${Q(`@C298B:生产环境:使用当前页面端口 `)}${t}`),t}var vn=_n(),yn=Ft(`git`,()=>{let e=hn(),t=w(``),n=w([]),i=w(``),a=w(``),o=w(!1),s=w(!1),c=w(!1),l=w(0),u=w(``),d=w(!1),f=w(!1),p=w(!1),m=w(!1),h=w(!1),g=w(!1),_=w(0),v=w(0),y=w(!1),b=w(``),x=w(0),S=w(``),C=w(null),ee=w(``),T=w(``),E=w([]),D=w({staged:[],unstaged:[],untracked:[]}),O=w([]),k=w(!1),te=w(!1),A=w(!1),j=w(!1),M=w(!1),N=w(1),P=w(!0),ne=w(0),F=w([]),re=w(!1),ie=w(!1),I=w(!1),ae=w(!1);function oe(){t.value=``,n.value=[],i.value=``,a.value=``,o.value=!1,s.value=!1,c.value=!1,l.value=0,_.value=0,v.value=0,y.value=!1,b.value=``,x.value=0,f.value=!1,p.value=!1,m.value=!1,h.value=!1,u.value=``,d.value=!1,E.value=[],D.value={staged:[],unstaged:[],untracked:[]},O.value=[],k.value=!1,te.value=!1,A.value=!1,j.value=!1,M.value=!1,N.value=1,P.value=!0,ne.value=0}async function L(e=!1,t=!1){if(c.value)try{console.log(Q(`@C298B:获取分支状态...`));let n=`/api/branch-status`,r=[];e&&r.push(`force=true`),t&&r.push(`countOnly=true`),r.length>0&&(n+=`?`+r.join(`&`));let i=await(await fetch(n)).json();i&&(_.value=i.ahead||0,v.value=i.behind||0,y.value=i.hasUpstream||!1,b.value=i.upstreamBranch||``,console.log(`${Q(`@C298B:分支状态更新:领先 `)}${_.value}${Q(`@C298B: 个提交,落后 `)}${v.value}${Q(`@C298B: 个提交,上游分支:`)}${y.value?b.value:Q(`@C298B:无`)}`))}catch(e){console.error(`获取分支状态失败:`,e),_.value=0,v.value=0,y.value=!1,b.value=``}}async function se(){let e=Date.now();if(e-l.value<1e3)return console.log(`使用缓存的Git仓库状态:`,c.value?`是`:Q(`@C298B:不是`)),c.value;try{return c.value=(await(await fetch(`/api/current_directory`)).json()).isGitRepo===!0,l.value=e,console.log(`${Q(`@C298B:当前目录`)}${c.value?Q(`@C298B:是`):Q(`@C298B:不是`)}${Q(`@C298B:Git仓库`)}`),c.value}catch(t){return console.error(`检查Git仓库状态失败:`,t),c.value=!1,l.value=e,!1}}async function ce(e=!1){try{let n=await(await fetch(e?`/api/branch?force=true`:`/api/branch`)).json();n.branch&&(t.value=n.branch,console.log(`${Q(`@C298B:当前分支更新为: `)}${n.branch}${e?Q(`@C298B: (强制刷新)`):``}`))}catch(e){console.error(`获取分支信息失败:`,e)}}async function le(){if(c.value)try{console.log(Q(`@C298B:获取所有分支...`));let e=await(await fetch(`/api/branches`)).json();e.branches&&Array.isArray(e.branches)&&(n.value=e.branches,x.value=Date.now(),console.log(`${Q(`@C298B:获取到`)}${e.branches.length}${Q(`@C298B:个分支`)}`))}catch(e){console.error(`获取所有分支信息失败:`,e)}}async function ue(e){console.log(`切换到分支:`,e);try{o.value=!0;let t=await(await fetch(`/api/checkout`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({branch:e})})).json();return t.success?(J({message:`${Q(`@C298B:已切换到分支: `)}${e}`,type:`success`}),await ce(!0),await L(!0),!0):(J({message:`${Q(`@C298B:切换分支失败: `)}${t.error}`,type:`error`}),!1)}catch(e){return J({message:`${Q(`@C298B:切换分支失败: `)}${e.message}`,type:`error`}),!1}finally{o.value=!1}}async function de(){try{let e=await(await fetch(`/api/user-info`)).json();e.name&&e.email&&(i.value=e.name,a.value=e.email)}catch(e){console.error(`获取用户信息失败:`,e)}}async function fe(e,n){if(!e.trim())return J({message:Q(`@C298B:分支名称不能为空`),type:`warning`}),!1;try{s.value=!0;let r=await(await fetch(`/api/create-branch`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({newBranchName:e,baseBranch:n||t.value})})).json();return r.success?(J({message:`${Q(`@C298B:已创建并切换到分支: `)}${e}`,type:`success`}),await ce(!0),await L(!0),await le(),!0):(J({message:`${Q(`@C298B:创建分支失败: `)}${r.error}`,type:`error`}),!1)}catch(e){return J({message:`${Q(`@C298B:创建分支失败: `)}${e.message}`,type:`error`}),!1}finally{s.value=!1}}async function pe(){try{let e=await(await fetch(`/api/clear-user-config`,{method:`POST`})).json();return e.success?(i.value=``,a.value=``,J({message:Q(`@C298B:已清除Git用户配置`),type:`success`}),!0):(J({message:`${Q(`@C298B:清除配置失败: `)}${e.error}`,type:`error`}),!1)}catch(e){return J({message:`${Q(`@C298B:清除配置失败: `)}${e.message}`,type:`error`}),!1}}async function me(e,t){try{let n=await(await fetch(`/api/restore-user-config`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e,email:t})})).json();return n.success?(i.value=e,a.value=t,J({message:Q(`@C298B:已恢复Git用户配置`),type:`success`}),!0):(J({message:`${Q(`@C298B:恢复配置失败: `)}${n.error}`,type:`error`}),!1)}catch(e){return J({message:`${Q(`@C298B:恢复配置失败: `)}${e.message}`,type:`error`}),!1}}async function he(){if(!c.value)return J({message:Q(`@C298B:当前目录不是Git仓库`),type:`warning`}),{success:!1,needsMerge:!1,error:Q(`@C298B:当前目录不是Git仓库`),fullError:``,pullOutput:``};try{p.value=!0;let e=await(await fetch(`/api/pull`,{method:`POST`})).json();return e.success?(J({message:Q(`@C298B:拉取成功`),type:`success`}),await L(!0),{success:!0}):{success:!1,needsMerge:e.needsMerge||!1,error:e.error||``,fullError:e.fullError||e.error||``,pullOutput:e.pullOutput||``}}catch(e){return{success:!1,needsMerge:!1,error:e.message,fullError:e.message,pullOutput:``}}finally{p.value=!1}}async function ge(){if(!c.value)return J({message:Q(`@C298B:当前目录不是Git仓库`),type:`warning`}),!1;try{m.value=!0;let e=await(await fetch(`/api/fetch-all`,{method:`POST`})).json();return e.success?(J({message:Q(`@C298B:获取所有远程分支信息成功`),type:`success`}),await L(),!0):(J({message:`${Q(`@C298B:获取远程分支信息失败: `)}${e.error}`,type:`error`}),!1)}catch(e){return J({message:`${Q(`@C298B:获取远程分支信息失败: `)}${e.message}`,type:`error`}),!1}finally{m.value=!1}}async function R(){C.value&&C.value.disconnect();try{let e=`http://localhost:${vn}`;if(console.log(`尝试连接Socket.IO服务器:`,e),C.value=Ct(e,{reconnectionDelayMax:1e4,reconnection:!0,reconnectionAttempts:10,reconnectionDelay:1e3,timeout:2e4,autoConnect:!0,forceNew:!0,transports:[`websocket`,`polling`]}),!C.value){console.error(`Socket.IO初始化失败: socket为null`);return}console.log(Q(`@C298B:Socket.IO客户端已创建,开始注册事件监听器...`)),C.value.on(`connect`,()=>{console.log(`✅ Socket.IO连接成功,事件监听器已生效,Socket ID:`,C.value?.id)}),C.value.on(`project_info`,e=>{ee.value=e.projectPath,T.value=e.projectRoomId,console.log(`${Q(`@C298B:当前项目: `)}${e.projectPath}`),console.log(`${Q(`@C298B:房间ID: `)}${e.projectRoomId}`)}),C.value.on(`project_changed`,e=>{console.log(`${Q(`@C298B:项目已切换: `)}${e.oldProjectPath} -> ${e.newProjectPath}`),ee.value=e.newProjectPath,T.value=e.newProjectRoomId,C.value&&C.value.emit(`join_room`,e.newProjectRoomId),console.log(`${Q(`@C298B:已加入新项目房间: `)}${e.newProjectRoomId}`)}),C.value.on(`disconnect`,e=>{console.log(`与Socket.IO服务器断开连接:`,e)}),C.value.on(`git_status_update`,e=>{if(console.log(`✅ 成功监听到 git_status_update 事件:`,new Date().toLocaleTimeString()),console.log(`git_status_update data ==>`,e),console.log(`currentProjectPath.value ==>`,ee.value),console.log(`data.projectPath ==>`,e.projectPath),e.projectPath&&ee.value&&e.projectPath!==ee.value){console.log(`${Q(`@C298B:忽略不同项目的状态更新: `)}${e.projectPath}`);return}console.log(Q(`@C298B:正在更新 Git 文件状态...`)),e.porcelain!==void 0&&_e(e.porcelain)}),C.value.on(`connect_error`,e=>{console.error(`Socket连接错误:`,e.message)}),C.value.on(`connect_timeout`,()=>{console.error(Q(`@C298B:Socket连接超时`))}),C.value.on(`reconnect`,e=>{console.log(`${Q(`@C298B:Socket重连成功,尝试次数: `)}${e}`)}),C.value.on(`reconnect_attempt`,e=>{console.log(`${Q(`@C298B:Socket尝试重连,第 `)}${e}${Q(`@C298B: 次尝试`)}`)}),C.value.on(`reconnect_error`,e=>{console.error(`Socket重连错误:`,e.message)}),C.value.on(`reconnect_failed`,()=>{console.error(Q(`@C298B:Socket重连失败,已达到最大重试次数`))}),console.log(Q(`@C298B:Socket.IO事件监听器注册完成:connect, project_info, project_changed, git_status_update, monitoring_status`)),C.value&&!C.value.connected&&(console.log(Q(`@C298B:Socket未连接,尝试手动连接...`)),C.value.connect())}catch(e){console.error(`Socket.IO连接初始化失败:`,e)}}function _e(e){if(e===void 0||e===``){O.value=[];return}let t=e.split(`
|
|
3
3
|
`),n=[];for(let e of t){let t=e.match(/^([ MADRCU\?]{2})\s+(.+)$/);if(t){let e=``,r=t[1],i=r.charAt(0),a=r.charAt(1);e=r===`UU`||r===`AA`||r===`DD`||r===`AU`||r===`UA`||r===`DU`||r===`UD`?`conflicted`:i===`A`||i===`M`||i===`D`||i===`R`?`added`:i===` `&&a===`M`?`modified`:i===` `&&a===`D`?`deleted`:r===`??`?`untracked`:`other`,n.push({path:t[2],type:e})}}O.value=n}async function ve(e=!0){if(!c.value){console.log(Q(`@C298B:当前目录不是Git仓库,跳过加载提交历史`));return}try{k.value=!0,console.log(Q(`@C298B:开始加载提交历史...`));let e=new Date().getTime(),t=await(await fetch(`/api/log?page=1&_t=${e}`)).json();t&&t.data&&Array.isArray(t.data)?(E.value=[...t.data],console.log(`${Q(`@C298B:提交历史加载完成,共 `)}${E.value.length}${Q(`@C298B: 条记录`)}`)):(console.warn(`API返回的提交历史格式不正确:`,t),E.value=[])}catch(t){console.error(`获取提交历史失败:`,t),e&&J({message:`${Q(`@C298B:获取提交历史失败: `)}${t.message}`,type:`error`})}finally{k.value=!1}}async function z(){console.log(Q(`@C298B:刷新提交历史...`)),N.value=1,P.value=!1,await ve(!0),ne.value=E.value.length,console.log(Q(`@C298B:提交历史刷新完成`))}async function ye(){if(!c.value){console.log(Q(`@C298B:当前目录不是Git仓库,跳过加载Git状态`));return}try{te.value=!0,await be()}catch(e){console.error(`获取Git状态失败:`,e),J({message:`${Q(`@C298B:获取Git状态失败: `)}${e.message}`,type:`error`})}finally{te.value=!1}}async function be(){if(console.log(Q(`@C298B:开始获取Git状态(porcelain格式)...`)),!c.value){console.log(Q(`@C298B:当前目录不是Git仓库,跳过加载Git状态`));return}try{let e=await(await fetch(`/api/status_porcelain`)).json();e.status===void 0?O.value=[]:_e(e.status),g.value=!!e.isMergeInProgress,e.isMergeInProgress&&e.mergeMessage&&!S.value&&(S.value=String(e.mergeMessage))}catch(e){console.error(`获取Git状态(porcelain)失败:`,e),J({message:`${Q(`@C298B:获取Git状态(porcelain)失败: `)}${e.message}`,type:`error`}),O.value=[]}}async function xe(){if(!c.value)return J.warning(Q(`@C298B:当前目录不是Git仓库`)),!1;try{A.value=!0;let t=O.value.filter(t=>{let n=t.path.replace(/\\/g,`/`);return!e.lockedFiles.some(e=>n===e.replace(/\\/g,`/`))});if(t.length===0)return J({message:Q(`@C298B:没有需要暂存的文件(所有文件都被锁定)`),type:`warning`}),!1;if(t.length===O.value.length){let e=await(await fetch(`/api/add`,{method:`POST`})).json();return e.success?(J({message:Q(`@C298B:文件已添加到暂存区`),type:`success`}),await be(),!0):(J({message:`${Q(`@C298B:添加文件失败: `)}${e.error}`,type:`error`}),!1)}else{let e=await(await fetch(`/api/add-filtered`,{method:`POST`})).json();if(e.success){let e=O.value.length-t.length,n=`${Q(`@C298B:已添加 `)}${t.length}${Q(`@C298B: 个文件到暂存区`)}`;return e>0&&(n+=`${Q(`@C298B:,跳过 `)}${e}${Q(`@C298B: 个锁定文件`)}`),J({message:n,type:`success`}),await be(),!0}else return J({message:`${Q(`@C298B:添加文件失败: `)}${e.error}`,type:`error`}),!1}}catch(e){return J({message:`${Q(`@C298B:添加文件失败: `)}${e.message}`,type:`error`}),!1}finally{A.value=!1}}async function Se(){if(!c.value)return J.warning(Q(`@C298B:当前目录不是Git仓库`)),!1;try{A.value=!0;let e=await(await fetch(`/api/add-all`,{method:`POST`})).json();return e.success?(J({message:Q(`@C298B:所有文件已添加到暂存区`),type:`success`}),await be(),!0):(J({message:`${Q(`@C298B:添加文件失败: `)}${e.error}`,type:`error`}),!1)}catch(e){return J({message:`${Q(`@C298B:添加文件失败: `)}${e.message}`,type:`error`}),!1}finally{A.value=!1}}async function Ce(e){if(!c.value)return J.warning(Q(`@C298B:当前目录不是Git仓库`)),!1;try{A.value=!0;let t=await(await fetch(`/api/add-file`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return t.success?(J({message:Q(`@C298B:文件已暂存`),type:`success`}),ye(),!0):(J({message:`${Q(`@C298B:暂存文件失败: `)}${t.error}`,type:`error`}),!1)}catch(e){return J({message:`${Q(`@C298B:暂存文件失败: `)}${e.message}`,type:`error`}),!1}finally{A.value=!1}}async function we(e){if(!c.value)return J.warning(Q(`@C298B:当前目录不是Git仓库`)),!1;try{M.value=!0;let t=await(await fetch(`/api/unstage-file`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return t.success?(J({message:Q(`@C298B:已取消暂存文件`),type:`success`}),ye(),!0):(J({message:`${Q(`@C298B:取消暂存失败: `)}${t.error}`,type:`error`}),!1)}catch(e){return J({message:`${Q(`@C298B:取消暂存失败: `)}${e.message}`,type:`error`}),!1}finally{M.value=!1}}function Te(e){return new Promise(t=>setTimeout(t,e))}async function Ee(e,t=!1,n={}){if(!c.value)return J.warning(Q(`@C298B:当前目录不是Git仓库`)),!1;let{autoRefresh:r=!0}=n;try{j.value=!0;let n=await(await fetch(`/api/commit`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({message:e,hasNewlines:e.includes(`
|
|
4
4
|
`),noVerify:t})})).json();return n.success?(J({message:Q(`@C298B:提交成功`),type:`success`}),r&&(await be(),await ve(!1),L(!0)),!0):(J({message:`${Q(`@C298B:commitChanges 提交失败: `)}${n.error}`,type:`error`}),!1)}catch(e){return J({message:`${Q(`@C298B:提交失败: `)}${e.message}`,type:`error`}),!1}finally{j.value=!1}}async function De(){if(!c.value)return J.warning(Q(`@C298B:当前目录不是Git仓库`)),!1;try{f.value=!0;let e=await(await fetch(`/api/push`,{method:`POST`})).json();return e.success?(_.value=0,v.value=0,await Promise.all([ye(),ve()]),console.log(`推送成功,分支状态已设置为同步 (ahead=0, behind=0)`),!0):(J({message:`${Q(`@C298B:推送失败: `)}${e.error}`,type:`error`}),!1)}catch(e){return J({message:`${Q(`@C298B:推送失败: `)}${e.message}`,type:`error`}),!1}finally{f.value=!1}}async function Oe(e){return c.value?new Promise(t=>{try{f.value=!0,fetch(`/api/push-with-progress`,{method:`POST`}).then(n=>{let r=n.body?.getReader(),i=new TextDecoder;if(!r)throw Error(`无法读取响应流`);(async()=>{try{for(;;){let{done:n,value:a}=await r.read();if(n)break;let o=i.decode(a,{stream:!0}).split(`
|
|
5
5
|
`);for(let n of o)if(n.startsWith(`data: `))try{let r=JSON.parse(n.slice(6));e&&e(r),r.type===`complete`&&(f.value=!1,r.success?(_.value=0,v.value=0,Promise.all([ye(),ve()]),t(!0)):(J({message:`${Q(`@C298B:推送失败: `)}${r.error}`,type:`error`}),t(!1)))}catch(e){console.error(`解析SSE数据失败:`,e)}}}catch(e){console.error(`读取流失败:`,e),f.value=!1,J({message:`${Q(`@C298B:推送失败: `)}${e.message}`,type:`error`}),t(!1)}})()}).catch(e=>{f.value=!1,J({message:`${Q(`@C298B:推送失败: `)}${e.message}`,type:`error`}),t(!1)})}catch(e){f.value=!1,J({message:`${Q(`@C298B:推送失败: `)}${e.message}`,type:`error`}),t(!1)}}):(J.warning(Q(`@C298B:当前目录不是Git仓库`)),!1)}async function ke(e,n={}){if(!c.value)return J({message:Q(`@C298B:当前目录不是Git仓库`),type:`warning`}),!1;if(!e)return J({message:Q(`@C298B:请选择要合并的分支`),type:`warning`}),!1;if(e===t.value)return J({message:Q(`@C298B:不能合并当前分支到自身`),type:`warning`}),!1;let r=`Merge branch '${e}' into ${t.value}`;try{h.value=!0;let i=await fetch(`/api/merge`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({branch:e,...n})}),a=await i.json();return i.status===409?(S.value=n.message||r,J({message:Q(`@C298B:合并分支时发生冲突,请手动解决`),type:`warning`,duration:5e3}),!1):(S.value=``,a.success?(J({message:`${Q(`@C298B:成功合并分支 `)}${e}${Q(`@C298B: 到 `)}${t.value}`,type:`success`}),await ye(),await L(),!0):(J({message:`${Q(`@C298B:合并分支失败: `)}${a.error}`,type:`error`}),!1))}catch(e){return J({message:`${Q(`@C298B:合并分支失败: `)}${e.message}`,type:`error`}),!1}finally{h.value=!1}}async function B(e,t=!1){if(console.log(Q(`@C298B:开始暂存并提交操作...`)),!await xe())return!1;console.log(Q(`@C298B:暂存完成,等待Git操作完成...`)),await Te(gn),console.log(Q(`@C298B:开始提交更改...`));let n=await Ee(e,t);return console.log(Q(`@C298B:暂存并提交操作完成`)),n}async function Ae(e,t=!1){try{if(console.log(Q(`@C298B:开始暂存文件...`)),!await xe()||(console.log(Q(`@C298B:暂存完成,等待Git操作完成...`)),await Te(gn),console.log(Q(`@C298B:开始提交更改...`)),!await Ee(e,t)))return!1;console.log(Q(`@C298B:提交完成,等待Git操作完成...`)),await Te(gn),console.log(Q(`@C298B:开始推送到远程...`));let n=await De();return console.log(Q(`@C298B:一键推送操作完成,状态已统一刷新`)),n}catch(e){console.error(`一键推送操作失败:`,e);try{(await(await fetch(`/api/remove-lock`,{method:`POST`})).json()).success&&J({message:Q(`@C298B:检测到Git锁定文件冲突,已自动清理,请重试操作`),type:`warning`})}catch(e){console.error(`清理锁定文件失败:`,e)}J({message:`${Q(`@C298B:操作失败: `)}${e.message}`,type:`error`});try{await Promise.all([ye(),ve(),L()])}catch(e){console.error(`刷新状态失败:`,e)}return!1}}async function je(e,t=!1){if(!Xe.value||H.value.size===0)return B(e,t);let n=rt.value;return n.length===0?(J.warning(Q(`@C298B:请选择要暂存的文件`)),!1):(console.log(Q(`@C298B:开始暂存所选文件并提交...`,{n:n.length})),await U(n)?(await Te(gn),Ee(e,t)):!1)}async function Me(e,t=!1){if(!Xe.value||H.value.size===0)return Ae(e,t);let n=rt.value;return n.length===0?(J.warning(Q(`@C298B:请选择要暂存的文件`)),!1):!await U(n)||(await Te(gn),!await Ee(e,t))?!1:(await Te(gn),De())}async function Ne(){if(!c.value)return J.warning(Q(`@C298B:当前目录不是Git仓库`)),!1;try{M.value=!0;let e=await(await fetch(`/api/reset-head`,{method:`POST`})).json();return e.success?(J({message:Q(`@C298B:已重置暂存区`),type:`success`}),ye(),!0):(J({message:`${Q(`@C298B:重置暂存区失败: `)}${e.error}`,type:`error`}),!1)}catch(e){return J({message:`${Q(`@C298B:重置暂存区失败: `)}${e.message}`,type:`error`}),!1}finally{M.value=!1}}async function Pe(e){if(!c.value)return J.warning(Q(`@C298B:当前目录不是Git仓库`)),!1;try{M.value=!0;let t=await(await fetch(`/api/reset-to-remote`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({branch:e})})).json();return t.success?(J({message:`${Q(`@C298B:已重置分支 `)}${e}${Q(`@C298B: 到远程状态`)}`,type:`success`}),ye(),ve(),await ce(!0),await le(),!0):(J({message:`${Q(`@C298B:重置分支失败: `)}${t.error}`,type:`error`}),!1)}catch(e){return J({message:`${Q(`@C298B:重置分支失败: `)}${e.message}`,type:`error`}),!1}finally{M.value=!1}}async function Fe(){if(!c.value)return J.warning(Q(`@C298B:当前目录不是Git仓库`)),!1;try{M.value=!0;let e=await(await fetch(`/api/discard-all-changes`,{method:`POST`})).json();return e.success?(J.success(Q(`@C298B:已清除所有本地更改`)),ye(),ve(),!0):(J.error(`${Q(`@C298B:操作失败: `)}${e.error}`),!1)}catch(e){return J.error(`${Q(`@C298B:操作失败: `)}${e.message}`),!1}finally{M.value=!1}}async function Ie(e){if(!c.value)return J.warning(Q(`@C298B:当前目录不是Git仓库`)),!1;if(!Array.isArray(e)||e.length===0)return J.warning(Q(`@C298B:未选择任何文件`)),!1;try{M.value=!0;let t=await(await fetch(`/api/revert_files`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePaths:e})})).json();if(t.success){let n=Number(t?.count??e.length),r=Array.isArray(t?.results)?t.results.filter(e=>!e?.success).map(e=>String(e?.path||``)):[];return r.length>0?J.warning(`${Q(`@C298B:已清除 `)}${n-r.length}${Q(`@C298B: 个文件,失败 `)}${r.length}${Q(`@C298B: 个`)}`):J.success(`${Q(`@C298B:已清除 `)}${n}${Q(`@C298B: 个所选文件`)}`),ye(),ve(),!0}else return J.error(`${Q(`@C298B:操作失败: `)}${t.error}`),!1}catch(e){return J.error(`${Q(`@C298B:操作失败: `)}${e.message}`),!1}finally{M.value=!1}}async function Le(){if(c.value)try{d.value=!0,console.log(Q(`@C298B:获取远程仓库地址...`));let e=await(await fetch(`/api/remote-url`)).json();e.success?(u.value=e.url||``,console.log(`${Q(`@C298B:获取到远程仓库地址: `)}${u.value}`)):(console.warn(`获取远程仓库地址失败:`,e.error),u.value=``)}catch(e){console.error(`获取远程仓库地址失败:`,e),u.value=``}finally{d.value=!1}}async function Re(){try{let e=await(await fetch(`/api/git-init`,{method:`POST`})).json();return e.success?(await se(),!0):(J.error(e.error||Q(`@C298B:Git仓库初始化失败`)),!1)}catch(e){return J.error(`${Q(`@C298B:Git仓库初始化失败: `)}${e.message}`),!1}}async function ze(e,t=`origin`){try{let n=await(await fetch(`/api/add-remote`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:t,url:e})})).json();return n.success?(await Le(),!0):(J.error(n.error||Q(`@C298B:添加远程仓库失败`)),!1)}catch(e){return J.error(`${Q(`@C298B:添加远程仓库失败: `)}${e.message}`),!1}}async function Be(){try{let e=await(await fetch(`/api/diff-head`)).json();return e.success?e.diff?(await navigator.clipboard.writeText(e.diff),J({message:Q(`@C298B:已复制全量 Diff`),type:`success`}),!0):(J({message:Q(`@C298B:没有可复制的 Diff`),type:`warning`}),!1):(J({message:`${Q(`@C298B:复制失败: `)}${e.error}`,type:`error`}),!1)}catch(e){return J({message:`${Q(`@C298B:复制失败: `)}${e.message}`,type:`error`}),!1}}async function V(){if(!u.value)return J({message:Q(`@C298B:没有可复制的远程仓库地址`),type:`warning`}),!1;try{return await navigator.clipboard.writeText(u.value),J({message:Q(`@C298B:已复制远程仓库地址`),type:`success`}),!0}catch(e){return console.error(`复制远程仓库地址失败:`,e),J({message:`${Q(`@C298B:复制失败: `)}${e.message}`,type:`error`}),!1}}async function Ve(){if(!u.value)return J({message:Q(`@C298B:没有可复制的远程仓库地址`),type:`warning`}),!1;try{let e=`git clone ${u.value}`;return await navigator.clipboard.writeText(e),J({message:Q(`@F13B4:已复制克隆命令`),type:`success`}),!0}catch(e){return console.error(`复制克隆命令失败:`,e),J({message:`${Q(`@C298B:复制失败: `)}${e.message}`,type:`error`}),!1}}mt(()=>{R()});function He(){C.value&&=(C.value.disconnect(),null)}r(()=>{He()});async function Ue(){if(!c.value)return J.warning(Q(`@C298B:当前目录不是Git仓库`)),[];try{re.value=!0;let e=await(await fetch(`/api/stash-list`)).json();return e.success?(F.value=e.stashes,e.stashes):(J.error(`${Q(`@C298B:获取stash列表失败: `)}${e.error}`),[])}catch(e){return console.error(`获取stash列表失败:`,e),J.error(`${Q(`@C298B:获取stash列表失败: `)}${e.message}`),[]}finally{re.value=!1}}async function We(e,t=!1,n=!0){if(!c.value)return J.warning(Q(`@C298B:当前目录不是Git仓库`)),!1;try{ae.value=!0;let r=await(await fetch(`/api/stash-save`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({message:e,includeUntracked:t,excludeLocked:n})})).json();return r.success?(J.success(r.message),await Ue(),await ye(),!0):(J.warning(r.message),!1)}catch(e){return console.error(`保存stash失败:`,e),J.error(`${Q(`@C298B:保存stash失败: `)}${e.message}`),!1}finally{ae.value=!1}}async function Ge(e,t,n=!1){if(!c.value)return J.warning(Q(`@C298B:当前目录不是Git仓库`)),!1;if(!e||e.length===0)return J.warning(Q(`@C298B:请选择要储藏的文件`)),!1;try{ae.value=!0;let r=await(await fetch(`/api/stash-save-partial`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({files:e,message:t,includeUntracked:n})})).json();return r.success?(J.success(r.message),await Ue(),await ye(),!0):(J.warning(r.message),!1)}catch(e){return console.error(`保存部分stash失败:`,e),J.error(`${Q(`@C298B:保存stash失败: `)}${e.message}`),!1}finally{ae.value=!1}}async function Ke(e,t=!1){if(!c.value)return J.warning(Q(`@C298B:当前目录不是Git仓库`)),!1;try{ie.value=!0;let n=await fetch(`/api/stash-apply`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({stashId:e,pop:t})}),r=await n.json();return n.status===409?(J.warning(Q(`@C298B:应用stash时发生冲突,请手动解决`)),!1):r.success?(J.success(r.message),await Ue(),await ye(),!0):(J.error(`${Q(`@C298B:应用stash失败: `)}${r.error}`),!1)}catch(e){return console.error(`应用stash失败:`,e),J.error(`${Q(`@C298B:应用stash失败: `)}${e.message}`),!1}finally{ie.value=!1}}async function qe(e){if(!c.value)return J.warning(Q(`@C298B:当前目录不是Git仓库`)),!1;try{I.value=!0;let t=await(await fetch(`/api/stash-drop`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({stashId:e})})).json();return t.success?(J.success(t.message),await Ue(),!0):(J.error(`${Q(`@C298B:删除stash失败: `)}${t.error}`),!1)}catch(e){return console.error(`删除stash失败:`,e),J.error(`${Q(`@C298B:删除stash失败: `)}${e.message}`),!1}finally{I.value=!1}}async function Je(){if(!c.value)return J.warning(Q(`@C298B:当前目录不是Git仓库`)),!1;try{I.value=!0;let e=await(await fetch(`/api/stash-clear`,{method:`POST`})).json();return e.success?(J.success(e.message),F.value=[],!0):(J.error(`${Q(`@C298B:清空stash失败: `)}${e.error}`),!1)}catch(e){return console.error(`清空stash失败:`,e),J.error(`${Q(`@C298B:清空stash失败: `)}${e.message}`),!1}finally{I.value=!1}}let Ye=K(()=>O.value.some(e=>e.type===`conflicted`)),Xe=w(!1),H=w(new Set);function Ze(){Xe.value=!Xe.value,Xe.value||(H.value=new Set)}function Qe(){Xe.value=!0}function $e(){Xe.value=!1,H.value=new Set}function et(e){let t=new Set(H.value);t.has(e)?t.delete(e):t.add(e),H.value=t}function tt(){H.value=new Set(O.value.map(e=>e.path))}function nt(){H.value=new Set}let rt=K(()=>{if(!Xe.value)return[];let t=new Set(e.lockedFiles.map(e=>e.replace(/\\/g,`/`))),n=[];for(let e of H.value){let r=e.replace(/\\/g,`/`);if(t.has(r))continue;let i=O.value.find(t=>t.path===e);i&&[`modified`,`deleted`,`untracked`].includes(i.type)&&n.push(e)}return n}),it=K(()=>rt.value.length>0);async function U(e){if(!c.value)return J.warning(Q(`@C298B:当前目录不是Git仓库`)),!1;let t=[...new Set(e.filter(e=>typeof e==`string`&&e.length>0))];if(t.length===0)return J.warning(Q(`@C298B:请选择要暂存的文件`)),!1;try{A.value=!0;let e=await(await fetch(`/api/add-files`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePaths:t})})).json();if(e.success){let n=e.successCount??t.length;J.success(n>0?`${Q(`@C298B:已暂存 `)}${n}${Q(`@C298B: 个所选文件`)}`:Q(`@C298B:文件已添加到暂存区`));let r=new Set(H.value);for(let e of t)r.delete(e);return H.value=r,await be(),!0}else return J.error(`${Q(`@C298B:暂存失败: `)}${e.error||``}`),!1}catch(e){return J.error(`${Q(`@C298B:暂存失败: `)}${e.message}`),!1}finally{A.value=!1}}return{currentBranch:t,allBranches:n,userName:i,userEmail:a,isChangingBranch:o,isCreatingBranch:s,isGitRepo:c,lastCheckedTime:l,branchAhead:_,branchBehind:v,hasUpstream:y,upstreamBranch:b,lastBranchesTime:x,remoteUrl:u,isLoadingRemoteUrl:d,hasConflictedFiles:Ye,stashes:F,isLoadingStashes:re,isApplyingStash:ie,isDroppingStash:I,isSavingStash:ae,log:E,status:D,fileList:O,isLoadingLog:k,isLoadingStatus:te,isAddingFiles:A,isCommiting:j,isResetting:M,currentPage:N,hasMoreData:P,totalCommits:ne,isPushing:f,isGitPulling:p,isGitFetching:m,isGitMerging:h,isMergeInProgress:g,pendingMergeMessage:S,isSelectionMode:Xe,selectedFiles:H,selectedUnstagedPaths:rt,hasSelectableFiles:it,toggleSelectionMode:Ze,enterSelectionMode:Qe,exitSelectionMode:$e,toggleFileSelection:et,selectAllFiles:tt,clearSelection:nt,$reset:oe,checkGitRepo:se,getCurrentBranch:ce,getAllBranches:le,changeBranch:ue,getUserInfo:de,createBranch:fe,clearUserConfig:pe,restoreUserConfig:me,getBranchStatus:L,gitPull:he,gitFetchAll:ge,initSocketConnection:R,parseStatusPorcelain:_e,fetchLog:ve,refreshLog:z,fetchStatus:ye,fetchStatusPorcelain:be,addToStage:xe,addAllToStage:Se,addFileToStage:Ce,stageFiles:U,unstageFile:we,commitChanges:Ee,pushToRemote:De,pushToRemoteWithProgress:Oe,addAndCommit:B,addCommitAndPush:Ae,stageSelectedAndCommit:je,stageSelectedAndCommitAndPush:Me,resetHead:Ne,resetToRemote:Pe,discardAllChanges:Fe,discardSelectedFiles:Ie,getRemoteUrl:Le,addRemote:ze,gitInit:Re,copyRemoteUrl:V,copyCloneCommand:Ve,copyCurrentDiff:Be,mergeBranch:ke,getStashList:Ue,saveStash:We,savePartialStash:Ge,applyStash:Ke,dropStash:qe,clearAllStashes:Je,socket:C,disconnectSocket:He}});function bn(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function xn(e){if(!e)return``;let t=e.split(`
|
|
@@ -45,7 +45,7 @@ git config --global user.email "your.email@example.com"`,-1)]),_:1},8,[`title`])
|
|
|
45
45
|
const out = new Object()
|
|
46
46
|
out.message = (name && ver) ? \`【\${name}】更新版本到\${ver}\` : ""
|
|
47
47
|
return out
|
|
48
|
-
}`}];function a(e){v.value.codeScript=e,J.success(Q(`@NODECFG:已应用示例`))}let o=e,s=n;function l(){s(`open-command-manager`)}let u=hn(),d=K(()=>{let e=Q(`@NODECFG:节点配置`);return o.node?`${e} - ${{command:Q(`@FLOWNODE:命令节点`),wait:Q(`@FLOWNODE:等待节点`),version:Q(`@FLOWNODE:版本管理`),confirm:Q(`@FLOWNODE:用户确认`),code:Q(`@FLOWNODE:代码节点`),condition:Q(`@FLOWNODE:条件`),user_input:Q(`@FLOWNODE:用户输入`)}[o.node.type]||o.node.type}`:e}),f=K({get:()=>o.modelValue,set:e=>s(`update:modelValue`,e)}),p=w(null),h=w(null),g=w(null),v=w({}),y=K(()=>{let e=(Array.isArray(v.value.userInputParams)?v.value.userInputParams:[]).map(e=>String(e?.name||``).trim()).filter(e=>!!e);return Array.from(new Set(e)).map(e=>({key:e}))}),b=K(()=>{let e=(Array.isArray(v.value.versionInputs)?v.value.versionInputs:[]).map(e=>String(e?.name||``).trim()).filter(e=>!!e);return Array.from(new Set(e))});function S(){let e=b.value;if(e.length===0){v.value.versionInputKey=``;return}let t=String(v.value.versionInputKey||``).trim();t&&e.includes(t)||(v.value.versionInputKey=e.includes(`version`)?`version`:e[0])}function C(){let e=b.value;if(e.length===0){v.value.dependencyVersionInputKey=``;return}let t=String(v.value.dependencyVersionInputKey||``).trim();if(!(t&&e.includes(t))){if(e.includes(`dependencyVersion`)){v.value.dependencyVersionInputKey=`dependencyVersion`;return}v.value.dependencyVersionInputKey=e.includes(`version`)?`version`:e[0]}}function ee(){return{id:`branch-${Date.now()}-${Math.random().toString(36).slice(2,6)}`,name:Q(`@COND:默认分支`),handleId:`default`,priority:999,combine:`all`,rules:[],isDefault:!0}}function T(e){let t=(Array.isArray(e)?e:[]).map(e=>({id:String(e?.id||`branch-${Date.now()}-${Math.random().toString(36).slice(2,6)}`),name:String(e?.name||``).trim()||Q(`@COND:分支名称`),handleId:String(e?.handleId||``).trim()||`branch`,priority:Number.isFinite(Number(e?.priority))?Number(e?.priority):0,combine:e?.combine===`any`?`any`:`all`,rules:Array.isArray(e?.rules)?e.rules:[],isDefault:!!e?.isDefault}));t.some(e=>e.handleId===`default`||e.isDefault)||t.push(ee());for(let e of t)e.handleId===`default`&&(e.isDefault=!0,e.name||=Q(`@COND:默认分支`));return t}function E(){return{left:{nodeId:``,outputKey:`stdout`},op:`contains`,right:``}}function D(){let e=T(v.value.conditionBranches);e.push({id:`branch-${Date.now()}-${Math.random().toString(36).slice(2,6)}`,name:Q(`@COND:分支名称`),handleId:`branch-${e.length}`,priority:e.length,combine:`all`,rules:[E()],isDefault:!1}),v.value.conditionBranches=e}function O(e){let t=T(v.value.conditionBranches),n=t.find(t=>t.id===e);if(n?.handleId===`default`||n?.isDefault){J.warning(Q(`@COND:请至少保留一个默认分支`));return}v.value.conditionBranches=t.filter(t=>t.id!==e)}function k(e){let t=T(v.value.conditionBranches),n=t.find(t=>t.id===e);n&&(n.rules=Array.isArray(n.rules)?[...n.rules,E()]:[E()],v.value.conditionBranches=t)}function te(e,t){let n=T(v.value.conditionBranches),r=n.find(t=>t.id===e);r&&(r.rules=(Array.isArray(r.rules)?r.rules:[]).filter((e,n)=>n!==t),v.value.conditionBranches=n)}function j(e){let t=(Array.isArray(e)?e:[]).map(e=>({name:String(e?.name||``).trim(),source:e?.source===`manual`?`manual`:`reference`,manualValue:e?.manualValue===void 0||e?.manualValue===null?``:String(e.manualValue),ref:e?.ref?{nodeId:String(e.ref.nodeId||``),outputKey:String(e.ref.outputKey||`stdout`)}:void 0})).filter(e=>!!e.name||!!e.manualValue||!!e.ref?.nodeId),n=new Set,r=[];for(let e of t)n.has(e.name)||(n.add(e.name),r.push(e));return r.slice(0,30)}function M(e){return(Array.isArray(e)?e:[]).find(e=>String(e?.name||``).trim()===`version`)}function N(e){let t=Array.isArray(v.value.versionInputs)?[...v.value.versionInputs]:[],n=t.findIndex(e=>String(e?.name||``).trim()===`version`),r={...n>=0?t[n]:{name:`version`,source:`manual`,manualValue:``,ref:{nodeId:``,outputKey:`stdout`}},...e,name:`version`};e.source&&(e.source===`manual`?(r.ref=void 0,r.manualValue===void 0&&(r.manualValue=``)):(r.manualValue=void 0,r.ref||={nodeId:``,outputKey:`stdout`})),n>=0?t[n]=r:t.push(r),v.value.versionInputs=j(t)}function ne(){let e=Array.isArray(v.value.versionInputs)?v.value.versionInputs:[];v.value.versionInputs=e.filter(e=>String(e?.name||``).trim()!==`version`)}function re(e){return!e?.ref?.nodeId||!e?.ref?.outputKey?``:`${e.ref.nodeId}::${e.ref.outputKey}`}function ie(e){if(!e)return;let[t,n]=e.split(`::`);N({source:`reference`,ref:{nodeId:t,outputKey:n}})}function I(e){let t=(Array.isArray(e)?e:[]).map(e=>({key:String(e?.key||``).trim(),type:e?.type||`String`,desc:String(e?.desc||``).trim()})).filter(e=>!!e.key),n=new Set,r=[];for(let e of t)n.has(e.key)||(n.add(e.key),r.push(e));return r.slice(0,30)}function ae(){return{key:``,type:`String`}}function oe(){let e=Array.isArray(v.value.codeOutputParams)?[...v.value.codeOutputParams]:[];e.push(ae()),v.value.codeOutputParams=e}let se=w([]),ce=K(()=>u.customCommands||[]),ue=K(()=>{if(!v.value.commandId)return[];let e=ce.value.find(e=>e.id===v.value.commandId);return e?Os(e.command):[]}),de=K(()=>{if(!o.node||!o.allNodes||!o.edges)return[];let e=o.node.id,t=o.edges,n=o.allNodes,r=[],i=new Set,a=[e];function s(e){return t.filter(t=>t.target===e).map(e=>e.source)}for(;a.length>0;){let e=s(a.shift());for(let t of e)if(!i.has(t)){i.add(t),a.push(t);let e=n.find(e=>e.id===t);if(e&&(e.type===`command`||e.type===`code`||e.type===`user_input`)&&e.data.config){if(e.type===`command`&&e.data.config?.useTerminal===!0)continue;r.push(e)}}}return r});function fe(e){if(!e)return[];if(e.type===`command`)return[{key:`stdout`,label:Q(`@NODECFG:标准输出(stdout)`)},{key:`stderr`,label:Q(`@NODECFG:标准错误(stderr)`)},{key:`error`,label:Q(`@NODECFG:错误(error)`)}];if(e.type===`code`){let t=e.data?.config,n=Array.isArray(t?.codeOutputParams)?t.codeOutputParams:[];if(n.length>0)return n.map(e=>String(e?.key||``).trim()).filter(e=>!!e).map(e=>({key:e,label:e}));let r=t?.codeOutputKeys;return(Array.isArray(r)?r:[]).map(e=>String(e||``).trim()).filter(e=>!!e).map(e=>({key:e,label:e}))}if(e.type===`user_input`){let t=e.data?.config;return(Array.isArray(t?.userInputParams)?t.userInputParams:[]).map(e=>String(e?.name||``).trim()).filter(e=>!!e).map(e=>({key:e,label:e}))}return[]}function me(e){return e.type===`command`?e.data.config?.commandName||e.data.label||Q(`@NODECFG:命令节点`):e.type===`code`?e.data.label||Q(`@FLOWNODE:代码节点`):e.type===`user_input`?e.data.label||Q(`@FLOWNODE:用户输入`):e.data.label||e.id}function he(e){let t=new Map;for(let n of Array.isArray(e)?e:[]){let e=String(n?.key||``).trim();e&&t.set(e,String(n?.desc||``).trim())}return[{key:`stdout`,desc:t.get(`stdout`)||``},{key:`stderr`,desc:t.get(`stderr`)||``},{key:`error`,desc:t.get(`error`)||``}]}F(()=>o.node,e=>{if(!e)return;let t=e.data.config;if(e.type===`command`)v.value={commandId:t?.commandId,commandName:t?.commandName,useTerminal:t?.useTerminal||!1,restartExistingTerminal:t?.restartExistingTerminal||!1,inputs:Array.isArray(t?.inputs)?t.inputs:[],commandOutputParams:he(t?.commandOutputParams),nodeName:t?.displayName||e.data.label||``,enabled:e.data.enabled??!0};else if(e.type===`wait`)v.value={waitSeconds:t?.waitSeconds||5,nodeName:t?.displayName||e.data.label||``,enabled:e.data.enabled??!0};else if(e.type===`version`){let n=`bump`;t?.versionSource===`input`&&(n=`input`);let r=M(t?.versionInputs);n!==`input`&&(t?.versionTarget!==`dependency`&&r?n=r.source===`manual`?`manual`:`reference`:t?.inputRef?n=`reference`:t?.dependencyVersion||t?.versionTarget!==`dependency`&&!t?.versionBump?n=`manual`:(t?.dependencyVersionBump||t?.versionBump)&&(n=`bump`)),v.value={versionTarget:t?.versionTarget||`version`,versionBump:t?.versionBump||`patch`,packageJsonPath:t?.packageJsonPath||``,dependencyName:t?.dependencyName||``,dependencyVersion:t?.dependencyVersion||``,dependencyType:t?.dependencyType||`dependencies`,dependencyVersionMode:t?.dependencyVersionBump?`bump`:`manual`,dependencyVersionBump:t?.dependencyVersionBump||`patch`,versionInputs:j(t?.versionInputs),versionSource:n,inputRef:t?.inputRef,extractVersionFromRefOutput:t?.extractVersionFromRefOutput??!0,versionInputKey:String(t?.versionInputKey||``).trim()||void 0,dependencyVersionInputKey:String(t?.dependencyVersionInputKey||``).trim()||void 0,nodeName:t?.displayName||e.data.label||``,enabled:e.data.enabled??!0},n===`input`&&(v.value.versionTarget===`dependency`?C():S()),t?.packageJsonPath&&ge(t.packageJsonPath)}else if(e.type===`code`){let n=Array.isArray(t?.codeInputs)?t.codeInputs:[],r=Array.isArray(t?.codeOutputParams)?t.codeOutputParams:[];v.value={codeScript:t?.codeScript||``,codeInputs:n,codeOutputParams:r,nodeName:t?.displayName||e.data.label||``,enabled:e.data.enabled??!0}}else e.type===`confirm`?v.value={nodeName:t?.displayName||e.data.label||``,enabled:e.data.enabled??!0}:e.type===`condition`?v.value={conditionBranches:T(t?.conditionBranches),nodeName:t?.displayName||e.data.label||``,enabled:e.data.enabled??!0}:e.type===`user_input`&&(v.value={userInputParams:Array.isArray(t?.userInputParams)?t.userInputParams:[],nodeName:t?.displayName||e.data.label||``,enabled:e.data.enabled??!0})},{immediate:!0});async function ge(e){try{let t=await fetch(`/api/read-package-json`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({packageJsonPath:e})});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();if(n.success){let e=[],t=v.value.dependencyType||`dependencies`;if(t===`dependencies`&&n.dependencies)e.push(...Object.keys(n.dependencies));else if(t===`devDependencies`&&n.devDependencies)e.push(...Object.keys(n.devDependencies));else if(t===`peerDependencies`){let t=n.peerDependencies&&Object.keys(n.peerDependencies).length>0?n.peerDependencies:n.peerDependenciesMeta;t&&e.push(...Object.keys(t))}se.value=e.sort()}}catch(e){console.error(Q(`@NODECFG:读取依赖列表失败`),e),se.value=[]}}F(()=>v.value.dependencyType,()=>{v.value.packageJsonPath&&ge(v.value.packageJsonPath)});function _e(e){v.value.selectedPackageFile=e,e?(v.value.packageJsonPath=e.fullPath,ge(e.fullPath)):se.value=[]}function ve(e){v.value.commandId=e.id,v.value.commandName=e.name}function ye(){return`step-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}function be(){if(!o.node)return;let e=null;if(o.node.type===`command`){if(!v.value.commandId){J.warning(Q(`@NODECFG:请选择要执行的命令`));return}let t=Array.isArray(v.value.inputs)?v.value.inputs:[];for(let e of t){if(!e||!e.required)continue;let t=String(e.paramName||``).trim()||Q(`@NODEINPUT:参数名`);if(e.inputType===`reference`){let n=String(e.referenceNodeId||``).trim(),r=String(e.referenceOutputKey||``).trim();if(!n||!r){J.warning(Q(`@NODECFG:必填参数未选择引用输出`,{name:t}));return}}else{let n=e.manualValue;if(n==null||String(n).trim()===``){J.warning(Q(`@NODECFG:请输入必填参数的值`,{name:t}));return}}}e={id:o.node.data.config?.id||ye(),nodeId:o.node.id,type:`command`,displayName:v.value.nodeName?.trim()||void 0,commandId:v.value.commandId,commandName:v.value.commandName||``,useTerminal:v.value.useTerminal||!1,restartExistingTerminal:v.value.useTerminal&&v.value.restartExistingTerminal||!1,inputs:v.value.inputs||[],commandOutputParams:he(v.value.commandOutputParams),enabled:v.value.enabled??!0}}else if(o.node.type===`wait`){if(!v.value.waitSeconds||v.value.waitSeconds<=0){J.warning(Q(`@NODECFG:等待时间必须大于0秒`));return}e={id:o.node.data.config?.id||ye(),nodeId:o.node.id,type:`wait`,displayName:v.value.nodeName?.trim()||void 0,waitSeconds:v.value.waitSeconds,enabled:v.value.enabled??!0}}else if(o.node.type===`version`){if(v.value.versionTarget===`dependency`){if(!v.value.dependencyName?.trim()){J.warning(Q(`@NODECFG:请选择依赖包名称`));return}if(v.value.versionSource===`manual`&&!v.value.dependencyVersion?.trim()){J.warning(Q(`@NODECFG:请输入依赖包版本号`));return}if(v.value.versionSource===`reference`&&!v.value.inputRef){J.warning(Q(`@NODECFG:请选择要引用的节点输出`));return}if(v.value.versionSource===`input`&&!String(v.value.dependencyVersionInputKey||``).trim()){J.warning(Q(`@NODECFG:请选择要引用的输入字段`));return}}else if(v.value.versionSource===`input`&&!String(v.value.versionInputKey||``).trim()){J.warning(Q(`@NODECFG:请选择要引用的输入字段`));return}e={id:o.node.data.config?.id||ye(),nodeId:o.node.id,type:`version`,displayName:v.value.nodeName?.trim()||void 0,versionTarget:v.value.versionTarget||`version`,versionBump:v.value.versionSource===`bump`?v.value.versionBump||`patch`:void 0,packageJsonPath:v.value.packageJsonPath?.trim()||void 0,dependencyName:v.value.versionTarget===`dependency`?v.value.dependencyName?.trim():void 0,dependencyVersion:v.value.versionTarget===`dependency`&&v.value.versionSource===`manual`?v.value.dependencyVersion?.trim():void 0,dependencyVersionBump:v.value.versionTarget===`dependency`&&v.value.versionSource===`bump`?v.value.dependencyVersionBump:void 0,dependencyType:v.value.versionTarget===`dependency`?v.value.dependencyType:void 0,versionInputs:j(v.value.versionInputs),versionSource:v.value.versionSource,inputRef:v.value.versionSource===`reference`?v.value.inputRef:void 0,extractVersionFromRefOutput:v.value.versionSource===`reference`?v.value.extractVersionFromRefOutput??!0:void 0,versionInputKey:v.value.versionSource===`input`&&v.value.versionTarget!==`dependency`&&String(v.value.versionInputKey||``).trim()||void 0,dependencyVersionInputKey:v.value.versionSource===`input`&&v.value.versionTarget===`dependency`&&String(v.value.dependencyVersionInputKey||``).trim()||void 0,enabled:v.value.enabled??!0}}else if(o.node.type===`code`){if(!v.value.codeScript||!String(v.value.codeScript).trim()){J.warning(Q(`@NODECFG:请输入脚本`));return}let t=j(v.value.codeInputs);for(let e of Array.isArray(t)?t:[]){if(!e||!e.required)continue;let t=String(e.name||``).trim()||Q(`@NODECFG:参数名`);if(e.source===`reference`){let n=String(e.ref?.nodeId||``).trim(),r=String(e.ref?.outputKey||``).trim();if(!n||!r){J.warning(Q(`@NODECFG:必填参数未选择引用输出`,{name:t}));return}}else{let n=e.manualValue;if(n==null||String(n).trim()===``){J.warning(Q(`@NODECFG:请输入必填参数的值`,{name:t}));return}}}let n=I(v.value.codeOutputParams);if(n.length===0){J.warning(Q(`@NODECFG:请配置输出键`));return}let r=n.map(e=>e.key);e={id:o.node.data.config?.id||ye(),nodeId:o.node.id,type:`code`,displayName:v.value.nodeName?.trim()||void 0,codeScript:v.value.codeScript,codeInputs:t,codeOutputParams:n,codeOutputKeys:r,enabled:v.value.enabled??!0}}else if(o.node.type===`confirm`)e={id:o.node.data.config?.id||ye(),nodeId:o.node.id,type:`confirm`,displayName:v.value.nodeName?.trim()||void 0,enabled:v.value.enabled??!0};else if(o.node.type===`condition`){let t=T(v.value.conditionBranches);if(!t.some(e=>e.handleId===`default`||e.isDefault)){J.warning(Q(`@COND:请至少保留一个默认分支`));return}for(let e of t)if(e.isDefault&&e.handleId!==`default`){J.warning(Q(`@COND:默认分支必须使用handleId=default`));return}e={id:o.node.data.config?.id||ye(),nodeId:o.node.id,type:`condition`,displayName:v.value.nodeName?.trim()||void 0,conditionBranches:t,enabled:v.value.enabled??!0}}else if(o.node.type===`user_input`){let t=(Array.isArray(v.value.userInputParams)?v.value.userInputParams:[]).map(e=>({name:String(e?.name||``).trim(),source:e?.source===`reference`?`reference`:`manual`,required:!!e?.required,defaultValue:e?.defaultValue===void 0||e?.defaultValue===null?``:String(e.defaultValue),ref:e?.ref?{nodeId:String(e.ref.nodeId||``),outputKey:String(e.ref.outputKey||`stdout`)}:void 0})).filter(e=>!!e.name),n=new Set,r=[];for(let e of t)e.name&&(n.has(e.name)||(n.add(e.name),r.push(e)));for(let e of r)if(e.required&&e.source===`reference`){let t=String(e?.ref?.nodeId||``).trim(),n=String(e?.ref?.outputKey||``).trim();if(!t||!n){J.warning(Q(`@NODECFG:必填参数未选择引用输出`,{name:e.name}));return}}e={id:o.node.data.config?.id||ye(),nodeId:o.node.id,type:`user_input`,displayName:v.value.nodeName?.trim()||void 0,userInputParams:r,enabled:v.value.enabled??!0}}e&&(s(`update-config`,o.node.id,e),J.success(Q(`@NODECFG:节点配置已保存`)),f.value=!1)}return(e,n)=>{let o=t,s=Me,u=ft,ee=Ke,w=i,T=P,E=le,j=De,F=Ce,I=_,he=m,ge=Ae,ye=A,xe=vt;return G(),U(pa,{modelValue:f.value,"onUpdate:modelValue":n[35]||=e=>f.value=e,title:d.value,size:`extra-large`,"append-to-body":!0,"z-index":8e5,"custom-class":`node-config-dialog`},{footer:R(()=>[W(`div`,yy,[W(`div`,by,[W(`button`,{type:`button`,class:`dialog-cancel-btn`,onClick:n[34]||=e=>f.value=!1},q(B(Q)(`@NODECFG:取消`)),1),W(`button`,{type:`button`,class:`dialog-confirm-btn`,onClick:be},[z(o,null,{default:R(()=>[z(B(c))]),_:1}),W(`span`,null,q(B(Q)(`@NODECFG:保存配置`)),1)])])])]),default:R(()=>[e.node?(G(),Y(`div`,U_,[W(`div`,W_,[W(`div`,G_,[z(o,null,{default:R(()=>[z(B(c))]),_:1}),Z(` `+q(B(Q)(`@NODECFG:通用设置`)),1)]),z(w,{"label-width":`120px`},{default:R(()=>[z(u,{label:B(Q)(`@NODECFG:节点名称`)},{default:R(()=>[z(s,{modelValue:v.value.nodeName,"onUpdate:modelValue":n[0]||=e=>v.value.nodeName=e,placeholder:B(Q)(`@NODECFG:请输入节点名称`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),z(u,{label:B(Q)(`@NODECFG:启用节点`)},{default:R(()=>[z(ee,{modelValue:v.value.enabled,"onUpdate:modelValue":n[1]||=e=>v.value.enabled=e},null,8,[`modelValue`])]),_:1},8,[`label`])]),_:1})]),e.node?.type===`version`?(G(),Y(`div`,K_,[W(`div`,q_,[z(o,null,{default:R(()=>[z(B(Se))]),_:1}),Z(` `+q(B(Q)(`@NODECFG:输入配置`))+` `,1),z(T,{type:`primary`,plain:``,icon:B(pe),style:{"margin-left":`auto`},onClick:n[2]||=e=>h.value?.addRow()},null,8,[`icon`])]),z(A_,{ref_key:`versionInputRef`,ref:h,"model-value":v.value.versionInputs||[],"onUpdate:modelValue":n[3]||=e=>v.value.versionInputs=e,"predecessor-nodes":de.value,title:void 0,addable:!1},null,8,[`model-value`,`predecessor-nodes`])])):V(``,!0),e.node?.type===`condition`?(G(),Y(`div`,J_,[W(`div`,Y_,[z(o,null,{default:R(()=>[z(B(Se))]),_:1}),Z(` `+q(B(Q)(`@COND:条件配置`))+` `,1),z(T,{class:`icon-btn`,type:`primary`,plain:``,circle:``,icon:B(pe),style:{"margin-left":`auto`},title:B(Q)(`@COND:添加分支`),onClick:D},null,8,[`icon`,`title`])]),W(`div`,X_,[W(`div`,Z_,[W(`span`,null,q(B(Q)(`@COND:分支列表`)),1)]),!v.value.conditionBranches||v.value.conditionBranches.length===0?(G(),Y(`div`,Q_,q(B(Q)(`@COND:请至少保留一个默认分支`)),1)):(G(),Y(`div`,$_,[(G(!0),Y(H,null,L(v.value.conditionBranches,e=>(G(),Y(`div`,{key:e.id,class:`condition-branch-card`},[W(`div`,ev,[W(`div`,tv,[W(`div`,nv,[e.handleId===`default`||e.isDefault?(G(),Y(`span`,rv,q(B(Q)(`@COND:默认分支`)),1)):V(``,!0),z(s,{modelValue:e.name,"onUpdate:modelValue":t=>e.name=t,size:`small`,disabled:e.handleId===`default`||e.isDefault,placeholder:B(Q)(`@COND:分支名称`)},null,8,[`modelValue`,`onUpdate:modelValue`,`disabled`,`placeholder`])])]),W(`div`,iv,[z(w,{"label-width":`80px`},{default:R(()=>[z(u,{label:B(Q)(`@COND:优先级`)},{default:R(()=>[z(E,{modelValue:e.priority,"onUpdate:modelValue":t=>e.priority=t,min:0,max:9999,size:`small`},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:2},1032,[`label`]),z(u,{label:B(Q)(`@COND:规则组合`)},{default:R(()=>[z(F,{modelValue:e.combine,"onUpdate:modelValue":t=>e.combine=t,size:`small`},{default:R(()=>[z(j,{value:`all`},{default:R(()=>[Z(q(B(Q)(`@COND:且(ALL)`)),1)]),_:1}),z(j,{value:`any`},{default:R(()=>[Z(q(B(Q)(`@COND:或(ANY)`)),1)]),_:1})]),_:2},1032,[`modelValue`,`onUpdate:modelValue`])]),_:2},1032,[`label`])]),_:2},1024)]),e.handleId!==`default`&&!e.isDefault?(G(),Y(`div`,av,[W(`div`,ov,[W(`span`,null,q(B(Q)(`@COND:规则`)),1),z(T,{class:`icon-btn`,type:`primary`,plain:``,circle:``,icon:B(pe),title:B(Q)(`@COND:添加规则`),onClick:t=>k(e.id)},null,8,[`icon`,`title`,`onClick`])]),(G(!0),Y(H,null,L(e.rules,(t,n)=>(G(),Y(`div`,{key:n,class:`rule-row`},[W(`div`,sv,[W(`div`,cv,q(B(Q)(`@COND:左值(引用输出)`)),1),z(he,{modelValue:t.left.nodeId,"onUpdate:modelValue":e=>t.left.nodeId=e,filterable:``,clearable:``,size:`small`,style:{width:`100%`},placeholder:B(Q)(`@NODECFG:引用节点`)},{default:R(()=>[(G(!0),Y(H,null,L(de.value,e=>(G(),U(I,{key:e.id,label:me(e),value:e.id},null,8,[`label`,`value`]))),128))]),_:2},1032,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),z(he,{modelValue:t.left.outputKey,"onUpdate:modelValue":e=>t.left.outputKey=e,filterable:``,size:`small`,style:{width:`100%`,"margin-top":`6px`},placeholder:B(Q)(`@NODECFG:输出`)},{default:R(()=>[(G(!0),Y(H,null,L(fe(de.value.find(e=>e.id===t.left.nodeId)),e=>(G(),U(I,{key:e.key,label:e.label,value:e.key},null,8,[`label`,`value`]))),128))]),_:2},1032,[`modelValue`,`onUpdate:modelValue`,`placeholder`])]),W(`div`,lv,[W(`div`,uv,q(B(Q)(`@COND:操作符`)),1),z(he,{modelValue:t.op,"onUpdate:modelValue":e=>t.op=e,size:`small`,style:{width:`100%`}},{default:R(()=>[z(I,{label:`==`,value:`==`}),z(I,{label:`!=`,value:`!=`}),z(I,{label:`>`,value:`>`}),z(I,{label:`>=`,value:`>=`}),z(I,{label:`<`,value:`<`}),z(I,{label:`<=`,value:`<=`}),z(I,{label:`contains`,value:`contains`}),z(I,{label:`not_contains`,value:`not_contains`}),z(I,{label:`isEmpty`,value:`isEmpty`}),z(I,{label:`isNotEmpty`,value:`isNotEmpty`})]),_:2},1032,[`modelValue`,`onUpdate:modelValue`])]),W(`div`,dv,[W(`div`,fv,q(B(Q)(`@COND:右值`)),1),z(s,{modelValue:t.right,"onUpdate:modelValue":e=>t.right=e,size:`small`,disabled:t.op===`isEmpty`||t.op===`isNotEmpty`},null,8,[`modelValue`,`onUpdate:modelValue`,`disabled`])]),W(`div`,pv,[z(T,{class:`icon-btn`,type:`danger`,plain:``,circle:``,icon:B(pt),title:B(Q)(`@COND:删除规则`),onClick:t=>te(e.id,n)},null,8,[`icon`,`title`,`onClick`])])]))),128))])):(G(),Y(`div`,mv,q(B(Q)(`@COND:默认分支`))+`:不配置规则,未命中其它分支时走这里 `,1))]),e.handleId===`default`||e.isDefault?V(``,!0):(G(),Y(`div`,hv,[z(T,{class:`icon-btn`,type:`danger`,plain:``,circle:``,icon:B(zt),title:B(Q)(`@COND:删除分支`),onClick:t=>O(e.id)},null,8,[`icon`,`title`,`onClick`])]))]))),128))]))])])):V(``,!0),e.node?.type===`command`?(G(),Y(`div`,gv,[W(`div`,_v,[z(o,null,{default:R(()=>[z(B(c))]),_:1}),Z(` `+q(B(Q)(`@NODECFG:执行方式`)),1)]),z(w,{"label-width":`120px`},{default:R(()=>[z(u,{label:B(Q)(`@NODECFG:执行方式`)},{default:R(()=>[z(F,{modelValue:v.value.useTerminal,"onUpdate:modelValue":n[4]||=e=>v.value.useTerminal=e},{default:R(()=>[z(j,{value:!1},{default:R(()=>[Z(q(B(Q)(`@NODECFG:普通执行`)),1)]),_:1}),z(j,{value:!0},{default:R(()=>[Z(q(B(Q)(`@NODECFG:终端执行`)),1)]),_:1})]),_:1},8,[`modelValue`])]),_:1},8,[`label`]),v.value.useTerminal?(G(),U(u,{key:0,label:B(Q)(`@NODECFG:终端选项`)},{default:R(()=>[z(ge,{modelValue:v.value.restartExistingTerminal,"onUpdate:modelValue":n[5]||=e=>v.value.restartExistingTerminal=e},{default:R(()=>[Z(q(B(Q)(`@NODECFG:重启现存终端命令`)),1)]),_:1},8,[`modelValue`])]),_:1},8,[`label`])):V(``,!0)]),_:1})])):V(``,!0),e.node?.type===`command`&&v.value.commandId&&v.value.inputs?(G(),Y(`div`,vv,[W(`div`,yv,[z(o,null,{default:R(()=>[z(B(Se))]),_:1}),Z(` `+q(B(Q)(`@NODECFG:输入配置`)),1)]),z(y_,{modelValue:v.value.inputs,"onUpdate:modelValue":n[6]||=e=>v.value.inputs=e,"param-names":ue.value,"disable-param-name-edit":!0,"predecessor-nodes":de.value},null,8,[`modelValue`,`param-names`,`predecessor-nodes`])])):V(``,!0),e.node?.type===`code`?(G(),Y(`div`,bv,[W(`div`,xv,[z(o,null,{default:R(()=>[z(B(Se))]),_:1}),Z(` `+q(B(Q)(`@NODECFG:输入配置`))+` `,1),z(T,{type:`primary`,plain:``,icon:B(pe),style:{"margin-left":`auto`},onClick:n[7]||=e=>p.value?.addRow()},null,8,[`icon`])]),z(A_,{ref_key:`codeInputRef`,ref:p,"model-value":v.value.codeInputs||[],"onUpdate:modelValue":n[8]||=e=>v.value.codeInputs=e,"predecessor-nodes":de.value,title:void 0,addable:!1},null,8,[`model-value`,`predecessor-nodes`])])):V(``,!0),e.node?.type===`user_input`?(G(),Y(`div`,Sv,[W(`div`,Cv,[z(o,null,{default:R(()=>[z(B(Se))]),_:1}),Z(` `+q(B(Q)(`@NODECFG:输入配置`))+` `,1),z(T,{type:`primary`,plain:``,icon:B(pe),style:{"margin-left":`auto`},onClick:n[9]||=e=>g.value?.addRow()},null,8,[`icon`])]),z(H_,{ref_key:`userInputRef`,ref:g,"model-value":v.value.userInputParams||[],"onUpdate:modelValue":n[10]||=e=>v.value.userInputParams=e,"predecessor-nodes":de.value,title:void 0,addable:!1},null,8,[`model-value`,`predecessor-nodes`])])):V(``,!0),e.node?.type===`user_input`?(G(),Y(`div`,wv,[W(`div`,Tv,[z(o,null,{default:R(()=>[z(B(Se))]),_:1}),Z(` `+q(B(Q)(`@NODECFG:输出配置`)),1)]),z(s_,{"model-value":y.value,title:void 0,addable:!1,removable:!1},{empty:R(()=>[Z(q(B(Q)(`@NODECFG:暂无输出参数`)||``),1)]),row:R(({item:e})=>[W(`div`,Ev,[W(`div`,Dv,[W(`label`,Ov,q(B(Q)(`@NODECFG:参数名`)),1),z(s,{"model-value":e.key,disabled:``},null,8,[`model-value`])])])]),_:1},8,[`model-value`])])):V(``,!0),e.node?.type===`command`?(G(),Y(`div`,kv,[W(`div`,Av,[z(o,null,{default:R(()=>[z(on,{"icon-class":`custom-cmd`})]),_:1}),Z(` `+q(B(Q)(`@NODECFG:命令配置`))+` `,1),z(T,{type:`primary`,plain:``,size:`small`,style:{"margin-left":`auto`},onClick:l},{default:R(()=>[Z(q(B(Q)(`@NODECFG:管理命令`)),1)]),_:1})]),z(w,{"label-width":`100px`},{default:R(()=>[z(u,{label:B(Q)(`@NODECFG:选择命令`),required:``},{default:R(()=>[ce.value.length===0?(G(),Y(`div`,jv,q(B(Q)(`@NODECFG:暂无可用命令请先创建命令`)),1)):(G(),Y(`div`,Mv,[(G(!0),Y(H,null,L(ce.value,e=>(G(),Y(`div`,{key:e.id,class:x([`command-item`,{selected:v.value.commandId===e.id}]),onClick:t=>ve(e)},[W(`div`,Pv,[W(`div`,Fv,[W(`span`,Iv,q(e.name),1),e.description?(G(),Y(`span`,Lv,q(e.description),1)):V(``,!0)]),W(`code`,Rv,q(e.command),1),W(`div`,zv,[z(o,null,{default:R(()=>[z(B(qe))]),_:1}),W(`span`,null,q(e.directory?e.directory.replace(/\\/g,`/`):B(Q)(`@NODECFG:当前目录`)),1)])]),v.value.commandId===e.id?(G(),U(o,{key:0,class:`check-icon`},{default:R(()=>[z(B(c))]),_:1})):V(``,!0)],10,Nv))),128))]))]),_:1},8,[`label`])]),_:1})])):V(``,!0),e.node?.type===`wait`?(G(),Y(`div`,Bv,[W(`div`,Vv,[z(o,null,{default:R(()=>[z(B(wt))]),_:1}),Z(` `+q(B(Q)(`@NODECFG:等待配置`)),1)]),z(w,{"label-width":`100px`},{default:R(()=>[z(u,{label:B(Q)(`@NODECFG:等待时间`),required:``},{default:R(()=>[z(E,{modelValue:v.value.waitSeconds,"onUpdate:modelValue":n[11]||=e=>v.value.waitSeconds=e,min:1,max:3600,step:1},null,8,[`modelValue`]),W(`span`,Hv,q(B(Q)(`@NODECFG:秒`)),1)]),_:1},8,[`label`])]),_:1})])):V(``,!0),e.node?.type===`code`?(G(),Y(`div`,Uv,[W(`div`,Wv,[z(o,null,{default:R(()=>[z(B(it))]),_:1}),Z(` `+q(B(Q)(`@NODECFG:代码配置`)),1)]),W(`div`,Gv,[W(`div`,Kv,[W(`span`,null,q(B(Q)(`@NODECFG:代码`)),1)]),z(s,{modelValue:v.value.codeScript,"onUpdate:modelValue":n[12]||=e=>v.value.codeScript=e,type:`textarea`,rows:10,placeholder:xy},null,8,[`modelValue`]),W(`div`,qv,[W(`div`,Jv,q(B(Q)(`@NODECFG:示例代码`)),1),W(`div`,Yv,[(G(),Y(H,null,L(r,e=>z(T,{key:e.key,type:`primary`,plain:``,onClick:t=>a(e.script)},{default:R(()=>[Z(q(e.title),1)]),_:2},1032,[`onClick`])),64))])])])])):V(``,!0),e.node?.type===`version`?(G(),Y(`div`,Xv,[W(`div`,Zv,[z(o,null,{default:R(()=>[z(B(it))]),_:1}),Z(` `+q(B(Q)(`@NODECFG:版本配置`)),1)]),z(w,{"label-width":`120px`},{default:R(()=>[z(u,{label:B(Q)(`@NODECFG:package.json`)},{default:R(()=>[z(Qg,{modelValue:v.value.packageJsonPath,"onUpdate:modelValue":n[13]||=e=>v.value.packageJsonPath=e,placeholder:B(Q)(`@NODECFG:留空则使用当前目录的package.json`),clearable:``,onChange:_e},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),z(u,{label:B(Q)(`@NODECFG:修改目标`),required:``},{default:R(()=>[z(F,{modelValue:v.value.versionTarget,"onUpdate:modelValue":n[14]||=e=>v.value.versionTarget=e},{default:R(()=>[z(j,{value:`version`},{default:R(()=>[Z(q(B(Q)(`@NODECFG:version字段`)),1)]),_:1}),z(j,{value:`dependency`},{default:R(()=>[Z(q(B(Q)(`@NODECFG:dependencies中的依赖`)),1)]),_:1})]),_:1},8,[`modelValue`])]),_:1},8,[`label`]),v.value.versionTarget===`version`?(G(),Y(H,{key:0},[z(u,{label:B(Q)(`@NODECFG:版本号来源`),required:``},{default:R(()=>[z(F,{modelValue:v.value.versionSource,"onUpdate:modelValue":n[15]||=e=>v.value.versionSource=e,onChange:n[16]||=e=>{e===`bump`?ne():e===`manual`?N({source:`manual`,manualValue:M(v.value.versionInputs)?.manualValue??``}):e===`reference`?N({source:`reference`,ref:M(v.value.versionInputs)?.ref||{nodeId:``,outputKey:`stdout`}}):e===`input`&&S()}},{default:R(()=>[z(j,{value:`bump`},{default:R(()=>[Z(q(B(Q)(`@NODECFG:自动递增`)),1)]),_:1}),z(j,{value:`manual`},{default:R(()=>[Z(q(B(Q)(`@NODECFG:手动输入`)),1)]),_:1}),z(j,{value:`reference`,disabled:de.value.length===0},{default:R(()=>[Z(q(B(Q)(`@NODECFG:引用输出`))+` `,1),de.value.length===0?(G(),U(ye,{key:0,content:B(Q)(`@NODECFG:无可用的前置命令节点`),placement:`top`},{default:R(()=>[z(o,{style:{"margin-left":`4px`}},{default:R(()=>[z(B(Se))]),_:1})]),_:1},8,[`content`])):V(``,!0)]),_:1},8,[`disabled`]),z(j,{value:`input`,disabled:b.value.length===0},{default:R(()=>[Z(q(B(Q)(`@NODECFG:引用输入`)),1)]),_:1},8,[`disabled`])]),_:1},8,[`modelValue`])]),_:1},8,[`label`]),v.value.versionSource===`bump`?(G(),U(u,{key:0,label:B(Q)(`@NODECFG:版本增量类型`),required:``},{default:R(()=>[z(F,{modelValue:v.value.versionBump,"onUpdate:modelValue":n[17]||=e=>v.value.versionBump=e},{default:R(()=>[z(j,{value:`patch`},{default:R(()=>[Z(q(B(Q)(`@NODECFG:补丁版本x.x.+1`)),1)]),_:1}),z(j,{value:`minor`},{default:R(()=>[Z(q(B(Q)(`@NODECFG:次版本x.+1.0`)),1)]),_:1}),z(j,{value:`major`},{default:R(()=>[Z(q(B(Q)(`@NODECFG:主版本+1.0.0`)),1)]),_:1})]),_:1},8,[`modelValue`])]),_:1},8,[`label`])):V(``,!0),v.value.versionSource===`manual`?(G(),U(u,{key:1,label:B(Q)(`@NODECFG:版本号`),required:``},{default:R(()=>[z(s,{"model-value":M(v.value.versionInputs)?.manualValue,placeholder:B(Q)(`@NODECFG:例如1.2.3`),"onUpdate:modelValue":n[18]||=e=>N({source:`manual`,manualValue:e})},null,8,[`model-value`,`placeholder`])]),_:1},8,[`label`])):V(``,!0),v.value.versionSource===`reference`?(G(),Y(H,{key:2},[z(u,{label:B(Q)(`@NODECFG:引用节点`),required:``},{default:R(()=>[z(xe,{"model-value":re(M(v.value.versionInputs)),data:de.value.map(e=>({value:e.id,label:me(e),children:fe(e).map(t=>({value:`${e.id}::${t.key}`,label:t.label}))})),placeholder:B(Q)(`@NODECFG:选择要引用的前置节点`),clearable:``,filterable:``,"check-strictly":``,"render-after-expand":!1,"onUpdate:modelValue":n[19]||=e=>ie(e)},null,8,[`model-value`,`data`,`placeholder`])]),_:1},8,[`label`]),z(u,{label:B(Q)(`@NODECFG:提取版本号`)},{default:R(()=>[z(ee,{modelValue:v.value.extractVersionFromRefOutput,"onUpdate:modelValue":n[20]||=e=>v.value.extractVersionFromRefOutput=e},null,8,[`modelValue`])]),_:1},8,[`label`]),W(`div`,Qv,[z(o,null,{default:R(()=>[z(B(Se))]),_:1}),W(`span`,null,q(B(Q)(`@NODECFG:版本号将使用所选节点的输出结果`)),1)])],64)):V(``,!0),v.value.versionSource===`input`?(G(),Y(H,{key:3},[z(u,{label:B(Q)(`@NODECFG:引用输入`),required:``},{default:R(()=>[z(he,{modelValue:v.value.versionInputKey,"onUpdate:modelValue":n[21]||=e=>v.value.versionInputKey=e,filterable:``,clearable:``,style:{width:`100%`},placeholder:B(Q)(`@NODECFG:选择要引用的输入字段`),onChange:S},{default:R(()=>[(G(!0),Y(H,null,L(b.value,e=>(G(),U(I,{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),W(`div`,$v,[z(o,null,{default:R(()=>[z(B(Se))]),_:1}),W(`span`,null,q(B(Q)(`@NODECFG:版本号将使用本节点输入参数的值`)),1)])],64)):V(``,!0)],64)):V(``,!0),v.value.versionTarget===`dependency`?(G(),Y(H,{key:1},[z(u,{label:B(Q)(`@NODECFG:依赖类型`),required:``},{default:R(()=>[z(F,{modelValue:v.value.dependencyType,"onUpdate:modelValue":n[22]||=e=>v.value.dependencyType=e},{default:R(()=>[z(j,{value:`dependencies`},{default:R(()=>n[36]||=[Z(`dependencies`)]),_:1}),z(j,{value:`devDependencies`},{default:R(()=>n[37]||=[Z(`devDependencies`)]),_:1}),z(j,{value:`peerDependencies`},{default:R(()=>n[38]||=[Z(`peerDependencies`)]),_:1})]),_:1},8,[`modelValue`])]),_:1},8,[`label`]),z(u,{label:B(Q)(`@NODECFG:依赖包名称`),required:``},{default:R(()=>[z(he,{modelValue:v.value.dependencyName,"onUpdate:modelValue":n[23]||=e=>v.value.dependencyName=e,placeholder:B(Q)(`@NODECFG:请先选择package.json`),clearable:``,filterable:``,"allow-create":``,style:{width:`100%`}},{default:R(()=>[(G(!0),Y(H,null,L(se.value,e=>(G(),U(I,{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),z(u,{label:B(Q)(`@NODECFG:版本号来源`),required:``},{default:R(()=>[z(F,{modelValue:v.value.versionSource,"onUpdate:modelValue":n[24]||=e=>v.value.versionSource=e,onChange:n[25]||=e=>{e===`input`&&C()}},{default:R(()=>[z(j,{value:`bump`},{default:R(()=>[Z(q(B(Q)(`@NODECFG:自动递增`)),1)]),_:1}),z(j,{value:`manual`},{default:R(()=>[Z(q(B(Q)(`@NODECFG:手动输入`)),1)]),_:1}),z(j,{value:`reference`,disabled:de.value.length===0},{default:R(()=>[Z(q(B(Q)(`@NODECFG:引用输出`))+` `,1),de.value.length===0?(G(),U(ye,{key:0,content:B(Q)(`@NODECFG:无可用的前置命令节点`),placement:`top`},{default:R(()=>[z(o,{style:{"margin-left":`4px`}},{default:R(()=>[z(B(Se))]),_:1})]),_:1},8,[`content`])):V(``,!0)]),_:1},8,[`disabled`]),z(j,{value:`input`,disabled:b.value.length===0},{default:R(()=>[Z(q(B(Q)(`@NODECFG:引用输入`)),1)]),_:1},8,[`disabled`])]),_:1},8,[`modelValue`])]),_:1},8,[`label`]),v.value.versionSource===`bump`?(G(),U(u,{key:0,label:B(Q)(`@NODECFG:递增类型`),required:``},{default:R(()=>[z(F,{modelValue:v.value.dependencyVersionBump,"onUpdate:modelValue":n[26]||=e=>v.value.dependencyVersionBump=e},{default:R(()=>[z(j,{value:`patch`},{default:R(()=>[Z(q(B(Q)(`@NODECFG:补丁版本`)),1)]),_:1}),z(j,{value:`minor`},{default:R(()=>[Z(q(B(Q)(`@NODECFG:次版本`)),1)]),_:1}),z(j,{value:`major`},{default:R(()=>[Z(q(B(Q)(`@NODECFG:主版本`)),1)]),_:1})]),_:1},8,[`modelValue`])]),_:1},8,[`label`])):V(``,!0),v.value.versionSource===`manual`?(G(),U(u,{key:1,label:B(Q)(`@NODECFG:版本号`),required:``},{default:R(()=>[z(s,{modelValue:v.value.dependencyVersion,"onUpdate:modelValue":n[27]||=e=>v.value.dependencyVersion=e,placeholder:B(Q)(`@NODECFG:例如1.2.3`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])):V(``,!0),v.value.versionSource===`reference`?(G(),Y(H,{key:2},[z(u,{label:B(Q)(`@NODECFG:引用节点`),required:``},{default:R(()=>[z(he,{modelValue:v.value.inputRef,"onUpdate:modelValue":n[28]||=e=>v.value.inputRef=e,"value-key":`nodeId`,placeholder:B(Q)(`@NODECFG:选择要引用的前置节点`),style:{width:`100%`}},{default:R(()=>[(G(!0),Y(H,null,L(de.value,e=>(G(),U(I,{key:e.id,label:me(e),value:{nodeId:e.id,outputKey:`stdout`}},{default:R(()=>[W(`div`,ey,[W(`span`,ty,q(me(e)),1),W(`span`,ny,q(B(Q)(`@NODECFG:ID`))+`: `+q(e.id.substring(0,15))+`...`,1)])]),_:2},1032,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),v.value.inputRef?(G(),U(u,{key:0,label:B(Q)(`@NODECFG:输出字段`),required:``},{default:R(()=>[z(he,{modelValue:v.value.inputRef.outputKey,"onUpdate:modelValue":n[29]||=e=>v.value.inputRef.outputKey=e,placeholder:B(Q)(`@NODECFG:选择要引用的输出字段`),style:{width:`100%`}},{default:R(()=>[(G(!0),Y(H,null,L(fe(de.value.find(e=>e.id===v.value.inputRef?.nodeId)),e=>(G(),U(I,{key:e.key,label:e.label,value:e.key},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])):V(``,!0),v.value.inputRef?(G(),U(u,{key:1,label:B(Q)(`@NODECFG:提取版本号`)},{default:R(()=>[z(ee,{modelValue:v.value.extractVersionFromRefOutput,"onUpdate:modelValue":n[30]||=e=>v.value.extractVersionFromRefOutput=e},null,8,[`modelValue`])]),_:1},8,[`label`])):V(``,!0),W(`div`,ry,[z(o,null,{default:R(()=>[z(B(Se))]),_:1}),W(`span`,null,q(B(Q)(`@NODECFG:版本号将使用所选节点的输出结果`)),1)])],64)):V(``,!0),v.value.versionSource===`input`?(G(),Y(H,{key:3},[z(u,{label:B(Q)(`@NODECFG:引用输入`),required:``},{default:R(()=>[z(he,{modelValue:v.value.dependencyVersionInputKey,"onUpdate:modelValue":n[31]||=e=>v.value.dependencyVersionInputKey=e,filterable:``,clearable:``,style:{width:`100%`},placeholder:B(Q)(`@NODECFG:选择要引用的输入字段`),onChange:C},{default:R(()=>[(G(!0),Y(H,null,L(b.value,e=>(G(),U(I,{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),W(`div`,iy,[z(o,null,{default:R(()=>[z(B(Se))]),_:1}),W(`span`,null,q(B(Q)(`@NODECFG:版本号将使用本节点输入参数的值`)),1)])],64)):V(``,!0)],64)):V(``,!0)]),_:1})])):V(``,!0),e.node?.type===`code`?(G(),Y(`div`,ay,[W(`div`,oy,[z(o,null,{default:R(()=>[z(B(Se))]),_:1}),Z(` `+q(B(Q)(`@NODECFG:输出`))+` `,1),z(T,{type:`primary`,plain:``,icon:B(pe),style:{"margin-left":`auto`},onClick:oe},null,8,[`icon`])]),z(s_,{"model-value":v.value.codeOutputParams||[],title:void 0,addable:!1,removable:!0,"min-items":0,"create-item":ae,"onUpdate:modelValue":n[32]||=e=>v.value.codeOutputParams=e},{empty:R(()=>[Z(q(B(Q)(`@NODECFG:暂无输出参数`)||``),1)]),row:R(({item:e})=>[W(`div`,sy,[W(`div`,cy,[W(`label`,ly,q(B(Q)(`@NODECFG:参数名`)),1),z(s,{modelValue:e.key,"onUpdate:modelValue":t=>e.key=t,placeholder:B(Q)(`@NODECFG:参数名`)},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`])]),W(`div`,uy,[W(`label`,dy,q(B(Q)(`@NODECFG:参数类型`)),1),z(he,{modelValue:e.type,"onUpdate:modelValue":t=>e.type=t,style:{width:`180px`}},{default:R(()=>[z(I,{label:`String`,value:`String`}),z(I,{label:`Number`,value:`Number`}),z(I,{label:`Boolean`,value:`Boolean`}),z(I,{label:`JSON`,value:`JSON`})]),_:2},1032,[`modelValue`,`onUpdate:modelValue`])])])]),_:1},8,[`model-value`])])):V(``,!0),e.node?.type===`command`?(G(),Y(`div`,fy,[W(`div`,py,[z(o,null,{default:R(()=>[z(B(Se))]),_:1}),Z(` `+q(B(Q)(`@NODECFG:输出配置`)),1)]),z(s_,{"model-value":v.value.commandOutputParams||[],title:void 0,addable:!1,removable:!1,"onUpdate:modelValue":n[33]||=e=>v.value.commandOutputParams=e},{empty:R(()=>[Z(q(B(Q)(`@NODECFG:暂无输出参数`)||``),1)]),row:R(({item:e})=>[W(`div`,my,[W(`div`,hy,[W(`label`,gy,q(B(Q)(`@NODECFG:参数名`)),1),z(s,{modelValue:e.key,"onUpdate:modelValue":t=>e.key=t,disabled:``},null,8,[`modelValue`,`onUpdate:modelValue`])]),W(`div`,_y,[W(`label`,vy,q(B(Q)(`@NODECFG:参数描述`)),1),z(s,{modelValue:e.desc,"onUpdate:modelValue":t=>e.desc=t,placeholder:B(Q)(`@NODECFG:参数描述`)},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`])])])]),_:1},8,[`model-value`])])):V(``,!0)])):V(``,!0)]),_:1},8,[`modelValue`,`title`])}}}),[[`__scopeId`,`data-v-98727514`]]),Cy={class:`flow-workspace-container`},wy={class:`left-sidebar`},Ty={class:`sidebar-header`},Ey={class:`orchestration-list`},Dy=[`onClick`],Oy={class:`item-content`},ky={key:0,class:`description`},Ay={class:`item-actions`},jy={class:`flow-canvas`},My={class:`canvas-header`},Ny={class:`flow-header-info`},Py={class:`header-actions`},Fy={class:`right-sidebar`},Iy={class:`sidebar-header`},Ly={class:`node-toolbox`},Ry={class:`tool-label`},zy={class:`tool-desc`},By={class:`tool-label`},Vy={class:`tool-desc`},Hy={class:`tool-label`},Uy={class:`tool-desc`},Wy={class:`tool-label`},Gy={class:`tool-desc`},Ky={class:`tool-label`},qy={class:`tool-desc`},Jy={class:`tool-label`},Yy={class:`tool-desc`},Xy={class:`tool-label`},Zy={class:`tool-desc`},Qy=$(X({__name:`FlowOrchestrationWorkspace`,props:{visible:{type:Boolean}},emits:[`update:visible`,`execute-flow`,`open-command-manager`],setup(e,{emit:n}){let i=Symbol(`FLOW_NODE_ACTIONS`);function a(e){switch(e){case`command`:return`📋`;case`wait`:return`⏰`;case`version`:return`📦`;case`confirm`:return`✋`;case`code`:return`🧩`;case`start`:return`🚀`;case`condition`:return`🔀`;case`user_input`:return`⌨️`;default:return``}}function s(e){return X({name:`FlowWrappedNode`,props:{id:{type:String,required:!0},data:{type:Object,required:!0}},setup(t){let n=g(i,null),r=K(()=>{let e=t.data?.config,n=[...Array.isArray(e?.conditionBranches)?e.conditionBranches:[]].sort((e,t)=>{let n=e?.handleId===`default`||e?.isDefault,r=t?.handleId===`default`||t?.isDefault;return n&&!r?1:!n&&r?-1:Number(e?.priority??0)-Number(t?.priority??0)}).map(e=>String(e?.handleId||``).trim()).filter(e=>!!e);return n.includes(`default`)||n.push(`default`),n.length?n:[`default`]});return()=>xe(Wg,{nodeId:t.id,onExecuteFromNode:e=>n?.executeFromNode(e),onExecuteSingleNode:e=>n?.executeSingleNode(e)},{default:()=>xe($h,{id:t.id,nodeId:t.id,nodeType:t.data?.type,title:t.data?.label,icon:a(t.data?.type),enabled:t.data?.enabled??!0,selected:t.data?.selected??!1,sourceHandleIds:t.data?.type===`condition`?r.value:void 0,onDelete:e=>n?.deleteNode(e)},{default:()=>xe(e,{data:t.data,id:t.id})})})}})}let l={start:o(X({name:`FlowStartNodeRenderer`,props:{id:{type:String,required:!0},data:{type:Object,required:!0}},setup(e){return()=>xe($h,{id:e.id,nodeId:e.id,nodeType:`start`,title:Q(`@FLOWNODE:开始`),icon:a(`start`),enabled:e.data?.enabled,selected:e.data?.selected,deletable:!1},{})}})),command:o(s(sg)),wait:o(s(dg)),version:o(s(vg)),confirm:o(s(xg)),code:o(s(Og)),condition:o(s(Pg)),user_input:o(s(Ug))},u=e,d=n,{t:m}=Ye(),h=hn(),_=K({get:()=>u.visible,set:e=>d(`update:visible`,e)}),{onConnect:v,addEdges:y,getViewport:b,setViewport:S,onNodeDragStart:C,onNodeDragStop:T,getSelectedEdges:E,updateNodeInternals:D}=Pe(),O=w([]),k=w([]),te=w(``),A=w(``),N=w(null),P=w(!1),ne=w(null),F=null,re=K(()=>h.orchestrations||[]),ie=w(null),oe=1;function se(e){return`${e}-${Date.now()}-${oe++}`}function ce(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function le(e){let t=String(e||``).trim()||m(`@ORCH:未命名`),n=new Set((Array.isArray(re.value)?re.value:[]).map(e=>String(e?.name||``).trim())),r=`${t}(复制)`;if(!n.has(r))return r;let i=2;for(;i<1e3;){let e=`${t}(复制${i})`;if(!n.has(e))return e;i+=1}return`${t}(复制${Date.now()})`}async function ue(e){try{let t={name:le(e?.name),description:e?.description||``,flowData:e?.flowData?JSON.parse(JSON.stringify(e.flowData)):null},n=await h.saveOrchestration(t);n&&typeof n==`object`&&`id`in n&&(ie.value=n.id,N.value=n.id,ze(n),J.success(m(`@ORCH:已复制`)))}catch(e){J.error(`${m(`@ORCH:错误`)}: ${e?.message||e}`)}}function de(){return O.value.filter(e=>e.type!==`start`&&e.data?.config)}function fe(e){return e===`version`?{w:250,h:120}:e===`wait`||e===`confirm`||e===`user_input`?{w:200,h:120}:e===`condition`?{w:260,h:160}:{w:220,h:120}}function me(e){let t=b(),n=document.querySelector(`.vue-flow-container`)?.getBoundingClientRect(),r=n?n.width/2:500,i=n?n.height/2:300,a=t.zoom||1,o=(r-t.x)/a,s=(i-t.y)/a,{w:c,h:l}=fe(e);return{x:o-c/2,y:s-l/2}}function he(e,t){let n=O.value.filter(t=>t.type===e).map(e=>String(e?.data?.label||``).trim()).filter(e=>!!e),r=String(t||``).trim();if(!r)return r;let i=RegExp(`^${ce(r)}(\\d+)?$`),a=-1;for(let e of n){let t=e.match(i);if(!t)continue;let n=t[1]?Number(t[1]):0;Number.isFinite(n)&&(a=Math.max(a,n))}return a<0?r:`${r}${a+1}`}function ge(e){return e.map(e=>({id:e.id,type:e.type,position:e.position,data:e.data}))}function _e(e){return e.map(e=>({id:e.id,source:e.source,target:e.target,sourceHandle:e.sourceHandle,targetHandle:e.targetHandle}))}async function ve(e){await p();let t=e&&e.length?e:O.value.map(e=>e.id);requestAnimationFrame(()=>{D(t)})}function ye(){N.value&&te.value.trim()&&(F&&clearTimeout(F),F=window.setTimeout(()=>{Fe()},1e3))}function be(){O.value=[{id:`start-node`,type:`start`,position:{x:50,y:200},data:{id:`start-node`,type:`start`,label:m(`@FLOWNODE:开始`),enabled:!0}}],k.value=[],oe=1}function Se(e){let t=se(e),n={command:m(`@FLOWNODE:命令节点`),wait:m(`@FLOWNODE:等待节点`),version:m(`@FLOWNODE:版本管理`),confirm:m(`@FLOWNODE:用户确认`),code:m(`@FLOWNODE:代码节点`),condition:m(`@FLOWNODE:条件`),user_input:m(`@FLOWNODE:用户输入`)}[e],r=he(e,n),i=me(e),a={id:t,type:e,position:{x:i.x,y:i.y},data:{id:t,type:e,label:r,enabled:!0,config:e===`confirm`?{id:t,type:`confirm`}:e===`condition`?{id:t,type:`condition`,conditionBranches:[{id:`branch-${Date.now()}`,name:Q(`@COND:默认分支`),handleId:`default`,priority:999,combine:`all`,rules:[],isDefault:!0}]}:e===`user_input`?{id:t,type:`user_input`,userInputParams:[]}:void 0}};O.value.push(a),O.value.forEach(e=>{e.data&&(e.data.selected=!1)}),a.data&&(a.data.selected=!0),ne.value=a,P.value=!1,J.success(`${m(`@FLOWNODE:已添加`)}${a.data.label}`),ye()}v(e=>{y([e]),ye()}),C(e=>{O.value.forEach(e=>{e.data&&(e.data.selected=!1)});let t=O.value.find(t=>t.id===e.node.id);t&&t.data&&(t.data.selected=!0)}),T(()=>{ye()});function Ce(e){O.value.forEach(e=>{e.data&&(e.data.selected=!1)});let t=O.value.find(t=>t.id===e.node.id);t&&(t.data.selected=!0,t.type!==`start`&&(ne.value=t,P.value=!0)),ve([e.node.id])}function we(){O.value.forEach(e=>{e.data&&(e.data.selected=!1)}),ve()}function Ee(e,t){let n=O.value.find(t=>t.id===e);n&&(n.data.config=t,n.data.label=De(t),ye())}function De(e){return e.displayName&&String(e.displayName).trim()?String(e.displayName).trim():e.type===`command`?e.commandName||m(`@FLOWNODE:未知命令`):e.type===`wait`?m(`@FLOWNODE:等待 {seconds} 秒`,{seconds:e.waitSeconds}):e.type===`version`?e.versionTarget===`dependency`?m(`@FLOWNODE:修改依赖: {name}`,{name:e.dependencyName}):m(`@FLOWNODE:版本号 +1 ({bump})`,{bump:e.versionBump}):e.type===`confirm`?m(`@FLOWNODE:用户确认`):e.type===`user_input`?m(`@FLOWNODE:用户输入`):e.type===`code`?m(`@FLOWNODE:代码节点`):m(`@FLOWNODE:未配置`)}function Oe(e){if(console.log(`nodeId ==>`,e),e===`start-node`){J.warning(m(`@FLOWNODE:不能删除起始节点`));return}console.log(`nodes ==>`,O),O.value=O.value.filter(t=>t.id!==e),k.value=k.value.filter(t=>t.source!==e&&t.target!==e),ne.value?.id===e&&(ne.value=null,P.value=!1),J.success(m(`@FLOWNODE:节点已删除`)),ye()}function ke(e){for(let t of e)t.type===`remove`&&(k.value=k.value.filter(e=>e.id!==t.id));ye()}function Ae(e){if(e.key===`Delete`||e.key===`Backspace`){let t=E.value;if(t&&t.length>0){let n=t.map(e=>e.id);k.value=k.value.filter(e=>!n.includes(e.id)),ye(),e.preventDefault()}}}function je(){gt.confirm(`确定要清空整个流程吗?`,`确认清空`,{confirmButtonText:`清空`,cancelButtonText:`取消`,type:`warning`}).then(()=>{be(),J.success(`流程已清空`),ye()}).catch(()=>{})}async function Ne(){if(O.value.length<=1){J.info(`节点太少,无需优化布局`);return}await ve(),await new Promise(e=>requestAnimationFrame(()=>e()));let e=new Wh.default.graphlib.Graph;e.setDefaultEdgeLabel(()=>({})),e.setGraph({rankdir:`LR`,nodesep:80,ranksep:80,marginx:50,marginy:50}),O.value.forEach(t=>{let n=220,r=100;t.type===`start`?(n=100,r=100):t.type===`wait`||t.type===`confirm`?(n=200,r=120):t.type===`version`&&(n=250,r=120);let i=document.querySelector(`.vue-flow__node[data-id="${t.id}"]`);if(i){let e=i.offsetWidth,t=i.offsetHeight;e>0&&t>0&&(n=e,r=t)}e.setNode(t.id,{width:n,height:r})}),k.value.forEach(t=>{e.setEdge(t.source,t.target)}),Wh.default.layout(e),O.value.forEach(t=>{let n=e.node(t.id);n&&(t.position={x:n.x-n.width/2,y:n.y-n.height/2})}),J.success(`布局优化完成(dagre)`),ye()}async function Fe(){if(!te.value.trim()){J.warning(`请输入编排名称`);return}let e=O.value.filter(e=>e.type!==`start`&&!e.data.config);if(e.length>0){let t=e.map(e=>e.data.label).join(`、`);J.warning(`以下节点还未配置:${t}。未配置的节点不会被保存。`)}if(de().length===0){J.warning(`请至少添加一个执行步骤`);return}let t=b(),n={name:te.value.trim(),description:A.value.trim(),flowData:{nodes:ge(O.value),edges:_e(k.value),viewport:{x:t.x,y:t.y,zoom:t.zoom}}};if(N.value)await h.updateOrchestration(N.value,n);else{let e=await h.saveOrchestration(n);J.success(`编排已保存`),e&&typeof e==`object`&&`id`in e&&(ie.value=e.id,N.value=e.id)}}function Ie(){if(de().length===0){J.warning(`请至少添加一个执行步骤`);return}_.value=!1;let e=b(),t=O.value.find(e=>e.type===`start`);d(`execute-flow`,{flowData:{nodes:JSON.parse(JSON.stringify(O.value)),edges:JSON.parse(JSON.stringify(k.value)),viewport:{x:e.x,y:e.y,zoom:e.zoom}},startNodeId:t?.id,isSingleExecution:!1,orchestrationMeta:{id:N.value||void 0,name:te.value||void 0}})}function Le(e){let t=O.value.find(t=>t.id===e);if(!t||t.type===`start`||!t.data.config){J.warning(`该节点无法执行`);return}_.value=!1;let n=b();d(`execute-flow`,{flowData:{nodes:JSON.parse(JSON.stringify(O.value)),edges:JSON.parse(JSON.stringify(k.value)),viewport:{x:n.x,y:n.y,zoom:n.zoom}},startNodeId:e,isSingleExecution:!1,orchestrationMeta:{id:N.value||void 0,name:te.value||void 0}})}function Re(e){let t=O.value.find(t=>t.id===e);if(!t||t.type===`start`||!t.data.config){J.warning(`该节点无法执行`);return}_.value=!1;let n=b();d(`execute-flow`,{flowData:{nodes:JSON.parse(JSON.stringify(O.value)),edges:JSON.parse(JSON.stringify(k.value)),viewport:{x:n.x,y:n.y,zoom:n.zoom}},startNodeId:e,isSingleExecution:!0,orchestrationMeta:{id:N.value||void 0,name:te.value||void 0}})}I(i,{deleteNode:Oe,executeFromNode:Le,executeSingleNode:Re});function ze(e){ie.value=e.id,N.value=e.id,te.value=e.name,A.value=e.description||``,e.flowData?(O.value=JSON.parse(JSON.stringify(e.flowData.nodes)),k.value=JSON.parse(JSON.stringify(e.flowData.edges)),ve(),e.flowData.viewport&&setTimeout(()=>{S(e.flowData.viewport)},100)):be()}function Be(){ie.value=null,N.value=null,te.value=``,A.value=``,be()}async function Ve(e){try{await gt.confirm(`确定要删除编排 "${e.name}" 吗?`,`确认删除`,{confirmButtonText:`删除`,cancelButtonText:`取消`,type:`warning`}),await h.deleteOrchestration(e.id),N.value===e.id&&Be()}catch(e){e!==`cancel`&&J.error(`删除编排失败: ${e.message||e}`)}}function He(e){if(_.value=!1,e?.flowData){let t=Array.isArray(e.flowData.nodes)?e.flowData.nodes.find(e=>e?.type===`start`):void 0;d(`execute-flow`,{flowData:e.flowData,startNodeId:t?.id,isSingleExecution:!1,orchestrationMeta:{id:e?.id,name:e?.name}});return}J.warning(`该编排缺少流程数据,无法执行`)}return mt(()=>{be(),window.addEventListener(`keydown`,Ae),ve()}),r(()=>{window.removeEventListener(`keydown`,Ae)}),(e,n)=>{let r=t,i=ae,a=Me;return G(),U(pa,{modelValue:_.value,"onUpdate:modelValue":n[13]||=e=>_.value=e,title:B(m)(`@ORCH:可视化编排工作台`),"close-on-click-modal":!1,"append-to-body":!0,size:`fullscreen`,type:`flex`,heightMode:`fixed`,"custom-class":`flow-orchestration-dialog`},{default:R(()=>[W(`div`,Cy,[W(`div`,wy,[W(`div`,Ty,[W(`h3`,null,q(B(m)(`@ORCH:已保存的编排`)),1),z(ln,{tooltip:B(m)(`@ORCH:新建编排`),size:`small`,"hover-color":`var(--color-primary)`,onClick:Be},{default:R(()=>[z(r,null,{default:R(()=>[z(B(pe))]),_:1})]),_:1},8,[`tooltip`])]),W(`div`,Ey,[re.value.length===0?(G(),U(i,{key:0,description:B(m)(`@ORCH:暂无编排`),"image-size":80},null,8,[`description`])):V(``,!0),(G(!0),Y(H,null,L(re.value,e=>(G(),Y(`div`,{key:e.id,class:x([`orchestration-item`,{active:ie.value===e.id}]),onClick:t=>ze(e)},[W(`div`,Oy,[W(`h4`,null,q(e.name),1),e.description?(G(),Y(`p`,ky,q(e.description),1)):V(``,!0),W(`div`,Ay,[z(ln,{tooltip:B(m)(`@ORCH:执行`),size:`small`,"hover-color":`var(--color-primary)`,onClick:Rt(t=>He(e),[`stop`])},{default:R(()=>[z(r,null,{default:R(()=>[z(B(j))]),_:1})]),_:2},1032,[`tooltip`,`onClick`]),z(ln,{tooltip:B(m)(`@ORCH:复制`),size:`small`,"hover-color":`var(--color-primary)`,onClick:Rt(t=>ue(e),[`stop`])},{default:R(()=>[z(r,null,{default:R(()=>[z(B(_t))]),_:1})]),_:2},1032,[`tooltip`,`onClick`]),z(ln,{tooltip:B(m)(`@ORCH:删除`),size:`small`,"hover-color":`var(--color-danger)`,onClick:Rt(t=>Ve(e),[`stop`])},{default:R(()=>[z(r,null,{default:R(()=>[z(B(zt))]),_:1})]),_:2},1032,[`tooltip`,`onClick`])])])],10,Dy))),128))])]),W(`div`,jy,[W(`div`,My,[W(`div`,Ny,[z(a,{modelValue:te.value,"onUpdate:modelValue":n[0]||=e=>te.value=e,placeholder:B(m)(`@ORCH:编排名称(必填)`),size:`large`,style:{width:`300px`,"margin-right":`10px`}},null,8,[`modelValue`,`placeholder`]),z(a,{modelValue:A.value,"onUpdate:modelValue":n[1]||=e=>A.value=e,placeholder:B(m)(`@ORCH:编排描述(选填)`),size:`large`,style:{width:`400px`}},null,8,[`modelValue`,`placeholder`])]),W(`div`,Py,[z(ln,{tooltip:B(m)(`@ORCH:保存编排`),size:`large`,"hover-color":`var(--color-success)`,onClick:Fe},{default:R(()=>[z(r,null,{default:R(()=>[z(B(c))]),_:1})]),_:1},8,[`tooltip`]),z(ln,{tooltip:`执行流程`,size:`large`,"hover-color":`var(--color-primary)`,onClick:Ie},{default:R(()=>[z(r,null,{default:R(()=>[z(B(j))]),_:1})]),_:1}),z(ln,{tooltip:`清空流程`,size:`large`,"hover-color":`var(--color-danger)`,onClick:je},{default:R(()=>[z(r,null,{default:R(()=>[z(B(zt))]),_:1})]),_:1})])]),z(B(M),{nodes:O.value,"onUpdate:nodes":n[2]||=e=>O.value=e,edges:k.value,"onUpdate:edges":n[3]||=e=>k.value=e,class:`vue-flow-container`,"default-zoom":1,"min-zoom":.2,"max-zoom":4,"node-types":l,onNodeClick:Ce,onPaneClick:we,onEdgesChange:ke},{default:R(()=>[z(B(ee),{"pattern-color":`#aaa`,gap:16}),z(B(Te),{showInteractive:!1},{default:R(()=>[W(`button`,{class:`vue-flow__controls-button`,onClick:Ne,title:`优化布局`},[z(r,null,{default:R(()=>[z(B(f))]),_:1})])]),_:1})]),_:1},8,[`nodes`,`edges`])]),W(`div`,Fy,[W(`div`,Iy,[W(`h3`,null,q(B(m)(`@ORCH:节点工具箱`)),1)]),W(`div`,Ly,[W(`div`,{class:`tool-item`,onClick:n[4]||=e=>Se(`command`)},[n[14]||=W(`div`,{class:`tool-icon command`},`📋`,-1),W(`div`,Ry,q(B(m)(`@ORCH:命令节点`)),1),W(`div`,zy,q(B(m)(`@ORCH:执行自定义命令`)),1)]),W(`div`,{class:`tool-item`,onClick:n[5]||=e=>Se(`wait`)},[n[15]||=W(`div`,{class:`tool-icon wait`},`⏰`,-1),W(`div`,By,q(B(m)(`@ORCH:等待节点`)),1),W(`div`,Vy,q(B(m)(`@ORCH:暂停指定时间`)),1)]),W(`div`,{class:`tool-item`,onClick:n[6]||=e=>Se(`version`)},[n[16]||=W(`div`,{class:`tool-icon version`},`📦`,-1),W(`div`,Hy,q(B(m)(`@ORCH:版本管理`)),1),W(`div`,Uy,q(B(m)(`@ORCH:修改版本号或依赖`)),1)]),W(`div`,{class:`tool-item`,onClick:n[7]||=e=>Se(`condition`)},[n[17]||=W(`div`,{class:`tool-icon condition`},`🔀`,-1),W(`div`,Wy,q(B(m)(`@FLOWNODE:条件`)),1),W(`div`,Gy,q(B(m)(`@ORCH:条件分支`)),1)]),W(`div`,{class:`tool-item`,onClick:n[8]||=e=>Se(`code`)},[n[18]||=W(`div`,{class:`tool-icon code`},`🧩`,-1),W(`div`,Ky,q(B(m)(`@FLOWNODE:代码节点`)),1),W(`div`,qy,q(B(m)(`@ORCH:执行自定义代码`)),1)]),W(`div`,{class:`tool-item`,onClick:n[9]||=e=>Se(`confirm`)},[n[19]||=W(`div`,{class:`tool-icon confirm`},`✋`,-1),W(`div`,Jy,q(B(m)(`@ORCH:用户确认`)),1),W(`div`,Yy,q(B(m)(`@ORCH:等待用户确认后继续`)),1)]),W(`div`,{class:`tool-item`,onClick:n[10]||=e=>Se(`user_input`)},[n[20]||=W(`div`,{class:`tool-icon confirm`},`⌨️`,-1),W(`div`,Xy,q(B(m)(`@FLOWNODE:用户输入`)),1),W(`div`,Zy,q(B(m)(`@UINPUT:执行到该节点暂停并等待输入`)),1)])])])]),z(Sy,{modelValue:P.value,"onUpdate:modelValue":n[11]||=e=>P.value=e,node:ne.value,"all-nodes":O.value,edges:k.value,onUpdateConfig:Ee,onOpenCommandManager:n[12]||=()=>d(`open-command-manager`)},null,8,[`modelValue`,`node`,`all-nodes`,`edges`])]),_:1},8,[`modelValue`,`title`])}}}),[[`__scopeId`,`data-v-50b9df25`]]),$y={class:`flow-exec-viewer`},eb=`flow-execution-viewer`,tb=$(X({__name:`FlowExecutionViewer`,props:{flowData:{type:Object,required:!0},currentNodeId:{type:String,default:void 0},executedNodeIds:{type:Array,default:()=>[]},failedNodeIds:{type:Array,default:()=>[]},executedEdgeIds:{type:Array,default:()=>[]}},setup(e){function t(e){switch(e){case`command`:return`📋`;case`wait`:return`⏰`;case`version`:return`📦`;case`confirm`:return`✋`;case`code`:return`🧩`;case`start`:return`🚀`;case`condition`:return`🔀`;case`user_input`:return`⌨️`;default:return``}}let n=X({name:`FlowExecStartNodeRenderer`,props:{id:{type:String,required:!0},data:{type:Object,required:!0}},setup(e){return()=>xe($h,{id:e.id,nodeId:e.id,nodeType:`start`,title:Q(`@FLOWNODE:开始`),icon:t(`start`),enabled:e.data?.enabled,selected:e.data?.selected,execStatus:e.data?.execStatus,deletable:!1},{})}});function i(e){return X({name:`FlowExecWrappedNode`,props:{id:{type:String,required:!0},data:{type:Object,required:!0}},setup(n){let r=K(()=>{let e=n.data?.config,t=[...Array.isArray(e?.conditionBranches)?e.conditionBranches:[]].sort((e,t)=>{let n=e?.handleId===`default`||e?.isDefault,r=t?.handleId===`default`||t?.isDefault;return n&&!r?1:!n&&r?-1:Number(e?.priority??0)-Number(t?.priority??0)}).map(e=>String(e?.handleId||``).trim()).filter(e=>!!e);return t.includes(`default`)||t.push(`default`),t.length?t:[`default`]});return()=>xe($h,{id:n.id,nodeId:n.id,nodeType:n.data?.type,title:n.data?.label,icon:t(n.data?.type),enabled:n.data?.enabled,selected:n.data?.selected,execStatus:n.data?.execStatus,sourceHandleIds:n.data?.type===`condition`?r.value:void 0,deletable:!1},{default:()=>xe(e,{data:n.data,id:n.id})})}})}let a={start:o(n),command:o(i(sg)),wait:o(i(dg)),version:o(i(vg)),confirm:o(i(xg)),code:o(i(Og)),condition:o(i(Pg)),user_input:o(i(Ug))},s=e,{onPaneReady:c}=Pe({id:eb}),l=null,u=null;async function d(e){if(e){if(!l){u=e;return}for(let t=0;t<6;t+=1){if(await p(),await new Promise(e=>requestAnimationFrame(()=>e())),!(typeof l?.findNode==`function`&&l.findNode(e))){await new Promise(e=>window.setTimeout(()=>e(),60));continue}try{await l.fitView({nodes:[e],padding:.35,includeHiddenNodes:!0,minZoom:.35,maxZoom:1.2,duration:200})}catch{}break}}}c(e=>{l=e,console.log(`[FlowExecutionViewer] onPaneReady, flowId=`,eb),console.log(`[FlowExecutionViewer] instance keys=`,Object.keys(e||{}));try{l.fitView({padding:.2,includeHiddenNodes:!0,duration:0})}catch{}let t=(s.currentNodeId||u||``).trim();t&&(u=null,d(t))});let f=null;F(()=>s.currentNodeId,async e=>{e&&(f&&=(window.clearTimeout(f),null),f=window.setTimeout(async()=>{if(console.log(`[FlowExecutionViewer] focus request, flowId=`,eb,`nodeId=`,e),!l){u=e,console.log(`[FlowExecutionViewer] flowInstance not ready, pendingFocusNodeId=`,u);return}d(e)},150))}),r(()=>{f&&=(window.clearTimeout(f),null)});let m=K(()=>{let e=Array.isArray(s.flowData?.nodes)?s.flowData.nodes:[],t=new Set(s.executedNodeIds),n=new Set(s.failedNodeIds),r=s.currentNodeId;return e.map(e=>{let i;r&&e.id===r?i=`running`:n.has(e.id)?i=`failed`:t.has(e.id)&&(i=`success`);let a=[];return t.has(e.id)&&a.push(`exec-node-done`),{...e,data:{...e.data,execStatus:i},class:a.join(` `)}})}),h=K(()=>{let e=Array.isArray(s.flowData?.edges)?s.flowData.edges:[],t=new Set(s.executedEdgeIds);return e.map(e=>{let n=[];return t.has(e.id)&&n.push(`exec-edge-done`),{...e,class:n.join(` `)}})});return(e,t)=>(G(),Y(`div`,$y,[z(B(M),{id:eb,nodes:m.value,edges:h.value,"node-types":a,"nodes-draggable":!1,"nodes-connectable":!1,"elements-selectable":!1,"zoom-on-scroll":!0,"zoom-on-double-click":!1,"pan-on-drag":!0,"min-zoom":.2,"max-zoom":1.5},{default:R(()=>[z(B(ee)),z(B(Te))]),_:1},8,[`nodes`,`edges`])]))}}),[[`__scopeId`,`data-v-0bf9b2cc`]]),nb=e(ke(),1),rb={0:`var(--color-black)`,1:`#cd3131`,2:`#0dbc79`,3:`#e5e510`,4:`#2472c8`,5:`#bc3fbc`,6:`#11a8cd`,7:`#e5e5e5`,8:`#666666`,9:`#f14c4c`,10:`#23d18b`,11:`#f5f543`,12:`#3b8eea`,13:`#d670d6`,14:`#29b8db`,15:`var(--color-white)`};function ib(e={}){let t=new nb.default({fg:e.fg??`#e5e5e5`,bg:e.bg??`transparent`,newline:e.newline??!1,escapeXML:e.escapeXML??!1,stream:e.stream??!1,colors:e.colors??rb});function n(e){return t.toHtml(e)}return{ansiToHtml:n,converter:t}}function ab(){let e=w([]),t=w(!1);async function n(){try{t.value=!0;let n=await(await fetch(`/api/terminal-sessions`)).json();n?.success?e.value=Array.isArray(n.sessions)?n.sessions:[]:J.error(n?.error||`获取终端会话失败`)}catch(e){J.error(e?.message||`获取终端会话失败`)}finally{t.value=!1}}async function r(e){try{t.value=!0;let r=await(await fetch(`/api/terminal-sessions/${e.id}/restart`,{method:`POST`})).json();return r?.success?(J.success(`已重新启动终端`),await n(),!0):(J.error(r?.error||`重新启动失败`),!1)}catch(e){return J.error(e?.message||`重新启动失败`),!1}finally{t.value=!1}}async function i(e){try{await gt.confirm(`确定要删除该终端会话记录吗?如果该终端仍在运行,将尝试结束进程。`,`删除终端会话`,{confirmButtonText:`删除`,cancelButtonText:`取消`,type:`warning`})}catch{return!1}try{t.value=!0;let r=await(await fetch(`/api/terminal-sessions/${e.id}`,{method:`DELETE`})).json();return r?.success?(J.success(`已删除`),await n(),!0):(J.error(r?.error||`删除失败`),!1)}catch(e){return J.error(e?.message||`删除失败`),!1}finally{t.value=!1}}function a(t){let n=e.value.findIndex(e=>e.id===t.id);n>=0?e.value.splice(n,1,t):e.value.unshift(t)}return{sessions:e,loading:K(()=>t.value),count:K(()=>e.value.length),refresh:n,restart:r,remove:i,upsert:a}}var ob={class:`console-header`},sb={class:`header-left`},cb={class:`console-title`},lb={class:`header-actions`},ub={key:0,class:`execution-controls`},db={key:1,viewBox:`0 0 24 24`,width:`1em`,height:`1em`,fill:`currentColor`,style:{display:`block`}},fb={class:`console-content`},pb={class:`termial-session`},mb={key:0,class:`terminal-sessions-panel`},hb={class:`terminal-sessions-header`},gb={class:`terminal-sessions-title`},_b={class:`terminal-sessions-count`},vb={class:`terminal-sessions-actions`},yb={class:`terminal-sessions-body`},bb={key:0,class:`terminal-sessions-empty`},xb={key:1,class:`terminal-sessions-list`},Sb={class:`terminal-session-main`},Cb=[`title`],wb={class:`terminal-session-pid`},Tb={class:`terminal-session-meta`},Eb={class:`terminal-session-dir`},Db={class:`terminal-session-actions`},Ob={key:1,class:`terminal-sessions-collapsed`},kb={class:`console-content-main`},Ab={key:0,class:`orchestration-flow-panel`},jb={class:`flow-panel-header`},Mb={class:`flow-panel-title`},Nb={key:1,class:`orchestration-steps-panel`},Pb={class:`steps-header`},Fb={class:`steps-title`},Ib={key:0,class:`steps-orchestration`},Lb={key:0,class:`steps-list`},Rb={class:`step-indicator`},zb={key:4,class:`step-number`},Bb={class:`step-content`},Vb={class:`step-header`},Hb={key:0,class:`step-terminal-tag`,title:`终端执行`},Ub={key:1,class:`step-disabled-tag`},Wb={class:`step-name`},Gb={key:1,class:`terminal-waiting-panel`},Kb={class:`waiting-content`},qb={class:`waiting-text`},Jb={class:`waiting-desc`},Yb={class:`waiting-actions`},Xb={key:2,class:`terminal-waiting-panel user-confirm-panel`},Zb={class:`waiting-content`},Qb={class:`waiting-text`},$b={class:`waiting-desc`},ex={class:`waiting-actions`},tx={class:`console-input-row`},nx=[`title`],rx={key:2,class:`console-output`},ix=[`onClick`],ax={class:`cmd-line`},ox={class:`cmd-text`},sx=[`title`],cx={class:`ts`},lx={class:`cmd-actions`},ux={key:0,class:`output-content`},dx=[`innerHTML`],fx=[`innerHTML`],px={key:0,class:`stdin-input-row`},mx={class:`user-input-dialog-content`},hx={key:0,class:`user-input-empty`},gx={key:1,class:`user-input-form`},_x={class:`user-input-label`},vx={key:0,class:`required`},yx=$(X({__name:`CommandConsole`,setup(e){let n=hn(),i=yn();function a(){let e=window.location.port||`80`;return e===`5173`||e===`4173`||e===`5544`?4752:parseInt(e,10)}function o(){Ve().catch(e=>{J.error(e?.message||`提交后启动项执行失败`)})}async function s(e){let t=e?.flowData,n={id:String(e?.id||``).trim(),name:String(e?.name||``).trim()};if(t&&Array.isArray(t?.nodes)&&Array.isArray(t?.edges)){await c({flowData:t,orchestrationMeta:n});return}J.warning(`该编排缺少流程数据,无法执行`)}async function c(e){let t=e?.flowData;if(!t||!Array.isArray(t.nodes)||!Array.isArray(t.edges))return;let n=t.nodes,r=t.edges;Ce.value=!0,m.value=!0,g.value=!1,E.value=[],D.value=-1,O.value=t,k.value=!0,te.value=null,M.value=[],N.value=[],ne.value=[],re.value=(e?.orchestrationMeta?.name||``).trim(),ie.value=(e?.orchestrationMeta?.id||``).trim();let i={},a=new Map(n.map(e=>[e.id,e])),o=(e?.startNodeId||``).trim()||n.find(e=>e.type===`start`)?.id;if(!o){J.error(`未找到 start 节点`);return}let s=new Map;for(let e of r)s.has(e.source)||s.set(e.source,[]),s.get(e.source).push(e);for(let[e,t]of s.entries()){let n=a.get(e);if(n&&n.type!==`start`&&n.type!==`condition`&&t.length>1){J.error(`节点 ${n.data?.label||n.id} 出边超过 1 条,当前版本不支持`);return}}let c=Math.max(100,n.length*10),l=new Map,u=(e,t,n)=>{let r=e??``,i=n??``;switch(t){case`contains`:return r.includes(i);case`not_contains`:return!r.includes(i);case`isEmpty`:return String(r).trim().length===0;case`isNotEmpty`:return String(r).trim().length>0;case`==`:return r===i;case`!=`:return r!==i;case`>`:case`>=`:case`<`:case`<=`:{let e=Number(r),n=Number(i);return Number.isNaN(e)||Number.isNaN(n)?!1:t===`>`?e>n:t===`>=`?e>=n:t===`<`?e<n:e<=n}default:return!1}},d=(e,t)=>{let n=s.get(e)||[],r=(Array.isArray(t?.conditionBranches)?t.conditionBranches:[]).map(e=>({id:String(e?.id||``),name:String(e?.name||``),handleId:String(e?.handleId||``),priority:typeof e?.priority==`number`?e.priority:Number(e?.priority??0),combine:e?.combine===`any`?`any`:`all`,rules:Array.isArray(e?.rules)?e.rules:[],isDefault:!!e?.isDefault||String(e?.handleId||``)===`default`})).filter(e=>!!e.handleId),a=r.find(e=>e.isDefault)||r.find(e=>e.handleId===`default`),o=r.filter(e=>!e.isDefault&&e.handleId!==`default`).sort((e,t)=>(e.priority??0)-(t.priority??0)),c=e=>{let t=Array.isArray(e.rules)?e.rules:[];if(t.length===0)return!1;let n=t.map(e=>{let t=String(e?.left?.nodeId||``).trim(),n=String(e?.left?.outputKey||`stdout`).trim()||`stdout`,r=t&&i?.[t]?.[n]||``;return u(String(r??``),String(e?.op||``),e?.right)});return e.combine===`any`?n.some(Boolean):n.every(Boolean)},l=o.find(e=>c(e));!l&&a&&(l=a);let d=String(l?.handleId||``),f=d?n.find(e=>String(e.sourceHandle||``).trim()===d):void 0;return console.log(`[FLOW][condition]`,{nodeId:e,chosen:l?{name:l.name,handleId:l.handleId,priority:l.priority,isDefault:l.isDefault}:null,outs:n.map(e=>({id:e.id,sourceHandle:e.sourceHandle,target:e.target})),nodeOutputsKeys:Object.keys(i||{})}),f},f=o,p=0;try{for(;f;){if(!m.value)throw Error(`用户停止执行`);if(p++>c)throw Error(`执行步数超过上限(${c}),可能存在循环`);let t=l.get(f)||0;if(l.set(f,t+1),t>=10)throw Error(`检测到节点 ${f} 被重复执行过多次,可能存在循环`);let n=a.get(f);if(!n)throw Error(`节点不存在: ${f}`);if(te.value=n.id,n.type===`start`){let e=s.get(n.id)||[];M.value=M.value.includes(n.id)?M.value:[...M.value,n.id],e[0]?.id&&(N.value=N.value.includes(e[0].id)?N.value:[...N.value,e[0].id]),f=e[0]?.target;continue}let r=n.data?.config;if(!r)throw Error(`节点未配置: ${n.data?.label||n.id}`);r.enabled===void 0&&(r.enabled=n.data?.enabled??!0);let o=e?.isSingleExecution===!0;if(r.enabled===!1&&!o){f=(s.get(n.id)||[])[0]?.target;continue}if(n.type===`condition`){let e=d(n.id,r);if(M.value=M.value.includes(n.id)?M.value:[...M.value,n.id],e?.id&&(N.value=N.value.includes(e.id)?N.value:[...N.value,e.id]),f=e?.target,o)break;continue}let u=s.get(n.id)||[],h=e?.isSingleExecution!==!0&&!!u[0]?.target;if(!await pt([{...r,nodeId:n.id,enabled:r.enabled}],0,!0,e?.orchestrationMeta,{nodeOutputs:i,skipUiSetup:!0,skipUiTeardown:!0,forceTerminalConfirm:h})){n.id&&!ne.value.includes(n.id)&&(ne.value=[...ne.value,n.id]);break}if(!m.value)break;M.value=M.value.includes(n.id)?M.value:[...M.value,n.id];let g=s.get(n.id)||[];if(g[0]?.id&&(N.value=N.value.includes(g[0].id)?N.value:[...N.value,g[0].id]),f=g[0]?.target,o)break}}catch(e){String(e?.message||e)!==`用户停止执行`&&(te.value&&!ne.value.includes(te.value)&&(ne.value=[...ne.value,te.value]),J.error(e?.message||String(e)))}finally{m.value=!1,g.value=!1,D.value=-1,E.value=[],te.value=null}}let l=a(),u=w(null),d=w(``),f=w(``),m=w(!1),g=w(!1),_=w([]),v=0;function y(){gt.confirm(`确定要清空所有执行历史吗?此操作不可撤销。`,`清空历史`,{confirmButtonText:`清空`,cancelButtonText:`取消`,type:`warning`}).then(()=>{_.value=[],J.success(`执行历史已清空`)}).catch(()=>{})}function S(){se&&se(!0)}function C(){se&&se(!1),m.value=!1,g.value=!1}function ee(){ue&&ue(!0)}function T(){ue&&ue(!1),m.value=!1,g.value=!1}let E=w([]),D=w(-1),O=w(null),k=w(!0),te=w(null),M=w([]),N=w([]),ne=w([]),re=w(``),ie=w(``),I=w(!1),ae=w(``),se=null,ce=w(!1),le=w(``),ue=null,de=w(!1),fe=w(``),pe=w([]),he=w({}),ge=null,_e=K({get:()=>de.value,set:e=>{de.value=e}});function ye(){let e=Array.isArray(pe.value)?pe.value:[];for(let t of e){if(!t?.required)continue;let e=he.value?.[t.name];if(e==null||String(e).trim()===``){J.warning(Q(`@UINPUT:请输入必填参数的值`,{name:t.name}));return}}ge&&ge(!0)}function xe(){ge&&ge(!1),m.value=!1,g.value=!1}let{ansiToHtml:Se}=ib(),Ce=w(!1),Te=K({get:()=>n.ui.commandConsole.useTerminal,set:e=>{n.ui.commandConsole.useTerminal=e}}),{sessions:Ee,loading:De,refresh:Oe,restart:ke,remove:Ae,upsert:Ne}=ab(),Pe=K({get:()=>n.ui.commandConsole.showTerminalSessions,set:e=>{n.ui.commandConsole.showTerminalSessions=e}}),Fe=K(()=>Ee.value.length),Ie=w(!1);function Le(e){return new Promise(t=>setTimeout(t,e))}async function Re(e=8e3){let t=Date.now();for(;Date.now()-t<e;){if(u.value&&u.value.connected)return!0;await Le(100)}return!1}async function ze(e){let t=n.customCommands.find(t=>String(t.id)===String(e));if(!t){J.warning(`启动项命令不存在: ${e}`);return}let r=t.directory||d.value,i=t.command;if(Te.value){try{let e=await(await fetch(`/api/exec-in-terminal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({command:i,workingDirectory:r})})).json();e?.success?e?.session?Ne(e.session):await Oe():J.error(e?.error||`启动项命令执行失败`)}catch(e){J.error(e?.message||`启动项命令执行失败`)}return}if(!await Re()){J.error(`Socket 连接未就绪,无法自动执行交互式启动项`);return}await bt(i,r)}async function Be(e){let t=n.orchestrations.find(t=>t.id===e);if(!t){J.warning(`启动项工作流不存在: ${e}`);return}await s(t)}async function Ve(){await n.loadConfig(!1);let e=n.afterQuickPushAction;e?.enabled&&e?.refId&&(e.type===`workflow`?await Be(e.refId):await ze(e.refId))}async function He(){if(Ie.value||(Ie.value=!0,await n.loadConfig(!1),!n.startupAutoRun))return;let e=(n.startupItems||[]).filter(e=>e?.enabled!==!1);if(e.length!==0)for(let t of e)t.type===`workflow`?await Be(t.refId):await ze(t.refId)}let Ue=e=>Math.min(85,Math.max(15,e)),We=K({get:()=>Ue(n.ui.commandConsole.splitPercent),set:e=>{n.ui.commandConsole.splitPercent=Ue(e)}}),Ge=w(null),Ke=()=>{let e=Ge.value?.$el??Ge.value;if(e&&e.clientWidth)return e.clientWidth;try{return e?.getBoundingClientRect?.().width??0}catch{return 0}},Je=()=>{let e=Ge.value?.$el??Ge.value;if(!e)return;let t=e.querySelectorAll?.(`.el-splitter__panel`),n=Ke();if(!t||t.length<1||n<=0)return;let r=t[0]?.getBoundingClientRect?.().width??0;if(r>0){let e=Ue(r/n*100);e!==We.value&&(We.value=e)}},Ye=K({get(){return`${Ue(We.value)}%`},set(e){let t=NaN;if(typeof e==`number`){let n=Ke();n>0&&!isNaN(e)&&(t=e/n*100)}else if(typeof e==`string`){if(e.endsWith(`%`))t=parseFloat(e);else if(e.endsWith(`px`)){let n=parseFloat(e),r=Ke();r>0&&!isNaN(n)&&(t=n/r*100)}}isNaN(t)||(We.value=Ue(t))}});async function Xe(e=!0){if(Ee.value.length!==0)try{let t=await(await fetch(`/api/terminal-sessions/status?cleanup=${e?`true`:`false`}`)).json();t?.success&&(Ee.value=Array.isArray(t.sessions)?t.sessions:[])}catch{}}function Qe(e){let t=String(e||``).trim();if(!t)return``;let n=t.replace(/\/+$/g,``).replace(/\+$/g,``),r=n.split(/[\\/]+/).filter(Boolean);return r[r.length-1]||n}let $e=w(!1),et=w(!1);async function tt(){let e=f.value.trim();!e||m.value||(f.value=``,await nt(e,d.value))}async function nt(e,t=d.value){if(m.value=!0,Te.value){try{let n=await(await fetch(`/api/exec-in-terminal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({command:e,workingDirectory:t})})).json();n?.success?(J.success(`已在新终端中执行命令`),n?.session?Ne(n.session):await Oe()):J.error(n?.error||`执行失败`)}catch(e){J.error(e?.message||`执行失败`)}finally{m.value=!1}return}let n={id:++v,command:e,directory:t,success:!1,ts:new Date().toLocaleString(),expanded:!0,stdout:``,stderr:``,running:!0};_.value.unshift(n),f.value=``;try{console.log(`[前端-控制台] 开始发送流式请求:`,e);let t=await fetch(`/api/exec-stream`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({command:e,directory:n.directory})});if(console.log(`[前端-控制台] 收到响应,状态:`,t.status,t.statusText),!t.ok)throw Error(`HTTP ${t.status}: ${t.statusText}`);let r=t.body?.getReader(),i=new TextDecoder;if(!r)throw Error(`无法读取响应流`);console.log(`[前端-控制台] 开始读取流数据`);let a=``,o=0;for(;;){let{done:e,value:t}=await r.read();if(o++,console.log(`[前端-控制台] 读取数据块 #${o}, done:`,e,`size:`,t?.length||0),e)break;let s=i.decode(t,{stream:!0});console.log(`[前端-控制台] 解码数据块:`,s.substring(0,200)),a+=s;let c=a.split(`
|
|
48
|
+
}`}];function a(e){v.value.codeScript=e,J.success(Q(`@NODECFG:已应用示例`))}let o=e,s=n;function l(){s(`open-command-manager`)}let u=hn(),d=K(()=>{let e=Q(`@NODECFG:节点配置`);return o.node?`${e} - ${{command:Q(`@FLOWNODE:命令节点`),wait:Q(`@FLOWNODE:等待节点`),version:Q(`@FLOWNODE:版本管理`),confirm:Q(`@FLOWNODE:用户确认`),code:Q(`@FLOWNODE:代码节点`),condition:Q(`@FLOWNODE:条件`),user_input:Q(`@FLOWNODE:用户输入`)}[o.node.type]||o.node.type}`:e}),f=K({get:()=>o.modelValue,set:e=>s(`update:modelValue`,e)}),p=w(null),h=w(null),g=w(null),v=w({}),y=K(()=>{let e=(Array.isArray(v.value.userInputParams)?v.value.userInputParams:[]).map(e=>String(e?.name||``).trim()).filter(e=>!!e);return Array.from(new Set(e)).map(e=>({key:e}))}),b=K(()=>{let e=(Array.isArray(v.value.versionInputs)?v.value.versionInputs:[]).map(e=>String(e?.name||``).trim()).filter(e=>!!e);return Array.from(new Set(e))});function S(){let e=b.value;if(e.length===0){v.value.versionInputKey=``;return}let t=String(v.value.versionInputKey||``).trim();t&&e.includes(t)||(v.value.versionInputKey=e.includes(`version`)?`version`:e[0])}function C(){let e=b.value;if(e.length===0){v.value.dependencyVersionInputKey=``;return}let t=String(v.value.dependencyVersionInputKey||``).trim();if(!(t&&e.includes(t))){if(e.includes(`dependencyVersion`)){v.value.dependencyVersionInputKey=`dependencyVersion`;return}v.value.dependencyVersionInputKey=e.includes(`version`)?`version`:e[0]}}function ee(){return{id:`branch-${Date.now()}-${Math.random().toString(36).slice(2,6)}`,name:Q(`@COND:默认分支`),handleId:`default`,priority:999,combine:`all`,rules:[],isDefault:!0}}function T(e){let t=(Array.isArray(e)?e:[]).map(e=>({id:String(e?.id||`branch-${Date.now()}-${Math.random().toString(36).slice(2,6)}`),name:String(e?.name||``).trim()||Q(`@COND:分支名称`),handleId:String(e?.handleId||``).trim()||`branch`,priority:Number.isFinite(Number(e?.priority))?Number(e?.priority):0,combine:e?.combine===`any`?`any`:`all`,rules:Array.isArray(e?.rules)?e.rules:[],isDefault:!!e?.isDefault}));t.some(e=>e.handleId===`default`||e.isDefault)||t.push(ee());for(let e of t)e.handleId===`default`&&(e.isDefault=!0,e.name||=Q(`@COND:默认分支`));return t}function E(){return{left:{nodeId:``,outputKey:`stdout`},op:`contains`,right:``}}function D(){let e=T(v.value.conditionBranches);e.push({id:`branch-${Date.now()}-${Math.random().toString(36).slice(2,6)}`,name:Q(`@COND:分支名称`),handleId:`branch-${e.length}`,priority:e.length,combine:`all`,rules:[E()],isDefault:!1}),v.value.conditionBranches=e}function O(e){let t=T(v.value.conditionBranches),n=t.find(t=>t.id===e);if(n?.handleId===`default`||n?.isDefault){J.warning(Q(`@COND:请至少保留一个默认分支`));return}v.value.conditionBranches=t.filter(t=>t.id!==e)}function k(e){let t=T(v.value.conditionBranches),n=t.find(t=>t.id===e);n&&(n.rules=Array.isArray(n.rules)?[...n.rules,E()]:[E()],v.value.conditionBranches=t)}function te(e,t){let n=T(v.value.conditionBranches),r=n.find(t=>t.id===e);r&&(r.rules=(Array.isArray(r.rules)?r.rules:[]).filter((e,n)=>n!==t),v.value.conditionBranches=n)}function j(e){let t=(Array.isArray(e)?e:[]).map(e=>({name:String(e?.name||``).trim(),source:e?.source===`manual`?`manual`:`reference`,manualValue:e?.manualValue===void 0||e?.manualValue===null?``:String(e.manualValue),ref:e?.ref?{nodeId:String(e.ref.nodeId||``),outputKey:String(e.ref.outputKey||`stdout`)}:void 0})).filter(e=>!!e.name||!!e.manualValue||!!e.ref?.nodeId),n=new Set,r=[];for(let e of t)n.has(e.name)||(n.add(e.name),r.push(e));return r.slice(0,30)}function M(e){return(Array.isArray(e)?e:[]).find(e=>String(e?.name||``).trim()===`version`)}function N(e){let t=Array.isArray(v.value.versionInputs)?[...v.value.versionInputs]:[],n=t.findIndex(e=>String(e?.name||``).trim()===`version`),r={...n>=0?t[n]:{name:`version`,source:`manual`,manualValue:``,ref:{nodeId:``,outputKey:`stdout`}},...e,name:`version`};e.source&&(e.source===`manual`?(r.ref=void 0,r.manualValue===void 0&&(r.manualValue=``)):(r.manualValue=void 0,r.ref||={nodeId:``,outputKey:`stdout`})),n>=0?t[n]=r:t.push(r),v.value.versionInputs=j(t)}function ne(){let e=Array.isArray(v.value.versionInputs)?v.value.versionInputs:[];v.value.versionInputs=e.filter(e=>String(e?.name||``).trim()!==`version`)}function re(e){return!e?.ref?.nodeId||!e?.ref?.outputKey?``:`${e.ref.nodeId}::${e.ref.outputKey}`}function ie(e){if(!e)return;let[t,n]=e.split(`::`);N({source:`reference`,ref:{nodeId:t,outputKey:n}})}function I(e){let t=(Array.isArray(e)?e:[]).map(e=>({key:String(e?.key||``).trim(),type:e?.type||`String`,desc:String(e?.desc||``).trim()})).filter(e=>!!e.key),n=new Set,r=[];for(let e of t)n.has(e.key)||(n.add(e.key),r.push(e));return r.slice(0,30)}function ae(){return{key:``,type:`String`}}function oe(){let e=Array.isArray(v.value.codeOutputParams)?[...v.value.codeOutputParams]:[];e.push(ae()),v.value.codeOutputParams=e}let se=w([]),ce=K(()=>u.customCommands||[]),ue=K(()=>{if(!v.value.commandId)return[];let e=ce.value.find(e=>e.id===v.value.commandId);return e?Os(e.command):[]}),de=K(()=>{if(!o.node||!o.allNodes||!o.edges)return[];let e=o.node.id,t=o.edges,n=o.allNodes,r=[],i=new Set,a=[e];function s(e){return t.filter(t=>t.target===e).map(e=>e.source)}for(;a.length>0;){let e=s(a.shift());for(let t of e)if(!i.has(t)){i.add(t),a.push(t);let e=n.find(e=>e.id===t);if(e&&(e.type===`command`||e.type===`code`||e.type===`user_input`)&&e.data.config){if(e.type===`command`&&e.data.config?.useTerminal===!0)continue;r.push(e)}}}return r});function fe(e){if(!e)return[];if(e.type===`command`)return[{key:`stdout`,label:Q(`@NODECFG:标准输出(stdout)`)},{key:`stderr`,label:Q(`@NODECFG:标准错误(stderr)`)},{key:`error`,label:Q(`@NODECFG:错误(error)`)}];if(e.type===`code`){let t=e.data?.config,n=Array.isArray(t?.codeOutputParams)?t.codeOutputParams:[];if(n.length>0)return n.map(e=>String(e?.key||``).trim()).filter(e=>!!e).map(e=>({key:e,label:e}));let r=t?.codeOutputKeys;return(Array.isArray(r)?r:[]).map(e=>String(e||``).trim()).filter(e=>!!e).map(e=>({key:e,label:e}))}if(e.type===`user_input`){let t=e.data?.config;return(Array.isArray(t?.userInputParams)?t.userInputParams:[]).map(e=>String(e?.name||``).trim()).filter(e=>!!e).map(e=>({key:e,label:e}))}return[]}function me(e){return e.type===`command`?e.data.config?.commandName||e.data.label||Q(`@NODECFG:命令节点`):e.type===`code`?e.data.label||Q(`@FLOWNODE:代码节点`):e.type===`user_input`?e.data.label||Q(`@FLOWNODE:用户输入`):e.data.label||e.id}function he(e){let t=new Map;for(let n of Array.isArray(e)?e:[]){let e=String(n?.key||``).trim();e&&t.set(e,String(n?.desc||``).trim())}return[{key:`stdout`,desc:t.get(`stdout`)||``},{key:`stderr`,desc:t.get(`stderr`)||``},{key:`error`,desc:t.get(`error`)||``}]}F(()=>o.node,e=>{if(!e)return;let t=e.data.config;if(e.type===`command`)v.value={commandId:t?.commandId,commandName:t?.commandName,useTerminal:t?.useTerminal||!1,restartExistingTerminal:t?.restartExistingTerminal||!1,inputs:Array.isArray(t?.inputs)?t.inputs:[],commandOutputParams:he(t?.commandOutputParams),nodeName:t?.displayName||e.data.label||``,enabled:e.data.enabled??!0};else if(e.type===`wait`)v.value={waitSeconds:t?.waitSeconds||5,nodeName:t?.displayName||e.data.label||``,enabled:e.data.enabled??!0};else if(e.type===`version`){let n=`bump`;t?.versionSource===`input`&&(n=`input`);let r=M(t?.versionInputs);n!==`input`&&(t?.versionTarget!==`dependency`&&r?n=r.source===`manual`?`manual`:`reference`:t?.inputRef?n=`reference`:t?.dependencyVersion||t?.versionTarget!==`dependency`&&!t?.versionBump?n=`manual`:(t?.dependencyVersionBump||t?.versionBump)&&(n=`bump`)),v.value={versionTarget:t?.versionTarget||`version`,versionBump:t?.versionBump||`patch`,packageJsonPath:t?.packageJsonPath||``,dependencyName:t?.dependencyName||``,dependencyVersion:t?.dependencyVersion||``,dependencyType:t?.dependencyType||`dependencies`,dependencyVersionMode:t?.dependencyVersionBump?`bump`:`manual`,dependencyVersionBump:t?.dependencyVersionBump||`patch`,versionInputs:j(t?.versionInputs),versionSource:n,inputRef:t?.inputRef,extractVersionFromRefOutput:t?.extractVersionFromRefOutput??!0,versionInputKey:String(t?.versionInputKey||``).trim()||void 0,dependencyVersionInputKey:String(t?.dependencyVersionInputKey||``).trim()||void 0,nodeName:t?.displayName||e.data.label||``,enabled:e.data.enabled??!0},n===`input`&&(v.value.versionTarget===`dependency`?C():S()),t?.packageJsonPath&&ge(t.packageJsonPath)}else if(e.type===`code`){let n=Array.isArray(t?.codeInputs)?t.codeInputs:[],r=Array.isArray(t?.codeOutputParams)?t.codeOutputParams:[];v.value={codeScript:t?.codeScript||``,codeInputs:n,codeOutputParams:r,nodeName:t?.displayName||e.data.label||``,enabled:e.data.enabled??!0}}else e.type===`confirm`?v.value={nodeName:t?.displayName||e.data.label||``,enabled:e.data.enabled??!0}:e.type===`condition`?v.value={conditionBranches:T(t?.conditionBranches),nodeName:t?.displayName||e.data.label||``,enabled:e.data.enabled??!0}:e.type===`user_input`&&(v.value={userInputParams:Array.isArray(t?.userInputParams)?t.userInputParams:[],nodeName:t?.displayName||e.data.label||``,enabled:e.data.enabled??!0})},{immediate:!0});async function ge(e){try{let t=await fetch(`/api/read-package-json`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({packageJsonPath:e})});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();if(n.success){let e=[],t=v.value.dependencyType||`dependencies`;if(t===`dependencies`&&n.dependencies)e.push(...Object.keys(n.dependencies));else if(t===`devDependencies`&&n.devDependencies)e.push(...Object.keys(n.devDependencies));else if(t===`peerDependencies`){let t=n.peerDependencies&&Object.keys(n.peerDependencies).length>0?n.peerDependencies:n.peerDependenciesMeta;t&&e.push(...Object.keys(t))}se.value=e.sort()}}catch(e){console.error(Q(`@NODECFG:读取依赖列表失败`),e),se.value=[]}}F(()=>v.value.dependencyType,()=>{v.value.packageJsonPath&&ge(v.value.packageJsonPath)});function _e(e){v.value.selectedPackageFile=e,e?(v.value.packageJsonPath=e.fullPath,ge(e.fullPath)):se.value=[]}function ve(e){v.value.commandId=e.id,v.value.commandName=e.name}function ye(){return`step-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}function be(){if(!o.node)return;let e=null;if(o.node.type===`command`){if(!v.value.commandId){J.warning(Q(`@NODECFG:请选择要执行的命令`));return}let t=Array.isArray(v.value.inputs)?v.value.inputs:[];for(let e of t){if(!e||!e.required)continue;let t=String(e.paramName||``).trim()||Q(`@NODEINPUT:参数名`);if(e.inputType===`reference`){let n=String(e.referenceNodeId||``).trim(),r=String(e.referenceOutputKey||``).trim();if(!n||!r){J.warning(Q(`@NODECFG:必填参数未选择引用输出`,{name:t}));return}}else{let n=e.manualValue;if(n==null||String(n).trim()===``){J.warning(Q(`@NODECFG:请输入必填参数的值`,{name:t}));return}}}e={id:o.node.data.config?.id||ye(),nodeId:o.node.id,type:`command`,displayName:v.value.nodeName?.trim()||void 0,commandId:v.value.commandId,commandName:v.value.commandName||``,useTerminal:v.value.useTerminal||!1,restartExistingTerminal:v.value.useTerminal&&v.value.restartExistingTerminal||!1,inputs:v.value.inputs||[],commandOutputParams:he(v.value.commandOutputParams),enabled:v.value.enabled??!0}}else if(o.node.type===`wait`){if(!v.value.waitSeconds||v.value.waitSeconds<=0){J.warning(Q(`@NODECFG:等待时间必须大于0秒`));return}e={id:o.node.data.config?.id||ye(),nodeId:o.node.id,type:`wait`,displayName:v.value.nodeName?.trim()||void 0,waitSeconds:v.value.waitSeconds,enabled:v.value.enabled??!0}}else if(o.node.type===`version`){if(v.value.versionTarget===`dependency`){if(!v.value.dependencyName?.trim()){J.warning(Q(`@NODECFG:请选择依赖包名称`));return}if(v.value.versionSource===`manual`&&!v.value.dependencyVersion?.trim()){J.warning(Q(`@NODECFG:请输入依赖包版本号`));return}if(v.value.versionSource===`reference`&&!v.value.inputRef){J.warning(Q(`@NODECFG:请选择要引用的节点输出`));return}if(v.value.versionSource===`input`&&!String(v.value.dependencyVersionInputKey||``).trim()){J.warning(Q(`@NODECFG:请选择要引用的输入字段`));return}}else if(v.value.versionSource===`input`&&!String(v.value.versionInputKey||``).trim()){J.warning(Q(`@NODECFG:请选择要引用的输入字段`));return}e={id:o.node.data.config?.id||ye(),nodeId:o.node.id,type:`version`,displayName:v.value.nodeName?.trim()||void 0,versionTarget:v.value.versionTarget||`version`,versionBump:v.value.versionSource===`bump`?v.value.versionBump||`patch`:void 0,packageJsonPath:v.value.packageJsonPath?.trim()||void 0,dependencyName:v.value.versionTarget===`dependency`?v.value.dependencyName?.trim():void 0,dependencyVersion:v.value.versionTarget===`dependency`&&v.value.versionSource===`manual`?v.value.dependencyVersion?.trim():void 0,dependencyVersionBump:v.value.versionTarget===`dependency`&&v.value.versionSource===`bump`?v.value.dependencyVersionBump:void 0,dependencyType:v.value.versionTarget===`dependency`?v.value.dependencyType:void 0,versionInputs:j(v.value.versionInputs),versionSource:v.value.versionSource,inputRef:v.value.versionSource===`reference`?v.value.inputRef:void 0,extractVersionFromRefOutput:v.value.versionSource===`reference`?v.value.extractVersionFromRefOutput??!0:void 0,versionInputKey:v.value.versionSource===`input`&&v.value.versionTarget!==`dependency`&&String(v.value.versionInputKey||``).trim()||void 0,dependencyVersionInputKey:v.value.versionSource===`input`&&v.value.versionTarget===`dependency`&&String(v.value.dependencyVersionInputKey||``).trim()||void 0,enabled:v.value.enabled??!0}}else if(o.node.type===`code`){if(!v.value.codeScript||!String(v.value.codeScript).trim()){J.warning(Q(`@NODECFG:请输入脚本`));return}let t=j(v.value.codeInputs);for(let e of Array.isArray(t)?t:[]){if(!e||!e.required)continue;let t=String(e.name||``).trim()||Q(`@NODECFG:参数名`);if(e.source===`reference`){let n=String(e.ref?.nodeId||``).trim(),r=String(e.ref?.outputKey||``).trim();if(!n||!r){J.warning(Q(`@NODECFG:必填参数未选择引用输出`,{name:t}));return}}else{let n=e.manualValue;if(n==null||String(n).trim()===``){J.warning(Q(`@NODECFG:请输入必填参数的值`,{name:t}));return}}}let n=I(v.value.codeOutputParams);if(n.length===0){J.warning(Q(`@NODECFG:请配置输出键`));return}let r=n.map(e=>e.key);e={id:o.node.data.config?.id||ye(),nodeId:o.node.id,type:`code`,displayName:v.value.nodeName?.trim()||void 0,codeScript:v.value.codeScript,codeInputs:t,codeOutputParams:n,codeOutputKeys:r,enabled:v.value.enabled??!0}}else if(o.node.type===`confirm`)e={id:o.node.data.config?.id||ye(),nodeId:o.node.id,type:`confirm`,displayName:v.value.nodeName?.trim()||void 0,enabled:v.value.enabled??!0};else if(o.node.type===`condition`){let t=T(v.value.conditionBranches);if(!t.some(e=>e.handleId===`default`||e.isDefault)){J.warning(Q(`@COND:请至少保留一个默认分支`));return}for(let e of t)if(e.isDefault&&e.handleId!==`default`){J.warning(Q(`@COND:默认分支必须使用handleId=default`));return}e={id:o.node.data.config?.id||ye(),nodeId:o.node.id,type:`condition`,displayName:v.value.nodeName?.trim()||void 0,conditionBranches:t,enabled:v.value.enabled??!0}}else if(o.node.type===`user_input`){let t=(Array.isArray(v.value.userInputParams)?v.value.userInputParams:[]).map(e=>({name:String(e?.name||``).trim(),source:e?.source===`reference`?`reference`:`manual`,required:!!e?.required,defaultValue:e?.defaultValue===void 0||e?.defaultValue===null?``:String(e.defaultValue),ref:e?.ref?{nodeId:String(e.ref.nodeId||``),outputKey:String(e.ref.outputKey||`stdout`)}:void 0})).filter(e=>!!e.name),n=new Set,r=[];for(let e of t)e.name&&(n.has(e.name)||(n.add(e.name),r.push(e)));for(let e of r)if(e.required&&e.source===`reference`){let t=String(e?.ref?.nodeId||``).trim(),n=String(e?.ref?.outputKey||``).trim();if(!t||!n){J.warning(Q(`@NODECFG:必填参数未选择引用输出`,{name:e.name}));return}}e={id:o.node.data.config?.id||ye(),nodeId:o.node.id,type:`user_input`,displayName:v.value.nodeName?.trim()||void 0,userInputParams:r,enabled:v.value.enabled??!0}}e&&(s(`update-config`,o.node.id,e),J.success(Q(`@NODECFG:节点配置已保存`)),f.value=!1)}return(e,n)=>{let o=t,s=Me,u=ft,ee=Ke,w=i,T=P,E=le,j=De,F=Ce,I=_,he=m,ge=Ae,ye=A,xe=vt;return G(),U(pa,{modelValue:f.value,"onUpdate:modelValue":n[35]||=e=>f.value=e,title:d.value,size:`extra-large`,"append-to-body":!0,"z-index":8e5,"custom-class":`node-config-dialog`},{footer:R(()=>[W(`div`,yy,[W(`div`,by,[W(`button`,{type:`button`,class:`dialog-cancel-btn`,onClick:n[34]||=e=>f.value=!1},q(B(Q)(`@NODECFG:取消`)),1),W(`button`,{type:`button`,class:`dialog-confirm-btn`,onClick:be},[z(o,null,{default:R(()=>[z(B(c))]),_:1}),W(`span`,null,q(B(Q)(`@NODECFG:保存配置`)),1)])])])]),default:R(()=>[e.node?(G(),Y(`div`,U_,[W(`div`,W_,[W(`div`,G_,[z(o,null,{default:R(()=>[z(B(c))]),_:1}),Z(` `+q(B(Q)(`@NODECFG:通用设置`)),1)]),z(w,{"label-width":`120px`},{default:R(()=>[z(u,{label:B(Q)(`@NODECFG:节点名称`)},{default:R(()=>[z(s,{modelValue:v.value.nodeName,"onUpdate:modelValue":n[0]||=e=>v.value.nodeName=e,placeholder:B(Q)(`@NODECFG:请输入节点名称`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),z(u,{label:B(Q)(`@NODECFG:启用节点`)},{default:R(()=>[z(ee,{modelValue:v.value.enabled,"onUpdate:modelValue":n[1]||=e=>v.value.enabled=e},null,8,[`modelValue`])]),_:1},8,[`label`])]),_:1})]),e.node?.type===`version`?(G(),Y(`div`,K_,[W(`div`,q_,[z(o,null,{default:R(()=>[z(B(Se))]),_:1}),Z(` `+q(B(Q)(`@NODECFG:输入配置`))+` `,1),z(T,{type:`primary`,plain:``,icon:B(pe),style:{"margin-left":`auto`},onClick:n[2]||=e=>h.value?.addRow()},null,8,[`icon`])]),z(A_,{ref_key:`versionInputRef`,ref:h,"model-value":v.value.versionInputs||[],"onUpdate:modelValue":n[3]||=e=>v.value.versionInputs=e,"predecessor-nodes":de.value,title:void 0,addable:!1},null,8,[`model-value`,`predecessor-nodes`])])):V(``,!0),e.node?.type===`condition`?(G(),Y(`div`,J_,[W(`div`,Y_,[z(o,null,{default:R(()=>[z(B(Se))]),_:1}),Z(` `+q(B(Q)(`@COND:条件配置`))+` `,1),z(T,{class:`icon-btn`,type:`primary`,plain:``,circle:``,icon:B(pe),style:{"margin-left":`auto`},title:B(Q)(`@COND:添加分支`),onClick:D},null,8,[`icon`,`title`])]),W(`div`,X_,[W(`div`,Z_,[W(`span`,null,q(B(Q)(`@COND:分支列表`)),1)]),!v.value.conditionBranches||v.value.conditionBranches.length===0?(G(),Y(`div`,Q_,q(B(Q)(`@COND:请至少保留一个默认分支`)),1)):(G(),Y(`div`,$_,[(G(!0),Y(H,null,L(v.value.conditionBranches,e=>(G(),Y(`div`,{key:e.id,class:`condition-branch-card`},[W(`div`,ev,[W(`div`,tv,[W(`div`,nv,[e.handleId===`default`||e.isDefault?(G(),Y(`span`,rv,q(B(Q)(`@COND:默认分支`)),1)):V(``,!0),z(s,{modelValue:e.name,"onUpdate:modelValue":t=>e.name=t,size:`small`,disabled:e.handleId===`default`||e.isDefault,placeholder:B(Q)(`@COND:分支名称`)},null,8,[`modelValue`,`onUpdate:modelValue`,`disabled`,`placeholder`])])]),W(`div`,iv,[z(w,{"label-width":`80px`},{default:R(()=>[z(u,{label:B(Q)(`@COND:优先级`)},{default:R(()=>[z(E,{modelValue:e.priority,"onUpdate:modelValue":t=>e.priority=t,min:0,max:9999,size:`small`},null,8,[`modelValue`,`onUpdate:modelValue`])]),_:2},1032,[`label`]),z(u,{label:B(Q)(`@COND:规则组合`)},{default:R(()=>[z(F,{modelValue:e.combine,"onUpdate:modelValue":t=>e.combine=t,size:`small`},{default:R(()=>[z(j,{value:`all`},{default:R(()=>[Z(q(B(Q)(`@COND:且(ALL)`)),1)]),_:1}),z(j,{value:`any`},{default:R(()=>[Z(q(B(Q)(`@COND:或(ANY)`)),1)]),_:1})]),_:2},1032,[`modelValue`,`onUpdate:modelValue`])]),_:2},1032,[`label`])]),_:2},1024)]),e.handleId!==`default`&&!e.isDefault?(G(),Y(`div`,av,[W(`div`,ov,[W(`span`,null,q(B(Q)(`@COND:规则`)),1),z(T,{class:`icon-btn`,type:`primary`,plain:``,circle:``,icon:B(pe),title:B(Q)(`@COND:添加规则`),onClick:t=>k(e.id)},null,8,[`icon`,`title`,`onClick`])]),(G(!0),Y(H,null,L(e.rules,(t,n)=>(G(),Y(`div`,{key:n,class:`rule-row`},[W(`div`,sv,[W(`div`,cv,q(B(Q)(`@COND:左值(引用输出)`)),1),z(he,{modelValue:t.left.nodeId,"onUpdate:modelValue":e=>t.left.nodeId=e,filterable:``,clearable:``,size:`small`,style:{width:`100%`},placeholder:B(Q)(`@NODECFG:引用节点`)},{default:R(()=>[(G(!0),Y(H,null,L(de.value,e=>(G(),U(I,{key:e.id,label:me(e),value:e.id},null,8,[`label`,`value`]))),128))]),_:2},1032,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),z(he,{modelValue:t.left.outputKey,"onUpdate:modelValue":e=>t.left.outputKey=e,filterable:``,size:`small`,style:{width:`100%`,"margin-top":`6px`},placeholder:B(Q)(`@NODECFG:输出`)},{default:R(()=>[(G(!0),Y(H,null,L(fe(de.value.find(e=>e.id===t.left.nodeId)),e=>(G(),U(I,{key:e.key,label:e.label,value:e.key},null,8,[`label`,`value`]))),128))]),_:2},1032,[`modelValue`,`onUpdate:modelValue`,`placeholder`])]),W(`div`,lv,[W(`div`,uv,q(B(Q)(`@COND:操作符`)),1),z(he,{modelValue:t.op,"onUpdate:modelValue":e=>t.op=e,size:`small`,style:{width:`100%`}},{default:R(()=>[z(I,{label:`==`,value:`==`}),z(I,{label:`!=`,value:`!=`}),z(I,{label:`>`,value:`>`}),z(I,{label:`>=`,value:`>=`}),z(I,{label:`<`,value:`<`}),z(I,{label:`<=`,value:`<=`}),z(I,{label:`contains`,value:`contains`}),z(I,{label:`not_contains`,value:`not_contains`}),z(I,{label:`isEmpty`,value:`isEmpty`}),z(I,{label:`isNotEmpty`,value:`isNotEmpty`})]),_:2},1032,[`modelValue`,`onUpdate:modelValue`])]),W(`div`,dv,[W(`div`,fv,q(B(Q)(`@COND:右值`)),1),z(s,{modelValue:t.right,"onUpdate:modelValue":e=>t.right=e,size:`small`,disabled:t.op===`isEmpty`||t.op===`isNotEmpty`},null,8,[`modelValue`,`onUpdate:modelValue`,`disabled`])]),W(`div`,pv,[z(T,{class:`icon-btn`,type:`danger`,plain:``,circle:``,icon:B(pt),title:B(Q)(`@COND:删除规则`),onClick:t=>te(e.id,n)},null,8,[`icon`,`title`,`onClick`])])]))),128))])):(G(),Y(`div`,mv,q(B(Q)(`@COND:默认分支`))+`:不配置规则,未命中其它分支时走这里 `,1))]),e.handleId===`default`||e.isDefault?V(``,!0):(G(),Y(`div`,hv,[z(T,{class:`icon-btn`,type:`danger`,plain:``,circle:``,icon:B(zt),title:B(Q)(`@COND:删除分支`),onClick:t=>O(e.id)},null,8,[`icon`,`title`,`onClick`])]))]))),128))]))])])):V(``,!0),e.node?.type===`command`?(G(),Y(`div`,gv,[W(`div`,_v,[z(o,null,{default:R(()=>[z(B(c))]),_:1}),Z(` `+q(B(Q)(`@NODECFG:执行方式`)),1)]),z(w,{"label-width":`120px`},{default:R(()=>[z(u,{label:B(Q)(`@NODECFG:执行方式`)},{default:R(()=>[z(F,{modelValue:v.value.useTerminal,"onUpdate:modelValue":n[4]||=e=>v.value.useTerminal=e},{default:R(()=>[z(j,{value:!1},{default:R(()=>[Z(q(B(Q)(`@NODECFG:普通执行`)),1)]),_:1}),z(j,{value:!0},{default:R(()=>[Z(q(B(Q)(`@NODECFG:终端执行`)),1)]),_:1})]),_:1},8,[`modelValue`])]),_:1},8,[`label`]),v.value.useTerminal?(G(),U(u,{key:0,label:B(Q)(`@NODECFG:终端选项`)},{default:R(()=>[z(ge,{modelValue:v.value.restartExistingTerminal,"onUpdate:modelValue":n[5]||=e=>v.value.restartExistingTerminal=e},{default:R(()=>[Z(q(B(Q)(`@NODECFG:重启现存终端命令`)),1)]),_:1},8,[`modelValue`])]),_:1},8,[`label`])):V(``,!0)]),_:1})])):V(``,!0),e.node?.type===`command`&&v.value.commandId&&v.value.inputs?(G(),Y(`div`,vv,[W(`div`,yv,[z(o,null,{default:R(()=>[z(B(Se))]),_:1}),Z(` `+q(B(Q)(`@NODECFG:输入配置`)),1)]),z(y_,{modelValue:v.value.inputs,"onUpdate:modelValue":n[6]||=e=>v.value.inputs=e,"param-names":ue.value,"disable-param-name-edit":!0,"predecessor-nodes":de.value},null,8,[`modelValue`,`param-names`,`predecessor-nodes`])])):V(``,!0),e.node?.type===`code`?(G(),Y(`div`,bv,[W(`div`,xv,[z(o,null,{default:R(()=>[z(B(Se))]),_:1}),Z(` `+q(B(Q)(`@NODECFG:输入配置`))+` `,1),z(T,{type:`primary`,plain:``,icon:B(pe),style:{"margin-left":`auto`},onClick:n[7]||=e=>p.value?.addRow()},null,8,[`icon`])]),z(A_,{ref_key:`codeInputRef`,ref:p,"model-value":v.value.codeInputs||[],"onUpdate:modelValue":n[8]||=e=>v.value.codeInputs=e,"predecessor-nodes":de.value,title:void 0,addable:!1},null,8,[`model-value`,`predecessor-nodes`])])):V(``,!0),e.node?.type===`user_input`?(G(),Y(`div`,Sv,[W(`div`,Cv,[z(o,null,{default:R(()=>[z(B(Se))]),_:1}),Z(` `+q(B(Q)(`@NODECFG:输入配置`))+` `,1),z(T,{type:`primary`,plain:``,icon:B(pe),style:{"margin-left":`auto`},onClick:n[9]||=e=>g.value?.addRow()},null,8,[`icon`])]),z(H_,{ref_key:`userInputRef`,ref:g,"model-value":v.value.userInputParams||[],"onUpdate:modelValue":n[10]||=e=>v.value.userInputParams=e,"predecessor-nodes":de.value,title:void 0,addable:!1},null,8,[`model-value`,`predecessor-nodes`])])):V(``,!0),e.node?.type===`user_input`?(G(),Y(`div`,wv,[W(`div`,Tv,[z(o,null,{default:R(()=>[z(B(Se))]),_:1}),Z(` `+q(B(Q)(`@NODECFG:输出配置`)),1)]),z(s_,{"model-value":y.value,title:void 0,addable:!1,removable:!1},{empty:R(()=>[Z(q(B(Q)(`@NODECFG:暂无输出参数`)||``),1)]),row:R(({item:e})=>[W(`div`,Ev,[W(`div`,Dv,[W(`label`,Ov,q(B(Q)(`@NODECFG:参数名`)),1),z(s,{"model-value":e.key,disabled:``},null,8,[`model-value`])])])]),_:1},8,[`model-value`])])):V(``,!0),e.node?.type===`command`?(G(),Y(`div`,kv,[W(`div`,Av,[z(o,null,{default:R(()=>[z(on,{"icon-class":`custom-cmd`})]),_:1}),Z(` `+q(B(Q)(`@NODECFG:命令配置`))+` `,1),z(T,{type:`primary`,plain:``,size:`small`,style:{"margin-left":`auto`},onClick:l},{default:R(()=>[Z(q(B(Q)(`@NODECFG:管理命令`)),1)]),_:1})]),z(w,{"label-width":`100px`},{default:R(()=>[z(u,{label:B(Q)(`@NODECFG:选择命令`),required:``},{default:R(()=>[ce.value.length===0?(G(),Y(`div`,jv,q(B(Q)(`@NODECFG:暂无可用命令请先创建命令`)),1)):(G(),Y(`div`,Mv,[(G(!0),Y(H,null,L(ce.value,e=>(G(),Y(`div`,{key:e.id,class:x([`command-item`,{selected:v.value.commandId===e.id}]),onClick:t=>ve(e)},[W(`div`,Pv,[W(`div`,Fv,[W(`span`,Iv,q(e.name),1),e.description?(G(),Y(`span`,Lv,q(e.description),1)):V(``,!0)]),W(`code`,Rv,q(e.command),1),W(`div`,zv,[z(o,null,{default:R(()=>[z(B(qe))]),_:1}),W(`span`,null,q(e.directory?e.directory.replace(/\\/g,`/`):B(Q)(`@NODECFG:当前目录`)),1)])]),v.value.commandId===e.id?(G(),U(o,{key:0,class:`check-icon`},{default:R(()=>[z(B(c))]),_:1})):V(``,!0)],10,Nv))),128))]))]),_:1},8,[`label`])]),_:1})])):V(``,!0),e.node?.type===`wait`?(G(),Y(`div`,Bv,[W(`div`,Vv,[z(o,null,{default:R(()=>[z(B(wt))]),_:1}),Z(` `+q(B(Q)(`@NODECFG:等待配置`)),1)]),z(w,{"label-width":`100px`},{default:R(()=>[z(u,{label:B(Q)(`@NODECFG:等待时间`),required:``},{default:R(()=>[z(E,{modelValue:v.value.waitSeconds,"onUpdate:modelValue":n[11]||=e=>v.value.waitSeconds=e,min:1,max:3600,step:1},null,8,[`modelValue`]),W(`span`,Hv,q(B(Q)(`@NODECFG:秒`)),1)]),_:1},8,[`label`])]),_:1})])):V(``,!0),e.node?.type===`code`?(G(),Y(`div`,Uv,[W(`div`,Wv,[z(o,null,{default:R(()=>[z(B(it))]),_:1}),Z(` `+q(B(Q)(`@NODECFG:代码配置`)),1)]),W(`div`,Gv,[W(`div`,Kv,[W(`span`,null,q(B(Q)(`@NODECFG:代码`)),1)]),z(s,{modelValue:v.value.codeScript,"onUpdate:modelValue":n[12]||=e=>v.value.codeScript=e,type:`textarea`,rows:10,placeholder:xy},null,8,[`modelValue`]),W(`div`,qv,[W(`div`,Jv,q(B(Q)(`@NODECFG:示例代码`)),1),W(`div`,Yv,[(G(),Y(H,null,L(r,e=>z(T,{key:e.key,type:`primary`,plain:``,onClick:t=>a(e.script)},{default:R(()=>[Z(q(e.title),1)]),_:2},1032,[`onClick`])),64))])])])])):V(``,!0),e.node?.type===`version`?(G(),Y(`div`,Xv,[W(`div`,Zv,[z(o,null,{default:R(()=>[z(B(it))]),_:1}),Z(` `+q(B(Q)(`@NODECFG:版本配置`)),1)]),z(w,{"label-width":`120px`},{default:R(()=>[z(u,{label:B(Q)(`@NODECFG:package.json`)},{default:R(()=>[z(Qg,{modelValue:v.value.packageJsonPath,"onUpdate:modelValue":n[13]||=e=>v.value.packageJsonPath=e,placeholder:B(Q)(`@NODECFG:留空则使用当前目录的package.json`),clearable:``,onChange:_e},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),z(u,{label:B(Q)(`@NODECFG:修改目标`),required:``},{default:R(()=>[z(F,{modelValue:v.value.versionTarget,"onUpdate:modelValue":n[14]||=e=>v.value.versionTarget=e},{default:R(()=>[z(j,{value:`version`},{default:R(()=>[Z(q(B(Q)(`@NODECFG:version字段`)),1)]),_:1}),z(j,{value:`dependency`},{default:R(()=>[Z(q(B(Q)(`@NODECFG:dependencies中的依赖`)),1)]),_:1})]),_:1},8,[`modelValue`])]),_:1},8,[`label`]),v.value.versionTarget===`version`?(G(),Y(H,{key:0},[z(u,{label:B(Q)(`@NODECFG:版本号来源`),required:``},{default:R(()=>[z(F,{modelValue:v.value.versionSource,"onUpdate:modelValue":n[15]||=e=>v.value.versionSource=e,onChange:n[16]||=e=>{e===`bump`?ne():e===`manual`?N({source:`manual`,manualValue:M(v.value.versionInputs)?.manualValue??``}):e===`reference`?N({source:`reference`,ref:M(v.value.versionInputs)?.ref||{nodeId:``,outputKey:`stdout`}}):e===`input`&&S()}},{default:R(()=>[z(j,{value:`bump`},{default:R(()=>[Z(q(B(Q)(`@NODECFG:自动递增`)),1)]),_:1}),z(j,{value:`manual`},{default:R(()=>[Z(q(B(Q)(`@NODECFG:手动输入`)),1)]),_:1}),z(j,{value:`reference`,disabled:de.value.length===0},{default:R(()=>[Z(q(B(Q)(`@NODECFG:引用输出`))+` `,1),de.value.length===0?(G(),U(ye,{key:0,content:B(Q)(`@NODECFG:无可用的前置命令节点`),placement:`top`},{default:R(()=>[z(o,{style:{"margin-left":`4px`}},{default:R(()=>[z(B(Se))]),_:1})]),_:1},8,[`content`])):V(``,!0)]),_:1},8,[`disabled`]),z(j,{value:`input`,disabled:b.value.length===0},{default:R(()=>[Z(q(B(Q)(`@NODECFG:引用输入`)),1)]),_:1},8,[`disabled`])]),_:1},8,[`modelValue`])]),_:1},8,[`label`]),v.value.versionSource===`bump`?(G(),U(u,{key:0,label:B(Q)(`@NODECFG:版本增量类型`),required:``},{default:R(()=>[z(F,{modelValue:v.value.versionBump,"onUpdate:modelValue":n[17]||=e=>v.value.versionBump=e},{default:R(()=>[z(j,{value:`patch`},{default:R(()=>[Z(q(B(Q)(`@NODECFG:补丁版本x.x.+1`)),1)]),_:1}),z(j,{value:`minor`},{default:R(()=>[Z(q(B(Q)(`@NODECFG:次版本x.+1.0`)),1)]),_:1}),z(j,{value:`major`},{default:R(()=>[Z(q(B(Q)(`@NODECFG:主版本+1.0.0`)),1)]),_:1})]),_:1},8,[`modelValue`])]),_:1},8,[`label`])):V(``,!0),v.value.versionSource===`manual`?(G(),U(u,{key:1,label:B(Q)(`@NODECFG:版本号`),required:``},{default:R(()=>[z(s,{"model-value":M(v.value.versionInputs)?.manualValue,placeholder:B(Q)(`@NODECFG:例如1.2.3`),"onUpdate:modelValue":n[18]||=e=>N({source:`manual`,manualValue:e})},null,8,[`model-value`,`placeholder`])]),_:1},8,[`label`])):V(``,!0),v.value.versionSource===`reference`?(G(),Y(H,{key:2},[z(u,{label:B(Q)(`@NODECFG:引用节点`),required:``},{default:R(()=>[z(xe,{"model-value":re(M(v.value.versionInputs)),data:de.value.map(e=>({value:e.id,label:me(e),children:fe(e).map(t=>({value:`${e.id}::${t.key}`,label:t.label}))})),placeholder:B(Q)(`@NODECFG:选择要引用的前置节点`),clearable:``,filterable:``,"check-strictly":``,"render-after-expand":!1,"onUpdate:modelValue":n[19]||=e=>ie(e)},null,8,[`model-value`,`data`,`placeholder`])]),_:1},8,[`label`]),z(u,{label:B(Q)(`@NODECFG:提取版本号`)},{default:R(()=>[z(ee,{modelValue:v.value.extractVersionFromRefOutput,"onUpdate:modelValue":n[20]||=e=>v.value.extractVersionFromRefOutput=e},null,8,[`modelValue`])]),_:1},8,[`label`]),W(`div`,Qv,[z(o,null,{default:R(()=>[z(B(Se))]),_:1}),W(`span`,null,q(B(Q)(`@NODECFG:版本号将使用所选节点的输出结果`)),1)])],64)):V(``,!0),v.value.versionSource===`input`?(G(),Y(H,{key:3},[z(u,{label:B(Q)(`@NODECFG:引用输入`),required:``},{default:R(()=>[z(he,{modelValue:v.value.versionInputKey,"onUpdate:modelValue":n[21]||=e=>v.value.versionInputKey=e,filterable:``,clearable:``,style:{width:`100%`},placeholder:B(Q)(`@NODECFG:选择要引用的输入字段`),onChange:S},{default:R(()=>[(G(!0),Y(H,null,L(b.value,e=>(G(),U(I,{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),W(`div`,$v,[z(o,null,{default:R(()=>[z(B(Se))]),_:1}),W(`span`,null,q(B(Q)(`@NODECFG:版本号将使用本节点输入参数的值`)),1)])],64)):V(``,!0)],64)):V(``,!0),v.value.versionTarget===`dependency`?(G(),Y(H,{key:1},[z(u,{label:B(Q)(`@NODECFG:依赖类型`),required:``},{default:R(()=>[z(F,{modelValue:v.value.dependencyType,"onUpdate:modelValue":n[22]||=e=>v.value.dependencyType=e},{default:R(()=>[z(j,{value:`dependencies`},{default:R(()=>n[36]||=[Z(`dependencies`)]),_:1}),z(j,{value:`devDependencies`},{default:R(()=>n[37]||=[Z(`devDependencies`)]),_:1}),z(j,{value:`peerDependencies`},{default:R(()=>n[38]||=[Z(`peerDependencies`)]),_:1})]),_:1},8,[`modelValue`])]),_:1},8,[`label`]),z(u,{label:B(Q)(`@NODECFG:依赖包名称`),required:``},{default:R(()=>[z(he,{modelValue:v.value.dependencyName,"onUpdate:modelValue":n[23]||=e=>v.value.dependencyName=e,placeholder:B(Q)(`@NODECFG:请先选择package.json`),clearable:``,filterable:``,"allow-create":``,style:{width:`100%`}},{default:R(()=>[(G(!0),Y(H,null,L(se.value,e=>(G(),U(I,{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),z(u,{label:B(Q)(`@NODECFG:版本号来源`),required:``},{default:R(()=>[z(F,{modelValue:v.value.versionSource,"onUpdate:modelValue":n[24]||=e=>v.value.versionSource=e,onChange:n[25]||=e=>{e===`input`&&C()}},{default:R(()=>[z(j,{value:`bump`},{default:R(()=>[Z(q(B(Q)(`@NODECFG:自动递增`)),1)]),_:1}),z(j,{value:`manual`},{default:R(()=>[Z(q(B(Q)(`@NODECFG:手动输入`)),1)]),_:1}),z(j,{value:`reference`,disabled:de.value.length===0},{default:R(()=>[Z(q(B(Q)(`@NODECFG:引用输出`))+` `,1),de.value.length===0?(G(),U(ye,{key:0,content:B(Q)(`@NODECFG:无可用的前置命令节点`),placement:`top`},{default:R(()=>[z(o,{style:{"margin-left":`4px`}},{default:R(()=>[z(B(Se))]),_:1})]),_:1},8,[`content`])):V(``,!0)]),_:1},8,[`disabled`]),z(j,{value:`input`,disabled:b.value.length===0},{default:R(()=>[Z(q(B(Q)(`@NODECFG:引用输入`)),1)]),_:1},8,[`disabled`])]),_:1},8,[`modelValue`])]),_:1},8,[`label`]),v.value.versionSource===`bump`?(G(),U(u,{key:0,label:B(Q)(`@NODECFG:递增类型`),required:``},{default:R(()=>[z(F,{modelValue:v.value.dependencyVersionBump,"onUpdate:modelValue":n[26]||=e=>v.value.dependencyVersionBump=e},{default:R(()=>[z(j,{value:`patch`},{default:R(()=>[Z(q(B(Q)(`@NODECFG:补丁版本`)),1)]),_:1}),z(j,{value:`minor`},{default:R(()=>[Z(q(B(Q)(`@NODECFG:次版本`)),1)]),_:1}),z(j,{value:`major`},{default:R(()=>[Z(q(B(Q)(`@NODECFG:主版本`)),1)]),_:1})]),_:1},8,[`modelValue`])]),_:1},8,[`label`])):V(``,!0),v.value.versionSource===`manual`?(G(),U(u,{key:1,label:B(Q)(`@NODECFG:版本号`),required:``},{default:R(()=>[z(s,{modelValue:v.value.dependencyVersion,"onUpdate:modelValue":n[27]||=e=>v.value.dependencyVersion=e,placeholder:B(Q)(`@NODECFG:例如1.2.3`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])):V(``,!0),v.value.versionSource===`reference`?(G(),Y(H,{key:2},[z(u,{label:B(Q)(`@NODECFG:引用节点`),required:``},{default:R(()=>[z(he,{modelValue:v.value.inputRef,"onUpdate:modelValue":n[28]||=e=>v.value.inputRef=e,"value-key":`nodeId`,placeholder:B(Q)(`@NODECFG:选择要引用的前置节点`),style:{width:`100%`}},{default:R(()=>[(G(!0),Y(H,null,L(de.value,e=>(G(),U(I,{key:e.id,label:me(e),value:{nodeId:e.id,outputKey:`stdout`}},{default:R(()=>[W(`div`,ey,[W(`span`,ty,q(me(e)),1),W(`span`,ny,q(B(Q)(`@NODECFG:ID`))+`: `+q(e.id.substring(0,15))+`...`,1)])]),_:2},1032,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),v.value.inputRef?(G(),U(u,{key:0,label:B(Q)(`@NODECFG:输出字段`),required:``},{default:R(()=>[z(he,{modelValue:v.value.inputRef.outputKey,"onUpdate:modelValue":n[29]||=e=>v.value.inputRef.outputKey=e,placeholder:B(Q)(`@NODECFG:选择要引用的输出字段`),style:{width:`100%`}},{default:R(()=>[(G(!0),Y(H,null,L(fe(de.value.find(e=>e.id===v.value.inputRef?.nodeId)),e=>(G(),U(I,{key:e.key,label:e.label,value:e.key},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])):V(``,!0),v.value.inputRef?(G(),U(u,{key:1,label:B(Q)(`@NODECFG:提取版本号`)},{default:R(()=>[z(ee,{modelValue:v.value.extractVersionFromRefOutput,"onUpdate:modelValue":n[30]||=e=>v.value.extractVersionFromRefOutput=e},null,8,[`modelValue`])]),_:1},8,[`label`])):V(``,!0),W(`div`,ry,[z(o,null,{default:R(()=>[z(B(Se))]),_:1}),W(`span`,null,q(B(Q)(`@NODECFG:版本号将使用所选节点的输出结果`)),1)])],64)):V(``,!0),v.value.versionSource===`input`?(G(),Y(H,{key:3},[z(u,{label:B(Q)(`@NODECFG:引用输入`),required:``},{default:R(()=>[z(he,{modelValue:v.value.dependencyVersionInputKey,"onUpdate:modelValue":n[31]||=e=>v.value.dependencyVersionInputKey=e,filterable:``,clearable:``,style:{width:`100%`},placeholder:B(Q)(`@NODECFG:选择要引用的输入字段`),onChange:C},{default:R(()=>[(G(!0),Y(H,null,L(b.value,e=>(G(),U(I,{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),W(`div`,iy,[z(o,null,{default:R(()=>[z(B(Se))]),_:1}),W(`span`,null,q(B(Q)(`@NODECFG:版本号将使用本节点输入参数的值`)),1)])],64)):V(``,!0)],64)):V(``,!0)]),_:1})])):V(``,!0),e.node?.type===`code`?(G(),Y(`div`,ay,[W(`div`,oy,[z(o,null,{default:R(()=>[z(B(Se))]),_:1}),Z(` `+q(B(Q)(`@NODECFG:输出`))+` `,1),z(T,{type:`primary`,plain:``,icon:B(pe),style:{"margin-left":`auto`},onClick:oe},null,8,[`icon`])]),z(s_,{"model-value":v.value.codeOutputParams||[],title:void 0,addable:!1,removable:!0,"min-items":0,"create-item":ae,"onUpdate:modelValue":n[32]||=e=>v.value.codeOutputParams=e},{empty:R(()=>[Z(q(B(Q)(`@NODECFG:暂无输出参数`)||``),1)]),row:R(({item:e})=>[W(`div`,sy,[W(`div`,cy,[W(`label`,ly,q(B(Q)(`@NODECFG:参数名`)),1),z(s,{modelValue:e.key,"onUpdate:modelValue":t=>e.key=t,placeholder:B(Q)(`@NODECFG:参数名`)},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`])]),W(`div`,uy,[W(`label`,dy,q(B(Q)(`@NODECFG:参数类型`)),1),z(he,{modelValue:e.type,"onUpdate:modelValue":t=>e.type=t,style:{width:`180px`}},{default:R(()=>[z(I,{label:`String`,value:`String`}),z(I,{label:`Number`,value:`Number`}),z(I,{label:`Boolean`,value:`Boolean`}),z(I,{label:`JSON`,value:`JSON`})]),_:2},1032,[`modelValue`,`onUpdate:modelValue`])])])]),_:1},8,[`model-value`])])):V(``,!0),e.node?.type===`command`?(G(),Y(`div`,fy,[W(`div`,py,[z(o,null,{default:R(()=>[z(B(Se))]),_:1}),Z(` `+q(B(Q)(`@NODECFG:输出配置`)),1)]),z(s_,{"model-value":v.value.commandOutputParams||[],title:void 0,addable:!1,removable:!1,"onUpdate:modelValue":n[33]||=e=>v.value.commandOutputParams=e},{empty:R(()=>[Z(q(B(Q)(`@NODECFG:暂无输出参数`)||``),1)]),row:R(({item:e})=>[W(`div`,my,[W(`div`,hy,[W(`label`,gy,q(B(Q)(`@NODECFG:参数名`)),1),z(s,{modelValue:e.key,"onUpdate:modelValue":t=>e.key=t,disabled:``},null,8,[`modelValue`,`onUpdate:modelValue`])]),W(`div`,_y,[W(`label`,vy,q(B(Q)(`@NODECFG:参数描述`)),1),z(s,{modelValue:e.desc,"onUpdate:modelValue":t=>e.desc=t,placeholder:B(Q)(`@NODECFG:参数描述`)},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`])])])]),_:1},8,[`model-value`])])):V(``,!0)])):V(``,!0)]),_:1},8,[`modelValue`,`title`])}}}),[[`__scopeId`,`data-v-98727514`]]),Cy={class:`flow-workspace-container`},wy={class:`left-sidebar`},Ty={class:`sidebar-header`},Ey={class:`orchestration-list`},Dy=[`onClick`],Oy={class:`item-content`},ky={key:0,class:`description`},Ay={class:`item-actions`},jy={class:`flow-canvas`},My={class:`canvas-header`},Ny={class:`flow-header-info`},Py={class:`header-actions`},Fy={class:`right-sidebar`},Iy={class:`sidebar-header`},Ly={class:`node-toolbox`},Ry={class:`tool-label`},zy={class:`tool-desc`},By={class:`tool-label`},Vy={class:`tool-desc`},Hy={class:`tool-label`},Uy={class:`tool-desc`},Wy={class:`tool-label`},Gy={class:`tool-desc`},Ky={class:`tool-label`},qy={class:`tool-desc`},Jy={class:`tool-label`},Yy={class:`tool-desc`},Xy={class:`tool-label`},Zy={class:`tool-desc`},Qy=$(X({__name:`FlowOrchestrationWorkspace`,props:{visible:{type:Boolean}},emits:[`update:visible`,`execute-flow`,`open-command-manager`],setup(e,{emit:n}){let i=Symbol(`FLOW_NODE_ACTIONS`);function a(e){switch(e){case`command`:return`📋`;case`wait`:return`⏰`;case`version`:return`📦`;case`confirm`:return`✋`;case`code`:return`🧩`;case`start`:return`🚀`;case`condition`:return`🔀`;case`user_input`:return`⌨️`;default:return``}}function s(e){return X({name:`FlowWrappedNode`,props:{id:{type:String,required:!0},data:{type:Object,required:!0}},setup(t){let n=g(i,null),r=K(()=>{let e=t.data?.config,n=[...Array.isArray(e?.conditionBranches)?e.conditionBranches:[]].sort((e,t)=>{let n=e?.handleId===`default`||e?.isDefault,r=t?.handleId===`default`||t?.isDefault;return n&&!r?1:!n&&r?-1:Number(e?.priority??0)-Number(t?.priority??0)}).map(e=>String(e?.handleId||``).trim()).filter(e=>!!e);return n.includes(`default`)||n.push(`default`),n.length?n:[`default`]});return()=>xe(Wg,{nodeId:t.id,onExecuteFromNode:e=>n?.executeFromNode(e),onExecuteSingleNode:e=>n?.executeSingleNode(e)},{default:()=>xe($h,{id:t.id,nodeId:t.id,nodeType:t.data?.type,title:t.data?.label,icon:a(t.data?.type),enabled:t.data?.enabled??!0,selected:t.data?.selected??!1,sourceHandleIds:t.data?.type===`condition`?r.value:void 0,onDelete:e=>n?.deleteNode(e)},{default:()=>xe(e,{data:t.data,id:t.id})})})}})}let l={start:o(X({name:`FlowStartNodeRenderer`,props:{id:{type:String,required:!0},data:{type:Object,required:!0}},setup(e){return()=>xe($h,{id:e.id,nodeId:e.id,nodeType:`start`,title:Q(`@FLOWNODE:开始`),icon:a(`start`),enabled:e.data?.enabled,selected:e.data?.selected,deletable:!1},{})}})),command:o(s(sg)),wait:o(s(dg)),version:o(s(vg)),confirm:o(s(xg)),code:o(s(Og)),condition:o(s(Pg)),user_input:o(s(Ug))},u=e,d=n,{t:m}=Ye(),h=hn(),_=K({get:()=>u.visible,set:e=>d(`update:visible`,e)}),{onConnect:v,addEdges:y,getViewport:b,setViewport:S,onNodeDragStart:C,onNodeDragStop:T,getSelectedEdges:E,updateNodeInternals:D}=Pe(),O=w([]),k=w([]),te=w(``),A=w(``),N=w(null),P=w(!1),ne=w(null),F=null,re=K(()=>h.orchestrations||[]),ie=w(null),oe=1;function se(e){return`${e}-${Date.now()}-${oe++}`}function ce(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function le(e){let t=String(e||``).trim()||m(`@ORCH:未命名`),n=new Set((Array.isArray(re.value)?re.value:[]).map(e=>String(e?.name||``).trim())),r=`${t}(复制)`;if(!n.has(r))return r;let i=2;for(;i<1e3;){let e=`${t}(复制${i})`;if(!n.has(e))return e;i+=1}return`${t}(复制${Date.now()})`}async function ue(e){try{let t={name:le(e?.name),description:e?.description||``,flowData:e?.flowData?JSON.parse(JSON.stringify(e.flowData)):null},n=await h.saveOrchestration(t);n&&typeof n==`object`&&`id`in n&&(ie.value=n.id,N.value=n.id,ze(n),J.success(m(`@ORCH:已复制`)))}catch(e){J.error(`${m(`@ORCH:错误`)}: ${e?.message||e}`)}}function de(){return O.value.filter(e=>e.type!==`start`&&e.data?.config)}function fe(e){return e===`version`?{w:250,h:120}:e===`wait`||e===`confirm`||e===`user_input`?{w:200,h:120}:e===`condition`?{w:260,h:160}:{w:220,h:120}}function me(e){let t=b(),n=document.querySelector(`.vue-flow-container`)?.getBoundingClientRect(),r=n?n.width/2:500,i=n?n.height/2:300,a=t.zoom||1,o=(r-t.x)/a,s=(i-t.y)/a,{w:c,h:l}=fe(e);return{x:o-c/2,y:s-l/2}}function he(e,t){let n=O.value.filter(t=>t.type===e).map(e=>String(e?.data?.label||``).trim()).filter(e=>!!e),r=String(t||``).trim();if(!r)return r;let i=RegExp(`^${ce(r)}(\\d+)?$`),a=-1;for(let e of n){let t=e.match(i);if(!t)continue;let n=t[1]?Number(t[1]):0;Number.isFinite(n)&&(a=Math.max(a,n))}return a<0?r:`${r}${a+1}`}function ge(e){return e.map(e=>({id:e.id,type:e.type,position:e.position,data:e.data}))}function _e(e){return e.map(e=>({id:e.id,source:e.source,target:e.target,sourceHandle:e.sourceHandle,targetHandle:e.targetHandle}))}async function ve(e){await p();let t=e&&e.length?e:O.value.map(e=>e.id);requestAnimationFrame(()=>{D(t)})}function ye(){N.value&&te.value.trim()&&(F&&clearTimeout(F),F=window.setTimeout(()=>{Fe()},1e3))}function be(){O.value=[{id:`start-node`,type:`start`,position:{x:50,y:200},data:{id:`start-node`,type:`start`,label:m(`@FLOWNODE:开始`),enabled:!0}}],k.value=[],oe=1}function Se(e){let t=se(e),n={command:m(`@FLOWNODE:命令节点`),wait:m(`@FLOWNODE:等待节点`),version:m(`@FLOWNODE:版本管理`),confirm:m(`@FLOWNODE:用户确认`),code:m(`@FLOWNODE:代码节点`),condition:m(`@FLOWNODE:条件`),user_input:m(`@FLOWNODE:用户输入`)}[e],r=he(e,n),i=me(e),a={id:t,type:e,position:{x:i.x,y:i.y},data:{id:t,type:e,label:r,enabled:!0,config:e===`confirm`?{id:t,type:`confirm`}:e===`condition`?{id:t,type:`condition`,conditionBranches:[{id:`branch-${Date.now()}`,name:Q(`@COND:默认分支`),handleId:`default`,priority:999,combine:`all`,rules:[],isDefault:!0}]}:e===`user_input`?{id:t,type:`user_input`,userInputParams:[]}:void 0}};O.value.push(a),O.value.forEach(e=>{e.data&&(e.data.selected=!1)}),a.data&&(a.data.selected=!0),ne.value=a,P.value=!1,J.success(`${m(`@FLOWNODE:已添加`)}${a.data.label}`),ye()}v(e=>{y([e]),ye()}),C(e=>{O.value.forEach(e=>{e.data&&(e.data.selected=!1)});let t=O.value.find(t=>t.id===e.node.id);t&&t.data&&(t.data.selected=!0)}),T(()=>{ye()});function Ce(e){O.value.forEach(e=>{e.data&&(e.data.selected=!1)});let t=O.value.find(t=>t.id===e.node.id);t&&(t.data.selected=!0,t.type!==`start`&&(ne.value=t,P.value=!0)),ve([e.node.id])}function we(){O.value.forEach(e=>{e.data&&(e.data.selected=!1)}),ve()}function Ee(e,t){let n=O.value.find(t=>t.id===e);n&&(n.data.config=t,n.data.label=De(t),ye())}function De(e){return e.displayName&&String(e.displayName).trim()?String(e.displayName).trim():e.type===`command`?e.commandName||m(`@FLOWNODE:未知命令`):e.type===`wait`?m(`@FLOWNODE:等待 {seconds} 秒`,{seconds:e.waitSeconds}):e.type===`version`?e.versionTarget===`dependency`?m(`@FLOWNODE:修改依赖: {name}`,{name:e.dependencyName}):m(`@FLOWNODE:版本号 +1 ({bump})`,{bump:e.versionBump}):e.type===`confirm`?m(`@FLOWNODE:用户确认`):e.type===`user_input`?m(`@FLOWNODE:用户输入`):e.type===`code`?m(`@FLOWNODE:代码节点`):m(`@FLOWNODE:未配置`)}function Oe(e){if(console.log(`nodeId ==>`,e),e===`start-node`){J.warning(m(`@FLOWNODE:不能删除起始节点`));return}console.log(`nodes ==>`,O),O.value=O.value.filter(t=>t.id!==e),k.value=k.value.filter(t=>t.source!==e&&t.target!==e),ne.value?.id===e&&(ne.value=null,P.value=!1),J.success(m(`@FLOWNODE:节点已删除`)),ye()}function ke(e){for(let t of e)t.type===`remove`&&(k.value=k.value.filter(e=>e.id!==t.id));ye()}function Ae(e){if(e.key===`Delete`||e.key===`Backspace`){let t=E.value;if(t&&t.length>0){let n=t.map(e=>e.id);k.value=k.value.filter(e=>!n.includes(e.id)),ye(),e.preventDefault()}}}function je(){gt.confirm(`确定要清空整个流程吗?`,`确认清空`,{confirmButtonText:`清空`,cancelButtonText:`取消`,type:`warning`}).then(()=>{be(),J.success(`流程已清空`),ye()}).catch(()=>{})}async function Ne(){if(O.value.length<=1){J.info(`节点太少,无需优化布局`);return}await ve(),await new Promise(e=>requestAnimationFrame(()=>e()));let e=new Wh.default.graphlib.Graph;e.setDefaultEdgeLabel(()=>({})),e.setGraph({rankdir:`LR`,nodesep:80,ranksep:80,marginx:50,marginy:50}),O.value.forEach(t=>{let n=220,r=100;t.type===`start`?(n=100,r=100):t.type===`wait`||t.type===`confirm`?(n=200,r=120):t.type===`version`&&(n=250,r=120);let i=document.querySelector(`.vue-flow__node[data-id="${t.id}"]`);if(i){let e=i.offsetWidth,t=i.offsetHeight;e>0&&t>0&&(n=e,r=t)}e.setNode(t.id,{width:n,height:r})}),k.value.forEach(t=>{e.setEdge(t.source,t.target)}),Wh.default.layout(e),O.value.forEach(t=>{let n=e.node(t.id);n&&(t.position={x:n.x-n.width/2,y:n.y-n.height/2})}),J.success(`布局优化完成(dagre)`),ye()}async function Fe(){if(!te.value.trim()){J.warning(`请输入编排名称`);return}let e=O.value.filter(e=>e.type!==`start`&&!e.data.config);if(e.length>0){let t=e.map(e=>e.data.label).join(`、`);J.warning(`以下节点还未配置:${t}。未配置的节点不会被保存。`)}if(de().length===0){J.warning(`请至少添加一个执行步骤`);return}let t=b(),n={name:te.value.trim(),description:A.value.trim(),flowData:{nodes:ge(O.value),edges:_e(k.value),viewport:{x:t.x,y:t.y,zoom:t.zoom}}};if(N.value)await h.updateOrchestration(N.value,n);else{let e=await h.saveOrchestration(n);J.success(`编排已保存`),e&&typeof e==`object`&&`id`in e&&(ie.value=e.id,N.value=e.id)}}function Ie(){if(de().length===0){J.warning(`请至少添加一个执行步骤`);return}_.value=!1;let e=b(),t=O.value.find(e=>e.type===`start`);d(`execute-flow`,{flowData:{nodes:JSON.parse(JSON.stringify(O.value)),edges:JSON.parse(JSON.stringify(k.value)),viewport:{x:e.x,y:e.y,zoom:e.zoom}},startNodeId:t?.id,isSingleExecution:!1,orchestrationMeta:{id:N.value||void 0,name:te.value||void 0}})}function Le(e){let t=O.value.find(t=>t.id===e);if(!t||t.type===`start`||!t.data.config){J.warning(`该节点无法执行`);return}_.value=!1;let n=b();d(`execute-flow`,{flowData:{nodes:JSON.parse(JSON.stringify(O.value)),edges:JSON.parse(JSON.stringify(k.value)),viewport:{x:n.x,y:n.y,zoom:n.zoom}},startNodeId:e,isSingleExecution:!1,orchestrationMeta:{id:N.value||void 0,name:te.value||void 0}})}function Re(e){let t=O.value.find(t=>t.id===e);if(!t||t.type===`start`||!t.data.config){J.warning(`该节点无法执行`);return}_.value=!1;let n=b();d(`execute-flow`,{flowData:{nodes:JSON.parse(JSON.stringify(O.value)),edges:JSON.parse(JSON.stringify(k.value)),viewport:{x:n.x,y:n.y,zoom:n.zoom}},startNodeId:e,isSingleExecution:!0,orchestrationMeta:{id:N.value||void 0,name:te.value||void 0}})}I(i,{deleteNode:Oe,executeFromNode:Le,executeSingleNode:Re});function ze(e){ie.value=e.id,N.value=e.id,te.value=e.name,A.value=e.description||``,e.flowData?(O.value=JSON.parse(JSON.stringify(e.flowData.nodes)),k.value=JSON.parse(JSON.stringify(e.flowData.edges)),ve(),e.flowData.viewport&&setTimeout(()=>{S(e.flowData.viewport)},100)):be()}function Be(){ie.value=null,N.value=null,te.value=``,A.value=``,be()}async function Ve(e){try{await gt.confirm(`确定要删除编排 "${e.name}" 吗?`,`确认删除`,{confirmButtonText:`删除`,cancelButtonText:`取消`,type:`warning`}),await h.deleteOrchestration(e.id),N.value===e.id&&Be()}catch(e){e!==`cancel`&&J.error(`删除编排失败: ${e.message||e}`)}}function He(e){if(_.value=!1,e?.flowData){let t=Array.isArray(e.flowData.nodes)?e.flowData.nodes.find(e=>e?.type===`start`):void 0;d(`execute-flow`,{flowData:e.flowData,startNodeId:t?.id,isSingleExecution:!1,orchestrationMeta:{id:e?.id,name:e?.name}});return}J.warning(`该编排缺少流程数据,无法执行`)}return mt(()=>{be(),window.addEventListener(`keydown`,Ae),ve()}),r(()=>{window.removeEventListener(`keydown`,Ae)}),(e,n)=>{let r=t,i=ae,a=Me;return G(),U(pa,{modelValue:_.value,"onUpdate:modelValue":n[13]||=e=>_.value=e,title:B(m)(`@ORCH:可视化编排工作台`),"close-on-click-modal":!1,"append-to-body":!0,size:`fullscreen`,type:`flex`,heightMode:`fixed`,"custom-class":`flow-orchestration-dialog`},{default:R(()=>[W(`div`,Cy,[W(`div`,wy,[W(`div`,Ty,[W(`h3`,null,q(B(m)(`@ORCH:已保存的编排`)),1),z(ln,{tooltip:B(m)(`@ORCH:新建编排`),size:`small`,"hover-color":`var(--color-primary)`,onClick:Be},{default:R(()=>[z(r,null,{default:R(()=>[z(B(pe))]),_:1})]),_:1},8,[`tooltip`])]),W(`div`,Ey,[re.value.length===0?(G(),U(i,{key:0,description:B(m)(`@ORCH:暂无编排`),"image-size":80},null,8,[`description`])):V(``,!0),(G(!0),Y(H,null,L(re.value,e=>(G(),Y(`div`,{key:e.id,class:x([`orchestration-item`,{active:ie.value===e.id}]),onClick:t=>ze(e)},[W(`div`,Oy,[W(`h4`,null,q(e.name),1),e.description?(G(),Y(`p`,ky,q(e.description),1)):V(``,!0),W(`div`,Ay,[z(ln,{tooltip:B(m)(`@ORCH:执行`),size:`small`,"hover-color":`var(--color-primary)`,onClick:Rt(t=>He(e),[`stop`])},{default:R(()=>[z(r,null,{default:R(()=>[z(B(j))]),_:1})]),_:2},1032,[`tooltip`,`onClick`]),z(ln,{tooltip:B(m)(`@ORCH:复制`),size:`small`,"hover-color":`var(--color-primary)`,onClick:Rt(t=>ue(e),[`stop`])},{default:R(()=>[z(r,null,{default:R(()=>[z(B(_t))]),_:1})]),_:2},1032,[`tooltip`,`onClick`]),z(ln,{tooltip:B(m)(`@ORCH:删除`),size:`small`,"hover-color":`var(--color-danger)`,onClick:Rt(t=>Ve(e),[`stop`])},{default:R(()=>[z(r,null,{default:R(()=>[z(B(zt))]),_:1})]),_:2},1032,[`tooltip`,`onClick`])])])],10,Dy))),128))])]),W(`div`,jy,[W(`div`,My,[W(`div`,Ny,[z(a,{modelValue:te.value,"onUpdate:modelValue":n[0]||=e=>te.value=e,placeholder:B(m)(`@ORCH:编排名称(必填)`),size:`large`,style:{width:`300px`,"margin-right":`10px`}},null,8,[`modelValue`,`placeholder`]),z(a,{modelValue:A.value,"onUpdate:modelValue":n[1]||=e=>A.value=e,placeholder:B(m)(`@ORCH:编排描述(选填)`),size:`large`,style:{width:`400px`}},null,8,[`modelValue`,`placeholder`])]),W(`div`,Py,[z(ln,{tooltip:B(m)(`@ORCH:保存编排`),size:`large`,"hover-color":`var(--color-success)`,onClick:Fe},{default:R(()=>[z(r,null,{default:R(()=>[z(B(c))]),_:1})]),_:1},8,[`tooltip`]),z(ln,{tooltip:`执行流程`,size:`large`,"hover-color":`var(--color-primary)`,onClick:Ie},{default:R(()=>[z(r,null,{default:R(()=>[z(B(j))]),_:1})]),_:1}),z(ln,{tooltip:`清空流程`,size:`large`,"hover-color":`var(--color-danger)`,onClick:je},{default:R(()=>[z(r,null,{default:R(()=>[z(B(zt))]),_:1})]),_:1})])]),z(B(M),{nodes:O.value,"onUpdate:nodes":n[2]||=e=>O.value=e,edges:k.value,"onUpdate:edges":n[3]||=e=>k.value=e,class:`vue-flow-container`,"default-zoom":1,"min-zoom":.2,"max-zoom":4,"node-types":l,onNodeClick:Ce,onPaneClick:we,onEdgesChange:ke},{default:R(()=>[z(B(ee),{"pattern-color":`#aaa`,gap:16}),z(B(Te),{showInteractive:!1},{default:R(()=>[W(`button`,{class:`vue-flow__controls-button`,onClick:Ne,title:`优化布局`},[z(r,null,{default:R(()=>[z(B(f))]),_:1})])]),_:1})]),_:1},8,[`nodes`,`edges`])]),W(`div`,Fy,[W(`div`,Iy,[W(`h3`,null,q(B(m)(`@ORCH:节点工具箱`)),1)]),W(`div`,Ly,[W(`div`,{class:`tool-item`,onClick:n[4]||=e=>Se(`command`)},[n[14]||=W(`div`,{class:`tool-icon command`},`📋`,-1),W(`div`,Ry,q(B(m)(`@ORCH:命令节点`)),1),W(`div`,zy,q(B(m)(`@ORCH:执行自定义命令`)),1)]),W(`div`,{class:`tool-item`,onClick:n[5]||=e=>Se(`wait`)},[n[15]||=W(`div`,{class:`tool-icon wait`},`⏰`,-1),W(`div`,By,q(B(m)(`@ORCH:等待节点`)),1),W(`div`,Vy,q(B(m)(`@ORCH:暂停指定时间`)),1)]),W(`div`,{class:`tool-item`,onClick:n[6]||=e=>Se(`version`)},[n[16]||=W(`div`,{class:`tool-icon version`},`📦`,-1),W(`div`,Hy,q(B(m)(`@ORCH:版本管理`)),1),W(`div`,Uy,q(B(m)(`@ORCH:修改版本号或依赖`)),1)]),W(`div`,{class:`tool-item`,onClick:n[7]||=e=>Se(`condition`)},[n[17]||=W(`div`,{class:`tool-icon condition`},`🔀`,-1),W(`div`,Wy,q(B(m)(`@FLOWNODE:条件`)),1),W(`div`,Gy,q(B(m)(`@ORCH:条件分支`)),1)]),W(`div`,{class:`tool-item`,onClick:n[8]||=e=>Se(`code`)},[n[18]||=W(`div`,{class:`tool-icon code`},`🧩`,-1),W(`div`,Ky,q(B(m)(`@FLOWNODE:代码节点`)),1),W(`div`,qy,q(B(m)(`@ORCH:执行自定义代码`)),1)]),W(`div`,{class:`tool-item`,onClick:n[9]||=e=>Se(`confirm`)},[n[19]||=W(`div`,{class:`tool-icon confirm`},`✋`,-1),W(`div`,Jy,q(B(m)(`@ORCH:用户确认`)),1),W(`div`,Yy,q(B(m)(`@ORCH:等待用户确认后继续`)),1)]),W(`div`,{class:`tool-item`,onClick:n[10]||=e=>Se(`user_input`)},[n[20]||=W(`div`,{class:`tool-icon confirm`},`⌨️`,-1),W(`div`,Xy,q(B(m)(`@FLOWNODE:用户输入`)),1),W(`div`,Zy,q(B(m)(`@UINPUT:执行到该节点暂停并等待输入`)),1)])])])]),z(Sy,{modelValue:P.value,"onUpdate:modelValue":n[11]||=e=>P.value=e,node:ne.value,"all-nodes":O.value,edges:k.value,onUpdateConfig:Ee,onOpenCommandManager:n[12]||=()=>d(`open-command-manager`)},null,8,[`modelValue`,`node`,`all-nodes`,`edges`])]),_:1},8,[`modelValue`,`title`])}}}),[[`__scopeId`,`data-v-50b9df25`]]),$y={class:`flow-exec-viewer`},eb=`flow-execution-viewer`,tb=$(X({__name:`FlowExecutionViewer`,props:{flowData:{type:Object,required:!0},currentNodeId:{type:String,default:void 0},executedNodeIds:{type:Array,default:()=>[]},failedNodeIds:{type:Array,default:()=>[]},executedEdgeIds:{type:Array,default:()=>[]}},setup(e){function t(e){switch(e){case`command`:return`📋`;case`wait`:return`⏰`;case`version`:return`📦`;case`confirm`:return`✋`;case`code`:return`🧩`;case`start`:return`🚀`;case`condition`:return`🔀`;case`user_input`:return`⌨️`;default:return``}}let n=X({name:`FlowExecStartNodeRenderer`,props:{id:{type:String,required:!0},data:{type:Object,required:!0}},setup(e){return()=>xe($h,{id:e.id,nodeId:e.id,nodeType:`start`,title:Q(`@FLOWNODE:开始`),icon:t(`start`),enabled:e.data?.enabled,selected:e.data?.selected,execStatus:e.data?.execStatus,deletable:!1},{})}});function i(e){return X({name:`FlowExecWrappedNode`,props:{id:{type:String,required:!0},data:{type:Object,required:!0}},setup(n){let r=K(()=>{let e=n.data?.config,t=[...Array.isArray(e?.conditionBranches)?e.conditionBranches:[]].sort((e,t)=>{let n=e?.handleId===`default`||e?.isDefault,r=t?.handleId===`default`||t?.isDefault;return n&&!r?1:!n&&r?-1:Number(e?.priority??0)-Number(t?.priority??0)}).map(e=>String(e?.handleId||``).trim()).filter(e=>!!e);return t.includes(`default`)||t.push(`default`),t.length?t:[`default`]});return()=>xe($h,{id:n.id,nodeId:n.id,nodeType:n.data?.type,title:n.data?.label,icon:t(n.data?.type),enabled:n.data?.enabled,selected:n.data?.selected,execStatus:n.data?.execStatus,sourceHandleIds:n.data?.type===`condition`?r.value:void 0,deletable:!1},{default:()=>xe(e,{data:n.data,id:n.id})})}})}let a={start:o(n),command:o(i(sg)),wait:o(i(dg)),version:o(i(vg)),confirm:o(i(xg)),code:o(i(Og)),condition:o(i(Pg)),user_input:o(i(Ug))},s=e,{onPaneReady:c}=Pe({id:eb}),l=null,u=null;async function d(e){if(e){if(!l){u=e;return}for(let t=0;t<6;t+=1){if(await p(),await new Promise(e=>requestAnimationFrame(()=>e())),!(typeof l?.findNode==`function`&&l.findNode(e))){await new Promise(e=>window.setTimeout(()=>e(),60));continue}try{await l.fitView({nodes:[e],padding:.35,includeHiddenNodes:!0,minZoom:.35,maxZoom:1.2,duration:200})}catch{}break}}}c(e=>{l=e,console.log(`[FlowExecutionViewer] onPaneReady, flowId=`,eb),console.log(`[FlowExecutionViewer] instance keys=`,Object.keys(e||{}));try{l.fitView({padding:.2,includeHiddenNodes:!0,duration:0})}catch{}let t=(s.currentNodeId||u||``).trim();t&&(u=null,d(t))});let f=null;F(()=>s.currentNodeId,async e=>{e&&(f&&=(window.clearTimeout(f),null),f=window.setTimeout(async()=>{if(console.log(`[FlowExecutionViewer] focus request, flowId=`,eb,`nodeId=`,e),!l){u=e,console.log(`[FlowExecutionViewer] flowInstance not ready, pendingFocusNodeId=`,u);return}d(e)},150))}),r(()=>{f&&=(window.clearTimeout(f),null)});let m=K(()=>{let e=Array.isArray(s.flowData?.nodes)?s.flowData.nodes:[],t=new Set(s.executedNodeIds),n=new Set(s.failedNodeIds),r=s.currentNodeId;return e.map(e=>{let i;r&&e.id===r?i=`running`:n.has(e.id)?i=`failed`:t.has(e.id)&&(i=`success`);let a=[];return t.has(e.id)&&a.push(`exec-node-done`),{...e,data:{...e.data,execStatus:i},class:a.join(` `)}})}),h=K(()=>{let e=Array.isArray(s.flowData?.edges)?s.flowData.edges:[],t=new Set(s.executedEdgeIds);return e.map(e=>{let n=[];return t.has(e.id)&&n.push(`exec-edge-done`),{...e,class:n.join(` `)}})});return(e,t)=>(G(),Y(`div`,$y,[z(B(M),{id:eb,nodes:m.value,edges:h.value,"node-types":a,"nodes-draggable":!1,"nodes-connectable":!1,"elements-selectable":!1,"zoom-on-scroll":!0,"zoom-on-double-click":!1,"pan-on-drag":!0,"min-zoom":.2,"max-zoom":1.5},{default:R(()=>[z(B(ee)),z(B(Te))]),_:1},8,[`nodes`,`edges`])]))}}),[[`__scopeId`,`data-v-0bf9b2cc`]]),nb=e(ke(),1),rb={0:`var(--color-black)`,1:`#cd3131`,2:`#0dbc79`,3:`#e5e510`,4:`#2472c8`,5:`#bc3fbc`,6:`#11a8cd`,7:`#e5e5e5`,8:`#666666`,9:`#f14c4c`,10:`#23d18b`,11:`#f5f543`,12:`#3b8eea`,13:`#d670d6`,14:`#29b8db`,15:`var(--color-white)`};function ib(e={}){let t=new nb.default({fg:e.fg??`#e5e5e5`,bg:e.bg??`transparent`,newline:e.newline??!1,escapeXML:e.escapeXML??!1,stream:e.stream??!1,colors:e.colors??rb});function n(e){return t.toHtml(e)}return{ansiToHtml:n,converter:t}}function ab(){let e=w([]),t=w(!1);async function n(){try{t.value=!0;let n=await(await fetch(`/api/terminal-sessions`)).json();n?.success?e.value=Array.isArray(n.sessions)?n.sessions:[]:J.error(n?.error||`获取终端会话失败`)}catch(e){J.error(e?.message||`获取终端会话失败`)}finally{t.value=!1}}async function r(e){try{t.value=!0;let r=await(await fetch(`/api/terminal-sessions/${e.id}/restart`,{method:`POST`})).json();return r?.success?(J.success(`已重新启动终端`),await n(),!0):(J.error(r?.error||`重新启动失败`),!1)}catch(e){return J.error(e?.message||`重新启动失败`),!1}finally{t.value=!1}}async function i(e){try{await gt.confirm(`确定要删除该终端会话记录吗?如果该终端仍在运行,将尝试结束进程。`,`删除终端会话`,{confirmButtonText:`删除`,cancelButtonText:`取消`,type:`warning`})}catch{return!1}try{t.value=!0;let r=await(await fetch(`/api/terminal-sessions/${e.id}`,{method:`DELETE`})).json();return r?.success?(J.success(`已删除`),await n(),!0):(J.error(r?.error||`删除失败`),!1)}catch(e){return J.error(e?.message||`删除失败`),!1}finally{t.value=!1}}function a(t){let n=e.value.findIndex(e=>e.id===t.id);n>=0?e.value.splice(n,1,t):e.value.unshift(t)}return{sessions:e,loading:K(()=>t.value),count:K(()=>e.value.length),refresh:n,restart:r,remove:i,upsert:a}}var ob={class:`console-header`},sb={class:`header-left`},cb={class:`console-title`},lb={class:`header-actions`},ub={key:0,class:`execution-controls`},db={key:1,viewBox:`0 0 24 24`,width:`1em`,height:`1em`,fill:`currentColor`,style:{display:`block`}},fb={class:`console-content`},pb={class:`termial-session`},mb={key:0,class:`terminal-sessions-panel`},hb={class:`terminal-sessions-header`},gb={class:`terminal-sessions-title`},_b={class:`terminal-sessions-count`},vb={class:`terminal-sessions-actions`},yb={class:`terminal-sessions-body`},bb={key:0,class:`terminal-sessions-empty`},xb={key:1,class:`terminal-sessions-list`},Sb={class:`terminal-session-main`},Cb=[`title`],wb={class:`terminal-session-pid`},Tb={class:`terminal-session-meta`},Eb={class:`terminal-session-dir`},Db={class:`terminal-session-actions`},Ob={key:1,class:`terminal-sessions-collapsed`},kb={class:`console-content-main`},Ab={key:0,class:`orchestration-flow-panel`},jb={class:`flow-panel-header`},Mb={class:`flow-panel-title`},Nb={key:1,class:`orchestration-steps-panel`},Pb={class:`steps-header`},Fb={class:`steps-title`},Ib={key:0,class:`steps-orchestration`},Lb={key:0,class:`steps-list`},Rb={class:`step-indicator`},zb={key:4,class:`step-number`},Bb={class:`step-content`},Vb={class:`step-header`},Hb={key:0,class:`step-terminal-tag`,title:`终端执行`},Ub={key:1,class:`step-disabled-tag`},Wb={class:`step-name`},Gb={key:1,class:`terminal-waiting-panel`},Kb={class:`waiting-content`},qb={class:`waiting-text`},Jb={class:`waiting-desc`},Yb={class:`waiting-actions`},Xb={key:2,class:`terminal-waiting-panel user-confirm-panel`},Zb={class:`waiting-content`},Qb={class:`waiting-text`},$b={class:`waiting-desc`},ex={class:`waiting-actions`},tx={class:`console-input-row`},nx=[`title`],rx={key:2,class:`console-output`},ix=[`onClick`],ax={class:`cmd-line`},ox={class:`cmd-text`},sx=[`title`],cx={class:`ts`},lx={class:`cmd-actions`},ux={key:0,class:`output-content`},dx=[`innerHTML`],fx=[`innerHTML`],px={key:0,class:`stdin-input-row`},mx={class:`user-input-dialog-content`},hx={key:0,class:`user-input-empty`},gx={key:1,class:`user-input-form`},_x={class:`user-input-label`},vx={key:0,class:`required`},yx=$(X({__name:`CommandConsole`,setup(e){let n=hn(),i=yn();function a(){let e=window.location.port||`80`;return e===`5173`||e===`4173`||e===`5544`?4177:parseInt(e,10)}function o(){Ve().catch(e=>{J.error(e?.message||`提交后启动项执行失败`)})}async function s(e){let t=e?.flowData,n={id:String(e?.id||``).trim(),name:String(e?.name||``).trim()};if(t&&Array.isArray(t?.nodes)&&Array.isArray(t?.edges)){await c({flowData:t,orchestrationMeta:n});return}J.warning(`该编排缺少流程数据,无法执行`)}async function c(e){let t=e?.flowData;if(!t||!Array.isArray(t.nodes)||!Array.isArray(t.edges))return;let n=t.nodes,r=t.edges;Ce.value=!0,m.value=!0,g.value=!1,E.value=[],D.value=-1,O.value=t,k.value=!0,te.value=null,M.value=[],N.value=[],ne.value=[],re.value=(e?.orchestrationMeta?.name||``).trim(),ie.value=(e?.orchestrationMeta?.id||``).trim();let i={},a=new Map(n.map(e=>[e.id,e])),o=(e?.startNodeId||``).trim()||n.find(e=>e.type===`start`)?.id;if(!o){J.error(`未找到 start 节点`);return}let s=new Map;for(let e of r)s.has(e.source)||s.set(e.source,[]),s.get(e.source).push(e);for(let[e,t]of s.entries()){let n=a.get(e);if(n&&n.type!==`start`&&n.type!==`condition`&&t.length>1){J.error(`节点 ${n.data?.label||n.id} 出边超过 1 条,当前版本不支持`);return}}let c=Math.max(100,n.length*10),l=new Map,u=(e,t,n)=>{let r=e??``,i=n??``;switch(t){case`contains`:return r.includes(i);case`not_contains`:return!r.includes(i);case`isEmpty`:return String(r).trim().length===0;case`isNotEmpty`:return String(r).trim().length>0;case`==`:return r===i;case`!=`:return r!==i;case`>`:case`>=`:case`<`:case`<=`:{let e=Number(r),n=Number(i);return Number.isNaN(e)||Number.isNaN(n)?!1:t===`>`?e>n:t===`>=`?e>=n:t===`<`?e<n:e<=n}default:return!1}},d=(e,t)=>{let n=s.get(e)||[],r=(Array.isArray(t?.conditionBranches)?t.conditionBranches:[]).map(e=>({id:String(e?.id||``),name:String(e?.name||``),handleId:String(e?.handleId||``),priority:typeof e?.priority==`number`?e.priority:Number(e?.priority??0),combine:e?.combine===`any`?`any`:`all`,rules:Array.isArray(e?.rules)?e.rules:[],isDefault:!!e?.isDefault||String(e?.handleId||``)===`default`})).filter(e=>!!e.handleId),a=r.find(e=>e.isDefault)||r.find(e=>e.handleId===`default`),o=r.filter(e=>!e.isDefault&&e.handleId!==`default`).sort((e,t)=>(e.priority??0)-(t.priority??0)),c=e=>{let t=Array.isArray(e.rules)?e.rules:[];if(t.length===0)return!1;let n=t.map(e=>{let t=String(e?.left?.nodeId||``).trim(),n=String(e?.left?.outputKey||`stdout`).trim()||`stdout`,r=t&&i?.[t]?.[n]||``;return u(String(r??``),String(e?.op||``),e?.right)});return e.combine===`any`?n.some(Boolean):n.every(Boolean)},l=o.find(e=>c(e));!l&&a&&(l=a);let d=String(l?.handleId||``),f=d?n.find(e=>String(e.sourceHandle||``).trim()===d):void 0;return console.log(`[FLOW][condition]`,{nodeId:e,chosen:l?{name:l.name,handleId:l.handleId,priority:l.priority,isDefault:l.isDefault}:null,outs:n.map(e=>({id:e.id,sourceHandle:e.sourceHandle,target:e.target})),nodeOutputsKeys:Object.keys(i||{})}),f},f=o,p=0;try{for(;f;){if(!m.value)throw Error(`用户停止执行`);if(p++>c)throw Error(`执行步数超过上限(${c}),可能存在循环`);let t=l.get(f)||0;if(l.set(f,t+1),t>=10)throw Error(`检测到节点 ${f} 被重复执行过多次,可能存在循环`);let n=a.get(f);if(!n)throw Error(`节点不存在: ${f}`);if(te.value=n.id,n.type===`start`){let e=s.get(n.id)||[];M.value=M.value.includes(n.id)?M.value:[...M.value,n.id],e[0]?.id&&(N.value=N.value.includes(e[0].id)?N.value:[...N.value,e[0].id]),f=e[0]?.target;continue}let r=n.data?.config;if(!r)throw Error(`节点未配置: ${n.data?.label||n.id}`);r.enabled===void 0&&(r.enabled=n.data?.enabled??!0);let o=e?.isSingleExecution===!0;if(r.enabled===!1&&!o){f=(s.get(n.id)||[])[0]?.target;continue}if(n.type===`condition`){let e=d(n.id,r);if(M.value=M.value.includes(n.id)?M.value:[...M.value,n.id],e?.id&&(N.value=N.value.includes(e.id)?N.value:[...N.value,e.id]),f=e?.target,o)break;continue}let u=s.get(n.id)||[],h=e?.isSingleExecution!==!0&&!!u[0]?.target;if(!await pt([{...r,nodeId:n.id,enabled:r.enabled}],0,!0,e?.orchestrationMeta,{nodeOutputs:i,skipUiSetup:!0,skipUiTeardown:!0,forceTerminalConfirm:h})){n.id&&!ne.value.includes(n.id)&&(ne.value=[...ne.value,n.id]);break}if(!m.value)break;M.value=M.value.includes(n.id)?M.value:[...M.value,n.id];let g=s.get(n.id)||[];if(g[0]?.id&&(N.value=N.value.includes(g[0].id)?N.value:[...N.value,g[0].id]),f=g[0]?.target,o)break}}catch(e){String(e?.message||e)!==`用户停止执行`&&(te.value&&!ne.value.includes(te.value)&&(ne.value=[...ne.value,te.value]),J.error(e?.message||String(e)))}finally{m.value=!1,g.value=!1,D.value=-1,E.value=[],te.value=null}}let l=a(),u=w(null),d=w(``),f=w(``),m=w(!1),g=w(!1),_=w([]),v=0;function y(){gt.confirm(`确定要清空所有执行历史吗?此操作不可撤销。`,`清空历史`,{confirmButtonText:`清空`,cancelButtonText:`取消`,type:`warning`}).then(()=>{_.value=[],J.success(`执行历史已清空`)}).catch(()=>{})}function S(){se&&se(!0)}function C(){se&&se(!1),m.value=!1,g.value=!1}function ee(){ue&&ue(!0)}function T(){ue&&ue(!1),m.value=!1,g.value=!1}let E=w([]),D=w(-1),O=w(null),k=w(!0),te=w(null),M=w([]),N=w([]),ne=w([]),re=w(``),ie=w(``),I=w(!1),ae=w(``),se=null,ce=w(!1),le=w(``),ue=null,de=w(!1),fe=w(``),pe=w([]),he=w({}),ge=null,_e=K({get:()=>de.value,set:e=>{de.value=e}});function ye(){let e=Array.isArray(pe.value)?pe.value:[];for(let t of e){if(!t?.required)continue;let e=he.value?.[t.name];if(e==null||String(e).trim()===``){J.warning(Q(`@UINPUT:请输入必填参数的值`,{name:t.name}));return}}ge&&ge(!0)}function xe(){ge&&ge(!1),m.value=!1,g.value=!1}let{ansiToHtml:Se}=ib(),Ce=w(!1),Te=K({get:()=>n.ui.commandConsole.useTerminal,set:e=>{n.ui.commandConsole.useTerminal=e}}),{sessions:Ee,loading:De,refresh:Oe,restart:ke,remove:Ae,upsert:Ne}=ab(),Pe=K({get:()=>n.ui.commandConsole.showTerminalSessions,set:e=>{n.ui.commandConsole.showTerminalSessions=e}}),Fe=K(()=>Ee.value.length),Ie=w(!1);function Le(e){return new Promise(t=>setTimeout(t,e))}async function Re(e=8e3){let t=Date.now();for(;Date.now()-t<e;){if(u.value&&u.value.connected)return!0;await Le(100)}return!1}async function ze(e){let t=n.customCommands.find(t=>String(t.id)===String(e));if(!t){J.warning(`启动项命令不存在: ${e}`);return}let r=t.directory||d.value,i=t.command;if(Te.value){try{let e=await(await fetch(`/api/exec-in-terminal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({command:i,workingDirectory:r})})).json();e?.success?e?.session?Ne(e.session):await Oe():J.error(e?.error||`启动项命令执行失败`)}catch(e){J.error(e?.message||`启动项命令执行失败`)}return}if(!await Re()){J.error(`Socket 连接未就绪,无法自动执行交互式启动项`);return}await bt(i,r)}async function Be(e){let t=n.orchestrations.find(t=>t.id===e);if(!t){J.warning(`启动项工作流不存在: ${e}`);return}await s(t)}async function Ve(){await n.loadConfig(!1);let e=n.afterQuickPushAction;e?.enabled&&e?.refId&&(e.type===`workflow`?await Be(e.refId):await ze(e.refId))}async function He(){if(Ie.value||(Ie.value=!0,await n.loadConfig(!1),!n.startupAutoRun))return;let e=(n.startupItems||[]).filter(e=>e?.enabled!==!1);if(e.length!==0)for(let t of e)t.type===`workflow`?await Be(t.refId):await ze(t.refId)}let Ue=e=>Math.min(85,Math.max(15,e)),We=K({get:()=>Ue(n.ui.commandConsole.splitPercent),set:e=>{n.ui.commandConsole.splitPercent=Ue(e)}}),Ge=w(null),Ke=()=>{let e=Ge.value?.$el??Ge.value;if(e&&e.clientWidth)return e.clientWidth;try{return e?.getBoundingClientRect?.().width??0}catch{return 0}},Je=()=>{let e=Ge.value?.$el??Ge.value;if(!e)return;let t=e.querySelectorAll?.(`.el-splitter__panel`),n=Ke();if(!t||t.length<1||n<=0)return;let r=t[0]?.getBoundingClientRect?.().width??0;if(r>0){let e=Ue(r/n*100);e!==We.value&&(We.value=e)}},Ye=K({get(){return`${Ue(We.value)}%`},set(e){let t=NaN;if(typeof e==`number`){let n=Ke();n>0&&!isNaN(e)&&(t=e/n*100)}else if(typeof e==`string`){if(e.endsWith(`%`))t=parseFloat(e);else if(e.endsWith(`px`)){let n=parseFloat(e),r=Ke();r>0&&!isNaN(n)&&(t=n/r*100)}}isNaN(t)||(We.value=Ue(t))}});async function Xe(e=!0){if(Ee.value.length!==0)try{let t=await(await fetch(`/api/terminal-sessions/status?cleanup=${e?`true`:`false`}`)).json();t?.success&&(Ee.value=Array.isArray(t.sessions)?t.sessions:[])}catch{}}function Qe(e){let t=String(e||``).trim();if(!t)return``;let n=t.replace(/\/+$/g,``).replace(/\+$/g,``),r=n.split(/[\\/]+/).filter(Boolean);return r[r.length-1]||n}let $e=w(!1),et=w(!1);async function tt(){let e=f.value.trim();!e||m.value||(f.value=``,await nt(e,d.value))}async function nt(e,t=d.value){if(m.value=!0,Te.value){try{let n=await(await fetch(`/api/exec-in-terminal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({command:e,workingDirectory:t})})).json();n?.success?(J.success(`已在新终端中执行命令`),n?.session?Ne(n.session):await Oe()):J.error(n?.error||`执行失败`)}catch(e){J.error(e?.message||`执行失败`)}finally{m.value=!1}return}let n={id:++v,command:e,directory:t,success:!1,ts:new Date().toLocaleString(),expanded:!0,stdout:``,stderr:``,running:!0};_.value.unshift(n),f.value=``;try{console.log(`[前端-控制台] 开始发送流式请求:`,e);let t=await fetch(`/api/exec-stream`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({command:e,directory:n.directory})});if(console.log(`[前端-控制台] 收到响应,状态:`,t.status,t.statusText),!t.ok)throw Error(`HTTP ${t.status}: ${t.statusText}`);let r=t.body?.getReader(),i=new TextDecoder;if(!r)throw Error(`无法读取响应流`);console.log(`[前端-控制台] 开始读取流数据`);let a=``,o=0;for(;;){let{done:e,value:t}=await r.read();if(o++,console.log(`[前端-控制台] 读取数据块 #${o}, done:`,e,`size:`,t?.length||0),e)break;let s=i.decode(t,{stream:!0});console.log(`[前端-控制台] 解码数据块:`,s.substring(0,200)),a+=s;let c=a.split(`
|
|
49
49
|
|
|
50
50
|
`);a=c.pop()||``,console.log(`[前端-控制台] 分割出 ${c.length} 条消息`);for(let e of c){let t=e.split(`
|
|
51
51
|
`);for(let e of t)if(e.startsWith(`data: `))try{let t=JSON.parse(e.substring(6));console.log(`[前端-控制台] 解析到数据:`,t.type,`长度:`,t.data?.length||0),t.type===`process_id`?(n.processId=t.data,console.log(`[前端-控制台] 收到进程ID:`,n.processId),_.value=[..._.value]):t.type===`stdout`?(n.stdout=(n.stdout||``)+Se(t.data),console.log(`[前端-控制台] 当前stdout总长度:`,n.stdout.length),m.value&&n.stdout.length<200&&(m.value=!1),_.value=[..._.value]):t.type===`stderr`?(n.stderr=(n.stderr||``)+Se(t.data),console.log(`[前端-控制台] 当前stderr总长度:`,n.stderr.length),m.value&&n.stderr.length<200&&(m.value=!1),_.value=[..._.value]):t.type===`exit`?(n.success=t.data.success,n.running=!1,console.log(`[前端-控制台] 进程退出,成功:`,n.success),_.value=[..._.value]):t.type===`error`&&(n.stderr=(n.stderr||``)+`错误: ${t.data}\n`,_.value=[..._.value])}catch(t){console.warn(`解析SSE数据失败:`,e,t)}}}if(a.trim()){let e=a.split(`
|
|
@@ -61,6 +61,6 @@ git config --global user.email "your.email@example.com"`,-1)]),_:1},8,[`title`])
|
|
|
61
61
|
`);s=i.pop()||``,console.log(`[前端-自定义] 分割出 ${i.length} 条消息, buffer剩余: ${s.length} 字符`);for(let e of i){let t=e.split(`
|
|
62
62
|
`);for(let e of t)if(e.startsWith(`data: `))try{let t=JSON.parse(e.substring(6));console.log(`[前端-自定义] 解析到数据:`,t.type,`内容长度:`,t.data?.length||0),t.type===`process_id`?(r.processId=t.data,console.log(`[前端-自定义] 收到进程ID:`,r.processId),_.value=[..._.value]):t.type===`stdout`?(r.stdout=(r.stdout||``)+Se(t.data),console.log(`[前端-自定义] 当前stdout总长度:`,r.stdout.length,`内容预览:`,r.stdout.substring(0,100)),m.value&&r.stdout.length<200&&(m.value=!1),_.value=[..._.value]):t.type===`stderr`?(r.stderr=(r.stderr||``)+Se(t.data),console.log(`[前端-自定义] 当前stderr总长度:`,r.stderr.length),m.value&&r.stderr.length<200&&(m.value=!1),_.value=[..._.value]):t.type===`exit`?(r.success=t.data.success,r.running=!1,console.log(`[前端-自定义] 进程退出,成功:`,r.success),_.value=[..._.value]):t.type===`error`&&(r.stderr=(r.stderr||``)+`错误: ${t.data}\n`,_.value=[..._.value])}catch(t){console.warn(`[前端-自定义] 解析SSE数据失败:`,e,t)}}}if(s.trim()){let e=s.split(`
|
|
63
63
|
`);for(let t of e)if(t.startsWith(`data: `))try{let e=JSON.parse(t.substring(6));e.type===`stdout`?r.stdout=(r.stdout||``)+Se(e.data):e.type===`stderr`?r.stderr=(r.stderr||``)+Se(e.data):e.type===`exit`&&(r.success=e.data.success,r.running=!1)}catch(e){console.warn(`解析剩余SSE数据失败:`,e)}_.value=[..._.value]}console.log(`[前端-自定义] 流读取完成,正常退出`)}catch(e){console.error(`[前端-自定义] 捕获异常:`,e),r.success=!1,r.running=!1,r.stderr=e?.message||String(e)}finally{console.log(`[前端-自定义] finally块执行,设置consoleRunning=false`),m.value=!1,dt(n)&&(await i.fetchStatus(),await i.fetchLog())}}async function vt(){let e=f.value.trim();!e||m.value||(f.value=``,await bt(e))}async function bt(e,t=d.value){m.value=!0;let n=`session_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,r={id:++v,command:e,directory:t,success:!1,ts:new Date().toLocaleString(),expanded:!0,stdout:``,stderr:``,running:!0,sessionId:n,isInteractive:!0,stdinInput:``};if(_.value.unshift(r),!u.value||!u.value.connected){J.error(`Socket 连接未建立,无法执行交互式命令`),m.value=!1,r.running=!1,r.stderr=`Socket 连接未建立`;return}u.value.emit(`exec_interactive`,{command:e,directory:t,sessionId:n});let i=e=>{e.sessionId===n&&(r.processId=e.processId,console.log(`[交互式] 收到进程ID:`,r.processId),_.value=[..._.value])},a=e=>{e.sessionId===n&&(r.stdout=(r.stdout||``)+Se(e.data),m.value=!1,_.value=[..._.value])},o=e=>{e.sessionId===n&&(r.stderr=(r.stderr||``)+Se(e.data),m.value=!1,_.value=[..._.value])},s=e=>{e.sessionId===n&&(r.success=e.success,r.running=!1,console.log(`[交互式] 进程退出,成功:`,r.success),_.value=[..._.value],u.value?.off(`interactive_process_id`,i),u.value?.off(`interactive_stdout`,a),u.value?.off(`interactive_stderr`,o),u.value?.off(`interactive_exit`,s),u.value?.off(`interactive_error`,c))},c=e=>{e.sessionId===n&&(r.stderr=(r.stderr||``)+`错误: ${e.error}\n`,r.running=!1,r.success=!1,_.value=[..._.value],u.value?.off(`interactive_process_id`,i),u.value?.off(`interactive_stdout`,a),u.value?.off(`interactive_stderr`,o),u.value?.off(`interactive_exit`,s),u.value?.off(`interactive_error`,c))};u.value.on(`interactive_process_id`,i),u.value.on(`interactive_stdout`,a),u.value.on(`interactive_stderr`,o),u.value.on(`interactive_exit`,s),u.value.on(`interactive_error`,c),m.value=!1}function xt(e){let t=e.stdinInput?.trim();if(!(!t||!e.sessionId)){if(!u.value||!u.value.connected){J.error(`Socket 连接未建立`);return}console.log(`[交互式] 发送 stdin 输入:`,t),u.value.emit(`interactive_stdin_${e.sessionId}`,{input:t}),e.stdinInput=``,_.value=[..._.value]}}function St(e){if(!e.sessionId||!e.running){J.warning(`命令已经结束`);return}if(!u.value||!u.value.connected){J.error(`Socket 连接未建立`);return}console.log(`[交互式] 停止命令:`,e.sessionId),u.value.emit(`interactive_stop_${e.sessionId}`),e.running=!1,_.value=[..._.value]}F(Pe,e=>{e&&Xe(!0)});function wt(){let e=`http://localhost:${l}`;console.log(`[控制台] 连接到 Socket.IO:`,e),u.value=Ct(e,{transports:[`websocket`,`polling`],reconnection:!0,reconnectionDelay:1e3,reconnectionAttempts:5}),u.value.on(`connect`,()=>{console.log(`[控制台] Socket.IO 已连接`)}),u.value.on(`disconnect`,()=>{console.log(`[控制台] Socket.IO 已断开`)}),u.value.on(`connect_error`,e=>{console.error(`[控制台] Socket.IO 连接错误:`,e)})}let Tt=()=>{Pe.value&&Oe()},Dt=()=>{document.visibilityState===`visible`&&Pe.value&&(console.log(`[页面可见性] 标签页已激活,刷新终端会话状态`),Xe(!0))},Ot=()=>{Pe.value&&(console.log(`[窗口焦点] 浏览器窗口已激活,刷新终端会话状态`),Xe(!0))};return mt(async()=>{try{d.value=(await(await fetch(`/api/current_directory`)).json())?.directory||``}catch{}wt(),await n.loadConfig(!1),await Oe(),await He(),document.addEventListener(`visibilitychange`,Dt),window.addEventListener(`focus`,Ot),window.addEventListener(`zen-gitsync:after-quick-push-success`,o),window.addEventListener(`zen-gitsync:terminal-session-created`,Tt)}),r(()=>{document.removeEventListener(`visibilitychange`,Dt),window.removeEventListener(`focus`,Ot),window.removeEventListener(`zen-gitsync:after-quick-push-success`,o),window.removeEventListener(`zen-gitsync:terminal-session-created`,Tt),u.value&&=(u.value.disconnect(),null)}),(e,n)=>{let r=P,i=A,a=t,o=Et,l=Me,u=rt,p=Ze;return G(),Y(H,null,[W(`div`,{class:x([`command-console`,{fullscreen:Ce.value}])},[W(`div`,ob,[W(`div`,sb,[n[16]||=W(`span`,{class:`console-window-dots`},[W(`span`,{class:`dot dot-red`}),W(`span`,{class:`dot dot-yellow`}),W(`span`,{class:`dot dot-green`})],-1),W(`span`,cb,q(B(Q)(`@CF05E:自定义指令执行`)),1)]),W(`div`,lb,[m.value?(G(),Y(`div`,ub,[z(i,{content:g.value?`继续执行`:`暂停执行`,placement:`bottom`},{default:R(()=>[z(r,{type:g.value?`success`:`warning`,size:`small`,onClick:n[0]||=e=>g.value=!g.value,class:`pause-btn`},{icon:R(()=>[g.value?(G(),U(B(j),{key:0})):(G(),U(B(h),{key:1}))]),default:R(()=>[Z(` `+q(g.value?`继续`:`暂停`),1)]),_:1},8,[`type`])]),_:1},8,[`content`]),z(i,{content:`停止执行`,placement:`bottom`},{default:R(()=>[z(r,{type:`danger`,size:`small`,onClick:n[1]||=e=>{m.value=!1,g.value=!1,D.value=-1,E.value=[]},class:`stop-btn`},{icon:R(()=>[z(B(Pt))]),default:R(()=>[n[17]||=Z(` 停止 `)]),_:1})]),_:1})])):V(``,!0),_.value.length>0?(G(),U(ln,{key:1,tooltip:`清空执行历史`,"hover-color":`var(--color-danger)`,onClick:y,"custom-class":`clear-history-btn`},{default:R(()=>[z(a,{size:18},{default:R(()=>[z(B(zt))]),_:1})]),_:1})):V(``,!0),z(ln,{tooltip:B(Q)(`@CF05E:使用终端执行`),active:Te.value,onClick:n[2]||=e=>Te.value=!Te.value,"custom-class":`terminal-toggle-btn`},{default:R(()=>[z(a,{size:20},{default:R(()=>[z(B(oe))]),_:1})]),_:1},8,[`tooltip`,`active`]),z(ln,{tooltip:B(Q)(`@CF05E:自定义命令管理`),"hover-color":`var(--color-success)`,onClick:ct,"custom-class":`command-manager-btn`},{default:R(()=>[z(on,{"icon-class":`command-list`,"class-name":`icon-btn`})]),_:1},8,[`tooltip`]),z(Uh,{onExecuteCommand:_t,onExecuteWorkflow:n[3]||=e=>s(e)}),z(ln,{tooltip:B(Q)(`@ORCH:可视化编排`),"hover-color":`#9c27b0`,onClick:lt,"custom-class":`flow-orchestrator-btn`},{default:R(()=>[z(on,{"icon-class":`workflow`,"class-name":`icon-btn`})]),_:1},8,[`tooltip`]),z(ln,{tooltip:Ce.value?B(Q)(`@CF05E:退出全屏`):B(Q)(`@CF05E:全屏显示`),onClick:n[4]||=e=>Ce.value=!Ce.value},{default:R(()=>[Ce.value?(G(),Y(`svg`,db,n[18]||=[W(`path`,{d:`M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z`},null,-1)])):(G(),U(a,{key:0},{default:R(()=>[z(B(be))]),_:1}))]),_:1},8,[`tooltip`])])]),W(`div`,fb,[z(u,{ref_key:`splitterRef`,ref:Ge,layout:`horizontal`,style:{height:`100%`},onResize:Je,onResizeEnd:Je},{default:R(()=>[z(o,{size:Ye.value,"onUpdate:size":n[7]||=e=>Ye.value=e,min:`15%`,max:`85%`},{default:R(()=>[W(`div`,pb,[Pe.value?(G(),Y(`div`,mb,[W(`div`,hb,[W(`div`,gb,[W(`span`,null,q(B(Q)(`@CMDCON:终端会话`)),1),W(`span`,_b,`(`+q(Fe.value)+`)`,1)]),W(`div`,vb,[z(i,{content:B(Q)(`@CMDCON:刷新`),placement:`bottom`},{default:R(()=>[z(r,{text:``,size:`small`,onClick:B(Oe),disabled:B(De)},{default:R(()=>[z(a,null,{default:R(()=>[z(B(ve))]),_:1})]),_:1},8,[`onClick`,`disabled`])]),_:1},8,[`content`]),z(i,{content:B(Q)(`@CMDCON:隐藏`),placement:`bottom`},{default:R(()=>[z(r,{text:``,size:`small`,onClick:n[5]||=e=>Pe.value=!1},{default:R(()=>[z(a,null,{default:R(()=>[z(B(me))]),_:1})]),_:1})]),_:1},8,[`content`])])]),Yt((G(),Y(`div`,yb,[B(Ee).length===0?(G(),Y(`div`,bb,q(B(Q)(`@CMDCON:暂无终端会话`)),1)):(G(),Y(`div`,xb,[(G(!0),Y(H,null,L(B(Ee),e=>(G(),Y(`div`,{key:e.id,class:`terminal-session-item`},[W(`div`,Sb,[W(`div`,{class:`terminal-session-command`,title:e.command},[Z(q(e.command),1),W(`span`,wb,` PID: `+q(e.pid??`-`),1)],8,Cb),W(`div`,Tb,[e.workingDirectory?(G(),U(i,{key:0,content:e.workingDirectory,placement:`top`},{default:R(()=>[W(`span`,Eb,[z(a,{class:`cmd-dir-icon`},{default:R(()=>[z(B(qe))]),_:1}),Z(` `+q(Qe(e.workingDirectory)),1)])]),_:2},1032,[`content`])):V(``,!0)])]),W(`div`,Db,[z(i,{content:B(Q)(`@CMDCON:重新启动`),placement:`top`},{default:R(()=>[z(r,{text:``,size:`small`,onClick:t=>B(ke)(e)},{default:R(()=>[z(a,null,{default:R(()=>[z(B(ve))]),_:1})]),_:2},1032,[`onClick`])]),_:2},1032,[`content`]),z(i,{content:B(Q)(`@CMDCON:删除`),placement:`top`},{default:R(()=>[z(r,{text:``,size:`small`,type:`danger`,onClick:t=>B(Ae)(e)},{default:R(()=>[z(a,null,{default:R(()=>[z(B(zt))]),_:1})]),_:2},1032,[`onClick`])]),_:2},1032,[`content`])])]))),128))]))])),[[p,B(De)]])])):(G(),Y(`div`,Ob,[z(r,{text:``,size:`small`,onClick:n[6]||=e=>Pe.value=!0},{default:R(()=>[Z(q(B(Q)(`@CMDCON:显示终端会话`,{count:Fe.value})),1)]),_:1})]))])]),_:1},8,[`size`]),z(o,{min:`15%`,max:`85%`},{default:R(()=>[W(`div`,kb,[O.value&&k.value?(G(),Y(`div`,Ab,[W(`div`,jb,[W(`div`,Mb,q(re.value||ie.value),1),z(ln,{tooltip:B(Q)(`@CMDCON:隐藏`),"hover-color":`var(--color-danger)`,"custom-class":`flow-panel-close-btn`,onClick:n[8]||=e=>k.value=!1},{default:R(()=>[z(a,{size:18},{default:R(()=>[z(B(Pt))]),_:1})]),_:1},8,[`tooltip`])]),z(tb,{"flow-data":O.value,"current-node-id":te.value||void 0,"executed-node-ids":M.value,"failed-node-ids":ne.value,"executed-edge-ids":N.value},null,8,[`flow-data`,`current-node-id`,`executed-node-ids`,`failed-node-ids`,`executed-edge-ids`])])):V(``,!0),E.value.length>0||I.value||ce.value?(G(),Y(`div`,Nb,[W(`div`,Pb,[W(`span`,Fb,[n[19]||=Z(` 执行步骤 `),re.value||ie.value?(G(),Y(`span`,Ib,` - `+q(re.value||ie.value),1)):V(``,!0),Z(` (`+q(D.value+1)+`/`+q(E.value.length)+`) `,1)])]),E.value.length>0?(G(),Y(`div`,Lb,[(G(!0),Y(H,null,L(E.value,(e,t)=>(G(),Y(`div`,{key:t,class:x([`step-item`,{"step-current":t===D.value,"step-completed":t<D.value,"step-pending":t>D.value,"step-disabled":e.enabled===!1,[`step-type-${e.type}`]:!0}])},[W(`div`,Rb,[t<D.value?(G(),U(a,{key:0,class:`step-icon-check`},{default:R(()=>n[20]||=[W(`svg`,{viewBox:`0 0 1024 1024`,xmlns:`http://www.w3.org/2000/svg`},[W(`path`,{fill:`currentColor`,d:`M406.656 706.944L195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z`})],-1)]),_:1})):e.type===`wait`?(G(),U(a,{key:1,class:`step-type-icon`},{default:R(()=>[z(B(je))]),_:1})):e.type===`version`?(G(),U(a,{key:2,class:`step-type-icon`},{default:R(()=>[z(B(we))]),_:1})):e.type===`command`?(G(),U(a,{key:3,class:`step-type-icon`},{default:R(()=>[z(B(yt))]),_:1})):(G(),Y(`span`,zb,q(t+1),1))]),W(`div`,Bb,[W(`div`,Vb,[W(`span`,{class:x([`step-type-tag`,`type-${e.type}`])},q(e.type===`command`?`命令`:e.type===`wait`?`等待`:e.type===`version`?`版本`:e.type===`user_input`?`输入`:e.type),3),e.useTerminal?(G(),Y(`span`,Hb,[z(a,{class:`step-terminal-icon`},{default:R(()=>[z(B(oe))]),_:1}),n[21]||=Z(` 终端 `)])):V(``,!0),e.enabled===!1?(G(),Y(`span`,Ub,`已禁用`)):V(``,!0)]),W(`span`,Wb,q(e.type===`command`?e.commandName:e.type===`wait`?`${e.waitSeconds} 秒`:e.type===`version`?e.versionTarget===`dependency`?`${e.dependencyName}`:`${e.versionBump||`patch`}`:e.type===`user_input`?e.displayName||`用户输入`:e.type),1)])],2))),128))])):V(``,!0),I.value?(G(),Y(`div`,Gb,[W(`div`,Kb,[z(a,{class:`waiting-icon`},{default:R(()=>[z(B(oe))]),_:1}),W(`div`,qb,[n[24]||=W(`div`,{class:`waiting-title`},`等待终端命令完成`,-1),W(`div`,Jb,[n[22]||=Z(` 终端命令 "`),W(`strong`,null,q(ae.value),1),n[23]||=Z(`" 已在新窗口中打开,请在终端中查看命令执行结果 `)])])]),W(`div`,Yb,[z(r,{type:`primary`,onClick:S},{default:R(()=>[z(a,null,{default:R(()=>[z(B(j))]),_:1}),n[25]||=Z(` 继续下一步 `)]),_:1}),z(r,{type:`danger`,plain:``,onClick:C},{default:R(()=>[z(a,null,{default:R(()=>[z(B(Pt))]),_:1}),n[26]||=Z(` 停止执行 `)]),_:1})])])):V(``,!0),ce.value?(G(),Y(`div`,Xb,[W(`div`,Zb,[z(a,{class:`waiting-icon`,style:{color:`#ff9800`}},{default:R(()=>n[27]||=[Z(`✋`)]),_:1}),W(`div`,Qb,[n[28]||=W(`div`,{class:`waiting-title`},`用户确认节点`,-1),W(`div`,$b,q(le.value),1)])]),W(`div`,ex,[z(r,{type:`primary`,onClick:ee},{default:R(()=>[z(a,null,{default:R(()=>[z(B(j))]),_:1}),n[29]||=Z(` 继续执行 `)]),_:1}),z(r,{type:`danger`,plain:``,onClick:T},{default:R(()=>[z(a,null,{default:R(()=>[z(B(Pt))]),_:1}),n[30]||=Z(` 取消执行 `)]),_:1})])])):V(``,!0)])):V(``,!0),W(`div`,tx,[W(`span`,{class:`prompt`,title:B(Q)(`@CF05E:当前路径`)},q(d.value)+` >`,9,nx),z(l,{modelValue:f.value,"onUpdate:modelValue":n[9]||=e=>f.value=e,class:`console-input`,placeholder:Te.value?B(Q)(`@CMDCON:在新终端执行`):B(Q)(`@CMDCON:交互式模式`),onKeydown:n[10]||=ht(Rt(e=>Te.value?tt():vt(),[`prevent`]),[`enter`]),disabled:m.value,clearable:``},null,8,[`modelValue`,`placeholder`,`disabled`]),z(ln,{disabled:m.value,"hover-color":`var(--color-primary)`,onClick:n[11]||=e=>Te.value?tt():vt()},{default:R(()=>[m.value?(G(),U(a,{key:0,class:`is-loading`},{default:R(()=>[z(B(h))]),_:1})):(G(),U(a,{key:1},{default:R(()=>[z(B(j))]),_:1}))]),_:1},8,[`disabled`])]),_.value.length?(G(),Y(`div`,rx,[(G(!0),Y(H,null,L(_.value,e=>(G(),Y(`div`,{key:e.id,class:`console-record`},[W(`div`,{class:`cmd-header cursor-pointer`,onClick:t=>ot(e)},[W(`div`,ax,[n[31]||=W(`span`,{class:`cmd-prefix`},`>`,-1),W(`span`,ox,q(e.command),1),e.directory?(G(),Y(`span`,{key:0,class:`cmd-dir`,title:e.directory},[z(a,{class:`cmd-dir-icon`},{default:R(()=>[z(B(qe))]),_:1}),Z(` `+q(e.directory),1)],8,sx)):V(``,!0),e.running?(G(),U(a,{key:1,class:`running-icon is-loading`,color:`var(--color-primary)`},{default:R(()=>[z(B(h))]),_:1})):V(``,!0),W(`span`,cx,q(e.ts),1)]),W(`div`,lx,[z(i,{content:`重新执行`,placement:`top`},{default:R(()=>[z(r,{text:``,size:`small`,onClick:Rt(t=>at(e),[`stop`]),class:`rerun-btn`},{default:R(()=>[z(a,null,{default:R(()=>[z(B(ve))]),_:1})]),_:2},1032,[`onClick`])]),_:2},1024),e.running?(G(),U(i,{key:0,content:`停止命令`,placement:`top`},{default:R(()=>[z(r,{text:``,size:`small`,onClick:Rt(t=>e.isInteractive?St(e):st(e),[`stop`]),class:`stop-btn`,type:`danger`},{default:R(()=>[z(a,null,{default:R(()=>[z(B(Pt))]),_:1})]),_:2},1032,[`onClick`])]),_:2},1024)):V(``,!0),z(r,{text:``,size:`small`,onClick:Rt(t=>ot(e),[`stop`]),disabled:!e.stdout&&!e.stderr,class:`toggle-output-btn`},{default:R(()=>[z(a,{class:x({"rotate-icon":!e.expanded})},{default:R(()=>[z(B(me))]),_:2},1032,[`class`])]),_:2},1032,[`onClick`,`disabled`])])],8,ix),z(jt,{name:`output-slide`},{default:R(()=>[e.expanded&&(e.stdout||e.stderr)?(G(),Y(`div`,ux,[e.stdout?(G(),Y(`pre`,{key:0,class:`stdout`,innerHTML:e.stdout},null,8,dx)):V(``,!0),e.stderr?(G(),Y(`pre`,{key:1,class:`stderr`,innerHTML:e.stderr},null,8,fx)):V(``,!0)])):V(``,!0)]),_:2},1024),e.isInteractive&&e.running?(G(),Y(`div`,px,[z(a,{class:`stdin-icon`},{default:R(()=>[z(B(b))]),_:1}),z(l,{modelValue:e.stdinInput,"onUpdate:modelValue":t=>e.stdinInput=t,class:`stdin-input`,placeholder:`输入响应内容(如密码、确认等),按回车发送`,onKeydown:ht(Rt(t=>xt(e),[`prevent`]),[`enter`]),clearable:``,size:`small`},null,8,[`modelValue`,`onUpdate:modelValue`,`onKeydown`]),z(r,{type:`success`,onClick:t=>xt(e),size:`small`},{default:R(()=>n[32]||=[Z(`发送`)]),_:2},1032,[`onClick`])])):V(``,!0)]))),128))])):V(``,!0)])]),_:1})]),_:1},512)])],2),z(Ds,{visible:$e.value,"onUpdate:visible":n[12]||=e=>$e.value=e,fullscreen:!0,onExecuteCommand:_t},null,8,[`visible`]),z(Qy,{visible:et.value,"onUpdate:visible":n[13]||=e=>et.value=e,onExecuteFlow:c,onOpenCommandManager:n[14]||=e=>$e.value=!0},null,8,[`visible`]),z(pa,{modelValue:_e.value,"onUpdate:modelValue":n[15]||=e=>_e.value=e,title:fe.value,size:`small`,type:`flex`,width:`520px`,"append-to-body":!0,"close-on-click-modal":!1,"close-on-press-escape":!1,"show-footer":!0,"confirm-text":B(Q)(`@803A9:确定`),"cancel-text":B(Q)(`@803A9:取消`),onConfirm:ye,onCancel:xe},{default:R(()=>[W(`div`,mx,[pe.value.length===0?(G(),Y(`div`,hx,q(B(Q)(`@UINPUT:暂无输入参数`)),1)):(G(),Y(`div`,gx,[(G(!0),Y(H,null,L(pe.value,e=>(G(),Y(`div`,{key:e.name,class:`user-input-row`},[W(`div`,_x,[e.required?(G(),Y(`span`,vx,`*`)):V(``,!0),Z(` `+q(e.name),1)]),z(l,{modelValue:he.value[e.name],"onUpdate:modelValue":t=>he.value[e.name]=t,placeholder:e.name,clearable:``},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`])]))),128))]))])]),_:1},8,[`modelValue`,`title`,`confirm-text`,`cancel-text`])],64)}}}),[[`__scopeId`,`data-v-a39aa7dc`]]),bx={key:0,class:`remote-wrapper`},xx=$(X({__name:`RemoteRepoCard`,setup(e){let t=yn();return(e,n)=>{let r=on,i=A;return B(t).remoteUrl?(G(),Y(`div`,bx,[z(r,{"icon-class":`remote-repo`,"class-name":`remote-repo-icon`}),z(i,{content:B(Q)(`@F13B4:复制仓库地址`),placement:`top`,effect:`dark`,"show-after":300},{default:R(()=>[W(`span`,{class:`repo-url clickable`,onClick:n[0]||=e=>B(t).copyRemoteUrl()},q(B(t).remoteUrl),1)]),_:1},8,[`content`])])):V(``,!0)}}}),[[`__scopeId`,`data-v-968987a1`]]);async function Sx(){let e=await fetch(`/api/app-version`);return e.ok?e.json():{success:!1,current:``,latest:null,hasUpdate:!1,error:`HTTP ${e.status}`}}async function Cx(e){let t=await fetch(`/api/app-upgrade`,{method:`POST`});if(!t.ok){let n=`HTTP ${t.status}`;try{let e=await t.json();e?.error&&(n=e.error)}catch{}e({type:`error`,message:n}),e({type:`done`,code:t.status});return}if(!t.body){e({type:`error`,message:`响应无 body`}),e({type:`done`,code:-1});return}let n=t.body.getReader(),r=new TextDecoder(`utf-8`),i=``;for(;;){let{done:t,value:a}=await n.read();if(t)break;i+=r.decode(a,{stream:!0});let o=i.split(`
|
|
64
|
-
`);i=o.pop()??``;for(let t of o)if(t.trim())try{e(JSON.parse(t))}catch{}}if(i.trim())try{e(JSON.parse(i))}catch{}}var wx={key:3},Tx={key:4},Ex={key:5},Dx=$(X({__name:`UpgradeDialog`,props:{modelValue:{type:Boolean},logs:{},status:{}},emits:[`update:modelValue`,`retry`],setup(e,{emit:n}){let r=e,i=n,a=w(null);F(()=>r.logs,async()=>{await p(),a.value&&(a.value.scrollTop=a.value.scrollHeight)});function o(){r.status!==`running`&&i(`update:modelValue`,!1)}function s(){i(`retry`)}return(e,n)=>{let r=t,c=P,l=re;return G(),U(l,{"model-value":e.modelValue,"onUpdate:modelValue":n[0]||=e=>i(`update:modelValue`,e),title:B(Q)(`@F13B4:升级`),width:`680px`,"close-on-click-modal":!1,"close-on-press-escape":!1,"show-close":e.status!==`running`,onClose:o},{footer:R(()=>[e.status===`failed`?(G(),U(c,{key:0,type:`primary`,onClick:s},{default:R(()=>[Z(q(B(Q)(`@F13B4:重试`)),1)]),_:1})):V(``,!0),e.status===`success`?(G(),U(c,{key:1,onClick:o},{default:R(()=>[Z(q(B(Q)(`@F13B4:完成`)),1)]),_:1})):V(``,!0),e.status===`running`?(G(),U(c,{key:2,disabled:``},{default:R(()=>[Z(q(B(Q)(`@F13B4:升级中`))+`... `,1)]),_:1})):V(``,!0)]),default:R(()=>[W(`div`,{class:x([`upgrade-status`,`is-${e.status}`])},[e.status===`running`?(G(),U(r,{key:0,class:`is-loading`},{default:R(()=>[z(B(h))]),_:1})):e.status===`success`?(G(),U(r,{key:1,color:`#67c23a`},{default:R(()=>[z(B(Nt))]),_:1})):(G(),U(r,{key:2,color:`#f56c6c`},{default:R(()=>[z(B(dt))]),_:1})),e.status===`running`?(G(),Y(`span`,wx,q(B(Q)(`@F13B4:升级中`)),1)):e.status===`success`?(G(),Y(`span`,Tx,q(B(Q)(`@F13B4:升级完成`)),1)):(G(),Y(`span`,Ex,q(B(Q)(`@F13B4:升级失败`)),1))],2),W(`pre`,{ref_key:`logEl`,ref:a,class:`upgrade-log`},q(e.logs||B(Q)(`@F13B4:等待日志输出`)),513)]),_:1},8,[`model-value`,`title`,`show-close`])}}}),[[`__scopeId`,`data-v-d16c258e`]]),Ox={class:`app-version-badge`},kx=`https://github.com/xz333221/zen-gitsync/releases`,Ax=`app-version-check`,jx=3600*1e3,Mx=$(X({__name:`AppVersionBadge`,setup(e){let t=w(null),n=w(!1),r=w(``),i=w(`running`);function a(){try{let e=sessionStorage.getItem(Ax);if(!e)return null;let{at:t,data:n}=JSON.parse(e);return Date.now()-t>jx?null:n}catch{return null}}function o(e){try{sessionStorage.setItem(Ax,JSON.stringify({at:Date.now(),data:e}))}catch{}}async function s(e=!1){let n=a();n&&(t.value=n);try{let n=await Sx();t.value=n,o(n),!e&&n.success&&n.hasUpdate&&J({type:`success`,message:Q(`@F13B4:发现新版本 {version}`,{version:n.latest??``}),duration:4e3})}catch(t){e||J({type:`warning`,message:Q(`@F13B4:检查更新失败 {error}`,{error:t?.message||``})})}}async function c(){if(t.value?.hasUpdate){try{await gt.confirm(Q(`@F13B4:确定要从 {current} 升级到 {latest} 吗?`,{current:t.value.current,latest:t.value.latest}),Q(`@F13B4:升级`),{confirmButtonText:Q(`@F13B4:确定升级`),cancelButtonText:Q(`@F13B4:取消`),type:`info`})}catch{return}r.value=``,i.value=`running`,n.value=!0,await Cx(e=>{if(e.type===`done`){if(i.value=e.code===0?`success`:`failed`,e.code===0)try{sessionStorage.removeItem(Ax)}catch{}}else e.message&&(r.value+=e.message)})}}return mt(()=>{s(!0)}),(e,a)=>{let o=A,s=P;return G(),Y(`div`,Ox,[z(o,{content:B(Q)(`@F13B4:查看更新`),placement:`top`,effect:`dark`,"show-after":300},{default:R(()=>[W(`a`,{href:kx,target:`_blank`,rel:`noopener noreferrer`,class:`version-link`},`v`+q(B(`2.13.8`)),1)]),_:1},8,[`content`]),t.value?.hasUpdate?(G(),U(o,{key:0,content:B(Q)(`@F13B4:发现新版本 {version}`,{version:t.value.latest??``}),placement:`top`,effect:`dark`,"show-after":300},{default:R(()=>[z(s,{class:`upgrade-btn`,size:`small`,type:`primary`,onClick:c},{default:R(()=>[Z(q(B(Q)(`@F13B4:升级`)),1)]),_:1})]),_:1},8,[`content`])):V(``,!0),z(Dx,{modelValue:n.value,"onUpdate:modelValue":a[0]||=e=>n.value=e,logs:r.value,status:i.value,onRetry:c},null,8,[`modelValue`,`logs`,`status`])])}}}),[[`__scopeId`,`data-v-d66ee189`]]),Nx={key:0,class:`branch-info`},Px={class:`branch-wrapper`},Fx={class:`branch-btn`},Ix={class:`branch-btn-name`},Lx={class:`branch-btn-caret`},Rx={class:`branch-popover-inner`},zx={class:`branch-search`},Bx={class:`branch-list`},Vx=[`onClick`],Hx={key:1,class:`branch-item-check-placeholder`},Ux={class:`branch-item-name`},Wx={key:0,class:`branch-empty`},Gx={class:`branch-popover-footer`},Kx={class:`create-branch-content`},qx={class:`form-label`},Jx={class:`form-label`},Yx={class:`dialog-footer`},Xx={class:`footer-actions`},Zx=[`disabled`],Qx=$(X({__name:`BranchSelector`,emits:[`branchChanged`],setup(e,{emit:n}){let r=yn(),o=n,s=w(!1),c=w(``),l=K(()=>{let e=c.value.trim().toLowerCase();return e?r.allBranches.filter(t=>t.toLowerCase().includes(e)):r.allBranches});async function u(e){if(e===r.currentBranch){s.value=!1;return}s.value=!1,await r.changeBranch(e)&&(o(`branchChanged`),r.refreshLog())}let d=w(!1),f=w(``),p=w(``);function h(){s.value=!1,p.value=r.currentBranch,d.value=!0}async function g(){await r.createBranch(f.value,p.value)&&(d.value=!1,f.value=``,o(`branchChanged`))}let v=w(!1);async function y(){if(!v.value){v.value=!0;try{await Promise.all([r.getCurrentBranch(!0),r.getBranchStatus(!0),r.getAllBranches()]),o(`branchChanged`),r.refreshLog()}finally{v.value=!1}}}return(e,n)=>{let o=t,b=Me,S=Ht,C=ft,ee=_,w=m,T=i;return B(r).currentBranch?(G(),Y(`div`,Nx,[W(`div`,Px,[z(S,{visible:s.value,"onUpdate:visible":n[1]||=e=>s.value=e,placement:`top-start`,width:260,trigger:`click`,"popper-class":`branch-popover`,"show-arrow":!1,onShow:n[2]||=e=>c.value=``},{reference:R(()=>[W(`button`,Fx,[z(on,{"icon-class":`git-branch`,"class-name":`branch-btn-icon`}),W(`span`,Ix,q(B(r).currentBranch),1),W(`span`,Lx,[z(o,null,{default:R(()=>n[7]||=[W(`svg`,{viewBox:`0 0 1024 1024`,xmlns:`http://www.w3.org/2000/svg`},[W(`path`,{fill:`currentColor`,d:`M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.776a29.12 29.12 0 0 0 0-41.6 30.592 30.592 0 0 0-42.752 0z`})],-1)]),_:1})])])]),default:R(()=>[W(`div`,Rx,[W(`div`,zx,[z(b,{modelValue:c.value,"onUpdate:modelValue":n[0]||=e=>c.value=e,placeholder:B(Q)(`@F13B4:搜索或签出分支`),size:`small`,clearable:``,autofocus:``},null,8,[`modelValue`,`placeholder`])]),W(`div`,Bx,[(G(!0),Y(H,null,L(l.value,e=>(G(),Y(`div`,{key:e,class:x([`branch-item`,{"is-active":e===B(r).currentBranch}]),onClick:t=>u(e)},[e===B(r).currentBranch?(G(),U(o,{key:0,class:`branch-item-check`},{default:R(()=>[z(B(St))]),_:1})):(G(),Y(`span`,Hx)),z(on,{"icon-class":`git-branch`,"class-name":`branch-item-icon`}),W(`span`,Ux,q(e),1)],10,Vx))),128)),l.value.length===0?(G(),Y(`div`,Wx,q(B(Q)(`@F13B4:没有匹配的分支`)),1)):V(``,!0)]),W(`div`,Gx,[W(`button`,{class:`branch-create-btn`,onClick:h},[z(o,null,{default:R(()=>[z(B(pe))]),_:1}),W(`span`,null,q(B(Q)(`@F13B4:创建新分支`)),1)])])])]),_:1},8,[`visible`]),z(ln,{tooltip:B(Q)(`@CMDCON:刷新`),onClick:y},{default:R(()=>[z(o,{class:x({"is-loading":v.value})},{default:R(()=>[z(B(te))]),_:1},8,[`class`])]),_:1},8,[`tooltip`])]),z(pa,{modelValue:d.value,"onUpdate:modelValue":n[6]||=e=>d.value=e,title:B(Q)(`@F13B4:创建新分支`),size:`small`,"destroy-on-close":!0,"append-to-body":!0,"custom-class":`create-branch-dialog`},{footer:R(()=>[W(`div`,Yx,[W(`div`,Xx,[W(`button`,{type:`button`,class:`dialog-cancel-btn`,onClick:n[5]||=e=>d.value=!1},q(B(Q)(`@F13B4:取消`)),1),W(`button`,{type:`button`,class:`dialog-confirm-btn`,onClick:g,disabled:B(r).isCreatingBranch},[B(r).isCreatingBranch?(G(),U(o,{key:1,class:`is-loading`},{default:R(()=>n[8]||=[W(`svg`,{viewBox:`0 0 1024 1024`,xmlns:`http://www.w3.org/2000/svg`},[W(`path`,{fill:`currentColor`,d:`M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32zm0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32zm448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32zm-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32z`})],-1)]),_:1})):(G(),U(o,{key:0},{default:R(()=>[z(B(St))]),_:1})),W(`span`,null,q(B(Q)(`@F13B4:创建`)),1)],8,Zx)])])]),default:R(()=>[W(`div`,Kx,[z(T,{model:{newBranchName:f.value,selectedBaseBranch:p.value},"label-position":`top`},{default:R(()=>[z(C,null,{label:R(()=>[W(`div`,qx,[z(o,{class:`label-icon`},{default:R(()=>[z(B(pe))]),_:1}),W(`span`,null,q(B(Q)(`@F13B4:新分支名称`)),1)])]),default:R(()=>[z(b,{modelValue:f.value,"onUpdate:modelValue":n[3]||=e=>f.value=e,placeholder:B(Q)(`@F13B4:请输入新分支名称`),class:`modern-input`,size:`large`,onKeyup:ht(g,[`enter`])},null,8,[`modelValue`,`placeholder`])]),_:1}),z(C,null,{label:R(()=>[W(`div`,Jx,[z(o,{class:`label-icon`},{default:R(()=>[z(B(a))]),_:1}),W(`span`,null,q(B(Q)(`@F13B4:基于分支`)),1)])]),default:R(()=>[z(w,{modelValue:p.value,"onUpdate:modelValue":n[4]||=e=>p.value=e,placeholder:B(Q)(`@F13B4:选择基础分支`),class:`modern-select`,size:`large`,style:{width:`100%`}},{default:R(()=>[(G(!0),Y(H,null,L(B(r).allBranches,e=>(G(),U(ee,{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1})]),_:1},8,[`model`])])]),_:1},8,[`modelValue`,`title`])])):V(``,!0)}}}),[[`__scopeId`,`data-v-696d767f`]]),$x=`data:image/svg+xml,%3csvg%20t='1777178793104'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='5903'%20width='200'%20height='200'%3e%3cpath%20d='M895.914667%20467.157333H1024v132.352h-128v129.194667h-63.445333V853.333333H768v-124.629333h-63.445333V853.333333H640v-124.629333H384V853.333333H319.488v-124.629333H256V853.333333H191.445333v-124.629333H128V599.466667H0v-132.266667h128V213.333333h767.914667v253.824zM256%20467.157333h63.488V345.685333H256v121.472z%20m448.426667%200H768V345.685333h-63.573333v121.472z'%20fill='%23D97757'%20p-id='5904'%3e%3c/path%3e%3c/svg%3e`,eS=[`title`],tS={class:`directory-actions flex`},nS=[`src`],rS={class:`claude-menu`,role:`menu`},iS={class:`claude-menu__label`},aS={class:`directory-content`},oS={class:`form-label`},sS={class:`directory-input-group`},cS={class:`form-label`},lS={class:`recent-directories`},uS=[`title`,`onClick`],dS=[`title`],fS={key:0,class:`dir-missing-badge`},pS=[`onClick`],mS={class:`dialog-footer`},hS={class:`footer-actions`},gS=[`disabled`],_S=$(X({__name:`DirectorySelector`,props:{variant:{default:`default`}},emits:[`toggleNpmPanel`,`toggleCustomCmdsPanel`],setup(e){let n=e,r=hn(),a=yn(),{currentLocale:o}=bt(mn()),s=K(()=>r.currentDirectory),c=K(()=>tn(s.value)),l=K(()=>{let e=r.theme;return e===`dark`?!0:e===`light`?!1:window.matchMedia?.(`(prefers-color-scheme: dark)`).matches??!1});async function u(){if(s.value)try{await navigator.clipboard.writeText(s.value),J.success(Q(`@67CE7:已复制目录路径`))}catch{J.error(Q(`@67CE7:复制失败`))}}let d=w(!1),f=w(``),p=w(!1),m=w([]),h=w(!1);function g(){f.value=s.value,d.value=!0,O()}async function _(){try{if(!s.value){J.warning(`当前目录路径为空`);return}let e=await(await fetch(`/api/open_directory`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:s.value})})).json();e.success?J.success(`已在文件管理器中打开目录`):e.error&&J.error(e.error)}catch(e){J.error(`${Q(`@67CE7:打开目录失败: `)}${e.message}`)}}async function v(){try{if(!s.value){J.warning(`当前目录路径为空`);return}let e=await(await fetch(`/api/open-directory-with-vscode`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:s.value})})).json();e.success?J.success(`已用 VSCode 打开目录`):e.error&&J.error(e.error)}catch(e){J.error(`打开失败: ${e.message}`)}}async function y(e){T();try{if(!s.value){J.warning(`当前目录路径为空`);return}let t=await(await fetch(`/api/open-directory-with-claude-code`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:s.value,...e?{permissionMode:e}:{}})})).json();t.success?J.success(t.message||`已用 Claude Code 打开目录`):t.error&&J.error(t.error)}catch(e){J.error(`打开失败: ${e.message}`)}}let b=w(!1),S=w(null);function C(){b.value=!b.value}function ee(e){b.value=!1,e===`default`?y():y(e)}function T(){b.value&&=!1}function E(e){if(!b.value)return;let t=e.target;if(!t||S.value&&S.value.contains(t))return;let n=document.querySelector(`.claude-menu-popover`);n&&n.contains(t)||(b.value=!1)}mt(()=>{document.addEventListener(`mousedown`,E,!0)}),ce(()=>{document.removeEventListener(`mousedown`,E,!0)});async function D(){try{if(!s.value){J.warning(`当前目录路径为空`);return}let e=await(await fetch(`/api/open_terminal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:s.value})})).json();e.success?J.success(`已在终端中打开目录`):e.error&&J.error(e.error)}catch(e){J.error(`${Q(`@67CE7:打开终端失败: `)}${e.message}`)}}async function O(){try{let e=await(await fetch(`/api/recent_directories`)).json();e.success&&Array.isArray(e.directories)&&(m.value=e.directories)}catch(e){console.error(`获取最近目录失败:`,e)}}async function k(e,t){t.stopPropagation();try{(await(await fetch(`/api/remove_recent_directory`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e})})).json()).success&&await O()}catch(e){console.error(`删除目录失败:`,e)}}async function te(e){try{await fetch(`/api/save_recent_directory`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e})})}catch(e){console.error(`保存最近目录失败:`,e)}}async function A(){if(!f.value){J.warning(`目录路径不能为空`);return}try{p.value=!0;let e=await(await fetch(`/api/change_directory`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:f.value})})).json();e.success?(J.success(`已切换工作目录`),d.value=!1,await te(e.directory),await O(),a.log=[],a.fileList=[],a.status={staged:[],unstaged:[],untracked:[]},a.currentPage=1,a.totalCommits=0,r.setCurrentDirectory(e.directory),a.isGitRepo=e.isGitRepo,await r.loadConfig(!0),e.isGitRepo?(await Promise.all([a.getCurrentBranch(),a.getAllBranches(),a.getUserInfo(),a.getRemoteUrl()]),Promise.all([a.refreshLog(),a.fetchStatus()])):(J.warning(Q(`@67CE7:当前目录不是Git仓库,部分功能将不可用`)),a.$reset())):J.error(e.error||`切换目录失败`)}catch(e){J.error(`${Q(`@67CE7:切换目录失败: `)}${e.message}`)}finally{p.value=!1}}async function j(){if(!f.value){J.warning(`目录路径不能为空`);return}try{let e=await(await fetch(`/api/open-new-tab-gui`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:f.value})})).json();e.success||J.error(e.error||`打开失败`)}catch(e){J.error(`打开失败: ${e.message}`)}}let M=K(()=>{if(typeof navigator>`u`)return!1;let e=navigator.userAgentData;return e?.platform?/mac/i.test(e.platform):/mac/i.test(navigator.platform||``)});async function N(e){if(e)try{let t=await(await fetch(`/api/open-new-tab-gui`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e})})).json();t.success||J.error(t.error||`打开失败`)}catch(e){J.error(`打开失败: ${e.message}`)}}function P(e,t){if(t.ctrlKey||t.metaKey){if(!e.exists){J.warning(`目录不存在,无法打开`);return}N(e.path)}else f.value=e.path}async function ne(){h.value=!0}function F(e){f.value=e}return(e,r)=>{let a=t,w=Me,T=ft,E=i;return G(),Y(H,null,[W(`div`,{id:`directory-selector`,class:x([`directory-selector`,[`directory-selector--${n.variant}`]])},[W(`div`,{class:`directory-display`,title:B(Q)(`@67CE7:切换工作目录`)+`
|
|
65
|
-
`+s.value,onClick:g,onContextmenu:Rt(u,[`prevent`])},q(c.value),41,
|
|
66
|
-
`+e.path,onClick:t=>P(e,t)},[z(a,{class:`dir-icon`},{default:R(()=>[z(B(qe))]),_:1}),W(`span`,{class:`dir-path`,title:e.path},q(e.path),9,dS),e.exists?V(``,!0):(G(),Y(`span`,fS,`不存在`)),W(`button`,{type:`button`,class:`dir-delete-btn`,title:`从常用目录中移除`,onClick:t=>k(e.path,t)},r[15]||=[W(`svg`,{viewBox:`0 0 1024 1024`,xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`12`},[W(`path`,{fill:`currentColor`,d:`M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z`})],-1)],8,pS)],10,uS))),128))])]),_:1})):V(``,!0)]),_:1})])]),_:1},8,[`modelValue`,`title`]),z(B(Be),{visible:h.value,mode:`directory`,theme:l.value?`dark`:`light`,locale:B(o),onClose:r[9]||=e=>h.value=!1,onConfirm:r[10]||=e=>{F(e[0]),h.value=!1}},null,8,[`visible`,`theme`,`locale`])],64)}}}),[[`__scopeId`,`data-v-9195f7d5`]]),vS=[`element-loading-text`],yS={class:`settings-tabs`},bS={class:`settings-panels`},xS={class:`settings-panel`},SS={class:`info-section`},CS={class:`info-card`},wS={class:`info-content`},TS={class:`info-title`},ES={class:`info-desc`},DS={class:`settings-section`},OS={class:`section-title`},kS={class:`settings-grid`},AS={class:`setting-row`},jS={class:`setting-label`},MS={class:`settings-section`},NS={class:`section-title`},PS={class:`settings-grid`},FS={class:`setting-row`},IS={class:`setting-label`},LS={class:`settings-section`},RS={class:`section-title`},zS={class:`settings-grid`},BS={class:`setting-row`},VS={class:`setting-label`},HS={class:`setting-row`},US={class:`setting-label`},WS={class:`setting-hint-inline`},GS={class:`setting-row setting-row--full`},KS={class:`setting-label`},qS={class:`console-sub-options`},JS={class:`console-split-row`},YS={class:`setting-hint-block`},XS={class:`setting-row`},ZS={class:`setting-label`},QS={class:`layout-actions`},$S={class:`setting-hint-block`},eC={class:`settings-section`},tC={class:`section-title model-section-title`},nC={class:`model-list`},rC={key:0,class:`model-empty`},iC={class:`model-info`},aC={class:`model-name-row`},oC={class:`model-name`},sC={key:0,class:`model-default-badge`},cC={class:`model-meta`},lC={class:`model-actions`},uC=[`onClick`],dC=[`onClick`],fC=[`onClick`],pC={key:0,class:`ai-model-form-wrapper`},mC={class:`settings-panel`},hC={class:`info-section`},gC={class:`info-card`},_C={class:`info-content`},vC={class:`info-title`},yC={class:`info-desc`},bC={class:`basic-info-section`},xC={class:`basic-info-grid`},SC={class:`settings-section`},CC={class:`section-title`},wC={class:`settings-grid`},TC={class:`setting-row`},EC={class:`setting-label`},DC={class:`setting-row`},OC={class:`setting-label`},kC={class:`setting-row`},AC={class:`setting-label`},jC={class:`setting-row`},MC={class:`setting-label`},NC={class:`setting-row`},PC={class:`setting-label`},FC={class:`settings-panel`},IC={class:`info-section`},LC={class:`info-card`},RC={class:`info-content`},zC={class:`info-title`},BC={class:`info-desc`},VC={class:`settings-section`},HC={class:`section-title`},UC={class:`settings-grid commit-settings-grid`},WC={class:`setting-row`},GC={class:`setting-label`},KC={class:`setting-row`},qC={class:`setting-label`},JC={class:`setting-row`},YC={class:`setting-label`},XC={class:`setting-row`},ZC={class:`setting-label`},QC={class:`setting-row`},$C={class:`setting-label`},ew={class:`setting-row`},tw={class:`setting-label`},nw={class:`settings-panel config-panel`},rw={class:`info-section`},iw={class:`info-card`},aw={class:`info-content`},ow={class:`info-title`},sw={class:`info-desc`},cw={class:`config-json-editor-wrap`},lw={class:`config-panel-actions`},uw={class:`settings-panel`},dw={class:`info-section`},fw={class:`info-card`},pw={class:`info-content`},mw={class:`info-title`},hw={class:`info-desc`},gw={class:`settings-section`},_w={class:`section-title`},vw={class:`settings-grid`},yw={class:`setting-row`},bw={class:`setting-label`},xw={key:0,class:`setting-row setting-row--hint`},Sw={class:`setting-hint`},Cw={class:`user-settings-footer`},ww={class:`footer-actions`},Tw=[`disabled`],Ew=[`disabled`],Dw=$(X({__name:`GitGlobalSettingsDialog`,props:{modelValue:{type:Boolean}},emits:[`update:modelValue`],setup(e,{emit:n}){let r=yn(),a=mn(),o=hn(),s=e,c=n,u=w(!1),d=w(!1),f=w(`general`),p=w(`light`),h=w(`zh-CN`),g=w(!1),v=w([]),y=w(void 0),b=K(()=>o.theme===`light`?`light`:`dark`),S=K(()=>{if(y.value===null)return null;let e=v.value.find(e=>e.id===y.value);return e?{endpoint:e.baseURL,modelName:e.model,displayName:e.name,apiKey:e.apiKey}:null}),C=K(()=>f.value===`config`?!0:f.value===`general`?p.value!==me||h.value!==he||y.value!==void 0:f.value===`git`?j.value!==se||M.value!==ce||re.value!==le||ie.value!==ue||I.value!==de||ae.value!==fe||(oe.value||``).trim()!==pe:f.value===`editor`?g.value!==o.ui.editorAutoSave:!1);function ee(){y.value=null}function E(e){y.value=e.id}function D(){y.value=void 0}async function O(e){let t=y.value===null,n=e.displayName||e.modelName,r=t?`model-${n.toLowerCase().replace(/[^a-z0-9]/g,`-`).slice(0,24)}-${Date.now().toString(36)}`:y.value,i;if(t){let t=v.value.length===0;i=[...v.value,{id:r,name:n,apiKey:e.apiKey,baseURL:e.endpoint,model:e.modelName,isDefault:t}]}else i=v.value.map(t=>t.id===y.value?{...t,name:n,apiKey:e.apiKey||t.apiKey,baseURL:e.endpoint,model:e.modelName}:t);await o.saveModels(i)&&(v.value=i,y.value=void 0,J.success(Q(t?`@42BB9:已添加模型`:`@42BB9:已更新模型`)))}async function k(e){let t=v.value.filter(t=>t.id!==e);await o.saveModels(t)&&(v.value=t,J.success(Q(`@42BB9:已删除模型`)))}async function te(e){let t=v.value.map(t=>({...t,isDefault:t.id===e}));await o.saveModels(t)&&(v.value=t,J.success(Q(`@42BB9:已设置默认模型`)))}let j=w(``),M=w(``),N=w(``),ne=w(!1),re=w(!1),ie=w(`false`),I=w(!1),ae=w(`true`),oe=w(`main`),se=``,ce=``,le=!1,ue=`false`,de=!1,fe=`true`,pe=`main`,me=`light`,he=`zh-CN`;F(()=>s.modelValue,async e=>{if(u.value=e,e){j.value=r.userName,M.value=r.userEmail,N.value=``,p.value=o.theme,h.value=o.locale,v.value=[...o.models],y.value=void 0,g.value=o.ui.editorAutoSave;try{d.value=!0,await ye()}finally{d.value=!1}se=j.value,ce=M.value,le=re.value,ue=ie.value,de=I.value,fe=ae.value,pe=oe.value,me=p.value,he=h.value}},{immediate:!0});function ge(e){c(`update:modelValue`,e)}async function _e(e){try{let t=await(await fetch(`/api/exec`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({command:`git config --global --get ${e}`})})).json();if(t.success)return String(t.stdout||``).trim()}catch{}return``}async function ve(e,t){let n=await(await fetch(`/api/exec`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({command:`git config --global ${e} ${t}`})})).json();if(!n.success)throw Error(n.error||`${Q(`@42BB9:设置 `)}${e}${Q(`@42BB9: 失败`)}`)}async function ye(){let[e,t,n,r,i]=await Promise.all([_e(`push.autoSetupRemote`),_e(`pull.rebase`),_e(`fetch.prune`),_e(`core.autocrlf`),_e(`init.defaultBranch`)]);re.value=(e||`false`).toLowerCase()===`true`;let a=(t||`false`).toLowerCase();ie.value=a===`true`||a===`merges`?a:`false`,I.value=(n||`false`).toLowerCase()===`true`;let o=(r||`true`).toLowerCase();ae.value=o===`true`||o===`input`?o:`false`,oe.value=i||`main`}async function be(){let e=[];try{re.value!==le&&e.push(ve(`push.autoSetupRemote`,re.value?`true`:`false`)),ie.value!==ue&&e.push(ve(`pull.rebase`,ie.value)),I.value!==de&&e.push(ve(`fetch.prune`,I.value?`true`:`false`)),ae.value!==fe&&e.push(ve(`core.autocrlf`,ae.value));let t=(oe.value||``).trim();return t&&t!==pe&&e.push(ve(`init.defaultBranch`,t)),e.length===0?!0:(await Promise.all(e),J.success(Q(`@42BB9:已保存变更的 Git 配置`)),le=re.value,ue=ie.value,de=I.value,fe=ae.value,pe=t||pe,!0)}catch(e){return J.error(e.message),!1}}async function xe(){let e={};if(p.value!==me&&(e.theme=p.value,me=p.value),h.value!==he&&(e.locale=h.value,a.changeLocale(h.value),he=h.value),e.theme!==void 0||e.locale!==void 0){let t=await o.saveGeneralSettings(e);return t&&J.success(Q(`@42BB9:通用设置已保存`)),t}return!0}async function Se(){try{let e=await o.resetUiLayout();window.dispatchEvent(new CustomEvent(`ui-layout-reset`,{detail:{layout:e}})),J.success(Q(`@42BB9:布局比例已重置为默认值`))}catch(e){J.error(`${Q(`@42BB9:重置布局失败: `)}${e.message}`)}}async function we(){if(y.value!==void 0){J.warning(Q(`@42BB9:模型尚未保存,请先保存或取消模型编辑`));return}if(f.value===`config`){await Ee();return}if(f.value===`editor`){o.ui.editorAutoSave=g.value,J.success(Q(`@42BB9:编辑器设置已保存`)),u.value=!1;return}if(!await xe())return;if(!j.value||!M.value){J.warning(Q(`@42BB9:用户名和邮箱不能为空`));return}let e=!0;(j.value!==se||M.value!==ce)&&(e=await r.restoreUserConfig(j.value,M.value),e&&(se=j.value,ce=M.value));let t=await be();e&&t&&(u.value=!1)}async function Te(){if(f.value=`config`,!N.value)try{let e=await(await fetch(`/api/config/check-file-format`)).json();e.success||J.warning(e.message||Q(`@42BB9:配置文件格式可能有问题`)),N.value=JSON.stringify(o.config,null,2)}catch{J.error(Q(`@42BB9:加载配置失败`))}}async function Ee(){let e;try{e=JSON.parse(N.value)}catch(e){J.error(`${Q(`@42BB9:JSON 解析失败: `)}${e.message||e}`);return}try{ne.value=!0;let t=await(await fetch(`/api/config/saveAll`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({config:e})})).json();if(!t.success){J.error(`${Q(`@42BB9:保存失败: `)}${t.error||Q(`@42BB9:未知错误`)}`);return}await o.loadConfig(),J.success(Q(`@42BB9:配置已保存`)),u.value=!1}catch(e){J.error(`${Q(`@42BB9:保存配置失败: `)}${e.message||e}`)}finally{ne.value=!1}}async function De(){try{let e=await(await fetch(`/api/config/open-file`,{method:`POST`})).json();e.success?J.success(Q(`@42BB9:已用系统程序打开配置文件`)):J.error(e.error||Q(`@42BB9:打开文件失败`))}catch(e){J.error(`${Q(`@42BB9:打开文件失败: `)}${e.message||e}`)}}return(e,n)=>{let r=_,s=m,c=T,w=Ce,ne=Wt,F=Ke,se=P,ce=Me,le=ft,ue=t,de=A,fe=i,pe=Ze;return G(),U(pa,{modelValue:u.value,"onUpdate:modelValue":[n[28]||=e=>u.value=e,ge],title:B(Q)(`@42BB9:设置`),size:`large`,"destroy-on-close":!0,"custom-class":`user-settings-dialog`},Kt({default:R(()=>[Yt((G(),Y(`div`,{class:`user-settings-content`,"element-loading-text":B(Q)(`@42BB9:正在加载配置...`),"element-loading-background":`rgba(0, 0, 0, 0.15)`},[W(`div`,yS,[W(`div`,{class:x([`tab-item`,{active:f.value===`general`}]),onClick:n[0]||=e=>f.value=`general`},[W(`span`,null,q(B(Q)(`@42BB9:通用设置`)),1)],2),W(`div`,{class:x([`tab-item`,{active:f.value===`git`}]),onClick:n[1]||=e=>f.value=`git`},[W(`span`,null,q(B(Q)(`@42BB9:Git 全局设置`)),1)],2),W(`div`,{class:x([`tab-item`,{active:f.value===`commit`}]),onClick:n[2]||=e=>f.value=`commit`},[W(`span`,null,q(B(Q)(`@42BB9:提交设置`)),1)],2),W(`div`,{class:x([`tab-item`,{active:f.value===`config`}]),onClick:Te},[W(`span`,null,q(B(Q)(`@42BB9:编辑配置`)),1)],2),W(`div`,{class:x([`tab-item`,{active:f.value===`editor`}]),onClick:n[3]||=e=>f.value=`editor`},[W(`span`,null,q(B(Q)(`@42BB9:编辑器设置`)),1)],2)]),W(`div`,bS,[Yt(W(`div`,xS,[W(`div`,SS,[W(`div`,CS,[W(`div`,wS,[W(`p`,TS,q(B(Q)(`@42BB9:通用配置`)),1),W(`p`,ES,q(B(Q)(`@42BB9:自定义应用的外观和语言`)),1)])])]),W(`div`,DS,[W(`div`,OS,[W(`span`,null,q(B(Q)(`@42BB9:外观`)),1)]),W(`div`,kS,[W(`div`,AS,[W(`label`,jS,q(B(Q)(`@42BB9:主题`)),1),z(s,{modelValue:p.value,"onUpdate:modelValue":n[4]||=e=>p.value=e,class:`modern-input`,size:`default`},{default:R(()=>[z(r,{label:B(Q)(`@42BB9:浅色`),value:`light`},null,8,[`label`]),z(r,{label:B(Q)(`@42BB9:深色`),value:`dark`},null,8,[`label`]),z(r,{label:B(Q)(`@42BB9:跟随系统`),value:`auto`},null,8,[`label`])]),_:1},8,[`modelValue`])])])]),W(`div`,MS,[W(`div`,NS,[W(`span`,null,q(B(Q)(`@42BB9:语言`)),1)]),W(`div`,PS,[W(`div`,FS,[W(`label`,IS,q(B(Q)(`@42BB9:界面语言`)),1),z(s,{modelValue:h.value,"onUpdate:modelValue":n[5]||=e=>h.value=e,class:`modern-input`,size:`default`},{default:R(()=>[z(r,{label:`简体中文`,value:`zh-CN`}),z(r,{label:`English`,value:`en-US`})]),_:1},8,[`modelValue`])])])]),W(`div`,LS,[W(`div`,RS,[W(`span`,null,q(B(Q)(`@42BB9:界面`)),1)]),W(`div`,zS,[W(`div`,BS,[W(`label`,VS,q(B(Q)(`@42BB9:文件列表视图`)),1),z(w,{modelValue:B(o).ui.fileListViewMode,"onUpdate:modelValue":n[6]||=e=>B(o).ui.fileListViewMode=e,size:`default`},{default:R(()=>[z(c,{value:`list`},{default:R(()=>[Z(q(B(Q)(`@42BB9:列表`)),1)]),_:1}),z(c,{value:`tree`},{default:R(()=>[Z(q(B(Q)(`@42BB9:树状`)),1)]),_:1})]),_:1},8,[`modelValue`])]),W(`div`,HS,[W(`label`,US,[Z(q(B(Q)(`@42BB9:文件差异分割`))+` `,1),W(`span`,WS,q(B(o).ui.fileDiffSplitPercent)+`%`,1)]),z(ne,{modelValue:B(o).ui.fileDiffSplitPercent,"onUpdate:modelValue":n[7]||=e=>B(o).ui.fileDiffSplitPercent=e,min:15,max:85,step:1,class:`setting-slider`},null,8,[`modelValue`])]),W(`div`,GS,[W(`label`,KS,q(B(Q)(`@42BB9:命令控制台`)),1),W(`div`,qS,[z(F,{modelValue:B(o).ui.commandConsole.expanded,"onUpdate:modelValue":n[8]||=e=>B(o).ui.commandConsole.expanded=e,"active-text":B(Q)(`@42BB9:默认展开`)},null,8,[`modelValue`,`active-text`]),z(F,{modelValue:B(o).ui.commandConsole.useTerminal,"onUpdate:modelValue":n[9]||=e=>B(o).ui.commandConsole.useTerminal=e,"active-text":B(Q)(`@42BB9:使用终端执行`)},null,8,[`modelValue`,`active-text`]),z(F,{modelValue:B(o).ui.commandConsole.showTerminalSessions,"onUpdate:modelValue":n[10]||=e=>B(o).ui.commandConsole.showTerminalSessions=e,"active-text":B(Q)(`@42BB9:显示终端会话`)},null,8,[`modelValue`,`active-text`]),W(`div`,JS,[W(`span`,YS,q(B(Q)(`@42BB9:控制台高度比例`))+`: `+q(B(o).ui.commandConsole.splitPercent)+`% `,1),z(ne,{modelValue:B(o).ui.commandConsole.splitPercent,"onUpdate:modelValue":n[11]||=e=>B(o).ui.commandConsole.splitPercent=e,min:15,max:85,step:1,class:`setting-slider`},null,8,[`modelValue`])])])]),W(`div`,XS,[W(`label`,ZS,q(B(Q)(`@42BB9:布局比例`)),1),W(`div`,QS,[z(se,{onClick:Se,size:`default`},{default:R(()=>[Z(q(B(Q)(`@42BB9:重置为默认布局`)),1)]),_:1}),W(`span`,$S,q(B(Q)(`@42BB9:恢复默认的左/中/右/上面板比例`)),1)])])])]),W(`div`,eC,[W(`div`,tC,[W(`span`,null,q(B(Q)(`@42BB9:AI 模型配置`)),1),W(`button`,{class:`add-model-btn`,onClick:ee},`+ `+q(B(Q)(`@42BB9:添加模型`)),1)]),W(`div`,nC,[v.value.length===0?(G(),Y(`div`,rC,q(B(Q)(`@42BB9:暂未配置模型`)),1)):V(``,!0),(G(!0),Y(H,null,L(v.value,e=>(G(),Y(`div`,{key:e.id,class:`model-card`},[W(`div`,iC,[W(`div`,aC,[W(`span`,oC,q(e.name),1),e.isDefault?(G(),Y(`span`,sC,q(B(Q)(`@42BB9:默认`)),1)):V(``,!0)]),W(`div`,cC,q(e.model)+` · `+q(e.baseURL),1)]),W(`div`,lC,[e.isDefault?V(``,!0):(G(),Y(`button`,{key:0,class:`model-btn`,onClick:t=>te(e.id)},q(B(Q)(`@42BB9:设为默认`)),9,uC)),W(`button`,{class:`model-btn`,onClick:t=>E(e)},q(B(Q)(`@42BB9:编辑`)),9,dC),W(`button`,{class:`model-btn model-btn--danger`,onClick:t=>k(e.id)},q(B(Q)(`@42BB9:删除`)),9,fC)])]))),128))]),y.value===void 0?V(``,!0):(G(),Y(`div`,pC,[(G(),U(B(l),{key:y.value??`__new__`,"api-base":`/api/ai-model`,initial:S.value,theme:b.value,locale:B(a).currentLocale,onSave:O,onCancel:D},null,8,[`initial`,`theme`,`locale`]))]))])],512),[[Je,f.value===`general`]]),Yt(W(`div`,mC,[W(`div`,hC,[W(`div`,gC,[W(`div`,_C,[W(`p`,vC,q(B(Q)(`@42BB9:全局配置`)),1),W(`p`,yC,q(B(Q)(`@42BB9:这些设置将影响全局 Git 配置,对所有 Git 仓库生效`)),1)])])]),z(fe,{class:`user-form`,"label-width":`auto`,model:{tempUserName:j.value,tempUserEmail:M.value}},{default:R(()=>[W(`div`,bC,[W(`div`,xC,[z(le,{class:`form-item`,label:B(Q)(`@42BB9:用户名`)},{default:R(()=>[z(ce,{modelValue:j.value,"onUpdate:modelValue":n[12]||=e=>j.value=e,placeholder:B(Q)(`@42BB9:请输入 Git 用户名`),class:`modern-input`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),z(le,{class:`form-item`,label:B(Q)(`@42BB9:邮箱地址`)},{default:R(()=>[z(ce,{modelValue:M.value,"onUpdate:modelValue":n[13]||=e=>M.value=e,placeholder:B(Q)(`@42BB9:请输入 Git 邮箱地址`),class:`modern-input`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])])]),W(`div`,SC,[W(`div`,CC,[W(`span`,null,q(B(Q)(`@42BB9:高级配置`)),1)]),W(`div`,wC,[W(`div`,TC,[W(`label`,EC,[Z(q(B(Q)(`@42BB9:自动设置上游`))+` `,1),z(de,{content:B(Q)(`@42BB9:首次 git push 时,自动为当前分支创建远程同名分支并建立跟踪关系(等同于 push -u)。`),placement:`top`,"show-after":200},{default:R(()=>[z(ue,{class:`qmark`},{default:R(()=>[z(B(Ut))]),_:1})]),_:1},8,[`content`])]),z(F,{modelValue:re.value,"onUpdate:modelValue":n[14]||=e=>re.value=e},null,8,[`modelValue`])]),W(`div`,DC,[W(`label`,OC,q(B(Q)(`@42BB9:拉取策略`)),1),z(s,{modelValue:ie.value,"onUpdate:modelValue":n[15]||=e=>ie.value=e,class:`modern-input`,size:`default`},{default:R(()=>[z(r,{label:B(Q)(`@42BB9:merge (默认)`),value:`false`},null,8,[`label`]),z(r,{label:`rebase`,value:`true`}),z(r,{label:B(Q)(`@42BB9:rebase(保留合并)`),value:`merges`},null,8,[`label`])]),_:1},8,[`modelValue`])]),W(`div`,kC,[W(`label`,AC,[Z(q(B(Q)(`@42BB9:自动清理远程分支`))+` `,1),z(de,{content:B(Q)(`@42BB9:在 git fetch 时自动 prune,移除已在远程删除但本地仍保留的远程分支引用。`),placement:`top`,"show-after":200},{default:R(()=>[z(ue,{class:`qmark`},{default:R(()=>[z(B(Ut))]),_:1})]),_:1},8,[`content`])]),z(F,{modelValue:I.value,"onUpdate:modelValue":n[16]||=e=>I.value=e},null,8,[`modelValue`])]),W(`div`,jC,[W(`label`,MC,q(B(Q)(`@42BB9:换行符处理`)),1),z(s,{modelValue:ae.value,"onUpdate:modelValue":n[17]||=e=>ae.value=e,class:`modern-input`,size:`default`},{default:R(()=>[z(r,{label:`true (Windows)`,value:`true`}),z(r,{label:`input`,value:`input`}),z(r,{label:`false`,value:`false`})]),_:1},8,[`modelValue`])]),W(`div`,NC,[W(`label`,PC,[Z(q(B(Q)(`@42BB9:默认初始化分支`))+` `,1),z(de,{content:B(Q)(`@42BB9:新建仓库时(git init)默认创建的分支名,常见为 main 或 master。`),placement:`top`,"show-after":200},{default:R(()=>[z(ue,{class:`qmark`},{default:R(()=>[z(B(Ut))]),_:1})]),_:1},8,[`content`])]),z(ce,{modelValue:oe.value,"onUpdate:modelValue":n[18]||=e=>oe.value=e,placeholder:B(Q)(`@42BB9:例如: main`),class:`modern-input`,size:`default`},null,8,[`modelValue`,`placeholder`])])])])]),_:1},8,[`model`])],512),[[Je,f.value===`git`]]),Yt(W(`div`,FC,[W(`div`,IC,[W(`div`,LC,[W(`div`,RC,[W(`p`,zC,q(B(Q)(`@76872:提交设置`)),1),W(`p`,BC,q(B(Q)(`@76872:这些设置实时生效`)),1)])])]),W(`div`,VC,[W(`div`,HC,[W(`span`,null,q(B(Q)(`@76872:提交格式与行为`)),1)]),W(`div`,UC,[W(`div`,WC,[W(`label`,GC,q(B(Q)(`@76872:标准化提交`)),1),z(F,{modelValue:B(o).isStandardCommit,"onUpdate:modelValue":n[19]||=e=>B(o).isStandardCommit=e},null,8,[`modelValue`])]),W(`div`,KC,[W(`label`,qC,[Z(q(B(Q)(`@76872:跳过钩子检查`))+` `,1),z(de,{content:B(Q)(`@76872:添加 --no-verify 参数`),placement:`top`,"show-after":200},{default:R(()=>[z(ue,{class:`qmark`},{default:R(()=>[z(B(Ut))]),_:1})]),_:1},8,[`content`])]),z(F,{modelValue:B(o).skipHooks,"onUpdate:modelValue":n[20]||=e=>B(o).skipHooks=e},null,8,[`modelValue`])]),W(`div`,JC,[W(`label`,YC,[Z(q(B(Q)(`@76872:回车自动提交`))+` `,1),z(de,{content:B(Q)(`@76872:输入提交信息后按回车直接执行一键推送`),placement:`top`,"show-after":200},{default:R(()=>[z(ue,{class:`qmark`},{default:R(()=>[z(B(Ut))]),_:1})]),_:1},8,[`content`])]),z(F,{modelValue:B(o).autoQuickPushOnEnter,"onUpdate:modelValue":n[21]||=e=>B(o).autoQuickPushOnEnter=e},null,8,[`modelValue`])]),W(`div`,XC,[W(`label`,ZC,[Z(q(B(Q)(`@76872:Push完成自动关闭`))+` `,1),z(de,{content:B(Q)(`@76872:推送成功后自动关闭进度弹窗`),placement:`top`,"show-after":200},{default:R(()=>[z(ue,{class:`qmark`},{default:R(()=>[z(B(Ut))]),_:1})]),_:1},8,[`content`])]),z(F,{modelValue:B(o).autoClosePushModal,"onUpdate:modelValue":n[22]||=e=>B(o).autoClosePushModal=e},null,8,[`modelValue`])]),W(`div`,QC,[W(`label`,$C,[Z(q(B(Q)(`@76872:推送前拉取更新`))+` `,1),z(de,{content:B(Q)(`@76872:推送前自动拉取远程更新,有冲突则停止推送`),placement:`top`,"show-after":200},{default:R(()=>[z(ue,{class:`qmark`},{default:R(()=>[z(B(Ut))]),_:1})]),_:1},8,[`content`])]),z(F,{modelValue:B(o).pullBeforePush,"onUpdate:modelValue":n[23]||=e=>B(o).pullBeforePush=e},null,8,[`modelValue`])]),W(`div`,ew,[W(`label`,tw,[Z(q(B(Q)(`@76872:自动填充默认提交信息`))+` `,1),z(de,{content:B(Q)(`@76872:打开页面或提交完成后自动填充默认提交信息`),placement:`top`,"show-after":200},{default:R(()=>[z(ue,{class:`qmark`},{default:R(()=>[z(B(Ut))]),_:1})]),_:1},8,[`content`])]),z(F,{modelValue:B(o).autoSetDefaultMessage,"onUpdate:modelValue":n[24]||=e=>B(o).autoSetDefaultMessage=e},null,8,[`modelValue`])])])])],512),[[Je,f.value===`commit`]]),Yt(W(`div`,nw,[W(`div`,rw,[W(`div`,iw,[W(`div`,aw,[W(`p`,ow,q(B(Q)(`@42BB9:编辑当前项目的配置文件`)),1),W(`p`,sw,q(B(Q)(`@42BB9:直接编辑 JSON,支持所有配置项`)),1)])])]),W(`div`,cw,[z(ce,{modelValue:N.value,"onUpdate:modelValue":n[25]||=e=>N.value=e,type:`textarea`,spellcheck:`false`,autocomplete:`off`,placeholder:B(Q)(`@42BB9:加载中...`),class:`config-json-editor`},null,8,[`modelValue`,`placeholder`])]),W(`div`,lw,[W(`button`,{type:`button`,class:`dialog-cancel-btn system-config-btn`,onClick:De},q(B(Q)(`@42BB9:打开系统配置文件`)),1)])],512),[[Je,f.value===`config`]]),Yt(W(`div`,uw,[W(`div`,dw,[W(`div`,fw,[W(`div`,pw,[W(`p`,mw,q(B(Q)(`@42BB9:编辑器设置`)),1),W(`p`,hw,q(B(Q)(`@42BB9:自定义编辑器行为`)),1)])])]),W(`div`,gw,[W(`div`,_w,[W(`span`,null,q(B(Q)(`@42BB9:文件编辑`)),1)]),W(`div`,vw,[W(`div`,yw,[W(`label`,bw,q(B(Q)(`@42BB9:自动保存`)),1),z(F,{modelValue:g.value,"onUpdate:modelValue":n[26]||=e=>g.value=e},null,8,[`modelValue`])]),g.value?(G(),Y(`div`,xw,[W(`span`,Sw,q(B(Q)(`@42BB9:失去焦点时自动保存当前文件`)),1)])):V(``,!0)])])],512),[[Je,f.value===`editor`]])])],8,vS)),[[pe,d.value]])]),_:2},[f.value===`commit`?void 0:{name:`footer`,fn:R(()=>[W(`div`,Cw,[n[29]||=W(`div`,null,null,-1),W(`div`,ww,[W(`button`,{type:`button`,class:`dialog-cancel-btn`,onClick:n[27]||=e=>u.value=!1,disabled:d.value},q(C.value?B(Q)(`@42BB9:取消`):B(Q)(`@42BB9:关闭`)),9,Tw),C.value?(G(),Y(`button`,{key:0,type:`button`,class:`dialog-confirm-btn`,onClick:we,disabled:d.value},[z(ue,null,{default:R(()=>[z(B(St))]),_:1}),W(`span`,null,q(f.value===`config`?B(Q)(`@42BB9:保存配置`):B(Q)(`@42BB9:保存设置`)),1)],8,Ew)):V(``,!0)])])]),key:`0`}]),1032,[`modelValue`,`title`])}}}),[[`__scopeId`,`data-v-76fa6110`]]),Ow=Ft(`workbenchStatus`,()=>{let e=w(0);function t(t){e.value=Math.max(0,t|0)}return{runningCount:e,hasRunning:K(()=>e.value>0),setRunning:t}}),kw={class:`activity-bar`},Aw=[`aria-label`,`aria-pressed`],jw=[`aria-label`,`aria-pressed`],Mw=[`aria-label`,`aria-pressed`],Nw=[`aria-label`,`aria-pressed`],Pw=[`title`],Fw=$(X({__name:`ActivityBar`,props:{activeView:{}},emits:[`update:activeView`],setup(e,{emit:t}){let n=e,r=t,i=Ow();function a(e){r(`update:activeView`,e)}return(e,t)=>(G(),Y(`div`,kw,[z(B(A),{content:B(Q)(`@ACTBAR:Git`),placement:`right`,"show-after":300},{default:R(()=>[W(`button`,{class:x([`activity-btn`,{active:n.activeView===`git`}]),onClick:t[0]||=e=>a(`git`),"aria-label":B(Q)(`@ACTBAR:Git`),"aria-pressed":n.activeView===`git`},t[4]||=[W(`svg`,{viewBox:`0 0 24 24`,width:`22`,height:`22`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[W(`circle`,{cx:`6`,cy:`19`,r:`2.2`,fill:`var(--bg-container)`}),W(`circle`,{cx:`18`,cy:`19`,r:`2.2`,fill:`var(--bg-container)`}),W(`circle`,{cx:`18`,cy:`5`,r:`2.2`,fill:`var(--bg-container)`}),W(`line`,{x1:`6`,y1:`16.8`,x2:`6`,y2:`11`}),W(`line`,{x1:`6`,y1:`11`,x2:`18`,y2:`11`}),W(`line`,{x1:`18`,y1:`11`,x2:`18`,y2:`7.2`})],-1)],10,Aw)]),_:1},8,[`content`]),z(B(A),{content:B(Q)(`@ACTBAR:编辑器`),placement:`right`,"show-after":300},{default:R(()=>[W(`button`,{class:x([`activity-btn`,{active:n.activeView===`editor`}]),onClick:t[1]||=e=>a(`editor`),"aria-label":B(Q)(`@ACTBAR:编辑器`),"aria-pressed":n.activeView===`editor`},t[5]||=[W(`svg`,{viewBox:`0 0 24 24`,width:`22`,height:`22`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[W(`path`,{d:`M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8l-5-5z`}),W(`polyline`,{points:`14 3 14 8 19 8`}),W(`polyline`,{points:`9.5 12 7 14.5 9.5 17`}),W(`polyline`,{points:`14.5 12 17 14.5 14.5 17`}),W(`line`,{x1:`13.5`,y1:`11`,x2:`10.5`,y2:`18`})],-1)],10,jw)]),_:1},8,[`content`]),z(B(A),{content:B(Q)(`@ACTBAR:源码地图`),placement:`right`,"show-after":300},{default:R(()=>[W(`button`,{class:x([`activity-btn`,{active:n.activeView===`source-map`}]),onClick:t[2]||=e=>a(`source-map`),"aria-label":B(Q)(`@ACTBAR:源码地图`),"aria-pressed":n.activeView===`source-map`},t[6]||=[W(`svg`,{viewBox:`0 0 24 24`,width:`22`,height:`22`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[W(`circle`,{cx:`12`,cy:`12`,r:`2.2`}),W(`circle`,{cx:`4.5`,cy:`4.5`,r:`1.7`,fill:`var(--bg-container)`}),W(`circle`,{cx:`19.5`,cy:`4.5`,r:`1.7`,fill:`var(--bg-container)`}),W(`circle`,{cx:`4.5`,cy:`19.5`,r:`1.7`,fill:`var(--bg-container)`}),W(`circle`,{cx:`19.5`,cy:`19.5`,r:`1.7`,fill:`var(--bg-container)`}),W(`line`,{x1:`6.3`,y1:`6.3`,x2:`10.1`,y2:`10.1`}),W(`line`,{x1:`17.7`,y1:`6.3`,x2:`13.9`,y2:`10.1`}),W(`line`,{x1:`6.3`,y1:`17.7`,x2:`10.1`,y2:`13.9`}),W(`line`,{x1:`17.7`,y1:`17.7`,x2:`13.9`,y2:`13.9`})],-1)],10,Mw)]),_:1},8,[`content`]),z(B(A),{content:B(Q)(`@ACTBAR:工作台`),placement:`right`,"show-after":300},{default:R(()=>[W(`button`,{class:x([`activity-btn`,{active:n.activeView===`workbench`}]),onClick:t[3]||=e=>a(`workbench`),"aria-label":B(Q)(`@ACTBAR:工作台`),"aria-pressed":n.activeView===`workbench`},[t[7]||=W(`svg`,{viewBox:`0 0 24 24`,width:`22`,height:`22`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[W(`rect`,{x:`3`,y:`4`,width:`18`,height:`16`,rx:`2.2`}),W(`line`,{x1:`9`,y1:`4`,x2:`9`,y2:`20`}),W(`circle`,{cx:`6`,cy:`7.5`,r:`0.7`,fill:`currentColor`,stroke:`none`}),W(`line`,{x1:`4.6`,y1:`11.5`,x2:`7.4`,y2:`11.5`}),W(`line`,{x1:`4.6`,y1:`14.5`,x2:`7.4`,y2:`14.5`}),W(`line`,{x1:`4.6`,y1:`17.5`,x2:`7.4`,y2:`17.5`}),W(`rect`,{x:`11`,y:`6`,width:`8`,height:`5`,rx:`1`}),W(`rect`,{x:`11`,y:`13`,width:`3.7`,height:`5`,rx:`1`}),W(`rect`,{x:`15.3`,y:`13`,width:`3.7`,height:`5`,rx:`1`})],-1),B(i).hasRunning?(G(),Y(`span`,{key:0,class:`wb-running-dot`,title:B(Q)(`@ACTBAR:有任务正在执行`),"aria-hidden":`true`},null,8,Pw)):V(``,!0)],10,Nw)]),_:1},8,[`content`])]))}}),[[`__scopeId`,`data-v-cf557645`]]);function Iw(){let e=window.location.port||`80`;return e===`5173`||e===`4173`||e===`5544`?4752:parseInt(e,10)}var Lw=Iw(),Rw=15e3,zw=Ft(`instances`,()=>{let e=w([]),t=w(null),n=w(null),r=w(null),i=K(()=>t.value==null?null:e.value.find(e=>e.pid===t.value)??null),a=K(()=>t.value==null?e.value:e.value.filter(e=>e.pid!==t.value));async function o(){try{let n=await fetch(`/api/instances`);if(!n.ok)throw Error(`HTTP ${n.status}`);let i=await n.json();i&&`success`in i&&i.success?(e.value=i.instances,t.value=i.currentInstanceId,r.value=null):r.value=`error`in i&&i.error||`未知错误`}catch(e){r.value=e.message}}function s(){if(n.value)return;let t=Ct(`http://localhost:${Lw}`,{transports:[`websocket`,`polling`],reconnection:!0,reconnectionDelay:1e3,reconnectionDelayMax:1e4,reconnectionAttempts:1/0,timeout:2e4,forceNew:!0});n.value=t,t.on(`instances_changed`,t=>{t&&Array.isArray(t.instances)&&(e.value=t.instances)})}function c(){if(n.value){try{n.value.off(`instances_changed`)}catch{}try{n.value.disconnect()}catch{}n.value=null}}function l(){o(),s(),d=window.setInterval(()=>{o()},Rw)}function u(){c(),d!=null&&(window.clearInterval(d),d=null)}let d=null;return{list:e,currentInstanceId:t,currentInstance:i,otherInstances:a,lastError:r,refresh:o,start:l,stop:u}}),Bw={class:`instance-switcher`},Vw={class:`switcher-text`},Hw={class:`instance-row instance-row--current`},Uw={class:`instance-row-main`},Ww={class:`instance-name`},Gw={class:`instance-row-sub`},Kw={class:`instance-path`},qw={class:`instance-row`},Jw={class:`instance-row-main`},Yw={class:`instance-name`},Xw={class:`instance-row-sub`},Zw={class:`instance-path`},Qw={class:`instance-empty`},$w=$(X({__name:`InstanceSwitcher`,setup(e){let n=zw(),r=K(()=>n.list.length>0),i=K(()=>n.list.length),a=K(()=>`${i.value} ${Q(`@INSSW:个实例`)}`);function o(e){e&&window.open(`http://localhost:${e}`,`_blank`,`noopener`)}function c(e){return tn(e.projectPath)||e.projectName}return(e,i)=>r.value?(G(),U(B(se),{key:0,trigger:`click`,placement:`bottom-end`,onCommand:o},{dropdown:R(()=>[z(B(y),{class:`instance-dropdown-menu`},{default:R(()=>[B(n).currentInstance?(G(),U(B(fe),{key:0,disabled:``},{default:R(()=>[W(`div`,Hw,[W(`div`,Uw,[W(`span`,Ww,q(B(n).currentInstance.projectName),1),z(B(s),{size:`small`,type:`primary`,effect:`light`,class:`instance-tag`},{default:R(()=>[Z(q(B(Q)(`@INSSW:当前`)),1)]),_:1})]),W(`div`,Gw,[z(B(s),{size:`small`,effect:`plain`,class:`port-badge`},{default:R(()=>[Z(`:`+q(B(n).currentInstance.port),1)]),_:1}),W(`span`,Kw,q(c(B(n).currentInstance)),1)])])]),_:1})):V(``,!0),(G(!0),Y(H,null,L(B(n).otherInstances,e=>(G(),U(B(fe),{key:e.pid,command:e.port},{default:R(()=>[W(`div`,qw,[W(`div`,Jw,[W(`span`,Yw,q(e.projectName),1),z(B(s),{size:`small`,effect:`plain`,class:`port-badge`},{default:R(()=>[Z(`:`+q(e.port),1)]),_:2},1024)]),W(`div`,Xw,[W(`span`,Zw,q(c(e)),1)])])]),_:2},1032,[`command`]))),128)),B(n).otherInstances.length===0?(G(),U(B(fe),{key:1,disabled:``},{default:R(()=>[W(`span`,Qw,q(B(Q)(`@INSSW:无其他运行中的实例`)),1)]),_:1})):V(``,!0)]),_:1})]),default:R(()=>[W(`span`,Bw,[z(B(t),{class:`switcher-icon`},{default:R(()=>i[0]||=[W(`svg`,{viewBox:`0 0 24 24`,xmlns:`http://www.w3.org/2000/svg`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[W(`rect`,{x:`3`,y:`3`,width:`7`,height:`7`,rx:`1`}),W(`rect`,{x:`14`,y:`3`,width:`7`,height:`7`,rx:`1`}),W(`rect`,{x:`3`,y:`14`,width:`7`,height:`7`,rx:`1`}),W(`rect`,{x:`14`,y:`14`,width:`7`,height:`7`,rx:`1`})],-1)]),_:1}),W(`span`,Vw,q(a.value),1)])]),_:1})):V(``,!0)}}),[[`__scopeId`,`data-v-89d75844`]]),eT=`data:image/svg+xml,%3csvg%20width='200'%20height='200'%20viewBox='0%200%20200%20200'%20xmlns='http://www.w3.org/2000/svg'%3e%3cdefs%3e%3cradialGradient%20id='bgGrad'%20cx='38%25'%20cy='32%25'%20r='70%25'%3e%3cstop%20offset='0%25'%20stop-color='%231e1b4b'/%3e%3cstop%20offset='100%25'%20stop-color='%230d0b1e'/%3e%3c/radialGradient%3e%3clinearGradient%20id='mainGrad'%20x1='0%25'%20y1='0%25'%20x2='0%25'%20y2='100%25'%3e%3cstop%20offset='0%25'%20stop-color='%23c4b5fd'/%3e%3cstop%20offset='100%25'%20stop-color='%237c3aed'/%3e%3c/linearGradient%3e%3clinearGradient%20id='featGrad'%20x1='0%25'%20y1='0%25'%20x2='100%25'%20y2='100%25'%3e%3cstop%20offset='0%25'%20stop-color='%237dd3fc'/%3e%3cstop%20offset='100%25'%20stop-color='%230284c7'/%3e%3c/linearGradient%3e%3cfilter%20id='glow'%20x='-40%25'%20y='-40%25'%20width='180%25'%20height='180%25'%3e%3cfeGaussianBlur%20in='SourceGraphic'%20stdDeviation='2.5'%20result='blur'/%3e%3cfeMerge%3e%3cfeMergeNode%20in='blur'/%3e%3cfeMergeNode%20in='SourceGraphic'/%3e%3c/feMerge%3e%3c/filter%3e%3cfilter%20id='softGlow'%20x='-20%25'%20y='-20%25'%20width='140%25'%20height='140%25'%3e%3cfeGaussianBlur%20in='SourceGraphic'%20stdDeviation='1.5'%20result='blur'/%3e%3cfeMerge%3e%3cfeMergeNode%20in='blur'/%3e%3cfeMergeNode%20in='SourceGraphic'/%3e%3c/feMerge%3e%3c/filter%3e%3c/defs%3e%3c!--%20背景圆%20--%3e%3ccircle%20cx='100'%20cy='100'%20r='96'%20fill='url(%23bgGrad)'/%3e%3c!--%20同步外弧(上半,代表%20sync%20循环)%20--%3e%3cpath%20d='M%20100,20%20A%2080,80%200%201,1%2036,153'%20stroke='rgba(167,139,250,0.18)'%20stroke-width='4.5'%20fill='none'%20stroke-linecap='round'/%3e%3c!--%20同步外弧(下半)%20--%3e%3cpath%20d='M%2036,153%20A%2080,80%200%200,1%20164,153'%20stroke='rgba(56,189,248,0.18)'%20stroke-width='4.5'%20fill='none'%20stroke-linecap='round'/%3e%3c!--%20同步箭头(上)%20--%3e%3cpath%20d='M%2091,17%20L%20100,20%20L%2096,29'%20stroke='rgba(167,139,250,0.55)'%20stroke-width='2.5'%20fill='none'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c!--%20同步箭头(下)%20--%3e%3cpath%20d='M%20163,145%20L%20164,154%20L%20155,151'%20stroke='rgba(56,189,248,0.55)'%20stroke-width='2.5'%20fill='none'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c!--%20主分支竖线%20--%3e%3cline%20x1='76'%20y1='44'%20x2='76'%20y2='156'%20stroke='url(%23mainGrad)'%20stroke-width='5.5'%20stroke-linecap='round'%20filter='url(%23softGlow)'/%3e%3c!--%20特性分支曲线(分出)%20--%3e%3cpath%20d='M%2076,80%20C%2098,80%20130,96%20130,120%20L%20130,140'%20stroke='url(%23featGrad)'%20stroke-width='4.5'%20fill='none'%20stroke-linecap='round'%20filter='url(%23softGlow)'/%3e%3c!--%20特性分支合并回主分支%20--%3e%3cpath%20d='M%20130,140%20C%20130,156%20105,159%2076,155'%20stroke='url(%23featGrad)'%20stroke-width='4.5'%20fill='none'%20stroke-linecap='round'/%3e%3c!--%20主分支节点%20--%3e%3ccircle%20cx='76'%20cy='48'%20r='11'%20fill='%2313103a'%20stroke='%23c4b5fd'%20stroke-width='3'%20filter='url(%23glow)'/%3e%3ccircle%20cx='76'%20cy='48'%20r='5'%20fill='%23ddd6fe'/%3e%3ccircle%20cx='76'%20cy='84'%20r='11'%20fill='%2313103a'%20stroke='%23a78bfa'%20stroke-width='3'/%3e%3ccircle%20cx='76'%20cy='84'%20r='5'%20fill='%23c4b5fd'/%3e%3ccircle%20cx='76'%20cy='120'%20r='11'%20fill='%2313103a'%20stroke='%238b5cf6'%20stroke-width='3'/%3e%3ccircle%20cx='76'%20cy='120'%20r='5'%20fill='%23a78bfa'/%3e%3ccircle%20cx='76'%20cy='155'%20r='11'%20fill='%2313103a'%20stroke='%237c3aed'%20stroke-width='3'%20filter='url(%23glow)'/%3e%3ccircle%20cx='76'%20cy='155'%20r='5'%20fill='%238b5cf6'/%3e%3c!--%20特性分支节点%20--%3e%3ccircle%20cx='130'%20cy='115'%20r='11'%20fill='%2313103a'%20stroke='%2338bdf8'%20stroke-width='3'%20filter='url(%23glow)'/%3e%3ccircle%20cx='130'%20cy='115'%20r='5'%20fill='%237dd3fc'/%3e%3ccircle%20cx='130'%20cy='143'%20r='11'%20fill='%2313103a'%20stroke='%230ea5e9'%20stroke-width='3'%20filter='url(%23glow)'/%3e%3ccircle%20cx='130'%20cy='143'%20r='5'%20fill='%2338bdf8'/%3e%3c/svg%3e`,tT={class:`main-header app-header`},nT={class:`header-left`},rT={href:`https://github.com/xz333221/zen-gitsync`,target:`_blank`,class:`header-brand-link`},iT=[`src`],aT={class:`header-center`},oT={class:`header-info`},sT={key:0,class:`header-actions`},cT={id:`user-info`,class:`user-info-card`},lT={class:`user-name`},uT={class:`user-label`},dT={class:`user-warning`},fT={key:0,class:`config-broken-banner`},pT={class:`banner-left`},mT={class:`banner-text`},hT={class:`banner-title`},gT={class:`banner-detail`},_T={key:1,class:`banner-path`},vT={class:`banner-actions`},yT={key:0,class:`loading-container`},bT={class:`loading-spinner`},xT={class:`loading-text`},ST={key:1,class:`app-body`},CT={class:`view-pane grid-layout`},wT={class:`git-status-panel`},TT={key:0,class:`commit-form-panel`},ET={key:0,class:`user-unconfigured-card`},DT={class:`user-unconfigured-title`},OT={class:`user-unconfigured-desc`},kT={class:`user-unconfigured-actions`},AT={class:`user-unconfigured-divider`},jT={class:`user-unconfigured-code`},MT={key:1,class:`commit-form-panel`},NT={class:`not-git-repo-card`},PT={class:`not-git-repo-title`},FT={class:`not-git-repo-desc`},IT={class:`not-git-repo-tip`},LT={class:`tip-label`},RT={class:`copy-hint`},zT={class:`cmd-console-panel`},BT={class:`log-list-panel`},VT={class:`view-pane editor-pane`},HT={class:`view-pane source-map-pane`},UT={class:`view-pane workbench-pane`},WT={class:`main-footer app-footer`},GT={key:0,class:`footer-model-hint`},KT={class:`footer-model-hint__label`},qT={class:`footer-model-hint__name`},JT=$(X({__name:`App`,setup(e){let n=u(()=>ge(()=>import(`./EditorView-CSUfBR5z.js`),__vite__mapDeps([3,4,0,1,2,5]))),r=u(()=>ge(()=>import(`./SourceMapView-CPsyB1rP.js`),__vite__mapDeps([6,4,0,1,2,7]))),i=u(()=>ge(()=>import(`./WorkbenchView-BBDJOY3C.js`),__vite__mapDeps([8,4,0,1,2,9]))),a=w(``),o=w(null),s=yn(),c=hn(),l=mn(),d=zw(),f=w(!1),p=K(()=>c.currentDirectory),m=K(()=>{let e=c.models.find(e=>e.isDefault);return e?e.name||e.model:``});function h(){let e=tn(p.value);document.title=`${e} - Zen GitSync`}F(p,()=>{h()},{immediate:!0});function g(){c.config&&(a.value=`${Q(`@F13B4:默认提交信息: `)}${c.config.defaultCommitMessage}`)}async function _(){try{let e=await(await fetch(`/api/current_directory`)).json();return c.setCurrentDirectory(e.directory||Q(`@F13B4:未知目录`)),e}catch(e){return console.error(`获取当前目录失败:`,e),{directory:Q(`@F13B4:未知目录`),isGitRepo:!1}}}mt(async()=>{console.log(Q(`@F13B4:---------- 页面初始化开始 ----------`)),d.start();try{let e=await _();c.isLoaded||await c.loadConfig(),g(),s.isGitRepo=e.isGitRepo===!0,s.lastCheckedTime=Date.now(),s.isGitRepo?await Promise.all([s.getCurrentBranch(!0),s.getAllBranches(),s.getUserInfo(),s.getRemoteUrl(),s.getBranchStatus(!0)]):J.warning(Q(`@F13B4:当前目录不是Git仓库,部分功能将不可用`))}catch(e){console.error(`初始化失败:`,e)}finally{f.value=!0,console.log(Q(`@F13B4:---------- 页面初始化完成 ----------`)),setTimeout(()=>{ne()},100)}}),ce(()=>{d.stop()});function v(){ne()}window.addEventListener(`ui-layout-reset`,v),ce(()=>{window.removeEventListener(`ui-layout-reset`,v)});function y(){o.value&&o.value.refreshStatus()}let b=w(`git`);F(b,e=>{e===`git`&&o.value&&s.isGitRepo&&Promise.all([s.fetchStatus(),s.getBranchStatus()]).catch(e=>console.error(`切换到Git视图刷新失败:`,e))});let x=w(!1);function C(){x.value=!0}let ee=!1,T=!1,D=!1,O=0,k=0,te=``,j=``;function M(){let e=document.querySelector(`.grid-layout`);if(!e)return;let t=getComputedStyle(e).gridTemplateColumns.split(` `),n=getComputedStyle(e).gridTemplateRows.split(` `);if(t.length>=5&&n.length>=3){let e=parseFloat(t[0]),r=parseFloat(t[2]),i=parseFloat(t[4]),a=e+r+i,o=e/a,s=r/a,l=i/a,u=parseFloat(n[0]),d=u/(u+parseFloat(n[2]));c.ui.layout={leftRatio:o,midRatio:s,rightRatio:l,topRatio:d},console.log(`${Q(`@F13B4:布局比例已保存 - 左侧: `)}${(o*100).toFixed(0)}${Q(`@F13B4:%, 中间: `)}${(s*100).toFixed(0)}${Q(`@F13B4:%, 右侧: `)}${(l*100).toFixed(0)}${Q(`@F13B4:%, 上方: `)}${(d*100).toFixed(0)}%`)}}function ne(){let e=document.querySelector(`.grid-layout`);if(!e)return;let t=c.ui.layout,n=Number.isFinite(t?.leftRatio)?t.leftRatio:null,r=Number.isFinite(t?.midRatio)?t.midRatio:null,i=Number.isFinite(t?.rightRatio)?t.rightRatio:null,a=Number.isFinite(t?.topRatio)?t.topRatio:null;if(n!=null&&r!=null&&i!=null?e.style.gridTemplateColumns=`${n}fr 8px ${r}fr 8px ${i}fr`:e.style.gridTemplateColumns=`2fr 8px 3fr 8px 3fr`,a!=null){let t=1-a;e.style.gridTemplateRows=`${a}fr 8px ${t}fr`}}function re(e){ee=!0,O=e.clientX;let t=document.querySelector(`.grid-layout`);te=getComputedStyle(t).gridTemplateColumns,document.getElementById(`v-resizer`)?.classList.add(`active`),document.addEventListener(`mousemove`,ie),document.addEventListener(`mouseup`,oe),e.preventDefault()}function ie(e){if(!ee)return;let t=document.querySelector(`.grid-layout`),n=e.clientX-O,r=te.split(` `);if(r.length>=5){let e=parseFloat(r[0]),i=parseFloat(r[2]),a=parseFloat(r[4]),o=e+i+a,s=(e+n/t.clientWidth*o)/o,c=1-s,l=i/(i+a),u=a/(i+a),d=.08,f=.4;s<d?t.style.gridTemplateColumns=`${d}fr 8px ${(1-d)*l}fr 8px ${(1-d)*u}fr`:s>f?t.style.gridTemplateColumns=`${f}fr 8px ${(1-f)*l}fr 8px ${(1-f)*u}fr`:t.style.gridTemplateColumns=`${s}fr 8px ${c*l}fr 8px ${c*u}fr`}}function I(e){T=!0,O=e.clientX;let t=document.querySelector(`.grid-layout`);te=getComputedStyle(t).gridTemplateColumns,document.getElementById(`v-resizer-2`)?.classList.add(`active`),document.addEventListener(`mousemove`,ae),document.addEventListener(`mouseup`,oe),e.preventDefault()}function ae(e){if(!T)return;let t=document.querySelector(`.grid-layout`),n=e.clientX-O,r=te.split(` `);if(r.length>=5){let e=parseFloat(r[0]),i=parseFloat(r[2]),a=parseFloat(r[4]),o=e+i+a,s=(a-n/t.clientWidth*o)/o,c=1-s,l=e/(e+i),u=i/(e+i),d=.1,f=.5;s<d?t.style.gridTemplateColumns=`${(1-d)*l}fr 8px ${(1-d)*u}fr 8px ${d}fr`:s>f?t.style.gridTemplateColumns=`${(1-f)*l}fr 8px ${(1-f)*u}fr 8px ${f}fr`:t.style.gridTemplateColumns=`${c*l}fr 8px ${c*u}fr 8px ${s}fr`}}function oe(){ee=!1,T=!1,document.getElementById(`v-resizer`)?.classList.remove(`active`),document.getElementById(`v-resizer-2`)?.classList.remove(`active`),document.removeEventListener(`mousemove`,ie),document.removeEventListener(`mousemove`,ae),document.removeEventListener(`mouseup`,oe),M()}function L(e){D=!0,k=e.clientY;let t=document.querySelector(`.grid-layout`);j=getComputedStyle(t).gridTemplateRows,document.getElementById(`h-resizer`)?.classList.add(`active`),document.addEventListener(`mousemove`,se),document.addEventListener(`mouseup`,le),e.preventDefault()}function se(e){if(!D)return;let t=document.querySelector(`.grid-layout`),n=e.clientY-k,r=j.split(` `);if(r.length>=3){let e=parseFloat(r[0]),i=e+parseFloat(r[2]),a=(e+n/t.clientHeight*i)/i,o=1-a,s=.2,c=.8;a<s?t.style.gridTemplateRows=`${s}fr 8px ${1-s}fr`:a>c?t.style.gridTemplateRows=`${c}fr 8px ${1-c}fr`:t.style.gridTemplateRows=`${a}fr 8px ${o}fr`}}function le(){D=!1,document.getElementById(`h-resizer`)?.classList.remove(`active`),document.removeEventListener(`mousemove`,se),document.removeEventListener(`mouseup`,le),M()}function ue(){navigator.clipboard.writeText(`git init`).then(()=>{J.success(Q(`@F13B4:已复制`))}).catch(()=>{J.error(`复制失败`)})}return(e,a)=>{let u=S;return G(),U(B(Xt),{locale:B(l).elementPlusLocale},{default:R(()=>[W(`header`,tT,[W(`div`,nT,[W(`a`,rT,[W(`img`,{src:B(eT),alt:`Zen GitSync Logo`,class:`logo`},null,8,iT),a[3]||=W(`h1`,null,`Zen GitSync`,-1)])]),W(`div`,aT,[z(_S,{variant:`header`})]),W(`div`,oT,[B(s).isGitRepo?(G(),Y(`div`,sT)):V(``,!0),z($w),W(`div`,cT,[B(s).userName?(G(),U(B(A),{key:0,content:B(s).userEmail||B(s).userName,placement:`bottom`,effect:`dark`,"show-after":200},{default:R(()=>[W(`span`,lT,q(B(s).userName),1)]),_:1},8,[`content`])):(G(),Y(H,{key:1},[W(`span`,uT,q(B(Q)(`@F13B4:用户: `)),1),W(`span`,dT,q(B(Q)(`@F13B4:未配置`)),1)],64)),z(B(A),{content:B(Q)(`@F13B4:用户设置`),placement:`bottom`,effect:`dark`,"show-after":200},{default:R(()=>[W(`button`,{class:`modern-btn btn-icon-28`,onClick:C},[z(B(t),{class:`btn-icon`},{default:R(()=>[z(B(E))]),_:1})])]),_:1},8,[`content`])])])]),B(c).hasConfigLoadError?(G(),Y(`div`,fT,[W(`div`,pT,[z(B(t),{class:`banner-icon`},{default:R(()=>[z(B(Ne))]),_:1}),W(`div`,mT,[W(`span`,hT,q(B(Q)(`@CFGERR:系统配置文件有问题`)),1),B(c).configLoadError?(G(),U(B(A),{key:0,content:B(c).configLoadError,placement:`bottom`,effect:`dark`,"show-after":200},{default:R(()=>[W(`span`,gT,q(B(Q)(`@CFGERR:查看原因`)),1)]),_:1},8,[`content`])):V(``,!0),B(c).configFilePath?(G(),Y(`span`,_T,q(B(c).configFilePath),1)):V(``,!0)])]),W(`div`,vT,[z(B(P),{size:`small`,type:`warning`,onClick:a[0]||=e=>B(c).openSystemConfigFile()},{default:R(()=>[Z(q(B(Q)(`@CFGERR:打开系统配置文件`)),1)]),_:1})])])):V(``,!0),W(`main`,{class:`main-container`,style:N({top:B(c).hasConfigLoadError?`104px`:`64px`})},[f.value?(G(),Y(`div`,ST,[z(Fw,{activeView:b.value,"onUpdate:activeView":a[1]||=e=>b.value=e},null,8,[`activeView`]),Yt(W(`div`,CT,[W(`div`,wT,[z(nd,{ref_key:`gitStatusRef`,ref:o,"initial-directory":p.value},null,8,[`initial-directory`])]),W(`div`,{class:`vertical-resizer`,id:`v-resizer`,onMousedown:re},null,32),B(s).isGitRepo?(G(),Y(`div`,TT,[!B(s).userName||!B(s).userEmail?(G(),Y(`div`,ET,[a[9]||=W(`div`,{class:`user-unconfigured-icon`},[W(`svg`,{viewBox:`0 0 24 24`,width:`40`,height:`40`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[W(`circle`,{cx:`12`,cy:`8`,r:`4`}),W(`path`,{d:`M4 20c0-4 3.6-7 8-7s8 3 8 7`}),W(`path`,{d:`M17 13.5l1.5 1.5 3-3`,stroke:`var(--color-warning)`,"stroke-width":`2`})])],-1),W(`h2`,DT,`Git `+q(B(Q)(`@F13B4:用户未配置`)),1),W(`p`,OT,q(B(Q)(`@F13B4:请先配置Git用户信息才能进行提交操作。`)),1),W(`div`,kT,[W(`button`,{class:`user-unconfigured-primary-btn`,onClick:C},[a[5]||=W(`svg`,{viewBox:`0 0 24 24`,width:`15`,height:`15`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[W(`path`,{d:`M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`}),W(`path`,{d:`M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z`})],-1),Z(` `+q(B(Q)(`@F13B4:立即配置`)),1)])]),W(`div`,AT,[W(`span`,null,q(B(Q)(`@F13B4:或者使用命令行配置:`)),1)]),W(`div`,jT,[a[6]||=W(`span`,{class:`code-prompt`},`$`,-1),Z(` git config `+q(B(Q)(`@F13B4:--global user.name "您的用户名"`)),1),a[7]||=W(`br`,null,null,-1),a[8]||=W(`span`,{class:`code-prompt`},`$`,-1),Z(` git config `+q(B(Q)(`@F13B4:--global user.email "您的邮箱"`)),1)])])):(G(),U(Tm,{key:1}))])):(G(),Y(`div`,MT,[W(`div`,NT,[a[11]||=W(`div`,{class:`not-git-repo-icon`},[W(`svg`,{viewBox:`0 0 24 24`,width:`48`,height:`48`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[W(`path`,{d:`M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v4`}),W(`path`,{d:`M14 2v6h6`}),W(`path`,{d:`M2 15h10`}),W(`path`,{d:`M5 12l-3 3 3 3`}),W(`path`,{d:`M9 12l3 3-3 3`})])],-1),W(`h2`,PT,`Git`+q(B(Q)(`@F13B4:仓库初始化`)),1),W(`p`,FT,q(B(Q)(`@F13B4:当前目录不是Git仓库,请先初始化Git仓库或切换到Git仓库目录。`)),1),W(`div`,IT,[W(`span`,LT,q(B(Q)(`@F13B4:可以使用以下命令初始化仓库:`)),1),W(`div`,{class:`not-git-repo-code`,onClick:ue},[a[10]||=W(`code`,null,`git init`,-1),W(`span`,RT,q(B(Q)(`@F13B4:点击复制`)),1)])])])])),W(`div`,{class:`horizontal-resizer`,id:`h-resizer`,onMousedown:L},null,32),W(`div`,zT,[z(yx)]),W(`div`,{class:`vertical-resizer-2`,id:`v-resizer-2`,onMousedown:I},null,32),W(`div`,BT,[z(oh)])],512),[[Je,b.value===`git`]]),(G(),U(nt,null,[Yt(W(`div`,VT,[z(B(n))],512),[[Je,b.value===`editor`]])],1024)),(G(),U(nt,null,[Yt(W(`div`,HT,[z(B(r))],512),[[Je,b.value===`source-map`]])],1024)),(G(),U(nt,null,[Yt(W(`div`,UT,[z(B(i))],512),[[Je,b.value===`workbench`]])],1024))])):(G(),Y(`div`,yT,[z(u,{class:`loading-card`},{default:R(()=>[W(`div`,bT,[z(B(t),{class:`is-loading`},{default:R(()=>a[4]||=[W(`svg`,{viewBox:`0 0 1024 1024`,xmlns:`http://www.w3.org/2000/svg`},[W(`path`,{fill:`currentColor`,d:`M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32zm0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32zm448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32zm-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32zM195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248zM828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0zm-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0z`})],-1)]),_:1})]),W(`div`,xT,q(B(Q)(`@F13B4:加载中...`)),1)]),_:1})]))],4),W(`footer`,WT,[z(Qx,{onBranchChanged:y}),m.value?(G(),Y(`div`,GT,[W(`span`,KT,q(B(Q)(`@F13B4:默认模型`)),1),W(`span`,qT,q(m.value),1)])):V(``,!0),z(xx),z(Mx)]),z(Dw,{modelValue:x.value,"onUpdate:modelValue":a[2]||=e=>x.value=e},null,8,[`modelValue`])]),_:1},8,[`locale`])}}}),[[`__scopeId`,`data-v-0d853089`]]);if(typeof window<`u`){function e(){var e=document.body,t=document.getElementById(`__svg__icons__dom__`);t||(t=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`),t.style.position=`absolute`,t.style.width=`0`,t.style.height=`0`,t.id=`__svg__icons__dom__`,t.setAttribute(`xmlns`,`http://www.w3.org/2000/svg`),t.setAttribute(`xmlns:link`,`http://www.w3.org/1999/xlink`)),t.innerHTML=`<symbol viewBox="0 0 1024 1024" id="icon-ai-commit"><path d="M380 180q0 340 340 340-340 0-340 340 0-340-340-340 340 0 340-340ZM800 40q0 155 155 155-155 0-155 155 0-155-155-155 155 0 155-155ZM880 606q0 72 72 72-72 0-72 72 0-72-72-72 72 0 72-72Z" fill="currentColor" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-claudecode-color"><path d="M895.915 467.157H1024V599.51H896v129.195h-63.445v124.63H768v-124.63h-63.445v124.63H640v-124.63H384v124.63h-64.512v-124.63H256v124.63h-64.555v-124.63H128V599.467H0V467.2h128V213.333h767.915v253.824zm-639.915 0h63.488V345.685H256v121.472zm448.427 0H768V345.685h-63.573v121.472z" fill="#D97757" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-command-list"><path d="M909.061 185.47H585.143c-11.494 0-20.898-9.405-20.898-20.899s9.404-20.898 20.898-20.898H909.06c11.494 0 20.898 9.405 20.898 20.898s-9.404 20.898-20.898 20.898zm0 229.877H585.143c-11.494 0-20.898-9.404-20.898-20.898s9.404-20.898 20.898-20.898H909.06c11.494 0 20.898 9.404 20.898 20.898s-9.404 20.898-20.898 20.898zM909.061 640H585.143c-11.494 0-20.898-9.404-20.898-20.898s9.404-20.898 20.898-20.898H909.06c11.494 0 20.898 9.404 20.898 20.898S920.555 640 909.061 640zm0 229.878H585.143c-11.494 0-20.898-9.405-20.898-20.898s9.404-20.898 20.898-20.898H909.06c11.494 0 20.898 9.404 20.898 20.898s-9.404 20.898-20.898 20.898zM391.837 470.204H177.633c-45.976 0-83.592-37.616-83.592-83.592V172.408c0-45.975 37.616-83.592 83.592-83.592h214.204c45.975 0 83.592 37.617 83.592 83.592v214.204c0 45.976-37.617 83.592-83.592 83.592zM177.633 130.612c-22.988 0-41.796 18.808-41.796 41.796v214.204c0 22.988 18.808 41.796 41.796 41.796h214.204c22.987 0 41.796-18.808 41.796-41.796V172.408c0-22.988-18.809-41.796-41.796-41.796H177.633z" fill="currentColor" class="custom-cursor-on-hover" /><path d="M391.837 924.735H177.633c-45.976 0-83.592-37.617-83.592-83.592V626.939c0-45.976 37.616-83.592 83.592-83.592h214.204c45.975 0 83.592 37.616 83.592 83.592v214.204c0 45.975-37.617 83.592-83.592 83.592zM177.633 585.143c-22.988 0-41.796 18.808-41.796 41.796v214.204c0 22.988 18.808 41.796 41.796 41.796h214.204c22.987 0 41.796-18.808 41.796-41.796V626.939c0-22.988-18.809-41.796-41.796-41.796H177.633z" fill="currentColor" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-custom-cmd"><path fill="currentColor" d="M785.7 163.4c-10.8-21.7-33-35.4-57.2-35.4H295.6c-24.2 0-46.4 13.7-57.2 35.4L128 384v448c0 35.3 28.7 64 64 64h640c35.3 0 64-28.7 64-64V384L785.7 163.4zM728.4 192l96 192H544V192h184.4zm-432.8 0H480v192H199.6l96-192zM832 832H192V448h640v384z" /><path fill="currentColor" d="M512 704h192v64H512zm-192 21.3 42.7 42.7 85.3-85.3 42.7-42.7-42.7-42.7-85.3-85.3-42.7 42.7 85.3 85.3z" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-git-branch"><path d="M938.667 256c0-93.867-76.8-170.667-170.667-170.667S597.333 162.133 597.333 256c0 76.8 55.467 145.067 128 162.133C708.267 576 580.267 704 422.4 721.067c-17.067-59.734-64-106.667-119.467-119.467V128c0-25.6-17.066-42.667-42.666-42.667S213.333 102.4 213.333 128v473.6c-72.533 17.067-128 85.333-128 166.4 0 93.867 76.8 170.667 170.667 170.667 81.067 0 145.067-55.467 166.4-128C627.2 793.6 793.6 627.2 810.667 422.4c72.533-21.333 128-85.333 128-166.4zM256 853.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zm512-512c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z" /></symbol><symbol class="icon" viewBox="0 0 1305 1024" id="icon-git-fetch"><path d="M960.795 911.159H942.21V809.744h18.585a192.352 192.352 0 1 0 0-384.704h-76.481l-.46-50.248a242.218 242.218 0 0 0-484.512 0l-.459 50.248h-73.422a192.352 192.352 0 1 0 0 384.704h28.451v101.415h-28.451a293.843 293.843 0 0 1-23.48-586.616 343.786 343.786 0 0 1 679.388 0 293.767 293.767 0 0 1-20.65 586.845zm0 0" fill="currentColor" /><path d="M590.623 486.073h101.415v432.199H590.623z" fill="currentColor" /><path d="M641.101 990.394 414.103 803.166l64.55-78.24 162.984 134.149 164.589-134.838 64.244 78.47zm0 0" fill="currentColor" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-git-merge"><path d="M768 597.333c-76.8 0-145.067 55.467-162.133 128C448 708.267 320 580.267 302.933 422.4c72.534-21.333 128-85.333 128-162.133 0-93.867-76.8-170.667-170.666-170.667S85.333 162.133 85.333 256c0 81.067 55.467 145.067 128 166.4V896c0 25.6 17.067 42.667 42.667 42.667S298.667 921.6 298.667 896V640c72.533 93.867 179.2 157.867 302.933 170.667C618.667 883.2 686.933 942.933 768 942.933c93.867 0 170.667-76.8 170.667-170.666S861.867 597.333 768 597.333zM170.667 256c0-46.933 38.4-85.333 85.333-85.333s85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333-85.333-38.4-85.333-85.333zM768 853.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-git-pull-request-with-stash"><path d="M338.842 297.09c16.989-23.36 25.483-50.967 25.483-82.821 2.124-42.472-12.211-78.574-43.003-108.304S254.96 62.431 214.611 64.554c-31.854 0-59.992 8.494-84.414 25.483s-42.472 39.287-54.152 66.894-14.865 56.276-9.556 86.006 18.582 55.214 39.818 76.45c21.236 21.236 46.72 35.04 76.45 41.41v302.615c-29.731 6.371-55.214 20.174-76.45 41.411-21.236 21.236-34.509 46.72-39.818 76.45-5.309 29.731-2.124 58.399 9.556 86.006s29.731 49.905 54.152 66.894 52.029 25.483 82.821 25.483 58.93-8.494 84.414-25.483c25.483-16.989 44.596-39.287 57.338-66.894 6.371-19.113 9.556-39.287 9.556-60.523 0-29.731-8.494-57.338-25.483-82.821-21.236-33.978-52.029-55.214-92.377-63.708v-299.43l25.483-6.371c27.606-12.74 49.904-31.853 66.893-57.336zm-44.596 471.443c8.494 14.865 12.211 30.261 11.149 46.189-1.062 15.927-6.371 31.323-15.927 46.189-9.556 14.865-22.829 25.483-39.818 31.854s-33.978 7.964-50.967 4.778-32.385-11.149-46.189-23.891-21.767-27.607-23.891-44.596c-6.371-27.607-.531-52.559 17.52-74.857s40.88-33.447 68.487-33.447c16.989 0 32.385 4.247 46.189 12.742 13.804 8.494 24.953 20.173 33.447 35.039zM166.829 287.534c-14.865-10.618-26.014-24.422-33.447-41.411-7.433-16.989-9.556-33.978-6.371-50.967 3.185-16.989 11.149-31.854 23.891-44.596s28.138-21.236 46.189-25.483 35.571-2.655 52.559 4.778c16.989 7.433 30.262 18.051 39.818 31.854 9.556 13.803 14.865 29.2 15.927 46.189 1.062 16.989-2.655 32.916-11.149 47.781-8.494 14.865-19.643 26.545-33.447 35.04-13.804 8.494-29.2 12.742-46.189 12.742s-32.915-5.309-47.781-15.927zm614.787 44.596c2.124-19.113-1.062-38.225-9.556-57.338-10.618-27.607-28.669-49.905-54.152-66.894s-53.09-25.483-82.821-25.483h-111.49l76.45-76.45-44.596-41.411-127.417 127.417v41.411l127.417 127.417 44.596-41.41-76.45-76.45h111.49c23.36 0 44.065 8.494 62.116 25.483 18.051 16.989 27.076 38.225 27.076 63.708v89.192h57.338V332.13zm0 449.145H960v-60.523H781.616V542.368h-60.523v178.384H542.709v60.523h178.384v178.384h60.523V781.275z" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-git-pull-request"><path d="M810.667 601.6V341.333c0-72.533-55.467-128-128-128h-128C529.067 213.333 512 230.4 512 256s17.067 42.667 42.667 42.667h128c25.6 0 42.666 17.066 42.666 42.666V601.6c-72.533 17.067-128 85.333-128 166.4 0 93.867 76.8 170.667 170.667 170.667S938.667 861.867 938.667 768c0-81.067-55.467-145.067-128-166.4zM768 853.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zm-512-768c-93.867 0-170.667 76.8-170.667 170.667 0 81.067 55.467 145.067 128 166.4V896c0 25.6 17.067 42.667 42.667 42.667S298.667 921.6 298.667 896V422.4c72.533-17.067 128-85.333 128-166.4 0-93.867-76.8-170.667-170.667-170.667zm0 256c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-git-reset"><path d="M320 704h224v64H320zm0-128h384v64H320zm0-128h384v64H320z" /><path d="M960 595.1C960 399 805.3 239 611.3 230.5v-.4H186.5l120.8-120.8L262.1 64 64 262.1l45.3 45.3 152.9 152.9 45.3-45.3-121-120.9h408.6c40.7 0 80.1 7.9 117.1 23.6 35.8 15.2 68 36.9 95.7 64.5 27.7 27.7 49.4 59.8 64.5 95.7C888.1 515 896 554.4 896 595.1s-7.9 80.1-23.6 117.1c-15.2 35.8-36.9 68-64.5 95.7-27.7 27.7-59.8 49.4-95.7 64.5-37.1 15.7-76.5 23.6-117.1 23.6H120.4v64h474.7C796.6 960 960 796.6 960 595.1z" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-git-stash"><path d="m310.229 265.771-47.878 44.458 225.71 225.71h44.458l225.71-225.71-44.458-44.458-170.992 167.573V64h-64.977v369.344L310.229 265.771zm44.458 311.206c6.84 36.478 25.079 66.687 54.718 90.626 29.639 23.939 63.267 35.908 100.885 35.908s71.247-11.969 100.886-35.908c29.639-23.939 49.018-54.148 58.137-90.626h225.71l34.198 30.779v321.466L895.023 960H125.557l-30.779-30.779V607.756l30.779-30.779h229.13zm359.084 61.557c-18.239 38.758-45.598 70.107-82.076 94.046-36.478 23.939-76.947 35.908-121.405 35.908s-84.926-11.969-121.405-35.908c-36.478-23.939-63.837-55.288-82.076-94.046H159.756v256.489h704.489V638.534H713.771z" fill="currentColor" /></symbol><symbol class="icon" viewBox="0 0 1117 1024" id="icon-muti-choose"><path d="M390.23799999999994 68.402h677.328q49.97 0 49.97 49.97v-.136q0 49.97-49.97 49.97H390.238q-49.97 0-49.97-49.97v.136q0-49.97 49.97-49.97ZM390.23799999999994 474.854h677.328q49.97 0 49.97 49.97v-.137q0 49.97-49.97 49.97H390.238q-49.97 0-49.97-49.97v.137q0-49.97 49.97-49.97ZM390.23799999999994 881.442h677.328q49.97 0 49.97 49.97v-.137q0 49.97-49.97 49.97H390.238q-49.97 0-49.97-49.97v.137q0-49.97 49.97-49.97ZM301.22 10.65A36.044 36.044 0 0 0 275.689 0a35.908 35.908 0 0 0-25.532 10.65l-127.11 127.382-61.302-61.848a36.044 36.044 0 0 0-25.531-10.65 36.18 36.18 0 0 0-25.531 61.713l87.106 87.516a35.771 35.771 0 0 0 25.258 10.513 35.225 35.225 0 0 0 25.395-10.65L301.22 61.576a36.317 36.317 0 0 0 0-50.927zm0 412.595a35.908 35.908 0 0 0-25.531-10.513 35.771 35.771 0 0 0-25.532 10.513l-127.11 127.247-61.302-61.849a36.044 36.044 0 0 0-25.531-10.786 36.18 36.18 0 0 0-25.531 61.849l87.106 87.38a35.771 35.771 0 0 0 50.926 0L301.22 474.033a36.454 36.454 0 0 0 0-50.789zm0 386.109a36.044 36.044 0 0 0-25.531-10.65 35.908 35.908 0 0 0-25.532 10.65L123.047 936.6l-61.302-61.712a36.044 36.044 0 0 0-25.531-10.65 36.18 36.18 0 0 0-25.531 61.85l87.106 87.379a35.771 35.771 0 0 0 50.926 0L301.22 860.553a36.317 36.317 0 0 0 0-50.926z" fill="currentColor" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-npm"><path d="M128 128v768h768V128H128m128 128h512v512H640V384H512v384H256V256z" fill="#D14748" /></symbol><symbol viewBox="0 0 1024 1024" id="icon-pin"><path fill="currentColor" d="M128 256h768v64H128zM512 384 256 640l45.248 45.248L480 506.496V896h64V506.496l178.752 178.752L768 640z" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-remote-repo"><path d="M458.64 119.072a84.176 84.176 0 0 1 106.72 0l366.912 300.4a32 32 0 0 1-40.544 49.52l-366.912-300.4a20.176 20.176 0 0 0-25.632 0l-366.912 300.4a32 32 0 1 1-40.544-49.52l366.912-300.4zM304.32 415.184c0-27.2 22-49.568 49.472-49.568h96.048a49.504 49.504 0 0 1 49.456 49.568v96.544c0 27.2-21.984 49.552-49.456 49.552h-96.08a49.504 49.504 0 0 1-49.472-49.552V415.2zm64 14.432v67.68h66.976v-67.68H368.32zm-162.976 36.96a32 32 0 0 1 32 32v307.2c0 21.28 17.12 38.224 37.856 38.224h471.52a38.032 38.032 0 0 0 37.84-38.224v-307.2a32 32 0 1 1 64 0v307.2C848.56 862.08 803.12 908 746.704 908H275.2c-56.4 0-101.856-45.92-101.856-102.224v-307.2a32 32 0 0 1 32-32zm98.976 168.048c0-27.216 22-49.568 49.472-49.568h96.048a49.504 49.504 0 0 1 49.456 49.568v96.544c0 27.2-21.984 49.552-49.456 49.552h-96.08a49.504 49.504 0 0 1-49.472-49.552v-96.544zm64 14.432v67.68h66.976v-67.68H368.32zm154.288-14.432c0-27.216 21.984-49.568 49.472-49.568h96.048a49.504 49.504 0 0 1 49.456 49.568v96.544c0 27.2-21.984 49.552-49.456 49.552H572.08a49.504 49.504 0 0 1-49.472-49.552v-96.544zm64 14.432v67.68h66.976v-67.68h-66.976z" fill="currentColor" class="custom-cursor-on-hover" /></symbol><symbol class="icon" viewBox="140 110 780 780" id="icon-start-run-command"><path fill="currentColor" d="M700.568 151.704c48.014 0 86.926 38.684 86.926 86.395v294.95c0 1.574-.152 3.129-.455 4.608 51.219 32.104 85.257 88.822 85.257 153.43 0 100.086-81.635 181.21-182.329 181.21-2.616 0-5.233-.058-7.831-.171l-.38.057-2.389.113H276.556c-48.014 0-86.926-38.684-86.926-86.395V238.099c0-47.71 38.912-86.395 86.926-86.395zm0 46.345H276.556a40.164 40.164 0 0 0-40.277 40.05v547.802c0 22.11 18.014 40.05 40.277 40.05h291.631a180.262 180.262 0 0 1-60.548-134.865c0-100.067 81.635-181.19 182.328-181.19 17.655 0 34.74 2.483 50.878 7.148V238.1a40.164 40.164 0 0 0-40.277-40.05zm-10.6 358.21c-74.942 0-135.68 60.36-135.68 134.827 0 74.487 60.738 134.865 135.68 134.865 74.941 0 135.68-60.378 135.68-134.865 0-74.467-60.739-134.826-135.68-134.826zm-10.563 63.394c7.832 0 15.53 2.086 22.3 6.068l63.526 37.281a44.677 44.677 0 0 1 17.56 57.818l-1.63 3.072-2.068 3.224a44.354 44.354 0 0 1-13.862 12.8l-63.526 37.3a44.089 44.089 0 0 1-60.53-16.024 44.734 44.734 0 0 1-6.01-22.433v-74.581a44.373 44.373 0 0 1 44.24-44.525zm2.105 48.204v67.204l57.25-33.602-57.25-33.602zM509.762 446.692c12.895 0 23.325 10.372 23.325 23.172s-10.43 23.173-23.325 23.173H340.158c-12.895 0-23.325-10.373-23.325-23.173 0-12.8 10.43-23.172 23.325-23.172zm127.204-126.427c12.895 0 23.324 10.373 23.324 23.173 0 12.8-10.43 23.173-23.324 23.173H340.158c-12.895 0-23.325-10.373-23.325-23.173 0-12.8 10.43-23.173 23.325-23.173z" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-vscode"><path d="m746.223 102.24-359.8 330.82-201.076-151.562-83.1 48.367 198.205 182.132-198.206 182.132 83.101 48.51L386.423 591.08l359.8 330.677 175.527-85.251V187.494zm0 217.58v384.34l-255.04-192.177z" fill="#2196F3" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-workflow"><path fill="currentColor" d="M352 128a96 96 0 0 1 0 192H224a96 96 0 0 1 0-192h128zm0 64H224a32 32 0 0 0 0 64h128a32 32 0 0 0 0-64zm448 512a96 96 0 0 1 0 192H672a96 96 0 0 1 0-192h128zm0 64H672a32 32 0 1 0 0 64h128a32 32 0 1 0 0-64z" /><path fill="currentColor" d="M699.584 192a164.416 164.416 0 1 1 0 328.768H340.48a116.416 116.416 0 1 0 0 232.832H512a32 32 0 1 1 0 64H340.416a180.416 180.416 0 0 1 0-360.832h359.168a100.416 100.416 0 0 0 0-200.768H512a32 32 0 0 1 0-64h187.584z" /><path fill="currentColor" d="M448 753.792v74.624a32 32 0 0 0 52.288 24.704l45.504-37.248a32 32 0 0 0 0-49.536l-45.504-37.312A32 32 0 0 0 448 753.792z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-android"><rect width="4" height="10" x="2" y="12" fill="#8bc34a" rx="2" /><rect width="4" height="10" x="26" y="12" fill="#8bc34a" rx="2" /><path fill="#8bc34a" d="M8 12h16v12H8zm2 12h4v4a2 2 0 0 1-2 2 2 2 0 0 1-2-2zm8 0h4v4a2 2 0 0 1-2 2 2 2 0 0 1-2-2zm3.545-19.759 2.12-2.12A1 1 0 0 0 22.251.707l-2.326 2.326a7.97 7.97 0 0 0-7.85 0L9.75.707a1 1 0 1 0-1.414 1.414l2.12 2.12A7.97 7.97 0 0 0 8 10h16a7.97 7.97 0 0 0-2.455-5.759M14 8h-2V6h2Zm6 0h-2V6h2Z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-angular"><path fill="#e53935" d="M9.87 2.5 3.022 5.666l.645 10.178zm4.26 0 6.202 13.344.645-10.178zM12 7.563l-2.451 5.964h4.906zm-3.73 8.959-.954 2.308L12 21.5l4.683-2.67-.953-2.308z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-audio"><path fill="#ef5350" d="M16 2a14 14 0 1 0 14 14A14 14 0 0 0 16 2m6 10h-4v8a4 4 0 1 1-4-4 3.96 3.96 0 0 1 2 .555V8h6Z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-bun"><path fill="#fff8e1" d="M30 17.045a9.8 9.8 0 0 0-.32-2.306l-.004.034a11.2 11.2 0 0 0-5.762-6.786c-3.495-1.89-5.243-3.326-6.8-3.811h.003c-1.95-.695-3.949.82-5.825 1.927-4.52 2.481-9.573 5.45-9.28 11.417.008-.029.017-.052.026-.08a9.97 9.97 0 0 0 3.934 7.257l-.01-.006C13.747 31.473 30.05 27.292 30 17.045" /><path fill="#37474f" d="M19.855 20.236A.8.8 0 0 0 19.26 20h-6.514a.8.8 0 0 0-.596.236.51.51 0 0 0-.137.463 4.37 4.37 0 0 0 1.641 2.339 4.2 4.2 0 0 0 2.349.926 4.2 4.2 0 0 0 2.343-.926 4.37 4.37 0 0 0 1.642-2.339.5.5 0 0 0-.132-.463Z" /><ellipse cx="22.5" cy="18.5" fill="#f8bbd0" rx="2.5" ry="1.5" /><ellipse cx="9.5" cy="18.5" fill="#f8bbd0" rx="2.5" ry="1.5" /><circle cx="10" cy="16" r="2" fill="#37474f" /><circle cx="22" cy="16" r="2" fill="#37474f" /><path fill="#455a64" d="M9.996 18A2 2 0 1 0 8 15.996V16a2 2 0 0 0 1.996 2" /><circle cx="9" cy="15" r="1" fill="#fafafa" /><circle cx="21" cy="15" r="1" fill="#fafafa" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-c"><path fill="#0288d1" d="M19.563 22A5.57 5.57 0 0 1 14 16.437v-2.873A5.57 5.57 0 0 1 19.563 8H24V2h-4.437A11.563 11.563 0 0 0 8 13.563v2.873A11.564 11.564 0 0 0 19.563 28H24v-6Z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-certificate"><path fill="#ff5722" d="M2 2a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h6v3l2-1.25L12 14v-3h2a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1Zm0 1h4v1H2Zm6 0 2 1.25L12 3v2.5l2 1-2 1V10l-2-1.25L8 10V7.5l-2-1 2-1zM2 5h3v1H2Zm0 2h3v1H2Zm0 2h4v1H2Z" /></symbol><symbol fill="none" viewBox="0 0 24 24" id="icon-mit-changelog"><path d="M0 0h24v24H0z" /><path fill="#8bc34a" d="M13 3a9 9 0 0 0-9 9H1l4 4 4-4H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42A8.95 8.95 0 0 0 13 21a9 9 0 0 0 0-18m-1 5v5l4.25 2.52.77-1.28-3.52-2.09V8z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-cmake"><path fill="#1e88e5" d="M11.94 2.984 2.928 21.017l9.875-8.47z" /><path fill="#e53935" d="m11.958 2.982.002.29 1.312 14.499-.002.006.023.26 7.363 2.978h.415l-.158-.31-.114-.228h-.001l-8.84-17.494z" /><path fill="#7cb342" d="m8.558 16.13-5.627 4.884h17.743v-.016z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-console"><path fill="#ff7043" d="M2 2a1 1 0 0 0-1 1v10c0 .554.446 1 1 1h12c.554 0 1-.446 1-1V3a1 1 0 0 0-1-1zm0 3h12v8H2zm1 2 2 2-2 2 1 1 3-3-3-3zm5 3.5V12h5v-1.5z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-cpp"><path fill="#0288d1" d="M28 14v-4h-2v4h-6v-4h-2v4h-4v2h4v4h2v-4h6v4h2v-4h4v-2z" /><path fill="#0288d1" d="M13.563 22A5.57 5.57 0 0 1 8 16.437v-2.873A5.57 5.57 0 0 1 13.563 8H18V2h-4.437A11.563 11.563 0 0 0 2 13.563v2.873A11.564 11.564 0 0 0 13.563 28H18v-6Z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-csharp"><path fill="#0288d1" d="M30 14v-2h-2V8h-2v4h-2V8h-2v4h-2v2h2v2h-2v2h2v4h2v-4h2v4h2v-4h2v-2h-2v-2Zm-4 2h-2v-2h2Zm-12.437 6A5.57 5.57 0 0 1 8 16.437v-2.873A5.57 5.57 0 0 1 13.563 8H18V2h-4.437A11.563 11.563 0 0 0 2 13.563v2.873A11.564 11.564 0 0 0 13.563 28H18v-6Z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-css"><path fill="#7e57c2" d="M20 18h-2v-2h-2v2c0 .193 0 .703 1.254 1.033A3.345 3.345 0 0 1 20 22h2v2h2v-2c0-.388-.562-.851-1.254-1.034C20.356 20.34 20 18.84 20 18m-3.254 2.966C14.356 20.34 14 18.84 14 18h-2v-2h-2v8h2v-2h4v2h2v-2c0-.388-.562-.851-1.254-1.034" /><path fill="#7e57c2" d="M24 4H4v20a4 4 0 0 0 4 4h16.16A3.84 3.84 0 0 0 28 24.16V8a4 4 0 0 0-4-4m2 14h-2v-2h-2v2c0 .193 0 .703 1.254 1.033A3.345 3.345 0 0 1 26 22v2a2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2 2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2 2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2 2 2 0 0 1 2-2h2a2 2 0 0 1 2 2 2 2 0 0 1 2-2h2a2 2 0 0 1 2 2Z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-dart"><path fill="#4fc3f7" d="M16.83 2a1.3 1.3 0 0 0-.916.377l-.013.01L7.323 7.34l8.556 8.55v.005l10.283 10.277 1.96-3.529-7.068-16.96-3.299-3.297A1.3 1.3 0 0 0 16.828 2Z" /><path fill="#01579b" d="m7.343 7.32-4.955 8.565-.01.013a1.297 1.297 0 0 0 .004 1.835l.005.005 4.106 4.107 16.064 6.314 3.632-2.015-.098-.098-.025.002L15.995 15.97h-.012z" /><path fill="#01579b" d="m7.321 7.324 8.753 8.755h.013L26.16 26.156l3.835-.73L30 14.089l-4.049-3.965a6.5 6.5 0 0 0-3.618-1.612l.002-.043L7.323 7.325Z" /><path fill="#64b5f6" d="m7.332 7.335 8.758 8.75v.013l10.079 10.071L25.436 30H14.09l-3.967-4.048a6.5 6.5 0 0 1-1.611-3.618l-.045.004Z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-docker"><path fill="#0288d1" d="M21.81 10.25c-.06-.04-.56-.43-1.64-.43-.28 0-.56.03-.84.08-.21-1.4-1.38-2.11-1.43-2.14l-.29-.17-.18.27c-.24.36-.43.77-.51 1.19-.2.8-.08 1.56.33 2.21-.49.28-1.29.35-1.46.35H2.62c-.34 0-.62.28-.62.63 0 1.15.18 2.3.58 3.38.45 1.19 1.13 2.07 2 2.61.98.6 2.59.94 4.42.94.79 0 1.61-.07 2.42-.22 1.12-.2 2.2-.59 3.19-1.16A8.3 8.3 0 0 0 16.78 16c1.05-1.17 1.67-2.5 2.12-3.65h.19c1.14 0 1.85-.46 2.24-.85.26-.24.45-.53.59-.87l.08-.24zm-17.96.99h1.76c.08 0 .16-.07.16-.16V9.5c0-.08-.07-.16-.16-.16H3.85c-.09 0-.16.07-.16.16v1.58c.01.09.07.16.16.16m2.43 0h1.76c.08 0 .16-.07.16-.16V9.5c0-.08-.07-.16-.16-.16H6.28c-.09 0-.16.07-.16.16v1.58c.01.09.07.16.16.16m2.47 0h1.75c.1 0 .17-.07.17-.16V9.5c0-.08-.06-.16-.17-.16H8.75c-.08 0-.15.07-.15.16v1.58c0 .09.06.16.15.16m2.44 0h1.77c.08 0 .15-.07.15-.16V9.5c0-.08-.06-.16-.15-.16h-1.77c-.08 0-.15.07-.15.16v1.58c0 .09.07.16.15.16M6.28 9h1.76c.08 0 .16-.09.16-.18V7.25c0-.09-.07-.16-.16-.16H6.28c-.09 0-.16.06-.16.16v1.57c.01.09.07.18.16.18m2.47 0h1.75c.1 0 .17-.09.17-.18V7.25c0-.09-.06-.16-.17-.16H8.75c-.08 0-.15.06-.15.16v1.57c0 .09.06.18.15.18m2.44 0h1.77c.08 0 .15-.09.15-.18V7.25c0-.09-.07-.16-.15-.16h-1.77c-.08 0-.15.06-.15.16v1.57c0 .09.07.18.15.18m0-2.28h1.77c.08 0 .15-.07.15-.16V5c0-.1-.07-.17-.15-.17h-1.77c-.08 0-.15.06-.15.17v1.56c0 .08.07.16.15.16m2.46 4.52h1.76c.09 0 .16-.07.16-.16V9.5c0-.08-.07-.16-.16-.16h-1.76c-.08 0-.15.07-.15.16v1.58c0 .09.07.16.15.16" /></symbol><symbol fill="none" viewBox="0 0 24 24" id="icon-mit-document"><path d="M0 0h24v24H0z" /><path fill="#42a5f5" d="M8 16h8v2H8zm0-4h8v2H8zm6-10H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm4 18H6V4h7v5h5z" /></symbol><symbol viewBox="0 0 3473 3473" id="icon-mit-editorconfig"><path fill="#ede7f6" d="M989.342 1977.409c41.146-26.835 75.137-93.922 54.564-141.33-56.353 24.151-53.67 79.61-54.564 141.33m636.877 153.851c44.724-14.311 87.66-64.402 63.509-116.283-34.886 24.151-57.248 57.247-63.51 116.284z" /><g fill="#fafafa"><path d="M374.827 2871.899c0 56.352 14.312 117.178 53.67 138.645 144.907 81.4 652.977 17.89 825.614-20.573 90.343-20.573 163.692-87.66 248.668-124.334 191.421-83.187 330.067-150.274 483.025-262.085 110.916-81.399 287.131-310.388 305.915-447.245l-151.169-33.991c-3.578 153.852-38.463 188.737-175.32 224.517-92.132 25.046-271.925 30.413-365.846 14.312-124.334-20.574-180.687-85.871-237.04-160.114-109.128-144.907 24.151-245.985-148.485-255.824-181.582 222.728-501.81 62.614-642.244 40.252-59.93 86.765-200.366 650.294-198.577 779.1 86.766-29.517 141.33 2.684 219.15 33.097 275.503 106.444 34.885 200.366-75.137 172.636-75.137-17.89-98.394-67.086-142.224-98.393m360.48-1285.383c111.81 21.468 211.1 67.982 305.915 115.39 154.747 76.926 182.476 66.192 196.788 173.53 1.789 19.68-1.789 30.413 54.564 48.303 94.816 29.518-54.564-23.257 199.471-22.362 151.169.894 497.337 61.72 609.148 132.384 46.513 29.519 37.568 67.087 194.999 62.615-1.79-185.16-50.986-461.557-123.44-631.51-88.554-205.733-205.733-237.04-444.561-313.966-139.54-44.725-549.217-93.922-676.235-15.207-118.967 74.243-141.33 162.798-252.246 318.439-32.202 45.619-43.83 80.504-64.403 132.384" /><path d="M1720.14 1966.675c89.45 36.674-4.472 273.714-128.806 216.466-40.252-113.6 55.458-178.003 81.398-228.99-53.67-8.05-206.627-32.2-252.246-15.206-59.036 22.363-72.454 148.486-42.041 207.522 143.118 280.87 775.523 220.94 708.436 2.684-26.835-88.555-51.88-102.867-142.224-133.28-72.454-24.15-144.907-49.196-224.517-49.196m-1124.374-31.307c71.56 68.875 233.462 79.61 338.117 84.976 13.418-138.646 25.046-242.407 135.963-234.356 54.564 74.242 25.94 161.902-31.307 218.255 97.5-.894 153.852-74.242 139.54-180.687-82.293-59.036-331.856-177.109-457.084-194.104-34.885 37.569-120.756 243.301-125.229 305.916" /></g><path d="M427.602 2820.913c59.036-5.367 212.889 39.357 225.412 89.449-95.71 11.628-217.361 2.683-225.412-89.45zm-52.775 50.986c43.83 31.307 67.087 80.504 142.224 98.393 110.022 27.73 350.64-66.192 75.137-172.636-77.82-30.413-132.384-62.614-219.15-33.096-1.789-128.807 138.646-692.336 198.577-779.101 140.435 22.362 460.662 182.476 642.244-40.252 172.636 9.84 39.357 110.917 148.485 255.824 56.353 74.243 112.706 139.54 237.04 160.114 93.921 16.1 273.714 10.734 365.846-14.312 136.857-35.78 171.742-70.665 175.32-224.517l151.17 33.99c-18.785 136.858-195 365.847-305.916 447.246-152.958 111.81-291.604 178.898-483.025 262.085-84.976 36.674-158.325 103.761-248.668 124.334-172.637 38.463-680.707 101.972-825.614 20.574-39.358-21.468-53.67-82.294-53.67-138.646M1626.22 2131.26c6.261-59.037 28.623-92.133 63.508-116.284 24.152 51.88-18.784 101.972-63.508 116.284m93.921-164.586c79.61 0 152.063 25.045 224.517 49.197 90.344 30.412 115.39 44.724 142.224 133.279 67.087 218.255-565.318 278.186-708.436-2.684-30.413-59.036-16.995-185.16 42.041-207.522 45.619-16.995 198.577 7.156 252.246 15.207-25.94 50.986-121.65 115.389-81.398 228.99 124.334 57.247 218.255-179.793 128.806-216.467m-730.798 10.734c.894-61.72-1.79-117.179 54.564-141.33 20.573 47.408-13.418 114.495-54.564 141.33m-393.576-42.041c4.473-62.615 90.344-268.347 125.229-305.916 125.228 16.995 374.791 135.068 457.084 194.104 14.312 106.445-42.04 179.793-139.54 180.687 57.247-56.353 85.87-144.013 31.307-218.255-110.917-8.05-122.545 95.71-135.963 234.356-104.655-5.367-266.558-16.1-338.117-84.976m-89.449-71.56c-33.096-91.238-33.096-233.462 107.339-245.09l-71.56 199.471c-18.783 42.936-18.783 33.096-35.779 45.62zm228.99-277.292c20.573-51.88 32.201-86.765 64.403-132.384 110.917-155.641 133.279-244.196 252.246-318.439 127.018-78.715 536.694-29.518 676.235 15.207 238.828 76.926 356.007 108.233 444.561 313.966 72.454 169.953 121.65 446.35 123.44 631.51-157.43 4.472-148.486-33.096-195-62.615-111.81-70.664-457.978-131.49-609.147-132.384-254.035-.895-104.655 51.88-199.471 22.362-56.353-17.89-52.775-28.624-54.564-48.302-14.312-107.34-42.041-96.605-196.788-173.531-94.816-47.408-194.104-93.922-305.915-115.39m1583.247-43.83c-16.995-56.352 14.312-52.775 68.876-91.238 31.307-22.362 56.353-45.619 94.816-67.086 144.013-80.504 412.36-93.922 526.854 1.789 46.514 38.463 122.545 113.6 110.917 211.994-24.151 195.893-158.325 303.232-268.347 392.68-111.811 91.239-297.865 185.16-490.18 122.546-16.101-39.358-3.578-288.92-22.363-381.053-16.995-82.293-8.05-91.238 39.358-140.435 139.54-144.907 441.878-250.457 613.62-126.123 72.454 53.67 51.88 74.243 89.449 115.39 46.513-50.092-40.252-218.256-360.48-207.522-217.36 7.156-311.282 177.109-402.52 169.058m-1302.377-508.964c4.472-124.335 118.967-381.948 233.461-471.397 138.646-107.338 283.554-208.416 496.442-87.66 52.775 29.519 50.092 44.725 55.459 118.073 4.472 70.665-1.79 96.605-19.679 153.852-141.33 456.19-259.402 194.105-712.014 302.338 16.995-148.485 145.802-280.87 217.361-349.746 122.545-118.967 211.1-195.893 395.365-170.847 50.986 84.976 56.352 138.646-5.367 237.934-82.293 132.385-102.867 124.334-90.344 214.678 64.403-16.101 84.082-78.715 113.6-141.33 179.793-375.686-81.398-421.305-241.512-352.429-107.339 45.62-298.76 256.719-361.374 383.736-12.523 25.046-25.94 57.248-37.568 84.977zm708.436 18.784c18.784-111.811 129.7-139.54 129.7-483.92 0-148.485-182.475-281.764-421.304-182.475-204.838 84.082-236.145 148.485-345.273 313.071-102.867 155.642-99.289 326.49-187.843 470.502-25.94 41.147-49.197 55.458-77.82 96.605-20.574 30.413-35.78 68.876-56.354 104.655-42.04 68.876-84.976 118.968-118.967 201.26-107.339 2.684-197.682 4.473-208.416 115.39-14.312 152.063 57.247 189.632 57.247 246.879-.894 61.72-251.351 684.285-181.581 1055.498 19.679 101.972 86.765 102.867 194.104 115.39 258.508 31.307 593.942 20.573 825.614-72.454l420.41-201.26c106.445-59.931 285.343-173.532 364.953-256.72 56.353-58.141 85.87-107.338 134.173-176.214 66.192-96.605 67.981-94.816 82.293-226.306 87.66 16.101 251.352 54.564 305.916 101.972-6.262 61.72-36.674 32.202-36.674 87.66 34.885.895 93.027-42.935 107.339-91.238-36.675-53.67-75.138-44.724-127.913-87.66 42.042-33.096 118.073-48.302 176.215-72.453 125.229-51.88 339.012-209.311 391.787-352.43 42.04-115.389 10.734-307.704-57.248-382.841-71.559-78.715-237.934-118.967-373.897-118.967-161.902 0-329.172 116.283-459.767 166.375-50.092-43.83-53.67-93.922-90.344-142.224-42.04-57.248-315.755-200.366-446.35-228.095" /><path fill="#efebe9" d="M2318.554 1542.686c91.238 8.05 185.16-161.902 402.52-169.058 320.228-10.734 406.993 157.43 360.48 207.521-37.569-41.146-16.995-61.72-89.45-115.389-171.741-124.334-474.079-18.784-613.62 126.123-47.407 49.197-56.352 58.142-39.357 140.435 18.785 92.133 6.262 341.695 22.362 381.053 192.316 62.614 378.37-31.307 490.181-122.545 110.022-89.45 244.196-196.788 268.347-392.681 11.628-98.394-64.403-173.531-110.917-211.994-114.494-95.71-382.841-82.293-526.854-1.79-38.463 21.468-63.51 44.725-94.816 67.087-54.564 38.464-85.871 34.886-68.876 91.238m-1302.377-508.964 43.83-77.821c11.628-27.73 25.045-59.93 37.568-84.977 62.614-127.017 254.035-338.117 361.374-383.736 160.114-68.876 421.305-23.257 241.512 352.43-29.518 62.614-49.197 125.228-113.6 141.329-12.523-90.344 8.05-82.293 90.344-214.678 61.72-99.288 56.353-152.958 5.367-237.934-184.265-25.046-272.82 51.88-395.365 170.847-71.56 68.876-200.366 201.26-217.361 349.746 452.612-108.233 570.685 153.852 712.014-302.338 17.89-57.247 24.151-83.187 19.679-153.852-5.367-73.348-2.684-88.554-55.459-118.073-212.888-120.756-357.796-19.678-496.442 87.66-114.494 89.45-228.989 347.062-233.461 471.397" /><path fill="#eee" d="M506.317 1863.808c16.996-12.523 16.996-2.683 35.78-45.619l71.559-199.47c-140.435 11.627-140.435 153.851-107.339 245.09z" /><path fill="#efebe9" d="M653.014 2910.362c-12.523-50.092-166.376-94.816-225.412-89.45 8.05 92.133 129.701 101.078 225.412 89.45" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-eslint"><path fill="#3f51b5" d="M22.713 4H9.287a.5.5 0 0 0-.432.248l-6.708 11.5a.5.5 0 0 0 0 .504l6.708 11.5a.5.5 0 0 0 .432.248h13.426a.5.5 0 0 0 .432-.248l6.708-11.5a.5.5 0 0 0 0-.504l-6.708-11.5A.5.5 0 0 0 22.713 4m-6.937 20.888-7.5-3.75A.5.5 0 0 1 8 20.691v-9.382a.5.5 0 0 1 .276-.447l7.5-3.75a.5.5 0 0 1 .448 0l7.5 3.75a.5.5 0 0 1 .276.447v9.382a.5.5 0 0 1-.276.447l-7.5 3.75a.5.5 0 0 1-.448 0" /><path fill="#7986cb" d="M22 19.441v-6.882a.5.5 0 0 0-.276-.447l-5.5-2.75a.5.5 0 0 0-.448 0l-5.5 2.75a.5.5 0 0 0-.276.447v6.882a.5.5 0 0 0 .276.447l5.5 2.75a.5.5 0 0 0 .448 0l5.5-2.75a.5.5 0 0 0 .276-.447" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-file"><path d="M8.668 6h3.664L8.668 2.332V6M4 1.332h5.332l4 4v8c0 .738-.594 1.336-1.332 1.336H4a1.332 1.332 0 0 1-1.332-1.336V2.668A1.33 1.33 0 0 1 4 1.332m3.332 1.336H4v10.664h8v-6H7.332z" fill="#90a4ae" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-firebase"><path fill="#ff9100" d="M18.217 8.974c-.45-.623-1.482-1.904-3.07-3.808-.689-.825-1.28-1.526-1.57-1.87l-.408-.48-.173-.205-.094-.11-.018-.027-.008-.004-.4-.47-.509.407a11.1 11.1 0 0 0-3.069 3.866 9.5 9.5 0 0 0-.87 2.647q-.06.303-.1.615a9 9 0 0 0-.577-.03 6.2 6.2 0 0 0-1.901.229l-.265.074-.136.238a8 8 0 0 0-1.044 3.68 8 8 0 0 0 5.006 7.697l.197.079.06.02h.002a8 8 0 0 0 2.452.473q.143.005.286.005a7.9 7.9 0 0 0 3.076-.618l.007.003.261-.12a7.99 7.99 0 0 0 4.643-6.981 8.5 8.5 0 0 0-1.778-5.31M9.837 19.82l-.192-.074-.051-.02a6.31 6.31 0 0 1-3.897-6.048 6.2 6.2 0 0 1 .697-2.667 4.6 4.6 0 0 1 .759-.103l.065-.002a8 8 0 0 1 .378 0c.108.005.215.021.322.034a13 13 0 0 0 .918 4.007 10.1 10.1 0 0 0 2.474 3.61 6.4 6.4 0 0 1-1.473 1.263m.351-5.486a11.4 11.4 0 0 1-.767-3.125 4.6 4.6 0 0 1 .95.461 4.73 4.73 0 0 1 1.94 2.884 5 5 0 0 1 .12.649 4.2 4.2 0 0 1-.288 2.023 8.3 8.3 0 0 1-1.955-2.892m1.741 5.858a8 8 0 0 0 .553-.62c.233.177.485.332.73.495a6.3 6.3 0 0 1-1.283.125m5.432-2.97a6.34 6.34 0 0 1-2.212 2.138 12.4 12.4 0 0 1-1.851-1.15 5.84 5.84 0 0 0 .309-3.998 6.02 6.02 0 0 0-2.504-3.664 6.1 6.1 0 0 0-1.679-.74 8 8 0 0 1 .064-.496 9 9 0 0 1 .465-1.598q.117-.298.253-.584l.004-.007c.14-.282.296-.567.481-.872l.073-.12h-.002a9.2 9.2 0 0 1 1.534-1.824l.227.269c.53.628 1.03 1.222 1.483 1.765 1.02 1.223 2.342 2.828 2.852 3.536a6.8 6.8 0 0 1 1.446 4.242 6.3 6.3 0 0 1-.943 3.104" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-claude"><path fill="#ff7043" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#ffccbc" d="m8.834 5-.201.045-.309.393.137.603 1.506 2.717-.383-.293L7.48 6.92h-.1l-.35-.05-.3.349.1.398.15.2L9.885 9.86l.043.043-1.145-.091-2.556-.15L6 9.74v.22l.227.25.2.052 3.454.177-2 1.268-.852.6v.273l.2.229h.501l2.686-1.83-2.184 2.875-.05.248.3.15.2-.05.703-.798 1.53-2.008-.58 3.106.151.299.252.199.301-.1.149-.199.253-3.017 1.702 2.521.351.047.201-.1.05-.15v-.398l-1.179-1.721-.027-.184 1.256 1.106.851.6.15.048.151-.2-.049-.25-2.306-2.144-.03-.052.08.004 2.807.697.551-.233v-.216l-.201-.3-.301-.198-1.252-.1-1.451-.133 3.055-.715.1-.35v-.15l-.35-.199-2.723.436 1.822-2.48.051-.245-.123-.383-.13-.16-.491-.102-.483.39-1.671 2.183.49-2.932-.25-.348-.252-.1-.3.2-.2.398-.34 2.99-.13-.376L9.431 5.21l-.198-.152Z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-client"><path fill="#039be5" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#b3e5fc" d="m15 6-7.5.004a.5.5 0 0 0-.5.5V12H5v2h6v-2H8V7.004h7zm-2.5 2a.5.5 0 0 0-.5.5v5a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5zm.5 1h2v3h-2z" /></symbol><symbol fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 16 16" id="icon-mit-folder-cloud-functions"><defs><path id="icon-mit-folder-cloud-functions_a" fill="#bbdefb" d="m13 7 1-1 2 2-1 1z" /></defs><path fill="#2196f3" fill-rule="nonzero" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#bbdefb" d="M10.991 8.994h1.019v.998h-1.02zm-1.491.01h1.018v.999H9.499zm2.998 0h.999v.999h-.999zM14.5 7H16v5h-1.5z" /><use xlink:href="#icon-mit-folder-cloud-functions_a" transform="translate(0 -1)" /><use xlink:href="#icon-mit-folder-cloud-functions_a" transform="matrix(1 0 0 -1 0 20)" /><path fill="#bbdefb" d="M7 7h1.5v5H7z" /><use xlink:href="#icon-mit-folder-cloud-functions_a" transform="matrix(-1 0 0 1 23 -1)" /><use xlink:href="#icon-mit-folder-cloud-functions_a" transform="rotate(180 11.5 10)" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-components"><path fill="#c0ca33" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#f0f4c3" d="M6 10h4v4H6zm5 0h4v4h-4zM6 5h4v4H6zm4.172 2L13 4.172 15.829 7 13 9.829z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-config"><path fill="#00acc1" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#80deea" d="M11.5 12.075A1.6 1.6 0 0 1 9.882 10.5a1.62 1.62 0 1 1 1.62 1.575m3.437-1.138a4 4 0 0 0 .032-.438 4 4 0 0 0-.032-.45l.976-.733a.223.223 0 0 0 .056-.288l-.926-1.556a.23.23 0 0 0-.283-.1l-1.15.45a3.4 3.4 0 0 0-.783-.44l-.171-1.193A.23.23 0 0 0 12.425 6h-1.85a.23.23 0 0 0-.231.189l-.171 1.193a3.4 3.4 0 0 0-.781.44l-1.152-.45a.23.23 0 0 0-.282.1l-.926 1.556a.22.22 0 0 0 .056.288l.975.734a4 4 0 0 0-.032.45 4 4 0 0 0 .032.437l-.975.746a.22.22 0 0 0-.056.288l.925 1.558a.235.235 0 0 0 .283.099l1.152-.455a3.2 3.2 0 0 0 .781.446l.171 1.192a.23.23 0 0 0 .232.189h1.85a.23.23 0 0 0 .232-.189l.17-1.192a3.4 3.4 0 0 0 .783-.446l1.15.455a.24.24 0 0 0 .284-.1l.924-1.557a.223.223 0 0 0-.055-.288Z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-controller"><path fill="#ffc107" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#fff9c4" d="M11.5 12.075A1.6 1.6 0 0 1 9.88 10.5a1.62 1.62 0 1 1 1.62 1.575m3.438-1.138a4 4 0 0 0 .032-.437 4 4 0 0 0-.032-.45l.976-.734a.223.223 0 0 0 .056-.288l-.927-1.556a.23.23 0 0 0-.282-.1l-1.15.45a3.4 3.4 0 0 0-.783-.44l-.171-1.193A.23.23 0 0 0 12.425 6h-1.85a.23.23 0 0 0-.232.189l-.17 1.193a3.4 3.4 0 0 0-.782.44l-1.152-.45a.23.23 0 0 0-.282.1l-.925 1.556a.22.22 0 0 0 .056.288l.975.734a4 4 0 0 0-.032.45 4 4 0 0 0 .032.437l-.975.746a.22.22 0 0 0-.056.288l.925 1.558a.235.235 0 0 0 .282.099l1.152-.455a3.2 3.2 0 0 0 .782.446l.17 1.192a.23.23 0 0 0 .232.189h1.85a.23.23 0 0 0 .232-.189l.17-1.192a3.4 3.4 0 0 0 .783-.446l1.151.455a.24.24 0 0 0 .283-.1l.926-1.557a.223.223 0 0 0-.056-.288z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-css"><defs><path id="icon-mit-folder-css_a" fill="#d1c4e9" d="M7 10V9H6v4h1v-1h1v1a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1Zm5 0V9a1 1 0 0 0-1-1h-1a1 1 0 0 0-1 1v1c0 .42.179 1.17 1.373 1.483.346.092.627.323.627.517v1h-1v-1H9v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1a1.67 1.67 0 0 0-1.373-1.483C10 10.352 10 10.097 10 10V9h1v1Zm4 0V9a1 1 0 0 0-1-1h-1a1 1 0 0 0-1 1v1c0 .42.179 1.17 1.373 1.483.346.092.627.323.627.517v1h-1v-1h-1v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1a1.67 1.67 0 0 0-1.373-1.483C14 10.352 14 10.097 14 10V9h1v1Z" /></defs><path fill="#7e57c2" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><use xlink:href="#icon-mit-folder-css_a" /><use xlink:href="#icon-mit-folder-css_a" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-cypress"><path fill="#009688" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#b2dfdb" d="M11.5 5A4.497 4.497 0 0 0 7 9.495V9.5a4.497 4.497 0 0 0 4.494 4.5h.006A4.497 4.497 0 0 0 16 9.506V9.5A4.51 4.51 0 0 0 11.5 5m-2.111 5.466a.7.7 0 0 0 .62.278 1 1 0 0 0 .378-.066 3 3 0 0 0 .409-.213l.458.655a1.95 1.95 0 0 1-1.293.458 2 2 0 0 1-1.014-.245 1.65 1.65 0 0 1-.655-.72 2.5 2.5 0 0 1-.228-1.097 2.6 2.6 0 0 1 .228-1.096 1.73 1.73 0 0 1 .656-.752 1.8 1.8 0 0 1 .998-.262 1.9 1.9 0 0 1 .703.115 2.1 2.1 0 0 1 .605.36l-.457.621a1.8 1.8 0 0 0-.377-.213 1 1 0 0 0-.393-.066c-.556 0-.834.426-.834 1.293a1.6 1.6 0 0 0 .196.949Zm4.5 1.015a2.35 2.35 0 0 1-.753 1.161 2.45 2.45 0 0 1-1.375.475l-.114-.769a1.9 1.9 0 0 0 .835-.263 2 2 0 0 0 .196-.195L11.32 7.537h1.128l.786 3.256.835-3.256h1.097z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-dist"><path fill="#e57373" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#ffcdd2" d="M15 7h-2V6l-1-1h-2L9 6v1H7a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1m-5 0V6h2v1z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-docs"><path fill="#0277bd" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#b3e5fc" d="M12 5H8.5a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h6a.5.5 0 0 0 .5-.5V8Zm0 8H9v-1h3zm2-2H9v-1h5zm-2.414-2.586V6L14 8.414Z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-git"><path fill="#ff7043" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#ffccbc" d="m6.297 9.295 2.892-2.897.846.85a.99.99 0 0 0 .465 1.116v2.772a1 1 0 0 0-.5.865 1.001 1.001 0 0 0 2.001 0 1 1 0 0 0-.5-.865V8.704l1.035 1.046a.6.6 0 0 0-.035.25 1.001 1.001 0 1 0 1.001-1.001.6.6 0 0 0-.25.035l-1.287-1.285a.99.99 0 0 0-.575-1.171 1.05 1.05 0 0 0-.64-.045l-.851-.846.396-.39a.987.987 0 0 1 1.41 0l3.998 3.998a.987.987 0 0 1 0 1.41l-3.998 3.998a.987.987 0 0 1-1.41 0l-3.998-3.998a.987.987 0 0 1 0-1.41" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-github"><path fill="#546e7a" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#eceff1" d="M11.5 5A4.516 4.516 0 0 0 7 9.532a4.54 4.54 0 0 0 3.079 4.305c.225.036.296-.105.296-.226v-.766c-1.246.272-1.512-.607-1.512-.607a1.2 1.2 0 0 0-.499-.667c-.41-.28.031-.272.031-.272a.95.95 0 0 1 .689.466.963.963 0 0 0 1.31.377.98.98 0 0 1 .283-.607c-1-.114-2.047-.504-2.047-2.23a1.76 1.76 0 0 1 .463-1.228 1.63 1.63 0 0 1 .045-1.196s.377-.123 1.237.462a4.3 4.3 0 0 1 2.25 0c.86-.585 1.239-.462 1.239-.462a1.63 1.63 0 0 1 .044 1.196 1.76 1.76 0 0 1 .464 1.228c0 1.731-1.053 2.112-2.057 2.225a1.1 1.1 0 0 1 .311.839v1.242c0 .122.072.266.301.226A4.54 4.54 0 0 0 11.501 5" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-gitlab"><path fill="#757575" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><g data-mit-no-recolor="true"><path fill="#e53935" d="m15.675 8.852-.011-.032-1.17-3.048a.3.3 0 0 0-.12-.146.31.31 0 0 0-.463.176l-.789 2.416H9.927l-.79-2.415a.31.31 0 0 0-.463-.177.3.3 0 0 0-.12.145l-1.168 3.05-.012.03a2.17 2.17 0 0 0 .72 2.508l.004.003.01.008 1.778 1.334.882.666.536.405a.36.36 0 0 0 .437 0l.536-.406.882-.667 1.791-1.34.005-.004a2.17 2.17 0 0 0 .72-2.507" /><path fill="#ef6c00" d="m15.675 8.852-.011-.032a3.95 3.95 0 0 0-1.571.707l-2.567 1.941 1.634 1.235 1.79-1.34.006-.004a2.17 2.17 0 0 0 .72-2.508Z" /><path fill="#f9a825" d="m9.886 12.703.882.667.536.405a.36.36 0 0 0 .436 0l.536-.406.883-.666-1.635-1.235Z" /><path fill="#ef6c00" d="M8.956 9.527a3.95 3.95 0 0 0-1.57-.706l-.013.03a2.17 2.17 0 0 0 .72 2.509l.005.003.01.008 1.778 1.332 1.635-1.235Z" /></g></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-include"><path fill="#039be5" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#b3e5fc" d="M12.5 7a3.5 3.5 0 1 0 3.5 3.5A3.5 3.5 0 0 0 12.5 7m.5 4v2h-1v-2h-2v-1h2V8h1v2h2v1z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-intellij"><defs data-mit-no-recolor="true"><linearGradient id="icon-mit-folder-intellij_a" x1="-84.662" x2="-58.529" y1="818.209" y2="802.436" gradientTransform="translate(27.748 -165.512) scale(.11021)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fdd835" /><stop offset="1" stop-color="#f57c00" /></linearGradient><linearGradient id="icon-mit-folder-intellij_b" x1="-79.135" x2="-55.282" y1="780.336" y2="801.218" gradientTransform="translate(27.748 -165.512) scale(.11021)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ef5350" /><stop offset=".57" stop-color="#ff6e40" /><stop offset="1" stop-color="#f57c00" /></linearGradient><linearGradient id="icon-mit-folder-intellij_c" x1="-77.621" x2="-91.757" y1="799.266" y2="790.438" gradientTransform="translate(27.748 -165.512) scale(.11021)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#8e24aa" /><stop offset=".385" stop-color="#ab47bc" /><stop offset=".765" stop-color="#ec407a" /><stop offset=".957" stop-color="#ec407a" /></linearGradient><linearGradient id="icon-mit-folder-intellij_d" x1="-77.876" x2="-91.677" y1="779.271" y2="790.669" gradientTransform="translate(27.748 -165.512) scale(.11021)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ef5350" /><stop offset=".364" stop-color="#ec407a" /><stop offset="1" stop-color="#ec407a" /></linearGradient></defs><path fill="#546e7a" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="url(#icon-mit-folder-intellij_a)" d="M15.465 11.26a.34.34 0 0 0 .11-.236.345.345 0 0 0-.323-.36.36.36 0 0 0-.243.081l-6.157 3.373a.72.72 0 0 0-.345.3.74.74 0 0 0 .253 1.016l.011.006a.76.76 0 0 0 .786-.015c.015-.014.037-.021.052-.036l5.73-4.027a1 1 0 0 0 .126-.102" /><path fill="url(#icon-mit-folder-intellij_b)" d="m15.48 10.767-4.688-4.6a.567.567 0 1 0-.83.772 1 1 0 0 0 .087.073l4.952 4.24a.38.38 0 0 0 .221.095.345.345 0 0 0 .36-.322.37.37 0 0 0-.103-.258" /><path fill="url(#icon-mit-folder-intellij_c)" d="M10.946 10.356c-.007 0-2.895-2.278-2.953-2.315l-.133-.066a.822.822 0 0 0-.72 1.47.7.7 0 0 0 .147.066c.03.015 3.336 1.381 3.336 1.381a.315.315 0 0 0 .323-.536" /><path fill="url(#icon-mit-folder-intellij_d)" d="M10.373 5.984a.6.6 0 0 0-.338.11l-2.924 1.97c-.007.007-.015.007-.015.014h-.007a.819.819 0 0 0 .198 1.433.8.8 0 0 0 .764-.103.7.7 0 0 0 .133-.117l2.542-2.293a.566.566 0 0 0-.353-1.014" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-lib"><path fill="#c0ca33" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#f0f4c3" d="M11.5 8a1.5 1.5 0 0 0 .002-3H11.5A1.5 1.5 0 0 0 10 6.5 1.5 1.5 0 0 0 11.5 8m0 1.987C10.387 8.947 8.523 7.996 7 8v5c1.595 0 3.425 1.002 4.5 2 1.113-1.039 2.978-2.002 4.5-2V8c-1.522-.003-3.387.947-4.5 1.986" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-middleware"><path fill="#5c6bc0" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#c5cae9" d="M15.054 10H16V8a1 1 0 0 0-1-1h-2V6a1 1 0 0 0-2 0v1H9a1 1 0 0 0-1 1v2H7a1 1 0 0 0 0 2h1v2a1 1 0 0 0 1 1h2v-.946a1.04 1.04 0 0 1 .832-1.04A1 1 0 0 1 13 14v1h2a1 1 0 0 0 1-1v-2h-1a1 1 0 0 1-.986-1.168 1.04 1.04 0 0 1 1.04-.832" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-node"><path fill="#8bc34a" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#dcedc8" d="M12.5 6 9 8.036v3.927L12.5 14l3.5-2.037V8.036Z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-open"><path d="M14.483 6H4.721a1 1 0 0 0-.949.684L2 12V5h12a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232l-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h11l2.403-5.606A1 1 0 0 0 14.483 6" fill="#90a4ae" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-public"><path fill="#039be5" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#b3e5fc" d="M11 5a5 5 0 1 0 5 5 5 5 0 0 0-5-5m3.459 3H12.98a8 8 0 0 0-.671-1.77A4.02 4.02 0 0 1 14.459 8M11 6a7 7 0 0 1 .945 2h-1.89A7 7 0 0 1 11 6m-1.309.23A8 8 0 0 0 9.02 8H7.541a4.02 4.02 0 0 1 2.15-1.77M7.131 11a3.85 3.85 0 0 1 0-2h1.704a7.8 7.8 0 0 0 0 2zm.41 1H9.02a8 8 0 0 0 .671 1.77A4.02 4.02 0 0 1 7.541 12M11 14a7 7 0 0 1-.945-2h1.89A7 7 0 0 1 11 14m1.155-3h-2.31a6.7 6.7 0 0 1 0-2h2.31a6.7 6.7 0 0 1 0 2m.154 2.77A8 8 0 0 0 12.98 12h1.479a4.02 4.02 0 0 1-2.15 1.77m2.56-2.77h-1.704a7.8 7.8 0 0 0 0-2h1.704a3.85 3.85 0 0 1 0 2" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-robot"><path fill="#ff5252" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#ffcdd2" d="M5.25 13H6v-3h-.75a.25.25 0 0 0-.25.25v2.5a.25.25 0 0 0 .25.25M15 10v3h.75a.25.25 0 0 0 .25-.25v-2.5a.25.25 0 0 0-.25-.25Zm-4.25-4h-.5a.25.25 0 0 0-.25.25V8H7.25a.25.25 0 0 0-.25.25v5.5a.25.25 0 0 0 .25.25h6.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25H11V6.25a.25.25 0 0 0-.25-.25M9 9a1 1 0 1 1-1 1 1 1 0 0 1 1-1m4 4H8v-1h5zm-1-4a1 1 0 1 1-1 1 1 1 0 0 1 1-1" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-routes"><path fill="#43a047" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#c8e6c9" d="M8.707 7.293 10 6H6v4l1.293-1.293 2.455 2.455a.85.85 0 0 1 .252.608V14h2v-2.23a2.84 2.84 0 0 0-.838-2.022ZM14.68 6l-2.805 2.465.285.285a2.8 2.8 0 0 1 .78 1.445L16 7.505Z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-scripts"><path fill="#546e7a" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#cfd8dc" d="M14 6h-3a2 2 0 0 0-2 2v4h1V8h4v4.947a1.04 1.04 0 0 1-.832 1.04A1 1 0 0 1 12 13H8a2 2 0 0 0 2 2h3a2 2 0 0 0 2-2V8h1a2 2 0 0 0-2-2" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-server"><path fill="#fbc02d" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#fffde7" d="M7 7.5v2a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5h-8a.5.5 0 0 0-.5.5M10 9H8V8h2zm2 0h-1V8h1zm-5 2.5v2a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5h-8a.5.5 0 0 0-.5.5m3 1.5H8v-1h2zm2 0h-1v-1h1z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-shared"><path fill="#ab47bc" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#e1bee7" d="M14 13a1 1 0 0 0 1-1V9a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1H7v1h9v-1Zm-2.5-3V9l2 1.399-2 1.601v-1a2.06 2.06 0 0 0-2 1c.224-1.001.444-1.797 2-2" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-skills"><path fill="#ff8f00" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#ffecb3" d="M12 13v1h2v-1zm0-8-2 2v2l1 1v1l1 1h2l1-1v-1l1-1V7l-2-2-1 1v1l-1 1h-1V7l1-1h1l1-1z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-src"><path fill="#4caf50" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#c8e6c9" d="M9.225 15a.5.5 0 0 1-.12-.014.57.568 0 0 1-.414-.661l1.549-7.872a.566.565 0 0 1 .254-.372.53.53 0 0 1 .4-.067.57.57 0 0 1 .415.662l-1.552 7.872a.56.56 0 0 1-.253.371.53.53 0 0 1-.28.081m3.105-1h-.038a.54.54 0 0 1-.382-.206.583.582 0 0 1 .057-.774l2.664-2.483-2.653-2.312a.583.582 0 0 1-.08-.772.54.54 0 0 1 .377-.218.53.53 0 0 1 .406.129l3.126 2.727a.579.578 0 0 1 .002.862l-3.114 2.904a.536.535 0 0 1-.365.144zm-4.661 0a.536.535 0 0 1-.365-.146L4.186 10.95a.58.58 0 0 1-.005-.846l.01-.01 3.128-2.726a.516.515 0 0 1 .4-.13.54.54 0 0 1 .38.218.583.582 0 0 1-.08.773l-2.65 2.31 2.663 2.482a.579.578 0 0 1 .056.774.536.535 0 0 1-.381.206z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-store"><path fill="#ff7043" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#ffccbc" d="M11 13H8v-3h3m5 0V9l-1-2H7L6 9v1h1v4h5v-4h2v4h1v-4m0-5H7v1h8z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-tasks"><path fill="#5c6bc0" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#c5cae9" d="M9 5v1a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1V5h-1v1h-4V5zm0 3h6v5H9zm4.318 1-1.77 1.627-.859-.805-.689.733L11.54 12 14 9.74z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-test"><path fill="#00bfa5" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#a7ffeb" d="M8 6v1h1v6a2 2 0 0 0 4 0V7h1V6Zm2.5 7a.5.5 0 1 1 .5-.5.5.5 0 0 1-.5.5m1-2a.5.5 0 1 1 .5-.5.5.5 0 0 1-.5.5m.5-2h-2V7h2z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-ui"><path fill="#ab47bc" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#e1bee7" d="M8 7h8v3H8Zm0 4h3v3H8Zm4 0h4v3h-4z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-utils"><path fill="#7cb342" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#dcedc8" d="M9.5 6a.5.5 0 0 0-.5.5v6a.5.5 0 0 0 .5.5h6a.5.5 0 0 0 .5-.5v-6a.5.5 0 0 0-.5-.5zM12 7h1v2h2v1h-2v2h-1v-2h-2V9h2zM7 8v6.5a.5.5 0 0 0 .5.5H14v-1H8V8z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-views"><path fill="#ff7043" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#ffccbc" d="m7 6 1 8 3.5 1 3.5-1 1-8zm4 2.95L9.33 10 11 11.051V12l-2.617-1.693v-.614L11 8Zm3.618 1.364L12 12v-.949L13.681 10 12 8.95V8l2.618 1.687z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-vscode"><path fill="#42a5f5" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#bbdefb" d="M14.073 5 10.12 8.633 7.912 6.97 7 7.5l2.177 2L7 11.5l.912.533 2.209-1.665L14.072 14 16 13.063V5.937ZM14 7.39v4.22L11.199 9.5z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder"><path d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" fill="#90a4ae" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-font"><path fill="#f44336" d="M24 28h4L18 4h-4L4 28h4l8-19.422" /><path fill="#f44336" d="M8 20h16v4H8z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-gemfile"><path fill="#e53935" d="M21.184 10.016V10H10.881l.016.033-.016-.017L8 14l8.032 10L24 14z" /><path fill="#e53935" d="m16 3.455 11 6.286v12.518l-11 6.286-11-6.286V9.741zM16 0 2 8v16l14 8 14-8V8z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-git"><path fill="#e64a19" d="M13.172 2.828 11.78 4.22l1.91 1.91 2 2A2.986 2.986 0 0 1 20 10.81a3.25 3.25 0 0 1-.31 1.31l2.06 2a2.68 2.68 0 0 1 3.37.57 2.86 2.86 0 0 1 .88 2.117 3.02 3.02 0 0 1-.856 2.109A2.9 2.9 0 0 1 23 19.81a2.93 2.93 0 0 1-2.13-.87 2.694 2.694 0 0 1-.56-3.38l-2-2.06a3 3 0 0 1-.31.12V20a3 3 0 0 1 1.44 1.09 2.92 2.92 0 0 1 .56 1.72 2.88 2.88 0 0 1-.878 2.128 2.98 2.98 0 0 1-2.048.871 2.981 2.981 0 0 1-2.514-4.719A3 3 0 0 1 16 20v-6.38a2.96 2.96 0 0 1-1.44-1.09 2.9 2.9 0 0 1-.56-1.72 2.9 2.9 0 0 1 .31-1.31l-3.9-3.9-7.579 7.572a4 4 0 0 0-.001 5.658l10.342 10.342a4 4 0 0 0 5.656 0l10.344-10.344a4 4 0 0 0 0-5.656L18.828 2.828a4 4 0 0 0-5.656 0" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-github-actions-workflow"><path fill="#78909c" d="M26 18h-6a2 2 0 0 0-2 2v2h-6a2 2 0 0 1-2-2v-6h2a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2v6a4 4 0 0 0 4 4h6v2a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2M6.5 12a.5.5 0 0 1-.5-.5v-5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5ZM26 25.5a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5v-5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5Z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-go-mod"><path fill="#ec407a" d="M2 12h4v2H2zm-2 4h6v2H0zm4 4h2v2H4zm16.954-5H14v3h3.239a4.42 4.42 0 0 1-3.531 2 2.65 2.65 0 0 1-2.053-.858 2.86 2.86 0 0 1-.628-2.28A4.515 4.515 0 0 1 15.292 13a2.73 2.73 0 0 1 1.749.584l2.962-1.185A5.6 5.6 0 0 0 15.292 10a7.526 7.526 0 0 0-7.243 6.5 5.614 5.614 0 0 0 5.659 6.5 7.526 7.526 0 0 0 7.243-6.5 6.4 6.4 0 0 0 .003-1.5" /><path fill="#ec407a" d="M26.292 10a7.526 7.526 0 0 0-7.243 6.5 5.614 5.614 0 0 0 5.659 6.5 7.526 7.526 0 0 0 7.243-6.5 5.614 5.614 0 0 0-5.659-6.5m2.681 6.137A4.515 4.515 0 0 1 24.708 20a2.65 2.65 0 0 1-2.053-.858 2.86 2.86 0 0 1-.628-2.28A4.515 4.515 0 0 1 26.292 13a2.65 2.65 0 0 1 2.053.858 2.86 2.86 0 0 1 .628 2.28Z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-go"><path fill="#00acc1" d="M2 12h4v2H2zm-2 4h6v2H0zm4 4h2v2H4zm16.954-5H14v3h3.239a4.42 4.42 0 0 1-3.531 2 2.65 2.65 0 0 1-2.053-.858 2.86 2.86 0 0 1-.628-2.28A4.515 4.515 0 0 1 15.292 13a2.73 2.73 0 0 1 1.749.584l2.962-1.185A5.6 5.6 0 0 0 15.292 10a7.526 7.526 0 0 0-7.243 6.5 5.614 5.614 0 0 0 5.659 6.5 7.526 7.526 0 0 0 7.243-6.5 6.4 6.4 0 0 0 .003-1.5" /><path fill="#00acc1" d="M26.292 10a7.526 7.526 0 0 0-7.243 6.5 5.614 5.614 0 0 0 5.659 6.5 7.526 7.526 0 0 0 7.243-6.5 5.614 5.614 0 0 0-5.659-6.5m2.681 6.137A4.515 4.515 0 0 1 24.708 20a2.65 2.65 0 0 1-2.053-.858 2.86 2.86 0 0 1-.628-2.28A4.515 4.515 0 0 1 26.292 13a2.65 2.65 0 0 1 2.053.858 2.86 2.86 0 0 1 .628 2.28Z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-gradle"><path fill="#0097a7" d="M16 10v2h6c-2 0-3-2-6-2" /><path fill="#0097a7" d="M26 4h-2a4 4 0 0 0-4 4h4a1 1 0 0 1 2 0v4H16v-2h-5.317A2.683 2.683 0 0 0 8 12.683v2.634A2.683 2.683 0 0 0 10.683 18H16v2h-5.98A4.02 4.02 0 0 1 6 16v-2c-2 0-4 4-4 8 0 5 1 6 2 6h4v-4h4v4h4v-4h4v4h4v-6a2 2 0 0 0 2-2v-2a4 4 0 0 0 4-4V8a4 4 0 0 0-4-4m-4 12h-2a2 2 0 0 1-2-2h6a2 2 0 0 1-2 2" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-html"><path fill="#e65100" d="m4 4 2 22 10 2 10-2 2-22Zm19.72 7H11.28l.29 3h11.86l-.802 9.335L15.99 25l-6.635-1.646L8.93 19h3.02l.19 2 3.86.77 3.84-.77.29-4H8.84L8 8h16Z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-image"><path fill="#26a69a" d="M8.5 6h4l-4-4zM3.875 1H9.5l4 4v8.6c0 .773-.616 1.4-1.375 1.4h-8.25c-.76 0-1.375-.627-1.375-1.4V2.4c0-.777.612-1.4 1.375-1.4M4 13.6h8V8l-2.625 2.8L8 9.4zm1.25-7.7c-.76 0-1.375.627-1.375 1.4s.616 1.4 1.375 1.4c.76 0 1.375-.627 1.375-1.4S6.009 5.9 5.25 5.9" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-java"><path fill="#f44336" d="M4 26h24v2H4zM28 4H7a1 1 0 0 0-1 1v13a4 4 0 0 0 4 4h10a4 4 0 0 0 4-4v-4h4a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2m0 8h-4V6h4Z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-javascript"><path fill="#ffca28" d="M2 2v12h12V2zm6 6h1v4a1.003 1.003 0 0 1-1 1H7a1.003 1.003 0 0 1-1-1v-1h1v1h1zm3 0h2v1h-2v1h1a1.003 1.003 0 0 1 1 1v1a1.003 1.003 0 0 1-1 1h-2v-1h2v-1h-1a1.003 1.003 0 0 1-1-1V9a1.003 1.003 0 0 1 1-1" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-jsconfig"><path fill="#757575" d="M15 2H6a2.006 2.006 0 0 0-2 2v22a2.006 2.006 0 0 0 2 2h6v-4H6v-2h6v-2H6v-2h6v-2H6v-2h6v-2h2V4l8 8h2v-1Z" data-mit-no-recolor="true" /><path fill="#ffca28" d="M12 12v18h18V12zm8 12a2.006 2.006 0 0 1-2 2h-2a2.006 2.006 0 0 1-2-2v-2h2v2h2v-8h2zm8-6h-4v2h2a2.006 2.006 0 0 1 2 2v2a2.006 2.006 0 0 1-2 2h-4v-2h4v-2h-2a2.006 2.006 0 0 1-2-2v-2a2.006 2.006 0 0 1 2-2h4z" /></symbol><symbol viewBox="0 -960 960 960" id="icon-mit-json"><path fill="#f9a825" d="M560-160v-80h120q17 0 28.5-11.5T720-280v-80q0-38 22-69t58-44v-14q-36-13-58-44t-22-69v-80q0-17-11.5-28.5T680-720H560v-80h120q50 0 85 35t35 85v80q0 17 11.5 28.5T840-560h40v160h-40q-17 0-28.5 11.5T800-360v80q0 50-35 85t-85 35zm-280 0q-50 0-85-35t-35-85v-80q0-17-11.5-28.5T120-400H80v-160h40q17 0 28.5-11.5T160-600v-80q0-50 35-85t85-35h120v80H280q-17 0-28.5 11.5T240-680v80q0 38-22 69t-58 44v14q36 13 58 44t22 69v80q0 17 11.5 28.5T280-240h120v80z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-key"><path fill="#26a69a" d="M30 14H17.738a8 8 0 1 0 0 4H24v4h4v-4h2Zm-20 5a3 3 0 1 1 3-3 3.003 3.003 0 0 1-3 3" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-kotlin"><defs><linearGradient id="icon-mit-kotlin_a" x1="1.725" x2="22.185" y1="22.67" y2="1.982" gradientTransform="translate(1.306 1.129) scale(.89324)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#7c4dff" /><stop offset=".5" stop-color="#d500f9" /><stop offset="1" stop-color="#ef5350" /></linearGradient></defs><path fill="url(#icon-mit-kotlin_a)" d="M2.975 2.976v18.048h18.05v-.03l-4.478-4.511-4.48-4.515 4.48-4.515 4.443-4.477z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-less"><path fill="#0277bd" d="M8 3a2 2 0 0 0-2 2v4a2 2 0 0 1-2 2H3v2h1a2 2 0 0 1 2 2v4a2 2 0 0 0 2 2h2v-2H8v-5a2 2 0 0 0-2-2 2 2 0 0 0 2-2V5h2V3m6 0a2 2 0 0 1 2 2v4a2 2 0 0 0 2 2h1v2h-1a2 2 0 0 0-2 2v4a2 2 0 0 1-2 2h-2v-2h2v-5a2 2 0 0 1 2-2 2 2 0 0 1-2-2V5h-2V3z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-license"><path fill="#ff5722" d="M8 1a5.5 5.5 0 0 0-4 9.26V15l4-1.5 4 1.5v-4.74A5.49 5.49 0 0 0 8 1m0 1.5a4 4 0 1 1 0 8 4 4 0 0 1 0-8m0 2a2 2 0 1 0 0 4 2 2 0 0 0 0-4" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-lock"><path fill="#ffd54f" d="M25 12h-3V8a6 6 0 0 0-12 0v4H7a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V13a1 1 0 0 0-1-1M14 8a2 2 0 0 1 4 0v4h-4Zm2 17a4 4 0 1 1 4-4 4 4 0 0 1-4 4" /></symbol><symbol fill="none" viewBox="0 0 24 24" id="icon-mit-log"><path d="M0 0h24v24H0z" /><path fill="#afb42b" d="M19 5v9h-5v5H5V5zm0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h10l6-6V5c0-1.1-.9-2-2-2m-7 11H7v-2h5zm5-4H7V8h10z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-makefile"><path fill="#ef5350" d="m29.5 24.02-1.6-.92a4.4 4.4 0 0 0 .09-.9A1.3 1.3 0 0 0 28 22a5.6 5.6 0 0 0-.1-1.1l1.6-.92a.493.493 0 0 0 .18-.68l-1.5-2.6a.45.45 0 0 0-.18-.18V6.01a2.006 2.006 0 0 0-2-2H4a2.006 2.006 0 0 0-2 2V22a2.006 2.006 0 0 0 2 2h10.53l-.03.02a.493.493 0 0 0-.18.68l1.5 2.6a.493.493 0 0 0 .68.18l1.6-.92a5.9 5.9 0 0 0 1.9 1.09v1.85a.495.495 0 0 0 .5.5h3a.495.495 0 0 0 .5-.5v-1.85a5.9 5.9 0 0 0 1.9-1.09l1.6.92a.493.493 0 0 0 .68-.18l1.5-2.6a.493.493 0 0 0-.18-.68M24 22.01a1.99 1.99 0 0 1-.88 1.65l-.18.11a2.04 2.04 0 0 1-1.88 0l-.18-.11a1.99 1.99 0 0 1-.88-1.65V22a2 2 0 0 1 .88-1.66l.18-.11a2.04 2.04 0 0 1 1.88 0l.18.11A2 2 0 0 1 24 22Zm2-4.63-.1.06a5.9 5.9 0 0 0-1.9-1.09V14.5a.495.495 0 0 0-.5-.5h-3a.495.495 0 0 0-.5.5v1.85a5.9 5.9 0 0 0-1.9 1.09l-1.6-.92a.493.493 0 0 0-.68.18l-1.5 2.6a.493.493 0 0 0 .18.68l1.6.92A5.6 5.6 0 0 0 16 22v.01L4 22V10.01h22Z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-markdown"><path fill="#42a5f5" d="m14 10-4 3.5L6 10H4v12h4v-6l2 2 2-2v6h4V10zm12 6v-6h-4v6h-4l6 8 6-8z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-maven"><defs><linearGradient id="icon-mit-maven_a" x1=".125" x2="0" y1="1" y2="0"><stop offset="0%" stop-color="#ab47bc" /><stop offset="37.5%" stop-color="#ab47bc" /><stop offset="37.501%" stop-color="#d32f2f" /><stop offset="54.25%" stop-color="#d32f2f" /><stop offset="54.251%" stop-color="#ff7043" /><stop offset="69.75%" stop-color="#ff7043" /><stop offset="69.751%" stop-color="#ffa726" /><stop offset="100%" stop-color="#ffa726" /></linearGradient></defs><path fill="url(#icon-mit-maven_a)" d="M22 2s-7.64-.37-13.66 7.88C3.72 16.21 2 22 2 22l1.94-1c1.44-2.5 2.19-3.53 3.6-5 2.53.74 5.17.65 7.46-2-2-.56-3.6-.43-5.96-.19C11.69 12 13.5 11.6 16 12l1-2c-1.8-.34-3-.37-4.78.04C14.19 8.65 15.56 7.87 18 8l1.11-1.73c-1.53-.06-2.4-.02-4.19.3 1.61-1.46 3.08-2.12 5.22-2.25 0 0 1.05-1.89 1.86-2.32" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-netlify"><path fill="#00bfa5" d="m11.25 2.232-.127.127v4.567l.127.129h1.526l.126-.13V2.36l-.126-.127H11.25zM6.69 5.455 5.643 6.5v.21l1.6 1.6h1.108l.148-.148V7.055l-1.6-1.6zM1.026 11.11l-.127.127v1.528l.127.127h6.09l.127-.127v-1.528l-.127-.127zm15.858 0-.127.127v1.528l.127.127h6.09l.127-.127v-1.528l-.127-.127zm-9.64 4.58-1.6 1.6v.21l1.045 1.046h.21l1.6-1.6v-1.109l-.148-.146zm4.005 1.256-.127.13v4.566l.127.127h1.526l.126-.127v-4.567l-.126-.129z" /><path fill="#cfd8dc" d="M14.855 15.172h-1.523l-.127-.127V11.48c0-.634-.249-1.125-1.013-1.142-.394-.01-.844 0-1.325.019l-.072.074v4.61l-.127.128H9.146l-.128-.127V8.956l.128-.127h3.425a2.41 2.41 0 0 1 2.41 2.41v3.806z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-nodejs"><path fill="#8bc34a" d="M16 20.003v2h4a2 2 0 0 0 2-2v-2a2 2 0 0 0-2-2h-2v-2h4v-2h-4a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h2v2Z" /><path fill="#8bc34a" d="m16 3.003-12 7v14l4 2h6v-13.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v11.5H8l-2-1.034V11.15l10-5.833 10 5.833v11.703l-10 5.833-1.745-1.022L13 29.253l3 1.75 12-7v-14Z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-npm"><path fill="#e53935" d="M4 4v24h24V4Zm20 20h-4V12h-4v12H8V8h16Z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-pdf"><path fill="#ef5350" d="M13 9h5.5L13 3.5zM6 2h8l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2m4.93 10.44c.41.9.93 1.64 1.53 2.15l.41.32c-.87.16-2.07.44-3.34.93l-.11.04.5-1.04c.45-.87.78-1.66 1.01-2.4m6.48 3.81c.18-.18.27-.41.28-.66.03-.2-.02-.39-.12-.55-.29-.47-1.04-.69-2.28-.69l-1.29.07-.87-.58c-.63-.52-1.2-1.43-1.6-2.56l.04-.14c.33-1.33.64-2.94-.02-3.6a.85.85 0 0 0-.61-.24h-.24c-.37 0-.7.39-.79.77-.37 1.33-.15 2.06.22 3.27v.01c-.25.88-.57 1.9-1.08 2.93l-.96 1.8-.89.49c-1.2.75-1.77 1.59-1.88 2.12-.04.19-.02.36.05.54l.03.05.48.31.44.11c.81 0 1.73-.95 2.97-3.07l.18-.07c1.03-.33 2.31-.56 4.03-.75 1.03.51 2.24.74 3 .74.44 0 .74-.11.91-.3m-.41-.71.09.11c-.01.1-.04.11-.09.13h-.04l-.19.02c-.46 0-1.17-.19-1.9-.51.09-.1.13-.1.23-.1 1.4 0 1.8.25 1.9.35M7.83 17c-.65 1.19-1.24 1.85-1.69 2 .05-.38.5-1.04 1.21-1.69zm3.02-6.91c-.23-.9-.24-1.63-.07-2.05l.07-.12.15.05c.17.24.19.56.09 1.1l-.03.16-.16.82z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-php"><path fill="#1e88e5" d="M12 18.08c-6.63 0-12-2.72-12-6.08s5.37-6.08 12-6.08S24 8.64 24 12s-5.37 6.08-12 6.08m-5.19-7.95c.54 0 .91.1 1.09.31.18.2.22.56.13 1.03-.1.53-.29.87-.58 1.09q-.42.33-1.29.33h-.87l.53-2.76zm-3.5 5.55h1.44l.34-1.75h1.23c.54 0 .98-.06 1.33-.17.35-.12.67-.31.96-.58.24-.22.43-.46.58-.73.15-.26.26-.56.31-.88.16-.78.05-1.39-.33-1.82-.39-.44-.99-.65-1.82-.65H4.59zm7.25-8.33-1.28 6.58h1.42l.74-3.77h1.14c.36 0 .6.06.71.18s.13.34.07.66l-.57 2.93h1.45l.59-3.07c.13-.62.03-1.07-.27-1.36-.3-.27-.85-.4-1.65-.4h-1.27L12 7.35zM18 10.13c.55 0 .91.1 1.09.31.18.2.22.56.13 1.03-.1.53-.29.87-.57 1.09-.29.22-.72.33-1.3.33h-.85l.5-2.76zm-3.5 5.55h1.44l.34-1.75h1.22c.55 0 1-.06 1.35-.17.35-.12.65-.31.95-.58.24-.22.44-.46.58-.73.15-.26.26-.56.32-.88.15-.78.04-1.39-.34-1.82-.36-.44-.99-.65-1.82-.65h-2.75z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-pnpm"><path fill="#e0e0e0" d="M2 22h8v8H2zm10 0h8v8h-8zm10 0h8v8h-8zM12 12h8v8h-8z" /><path fill="#ffb300" d="M2 2h8v8H2zm10 0h8v8h-8zm10 0h8v8h-8zm0 10h8v8h-8z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-powershell"><path fill="#03a9f4" d="M29.07 6H7.677A1.535 1.535 0 0 0 6.24 7.113l-4.2 17.774A.852.852 0 0 0 2.93 26h21.393a1.535 1.535 0 0 0 1.436-1.113L29.96 7.112A.852.852 0 0 0 29.07 6M8.626 23.797a1.4 1.4 0 0 1-1.814-.31l-.007-.009a1.075 1.075 0 0 1 .315-1.599l9.6-6.061-6.102-5.852-.01-.01a1.068 1.068 0 0 1 .084-1.625l.037-.03a1.38 1.38 0 0 1 1.8.07l7.233 6.957a1.1 1.1 0 0 1 .236.739 1.08 1.08 0 0 1-.412.79c-.074.04-.146.119-10.951 6.935ZM24 22.94A1.135 1.135 0 0 1 22.803 24h-5.634a1.061 1.061 0 1 1 .001-2.112h5.633A1.134 1.134 0 0 1 24 22.938Z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-prettier"><path fill="#f44336" d="M2 8h4v1H2zm0 6h4v1H2zm9-10h3v1h-3zM2 2h3v1H2z" /><path fill="#f9a825" d="M9 2h3v1H9zm1 4h4v1h-4zm-5 6h1v1H5zm-3-2h6v1H2z" /><path fill="#26a69a" d="M2 12h3v1H2zm7-4h5v1H9zM2 4h4v1H2zm3-2h4v1H5z" /><path fill="#ba68c8" d="M2 6h3v1H2zm7-2h2v1H9zm-1 6h4v1H8z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-python"><path fill="#0288d1" d="M9.86 2A2.86 2.86 0 0 0 7 4.86v1.68h4.29c.39 0 .71.57.71.96H4.86A2.86 2.86 0 0 0 2 10.36v3.781a2.86 2.86 0 0 0 2.86 2.86h1.18v-2.68a2.85 2.85 0 0 1 2.85-2.86h5.25c1.58 0 2.86-1.271 2.86-2.851V4.86A2.86 2.86 0 0 0 14.14 2zm-.72 1.61c.4 0 .72.12.72.71s-.32.891-.72.891c-.39 0-.71-.3-.71-.89s.32-.711.71-.711" /><path fill="#fdd835" d="M17.959 7v2.68a2.85 2.85 0 0 1-2.85 2.859H9.86A2.85 2.85 0 0 0 7 15.389v3.75a2.86 2.86 0 0 0 2.86 2.86h4.28A2.86 2.86 0 0 0 17 19.14v-1.68h-4.291c-.39 0-.709-.57-.709-.96h7.14A2.86 2.86 0 0 0 22 13.64V9.86A2.86 2.86 0 0 0 19.14 7zM8.32 11.513l-.004.004.038-.004zm6.54 7.276c.39 0 .71.3.71.89a.71.71 0 0 1-.71.71c-.4 0-.72-.12-.72-.71s.32-.89.72-.89" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-react"><path fill="#00bcd4" d="M16 12c7.444 0 12 2.59 12 4s-4.556 4-12 4-12-2.59-12-4 4.556-4 12-4m0-2c-7.732 0-14 2.686-14 6s6.268 6 14 6 14-2.686 14-6-6.268-6-14-6" /><path fill="#00bcd4" d="M16 14a2 2 0 1 0 2 2 2 2 0 0 0-2-2" /><path fill="#00bcd4" d="M10.458 5.507c2.017 0 5.937 3.177 9.006 8.493 3.722 6.447 3.757 11.687 2.536 12.392a.9.9 0 0 1-.457.1c-2.017 0-5.938-3.176-9.007-8.492C8.814 11.553 8.779 6.313 10 5.608a.9.9 0 0 1 .458-.1m-.001-2A2.87 2.87 0 0 0 9 3.875C6.13 5.532 6.938 12.304 10.804 19c3.284 5.69 7.72 9.493 10.74 9.493A2.87 2.87 0 0 0 23 28.124c2.87-1.656 2.062-8.428-1.804-15.124-3.284-5.69-7.72-9.493-10.74-9.493Z" /><path fill="#00bcd4" d="M21.543 5.507a.9.9 0 0 1 .457.1c1.221.706 1.186 5.946-2.536 12.393-3.07 5.316-6.99 8.493-9.007 8.493a.9.9 0 0 1-.457-.1C8.779 25.686 8.814 20.446 12.536 14c3.07-5.316 6.99-8.493 9.007-8.493m0-2c-3.02 0-7.455 3.804-10.74 9.493C6.939 19.696 6.13 26.468 9 28.124a2.87 2.87 0 0 0 1.457.369c3.02 0 7.455-3.804 10.74-9.493C25.061 12.304 25.87 5.532 23 3.876a2.87 2.87 0 0 0-1.457-.369" /></symbol><symbol fill="none" viewBox="0 0 16 16" id="icon-mit-readme"><path d="M0 0h24v24H0z" /><path fill="#42a5f5" d="M8 1C4.136 1 1 4.136 1 8s3.136 7 7 7 7-3.136 7-7-3.136-7-7-7m1 11H7V7.5h2zm0-6H7V4h2z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-ruby"><path fill="#f44336" d="M18.041 3.177c2.24.382 2.879 1.919 2.843 3.527V6.67l-1.013 13.266-13.132.897h.008c-1.093-.044-3.518-.151-3.634-3.545l1.217-2.222 2.462 5.74 2.097-6.77-.045.009.018-.018 6.85 2.186L13.945 9.3l6.53-.409-5.144-4.212 2.71-1.51v.009M3.113 17.252v.017zM6.916 6.874c2.63-2.622 6.033-4.168 7.34-2.844 1.297 1.306-.072 4.523-2.702 7.135-2.666 2.613-6.015 4.248-7.322 2.933-1.306-1.324.036-4.612 2.675-7.224z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-rust"><path fill="#ff7043" d="m30 12-4-2V6h-4l-2-4-4 2-4-2-2 4H6v4l-4 2 2 4-2 4 4 2v4h4l2 4 4-2 4 2 2-4h4v-4l4-2-2-4ZM6 16a9.9 9.9 0 0 1 .842-4H10v8H6.842A9.9 9.9 0 0 1 6 16m10 10a9.98 9.98 0 0 1-7.978-4H16v-2h-2v-2h4c.819.819.297 2.308 1.179 3.37a1.89 1.89 0 0 0 1.46.63h3.34A9.98 9.98 0 0 1 16 26m-2-12v-2h4a1 1 0 0 1 0 2Zm11.158 6H24a2.006 2.006 0 0 1-2-2 2 2 0 0 0-2-2 3 3 0 0 0 3-3q0-.08-.004-.161A3.115 3.115 0 0 0 19.83 10H8.022a9.986 9.986 0 0 1 17.136 10" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-supabase"><path fill="#66bb6a" d="M29.92 12H16V2.85a1 1 0 0 0-1.78-.624L1.3 18.376A1 1 0 0 0 2.08 20H16v9.15a1 1 0 0 0 1.78.624l12.92-16.15A1 1 0 0 0 29.92 12" /></symbol><symbol viewBox="0 0 300 300" id="icon-mit-svelte"><path fill="#ff5722" d="M175.94 24.328c-13.037.252-26.009 3.872-37.471 11.174L79.912 72.818a67.13 67.13 0 0 0-30.355 44.906 70.8 70.8 0 0 0 6.959 45.445 67.2 67.2 0 0 0-10.035 25.102 71.54 71.54 0 0 0 12.236 54.156c23.351 33.41 69.468 43.311 102.81 22.07l58.559-37.158a67.36 67.36 0 0 0 30.355-44.906 70.77 70.77 0 0 0-6.982-45.422 67.65 67.65 0 0 0 10.059-25.102 71.63 71.63 0 0 0-12.236-54.156v-.18c-15.324-21.925-40.453-33.727-65.342-33.246zm5.137 28.68a46.5 46.5 0 0 1 36.09 19.969 42.98 42.98 0 0 1 7.365 32.557 45 45 0 0 1-1.393 5.455l-1.123 3.37-2.986-2.247a75.9 75.9 0 0 0-22.902-11.45l-2.244-.651.201-2.246a13.16 13.16 0 0 0-2.379-8.711 13.99 13.99 0 0 0-14.953-5.412 12.8 12.8 0 0 0-3.594 1.572l-58.578 37.25a12.24 12.24 0 0 0-5.502 8.15 13.1 13.1 0 0 0 2.246 9.834 14.03 14.03 0 0 0 14.93 5.569 13.5 13.5 0 0 0 3.594-1.573l22.453-14.234a41.8 41.8 0 0 1 11.898-5.232 46.48 46.48 0 0 1 49.914 18.502 43.02 43.02 0 0 1 7.363 32.557 40.42 40.42 0 0 1-18.254 27.078l-58.58 37.316a43 43 0 0 1-11.898 5.23A46.545 46.545 0 0 1 82.81 227.14a42.98 42.98 0 0 1-7.341-32.557 38 38 0 0 1 1.39-5.41l1.102-3.37 3.008 2.246a75.9 75.9 0 0 0 22.836 11.361l2.244.65-.201 2.247a13.25 13.25 0 0 0 2.447 8.644 14.03 14.03 0 0 0 15.043 5.569 13.1 13.1 0 0 0 3.592-1.573l58.467-37.316a12.17 12.17 0 0 0 5.502-8.173 12.96 12.96 0 0 0-2.246-9.811 14.03 14.03 0 0 0-15.043-5.568 12.8 12.8 0 0 0-3.592 1.57l-22.453 14.258a42.9 42.9 0 0 1-11.877 5.209 46.52 46.52 0 0 1-49.846-18.5 43.02 43.02 0 0 1-7.297-32.557A40.42 40.42 0 0 1 96.798 96.98l58.646-37.316a42.8 42.8 0 0 1 11.811-5.21 46.5 46.5 0 0 1 13.822-1.444z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-svg"><path fill="#ffb300" d="M29.168 14.03a2.7 2.7 0 0 0-1.968-.83 2.51 2.51 0 0 0-1.929.8h-4.443l3.078-3.078a2.835 2.835 0 0 0 2.857-2.842 2.6 2.6 0 0 0-.831-1.969 2.82 2.82 0 0 0-2.014-.788 2.67 2.67 0 0 0-1.968.788 2.36 2.36 0 0 0-.812 1.922L18 11.17V6.726a2.51 2.51 0 0 0 .8-1.929 2.7 2.7 0 0 0-.832-1.968 2.745 2.745 0 0 0-3.936 0 2.7 2.7 0 0 0-.832 1.968 2.51 2.51 0 0 0 .8 1.93v4.443l-3.138-3.138a2.36 2.36 0 0 0-.812-1.922 2.66 2.66 0 0 0-1.968-.788 2.83 2.83 0 0 0-2.014.788 2.6 2.6 0 0 0-.831 1.969 2.74 2.74 0 0 0 .831 2.013 2.8 2.8 0 0 0 2.026.829l3.078 3.078H6.729a2.51 2.51 0 0 0-1.929-.8 2.7 2.7 0 0 0-1.968.831 2.745 2.745 0 0 0 0 3.937 2.7 2.7 0 0 0 1.968.832 2.51 2.51 0 0 0 1.929-.8h4.443l-3.078 3.077a2.835 2.835 0 0 0-2.857 2.842 2.6 2.6 0 0 0 .831 1.969 2.82 2.82 0 0 0 2.014.788 2.67 2.67 0 0 0 1.968-.788 2.36 2.36 0 0 0 .812-1.922L14 20.827v4.444a2.51 2.51 0 0 0-.8 1.929 2.784 2.784 0 0 0 4.768 1.968A2.7 2.7 0 0 0 18.8 27.2a2.51 2.51 0 0 0-.8-1.929v-4.444l3.138 3.138a2.36 2.36 0 0 0 .812 1.922 2.66 2.66 0 0 0 1.968.788 2.83 2.83 0 0 0 2.014-.788 2.6 2.6 0 0 0 .831-1.969 2.74 2.74 0 0 0-.831-2.013 2.8 2.8 0 0 0-2.026-.829L20.828 18h4.443a2.51 2.51 0 0 0 1.93.8 2.784 2.784 0 0 0 1.967-4.769Z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-swift"><path fill="#ff6e40" d="M17.087 19.721c-2.36 1.36-5.59 1.5-8.86.1a13.8 13.8 0 0 1-6.23-5.32c.67.55 1.46 1 2.3 1.4 3.37 1.57 6.73 1.46 9.1 0-3.37-2.59-6.24-5.96-8.37-8.71-.45-.45-.78-1.01-1.12-1.51 8.28 6.05 7.92 7.59 2.41-1.01 4.89 4.94 9.43 7.74 9.43 7.74.16.09.25.16.36.22.1-.25.19-.51.26-.78.79-2.85-.11-6.12-2.08-8.81 4.55 2.75 7.25 7.91 6.12 12.24-.03.11-.06.22-.05.39 2.24 2.83 1.64 5.78 1.35 5.22-1.21-2.39-3.48-1.65-4.62-1.17" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-toml"><path fill="#cfd8dc" d="M4 6V4h8v2H9v7H7V6z" /><path fill="#ef5350" d="M4 1v1H2v12h2v1H1V1zm8 0v1h2v12h-2v1h3V1z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-tsconfig"><path fill="#757575" d="M15 2H6a2.006 2.006 0 0 0-2 2v22a2.006 2.006 0 0 0 2 2h6v-4H6v-2h6v-2H6v-2h6v-2H6v-2h6v-2h2V4l8 8h2v-1Z" data-mit-no-recolor="true" /><path fill="#0288d1" d="M12 12v18h18V12Zm8 6h-2v8h-2v-8h-2v-2h6Zm8 0h-4v2h2a2.006 2.006 0 0 1 2 2v2a2.006 2.006 0 0 1-2 2h-4v-2h4v-2h-2a2.006 2.006 0 0 1-2-2v-2a2.006 2.006 0 0 1 2-2h4Z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-tune"><path fill="#fbc02d" d="M12 10h10v2H12z" /><path fill="#fbc02d" d="M16 4h2v8h-2zm4 18h10v2H20zm4 2h2v4h-2zm0-20h2v14h-2zM2 18h10v2H2z" /><path fill="#fbc02d" d="M6 18h2v10H6zM6 4h2v10H6zm10 12h2v12h-2z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-typescript"><path fill="#0288d1" d="M2 2v12h12V2zm4 6h3v1H8v4H7V9H6zm5 0h2v1h-2v1h1a1.003 1.003 0 0 1 1 1v1a1.003 1.003 0 0 1-1 1h-2v-1h2v-1h-1a1.003 1.003 0 0 1-1-1V9a1.003 1.003 0 0 1 1-1" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-vercel"><path fill="#cfd8dc" d="m16 6 12 20H4Z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-video"><path fill="#ff9800" d="m24 6 2 6h-4l-2-6h-3l2 6h-4l-2-6h-3l2 6H8L6 6H5a3 3 0 0 0-3 3v14a3 3 0 0 0 3 3h22a3 3 0 0 0 3-3V6Z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-vite"><path fill="#a0f" d="M29.313 12h-6.664a1.427 1.427 0 0 1-1.1-2.24l4.398-6.676A.703.703 0 0 0 25.397 2H8.428a.62.62 0 0 0-.55.289l-5.77 8.627A.703.703 0 0 0 2.658 12h8.175a1.427 1.427 0 0 1 1.099 2.24l-4.48 6.676A.702.702 0 0 0 8 22l6.695.002A1.34 1.34 0 0 1 16 23.375v5.934a.652.652 0 0 0 1.168.433l12.694-16.586a.725.725 0 0 0-.55-1.156" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-vue"><path fill="#41b883" d="M1.791 3.851 12 21.471 22.209 3.936V3.85H18.24l-6.18 10.616L5.906 3.851z" /><path fill="#35495e" d="m5.907 3.851 6.152 10.617L18.24 3.851h-3.723L12.084 8.03 9.66 3.85z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-webpack"><path fill="#fafafa" fill-opacity=".785" d="m19.376 15.988-7.708 4.45-7.709-4.45v-8.9l7.709-4.451 7.708 4.45z" /><path fill="#90caf9" d="M12.286 1.98c-.21 0-.41.059-.57.179l-7.9 4.44c-.32.17-.53.5-.53.88v9c0 .38.21.711.53.881l7.9 4.44c.16.12.36.18.57.18s.41-.06.57-.18l7.9-4.44c.32-.17.53-.5.53-.88v-9c0-.38-.21-.712-.53-.882l-7.9-4.44a.95.95 0 0 0-.57-.179zm0 2.15 7 3.94v2.103h-.016v5.177h.016v.54l-7 3.939-7-3.94V8.07zm0 2.08-4.9 2.83 4.9 2.83 4.9-2.83zm-5 5.08v3.58l4 2.309v-3.58l-4-2.31zm10 0-4 2.308v3.58l4-2.308z" /><path fill="#0277bd" d="m12.286 6.21-4.9 2.83 4.9 2.83 4.9-2.83zm-5 5.08v3.58l4 2.309v-3.58l-4-2.31zm10 0-4 2.308v3.58l4-2.308z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-xml"><path fill="#8bc34a" d="M13 9h5.5L13 3.5zM6 2h8l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.11.89-2 2-2m.12 13.5 3.74 3.74 1.42-1.41-2.33-2.33 2.33-2.33-1.42-1.41zm11.16 0-3.74-3.74-1.42 1.41 2.33 2.33-2.33 2.33 1.42 1.41z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-yaml"><path fill="#ff5252" d="M13 9h5.5L13 3.5zM6 2h8l6 6v12c0 1.1-.9 2-2 2H6c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2m12 16v-2H9v2zm-4-4v-2H6v2z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-yarn"><path fill="#0288d1" d="M27.575 23.967a9.9 9.9 0 0 0-3.751 1.726 22.6 22.6 0 0 1-5.537 2.504 1.55 1.55 0 0 1-.931.52 59 59 0 0 1-6.11.548c-1.102.008-1.777-.282-1.965-.735a1.49 1.49 0 0 1 .82-1.965 3.6 3.6 0 0 1-.486-.359c-.163-.162-.334-.487-.385-.367-.213.52-.324 1.794-.897 2.366-.786.795-2.273.53-3.153.069-.965-.513.069-1.718.069-1.718a.69.69 0 0 1-.94-.324 4.6 4.6 0 0 1-.632-2.794 5.2 5.2 0 0 1 1.674-2.76 8.84 8.84 0 0 1 .624-4.17 9.9 9.9 0 0 1 3-3.469S7.136 11.015 7.82 9.177c.444-1.196.623-1.187.769-1.239a3.44 3.44 0 0 0 1.375-.811 4.99 4.99 0 0 1 4.178-1.607s1.094-3.357 2.12-2.7a17.4 17.4 0 0 1 1.452 2.735s1.213-.71 1.35-.445a10.74 10.74 0 0 1 .495 5.81 13.3 13.3 0 0 1-2.46 5.127c-.129.214 1.47.889 2.477 3.683.932 2.554.103 4.699.248 4.938.026.043.034.06.034.06s1.068.085 3.213-1.24a8.05 8.05 0 0 1 4.05-1.52 1.026 1.026 0 0 1 .453 2Z" /></symbol>`,e.insertBefore(t,e.lastChild)}document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,e):e()}var YT=Object.assign({}),XT=[];for(let e in YT){let t=e.split(`svg/`)[1].split(`.svg`)[0];XT.push(t)}function ZT(e){e.component(`svg-icon`,on)}var QT=lt(JT);QT.use($e()),QT.use($t),ZT(QT),QT.mount(`#app`);export{hn as a,Zn as i,xr as n,Xn as r,Ow as t};
|
|
64
|
+
`);i=o.pop()??``;for(let t of o)if(t.trim())try{e(JSON.parse(t))}catch{}}if(i.trim())try{e(JSON.parse(i))}catch{}}var wx={key:3},Tx={key:4},Ex={key:5},Dx=$(X({__name:`UpgradeDialog`,props:{modelValue:{type:Boolean},logs:{},status:{}},emits:[`update:modelValue`,`retry`],setup(e,{emit:n}){let r=e,i=n,a=w(null);F(()=>r.logs,async()=>{await p(),a.value&&(a.value.scrollTop=a.value.scrollHeight)});function o(){r.status!==`running`&&i(`update:modelValue`,!1)}function s(){i(`retry`)}return(e,n)=>{let r=t,c=P,l=re;return G(),U(l,{"model-value":e.modelValue,"onUpdate:modelValue":n[0]||=e=>i(`update:modelValue`,e),title:B(Q)(`@F13B4:升级`),width:`680px`,"close-on-click-modal":!1,"close-on-press-escape":!1,"show-close":e.status!==`running`,onClose:o},{footer:R(()=>[e.status===`failed`?(G(),U(c,{key:0,type:`primary`,onClick:s},{default:R(()=>[Z(q(B(Q)(`@F13B4:重试`)),1)]),_:1})):V(``,!0),e.status===`success`?(G(),U(c,{key:1,onClick:o},{default:R(()=>[Z(q(B(Q)(`@F13B4:完成`)),1)]),_:1})):V(``,!0),e.status===`running`?(G(),U(c,{key:2,disabled:``},{default:R(()=>[Z(q(B(Q)(`@F13B4:升级中`))+`... `,1)]),_:1})):V(``,!0)]),default:R(()=>[W(`div`,{class:x([`upgrade-status`,`is-${e.status}`])},[e.status===`running`?(G(),U(r,{key:0,class:`is-loading`},{default:R(()=>[z(B(h))]),_:1})):e.status===`success`?(G(),U(r,{key:1,color:`#67c23a`},{default:R(()=>[z(B(Nt))]),_:1})):(G(),U(r,{key:2,color:`#f56c6c`},{default:R(()=>[z(B(dt))]),_:1})),e.status===`running`?(G(),Y(`span`,wx,q(B(Q)(`@F13B4:升级中`)),1)):e.status===`success`?(G(),Y(`span`,Tx,q(B(Q)(`@F13B4:升级完成`)),1)):(G(),Y(`span`,Ex,q(B(Q)(`@F13B4:升级失败`)),1))],2),W(`pre`,{ref_key:`logEl`,ref:a,class:`upgrade-log`},q(e.logs||B(Q)(`@F13B4:等待日志输出`)),513)]),_:1},8,[`model-value`,`title`,`show-close`])}}}),[[`__scopeId`,`data-v-d16c258e`]]),Ox={class:`app-version-badge`},kx=[`aria-label`],Ax=[`aria-label`],jx=`https://github.com/xz333221/zen-gitsync/releases`,Mx=`app-version-check`,Nx=3600*1e3,Px=$(X({__name:`AppVersionBadge`,setup(e){let t=w(null),n=w(!1),r=w(``),i=w(`running`);function a(){try{let e=sessionStorage.getItem(Mx);if(!e)return null;let{at:t,data:n}=JSON.parse(e);return Date.now()-t>Nx?null:n}catch{return null}}function o(e){try{sessionStorage.setItem(Mx,JSON.stringify({at:Date.now(),data:e}))}catch{}}async function s(e=!1){let n=a();n&&(t.value=n);try{let n=await Sx();t.value=n,o(n),!e&&n.success&&n.hasUpdate&&J({type:`success`,message:Q(`@F13B4:发现新版本 {version}`,{version:n.latest??``}),duration:4e3})}catch(t){e||J({type:`warning`,message:Q(`@F13B4:检查更新失败 {error}`,{error:t?.message||``})})}}async function c(){if(t.value?.hasUpdate){try{await gt.confirm(Q(`@F13B4:确定要从 {current} 升级到 {latest} 吗?`,{current:t.value.current,latest:t.value.latest}),Q(`@F13B4:升级`),{confirmButtonText:Q(`@F13B4:确定升级`),cancelButtonText:Q(`@F13B4:取消`),type:`info`})}catch{return}r.value=``,i.value=`running`,n.value=!0,await Cx(e=>{if(e.type===`done`){if(i.value=e.code===0?`success`:`failed`,e.code===0)try{sessionStorage.removeItem(Mx)}catch{}}else e.message&&(r.value+=e.message)})}}return mt(()=>{s(!0)}),(e,a)=>{let o=A,s=P;return G(),Y(`div`,Ox,[z(o,{content:B(Q)(`@F13B4:在 GitHub 上查看源码`),placement:`top`,effect:`dark`,"show-after":300},{default:R(()=>[W(`a`,{href:`https://github.com/xz333221/zen-gitsync`,target:`_blank`,rel:`noopener noreferrer`,class:`badge-icon-link`,"aria-label":B(Q)(`@F13B4:在 GitHub 上查看源码`)},a[1]||=[W(`svg`,{viewBox:`0 0 24 24`,width:`15`,height:`15`,"aria-hidden":`true`,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`},[W(`path`,{d:`M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0 1 12 6.844a9.59 9.59 0 0 1 2.504.337c1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.02 10.02 0 0 0 22 12.017C22 6.484 17.522 2 12 2z`})],-1)],8,kx)]),_:1},8,[`content`]),z(o,{content:B(Q)(`@F13B4:在 npm 上查看包`),placement:`top`,effect:`dark`,"show-after":300},{default:R(()=>[W(`a`,{href:`https://www.npmjs.com/package/zen-gitsync`,target:`_blank`,rel:`noopener noreferrer`,class:`badge-icon-link badge-icon-link--npm`,"aria-label":B(Q)(`@F13B4:在 npm 上查看包`)},a[2]||=[W(`svg`,{viewBox:`0 0 24 24`,width:`15`,height:`15`,"aria-hidden":`true`,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`},[W(`path`,{d:`M2 2v20h20V2H2zm17.167 17.167H12.5v-10h-3.333v10H4.833V4.833h14.334v14.334z`})],-1)],8,Ax)]),_:1},8,[`content`]),z(o,{content:B(Q)(`@F13B4:查看更新`),placement:`top`,effect:`dark`,"show-after":300},{default:R(()=>[W(`a`,{href:jx,target:`_blank`,rel:`noopener noreferrer`,class:`version-link`},`v`+q(B(`2.13.9`)),1)]),_:1},8,[`content`]),t.value?.hasUpdate?(G(),U(o,{key:0,content:B(Q)(`@F13B4:发现新版本 {version}`,{version:t.value.latest??``}),placement:`top`,effect:`dark`,"show-after":300},{default:R(()=>[z(s,{class:`upgrade-btn`,size:`small`,type:`primary`,onClick:c},{default:R(()=>[Z(q(B(Q)(`@F13B4:升级`)),1)]),_:1})]),_:1},8,[`content`])):V(``,!0),z(Dx,{modelValue:n.value,"onUpdate:modelValue":a[0]||=e=>n.value=e,logs:r.value,status:i.value,onRetry:c},null,8,[`modelValue`,`logs`,`status`])])}}}),[[`__scopeId`,`data-v-c12c1164`]]),Fx={key:0,class:`branch-info`},Ix={class:`branch-wrapper`},Lx={class:`branch-btn`},Rx={class:`branch-btn-name`},zx={class:`branch-btn-caret`},Bx={class:`branch-popover-inner`},Vx={class:`branch-search`},Hx={class:`branch-list`},Ux=[`onClick`],Wx={key:1,class:`branch-item-check-placeholder`},Gx={class:`branch-item-name`},Kx={key:0,class:`branch-empty`},qx={class:`branch-popover-footer`},Jx={class:`create-branch-content`},Yx={class:`form-label`},Xx={class:`form-label`},Zx={class:`dialog-footer`},Qx={class:`footer-actions`},$x=[`disabled`],eS=$(X({__name:`BranchSelector`,emits:[`branchChanged`],setup(e,{emit:n}){let r=yn(),o=n,s=w(!1),c=w(``),l=K(()=>{let e=c.value.trim().toLowerCase();return e?r.allBranches.filter(t=>t.toLowerCase().includes(e)):r.allBranches});async function u(e){if(e===r.currentBranch){s.value=!1;return}s.value=!1,await r.changeBranch(e)&&(o(`branchChanged`),r.refreshLog())}let d=w(!1),f=w(``),p=w(``);function h(){s.value=!1,p.value=r.currentBranch,d.value=!0}async function g(){await r.createBranch(f.value,p.value)&&(d.value=!1,f.value=``,o(`branchChanged`))}let v=w(!1);async function y(){if(!v.value){v.value=!0;try{await Promise.all([r.getCurrentBranch(!0),r.getBranchStatus(!0),r.getAllBranches()]),o(`branchChanged`),r.refreshLog()}finally{v.value=!1}}}return(e,n)=>{let o=t,b=Me,S=Ht,C=ft,ee=_,w=m,T=i;return B(r).currentBranch?(G(),Y(`div`,Fx,[W(`div`,Ix,[z(S,{visible:s.value,"onUpdate:visible":n[1]||=e=>s.value=e,placement:`top-start`,width:260,trigger:`click`,"popper-class":`branch-popover`,"show-arrow":!1,onShow:n[2]||=e=>c.value=``},{reference:R(()=>[W(`button`,Lx,[z(on,{"icon-class":`git-branch`,"class-name":`branch-btn-icon`}),W(`span`,Rx,q(B(r).currentBranch),1),W(`span`,zx,[z(o,null,{default:R(()=>n[7]||=[W(`svg`,{viewBox:`0 0 1024 1024`,xmlns:`http://www.w3.org/2000/svg`},[W(`path`,{fill:`currentColor`,d:`M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.776a29.12 29.12 0 0 0 0-41.6 30.592 30.592 0 0 0-42.752 0z`})],-1)]),_:1})])])]),default:R(()=>[W(`div`,Bx,[W(`div`,Vx,[z(b,{modelValue:c.value,"onUpdate:modelValue":n[0]||=e=>c.value=e,placeholder:B(Q)(`@F13B4:搜索或签出分支`),size:`small`,clearable:``,autofocus:``},null,8,[`modelValue`,`placeholder`])]),W(`div`,Hx,[(G(!0),Y(H,null,L(l.value,e=>(G(),Y(`div`,{key:e,class:x([`branch-item`,{"is-active":e===B(r).currentBranch}]),onClick:t=>u(e)},[e===B(r).currentBranch?(G(),U(o,{key:0,class:`branch-item-check`},{default:R(()=>[z(B(St))]),_:1})):(G(),Y(`span`,Wx)),z(on,{"icon-class":`git-branch`,"class-name":`branch-item-icon`}),W(`span`,Gx,q(e),1)],10,Ux))),128)),l.value.length===0?(G(),Y(`div`,Kx,q(B(Q)(`@F13B4:没有匹配的分支`)),1)):V(``,!0)]),W(`div`,qx,[W(`button`,{class:`branch-create-btn`,onClick:h},[z(o,null,{default:R(()=>[z(B(pe))]),_:1}),W(`span`,null,q(B(Q)(`@F13B4:创建新分支`)),1)])])])]),_:1},8,[`visible`]),z(ln,{tooltip:B(Q)(`@CMDCON:刷新`),onClick:y},{default:R(()=>[z(o,{class:x({"is-loading":v.value})},{default:R(()=>[z(B(te))]),_:1},8,[`class`])]),_:1},8,[`tooltip`])]),z(pa,{modelValue:d.value,"onUpdate:modelValue":n[6]||=e=>d.value=e,title:B(Q)(`@F13B4:创建新分支`),size:`small`,"destroy-on-close":!0,"append-to-body":!0,"custom-class":`create-branch-dialog`},{footer:R(()=>[W(`div`,Zx,[W(`div`,Qx,[W(`button`,{type:`button`,class:`dialog-cancel-btn`,onClick:n[5]||=e=>d.value=!1},q(B(Q)(`@F13B4:取消`)),1),W(`button`,{type:`button`,class:`dialog-confirm-btn`,onClick:g,disabled:B(r).isCreatingBranch},[B(r).isCreatingBranch?(G(),U(o,{key:1,class:`is-loading`},{default:R(()=>n[8]||=[W(`svg`,{viewBox:`0 0 1024 1024`,xmlns:`http://www.w3.org/2000/svg`},[W(`path`,{fill:`currentColor`,d:`M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32zm0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32zm448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32zm-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32z`})],-1)]),_:1})):(G(),U(o,{key:0},{default:R(()=>[z(B(St))]),_:1})),W(`span`,null,q(B(Q)(`@F13B4:创建`)),1)],8,$x)])])]),default:R(()=>[W(`div`,Jx,[z(T,{model:{newBranchName:f.value,selectedBaseBranch:p.value},"label-position":`top`},{default:R(()=>[z(C,null,{label:R(()=>[W(`div`,Yx,[z(o,{class:`label-icon`},{default:R(()=>[z(B(pe))]),_:1}),W(`span`,null,q(B(Q)(`@F13B4:新分支名称`)),1)])]),default:R(()=>[z(b,{modelValue:f.value,"onUpdate:modelValue":n[3]||=e=>f.value=e,placeholder:B(Q)(`@F13B4:请输入新分支名称`),class:`modern-input`,size:`large`,onKeyup:ht(g,[`enter`])},null,8,[`modelValue`,`placeholder`])]),_:1}),z(C,null,{label:R(()=>[W(`div`,Xx,[z(o,{class:`label-icon`},{default:R(()=>[z(B(a))]),_:1}),W(`span`,null,q(B(Q)(`@F13B4:基于分支`)),1)])]),default:R(()=>[z(w,{modelValue:p.value,"onUpdate:modelValue":n[4]||=e=>p.value=e,placeholder:B(Q)(`@F13B4:选择基础分支`),class:`modern-select`,size:`large`,style:{width:`100%`}},{default:R(()=>[(G(!0),Y(H,null,L(B(r).allBranches,e=>(G(),U(ee,{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1})]),_:1},8,[`model`])])]),_:1},8,[`modelValue`,`title`])])):V(``,!0)}}}),[[`__scopeId`,`data-v-696d767f`]]),tS=`data:image/svg+xml,%3csvg%20t='1777178793104'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='5903'%20width='200'%20height='200'%3e%3cpath%20d='M895.914667%20467.157333H1024v132.352h-128v129.194667h-63.445333V853.333333H768v-124.629333h-63.445333V853.333333H640v-124.629333H384V853.333333H319.488v-124.629333H256V853.333333H191.445333v-124.629333H128V599.466667H0v-132.266667h128V213.333333h767.914667v253.824zM256%20467.157333h63.488V345.685333H256v121.472z%20m448.426667%200H768V345.685333h-63.573333v121.472z'%20fill='%23D97757'%20p-id='5904'%3e%3c/path%3e%3c/svg%3e`,nS=[`title`],rS={class:`directory-actions flex`},iS=[`src`],aS={class:`claude-menu`,role:`menu`},oS={class:`claude-menu__label`},sS={class:`directory-content`},cS={class:`form-label`},lS={class:`directory-input-group`},uS={class:`form-label`},dS={class:`recent-directories`},fS=[`title`,`onClick`],pS=[`title`],mS={key:0,class:`dir-missing-badge`},hS=[`onClick`],gS={class:`dialog-footer`},_S={class:`footer-actions`},vS=[`disabled`],yS=$(X({__name:`DirectorySelector`,props:{variant:{default:`default`}},emits:[`toggleNpmPanel`,`toggleCustomCmdsPanel`],setup(e){let n=e,r=hn(),a=yn(),{currentLocale:o}=bt(mn()),s=K(()=>r.currentDirectory),c=K(()=>tn(s.value)),l=K(()=>{let e=r.theme;return e===`dark`?!0:e===`light`?!1:window.matchMedia?.(`(prefers-color-scheme: dark)`).matches??!1});async function u(){if(s.value)try{await navigator.clipboard.writeText(s.value),J.success(Q(`@67CE7:已复制目录路径`))}catch{J.error(Q(`@67CE7:复制失败`))}}let d=w(!1),f=w(``),p=w(!1),m=w([]),h=w(!1);function g(){f.value=s.value,d.value=!0,O()}async function _(){try{if(!s.value){J.warning(`当前目录路径为空`);return}let e=await(await fetch(`/api/open_directory`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:s.value})})).json();e.success?J.success(`已在文件管理器中打开目录`):e.error&&J.error(e.error)}catch(e){J.error(`${Q(`@67CE7:打开目录失败: `)}${e.message}`)}}async function v(){try{if(!s.value){J.warning(`当前目录路径为空`);return}let e=await(await fetch(`/api/open-directory-with-vscode`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:s.value})})).json();e.success?J.success(`已用 VSCode 打开目录`):e.error&&J.error(e.error)}catch(e){J.error(`打开失败: ${e.message}`)}}async function y(e){T();try{if(!s.value){J.warning(`当前目录路径为空`);return}let t=await(await fetch(`/api/open-directory-with-claude-code`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:s.value,...e?{permissionMode:e}:{}})})).json();t.success?J.success(t.message||`已用 Claude Code 打开目录`):t.error&&J.error(t.error)}catch(e){J.error(`打开失败: ${e.message}`)}}let b=w(!1),S=w(null);function C(){b.value=!b.value}function ee(e){b.value=!1,e===`default`?y():y(e)}function T(){b.value&&=!1}function E(e){if(!b.value)return;let t=e.target;if(!t||S.value&&S.value.contains(t))return;let n=document.querySelector(`.claude-menu-popover`);n&&n.contains(t)||(b.value=!1)}mt(()=>{document.addEventListener(`mousedown`,E,!0)}),ce(()=>{document.removeEventListener(`mousedown`,E,!0)});async function D(){try{if(!s.value){J.warning(`当前目录路径为空`);return}let e=await(await fetch(`/api/open_terminal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:s.value})})).json();e.success?J.success(`已在终端中打开目录`):e.error&&J.error(e.error)}catch(e){J.error(`${Q(`@67CE7:打开终端失败: `)}${e.message}`)}}async function O(){try{let e=await(await fetch(`/api/recent_directories`)).json();e.success&&Array.isArray(e.directories)&&(m.value=e.directories)}catch(e){console.error(`获取最近目录失败:`,e)}}async function k(e,t){t.stopPropagation();try{(await(await fetch(`/api/remove_recent_directory`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e})})).json()).success&&await O()}catch(e){console.error(`删除目录失败:`,e)}}async function te(e){try{await fetch(`/api/save_recent_directory`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e})})}catch(e){console.error(`保存最近目录失败:`,e)}}async function A(){if(!f.value){J.warning(`目录路径不能为空`);return}try{p.value=!0;let e=await(await fetch(`/api/change_directory`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:f.value})})).json();e.success?(J.success(`已切换工作目录`),d.value=!1,await te(e.directory),await O(),a.log=[],a.fileList=[],a.status={staged:[],unstaged:[],untracked:[]},a.currentPage=1,a.totalCommits=0,r.setCurrentDirectory(e.directory),a.isGitRepo=e.isGitRepo,await r.loadConfig(!0),e.isGitRepo?(await Promise.all([a.getCurrentBranch(),a.getAllBranches(),a.getUserInfo(),a.getRemoteUrl()]),Promise.all([a.refreshLog(),a.fetchStatus()])):(J.warning(Q(`@67CE7:当前目录不是Git仓库,部分功能将不可用`)),a.$reset())):J.error(e.error||`切换目录失败`)}catch(e){J.error(`${Q(`@67CE7:切换目录失败: `)}${e.message}`)}finally{p.value=!1}}async function j(){if(!f.value){J.warning(`目录路径不能为空`);return}try{let e=await(await fetch(`/api/open-new-tab-gui`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:f.value})})).json();e.success||J.error(e.error||`打开失败`)}catch(e){J.error(`打开失败: ${e.message}`)}}let M=K(()=>{if(typeof navigator>`u`)return!1;let e=navigator.userAgentData;return e?.platform?/mac/i.test(e.platform):/mac/i.test(navigator.platform||``)});async function N(e){if(e)try{let t=await(await fetch(`/api/open-new-tab-gui`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e})})).json();t.success||J.error(t.error||`打开失败`)}catch(e){J.error(`打开失败: ${e.message}`)}}function P(e,t){if(t.ctrlKey||t.metaKey){if(!e.exists){J.warning(`目录不存在,无法打开`);return}N(e.path)}else f.value=e.path}async function ne(){h.value=!0}function F(e){f.value=e}return(e,r)=>{let a=t,w=Me,T=ft,E=i;return G(),Y(H,null,[W(`div`,{id:`directory-selector`,class:x([`directory-selector`,[`directory-selector--${n.variant}`]])},[W(`div`,{class:`directory-display`,title:B(Q)(`@67CE7:切换工作目录`)+`
|
|
65
|
+
`+s.value,onClick:g,onContextmenu:Rt(u,[`prevent`])},q(c.value),41,nS),W(`div`,rS,[z(ln,{tooltip:B(Q)(`@67CE7:切换工作目录`),size:`large`,onClick:g},{default:R(()=>[z(a,null,{default:R(()=>[z(B(qe))]),_:1})]),_:1},8,[`tooltip`]),z(ln,{tooltip:B(Q)(`@67CE7:在资源管理器中打开`),size:`large`,onClick:_},{default:R(()=>[z(a,null,{default:R(()=>[z(B(Gt))]),_:1})]),_:1},8,[`tooltip`]),z(ln,{tooltip:`在终端中打开`,size:`large`,onClick:D},{default:R(()=>[z(a,null,{default:R(()=>[z(B(oe))]),_:1})]),_:1}),z(ln,{tooltip:`用 VSCode 打开`,size:`large`,onClick:v},{default:R(()=>[z(on,{"icon-class":`vscode`})]),_:1}),z(B(Ht),{visible:b.value,trigger:`manual`,placement:`bottom-end`,width:220,"show-arrow":!1,"popper-class":`claude-menu-popover`},{reference:R(()=>[W(`span`,{ref_key:`claudeTriggerRef`,ref:S,class:`claude-code-trigger`,onContextmenu:Rt(C,[`prevent`,`stop`])},[z(ln,{tooltip:`用 Claude Code 打开(完全批准)`,size:`large`,onClick:r[0]||=e=>y(`bypassPermissions`)},{default:R(()=>[W(`img`,{src:B(tS),alt:`Claude Code`,class:`claude-code-btn__icon`},null,8,iS)]),_:1})],544)]),default:R(()=>[W(`ul`,aS,[W(`li`,{class:`claude-menu__item`,role:`menuitem`,onClick:r[1]||=e=>ee(`default`)},r[11]||=[W(`span`,{class:`claude-menu__label`},`用 Claude Code 打开`,-1),W(`span`,{class:`claude-menu__hint`},`默认权限`,-1)]),W(`li`,{class:`claude-menu__item claude-menu__item--accent`,role:`menuitem`,onClick:r[2]||=e=>ee(`acceptEdits`)},r[12]||=[W(`span`,{class:`claude-menu__label`},`用 Claude Code 打开`,-1),W(`span`,{class:`claude-menu__hint`},`批准文件编辑`,-1)]),W(`li`,{class:`claude-menu__item claude-menu__item--danger`,role:`menuitem`,onClick:r[3]||=e=>ee(`bypassPermissions`)},[W(`span`,oS,[r[13]||=Z(` 用 Claude Code 打开 `),z(a,{class:`claude-menu__warn`},{default:R(()=>[z(B(Ie))]),_:1})]),r[14]||=W(`span`,{class:`claude-menu__hint`},`真·完全批准(含 Shell)`,-1)])])]),_:1},8,[`visible`])])],2),z(pa,{modelValue:d.value,"onUpdate:modelValue":r[8]||=e=>d.value=e,title:B(Q)(`@67CE7:切换工作目录`),size:`medium`,"destroy-on-close":!0,"append-to-body":!0,"custom-class":`directory-dialog`},{footer:R(()=>[W(`div`,gS,[W(`div`,_S,[W(`button`,{type:`button`,class:`dialog-cancel-btn`,onClick:r[5]||=e=>d.value=!1},q(B(Q)(`@67CE7:取消`)),1),W(`button`,{type:`button`,class:`dialog-confirm-btn`,onClick:r[6]||=e=>A(),disabled:p.value},[p.value?(G(),U(a,{key:1,class:`is-loading`},{default:R(()=>r[16]||=[W(`svg`,{viewBox:`0 0 1024 1024`,xmlns:`http://www.w3.org/2000/svg`},[W(`path`,{fill:`currentColor`,d:`M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32zm0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32zm448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32zm-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32z`})],-1)]),_:1})):(G(),U(a,{key:0},{default:R(()=>[z(B(qe))]),_:1})),W(`span`,null,q(B(Q)(`@67CE7:切换`)),1)],8,vS),W(`button`,{type:`button`,class:`dialog-newtab-btn`,onClick:r[7]||=e=>j()},r[17]||=[W(`span`,null,`使用新标签打开`,-1)])])])]),default:R(()=>[W(`div`,sS,[z(E,{"label-position":`top`},{default:R(()=>[z(T,null,{label:R(()=>[W(`div`,cS,[z(a,{class:`label-icon`},{default:R(()=>[z(B(qe))]),_:1}),W(`span`,null,q(B(Q)(`@67CE7:目录路径`)),1)])]),default:R(()=>[W(`div`,lS,[z(w,{modelValue:f.value,"onUpdate:modelValue":r[4]||=e=>f.value=e,placeholder:B(Q)(`@67CE7:请输入目录路径`),class:`modern-input`,size:`large`},null,8,[`modelValue`,`placeholder`]),W(`button`,{type:`button`,class:`browse-btn`,onClick:ne},[z(a,null,{default:R(()=>[z(B(qe))]),_:1}),W(`span`,null,q(B(Q)(`@67CE7:浏览`)),1)])])]),_:1}),m.value.length>0?(G(),U(T,{key:0},{label:R(()=>[W(`div`,uS,[z(a,{class:`label-icon`},{default:R(()=>[z(B(wt))]),_:1}),W(`span`,null,q(B(Q)(`@67CE7:常用目录`)),1)])]),default:R(()=>[W(`div`,dS,[(G(!0),Y(H,null,L(m.value,(e,t)=>(G(),Y(`div`,{key:t,class:x([`recent-dir-item`,{"recent-dir-item--missing":!e.exists}]),title:(M.value?`按住 ⌘ 点击用新标签打开`:`按住 Ctrl 点击用新标签打开`)+`
|
|
66
|
+
`+e.path,onClick:t=>P(e,t)},[z(a,{class:`dir-icon`},{default:R(()=>[z(B(qe))]),_:1}),W(`span`,{class:`dir-path`,title:e.path},q(e.path),9,pS),e.exists?V(``,!0):(G(),Y(`span`,mS,`不存在`)),W(`button`,{type:`button`,class:`dir-delete-btn`,title:`从常用目录中移除`,onClick:t=>k(e.path,t)},r[15]||=[W(`svg`,{viewBox:`0 0 1024 1024`,xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`12`},[W(`path`,{fill:`currentColor`,d:`M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z`})],-1)],8,hS)],10,fS))),128))])]),_:1})):V(``,!0)]),_:1})])]),_:1},8,[`modelValue`,`title`]),z(B(Be),{visible:h.value,mode:`directory`,theme:l.value?`dark`:`light`,locale:B(o),onClose:r[9]||=e=>h.value=!1,onConfirm:r[10]||=e=>{F(e[0]),h.value=!1}},null,8,[`visible`,`theme`,`locale`])],64)}}}),[[`__scopeId`,`data-v-9195f7d5`]]),bS=[`element-loading-text`],xS={class:`settings-tabs`},SS={class:`settings-panels`},CS={class:`settings-panel`},wS={class:`info-section`},TS={class:`info-card`},ES={class:`info-content`},DS={class:`info-title`},OS={class:`info-desc`},kS={class:`settings-section`},AS={class:`section-title`},jS={class:`settings-grid`},MS={class:`setting-row`},NS={class:`setting-label`},PS={class:`settings-section`},FS={class:`section-title`},IS={class:`settings-grid`},LS={class:`setting-row`},RS={class:`setting-label`},zS={class:`settings-section`},BS={class:`section-title`},VS={class:`settings-grid`},HS={class:`setting-row`},US={class:`setting-label`},WS={class:`setting-row`},GS={class:`setting-label`},KS={class:`setting-hint-inline`},qS={class:`setting-row setting-row--full`},JS={class:`setting-label`},YS={class:`console-sub-options`},XS={class:`console-split-row`},ZS={class:`setting-hint-block`},QS={class:`setting-row`},$S={class:`setting-label`},eC={class:`layout-actions`},tC={class:`setting-hint-block`},nC={class:`settings-section`},rC={class:`section-title model-section-title`},iC={class:`model-list`},aC={key:0,class:`model-empty`},oC={class:`model-info`},sC={class:`model-name-row`},cC={class:`model-name`},lC={key:0,class:`model-default-badge`},uC={class:`model-meta`},dC={class:`model-actions`},fC=[`onClick`],pC=[`onClick`],mC=[`onClick`],hC={key:0,class:`ai-model-form-wrapper`},gC={class:`settings-panel`},_C={class:`info-section`},vC={class:`info-card`},yC={class:`info-content`},bC={class:`info-title`},xC={class:`info-desc`},SC={class:`basic-info-section`},CC={class:`basic-info-grid`},wC={class:`settings-section`},TC={class:`section-title`},EC={class:`settings-grid`},DC={class:`setting-row`},OC={class:`setting-label`},kC={class:`setting-row`},AC={class:`setting-label`},jC={class:`setting-row`},MC={class:`setting-label`},NC={class:`setting-row`},PC={class:`setting-label`},FC={class:`setting-row`},IC={class:`setting-label`},LC={class:`settings-panel`},RC={class:`info-section`},zC={class:`info-card`},BC={class:`info-content`},VC={class:`info-title`},HC={class:`info-desc`},UC={class:`settings-section`},WC={class:`section-title`},GC={class:`settings-grid commit-settings-grid`},KC={class:`setting-row`},qC={class:`setting-label`},JC={class:`setting-row`},YC={class:`setting-label`},XC={class:`setting-row`},ZC={class:`setting-label`},QC={class:`setting-row`},$C={class:`setting-label`},ew={class:`setting-row`},tw={class:`setting-label`},nw={class:`setting-row`},rw={class:`setting-label`},iw={class:`settings-panel config-panel`},aw={class:`info-section`},ow={class:`info-card`},sw={class:`info-content`},cw={class:`info-title`},lw={class:`info-desc`},uw={class:`config-json-editor-wrap`},dw={class:`config-panel-actions`},fw={class:`settings-panel`},pw={class:`info-section`},mw={class:`info-card`},hw={class:`info-content`},gw={class:`info-title`},_w={class:`info-desc`},vw={class:`settings-section`},yw={class:`section-title`},bw={class:`settings-grid`},xw={class:`setting-row`},Sw={class:`setting-label`},Cw={key:0,class:`setting-row setting-row--hint`},ww={class:`setting-hint`},Tw={class:`user-settings-footer`},Ew={class:`footer-actions`},Dw=[`disabled`],Ow=[`disabled`],kw=$(X({__name:`GitGlobalSettingsDialog`,props:{modelValue:{type:Boolean}},emits:[`update:modelValue`],setup(e,{emit:n}){let r=yn(),a=mn(),o=hn(),s=e,c=n,u=w(!1),d=w(!1),f=w(`general`),p=w(`light`),h=w(`zh-CN`),g=w(!1),v=w([]),y=w(void 0),b=K(()=>o.theme===`light`?`light`:`dark`),S=K(()=>{if(y.value===null)return null;let e=v.value.find(e=>e.id===y.value);return e?{endpoint:e.baseURL,modelName:e.model,displayName:e.name,apiKey:e.apiKey}:null}),C=K(()=>f.value===`config`?!0:f.value===`general`?p.value!==me||h.value!==he||y.value!==void 0:f.value===`git`?j.value!==se||M.value!==ce||re.value!==le||ie.value!==ue||I.value!==de||ae.value!==fe||(oe.value||``).trim()!==pe:f.value===`editor`?g.value!==o.ui.editorAutoSave:!1);function ee(){y.value=null}function E(e){y.value=e.id}function D(){y.value=void 0}async function O(e){let t=y.value===null,n=e.displayName||e.modelName,r=t?`model-${n.toLowerCase().replace(/[^a-z0-9]/g,`-`).slice(0,24)}-${Date.now().toString(36)}`:y.value,i;if(t){let t=v.value.length===0;i=[...v.value,{id:r,name:n,apiKey:e.apiKey,baseURL:e.endpoint,model:e.modelName,isDefault:t}]}else i=v.value.map(t=>t.id===y.value?{...t,name:n,apiKey:e.apiKey||t.apiKey,baseURL:e.endpoint,model:e.modelName}:t);await o.saveModels(i)&&(v.value=i,y.value=void 0,J.success(Q(t?`@42BB9:已添加模型`:`@42BB9:已更新模型`)))}async function k(e){let t=v.value.filter(t=>t.id!==e);await o.saveModels(t)&&(v.value=t,J.success(Q(`@42BB9:已删除模型`)))}async function te(e){let t=v.value.map(t=>({...t,isDefault:t.id===e}));await o.saveModels(t)&&(v.value=t,J.success(Q(`@42BB9:已设置默认模型`)))}let j=w(``),M=w(``),N=w(``),ne=w(!1),re=w(!1),ie=w(`false`),I=w(!1),ae=w(`true`),oe=w(`main`),se=``,ce=``,le=!1,ue=`false`,de=!1,fe=`true`,pe=`main`,me=`light`,he=`zh-CN`;F(()=>s.modelValue,async e=>{if(u.value=e,e){j.value=r.userName,M.value=r.userEmail,N.value=``,p.value=o.theme,h.value=o.locale,v.value=[...o.models],y.value=void 0,g.value=o.ui.editorAutoSave;try{d.value=!0,await ye()}finally{d.value=!1}se=j.value,ce=M.value,le=re.value,ue=ie.value,de=I.value,fe=ae.value,pe=oe.value,me=p.value,he=h.value}},{immediate:!0});function ge(e){c(`update:modelValue`,e)}async function _e(e){try{let t=await(await fetch(`/api/exec`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({command:`git config --global --get ${e}`})})).json();if(t.success)return String(t.stdout||``).trim()}catch{}return``}async function ve(e,t){let n=await(await fetch(`/api/exec`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({command:`git config --global ${e} ${t}`})})).json();if(!n.success)throw Error(n.error||`${Q(`@42BB9:设置 `)}${e}${Q(`@42BB9: 失败`)}`)}async function ye(){let[e,t,n,r,i]=await Promise.all([_e(`push.autoSetupRemote`),_e(`pull.rebase`),_e(`fetch.prune`),_e(`core.autocrlf`),_e(`init.defaultBranch`)]);re.value=(e||`false`).toLowerCase()===`true`;let a=(t||`false`).toLowerCase();ie.value=a===`true`||a===`merges`?a:`false`,I.value=(n||`false`).toLowerCase()===`true`;let o=(r||`true`).toLowerCase();ae.value=o===`true`||o===`input`?o:`false`,oe.value=i||`main`}async function be(){let e=[];try{re.value!==le&&e.push(ve(`push.autoSetupRemote`,re.value?`true`:`false`)),ie.value!==ue&&e.push(ve(`pull.rebase`,ie.value)),I.value!==de&&e.push(ve(`fetch.prune`,I.value?`true`:`false`)),ae.value!==fe&&e.push(ve(`core.autocrlf`,ae.value));let t=(oe.value||``).trim();return t&&t!==pe&&e.push(ve(`init.defaultBranch`,t)),e.length===0?!0:(await Promise.all(e),J.success(Q(`@42BB9:已保存变更的 Git 配置`)),le=re.value,ue=ie.value,de=I.value,fe=ae.value,pe=t||pe,!0)}catch(e){return J.error(e.message),!1}}async function xe(){let e={};if(p.value!==me&&(e.theme=p.value,me=p.value),h.value!==he&&(e.locale=h.value,a.changeLocale(h.value),he=h.value),e.theme!==void 0||e.locale!==void 0){let t=await o.saveGeneralSettings(e);return t&&J.success(Q(`@42BB9:通用设置已保存`)),t}return!0}async function Se(){try{let e=await o.resetUiLayout();window.dispatchEvent(new CustomEvent(`ui-layout-reset`,{detail:{layout:e}})),J.success(Q(`@42BB9:布局比例已重置为默认值`))}catch(e){J.error(`${Q(`@42BB9:重置布局失败: `)}${e.message}`)}}async function we(){if(y.value!==void 0){J.warning(Q(`@42BB9:模型尚未保存,请先保存或取消模型编辑`));return}if(f.value===`config`){await Ee();return}if(f.value===`editor`){o.ui.editorAutoSave=g.value,J.success(Q(`@42BB9:编辑器设置已保存`)),u.value=!1;return}if(!await xe())return;if(!j.value||!M.value){J.warning(Q(`@42BB9:用户名和邮箱不能为空`));return}let e=!0;(j.value!==se||M.value!==ce)&&(e=await r.restoreUserConfig(j.value,M.value),e&&(se=j.value,ce=M.value));let t=await be();e&&t&&(u.value=!1)}async function Te(){if(f.value=`config`,!N.value)try{let e=await(await fetch(`/api/config/check-file-format`)).json();e.success||J.warning(e.message||Q(`@42BB9:配置文件格式可能有问题`)),N.value=JSON.stringify(o.config,null,2)}catch{J.error(Q(`@42BB9:加载配置失败`))}}async function Ee(){let e;try{e=JSON.parse(N.value)}catch(e){J.error(`${Q(`@42BB9:JSON 解析失败: `)}${e.message||e}`);return}try{ne.value=!0;let t=await(await fetch(`/api/config/saveAll`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({config:e})})).json();if(!t.success){J.error(`${Q(`@42BB9:保存失败: `)}${t.error||Q(`@42BB9:未知错误`)}`);return}await o.loadConfig(),J.success(Q(`@42BB9:配置已保存`)),u.value=!1}catch(e){J.error(`${Q(`@42BB9:保存配置失败: `)}${e.message||e}`)}finally{ne.value=!1}}async function De(){try{let e=await(await fetch(`/api/config/open-file`,{method:`POST`})).json();e.success?J.success(Q(`@42BB9:已用系统程序打开配置文件`)):J.error(e.error||Q(`@42BB9:打开文件失败`))}catch(e){J.error(`${Q(`@42BB9:打开文件失败: `)}${e.message||e}`)}}return(e,n)=>{let r=_,s=m,c=T,w=Ce,ne=Wt,F=Ke,se=P,ce=Me,le=ft,ue=t,de=A,fe=i,pe=Ze;return G(),U(pa,{modelValue:u.value,"onUpdate:modelValue":[n[28]||=e=>u.value=e,ge],title:B(Q)(`@42BB9:设置`),size:`large`,"destroy-on-close":!0,"custom-class":`user-settings-dialog`},Kt({default:R(()=>[Yt((G(),Y(`div`,{class:`user-settings-content`,"element-loading-text":B(Q)(`@42BB9:正在加载配置...`),"element-loading-background":`rgba(0, 0, 0, 0.15)`},[W(`div`,xS,[W(`div`,{class:x([`tab-item`,{active:f.value===`general`}]),onClick:n[0]||=e=>f.value=`general`},[W(`span`,null,q(B(Q)(`@42BB9:通用设置`)),1)],2),W(`div`,{class:x([`tab-item`,{active:f.value===`git`}]),onClick:n[1]||=e=>f.value=`git`},[W(`span`,null,q(B(Q)(`@42BB9:Git 全局设置`)),1)],2),W(`div`,{class:x([`tab-item`,{active:f.value===`commit`}]),onClick:n[2]||=e=>f.value=`commit`},[W(`span`,null,q(B(Q)(`@42BB9:提交设置`)),1)],2),W(`div`,{class:x([`tab-item`,{active:f.value===`config`}]),onClick:Te},[W(`span`,null,q(B(Q)(`@42BB9:编辑配置`)),1)],2),W(`div`,{class:x([`tab-item`,{active:f.value===`editor`}]),onClick:n[3]||=e=>f.value=`editor`},[W(`span`,null,q(B(Q)(`@42BB9:编辑器设置`)),1)],2)]),W(`div`,SS,[Yt(W(`div`,CS,[W(`div`,wS,[W(`div`,TS,[W(`div`,ES,[W(`p`,DS,q(B(Q)(`@42BB9:通用配置`)),1),W(`p`,OS,q(B(Q)(`@42BB9:自定义应用的外观和语言`)),1)])])]),W(`div`,kS,[W(`div`,AS,[W(`span`,null,q(B(Q)(`@42BB9:外观`)),1)]),W(`div`,jS,[W(`div`,MS,[W(`label`,NS,q(B(Q)(`@42BB9:主题`)),1),z(s,{modelValue:p.value,"onUpdate:modelValue":n[4]||=e=>p.value=e,class:`modern-input`,size:`default`},{default:R(()=>[z(r,{label:B(Q)(`@42BB9:浅色`),value:`light`},null,8,[`label`]),z(r,{label:B(Q)(`@42BB9:深色`),value:`dark`},null,8,[`label`]),z(r,{label:B(Q)(`@42BB9:跟随系统`),value:`auto`},null,8,[`label`])]),_:1},8,[`modelValue`])])])]),W(`div`,PS,[W(`div`,FS,[W(`span`,null,q(B(Q)(`@42BB9:语言`)),1)]),W(`div`,IS,[W(`div`,LS,[W(`label`,RS,q(B(Q)(`@42BB9:界面语言`)),1),z(s,{modelValue:h.value,"onUpdate:modelValue":n[5]||=e=>h.value=e,class:`modern-input`,size:`default`},{default:R(()=>[z(r,{label:`简体中文`,value:`zh-CN`}),z(r,{label:`English`,value:`en-US`})]),_:1},8,[`modelValue`])])])]),W(`div`,zS,[W(`div`,BS,[W(`span`,null,q(B(Q)(`@42BB9:界面`)),1)]),W(`div`,VS,[W(`div`,HS,[W(`label`,US,q(B(Q)(`@42BB9:文件列表视图`)),1),z(w,{modelValue:B(o).ui.fileListViewMode,"onUpdate:modelValue":n[6]||=e=>B(o).ui.fileListViewMode=e,size:`default`},{default:R(()=>[z(c,{value:`list`},{default:R(()=>[Z(q(B(Q)(`@42BB9:列表`)),1)]),_:1}),z(c,{value:`tree`},{default:R(()=>[Z(q(B(Q)(`@42BB9:树状`)),1)]),_:1})]),_:1},8,[`modelValue`])]),W(`div`,WS,[W(`label`,GS,[Z(q(B(Q)(`@42BB9:文件差异分割`))+` `,1),W(`span`,KS,q(B(o).ui.fileDiffSplitPercent)+`%`,1)]),z(ne,{modelValue:B(o).ui.fileDiffSplitPercent,"onUpdate:modelValue":n[7]||=e=>B(o).ui.fileDiffSplitPercent=e,min:15,max:85,step:1,class:`setting-slider`},null,8,[`modelValue`])]),W(`div`,qS,[W(`label`,JS,q(B(Q)(`@42BB9:命令控制台`)),1),W(`div`,YS,[z(F,{modelValue:B(o).ui.commandConsole.expanded,"onUpdate:modelValue":n[8]||=e=>B(o).ui.commandConsole.expanded=e,"active-text":B(Q)(`@42BB9:默认展开`)},null,8,[`modelValue`,`active-text`]),z(F,{modelValue:B(o).ui.commandConsole.useTerminal,"onUpdate:modelValue":n[9]||=e=>B(o).ui.commandConsole.useTerminal=e,"active-text":B(Q)(`@42BB9:使用终端执行`)},null,8,[`modelValue`,`active-text`]),z(F,{modelValue:B(o).ui.commandConsole.showTerminalSessions,"onUpdate:modelValue":n[10]||=e=>B(o).ui.commandConsole.showTerminalSessions=e,"active-text":B(Q)(`@42BB9:显示终端会话`)},null,8,[`modelValue`,`active-text`]),W(`div`,XS,[W(`span`,ZS,q(B(Q)(`@42BB9:控制台高度比例`))+`: `+q(B(o).ui.commandConsole.splitPercent)+`% `,1),z(ne,{modelValue:B(o).ui.commandConsole.splitPercent,"onUpdate:modelValue":n[11]||=e=>B(o).ui.commandConsole.splitPercent=e,min:15,max:85,step:1,class:`setting-slider`},null,8,[`modelValue`])])])]),W(`div`,QS,[W(`label`,$S,q(B(Q)(`@42BB9:布局比例`)),1),W(`div`,eC,[z(se,{onClick:Se,size:`default`},{default:R(()=>[Z(q(B(Q)(`@42BB9:重置为默认布局`)),1)]),_:1}),W(`span`,tC,q(B(Q)(`@42BB9:恢复默认的左/中/右/上面板比例`)),1)])])])]),W(`div`,nC,[W(`div`,rC,[W(`span`,null,q(B(Q)(`@42BB9:AI 模型配置`)),1),W(`button`,{class:`add-model-btn`,onClick:ee},`+ `+q(B(Q)(`@42BB9:添加模型`)),1)]),W(`div`,iC,[v.value.length===0?(G(),Y(`div`,aC,q(B(Q)(`@42BB9:暂未配置模型`)),1)):V(``,!0),(G(!0),Y(H,null,L(v.value,e=>(G(),Y(`div`,{key:e.id,class:`model-card`},[W(`div`,oC,[W(`div`,sC,[W(`span`,cC,q(e.name),1),e.isDefault?(G(),Y(`span`,lC,q(B(Q)(`@42BB9:默认`)),1)):V(``,!0)]),W(`div`,uC,q(e.model)+` · `+q(e.baseURL),1)]),W(`div`,dC,[e.isDefault?V(``,!0):(G(),Y(`button`,{key:0,class:`model-btn`,onClick:t=>te(e.id)},q(B(Q)(`@42BB9:设为默认`)),9,fC)),W(`button`,{class:`model-btn`,onClick:t=>E(e)},q(B(Q)(`@42BB9:编辑`)),9,pC),W(`button`,{class:`model-btn model-btn--danger`,onClick:t=>k(e.id)},q(B(Q)(`@42BB9:删除`)),9,mC)])]))),128))]),y.value===void 0?V(``,!0):(G(),Y(`div`,hC,[(G(),U(B(l),{key:y.value??`__new__`,"api-base":`/api/ai-model`,initial:S.value,theme:b.value,locale:B(a).currentLocale,onSave:O,onCancel:D},null,8,[`initial`,`theme`,`locale`]))]))])],512),[[Je,f.value===`general`]]),Yt(W(`div`,gC,[W(`div`,_C,[W(`div`,vC,[W(`div`,yC,[W(`p`,bC,q(B(Q)(`@42BB9:全局配置`)),1),W(`p`,xC,q(B(Q)(`@42BB9:这些设置将影响全局 Git 配置,对所有 Git 仓库生效`)),1)])])]),z(fe,{class:`user-form`,"label-width":`auto`,model:{tempUserName:j.value,tempUserEmail:M.value}},{default:R(()=>[W(`div`,SC,[W(`div`,CC,[z(le,{class:`form-item`,label:B(Q)(`@42BB9:用户名`)},{default:R(()=>[z(ce,{modelValue:j.value,"onUpdate:modelValue":n[12]||=e=>j.value=e,placeholder:B(Q)(`@42BB9:请输入 Git 用户名`),class:`modern-input`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),z(le,{class:`form-item`,label:B(Q)(`@42BB9:邮箱地址`)},{default:R(()=>[z(ce,{modelValue:M.value,"onUpdate:modelValue":n[13]||=e=>M.value=e,placeholder:B(Q)(`@42BB9:请输入 Git 邮箱地址`),class:`modern-input`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])])]),W(`div`,wC,[W(`div`,TC,[W(`span`,null,q(B(Q)(`@42BB9:高级配置`)),1)]),W(`div`,EC,[W(`div`,DC,[W(`label`,OC,[Z(q(B(Q)(`@42BB9:自动设置上游`))+` `,1),z(de,{content:B(Q)(`@42BB9:首次 git push 时,自动为当前分支创建远程同名分支并建立跟踪关系(等同于 push -u)。`),placement:`top`,"show-after":200},{default:R(()=>[z(ue,{class:`qmark`},{default:R(()=>[z(B(Ut))]),_:1})]),_:1},8,[`content`])]),z(F,{modelValue:re.value,"onUpdate:modelValue":n[14]||=e=>re.value=e},null,8,[`modelValue`])]),W(`div`,kC,[W(`label`,AC,q(B(Q)(`@42BB9:拉取策略`)),1),z(s,{modelValue:ie.value,"onUpdate:modelValue":n[15]||=e=>ie.value=e,class:`modern-input`,size:`default`},{default:R(()=>[z(r,{label:B(Q)(`@42BB9:merge (默认)`),value:`false`},null,8,[`label`]),z(r,{label:`rebase`,value:`true`}),z(r,{label:B(Q)(`@42BB9:rebase(保留合并)`),value:`merges`},null,8,[`label`])]),_:1},8,[`modelValue`])]),W(`div`,jC,[W(`label`,MC,[Z(q(B(Q)(`@42BB9:自动清理远程分支`))+` `,1),z(de,{content:B(Q)(`@42BB9:在 git fetch 时自动 prune,移除已在远程删除但本地仍保留的远程分支引用。`),placement:`top`,"show-after":200},{default:R(()=>[z(ue,{class:`qmark`},{default:R(()=>[z(B(Ut))]),_:1})]),_:1},8,[`content`])]),z(F,{modelValue:I.value,"onUpdate:modelValue":n[16]||=e=>I.value=e},null,8,[`modelValue`])]),W(`div`,NC,[W(`label`,PC,q(B(Q)(`@42BB9:换行符处理`)),1),z(s,{modelValue:ae.value,"onUpdate:modelValue":n[17]||=e=>ae.value=e,class:`modern-input`,size:`default`},{default:R(()=>[z(r,{label:`true (Windows)`,value:`true`}),z(r,{label:`input`,value:`input`}),z(r,{label:`false`,value:`false`})]),_:1},8,[`modelValue`])]),W(`div`,FC,[W(`label`,IC,[Z(q(B(Q)(`@42BB9:默认初始化分支`))+` `,1),z(de,{content:B(Q)(`@42BB9:新建仓库时(git init)默认创建的分支名,常见为 main 或 master。`),placement:`top`,"show-after":200},{default:R(()=>[z(ue,{class:`qmark`},{default:R(()=>[z(B(Ut))]),_:1})]),_:1},8,[`content`])]),z(ce,{modelValue:oe.value,"onUpdate:modelValue":n[18]||=e=>oe.value=e,placeholder:B(Q)(`@42BB9:例如: main`),class:`modern-input`,size:`default`},null,8,[`modelValue`,`placeholder`])])])])]),_:1},8,[`model`])],512),[[Je,f.value===`git`]]),Yt(W(`div`,LC,[W(`div`,RC,[W(`div`,zC,[W(`div`,BC,[W(`p`,VC,q(B(Q)(`@76872:提交设置`)),1),W(`p`,HC,q(B(Q)(`@76872:这些设置实时生效`)),1)])])]),W(`div`,UC,[W(`div`,WC,[W(`span`,null,q(B(Q)(`@76872:提交格式与行为`)),1)]),W(`div`,GC,[W(`div`,KC,[W(`label`,qC,q(B(Q)(`@76872:标准化提交`)),1),z(F,{modelValue:B(o).isStandardCommit,"onUpdate:modelValue":n[19]||=e=>B(o).isStandardCommit=e},null,8,[`modelValue`])]),W(`div`,JC,[W(`label`,YC,[Z(q(B(Q)(`@76872:跳过钩子检查`))+` `,1),z(de,{content:B(Q)(`@76872:添加 --no-verify 参数`),placement:`top`,"show-after":200},{default:R(()=>[z(ue,{class:`qmark`},{default:R(()=>[z(B(Ut))]),_:1})]),_:1},8,[`content`])]),z(F,{modelValue:B(o).skipHooks,"onUpdate:modelValue":n[20]||=e=>B(o).skipHooks=e},null,8,[`modelValue`])]),W(`div`,XC,[W(`label`,ZC,[Z(q(B(Q)(`@76872:回车自动提交`))+` `,1),z(de,{content:B(Q)(`@76872:输入提交信息后按回车直接执行一键推送`),placement:`top`,"show-after":200},{default:R(()=>[z(ue,{class:`qmark`},{default:R(()=>[z(B(Ut))]),_:1})]),_:1},8,[`content`])]),z(F,{modelValue:B(o).autoQuickPushOnEnter,"onUpdate:modelValue":n[21]||=e=>B(o).autoQuickPushOnEnter=e},null,8,[`modelValue`])]),W(`div`,QC,[W(`label`,$C,[Z(q(B(Q)(`@76872:Push完成自动关闭`))+` `,1),z(de,{content:B(Q)(`@76872:推送成功后自动关闭进度弹窗`),placement:`top`,"show-after":200},{default:R(()=>[z(ue,{class:`qmark`},{default:R(()=>[z(B(Ut))]),_:1})]),_:1},8,[`content`])]),z(F,{modelValue:B(o).autoClosePushModal,"onUpdate:modelValue":n[22]||=e=>B(o).autoClosePushModal=e},null,8,[`modelValue`])]),W(`div`,ew,[W(`label`,tw,[Z(q(B(Q)(`@76872:推送前拉取更新`))+` `,1),z(de,{content:B(Q)(`@76872:推送前自动拉取远程更新,有冲突则停止推送`),placement:`top`,"show-after":200},{default:R(()=>[z(ue,{class:`qmark`},{default:R(()=>[z(B(Ut))]),_:1})]),_:1},8,[`content`])]),z(F,{modelValue:B(o).pullBeforePush,"onUpdate:modelValue":n[23]||=e=>B(o).pullBeforePush=e},null,8,[`modelValue`])]),W(`div`,nw,[W(`label`,rw,[Z(q(B(Q)(`@76872:自动填充默认提交信息`))+` `,1),z(de,{content:B(Q)(`@76872:打开页面或提交完成后自动填充默认提交信息`),placement:`top`,"show-after":200},{default:R(()=>[z(ue,{class:`qmark`},{default:R(()=>[z(B(Ut))]),_:1})]),_:1},8,[`content`])]),z(F,{modelValue:B(o).autoSetDefaultMessage,"onUpdate:modelValue":n[24]||=e=>B(o).autoSetDefaultMessage=e},null,8,[`modelValue`])])])])],512),[[Je,f.value===`commit`]]),Yt(W(`div`,iw,[W(`div`,aw,[W(`div`,ow,[W(`div`,sw,[W(`p`,cw,q(B(Q)(`@42BB9:编辑当前项目的配置文件`)),1),W(`p`,lw,q(B(Q)(`@42BB9:直接编辑 JSON,支持所有配置项`)),1)])])]),W(`div`,uw,[z(ce,{modelValue:N.value,"onUpdate:modelValue":n[25]||=e=>N.value=e,type:`textarea`,spellcheck:`false`,autocomplete:`off`,placeholder:B(Q)(`@42BB9:加载中...`),class:`config-json-editor`},null,8,[`modelValue`,`placeholder`])]),W(`div`,dw,[W(`button`,{type:`button`,class:`dialog-cancel-btn system-config-btn`,onClick:De},q(B(Q)(`@42BB9:打开系统配置文件`)),1)])],512),[[Je,f.value===`config`]]),Yt(W(`div`,fw,[W(`div`,pw,[W(`div`,mw,[W(`div`,hw,[W(`p`,gw,q(B(Q)(`@42BB9:编辑器设置`)),1),W(`p`,_w,q(B(Q)(`@42BB9:自定义编辑器行为`)),1)])])]),W(`div`,vw,[W(`div`,yw,[W(`span`,null,q(B(Q)(`@42BB9:文件编辑`)),1)]),W(`div`,bw,[W(`div`,xw,[W(`label`,Sw,q(B(Q)(`@42BB9:自动保存`)),1),z(F,{modelValue:g.value,"onUpdate:modelValue":n[26]||=e=>g.value=e},null,8,[`modelValue`])]),g.value?(G(),Y(`div`,Cw,[W(`span`,ww,q(B(Q)(`@42BB9:失去焦点时自动保存当前文件`)),1)])):V(``,!0)])])],512),[[Je,f.value===`editor`]])])],8,bS)),[[pe,d.value]])]),_:2},[f.value===`commit`?void 0:{name:`footer`,fn:R(()=>[W(`div`,Tw,[n[29]||=W(`div`,null,null,-1),W(`div`,Ew,[W(`button`,{type:`button`,class:`dialog-cancel-btn`,onClick:n[27]||=e=>u.value=!1,disabled:d.value},q(C.value?B(Q)(`@42BB9:取消`):B(Q)(`@42BB9:关闭`)),9,Dw),C.value?(G(),Y(`button`,{key:0,type:`button`,class:`dialog-confirm-btn`,onClick:we,disabled:d.value},[z(ue,null,{default:R(()=>[z(B(St))]),_:1}),W(`span`,null,q(f.value===`config`?B(Q)(`@42BB9:保存配置`):B(Q)(`@42BB9:保存设置`)),1)],8,Ow)):V(``,!0)])])]),key:`0`}]),1032,[`modelValue`,`title`])}}}),[[`__scopeId`,`data-v-76fa6110`]]),Aw=Ft(`workbenchStatus`,()=>{let e=w(0);function t(t){e.value=Math.max(0,t|0)}return{runningCount:e,hasRunning:K(()=>e.value>0),setRunning:t}}),jw={class:`activity-bar`},Mw=[`aria-label`,`aria-pressed`],Nw=[`aria-label`,`aria-pressed`],Pw=[`aria-label`,`aria-pressed`],Fw=[`aria-label`,`aria-pressed`],Iw=[`title`],Lw=$(X({__name:`ActivityBar`,props:{activeView:{}},emits:[`update:activeView`],setup(e,{emit:t}){let n=e,r=t,i=Aw();function a(e){r(`update:activeView`,e)}return(e,t)=>(G(),Y(`div`,jw,[z(B(A),{content:B(Q)(`@ACTBAR:Git`),placement:`right`,"show-after":300},{default:R(()=>[W(`button`,{class:x([`activity-btn`,{active:n.activeView===`git`}]),onClick:t[0]||=e=>a(`git`),"aria-label":B(Q)(`@ACTBAR:Git`),"aria-pressed":n.activeView===`git`},t[4]||=[W(`svg`,{viewBox:`0 0 1025 1024`,width:`20`,height:`20`,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`},[W(`path`,{d:`M1004.728 466.4l-447.104-447.072c-25.728-25.76-67.488-25.76-93.28 0l-103.872 103.872 78.176 78.176c12.544-5.984 26.56-9.376 41.376-9.376 53.024 0 96 42.976 96 96 0 14.816-3.36 28.864-9.376 41.376l127.968 127.968c12.544-5.984 26.56-9.376 41.376-9.376 53.024 0 96 42.976 96 96s-42.976 96-96 96-96-42.976-96-96c0-14.816 3.36-28.864 9.376-41.376l-127.968-127.968c-3.04 1.472-6.176 2.752-9.376 3.872l0 266.976c37.28 13.184 64 48.704 64 90.528 0 53.024-42.976 96-96 96s-96-42.976-96-96c0-41.792 26.72-77.344 64-90.528l0-266.976c-37.28-13.184-64-48.704-64-90.528 0-14.816 3.36-28.864 9.376-41.376l-78.176-78.176-295.904 295.872c-25.76 25.792-25.76 67.52 0 93.28l447.136 447.072c25.728 25.76 67.488 25.76 93.28 0l444.992-444.992c25.76-25.76 25.76-67.552 0-93.28z`})],-1)],10,Mw)]),_:1},8,[`content`]),z(B(A),{content:B(Q)(`@ACTBAR:编辑器`),placement:`right`,"show-after":300},{default:R(()=>[W(`button`,{class:x([`activity-btn`,{active:n.activeView===`editor`}]),onClick:t[1]||=e=>a(`editor`),"aria-label":B(Q)(`@ACTBAR:编辑器`),"aria-pressed":n.activeView===`editor`},t[5]||=[W(`svg`,{viewBox:`0 0 1024 1024`,width:`20`,height:`20`,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`},[W(`path`,{d:`M928 687.9c-17.8 0-32.2 14.4-32.2 32.1v80.7c0 35.3-28.7 64-64 64H192.5c-35.3 0-64-28.7-64-64V225c0-35.3 28.7-64 64-64H415l82.7 143.3c6.6 11.4 19.2 17.2 31.5 15.8h302.5c35.3 0 64 28.7 64 64v80c0 17.7 14.4 32.1 32.2 32.1s32.2-14.4 32.2-32.1c0-0.8 0-1.6-0.1-2.4v-77.5C960 329 925.1 282 876.1 264v-1c0-68.2-55.8-124-124-124H476.2l-14.8-25.7c-7.4-12.9-18-16.2-27.3-16l-0.1-0.1H192.1c-70.7 0-128 57.3-128 128v574.1c0 70.7 57.3 128 128 128h640c70.7 0 128-57.3 128-128v-76.9c0.1-0.8 0.1-1.6 0.1-2.4 0-17.7-14.4-32.1-32.2-32.1zM747.1 202.8c31.6 0 58 23.2 63.1 53.4H543.9l-30.8-53.4h234z`})],-1)],10,Nw)]),_:1},8,[`content`]),z(B(A),{content:B(Q)(`@ACTBAR:源码地图`),placement:`right`,"show-after":300},{default:R(()=>[W(`button`,{class:x([`activity-btn`,{active:n.activeView===`source-map`}]),onClick:t[2]||=e=>a(`source-map`),"aria-label":B(Q)(`@ACTBAR:源码地图`),"aria-pressed":n.activeView===`source-map`},t[6]||=[W(`svg`,{viewBox:`0 0 1024 1024`,width:`20`,height:`20`,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`},[W(`path`,{d:`M961.5 700.5 889 700.5 889 512c0-24-19.5-43.5-43.5-43.5L541 468.5l0-145 72.5 0c24 0 43.5-19.5 43.5-43.5L657 77c0-24-19.5-43.5-43.5-43.5l-203 0C386.5 33.5 367 53 367 77l0 203c0 24 19.5 43.5 43.5 43.5L483 323.5l0 145L178.5 468.5c-24 0-43.5 19.5-43.5 43.5l0 188.5L62.5 700.5C38.5 700.5 19 720 19 744l0 203c0 24 19.5 43.5 43.5 43.5l203 0c24 0 43.5-19.5 43.5-43.5L309 744c0-24-19.5-43.5-43.5-43.5L193 700.5l0-174 290 0 0 174-72.5 0c-24 0-43.5 19.5-43.5 43.5l0 203c0 24 19.5 43.5 43.5 43.5l203 0c24 0 43.5-19.5 43.5-43.5L657 744c0-24-19.5-43.5-43.5-43.5L541 700.5l0-174 290 0 0 174-72.5 0c-24 0-43.5 19.5-43.5 43.5l0 203c0 24 19.5 43.5 43.5 43.5l203 0c24 0 43.5-19.5 43.5-43.5L1005 744C1005 720 985.5 700.5 961.5 700.5zM425 91.5l174 0 0 174L425 265.5 425 91.5zM251 758.5l0 174L77 932.5l0-174L251 758.5zM599 932.5 425 932.5l0-174 174 0L599 932.5zM947 932.5 773 932.5l0-174 174 0L947 932.5z`})],-1)],10,Pw)]),_:1},8,[`content`]),z(B(A),{content:B(Q)(`@ACTBAR:工作台`),placement:`right`,"show-after":300},{default:R(()=>[W(`button`,{class:x([`activity-btn`,{active:n.activeView===`workbench`}]),onClick:t[3]||=e=>a(`workbench`),"aria-label":B(Q)(`@ACTBAR:工作台`),"aria-pressed":n.activeView===`workbench`},[t[7]||=W(`svg`,{viewBox:`0 0 1044 1024`,width:`20`,height:`20`,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`},[W(`path`,{d:`M840.454 62.442H201.849c-76.445 0-139.409 63.68-139.409 141.007v614.048c0 77.326 62.963 141.007 139.408 141.007h638.605c76.454 0 139.408-63.68 139.408-141.007V203.449c0-77.326-58.454-141.007-139.408-141.007z m71.955 759.608c0 40.931-31.473 72.772-71.954 72.772H201.85c-40.473 0-71.954-31.84-71.954-72.772V203.447c0-40.931 31.481-72.772 71.954-72.772h638.605c40.481 0 71.954 31.84 71.954 72.772V822.05zM399.73 285.32l-98.936 100.065-44.973-45.477c-13.5-13.647-35.981-13.647-44.973 0-13.5 13.638-13.5 36.386 0 45.477l71.954 72.781c4.5 4.546 13.492 9.092 26.981 9.092 13.5 0 13.5-4.546 26.981-9.092L458.19 335.353c13.5-13.647 13.5-36.386 0-45.487-26.981-13.638-44.973-13.638-58.463-4.546z m413.743 54.588H503.165c-22.481 0-31.481 13.638-31.481 31.84 0 22.739 13.5 31.84 31.481 31.84h310.316c22.481 0 31.473-13.647 31.473-31.84 0-18.202-13.5-31.84-31.481-31.84zM318.775 544.584c-58.463 0-103.436 45.487-103.436 104.62 0 59.125 44.973 104.611 103.436 104.611 58.473 0 103.436-45.487 103.436-104.611 0-63.68-49.463-104.62-103.436-104.62z m0 136.459c-22.481 0-35.973-13.647-35.973-36.386 0-22.747 13.492-36.395 35.973-36.395 22.492 0 35.981 13.647 35.981 36.395 0 22.739-17.992 36.386-35.981 36.386z m494.698-68.235H503.165c-22.481 0-31.481 13.647-31.481 31.849 0 18.184 13.5 31.84 31.481 31.84h310.316c22.481 0 31.473-13.647 31.473-31.84 0-18.202-13.5-31.84-31.481-31.84z`})],-1),B(i).hasRunning?(G(),Y(`span`,{key:0,class:`wb-running-dot`,title:B(Q)(`@ACTBAR:有任务正在执行`),"aria-hidden":`true`},null,8,Iw)):V(``,!0)],10,Fw)]),_:1},8,[`content`])]))}}),[[`__scopeId`,`data-v-5518dae6`]]);function Rw(){let e=window.location.port||`80`;return e===`5173`||e===`4173`||e===`5544`?4177:parseInt(e,10)}var zw=Rw(),Bw=15e3,Vw=Ft(`instances`,()=>{let e=w([]),t=w(null),n=w(null),r=w(null),i=K(()=>t.value==null?null:e.value.find(e=>e.pid===t.value)??null),a=K(()=>t.value==null?e.value:e.value.filter(e=>e.pid!==t.value));async function o(){try{let n=await fetch(`/api/instances`);if(!n.ok)throw Error(`HTTP ${n.status}`);let i=await n.json();i&&`success`in i&&i.success?(e.value=i.instances,t.value=i.currentInstanceId,r.value=null):r.value=`error`in i&&i.error||`未知错误`}catch(e){r.value=e.message}}function s(){if(n.value)return;let t=Ct(`http://localhost:${zw}`,{transports:[`websocket`,`polling`],reconnection:!0,reconnectionDelay:1e3,reconnectionDelayMax:1e4,reconnectionAttempts:1/0,timeout:2e4,forceNew:!0});n.value=t,t.on(`instances_changed`,t=>{t&&Array.isArray(t.instances)&&(e.value=t.instances)})}function c(){if(n.value){try{n.value.off(`instances_changed`)}catch{}try{n.value.disconnect()}catch{}n.value=null}}function l(){o(),s(),d=window.setInterval(()=>{o()},Bw)}function u(){c(),d!=null&&(window.clearInterval(d),d=null)}let d=null;return{list:e,currentInstanceId:t,currentInstance:i,otherInstances:a,lastError:r,refresh:o,start:l,stop:u}}),Hw={class:`instance-switcher`},Uw={class:`switcher-text`},Ww={class:`instance-row instance-row--current`},Gw={class:`instance-row-main`},Kw={class:`instance-name`},qw={class:`instance-row-sub`},Jw={class:`instance-path`},Yw={class:`instance-row`},Xw={class:`instance-row-main`},Zw={class:`instance-name`},Qw={class:`instance-row-sub`},$w={class:`instance-path`},eT={class:`instance-empty`},tT=$(X({__name:`InstanceSwitcher`,setup(e){let n=Vw(),r=K(()=>n.list.length>0),i=K(()=>n.list.length),a=K(()=>`${i.value} ${Q(`@INSSW:个实例`)}`);function o(e){e&&window.open(`http://localhost:${e}`,`_blank`,`noopener`)}function c(e){return tn(e.projectPath)||e.projectName}return(e,i)=>r.value?(G(),U(B(se),{key:0,trigger:`click`,placement:`bottom-end`,onCommand:o},{dropdown:R(()=>[z(B(y),{class:`instance-dropdown-menu`},{default:R(()=>[B(n).currentInstance?(G(),U(B(fe),{key:0,disabled:``},{default:R(()=>[W(`div`,Ww,[W(`div`,Gw,[W(`span`,Kw,q(B(n).currentInstance.projectName),1),z(B(s),{size:`small`,type:`primary`,effect:`light`,class:`instance-tag`},{default:R(()=>[Z(q(B(Q)(`@INSSW:当前`)),1)]),_:1})]),W(`div`,qw,[z(B(s),{size:`small`,effect:`plain`,class:`port-badge`},{default:R(()=>[Z(`:`+q(B(n).currentInstance.port),1)]),_:1}),W(`span`,Jw,q(c(B(n).currentInstance)),1)])])]),_:1})):V(``,!0),(G(!0),Y(H,null,L(B(n).otherInstances,e=>(G(),U(B(fe),{key:e.pid,command:e.port},{default:R(()=>[W(`div`,Yw,[W(`div`,Xw,[W(`span`,Zw,q(e.projectName),1),z(B(s),{size:`small`,effect:`plain`,class:`port-badge`},{default:R(()=>[Z(`:`+q(e.port),1)]),_:2},1024)]),W(`div`,Qw,[W(`span`,$w,q(c(e)),1)])])]),_:2},1032,[`command`]))),128)),B(n).otherInstances.length===0?(G(),U(B(fe),{key:1,disabled:``},{default:R(()=>[W(`span`,eT,q(B(Q)(`@INSSW:无其他运行中的实例`)),1)]),_:1})):V(``,!0)]),_:1})]),default:R(()=>[W(`span`,Hw,[z(B(t),{class:`switcher-icon`},{default:R(()=>i[0]||=[W(`svg`,{viewBox:`0 0 24 24`,xmlns:`http://www.w3.org/2000/svg`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[W(`rect`,{x:`3`,y:`3`,width:`7`,height:`7`,rx:`1`}),W(`rect`,{x:`14`,y:`3`,width:`7`,height:`7`,rx:`1`}),W(`rect`,{x:`3`,y:`14`,width:`7`,height:`7`,rx:`1`}),W(`rect`,{x:`14`,y:`14`,width:`7`,height:`7`,rx:`1`})],-1)]),_:1}),W(`span`,Uw,q(a.value),1)])]),_:1})):V(``,!0)}}),[[`__scopeId`,`data-v-89d75844`]]),nT=`data:image/svg+xml,%3csvg%20width='200'%20height='200'%20viewBox='0%200%20200%20200'%20xmlns='http://www.w3.org/2000/svg'%3e%3cdefs%3e%3cradialGradient%20id='bgGrad'%20cx='38%25'%20cy='32%25'%20r='70%25'%3e%3cstop%20offset='0%25'%20stop-color='%231e1b4b'/%3e%3cstop%20offset='100%25'%20stop-color='%230d0b1e'/%3e%3c/radialGradient%3e%3clinearGradient%20id='mainGrad'%20x1='0%25'%20y1='0%25'%20x2='0%25'%20y2='100%25'%3e%3cstop%20offset='0%25'%20stop-color='%23c4b5fd'/%3e%3cstop%20offset='100%25'%20stop-color='%237c3aed'/%3e%3c/linearGradient%3e%3clinearGradient%20id='featGrad'%20x1='0%25'%20y1='0%25'%20x2='100%25'%20y2='100%25'%3e%3cstop%20offset='0%25'%20stop-color='%237dd3fc'/%3e%3cstop%20offset='100%25'%20stop-color='%230284c7'/%3e%3c/linearGradient%3e%3cfilter%20id='glow'%20x='-40%25'%20y='-40%25'%20width='180%25'%20height='180%25'%3e%3cfeGaussianBlur%20in='SourceGraphic'%20stdDeviation='2.5'%20result='blur'/%3e%3cfeMerge%3e%3cfeMergeNode%20in='blur'/%3e%3cfeMergeNode%20in='SourceGraphic'/%3e%3c/feMerge%3e%3c/filter%3e%3cfilter%20id='softGlow'%20x='-20%25'%20y='-20%25'%20width='140%25'%20height='140%25'%3e%3cfeGaussianBlur%20in='SourceGraphic'%20stdDeviation='1.5'%20result='blur'/%3e%3cfeMerge%3e%3cfeMergeNode%20in='blur'/%3e%3cfeMergeNode%20in='SourceGraphic'/%3e%3c/feMerge%3e%3c/filter%3e%3c/defs%3e%3c!--%20背景圆%20--%3e%3ccircle%20cx='100'%20cy='100'%20r='96'%20fill='url(%23bgGrad)'/%3e%3c!--%20同步外弧(上半,代表%20sync%20循环)%20--%3e%3cpath%20d='M%20100,20%20A%2080,80%200%201,1%2036,153'%20stroke='rgba(167,139,250,0.18)'%20stroke-width='4.5'%20fill='none'%20stroke-linecap='round'/%3e%3c!--%20同步外弧(下半)%20--%3e%3cpath%20d='M%2036,153%20A%2080,80%200%200,1%20164,153'%20stroke='rgba(56,189,248,0.18)'%20stroke-width='4.5'%20fill='none'%20stroke-linecap='round'/%3e%3c!--%20同步箭头(上)%20--%3e%3cpath%20d='M%2091,17%20L%20100,20%20L%2096,29'%20stroke='rgba(167,139,250,0.55)'%20stroke-width='2.5'%20fill='none'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c!--%20同步箭头(下)%20--%3e%3cpath%20d='M%20163,145%20L%20164,154%20L%20155,151'%20stroke='rgba(56,189,248,0.55)'%20stroke-width='2.5'%20fill='none'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c!--%20主分支竖线%20--%3e%3cline%20x1='76'%20y1='44'%20x2='76'%20y2='156'%20stroke='url(%23mainGrad)'%20stroke-width='5.5'%20stroke-linecap='round'%20filter='url(%23softGlow)'/%3e%3c!--%20特性分支曲线(分出)%20--%3e%3cpath%20d='M%2076,80%20C%2098,80%20130,96%20130,120%20L%20130,140'%20stroke='url(%23featGrad)'%20stroke-width='4.5'%20fill='none'%20stroke-linecap='round'%20filter='url(%23softGlow)'/%3e%3c!--%20特性分支合并回主分支%20--%3e%3cpath%20d='M%20130,140%20C%20130,156%20105,159%2076,155'%20stroke='url(%23featGrad)'%20stroke-width='4.5'%20fill='none'%20stroke-linecap='round'/%3e%3c!--%20主分支节点%20--%3e%3ccircle%20cx='76'%20cy='48'%20r='11'%20fill='%2313103a'%20stroke='%23c4b5fd'%20stroke-width='3'%20filter='url(%23glow)'/%3e%3ccircle%20cx='76'%20cy='48'%20r='5'%20fill='%23ddd6fe'/%3e%3ccircle%20cx='76'%20cy='84'%20r='11'%20fill='%2313103a'%20stroke='%23a78bfa'%20stroke-width='3'/%3e%3ccircle%20cx='76'%20cy='84'%20r='5'%20fill='%23c4b5fd'/%3e%3ccircle%20cx='76'%20cy='120'%20r='11'%20fill='%2313103a'%20stroke='%238b5cf6'%20stroke-width='3'/%3e%3ccircle%20cx='76'%20cy='120'%20r='5'%20fill='%23a78bfa'/%3e%3ccircle%20cx='76'%20cy='155'%20r='11'%20fill='%2313103a'%20stroke='%237c3aed'%20stroke-width='3'%20filter='url(%23glow)'/%3e%3ccircle%20cx='76'%20cy='155'%20r='5'%20fill='%238b5cf6'/%3e%3c!--%20特性分支节点%20--%3e%3ccircle%20cx='130'%20cy='115'%20r='11'%20fill='%2313103a'%20stroke='%2338bdf8'%20stroke-width='3'%20filter='url(%23glow)'/%3e%3ccircle%20cx='130'%20cy='115'%20r='5'%20fill='%237dd3fc'/%3e%3ccircle%20cx='130'%20cy='143'%20r='11'%20fill='%2313103a'%20stroke='%230ea5e9'%20stroke-width='3'%20filter='url(%23glow)'/%3e%3ccircle%20cx='130'%20cy='143'%20r='5'%20fill='%2338bdf8'/%3e%3c/svg%3e`,rT={class:`main-header app-header`},iT={class:`header-left`},aT={href:`https://github.com/xz333221/zen-gitsync`,target:`_blank`,class:`header-brand-link`},oT=[`src`],sT={class:`header-center`},cT={class:`header-info`},lT={key:0,class:`header-actions`},uT={id:`user-info`,class:`user-info-card`},dT={class:`user-name`},fT={class:`user-label`},pT={class:`user-warning`},mT={key:0,class:`config-broken-banner`},hT={class:`banner-left`},gT={class:`banner-text`},_T={class:`banner-title`},vT={class:`banner-detail`},yT={key:1,class:`banner-path`},bT={class:`banner-actions`},xT={key:0,class:`loading-container`},ST={class:`loading-spinner`},CT={class:`loading-text`},wT={key:1,class:`app-body`},TT={class:`view-pane grid-layout`},ET={class:`git-status-panel`},DT={key:0,class:`commit-form-panel`},OT={key:0,class:`user-unconfigured-card`},kT={class:`user-unconfigured-title`},AT={class:`user-unconfigured-desc`},jT={class:`user-unconfigured-actions`},MT={class:`user-unconfigured-divider`},NT={class:`user-unconfigured-code`},PT={key:1,class:`commit-form-panel`},FT={class:`not-git-repo-card`},IT={class:`not-git-repo-title`},LT={class:`not-git-repo-desc`},RT={class:`not-git-repo-tip`},zT={class:`tip-label`},BT={class:`copy-hint`},VT={class:`cmd-console-panel`},HT={class:`log-list-panel`},UT={class:`view-pane editor-pane`},WT={class:`view-pane source-map-pane`},GT={class:`view-pane workbench-pane`},KT={class:`main-footer app-footer`},qT={key:0,class:`footer-model-hint`},JT={class:`footer-model-hint__label`},YT={class:`footer-model-hint__name`},XT=$(X({__name:`App`,setup(e){let n=u(()=>ge(()=>import(`./EditorView-eQBqgBEd.js`),__vite__mapDeps([3,4,0,1,2,5]))),r=u(()=>ge(()=>import(`./SourceMapView-BLkrjBFW.js`),__vite__mapDeps([6,4,0,1,2,7]))),i=u(()=>ge(()=>import(`./WorkbenchView-D2eEOP1R.js`),__vite__mapDeps([8,4,0,1,2,9]))),a=w(``),o=w(null),s=yn(),c=hn(),l=mn(),d=Vw(),f=w(!1),p=K(()=>c.currentDirectory),m=K(()=>{let e=c.models.find(e=>e.isDefault);return e?e.name||e.model:``});function h(){let e=tn(p.value);document.title=`${e} - Zen GitSync`}F(p,()=>{h()},{immediate:!0});function g(){c.config&&(a.value=`${Q(`@F13B4:默认提交信息: `)}${c.config.defaultCommitMessage}`)}async function _(){try{let e=await(await fetch(`/api/current_directory`)).json();return c.setCurrentDirectory(e.directory||Q(`@F13B4:未知目录`)),e}catch(e){return console.error(`获取当前目录失败:`,e),{directory:Q(`@F13B4:未知目录`),isGitRepo:!1}}}mt(async()=>{console.log(Q(`@F13B4:---------- 页面初始化开始 ----------`)),d.start();try{let e=await _();c.isLoaded||await c.loadConfig(),g(),s.isGitRepo=e.isGitRepo===!0,s.lastCheckedTime=Date.now(),s.isGitRepo?await Promise.all([s.getCurrentBranch(!0),s.getAllBranches(),s.getUserInfo(),s.getRemoteUrl(),s.getBranchStatus(!0)]):J.warning(Q(`@F13B4:当前目录不是Git仓库,部分功能将不可用`))}catch(e){console.error(`初始化失败:`,e)}finally{f.value=!0,console.log(Q(`@F13B4:---------- 页面初始化完成 ----------`)),setTimeout(()=>{ne()},100)}}),ce(()=>{d.stop()});function v(){ne()}window.addEventListener(`ui-layout-reset`,v),ce(()=>{window.removeEventListener(`ui-layout-reset`,v)});function y(){o.value&&o.value.refreshStatus()}let b=w(`git`);F(b,e=>{e===`git`&&o.value&&s.isGitRepo&&Promise.all([s.fetchStatus(),s.getBranchStatus()]).catch(e=>console.error(`切换到Git视图刷新失败:`,e))});let x=w(!1);function C(){x.value=!0}let ee=!1,T=!1,D=!1,O=0,k=0,te=``,j=``;function M(){let e=document.querySelector(`.grid-layout`);if(!e)return;let t=getComputedStyle(e).gridTemplateColumns.split(` `),n=getComputedStyle(e).gridTemplateRows.split(` `);if(t.length>=5&&n.length>=3){let e=parseFloat(t[0]),r=parseFloat(t[2]),i=parseFloat(t[4]),a=e+r+i,o=e/a,s=r/a,l=i/a,u=parseFloat(n[0]),d=u/(u+parseFloat(n[2]));c.ui.layout={leftRatio:o,midRatio:s,rightRatio:l,topRatio:d},console.log(`${Q(`@F13B4:布局比例已保存 - 左侧: `)}${(o*100).toFixed(0)}${Q(`@F13B4:%, 中间: `)}${(s*100).toFixed(0)}${Q(`@F13B4:%, 右侧: `)}${(l*100).toFixed(0)}${Q(`@F13B4:%, 上方: `)}${(d*100).toFixed(0)}%`)}}function ne(){let e=document.querySelector(`.grid-layout`);if(!e)return;let t=c.ui.layout,n=Number.isFinite(t?.leftRatio)?t.leftRatio:null,r=Number.isFinite(t?.midRatio)?t.midRatio:null,i=Number.isFinite(t?.rightRatio)?t.rightRatio:null,a=Number.isFinite(t?.topRatio)?t.topRatio:null;if(n!=null&&r!=null&&i!=null?e.style.gridTemplateColumns=`${n}fr 8px ${r}fr 8px ${i}fr`:e.style.gridTemplateColumns=`2fr 8px 3fr 8px 3fr`,a!=null){let t=1-a;e.style.gridTemplateRows=`${a}fr 8px ${t}fr`}}function re(e){ee=!0,O=e.clientX;let t=document.querySelector(`.grid-layout`);te=getComputedStyle(t).gridTemplateColumns,document.getElementById(`v-resizer`)?.classList.add(`active`),document.addEventListener(`mousemove`,ie),document.addEventListener(`mouseup`,oe),e.preventDefault()}function ie(e){if(!ee)return;let t=document.querySelector(`.grid-layout`),n=e.clientX-O,r=te.split(` `);if(r.length>=5){let e=parseFloat(r[0]),i=parseFloat(r[2]),a=parseFloat(r[4]),o=e+i+a,s=(e+n/t.clientWidth*o)/o,c=1-s,l=i/(i+a),u=a/(i+a),d=.08,f=.4;s<d?t.style.gridTemplateColumns=`${d}fr 8px ${(1-d)*l}fr 8px ${(1-d)*u}fr`:s>f?t.style.gridTemplateColumns=`${f}fr 8px ${(1-f)*l}fr 8px ${(1-f)*u}fr`:t.style.gridTemplateColumns=`${s}fr 8px ${c*l}fr 8px ${c*u}fr`}}function I(e){T=!0,O=e.clientX;let t=document.querySelector(`.grid-layout`);te=getComputedStyle(t).gridTemplateColumns,document.getElementById(`v-resizer-2`)?.classList.add(`active`),document.addEventListener(`mousemove`,ae),document.addEventListener(`mouseup`,oe),e.preventDefault()}function ae(e){if(!T)return;let t=document.querySelector(`.grid-layout`),n=e.clientX-O,r=te.split(` `);if(r.length>=5){let e=parseFloat(r[0]),i=parseFloat(r[2]),a=parseFloat(r[4]),o=e+i+a,s=(a-n/t.clientWidth*o)/o,c=1-s,l=e/(e+i),u=i/(e+i),d=.1,f=.5;s<d?t.style.gridTemplateColumns=`${(1-d)*l}fr 8px ${(1-d)*u}fr 8px ${d}fr`:s>f?t.style.gridTemplateColumns=`${(1-f)*l}fr 8px ${(1-f)*u}fr 8px ${f}fr`:t.style.gridTemplateColumns=`${c*l}fr 8px ${c*u}fr 8px ${s}fr`}}function oe(){ee=!1,T=!1,document.getElementById(`v-resizer`)?.classList.remove(`active`),document.getElementById(`v-resizer-2`)?.classList.remove(`active`),document.removeEventListener(`mousemove`,ie),document.removeEventListener(`mousemove`,ae),document.removeEventListener(`mouseup`,oe),M()}function L(e){D=!0,k=e.clientY;let t=document.querySelector(`.grid-layout`);j=getComputedStyle(t).gridTemplateRows,document.getElementById(`h-resizer`)?.classList.add(`active`),document.addEventListener(`mousemove`,se),document.addEventListener(`mouseup`,le),e.preventDefault()}function se(e){if(!D)return;let t=document.querySelector(`.grid-layout`),n=e.clientY-k,r=j.split(` `);if(r.length>=3){let e=parseFloat(r[0]),i=e+parseFloat(r[2]),a=(e+n/t.clientHeight*i)/i,o=1-a,s=.2,c=.8;a<s?t.style.gridTemplateRows=`${s}fr 8px ${1-s}fr`:a>c?t.style.gridTemplateRows=`${c}fr 8px ${1-c}fr`:t.style.gridTemplateRows=`${a}fr 8px ${o}fr`}}function le(){D=!1,document.getElementById(`h-resizer`)?.classList.remove(`active`),document.removeEventListener(`mousemove`,se),document.removeEventListener(`mouseup`,le),M()}function ue(){navigator.clipboard.writeText(`git init`).then(()=>{J.success(Q(`@F13B4:已复制`))}).catch(()=>{J.error(`复制失败`)})}return(e,a)=>{let u=S;return G(),U(B(Xt),{locale:B(l).elementPlusLocale},{default:R(()=>[W(`header`,rT,[W(`div`,iT,[W(`a`,aT,[W(`img`,{src:B(nT),alt:`Zen GitSync Logo`,class:`logo`},null,8,oT),a[3]||=W(`h1`,null,`Zen GitSync`,-1)])]),W(`div`,sT,[z(yS,{variant:`header`})]),W(`div`,cT,[B(s).isGitRepo?(G(),Y(`div`,lT)):V(``,!0),z(tT),W(`div`,uT,[B(s).userName?(G(),U(B(A),{key:0,content:B(s).userEmail||B(s).userName,placement:`bottom`,effect:`dark`,"show-after":200},{default:R(()=>[W(`span`,dT,q(B(s).userName),1)]),_:1},8,[`content`])):(G(),Y(H,{key:1},[W(`span`,fT,q(B(Q)(`@F13B4:用户: `)),1),W(`span`,pT,q(B(Q)(`@F13B4:未配置`)),1)],64)),z(B(A),{content:B(Q)(`@F13B4:用户设置`),placement:`bottom`,effect:`dark`,"show-after":200},{default:R(()=>[W(`button`,{class:`modern-btn btn-icon-28`,onClick:C},[z(B(t),{class:`btn-icon`},{default:R(()=>[z(B(E))]),_:1})])]),_:1},8,[`content`])])])]),B(c).hasConfigLoadError?(G(),Y(`div`,mT,[W(`div`,hT,[z(B(t),{class:`banner-icon`},{default:R(()=>[z(B(Ne))]),_:1}),W(`div`,gT,[W(`span`,_T,q(B(Q)(`@CFGERR:系统配置文件有问题`)),1),B(c).configLoadError?(G(),U(B(A),{key:0,content:B(c).configLoadError,placement:`bottom`,effect:`dark`,"show-after":200},{default:R(()=>[W(`span`,vT,q(B(Q)(`@CFGERR:查看原因`)),1)]),_:1},8,[`content`])):V(``,!0),B(c).configFilePath?(G(),Y(`span`,yT,q(B(c).configFilePath),1)):V(``,!0)])]),W(`div`,bT,[z(B(P),{size:`small`,type:`warning`,onClick:a[0]||=e=>B(c).openSystemConfigFile()},{default:R(()=>[Z(q(B(Q)(`@CFGERR:打开系统配置文件`)),1)]),_:1})])])):V(``,!0),W(`main`,{class:`main-container`,style:N({top:B(c).hasConfigLoadError?`104px`:`64px`})},[f.value?(G(),Y(`div`,wT,[z(Lw,{activeView:b.value,"onUpdate:activeView":a[1]||=e=>b.value=e},null,8,[`activeView`]),Yt(W(`div`,TT,[W(`div`,ET,[z(nd,{ref_key:`gitStatusRef`,ref:o,"initial-directory":p.value},null,8,[`initial-directory`])]),W(`div`,{class:`vertical-resizer`,id:`v-resizer`,onMousedown:re},null,32),B(s).isGitRepo?(G(),Y(`div`,DT,[!B(s).userName||!B(s).userEmail?(G(),Y(`div`,OT,[a[9]||=W(`div`,{class:`user-unconfigured-icon`},[W(`svg`,{viewBox:`0 0 24 24`,width:`40`,height:`40`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[W(`circle`,{cx:`12`,cy:`8`,r:`4`}),W(`path`,{d:`M4 20c0-4 3.6-7 8-7s8 3 8 7`}),W(`path`,{d:`M17 13.5l1.5 1.5 3-3`,stroke:`var(--color-warning)`,"stroke-width":`2`})])],-1),W(`h2`,kT,`Git `+q(B(Q)(`@F13B4:用户未配置`)),1),W(`p`,AT,q(B(Q)(`@F13B4:请先配置Git用户信息才能进行提交操作。`)),1),W(`div`,jT,[W(`button`,{class:`user-unconfigured-primary-btn`,onClick:C},[a[5]||=W(`svg`,{viewBox:`0 0 24 24`,width:`15`,height:`15`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[W(`path`,{d:`M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`}),W(`path`,{d:`M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z`})],-1),Z(` `+q(B(Q)(`@F13B4:立即配置`)),1)])]),W(`div`,MT,[W(`span`,null,q(B(Q)(`@F13B4:或者使用命令行配置:`)),1)]),W(`div`,NT,[a[6]||=W(`span`,{class:`code-prompt`},`$`,-1),Z(` git config `+q(B(Q)(`@F13B4:--global user.name "您的用户名"`)),1),a[7]||=W(`br`,null,null,-1),a[8]||=W(`span`,{class:`code-prompt`},`$`,-1),Z(` git config `+q(B(Q)(`@F13B4:--global user.email "您的邮箱"`)),1)])])):(G(),U(Tm,{key:1}))])):(G(),Y(`div`,PT,[W(`div`,FT,[a[11]||=W(`div`,{class:`not-git-repo-icon`},[W(`svg`,{viewBox:`0 0 24 24`,width:`48`,height:`48`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[W(`path`,{d:`M4 22h14a2 2 0 0 0 2-2V7.5L14.5 2H6a2 2 0 0 0-2 2v4`}),W(`path`,{d:`M14 2v6h6`}),W(`path`,{d:`M2 15h10`}),W(`path`,{d:`M5 12l-3 3 3 3`}),W(`path`,{d:`M9 12l3 3-3 3`})])],-1),W(`h2`,IT,`Git`+q(B(Q)(`@F13B4:仓库初始化`)),1),W(`p`,LT,q(B(Q)(`@F13B4:当前目录不是Git仓库,请先初始化Git仓库或切换到Git仓库目录。`)),1),W(`div`,RT,[W(`span`,zT,q(B(Q)(`@F13B4:可以使用以下命令初始化仓库:`)),1),W(`div`,{class:`not-git-repo-code`,onClick:ue},[a[10]||=W(`code`,null,`git init`,-1),W(`span`,BT,q(B(Q)(`@F13B4:点击复制`)),1)])])])])),W(`div`,{class:`horizontal-resizer`,id:`h-resizer`,onMousedown:L},null,32),W(`div`,VT,[z(yx)]),W(`div`,{class:`vertical-resizer-2`,id:`v-resizer-2`,onMousedown:I},null,32),W(`div`,HT,[z(oh)])],512),[[Je,b.value===`git`]]),(G(),U(nt,null,[Yt(W(`div`,UT,[z(B(n))],512),[[Je,b.value===`editor`]])],1024)),(G(),U(nt,null,[Yt(W(`div`,WT,[z(B(r))],512),[[Je,b.value===`source-map`]])],1024)),(G(),U(nt,null,[Yt(W(`div`,GT,[z(B(i))],512),[[Je,b.value===`workbench`]])],1024))])):(G(),Y(`div`,xT,[z(u,{class:`loading-card`},{default:R(()=>[W(`div`,ST,[z(B(t),{class:`is-loading`},{default:R(()=>a[4]||=[W(`svg`,{viewBox:`0 0 1024 1024`,xmlns:`http://www.w3.org/2000/svg`},[W(`path`,{fill:`currentColor`,d:`M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32zm0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32zm448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32zm-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32zM195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248zM828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0zm-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0z`})],-1)]),_:1})]),W(`div`,CT,q(B(Q)(`@F13B4:加载中...`)),1)]),_:1})]))],4),W(`footer`,KT,[z(eS,{onBranchChanged:y}),m.value?(G(),Y(`div`,qT,[W(`span`,JT,q(B(Q)(`@F13B4:默认模型`)),1),W(`span`,YT,q(m.value),1)])):V(``,!0),z(xx),z(Px)]),z(kw,{modelValue:x.value,"onUpdate:modelValue":a[2]||=e=>x.value=e},null,8,[`modelValue`])]),_:1},8,[`locale`])}}}),[[`__scopeId`,`data-v-0d853089`]]);if(typeof window<`u`){function e(){var e=document.body,t=document.getElementById(`__svg__icons__dom__`);t||(t=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`),t.style.position=`absolute`,t.style.width=`0`,t.style.height=`0`,t.id=`__svg__icons__dom__`,t.setAttribute(`xmlns`,`http://www.w3.org/2000/svg`),t.setAttribute(`xmlns:link`,`http://www.w3.org/1999/xlink`)),t.innerHTML=`<symbol viewBox="0 0 1024 1024" id="icon-ai-commit"><path d="M380 180q0 340 340 340-340 0-340 340 0-340-340-340 340 0 340-340ZM800 40q0 155 155 155-155 0-155 155 0-155-155-155 155 0 155-155ZM880 606q0 72 72 72-72 0-72 72 0-72-72-72 72 0 72-72Z" fill="currentColor" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-claudecode-color"><path d="M895.915 467.157H1024V599.51H896v129.195h-63.445v124.63H768v-124.63h-63.445v124.63H640v-124.63H384v124.63h-64.512v-124.63H256v124.63h-64.555v-124.63H128V599.467H0V467.2h128V213.333h767.915v253.824zm-639.915 0h63.488V345.685H256v121.472zm448.427 0H768V345.685h-63.573v121.472z" fill="#D97757" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-code-folder"><path d="M895.8 592.1a32.2 32.1 0 1 0 64.4 0 32.2 32.1 0 1 0-64.4 0Z" fill="#515151" /><path d="M928 687.9c-17.8 0-32.2 14.4-32.2 32.1v80.7c0 35.3-28.7 64-64 64H192.5c-35.3 0-64-28.7-64-64V225c0-35.3 28.7-64 64-64H415l82.7 143.3c6.6 11.4 19.2 17.2 31.5 15.8h302.5c35.3 0 64 28.7 64 64v80c0 17.7 14.4 32.1 32.2 32.1s32.2-14.4 32.2-32.1c0-.8 0-1.6-.1-2.4v-77.5C960 329 925.1 282 876.1 264v-1c0-68.2-55.8-124-124-124H476.2l-14.8-25.7c-7.4-12.9-18-16.2-27.3-16l-.1-.1H192.1c-70.7 0-128 57.3-128 128v574.1c0 70.7 57.3 128 128 128h640c70.7 0 128-57.3 128-128v-76.9c.1-.8.1-1.6.1-2.4 0-17.7-14.4-32.1-32.2-32.1zM747.1 202.8c31.6 0 58 23.2 63.1 53.4H543.9l-30.8-53.4h234z" fill="#515151" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-code-map"><path d="M961.5 700.5H889V512c0-24-19.5-43.5-43.5-43.5H541v-145h72.5c24 0 43.5-19.5 43.5-43.5V77c0-24-19.5-43.5-43.5-43.5h-203C386.5 33.5 367 53 367 77v203c0 24 19.5 43.5 43.5 43.5H483v145H178.5c-24 0-43.5 19.5-43.5 43.5v188.5H62.5C38.5 700.5 19 720 19 744v203c0 24 19.5 43.5 43.5 43.5h203c24 0 43.5-19.5 43.5-43.5V744c0-24-19.5-43.5-43.5-43.5H193v-174h290v174h-72.5c-24 0-43.5 19.5-43.5 43.5v203c0 24 19.5 43.5 43.5 43.5h203c24 0 43.5-19.5 43.5-43.5V744c0-24-19.5-43.5-43.5-43.5H541v-174h290v174h-72.5c-24 0-43.5 19.5-43.5 43.5v203c0 24 19.5 43.5 43.5 43.5h203c24 0 43.5-19.5 43.5-43.5V744c0-24-19.5-43.5-43.5-43.5zM425 91.5h174v174H425v-174zm-174 667v174H77v-174h174zm348 174H425v-174h174v174zm348 0H773v-174h174v174z" /></symbol><symbol class="icon" viewBox="0 0 1044 1024" id="icon-code-task"><path d="M840.454 62.442H201.849c-76.445 0-139.409 63.68-139.409 141.007v614.048c0 77.326 62.963 141.007 139.408 141.007h638.605c76.454 0 139.408-63.68 139.408-141.007V203.449c0-77.326-58.454-141.007-139.408-141.007zm71.955 759.608c0 40.931-31.473 72.772-71.954 72.772H201.85c-40.473 0-71.954-31.84-71.954-72.772V203.447c0-40.931 31.481-72.772 71.954-72.772h638.605c40.481 0 71.954 31.84 71.954 72.772V822.05zM399.73 285.32l-98.936 100.065-44.973-45.477c-13.5-13.647-35.981-13.647-44.973 0-13.5 13.638-13.5 36.386 0 45.477l71.954 72.781c4.5 4.546 13.492 9.092 26.981 9.092 13.5 0 13.5-4.546 26.981-9.092L458.19 335.353c13.5-13.647 13.5-36.386 0-45.487-26.981-13.638-44.973-13.638-58.463-4.546zm413.743 54.588H503.165c-22.481 0-31.481 13.638-31.481 31.84 0 22.739 13.5 31.84 31.481 31.84h310.316c22.481 0 31.473-13.647 31.473-31.84 0-18.202-13.5-31.84-31.481-31.84zM318.775 544.584c-58.463 0-103.436 45.487-103.436 104.62 0 59.125 44.973 104.611 103.436 104.611 58.473 0 103.436-45.487 103.436-104.611 0-63.68-49.463-104.62-103.436-104.62zm0 136.459c-22.481 0-35.973-13.647-35.973-36.386 0-22.747 13.492-36.395 35.973-36.395 22.492 0 35.981 13.647 35.981 36.395 0 22.739-17.992 36.386-35.981 36.386zm494.698-68.235H503.165c-22.481 0-31.481 13.647-31.481 31.849 0 18.184 13.5 31.84 31.481 31.84h310.316c22.481 0 31.473-13.647 31.473-31.84 0-18.202-13.5-31.84-31.481-31.84z" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-command-list"><path d="M909.061 185.47H585.143c-11.494 0-20.898-9.405-20.898-20.899s9.404-20.898 20.898-20.898H909.06c11.494 0 20.898 9.405 20.898 20.898s-9.404 20.898-20.898 20.898zm0 229.877H585.143c-11.494 0-20.898-9.404-20.898-20.898s9.404-20.898 20.898-20.898H909.06c11.494 0 20.898 9.404 20.898 20.898s-9.404 20.898-20.898 20.898zM909.061 640H585.143c-11.494 0-20.898-9.404-20.898-20.898s9.404-20.898 20.898-20.898H909.06c11.494 0 20.898 9.404 20.898 20.898S920.555 640 909.061 640zm0 229.878H585.143c-11.494 0-20.898-9.405-20.898-20.898s9.404-20.898 20.898-20.898H909.06c11.494 0 20.898 9.404 20.898 20.898s-9.404 20.898-20.898 20.898zM391.837 470.204H177.633c-45.976 0-83.592-37.616-83.592-83.592V172.408c0-45.975 37.616-83.592 83.592-83.592h214.204c45.975 0 83.592 37.617 83.592 83.592v214.204c0 45.976-37.617 83.592-83.592 83.592zM177.633 130.612c-22.988 0-41.796 18.808-41.796 41.796v214.204c0 22.988 18.808 41.796 41.796 41.796h214.204c22.987 0 41.796-18.808 41.796-41.796V172.408c0-22.988-18.809-41.796-41.796-41.796H177.633z" fill="currentColor" class="custom-cursor-on-hover" /><path d="M391.837 924.735H177.633c-45.976 0-83.592-37.617-83.592-83.592V626.939c0-45.976 37.616-83.592 83.592-83.592h214.204c45.975 0 83.592 37.616 83.592 83.592v214.204c0 45.975-37.617 83.592-83.592 83.592zM177.633 585.143c-22.988 0-41.796 18.808-41.796 41.796v214.204c0 22.988 18.808 41.796 41.796 41.796h214.204c22.987 0 41.796-18.808 41.796-41.796V626.939c0-22.988-18.809-41.796-41.796-41.796H177.633z" fill="currentColor" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-custom-cmd"><path fill="currentColor" d="M785.7 163.4c-10.8-21.7-33-35.4-57.2-35.4H295.6c-24.2 0-46.4 13.7-57.2 35.4L128 384v448c0 35.3 28.7 64 64 64h640c35.3 0 64-28.7 64-64V384L785.7 163.4zM728.4 192l96 192H544V192h184.4zm-432.8 0H480v192H199.6l96-192zM832 832H192V448h640v384z" /><path fill="currentColor" d="M512 704h192v64H512zm-192 21.3 42.7 42.7 85.3-85.3 42.7-42.7-42.7-42.7-85.3-85.3-42.7 42.7 85.3 85.3z" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-git-branch"><path d="M938.667 256c0-93.867-76.8-170.667-170.667-170.667S597.333 162.133 597.333 256c0 76.8 55.467 145.067 128 162.133C708.267 576 580.267 704 422.4 721.067c-17.067-59.734-64-106.667-119.467-119.467V128c0-25.6-17.066-42.667-42.666-42.667S213.333 102.4 213.333 128v473.6c-72.533 17.067-128 85.333-128 166.4 0 93.867 76.8 170.667 170.667 170.667 81.067 0 145.067-55.467 166.4-128C627.2 793.6 793.6 627.2 810.667 422.4c72.533-21.333 128-85.333 128-166.4zM256 853.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zm512-512c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z" /></symbol><symbol class="icon" viewBox="0 0 1305 1024" id="icon-git-fetch"><path d="M960.795 911.159H942.21V809.744h18.585a192.352 192.352 0 1 0 0-384.704h-76.481l-.46-50.248a242.218 242.218 0 0 0-484.512 0l-.459 50.248h-73.422a192.352 192.352 0 1 0 0 384.704h28.451v101.415h-28.451a293.843 293.843 0 0 1-23.48-586.616 343.786 343.786 0 0 1 679.388 0 293.767 293.767 0 0 1-20.65 586.845zm0 0" fill="currentColor" /><path d="M590.623 486.073h101.415v432.199H590.623z" fill="currentColor" /><path d="M641.101 990.394 414.103 803.166l64.55-78.24 162.984 134.149 164.589-134.838 64.244 78.47zm0 0" fill="currentColor" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-git-merge"><path d="M768 597.333c-76.8 0-145.067 55.467-162.133 128C448 708.267 320 580.267 302.933 422.4c72.534-21.333 128-85.333 128-162.133 0-93.867-76.8-170.667-170.666-170.667S85.333 162.133 85.333 256c0 81.067 55.467 145.067 128 166.4V896c0 25.6 17.067 42.667 42.667 42.667S298.667 921.6 298.667 896V640c72.533 93.867 179.2 157.867 302.933 170.667C618.667 883.2 686.933 942.933 768 942.933c93.867 0 170.667-76.8 170.667-170.666S861.867 597.333 768 597.333zM170.667 256c0-46.933 38.4-85.333 85.333-85.333s85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333-85.333-38.4-85.333-85.333zM768 853.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-git-pull-request-with-stash"><path d="M338.842 297.09c16.989-23.36 25.483-50.967 25.483-82.821 2.124-42.472-12.211-78.574-43.003-108.304S254.96 62.431 214.611 64.554c-31.854 0-59.992 8.494-84.414 25.483s-42.472 39.287-54.152 66.894-14.865 56.276-9.556 86.006 18.582 55.214 39.818 76.45c21.236 21.236 46.72 35.04 76.45 41.41v302.615c-29.731 6.371-55.214 20.174-76.45 41.411-21.236 21.236-34.509 46.72-39.818 76.45-5.309 29.731-2.124 58.399 9.556 86.006s29.731 49.905 54.152 66.894 52.029 25.483 82.821 25.483 58.93-8.494 84.414-25.483c25.483-16.989 44.596-39.287 57.338-66.894 6.371-19.113 9.556-39.287 9.556-60.523 0-29.731-8.494-57.338-25.483-82.821-21.236-33.978-52.029-55.214-92.377-63.708v-299.43l25.483-6.371c27.606-12.74 49.904-31.853 66.893-57.336zm-44.596 471.443c8.494 14.865 12.211 30.261 11.149 46.189-1.062 15.927-6.371 31.323-15.927 46.189-9.556 14.865-22.829 25.483-39.818 31.854s-33.978 7.964-50.967 4.778-32.385-11.149-46.189-23.891-21.767-27.607-23.891-44.596c-6.371-27.607-.531-52.559 17.52-74.857s40.88-33.447 68.487-33.447c16.989 0 32.385 4.247 46.189 12.742 13.804 8.494 24.953 20.173 33.447 35.039zM166.829 287.534c-14.865-10.618-26.014-24.422-33.447-41.411-7.433-16.989-9.556-33.978-6.371-50.967 3.185-16.989 11.149-31.854 23.891-44.596s28.138-21.236 46.189-25.483 35.571-2.655 52.559 4.778c16.989 7.433 30.262 18.051 39.818 31.854 9.556 13.803 14.865 29.2 15.927 46.189 1.062 16.989-2.655 32.916-11.149 47.781-8.494 14.865-19.643 26.545-33.447 35.04-13.804 8.494-29.2 12.742-46.189 12.742s-32.915-5.309-47.781-15.927zm614.787 44.596c2.124-19.113-1.062-38.225-9.556-57.338-10.618-27.607-28.669-49.905-54.152-66.894s-53.09-25.483-82.821-25.483h-111.49l76.45-76.45-44.596-41.411-127.417 127.417v41.411l127.417 127.417 44.596-41.41-76.45-76.45h111.49c23.36 0 44.065 8.494 62.116 25.483 18.051 16.989 27.076 38.225 27.076 63.708v89.192h57.338V332.13zm0 449.145H960v-60.523H781.616V542.368h-60.523v178.384H542.709v60.523h178.384v178.384h60.523V781.275z" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-git-pull-request"><path d="M810.667 601.6V341.333c0-72.533-55.467-128-128-128h-128C529.067 213.333 512 230.4 512 256s17.067 42.667 42.667 42.667h128c25.6 0 42.666 17.066 42.666 42.666V601.6c-72.533 17.067-128 85.333-128 166.4 0 93.867 76.8 170.667 170.667 170.667S938.667 861.867 938.667 768c0-81.067-55.467-145.067-128-166.4zM768 853.333c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zm-512-768c-93.867 0-170.667 76.8-170.667 170.667 0 81.067 55.467 145.067 128 166.4V896c0 25.6 17.067 42.667 42.667 42.667S298.667 921.6 298.667 896V422.4c72.533-17.067 128-85.333 128-166.4 0-93.867-76.8-170.667-170.667-170.667zm0 256c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-git-reset"><path d="M320 704h224v64H320zm0-128h384v64H320zm0-128h384v64H320z" /><path d="M960 595.1C960 399 805.3 239 611.3 230.5v-.4H186.5l120.8-120.8L262.1 64 64 262.1l45.3 45.3 152.9 152.9 45.3-45.3-121-120.9h408.6c40.7 0 80.1 7.9 117.1 23.6 35.8 15.2 68 36.9 95.7 64.5 27.7 27.7 49.4 59.8 64.5 95.7C888.1 515 896 554.4 896 595.1s-7.9 80.1-23.6 117.1c-15.2 35.8-36.9 68-64.5 95.7-27.7 27.7-59.8 49.4-95.7 64.5-37.1 15.7-76.5 23.6-117.1 23.6H120.4v64h474.7C796.6 960 960 796.6 960 595.1z" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-git-stash"><path d="m310.229 265.771-47.878 44.458 225.71 225.71h44.458l225.71-225.71-44.458-44.458-170.992 167.573V64h-64.977v369.344L310.229 265.771zm44.458 311.206c6.84 36.478 25.079 66.687 54.718 90.626 29.639 23.939 63.267 35.908 100.885 35.908s71.247-11.969 100.886-35.908c29.639-23.939 49.018-54.148 58.137-90.626h225.71l34.198 30.779v321.466L895.023 960H125.557l-30.779-30.779V607.756l30.779-30.779h229.13zm359.084 61.557c-18.239 38.758-45.598 70.107-82.076 94.046-36.478 23.939-76.947 35.908-121.405 35.908s-84.926-11.969-121.405-35.908c-36.478-23.939-63.837-55.288-82.076-94.046H159.756v256.489h704.489V638.534H713.771z" fill="currentColor" /></symbol><symbol class="icon" viewBox="0 0 1025 1024" id="icon-git"><path d="M1004.728 466.4 557.624 19.328c-25.728-25.76-67.488-25.76-93.28 0L360.472 123.2l78.176 78.176c12.544-5.984 26.56-9.376 41.376-9.376 53.024 0 96 42.976 96 96 0 14.816-3.36 28.864-9.376 41.376l127.968 127.968c12.544-5.984 26.56-9.376 41.376-9.376 53.024 0 96 42.976 96 96s-42.976 96-96 96-96-42.976-96-96c0-14.816 3.36-28.864 9.376-41.376L521.4 374.624a88.837 88.837 0 0 1-9.376 3.872v266.976c37.28 13.184 64 48.704 64 90.528 0 53.024-42.976 96-96 96s-96-42.976-96-96c0-41.792 26.72-77.344 64-90.528V378.496c-37.28-13.184-64-48.704-64-90.528 0-14.816 3.36-28.864 9.376-41.376l-78.176-78.176L19.32 464.288c-25.76 25.792-25.76 67.52 0 93.28l447.136 447.072c25.728 25.76 67.488 25.76 93.28 0l444.992-444.992c25.76-25.76 25.76-67.552 0-93.28z" fill="#444" /></symbol><symbol class="icon" viewBox="0 0 1117 1024" id="icon-muti-choose"><path d="M390.23799999999994 68.402h677.328q49.97 0 49.97 49.97v-.136q0 49.97-49.97 49.97H390.238q-49.97 0-49.97-49.97v.136q0-49.97 49.97-49.97ZM390.23799999999994 474.854h677.328q49.97 0 49.97 49.97v-.137q0 49.97-49.97 49.97H390.238q-49.97 0-49.97-49.97v.137q0-49.97 49.97-49.97ZM390.23799999999994 881.442h677.328q49.97 0 49.97 49.97v-.137q0 49.97-49.97 49.97H390.238q-49.97 0-49.97-49.97v.137q0-49.97 49.97-49.97ZM301.22 10.65A36.044 36.044 0 0 0 275.689 0a35.908 35.908 0 0 0-25.532 10.65l-127.11 127.382-61.302-61.848a36.044 36.044 0 0 0-25.531-10.65 36.18 36.18 0 0 0-25.531 61.713l87.106 87.516a35.771 35.771 0 0 0 25.258 10.513 35.225 35.225 0 0 0 25.395-10.65L301.22 61.576a36.317 36.317 0 0 0 0-50.927zm0 412.595a35.908 35.908 0 0 0-25.531-10.513 35.771 35.771 0 0 0-25.532 10.513l-127.11 127.247-61.302-61.849a36.044 36.044 0 0 0-25.531-10.786 36.18 36.18 0 0 0-25.531 61.849l87.106 87.38a35.771 35.771 0 0 0 50.926 0L301.22 474.033a36.454 36.454 0 0 0 0-50.789zm0 386.109a36.044 36.044 0 0 0-25.531-10.65 35.908 35.908 0 0 0-25.532 10.65L123.047 936.6l-61.302-61.712a36.044 36.044 0 0 0-25.531-10.65 36.18 36.18 0 0 0-25.531 61.85l87.106 87.379a35.771 35.771 0 0 0 50.926 0L301.22 860.553a36.317 36.317 0 0 0 0-50.926z" fill="currentColor" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-npm"><path d="M128 128v768h768V128H128m128 128h512v512H640V384H512v384H256V256z" fill="#D14748" /></symbol><symbol viewBox="0 0 1024 1024" id="icon-pin"><path fill="currentColor" d="M128 256h768v64H128zM512 384 256 640l45.248 45.248L480 506.496V896h64V506.496l178.752 178.752L768 640z" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-remote-repo"><path d="M458.64 119.072a84.176 84.176 0 0 1 106.72 0l366.912 300.4a32 32 0 0 1-40.544 49.52l-366.912-300.4a20.176 20.176 0 0 0-25.632 0l-366.912 300.4a32 32 0 1 1-40.544-49.52l366.912-300.4zM304.32 415.184c0-27.2 22-49.568 49.472-49.568h96.048a49.504 49.504 0 0 1 49.456 49.568v96.544c0 27.2-21.984 49.552-49.456 49.552h-96.08a49.504 49.504 0 0 1-49.472-49.552V415.2zm64 14.432v67.68h66.976v-67.68H368.32zm-162.976 36.96a32 32 0 0 1 32 32v307.2c0 21.28 17.12 38.224 37.856 38.224h471.52a38.032 38.032 0 0 0 37.84-38.224v-307.2a32 32 0 1 1 64 0v307.2C848.56 862.08 803.12 908 746.704 908H275.2c-56.4 0-101.856-45.92-101.856-102.224v-307.2a32 32 0 0 1 32-32zm98.976 168.048c0-27.216 22-49.568 49.472-49.568h96.048a49.504 49.504 0 0 1 49.456 49.568v96.544c0 27.2-21.984 49.552-49.456 49.552h-96.08a49.504 49.504 0 0 1-49.472-49.552v-96.544zm64 14.432v67.68h66.976v-67.68H368.32zm154.288-14.432c0-27.216 21.984-49.568 49.472-49.568h96.048a49.504 49.504 0 0 1 49.456 49.568v96.544c0 27.2-21.984 49.552-49.456 49.552H572.08a49.504 49.504 0 0 1-49.472-49.552v-96.544zm64 14.432v67.68h66.976v-67.68h-66.976z" fill="currentColor" class="custom-cursor-on-hover" /></symbol><symbol class="icon" viewBox="140 110 780 780" id="icon-start-run-command"><path fill="currentColor" d="M700.568 151.704c48.014 0 86.926 38.684 86.926 86.395v294.95c0 1.574-.152 3.129-.455 4.608 51.219 32.104 85.257 88.822 85.257 153.43 0 100.086-81.635 181.21-182.329 181.21-2.616 0-5.233-.058-7.831-.171l-.38.057-2.389.113H276.556c-48.014 0-86.926-38.684-86.926-86.395V238.099c0-47.71 38.912-86.395 86.926-86.395zm0 46.345H276.556a40.164 40.164 0 0 0-40.277 40.05v547.802c0 22.11 18.014 40.05 40.277 40.05h291.631a180.262 180.262 0 0 1-60.548-134.865c0-100.067 81.635-181.19 182.328-181.19 17.655 0 34.74 2.483 50.878 7.148V238.1a40.164 40.164 0 0 0-40.277-40.05zm-10.6 358.21c-74.942 0-135.68 60.36-135.68 134.827 0 74.487 60.738 134.865 135.68 134.865 74.941 0 135.68-60.378 135.68-134.865 0-74.467-60.739-134.826-135.68-134.826zm-10.563 63.394c7.832 0 15.53 2.086 22.3 6.068l63.526 37.281a44.677 44.677 0 0 1 17.56 57.818l-1.63 3.072-2.068 3.224a44.354 44.354 0 0 1-13.862 12.8l-63.526 37.3a44.089 44.089 0 0 1-60.53-16.024 44.734 44.734 0 0 1-6.01-22.433v-74.581a44.373 44.373 0 0 1 44.24-44.525zm2.105 48.204v67.204l57.25-33.602-57.25-33.602zM509.762 446.692c12.895 0 23.325 10.372 23.325 23.172s-10.43 23.173-23.325 23.173H340.158c-12.895 0-23.325-10.373-23.325-23.173 0-12.8 10.43-23.172 23.325-23.172zm127.204-126.427c12.895 0 23.324 10.373 23.324 23.173 0 12.8-10.43 23.173-23.324 23.173H340.158c-12.895 0-23.325-10.373-23.325-23.173 0-12.8 10.43-23.173 23.325-23.173z" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-vscode"><path d="m746.223 102.24-359.8 330.82-201.076-151.562-83.1 48.367 198.205 182.132-198.206 182.132 83.101 48.51L386.423 591.08l359.8 330.677 175.527-85.251V187.494zm0 217.58v384.34l-255.04-192.177z" fill="#2196F3" /></symbol><symbol class="icon" viewBox="0 0 1024 1024" id="icon-workflow"><path fill="currentColor" d="M352 128a96 96 0 0 1 0 192H224a96 96 0 0 1 0-192h128zm0 64H224a32 32 0 0 0 0 64h128a32 32 0 0 0 0-64zm448 512a96 96 0 0 1 0 192H672a96 96 0 0 1 0-192h128zm0 64H672a32 32 0 1 0 0 64h128a32 32 0 1 0 0-64z" /><path fill="currentColor" d="M699.584 192a164.416 164.416 0 1 1 0 328.768H340.48a116.416 116.416 0 1 0 0 232.832H512a32 32 0 1 1 0 64H340.416a180.416 180.416 0 0 1 0-360.832h359.168a100.416 100.416 0 0 0 0-200.768H512a32 32 0 0 1 0-64h187.584z" /><path fill="currentColor" d="M448 753.792v74.624a32 32 0 0 0 52.288 24.704l45.504-37.248a32 32 0 0 0 0-49.536l-45.504-37.312A32 32 0 0 0 448 753.792z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-android"><rect width="4" height="10" x="2" y="12" fill="#8bc34a" rx="2" /><rect width="4" height="10" x="26" y="12" fill="#8bc34a" rx="2" /><path fill="#8bc34a" d="M8 12h16v12H8zm2 12h4v4a2 2 0 0 1-2 2 2 2 0 0 1-2-2zm8 0h4v4a2 2 0 0 1-2 2 2 2 0 0 1-2-2zm3.545-19.759 2.12-2.12A1 1 0 0 0 22.251.707l-2.326 2.326a7.97 7.97 0 0 0-7.85 0L9.75.707a1 1 0 1 0-1.414 1.414l2.12 2.12A7.97 7.97 0 0 0 8 10h16a7.97 7.97 0 0 0-2.455-5.759M14 8h-2V6h2Zm6 0h-2V6h2Z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-angular"><path fill="#e53935" d="M9.87 2.5 3.022 5.666l.645 10.178zm4.26 0 6.202 13.344.645-10.178zM12 7.563l-2.451 5.964h4.906zm-3.73 8.959-.954 2.308L12 21.5l4.683-2.67-.953-2.308z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-audio"><path fill="#ef5350" d="M16 2a14 14 0 1 0 14 14A14 14 0 0 0 16 2m6 10h-4v8a4 4 0 1 1-4-4 3.96 3.96 0 0 1 2 .555V8h6Z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-bun"><path fill="#fff8e1" d="M30 17.045a9.8 9.8 0 0 0-.32-2.306l-.004.034a11.2 11.2 0 0 0-5.762-6.786c-3.495-1.89-5.243-3.326-6.8-3.811h.003c-1.95-.695-3.949.82-5.825 1.927-4.52 2.481-9.573 5.45-9.28 11.417.008-.029.017-.052.026-.08a9.97 9.97 0 0 0 3.934 7.257l-.01-.006C13.747 31.473 30.05 27.292 30 17.045" /><path fill="#37474f" d="M19.855 20.236A.8.8 0 0 0 19.26 20h-6.514a.8.8 0 0 0-.596.236.51.51 0 0 0-.137.463 4.37 4.37 0 0 0 1.641 2.339 4.2 4.2 0 0 0 2.349.926 4.2 4.2 0 0 0 2.343-.926 4.37 4.37 0 0 0 1.642-2.339.5.5 0 0 0-.132-.463Z" /><ellipse cx="22.5" cy="18.5" fill="#f8bbd0" rx="2.5" ry="1.5" /><ellipse cx="9.5" cy="18.5" fill="#f8bbd0" rx="2.5" ry="1.5" /><circle cx="10" cy="16" r="2" fill="#37474f" /><circle cx="22" cy="16" r="2" fill="#37474f" /><path fill="#455a64" d="M9.996 18A2 2 0 1 0 8 15.996V16a2 2 0 0 0 1.996 2" /><circle cx="9" cy="15" r="1" fill="#fafafa" /><circle cx="21" cy="15" r="1" fill="#fafafa" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-c"><path fill="#0288d1" d="M19.563 22A5.57 5.57 0 0 1 14 16.437v-2.873A5.57 5.57 0 0 1 19.563 8H24V2h-4.437A11.563 11.563 0 0 0 8 13.563v2.873A11.564 11.564 0 0 0 19.563 28H24v-6Z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-certificate"><path fill="#ff5722" d="M2 2a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h6v3l2-1.25L12 14v-3h2a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1Zm0 1h4v1H2Zm6 0 2 1.25L12 3v2.5l2 1-2 1V10l-2-1.25L8 10V7.5l-2-1 2-1zM2 5h3v1H2Zm0 2h3v1H2Zm0 2h4v1H2Z" /></symbol><symbol fill="none" viewBox="0 0 24 24" id="icon-mit-changelog"><path d="M0 0h24v24H0z" /><path fill="#8bc34a" d="M13 3a9 9 0 0 0-9 9H1l4 4 4-4H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42A8.95 8.95 0 0 0 13 21a9 9 0 0 0 0-18m-1 5v5l4.25 2.52.77-1.28-3.52-2.09V8z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-cmake"><path fill="#1e88e5" d="M11.94 2.984 2.928 21.017l9.875-8.47z" /><path fill="#e53935" d="m11.958 2.982.002.29 1.312 14.499-.002.006.023.26 7.363 2.978h.415l-.158-.31-.114-.228h-.001l-8.84-17.494z" /><path fill="#7cb342" d="m8.558 16.13-5.627 4.884h17.743v-.016z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-console"><path fill="#ff7043" d="M2 2a1 1 0 0 0-1 1v10c0 .554.446 1 1 1h12c.554 0 1-.446 1-1V3a1 1 0 0 0-1-1zm0 3h12v8H2zm1 2 2 2-2 2 1 1 3-3-3-3zm5 3.5V12h5v-1.5z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-cpp"><path fill="#0288d1" d="M28 14v-4h-2v4h-6v-4h-2v4h-4v2h4v4h2v-4h6v4h2v-4h4v-2z" /><path fill="#0288d1" d="M13.563 22A5.57 5.57 0 0 1 8 16.437v-2.873A5.57 5.57 0 0 1 13.563 8H18V2h-4.437A11.563 11.563 0 0 0 2 13.563v2.873A11.564 11.564 0 0 0 13.563 28H18v-6Z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-csharp"><path fill="#0288d1" d="M30 14v-2h-2V8h-2v4h-2V8h-2v4h-2v2h2v2h-2v2h2v4h2v-4h2v4h2v-4h2v-2h-2v-2Zm-4 2h-2v-2h2Zm-12.437 6A5.57 5.57 0 0 1 8 16.437v-2.873A5.57 5.57 0 0 1 13.563 8H18V2h-4.437A11.563 11.563 0 0 0 2 13.563v2.873A11.564 11.564 0 0 0 13.563 28H18v-6Z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-css"><path fill="#7e57c2" d="M20 18h-2v-2h-2v2c0 .193 0 .703 1.254 1.033A3.345 3.345 0 0 1 20 22h2v2h2v-2c0-.388-.562-.851-1.254-1.034C20.356 20.34 20 18.84 20 18m-3.254 2.966C14.356 20.34 14 18.84 14 18h-2v-2h-2v8h2v-2h4v2h2v-2c0-.388-.562-.851-1.254-1.034" /><path fill="#7e57c2" d="M24 4H4v20a4 4 0 0 0 4 4h16.16A3.84 3.84 0 0 0 28 24.16V8a4 4 0 0 0-4-4m2 14h-2v-2h-2v2c0 .193 0 .703 1.254 1.033A3.345 3.345 0 0 1 26 22v2a2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2 2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2 2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2 2 2 0 0 1 2-2h2a2 2 0 0 1 2 2 2 2 0 0 1 2-2h2a2 2 0 0 1 2 2Z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-dart"><path fill="#4fc3f7" d="M16.83 2a1.3 1.3 0 0 0-.916.377l-.013.01L7.323 7.34l8.556 8.55v.005l10.283 10.277 1.96-3.529-7.068-16.96-3.299-3.297A1.3 1.3 0 0 0 16.828 2Z" /><path fill="#01579b" d="m7.343 7.32-4.955 8.565-.01.013a1.297 1.297 0 0 0 .004 1.835l.005.005 4.106 4.107 16.064 6.314 3.632-2.015-.098-.098-.025.002L15.995 15.97h-.012z" /><path fill="#01579b" d="m7.321 7.324 8.753 8.755h.013L26.16 26.156l3.835-.73L30 14.089l-4.049-3.965a6.5 6.5 0 0 0-3.618-1.612l.002-.043L7.323 7.325Z" /><path fill="#64b5f6" d="m7.332 7.335 8.758 8.75v.013l10.079 10.071L25.436 30H14.09l-3.967-4.048a6.5 6.5 0 0 1-1.611-3.618l-.045.004Z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-docker"><path fill="#0288d1" d="M21.81 10.25c-.06-.04-.56-.43-1.64-.43-.28 0-.56.03-.84.08-.21-1.4-1.38-2.11-1.43-2.14l-.29-.17-.18.27c-.24.36-.43.77-.51 1.19-.2.8-.08 1.56.33 2.21-.49.28-1.29.35-1.46.35H2.62c-.34 0-.62.28-.62.63 0 1.15.18 2.3.58 3.38.45 1.19 1.13 2.07 2 2.61.98.6 2.59.94 4.42.94.79 0 1.61-.07 2.42-.22 1.12-.2 2.2-.59 3.19-1.16A8.3 8.3 0 0 0 16.78 16c1.05-1.17 1.67-2.5 2.12-3.65h.19c1.14 0 1.85-.46 2.24-.85.26-.24.45-.53.59-.87l.08-.24zm-17.96.99h1.76c.08 0 .16-.07.16-.16V9.5c0-.08-.07-.16-.16-.16H3.85c-.09 0-.16.07-.16.16v1.58c.01.09.07.16.16.16m2.43 0h1.76c.08 0 .16-.07.16-.16V9.5c0-.08-.07-.16-.16-.16H6.28c-.09 0-.16.07-.16.16v1.58c.01.09.07.16.16.16m2.47 0h1.75c.1 0 .17-.07.17-.16V9.5c0-.08-.06-.16-.17-.16H8.75c-.08 0-.15.07-.15.16v1.58c0 .09.06.16.15.16m2.44 0h1.77c.08 0 .15-.07.15-.16V9.5c0-.08-.06-.16-.15-.16h-1.77c-.08 0-.15.07-.15.16v1.58c0 .09.07.16.15.16M6.28 9h1.76c.08 0 .16-.09.16-.18V7.25c0-.09-.07-.16-.16-.16H6.28c-.09 0-.16.06-.16.16v1.57c.01.09.07.18.16.18m2.47 0h1.75c.1 0 .17-.09.17-.18V7.25c0-.09-.06-.16-.17-.16H8.75c-.08 0-.15.06-.15.16v1.57c0 .09.06.18.15.18m2.44 0h1.77c.08 0 .15-.09.15-.18V7.25c0-.09-.07-.16-.15-.16h-1.77c-.08 0-.15.06-.15.16v1.57c0 .09.07.18.15.18m0-2.28h1.77c.08 0 .15-.07.15-.16V5c0-.1-.07-.17-.15-.17h-1.77c-.08 0-.15.06-.15.17v1.56c0 .08.07.16.15.16m2.46 4.52h1.76c.09 0 .16-.07.16-.16V9.5c0-.08-.07-.16-.16-.16h-1.76c-.08 0-.15.07-.15.16v1.58c0 .09.07.16.15.16" /></symbol><symbol fill="none" viewBox="0 0 24 24" id="icon-mit-document"><path d="M0 0h24v24H0z" /><path fill="#42a5f5" d="M8 16h8v2H8zm0-4h8v2H8zm6-10H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm4 18H6V4h7v5h5z" /></symbol><symbol viewBox="0 0 3473 3473" id="icon-mit-editorconfig"><path fill="#ede7f6" d="M989.342 1977.409c41.146-26.835 75.137-93.922 54.564-141.33-56.353 24.151-53.67 79.61-54.564 141.33m636.877 153.851c44.724-14.311 87.66-64.402 63.509-116.283-34.886 24.151-57.248 57.247-63.51 116.284z" /><g fill="#fafafa"><path d="M374.827 2871.899c0 56.352 14.312 117.178 53.67 138.645 144.907 81.4 652.977 17.89 825.614-20.573 90.343-20.573 163.692-87.66 248.668-124.334 191.421-83.187 330.067-150.274 483.025-262.085 110.916-81.399 287.131-310.388 305.915-447.245l-151.169-33.991c-3.578 153.852-38.463 188.737-175.32 224.517-92.132 25.046-271.925 30.413-365.846 14.312-124.334-20.574-180.687-85.871-237.04-160.114-109.128-144.907 24.151-245.985-148.485-255.824-181.582 222.728-501.81 62.614-642.244 40.252-59.93 86.765-200.366 650.294-198.577 779.1 86.766-29.517 141.33 2.684 219.15 33.097 275.503 106.444 34.885 200.366-75.137 172.636-75.137-17.89-98.394-67.086-142.224-98.393m360.48-1285.383c111.81 21.468 211.1 67.982 305.915 115.39 154.747 76.926 182.476 66.192 196.788 173.53 1.789 19.68-1.789 30.413 54.564 48.303 94.816 29.518-54.564-23.257 199.471-22.362 151.169.894 497.337 61.72 609.148 132.384 46.513 29.519 37.568 67.087 194.999 62.615-1.79-185.16-50.986-461.557-123.44-631.51-88.554-205.733-205.733-237.04-444.561-313.966-139.54-44.725-549.217-93.922-676.235-15.207-118.967 74.243-141.33 162.798-252.246 318.439-32.202 45.619-43.83 80.504-64.403 132.384" /><path d="M1720.14 1966.675c89.45 36.674-4.472 273.714-128.806 216.466-40.252-113.6 55.458-178.003 81.398-228.99-53.67-8.05-206.627-32.2-252.246-15.206-59.036 22.363-72.454 148.486-42.041 207.522 143.118 280.87 775.523 220.94 708.436 2.684-26.835-88.555-51.88-102.867-142.224-133.28-72.454-24.15-144.907-49.196-224.517-49.196m-1124.374-31.307c71.56 68.875 233.462 79.61 338.117 84.976 13.418-138.646 25.046-242.407 135.963-234.356 54.564 74.242 25.94 161.902-31.307 218.255 97.5-.894 153.852-74.242 139.54-180.687-82.293-59.036-331.856-177.109-457.084-194.104-34.885 37.569-120.756 243.301-125.229 305.916" /></g><path d="M427.602 2820.913c59.036-5.367 212.889 39.357 225.412 89.449-95.71 11.628-217.361 2.683-225.412-89.45zm-52.775 50.986c43.83 31.307 67.087 80.504 142.224 98.393 110.022 27.73 350.64-66.192 75.137-172.636-77.82-30.413-132.384-62.614-219.15-33.096-1.789-128.807 138.646-692.336 198.577-779.101 140.435 22.362 460.662 182.476 642.244-40.252 172.636 9.84 39.357 110.917 148.485 255.824 56.353 74.243 112.706 139.54 237.04 160.114 93.921 16.1 273.714 10.734 365.846-14.312 136.857-35.78 171.742-70.665 175.32-224.517l151.17 33.99c-18.785 136.858-195 365.847-305.916 447.246-152.958 111.81-291.604 178.898-483.025 262.085-84.976 36.674-158.325 103.761-248.668 124.334-172.637 38.463-680.707 101.972-825.614 20.574-39.358-21.468-53.67-82.294-53.67-138.646M1626.22 2131.26c6.261-59.037 28.623-92.133 63.508-116.284 24.152 51.88-18.784 101.972-63.508 116.284m93.921-164.586c79.61 0 152.063 25.045 224.517 49.197 90.344 30.412 115.39 44.724 142.224 133.279 67.087 218.255-565.318 278.186-708.436-2.684-30.413-59.036-16.995-185.16 42.041-207.522 45.619-16.995 198.577 7.156 252.246 15.207-25.94 50.986-121.65 115.389-81.398 228.99 124.334 57.247 218.255-179.793 128.806-216.467m-730.798 10.734c.894-61.72-1.79-117.179 54.564-141.33 20.573 47.408-13.418 114.495-54.564 141.33m-393.576-42.041c4.473-62.615 90.344-268.347 125.229-305.916 125.228 16.995 374.791 135.068 457.084 194.104 14.312 106.445-42.04 179.793-139.54 180.687 57.247-56.353 85.87-144.013 31.307-218.255-110.917-8.05-122.545 95.71-135.963 234.356-104.655-5.367-266.558-16.1-338.117-84.976m-89.449-71.56c-33.096-91.238-33.096-233.462 107.339-245.09l-71.56 199.471c-18.783 42.936-18.783 33.096-35.779 45.62zm228.99-277.292c20.573-51.88 32.201-86.765 64.403-132.384 110.917-155.641 133.279-244.196 252.246-318.439 127.018-78.715 536.694-29.518 676.235 15.207 238.828 76.926 356.007 108.233 444.561 313.966 72.454 169.953 121.65 446.35 123.44 631.51-157.43 4.472-148.486-33.096-195-62.615-111.81-70.664-457.978-131.49-609.147-132.384-254.035-.895-104.655 51.88-199.471 22.362-56.353-17.89-52.775-28.624-54.564-48.302-14.312-107.34-42.041-96.605-196.788-173.531-94.816-47.408-194.104-93.922-305.915-115.39m1583.247-43.83c-16.995-56.352 14.312-52.775 68.876-91.238 31.307-22.362 56.353-45.619 94.816-67.086 144.013-80.504 412.36-93.922 526.854 1.789 46.514 38.463 122.545 113.6 110.917 211.994-24.151 195.893-158.325 303.232-268.347 392.68-111.811 91.239-297.865 185.16-490.18 122.546-16.101-39.358-3.578-288.92-22.363-381.053-16.995-82.293-8.05-91.238 39.358-140.435 139.54-144.907 441.878-250.457 613.62-126.123 72.454 53.67 51.88 74.243 89.449 115.39 46.513-50.092-40.252-218.256-360.48-207.522-217.36 7.156-311.282 177.109-402.52 169.058m-1302.377-508.964c4.472-124.335 118.967-381.948 233.461-471.397 138.646-107.338 283.554-208.416 496.442-87.66 52.775 29.519 50.092 44.725 55.459 118.073 4.472 70.665-1.79 96.605-19.679 153.852-141.33 456.19-259.402 194.105-712.014 302.338 16.995-148.485 145.802-280.87 217.361-349.746 122.545-118.967 211.1-195.893 395.365-170.847 50.986 84.976 56.352 138.646-5.367 237.934-82.293 132.385-102.867 124.334-90.344 214.678 64.403-16.101 84.082-78.715 113.6-141.33 179.793-375.686-81.398-421.305-241.512-352.429-107.339 45.62-298.76 256.719-361.374 383.736-12.523 25.046-25.94 57.248-37.568 84.977zm708.436 18.784c18.784-111.811 129.7-139.54 129.7-483.92 0-148.485-182.475-281.764-421.304-182.475-204.838 84.082-236.145 148.485-345.273 313.071-102.867 155.642-99.289 326.49-187.843 470.502-25.94 41.147-49.197 55.458-77.82 96.605-20.574 30.413-35.78 68.876-56.354 104.655-42.04 68.876-84.976 118.968-118.967 201.26-107.339 2.684-197.682 4.473-208.416 115.39-14.312 152.063 57.247 189.632 57.247 246.879-.894 61.72-251.351 684.285-181.581 1055.498 19.679 101.972 86.765 102.867 194.104 115.39 258.508 31.307 593.942 20.573 825.614-72.454l420.41-201.26c106.445-59.931 285.343-173.532 364.953-256.72 56.353-58.141 85.87-107.338 134.173-176.214 66.192-96.605 67.981-94.816 82.293-226.306 87.66 16.101 251.352 54.564 305.916 101.972-6.262 61.72-36.674 32.202-36.674 87.66 34.885.895 93.027-42.935 107.339-91.238-36.675-53.67-75.138-44.724-127.913-87.66 42.042-33.096 118.073-48.302 176.215-72.453 125.229-51.88 339.012-209.311 391.787-352.43 42.04-115.389 10.734-307.704-57.248-382.841-71.559-78.715-237.934-118.967-373.897-118.967-161.902 0-329.172 116.283-459.767 166.375-50.092-43.83-53.67-93.922-90.344-142.224-42.04-57.248-315.755-200.366-446.35-228.095" /><path fill="#efebe9" d="M2318.554 1542.686c91.238 8.05 185.16-161.902 402.52-169.058 320.228-10.734 406.993 157.43 360.48 207.521-37.569-41.146-16.995-61.72-89.45-115.389-171.741-124.334-474.079-18.784-613.62 126.123-47.407 49.197-56.352 58.142-39.357 140.435 18.785 92.133 6.262 341.695 22.362 381.053 192.316 62.614 378.37-31.307 490.181-122.545 110.022-89.45 244.196-196.788 268.347-392.681 11.628-98.394-64.403-173.531-110.917-211.994-114.494-95.71-382.841-82.293-526.854-1.79-38.463 21.468-63.51 44.725-94.816 67.087-54.564 38.464-85.871 34.886-68.876 91.238m-1302.377-508.964 43.83-77.821c11.628-27.73 25.045-59.93 37.568-84.977 62.614-127.017 254.035-338.117 361.374-383.736 160.114-68.876 421.305-23.257 241.512 352.43-29.518 62.614-49.197 125.228-113.6 141.329-12.523-90.344 8.05-82.293 90.344-214.678 61.72-99.288 56.353-152.958 5.367-237.934-184.265-25.046-272.82 51.88-395.365 170.847-71.56 68.876-200.366 201.26-217.361 349.746 452.612-108.233 570.685 153.852 712.014-302.338 17.89-57.247 24.151-83.187 19.679-153.852-5.367-73.348-2.684-88.554-55.459-118.073-212.888-120.756-357.796-19.678-496.442 87.66-114.494 89.45-228.989 347.062-233.461 471.397" /><path fill="#eee" d="M506.317 1863.808c16.996-12.523 16.996-2.683 35.78-45.619l71.559-199.47c-140.435 11.627-140.435 153.851-107.339 245.09z" /><path fill="#efebe9" d="M653.014 2910.362c-12.523-50.092-166.376-94.816-225.412-89.45 8.05 92.133 129.701 101.078 225.412 89.45" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-eslint"><path fill="#3f51b5" d="M22.713 4H9.287a.5.5 0 0 0-.432.248l-6.708 11.5a.5.5 0 0 0 0 .504l6.708 11.5a.5.5 0 0 0 .432.248h13.426a.5.5 0 0 0 .432-.248l6.708-11.5a.5.5 0 0 0 0-.504l-6.708-11.5A.5.5 0 0 0 22.713 4m-6.937 20.888-7.5-3.75A.5.5 0 0 1 8 20.691v-9.382a.5.5 0 0 1 .276-.447l7.5-3.75a.5.5 0 0 1 .448 0l7.5 3.75a.5.5 0 0 1 .276.447v9.382a.5.5 0 0 1-.276.447l-7.5 3.75a.5.5 0 0 1-.448 0" /><path fill="#7986cb" d="M22 19.441v-6.882a.5.5 0 0 0-.276-.447l-5.5-2.75a.5.5 0 0 0-.448 0l-5.5 2.75a.5.5 0 0 0-.276.447v6.882a.5.5 0 0 0 .276.447l5.5 2.75a.5.5 0 0 0 .448 0l5.5-2.75a.5.5 0 0 0 .276-.447" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-file"><path d="M8.668 6h3.664L8.668 2.332V6M4 1.332h5.332l4 4v8c0 .738-.594 1.336-1.332 1.336H4a1.332 1.332 0 0 1-1.332-1.336V2.668A1.33 1.33 0 0 1 4 1.332m3.332 1.336H4v10.664h8v-6H7.332z" fill="#90a4ae" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-firebase"><path fill="#ff9100" d="M18.217 8.974c-.45-.623-1.482-1.904-3.07-3.808-.689-.825-1.28-1.526-1.57-1.87l-.408-.48-.173-.205-.094-.11-.018-.027-.008-.004-.4-.47-.509.407a11.1 11.1 0 0 0-3.069 3.866 9.5 9.5 0 0 0-.87 2.647q-.06.303-.1.615a9 9 0 0 0-.577-.03 6.2 6.2 0 0 0-1.901.229l-.265.074-.136.238a8 8 0 0 0-1.044 3.68 8 8 0 0 0 5.006 7.697l.197.079.06.02h.002a8 8 0 0 0 2.452.473q.143.005.286.005a7.9 7.9 0 0 0 3.076-.618l.007.003.261-.12a7.99 7.99 0 0 0 4.643-6.981 8.5 8.5 0 0 0-1.778-5.31M9.837 19.82l-.192-.074-.051-.02a6.31 6.31 0 0 1-3.897-6.048 6.2 6.2 0 0 1 .697-2.667 4.6 4.6 0 0 1 .759-.103l.065-.002a8 8 0 0 1 .378 0c.108.005.215.021.322.034a13 13 0 0 0 .918 4.007 10.1 10.1 0 0 0 2.474 3.61 6.4 6.4 0 0 1-1.473 1.263m.351-5.486a11.4 11.4 0 0 1-.767-3.125 4.6 4.6 0 0 1 .95.461 4.73 4.73 0 0 1 1.94 2.884 5 5 0 0 1 .12.649 4.2 4.2 0 0 1-.288 2.023 8.3 8.3 0 0 1-1.955-2.892m1.741 5.858a8 8 0 0 0 .553-.62c.233.177.485.332.73.495a6.3 6.3 0 0 1-1.283.125m5.432-2.97a6.34 6.34 0 0 1-2.212 2.138 12.4 12.4 0 0 1-1.851-1.15 5.84 5.84 0 0 0 .309-3.998 6.02 6.02 0 0 0-2.504-3.664 6.1 6.1 0 0 0-1.679-.74 8 8 0 0 1 .064-.496 9 9 0 0 1 .465-1.598q.117-.298.253-.584l.004-.007c.14-.282.296-.567.481-.872l.073-.12h-.002a9.2 9.2 0 0 1 1.534-1.824l.227.269c.53.628 1.03 1.222 1.483 1.765 1.02 1.223 2.342 2.828 2.852 3.536a6.8 6.8 0 0 1 1.446 4.242 6.3 6.3 0 0 1-.943 3.104" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-claude"><path fill="#ff7043" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#ffccbc" d="m8.834 5-.201.045-.309.393.137.603 1.506 2.717-.383-.293L7.48 6.92h-.1l-.35-.05-.3.349.1.398.15.2L9.885 9.86l.043.043-1.145-.091-2.556-.15L6 9.74v.22l.227.25.2.052 3.454.177-2 1.268-.852.6v.273l.2.229h.501l2.686-1.83-2.184 2.875-.05.248.3.15.2-.05.703-.798 1.53-2.008-.58 3.106.151.299.252.199.301-.1.149-.199.253-3.017 1.702 2.521.351.047.201-.1.05-.15v-.398l-1.179-1.721-.027-.184 1.256 1.106.851.6.15.048.151-.2-.049-.25-2.306-2.144-.03-.052.08.004 2.807.697.551-.233v-.216l-.201-.3-.301-.198-1.252-.1-1.451-.133 3.055-.715.1-.35v-.15l-.35-.199-2.723.436 1.822-2.48.051-.245-.123-.383-.13-.16-.491-.102-.483.39-1.671 2.183.49-2.932-.25-.348-.252-.1-.3.2-.2.398-.34 2.99-.13-.376L9.431 5.21l-.198-.152Z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-client"><path fill="#039be5" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#b3e5fc" d="m15 6-7.5.004a.5.5 0 0 0-.5.5V12H5v2h6v-2H8V7.004h7zm-2.5 2a.5.5 0 0 0-.5.5v5a.5.5 0 0 0 .5.5h3a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5zm.5 1h2v3h-2z" /></symbol><symbol fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 16 16" id="icon-mit-folder-cloud-functions"><defs><path id="icon-mit-folder-cloud-functions_a" fill="#bbdefb" d="m13 7 1-1 2 2-1 1z" /></defs><path fill="#2196f3" fill-rule="nonzero" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#bbdefb" d="M10.991 8.994h1.019v.998h-1.02zm-1.491.01h1.018v.999H9.499zm2.998 0h.999v.999h-.999zM14.5 7H16v5h-1.5z" /><use xlink:href="#icon-mit-folder-cloud-functions_a" transform="translate(0 -1)" /><use xlink:href="#icon-mit-folder-cloud-functions_a" transform="matrix(1 0 0 -1 0 20)" /><path fill="#bbdefb" d="M7 7h1.5v5H7z" /><use xlink:href="#icon-mit-folder-cloud-functions_a" transform="matrix(-1 0 0 1 23 -1)" /><use xlink:href="#icon-mit-folder-cloud-functions_a" transform="rotate(180 11.5 10)" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-components"><path fill="#c0ca33" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#f0f4c3" d="M6 10h4v4H6zm5 0h4v4h-4zM6 5h4v4H6zm4.172 2L13 4.172 15.829 7 13 9.829z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-config"><path fill="#00acc1" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#80deea" d="M11.5 12.075A1.6 1.6 0 0 1 9.882 10.5a1.62 1.62 0 1 1 1.62 1.575m3.437-1.138a4 4 0 0 0 .032-.438 4 4 0 0 0-.032-.45l.976-.733a.223.223 0 0 0 .056-.288l-.926-1.556a.23.23 0 0 0-.283-.1l-1.15.45a3.4 3.4 0 0 0-.783-.44l-.171-1.193A.23.23 0 0 0 12.425 6h-1.85a.23.23 0 0 0-.231.189l-.171 1.193a3.4 3.4 0 0 0-.781.44l-1.152-.45a.23.23 0 0 0-.282.1l-.926 1.556a.22.22 0 0 0 .056.288l.975.734a4 4 0 0 0-.032.45 4 4 0 0 0 .032.437l-.975.746a.22.22 0 0 0-.056.288l.925 1.558a.235.235 0 0 0 .283.099l1.152-.455a3.2 3.2 0 0 0 .781.446l.171 1.192a.23.23 0 0 0 .232.189h1.85a.23.23 0 0 0 .232-.189l.17-1.192a3.4 3.4 0 0 0 .783-.446l1.15.455a.24.24 0 0 0 .284-.1l.924-1.557a.223.223 0 0 0-.055-.288Z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-controller"><path fill="#ffc107" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#fff9c4" d="M11.5 12.075A1.6 1.6 0 0 1 9.88 10.5a1.62 1.62 0 1 1 1.62 1.575m3.438-1.138a4 4 0 0 0 .032-.437 4 4 0 0 0-.032-.45l.976-.734a.223.223 0 0 0 .056-.288l-.927-1.556a.23.23 0 0 0-.282-.1l-1.15.45a3.4 3.4 0 0 0-.783-.44l-.171-1.193A.23.23 0 0 0 12.425 6h-1.85a.23.23 0 0 0-.232.189l-.17 1.193a3.4 3.4 0 0 0-.782.44l-1.152-.45a.23.23 0 0 0-.282.1l-.925 1.556a.22.22 0 0 0 .056.288l.975.734a4 4 0 0 0-.032.45 4 4 0 0 0 .032.437l-.975.746a.22.22 0 0 0-.056.288l.925 1.558a.235.235 0 0 0 .282.099l1.152-.455a3.2 3.2 0 0 0 .782.446l.17 1.192a.23.23 0 0 0 .232.189h1.85a.23.23 0 0 0 .232-.189l.17-1.192a3.4 3.4 0 0 0 .783-.446l1.151.455a.24.24 0 0 0 .283-.1l.926-1.557a.223.223 0 0 0-.056-.288z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-css"><defs><path id="icon-mit-folder-css_a" fill="#d1c4e9" d="M7 10V9H6v4h1v-1h1v1a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1Zm5 0V9a1 1 0 0 0-1-1h-1a1 1 0 0 0-1 1v1c0 .42.179 1.17 1.373 1.483.346.092.627.323.627.517v1h-1v-1H9v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1a1.67 1.67 0 0 0-1.373-1.483C10 10.352 10 10.097 10 10V9h1v1Zm4 0V9a1 1 0 0 0-1-1h-1a1 1 0 0 0-1 1v1c0 .42.179 1.17 1.373 1.483.346.092.627.323.627.517v1h-1v-1h-1v1a1 1 0 0 0 1 1h1a1 1 0 0 0 1-1v-1a1.67 1.67 0 0 0-1.373-1.483C14 10.352 14 10.097 14 10V9h1v1Z" /></defs><path fill="#7e57c2" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><use xlink:href="#icon-mit-folder-css_a" /><use xlink:href="#icon-mit-folder-css_a" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-cypress"><path fill="#009688" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#b2dfdb" d="M11.5 5A4.497 4.497 0 0 0 7 9.495V9.5a4.497 4.497 0 0 0 4.494 4.5h.006A4.497 4.497 0 0 0 16 9.506V9.5A4.51 4.51 0 0 0 11.5 5m-2.111 5.466a.7.7 0 0 0 .62.278 1 1 0 0 0 .378-.066 3 3 0 0 0 .409-.213l.458.655a1.95 1.95 0 0 1-1.293.458 2 2 0 0 1-1.014-.245 1.65 1.65 0 0 1-.655-.72 2.5 2.5 0 0 1-.228-1.097 2.6 2.6 0 0 1 .228-1.096 1.73 1.73 0 0 1 .656-.752 1.8 1.8 0 0 1 .998-.262 1.9 1.9 0 0 1 .703.115 2.1 2.1 0 0 1 .605.36l-.457.621a1.8 1.8 0 0 0-.377-.213 1 1 0 0 0-.393-.066c-.556 0-.834.426-.834 1.293a1.6 1.6 0 0 0 .196.949Zm4.5 1.015a2.35 2.35 0 0 1-.753 1.161 2.45 2.45 0 0 1-1.375.475l-.114-.769a1.9 1.9 0 0 0 .835-.263 2 2 0 0 0 .196-.195L11.32 7.537h1.128l.786 3.256.835-3.256h1.097z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-dist"><path fill="#e57373" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#ffcdd2" d="M15 7h-2V6l-1-1h-2L9 6v1H7a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1m-5 0V6h2v1z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-docs"><path fill="#0277bd" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#b3e5fc" d="M12 5H8.5a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h6a.5.5 0 0 0 .5-.5V8Zm0 8H9v-1h3zm2-2H9v-1h5zm-2.414-2.586V6L14 8.414Z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-git"><path fill="#ff7043" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#ffccbc" d="m6.297 9.295 2.892-2.897.846.85a.99.99 0 0 0 .465 1.116v2.772a1 1 0 0 0-.5.865 1.001 1.001 0 0 0 2.001 0 1 1 0 0 0-.5-.865V8.704l1.035 1.046a.6.6 0 0 0-.035.25 1.001 1.001 0 1 0 1.001-1.001.6.6 0 0 0-.25.035l-1.287-1.285a.99.99 0 0 0-.575-1.171 1.05 1.05 0 0 0-.64-.045l-.851-.846.396-.39a.987.987 0 0 1 1.41 0l3.998 3.998a.987.987 0 0 1 0 1.41l-3.998 3.998a.987.987 0 0 1-1.41 0l-3.998-3.998a.987.987 0 0 1 0-1.41" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-github"><path fill="#546e7a" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#eceff1" d="M11.5 5A4.516 4.516 0 0 0 7 9.532a4.54 4.54 0 0 0 3.079 4.305c.225.036.296-.105.296-.226v-.766c-1.246.272-1.512-.607-1.512-.607a1.2 1.2 0 0 0-.499-.667c-.41-.28.031-.272.031-.272a.95.95 0 0 1 .689.466.963.963 0 0 0 1.31.377.98.98 0 0 1 .283-.607c-1-.114-2.047-.504-2.047-2.23a1.76 1.76 0 0 1 .463-1.228 1.63 1.63 0 0 1 .045-1.196s.377-.123 1.237.462a4.3 4.3 0 0 1 2.25 0c.86-.585 1.239-.462 1.239-.462a1.63 1.63 0 0 1 .044 1.196 1.76 1.76 0 0 1 .464 1.228c0 1.731-1.053 2.112-2.057 2.225a1.1 1.1 0 0 1 .311.839v1.242c0 .122.072.266.301.226A4.54 4.54 0 0 0 11.501 5" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-gitlab"><path fill="#757575" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><g data-mit-no-recolor="true"><path fill="#e53935" d="m15.675 8.852-.011-.032-1.17-3.048a.3.3 0 0 0-.12-.146.31.31 0 0 0-.463.176l-.789 2.416H9.927l-.79-2.415a.31.31 0 0 0-.463-.177.3.3 0 0 0-.12.145l-1.168 3.05-.012.03a2.17 2.17 0 0 0 .72 2.508l.004.003.01.008 1.778 1.334.882.666.536.405a.36.36 0 0 0 .437 0l.536-.406.882-.667 1.791-1.34.005-.004a2.17 2.17 0 0 0 .72-2.507" /><path fill="#ef6c00" d="m15.675 8.852-.011-.032a3.95 3.95 0 0 0-1.571.707l-2.567 1.941 1.634 1.235 1.79-1.34.006-.004a2.17 2.17 0 0 0 .72-2.508Z" /><path fill="#f9a825" d="m9.886 12.703.882.667.536.405a.36.36 0 0 0 .436 0l.536-.406.883-.666-1.635-1.235Z" /><path fill="#ef6c00" d="M8.956 9.527a3.95 3.95 0 0 0-1.57-.706l-.013.03a2.17 2.17 0 0 0 .72 2.509l.005.003.01.008 1.778 1.332 1.635-1.235Z" /></g></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-include"><path fill="#039be5" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#b3e5fc" d="M12.5 7a3.5 3.5 0 1 0 3.5 3.5A3.5 3.5 0 0 0 12.5 7m.5 4v2h-1v-2h-2v-1h2V8h1v2h2v1z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-intellij"><defs data-mit-no-recolor="true"><linearGradient id="icon-mit-folder-intellij_a" x1="-84.662" x2="-58.529" y1="818.209" y2="802.436" gradientTransform="translate(27.748 -165.512) scale(.11021)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fdd835" /><stop offset="1" stop-color="#f57c00" /></linearGradient><linearGradient id="icon-mit-folder-intellij_b" x1="-79.135" x2="-55.282" y1="780.336" y2="801.218" gradientTransform="translate(27.748 -165.512) scale(.11021)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ef5350" /><stop offset=".57" stop-color="#ff6e40" /><stop offset="1" stop-color="#f57c00" /></linearGradient><linearGradient id="icon-mit-folder-intellij_c" x1="-77.621" x2="-91.757" y1="799.266" y2="790.438" gradientTransform="translate(27.748 -165.512) scale(.11021)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#8e24aa" /><stop offset=".385" stop-color="#ab47bc" /><stop offset=".765" stop-color="#ec407a" /><stop offset=".957" stop-color="#ec407a" /></linearGradient><linearGradient id="icon-mit-folder-intellij_d" x1="-77.876" x2="-91.677" y1="779.271" y2="790.669" gradientTransform="translate(27.748 -165.512) scale(.11021)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ef5350" /><stop offset=".364" stop-color="#ec407a" /><stop offset="1" stop-color="#ec407a" /></linearGradient></defs><path fill="#546e7a" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="url(#icon-mit-folder-intellij_a)" d="M15.465 11.26a.34.34 0 0 0 .11-.236.345.345 0 0 0-.323-.36.36.36 0 0 0-.243.081l-6.157 3.373a.72.72 0 0 0-.345.3.74.74 0 0 0 .253 1.016l.011.006a.76.76 0 0 0 .786-.015c.015-.014.037-.021.052-.036l5.73-4.027a1 1 0 0 0 .126-.102" /><path fill="url(#icon-mit-folder-intellij_b)" d="m15.48 10.767-4.688-4.6a.567.567 0 1 0-.83.772 1 1 0 0 0 .087.073l4.952 4.24a.38.38 0 0 0 .221.095.345.345 0 0 0 .36-.322.37.37 0 0 0-.103-.258" /><path fill="url(#icon-mit-folder-intellij_c)" d="M10.946 10.356c-.007 0-2.895-2.278-2.953-2.315l-.133-.066a.822.822 0 0 0-.72 1.47.7.7 0 0 0 .147.066c.03.015 3.336 1.381 3.336 1.381a.315.315 0 0 0 .323-.536" /><path fill="url(#icon-mit-folder-intellij_d)" d="M10.373 5.984a.6.6 0 0 0-.338.11l-2.924 1.97c-.007.007-.015.007-.015.014h-.007a.819.819 0 0 0 .198 1.433.8.8 0 0 0 .764-.103.7.7 0 0 0 .133-.117l2.542-2.293a.566.566 0 0 0-.353-1.014" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-lib"><path fill="#c0ca33" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#f0f4c3" d="M11.5 8a1.5 1.5 0 0 0 .002-3H11.5A1.5 1.5 0 0 0 10 6.5 1.5 1.5 0 0 0 11.5 8m0 1.987C10.387 8.947 8.523 7.996 7 8v5c1.595 0 3.425 1.002 4.5 2 1.113-1.039 2.978-2.002 4.5-2V8c-1.522-.003-3.387.947-4.5 1.986" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-middleware"><path fill="#5c6bc0" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#c5cae9" d="M15.054 10H16V8a1 1 0 0 0-1-1h-2V6a1 1 0 0 0-2 0v1H9a1 1 0 0 0-1 1v2H7a1 1 0 0 0 0 2h1v2a1 1 0 0 0 1 1h2v-.946a1.04 1.04 0 0 1 .832-1.04A1 1 0 0 1 13 14v1h2a1 1 0 0 0 1-1v-2h-1a1 1 0 0 1-.986-1.168 1.04 1.04 0 0 1 1.04-.832" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-node"><path fill="#8bc34a" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#dcedc8" d="M12.5 6 9 8.036v3.927L12.5 14l3.5-2.037V8.036Z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-open"><path d="M14.483 6H4.721a1 1 0 0 0-.949.684L2 12V5h12a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232l-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h11l2.403-5.606A1 1 0 0 0 14.483 6" fill="#90a4ae" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-public"><path fill="#039be5" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#b3e5fc" d="M11 5a5 5 0 1 0 5 5 5 5 0 0 0-5-5m3.459 3H12.98a8 8 0 0 0-.671-1.77A4.02 4.02 0 0 1 14.459 8M11 6a7 7 0 0 1 .945 2h-1.89A7 7 0 0 1 11 6m-1.309.23A8 8 0 0 0 9.02 8H7.541a4.02 4.02 0 0 1 2.15-1.77M7.131 11a3.85 3.85 0 0 1 0-2h1.704a7.8 7.8 0 0 0 0 2zm.41 1H9.02a8 8 0 0 0 .671 1.77A4.02 4.02 0 0 1 7.541 12M11 14a7 7 0 0 1-.945-2h1.89A7 7 0 0 1 11 14m1.155-3h-2.31a6.7 6.7 0 0 1 0-2h2.31a6.7 6.7 0 0 1 0 2m.154 2.77A8 8 0 0 0 12.98 12h1.479a4.02 4.02 0 0 1-2.15 1.77m2.56-2.77h-1.704a7.8 7.8 0 0 0 0-2h1.704a3.85 3.85 0 0 1 0 2" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-robot"><path fill="#ff5252" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#ffcdd2" d="M5.25 13H6v-3h-.75a.25.25 0 0 0-.25.25v2.5a.25.25 0 0 0 .25.25M15 10v3h.75a.25.25 0 0 0 .25-.25v-2.5a.25.25 0 0 0-.25-.25Zm-4.25-4h-.5a.25.25 0 0 0-.25.25V8H7.25a.25.25 0 0 0-.25.25v5.5a.25.25 0 0 0 .25.25h6.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25H11V6.25a.25.25 0 0 0-.25-.25M9 9a1 1 0 1 1-1 1 1 1 0 0 1 1-1m4 4H8v-1h5zm-1-4a1 1 0 1 1-1 1 1 1 0 0 1 1-1" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-routes"><path fill="#43a047" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#c8e6c9" d="M8.707 7.293 10 6H6v4l1.293-1.293 2.455 2.455a.85.85 0 0 1 .252.608V14h2v-2.23a2.84 2.84 0 0 0-.838-2.022ZM14.68 6l-2.805 2.465.285.285a2.8 2.8 0 0 1 .78 1.445L16 7.505Z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-scripts"><path fill="#546e7a" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#cfd8dc" d="M14 6h-3a2 2 0 0 0-2 2v4h1V8h4v4.947a1.04 1.04 0 0 1-.832 1.04A1 1 0 0 1 12 13H8a2 2 0 0 0 2 2h3a2 2 0 0 0 2-2V8h1a2 2 0 0 0-2-2" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-server"><path fill="#fbc02d" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#fffde7" d="M7 7.5v2a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5h-8a.5.5 0 0 0-.5.5M10 9H8V8h2zm2 0h-1V8h1zm-5 2.5v2a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 0-.5-.5h-8a.5.5 0 0 0-.5.5m3 1.5H8v-1h2zm2 0h-1v-1h1z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-shared"><path fill="#ab47bc" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#e1bee7" d="M14 13a1 1 0 0 0 1-1V9a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1H7v1h9v-1Zm-2.5-3V9l2 1.399-2 1.601v-1a2.06 2.06 0 0 0-2 1c.224-1.001.444-1.797 2-2" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-skills"><path fill="#ff8f00" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#ffecb3" d="M12 13v1h2v-1zm0-8-2 2v2l1 1v1l1 1h2l1-1v-1l1-1V7l-2-2-1 1v1l-1 1h-1V7l1-1h1l1-1z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-src"><path fill="#4caf50" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#c8e6c9" d="M9.225 15a.5.5 0 0 1-.12-.014.57.568 0 0 1-.414-.661l1.549-7.872a.566.565 0 0 1 .254-.372.53.53 0 0 1 .4-.067.57.57 0 0 1 .415.662l-1.552 7.872a.56.56 0 0 1-.253.371.53.53 0 0 1-.28.081m3.105-1h-.038a.54.54 0 0 1-.382-.206.583.582 0 0 1 .057-.774l2.664-2.483-2.653-2.312a.583.582 0 0 1-.08-.772.54.54 0 0 1 .377-.218.53.53 0 0 1 .406.129l3.126 2.727a.579.578 0 0 1 .002.862l-3.114 2.904a.536.535 0 0 1-.365.144zm-4.661 0a.536.535 0 0 1-.365-.146L4.186 10.95a.58.58 0 0 1-.005-.846l.01-.01 3.128-2.726a.516.515 0 0 1 .4-.13.54.54 0 0 1 .38.218.583.582 0 0 1-.08.773l-2.65 2.31 2.663 2.482a.579.578 0 0 1 .056.774.536.535 0 0 1-.381.206z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-store"><path fill="#ff7043" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#ffccbc" d="M11 13H8v-3h3m5 0V9l-1-2H7L6 9v1h1v4h5v-4h2v4h1v-4m0-5H7v1h8z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-tasks"><path fill="#5c6bc0" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#c5cae9" d="M9 5v1a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1V5h-1v1h-4V5zm0 3h6v5H9zm4.318 1-1.77 1.627-.859-.805-.689.733L11.54 12 14 9.74z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-test"><path fill="#00bfa5" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#a7ffeb" d="M8 6v1h1v6a2 2 0 0 0 4 0V7h1V6Zm2.5 7a.5.5 0 1 1 .5-.5.5.5 0 0 1-.5.5m1-2a.5.5 0 1 1 .5-.5.5.5 0 0 1-.5.5m.5-2h-2V7h2z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-ui"><path fill="#ab47bc" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#e1bee7" d="M8 7h8v3H8Zm0 4h3v3H8Zm4 0h4v3h-4z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-utils"><path fill="#7cb342" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#dcedc8" d="M9.5 6a.5.5 0 0 0-.5.5v6a.5.5 0 0 0 .5.5h6a.5.5 0 0 0 .5-.5v-6a.5.5 0 0 0-.5-.5zM12 7h1v2h2v1h-2v2h-1v-2h-2V9h2zM7 8v6.5a.5.5 0 0 0 .5.5H14v-1H8V8z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-views"><path fill="#ff7043" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#ffccbc" d="m7 6 1 8 3.5 1 3.5-1 1-8zm4 2.95L9.33 10 11 11.051V12l-2.617-1.693v-.614L11 8Zm3.618 1.364L12 12v-.949L13.681 10 12 8.95V8l2.618 1.687z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder-vscode"><path fill="#42a5f5" d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" /><path fill="#bbdefb" d="M14.073 5 10.12 8.633 7.912 6.97 7 7.5l2.177 2L7 11.5l.912.533 2.209-1.665L14.072 14 16 13.063V5.937ZM14 7.39v4.22L11.199 9.5z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-folder"><path d="m6.922 3.768-.644-.536A1 1 0 0 0 5.638 3H2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H7.562a1 1 0 0 1-.64-.232" fill="#90a4ae" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-font"><path fill="#f44336" d="M24 28h4L18 4h-4L4 28h4l8-19.422" /><path fill="#f44336" d="M8 20h16v4H8z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-gemfile"><path fill="#e53935" d="M21.184 10.016V10H10.881l.016.033-.016-.017L8 14l8.032 10L24 14z" /><path fill="#e53935" d="m16 3.455 11 6.286v12.518l-11 6.286-11-6.286V9.741zM16 0 2 8v16l14 8 14-8V8z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-git"><path fill="#e64a19" d="M13.172 2.828 11.78 4.22l1.91 1.91 2 2A2.986 2.986 0 0 1 20 10.81a3.25 3.25 0 0 1-.31 1.31l2.06 2a2.68 2.68 0 0 1 3.37.57 2.86 2.86 0 0 1 .88 2.117 3.02 3.02 0 0 1-.856 2.109A2.9 2.9 0 0 1 23 19.81a2.93 2.93 0 0 1-2.13-.87 2.694 2.694 0 0 1-.56-3.38l-2-2.06a3 3 0 0 1-.31.12V20a3 3 0 0 1 1.44 1.09 2.92 2.92 0 0 1 .56 1.72 2.88 2.88 0 0 1-.878 2.128 2.98 2.98 0 0 1-2.048.871 2.981 2.981 0 0 1-2.514-4.719A3 3 0 0 1 16 20v-6.38a2.96 2.96 0 0 1-1.44-1.09 2.9 2.9 0 0 1-.56-1.72 2.9 2.9 0 0 1 .31-1.31l-3.9-3.9-7.579 7.572a4 4 0 0 0-.001 5.658l10.342 10.342a4 4 0 0 0 5.656 0l10.344-10.344a4 4 0 0 0 0-5.656L18.828 2.828a4 4 0 0 0-5.656 0" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-github-actions-workflow"><path fill="#78909c" d="M26 18h-6a2 2 0 0 0-2 2v2h-6a2 2 0 0 1-2-2v-6h2a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2v6a4 4 0 0 0 4 4h6v2a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2M6.5 12a.5.5 0 0 1-.5-.5v-5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5ZM26 25.5a.5.5 0 0 1-.5.5h-5a.5.5 0 0 1-.5-.5v-5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5Z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-go-mod"><path fill="#ec407a" d="M2 12h4v2H2zm-2 4h6v2H0zm4 4h2v2H4zm16.954-5H14v3h3.239a4.42 4.42 0 0 1-3.531 2 2.65 2.65 0 0 1-2.053-.858 2.86 2.86 0 0 1-.628-2.28A4.515 4.515 0 0 1 15.292 13a2.73 2.73 0 0 1 1.749.584l2.962-1.185A5.6 5.6 0 0 0 15.292 10a7.526 7.526 0 0 0-7.243 6.5 5.614 5.614 0 0 0 5.659 6.5 7.526 7.526 0 0 0 7.243-6.5 6.4 6.4 0 0 0 .003-1.5" /><path fill="#ec407a" d="M26.292 10a7.526 7.526 0 0 0-7.243 6.5 5.614 5.614 0 0 0 5.659 6.5 7.526 7.526 0 0 0 7.243-6.5 5.614 5.614 0 0 0-5.659-6.5m2.681 6.137A4.515 4.515 0 0 1 24.708 20a2.65 2.65 0 0 1-2.053-.858 2.86 2.86 0 0 1-.628-2.28A4.515 4.515 0 0 1 26.292 13a2.65 2.65 0 0 1 2.053.858 2.86 2.86 0 0 1 .628 2.28Z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-go"><path fill="#00acc1" d="M2 12h4v2H2zm-2 4h6v2H0zm4 4h2v2H4zm16.954-5H14v3h3.239a4.42 4.42 0 0 1-3.531 2 2.65 2.65 0 0 1-2.053-.858 2.86 2.86 0 0 1-.628-2.28A4.515 4.515 0 0 1 15.292 13a2.73 2.73 0 0 1 1.749.584l2.962-1.185A5.6 5.6 0 0 0 15.292 10a7.526 7.526 0 0 0-7.243 6.5 5.614 5.614 0 0 0 5.659 6.5 7.526 7.526 0 0 0 7.243-6.5 6.4 6.4 0 0 0 .003-1.5" /><path fill="#00acc1" d="M26.292 10a7.526 7.526 0 0 0-7.243 6.5 5.614 5.614 0 0 0 5.659 6.5 7.526 7.526 0 0 0 7.243-6.5 5.614 5.614 0 0 0-5.659-6.5m2.681 6.137A4.515 4.515 0 0 1 24.708 20a2.65 2.65 0 0 1-2.053-.858 2.86 2.86 0 0 1-.628-2.28A4.515 4.515 0 0 1 26.292 13a2.65 2.65 0 0 1 2.053.858 2.86 2.86 0 0 1 .628 2.28Z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-gradle"><path fill="#0097a7" d="M16 10v2h6c-2 0-3-2-6-2" /><path fill="#0097a7" d="M26 4h-2a4 4 0 0 0-4 4h4a1 1 0 0 1 2 0v4H16v-2h-5.317A2.683 2.683 0 0 0 8 12.683v2.634A2.683 2.683 0 0 0 10.683 18H16v2h-5.98A4.02 4.02 0 0 1 6 16v-2c-2 0-4 4-4 8 0 5 1 6 2 6h4v-4h4v4h4v-4h4v4h4v-6a2 2 0 0 0 2-2v-2a4 4 0 0 0 4-4V8a4 4 0 0 0-4-4m-4 12h-2a2 2 0 0 1-2-2h6a2 2 0 0 1-2 2" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-html"><path fill="#e65100" d="m4 4 2 22 10 2 10-2 2-22Zm19.72 7H11.28l.29 3h11.86l-.802 9.335L15.99 25l-6.635-1.646L8.93 19h3.02l.19 2 3.86.77 3.84-.77.29-4H8.84L8 8h16Z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-image"><path fill="#26a69a" d="M8.5 6h4l-4-4zM3.875 1H9.5l4 4v8.6c0 .773-.616 1.4-1.375 1.4h-8.25c-.76 0-1.375-.627-1.375-1.4V2.4c0-.777.612-1.4 1.375-1.4M4 13.6h8V8l-2.625 2.8L8 9.4zm1.25-7.7c-.76 0-1.375.627-1.375 1.4s.616 1.4 1.375 1.4c.76 0 1.375-.627 1.375-1.4S6.009 5.9 5.25 5.9" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-java"><path fill="#f44336" d="M4 26h24v2H4zM28 4H7a1 1 0 0 0-1 1v13a4 4 0 0 0 4 4h10a4 4 0 0 0 4-4v-4h4a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2m0 8h-4V6h4Z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-javascript"><path fill="#ffca28" d="M2 2v12h12V2zm6 6h1v4a1.003 1.003 0 0 1-1 1H7a1.003 1.003 0 0 1-1-1v-1h1v1h1zm3 0h2v1h-2v1h1a1.003 1.003 0 0 1 1 1v1a1.003 1.003 0 0 1-1 1h-2v-1h2v-1h-1a1.003 1.003 0 0 1-1-1V9a1.003 1.003 0 0 1 1-1" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-jsconfig"><path fill="#757575" d="M15 2H6a2.006 2.006 0 0 0-2 2v22a2.006 2.006 0 0 0 2 2h6v-4H6v-2h6v-2H6v-2h6v-2H6v-2h6v-2h2V4l8 8h2v-1Z" data-mit-no-recolor="true" /><path fill="#ffca28" d="M12 12v18h18V12zm8 12a2.006 2.006 0 0 1-2 2h-2a2.006 2.006 0 0 1-2-2v-2h2v2h2v-8h2zm8-6h-4v2h2a2.006 2.006 0 0 1 2 2v2a2.006 2.006 0 0 1-2 2h-4v-2h4v-2h-2a2.006 2.006 0 0 1-2-2v-2a2.006 2.006 0 0 1 2-2h4z" /></symbol><symbol viewBox="0 -960 960 960" id="icon-mit-json"><path fill="#f9a825" d="M560-160v-80h120q17 0 28.5-11.5T720-280v-80q0-38 22-69t58-44v-14q-36-13-58-44t-22-69v-80q0-17-11.5-28.5T680-720H560v-80h120q50 0 85 35t35 85v80q0 17 11.5 28.5T840-560h40v160h-40q-17 0-28.5 11.5T800-360v80q0 50-35 85t-85 35zm-280 0q-50 0-85-35t-35-85v-80q0-17-11.5-28.5T120-400H80v-160h40q17 0 28.5-11.5T160-600v-80q0-50 35-85t85-35h120v80H280q-17 0-28.5 11.5T240-680v80q0 38-22 69t-58 44v14q36 13 58 44t22 69v80q0 17 11.5 28.5T280-240h120v80z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-key"><path fill="#26a69a" d="M30 14H17.738a8 8 0 1 0 0 4H24v4h4v-4h2Zm-20 5a3 3 0 1 1 3-3 3.003 3.003 0 0 1-3 3" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-kotlin"><defs><linearGradient id="icon-mit-kotlin_a" x1="1.725" x2="22.185" y1="22.67" y2="1.982" gradientTransform="translate(1.306 1.129) scale(.89324)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#7c4dff" /><stop offset=".5" stop-color="#d500f9" /><stop offset="1" stop-color="#ef5350" /></linearGradient></defs><path fill="url(#icon-mit-kotlin_a)" d="M2.975 2.976v18.048h18.05v-.03l-4.478-4.511-4.48-4.515 4.48-4.515 4.443-4.477z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-less"><path fill="#0277bd" d="M8 3a2 2 0 0 0-2 2v4a2 2 0 0 1-2 2H3v2h1a2 2 0 0 1 2 2v4a2 2 0 0 0 2 2h2v-2H8v-5a2 2 0 0 0-2-2 2 2 0 0 0 2-2V5h2V3m6 0a2 2 0 0 1 2 2v4a2 2 0 0 0 2 2h1v2h-1a2 2 0 0 0-2 2v4a2 2 0 0 1-2 2h-2v-2h2v-5a2 2 0 0 1 2-2 2 2 0 0 1-2-2V5h-2V3z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-license"><path fill="#ff5722" d="M8 1a5.5 5.5 0 0 0-4 9.26V15l4-1.5 4 1.5v-4.74A5.49 5.49 0 0 0 8 1m0 1.5a4 4 0 1 1 0 8 4 4 0 0 1 0-8m0 2a2 2 0 1 0 0 4 2 2 0 0 0 0-4" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-lock"><path fill="#ffd54f" d="M25 12h-3V8a6 6 0 0 0-12 0v4H7a1 1 0 0 0-1 1v16a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V13a1 1 0 0 0-1-1M14 8a2 2 0 0 1 4 0v4h-4Zm2 17a4 4 0 1 1 4-4 4 4 0 0 1-4 4" /></symbol><symbol fill="none" viewBox="0 0 24 24" id="icon-mit-log"><path d="M0 0h24v24H0z" /><path fill="#afb42b" d="M19 5v9h-5v5H5V5zm0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h10l6-6V5c0-1.1-.9-2-2-2m-7 11H7v-2h5zm5-4H7V8h10z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-makefile"><path fill="#ef5350" d="m29.5 24.02-1.6-.92a4.4 4.4 0 0 0 .09-.9A1.3 1.3 0 0 0 28 22a5.6 5.6 0 0 0-.1-1.1l1.6-.92a.493.493 0 0 0 .18-.68l-1.5-2.6a.45.45 0 0 0-.18-.18V6.01a2.006 2.006 0 0 0-2-2H4a2.006 2.006 0 0 0-2 2V22a2.006 2.006 0 0 0 2 2h10.53l-.03.02a.493.493 0 0 0-.18.68l1.5 2.6a.493.493 0 0 0 .68.18l1.6-.92a5.9 5.9 0 0 0 1.9 1.09v1.85a.495.495 0 0 0 .5.5h3a.495.495 0 0 0 .5-.5v-1.85a5.9 5.9 0 0 0 1.9-1.09l1.6.92a.493.493 0 0 0 .68-.18l1.5-2.6a.493.493 0 0 0-.18-.68M24 22.01a1.99 1.99 0 0 1-.88 1.65l-.18.11a2.04 2.04 0 0 1-1.88 0l-.18-.11a1.99 1.99 0 0 1-.88-1.65V22a2 2 0 0 1 .88-1.66l.18-.11a2.04 2.04 0 0 1 1.88 0l.18.11A2 2 0 0 1 24 22Zm2-4.63-.1.06a5.9 5.9 0 0 0-1.9-1.09V14.5a.495.495 0 0 0-.5-.5h-3a.495.495 0 0 0-.5.5v1.85a5.9 5.9 0 0 0-1.9 1.09l-1.6-.92a.493.493 0 0 0-.68.18l-1.5 2.6a.493.493 0 0 0 .18.68l1.6.92A5.6 5.6 0 0 0 16 22v.01L4 22V10.01h22Z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-markdown"><path fill="#42a5f5" d="m14 10-4 3.5L6 10H4v12h4v-6l2 2 2-2v6h4V10zm12 6v-6h-4v6h-4l6 8 6-8z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-maven"><defs><linearGradient id="icon-mit-maven_a" x1=".125" x2="0" y1="1" y2="0"><stop offset="0%" stop-color="#ab47bc" /><stop offset="37.5%" stop-color="#ab47bc" /><stop offset="37.501%" stop-color="#d32f2f" /><stop offset="54.25%" stop-color="#d32f2f" /><stop offset="54.251%" stop-color="#ff7043" /><stop offset="69.75%" stop-color="#ff7043" /><stop offset="69.751%" stop-color="#ffa726" /><stop offset="100%" stop-color="#ffa726" /></linearGradient></defs><path fill="url(#icon-mit-maven_a)" d="M22 2s-7.64-.37-13.66 7.88C3.72 16.21 2 22 2 22l1.94-1c1.44-2.5 2.19-3.53 3.6-5 2.53.74 5.17.65 7.46-2-2-.56-3.6-.43-5.96-.19C11.69 12 13.5 11.6 16 12l1-2c-1.8-.34-3-.37-4.78.04C14.19 8.65 15.56 7.87 18 8l1.11-1.73c-1.53-.06-2.4-.02-4.19.3 1.61-1.46 3.08-2.12 5.22-2.25 0 0 1.05-1.89 1.86-2.32" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-netlify"><path fill="#00bfa5" d="m11.25 2.232-.127.127v4.567l.127.129h1.526l.126-.13V2.36l-.126-.127H11.25zM6.69 5.455 5.643 6.5v.21l1.6 1.6h1.108l.148-.148V7.055l-1.6-1.6zM1.026 11.11l-.127.127v1.528l.127.127h6.09l.127-.127v-1.528l-.127-.127zm15.858 0-.127.127v1.528l.127.127h6.09l.127-.127v-1.528l-.127-.127zm-9.64 4.58-1.6 1.6v.21l1.045 1.046h.21l1.6-1.6v-1.109l-.148-.146zm4.005 1.256-.127.13v4.566l.127.127h1.526l.126-.127v-4.567l-.126-.129z" /><path fill="#cfd8dc" d="M14.855 15.172h-1.523l-.127-.127V11.48c0-.634-.249-1.125-1.013-1.142-.394-.01-.844 0-1.325.019l-.072.074v4.61l-.127.128H9.146l-.128-.127V8.956l.128-.127h3.425a2.41 2.41 0 0 1 2.41 2.41v3.806z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-nodejs"><path fill="#8bc34a" d="M16 20.003v2h4a2 2 0 0 0 2-2v-2a2 2 0 0 0-2-2h-2v-2h4v-2h-4a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h2v2Z" /><path fill="#8bc34a" d="m16 3.003-12 7v14l4 2h6v-13.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v11.5H8l-2-1.034V11.15l10-5.833 10 5.833v11.703l-10 5.833-1.745-1.022L13 29.253l3 1.75 12-7v-14Z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-npm"><path fill="#e53935" d="M4 4v24h24V4Zm20 20h-4V12h-4v12H8V8h16Z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-pdf"><path fill="#ef5350" d="M13 9h5.5L13 3.5zM6 2h8l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2m4.93 10.44c.41.9.93 1.64 1.53 2.15l.41.32c-.87.16-2.07.44-3.34.93l-.11.04.5-1.04c.45-.87.78-1.66 1.01-2.4m6.48 3.81c.18-.18.27-.41.28-.66.03-.2-.02-.39-.12-.55-.29-.47-1.04-.69-2.28-.69l-1.29.07-.87-.58c-.63-.52-1.2-1.43-1.6-2.56l.04-.14c.33-1.33.64-2.94-.02-3.6a.85.85 0 0 0-.61-.24h-.24c-.37 0-.7.39-.79.77-.37 1.33-.15 2.06.22 3.27v.01c-.25.88-.57 1.9-1.08 2.93l-.96 1.8-.89.49c-1.2.75-1.77 1.59-1.88 2.12-.04.19-.02.36.05.54l.03.05.48.31.44.11c.81 0 1.73-.95 2.97-3.07l.18-.07c1.03-.33 2.31-.56 4.03-.75 1.03.51 2.24.74 3 .74.44 0 .74-.11.91-.3m-.41-.71.09.11c-.01.1-.04.11-.09.13h-.04l-.19.02c-.46 0-1.17-.19-1.9-.51.09-.1.13-.1.23-.1 1.4 0 1.8.25 1.9.35M7.83 17c-.65 1.19-1.24 1.85-1.69 2 .05-.38.5-1.04 1.21-1.69zm3.02-6.91c-.23-.9-.24-1.63-.07-2.05l.07-.12.15.05c.17.24.19.56.09 1.1l-.03.16-.16.82z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-php"><path fill="#1e88e5" d="M12 18.08c-6.63 0-12-2.72-12-6.08s5.37-6.08 12-6.08S24 8.64 24 12s-5.37 6.08-12 6.08m-5.19-7.95c.54 0 .91.1 1.09.31.18.2.22.56.13 1.03-.1.53-.29.87-.58 1.09q-.42.33-1.29.33h-.87l.53-2.76zm-3.5 5.55h1.44l.34-1.75h1.23c.54 0 .98-.06 1.33-.17.35-.12.67-.31.96-.58.24-.22.43-.46.58-.73.15-.26.26-.56.31-.88.16-.78.05-1.39-.33-1.82-.39-.44-.99-.65-1.82-.65H4.59zm7.25-8.33-1.28 6.58h1.42l.74-3.77h1.14c.36 0 .6.06.71.18s.13.34.07.66l-.57 2.93h1.45l.59-3.07c.13-.62.03-1.07-.27-1.36-.3-.27-.85-.4-1.65-.4h-1.27L12 7.35zM18 10.13c.55 0 .91.1 1.09.31.18.2.22.56.13 1.03-.1.53-.29.87-.57 1.09-.29.22-.72.33-1.3.33h-.85l.5-2.76zm-3.5 5.55h1.44l.34-1.75h1.22c.55 0 1-.06 1.35-.17.35-.12.65-.31.95-.58.24-.22.44-.46.58-.73.15-.26.26-.56.32-.88.15-.78.04-1.39-.34-1.82-.36-.44-.99-.65-1.82-.65h-2.75z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-pnpm"><path fill="#e0e0e0" d="M2 22h8v8H2zm10 0h8v8h-8zm10 0h8v8h-8zM12 12h8v8h-8z" /><path fill="#ffb300" d="M2 2h8v8H2zm10 0h8v8h-8zm10 0h8v8h-8zm0 10h8v8h-8z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-powershell"><path fill="#03a9f4" d="M29.07 6H7.677A1.535 1.535 0 0 0 6.24 7.113l-4.2 17.774A.852.852 0 0 0 2.93 26h21.393a1.535 1.535 0 0 0 1.436-1.113L29.96 7.112A.852.852 0 0 0 29.07 6M8.626 23.797a1.4 1.4 0 0 1-1.814-.31l-.007-.009a1.075 1.075 0 0 1 .315-1.599l9.6-6.061-6.102-5.852-.01-.01a1.068 1.068 0 0 1 .084-1.625l.037-.03a1.38 1.38 0 0 1 1.8.07l7.233 6.957a1.1 1.1 0 0 1 .236.739 1.08 1.08 0 0 1-.412.79c-.074.04-.146.119-10.951 6.935ZM24 22.94A1.135 1.135 0 0 1 22.803 24h-5.634a1.061 1.061 0 1 1 .001-2.112h5.633A1.134 1.134 0 0 1 24 22.938Z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-prettier"><path fill="#f44336" d="M2 8h4v1H2zm0 6h4v1H2zm9-10h3v1h-3zM2 2h3v1H2z" /><path fill="#f9a825" d="M9 2h3v1H9zm1 4h4v1h-4zm-5 6h1v1H5zm-3-2h6v1H2z" /><path fill="#26a69a" d="M2 12h3v1H2zm7-4h5v1H9zM2 4h4v1H2zm3-2h4v1H5z" /><path fill="#ba68c8" d="M2 6h3v1H2zm7-2h2v1H9zm-1 6h4v1H8z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-python"><path fill="#0288d1" d="M9.86 2A2.86 2.86 0 0 0 7 4.86v1.68h4.29c.39 0 .71.57.71.96H4.86A2.86 2.86 0 0 0 2 10.36v3.781a2.86 2.86 0 0 0 2.86 2.86h1.18v-2.68a2.85 2.85 0 0 1 2.85-2.86h5.25c1.58 0 2.86-1.271 2.86-2.851V4.86A2.86 2.86 0 0 0 14.14 2zm-.72 1.61c.4 0 .72.12.72.71s-.32.891-.72.891c-.39 0-.71-.3-.71-.89s.32-.711.71-.711" /><path fill="#fdd835" d="M17.959 7v2.68a2.85 2.85 0 0 1-2.85 2.859H9.86A2.85 2.85 0 0 0 7 15.389v3.75a2.86 2.86 0 0 0 2.86 2.86h4.28A2.86 2.86 0 0 0 17 19.14v-1.68h-4.291c-.39 0-.709-.57-.709-.96h7.14A2.86 2.86 0 0 0 22 13.64V9.86A2.86 2.86 0 0 0 19.14 7zM8.32 11.513l-.004.004.038-.004zm6.54 7.276c.39 0 .71.3.71.89a.71.71 0 0 1-.71.71c-.4 0-.72-.12-.72-.71s.32-.89.72-.89" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-react"><path fill="#00bcd4" d="M16 12c7.444 0 12 2.59 12 4s-4.556 4-12 4-12-2.59-12-4 4.556-4 12-4m0-2c-7.732 0-14 2.686-14 6s6.268 6 14 6 14-2.686 14-6-6.268-6-14-6" /><path fill="#00bcd4" d="M16 14a2 2 0 1 0 2 2 2 2 0 0 0-2-2" /><path fill="#00bcd4" d="M10.458 5.507c2.017 0 5.937 3.177 9.006 8.493 3.722 6.447 3.757 11.687 2.536 12.392a.9.9 0 0 1-.457.1c-2.017 0-5.938-3.176-9.007-8.492C8.814 11.553 8.779 6.313 10 5.608a.9.9 0 0 1 .458-.1m-.001-2A2.87 2.87 0 0 0 9 3.875C6.13 5.532 6.938 12.304 10.804 19c3.284 5.69 7.72 9.493 10.74 9.493A2.87 2.87 0 0 0 23 28.124c2.87-1.656 2.062-8.428-1.804-15.124-3.284-5.69-7.72-9.493-10.74-9.493Z" /><path fill="#00bcd4" d="M21.543 5.507a.9.9 0 0 1 .457.1c1.221.706 1.186 5.946-2.536 12.393-3.07 5.316-6.99 8.493-9.007 8.493a.9.9 0 0 1-.457-.1C8.779 25.686 8.814 20.446 12.536 14c3.07-5.316 6.99-8.493 9.007-8.493m0-2c-3.02 0-7.455 3.804-10.74 9.493C6.939 19.696 6.13 26.468 9 28.124a2.87 2.87 0 0 0 1.457.369c3.02 0 7.455-3.804 10.74-9.493C25.061 12.304 25.87 5.532 23 3.876a2.87 2.87 0 0 0-1.457-.369" /></symbol><symbol fill="none" viewBox="0 0 16 16" id="icon-mit-readme"><path d="M0 0h24v24H0z" /><path fill="#42a5f5" d="M8 1C4.136 1 1 4.136 1 8s3.136 7 7 7 7-3.136 7-7-3.136-7-7-7m1 11H7V7.5h2zm0-6H7V4h2z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-ruby"><path fill="#f44336" d="M18.041 3.177c2.24.382 2.879 1.919 2.843 3.527V6.67l-1.013 13.266-13.132.897h.008c-1.093-.044-3.518-.151-3.634-3.545l1.217-2.222 2.462 5.74 2.097-6.77-.045.009.018-.018 6.85 2.186L13.945 9.3l6.53-.409-5.144-4.212 2.71-1.51v.009M3.113 17.252v.017zM6.916 6.874c2.63-2.622 6.033-4.168 7.34-2.844 1.297 1.306-.072 4.523-2.702 7.135-2.666 2.613-6.015 4.248-7.322 2.933-1.306-1.324.036-4.612 2.675-7.224z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-rust"><path fill="#ff7043" d="m30 12-4-2V6h-4l-2-4-4 2-4-2-2 4H6v4l-4 2 2 4-2 4 4 2v4h4l2 4 4-2 4 2 2-4h4v-4l4-2-2-4ZM6 16a9.9 9.9 0 0 1 .842-4H10v8H6.842A9.9 9.9 0 0 1 6 16m10 10a9.98 9.98 0 0 1-7.978-4H16v-2h-2v-2h4c.819.819.297 2.308 1.179 3.37a1.89 1.89 0 0 0 1.46.63h3.34A9.98 9.98 0 0 1 16 26m-2-12v-2h4a1 1 0 0 1 0 2Zm11.158 6H24a2.006 2.006 0 0 1-2-2 2 2 0 0 0-2-2 3 3 0 0 0 3-3q0-.08-.004-.161A3.115 3.115 0 0 0 19.83 10H8.022a9.986 9.986 0 0 1 17.136 10" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-supabase"><path fill="#66bb6a" d="M29.92 12H16V2.85a1 1 0 0 0-1.78-.624L1.3 18.376A1 1 0 0 0 2.08 20H16v9.15a1 1 0 0 0 1.78.624l12.92-16.15A1 1 0 0 0 29.92 12" /></symbol><symbol viewBox="0 0 300 300" id="icon-mit-svelte"><path fill="#ff5722" d="M175.94 24.328c-13.037.252-26.009 3.872-37.471 11.174L79.912 72.818a67.13 67.13 0 0 0-30.355 44.906 70.8 70.8 0 0 0 6.959 45.445 67.2 67.2 0 0 0-10.035 25.102 71.54 71.54 0 0 0 12.236 54.156c23.351 33.41 69.468 43.311 102.81 22.07l58.559-37.158a67.36 67.36 0 0 0 30.355-44.906 70.77 70.77 0 0 0-6.982-45.422 67.65 67.65 0 0 0 10.059-25.102 71.63 71.63 0 0 0-12.236-54.156v-.18c-15.324-21.925-40.453-33.727-65.342-33.246zm5.137 28.68a46.5 46.5 0 0 1 36.09 19.969 42.98 42.98 0 0 1 7.365 32.557 45 45 0 0 1-1.393 5.455l-1.123 3.37-2.986-2.247a75.9 75.9 0 0 0-22.902-11.45l-2.244-.651.201-2.246a13.16 13.16 0 0 0-2.379-8.711 13.99 13.99 0 0 0-14.953-5.412 12.8 12.8 0 0 0-3.594 1.572l-58.578 37.25a12.24 12.24 0 0 0-5.502 8.15 13.1 13.1 0 0 0 2.246 9.834 14.03 14.03 0 0 0 14.93 5.569 13.5 13.5 0 0 0 3.594-1.573l22.453-14.234a41.8 41.8 0 0 1 11.898-5.232 46.48 46.48 0 0 1 49.914 18.502 43.02 43.02 0 0 1 7.363 32.557 40.42 40.42 0 0 1-18.254 27.078l-58.58 37.316a43 43 0 0 1-11.898 5.23A46.545 46.545 0 0 1 82.81 227.14a42.98 42.98 0 0 1-7.341-32.557 38 38 0 0 1 1.39-5.41l1.102-3.37 3.008 2.246a75.9 75.9 0 0 0 22.836 11.361l2.244.65-.201 2.247a13.25 13.25 0 0 0 2.447 8.644 14.03 14.03 0 0 0 15.043 5.569 13.1 13.1 0 0 0 3.592-1.573l58.467-37.316a12.17 12.17 0 0 0 5.502-8.173 12.96 12.96 0 0 0-2.246-9.811 14.03 14.03 0 0 0-15.043-5.568 12.8 12.8 0 0 0-3.592 1.57l-22.453 14.258a42.9 42.9 0 0 1-11.877 5.209 46.52 46.52 0 0 1-49.846-18.5 43.02 43.02 0 0 1-7.297-32.557A40.42 40.42 0 0 1 96.798 96.98l58.646-37.316a42.8 42.8 0 0 1 11.811-5.21 46.5 46.5 0 0 1 13.822-1.444z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-svg"><path fill="#ffb300" d="M29.168 14.03a2.7 2.7 0 0 0-1.968-.83 2.51 2.51 0 0 0-1.929.8h-4.443l3.078-3.078a2.835 2.835 0 0 0 2.857-2.842 2.6 2.6 0 0 0-.831-1.969 2.82 2.82 0 0 0-2.014-.788 2.67 2.67 0 0 0-1.968.788 2.36 2.36 0 0 0-.812 1.922L18 11.17V6.726a2.51 2.51 0 0 0 .8-1.929 2.7 2.7 0 0 0-.832-1.968 2.745 2.745 0 0 0-3.936 0 2.7 2.7 0 0 0-.832 1.968 2.51 2.51 0 0 0 .8 1.93v4.443l-3.138-3.138a2.36 2.36 0 0 0-.812-1.922 2.66 2.66 0 0 0-1.968-.788 2.83 2.83 0 0 0-2.014.788 2.6 2.6 0 0 0-.831 1.969 2.74 2.74 0 0 0 .831 2.013 2.8 2.8 0 0 0 2.026.829l3.078 3.078H6.729a2.51 2.51 0 0 0-1.929-.8 2.7 2.7 0 0 0-1.968.831 2.745 2.745 0 0 0 0 3.937 2.7 2.7 0 0 0 1.968.832 2.51 2.51 0 0 0 1.929-.8h4.443l-3.078 3.077a2.835 2.835 0 0 0-2.857 2.842 2.6 2.6 0 0 0 .831 1.969 2.82 2.82 0 0 0 2.014.788 2.67 2.67 0 0 0 1.968-.788 2.36 2.36 0 0 0 .812-1.922L14 20.827v4.444a2.51 2.51 0 0 0-.8 1.929 2.784 2.784 0 0 0 4.768 1.968A2.7 2.7 0 0 0 18.8 27.2a2.51 2.51 0 0 0-.8-1.929v-4.444l3.138 3.138a2.36 2.36 0 0 0 .812 1.922 2.66 2.66 0 0 0 1.968.788 2.83 2.83 0 0 0 2.014-.788 2.6 2.6 0 0 0 .831-1.969 2.74 2.74 0 0 0-.831-2.013 2.8 2.8 0 0 0-2.026-.829L20.828 18h4.443a2.51 2.51 0 0 0 1.93.8 2.784 2.784 0 0 0 1.967-4.769Z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-swift"><path fill="#ff6e40" d="M17.087 19.721c-2.36 1.36-5.59 1.5-8.86.1a13.8 13.8 0 0 1-6.23-5.32c.67.55 1.46 1 2.3 1.4 3.37 1.57 6.73 1.46 9.1 0-3.37-2.59-6.24-5.96-8.37-8.71-.45-.45-.78-1.01-1.12-1.51 8.28 6.05 7.92 7.59 2.41-1.01 4.89 4.94 9.43 7.74 9.43 7.74.16.09.25.16.36.22.1-.25.19-.51.26-.78.79-2.85-.11-6.12-2.08-8.81 4.55 2.75 7.25 7.91 6.12 12.24-.03.11-.06.22-.05.39 2.24 2.83 1.64 5.78 1.35 5.22-1.21-2.39-3.48-1.65-4.62-1.17" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-toml"><path fill="#cfd8dc" d="M4 6V4h8v2H9v7H7V6z" /><path fill="#ef5350" d="M4 1v1H2v12h2v1H1V1zm8 0v1h2v12h-2v1h3V1z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-tsconfig"><path fill="#757575" d="M15 2H6a2.006 2.006 0 0 0-2 2v22a2.006 2.006 0 0 0 2 2h6v-4H6v-2h6v-2H6v-2h6v-2H6v-2h6v-2h2V4l8 8h2v-1Z" data-mit-no-recolor="true" /><path fill="#0288d1" d="M12 12v18h18V12Zm8 6h-2v8h-2v-8h-2v-2h6Zm8 0h-4v2h2a2.006 2.006 0 0 1 2 2v2a2.006 2.006 0 0 1-2 2h-4v-2h4v-2h-2a2.006 2.006 0 0 1-2-2v-2a2.006 2.006 0 0 1 2-2h4Z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-tune"><path fill="#fbc02d" d="M12 10h10v2H12z" /><path fill="#fbc02d" d="M16 4h2v8h-2zm4 18h10v2H20zm4 2h2v4h-2zm0-20h2v14h-2zM2 18h10v2H2z" /><path fill="#fbc02d" d="M6 18h2v10H6zM6 4h2v10H6zm10 12h2v12h-2z" /></symbol><symbol viewBox="0 0 16 16" id="icon-mit-typescript"><path fill="#0288d1" d="M2 2v12h12V2zm4 6h3v1H8v4H7V9H6zm5 0h2v1h-2v1h1a1.003 1.003 0 0 1 1 1v1a1.003 1.003 0 0 1-1 1h-2v-1h2v-1h-1a1.003 1.003 0 0 1-1-1V9a1.003 1.003 0 0 1 1-1" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-vercel"><path fill="#cfd8dc" d="m16 6 12 20H4Z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-video"><path fill="#ff9800" d="m24 6 2 6h-4l-2-6h-3l2 6h-4l-2-6h-3l2 6H8L6 6H5a3 3 0 0 0-3 3v14a3 3 0 0 0 3 3h22a3 3 0 0 0 3-3V6Z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-vite"><path fill="#a0f" d="M29.313 12h-6.664a1.427 1.427 0 0 1-1.1-2.24l4.398-6.676A.703.703 0 0 0 25.397 2H8.428a.62.62 0 0 0-.55.289l-5.77 8.627A.703.703 0 0 0 2.658 12h8.175a1.427 1.427 0 0 1 1.099 2.24l-4.48 6.676A.702.702 0 0 0 8 22l6.695.002A1.34 1.34 0 0 1 16 23.375v5.934a.652.652 0 0 0 1.168.433l12.694-16.586a.725.725 0 0 0-.55-1.156" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-vue"><path fill="#41b883" d="M1.791 3.851 12 21.471 22.209 3.936V3.85H18.24l-6.18 10.616L5.906 3.851z" /><path fill="#35495e" d="m5.907 3.851 6.152 10.617L18.24 3.851h-3.723L12.084 8.03 9.66 3.85z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-webpack"><path fill="#fafafa" fill-opacity=".785" d="m19.376 15.988-7.708 4.45-7.709-4.45v-8.9l7.709-4.451 7.708 4.45z" /><path fill="#90caf9" d="M12.286 1.98c-.21 0-.41.059-.57.179l-7.9 4.44c-.32.17-.53.5-.53.88v9c0 .38.21.711.53.881l7.9 4.44c.16.12.36.18.57.18s.41-.06.57-.18l7.9-4.44c.32-.17.53-.5.53-.88v-9c0-.38-.21-.712-.53-.882l-7.9-4.44a.95.95 0 0 0-.57-.179zm0 2.15 7 3.94v2.103h-.016v5.177h.016v.54l-7 3.939-7-3.94V8.07zm0 2.08-4.9 2.83 4.9 2.83 4.9-2.83zm-5 5.08v3.58l4 2.309v-3.58l-4-2.31zm10 0-4 2.308v3.58l4-2.308z" /><path fill="#0277bd" d="m12.286 6.21-4.9 2.83 4.9 2.83 4.9-2.83zm-5 5.08v3.58l4 2.309v-3.58l-4-2.31zm10 0-4 2.308v3.58l4-2.308z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-xml"><path fill="#8bc34a" d="M13 9h5.5L13 3.5zM6 2h8l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.11.89-2 2-2m.12 13.5 3.74 3.74 1.42-1.41-2.33-2.33 2.33-2.33-1.42-1.41zm11.16 0-3.74-3.74-1.42 1.41 2.33 2.33-2.33 2.33 1.42 1.41z" /></symbol><symbol viewBox="0 0 24 24" id="icon-mit-yaml"><path fill="#ff5252" d="M13 9h5.5L13 3.5zM6 2h8l6 6v12c0 1.1-.9 2-2 2H6c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2m12 16v-2H9v2zm-4-4v-2H6v2z" /></symbol><symbol viewBox="0 0 32 32" id="icon-mit-yarn"><path fill="#0288d1" d="M27.575 23.967a9.9 9.9 0 0 0-3.751 1.726 22.6 22.6 0 0 1-5.537 2.504 1.55 1.55 0 0 1-.931.52 59 59 0 0 1-6.11.548c-1.102.008-1.777-.282-1.965-.735a1.49 1.49 0 0 1 .82-1.965 3.6 3.6 0 0 1-.486-.359c-.163-.162-.334-.487-.385-.367-.213.52-.324 1.794-.897 2.366-.786.795-2.273.53-3.153.069-.965-.513.069-1.718.069-1.718a.69.69 0 0 1-.94-.324 4.6 4.6 0 0 1-.632-2.794 5.2 5.2 0 0 1 1.674-2.76 8.84 8.84 0 0 1 .624-4.17 9.9 9.9 0 0 1 3-3.469S7.136 11.015 7.82 9.177c.444-1.196.623-1.187.769-1.239a3.44 3.44 0 0 0 1.375-.811 4.99 4.99 0 0 1 4.178-1.607s1.094-3.357 2.12-2.7a17.4 17.4 0 0 1 1.452 2.735s1.213-.71 1.35-.445a10.74 10.74 0 0 1 .495 5.81 13.3 13.3 0 0 1-2.46 5.127c-.129.214 1.47.889 2.477 3.683.932 2.554.103 4.699.248 4.938.026.043.034.06.034.06s1.068.085 3.213-1.24a8.05 8.05 0 0 1 4.05-1.52 1.026 1.026 0 0 1 .453 2Z" /></symbol>`,e.insertBefore(t,e.lastChild)}document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,e):e()}var ZT=Object.assign({}),QT=[];for(let e in ZT){let t=e.split(`svg/`)[1].split(`.svg`)[0];QT.push(t)}function $T(e){e.component(`svg-icon`,on)}var eE=lt(XT);eE.use($e()),eE.use($t),$T(eE),eE.mount(`#app`);export{hn as a,Zn as i,xr as n,Xn as r,Aw as t};
|