zen-gitsync 2.18.23 → 2.18.24

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 (46) hide show
  1. package/package.json +5 -2
  2. package/src/cli/ai/tools.js +113 -0
  3. package/src/cli/ai/webSearch.js +260 -0
  4. package/src/config.js +71 -1
  5. package/src/ui/public/assets/{AgentView-DQOp7_6G.js → AgentView-CiWEJ_2v.js} +1 -1
  6. package/src/ui/public/assets/{AppVersionBadge-BBVS3HeA.js → AppVersionBadge-D3IEpIR2.js} +2 -2
  7. package/src/ui/public/assets/{BranchSelector-BwmMgaSS.js → BranchSelector-C0nB2LEE.js} +1 -1
  8. package/src/ui/public/assets/{ChatSilenceBadge-BnaLbCwp.js → ChatSilenceBadge-hb_fJMMg.js} +1 -1
  9. package/src/ui/public/assets/{CommitForm-BtRxJodG.js → CommitForm-CvOOlBZI.js} +1 -1
  10. package/src/ui/public/assets/{CommonDialog-Qg_owAyQ.js → CommonDialog-C0zTwqdL.js} +1 -1
  11. package/src/ui/public/assets/{EditorView-DL3Lj4ho.js → EditorView-BWVtGf7z.js} +1 -1
  12. package/src/ui/public/assets/{FlowExecutionViewer-BsxAtCqd.js → FlowExecutionViewer-ai4_NArk.js} +1 -1
  13. package/src/ui/public/assets/{FlowOrchestrationWorkspace-lcqnsQE-.js → FlowOrchestrationWorkspace-Lhxo8V4t.js} +1 -1
  14. package/src/ui/public/assets/{LogList-CW3-fShz.js → LogList-CX8R6MyZ.js} +1 -1
  15. package/src/ui/public/assets/{MindmapView-ymN6XI7n.js → MindmapView-Cp2j7oyO.js} +1 -1
  16. package/src/ui/public/assets/{MonitorView-C4fFNPb2.js → MonitorView-CdjqaM-T.js} +1 -1
  17. package/src/ui/public/assets/{ProjectManagerView-ph_imDtI.js → ProjectManagerView-wlBbHwVQ.js} +1 -1
  18. package/src/ui/public/assets/{ProjectStartupButton-C2dqnR-6.js → ProjectStartupButton-DlZSyZx4.js} +1 -1
  19. package/src/ui/public/assets/{RemoteManagerDialog-DFkRW2O4.js → RemoteManagerDialog-CcO2xc2Y.js} +1 -1
  20. package/src/ui/public/assets/{RemoteRepoCard-BBnMjldy.js → RemoteRepoCard-DB0iLLQa.js} +1 -1
  21. package/src/ui/public/assets/{SourceMapView-CQcK1acs.js → SourceMapView-DpS3HjJy.js} +1 -1
  22. package/src/ui/public/assets/{SvgIcon-XBkgNKCj.js → SvgIcon-Coxq3TGz.js} +1 -1
  23. package/src/ui/public/assets/{TaskExecutorPicker-B6p57RJY.js → TaskExecutorPicker-CJZD3YVi.js} +1 -1
  24. package/src/ui/public/assets/{UserInputNode-CkXLP8y4.js → UserInputNode-C_znv4Pn.js} +1 -1
  25. package/src/ui/public/assets/WorkbenchView-B0DU80Kl.js +6 -0
  26. package/src/ui/public/assets/{WorkbenchView-MUfM9DER.css → WorkbenchView-SonUoHZE.css} +1 -1
  27. package/src/ui/public/assets/{_plugin-vue_export-helper-B3dZvHQf.js → _plugin-vue_export-helper-PJOlbt_0.js} +4 -4
  28. package/src/ui/public/assets/configStore-ByUSd24J.js +1 -0
  29. package/src/ui/public/assets/index-BTEGKhWc.js +59 -0
  30. package/src/ui/public/assets/index-Q5dnmWKq.css +1 -0
  31. package/src/ui/public/assets/{relativeTime-Ce-gekf_.js → relativeTime-De2wWXk0.js} +1 -1
  32. package/src/ui/public/assets/{taskExecutionExport-Hfww5P9_.js → taskExecutionExport-Bb0HWZiH.js} +1 -1
  33. package/src/ui/public/assets/{toolsStore-oZEAoHnG.js → toolsStore-ChBM3BeQ.js} +1 -1
  34. package/src/ui/public/assets/{useWorkbenchProjects-BifctigH.js → useWorkbenchProjects-CrDCUDV3.js} +1 -1
  35. package/src/ui/public/index.html +7 -7
  36. package/src/ui/server/routes/config.js +14 -0
  37. package/src/ui/server/routes/workbench/dispatchInstruction.js +9 -0
  38. package/src/ui/server/routes/workbench/imageDescribe.js +183 -0
  39. package/src/ui/server/routes/workbench/imageDescribe.test.js +149 -0
  40. package/src/ui/server/routes/workbench/index.js +2 -1
  41. package/src/ui/server/routes/workbench/pdfText.js +22 -5
  42. package/src/ui/server/routes/workbench/taskRunner.js +30 -1
  43. package/src/ui/public/assets/WorkbenchView-cucUmAwl.js +0 -6
  44. package/src/ui/public/assets/configStore-HDlssep1.js +0 -1
  45. package/src/ui/public/assets/index-CAWXBaPa.js +0 -59
  46. package/src/ui/public/assets/index-CigPOqV6.css +0 -1
@@ -1 +1 @@
1
- import"./rolldown-runtime-C0FnF6B9.js";import{An as e,Ar as t,Cn as n,Gr as r,In as i,J as a,Jr as o,Mn as s,Nt as c,Sn as l,Sr as u,Tn as d,Ur as f,Xn as p,Yn as m,_n as h,bt as g,gn as ee,ir as _,kn as v,lr as y,on as b,qn as x,rt as te,wn as S,xn as C}from"./element-plus-CN9J6t-d.js";import{n as w,t as T}from"./_plugin-vue_export-helper-B3dZvHQf.js";import{t as E}from"./configStore-HDlssep1.js";import{c as D,o as O}from"./vue-flow-NLvet82_.js";i(),y(),b(),t();var k={key:0},A={key:1},j={key:2},M={key:3,class:`node-header`},N={class:`flow-node-icon`},P={class:`node-title`},F={class:`node-body`},I={key:4,class:`disabled-overlay`},L=T(s({__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(t,{emit:i}){let s=t,c=C(()=>!!(s.title&&String(s.title).trim()||s.icon&&String(s.icon).trim())),g=C(()=>c.value?16:0),v=C(()=>s.sourceHandleIds&&s.sourceHandleIds.length?s.sourceHandleIds:[`source`]),y=i;return(i,s)=>{let c=a;return x(),d(`div`,{class:f([`flow-node-wrapper`,[{disabled:!t.enabled,"is-selected":t.selected,"show-delete-on-selected":t.showDeleteOnSelected},t.nodeType?`node-type-${t.nodeType}`:``]])},[t.nodeType===`start`?S(``,!0):(x(),n(u(D),{key:0,id:`target`,type:`target`,position:u(O).Left,class:`flow-node-handle handle-left`},null,8,[`position`])),t.deletable===!1?S(``,!0):(x(),n(c,{key:1,class:`flow-node-delete-btn`,onClick:s[0]||=ee(e=>y(`delete`,t.nodeId),[`stop`]),title:`删除节点`,role:`button`,tabindex:`0`},{default:_(()=>[e(u(te))]),_:1})),t.execStatus?(x(),d(`div`,{key:2,class:f([`flow-node-status`,[`status-${t.execStatus}`]])},[t.execStatus===`running`?(x(),d(`span`,k,`执行中`)):t.execStatus===`success`?(x(),d(`span`,A,`成功`)):(x(),d(`span`,j,`失败`))],2)):S(``,!0),t.title||t.icon?(x(),d(`div`,M,[l(`div`,N,o(t.icon),1),l(`div`,P,o(t.title),1)])):S(``,!0),l(`div`,F,[p(i.$slots,`default`,{},void 0,!0)]),t.enabled?S(``,!0):(x(),d(`div`,I,`已禁用`)),t.nodeType===`condition`?(x(!0),d(h,{key:5},m(v.value,e=>(x(),n(u(D),{key:e,id:e,type:`source`,position:u(O).Right,class:`flow-node-handle handle-right`,style:r({top:`calc(50% + ${g.value}px + ${(v.value.indexOf(e)-(v.value.length-1)/2)*18}px)`})},null,8,[`id`,`position`,`style`]))),128)):(x(),n(u(D),{key:6,id:`source`,type:`source`,position:u(O).Right,class:`flow-node-handle handle-right`},null,8,[`position`]))],2)}}}),[[`__scopeId`,`data-v-0b0b9de2`]]);i(),y(),t();var R={class:`command-node-content`},z={class:`node-badges`},B={key:0,class:`node-badge terminal`},V={key:0,class:`node-warning`},H={key:1,class:`command-details`},U={class:`command-code`},W={key:0,class:`command-dir`},G=T(s({__name:`CommandNode`,props:{data:{},id:{}},setup(t){let n=t,r=E(),i=C(()=>!n.data.config||!n.data.config.commandId?null:r.customCommands.find(e=>e.id===n.data.config.commandId)||null),s=C(()=>n.data.config?{name:n.data.config.commandName||w(`@FLOWNODE:未配置`),terminal:n.data.config.useTerminal||!1,command:i.value?.command||``,directory:i.value?.directory||``}:null);return(n,r)=>{let i=a;return x(),d(`div`,R,[l(`div`,z,[s.value?.terminal?(x(),d(`div`,B,[e(i,null,{default:_(()=>[e(u(c))]),_:1}),l(`span`,null,o(u(w)(`@FLOWNODE:终端`)),1)])):S(``,!0)]),t.data.config?S(``,!0):(x(),d(`div`,V,o(u(w)(`@FLOWNODE:未配置`)),1)),s.value?.command?(x(),d(`div`,H,[l(`div`,U,[l(`code`,null,o(s.value.command),1)]),s.value.directory?(x(),d(`div`,W,[e(i,null,{default:_(()=>[e(u(g))]),_:1}),l(`span`,null,o(s.value.directory),1)])):S(``,!0)])):S(``,!0)])}}}),[[`__scopeId`,`data-v-e51dadd3`]]);i(),y(),t();var K={class:`wait-node-content`},q={key:0,class:`node-warning`},J={key:1,class:`wait-seconds`},Y=T(s({__name:`WaitNode`,props:{data:{},id:{}},setup(e){return(t,n)=>(x(),d(`div`,K,[e.data.config?(x(),d(`div`,J,o(u(w)(`@FLOWNODE:等待 {seconds} 秒`,{seconds:e.data.config?.waitSeconds??0})),1)):(x(),d(`div`,q,o(u(w)(`@FLOWNODE:未配置`)),1))]))}}),[[`__scopeId`,`data-v-04b8ee53`]]);i(),y(),t();var X={class:`version-node-content`},Z={key:0,class:`node-badge`},Q={key:1,class:`info-grid`},ne={class:`info-label`},re=[`title`],ie={key:2,class:`node-warning`},ae=T(s({__name:`VersionNode`,props:{data:{},id:{}},setup(e){let t=e,n=C(()=>{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:w(`@FLOWNODE:目标`),value:w(n===`dependency`?`@FLOWNODE:依赖版本`:`@FLOWNODE:version字段`)}),i.push({label:w(`@FLOWNODE:来源`),value:w(r===`reference`?`@FLOWNODE:引用输出`:r===`input`?`@FLOWNODE:引用输入`:r===`manual`?`@FLOWNODE:手动输入`:`@FLOWNODE:自动递增`)});let a=String(e?.packageJsonPath||``).trim();if(i.push({label:w(`@FLOWNODE:package.json`),value:a||w(`@FLOWNODE:当前目录`)}),n===`dependency`){let t=String(e?.dependencyType||`dependencies`),n=String(e?.dependencyName||``).trim();if(n&&i.push({label:w(`@FLOWNODE:依赖`),value:`${t}::${n}`}),r===`manual`){let t=String(e?.dependencyVersion||``).trim();t&&i.push({label:w(`@FLOWNODE:版本号`),value:t})}else if(r===`bump`){let t=String(e?.dependencyVersionBump||e?.versionBump||`patch`);i.push({label:w(`@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:w(`@FLOWNODE:引用`),value:r})}else if(r===`input`){let t=String(e?.dependencyVersionInputKey||e?.versionInputKey||``).trim();t&&i.push({label:w(`@FLOWNODE:引用`),value:t})}}else{let t=String(e?.versionBump||`patch`);i.push({label:w(`@FLOWNODE:递增`),value:t})}return{target:n,rows:i}});return(t,r)=>(x(),d(`div`,X,[n.value?.target===`dependency`?(x(),d(`div`,Z,o(u(w)(`@FLOWNODE:依赖`)),1)):S(``,!0),n.value?.rows?.length?(x(),d(`div`,Q,[(x(!0),d(h,null,m(n.value.rows,(e,t)=>(x(),d(`div`,{key:t,class:`info-row`},[l(`div`,ne,o(e.label),1),l(`div`,{class:`info-value`,title:e.value},o(e.value),9,re)]))),128))])):S(``,!0),e.data.config?S(``,!0):(x(),d(`div`,ie,o(u(w)(`@FLOWNODE:未配置`)),1))]))}}),[[`__scopeId`,`data-v-6091a498`]]);i(),y(),t();var oe={key:0,class:`confirm-node-content`},se={class:`node-warning`},ce=T(s({__name:`ConfirmNode`,props:{data:{},id:{}},setup(e){return(t,n)=>e.data.config?S(``,!0):(x(),d(`div`,oe,[l(`div`,se,o(u(w)(`@FLOWNODE:未配置`)),1)]))}}),[[`__scopeId`,`data-v-57d5e863`]]);i(),y(),t();var le={class:`code-node-content`},ue={key:0,class:`node-warning`},de={key:1,class:`code-details`},fe={class:`code-meta`},pe={class:`meta-item`},me={class:`meta-item`},he=T(s({__name:`CodeNode`,props:{data:{},id:{}},setup(e){let t=e,n=C(()=>{let e=t.data.config||{};return{hasScript:!!(e.codeScript&&String(e.codeScript).trim()),outputKeys:Array.isArray(e.codeOutputKeys)?e.codeOutputKeys:[]}});return(t,r)=>(x(),d(`div`,le,[e.data.config?(x(),d(`div`,de,[l(`div`,fe,[l(`span`,pe,o(u(w)(`@NODECFG:脚本`))+`: `+o(n.value.hasScript?u(w)(`@FLOWNODE:已添加`):u(w)(`@FLOWNODE:未配置`)),1),l(`span`,me,o(u(w)(`@NODECFG:输出键列表`))+`: `+o(n.value.outputKeys.length?n.value.outputKeys.join(`, `):u(w)(`@FLOWNODE:未配置`)),1)])])):(x(),d(`div`,ue,o(u(w)(`@FLOWNODE:未配置`)),1))]))}}),[[`__scopeId`,`data-v-2f260bdf`]]);i(),t();var ge={class:`condition-node`},_e={key:0,class:`condition-empty`},ve={key:1,class:`condition-branches`},ye={class:`branch-name`},be={class:`branch-meta`},$=T(s({__name:`ConditionNode`,props:{id:{type:String,required:!0},data:{type:Object,required:!0}},setup(e){let t=e,n=C(()=>{let e=t.data?.config;return[...Array.isArray(e?.conditionBranches)?e.conditionBranches:[]].sort((e,t)=>(e.priority??0)-(t.priority??0))});return(e,t)=>(x(),d(`div`,ge,[n.value.length===0?(x(),d(`div`,_e,`未配置条件分支`)):(x(),d(`div`,ve,[(x(!0),d(h,null,m(n.value,e=>(x(),d(`div`,{key:e.id,class:`condition-branch`},[l(`span`,ye,o(e.isDefault?`DEFAULT`:e.name),1),l(`span`,be,`(`+o(e.combine.toUpperCase())+` / `+o(e.rules.length)+`)`,1)]))),128))]))]))}}),[[`__scopeId`,`data-v-c1d4e61f`]]);i(),y(),t();var xe={class:`user-input-node-content`},Se={key:0,class:`node-warning`},Ce={key:0,class:`node-warning`},we={key:1,class:`param-summary`},Te={class:`param-count`},Ee={class:`param-list`},De={key:0,class:`star`},Oe={key:0,class:`more`},ke=T(s({__name:`UserInputNode`,props:{data:{},id:{}},setup(e){let t=e,n=C(()=>{let e=t.data?.config;return(Array.isArray(e?.userInputParams)?e.userInputParams:[]).map(e=>String(e?.name||``).trim()).filter(e=>!!e)}),r=C(()=>{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}),i=C(()=>n.value.slice(0,3)),a=C(()=>n.value.length>3);return(t,s)=>(x(),d(`div`,xe,[e.data.config?(x(),d(h,{key:1},[n.value.length===0?(x(),d(`div`,Ce,o(u(w)(`@UINPUT:暂无输入参数`)),1)):(x(),d(`div`,we,[l(`div`,Te,o(u(w)(`@UINPUT:参数名`))+` (`+o(n.value.length)+`)`,1),l(`div`,Ee,[(x(!0),d(h,null,m(i.value,e=>(x(),d(`span`,{key:e,class:f([`param-chip`,{required:r.value.has(e)}])},[r.value.has(e)?(x(),d(`span`,De,`*`)):S(``,!0),v(` `+o(e),1)],2))),128)),a.value?(x(),d(`span`,Oe,`+`+o(n.value.length-3),1)):S(``,!0)])]))],64)):(x(),d(`div`,Se,o(u(w)(`@FLOWNODE:未配置`)),1))]))}}),[[`__scopeId`,`data-v-ed37275f`]]);export{ae as a,L as c,ce as i,$ as n,Y as o,he as r,G as s,ke as t};
1
+ import"./rolldown-runtime-C0FnF6B9.js";import{An as e,Ar as t,Cn as n,Gr as r,In as i,J as a,Jr as o,Mn as s,Nt as c,Sn as l,Sr as u,Tn as d,Ur as f,Xn as p,Yn as m,_n as h,bt as g,gn as ee,ir as _,kn as v,lr as y,on as b,qn as x,rt as te,wn as S,xn as C}from"./element-plus-CN9J6t-d.js";import{n as w,t as T}from"./_plugin-vue_export-helper-PJOlbt_0.js";import{t as E}from"./configStore-ByUSd24J.js";import{c as D,o as O}from"./vue-flow-NLvet82_.js";i(),y(),b(),t();var k={key:0},A={key:1},j={key:2},M={key:3,class:`node-header`},N={class:`flow-node-icon`},P={class:`node-title`},F={class:`node-body`},I={key:4,class:`disabled-overlay`},L=T(s({__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(t,{emit:i}){let s=t,c=C(()=>!!(s.title&&String(s.title).trim()||s.icon&&String(s.icon).trim())),g=C(()=>c.value?16:0),v=C(()=>s.sourceHandleIds&&s.sourceHandleIds.length?s.sourceHandleIds:[`source`]),y=i;return(i,s)=>{let c=a;return x(),d(`div`,{class:f([`flow-node-wrapper`,[{disabled:!t.enabled,"is-selected":t.selected,"show-delete-on-selected":t.showDeleteOnSelected},t.nodeType?`node-type-${t.nodeType}`:``]])},[t.nodeType===`start`?S(``,!0):(x(),n(u(D),{key:0,id:`target`,type:`target`,position:u(O).Left,class:`flow-node-handle handle-left`},null,8,[`position`])),t.deletable===!1?S(``,!0):(x(),n(c,{key:1,class:`flow-node-delete-btn`,onClick:s[0]||=ee(e=>y(`delete`,t.nodeId),[`stop`]),title:`删除节点`,role:`button`,tabindex:`0`},{default:_(()=>[e(u(te))]),_:1})),t.execStatus?(x(),d(`div`,{key:2,class:f([`flow-node-status`,[`status-${t.execStatus}`]])},[t.execStatus===`running`?(x(),d(`span`,k,`执行中`)):t.execStatus===`success`?(x(),d(`span`,A,`成功`)):(x(),d(`span`,j,`失败`))],2)):S(``,!0),t.title||t.icon?(x(),d(`div`,M,[l(`div`,N,o(t.icon),1),l(`div`,P,o(t.title),1)])):S(``,!0),l(`div`,F,[p(i.$slots,`default`,{},void 0,!0)]),t.enabled?S(``,!0):(x(),d(`div`,I,`已禁用`)),t.nodeType===`condition`?(x(!0),d(h,{key:5},m(v.value,e=>(x(),n(u(D),{key:e,id:e,type:`source`,position:u(O).Right,class:`flow-node-handle handle-right`,style:r({top:`calc(50% + ${g.value}px + ${(v.value.indexOf(e)-(v.value.length-1)/2)*18}px)`})},null,8,[`id`,`position`,`style`]))),128)):(x(),n(u(D),{key:6,id:`source`,type:`source`,position:u(O).Right,class:`flow-node-handle handle-right`},null,8,[`position`]))],2)}}}),[[`__scopeId`,`data-v-0b0b9de2`]]);i(),y(),t();var R={class:`command-node-content`},z={class:`node-badges`},B={key:0,class:`node-badge terminal`},V={key:0,class:`node-warning`},H={key:1,class:`command-details`},U={class:`command-code`},W={key:0,class:`command-dir`},G=T(s({__name:`CommandNode`,props:{data:{},id:{}},setup(t){let n=t,r=E(),i=C(()=>!n.data.config||!n.data.config.commandId?null:r.customCommands.find(e=>e.id===n.data.config.commandId)||null),s=C(()=>n.data.config?{name:n.data.config.commandName||w(`@FLOWNODE:未配置`),terminal:n.data.config.useTerminal||!1,command:i.value?.command||``,directory:i.value?.directory||``}:null);return(n,r)=>{let i=a;return x(),d(`div`,R,[l(`div`,z,[s.value?.terminal?(x(),d(`div`,B,[e(i,null,{default:_(()=>[e(u(c))]),_:1}),l(`span`,null,o(u(w)(`@FLOWNODE:终端`)),1)])):S(``,!0)]),t.data.config?S(``,!0):(x(),d(`div`,V,o(u(w)(`@FLOWNODE:未配置`)),1)),s.value?.command?(x(),d(`div`,H,[l(`div`,U,[l(`code`,null,o(s.value.command),1)]),s.value.directory?(x(),d(`div`,W,[e(i,null,{default:_(()=>[e(u(g))]),_:1}),l(`span`,null,o(s.value.directory),1)])):S(``,!0)])):S(``,!0)])}}}),[[`__scopeId`,`data-v-e51dadd3`]]);i(),y(),t();var K={class:`wait-node-content`},q={key:0,class:`node-warning`},J={key:1,class:`wait-seconds`},Y=T(s({__name:`WaitNode`,props:{data:{},id:{}},setup(e){return(t,n)=>(x(),d(`div`,K,[e.data.config?(x(),d(`div`,J,o(u(w)(`@FLOWNODE:等待 {seconds} 秒`,{seconds:e.data.config?.waitSeconds??0})),1)):(x(),d(`div`,q,o(u(w)(`@FLOWNODE:未配置`)),1))]))}}),[[`__scopeId`,`data-v-04b8ee53`]]);i(),y(),t();var X={class:`version-node-content`},Z={key:0,class:`node-badge`},Q={key:1,class:`info-grid`},ne={class:`info-label`},re=[`title`],ie={key:2,class:`node-warning`},ae=T(s({__name:`VersionNode`,props:{data:{},id:{}},setup(e){let t=e,n=C(()=>{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:w(`@FLOWNODE:目标`),value:w(n===`dependency`?`@FLOWNODE:依赖版本`:`@FLOWNODE:version字段`)}),i.push({label:w(`@FLOWNODE:来源`),value:w(r===`reference`?`@FLOWNODE:引用输出`:r===`input`?`@FLOWNODE:引用输入`:r===`manual`?`@FLOWNODE:手动输入`:`@FLOWNODE:自动递增`)});let a=String(e?.packageJsonPath||``).trim();if(i.push({label:w(`@FLOWNODE:package.json`),value:a||w(`@FLOWNODE:当前目录`)}),n===`dependency`){let t=String(e?.dependencyType||`dependencies`),n=String(e?.dependencyName||``).trim();if(n&&i.push({label:w(`@FLOWNODE:依赖`),value:`${t}::${n}`}),r===`manual`){let t=String(e?.dependencyVersion||``).trim();t&&i.push({label:w(`@FLOWNODE:版本号`),value:t})}else if(r===`bump`){let t=String(e?.dependencyVersionBump||e?.versionBump||`patch`);i.push({label:w(`@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:w(`@FLOWNODE:引用`),value:r})}else if(r===`input`){let t=String(e?.dependencyVersionInputKey||e?.versionInputKey||``).trim();t&&i.push({label:w(`@FLOWNODE:引用`),value:t})}}else{let t=String(e?.versionBump||`patch`);i.push({label:w(`@FLOWNODE:递增`),value:t})}return{target:n,rows:i}});return(t,r)=>(x(),d(`div`,X,[n.value?.target===`dependency`?(x(),d(`div`,Z,o(u(w)(`@FLOWNODE:依赖`)),1)):S(``,!0),n.value?.rows?.length?(x(),d(`div`,Q,[(x(!0),d(h,null,m(n.value.rows,(e,t)=>(x(),d(`div`,{key:t,class:`info-row`},[l(`div`,ne,o(e.label),1),l(`div`,{class:`info-value`,title:e.value},o(e.value),9,re)]))),128))])):S(``,!0),e.data.config?S(``,!0):(x(),d(`div`,ie,o(u(w)(`@FLOWNODE:未配置`)),1))]))}}),[[`__scopeId`,`data-v-6091a498`]]);i(),y(),t();var oe={key:0,class:`confirm-node-content`},se={class:`node-warning`},ce=T(s({__name:`ConfirmNode`,props:{data:{},id:{}},setup(e){return(t,n)=>e.data.config?S(``,!0):(x(),d(`div`,oe,[l(`div`,se,o(u(w)(`@FLOWNODE:未配置`)),1)]))}}),[[`__scopeId`,`data-v-57d5e863`]]);i(),y(),t();var le={class:`code-node-content`},ue={key:0,class:`node-warning`},de={key:1,class:`code-details`},fe={class:`code-meta`},pe={class:`meta-item`},me={class:`meta-item`},he=T(s({__name:`CodeNode`,props:{data:{},id:{}},setup(e){let t=e,n=C(()=>{let e=t.data.config||{};return{hasScript:!!(e.codeScript&&String(e.codeScript).trim()),outputKeys:Array.isArray(e.codeOutputKeys)?e.codeOutputKeys:[]}});return(t,r)=>(x(),d(`div`,le,[e.data.config?(x(),d(`div`,de,[l(`div`,fe,[l(`span`,pe,o(u(w)(`@NODECFG:脚本`))+`: `+o(n.value.hasScript?u(w)(`@FLOWNODE:已添加`):u(w)(`@FLOWNODE:未配置`)),1),l(`span`,me,o(u(w)(`@NODECFG:输出键列表`))+`: `+o(n.value.outputKeys.length?n.value.outputKeys.join(`, `):u(w)(`@FLOWNODE:未配置`)),1)])])):(x(),d(`div`,ue,o(u(w)(`@FLOWNODE:未配置`)),1))]))}}),[[`__scopeId`,`data-v-2f260bdf`]]);i(),t();var ge={class:`condition-node`},_e={key:0,class:`condition-empty`},ve={key:1,class:`condition-branches`},ye={class:`branch-name`},be={class:`branch-meta`},$=T(s({__name:`ConditionNode`,props:{id:{type:String,required:!0},data:{type:Object,required:!0}},setup(e){let t=e,n=C(()=>{let e=t.data?.config;return[...Array.isArray(e?.conditionBranches)?e.conditionBranches:[]].sort((e,t)=>(e.priority??0)-(t.priority??0))});return(e,t)=>(x(),d(`div`,ge,[n.value.length===0?(x(),d(`div`,_e,`未配置条件分支`)):(x(),d(`div`,ve,[(x(!0),d(h,null,m(n.value,e=>(x(),d(`div`,{key:e.id,class:`condition-branch`},[l(`span`,ye,o(e.isDefault?`DEFAULT`:e.name),1),l(`span`,be,`(`+o(e.combine.toUpperCase())+` / `+o(e.rules.length)+`)`,1)]))),128))]))]))}}),[[`__scopeId`,`data-v-c1d4e61f`]]);i(),y(),t();var xe={class:`user-input-node-content`},Se={key:0,class:`node-warning`},Ce={key:0,class:`node-warning`},we={key:1,class:`param-summary`},Te={class:`param-count`},Ee={class:`param-list`},De={key:0,class:`star`},Oe={key:0,class:`more`},ke=T(s({__name:`UserInputNode`,props:{data:{},id:{}},setup(e){let t=e,n=C(()=>{let e=t.data?.config;return(Array.isArray(e?.userInputParams)?e.userInputParams:[]).map(e=>String(e?.name||``).trim()).filter(e=>!!e)}),r=C(()=>{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}),i=C(()=>n.value.slice(0,3)),a=C(()=>n.value.length>3);return(t,s)=>(x(),d(`div`,xe,[e.data.config?(x(),d(h,{key:1},[n.value.length===0?(x(),d(`div`,Ce,o(u(w)(`@UINPUT:暂无输入参数`)),1)):(x(),d(`div`,we,[l(`div`,Te,o(u(w)(`@UINPUT:参数名`))+` (`+o(n.value.length)+`)`,1),l(`div`,Ee,[(x(!0),d(h,null,m(i.value,e=>(x(),d(`span`,{key:e,class:f([`param-chip`,{required:r.value.has(e)}])},[r.value.has(e)?(x(),d(`span`,De,`*`)):S(``,!0),v(` `+o(e),1)],2))),128)),a.value?(x(),d(`span`,Oe,`+`+o(n.value.length-3),1)):S(``,!0)])]))],64)):(x(),d(`div`,Se,o(u(w)(`@FLOWNODE:未配置`)),1))]))}}),[[`__scopeId`,`data-v-ed37275f`]]);export{ae as a,L as c,ce as i,$ as n,Y as o,he as r,G as s,ke as t};
@@ -0,0 +1,6 @@
1
+ import"./rolldown-runtime-C0FnF6B9.js";import{An as e,Ar as t,Bn as n,C as r,Cn as i,F as a,Ft as o,Gn as s,Gr as c,I as l,In as u,J as d,Jr as f,Lt as p,Mn as m,N as h,Ot as g,Pt as _,Qn as ee,Qt as v,Rt as te,S as y,Sn as b,Sr as x,Tn as S,U as ne,Un as C,Ur as w,X as T,Y as re,Yn as E,Z as ie,_ as D,_n as O,a as k,ar as A,at as ae,b as oe,bt as j,ct as se,en as ce,et as le,ft as M,gn as N,gr as P,gt as ue,hn as F,i as I,ir as L,kn as R,ln as z,lr as B,mn as de,mr as fe,nr as V,on as pe,pn as me,qn as H,r as he,st as ge,ut as U,v as _e,vt as ve,w as ye,wn as W,xn as G,xt as be,y as xe,yn as Se,z as K}from"./element-plus-CN9J6t-d.js";import{c as q,l as Ce,n as we,o as Te}from"./vendor-Bs5KA16r.js";import{n as J,t as Y}from"./_plugin-vue_export-helper-PJOlbt_0.js";import{t as Ee}from"./SvgIcon-Coxq3TGz.js";import{d as De,f as Oe,p as X,t as ke}from"./configStore-ByUSd24J.js";import{t as Ae}from"./toolsStore-ChBM3BeQ.js";import{t as je}from"./CommonDialog-C0zTwqdL.js";import{B as Me,Ct as Z,D as Ne,F as Pe,I as Fe,L as Ie,M as Le,N as Q,O as Re,P as ze,Q as Be,R as Ve,j as He,k as Ue,m as We,rt as Ge,z as Ke}from"./index-BTEGKhWc.js";import{a as qe,i as Je,l as $,o as Ye,r as Xe,s as Ze,t as Qe}from"./taskExecutionExport-Bb0HWZiH.js";import{n as $e,t as et}from"./TaskExecutorPicker-CJZD3YVi.js";import{n as tt,r as nt,t as rt}from"./relativeTime-De2wWXk0.js";import{n as it,t as at}from"./useWorkbenchProjects-CrDCUDV3.js";u(),B(),t(),pe();var ot={class:`wb-attachments__head`},st={class:`wb-attachments__label`},ct={class:`wb-attachments__count`},lt=[`disabled`],ut={key:0,class:`wb-attachments__paste-hint`},dt={key:1,class:`wb-attachments__list`},ft=[`title`,`onClick`,`onContextmenu`],pt=[`src`,`alt`],mt={key:1},ht={class:`wb-attachment__meta`},gt=[`title`],_t=[`onClick`,`title`],vt=Y(m({__name:`AttachmentZone`,props:{attachments:{},isImage:{type:Function},humanSize:{type:Function},isUploading:{type:Boolean},isPasteHover:{type:Boolean},onPick:{type:Function},onRemove:{type:Function},rawBase:{}},emits:[`paste`,`drop`,`dragover`,`dragenter`,`dragleave`],setup(e,{emit:t}){let n=e;function r(e){return`${n.rawBase||`/api/workbench/attachments`}/${e.id}/raw`}let a=t,o=G(()=>n.attachments.filter(e=>n.isImage(e))),s=G(()=>o.value.map(e=>r(e))),l=P(0),u=P(!1);function d(e){if(n.isImage(e)){let t=o.value.findIndex(t=>t.id===e.id);l.value=t>=0?t:0,u.value=!0}else window.open(r(e),`_blank`,`noopener`)}function p(){u.value=!1}let m=P({visible:!1,x:0,y:0,att:null}),h=P(!1);function g(e,t){if(!n.isImage(e))return;t.preventDefault();let r=window.innerWidth-180,i=window.innerHeight-120;m.value={visible:!0,x:Math.min(t.clientX,r),y:Math.min(t.clientY,i),att:e}}function _(){m.value.visible&&(m.value.visible=!1)}async function ee(){let e=m.value.att;if(e&&!h.value){if(_(),!navigator.clipboard||typeof ClipboardItem>`u`){I({type:`warning`,message:J(`@WORKBENCH:当前浏览器不支持复制图片`)});return}h.value=!0;try{let t=await fetch(r(e),{credentials:`same-origin`});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.blob(),i=[`image/png`,`image/jpeg`,`image/webp`,`image/gif`].includes(n.type)?n.type:`image/png`,a=new ClipboardItem({[i]:n});await navigator.clipboard.write([a]),I({type:`success`,message:J(`@WORKBENCH:图片已复制到剪贴板`),duration:1800})}catch(e){I({type:`error`,message:J(`@WORKBENCH:复制失败 {error}`,{error:e?.message||``})})}finally{h.value=!1}}}return typeof window<`u`&&(window.addEventListener(`click`,_),window.addEventListener(`scroll`,_,!0),window.addEventListener(`blur`,_)),C(()=>{typeof window>`u`||(window.removeEventListener(`click`,_),window.removeEventListener(`scroll`,_,!0),window.removeEventListener(`blur`,_))}),(t,n)=>(H(),S(O,null,[b(`div`,{class:w([`wb-attachments`,{"is-paste-hover":e.isPasteHover}]),onPaste:n[1]||=e=>a(`paste`,e),onDrop:n[2]||=N(e=>a(`drop`,e),[`prevent`]),onDragover:n[3]||=N(e=>a(`dragover`,e),[`prevent`]),onDragenter:n[4]||=N(e=>a(`dragenter`,e),[`prevent`]),onDragleave:n[5]||=e=>a(`dragleave`,e)},[b(`div`,ot,[b(`span`,st,[R(f(x(J)(`@WORKBENCH:附件`))+` `,1),b(`span`,ct,f(e.attachments.length),1)]),b(`button`,{class:`wb-attachments__add`,disabled:e.isUploading,onClick:n[0]||=(...t)=>e.onPick&&e.onPick(...t)},f(e.isUploading?x(J)(`@WORKBENCH:上传中…`):x(J)(`@WORKBENCH:添加附件`)),9,lt)]),e.isPasteHover?(H(),S(`div`,ut,f(x(J)(`@WORKBENCH:粘贴图片以快速添加`)),1)):W(``,!0),e.attachments.length>0?(H(),S(`ul`,dt,[(H(!0),S(O,null,E(e.attachments,t=>(H(),S(`li`,{key:t.id,class:`wb-attachment`},[b(`button`,{type:`button`,class:`wb-attachment__preview`,title:x(J)(`@WORKBENCH:点击预览`),onClick:e=>d(t),onContextmenu:e=>g(t,e)},[b(`div`,{class:w([`wb-attachment__icon`,{"wb-attachment__icon--img":e.isImage(t)}])},[e.isImage(t)?(H(),S(`img`,{key:0,src:r(t),alt:t.originalName,loading:`lazy`},null,8,pt)):(H(),S(`span`,mt,f(t.ext.toUpperCase()),1))],2),b(`div`,ht,[b(`div`,{class:`wb-attachment__name`,title:`${t.originalName} (${e.humanSize(t.size)})`},f(t.originalName),9,gt)])],40,ft),b(`button`,{class:`wb-attachment__del`,onClick:N(n=>e.onRemove(t),[`stop`]),title:x(J)(`@WORKBENCH:删除`)},`×`,8,_t)]))),128))])):W(``,!0)],34),u.value&&s.value.length>0?(H(),i(x(oe),{key:0,"url-list":s.value,"initial-index":l.value,"hide-on-click-modal":!0,teleported:!0,onClose:p},null,8,[`url-list`,`initial-index`])):W(``,!0),(H(),i(Se,{to:`body`},[m.value.visible&&m.value.att&&e.isImage(m.value.att)?(H(),S(`ul`,{key:0,class:`wb-ctx-menu`,style:c({top:m.value.y+`px`,left:m.value.x+`px`}),onContextmenu:n[6]||=N(()=>{},[`prevent`])},[b(`li`,{class:w([`wb-ctx-menu__item`,{"is-disabled":h.value}]),onClick:ee},[n[7]||=b(`span`,{class:`wb-ctx-menu__icon`,"aria-hidden":`true`},[b(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[b(`rect`,{x:`9`,y:`9`,width:`11`,height:`11`,rx:`2`}),b(`path`,{d:`M5 15V5a2 2 0 0 1 2-2h10`})])],-1),b(`span`,null,f(x(J)(`@WORKBENCH:复制图片`)),1)],2)],36)):W(``,!0)]))],64))}}),[[`__scopeId`,`data-v-e3e872cb`]]),yt=we(`claude`),bt=we(`opencode`),xt=we(`codex`),St=Me,Ct=Ke,wt=Ve;function Tt(e){return e===`opencode`?bt:e===`codex`?xt:e===`codebuddy`?St:e===`pi`?Ct:e===`codearts`?wt:yt}function Et(e){if(typeof e!=`string`||!e)return;let t=Date.parse(e);return Number.isFinite(t)?t:void 0}function Dt(e){let t=Et(e?.thinkingStartedAt);return t===void 0?{}:{reasoningStartedAt:t,reasoningEndedAt:Et(e?.thinkingEndedAt)}}u(),B(),t(),pe();var Ot=[`aria-expanded`],kt={class:`wb-log-summary__left`},At={key:0,class:`wb-log-summary__status wb-log-summary__status--running`},jt={class:`wb-log-summary__label`},Mt={key:0,class:`wb-log-summary__elapsed`},Nt={key:1,class:`wb-log-summary__status wb-log-summary__status--pending`},Pt={class:`wb-log-summary__label`},Ft={class:`wb-log-summary__icon`},It={class:`wb-log-summary__label`},Lt={key:0,class:`wb-log-summary__elapsed`},Rt={key:3},zt={class:`wb-log-summary__right`},Bt={class:`wb-log-summary__meta`},Vt=[`title`,`aria-label`],Ht={class:`wb-log-details__body`},Ut={class:`wb-job-chat`},Wt={key:0,class:`wb-chat__foot`},Gt=[`title`,`aria-label`],Kt={key:1,class:`wb-log-fullscreen__empty`},qt=65536,Jt=Y(m({__name:`JobLogDetails`,props:{job:{}},emits:[`re-execute`],setup(t,{emit:r}){let a=ke(),o=t,s=r,c=P(!1);function l(){c.value=!c.value}let u=G(()=>o.job.status===`running`||o.job.status===`pending`);V(()=>o.job.status,(e,t)=>{t!==`running`&&t!==`pending`&&(e===`running`||e===`pending`)&&(c.value=!1)});function d(){let e=o.job.output||``;if(!e)return``;let t=e.length<=qt?e:`${J(`@WORKBENCH:…(前文已截断)`)}\n${e.slice(-65536)}`;return $(t,o.job.id)}function p(){let e=o.job.thinking||``;return e?e.length<=qt?e:`${J(`@WORKBENCH:…(前文已截断)`)}\n${e.slice(-65536)}`:``}async function m(e){try{if(navigator?.clipboard?.writeText)return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,t.style.left=`-9999px`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch{return!1}}async function h(){let e=[];if(o.job.prompt&&e.push(`## ${J(`@WORKBENCH:用户提示词`)}\n\n${o.job.prompt}`),o.job.thinking&&e.push(`## ${J(`@WORKBENCH:Claude 思考`)}\n\n${o.job.thinking}`),o.job.output&&e.push(`## ${J(`@WORKBENCH:模型返回`)}\n\n${o.job.output}`),!e.length){I.warning(J(`@WORKBENCH:暂无内容可复制`));return}await m(e.join(`
2
+
3
+ ---
4
+
5
+ `))?I.success(J(`@WORKBENCH:已复制到剪贴板`)):I.error(J(`@WORKBENCH:复制失败`))}let g=G(()=>{let e=o.job.status;return e===`done`||e===`error`||e===`cancelled`}),_=G(()=>o.job.status===`cancelled`?`wb-log-summary__status--cancelled`:o.job.status===`error`?`wb-log-summary__status--error`:`wb-log-summary__status--done`),ee=G(()=>o.job.status===`cancelled`?`⏹`:o.job.status===`error`?`✗`:`✓`),v=G(()=>o.job.status===`cancelled`?J(`@WORKBENCH:已停止`):o.job.status===`error`?J(`@WORKBENCH:执行出错`):J(`@WORKBENCH:执行完成`)),te=G(()=>X(o.job?.agent)),y=G(()=>Tt(o.job?.agent));function ne(e,t){return e===`running`||e===`pending`?t?`streaming`:`pending`:e===`error`?`error`:`done`}let C=G(()=>{let e=o.job,t=[],n=e.startedAt?new Date(e.startedAt).getTime():Date.now();if(e.prompt){let r=qe(e.prompt);r&&t.push({id:`${e.id}-u`,role:`user`,content:r,status:`done`,createdAt:n})}let r=d(),i=p(),a=!!r,s=!!i,c=Ye(e),l=c.length>0,u=a||s||l,f=ne(e.status,u);return t.push({id:`${e.id}-a`,role:`assistant`,content:r,reasoning:s?i:void 0,reasoningStatus:s?a?`done`:f===`streaming`?`streaming`:`done`:void 0,...Dt(e),toolCalls:l?c:void 0,status:f,error:f===`error`&&e.error||void 0,createdAt:n}),t}),T=P(null);V(()=>o.job.status,(e,t)=>{e===`running`&&t!==`running`&&(T.value=T.value??Date.now())});let re=G(()=>{if(!T.value)return``;let e=T.value,t=o.job.endedAt?new Date(o.job.endedAt).getTime():Date.now(),n=Math.max(0,Math.floor((t-e)/1e3));return n<60?`${n}s`:`${Math.floor(n/60)}分${(n%60).toString().padStart(2,`0`)}秒`}),E=P(!1),ie=G(()=>!!(o.job.output&&o.job.output.length)),D=G(()=>$(o.job.output||``,o.job.id)),O=P(null);V(E,async e=>{e&&(await n(),O.value&&(O.value.scrollTop=O.value.scrollHeight))}),V(()=>(o.job.output||``).length,async()=>{E.value&&(await n(),O.value&&(O.value.scrollTop=O.value.scrollHeight))});function k(){}let ae=G(()=>g.value&&!!o.job.prompt);function oe(){s(`re-execute`,o.job)}return(n,r)=>(H(),S(`div`,{class:w([`wb-log-details`,{"is-running":u.value,"is-pending":t.job.status===`pending`,"is-finished":g.value}])},[b(`div`,{class:`wb-log-summary`,onClick:l,role:`button`,"aria-expanded":!c.value},[b(`span`,kt,[t.job.status===`running`?(H(),S(`span`,At,[b(`span`,jt,f(x(J)(`@WORKBENCH:正在执行…`)),1),r[1]||=b(`span`,{class:`wb-log-dots`,"aria-hidden":`true`},[b(`span`,{class:`wb-log-dots__dot`}),b(`span`,{class:`wb-log-dots__dot`}),b(`span`,{class:`wb-log-dots__dot`})],-1),re.value?(H(),S(`span`,Mt,f(re.value),1)):W(``,!0)])):t.job.status===`pending`?(H(),S(`span`,Nt,[b(`span`,Pt,f(x(J)(`@WORKBENCH:排队中…`)),1),r[2]||=b(`span`,{class:`wb-log-dots`,"aria-hidden":`true`},[b(`span`,{class:`wb-log-dots__dot`}),b(`span`,{class:`wb-log-dots__dot`}),b(`span`,{class:`wb-log-dots__dot`})],-1)])):g.value?(H(),S(`span`,{key:2,class:w([`wb-log-summary__status`,_.value])},[b(`span`,Ft,f(ee.value),1),b(`span`,It,f(v.value),1),re.value?(H(),S(`span`,Lt,f(re.value),1)):W(``,!0)],2)):(H(),S(`span`,Rt,f(x(J)(`@WORKBENCH:查看执行日志`)),1))]),b(`span`,zt,[b(`span`,Bt,f((t.job.output||``).length)+` `+f(x(J)(`@WORKBENCH:字符`)),1),b(`button`,{type:`button`,class:`wb-log-copy`,title:x(J)(`@WORKBENCH:复制全部(含提示词与输出)`),"aria-label":x(J)(`@WORKBENCH:复制全部`),onClick:N(h,[`stop`])},` ⧉ `,8,Vt)])],8,Ot),A(b(`div`,Ht,[b(`div`,Ut,[e(x(Te),{messages:C.value,"assistant-name":te.value,"assistant-avatar":y.value,"show-avatar":!0,theme:x(a).theme,"tool-calls-config":{group:!0,collapseThreshold:2},"plan-config":{labels:{title:x(J)(`@AGENT:计划`),raw:x(J)(`@AGENT:原始参数`)}},"show-input":!1},null,8,[`messages`,`assistant-name`,`assistant-avatar`,`theme`,`plan-config`])]),ae.value?(H(),S(`footer`,Wt,[b(`button`,{type:`button`,class:`wb-chat__action`,title:x(J)(`@WORKBENCH:用相同的提示词重新执行此任务`),"aria-label":x(J)(`@WORKBENCH:重新执行`),onClick:oe},` ↻ `,8,Gt)])):W(``,!0),e(je,{modelValue:E.value,"onUpdate:modelValue":r[0]||=e=>E.value=e,title:x(J)(`@WORKBENCH:模型返回 - 全屏查看`),size:`fullscreen`,type:`flex`,"close-on-click-modal":!1,"custom-class":`wb-log-fullscreen-dialog`,onClosed:k},{default:L(()=>[b(`div`,{ref_key:`fullscreenContainerRef`,ref:O,class:`wb-log-fullscreen`},[ie.value?(H(),i(x(q),{key:0,source:D.value,class:`wb-log-fullscreen__render`},null,8,[`source`])):(H(),S(`div`,Kt,f(x(J)(`@WORKBENCH:(暂无输出)`)),1))],512)]),_:1},8,[`modelValue`,`title`])],512),[[de,!c.value]])],2))}}),[[`__scopeId`,`data-v-9c103bcc`]]);u(),B(),t(),pe();var Yt={class:`exec-logs`},Xt={class:`exec-logs__head`},Zt={class:`exec-logs__title-block`},Qt={class:`exec-logs__stats`},$t={class:`exec-logs__head-actions`},en={class:`exec-logs__config`},tn={class:`exec-logs__config-label`},nn={class:`exec-logs__config-field`},rn={class:`exec-logs__config-name`},an={class:`exec-logs__config-field`},on={class:`exec-logs__config-name`},sn={class:`exec-logs__filter`},cn={key:0,class:`exec-logs__batch-meta`},ln={key:0,class:`exec-logs__batch`},un={class:`exec-logs__list`},dn={key:0,class:`exec-logs__empty`},fn={class:`exec-logs__empty-art`,"aria-hidden":`true`},pn={class:`exec-logs__empty-title`},mn={class:`exec-logs__empty-hint`},hn={class:`exec-card__head`},gn=[`title`],_n={class:`exec-card__meta`},vn={key:0,class:`exec-card__task`},yn={key:1,class:`exec-card__time`},bn={key:2,class:`exec-card__exit`},xn=[`title`,`onClick`],Sn={key:0,class:`exec-card__error`},Cn={key:1,class:`exec-logs__pager`},wn=50,Tn=Y(m({__name:`ExecutionLogManager`,setup(t){function n(e){return e instanceof Error?e.message:String(e)}let r=P([]),i=P(0),o=fe({count:0,sizeMB:0,byStatus:{}}),u=P(!1),p=P(new Set),m=fe({q:``,status:``,page:1}),g=P({maxCount:500,maxSizeMB:256}),_=fe({maxCount:500,maxSizeMB:256}),ee=P(!1),v=[{value:`pending`,label:J(`@WORKBENCH:排队中`)},{value:`running`,label:J(`@WORKBENCH:执行中`)},{value:`done`,label:J(`@WORKBENCH:已完成`)},{value:`error`,label:J(`@WORKBENCH:出错`)},{value:`cancelled`,label:J(`@WORKBENCH:已取消`)}],y=G(()=>r.value.length>0&&r.value.every(e=>p.value.has(e.id))),C=G(()=>r.value.some(e=>p.value.has(e.id))&&!y.value);async function T(){u.value=!0;try{let e=new URLSearchParams;m.q&&e.set(`q`,m.q),m.status&&e.set(`status`,m.status),e.set(`limit`,String(wn)),e.set(`offset`,String((m.page-1)*wn));let t=await fetch(`/api/workbench/jobs/list?${e.toString()}`).then(e=>e.json());if(!t.success)throw Error(t.error||`list failed`);r.value=t.jobs,i.value=t.total,o.count=t.stats.count,o.sizeMB=t.stats.sizeMB,o.byStatus=t.stats.byStatus;let n=new Set(r.value.map(e=>e.id));for(let e of Array.from(p.value))n.has(e)||p.value.delete(e)}catch(e){I.error(J(`@WORKBENCH:加载失败`)+`: `+n(e))}finally{u.value=!1}}async function re(){try{let e=await fetch(`/api/workbench/jobs/config`).then(e=>e.json());e.success&&(g.value=e.config,_.maxCount=e.config.maxCount,_.maxSizeMB=e.config.maxSizeMB)}catch{}}async function ie(){ee.value=!0;try{let e=await fetch(`/api/workbench/jobs/config`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({maxCount:_.maxCount,maxSizeMB:_.maxSizeMB})}).then(e=>e.json());if(!e.success)throw Error(e.error||`save failed`);g.value=e.config,I.success(J(`@WORKBENCH:已保存策略`)),await T()}catch(e){I.error(J(`@WORKBENCH:保存失败`)+`: `+n(e))}finally{ee.value=!1}}function D(){m.page=1,T()}function ae(){m.q=``,m.status=``,m.page=1,T()}function oe(e,t){t?p.value.add(e):p.value.delete(e),p.value=new Set(p.value)}function j(e){if(e)for(let e of r.value)p.value.add(e.id);else for(let e of r.value)p.value.delete(e.id);p.value=new Set(p.value)}function se(e){I.info(J(`@WORKBENCH:请到工作台主面板的对应任务上点击「重新执行」`))}async function ce(e){try{await he.confirm(J(`@WORKBENCH:确定要删除所选的 {count} 条日志吗?`,{count:1}),J(`@WORKBENCH:删除`),{type:`warning`})}catch{return}try{let t=await fetch(`/api/workbench/jobs/${e}`,{method:`DELETE`}).then(e=>e.json());if(!t.success)throw Error(t.error||`delete failed`);p.value.delete(e),p.value=new Set(p.value),await T()}catch(e){I.error(J(`@WORKBENCH:保存失败`)+`: `+n(e))}}async function le(){let e=Array.from(p.value);if(e.length!==0){try{await he.confirm(J(`@WORKBENCH:确定要删除所选的 {count} 条日志吗?`,{count:e.length}),J(`@WORKBENCH:批量删除`),{type:`warning`})}catch{return}try{let t=await fetch(`/api/workbench/jobs/batch-delete`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({ids:e})}).then(e=>e.json());if(!t.success)throw Error(t.error||`batch delete failed`);I.success(J(`@WORKBENCH:成功删除 {count} 条`,{count:t.removed||e.length})),p.value=new Set,await T()}catch(e){I.error(J(`@WORKBENCH:保存失败`)+`: `+n(e))}}}async function N(){let e=o.count;if(e!==0){try{await he.confirm(J(`@WORKBENCH:确定要清空所有 {count} 条执行日志吗?此操作不可恢复。`,{count:e}),J(`@WORKBENCH:清空全部`),{type:`warning`,confirmButtonText:J(`@WORKBENCH:清空全部`)})}catch{return}try{let t=await fetch(`/api/workbench/jobs/clear`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({confirm:!0})}).then(e=>e.json());if(!t.success)throw Error(t.error||`clear failed`);I.success(J(`@WORKBENCH:成功删除 {count} 条`,{count:t.removed||e})),p.value=new Set,await T()}catch(e){I.error(J(`@WORKBENCH:保存失败`)+`: `+n(e))}}}function ue(e,t){if(!e)return``;let n=new Date(e).getTime(),r=t?new Date(t).getTime():Date.now(),i=Math.max(0,r-n);return i<1e3?`${i}ms`:i<6e4?`${(i/1e3).toFixed(1)}s`:i<36e5?`${Math.floor(i/6e4)}m ${Math.floor(i%6e4/1e3)}s`:`${Math.floor(i/36e5)}h ${Math.floor(i%36e5/6e4)}m`}return s(()=>{T(),re()}),(t,n)=>{let s=K,g=xe,re=ne,P=a,I=l,z=h,B=d,de=_e,fe=k;return H(),S(`div`,Yt,[b(`header`,Xt,[b(`div`,Zt,[b(`span`,Qt,f(x(J)(`@WORKBENCH:共 {count} 条,占 {size} MB`,{count:o.count,size:o.sizeMB})),1)]),b(`div`,$t,[e(s,{icon:x(te),size:`small`,loading:u.value,onClick:T},{default:L(()=>[R(f(x(J)(`@WORKBENCH:刷新`)),1)]),_:1},8,[`icon`,`loading`]),e(s,{type:`danger`,plain:``,size:`small`,disabled:o.count===0,onClick:N},{default:L(()=>[R(f(x(J)(`@WORKBENCH:清空全部`)),1)]),_:1},8,[`disabled`])])]),b(`div`,en,[b(`span`,tn,f(x(J)(`@WORKBENCH:保存策略`)),1),b(`span`,nn,[b(`span`,rn,f(x(J)(`@WORKBENCH:最大条数`)),1),e(g,{modelValue:_.maxCount,"onUpdate:modelValue":n[0]||=e=>_.maxCount=e,min:0,max:1e4,step:50,size:`small`,"controls-position":`right`,style:{width:`130px`}},null,8,[`modelValue`])]),b(`span`,an,[b(`span`,on,f(x(J)(`@WORKBENCH:最大体积 (MB)`)),1),e(g,{modelValue:_.maxSizeMB,"onUpdate:modelValue":n[1]||=e=>_.maxSizeMB=e,min:0,max:10240,step:32,size:`small`,"controls-position":`right`,style:{width:`140px`}},null,8,[`modelValue`])]),e(s,{type:`primary`,size:`small`,loading:ee.value,onClick:ie},{default:L(()=>[R(f(x(J)(`@WORKBENCH:保存策略`)),1)]),_:1},8,[`loading`])]),b(`div`,sn,[e(re,{modelValue:m.q,"onUpdate:modelValue":n[2]||=e=>m.q=e,placeholder:x(J)(`@WORKBENCH:搜索标题 / 任务`),clearable:``,size:`small`,style:{width:`240px`},onKeyup:F(D,[`enter`]),onClear:D},null,8,[`modelValue`,`placeholder`]),e(I,{modelValue:m.status,"onUpdate:modelValue":n[3]||=e=>m.status=e,placeholder:x(J)(`@WORKBENCH:全部状态`),clearable:``,size:`small`,style:{width:`130px`},onChange:D},{default:L(()=>[(H(),S(O,null,E(v,t=>e(P,{key:t.value,label:t.label,value:t.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`,`placeholder`]),e(s,{size:`small`,onClick:ae},{default:L(()=>[R(f(x(J)(`@WORKBENCH:重置`)),1)]),_:1}),n[5]||=b(`span`,{class:`exec-logs__filter-spacer`},null,-1),p.value.size>0?(H(),S(`span`,cn,f(x(J)(`@WORKBENCH:已选择 {count} 项`,{count:p.value.size})),1)):W(``,!0)]),p.value.size>0?(H(),S(`div`,ln,[e(z,{"model-value":y.value,indeterminate:C.value,onChange:j},{default:L(()=>[R(f(y.value?x(J)(`@WORKBENCH:取消全选`):x(J)(`@WORKBENCH:全选`)),1)]),_:1},8,[`model-value`,`indeterminate`]),e(s,{type:`danger`,size:`small`,onClick:le},{default:L(()=>[R(f(x(J)(`@WORKBENCH:批量删除`)),1)]),_:1})])):W(``,!0),A((H(),S(`div`,un,[!u.value&&r.value.length===0?(H(),S(`div`,dn,[b(`div`,fn,[e(B,null,{default:L(()=>[e(x(M))]),_:1})]),b(`div`,pn,f(x(J)(`@WORKBENCH:暂无执行日志`)),1),b(`div`,mn,f(x(J)(`@WORKBENCH:点击「执行任务」开始一次执行,日志会出现在这里。`)),1)])):W(``,!0),(H(!0),S(O,null,E(r.value,t=>(H(),S(`article`,{key:t.id,class:w([`exec-card`,{"is-selected":p.value.has(t.id)}])},[b(`header`,hn,[e(z,{"model-value":p.value.has(t.id),onChange:e=>oe(t.id,e)},null,8,[`model-value`,`onChange`]),b(`span`,{class:`exec-card__status`,style:c({color:x(Xe)(t.status),borderColor:x(Xe)(t.status)})},f(x(Je)(t.status)),5),b(`span`,{class:`exec-card__title`,title:t.title||x(J)(`@WORKBENCH:无标题`)},f(t.title||x(J)(`@WORKBENCH:无标题`)),9,gn),n[6]||=b(`span`,{class:`exec-card__spacer`},null,-1),b(`span`,_n,[t.taskTitle?(H(),S(`span`,vn,`📁 `+f(t.taskTitle),1)):W(``,!0),t.startedAt?(H(),S(`span`,yn,`⏱ `+f(ue(t.startedAt,t.endedAt)),1)):W(``,!0),t.exitCode===null?W(``,!0):(H(),S(`span`,bn,`exit `+f(t.exitCode),1))]),b(`button`,{type:`button`,class:`exec-card__del`,title:x(J)(`@WORKBENCH:删除`),onClick:e=>ce(t.id)},`×`,8,xn)]),t.error?(H(),S(`p`,Sn,`⚠ `+f(t.error),1)):W(``,!0),e(Jt,{job:t,onReExecute:se},null,8,[`job`])],2))),128))])),[[fe,u.value]]),i.value>wn?(H(),S(`footer`,Cn,[e(de,{"current-page":m.page,"onUpdate:currentPage":n[4]||=e=>m.page=e,"page-size":wn,total:i.value,layout:`prev, pager, next, total`,background:``,small:``,onCurrentChange:T},null,8,[`current-page`,`total`])])):W(``,!0)])}}}),[[`__scopeId`,`data-v-dd1760f3`]]);function En(e){return String(e.manualDoneAt||e.lastJobEndedAt||e.updatedAt||e.createdAt||``)}function Dn(e){return e.column===`done`?En(e):e.updatedAt||e.createdAt||``}function On(e){return e.live?``:tt(e.lastDurationMs)}function kn(e){let t=On(e);return t?J(`@WORKBENCH:用时 {d}`,{d:t}):``}function An(e){return e.live?J(`@WORKBENCH:已运行 {elapsed}`,{elapsed:tt(e.live.elapsedMs)}):``}function jn(e){return An(e)||kn(e)}function Mn(e){let t=On(e);if(!t)return``;let n=rt(e.lastJobStartedAt),r=rt(e.lastJobEndedAt);return!n||!r?t:`${t} · ${n} → ${r}`}B();var Nn=new Set([`image/png`,`image/jpeg`,`image/jpg`,`image/gif`,`image/webp`,`image/bmp`,`image/svg+xml`,`application/pdf`,`text/plain`,`text/markdown`,`text/x-markdown`,`text/csv`,`application/json`,`text/json`,`text/x-log`]),Pn=`.png,.jpg,.jpeg,.gif,.webp,.bmp,.svg,.pdf,.txt,.md,.csv,.json,.log`,Fn=20971520,In=3840,Ln=new Set([`image/png`,`image/jpeg`,`image/jpg`,`image/webp`,`image/bmp`]);function Rn(e){if(e.size<=3670016)return!1;let t=String(e.type||``).toLowerCase();return t?Ln.has(t):/\.(png|jpe?g|webp|bmp)$/i.test(e.name)}function zn(e,t){return`${String(e||`attachment`).replace(/\.[^./\\]+$/,``)}.${t}`}async function Bn(e){if(typeof createImageBitmap==`function`)try{let t=await createImageBitmap(e);return{source:t,width:t.width,height:t.height,release:()=>t.close()}}catch{}return await new Promise(t=>{let n=URL.createObjectURL(e),r=new Image;r.onload=()=>t({source:r,width:r.naturalWidth,height:r.naturalHeight,release:()=>URL.revokeObjectURL(n)}),r.onerror=()=>{URL.revokeObjectURL(n),t(null)},r.src=n})}function Vn(e,t,n){return new Promise(r=>{try{e.toBlob(e=>r(e&&e.type===t?e:null),t,n)}catch{r(null)}})}async function Hn(e){let t=await Bn(e);if(!t)return null;try{let n=[{edge:In,quality:.95},{edge:In,quality:.85},{edge:2560,quality:.85},{edge:1920,quality:.8}],r=null;for(let e of n){let n=Math.min(1,e.edge/Math.max(t.width,t.height)),i=Math.max(1,Math.round(t.width*n)),a=Math.max(1,Math.round(t.height*n)),o=document.createElement(`canvas`);o.width=i,o.height=a;let s=o.getContext(`2d`);if(!s)return null;s.drawImage(t.source,0,0,i,a);let c=await Vn(o,`image/webp`,e.quality)||await Vn(o,`image/jpeg`,e.quality);if(!c)return null;if((!r||c.size<r.size)&&(r=c),c.size<=3670016)break}return!r||r.size>=e.size?null:{blob:r,ext:r.type===`image/webp`?`webp`:`jpg`}}catch{return null}finally{t.release()}}function Un(){let e=P({}),t=P(null);function n(t){return!!e.value[t]}function r(e,t){if(e instanceof File)return e;let n=e.type||`application/octet-stream`;return new File([e],t,{type:n})}function i(e){return e.kind===`draft`?`draft`:`task-${e.task?.id??``}`}function a(e){if(e.kind===`draft`)return e.list;let t=e.task?.attachments;return Array.isArray(t)?t:[]}function o(e,t){if(e.kind===`draft`){e.replace(t);return}e.task&&(e.task.attachments=t)}function s(e){return e.kind===`draft`?`/api/workbench/orchestrator/attachments`:`/api/workbench/tasks/${e.task?.id??``}/attachments`}function c(e,t){return e.kind===`draft`?`/api/workbench/orchestrator/attachments/${t}`:`/api/workbench/tasks/${e.task?.id??``}/attachments/${t}`}function l(e,t){if(!e.clipboardData)return;let n=Array.from(e.clipboardData.items).filter(e=>e.kind===`file`&&e.type.startsWith(`image/`));if(n.length>0){e.preventDefault();for(let e of n){let n=e.getAsFile();if(!n)continue;let i=(n.type.split(`/`)[1]||`png`).replace(`jpeg`,`jpg`);d(t,r(n,`paste-${new Date().toISOString().replace(/[:.]/g,`-`)}.${i}`))}return}let i=Array.from(e.clipboardData.items).filter(e=>e.kind===`file`&&!e.type.startsWith(`image/`));if(i.length>0){e.preventDefault();for(let e of i){let n=e.getAsFile();n&&d(t,r(n,n.name||`pasted-file`))}}}function u(e,n){t.value=null,Array.from(e.dataTransfer?.files||[]).forEach(e=>d(n,e))}async function d(t,n){if(!Nn.has(n.type)&&!n.name.match(/\.(png|jpg|jpeg|gif|webp|bmp|svg|pdf|txt|md|markdown|csv|json|log)$/i)){I.error(`${J(`@WORKBENCH:不支持的文件类型`)}(${n.name})`);return}if(a(t).find(e=>e.originalName===n.name&&e.size===n.size)){I.info(`${n.name} ${J(`@WORKBENCH:已存在,已复用`)}`);return}let c=i(t);e.value[c]=!0;try{let e=n;if(Rn(n)){let t=await Hn(n);t&&(e=r(t.blob,zn(n.name,t.ext)),I.info(J(`@WORKBENCH:图片过大,已压缩后上传:{from} → {to}`,{from:g(n.size),to:g(e.size)})))}if(e.size>20971520){I.error(`「${n.name}」${J(`@WORKBENCH:超过 {size} 限制`,{size:g(Fn)})}`);return}let i=await fetch(s(t),{method:`POST`,headers:{"Content-Type":`application/octet-stream`,"X-Original-Name":encodeURIComponent(e.name),"X-Mime-Type":e.type||`application/octet-stream`},body:e}).then(e=>e.json());if(i.success){let n=a(t);n.push(i.attachment),o(t,n),I.success(`${J(`@WORKBENCH:已添加:`)}${e.name}`)}else I.error(i.error||J(`@WORKBENCH:上传失败`))}catch(e){I.error(J(`@WORKBENCH:上传失败`)+`:`+(e&&e.message||e))}finally{e.value[c]=!1}}async function f(e,t){try{await he.confirm(J(`@WORKBENCH:删除附件「{name}」?`,{name:t.originalName}),J(`@WORKBENCH:确认`),{type:`warning`})}catch{return}let n=await fetch(c(e,t.id),{method:`DELETE`}).then(e=>e.json());n.success?(o(e,a(e).filter(e=>e.id!==t.id)),I.success(J(`@WORKBENCH:已删除`))):I.error(n.error||J(`@WORKBENCH:删除失败`))}function p(e){let t=document.createElement(`input`);t.type=`file`,t.accept=Pn,t.multiple=!0,t.onchange=()=>{Array.from(t.files||[]).forEach(t=>d(e,t))},t.click()}let m=new Set([`png`,`jpg`,`jpeg`,`gif`,`webp`,`bmp`,`svg`]);function h(e){let t=String(e?.ext||``).toLowerCase();if(t&&m.has(t)||String(e?.mimeType||``).toLowerCase().startsWith(`image/`))return!0;let n=String(e?.originalName||``).toLowerCase();return/\.(png|jpe?g|gif|webp|bmp|svg)$/.test(n)}function g(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(2)} MB`}return{uploadingTargets:e,pasteHoverId:t,isUploading:n,ensureFile:r,isImageAttachment:h,humanSize:g,targetKey:i,targetAttachments:a,setTargetAttachments:o,targetUploadUrl:s,targetDeleteUrl:c,onAttachmentPaste:l,onAttachmentDrop:u,uploadAttachment:d,removeAttachment:f,pickAttachmentFile:p}}u();var Wn=`__simple`,Gn=65536;function Kn(e,t){function n(t){if(!t)return[];let n=`${t.id}${Wn}`;return e.value.filter(e=>e.subId===n||e.subId.startsWith(`${n}__r`)).sort((e,t)=>{let n=e.startedAt||``,r=t.startedAt||``;return n&&r?n.localeCompare(r):n?-1:+!!r})}function r(e){if(!e)return null;let t=n(e);return t.length>0?t[t.length-1]:null}function i(e){return e?e.status===`pending`||e.status===`running`?`running`:e.status===`done`?`done`:e.status===`cancelled`?`cancelled`:`error`:`idle`}return{simpleConversationMessages:G(()=>{if(!t.value)return[];let e=n(t.value);if(e.length===0)return[];let r=[];return e.forEach((t,n)=>{let i=n===e.length-1,a=t.startedAt?new Date(t.startedAt).getTime():Date.now();if(t.prompt){let e=qe(t.prompt);e&&r.push({id:`${t.id}-u`,role:`user`,content:e,status:`done`,createdAt:a})}let o=t.output||``,s=t.thinking||``,c=o.length>Gn?`\u2026(前文已截断)\n${o.slice(-65536)}`:o,l=s.length>Gn?`\u2026(前文已截断)\n${s.slice(-65536)}`:s,u=!!c,d=!!l,f=Ye(t),p=f.length>0,m=u||d||p,h;if(!i)h=`done`;else{let e=t.status;h=e===`running`||e===`pending`?m?`streaming`:`pending`:e===`error`?`error`:`done`}r.push({id:`${t.id}-a`,role:`assistant`,content:$(c,t.id),reasoning:d?l:void 0,reasoningStatus:d?!i&&u||u?`done`:h===`streaming`?`streaming`:`done`:void 0,...Dt(t),toolCalls:p?f:void 0,status:h,error:h===`error`&&t.error||void 0,createdAt:a})}),r}),simpleAllJobsFor:n,simpleJobFor:r,simpleJobState:i,SIMPLE_SUB_ID_SUFFIX:Wn,MAX_LOG_DISPLAY_SIMPLE:Gn}}u(),B();function qn(e,t,n,r){function i(){return{executor:r.getExecutor()}}async function a(e){if(!n.value||n.value.id!==e.id)return!0;let i=t.value.find(t=>t.id===e.id);return i&&i.title===n.value.title&&i.desc===n.value.desc?!0:await r.persistTask(!1)}async function o(e){if(!await a(e))return;await r.clearJobsByTask(e.id);let t=await fetch(`/api/workbench/tasks/${encodeURIComponent(e.id)}/run`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(i())}).then(e=>e.json()).catch(e=>({success:!1,error:e?.message||String(e)}));t.success?I.success(t.message||J(`@WORKBENCH:已加入执行队列`)):I.error(t.error||J(`@WORKBENCH:执行失败`))}async function s(t,n){let r=e.value.filter(e=>e.taskId===t.id).slice(-1)[0];if(!r)return I.error(J(`@WORKBENCH:没有可续接的会话`)),!1;let i=Array.isArray(t.attachments)?t.attachments:[],a=await fetch(`/api/workbench/jobs/${r.id}/continue`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({userMessage:n,attachments:i})}).then(e=>e.json()).catch(e=>({success:!1,error:e?.message||String(e)}));return a.success?(I.success(a.message||J(`@WORKBENCH:已加入续接队列`)),!0):(I.error(a.error||J(`@WORKBENCH:续接失败`)),!1)}let c=fe({}),l=new Set,u=0;function d(t){return e.value.some(e=>e.taskId===t&&(e.status===`running`||e.status===`pending`))}function f(e){return c[e]??[]}function p(e,t,n=[]){(c[e.id]??(c[e.id]=[])).push({id:`q-${Date.now()}-${++u}`,text:t,files:n})}function m(e,t){let n=c[e];if(!n)return;let r=n.findIndex(e=>e.id===t);r<0||(n.splice(r,1),n.length||delete c[e])}async function h(e,t){for(let n of t.files)await r.uploadAttachment({kind:`task`,task:e},n.file);return await s(e,t.text)}async function g(e){if(l.has(e))return;let n=c[e];if(!n||n.length===0||d(e))return;let r=t.value.find(t=>t.id===e);if(!r){delete c[e];return}let i=n[0];l.add(e);try{await h(r,i)&&m(e,i.id)}finally{l.delete(e)}}let _=G(()=>{let t=new Set;for(let n of e.value)(n.status===`running`||n.status===`pending`)&&t.add(n.taskId);return t});V(_,(t,n)=>{if(n)for(let r of n)t.has(r)||c[r]?.length&&e.value.some(e=>e.taskId===r)&&g(r)});async function ee(e,t){let n=t.text.trim();if(n){if(d(e.id)){p(e,n,t.files);return}await h(e,{text:n,files:t.files})}}async function v(e){let n=t.value.find(t=>t.id===e.taskId)||t.value.find(t=>t.id===String(e.subId||``).replace(/__simple(?:__r\d+)?$/,``));if(!n){I.error(J(`@WORKBENCH:找不到对应任务,无法重新执行`));return}await o(n)}async function te(e){try{await he.confirm(J(`@WORKBENCH:确认停止执行?已输出的内容会保留。`),J(`@WORKBENCH:停止执行`),{confirmButtonText:J(`@WORKBENCH:停止`),cancelButtonText:J(`@WORKBENCH:取消`),type:`warning`})}catch{return}let t=await fetch(`/api/workbench/jobs/${e.id}/cancel`,{method:`POST`}).then(e=>e.json()).catch(e=>({success:!1,error:e?.message||String(e)}));t.success?I.success(J(`@WORKBENCH:已发送停止信号`)):I.error(t.error||J(`@WORKBENCH:停止失败`))}async function y(){if(!n.value)return;let t=n.value,r=e.value.filter(e=>e.taskId===t.id),i=r.filter(e=>e.status===`running`||e.status===`pending`).length,a=r.length===0?J(`@WORKBENCH:当前任务还没有执行内容,确认仍要清空?`):J(`@WORKBENCH:将清空 {m} 条执行记录,任务描述/附件保留。`,{m:r.length});try{await he.confirm(a,J(`@WORKBENCH:清空执行内容`),{confirmButtonText:J(`@WORKBENCH:清空`),cancelButtonText:J(`@WORKBENCH:取消`),type:`warning`})}catch{return}if(i>0){I.warning(J(`@WORKBENCH:任务正在执行,请先停止`));return}let o=await fetch(`/api/workbench/tasks/${encodeURIComponent(t.id)}/clear-execution`,{method:`POST`,headers:{"Content-Type":`application/json`}}).then(e=>e.json()).catch(e=>({success:!1,error:e?.message||String(e)}));o?.success?(e.value=e.value.filter(e=>e.taskId!==t.id),I.success(o.message||J(`@WORKBENCH:已清空执行内容`))):I.error(o?.error||J(`@WORKBENCH:清空失败`))}return{runTask:o,continueChat:s,onContinueSendFromChat:ee,onReExecuteJob:v,cancelJob:te,clearExecutionForSelectedTask:y,isTaskRunning:d,queuedChatsOf:f,removeQueuedChat:m,flushNextQueued:g}}B();function Jn(){let e=P([]),t=P([]),n=P({path:``,name:``});function r(n,r){if(n===`hello`){t.value=r.jobs||[];return}if(n===`job:update`){let e=r,n=t.value.findIndex(t=>t.id===e.id);if(n>=0){let r=t.value[n];!e.thinkingStartedAt&&r.thinkingStartedAt&&(e.thinkingStartedAt=r.thinkingStartedAt),!e.thinkingEndedAt&&r.thinkingEndedAt&&(e.thinkingEndedAt=r.thinkingEndedAt),t.value[n]=e}else t.value.push(e);return}if(n===`job:thinking-delta`||n===`job:output-delta`){let e=n===`job:thinking-delta`?`thinking`:`output`,i=r?.delta||``;if(!i)return;let a=t.value.findIndex(e=>e.id===r.id);if(a<0)return;let o=t.value[a];if(o[e]=(o[e]||``)+i,n===`job:thinking-delta`){let e=new Date().toISOString();o.thinkingStartedAt||=e,o.thinkingEndedAt=e}return}if(n===`job:toolcalls`){let e=Array.isArray(r?.updates)?r.updates:[];if(!e.length)return;let n=t.value.findIndex(e=>e.id===r.id);if(n<0)return;let i=t.value[n];for(let t of e){if(!t||!t.id)continue;Array.isArray(i.toolCalls)||(i.toolCalls=[]);let e=i.toolCalls.findIndex(e=>e.id===t.id);e>=0?i.toolCalls[e]={...i.toolCalls[e],...t}:i.toolCalls.push(t)}return}if(n===`task:update`){let t=e.value.findIndex(e=>e.id===r.id);t>=0&&(e.value[t]=r)}if(n===`tasks:reordered`){if(Array.isArray(r?.tasks)){if(r.tasks.length<e.value.length){console.warn(`[SSE tasks:reordered] 数据丢失风险:当前 ${e.value.length} 个任务,服务端只返回 ${r.tasks.length} 个,拒绝覆盖`);return}e.value=r.tasks}return}n===`task:error`&&I.error(r.error||J(`@WORKBENCH:执行出错`))}let i=null;function a(){i&&=(i.close(),null),i=new EventSource(`/api/workbench/events`),i.onmessage=e=>{try{let t=JSON.parse(e.data);r(t.event,t.payload)}catch{}},i.onerror=()=>{i&&=(i.close(),null),setTimeout(a,3e3)}}function o(){i&&=(i.close(),null)}async function s(t){let n=await fetch(`/api/workbench/tasks`).then(e=>e.json()).catch(()=>({tasks:[]}));e.value=n.tasks||[],t?.()}async function c(){let e=await fetch(`/api/workbench/current-project`).then(e=>e.json()).catch(()=>({}));e&&typeof e.projectPath==`string`&&(n.value={path:e.projectPath,name:e.projectName||``})}async function l(){let e=await fetch(`/api/workbench/jobs`).then(e=>e.json()).catch(()=>({jobs:[]}));t.value=e.jobs||[]}async function u(e){try{let n=await fetch(`/api/workbench/jobs/by-task/${encodeURIComponent(e)}`,{method:`DELETE`}).then(e=>e.json());return n?.success?(t.value=t.value.filter(t=>t.taskId!==e),n.removed||0):(console.warn(`[clearJobsByTask] failed:`,n?.error),0)}catch(e){return console.warn(`[clearJobsByTask] error:`,e),0}}async function d(e){let t={title:``,desc:``};e&&(t.projectPath=e);try{let e=await fetch(`/api/workbench/tasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}).then(e=>e.json());return e.success?e.task||null:(I.error(e.error||J(`@WORKBENCH:保存失败`)),null)}catch{return I.error(J(`@WORKBENCH:保存失败`)),null}}return{tasks:e,jobs:t,currentProject:n,applyJobEvent:r,connectSSE:a,disconnectSSE:o,loadTasks:s,loadCurrentProject:c,loadJobs:l,clearJobsByTask:u,createTask:d}}B(),u();var Yn=`__no_project__`,Xn=`wb.collapsedGroupPaths.v1`,Zn=`wb.seenGroupPaths.v1`;function Qn(e){try{let t=localStorage.getItem(e);if(!t)return new Set;let n=JSON.parse(t);return new Set(Array.isArray(n)?n.filter(e=>typeof e==`string`):[])}catch{return new Set}}function $n(e,t){try{localStorage.setItem(e,JSON.stringify(Array.from(t)))}catch{}}function er(e,t){let n=P(Qn(Xn)),r=P(Qn(Zn));V(n,e=>$n(Xn,e),{deep:!1}),V(r,e=>$n(Zn,e),{deep:!1});function i(e){return n.value.has(e)}function a(e){n.value.has(e)?n.value.delete(e):n.value.add(e),n.value=new Set(n.value);let t=new Set(r.value);t.add(e),r.value=t}let o=G(()=>{let r=e.value,i=new Map;for(let e of r){let t=Z(e.projectPath)||Yn;i.has(t)||i.set(t,[]),i.get(t).push(e)}let a=Z(t.value.path),o=Array.from(i.keys()).sort((e,t)=>e===a?-1:t===a||e===Yn?1:t===Yn?-1:e.localeCompare(t));return{groups:o.map(e=>({path:e,label:e===Yn?J(`@WORKBENCH:未关联项目`):e,tasks:i.get(e)})),hasMultiple:o.length>1||o.length===1&&n.value.has(o[0])}});function s(e){if(!e||e===Yn)return e;let t=e.split(/[\\/]/).filter(Boolean);return t.length<=1?e:t.slice(-2).join(`/`)}let c=G(()=>`${Z(t.value.path)}|${o.value.groups.map(e=>e.path).join(`
6
+ `)}`);return V(c,()=>{let e=Z(t.value.path);if(!e)return;let i=new Set(n.value),a=new Set(r.value),s=!1;for(let t of o.value.groups)a.has(t.path)||(a.add(t.path),t.path!==e&&(i.add(t.path),s=!0));s&&(n.value=i),r.value=a},{immediate:!0}),{groupedTasksList:o,isGroupCollapsed:i,toggleGroupCollapsed:a,shortProjectLabel:s}}u(),B(),t(),pe();var tr={class:`wb-sidebar`},nr={class:`wb-section`},rr=[`disabled`],ir=[`aria-expanded`,`title`,`onClick`,`onKeydown`],ar=[`title`],or={class:`wb-pill wb-task-group__count`},sr={key:1,class:`wb-task-group__list`},cr=[`data-task-id`,`data-group-path`,`title`,`aria-pressed`,`onClick`,`onKeydown`,`onMousedown`],lr={class:`wb-task-item__body`},ur=[`title`],dr=[`title`],fr={class:`wb-task-item__action-group`},pr=[`title`,`aria-label`,`onClick`],mr=[`onClick`,`title`,`aria-label`],hr={key:0,class:`wb-empty wb-empty--rich`},gr={class:`wb-empty__art`,"aria-hidden":`true`},_r={class:`wb-empty__title`},vr={class:`wb-empty__hint`},yr={class:`wb-empty__cta`},br=5,xr=Y(m({__name:`WorkbenchSidebar`,props:{tasks:{},selectedTaskId:{},currentProject:{},creatingTask:{type:Boolean},isTaskRunning:{type:Function}},emits:[`select-task`,`delete-task`,`copy-task`,`create-task`,`reorder-tasks`],setup(t,{emit:r}){let a=t,s=r,c=G(()=>a.currentProject),{groupedTasksList:l,isGroupCollapsed:u,toggleGroupCollapsed:p,shortProjectLabel:m}=er(G(()=>a.tasks),c),h=G(()=>Z(a.currentProject.path));function g(e){return!!e.projectPath&&Z(e.projectPath)!==h.value}V(()=>a.selectedTaskId,async e=>{e&&(await n(),document.querySelector(`.wb-task-item[data-task-id="${e}"]`)?.scrollIntoView({block:`nearest`}))},{immediate:!0});function _(e){return(e.title||``).trim()||(e.desc||``).replace(/\s+/g,` `).trim()||J(`@WORKBENCH:未命名任务`)}function v(e){let t=_(e),n=J(`@WORKBENCH:拖动排序提示`);return t?`${t} · ${n}`:n}function te(e){return a.isTaskRunning(e)}let y=P(null),ne=P(null),C=P(null),T=P(null),D=P(null),k=null;function A(){y.value=null,ne.value=null,C.value=null,T.value=null,D.value=null,k=null}function oe(e,t,n,r){e.button===0&&(k={pointerY:e.clientY,li:r,taskId:t.id,groupPath:n},window.addEventListener(`mousemove`,se),window.addEventListener(`mouseup`,ce,{once:!0}))}function se(e){if(!k)return;if(y.value===null){if(Math.abs(e.clientY-k.pointerY)<br)return;y.value=k.taskId,ne.value=k.groupPath,window.getSelection()?.removeAllRanges(),document.body.style.userSelect=`none`}let t=document.elementFromPoint(e.clientX,e.clientY);if(!t)return;let n=t.closest(`.wb-task-item`);if(!n){C.value=null,T.value=null,D.value=null;return}let r=n.getAttribute(`data-task-id`),i=n.getAttribute(`data-group-path`);if(!r||!i)return;if(i!==ne.value){C.value=null,T.value=null,D.value=null;return}let a=n.getBoundingClientRect(),o=a.top+a.height/2;C.value=r,T.value=i,D.value=e.clientY<o?`before`:`after`}function ce(e){if(window.removeEventListener(`mousemove`,se),document.body.style.userSelect=``,!k){A();return}let t=k.groupPath,n=k.taskId,r=C.value,i=D.value,a=T.value;if(A(),!r||!i||a!==t)return;let o=l.value.groups.find(e=>e.path===t);if(!o)return;let c=o.tasks.map(e=>e.id),u=c.indexOf(n);if(u<0)return;c.splice(u,1);let d=c.indexOf(r)+ +(i===`after`);c.splice(d,0,n),s(`reorder-tasks`,{groupPath:t,orderedIds:c})}return(n,r)=>{let a=d,c=K;return H(),S(`aside`,tr,[b(`section`,nr,[b(`button`,{class:`wb-new-btn`,disabled:t.creatingTask,onClick:r[0]||=e=>s(`create-task`)},[e(a,{class:`wb-new-btn__icon`},{default:L(()=>[e(x(o))]),_:1}),b(`span`,null,f(x(J)(`@WORKBENCH:新建任务`)),1),r[4]||=b(`span`,{class:`wb-new-btn__shortcut`},`N`,-1)],8,rr),b(`ul`,{class:w([`wb-task-list`,{"is-grouped":x(l).hasMultiple}])},[(H(!0),S(O,null,E(x(l).groups,n=>(H(),S(`li`,{key:n.path,class:`wb-task-group`},[x(l).hasMultiple?(H(),S(`div`,{key:0,class:w([`wb-task-group__head`,{"is-current":n.path===h.value,"is-collapsed":x(u)(n.path)}]),role:`button`,tabindex:`0`,"aria-expanded":!x(u)(n.path),title:x(u)(n.path)?x(J)(`@WORKBENCH:展开`):x(J)(`@WORKBENCH:收起`),onClick:e=>x(p)(n.path),onKeydown:[F(N(e=>x(p)(n.path),[`prevent`]),[`enter`]),F(N(e=>x(p)(n.path),[`prevent`]),[`space`])]},[e(a,{class:`wb-task-group__caret`},{default:L(()=>[(H(),i(ee(x(u)(n.path)?x(ie):x(re))))]),_:2},1024),e(a,{class:`wb-task-group__icon`},{default:L(()=>[e(x(j))]),_:1}),b(`span`,{class:`wb-task-group__name`,title:n.path===h.value?t.currentProject.path:n.label},f(n.path===h.value?t.currentProject.name:x(m)(n.label)),9,ar),b(`span`,or,f(n.tasks.length),1)],42,ir)):W(``,!0),x(u)(n.path)?W(``,!0):(H(),S(`ul`,sr,[(H(!0),S(O,null,E(n.tasks,i=>(H(),S(`li`,{key:i.id,class:w([`wb-task-item`,{active:i.id===t.selectedTaskId,"is-other-project":g(i),"is-running":te(i),"is-dragging":y.value===i.id,"is-drop-before":C.value===i.id&&D.value===`before`,"is-drop-after":C.value===i.id&&D.value===`after`}]),"data-task-id":i.id,"data-group-path":n.path,title:v(i),role:`button`,tabindex:`0`,"aria-pressed":i.id===t.selectedTaskId,onClick:e=>s(`select-task`,i),onKeydown:[F(N(e=>s(`select-task`,i),[`prevent`]),[`enter`]),F(N(e=>s(`select-task`,i),[`prevent`]),[`space`])],onMousedown:e=>oe(e,i,n.path,e.currentTarget)},[b(`div`,lr,[b(`div`,{class:`wb-task-item__title`,title:_(i)},f(_(i)),9,ur)]),te(i)?(H(),S(`span`,{key:0,class:`wb-task-item__running-dot`,title:x(J)(`@WORKBENCH:执行中`),"aria-hidden":`true`},null,8,dr)):W(``,!0),b(`div`,fr,[b(`button`,{class:`wb-task-item__copy`,title:x(J)(`@WORKBENCH:复制任务`),"aria-label":x(J)(`@WORKBENCH:复制任务`),onClick:N(e=>s(`copy-task`,i),[`stop`]),onKeydown:r[1]||=N(()=>{},[`stop`])},[e(a,null,{default:L(()=>[e(x(ge))]),_:1})],40,pr),te(i)?W(``,!0):(H(),S(`button`,{key:0,class:`wb-task-item__del`,onClick:N(e=>s(`delete-task`,i),[`stop`]),onKeydown:r[2]||=N(()=>{},[`stop`]),title:x(J)(`@WORKBENCH:删除`),"aria-label":x(J)(`@WORKBENCH:删除`)},[e(a,null,{default:L(()=>[e(x(ae))]),_:1})],40,mr))])],42,cr))),128))]))]))),128)),t.tasks.length===0?(H(),S(`li`,hr,[b(`div`,gr,[e(a,null,{default:L(()=>[e(x(U))]),_:1})]),b(`div`,_r,f(x(J)(`@WORKBENCH:暂无任务`)),1),b(`div`,vr,f(x(J)(`@WORKBENCH:点击上方按钮新建`)),1),b(`div`,yr,[e(c,{type:`primary`,size:`small`,icon:x(o),loading:t.creatingTask,onClick:r[3]||=e=>s(`create-task`)},{default:L(()=>[R(f(x(J)(`@WORKBENCH:新建任务`)),1)]),_:1},8,[`icon`,`loading`])])])):W(``,!0)],2)])])}}}),[[`__scopeId`,`data-v-8fb62826`]]);u(),B(),t(),pe();var Sr={class:`proj`},Cr={class:`proj__head`},wr={class:`proj__title`},Tr=[`aria-label`,`title`],Er={class:`proj__toggles`},Dr=[`aria-pressed`],Or={key:0,class:`proj__toggle-check`,viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},kr=[`aria-pressed`],Ar={key:0,class:`proj__toggle-check`,viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},jr=[`placeholder`,`aria-label`],Mr={key:0,class:`proj__search-meta`},Nr=[`title`,`aria-label`],Pr={class:`proj__list`},Fr=[`title`],Ir={class:`proj-item__body`},Lr={class:`proj-item__icon-slot`},Rr={class:`proj-item__row1`},zr={class:`proj-item__name`},Br={key:0,class:`proj-item__running`,"aria-hidden":`true`},Vr={class:`proj-item__num`},Hr={key:0,class:`proj-item__row2`},Ur={class:`proj-item__running-text`},Wr=[`title`],Gr={class:`proj-item__progress-text`},Kr=[`title`,`onClick`,`onKeydown`],qr={class:`proj-item__body`},Jr={class:`proj-item__icon-slot`},Yr=[`src`,`onError`],Xr={class:`proj-item__row1`},Zr={class:`proj-item__name`},Qr={class:`proj-item__signals`},$r={key:0,class:`proj-item__running`,"aria-hidden":`true`},ei={key:1,class:`proj-item__badge`},ti={class:`proj-item__row2`},ni={key:0,class:`proj-chip proj-chip--missing`},ri={key:0,class:`proj-item__branch`},ii={class:`proj-item__branch-name`},ai={key:1,class:`proj-chip proj-chip--ahead`},oi={key:2,class:`proj-chip proj-chip--behind`},si={key:3,class:`proj-chip proj-chip--dirty`},ci={class:`proj-item__time`},li={key:0,class:`proj-item__row3`},ui={class:`proj-item__progress-text`},di={class:`proj-item__actions`},fi=[`title`,`aria-label`,`onClick`],pi=[`title`,`aria-label`,`onClick`],mi=[`title`,`aria-label`,`aria-expanded`,`onClick`],hi={key:0,class:`proj-empty`},gi={class:`proj-empty__title`},_i={class:`proj-empty__hint`},vi={key:1,class:`proj-empty`},yi={class:`proj-empty__title`},bi=Y(m({__name:`WorkbenchProjectPanel`,props:{projects:{},selectedKey:{},loading:{type:Boolean}},emits:[`select`,`remove`],setup(t,{emit:r}){let a=t,o=r,c=G(()=>[...a.projects].sort((e,t)=>{if(e.stats.runningJobs>0!=t.stats.runningJobs>0)return e.stats.runningJobs>0?-1:1;let n=e.stats.lastActiveAt||``,r=t.stats.lastActiveAt||``;return n===r?e.name.localeCompare(t.name):r.localeCompare(n)})),l=P(``),u=P(!1),p=P(!1),m=G(()=>!!l.value.trim()||u.value||p.value),h=G(()=>u.value||p.value),g=G(()=>{let e=l.value.trim().toLowerCase();return c.value.filter(t=>u.value&&t.stats.total===0||p.value&&t.git&&t.git.isGitRepo===!1?!1:!e||t.name.toLowerCase().includes(e)||t.path.toLowerCase().includes(e))});function ee(){l.value=``,u.value=!1,p.value=!1}let v=P(!1),te=P(null);function y(){v.value=!v.value,v.value&&n(()=>te.value?.focus())}function ne(){l.value.trim()||(v.value=!1)}let T=G(()=>a.projects.reduce((e,t)=>({running:e.running+t.stats.runningJobs,done:e.done+t.stats.done,total:e.total+t.stats.total}),{running:0,done:0,total:0}));function re(e){return e.git?e.git.isGitRepo===null?J(`@WORKBENCH:未知`):e.git.isGitRepo?e.git.detached?J(`@WORKBENCH:游离 HEAD`):e.git.branch||J(`@WORKBENCH:未知`):``:``}function ie(e){return!!(e.git&&e.git.isGitRepo&&(e.git.detached||e.git.branch))}let{isIconBroken:k,markIconFailed:ae}=Ge(),oe=P(null),j=P(null);function ce(e,t){if(oe.value===e.key){oe.value=null;return}j.value=t.currentTarget,oe.value=e.key}function le(){oe.value=null}function M(e){if(!oe.value)return;let t=e.target;if(t&&!j.value?.contains(t)){for(let e of Array.from(document.querySelectorAll(`.proj-open-menu`)))if(e.contains(t))return;oe.value=null}}s(()=>document.addEventListener(`mousedown`,M,!0)),C(()=>document.removeEventListener(`mousedown`,M,!0));async function ue(e){le();let t=await Be(e.path);t.success?I.success(t.message||J(`@WORKBENCH:已在文件管理器中打开文件夹`)):I.error(t.error||J(`@WORKBENCH:打开文件夹失败`))}async function R(e){let t=e.name||e.path,n=e.stats.total>0?J(`@WORKBENCH:移除项目「{name}」?会从常用目录和项目列表中去掉它。该项目的 {n} 条任务不会被删除,仍可在「全部项目」下查看。`,{name:t,n:e.stats.total}):J(`@WORKBENCH:移除项目「{name}」?会从常用目录和项目列表中去掉它。`,{name:t});try{await he.confirm(n,J(`@WORKBENCH:移除项目`),{confirmButtonText:J(`@WORKBENCH:移除`),cancelButtonText:J(`@WORKBENCH:取消`),type:`warning`})}catch{return}o(`remove`,e)}return(n,r)=>{let a=D,s=d;return H(),S(`section`,Sr,[b(`header`,Cr,[b(`h3`,wr,f(x(J)(`@WORKBENCH:项目列表`)),1),t.projects.length>0?(H(),i(a,{key:0,trigger:`click`,placement:`bottom-end`,width:168,"show-arrow":!1,offset:6,teleported:!0,"popper-class":`proj-filter-popper`},{reference:L(()=>[b(`button`,{type:`button`,class:w([`proj__filter-btn`,{"is-on":h.value}]),"aria-label":x(J)(`@WORKBENCH:筛选项目`),title:x(J)(`@WORKBENCH:筛选项目`)},[...r[8]||=[b(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[b(`path`,{d:`M4 4h16v2.172a2 2 0 0 1-.586 1.414l-4.414 4.414v7l-6 2v-8.5l-4.48-4.928a2 2 0 0 1-.52-1.345v-2.227`})],-1)]],10,Tr)]),default:L(()=>[b(`div`,Er,[b(`button`,{type:`button`,class:w([`proj__toggle`,{"is-on":u.value}]),"aria-pressed":u.value,onClick:r[0]||=e=>u.value=!u.value},[b(`span`,null,f(x(J)(`@WORKBENCH:只看有任务`)),1),u.value?(H(),S(`svg`,Or,[...r[9]||=[b(`path`,{d:`M5 12l5 5l10-10`},null,-1)]])):W(``,!0)],10,Dr),b(`button`,{type:`button`,class:w([`proj__toggle`,{"is-on":p.value}]),"aria-pressed":p.value,onClick:r[1]||=e=>p.value=!p.value},[b(`span`,null,f(x(J)(`@WORKBENCH:隐藏非 Git`)),1),p.value?(H(),S(`svg`,Ar,[...r[10]||=[b(`path`,{d:`M5 12l5 5l10-10`},null,-1)]])):W(``,!0)],10,kr)])]),_:1})):W(``,!0),t.projects.length>0?(H(),S(`div`,{key:1,class:w([`proj__search`,{"is-open":v.value}])},[A(b(`input`,{ref_key:`searchInputRef`,ref:te,"onUpdate:modelValue":r[2]||=e=>l.value=e,class:`proj__search-input`,type:`search`,placeholder:x(J)(`@WORKBENCH:搜索项目名称或路径`),"aria-label":x(J)(`@WORKBENCH:搜索项目名称或路径`),onKeydown:r[3]||=F(e=>l.value=``,[`esc`]),onBlur:ne},null,40,jr),[[de,v.value],[me,l.value]]),m.value&&v.value?(H(),S(`span`,Mr,f(g.value.length)+`/`+f(t.projects.length),1)):W(``,!0),b(`button`,{type:`button`,class:`proj__search-btn`,title:x(J)(`@WORKBENCH:搜索项目名称或路径`),"aria-label":x(J)(`@WORKBENCH:搜索项目名称或路径`),onMousedown:r[4]||=N(()=>{},[`prevent`]),onClick:y},[...r[11]||=[b(`svg`,{class:`proj__search-icon`,viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[b(`path`,{d:`M3 10a7 7 0 1 0 14 0a7 7 0 1 0 -14 0`}),b(`path`,{d:`M21 21l-6 -6`})],-1)]],40,Nr)],2)):W(``,!0)]),b(`ul`,Pr,[b(`li`,{class:w([`proj-item proj-item--all`,{"is-active":t.selectedKey===``,"is-running":T.value.running>0,"is-complete":T.value.total>0&&T.value.done>=T.value.total}]),role:`button`,tabindex:`0`,title:x(J)(`@WORKBENCH:全部项目`),onClick:r[5]||=e=>o(`select`,null),onKeydown:[r[6]||=F(N(e=>o(`select`,null),[`prevent`]),[`enter`]),r[7]||=F(N(e=>o(`select`,null),[`prevent`]),[`space`])]},[b(`div`,Ir,[b(`span`,Lr,[e(s,{class:`proj-item__icon`},{default:L(()=>[...r[12]||=[b(`svg`,{viewBox:`0 0 24 24`,width:`20`,height:`20`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[b(`path`,{d:`M4 5a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1l0 -4`}),b(`path`,{d:`M14 5a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1l0 -4`}),b(`path`,{d:`M4 15a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1l0 -4`}),b(`path`,{d:`M14 15a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1l0 -4`})],-1)]]),_:1})]),b(`div`,Rr,[b(`span`,zr,f(x(J)(`@WORKBENCH:全部项目`)),1),T.value.running>0?(H(),S(`span`,Br)):W(``,!0),b(`span`,Vr,f(t.projects.length),1)]),T.value.running>0?(H(),S(`div`,Hr,[b(`span`,Ur,f(x(J)(`@WORKBENCH:{n} 个执行中`,{n:T.value.running})),1)])):W(``,!0),T.value.total>0?(H(),S(`div`,{key:1,class:`proj-item__row3`,title:x(J)(`@WORKBENCH:只统计项目列表里这些项目名下的任务`)},[b(`span`,Gr,f(x(J)(`@WORKBENCH:{done}/{total} 任务完成`,{done:T.value.done,total:T.value.total})),1)],8,Wr)):W(``,!0)])],42,Fr),(H(!0),S(O,null,E(g.value,n=>(H(),S(`li`,{key:n.key,class:w([`proj-item`,{"is-active":n.key===t.selectedKey,"is-running":n.stats.runningJobs>0,"is-complete":n.stats.total>0&&n.stats.done>=n.stats.total&&n.stats.runningJobs===0,"is-missing":n.exists===!1}]),role:`button`,tabindex:`0`,title:n.path,onClick:e=>o(`select`,n),onKeydown:[F(N(e=>o(`select`,n),[`self`,`prevent`]),[`enter`]),F(N(e=>o(`select`,n),[`self`,`prevent`]),[`space`])]},[b(`div`,qr,[b(`span`,Jr,[n.iconUrl&&!x(k)(n.iconUrl)?(H(),S(`img`,{key:0,class:`proj-item__icon proj-item__icon--img`,src:n.iconUrl,alt:``,onError:e=>x(ae)(n.iconUrl)},null,40,Yr)):(H(),i(s,{key:1,class:`proj-item__icon proj-item__icon--folder`,"aria-hidden":`true`},{default:L(()=>[...r[13]||=[b(`svg`,{viewBox:`0 0 24 24`,width:`32`,height:`32`,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`},[b(`path`,{d:`M9 3a1 1 0 0 1 .608 .206l.1 .087l2.706 2.707h6.586a3 3 0 0 1 2.995 2.824l.005 .176v8a3 3 0 0 1 -2.824 2.995l-.176 .005h-14a3 3 0 0 1 -2.995 -2.824l-.005 -.176v-11a3 3 0 0 1 2.824 -2.995l.176 -.005h4z`})],-1)]]),_:1}))]),b(`div`,Xr,[b(`span`,Zr,f(n.name),1),b(`span`,Qr,[n.stats.runningJobs>0?(H(),S(`span`,$r)):W(``,!0),n.isCurrent?(H(),S(`span`,ei,f(x(J)(`@WORKBENCH:当前`)),1)):W(``,!0)])]),b(`div`,ti,[n.exists===!1?(H(),S(`span`,ni,f(x(J)(`@WORKBENCH:目录不存在`)),1)):(H(),S(O,{key:1},[re(n)?(H(),S(`span`,ri,[ie(n)?(H(),i(Ee,{key:0,"icon-class":`git-branch`,"class-name":`proj-item__branch-icon`})):W(``,!0),b(`span`,ii,f(re(n)),1)])):W(``,!0),n.git&&n.git.ahead>0?(H(),S(`span`,ai,`↑`+f(n.git.ahead),1)):W(``,!0),n.git&&n.git.behind>0?(H(),S(`span`,oi,`↓`+f(n.git.behind),1)):W(``,!0),n.git&&n.git.changed>0?(H(),S(`span`,si,`●`+f(n.git.changed),1)):W(``,!0)],64)),b(`span`,ci,f(x(nt)(n.stats.lastActiveAt)),1)]),n.stats.total>0?(H(),S(`div`,li,[b(`span`,ui,f(x(J)(`@WORKBENCH:{done}/{total} 任务完成`,{done:n.stats.done,total:n.stats.total})),1)])):W(``,!0)]),b(`div`,di,[n.exists===!1?(H(),S(`button`,{key:0,type:`button`,class:`proj-item__action proj-item__action--danger`,title:x(J)(`@WORKBENCH:从清单移除`),"aria-label":`${x(J)(`@WORKBENCH:从清单移除`)} ${n.name}`,onClick:N(e=>R(n),[`stop`])},[e(s,{"aria-hidden":`true`},{default:L(()=>[e(x(se))]),_:1})],8,fi)):(H(),S(`button`,{key:1,type:`button`,class:`proj-item__action`,title:x(J)(`@WORKBENCH:打开文件夹`),"aria-label":`${x(J)(`@WORKBENCH:打开文件夹`)} ${n.name}`,onClick:N(e=>ue(n),[`stop`])},[e(s,{"aria-hidden":`true`},{default:L(()=>[e(x(be))]),_:1})],8,pi)),n.exists===!1?W(``,!0):(H(),i(a,{key:2,visible:oe.value===n.key,trigger:`manual`,placement:`right-start`,width:272,"show-arrow":!1,offset:6,"popper-class":`proj-open-menu`},{reference:L(()=>[b(`button`,{type:`button`,class:w([`proj-item__action`,{"is-open":oe.value===n.key}]),title:x(J)(`@WORKBENCH:打开方式`),"aria-label":`${x(J)(`@WORKBENCH:打开方式`)} ${n.name}`,"aria-expanded":oe.value===n.key,"aria-haspopup":`menu`,onClick:N(e=>ce(n,e),[`stop`])},[e(s,{"aria-hidden":`true`},{default:L(()=>[e(x(_))]),_:1})],10,mi)]),default:L(()=>[oe.value===n.key?(H(),i(it,{key:0,path:n.path,name:n.name,onDone:le},null,8,[`path`,`name`])):W(``,!0)]),_:2},1032,[`visible`]))])],42,Kr))),128)),!t.loading&&t.projects.length===0?(H(),S(`li`,hi,[b(`p`,gi,f(x(J)(`@WORKBENCH:尚无项目`)),1),b(`p`,_i,f(x(J)(`@WORKBENCH:常用目录与建过任务的目录都会出现在这里`)),1)])):W(``,!0),!t.loading&&t.projects.length>0&&g.value.length===0?(H(),S(`li`,vi,[b(`p`,yi,f(x(J)(`@WORKBENCH:没有匹配的项目`)),1),b(`button`,{type:`button`,class:`proj-empty__clear`,onClick:ee},f(x(J)(`@WORKBENCH:清除筛选`)),1)])):W(``,!0)])])}}}),[[`__scopeId`,`data-v-35adb519`]]);u(),B(),t(),pe();var xi={class:`kb-move-menu__head`},Si={class:`kb-move-menu__list`},Ci=[`title`,`onClick`],wi={class:`kb-move-menu__name`},Ti={key:0,class:`kb-move-menu__warn`},Ei={key:0,class:`kb-move-menu__empty`},Di=Y(m({__name:`WorkbenchTaskMoveMenu`,props:{visible:{type:Boolean},x:{},y:{},task:{},projects:{}},emits:[`move`,`close`],setup(e,{emit:t}){let r=e,a=t,o=G(()=>{let e=Z(r.task?.projectPath);return r.projects.filter(t=>Z(t.path)!==e)}),s=P(null),l=P({x:0,y:0});V(()=>r.visible,async e=>{if(!e)return;await n();let t=s.value;if(!t)return;let i=t.getBoundingClientRect();l.value={x:Math.min(Math.max(8,r.x),Math.max(8,window.innerWidth-i.width-8)),y:Math.min(Math.max(8,r.y),Math.max(8,window.innerHeight-i.height-8))}});function u(e){let t=s.value;t&&e.target instanceof Node&&t.contains(e.target)||a(`close`)}function d(){a(`close`)}function p(e){e.key===`Escape`&&(e.stopPropagation(),a(`close`))}V(()=>r.visible,e=>{e&&(window.addEventListener(`pointerdown`,u,!0),window.addEventListener(`scroll`,d,!0),window.addEventListener(`keydown`,p,!0))},{immediate:!0}),V(()=>r.visible,e=>{e||(window.removeEventListener(`pointerdown`,u,!0),window.removeEventListener(`scroll`,d,!0),window.removeEventListener(`keydown`,p,!0))}),C(()=>{window.removeEventListener(`pointerdown`,u,!0),window.removeEventListener(`scroll`,d,!0),window.removeEventListener(`keydown`,p,!0)});function m(e){a(`move`,e.path)}return(t,n)=>(H(),i(Se,{to:`body`},[e.visible&&e.task?(H(),S(`div`,{key:0,ref_key:`menuRef`,ref:s,class:`kb-move-menu`,role:`menu`,style:c({top:l.value.y+`px`,left:l.value.x+`px`}),onContextmenu:n[0]||=N(()=>{},[`prevent`])},[b(`p`,xi,f(x(J)(`@WORKBENCH:移动到其他项目`)),1),b(`div`,Si,[(H(!0),S(O,null,E(o.value,e=>(H(),S(`button`,{key:e.key,type:`button`,class:`kb-move-menu__item`,role:`menuitem`,title:e.path,onClick:t=>m(e)},[b(`span`,wi,f(e.name),1),e.exists===!1?(H(),S(`span`,Ti,f(x(J)(`@WORKBENCH:目录不存在`)),1)):W(``,!0)],8,Ci))),128)),o.value.length===0?(H(),S(`p`,Ei,f(x(J)(`@WORKBENCH:没有其他项目`)),1)):W(``,!0)])],36)):W(``,!0)]))}}),[[`__scopeId`,`data-v-d7536f7f`]]),Oi=[140,170,200,230,260,290,320,350];function ki(e){return(e||``).replace(/\\/g,`/`).trim().toLowerCase()}function Ai(e){let t=ki(e),n=2166136261;for(let e=0;e<t.length;e++)n^=t.charCodeAt(e),n=Math.imul(n,16777619);return n^=n>>>16,n=Math.imul(n,2246822507),n^=n>>>13,n=Math.imul(n,3266489909),n^=n>>>16,Oi[(n>>>0)%Oi.length]}function ji(e){return{"--tag-hue":String(Ai(e))}}u(),t(),B(),pe();var Mi={class:`kb`},Ni=[`aria-hidden`],Pi={class:`kb-col__head`},Fi={class:`kb-col__title`},Ii={class:`kb-col__count`},Li={class:`kb-col__list`},Ri=[`data-task-id`,`aria-current`,`onClick`,`onKeydown`,`onContextmenu`],zi=[`title`,`aria-label`,`onClick`],Bi=[`src`,`alt`,`onError`],Vi={key:0,class:`kb-card__cover-more`,"aria-hidden":`true`},Hi={class:`kb-card__row1`},Ui=[`title`],Wi=[`title`],Gi={class:`kb-card__time`},Ki=[`title`],qi=[`title`],Ji={key:3,class:`kb-card__live`},Yi={class:`kb-card__live-meta`},Xi=[`title`],Zi=[`title`],Qi={key:2,class:`kb-card__live-pid`},$i={key:3,class:`kb-card__live-silent`},ea=[`title`],ta=[`aria-valuenow`,`aria-label`],na={class:`kb-card__live-pct`},ra={class:`kb-card__live-pct-tag`},ia=[`title`],aa=[`title`],oa={class:`kb-card__live-tag`},sa=[`title`],ca={class:`kb-card__live-tag`},la=[`title`],ua=[`title`],da={class:`kb-card__reply-text`},fa=[`title`,`onClick`],pa={class:`kb-card__actions`},ma=[`title`,`onClick`],ha=[`title`,`aria-label`,`onClick`],ga=[`title`,`aria-label`,`onClick`],_a=[`title`,`aria-label`,`onClick`],va=[`title`,`aria-label`,`onClick`],ya={key:0,class:`kb-col__add`},ba={key:1,class:`kb-col__empty`},xa={key:2,class:`kb-col__more`},Sa={key:1,class:`kb__table-wrap`},Ca={class:`kb-table`},wa={class:`kb-table__th`},Ta={class:`kb-table__th kb-table__th--narrow`},Ea={class:`kb-table__th kb-table__th--time`},Da=[`onClick`,`onKeydown`],Oa={class:`kb-table__td`},ka=[`title`,`onClick`],Aa={class:`kb-table__name`},ja=[`title`],Ma={key:2,class:`kb-table__live`},Na=[`title`],Pa=[`title`],Fa={key:2,class:`kb-table__live-silent`},Ia={key:3,class:`kb-table__live kb-table__live--reply`},La=[`title`],Ra={class:`kb-table__td`},za={class:`kb-table__td kb-table__td--num`},Ba=[`title`],Va={class:`kb-table__dur`},Ha=[`title`],Ua={key:0},Wa={class:`kb-table__td kb-table__empty`,colspan:`3`},Ga=30,Ka=Y(m({__name:`WorkbenchKanban`,props:{tasks:{},projectLabels:{},projects:{},taskPercents:{},showProjectLabel:{type:Boolean},view:{},search:{},openedTaskId:{}},emits:[`open-task`,`run-task`,`stop-task`,`complete-task`,`reopen-task`,`delete-task`,`move-task`,`create-task`,`update:view`,`update:search`],setup(t,{emit:r}){let a=t,o=r,l=[{key:`todo`,labelKey:`@WORKBENCH:待处理`},{key:`doing`,labelKey:`@WORKBENCH:进行中`},{key:`done`,labelKey:`@WORKBENCH:已完成`}],u=P({visible:!1,x:0,y:0,task:null});function d(e,t,n){t===`todo`&&(n.preventDefault(),u.value={visible:!0,x:n.clientX,y:n.clientY,task:e})}function p(e){let t=u.value.task;u.value={...u.value,visible:!1},t&&o(`move-task`,t,e)}let m=G(()=>{let e=a.search.trim().toLowerCase();return a.tasks.filter(t=>!e||(t.title||``).toLowerCase().includes(e)||(t.desc||``).toLowerCase().includes(e))}),h=P(Ga);V(()=>a.search,()=>{h.value=Ga});let g=G(()=>{let e=l.map(e=>{let t=e.key===`done`?m.value.filter(t=>t.column===e.key).sort(te):m.value.filter(t=>t.column===e.key);return{...e,all:t}}),t=e.some(e=>e.all.length>0);return e.map(e=>({key:e.key,labelKey:e.labelKey,total:e.all.length,hidden:e.key===`done`?Math.max(0,e.all.length-h.value):0,tasks:e.key===`done`?e.all.slice(0,h.value):e.all,collapsed:t&&e.all.length===0&&e.key!==`todo`}))}),_=G(()=>({gridTemplateColumns:g.value.map(e=>e.collapsed?`minmax(0, 0fr)`:`minmax(0, 1fr)`).join(` `)})),ee=P(!1);s(()=>{requestAnimationFrame(()=>requestAnimationFrame(()=>{ee.value=!0}))}),V(()=>a.openedTaskId,e=>{e&&n(()=>{document.querySelector(`.kb-card[data-task-id="${e}"]`)?.scrollIntoView({block:`nearest`,inline:`nearest`})})});function v(e){return En(e)}function te(e,t){return v(t).localeCompare(v(e))}function y(e){return Dn(e)}function ne(e){return On(e)}function C(e){return Mn(e)}function T(e){let t=(e.autoCompleted?.reason||``).trim(),n=J(`@WORKBENCH:静默超时后由 AI 核对,判定这条任务已经完成`);return t?`${n}\n${t}`:n}let re=G(()=>[...m.value].sort((e,t)=>y(t).localeCompare(y(e))));function ie(e){let t=(e.title||``).trim();if(t)return t;let n=(e.desc||``).replace(/\s+/g,` `).trim();return(/^[a-zA-Z]:[\\/]/.test(n)||n.startsWith(`\\\\`))&&n.split(/[\\/]/).filter(Boolean).pop()||n}function D(e){return a.projectLabels[e.projectPath]||``}function k(e){return e.lastJobStatus===`error`}function A(e){return e.live?.agent||e.lastJobAgent||``}function ae(e){if(!e.live)return null;let t=a.taskPercents?.[e.id];return typeof t==`number`?t:null}function j(e){let t=e.live;if(!t)return``;let n=An(e),r=t.lastLine||t.lastThought||t.lastTool;return r?`${n} · ${r}`:n}function se(e){return Array.isArray(e.images)?e.images:[]}let ce=P(new Set);function le(e){ce.value=new Set(ce.value).add(e)}function M(e){let t=se(e);return ce.value.size===0?t:t.filter(e=>!ce.value.has(e.id))}function ue(e){return`/api/workbench/attachments/${e}/raw`}let I=P(null);function L(e,t=0){let n=M(e);n.length!==0&&(I.value={urls:n.map(e=>ue(e.id)),index:t})}function z(){I.value=null}function B(e){return e.originalName?`${J(`@WORKBENCH:查看图片`)} · ${e.originalName}`:J(`@WORKBENCH:查看图片`)}return(n,r)=>{let a=oe;return H(),S(`div`,Mi,[t.view===`kanban`?(H(),S(`div`,{key:0,class:w([`kb__columns`,{"is-animated":ee.value}]),style:c(_.value)},[(H(!0),S(O,null,E(g.value,n=>(H(),S(`section`,{key:n.key,class:w([`kb-col`,[`kb-col--`+n.key,{"is-collapsed":n.collapsed}]]),"aria-hidden":n.collapsed?`true`:void 0},[b(`header`,Pi,[b(`span`,{class:w([`kb-col__dot`,{"is-live":n.total>0}]),"aria-hidden":`true`},null,2),b(`h3`,Fi,f(x(J)(n.labelKey)),1),b(`span`,Ii,f(n.total),1)]),b(`ul`,Li,[(H(!0),S(O,null,E(n.tasks,i=>(H(),S(`li`,{key:i.id,class:w([`kb-card`,{"is-running":i.runningJobs>0,"has-error":k(i),"is-opened":i.id===t.openedTaskId}]),"data-task-id":i.id,"aria-current":i.id===t.openedTaskId?`true`:void 0,role:`button`,tabindex:`0`,onClick:e=>o(`open-task`,i),onKeydown:[F(N(e=>o(`open-task`,i),[`prevent`]),[`enter`]),F(N(e=>o(`open-task`,i),[`prevent`]),[`space`])],onContextmenu:e=>d(i,n.key,e)},[M(i).length>0?(H(),S(`button`,{key:0,type:`button`,class:`kb-card__cover`,title:B(M(i)[0]),"aria-label":B(M(i)[0]),onClick:N(e=>L(i),[`stop`]),onKeydown:r[0]||=N(()=>{},[`stop`])},[b(`img`,{class:`kb-card__cover-img`,src:ue(M(i)[0].id),alt:M(i)[0].originalName,loading:`lazy`,decoding:`async`,onError:e=>le(M(i)[0].id)},null,40,Bi),M(i).length>1?(H(),S(`span`,Vi,` +`+f(M(i).length-1),1)):W(``,!0)],40,zi)):W(``,!0),b(`div`,Hi,[t.showProjectLabel&&D(i)?(H(),S(`span`,{key:0,class:`kb-card__project-chip`,style:c(x(ji)(i.projectPath)),title:i.projectPath},f(D(i)),13,Ui)):W(``,!0),b(`p`,{class:`kb-card__title`,title:ie(i)},f(ie(i)||x(J)(`@WORKBENCH:未命名任务`)),9,Wi),b(`span`,Gi,f(x(nt)(y(i))),1)]),ne(i)?(H(),S(`p`,{key:1,class:`kb-card__spent`,title:C(i)},f(x(kn)(i)),9,Ki)):W(``,!0),i.autoCompleted?(H(),S(`p`,{key:2,class:`kb-card__auto-done`,title:T(i)},f(x(J)(`@WORKBENCH:AI 判定完成`)),9,qi)):W(``,!0),i.live?(H(),S(`div`,Ji,[b(`p`,Yi,[A(i)?(H(),S(`span`,{key:0,class:`kb-card__live-agent`,title:x(X)(A(i))},[e(Ie,{executor:A(i),class:`kb-card__live-agent-icon`},null,8,[`executor`])],8,Xi)):W(``,!0),b(`span`,null,f(x(An)(i)),1),i.live.toolCallCount?(H(),S(`span`,{key:1,title:i.live.toolMix||``},f(x(J)(`@WORKBENCH:工具 {n} 次`,{n:i.live.toolCallCount})),9,Zi)):W(``,!0),i.live.pid?(H(),S(`span`,Qi,`PID `+f(i.live.pid),1)):W(``,!0),x(Pe)(i.live.silentMs)===null?W(``,!0):(H(),S(`span`,$i,f(x(J)(`@WORKBENCH:静默 {elapsed}`,{elapsed:x(tt)(x(Pe)(i.live.silentMs))})),1))]),ae(i)===null?W(``,!0):(H(),S(`p`,{key:0,class:`kb-card__live-progress`,title:x(J)(x(Re))},[b(`span`,{class:`kb-card__live-bar`,role:`progressbar`,"aria-valuenow":ae(i),"aria-valuemin":`0`,"aria-valuemax":`100`,"aria-label":ie(i)||x(J)(`@WORKBENCH:未命名任务`)},[b(`i`,{class:`kb-card__live-bar-fill`,style:c({width:ae(i)+`%`})},null,4)],8,ta),b(`span`,na,[b(`span`,ra,f(x(J)(x(Ue))),1),R(f(ae(i))+`% `,1)])],8,ea)),i.live.lastTool?(H(),S(`p`,{key:1,class:`kb-card__live-line is-tool`,title:i.live.lastTool},f(i.live.lastTool),9,ia)):W(``,!0),i.live.lastThought?(H(),S(`p`,{key:2,class:`kb-card__live-line is-thought`,title:i.live.lastThought},[b(`span`,oa,f(x(J)(`@WORKBENCH:最近思考`)),1),R(f(i.live.lastThought),1)],8,aa)):W(``,!0),i.live.lastLine?(H(),S(`p`,{key:3,class:`kb-card__live-line`,title:i.live.lastLine},[b(`span`,ca,f(x(J)(`@WORKBENCH:最新回复`)),1),R(f(i.live.lastLine),1)],8,sa)):W(``,!0)])):i.lastReply?(H(),S(`p`,{key:4,class:`kb-card__reply`,title:i.lastReply},[A(i)?(H(),S(`span`,{key:0,class:`kb-card__quote-agent`,title:x(X)(A(i))},[e(Ie,{executor:A(i),class:`kb-card__quote-agent-icon`},null,8,[`executor`])],8,ua)):W(``,!0),b(`span`,da,f(i.lastReply),1)],8,la)):W(``,!0),k(i)&&i.runningJobs===0?(H(),S(`button`,{key:5,type:`button`,class:`kb-card__retry`,title:x(J)(`@WORKBENCH:重新执行这条任务`),onClick:N(e=>o(`run-task`,i),[`stop`]),onKeydown:r[1]||=N(()=>{},[`stop`])},f(x(J)(`@WORKBENCH:重试`)),41,fa)):W(``,!0),b(`div`,pa,[i.runningJobs===0?(H(),S(`button`,{key:0,type:`button`,class:`kb-card__btn`,title:x(J)(`@WORKBENCH:执行`),onClick:N(e=>o(`run-task`,i),[`stop`]),onKeydown:r[2]||=N(()=>{},[`stop`])},f(x(J)(`@WORKBENCH:执行`)),41,ma)):(H(),S(`button`,{key:1,type:`button`,class:`kb-card__btn kb-card__btn--stop`,title:x(J)(`@WORKBENCH:停止`),"aria-label":x(J)(`@WORKBENCH:停止`),onClick:N(e=>o(`stop-task`,i),[`stop`]),onKeydown:r[3]||=N(()=>{},[`stop`])},f(x(J)(`@WORKBENCH:停止`)),41,ha)),i.column===`done`?i.manualDoneAt?(H(),S(`button`,{key:3,type:`button`,class:`kb-card__btn`,title:x(J)(`@WORKBENCH:撤销完成标记,退回待处理`),"aria-label":x(J)(`@WORKBENCH:撤销完成标记`),onClick:N(e=>o(`reopen-task`,i),[`stop`]),onKeydown:r[5]||=N(()=>{},[`stop`])},f(x(J)(`@WORKBENCH:撤销`)),41,_a)):W(``,!0):(H(),S(`button`,{key:2,type:`button`,class:`kb-card__btn kb-card__btn--done`,title:x(J)(`@WORKBENCH:标记为已完成`),"aria-label":x(J)(`@WORKBENCH:标记为已完成`),onClick:N(e=>o(`complete-task`,i),[`stop`]),onKeydown:r[4]||=N(()=>{},[`stop`])},f(x(J)(`@WORKBENCH:完成`)),41,ga)),b(`button`,{type:`button`,class:`kb-card__btn kb-card__btn--danger`,title:x(J)(`@WORKBENCH:删除`),"aria-label":x(J)(`@WORKBENCH:删除`),onClick:N(e=>o(`delete-task`,i),[`stop`]),onKeydown:r[6]||=N(()=>{},[`stop`])},`×`,40,va)])],42,Ri))),128)),n.key===`todo`?(H(),S(`li`,ya,[b(`button`,{type:`button`,class:w([`kb-col__add-btn`,{"kb-col__add-btn--solo":n.tasks.length===0}]),onClick:r[7]||=e=>o(`create-task`)},[r[11]||=b(`span`,{class:`kb-col__add-plus`,"aria-hidden":`true`},`+`,-1),b(`span`,null,f(x(J)(`@WORKBENCH:新建任务`)),1)],2)])):n.tasks.length===0?(H(),S(`li`,ba,[b(`span`,null,f(x(J)(`@WORKBENCH:暂无任务`)),1)])):W(``,!0),n.hidden>0?(H(),S(`li`,xa,[b(`button`,{type:`button`,class:`kb-col__more-btn`,onClick:r[8]||=e=>h.value+=Ga},f(x(J)(`@WORKBENCH:显示更早的 {n} 条`,{n:Math.min(Ga,n.hidden)})),1)])):W(``,!0)])],10,Ni))),128))],6)):(H(),S(`div`,Sa,[b(`table`,Ca,[b(`thead`,null,[b(`tr`,null,[b(`th`,wa,f(x(J)(`@WORKBENCH:任务`)),1),b(`th`,Ta,f(x(J)(`@WORKBENCH:状态`)),1),b(`th`,Ea,f(x(J)(`@WORKBENCH:时间`)),1)])]),b(`tbody`,null,[(H(!0),S(O,null,E(re.value,n=>(H(),S(`tr`,{key:n.id,class:`kb-table__row`,tabindex:`0`,onClick:e=>o(`open-task`,n),onKeydown:[F(N(e=>o(`open-task`,n),[`prevent`]),[`enter`]),F(N(e=>o(`open-task`,n),[`prevent`]),[`space`])]},[b(`td`,Oa,[M(n).length>0?(H(),S(`button`,{key:0,type:`button`,class:`kb-table__shots`,title:B(M(n)[0]),onClick:N(e=>L(n),[`stop`]),onKeydown:r[9]||=N(()=>{},[`stop`])},f(x(J)(`@WORKBENCH:{n} 张图`,{n:M(n).length})),41,ka)):W(``,!0),b(`span`,Aa,f(ie(n)||x(J)(`@WORKBENCH:未命名任务`)),1),t.showProjectLabel&&D(n)?(H(),S(`span`,{key:1,class:`kb-table__project`,style:c(x(ji)(n.projectPath)),title:n.projectPath},f(D(n)),13,ja)):W(``,!0),n.live?(H(),S(`span`,Ma,[A(n)?(H(),S(`span`,{key:0,class:`kb-table__agent`,title:x(X)(A(n))},[e(Ie,{executor:A(n),class:`kb-table__agent-icon`},null,8,[`executor`])],8,Na)):W(``,!0),R(` `+f(j(n))+` `,1),ae(n)===null?W(``,!0):(H(),S(`span`,{key:1,class:`kb-table__pct`,title:x(J)(x(Re))},f(x(J)(x(Ue)))+` `+f(ae(n))+`% `,9,Pa)),x(Pe)(n.live.silentMs)===null?W(``,!0):(H(),S(`span`,Fa,f(x(J)(`@WORKBENCH:静默 {elapsed}`,{elapsed:x(tt)(x(Pe)(n.live.silentMs))})),1))])):n.lastReply?(H(),S(`span`,Ia,[A(n)?(H(),S(`span`,{key:0,class:`kb-table__agent`,title:x(X)(A(n))},[e(Ie,{executor:A(n),class:`kb-table__agent-icon`},null,8,[`executor`])],8,La)):W(``,!0),R(f(n.lastReply),1)])):W(``,!0)]),b(`td`,Ra,[b(`span`,{class:w([`kb-table__status`,`is-`+n.column])},f(x(J)(l.find(e=>e.key===n.column).labelKey)),3)]),b(`td`,za,[b(`span`,{class:`kb-table__time`,title:C(n)},[ne(n)?(H(),S(O,{key:0},[b(`span`,Va,f(x(kn)(n)),1),r[12]||=b(`span`,{class:`kb-table__time-sep`,"aria-hidden":`true`},`·`,-1)],64)):W(``,!0),n.autoCompleted?(H(),S(O,{key:1},[b(`span`,{class:`kb-table__auto-done`,title:T(n)},f(x(J)(`@WORKBENCH:AI 判定完成`)),9,Ha),r[13]||=b(`span`,{class:`kb-table__time-sep`,"aria-hidden":`true`},`·`,-1)],64)):W(``,!0),b(`span`,null,f(x(nt)(y(n))),1)],8,Ba)])],40,Da))),128)),re.value.length===0?(H(),S(`tr`,Ua,[b(`td`,Wa,f(x(J)(`@WORKBENCH:暂无任务`)),1)])):W(``,!0)])])])),I.value?(H(),i(a,{key:2,"url-list":I.value.urls,"initial-index":I.value.index,"hide-on-click-modal":!0,teleported:!0,onClose:z},null,8,[`url-list`,`initial-index`])):W(``,!0),e(Di,{visible:u.value.visible,x:u.value.x,y:u.value.y,task:u.value.task,projects:t.projects,onMove:p,onClose:r[10]||=e=>u.value.visible=!1},null,8,[`visible`,`x`,`y`,`task`,`projects`])])}}}),[[`__scopeId`,`data-v-6ff750cc`]]);u(),B(),t(),pe();var qa=[`title`,`aria-label`],Ja={class:`oc__rail-text`},Ya={class:`oc__head`},Xa={class:`oc__title`},Za=[`title`,`aria-label`],Qa={class:`oc__report-head`},$a={class:`oc__panel-title`},eo=[`value`,`title`,`aria-label`],to=[`value`],no=[`disabled`,`title`],ro={class:`oc__report-list`},io={key:0,class:`rp`},ao={class:`rp__head`},oo=[`title`],so={class:`rp__count`},co={class:`rp__time`},lo=[`title`,`aria-label`],uo=[`title`],fo=[`aria-valuenow`,`aria-label`],po={class:`rp__percent`},mo={class:`rp__percent-tag`},ho={key:1,class:`rp__body`},go=[`title`],_o=[`title`],vo={class:`oc-empty__text`},yo=[`aria-expanded`,`title`],bo={class:`oc__sect-title`},xo={class:`oc__sect-meta`},So={class:`oc__sect-brief`},Co={class:`oc__history-list`},wo=[`onClick`],To={class:`oc__history-time`},Eo={class:`oc__history-pct`},Do={class:`oc__history-sum`},Oo=[`aria-expanded`,`title`],ko={class:`oc__sect-title`},Ao={class:`oc__sect-meta`},jo={class:`oc__git-name`},Mo={key:0,class:`oc__sect-brief`},No={class:`oc__git-list`},Po={class:`oc__git-label`},Fo={class:`oc__git-label`},Io={class:`oc__git-value`},Lo={class:`oc__git-label`},Ro={class:`oc__git-value`},zo=[`placeholder`],Bo={key:0},Vo={key:1},Ho={class:`oc__compose-foot`},Uo=[`disabled`,`title`,`aria-label`],Wo=[`title`,`aria-label`],Go=[`title`],Ko=[`title`],qo=[`title`],Jo=[`checked`],Yo={class:`oc__foot-label`},Xo=[`disabled`],Zo={class:`oc__hint`},Qo=`/api/workbench/orchestrator/attachments`,$o=`wb.ocInputHeight.v2`,es=76,ts=20,ns=Y(m({__name:`OrchestratorConsole`,props:{running:{},selectedProject:{},dispatching:{type:Boolean},todayDone:{},collapsed:{type:Boolean},defaultPrompt:{},projectPrompts:{},reports:{},reportIntervalMs:{},generatingReport:{type:Boolean},maxInstructionChars:{}},emits:[`toggle-collapse`,`open-prompt-settings`,`generate-report`,`set-report-interval`,`locate-task`,`dispatch`],setup(t,{expose:r,emit:a}){let o=t,l=a,u=P(``),m=P(!0),h=P(!0),{active:_}=Ze(),v=P([]),y=G(()=>({kind:`draft`,list:v.value,replace:e=>{v.value=e}})),{isUploading:ne,isImageAttachment:T,humanSize:D,onAttachmentPaste:k,onAttachmentDrop:ae,removeAttachment:oe,pickAttachmentFile:j}=Un(),se=G(()=>ne(`draft`)),ce=P(!1),le=P(null),M=G(()=>_.value===`codearts`),F=G(()=>le.value??M.value),I=G(()=>v.value.some(e=>T(e)));function B(e){le.value=e.target.checked}function fe(e){e.stopPropagation(),k(e,y.value)}function pe(e){ce.value=!1,ae(e,y.value)}function he(){j(y.value)}function ge(e){oe(y.value,e)}function U(){v.value=[]}function _e(){u.value=``}r({clearAttachments:U,clearDraft:_e});let ye=G(()=>o.selectedProject?.key||``),be=G(()=>(o.defaultPrompt||``).trim()),xe=G(()=>{let e=ye.value;return e?(o.projectPrompts?.[e]?.prompt||``).trim():``}),Se=G(()=>Object.values(o.projectPrompts||{}).some(e=>(e?.prompt||``).trim().length>0)),K=G(()=>!!be.value||Se.value),q=G(()=>{let e=!!be.value,t=ye.value?xe.value?`project`:`none`:Se.value?`target`:`none`;return J(e&&t===`project`?`@WORKBENCH:全局 + 本项目`:e&&t===`target`?`@WORKBENCH:全局 + 落点项目`:e?`@WORKBENCH:全局`:t===`project`?`@WORKBENCH:本项目`:t===`target`?`@WORKBENCH:落点项目`:`@WORKBENCH:未设置`)}),Ce=G(()=>u.value.trim().length),we=G(()=>o.maxInstructionChars||1e5),Te=G(()=>Ce.value>we.value),Y=G(()=>!Te.value&&Ce.value>=we.value*.9),Ee=G(()=>u.value.trim().length>0&&!o.dispatching&&!se.value&&!Te.value);function De(){Ee.value&&l(`dispatch`,{text:u.value.trim(),autoRun:m.value,attachments:v.value,projectPath:o.selectedProject?o.selectedProject.path:``,useDefaultPrompt:h.value,executor:_.value,imageText:F.value})}function Oe(e){e.isComposing||e.keyCode===229||e.key!==`Enter`||e.shiftKey||(e.preventDefault(),De())}function X(){try{let e=localStorage.getItem($o);if(!e)return null;let t=Number(e);return Number.isFinite(t)&&t>=es?Math.round(t):null}catch{return null}}let ke=P(null),Ae=P(X()),je=G(()=>{let e={};return Ae.value&&(e.height=`${Ae.value}px`),e}),Me=null,Z=!1,Pe=!0;function Fe(e){let t=ke.value;if(!t)return;let n=t.getBoundingClientRect();Z=n.right-e.clientX<=ts&&n.bottom-e.clientY<=ts}function Ie(){Z=!1}function Be(e){let t=Math.round(e.offsetHeight);if(!(t<es||t===Ae.value)){Ae.value=t;try{localStorage.setItem($o,String(t))}catch{}}}s(()=>{let e=ke.value;e&&(window.addEventListener(`mouseup`,Ie),!(typeof ResizeObserver>`u`)&&(Me=new ResizeObserver(()=>{if(Pe){Pe=!1;return}let t=parseFloat(getComputedStyle(e).maxHeight),n=Number.isFinite(t)&&e.offsetHeight>=t-1;(Z||!n)&&Be(e)}),Me.observe(e)))}),C(()=>{window.removeEventListener(`mouseup`,Ie),Me?.disconnect(),Me=null});let Ve=P(null),We=G(()=>(o.running||[]).length),Ge=G(()=>{let e=o.running||[];return{job:new Set(e.map(e=>e.jobId).filter(Boolean)),task:new Set(e.map(e=>e.taskId).filter(Boolean))}});function Ke(e){if(!e)return!1;let t=Ge.value;return(e.tasks||[]).some(e=>e.jobId&&t.job.has(e.jobId)||!e.jobId&&!!e.taskId&&t.task.has(e.taskId))}let qe=G(()=>(o.reports||[]).find(Ke)||null),Je=G(()=>{let e=$.value;if(!e)return null;let t=e.tasks||[],n=Ge.value;return(t.find(e=>e.jobId&&n.job.has(e.jobId)||!e.jobId&&!!e.taskId&&n.task.has(e.taskId))||t.find(e=>!!e.taskId))?.taskId||null}),$=G(()=>{let e=o.reports||[];if(!e.length)return null;if(Ve.value){let t=e.find(e=>e.id===Ve.value);if(t)return t}return qe.value}),Ye=G(()=>!!$.value&&!Ke($.value)),Xe=G(()=>(o.reports||[]).length?We.value>0?J(`@WORKBENCH:这批任务还没有进度报告`):J(`@WORKBENCH:当前没有正在执行的任务`):J(`@WORKBENCH:暂无进度报告`)),Qe=G(()=>(o.reports||[]).length?J(`@WORKBENCH:最新那份报告讲的任务已经跑完了,要回看可以从历史报告里点开`):``);function $e(e){Ve.value=e.id}let tt=P(null),it=P(!0),at=P(!1);function ot(){let e=tt.value;e&&!it.value&&(at.value=e.scrollHeight-e.clientHeight>2)}function st(){it.value=!it.value,it.value||n(ot)}let ct=null;V(tt,e=>{ct?.disconnect(),ct=null,e&&(ct=new ResizeObserver(()=>ot()),ct.observe(e))}),C(()=>{ct?.disconnect(),ct=null}),V(()=>$.value?.id,()=>{it.value=!0,at.value=!1,n(ot)});function lt(e){let t=ze(e.percent);return t===null?``:t+`%`}let ut=G(()=>ze($.value?.percent));function dt(e){let t=String(e.text||``).replace(/\s+/g,` `).trim();return t?t.length>42?t.slice(0,42)+`…`:t:e.errorCode?J(He(e.errorCode)):J(`@WORKBENCH:当时没有任务在执行`)}function ft(e){return e.errorCode?J(He(e.errorCode)):e.tasks.length?J(`@WORKBENCH:模型没有返回内容`):J(`@WORKBENCH:生成这份报告时没有任务在执行`)}function pt(e){let t=e.target,n=Number(t.value);Ne.includes(n)&&l(`set-report-interval`,n)}let mt=G(()=>{let e=o.selectedProject;if(!e)return[];let t=[];if(e.exists===!1)return t.push({label:J(`@WORKBENCH:工作区`),value:J(`@WORKBENCH:目录不存在`),tone:`danger`}),t;let n=e.git;return!n||n.isGitRepo===null?(t.push({label:J(`@WORKBENCH:Git 状态`),value:J(`@WORKBENCH:未知`),tone:``}),t):n.isGitRepo?(t.push({label:J(`@WORKBENCH:分支`),value:n.detached?J(`@WORKBENCH:游离 HEAD`):n.branch||J(`@WORKBENCH:未知`),tone:``}),t.push({label:J(`@WORKBENCH:工作区`),value:n.changed>0?J(`@WORKBENCH:未提交 {n} 项`,{n:n.changed}):J(`@WORKBENCH:干净`),tone:n.changed>0?`warn`:``}),n.hasUpstream&&(n.ahead>0||n.behind>0)&&t.push({label:J(`@WORKBENCH:与上游`),value:J(`@WORKBENCH:领先 {ahead} / 落后 {behind}`,{ahead:n.ahead,behind:n.behind}),tone:n.behind>0?`warn`:``}),t):(t.push({label:J(`@WORKBENCH:Git 状态`),value:J(`@WORKBENCH:不是 Git 仓库`),tone:``}),t)}),ht={history:`wb.ocHistoryOpen.v1`,git:`wb.ocGitOpen.v1`};function gt(e){try{return localStorage.getItem(e)===`1`}catch{return!1}}let _t=P(gt(ht.history)),yt=P(gt(ht.git));function bt(e){let t=e===`history`?_t:yt;t.value=!t.value;try{localStorage.setItem(ht[e],t.value?`1`:`0`)}catch{}}function xt(){_t.value||bt(`history`)}let St=G(()=>mt.value.slice(0,2).map(e=>e.value).join(` · `));return(n,r)=>{let a=d;return H(),S(`aside`,{class:w([`oc`,{"is-collapsed":t.collapsed,"is-report-empty":!t.collapsed&&!$.value}])},[t.collapsed?(H(),S(`button`,{key:0,type:`button`,class:`oc__rail`,title:x(J)(`@WORKBENCH:展开主 Agent 控制台`),"aria-label":x(J)(`@WORKBENCH:展开主 Agent 控制台`),"aria-expanded":!1,onClick:r[0]||=e=>l(`toggle-collapse`)},[e(a,{class:`oc__rail-icon`},{default:L(()=>[e(x(ve))]),_:1}),b(`span`,Ja,f(x(J)(`@WORKBENCH:主 Agent 控制台`)),1)],8,qa)):W(``,!0),A(b(`header`,Ya,[b(`h3`,Xa,f(x(J)(`@WORKBENCH:主 Agent 控制台`)),1),b(`button`,{type:`button`,class:`oc__collapse`,title:x(J)(`@WORKBENCH:收起主 Agent 控制台`),"aria-label":x(J)(`@WORKBENCH:收起主 Agent 控制台`),"aria-expanded":!0,onClick:r[1]||=e=>l(`toggle-collapse`)},[e(a,null,{default:L(()=>[e(x(ue))]),_:1})],8,Za)],512),[[de,!t.collapsed]]),A(b(`div`,{class:w([`oc__report`,{"is-empty":!$.value}])},[b(`div`,Qa,[b(`p`,$a,f(x(J)(`@WORKBENCH:进度报告`)),1),b(`select`,{class:`oc__interval`,value:String(t.reportIntervalMs??0),title:x(J)(`@WORKBENCH:自动报告的间隔(关掉后仍可随时点「立即报告」)`),"aria-label":x(J)(`@WORKBENCH:自动报告间隔`),onChange:pt},[(H(!0),S(O,null,E(x(Ne),e=>(H(),S(`option`,{key:e,value:String(e)},f(x(J)(x(Le)(e),x(Q)(e))),9,to))),128))],40,eo),b(`button`,{type:`button`,class:`oc__report-run`,disabled:t.generatingReport,title:x(J)(`@WORKBENCH:让主 Agent 现在汇报一次正在执行的任务进度`),onClick:r[2]||=e=>l(`generate-report`)},[e(a,{class:w([`oc__report-run-icon`,{"is-spin":t.generatingReport}])},{default:L(()=>[e(x(te))]),_:1},8,[`class`]),b(`span`,null,f(t.generatingReport?x(J)(`@WORKBENCH:生成中…`):x(J)(`@WORKBENCH:立即报告`)),1)],8,no)]),b(`ul`,ro,[$.value?(H(),S(`li`,io,[b(`div`,ao,[b(`span`,{class:w([`rp__trigger`,{"is-auto":$.value.trigger===`auto`}])},f($.value.trigger===`auto`?x(J)(`@WORKBENCH:自动`):x(J)(`@WORKBENCH:手动`)),3),Ye.value?(H(),S(`span`,{key:0,class:`rp__stale`,title:x(J)(`@WORKBENCH:这份报告讲的任务已经跑完了,内容只反映生成那一刻的情况`)},f(x(J)(`@WORKBENCH:已结束`)),9,oo)):W(``,!0),b(`span`,so,f(x(J)(`@WORKBENCH:{n} 个任务进行中`,{n:$.value.tasks.length})),1),b(`span`,co,f(x(rt)($.value.at)),1),Je.value?(H(),S(`button`,{key:1,type:`button`,class:`rp__locate`,title:x(J)(`@WORKBENCH:在面板中定位这份报告讲的任务`),"aria-label":x(J)(`@WORKBENCH:在面板中定位这份报告讲的任务`),onClick:r[3]||=e=>l(`locate-task`,Je.value)},[e(a,null,{default:L(()=>[e(x(g))]),_:1})],8,lo)):W(``,!0)]),ut.value===null?W(``,!0):(H(),S(`div`,{key:0,class:`rp__progress`,title:x(J)(x(Re))},[b(`span`,{class:`rp__bar`,role:`progressbar`,"aria-valuenow":ut.value,"aria-valuemin":`0`,"aria-valuemax":`100`,"aria-label":x(J)(x(Ue))},[b(`i`,{class:`rp__bar-fill`,style:c({width:ut.value+`%`})},null,4)],8,fo),b(`span`,po,[b(`span`,mo,f(x(J)(x(Ue))),1),R(f(ut.value)+`% `,1)])],8,uo)),$.value.text?(H(),S(`div`,ho,[b(`p`,{ref_key:`textEl`,ref:tt,class:w([`rp__text`,{"is-clamped":at.value&&!it.value,"is-expanded":it.value}])},f($.value.text),3),at.value||it.value?(H(),S(`button`,{key:0,type:`button`,class:`rp__more`,onClick:st},f(it.value?x(J)(`@WORKBENCH:收起`):x(J)(`@WORKBENCH:展开全文`)),1)):W(``,!0)])):(H(),S(`p`,{key:2,class:`rp__notice`,title:$.value.errorDetail},f(ft($.value)),9,go))])):(H(),S(`li`,{key:1,class:`oc-empty`,title:Qe.value},[b(`span`,vo,f(Xe.value),1),(t.reports||[]).length>1?(H(),S(`button`,{key:0,type:`button`,class:`oc-empty__action`,onClick:xt},f(x(J)(`@WORKBENCH:回看历史报告`)),1)):W(``,!0)],8,_o))]),(t.reports||[]).length>1?(H(),S(`div`,{key:0,class:w([`oc__history`,{"is-collapsed":!_t.value}])},[b(`button`,{type:`button`,class:`oc__sect`,"aria-expanded":_t.value,title:_t.value?x(J)(`@WORKBENCH:收起`):x(J)(`@WORKBENCH:展开`),onClick:r[4]||=e=>bt(`history`)},[e(a,{class:`oc__sect-caret`},{default:L(()=>[(H(),i(ee(_t.value?x(re):x(ie))))]),_:1}),b(`span`,bo,f(x(J)(`@WORKBENCH:历史报告`)),1),b(`span`,xo,[b(`span`,So,f(x(J)(`@WORKBENCH:共 {n} 份`,{n:(t.reports||[]).length})),1)])],8,yo),A(b(`ul`,Co,[(H(!0),S(O,null,E(t.reports,e=>(H(),S(`li`,{key:e.id},[b(`button`,{type:`button`,class:w([`oc__history-item`,{"is-active":e.id===$.value?.id}]),onClick:t=>$e(e)},[b(`span`,To,f(x(rt)(e.at)),1),b(`span`,Eo,f(lt(e)),1),b(`span`,Do,f(dt(e)),1)],10,wo)]))),128))],512),[[de,_t.value]])],2)):W(``,!0)],2),[[de,!t.collapsed]]),A(b(`div`,{class:w([`oc__git`,{"is-collapsed":!yt.value}])},[b(`button`,{type:`button`,class:`oc__sect`,"aria-expanded":yt.value,title:yt.value?x(J)(`@WORKBENCH:收起`):x(J)(`@WORKBENCH:展开`),onClick:r[5]||=e=>bt(`git`)},[e(a,{class:`oc__sect-caret`},{default:L(()=>[(H(),i(ee(yt.value?x(re):x(ie))))]),_:1}),b(`span`,ko,f(x(J)(`@WORKBENCH:项目概览`)),1),b(`span`,Ao,[b(`span`,jo,f(t.selectedProject?t.selectedProject.name:x(J)(`@WORKBENCH:全部项目`)),1),!yt.value&&St.value?(H(),S(`span`,Mo,f(St.value),1)):W(``,!0)])],8,Oo),A(b(`dl`,No,[(H(!0),S(O,null,E(mt.value,e=>(H(),S(O,{key:e.label},[b(`dt`,Po,f(e.label),1),b(`dd`,{class:w([`oc__git-value`,{"is-warn":e.tone===`warn`,"is-danger":e.tone===`danger`}])},f(e.value),3)],64))),128)),b(`dt`,Fo,f(x(J)(`@WORKBENCH:今日完成`)),1),b(`dd`,Io,f(t.todayDone),1),b(`dt`,Lo,f(x(J)(`@WORKBENCH:最后活跃`)),1),b(`dd`,Ro,f(t.selectedProject&&x(nt)(t.selectedProject.stats.lastActiveAt)||`—`),1)],512),[[de,yt.value]])],2),[[de,!t.collapsed]]),A(b(`div`,{class:`oc__compose`,onPaste:fe,onDrop:N(pe,[`prevent`]),onDragover:r[13]||=N(e=>ce.value=!0,[`prevent`]),onDragleave:r[14]||=e=>ce.value=!1},[A(b(`textarea`,{ref_key:`inputRef`,ref:ke,class:w([`oc__input`,{"is-over":Te.value}]),"onUpdate:modelValue":r[6]||=e=>u.value=e,style:c(je.value),rows:`3`,placeholder:x(J)(`@WORKBENCH:给主 Agent 下一条指令,例如:把登录模块的错误处理重构一遍`),onKeydown:Oe,onPaste:fe,onMousedown:Fe},null,46,zo),[[me,u.value]]),v.value.length>0||se.value?(H(),i(vt,{key:0,attachments:v.value,"is-image":x(T),"human-size":x(D),"is-uploading":se.value,"is-paste-hover":ce.value,"on-pick":he,"on-remove":ge,"raw-base":Qo,onPaste:fe,onDrop:pe,onDragover:r[7]||=N(e=>ce.value=!0,[`prevent`]),onDragenter:r[8]||=N(e=>ce.value=!0,[`prevent`]),onDragleave:r[9]||=e=>ce.value=!1},null,8,[`attachments`,`is-image`,`human-size`,`is-uploading`,`is-paste-hover`])):W(``,!0),Ce.value>0?(H(),S(`p`,{key:1,class:w([`oc__count`,{"is-warn":Y.value,"is-over":Te.value}])},[Te.value?(H(),S(`span`,Bo,f(x(J)(`@WORKBENCH:超出上限 {max} 字,请精简后再派发(超出的部分不会被发出)`,{max:we.value})),1)):(H(),S(`span`,Vo,f(Ce.value)+` / `+f(we.value),1))],2)):W(``,!0),b(`div`,Ho,[b(`button`,{type:`button`,class:`oc__attach`,disabled:se.value,title:x(J)(`@WORKBENCH:添加附件(也可直接粘贴或拖入文件)`),"aria-label":x(J)(`@WORKBENCH:添加附件`),onClick:he},[e(a,null,{default:L(()=>[...r[15]||=[b(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[b(`path`,{d:`M15 7l-6.5 6.5a1.5 1.5 0 0 0 3 3l6.5-6.5a3 3 0 0 0-6-6l-6.5 6.5a4.5 4.5 0 0 0 9 9l6.5-6.5`})],-1)]]),_:1})],8,Uo),b(`button`,{type:`button`,class:w([`oc__attach`,{"is-on":K.value}]),title:x(J)(`@WORKBENCH:设置派发时自动附加的预设提示词(全局 / 各项目)`),"aria-label":x(J)(`@WORKBENCH:预设提示词设置`),onClick:r[10]||=e=>l(`open-prompt-settings`)},[e(a,null,{default:L(()=>[...r[16]||=[b(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[b(`path`,{d:`M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 0 0-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 0 0-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 0 0-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 0 0-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 0 0 1.066-2.573c-.94-1.543.826-3.31 2.37-2.37c1 .608 2.296.07 2.572-1.065`}),b(`path`,{d:`M9 12a3 3 0 1 0 6 0a3 3 0 0 0-6 0`})],-1)]]),_:1})],10,Wo),b(`label`,{class:`oc__autorn`,title:x(J)(`@WORKBENCH:取消勾选则只建任务草稿,不自动执行`)},[A(b(`input`,{type:`checkbox`,"onUpdate:modelValue":r[11]||=e=>m.value=e},null,512),[[z,m.value]]),b(`span`,null,f(x(J)(`@WORKBENCH:立即执行`)),1)],8,Go),K.value?(H(),S(`label`,{key:0,class:`oc__autorn`,title:x(J)(`@WORKBENCH:取消勾选则本次派发的任务不带预设提示词(设置本身不受影响)`)},[A(b(`input`,{type:`checkbox`,"onUpdate:modelValue":r[12]||=e=>h.value=e},null,512),[[z,h.value]]),b(`span`,null,f(x(J)(`@WORKBENCH:附带预设提示词({state})`,{state:q.value})),1)],8,Ko)):W(``,!0),I.value?(H(),S(`label`,{key:1,class:`oc__autorn`,title:x(J)(`@WORKBENCH:先用 AI 把图片描述成文字再派发(codearts 读不了图时必开)`)},[b(`input`,{type:`checkbox`,checked:F.value,onChange:B},null,40,Jo),b(`span`,null,f(x(J)(`@WORKBENCH:图片转文字`)),1)],8,qo)):W(``,!0),b(`span`,Yo,f(x(J)(`@WORKBENCH:任务执行器`)),1),e(et,{title:x(J)(`@WORKBENCH:本次派发使用的执行器(与执行按钮的临时切换共用)`)},null,8,[`title`]),b(`button`,{type:`button`,class:`oc__send`,disabled:!Ee.value,onClick:De},[e(a,{class:`oc__send-icon`},{default:L(()=>[e(x(p))]),_:1}),b(`span`,null,f(t.dispatching?x(J)(`@WORKBENCH:派发中…`):x(J)(`@WORKBENCH:派发`)),1)],8,Xo)]),b(`p`,Zo,[t.selectedProject?(H(),S(O,{key:0},[R(f(x(J)(`@WORKBENCH:指令会在「{name}」下新建一个任务;Enter 派发,Shift+Enter 换行`,{name:t.selectedProject.name})),1)],64)):(H(),S(O,{key:1},[R(f(x(J)(`@WORKBENCH:指令落到哪个项目由主 Agent 判断;Enter 派发,Shift+Enter 换行`)),1)],64))])],544),[[de,!t.collapsed]])],2)}}}),[[`__scopeId`,`data-v-bb90a3e8`]]);u(),B(),t(),pe();var rs={class:`pd`},is={class:`pd__intro`},as={class:`pd__field`},os={class:`pd__head`},ss={class:`pd__label`,for:`pd-global`},cs={class:`pd__count`},ls=[`placeholder`],us={class:`pd__field`},ds={class:`pd__head`},fs={class:`pd__label`,for:`pd-project`},ps={key:0,class:`pd__count`},ms=[`disabled`,`placeholder`],hs={class:`pd__hint`},gs={class:`pd__foot`},_s=[`disabled`],vs=4e3,ys=Y(m({__name:`WorkbenchDefaultPromptDialog`,props:{modelValue:{type:Boolean},defaultPrompt:{},projectPath:{},projectName:{},projectPrompt:{},saving:{type:Boolean}},emits:[`update:modelValue`,`save`],setup(e,{emit:t}){let n=e,r=t,a=P(``),o=P(``);V(()=>n.modelValue,e=>{e&&(a.value=n.defaultPrompt||``,o.value=n.projectPrompt||``)});let s=G(()=>!!n.projectPath),c=G(()=>a.value.trim()!==(n.defaultPrompt||``).trim()||s.value&&o.value.trim()!==(n.projectPrompt||``).trim());function l(){n.saving||r(`save`,{globalPrompt:a.value,projectPrompt:o.value})}function u(){r(`update:modelValue`,!1)}return(t,n)=>(H(),i(je,{"model-value":e.modelValue,title:x(J)(`@WORKBENCH:预设提示词`),width:`min(640px, 94vw)`,"close-on-click-modal":!1,"onUpdate:modelValue":n[2]||=e=>r(`update:modelValue`,e)},{footer:L(()=>[b(`div`,gs,[b(`button`,{type:`button`,class:`pd__btn`,onClick:u},f(x(J)(`@WORKBENCH:取消`)),1),n[3]||=b(`span`,{class:`pd__foot-spacer`},null,-1),b(`button`,{type:`button`,class:`pd__btn pd__btn--primary`,disabled:e.saving||!c.value,onClick:l},f(e.saving?x(J)(`@WORKBENCH:保存中…`):x(J)(`@WORKBENCH:保存`)),9,_s)])]),default:L(()=>[b(`div`,rs,[b(`p`,is,f(x(J)(`@WORKBENCH:派发指令时自动附加在指令之前,让每个任务都带上这些约束。只影响之后派发的任务,不会改动已经建好的任务。`)),1),b(`div`,as,[b(`div`,os,[b(`label`,ss,f(x(J)(`@WORKBENCH:全局提示词`)),1),b(`span`,cs,f(a.value.length)+` / `+f(vs),1)]),A(b(`textarea`,{id:`pd-global`,"onUpdate:modelValue":n[0]||=e=>a.value=e,class:`pd__area`,rows:`5`,maxlength:vs,placeholder:x(J)(`@WORKBENCH:对所有项目生效。例如:回答用中文;改完代码必须跑一遍测试;不要动 dist 目录`)},null,8,ls),[[me,a.value]])]),b(`div`,us,[b(`div`,ds,[b(`label`,fs,f(s.value?x(J)(`@WORKBENCH:「{name}」的项目提示词`,{name:e.projectName}):x(J)(`@WORKBENCH:项目提示词`)),1),s.value?(H(),S(`span`,ps,f(o.value.length)+` / `+f(vs),1)):W(``,!0)]),A(b(`textarea`,{id:`pd-project`,"onUpdate:modelValue":n[1]||=e=>o.value=e,class:`pd__area`,rows:`5`,maxlength:vs,disabled:!s.value,placeholder:s.value?x(J)(`@WORKBENCH:只在这个项目派发时附加。例如:包管理器用 pnpm;改动集中在 src/ui 下`):x(J)(`@WORKBENCH:先在左侧选中一个具体项目,才能设置它的提示词`)},null,8,ms),[[me,o.value]]),b(`p`,hs,f(s.value?x(J)(`@WORKBENCH:项目提示词追加在全局提示词之后(不覆盖全局),派发到「{name}」时一起带上`,{name:e.projectName}):x(J)(`@WORKBENCH:选中的是「全部项目」,落点由主 Agent 判断 —— 想给某个项目单设提示词,先选中它`)),1)])])]),_:1},8,[`model-value`,`title`]))}}),[[`__scopeId`,`data-v-5d14f0f1`]]);u(),B(),t(),pe();var bs={class:`board__top`},xs=[`title`,`aria-label`,`aria-expanded`],Ss={class:`board__brand`},Cs={class:`board__brand-text`},ws={class:`board__title`},Ts={class:`board__stats`},Es={class:`board__stat`},Ds={class:`board__stat-label`},Os=[`title`],ks={class:`board__stat-label`},As={class:`board__stat`},js={class:`board__stat-label`},Ms={class:`board__stat`},Ns={class:`board__stat-label`},Ps=[`title`],Fs={class:`board__main`},Is={class:`board__main-head`},Ls={class:`board__project-icon-slot`,"aria-hidden":`true`},Rs=[`src`],zs={key:0,viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},Bs={key:1,viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},Vs={class:`board__main-title`},Hs={class:`board__project-name`},Us=[`title`],Ws={key:1,class:`board__project-path`},Gs={class:`board__head-actions`},Ks={class:`board__view-switch`,role:`tablist`},qs=[`aria-selected`,`aria-label`,`title`],Js=[`aria-selected`,`aria-label`,`title`],Ys=[`placeholder`,`aria-label`],Xs=[`aria-label`,`title`],Zs=[`title`],Qs=`wb.boardProject.v1`,$s=`wb.boardView.v1`,ec=5e3,tc=3e4,nc=`wb.boardLayout.v1`,rc=180,ic=420,ac=260,oc=900,sc=.26,cc=.46,lc=Y(m({__name:`WorkbenchBoard`,props:{openedTaskId:{}},emits:[`open-task`,`create-task`,`board-tasks`,`locate-task`],setup(t,{emit:r}){let a=t,o=r,{projects:l,boardTasks:u,currentProjectPath:p,loading:m,loadProjects:h,removeProject:g}=at();V(u,e=>o(`board-tasks`,e),{immediate:!0});let{activity:_,running:ee,dispatching:v,maxInstructionChars:te,defaultPrompt:y,projectPrompts:ne,reports:T,generatingReport:re,reportIntervalMs:E,loadOrchestrator:ie,dispatch:D,saveDefaultPrompt:O,saveProjectPrompt:k,loadReports:ae,generateReport:oe,setReportInterval:j}=$e(),{active:se}=Ze(),ce=(()=>{try{return localStorage.getItem(Qs)}catch{return null}})(),le=P(ce||``);V(le,e=>{try{localStorage.setItem(Qs,e)}catch{}});let M=P((()=>{try{return localStorage.getItem($s)===`list`?`list`:`kanban`}catch{return`kanban`}})());V(M,e=>{try{localStorage.setItem($s,e)}catch{}});let R=P(``),z=P(!1),B=P(null);function de(){z.value=!z.value,z.value&&n(()=>B.value?.focus())}function pe(){z.value=!1}function ge(){R.value.trim()||(z.value=!1)}let U=G(()=>le.value&&l.value.find(e=>e.key===le.value)||null),{isIconBroken:_e,markIconFailed:ye}=Ge();V(l,e=>{le.value&&(e.some(e=>e.key===le.value)||(le.value=``))});let be=!1;function xe(){if(be||(be=!0,ce!==null))return;let e=p.value?Z(p.value):``;e&&l.value.some(t=>t.key===e)&&(le.value=e)}let Se=G(()=>{let e=new Map(l.value.map(e=>[e.key,e.name])),t={};for(let n of u.value)n.projectPath&&(t[n.projectPath]=e.get(Z(n.projectPath))||``);return t}),K=G(()=>{if(!le.value)return u.value;let e=le.value;return u.value.filter(t=>Z(t.projectPath)===e)}),q=G(()=>Fe(T.value,u.value)),Ce=G(()=>{let e=new Date;e.setHours(0,0,0,0);let t=e.getTime();return{projects:l.value.length,tasks:u.value.length,running:ee.value.length,todayDone:_.value.filter(e=>e.kind===`done`&&e.at&&new Date(e.at).getTime()>=t).length}});function we(e){o(`open-task`,{taskId:e.id,projectPath:e.projectPath})}let Te=null,Y=!1,Ee=null;async function De(e=!0){if(!Y){Y=!0;try{await Promise.all([h(e),ie(e)])}finally{Y=!1}}}function Oe(){document.hidden||(De(!0),ae(!0))}s(async()=>{window.addEventListener(`resize`,Me),await De(!1),ae(!0),xe(),Te=setInterval(()=>{document.hidden||De(!0)},ec),Ee=setInterval(()=>{document.hidden||ae(!0)},tc),document.addEventListener(`visibilitychange`,Oe)}),C(()=>{window.removeEventListener(`resize`,Me),Te&&=(clearInterval(Te),null),Ee&&=(clearInterval(Ee),null),document.removeEventListener(`visibilitychange`,Oe)});let X=fe({left:null,right:null,leftCollapsed:!1,rightCollapsed:!1});function ke(){try{let e=localStorage.getItem(nc);if(!e)return;let t=JSON.parse(e);typeof t.left==`number`&&Number.isFinite(t.left)&&(X.left=t.left),typeof t.right==`number`&&Number.isFinite(t.right)&&(X.right=t.right),X.leftCollapsed=t.leftCollapsed===!0,X.rightCollapsed=t.rightCollapsed===!0}catch{}}ke();function Ae(){try{localStorage.setItem(nc,JSON.stringify(X))}catch{}}let je=P(typeof window>`u`?1920:window.innerWidth);function Me(){je.value=window.innerWidth}let Ne=G(()=>je.value<=1024),Pe=G(()=>je.value<=860);function Ie(e,t){let n=e===`left`?rc:ac,r=Math.min(e===`left`?ic:oc,je.value*(e===`left`?sc:cc));return Math.round(Math.min(Math.max(t,n),Math.max(n,r)))}let Le=G(()=>{let e={};return X.left!=null&&(e[`--wb-left-w`]=Ie(`left`,X.left)+`px`),X.right!=null&&!Pe.value&&(e[`--wb-right-w`]=Ie(`right`,X.right)+`px`),e}),Q=P(null),Re=P(null);function ze(e){return Q.value?.querySelector(e===`left`?`.board__left`:`.oc`)}function Be(e){window.removeEventListener(`mousemove`,e),document.body.style.userSelect=``,document.body.style.cursor=``,Re.value=null,Ae()}function Ve(e,t){if(e===`left`?Ne.value:Pe.value)return;let n=ze(e);if(!n)return;t.preventDefault();let r=t.clientX,i=n.getBoundingClientRect().width;Re.value=e,document.body.style.userSelect=`none`,document.body.style.cursor=`col-resize`;let a=t=>{let n=(t.clientX-r)*(e===`left`?1:-1);X[e]=Ie(e,i+n)};window.addEventListener(`mousemove`,a),window.addEventListener(`mouseup`,()=>Be(a),{once:!0})}function He(e){X[e]=null,Ae()}let Ue=P(!1),We=G(()=>Ne.value?!Ue.value:X.leftCollapsed);function Ke(){if(Ne.value){Ue.value=!Ue.value;return}X.leftCollapsed=!X.leftCollapsed,Ae()}function qe(){Ne.value&&(Ue.value=!1)}let Je=G(()=>X.rightCollapsed&&!Pe.value);function $(){X.rightCollapsed=!X.rightCollapsed,Ae()}function Ye(e){le.value=e?e.key:``,Ue.value=!1}function Xe(){o(`create-task`,{projectPath:ut.value||``})}async function Qe(e){if(e.runningJobs>0)return;let t=`/api/workbench/tasks/${encodeURIComponent(e.id)}/run`,n=await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({executor:se.value})}).then(e=>e.json()).catch(()=>null);if(!n?.success){I.error(n?.error||J(`@WORKBENCH:执行失败`));return}I.success(J(`@WORKBENCH:已开始执行`)),await De(!0)}let et=new Set;async function tt(e){if(et.has(e.id))return;let t=e.live?.jobId;if(!t){I.error(J(`@WORKBENCH:停止失败`));return}try{await he.confirm(J(`@WORKBENCH:确认停止执行?已输出的内容会保留。`),J(`@WORKBENCH:停止执行`),{confirmButtonText:J(`@WORKBENCH:停止`),cancelButtonText:J(`@WORKBENCH:取消`),type:`warning`})}catch{return}et.add(e.id);try{let e=await fetch(`/api/workbench/jobs/${encodeURIComponent(t)}/cancel`,{method:`POST`}).then(e=>e.json()).catch(()=>null);if(!e?.success){I.error(e?.error||J(`@WORKBENCH:停止失败`));return}I.success(J(`@WORKBENCH:已发送停止信号`)),await De(!0)}finally{et.delete(e.id)}}let nt=new Set;async function rt(e){if(!nt.has(e.id)){if(e.runningJobs>0)try{await he.confirm(J(`@WORKBENCH:这条任务还在执行,标记完成会同时把它停掉。已输出的内容会保留。`),J(`@WORKBENCH:标记为已完成`),{confirmButtonText:J(`@WORKBENCH:标记完成`),cancelButtonText:J(`@WORKBENCH:取消`),type:`warning`})}catch{return}nt.add(e.id);try{let t=await fetch(`/api/workbench/tasks/${encodeURIComponent(e.id)}/done`,{method:`POST`}).then(e=>e.json()).catch(()=>null);if(!t?.success){I.error(t?.error||J(`@WORKBENCH:标记失败`));return}I.success(J(`@WORKBENCH:已标记为已完成`)),await De(!0)}finally{nt.delete(e.id)}}}async function it(e){if(!nt.has(e.id)){nt.add(e.id);try{let t=await fetch(`/api/workbench/tasks/${encodeURIComponent(e.id)}/done`,{method:`DELETE`}).then(e=>e.json()).catch(()=>null);if(!t?.success){I.error(t?.error||J(`@WORKBENCH:撤销失败`));return}I.success(J(`@WORKBENCH:已撤销完成标记`)),await De(!0)}finally{nt.delete(e.id)}}}async function ot(e){let{ok:t,keptTasks:n}=await g(e.path);t&&(I.success(n>0?J(`@WORKBENCH:已移除项目,{n} 条任务仍保留在「全部项目」下`,{n}):J(`@WORKBENCH:已移除项目`)),await De(!0))}async function st(e){let t=(e.title||``).trim()||J(`@WORKBENCH:未命名任务`);try{await he.confirm(J(`@WORKBENCH:删除任务「{title}」?`,{title:t}),J(`@WORKBENCH:确认`),{type:`warning`})}catch{return}let n=await fetch(`/api/workbench/tasks/${encodeURIComponent(e.id)}`,{method:`DELETE`}).then(e=>e.json()).catch(()=>null);if(n&&n.success===!1){I.error(n.error||J(`@WORKBENCH:删除失败`));return}await De(!0)}async function ct(e,t){let n=await fetch(`/api/workbench/tasks/${encodeURIComponent(e.id)}/move`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({projectPath:t})}).then(e=>e.json()).catch(()=>null);if(!n?.success){I.error(n?.error||J(`@WORKBENCH:移动失败`));return}let r=l.value.find(e=>Z(e.path)===Z(t))?.name||t;I.success(J(`@WORKBENCH:已移动到「{name}」`,{name:r})),await De(!0)}let lt=P(null),ut=G(()=>U.value?.path||p.value);async function dt(e){let t=await D({text:e.text,projectPath:e.projectPath,autoRun:e.autoRun,attachments:e.attachments,useDefaultPrompt:e.useDefaultPrompt,executor:e.executor,imageText:e.imageText});t&&(lt.value?.clearAttachments(),lt.value?.clearDraft(),I.success(t.ran?J(`@WORKBENCH:已派发并开始执行`):J(`@WORKBENCH:已派发(只建任务未执行)`)),await De(!0))}let ft=P(!1),pt=P(!1),mt=G(()=>{let e=U.value?.key;return e&&ne.value?.[e]?.prompt||``});async function ht(e){if(pt.value)return;let t=e.globalPrompt.trim(),n=e.projectPrompt.trim(),r=U.value;pt.value=!0;try{let e=!0;t!==(y.value||``).trim()&&(e=await O(t)),e&&r&&n!==mt.value.trim()&&(e=await k(r.path,n)),e&&(ft.value=!1)}finally{pt.value=!1}}return(t,n)=>{let r=d;return H(),S(`div`,{class:`board`,style:c(Le.value)},[b(`header`,bs,[b(`button`,{type:`button`,class:w([`board__icon-btn board__fold-btn`,{"is-on":!We.value}]),title:We.value?x(J)(`@WORKBENCH:展开项目列表`):x(J)(`@WORKBENCH:收起项目列表`),"aria-label":We.value?x(J)(`@WORKBENCH:展开项目列表`):x(J)(`@WORKBENCH:收起项目列表`),"aria-expanded":!We.value,onClick:Ke},[We.value?(H(),i(r,{key:1},{default:L(()=>[e(x(ue))]),_:1})):(H(),i(r,{key:0},{default:L(()=>[e(x(ve))]),_:1}))],10,xs),b(`div`,Ss,[b(`div`,Cs,[b(`h1`,ws,f(x(J)(`@WORKBENCH:多项目编排台`)),1)])]),b(`div`,Ts,[b(`span`,Es,[b(`span`,Ds,f(x(J)(`@WORKBENCH:项目`)),1),b(`strong`,{class:w([`board__stat-value`,{"is-zero":Ce.value.projects===0}])},f(Ce.value.projects),3)]),b(`span`,{class:`board__stat`,title:x(J)(`@WORKBENCH:看板上全部任务(含已从项目列表移除的项目)`)},[b(`span`,ks,f(x(J)(`@WORKBENCH:全部任务`)),1),b(`strong`,{class:w([`board__stat-value`,{"is-zero":Ce.value.tasks===0}])},f(Ce.value.tasks),3)],8,Os),b(`span`,As,[b(`span`,js,f(x(J)(`@WORKBENCH:活跃执行`)),1),b(`strong`,{class:w([`board__stat-value`,{"is-live":Ce.value.running>0,"is-zero":Ce.value.running===0}])},f(Ce.value.running),3)]),b(`span`,Ms,[b(`span`,Ns,f(x(J)(`@WORKBENCH:今日完成`)),1),b(`strong`,{class:w([`board__stat-value`,{"is-zero":Ce.value.todayDone===0}])},f(Ce.value.todayDone),3)])])]),b(`div`,{ref_key:`colsRef`,ref:Q,class:w([`board__cols`,{"is-resizing":Re.value!==null}])},[b(`div`,{class:w([`board__scrim`,{"is-on":Ue.value}]),"aria-hidden":`true`,onClick:n[0]||=e=>Ue.value=!1},null,2),b(`aside`,{class:w([`board__left`,{"is-collapsed":We.value}]),onKeydown:F(qe,[`esc`])},[e(bi,{projects:x(l),"selected-key":le.value,loading:x(m),onSelect:Ye,onRemove:ot},null,8,[`projects`,`selected-key`,`loading`])],34),We.value?W(``,!0):(H(),S(`div`,{key:0,class:`board__splitter board__splitter--left`,role:`separator`,"aria-orientation":`vertical`,title:x(J)(`@WORKBENCH:拖动调整项目列表宽度,双击恢复默认`),onMousedown:n[1]||=e=>Ve(`left`,e),onDblclick:n[2]||=e=>He(`left`)},null,40,Ps)),b(`main`,Fs,[b(`div`,Is,[b(`span`,Ls,[U.value&&U.value.iconUrl&&!x(_e)(U.value.iconUrl)?(H(),S(`img`,{key:0,class:`board__project-icon-img`,src:U.value.iconUrl,alt:``,onError:n[3]||=e=>x(ye)(U.value.iconUrl)},null,40,Rs)):(H(),i(r,{key:1,class:`board__project-icon-glyph`},{default:L(()=>[U.value?(H(),S(`svg`,zs,[...n[15]||=[b(`path`,{d:`M5 4h4l3 3h7a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-11a2 2 0 0 1 2 -2`},null,-1)]])):(H(),S(`svg`,Bs,[...n[16]||=[b(`path`,{d:`M4 5a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1l0 -4`},null,-1),b(`path`,{d:`M14 5a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1l0 -4`},null,-1),b(`path`,{d:`M4 15a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1l0 -4`},null,-1),b(`path`,{d:`M14 15a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1l0 -4`},null,-1)]]))]),_:1}))]),b(`div`,Vs,[b(`h2`,Hs,f(U.value?U.value.name:x(J)(`@WORKBENCH:全部项目`)),1),U.value?(H(),S(`span`,{key:0,class:`board__project-path`,title:U.value.path},f(U.value.path),9,Us)):(H(),S(`span`,Ws,f(x(J)(`@WORKBENCH:共 {n} 个项目的任务`,{n:x(l).length})),1))]),b(`div`,Gs,[b(`div`,Ks,[b(`button`,{type:`button`,role:`tab`,class:w([`board__view-btn`,{"is-active":M.value===`kanban`}]),"aria-selected":M.value===`kanban`,"aria-label":x(J)(`@WORKBENCH:看板视图`),title:x(J)(`@WORKBENCH:看板视图`),onClick:n[4]||=e=>M.value=`kanban`},[e(r,null,{default:L(()=>[...n[17]||=[b(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[b(`path`,{d:`M4 4l6 0`}),b(`path`,{d:`M14 4l6 0`}),b(`path`,{d:`M4 10a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2l0 -8`}),b(`path`,{d:`M14 10a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v2a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2l0 -2`})],-1)]]),_:1})],10,qs),b(`button`,{type:`button`,role:`tab`,class:w([`board__view-btn`,{"is-active":M.value===`list`}]),"aria-selected":M.value===`list`,"aria-label":x(J)(`@WORKBENCH:列表视图`),title:x(J)(`@WORKBENCH:列表视图`),onClick:n[5]||=e=>M.value=`list`},[e(r,null,{default:L(()=>[...n[18]||=[b(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[b(`path`,{d:`M9 6l11 0`}),b(`path`,{d:`M9 12l11 0`}),b(`path`,{d:`M9 18l11 0`}),b(`path`,{d:`M5 6l0 .01`}),b(`path`,{d:`M5 12l0 .01`}),b(`path`,{d:`M5 18l0 .01`})],-1)]]),_:1})],10,Js)]),b(`div`,{class:w([`board__head-search`,{"is-open":z.value}])},[A(b(`input`,{ref_key:`searchInputRef`,ref:B,class:`board__search-input`,type:`search`,"onUpdate:modelValue":n[6]||=e=>R.value=e,placeholder:x(J)(`@WORKBENCH:搜索任务标题或描述`),"aria-label":x(J)(`@WORKBENCH:搜索任务标题或描述`),onBlur:ge,onKeydown:F(pe,[`esc`])},null,40,Ys),[[me,R.value]]),b(`button`,{type:`button`,class:`board__search-btn`,"aria-label":x(J)(`@WORKBENCH:搜索任务标题或描述`),title:x(J)(`@WORKBENCH:搜索任务标题或描述`),onMousedown:n[7]||=N(()=>{},[`prevent`]),onClick:de},[e(r,null,{default:L(()=>[...n[19]||=[b(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[b(`path`,{d:`M3 10a7 7 0 1 0 14 0a7 7 0 1 0 -14 0`}),b(`path`,{d:`M21 21l-6 -6`})],-1)]]),_:1})],40,Xs)],2)])]),e(Ka,{tasks:K.value,"project-labels":Se.value,projects:x(l),"task-percents":q.value,"show-project-label":!U.value,"opened-task-id":a.openedTaskId,view:M.value,"onUpdate:view":n[8]||=e=>M.value=e,search:R.value,"onUpdate:search":n[9]||=e=>R.value=e,onOpenTask:we,onRunTask:Qe,onStopTask:tt,onCompleteTask:rt,onReopenTask:it,onDeleteTask:st,onMoveTask:ct,onCreateTask:Xe},null,8,[`tasks`,`project-labels`,`projects`,`task-percents`,`show-project-label`,`opened-task-id`,`view`,`search`])]),!Je.value&&!Pe.value?(H(),S(`div`,{key:1,class:`board__splitter board__splitter--right`,role:`separator`,"aria-orientation":`vertical`,title:x(J)(`@WORKBENCH:拖动调整主 Agent 控制台宽度,双击恢复默认`),onMousedown:n[10]||=e=>Ve(`right`,e),onDblclick:n[11]||=e=>He(`right`)},null,40,Zs)):W(``,!0),e(ns,{ref_key:`consoleRef`,ref:lt,running:x(ee),"selected-project":U.value,dispatching:x(v),"today-done":Ce.value.todayDone,collapsed:Je.value,"default-prompt":x(y),"project-prompts":x(ne),reports:x(T),"report-interval-ms":x(E),"generating-report":x(re),"max-instruction-chars":x(te),onToggleCollapse:$,onDispatch:dt,onGenerateReport:x(oe),onSetReportInterval:x(j),onOpenPromptSettings:n[12]||=e=>ft.value=!0,onLocateTask:n[13]||=e=>o(`locate-task`,e)},null,8,[`running`,`selected-project`,`dispatching`,`today-done`,`collapsed`,`default-prompt`,`project-prompts`,`reports`,`report-interval-ms`,`generating-report`,`max-instruction-chars`,`onGenerateReport`,`onSetReportInterval`])],2),e(ys,{modelValue:ft.value,"onUpdate:modelValue":n[14]||=e=>ft.value=e,"default-prompt":x(y),"project-path":U.value?.path||``,"project-name":U.value?.name||``,"project-prompt":mt.value,saving:pt.value,onSave:ht},null,8,[`modelValue`,`default-prompt`,`project-path`,`project-name`,`project-prompt`,`saving`])],4)}}}),[[`__scopeId`,`data-v-07e1360a`]]);u(),B(),t(),pe();var uc={class:`workbench`},dc={class:`wb-editor`},fc={class:`wb-editor-bar`},pc=[`title`],mc=[`title`],hc=[`data-status`,`title`],gc={class:`wb-editor-bar__status-pill`},_c={class:`wb-editor-bar__status-label`},vc=[`title`],yc={key:2,class:`wb-editor-bar__time`},bc=[`title`],xc={key:1,class:`wb-editor-bar__sep`,"aria-hidden":`true`},Sc={key:2,class:`wb-editor-bar__spent`},Cc={class:`wb-editor-bar__hint`},wc={class:`workbench__editor-row`},Tc=[`aria-label`,`aria-valuenow`,`title`],Ec={class:`wb-split`},Dc={key:0,class:`wb-placeholder`},Oc={class:`wb-split__header`},kc={class:`wb-split__title-wrap`},Ac=[`placeholder`,`aria-label`],jc=[`title`,`aria-label`],Mc=[`title`],Nc={key:0,class:`wb-meta-save__dot`},Pc={key:1,class:`wb-meta-save__check`},Fc={key:2,class:`wb-meta-save__bang`},Ic={key:3,class:`wb-meta-save__dot`},Lc=[`data-executor`,`title`],Rc={class:`wb-run-executor__text`},zc=[`title`],Bc={class:`sr-only`},Vc={class:`sr-only`},Hc={class:`wb-executor-item`},Uc={class:`wb-executor-item__name`},Wc=[`title`],Gc={key:2,class:`wb-executor-item__missing`},Kc={key:3,class:`wb-no-claude-hint`,role:`status`},qc={class:`wb-no-claude-hint__text`},Jc={class:`wb-no-claude-hint__link`,href:`https://docs.claude.com/en/docs/claude-code/setup`,target:`_blank`,rel:`noopener noreferrer`},Yc={class:`wb-copy-exec`},Xc=[`title`,`aria-label`],Zc={class:`sr-only`},Qc=[`title`,`aria-label`],$c=[`title`,`aria-label`],el={class:`sr-only`},tl=[`title`,`aria-label`],nl={class:`sr-only`},rl=[`open`],il={class:`wb-task-desc__summary`},al={class:`wb-task-desc__label`},ol=[`title`,`aria-label`],sl={key:0,class:`wb-task-desc__tag`},cl={key:0},ll={key:1,class:`wb-task-desc__tag-attachment`},ul=[`placeholder`,`aria-label`],dl={class:`wb-execution-body`},fl={class:`wb-exec-detail`},pl={class:`wb-form-item__label wb-task-prompt__summary`},ml={key:0,class:`wb-task-prompt__tag`},hl={key:0,class:`wb-task-prompt__parts`},gl={class:`wb-task-prompt__label`},_l={class:`wb-task-prompt__text`},vl={key:1,class:`wb-task-prompt__empty`},yl={class:`wb-simple-chat`},bl={class:`wb-simple-chat__footer`},xl={key:0,class:`wb-chat-queue`},Sl={class:`wb-chat-queue__head`},Cl={class:`wb-chat-queue__label`},wl={class:`wb-chat-queue__count`},Tl={class:`wb-chat-queue__hint`},El={class:`wb-chat-queue__index`},Dl=[`title`],Ol={key:0,class:`wb-chat-queue__atts`},kl=[`title`,`aria-label`,`onClick`],Al=`wb.lastTaskByProject.v1`,jl=`__no_project__`,Ml=`wb.sidebarWidth.v1`,Nl=200,Pl=480,Fl=268,Il=3e3,Ll=52,Rl=320,zl=500,Bl=Y(m({__name:`WorkbenchView`,setup(t){let a=ke(),o=Ae(),l=P((()=>{try{let e=parseInt(localStorage.getItem(Ml)||``,10);return Number.isFinite(e)?Math.min(Pl,Math.max(Nl,e)):Fl}catch{return Fl}})());function u(e){e.preventDefault();let t=e.clientX,n=l.value;document.body.style.userSelect=`none`,document.body.style.cursor=`col-resize`;let r=e=>{l.value=Math.min(Pl,Math.max(Nl,n+e.clientX-t))};window.addEventListener(`mousemove`,r),window.addEventListener(`mouseup`,()=>{window.removeEventListener(`mousemove`,r),document.body.style.userSelect=``,document.body.style.cursor=``;try{localStorage.setItem(Ml,String(l.value))}catch{}},{once:!0})}function p(e){l.value=Math.min(Pl,Math.max(Nl,l.value+e));try{localStorage.setItem(Ml,String(l.value))}catch{}}function m(){try{let e=localStorage.getItem(Al),t=e?JSON.parse(e):{};return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch{return{}}}function h(e){try{localStorage.setItem(Al,JSON.stringify(e))}catch{}}function g(e,t){let n=m();n[e||jl]=t,h(n)}let _=P(!1);function te(e){Nt(e.projectPath)}async function ne(){let e=q.value&&He(q.value)?q.value:null;if(Ve(),e){_.value=!1,await Ue(e);return}q.value&&Be.value&&await Ke(),_.value=!1}function D(){q.value&&He(q.value)&&window.setTimeout(()=>At.value?.focus(),80)}let k=P(null);async function ae(e){await _e(),K.value=e.taskId,k.value=e.taskId,Le(),q.value&&g(Z(z.value.path),e.taskId),_.value=!0}function oe(e){if(!we.value.some(t=>t.id===e)){I.info(J(`@WORKBENCH:该任务不在当前视图(可能在别的项目下)`));return}k.value=e}let{tasks:j,jobs:ue,currentProject:z,connectSSE:B,disconnectSSE:de,loadCurrentProject:fe,loadJobs:pe,clearJobsByTask:U,loadTasks:_e}=Jn();function ve(){let e=Z(z.value.path),t=j.value.filter(t=>!t.projectPath||Z(t.projectPath)===e),n=m(),r=e&&n[e]||!e&&n[jl]||``,i=r?j.value.find(e=>e.id===r):null,a=t[0]||j.value[0]||null,o=i&&i.projectPath&&Z(i.projectPath)!==e?null:i?i.id:a?a.id:null;K.value=o,Le()}async function be(){let e=K.value;if(await _e(),e&&j.value.some(t=>t.id===e)){Le();return}ve()}async function xe(){await _e(),ve()}let Se=P(!1),K=P(null),q=G(()=>j.value.find(e=>e.id===K.value)||null),we=P([]),Y=G(()=>we.value.find(e=>e.id===K.value)||null),Ee=G(()=>Y.value?nt(Dn(Y.value)):``),Me=G(()=>Y.value?jn(Y.value):``),Ne=G(()=>Y.value?Mn(Y.value):``),Pe=G(()=>{let e=q.value?.projectPath||``;return!e||Z(e)===Z(z.value.path)?null:{name:e.replace(/[\\/]+$/,``).split(/[\\/]/).pop()||e,path:e}}),Fe=P({title:``,desc:``});function Le(){q.value?Fe.value={title:q.value.title,desc:q.value.desc}:Fe.value={title:``,desc:``}}let Q=P(`idle`),Re=P(0),ze=null,Be=G(()=>{if(!q.value)return!1;let e=q.value;return Fe.value.title!==e.title||Fe.value.desc!==e.desc});function Ve(){ze!==null&&(clearTimeout(ze),ze=null)}function He(e){return!(!e||(e.title||``).trim()||(e.desc||``).trim()||(e.simpleOverride||``).trim()||Array.isArray(e.attachments)&&e.attachments.length>0)}async function Ue(e){try{await fetch(`/api/workbench/tasks/${e.id}`,{method:`DELETE`})}catch{}let t=j.value.findIndex(t=>t.id===e.id);t!==-1&&j.value.splice(t,1)}async function Ge(){let e=j.value.filter(e=>e.id!==K.value&&He(e));for(let t of e)await Ue(t)}async function Ke(){if(!q.value)return!1;if(!Be.value)return!0;if(Q.value=`saving`,await zt(!1))return Re.value=Date.now(),Q.value=`saved`,setTimeout(()=>{Q.value===`saved`&&Date.now()-Re.value>=4e3&&(Q.value=`idle`)},4e3),!0;Q.value=`error`;let e=Date.now();return setTimeout(()=>{Q.value===`error`&&Date.now()-e>=4e3&&(Q.value=`idle`)},4e3),!1}V(()=>q.value?{id:q.value.id,title:q.value.title,desc:q.value.desc}:null,(e,t)=>{e&&t&&e.id===t.id&&(ze!==null&&clearTimeout(ze),ze=window.setTimeout(()=>{Ke()},1500))},{deep:!0}),V(K,async(e,t)=>{Ve(),q.value&&Be.value&&await Ke()}),V(z,async e=>{if(!e.path)return;let t=Z(e.path),n=q.value;n&&n.projectPath&&Z(n.projectPath)!==t&&await xe()});function qe(e){try{let t=new Blob([JSON.stringify(e)],{type:`application/json`});navigator.sendBeacon?.(`/api/workbench/tasks`,t)}catch{}}function Je(){q.value&&Be.value&&!He(q.value)&&qe(q.value)}let $=P(!0);async function Ye(e){try{if(navigator.clipboard&&window.isSecureContext)return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.left=`-9999px`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch{return!1}}let Xe=P(null),$e=P(null);async function et(e){if(e){if(!await Ye((e.title||``).trim()||J(`@WORKBENCH:未命名任务`))){I.error(J(`@WORKBENCH:复制失败`));return}Xe.value=e.id,I.success(J(`@WORKBENCH:已复制任务标题`)),window.setTimeout(()=>{Xe.value===e.id&&(Xe.value=null)},1500)}}async function tt(e){if(!e)return;let t=(e.desc||``).trim();if(!t){I.warning(J(`@WORKBENCH:任务描述为空,无需复制`));return}if(!await Ye(t)){I.error(J(`@WORKBENCH:复制失败`));return}$e.value=e.id,I.success(J(`@WORKBENCH:已复制任务描述`)),window.setTimeout(()=>{$e.value===e.id&&($e.value=null)},1500)}let{simpleConversationMessages:rt,simpleAllJobsFor:it,simpleJobFor:at,simpleJobState:ot}=Kn(ue,q);function st(e){let t=String(e?.id||``).replace(/-a$/,``),n=ue.value.find(e=>e.id===t);return n?$t(n):!1}let ct=P(null);function lt(e){let t=(e?.projectPath||``).trim().replace(/[\\/]+$/,``);return t?t.split(/[\\/]/).pop()||t:z.value.name||``}async function ut(e,t=`brief`){if(!e)return;let n=Qe(it(e),{title:e.title,projectName:lt(e)},{scope:t});if(!n){I.warning(J(`@WORKBENCH:暂无执行内容可复制`));return}if(!await Ye(n)){I.error(J(`@WORKBENCH:复制失败`));return}ct.value=e.id,I.success(J(`@WORKBENCH:已复制执行内容`)),window.setTimeout(()=>{ct.value===e.id&&(ct.value=null)},1500)}function dt(e){ut(q.value,e===`full`?`full`:`brief`)}let ft=[`wheel`,`touchstart`,`pointerdown`,`keydown`],pt=P(null),mt=P(null),ht=null,gt=null,_t=null;function yt(){if(ht&&=(ht.disconnect(),null),gt!==null&&(clearTimeout(gt),gt=null),_t){for(let e of ft)_t.removeEventListener(e,yt);_t=null}}function bt(){yt();let e=pt.value;if(!e)return;e.scrollToBottom?.(!1);let t=mt.value?.querySelector(`.acu-message-list`);if(!(!t||typeof ResizeObserver>`u`)){_t=t;for(let e of ft)t.addEventListener(e,yt,{passive:!0});ht=new ResizeObserver(()=>pt.value?.scrollToBottom?.(!1)),ht.observe(t),t.firstElementChild&&ht.observe(t.firstElementChild),gt=setTimeout(yt,Il)}}let xt=G(()=>_.value&&q.value&&it(q.value).length>0?q.value.id:``);V(xt,async e=>{yt(),e&&(await n(),bt())}),C(yt);function St(e){return e?en(e.id):!1}let Ct=G(()=>it(q.value).length>0),wt=G(()=>St(q.value)),Et=G(()=>q.value?wt.value?J(`@WORKBENCH:正在执行中,请先「停止」再重新执行`):Ct.value?J(`@WORKBENCH:重新跑一轮:上一轮的执行记录会被清空`):``:``),Dt=G(()=>{if(!q.value)return null;let e=Y.value;if(wt.value||e&&e.runningJobs>0)return{key:`running`,label:J(`@WORKBENCH:执行中`),title:J(`@WORKBENCH:这条任务正在执行`)};if(e)return e.column===`done`?{key:`done`,label:J(`@WORKBENCH:已完成`),title:e.autoCompleted?J(`@WORKBENCH:静默超时后由 AI 核对,判定这条任务已经完成`):e.manualDoneAt?J(`@WORKBENCH:已标记为已完成`):``}:e.lastJobStatus===`error`?{key:`error`,label:J(`@WORKBENCH:执行失败`),title:J(`@WORKBENCH:上一次执行报错,点开对话流查看原因`)}:{key:`todo`,label:J(`@WORKBENCH:待处理`),title:``};switch(ot(at(q.value))){case`done`:return{key:`done`,label:J(`@WORKBENCH:已完成`),title:``};case`error`:return{key:`error`,label:J(`@WORKBENCH:执行失败`),title:``};case`cancelled`:return{key:`todo`,label:J(`@WORKBENCH:已取消`),title:``};default:return{key:`todo`,label:J(`@WORKBENCH:待处理`),title:``}}}),Ot=G(()=>{let e=q.value;if(!e)return[];let t=e.promptParts;if(t&&(t.global||t.project)){let e=[];return t.global&&e.push({key:`global`,label:J(`@WORKBENCH:全局提示词`),text:t.global}),t.project&&e.push({key:`project`,label:J(`@WORKBENCH:项目提示词`),text:t.project}),e}let n=(e.simpleOverride||``).trim();return n?[{key:`legacy`,label:J(`@WORKBENCH:提示词`),text:n}]:[]}),kt=P(!1),At=P(null),jt=P(null);function Mt(e){let t=e?.currentTarget||jt.value;if(!t)return;t.style.height=`auto`;let n=document.activeElement===t?zl:Rl,r=Math.min(Math.max(t.scrollHeight,Ll),n);t.style.height=`${r}px`,t.style.overflowY=t.scrollHeight>n?`auto`:`hidden`}V($,async e=>{e&&(await n(),Mt())}),V(()=>q.value?.id,async()=>{$.value&&(await n(),Mt())});async function Nt(e){if(kt.value)return;kt.value=!0;let t={title:``,desc:``},r=(e||z.value.path||``).trim();r&&(t.projectPath=r);try{let e=await fetch(`/api/workbench/tasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}).then(e=>e.json());if(!e.success){I.error(e.error||J(`@WORKBENCH:保存失败`));return}Ve(),q.value&&He(q.value)?await Ue(q.value):q.value&&Be.value&&await Ke(),await xe(),e.task?.id&&(K.value=e.task.id,Le(),_.value=!0,I.success(J(`@WORKBENCH:已新建任务`)),await n(),At.value?.focus())}finally{kt.value=!1}}async function Pt(e){await he.confirm(J(`@WORKBENCH:删除任务「{title}」?`,{title:e.title}),J(`@WORKBENCH:确认`),{type:`warning`}),await fetch(`/api/workbench/tasks/${e.id}`,{method:`DELETE`}),K.value===e.id&&(K.value=null),xe()}async function Ft(e){let t=(e.title||J(`@WORKBENCH:未命名任务`)).trim(),n={title:J(`@WORKBENCH:{title} (副本)`,{title:t}),desc:e.desc||``,simpleOverride:e.simpleOverride||``};e.promptParts&&(e.promptParts.global||e.promptParts.project)&&(n.promptParts=e.promptParts),z.value.path&&(n.projectPath=z.value.path);try{let e=await fetch(`/api/workbench/tasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(n)}).then(e=>e.json());if(!e.success){I.error(e.error||J(`@WORKBENCH:复制失败`));return}await xe(),e.task?.id&&(K.value=e.task.id,Le()),I.success(J(`@WORKBENCH:已复制任务`))}catch(e){I.error(J(`@WORKBENCH:网络错误: `)+(e&&e.message||e))}}async function It(e){if(K.value===e.id)return;Ve();let t=q.value;t&&He(t)?await Ue(t):t&&Be.value&&await Ke(),K.value=e.id,Le(),g(Z(z.value.path),e.id)}async function Lt(e){let{groupPath:t,orderedIds:n}=e;if(!Array.isArray(n)||n.length===0)return;let r=j.value.slice(),i=Rt(j.value,t,n);if(i!==j.value){j.value=i;try{let e=await fetch(`/api/workbench/tasks/reorder`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({orderedIds:n,groupPath:t})}).then(e=>e.json()).catch(()=>({success:!1,error:J(`@WORKBENCH:排序保存失败`)}));e?.success||(j.value=r,I.error(e?.error||J(`@WORKBENCH:排序保存失败`)))}catch(e){j.value=r,I.error(J(`@WORKBENCH:排序保存失败`)+`: `+(e?.message||e))}}}function Rt(e,t,n){let r=e=>Z(e)||jl,i=e.filter(e=>r(e.projectPath)===t).map(e=>e.id),a=new Set(i);if(n.length!==a.size||n.some(e=>!a.has(e)))return e;let o=new Map(e.map(e=>[e.id,e])),s=n.map(e=>o.get(e)).filter(Boolean),c=[],l=0;for(let n of e)r(n.projectPath)===t?c.push(s[l++]):c.push(n);return c}async function zt(e){if(!q.value)return!1;let t=await fetch(`/api/workbench/tasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(q.value)}).then(e=>e.json());return t.success?(e&&I.success(J(`@WORKBENCH:已保存`)),await be(),!0):(I.error(t.error||J(`@WORKBENCH:保存失败`)),!1)}s(async()=>{await Promise.all([xe(),fe(),pe()]),await Ge(),B(),window.addEventListener(`beforeunload`,Je),o.fetchExecutorModels()}),C(()=>{de(),window.removeEventListener(`beforeunload`,Je),q.value&&Be.value&&!He(q.value)&&qe(q.value)});let{pasteHoverId:Bt,isUploading:Vt,isImageAttachment:Ht,humanSize:Ut,onAttachmentPaste:Wt,onAttachmentDrop:Gt,uploadAttachment:Kt,removeAttachment:qt,pickAttachmentFile:Jt}=Un(),{runTask:Yt,onContinueSendFromChat:Xt,cancelJob:Zt,clearExecutionForSelectedTask:Qt,onReExecuteJob:$t,isTaskRunning:en,queuedChatsOf:tn,removeQueuedChat:nn,flushNextQueued:rn}=qn(ue,j,q,{clearJobsByTask:U,persistTask:zt,uploadAttachment:Kt,getExecutor:()=>an.value}),{active:an,availability:on,hasAnyExecutor:sn,choose:cn,executorModelText:ln,executorModelTitle:un}=Ze();function dn(e){return X(e)}let fn=G(()=>it(q.value).slice(-1)[0]),pn=G(()=>X(fn.value?.agent)),mn=G(()=>Tt(fn.value?.agent)),hn=G(()=>Oe(fn.value?.agent)?fn.value.agent:`claude`),gn=G(()=>ot(fn.value)===`running`),_n=G(()=>{let e=un(hn.value),t=J(`@WORKBENCH:本轮实际使用的执行器;上方按钮选的是下一次执行用谁`);return e?`${e} · ${t}`:t}),vn=G(()=>q.value?tn(q.value.id):[]);return(t,n)=>{let o=d,s=r,m=ye,h=y;return H(),S(`div`,uc,[e(lc,{"opened-task-id":k.value,onOpenTask:ae,onCreateTask:te,onBoardTasks:n[0]||=e=>we.value=e,onLocateTask:oe},null,8,[`opened-task-id`]),e(je,{modelValue:_.value,"onUpdate:modelValue":n[24]||=e=>_.value=e,title:x(J)(`@WORKBENCH:任务执行`),size:`fullscreen`,type:`flex`,"custom-class":`wb-task-dialog`,onOpened:D},{default:L(()=>[b(`div`,dc,[b(`div`,fc,[b(`button`,{type:`button`,class:`wb-back-btn`,title:x(J)(`@WORKBENCH:返回看板`),onClick:ne},[e(o,{class:`wb-back-btn__icon`},{default:L(()=>[e(x(T))]),_:1}),b(`span`,null,f(x(J)(`@WORKBENCH:返回看板`)),1)],8,pc),b(`span`,{class:`wb-editor-bar__project`,title:x(z).path},f(x(z).name),9,mc),Dt.value?(H(),S(`span`,{key:0,class:w([`wb-editor-bar__status`,`is-`+Dt.value.key]),"data-status":Dt.value.key,title:Dt.value.title||void 0},[b(`span`,gc,[n[26]||=b(`span`,{class:`wb-editor-bar__status-dot`,"aria-hidden":`true`},null,-1),b(`span`,_c,f(Dt.value.label),1)])],10,hc)):W(``,!0),Pe.value?(H(),S(`span`,{key:1,class:`wb-editor-bar__repo`,title:Pe.value.path},f(x(J)(`@WORKBENCH:执行于 {name}`,{name:Pe.value.name})),9,vc)):W(``,!0),Ee.value||Me.value?(H(),S(`span`,yc,[Ee.value?(H(),S(`span`,{key:0,class:`wb-editor-bar__ago`,title:Ne.value},f(Ee.value),9,bc)):W(``,!0),Ee.value&&Me.value?(H(),S(`span`,xc,`·`)):W(``,!0),Me.value?(H(),S(`span`,Sc,f(Me.value),1)):W(``,!0)])):W(``,!0),b(`span`,Cc,f(x(J)(`@WORKBENCH:任务执行`)),1)]),b(`div`,wc,[e(xr,{style:c({width:l.value+`px`}),tasks:x(j),"selected-task-id":K.value,"current-project":x(z),"creating-task":kt.value,"is-task-running":St,onSelectTask:It,onDeleteTask:Pt,onCopyTask:Ft,onCreateTask:Nt,onReorderTasks:Lt},null,8,[`style`,`tasks`,`selected-task-id`,`current-project`,`creating-task`]),b(`div`,{class:`wb-splitter`,role:`separator`,tabindex:`0`,"aria-orientation":`vertical`,"aria-label":x(J)(`@WORKBENCH:拖动调整侧边栏宽度`),"aria-valuenow":l.value,"aria-valuemin":Nl,"aria-valuemax":Pl,title:x(J)(`@WORKBENCH:拖动调整侧边栏宽度`),onMousedown:u,onKeydown:[n[1]||=F(N(e=>p(-16),[`prevent`]),[`left`]),n[2]||=F(N(e=>p(16),[`prevent`]),[`right`])]},null,40,Tc),b(`section`,Ec,[q.value?(H(),S(O,{key:1},[b(`div`,Oc,[b(`div`,kc,[A(b(`input`,{ref_key:`titleInputRef`,ref:At,class:`wb-input wb-input--title`,"onUpdate:modelValue":n[3]||=e=>q.value.title=e,placeholder:x(J)(`@WORKBENCH:任务标题`),"aria-label":x(J)(`@WORKBENCH:任务标题`)},null,8,Ac),[[me,q.value.title]]),b(`button`,{type:`button`,class:w([`wb-copy-btn`,{"is-flash":Xe.value===q.value.id}]),title:x(J)(`@WORKBENCH:复制任务标题`),"aria-label":x(J)(`@WORKBENCH:复制任务标题`),onClick:n[4]||=e=>et(q.value)},[Xe.value===q.value.id?(H(),i(o,{key:1,class:`wb-copy-btn__icon wb-copy-btn__icon--check`},{default:L(()=>[...n[27]||=[R(`✓`,-1)]]),_:1})):(H(),i(o,{key:0,class:`wb-copy-btn__icon`},{default:L(()=>[e(x(ge))]),_:1}))],10,jc)]),Q.value!==`idle`||Be.value?(H(),S(`span`,{key:0,class:w([`wb-meta-save`,{"is-saving":Q.value===`saving`,"is-saved":Q.value===`saved`,"is-error":Q.value===`error`,"is-dirty":Be.value&&Q.value===`idle`}]),title:Q.value===`saving`?x(J)(`@WORKBENCH:保存中…`):Q.value===`error`?x(J)(`@WORKBENCH:保存失败`):Q.value===`saved`?x(J)(`@WORKBENCH:已保存`):``},[Q.value===`saving`?(H(),S(`span`,Nc)):Q.value===`saved`?(H(),S(`span`,Pc,`✓`)):Q.value===`error`?(H(),S(`span`,Fc,`!`)):(H(),S(`span`,Ic)),R(` `+f(Q.value===`saving`?x(J)(`@WORKBENCH:保存中…`):Q.value===`saved`?x(J)(`@WORKBENCH:已保存`):Q.value===`error`?x(J)(`@WORKBENCH:保存失败`):x(J)(`@WORKBENCH:有未保存的更改`)),1)],10,Mc)):W(``,!0),fn.value?(H(),S(`span`,{key:1,class:w([`wb-run-executor`,{"is-running":gn.value}]),"data-executor":hn.value,title:_n.value},[e(Ie,{executor:hn.value,class:`wb-run-executor__icon`},null,8,[`executor`]),b(`span`,Rc,f(gn.value?x(J)(`@WORKBENCH:正在由 {name} 执行`,{name:pn.value}):x(J)(`@WORKBENCH:本轮由 {name} 执行`,{name:pn.value})),1)],10,Lc)):W(``,!0),x(sn)?(H(),i(h,{key:2,"split-button":``,type:`primary`,class:`wb-executor-split`,trigger:`click`,disabled:wt.value,title:Et.value,onClick:n[5]||=e=>x(Yt)(q.value),onCommand:x(cn)},{dropdown:L(()=>[e(m,null,{default:L(()=>[(H(!0),S(O,null,E(x(De),t=>(H(),i(s,{key:t.id,command:t.id,disabled:!x(on)[t.id]},{default:L(()=>[b(`span`,Hc,[e(Ie,{executor:t.id,class:`wb-executor-item__icon`},null,8,[`executor`]),b(`span`,Uc,f(t.name),1),x(ln)(t.id)?(H(),S(`span`,{key:0,class:`wb-executor-item__model`,title:x(un)(t.id)},f(x(ln)(t.id)),9,Wc)):W(``,!0),x(an)===t.id?(H(),i(o,{key:1,class:`wb-executor-item__check`},{default:L(()=>[e(x(le))]),_:1})):x(on)[t.id]?W(``,!0):(H(),S(`span`,Gc,f(x(J)(`@42BB9:未安装`)),1))])]),_:2},1032,[`command`,`disabled`]))),128))]),_:1})]),default:L(()=>[e(o,{class:`wb-executor-split__play`,"aria-hidden":`true`},{default:L(()=>[e(x(v))]),_:1}),b(`span`,{class:`wb-executor-split__hint`,title:x(un)(x(an))},[e(Ie,{executor:x(an),class:`wb-executor-split__hint-icon`},null,8,[`executor`]),b(`span`,Bc,f(dn(x(an))),1)],8,zc),b(`span`,Vc,f(Ct.value?x(J)(`@WORKBENCH:重新执行任务`):x(J)(`@WORKBENCH:执行任务`)),1)]),_:1},8,[`disabled`,`title`,`onCommand`])):(H(),S(`div`,Kc,[e(o,{class:`wb-no-claude-hint__icon`},{default:L(()=>[e(x(ce))]),_:1}),b(`span`,qc,f(x(J)(`@WORKBENCH:未检测到本地可用的 CLI 执行器,无法执行任务`)),1),b(`a`,Jc,f(x(J)(`@WORKBENCH:查看安装指引`)),1)])),b(`div`,Yc,[b(`button`,{type:`button`,class:w([`wb-logs-inline-btn wb-logs-inline-btn--copy wb-copy-exec__main`,{"is-flash":ct.value===q.value.id}]),title:x(J)(`@WORKBENCH:复制本任务的对话流(默认精简:仅提示词 + 模型回复)`),"aria-label":x(J)(`@WORKBENCH:复制执行内容`),onClick:n[6]||=e=>ut(q.value,`brief`)},[ct.value===q.value.id?(H(),i(o,{key:1,class:`wb-logs-inline-btn__icon`},{default:L(()=>[...n[28]||=[R(`✓`,-1)]]),_:1})):(H(),i(o,{key:0,class:`wb-logs-inline-btn__icon`},{default:L(()=>[e(x(ge))]),_:1})),b(`span`,Zc,f(x(J)(`@WORKBENCH:复制执行内容`)),1)],10,Xc),e(h,{trigger:`click`,placement:`bottom-end`,onCommand:dt},{dropdown:L(()=>[e(m,null,{default:L(()=>[e(s,{command:`brief`},{default:L(()=>[R(f(x(J)(`@WORKBENCH:精简:提示词 + 模型回复`)),1)]),_:1}),e(s,{command:`full`},{default:L(()=>[R(f(x(J)(`@WORKBENCH:全量:提示词 / 思考 / 工具调用 / 模型回复`)),1)]),_:1})]),_:1})]),default:L(()=>[b(`button`,{type:`button`,class:`wb-logs-inline-btn wb-copy-exec__caret`,title:x(J)(`@WORKBENCH:选择复制范围`),"aria-label":x(J)(`@WORKBENCH:选择复制范围`)},[e(o,{class:`wb-logs-inline-btn__icon`},{default:L(()=>[e(x(re))]),_:1})],8,Qc)]),_:1})]),b(`button`,{type:`button`,class:`wb-logs-inline-btn wb-logs-inline-btn--danger`,title:x(J)(`@WORKBENCH:清空当前任务的所有执行内容`),"aria-label":x(J)(`@WORKBENCH:清空当前任务的所有执行内容`),onClick:n[7]||=(...e)=>x(Qt)&&x(Qt)(...e)},[e(o,{class:`wb-logs-inline-btn__icon`},{default:L(()=>[e(x(se))]),_:1}),b(`span`,el,f(x(J)(`@WORKBENCH:清空执行`)),1)],8,$c),b(`button`,{type:`button`,class:`wb-logs-inline-btn`,title:x(J)(`@WORKBENCH:执行日志`),"aria-label":x(J)(`@WORKBENCH:执行日志`),onClick:n[8]||=e=>Se.value=!0},[e(o,{class:`wb-logs-inline-btn__icon`},{default:L(()=>[e(x(M))]),_:1}),b(`span`,nl,f(x(J)(`@WORKBENCH:执行日志`)),1)],8,tl)]),b(`details`,{class:`wb-task-desc`,open:$.value,onToggle:n[20]||=e=>$.value=e.target.open},[b(`summary`,il,[e(o,{class:`wb-task-desc__caret`},{default:L(()=>[(H(),i(ee($.value?x(re):x(ie))))]),_:1}),b(`span`,al,f(x(J)(`@WORKBENCH:任务描述(可选)`)),1),b(`button`,{type:`button`,class:w([`wb-copy-btn wb-copy-btn--inline`,{"is-flash":$e.value===q.value.id}]),title:q.value.desc&&q.value.desc.trim()?x(J)(`@WORKBENCH:复制任务描述`):x(J)(`@WORKBENCH:任务描述为空,无需复制`),"aria-label":x(J)(`@WORKBENCH:复制任务描述`),onClick:n[9]||=N(e=>tt(q.value),[`stop`,`prevent`])},[$e.value===q.value.id?(H(),i(o,{key:1,class:`wb-copy-btn__icon wb-copy-btn__icon--check`},{default:L(()=>[...n[29]||=[R(`✓`,-1)]]),_:1})):(H(),i(o,{key:0,class:`wb-copy-btn__icon`},{default:L(()=>[e(x(ge))]),_:1}))],10,ol),q.value.desc&&q.value.desc.length>0||q.value.attachments&&q.value.attachments.length>0?(H(),S(`span`,sl,[q.value.desc&&q.value.desc.length>0?(H(),S(`span`,cl,f(x(J)(`@WORKBENCH:已填写`)),1)):W(``,!0),q.value.attachments&&q.value.attachments.length>0?(H(),S(`span`,ll,f(q.value.attachments.length),1)):W(``,!0)])):W(``,!0)]),A(b(`textarea`,{ref_key:`taskDescTextareaRef`,ref:jt,class:`wb-textarea wb-textarea--autogrow`,"onUpdate:modelValue":n[10]||=e=>q.value.desc=e,placeholder:x(J)(`@WORKBENCH:任务描述(可选)`),"aria-label":x(J)(`@WORKBENCH:任务描述(可选)`),onInput:n[11]||=e=>Mt(e),onFocus:n[12]||=e=>Mt(e),onBlur:n[13]||=e=>Mt(e),onPaste:n[14]||=e=>x(Wt)(e,{kind:`task`,task:q.value})},null,40,ul),[[me,q.value.desc]]),e(vt,{attachments:q.value.attachments||[],"is-image":x(Ht),"human-size":x(Ut),"is-uploading":x(Vt)(`task-`+q.value.id),"is-paste-hover":x(Bt)===`task-`+q.value.id,"on-pick":()=>x(Jt)({kind:`task`,task:q.value}),"on-remove":e=>x(qt)({kind:`task`,task:q.value},e),onPaste:n[15]||=e=>x(Wt)(e,{kind:`task`,task:q.value}),onDrop:n[16]||=N(e=>x(Gt)(e,{kind:`task`,task:q.value}),[`prevent`]),onDragover:n[17]||=N(e=>Bt.value=`task-`+q.value.id,[`prevent`]),onDragenter:n[18]||=N(e=>Bt.value=`task-`+q.value.id,[`prevent`]),onDragleave:n[19]||=e=>Bt.value=x(Bt)===`task-`+q.value.id?null:x(Bt)},null,8,[`attachments`,`is-image`,`human-size`,`is-uploading`,`is-paste-hover`,`on-pick`,`on-remove`])],40,rl),b(`div`,dl,[b(`div`,fl,[b(`details`,{class:w([`wb-task-prompt`,{"has-content":Ot.value.length>0}])},[b(`summary`,pl,[e(o,{class:`wb-task-prompt__caret`},{default:L(()=>[e(x(ie))]),_:1}),b(`span`,null,f(x(J)(`@WORKBENCH:提示词`)),1),Ot.value.length>0?(H(),S(`span`,ml,f(x(J)(`@WORKBENCH:已填写`)),1)):W(``,!0),x(ot)(x(at)(q.value))===`running`&&x(at)(q.value)?(H(),S(`button`,{key:1,class:`wb-simple__stop`,onClick:n[21]||=N(e=>x(Zt)(x(at)(q.value)),[`stop`])},f(x(J)(`@WORKBENCH:停止`)),1)):W(``,!0)]),Ot.value.length>0?(H(),S(`div`,hl,[(H(!0),S(O,null,E(Ot.value,e=>(H(),S(`div`,{key:e.key,class:`wb-task-prompt__part`},[b(`div`,gl,f(e.label),1),b(`pre`,_l,f(e.text),1)]))),128))])):(H(),S(`p`,vl,f(x(J)(`@WORKBENCH:这条任务没有附加提示词`)),1))],2),x(it)(q.value).length>0?(H(),S(`div`,{key:0,class:`wb-simple-chat-wrap`,ref_key:`chatWrapRef`,ref:mt},[b(`div`,yl,[(H(),i(x(Te),{ref_key:`chatRef`,ref:pt,key:q.value.id,messages:x(rt),"assistant-name":pn.value,"assistant-avatar":mn.value,"show-avatar":!0,theme:x(a).theme,"tool-calls-config":{group:!0,collapseThreshold:2},"plan-config":{labels:{title:x(J)(`@AGENT:计划`),raw:x(J)(`@AGENT:原始参数`)}},"message-rail-config":x(We),"show-input":!1,onRetry:st},null,8,[`messages`,`assistant-name`,`assistant-avatar`,`theme`,`plan-config`,`message-rail-config`]))]),b(`div`,bl,[vn.value.length?(H(),S(`div`,xl,[b(`div`,Sl,[b(`span`,Cl,f(x(J)(`@WORKBENCH:排队中`)),1),b(`span`,wl,f(vn.value.length),1),b(`span`,Tl,f(wt.value?x(J)(`@WORKBENCH:等这一轮跑完自动发送`):x(J)(`@WORKBENCH:当前没有在跑的轮次`)),1)]),(H(!0),S(O,null,E(vn.value,(e,t)=>(H(),S(`div`,{key:e.id,class:`wb-chat-queue__item`},[b(`span`,El,f(t+1),1),b(`span`,{class:`wb-chat-queue__text`,title:e.text},f(e.text),9,Dl),e.files.length?(H(),S(`span`,Ol,[n[30]||=b(`span`,{"aria-hidden":`true`},`📎`,-1),R(` `+f(e.files.map(e=>e.file.name).join(`、`)),1)])):W(``,!0),t===0&&!wt.value?(H(),S(`button`,{key:1,type:`button`,class:`wb-chat-queue__btn`,onClick:n[22]||=e=>x(rn)(q.value.id)},f(x(J)(`@WORKBENCH:立即发送`)),1)):W(``,!0),b(`button`,{type:`button`,class:`wb-chat-queue__btn is-remove`,title:x(J)(`@WORKBENCH:移出队列`),"aria-label":x(J)(`@WORKBENCH:移出队列`),onClick:t=>x(nn)(q.value.id,e.id)},`✕`,8,kl)]))),128))])):W(``,!0),(H(),i(x(Ce),{key:`input-`+q.value.id,placeholder:wt.value?x(J)(`@WORKBENCH:执行中,发送后会排队,等这一轮跑完自动接上…`):x(J)(`@WORKBENCH:输入后续问题继续对话…(Ctrl+Enter 发送)`),"upload-config":{enabled:!0,accept:x(Pn),multiple:!0,maxCount:0,maxSize:x(Fn)},class:`wb-simple-chat__input`,onSend:n[23]||=e=>x(Xt)(q.value,e)},null,8,[`placeholder`,`upload-config`]))])],512)):W(``,!0)])])],64)):(H(),S(`div`,Dc,[b(`p`,null,f(x(J)(`@WORKBENCH:左侧选择任务,或新建一个任务开始`)),1)]))])])])]),_:1},8,[`modelValue`,`title`]),e(je,{modelValue:Se.value,"onUpdate:modelValue":n[25]||=e=>Se.value=e,title:x(J)(`@WORKBENCH:执行日志`),width:`1080px`,"close-on-click-modal":!1,top:`6vh`,type:`flex`,"custom-class":`wb-logs-dialog`,"append-to-body":``},{default:L(()=>[e(Tn)]),_:1},8,[`modelValue`,`title`])])}}}),[[`__scopeId`,`data-v-619c1cf6`]]);export{Bl as default};