zen-gitsync 2.12.9 → 2.13.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/scripts/README_COLOR_CONVERTER.md +196 -196
- package/scripts/README_FONTSIZE_CONVERTER.md +278 -278
- package/scripts/README_SPACING_CONVERTER.md +126 -126
- package/scripts/README_STYLE_VARS.md +180 -180
- package/src/ui/public/assets/EditorView-9Q0gSlr6.js +0 -0
- package/src/ui/public/assets/SourceMapView-Dxmg8KPB.js +3 -0
- package/src/ui/public/assets/WorkbenchView-CYC_l23l.js +2 -0
- package/src/ui/public/assets/WorkbenchView-DauLIzog.css +1 -0
- package/src/ui/public/assets/{_plugin-vue_export-helper-DMUTnP0C.js → _plugin-vue_export-helper-K0RsuraF.js} +3 -3
- package/src/ui/public/assets/{css.worker-Wv5dxAWO.js → css.worker-CvXBzhp8.js} +1 -1
- package/src/ui/public/assets/{html.worker-CQP8QQsS.js → html.worker-BO6WuOEO.js} +1 -1
- package/src/ui/public/assets/index-CGnU7zDA.js +66 -0
- package/src/ui/public/assets/index-DEEcURiV.css +1 -0
- package/src/ui/public/assets/{json.worker-DzV-CpCQ.js → json.worker-BkJRGcCJ.js} +1 -1
- package/src/ui/public/assets/{ts.worker-Dth06zuC.js → ts.worker-B0J26iPs.js} +15 -15
- package/src/ui/public/assets/vendor-DpYOE9sy.css +1 -0
- package/src/ui/public/assets/{vendor-C1sPhIEb.js → vendor-vsQ98rZk.js} +214 -207
- package/src/ui/public/favicon.svg +75 -75
- package/src/ui/public/index.html +23 -23
- package/src/ui/public/logo.svg +74 -74
- package/src/ui/server/routes/npm.js +170 -1
- package/src/ui/server/routes/workbench.js +1702 -1068
- package/src/ui/public/assets/EditorView-C4DezJRA.js +0 -0
- package/src/ui/public/assets/SourceMapView-B521sL_k.js +0 -3
- package/src/ui/public/assets/WorkbenchView-75x9qygA.js +0 -1
- package/src/ui/public/assets/WorkbenchView-Dc9vThI8.css +0 -1
- package/src/ui/public/assets/index-BCIFnj7e.css +0 -1
- package/src/ui/public/assets/index-cS1g7H--.js +0 -65
- package/src/ui/public/assets/vendor-B2yudN8R.css +0 -1
- /package/src/ui/public/assets/{editor.worker-Bd9IXS8d.js → editor.worker-Cn2oRESe.js} +0 -0
- /package/src/ui/public/assets/{rolldown-runtime-BM3Ffeng.js → rolldown-runtime-CMxvf4Kt.js} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import"./rolldown-runtime-CMxvf4Kt.js";import{An as e,B as t,Cn as n,Dn as r,Et as i,Fn as a,Gn as o,J as s,Jn as c,Kn as l,Mn as u,N as d,Nn as f,On as p,P as m,Pn as h,Rn as g,V as _,Vn as v,Wn as y,Xn as b,_t as x,ar as S,bt as ee,cr as C,ct as w,dt as te,er as T,et as ne,ht as re,ir as E,jn as D,lr as O,lt as k,nr as A,qt as ie,sr as j,tr as M,ur as N,vt as ae,wn as P,zn as F}from"./vendor-vsQ98rZk.js";import{n as I,t as L}from"./_plugin-vue_export-helper-K0RsuraF.js";import{t as oe}from"./index-CGnU7zDA.js";var se={key:0,class:`ai-split-status`},R={key:1,class:`ai-split-status is-error`},z={class:`ai-split-prompt-actions`},B={key:0,class:`ai-split-prompt-editor`},V={class:`ai-split-prompt-editor__actions`},ce={key:1,class:`ai-split-pre`},H={class:`ai-split-subhead`},U={class:`ai-split-pre`},le={key:0,class:`ai-split-tab-count`},ue={class:`ai-split-pre ai-split-pre--think`},W={key:0,class:`ai-split-tab-count`},de={class:`ai-split-pre`},fe={key:0,class:`ai-split-tab-count`},pe={key:0,class:`ai-split-empty`},me={key:1,class:`ai-split-list`},he={class:`ai-split-list__no`},ge={class:`ai-split-list__body`},_e={class:`ai-split-list__title`},ve={class:`ai-split-list__desc`},ye=L(v({__name:`AISplitDialog`,props:{modelValue:{type:Boolean},title:{},desc:{},taskId:{},promptId:{}},emits:[`update:modelValue`,`confirm`],setup(e,{emit:n}){let r=e,o=n,s=S(`idle`),l=S(`prompt`),d=S(``),v=S(``),y=S(``),x=S(``),C=S(``),w=S([]),E=S(``),O=null,k=0,A=D(()=>y.value.length),ae=D(()=>x.value.length),P=D(()=>s.value===`result`&&w.value.length>0),L=D(()=>s.value===`running`);function oe(){ye(),o(`update:modelValue`,!1)}function ye(){O&&=(O.abort(),null)}function be(){ye(),s.value=`idle`,l.value=`prompt`,d.value=``,v.value=``,y.value=``,x.value=``,C.value=``,w.value=[],E.value=``}async function G(){if(!r.title.trim()){m.warning(I(`@WORKBENCH:请先填写任务标题`));return}be();let e=++k;s.value=`running`,l.value=`thinking`,O=new AbortController;let t=O;try{let n=await fetch(`/api/workbench/tasks/ai-split-subtasks`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify({title:r.title,desc:r.desc,taskId:r.taskId||``,promptId:r.promptId||``}),signal:t.signal});if(e!==k)return;if(!n.ok||!n.body){let e=await n.text().catch(()=>``);throw Error(e||`HTTP ${n.status}`)}let i=n.body.getReader(),a=new TextDecoder(`utf-8`),o=``,c=null;for(;;){let{value:t,done:n}=await i.read();if(e!==k)return;if(n)break;o+=a.decode(t,{stream:!0});let r=o.split(`
|
|
2
|
+
`);o=r.pop()??``;for(let e of r){let t=e.trim();if(!t.startsWith(`data:`))continue;let n=t.slice(5).trim();if(!n)continue;let r;try{r=JSON.parse(n)}catch{continue}switch(r.type){case`meta`:d.value=r.prompt?.system||``,v.value=r.prompt?.user||``;break;case`thinking`:y.value+=String(r.delta||``);break;case`content`:x.value+=String(r.delta||``);break;case`done`:c=r;break;case`error`:throw Error(r.error||`AI 拆分失败`)}}}if(e!==k)return;if(!c)throw Error(I(`@WORKBENCH:AI 未返回结果`));w.value=Array.isArray(c.subtasks)?c.subtasks:[],C.value=c.raw||x.value,y.value||=I(`@WORKBENCH:(当前模型未返回独立的思考内容,可切换到「原始结果」查看完整输出)`),s.value=`result`,l.value=w.value.length>0?`confirm`:`raw`}catch(n){if(console.log(`[AI Split] catch err:`,{name:n?.name,msg:n?.message,aborted:t.signal.aborted,nonce:{mine:e,cur:k}}),e!==k||n?.name===`AbortError`||t.signal.aborted)return;s.value=`error`,E.value=n?.message||String(n)}finally{e===k&&(O=null)}}function xe(){P.value&&(o(`confirm`,w.value.slice()),o(`update:modelValue`,!1))}function K(){G()}T(()=>r.modelValue,e=>{e&&s.value===`idle`&&G()});let q=S(!1),J=S(``),Y=S(!1);function X(){J.value=d.value,q.value=!0}async function Se(){if(!J.value.trim()){m.warning(I(`@WORKBENCH:指令内容不能为空`));return}Y.value=!0;try{let e=await fetch(`/api/workbench/tasks/ai-subtask-instruction`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({instruction:J.value})}).then(e=>e.json());e.success?(m.success(I(`@WORKBENCH:已保存指令`)),q.value=!1,K()):m.error(e.error||I(`@WORKBENCH:保存失败`))}catch(e){m.error(I(`@WORKBENCH:保存失败: `)+(e?.message||e))}finally{Y.value=!1}}function Z(){q.value=!1}return(n,r)=>{let m=ee,S=te,C=re,T=t,D=_,O=ne;return c(),f(O,{"model-value":e.modelValue,"onUpdate:modelValue":r[2]||=e=>o(`update:modelValue`,e),title:j(I)(`@WORKBENCH:AI 拆分任务`),width:`800px`,"close-on-click-modal":!1,"close-on-press-escape":!L.value,"show-close":!L.value,onClose:oe},{footer:M(()=>[s.value===`error`?(c(),f(S,{key:0,onClick:K},{default:M(()=>[g(N(j(I)(`@WORKBENCH:重新生成`)),1)]),_:1})):h(``,!0),F(S,{onClick:oe},{default:M(()=>[g(N(j(I)(`@WORKBENCH:取消`)),1)]),_:1}),F(S,{type:`primary`,disabled:!P.value,onClick:xe},{default:M(()=>[g(N(j(I)(`@WORKBENCH:确认入库`))+` (`+N(w.value.length)+`) `,1)]),_:1},8,[`disabled`])]),default:M(()=>[L.value?(c(),a(`div`,se,[F(m,{class:`is-loading`},{default:M(()=>[F(j(ie))]),_:1}),u(`span`,null,N(j(I)(`@WORKBENCH:AI 正在拆分…`)),1)])):s.value===`error`?(c(),a(`div`,R,[F(m,{color:`#f56c6c`},{default:M(()=>[F(j(i))]),_:1}),u(`span`,null,N(E.value),1)])):h(``,!0),F(D,{modelValue:l.value,"onUpdate:modelValue":r[1]||=e=>l.value=e,class:`ai-split-tabs`},{default:M(()=>[F(T,{label:j(I)(`@WORKBENCH:提示词`),name:`prompt`},{default:M(()=>[u(`div`,z,[F(S,{size:`small`,disabled:L.value,onClick:X},{default:M(()=>[g(N(j(I)(`@WORKBENCH:编辑指令`)),1)]),_:1},8,[`disabled`])]),q.value?(c(),a(`div`,B,[F(C,{modelValue:J.value,"onUpdate:modelValue":r[0]||=e=>J.value=e,type:`textarea`,rows:12,placeholder:j(I)(`@WORKBENCH:指令内容`)},null,8,[`modelValue`,`placeholder`]),u(`div`,V,[F(S,{size:`small`,onClick:Z},{default:M(()=>[g(N(j(I)(`@WORKBENCH:取消`)),1)]),_:1}),F(S,{size:`small`,type:`primary`,loading:Y.value,onClick:Se},{default:M(()=>[g(N(j(I)(`@WORKBENCH:保存并重跑`)),1)]),_:1},8,[`loading`])])])):(c(),a(`pre`,ce,N(d.value||`(等待 LLM 启动…)`),1)),u(`h4`,H,N(j(I)(`@WORKBENCH:用户提示词(拼装后)`)),1),u(`pre`,U,N(v.value||`(等待 LLM 启动…)`),1)]),_:1},8,[`label`]),F(T,{name:`thinking`},{label:M(()=>[u(`span`,null,[g(N(j(I)(`@WORKBENCH:思考`))+` `,1),A.value>0?(c(),a(`span`,le,`(`+N(A.value)+`)`,1)):h(``,!0)])]),default:M(()=>[u(`pre`,ue,N(y.value||j(I)(`@WORKBENCH:(暂无输出)`)),1)]),_:1}),F(T,{name:`raw`},{label:M(()=>[u(`span`,null,[g(N(j(I)(`@WORKBENCH:原始结果`))+` `,1),ae.value>0?(c(),a(`span`,W,`(`+N(ae.value)+`)`,1)):h(``,!0)])]),default:M(()=>[u(`pre`,de,N(x.value||j(I)(`@WORKBENCH:(暂无输出)`)),1)]),_:1}),F(T,{name:`confirm`,disabled:w.value.length===0},{label:M(()=>[u(`span`,null,[g(N(j(I)(`@WORKBENCH:确认入库`))+` `,1),w.value.length>0?(c(),a(`span`,fe,`(`+N(w.value.length)+`)`,1)):h(``,!0)])]),default:M(()=>[w.value.length===0?(c(),a(`div`,pe,N(j(I)(`@WORKBENCH:(暂无子任务)`)),1)):(c(),a(`ul`,me,[(c(!0),a(p,null,b(w.value,(e,t)=>(c(),a(`li`,{key:t,class:`ai-split-list__item`},[u(`div`,he,N(t+1),1),u(`div`,ge,[u(`div`,_e,N(e.title),1),u(`div`,ve,N(e.desc),1)])]))),128))]))]),_:1},8,[`disabled`])]),_:1},8,[`modelValue`])]),_:1},8,[`model-value`,`title`,`close-on-press-escape`,`show-close`])}}}),[[`__scopeId`,`data-v-15311727`]]),be={class:`wb-attachments__head`},G={class:`wb-attachments__label`},xe={class:`wb-attachments__count`},K=[`disabled`],q={key:0,class:`wb-attachments__paste-hint`},J={key:1,class:`wb-attachments__list`},Y=[`title`,`onClick`],X=[`src`,`alt`],Se={key:1},Z={class:`wb-attachment__meta`},Ce=[`title`],we={class:`wb-attachment__sub`},Te=[`onClick`,`title`],Ee=v({__name:`AttachmentZone`,props:{attachments:{},isImage:{type:Function},humanSize:{type:Function},isUploading:{type:Boolean},isPasteHover:{type:Boolean},maxCount:{},onPick:{type:Function},onRemove:{type:Function}},emits:[`paste`,`drop`,`dragover`,`dragenter`,`dragleave`],setup(t,{emit:n}){let i=t,o=n,l=D(()=>i.attachments.filter(e=>i.isImage(e))),d=D(()=>l.value.map(e=>`/api/workbench/attachments/${e.id}/raw`)),m=S(0),_=S(!1);function v(e){if(i.isImage(e)){let t=l.value.findIndex(t=>t.id===e.id);m.value=t>=0?t:0,_.value=!0}else window.open(`/api/workbench/attachments/${e.id}/raw`,`_blank`,`noopener`)}function y(){_.value=!1}return(n,i)=>(c(),a(p,null,[u(`div`,{class:C([`wb-attachments`,{"is-paste-hover":t.isPasteHover}]),onPaste:i[1]||=e=>o(`paste`,e),onDrop:i[2]||=r(e=>o(`drop`,e),[`prevent`]),onDragover:i[3]||=r(e=>o(`dragover`,e),[`prevent`]),onDragenter:i[4]||=r(e=>o(`dragenter`,e),[`prevent`]),onDragleave:i[5]||=e=>o(`dragleave`,e)},[u(`div`,be,[u(`span`,G,[g(N(j(I)(`@WORKBENCH:附件`))+` `,1),u(`span`,xe,N(t.attachments.length)+` / `+N(t.maxCount),1)]),u(`button`,{class:`wb-attachments__add`,disabled:t.isUploading||t.attachments.length>=t.maxCount,onClick:i[0]||=(...e)=>t.onPick&&t.onPick(...e)},N(t.isUploading?j(I)(`@WORKBENCH:上传中…`):j(I)(`@WORKBENCH:添加附件`)),9,K)]),t.isPasteHover?(c(),a(`div`,q,N(j(I)(`@WORKBENCH:粘贴图片以快速添加`)),1)):h(``,!0),t.attachments.length>0?(c(),a(`ul`,J,[(c(!0),a(p,null,b(t.attachments,e=>(c(),a(`li`,{key:e.id,class:`wb-attachment`},[u(`button`,{type:`button`,class:`wb-attachment__preview`,title:j(I)(`@WORKBENCH:点击预览`),onClick:t=>v(e)},[u(`div`,{class:C([`wb-attachment__icon`,{"wb-attachment__icon--img":t.isImage(e)}])},[t.isImage(e)?(c(),a(`img`,{key:0,src:`/api/workbench/attachments/${e.id}/raw`,alt:e.originalName,loading:`lazy`},null,8,X)):(c(),a(`span`,Se,N(e.ext.toUpperCase()),1))],2),u(`div`,Z,[u(`div`,{class:`wb-attachment__name`,title:e.originalName},N(e.originalName),9,Ce),u(`div`,we,N(t.humanSize(e.size))+` · `+N(e.mimeType),1)])],8,Y),u(`button`,{class:`wb-attachment__del`,onClick:r(n=>t.onRemove(e),[`stop`]),title:j(I)(`@WORKBENCH:删除`)},`×`,8,Te)]))),128))])):h(``,!0)],34),(c(),f(e,{to:`body`},[_.value&&d.value.length>0?(c(),f(j(s),{key:0,"url-list":d.value,"initial-index":m.value,"hide-on-click-modal":!0,onClose:y},null,8,[`url-list`,`initial-index`])):h(``,!0)]))],64))}}),De={class:`workbench`},Oe={class:`wb-sidebar`},ke={class:`wb-sidebar__header`},Ae={class:`wb-task-list`},je=[`onClick`],Me={class:`wb-task-item__title`},Ne={class:`wb-task-item__meta`},Pe=[`onClick`,`title`],Fe={key:0,class:`wb-empty`},Ie={class:`wb-sidebar__header`},Le={class:`wb-prompt-list`},Re=[`onClick`,`title`],ze=[`onClick`],Be={key:0,class:`wb-empty`},Ve={class:`wb-split`},He={key:0,class:`wb-placeholder`},Ue={class:`wb-split__header`},We=[`placeholder`],Ge={value:null},Ke=[`value`],qe=[`placeholder`],Je={class:`wb-split__sub-header`},Ye={key:0,class:`wb-dirty-badge`},Xe={class:`wb-sub-list`},Ze={class:`wb-sub-item__row`},Qe=[`onUpdate:modelValue`,`placeholder`,`onPaste`],$e=[`title`],et=[`title`],tt=[`title`,`onClick`],nt=[`onClick`],rt=[`onUpdate:modelValue`,`placeholder`,`onPaste`],it=[`open`],at={class:`wb-log-summary`},ot={key:0},st={key:1},ct={key:2},lt={class:`wb-log-summary__meta`},ut={key:0,class:`wb-log-section`},dt={class:`wb-log-section__summary`},ft={class:`wb-log-section__tag wb-log-section__tag--user`},pt={class:`wb-log-section__count`},mt={class:`wb-log-section__pre wb-log-section__pre--user`},ht={key:1,class:`wb-log-section`},gt={class:`wb-log-section__summary`},_t={class:`wb-log-section__tag wb-log-section__tag--think`},vt={class:`wb-log-section__count`},yt={class:`wb-log-section__pre wb-log-section__pre--think`},bt={key:0,class:`wb-empty`},xt={style:{display:`flex`,gap:`8px`,"align-items":`center`}},St=64*1024,Ct=`.png,.jpg,.jpeg,.gif,.webp,.bmp,.svg,.pdf,.txt,.md,.csv,.json,.log`,wt=5*1024*1024,Tt=L(v({__name:`WorkbenchView`,setup(e){let t=S([]),i=S([]),s=S([]),_=S(null),v=D(()=>i.value.find(e=>e.id===_.value)||null),ee=S(new Map);function ie(){let e=new Map;if(v.value)for(let t of v.value.subtasks)e.set(t.id,{id:t.id,title:t.title,desc:t.desc,promptOverride:t.promptOverride});ee.value=e}let L=D(()=>{let e=new Set;if(!v.value)return e;for(let t of v.value.subtasks){let n=ee.value.get(t.id);if(!n){e.add(t.id);continue}(n.title!==t.title||n.desc!==t.desc||n.promptOverride!==t.promptOverride)&&e.add(t.id)}return e}),se=D(()=>L.value.size>0),R=E({visible:!1,editing:null,name:``,content:``,aiLoading:!1}),z=E({visible:!1,text:``,loading:!1,saving:!1}),B=E({visible:!1,editing:null,title:``,desc:``,promptId:null}),V=null,ce=oe();function H(){ce.setRunning(s.value.filter(e=>e.status===`running`).length)}function U(e){return s.value.find(t=>t.subId===e)||null}function le(e,t){if(e===`hello`){s.value=t.jobs||[],H();return}if(e===`job:update`){let e=t,n=s.value.findIndex(t=>t.id===e.id);n>=0?s.value[n]=e:s.value.push(e),H()}if(e===`sub:update`){let e=i.value.find(e=>e.id===t.taskId);if(e){let n=e.subtasks.findIndex(e=>e.id===t.sub.id);n>=0&&(e.subtasks[n]=t.sub)}}if(e===`task:update`){let e=i.value.findIndex(e=>e.id===t.id);e>=0&&(i.value[e]=t)}e===`task:error`&&m.error(t.error||I(`@WORKBENCH:执行出错`))}async function ue(){t.value=(await fetch(`/api/workbench/prompts`).then(e=>e.json()).catch(()=>({prompts:[]}))).prompts||[]}async function W(){i.value=(await fetch(`/api/workbench/tasks`).then(e=>e.json()).catch(()=>({tasks:[]}))).tasks||[],!_.value&&i.value.length>0&&(_.value=i.value[0].id),ie()}async function de(){s.value=(await fetch(`/api/workbench/jobs`).then(e=>e.json()).catch(()=>({jobs:[]}))).jobs||[],H()}function fe(){V&&=(V.close(),null),V=new EventSource(`/api/workbench/events`),V.onmessage=e=>{try{let t=JSON.parse(e.data);le(t.event,t.payload)}catch{}},V.onerror=()=>{V&&=(V.close(),null),setTimeout(fe,3e3)}}function pe(){R.editing=null,R.name=``,R.content=``,R.aiLoading=!1,R.visible=!0}function me(e){R.editing=e,R.name=e.name,R.content=e.content,R.aiLoading=!1,R.visible=!0}async function he(){if(!R.aiLoading){R.aiLoading=!0;try{let e=await fetch(`/api/workbench/prompts/ai-generate`,{method:`POST`}).then(e=>e.json());e.success?(R.name=e.name||R.name,R.content=e.result||``,m.success(I(`@WORKBENCH:已生成,可继续编辑`))):m.error(e.error||I(`@WORKBENCH:生成失败`))}catch(e){m.error(I(`@WORKBENCH:网络错误: `)+(e&&e.message||e))}finally{R.aiLoading=!1}}}async function ge(){z.visible=!0,z.loading=!0;try{let e=await fetch(`/api/workbench/prompts/ai-instruction`).then(e=>e.json());e.success?z.text=e.instruction||``:m.error(e.error||I(`@WORKBENCH:读取指令失败`))}catch(e){m.error(I(`@WORKBENCH:读取指令失败`)+`: `+(e&&e.message||e))}finally{z.loading=!1}}async function _e(){if(!z.text.trim()){m.warning(I(`@WORKBENCH:指令内容不能为空`));return}z.saving=!0;try{let e=await fetch(`/api/workbench/prompts/ai-instruction`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({instruction:z.text})}).then(e=>e.json());e.success?(m.success(I(`@WORKBENCH:已保存指令`)),z.visible=!1):m.error(e.error||I(`@WORKBENCH:保存失败`))}catch(e){m.error(I(`@WORKBENCH:网络错误: `)+(e&&e.message||e))}finally{z.saving=!1}}async function ve(){if(!R.name.trim()||!R.content.trim()){m.warning(I(`@WORKBENCH:名称和内容不能为空`));return}let e={id:R.editing?.id,name:R.name.trim(),content:R.content},t=await fetch(`/api/workbench/prompts`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}).then(e=>e.json());t.success?(m.success(I(`@WORKBENCH:已保存`)),R.visible=!1,ue()):m.error(t.error||I(`@WORKBENCH:保存失败`))}async function be(e){await d.confirm(I(`@WORKBENCH:删除提示词「{name}」?`,{name:e.name}),I(`@WORKBENCH:确认`),{type:`warning`}),await fetch(`/api/workbench/prompts/${e.id}`,{method:`DELETE`}),ue();for(let t of i.value)t.promptId===e.id&&(t.promptId=null,await fetch(`/api/workbench/tasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}));W()}function G(){B.editing=null,B.title=``,B.desc=``,B.promptId=null,B.visible=!0}async function xe(){if(!B.title.trim()){m.warning(I(`@WORKBENCH:标题必填`));return}let e={id:B.editing?.id,title:B.title.trim(),desc:B.desc,promptId:B.promptId,subtasks:B.editing?.subtasks||[]},t=await fetch(`/api/workbench/tasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}).then(e=>e.json());t.success?(m.success(I(`@WORKBENCH:已保存`)),B.visible=!1,W(),_.value||=t.task.id):m.error(t.error||I(`@WORKBENCH:保存失败`))}async function K(e){await d.confirm(I(`@WORKBENCH:删除任务「{title}」及其所有子任务?`,{title:e.title}),I(`@WORKBENCH:确认`),{type:`warning`}),await fetch(`/api/workbench/tasks/${e.id}`,{method:`DELETE`}),_.value===e.id&&(_.value=null),W()}function q(e){_.value!==e.id&&(_.value=e.id,ie())}function J(){if(!v.value)return;let e={id:`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`,title:I(`@WORKBENCH:新子任务`),desc:``,status:`todo`,promptOverride:``};v.value.subtasks.push(e),X(!1)}function Y(e){v.value&&(v.value.subtasks=v.value.subtasks.filter(t=>t.id!==e.id),X(!1))}async function X(e){if(!v.value)return!1;let t=await fetch(`/api/workbench/tasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(v.value)}).then(e=>e.json());return t.success?(e&&m.success(I(`@WORKBENCH:已保存拆分`)),await W(),!0):(m.error(t.error||I(`@WORKBENCH:保存失败`)),!1)}async function Se(){await X(!0)}let Z=S(!1);function Ce(){if(v.value){if(!(v.value.title||``).trim()){m.warning(I(`@WORKBENCH:请先填写任务标题`));return}Z.value=!0}}function we(e){if(v.value){for(let t of e)v.value.subtasks.push({id:`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`,title:t.title,desc:t.desc||``,status:`todo`,promptOverride:``,attachments:[]});m.success(I(`@WORKBENCH:已生成 {n} 个子任务,请审阅后保存`,{n:e.length}))}}async function Te(e){if(!e.subtasks||e.subtasks.length===0){m.warning(I(`@WORKBENCH:请先拆分任务`));return}if(v.value&&v.value.id===e.id){let t=i.value.find(t=>t.id===e.id);if((!t||t.title!==v.value.title||t.desc!==v.value.desc||JSON.stringify(t.subtasks)!==JSON.stringify(v.value.subtasks)||t.promptId!==v.value.promptId)&&!await X(!1))return}let t=await fetch(`/api/workbench/tasks/${e.id}/run`,{method:`POST`}).then(e=>e.json());t.success?m.success(t.message||I(`@WORKBENCH:已加入执行队列`)):m.error(t.error||I(`@WORKBENCH:执行失败`))}function Tt(e){switch(e){case`todo`:return I(`@WORKBENCH:待执行`);case`running`:return I(`@WORKBENCH:执行中`);case`done`:return I(`@WORKBENCH:已完成`);case`error`:return I(`@WORKBENCH:出错`);case`cancelled`:return I(`@WORKBENCH:已取消`);case`pending`:return I(`@WORKBENCH:排队中`);default:return e}}function Et(e){switch(e){case`running`:return`var(--color-primary)`;case`done`:return`#22c55e`;case`error`:return`#ef4444`;case`cancelled`:return`#9ca3af`;case`pending`:return`#f59e0b`;default:return`var(--text-tertiary)`}}async function Dt(e){try{await d.confirm(I(`@WORKBENCH:确认停止执行?已输出的内容会保留。`),I(`@WORKBENCH:停止执行`),{confirmButtonText:I(`@WORKBENCH:停止`),cancelButtonText:I(`@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?m.success(I(`@WORKBENCH:已发送停止信号`)):m.error(t.error||I(`@WORKBENCH:停止失败`))}l(async()=>{await Promise.all([ue(),W(),de()]),fe()}),o(()=>{V&&=(V.close(),null)});let Ot=S({});function kt(e){return t=>{Ot.value[e]=t}}T(()=>s.value.map(e=>({id:e.id,len:(e.output||``).length})),e=>{e.forEach(({id:e})=>{let t=s.value.find(t=>t.id===e);if(!t||t.status!==`running`)return;let n=Ot.value[t.subId];n&&y(()=>{n.scrollTop=n.scrollHeight})})},{deep:!0,flush:`post`});function At(e){return e?e.length<=St?e:`${I(`@WORKBENCH:…(前文已截断)`)}\n${e.slice(-65536)}`:``}let jt=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`]),Mt=S({}),Q=S(null);function Nt(e){return!!Mt.value[e]}function Pt(e,t){if(e instanceof File)return e;let n=e.type||`application/octet-stream`;return new File([e],t,{type:n})}function Ft(e){return e.kind===`task`?`task-${e.task?.id??``}`:`sub-${e.sub.id}`}function It(e){let t=e.kind===`task`?e.task?.attachments:e.sub.attachments;return Array.isArray(t)?t:[]}function Lt(e,t){e.kind===`task`?e.task&&(e.task.attachments=t):e.sub.attachments=t}function Rt(e){return e.kind===`task`?`/api/workbench/tasks/${e.task?.id??``}/attachments`:`/api/workbench/subtasks/${e.sub.id}/attachments`}function zt(e,t){return e.kind===`task`?`/api/workbench/tasks/${e.task?.id??``}/attachments/${t}`:`/api/workbench/subtasks/${e.sub.id}/attachments/${t}`}function $(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 r=(n.type.split(`/`)[1]||`png`).replace(`jpeg`,`jpg`);Vt(t,Pt(n,`paste-${new Date().toISOString().replace(/[:.]/g,`-`)}.${r}`))}return}let r=Array.from(e.clipboardData.items).filter(e=>e.kind===`file`&&!e.type.startsWith(`image/`));if(r.length>0){e.preventDefault();for(let e of r){let n=e.getAsFile();n&&Vt(t,Pt(n,n.name||`pasted-file`))}}}function Bt(e,t){Q.value=null,Array.from(e.dataTransfer?.files||[]).forEach(e=>Vt(t,e))}async function Vt(e,t){if(t.size>wt){m.error(`「${t.name}」${I(`@WORKBENCH:超过 5MB 限制`)}`);return}if(!jt.has(t.type)&&!t.name.match(/\.(png|jpg|jpeg|gif|webp|bmp|svg|pdf|txt|md|markdown|csv|json|log)$/i)){m.error(`${I(`@WORKBENCH:不支持的文件类型`)}(${t.name})`);return}if(It(e).length>=9){m.error(I(`@WORKBENCH:单个任务最多 9 个附件`));return}let n=Ft(e);Mt.value[n]=!0;try{let n=await fetch(Rt(e),{method:`POST`,headers:{"Content-Type":`application/octet-stream`,"X-Original-Name":t.name,"X-Mime-Type":t.type||`application/octet-stream`},body:t}).then(e=>e.json());if(n.success){let r=It(e);r.push(n.attachment),Lt(e,r),m.success(`${I(`@WORKBENCH:已添加:`)}${t.name}`)}else m.error(n.error||I(`@WORKBENCH:上传失败`))}catch(e){m.error(I(`@WORKBENCH:上传失败`)+`:`+(e&&e.message||e))}finally{Mt.value[n]=!1}}async function Ht(e,t){try{await d.confirm(I(`@WORKBENCH:删除附件「{name}」?`,{name:t.originalName}),I(`@WORKBENCH:确认`),{type:`warning`})}catch{return}let n=await fetch(zt(e,t.id),{method:`DELETE`}).then(e=>e.json());n.success?(Lt(e,It(e).filter(e=>e.id!==t.id)),m.success(I(`@WORKBENCH:已删除`))):m.error(n.error||I(`@WORKBENCH:删除失败`))}function Ut(e){let t=document.createElement(`input`);t.type=`file`,t.accept=Ct,t.multiple=!0,t.onchange=()=>{Array.from(t.files||[]).forEach(t=>Vt(e,t))},t.click()}let Wt=new Set([`png`,`jpg`,`jpeg`,`gif`,`webp`,`bmp`,`svg`]);function Gt(e){return Wt.has(String(e.ext||``).toLowerCase())}function Kt(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(2)} MB`}return(e,o)=>{let s=te,l=re,d=ae,m=x,y=ne,S=w,ee=k;return c(),a(`div`,De,[u(`aside`,Oe,[u(`div`,ke,[u(`h3`,null,N(j(I)(`@WORKBENCH:任务列表`)),1),F(s,{size:`small`,type:`primary`,onClick:G},{default:M(()=>[g(N(j(I)(`@WORKBENCH:新建任务`)),1)]),_:1})]),u(`ul`,Ae,[(c(!0),a(p,null,b(i.value,e=>(c(),a(`li`,{key:e.id,class:C([`wb-task-item`,{active:e.id===_.value}]),onClick:t=>q(e)},[u(`div`,Me,N(e.title),1),u(`div`,Ne,[u(`span`,null,N(e.subtasks?.length||0)+` `+N(j(I)(`@WORKBENCH:个子任务`)),1),u(`button`,{class:`wb-task-item__del`,onClick:r(t=>K(e),[`stop`]),title:j(I)(`@WORKBENCH:删除`)},`×`,8,Pe)])],10,je))),128)),i.value.length===0?(c(),a(`li`,Fe,N(j(I)(`@WORKBENCH:暂无任务,点击右上角新建`)),1)):h(``,!0)]),o[23]||=u(`div`,{class:`wb-sidebar__divider`},null,-1),u(`div`,Ie,[u(`h3`,null,N(j(I)(`@WORKBENCH:预置提示词`)),1),F(s,{size:`small`,onClick:pe},{default:M(()=>[g(N(j(I)(`@WORKBENCH:新建`)),1)]),_:1})]),u(`ul`,Le,[(c(!0),a(p,null,b(t.value,e=>(c(),a(`li`,{key:e.id,class:`wb-prompt-item`},[u(`span`,{class:`wb-prompt-item__name`,onClick:t=>me(e),title:e.content},N(e.name),9,Re),u(`button`,{class:`wb-prompt-item__del`,onClick:t=>be(e)},`×`,8,ze)]))),128)),t.value.length===0?(c(),a(`li`,Be,N(j(I)(`@WORKBENCH:暂无提示词`)),1)):h(``,!0)])]),u(`section`,Ve,[v.value?(c(),a(p,{key:1},[u(`div`,Ue,[A(u(`input`,{class:`wb-input wb-input--title`,"onUpdate:modelValue":o[0]||=e=>v.value.title=e,placeholder:j(I)(`@WORKBENCH:任务标题`)},null,8,We),[[P,v.value.title]]),A(u(`select`,{class:`wb-select`,"onUpdate:modelValue":o[1]||=e=>v.value.promptId=e},[u(`option`,Ge,N(j(I)(`@WORKBENCH:不绑定预置提示词`)),1),(c(!0),a(p,null,b(t.value,e=>(c(),a(`option`,{key:e.id,value:e.id},N(e.name),9,Ke))),128))],512),[[n,v.value.promptId]]),F(s,{type:`info`,plain:``,disabled:!v.value.title||!v.value.title.trim(),onClick:Ce},{default:M(()=>[g(N(j(I)(`@WORKBENCH:AI 拆分`)),1)]),_:1},8,[`disabled`]),F(s,{type:`primary`,loading:!1,onClick:o[2]||=e=>Te(v.value)},{default:M(()=>[g(N(j(I)(`@WORKBENCH:执行任务`)),1)]),_:1})]),A(u(`textarea`,{class:`wb-textarea`,"onUpdate:modelValue":o[3]||=e=>v.value.desc=e,placeholder:j(I)(`@WORKBENCH:任务描述(可选)`),rows:`3`,onPaste:o[4]||=e=>$(e,{kind:`task`,task:v.value})},null,40,qe),[[P,v.value.desc]]),F(Ee,{attachments:v.value.attachments||[],"is-image":Gt,"human-size":Kt,"is-uploading":Nt(`task-`+v.value.id),"is-paste-hover":Q.value===`task-`+v.value.id,"max-count":9,"on-pick":()=>Ut({kind:`task`,task:v.value}),"on-remove":e=>Ht({kind:`task`,task:v.value},e),onPaste:o[5]||=e=>$(e,{kind:`task`,task:v.value}),onDrop:o[6]||=r(e=>Bt(e,{kind:`task`,task:v.value}),[`prevent`]),onDragover:o[7]||=r(e=>Q.value=`task-`+v.value.id,[`prevent`]),onDragenter:o[8]||=r(e=>Q.value=`task-`+v.value.id,[`prevent`]),onDragleave:o[9]||=e=>Q.value=Q.value===`task-`+v.value.id?null:Q.value},null,8,[`attachments`,`is-uploading`,`is-paste-hover`,`on-pick`,`on-remove`]),u(`div`,Je,[u(`h4`,null,N(j(I)(`@WORKBENCH:子任务拆分`)),1),u(`div`,null,[F(s,{size:`small`,onClick:J},{default:M(()=>[g(`+ `+N(j(I)(`@WORKBENCH:添加子任务`)),1)]),_:1}),F(s,{size:`small`,type:se.value?`primary`:`default`,onClick:Se},{default:M(()=>[g(N(j(I)(`@WORKBENCH:保存拆分`))+` `,1),se.value?(c(),a(`span`,Ye,N(L.value.size),1)):h(``,!0)]),_:1},8,[`type`])])]),u(`ul`,Xe,[(c(!0),a(p,null,b(v.value.subtasks,e=>(c(),a(`li`,{key:e.id,class:C([`wb-sub-item`,{"is-dirty":L.value.has(e.id)}])},[o[24]||=g(` > `,-1),u(`div`,Ze,[u(`span`,{class:`wb-sub-item__status`,style:O({background:Et(e.status)})},N(Tt(e.status)),5),A(u(`input`,{class:`wb-input`,"onUpdate:modelValue":t=>e.title=t,placeholder:j(I)(`@WORKBENCH:子任务标题`),onPaste:t=>$(t,{kind:`sub`,task:v.value,sub:e})},null,40,Qe),[[P,e.title]]),L.value.has(e.id)?(c(),a(`span`,{key:0,class:`wb-sub-item__dirty`,title:j(I)(`@WORKBENCH:有未保存的更改`)},N(j(I)(`@WORKBENCH:未保存`)),9,$e)):h(``,!0),U(e.id)?(c(),a(`span`,{key:1,class:`wb-sub-item__pid`,title:j(I)(`@WORKBENCH:进程ID`)},` PID: `+N(U(e.id)?.pid),9,et)):h(``,!0),U(e.id)&&(U(e.id)?.status===`running`||U(e.id)?.status===`pending`)?(c(),a(`button`,{key:2,class:`wb-sub-item__stop`,title:j(I)(`@WORKBENCH:停止执行`),onClick:t=>Dt(U(e.id))},N(j(I)(`@WORKBENCH:停止`)),9,tt)):h(``,!0),u(`button`,{class:`wb-sub-item__del`,onClick:t=>Y(e)},`×`,8,nt)]),A(u(`textarea`,{class:`wb-textarea wb-textarea--sm`,"onUpdate:modelValue":t=>e.desc=t,placeholder:j(I)(`@WORKBENCH:子任务描述 / 独立提示词覆盖`),rows:`2`,onPaste:t=>$(t,{kind:`sub`,task:v.value,sub:e})},null,40,rt),[[P,e.desc]]),U(e.id)?(c(),a(`details`,{key:0,class:`wb-log-details`,open:U(e.id)?.status===`running`||U(e.id)?.status===`pending`},[u(`summary`,at,[U(e.id)?.status===`running`?(c(),a(`span`,ot,`● `+N(j(I)(`@WORKBENCH:正在执行…`)),1)):U(e.id)?.status===`pending`?(c(),a(`span`,st,N(j(I)(`@WORKBENCH:排队中…`)),1)):(c(),a(`span`,ct,N(j(I)(`@WORKBENCH:查看执行日志`)),1)),u(`span`,lt,N((U(e.id)?.output||``).length)+` `+N(j(I)(`@WORKBENCH:字符`)),1)]),U(e.id)?.prompt?(c(),a(`details`,ut,[u(`summary`,dt,[u(`span`,ft,N(j(I)(`@WORKBENCH:用户提示词`)),1),u(`span`,pt,N((U(e.id)?.prompt||``).length)+` `+N(j(I)(`@WORKBENCH:字符`)),1)]),u(`pre`,mt,N(U(e.id)?.prompt),1)])):h(``,!0),U(e.id)?.thinking?(c(),a(`details`,ht,[u(`summary`,gt,[u(`span`,_t,N(j(I)(`@WORKBENCH:Claude 思考`)),1),u(`span`,vt,N((U(e.id)?.thinking||``).length)+` `+N(j(I)(`@WORKBENCH:字符`)),1)]),u(`pre`,yt,N(U(e.id)?.thinking),1)])):h(``,!0),u(`pre`,{ref_for:!0,ref:kt(e.id),class:`wb-log-pre`},N(At(U(e.id)?.output)||j(I)(`@WORKBENCH:(暂无输出)`)),513)],8,it)):h(``,!0),F(Ee,{attachments:e.attachments||[],"is-image":Gt,"human-size":Kt,"is-uploading":Nt(`sub-`+e.id),"is-paste-hover":Q.value===e.id,"max-count":9,"on-pick":()=>Ut({kind:`sub`,task:v.value,sub:e}),"on-remove":t=>Ht({kind:`sub`,task:v.value,sub:e},t),onPaste:t=>$(t,{kind:`sub`,task:v.value,sub:e}),onDrop:r(t=>Bt(t,{kind:`sub`,task:v.value,sub:e}),[`prevent`]),onDragover:r(t=>Q.value=e.id,[`prevent`]),onDragenter:r(t=>Q.value=e.id,[`prevent`]),onDragleave:t=>Q.value=Q.value===e.id?null:Q.value},null,8,[`attachments`,`is-uploading`,`is-paste-hover`,`on-pick`,`on-remove`,`onPaste`,`onDrop`,`onDragover`,`onDragenter`,`onDragleave`])],2))),128)),v.value.subtasks.length===0?(c(),a(`li`,bt,N(j(I)(`@WORKBENCH:暂无子任务,点击上方按钮添加`)),1)):h(``,!0)])],64)):(c(),a(`div`,He,[u(`p`,null,N(j(I)(`@WORKBENCH:左侧选择任务,或新建一个任务开始`)),1)]))]),F(y,{modelValue:R.visible,"onUpdate:modelValue":o[13]||=e=>R.visible=e,title:R.editing?j(I)(`@WORKBENCH:编辑提示词`):j(I)(`@WORKBENCH:新建提示词`),width:`640px`},{footer:M(()=>[F(s,{onClick:o[12]||=e=>R.visible=!1},{default:M(()=>[g(N(j(I)(`@WORKBENCH:取消`)),1)]),_:1}),F(s,{type:`primary`,onClick:ve},{default:M(()=>[g(N(j(I)(`@WORKBENCH:保存`)),1)]),_:1})]),default:M(()=>[F(m,{"label-position":`top`},{default:M(()=>[F(d,{label:j(I)(`@WORKBENCH:名称`)},{default:M(()=>[F(l,{modelValue:R.name,"onUpdate:modelValue":o[10]||=e=>R.name=e,placeholder:j(I)(`@WORKBENCH:如:代码审查 / 写测试`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),F(d,null,{default:M(()=>[u(`div`,xt,[F(s,{type:`primary`,plain:``,loading:R.aiLoading,onClick:he},{default:M(()=>[g(N(j(I)(`@WORKBENCH:AI 生成项目架构说明`)),1)]),_:1},8,[`loading`]),F(s,{onClick:ge},{default:M(()=>[g(N(j(I)(`@WORKBENCH:编辑指令`)),1)]),_:1})])]),_:1}),F(d,{label:j(I)(`@WORKBENCH:内容`)},{default:M(()=>[F(l,{modelValue:R.content,"onUpdate:modelValue":o[11]||=e=>R.content=e,type:`textarea`,rows:10,placeholder:j(I)(`@WORKBENCH:可用变量:`)+`{{task.title}} {{task.desc}} {{sub.title}} {{sub.desc}} {{repo.path}} {{branch}}`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1},8,[`modelValue`,`title`]),F(y,{modelValue:z.visible,"onUpdate:modelValue":o[16]||=e=>z.visible=e,title:j(I)(`@WORKBENCH:编辑生成指令`),width:`720px`,"append-to-body":``},{footer:M(()=>[F(s,{onClick:o[15]||=e=>z.visible=!1},{default:M(()=>[g(N(j(I)(`@WORKBENCH:取消`)),1)]),_:1}),F(s,{type:`primary`,loading:z.saving,onClick:_e},{default:M(()=>[g(N(j(I)(`@WORKBENCH:保存`)),1)]),_:1},8,[`loading`])]),default:M(()=>[F(m,{"label-position":`top`},{default:M(()=>[F(d,{label:j(I)(`@WORKBENCH:指令内容`)},{default:M(()=>[F(l,{modelValue:z.text,"onUpdate:modelValue":o[14]||=e=>z.text=e,type:`textarea`,rows:18,placeholder:j(I)(`@WORKBENCH:指令内容`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1},8,[`modelValue`,`title`]),F(y,{modelValue:B.visible,"onUpdate:modelValue":o[21]||=e=>B.visible=e,title:B.editing?j(I)(`@WORKBENCH:编辑任务`):j(I)(`@WORKBENCH:新建任务`),width:`560px`},{footer:M(()=>[F(s,{onClick:o[20]||=e=>B.visible=!1},{default:M(()=>[g(N(j(I)(`@WORKBENCH:取消`)),1)]),_:1}),F(s,{type:`primary`,onClick:xe},{default:M(()=>[g(N(j(I)(`@WORKBENCH:保存`)),1)]),_:1})]),default:M(()=>[F(m,{"label-position":`top`},{default:M(()=>[F(d,{label:j(I)(`@WORKBENCH:标题`)},{default:M(()=>[F(l,{modelValue:B.title,"onUpdate:modelValue":o[17]||=e=>B.title=e},null,8,[`modelValue`])]),_:1},8,[`label`]),F(d,{label:j(I)(`@WORKBENCH:描述`)},{default:M(()=>[F(l,{modelValue:B.desc,"onUpdate:modelValue":o[18]||=e=>B.desc=e,type:`textarea`,rows:3},null,8,[`modelValue`])]),_:1},8,[`label`]),F(d,{label:j(I)(`@WORKBENCH:预置提示词`)},{default:M(()=>[F(ee,{modelValue:B.promptId,"onUpdate:modelValue":o[19]||=e=>B.promptId=e,clearable:``,placeholder:j(I)(`@WORKBENCH:不绑定`),style:{width:`100%`}},{default:M(()=>[(c(!0),a(p,null,b(t.value,e=>(c(),f(S,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1},8,[`modelValue`,`title`]),v.value?(c(),f(ye,{key:0,modelValue:Z.value,"onUpdate:modelValue":o[22]||=e=>Z.value=e,title:v.value.title,desc:v.value.desc,"task-id":v.value.id,"prompt-id":v.value.promptId,onConfirm:we},null,8,[`modelValue`,`title`,`desc`,`task-id`,`prompt-id`])):h(``,!0)])}}}),[[`__scopeId`,`data-v-8a637600`]]);export{Tt as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ai-split-status[data-v-15311727]{align-items:center;gap:var(--spacing-base);margin-bottom:var(--spacing-md);color:var(--el-color-primary);font-size:13px;display:flex}.ai-split-status.is-error[data-v-15311727]{color:var(--el-color-danger)}.ai-split-status .is-loading[data-v-15311727]{animation:2s linear infinite rotating-15311727}@keyframes rotating-15311727{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ai-split-tabs[data-v-15311727]{margin-top:-8px}.ai-split-tab-count[data-v-15311727]{color:var(--text-tertiary);font-variant-numeric:tabular-nums;margin-left:4px;font-size:11px}.ai-split-prompt-actions[data-v-15311727]{justify-content:flex-end;margin-bottom:8px;display:flex}.ai-split-prompt-editor[data-v-15311727]{flex-direction:column;gap:8px;margin-bottom:12px;display:flex}.ai-split-prompt-editor__actions[data-v-15311727]{justify-content:flex-end;gap:8px;display:flex}.ai-split-subhead[data-v-15311727]{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.3px;margin:12px 0 4px;font-size:12px;font-weight:600}.ai-split-pre[data-v-15311727]{background:var(--bg-code);color:var(--text-primary);max-height:280px;font-family:var(--font-mono,ui-monospace, monospace);white-space:pre-wrap;word-break:break-word;border-radius:4px;margin:0;padding:10px 12px;font-size:12px;line-height:1.6;overflow:auto}.ai-split-pre--think[data-v-15311727]{color:var(--text-secondary);background:#8b5cf60f;border-left:2px solid #8b5cf673;font-style:italic}.ai-split-empty[data-v-15311727]{text-align:center;color:var(--text-tertiary);padding:32px;font-size:13px}.ai-split-list[data-v-15311727]{flex-direction:column;gap:8px;max-height:360px;margin:0;padding:0;list-style:none;display:flex;overflow:auto}.ai-split-list__item[data-v-15311727]{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:4px;gap:10px;padding:10px 12px;display:flex}.ai-split-list__no[data-v-15311727]{background:var(--el-color-primary);color:#fff;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:12px;font-weight:600;display:flex}.ai-split-list__body[data-v-15311727]{flex:1;min-width:0}.ai-split-list__title[data-v-15311727]{color:var(--text-primary);margin-bottom:4px;font-size:13px;font-weight:600}.ai-split-list__desc[data-v-15311727]{color:var(--text-secondary);white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.5}.wb-attachments{border:1px solid var(--border-color);border-radius:var(--radius-sm,4px);background:var(--bg-subtle,var(--bg-container));flex-shrink:0;margin-top:6px;transition:border-color .15s,background .15s;overflow:hidden}.wb-attachments.is-paste-hover{border-color:var(--color-primary);box-shadow:inset 0 0 0 1px var(--color-primary);background:#3b82f60f}.wb-attachments__paste-hint{background:var(--color-primary);color:#fff;text-align:center;border-top:1px solid var(--border-color);padding:4px 10px;font-size:12px}.wb-attachments__head{color:var(--text-secondary);border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:6px 10px;font-size:12px;display:flex}.wb-attachments__label{align-items:center;gap:6px;display:inline-flex}.wb-attachments__count{font-variant-numeric:tabular-nums;color:var(--text-tertiary);font-size:11px}.wb-attachments__add{border:1px solid var(--border-color);background:var(--bg-container);color:var(--text-primary);border-radius:var(--radius-sm,4px);cursor:pointer;padding:3px 10px;font-size:12px;transition:background .15s}.wb-attachments__add:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary);background:#3b82f614}.wb-attachments__add:disabled{opacity:.5;cursor:not-allowed}.wb-attachments__list{flex-wrap:wrap;gap:4px;margin:0;padding:4px;list-style:none;display:flex}.wb-attachment{border:1px solid var(--border-color);border-radius:var(--radius-sm,4px);background:var(--bg-container);align-items:center;gap:6px;min-width:0;max-width:240px;padding:4px 6px 4px 4px;transition:border-color .15s,box-shadow .15s;display:flex}.wb-attachment:hover{border-color:var(--color-primary,#3b82f6);box-shadow:0 0 0 2px #3b82f61f}.wb-attachment__preview{min-width:0;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;flex:1;align-items:center;gap:6px;padding:0;display:flex}.wb-attachment__preview:focus-visible{outline:2px solid var(--color-primary,#3b82f6);outline-offset:2px;border-radius:3px}.wb-attachment__icon{background:var(--bg-code);width:32px;height:32px;color:var(--text-tertiary);letter-spacing:.5px;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;font-size:10px;font-weight:600;display:flex;overflow:hidden}.wb-attachment__icon--img{background:var(--bg-code)}.wb-attachment__icon img{object-fit:cover;width:100%;height:100%}.wb-attachment__meta{flex:1;min-width:0}.wb-attachment__name{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.wb-attachment__sub{color:var(--text-tertiary);white-space:nowrap;text-overflow:ellipsis;font-size:10px;overflow:hidden}.wb-attachment__del{color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;border-radius:3px;flex-shrink:0;width:20px;height:20px;font-size:16px;line-height:1}.wb-attachment__del:hover{color:#ef4444;background:#ef444414}.workbench[data-v-8a637600]{background:var(--bg-container);height:100%;color:var(--text-primary);display:flex}.wb-sidebar[data-v-8a637600]{border-right:1px solid var(--border-color);background:var(--bg-surface);flex-shrink:0;width:260px;padding:12px;overflow-y:auto}.wb-sidebar__header[data-v-8a637600]{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.wb-sidebar__header h3[data-v-8a637600]{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin:0;font-size:13px;font-weight:600}.wb-sidebar__divider[data-v-8a637600]{background:var(--border-color);height:1px;margin:16px 0}.wb-task-list[data-v-8a637600],.wb-prompt-list[data-v-8a637600]{margin:0;padding:0;list-style:none}.wb-task-item[data-v-8a637600]{border-radius:var(--radius-md);cursor:pointer;border:1px solid #0000;margin-bottom:4px;padding:10px 12px;transition:background .15s,border-color .15s}.wb-task-item[data-v-8a637600]:hover{background:var(--bg-hover)}.wb-task-item.active[data-v-8a637600]{border-color:var(--color-primary);background:#3b82f61a}.wb-task-item__title[data-v-8a637600]{margin-bottom:2px;font-size:13px;font-weight:500}.wb-task-item__meta[data-v-8a637600]{color:var(--text-tertiary);justify-content:space-between;align-items:center;font-size:11px;display:flex}.wb-task-item__del[data-v-8a637600],.wb-prompt-item__del[data-v-8a637600],.wb-sub-item__del[data-v-8a637600]{color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:16px;line-height:1}.wb-task-item__del[data-v-8a637600]:hover,.wb-prompt-item__del[data-v-8a637600]:hover,.wb-sub-item__del[data-v-8a637600]:hover{color:#ef4444}.wb-prompt-item[data-v-8a637600]{border-radius:var(--radius-sm);justify-content:space-between;align-items:center;padding:6px 8px;font-size:12px;display:flex}.wb-prompt-item[data-v-8a637600]:hover{background:var(--bg-hover)}.wb-prompt-item__name[data-v-8a637600]{cursor:pointer;white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.wb-empty[data-v-8a637600]{text-align:center;color:var(--text-tertiary);padding:16px 8px;font-size:12px}.wb-split[data-v-8a637600]{flex-direction:column;flex:1;gap:12px;min-height:0;padding:16px 20px;display:flex;overflow:hidden}.wb-placeholder[data-v-8a637600]{color:var(--text-tertiary);flex:1;justify-content:center;align-items:center;font-size:13px;display:flex}.wb-split__header[data-v-8a637600]{flex-shrink:0;align-items:center;gap:8px;display:flex}.wb-input[data-v-8a637600]{background:var(--bg-base);border:1px solid var(--border-color);color:var(--text-primary);border-radius:var(--radius-md);outline:none;padding:6px 10px;font-size:13px}.wb-input[data-v-8a637600]:focus{border-color:var(--color-primary)}.wb-input--title[data-v-8a637600]{flex:1;font-size:16px;font-weight:600}.wb-select[data-v-8a637600]{background:var(--bg-base);border:1px solid var(--border-color);color:var(--text-primary);border-radius:var(--radius-md);padding:6px 8px;font-size:13px}.wb-textarea[data-v-8a637600]{background:var(--bg-base);border:1px solid var(--border-color);color:var(--text-primary);border-radius:var(--radius-md);resize:vertical;box-sizing:border-box;outline:none;flex-shrink:0;width:100%;padding:8px 10px;font-family:inherit;font-size:13px}.wb-textarea[data-v-8a637600]:focus{border-color:var(--color-primary)}.wb-textarea--sm[data-v-8a637600]{min-height:40px}.wb-split__sub-header[data-v-8a637600]{flex-shrink:0;justify-content:space-between;align-items:center;margin-top:8px;display:flex}.wb-split__sub-header h4[data-v-8a637600]{color:var(--text-secondary);margin:0;font-size:13px;font-weight:600}.wb-sub-list[data-v-8a637600]{flex-direction:column;flex:1;gap:8px;min-height:0;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.wb-sub-item[data-v-8a637600]{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:10px;transition:border-color .15s,box-shadow .15s}.wb-sub-item.is-dirty[data-v-8a637600]{background:#f59e0b08;border-color:#f59e0b8c;box-shadow:inset 3px 0 #f59e0b}.wb-sub-item__dirty[data-v-8a637600]{color:#b45309;letter-spacing:.2px;background:#f59e0b26;border-radius:8px;flex-shrink:0;align-items:center;gap:3px;padding:2px 7px;font-size:10px;font-weight:600;display:inline-flex}.wb-sub-item__dirty[data-v-8a637600]:before{content:"";background:#f59e0b;border-radius:50%;width:5px;height:5px;display:inline-block}.wb-dirty-badge[data-v-8a637600]{color:#fff;vertical-align:middle;background:#ef4444;border-radius:8px;justify-content:center;align-items:center;min-width:16px;height:16px;margin-left:6px;padding:0 5px;font-size:10px;font-weight:700;line-height:1;display:inline-flex}.wb-sub-item__row[data-v-8a637600]{align-items:center;gap:8px;margin-bottom:6px;display:flex}.wb-sub-item__status[data-v-8a637600]{color:#fff;border-radius:10px;flex-shrink:0;padding:2px 8px;font-size:11px}.wb-sub-item__pid[data-v-8a637600]{color:var(--text-tertiary);flex-shrink:0;font-family:ui-monospace,monospace;font-size:11px}.wb-sub-item__stop[data-v-8a637600]{color:#ef4444;cursor:pointer;background:#ef444414;border:1px solid #ef444480;border-radius:3px;flex-shrink:0;padding:2px 8px;font-size:11px;font-weight:600;transition:background .15s,color .15s}.wb-sub-item__stop[data-v-8a637600]:hover{color:#fff;background:#ef4444;border-color:#ef4444}.wb-sub-item__row .wb-input[data-v-8a637600]{flex:1}.wb-log-details[data-v-8a637600]{border:1px solid var(--border-color);border-radius:var(--radius-sm,4px);background:var(--bg-code);margin-top:6px;overflow:hidden}.wb-log-summary[data-v-8a637600]{cursor:pointer;color:var(--text-secondary);-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:8px;padding:6px 10px;font-size:12px;list-style:none;display:flex}.wb-log-summary[data-v-8a637600]::-webkit-details-marker{display:none}.wb-log-summary[data-v-8a637600]:hover{background:#3b82f60f}.wb-log-summary__meta[data-v-8a637600]{color:var(--text-tertiary);font-variant-numeric:tabular-nums;font-size:11px}.wb-log-pre[data-v-8a637600]{max-height:240px;font-family:var(--font-mono,ui-monospace, monospace);color:var(--text-primary);background:var(--bg-code);white-space:pre-wrap;word-break:break-word;border-top:1px solid var(--border-color);margin:0;padding:8px 10px;font-size:12px;line-height:1.55;overflow:auto}.wb-log-section[data-v-8a637600],.wb-log-section[data-v-8a637600]:first-of-type{border-top:1px solid var(--border-color)}.wb-log-section__summary[data-v-8a637600]{cursor:pointer;color:var(--text-secondary);-webkit-user-select:none;user-select:none;background:var(--bg-subtle,var(--bg-container));justify-content:space-between;align-items:center;gap:8px;padding:5px 10px;font-size:11px;list-style:none;display:flex}.wb-log-section__summary[data-v-8a637600]::-webkit-details-marker{display:none}.wb-log-section__summary[data-v-8a637600]:hover{background:#3b82f60f}.wb-log-section__tag[data-v-8a637600]{letter-spacing:.3px;text-transform:uppercase;border-radius:3px;padding:1px 6px;font-size:10px;font-weight:600;display:inline-block}.wb-log-section__tag--user[data-v-8a637600]{color:#b45309;background:#f59e0b2e}.wb-log-section__tag--think[data-v-8a637600]{color:#6d28d9;background:#8b5cf62e}.wb-log-section__count[data-v-8a637600]{color:var(--text-tertiary);font-variant-numeric:tabular-nums;font-size:10px}.wb-log-section__pre[data-v-8a637600]{max-height:200px;font-family:var(--font-mono,ui-monospace, monospace);white-space:pre-wrap;word-break:break-word;margin:0;padding:8px 10px;font-size:11px;line-height:1.55;overflow:auto}.wb-log-section__pre--user[data-v-8a637600]{color:var(--text-primary);background:#f59e0b0f;border-left:2px solid #f59e0b73}.wb-log-section__pre--think[data-v-8a637600]{color:var(--text-secondary);background:#8b5cf60f;border-left:2px solid #8b5cf673;font-style:italic}.wb-attachments[data-v-8a637600]{border:1px solid var(--border-color);border-radius:var(--radius-sm,4px);background:var(--bg-subtle,var(--bg-container));flex-shrink:0;margin-top:6px;transition:border-color .15s,background .15s;overflow:hidden}.wb-attachments.is-paste-hover[data-v-8a637600]{border-color:var(--color-primary);box-shadow:inset 0 0 0 1px var(--color-primary);background:#3b82f60f}.wb-attachments__paste-hint[data-v-8a637600]{background:var(--color-primary);color:#fff;text-align:center;border-top:1px solid var(--border-color);padding:4px 10px;font-size:12px}.wb-attachments__head[data-v-8a637600]{color:var(--text-secondary);border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:6px 10px;font-size:12px;display:flex}.wb-attachments__label[data-v-8a637600]{align-items:center;gap:6px;display:inline-flex}.wb-attachments__count[data-v-8a637600]{font-variant-numeric:tabular-nums;color:var(--text-tertiary);font-size:11px}.wb-attachments__add[data-v-8a637600]{border:1px solid var(--border-color);background:var(--bg-container);color:var(--text-primary);border-radius:var(--radius-sm,4px);cursor:pointer;padding:3px 10px;font-size:12px;transition:background .15s}.wb-attachments__add[data-v-8a637600]:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary);background:#3b82f614}.wb-attachments__add[data-v-8a637600]:disabled{opacity:.5;cursor:not-allowed}.wb-attachments__list[data-v-8a637600]{flex-wrap:wrap;gap:4px;margin:0;padding:4px;list-style:none;display:flex}.wb-attachment[data-v-8a637600]{border:1px solid var(--border-color);border-radius:var(--radius-sm,4px);background:var(--bg-container);align-items:center;gap:6px;min-width:0;max-width:240px;padding:4px 6px 4px 4px;display:flex}.wb-attachment__icon[data-v-8a637600]{background:var(--bg-code);width:32px;height:32px;color:var(--text-tertiary);letter-spacing:.5px;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;font-size:10px;font-weight:600;display:flex;overflow:hidden}.wb-attachment__icon--img[data-v-8a637600]{background:var(--bg-code)}.wb-attachment__icon img[data-v-8a637600]{object-fit:cover;width:100%;height:100%}.wb-attachment__meta[data-v-8a637600]{flex:1;min-width:0}.wb-attachment__name[data-v-8a637600]{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.wb-attachment__sub[data-v-8a637600]{color:var(--text-tertiary);white-space:nowrap;text-overflow:ellipsis;font-size:10px;overflow:hidden}.wb-attachment__del[data-v-8a637600]{color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;border-radius:3px;flex-shrink:0;width:20px;height:20px;font-size:16px;line-height:1}.wb-attachment__del[data-v-8a637600]:hover{color:#ef4444;background:#ef444414}
|