zen-gitsync 2.17.36 → 2.17.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/README.md +6 -6
  2. package/package.json +1 -1
  3. package/src/cli/ai/turn.js +3 -1
  4. package/src/config.js +7 -4
  5. package/src/ui/public/assets/{AgentEngineSelector-DVs4LGHZ.js → AgentEngineSelector-BMJAsMx_.js} +1 -1
  6. package/src/ui/public/assets/{AgentView-Blp40VRr.js → AgentView-BH5Ec4j1.js} +1 -1
  7. package/src/ui/public/assets/{AppVersionBadge-BEnoFzwh.js → AppVersionBadge-DNG70v26.js} +2 -2
  8. package/src/ui/public/assets/{BranchSelector-C7eXeFif.js → BranchSelector-DBI8ieGq.js} +1 -1
  9. package/src/ui/public/assets/{CommitForm-CK9jLJOC.js → CommitForm-BHwc5sEG.js} +1 -1
  10. package/src/ui/public/assets/{CommonDialog-BTeIpgGT.js → CommonDialog-DuI8Bsg7.js} +1 -1
  11. package/src/ui/public/assets/{EditorView-D00zvntf.js → EditorView-B3EO-mxZ.js} +1 -1
  12. package/src/ui/public/assets/{FileDiffViewer-zqgG9ok3.js → FileDiffViewer-DtGtQGLR.js} +1 -1
  13. package/src/ui/public/assets/{FlowExecutionViewer-VFnxkbIs.js → FlowExecutionViewer-sM9EwU3Q.js} +1 -1
  14. package/src/ui/public/assets/{FlowOrchestrationWorkspace-CIIdKK3v.js → FlowOrchestrationWorkspace-0Kh0IoGP.js} +1 -1
  15. package/src/ui/public/assets/{IconButton-Cgc5v9vb.js → IconButton-C07zojvw.js} +1 -1
  16. package/src/ui/public/assets/{LogList-DyQv-Yec.js → LogList-BatjYplm.js} +1 -1
  17. package/src/ui/public/assets/{MindmapView-EC2Wk_Qi.js → MindmapView-CTHfsYTC.js} +1 -1
  18. package/src/ui/public/assets/{MonitorView-Z5ZbGtaU.js → MonitorView-BblFdPFM.js} +1 -1
  19. package/src/ui/public/assets/{ProjectStartupButton-Ci19q1bL.js → ProjectStartupButton-CFQKlRoA.js} +1 -1
  20. package/src/ui/public/assets/{RecentDirectoriesChat-DT0sguEG.js → RecentDirectoriesChat-BVgA8lLY.js} +1 -1
  21. package/src/ui/public/assets/{RemoteManagerDialog-BRQpjMSK.js → RemoteManagerDialog-BxD0m5c-.js} +1 -1
  22. package/src/ui/public/assets/{RemoteRepoCard-yK90_VfS.js → RemoteRepoCard-kOIERvah.js} +1 -1
  23. package/src/ui/public/assets/{SourceMapView-C55ixUwz.js → SourceMapView-Bs3DYqDP.js} +1 -1
  24. package/src/ui/public/assets/{SvgIcon-ub85vovN.js → SvgIcon-YQZtv72i.js} +1 -1
  25. package/src/ui/public/assets/{TemplateManager-uDno_64z.js → TemplateManager-zSKmah02.js} +1 -1
  26. package/src/ui/public/assets/{UserInputNode-Ce55MMEZ.js → UserInputNode-DMCLoOUw.js} +1 -1
  27. package/src/ui/public/assets/{WorkbenchView-D1Pf6Etd.css → WorkbenchView-C_E3GV0q.css} +1 -1
  28. package/src/ui/public/assets/WorkbenchView-nHzg7gau.js +231 -0
  29. package/src/ui/public/assets/{_plugin-vue_export-helper-VuE2vqnn.js → _plugin-vue_export-helper-DcQKU19k.js} +2 -2
  30. package/src/ui/public/assets/{agentConversations-DcW54Tlt.js → agentConversations-D_TsndCC.js} +1 -1
  31. package/src/ui/public/assets/{configStore-De_8eQuS.js → configStore-u3FUM08v.js} +1 -1
  32. package/src/ui/public/assets/{gitStore-BP6TATf7.js → gitStore-ZjHYEyKS.js} +1 -1
  33. package/src/ui/public/assets/{index-Bq_-TrTP.js → index-DorcTBZN.js} +16 -16
  34. package/src/ui/public/assets/{previewSandbox-DcVlFmag.js → previewSandbox-KLKRAhm4.js} +1 -1
  35. package/src/ui/public/assets/{toolsStore-CQclze0T.js → toolsStore-CfyhqJeq.js} +1 -1
  36. package/src/ui/public/index.html +11 -11
  37. package/src/ui/server/routes/workbench/agentChat.js +1 -1
  38. package/src/ui/server/routes/workbench/orchestratorStore.js +4 -0
  39. package/src/ui/server/routes/workbench/orchestratorStore.progressReport.test.js +26 -0
  40. package/src/ui/public/assets/WorkbenchView-CtJD3pz-.js +0 -228
@@ -1,4 +1,4 @@
1
- import"./rolldown-runtime-C0FnF6B9.js";import{$n as e,At as t,Bn as n,Bt as r,C as i,Cn as a,Dn as o,Dt as s,En as c,F as l,Fr as u,G as d,Gt as f,Ht as p,I as m,In as h,J as g,Jr as _,K as v,L as y,M as b,Nn as x,Nt as S,On as C,Pn as w,Q as T,S as E,T as D,Tn as O,U as k,V as A,W as j,Wn as ee,Wt as M,Xn as te,Xr as N,Y as ne,Yn as re,Zn as P,_ as ie,a as F,at as I,bn as L,br as R,cr as z,ct as ae,dn as B,ei as V,ht as oe,i as se,j as ce,kn as H,ln as U,lr as le,lt as ue,mt as de,nn as fe,nt as pe,o as me,or as W,ot as he,pr as G,q as ge,qt as _e,st as ve,tt as ye,vn as be,vr as xe,w as Se,x as Ce,xn as K,z as q,zt as we}from"./element-plus-Buzx8xRf.js";import{b as Te}from"./vendor-wERX2bc3.js";import{n as J,t as Y}from"./_plugin-vue_export-helper-VuE2vqnn.js";import{t as Ee}from"./SvgIcon-ub85vovN.js";import{t as De}from"./IconButton-Cgc5v9vb.js";import{r as Oe,t as X}from"./configStore-De_8eQuS.js";import{i as ke,r as Z}from"./gitStore-BP6TATf7.js";import{t as Ae}from"./CommonDialog-BTeIpgGT.js";import{t as je}from"./TemplateManager-uDno_64z.js";import{C as Me,S as Ne,T as Q,b as Pe,w as Fe,x as Ie,y as Le}from"./index-Bq_-TrTP.js";n();var Re=h({__name:`StageButton`,props:{from:{type:String,required:!1,default:`form`}},emits:[`click`],setup(e,{expose:t,emit:n}){t();let r=n,i=Z(),a=X();function o(e){let t=e.replace(/\\/g,`/`);return a.lockedFiles.some(e=>{let n=e.replace(/\\/g,`/`);return t===n})}function s(){return a.lockedFiles.length!==0&&i.fileList.some(e=>[`modified`,`deleted`,`untracked`].includes(e.type)?o(e.path):!1)}let c=O(()=>i.fileList.filter(e=>[`modified`,`deleted`,`untracked`].includes(e.type)&&!o(e.path)).length),l=O(()=>i.fileList.some(e=>[`modified`,`deleted`,`untracked`].includes(e.type)&&!o(e.path))),u=O(()=>i.isSelectionMode&&i.hasSelectableFiles),d=O(()=>i.selectedUnstagedPaths.length),f=O(()=>i.isSelectionMode?d.value===0:!l.value),p=O(()=>u.value?`${J(`@29974:暂存所选 `)}${d.value}${J(`@29974: 个文件`)}`:l.value?s()?`${J(`@29974:暂存`)}${c.value}${J(`@29974:个未暂存文件(逐个添加)`)}`:`${J(`@29974:暂存所有更改(git add .)`)}`:J(`@29974:没有需要暂存的更改`));async function m(){r(`click`);try{if(u.value){await i.stageFiles(i.selectedUnstagedPaths);return}if(i.isSelectionMode)return;s()?await i.addToStage():await i.addAllToStage()}catch(e){console.error(`添加文件失败:`,e)}}let h={emit:r,gitStore:i,configStore:a,isFileLocked:o,hasLockedFileMatches:s,unstagedFilesCount:c,hasUnstagedChanges:l,isSelectiveStage:u,selectedStageCount:d,isDisabled:f,tooltipText:p,handleClick:m,get $t(){return J},get Plus(){return we}};return Object.defineProperty(h,"__isScriptSetup",{enumerable:!1,value:!0}),h}});u(),n();var ze={key:0},Be={key:1};function Ve(e,t,n,r,i,a){let s=q,c=j;return P(),o(c,{content:r.tooltipText,placement:`top`},{default:z(()=>[w(s,{type:`primary`,icon:r.Plus,onClick:r.handleClick,loading:r.gitStore.isAddingFiles,disabled:r.isDisabled,class:_([`stage-button`,`from-${n.from}`,{"is-selective":r.isSelectiveStage}])},{default:z(()=>[x(V(r.isSelectiveStage?r.$t(`@29974:暂存所选`):r.$t(`@29974:暂存`))+` `,1),r.isSelectiveStage?(P(),H(`span`,ze,`(`+V(r.selectedStageCount)+`)`,1)):r.unstagedFilesCount>0?(P(),H(`span`,Be,`(`+V(r.unstagedFilesCount)+`)`,1)):C(`v-if`,!0)]),_:1},8,[`icon`,`loading`,`disabled`,`class`])]),_:1},8,[`content`])}var He=Y(Re,[[`render`,Ve],[`__scopeId`,`data-v-d99cab92`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/buttons/StageButton.vue`]]);n();var Ue=h({__name:`CommitButton`,props:{from:{type:String,required:!1,default:`form`},hasUserCommitMessage:{type:Boolean,required:!1,default:!1},finalCommitMessage:{type:String,required:!1,default:``},skipHooks:{type:Boolean,required:!1,default:!1}},emits:[`click`,`beforeCommit`,`afterCommit`],setup(e,{expose:n,emit:r}){n();let i=e,a=r,o=Z(),s=X(),c=O(()=>o.fileList.filter(e=>e.type===`added`&&!Q(e.path,s.lockedFiles)).length),l=O(()=>c.value>0),u=O(()=>o.hasConflictedFiles||o.isCommiting?!0:o.isMergeInProgress?!i.hasUserCommitMessage:!l.value||!i.hasUserCommitMessage),d=O(()=>o.isCommiting?J(`@76A11:正在提交中…`):o.hasConflictedFiles?J(`@76A11:存在冲突文件,请先解决冲突`):o.isMergeInProgress?i.hasUserCommitMessage?J(`@76A11:提交并完成合并`):J(`@76A11:请输入提交信息`):l.value?i.hasUserCommitMessage?`${J(`@76A11:提交`)}${c.value}${J(`@76A11:个已暂存文件`)}`:J(`@76A11:请输入提交信息`):J(`@76A11:没有已暂存的更改`)),f=O(()=>o.isCommiting?J(`@76A11:提交中…`):J(`@76A11:提交`));async function p(){if(i.finalCommitMessage.trim()){a(`beforeCommit`),a(`click`);try{let e=await o.commitChanges(i.finalCommitMessage,i.skipHooks);a(`afterCommit`,e)}catch(e){console.error(`提交失败:`,e),a(`afterCommit`,!1)}}}let m={props:i,emit:a,gitStore:o,configStore:s,stagedFilesCount:c,hasStagedChanges:l,isDisabled:u,tooltipText:d,buttonLabel:f,handleClick:p,get $t(){return J},get Check(){return ye},get Loading(){return t}};return Object.defineProperty(m,"__isScriptSetup",{enumerable:!1,value:!0}),m}});u(),n();var We={key:0};function Ge(e,t,n,r,i,a){let s=q,c=j;return P(),o(c,{content:r.tooltipText,placement:`top`,disabled:r.gitStore.isCommiting},{default:z(()=>[w(s,{type:`primary`,onClick:r.handleClick,icon:r.gitStore.isCommiting?r.Loading:r.Check,loading:r.gitStore.isCommiting,disabled:r.isDisabled,"aria-busy":r.gitStore.isCommiting?`true`:void 0,"aria-label":r.gitStore.isCommiting?r.$t(`@76A11:正在提交中…`):void 0,class:_([`commit-button`,`from-${n.from}`,{"is-committing":r.gitStore.isCommiting}])},{default:z(()=>[x(V(r.buttonLabel)+` `,1),r.stagedFilesCount>0&&!r.gitStore.isCommiting?(P(),H(`span`,We,`(`+V(r.stagedFilesCount)+`)`,1)):C(`v-if`,!0)]),_:1},8,[`icon`,`loading`,`disabled`,`aria-busy`,`aria-label`,`class`])]),_:1},8,[`content`,`disabled`])}var Ke=Y(Ue,[[`render`,Ge],[`__scopeId`,`data-v-100f6d49`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/buttons/CommitButton.vue`]]);n(),G();var qe=h({__name:`PushProgressModal`,props:{modelValue:{type:Boolean,required:!0}},emits:[`update:modelValue`,`complete`,`pull-requested`],setup(e,{expose:n,emit:r}){let{t:i}=Te(),a=e,o=r,s=X(),c=Z(),l=R(`progress`),u=R([]),d=R(``),f=R(!1),p=O(()=>d.value.includes(`non-fast-forward`)||d.value.includes(`rejected`)&&d.value.includes(`fetch first`)),m=R(!1);async function h(){m.value=!0;try{(await c.gitPull()).success&&(b.value=!1,o(`pull-requested`))}finally{m.value=!1}}let _=xe([{name:`counting`,label:i(`@PUSH:计数对象`),status:`wait`,percent:0},{name:`compressing`,label:i(`@PUSH:压缩对象`),status:`wait`,percent:0},{name:`writing`,label:i(`@PUSH:写入对象`),status:`wait`,percent:0},{name:`resolving`,label:i(`@PUSH:解析增量`),status:`wait`,percent:0}]),v=R(0),y=R(null),b=O({get:()=>a.modelValue,set:e=>o(`update:modelValue`,e)}),x=O(()=>{if(f.value)return i(`@PUSH:正在拉取远程更新`);switch(l.value){case`progress`:return i(`@PUSH:正在推送`);case`success`:return i(`@PUSH:推送成功`);case`error`:return i(`@PUSH:推送失败`);default:return``}});function S(e){switch(e.type){case`progress`:e.message&&(u.value.push(e.message),setTimeout(()=>{y.value&&(y.value.scrollTop=y.value.scrollHeight)},0));break;case`stage-progress`:if(e.stage&&typeof e.percent==`number`){let t=_.findIndex(t=>t.name===e.stage);t!==-1&&(_[t].percent=e.percent,_[t].status=e.percent===100?`finish`:`process`,v.value=t,e.percent===100&&t<_.length-1&&(_[t+1].status=`wait`))}break;case`complete`:e.success?(l.value=`success`,_.forEach(e=>{(e.status===`process`||e.status===`wait`)&&(e.status=`finish`,e.percent=100)}),v.value=-1,s.autoClosePushModal?setTimeout(()=>{b.value=!1,o(`complete`,!0)},2e3):o(`complete`,!0)):(l.value=`error`,d.value=ke(e),v.value<_.length&&(_[v.value].status=`error`),v.value=-1,o(`complete`,!1))}}function C(){l.value=`progress`,u.value=[],d.value=``,v.value=0,f.value=!1,_.forEach(e=>{e.status=`wait`,e.percent=0})}function w(e){f.value=e}n({handleProgress:S,reset:C,setPulling:w});let T={t:i,props:a,emit:o,configStore:s,gitStore:c,status:l,messages:u,errorMessage:d,isPullingRemote:f,isNonFastForwardError:p,isPulling:m,handlePullAndRetry:h,stages:_,activeStep:v,messagesContainerRef:y,visible:b,statusText:x,handleProgress:S,reset:C,setPulling:w,get ElProgress(){return ie},get ElIcon(){return g},get Close(){return he},get Loading(){return t},get CircleCheck(){return pe},get Download(){return de},CommonDialog:Ae};return Object.defineProperty(T,"__isScriptSetup",{enumerable:!1,value:!0}),T}});n(),u();var Je={class:`push-progress-container`},Ye={key:0,class:`pulling-section`},Xe={class:`pulling-text-wrap`},Ze={class:`pulling-title`},Qe={class:`pulling-sub`},$e={class:`stage-header`},et={class:`stage-icon`},tt={class:`stage-info`},nt={class:`stage-label`},rt={key:0,class:`stage-percent`},it={key:0,class:`stage-progress`},at={key:2,class:`error-section`},ot={class:`error-header`},st={class:`error-title`},ct={class:`error-content`},lt={key:0,class:`error-suggestion`},ut={key:3,class:`messages-section`},dt={class:`messages-title`},ft={ref:`messagesContainerRef`,class:`progress-messages`};function pt(t,n,r,i,a,s){let l=q;return P(),o(i.CommonDialog,{modelValue:i.visible,"onUpdate:modelValue":n[0]||=e=>i.visible=e,title:i.statusText,width:`650px`,type:`flex`,"close-on-click-modal":!1,"close-on-press-escape":!1,"show-close":i.status!==`progress`,"append-to-body":!0,"lock-scroll":!1,"destroy-on-close":``,"custom-class":`push-progress-dialog status-${i.status}`},{default:z(()=>[c(`div`,Je,[C(` 拉取中提示 `),i.isPullingRemote?(P(),H(`div`,Ye,[n[1]||=c(`div`,{class:`pulling-icon-wrap`},[c(`svg`,{class:`pulling-spinner`,viewBox:`0 0 50 50`},[c(`circle`,{class:`pulling-spinner-track`,cx:`25`,cy:`25`,r:`20`,fill:`none`,"stroke-width":`4`}),c(`circle`,{class:`pulling-spinner-arc`,cx:`25`,cy:`25`,r:`20`,fill:`none`,"stroke-width":`4`})])],-1),c(`div`,Xe,[c(`div`,Ze,V(i.t(`@PUSH:正在拉取远程更新`)),1),c(`div`,Qe,V(i.t(`@PUSH:拉取完成后自动继续推送`)),1)])])):(P(),H(K,{key:1},[C(` 推送阶段(2x2网格) `),c(`div`,{class:_([`stages-section`,{"is-loading":i.status===`progress`,"is-success":i.status===`success`}])},[(P(!0),H(K,null,e(i.stages,(e,t)=>(P(),H(`div`,{key:e.name,class:_([`stage-item`,{active:i.activeStep===t,finished:e.status===`finish`,error:e.status===`error`}])},[c(`div`,$e,[c(`div`,et,[e.status===`finish`?(P(),o(i.ElIcon,{key:0,class:`icon-finish`},{default:z(()=>[w(i.CircleCheck)]),_:1})):e.status===`error`?(P(),o(i.ElIcon,{key:1,class:`icon-error`},{default:z(()=>[w(i.Close)]),_:1})):e.status===`process`?(P(),o(i.ElIcon,{key:2,class:`icon-process rotating`},{default:z(()=>[w(i.Loading)]),_:1})):(P(),o(i.ElIcon,{key:3,class:`icon-wait`},{default:z(()=>[w(i.Loading)]),_:1}))]),c(`div`,tt,[c(`div`,nt,V(e.label),1),e.status===`process`||e.status===`finish`?(P(),H(`div`,rt,V(e.percent)+`% `,1)):C(`v-if`,!0)])]),e.status===`process`||e.status===`finish`?(P(),H(`div`,it,[w(i.ElProgress,{percentage:e.percent,"stroke-width":6,"show-text":!1,color:e.status===`finish`?`var(--color-success)`:`var(--color-primary)`},null,8,[`percentage`,`color`])])):C(`v-if`,!0)],2))),128))],2)],2112)),C(` 错误信息 `),i.status===`error`&&i.errorMessage?(P(),H(`div`,at,[c(`div`,ot,[c(`div`,st,V(i.t(`@PUSH:错误详情`))+`:`,1),i.isNonFastForwardError?(P(),o(l,{key:0,type:`primary`,size:`small`,loading:i.isPulling,onClick:i.handlePullAndRetry,class:`pull-button`},{default:z(()=>[w(i.ElIcon,null,{default:z(()=>[w(i.Download)]),_:1}),x(` `+V(i.t(`@PUSH:先拉取更新`)),1)]),_:1},8,[`loading`])):C(`v-if`,!0)]),c(`div`,ct,V(i.errorMessage),1),i.isNonFastForwardError?(P(),H(`div`,lt,V(i.t(`@PUSH:检测到远程有新提交,请先拉取更新后再推送。`)),1)):C(`v-if`,!0)])):C(`v-if`,!0),C(` 进度消息 `),i.messages.length>0?(P(),H(`div`,ut,[c(`div`,dt,V(i.t(`@PUSH:详细信息`))+`:`,1),c(`div`,ft,[(P(!0),H(K,null,e(i.messages,(e,t)=>(P(),H(`div`,{key:t,class:`message-item`},V(e),1))),128))],512)])):C(`v-if`,!0)])]),_:1},8,[`modelValue`,`title`,`show-close`,`custom-class`])}var mt=Y(qe,[[`render`,pt],[`__scopeId`,`data-v-0e0be0c3`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/PushProgressModal.vue`]]);n(),G();var ht=h({__name:`PushButton`,props:{from:{type:String,required:!1,default:`form`}},emits:[`click`,`beforePush`,`afterPush`],setup(e,{expose:t,emit:n}){t();let r=n,i=Z(),a=R(!1),o=R(null),s=O(()=>i.branchAhead>0),c=O(()=>i.fileList.some(e=>e.type===`added`)),l=O(()=>!i.hasConflictedFiles&&i.hasUpstream&&s.value&&!c.value),u=O(()=>!l.value),d=O(()=>i.hasConflictedFiles?J(`@F4137:存在冲突文件,请先解决冲突`):i.hasUpstream?s.value?c.value?J(`@F4137:有未提交的暂存更改,请先提交`):`${J(`@F4137:推送`)}${i.branchAhead}${J(`@F4137:个本地提交`)}`:J(`@F4137:没有需要推送的提交`):J(`@F4137:当前分支没有上游分支`)),f=O(()=>l.value?{backgroundColor:`var(--tint-success-14)`,borderColor:`var(--color-success)`,color:`var(--text-primary)`}:{});async function p(){r(`beforePush`),r(`click`);try{a.value=!0,o.value&&o.value.reset();let e=await i.pushToRemoteWithProgress(e=>{o.value&&o.value.handleProgress(e)});e&&await new Promise(e=>setTimeout(e,200)),r(`afterPush`,e)}catch(e){console.error(`推送失败:`,e),r(`afterPush`,!1)}}function m(e){}let h=O(()=>[...i.remotes].sort((e,t)=>e.isUpstream===t.isUpstream?e.name.localeCompare(t.name):e.isUpstream?-1:1));async function g(e){if(e===`manage`){i.isRemoteManagerVisible=!0;return}if(e===`push-all`){await i.pushAllRemotes();return}if(!e.startsWith(`push:`))return;let t=e.slice(5);r(`beforePush`);try{a.value=!0,o.value?.reset();let e=await i.pushToRemoteWithProgress(e=>{o.value?.handleProgress(e)},t);r(`afterPush`,e)}catch(e){console.error(`推送失败:`,e),r(`afterPush`,!1)}}let _={emit:r,gitStore:i,progressModalVisible:a,progressModalRef:o,needsPush:s,hasStagedChanges:c,canPush:l,isDisabled:u,tooltipText:d,buttonStyle:f,handleClick:p,handleProgressComplete:m,sortedRemotes:h,handleDropdownCommand:g,get $t(){return J},get Upload(){return fe},get ArrowDown(){return ne},PushProgressModal:mt};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}});u(),n();var gt={class:`push-button-group`},_t={key:0},vt={class:`push-remote-item`};function yt(t,n,r,a,s,l){let u=q,d=j,f=y,p=i,m=Se,h=E;return P(),H(`div`,null,[c(`div`,gt,[w(d,{content:a.tooltipText,placement:`top`},{default:z(()=>[w(u,{type:`primary`,icon:a.Upload,onClick:a.handleClick,loading:a.gitStore.isPushing,disabled:a.isDisabled,style:N(a.buttonStyle),class:_([`push-button`,`from-${r.from}`])},{default:z(()=>[x(V(a.$t(`@F4137:推送`))+` `,1),a.needsPush?(P(),H(`span`,_t,`(`+V(a.gitStore.branchAhead)+`)`,1)):C(`v-if`,!0)]),_:1},8,[`icon`,`loading`,`disabled`,`style`,`class`])]),_:1},8,[`content`]),C(` 多远程下拉:仅在配置了多个远程时出现,单远程外观与历史完全一致 `),a.gitStore.hasMultipleRemotes?(P(),o(h,{key:0,trigger:`click`,placement:`top-end`,onCommand:a.handleDropdownCommand},{dropdown:z(()=>[w(m,null,{default:z(()=>[(P(!0),H(K,null,e(a.sortedRemotes,e=>(P(),o(p,{key:e.name,command:`push:${e.name}`},{default:z(()=>[c(`span`,vt,[c(`span`,null,V(a.$t(`@F4137:推送到`))+` `+V(e.name),1),e.isUpstream?(P(),o(f,{key:0,size:`small`,type:`success`,effect:`plain`},{default:z(()=>[x(V(a.$t(`@F4137:上游`)),1)]),_:1})):C(`v-if`,!0)])]),_:2},1032,[`command`]))),128)),w(p,{divided:``,command:`push-all`},{default:z(()=>[x(V(a.$t(`@F4137:推送到全部远程`)),1)]),_:1}),w(p,{divided:``,command:`manage`},{default:z(()=>[x(V(a.$t(`@F4137:管理远程…`)),1)]),_:1})]),_:1})]),default:z(()=>[w(u,{type:`primary`,icon:a.ArrowDown,style:N(a.buttonStyle),class:_([`push-button__caret`,`from-${r.from}`]),"aria-label":a.$t(`@F4137:更多推送选项`)},null,8,[`icon`,`style`,`class`,`aria-label`])]),_:1})):C(`v-if`,!0)]),C(` 推送进度弹窗 `),w(a.PushProgressModal,{ref:`progressModalRef`,modelValue:a.progressModalVisible,"onUpdate:modelValue":n[0]||=e=>a.progressModalVisible=e,onComplete:a.handleProgressComplete},null,8,[`modelValue`])])}var bt=Y(ht,[[`render`,yt],[`__scopeId`,`data-v-bcb696bd`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/buttons/PushButton.vue`]]);n(),G();var xt=h({__name:`QuickPushButton`,props:{from:{type:String,required:!1,default:`form`},hasUserCommitMessage:{type:Boolean,required:!1,default:!1},finalCommitMessage:{type:String,required:!1,default:``},skipHooks:{type:Boolean,required:!1,default:!1}},emits:[`beforePush`,`pushStart`,`afterPush`,`clearFields`],setup(e,{expose:t,emit:n}){let i=Z(),a=X(),o=R(!1),s=R(null),c=e,l=n,u=O(()=>i.fileList.some(e=>!Q(e.path,a.lockedFiles))),d=O(()=>i.isSelectionMode&&i.selectedFiles.size>0&&i.selectedUnstagedPaths.length>0),f=O(()=>!i.isSelectionMode&&!u.value&&i.branchAhead>0),p=O(()=>i.hasConflictedFiles||!i.hasUpstream?!0:i.isSelectionMode?!d.value||!c.hasUserCommitMessage:f.value?!1:!u.value||!c.hasUserCommitMessage),m=O(()=>i.isAddingFiles||i.isCommiting||i.isPushing),h=O(()=>i.hasConflictedFiles?J(`@2E184:存在冲突文件,请先解决冲突`):i.hasUpstream?i.isSelectionMode?i.selectedFiles.size===0?J(`@2E184:请先勾选要推送的文件`):i.selectedUnstagedPaths.length===0?J(`@2E184:所选文件无需暂存或被锁定`):c.hasUserCommitMessage?J(`@2E184:一键完成:仅暂存所选文件 → 提交 → 推送到远程仓库`):J(`@2E184:请输入提交信息`):!u.value&&i.branchAhead===0?J(`@2E184:没有需要提交或推送的更改`):f.value?J(`@2E184:本地已提交,一键推送到远程仓库`):c.hasUserCommitMessage?J(`@2E184:一键完成:暂存所有更改 → 提交 → 推送到远程仓库`):J(`@2E184:请输入提交信息`):J(`@2E184:当前分支没有上游分支`)),g=O(()=>i.isSelectionMode&&d.value?J(`@2E184:一键推送所选`):J(`@2E184:一键推送所有`)),_=O(()=>c.from===`form`?f.value?J(`@2E184:推送到远程仓库`):i.isSelectionMode&&d.value?J(`@2E184:暂存所选 + 提交 + 推送`):J(`@2E184:暂存 + 提交 + 推送`):``);async function v(){l(`beforePush`);try{let e=i.isSelectionMode&&d.value;if((e||u.value)&&!(e?await i.stageSelectedAndCommit(c.finalCommitMessage,c.skipHooks):await i.addAndCommit(c.finalCommitMessage,c.skipHooks))){l(`afterPush`,!1);return}if(l(`pushStart`),o.value=!0,a.pullBeforePush){s.value?.setPulling(!0);let e=await i.gitPull();if(s.value?.setPulling(!1),!e.success){F.error(J(`@2E184:拉取远程更新失败,已停止推送`)),o.value=!1,i.fetchStatus(),i.getBranchStatus(!0),l(`afterPush`,!1);return}}s.value&&s.value.reset();let t=await i.pushToRemoteWithProgress(e=>{s.value&&s.value.handleProgress(e)});if(t){try{window.dispatchEvent(new CustomEvent(`zen-gitsync:after-quick-push-success`))}catch{}l(`clearFields`)}l(`afterPush`,t)}catch(e){console.error(`一键推送失败:`,e),l(`afterPush`,!1)}}t({triggerQuickPush:v});function y(e){}let b={gitStore:i,configStore:a,progressModalVisible:o,progressModalRef:s,props:c,emit:l,hasAnyChanges:u,hasSelectedToStage:d,isPushOnly:f,isDisabled:p,isLoading:m,tooltipText:h,buttonTitle:g,buttonDesc:_,handleQuickPush:v,handleProgressComplete:y,get ElTooltip(){return j},get Position(){return r},PushProgressModal:mt};return Object.defineProperty(b,"__isScriptSetup",{enumerable:!1,value:!0}),b}});n(),u();var St={class:`one-push-content`},Ct={class:`one-push-text`},wt={class:`one-push-title`},Tt={key:0,class:`one-push-desc`};function Et(e,t,n,r,i,a){let o=g,s=q;return P(),H(`div`,null,[w(r.ElTooltip,{content:r.tooltipText,placement:`top`,"show-after":200},{default:z(()=>[w(s,{type:`primary`,onClick:r.handleQuickPush,loading:r.isLoading,disabled:r.isDisabled,class:_([n.from,`one-push-button`])},{default:z(()=>[c(`div`,St,[w(o,{class:`one-push-icon`},{default:z(()=>[w(r.Position)]),_:1}),c(`div`,Ct,[c(`span`,wt,V(r.buttonTitle),1),n.from===`form`?(P(),H(`span`,Tt,V(r.buttonDesc),1)):C(`v-if`,!0)])])]),_:1},8,[`loading`,`disabled`,`class`])]),_:1},8,[`content`]),C(` 推送进度弹窗 `),w(r.PushProgressModal,{ref:`progressModalRef`,modelValue:r.progressModalVisible,"onUpdate:modelValue":t[0]||=e=>r.progressModalVisible=e,onComplete:r.handleProgressComplete,onPullRequested:r.handleQuickPush},null,8,[`modelValue`])])}var Dt=Y(xt,[[`render`,Et],[`__scopeId`,`data-v-1a7fa402`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/buttons/QuickPushButton.vue`]]);n(),G();var Ot=h({__name:`CreateTagButton`,props:{variant:{type:String,required:!1,default:`icon`}},setup(e,{expose:t}){t();let n=e,r=Z(),i=R(!1),a=R(``),o=R(``),c=R(`lightweight`),l=R(``),u=R(!1);function d(){a.value=``,o.value=``,c.value=`lightweight`,l.value=``,i.value=!0}async function f(){if(!a.value.trim()){F.warning(J(`@TAG01:请输入标签名称`));return}if(!/^[a-zA-Z0-9._\/-]+$/.test(a.value)){F.warning(J(`@TAG01:标签名称只能包含字母、数字、点、下划线、斜杠和连字符`));return}try{u.value=!0;let e=await(await fetch(`/api/create-tag`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({tagName:a.value.trim(),message:o.value.trim(),type:c.value,commit:l.value.trim()})})).json();e.success?(F.success(J(`@TAG01:标签创建成功`)),i.value=!1):F.error(e.error||J(`@TAG01:创建标签失败`))}catch(e){console.error(`创建标签失败:`,e),F.error(J(`@TAG01:创建标签失败`))}finally{u.value=!1}}let p={props:n,gitStore:r,isTagDialogVisible:i,tagName:a,tagMessage:o,tagType:c,targetCommit:l,isCreating:u,openTagDialog:d,createTag:f,tagTypeDescription:O(()=>c.value===`lightweight`?J(`@TAG01:轻量标签是指向提交对象的引用,不包含额外信息`):J(`@TAG01:附注标签是完整的Git对象,包含标签信息、日期、标签者和可选的签名`)),get $t(){return J},get Sell(){return _e},get InfoFilled(){return s},CommonDialog:Ae};return Object.defineProperty(p,"__isScriptSetup",{enumerable:!1,value:!0}),p}});n(),u();var kt={class:`create-tag-button`},At={class:`tag-dialog-content`},jt={class:`tag-info-card`},Mt={class:`info-icon`},Nt={class:`info-content`},Pt={class:`form-tip`},Ft={class:`form-tip`},It={class:`form-tip`};function Lt(e,t,n,r,i,a){let s=g,l=q,u=j,f=k,p=v,m=ce,h=b,y=d;return P(),H(`div`,kt,[C(` 创建标签按钮 `),w(u,{content:r.$t(`@TAG01:为当前提交创建标签`),placement:`top`,"show-after":200,disabled:r.props.variant===`text`},{default:z(()=>[w(l,{type:`success`,onClick:r.openTagDialog,disabled:!r.gitStore.isGitRepo,circle:r.props.variant===`icon`,size:r.props.variant===`icon`?`small`:`default`,class:_(r.props.variant===`text`?`action-button`:``)},{default:z(()=>[r.props.variant===`icon`?(P(),o(s,{key:0},{default:z(()=>[w(r.Sell)]),_:1})):(P(),H(K,{key:1},[x(V(r.$t(`@TAG01:创建标签`)),1)],64))]),_:1},8,[`disabled`,`circle`,`size`,`class`])]),_:1},8,[`content`,`disabled`]),C(` 创建标签弹窗 `),w(r.CommonDialog,{modelValue:r.isTagDialogVisible,"onUpdate:modelValue":t[4]||=e=>r.isTagDialogVisible=e,title:r.$t(`@TAG01:创建 Git 标签`),size:`medium`,"close-on-click-modal":!1,"show-footer":``,"confirm-text":r.$t(`@TAG01:创建`),"cancel-text":r.$t(`@TAG01:取消`),"confirm-loading":r.isCreating,"custom-class":`tag-dialog`,onConfirm:r.createTag},{default:z(()=>[c(`div`,At,[C(` 功能说明卡片 `),c(`div`,jt,[c(`div`,Mt,[w(s,null,{default:z(()=>[w(r.Sell)]),_:1})]),c(`div`,Nt,[c(`h4`,null,V(r.$t(`@TAG01:Git 标签`)),1),c(`p`,null,V(r.$t(`@TAG01:标签用于标记项目的重要版本点,如发布版本 v1.0.0`)),1)])]),w(y,{"label-position":`top`,class:`tag-form`},{default:z(()=>[C(` 标签名称 `),w(p,{label:r.$t(`@TAG01:标签名称`),required:``},{default:z(()=>[w(f,{modelValue:r.tagName,"onUpdate:modelValue":t[0]||=e=>r.tagName=e,placeholder:r.$t(`@TAG01:例如: v1.0.0 或 release-2024`),clearable:``,maxlength:`100`},{prefix:z(()=>[w(s,null,{default:z(()=>[w(r.Sell)]),_:1})]),_:1},8,[`modelValue`,`placeholder`]),c(`div`,Pt,[w(s,null,{default:z(()=>[w(r.InfoFilled)]),_:1}),c(`span`,null,V(r.$t(`@TAG01:建议使用语义化版本号,如 v1.0.0`)),1)])]),_:1},8,[`label`]),C(` 标签类型 `),w(p,{label:r.$t(`@TAG01:标签类型`)},{default:z(()=>[w(h,{modelValue:r.tagType,"onUpdate:modelValue":t[1]||=e=>r.tagType=e,size:`default`},{default:z(()=>[w(m,{value:`lightweight`},{default:z(()=>[x(V(r.$t(`@TAG01:轻量标签`)),1)]),_:1}),w(m,{value:`annotated`},{default:z(()=>[x(V(r.$t(`@TAG01:附注标签`)),1)]),_:1})]),_:1},8,[`modelValue`]),c(`div`,Ft,[w(s,null,{default:z(()=>[w(r.InfoFilled)]),_:1}),c(`span`,null,V(r.tagTypeDescription),1)])]),_:1},8,[`label`]),C(` 标签说明(仅附注标签) `),r.tagType===`annotated`?(P(),o(p,{key:0,label:r.$t(`@TAG01:标签说明`),required:r.tagType===`annotated`},{default:z(()=>[w(f,{modelValue:r.tagMessage,"onUpdate:modelValue":t[2]||=e=>r.tagMessage=e,placeholder:r.$t(`@TAG01:为此标签添加说明信息`),clearable:``,rows:3,type:`textarea`,resize:`none`,maxlength:`500`,"show-word-limit":``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`,`required`])):C(`v-if`,!0),C(` 目标提交(可选) `),w(p,{label:r.$t(`@TAG01:目标提交(可选)`)},{default:z(()=>[w(f,{modelValue:r.targetCommit,"onUpdate:modelValue":t[3]||=e=>r.targetCommit=e,placeholder:r.$t(`@TAG01:留空则为当前HEAD,或输入commit SHA`),clearable:``,maxlength:`40`},{prefix:z(()=>[...t[5]||=[c(`span`,{class:`commit-prefix`},`commit:`,-1)]]),_:1},8,[`modelValue`,`placeholder`]),c(`div`,It,[w(s,null,{default:z(()=>[w(r.InfoFilled)]),_:1}),c(`span`,null,V(r.$t(`@TAG01:默认为当前HEAD提交,也可以指定历史提交`)),1)])]),_:1},8,[`label`])]),_:1})])]),_:1},8,[`modelValue`,`title`,`confirm-text`,`cancel-text`,`confirm-loading`])])}var Rt=Y(Ot,[[`render`,Lt],[`__scopeId`,`data-v-fd2d5a18`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/buttons/CreateTagButton.vue`]]);n(),G();var zt=h({__name:`TagListButton`,props:{variant:{type:String,required:!1,default:`icon`}},setup(e,{expose:t}){t();let n=e,r=Z(),i=R(!1),a=R([]),o=R(!1),c=R(!1),l=R(!1),u=R(!1),d=R(null);async function f(){i.value=!0,await m()}async function m(){try{o.value=!0;let e=await(await fetch(`/api/list-tags`)).json();e.success?a.value=e.tags||[]:F.error(e.error||J(`@TAG01:获取标签列表失败`))}catch(e){console.error(`获取标签列表失败:`,e),F.error(J(`@TAG01:获取标签列表失败`))}finally{o.value=!1}}function h(e){d.value=e,u.value=!0}async function g(e){se.confirm(J(`@TAG01:确定要推送此标签到远程仓库吗?`),J(`@TAG01:推送标签`),{confirmButtonText:J(`@TAG01:推送`),cancelButtonText:J(`@TAG01:取消`),type:`info`}).then(async()=>{try{l.value=!0;let t=await(await fetch(`/api/push-tag`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({tagName:e})})).json();t.success?F.success(J(`@TAG01:标签推送成功`)):F.error(t.error||J(`@TAG01:推送标签失败`))}catch(e){console.error(`推送标签失败:`,e),F.error(J(`@TAG01:推送标签失败`))}finally{l.value=!1}}).catch(()=>{})}async function _(){se.confirm(J(`@TAG01:确定要推送所有标签到远程仓库吗?`),J(`@TAG01:推送所有标签`),{confirmButtonText:J(`@TAG01:推送`),cancelButtonText:J(`@TAG01:取消`),type:`info`}).then(async()=>{try{l.value=!0;let e=await(await fetch(`/api/push-all-tags`,{method:`POST`})).json();e.success?F.success(J(`@TAG01:所有标签推送成功`)):F.error(e.error||J(`@TAG01:推送标签失败`))}catch(e){console.error(`推送标签失败:`,e),F.error(J(`@TAG01:推送标签失败`))}finally{l.value=!1}}).catch(()=>{})}async function v(e){se.confirm(J(`@TAG01:确定要删除此标签吗?此操作不可恢复。`),J(`@TAG01:删除标签`),{confirmButtonText:J(`@TAG01:删除`),cancelButtonText:J(`@TAG01:取消`),type:`warning`}).then(async()=>{await y(e)}).catch(()=>{})}async function y(e){try{c.value=!0;let t=await(await fetch(`/api/delete-tag`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({tagName:e})})).json();t.success?(F.success(J(`@TAG01:标签删除成功`)),await m()):F.error(t.error||J(`@TAG01:删除标签失败`))}catch(e){console.error(`删除标签失败:`,e),F.error(J(`@TAG01:删除标签失败`))}finally{c.value=!1}}function b(e){if(!e)return`-`;try{return new Date(e).toLocaleString(`zh-CN`,{year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`})}catch{return e}}let x={props:n,gitStore:r,isTagListDialogVisible:i,tags:a,isLoadingTags:o,isDeletingTag:c,isPushingTag:l,tagDetailVisible:u,selectedTag:d,openTagListDialog:f,loadTags:m,viewTagDetail:h,pushTag:g,pushAllTags:_,confirmDeleteTag:v,deleteTag:y,formatDate:b,get $t(){return J},get Sell(){return _e},get Delete(){return ue},get Upload(){return fe},get InfoFilled(){return s},get Refresh(){return p},CommonDialog:Ae};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}});n(),u();var Bt={class:`tag-list-button`},Vt={class:`tag-list-content`},Ht={key:0,class:`tag-header`},Ut={class:`tag-stats`},Wt={class:`stat-item`},Gt={class:`stat-number`},Kt={class:`stat-label`},qt={class:`tag-actions-header`},Jt={class:`tag-list-container`},Yt={key:0,class:`empty-state`},Xt={class:`empty-text`},Zt={class:`empty-hint`},Qt={key:1,class:`tag-cards`},$t={class:`tag-card-content`},en={class:`tag-info`},tn={class:`tag-main-info`},nn={class:`tag-name-badge`},rn={class:`tag-name-text`},an={class:`tag-meta`},on={class:`tag-commit`},sn={class:`tag-date`},cn={key:0,class:`tag-message`},ln={class:`tag-card-actions`},un={key:0,class:`tag-detail-content`},dn={class:`detail-row`},fn={class:`detail-label`},pn={class:`detail-value`},mn={class:`detail-row`},hn={class:`detail-label`},gn={class:`detail-value`},_n={class:`detail-row`},vn={class:`detail-label`},yn={class:`detail-value`},bn={class:`detail-row`},xn={class:`detail-label`},Sn={key:0,class:`detail-row detail-message`},Cn={class:`detail-label`},wn={class:`message-content`};function Tn(t,n,r,i,a,s){let l=g,u=q,d=j,f=Ce,p=y,m=me;return P(),H(`div`,Bt,[C(` 标签列表按钮 `),w(d,{content:i.$t(`@TAG01:查看和管理所有标签`),placement:`top`,"show-after":200,disabled:i.props.variant===`text`},{default:z(()=>[w(u,{type:`info`,onClick:i.openTagListDialog,disabled:!i.gitStore.isGitRepo,circle:i.props.variant===`icon`,size:i.props.variant===`icon`?`small`:`default`,class:_(i.props.variant===`text`?`action-button`:``)},{default:z(()=>[i.props.variant===`icon`?(P(),o(l,{key:0},{default:z(()=>[w(i.Sell)]),_:1})):(P(),H(K,{key:1},[x(V(i.$t(`@TAG01:标签列表`)),1)],64))]),_:1},8,[`disabled`,`circle`,`size`,`class`])]),_:1},8,[`content`,`disabled`]),C(` 标签列表弹窗 `),w(i.CommonDialog,{modelValue:i.isTagListDialogVisible,"onUpdate:modelValue":n[0]||=e=>i.isTagListDialogVisible=e,title:i.$t(`@TAG01:Git 标签列表`),size:`large`,"show-footer":!1,"custom-class":`tag-list-dialog`},{default:z(()=>[c(`div`,Vt,[C(` 头部统计信息 `),i.isLoadingTags?C(`v-if`,!0):(P(),H(`div`,Ht,[c(`div`,Ut,[c(`div`,Wt,[w(l,{class:`stat-icon`},{default:z(()=>[w(i.Sell)]),_:1}),c(`span`,Gt,V(i.tags.length),1),c(`span`,Kt,V(i.$t(`@TAG01:个标签`)),1)])]),c(`div`,qt,[w(u,{type:`primary`,size:`small`,icon:i.Refresh,onClick:i.loadTags,loading:i.isLoadingTags,class:`refresh-btn`},{default:z(()=>[x(V(i.$t(`@TAG01:刷新`)),1)]),_:1},8,[`icon`,`loading`]),i.tags.length>0?(P(),o(u,{key:0,type:`success`,size:`small`,icon:i.Upload,onClick:i.pushAllTags,loading:i.isPushingTag,class:`push-all-btn`},{default:z(()=>[x(V(i.$t(`@TAG01:推送所有标签`)),1)]),_:1},8,[`icon`,`loading`])):C(`v-if`,!0)])])),C(` 标签列表 `),le((P(),H(`div`,Jt,[i.tags.length===0&&!i.isLoadingTags?(P(),H(`div`,Yt,[w(f,{description:i.$t(`@TAG01:暂无标签`),"image-size":120},{image:z(()=>[w(l,{class:`empty-icon`},{default:z(()=>[w(i.Sell)]),_:1})]),description:z(()=>[c(`p`,Xt,V(i.$t(`@TAG01:还没有创建任何标签`)),1),c(`p`,Zt,V(i.$t(`@TAG01:使用创建标签功能为项目添加版本标记`)),1)]),_:1},8,[`description`])])):(P(),H(`div`,Qt,[(P(!0),H(K,null,e(i.tags,e=>(P(),H(`div`,{key:e.name,class:`tag-card`},[c(`div`,$t,[c(`div`,en,[c(`div`,tn,[c(`div`,nn,[w(l,{class:`badge-icon`},{default:z(()=>[w(i.Sell)]),_:1}),c(`span`,rn,V(e.name),1),w(p,{size:`small`,type:e.type===`annotated`?`warning`:`info`,class:`type-tag`},{default:z(()=>[x(V(e.type===`annotated`?i.$t(`@TAG01:附注`):i.$t(`@TAG01:轻量`)),1)]),_:2},1032,[`type`])]),c(`div`,an,[c(`span`,on,[w(l,null,{default:z(()=>[w(i.InfoFilled)]),_:1}),x(` `+V(e.commit.substring(0,8)),1)]),c(`span`,sn,V(i.formatDate(e.date)),1)]),e.message?(P(),H(`div`,cn,V(e.message),1)):C(`v-if`,!0)])]),c(`div`,ln,[e.message?(P(),o(u,{key:0,size:`small`,type:`info`,onClick:t=>i.viewTagDetail(e),class:`action-btn view-btn`},{default:z(()=>[x(V(i.$t(`@TAG01:查看`)),1)]),_:1},8,[`onClick`])):C(`v-if`,!0),w(u,{size:`small`,type:`success`,icon:i.Upload,onClick:t=>i.pushTag(e.name),loading:i.isPushingTag,class:`action-btn push-btn`},{default:z(()=>[x(V(i.$t(`@TAG01:推送`)),1)]),_:1},8,[`icon`,`onClick`,`loading`]),w(u,{size:`small`,type:`danger`,icon:i.Delete,onClick:t=>i.confirmDeleteTag(e.name),loading:i.isDeletingTag,class:`action-btn delete-btn`},{default:z(()=>[x(V(i.$t(`@TAG01:删除`)),1)]),_:1},8,[`icon`,`onClick`,`loading`])])])]))),128))]))])),[[m,i.isLoadingTags]])])]),_:1},8,[`modelValue`,`title`]),C(` 标签详情弹窗 `),w(i.CommonDialog,{modelValue:i.tagDetailVisible,"onUpdate:modelValue":n[1]||=e=>i.tagDetailVisible=e,title:i.$t(`@TAG01:标签详情`),size:`medium`,"show-footer":!1,"custom-class":`tag-detail-dialog`},{default:z(()=>[i.selectedTag?(P(),H(`div`,un,[c(`div`,dn,[c(`span`,fn,V(i.$t(`@TAG01:标签名称:`)),1),c(`code`,pn,V(i.selectedTag.name),1)]),c(`div`,mn,[c(`span`,hn,V(i.$t(`@TAG01:提交SHA:`)),1),c(`code`,gn,V(i.selectedTag.commit),1)]),c(`div`,_n,[c(`span`,vn,V(i.$t(`@TAG01:创建时间:`)),1),c(`span`,yn,V(i.formatDate(i.selectedTag.date)),1)]),c(`div`,bn,[c(`span`,xn,V(i.$t(`@TAG01:类型:`)),1),w(p,{type:i.selectedTag.type===`annotated`?`warning`:`info`,size:`small`},{default:z(()=>[x(V(i.selectedTag.type===`annotated`?i.$t(`@TAG01:附注标签`):i.$t(`@TAG01:轻量标签`)),1)]),_:1},8,[`type`])]),i.selectedTag.message?(P(),H(`div`,Sn,[c(`span`,Cn,V(i.$t(`@TAG01:标签说明:`)),1),c(`div`,wn,V(i.selectedTag.message),1)])):C(`v-if`,!0)])):C(`v-if`,!0)]),_:1},8,[`modelValue`,`title`])])}var En=Y(zt,[[`render`,Tn],[`__scopeId`,`data-v-8d9468ec`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/buttons/TagListButton.vue`]]);n(),G();var Dn=h({__name:`GitOperationsButton`,props:{variant:{type:String,required:!1,default:`icon`},hasUserCommitMessage:{type:Boolean,required:!1,default:!1},finalCommitMessage:{type:String,required:!1,default:``},skipHooks:{type:Boolean,required:!1,default:!1}},emits:[`afterCommit`,`afterPush`,`beforePush`,`clearFields`],setup(e,{expose:t,emit:n}){let r=e,i=n,a=Z(),o=R(!1),c=R(!1),l=R({needsMerge:!1,error:``,fullError:``,pullOutput:``});function u(){o.value=!0}let d=O(()=>a.fileList.filter(e=>e.type===`added`).length),f=O(()=>a.branchBehind>0),p=O(()=>a.fileList.some(e=>[`modified`,`deleted`,`untracked`,`intent-to-add`].includes(e.type)));async function m(){try{let e=await a.gitPull();e.success?(await a.fetchStatus(),await a.fetchLog(!1)):(l.value={needsMerge:e.needsMerge,error:e.error,fullError:e.fullError,pullOutput:e.pullOutput},c.value=!0)}catch(e){console.error(`拉取失败:`,e)}}async function h(){try{await a.gitFetchAll(),await a.fetchStatus(),await a.fetchLog(!1)}catch(e){console.error(`获取远程分支失败:`,e)}}async function g(){if(r.hasUserCommitMessage)try{await a.addAndCommit(r.finalCommitMessage,r.skipHooks),a.fetchStatus(),a.fetchLog(),i(`afterCommit`,!0),i(`clearFields`)}catch(e){console.error(`暂存并提交失败:`,e)}}function _(){i(`beforePush`)}function v(e){i(`afterPush`,e)}function y(){i(`clearFields`)}t({openGitOperationsDrawer:u});let b={props:r,emit:i,gitStore:a,gitOperationsDrawerVisible:o,pullErrorDialogVisible:c,pullErrorInfo:l,openGitOperationsDrawer:u,stagedFilesCount:d,needsPull:f,hasUnstagedChanges:p,handleGitPull:m,handleGitFetchAll:h,addAndCommit:g,handleQuickPushBefore:_,handleQuickPushAfter:v,handleClearFields:y,get $t(){return J},get Menu(){return S},get RefreshRight(){return M},get Download(){return de},get Connection(){return ve},get Edit(){return oe},get InfoFilled(){return s},IconButton:De,StageButton:He,UnstageAllButton:Pe,CommitButton:Ke,PushButton:bt,QuickPushButton:Dt,MergeBranchButton:Ie,StashChangesButton:Fe,StashListButton:Me,CreateTagButton:Rt,TagListButton:En,ResetToRemoteButton:Le,CommonDialog:Ae};return Object.defineProperty(b,"__isScriptSetup",{enumerable:!1,value:!0}),b}});n(),u();var On={class:`git-operations-button`},kn={class:`actions-section`},An={class:`action-groups`},jn={class:`action-group`},Mn={class:`group-title`},Nn={class:`group-buttons`},Pn={key:0},Fn={class:`action-group`},In={class:`group-title`},Ln={class:`group-buttons`},Rn={class:`action-group`},zn={class:`group-title`},Bn={class:`group-buttons`},Vn={key:0},Hn={class:`action-group`},Un={class:`group-title`},Wn={class:`group-buttons`},Gn={class:`action-group`},Kn={class:`group-title`},qn={class:`group-buttons`},Jn={class:`action-group`},Yn={class:`group-title`},Xn={class:`group-buttons`},Zn={class:`pull-error-content`},Qn={key:0},$n={key:1},er={class:`pull-error-detail`},tr={class:`pull-error-label`},nr={class:`pull-error-pre`};function rr(e,t,n,r,i,a){let s=g,l=q,u=j,d=D;return P(),H(`div`,On,[C(` Git操作按钮 `),r.props.variant===`icon`?(P(),o(r.IconButton,{key:0,tooltip:r.$t(`@F13B4:Git 操作`),size:`large`,"custom-class":`btn-rotate-on-hover`,onClick:r.openGitOperationsDrawer},{default:z(()=>[w(s,null,{default:z(()=>[w(r.Menu)]),_:1})]),_:1},8,[`tooltip`])):(P(),o(l,{key:1,type:`primary`,class:`action-button`,onClick:r.openGitOperationsDrawer},{default:z(()=>[x(V(r.$t(`@F13B4:Git 操作`)),1)]),_:1})),C(` Git操作抽屉 `),w(d,{modelValue:r.gitOperationsDrawerVisible,"onUpdate:modelValue":t[2]||=e=>r.gitOperationsDrawerVisible=e,title:r.$t(`@76872:Git 操作`),direction:`rtl`,size:`362px`,"with-header":!0,"show-close":!0,"destroy-on-close":!1,"append-to-body":!0,class:`git-operations-drawer`},{default:z(()=>[c(`div`,kn,[c(`div`,An,[C(` 基础操作 `),c(`div`,jn,[c(`div`,Mn,V(r.$t(`@76872:基础操作`)),1),c(`div`,Nn,[w(r.StageButton,{onClick:()=>{},from:`drawer`}),w(r.UnstageAllButton,{onClick:()=>{},from:`drawer`}),w(r.CommitButton,{"has-user-commit-message":n.hasUserCommitMessage,"final-commit-message":n.finalCommitMessage,"skip-hooks":n.skipHooks,onBeforeCommit:()=>{},onAfterCommit:t[0]||=e=>r.emit(`afterCommit`,e),onClick:()=>{},from:`drawer`},null,8,[`has-user-commit-message`,`final-commit-message`,`skip-hooks`]),w(r.PushButton,{onBeforePush:()=>{},onAfterPush:t[1]||=e=>r.emit(`afterPush`,e),onClick:()=>{},from:`drawer`}),w(u,{content:r.gitStore.hasConflictedFiles?r.$t(`@76872:存在冲突文件,请先解决冲突`):r.needsPull?`${r.$t(`@76872:拉取`)}${r.gitStore.branchBehind}${r.$t(`@76872:个远程提交`)}`:`git pull`,placement:`top`},{default:z(()=>[w(l,{type:`primary`,icon:r.Download,onClick:r.handleGitPull,loading:r.gitStore.isGitPulling,disabled:!r.gitStore.hasUpstream||r.gitStore.hasConflictedFiles,class:`action-button`,style:N(r.gitStore.hasUpstream&&!r.gitStore.hasConflictedFiles?{color:`white`,backgroundColor:`var(--color-primary)`,borderColor:`var(--color-primary)`}:{})},{default:z(()=>[x(V(r.$t(`@76872:拉取`))+` `,1),r.needsPull?(P(),H(`span`,Pn,`(`+V(r.gitStore.branchBehind)+`)`,1)):C(`v-if`,!0)]),_:1},8,[`icon`,`loading`,`disabled`,`style`])]),_:1},8,[`content`]),w(u,{content:`git fetch --all`,placement:`top`},{default:z(()=>[w(l,{type:`info`,icon:r.Connection,onClick:r.handleGitFetchAll,loading:r.gitStore.isGitFetching,class:`action-button`,style:{color:`white`,"background-color":`var(--color-primary)`,"border-color":`var(--color-primary)`}},{default:z(()=>[x(V(r.$t(`@76872:获取所有远程分支`)),1)]),_:1},8,[`icon`,`loading`])]),_:1})])]),C(` 组合操作 `),c(`div`,Fn,[c(`div`,In,V(r.$t(`@76872:组合操作`)),1),c(`div`,Ln,[w(u,{content:r.gitStore.hasConflictedFiles?r.$t(`@76872:存在冲突文件,请先解决冲突`):`git add + git commit`,placement:`top`},{default:z(()=>[w(l,{type:`primary`,icon:r.Edit,onClick:r.addAndCommit,loading:r.gitStore.isAddingFiles||r.gitStore.isCommiting,disabled:!r.hasUnstagedChanges||!n.hasUserCommitMessage||r.gitStore.hasConflictedFiles,class:`action-button`},{default:z(()=>[x(V(r.$t(`@76872:暂存并提交`)),1)]),_:1},8,[`icon`,`loading`,`disabled`])]),_:1},8,[`content`]),w(r.QuickPushButton,{from:`drawer`,"has-user-commit-message":n.hasUserCommitMessage,"final-commit-message":n.finalCommitMessage,"skip-hooks":n.skipHooks,onBeforePush:r.handleQuickPushBefore,onAfterPush:r.handleQuickPushAfter,onClearFields:r.handleClearFields},null,8,[`has-user-commit-message`,`final-commit-message`,`skip-hooks`])])]),C(` 重置操作 `),c(`div`,Rn,[c(`div`,zn,V(r.$t(`@76872:重置操作`)),1),c(`div`,Bn,[w(u,{content:r.stagedFilesCount>0?`${r.$t(`@76872:撤销`)}${r.stagedFilesCount}${r.$t(`@76872:个已暂存文件`)}`:`git reset HEAD`,placement:`top`},{default:z(()=>[w(l,{type:`warning`,icon:r.RefreshRight,onClick:r.gitStore.resetHead,loading:r.gitStore.isResetting,disabled:r.stagedFilesCount===0||r.gitStore.hasConflictedFiles,class:`action-button reset-button`},{default:z(()=>[x(V(r.$t(`@76872:重置暂存区`))+` `,1),r.stagedFilesCount>0?(P(),H(`span`,Vn,`(`+V(r.stagedFilesCount)+`)`,1)):C(`v-if`,!0)]),_:1},8,[`icon`,`onClick`,`loading`,`disabled`])]),_:1},8,[`content`]),w(r.ResetToRemoteButton,{variant:`text`})])]),C(` 分支操作 `),c(`div`,Hn,[c(`div`,Un,V(r.$t(`@76872:分支操作`)),1),c(`div`,Wn,[w(r.MergeBranchButton,{variant:`text`})])]),C(` 储藏操作 `),c(`div`,Gn,[c(`div`,Kn,V(r.$t(`@76872:储藏操作`)),1),c(`div`,qn,[w(r.StashChangesButton,{variant:`text`}),w(r.StashListButton,{variant:`text`})])]),C(` 标签操作 `),c(`div`,Jn,[c(`div`,Yn,V(r.$t(`@TAG01:标签操作`)),1),c(`div`,Xn,[w(r.CreateTagButton,{variant:`text`}),w(r.TagListButton,{variant:`text`})])])])])]),_:1},8,[`modelValue`,`title`]),C(` Pull 失败错误详情弹窗 `),w(r.CommonDialog,{modelValue:r.pullErrorDialogVisible,"onUpdate:modelValue":t[3]||=e=>r.pullErrorDialogVisible=e,title:r.pullErrorInfo.needsMerge?r.$t(`@76872:需要合并更改`):r.$t(`@76872:拉取失败`),size:`medium`,"show-footer":!0,"show-cancel":!1,"confirm-text":r.$t(`@76872:我知道了`),"append-to-body":!0,onConfirm:t[4]||=e=>r.pullErrorDialogVisible=!1},{default:z(()=>[c(`div`,Zn,[c(`div`,{class:_([`pull-error-type`,r.pullErrorInfo.needsMerge?`is-warning`:`is-error`])},[w(s,{class:`pull-error-icon`},{default:z(()=>[w(r.InfoFilled)]),_:1}),r.pullErrorInfo.needsMerge?(P(),H(`span`,Qn,V(r.$t(`@76872:本地存在未提交的更改,与远程内容冲突,请先处理本地更改后再拉取。`)),1)):(P(),H(`span`,$n,V(r.$t(`@76872:执行 git pull 时发生错误,请查看详细信息。`)),1))],2),c(`div`,er,[c(`div`,tr,V(r.$t(`@76872:错误详情`))+`:`,1),c(`pre`,nr,V(r.pullErrorInfo.fullError||r.pullErrorInfo.error),1)])])]),_:1},8,[`modelValue`,`title`,`confirm-text`])])}var ir=Y(Dn,[[`render`,rr],[`__scopeId`,`data-v-3357e454`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/buttons/GitOperationsButton.vue`]]);n();var ar=h({__name:`GlobalLoading`,props:{visible:{type:Boolean,required:!1,default:!1},text:{type:String,required:!1,default:J(`@2AEBA:加载中...`)},showProgress:{type:Boolean,required:!1,default:!1},progress:{type:Number,required:!1,default:0},mock:{type:Boolean,required:!1,default:!1}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});n(),u(),B();var or={class:`loading-container`},sr={class:`loading-text`},cr={key:0,class:`loading-progress`};function lr(e,t,n,r,i,s){return P(),o(a,{to:`body`},[w(U,{name:`loading-fade`},{default:z(()=>[n.visible||n.mock?(P(),H(`div`,{key:0,class:`global-loading-overlay`,onClick:t[0]||=L(()=>{},[`stop`])},[c(`div`,or,[C(` 主加载器 `),t[1]||=c(`div`,{class:`loading-spinner`},[c(`div`,{class:`spinner-ring`}),c(`div`,{class:`spinner-ring`}),c(`div`,{class:`spinner-ring`})],-1),C(` 加载文字 `),c(`div`,sr,V(n.text),1),C(` 进度条(可选/Mock) `),n.showProgress||n.mock?(P(),H(`div`,cr,[c(`div`,{class:_([`progress-bar`,{"is-mock":n.mock&&!n.showProgress}]),style:N(n.showProgress?{width:n.progress+`%`}:void 0)},null,6)])):C(`v-if`,!0)])])):C(`v-if`,!0)]),_:1})])}var ur=Y(ar,[[`render`,lr],[`__scopeId`,`data-v-77e24a5f`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/GlobalLoading.vue`]]);n();var dr=h({__name:`SuccessModal`,props:{visible:{type:Boolean,required:!1,default:!1},text:{type:String,required:!1,default:J(`@71545:操作成功!`)},description:{type:String,required:!1,default:``}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});n(),u(),B();var fr={class:`success-container`},pr={class:`success-text`},mr={key:0,class:`success-description`};function hr(e,t,n,r,i,s){return P(),o(a,{to:`body`},[w(U,{name:`success-fade`},{default:z(()=>[n.visible?(P(),H(`div`,{key:0,class:`success-overlay`,onClick:t[0]||=L(()=>{},[`stop`])},[c(`div`,fr,[C(` 成功图标 `),t[1]||=c(`div`,{class:`success-icon`},[c(`svg`,{viewBox:`0 0 52 52`,class:`success-svg`},[c(`circle`,{class:`success-circle`,cx:`26`,cy:`26`,r:`25`,fill:`none`}),c(`path`,{class:`success-check`,fill:`none`,d:`m14.1 27.2l7.1 7.2 16.7-16.8`})])],-1),C(` 成功文字 `),c(`div`,pr,V(n.text),1),C(` 描述文字 `),n.description?(P(),H(`div`,mr,V(n.description),1)):C(`v-if`,!0)])])):C(`v-if`,!0)]),_:1})])}var gr=Y(dr,[[`render`,hr],[`__scopeId`,`data-v-30ab4535`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/SuccessModal.vue`]]);G();var $=xe({visible:!1,text:J(`@F2A3A:加载中...`),showProgress:!1,progress:0});function _r(){return{loadingState:$,show:e=>{$.visible=!0,$.text=e?.text||J(`@F2A3A:加载中...`),$.showProgress=e?.showProgress||!1,$.progress=e?.progress||0},hide:()=>{$.visible=!1},updateProgress:e=>{$.progress=Math.max(0,Math.min(100,e))},updateText:e=>{$.text=e},setText:e=>{$.visible&&($.text=e)}}}G();var vr=xe({visible:!1,text:J(`@B8591:操作成功!`),description:``});function yr(){let e=e=>{vr.visible=!0,vr.text=e?.text||J(`@B8591:操作成功!`),vr.description=e?.description||``;let n=e?.duration||2e3;setTimeout(()=>{t()},n)},t=()=>{vr.visible=!1};return{successState:vr,show:e,hide:t}}n();var br=h({__name:`QuickCommitButton`,props:{from:{type:String,required:!1,default:`form`},hasUserCommitMessage:{type:Boolean,required:!1,default:!1},finalCommitMessage:{type:String,required:!1,default:``},skipHooks:{type:Boolean,required:!1,default:!1}},emits:[`beforeCommit`,`afterCommit`,`clearFields`],setup(e,{expose:t,emit:n}){let r=Z(),i=X(),a=e,o=n,s=O(()=>r.fileList.some(e=>!Q(e.path,i.lockedFiles))),c=O(()=>r.isSelectionMode&&r.selectedFiles.size>0&&r.selectedUnstagedPaths.length>0),l=O(()=>r.hasConflictedFiles?!0:r.isSelectionMode?!c.value||!a.hasUserCommitMessage:!s.value||!a.hasUserCommitMessage),u=O(()=>r.isAddingFiles||r.isCommiting),d=O(()=>r.hasConflictedFiles?J(`@2E184:存在冲突文件,请先解决冲突`):r.isSelectionMode?r.selectedFiles.size===0?J(`@2E184:请先勾选要提交的文件`):r.selectedUnstagedPaths.length===0?J(`@2E184:所选文件无需暂存或被锁定`):a.hasUserCommitMessage?J(`@2E184:一键完成:仅暂存所选文件 → 提交`):J(`@2E184:请输入提交信息`):s.value?a.hasUserCommitMessage?J(`@2E184:一键完成:暂存所有更改 → 提交`):J(`@2E184:请输入提交信息`):J(`@2E184:没有需要提交的更改`)),f=O(()=>r.isSelectionMode&&c.value?J(`@2E184:一键提交所选`):J(`@2E184:一键提交`)),p=O(()=>a.from===`form`?r.isSelectionMode&&c.value?J(`@2E184:暂存所选 + 提交`):J(`@2E184:暂存 + 提交`):``);async function m(){o(`beforeCommit`);try{let e=await r.stageSelectedAndCommit(a.finalCommitMessage,a.skipHooks);e&&o(`clearFields`),o(`afterCommit`,e)}catch(e){console.error(`一键提交失败:`,e),o(`afterCommit`,!1)}}t({triggerQuickCommit:m});let h={gitStore:r,configStore:i,props:a,emit:o,hasAnyChanges:s,hasSelectedToStage:c,isDisabled:l,isLoading:u,tooltipText:d,buttonTitle:f,buttonDesc:p,handleQuickCommit:m,get ElTooltip(){return j},get Edit(){return oe}};return Object.defineProperty(h,"__isScriptSetup",{enumerable:!1,value:!0}),h}});n(),u();var xr={class:`one-commit-content`},Sr={class:`one-commit-text`},Cr={class:`one-commit-title`},wr={key:0,class:`one-commit-desc`};function Tr(e,t,n,r,i,a){let o=g,s=q;return P(),H(`div`,null,[w(r.ElTooltip,{content:r.tooltipText,placement:`top`,"show-after":200},{default:z(()=>[w(s,{type:`primary`,onClick:r.handleQuickCommit,loading:r.isLoading,disabled:r.isDisabled,class:_([n.from,`one-commit-button`])},{default:z(()=>[c(`div`,xr,[w(o,{class:`one-commit-icon`},{default:z(()=>[w(r.Edit)]),_:1}),c(`div`,Sr,[c(`span`,Cr,V(r.buttonTitle),1),n.from===`form`?(P(),H(`span`,wr,V(r.buttonDesc),1)):C(`v-if`,!0)])])]),_:1},8,[`loading`,`disabled`,`class`])]),_:1},8,[`content`])])}var Er=Y(br,[[`render`,Tr],[`__scopeId`,`data-v-0c962829`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/buttons/QuickCommitButton.vue`]]);n();var Dr=h({__name:`AiQuickPushButton`,props:{from:{type:String,required:!1,default:`form`},generating:{type:Boolean,required:!1,default:!1}},emits:[`trigger`],setup(e,{expose:t,emit:n}){t();let r=Z(),i=X(),a=e,o=n,s=O(()=>r.fileList.some(e=>!Q(e.path,i.lockedFiles))),c=O(()=>r.isSelectionMode&&r.selectedFiles.size>0&&r.selectedUnstagedPaths.length>0),l=O(()=>!r.isSelectionMode&&!s.value&&r.branchAhead>0),u=O(()=>r.hasConflictedFiles||!r.hasUpstream?!0:r.isSelectionMode?!c.value:!s.value&&r.branchAhead===0),d=O(()=>a.generating||r.isAddingFiles||r.isCommiting||r.isPushing),f=O(()=>r.hasConflictedFiles?J(`@2E184:存在冲突文件,请先解决冲突`):r.hasUpstream?a.generating?J(`@2E184:AI 正在生成提交信息…`):r.isSelectionMode?c.value?J(`@2E184:一键完成:AI 生成提交信息 → 仅暂存所选文件 → 提交 → 推送`):J(`@2E184:请先勾选要推送的文件`):!s.value&&r.branchAhead===0?J(`@2E184:没有需要提交或推送的更改`):s.value?J(`@2E184:一键完成:AI 生成提交信息 → 暂存所有更改 → 提交 → 推送`):J(`@2E184:本地已提交,AI 将直接推送到远程仓库`):J(`@2E184:当前分支没有上游分支`)),p=O(()=>r.isSelectionMode&&c.value?J(`@2E184:AI 提交并推送所选`):J(`@2E184:AI 提交并推送`)),m=O(()=>a.from===`form`?l.value?J(`@2E184:本地已提交,直接推送`):J(`@2E184:AI 生成信息 + 推送`):``);function h(){u.value||d.value||o(`trigger`)}let g={gitStore:r,configStore:i,props:a,emit:o,hasAnyChanges:s,hasSelectedToStage:c,isPushOnly:l,isDisabled:u,isLoading:d,tooltipText:f,buttonTitle:p,buttonDesc:m,handleClick:h,get ElTooltip(){return j},SvgIcon:Ee};return Object.defineProperty(g,"__isScriptSetup",{enumerable:!1,value:!0}),g}});n(),u();var Or={class:`one-ai-push`},kr={class:`one-ai-push-content`},Ar={class:`one-ai-push-text`},jr={class:`one-ai-push-title`},Mr={key:0,class:`one-ai-push-desc`};function Nr(e,t,n,r,i,a){let o=q;return P(),H(`div`,Or,[w(r.ElTooltip,{content:r.tooltipText,placement:`top`,"show-after":200},{default:z(()=>[w(o,{type:`primary`,onClick:r.handleClick,loading:r.isLoading,disabled:r.isDisabled,class:_([n.from,`one-ai-push-button`])},{default:z(()=>[c(`div`,kr,[w(r.SvgIcon,{class:`one-ai-push-icon`,"icon-class":`ai-commit`,style:{color:`#fff`}}),c(`div`,Ar,[c(`span`,jr,V(r.buttonTitle),1),n.from===`form`?(P(),H(`span`,Mr,V(r.buttonDesc),1)):C(`v-if`,!0)])])]),_:1},8,[`loading`,`disabled`,`class`])]),_:1},8,[`content`])])}var Pr=Y(Dr,[[`render`,Nr],[`__scopeId`,`data-v-0a8120f6`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/buttons/AiQuickPushButton.vue`]]);n(),G();var Fr=h({__name:`GitActionButtons`,props:{hasUserCommitMessage:{type:Boolean,required:!1,default:!1},finalCommitMessage:{type:String,required:!1,default:``},skipHooks:{type:Boolean,required:!1,default:!1},from:{type:String,required:!1,default:`form`},aiGenerating:{type:Boolean,required:!1,default:!1}},emits:[`afterCommit`,`afterPush`,`beforePush`,`pushStart`,`clearFields`,`aiQuickPush`],setup(e,{expose:t,emit:n}){let r=n,i=R(null);function a(e){r(`afterCommit`,e)}function o(e){r(`afterPush`,e)}function s(){r(`beforePush`)}function c(){r(`pushStart`)}function l(){r(`clearFields`)}function u(){r(`aiQuickPush`)}async function d(){return i.value?.triggerQuickPush()}t({triggerQuickPush:d});let f={emit:r,quickPushRef:i,handleAfterCommit:a,handleAfterPush:o,handleBeforePush:s,handlePushStart:c,handleClearFields:l,handleAiQuickPush:u,triggerQuickPush:d,StageButton:He,CommitButton:Ke,PushButton:bt,QuickPushButton:Dt,QuickCommitButton:Er,AiQuickPushButton:Pr};return Object.defineProperty(f,"__isScriptSetup",{enumerable:!1,value:!0}),f}});n();var Ir={class:`form-bottom-actions`},Lr={class:`actions-flex-container`},Rr={class:`left-actions`},zr={class:`button-grid`},Br={class:`right-actions`};function Vr(e,t,n,r,i,a){return P(),H(`div`,Ir,[c(`div`,Lr,[c(`div`,Rr,[c(`div`,zr,[w(r.StageButton,{onClick:()=>{},from:n.from},null,8,[`from`]),w(r.CommitButton,{"has-user-commit-message":n.hasUserCommitMessage,"final-commit-message":n.finalCommitMessage,"skip-hooks":n.skipHooks,onBeforeCommit:()=>{},onAfterCommit:r.handleAfterCommit,onClick:()=>{},from:n.from},null,8,[`has-user-commit-message`,`final-commit-message`,`skip-hooks`,`from`]),w(r.PushButton,{onBeforePush:()=>{},onAfterPush:r.handleAfterPush,onClick:()=>{},from:n.from},null,8,[`from`])])]),c(`div`,Br,[w(r.QuickCommitButton,{from:n.from,"has-user-commit-message":n.hasUserCommitMessage,"final-commit-message":n.finalCommitMessage,"skip-hooks":n.skipHooks,onAfterCommit:r.handleAfterCommit,onClearFields:r.handleClearFields},null,8,[`from`,`has-user-commit-message`,`final-commit-message`,`skip-hooks`]),w(r.QuickPushButton,{ref:`quickPushRef`,from:n.from,"has-user-commit-message":n.hasUserCommitMessage,"final-commit-message":n.finalCommitMessage,"skip-hooks":n.skipHooks,onBeforePush:r.handleBeforePush,onPushStart:r.handlePushStart,onAfterPush:r.handleAfterPush,onClearFields:r.handleClearFields},null,8,[`from`,`has-user-commit-message`,`final-commit-message`,`skip-hooks`]),w(r.AiQuickPushButton,{from:n.from,generating:n.aiGenerating,onTrigger:r.handleAiQuickPush},null,8,[`from`,`generating`])])])])}var Hr=Y(Fr,[[`render`,Vr],[`__scopeId`,`data-v-12b4dc63`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/GitActionButtons.vue`]]);n(),G();var Ur=h({__name:`CommandHistory`,setup(e,{expose:n}){n();let r=Z(),i=R([]),a=R(!1);function o(e){return Array.isArray(e)?e.join(` `):e==null?``:String(e)}let s=R(!1),c=R(!1),l=R(!1),u=R(new Set),d=R(!1),p=R(!1),m=R(`all`),h=R(`all`),g=R(``),_=O(()=>{let e=i.value;if(m.value!==`all`&&(e=e.filter(e=>m.value===`success`?e.success:!e.success)),h.value!==`all`&&(e=e.filter(e=>{let t=o(e.command).startsWith(`git `);return h.value===`git`?t:!t})),g.value.trim()){let t=g.value.toLowerCase();e=e.filter(e=>o(e.command).toLowerCase().includes(t)||e.stdout&&e.stdout.toLowerCase().includes(t)||e.stderr&&e.stderr.toLowerCase().includes(t)||e.error&&e.error.toLowerCase().includes(t))}return e}),v=O(()=>i.value.filter(e=>e.success).length),y=O(()=>i.value.filter(e=>!e.success).length),b=O(()=>i.value.filter(e=>o(e.command).startsWith(`git `)).length),x=O(()=>i.value.filter(e=>!o(e.command).startsWith(`git `)).length);function S(){p.value=!0,i.value.length===0&&C()}async function C(){try{if(a.value=!0,r.socket&&r.socket.connected)r.socket.emit(`request_full_history`);else{let e=await(await fetch(`/api/command-history`)).json();e.success?i.value=e.history:F.error(`${J(`@81F0F:加载命令历史失败: `)}${e.error}`)}}catch(e){F.error(`${J(`@81F0F:加载命令历史失败: `)}${e.message}`)}finally{a.value=!1}}async function w(){if(_.value.length===0){F.warning(J(`@81F0F:没有可复制的命令历史`));return}try{c.value=!0;let e=_.value.map(e=>{let t=`# ${k(e.timestamp)}${J(`@81F0F: (耗时: `)}${A(e.executionTime)}) - ${e.success?J(`@81F0F:成功`):J(`@81F0F:失败`)}\n`;if(t+=`${o(e.command)}\n`,e.stdout&&(t+=`\n# 输出:\n${e.stdout}\n`),e.stderr){let n=P(e.command)?J(`@81F0F:输出信息`):J(`@81F0F:错误输出`);t+=`\n# ${n}:\n${e.stderr}\n`}return e.error&&(t+=`\n# 错误信息:\n${e.error}\n`),t}).join(`
1
+ import"./rolldown-runtime-C0FnF6B9.js";import{$n as e,At as t,Bn as n,Bt as r,C as i,Cn as a,Dn as o,Dt as s,En as c,F as l,Fr as u,G as d,Gt as f,Ht as p,I as m,In as h,J as g,Jr as _,K as v,L as y,M as b,Nn as x,Nt as S,On as C,Pn as w,Q as T,S as E,T as D,Tn as O,U as k,V as A,W as j,Wn as ee,Wt as M,Xn as te,Xr as N,Y as ne,Yn as re,Zn as P,_ as ie,a as F,at as I,bn as L,br as R,cr as z,ct as ae,dn as B,ei as V,ht as oe,i as se,j as ce,kn as H,ln as U,lr as le,lt as ue,mt as de,nn as fe,nt as pe,o as me,or as W,ot as he,pr as G,q as ge,qt as _e,st as ve,tt as ye,vn as be,vr as xe,w as Se,x as Ce,xn as K,z as q,zt as we}from"./element-plus-Buzx8xRf.js";import{b as Te}from"./vendor-wERX2bc3.js";import{n as J,t as Y}from"./_plugin-vue_export-helper-DcQKU19k.js";import{t as Ee}from"./SvgIcon-YQZtv72i.js";import{t as De}from"./IconButton-C07zojvw.js";import{r as Oe,t as X}from"./configStore-u3FUM08v.js";import{i as ke,r as Z}from"./gitStore-ZjHYEyKS.js";import{t as Ae}from"./CommonDialog-DuI8Bsg7.js";import{t as je}from"./TemplateManager-zSKmah02.js";import{C as Me,S as Ne,T as Q,b as Pe,w as Fe,x as Ie,y as Le}from"./index-DorcTBZN.js";n();var Re=h({__name:`StageButton`,props:{from:{type:String,required:!1,default:`form`}},emits:[`click`],setup(e,{expose:t,emit:n}){t();let r=n,i=Z(),a=X();function o(e){let t=e.replace(/\\/g,`/`);return a.lockedFiles.some(e=>{let n=e.replace(/\\/g,`/`);return t===n})}function s(){return a.lockedFiles.length!==0&&i.fileList.some(e=>[`modified`,`deleted`,`untracked`].includes(e.type)?o(e.path):!1)}let c=O(()=>i.fileList.filter(e=>[`modified`,`deleted`,`untracked`].includes(e.type)&&!o(e.path)).length),l=O(()=>i.fileList.some(e=>[`modified`,`deleted`,`untracked`].includes(e.type)&&!o(e.path))),u=O(()=>i.isSelectionMode&&i.hasSelectableFiles),d=O(()=>i.selectedUnstagedPaths.length),f=O(()=>i.isSelectionMode?d.value===0:!l.value),p=O(()=>u.value?`${J(`@29974:暂存所选 `)}${d.value}${J(`@29974: 个文件`)}`:l.value?s()?`${J(`@29974:暂存`)}${c.value}${J(`@29974:个未暂存文件(逐个添加)`)}`:`${J(`@29974:暂存所有更改(git add .)`)}`:J(`@29974:没有需要暂存的更改`));async function m(){r(`click`);try{if(u.value){await i.stageFiles(i.selectedUnstagedPaths);return}if(i.isSelectionMode)return;s()?await i.addToStage():await i.addAllToStage()}catch(e){console.error(`添加文件失败:`,e)}}let h={emit:r,gitStore:i,configStore:a,isFileLocked:o,hasLockedFileMatches:s,unstagedFilesCount:c,hasUnstagedChanges:l,isSelectiveStage:u,selectedStageCount:d,isDisabled:f,tooltipText:p,handleClick:m,get $t(){return J},get Plus(){return we}};return Object.defineProperty(h,"__isScriptSetup",{enumerable:!1,value:!0}),h}});u(),n();var ze={key:0},Be={key:1};function Ve(e,t,n,r,i,a){let s=q,c=j;return P(),o(c,{content:r.tooltipText,placement:`top`},{default:z(()=>[w(s,{type:`primary`,icon:r.Plus,onClick:r.handleClick,loading:r.gitStore.isAddingFiles,disabled:r.isDisabled,class:_([`stage-button`,`from-${n.from}`,{"is-selective":r.isSelectiveStage}])},{default:z(()=>[x(V(r.isSelectiveStage?r.$t(`@29974:暂存所选`):r.$t(`@29974:暂存`))+` `,1),r.isSelectiveStage?(P(),H(`span`,ze,`(`+V(r.selectedStageCount)+`)`,1)):r.unstagedFilesCount>0?(P(),H(`span`,Be,`(`+V(r.unstagedFilesCount)+`)`,1)):C(`v-if`,!0)]),_:1},8,[`icon`,`loading`,`disabled`,`class`])]),_:1},8,[`content`])}var He=Y(Re,[[`render`,Ve],[`__scopeId`,`data-v-d99cab92`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/buttons/StageButton.vue`]]);n();var Ue=h({__name:`CommitButton`,props:{from:{type:String,required:!1,default:`form`},hasUserCommitMessage:{type:Boolean,required:!1,default:!1},finalCommitMessage:{type:String,required:!1,default:``},skipHooks:{type:Boolean,required:!1,default:!1}},emits:[`click`,`beforeCommit`,`afterCommit`],setup(e,{expose:n,emit:r}){n();let i=e,a=r,o=Z(),s=X(),c=O(()=>o.fileList.filter(e=>e.type===`added`&&!Q(e.path,s.lockedFiles)).length),l=O(()=>c.value>0),u=O(()=>o.hasConflictedFiles||o.isCommiting?!0:o.isMergeInProgress?!i.hasUserCommitMessage:!l.value||!i.hasUserCommitMessage),d=O(()=>o.isCommiting?J(`@76A11:正在提交中…`):o.hasConflictedFiles?J(`@76A11:存在冲突文件,请先解决冲突`):o.isMergeInProgress?i.hasUserCommitMessage?J(`@76A11:提交并完成合并`):J(`@76A11:请输入提交信息`):l.value?i.hasUserCommitMessage?`${J(`@76A11:提交`)}${c.value}${J(`@76A11:个已暂存文件`)}`:J(`@76A11:请输入提交信息`):J(`@76A11:没有已暂存的更改`)),f=O(()=>o.isCommiting?J(`@76A11:提交中…`):J(`@76A11:提交`));async function p(){if(i.finalCommitMessage.trim()){a(`beforeCommit`),a(`click`);try{let e=await o.commitChanges(i.finalCommitMessage,i.skipHooks);a(`afterCommit`,e)}catch(e){console.error(`提交失败:`,e),a(`afterCommit`,!1)}}}let m={props:i,emit:a,gitStore:o,configStore:s,stagedFilesCount:c,hasStagedChanges:l,isDisabled:u,tooltipText:d,buttonLabel:f,handleClick:p,get $t(){return J},get Check(){return ye},get Loading(){return t}};return Object.defineProperty(m,"__isScriptSetup",{enumerable:!1,value:!0}),m}});u(),n();var We={key:0};function Ge(e,t,n,r,i,a){let s=q,c=j;return P(),o(c,{content:r.tooltipText,placement:`top`,disabled:r.gitStore.isCommiting},{default:z(()=>[w(s,{type:`primary`,onClick:r.handleClick,icon:r.gitStore.isCommiting?r.Loading:r.Check,loading:r.gitStore.isCommiting,disabled:r.isDisabled,"aria-busy":r.gitStore.isCommiting?`true`:void 0,"aria-label":r.gitStore.isCommiting?r.$t(`@76A11:正在提交中…`):void 0,class:_([`commit-button`,`from-${n.from}`,{"is-committing":r.gitStore.isCommiting}])},{default:z(()=>[x(V(r.buttonLabel)+` `,1),r.stagedFilesCount>0&&!r.gitStore.isCommiting?(P(),H(`span`,We,`(`+V(r.stagedFilesCount)+`)`,1)):C(`v-if`,!0)]),_:1},8,[`icon`,`loading`,`disabled`,`aria-busy`,`aria-label`,`class`])]),_:1},8,[`content`,`disabled`])}var Ke=Y(Ue,[[`render`,Ge],[`__scopeId`,`data-v-100f6d49`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/buttons/CommitButton.vue`]]);n(),G();var qe=h({__name:`PushProgressModal`,props:{modelValue:{type:Boolean,required:!0}},emits:[`update:modelValue`,`complete`,`pull-requested`],setup(e,{expose:n,emit:r}){let{t:i}=Te(),a=e,o=r,s=X(),c=Z(),l=R(`progress`),u=R([]),d=R(``),f=R(!1),p=O(()=>d.value.includes(`non-fast-forward`)||d.value.includes(`rejected`)&&d.value.includes(`fetch first`)),m=R(!1);async function h(){m.value=!0;try{(await c.gitPull()).success&&(b.value=!1,o(`pull-requested`))}finally{m.value=!1}}let _=xe([{name:`counting`,label:i(`@PUSH:计数对象`),status:`wait`,percent:0},{name:`compressing`,label:i(`@PUSH:压缩对象`),status:`wait`,percent:0},{name:`writing`,label:i(`@PUSH:写入对象`),status:`wait`,percent:0},{name:`resolving`,label:i(`@PUSH:解析增量`),status:`wait`,percent:0}]),v=R(0),y=R(null),b=O({get:()=>a.modelValue,set:e=>o(`update:modelValue`,e)}),x=O(()=>{if(f.value)return i(`@PUSH:正在拉取远程更新`);switch(l.value){case`progress`:return i(`@PUSH:正在推送`);case`success`:return i(`@PUSH:推送成功`);case`error`:return i(`@PUSH:推送失败`);default:return``}});function S(e){switch(e.type){case`progress`:e.message&&(u.value.push(e.message),setTimeout(()=>{y.value&&(y.value.scrollTop=y.value.scrollHeight)},0));break;case`stage-progress`:if(e.stage&&typeof e.percent==`number`){let t=_.findIndex(t=>t.name===e.stage);t!==-1&&(_[t].percent=e.percent,_[t].status=e.percent===100?`finish`:`process`,v.value=t,e.percent===100&&t<_.length-1&&(_[t+1].status=`wait`))}break;case`complete`:e.success?(l.value=`success`,_.forEach(e=>{(e.status===`process`||e.status===`wait`)&&(e.status=`finish`,e.percent=100)}),v.value=-1,s.autoClosePushModal?setTimeout(()=>{b.value=!1,o(`complete`,!0)},2e3):o(`complete`,!0)):(l.value=`error`,d.value=ke(e),v.value<_.length&&(_[v.value].status=`error`),v.value=-1,o(`complete`,!1))}}function C(){l.value=`progress`,u.value=[],d.value=``,v.value=0,f.value=!1,_.forEach(e=>{e.status=`wait`,e.percent=0})}function w(e){f.value=e}n({handleProgress:S,reset:C,setPulling:w});let T={t:i,props:a,emit:o,configStore:s,gitStore:c,status:l,messages:u,errorMessage:d,isPullingRemote:f,isNonFastForwardError:p,isPulling:m,handlePullAndRetry:h,stages:_,activeStep:v,messagesContainerRef:y,visible:b,statusText:x,handleProgress:S,reset:C,setPulling:w,get ElProgress(){return ie},get ElIcon(){return g},get Close(){return he},get Loading(){return t},get CircleCheck(){return pe},get Download(){return de},CommonDialog:Ae};return Object.defineProperty(T,"__isScriptSetup",{enumerable:!1,value:!0}),T}});n(),u();var Je={class:`push-progress-container`},Ye={key:0,class:`pulling-section`},Xe={class:`pulling-text-wrap`},Ze={class:`pulling-title`},Qe={class:`pulling-sub`},$e={class:`stage-header`},et={class:`stage-icon`},tt={class:`stage-info`},nt={class:`stage-label`},rt={key:0,class:`stage-percent`},it={key:0,class:`stage-progress`},at={key:2,class:`error-section`},ot={class:`error-header`},st={class:`error-title`},ct={class:`error-content`},lt={key:0,class:`error-suggestion`},ut={key:3,class:`messages-section`},dt={class:`messages-title`},ft={ref:`messagesContainerRef`,class:`progress-messages`};function pt(t,n,r,i,a,s){let l=q;return P(),o(i.CommonDialog,{modelValue:i.visible,"onUpdate:modelValue":n[0]||=e=>i.visible=e,title:i.statusText,width:`650px`,type:`flex`,"close-on-click-modal":!1,"close-on-press-escape":!1,"show-close":i.status!==`progress`,"append-to-body":!0,"lock-scroll":!1,"destroy-on-close":``,"custom-class":`push-progress-dialog status-${i.status}`},{default:z(()=>[c(`div`,Je,[C(` 拉取中提示 `),i.isPullingRemote?(P(),H(`div`,Ye,[n[1]||=c(`div`,{class:`pulling-icon-wrap`},[c(`svg`,{class:`pulling-spinner`,viewBox:`0 0 50 50`},[c(`circle`,{class:`pulling-spinner-track`,cx:`25`,cy:`25`,r:`20`,fill:`none`,"stroke-width":`4`}),c(`circle`,{class:`pulling-spinner-arc`,cx:`25`,cy:`25`,r:`20`,fill:`none`,"stroke-width":`4`})])],-1),c(`div`,Xe,[c(`div`,Ze,V(i.t(`@PUSH:正在拉取远程更新`)),1),c(`div`,Qe,V(i.t(`@PUSH:拉取完成后自动继续推送`)),1)])])):(P(),H(K,{key:1},[C(` 推送阶段(2x2网格) `),c(`div`,{class:_([`stages-section`,{"is-loading":i.status===`progress`,"is-success":i.status===`success`}])},[(P(!0),H(K,null,e(i.stages,(e,t)=>(P(),H(`div`,{key:e.name,class:_([`stage-item`,{active:i.activeStep===t,finished:e.status===`finish`,error:e.status===`error`}])},[c(`div`,$e,[c(`div`,et,[e.status===`finish`?(P(),o(i.ElIcon,{key:0,class:`icon-finish`},{default:z(()=>[w(i.CircleCheck)]),_:1})):e.status===`error`?(P(),o(i.ElIcon,{key:1,class:`icon-error`},{default:z(()=>[w(i.Close)]),_:1})):e.status===`process`?(P(),o(i.ElIcon,{key:2,class:`icon-process rotating`},{default:z(()=>[w(i.Loading)]),_:1})):(P(),o(i.ElIcon,{key:3,class:`icon-wait`},{default:z(()=>[w(i.Loading)]),_:1}))]),c(`div`,tt,[c(`div`,nt,V(e.label),1),e.status===`process`||e.status===`finish`?(P(),H(`div`,rt,V(e.percent)+`% `,1)):C(`v-if`,!0)])]),e.status===`process`||e.status===`finish`?(P(),H(`div`,it,[w(i.ElProgress,{percentage:e.percent,"stroke-width":6,"show-text":!1,color:e.status===`finish`?`var(--color-success)`:`var(--color-primary)`},null,8,[`percentage`,`color`])])):C(`v-if`,!0)],2))),128))],2)],2112)),C(` 错误信息 `),i.status===`error`&&i.errorMessage?(P(),H(`div`,at,[c(`div`,ot,[c(`div`,st,V(i.t(`@PUSH:错误详情`))+`:`,1),i.isNonFastForwardError?(P(),o(l,{key:0,type:`primary`,size:`small`,loading:i.isPulling,onClick:i.handlePullAndRetry,class:`pull-button`},{default:z(()=>[w(i.ElIcon,null,{default:z(()=>[w(i.Download)]),_:1}),x(` `+V(i.t(`@PUSH:先拉取更新`)),1)]),_:1},8,[`loading`])):C(`v-if`,!0)]),c(`div`,ct,V(i.errorMessage),1),i.isNonFastForwardError?(P(),H(`div`,lt,V(i.t(`@PUSH:检测到远程有新提交,请先拉取更新后再推送。`)),1)):C(`v-if`,!0)])):C(`v-if`,!0),C(` 进度消息 `),i.messages.length>0?(P(),H(`div`,ut,[c(`div`,dt,V(i.t(`@PUSH:详细信息`))+`:`,1),c(`div`,ft,[(P(!0),H(K,null,e(i.messages,(e,t)=>(P(),H(`div`,{key:t,class:`message-item`},V(e),1))),128))],512)])):C(`v-if`,!0)])]),_:1},8,[`modelValue`,`title`,`show-close`,`custom-class`])}var mt=Y(qe,[[`render`,pt],[`__scopeId`,`data-v-0e0be0c3`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/PushProgressModal.vue`]]);n(),G();var ht=h({__name:`PushButton`,props:{from:{type:String,required:!1,default:`form`}},emits:[`click`,`beforePush`,`afterPush`],setup(e,{expose:t,emit:n}){t();let r=n,i=Z(),a=R(!1),o=R(null),s=O(()=>i.branchAhead>0),c=O(()=>i.fileList.some(e=>e.type===`added`)),l=O(()=>!i.hasConflictedFiles&&i.hasUpstream&&s.value&&!c.value),u=O(()=>!l.value),d=O(()=>i.hasConflictedFiles?J(`@F4137:存在冲突文件,请先解决冲突`):i.hasUpstream?s.value?c.value?J(`@F4137:有未提交的暂存更改,请先提交`):`${J(`@F4137:推送`)}${i.branchAhead}${J(`@F4137:个本地提交`)}`:J(`@F4137:没有需要推送的提交`):J(`@F4137:当前分支没有上游分支`)),f=O(()=>l.value?{backgroundColor:`var(--tint-success-14)`,borderColor:`var(--color-success)`,color:`var(--text-primary)`}:{});async function p(){r(`beforePush`),r(`click`);try{a.value=!0,o.value&&o.value.reset();let e=await i.pushToRemoteWithProgress(e=>{o.value&&o.value.handleProgress(e)});e&&await new Promise(e=>setTimeout(e,200)),r(`afterPush`,e)}catch(e){console.error(`推送失败:`,e),r(`afterPush`,!1)}}function m(e){}let h=O(()=>[...i.remotes].sort((e,t)=>e.isUpstream===t.isUpstream?e.name.localeCompare(t.name):e.isUpstream?-1:1));async function g(e){if(e===`manage`){i.isRemoteManagerVisible=!0;return}if(e===`push-all`){await i.pushAllRemotes();return}if(!e.startsWith(`push:`))return;let t=e.slice(5);r(`beforePush`);try{a.value=!0,o.value?.reset();let e=await i.pushToRemoteWithProgress(e=>{o.value?.handleProgress(e)},t);r(`afterPush`,e)}catch(e){console.error(`推送失败:`,e),r(`afterPush`,!1)}}let _={emit:r,gitStore:i,progressModalVisible:a,progressModalRef:o,needsPush:s,hasStagedChanges:c,canPush:l,isDisabled:u,tooltipText:d,buttonStyle:f,handleClick:p,handleProgressComplete:m,sortedRemotes:h,handleDropdownCommand:g,get $t(){return J},get Upload(){return fe},get ArrowDown(){return ne},PushProgressModal:mt};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}});u(),n();var gt={class:`push-button-group`},_t={key:0},vt={class:`push-remote-item`};function yt(t,n,r,a,s,l){let u=q,d=j,f=y,p=i,m=Se,h=E;return P(),H(`div`,null,[c(`div`,gt,[w(d,{content:a.tooltipText,placement:`top`},{default:z(()=>[w(u,{type:`primary`,icon:a.Upload,onClick:a.handleClick,loading:a.gitStore.isPushing,disabled:a.isDisabled,style:N(a.buttonStyle),class:_([`push-button`,`from-${r.from}`])},{default:z(()=>[x(V(a.$t(`@F4137:推送`))+` `,1),a.needsPush?(P(),H(`span`,_t,`(`+V(a.gitStore.branchAhead)+`)`,1)):C(`v-if`,!0)]),_:1},8,[`icon`,`loading`,`disabled`,`style`,`class`])]),_:1},8,[`content`]),C(` 多远程下拉:仅在配置了多个远程时出现,单远程外观与历史完全一致 `),a.gitStore.hasMultipleRemotes?(P(),o(h,{key:0,trigger:`click`,placement:`top-end`,onCommand:a.handleDropdownCommand},{dropdown:z(()=>[w(m,null,{default:z(()=>[(P(!0),H(K,null,e(a.sortedRemotes,e=>(P(),o(p,{key:e.name,command:`push:${e.name}`},{default:z(()=>[c(`span`,vt,[c(`span`,null,V(a.$t(`@F4137:推送到`))+` `+V(e.name),1),e.isUpstream?(P(),o(f,{key:0,size:`small`,type:`success`,effect:`plain`},{default:z(()=>[x(V(a.$t(`@F4137:上游`)),1)]),_:1})):C(`v-if`,!0)])]),_:2},1032,[`command`]))),128)),w(p,{divided:``,command:`push-all`},{default:z(()=>[x(V(a.$t(`@F4137:推送到全部远程`)),1)]),_:1}),w(p,{divided:``,command:`manage`},{default:z(()=>[x(V(a.$t(`@F4137:管理远程…`)),1)]),_:1})]),_:1})]),default:z(()=>[w(u,{type:`primary`,icon:a.ArrowDown,style:N(a.buttonStyle),class:_([`push-button__caret`,`from-${r.from}`]),"aria-label":a.$t(`@F4137:更多推送选项`)},null,8,[`icon`,`style`,`class`,`aria-label`])]),_:1})):C(`v-if`,!0)]),C(` 推送进度弹窗 `),w(a.PushProgressModal,{ref:`progressModalRef`,modelValue:a.progressModalVisible,"onUpdate:modelValue":n[0]||=e=>a.progressModalVisible=e,onComplete:a.handleProgressComplete},null,8,[`modelValue`])])}var bt=Y(ht,[[`render`,yt],[`__scopeId`,`data-v-bcb696bd`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/buttons/PushButton.vue`]]);n(),G();var xt=h({__name:`QuickPushButton`,props:{from:{type:String,required:!1,default:`form`},hasUserCommitMessage:{type:Boolean,required:!1,default:!1},finalCommitMessage:{type:String,required:!1,default:``},skipHooks:{type:Boolean,required:!1,default:!1}},emits:[`beforePush`,`pushStart`,`afterPush`,`clearFields`],setup(e,{expose:t,emit:n}){let i=Z(),a=X(),o=R(!1),s=R(null),c=e,l=n,u=O(()=>i.fileList.some(e=>!Q(e.path,a.lockedFiles))),d=O(()=>i.isSelectionMode&&i.selectedFiles.size>0&&i.selectedUnstagedPaths.length>0),f=O(()=>!i.isSelectionMode&&!u.value&&i.branchAhead>0),p=O(()=>i.hasConflictedFiles||!i.hasUpstream?!0:i.isSelectionMode?!d.value||!c.hasUserCommitMessage:f.value?!1:!u.value||!c.hasUserCommitMessage),m=O(()=>i.isAddingFiles||i.isCommiting||i.isPushing),h=O(()=>i.hasConflictedFiles?J(`@2E184:存在冲突文件,请先解决冲突`):i.hasUpstream?i.isSelectionMode?i.selectedFiles.size===0?J(`@2E184:请先勾选要推送的文件`):i.selectedUnstagedPaths.length===0?J(`@2E184:所选文件无需暂存或被锁定`):c.hasUserCommitMessage?J(`@2E184:一键完成:仅暂存所选文件 → 提交 → 推送到远程仓库`):J(`@2E184:请输入提交信息`):!u.value&&i.branchAhead===0?J(`@2E184:没有需要提交或推送的更改`):f.value?J(`@2E184:本地已提交,一键推送到远程仓库`):c.hasUserCommitMessage?J(`@2E184:一键完成:暂存所有更改 → 提交 → 推送到远程仓库`):J(`@2E184:请输入提交信息`):J(`@2E184:当前分支没有上游分支`)),g=O(()=>i.isSelectionMode&&d.value?J(`@2E184:一键推送所选`):J(`@2E184:一键推送所有`)),_=O(()=>c.from===`form`?f.value?J(`@2E184:推送到远程仓库`):i.isSelectionMode&&d.value?J(`@2E184:暂存所选 + 提交 + 推送`):J(`@2E184:暂存 + 提交 + 推送`):``);async function v(){l(`beforePush`);try{let e=i.isSelectionMode&&d.value;if((e||u.value)&&!(e?await i.stageSelectedAndCommit(c.finalCommitMessage,c.skipHooks):await i.addAndCommit(c.finalCommitMessage,c.skipHooks))){l(`afterPush`,!1);return}if(l(`pushStart`),o.value=!0,a.pullBeforePush){s.value?.setPulling(!0);let e=await i.gitPull();if(s.value?.setPulling(!1),!e.success){F.error(J(`@2E184:拉取远程更新失败,已停止推送`)),o.value=!1,i.fetchStatus(),i.getBranchStatus(!0),l(`afterPush`,!1);return}}s.value&&s.value.reset();let t=await i.pushToRemoteWithProgress(e=>{s.value&&s.value.handleProgress(e)});if(t){try{window.dispatchEvent(new CustomEvent(`zen-gitsync:after-quick-push-success`))}catch{}l(`clearFields`)}l(`afterPush`,t)}catch(e){console.error(`一键推送失败:`,e),l(`afterPush`,!1)}}t({triggerQuickPush:v});function y(e){}let b={gitStore:i,configStore:a,progressModalVisible:o,progressModalRef:s,props:c,emit:l,hasAnyChanges:u,hasSelectedToStage:d,isPushOnly:f,isDisabled:p,isLoading:m,tooltipText:h,buttonTitle:g,buttonDesc:_,handleQuickPush:v,handleProgressComplete:y,get ElTooltip(){return j},get Position(){return r},PushProgressModal:mt};return Object.defineProperty(b,"__isScriptSetup",{enumerable:!1,value:!0}),b}});n(),u();var St={class:`one-push-content`},Ct={class:`one-push-text`},wt={class:`one-push-title`},Tt={key:0,class:`one-push-desc`};function Et(e,t,n,r,i,a){let o=g,s=q;return P(),H(`div`,null,[w(r.ElTooltip,{content:r.tooltipText,placement:`top`,"show-after":200},{default:z(()=>[w(s,{type:`primary`,onClick:r.handleQuickPush,loading:r.isLoading,disabled:r.isDisabled,class:_([n.from,`one-push-button`])},{default:z(()=>[c(`div`,St,[w(o,{class:`one-push-icon`},{default:z(()=>[w(r.Position)]),_:1}),c(`div`,Ct,[c(`span`,wt,V(r.buttonTitle),1),n.from===`form`?(P(),H(`span`,Tt,V(r.buttonDesc),1)):C(`v-if`,!0)])])]),_:1},8,[`loading`,`disabled`,`class`])]),_:1},8,[`content`]),C(` 推送进度弹窗 `),w(r.PushProgressModal,{ref:`progressModalRef`,modelValue:r.progressModalVisible,"onUpdate:modelValue":t[0]||=e=>r.progressModalVisible=e,onComplete:r.handleProgressComplete,onPullRequested:r.handleQuickPush},null,8,[`modelValue`])])}var Dt=Y(xt,[[`render`,Et],[`__scopeId`,`data-v-1a7fa402`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/buttons/QuickPushButton.vue`]]);n(),G();var Ot=h({__name:`CreateTagButton`,props:{variant:{type:String,required:!1,default:`icon`}},setup(e,{expose:t}){t();let n=e,r=Z(),i=R(!1),a=R(``),o=R(``),c=R(`lightweight`),l=R(``),u=R(!1);function d(){a.value=``,o.value=``,c.value=`lightweight`,l.value=``,i.value=!0}async function f(){if(!a.value.trim()){F.warning(J(`@TAG01:请输入标签名称`));return}if(!/^[a-zA-Z0-9._\/-]+$/.test(a.value)){F.warning(J(`@TAG01:标签名称只能包含字母、数字、点、下划线、斜杠和连字符`));return}try{u.value=!0;let e=await(await fetch(`/api/create-tag`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({tagName:a.value.trim(),message:o.value.trim(),type:c.value,commit:l.value.trim()})})).json();e.success?(F.success(J(`@TAG01:标签创建成功`)),i.value=!1):F.error(e.error||J(`@TAG01:创建标签失败`))}catch(e){console.error(`创建标签失败:`,e),F.error(J(`@TAG01:创建标签失败`))}finally{u.value=!1}}let p={props:n,gitStore:r,isTagDialogVisible:i,tagName:a,tagMessage:o,tagType:c,targetCommit:l,isCreating:u,openTagDialog:d,createTag:f,tagTypeDescription:O(()=>c.value===`lightweight`?J(`@TAG01:轻量标签是指向提交对象的引用,不包含额外信息`):J(`@TAG01:附注标签是完整的Git对象,包含标签信息、日期、标签者和可选的签名`)),get $t(){return J},get Sell(){return _e},get InfoFilled(){return s},CommonDialog:Ae};return Object.defineProperty(p,"__isScriptSetup",{enumerable:!1,value:!0}),p}});n(),u();var kt={class:`create-tag-button`},At={class:`tag-dialog-content`},jt={class:`tag-info-card`},Mt={class:`info-icon`},Nt={class:`info-content`},Pt={class:`form-tip`},Ft={class:`form-tip`},It={class:`form-tip`};function Lt(e,t,n,r,i,a){let s=g,l=q,u=j,f=k,p=v,m=ce,h=b,y=d;return P(),H(`div`,kt,[C(` 创建标签按钮 `),w(u,{content:r.$t(`@TAG01:为当前提交创建标签`),placement:`top`,"show-after":200,disabled:r.props.variant===`text`},{default:z(()=>[w(l,{type:`success`,onClick:r.openTagDialog,disabled:!r.gitStore.isGitRepo,circle:r.props.variant===`icon`,size:r.props.variant===`icon`?`small`:`default`,class:_(r.props.variant===`text`?`action-button`:``)},{default:z(()=>[r.props.variant===`icon`?(P(),o(s,{key:0},{default:z(()=>[w(r.Sell)]),_:1})):(P(),H(K,{key:1},[x(V(r.$t(`@TAG01:创建标签`)),1)],64))]),_:1},8,[`disabled`,`circle`,`size`,`class`])]),_:1},8,[`content`,`disabled`]),C(` 创建标签弹窗 `),w(r.CommonDialog,{modelValue:r.isTagDialogVisible,"onUpdate:modelValue":t[4]||=e=>r.isTagDialogVisible=e,title:r.$t(`@TAG01:创建 Git 标签`),size:`medium`,"close-on-click-modal":!1,"show-footer":``,"confirm-text":r.$t(`@TAG01:创建`),"cancel-text":r.$t(`@TAG01:取消`),"confirm-loading":r.isCreating,"custom-class":`tag-dialog`,onConfirm:r.createTag},{default:z(()=>[c(`div`,At,[C(` 功能说明卡片 `),c(`div`,jt,[c(`div`,Mt,[w(s,null,{default:z(()=>[w(r.Sell)]),_:1})]),c(`div`,Nt,[c(`h4`,null,V(r.$t(`@TAG01:Git 标签`)),1),c(`p`,null,V(r.$t(`@TAG01:标签用于标记项目的重要版本点,如发布版本 v1.0.0`)),1)])]),w(y,{"label-position":`top`,class:`tag-form`},{default:z(()=>[C(` 标签名称 `),w(p,{label:r.$t(`@TAG01:标签名称`),required:``},{default:z(()=>[w(f,{modelValue:r.tagName,"onUpdate:modelValue":t[0]||=e=>r.tagName=e,placeholder:r.$t(`@TAG01:例如: v1.0.0 或 release-2024`),clearable:``,maxlength:`100`},{prefix:z(()=>[w(s,null,{default:z(()=>[w(r.Sell)]),_:1})]),_:1},8,[`modelValue`,`placeholder`]),c(`div`,Pt,[w(s,null,{default:z(()=>[w(r.InfoFilled)]),_:1}),c(`span`,null,V(r.$t(`@TAG01:建议使用语义化版本号,如 v1.0.0`)),1)])]),_:1},8,[`label`]),C(` 标签类型 `),w(p,{label:r.$t(`@TAG01:标签类型`)},{default:z(()=>[w(h,{modelValue:r.tagType,"onUpdate:modelValue":t[1]||=e=>r.tagType=e,size:`default`},{default:z(()=>[w(m,{value:`lightweight`},{default:z(()=>[x(V(r.$t(`@TAG01:轻量标签`)),1)]),_:1}),w(m,{value:`annotated`},{default:z(()=>[x(V(r.$t(`@TAG01:附注标签`)),1)]),_:1})]),_:1},8,[`modelValue`]),c(`div`,Ft,[w(s,null,{default:z(()=>[w(r.InfoFilled)]),_:1}),c(`span`,null,V(r.tagTypeDescription),1)])]),_:1},8,[`label`]),C(` 标签说明(仅附注标签) `),r.tagType===`annotated`?(P(),o(p,{key:0,label:r.$t(`@TAG01:标签说明`),required:r.tagType===`annotated`},{default:z(()=>[w(f,{modelValue:r.tagMessage,"onUpdate:modelValue":t[2]||=e=>r.tagMessage=e,placeholder:r.$t(`@TAG01:为此标签添加说明信息`),clearable:``,rows:3,type:`textarea`,resize:`none`,maxlength:`500`,"show-word-limit":``},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`,`required`])):C(`v-if`,!0),C(` 目标提交(可选) `),w(p,{label:r.$t(`@TAG01:目标提交(可选)`)},{default:z(()=>[w(f,{modelValue:r.targetCommit,"onUpdate:modelValue":t[3]||=e=>r.targetCommit=e,placeholder:r.$t(`@TAG01:留空则为当前HEAD,或输入commit SHA`),clearable:``,maxlength:`40`},{prefix:z(()=>[...t[5]||=[c(`span`,{class:`commit-prefix`},`commit:`,-1)]]),_:1},8,[`modelValue`,`placeholder`]),c(`div`,It,[w(s,null,{default:z(()=>[w(r.InfoFilled)]),_:1}),c(`span`,null,V(r.$t(`@TAG01:默认为当前HEAD提交,也可以指定历史提交`)),1)])]),_:1},8,[`label`])]),_:1})])]),_:1},8,[`modelValue`,`title`,`confirm-text`,`cancel-text`,`confirm-loading`])])}var Rt=Y(Ot,[[`render`,Lt],[`__scopeId`,`data-v-fd2d5a18`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/buttons/CreateTagButton.vue`]]);n(),G();var zt=h({__name:`TagListButton`,props:{variant:{type:String,required:!1,default:`icon`}},setup(e,{expose:t}){t();let n=e,r=Z(),i=R(!1),a=R([]),o=R(!1),c=R(!1),l=R(!1),u=R(!1),d=R(null);async function f(){i.value=!0,await m()}async function m(){try{o.value=!0;let e=await(await fetch(`/api/list-tags`)).json();e.success?a.value=e.tags||[]:F.error(e.error||J(`@TAG01:获取标签列表失败`))}catch(e){console.error(`获取标签列表失败:`,e),F.error(J(`@TAG01:获取标签列表失败`))}finally{o.value=!1}}function h(e){d.value=e,u.value=!0}async function g(e){se.confirm(J(`@TAG01:确定要推送此标签到远程仓库吗?`),J(`@TAG01:推送标签`),{confirmButtonText:J(`@TAG01:推送`),cancelButtonText:J(`@TAG01:取消`),type:`info`}).then(async()=>{try{l.value=!0;let t=await(await fetch(`/api/push-tag`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({tagName:e})})).json();t.success?F.success(J(`@TAG01:标签推送成功`)):F.error(t.error||J(`@TAG01:推送标签失败`))}catch(e){console.error(`推送标签失败:`,e),F.error(J(`@TAG01:推送标签失败`))}finally{l.value=!1}}).catch(()=>{})}async function _(){se.confirm(J(`@TAG01:确定要推送所有标签到远程仓库吗?`),J(`@TAG01:推送所有标签`),{confirmButtonText:J(`@TAG01:推送`),cancelButtonText:J(`@TAG01:取消`),type:`info`}).then(async()=>{try{l.value=!0;let e=await(await fetch(`/api/push-all-tags`,{method:`POST`})).json();e.success?F.success(J(`@TAG01:所有标签推送成功`)):F.error(e.error||J(`@TAG01:推送标签失败`))}catch(e){console.error(`推送标签失败:`,e),F.error(J(`@TAG01:推送标签失败`))}finally{l.value=!1}}).catch(()=>{})}async function v(e){se.confirm(J(`@TAG01:确定要删除此标签吗?此操作不可恢复。`),J(`@TAG01:删除标签`),{confirmButtonText:J(`@TAG01:删除`),cancelButtonText:J(`@TAG01:取消`),type:`warning`}).then(async()=>{await y(e)}).catch(()=>{})}async function y(e){try{c.value=!0;let t=await(await fetch(`/api/delete-tag`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({tagName:e})})).json();t.success?(F.success(J(`@TAG01:标签删除成功`)),await m()):F.error(t.error||J(`@TAG01:删除标签失败`))}catch(e){console.error(`删除标签失败:`,e),F.error(J(`@TAG01:删除标签失败`))}finally{c.value=!1}}function b(e){if(!e)return`-`;try{return new Date(e).toLocaleString(`zh-CN`,{year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`})}catch{return e}}let x={props:n,gitStore:r,isTagListDialogVisible:i,tags:a,isLoadingTags:o,isDeletingTag:c,isPushingTag:l,tagDetailVisible:u,selectedTag:d,openTagListDialog:f,loadTags:m,viewTagDetail:h,pushTag:g,pushAllTags:_,confirmDeleteTag:v,deleteTag:y,formatDate:b,get $t(){return J},get Sell(){return _e},get Delete(){return ue},get Upload(){return fe},get InfoFilled(){return s},get Refresh(){return p},CommonDialog:Ae};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}});n(),u();var Bt={class:`tag-list-button`},Vt={class:`tag-list-content`},Ht={key:0,class:`tag-header`},Ut={class:`tag-stats`},Wt={class:`stat-item`},Gt={class:`stat-number`},Kt={class:`stat-label`},qt={class:`tag-actions-header`},Jt={class:`tag-list-container`},Yt={key:0,class:`empty-state`},Xt={class:`empty-text`},Zt={class:`empty-hint`},Qt={key:1,class:`tag-cards`},$t={class:`tag-card-content`},en={class:`tag-info`},tn={class:`tag-main-info`},nn={class:`tag-name-badge`},rn={class:`tag-name-text`},an={class:`tag-meta`},on={class:`tag-commit`},sn={class:`tag-date`},cn={key:0,class:`tag-message`},ln={class:`tag-card-actions`},un={key:0,class:`tag-detail-content`},dn={class:`detail-row`},fn={class:`detail-label`},pn={class:`detail-value`},mn={class:`detail-row`},hn={class:`detail-label`},gn={class:`detail-value`},_n={class:`detail-row`},vn={class:`detail-label`},yn={class:`detail-value`},bn={class:`detail-row`},xn={class:`detail-label`},Sn={key:0,class:`detail-row detail-message`},Cn={class:`detail-label`},wn={class:`message-content`};function Tn(t,n,r,i,a,s){let l=g,u=q,d=j,f=Ce,p=y,m=me;return P(),H(`div`,Bt,[C(` 标签列表按钮 `),w(d,{content:i.$t(`@TAG01:查看和管理所有标签`),placement:`top`,"show-after":200,disabled:i.props.variant===`text`},{default:z(()=>[w(u,{type:`info`,onClick:i.openTagListDialog,disabled:!i.gitStore.isGitRepo,circle:i.props.variant===`icon`,size:i.props.variant===`icon`?`small`:`default`,class:_(i.props.variant===`text`?`action-button`:``)},{default:z(()=>[i.props.variant===`icon`?(P(),o(l,{key:0},{default:z(()=>[w(i.Sell)]),_:1})):(P(),H(K,{key:1},[x(V(i.$t(`@TAG01:标签列表`)),1)],64))]),_:1},8,[`disabled`,`circle`,`size`,`class`])]),_:1},8,[`content`,`disabled`]),C(` 标签列表弹窗 `),w(i.CommonDialog,{modelValue:i.isTagListDialogVisible,"onUpdate:modelValue":n[0]||=e=>i.isTagListDialogVisible=e,title:i.$t(`@TAG01:Git 标签列表`),size:`large`,"show-footer":!1,"custom-class":`tag-list-dialog`},{default:z(()=>[c(`div`,Vt,[C(` 头部统计信息 `),i.isLoadingTags?C(`v-if`,!0):(P(),H(`div`,Ht,[c(`div`,Ut,[c(`div`,Wt,[w(l,{class:`stat-icon`},{default:z(()=>[w(i.Sell)]),_:1}),c(`span`,Gt,V(i.tags.length),1),c(`span`,Kt,V(i.$t(`@TAG01:个标签`)),1)])]),c(`div`,qt,[w(u,{type:`primary`,size:`small`,icon:i.Refresh,onClick:i.loadTags,loading:i.isLoadingTags,class:`refresh-btn`},{default:z(()=>[x(V(i.$t(`@TAG01:刷新`)),1)]),_:1},8,[`icon`,`loading`]),i.tags.length>0?(P(),o(u,{key:0,type:`success`,size:`small`,icon:i.Upload,onClick:i.pushAllTags,loading:i.isPushingTag,class:`push-all-btn`},{default:z(()=>[x(V(i.$t(`@TAG01:推送所有标签`)),1)]),_:1},8,[`icon`,`loading`])):C(`v-if`,!0)])])),C(` 标签列表 `),le((P(),H(`div`,Jt,[i.tags.length===0&&!i.isLoadingTags?(P(),H(`div`,Yt,[w(f,{description:i.$t(`@TAG01:暂无标签`),"image-size":120},{image:z(()=>[w(l,{class:`empty-icon`},{default:z(()=>[w(i.Sell)]),_:1})]),description:z(()=>[c(`p`,Xt,V(i.$t(`@TAG01:还没有创建任何标签`)),1),c(`p`,Zt,V(i.$t(`@TAG01:使用创建标签功能为项目添加版本标记`)),1)]),_:1},8,[`description`])])):(P(),H(`div`,Qt,[(P(!0),H(K,null,e(i.tags,e=>(P(),H(`div`,{key:e.name,class:`tag-card`},[c(`div`,$t,[c(`div`,en,[c(`div`,tn,[c(`div`,nn,[w(l,{class:`badge-icon`},{default:z(()=>[w(i.Sell)]),_:1}),c(`span`,rn,V(e.name),1),w(p,{size:`small`,type:e.type===`annotated`?`warning`:`info`,class:`type-tag`},{default:z(()=>[x(V(e.type===`annotated`?i.$t(`@TAG01:附注`):i.$t(`@TAG01:轻量`)),1)]),_:2},1032,[`type`])]),c(`div`,an,[c(`span`,on,[w(l,null,{default:z(()=>[w(i.InfoFilled)]),_:1}),x(` `+V(e.commit.substring(0,8)),1)]),c(`span`,sn,V(i.formatDate(e.date)),1)]),e.message?(P(),H(`div`,cn,V(e.message),1)):C(`v-if`,!0)])]),c(`div`,ln,[e.message?(P(),o(u,{key:0,size:`small`,type:`info`,onClick:t=>i.viewTagDetail(e),class:`action-btn view-btn`},{default:z(()=>[x(V(i.$t(`@TAG01:查看`)),1)]),_:1},8,[`onClick`])):C(`v-if`,!0),w(u,{size:`small`,type:`success`,icon:i.Upload,onClick:t=>i.pushTag(e.name),loading:i.isPushingTag,class:`action-btn push-btn`},{default:z(()=>[x(V(i.$t(`@TAG01:推送`)),1)]),_:1},8,[`icon`,`onClick`,`loading`]),w(u,{size:`small`,type:`danger`,icon:i.Delete,onClick:t=>i.confirmDeleteTag(e.name),loading:i.isDeletingTag,class:`action-btn delete-btn`},{default:z(()=>[x(V(i.$t(`@TAG01:删除`)),1)]),_:1},8,[`icon`,`onClick`,`loading`])])])]))),128))]))])),[[m,i.isLoadingTags]])])]),_:1},8,[`modelValue`,`title`]),C(` 标签详情弹窗 `),w(i.CommonDialog,{modelValue:i.tagDetailVisible,"onUpdate:modelValue":n[1]||=e=>i.tagDetailVisible=e,title:i.$t(`@TAG01:标签详情`),size:`medium`,"show-footer":!1,"custom-class":`tag-detail-dialog`},{default:z(()=>[i.selectedTag?(P(),H(`div`,un,[c(`div`,dn,[c(`span`,fn,V(i.$t(`@TAG01:标签名称:`)),1),c(`code`,pn,V(i.selectedTag.name),1)]),c(`div`,mn,[c(`span`,hn,V(i.$t(`@TAG01:提交SHA:`)),1),c(`code`,gn,V(i.selectedTag.commit),1)]),c(`div`,_n,[c(`span`,vn,V(i.$t(`@TAG01:创建时间:`)),1),c(`span`,yn,V(i.formatDate(i.selectedTag.date)),1)]),c(`div`,bn,[c(`span`,xn,V(i.$t(`@TAG01:类型:`)),1),w(p,{type:i.selectedTag.type===`annotated`?`warning`:`info`,size:`small`},{default:z(()=>[x(V(i.selectedTag.type===`annotated`?i.$t(`@TAG01:附注标签`):i.$t(`@TAG01:轻量标签`)),1)]),_:1},8,[`type`])]),i.selectedTag.message?(P(),H(`div`,Sn,[c(`span`,Cn,V(i.$t(`@TAG01:标签说明:`)),1),c(`div`,wn,V(i.selectedTag.message),1)])):C(`v-if`,!0)])):C(`v-if`,!0)]),_:1},8,[`modelValue`,`title`])])}var En=Y(zt,[[`render`,Tn],[`__scopeId`,`data-v-8d9468ec`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/buttons/TagListButton.vue`]]);n(),G();var Dn=h({__name:`GitOperationsButton`,props:{variant:{type:String,required:!1,default:`icon`},hasUserCommitMessage:{type:Boolean,required:!1,default:!1},finalCommitMessage:{type:String,required:!1,default:``},skipHooks:{type:Boolean,required:!1,default:!1}},emits:[`afterCommit`,`afterPush`,`beforePush`,`clearFields`],setup(e,{expose:t,emit:n}){let r=e,i=n,a=Z(),o=R(!1),c=R(!1),l=R({needsMerge:!1,error:``,fullError:``,pullOutput:``});function u(){o.value=!0}let d=O(()=>a.fileList.filter(e=>e.type===`added`).length),f=O(()=>a.branchBehind>0),p=O(()=>a.fileList.some(e=>[`modified`,`deleted`,`untracked`,`intent-to-add`].includes(e.type)));async function m(){try{let e=await a.gitPull();e.success?(await a.fetchStatus(),await a.fetchLog(!1)):(l.value={needsMerge:e.needsMerge,error:e.error,fullError:e.fullError,pullOutput:e.pullOutput},c.value=!0)}catch(e){console.error(`拉取失败:`,e)}}async function h(){try{await a.gitFetchAll(),await a.fetchStatus(),await a.fetchLog(!1)}catch(e){console.error(`获取远程分支失败:`,e)}}async function g(){if(r.hasUserCommitMessage)try{await a.addAndCommit(r.finalCommitMessage,r.skipHooks),a.fetchStatus(),a.fetchLog(),i(`afterCommit`,!0),i(`clearFields`)}catch(e){console.error(`暂存并提交失败:`,e)}}function _(){i(`beforePush`)}function v(e){i(`afterPush`,e)}function y(){i(`clearFields`)}t({openGitOperationsDrawer:u});let b={props:r,emit:i,gitStore:a,gitOperationsDrawerVisible:o,pullErrorDialogVisible:c,pullErrorInfo:l,openGitOperationsDrawer:u,stagedFilesCount:d,needsPull:f,hasUnstagedChanges:p,handleGitPull:m,handleGitFetchAll:h,addAndCommit:g,handleQuickPushBefore:_,handleQuickPushAfter:v,handleClearFields:y,get $t(){return J},get Menu(){return S},get RefreshRight(){return M},get Download(){return de},get Connection(){return ve},get Edit(){return oe},get InfoFilled(){return s},IconButton:De,StageButton:He,UnstageAllButton:Pe,CommitButton:Ke,PushButton:bt,QuickPushButton:Dt,MergeBranchButton:Ie,StashChangesButton:Fe,StashListButton:Me,CreateTagButton:Rt,TagListButton:En,ResetToRemoteButton:Le,CommonDialog:Ae};return Object.defineProperty(b,"__isScriptSetup",{enumerable:!1,value:!0}),b}});n(),u();var On={class:`git-operations-button`},kn={class:`actions-section`},An={class:`action-groups`},jn={class:`action-group`},Mn={class:`group-title`},Nn={class:`group-buttons`},Pn={key:0},Fn={class:`action-group`},In={class:`group-title`},Ln={class:`group-buttons`},Rn={class:`action-group`},zn={class:`group-title`},Bn={class:`group-buttons`},Vn={key:0},Hn={class:`action-group`},Un={class:`group-title`},Wn={class:`group-buttons`},Gn={class:`action-group`},Kn={class:`group-title`},qn={class:`group-buttons`},Jn={class:`action-group`},Yn={class:`group-title`},Xn={class:`group-buttons`},Zn={class:`pull-error-content`},Qn={key:0},$n={key:1},er={class:`pull-error-detail`},tr={class:`pull-error-label`},nr={class:`pull-error-pre`};function rr(e,t,n,r,i,a){let s=g,l=q,u=j,d=D;return P(),H(`div`,On,[C(` Git操作按钮 `),r.props.variant===`icon`?(P(),o(r.IconButton,{key:0,tooltip:r.$t(`@F13B4:Git 操作`),size:`large`,"custom-class":`btn-rotate-on-hover`,onClick:r.openGitOperationsDrawer},{default:z(()=>[w(s,null,{default:z(()=>[w(r.Menu)]),_:1})]),_:1},8,[`tooltip`])):(P(),o(l,{key:1,type:`primary`,class:`action-button`,onClick:r.openGitOperationsDrawer},{default:z(()=>[x(V(r.$t(`@F13B4:Git 操作`)),1)]),_:1})),C(` Git操作抽屉 `),w(d,{modelValue:r.gitOperationsDrawerVisible,"onUpdate:modelValue":t[2]||=e=>r.gitOperationsDrawerVisible=e,title:r.$t(`@76872:Git 操作`),direction:`rtl`,size:`362px`,"with-header":!0,"show-close":!0,"destroy-on-close":!1,"append-to-body":!0,class:`git-operations-drawer`},{default:z(()=>[c(`div`,kn,[c(`div`,An,[C(` 基础操作 `),c(`div`,jn,[c(`div`,Mn,V(r.$t(`@76872:基础操作`)),1),c(`div`,Nn,[w(r.StageButton,{onClick:()=>{},from:`drawer`}),w(r.UnstageAllButton,{onClick:()=>{},from:`drawer`}),w(r.CommitButton,{"has-user-commit-message":n.hasUserCommitMessage,"final-commit-message":n.finalCommitMessage,"skip-hooks":n.skipHooks,onBeforeCommit:()=>{},onAfterCommit:t[0]||=e=>r.emit(`afterCommit`,e),onClick:()=>{},from:`drawer`},null,8,[`has-user-commit-message`,`final-commit-message`,`skip-hooks`]),w(r.PushButton,{onBeforePush:()=>{},onAfterPush:t[1]||=e=>r.emit(`afterPush`,e),onClick:()=>{},from:`drawer`}),w(u,{content:r.gitStore.hasConflictedFiles?r.$t(`@76872:存在冲突文件,请先解决冲突`):r.needsPull?`${r.$t(`@76872:拉取`)}${r.gitStore.branchBehind}${r.$t(`@76872:个远程提交`)}`:`git pull`,placement:`top`},{default:z(()=>[w(l,{type:`primary`,icon:r.Download,onClick:r.handleGitPull,loading:r.gitStore.isGitPulling,disabled:!r.gitStore.hasUpstream||r.gitStore.hasConflictedFiles,class:`action-button`,style:N(r.gitStore.hasUpstream&&!r.gitStore.hasConflictedFiles?{color:`white`,backgroundColor:`var(--color-primary)`,borderColor:`var(--color-primary)`}:{})},{default:z(()=>[x(V(r.$t(`@76872:拉取`))+` `,1),r.needsPull?(P(),H(`span`,Pn,`(`+V(r.gitStore.branchBehind)+`)`,1)):C(`v-if`,!0)]),_:1},8,[`icon`,`loading`,`disabled`,`style`])]),_:1},8,[`content`]),w(u,{content:`git fetch --all`,placement:`top`},{default:z(()=>[w(l,{type:`info`,icon:r.Connection,onClick:r.handleGitFetchAll,loading:r.gitStore.isGitFetching,class:`action-button`,style:{color:`white`,"background-color":`var(--color-primary)`,"border-color":`var(--color-primary)`}},{default:z(()=>[x(V(r.$t(`@76872:获取所有远程分支`)),1)]),_:1},8,[`icon`,`loading`])]),_:1})])]),C(` 组合操作 `),c(`div`,Fn,[c(`div`,In,V(r.$t(`@76872:组合操作`)),1),c(`div`,Ln,[w(u,{content:r.gitStore.hasConflictedFiles?r.$t(`@76872:存在冲突文件,请先解决冲突`):`git add + git commit`,placement:`top`},{default:z(()=>[w(l,{type:`primary`,icon:r.Edit,onClick:r.addAndCommit,loading:r.gitStore.isAddingFiles||r.gitStore.isCommiting,disabled:!r.hasUnstagedChanges||!n.hasUserCommitMessage||r.gitStore.hasConflictedFiles,class:`action-button`},{default:z(()=>[x(V(r.$t(`@76872:暂存并提交`)),1)]),_:1},8,[`icon`,`loading`,`disabled`])]),_:1},8,[`content`]),w(r.QuickPushButton,{from:`drawer`,"has-user-commit-message":n.hasUserCommitMessage,"final-commit-message":n.finalCommitMessage,"skip-hooks":n.skipHooks,onBeforePush:r.handleQuickPushBefore,onAfterPush:r.handleQuickPushAfter,onClearFields:r.handleClearFields},null,8,[`has-user-commit-message`,`final-commit-message`,`skip-hooks`])])]),C(` 重置操作 `),c(`div`,Rn,[c(`div`,zn,V(r.$t(`@76872:重置操作`)),1),c(`div`,Bn,[w(u,{content:r.stagedFilesCount>0?`${r.$t(`@76872:撤销`)}${r.stagedFilesCount}${r.$t(`@76872:个已暂存文件`)}`:`git reset HEAD`,placement:`top`},{default:z(()=>[w(l,{type:`warning`,icon:r.RefreshRight,onClick:r.gitStore.resetHead,loading:r.gitStore.isResetting,disabled:r.stagedFilesCount===0||r.gitStore.hasConflictedFiles,class:`action-button reset-button`},{default:z(()=>[x(V(r.$t(`@76872:重置暂存区`))+` `,1),r.stagedFilesCount>0?(P(),H(`span`,Vn,`(`+V(r.stagedFilesCount)+`)`,1)):C(`v-if`,!0)]),_:1},8,[`icon`,`onClick`,`loading`,`disabled`])]),_:1},8,[`content`]),w(r.ResetToRemoteButton,{variant:`text`})])]),C(` 分支操作 `),c(`div`,Hn,[c(`div`,Un,V(r.$t(`@76872:分支操作`)),1),c(`div`,Wn,[w(r.MergeBranchButton,{variant:`text`})])]),C(` 储藏操作 `),c(`div`,Gn,[c(`div`,Kn,V(r.$t(`@76872:储藏操作`)),1),c(`div`,qn,[w(r.StashChangesButton,{variant:`text`}),w(r.StashListButton,{variant:`text`})])]),C(` 标签操作 `),c(`div`,Jn,[c(`div`,Yn,V(r.$t(`@TAG01:标签操作`)),1),c(`div`,Xn,[w(r.CreateTagButton,{variant:`text`}),w(r.TagListButton,{variant:`text`})])])])])]),_:1},8,[`modelValue`,`title`]),C(` Pull 失败错误详情弹窗 `),w(r.CommonDialog,{modelValue:r.pullErrorDialogVisible,"onUpdate:modelValue":t[3]||=e=>r.pullErrorDialogVisible=e,title:r.pullErrorInfo.needsMerge?r.$t(`@76872:需要合并更改`):r.$t(`@76872:拉取失败`),size:`medium`,"show-footer":!0,"show-cancel":!1,"confirm-text":r.$t(`@76872:我知道了`),"append-to-body":!0,onConfirm:t[4]||=e=>r.pullErrorDialogVisible=!1},{default:z(()=>[c(`div`,Zn,[c(`div`,{class:_([`pull-error-type`,r.pullErrorInfo.needsMerge?`is-warning`:`is-error`])},[w(s,{class:`pull-error-icon`},{default:z(()=>[w(r.InfoFilled)]),_:1}),r.pullErrorInfo.needsMerge?(P(),H(`span`,Qn,V(r.$t(`@76872:本地存在未提交的更改,与远程内容冲突,请先处理本地更改后再拉取。`)),1)):(P(),H(`span`,$n,V(r.$t(`@76872:执行 git pull 时发生错误,请查看详细信息。`)),1))],2),c(`div`,er,[c(`div`,tr,V(r.$t(`@76872:错误详情`))+`:`,1),c(`pre`,nr,V(r.pullErrorInfo.fullError||r.pullErrorInfo.error),1)])])]),_:1},8,[`modelValue`,`title`,`confirm-text`])])}var ir=Y(Dn,[[`render`,rr],[`__scopeId`,`data-v-3357e454`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/buttons/GitOperationsButton.vue`]]);n();var ar=h({__name:`GlobalLoading`,props:{visible:{type:Boolean,required:!1,default:!1},text:{type:String,required:!1,default:J(`@2AEBA:加载中...`)},showProgress:{type:Boolean,required:!1,default:!1},progress:{type:Number,required:!1,default:0},mock:{type:Boolean,required:!1,default:!1}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});n(),u(),B();var or={class:`loading-container`},sr={class:`loading-text`},cr={key:0,class:`loading-progress`};function lr(e,t,n,r,i,s){return P(),o(a,{to:`body`},[w(U,{name:`loading-fade`},{default:z(()=>[n.visible||n.mock?(P(),H(`div`,{key:0,class:`global-loading-overlay`,onClick:t[0]||=L(()=>{},[`stop`])},[c(`div`,or,[C(` 主加载器 `),t[1]||=c(`div`,{class:`loading-spinner`},[c(`div`,{class:`spinner-ring`}),c(`div`,{class:`spinner-ring`}),c(`div`,{class:`spinner-ring`})],-1),C(` 加载文字 `),c(`div`,sr,V(n.text),1),C(` 进度条(可选/Mock) `),n.showProgress||n.mock?(P(),H(`div`,cr,[c(`div`,{class:_([`progress-bar`,{"is-mock":n.mock&&!n.showProgress}]),style:N(n.showProgress?{width:n.progress+`%`}:void 0)},null,6)])):C(`v-if`,!0)])])):C(`v-if`,!0)]),_:1})])}var ur=Y(ar,[[`render`,lr],[`__scopeId`,`data-v-77e24a5f`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/GlobalLoading.vue`]]);n();var dr=h({__name:`SuccessModal`,props:{visible:{type:Boolean,required:!1,default:!1},text:{type:String,required:!1,default:J(`@71545:操作成功!`)},description:{type:String,required:!1,default:``}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});n(),u(),B();var fr={class:`success-container`},pr={class:`success-text`},mr={key:0,class:`success-description`};function hr(e,t,n,r,i,s){return P(),o(a,{to:`body`},[w(U,{name:`success-fade`},{default:z(()=>[n.visible?(P(),H(`div`,{key:0,class:`success-overlay`,onClick:t[0]||=L(()=>{},[`stop`])},[c(`div`,fr,[C(` 成功图标 `),t[1]||=c(`div`,{class:`success-icon`},[c(`svg`,{viewBox:`0 0 52 52`,class:`success-svg`},[c(`circle`,{class:`success-circle`,cx:`26`,cy:`26`,r:`25`,fill:`none`}),c(`path`,{class:`success-check`,fill:`none`,d:`m14.1 27.2l7.1 7.2 16.7-16.8`})])],-1),C(` 成功文字 `),c(`div`,pr,V(n.text),1),C(` 描述文字 `),n.description?(P(),H(`div`,mr,V(n.description),1)):C(`v-if`,!0)])])):C(`v-if`,!0)]),_:1})])}var gr=Y(dr,[[`render`,hr],[`__scopeId`,`data-v-30ab4535`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/SuccessModal.vue`]]);G();var $=xe({visible:!1,text:J(`@F2A3A:加载中...`),showProgress:!1,progress:0});function _r(){return{loadingState:$,show:e=>{$.visible=!0,$.text=e?.text||J(`@F2A3A:加载中...`),$.showProgress=e?.showProgress||!1,$.progress=e?.progress||0},hide:()=>{$.visible=!1},updateProgress:e=>{$.progress=Math.max(0,Math.min(100,e))},updateText:e=>{$.text=e},setText:e=>{$.visible&&($.text=e)}}}G();var vr=xe({visible:!1,text:J(`@B8591:操作成功!`),description:``});function yr(){let e=e=>{vr.visible=!0,vr.text=e?.text||J(`@B8591:操作成功!`),vr.description=e?.description||``;let n=e?.duration||2e3;setTimeout(()=>{t()},n)},t=()=>{vr.visible=!1};return{successState:vr,show:e,hide:t}}n();var br=h({__name:`QuickCommitButton`,props:{from:{type:String,required:!1,default:`form`},hasUserCommitMessage:{type:Boolean,required:!1,default:!1},finalCommitMessage:{type:String,required:!1,default:``},skipHooks:{type:Boolean,required:!1,default:!1}},emits:[`beforeCommit`,`afterCommit`,`clearFields`],setup(e,{expose:t,emit:n}){let r=Z(),i=X(),a=e,o=n,s=O(()=>r.fileList.some(e=>!Q(e.path,i.lockedFiles))),c=O(()=>r.isSelectionMode&&r.selectedFiles.size>0&&r.selectedUnstagedPaths.length>0),l=O(()=>r.hasConflictedFiles?!0:r.isSelectionMode?!c.value||!a.hasUserCommitMessage:!s.value||!a.hasUserCommitMessage),u=O(()=>r.isAddingFiles||r.isCommiting),d=O(()=>r.hasConflictedFiles?J(`@2E184:存在冲突文件,请先解决冲突`):r.isSelectionMode?r.selectedFiles.size===0?J(`@2E184:请先勾选要提交的文件`):r.selectedUnstagedPaths.length===0?J(`@2E184:所选文件无需暂存或被锁定`):a.hasUserCommitMessage?J(`@2E184:一键完成:仅暂存所选文件 → 提交`):J(`@2E184:请输入提交信息`):s.value?a.hasUserCommitMessage?J(`@2E184:一键完成:暂存所有更改 → 提交`):J(`@2E184:请输入提交信息`):J(`@2E184:没有需要提交的更改`)),f=O(()=>r.isSelectionMode&&c.value?J(`@2E184:一键提交所选`):J(`@2E184:一键提交`)),p=O(()=>a.from===`form`?r.isSelectionMode&&c.value?J(`@2E184:暂存所选 + 提交`):J(`@2E184:暂存 + 提交`):``);async function m(){o(`beforeCommit`);try{let e=await r.stageSelectedAndCommit(a.finalCommitMessage,a.skipHooks);e&&o(`clearFields`),o(`afterCommit`,e)}catch(e){console.error(`一键提交失败:`,e),o(`afterCommit`,!1)}}t({triggerQuickCommit:m});let h={gitStore:r,configStore:i,props:a,emit:o,hasAnyChanges:s,hasSelectedToStage:c,isDisabled:l,isLoading:u,tooltipText:d,buttonTitle:f,buttonDesc:p,handleQuickCommit:m,get ElTooltip(){return j},get Edit(){return oe}};return Object.defineProperty(h,"__isScriptSetup",{enumerable:!1,value:!0}),h}});n(),u();var xr={class:`one-commit-content`},Sr={class:`one-commit-text`},Cr={class:`one-commit-title`},wr={key:0,class:`one-commit-desc`};function Tr(e,t,n,r,i,a){let o=g,s=q;return P(),H(`div`,null,[w(r.ElTooltip,{content:r.tooltipText,placement:`top`,"show-after":200},{default:z(()=>[w(s,{type:`primary`,onClick:r.handleQuickCommit,loading:r.isLoading,disabled:r.isDisabled,class:_([n.from,`one-commit-button`])},{default:z(()=>[c(`div`,xr,[w(o,{class:`one-commit-icon`},{default:z(()=>[w(r.Edit)]),_:1}),c(`div`,Sr,[c(`span`,Cr,V(r.buttonTitle),1),n.from===`form`?(P(),H(`span`,wr,V(r.buttonDesc),1)):C(`v-if`,!0)])])]),_:1},8,[`loading`,`disabled`,`class`])]),_:1},8,[`content`])])}var Er=Y(br,[[`render`,Tr],[`__scopeId`,`data-v-0c962829`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/buttons/QuickCommitButton.vue`]]);n();var Dr=h({__name:`AiQuickPushButton`,props:{from:{type:String,required:!1,default:`form`},generating:{type:Boolean,required:!1,default:!1}},emits:[`trigger`],setup(e,{expose:t,emit:n}){t();let r=Z(),i=X(),a=e,o=n,s=O(()=>r.fileList.some(e=>!Q(e.path,i.lockedFiles))),c=O(()=>r.isSelectionMode&&r.selectedFiles.size>0&&r.selectedUnstagedPaths.length>0),l=O(()=>!r.isSelectionMode&&!s.value&&r.branchAhead>0),u=O(()=>r.hasConflictedFiles||!r.hasUpstream?!0:r.isSelectionMode?!c.value:!s.value&&r.branchAhead===0),d=O(()=>a.generating||r.isAddingFiles||r.isCommiting||r.isPushing),f=O(()=>r.hasConflictedFiles?J(`@2E184:存在冲突文件,请先解决冲突`):r.hasUpstream?a.generating?J(`@2E184:AI 正在生成提交信息…`):r.isSelectionMode?c.value?J(`@2E184:一键完成:AI 生成提交信息 → 仅暂存所选文件 → 提交 → 推送`):J(`@2E184:请先勾选要推送的文件`):!s.value&&r.branchAhead===0?J(`@2E184:没有需要提交或推送的更改`):s.value?J(`@2E184:一键完成:AI 生成提交信息 → 暂存所有更改 → 提交 → 推送`):J(`@2E184:本地已提交,AI 将直接推送到远程仓库`):J(`@2E184:当前分支没有上游分支`)),p=O(()=>r.isSelectionMode&&c.value?J(`@2E184:AI 提交并推送所选`):J(`@2E184:AI 提交并推送`)),m=O(()=>a.from===`form`?l.value?J(`@2E184:本地已提交,直接推送`):J(`@2E184:AI 生成信息 + 推送`):``);function h(){u.value||d.value||o(`trigger`)}let g={gitStore:r,configStore:i,props:a,emit:o,hasAnyChanges:s,hasSelectedToStage:c,isPushOnly:l,isDisabled:u,isLoading:d,tooltipText:f,buttonTitle:p,buttonDesc:m,handleClick:h,get ElTooltip(){return j},SvgIcon:Ee};return Object.defineProperty(g,"__isScriptSetup",{enumerable:!1,value:!0}),g}});n(),u();var Or={class:`one-ai-push`},kr={class:`one-ai-push-content`},Ar={class:`one-ai-push-text`},jr={class:`one-ai-push-title`},Mr={key:0,class:`one-ai-push-desc`};function Nr(e,t,n,r,i,a){let o=q;return P(),H(`div`,Or,[w(r.ElTooltip,{content:r.tooltipText,placement:`top`,"show-after":200},{default:z(()=>[w(o,{type:`primary`,onClick:r.handleClick,loading:r.isLoading,disabled:r.isDisabled,class:_([n.from,`one-ai-push-button`])},{default:z(()=>[c(`div`,kr,[w(r.SvgIcon,{class:`one-ai-push-icon`,"icon-class":`ai-commit`,style:{color:`#fff`}}),c(`div`,Ar,[c(`span`,jr,V(r.buttonTitle),1),n.from===`form`?(P(),H(`span`,Mr,V(r.buttonDesc),1)):C(`v-if`,!0)])])]),_:1},8,[`loading`,`disabled`,`class`])]),_:1},8,[`content`])])}var Pr=Y(Dr,[[`render`,Nr],[`__scopeId`,`data-v-0a8120f6`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/buttons/AiQuickPushButton.vue`]]);n(),G();var Fr=h({__name:`GitActionButtons`,props:{hasUserCommitMessage:{type:Boolean,required:!1,default:!1},finalCommitMessage:{type:String,required:!1,default:``},skipHooks:{type:Boolean,required:!1,default:!1},from:{type:String,required:!1,default:`form`},aiGenerating:{type:Boolean,required:!1,default:!1}},emits:[`afterCommit`,`afterPush`,`beforePush`,`pushStart`,`clearFields`,`aiQuickPush`],setup(e,{expose:t,emit:n}){let r=n,i=R(null);function a(e){r(`afterCommit`,e)}function o(e){r(`afterPush`,e)}function s(){r(`beforePush`)}function c(){r(`pushStart`)}function l(){r(`clearFields`)}function u(){r(`aiQuickPush`)}async function d(){return i.value?.triggerQuickPush()}t({triggerQuickPush:d});let f={emit:r,quickPushRef:i,handleAfterCommit:a,handleAfterPush:o,handleBeforePush:s,handlePushStart:c,handleClearFields:l,handleAiQuickPush:u,triggerQuickPush:d,StageButton:He,CommitButton:Ke,PushButton:bt,QuickPushButton:Dt,QuickCommitButton:Er,AiQuickPushButton:Pr};return Object.defineProperty(f,"__isScriptSetup",{enumerable:!1,value:!0}),f}});n();var Ir={class:`form-bottom-actions`},Lr={class:`actions-flex-container`},Rr={class:`left-actions`},zr={class:`button-grid`},Br={class:`right-actions`};function Vr(e,t,n,r,i,a){return P(),H(`div`,Ir,[c(`div`,Lr,[c(`div`,Rr,[c(`div`,zr,[w(r.StageButton,{onClick:()=>{},from:n.from},null,8,[`from`]),w(r.CommitButton,{"has-user-commit-message":n.hasUserCommitMessage,"final-commit-message":n.finalCommitMessage,"skip-hooks":n.skipHooks,onBeforeCommit:()=>{},onAfterCommit:r.handleAfterCommit,onClick:()=>{},from:n.from},null,8,[`has-user-commit-message`,`final-commit-message`,`skip-hooks`,`from`]),w(r.PushButton,{onBeforePush:()=>{},onAfterPush:r.handleAfterPush,onClick:()=>{},from:n.from},null,8,[`from`])])]),c(`div`,Br,[w(r.QuickCommitButton,{from:n.from,"has-user-commit-message":n.hasUserCommitMessage,"final-commit-message":n.finalCommitMessage,"skip-hooks":n.skipHooks,onAfterCommit:r.handleAfterCommit,onClearFields:r.handleClearFields},null,8,[`from`,`has-user-commit-message`,`final-commit-message`,`skip-hooks`]),w(r.QuickPushButton,{ref:`quickPushRef`,from:n.from,"has-user-commit-message":n.hasUserCommitMessage,"final-commit-message":n.finalCommitMessage,"skip-hooks":n.skipHooks,onBeforePush:r.handleBeforePush,onPushStart:r.handlePushStart,onAfterPush:r.handleAfterPush,onClearFields:r.handleClearFields},null,8,[`from`,`has-user-commit-message`,`final-commit-message`,`skip-hooks`]),w(r.AiQuickPushButton,{from:n.from,generating:n.aiGenerating,onTrigger:r.handleAiQuickPush},null,8,[`from`,`generating`])])])])}var Hr=Y(Fr,[[`render`,Vr],[`__scopeId`,`data-v-12b4dc63`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/GitActionButtons.vue`]]);n(),G();var Ur=h({__name:`CommandHistory`,setup(e,{expose:n}){n();let r=Z(),i=R([]),a=R(!1);function o(e){return Array.isArray(e)?e.join(` `):e==null?``:String(e)}let s=R(!1),c=R(!1),l=R(!1),u=R(new Set),d=R(!1),p=R(!1),m=R(`all`),h=R(`all`),g=R(``),_=O(()=>{let e=i.value;if(m.value!==`all`&&(e=e.filter(e=>m.value===`success`?e.success:!e.success)),h.value!==`all`&&(e=e.filter(e=>{let t=o(e.command).startsWith(`git `);return h.value===`git`?t:!t})),g.value.trim()){let t=g.value.toLowerCase();e=e.filter(e=>o(e.command).toLowerCase().includes(t)||e.stdout&&e.stdout.toLowerCase().includes(t)||e.stderr&&e.stderr.toLowerCase().includes(t)||e.error&&e.error.toLowerCase().includes(t))}return e}),v=O(()=>i.value.filter(e=>e.success).length),y=O(()=>i.value.filter(e=>!e.success).length),b=O(()=>i.value.filter(e=>o(e.command).startsWith(`git `)).length),x=O(()=>i.value.filter(e=>!o(e.command).startsWith(`git `)).length);function S(){p.value=!0,i.value.length===0&&C()}async function C(){try{if(a.value=!0,r.socket&&r.socket.connected)r.socket.emit(`request_full_history`);else{let e=await(await fetch(`/api/command-history`)).json();e.success?i.value=e.history:F.error(`${J(`@81F0F:加载命令历史失败: `)}${e.error}`)}}catch(e){F.error(`${J(`@81F0F:加载命令历史失败: `)}${e.message}`)}finally{a.value=!1}}async function w(){if(_.value.length===0){F.warning(J(`@81F0F:没有可复制的命令历史`));return}try{c.value=!0;let e=_.value.map(e=>{let t=`# ${k(e.timestamp)}${J(`@81F0F: (耗时: `)}${A(e.executionTime)}) - ${e.success?J(`@81F0F:成功`):J(`@81F0F:失败`)}\n`;if(t+=`${o(e.command)}\n`,e.stdout&&(t+=`\n# 输出:\n${e.stdout}\n`),e.stderr){let n=P(e.command)?J(`@81F0F:输出信息`):J(`@81F0F:错误输出`);t+=`\n# ${n}:\n${e.stderr}\n`}return e.error&&(t+=`\n# 错误信息:\n${e.error}\n`),t}).join(`
2
2
  ---
3
3
 
4
4
  `);await navigator.clipboard.writeText(e),F({message:J(`@81F0F:命令历史已复制到剪贴板`),type:`success`,zIndex:1e5})}catch(e){F.error(`${J(`@81F0F:复制失败: `)}${e.message}`)}finally{c.value=!1}}async function E(){if(_.value.length===0){F.warning(J(`@81F0F:没有可复制的命令`));return}try{d.value=!0;let e=_.value.map(e=>o(e.command)).join(`
@@ -1 +1 @@
1
- import"./rolldown-runtime-C0FnF6B9.js";import{Bn as e,Dn as t,E as n,En as r,Fr as i,In as a,Jr as o,Nn as s,On as c,Pn as l,Tn as u,Wn as d,Xr as f,Zn as p,cr as m,ei as h,er as g,ir as _,jn as v,z as y}from"./element-plus-Buzx8xRf.js";import{n as b,t as x}from"./_plugin-vue_export-helper-VuE2vqnn.js";e();var S=a({__name:`CommonDialog`,props:{modelValue:{type:Boolean,required:!0},title:{type:String,required:!0},size:{type:String,required:!1,default:`medium`},type:{type:String,required:!1,default:`default`},width:{type:String,required:!1},height:{type:String,required:!1},top:{type:String,required:!1,default:`50px`},closeOnClickModal:{type:Boolean,required:!1,default:!1},closeOnPressEscape:{type:Boolean,required:!1,default:!0},destroyOnClose:{type:Boolean,required:!1,default:!1},draggable:{type:Boolean,required:!1,default:!1},customClass:{type:String,required:!1},modalClass:{type:String,required:!1},appendToBody:{type:Boolean,required:!1,default:!0},lockScroll:{type:Boolean,required:!1,default:!0},zIndex:{type:Number,required:!1},showClose:{type:Boolean,required:!1,default:!0},heightMode:{type:String,required:!1,default:`max`},heightOffset:{type:String,required:!1,default:`100px`},showFooter:{type:Boolean,required:!1,default:!1},confirmText:{type:String,required:!1,default:b(`@803A9:确定`)},cancelText:{type:String,required:!1,default:b(`@803A9:取消`)},showCancel:{type:Boolean,required:!1,default:!0},confirmLoading:{type:Boolean,required:!1,default:!1}},emits:[`update:modelValue`,`confirm`,`cancel`,`close`,`opened`,`closed`],setup(e,{expose:t,emit:r}){t();let i=e,a=r,o=u(()=>{if(i.width)return i.width;switch(i.size){case`small`:return`30%`;case`medium`:return`50%`;case`large`:return`80%`;case`extra-large`:return`90%`;case`fullscreen`:return`100vw`;default:return`50%`}}),s=_(),c=null;function l(){a(`opened`),d(()=>{let e=document.querySelector(`.el-dialog__wrapper:not([style*="display: none"]) .el-dialog`);e&&(e.querySelector(`button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])`)||e).focus?.()})}function f(){a(`closed`),c&&typeof c.focus==`function`&&(d(()=>c?.focus()),c=null)}function p(e){e&&!i.modelValue&&(c=document.activeElement),a(`update:modelValue`,e)}let m=u(()=>i.size===`fullscreen`?`0`:i.top),h=u(()=>{let e=[];return i.customClass&&e.push(i.customClass),i.type===`flex`&&e.push(`common-dialog--flex`),i.type===`full-height`&&e.push(`common-dialog--full-height`),i.size===`fullscreen`&&e.push(`common-dialog--fullscreen`),e.join(` `)}),g=u(()=>{if(i.size===`fullscreen`)return{height:`100vh`,maxHeight:`100vh`};let e=`calc(100% - ${i.heightOffset})`;return i.heightMode===`fixed`?{height:e}:{maxHeight:e}});function v(){a(`update:modelValue`,!1),a(`close`)}function y(){a(`confirm`)}function b(){a(`cancel`),v()}let x={props:i,emit:a,dialogWidth:o,titleId:s,get previouslyFocused(){return c},set previouslyFocused(e){c=e},handleOpened:l,handleClosed:f,handleUpdateModelValue:p,dialogTop:m,dialogClass:h,dialogStyle:g,handleClose:v,handleConfirm:y,handleCancel:b,get ElDialog(){return n}};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}});e(),i();var C=[`id`],w={class:`common-dialog__footer`};function T(e,n,i,a,u,d){let _=y;return p(),t(a.ElDialog,{"model-value":i.modelValue,title:i.title,width:a.dialogWidth,top:a.dialogTop,style:f(a.dialogStyle),"z-index":i.zIndex,fullscreen:i.size===`fullscreen`,"close-on-click-modal":i.closeOnClickModal,"close-on-press-escape":i.closeOnPressEscape,"destroy-on-close":i.destroyOnClose,draggable:i.draggable,class:o(a.dialogClass),"show-close":i.showClose,"modal-class":i.modalClass,"data-dialog-shell":`common`,"append-to-body":i.appendToBody,"lock-scroll":i.lockScroll,"aria-modal":!0,"aria-labelledby":a.titleId,role:`dialog`,onClose:a.handleClose,"onUpdate:modelValue":a.handleUpdateModelValue,onOpened:a.handleOpened,onClosed:a.handleClosed},v({header:m(({titleClass:e})=>[r(`span`,{id:a.titleId,class:o([`el-dialog__title`,e]),role:`heading`,"aria-level":`2`},h(i.title),11,C)]),default:m(()=>[g(e.$slots,`default`,{},void 0,!0)]),_:2},[i.showFooter||e.$slots.footer?{name:`footer`,fn:m(()=>[g(e.$slots,`footer`,{},()=>[r(`div`,w,[i.showCancel?(p(),t(_,{key:0,type:`button`,onClick:a.handleCancel},{default:m(()=>[s(h(i.cancelText),1)]),_:1})):c(`v-if`,!0),l(_,{type:`primary`,loading:i.confirmLoading,onClick:a.handleConfirm},{default:m(()=>[s(h(i.confirmText),1)]),_:1},8,[`loading`])])],!0)]),key:`0`}:void 0]),1032,[`model-value`,`title`,`width`,`top`,`style`,`z-index`,`fullscreen`,`close-on-click-modal`,`close-on-press-escape`,`destroy-on-close`,`draggable`,`class`,`show-close`,`modal-class`,`append-to-body`,`lock-scroll`,`aria-labelledby`])}var E=x(S,[[`render`,T],[`__scopeId`,`data-v-c5fee217`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/CommonDialog.vue`]]);export{E as t};
1
+ import"./rolldown-runtime-C0FnF6B9.js";import{Bn as e,Dn as t,E as n,En as r,Fr as i,In as a,Jr as o,Nn as s,On as c,Pn as l,Tn as u,Wn as d,Xr as f,Zn as p,cr as m,ei as h,er as g,ir as _,jn as v,z as y}from"./element-plus-Buzx8xRf.js";import{n as b,t as x}from"./_plugin-vue_export-helper-DcQKU19k.js";e();var S=a({__name:`CommonDialog`,props:{modelValue:{type:Boolean,required:!0},title:{type:String,required:!0},size:{type:String,required:!1,default:`medium`},type:{type:String,required:!1,default:`default`},width:{type:String,required:!1},height:{type:String,required:!1},top:{type:String,required:!1,default:`50px`},closeOnClickModal:{type:Boolean,required:!1,default:!1},closeOnPressEscape:{type:Boolean,required:!1,default:!0},destroyOnClose:{type:Boolean,required:!1,default:!1},draggable:{type:Boolean,required:!1,default:!1},customClass:{type:String,required:!1},modalClass:{type:String,required:!1},appendToBody:{type:Boolean,required:!1,default:!0},lockScroll:{type:Boolean,required:!1,default:!0},zIndex:{type:Number,required:!1},showClose:{type:Boolean,required:!1,default:!0},heightMode:{type:String,required:!1,default:`max`},heightOffset:{type:String,required:!1,default:`100px`},showFooter:{type:Boolean,required:!1,default:!1},confirmText:{type:String,required:!1,default:b(`@803A9:确定`)},cancelText:{type:String,required:!1,default:b(`@803A9:取消`)},showCancel:{type:Boolean,required:!1,default:!0},confirmLoading:{type:Boolean,required:!1,default:!1}},emits:[`update:modelValue`,`confirm`,`cancel`,`close`,`opened`,`closed`],setup(e,{expose:t,emit:r}){t();let i=e,a=r,o=u(()=>{if(i.width)return i.width;switch(i.size){case`small`:return`30%`;case`medium`:return`50%`;case`large`:return`80%`;case`extra-large`:return`90%`;case`fullscreen`:return`100vw`;default:return`50%`}}),s=_(),c=null;function l(){a(`opened`),d(()=>{let e=document.querySelector(`.el-dialog__wrapper:not([style*="display: none"]) .el-dialog`);e&&(e.querySelector(`button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])`)||e).focus?.()})}function f(){a(`closed`),c&&typeof c.focus==`function`&&(d(()=>c?.focus()),c=null)}function p(e){e&&!i.modelValue&&(c=document.activeElement),a(`update:modelValue`,e)}let m=u(()=>i.size===`fullscreen`?`0`:i.top),h=u(()=>{let e=[];return i.customClass&&e.push(i.customClass),i.type===`flex`&&e.push(`common-dialog--flex`),i.type===`full-height`&&e.push(`common-dialog--full-height`),i.size===`fullscreen`&&e.push(`common-dialog--fullscreen`),e.join(` `)}),g=u(()=>{if(i.size===`fullscreen`)return{height:`100vh`,maxHeight:`100vh`};let e=`calc(100% - ${i.heightOffset})`;return i.heightMode===`fixed`?{height:e}:{maxHeight:e}});function v(){a(`update:modelValue`,!1),a(`close`)}function y(){a(`confirm`)}function b(){a(`cancel`),v()}let x={props:i,emit:a,dialogWidth:o,titleId:s,get previouslyFocused(){return c},set previouslyFocused(e){c=e},handleOpened:l,handleClosed:f,handleUpdateModelValue:p,dialogTop:m,dialogClass:h,dialogStyle:g,handleClose:v,handleConfirm:y,handleCancel:b,get ElDialog(){return n}};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}});e(),i();var C=[`id`],w={class:`common-dialog__footer`};function T(e,n,i,a,u,d){let _=y;return p(),t(a.ElDialog,{"model-value":i.modelValue,title:i.title,width:a.dialogWidth,top:a.dialogTop,style:f(a.dialogStyle),"z-index":i.zIndex,fullscreen:i.size===`fullscreen`,"close-on-click-modal":i.closeOnClickModal,"close-on-press-escape":i.closeOnPressEscape,"destroy-on-close":i.destroyOnClose,draggable:i.draggable,class:o(a.dialogClass),"show-close":i.showClose,"modal-class":i.modalClass,"data-dialog-shell":`common`,"append-to-body":i.appendToBody,"lock-scroll":i.lockScroll,"aria-modal":!0,"aria-labelledby":a.titleId,role:`dialog`,onClose:a.handleClose,"onUpdate:modelValue":a.handleUpdateModelValue,onOpened:a.handleOpened,onClosed:a.handleClosed},v({header:m(({titleClass:e})=>[r(`span`,{id:a.titleId,class:o([`el-dialog__title`,e]),role:`heading`,"aria-level":`2`},h(i.title),11,C)]),default:m(()=>[g(e.$slots,`default`,{},void 0,!0)]),_:2},[i.showFooter||e.$slots.footer?{name:`footer`,fn:m(()=>[g(e.$slots,`footer`,{},()=>[r(`div`,w,[i.showCancel?(p(),t(_,{key:0,type:`button`,onClick:a.handleCancel},{default:m(()=>[s(h(i.cancelText),1)]),_:1})):c(`v-if`,!0),l(_,{type:`primary`,loading:i.confirmLoading,onClick:a.handleConfirm},{default:m(()=>[s(h(i.confirmText),1)]),_:1},8,[`loading`])])],!0)]),key:`0`}:void 0]),1032,[`model-value`,`title`,`width`,`top`,`style`,`z-index`,`fullscreen`,`close-on-click-modal`,`close-on-press-escape`,`destroy-on-close`,`draggable`,`class`,`show-close`,`modal-class`,`append-to-body`,`lock-scroll`,`aria-labelledby`])}var E=x(S,[[`render`,T],[`__scopeId`,`data-v-c5fee217`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/CommonDialog.vue`]]);export{E as t};
@@ -1,4 +1,4 @@
1
- import"./rolldown-runtime-C0FnF6B9.js";import{$n as e,Bn as t,Cn as n,Dn as r,En as i,Fr as a,In as o,Jr as s,Mn as c,Nn as l,On as u,Pn as d,Tn as f,W as ee,Wn as p,Xr as m,Yn as te,Zn as h,_n as g,a as _,bn as v,br as y,cr as b,dn as x,ei as S,i as ne,kn as C,lr as w,or as T,pr as E,qn as re,vn as ie,xn as D,xr as ae,yn as oe}from"./element-plus-Buzx8xRf.js";import{a as se,r as ce,t as le}from"./vendor-wERX2bc3.js";import{n as O,t as k}from"./_plugin-vue_export-helper-VuE2vqnn.js";import{t as ue}from"./SvgIcon-ub85vovN.js";import{t as de}from"./configStore-De_8eQuS.js";import{n as fe,t as pe}from"./fileIcon-B5p5pGN9.js";import{a as me,i as he,n as ge,r as _e,s as ve,t as A}from"./previewSandbox-DcVlFmag.js";import{a as j,c as ye,i as M,n as be,o as xe,r as N,s as Se}from"./monaco-BD8Gy_t7.js";import{t as Ce}from"./useThemeObserver-CWioG2jb.js";import{r as we,t as Te}from"./flow-mindmap-D-65aZb7.js";import{i as Ee}from"./index-Bq_-TrTP.js";import{a as P,i as F,n as I,o as De,r as Oe,s as ke,t as Ae}from"./agentConversations-DcW54Tlt.js";import{n as je,t as L}from"./AgentEngineSelector-DVs4LGHZ.js";function Me(e){return{ts:`typescript`,tsx:`typescript`,js:`javascript`,mjs:`javascript`,cjs:`javascript`,jsx:`javascript`,vue:`html`,html:`html`,htm:`html`,css:`css`,scss:`scss`,less:`less`,json:`json`,jsonc:`json`,md:`markdown`,markdown:`markdown`,yaml:`yaml`,yml:`yaml`,toml:`ini`,xml:`xml`,svg:`xml`,sh:`shell`,bash:`shell`,zsh:`shell`,fish:`shell`,ps1:`powershell`,py:`python`,go:`go`,rs:`rust`,java:`java`,kt:`kotlin`,rb:`ruby`,php:`php`,c:`c`,cpp:`cpp`,h:`cpp`,cs:`csharp`,sql:`sql`,graphql:`graphql`,gql:`graphql`,txt:`plaintext`,log:`plaintext`,ini:`ini`,env:`ini`,gitignore:`ini`,dockerfile:`dockerfile`}[e.toLowerCase()]??`plaintext`}t();var Ne=o({__name:`MindmapPreview`,props:{content:{type:String,required:!0}},setup(e,{expose:t}){t();let n=e,r={props:n,data:f(()=>Te(n.content||``,`未命名文档`)),get MindMap(){return we}};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}});t();var Pe={class:`mindmap-preview`},Fe={class:`mindmap-preview-canvas`};function Ie(e,t,n,r,a,o){return h(),C(`div`,Pe,[t[0]||=i(`div`,{class:`mindmap-preview-header`},[i(`span`,{class:`mindmap-preview-title`},`整篇导图`),i(`span`,{class:`mindmap-preview-hint`},`基于整篇 Markdown 自动生成 · 阅读模式`)],-1),i(`div`,Fe,[d(r.MindMap,{data:r.data,"preview-mode":``},null,8,[`data`])])])}var Le=k(Ne,[[`render`,Ie],[`__scopeId`,`data-v-3969a8bf`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/MindmapPreview.vue`]]);t(),E();var R=o({__name:`EditorAgentPanel`,props:{activeFilePath:{type:[String,null],required:!1},activeFileName:{type:String,required:!1},active:{type:Boolean,required:!1}},emits:[`close`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,{theme:a}=Ce(),o=f(()=>a.value===`dark`?`dark`:`light`),{sessions:s,sessionsLoading:c,currentSessionId:l,messages:u,isStreaming:d,pendingQuestion:ee,answeringQuestion:m,isSessionGenerating:h,currentEngine:g,pendingEngine:_,isEngineLocked:v,pickEngine:b,loadSessions:x,loadSession:S,deleteSession:ne,renameSession:C,newSession:w,sendMessage:E,answerQuestion:ie,stop:D}=ke(),ae=f(()=>v.value?g.value:_.value);function oe(e){v.value||b(e)}let k=f(()=>P(s.value,h)),ue=Oe(),de=F(),fe=y(null),pe=y(null),me=y(null),he=y(null),ge=y(null),{width:_e,narrow:ve}=je(ge),A=y(`chat`),j=y(null),ye=y(!1),M=null,be=f(()=>!!r.activeFileName&&!ye.value);function xe(e){return Array.from(e.children).find(e=>e.classList?.contains(`acu-input-attachments`))??null}function N(){let e=pe.value?.$el;if(!e)return;let t=e.querySelector(`.agent-context-slot`);if(!be.value){if(!t)return;j.value=null,p(()=>t.remove());return}let n=j.value&&e.contains(j.value)?j.value:t;n||(n=document.createElement(`div`),n.className=`agent-context-slot`);let r=xe(e),i=r??e;n.parentElement!==i&&i.insertBefore(n,r?r.firstChild:e.firstChild),j.value=n}function Se(e=!0){fe.value?.scrollToBottom(e)}async function we(e){let t=ye.value?void 0:r.activeFilePath||void 0;await E(e.text,e.files,{openFilePath:t}),await p(),Se()}function Te(e){S(e),A.value=`chat`}function Ee(){w(),A.value=`chat`}T(()=>u.value.length,()=>{p(()=>Se(!1))});function Me(){let e=he.value;e&&typeof MutationObserver<`u`&&(M?.disconnect(),M=new MutationObserver(()=>N()),M.observe(e,{childList:!0,subtree:!0}))}T(()=>r.active,e=>{e&&(A.value=`chat`,x().catch(()=>{}),p(()=>{N(),Se(!1)}))}),T(ve,e=>{e||(A.value=`chat`)}),T(()=>r.activeFilePath,()=>{ye.value=!1}),T(be,e=>{e&&p(N)}),te(()=>{x().catch(()=>{}),p(()=>{N(),Me()})}),re(()=>{M?.disconnect(),M=null,j.value=null});let Ne={props:r,emit:i,theme:a,chatTheme:o,sessions:s,sessionsLoading:c,currentSessionId:l,messages:u,isStreaming:d,pendingQuestion:ee,answeringQuestion:m,isSessionGenerating:h,currentEngine:g,pendingEngine:_,isEngineLocked:v,pickEngine:b,loadSessions:x,loadSession:S,deleteSession:ne,renameSession:C,newSession:w,sendMessage:E,answerQuestion:ie,stop:D,displayEngine:ae,onEngineSelect:oe,conversationItems:k,conversationLabels:ue,questionLabels:de,chatRef:fe,inputRef:pe,chatHostRef:me,composerRef:he,rootRef:ge,width:_e,narrow:ve,page:A,contextSlot:j,contextDismissed:ye,get slotObserver(){return M},set slotObserver(e){M=e},showContextCard:be,findAttachmentsHost:xe,syncContextSlot:N,scrollToBottom:Se,onSend:we,onSelectSession:Te,onNewSession:Ee,watchChatDom:Me,get $t(){return O},get ChatContainer(){return se},get ChatInput(){return ce},get ConversationList(){return le},get AGENT_UPLOAD_ACCEPT(){return De},get AGENT_ASSISTANT_NAME(){return I},get AGENT_ASSISTANT_AVATAR(){return Ae},AgentEngineSelector:L};return Object.defineProperty(Ne,"__isScriptSetup",{enumerable:!1,value:!0}),Ne}});t(),a(),x();var z={ref:`rootRef`,class:`editor-agent-panel`},Re={class:`agent-panel-header`},ze=[`title`,`aria-label`],Be={class:`agent-panel-title`},B={key:1,class:`agent-panel-title`},Ve=[`title`,`aria-label`],He=[`title`],Ue={class:`agent-panel-convs`},We={ref:`chatHostRef`,class:`agent-panel-chat`},Ge=[`data-theme`],Ke=[`title`],qe={class:`agent-context-att-name`},V=[`title`,`aria-label`];function Je(e,t,a,o,l,f){return h(),C(D,null,[u(`
1
+ import"./rolldown-runtime-C0FnF6B9.js";import{$n as e,Bn as t,Cn as n,Dn as r,En as i,Fr as a,In as o,Jr as s,Mn as c,Nn as l,On as u,Pn as d,Tn as f,W as ee,Wn as p,Xr as m,Yn as te,Zn as h,_n as g,a as _,bn as v,br as y,cr as b,dn as x,ei as S,i as ne,kn as C,lr as w,or as T,pr as E,qn as re,vn as ie,xn as D,xr as ae,yn as oe}from"./element-plus-Buzx8xRf.js";import{a as se,r as ce,t as le}from"./vendor-wERX2bc3.js";import{n as O,t as k}from"./_plugin-vue_export-helper-DcQKU19k.js";import{t as ue}from"./SvgIcon-YQZtv72i.js";import{t as de}from"./configStore-u3FUM08v.js";import{n as fe,t as pe}from"./fileIcon-B5p5pGN9.js";import{a as me,i as he,n as ge,r as _e,s as ve,t as A}from"./previewSandbox-KLKRAhm4.js";import{a as j,c as ye,i as M,n as be,o as xe,r as N,s as Se}from"./monaco-BD8Gy_t7.js";import{t as Ce}from"./useThemeObserver-CWioG2jb.js";import{r as we,t as Te}from"./flow-mindmap-D-65aZb7.js";import{i as Ee}from"./index-DorcTBZN.js";import{a as P,i as F,n as I,o as De,r as Oe,s as ke,t as Ae}from"./agentConversations-D_TsndCC.js";import{n as je,t as L}from"./AgentEngineSelector-BMJAsMx_.js";function Me(e){return{ts:`typescript`,tsx:`typescript`,js:`javascript`,mjs:`javascript`,cjs:`javascript`,jsx:`javascript`,vue:`html`,html:`html`,htm:`html`,css:`css`,scss:`scss`,less:`less`,json:`json`,jsonc:`json`,md:`markdown`,markdown:`markdown`,yaml:`yaml`,yml:`yaml`,toml:`ini`,xml:`xml`,svg:`xml`,sh:`shell`,bash:`shell`,zsh:`shell`,fish:`shell`,ps1:`powershell`,py:`python`,go:`go`,rs:`rust`,java:`java`,kt:`kotlin`,rb:`ruby`,php:`php`,c:`c`,cpp:`cpp`,h:`cpp`,cs:`csharp`,sql:`sql`,graphql:`graphql`,gql:`graphql`,txt:`plaintext`,log:`plaintext`,ini:`ini`,env:`ini`,gitignore:`ini`,dockerfile:`dockerfile`}[e.toLowerCase()]??`plaintext`}t();var Ne=o({__name:`MindmapPreview`,props:{content:{type:String,required:!0}},setup(e,{expose:t}){t();let n=e,r={props:n,data:f(()=>Te(n.content||``,`未命名文档`)),get MindMap(){return we}};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}});t();var Pe={class:`mindmap-preview`},Fe={class:`mindmap-preview-canvas`};function Ie(e,t,n,r,a,o){return h(),C(`div`,Pe,[t[0]||=i(`div`,{class:`mindmap-preview-header`},[i(`span`,{class:`mindmap-preview-title`},`整篇导图`),i(`span`,{class:`mindmap-preview-hint`},`基于整篇 Markdown 自动生成 · 阅读模式`)],-1),i(`div`,Fe,[d(r.MindMap,{data:r.data,"preview-mode":``},null,8,[`data`])])])}var Le=k(Ne,[[`render`,Ie],[`__scopeId`,`data-v-3969a8bf`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/MindmapPreview.vue`]]);t(),E();var R=o({__name:`EditorAgentPanel`,props:{activeFilePath:{type:[String,null],required:!1},activeFileName:{type:String,required:!1},active:{type:Boolean,required:!1}},emits:[`close`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,{theme:a}=Ce(),o=f(()=>a.value===`dark`?`dark`:`light`),{sessions:s,sessionsLoading:c,currentSessionId:l,messages:u,isStreaming:d,pendingQuestion:ee,answeringQuestion:m,isSessionGenerating:h,currentEngine:g,pendingEngine:_,isEngineLocked:v,pickEngine:b,loadSessions:x,loadSession:S,deleteSession:ne,renameSession:C,newSession:w,sendMessage:E,answerQuestion:ie,stop:D}=ke(),ae=f(()=>v.value?g.value:_.value);function oe(e){v.value||b(e)}let k=f(()=>P(s.value,h)),ue=Oe(),de=F(),fe=y(null),pe=y(null),me=y(null),he=y(null),ge=y(null),{width:_e,narrow:ve}=je(ge),A=y(`chat`),j=y(null),ye=y(!1),M=null,be=f(()=>!!r.activeFileName&&!ye.value);function xe(e){return Array.from(e.children).find(e=>e.classList?.contains(`acu-input-attachments`))??null}function N(){let e=pe.value?.$el;if(!e)return;let t=e.querySelector(`.agent-context-slot`);if(!be.value){if(!t)return;j.value=null,p(()=>t.remove());return}let n=j.value&&e.contains(j.value)?j.value:t;n||(n=document.createElement(`div`),n.className=`agent-context-slot`);let r=xe(e),i=r??e;n.parentElement!==i&&i.insertBefore(n,r?r.firstChild:e.firstChild),j.value=n}function Se(e=!0){fe.value?.scrollToBottom(e)}async function we(e){let t=ye.value?void 0:r.activeFilePath||void 0;await E(e.text,e.files,{openFilePath:t}),await p(),Se()}function Te(e){S(e),A.value=`chat`}function Ee(){w(),A.value=`chat`}T(()=>u.value.length,()=>{p(()=>Se(!1))});function Me(){let e=he.value;e&&typeof MutationObserver<`u`&&(M?.disconnect(),M=new MutationObserver(()=>N()),M.observe(e,{childList:!0,subtree:!0}))}T(()=>r.active,e=>{e&&(A.value=`chat`,x().catch(()=>{}),p(()=>{N(),Se(!1)}))}),T(ve,e=>{e||(A.value=`chat`)}),T(()=>r.activeFilePath,()=>{ye.value=!1}),T(be,e=>{e&&p(N)}),te(()=>{x().catch(()=>{}),p(()=>{N(),Me()})}),re(()=>{M?.disconnect(),M=null,j.value=null});let Ne={props:r,emit:i,theme:a,chatTheme:o,sessions:s,sessionsLoading:c,currentSessionId:l,messages:u,isStreaming:d,pendingQuestion:ee,answeringQuestion:m,isSessionGenerating:h,currentEngine:g,pendingEngine:_,isEngineLocked:v,pickEngine:b,loadSessions:x,loadSession:S,deleteSession:ne,renameSession:C,newSession:w,sendMessage:E,answerQuestion:ie,stop:D,displayEngine:ae,onEngineSelect:oe,conversationItems:k,conversationLabels:ue,questionLabels:de,chatRef:fe,inputRef:pe,chatHostRef:me,composerRef:he,rootRef:ge,width:_e,narrow:ve,page:A,contextSlot:j,contextDismissed:ye,get slotObserver(){return M},set slotObserver(e){M=e},showContextCard:be,findAttachmentsHost:xe,syncContextSlot:N,scrollToBottom:Se,onSend:we,onSelectSession:Te,onNewSession:Ee,watchChatDom:Me,get $t(){return O},get ChatContainer(){return se},get ChatInput(){return ce},get ConversationList(){return le},get AGENT_UPLOAD_ACCEPT(){return De},get AGENT_ASSISTANT_NAME(){return I},get AGENT_ASSISTANT_AVATAR(){return Ae},AgentEngineSelector:L};return Object.defineProperty(Ne,"__isScriptSetup",{enumerable:!1,value:!0}),Ne}});t(),a(),x();var z={ref:`rootRef`,class:`editor-agent-panel`},Re={class:`agent-panel-header`},ze=[`title`,`aria-label`],Be={class:`agent-panel-title`},B={key:1,class:`agent-panel-title`},Ve=[`title`,`aria-label`],He=[`title`],Ue={class:`agent-panel-convs`},We={ref:`chatHostRef`,class:`agent-panel-chat`},Ge=[`data-theme`],Ke=[`title`],qe={class:`agent-context-att-name`},V=[`title`,`aria-label`];function Je(e,t,a,o,l,f){return h(),C(D,null,[u(`
2
2
  文件空间右侧的 g ai 对话面板。
3
3
  - 够宽(≥680px,判据同「智能体」视图):左边一列会话历史 + 右边对话,历史**直接摆在那儿**,
4
4
  不用先点按钮翻过去;不够宽就折成两页,头部按钮来回翻
@@ -1,5 +1,5 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/monaco-BD8Gy_t7.js","assets/rolldown-runtime-C0FnF6B9.js","assets/dagre-CDSwApuC.js","assets/monaco-B2lPvkrc.css"])))=>i.map(i=>d[i]);
2
- import"./rolldown-runtime-C0FnF6B9.js";import{$n as e,At as t,Bn as n,Ct as r,Dn as i,En as a,Fr as o,Gt as s,H as c,Ht as l,In as u,J as d,Jr as f,Mt as p,Nn as m,On as h,Pn as g,Q as _,Tn as v,U as y,W as b,Wt as x,Xr as S,Y as C,Yn as ee,Zn as w,a as T,an as E,br as D,c as O,cr as k,ct as te,dn as ne,ei as A,er as j,ft as re,in as ie,jt as M,kn as N,lr as P,nr as ae,nt as oe,o as se,or as F,ot as ce,pr as I,pt as le,qn as ue,s as de,tn as fe,tr as pe,vn as me,wt as he,x as ge,xn as L,z as _e}from"./element-plus-Buzx8xRf.js";import{n as R,t as z}from"./_plugin-vue_export-helper-VuE2vqnn.js";import{ir as ve}from"./dagre-CDSwApuC.js";import{t as ye}from"./SvgIcon-ub85vovN.js";import{t as be}from"./IconButton-Cgc5v9vb.js";import{t as xe}from"./configStore-De_8eQuS.js";import{r as Se}from"./gitStore-BP6TATf7.js";import{r as Ce,t as we}from"./fileIcon-B5p5pGN9.js";import{a as Te,c as Ee,i as De,n as Oe,o as ke,r as Ae,s as je,t as Me}from"./previewSandbox-DcVlFmag.js";import{a as B,c as Ne,i as V,o as H,s as Pe}from"./monaco-BD8Gy_t7.js";import{t as Fe}from"./useThemeObserver-CWioG2jb.js";import{t as Ie}from"./CommonDialog-BTeIpgGT.js";n();var U=u({__name:`TreeIcon`,props:{size:{type:[String,Number],required:!1,default:`1em`}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});n();var W=[`width`,`height`];function G(e,t,n,r,i,o){return w(),N(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,width:n.size,height:n.size,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`},[h(` 垂直主线 `),t[0]||=a(`line`,{x1:`3`,y1:`2`,x2:`3`,y2:`14`},null,-1),h(` 第一个分支 `),t[1]||=a(`line`,{x1:`3`,y1:`4`,x2:`6`,y2:`4`},null,-1),t[2]||=a(`rect`,{x:`2`,y:`3`,width:`8`,height:`2`,rx:`0.5`,fill:`currentColor`,stroke:`none`},null,-1),h(` 第二个分支 `),t[3]||=a(`line`,{x1:`3`,y1:`8`,x2:`6`,y2:`8`},null,-1),t[4]||=a(`rect`,{x:`4`,y:`7`,width:`8`,height:`2`,rx:`0.5`,fill:`currentColor`,stroke:`none`},null,-1),h(` 第三个分支 `),t[5]||=a(`line`,{x1:`3`,y1:`12`,x2:`6`,y2:`12`},null,-1),t[6]||=a(`rect`,{x:`6`,y:`11`,width:`8`,height:`2`,rx:`0.5`,fill:`currentColor`,stroke:`none`},null,-1)],8,W)}var Le=z(U,[[`render`,G],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/icons/TreeIcon.vue`]]);n();var Re=u({__name:`ListIcon`,props:{size:{type:[String,Number],required:!1,default:`1em`}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});n();var K=[`width`,`height`];function q(e,t,n,r,i,o){return w(),N(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,width:n.size,height:n.size,fill:`currentColor`,stroke:`none`},[h(` 简洁的列表图标 - 三条横线 `),t[0]||=a(`rect`,{x:`2`,y:`3`,width:`12`,height:`2`,rx:`0.5`},null,-1),t[1]||=a(`rect`,{x:`2`,y:`7`,width:`12`,height:`2`,rx:`0.5`},null,-1),t[2]||=a(`rect`,{x:`2`,y:`11`,width:`12`,height:`2`,rx:`0.5`},null,-1)],8,K)}var ze=z(Re,[[`render`,q],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/icons/ListIcon.vue`]]);function J(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#039;`)}function Be(e){if(!e)return``;let t=e.split(`
2
+ import"./rolldown-runtime-C0FnF6B9.js";import{$n as e,At as t,Bn as n,Ct as r,Dn as i,En as a,Fr as o,Gt as s,H as c,Ht as l,In as u,J as d,Jr as f,Mt as p,Nn as m,On as h,Pn as g,Q as _,Tn as v,U as y,W as b,Wt as x,Xr as S,Y as C,Yn as ee,Zn as w,a as T,an as E,br as D,c as O,cr as k,ct as te,dn as ne,ei as A,er as j,ft as re,in as ie,jt as M,kn as N,lr as P,nr as ae,nt as oe,o as se,or as F,ot as ce,pr as I,pt as le,qn as ue,s as de,tn as fe,tr as pe,vn as me,wt as he,x as ge,xn as L,z as _e}from"./element-plus-Buzx8xRf.js";import{n as R,t as z}from"./_plugin-vue_export-helper-DcQKU19k.js";import{ir as ve}from"./dagre-CDSwApuC.js";import{t as ye}from"./SvgIcon-YQZtv72i.js";import{t as be}from"./IconButton-C07zojvw.js";import{t as xe}from"./configStore-u3FUM08v.js";import{r as Se}from"./gitStore-ZjHYEyKS.js";import{r as Ce,t as we}from"./fileIcon-B5p5pGN9.js";import{a as Te,c as Ee,i as De,n as Oe,o as ke,r as Ae,s as je,t as Me}from"./previewSandbox-KLKRAhm4.js";import{a as B,c as Ne,i as V,o as H,s as Pe}from"./monaco-BD8Gy_t7.js";import{t as Fe}from"./useThemeObserver-CWioG2jb.js";import{t as Ie}from"./CommonDialog-DuI8Bsg7.js";n();var U=u({__name:`TreeIcon`,props:{size:{type:[String,Number],required:!1,default:`1em`}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});n();var W=[`width`,`height`];function G(e,t,n,r,i,o){return w(),N(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,width:n.size,height:n.size,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`},[h(` 垂直主线 `),t[0]||=a(`line`,{x1:`3`,y1:`2`,x2:`3`,y2:`14`},null,-1),h(` 第一个分支 `),t[1]||=a(`line`,{x1:`3`,y1:`4`,x2:`6`,y2:`4`},null,-1),t[2]||=a(`rect`,{x:`2`,y:`3`,width:`8`,height:`2`,rx:`0.5`,fill:`currentColor`,stroke:`none`},null,-1),h(` 第二个分支 `),t[3]||=a(`line`,{x1:`3`,y1:`8`,x2:`6`,y2:`8`},null,-1),t[4]||=a(`rect`,{x:`4`,y:`7`,width:`8`,height:`2`,rx:`0.5`,fill:`currentColor`,stroke:`none`},null,-1),h(` 第三个分支 `),t[5]||=a(`line`,{x1:`3`,y1:`12`,x2:`6`,y2:`12`},null,-1),t[6]||=a(`rect`,{x:`6`,y:`11`,width:`8`,height:`2`,rx:`0.5`,fill:`currentColor`,stroke:`none`},null,-1)],8,W)}var Le=z(U,[[`render`,G],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/icons/TreeIcon.vue`]]);n();var Re=u({__name:`ListIcon`,props:{size:{type:[String,Number],required:!1,default:`1em`}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});n();var K=[`width`,`height`];function q(e,t,n,r,i,o){return w(),N(`svg`,{viewBox:`0 0 16 16`,xmlns:`http://www.w3.org/2000/svg`,width:n.size,height:n.size,fill:`currentColor`,stroke:`none`},[h(` 简洁的列表图标 - 三条横线 `),t[0]||=a(`rect`,{x:`2`,y:`3`,width:`12`,height:`2`,rx:`0.5`},null,-1),t[1]||=a(`rect`,{x:`2`,y:`7`,width:`12`,height:`2`,rx:`0.5`},null,-1),t[2]||=a(`rect`,{x:`2`,y:`11`,width:`12`,height:`2`,rx:`0.5`},null,-1)],8,K)}var ze=z(Re,[[`render`,q],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/icons/ListIcon.vue`]]);function J(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#039;`)}function Be(e){if(!e)return``;let t=e.split(`
3
3
  `),n=!1,r=null;return t.map(e=>{let t=J(e);return e.startsWith(`diff --git`)||e.startsWith(`diff --cc`)||e.startsWith(`diff --combined`)?`<div class="diff-header">${t}</div>`:e.startsWith(`---`)?`<div class="diff-old-file">${t}</div>`:e.startsWith(`+++`)?`<div class="diff-new-file">${t}</div>`:e.startsWith(`@@`)?`<div class="diff-hunk-header">${t}</div>`:e.match(/^[+\-\s]*<{7,}\s+(HEAD|.*)/)?(n=!0,r=`current`,`<div class="diff-conflict-start">${t}</div>`):e.match(/^[+\-\s]*={7,}\s*$/)?(r=`incoming`,`<div class="diff-conflict-separator">${t}</div>`):e.match(/^[+\-\s]*>{7,}\s+.*/)?(n=!1,r=null,`<div class="diff-conflict-end">${t}</div>`):n&&r?r===`current`?`<div class="diff-conflict-current">${t}</div>`:`<div class="diff-conflict-incoming">${t}</div>`:e.startsWith(`+`)?`<div class="diff-added">${` `+t.substring(1)}</div>`:e.startsWith(`-`)?`<div class="diff-removed">${` `+t.substring(1)}</div>`:`<div class="diff-context">${t}</div>`}).join(``)}function Ve(e){if(!e)return``;let t=e.match(/^(feat|fix|docs|style|refactor|perf|test|chore|build|ci|revert)(\([^)]+\))?\s*:\s*(.+)$/s);return t?t[3].trim():e.trim()}n();var He=u({__name:`FileActionButtons`,props:{filePath:{type:String,required:!0},fileType:{type:String,required:!0},isLocked:{type:Boolean,required:!1,default:!1},isLocking:{type:Boolean,required:!1,default:!1},showLockButton:{type:Boolean,required:!1,default:!0}},emits:[`toggleLock`,`stage`,`unstage`,`revert`,`manageLockedFiles`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,a=v(()=>{switch(r.fileType){case`added`:return[{type:`unstage`,tooltip:R(`@0883F:取消暂存`),buttonType:`warning`,icon:`-`,handler:()=>i(`unstage`,r.filePath)}];case`modified`:case`deleted`:return[{type:`stage`,tooltip:R(`@0883F:添加到暂存区`),buttonType:`success`,icon:`+`,handler:()=>i(`stage`,r.filePath)},{type:`revert`,tooltip:R(`@0883F:撤回修改`),buttonType:`danger`,icon:x,handler:()=>i(`revert`,r.filePath)}];case`untracked`:return[{type:`stage`,tooltip:R(`@0883F:添加到暂存区`),buttonType:`success`,icon:`+`,handler:()=>i(`stage`,r.filePath)},{type:`delete`,tooltip:R(`@0883F:删除文件`),buttonType:`danger`,icon:ce,handler:()=>i(`revert`,r.filePath)}];default:return[]}});function o(e){e.stopPropagation(),i(`toggleLock`,r.filePath)}function s(e,t){t.stopPropagation(),e()}function c(e){e.stopPropagation(),i(`manageLockedFiles`)}let l={props:r,emit:i,actionButtons:a,handleToggleLock:o,handleActionClick:s,handleManageLockedFiles:c,get $t(){return R},get Lock(){return M},get Unlock(){return fe}};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}});n(),o();var Ue={class:`file-action-buttons`},Y={key:1,style:{"font-size":`var(--font-size-md)`,"font-weight":`bold`}};function We(t,n,r,o,s,c){let l=d,u=_e,f=b;return w(),N(`div`,Ue,[h(` 锁定/解锁按钮 `),r.showLockButton?(w(),i(f,{key:0,content:r.isLocking?o.$t(`@0883F:处理中...`):r.isLocked?o.$t(`@0883F:解锁文件`):o.$t(`@0883F:锁定文件`),placement:`top`,disabled:r.isLocking,"show-after":200},{default:k(()=>[g(u,{type:r.isLocked?`danger`:`info`,size:`small`,text:``,loading:r.isLocking,disabled:r.isLocking,onClick:o.handleToggleLock,class:`file-action-btn`},{default:k(()=>[r.isLocking?h(`v-if`,!0):(w(),i(l,{key:0,size:`16`},{default:k(()=>[(w(),i(ae(r.isLocked?o.Lock:o.Unlock)))]),_:1}))]),_:1},8,[`type`,`loading`,`disabled`])]),_:1},8,[`content`,`disabled`])):h(`v-if`,!0),h(` 管理锁定文件按钮(只在文件被锁定时显示) `),r.isLocked?(w(),i(f,{key:1,content:o.$t(`@13D1C:管理锁定文件`),placement:`top`,"show-after":200},{default:k(()=>[g(u,{type:`warning`,size:`small`,text:``,onClick:o.handleManageLockedFiles,class:`file-action-btn`},{default:k(()=>[g(l,{size:`16`},{default:k(()=>[...n[0]||=[a(`svg`,{viewBox:`0 0 1024 1024`,xmlns:`http://www.w3.org/2000/svg`},[a(`path`,{fill:`currentColor`,d:`M600.704 64a32 32 0 0 1 30.464 22.208l35.2 109.376c14.784 7.232 28.928 15.36 42.432 24.512l112.384-24.192a32 32 0 0 1 34.432 15.36L944.32 364.8a32 32 0 0 1-4.032 37.504l-77.12 85.12a357.12 357.12 0 0 1 0 49.024l77.12 85.248a32 32 0 0 1 4.032 37.504l-88.704 153.6a32 32 0 0 1-34.432 15.296L708.8 803.904c-13.44 9.088-27.648 17.28-42.368 24.512l-35.264 109.376A32 32 0 0 1 600.704 960H423.296a32 32 0 0 1-30.464-22.208L357.696 828.48a351.616 351.616 0 0 1-42.56-24.64l-112.32 24.256a32 32 0 0 1-34.432-15.36L79.68 659.2a32 32 0 0 1 4.032-37.504l77.12-85.248a357.12 357.12 0 0 1 0-48.896l-77.12-85.248A32 32 0 0 1 79.68 364.8l88.704-153.6a32 32 0 0 1 34.432-15.296L315.2 220.096c13.568-9.152 27.776-17.408 42.56-24.64l35.2-109.312A32 32 0 0 1 423.232 64H600.64zm-23.424 64H446.72l-36.352 113.088-24.512 11.968a294.113 294.113 0 0 0-34.816 20.096l-22.656 15.36-116.224-25.088-65.28 113.152 79.68 88.192-1.92 27.136a293.12 293.12 0 0 0 0 40.192l1.92 27.136-79.808 88.192 65.344 113.152 116.224-25.024 22.656 15.296a294.113 294.113 0 0 0 34.816 20.096l24.512 11.968L446.72 896h130.688l36.48-113.152 24.448-11.904a288.282 288.282 0 0 0 34.752-20.096l22.592-15.296 116.288 25.024 65.28-113.152-79.744-88.192 1.92-27.136a293.12 293.12 0 0 0 0-40.256l-1.92-27.136 79.808-88.128-65.344-113.152-116.288 24.96-22.592-15.232a287.616 287.616 0 0 0-34.752-20.096l-24.448-11.904L577.344 128zM512 320a192 192 0 1 1 0 384 192 192 0 0 1 0-384zm0 64a128 128 0 1 0 0 256 128 128 0 0 0 0-256z`})],-1)]]),_:1})]),_:1})]),_:1},8,[`content`])):h(`v-if`,!0),h(` 动态操作按钮(锁定文件也显示:锁定语义=不随提交走,不影响暂存/撤回等文件操作) `),(w(!0),N(L,null,e(o.actionButtons,e=>(w(),i(f,{key:e.type,content:e.tooltip,placement:`top`,"show-after":200},{default:k(()=>[g(u,{type:e.buttonType,size:`small`,text:``,onClick:t=>o.handleActionClick(e.handler,t),class:`file-action-btn`},{default:k(()=>[typeof e.icon==`string`?(w(),N(`span`,Y,A(e.icon),1)):(w(),i(l,{key:0,size:`16`},{default:k(()=>[(w(),i(ae(e.icon)))]),_:2},1024))]),_:2},1032,[`type`,`onClick`])]),_:2},1032,[`content`]))),128))])}var Ge=z(He,[[`render`,We],[`__scopeId`,`data-v-eb859d1f`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/FileActionButtons.vue`]]);function Ke(e){let t=[],n=new Map;return[...e].sort((e,t)=>e.path.localeCompare(t.path)).forEach(e=>{let r=e.path.split(`/`).filter(e=>e),i=``,a=t;r.forEach((t,o)=>{let s=o===r.length-1;i=i?`${i}/${t}`:t;let c=n.get(i);c||(c={name:t,path:i,isDirectory:!s,expanded:!0},s?(c.file=e,c.type=e.type,c.locked=e.locked):c.children=[],n.set(i,c),a.push(c)),!s&&c.children&&(a=c.children)})}),t}function X(e){e.expanded=!e.expanded}function qe(e,t){let n=new Map,r=e=>{e.forEach(e=>{e.isDirectory&&(n.set(e.path,e.expanded||!1),e.children&&r(e.children))})},i=e=>{e.forEach(e=>{if(e.isDirectory){let t=n.get(e.path);t!==void 0&&(e.expanded=t),e.children&&i(e.children)}})};r(t),i(e)}n();var Je=u({__name:`TreeNodeItem`,props:{node:{type:Object,required:!0},level:{type:Number,required:!0},selectedFile:{type:String,required:!1,default:``},showActionButtons:{type:Boolean,required:!1,default:!1},isFileLocked:{type:Function,required:!1,default:()=>!1},isLocking:{type:Function,required:!1,default:()=>!1}},emits:[`file-select`,`toggle-lock`,`stage`,`unstage`,`revert`,`node-click`],setup(e,{expose:t,emit:n}){t();let r=e,i=n;function a(e){return`${e*20+10}px`}function o(e){return Ce(e.name,e.isDirectory,!!e.expanded)}function s(e){return!e.isDirectory&&e.path===r.selectedFile}function c(){i(`node-click`,r.node)}let l={props:r,emit:i,getIndent:a,getIconInfo:o,isSelected:s,handleClick:c,get $t(){return R},get ElIcon(){return d},get ElTooltip(){return b},get Lock(){return M},FileActionButtons:Ge};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}});n(),o();var Ye={class:`tree-node-wrapper`},Xe=[`xlink:href`],Z={class:`node-name`},Ze={key:0,class:`file-type-tag`},Qe={key:2,class:`file-actions`},$e={key:0,class:`tree-children`};function et(t,n,r,o,s,c){let l=pe(`TreeNodeItem`,!0);return w(),N(`div`,Ye,[a(`div`,{class:f([`tree-node`,{"is-directory":r.node.isDirectory,"is-file":!r.node.isDirectory,"is-selected":o.isSelected(r.node),"is-locked":r.node.locked,[`file-type-${r.node.type}`]:r.node.type}]),style:S({paddingLeft:o.getIndent(r.level)}),onClick:o.handleClick},[h(` 文件/文件夹图标 `),(w(),N(`svg`,{class:f([`node-icon mit-icon`,{"folder-icon":o.getIconInfo(r.node).key.startsWith(`folder-`)}]),"aria-hidden":`true`},[a(`use`,{"xlink:href":`#${o.getIconInfo(r.node).spriteId}`},null,8,Xe)],2)),h(` 节点名称 `),g(o.ElTooltip,{content:r.node.path,placement:`top`,disabled:r.node.name.length<=35,"show-after":200},{default:k(()=>[a(`span`,Z,A(r.node.name),1)]),_:1},8,[`content`,`disabled`]),h(` 文件类型标签 `),r.node.isDirectory?h(`v-if`,!0):(w(),N(`span`,Ze,A(r.node.type||`modified`),1)),h(` 锁定图标 `),r.node.locked?(w(),i(o.ElTooltip,{key:1,content:o.$t(`@E80AC:该文件已被锁定,提交时会被跳过`),placement:`top`,"show-after":200},{default:k(()=>[g(o.ElIcon,{class:`lock-icon`,color:`var(--color-warning)`},{default:k(()=>[g(o.Lock)]),_:1})]),_:1},8,[`content`])):h(`v-if`,!0),h(` 文件操作按钮 `),r.showActionButtons&&!r.node.isDirectory&&r.node.file?(w(),N(`div`,Qe,[g(o.FileActionButtons,{"file-path":r.node.path,"file-type":r.node.type||`modified`,"is-locked":r.isFileLocked(r.node.path),"is-locking":r.isLocking(r.node.path),onToggleLock:n[0]||=e=>o.emit(`toggle-lock`,e),onStage:n[1]||=e=>o.emit(`stage`,e),onUnstage:n[2]||=e=>o.emit(`unstage`,e),onRevert:n[3]||=e=>o.emit(`revert`,e)},null,8,[`file-path`,`file-type`,`is-locked`,`is-locking`])])):h(`v-if`,!0)],6),h(` 递归渲染子节点 `),r.node.isDirectory&&r.node.expanded&&r.node.children&&r.node.children.length>0?(w(),N(`div`,$e,[(w(!0),N(L,null,e(r.node.children,e=>(w(),i(l,{key:e.path+`-`+(e.expanded?`open`:`closed`),node:e,level:r.level+1,"selected-file":r.selectedFile,"show-action-buttons":r.showActionButtons,"is-file-locked":r.isFileLocked,"is-locking":r.isLocking,onFileSelect:n[4]||=e=>o.emit(`file-select`,e),onToggleLock:n[5]||=e=>o.emit(`toggle-lock`,e),onStage:n[6]||=e=>o.emit(`stage`,e),onUnstage:n[7]||=e=>o.emit(`unstage`,e),onRevert:n[8]||=e=>o.emit(`revert`,e),onNodeClick:n[9]||=e=>o.emit(`node-click`,e)},null,8,[`node`,`level`,`selected-file`,`show-action-buttons`,`is-file-locked`,`is-locking`]))),128))])):h(`v-if`,!0)])}var tt=z(Je,[[`render`,et],[`__scopeId`,`data-v-ed1cd59c`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/TreeNodeItem.vue`]]);n(),I();var nt=u({__name:`FileTreeView`,props:{treeData:{type:Array,required:!0},selectedFile:{type:String,required:!1,default:``},showActionButtons:{type:Boolean,required:!1,default:!1},isFileLocked:{type:Function,required:!1,default:()=>!1},isLocking:{type:Function,required:!1,default:()=>!1}},emits:[`file-select`,`toggle-lock`,`stage`,`unstage`,`revert`],setup(e,{expose:t,emit:n}){t();let r=n,i=D(0);function a(e){e.isDirectory?(X(e),i.value++):e.file&&r(`file-select`,e.path)}let o={emit:r,updateKey:i,handleNodeClick:a,TreeNodeItem:tt};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}});n();var rt={class:`file-tree-view`};function it(t,n,r,a,o,s){return w(),N(`div`,rt,[(w(!0),N(L,null,e(r.treeData,e=>(w(),i(a.TreeNodeItem,{key:e.path+`-`+(e.expanded?`open`:`closed`),node:e,level:0,"selected-file":r.selectedFile,"show-action-buttons":r.showActionButtons,"is-file-locked":r.isFileLocked,"is-locking":r.isLocking,onFileSelect:n[0]||=e=>a.emit(`file-select`,e),onToggleLock:n[1]||=e=>a.emit(`toggle-lock`,e),onStage:n[2]||=e=>a.emit(`stage`,e),onUnstage:n[3]||=e=>a.emit(`unstage`,e),onRevert:n[4]||=e=>a.emit(`revert`,e),onNodeClick:a.handleNodeClick},null,8,[`node`,`selected-file`,`show-action-buttons`,`is-file-locked`,`is-locking`]))),128))])}var at=z(nt,[[`render`,it],[`__scopeId`,`data-v-0c3cfe6b`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/FileTreeView.vue`]]);n(),I();var ot=u({__name:`MonacoDiffViewer`,props:{original:{type:String,required:!0},modified:{type:String,required:!0},language:{type:String,required:!1,default:`plaintext`},filePath:{type:String,required:!1,default:``},theme:{type:String,required:!1,default:`auto`},readOnly:{type:Boolean,required:!1,default:!0}},setup(e,{expose:t}){t();let n=e,r=D(null),i=null,a=null,o=null,s=null,c=null;async function l(){return i||c||(c=(async()=>{let e=self;return e.MonacoEnvironment||={getWorker(e,t){return t===`json`?new Pe:t===`css`||t===`scss`||t===`less`?new H:t===`html`||t===`handlebars`||t===`razor`?new B:t===`typescript`||t===`javascript`?new V:new Ne}},i=await ve(()=>import(`./monaco-BD8Gy_t7.js`).then(e=>e.t),__vite__mapDeps([0,1,2,3])),i})(),c)}function u(e){let t=(e||``).toLowerCase().match(/\.([a-z0-9]+)$/),n=t?t[1]:``;return n===`ts`||n===`tsx`?`typescript`:n===`js`||n===`jsx`||n===`cjs`||n===`mjs`?`javascript`:n===`json`?`json`:n===`html`||n===`htm`||n===`vue`?`html`:n===`css`?`css`:n===`scss`?`scss`:n===`less`?`less`:n===`md`||n===`markdown`?`markdown`:n===`yml`||n===`yaml`?`yaml`:n===`xml`?`xml`:n===`sh`?`shell`:n===`ps1`?`powershell`:n===`go`?`go`:n===`rs`?`rust`:n===`py`?`python`:n===`java`?`java`:n===`cpp`||n===`cc`||n===`cxx`||n===`hpp`||n===`h`?`cpp`:n===`cs`?`csharp`:`plaintext`}function d(){return n.language===`auto`?u(n.filePath||``):n.language||`plaintext`}function f(){return n.theme&&n.theme!==`auto`?n.theme:document.documentElement.getAttribute(`data-theme`)===`dark`?`vs-dark`:`vs`}function p(){if(!i)return;let e=f();i.editor.setTheme(e)}Fe(()=>p());function m(){if(!i)return;o?.dispose(),s?.dispose();let e=d();o=i.editor.createModel(n.original||``,e),s=i.editor.createModel(n.modified||``,e)}function h(){a&&o&&s&&a.setModel({original:o,modified:s})}function g(){o&&o.getValue()!==(n.original||``)&&o.setValue(n.original||``),s&&s.getValue()!==(n.modified||``)&&s.setValue(n.modified||``)}ee(async()=>{r.value&&(i=await l(),p(),m(),a=i.editor.createDiffEditor(r.value,{automaticLayout:!0,readOnly:n.readOnly,renderSideBySide:!0,minimap:{enabled:!1},fontSize:13,wordWrap:`on`,scrollBeyondLastLine:!1,renderWhitespace:`selection`,originalEditable:!n.readOnly}),h())}),F(()=>n.language,()=>{if(!i)return;let e=d();o&&i.editor.setModelLanguage(o,e),s&&i.editor.setModelLanguage(s,e)}),F(()=>n.filePath,()=>{if(!i||n.language!==`auto`)return;let e=d();o&&i.editor.setModelLanguage(o,e),s&&i.editor.setModelLanguage(s,e)}),F(()=>n.theme,()=>{p()}),F(()=>[n.original,n.modified],()=>{g()}),ue(()=>{a?.dispose(),a=null,o?.dispose(),s?.dispose(),o=null,s=null});let _={props:n,containerRef:r,get monaco(){return i},set monaco(e){i=e},get diffEditor(){return a},set diffEditor(e){a=e},get originalModel(){return o},set originalModel(e){o=e},get modifiedModel(){return s},set modifiedModel(e){s=e},get monacoLoaderPromise(){return c},set monacoLoaderPromise(e){c=e},ensureMonacoLoaded:l,detectLanguageFromPath:u,getResolvedLanguage:d,getResolvedTheme:f,applyTheme:p,createModels:m,setModelsToEditor:h,updateTextToModels:g};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}});n();var st={ref:`containerRef`,class:`monaco-diff-container`};function ct(e,t,n,r,i,a){return w(),N(`div`,st,null,512)}var lt=z(ot,[[`render`,ct],[`__scopeId`,`data-v-f27f0ad0`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/MonacoDiffViewer.vue`]]);n(),I();var ut=u({__name:`MonacoEditor`,props:{modelValue:{type:String,required:!0},language:{type:String,required:!1,default:`plaintext`},filePath:{type:String,required:!1,default:``},theme:{type:String,required:!1,default:`auto`},readOnly:{type:Boolean,required:!1,default:!1},minHeight:{type:String,required:!1,default:`360px`},revealLine:{type:[Number,null],required:!1,default:null},highlightRange:{type:[Object,null],required:!1,default:null},dimHighlightRanges:{type:[Array,null],required:!1,default:null},highlightKind:{type:String,required:!1,default:``},gutterPlacement:{type:String,required:!1,default:`glyph`},gutterItems:{type:Array,required:!1,default:()=>[]},rightActions:{type:Array,required:!1,default:()=>[]},appliedBlocks:{type:Array,required:!1,default:()=>[]},syncGroup:{type:[String,null],required:!1,default:null},syncScrollTop:{type:[Number,null],required:!1,default:null}},emits:[`update:modelValue`,`gutter-click`,`scroll-change`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,a=D(null),o=null,s=null,c=null,l=null,u=!1,d=[],f=[],p=[],m=null,h=null,g=new Map,_=null,v=null;function y(){if(!s)return;let e=r.gutterItems||[],t=r.gutterPlacement===`glyph`&&e.length>0;try{s.updateOptions({glyphMargin:t})}catch{}}function b(){if(!s||h)return;let e=s.getDomNode?.();e&&(h=document.createElement(`div`),h.className=`merge-right-actions`,e.appendChild(h))}function x(){h&&(h.innerHTML=``,g.clear())}function S(){if(!s||!o||!h)return;let e=r.rightActions||[];if(!e.length)return;let t=s.getLayoutInfo?.(),n=t?.contentLeft??0,i=t?.contentWidth??0,a=Math.max(0,n+i-44);for(let t of e){let e=g.get(t.blockId);if(!e)continue;let n=c?.getLineMaxColumn?.(t.line)??1,r=s.getScrolledVisiblePosition?.({lineNumber:t.line,column:n});if(!r){e.style.display=`none`;continue}e.style.display=``,e.style.top=`${r.top}px`,e.style.left=`${a}px`,e.style.height=`${r.height}px`}}function C(e,t){let n=(r.appliedBlocks||[]).find(t=>t.blockId===e);return n?t===`current`?n.choice===`current`||n.choice===`both`:n.choice===`incoming`||n.choice===`both`:!1}function w(e,t){let n=(r.appliedBlocks||[]).find(t=>t.blockId===e);return n?t===`current`?n.choice===`incoming`:n.choice===`current`:!1}function T(e,t,n){e.setAttribute(`role`,`button`),e.setAttribute(`tabindex`,`0`),e.setAttribute(`aria-label`,t),n&&e.setAttribute(`aria-pressed`,`true`),e.addEventListener(`keydown`,t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),e.click())})}function E(){if(!s||(b(),!h))return;let e=(r.rightActions||[]).filter(e=>e&&e.line&&e.line>0);if(!e.length){x();return}x();for(let t of e){let e=C(t.blockId,t.kind),n=w(t.blockId,t.kind),r=document.createElement(`div`);if(r.className=`merge-right-action-wrapper`,t.kind===`current`){let a=document.createElement(`div`);a.className=`merge-right-action merge-right-action-current${e?` is-applied`:``}`,a.textContent=e?`✓`:`→`,a.title=e?`已采用当前更改`:`采用当前更改`,T(a,a.title,e),a.addEventListener(`mousedown`,e=>{e.preventDefault(),e.stopPropagation()}),a.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation(),i(`gutter-click`,t.blockId,`accept`)});let o=document.createElement(`div`);o.className=`merge-right-action merge-right-action-close${n?` is-discarded`:``}`,o.textContent=`✕`,o.title=n?`已丢弃当前更改`:`丢弃当前更改`,T(o,o.title,n),o.addEventListener(`mousedown`,e=>{e.preventDefault(),e.stopPropagation()}),o.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation(),i(`gutter-click`,t.blockId,`discard`)}),r.appendChild(a),r.appendChild(o)}else{let a=document.createElement(`div`);a.className=`merge-right-action merge-right-action-close${n?` is-discarded`:``}`,a.textContent=`✕`,a.title=n?`已丢弃传入更改`:`丢弃传入更改`,T(a,a.title,n),a.addEventListener(`mousedown`,e=>{e.preventDefault(),e.stopPropagation()}),a.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation(),i(`gutter-click`,t.blockId,`discard`)});let o=document.createElement(`div`);o.className=`merge-right-action merge-right-action-incoming${e?` is-applied`:``}`,o.textContent=e?`✓`:`←`,o.title=e?`已采用传入更改`:`采用传入更改`,T(o,o.title,e),o.addEventListener(`mousedown`,e=>{e.preventDefault(),e.stopPropagation()}),o.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation(),i(`gutter-click`,t.blockId,`accept`)}),r.appendChild(a),r.appendChild(o)}h.appendChild(r),g.set(t.blockId,r)}S()}async function O(){return o||l||(l=(async()=>{let e=self;return e.MonacoEnvironment||={getWorker(e,t){return t===`json`?new Pe:t===`css`||t===`scss`||t===`less`?new H:t===`html`||t===`handlebars`||t===`razor`?new B:t===`typescript`||t===`javascript`?new V:new Ne}},o=await ve(()=>import(`./monaco-BD8Gy_t7.js`).then(e=>e.t),__vite__mapDeps([0,1,2,3])),o})(),l)}function k(e){let t=(e||``).toLowerCase().match(/\.([a-z0-9]+)$/),n=t?t[1]:``;return n===`ts`||n===`tsx`?`typescript`:n===`js`||n===`jsx`||n===`cjs`||n===`mjs`?`javascript`:n===`json`?`json`:n===`html`||n===`htm`||n===`vue`?`html`:n===`css`?`css`:n===`scss`?`scss`:n===`less`?`less`:n===`md`||n===`markdown`?`markdown`:n===`yml`||n===`yaml`?`yaml`:n===`xml`?`xml`:n===`sh`?`shell`:n===`ps1`?`powershell`:n===`go`?`go`:n===`rs`?`rust`:n===`py`?`python`:n===`java`?`java`:n===`cpp`||n===`cc`||n===`cxx`||n===`hpp`||n===`h`?`cpp`:n===`cs`?`csharp`:`plaintext`}function te(){return r.language===`auto`?k(r.filePath||``):r.language||`plaintext`}function ne(){return r.theme&&r.theme!==`auto`?r.theme:document.documentElement.getAttribute(`data-theme`)===`dark`?`vs-dark`:`vs`}function A(){o&&o.editor.setTheme(ne())}Fe(()=>A());function j(){if(!o)return;let e=te();if(!c){c=o.editor.createModel(r.modelValue||``,e);return}try{o.editor.setModelLanguage(c,e)}catch{}}function re(){if(!c)return;let e=r.modelValue||``;c.getValue()!==e&&(u=!0,c.setValue(e),u=!1)}function ie(){if(!s)return;let e=r.revealLine;if(!(!e||e<=0))try{s.revealLineInCenter(e)}catch{}}function M(){if(!o||!s)return;if(!r.dimHighlightRanges||!r.dimHighlightRanges.length||!r.highlightKind)f=s.deltaDecorations(f,[]);else{let e=r.highlightKind===`current`?`merge-highlight-current-dim`:r.highlightKind===`incoming`?`merge-highlight-incoming-dim`:`merge-highlight-merged-dim`;f=s.deltaDecorations(f,r.dimHighlightRanges.filter(e=>e&&e.startLine>0&&e.endLine>0).map(t=>{let n=Math.max(1,t.startLine),r=Math.max(n,t.endLine);return{range:new o.Range(n,1,r,1),options:{isWholeLine:!0,className:e,linesDecorationsClassName:e}}}))}if(!r.highlightRange||!r.highlightKind){d=s.deltaDecorations(d,[]);return}let e=Math.max(1,r.highlightRange.startLine),t=Math.max(e,r.highlightRange.endLine),n=r.highlightKind===`current`?`merge-highlight-current`:r.highlightKind===`incoming`?`merge-highlight-incoming`:`merge-highlight-merged`;d=s.deltaDecorations(d,[{range:new o.Range(e,1,t,1),options:{isWholeLine:!0,className:n,linesDecorationsClassName:n}}])}function N(){if(!o||!s)return;let e=r.gutterItems||[];if(!e.length){p=s.deltaDecorations(p,[]),y();return}y();let t=r.gutterPlacement===`line`;p=s.deltaDecorations(p,e.filter(e=>e&&e.line&&e.line>0).map(e=>{let n=C(e.blockId,e.kind),r=e.kind===`current`?n?`merge-glyph-current is-applied`:`merge-glyph-current`:n?`merge-glyph-incoming is-applied`:`merge-glyph-incoming`;return{range:new o.Range(e.line,1,e.line,1),options:{isWholeLine:!0,...t?{linesDecorationsClassName:r}:{glyphMarginClassName:r}}}}))}ee(async()=>{a.value&&(o=await O(),A(),j(),s=o.editor.create(a.value,{automaticLayout:!0,readOnly:r.readOnly,glyphMargin:!1,minimap:{enabled:!1},fontSize:13,wordWrap:`on`,scrollBeyondLastLine:!1,renderWhitespace:`selection`,scrollbar:{verticalScrollbarSize:10,horizontalScrollbarSize:10}}),s.setModel(c),s.onDidChangeModelContent(()=>{if(u)return;let e=c?.getValue?.()??``;i(`update:modelValue`,e)}),ie(),M(),N(),E(),_=s.onDidScrollChange(e=>{S(),r.syncGroup&&e.scrollTopChanged&&i(`scroll-change`,e.scrollTop)}),v=s.onDidLayoutChange(()=>{S()}),m=s.onMouseDown(e=>{try{let t=e?.target,n=t?.position;if(!n?.lineNumber)return;let a=t?.type;if(a!==o.editor.MouseTargetType.GUTTER_GLYPH_MARGIN&&a!==o.editor.MouseTargetType.GUTTER_LINE_DECORATIONS)return;let s=n.lineNumber,c=(r.gutterItems||[]).find(e=>e.line===s);if(!c)return;i(`gutter-click`,c.blockId)}catch{}}))}),F(()=>r.modelValue,()=>{re()}),F(()=>r.revealLine,()=>{ie()}),F(()=>[r.highlightRange,r.highlightKind],()=>{M()},{deep:!0}),F(()=>r.dimHighlightRanges,()=>{M()},{deep:!0}),F(()=>r.gutterItems,()=>{N()},{deep:!0}),F(()=>r.rightActions,()=>{E()},{deep:!0}),F(()=>r.appliedBlocks,()=>{E(),N()},{deep:!0}),F(()=>r.syncScrollTop,e=>{if(e!=null&&s){let t=s.getScrollTop();Math.abs(t-e)>5&&s.setScrollTop(e)}}),F(()=>r.gutterPlacement,()=>{N()}),F(()=>[r.language,r.filePath],()=>{o&&j()}),F(()=>r.theme,()=>{A()}),F(()=>r.readOnly,e=>{s&&s.updateOptions({readOnly:e})}),ue(()=>{try{m?.dispose?.()}catch{}m=null;try{_?.dispose?.()}catch{}_=null;try{v?.dispose?.()}catch{}v=null;try{h?.remove?.()}catch{}h=null,g.clear(),s?.dispose(),s=null,f=[],c?.dispose(),c=null});let P={props:r,emit:i,containerRef:a,get monaco(){return o},set monaco(e){o=e},get editor(){return s},set editor(e){s=e},get model(){return c},set model(e){c=e},get monacoLoaderPromise(){return l},set monacoLoaderPromise(e){l=e},get suppressEmit(){return u},set suppressEmit(e){u=e},get decorationIds(){return d},set decorationIds(e){d=e},get dimDecorationIds(){return f},set dimDecorationIds(e){f=e},get gutterDecorationIds(){return p},set gutterDecorationIds(e){p=e},get mouseDownDisposable(){return m},set mouseDownDisposable(e){m=e},get rightActionsContainer(){return h},set rightActionsContainer(e){h=e},get rightActionNodes(){return g},set rightActionNodes(e){g=e},get scrollDisposable(){return _},set scrollDisposable(e){_=e},get layoutDisposable(){return v},set layoutDisposable(e){v=e},applyGutterMarginOption:y,ensureRightActionsContainer:b,clearRightActions:x,layoutRightActions:S,isBlockApplied:C,isBlockDiscarded:w,decorateAsButton:T,applyRightActions:E,ensureMonacoLoaded:O,detectLanguageFromPath:k,getResolvedLanguage:te,getResolvedTheme:ne,applyTheme:A,ensureModel:j,updateModelValueFromProps:re,applyRevealLine:ie,applyHighlight:M,applyGutterItems:N};return Object.defineProperty(P,"__isScriptSetup",{enumerable:!1,value:!0}),P}});o(),n();function dt(e,t,n,r,i,a){return w(),N(`div`,{ref:`containerRef`,class:`monaco-editor-container`,style:S(n.minHeight?{minHeight:n.minHeight}:{flex:1,minHeight:`200px`})},null,4)}var ft=z(ut,[[`render`,dt],[`__scopeId`,`data-v-aa2a1a7a`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/MonacoEditor.vue`]]);n(),I();var pt=u({__name:`AiDiffSummary`,props:{source:{type:String,required:!0},scope:{type:String,required:!0},commitHash:{type:String,required:!1,default:``},file:{type:String,required:!1,default:``},fileName:{type:String,required:!1,default:``},fileRevision:{type:String,required:!1,default:``},revision:{type:String,required:!1,default:``},auto:{type:Boolean,required:!1,default:!0}},setup(e,{expose:n}){n();let r=e,i=xe(),a=v(()=>Array.isArray(i.models)&&i.models.length>0),o=v(()=>(i.locale||``).startsWith(`en`)?`en`:`zh`),s=v(()=>{let e=Array.isArray(i.models)?i.models:[],t=e.find(e=>e.isDefault)||e[0];return t?`${t.id}|${t.baseURL}|${t.model}`:``}),c=D({status:`idle`,text:``,error:``}),u=D(!1),d=D(!1),f=new Map,m=null,h=null;function g(e){let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return`${e.length}:${(t>>>0).toString(36)}`}function y(){let e=`${r.source}|${r.commitHash||``}|${r.scope}|${o.value}|${s.value}`;if(r.scope===`overall`)return`${e}|${r.source===`worktree`?g(r.revision):``}`;let t=r.source===`worktree`?g(r.fileRevision):``;return`${e}|${r.file||``}|${t}`}function b(){let e=f.get(y());c.value=e?{status:`done`,text:e,error:``}:{status:`idle`,text:``,error:``}}function x(){m?.abort(),m=null}async function S(e=!1){if(!a.value||r.scope===`file`&&!r.file||r.source===`commit`&&!r.commitHash)return;let t=y();if(!e&&f.has(t)){c.value={status:`done`,text:f.get(t)||``,error:``};return}x();let n=new AbortController;m=n,c.value={status:`loading`,text:``,error:``};let i=``,s=e=>{let t=e.trim();if(!t.startsWith(`data:`))return;let n=t.slice(5).trim();if(!n)return;let r;try{r=JSON.parse(n)}catch{return}if(r.type===`delta`)i+=r.content||``,c.value={status:`loading`,text:i,error:``};else if(r.type===`done`)c.value={status:`done`,text:i,error:``};else if(r.type===`error`){let e=r.code===`NO_MODEL`?`no-model`:r.code===`EMPTY_DIFF`?`empty`:`error`;c.value={status:e,text:``,error:r.error||R(`@DIFFAI:生成失败`)}}};try{let a={scope:r.scope,source:r.source,locale:o.value};r.scope===`file`&&(a.file=r.file),r.source===`commit`&&(a.hash=r.commitHash),e&&(a.bypassCache=!0);let l=await fetch(`/api/ai/diff-summary`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify(a),signal:n.signal});if(!l.ok||!l.body)throw Error(`HTTP ${l.status}`);let u=l.body.getReader(),d=new TextDecoder,p=``;for(;;){let{done:e,value:t}=await u.read();if(e)break;p+=d.decode(t,{stream:!0});let n=p.split(`
4
4
  `);p=n.pop()||``,n.forEach(s)}p+=d.decode(),p&&s(p),c.value.status===`loading`&&(c.value={status:i?`done`:`empty`,text:i,error:``}),c.value.status===`done`&&i&&f.set(t,i)}catch(e){e?.name!==`AbortError`&&m===n&&(c.value={status:`error`,text:``,error:e?.message||R(`@DIFFAI:生成失败`)})}finally{m===n&&(m=null)}}function ee(){f.delete(y()),S(!0)}function w(){r.auto&&a.value&&(r.scope!==`file`||r.file)&&S()}function T(){h&&clearTimeout(h),h=setTimeout(w,350)}F(()=>[r.file,r.fileRevision,r.revision,r.commitHash,r.source,r.scope,a.value,o.value,s.value,r.auto],()=>{x(),b(),a.value&&T()},{immediate:!0}),ue(()=>{x(),h&&clearTimeout(h)});let O={props:r,configStore:i,hasModel:a,locale:o,modelKey:s,state:c,collapsed:u,dialogVisible:d,cache:f,get controller(){return m},set controller(e){m=e},get debounceTimer(){return h},set debounceTimer(e){h=e},fingerprint:g,cacheKey:y,restoreState:b,abort:x,generate:S,refresh:ee,triggerAuto:w,scheduleAuto:T,title:v(()=>r.scope===`file`?R(`@DIFFAI:AI 文件说明`):R(`@DIFFAI:AI 整体说明`)),context:v(()=>r.scope===`file`?r.fileName||r.file:r.source===`commit`?R(`@DIFFAI:本次提交`):R(`@DIFFAI:未提交变更`)),get ArrowDown(){return C},get ArrowUp(){return _},get FullScreen(){return he},get Loading(){return t},get Memo(){return p},get Refresh(){return l},get Warning(){return E},MarkdownPreview:De,get $t(){return R},CommonDialog:Ie};return Object.defineProperty(O,"__isScriptSetup",{enumerable:!1,value:!0}),O}});n(),o(),ne();var mt={class:`summary-head`},ht={class:`summary-heading`},gt={class:`summary-label`},_t=[`title`],vt={class:`summary-actions`},Q={class:`summary-body`},yt={key:1,class:`summary-placeholder is-loading`},bt={key:2,class:`summary-placeholder`},$={key:3,class:`summary-placeholder`},xt={key:4,class:`summary-error`},St={class:`err-msg`},Ct={key:0,class:`dialog-context`},wt={class:`dialog-body`},Tt={key:1,class:`summary-placeholder is-loading`},Et={key:2,class:`summary-placeholder`};function Dt(e,t,n,r,o,s){let c=d,l=_e;return r.hasModel?(w(),N(`section`,{key:0,class:f([`ai-diff-summary`,`is-${n.scope}`])},[a(`header`,mt,[a(`div`,ht,[g(c,{class:`ai-badge`},{default:k(()=>[g(r.Memo)]),_:1}),a(`span`,gt,A(r.title),1)]),a(`span`,{class:`summary-context`,title:r.context},A(r.context),9,_t),a(`div`,vt,[r.state.status===`loading`?(w(),i(c,{key:0,class:`spin`},{default:k(()=>[g(r.Loading)]),_:1})):h(`v-if`,!0),g(l,{text:``,size:`small`,icon:r.FullScreen,disabled:!r.state.text,title:r.$t(`@DIFFAI:弹窗查看`),onClick:t[0]||=e=>r.dialogVisible=!0},null,8,[`icon`,`disabled`,`title`]),g(l,{text:``,size:`small`,icon:r.Refresh,disabled:r.state.status===`loading`,title:r.$t(`@DIFFAI:重新生成`),onClick:r.refresh},null,8,[`icon`,`disabled`,`title`]),g(l,{text:``,size:`small`,icon:r.collapsed?r.ArrowDown:r.ArrowUp,title:r.collapsed?r.$t(`@DIFFAI:展开说明`):r.$t(`@DIFFAI:收起说明`),onClick:t[1]||=e=>r.collapsed=!r.collapsed},null,8,[`icon`,`title`])])]),P(a(`div`,Q,[r.state.text?(w(),i(r.MarkdownPreview,{key:0,content:r.state.text,"allow-html":!1},null,8,[`content`])):r.state.status===`loading`?(w(),N(`div`,yt,A(r.$t(`@DIFFAI:正在生成差异说明...`)),1)):r.state.status===`empty`?(w(),N(`div`,bt,A(n.scope===`file`?r.$t(`@DIFFAI:该文件没有可总结的变更`):r.$t(`@DIFFAI:没有可总结的变更`)),1)):r.state.status===`no-model`?(w(),N(`div`,$,A(r.state.error),1)):r.state.status===`error`?(w(),N(`div`,xt,[g(c,null,{default:k(()=>[g(r.Warning)]),_:1}),a(`span`,St,A(r.state.error),1),g(l,{text:``,size:`small`,icon:r.Refresh,onClick:r.refresh},{default:k(()=>[m(A(r.$t(`@DIFFAI:重试`)),1)]),_:1},8,[`icon`])])):h(`v-if`,!0)],512),[[me,!r.collapsed]]),h(` 弹窗:完整显示 AI 说明 `),g(r.CommonDialog,{modelValue:r.dialogVisible,"onUpdate:modelValue":t[2]||=e=>r.dialogVisible=e,title:r.title,width:`680px`,type:`flex`,"close-on-click-modal":!0,"destroy-on-close":``,"custom-class":`ai-summary-dialog`},{default:k(()=>[r.context?(w(),N(`div`,Ct,A(r.context),1)):h(`v-if`,!0),a(`div`,wt,[r.state.text?(w(),i(r.MarkdownPreview,{key:0,content:r.state.text,"allow-html":!1},null,8,[`content`])):r.state.status===`loading`?(w(),N(`div`,Tt,A(r.$t(`@DIFFAI:正在生成差异说明...`)),1)):(w(),N(`div`,Et,A(r.$t(`@DIFFAI:暂无说明内容`)),1))])]),_:1},8,[`modelValue`,`title`])],2)):h(`v-if`,!0)}var Ot=z(pt,[[`render`,Dt],[`__scopeId`,`data-v-e99f6f8f`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/AiDiffSummary.vue`]]);n(),I();var kt=u({__name:`DiffPreviewPanel`,props:{filePath:{type:String,required:!0},content:{type:String,required:!0},loading:{type:Boolean,required:!1,default:!1},error:{type:String,required:!1,default:``},context:{type:String,required:!1,default:`git-status`},commitHash:{type:String,required:!1,default:``},officePreviewUrl:{type:String,required:!1,default:``}},emits:[`refresh`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,a=v(()=>(r.filePath||``).split(`.`).pop()?.toLowerCase()??``),o=v(()=>a.value===`md`||a.value===`markdown`),s=v(()=>a.value===`html`||a.value===`htm`||a.value===`svg`),c=v(()=>[`doc`,`docx`,`xls`,`xlsx`,`ppt`,`pptx`,`odt`,`ods`,`odp`].includes(a.value)),u=v(()=>o.value||s.value||c.value&&!!r.officePreviewUrl),f=D(!0);function p(){typeof document<`u`&&(f.value=document.documentElement.getAttribute(`data-theme`)!==`light`)}let m=v(()=>{if(!s.value)return``;let e=f.value?`#0d1117`:`#ffffff`,t=f.value?`#e6edf3`:`var(--md-text-strong)`;return a.value===`svg`?`<!DOCTYPE html><html><head><meta charset="utf-8"><style>html,body{margin:0;padding:0;background:${e};color:${t};display:flex;align-items:center;justify-content:center;min-height:100vh;}svg{max-width:100%;max-height:90vh;}</style></head><body>${r.content||``}</body></html>`:Oe(r.content||``)});F(()=>r.filePath,()=>{p()},{immediate:!0}),p();let h={props:r,emit:i,ext:a,isMarkdown:o,isHtmlLike:s,isOffice:c,isPreviewable:u,isDark:f,syncTheme:p,previewSrcdoc:m,get ElIcon(){return d},get ElTooltip(){return b},get Refresh(){return l},MarkdownPreview:De,OfficePreview:Ae,get PREVIEW_IFRAME_SANDBOX(){return Me}};return Object.defineProperty(h,"__isScriptSetup",{enumerable:!1,value:!0}),h}});o(),n();var At={key:0,class:`diff-preview-panel`},jt={class:`diff-preview-header`},Mt={class:`diff-preview-title`},Nt={class:`diff-preview-ext-badge`},Pt=[`title`],Ft={class:`diff-preview-body`},It={key:0,class:`diff-preview-loading`},Lt={key:1,class:`diff-preview-error`},Rt=[`sandbox`,`srcdoc`],zt={key:1,class:`diff-preview-panel diff-preview-unsupported`},Bt={class:`diff-preview-body`},Vt={class:`diff-preview-empty`};function Ht(e,t,n,r,o,s){return r.isPreviewable?(w(),N(`div`,At,[a(`div`,jt,[a(`span`,Mt,A(e.$t(`@E80AC:文件预览`)),1),a(`span`,Nt,A(r.ext.toUpperCase()),1),t[1]||=a(`div`,{class:`diff-preview-spacer`},null,-1),g(r.ElTooltip,{content:e.$t(`@E80AC:刷新预览`),placement:`top`},{default:k(()=>[a(`button`,{class:`diff-preview-btn`,title:e.$t(`@E80AC:刷新预览`),onClick:t[0]||=e=>r.emit(`refresh`)},[g(r.ElIcon,null,{default:k(()=>[g(r.Refresh)]),_:1})],8,Pt)]),_:1},8,[`content`])]),a(`div`,Ft,[n.loading?(w(),N(`div`,It,[a(`span`,null,A(e.$t(`@E80AC:正在加载预览...`)),1)])):n.error?(w(),N(`div`,Lt,[a(`span`,null,A(n.error),1)])):r.isHtmlLike?(w(),N(`iframe`,{key:2,class:`diff-preview-iframe`,sandbox:r.PREVIEW_IFRAME_SANDBOX,srcdoc:r.previewSrcdoc},null,8,Rt)):r.isOffice&&n.officePreviewUrl?(w(),i(r.OfficePreview,{key:3,"file-path":n.filePath,source:n.context===`commit-detail`?`git`:`worktree`,rev:n.commitHash},null,8,[`file-path`,`source`,`rev`])):r.isMarkdown?(w(),i(r.MarkdownPreview,{key:4,content:r.props.content||``,class:`diff-preview-markdown`},null,8,[`content`])):h(`v-if`,!0)])])):(w(),N(`div`,zt,[a(`div`,Bt,[a(`span`,Vt,A(e.$t(`@E80AC:当前文件类型不支持预览`)),1)])]))}var Ut=z(kt,[[`render`,Ht],[`__scopeId`,`data-v-3a22f39b`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/DiffPreviewPanel.vue`]]);n(),I();var Wt=`merge-three-pane`,Gt=u({__name:`FileDiffViewer`,props:{files:{type:Array,required:!0},emptyText:{type:String,required:!1,default:R(`@E80AC:没有找到变更文件`)},diffContent:{type:String,required:!1,default:``},diffStats:{type:[Object,null],required:!1,default:null},selectedFile:{type:String,required:!1,default:``},isLoading:{type:Boolean,required:!1,default:!1},plainText:{type:Boolean,required:!1,default:!1},compareMode:{type:Boolean,required:!1,default:!1},compareOriginal:{type:String,required:!1,default:``},compareModified:{type:String,required:!1,default:``},height:{type:String,required:!1,default:`100%`},showFileList:{type:Boolean,required:!1,default:!0},context:{type:String,required:!1,default:`git-status`},showOpenButton:{type:Boolean,required:!1,default:!0},showActionButtons:{type:Boolean,required:!1,default:!1},showVscodeButton:{type:Boolean,required:!1,default:!0},showEditorButton:{type:Boolean,required:!1,default:!0},isFileLocked:{type:Function,required:!1,default:()=>!1},isLocking:{type:Function,required:!1,default:()=>!1},commitHash:{type:String,required:!1,default:``}},emits:[`file-select`,`open-file`,`open-with-vscode`,`open-in-editor`,`toggle-lock`,`stage`,`unstage`,`revert`],setup(e,{expose:t,emit:n}){t();let i=new Set([`md`,`markdown`,`html`,`htm`,`svg`,`doc`,`docx`,`xls`,`xlsx`,`ppt`,`pptx`,`odt`,`ods`,`odp`]),a=e,o=n,l=xe(),u=Se(),f=D(``),p=D(``),m=e=>Math.min(85,Math.max(15,e)),h=v({get:()=>l.ui.fileListViewMode,set:e=>{l.ui.fileListViewMode=e}}),g=v({get:()=>m(l.ui.fileDiffSplitPercent),set:e=>{l.ui.fileDiffSplitPercent=m(e)}}),_=D(!1),x=D(``),S=D(!1),C=D(``),w=D(``),O=0,k=v({get:()=>m(l.ui.diffPreviewSplitPercent??55),set:e=>{l.ui.diffPreviewSplitPercent=m(e)}}),ne=v(()=>{let e=j.value||``;return(e.split(`/`).pop()||e).split(`.`).pop()?.toLowerCase()??``}),A=v(()=>i.has(ne.value)),j=v(()=>a.selectedFile||f.value),M=v(()=>a.context===`commit-detail`?`commit`:a.context===`git-status`?`worktree`:``),N=v(()=>!!(M.value&&l.aiDiffSummaryEnabled)),P=v(()=>a.files.map(e=>`${e.path}\0${e.type||``}`).sort().join(`\0`)),ae=v(()=>Ee(j.value||``)),se=v(()=>j.value?a.files.find(e=>e.path===j.value)?.type===`conflicted`:!1),ce=v(()=>B.value.length>0),I=v(()=>a.files.map(e=>{let t=e.name||e.path.split(`/`).pop()||e.path;return{...e,displayName:t,dirPath:(()=>{let t=(e.path||``).split(`/`);return t.length>1?t.slice(0,-1).join(`/`):``})(),iconClass:we(t)}})),fe=v(()=>{if(!p.value.trim())return I.value;let e=p.value.toLowerCase().trim();return I.value.filter(t=>t.displayName.toLowerCase().includes(e)||t.path.toLowerCase().includes(e))}),pe=D([]);function me(){let e=Ke(fe.value);pe.value.length>0&&qe(e,pe.value),pe.value=e}F(fe,()=>{h.value===`tree`&&me()},{deep:!0}),F(h,e=>{e===`tree`&&me(),window.dispatchEvent(new CustomEvent(`file-list-view-mode-change`,{detail:{mode:e}}))});let he=v(()=>a.compareMode?!0:a.diffContent&&a.diffContent.trim()!==``),L=v(()=>{if(!j.value)return``;let e=j.value.split(`/`);return e.slice(0,-1).join(`/`)+(e.length>1?`/`:``)}),z=v(()=>{if(!j.value)return``;let e=j.value.split(`/`);return e[e.length-1]||j.value});function ve(e){f.value=e,o(`file-select`,e)}function Ce(){if(!j.value){T.warning(R(`@E80AC:请先选择一个文件`));return}o(`open-file`,j.value,a.context)}function De(){if(!j.value){T.warning(R(`@E80AC:请先选择一个文件`));return}navigator.clipboard.writeText(j.value).then(()=>{T.success(R(`@E80AC:文件路径已复制到剪贴板`))}).catch(()=>{T.error(R(`@E80AC:复制失败`))})}function Oe(){u.copyCurrentDiff()}function Ae(){if(!j.value){T.warning(R(`@E80AC:请先选择一个文件`));return}o(`open-with-vscode`,j.value,a.context)}function Me(){if(console.log(`[debug-open-in-editor] FileDiffViewer handleOpenInEditor start`),!j.value){T.warning(R(`@E80AC:请先选择一个文件`));return}console.log(`[debug-open-in-editor] FileDiffViewer emit, filePath=`,j.value,`context=`,a.context),o(`open-in-editor`,j.value,a.context)}let B=D([]),Ne=D(!0),V=D(``),H=D(!1),Pe=D(``),Fe=D(``),Ie=D(``),U=D(``),W=D(new Map),G=D(null),Re=D(null),K=D(new Map),q=D(new Map),J=D(new Map);async function Ve(e){let t=await(await fetch(`/api/file-content?file=${encodeURIComponent(e)}`)).json();if(!t.success)throw Error(t.error||R(`@E80AC:无法读取文件内容`));return String(t.content??``)}async function He(){let e=j.value;if(!e||!A.value)return;let t=++O;S.value=!0,C.value=``,w.value=``;try{if(je(e)){w.value=ke(e,{source:a.context===`commit-detail`?`git`:`worktree`,rev:a.context===`commit-detail`?a.commitHash:void 0}),S.value=!1;return}let n=null;if(n=a.context===`commit-detail`&&a.commitHash?await(await fetch(`/api/git-file-content?rev=${encodeURIComponent(a.commitHash)}&file=${encodeURIComponent(e)}`)).json():await(await fetch(`/api/file-content?file=${encodeURIComponent(e)}`)).json(),t!==O)return;if(!n||!n.success){C.value=n?.error||R(`@E80AC:无法读取文件内容`),x.value=``;return}x.value=String(n.content??``)}catch(e){if(t!==O)return;C.value=e.message||R(`@E80AC:无法读取文件内容`),x.value=``}finally{t===O&&(S.value=!1)}}function Ue(){A.value&&(_.value=!_.value,_.value&&!x.value&&!S.value&&He())}F([j,()=>a.context,()=>a.commitHash],()=>{if(x.value=``,w.value=``,C.value=``,!A.value&&_.value){_.value=!1;return}_.value&&He()});let Y=!1,We=0,X=0;function Je(e){Y=!0,We=e.clientY,X=k.value,document.addEventListener(`mousemove`,Ye),document.addEventListener(`mouseup`,Xe),e.preventDefault()}function Ye(e){if(!Y)return;let t=e.target?.closest(`.diff-panel`);if(!t)return;let n=t.getBoundingClientRect().height-34;if(n<=0)return;let r=e.clientY-We,i=X+r/n*100;k.value=m(i)}function Xe(){Y=!1,document.removeEventListener(`mousemove`,Ye),document.removeEventListener(`mouseup`,Xe)}ue(()=>{Y&&Xe()});function Z(e,t){let n=e.split(`
5
5
  `),r=[],i=new Map,a=0,o=0;for(;a<n.length;){let e=n[a];if(e.includes(`<<<<<<<`)){o++;let e=[],s=[];for(a++;a<n.length&&!n[a].includes(`=======`);)e.push(n[a]),a++;for(a++;a<n.length&&!n[a].includes(`>>>>>>>`);)s.push(n[a]),a++;a<n.length&&n[a].includes(`>>>>>>>`)&&a++;let c=t(o),l=[];l=c===`incoming`?s:c===`both`?[...e,...s]:c===`none`?[]:e;let u=r.length+1;r.push(...l);let d=Math.max(u,r.length);i.set(o,{startLine:u,endLine:d});continue}r.push(e),a++}return{text:r.join(`
@@ -1 +1 @@
1
- import{Bn as e,In as t,Pn as n,Rn as r,Tn as i,Wn as a,Xn as o,Zn as s,cr as c,gr as l,kn as u,or as d,pr as f}from"./element-plus-Buzx8xRf.js";import{n as p,t as m}from"./_plugin-vue_export-helper-VuE2vqnn.js";import{i as h,l as g,n as _,s as v}from"./vue-flow-KUZI4f_9.js";import{a as y,c as b,i as x,n as S,o as C,r as w,s as T,t as E}from"./UserInputNode-Ce55MMEZ.js";e(),f();var D=`flow-execution-viewer`,O=t({__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,{expose:n}){n();function s(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 c=t({name:`FlowExecStartNodeRenderer`,props:{id:{type:String,required:!0},data:{type:Object,required:!0}},setup(e){return()=>r(b,{id:e.id,nodeId:e.id,nodeType:`start`,title:p(`@FLOWNODE:开始`),icon:s(`start`),enabled:e.data?.enabled,selected:e.data?.selected,execStatus:e.data?.execStatus,deletable:!1},{})}});function u(e){return t({name:`FlowExecWrappedNode`,props:{id:{type:String,required:!0},data:{type:Object,required:!0}},setup(t){let n=i(()=>{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()=>r(b,{id:t.id,nodeId:t.id,nodeType:t.data?.type,title:t.data?.label,icon:s(t.data?.type),enabled:t.data?.enabled,selected:t.data?.selected,execStatus:t.data?.execStatus,sourceHandleIds:t.data?.type===`condition`?n.value:void 0,deletable:!1},{default:()=>r(e,{data:t.data,id:t.id})})}})}let f={start:l(c),command:l(u(T)),wait:l(u(C)),version:l(u(y)),confirm:l(u(x)),code:l(u(w)),condition:l(u(S)),user_input:l(u(E))},m=e,{onPaneReady:O}=g({id:D}),k=null,A=null;async function j(e){if(e){if(!k){A=e;return}for(let t=0;t<6;t+=1){if(await a(),await new Promise(e=>requestAnimationFrame(()=>e())),!(typeof k?.findNode==`function`&&k.findNode(e))){await new Promise(e=>window.setTimeout(()=>e(),60));continue}try{await k.fitView({nodes:[e],padding:.35,includeHiddenNodes:!0,minZoom:.35,maxZoom:1.2,duration:200})}catch{}break}}}O(e=>{k=e,console.log(`[FlowExecutionViewer] onPaneReady, flowId=`,D),console.log(`[FlowExecutionViewer] instance keys=`,Object.keys(e||{}));try{k.fitView({padding:.2,includeHiddenNodes:!0,duration:0})}catch{}let t=(m.currentNodeId||A||``).trim();t&&(A=null,j(t))});let M=null;d(()=>m.currentNodeId,async e=>{e&&(M&&=(window.clearTimeout(M),null),M=window.setTimeout(async()=>{if(console.log(`[FlowExecutionViewer] focus request, flowId=`,D,`nodeId=`,e),!k){A=e,console.log(`[FlowExecutionViewer] flowInstance not ready, pendingFocusNodeId=`,A);return}j(e)},150))}),o(()=>{M&&=(window.clearTimeout(M),null)});let N={getNodeIcon:s,StartNodeRenderer:c,createWrappedNode:u,nodeTypes:f,props:m,flowId:D,onPaneReady:O,get flowInstance(){return k},set flowInstance(e){k=e},get pendingFocusNodeId(){return A},set pendingFocusNodeId(e){A=e},focusNode:j,get focusTimer(){return M},set focusTimer(e){M=e},nodesForRender:i(()=>{let e=Array.isArray(m.flowData?.nodes)?m.flowData.nodes:[],t=new Set(m.executedNodeIds),n=new Set(m.failedNodeIds),r=m.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(` `)}})}),edgesForRender:i(()=>{let e=Array.isArray(m.flowData?.edges)?m.flowData.edges:[],t=new Set(m.executedEdgeIds);return e.map(e=>{let n=[];return t.has(e.id)&&n.push(`exec-edge-done`),{...e,class:n.join(` `)}})}),get VueFlow(){return v},get Background(){return h},get Controls(){return _}};return Object.defineProperty(N,"__isScriptSetup",{enumerable:!1,value:!0}),N}});e();var k={class:`flow-exec-viewer`};function A(e,t,r,i,a,o){return s(),u(`div`,k,[n(i.VueFlow,{id:i.flowId,nodes:i.nodesForRender,edges:i.edgesForRender,"node-types":i.nodeTypes,"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:c(()=>[n(i.Background),n(i.Controls)]),_:1},8,[`nodes`,`edges`])])}var j=m(O,[[`render`,A],[`__scopeId`,`data-v-edba3f0b`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/flow/FlowExecutionViewer.vue`]]);export{j as default};
1
+ import{Bn as e,In as t,Pn as n,Rn as r,Tn as i,Wn as a,Xn as o,Zn as s,cr as c,gr as l,kn as u,or as d,pr as f}from"./element-plus-Buzx8xRf.js";import{n as p,t as m}from"./_plugin-vue_export-helper-DcQKU19k.js";import{i as h,l as g,n as _,s as v}from"./vue-flow-KUZI4f_9.js";import{a as y,c as b,i as x,n as S,o as C,r as w,s as T,t as E}from"./UserInputNode-DMCLoOUw.js";e(),f();var D=`flow-execution-viewer`,O=t({__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,{expose:n}){n();function s(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 c=t({name:`FlowExecStartNodeRenderer`,props:{id:{type:String,required:!0},data:{type:Object,required:!0}},setup(e){return()=>r(b,{id:e.id,nodeId:e.id,nodeType:`start`,title:p(`@FLOWNODE:开始`),icon:s(`start`),enabled:e.data?.enabled,selected:e.data?.selected,execStatus:e.data?.execStatus,deletable:!1},{})}});function u(e){return t({name:`FlowExecWrappedNode`,props:{id:{type:String,required:!0},data:{type:Object,required:!0}},setup(t){let n=i(()=>{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()=>r(b,{id:t.id,nodeId:t.id,nodeType:t.data?.type,title:t.data?.label,icon:s(t.data?.type),enabled:t.data?.enabled,selected:t.data?.selected,execStatus:t.data?.execStatus,sourceHandleIds:t.data?.type===`condition`?n.value:void 0,deletable:!1},{default:()=>r(e,{data:t.data,id:t.id})})}})}let f={start:l(c),command:l(u(T)),wait:l(u(C)),version:l(u(y)),confirm:l(u(x)),code:l(u(w)),condition:l(u(S)),user_input:l(u(E))},m=e,{onPaneReady:O}=g({id:D}),k=null,A=null;async function j(e){if(e){if(!k){A=e;return}for(let t=0;t<6;t+=1){if(await a(),await new Promise(e=>requestAnimationFrame(()=>e())),!(typeof k?.findNode==`function`&&k.findNode(e))){await new Promise(e=>window.setTimeout(()=>e(),60));continue}try{await k.fitView({nodes:[e],padding:.35,includeHiddenNodes:!0,minZoom:.35,maxZoom:1.2,duration:200})}catch{}break}}}O(e=>{k=e,console.log(`[FlowExecutionViewer] onPaneReady, flowId=`,D),console.log(`[FlowExecutionViewer] instance keys=`,Object.keys(e||{}));try{k.fitView({padding:.2,includeHiddenNodes:!0,duration:0})}catch{}let t=(m.currentNodeId||A||``).trim();t&&(A=null,j(t))});let M=null;d(()=>m.currentNodeId,async e=>{e&&(M&&=(window.clearTimeout(M),null),M=window.setTimeout(async()=>{if(console.log(`[FlowExecutionViewer] focus request, flowId=`,D,`nodeId=`,e),!k){A=e,console.log(`[FlowExecutionViewer] flowInstance not ready, pendingFocusNodeId=`,A);return}j(e)},150))}),o(()=>{M&&=(window.clearTimeout(M),null)});let N={getNodeIcon:s,StartNodeRenderer:c,createWrappedNode:u,nodeTypes:f,props:m,flowId:D,onPaneReady:O,get flowInstance(){return k},set flowInstance(e){k=e},get pendingFocusNodeId(){return A},set pendingFocusNodeId(e){A=e},focusNode:j,get focusTimer(){return M},set focusTimer(e){M=e},nodesForRender:i(()=>{let e=Array.isArray(m.flowData?.nodes)?m.flowData.nodes:[],t=new Set(m.executedNodeIds),n=new Set(m.failedNodeIds),r=m.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(` `)}})}),edgesForRender:i(()=>{let e=Array.isArray(m.flowData?.edges)?m.flowData.edges:[],t=new Set(m.executedEdgeIds);return e.map(e=>{let n=[];return t.has(e.id)&&n.push(`exec-edge-done`),{...e,class:n.join(` `)}})}),get VueFlow(){return v},get Background(){return h},get Controls(){return _}};return Object.defineProperty(N,"__isScriptSetup",{enumerable:!1,value:!0}),N}});e();var k={class:`flow-exec-viewer`};function A(e,t,r,i,a,o){return s(),u(`div`,k,[n(i.VueFlow,{id:i.flowId,nodes:i.nodesForRender,edges:i.edgesForRender,"node-types":i.nodeTypes,"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:c(()=>[n(i.Background),n(i.Controls)]),_:1},8,[`nodes`,`edges`])])}var j=m(O,[[`render`,A],[`__scopeId`,`data-v-edba3f0b`],[`__file`,`C:/workspace/github_workspace/xz333221/zen-gitsync/src/ui/client/src/components/flow/FlowExecutionViewer.vue`]]);export{j as default};