zen-gitsync 2.13.25 → 2.13.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/config.js +14 -1
- package/src/ui/public/assets/{AppVersionBadge-CIAzLihu.js → AppVersionBadge-BEeW0AL-.js} +2 -2
- package/src/ui/public/assets/{BranchSelector-BoztZ6c2.js → BranchSelector-c59Odoj0.js} +1 -1
- package/src/ui/public/assets/{CommandConsole-CZA9PDIm.js → CommandConsole-Bbt0wo4y.js} +2 -2
- package/src/ui/public/assets/{CommitForm-CCBME4F0.css → CommitForm-DIGVx-uM.css} +1 -1
- package/src/ui/public/assets/CommitForm-hBWfGKDe.js +6 -0
- package/src/ui/public/assets/{CustomCommandManager-CieZYBTz.js → CustomCommandManager-B5uJC47H.js} +1 -1
- package/src/ui/public/assets/EditorView-DGwTbiKa.js +0 -0
- package/src/ui/public/assets/{EditorView-BoRRJEFO.css → EditorView-Do_aRkqm.css} +1 -1
- package/src/ui/public/assets/{FileDiffViewer-DhpNUTJt.js → FileDiffViewer-CJ9hE0rc.js} +1 -1
- package/src/ui/public/assets/FlowExecutionViewer-B5kh7VxS.css +1 -0
- package/src/ui/public/assets/{FlowExecutionViewer-DlYmmGkP.js → FlowExecutionViewer-DgzkadXS.js} +1 -1
- package/src/ui/public/assets/{FlowOrchestrationWorkspace-DmBxt5nC.css → FlowOrchestrationWorkspace-BAQDU9Jd.css} +1 -1
- package/src/ui/public/assets/FlowOrchestrationWorkspace-aX2jblSj.js +21 -0
- package/src/ui/public/assets/{GitStatus-B4hnJzqy.js → GitStatus-Bfo5BFiv.js} +1 -1
- package/src/ui/public/assets/{ImagePreview-Cil0rDfG.js → ImagePreview-CYQ1rWsB.js} +1 -1
- package/src/ui/public/assets/{LogList-BKqV6ERt.js → LogList-C-b_SAKs.js} +1 -1
- package/src/ui/public/assets/{ProjectStartupButton-CPXyIqHS.js → ProjectStartupButton-J9QJ2l5s.js} +1 -1
- package/src/ui/public/assets/{RemoteRepoCard-CspjnxaZ.js → RemoteRepoCard-9OdXr68_.js} +1 -1
- package/src/ui/public/assets/{ResetToRemoteButton-CAHhKkZ5.js → ResetToRemoteButton-BCaqTKWF.js} +1 -1
- package/src/ui/public/assets/{SourceMapView-Bb8pfASG.js → SourceMapView-CoxtZ_m3.js} +3 -3
- package/src/ui/public/assets/{TemplateManager-WSreg-op.js → TemplateManager-2AgSIFTO.js} +1 -1
- package/src/ui/public/assets/{UserInputNode-DR6fUbfy.js → UserInputNode-DHV_enhz.js} +1 -1
- package/src/ui/public/assets/{WorkbenchView-402ZzsT0.js → WorkbenchView-CHR2r0tw.js} +1 -1
- package/src/ui/public/assets/_plugin-vue_export-helper-RXm384te.js +9 -0
- package/src/ui/public/assets/{index-CDa9xf0V.css → index-Cn3n2mx6.css} +1 -1
- package/src/ui/public/assets/index-D7_4Vxc8.js +7 -0
- package/src/ui/public/index.html +5 -3
- package/src/ui/server/routes/config.js +9 -7
- package/src/utils/index.js +11 -2
- package/src/ui/public/assets/CommitForm-DZ8aU8PB.js +0 -6
- package/src/ui/public/assets/EditorView-BzTJPZPp.js +0 -0
- package/src/ui/public/assets/FlowExecutionViewer-DhmllmKH.css +0 -1
- package/src/ui/public/assets/FlowOrchestrationWorkspace-gdihO9k1.js +0 -21
- package/src/ui/public/assets/_plugin-vue_export-helper-BVVLmyjZ.js +0 -9
- package/src/ui/public/assets/index-D_T4XWSf.js +0 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./rolldown-runtime-CMxvf4Kt.js";import{B as e,Cn as t,En as n,I as r,S as i,Vn as a,W as ee,Yn as o,Zn as s,_n as c,a as l,cr as u,dn as d,gn as f,hn as p,hr as m,ht as h,j as g,ln as _,mr as v,vn as y,vr as b,wn as x,yn as S,z as C,zn as w}from"./element-plus-CJjFCgLP.js";import{n as T,t as E}from"./_plugin-vue_export-helper-
|
|
1
|
+
import"./rolldown-runtime-CMxvf4Kt.js";import{B as e,Cn as t,En as n,I as r,S as i,Vn as a,W as ee,Yn as o,Zn as s,_n as c,a as l,cr as u,dn as d,gn as f,hn as p,hr as m,ht as h,j as g,ln as _,mr as v,vn as y,vr as b,wn as x,yn as S,z as C,zn as w}from"./element-plus-CJjFCgLP.js";import{n as T,t as E}from"./_plugin-vue_export-helper-RXm384te.js";import{i as D,l as O,s as k}from"./index-D7_4Vxc8.js";var te={class:`template-form`},ne={class:`template-form-buttons`},re={key:0,class:`template-list`},ie={key:1,class:`template-list-scroll`},ae={class:`template-content`},A={class:`template-actions`},oe={key:1,class:`templates-container`},se={class:`message-templates-list`},ce={class:`templates-scroll-area`},le={class:`template-content`},ue={class:`template-actions`},j={key:0,class:`current-default-message`},M={class:`default-message-content`},N={key:2,class:`message-help-text`},P=E(n({__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(n,{expose:E,emit:P}){let F=n,I=P,L=k(),R=u(``),z=u(!1),B=u(``),V=u(-1),H=u(!1),U=u(!1),W=u(!1),G=p(()=>{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=p(()=>F.type===`message`?L.defaultCommitMessage:``),de=p(()=>z.value?F.editPlaceholder:F.placeholder),fe=p(()=>z.value?T(`@60CAC:更新模板`):T(`@60CAC:添加模板`)),q=p({get:()=>F.visible,set:e=>I(`update:visible`,e)});o(q,e=>{e||J()});function J(){R.value=``,z.value=!1,B.value=``,V.value=-1}async function Y(){if(!R.value.trim()){l.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){l.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){l.error(`${T(`@60CAC:置顶模板失败: `)}${e.message}`)}finally{W.value=!1}}async function $(e){try{await L.deleteTemplate(e,F.type)}catch(e){l.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){l.error(`${T(`@60CAC:设置默认提交信息失败: `)}${e.message}`)}finally{U.value=!1}}return E({resetForm:J}),(o,l)=>{let u=ee,p=e,E=i,k=D,P=g,F=r,I=C;return w(),c(O,{modelValue:q.value,"onUpdate:modelValue":l[1]||=e=>q.value=e,title:n.title,"close-on-click-modal":!1,"append-to-body":!0,"custom-class":n.type===`message`?`message-template-dialog`:`template-dialog`},{default:s(()=>[f(`div`,{class:m([`template-container`,{"message-template-container":n.type===`message`}])},[f(`div`,te,[x(u,{modelValue:R.value,"onUpdate:modelValue":l[0]||=e=>R.value=e,placeholder:de.value,class:`template-input`,clearable:``,onKeyup:_(Y,[`enter`])},null,8,[`modelValue`,`placeholder`]),f(`div`,ne,[z.value?(w(),c(p,{key:0,onClick:pe},{default:s(()=>[t(b(v(T)(`@60CAC:取消`)),1)]),_:1})):y(``,!0),x(p,{type:`primary`,onClick:Y,disabled:!R.value.trim()||H.value,loading:H.value},{default:s(()=>[t(b(fe.value),1)]),_:1},8,[`disabled`,`loading`]),n.type===`message`?(w(),c(p,{key:1,type:`success`,onClick:me,disabled:!R.value.trim()||U.value,loading:U.value,plain:``},{default:s(()=>[t(b(v(T)(`@60CAC:设为默认提交信息`)),1)]),_:1},8,[`disabled`,`loading`])):y(``,!0)])]),n.type===`message`?(w(),S(`div`,oe,[f(`div`,se,[f(`h3`,null,b(v(T)(`@60CAC:已保存模板`)),1),f(`div`,ce,[G.value.length===0?(w(),c(E,{key:0,description:n.emptyDescription},null,8,[`description`])):y(``,!0),(w(!0),S(d,null,a(G.value,(e,n)=>(w(),c(F,{key:n,class:`template-item`},{default:s(()=>[x(P,{justify:`space-between`,align:`middle`,style:{width:`100%`}},{default:s(()=>[f(`div`,le,b(e),1),f(`div`,ue,[x(p,{size:`small`,class:`pin-button`,onClick:t=>Q(e),loading:W.value,disabled:n===0,title:`置顶`},{default:s(()=>[x(k,{"icon-class":`pin`,"class-name":`pin-icon`})]),_:1},8,[`onClick`,`loading`,`disabled`]),x(p,{type:`primary`,size:`small`,onClick:t=>X(e)},{default:s(()=>[t(b(v(T)(`@60CAC:使用`)),1)]),_:1},8,[`onClick`]),x(p,{type:`warning`,size:`small`,icon:v(h),onClick:t=>Z(e,Number(n))},{default:s(()=>[t(b(v(T)(`@60CAC:编辑`)),1)]),_:1},8,[`icon`,`onClick`]),x(p,{type:`danger`,size:`small`,onClick:t=>$(e)},{default:s(()=>[t(b(v(T)(`@60CAC:删除`)),1)]),_:1},8,[`onClick`])])]),_:2},1024)]),_:2},1024))),128))])]),n.showDefaultSection?(w(),S(`div`,j,[f(`h3`,null,b(v(T)(`@60CAC:当前默认提交信息`)),1),K.value?(w(),c(F,{key:0,class:`default-message-card`},{default:s(()=>[f(`div`,M,b(K.value),1)]),_:1})):(w(),c(E,{key:1,description:v(T)(`@60CAC:尚未设置默认提交信息`),"image-size":100},null,8,[`description`])),n.showHelpText?(w(),S(`div`,N,[f(`h4`,null,b(v(T)(`@60CAC:关于默认提交信息`)),1),f(`p`,null,b(v(T)(`@60CAC:默认提交信息将在未输入提交信息时自动使用。`)),1),f(`p`,null,[t(b(v(T)(`@60CAC:你可以通过点击左侧模板的`)),1),x(I,{size:`small`,type:`primary`},{default:s(()=>[t(b(v(T)(`@60CAC:使用`)),1)]),_:1}),t(b(v(T)(`@60CAC:按钮先选择喜欢的模板,然后点击上方`)),1),x(I,{size:`small`,type:`success`},{default:s(()=>[t(b(v(T)(`@60CAC:设为默认提交信息`)),1)]),_:1}),t(b(v(T)(`@60CAC:按钮保存。`)),1)])])):y(``,!0)])):y(``,!0)])):(w(),S(`div`,re,[f(`h3`,null,b(v(T)(`@60CAC:已保存`))+` `+b(n.type===`description`?v(T)(`@60CAC:模板`):n.type===`scope`?v(T)(`@60CAC:作用域`):n.type===`command`?v(T)(`@CMD01:命令模板`):``),1),G.value.length===0?(w(),c(E,{key:0,description:n.emptyDescription},null,8,[`description`])):(w(),S(`div`,ie,[(w(!0),S(d,null,a(G.value,(e,n)=>(w(),c(F,{key:n,class:`template-item`},{default:s(()=>[x(P,{justify:`space-between`,align:`middle`,style:{width:`100%`}},{default:s(()=>[f(`div`,ae,b(e),1),f(`div`,A,[x(p,{size:`small`,class:`pin-button`,onClick:t=>Q(e),loading:W.value,disabled:n===0,title:`置顶`},{default:s(()=>[x(k,{"icon-class":`pin`,"class-name":`pin-icon`})]),_:1},8,[`onClick`,`loading`,`disabled`]),x(p,{type:`primary`,size:`small`,onClick:t=>X(e)},{default:s(()=>[t(b(v(T)(`@60CAC:使用`)),1)]),_:1},8,[`onClick`]),x(p,{type:`warning`,size:`small`,icon:v(h),onClick:t=>Z(e,Number(n))},{default:s(()=>[t(b(v(T)(`@60CAC:编辑`)),1)]),_:1},8,[`icon`,`onClick`]),x(p,{type:`danger`,size:`small`,onClick:t=>$(e)},{default:s(()=>[t(b(v(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-CMxvf4Kt.js";import{Cn as e,En as t,Hn as n,Vn as r,Y as i,Zn as a,_n as o,_r as s,dn as c,gn as l,hn as u,hr as d,it as f,jt as p,mr as m,un as ee,vn as h,vr as g,wn as _,yn as v,yt as y,zn as b}from"./element-plus-CJjFCgLP.js";import{n as x,t as S}from"./_plugin-vue_export-helper-
|
|
1
|
+
import"./rolldown-runtime-CMxvf4Kt.js";import{Cn as e,En as t,Hn as n,Vn as r,Y as i,Zn as a,_n as o,_r as s,dn as c,gn as l,hn as u,hr as d,it as f,jt as p,mr as m,un as ee,vn as h,vr as g,wn as _,yn as v,yt as y,zn as b}from"./element-plus-CJjFCgLP.js";import{n as x,t as S}from"./_plugin-vue_export-helper-RXm384te.js";import{c as C,o as w}from"./vue-flow-HHfhvx4N.js";import{s as T}from"./index-D7_4Vxc8.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(t({__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(e,{emit:t}){let p=e,y=u(()=>!!(p.title&&String(p.title).trim()||p.icon&&String(p.icon).trim())),x=u(()=>y.value?16:0),S=u(()=>p.sourceHandleIds&&p.sourceHandleIds.length?p.sourceHandleIds:[`source`]),T=t;return(t,u)=>{let p=i;return b(),v(`div`,{class:d([`flow-node-wrapper`,[{disabled:!e.enabled,"is-selected":e.selected,"show-delete-on-selected":e.showDeleteOnSelected},e.nodeType?`node-type-${e.nodeType}`:``]])},[e.nodeType===`start`?h(``,!0):(b(),o(m(C),{key:0,id:`target`,type:`target`,position:m(w).Left,class:`flow-node-handle handle-left`},null,8,[`position`])),e.deletable===!1?h(``,!0):(b(),o(p,{key:1,class:`flow-node-delete-btn`,onClick:u[0]||=ee(t=>T(`delete`,e.nodeId),[`stop`]),title:`删除节点`,role:`button`,tabindex:`0`},{default:a(()=>[_(m(f))]),_:1})),e.execStatus?(b(),v(`div`,{key:2,class:d([`flow-node-status`,[`status-${e.execStatus}`]])},[e.execStatus===`running`?(b(),v(`span`,E,`执行中`)):e.execStatus===`success`?(b(),v(`span`,D,`成功`)):(b(),v(`span`,O,`失败`))],2)):h(``,!0),e.title||e.icon?(b(),v(`div`,k,[l(`div`,A,g(e.icon),1),l(`div`,j,g(e.title),1)])):h(``,!0),l(`div`,M,[n(t.$slots,`default`,{},void 0,!0)]),e.enabled?h(``,!0):(b(),v(`div`,N,`已禁用`)),e.nodeType===`condition`?(b(!0),v(c,{key:5},r(S.value,e=>(b(),o(m(C),{key:e,id:e,type:`source`,position:m(w).Right,class:`flow-node-handle handle-right`,style:s({top:`calc(50% + ${x.value}px + ${(S.value.indexOf(e)-(S.value.length-1)/2)*18}px)`})},null,8,[`id`,`position`,`style`]))),128)):(b(),o(m(C),{key:6,id:`source`,type:`source`,position:m(w).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(t({__name:`CommandNode`,props:{data:{},id:{}},setup(e){let t=e,n=T(),r=u(()=>!t.data.config||!t.data.config.commandId?null:n.customCommands.find(e=>e.id===t.data.config.commandId)||null),o=u(()=>t.data.config?{name:t.data.config.commandName||x(`@FLOWNODE:未配置`),terminal:t.data.config.useTerminal||!1,command:r.value?.command||``,directory:r.value?.directory||``}:null);return(t,n)=>{let r=i;return b(),v(`div`,F,[l(`div`,I,[o.value?.terminal?(b(),v(`div`,L,[_(r,null,{default:a(()=>[_(m(p))]),_:1}),l(`span`,null,g(m(x)(`@FLOWNODE:终端`)),1)])):h(``,!0)]),e.data.config?h(``,!0):(b(),v(`div`,R,g(m(x)(`@FLOWNODE:未配置`)),1)),o.value?.command?(b(),v(`div`,z,[l(`div`,B,[l(`code`,null,g(o.value.command),1)]),o.value.directory?(b(),v(`div`,V,[_(r,null,{default:a(()=>[_(m(y))]),_:1}),l(`span`,null,g(o.value.directory),1)])):h(``,!0)])):h(``,!0)])}}}),[[`__scopeId`,`data-v-7eaef8da`]]),U={class:`wait-node-content`},W={key:0,class:`node-warning`},G={key:1,class:`wait-seconds`},K=S(t({__name:`WaitNode`,props:{data:{},id:{}},setup(e){return(t,n)=>(b(),v(`div`,U,[e.data.config?(b(),v(`div`,G,g(m(x)(`@FLOWNODE:等待 {seconds} 秒`,{seconds:e.data.config?.waitSeconds??0})),1)):(b(),v(`div`,W,g(m(x)(`@FLOWNODE:未配置`)),1))]))}}),[[`__scopeId`,`data-v-26cc2aa1`]]),q={class:`version-node-content`},J={key:0,class:`node-badge`},te={key:1,class:`info-grid`},Y={class:`info-label`},X=[`title`],Z={key:2,class:`node-warning`},Q=S(t({__name:`VersionNode`,props:{data:{},id:{}},setup(e){let t=e,n=u(()=>{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,i)=>(b(),v(`div`,q,[n.value?.target===`dependency`?(b(),v(`div`,J,g(m(x)(`@FLOWNODE:依赖`)),1)):h(``,!0),n.value?.rows?.length?(b(),v(`div`,te,[(b(!0),v(c,null,r(n.value.rows,(e,t)=>(b(),v(`div`,{key:t,class:`info-row`},[l(`div`,Y,g(e.label),1),l(`div`,{class:`info-value`,title:e.value},g(e.value),9,X)]))),128))])):h(``,!0),e.data.config?h(``,!0):(b(),v(`div`,Z,g(m(x)(`@FLOWNODE:未配置`)),1))]))}}),[[`__scopeId`,`data-v-cc373b8c`]]),ne={key:0,class:`confirm-node-content`},re={class:`node-warning`},ie=S(t({__name:`ConfirmNode`,props:{data:{},id:{}},setup(e){return(t,n)=>e.data.config?h(``,!0):(b(),v(`div`,ne,[l(`div`,re,g(m(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(t({__name:`CodeNode`,props:{data:{},id:{}},setup(e){let t=e,n=u(()=>{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,[l(`div`,ce,[l(`span`,le,g(m(x)(`@NODECFG:脚本`))+`: `+g(n.value.hasScript?m(x)(`@FLOWNODE:已添加`):m(x)(`@FLOWNODE:未配置`)),1),l(`span`,ue,g(m(x)(`@NODECFG:输出键列表`))+`: `+g(n.value.outputKeys.length?n.value.outputKeys.join(`, `):m(x)(`@FLOWNODE:未配置`)),1)])])):(b(),v(`div`,oe,g(m(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(t({__name:`ConditionNode`,props:{id:{type:String,required:!0},data:{type:Object,required:!0}},setup(e){let t=e,n=u(()=>{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(c,null,r(n.value,e=>(b(),v(`div`,{key:e.id,class:`condition-branch`},[l(`span`,he,g(e.isDefault?`DEFAULT`:e.name),1),l(`span`,ge,`(`+g(e.combine.toUpperCase())+` / `+g(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(t({__name:`UserInputNode`,props:{data:{},id:{}},setup(t){let n=t,i=u(()=>{let e=n.data?.config;return(Array.isArray(e?.userInputParams)?e.userInputParams:[]).map(e=>String(e?.name||``).trim()).filter(e=>!!e)}),a=u(()=>{let e=n.data?.config,t=Array.isArray(e?.userInputParams)?e.userInputParams:[],r=new Set;for(let e of t){let t=String(e?.name||``).trim();t&&e?.required&&r.add(t)}return r}),o=u(()=>i.value.slice(0,3)),s=u(()=>i.value.length>3);return(n,u)=>(b(),v(`div`,ve,[t.data.config?(b(),v(c,{key:1},[i.value.length===0?(b(),v(`div`,be,g(m(x)(`@UINPUT:暂无输入参数`)),1)):(b(),v(`div`,$,[l(`div`,xe,g(m(x)(`@UINPUT:参数名`))+` (`+g(i.value.length)+`)`,1),l(`div`,Se,[(b(!0),v(c,null,r(o.value,t=>(b(),v(`span`,{key:t,class:d([`param-chip`,{required:a.value.has(t)}])},[a.value.has(t)?(b(),v(`span`,Ce,`*`)):h(``,!0),e(` `+g(t),1)],2))),128)),s.value?(b(),v(`span`,we,`+`+g(i.value.length-3),1)):h(``,!0)])]))],64)):(b(),v(`div`,ye,g(m(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-CMxvf4Kt.js";import{A as e,B as t,Cn as n,D as r,E as i,En as a,Et as o,F as s,Fn as c,In as l,It as u,J as d,K as f,L as p,Ln as m,Lt as h,Nn as g,Nt as _,Ot as v,Pt as y,Qn as b,R as x,Sn as S,Tt as ee,Vn as C,W as te,Wn as w,X as T,Y as ne,Yn as E,Z as re,Zn as D,_n as O,_r as k,a as A,at as j,b as M,cn as ie,cr as N,ct as ae,dn as P,dt as oe,et as F,f as se,g as ce,gn as I,gt as le,hn as L,hr as R,i as z,ir as ue,it as de,k as B,l as fe,ln as pe,lt as me,mr as V,o as he,on as ge,or as _e,ot as ve,p as ye,pn as be,pt as xe,q as Se,r as Ce,rt as we,sn as Te,un as H,vn as U,vr as W,wn as G,x as K,y as q,yn as J,yt as Ee,zn as Y}from"./element-plus-CJjFCgLP.js";import{r as De}from"./vendor-0YbzMuxw.js";import{n as X,t as Z}from"./_plugin-vue_export-helper-
|
|
1
|
+
import"./rolldown-runtime-CMxvf4Kt.js";import{A as e,B as t,Cn as n,D as r,E as i,En as a,Et as o,F as s,Fn as c,In as l,It as u,J as d,K as f,L as p,Ln as m,Lt as h,Nn as g,Nt as _,Ot as v,Pt as y,Qn as b,R as x,Sn as S,Tt as ee,Vn as C,W as te,Wn as w,X as T,Y as ne,Yn as E,Z as re,Zn as D,_n as O,_r as k,a as A,at as j,b as M,cn as ie,cr as N,ct as ae,dn as P,dt as oe,et as F,f as se,g as ce,gn as I,gt as le,hn as L,hr as R,i as z,ir as ue,it as de,k as B,l as fe,ln as pe,lt as me,mr as V,o as he,on as ge,or as _e,ot as ve,p as ye,pn as be,pt as xe,q as Se,r as Ce,rt as we,sn as Te,un as H,vn as U,vr as W,wn as G,x as K,y as q,yn as J,yt as Ee,zn as Y}from"./element-plus-CJjFCgLP.js";import{r as De}from"./vendor-0YbzMuxw.js";import{n as X,t as Z}from"./_plugin-vue_export-helper-RXm384te.js";import{n as Oe}from"./index-D7_4Vxc8.js";var ke={class:`ai-split-direct-pane`},Ae={key:0,class:`ai-split-status`},je={key:1,class:`ai-split-status`},Me={key:1},Ne={key:2},Pe={key:2,class:`ai-split-status is-error`},Fe={key:3,class:`ai-split-idle`},Ie={class:`ai-split-idle__title`},Le={class:`ai-split-idle__desc`},Re={class:`ai-split-prompt-actions`},ze={key:0,class:`ai-split-prompt-editor`},Be={class:`ai-split-prompt-editor__actions`},Ve={key:1,class:`ai-split-pre`},He={class:`ai-split-subhead`},Ue={class:`ai-split-user-actions`},We={key:3,class:`ai-split-pre`},Ge={key:0,class:`ai-split-tab-count`},Ke={class:`ai-split-pre ai-split-pre--think`},qe={key:0,class:`ai-split-tab-count`},Je={class:`ai-split-parse-error__detail`},Ye={class:`ai-split-parse-error__hint`},Q={class:`ai-split-parse-error__actions`},Xe={key:1,class:`ai-split-raw-toolbar`},Ze={class:`ai-split-raw-tip`},Qe={key:0,class:`ai-split-tab-count`},$e={key:0,class:`ai-split-empty`},et={key:1,class:`ai-split-list`},tt={class:`ai-split-list__no`},nt={class:`ai-split-list__body`},rt={class:`ai-split-list__title`},it={class:`ai-split-list__desc`},at={key:5,class:`ai-split-footer-hint`},ot={class:`ai-split-direct-footer`},st=Z(a({__name:`AISplitDirectPane`,props:{title:{},desc:{},taskId:{},promptId:{}},emits:[`confirm`],setup(e,{emit:r}){let i=e,a=r,s=N(`idle`),c=N(`prompt`),l=N(``),f=N(``),p=N(``),m=N(``),h=N(``),g=N([]),_=N(``),v=N(``),y=N(``),b=null,x=0,ee=L(()=>p.value.length),w=L(()=>m.value.length),T=L(()=>s.value===`result`&&g.value.length>0),re=L(()=>s.value===`running`),k=L(()=>s.value===`preview`),j=N(``),M=N(!1);function ie(){b&&=(b.abort(),null)}function ae(){ie(),s.value=`idle`,c.value=`prompt`,l.value=``,f.value=``,j.value=``,p.value=``,m.value=``,h.value=``,g.value=[],_.value=``,v.value=``,y.value=``}async function oe(){if(!i.title.trim()){A.warning(X(`@WORKBENCH:请先填写任务标题`));return}ae(),s.value=`preview`,c.value=`prompt`,M.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`,_.value=e.error||X(`@WORKBENCH:生成预览失败`);return}l.value=e.system||``,f.value=e.user||``,j.value=e.user||``}catch(e){s.value=`error`,_.value=e?.message||String(e)}finally{M.value=!1}}async function F(){if(!j.value.trim()){A.warning(X(`@WORKBENCH:提示词不能为空`));return}let e=++x;ie(),p.value=``,m.value=``,h.value=``,g.value=[],v.value=``,y.value=``,_.value=``,s.value=`running`,c.value=`thinking`,f.value=j.value,b=new AbortController;let t=b;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:j.value}),signal:t.signal});if(e!==x)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=``,u=null;for(;;){let{value:t,done:n}=await r.read();if(e!==x)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`:l.value=r.prompt?.system||l.value;break;case`thinking`:p.value+=String(r.delta||``);break;case`content`:m.value+=String(r.delta||``);break;case`done`:u=r;break;case`error`:throw Error(r.error||`AI 拆分失败`)}}}if(e!==x)return;if(!u)throw Error(X(`@WORKBENCH:AI 未返回结果`));g.value=Array.isArray(u.subtasks)?u.subtasks:[],h.value=u.raw||m.value,v.value=String(u.parseError||``),y.value=String(u.parseStage||``),p.value||=X(`@WORKBENCH:(当前模型未返回独立的思考内容,可切换到「原始结果」查看完整输出)`),s.value=`result`,c.value=g.value.length>0?`confirm`:`raw`}catch(n){if(e!==x)return;if(n?.name===`AbortError`||t.signal.aborted){s.value=`preview`,c.value=`prompt`;return}s.value=`error`,_.value=n?.message||String(n)}finally{e===x&&(b=null)}}function ce(){T.value&&a(`confirm`,g.value.slice())}function le(){j.value.trim()?F():oe()}function R(){b&&(b.abort(),b=null,A.info(X(`@WORKBENCH:已停止拆分`)))}let z=N(!1);async function ue(){if(!m.value.trim()){A.warning(X(`@WORKBENCH:原始结果为空,无法解析`));return}z.value=!0;try{let e=await fetch(`/api/workbench/tasks/parse-subtasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({raw:m.value})}).then(e=>e.json());if(!e.success){A.error(e.error||X(`@WORKBENCH:解析失败`));return}g.value=Array.isArray(e.subtasks)?e.subtasks:[],v.value=String(e.parseError||``),y.value=String(e.parseStage||``),h.value=m.value,g.value.length>0?(A.success(X(`@WORKBENCH:解析成功,已识别 {n} 个子任务`,{n:g.value.length})),c.value=`confirm`):A.warning(X(`@WORKBENCH:仍未解析到子任务,请继续修改原始结果`))}catch(e){A.error(X(`@WORKBENCH:解析失败: `)+(e?.message||e))}finally{z.value=!1}}E(()=>i.taskId,()=>{ae()});let de=N(!1),B=N(``),fe=N(!1);function pe(){B.value=l.value,de.value=!0}async function me(){if(!B.value.trim()){A.warning(X(`@WORKBENCH:指令内容不能为空`));return}fe.value=!0;try{let e=await fetch(`/api/workbench/tasks/ai-subtask-instruction`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({instruction:B.value})}).then(e=>e.json());e.success?(A.success(X(`@WORKBENCH:已保存指令`)),de.value=!1,oe()):A.error(e.error||X(`@WORKBENCH:保存失败`))}catch(e){A.error(X(`@WORKBENCH:保存失败: `)+(e?.message||e))}finally{fe.value=!1}}function he(){de.value=!1}return(e,r)=>{let i=ne,a=t,h=te,y=se,b=d,x=ye;return Y(),J(`div`,ke,[re.value?(Y(),J(`div`,Ae,[G(i,{class:`is-loading`},{default:D(()=>[G(V(o))]),_:1}),I(`span`,null,W(V(X)(`@WORKBENCH:AI 正在拆分…`)),1),G(a,{size:`small`,link:``,type:`danger`,class:`ai-split-status__stop`,onClick:R},{default:D(()=>[n(W(V(X)(`@WORKBENCH:停止拆分`)),1)]),_:1})])):k.value?(Y(),J(`div`,je,[M.value?(Y(),O(i,{key:0,class:`is-loading`},{default:D(()=>[G(V(o))]),_:1})):U(``,!0),M.value?(Y(),J(`span`,Me,W(V(X)(`@WORKBENCH:正在生成提示词预览…`)),1)):(Y(),J(`span`,Ne,W(V(X)(`@WORKBENCH:提示词已就绪,可在下方编辑后点「发送给 AI」开始拆分`)),1))])):s.value===`error`?(Y(),J(`div`,Pe,[G(i,{color:`#f56c6c`},{default:D(()=>[G(V(we))]),_:1}),I(`span`,null,W(_.value),1)])):s.value===`idle`?(Y(),J(`div`,Fe,[r[5]||=S(`<div class="ai-split-idle__icon" aria-hidden="true" data-v-85bcc687><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-85bcc687><path d="M12 3v3" data-v-85bcc687></path><path d="M12 18v3" data-v-85bcc687></path><path d="M3 12h3" data-v-85bcc687></path><path d="M18 12h3" data-v-85bcc687></path><path d="M5.6 5.6l2.1 2.1" data-v-85bcc687></path><path d="M16.3 16.3l2.1 2.1" data-v-85bcc687></path><path d="M5.6 18.4l2.1-2.1" data-v-85bcc687></path><path d="M16.3 7.7l2.1-2.1" data-v-85bcc687></path><circle cx="12" cy="12" r="4" data-v-85bcc687></circle></svg></div>`,1),I(`div`,Ie,W(V(X)(`@WORKBENCH:准备用 AI 拆分任务`)),1),I(`div`,Le,W(V(X)(`@WORKBENCH:点击下方按钮开始生成。生成期间可切换到「思考 / 原始结果」实时查看模型输出。`)),1),G(a,{type:`primary`,icon:V(u),onClick:oe},{default:D(()=>[n(W(V(X)(`@WORKBENCH:开始拆分`)),1)]),_:1},8,[`icon`])])):U(``,!0),s.value===`idle`?U(``,!0):(Y(),O(x,{key:4,modelValue:c.value,"onUpdate:modelValue":r[4]||=e=>c.value=e,class:`ai-split-tabs`},{default:D(()=>[G(y,{label:V(X)(`@WORKBENCH:提示词`),name:`prompt`},{default:D(()=>[I(`div`,Re,[G(a,{size:`small`,disabled:re.value,onClick:pe},{default:D(()=>[n(W(V(X)(`@WORKBENCH:编辑指令`)),1)]),_:1},8,[`disabled`])]),de.value?(Y(),J(`div`,ze,[G(h,{modelValue:B.value,"onUpdate:modelValue":r[0]||=e=>B.value=e,type:`textarea`,rows:12,placeholder:V(X)(`@WORKBENCH:指令内容`)},null,8,[`modelValue`,`placeholder`]),I(`div`,Be,[G(a,{size:`small`,onClick:he},{default:D(()=>[n(W(V(X)(`@WORKBENCH:取消`)),1)]),_:1}),G(a,{size:`small`,type:`primary`,loading:fe.value,onClick:me},{default:D(()=>[n(W(V(X)(`@WORKBENCH:保存并重跑`)),1)]),_:1},8,[`loading`])])])):(Y(),J(`pre`,Ve,W(l.value||`(等待 LLM 启动…)`),1)),I(`h4`,He,W(V(X)(`@WORKBENCH:用户提示词(拼装后)`)),1),k.value?(Y(),J(P,{key:2},[G(h,{modelValue:j.value,"onUpdate:modelValue":r[1]||=e=>j.value=e,type:`textarea`,rows:16,placeholder:V(X)(`@WORKBENCH:正在生成预览…`),readonly:M.value,class:`ai-split-user-editor`,resize:`none`},null,8,[`modelValue`,`placeholder`,`readonly`]),I(`div`,Ue,[G(a,{size:`small`,disabled:M.value,onClick:ae},{default:D(()=>[n(W(V(X)(`@WORKBENCH:取消`)),1)]),_:1},8,[`disabled`]),G(a,{type:`primary`,icon:V(u),disabled:M.value||!j.value.trim(),onClick:F},{default:D(()=>[n(W(V(X)(`@WORKBENCH:发送给 AI`)),1)]),_:1},8,[`icon`,`disabled`])])],64)):(Y(),J(`pre`,We,W(f.value||`(等待 LLM 启动…)`),1))]),_:1},8,[`label`]),G(y,{name:`thinking`},{label:D(()=>[I(`span`,null,[n(W(V(X)(`@WORKBENCH:思考`))+` `,1),ee.value>0?(Y(),J(`span`,Ge,`(`+W(ee.value)+`)`,1)):U(``,!0)])]),default:D(()=>[I(`pre`,Ke,W(p.value||V(X)(`@WORKBENCH:(暂无输出)`)),1)]),_:1}),G(y,{name:`raw`},{label:D(()=>[I(`span`,null,[n(W(V(X)(`@WORKBENCH:原始结果`))+` `,1),w.value>0?(Y(),J(`span`,qe,`(`+W(w.value)+`)`,1)):U(``,!0)])]),default:D(()=>[v.value&&s.value===`result`?(Y(),O(b,{key:0,type:`warning`,"show-icon":``,closable:!1,class:`ai-split-parse-error`},{title:D(()=>[n(W(V(X)(`@WORKBENCH:模型返回内容解析失败,无法识别为有效的子任务 JSON`)),1)]),default:D(()=>[I(`div`,Je,W(v.value),1),I(`div`,Ye,W(V(X)(`@WORKBENCH:常见原因:desc 内夹杂了 ASCII 双引号、出现尾随逗号,或输出被截断。可在下方文本框中手动修改后点「重新解析」,或重新生成。`)),1),I(`div`,Q,[G(a,{size:`small`,type:`primary`,loading:z.value,onClick:ue},{default:D(()=>[n(W(V(X)(`@WORKBENCH:重新解析`)),1)]),_:1},8,[`loading`]),G(a,{size:`small`,onClick:le},{default:D(()=>[n(W(V(X)(`@WORKBENCH:重新生成`)),1)]),_:1}),G(a,{size:`small`,onClick:r[2]||=e=>c.value=`prompt`},{default:D(()=>[n(W(V(X)(`@WORKBENCH:去编辑指令`)),1)]),_:1})])]),_:1})):U(``,!0),s.value===`result`||m.value?(Y(),J(`div`,Xe,[I(`span`,Ze,W(V(X)(`@WORKBENCH:可直接编辑下方文本,修正后点「重新解析」即可入库`)),1),G(a,{size:`small`,type:`primary`,loading:z.value,disabled:!m.value.trim(),onClick:ue},{default:D(()=>[n(W(V(X)(`@WORKBENCH:重新解析`)),1)]),_:1},8,[`loading`,`disabled`])])):U(``,!0),G(h,{modelValue:m.value,"onUpdate:modelValue":r[3]||=e=>m.value=e,type:`textarea`,rows:14,placeholder:V(X)(`@WORKBENCH:(暂无输出)`),readonly:re.value,class:`ai-split-raw-editor`,resize:`none`},null,8,[`modelValue`,`placeholder`,`readonly`])]),_:1}),G(y,{name:`confirm`,disabled:g.value.length===0},{label:D(()=>[I(`span`,null,[n(W(V(X)(`@WORKBENCH:确认入库`))+` `,1),g.value.length>0?(Y(),J(`span`,Qe,`(`+W(g.value.length)+`)`,1)):U(``,!0)])]),default:D(()=>[g.value.length===0?(Y(),J(`div`,$e,W(V(X)(`@WORKBENCH:(暂无子任务)`)),1)):(Y(),J(`ul`,et,[(Y(!0),J(P,null,C(g.value,(e,t)=>(Y(),J(`li`,{key:t,class:`ai-split-list__item`},[I(`div`,tt,W(t+1),1),I(`div`,nt,[I(`div`,rt,W(e.title),1),I(`div`,it,W(e.desc),1)])]))),128))]))]),_:1},8,[`disabled`])]),_:1},8,[`modelValue`])),v.value&&s.value===`result`&&g.value.length===0?(Y(),J(`div`,at,[G(i,{color:`#e6a23c`},{default:D(()=>[G(V(we))]),_:1}),I(`span`,null,W(V(X)(`@WORKBENCH:解析失败,未能从模型输出中提取出子任务 — 请查看「原始结果」`)),1)])):U(``,!0),I(`div`,ot,[s.value===`error`||s.value===`result`&&v.value&&g.value.length===0?(Y(),O(a,{key:0,onClick:le},{default:D(()=>[n(W(V(X)(`@WORKBENCH:重新生成`)),1)]),_:1})):U(``,!0),s.value===`result`&&g.value.length>0?(Y(),O(a,{key:1,onClick:le},{default:D(()=>[n(W(V(X)(`@WORKBENCH:重新拆分`)),1)]),_:1})):U(``,!0),G(a,{type:`primary`,disabled:!T.value,onClick:ce},{default:D(()=>[n(W(V(X)(`@WORKBENCH:确认入库`))+` (`+W(g.value.length)+`) `,1)]),_:1},8,[`disabled`])])])}}}),[[`__scopeId`,`data-v-85bcc687`]]),ct={class:`ai-chat-pane`},lt={key:0,class:`ai-chat-streaming-banner`},ut={key:1,class:`ai-chat-empty`},dt={class:`ai-chat-empty__title`},ft={class:`ai-chat-empty__desc`},pt={key:0,class:`ai-chat-bubble user`},mt={class:`ai-chat-content`},ht={key:1,class:`ai-chat-bubble assistant`},gt={class:`ai-chat-pre ai-chat-pre--think`},_t={key:1,class:`ai-chat-content-text`},vt={key:2,class:`ai-chat-subtasks`},yt={class:`ai-chat-subtasks__head`},bt={class:`ai-chat-subtasks__count`},xt={class:`ai-chat-list`},St={class:`ai-chat-list__no`},Ct={class:`ai-chat-list__body`},wt={class:`ai-chat-list__title`},Tt={class:`ai-chat-list__desc`},Et={class:`ai-chat-parse-error__detail`},Dt={class:`ai-chat-pre`},Ot={key:5,class:`ai-chat-turn__actions`},kt={class:`ai-chat-input`},At={class:`ai-chat-input__actions`},jt={key:0,class:`ai-chat-history__loading`},Mt={key:1,class:`ai-chat-history__empty`},Nt={key:2,class:`ai-chat-history__list`},Pt={class:`ai-chat-history__title`},Ft={class:`ai-chat-history__meta`},It={class:`ai-chat-history__actions`},Lt=Z(a({__name:`AISplitChatPane`,props:{title:{},desc:{},taskId:{},promptId:{},initialSessionId:{}},emits:[`confirm`],setup(r,{emit:a}){let s=r,c=a,l=N(`idle`),d=N(``),f=N([]),p=N(``),m=N(``),_=null,v=0,y=N(null),b=L(()=>l.value===`streaming`),x=L(()=>{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 正在思考…`)}),S=N(!1),ee=N(!1),w=N([]);function T(){y.value&&(y.value.scrollTop=y.value.scrollHeight)}async function E(){let e=p.value.trim();if(!e||b.value)return;if(!d.value&&!s.title.trim()){A.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),l.value=`streaming`,await g(),T();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=``,u=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`:u=r;break;case`error`:throw Error(r.error||`对话拆分失败`)}}f.value=[...f.value],await g(),T()}if(t!==v)return;if(!p&&!u)throw Error(X(`@WORKBENCH:AI 未返回结果`));u&&(i.subtasks=Array.isArray(u.subtasks)?u.subtasks:[],i.raw=String(u.raw||i.content),i.parseError=String(u.parseError||``),i.parseStage=String(u.parseStage||``)),f.value=[...f.value],await g(),T(),l.value=`idle`}catch(e){if(t!==v)return;if(e?.name===`AbortError`||n.signal.aborted){i.content=(i.content||``)+`
|
|
4
4
|
|