zen-gitsync 2.16.4 → 2.16.5

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 (39) hide show
  1. package/package.json +2 -2
  2. package/src/config.js +3 -1
  3. package/src/ui/public/assets/{AgentView-B8K-n9Xb.js → AgentView-DQeLYua1.js} +1 -1
  4. package/src/ui/public/assets/{AppVersionBadge-VNwsFAQ4.js → AppVersionBadge-DBsdukpZ.js} +2 -2
  5. package/src/ui/public/assets/{BranchSelector-fUs9S_Md.js → BranchSelector-CV14MGVJ.js} +1 -1
  6. package/src/ui/public/assets/{CommitForm-D4Z3mEn8.js → CommitForm-f4G3j20U.js} +1 -1
  7. package/src/ui/public/assets/{CommonDialog-BiKCafxJ.js → CommonDialog-kpicT8tT.js} +1 -1
  8. package/src/ui/public/assets/{CustomCommandManager-Z2mFUIa5.js → CustomCommandManager-jOzjbWo-.js} +1 -1
  9. package/src/ui/public/assets/{EditorView-CjvPmZwL.js → EditorView-BN4LTLF_.js} +0 -0
  10. package/src/ui/public/assets/{FileDiffViewer-CVI09Z9R.js → FileDiffViewer-qCruHrvG.js} +1 -1
  11. package/src/ui/public/assets/{FlowExecutionViewer-CXiALppR.js → FlowExecutionViewer-CfXQNpia.js} +1 -1
  12. package/src/ui/public/assets/{FlowOrchestrationWorkspace--WktnOhK.js → FlowOrchestrationWorkspace-6-Nrk323.js} +1 -1
  13. package/src/ui/public/assets/{ImagePreview-JSoyX9dG.js → ImagePreview-uus9AJBH.js} +1 -1
  14. package/src/ui/public/assets/{LogList-YGFFHaWq.js → LogList-BdUIYvmV.js} +1 -1
  15. package/src/ui/public/assets/MindmapView-CS2t30Ko.css +1 -0
  16. package/src/ui/public/assets/MindmapView-CXgXfSp9.js +1 -0
  17. package/src/ui/public/assets/{MonitorView-BO7sD_AT.js → MonitorView--_HcgChH.js} +1 -1
  18. package/src/ui/public/assets/{ProjectStartupButton-Cb_6nIST.js → ProjectStartupButton-D2RAB7x3.js} +1 -1
  19. package/src/ui/public/assets/{RemoteRepoCard-CX3hjqPy.js → RemoteRepoCard-CrH6IRjU.js} +1 -1
  20. package/src/ui/public/assets/{ResetToRemoteButton-DplgmsjP.js → ResetToRemoteButton-B-YCVYuU.js} +1 -1
  21. package/src/ui/public/assets/{SourceMapView-VIforg3A.js → SourceMapView-CJPXCE-5.js} +1 -1
  22. package/src/ui/public/assets/{SvgIcon-B6yUL4VE.js → SvgIcon-D2d_pLV2.js} +1 -1
  23. package/src/ui/public/assets/{TemplateManager-BL6Hh1WC.js → TemplateManager-CVIW3w0U.js} +1 -1
  24. package/src/ui/public/assets/{UserInputNode-QGkq19Ll.js → UserInputNode-DCWdzlEi.js} +1 -1
  25. package/src/ui/public/assets/{WorkbenchView-BJ6pZO2i.js → WorkbenchView--Jm73izU.js} +1 -1
  26. package/src/ui/public/assets/{_plugin-vue_export-helper-YXQ3ciBX.js → _plugin-vue_export-helper-CqCl-blp.js} +1 -1
  27. package/src/ui/public/assets/{configStore-Bx8x9Mmq.js → configStore-CQI-Jwbh.js} +1 -1
  28. package/src/ui/public/assets/{editorTabs-BXZfud_e.js → editorTabs-CDptue-m.js} +1 -1
  29. package/src/ui/public/assets/{gitStore-ChujF6Yw.js → gitStore-B9_G-47n.js} +1 -1
  30. package/src/ui/public/assets/{index-BPiNzRu4.css → index-B3a8BmPZ.css} +1 -1
  31. package/src/ui/public/assets/{index-Kh1cYLBl.js → index-CmeNLD74.js} +4 -4
  32. package/src/ui/public/assets/{toolsStore-Dl1ZztJj.js → toolsStore-3tCJpR-X.js} +1 -1
  33. package/src/ui/public/assets/{vendor-MTP3JiRt.js → vendor-BiOPaz96.js} +38 -38
  34. package/src/ui/public/assets/vendor-BsP5frPd.css +1 -0
  35. package/src/ui/public/assets/{workbenchStatus-Bom561hj.js → workbenchStatus-BBUb9d_k.js} +1 -1
  36. package/src/ui/public/index.html +17 -17
  37. package/src/ui/public/assets/MindmapView-CWoqfZRL.css +0 -1
  38. package/src/ui/public/assets/MindmapView-D0ktJpxh.js +0 -1
  39. package/src/ui/public/assets/vendor-DS8hAeFq.css +0 -1
@@ -1 +1 @@
1
- import"./rolldown-runtime-DAXXjFlN.js";import{B as e,Cn as t,I as n,Jn as r,S as i,Sn as a,Tn as o,Vn as s,W as c,Xn as l,_n as u,_r as d,a as f,cn as p,gn as m,hn as h,ht as g,j as _,mn as v,mr as ee,pr as y,sr as b,un as x,vn as S,z as C,zn as w}from"./element-plus-BeKPY2v-.js";import{n as T,t as E}from"./_plugin-vue_export-helper-YXQ3ciBX.js";import{t as te}from"./SvgIcon-B6yUL4VE.js";import{t as ne}from"./CommonDialog-BiKCafxJ.js";import{t as D}from"./configStore-Bx8x9Mmq.js";var re={class:`template-form`},ie={class:`template-form-buttons`},O={key:0,class:`template-list`},k={key:1,class:`template-list-scroll`},A={class:`template-content`},j={class:`template-actions`},M={key:1,class:`templates-container`},ae={class:`message-templates-list`},oe={class:`templates-scroll-area`},se={class:`template-content`},ce={class:`template-actions`},le={key:0,class:`current-default-message`},ue={class:`default-message-content`},N={key:2,class:`message-help-text`},P=E(o({__name:`TemplateManager`,props:{visible:{type:Boolean},type:{},title:{},placeholder:{default:T(`@60CAC:输入新模板内容`)},editPlaceholder:{default:T(`@60CAC:编辑模板内容`)},emptyDescription:{default:T(`@60CAC:暂无保存的模板`)},showDefaultSection:{type:Boolean,default:!1},showHelpText:{type:Boolean,default:!1}},emits:[`update:visible`,`use-template`,`set-default`],setup(o,{expose:E,emit:P}){let F=o,I=P,L=D(),R=b(``),z=b(!1),B=b(``),V=b(-1),H=b(!1),U=b(!1),W=b(!1),G=v(()=>{switch(F.type){case`description`:return L.descriptionTemplates||[];case`scope`:return L.scopeTemplates||[];case`message`:return L.messageTemplates||[];case`command`:return L.commandTemplates||[];default:return[]}}),K=v(()=>F.type===`message`?L.defaultCommitMessage:``),de=v(()=>z.value?F.editPlaceholder:F.placeholder),fe=v(()=>z.value?T(`@60CAC:更新模板`):T(`@60CAC:添加模板`)),q=v({get:()=>F.visible,set:e=>I(`update:visible`,e)});r(q,e=>{e||J()});function J(){R.value=``,z.value=!1,B.value=``,V.value=-1}async function Y(){if(!R.value.trim()){f.warning(T(`@60CAC:模板内容不能为空`));return}try{H.value=!0,z.value?await L.updateTemplate(B.value,R.value,F.type)&&J():await L.saveTemplate(R.value,F.type)&&(R.value=``)}catch(e){f.error(`${T(`@60CAC:模板保存失败: `)}${e.message}`)}finally{H.value=!1}}function X(e){I(`use-template`,e),F.type!==`message`&&(q.value=!1)}function Z(e,t){z.value=!0,B.value=e,R.value=e,V.value=t}function pe(){J()}async function Q(e){try{W.value=!0,await L.pinTemplate(e,F.type)}catch(e){f.error(`${T(`@60CAC:置顶模板失败: `)}${e.message}`)}finally{W.value=!1}}async function $(e){try{await L.deleteTemplate(e,F.type)}catch(e){f.error(`${T(`@60CAC:模板删除失败: `)}${e.message}`)}}async function me(){if(!(F.type!==`message`||!R.value.trim()))try{U.value=!0,await L.saveDefaultMessage(R.value)&&I(`set-default`,R.value)}catch(e){f.error(`${T(`@60CAC:设置默认提交信息失败: `)}${e.message}`)}finally{U.value=!1}}return E({resetForm:J}),(r,f)=>{let v=c,b=e,E=i,D=te,P=_,F=n,I=C;return w(),m(ne,{modelValue:q.value,"onUpdate:modelValue":f[1]||=e=>q.value=e,title:o.title,"close-on-click-modal":!1,"append-to-body":!0,"custom-class":o.type===`message`?`message-template-dialog`:`template-dialog`},{default:l(()=>[h(`div`,{class:ee([`template-container`,{"message-template-container":o.type===`message`}])},[h(`div`,re,[t(v,{modelValue:R.value,"onUpdate:modelValue":f[0]||=e=>R.value=e,placeholder:de.value,class:`template-input`,clearable:``,onKeyup:p(Y,[`enter`])},null,8,[`modelValue`,`placeholder`]),h(`div`,ie,[z.value?(w(),m(b,{key:0,onClick:pe},{default:l(()=>[a(d(y(T)(`@60CAC:取消`)),1)]),_:1})):u(``,!0),t(b,{type:`primary`,onClick:Y,disabled:!R.value.trim()||H.value,loading:H.value},{default:l(()=>[a(d(fe.value),1)]),_:1},8,[`disabled`,`loading`]),o.type===`message`?(w(),m(b,{key:1,type:`success`,onClick:me,disabled:!R.value.trim()||U.value,loading:U.value,plain:``},{default:l(()=>[a(d(y(T)(`@60CAC:设为默认提交信息`)),1)]),_:1},8,[`disabled`,`loading`])):u(``,!0)])]),o.type===`message`?(w(),S(`div`,M,[h(`div`,ae,[h(`h3`,null,d(y(T)(`@60CAC:已保存模板`)),1),h(`div`,oe,[G.value.length===0?(w(),m(E,{key:0,description:o.emptyDescription},null,8,[`description`])):u(``,!0),(w(!0),S(x,null,s(G.value,(e,n)=>(w(),m(F,{key:n,class:`template-item`},{default:l(()=>[t(P,{justify:`space-between`,align:`middle`,style:{width:`100%`}},{default:l(()=>[h(`div`,se,d(e),1),h(`div`,ce,[t(b,{size:`small`,class:`pin-button`,onClick:t=>Q(e),loading:W.value,disabled:n===0,title:`置顶`},{default:l(()=>[t(D,{"icon-class":`pin`,"class-name":`pin-icon`})]),_:1},8,[`onClick`,`loading`,`disabled`]),t(b,{type:`primary`,size:`small`,onClick:t=>X(e)},{default:l(()=>[a(d(y(T)(`@60CAC:使用`)),1)]),_:1},8,[`onClick`]),t(b,{type:`warning`,size:`small`,icon:y(g),onClick:t=>Z(e,Number(n))},{default:l(()=>[a(d(y(T)(`@60CAC:编辑`)),1)]),_:1},8,[`icon`,`onClick`]),t(b,{type:`danger`,size:`small`,onClick:t=>$(e)},{default:l(()=>[a(d(y(T)(`@60CAC:删除`)),1)]),_:1},8,[`onClick`])])]),_:2},1024)]),_:2},1024))),128))])]),o.showDefaultSection?(w(),S(`div`,le,[h(`h3`,null,d(y(T)(`@60CAC:当前默认提交信息`)),1),K.value?(w(),m(F,{key:0,class:`default-message-card`},{default:l(()=>[h(`div`,ue,d(K.value),1)]),_:1})):(w(),m(E,{key:1,description:y(T)(`@60CAC:尚未设置默认提交信息`),"image-size":100},null,8,[`description`])),o.showHelpText?(w(),S(`div`,N,[h(`h4`,null,d(y(T)(`@60CAC:关于默认提交信息`)),1),h(`p`,null,d(y(T)(`@60CAC:默认提交信息将在未输入提交信息时自动使用。`)),1),h(`p`,null,[a(d(y(T)(`@60CAC:你可以通过点击左侧模板的`)),1),t(I,{size:`small`,type:`primary`},{default:l(()=>[a(d(y(T)(`@60CAC:使用`)),1)]),_:1}),a(d(y(T)(`@60CAC:按钮先选择喜欢的模板,然后点击上方`)),1),t(I,{size:`small`,type:`success`},{default:l(()=>[a(d(y(T)(`@60CAC:设为默认提交信息`)),1)]),_:1}),a(d(y(T)(`@60CAC:按钮保存。`)),1)])])):u(``,!0)])):u(``,!0)])):(w(),S(`div`,O,[h(`h3`,null,d(y(T)(`@60CAC:已保存`))+` `+d(o.type===`description`?y(T)(`@60CAC:模板`):o.type===`scope`?y(T)(`@60CAC:作用域`):o.type===`command`?y(T)(`@CMD01:命令模板`):``),1),G.value.length===0?(w(),m(E,{key:0,description:o.emptyDescription},null,8,[`description`])):(w(),S(`div`,k,[(w(!0),S(x,null,s(G.value,(e,n)=>(w(),m(F,{key:n,class:`template-item`},{default:l(()=>[t(P,{justify:`space-between`,align:`middle`,style:{width:`100%`}},{default:l(()=>[h(`div`,A,d(e),1),h(`div`,j,[t(b,{size:`small`,class:`pin-button`,onClick:t=>Q(e),loading:W.value,disabled:n===0,title:`置顶`},{default:l(()=>[t(D,{"icon-class":`pin`,"class-name":`pin-icon`})]),_:1},8,[`onClick`,`loading`,`disabled`]),t(b,{type:`primary`,size:`small`,onClick:t=>X(e)},{default:l(()=>[a(d(y(T)(`@60CAC:使用`)),1)]),_:1},8,[`onClick`]),t(b,{type:`warning`,size:`small`,icon:y(g),onClick:t=>Z(e,Number(n))},{default:l(()=>[a(d(y(T)(`@60CAC:编辑`)),1)]),_:1},8,[`icon`,`onClick`]),t(b,{type:`danger`,size:`small`,onClick:t=>$(e)},{default:l(()=>[a(d(y(T)(`@60CAC:删除`)),1)]),_:1},8,[`onClick`])])]),_:2},1024)]),_:2},1024))),128))]))]))],2)]),_:1},8,[`modelValue`,`title`,`custom-class`])}}}),[[`__scopeId`,`data-v-105ad2b4`]]);export{P as t};
1
+ import"./rolldown-runtime-DAXXjFlN.js";import{B as e,Cn as t,I as n,Jn as r,S as i,Sn as a,Tn as o,Vn as s,W as c,Xn as l,_n as u,_r as d,a as f,cn as p,gn as m,hn as h,ht as g,j as _,mn as v,mr as ee,pr as y,sr as b,un as x,vn as S,z as C,zn as w}from"./element-plus-BeKPY2v-.js";import{n as T,t as E}from"./_plugin-vue_export-helper-CqCl-blp.js";import{t as te}from"./SvgIcon-D2d_pLV2.js";import{t as ne}from"./CommonDialog-kpicT8tT.js";import{t as D}from"./configStore-CQI-Jwbh.js";var re={class:`template-form`},ie={class:`template-form-buttons`},O={key:0,class:`template-list`},k={key:1,class:`template-list-scroll`},A={class:`template-content`},j={class:`template-actions`},M={key:1,class:`templates-container`},ae={class:`message-templates-list`},oe={class:`templates-scroll-area`},se={class:`template-content`},ce={class:`template-actions`},le={key:0,class:`current-default-message`},ue={class:`default-message-content`},N={key:2,class:`message-help-text`},P=E(o({__name:`TemplateManager`,props:{visible:{type:Boolean},type:{},title:{},placeholder:{default:T(`@60CAC:输入新模板内容`)},editPlaceholder:{default:T(`@60CAC:编辑模板内容`)},emptyDescription:{default:T(`@60CAC:暂无保存的模板`)},showDefaultSection:{type:Boolean,default:!1},showHelpText:{type:Boolean,default:!1}},emits:[`update:visible`,`use-template`,`set-default`],setup(o,{expose:E,emit:P}){let F=o,I=P,L=D(),R=b(``),z=b(!1),B=b(``),V=b(-1),H=b(!1),U=b(!1),W=b(!1),G=v(()=>{switch(F.type){case`description`:return L.descriptionTemplates||[];case`scope`:return L.scopeTemplates||[];case`message`:return L.messageTemplates||[];case`command`:return L.commandTemplates||[];default:return[]}}),K=v(()=>F.type===`message`?L.defaultCommitMessage:``),de=v(()=>z.value?F.editPlaceholder:F.placeholder),fe=v(()=>z.value?T(`@60CAC:更新模板`):T(`@60CAC:添加模板`)),q=v({get:()=>F.visible,set:e=>I(`update:visible`,e)});r(q,e=>{e||J()});function J(){R.value=``,z.value=!1,B.value=``,V.value=-1}async function Y(){if(!R.value.trim()){f.warning(T(`@60CAC:模板内容不能为空`));return}try{H.value=!0,z.value?await L.updateTemplate(B.value,R.value,F.type)&&J():await L.saveTemplate(R.value,F.type)&&(R.value=``)}catch(e){f.error(`${T(`@60CAC:模板保存失败: `)}${e.message}`)}finally{H.value=!1}}function X(e){I(`use-template`,e),F.type!==`message`&&(q.value=!1)}function Z(e,t){z.value=!0,B.value=e,R.value=e,V.value=t}function pe(){J()}async function Q(e){try{W.value=!0,await L.pinTemplate(e,F.type)}catch(e){f.error(`${T(`@60CAC:置顶模板失败: `)}${e.message}`)}finally{W.value=!1}}async function $(e){try{await L.deleteTemplate(e,F.type)}catch(e){f.error(`${T(`@60CAC:模板删除失败: `)}${e.message}`)}}async function me(){if(!(F.type!==`message`||!R.value.trim()))try{U.value=!0,await L.saveDefaultMessage(R.value)&&I(`set-default`,R.value)}catch(e){f.error(`${T(`@60CAC:设置默认提交信息失败: `)}${e.message}`)}finally{U.value=!1}}return E({resetForm:J}),(r,f)=>{let v=c,b=e,E=i,D=te,P=_,F=n,I=C;return w(),m(ne,{modelValue:q.value,"onUpdate:modelValue":f[1]||=e=>q.value=e,title:o.title,"close-on-click-modal":!1,"append-to-body":!0,"custom-class":o.type===`message`?`message-template-dialog`:`template-dialog`},{default:l(()=>[h(`div`,{class:ee([`template-container`,{"message-template-container":o.type===`message`}])},[h(`div`,re,[t(v,{modelValue:R.value,"onUpdate:modelValue":f[0]||=e=>R.value=e,placeholder:de.value,class:`template-input`,clearable:``,onKeyup:p(Y,[`enter`])},null,8,[`modelValue`,`placeholder`]),h(`div`,ie,[z.value?(w(),m(b,{key:0,onClick:pe},{default:l(()=>[a(d(y(T)(`@60CAC:取消`)),1)]),_:1})):u(``,!0),t(b,{type:`primary`,onClick:Y,disabled:!R.value.trim()||H.value,loading:H.value},{default:l(()=>[a(d(fe.value),1)]),_:1},8,[`disabled`,`loading`]),o.type===`message`?(w(),m(b,{key:1,type:`success`,onClick:me,disabled:!R.value.trim()||U.value,loading:U.value,plain:``},{default:l(()=>[a(d(y(T)(`@60CAC:设为默认提交信息`)),1)]),_:1},8,[`disabled`,`loading`])):u(``,!0)])]),o.type===`message`?(w(),S(`div`,M,[h(`div`,ae,[h(`h3`,null,d(y(T)(`@60CAC:已保存模板`)),1),h(`div`,oe,[G.value.length===0?(w(),m(E,{key:0,description:o.emptyDescription},null,8,[`description`])):u(``,!0),(w(!0),S(x,null,s(G.value,(e,n)=>(w(),m(F,{key:n,class:`template-item`},{default:l(()=>[t(P,{justify:`space-between`,align:`middle`,style:{width:`100%`}},{default:l(()=>[h(`div`,se,d(e),1),h(`div`,ce,[t(b,{size:`small`,class:`pin-button`,onClick:t=>Q(e),loading:W.value,disabled:n===0,title:`置顶`},{default:l(()=>[t(D,{"icon-class":`pin`,"class-name":`pin-icon`})]),_:1},8,[`onClick`,`loading`,`disabled`]),t(b,{type:`primary`,size:`small`,onClick:t=>X(e)},{default:l(()=>[a(d(y(T)(`@60CAC:使用`)),1)]),_:1},8,[`onClick`]),t(b,{type:`warning`,size:`small`,icon:y(g),onClick:t=>Z(e,Number(n))},{default:l(()=>[a(d(y(T)(`@60CAC:编辑`)),1)]),_:1},8,[`icon`,`onClick`]),t(b,{type:`danger`,size:`small`,onClick:t=>$(e)},{default:l(()=>[a(d(y(T)(`@60CAC:删除`)),1)]),_:1},8,[`onClick`])])]),_:2},1024)]),_:2},1024))),128))])]),o.showDefaultSection?(w(),S(`div`,le,[h(`h3`,null,d(y(T)(`@60CAC:当前默认提交信息`)),1),K.value?(w(),m(F,{key:0,class:`default-message-card`},{default:l(()=>[h(`div`,ue,d(K.value),1)]),_:1})):(w(),m(E,{key:1,description:y(T)(`@60CAC:尚未设置默认提交信息`),"image-size":100},null,8,[`description`])),o.showHelpText?(w(),S(`div`,N,[h(`h4`,null,d(y(T)(`@60CAC:关于默认提交信息`)),1),h(`p`,null,d(y(T)(`@60CAC:默认提交信息将在未输入提交信息时自动使用。`)),1),h(`p`,null,[a(d(y(T)(`@60CAC:你可以通过点击左侧模板的`)),1),t(I,{size:`small`,type:`primary`},{default:l(()=>[a(d(y(T)(`@60CAC:使用`)),1)]),_:1}),a(d(y(T)(`@60CAC:按钮先选择喜欢的模板,然后点击上方`)),1),t(I,{size:`small`,type:`success`},{default:l(()=>[a(d(y(T)(`@60CAC:设为默认提交信息`)),1)]),_:1}),a(d(y(T)(`@60CAC:按钮保存。`)),1)])])):u(``,!0)])):u(``,!0)])):(w(),S(`div`,O,[h(`h3`,null,d(y(T)(`@60CAC:已保存`))+` `+d(o.type===`description`?y(T)(`@60CAC:模板`):o.type===`scope`?y(T)(`@60CAC:作用域`):o.type===`command`?y(T)(`@CMD01:命令模板`):``),1),G.value.length===0?(w(),m(E,{key:0,description:o.emptyDescription},null,8,[`description`])):(w(),S(`div`,k,[(w(!0),S(x,null,s(G.value,(e,n)=>(w(),m(F,{key:n,class:`template-item`},{default:l(()=>[t(P,{justify:`space-between`,align:`middle`,style:{width:`100%`}},{default:l(()=>[h(`div`,A,d(e),1),h(`div`,j,[t(b,{size:`small`,class:`pin-button`,onClick:t=>Q(e),loading:W.value,disabled:n===0,title:`置顶`},{default:l(()=>[t(D,{"icon-class":`pin`,"class-name":`pin-icon`})]),_:1},8,[`onClick`,`loading`,`disabled`]),t(b,{type:`primary`,size:`small`,onClick:t=>X(e)},{default:l(()=>[a(d(y(T)(`@60CAC:使用`)),1)]),_:1},8,[`onClick`]),t(b,{type:`warning`,size:`small`,icon:y(g),onClick:t=>Z(e,Number(n))},{default:l(()=>[a(d(y(T)(`@60CAC:编辑`)),1)]),_:1},8,[`icon`,`onClick`]),t(b,{type:`danger`,size:`small`,onClick:t=>$(e)},{default:l(()=>[a(d(y(T)(`@60CAC:删除`)),1)]),_:1},8,[`onClick`])])]),_:2},1024)]),_:2},1024))),128))]))]))],2)]),_:1},8,[`modelValue`,`title`,`custom-class`])}}}),[[`__scopeId`,`data-v-105ad2b4`]]);export{P as t};
@@ -1 +1 @@
1
- import"./rolldown-runtime-DAXXjFlN.js";import{Cn as e,Hn as t,Sn as n,Tn as r,Vn as i,Xn as a,Y as o,_n as s,_r as c,gn as l,gr as u,hn as d,it as ee,jt as f,ln as p,mn as m,mr as h,pr as g,un as _,vn as v,yt as y,zn as b}from"./element-plus-BeKPY2v-.js";import{n as x,t as S}from"./_plugin-vue_export-helper-YXQ3ciBX.js";import{t as C}from"./configStore-Bx8x9Mmq.js";import{c as w,o as T}from"./vue-flow-BnEzM6EW.js";var E={key:0},D={key:1},O={key:2},k={key:3,class:`node-header`},A={class:`flow-node-icon`},j={class:`node-title`},M={class:`node-body`},N={key:4,class:`disabled-overlay`},P=S(r({__name:`BaseNode`,props:{id:{},nodeId:{},nodeType:{default:`command`},title:{},icon:{},enabled:{type:Boolean,default:!0},selected:{type:Boolean,default:!1},deletable:{type:Boolean,default:!0},showDeleteOnSelected:{type:Boolean,default:!1},sourceHandleIds:{},execStatus:{}},emits:[`delete`],setup(n,{emit:r}){let f=n,y=m(()=>!!(f.title&&String(f.title).trim()||f.icon&&String(f.icon).trim())),x=m(()=>y.value?16:0),S=m(()=>f.sourceHandleIds&&f.sourceHandleIds.length?f.sourceHandleIds:[`source`]),C=r;return(r,f)=>{let m=o;return b(),v(`div`,{class:h([`flow-node-wrapper`,[{disabled:!n.enabled,"is-selected":n.selected,"show-delete-on-selected":n.showDeleteOnSelected},n.nodeType?`node-type-${n.nodeType}`:``]])},[n.nodeType===`start`?s(``,!0):(b(),l(g(w),{key:0,id:`target`,type:`target`,position:g(T).Left,class:`flow-node-handle handle-left`},null,8,[`position`])),n.deletable===!1?s(``,!0):(b(),l(m,{key:1,class:`flow-node-delete-btn`,onClick:f[0]||=p(e=>C(`delete`,n.nodeId),[`stop`]),title:`删除节点`,role:`button`,tabindex:`0`},{default:a(()=>[e(g(ee))]),_:1})),n.execStatus?(b(),v(`div`,{key:2,class:h([`flow-node-status`,[`status-${n.execStatus}`]])},[n.execStatus===`running`?(b(),v(`span`,E,`执行中`)):n.execStatus===`success`?(b(),v(`span`,D,`成功`)):(b(),v(`span`,O,`失败`))],2)):s(``,!0),n.title||n.icon?(b(),v(`div`,k,[d(`div`,A,c(n.icon),1),d(`div`,j,c(n.title),1)])):s(``,!0),d(`div`,M,[t(r.$slots,`default`,{},void 0,!0)]),n.enabled?s(``,!0):(b(),v(`div`,N,`已禁用`)),n.nodeType===`condition`?(b(!0),v(_,{key:5},i(S.value,e=>(b(),l(g(w),{key:e,id:e,type:`source`,position:g(T).Right,class:`flow-node-handle handle-right`,style:u({top:`calc(50% + ${x.value}px + ${(S.value.indexOf(e)-(S.value.length-1)/2)*18}px)`})},null,8,[`id`,`position`,`style`]))),128)):(b(),l(g(w),{key:6,id:`source`,type:`source`,position:g(T).Right,class:`flow-node-handle handle-right`},null,8,[`position`]))],2)}}}),[[`__scopeId`,`data-v-054d8274`]]),F={class:`command-node-content`},I={class:`node-badges`},L={key:0,class:`node-badge terminal`},R={key:0,class:`node-warning`},z={key:1,class:`command-details`},B={class:`command-code`},V={key:0,class:`command-dir`},H=S(r({__name:`CommandNode`,props:{data:{},id:{}},setup(t){let n=t,r=C(),i=m(()=>!n.data.config||!n.data.config.commandId?null:r.customCommands.find(e=>e.id===n.data.config.commandId)||null),l=m(()=>n.data.config?{name:n.data.config.commandName||x(`@FLOWNODE:未配置`),terminal:n.data.config.useTerminal||!1,command:i.value?.command||``,directory:i.value?.directory||``}:null);return(n,r)=>{let i=o;return b(),v(`div`,F,[d(`div`,I,[l.value?.terminal?(b(),v(`div`,L,[e(i,null,{default:a(()=>[e(g(f))]),_:1}),d(`span`,null,c(g(x)(`@FLOWNODE:终端`)),1)])):s(``,!0)]),t.data.config?s(``,!0):(b(),v(`div`,R,c(g(x)(`@FLOWNODE:未配置`)),1)),l.value?.command?(b(),v(`div`,z,[d(`div`,B,[d(`code`,null,c(l.value.command),1)]),l.value.directory?(b(),v(`div`,V,[e(i,null,{default:a(()=>[e(g(y))]),_:1}),d(`span`,null,c(l.value.directory),1)])):s(``,!0)])):s(``,!0)])}}}),[[`__scopeId`,`data-v-7eaef8da`]]),U={class:`wait-node-content`},W={key:0,class:`node-warning`},G={key:1,class:`wait-seconds`},K=S(r({__name:`WaitNode`,props:{data:{},id:{}},setup(e){return(t,n)=>(b(),v(`div`,U,[e.data.config?(b(),v(`div`,G,c(g(x)(`@FLOWNODE:等待 {seconds} 秒`,{seconds:e.data.config?.waitSeconds??0})),1)):(b(),v(`div`,W,c(g(x)(`@FLOWNODE:未配置`)),1))]))}}),[[`__scopeId`,`data-v-26cc2aa1`]]),q={class:`version-node-content`},te={key:0,class:`node-badge`},J={key:1,class:`info-grid`},Y={class:`info-label`},X=[`title`],Z={key:2,class:`node-warning`},Q=S(r({__name:`VersionNode`,props:{data:{},id:{}},setup(e){let t=e,n=m(()=>{if(!t.data.config)return null;let e=t.data.config,n=String(e?.versionTarget||`version`),r=String(e?.versionSource||`bump`),i=[];i.push({label:x(`@FLOWNODE:目标`),value:x(n===`dependency`?`@FLOWNODE:依赖版本`:`@FLOWNODE:version字段`)}),i.push({label:x(`@FLOWNODE:来源`),value:x(r===`reference`?`@FLOWNODE:引用输出`:r===`input`?`@FLOWNODE:引用输入`:r===`manual`?`@FLOWNODE:手动输入`:`@FLOWNODE:自动递增`)});let a=String(e?.packageJsonPath||``).trim();if(i.push({label:x(`@FLOWNODE:package.json`),value:a||x(`@FLOWNODE:当前目录`)}),n===`dependency`){let t=String(e?.dependencyType||`dependencies`),n=String(e?.dependencyName||``).trim();if(n&&i.push({label:x(`@FLOWNODE:依赖`),value:`${t}::${n}`}),r===`manual`){let t=String(e?.dependencyVersion||``).trim();t&&i.push({label:x(`@FLOWNODE:版本号`),value:t})}else if(r===`bump`){let t=String(e?.dependencyVersionBump||e?.versionBump||`patch`);i.push({label:x(`@FLOWNODE:递增`),value:t})}else if(r===`reference`){let t=String(e?.inputRef?.nodeId||``).trim(),n=String(e?.inputRef?.outputKey||``).trim(),r=t&&n?`${t}::${n}`:``;r&&i.push({label:x(`@FLOWNODE:引用`),value:r})}else if(r===`input`){let t=String(e?.dependencyVersionInputKey||e?.versionInputKey||``).trim();t&&i.push({label:x(`@FLOWNODE:引用`),value:t})}}else{let t=String(e?.versionBump||`patch`);i.push({label:x(`@FLOWNODE:递增`),value:t})}return{target:n,rows:i}});return(t,r)=>(b(),v(`div`,q,[n.value?.target===`dependency`?(b(),v(`div`,te,c(g(x)(`@FLOWNODE:依赖`)),1)):s(``,!0),n.value?.rows?.length?(b(),v(`div`,J,[(b(!0),v(_,null,i(n.value.rows,(e,t)=>(b(),v(`div`,{key:t,class:`info-row`},[d(`div`,Y,c(e.label),1),d(`div`,{class:`info-value`,title:e.value},c(e.value),9,X)]))),128))])):s(``,!0),e.data.config?s(``,!0):(b(),v(`div`,Z,c(g(x)(`@FLOWNODE:未配置`)),1))]))}}),[[`__scopeId`,`data-v-cc373b8c`]]),ne={key:0,class:`confirm-node-content`},re={class:`node-warning`},ie=S(r({__name:`ConfirmNode`,props:{data:{},id:{}},setup(e){return(t,n)=>e.data.config?s(``,!0):(b(),v(`div`,ne,[d(`div`,re,c(g(x)(`@FLOWNODE:未配置`)),1)]))}}),[[`__scopeId`,`data-v-d84be2ca`]]),ae={class:`code-node-content`},oe={key:0,class:`node-warning`},se={key:1,class:`code-details`},ce={class:`code-meta`},le={class:`meta-item`},ue={class:`meta-item`},de=S(r({__name:`CodeNode`,props:{data:{},id:{}},setup(e){let t=e,n=m(()=>{let e=t.data.config||{};return{hasScript:!!(e.codeScript&&String(e.codeScript).trim()),outputKeys:Array.isArray(e.codeOutputKeys)?e.codeOutputKeys:[]}});return(t,r)=>(b(),v(`div`,ae,[e.data.config?(b(),v(`div`,se,[d(`div`,ce,[d(`span`,le,c(g(x)(`@NODECFG:脚本`))+`: `+c(n.value.hasScript?g(x)(`@FLOWNODE:已添加`):g(x)(`@FLOWNODE:未配置`)),1),d(`span`,ue,c(g(x)(`@NODECFG:输出键列表`))+`: `+c(n.value.outputKeys.length?n.value.outputKeys.join(`, `):g(x)(`@FLOWNODE:未配置`)),1)])])):(b(),v(`div`,oe,c(g(x)(`@FLOWNODE:未配置`)),1))]))}}),[[`__scopeId`,`data-v-44d1cf38`]]),fe={class:`condition-node`},pe={key:0,class:`condition-empty`},me={key:1,class:`condition-branches`},he={class:`branch-name`},ge={class:`branch-meta`},_e=S(r({__name:`ConditionNode`,props:{id:{type:String,required:!0},data:{type:Object,required:!0}},setup(e){let t=e,n=m(()=>{let e=t.data?.config;return[...Array.isArray(e?.conditionBranches)?e.conditionBranches:[]].sort((e,t)=>(e.priority??0)-(t.priority??0))});return(e,t)=>(b(),v(`div`,fe,[n.value.length===0?(b(),v(`div`,pe,`未配置条件分支`)):(b(),v(`div`,me,[(b(!0),v(_,null,i(n.value,e=>(b(),v(`div`,{key:e.id,class:`condition-branch`},[d(`span`,he,c(e.isDefault?`DEFAULT`:e.name),1),d(`span`,ge,`(`+c(e.combine.toUpperCase())+` / `+c(e.rules.length)+`)`,1)]))),128))]))]))}}),[[`__scopeId`,`data-v-cffa23e5`]]),ve={class:`user-input-node-content`},ye={key:0,class:`node-warning`},be={key:0,class:`node-warning`},$={key:1,class:`param-summary`},xe={class:`param-count`},Se={class:`param-list`},Ce={key:0,class:`star`},we={key:0,class:`more`},Te=S(r({__name:`UserInputNode`,props:{data:{},id:{}},setup(e){let t=e,r=m(()=>{let e=t.data?.config;return(Array.isArray(e?.userInputParams)?e.userInputParams:[]).map(e=>String(e?.name||``).trim()).filter(e=>!!e)}),a=m(()=>{let e=t.data?.config,n=Array.isArray(e?.userInputParams)?e.userInputParams:[],r=new Set;for(let e of n){let t=String(e?.name||``).trim();t&&e?.required&&r.add(t)}return r}),o=m(()=>r.value.slice(0,3)),l=m(()=>r.value.length>3);return(t,u)=>(b(),v(`div`,ve,[e.data.config?(b(),v(_,{key:1},[r.value.length===0?(b(),v(`div`,be,c(g(x)(`@UINPUT:暂无输入参数`)),1)):(b(),v(`div`,$,[d(`div`,xe,c(g(x)(`@UINPUT:参数名`))+` (`+c(r.value.length)+`)`,1),d(`div`,Se,[(b(!0),v(_,null,i(o.value,e=>(b(),v(`span`,{key:e,class:h([`param-chip`,{required:a.value.has(e)}])},[a.value.has(e)?(b(),v(`span`,Ce,`*`)):s(``,!0),n(` `+c(e),1)],2))),128)),l.value?(b(),v(`span`,we,`+`+c(r.value.length-3),1)):s(``,!0)])]))],64)):(b(),v(`div`,ye,c(g(x)(`@FLOWNODE:未配置`)),1))]))}}),[[`__scopeId`,`data-v-d0578713`]]);export{Q as a,P as c,ie as i,_e as n,K as o,de as r,H as s,Te as t};
1
+ import"./rolldown-runtime-DAXXjFlN.js";import{Cn as e,Hn as t,Sn as n,Tn as r,Vn as i,Xn as a,Y as o,_n as s,_r as c,gn as l,gr as u,hn as d,it as ee,jt as f,ln as p,mn as m,mr as h,pr as g,un as _,vn as v,yt as y,zn as b}from"./element-plus-BeKPY2v-.js";import{n as x,t as S}from"./_plugin-vue_export-helper-CqCl-blp.js";import{t as C}from"./configStore-CQI-Jwbh.js";import{c as w,o as T}from"./vue-flow-BnEzM6EW.js";var E={key:0},D={key:1},O={key:2},k={key:3,class:`node-header`},A={class:`flow-node-icon`},j={class:`node-title`},M={class:`node-body`},N={key:4,class:`disabled-overlay`},P=S(r({__name:`BaseNode`,props:{id:{},nodeId:{},nodeType:{default:`command`},title:{},icon:{},enabled:{type:Boolean,default:!0},selected:{type:Boolean,default:!1},deletable:{type:Boolean,default:!0},showDeleteOnSelected:{type:Boolean,default:!1},sourceHandleIds:{},execStatus:{}},emits:[`delete`],setup(n,{emit:r}){let f=n,y=m(()=>!!(f.title&&String(f.title).trim()||f.icon&&String(f.icon).trim())),x=m(()=>y.value?16:0),S=m(()=>f.sourceHandleIds&&f.sourceHandleIds.length?f.sourceHandleIds:[`source`]),C=r;return(r,f)=>{let m=o;return b(),v(`div`,{class:h([`flow-node-wrapper`,[{disabled:!n.enabled,"is-selected":n.selected,"show-delete-on-selected":n.showDeleteOnSelected},n.nodeType?`node-type-${n.nodeType}`:``]])},[n.nodeType===`start`?s(``,!0):(b(),l(g(w),{key:0,id:`target`,type:`target`,position:g(T).Left,class:`flow-node-handle handle-left`},null,8,[`position`])),n.deletable===!1?s(``,!0):(b(),l(m,{key:1,class:`flow-node-delete-btn`,onClick:f[0]||=p(e=>C(`delete`,n.nodeId),[`stop`]),title:`删除节点`,role:`button`,tabindex:`0`},{default:a(()=>[e(g(ee))]),_:1})),n.execStatus?(b(),v(`div`,{key:2,class:h([`flow-node-status`,[`status-${n.execStatus}`]])},[n.execStatus===`running`?(b(),v(`span`,E,`执行中`)):n.execStatus===`success`?(b(),v(`span`,D,`成功`)):(b(),v(`span`,O,`失败`))],2)):s(``,!0),n.title||n.icon?(b(),v(`div`,k,[d(`div`,A,c(n.icon),1),d(`div`,j,c(n.title),1)])):s(``,!0),d(`div`,M,[t(r.$slots,`default`,{},void 0,!0)]),n.enabled?s(``,!0):(b(),v(`div`,N,`已禁用`)),n.nodeType===`condition`?(b(!0),v(_,{key:5},i(S.value,e=>(b(),l(g(w),{key:e,id:e,type:`source`,position:g(T).Right,class:`flow-node-handle handle-right`,style:u({top:`calc(50% + ${x.value}px + ${(S.value.indexOf(e)-(S.value.length-1)/2)*18}px)`})},null,8,[`id`,`position`,`style`]))),128)):(b(),l(g(w),{key:6,id:`source`,type:`source`,position:g(T).Right,class:`flow-node-handle handle-right`},null,8,[`position`]))],2)}}}),[[`__scopeId`,`data-v-054d8274`]]),F={class:`command-node-content`},I={class:`node-badges`},L={key:0,class:`node-badge terminal`},R={key:0,class:`node-warning`},z={key:1,class:`command-details`},B={class:`command-code`},V={key:0,class:`command-dir`},H=S(r({__name:`CommandNode`,props:{data:{},id:{}},setup(t){let n=t,r=C(),i=m(()=>!n.data.config||!n.data.config.commandId?null:r.customCommands.find(e=>e.id===n.data.config.commandId)||null),l=m(()=>n.data.config?{name:n.data.config.commandName||x(`@FLOWNODE:未配置`),terminal:n.data.config.useTerminal||!1,command:i.value?.command||``,directory:i.value?.directory||``}:null);return(n,r)=>{let i=o;return b(),v(`div`,F,[d(`div`,I,[l.value?.terminal?(b(),v(`div`,L,[e(i,null,{default:a(()=>[e(g(f))]),_:1}),d(`span`,null,c(g(x)(`@FLOWNODE:终端`)),1)])):s(``,!0)]),t.data.config?s(``,!0):(b(),v(`div`,R,c(g(x)(`@FLOWNODE:未配置`)),1)),l.value?.command?(b(),v(`div`,z,[d(`div`,B,[d(`code`,null,c(l.value.command),1)]),l.value.directory?(b(),v(`div`,V,[e(i,null,{default:a(()=>[e(g(y))]),_:1}),d(`span`,null,c(l.value.directory),1)])):s(``,!0)])):s(``,!0)])}}}),[[`__scopeId`,`data-v-7eaef8da`]]),U={class:`wait-node-content`},W={key:0,class:`node-warning`},G={key:1,class:`wait-seconds`},K=S(r({__name:`WaitNode`,props:{data:{},id:{}},setup(e){return(t,n)=>(b(),v(`div`,U,[e.data.config?(b(),v(`div`,G,c(g(x)(`@FLOWNODE:等待 {seconds} 秒`,{seconds:e.data.config?.waitSeconds??0})),1)):(b(),v(`div`,W,c(g(x)(`@FLOWNODE:未配置`)),1))]))}}),[[`__scopeId`,`data-v-26cc2aa1`]]),q={class:`version-node-content`},te={key:0,class:`node-badge`},J={key:1,class:`info-grid`},Y={class:`info-label`},X=[`title`],Z={key:2,class:`node-warning`},Q=S(r({__name:`VersionNode`,props:{data:{},id:{}},setup(e){let t=e,n=m(()=>{if(!t.data.config)return null;let e=t.data.config,n=String(e?.versionTarget||`version`),r=String(e?.versionSource||`bump`),i=[];i.push({label:x(`@FLOWNODE:目标`),value:x(n===`dependency`?`@FLOWNODE:依赖版本`:`@FLOWNODE:version字段`)}),i.push({label:x(`@FLOWNODE:来源`),value:x(r===`reference`?`@FLOWNODE:引用输出`:r===`input`?`@FLOWNODE:引用输入`:r===`manual`?`@FLOWNODE:手动输入`:`@FLOWNODE:自动递增`)});let a=String(e?.packageJsonPath||``).trim();if(i.push({label:x(`@FLOWNODE:package.json`),value:a||x(`@FLOWNODE:当前目录`)}),n===`dependency`){let t=String(e?.dependencyType||`dependencies`),n=String(e?.dependencyName||``).trim();if(n&&i.push({label:x(`@FLOWNODE:依赖`),value:`${t}::${n}`}),r===`manual`){let t=String(e?.dependencyVersion||``).trim();t&&i.push({label:x(`@FLOWNODE:版本号`),value:t})}else if(r===`bump`){let t=String(e?.dependencyVersionBump||e?.versionBump||`patch`);i.push({label:x(`@FLOWNODE:递增`),value:t})}else if(r===`reference`){let t=String(e?.inputRef?.nodeId||``).trim(),n=String(e?.inputRef?.outputKey||``).trim(),r=t&&n?`${t}::${n}`:``;r&&i.push({label:x(`@FLOWNODE:引用`),value:r})}else if(r===`input`){let t=String(e?.dependencyVersionInputKey||e?.versionInputKey||``).trim();t&&i.push({label:x(`@FLOWNODE:引用`),value:t})}}else{let t=String(e?.versionBump||`patch`);i.push({label:x(`@FLOWNODE:递增`),value:t})}return{target:n,rows:i}});return(t,r)=>(b(),v(`div`,q,[n.value?.target===`dependency`?(b(),v(`div`,te,c(g(x)(`@FLOWNODE:依赖`)),1)):s(``,!0),n.value?.rows?.length?(b(),v(`div`,J,[(b(!0),v(_,null,i(n.value.rows,(e,t)=>(b(),v(`div`,{key:t,class:`info-row`},[d(`div`,Y,c(e.label),1),d(`div`,{class:`info-value`,title:e.value},c(e.value),9,X)]))),128))])):s(``,!0),e.data.config?s(``,!0):(b(),v(`div`,Z,c(g(x)(`@FLOWNODE:未配置`)),1))]))}}),[[`__scopeId`,`data-v-cc373b8c`]]),ne={key:0,class:`confirm-node-content`},re={class:`node-warning`},ie=S(r({__name:`ConfirmNode`,props:{data:{},id:{}},setup(e){return(t,n)=>e.data.config?s(``,!0):(b(),v(`div`,ne,[d(`div`,re,c(g(x)(`@FLOWNODE:未配置`)),1)]))}}),[[`__scopeId`,`data-v-d84be2ca`]]),ae={class:`code-node-content`},oe={key:0,class:`node-warning`},se={key:1,class:`code-details`},ce={class:`code-meta`},le={class:`meta-item`},ue={class:`meta-item`},de=S(r({__name:`CodeNode`,props:{data:{},id:{}},setup(e){let t=e,n=m(()=>{let e=t.data.config||{};return{hasScript:!!(e.codeScript&&String(e.codeScript).trim()),outputKeys:Array.isArray(e.codeOutputKeys)?e.codeOutputKeys:[]}});return(t,r)=>(b(),v(`div`,ae,[e.data.config?(b(),v(`div`,se,[d(`div`,ce,[d(`span`,le,c(g(x)(`@NODECFG:脚本`))+`: `+c(n.value.hasScript?g(x)(`@FLOWNODE:已添加`):g(x)(`@FLOWNODE:未配置`)),1),d(`span`,ue,c(g(x)(`@NODECFG:输出键列表`))+`: `+c(n.value.outputKeys.length?n.value.outputKeys.join(`, `):g(x)(`@FLOWNODE:未配置`)),1)])])):(b(),v(`div`,oe,c(g(x)(`@FLOWNODE:未配置`)),1))]))}}),[[`__scopeId`,`data-v-44d1cf38`]]),fe={class:`condition-node`},pe={key:0,class:`condition-empty`},me={key:1,class:`condition-branches`},he={class:`branch-name`},ge={class:`branch-meta`},_e=S(r({__name:`ConditionNode`,props:{id:{type:String,required:!0},data:{type:Object,required:!0}},setup(e){let t=e,n=m(()=>{let e=t.data?.config;return[...Array.isArray(e?.conditionBranches)?e.conditionBranches:[]].sort((e,t)=>(e.priority??0)-(t.priority??0))});return(e,t)=>(b(),v(`div`,fe,[n.value.length===0?(b(),v(`div`,pe,`未配置条件分支`)):(b(),v(`div`,me,[(b(!0),v(_,null,i(n.value,e=>(b(),v(`div`,{key:e.id,class:`condition-branch`},[d(`span`,he,c(e.isDefault?`DEFAULT`:e.name),1),d(`span`,ge,`(`+c(e.combine.toUpperCase())+` / `+c(e.rules.length)+`)`,1)]))),128))]))]))}}),[[`__scopeId`,`data-v-cffa23e5`]]),ve={class:`user-input-node-content`},ye={key:0,class:`node-warning`},be={key:0,class:`node-warning`},$={key:1,class:`param-summary`},xe={class:`param-count`},Se={class:`param-list`},Ce={key:0,class:`star`},we={key:0,class:`more`},Te=S(r({__name:`UserInputNode`,props:{data:{},id:{}},setup(e){let t=e,r=m(()=>{let e=t.data?.config;return(Array.isArray(e?.userInputParams)?e.userInputParams:[]).map(e=>String(e?.name||``).trim()).filter(e=>!!e)}),a=m(()=>{let e=t.data?.config,n=Array.isArray(e?.userInputParams)?e.userInputParams:[],r=new Set;for(let e of n){let t=String(e?.name||``).trim();t&&e?.required&&r.add(t)}return r}),o=m(()=>r.value.slice(0,3)),l=m(()=>r.value.length>3);return(t,u)=>(b(),v(`div`,ve,[e.data.config?(b(),v(_,{key:1},[r.value.length===0?(b(),v(`div`,be,c(g(x)(`@UINPUT:暂无输入参数`)),1)):(b(),v(`div`,$,[d(`div`,xe,c(g(x)(`@UINPUT:参数名`))+` (`+c(r.value.length)+`)`,1),d(`div`,Se,[(b(!0),v(_,null,i(o.value,e=>(b(),v(`span`,{key:e,class:h([`param-chip`,{required:a.value.has(e)}])},[a.value.has(e)?(b(),v(`span`,Ce,`*`)):s(``,!0),n(` `+c(e),1)],2))),128)),l.value?(b(),v(`span`,we,`+`+c(r.value.length-3),1)):s(``,!0)])]))],64)):(b(),v(`div`,ye,c(g(x)(`@FLOWNODE:未配置`)),1))]))}}),[[`__scopeId`,`data-v-d0578713`]]);export{Q as a,P as c,ie as i,_e as n,K as o,de as r,H as s,Te as t};
@@ -1,4 +1,4 @@
1
- import"./rolldown-runtime-DAXXjFlN.js";import{A as e,B as t,Cn as n,D as r,E as i,Et as a,F as o,Fn as s,It as c,J as l,Jn as u,K as d,L as f,Ln as p,Lt as m,M as h,Mn as g,Nt as _,Ot as v,P as y,Pt as b,R as x,Sn as S,Tn as C,Tt as ee,Vn as w,W as T,Wn as E,X as te,Xn as D,Y as ne,Yt as O,Z as re,Zn as k,Zt as ie,_n as A,_r as j,a as M,an as ae,ar as oe,at as se,b as ce,cn as le,ct as ue,dt as de,et as fe,f as pe,fn as me,g as he,gn as N,gr as ge,hn as P,i as F,it as _e,k as I,l as L,ln as R,lt as ve,mn as z,mr as B,o as V,on as ye,ot as H,p as U,pr as W,pt as be,q as xe,r as Se,rt as Ce,sn as we,sr as G,un as K,vn as q,x as Te,xn as Ee,y as De,yt as J,zn as Y}from"./element-plus-BeKPY2v-.js";import{a as Oe,n as ke,r as Ae}from"./vendor-MTP3JiRt.js";import{n as X,t as Z}from"./_plugin-vue_export-helper-YXQ3ciBX.js";import{t as je}from"./configStore-Bx8x9Mmq.js";import{t as Me}from"./toolsStore-Dl1ZztJj.js";import{t as Ne}from"./workbenchStatus-Bom561hj.js";var Pe={class:`ai-split-direct-pane`},Fe={key:0,class:`ai-split-status`},Ie={key:1,class:`ai-split-status`},Le={key:1},Q={key:2},$={key:2,class:`ai-split-status is-error`},Re={key:3,class:`ai-split-idle`},ze={class:`ai-split-idle__title`},Be={class:`ai-split-idle__desc`},Ve={class:`ai-split-prompt-actions`},He={key:0,class:`ai-split-prompt-editor`},Ue={class:`ai-split-prompt-editor__actions`},We={key:1,class:`ai-split-pre`},Ge={class:`ai-split-subhead`},Ke={class:`ai-split-user-actions`},qe={key:3,class:`ai-split-pre`},Je={key:0,class:`ai-split-tab-count`},Ye={class:`ai-split-pre ai-split-pre--think`},Xe={key:0,class:`ai-split-tab-count`},Ze={class:`ai-split-parse-error__detail`},Qe={class:`ai-split-parse-error__hint`},$e={class:`ai-split-parse-error__actions`},et={key:1,class:`ai-split-raw-toolbar`},tt={class:`ai-split-raw-tip`},nt={key:0,class:`ai-split-tab-count`},rt={key:0,class:`ai-split-empty`},it={key:1,class:`ai-split-list`},at={class:`ai-split-list__no`},ot={class:`ai-split-list__body`},st={class:`ai-split-list__title`},ct={class:`ai-split-list__desc`},lt={key:5,class:`ai-split-footer-hint`},ut={class:`ai-split-direct-footer`},dt=Z(C({__name:`AISplitDirectPane`,props:{title:{},desc:{},taskId:{},promptId:{}},emits:[`confirm`],setup(e,{emit:r}){let i=e,o=r,s=G(`idle`),d=G(`prompt`),f=G(``),p=G(``),m=G(``),h=G(``),g=G(``),_=G([]),v=G(``),y=G(``),b=G(``),x=null,C=0,ee=z(()=>m.value.length),E=z(()=>h.value.length),te=z(()=>s.value===`result`&&_.value.length>0),O=z(()=>s.value===`running`),re=z(()=>s.value===`preview`),k=G(``),ie=G(!1);function ae(){x&&=(x.abort(),null)}function oe(){ae(),s.value=`idle`,d.value=`prompt`,f.value=``,p.value=``,k.value=``,m.value=``,h.value=``,g.value=``,_.value=[],v.value=``,y.value=``,b.value=``}async function se(){if(!i.title.trim()){M.warning(X(`@WORKBENCH:请先填写任务标题`));return}oe(),s.value=`preview`,d.value=`prompt`,ie.value=!0;try{let e=await fetch(`/api/workbench/tasks/ai-split-preview`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({title:i.title,desc:i.desc,taskId:i.taskId||``,promptId:i.promptId||``})}).then(e=>e.json());if(!e.success){s.value=`error`,v.value=e.error||X(`@WORKBENCH:生成预览失败`);return}f.value=e.system||``,p.value=e.user||``,k.value=e.user||``}catch(e){s.value=`error`,v.value=e?.message||String(e)}finally{ie.value=!1}}async function ce(){if(!k.value.trim()){M.warning(X(`@WORKBENCH:提示词不能为空`));return}let e=++C;ae(),m.value=``,h.value=``,g.value=``,_.value=[],y.value=``,b.value=``,v.value=``,s.value=`running`,d.value=`thinking`,p.value=k.value,x=new AbortController;let t=x;try{let n=await fetch(`/api/workbench/tasks/ai-split-subtasks`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify({title:i.title,desc:i.desc,taskId:i.taskId||``,promptId:i.promptId||``,customUserBlock:k.value}),signal:t.signal});if(e!==C)return;if(!n.ok||!n.body){let e=await n.text().catch(()=>``);throw Error(e||`HTTP ${n.status}`)}let r=n.body.getReader(),a=new TextDecoder(`utf-8`),o=``,c=null;for(;;){let{value:t,done:n}=await r.read();if(e!==C)return;if(n)break;o+=a.decode(t,{stream:!0});let i=o.split(`
1
+ import"./rolldown-runtime-DAXXjFlN.js";import{A as e,B as t,Cn as n,D as r,E as i,Et as a,F as o,Fn as s,It as c,J as l,Jn as u,K as d,L as f,Ln as p,Lt as m,M as h,Mn as g,Nt as _,Ot as v,P as y,Pt as b,R as x,Sn as S,Tn as C,Tt as ee,Vn as w,W as T,Wn as E,X as te,Xn as D,Y as ne,Yt as O,Z as re,Zn as k,Zt as ie,_n as A,_r as j,a as M,an as ae,ar as oe,at as se,b as ce,cn as le,ct as ue,dt as de,et as fe,f as pe,fn as me,g as he,gn as N,gr as ge,hn as P,i as F,it as _e,k as I,l as L,ln as R,lt as ve,mn as z,mr as B,o as V,on as ye,ot as H,p as U,pr as W,pt as be,q as xe,r as Se,rt as Ce,sn as we,sr as G,un as K,vn as q,x as Te,xn as Ee,y as De,yt as J,zn as Y}from"./element-plus-BeKPY2v-.js";import{a as Oe,n as ke,r as Ae}from"./vendor-BiOPaz96.js";import{n as X,t as Z}from"./_plugin-vue_export-helper-CqCl-blp.js";import{t as je}from"./configStore-CQI-Jwbh.js";import{t as Me}from"./toolsStore-3tCJpR-X.js";import{t as Ne}from"./workbenchStatus-BBUb9d_k.js";var Pe={class:`ai-split-direct-pane`},Fe={key:0,class:`ai-split-status`},Ie={key:1,class:`ai-split-status`},Le={key:1},Q={key:2},$={key:2,class:`ai-split-status is-error`},Re={key:3,class:`ai-split-idle`},ze={class:`ai-split-idle__title`},Be={class:`ai-split-idle__desc`},Ve={class:`ai-split-prompt-actions`},He={key:0,class:`ai-split-prompt-editor`},Ue={class:`ai-split-prompt-editor__actions`},We={key:1,class:`ai-split-pre`},Ge={class:`ai-split-subhead`},Ke={class:`ai-split-user-actions`},qe={key:3,class:`ai-split-pre`},Je={key:0,class:`ai-split-tab-count`},Ye={class:`ai-split-pre ai-split-pre--think`},Xe={key:0,class:`ai-split-tab-count`},Ze={class:`ai-split-parse-error__detail`},Qe={class:`ai-split-parse-error__hint`},$e={class:`ai-split-parse-error__actions`},et={key:1,class:`ai-split-raw-toolbar`},tt={class:`ai-split-raw-tip`},nt={key:0,class:`ai-split-tab-count`},rt={key:0,class:`ai-split-empty`},it={key:1,class:`ai-split-list`},at={class:`ai-split-list__no`},ot={class:`ai-split-list__body`},st={class:`ai-split-list__title`},ct={class:`ai-split-list__desc`},lt={key:5,class:`ai-split-footer-hint`},ut={class:`ai-split-direct-footer`},dt=Z(C({__name:`AISplitDirectPane`,props:{title:{},desc:{},taskId:{},promptId:{}},emits:[`confirm`],setup(e,{emit:r}){let i=e,o=r,s=G(`idle`),d=G(`prompt`),f=G(``),p=G(``),m=G(``),h=G(``),g=G(``),_=G([]),v=G(``),y=G(``),b=G(``),x=null,C=0,ee=z(()=>m.value.length),E=z(()=>h.value.length),te=z(()=>s.value===`result`&&_.value.length>0),O=z(()=>s.value===`running`),re=z(()=>s.value===`preview`),k=G(``),ie=G(!1);function ae(){x&&=(x.abort(),null)}function oe(){ae(),s.value=`idle`,d.value=`prompt`,f.value=``,p.value=``,k.value=``,m.value=``,h.value=``,g.value=``,_.value=[],v.value=``,y.value=``,b.value=``}async function se(){if(!i.title.trim()){M.warning(X(`@WORKBENCH:请先填写任务标题`));return}oe(),s.value=`preview`,d.value=`prompt`,ie.value=!0;try{let e=await fetch(`/api/workbench/tasks/ai-split-preview`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({title:i.title,desc:i.desc,taskId:i.taskId||``,promptId:i.promptId||``})}).then(e=>e.json());if(!e.success){s.value=`error`,v.value=e.error||X(`@WORKBENCH:生成预览失败`);return}f.value=e.system||``,p.value=e.user||``,k.value=e.user||``}catch(e){s.value=`error`,v.value=e?.message||String(e)}finally{ie.value=!1}}async function ce(){if(!k.value.trim()){M.warning(X(`@WORKBENCH:提示词不能为空`));return}let e=++C;ae(),m.value=``,h.value=``,g.value=``,_.value=[],y.value=``,b.value=``,v.value=``,s.value=`running`,d.value=`thinking`,p.value=k.value,x=new AbortController;let t=x;try{let n=await fetch(`/api/workbench/tasks/ai-split-subtasks`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify({title:i.title,desc:i.desc,taskId:i.taskId||``,promptId:i.promptId||``,customUserBlock:k.value}),signal:t.signal});if(e!==C)return;if(!n.ok||!n.body){let e=await n.text().catch(()=>``);throw Error(e||`HTTP ${n.status}`)}let r=n.body.getReader(),a=new TextDecoder(`utf-8`),o=``,c=null;for(;;){let{value:t,done:n}=await r.read();if(e!==C)return;if(n)break;o+=a.decode(t,{stream:!0});let i=o.split(`
2
2
  `);o=i.pop()??``;for(let e of i){let t=e.trim();if(!t.startsWith(`data:`))continue;let n=t.slice(5).trim();if(!n)continue;let r;try{r=JSON.parse(n)}catch{continue}switch(r.type){case`meta`:f.value=r.prompt?.system||f.value;break;case`thinking`:m.value+=String(r.delta||``);break;case`content`:h.value+=String(r.delta||``);break;case`done`:c=r;break;case`error`:throw Error(r.error||`AI 拆分失败`)}}}if(e!==C)return;if(!c)throw Error(X(`@WORKBENCH:AI 未返回结果`));_.value=Array.isArray(c.subtasks)?c.subtasks:[],g.value=c.raw||h.value,y.value=String(c.parseError||``),b.value=String(c.parseStage||``),m.value||=X(`@WORKBENCH:(当前模型未返回独立的思考内容,可切换到「原始结果」查看完整输出)`),s.value=`result`,d.value=_.value.length>0?`confirm`:`raw`}catch(n){if(e!==C)return;if(n?.name===`AbortError`||t.signal.aborted){s.value=`preview`,d.value=`prompt`;return}s.value=`error`,v.value=n?.message||String(n)}finally{e===C&&(x=null)}}function le(){te.value&&o(`confirm`,_.value.slice())}function ue(){k.value.trim()?ce():se()}function de(){x&&(x.abort(),x=null,M.info(X(`@WORKBENCH:已停止拆分`)))}let fe=G(!1);async function me(){if(!h.value.trim()){M.warning(X(`@WORKBENCH:原始结果为空,无法解析`));return}fe.value=!0;try{let e=await fetch(`/api/workbench/tasks/parse-subtasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({raw:h.value})}).then(e=>e.json());if(!e.success){M.error(e.error||X(`@WORKBENCH:解析失败`));return}_.value=Array.isArray(e.subtasks)?e.subtasks:[],y.value=String(e.parseError||``),b.value=String(e.parseStage||``),g.value=h.value,_.value.length>0?(M.success(X(`@WORKBENCH:解析成功,已识别 {n} 个子任务`,{n:_.value.length})),d.value=`confirm`):M.warning(X(`@WORKBENCH:仍未解析到子任务,请继续修改原始结果`))}catch(e){M.error(X(`@WORKBENCH:解析失败: `)+(e?.message||e))}finally{fe.value=!1}}u(()=>i.taskId,()=>{oe()});let he=G(!1),ge=G(``),F=G(!1);function _e(){ge.value=f.value,he.value=!0}async function I(){if(!ge.value.trim()){M.warning(X(`@WORKBENCH:指令内容不能为空`));return}F.value=!0;try{let e=await fetch(`/api/workbench/tasks/ai-subtask-instruction`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({instruction:ge.value})}).then(e=>e.json());e.success?(M.success(X(`@WORKBENCH:已保存指令`)),he.value=!1,se()):M.error(e.error||X(`@WORKBENCH:保存失败`))}catch(e){M.error(X(`@WORKBENCH:保存失败: `)+(e?.message||e))}finally{F.value=!1}}function L(){he.value=!1}return(e,r)=>{let i=ne,o=t,u=T,g=pe,b=l,x=U;return Y(),q(`div`,Pe,[O.value?(Y(),q(`div`,Fe,[n(i,{class:`is-loading`},{default:D(()=>[n(W(a))]),_:1}),P(`span`,null,j(W(X)(`@WORKBENCH:AI 正在拆分…`)),1),n(o,{size:`small`,link:``,type:`danger`,class:`ai-split-status__stop`,onClick:de},{default:D(()=>[S(j(W(X)(`@WORKBENCH:停止拆分`)),1)]),_:1})])):re.value?(Y(),q(`div`,Ie,[ie.value?(Y(),N(i,{key:0,class:`is-loading`},{default:D(()=>[n(W(a))]),_:1})):A(``,!0),ie.value?(Y(),q(`span`,Le,j(W(X)(`@WORKBENCH:正在生成提示词预览…`)),1)):(Y(),q(`span`,Q,j(W(X)(`@WORKBENCH:提示词已就绪,可在下方编辑后点「发送给 AI」开始拆分`)),1))])):s.value===`error`?(Y(),q(`div`,$,[n(i,{color:`var(--color-danger)`},{default:D(()=>[n(W(Ce))]),_:1}),P(`span`,null,j(v.value),1)])):s.value===`idle`?(Y(),q(`div`,Re,[r[5]||=Ee(`<div class="ai-split-idle__icon" aria-hidden="true" data-v-bff9eaf1><svg viewBox="0 0 24 24" width="36" height="36" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-v-bff9eaf1><path d="M12 3v3" data-v-bff9eaf1></path><path d="M12 18v3" data-v-bff9eaf1></path><path d="M3 12h3" data-v-bff9eaf1></path><path d="M18 12h3" data-v-bff9eaf1></path><path d="M5.6 5.6l2.1 2.1" data-v-bff9eaf1></path><path d="M16.3 16.3l2.1 2.1" data-v-bff9eaf1></path><path d="M5.6 18.4l2.1-2.1" data-v-bff9eaf1></path><path d="M16.3 7.7l2.1-2.1" data-v-bff9eaf1></path><circle cx="12" cy="12" r="4" data-v-bff9eaf1></circle></svg></div>`,1),P(`div`,ze,j(W(X)(`@WORKBENCH:准备用 AI 拆分任务`)),1),P(`div`,Be,j(W(X)(`@WORKBENCH:点击下方按钮开始生成。生成期间可切换到「思考 / 原始结果」实时查看模型输出。`)),1),n(o,{type:`primary`,icon:W(c),onClick:se},{default:D(()=>[S(j(W(X)(`@WORKBENCH:开始拆分`)),1)]),_:1},8,[`icon`])])):A(``,!0),s.value===`idle`?A(``,!0):(Y(),N(x,{key:4,modelValue:d.value,"onUpdate:modelValue":r[4]||=e=>d.value=e,class:`ai-split-tabs`},{default:D(()=>[n(g,{label:W(X)(`@WORKBENCH:提示词`),name:`prompt`},{default:D(()=>[P(`div`,Ve,[n(o,{size:`small`,disabled:O.value,onClick:_e},{default:D(()=>[S(j(W(X)(`@WORKBENCH:编辑指令`)),1)]),_:1},8,[`disabled`])]),he.value?(Y(),q(`div`,He,[n(u,{modelValue:ge.value,"onUpdate:modelValue":r[0]||=e=>ge.value=e,type:`textarea`,rows:12,placeholder:W(X)(`@WORKBENCH:指令内容`)},null,8,[`modelValue`,`placeholder`]),P(`div`,Ue,[n(o,{size:`small`,onClick:L},{default:D(()=>[S(j(W(X)(`@WORKBENCH:取消`)),1)]),_:1}),n(o,{size:`small`,type:`primary`,loading:F.value,onClick:I},{default:D(()=>[S(j(W(X)(`@WORKBENCH:保存并重跑`)),1)]),_:1},8,[`loading`])])])):(Y(),q(`pre`,We,j(f.value||`(等待 LLM 启动…)`),1)),P(`h4`,Ge,j(W(X)(`@WORKBENCH:用户提示词(拼装后)`)),1),re.value?(Y(),q(K,{key:2},[n(u,{modelValue:k.value,"onUpdate:modelValue":r[1]||=e=>k.value=e,type:`textarea`,rows:16,placeholder:W(X)(`@WORKBENCH:正在生成预览…`),readonly:ie.value,class:`ai-split-user-editor`,resize:`none`},null,8,[`modelValue`,`placeholder`,`readonly`]),P(`div`,Ke,[n(o,{size:`small`,disabled:ie.value,onClick:oe},{default:D(()=>[S(j(W(X)(`@WORKBENCH:取消`)),1)]),_:1},8,[`disabled`]),n(o,{type:`primary`,icon:W(c),disabled:ie.value||!k.value.trim(),onClick:ce},{default:D(()=>[S(j(W(X)(`@WORKBENCH:发送给 AI`)),1)]),_:1},8,[`icon`,`disabled`])])],64)):(Y(),q(`pre`,qe,j(p.value||`(等待 LLM 启动…)`),1))]),_:1},8,[`label`]),n(g,{name:`thinking`},{label:D(()=>[P(`span`,null,[S(j(W(X)(`@WORKBENCH:思考`))+` `,1),ee.value>0?(Y(),q(`span`,Je,`(`+j(ee.value)+`)`,1)):A(``,!0)])]),default:D(()=>[P(`pre`,Ye,j(m.value||W(X)(`@WORKBENCH:(暂无输出)`)),1)]),_:1}),n(g,{name:`raw`},{label:D(()=>[P(`span`,null,[S(j(W(X)(`@WORKBENCH:原始结果`))+` `,1),E.value>0?(Y(),q(`span`,Xe,`(`+j(E.value)+`)`,1)):A(``,!0)])]),default:D(()=>[y.value&&s.value===`result`?(Y(),N(b,{key:0,type:`warning`,"show-icon":``,closable:!1,class:`ai-split-parse-error`},{title:D(()=>[S(j(W(X)(`@WORKBENCH:模型返回内容解析失败,无法识别为有效的子任务 JSON`)),1)]),default:D(()=>[P(`div`,Ze,j(y.value),1),P(`div`,Qe,j(W(X)(`@WORKBENCH:常见原因:desc 内夹杂了 ASCII 双引号、出现尾随逗号,或输出被截断。可在下方文本框中手动修改后点「重新解析」,或重新生成。`)),1),P(`div`,$e,[n(o,{size:`small`,type:`primary`,loading:fe.value,onClick:me},{default:D(()=>[S(j(W(X)(`@WORKBENCH:重新解析`)),1)]),_:1},8,[`loading`]),n(o,{size:`small`,onClick:ue},{default:D(()=>[S(j(W(X)(`@WORKBENCH:重新生成`)),1)]),_:1}),n(o,{size:`small`,onClick:r[2]||=e=>d.value=`prompt`},{default:D(()=>[S(j(W(X)(`@WORKBENCH:去编辑指令`)),1)]),_:1})])]),_:1})):A(``,!0),s.value===`result`||h.value?(Y(),q(`div`,et,[P(`span`,tt,j(W(X)(`@WORKBENCH:可直接编辑下方文本,修正后点「重新解析」即可入库`)),1),n(o,{size:`small`,type:`primary`,loading:fe.value,disabled:!h.value.trim(),onClick:me},{default:D(()=>[S(j(W(X)(`@WORKBENCH:重新解析`)),1)]),_:1},8,[`loading`,`disabled`])])):A(``,!0),n(u,{modelValue:h.value,"onUpdate:modelValue":r[3]||=e=>h.value=e,type:`textarea`,rows:14,placeholder:W(X)(`@WORKBENCH:(暂无输出)`),readonly:O.value,class:`ai-split-raw-editor`,resize:`none`},null,8,[`modelValue`,`placeholder`,`readonly`])]),_:1}),n(g,{name:`confirm`,disabled:_.value.length===0},{label:D(()=>[P(`span`,null,[S(j(W(X)(`@WORKBENCH:确认入库`))+` `,1),_.value.length>0?(Y(),q(`span`,nt,`(`+j(_.value.length)+`)`,1)):A(``,!0)])]),default:D(()=>[_.value.length===0?(Y(),q(`div`,rt,j(W(X)(`@WORKBENCH:(暂无子任务)`)),1)):(Y(),q(`ul`,it,[(Y(!0),q(K,null,w(_.value,(e,t)=>(Y(),q(`li`,{key:t,class:`ai-split-list__item`},[P(`div`,at,j(t+1),1),P(`div`,ot,[P(`div`,st,j(e.title),1),P(`div`,ct,j(e.desc),1)])]))),128))]))]),_:1},8,[`disabled`])]),_:1},8,[`modelValue`])),y.value&&s.value===`result`&&_.value.length===0?(Y(),q(`div`,lt,[n(i,{color:`var(--color-warning)`},{default:D(()=>[n(W(Ce))]),_:1}),P(`span`,null,j(W(X)(`@WORKBENCH:解析失败,未能从模型输出中提取出子任务 — 请查看「原始结果」`)),1)])):A(``,!0),P(`div`,ut,[s.value===`error`||s.value===`result`&&y.value&&_.value.length===0?(Y(),N(o,{key:0,onClick:ue},{default:D(()=>[S(j(W(X)(`@WORKBENCH:重新生成`)),1)]),_:1})):A(``,!0),s.value===`result`&&_.value.length>0?(Y(),N(o,{key:1,onClick:ue},{default:D(()=>[S(j(W(X)(`@WORKBENCH:重新拆分`)),1)]),_:1})):A(``,!0),n(o,{type:`primary`,disabled:!te.value,onClick:le},{default:D(()=>[S(j(W(X)(`@WORKBENCH:确认入库`))+` (`+j(_.value.length)+`) `,1)]),_:1},8,[`disabled`])])])}}}),[[`__scopeId`,`data-v-bff9eaf1`]]),ft={class:`ai-chat-pane`},pt={key:0,class:`ai-chat-streaming-banner`},mt={key:1,class:`ai-chat-empty`},ht={class:`ai-chat-empty__title`},gt={class:`ai-chat-empty__desc`},_t={key:0,class:`ai-chat-bubble user`},vt={class:`ai-chat-content`},yt={key:1,class:`ai-chat-bubble assistant`},bt={class:`ai-chat-pre ai-chat-pre--think`},xt={key:1,class:`ai-chat-content-text`},St={key:2,class:`ai-chat-subtasks`},Ct={class:`ai-chat-subtasks__head`},wt={class:`ai-chat-subtasks__count`},Tt={class:`ai-chat-list`},Et={class:`ai-chat-list__no`},Dt={class:`ai-chat-list__body`},Ot={class:`ai-chat-list__title`},kt={class:`ai-chat-list__desc`},At={class:`ai-chat-parse-error__detail`},jt={class:`ai-chat-pre`},Mt={key:5,class:`ai-chat-turn__actions`},Nt={class:`ai-chat-input`},Pt={class:`ai-chat-input__actions`},Ft={key:0,class:`ai-chat-history__loading`},It={key:1,class:`ai-chat-history__empty`},Lt={key:2,class:`ai-chat-history__list`},Rt={class:`ai-chat-history__title`},zt={class:`ai-chat-history__meta`},Bt={class:`ai-chat-history__actions`},Vt=Z(C({__name:`AISplitChatPane`,props:{title:{},desc:{},taskId:{},promptId:{},initialSessionId:{}},emits:[`confirm`],setup(r,{emit:o}){let s=r,l=o,u=G(`idle`),d=G(``),f=G([]),p=G(``),h=G(``),_=null,v=0,y=G(null),b=z(()=>u.value===`streaming`),x=z(()=>{if(!b.value)return``;let e=[...f.value].reverse().find(e=>e.role===`assistant`);return e?e.content?X(`@WORKBENCH:AI 正在输出…`):e.thinking?X(`@WORKBENCH:AI 正在思考… (已思考 {n} 字)`,{n:e.thinking.length}):X(`@WORKBENCH:AI 正在思考…`):X(`@WORKBENCH:AI 正在思考…`)}),C=G(!1),ee=G(!1),E=G([]);function te(){y.value&&(y.value.scrollTop=y.value.scrollHeight)}async function O(){let e=p.value.trim();if(!e||b.value)return;if(!d.value&&!s.title.trim()){M.warning(X(`@WORKBENCH:请先填写任务标题`));return}let t=++v;_=new AbortController;let n=_,r={role:`user`,content:e};f.value.push(r),p.value=``;let i={role:`assistant`,content:``,thinking:``};f.value.push(i),u.value=`streaming`,await g(),te();try{let r=await fetch(`/api/workbench/tasks/ai-chat-split`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify({sessionId:d.value,title:s.title,desc:s.desc,taskId:s.taskId||``,promptId:s.promptId||``,userMessage:e}),signal:n.signal});if(t!==v)return;if(!r.ok||!r.body){let e=await r.text().catch(()=>``);throw Error(e||`HTTP ${r.status}`)}let a=r.body.getReader(),o=new TextDecoder(`utf-8`),c=``,l=null,p=!1;for(;;){let{value:e,done:n}=await a.read();if(t!==v)return;if(n)break;c+=o.decode(e,{stream:!0});let r=c.split(`
3
3
  `);c=r.pop()??``;for(let e of r){let t=e.trim();if(!t.startsWith(`data:`))continue;let n=t.slice(5).trim();if(!n)continue;let r;try{r=JSON.parse(n)}catch{continue}switch(r.type){case`meta`:r.sessionId&&(d.value=r.sessionId);break;case`user_echo`:p=!0;break;case`thinking`:i.thinking=(i.thinking||``)+String(r.delta||``);break;case`content`:i.content+=String(r.delta||``);break;case`done`:l=r;break;case`error`:throw Error(r.error||`对话拆分失败`)}}f.value=[...f.value],await g(),te()}if(t!==v)return;if(!p&&!l)throw Error(X(`@WORKBENCH:AI 未返回结果`));l&&(i.subtasks=Array.isArray(l.subtasks)?l.subtasks:[],i.raw=String(l.raw||i.content),i.parseError=String(l.parseError||``),i.parseStage=String(l.parseStage||``)),f.value=[...f.value],await g(),te(),u.value=`idle`}catch(e){if(t!==v)return;if(e?.name===`AbortError`||n.signal.aborted){i.content=(i.content||``)+`
4
4
 
@@ -1,4 +1,4 @@
1
- import{l as e}from"./vendor-MTP3JiRt.js";var t={"@F13B4:编辑项目配置":`编辑项目配置`,"@F13B4:国际化测试":`国际化测试`,"@F13B4:Git 操作":`Git 操作`,"@F13B4:用户设置":`用户设置`,"@F13B4:创建新分支":`创建新分支`,"@F13B4:搜索或签出分支":`搜索或签出分支`,"@F13B4:没有匹配的分支":`没有匹配的分支`,"@F13B4:请输入新分支名称":`请输入新分支名称`,"@F13B4:选择基础分支":`选择基础分支`,"@F13B4:当前分支":`当前分支`,"@F13B4:复制仓库地址":`复制仓库地址`,"@F13B4:查看更新":`查看更新`,"@F13B4:在 GitHub 上查看源码":`在 GitHub 上查看源码`,"@F13B4:在 npm 上查看包":`在 npm 上查看包`,"@F13B4:在浏览器中打开仓库主页":`在浏览器中打开仓库主页`,"@F13B4:无法识别该远程仓库的网页地址":`无法识别该远程仓库的网页地址`,"@F13B4:升级":`升级`,"@F13B4:升级中":`升级中`,"@F13B4:升级完成":`升级完成`,"@F13B4:升级失败":`升级失败`,"@F13B4:重试":`重试`,"@F13B4:完成":`完成`,"@F13B4:立即重启并刷新":`立即重启并刷新`,"@F13B4:稍后手动重启":`稍后手动重启`,"@F13B4:新版本已全局安装,需要重启服务才能生效":`新版本已全局安装,需要重启服务才能生效`,"@F13B4:{seconds} 秒后自动刷新":`{seconds} 秒后自动刷新`,"@F13B4:重启失败 {error}":`重启失败 {error}`,"@F13B4:重启超时":`重启超时:子进程未在 8 秒内就绪`,"@F13B4:重启失败,请刷新页面重试":`重启失败,请刷新页面重试`,"@F13B4:重启失败":`重启失败`,"@F13B4:确定升级":`确定升级`,"@F13B4:取消":`取消`,"@F13B4:确定要从 {current} 升级到 {latest} 吗?":`确定要从 {current} 升级到 {latest} 吗?`,"@F13B4:发现新版本 {version}":`发现新版本 {version}`,"@F13B4:发现新版本 {version},点击升级":`发现新版本 {version},点击升级`,"@F13B4:检查更新失败 {error}":`检查更新失败 {error}`,"@F13B4:等待日志输出":`等待日志输出...`,"@F13B4:复制克隆命令":`复制克隆命令`,"@F13B4:已复制克隆命令":`已复制克隆命令`,"@F13B4:切换到浅色主题":`切换到浅色主题`,"@F13B4:切换到深色主题":`切换到深色主题`,"@NET:无法连接到本地服务,请检查后端进程":`无法连接到本地服务,请检查后端进程`,"@NET:重试":`重试`,"@NET:关闭":`关闭`,"@NET:刚刚":`刚刚`,"@NET:网络连接失败":`网络连接失败`,"@NET:浏览器报告离线":`浏览器报告离线`,"@F13B4:未知目录":`未知目录`,"@F13B4:---------- 页面初始化开始 ----------":`---------- 页面初始化开始 ----------`,"@F13B4:当前目录不是Git仓库,部分功能将不可用":`当前目录不是Git仓库,部分功能将不可用`,"@F13B4:---------- 页面初始化完成 ----------":`---------- 页面初始化完成 ----------`,"@F13B4:默认提交信息: ":`默认提交信息: `,"@F13B4:默认模型":`默认模型`,"@F13B4:布局比例已保存 - 左侧: ":`布局比例已保存 - 左侧: `,"@F13B4:%, 中间: ":`%, 中间: `,"@F13B4:%, 右侧: ":`%, 右侧: `,"@F13B4:调整左侧与中间面板宽度(左右方向键)":`调整左侧与中间面板宽度(左右方向键)`,"@F13B4:调整左侧与右侧面板宽度(左右方向键)":`调整左侧与右侧面板宽度(左右方向键)`,"@F13B4:调整中间与右侧面板宽度(左右方向键)":`调整中间与右侧面板宽度(左右方向键)`,"@F13B4:调整上方与下方面板高度(上下方向键)":`调整上方与下方面板高度(上下方向键)`,"@F13B4:%, 上方: ":`%, 上方: `,"@F13B4:底部布局比例已保存 - 左侧: ":`底部布局比例已保存 - 左侧: `,"@F13B4:已恢复左侧比例: ":`已恢复左侧比例: `,"@F13B4:已恢复上方比例: ":`已恢复上方比例: `,"@F13B4:用户: ":`用户: `,"@F13B4:未配置":`未配置`,"@F13B4:关闭测试":`关闭测试`,"@F13B4:加载中...":`加载中...`,"@F13B4:加载中":`加载中`,"@F13B4:用户未配置":`用户未配置`,"@F13B4:请先配置Git用户信息才能进行提交操作。":`请先配置Git用户信息才能进行提交操作。`,"@F13B4:您可以通过以下方式配置:":`您可以通过以下方式配置:`,"@F13B4:点击右上角的设置按钮,配置用户名和邮箱":`点击右上角的设置按钮,配置用户名和邮箱`,"@F13B4:或者使用命令行配置:":`或者使用命令行配置:`,'@F13B4:--global user.name "您的用户名"':`--global user.name "您的用户名"`,'@F13B4:--global user.email "您的邮箱"':`--global user.email "您的邮箱"`,"@F13B4:立即配置":`立即配置`,"@F13B4:新分支名称":`新分支名称`,"@F13B4:基于分支":`基于分支`,"@F13B4:取消":`取消`,"@F13B4:创建":`创建`,"@F13B4:远程仓库:":`远程仓库:`,"@76A11:没有已暂存的更改":`没有已暂存的更改`,"@76A11:请输入提交信息":`请输入提交信息`,"@76A11:提交":`提交`,"@76A11:个已暂存文件":`个已暂存文件`,"@76A11:存在冲突文件,请先解决冲突":`存在冲突文件,请先解决冲突`,"@76A11:提交并完成合并":`提交并完成合并`,"@76A11:提交中…":`提交中…`,"@76A11:正在提交中…":`正在提交中…`,"@F4137:当前分支没有上游分支":`当前分支没有上游分支`,"@F4137:没有需要推送的提交":`没有需要推送的提交`,"@F4137:有未提交的暂存更改,请先提交":`有未提交的暂存更改,请先提交`,"@F4137:推送":`推送`,"@F4137:个本地提交":`个本地提交`,"@F4137:存在冲突文件,请先解决冲突":`存在冲突文件,请先解决冲突`,"@2E184:一键推送所有":`一键推送所有`,"@2E184:一键提交":`一键提交`,"@2E184:一键提交所选":`一键提交所选`,"@2E184:一键推送所选":`一键推送所选`,"@2E184:暂存 + 提交 + 推送":`暂存 + 提交 + 推送`,"@2E184:暂存所选 + 提交 + 推送":`暂存所选 + 提交 + 推送`,"@2E184:暂存 + 提交":`暂存 + 提交`,"@2E184:暂存所选 + 提交":`暂存所选 + 提交`,"@2E184:拉取远程更新失败,已停止推送":`拉取远程更新失败,已停止推送`,"@2E184:没有需要提交的更改":`没有需要提交的更改`,"@2E184:请输入提交信息":`请输入提交信息`,"@2E184:当前分支没有上游分支":`当前分支没有上游分支`,"@2E184:没有需要提交或推送的更改":`没有需要提交或推送的更改`,"@2E184:没有需要提交的更改":`没有需要提交的更改`,"@2E184:本地已提交,一键推送到远程仓库":`本地已提交,一键推送到远程仓库`,"@2E184:一键完成:暂存所有更改 → 提交 → 推送到远程仓库":`一键完成:暂存所有更改 → 提交 → 推送到远程仓库`,"@2E184:一键完成:仅暂存所选文件 → 提交 → 推送到远程仓库":`一键完成:仅暂存所选文件 → 提交 → 推送到远程仓库`,"@2E184:一键完成:暂存所有更改 → 提交":`一键完成:暂存所有更改 → 提交`,"@2E184:一键完成:仅暂存所选文件 → 提交":`一键完成:仅暂存所选文件 → 提交`,"@2E184:请先勾选要提交的文件":`请先勾选要提交的文件`,"@2E184:请先勾选要推送的文件":`请先勾选要推送的文件`,"@2E184:所选文件无需暂存或被锁定":`所选文件无需暂存或被锁定`,"@PSTART:一键推送成功后执行":`一键推送成功后执行`,"@PSTART:启用":`启用`,"@PSTART:仅在一键推送成功后触发,不影响主流程":`仅在一键推送成功后触发,不影响主流程`,"@29974:没有需要暂存的更改":`没有需要暂存的更改`,"@29974:暂存":`暂存`,"@29974:暂存所选":`暂存所选`,"@29974:暂存所选 ":`暂存所选 `,"@29974: 个文件":` 个文件`,"@29974:个未暂存文件(逐个添加)":`个未暂存文件(逐个添加)`,"@29974:暂存所有更改(git add .)":`暂存所有更改(git add .)`,"@29974:暂存更改":`暂存更改`,"@CF05E:当前路径":`当前路径`,"@CF05E:退出全屏":`退出全屏`,"@CF05E:全屏显示":`全屏显示`,"@CF05E:收起":`收起`,"@CF05E:展开":`展开`,"@CF05E:收起输出":`收起输出`,"@CF05E:展开输出":`展开输出`,"@CF05E:无输出内容":`无输出内容`,"@CF05E:自定义指令执行":`自定义指令执行`,"@CF05E:执行":`执行`,"@CF05E:使用终端执行":`使用终端执行`,"@CF05E:开启":`开启`,"@CF05E:关闭":`关闭`,"@CF05E:自定义命令管理":`自定义命令管理`,"@CF05E:指令编排":`指令编排`,"@CF05E:全屏":`全屏`,"@CF05E:收起控制台":`收起控制台`,"@CF05E:展开控制台":`展开控制台`,"@CF05E:提交后启动项执行失败":`提交后启动项执行失败`,"@CF05E:该编排缺少流程数据,无法执行":`该编排缺少流程数据,无法执行`,"@CF05E:未找到 start 节点":`未找到 start 节点`,"@CF05E:用户停止执行":`用户停止执行`,"@CF05E:确定要清空所有执行历史吗?此操作不可撤销。":`确定要清空所有执行历史吗?此操作不可撤销。`,"@CF05E:清空历史":`清空历史`,"@CF05E:清空":`清空`,"@CF05E:取消":`取消`,"@CF05E:执行历史已清空":`执行历史已清空`,"@CF05E:启动项命令执行失败":`启动项命令执行失败`,"@CF05E:Socket 连接未就绪,无法自动执行交互式启动项":`Socket 连接未就绪,无法自动执行交互式启动项`,"@CF05E:已在新终端中执行命令":`已在新终端中执行命令`,"@CF05E:执行失败":`执行失败`,"@CF05E:无法停止:进程ID不存在":`无法停止:进程ID不存在`,"@CF05E:命令已经结束":`命令已经结束`,"@CF05E:无法读取响应流":`无法读取响应流`,"@CF05E:未知错误":`未知错误`,"@CF05E:重启失败":`重启失败`,"@CF05E:用户取消执行":`用户取消执行`,"@CF05E:等待已中断":`等待已中断`,"@CF05E:等待完成":`等待完成`,"@CF05E:代码节点":`代码节点`,"@CF05E:未配置脚本":`未配置脚本`,"@CF05E:代码节点执行失败":`代码节点执行失败`,"@CF05E:代码节点未返回任何输出":`代码节点未返回任何输出`,"@CF05E:依赖版本号为空,请检查输入/手动输入配置":`依赖版本号为空,请检查输入/手动输入配置`,"@FLOWNODE:条件":`条件`,"@ORCH:条件分支":`条件分支`,"@COND:条件配置":`条件配置`,"@COND:分支列表":`分支列表`,"@COND:添加分支":`添加分支`,"@COND:默认分支":`默认分支`,"@COND:分支名称":`分支名称`,"@COND:优先级":`优先级`,"@COND:规则组合":`规则组合`,"@COND:且(ALL)":`且(ALL)`,"@COND:或(ANY)":`或(ANY)`,"@COND:规则":`规则`,"@COND:添加规则":`添加规则`,"@COND:左值(引用输出)":`左值(引用输出)`,"@COND:操作符":`操作符`,"@COND:右值":`右值`,"@COND:删除分支":`删除分支`,"@COND:删除规则":`删除规则`,"@COND:请至少保留一个默认分支":`请至少保留一个默认分支`,"@COND:默认分支必须使用handleId=default":`默认分支必须使用handleId=default`,"@NODEINPUT:必填":`必填`,"@NODECFG:必填参数未选择引用输出":`必填参数「{name}」未选择引用输出`,"@NODECFG:请输入必填参数的值":`请输入必填参数「{name}」的值`,"@CMD01:命令名称不能为空":`命令名称不能为空`,"@CMD01:命令内容不能为空":`命令内容不能为空`,"@CMD01:命令已保存":`命令已保存`,"@CMD01:保存命令失败: ":`保存命令失败: `,"@CMD01:命令已删除":`命令已删除`,"@CMD01:删除命令失败: ":`删除命令失败: `,"@CMD01:命令已更新":`命令已更新`,"@CMD01:更新命令失败: ":`更新命令失败: `,"@CMD01:命令保存失败: ":`命令保存失败: `,"@CMD01:确定要删除这个自定义命令吗?":`确定要删除这个自定义命令吗?`,"@CMD01:删除确认":`删除确认`,"@CMD01:确定":`确定`,"@CMD01:取消":`取消`,"@CMD01:置顶":`置顶`,"@CMD01:自定义命令管理":`自定义命令管理`,"@CMD01:命令名称":`命令名称`,"@CMD01:输入命令名称,例如: 拉取代码":`输入命令名称,例如: 拉取代码`,"@CMD01:描述":`描述`,"@CMD01:可选,简要描述命令用途":`可选,简要描述命令用途`,"@CMD01:执行目录":`执行目录`,"@CMD01:留空使用当前目录":`留空使用当前目录`,"@CMD01:确定":`确定`,"@CMD01:命令":`命令`,"@CMD01:输入要执行的命令,例如: npm run build":`输入要执行的命令,例如: npm run build`,"@CMD01:更新命令":`更新命令`,"@CMD01:添加命令":`添加命令`,"@CMD01:已保存的命令":`已保存的命令`,"@CMD01:暂无保存的命令":`暂无保存的命令`,"@CMD01:当前目录":`当前目录`,"@CMD01:操作":`操作`,"@CMD01:执行命令":`执行命令`,"@CMD01:编辑":`编辑`,"@CMD01:复制命令":`复制命令`,"@CMD01:删除":`删除`,"@CMD01:选择目录":`选择目录`,"@CMD01:浏览目录失败: ":`浏览目录失败: `,"@CMD01:浏览并选择目录":`浏览并选择目录`,"@CMD01:当前路径: ":`当前路径: `,"@CMD01:返回上级目录":`返回上级目录`,"@CMD01:处理目录选择时出错: ":`处理目录选择时出错: `,"@CMD01:当前目录":`当前目录`,"@CMD01:使用当前目录":`使用当前目录`,"@CMD01:添加命令":`添加命令`,"@CMD01:编辑命令":`编辑命令`,"@CMD01:更新命令":`更新命令`,"@CMD01:命令模板":`命令模板`,"@CMD01:命令模板管理":`命令模板管理`,"@CMD01:输入命令模板,例如: npm run build":`输入命令模板,例如: npm run build`,"@CMD01:编辑命令模板":`编辑命令模板`,"@CMD01:暂无保存的命令模板":`暂无保存的命令模板`,"@CMD01:执行参数":`执行参数`,"@CMD01:请输入变量值":`请输入 {var} 的值`,"@CMD01:变量配置":`变量配置`,"@CMD01:变量名":`变量名`,"@CMD01:默认值":`默认值`,"@CMD01:必填":`必填`,"@CMD01:请输入必填变量: ":`请输入必填变量: {var}`,"@CMD01:同步NPM命令":`同步NPM命令`,"@CMD01:正在同步NPM命令...":`正在同步NPM命令...`,"@CMD01:NPM命令同步完成":`NPM命令同步完成,共添加 {count} 个命令(跳过 {skip} 个重复)`,"@CMD01:NPM命令同步失败: ":`NPM命令同步失败: `,"@CMD01:未找到任何NPM脚本":`未找到任何NPM脚本`,"@CMD01:批量删除":`批量删除`,"@CMD01:已选择":`已选择 {count} 项`,"@CMD01:确定要删除所选命令吗":`确定要删除所选的 {count} 个命令吗?`,"@CMD01:批量删除成功":`成功删除 {count} 个命令`,"@CMD01:选择NPM命令":`选择要同步的NPM命令`,"@CMD01:全选":`全选`,"@CMD01:NPM脚本列表":`NPM脚本列表`,"@CMD01:开始同步":`开始同步`,"@CMD01:包名":`包名`,"@CMD01:脚本名":`脚本名`,"@CMD01:状态":`状态`,"@CMD01:已存在":`已存在`,"@CMD01:新增":`新增`,"@CMD01:请至少选择一项":`请至少选择一个命令`,"@CMD01:NPM命令同步完成2":`NPM命令同步完成,共添加 {count} 个命令(跳过 {skip} 个重复)`,"@CMDPANEL:自定义命令":`自定义命令`,"@CMDPANEL:管理命令":`管理命令`,"@CMDPANEL:暂无自定义命令":`暂无自定义命令`,"@CMDPANEL:调整自定义命令面板高度(上下方向键)":`调整自定义命令面板高度(上下方向键)`,"@CMDPANEL:去添加":`去添加`,"@CMDPANEL:已在新终端中执行":`已在新终端中执行: {name}`,"@CMDPANEL:执行失败":`执行失败`,"@CMD02:指令编排":`指令编排`,"@CMD02:可用命令":`可用命令`,"@CMD02:暂无可用命令,请先创建命令":`暂无可用命令,请先创建命令`,"@CMD02:添加":`添加`,"@CMD02:执行顺序":`执行顺序`,"@CMD02:清空":`清空`,"@CMD02:请从左侧选择要执行的命令":`请从左侧选择要执行的命令`,"@CMD02:移除":`移除`,"@CMD02:开始执行":`开始执行`,"@CMD02:个命令":`个命令`,"@ORCH:编排已保存":`编排已保存`,"@ORCH:保存编排失败: ":`保存编排失败: `,"@ORCH:编排已删除":`编排已删除`,"@ORCH:删除编排失败: ":`删除编排失败: `,"@ORCH:编排已更新":`编排已更新`,"@ORCH:更新编排失败: ":`更新编排失败: `,"@ORCHWS:编排工作台":`编排工作台`,"@ORCHWS:已保存的编排":`已保存的编排`,"@ORCHWS:新建":`新建`,"@ORCHWS:暂无编排":`暂无编排`,"@ORCHWS:执行":`执行`,"@ORCHWS:删除":`删除`,"@ORCHWS:编辑编排":`编辑编排`,"@ORCHWS:新建编排":`新建编排`,"@ORCHWS:保存":`保存`,"@ORCHWS:保存编排":`保存编排`,"@ORCHWS:执行编排":`执行编排`,"@ORCHWS:编排名称(必填)":`编排名称(必填)`,"@ORCHWS:编排描述(选填)":`编排描述(选填)`,"@ORCHWS:执行步骤":`执行步骤`,"@ORCHWS:添加步骤":`添加步骤`,"@ORCHWS:清空所有步骤":`清空所有步骤`,"@ORCHWS:步骤":`步骤`,"@ORCHWS:请添加执行步骤":`请添加执行步骤`,"@ORCHWS:启用":`启用`,"@ORCHWS:终端执行":`终端执行`,"@ORCHWS:普通执行":`普通执行`,"@ORCHWS:置顶":`置顶`,"@ORCHWS:移动到顶部":`移动到顶部`,"@ORCHWS:上移":`上移`,"@ORCHWS:下移":`下移`,"@ORCHWS:置底":`置底`,"@ORCHWS:移动到底部":`移动到底部`,"@ORCHWS:移除":`移除`,"@ORCHWS:可用命令":`可用命令`,"@ORCHWS:暂无可用命令":`暂无可用命令`,"@ORCHWS:等待时长(秒)":`等待时长(秒)`,"@ORCHWS:版本号修改":`版本号修改`,"@ORCHWS:修改目标":`修改目标`,"@ORCHWS:package.json版本号":`package.json版本号`,"@ORCHWS:依赖包版本号":`依赖包版本号`,"@ORCHWS:版本递增":`版本递增`,"@ORCHWS:主版本":`主版本`,"@ORCHWS:次版本":`次版本`,"@ORCHWS:补丁版本":`补丁版本`,"@ORCHWS:依赖包名称":`依赖包名称`,"@ORCHWS:请输入依赖包名称":`请输入依赖包名称`,"@ORCHWS:依赖类型":`依赖类型`,"@ORCHWS:生产依赖":`生产依赖`,"@ORCHWS:开发依赖":`开发依赖`,"@ORCHWS:版本号设置":`版本号设置`,"@ORCHWS:自动递增":`自动递增`,"@ORCHWS:手动输入":`手动输入`,"@ORCHWS:请输入版本号":`请输入版本号`,"@ORCHWS:添加":`添加`,"@ORCHWS:确认删除":`确认删除`,"@ORCHWS:取消":`取消`,"@ORCHWS:确定要删除编排":`确定要删除编排 "{name}" 吗?`,"@ORCHWS:请输入编排名称":`请输入编排名称`,"@ORCHWS:请至少添加一个步骤":`请至少添加一个步骤`,"@ORCHWS:请选择依赖包名称":`请选择依赖包名称`,"@ORCHWS:请输入依赖包版本号":`请输入依赖包版本号`,"@ORCHWS:未知命令":`未知命令`,"@ORCHWS:等待 {seconds} 秒":`等待 {seconds} 秒`,"@ORCHWS:主版本号":`主版本`,"@ORCHWS:次版本号":`次版本`,"@ORCHWS:补丁版本号":`补丁版本`,"@ORCHWS:修改依赖":`修改依赖 [{depType}] {depName} 版本+1 ({bumpText})`,"@ORCHWS:修改依赖手动":`修改依赖 [{depType}] {depName} → {version}`,"@ORCHWS:版本号+1":`版本号+1 ({bumpText})`,"@ORCHWS:未知步骤":`未知步骤`,"@ORCHWS:命令已删除":`命令已删除`,"@ORCHWS:暂停执行":`暂停执行 {seconds} 秒`,"@ORCHWS:已禁用":`[已禁用] `,"@ORCHWS:终端":`[终端] `,"@ORCHWS:从此处开始执行":`从此处开始执行`,"@ORCHWS:版本号来源":`版本号来源`,"@ORCHWS:引用输出":`引用输出`,"@ORCHWS:无可用的前置命令节点":`无可用的前置命令节点`,"@ORCHWS:引用节点":`引用节点`,"@ORCHWS:选择要引用的前置节点":`选择要引用的前置节点`,"@ORCHWS:输出字段":`输出字段`,"@ORCHWS:选择要引用的输出字段":`选择要引用的输出字段`,"@ORCHWS:版本号将使用所选节点的输出结果":`版本号将使用所选节点的输出结果`,"@ORCHWS:请选择要引用的节点输出":`请选择要引用的节点输出`,"@ORCHWS:输出键名":`输出键名`,"@ORCHWS:可选输出键名提示":`可选,用于其他节点引用此命令的输出`,"@ORCHWS:设置后其他节点可以引用此命令的输出结果":`设置后,其他节点可以引用此命令的输出结果`,"@ORCHWS:标准输出":`标准输出 (stdout)`,"@ORCHWS:提取的版本号":`提取的版本号`,"@NODECFG:节点配置":`节点配置`,"@NODECFG:通用设置":`通用设置`,"@NODECFG:节点名称":`节点名称`,"@NODECFG:请输入节点名称":`请输入节点名称`,"@NODECFG:启用节点":`启用节点`,"@NODECFG:执行方式":`执行方式`,"@NODECFG:普通执行":`普通执行`,"@NODECFG:终端执行":`终端执行`,"@NODECFG:终端选项":`终端选项`,"@NODECFG:重启现存终端命令":`重启现存终端命令`,"@NODECFG:输出配置":`输出配置`,"@NODECFG:参数名":`参数名`,"@NODECFG:参数描述":`参数描述`,"@NODECFG:运行时生成":`运行时生成`,"@NODECFG:添加输出参数":`添加输出参数`,"@NODECFG:输入配置":`输入配置`,"@NODECFG:命令配置":`命令配置`,"@NODECFG:选择命令":`选择命令`,"@NODECFG:暂无可用命令请先创建命令":`暂无可用命令,请先创建命令`,"@NODECFG:当前目录":`当前目录`,"@NODECFG:等待配置":`等待配置`,"@NODECFG:管理命令":`管理命令`,"@NODECFG:等待时间":`等待时间`,"@NODECFG:秒":`秒`,"@NODECFG:代码配置":`代码配置`,"@NODECFG:输入":`输入`,"@NODECFG:代码":`代码`,"@NODECFG:输出":`输出`,"@NODECFG:参数值":`参数值`,"@NODECFG:引用":`引用`,"@NODECFG:手动":`手动`,"@NODECFG:请输入":`请输入`,"@NODECFG:值":`值`,"@NODECFG:暂无输入参数":`暂无输入参数`,"@NODECFG:暂无输出参数":`暂无输出参数`,"@NODECFG:参数类型":`参数类型`,"@NODECFG:示例代码":`示例代码`,"@NODECFG:提取版本号":`提取版本号`,"@NODECFG:生成提交信息":`生成提交信息`,"@NODECFG:已应用示例":`已应用示例`,"@NODECFG:代码脚本示例":`function main(param) {
1
+ import{l as e}from"./vendor-BiOPaz96.js";var t={"@F13B4:编辑项目配置":`编辑项目配置`,"@F13B4:国际化测试":`国际化测试`,"@F13B4:Git 操作":`Git 操作`,"@F13B4:用户设置":`用户设置`,"@F13B4:创建新分支":`创建新分支`,"@F13B4:搜索或签出分支":`搜索或签出分支`,"@F13B4:没有匹配的分支":`没有匹配的分支`,"@F13B4:请输入新分支名称":`请输入新分支名称`,"@F13B4:选择基础分支":`选择基础分支`,"@F13B4:当前分支":`当前分支`,"@F13B4:复制仓库地址":`复制仓库地址`,"@F13B4:查看更新":`查看更新`,"@F13B4:在 GitHub 上查看源码":`在 GitHub 上查看源码`,"@F13B4:在 npm 上查看包":`在 npm 上查看包`,"@F13B4:在浏览器中打开仓库主页":`在浏览器中打开仓库主页`,"@F13B4:无法识别该远程仓库的网页地址":`无法识别该远程仓库的网页地址`,"@F13B4:升级":`升级`,"@F13B4:升级中":`升级中`,"@F13B4:升级完成":`升级完成`,"@F13B4:升级失败":`升级失败`,"@F13B4:重试":`重试`,"@F13B4:完成":`完成`,"@F13B4:立即重启并刷新":`立即重启并刷新`,"@F13B4:稍后手动重启":`稍后手动重启`,"@F13B4:新版本已全局安装,需要重启服务才能生效":`新版本已全局安装,需要重启服务才能生效`,"@F13B4:{seconds} 秒后自动刷新":`{seconds} 秒后自动刷新`,"@F13B4:重启失败 {error}":`重启失败 {error}`,"@F13B4:重启超时":`重启超时:子进程未在 8 秒内就绪`,"@F13B4:重启失败,请刷新页面重试":`重启失败,请刷新页面重试`,"@F13B4:重启失败":`重启失败`,"@F13B4:确定升级":`确定升级`,"@F13B4:取消":`取消`,"@F13B4:确定要从 {current} 升级到 {latest} 吗?":`确定要从 {current} 升级到 {latest} 吗?`,"@F13B4:发现新版本 {version}":`发现新版本 {version}`,"@F13B4:发现新版本 {version},点击升级":`发现新版本 {version},点击升级`,"@F13B4:检查更新失败 {error}":`检查更新失败 {error}`,"@F13B4:等待日志输出":`等待日志输出...`,"@F13B4:复制克隆命令":`复制克隆命令`,"@F13B4:已复制克隆命令":`已复制克隆命令`,"@F13B4:切换到浅色主题":`切换到浅色主题`,"@F13B4:切换到深色主题":`切换到深色主题`,"@NET:无法连接到本地服务,请检查后端进程":`无法连接到本地服务,请检查后端进程`,"@NET:重试":`重试`,"@NET:关闭":`关闭`,"@NET:刚刚":`刚刚`,"@NET:网络连接失败":`网络连接失败`,"@NET:浏览器报告离线":`浏览器报告离线`,"@F13B4:未知目录":`未知目录`,"@F13B4:---------- 页面初始化开始 ----------":`---------- 页面初始化开始 ----------`,"@F13B4:当前目录不是Git仓库,部分功能将不可用":`当前目录不是Git仓库,部分功能将不可用`,"@F13B4:---------- 页面初始化完成 ----------":`---------- 页面初始化完成 ----------`,"@F13B4:默认提交信息: ":`默认提交信息: `,"@F13B4:默认模型":`默认模型`,"@F13B4:布局比例已保存 - 左侧: ":`布局比例已保存 - 左侧: `,"@F13B4:%, 中间: ":`%, 中间: `,"@F13B4:%, 右侧: ":`%, 右侧: `,"@F13B4:调整左侧与中间面板宽度(左右方向键)":`调整左侧与中间面板宽度(左右方向键)`,"@F13B4:调整左侧与右侧面板宽度(左右方向键)":`调整左侧与右侧面板宽度(左右方向键)`,"@F13B4:调整中间与右侧面板宽度(左右方向键)":`调整中间与右侧面板宽度(左右方向键)`,"@F13B4:调整上方与下方面板高度(上下方向键)":`调整上方与下方面板高度(上下方向键)`,"@F13B4:%, 上方: ":`%, 上方: `,"@F13B4:底部布局比例已保存 - 左侧: ":`底部布局比例已保存 - 左侧: `,"@F13B4:已恢复左侧比例: ":`已恢复左侧比例: `,"@F13B4:已恢复上方比例: ":`已恢复上方比例: `,"@F13B4:用户: ":`用户: `,"@F13B4:未配置":`未配置`,"@F13B4:关闭测试":`关闭测试`,"@F13B4:加载中...":`加载中...`,"@F13B4:加载中":`加载中`,"@F13B4:用户未配置":`用户未配置`,"@F13B4:请先配置Git用户信息才能进行提交操作。":`请先配置Git用户信息才能进行提交操作。`,"@F13B4:您可以通过以下方式配置:":`您可以通过以下方式配置:`,"@F13B4:点击右上角的设置按钮,配置用户名和邮箱":`点击右上角的设置按钮,配置用户名和邮箱`,"@F13B4:或者使用命令行配置:":`或者使用命令行配置:`,'@F13B4:--global user.name "您的用户名"':`--global user.name "您的用户名"`,'@F13B4:--global user.email "您的邮箱"':`--global user.email "您的邮箱"`,"@F13B4:立即配置":`立即配置`,"@F13B4:新分支名称":`新分支名称`,"@F13B4:基于分支":`基于分支`,"@F13B4:取消":`取消`,"@F13B4:创建":`创建`,"@F13B4:远程仓库:":`远程仓库:`,"@76A11:没有已暂存的更改":`没有已暂存的更改`,"@76A11:请输入提交信息":`请输入提交信息`,"@76A11:提交":`提交`,"@76A11:个已暂存文件":`个已暂存文件`,"@76A11:存在冲突文件,请先解决冲突":`存在冲突文件,请先解决冲突`,"@76A11:提交并完成合并":`提交并完成合并`,"@76A11:提交中…":`提交中…`,"@76A11:正在提交中…":`正在提交中…`,"@F4137:当前分支没有上游分支":`当前分支没有上游分支`,"@F4137:没有需要推送的提交":`没有需要推送的提交`,"@F4137:有未提交的暂存更改,请先提交":`有未提交的暂存更改,请先提交`,"@F4137:推送":`推送`,"@F4137:个本地提交":`个本地提交`,"@F4137:存在冲突文件,请先解决冲突":`存在冲突文件,请先解决冲突`,"@2E184:一键推送所有":`一键推送所有`,"@2E184:一键提交":`一键提交`,"@2E184:一键提交所选":`一键提交所选`,"@2E184:一键推送所选":`一键推送所选`,"@2E184:暂存 + 提交 + 推送":`暂存 + 提交 + 推送`,"@2E184:暂存所选 + 提交 + 推送":`暂存所选 + 提交 + 推送`,"@2E184:暂存 + 提交":`暂存 + 提交`,"@2E184:暂存所选 + 提交":`暂存所选 + 提交`,"@2E184:拉取远程更新失败,已停止推送":`拉取远程更新失败,已停止推送`,"@2E184:没有需要提交的更改":`没有需要提交的更改`,"@2E184:请输入提交信息":`请输入提交信息`,"@2E184:当前分支没有上游分支":`当前分支没有上游分支`,"@2E184:没有需要提交或推送的更改":`没有需要提交或推送的更改`,"@2E184:没有需要提交的更改":`没有需要提交的更改`,"@2E184:本地已提交,一键推送到远程仓库":`本地已提交,一键推送到远程仓库`,"@2E184:一键完成:暂存所有更改 → 提交 → 推送到远程仓库":`一键完成:暂存所有更改 → 提交 → 推送到远程仓库`,"@2E184:一键完成:仅暂存所选文件 → 提交 → 推送到远程仓库":`一键完成:仅暂存所选文件 → 提交 → 推送到远程仓库`,"@2E184:一键完成:暂存所有更改 → 提交":`一键完成:暂存所有更改 → 提交`,"@2E184:一键完成:仅暂存所选文件 → 提交":`一键完成:仅暂存所选文件 → 提交`,"@2E184:请先勾选要提交的文件":`请先勾选要提交的文件`,"@2E184:请先勾选要推送的文件":`请先勾选要推送的文件`,"@2E184:所选文件无需暂存或被锁定":`所选文件无需暂存或被锁定`,"@PSTART:一键推送成功后执行":`一键推送成功后执行`,"@PSTART:启用":`启用`,"@PSTART:仅在一键推送成功后触发,不影响主流程":`仅在一键推送成功后触发,不影响主流程`,"@29974:没有需要暂存的更改":`没有需要暂存的更改`,"@29974:暂存":`暂存`,"@29974:暂存所选":`暂存所选`,"@29974:暂存所选 ":`暂存所选 `,"@29974: 个文件":` 个文件`,"@29974:个未暂存文件(逐个添加)":`个未暂存文件(逐个添加)`,"@29974:暂存所有更改(git add .)":`暂存所有更改(git add .)`,"@29974:暂存更改":`暂存更改`,"@CF05E:当前路径":`当前路径`,"@CF05E:退出全屏":`退出全屏`,"@CF05E:全屏显示":`全屏显示`,"@CF05E:收起":`收起`,"@CF05E:展开":`展开`,"@CF05E:收起输出":`收起输出`,"@CF05E:展开输出":`展开输出`,"@CF05E:无输出内容":`无输出内容`,"@CF05E:自定义指令执行":`自定义指令执行`,"@CF05E:执行":`执行`,"@CF05E:使用终端执行":`使用终端执行`,"@CF05E:开启":`开启`,"@CF05E:关闭":`关闭`,"@CF05E:自定义命令管理":`自定义命令管理`,"@CF05E:指令编排":`指令编排`,"@CF05E:全屏":`全屏`,"@CF05E:收起控制台":`收起控制台`,"@CF05E:展开控制台":`展开控制台`,"@CF05E:提交后启动项执行失败":`提交后启动项执行失败`,"@CF05E:该编排缺少流程数据,无法执行":`该编排缺少流程数据,无法执行`,"@CF05E:未找到 start 节点":`未找到 start 节点`,"@CF05E:用户停止执行":`用户停止执行`,"@CF05E:确定要清空所有执行历史吗?此操作不可撤销。":`确定要清空所有执行历史吗?此操作不可撤销。`,"@CF05E:清空历史":`清空历史`,"@CF05E:清空":`清空`,"@CF05E:取消":`取消`,"@CF05E:执行历史已清空":`执行历史已清空`,"@CF05E:启动项命令执行失败":`启动项命令执行失败`,"@CF05E:Socket 连接未就绪,无法自动执行交互式启动项":`Socket 连接未就绪,无法自动执行交互式启动项`,"@CF05E:已在新终端中执行命令":`已在新终端中执行命令`,"@CF05E:执行失败":`执行失败`,"@CF05E:无法停止:进程ID不存在":`无法停止:进程ID不存在`,"@CF05E:命令已经结束":`命令已经结束`,"@CF05E:无法读取响应流":`无法读取响应流`,"@CF05E:未知错误":`未知错误`,"@CF05E:重启失败":`重启失败`,"@CF05E:用户取消执行":`用户取消执行`,"@CF05E:等待已中断":`等待已中断`,"@CF05E:等待完成":`等待完成`,"@CF05E:代码节点":`代码节点`,"@CF05E:未配置脚本":`未配置脚本`,"@CF05E:代码节点执行失败":`代码节点执行失败`,"@CF05E:代码节点未返回任何输出":`代码节点未返回任何输出`,"@CF05E:依赖版本号为空,请检查输入/手动输入配置":`依赖版本号为空,请检查输入/手动输入配置`,"@FLOWNODE:条件":`条件`,"@ORCH:条件分支":`条件分支`,"@COND:条件配置":`条件配置`,"@COND:分支列表":`分支列表`,"@COND:添加分支":`添加分支`,"@COND:默认分支":`默认分支`,"@COND:分支名称":`分支名称`,"@COND:优先级":`优先级`,"@COND:规则组合":`规则组合`,"@COND:且(ALL)":`且(ALL)`,"@COND:或(ANY)":`或(ANY)`,"@COND:规则":`规则`,"@COND:添加规则":`添加规则`,"@COND:左值(引用输出)":`左值(引用输出)`,"@COND:操作符":`操作符`,"@COND:右值":`右值`,"@COND:删除分支":`删除分支`,"@COND:删除规则":`删除规则`,"@COND:请至少保留一个默认分支":`请至少保留一个默认分支`,"@COND:默认分支必须使用handleId=default":`默认分支必须使用handleId=default`,"@NODEINPUT:必填":`必填`,"@NODECFG:必填参数未选择引用输出":`必填参数「{name}」未选择引用输出`,"@NODECFG:请输入必填参数的值":`请输入必填参数「{name}」的值`,"@CMD01:命令名称不能为空":`命令名称不能为空`,"@CMD01:命令内容不能为空":`命令内容不能为空`,"@CMD01:命令已保存":`命令已保存`,"@CMD01:保存命令失败: ":`保存命令失败: `,"@CMD01:命令已删除":`命令已删除`,"@CMD01:删除命令失败: ":`删除命令失败: `,"@CMD01:命令已更新":`命令已更新`,"@CMD01:更新命令失败: ":`更新命令失败: `,"@CMD01:命令保存失败: ":`命令保存失败: `,"@CMD01:确定要删除这个自定义命令吗?":`确定要删除这个自定义命令吗?`,"@CMD01:删除确认":`删除确认`,"@CMD01:确定":`确定`,"@CMD01:取消":`取消`,"@CMD01:置顶":`置顶`,"@CMD01:自定义命令管理":`自定义命令管理`,"@CMD01:命令名称":`命令名称`,"@CMD01:输入命令名称,例如: 拉取代码":`输入命令名称,例如: 拉取代码`,"@CMD01:描述":`描述`,"@CMD01:可选,简要描述命令用途":`可选,简要描述命令用途`,"@CMD01:执行目录":`执行目录`,"@CMD01:留空使用当前目录":`留空使用当前目录`,"@CMD01:确定":`确定`,"@CMD01:命令":`命令`,"@CMD01:输入要执行的命令,例如: npm run build":`输入要执行的命令,例如: npm run build`,"@CMD01:更新命令":`更新命令`,"@CMD01:添加命令":`添加命令`,"@CMD01:已保存的命令":`已保存的命令`,"@CMD01:暂无保存的命令":`暂无保存的命令`,"@CMD01:当前目录":`当前目录`,"@CMD01:操作":`操作`,"@CMD01:执行命令":`执行命令`,"@CMD01:编辑":`编辑`,"@CMD01:复制命令":`复制命令`,"@CMD01:删除":`删除`,"@CMD01:选择目录":`选择目录`,"@CMD01:浏览目录失败: ":`浏览目录失败: `,"@CMD01:浏览并选择目录":`浏览并选择目录`,"@CMD01:当前路径: ":`当前路径: `,"@CMD01:返回上级目录":`返回上级目录`,"@CMD01:处理目录选择时出错: ":`处理目录选择时出错: `,"@CMD01:当前目录":`当前目录`,"@CMD01:使用当前目录":`使用当前目录`,"@CMD01:添加命令":`添加命令`,"@CMD01:编辑命令":`编辑命令`,"@CMD01:更新命令":`更新命令`,"@CMD01:命令模板":`命令模板`,"@CMD01:命令模板管理":`命令模板管理`,"@CMD01:输入命令模板,例如: npm run build":`输入命令模板,例如: npm run build`,"@CMD01:编辑命令模板":`编辑命令模板`,"@CMD01:暂无保存的命令模板":`暂无保存的命令模板`,"@CMD01:执行参数":`执行参数`,"@CMD01:请输入变量值":`请输入 {var} 的值`,"@CMD01:变量配置":`变量配置`,"@CMD01:变量名":`变量名`,"@CMD01:默认值":`默认值`,"@CMD01:必填":`必填`,"@CMD01:请输入必填变量: ":`请输入必填变量: {var}`,"@CMD01:同步NPM命令":`同步NPM命令`,"@CMD01:正在同步NPM命令...":`正在同步NPM命令...`,"@CMD01:NPM命令同步完成":`NPM命令同步完成,共添加 {count} 个命令(跳过 {skip} 个重复)`,"@CMD01:NPM命令同步失败: ":`NPM命令同步失败: `,"@CMD01:未找到任何NPM脚本":`未找到任何NPM脚本`,"@CMD01:批量删除":`批量删除`,"@CMD01:已选择":`已选择 {count} 项`,"@CMD01:确定要删除所选命令吗":`确定要删除所选的 {count} 个命令吗?`,"@CMD01:批量删除成功":`成功删除 {count} 个命令`,"@CMD01:选择NPM命令":`选择要同步的NPM命令`,"@CMD01:全选":`全选`,"@CMD01:NPM脚本列表":`NPM脚本列表`,"@CMD01:开始同步":`开始同步`,"@CMD01:包名":`包名`,"@CMD01:脚本名":`脚本名`,"@CMD01:状态":`状态`,"@CMD01:已存在":`已存在`,"@CMD01:新增":`新增`,"@CMD01:请至少选择一项":`请至少选择一个命令`,"@CMD01:NPM命令同步完成2":`NPM命令同步完成,共添加 {count} 个命令(跳过 {skip} 个重复)`,"@CMDPANEL:自定义命令":`自定义命令`,"@CMDPANEL:管理命令":`管理命令`,"@CMDPANEL:暂无自定义命令":`暂无自定义命令`,"@CMDPANEL:调整自定义命令面板高度(上下方向键)":`调整自定义命令面板高度(上下方向键)`,"@CMDPANEL:去添加":`去添加`,"@CMDPANEL:已在新终端中执行":`已在新终端中执行: {name}`,"@CMDPANEL:执行失败":`执行失败`,"@CMD02:指令编排":`指令编排`,"@CMD02:可用命令":`可用命令`,"@CMD02:暂无可用命令,请先创建命令":`暂无可用命令,请先创建命令`,"@CMD02:添加":`添加`,"@CMD02:执行顺序":`执行顺序`,"@CMD02:清空":`清空`,"@CMD02:请从左侧选择要执行的命令":`请从左侧选择要执行的命令`,"@CMD02:移除":`移除`,"@CMD02:开始执行":`开始执行`,"@CMD02:个命令":`个命令`,"@ORCH:编排已保存":`编排已保存`,"@ORCH:保存编排失败: ":`保存编排失败: `,"@ORCH:编排已删除":`编排已删除`,"@ORCH:删除编排失败: ":`删除编排失败: `,"@ORCH:编排已更新":`编排已更新`,"@ORCH:更新编排失败: ":`更新编排失败: `,"@ORCHWS:编排工作台":`编排工作台`,"@ORCHWS:已保存的编排":`已保存的编排`,"@ORCHWS:新建":`新建`,"@ORCHWS:暂无编排":`暂无编排`,"@ORCHWS:执行":`执行`,"@ORCHWS:删除":`删除`,"@ORCHWS:编辑编排":`编辑编排`,"@ORCHWS:新建编排":`新建编排`,"@ORCHWS:保存":`保存`,"@ORCHWS:保存编排":`保存编排`,"@ORCHWS:执行编排":`执行编排`,"@ORCHWS:编排名称(必填)":`编排名称(必填)`,"@ORCHWS:编排描述(选填)":`编排描述(选填)`,"@ORCHWS:执行步骤":`执行步骤`,"@ORCHWS:添加步骤":`添加步骤`,"@ORCHWS:清空所有步骤":`清空所有步骤`,"@ORCHWS:步骤":`步骤`,"@ORCHWS:请添加执行步骤":`请添加执行步骤`,"@ORCHWS:启用":`启用`,"@ORCHWS:终端执行":`终端执行`,"@ORCHWS:普通执行":`普通执行`,"@ORCHWS:置顶":`置顶`,"@ORCHWS:移动到顶部":`移动到顶部`,"@ORCHWS:上移":`上移`,"@ORCHWS:下移":`下移`,"@ORCHWS:置底":`置底`,"@ORCHWS:移动到底部":`移动到底部`,"@ORCHWS:移除":`移除`,"@ORCHWS:可用命令":`可用命令`,"@ORCHWS:暂无可用命令":`暂无可用命令`,"@ORCHWS:等待时长(秒)":`等待时长(秒)`,"@ORCHWS:版本号修改":`版本号修改`,"@ORCHWS:修改目标":`修改目标`,"@ORCHWS:package.json版本号":`package.json版本号`,"@ORCHWS:依赖包版本号":`依赖包版本号`,"@ORCHWS:版本递增":`版本递增`,"@ORCHWS:主版本":`主版本`,"@ORCHWS:次版本":`次版本`,"@ORCHWS:补丁版本":`补丁版本`,"@ORCHWS:依赖包名称":`依赖包名称`,"@ORCHWS:请输入依赖包名称":`请输入依赖包名称`,"@ORCHWS:依赖类型":`依赖类型`,"@ORCHWS:生产依赖":`生产依赖`,"@ORCHWS:开发依赖":`开发依赖`,"@ORCHWS:版本号设置":`版本号设置`,"@ORCHWS:自动递增":`自动递增`,"@ORCHWS:手动输入":`手动输入`,"@ORCHWS:请输入版本号":`请输入版本号`,"@ORCHWS:添加":`添加`,"@ORCHWS:确认删除":`确认删除`,"@ORCHWS:取消":`取消`,"@ORCHWS:确定要删除编排":`确定要删除编排 "{name}" 吗?`,"@ORCHWS:请输入编排名称":`请输入编排名称`,"@ORCHWS:请至少添加一个步骤":`请至少添加一个步骤`,"@ORCHWS:请选择依赖包名称":`请选择依赖包名称`,"@ORCHWS:请输入依赖包版本号":`请输入依赖包版本号`,"@ORCHWS:未知命令":`未知命令`,"@ORCHWS:等待 {seconds} 秒":`等待 {seconds} 秒`,"@ORCHWS:主版本号":`主版本`,"@ORCHWS:次版本号":`次版本`,"@ORCHWS:补丁版本号":`补丁版本`,"@ORCHWS:修改依赖":`修改依赖 [{depType}] {depName} 版本+1 ({bumpText})`,"@ORCHWS:修改依赖手动":`修改依赖 [{depType}] {depName} → {version}`,"@ORCHWS:版本号+1":`版本号+1 ({bumpText})`,"@ORCHWS:未知步骤":`未知步骤`,"@ORCHWS:命令已删除":`命令已删除`,"@ORCHWS:暂停执行":`暂停执行 {seconds} 秒`,"@ORCHWS:已禁用":`[已禁用] `,"@ORCHWS:终端":`[终端] `,"@ORCHWS:从此处开始执行":`从此处开始执行`,"@ORCHWS:版本号来源":`版本号来源`,"@ORCHWS:引用输出":`引用输出`,"@ORCHWS:无可用的前置命令节点":`无可用的前置命令节点`,"@ORCHWS:引用节点":`引用节点`,"@ORCHWS:选择要引用的前置节点":`选择要引用的前置节点`,"@ORCHWS:输出字段":`输出字段`,"@ORCHWS:选择要引用的输出字段":`选择要引用的输出字段`,"@ORCHWS:版本号将使用所选节点的输出结果":`版本号将使用所选节点的输出结果`,"@ORCHWS:请选择要引用的节点输出":`请选择要引用的节点输出`,"@ORCHWS:输出键名":`输出键名`,"@ORCHWS:可选输出键名提示":`可选,用于其他节点引用此命令的输出`,"@ORCHWS:设置后其他节点可以引用此命令的输出结果":`设置后,其他节点可以引用此命令的输出结果`,"@ORCHWS:标准输出":`标准输出 (stdout)`,"@ORCHWS:提取的版本号":`提取的版本号`,"@NODECFG:节点配置":`节点配置`,"@NODECFG:通用设置":`通用设置`,"@NODECFG:节点名称":`节点名称`,"@NODECFG:请输入节点名称":`请输入节点名称`,"@NODECFG:启用节点":`启用节点`,"@NODECFG:执行方式":`执行方式`,"@NODECFG:普通执行":`普通执行`,"@NODECFG:终端执行":`终端执行`,"@NODECFG:终端选项":`终端选项`,"@NODECFG:重启现存终端命令":`重启现存终端命令`,"@NODECFG:输出配置":`输出配置`,"@NODECFG:参数名":`参数名`,"@NODECFG:参数描述":`参数描述`,"@NODECFG:运行时生成":`运行时生成`,"@NODECFG:添加输出参数":`添加输出参数`,"@NODECFG:输入配置":`输入配置`,"@NODECFG:命令配置":`命令配置`,"@NODECFG:选择命令":`选择命令`,"@NODECFG:暂无可用命令请先创建命令":`暂无可用命令,请先创建命令`,"@NODECFG:当前目录":`当前目录`,"@NODECFG:等待配置":`等待配置`,"@NODECFG:管理命令":`管理命令`,"@NODECFG:等待时间":`等待时间`,"@NODECFG:秒":`秒`,"@NODECFG:代码配置":`代码配置`,"@NODECFG:输入":`输入`,"@NODECFG:代码":`代码`,"@NODECFG:输出":`输出`,"@NODECFG:参数值":`参数值`,"@NODECFG:引用":`引用`,"@NODECFG:手动":`手动`,"@NODECFG:请输入":`请输入`,"@NODECFG:值":`值`,"@NODECFG:暂无输入参数":`暂无输入参数`,"@NODECFG:暂无输出参数":`暂无输出参数`,"@NODECFG:参数类型":`参数类型`,"@NODECFG:示例代码":`示例代码`,"@NODECFG:提取版本号":`提取版本号`,"@NODECFG:生成提交信息":`生成提交信息`,"@NODECFG:已应用示例":`已应用示例`,"@NODECFG:代码脚本示例":`function main(param) {
2
2
  const out = new Object()
3
3
  out.key0 = param.input
4
4
  return out
@@ -1 +1 @@
1
- import"./rolldown-runtime-DAXXjFlN.js";import{Jn as e,a as t,mn as n,n as r,sr as i,t as a}from"./element-plus-BeKPY2v-.js";import{f as o}from"./vendor-MTP3JiRt.js";import{a as s,n as c,r as l}from"./_plugin-vue_export-helper-YXQ3ciBX.js";var u={"zh-CN":r,"en-US":a};function d(e){return u[e]||r}var f=o(`locale`,()=>{let e=i(l()),t=n(()=>d(e.value));async function r(t){s(t),e.value=t;let n=p();n.locale!==t&&await n.saveGeneralSettings({locale:t})}return{currentLocale:e,elementPlusLocale:t,changeLocale:r}}),p=o(`config`,()=>{let r=i(``),a=i([]),o=i([]),l=i([]),u=i([]),d=i([]),p=i([]),m=i([]),h=i([]),g=i(!1),_=i({enabled:!1,type:`command`,refId:``}),v=i(!1),y=i(!1),b=i(``),x=i(``),S=i(``),C=i(!0),w=i(!1),T=i(!0),E=i(!1),D=i(!1),O=i(!0),k=i(`light`),A=i(`zh-CN`),j=i([]),M={layout:{leftRatio:.25,midRatio:.375,rightRatio:.375,topRatio:.5},layoutsByProject:{},fileListViewMode:`list`,fileDiffSplitPercent:35,commandConsole:{expanded:!0,useTerminal:!0,showTerminalSessions:!0,splitPercent:25},editorAutoSave:!1,mindmapDir:``},N=i(JSON.parse(JSON.stringify(M))),P=i(!1);function F(e){S.value=e||``}function I(){let e=S.value;if(e&&N.value.layoutsByProject?.[e]){N.value.layout={...N.value.layoutsByProject[e]};return}}function L(e){let t=document.documentElement;e===`dark`?t.setAttribute(`data-theme`,`dark`):e===`light`?t.removeAttribute(`data-theme`):window.matchMedia(`(prefers-color-scheme: dark)`).matches?t.setAttribute(`data-theme`,`dark`):t.removeAttribute(`data-theme`)}function R(){let e=document.documentElement.getAttribute(`data-theme`)===`dark`?`light`:`dark`;return k.value=e,L(e),$({theme:e}).catch(e=>{console.error(`保存主题切换结果失败:`,e)}),e}L(k.value);let z=n(()=>({defaultCommitMessage:r.value,descriptionTemplates:a.value,scopeTemplates:o.value,messageTemplates:l.value,commandTemplates:u.value,lockedFiles:d.value,customCommands:p.value,orchestrations:m.value,startupItems:h.value,startupAutoRun:g.value,afterQuickPushAction:_.value,currentDirectory:S.value})),B=n(()=>!!(b.value&&b.value.trim()));async function V(){try{let e=await fetch(`/api/config/open-file`,{method:`POST`,headers:{"Content-Type":`application/json`}}),n=await e.json().catch(()=>({}));return e.ok&&n?.success?(t.success(c(`@D50BB:已打开系统配置文件`)),!0):(t.error(`${c(`@D50BB:打开系统配置文件失败: `)}${n?.error||``}`),!1)}catch(e){return t.error(`${c(`@D50BB:打开系统配置文件失败: `)}${e.message}`),!1}}async function H(e=!1){if(!e&&y.value&&!v.value)return console.log(c(`@D50BB:使用缓存的配置信息`)),z.value;v.value=!0;try{v.value=!0,console.log(c(`@D50BB:加载配置信息...`));let e=await fetch(`/api/config/getConfig`),n=await e.json().catch(()=>({}));if(!e.ok||n&&n.success===!1){let e=String(n?.error||c(`@D50BB:加载配置失败`)),r=String(n?.configPath||``),i=r?`\n${c(`@D50BB:配置文件`)}: ${r}`:``;return t.error(`${c(`@D50BB:加载配置失败: `)}${e}${i}`),b.value=e,x.value=r,null}if(b.value=``,x.value=``,r.value=n.defaultCommitMessage||``,a.value=n.descriptionTemplates||[],o.value=n.scopeTemplates||[],l.value=n.messageTemplates||[],u.value=n.commandTemplates||[],d.value=n.lockedFiles||[],p.value=n.customCommands||[],m.value=n.orchestrations||[],h.value=(n.startupItems||[]).map(e=>({id:String(e?.id??``),type:e?.type===`workflow`?`workflow`:`command`,refId:String(e?.refId??e?.commandId??``),createdAt:Number(e?.createdAt??Date.now()),enabled:typeof e?.enabled!=`boolean`||e.enabled})).filter(e=>e.id&&e.refId),g.value=n.startupAutoRun||!1,_.value={enabled:!!n?.afterQuickPushAction?.enabled,type:n?.afterQuickPushAction?.type===`workflow`?`workflow`:`command`,refId:String(n?.afterQuickPushAction?.refId||``).trim()},n.isStandardCommit!==void 0&&(T.value=!!n.isStandardCommit),n.skipHooks!==void 0&&(E.value=!!n.skipHooks),n.autoQuickPushOnEnter!==void 0&&(D.value=!!n.autoQuickPushOnEnter),n.autoSetDefaultMessage!==void 0&&(w.value=!!n.autoSetDefaultMessage),n.autoClosePushModal!==void 0&&(C.value=!!n.autoClosePushModal),n.pullBeforePush!==void 0&&(O.value=!!n.pullBeforePush),Array.isArray(n.models)&&(j.value=n.models),n.theme&&[`light`,`dark`,`auto`].includes(n.theme)&&(k.value=n.theme,L(n.theme)),n.locale&&[`zh-CN`,`en-US`].includes(n.locale)){A.value=n.locale,s(n.locale);let e=f();e.currentLocale=n.locale}if(n.currentDirectory&&(S.value=n.currentDirectory),n.ui==null){let e=e=>{try{return localStorage.getItem(e)}catch{return null}},t={},n=e(`zen-gitsync-layout-left-ratio`),r=e(`zen-gitsync-layout-mid-ratio`),i=e(`zen-gitsync-layout-right-ratio`),a=e(`zen-gitsync-layout-top-ratio`);if(n||r||i||a){let e=(e,t)=>{let n=e==null?NaN:parseFloat(e);return Number.isFinite(n)?n:t};t.layout={leftRatio:e(n,M.layout.leftRatio),midRatio:e(r,M.layout.midRatio),rightRatio:e(i,M.layout.rightRatio),topRatio:e(a,M.layout.topRatio)}}let o=e(`zen-gitsync-file-list-view-mode`);(o===`list`||o===`tree`)&&(t.fileListViewMode=o);let s=e(`zen-gitsync-filediff-ratio`)??e(`fileDiff.splitPercent`);if(s!=null){let e=parseFloat(s);Number.isFinite(e)&&(t.fileDiffSplitPercent=Math.min(85,Math.max(15,e)))}let c=e(`useTerminal`),l=e(`isConsoleExpanded`),u=e(`showTerminalSessions`),d=e(`zen-gitsync-commandconsole-ratio`);if(c!==null||l!==null||u!==null||d!=null){let e=d==null?NaN:parseFloat(d);t.commandConsole={useTerminal:c!==`false`,expanded:l!==`false`,showTerminalSessions:u==null||u===`true`,splitPercent:Number.isFinite(e)?Math.min(85,Math.max(15,e)):M.commandConsole.splitPercent}}let f=e(`zen-gitsync-editor-auto-save`);f!=null&&(t.editorAutoSave=f===`true`),Object.keys(t).length>0&&(N.value={...N.value,...t}),Object.keys(t).length>0&&q(t,{immediate:!0}).catch(e=>{console.error(`迁移 UI 设置到文件失败:`,e)});try{[`zen-gitsync-theme`,`zen-gitsync-locale`,`zen-gitsync-editor-auto-save`,`zen-gitsync-file-list-view-mode`,`zen-gitsync-filediff-ratio`,`fileDiff.splitPercent`,`isConsoleExpanded`,`useTerminal`,`showTerminalSessions`,`zen-gitsync-commandconsole-ratio`,`zen-gitsync-layout-left-ratio`,`zen-gitsync-layout-mid-ratio`,`zen-gitsync-layout-right-ratio`,`zen-gitsync-layout-top-ratio`,`locale`].forEach(e=>localStorage.removeItem(e))}catch{}}else{let e=n.ui.layoutsByProject&&typeof n.ui.layoutsByProject==`object`&&!Array.isArray(n.ui.layoutsByProject)?n.ui.layoutsByProject:{},t={};for(let[n,r]of Object.entries(e))if(r&&typeof r==`object`&&!Array.isArray(r)){let e=r;t[n]={leftRatio:Number.isFinite(Number(e.leftRatio))?Number(e.leftRatio):M.layout.leftRatio,midRatio:Number.isFinite(Number(e.midRatio))?Number(e.midRatio):M.layout.midRatio,rightRatio:Number.isFinite(Number(e.rightRatio))?Number(e.rightRatio):M.layout.rightRatio,topRatio:Number.isFinite(Number(e.topRatio))?Number(e.topRatio):M.layout.topRatio}}let r={...M.layout,...n.ui.layout||{}};N.value={layout:r,layoutsByProject:t,fileListViewMode:n.ui.fileListViewMode===`tree`?`tree`:`list`,fileDiffSplitPercent:Number.isFinite(Number(n.ui.fileDiffSplitPercent))?Math.min(85,Math.max(15,Number(n.ui.fileDiffSplitPercent))):M.fileDiffSplitPercent,commandConsole:{expanded:typeof n.ui.commandConsole?.expanded==`boolean`?n.ui.commandConsole.expanded:M.commandConsole.expanded,useTerminal:typeof n.ui.commandConsole?.useTerminal==`boolean`?n.ui.commandConsole.useTerminal:M.commandConsole.useTerminal,showTerminalSessions:typeof n.ui.commandConsole?.showTerminalSessions==`boolean`?n.ui.commandConsole.showTerminalSessions:M.commandConsole.showTerminalSessions,splitPercent:Number.isFinite(Number(n.ui.commandConsole?.splitPercent))?Math.min(85,Math.max(15,Number(n.ui.commandConsole.splitPercent))):M.commandConsole.splitPercent},editorAutoSave:typeof n.ui.editorAutoSave==`boolean`?n.ui.editorAutoSave:M.editorAutoSave,mindmapDir:typeof n.ui.mindmapDir==`string`?n.ui.mindmapDir:M.mindmapDir}}return I(),P.value=!0,y.value=!0,console.log(c(`@D50BB:配置信息加载完成`)),z.value}catch(e){return console.error(`加载配置失败:`,e),t.error(`${c(`@D50BB:加载配置失败: `)}${e.message}`),b.value=e.message,null}finally{v.value=!1}}async function U(){try{await fetch(`/api/config/save-commit-settings`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({isStandardCommit:T.value,skipHooks:E.value,autoQuickPushOnEnter:D.value,autoSetDefaultMessage:w.value,autoClosePushModal:C.value,pullBeforePush:O.value})})}catch(e){console.error(`保存提交设置失败:`,e)}}e([T,E,D,w,C,O],()=>{y.value&&U()});let W=null,G={};async function K(){if(W&&=(clearTimeout(W),null),Object.keys(G).length===0)return;let e=G;G={};try{await fetch(`/api/config/save-ui-settings`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})}catch(e){console.error(`保存 UI 设置失败:`,e)}}async function q(e,t={}){if(P.value){if(t.immediate){Object.assign(G,e),await K();return}Object.assign(G,e),W&&clearTimeout(W),W=setTimeout(()=>{K()},300)}}async function J(){N.value.layout={...M.layout};let e=S.value;return e&&(N.value.layoutsByProject={...N.value.layoutsByProject,[e]:{...N.value.layout}}),await q({layoutsByProject:N.value.layoutsByProject},{immediate:!0}),N.value.layout}e(()=>N.value.fileListViewMode,e=>{P.value&&q({fileListViewMode:e})}),e(()=>N.value.fileDiffSplitPercent,e=>{P.value&&q({fileDiffSplitPercent:e})}),e(()=>N.value.editorAutoSave,e=>{P.value&&q({editorAutoSave:e})}),e(()=>N.value.layout,e=>{if(!P.value)return;let t=S.value;t&&(N.value.layoutsByProject={...N.value.layoutsByProject,[t]:e},q({layoutsByProject:N.value.layoutsByProject}))},{deep:!0}),e(()=>N.value.commandConsole,e=>{P.value&&q({commandConsole:e})},{deep:!0}),typeof window<`u`&&window.addEventListener(`beforeunload`,()=>{K()});async function Y(e){try{let n=await(await fetch(`/api/config/saveDefaultMessage`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({defaultCommitMessage:e})})).json();return n.success?(r.value=e,t.success(c(`@D50BB:默认提交信息已保存`)),!0):(t.error(`${c(`@D50BB:保存失败: `)}${n.error}`),!1)}catch(e){return t.error(`${c(`@D50BB:保存失败: `)}${e.message}`),!1}}async function X(e){try{let n=await(await fetch(`/api/config/save-after-quick-push-action`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({afterQuickPushAction:{enabled:!!e?.enabled,type:e?.type===`workflow`?`workflow`:`command`,refId:String(e?.refId||``).trim()}})})).json();return n.success?(_.value={enabled:!!e?.enabled,type:e?.type===`workflow`?`workflow`:`command`,refId:String(e?.refId||``).trim()},!0):(t.error(`保存提交后启动项失败: ${n.error}`),!1)}catch(e){return t.error(`保存提交后启动项失败: ${e.message}`),!1}}async function Z(e,n){try{let r=await(await fetch(`/api/config/save-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({template:e,type:n})})).json();return r.success?(n===`description`?a.value.includes(e)||a.value.push(e):n===`scope`?o.value.includes(e)||o.value.push(e):n===`message`?l.value.includes(e)||l.value.push(e):n===`command`&&(u.value.includes(e)||u.value.push(e)),t.success(c(`@D50BB:模板已保存`)),!0):(t.error(`${c(`@D50BB:保存模板失败: `)}${r.error}`),!1)}catch(e){return t.error(`${c(`@D50BB:保存模板失败: `)}${e.message}`),!1}}async function ee(e,n){try{let r=await(await fetch(`/api/config/delete-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({template:e,type:n})})).json();return r.success?(n===`description`?a.value=a.value.filter(t=>t!==e):n===`scope`?o.value=o.value.filter(t=>t!==e):n===`message`?l.value=l.value.filter(t=>t!==e):n===`command`&&(u.value=u.value.filter(t=>t!==e)),t.success(c(`@D50BB:模板已删除`)),!0):(t.error(`${c(`@D50BB:删除模板失败: `)}${r.error}`),!1)}catch(e){return t.error(`${c(`@D50BB:删除模板失败: `)}${e.message}`),!1}}async function te(e,n,r){try{let i=await(await fetch(`/api/config/update-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({oldTemplate:e,newTemplate:n,type:r})})).json();if(i.success){if(r===`description`){let t=a.value.indexOf(e);t!==-1&&(a.value[t]=n)}else if(r===`scope`){let t=o.value.indexOf(e);t!==-1&&(o.value[t]=n)}else if(r===`message`){let t=l.value.indexOf(e);t!==-1&&(l.value[t]=n)}else if(r===`command`){let t=u.value.indexOf(e);t!==-1&&(u.value[t]=n)}return t.success(c(`@D50BB:模板已更新`)),!0}else return t.error(`${c(`@D50BB:更新模板失败: `)}${i.error}`),!1}catch(e){return t.error(`${c(`@D50BB:更新模板失败: `)}${e.message}`),!1}}async function ne(e,n){try{let r=await(await fetch(`/api/config/pin-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({template:e,type:n})})).json();return r.success?(n===`description`?(a.value=a.value.filter(t=>t!==e),a.value.unshift(e)):n===`scope`?(o.value=o.value.filter(t=>t!==e),o.value.unshift(e)):n===`message`?(l.value=l.value.filter(t=>t!==e),l.value.unshift(e)):n===`command`&&(u.value=u.value.filter(t=>t!==e),u.value.unshift(e)),t.success(c(`@D50BB:模板已置顶`)),!0):(t.error(`${c(`@D50BB:置顶模板失败: `)}${r.error}`),!1)}catch(e){return t.error(`${c(`@D50BB:置顶模板失败: `)}${e.message}`),!1}}async function Q(){try{let e=await(await fetch(`/api/locked-files`)).json();return e.success?(d.value=e.lockedFiles||[],e.lockedFiles):(t.error(`${c(`@D50BB:加载锁定文件列表失败: `)}${e.error}`),[])}catch(e){return console.error(`加载锁定文件列表失败:`,e),t.error(`${c(`@D50BB:加载锁定文件列表失败: `)}${e.message}`),[]}}async function re(e){try{let n=await(await fetch(`/api/lock-file`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return n.success?(await Q(),t.success(`${c(`@D50BB:文件已锁定: `)}${e}`),!0):(t.error(`${c(`@D50BB:锁定文件失败: `)}${n.error}`),!1)}catch(e){return console.error(`锁定文件失败:`,e),t.error(`${c(`@D50BB:锁定文件失败: `)}${e.message}`),!1}}async function ie(e){try{let n=await(await fetch(`/api/unlock-file`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return n.success?(await Q(),t.success(`${c(`@D50BB:文件已解锁: `)}${e}`),!0):(t.error(`${c(`@D50BB:解锁文件失败: `)}${n.error}`),!1)}catch(e){return console.error(`解锁文件失败:`,e),t.error(`${c(`@D50BB:解锁文件失败: `)}${e.message}`),!1}}async function ae(e){try{let t=await(await fetch(`/api/check-file-lock`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return t.success?t.isLocked:(console.error(`检查文件锁定状态失败:`,t.error),!1)}catch(e){return console.error(`检查文件锁定状态失败:`,e),!1}}async function oe(e){try{let n=await(await fetch(`/api/config/save-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({command:e})})).json();return n.success?(await H(!0),t.success(c(`@CMD01:命令已保存`)),!0):(t.error(`${c(`@CMD01:保存命令失败: `)}${n.error}`),!1)}catch(e){return t.error(`${c(`@CMD01:保存命令失败: `)}${e.message}`),!1}}async function se(e){try{let n=await(await fetch(`/api/config/delete-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e})})).json();return n.success?(await H(!0),t.success(c(`@CMD01:命令已删除`)),!0):(t.error(`${c(`@CMD01:删除命令失败: `)}${n.error}`),!1)}catch(e){return t.error(`${c(`@CMD01:删除命令失败: `)}${e.message}`),!1}}async function ce(e,n){try{let r=await(await fetch(`/api/config/update-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e,command:n})})).json();return r.success?(await H(!0),t.success(c(`@CMD01:命令已更新`)),!0):(t.error(`${c(`@CMD01:更新命令失败: `)}${r.error}`),!1)}catch(e){return t.error(`${c(`@CMD01:更新命令失败: `)}${e.message}`),!1}}async function le(e){try{let n=await(await fetch(`/api/config/pin-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e})})).json();return n.success?(await H(!0),!0):(t.error(n.error),!1)}catch(e){return t.error(e.message),!1}}async function ue(e){try{let n=await(await fetch(`/api/config/save-orchestration`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({orchestration:e})})).json();return n.success?(await H(!0),t.success(c(`@ORCH:编排已保存`)),n.orchestration||null):(t.error(`${c(`@ORCH:保存编排失败: `)}${n.error}`),null)}catch(e){return t.error(`${c(`@ORCH:保存编排失败: `)}${e.message}`),null}}async function de(e){try{let n=await(await fetch(`/api/config/delete-orchestration`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e})})).json();return n.success?(await H(!0),t.success(c(`@ORCH:编排已删除`)),!0):(t.error(`${c(`@ORCH:删除编排失败: `)}${n.error}`),!1)}catch(e){return t.error(`${c(`@ORCH:删除编排失败: `)}${e.message}`),!1}}async function fe(e,n){try{let r=await(await fetch(`/api/config/update-orchestration`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e,orchestration:n})})).json();return r.success?(await H(!0),t.success(c(`@ORCH:编排已更新`)),!0):(t.error(`${c(`@ORCH:更新编排失败: `)}${r.error}`),!1)}catch(e){return t.error(`${c(`@ORCH:更新编排失败: `)}${e.message}`),!1}}async function pe(e,n){try{let r=await(await fetch(`/api/config/save-startup-items`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({startupItems:e,startupAutoRun:n===void 0?g.value:n})})).json();return r.success?(h.value=e,n!==void 0&&(g.value=n),!0):(t.error(`保存启动项失败: ${r.error}`),!1)}catch(e){return t.error(`保存启动项失败: ${e.message}`),!1}}async function me(e){try{let n=await(await fetch(`/api/config/save-models`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({models:e})})).json();return n.success?(j.value=e,!0):(t.error(`${c(`@D50BB:保存模型失败: `)}${n.error}`),!1)}catch(e){return t.error(`${c(`@D50BB:保存模型失败: `)}${e.message}`),!1}}async function $(e){try{let n=await(await fetch(`/api/config/save-general-settings`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})).json();if(n.success){if(e.theme&&(k.value=e.theme,L(e.theme)),e.locale){A.value=e.locale,s(e.locale);let t=f();t.currentLocale=e.locale}return!0}else return t.error(`保存通用设置失败: ${n.error}`),!1}catch(e){return t.error(`保存通用设置失败: ${e.message}`),!1}}return{models:j,defaultCommitMessage:r,descriptionTemplates:a,scopeTemplates:o,messageTemplates:l,commandTemplates:u,lockedFiles:d,customCommands:p,orchestrations:m,startupItems:h,startupAutoRun:g,afterQuickPushAction:_,isLoading:v,isLoaded:y,configLoadError:b,configFilePath:x,hasConfigLoadError:B,currentDirectory:S,config:z,autoClosePushModal:C,autoSetDefaultMessage:w,isStandardCommit:T,skipHooks:E,autoQuickPushOnEnter:D,pullBeforePush:O,theme:k,locale:A,ui:N,isUiLoaded:P,loadConfig:H,setCurrentDirectory:F,openSystemConfigFile:V,saveTemplate:Z,saveModels:me,saveGeneralSettings:$,saveUiSettings:q,resetUiLayout:J,applyTheme:L,toggleTheme:R,saveDefaultMessage:Y,deleteTemplate:ee,updateTemplate:te,pinTemplate:ne,loadLockedFiles:Q,lockFile:re,unlockFile:ie,isFileLocked:ae,saveCustomCommand:oe,deleteCustomCommand:se,updateCustomCommand:ce,pinCustomCommand:le,saveOrchestration:ue,deleteOrchestration:de,updateOrchestration:fe,saveStartupItems:pe,saveAfterQuickPushAction:X,saveCommitSettings:U}});export{f as n,p as t};
1
+ import"./rolldown-runtime-DAXXjFlN.js";import{Jn as e,a as t,mn as n,n as r,sr as i,t as a}from"./element-plus-BeKPY2v-.js";import{f as o}from"./vendor-BiOPaz96.js";import{a as s,n as c,r as l}from"./_plugin-vue_export-helper-CqCl-blp.js";var u={"zh-CN":r,"en-US":a};function d(e){return u[e]||r}var f=o(`locale`,()=>{let e=i(l()),t=n(()=>d(e.value));async function r(t){s(t),e.value=t;let n=p();n.locale!==t&&await n.saveGeneralSettings({locale:t})}return{currentLocale:e,elementPlusLocale:t,changeLocale:r}}),p=o(`config`,()=>{let r=i(``),a=i([]),o=i([]),l=i([]),u=i([]),d=i([]),p=i([]),m=i([]),h=i([]),g=i(!1),_=i({enabled:!1,type:`command`,refId:``}),v=i(!1),y=i(!1),b=i(``),x=i(``),S=i(``),C=i(!0),w=i(!1),T=i(!0),E=i(!1),D=i(!1),O=i(!0),k=i(`light`),A=i(`zh-CN`),j=i([]),M={layout:{leftRatio:.25,midRatio:.375,rightRatio:.375,topRatio:.5},layoutsByProject:{},fileListViewMode:`list`,fileDiffSplitPercent:35,commandConsole:{expanded:!0,useTerminal:!0,showTerminalSessions:!0,splitPercent:25},editorAutoSave:!1,mindmapDir:``},N=i(JSON.parse(JSON.stringify(M))),P=i(!1);function F(e){S.value=e||``}function I(){let e=S.value;if(e&&N.value.layoutsByProject?.[e]){N.value.layout={...N.value.layoutsByProject[e]};return}}function L(e){let t=document.documentElement;e===`dark`?t.setAttribute(`data-theme`,`dark`):e===`light`?t.removeAttribute(`data-theme`):window.matchMedia(`(prefers-color-scheme: dark)`).matches?t.setAttribute(`data-theme`,`dark`):t.removeAttribute(`data-theme`)}function R(){let e=document.documentElement.getAttribute(`data-theme`)===`dark`?`light`:`dark`;return k.value=e,L(e),$({theme:e}).catch(e=>{console.error(`保存主题切换结果失败:`,e)}),e}L(k.value);let z=n(()=>({defaultCommitMessage:r.value,descriptionTemplates:a.value,scopeTemplates:o.value,messageTemplates:l.value,commandTemplates:u.value,lockedFiles:d.value,customCommands:p.value,orchestrations:m.value,startupItems:h.value,startupAutoRun:g.value,afterQuickPushAction:_.value,currentDirectory:S.value})),B=n(()=>!!(b.value&&b.value.trim()));async function V(){try{let e=await fetch(`/api/config/open-file`,{method:`POST`,headers:{"Content-Type":`application/json`}}),n=await e.json().catch(()=>({}));return e.ok&&n?.success?(t.success(c(`@D50BB:已打开系统配置文件`)),!0):(t.error(`${c(`@D50BB:打开系统配置文件失败: `)}${n?.error||``}`),!1)}catch(e){return t.error(`${c(`@D50BB:打开系统配置文件失败: `)}${e.message}`),!1}}async function H(e=!1){if(!e&&y.value&&!v.value)return console.log(c(`@D50BB:使用缓存的配置信息`)),z.value;v.value=!0;try{v.value=!0,console.log(c(`@D50BB:加载配置信息...`));let e=await fetch(`/api/config/getConfig`),n=await e.json().catch(()=>({}));if(!e.ok||n&&n.success===!1){let e=String(n?.error||c(`@D50BB:加载配置失败`)),r=String(n?.configPath||``),i=r?`\n${c(`@D50BB:配置文件`)}: ${r}`:``;return t.error(`${c(`@D50BB:加载配置失败: `)}${e}${i}`),b.value=e,x.value=r,null}if(b.value=``,x.value=``,r.value=n.defaultCommitMessage||``,a.value=n.descriptionTemplates||[],o.value=n.scopeTemplates||[],l.value=n.messageTemplates||[],u.value=n.commandTemplates||[],d.value=n.lockedFiles||[],p.value=n.customCommands||[],m.value=n.orchestrations||[],h.value=(n.startupItems||[]).map(e=>({id:String(e?.id??``),type:e?.type===`workflow`?`workflow`:`command`,refId:String(e?.refId??e?.commandId??``),createdAt:Number(e?.createdAt??Date.now()),enabled:typeof e?.enabled!=`boolean`||e.enabled})).filter(e=>e.id&&e.refId),g.value=n.startupAutoRun||!1,_.value={enabled:!!n?.afterQuickPushAction?.enabled,type:n?.afterQuickPushAction?.type===`workflow`?`workflow`:`command`,refId:String(n?.afterQuickPushAction?.refId||``).trim()},n.isStandardCommit!==void 0&&(T.value=!!n.isStandardCommit),n.skipHooks!==void 0&&(E.value=!!n.skipHooks),n.autoQuickPushOnEnter!==void 0&&(D.value=!!n.autoQuickPushOnEnter),n.autoSetDefaultMessage!==void 0&&(w.value=!!n.autoSetDefaultMessage),n.autoClosePushModal!==void 0&&(C.value=!!n.autoClosePushModal),n.pullBeforePush!==void 0&&(O.value=!!n.pullBeforePush),Array.isArray(n.models)&&(j.value=n.models),n.theme&&[`light`,`dark`,`auto`].includes(n.theme)&&(k.value=n.theme,L(n.theme)),n.locale&&[`zh-CN`,`en-US`].includes(n.locale)){A.value=n.locale,s(n.locale);let e=f();e.currentLocale=n.locale}if(n.currentDirectory&&(S.value=n.currentDirectory),n.ui==null){let e=e=>{try{return localStorage.getItem(e)}catch{return null}},t={},n=e(`zen-gitsync-layout-left-ratio`),r=e(`zen-gitsync-layout-mid-ratio`),i=e(`zen-gitsync-layout-right-ratio`),a=e(`zen-gitsync-layout-top-ratio`);if(n||r||i||a){let e=(e,t)=>{let n=e==null?NaN:parseFloat(e);return Number.isFinite(n)?n:t};t.layout={leftRatio:e(n,M.layout.leftRatio),midRatio:e(r,M.layout.midRatio),rightRatio:e(i,M.layout.rightRatio),topRatio:e(a,M.layout.topRatio)}}let o=e(`zen-gitsync-file-list-view-mode`);(o===`list`||o===`tree`)&&(t.fileListViewMode=o);let s=e(`zen-gitsync-filediff-ratio`)??e(`fileDiff.splitPercent`);if(s!=null){let e=parseFloat(s);Number.isFinite(e)&&(t.fileDiffSplitPercent=Math.min(85,Math.max(15,e)))}let c=e(`useTerminal`),l=e(`isConsoleExpanded`),u=e(`showTerminalSessions`),d=e(`zen-gitsync-commandconsole-ratio`);if(c!==null||l!==null||u!==null||d!=null){let e=d==null?NaN:parseFloat(d);t.commandConsole={useTerminal:c!==`false`,expanded:l!==`false`,showTerminalSessions:u==null||u===`true`,splitPercent:Number.isFinite(e)?Math.min(85,Math.max(15,e)):M.commandConsole.splitPercent}}let f=e(`zen-gitsync-editor-auto-save`);f!=null&&(t.editorAutoSave=f===`true`),Object.keys(t).length>0&&(N.value={...N.value,...t}),Object.keys(t).length>0&&q(t,{immediate:!0}).catch(e=>{console.error(`迁移 UI 设置到文件失败:`,e)});try{[`zen-gitsync-theme`,`zen-gitsync-locale`,`zen-gitsync-editor-auto-save`,`zen-gitsync-file-list-view-mode`,`zen-gitsync-filediff-ratio`,`fileDiff.splitPercent`,`isConsoleExpanded`,`useTerminal`,`showTerminalSessions`,`zen-gitsync-commandconsole-ratio`,`zen-gitsync-layout-left-ratio`,`zen-gitsync-layout-mid-ratio`,`zen-gitsync-layout-right-ratio`,`zen-gitsync-layout-top-ratio`,`locale`].forEach(e=>localStorage.removeItem(e))}catch{}}else{let e=n.ui.layoutsByProject&&typeof n.ui.layoutsByProject==`object`&&!Array.isArray(n.ui.layoutsByProject)?n.ui.layoutsByProject:{},t={};for(let[n,r]of Object.entries(e))if(r&&typeof r==`object`&&!Array.isArray(r)){let e=r;t[n]={leftRatio:Number.isFinite(Number(e.leftRatio))?Number(e.leftRatio):M.layout.leftRatio,midRatio:Number.isFinite(Number(e.midRatio))?Number(e.midRatio):M.layout.midRatio,rightRatio:Number.isFinite(Number(e.rightRatio))?Number(e.rightRatio):M.layout.rightRatio,topRatio:Number.isFinite(Number(e.topRatio))?Number(e.topRatio):M.layout.topRatio}}let r={...M.layout,...n.ui.layout||{}};N.value={layout:r,layoutsByProject:t,fileListViewMode:n.ui.fileListViewMode===`tree`?`tree`:`list`,fileDiffSplitPercent:Number.isFinite(Number(n.ui.fileDiffSplitPercent))?Math.min(85,Math.max(15,Number(n.ui.fileDiffSplitPercent))):M.fileDiffSplitPercent,commandConsole:{expanded:typeof n.ui.commandConsole?.expanded==`boolean`?n.ui.commandConsole.expanded:M.commandConsole.expanded,useTerminal:typeof n.ui.commandConsole?.useTerminal==`boolean`?n.ui.commandConsole.useTerminal:M.commandConsole.useTerminal,showTerminalSessions:typeof n.ui.commandConsole?.showTerminalSessions==`boolean`?n.ui.commandConsole.showTerminalSessions:M.commandConsole.showTerminalSessions,splitPercent:Number.isFinite(Number(n.ui.commandConsole?.splitPercent))?Math.min(85,Math.max(15,Number(n.ui.commandConsole.splitPercent))):M.commandConsole.splitPercent},editorAutoSave:typeof n.ui.editorAutoSave==`boolean`?n.ui.editorAutoSave:M.editorAutoSave,mindmapDir:typeof n.ui.mindmapDir==`string`?n.ui.mindmapDir:M.mindmapDir}}return I(),P.value=!0,y.value=!0,console.log(c(`@D50BB:配置信息加载完成`)),z.value}catch(e){return console.error(`加载配置失败:`,e),t.error(`${c(`@D50BB:加载配置失败: `)}${e.message}`),b.value=e.message,null}finally{v.value=!1}}async function U(){try{await fetch(`/api/config/save-commit-settings`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({isStandardCommit:T.value,skipHooks:E.value,autoQuickPushOnEnter:D.value,autoSetDefaultMessage:w.value,autoClosePushModal:C.value,pullBeforePush:O.value})})}catch(e){console.error(`保存提交设置失败:`,e)}}e([T,E,D,w,C,O],()=>{y.value&&U()});let W=null,G={};async function K(){if(W&&=(clearTimeout(W),null),Object.keys(G).length===0)return;let e=G;G={};try{await fetch(`/api/config/save-ui-settings`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})}catch(e){console.error(`保存 UI 设置失败:`,e)}}async function q(e,t={}){if(P.value){if(t.immediate){Object.assign(G,e),await K();return}Object.assign(G,e),W&&clearTimeout(W),W=setTimeout(()=>{K()},300)}}async function J(){N.value.layout={...M.layout};let e=S.value;return e&&(N.value.layoutsByProject={...N.value.layoutsByProject,[e]:{...N.value.layout}}),await q({layoutsByProject:N.value.layoutsByProject},{immediate:!0}),N.value.layout}e(()=>N.value.fileListViewMode,e=>{P.value&&q({fileListViewMode:e})}),e(()=>N.value.fileDiffSplitPercent,e=>{P.value&&q({fileDiffSplitPercent:e})}),e(()=>N.value.editorAutoSave,e=>{P.value&&q({editorAutoSave:e})}),e(()=>N.value.layout,e=>{if(!P.value)return;let t=S.value;t&&(N.value.layoutsByProject={...N.value.layoutsByProject,[t]:e},q({layoutsByProject:N.value.layoutsByProject}))},{deep:!0}),e(()=>N.value.commandConsole,e=>{P.value&&q({commandConsole:e})},{deep:!0}),typeof window<`u`&&window.addEventListener(`beforeunload`,()=>{K()});async function Y(e){try{let n=await(await fetch(`/api/config/saveDefaultMessage`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({defaultCommitMessage:e})})).json();return n.success?(r.value=e,t.success(c(`@D50BB:默认提交信息已保存`)),!0):(t.error(`${c(`@D50BB:保存失败: `)}${n.error}`),!1)}catch(e){return t.error(`${c(`@D50BB:保存失败: `)}${e.message}`),!1}}async function X(e){try{let n=await(await fetch(`/api/config/save-after-quick-push-action`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({afterQuickPushAction:{enabled:!!e?.enabled,type:e?.type===`workflow`?`workflow`:`command`,refId:String(e?.refId||``).trim()}})})).json();return n.success?(_.value={enabled:!!e?.enabled,type:e?.type===`workflow`?`workflow`:`command`,refId:String(e?.refId||``).trim()},!0):(t.error(`保存提交后启动项失败: ${n.error}`),!1)}catch(e){return t.error(`保存提交后启动项失败: ${e.message}`),!1}}async function Z(e,n){try{let r=await(await fetch(`/api/config/save-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({template:e,type:n})})).json();return r.success?(n===`description`?a.value.includes(e)||a.value.push(e):n===`scope`?o.value.includes(e)||o.value.push(e):n===`message`?l.value.includes(e)||l.value.push(e):n===`command`&&(u.value.includes(e)||u.value.push(e)),t.success(c(`@D50BB:模板已保存`)),!0):(t.error(`${c(`@D50BB:保存模板失败: `)}${r.error}`),!1)}catch(e){return t.error(`${c(`@D50BB:保存模板失败: `)}${e.message}`),!1}}async function ee(e,n){try{let r=await(await fetch(`/api/config/delete-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({template:e,type:n})})).json();return r.success?(n===`description`?a.value=a.value.filter(t=>t!==e):n===`scope`?o.value=o.value.filter(t=>t!==e):n===`message`?l.value=l.value.filter(t=>t!==e):n===`command`&&(u.value=u.value.filter(t=>t!==e)),t.success(c(`@D50BB:模板已删除`)),!0):(t.error(`${c(`@D50BB:删除模板失败: `)}${r.error}`),!1)}catch(e){return t.error(`${c(`@D50BB:删除模板失败: `)}${e.message}`),!1}}async function te(e,n,r){try{let i=await(await fetch(`/api/config/update-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({oldTemplate:e,newTemplate:n,type:r})})).json();if(i.success){if(r===`description`){let t=a.value.indexOf(e);t!==-1&&(a.value[t]=n)}else if(r===`scope`){let t=o.value.indexOf(e);t!==-1&&(o.value[t]=n)}else if(r===`message`){let t=l.value.indexOf(e);t!==-1&&(l.value[t]=n)}else if(r===`command`){let t=u.value.indexOf(e);t!==-1&&(u.value[t]=n)}return t.success(c(`@D50BB:模板已更新`)),!0}else return t.error(`${c(`@D50BB:更新模板失败: `)}${i.error}`),!1}catch(e){return t.error(`${c(`@D50BB:更新模板失败: `)}${e.message}`),!1}}async function ne(e,n){try{let r=await(await fetch(`/api/config/pin-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({template:e,type:n})})).json();return r.success?(n===`description`?(a.value=a.value.filter(t=>t!==e),a.value.unshift(e)):n===`scope`?(o.value=o.value.filter(t=>t!==e),o.value.unshift(e)):n===`message`?(l.value=l.value.filter(t=>t!==e),l.value.unshift(e)):n===`command`&&(u.value=u.value.filter(t=>t!==e),u.value.unshift(e)),t.success(c(`@D50BB:模板已置顶`)),!0):(t.error(`${c(`@D50BB:置顶模板失败: `)}${r.error}`),!1)}catch(e){return t.error(`${c(`@D50BB:置顶模板失败: `)}${e.message}`),!1}}async function Q(){try{let e=await(await fetch(`/api/locked-files`)).json();return e.success?(d.value=e.lockedFiles||[],e.lockedFiles):(t.error(`${c(`@D50BB:加载锁定文件列表失败: `)}${e.error}`),[])}catch(e){return console.error(`加载锁定文件列表失败:`,e),t.error(`${c(`@D50BB:加载锁定文件列表失败: `)}${e.message}`),[]}}async function re(e){try{let n=await(await fetch(`/api/lock-file`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return n.success?(await Q(),t.success(`${c(`@D50BB:文件已锁定: `)}${e}`),!0):(t.error(`${c(`@D50BB:锁定文件失败: `)}${n.error}`),!1)}catch(e){return console.error(`锁定文件失败:`,e),t.error(`${c(`@D50BB:锁定文件失败: `)}${e.message}`),!1}}async function ie(e){try{let n=await(await fetch(`/api/unlock-file`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return n.success?(await Q(),t.success(`${c(`@D50BB:文件已解锁: `)}${e}`),!0):(t.error(`${c(`@D50BB:解锁文件失败: `)}${n.error}`),!1)}catch(e){return console.error(`解锁文件失败:`,e),t.error(`${c(`@D50BB:解锁文件失败: `)}${e.message}`),!1}}async function ae(e){try{let t=await(await fetch(`/api/check-file-lock`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return t.success?t.isLocked:(console.error(`检查文件锁定状态失败:`,t.error),!1)}catch(e){return console.error(`检查文件锁定状态失败:`,e),!1}}async function oe(e){try{let n=await(await fetch(`/api/config/save-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({command:e})})).json();return n.success?(await H(!0),t.success(c(`@CMD01:命令已保存`)),!0):(t.error(`${c(`@CMD01:保存命令失败: `)}${n.error}`),!1)}catch(e){return t.error(`${c(`@CMD01:保存命令失败: `)}${e.message}`),!1}}async function se(e){try{let n=await(await fetch(`/api/config/delete-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e})})).json();return n.success?(await H(!0),t.success(c(`@CMD01:命令已删除`)),!0):(t.error(`${c(`@CMD01:删除命令失败: `)}${n.error}`),!1)}catch(e){return t.error(`${c(`@CMD01:删除命令失败: `)}${e.message}`),!1}}async function ce(e,n){try{let r=await(await fetch(`/api/config/update-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e,command:n})})).json();return r.success?(await H(!0),t.success(c(`@CMD01:命令已更新`)),!0):(t.error(`${c(`@CMD01:更新命令失败: `)}${r.error}`),!1)}catch(e){return t.error(`${c(`@CMD01:更新命令失败: `)}${e.message}`),!1}}async function le(e){try{let n=await(await fetch(`/api/config/pin-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e})})).json();return n.success?(await H(!0),!0):(t.error(n.error),!1)}catch(e){return t.error(e.message),!1}}async function ue(e){try{let n=await(await fetch(`/api/config/save-orchestration`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({orchestration:e})})).json();return n.success?(await H(!0),t.success(c(`@ORCH:编排已保存`)),n.orchestration||null):(t.error(`${c(`@ORCH:保存编排失败: `)}${n.error}`),null)}catch(e){return t.error(`${c(`@ORCH:保存编排失败: `)}${e.message}`),null}}async function de(e){try{let n=await(await fetch(`/api/config/delete-orchestration`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e})})).json();return n.success?(await H(!0),t.success(c(`@ORCH:编排已删除`)),!0):(t.error(`${c(`@ORCH:删除编排失败: `)}${n.error}`),!1)}catch(e){return t.error(`${c(`@ORCH:删除编排失败: `)}${e.message}`),!1}}async function fe(e,n){try{let r=await(await fetch(`/api/config/update-orchestration`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e,orchestration:n})})).json();return r.success?(await H(!0),t.success(c(`@ORCH:编排已更新`)),!0):(t.error(`${c(`@ORCH:更新编排失败: `)}${r.error}`),!1)}catch(e){return t.error(`${c(`@ORCH:更新编排失败: `)}${e.message}`),!1}}async function pe(e,n){try{let r=await(await fetch(`/api/config/save-startup-items`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({startupItems:e,startupAutoRun:n===void 0?g.value:n})})).json();return r.success?(h.value=e,n!==void 0&&(g.value=n),!0):(t.error(`保存启动项失败: ${r.error}`),!1)}catch(e){return t.error(`保存启动项失败: ${e.message}`),!1}}async function me(e){try{let n=await(await fetch(`/api/config/save-models`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({models:e})})).json();return n.success?(j.value=e,!0):(t.error(`${c(`@D50BB:保存模型失败: `)}${n.error}`),!1)}catch(e){return t.error(`${c(`@D50BB:保存模型失败: `)}${e.message}`),!1}}async function $(e){try{let n=await(await fetch(`/api/config/save-general-settings`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})).json();if(n.success){if(e.theme&&(k.value=e.theme,L(e.theme)),e.locale){A.value=e.locale,s(e.locale);let t=f();t.currentLocale=e.locale}return!0}else return t.error(`保存通用设置失败: ${n.error}`),!1}catch(e){return t.error(`保存通用设置失败: ${e.message}`),!1}}return{models:j,defaultCommitMessage:r,descriptionTemplates:a,scopeTemplates:o,messageTemplates:l,commandTemplates:u,lockedFiles:d,customCommands:p,orchestrations:m,startupItems:h,startupAutoRun:g,afterQuickPushAction:_,isLoading:v,isLoaded:y,configLoadError:b,configFilePath:x,hasConfigLoadError:B,currentDirectory:S,config:z,autoClosePushModal:C,autoSetDefaultMessage:w,isStandardCommit:T,skipHooks:E,autoQuickPushOnEnter:D,pullBeforePush:O,theme:k,locale:A,ui:N,isUiLoaded:P,loadConfig:H,setCurrentDirectory:F,openSystemConfigFile:V,saveTemplate:Z,saveModels:me,saveGeneralSettings:$,saveUiSettings:q,resetUiLayout:J,applyTheme:L,toggleTheme:R,saveDefaultMessage:Y,deleteTemplate:ee,updateTemplate:te,pinTemplate:ne,loadLockedFiles:Q,lockFile:re,unlockFile:ie,isFileLocked:ae,saveCustomCommand:oe,deleteCustomCommand:se,updateCustomCommand:ce,pinCustomCommand:le,saveOrchestration:ue,deleteOrchestration:de,updateOrchestration:fe,saveStartupItems:pe,saveAfterQuickPushAction:X,saveCommitSettings:U}});export{f as n,p as t};
@@ -1 +1 @@
1
- import{mn as e,sr as t}from"./element-plus-BeKPY2v-.js";import{f as n}from"./vendor-MTP3JiRt.js";var r=n(`editorTabs`,()=>{let n=t(0);function r(e){n.value=Math.max(0,e|0)}return{dirtyCount:n,hasDirty:e(()=>n.value>0),setDirtyCount:r}});export{r as t};
1
+ import{mn as e,sr as t}from"./element-plus-BeKPY2v-.js";import{f as n}from"./vendor-BiOPaz96.js";var r=n(`editorTabs`,()=>{let n=t(0);function r(e){n.value=Math.max(0,e|0)}return{dirtyCount:n,hasDirty:e(()=>n.value>0),setDirtyCount:r}});export{r as t};
@@ -1,4 +1,4 @@
1
- import"./rolldown-runtime-DAXXjFlN.js";import{Ln as e,Rn as t,a as n,mn as r,sr as i}from"./element-plus-BeKPY2v-.js";import{f as a}from"./vendor-MTP3JiRt.js";import{n as o}from"./_plugin-vue_export-helper-YXQ3ciBX.js";import{t as ee}from"./socket-io-BC2cap_-.js";import{t as te}from"./configStore-Bx8x9Mmq.js";var s=new Set([`5173`,`4173`,`5544`]),c=3e3;function l(){if(typeof window>`u`)return c;let e=window.location.port||`80`;if(s.has(e)){{let e=5545;if(!Number.isNaN(e))return e}return c}let t=parseInt(e,10);return Number.isNaN(t)?c:t}var u=800,ne=l(),d=a(`git`,()=>{let a=te(),s=i(``),c=i([]),l=i(``),d=i(``),f=i(!1),p=i(!1),m=i(!1),h=i(0),g=i(``),_=i(!1),v=i(!1),y=i(!1),b=i(!1),x=i(!1),re=i(!1),S=i(0),C=i(0),w=i(!1),T=i(``),ie=i(0),E=i(``),D=i(null),O=i(``),ae=i(``),k=i([]),oe=i({staged:[],unstaged:[],untracked:[]}),A=i([]),j=i(!1),M=i(!1),N=i(!1),P=i(!1),F=i(!1),I=i(1),L=i(!0),R=i(0),z=i([]),B=i(!1),se=i(!1),V=i(!1),H=i(!1);function ce(){s.value=``,c.value=[],l.value=``,d.value=``,f.value=!1,p.value=!1,m.value=!1,h.value=0,S.value=0,C.value=0,w.value=!1,T.value=``,ie.value=0,v.value=!1,y.value=!1,b.value=!1,x.value=!1,g.value=``,_.value=!1,k.value=[],oe.value={staged:[],unstaged:[],untracked:[]},A.value=[],j.value=!1,M.value=!1,N.value=!1,P.value=!1,F.value=!1,I.value=1,L.value=!0,R.value=0}async function U(e=!1,t=!1){if(m.value)try{console.log(o(`@C298B:获取分支状态...`));let n=`/api/branch-status`,r=[];e&&r.push(`force=true`),t&&r.push(`countOnly=true`),r.length>0&&(n+=`?`+r.join(`&`));let i=await(await fetch(n)).json();i&&(S.value=i.ahead||0,C.value=i.behind||0,w.value=i.hasUpstream||!1,T.value=i.upstreamBranch||``,console.log(`${o(`@C298B:分支状态更新:领先 `)}${S.value}${o(`@C298B: 个提交,落后 `)}${C.value}${o(`@C298B: 个提交,上游分支:`)}${w.value?T.value:o(`@C298B:无`)}`))}catch(e){console.error(`获取分支状态失败:`,e),S.value=0,C.value=0,w.value=!1,T.value=``}}async function le(){let e=Date.now();if(e-h.value<1e3)return console.log(`使用缓存的Git仓库状态:`,m.value?`是`:o(`@C298B:不是`)),m.value;try{let t=await(await fetch(`/api/current_directory`)).json();return m.value=t.isGitRepo===!0,h.value=e,console.log(`${o(`@C298B:当前目录`)}${m.value?o(`@C298B:是`):o(`@C298B:不是`)}${o(`@C298B:Git仓库`)}`),m.value}catch(t){return console.error(`检查Git仓库状态失败:`,t),m.value=!1,h.value=e,!1}}async function W(e=!1){try{let t=await(await fetch(e?`/api/branch?force=true`:`/api/branch`)).json();t.branch&&(s.value=t.branch,console.log(`${o(`@C298B:当前分支更新为: `)}${t.branch}${e?o(`@C298B: (强制刷新)`):``}`))}catch(e){console.error(`获取分支信息失败:`,e)}}async function ue(){if(m.value)try{console.log(o(`@C298B:获取所有分支...`));let e=await(await fetch(`/api/branches`)).json();e.branches&&Array.isArray(e.branches)&&(c.value=e.branches,ie.value=Date.now(),console.log(`${o(`@C298B:获取到`)}${e.branches.length}${o(`@C298B:个分支`)}`))}catch(e){console.error(`获取所有分支信息失败:`,e)}}async function de(e){console.log(`切换到分支:`,e);try{f.value=!0;let t=await(await fetch(`/api/checkout`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({branch:e})})).json();return t.success?(n({message:`${o(`@C298B:已切换到分支: `)}${e}`,type:`success`}),await W(!0),await U(!0),!0):(n({message:`${o(`@C298B:切换分支失败: `)}${t.error}`,type:`error`}),!1)}catch(e){return n({message:`${o(`@C298B:切换分支失败: `)}${e.message}`,type:`error`}),!1}finally{f.value=!1}}async function fe(){try{let e=await(await fetch(`/api/user-info`)).json();e.name&&e.email&&(l.value=e.name,d.value=e.email)}catch(e){console.error(`获取用户信息失败:`,e)}}async function pe(e,t){if(!e.trim())return n({message:o(`@C298B:分支名称不能为空`),type:`warning`}),!1;try{p.value=!0;let r=await(await fetch(`/api/create-branch`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({newBranchName:e,baseBranch:t||s.value})})).json();return r.success?(n({message:`${o(`@C298B:已创建并切换到分支: `)}${e}`,type:`success`}),await W(!0),await U(!0),await ue(),!0):(n({message:`${o(`@C298B:创建分支失败: `)}${r.error}`,type:`error`}),!1)}catch(e){return n({message:`${o(`@C298B:创建分支失败: `)}${e.message}`,type:`error`}),!1}finally{p.value=!1}}async function me(){try{let e=await(await fetch(`/api/clear-user-config`,{method:`POST`})).json();return e.success?(l.value=``,d.value=``,n({message:o(`@C298B:已清除Git用户配置`),type:`success`}),!0):(n({message:`${o(`@C298B:清除配置失败: `)}${e.error}`,type:`error`}),!1)}catch(e){return n({message:`${o(`@C298B:清除配置失败: `)}${e.message}`,type:`error`}),!1}}async function he(e,t){try{let r=await(await fetch(`/api/restore-user-config`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e,email:t})})).json();return r.success?(l.value=e,d.value=t,n({message:o(`@C298B:已恢复Git用户配置`),type:`success`}),!0):(n({message:`${o(`@C298B:恢复配置失败: `)}${r.error}`,type:`error`}),!1)}catch(e){return n({message:`${o(`@C298B:恢复配置失败: `)}${e.message}`,type:`error`}),!1}}async function ge(){if(!m.value)return n({message:o(`@C298B:当前目录不是Git仓库`),type:`warning`}),{success:!1,needsMerge:!1,error:o(`@C298B:当前目录不是Git仓库`),fullError:``,pullOutput:``};try{y.value=!0;let e=await(await fetch(`/api/pull`,{method:`POST`})).json();if(e.success){n({message:o(`@C298B:拉取成功`),type:`success`}),await U(!0);let t=(e.message||``).toString(),r=!/already up to date|已经是最新的|already up-to-date/i.test(t);return r&&await xe(),{success:!0,hadChanges:r}}else return{success:!1,needsMerge:e.needsMerge||!1,error:e.error||``,fullError:e.fullError||e.error||``,pullOutput:e.pullOutput||``}}catch(e){return{success:!1,needsMerge:!1,error:e.message,fullError:e.message,pullOutput:``}}finally{y.value=!1}}async function _e(){if(!m.value)return!1;if(!w.value)return console.log(`[bootFetch] no upstream, skip`),!1;try{b.value=!0;let e=C.value;console.log(`[bootFetch] start silent fetch --all, beforeBehind=${e}`);let t=await(await fetch(`/api/fetch-all`,{method:`POST`})).json();if(!t.success)return console.warn(`[bootFetch] fetch --all failed:`,t.error),!1;await U(!0);let n=C.value,r=n<e;return console.log(`[bootFetch] afterBehind=${n}, hasNewRemoteCommits=${r}`),r?(await G(!0),!0):!1}catch(e){return console.warn(`[bootFetch] silent fetch error (ignored):`,e.message),!1}finally{b.value=!1}}async function ve(){if(!m.value)return n({message:o(`@C298B:当前目录不是Git仓库`),type:`warning`}),!1;try{b.value=!0;let e=await(await fetch(`/api/fetch-all`,{method:`POST`})).json();return e.success?(n({message:o(`@C298B:获取所有远程分支信息成功`),type:`success`}),await U(),!0):(n({message:`${o(`@C298B:获取远程分支信息失败: `)}${e.error}`,type:`error`}),!1)}catch(e){return n({message:`${o(`@C298B:获取远程分支信息失败: `)}${e.message}`,type:`error`}),!1}finally{b.value=!1}}async function ye(){D.value&&(Je(),D.value.disconnect());try{let e=`http://localhost:${ne}`;if(console.log(`尝试连接Socket.IO服务器:`,e),D.value=ee(e,{reconnectionDelayMax:1e4,reconnection:!0,reconnectionAttempts:10,reconnectionDelay:1e3,timeout:2e4,autoConnect:!0,forceNew:!0,transports:[`websocket`,`polling`]}),!D.value){console.error(`Socket.IO初始化失败: socket为null`);return}console.log(o(`@C298B:Socket.IO客户端已创建,开始注册事件监听器...`)),D.value.on(`connect`,()=>{console.log(`✅ Socket.IO连接成功,事件监听器已生效,Socket ID:`,D.value?.id)}),D.value.on(`project_info`,e=>{O.value=e.projectPath,ae.value=e.projectRoomId,console.log(`${o(`@C298B:当前项目: `)}${e.projectPath}`),console.log(`${o(`@C298B:房间ID: `)}${e.projectRoomId}`)}),D.value.on(`project_changed`,e=>{console.log(`${o(`@C298B:项目已切换: `)}${e.oldProjectPath} -> ${e.newProjectPath}`),O.value=e.newProjectPath,ae.value=e.newProjectRoomId,D.value&&D.value.emit(`join_room`,e.newProjectRoomId),console.log(`${o(`@C298B:已加入新项目房间: `)}${e.newProjectRoomId}`)}),D.value.on(`disconnect`,e=>{console.log(`与Socket.IO服务器断开连接:`,e)}),D.value.on(`git_status_update`,e=>{if(console.log(`✅ 成功监听到 git_status_update 事件:`,new Date().toLocaleTimeString()),console.log(`git_status_update data ==>`,e),console.log(`currentProjectPath.value ==>`,O.value),console.log(`data.projectPath ==>`,e.projectPath),e.projectPath&&O.value&&e.projectPath!==O.value){console.log(`${o(`@C298B:忽略不同项目的状态更新: `)}${e.projectPath}`);return}console.log(o(`@C298B:正在更新 Git 文件状态...`)),e.porcelain!==void 0&&be(e.porcelain)}),D.value.on(`connect_error`,e=>{console.error(`Socket连接错误:`,e.message)}),D.value.on(`connect_timeout`,()=>{console.error(o(`@C298B:Socket连接超时`))}),D.value.on(`reconnect`,e=>{console.log(`${o(`@C298B:Socket重连成功,尝试次数: `)}${e}`)}),D.value.on(`reconnect_attempt`,e=>{console.log(`${o(`@C298B:Socket尝试重连,第 `)}${e}${o(`@C298B: 次尝试`)}`)}),D.value.on(`reconnect_error`,e=>{console.error(`Socket重连错误:`,e.message)}),D.value.on(`reconnect_failed`,()=>{console.error(o(`@C298B:Socket重连失败,已达到最大重试次数`))}),console.log(o(`@C298B:Socket.IO事件监听器注册完成:connect, project_info, project_changed, git_status_update, monitoring_status`)),D.value&&!D.value.connected&&(console.log(o(`@C298B:Socket未连接,尝试手动连接...`)),D.value.connect())}catch(e){console.error(`Socket.IO连接初始化失败:`,e)}}function be(e){if(e===void 0||e===``){A.value=[];return}let t=e.split(`
1
+ import"./rolldown-runtime-DAXXjFlN.js";import{Ln as e,Rn as t,a as n,mn as r,sr as i}from"./element-plus-BeKPY2v-.js";import{f as a}from"./vendor-BiOPaz96.js";import{n as o}from"./_plugin-vue_export-helper-CqCl-blp.js";import{t as ee}from"./socket-io-BC2cap_-.js";import{t as te}from"./configStore-CQI-Jwbh.js";var s=new Set([`5173`,`4173`,`5544`]),c=3e3;function l(){if(typeof window>`u`)return c;let e=window.location.port||`80`;if(s.has(e)){{let e=5545;if(!Number.isNaN(e))return e}return c}let t=parseInt(e,10);return Number.isNaN(t)?c:t}var u=800,ne=l(),d=a(`git`,()=>{let a=te(),s=i(``),c=i([]),l=i(``),d=i(``),f=i(!1),p=i(!1),m=i(!1),h=i(0),g=i(``),_=i(!1),v=i(!1),y=i(!1),b=i(!1),x=i(!1),re=i(!1),S=i(0),C=i(0),w=i(!1),T=i(``),ie=i(0),E=i(``),D=i(null),O=i(``),ae=i(``),k=i([]),oe=i({staged:[],unstaged:[],untracked:[]}),A=i([]),j=i(!1),M=i(!1),N=i(!1),P=i(!1),F=i(!1),I=i(1),L=i(!0),R=i(0),z=i([]),B=i(!1),se=i(!1),V=i(!1),H=i(!1);function ce(){s.value=``,c.value=[],l.value=``,d.value=``,f.value=!1,p.value=!1,m.value=!1,h.value=0,S.value=0,C.value=0,w.value=!1,T.value=``,ie.value=0,v.value=!1,y.value=!1,b.value=!1,x.value=!1,g.value=``,_.value=!1,k.value=[],oe.value={staged:[],unstaged:[],untracked:[]},A.value=[],j.value=!1,M.value=!1,N.value=!1,P.value=!1,F.value=!1,I.value=1,L.value=!0,R.value=0}async function U(e=!1,t=!1){if(m.value)try{console.log(o(`@C298B:获取分支状态...`));let n=`/api/branch-status`,r=[];e&&r.push(`force=true`),t&&r.push(`countOnly=true`),r.length>0&&(n+=`?`+r.join(`&`));let i=await(await fetch(n)).json();i&&(S.value=i.ahead||0,C.value=i.behind||0,w.value=i.hasUpstream||!1,T.value=i.upstreamBranch||``,console.log(`${o(`@C298B:分支状态更新:领先 `)}${S.value}${o(`@C298B: 个提交,落后 `)}${C.value}${o(`@C298B: 个提交,上游分支:`)}${w.value?T.value:o(`@C298B:无`)}`))}catch(e){console.error(`获取分支状态失败:`,e),S.value=0,C.value=0,w.value=!1,T.value=``}}async function le(){let e=Date.now();if(e-h.value<1e3)return console.log(`使用缓存的Git仓库状态:`,m.value?`是`:o(`@C298B:不是`)),m.value;try{let t=await(await fetch(`/api/current_directory`)).json();return m.value=t.isGitRepo===!0,h.value=e,console.log(`${o(`@C298B:当前目录`)}${m.value?o(`@C298B:是`):o(`@C298B:不是`)}${o(`@C298B:Git仓库`)}`),m.value}catch(t){return console.error(`检查Git仓库状态失败:`,t),m.value=!1,h.value=e,!1}}async function W(e=!1){try{let t=await(await fetch(e?`/api/branch?force=true`:`/api/branch`)).json();t.branch&&(s.value=t.branch,console.log(`${o(`@C298B:当前分支更新为: `)}${t.branch}${e?o(`@C298B: (强制刷新)`):``}`))}catch(e){console.error(`获取分支信息失败:`,e)}}async function ue(){if(m.value)try{console.log(o(`@C298B:获取所有分支...`));let e=await(await fetch(`/api/branches`)).json();e.branches&&Array.isArray(e.branches)&&(c.value=e.branches,ie.value=Date.now(),console.log(`${o(`@C298B:获取到`)}${e.branches.length}${o(`@C298B:个分支`)}`))}catch(e){console.error(`获取所有分支信息失败:`,e)}}async function de(e){console.log(`切换到分支:`,e);try{f.value=!0;let t=await(await fetch(`/api/checkout`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({branch:e})})).json();return t.success?(n({message:`${o(`@C298B:已切换到分支: `)}${e}`,type:`success`}),await W(!0),await U(!0),!0):(n({message:`${o(`@C298B:切换分支失败: `)}${t.error}`,type:`error`}),!1)}catch(e){return n({message:`${o(`@C298B:切换分支失败: `)}${e.message}`,type:`error`}),!1}finally{f.value=!1}}async function fe(){try{let e=await(await fetch(`/api/user-info`)).json();e.name&&e.email&&(l.value=e.name,d.value=e.email)}catch(e){console.error(`获取用户信息失败:`,e)}}async function pe(e,t){if(!e.trim())return n({message:o(`@C298B:分支名称不能为空`),type:`warning`}),!1;try{p.value=!0;let r=await(await fetch(`/api/create-branch`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({newBranchName:e,baseBranch:t||s.value})})).json();return r.success?(n({message:`${o(`@C298B:已创建并切换到分支: `)}${e}`,type:`success`}),await W(!0),await U(!0),await ue(),!0):(n({message:`${o(`@C298B:创建分支失败: `)}${r.error}`,type:`error`}),!1)}catch(e){return n({message:`${o(`@C298B:创建分支失败: `)}${e.message}`,type:`error`}),!1}finally{p.value=!1}}async function me(){try{let e=await(await fetch(`/api/clear-user-config`,{method:`POST`})).json();return e.success?(l.value=``,d.value=``,n({message:o(`@C298B:已清除Git用户配置`),type:`success`}),!0):(n({message:`${o(`@C298B:清除配置失败: `)}${e.error}`,type:`error`}),!1)}catch(e){return n({message:`${o(`@C298B:清除配置失败: `)}${e.message}`,type:`error`}),!1}}async function he(e,t){try{let r=await(await fetch(`/api/restore-user-config`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:e,email:t})})).json();return r.success?(l.value=e,d.value=t,n({message:o(`@C298B:已恢复Git用户配置`),type:`success`}),!0):(n({message:`${o(`@C298B:恢复配置失败: `)}${r.error}`,type:`error`}),!1)}catch(e){return n({message:`${o(`@C298B:恢复配置失败: `)}${e.message}`,type:`error`}),!1}}async function ge(){if(!m.value)return n({message:o(`@C298B:当前目录不是Git仓库`),type:`warning`}),{success:!1,needsMerge:!1,error:o(`@C298B:当前目录不是Git仓库`),fullError:``,pullOutput:``};try{y.value=!0;let e=await(await fetch(`/api/pull`,{method:`POST`})).json();if(e.success){n({message:o(`@C298B:拉取成功`),type:`success`}),await U(!0);let t=(e.message||``).toString(),r=!/already up to date|已经是最新的|already up-to-date/i.test(t);return r&&await xe(),{success:!0,hadChanges:r}}else return{success:!1,needsMerge:e.needsMerge||!1,error:e.error||``,fullError:e.fullError||e.error||``,pullOutput:e.pullOutput||``}}catch(e){return{success:!1,needsMerge:!1,error:e.message,fullError:e.message,pullOutput:``}}finally{y.value=!1}}async function _e(){if(!m.value)return!1;if(!w.value)return console.log(`[bootFetch] no upstream, skip`),!1;try{b.value=!0;let e=C.value;console.log(`[bootFetch] start silent fetch --all, beforeBehind=${e}`);let t=await(await fetch(`/api/fetch-all`,{method:`POST`})).json();if(!t.success)return console.warn(`[bootFetch] fetch --all failed:`,t.error),!1;await U(!0);let n=C.value,r=n<e;return console.log(`[bootFetch] afterBehind=${n}, hasNewRemoteCommits=${r}`),r?(await G(!0),!0):!1}catch(e){return console.warn(`[bootFetch] silent fetch error (ignored):`,e.message),!1}finally{b.value=!1}}async function ve(){if(!m.value)return n({message:o(`@C298B:当前目录不是Git仓库`),type:`warning`}),!1;try{b.value=!0;let e=await(await fetch(`/api/fetch-all`,{method:`POST`})).json();return e.success?(n({message:o(`@C298B:获取所有远程分支信息成功`),type:`success`}),await U(),!0):(n({message:`${o(`@C298B:获取远程分支信息失败: `)}${e.error}`,type:`error`}),!1)}catch(e){return n({message:`${o(`@C298B:获取远程分支信息失败: `)}${e.message}`,type:`error`}),!1}finally{b.value=!1}}async function ye(){D.value&&(Je(),D.value.disconnect());try{let e=`http://localhost:${ne}`;if(console.log(`尝试连接Socket.IO服务器:`,e),D.value=ee(e,{reconnectionDelayMax:1e4,reconnection:!0,reconnectionAttempts:10,reconnectionDelay:1e3,timeout:2e4,autoConnect:!0,forceNew:!0,transports:[`websocket`,`polling`]}),!D.value){console.error(`Socket.IO初始化失败: socket为null`);return}console.log(o(`@C298B:Socket.IO客户端已创建,开始注册事件监听器...`)),D.value.on(`connect`,()=>{console.log(`✅ Socket.IO连接成功,事件监听器已生效,Socket ID:`,D.value?.id)}),D.value.on(`project_info`,e=>{O.value=e.projectPath,ae.value=e.projectRoomId,console.log(`${o(`@C298B:当前项目: `)}${e.projectPath}`),console.log(`${o(`@C298B:房间ID: `)}${e.projectRoomId}`)}),D.value.on(`project_changed`,e=>{console.log(`${o(`@C298B:项目已切换: `)}${e.oldProjectPath} -> ${e.newProjectPath}`),O.value=e.newProjectPath,ae.value=e.newProjectRoomId,D.value&&D.value.emit(`join_room`,e.newProjectRoomId),console.log(`${o(`@C298B:已加入新项目房间: `)}${e.newProjectRoomId}`)}),D.value.on(`disconnect`,e=>{console.log(`与Socket.IO服务器断开连接:`,e)}),D.value.on(`git_status_update`,e=>{if(console.log(`✅ 成功监听到 git_status_update 事件:`,new Date().toLocaleTimeString()),console.log(`git_status_update data ==>`,e),console.log(`currentProjectPath.value ==>`,O.value),console.log(`data.projectPath ==>`,e.projectPath),e.projectPath&&O.value&&e.projectPath!==O.value){console.log(`${o(`@C298B:忽略不同项目的状态更新: `)}${e.projectPath}`);return}console.log(o(`@C298B:正在更新 Git 文件状态...`)),e.porcelain!==void 0&&be(e.porcelain)}),D.value.on(`connect_error`,e=>{console.error(`Socket连接错误:`,e.message)}),D.value.on(`connect_timeout`,()=>{console.error(o(`@C298B:Socket连接超时`))}),D.value.on(`reconnect`,e=>{console.log(`${o(`@C298B:Socket重连成功,尝试次数: `)}${e}`)}),D.value.on(`reconnect_attempt`,e=>{console.log(`${o(`@C298B:Socket尝试重连,第 `)}${e}${o(`@C298B: 次尝试`)}`)}),D.value.on(`reconnect_error`,e=>{console.error(`Socket重连错误:`,e.message)}),D.value.on(`reconnect_failed`,()=>{console.error(o(`@C298B:Socket重连失败,已达到最大重试次数`))}),console.log(o(`@C298B:Socket.IO事件监听器注册完成:connect, project_info, project_changed, git_status_update, monitoring_status`)),D.value&&!D.value.connected&&(console.log(o(`@C298B:Socket未连接,尝试手动连接...`)),D.value.connect())}catch(e){console.error(`Socket.IO连接初始化失败:`,e)}}function be(e){if(e===void 0||e===``){A.value=[];return}let t=e.split(`
2
2
  `),n=[];for(let e of t){let t=e.match(/^([ MADRCU\?]{2})\s+(.+)$/);if(t){let e=``,r=t[1],i=r.charAt(0),a=r.charAt(1);e=r===`UU`||r===`AA`||r===`DD`||r===`AU`||r===`UA`||r===`DU`||r===`UD`?`conflicted`:i===`A`||i===`M`||i===`D`||i===`R`?`added`:i===` `&&a===`M`?`modified`:i===` `&&a===`D`?`deleted`:i===` `&&a===`A`?`intent-to-add`:r===`??`?`untracked`:`other`,n.push({path:t[2],type:e})}}A.value=n}async function G(e=!0){if(!m.value){console.log(o(`@C298B:当前目录不是Git仓库,跳过加载提交历史`));return}try{j.value=!0,console.log(o(`@C298B:开始加载提交历史...`));let e=new Date().getTime(),t=await(await fetch(`/api/log?page=1&_t=${e}`)).json();t&&t.data&&Array.isArray(t.data)?(k.value=[...t.data],console.log(`${o(`@C298B:提交历史加载完成,共 `)}${k.value.length}${o(`@C298B: 条记录`)}`)):(console.warn(`API返回的提交历史格式不正确:`,t),k.value=[])}catch(t){console.error(`获取提交历史失败:`,t),e&&n({message:`${o(`@C298B:获取提交历史失败: `)}${t.message}`,type:`error`})}finally{j.value=!1}}async function xe(){console.log(o(`@C298B:刷新提交历史...`)),I.value=1,L.value=!1,await G(!0),R.value=k.value.length,console.log(o(`@C298B:提交历史刷新完成`))}async function K(){if(!m.value){console.log(o(`@C298B:当前目录不是Git仓库,跳过加载Git状态`));return}try{M.value=!0,await q()}catch(e){console.error(`获取Git状态失败:`,e),n({message:`${o(`@C298B:获取Git状态失败: `)}${e.message}`,type:`error`})}finally{M.value=!1}}async function q(){if(console.log(o(`@C298B:开始获取Git状态(porcelain格式)...`)),!m.value){console.log(o(`@C298B:当前目录不是Git仓库,跳过加载Git状态`));return}try{let e=await(await fetch(`/api/status_porcelain`)).json();e.status===void 0?A.value=[]:be(e.status),re.value=!!e.isMergeInProgress,e.isMergeInProgress&&e.mergeMessage&&!E.value&&(E.value=String(e.mergeMessage))}catch(e){console.error(`获取Git状态(porcelain)失败:`,e),n({message:`${o(`@C298B:获取Git状态(porcelain)失败: `)}${e.message}`,type:`error`}),A.value=[]}}async function Se(){if(!m.value)return n.warning(o(`@C298B:当前目录不是Git仓库`)),!1;try{N.value=!0;let e=A.value.filter(e=>{let t=e.path.replace(/\\/g,`/`);return!a.lockedFiles.some(e=>{let n=e.replace(/\\/g,`/`);return t===n})});if(e.length===0)return n({message:o(`@C298B:没有需要暂存的文件(所有文件都被锁定)`),type:`warning`}),!1;if(e.length===A.value.length){let e=await(await fetch(`/api/add`,{method:`POST`})).json();return e.success?(n({message:o(`@C298B:文件已添加到暂存区`),type:`success`}),await q(),!0):(n({message:`${o(`@C298B:添加文件失败: `)}${e.error}`,type:`error`}),!1)}else{let t=await(await fetch(`/api/add-filtered`,{method:`POST`})).json();if(t.success){let t=A.value.length-e.length,r=`${o(`@C298B:已添加 `)}${e.length}${o(`@C298B: 个文件到暂存区`)}`;return t>0&&(r+=`${o(`@C298B:,跳过 `)}${t}${o(`@C298B: 个锁定文件`)}`),n({message:r,type:`success`}),await q(),!0}else return n({message:`${o(`@C298B:添加文件失败: `)}${t.error}`,type:`error`}),!1}}catch(e){return n({message:`${o(`@C298B:添加文件失败: `)}${e.message}`,type:`error`}),!1}finally{N.value=!1}}async function Ce(){if(!m.value)return n.warning(o(`@C298B:当前目录不是Git仓库`)),!1;try{N.value=!0;let e=await(await fetch(`/api/add-all`,{method:`POST`})).json();return e.success?(n({message:o(`@C298B:所有文件已添加到暂存区`),type:`success`}),await q(),!0):(n({message:`${o(`@C298B:添加文件失败: `)}${e.error}`,type:`error`}),!1)}catch(e){return n({message:`${o(`@C298B:添加文件失败: `)}${e.message}`,type:`error`}),!1}finally{N.value=!1}}async function we(e){if(!m.value)return n.warning(o(`@C298B:当前目录不是Git仓库`)),!1;try{N.value=!0;let t=await(await fetch(`/api/add-file`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return t.success?(n({message:o(`@C298B:文件已暂存`),type:`success`}),K(),!0):(n({message:`${o(`@C298B:暂存文件失败: `)}${t.error}`,type:`error`}),!1)}catch(e){return n({message:`${o(`@C298B:暂存文件失败: `)}${e.message}`,type:`error`}),!1}finally{N.value=!1}}async function Te(e){if(!m.value)return n.warning(o(`@C298B:当前目录不是Git仓库`)),!1;try{F.value=!0;let t=await(await fetch(`/api/unstage-file`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return t.success?(n({message:o(`@C298B:已取消暂存文件`),type:`success`}),K(),!0):(n({message:`${o(`@C298B:取消暂存失败: `)}${t.error}`,type:`error`}),!1)}catch(e){return n({message:`${o(`@C298B:取消暂存失败: `)}${e.message}`,type:`error`}),!1}finally{F.value=!1}}function J(e){return new Promise(t=>setTimeout(t,e))}async function Y(e,t=!1,r={}){if(!m.value)return n.warning(o(`@C298B:当前目录不是Git仓库`)),!1;let{autoRefresh:i=!0}=r;try{P.value=!0;let r=await(await fetch(`/api/commit`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({message:e,hasNewlines:e.includes(`
3
3
  `),noVerify:t})})).json();return r.success?(n({message:o(`@C298B:提交成功`),type:`success`}),i&&(await q(),await G(!1),U(!0)),!0):(n({message:`${o(`@C298B:commitChanges 提交失败: `)}${r.error}`,type:`error`}),!1)}catch(e){return n({message:`${o(`@C298B:提交失败: `)}${e.message}`,type:`error`}),!1}finally{P.value=!1}}async function Ee(){if(!m.value)return n.warning(o(`@C298B:当前目录不是Git仓库`)),!1;try{v.value=!0;let e=await(await fetch(`/api/push`,{method:`POST`})).json();return e.success?(S.value=0,C.value=0,await Promise.all([K(),G()]),console.log(`推送成功,分支状态已设置为同步 (ahead=0, behind=0)`),!0):(e.errorCode===`EMPTY_REPO`?n({message:e.error||o(`@C298B:当前仓库没有任何提交,请先暂存并提交至少一个文件后再推送。`),type:`warning`}):n({message:`${o(`@C298B:推送失败: `)}${e.error}`,type:`error`}),!1)}catch(e){return n({message:`${o(`@C298B:推送失败: `)}${e.message}`,type:`error`}),!1}finally{v.value=!1}}async function De(e){return m.value?new Promise(t=>{try{v.value=!0,fetch(`/api/push-with-progress`,{method:`POST`}).then(r=>{let i=r.body?.getReader(),a=new TextDecoder;if(!i)throw Error(`无法读取响应流`);(async()=>{try{for(;;){let{done:r,value:ee}=await i.read();if(r)break;let te=a.decode(ee,{stream:!0}).split(`
4
4
  `);for(let r of te)if(r.startsWith(`data: `))try{let i=JSON.parse(r.slice(6));if(e&&e(i),i.type===`error`){v.value=!1,i.errorCode===`EMPTY_REPO`?n({message:i.error||o(`@C298B:当前仓库没有任何提交,请先暂存并提交至少一个文件后再推送。`),type:`warning`}):n({message:`${o(`@C298B:推送失败: `)}${i.error||o(`@C298B:未知错误`)}`,type:`error`}),t(!1);return}i.type===`complete`&&(v.value=!1,i.success?(S.value=0,C.value=0,Promise.all([K(),G()]),t(!0)):(n({message:`${o(`@C298B:推送失败: `)}${i.error}`,type:`error`}),t(!1)))}catch(e){console.error(`解析SSE数据失败:`,e)}}}catch(e){console.error(`读取流失败:`,e),v.value=!1,n({message:`${o(`@C298B:推送失败: `)}${e.message}`,type:`error`}),t(!1)}})()}).catch(e=>{v.value=!1,n({message:`${o(`@C298B:推送失败: `)}${e.message}`,type:`error`}),t(!1)})}catch(e){v.value=!1,n({message:`${o(`@C298B:推送失败: `)}${e.message}`,type:`error`}),t(!1)}}):(n.warning(o(`@C298B:当前目录不是Git仓库`)),!1)}async function Oe(e,t={}){if(!m.value)return n({message:o(`@C298B:当前目录不是Git仓库`),type:`warning`}),!1;if(!e)return n({message:o(`@C298B:请选择要合并的分支`),type:`warning`}),!1;if(e===s.value)return n({message:o(`@C298B:不能合并当前分支到自身`),type:`warning`}),!1;let r=`Merge branch '${e}' into ${s.value}`;try{x.value=!0;let i=await fetch(`/api/merge`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({branch:e,...t})}),a=await i.json();return i.status===409?(E.value=t.message||r,n({message:o(`@C298B:合并分支时发生冲突,请手动解决`),type:`warning`,duration:5e3}),!1):(E.value=``,a.success?(n({message:`${o(`@C298B:成功合并分支 `)}${e}${o(`@C298B: 到 `)}${s.value}`,type:`success`}),await K(),await U(),!0):(n({message:`${o(`@C298B:合并分支失败: `)}${a.error}`,type:`error`}),!1))}catch(e){return n({message:`${o(`@C298B:合并分支失败: `)}${e.message}`,type:`error`}),!1}finally{x.value=!1}}async function ke(e,t=!1){if(console.log(o(`@C298B:开始暂存并提交操作...`)),!await Se())return!1;console.log(o(`@C298B:暂存完成,等待Git操作完成...`)),await J(u),console.log(o(`@C298B:开始提交更改...`));let n=await Y(e,t);return console.log(o(`@C298B:暂存并提交操作完成`)),n}async function Ae(e,t=!1){try{if(console.log(o(`@C298B:开始暂存文件...`)),!await Se()||(console.log(o(`@C298B:暂存完成,等待Git操作完成...`)),await J(u),console.log(o(`@C298B:开始提交更改...`)),!await Y(e,t)))return!1;console.log(o(`@C298B:提交完成,等待Git操作完成...`)),await J(u),console.log(o(`@C298B:开始推送到远程...`));let n=await Ee();return console.log(o(`@C298B:一键推送操作完成,状态已统一刷新`)),n}catch(e){console.error(`一键推送操作失败:`,e);try{(await(await fetch(`/api/remove-lock`,{method:`POST`})).json()).success&&n({message:o(`@C298B:检测到Git锁定文件冲突,已自动清理,请重试操作`),type:`warning`})}catch(e){console.error(`清理锁定文件失败:`,e)}n({message:`${o(`@C298B:操作失败: `)}${e.message}`,type:`error`});try{await Promise.all([K(),G(),U()])}catch(e){console.error(`刷新状态失败:`,e)}return!1}}async function je(e,t=!1){if(!Z.value||Q.value.size===0)return ke(e,t);let r=$.value;return r.length===0?(n.warning(o(`@C298B:请选择要暂存的文件`)),!1):(console.log(o(`@C298B:开始暂存所选文件并提交...`,{n:r.length})),await ct(r)?(await J(u),Y(e,t)):!1)}async function Me(e,t=!1){if(!Z.value||Q.value.size===0)return Ae(e,t);let r=$.value;return r.length===0?(n.warning(o(`@C298B:请选择要暂存的文件`)),!1):!await ct(r)||(await J(u),!await Y(e,t))?!1:(await J(u),Ee())}async function Ne(){if(!m.value)return n.warning(o(`@C298B:当前目录不是Git仓库`)),!1;try{F.value=!0;let e=await(await fetch(`/api/reset-head`,{method:`POST`})).json();return e.success?(n({message:o(`@C298B:已重置暂存区`),type:`success`}),K(),!0):(n({message:`${o(`@C298B:重置暂存区失败: `)}${e.error}`,type:`error`}),!1)}catch(e){return n({message:`${o(`@C298B:重置暂存区失败: `)}${e.message}`,type:`error`}),!1}finally{F.value=!1}}async function Pe(e){if(!m.value)return n.warning(o(`@C298B:当前目录不是Git仓库`)),!1;try{F.value=!0;let t=await(await fetch(`/api/reset-to-remote`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({branch:e})})).json();return t.success?(n({message:`${o(`@C298B:已重置分支 `)}${e}${o(`@C298B: 到远程状态`)}`,type:`success`}),K(),G(),await W(!0),await ue(),!0):(n({message:`${o(`@C298B:重置分支失败: `)}${t.error}`,type:`error`}),!1)}catch(e){return n({message:`${o(`@C298B:重置分支失败: `)}${e.message}`,type:`error`}),!1}finally{F.value=!1}}async function Fe(){if(!m.value)return n.warning(o(`@C298B:当前目录不是Git仓库`)),!1;try{F.value=!0;let e=await(await fetch(`/api/discard-all-changes`,{method:`POST`})).json();return e.success?(n.success(o(`@C298B:已清除所有本地更改`)),K(),G(),!0):(n.error(`${o(`@C298B:操作失败: `)}${e.error}`),!1)}catch(e){return n.error(`${o(`@C298B:操作失败: `)}${e.message}`),!1}finally{F.value=!1}}async function Ie(e){if(!m.value)return n.warning(o(`@C298B:当前目录不是Git仓库`)),!1;if(!Array.isArray(e)||e.length===0)return n.warning(o(`@C298B:未选择任何文件`)),!1;try{F.value=!0;let t=await(await fetch(`/api/revert_files`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePaths:e})})).json();if(t.success){let r=Number(t?.count??e.length),i=Array.isArray(t?.results)?t.results.filter(e=>!e?.success).map(e=>String(e?.path||``)):[];return i.length>0?n.warning(`${o(`@C298B:已清除 `)}${r-i.length}${o(`@C298B: 个文件,失败 `)}${i.length}${o(`@C298B: 个`)}`):n.success(`${o(`@C298B:已清除 `)}${r}${o(`@C298B: 个所选文件`)}`),K(),G(),!0}else return n.error(`${o(`@C298B:操作失败: `)}${t.error}`),!1}catch(e){return n.error(`${o(`@C298B:操作失败: `)}${e.message}`),!1}finally{F.value=!1}}async function Le(){if(m.value)try{_.value=!0,console.log(o(`@C298B:获取远程仓库地址...`));let e=await(await fetch(`/api/remote-url`)).json();e.success?(g.value=e.url||``,console.log(`${o(`@C298B:获取到远程仓库地址: `)}${g.value}`)):(console.warn(`获取远程仓库地址失败:`,e.error),g.value=``)}catch(e){console.error(`获取远程仓库地址失败:`,e),g.value=``}finally{_.value=!1}}async function Re(){try{let e=await(await fetch(`/api/git-init`,{method:`POST`})).json();return e.success?(await le(),!0):(n.error(e.error||o(`@C298B:Git仓库初始化失败`)),!1)}catch(e){return n.error(`${o(`@C298B:Git仓库初始化失败: `)}${e.message}`),!1}}async function ze(e,t=`origin`){try{let r=await(await fetch(`/api/add-remote`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:t,url:e})})).json();return r.success?(await Le(),!0):(n.error(r.error||o(`@C298B:添加远程仓库失败`)),!1)}catch(e){return n.error(`${o(`@C298B:添加远程仓库失败: `)}${e.message}`),!1}}async function Be(){try{let e=await(await fetch(`/api/diff-head`)).json();return e.success?e.diff?(await navigator.clipboard.writeText(e.diff),n({message:o(`@C298B:已复制全量 Diff`),type:`success`}),!0):(n({message:o(`@C298B:没有可复制的 Diff`),type:`warning`}),!1):(n({message:`${o(`@C298B:复制失败: `)}${e.error}`,type:`error`}),!1)}catch(e){return n({message:`${o(`@C298B:复制失败: `)}${e.message}`,type:`error`}),!1}}let Ve=[`github.com`,`gitlab.com`,`bitbucket.org`,`gitee.com`,`coding.net`,`codeup.aliyun.com`],He=r(()=>{let e=g.value.trim();if(!e)return null;if(/^https?:\/\//i.test(e))return e.replace(/\.git$/i,``);let t=e.match(/^[\w.-]+@([^:]+):(.+?)(?:\.git)?$/i);if(t){let e=t[1],n=t[2];return Ve.includes(e.toLowerCase())?`https://${e}/${n}`:null}let n=e.match(/^ssh:\/\/(?:[\w.-]+@)?([^/:]+)(?::\d+)?\/(.+?)(?:\.git)?$/i);if(n){let e=n[1],t=n[2];return Ve.includes(e.toLowerCase())?`https://${e}/${t}`:null}return null}),Ue=r(()=>He.value!==null);function We(){let e=He.value;return e?(window.open(e,`_blank`,`noopener,noreferrer`),!0):(n({message:o(`@C298B:该远程仓库地址无法识别为可访问的网页地址`),type:`warning`}),!1)}async function Ge(){if(!g.value)return n({message:o(`@C298B:没有可复制的远程仓库地址`),type:`warning`}),!1;try{return await navigator.clipboard.writeText(g.value),n({message:o(`@C298B:已复制远程仓库地址`),type:`success`}),!0}catch(e){return console.error(`复制远程仓库地址失败:`,e),n({message:`${o(`@C298B:复制失败: `)}${e.message}`,type:`error`}),!1}}async function Ke(){if(!g.value)return n({message:o(`@C298B:没有可复制的远程仓库地址`),type:`warning`}),!1;try{let e=`git clone ${g.value}`;return await navigator.clipboard.writeText(e),n({message:o(`@F13B4:已复制克隆命令`),type:`success`}),!0}catch(e){return console.error(`复制克隆命令失败:`,e),n({message:`${o(`@C298B:复制失败: `)}${e.message}`,type:`error`}),!1}}e(()=>{ye()});function qe(){D.value&&=(Je(),D.value.disconnect(),null)}function Je(){if(D.value)for(let e of[`connect`,`project_info`,`project_changed`,`disconnect`,`git_status_update`,`connect_error`,`connect_timeout`,`reconnect`,`reconnect_attempt`,`reconnect_error`,`reconnect_failed`])try{D.value.off(e)}catch{}}t(()=>{qe()});async function X(){if(!m.value)return n.warning(o(`@C298B:当前目录不是Git仓库`)),[];try{B.value=!0;let e=await(await fetch(`/api/stash-list`)).json();return e.success?(z.value=e.stashes,e.stashes):(n.error(`${o(`@C298B:获取stash列表失败: `)}${e.error}`),[])}catch(e){return console.error(`获取stash列表失败:`,e),n.error(`${o(`@C298B:获取stash列表失败: `)}${e.message}`),[]}finally{B.value=!1}}async function Ye(e,t=!1,r=!0){if(!m.value)return n.warning(o(`@C298B:当前目录不是Git仓库`)),!1;try{H.value=!0;let i=await(await fetch(`/api/stash-save`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({message:e,includeUntracked:t,excludeLocked:r})})).json();return i.success?(n.success(i.message),await X(),await K(),!0):(n.warning(i.message),!1)}catch(e){return console.error(`保存stash失败:`,e),n.error(`${o(`@C298B:保存stash失败: `)}${e.message}`),!1}finally{H.value=!1}}async function Xe(e,t,r=!1){if(!m.value)return n.warning(o(`@C298B:当前目录不是Git仓库`)),!1;if(!e||e.length===0)return n.warning(o(`@C298B:请选择要储藏的文件`)),!1;try{H.value=!0;let i=await(await fetch(`/api/stash-save-partial`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({files:e,message:t,includeUntracked:r})})).json();return i.success?(n.success(i.message),await X(),await K(),!0):(n.warning(i.message),!1)}catch(e){return console.error(`保存部分stash失败:`,e),n.error(`${o(`@C298B:保存stash失败: `)}${e.message}`),!1}finally{H.value=!1}}async function Ze(e,t=!1){if(!m.value)return n.warning(o(`@C298B:当前目录不是Git仓库`)),!1;try{se.value=!0;let r=await fetch(`/api/stash-apply`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({stashId:e,pop:t})}),i=await r.json();return r.status===409?(n.warning(o(`@C298B:应用stash时发生冲突,请手动解决`)),!1):i.success?(n.success(i.message),await X(),await K(),!0):(n.error(`${o(`@C298B:应用stash失败: `)}${i.error}`),!1)}catch(e){return console.error(`应用stash失败:`,e),n.error(`${o(`@C298B:应用stash失败: `)}${e.message}`),!1}finally{se.value=!1}}async function Qe(e){if(!m.value)return n.warning(o(`@C298B:当前目录不是Git仓库`)),!1;try{V.value=!0;let t=await(await fetch(`/api/stash-drop`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({stashId:e})})).json();return t.success?(n.success(t.message),await X(),!0):(n.error(`${o(`@C298B:删除stash失败: `)}${t.error}`),!1)}catch(e){return console.error(`删除stash失败:`,e),n.error(`${o(`@C298B:删除stash失败: `)}${e.message}`),!1}finally{V.value=!1}}async function $e(){if(!m.value)return n.warning(o(`@C298B:当前目录不是Git仓库`)),!1;try{V.value=!0;let e=await(await fetch(`/api/stash-clear`,{method:`POST`})).json();return e.success?(n.success(e.message),z.value=[],!0):(n.error(`${o(`@C298B:清空stash失败: `)}${e.error}`),!1)}catch(e){return console.error(`清空stash失败:`,e),n.error(`${o(`@C298B:清空stash失败: `)}${e.message}`),!1}finally{V.value=!1}}let et=r(()=>A.value.some(e=>e.type===`conflicted`)),Z=i(!1),Q=i(new Set);function tt(){Z.value=!Z.value,Z.value||(Q.value=new Set)}function nt(){Z.value=!0}function rt(){Z.value=!1,Q.value=new Set}function it(e){let t=new Set(Q.value);t.has(e)?t.delete(e):t.add(e),Q.value=t}function at(){Q.value=new Set(A.value.map(e=>e.path))}function ot(){Q.value=new Set}let $=r(()=>{if(!Z.value)return[];let e=new Set(a.lockedFiles.map(e=>e.replace(/\\/g,`/`))),t=[];for(let n of Q.value){let r=n.replace(/\\/g,`/`);if(e.has(r))continue;let i=A.value.find(e=>e.path===n);i&&[`modified`,`deleted`,`untracked`,`intent-to-add`].includes(i.type)&&t.push(n)}return t}),st=r(()=>$.value.length>0);async function ct(e){if(!m.value)return n.warning(o(`@C298B:当前目录不是Git仓库`)),!1;let t=[...new Set(e.filter(e=>typeof e==`string`&&e.length>0))];if(t.length===0)return n.warning(o(`@C298B:请选择要暂存的文件`)),!1;try{N.value=!0;let e=await(await fetch(`/api/add-files`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePaths:t})})).json();if(e.success){let r=e.successCount??t.length;n.success(r>0?`${o(`@C298B:已暂存 `)}${r}${o(`@C298B: 个所选文件`)}`:o(`@C298B:文件已添加到暂存区`));let i=new Set(Q.value);for(let e of t)i.delete(e);return Q.value=i,await q(),!0}else return n.error(`${o(`@C298B:暂存失败: `)}${e.error||``}`),!1}catch(e){return n.error(`${o(`@C298B:暂存失败: `)}${e.message}`),!1}finally{N.value=!1}}return{currentBranch:s,allBranches:c,userName:l,userEmail:d,isChangingBranch:f,isCreatingBranch:p,isGitRepo:m,lastCheckedTime:h,branchAhead:S,branchBehind:C,hasUpstream:w,upstreamBranch:T,lastBranchesTime:ie,remoteUrl:g,isLoadingRemoteUrl:_,remoteWebUrl:He,isRemoteBrowsable:Ue,openRemoteWebUrl:We,hasConflictedFiles:et,stashes:z,isLoadingStashes:B,isApplyingStash:se,isDroppingStash:V,isSavingStash:H,log:k,status:oe,fileList:A,isLoadingLog:j,isLoadingStatus:M,isAddingFiles:N,isCommiting:P,isResetting:F,currentPage:I,hasMoreData:L,totalCommits:R,isPushing:v,isGitPulling:y,isGitFetching:b,isGitMerging:x,isMergeInProgress:re,pendingMergeMessage:E,isSelectionMode:Z,selectedFiles:Q,selectedUnstagedPaths:$,hasSelectableFiles:st,toggleSelectionMode:tt,enterSelectionMode:nt,exitSelectionMode:rt,toggleFileSelection:it,selectAllFiles:at,clearSelection:ot,$reset:ce,checkGitRepo:le,getCurrentBranch:W,getAllBranches:ue,changeBranch:de,getUserInfo:fe,createBranch:pe,clearUserConfig:me,restoreUserConfig:he,getBranchStatus:U,gitPull:ge,gitFetchAll:ve,bootFetch:_e,initSocketConnection:ye,parseStatusPorcelain:be,fetchLog:G,refreshLog:xe,fetchStatus:K,fetchStatusPorcelain:q,addToStage:Se,addAllToStage:Ce,addFileToStage:we,stageFiles:ct,unstageFile:Te,commitChanges:Y,pushToRemote:Ee,pushToRemoteWithProgress:De,addAndCommit:ke,addCommitAndPush:Ae,stageSelectedAndCommit:je,stageSelectedAndCommitAndPush:Me,resetHead:Ne,resetToRemote:Pe,discardAllChanges:Fe,discardSelectedFiles:Ie,getRemoteUrl:Le,addRemote:ze,gitInit:Re,copyRemoteUrl:Ge,copyCloneCommand:Ke,copyCurrentDiff:Be,mergeBranch:Oe,getStashList:X,saveStash:Ye,savePartialStash:Xe,applyStash:Ze,dropStash:Qe,clearAllStashes:$e,socket:D,disconnectSocket:qe}});export{l as n,d as t};