zen-gitsync 2.18.7 → 2.18.9

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 (76) hide show
  1. package/package.json +4 -1
  2. package/src/cli/ai/agent.js +7 -0
  3. package/src/cli/ai/runtime.test.js +22 -1
  4. package/src/cli/ai/tools.js +1 -1
  5. package/src/cli/ai/tools.test.js +1 -1
  6. package/src/cli/ai/transport.js +8 -3
  7. package/src/config.js +48 -6
  8. package/src/mcp/tools/workbench.js +1 -1
  9. package/src/ui/public/assets/{AgentView-am93H7C2.css → AgentView-CV_8sYX6.css} +1 -1
  10. package/src/ui/public/assets/AgentView-DxmnqJxE.js +1 -0
  11. package/src/ui/public/assets/{AppVersionBadge-D7X53Bf1.js → AppVersionBadge-C4OhcUi8.js} +2 -2
  12. package/src/ui/public/assets/{BranchSelector-yXxfIs57.js → BranchSelector-CrLieQyJ.js} +1 -1
  13. package/src/ui/public/assets/{CommitForm-C8Ez91_c.js → CommitForm-KGQisnPQ.js} +2 -2
  14. package/src/ui/public/assets/{CommonDialog-BUuLsgNS.js → CommonDialog-j_53ORvj.js} +1 -1
  15. package/src/ui/public/assets/CopySessionButton-y5Rzmact.js +20 -0
  16. package/src/ui/public/assets/EditorView-CkZb2kw5.js +1 -0
  17. package/src/ui/public/assets/{EditorView-BUiVsBv7.css → EditorView-Ims2BUK_.css} +1 -1
  18. package/src/ui/public/assets/{FlowExecutionViewer-BuU5kQG8.js → FlowExecutionViewer-CQ-TPhwF.js} +1 -1
  19. package/src/ui/public/assets/{FlowOrchestrationWorkspace-CTBEooj5.js → FlowOrchestrationWorkspace-BMQSVm3V.js} +1 -1
  20. package/src/ui/public/assets/{LogList-Bq5aLoA-.js → LogList-BxH6QNlK.js} +4 -4
  21. package/src/ui/public/assets/{MindmapView-CSysrruz.js → MindmapView-D9_qjJsR.js} +1 -1
  22. package/src/ui/public/assets/{MonitorView-Cgf5zRxT.js → MonitorView-z_fsnE8Y.js} +1 -1
  23. package/src/ui/public/assets/{ProjectStartupButton-CrLWTK20.js → ProjectStartupButton-CFB_JpYG.js} +1 -1
  24. package/src/ui/public/assets/RecentDirectoriesChat-7fzSkSmc.css +1 -0
  25. package/src/ui/public/assets/RecentDirectoriesChat-BYI8lkjQ.js +1 -0
  26. package/src/ui/public/assets/{RemoteManagerDialog-CJZFzQPc.js → RemoteManagerDialog-DXDcN8e7.js} +1 -1
  27. package/src/ui/public/assets/{RemoteRepoCard-aSx1ikZ8.js → RemoteRepoCard-C_TYGsXi.js} +1 -1
  28. package/src/ui/public/assets/{SourceMapView-DEljf14g.js → SourceMapView-D6cSweDt.js} +1 -1
  29. package/src/ui/public/assets/{SvgIcon-Du5MOe8A.js → SvgIcon-5AlG3IfR.js} +1 -1
  30. package/src/ui/public/assets/{UserInputNode-oOQwaadU.js → UserInputNode-BKP869D6.js} +1 -1
  31. package/src/ui/public/assets/WorkbenchView-D4UDurhF.js +6 -0
  32. package/src/ui/public/assets/WorkbenchView-DogERhHQ.css +1 -0
  33. package/src/ui/public/assets/_plugin-vue_export-helper-Csn085FF.js +19 -0
  34. package/src/ui/public/assets/agentConversations-DyzaxUXm.js +10 -0
  35. package/src/ui/public/assets/configStore-DOaPZ6Mq.js +1 -0
  36. package/src/ui/public/assets/index-C7Y9odvZ.js +57 -0
  37. package/src/ui/public/assets/index-NYzaTfbS.css +1 -0
  38. package/src/ui/public/assets/useOrchestrator-C236G5P5.js +1 -0
  39. package/src/ui/public/index.html +6 -6
  40. package/src/ui/server/index.js +8 -0
  41. package/src/ui/server/routes/config.js +13 -0
  42. package/src/ui/server/routes/fileOpen.js +57 -1
  43. package/src/ui/server/routes/fileOpen.test.js +1 -1
  44. package/src/ui/server/routes/workbench/agentChat.js +106 -12
  45. package/src/ui/server/routes/workbench/agentChatExtensions.test.js +290 -0
  46. package/src/ui/server/routes/workbench/agentChatShared.test.js +148 -57
  47. package/src/ui/server/routes/workbench/agentEngines.js +8 -4
  48. package/src/ui/server/routes/workbench/agentExtensions.js +157 -0
  49. package/src/ui/server/routes/workbench/agentMarketplace.js +12 -0
  50. package/src/ui/server/routes/workbench/agentParity.test.js +16 -0
  51. package/src/ui/server/routes/workbench/agentRoutes.js +105 -8
  52. package/src/ui/server/routes/workbench/agentRoutes.test.js +141 -1
  53. package/src/ui/server/routes/workbench/chatPrompts.js +115 -0
  54. package/src/ui/server/routes/workbench/chatPrompts.test.js +114 -0
  55. package/src/ui/server/routes/workbench/executorModels.js +30 -5
  56. package/src/ui/server/routes/workbench/executorModels.test.js +16 -4
  57. package/src/ui/server/routes/workbench/index.js +1 -1
  58. package/src/ui/server/routes/workbench/jobActivity.js +3 -3
  59. package/src/ui/server/routes/workbench/jobActivity.test.js +1 -0
  60. package/src/ui/server/routes/workbench/runExternalTurn.js +22 -25
  61. package/src/ui/server/routes/workbench/runExternalTurn.test.js +34 -0
  62. package/src/ui/server/routes/workbench/taskRunner.codebuddy.test.js +275 -0
  63. package/src/ui/server/routes/workbench/taskRunner.js +311 -24
  64. package/src/ui/server/routes/workbench/taskRunner.opencode.test.js +2 -1
  65. package/src/ui/public/assets/AgentView-BlG0PdkI.js +0 -1
  66. package/src/ui/public/assets/CopySessionButton-Do4vHJm6.js +0 -20
  67. package/src/ui/public/assets/EditorView-DK2dYRVb.js +0 -1
  68. package/src/ui/public/assets/RecentDirectoriesChat-B19uAf8k.css +0 -1
  69. package/src/ui/public/assets/RecentDirectoriesChat-BlIG_9G4.js +0 -1
  70. package/src/ui/public/assets/WorkbenchView-D6NRqZ5W.css +0 -1
  71. package/src/ui/public/assets/WorkbenchView-DXzxg5_z.js +0 -8
  72. package/src/ui/public/assets/_plugin-vue_export-helper-CDrhhAKC.js +0 -19
  73. package/src/ui/public/assets/agentConversations-BKjyYn-u.js +0 -8
  74. package/src/ui/public/assets/configStore-D0oycG71.js +0 -1
  75. package/src/ui/public/assets/index-DjaZpz97.js +0 -57
  76. package/src/ui/public/assets/index-DwJWiCiN.css +0 -1
@@ -54,9 +54,10 @@ function makeSink() {
54
54
  }
55
55
 
56
56
  test('normalizeTaskExecutor:白名单 + 大小写 + 非法回落', () => {
57
- assert.deepEqual(TASK_EXECUTORS, ['claude', 'opencode', 'codex']);
57
+ assert.deepEqual(TASK_EXECUTORS, ['claude', 'opencode', 'codex', 'codebuddy']);
58
58
  assert.equal(normalizeTaskExecutor('opencode'), 'opencode');
59
59
  assert.equal(normalizeTaskExecutor('codex'), 'codex');
60
+ assert.equal(normalizeTaskExecutor('codebuddy'), 'codebuddy');
60
61
  // 大小写不敏感(存储前统一小写)
61
62
  assert.equal(normalizeTaskExecutor('OpenCode'), 'opencode');
62
63
  assert.equal(normalizeTaskExecutor('opencode '), 'opencode');
@@ -1 +0,0 @@
1
- import"./rolldown-runtime-C0FnF6B9.js";import{$r as e,$t as t,An as n,At as r,Ct as i,Dn as a,Dr as o,En as s,Fn as c,Fr as l,Gn as u,Gt as d,Ht as f,J as p,Jn as m,Jr as h,Ln as g,M as _,On as v,Pn as y,Qn as b,Sn as x,Tt as S,Vn as C,W as ee,Xn as w,Xr as T,Yt as E,_n as D,a as te,an as ne,dn as O,er as k,et as A,gn as j,i as M,j as re,kn as N,kt as ie,lr as P,lt as F,mn as I,mr as L,mt as ae,r as R,rr as z,sr as B,st as V,tt as H,ur as U,vn as W,xr as G,yr as K}from"./element-plus-J45pKUrE.js";import{a as q,r as J}from"./vendor-B3NyhlYR.js";import{n as Y,t as X}from"./_plugin-vue_export-helper-CDrhhAKC.js";import{t as oe}from"./configStore-D0oycG71.js";import{t as se}from"./CommonDialog-BUuLsgNS.js";import{v as ce}from"./index-DjaZpz97.js";import{a as Z,c as le,i as ue,l as de,n as fe,o as pe,p as me,r as he,s as ge,t as _e,u as ve}from"./agentConversations-BKjyYn-u.js";import{c as ye,s as be,t as xe}from"./CopySessionButton-Do4vHJm6.js";C(),L(),O(),l();var Se={class:`marketplace-panel`},Ce={class:`mp-toolbar`},we={class:`mp-search`},Te=[`placeholder`],Ee={class:`mp-toolbar-sub`},De={class:`mp-target-hint`},Oe={class:`mp-source-filter`},ke=[`onClick`],Ae={class:`mp-body`},je={class:`mp-group-header`},Me={class:`mp-group-title`},Ne={key:0,class:`mp-group-count`},Pe={key:1,class:`mp-group-error`},Fe=[`href`,`title`],Ie={key:0,class:`mp-grid`},Le={class:`mp-card-head`},Re=[`title`],ze={key:0,class:`mp-card-metric`},Be=[`title`],Ve={class:`mp-card-meta`},He=[`title`],Ue=[`title`],We={key:2,class:`mp-tag remote`},Ge={class:`mp-card-foot`},Ke=[`href`],qe={key:1,class:`mp-installed-chip`},Je=[`disabled`,`onClick`],Ye={key:3,class:`mp-not-installable`},Xe={key:1,class:`mp-empty`},Ze={key:0,class:`mp-group installed`},Qe={class:`mp-group-header`},$e={class:`mp-group-title`},et={class:`mp-group-count`},tt={key:0,class:`mp-installed-block`},nt={class:`mp-installed-target`},rt={class:`mp-installed-list`},it=[`title`],at=[`title`],ot={key:1,class:`mp-meta-pkg`},st={key:2,class:`mp-tag warn`},ct=[`disabled`,`title`,`onClick`],lt=[`disabled`,`onClick`],ut={key:1,class:`mp-empty all`},dt={key:0,class:`mkt-form`},ft={class:`mkt-form-name`},pt=[`onUpdate:modelValue`,`placeholder`],mt={key:0,class:`mkt-field`},ht={class:`mkt-hint`},gt=X(g({__name:`MarketplacePanel`,props:{type:{}},setup(t){let r=t,l=oe(),u=G([]),m=G([]),g=G(!1),S=G(``),C=G(``),w=G([]),T=G(`project`),D=G(new Set),O=G(new Set),A=G(new Set),j=s(()=>l.currentDirectory||``),I=null;async function L(){if(!g.value){g.value=!0;try{let e=new URLSearchParams({type:r.type,cwd:j.value});C.value&&e.set(`q`,C.value),w.value.length&&e.set(`sources`,w.value.join(`,`));let t=await(await fetch(`/api/agent/marketplace/catalog?${e}`)).json();t?.success?(u.value=t.groups||[],m.value=t.installed||[]):M.error(t?.error||Y(`@MKT:加载失败`))}catch{M.error(Y(`@MKT:加载失败`))}finally{g.value=!1}}}B(S,e=>{I&&clearTimeout(I),I=setTimeout(()=>{C.value=e.trim(),L()},400)}),B(w,()=>L()),B(()=>r.type,()=>{w.value=[],C.value=``,S.value=``,L()}),B(j,()=>L()),L();let z=s(()=>{let e=j.value?j.value.split(/[\\/]/).filter(Boolean).pop():``;return T.value===`project`?e||Y(`@MKT:当前项目`):Y(`@MKT:g ai 智能体`)});function V(e){return e.stars?`${q(e.stars)} ★`:e.downloads?`${q(e.downloads)} ${Y(`@MKT:周下载`)}`:e.uses?`${q(e.uses)} ${Y(`@MKT:次使用`)}`:``}function q(e){return e>=1e3?`${(e/1e3).toFixed(e>=1e4?0:1)}k`:String(e)}function J(e){return`${e.id}`}function X(e){return D.value.has(J(e))}let ce=s(()=>{let e={project:[],global:[]};for(let t of m.value)(e[t.target]||=[]).push(t);return e}),Z=K({visible:!1,item:null,env:{},args:``});function le(e){return r.type===`mcp`&&(!!e.envKeys?.length||!!e.args?.length)}function ue(e){Z.item=e,Z.env=Object.fromEntries((e.envKeys||[]).map(e=>[e,``])),Z.args=(e.args||[]).join(` `),Z.visible=!0}function de(){let e=Z.item;if(Z.visible=!1,!e)return;let t=Object.fromEntries(Object.entries(Z.env).filter(([,e])=>e.trim()!==``)),n=Z.args.trim()?Z.args.trim().match(/(?:[^\s"]+|"[^"]*")+/g)?.map(e=>e.replace(/^"|"$/g,``))??void 0:void 0;pe(e,{env:t,...n?{args:n}:{}})}async function fe(e){if(!e.installed||await me(e)){if(le(e)){ue(e);return}await pe(e,{})}}async function pe(e,t){let n=J(e);D.value.add(n);try{let n=await fetch(`/api/agent/marketplace/install`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({type:r.type,target:T.value,cwd:j.value,item:{...e,...t}})}),i=await n.json().catch(()=>null);if(!n.ok||!i?.success){M.error(i?.error||Y(`@MKT:安装失败`));return}i.item?.warning&&M.warning(i.item.warning),i.item?.envKeys?.length?M.warning(`${Y(`@MKT:还缺环境变量`)}: ${i.item.envKeys.join(`, `)}`):M.success(Y(`@MKT:安装成功`)),await L()}catch{M.error(Y(`@MKT:安装失败`))}finally{D.value.delete(n)}}async function me(e){try{return await R.confirm(`${e.name} ${Y(`@MKT:已安装,要重新安装吗?`)}`,Y(`@MKT:重新安装`),{confirmButtonText:Y(`@MKT:重装`),cancelButtonText:Y(`@MKT:取消`),type:`warning`}),!0}catch{return!1}}async function he(e){let t=`${e.target}:${e.id}`;A.value.add(t);try{let t=await fetch(`/api/agent/marketplace/reveal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({type:r.type,target:e.target,cwd:j.value,id:e.id})}),n=await t.json().catch(()=>null);(!t.ok||!n?.success)&&M.error(n?.error||Y(`@MKT:打开失败`))}catch{M.error(Y(`@MKT:打开失败`))}finally{A.value.delete(t)}}async function ge(e){try{await R.confirm(`${Y(`@MKT:确定卸载`)} ${e.name}?`,Y(`@MKT:卸载`),{confirmButtonText:Y(`@MKT:卸载`),cancelButtonText:Y(`@MKT:取消`),type:`warning`})}catch{return}let t=`${e.target}:${e.id}`;O.value.add(t);try{let t=new URLSearchParams({target:e.target,cwd:j.value}),n=await fetch(`/api/agent/marketplace/item/${r.type}/${encodeURIComponent(e.id)}?${t}`,{method:`DELETE`}),i=await n.json().catch(()=>null);if(!n.ok||!i?.success){M.error(i?.error||Y(`@MKT:卸载失败`));return}M.success(Y(`@MKT:已卸载`)),await L()}catch{M.error(Y(`@MKT:卸载失败`))}finally{O.value.delete(t)}}return(r,s)=>{let l=p,C=re,D=_,j=ee,M=te;return b(),n(`div`,Se,[a(`div`,Ce,[a(`div`,we,[c(l,{class:`mp-search-icon`},{default:P(()=>[c(o(d))]),_:1}),U(a(`input`,{"onUpdate:modelValue":s[0]||=e=>S.value=e,class:`mp-search-input`,type:`text`,placeholder:t.type===`skill`?o(Y)(`@MKT:搜索 Skill...`):o(Y)(`@MKT:搜索 MCP 服务...`)},null,8,Te),[[W,S.value]])]),c(D,{modelValue:T.value,"onUpdate:modelValue":s[1]||=e=>T.value=e,size:`small`,class:`mp-target`},{default:P(()=>[c(C,{value:`project`},{default:P(()=>[y(e(o(Y)(`@MKT:当前项目`)),1)]),_:1}),c(C,{value:`global`},{default:P(()=>[y(e(o(Y)(`@MKT:g ai 智能体`)),1)]),_:1})]),_:1},8,[`modelValue`]),c(j,{content:o(Y)(`@MKT:刷新`),placement:`top`,"show-after":300},{default:P(()=>[a(`button`,{class:h([`mp-refresh`,{spinning:g.value}]),onClick:L},[c(l,null,{default:P(()=>[c(o(f))]),_:1})],2)]),_:1},8,[`content`])]),a(`div`,Ee,[a(`span`,De,[y(e(o(Y)(`@MKT:安装到`))+` `,1),a(`b`,null,e(z.value),1)]),a(`div`,Oe,[(b(!0),n(x,null,k(u.value,t=>(b(),n(`button`,{key:t.id,class:h([`mp-chip`,{active:w.value.includes(t.id)}]),onClick:()=>{let e=w.value.indexOf(t.id);e>=0?w.value.splice(e,1):w.value.push(t.id)}},e(t.label),11,ke))),128)),w.value.length?(b(),n(`button`,{key:0,class:`mp-chip clear`,onClick:s[2]||=e=>w.value=[]},e(o(Y)(`@MKT:全部来源`)),1)):N(``,!0)])]),U((b(),n(`div`,Ae,[(b(!0),n(x,null,k(u.value,t=>(b(),n(`section`,{key:t.id,class:`mp-group`},[a(`header`,je,[a(`h3`,Me,e(t.label),1),t.status===`ok`?(b(),n(`span`,Ne,e(t.items.length),1)):(b(),n(`span`,Pe,[c(l,null,{default:P(()=>[c(o(ne))]),_:1}),y(` `+e(t.error||o(Y)(`@MKT:来源不可用`)),1)])),t.homepage?(b(),n(`a`,{key:2,class:`mp-group-link`,href:t.homepage,target:`_blank`,rel:`noopener noreferrer`,title:t.homepage},[c(l,null,{default:P(()=>[c(o(ie))]),_:1})],8,Fe)):N(``,!0)]),t.status===`ok`&&t.items.length?(b(),n(`div`,Ie,[(b(!0),n(x,null,k(t.items,t=>(b(),n(`article`,{key:J(t),class:`mp-card`},[a(`div`,Le,[a(`span`,{class:`mp-card-name`,title:t.name},e(t.name),9,Re),V(t)?(b(),n(`span`,ze,[c(l,null,{default:P(()=>[t.stars?(b(),v(o(E),{key:0})):(b(),v(o(ae),{key:1}))]),_:2},1024),y(` `+e(V(t)),1)])):N(``,!0)]),a(`p`,{class:`mp-card-desc`,title:t.description},e(t.description||o(Y)(`@MKT:暂无描述`)),9,Be),a(`div`,Ve,[t.package?(b(),n(`code`,{key:0,class:`mp-meta-pkg`,title:t.package},e(t.package),9,He)):t.repository?(b(),n(`span`,{key:1,class:`mp-meta-repo`,title:t.repository+(t.subpath?` · `+t.subpath:``)},[y(e(t.repository),1),t.subpath?(b(),n(x,{key:0},[y(` · `+e(t.subpath),1)],64)):N(``,!0)],8,Ue)):N(``,!0),t.transport===`remote`?(b(),n(`span`,We,e(o(Y)(`@MKT:远程服务`)),1)):N(``,!0),(b(!0),n(x,null,k((t.tags||[]).slice(0,2),t=>(b(),n(`span`,{key:t,class:`mp-tag`},e(t),1))),128))]),a(`div`,Ge,[t.upstream?(b(),n(`a`,{key:0,class:`mp-card-link`,href:t.upstream,target:`_blank`,rel:`noopener noreferrer`},e(o(Y)(`@MKT:查看来源`)),9,Ke)):N(``,!0),s[6]||=a(`span`,{class:`mp-foot-spacer`},null,-1),t.installed?(b(),n(`span`,qe,[c(l,null,{default:P(()=>[c(o(H))]),_:1}),y(e(o(Y)(`@MKT:已安装`)),1)])):t.installable===!1?(b(),n(`span`,Ye,e(o(Y)(`@MKT:暂不支持一键安装`)),1)):(b(),n(`button`,{key:2,class:`mp-install-btn`,disabled:X(t),onClick:e=>fe(t)},e(X(t)?o(Y)(`@MKT:安装中...`):o(Y)(`@MKT:安装`)),9,Je))])]))),128))])):t.status===`ok`?(b(),n(`div`,Xe,e(o(Y)(`@MKT:该来源暂无结果`)),1)):N(``,!0)]))),128)),m.value.length?(b(),n(`section`,Ze,[a(`header`,Qe,[a(`h3`,$e,e(o(Y)(`@MKT:已安装`)),1),a(`span`,et,e(m.value.length),1)]),(b(),n(x,null,k([`project`,`global`],t=>a(`div`,{key:t},[ce.value[t]?.length?(b(),n(`div`,tt,[a(`div`,nt,e(t===`project`?o(Y)(`@MKT:当前项目`):o(Y)(`@MKT:g ai 智能体`)),1),a(`div`,rt,[(b(!0),n(x,null,k(ce.value[t],r=>(b(),n(`div`,{key:t+r.id,class:`mp-installed-row`},[a(`span`,{class:`mp-installed-name`,title:r.name},e(r.name),9,it),r.id&&r.id!==r.name?(b(),n(`code`,{key:0,class:`mp-installed-id`,title:r.dir||r.file||r.id},e(r.id),9,at)):N(``,!0),r.package?(b(),n(`code`,ot,e(r.package),1)):N(``,!0),r.requiredEnv?.length?(b(),n(`span`,st,e(o(Y)(`@MKT:待配置`))+`: `+e(r.requiredEnv.join(`, `)),1)):N(``,!0),s[7]||=a(`span`,{class:`mp-foot-spacer`},null,-1),a(`button`,{class:`mp-reveal-btn`,disabled:A.value.has(t+r.id),title:r.dir||r.file||``,onClick:e=>he(r)},[c(l,null,{default:P(()=>[c(o(i))]),_:1}),y(` `+e(o(Y)(`@MKT:打开文件夹`)),1)],8,ct),a(`button`,{class:`mp-remove-btn`,disabled:O.value.has(t+r.id),onClick:e=>ge(r)},[c(l,null,{default:P(()=>[c(o(F))]),_:1}),y(` `+e(O.value.has(t+r.id)?o(Y)(`@MKT:卸载中...`):o(Y)(`@MKT:卸载`)),1)],8,lt)]))),128))])])):N(``,!0)])),64))])):N(``,!0),!g.value&&!u.value.length?(b(),n(`div`,ut,e(o(Y)(`@MKT:加载失败`)),1)):N(``,!0)])),[[M,g.value]]),c(se,{modelValue:Z.visible,"onUpdate:modelValue":s[5]||=e=>Z.visible=e,title:o(Y)(`@MKT:配置 MCP`),width:`460px`,type:`flex`,"close-on-click-modal":!1,"append-to-body":``},{footer:P(()=>[a(`button`,{class:`mkt-cancel`,onClick:s[4]||=e=>Z.visible=!1},e(o(Y)(`@MKT:取消`)),1),a(`button`,{class:`mkt-confirm`,onClick:de},e(o(Y)(`@MKT:安装`)),1)]),default:P(()=>[Z.item?(b(),n(`div`,dt,[a(`p`,ft,e(Z.item.name),1),(b(!0),n(x,null,k(Object.keys(Z.env),t=>(b(),n(`div`,{key:t,class:`mkt-field`},[a(`label`,null,e(t),1),U(a(`input`,{"onUpdate:modelValue":e=>Z.env[t]=e,type:`text`,autocomplete:`off`,placeholder:o(Y)(`@MKT:环境变量值`),spellcheck:`false`},null,8,pt),[[W,Z.env[t]]])]))),128)),Z.item.args?.length?(b(),n(`div`,mt,[a(`label`,null,e(o(Y)(`@MKT:启动参数`)),1),U(a(`input`,{"onUpdate:modelValue":s[3]||=e=>Z.args=e,type:`text`,autocomplete:`off`,spellcheck:`false`},null,512),[[W,Z.args]]),a(`p`,ht,e(o(Y)(`@MKT:参数提示`)),1)])):N(``,!0)])):N(``,!0)]),_:1},8,[`modelValue`,`title`])])}}}),[[`__scopeId`,`data-v-536d7952`]]);async function Q(e,t){let n=await fetch(e,{headers:{"Content-Type":`application/json`},...t}),r={};try{r=await n.json()}catch{}if(!n.ok||r.success===!1)throw Error(r.error||`请求失败 (${n.status})`);return r}async function _t(){let e=await Q(`/api/schedules`);return Array.isArray(e.tasks)?e.tasks:[]}async function vt(e){return(await Q(`/api/schedules`,{method:`POST`,body:JSON.stringify(e)})).task}async function yt(e,t){return(await Q(`/api/schedules/${encodeURIComponent(e)}`,{method:`PUT`,body:JSON.stringify(t)})).task}async function bt(e){await Q(`/api/schedules/${encodeURIComponent(e)}`,{method:`DELETE`})}async function xt(e){await Q(`/api/schedules/${encodeURIComponent(e)}/run`,{method:`POST`})}async function St(e){await Q(`/api/schedules/${encodeURIComponent(e)}/stop`,{method:`POST`})}function Ct(e){if(typeof EventSource>`u`)return()=>{};let t=new EventSource(`/api/schedules/events`);return t.onmessage=t=>{try{e(JSON.parse(t.data))}catch{}},()=>t.close()}var wt=e=>/^\d+$/.test(e)?Number(e):null;function Tt(e){let t=String(e||``).trim(),n=t.split(/\s+/);if(n.length!==5)return{kind:`custom`,raw:t};let[r,i,a,o,s]=n,c=wt(r),l=wt(i);if(t===`* * * * *`)return{kind:`every-minute`,raw:t};let u=r.match(/^\*\/(\d+)$/);if(u&&i===`*`&&a===`*`&&o===`*`&&s===`*`)return{kind:`every-n-minutes`,n:Number(u[1]),raw:t};if(c!==null&&i===`*`&&a===`*`&&o===`*`&&s===`*`)return{kind:`hourly`,minute:c,raw:t};if(c!==null&&l!==null&&a===`*`&&o===`*`&&s===`*`)return{kind:`daily`,hour:l,minute:c,raw:t};let d=wt(s);if(c!==null&&l!==null&&a===`*`&&o===`*`&&d!==null)return{kind:`weekly`,weekday:d%7,hour:l,minute:c,raw:t};let f=wt(a);return c!==null&&l!==null&&f!==null&&o===`*`&&s===`*`?{kind:`monthly`,day:f,hour:l,minute:c,raw:t}:{kind:`custom`,raw:t}}var $=e=>String(e).padStart(2,`0`),Et=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime();function Dt(e,t=new Date){if(!e)return{kind:`none`};let n=new Date(e);if(Number.isNaN(n.getTime()))return{kind:`none`};let r=`${$(n.getHours())}:${$(n.getMinutes())}`,i=Math.round((Et(n)-Et(t))/864e5);return i<0?{kind:`date`,date:`${n.getMonth()+1}-${$(n.getDate())}`,time:r}:i===0?{kind:`today`,time:r}:i===1?{kind:`tomorrow`,time:r}:i<7?{kind:`weekday`,weekday:n.getDay(),time:r}:{kind:`date`,date:`${n.getMonth()+1}-${$(n.getDate())}`,time:r}}function Ot(e){switch(e){case`ok`:return`ok`;case`error`:case`timed-out`:return`error`;case`skipped-busy`:case`missed`:case`cancelled`:return`skipped`;default:return`pending`}}function kt(e){let t=Number(e);if(!Number.isFinite(t)||t<0)return``;if(t<1e3)return`<1s`;let n=Math.round(t/1e3);if(n<60)return`${n}s`;let r=Math.floor(n/60);return r<60?`${r}m${$(n%60)}s`:`${Math.floor(r/60)}h${$(r%60)}m`}function At(e){let t=Math.min(59,Math.max(0,Math.floor(e.minute))),n=Math.min(23,Math.max(0,Math.floor(e.hour))),r=(Math.floor(e.weekday)%7+7)%7;switch(e.freq){case`minutes`:return`*/${Math.min(59,Math.max(1,Math.floor(e.everyMinutes??30)))} * * * *`;case`hourly`:return`${t} * * * *`;case`daily`:return`${t} ${n} * * *`;case`weekly`:return`${t} ${n} * * ${r}`;case`custom`:return String(e.custom||``).trim()}}C(),l(),L(),O();var jt={class:`schedule-panel`},Mt={class:`schedule-toolbar`},Nt={class:`schedule-summary`},Pt={key:0,class:`schedule-error`},Ft={key:1,class:`schedule-loading`},It={key:2,class:`schedule-empty`},Lt={class:`schedule-empty-title`},Rt={class:`schedule-empty-desc`},zt={key:3,class:`schedule-list`},Bt={class:`schedule-card-body`},Vt={class:`schedule-card-head`},Ht={class:`schedule-name`},Ut={key:0,class:`schedule-running`},Wt=[`aria-checked`,`aria-label`,`onClick`],Gt={class:`schedule-card-sub`},Kt={class:`schedule-desc`},qt=[`onClick`],Jt={class:`schedule-card-side`},Yt={class:`schedule-actions`},Xt=[`disabled`,`onClick`],Zt=[`disabled`,`onClick`],Qt=[`onClick`],$t=[`onClick`],en={class:`sch-form`},tn={class:`sch-field`},nn={class:`sch-field-label`},rn=[`placeholder`],an={class:`sch-field`},on={class:`sch-field-label`},sn={class:`sch-freq-row`},cn=[`value`],ln={class:`sch-inline-label`},un=[`value`],dn={class:`sch-inline-label`},fn=[`value`],pn=[`value`],mn=[`value`],hn={class:`sch-inline-label`},gn=[`value`],_n={class:`sch-inline-label`},vn=[`placeholder`],yn={class:`sch-hint`},bn={class:`sch-field`},xn={class:`sch-field-label`},Sn=[`placeholder`],Cn={class:`sch-field`},wn={class:`sch-field-label`},Tn=[`placeholder`],En={class:`sch-field`},Dn={class:`sch-field-label`},On={class:`sch-radio-row`},kn={class:`sch-radio`},An={class:`sch-radio`},jn={class:`sch-radio`},Mn={key:0,class:`sch-form-error`},Nn={class:`sch-form-footer`},Pn=[`disabled`],Fn={class:`sch-confirm-text`},In={class:`sch-form-footer`},Ln=X(g({__name:`SchedulePanel`,emits:[`open-session`],setup(t,{emit:r}){let i=r,l=oe(),u=G([]),d=G(!0),f=G(``),p=G({}),g=null,_=null;async function v(){try{u.value=await _t(),f.value=``}catch(e){f.value=e?.message||String(e)}finally{d.value=!1}}function y(){_===null&&(_=window.setTimeout(()=>{_=null,v()},150))}w(async()=>{await v(),g=Ct(e=>{[`tasks_changed`,`task_started`,`task_finished`,`hello`].includes(e.type)&&y()})}),m(()=>{g?.(),_!==null&&window.clearTimeout(_)});let S=s(()=>{let e=u.value.filter(e=>e.enabled).length,t=u.value.length-e;return u.value.length?Y(`@SCHED:{on} 个启用 · {off} 个停用`,{on:e,off:t}):``}),C=[`@SCHED:周日`,`@SCHED:周一`,`@SCHED:周二`,`@SCHED:周三`,`@SCHED:周四`,`@SCHED:周五`,`@SCHED:周六`];function ee(e){let t=Tt(e.schedule);switch(t.kind){case`every-minute`:return Y(`@SCHED:每分钟`);case`every-n-minutes`:return Y(`@SCHED:每 {n} 分钟`,{n:t.n});case`hourly`:return Y(`@SCHED:每小时第 {minute} 分钟`,{minute:t.minute});case`daily`:return Y(`@SCHED:每天 {time}`,{time:`${String(t.hour).padStart(2,`0`)}:${String(t.minute).padStart(2,`0`)}`});case`weekly`:return Y(`@SCHED:每周 {weekday} {time}`,{weekday:Y(C[t.weekday]),time:`${String(t.hour).padStart(2,`0`)}:${String(t.minute).padStart(2,`0`)}`});case`monthly`:return Y(`@SCHED:每月 {day} 日 {time}`,{day:t.day,time:`${String(t.hour).padStart(2,`0`)}:${String(t.minute).padStart(2,`0`)}`});default:return t.raw}}function T(e){if(!e.enabled)return Y(`@SCHED:已停用`);if(e.running)return Y(`@SCHED:运行中...`);let t=Dt(e.nextRunAt);switch(t.kind){case`none`:return``;case`today`:return Y(`@SCHED:下次 今天 {time}`,{time:t.time});case`tomorrow`:return Y(`@SCHED:下次 明天 {time}`,{time:t.time});case`weekday`:return Y(`@SCHED:下次 {weekday} {time}`,{weekday:Y(C[t.weekday]),time:t.time});case`date`:return Y(`@SCHED:下次 {date} {time}`,{date:t.date,time:t.time})}}function E(e){let t=e.lastRun;if(!t)return Y(`@SCHED:还没执行过`);switch(t.status){case`ok`:return Y(`@SCHED:成功`);case`error`:return Y(`@SCHED:失败`);case`timed-out`:return Y(`@SCHED:超时中止`);case`skipped-busy`:return Y(`@SCHED:已跳过(会话忙)`);case`missed`:return Y(`@SCHED:已错过(未运行)`);case`cancelled`:return Y(`@SCHED:已停止`);default:return t.status}}function te(e){let t=e.lastRun;if(!t)return Y(`@SCHED:还没执行过`);let n=kt(t.durationMs),r=Y(`@SCHED:上次 {status}`,{status:E(e)});return n?`${r} · ${n}`:r}function ne(e){return e.lastRun?`is-${Ot(e.lastRun.status)}`:`is-muted`}async function O(e,t){if(!p.value[e.id]){p.value={...p.value,[e.id]:!0};try{await t(),await v()}catch(e){M.error(e?.message||String(e))}finally{let t={...p.value};delete t[e.id],p.value=t}}}function A(e){return O(e,()=>yt(e.id,{enabled:!e.enabled}))}function re(e){return O(e,()=>xt(e.id))}function ie(e){return O(e,()=>St(e.id))}let F=G(!1),L=G(null);function ae(e){L.value=e,F.value=!0}async function R(){let e=L.value;if(e)try{await bt(e.id),F.value=!1,await v()}catch(e){M.error(e?.message||String(e))}}let z=G(!1),B=G(``),V=G(``),H=G(!1),K=G({name:``,freq:`daily`,everyMinutes:30,minute:0,hour:9,weekday:1,custom:``,cwd:``,prompt:``,onMissed:`run`,enabled:!0}),q=s(()=>[{value:`minutes`,label:Y(`@SCHED:每 N 分钟`)},{value:`hourly`,label:Y(`@SCHED:每小时`)},{value:`daily`,label:Y(`@SCHED:每天`)},{value:`weekly`,label:Y(`@SCHED:每周`)},{value:`custom`,label:Y(`@SCHED:自定义 cron`)}]),J=s(()=>At({freq:K.value.freq,everyMinutes:K.value.everyMinutes,minute:K.value.minute,hour:K.value.hour,weekday:K.value.weekday,custom:K.value.custom}));function X(){K.value={name:``,freq:`daily`,everyMinutes:30,minute:0,hour:9,weekday:1,custom:``,cwd:l.currentDirectory||``,prompt:``,onMissed:`run`,enabled:!0},V.value=``}function ce(){B.value=``,X(),z.value=!0}function Z(e){B.value=e.id;let t=Tt(e.schedule),n={name:e.name,freq:`custom`,everyMinutes:30,minute:0,hour:9,weekday:1,custom:e.schedule,cwd:e.cwd,prompt:e.prompt,onMissed:e.onMissed===`skip`?`skip`:`run`,enabled:e.enabled};switch(t.kind){case`every-n-minutes`:n.freq=`minutes`,n.everyMinutes=t.n;break;case`hourly`:n.freq=`hourly`,n.minute=t.minute;break;case`daily`:n.freq=`daily`,n.minute=t.minute,n.hour=t.hour;break;case`weekly`:n.freq=`weekly`,n.minute=t.minute,n.hour=t.hour,n.weekday=t.weekday;break;default:n.freq=`custom`}K.value=n,V.value=``,z.value=!0}async function le(){let e=K.value;if(!e.name.trim()){V.value=Y(`@SCHED:任务名不能为空`);return}if(!e.prompt.trim()){V.value=Y(`@SCHED:提示词不能为空`);return}let t=J.value;if(!t){V.value=Y(`@SCHED:cron 表达式不能为空`);return}let n={name:e.name.trim(),schedule:t,cwd:e.cwd.trim(),prompt:e.prompt.trim(),enabled:e.enabled,onMissed:e.onMissed};H.value=!0;try{B.value?await yt(B.value,n):await vt(n),z.value=!1,await v()}catch(e){V.value=e?.message||String(e)}finally{H.value=!1}}return(t,r)=>(b(),n(`div`,jt,[a(`div`,Mt,[a(`span`,Nt,e(S.value),1),a(`button`,{type:`button`,class:`sch-btn sch-btn-primary`,onClick:ce},e(o(Y)(`@SCHED:新建任务`)),1)]),f.value?(b(),n(`div`,Pt,e(o(Y)(`@SCHED:操作失败:{error}`,{error:f.value})),1)):N(``,!0),d.value?(b(),n(`div`,Ft,e(o(Y)(`@SCHED:加载中...`)),1)):u.value.length?(b(),n(`div`,zt,[(b(!0),n(x,null,k(u.value,t=>(b(),n(`article`,{key:t.id,class:h([`schedule-card`,{"is-disabled":!t.enabled,"is-running":!!t.running}])},[a(`div`,Bt,[a(`div`,Vt,[a(`span`,Ht,e(t.name),1),t.running?(b(),n(`span`,Ut,e(o(Y)(`@SCHED:运行中`)),1)):N(``,!0),a(`button`,{type:`button`,class:h([`sch-switch`,{on:t.enabled}]),role:`switch`,"aria-checked":t.enabled,"aria-label":t.enabled?o(Y)(`@SCHED:停用`):o(Y)(`@SCHED:启用`),onClick:e=>A(t)},[...r[17]||=[a(`span`,{class:`sch-switch-knob`},null,-1)]],10,Wt)]),a(`div`,Gt,[a(`span`,Kt,e(ee(t)),1),r[18]||=a(`span`,{class:`schedule-sep`},`·`,-1),a(`span`,{class:h([`schedule-last`,ne(t)])},e(te(t)),3),t.sessionId?(b(),n(`button`,{key:0,type:`button`,class:`sch-link`,onClick:e=>i(`open-session`,t.sessionId)},e(o(Y)(`@SCHED:查看会话`)),9,qt)):N(``,!0)])]),a(`div`,Jt,[a(`div`,{class:h([`schedule-next`,{"is-muted":!t.enabled}])},e(T(t)),3),a(`div`,Yt,[t.running?(b(),n(`button`,{key:0,type:`button`,class:`sch-btn`,disabled:!!p.value[t.id],onClick:e=>ie(t)},e(o(Y)(`@SCHED:停止`)),9,Xt)):(b(),n(`button`,{key:1,type:`button`,class:`sch-btn`,disabled:!!p.value[t.id],onClick:e=>re(t)},e(o(Y)(`@SCHED:运行`)),9,Zt)),a(`button`,{type:`button`,class:`sch-btn`,onClick:e=>Z(t)},e(o(Y)(`@SCHED:编辑`)),9,Qt),a(`button`,{type:`button`,class:`sch-btn sch-btn-danger`,onClick:e=>ae(t)},e(o(Y)(`@SCHED:删除`)),9,$t)])])],2))),128))])):(b(),n(`div`,It,[a(`p`,Lt,e(o(Y)(`@SCHED:还没有定时任务`)),1),a(`p`,Rt,e(o(Y)(`@SCHED:让 g ai 在指定时间自动做事:定时拉代码、定时巡检、定时汇总。也可以在对话里直接说「每天 9 点帮我…」,让 g ai 来创建。`)),1)])),c(se,{modelValue:z.value,"onUpdate:modelValue":r[14]||=e=>z.value=e,title:B.value?o(Y)(`@SCHED:编辑任务`):o(Y)(`@SCHED:新建任务`),"close-on-click-modal":!1,"append-to-body":!0,size:`medium`,width:`560px`,"z-index":3e6,"custom-class":`schedule-dialog`},{default:P(()=>[a(`div`,en,[a(`label`,tn,[a(`span`,nn,e(o(Y)(`@SCHED:任务名`)),1),U(a(`input`,{"onUpdate:modelValue":r[0]||=e=>K.value.name=e,class:`sch-input`,type:`text`,placeholder:o(Y)(`@SCHED:如:每日拉代码`)},null,8,rn),[[W,K.value.name]])]),a(`div`,an,[a(`span`,on,e(o(Y)(`@SCHED:执行计划`)),1),a(`div`,sn,[U(a(`select`,{"onUpdate:modelValue":r[1]||=e=>K.value.freq=e,class:`sch-input sch-select`},[(b(!0),n(x,null,k(q.value,t=>(b(),n(`option`,{key:t.value,value:t.value},e(t.label),9,cn))),128))],512),[[D,K.value.freq]]),K.value.freq===`minutes`?(b(),n(x,{key:0},[a(`span`,ln,e(o(Y)(`@SCHED:每`)),1),U(a(`select`,{"onUpdate:modelValue":r[2]||=e=>K.value.everyMinutes=e,class:`sch-input sch-select sch-select-sm`},[(b(),n(x,null,k([5,10,15,20,30,60],t=>a(`option`,{key:t,value:t},e(t),9,un)),64))],512),[[D,K.value.everyMinutes,void 0,{number:!0}]]),a(`span`,dn,e(o(Y)(`@SCHED:分钟`)),1)],64)):K.value.freq===`daily`||K.value.freq===`weekly`?(b(),n(x,{key:1},[K.value.freq===`weekly`?U((b(),n(`select`,{key:0,"onUpdate:modelValue":r[3]||=e=>K.value.weekday=e,class:`sch-input sch-select sch-select-sm`},[(b(),n(x,null,k(C,(t,n)=>a(`option`,{key:n,value:n},e(o(Y)(t)),9,fn)),64))],512)),[[D,K.value.weekday,void 0,{number:!0}]]):N(``,!0),U(a(`select`,{"onUpdate:modelValue":r[4]||=e=>K.value.hour=e,class:`sch-input sch-select sch-select-sm`},[(b(),n(x,null,k(24,t=>a(`option`,{key:t-1,value:t-1},e(String(t-1).padStart(2,`0`)),9,pn)),64))],512),[[D,K.value.hour,void 0,{number:!0}]]),r[19]||=a(`span`,{class:`sch-inline-label`},`:`,-1),U(a(`select`,{"onUpdate:modelValue":r[5]||=e=>K.value.minute=e,class:`sch-input sch-select sch-select-sm`},[(b(),n(x,null,k(60,t=>a(`option`,{key:t-1,value:t-1},e(String(t-1).padStart(2,`0`)),9,mn)),64))],512),[[D,K.value.minute,void 0,{number:!0}]])],64)):K.value.freq===`hourly`?(b(),n(x,{key:2},[a(`span`,hn,e(o(Y)(`@SCHED:第`)),1),U(a(`select`,{"onUpdate:modelValue":r[6]||=e=>K.value.minute=e,class:`sch-input sch-select sch-select-sm`},[(b(),n(x,null,k(60,t=>a(`option`,{key:t-1,value:t-1},e(String(t-1).padStart(2,`0`)),9,gn)),64))],512),[[D,K.value.minute,void 0,{number:!0}]]),a(`span`,_n,e(o(Y)(`@SCHED:分钟`)),1)],64)):U((b(),n(`input`,{key:3,"onUpdate:modelValue":r[7]||=e=>K.value.custom=e,class:`sch-input sch-input-cron`,type:`text`,spellcheck:`false`,placeholder:o(Y)(`@SCHED:如:0 9 * * 1-5`)},null,8,vn)),[[W,K.value.custom]])]),a(`span`,yn,e(o(Y)(`@SCHED:cron:{cron}(分 时 日 月 周,本地时间)`,{cron:J.value||`—`})),1)]),a(`label`,bn,[a(`span`,xn,e(o(Y)(`@SCHED:项目目录`)),1),U(a(`input`,{"onUpdate:modelValue":r[8]||=e=>K.value.cwd=e,class:`sch-input`,type:`text`,spellcheck:`false`,placeholder:o(Y)(`@SCHED:任务在该目录下执行(默认当前项目)`)},null,8,Sn),[[W,K.value.cwd]])]),a(`label`,Cn,[a(`span`,wn,e(o(Y)(`@SCHED:提示词`)),1),U(a(`textarea`,{"onUpdate:modelValue":r[9]||=e=>K.value.prompt=e,class:`sch-input sch-textarea`,rows:`4`,placeholder:o(Y)(`@SCHED:到点后发给 g ai 的完整指令,例如:检查所有仓库远端更新,有变更就 pull;写成一次自足的请求(未来那一轮没有现在的上下文)`)},null,8,Tn),[[W,K.value.prompt]])]),a(`div`,En,[a(`span`,Dn,e(o(Y)(`@SCHED:错过补偿`)),1),a(`div`,On,[a(`label`,kn,[U(a(`input`,{"onUpdate:modelValue":r[10]||=e=>K.value.onMissed=e,type:`radio`,value:`run`},null,512),[[j,K.value.onMissed]]),a(`span`,null,e(o(Y)(`@SCHED:补跑一次(g ui 重新运行后)`)),1)]),a(`label`,An,[U(a(`input`,{"onUpdate:modelValue":r[11]||=e=>K.value.onMissed=e,type:`radio`,value:`skip`},null,512),[[j,K.value.onMissed]]),a(`span`,null,e(o(Y)(`@SCHED:跳过`)),1)]),a(`label`,jn,[U(a(`input`,{"onUpdate:modelValue":r[12]||=e=>K.value.enabled=e,type:`checkbox`},null,512),[[I,K.value.enabled]]),a(`span`,null,e(o(Y)(`@SCHED:创建后启用`)),1)])])]),V.value?(b(),n(`p`,Mn,e(V.value),1)):N(``,!0)]),a(`div`,Nn,[a(`button`,{type:`button`,class:`sch-btn`,onClick:r[13]||=e=>z.value=!1},e(o(Y)(`@SCHED:取消`)),1),a(`button`,{type:`button`,class:`sch-btn sch-btn-primary`,disabled:H.value,onClick:le},e(H.value?o(Y)(`@SCHED:保存中...`):o(Y)(`@SCHED:保存`)),9,Pn)])]),_:1},8,[`modelValue`,`title`]),c(se,{modelValue:F.value,"onUpdate:modelValue":r[16]||=e=>F.value=e,title:o(Y)(`@SCHED:删除任务`),"close-on-click-modal":!1,"append-to-body":!0,size:`small`,width:`400px`,"z-index":3e6,"custom-class":`schedule-dialog-confirm`},{default:P(()=>[a(`p`,Fn,e(o(Y)(`@SCHED:确定删除「{name}」吗?已产生的会话会保留,但任务不再执行。`,{name:L.value?.name||``})),1),a(`div`,In,[a(`button`,{type:`button`,class:`sch-btn`,onClick:r[15]||=e=>F.value=!1},e(o(Y)(`@SCHED:取消`)),1),a(`button`,{type:`button`,class:`sch-btn sch-btn-danger`,onClick:R},e(o(Y)(`@SCHED:删除`)),1)])]),_:1},8,[`modelValue`,`title`])]))}}),[[`__scopeId`,`data-v-75be84e5`]]);C(),L(),l();var Rn={class:`agent-chat-area`},zn={class:`agent-tabs`,role:`tablist`},Bn=[`aria-selected`,`onClick`],Vn={class:`agent-tab-body`},Hn={key:0,class:`agent-chat-pane`},Un={key:0,class:`agent-list-page`},Wn={key:0,class:`agent-page-bar`},Gn=[`title`,`aria-label`],Kn={class:`agent-page-title`},qn={key:0,class:`chat-loading`},Jn=X(g({__name:`AgentView`,setup(i){let l=oe(),d=G(null),{narrow:f}=ye(d),m=G(`chat`),g=G(`chat`),_=s(()=>g.value===`mcp`?`mcp`:`skill`),y=s(()=>[{id:`chat`,label:Y(`@AGENT:对话`),icon:A},{id:`schedule`,label:Y(`@AGENT:定时任务`),icon:t},{id:`skill`,label:Y(`@AGENT:Skill 广场`),icon:S},{id:`mcp`,label:Y(`@AGENT:MCP 广场`),icon:V}]),{sessions:C,sessionsLoading:ee,currentSessionId:w,messages:E,isStreaming:D,sessionLoading:te,loadSessions:ne,loadSession:O,deleteSession:j,renameSession:M,newSession:re,sendMessage:ie,retryTurn:F,questionPanel:I,answeringQuestion:L,answerQuestion:ae,isSessionGenerating:R,currentEngine:H,pendingEngine:U,isEngineLocked:W,pickEngine:K,stop:X,inputContextUsage:se,queuedMessages:Se,queuePaused:Ce,removeQueuedMessage:we,flushQueued:Te}=ve(),Ee=s(()=>W.value?H.value:U.value);function De(e){W.value||K(e)}let Oe=s(()=>{let e=l.theme;return e===`dark`||e===`auto`&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}),ke=s(()=>le(C.value,R)),Ae=Z(),je=s(()=>ke.value.find(e=>e.id===w.value)?.title||Y(`@AGENT:对话`)),Me={"--welcome-avatar":`url("${_e}")`},Ne=s(()=>ce(l.agentPresetPrompts));async function Pe(e){await ie(e.text,e.files),await u(),ze()}async function Fe(e){await ie(e.prompt),await u(),ze()}let Ie=pe(),Le=G(null),Re=ge();function ze(e=!0){Le.value?.scrollToBottom(e)}B(()=>E.value.length,()=>{u(()=>ze(!1))});function Be(e){O(e),m.value=`chat`}function Ve(e){e&&(g.value=`chat`,Be(e))}function He(){re(),m.value=`chat`}let Ue=G(280),We=G(!1);function Ge(e){We.value=!0;let t=e.clientX,n=Ue.value,r=e=>{let r=e.clientX-t,i=Math.max(200,Math.min(500,n+r));Ue.value=i},i=()=>{We.value=!1,document.removeEventListener(`mousemove`,r),document.removeEventListener(`mouseup`,i)};document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)}return B(f,e=>{e||(m.value=`chat`)}),B(()=>[l.currentDirectory,D.value],async([e,t],n)=>{let r=!n||e!==n[0],i=!!n&&n[1]===!0&&!t;(r||i)&&await ne(),w.value&&!D.value&&!C.value.some(e=>e.sessionId===w.value)&&re()},{immediate:!0}),(t,i)=>(b(),n(`div`,{ref_key:`rootRef`,ref:d,class:`agent-view`},[g.value===`chat`&&!o(f)?(b(),n(x,{key:0},[a(`aside`,{class:`agent-sidebar`,style:T({width:Ue.value+`px`})},[c(o(J),{class:`agent-conversations`,items:ke.value,"active-id":o(w),loading:o(ee),labels:o(Ae),onSelect:Be,onNew:He,onRename:o(M),onDelete:o(j)},null,8,[`items`,`active-id`,`loading`,`labels`,`onRename`,`onDelete`])],4),a(`div`,{class:h([`sidebar-resizer`,{active:We.value}]),onMousedown:Ge},null,34)],64)):N(``,!0),a(`main`,Rn,[a(`nav`,zn,[(b(!0),n(x,null,k(y.value,t=>(b(),n(`button`,{key:t.id,type:`button`,class:h([`agent-tab`,{active:g.value===t.id}]),role:`tab`,"aria-selected":g.value===t.id,onClick:e=>g.value=t.id},[c(o(p),null,{default:P(()=>[(b(),v(z(t.icon)))]),_:2},1024),a(`span`,null,e(t.label),1)],10,Bn))),128)),g.value===`chat`?(b(),v(be,{key:0,class:`agent-engine`,engine:Ee.value,locked:o(W),onSelect:De},null,8,[`engine`,`locked`])):N(``,!0),g.value===`chat`?(b(),v(xe,{key:1,class:`agent-copy`,messages:o(E),title:je.value,engine:o(me)(Ee.value)},null,8,[`messages`,`title`,`engine`])):N(``,!0)]),a(`div`,Vn,[g.value===`chat`?(b(),n(`div`,Hn,[o(f)&&m.value===`list`?(b(),n(`div`,Un,[c(o(J),{class:`agent-conversations`,items:ke.value,"active-id":o(w),loading:o(ee),labels:o(Ae),onSelect:Be,onNew:He,onRename:o(M),onDelete:o(j)},null,8,[`items`,`active-id`,`loading`,`labels`,`onRename`,`onDelete`])])):(b(),n(x,{key:1},[o(f)?(b(),n(`div`,Wn,[a(`button`,{type:`button`,class:`agent-page-back`,title:o(Y)(`@AGENT:返回会话列表`),"aria-label":o(Y)(`@AGENT:返回会话列表`),onClick:i[0]||=e=>m.value=`list`},[...i[1]||=[a(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[a(`line`,{x1:`19`,y1:`12`,x2:`5`,y2:`12`}),a(`polyline`,{points:`12 19 5 12 12 5`})],-1)]],8,Gn),a(`span`,Kn,e(je.value),1)])):N(``,!0),a(`div`,{class:`agent-chat-host`,style:Me},[o(te)?(b(),n(`div`,qn,[c(o(p),{class:`is-loading`,size:32},{default:P(()=>[c(o(r))]),_:1}),a(`span`,null,e(o(Y)(`@AGENT:加载会话中...`)),1)])):(b(),v(o(q),{key:1,ref_key:`chatContainerRef`,ref:Le,messages:o(E),"preset-questions":Ne.value,"welcome-title":o(Y)(`@AGENT:智能体助手`),"welcome-description":o(Y)(`@AGENT:我可以帮你阅读代码、执行命令、修改文件。选择下方话题或直接输入你的问题。`),"assistant-name":o(fe),"assistant-avatar":o(_e),theme:Oe.value,generating:o(D),"allow-queue":!0,queued:o(Se),"queue-paused":o(Ce),"queue-labels":o(Re),"upload-config":{accept:o(de)},"context-usage":o(se),placeholder:o(D)?o(Y)(`@AGENT:生成中,发送后会排队,等本轮跑完自动接上…`):o(Y)(`@AGENT:输入消息,Enter 发送`),question:o(I),"question-submitting":o(L),"question-labels":o(Ie),"plan-config":{labels:{title:o(Y)(`@AGENT:计划`),raw:o(Y)(`@AGENT:原始参数`)}},"message-rail-config":o(ue),"message-meta-config":o(he),onSend:Pe,onSelect:Fe,onStop:o(X),onUnqueue:o(we),onFlushQueued:o(Te),onAnswer:o(ae),onRetry:o(F)},null,8,[`messages`,`preset-questions`,`welcome-title`,`welcome-description`,`assistant-name`,`assistant-avatar`,`theme`,`generating`,`queued`,`queue-paused`,`queue-labels`,`upload-config`,`context-usage`,`placeholder`,`question`,`question-submitting`,`question-labels`,`plan-config`,`message-rail-config`,`message-meta-config`,`onStop`,`onUnqueue`,`onFlushQueued`,`onAnswer`,`onRetry`]))])],64))])):g.value===`schedule`?(b(),v(Ln,{key:1,onOpenSession:Ve})):(b(),v(gt,{key:2,type:_.value},null,8,[`type`]))])])],512))}}),[[`__scopeId`,`data-v-df7b54d8`]]);export{Jn as default};
@@ -1,20 +0,0 @@
1
- import"./rolldown-runtime-C0FnF6B9.js";import{$r as e,An as t,C as n,Dn as r,Dr as i,En as a,Fn as o,Fr as s,Gn as c,J as l,Jn as u,Jr as d,Ln as f,On as p,Pn as m,Qn as h,S as g,Sn as _,Vn as v,Xn as y,Y as ee,er as te,i as b,kn as x,lr as S,mr as C,tt as ne,w,xr as T}from"./element-plus-J45pKUrE.js";import{n as E,t as D}from"./_plugin-vue_export-helper-CDrhhAKC.js";import{t as O}from"./SvgIcon-Du5MOe8A.js";import{l as re}from"./configStore-D0oycG71.js";import{D as ie,V as ae,h as k}from"./index-DjaZpz97.js";import{d as oe,f as A,m as j,n as se,p as M}from"./agentConversations-BKjyYn-u.js";v(),C();function N(e,t=680){let n=T(0),r=null;function i(){let t=e.value;return t?(n.value=t.clientWidth,typeof ResizeObserver>`u`||(r=new ResizeObserver(e=>{let t=e[0]?.contentRect?.width;typeof t==`number`&&(n.value=t)}),r.observe(t),!0)):!1}return y(()=>{i()||c(()=>i())}),u(()=>{r?.disconnect(),r=null}),{width:n,narrow:a(()=>n.value>0&&n.value<t)}}v(),C(),s();var P={class:`agent-engine`},F=[`disabled`,`title`,`aria-label`],I={class:`agent-engine__name`},L={class:`agent-engine__item`},R={class:`agent-engine__item-name`},z={key:3,class:`agent-engine__item-missing`},B=D(f({__name:`AgentEngineSelector`,props:{engine:{},locked:{type:Boolean}},emits:[`select`],setup(s,{emit:c}){let u=s,f=c,m=ae(),v=a(()=>M(u.engine)),y=a(()=>({gai:!0,claude:m.claudeAvailable,opencode:m.opencodeAvailable,codex:m.codexAvailable})),b=T(!1),C=T(null);function D(e){if(!u.locked){if(!y.value[e]){if(!j(e))return;C.value=e,b.value=!0;return}f(`select`,e)}}return(a,c)=>(h(),t(`div`,P,[o(i(g),{trigger:`click`,onCommand:D},{dropdown:S(()=>[o(i(w),null,{default:S(()=>[(h(!0),t(_,null,te(i(oe),a=>(h(),p(i(n),{key:a.id,command:a.id},{default:S(()=>[r(`span`,L,[i(j)(a.id)?(h(),p(k,{key:0,executor:a.id,class:`agent-engine__item-icon`},null,8,[`executor`])):(h(),p(O,{key:1,"icon-class":i(A),class:`agent-engine__item-icon`},null,8,[`icon-class`])),r(`span`,R,e(a.name),1),s.engine===a.id?(h(),p(i(l),{key:2,class:`agent-engine__item-check`},{default:S(()=>[o(i(ne))]),_:1})):y.value[a.id]?x(``,!0):(h(),t(`span`,z,e(i(E)(`@42BB9:未安装`)),1))])]),_:2},1032,[`command`]))),128))]),_:1})]),default:S(()=>[r(`button`,{type:`button`,class:d([`agent-engine__btn`,{"is-locked":s.locked}]),disabled:s.locked,title:s.locked?i(E)(`@AGENT:本会话的引擎已锁定;要换引擎请新建会话`):i(E)(`@AGENT:新建会话使用的引擎`),"aria-label":i(E)(`@AGENT:智能体引擎`)},[i(j)(s.engine)?(h(),p(k,{key:0,executor:s.engine,class:`agent-engine__icon`},null,8,[`executor`])):(h(),p(O,{key:1,"icon-class":i(A),class:`agent-engine__icon`},null,8,[`icon-class`])),r(`span`,I,e(v.value),1),o(i(l),{class:`agent-engine__caret`},{default:S(()=>[o(i(ee))]),_:1})],10,F)]),_:1}),o(ie,{modelValue:b.value,"onUpdate:modelValue":c[0]||=e=>b.value=e,tool:C.value},null,8,[`modelValue`,`tool`])]))}}),[[`__scopeId`,`data-v-cc0a8973`]]),V=8192;function H(e,t){return e.length>t?`…(前文已截断)\n${e.slice(-t)}`:e}function U(e,t){let n=e||`done`;return n!==`pending`&&n!==`running`||t===`running`||t===`pending`?n:t===`cancelled`||t===`error`?`error`:`done`}function W(e){let t=e?.toolCalls;if(!Array.isArray(t)||t.length===0)return[];let n=e?.status||`done`,r=[];for(let e=0;e<t.length;e++){let i=t[e];if(!i||typeof i!=`object`)continue;let a=U(i.status,n),o=typeof i.result==`string`?i.result:``;r.push({id:typeof i.id==`string`&&i.id?i.id:`tool-${e}`,name:typeof i.name==`string`?i.name:``,argsPreview:typeof i.argsPreview==`string`?i.argsPreview:``,arguments:typeof i.arguments==`string`?i.arguments:``,result:o?H(o,V):``,status:a,error:typeof i.error==`string`&&i.error?i.error:void 0})}return r}var G=`
2
-
3
- ---
4
-
5
- `,K=`[运行环境 ·`,ce=`## 跨会话记忆库`,le=/\n\n---\n本任务包含 \d+ 个附件(请按文件路径读取[\s\S]*$/,ue=/\n\n续接 #\d+\s*$/;function q(e){let t=e.indexOf(G);return t===-1?0:t+7}function J(e){let t=typeof e==`string`?e:``;return t?(t.startsWith(K)&&(t=t.slice(q(t))),t.startsWith(ce)&&(t=t.slice(q(t))),t=t.replace(le,``).replace(ue,``),t.trim()):``}function Y(e){switch(e){case`todo`:return E(`@WORKBENCH:待执行`);case`running`:return E(`@WORKBENCH:执行中`);case`done`:return E(`@WORKBENCH:已完成`);case`error`:return E(`@WORKBENCH:出错`);case`cancelled`:return E(`@WORKBENCH:已取消`);case`pending`:return E(`@WORKBENCH:排队中`);default:return e}}function de(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)`}}function X(e){let t=e?new Date(e):new Date;if(Number.isNaN(t.getTime()))return``;let n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}`}function fe(e,t=120){let n=e.replace(/\s+/g,` `).trim();return n.length>t?`${n.slice(0,t-1)}…`:n}function pe(e){let t=(e.match(/`+/g)||[]).reduce((e,t)=>Math.max(e,t.length),0),n="`".repeat(Math.max(3,t+1));return`${n}\n${e}\n${n}`}function Z(e,t){return`### ${e}\n\n${t.trim()}`}function me(e){let t=[];return e.forEach((e,n)=>{let r=e.name||E(`@WORKBENCH:工具`),i=fe(e.argsPreview||``);t.push(`${n+1}. **${r}**${i?` — \`${i}\``:``}`);let a=(e.status===`error`?e.error:e.result)||e.result||e.error||``;a.trim()&&t.push(``,pe(a.trim()))}),t.join(`
6
- `)}function he(e,t={},n={}){let r=Array.isArray(e)?e.filter(Boolean):[],i=n.scope===`brief`,a=[];if(r.forEach((e,t)=>{let n=[],r=J(e.prompt);if(r&&n.push(Z(E(`@WORKBENCH:用户提示词`),r)),!i){let t=(e.thinking||``).trim();t&&n.push(Z(E(`@WORKBENCH:Claude 思考`),t));let r=me(W(e));r&&n.push(Z(E(`@WORKBENCH:工具调用`),r))}let o=(e.output||``).trim();o&&n.push(Z(E(`@WORKBENCH:模型返回`),o));let s=(e.error||e.agentError||``).trim();if(s&&n.push(Z(E(`@WORKBENCH:出错`),s)),n.length===0)return;let c=[re(e.agent),Y(e.status),X(e.startedAt)].filter(Boolean);a.push(`## ${E(`@WORKBENCH:第 {n} 轮`,{n:t+1})}\n\n*${c.join(` · `)}*\n\n${n.join(`
7
-
8
- `)}`)}),a.length===0)return``;let o=[`# ${(t.title||``).trim()||E(`@WORKBENCH:未命名任务`)}`],s=(t.projectName||``).trim();return s&&o.push(``,`- ${E(`@WORKBENCH:项目:{name}`,{name:s})}`),o.push(`- ${E(`@WORKBENCH:导出时间:{time}`,{time:X((t.now||new Date).toISOString())})}`),`${o.join(`
9
- `)}\n\n---\n\n${a.join(`
10
-
11
- ---
12
-
13
- `)}\n`}function ge(e,t=120){let n=e.replace(/\s+/g,` `).trim();return n.length>t?`${n.slice(0,t-1)}…`:n}function _e(e){let t=(e.match(/`+/g)||[]).reduce((e,t)=>Math.max(e,t.length),0),n="`".repeat(Math.max(3,t+1));return`${n}\n${e}\n${n}`}function Q(e,t){return`### ${e}\n\n${t.trim()}`}function ve(e,t){return e===`user`?E(`@AGENT:我`):t}function ye(e){if(!Array.isArray(e)||!e.length)return``;let t=[];return e.forEach((e,n)=>{let r=e.name||E(`@AGENT:工具`),i=ge(e.argsPreview||``);t.push(`${n+1}. **${r}**${i?` — \`${i}\``:``}`);let a=(e.status===`error`?e.error:e.result)||e.result||e.error||``;a.trim()&&t.push(``,_e(a.trim()))}),t.join(`
14
- `)}function be(e,t,n){if(e.role===`system`)return``;let r=[];if(t){let t=(e.reasoning||``).trim();t&&r.push(Q(E(`@AGENT:思考`),t));let n=ye(e.toolCalls);n&&r.push(Q(E(`@AGENT:工具调用`),n))}let i=(e.content||``).trim();i&&r.push(i);let a=(e.attachments||[]).map(e=>e.name).filter(Boolean);a.length&&r.push(`${E(`@AGENT:附件`)}:${a.join(`、`)}`);let o=(e.error||``).trim();if(o&&r.push(`> ⚠️ ${o}`),r.length===0){if(e.role!==`assistant`)return``;r.push(`*${E(`@AGENT:本轮未输出正文`)}*`)}return`## ${ve(e.role,n)}\n\n${r.join(`
15
-
16
- `)}`}function xe(e,t={},n={}){let r=Array.isArray(e)?e.filter(Boolean):[],i=n.scope===`full`,a=(t.assistantName||``).trim()||`g ai`,o=[];for(let e of r){let t=be(e,i,a);t&&o.push(t)}if(o.length===0)return``;let s=[`${E(`@AGENT:导出时间`)}:${X((t.now||new Date).toISOString())}`],c=(t.engine||``).trim();return c&&s.push(`${E(`@AGENT:引擎`)}:${c}`),s.push(E(`@AGENT:共 {n} 条消息`,{n:o.length})),`${`# ${(t.title||``).trim()||E(`@AGENT:无标题`)}\n\n- ${s.join(` · `)}`}\n\n---\n\n${o.join(`
17
-
18
- ---
19
-
20
- `)}\n`}v(),C(),s();var Se={class:`csb`},Ce=[`title`,`aria-label`],$={key:0,viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},we={key:1,viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`,"stroke-linejoin":`round`},Te=[`title`,`aria-label`],Ee=D(f({__name:`CopySessionButton`,props:{messages:{},title:{},engine:{}},setup(a){let s=a,c=T(!1),l=null;u(()=>{l&&clearTimeout(l)});async function f(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 p(e){let t=xe(s.messages||[],{title:s.title,engine:s.engine,assistantName:se},{scope:e});if(!t){b.warning(E(`@AGENT:暂无会话内容可复制`));return}if(!await f(t)){b.error(E(`@AGENT:复制失败`));return}c.value=!0,b.success(E(`@AGENT:已复制会话`)),l&&clearTimeout(l),l=setTimeout(()=>{c.value=!1,l=null},1500)}function _(e){p(e===`full`?`full`:`brief`)}return(a,s)=>{let l=n,u=w,f=g;return h(),t(`div`,Se,[r(`button`,{type:`button`,class:d([`csb__btn`,{"is-flash":c.value}]),title:i(E)(`@AGENT:复制本会话的对话内容(默认精简:仅对话正文)`),"aria-label":i(E)(`@AGENT:复制会话`),onClick:s[0]||=e=>p(`brief`)},[c.value?(h(),t(`svg`,$,[...s[1]||=[r(`polyline`,{points:`20 6 9 17 4 12`},null,-1)]])):(h(),t(`svg`,we,[...s[2]||=[r(`rect`,{x:`9`,y:`9`,width:`13`,height:`13`,rx:`2`},null,-1),r(`path`,{d:`M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1`},null,-1)]]))],10,Ce),o(f,{trigger:`click`,placement:`bottom-end`,onCommand:_},{dropdown:S(()=>[o(u,null,{default:S(()=>[o(l,{command:`brief`},{default:S(()=>[m(e(i(E)(`@AGENT:精简:对话正文`)),1)]),_:1}),o(l,{command:`full`},{default:S(()=>[m(e(i(E)(`@AGENT:全量:对话正文 + 思考 + 工具调用`)),1)]),_:1})]),_:1})]),default:S(()=>[r(`button`,{type:`button`,class:`csb__btn csb__caret`,title:i(E)(`@AGENT:选择复制范围`),"aria-label":i(E)(`@AGENT:选择复制范围`)},[...s[3]||=[r(`svg`,{viewBox:`0 0 24 24`,width:`11`,height:`11`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[r(`polyline`,{points:`6 9 12 15 18 9`})],-1)]],8,Te)]),_:1})])}}}),[[`__scopeId`,`data-v-065fed5e`]]);export{J as a,N as c,Y as i,he as n,W as o,de as r,B as s,Ee as t};
@@ -1 +0,0 @@
1
- import"./rolldown-runtime-C0FnF6B9.js";import{$r as e,An as t,Dn as n,Dr as r,En as i,Fn as a,Fr as o,Gn as s,Jn as c,Jr as l,Ln as u,Nn as ee,On as d,Pn as f,Qn as p,Sn as m,Sr as te,Vn as h,W as ne,Xn as re,Xr as g,bn as ie,dn as ae,er as oe,i as _,kn as v,lr as se,mn as ce,mr as y,r as le,sr as b,ur as x,vn as ue,wn as de,xn as S,xr as C,yn as fe}from"./element-plus-J45pKUrE.js";import{a as pe,n as w,r as me}from"./vendor-B3NyhlYR.js";import{n as T,t as E}from"./_plugin-vue_export-helper-CDrhhAKC.js";import{t as he}from"./SvgIcon-Du5MOe8A.js";import{t as ge}from"./configStore-D0oycG71.js";import{a as _e,c as ve,i as ye,n as be,o as xe,r as Se,s as Ce}from"./monaco-ChZ0d0qB.js";import{n as we,r as Te}from"./flow-mindmap-DvB74LE1.js";import{A as Ee,F as De,I as Oe,L as ke,M as Ae,N as je,P as Me,R as Ne,a as Pe,f as Fe,j as Ie}from"./index-DjaZpz97.js";import{a as Le,c as Re,i as ze,l as Be,n as Ve,o as He,p as Ue,r as We,s as D,t as Ge,u as Ke}from"./agentConversations-BKjyYn-u.js";import{c as qe,s as Je,t as Ye}from"./CopySessionButton-Do4vHJm6.js";function Xe(e){return{ts:`typescript`,tsx:`typescript`,js:`javascript`,mjs:`javascript`,cjs:`javascript`,jsx:`javascript`,vue:`html`,html:`html`,htm:`html`,css:`css`,scss:`scss`,less:`less`,json:`json`,jsonc:`json`,md:`markdown`,markdown:`markdown`,yaml:`yaml`,yml:`yaml`,toml:`ini`,xml:`xml`,svg:`xml`,sh:`shell`,bash:`shell`,zsh:`shell`,fish:`shell`,ps1:`powershell`,py:`python`,go:`go`,rs:`rust`,java:`java`,kt:`kotlin`,rb:`ruby`,php:`php`,c:`c`,cpp:`cpp`,h:`cpp`,cs:`csharp`,sql:`sql`,graphql:`graphql`,gql:`graphql`,txt:`plaintext`,log:`plaintext`,ini:`ini`,env:`ini`,gitignore:`ini`,dockerfile:`dockerfile`}[e.toLowerCase()]??`plaintext`}h(),y();var Ze={class:`mindmap-preview`},Qe={class:`mindmap-preview-canvas`},$e=E(u({__name:`MindmapPreview`,props:{content:{}},setup(e){let o=e,s=i(()=>Te(o.content||``,`未命名文档`));return(e,i)=>(p(),t(`div`,Ze,[i[0]||=n(`div`,{class:`mindmap-preview-header`},[n(`span`,{class:`mindmap-preview-title`},`整篇导图`),n(`span`,{class:`mindmap-preview-hint`},`基于整篇 Markdown 自动生成 · 阅读模式`)],-1),n(`div`,Qe,[a(r(we),{data:s.value,"preview-mode":``},null,8,[`data`])])]))}}),[[`__scopeId`,`data-v-d2fe328b`]]);h(),y(),o(),ae();var et={class:`agent-panel-header`},tt=[`title`,`aria-label`],nt={class:`agent-panel-title`},O={key:1,class:`agent-panel-title`},k=[`title`,`aria-label`],A=[`title`],rt={class:`agent-panel-convs`},it=[`data-theme`],at=[`title`],ot={class:`agent-context-att-name`},st=[`title`,`aria-label`],ct=E(u({__name:`EditorAgentPanel`,props:{activeFilePath:{},activeFileName:{},active:{type:Boolean}},emits:[`close`],setup(o,{emit:u}){let f=o,te=u,{theme:h}=De(),ne=i(()=>h.value===`dark`?`dark`:`light`),{sessions:g,sessionsLoading:ie,currentSessionId:ae,messages:oe,isStreaming:_,questionPanel:se,answeringQuestion:ce,isSessionGenerating:y,currentEngine:le,pendingEngine:ue,isEngineLocked:S,pickEngine:E,loadSessions:he,loadSession:ge,deleteSession:_e,renameSession:ve,newSession:ye,sendMessage:be,retryTurn:xe,answerQuestion:Se,stop:Ce,inputContextUsage:we,queuedMessages:Te,queuePaused:Ee,removeQueuedMessage:Oe,flushQueued:ke}=Ke(),Ae=i(()=>S.value?le.value:ue.value);function je(e){S.value||E(e)}let Me=i(()=>Re(g.value,y)),Ne=Le(),Pe=He(),Fe=D(),Ie=i(()=>Me.value.find(e=>e.id===ae.value)?.title||``),Xe=C(null),Ze=C(null),Qe=C(null),$e=C(null),ct=C(null),{width:j,narrow:M}=qe(ct),N=C(`chat`),P=C(null),F=C(!1),I=null,L=i(()=>!!f.activeFileName&&!F.value);function lt(e){return Array.from(e.children).find(e=>e.classList?.contains(`acu-input-attachments`))??null}function R(){let e=Ze.value?.$el;if(!e)return;let t=e.querySelector(`.agent-context-slot`);if(!L.value){if(!t)return;P.value=null,s(()=>t.remove());return}let n=P.value&&e.contains(P.value)?P.value:t;n||(n=document.createElement(`div`),n.className=`agent-context-slot`);let r=lt(e),i=r??e;n.parentElement!==i&&i.insertBefore(n,r?r.firstChild:e.firstChild),P.value=n}function ut(e=!0){Xe.value?.scrollToBottom(e)}async function z(e){let t=F.value?void 0:f.activeFilePath||void 0;await be(e.text,e.files,{openFilePath:t}),await s(),ut()}function dt(e){ge(e),N.value=`chat`}function ft(){ye(),N.value=`chat`}b(()=>oe.value.length,()=>{s(()=>ut(!1))});function pt(){let e=$e.value;!e||typeof MutationObserver>`u`||(I?.disconnect(),I=new MutationObserver(()=>R()),I.observe(e,{childList:!0,subtree:!0}))}return b(()=>f.active,e=>{e&&(N.value=`chat`,he().catch(()=>{}),s(()=>{R(),ut(!1)}))}),b(M,e=>{e||(N.value=`chat`)}),b(()=>f.activeFilePath,()=>{F.value=!1}),b(L,e=>{e&&s(R)}),re(()=>{he().catch(()=>{}),s(()=>{R(),pt()})}),c(()=>{I?.disconnect(),I=null,P.value=null}),(i,s)=>(p(),t(`div`,{ref_key:`rootRef`,ref:ct,class:`editor-agent-panel`},[n(`div`,et,[r(M)&&N.value===`list`?(p(),t(m,{key:0},[n(`button`,{class:`agent-panel-icon-btn agent-panel-back-btn`,title:r(T)(`@EDITOR:返回对话`),"aria-label":r(T)(`@EDITOR:返回对话`),onClick:s[0]||=e=>N.value=`chat`},[...s[4]||=[n(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`line`,{x1:`19`,y1:`12`,x2:`5`,y2:`12`}),n(`polyline`,{points:`12 19 5 12 12 5`})],-1)]],8,tt),n(`span`,nt,e(r(T)(`@EDITOR:会话列表`)),1)],64)):(p(),t(`span`,O,e(r(T)(`@EDITOR:g ai 对话`)),1)),s[7]||=n(`div`,{class:`agent-panel-spacer`},null,-1),!r(M)||N.value===`chat`?(p(),d(Je,{key:2,class:`agent-panel-engine`,engine:Ae.value,locked:r(S),onSelect:je},null,8,[`engine`,`locked`])):v(``,!0),!r(M)||N.value===`chat`?(p(),d(Ye,{key:3,class:`agent-panel-copy`,messages:r(oe),title:Ie.value,engine:r(Ue)(Ae.value)},null,8,[`messages`,`title`,`engine`])):v(``,!0),r(M)&&N.value===`chat`?(p(),t(`button`,{key:4,class:`agent-panel-icon-btn agent-panel-list-btn`,title:r(T)(`@EDITOR:会话列表`),"aria-label":r(T)(`@EDITOR:会话列表`),onClick:s[1]||=e=>N.value=`list`},[...s[5]||=[ee(`<svg viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" data-v-15f906cd><line x1="8" y1="6" x2="21" y2="6" data-v-15f906cd></line><line x1="8" y1="12" x2="21" y2="12" data-v-15f906cd></line><line x1="8" y1="18" x2="21" y2="18" data-v-15f906cd></line><line x1="3" y1="6" x2="3.01" y2="6" data-v-15f906cd></line><line x1="3" y1="12" x2="3.01" y2="12" data-v-15f906cd></line><line x1="3" y1="18" x2="3.01" y2="18" data-v-15f906cd></line></svg>`,1)]],8,k)):v(``,!0),n(`button`,{class:`agent-panel-icon-btn`,title:r(T)(`@EDITOR:关闭对话`),onClick:s[2]||=e=>te(`close`)},[...s[6]||=[n(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"stroke-linecap":`round`},[n(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),n(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]],8,A)]),n(`div`,{class:l([`agent-panel-body`,{"is-wide":!r(M)}])},[x(n(`div`,rt,[a(r(me),{"show-search":!0,items:Me.value,"active-id":r(ae),loading:r(ie),labels:r(Ne),onSelect:dt,onNew:ft,onRename:r(ve),onDelete:r(_e)},null,8,[`items`,`active-id`,`loading`,`labels`,`onRename`,`onDelete`])],512),[[fe,!r(M)||N.value===`list`]]),x(n(`div`,{ref_key:`chatHostRef`,ref:Qe,class:`agent-panel-chat`},[a(r(pe),{ref_key:`chatRef`,ref:Xe,"show-input":!1,messages:r(oe),"assistant-name":r(Ve),"assistant-avatar":r(Ge),theme:ne.value,question:r(se),"question-submitting":r(ce),"question-labels":r(Pe),"plan-config":{labels:{title:r(T)(`@AGENT:计划`),raw:r(T)(`@AGENT:原始参数`)}},"message-rail-config":r(ze),"message-meta-config":r(We),onAnswer:r(Se),onRetry:r(xe)},null,8,[`messages`,`assistant-name`,`assistant-avatar`,`theme`,`question`,`question-submitting`,`question-labels`,`plan-config`,`message-rail-config`,`message-meta-config`,`onAnswer`,`onRetry`])],512),[[fe,!r(M)||N.value===`chat`]]),r(j)>0?(p(),t(`div`,{key:0,ref_key:`composerRef`,ref:$e,class:`agent-panel-composer acu-root`,"data-theme":ne.value},[a(r(w),{ref_key:`inputRef`,ref:Ze,generating:r(_),"allow-queue":!0,queued:r(Te),"queue-paused":r(Ee),"queue-labels":r(Fe),placeholder:r(_)?r(T)(`@AGENT:生成中,发送后会排队,等本轮跑完自动接上…`):r(T)(`@AGENT:输入消息,Enter 发送`),"upload-config":{accept:r(Be)},"context-usage":r(we),onSend:z,onStop:r(Ce),onUnqueue:r(Oe),onFlushQueued:r(ke)},null,8,[`generating`,`queued`,`queue-paused`,`queue-labels`,`placeholder`,`upload-config`,`context-usage`,`onStop`,`onUnqueue`,`onFlushQueued`]),P.value?(p(),d(de,{key:0,to:P.value},[L.value?(p(),t(`div`,{key:0,class:`agent-context-att`,title:o.activeFilePath||``},[s[9]||=n(`svg`,{class:`agent-context-att-icon`,viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.7`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[n(`path`,{d:`M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z`}),n(`polyline`,{points:`14 3 14 8 19 8`})],-1),n(`span`,ot,e(o.activeFileName),1),n(`button`,{type:`button`,class:`agent-context-att-remove`,title:r(T)(`@EDITOR:不引用当前文档`),"aria-label":r(T)(`@EDITOR:不引用当前文档`),onClick:s[3]||=e=>F.value=!0},[...s[8]||=[n(`svg`,{viewBox:`0 0 24 24`,width:`10`,height:`10`,fill:`none`,stroke:`currentColor`,"stroke-width":`3`,"stroke-linecap":`round`,"aria-hidden":`true`},[n(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),n(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]],8,st)],8,at)):v(``,!0)],8,[`to`])):v(``,!0)],8,it)):v(``,!0)],2)],512))}}),[[`__scopeId`,`data-v-15f906cd`]]),j=1080,M=6e5,N=.86;function P(e){if(!e||e.startsWith(`data:`))return!1;if(e.startsWith(`blob:`)||e.startsWith(`/`))return!0;try{return new URL(e,location.href).origin===location.origin}catch{return!1}}async function F(e){try{let t=await fetch(e);if(!t.ok)return null;let n=await t.blob();return await new Promise(e=>{let t=new FileReader;t.onload=()=>e(t.result||``),t.onerror=()=>e(``),t.readAsDataURL(n)})}catch{return null}}function I(e){return new Promise(t=>{let n=!1,r=e=>{n||(n=!0,t(e))};if(typeof Image>`u`){r(e);return}let i=new Image,a=setTimeout(()=>r(e),4e3);i.onload=()=>{if(clearTimeout(a),!(i.naturalWidth>j||e.length>M)){r(e);return}try{let t=Math.min(1,j/i.naturalWidth),n=Math.max(1,Math.round(i.naturalWidth*t)),a=Math.max(1,Math.round(i.naturalHeight*t)),o=document.createElement(`canvas`);o.width=n,o.height=a;let s=o.getContext(`2d`);if(!s){r(e);return}s.fillStyle=`#ffffff`,s.fillRect(0,0,n,a),s.drawImage(i,0,0,n,a),r(o.toDataURL(`image/jpeg`,N))}catch{r(e)}},i.onerror=()=>{clearTimeout(a),r(e)},i.src=e})}async function L(e){let t=await F(e);return t?I(t):null}async function lt(e){let t=Array.from(e.querySelectorAll(`img`)).filter(e=>P(e.getAttribute(`src`)||``)),n=0;return await Promise.all(t.map(async e=>{let t=await L(e.getAttribute(`src`)||``);t?e.setAttribute(`src`,t):n+=1})),n}function R(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}var ut={h1:`font-size:26px;font-weight:700;line-height:1.35;margin:28px 0 16px;color:#111;`,h2:`font-size:22px;font-weight:700;line-height:1.4;margin:26px 0 14px;color:#111;`,h3:`font-size:19px;font-weight:700;line-height:1.45;margin:22px 0 12px;color:#222;`,h4:`font-size:17px;font-weight:600;line-height:1.5;margin:20px 0 10px;color:#333;`,h5:`font-size:16px;font-weight:600;line-height:1.5;margin:18px 0 8px;color:#333;`,h6:`font-size:15px;font-weight:600;line-height:1.5;margin:18px 0 8px;color:#555;`,p:`font-size:16px;line-height:1.8;margin:16px 0;color:#333;`,li:`font-size:16px;line-height:1.8;margin:0 0 6px;color:#333;`,ul:`margin:16px 0;padding-left:24px;`,ol:`margin:16px 0;padding-left:24px;`,blockquote:`margin:16px 0;padding:8px 16px;border-left:4px solid #e2e2e2;background:#f7f7f7;color:#666;font-size:15px;line-height:1.8;`,hr:`border:none;border-top:1px solid #e5e5e5;margin:26px 0;`,a:`color:#576b95;text-decoration:none;`,strong:`font-weight:700;color:#111;`,em:`font-style:italic;color:#555;`,code:`font-family:Menlo,Consolas,Monaco,monospace;font-size:0.92em;background:#f2f3f5;color:#c7254e;padding:1px 5px;border-radius:3px;`,pre:`font-family:Menlo,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;background:#f6f8fa;color:#24292f;padding:12px 14px;border-radius:6px;overflow-x:auto;margin:16px 0;`,table:`border-collapse:collapse;width:100%;margin:16px 0;font-size:14px;`,th:`border:1px solid #e0e0e0;padding:8px 10px;background:#f6f8fa;font-weight:600;text-align:left;color:#333;`,td:`border:1px solid #e0e0e0;padding:8px 10px;color:#333;`,img:`max-width:100%;height:auto;display:block;margin:16px auto;border-radius:6px;`};function z(e){e.querySelectorAll(`*`).forEach(e=>{let t=ut[e.tagName.toLowerCase()];t&&e.setAttribute(`style`,t)}),e.querySelectorAll(`pre code`).forEach(e=>e.setAttribute(`style`,`background:none;padding:0;color:inherit;font-size:inherit;`))}async function dt(e,t){let n=e.cloneNode(!0),r=t?await lt(n):0;return{html:n.innerHTML,leftover:r}}async function ft(e,t){let n=e.cloneNode(!0),r=t.inline?await lt(n):0;z(n);let i=(t.title||``).trim();return{html:`<section style="font-size:16px;line-height:1.8;color:#333;word-break:break-word;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;">${i?`<h1 style="font-size:26px;font-weight:700;line-height:1.35;margin:0 0 22px;color:#111;">${R(i)}</h1>`:``}${n.innerHTML}</section>`,leftover:r}}h(),y(),o(),ae();var pt={class:`sidebar-header`},mt={class:`sidebar-title`},ht={class:`sidebar-actions`},gt={class:`sidebar-search`},_t=[`placeholder`,`title`],vt=[`title`,`aria-label`],yt={key:0,class:`sidebar-tree`},bt={key:1,class:`tree-arrow-spacer`},xt={class:`tree-icon mit-icon`,"aria-hidden":`true`},St=[`xlink:href`],Ct=[`onClick`,`onContextmenu`],wt={key:1,class:`tree-arrow-spacer`},Tt={key:2,class:`tree-icon mit-icon`,"aria-hidden":`true`},Et=[`xlink:href`],Dt={key:3,class:`tree-icon mit-icon`,"aria-hidden":`true`},Ot=[`xlink:href`],kt=[`title`],At={key:0,class:`tree-name-hit`},jt={key:4,class:`tree-loading`},Mt={key:0,viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,style:{"flex-shrink":`0`,color:`var(--color-warning-dark)`}},Nt={key:1,viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,style:{"flex-shrink":`0`,color:`var(--text-meta)`}},Pt=[`placeholder`],Ft={key:0,class:`tree-node tree-inline-input-row`,style:{paddingLeft:`12px`}},It={key:0,viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,style:{"flex-shrink":`0`,color:`var(--color-warning-dark)`}},Lt={key:1,viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,style:{"flex-shrink":`0`,color:`var(--text-meta)`}},Rt=[`placeholder`],zt={key:1,class:`tree-empty`},Bt={key:1,class:`sidebar-loading`},Vt={class:`editor-main`},Ht={key:0,class:`editor-tabs`},Ut=[`onClick`,`title`],Wt={class:`tab-name`},Gt={key:0,class:`tab-dirty-dot`},Kt=[`onClick`],qt=[`title`],Jt=[`disabled`,`title`],Yt=[`title`],Xt={class:`editor-body`},Zt={key:0,class:`image-tab-placeholder`},Qt={viewBox:`0 0 24 24`,width:`56`,height:`56`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,style:{opacity:`.35`}},$t={class:`image-tab-placeholder-title`},en={class:`image-tab-placeholder-hint`},tn={class:`preview-header`},nn={class:`preview-title`},rn={class:`preview-ext-badge`},an=[`title`],on={class:`preview-body`},sn={key:0,class:`preview-copybar`},cn=[`disabled`,`title`],ln=[`disabled`,`title`],un=[`disabled`,`title`],dn=[`title`],fn=[`sandbox`,`srcdoc`],pn=6e4,mn=3e4,hn=E(u({__name:`EditorView`,props:{pendingFilePath:{}},setup(o){self.MonacoEnvironment={getWorker(e,t){return t===`json`?new Ce:t===`css`||t===`scss`||t===`less`?new xe:t===`html`||t===`handlebars`||t===`razor`?new _e:t===`typescript`||t===`javascript`?new ye:new ve}};let u=o,h=ge(),ae=Fe(),y=C([]),pe=C(!1),w=C(``),me=C(``),E=null;function we(){w.value=``,me.value=``,E&&=(clearTimeout(E),null)}b(w,e=>{E&&clearTimeout(E),E=setTimeout(()=>{me.value=e,E=null},180)}),c(()=>{E&&clearTimeout(E),Re(),wn()});let Te=null;function Le(){Re(),h.ui.fileTreeAutoRefresh&&(Te=setInterval(()=>{document.hidden||h.currentDirectory&&(w.value.trim()||D())},pn))}function Re(){Te&&=(clearInterval(Te),null)}b(()=>h.currentDirectory,async()=>{if(j=!1,Le(),await Be(),O.value.some(e=>e.isDirty)){j=!0;return}O.value=[],k.value=null,R(),await P()}),b(()=>h.ui.fileTreeAutoRefresh,()=>{Le()});async function ze(e,t=0){let n=await(await fetch(`/api/browse_directory?path=${encodeURIComponent(e)}`)).json();return n.success?n.items.map(e=>({...e,depth:t,expanded:!1,loading:!1,children:(e.type,void 0)})):[]}async function Be(){let e=h.currentDirectory;if(e){pe.value=!0;try{y.value=await ze(e,0)}finally{pe.value=!1}}}function Ve(e,t=new Set){for(let n of e)n.type===`directory`&&n.expanded&&(t.add(n.path),n.children&&Ve(n.children,t));return t}function He(e,t=0){return(e||[]).map(e=>{let n={name:e.name,path:e.path,type:e.type,depth:t,expanded:!1,loading:!1};return n.type===`directory`&&Array.isArray(e.children)&&(n.children=He(e.children,t+1),n.expanded=!0),n})}async function Ue(e){let t=h.currentDirectory;if(!t)return null;try{let n=await(await fetch(`/api/browse_directory_tree`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:t,expand:e})})).json().catch(()=>null);return!n?.success||!Array.isArray(n.items)?null:He(n.items,0)}catch{return null}}function We(e,t){let n=new Map(e.map(e=>[e.path,e])),r=e.length!==t.length;if(!r){for(let n=0;n<t.length;n++)if(e[n].path!==t[n].path){r=!0;break}}for(let e=0;e<t.length;e++){let i=t[e],a=n.get(i.path);a&&(t[e]=a,a.name!==i.name&&(a.name=i.name,r=!0),a.type===`directory`&&a.expanded&&Array.isArray(i.children)&&(Array.isArray(a.children)?We(a.children,i.children)&&(a.children=i.children,r=!0):(a.children=i.children,r=!0)))}return r}async function D(e={}){if(!h.currentDirectory)return;let t=await Ue([...Ve(y.value)]);if(!t){e.notifyOnError&&_.error(T(`@EDITOR:刷新失败`));return}if(y.value.length===0){y.value=t;return}We(y.value,t)&&(y.value=t)}async function Ge(e){if(e.type===`directory`){if(e.expanded)e.expanded=!1;else{if(!e.children){e.loading=!0;try{e.children=await ze(e.path,e.depth+1)}finally{e.loading=!1}}e.expanded=!0}}}function Ke(e){let t=[];for(let n of e)t.push(n),n.type===`directory`&&n.expanded&&n.children&&t.push(...Ke(n.children));return t}let qe=i(()=>me.value.trim().toLowerCase());function Je(e,t){if(!t)return e;let n=[];for(let r of e){let e=r.children?Je(r.children,t):[],i=r.name.toLowerCase().includes(t);r.type===`directory`?(i||e.length>0)&&(r.expanded=!0,r.children!==void 0&&(r.children=e),n.push(r)):i&&n.push(r)}return n}let Ye=i(()=>Je(y.value,qe.value)),Ze=i(()=>qe.value.length>0&&Ye.value.length===0);function Qe(e){let t=me.value.trim();if(!t)return[{text:e,hit:!1}];let n=e.toLowerCase(),r=t.toLowerCase(),i=[],a=0,o=n.indexOf(r,a);for(;o!==-1;)o>a&&i.push({text:e.slice(a,o),hit:!1}),i.push({text:e.slice(o,o+r.length),hit:!0}),a=o+r.length,o=n.indexOf(r,a);return a<e.length&&i.push({text:e.slice(a),hit:!1}),i}let et=C(null);function tt(){let e=et.value;e&&(e.focus(),e.select())}function nt(){w.value?(we(),et.value?.focus()):(et.value?.blur(),I.value?.focus())}let O=C([]),k=C(null),A=C(null);async function rt(e){if(A.value=e,e.type!==`file`){Ge(e);return}let t=O.value.find(t=>t.path===e.path);if(console.log(`[debug-open-in-editor] EditorView openFile existing tab check:`,{path:e.path,found:!!t,tabsCount:O.value.length}),t){k.value=e.path,s(()=>z());return}let n=e.name.split(`.`).pop()||``;if(sr.has(n.toLowerCase())){let t={path:e.path,name:e.name,content:``,originalContent:``,isDirty:!1,language:`plaintext`,diskMtimeMs:null};O.value.push(t),k.value=e.path,q.value=!0;return}if(Oe(e.name)){let t={path:e.path,name:e.name,content:``,originalContent:``,isDirty:!1,language:`office`,diskMtimeMs:null};O.value.push(t),k.value=e.path,J.value=!1,q.value=!0;return}try{let t=await fetch(`/api/editor/file?path=${encodeURIComponent(e.path)}`),r=await t.json();if(console.log(`[debug-open-in-editor] EditorView fetch /api/editor/file response:`,{path:e.path,status:t.status,data:r}),!r.success){_.error(`${T(`@EDITOR:打开文件失败: `)}${r.error}`);return}let i=Xe(n),a=L.get(e.path);a&&!a.isDisposed()&&a.setValue(r.content);let o={path:e.path,name:e.name,content:r.content,originalContent:r.content,isDirty:!1,language:i,diskMtimeMs:typeof r.mtimeMs==`number`?r.mtimeMs:null};console.log(`[debug-open-in-editor] EditorView pushing tab:`,{path:o.path,name:o.name,contentLen:o.content.length,lang:o.language}),O.value.push(o),k.value=e.path,console.log(`[debug-open-in-editor] EditorView tabs after push:`,O.value.length,`activeTabPath=`,k.value)}catch(e){console.log(`[debug-open-in-editor] EditorView fetch threw:`,e),_.error(`${T(`@EDITOR:打开文件失败: `)}${e.message}`)}}b(()=>u.pendingFilePath,async e=>{if(console.log(`[debug-open-in-editor] EditorView watcher fired, filePath=`,e),!e)return;await s();let t=e.split(/[\\/]/).pop()||e;console.log(`[debug-open-in-editor] EditorView calling openFile, name=`,t,`path=`,e),await rt({name:t,path:e,type:`file`,depth:0}),console.log(`[debug-open-in-editor] EditorView openFile returned`)},{immediate:!0});function it(e,t){t.stopPropagation();let n=O.value.findIndex(t=>t.path===e);n!==-1&&(!O.value[n].isDirty||confirm(T(`@EDITOR:文件未保存,确认关闭?`)))&&(O.value.splice(n,1),k.value===e&&(k.value=O.value[Math.min(n,O.value.length-1)]?.path??null))}let at=()=>O.value.find(e=>e.path===k.value)??null,ot=i(()=>({expandedDirs:[...Ve(y.value)],tabs:O.value.map(e=>e.path),activeTab:k.value})),st=!1,j=!1;function M(){j&&!st&&h.isUiLoaded&&h.saveEditorWorkspace(ot.value)}b(ot,()=>M());async function N(e){if(O.value.some(t=>t.path===e))return;let t=e.split(/[\\/]/).pop()||e,n=(t.split(`.`).pop()||``).toLowerCase();if(sr.has(n)){O.value.push({path:e,name:t,content:``,originalContent:``,isDirty:!1,language:`plaintext`,diskMtimeMs:null});return}if(Oe(t)){O.value.push({path:e,name:t,content:``,originalContent:``,isDirty:!1,language:`office`,diskMtimeMs:null});return}try{let r=await(await fetch(`/api/editor/file?path=${encodeURIComponent(e)}`)).json();if(!r.success)return;let i=L.get(e);i&&!i.isDisposed()&&I.value?.getModel()!==i&&(i.dispose(),L.delete(e)),O.value.push({path:e,name:t,content:r.content,originalContent:r.content,isDirty:!1,language:Xe(n),diskMtimeMs:typeof r.mtimeMs==`number`?r.mtimeMs:null})}catch{}}async function P(){try{for(let e=0;e<100&&!h.isUiLoaded;e++)await new Promise(e=>setTimeout(e,50));if(!h.isUiLoaded)return;V.value=h.ui.editorSidebarWidth;let e=h.getEditorWorkspace();if(!e)return;st=!0;try{if(e.expandedDirs.length>0){let t=await Ue(e.expandedDirs);t&&(y.value=t)}for(let t of e.tabs)await N(t);if(!u.pendingFilePath&&e.activeTab&&O.value.some(t=>t.path===e.activeTab)){k.value=e.activeTab;let t=at(),n=(t?.name.split(`.`).pop()||``).toLowerCase();t&&(sr.has(n)||Oe(t.name))&&(q.value=!0)}}finally{st=!1}}finally{j=!0,M()}}let F=C(null),I=te(null),L=new Map;function lt(e){let t=L.get(e.path);return(!t||t.isDisposed())&&(t=Se.createModel(e.content,e.language,be.file(e.path)),L.set(e.path,t)),t}function R(){I.value?.setModel(null);for(let e of L.values())e.isDisposed()||e.dispose();L.clear()}function ut(){if(!F.value)return;let e=document.documentElement.getAttribute(`data-theme`)===`dark`;I.value=Se.create(F.value,{theme:e?`vs-dark`:`vs`,fontSize:13,lineHeight:20,fontFamily:`'JetBrains Mono', 'Fira Code', 'Cascadia Code', Consolas, monospace`,minimap:{enabled:!0},scrollBeyondLastLine:!1,renderWhitespace:`selection`,automaticLayout:!0,tabSize:2,wordWrap:`off`,smoothScrolling:!0,cursorBlinking:`smooth`,padding:{top:8,bottom:8},editContext:!1}),I.value.onDidChangeModelContent(()=>{let e=at();if(!e)return;let t=I.value.getValue();e.content=t,e.isDirty=t!==e.originalContent}),I.value.onDidBlurEditorText(()=>{h.ui.editorAutoSave&&at()?.isDirty&&Dn(!1),requestAnimationFrame(()=>{if(!B.value||B.value.offsetParent===null)return;let e=document.activeElement;e&&(e.tagName===`INPUT`||e.tagName===`TEXTAREA`||e.isContentEditable||e.classList?.contains(`native-edit-context`)||e.classList?.contains(`monaco-editor`))||z()})})}b(k,e=>{if(!I.value||!e)return;let t=O.value.find(t=>t.path===e);if(!t)return;let n=lt(t);I.value.setModel(n),s(()=>z()),bn(e)});function z(){if(!I.value)return;I.value.focus();let e=document.querySelector(`.monaco-editor .native-edit-context`);e&&document.activeElement!==e&&requestAnimationFrame(()=>e.focus?.())}let hn=0,gn=new Map;async function _n(e){try{let t=await(await fetch(`/api/editor/file?path=${encodeURIComponent(e)}&meta=1`)).json();return!t?.success||typeof t.mtimeMs!=`number`?null:{mtimeMs:t.mtimeMs}}catch{return null}}async function vn(e){try{let t=await(await fetch(`/api/editor/file?path=${encodeURIComponent(e)}`)).json();return t?.success?{content:t.content,mtimeMs:typeof t.mtimeMs==`number`?t.mtimeMs:null}:null}catch{return null}}function yn(e,t,n){e.content=t,e.originalContent=t,e.isDirty=!1,e.diskMtimeMs=n;let r=L.get(e.path);if(!r||r.isDisposed())return;let i=I.value;if(!i||i.getModel()!==r){r.setValue(t);return}let a=i.saveViewState();r.pushEditOperations([],[{range:r.getFullModelRange(),text:t}],()=>null),i.restoreViewState(a)}async function bn(e){if(!e)return;let t=O.value.find(t=>t.path===e);if(!t||t.diskMtimeMs===null)return;let n=++hn,r=await _n(e);if(n!==hn||O.value.find(t=>t.path===e)!==t||!r||r.mtimeMs===t.diskMtimeMs)return;if(t.isDirty){if(gn.get(e)===r.mtimeMs)return;gn.set(e,r.mtimeMs);try{await le.confirm(T(`@EDITOR:这个文件在磁盘上已被改动,你这边也有未保存的编辑。重新加载会丢弃你的改动。`),T(`@EDITOR:文件已被外部改动`),{confirmButtonText:T(`@EDITOR:重新加载`),cancelButtonText:T(`@EDITOR:保留我的`),type:`warning`})}catch{return}if(t.isDirty)return}let i=await vn(e);i&&O.value.find(t=>t.path===e)===t&&yn(t,i.content,i.mtimeMs)}function xn(){document.hidden||bn(k.value)}let Sn=null;function Cn(){wn(),Sn=setInterval(()=>{document.hidden||bn(k.value)},mn)}function wn(){Sn&&=(clearInterval(Sn),null)}b(()=>O.value.filter(e=>e.isDirty).length,e=>{ae.setDirtyCount(e)},{immediate:!0}),c(()=>ae.setDirtyCount(0)),De(()=>{let e=document.documentElement.getAttribute(`data-theme`)===`dark`;Se.setTheme(e?`vs-dark`:`vs`)});let Tn=null;function En(){if(Tn||!B.value)return;let e=[B.value],t=B.value.parentElement;for(;t;){if(t.classList.contains(`view-pane`)||t.classList.contains(`editor-pane`)){e.push(t);break}t=t.parentElement}Tn=new MutationObserver(()=>{B.value&&B.value.offsetParent!==null&&k.value&&I.value&&(bn(k.value),requestAnimationFrame(()=>{let e=document.activeElement;e&&(e.tagName===`INPUT`||e.tagName===`TEXTAREA`||e.isContentEditable||e.classList?.contains(`native-edit-context`)||e.classList?.contains(`monaco-editor`))||z()}))});let n=Tn;e.forEach(e=>n.observe(e,{attributes:!0,attributeFilter:[`style`,`class`,`hidden`]}))}re(async()=>{ut(),await Be(),await P(),En(),Le(),window.addEventListener(`focus`,xn),document.addEventListener(`visibilitychange`,xn),Cn(),k.value&&s(()=>z())}),c(()=>{Tn?.disconnect(),Tn=null,window.removeEventListener(`focus`,xn),document.removeEventListener(`visibilitychange`,xn),I.value?.dispose(),L.forEach(e=>e.dispose()),L.clear()});async function Dn(e=!1){let t=at();if(t)try{let n=await(await fetch(`/api/editor/file`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:t.path,content:t.content})})).json();if(!n.success){_.error(`${T(`@EDITOR:保存失败: `)}${n.error}`);return}t.originalContent=t.content,t.isDirty=!1,typeof n.mtimeMs==`number`&&(t.diskMtimeMs=n.mtimeMs),e||_.success(T(`@EDITOR:已保存`))}catch(e){_.error(`${T(`@EDITOR:保存失败: `)}${e.message}`)}}function On(e){let t=e.ctrlKey||e.metaKey;if(t&&e.key.toLowerCase()===`f`){e.preventDefault(),tt();return}t&&e.key===`s`&&(e.preventDefault(),Dn())}re(()=>window.addEventListener(`keydown`,On)),c(()=>window.removeEventListener(`keydown`,On));let B=C(null),V=C(h.ui.editorSidebarWidth),kn=!1,An=0,jn=0;function Mn(e){kn=!0,An=e.clientX,jn=V.value,document.addEventListener(`mousemove`,Nn),document.addEventListener(`mouseup`,Pn),e.preventDefault()}function Nn(e){if(!kn)return;let t=e.clientX-An;V.value=Math.max(140,Math.min(400,jn+t))}function Pn(){kn=!1,document.removeEventListener(`mousemove`,Nn),document.removeEventListener(`mouseup`,Pn),V.value!==h.ui.editorSidebarWidth&&h.setEditorSidebarWidth(V.value)}function Fn(e){return e.type===`directory`?Ne(e.name):ke(e.name)}let H=C(null),U=C(null),W=C(null),In=C(null);function Ln(){let e=A.value;return e?e.type===`directory`?{parentPath:e.path,afterNode:e,depth:e.depth+1}:{parentPath:e.path.includes(`/`)||e.path.includes(`\\`)?e.path.replace(/[\\/][^\\/]+$/,``):h.currentDirectory??``,afterNode:e,depth:e.depth}:{parentPath:h.currentDirectory??``,afterNode:null,depth:0}}async function Rn(){let e=Ln();A.value?.type===`directory`&&!A.value.expanded&&await Ge(A.value),H.value={...e,kind:`file`,value:``},await s(),W.value?.focus()}async function zn(){let e=Ln();A.value?.type===`directory`&&!A.value.expanded&&await Ge(A.value),H.value={...e,kind:`directory`,value:``},await s(),W.value?.focus()}function Bn(){H.value=null}async function Vn(){let e=H.value;if(!e||!e.value.trim()){H.value=null;return}let t=e.value.trim(),n=e.parentPath.replace(/[/\\]$/,``)+`/`+t;if(e.kind===`file`){let e=await(await fetch(`/api/editor/file`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:n})})).json();if(!e.success){_.error(e.error);return}_.success(T(`@EDITOR:创建成功`))}else{let e=await(await fetch(`/api/editor/directory`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:n})})).json();if(!e.success){_.error(e.error);return}_.success(T(`@EDITOR:创建成功`))}H.value=null,await D()}function Hn(e){e.key===`Enter`&&(e.preventDefault(),Vn()),e.key===`Escape`&&(e.preventDefault(),Bn())}let G=C(null),Un=C(null);function Wn(e,t){e.preventDefault(),G.value={x:e.clientX,y:e.clientY,node:t}}function K(){G.value=null}async function Gn(){let e=G.value?.node;K(),e&&(A.value=e),e?.type===`directory`&&!e.expanded&&await Ge(e);let t=Ln();H.value={...t,kind:`file`,value:``},await s(),W.value?.focus()}async function Kn(){let e=G.value?.node;K(),e&&(A.value=e),e?.type===`directory`&&!e.expanded&&await Ge(e);let t=Ln();H.value={...t,kind:`directory`,value:``},await s(),W.value?.focus()}async function qn(){let e=G.value?.node;K(),e&&(U.value={node:e,value:e.name},await s(),In.value?.focus(),In.value?.select())}async function Jn(){let e=U.value;if(!e||!e.value.trim()||e.value.trim()===e.node.name){U.value=null;return}let t=e.value.trim(),n=e.node.path.replace(/[\\/][^\\/]+$/,``).replace(/[/\\]$/,``)+`/`+t,r=await(await fetch(`/api/editor/rename`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({oldPath:e.node.path,newPath:n})})).json();if(!r.success){_.error(r.error);return}let i=O.value.find(t=>t.path===e.node.path);i&&(i.path=n,i.name=t,k.value===e.node.path&&(k.value=n)),U.value=null,await D()}function Yn(e){e.key===`Enter`&&(e.preventDefault(),Jn()),e.key===`Escape`&&(e.preventDefault(),U.value=null)}async function Xn(){let e=G.value?.node;if(K(),!e)return;let t=e.type===`directory`?T(`@EDITOR:文件夹`):T(`@EDITOR:文件`);if(!confirm(`${T(`@EDITOR:确认删除`)} ${t} "${e.name}"?`))return;let n=await(await fetch(`/api/editor/entry?path=${encodeURIComponent(e.path)}`,{method:`DELETE`})).json();if(!n.success){_.error(n.error);return}let r=O.value.findIndex(t=>t.path===e.path);r!==-1&&(O.value.splice(r,1),k.value===e.path&&(k.value=O.value[Math.max(0,r-1)]?.path??null)),_.success(T(`@EDITOR:已删除`)),await D()}async function Zn(){let e=G.value?.node;if(K(),e)try{let t=await(await fetch(`/api/editor/reveal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e.path})})).json();t.success||_.error(t.error)}catch(e){_.error(e?.message||String(e))}}function Qn(e){let t=h.currentDirectory;if(!t)return e;let n=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``),r=n(t),i=n(e);return i===r?`.`:i.startsWith(r+`/`)?i.slice(r.length+1):i}async function $n(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}}async function er(){let e=G.value?.node;K(),e&&(await $n(e.path)?_.success(T(`@EDITOR:已复制到剪贴板`)):_.error(T(`@EDITOR:复制失败`)))}async function tr(){let e=G.value?.node;K(),e&&(await $n(Qn(e.path))?_.success(T(`@EDITOR:已复制到剪贴板`)):_.error(T(`@EDITOR:复制失败`)))}async function nr(){let e=G.value?.node;if(K(),e)try{let t=await(await fetch(`/api/editor/open-in-vscode`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e.path})})).json();t.success||_.error(t.error||T(`@EDITOR:VSCode 未安装`))}catch(e){_.error(e?.message||String(e))}}let rr=new Set([`html`,`htm`]),ir=i(()=>{let e=G.value?.node;if(!e||e.type!==`file`)return!1;let t=e.name.slice(e.name.lastIndexOf(`.`)+1).toLowerCase();return rr.has(t)});async function ar(){let e=G.value?.node;if(K(),e)try{let t=await(await fetch(`/api/editor/open-in-browser`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e.path})})).json();t.success||_.error(t.error||T(`@EDITOR:浏览器打开失败`))}catch(e){_.error(e?.message||String(e))}}re(()=>document.addEventListener(`click`,K)),c(()=>document.removeEventListener(`click`,K));let or=new Set([`md`,`html`,`htm`,`svg`]),sr=new Set([`png`,`jpg`,`jpeg`,`gif`,`webp`,`ico`,`bmp`]),q=C(!1),J=C(!1),Y=C(!1),cr=C(!1),lr=C(0),X=i(()=>O.value.find(e=>e.path===k.value)??null),ur=i(()=>X.value?.language===`plaintext`&&X.value?.content===``),dr=i(()=>X.value?.language===`office`),Z=i(()=>(X.value?.name??``).split(`.`).pop()?.toLowerCase()??``),fr=i(()=>or.has(Z.value)||sr.has(Z.value)||Oe(Z.value)),pr=i(()=>((X.value?.content??``).match(/^#{1,6}\s+/gm)||[]).length),mr=i(()=>Z.value===`md`&&pr.value>0);b(k,()=>{q.value&&!fr.value&&(q.value=!1),J.value&&!mr.value&&(J.value=!1)});function hr(){fr.value&&(q.value||(J.value=!1,Y.value=!1),q.value=!q.value)}function gr(){mr.value&&(J.value||(q.value=!1,Y.value=!1),J.value=!J.value)}function _r(){Y.value||(q.value=!1,J.value=!1),Y.value=!Y.value,cr.value=!0}let vr=C(null),Q=C(!1),$=C(``),yr=C(!0),br=null,xr=i(()=>!J.value&&q.value&&Z.value===`md`&&!!X.value);function Sr(){return X.value?.content??``}function Cr(){return Sr().match(/^\s*#\s+(.+?)\s*(?:\r?\n|$)/)?.[1]?.trim()??``}function wr(e,t,n){if(!e){_.error(T(`@EDITOR:复制失败`));return}$.value=n,br&&clearTimeout(br),br=setTimeout(()=>{$.value=``},1800),t>0?_.warning(T(`@EDITOR:{n} 张图片未能转成 Base64,已保留原地址`,{n:t})):_.success(T(`@EDITOR:已复制`))}async function Tr(){wr(await $n(Sr()),0,`md`)}async function Er(){let e=vr.value?.getRenderedElement();if(e){Q.value=!0;try{let{html:t,leftover:n}=await dt(e,yr.value);wr(await $n(t),n,`html`)}finally{Q.value=!1}}}function Dr(e){let t=document.createElement(`div`);t.style.cssText=`position:fixed;top:-9999px;left:-9999px;opacity:0;`,t.innerHTML=e,document.body.appendChild(t);try{let e=window.getSelection(),n=document.createRange();n.selectNodeContents(t),e?.removeAllRanges(),e?.addRange(n);let r=document.execCommand(`copy`);return e?.removeAllRanges(),r}catch{return!1}finally{document.body.removeChild(t)}}async function Or(){let e=vr.value?.getRenderedElement();if(e){Q.value=!0;try{let{html:t,leftover:n}=await ft(e,{inline:yr.value,title:Cr()}),r=Sr(),i=!1;try{navigator.clipboard?.write&&typeof ClipboardItem<`u`&&(await navigator.clipboard.write([new ClipboardItem({"text/html":new Blob([t],{type:`text/html`}),"text/plain":new Blob([r],{type:`text/plain`})})]),i=!0)}catch{i=!1}i||=Dr(t),wr(i,n,`rich`)}finally{Q.value=!1}}}let kr=i(()=>{let e=X.value;if(!e)return``;let t=Z.value,n=document.documentElement.getAttribute(`data-theme`)===`light`?`#ffffff`:`#0d1117`;return t===`html`||t===`htm`?Ie(e.content):t===`svg`?`<!DOCTYPE html><html><head><meta charset="utf-8"><style>html,body{margin:0;padding:0;background:${n};display:flex;align-items:center;justify-content:center;min-height:100vh;}svg{max-width:100%;max-height:90vh;}</style></head><body>${e.content}</body></html>`:``}),Ar=!1,jr=0,Mr=0;function Nr(e){Ar=!0,jr=e.clientX,Mr=lr.value,document.addEventListener(`mousemove`,Pr),document.addEventListener(`mouseup`,Fr),e.preventDefault()}function Pr(e){if(!Ar)return;let t=e.clientX-jr;lr.value=Math.max(200,Math.min(900,Mr+t))}function Fr(){Ar=!1,document.removeEventListener(`mousemove`,Pr),document.removeEventListener(`mouseup`,Fr)}return(i,o)=>(p(),t(m,null,[n(`div`,{class:`editor-view`,ref_key:`containerRef`,ref:B},[n(`div`,{class:`editor-sidebar`,style:g({width:V.value+`px`})},[n(`div`,pt,[n(`span`,mt,e(r(T)(`@EDITOR:资源管理器`)),1),n(`div`,ht,[a(r(ne),{content:r(T)(`@EDITOR:新建文件`),placement:`bottom`,"show-after":300},{default:se(()=>[n(`button`,{class:`sidebar-action-btn`,onClick:Rn},[...o[12]||=[n(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`path`,{d:`M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z`}),n(`polyline`,{points:`14 2 14 8 20 8`}),n(`line`,{x1:`12`,y1:`13`,x2:`12`,y2:`19`}),n(`line`,{x1:`9`,y1:`16`,x2:`15`,y2:`16`})],-1)]])]),_:1},8,[`content`]),a(r(ne),{content:r(T)(`@EDITOR:新建文件夹`),placement:`bottom`,"show-after":300},{default:se(()=>[n(`button`,{class:`sidebar-action-btn`,onClick:zn},[...o[13]||=[n(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`path`,{d:`M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z`}),n(`line`,{x1:`12`,y1:`11`,x2:`12`,y2:`17`}),n(`line`,{x1:`9`,y1:`14`,x2:`15`,y2:`14`})],-1)]])]),_:1},8,[`content`]),a(r(ne),{content:r(T)(`@EDITOR:刷新`),placement:`bottom`,"show-after":300},{default:se(()=>[n(`button`,{class:`sidebar-action-btn`,onClick:o[0]||=e=>D({notifyOnError:!0})},[...o[14]||=[n(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`polyline`,{points:`1 4 1 10 7 10`}),n(`polyline`,{points:`23 20 23 14 17 14`}),n(`path`,{d:`M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15`})],-1)]])]),_:1},8,[`content`])])]),n(`div`,gt,[o[16]||=n(`svg`,{class:`sidebar-search-icon`,viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[n(`circle`,{cx:`11`,cy:`11`,r:`7`}),n(`line`,{x1:`21`,y1:`21`,x2:`16.65`,y2:`16.65`})],-1),x(n(`input`,{ref_key:`searchInputRef`,ref:et,"onUpdate:modelValue":o[1]||=e=>w.value=e,type:`text`,class:`sidebar-search-input`,placeholder:r(T)(`@EDITOR:搜索文件...`),title:r(T)(`@EDITOR:搜索文件...`),spellcheck:`false`,autocomplete:`off`,onKeydown:ie(nt,[`escape`])},null,40,_t),[[ue,w.value]]),w.value?(p(),t(`button`,{key:0,class:`sidebar-search-clear`,title:r(T)(`@EDITOR:清除搜索`),"aria-label":r(T)(`@EDITOR:清除搜索`),onClick:we},[...o[15]||=[n(`svg`,{viewBox:`0 0 24 24`,width:`12`,height:`12`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[n(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),n(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]],8,vt)):v(``,!0)]),pe.value?(p(),t(`div`,Bt,[...o[25]||=[n(`span`,{class:`spin-icon`},null,-1)]])):(p(),t(`div`,yt,[(p(!0),t(m,null,oe(Ke(Ye.value),i=>(p(),t(m,{key:i.path},[U.value&&U.value.node.path===i.path?(p(),t(`div`,{key:0,class:`tree-node tree-inline-input-row`,style:g({paddingLeft:12+i.depth*14+`px`})},[i.type===`directory`?(p(),t(`span`,{key:0,class:l([`tree-arrow`,{expanded:i.expanded}])},[...o[17]||=[n(`svg`,{viewBox:`0 0 24 24`,width:`10`,height:`10`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`polyline`,{points:`9 18 15 12 9 6`})],-1)]],2)):(p(),t(`span`,bt)),(p(),t(`svg`,xt,[n(`use`,{"xlink:href":`#${Fn(i)}`},null,8,St)])),x(n(`input`,{ref_for:!0,ref_key:`renameInputRef`,ref:In,"onUpdate:modelValue":o[2]||=e=>U.value.value=e,onKeydown:Yn,onBlur:Jn,onClick:o[3]||=S(()=>{},[`stop`])},null,544),[[ue,U.value.value]])],4)):(p(),t(`div`,{key:1,class:l([`tree-node`,{"tree-node--dir":i.type===`directory`,"tree-node--file":i.type===`file`,"tree-node--active":k.value===i.path,"tree-node--selected":A.value?.path===i.path&&k.value!==i.path}]),style:g({paddingLeft:12+i.depth*14+`px`}),onClick:e=>rt(i),onContextmenu:e=>Wn(e,i)},[i.type===`directory`?(p(),t(`span`,{key:0,class:l([`tree-arrow`,{expanded:i.expanded}])},[...o[18]||=[n(`svg`,{viewBox:`0 0 24 24`,width:`10`,height:`10`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`polyline`,{points:`9 18 15 12 9 6`})],-1)]],2)):(p(),t(`span`,wt)),i.type===`directory`?(p(),t(`svg`,Tt,[n(`use`,{"xlink:href":`#${Fn(i)}`},null,8,Et)])):(p(),t(`svg`,Dt,[n(`use`,{"xlink:href":`#${Fn(i)}`},null,8,Ot)])),n(`span`,{class:`tree-name`,title:i.path},[(p(!0),t(m,null,oe(Qe(i.name),(n,r)=>(p(),t(m,{key:r},[n.hit?(p(),t(`span`,At,e(n.text),1)):(p(),t(m,{key:1},[f(e(n.text),1)],64))],64))),128))],8,kt),i.loading?(p(),t(`span`,jt)):v(``,!0)],46,Ct)),H.value&&H.value.afterNode?.path===i.path?(p(),t(`div`,{key:2,class:`tree-node tree-inline-input-row`,style:g({paddingLeft:12+H.value.depth*14+`px`})},[o[21]||=n(`span`,{class:`tree-arrow-spacer`},null,-1),H.value.kind===`directory`?(p(),t(`svg`,Mt,[...o[19]||=[n(`path`,{d:`M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z`},null,-1)]])):(p(),t(`svg`,Nt,[...o[20]||=[n(`path`,{d:`M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z`},null,-1),n(`polyline`,{points:`14 2 14 8 20 8`},null,-1)]])),x(n(`input`,{ref_for:!0,ref_key:`inlineInputRef`,ref:W,class:`tree-inline-input`,"onUpdate:modelValue":o[4]||=e=>H.value.value=e,placeholder:H.value.kind===`file`?r(T)(`@EDITOR:输入文件名`):r(T)(`@EDITOR:输入文件夹名`),onKeydown:Hn,onBlur:Bn,onClick:o[5]||=S(()=>{},[`stop`])},null,40,Pt),[[ue,H.value.value]])],4)):v(``,!0)],64))),128)),H.value&&H.value.afterNode===null?(p(),t(`div`,Ft,[o[24]||=n(`span`,{class:`tree-arrow-spacer`},null,-1),H.value.kind===`directory`?(p(),t(`svg`,It,[...o[22]||=[n(`path`,{d:`M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z`},null,-1)]])):(p(),t(`svg`,Lt,[...o[23]||=[n(`path`,{d:`M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z`},null,-1),n(`polyline`,{points:`14 2 14 8 20 8`},null,-1)]])),x(n(`input`,{ref_key:`inlineInputRef`,ref:W,class:`tree-inline-input`,"onUpdate:modelValue":o[6]||=e=>H.value.value=e,placeholder:H.value.kind===`file`?r(T)(`@EDITOR:输入文件名`):r(T)(`@EDITOR:输入文件夹名`),onKeydown:Hn,onBlur:Bn,onClick:o[7]||=S(()=>{},[`stop`])},null,40,Rt),[[ue,H.value.value]])])):v(``,!0),!H.value&&(Ze.value||y.value.length===0)?(p(),t(`div`,zt,e(Ze.value?r(T)(`@EDITOR:未找到匹配文件`):r(T)(`@EDITOR:暂无文件`)),1)):v(``,!0)]))],4),n(`div`,{class:`editor-resizer`,onMousedown:Mn},null,32),n(`div`,Vt,[O.value.length>0?(p(),t(`div`,Ht,[(p(!0),t(m,null,oe(O.value,r=>(p(),t(`div`,{key:r.path,class:l([`editor-tab`,{active:k.value===r.path,dirty:r.isDirty}]),onClick:e=>k.value=r.path,title:r.path},[n(`span`,Wt,e(r.name),1),r.isDirty?(p(),t(`span`,Gt)):v(``,!0),n(`button`,{class:`tab-close`,onClick:e=>it(r.path,e)},[...o[26]||=[n(`svg`,{viewBox:`0 0 24 24`,width:`12`,height:`12`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"stroke-linecap":`round`},[n(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),n(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]],8,Kt)],10,Ut))),128)),o[30]||=n(`div`,{class:`editor-tabs-spacer`},null,-1),fr.value?(p(),t(`button`,{key:0,class:l([`preview-toggle-btn`,{active:q.value}]),title:q.value?r(T)(`@EDITOR:关闭预览`):r(T)(`@EDITOR:打开预览`),onClick:hr},[o[27]||=n(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`path`,{d:`M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z`}),n(`circle`,{cx:`12`,cy:`12`,r:`3`})],-1),n(`span`,null,e(r(T)(`@EDITOR:预览`)),1)],10,qt)):v(``,!0),mr.value?(p(),t(`button`,{key:1,class:l([`preview-toggle-btn mindmap-toggle-btn`,{active:J.value,disabled:!mr.value}]),disabled:!mr.value,title:mr.value?J.value?r(T)(`@EDITOR:关闭思维导图`):r(T)(`@EDITOR:打开思维导图`):r(T)(`@EDITOR:需要至少一个 # 标题`),onClick:gr},[o[28]||=ee(`<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-v-843a938c><circle cx="12" cy="12" r="2" data-v-843a938c></circle><circle cx="5" cy="6" r="1.6" data-v-843a938c></circle><circle cx="19" cy="6" r="1.6" data-v-843a938c></circle><circle cx="5" cy="18" r="1.6" data-v-843a938c></circle><circle cx="19" cy="18" r="1.6" data-v-843a938c></circle><line x1="11" y1="11" x2="6.4" y2="7" data-v-843a938c></line><line x1="13" y1="11" x2="17.6" y2="7" data-v-843a938c></line><line x1="11" y1="13" x2="6.4" y2="17" data-v-843a938c></line><line x1="13" y1="13" x2="17.6" y2="17" data-v-843a938c></line></svg>`,1),n(`span`,null,e(r(T)(`@EDITOR:思维导图`)),1)],10,Jt)):v(``,!0),n(`button`,{class:l([`preview-toggle-btn agent-toggle-btn`,{active:Y.value}]),title:Y.value?r(T)(`@EDITOR:关闭 g ai 对话`):r(T)(`@EDITOR:打开 g ai 对话`),onClick:_r},[o[29]||=n(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`path`,{d:`M12 3l1.9 4.6L18.5 9.5l-4.6 1.9L12 16l-1.9-4.6L5.5 9.5l4.6-1.9z`}),n(`path`,{d:`M18 16.5l.9 2.1 2.1.9-2.1.9-.9 2.1-.9-2.1-2.1-.9 2.1-.9z`})],-1),n(`span`,null,e(r(T)(`@EDITOR:g ai 对话`)),1)],10,Yt)])):v(``,!0),O.value.length===0?(p(),d(Pe,{key:1,class:`editor-empty`,title:r(T)(`@EDITOR:从左侧选择文件打开`),hint:r(T)(`@EDITOR:Ctrl+S 保存`)},{icon:se(()=>[...o[31]||=[n(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`path`,{d:`M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z`}),n(`polyline`,{points:`14 2 14 8 20 8`})],-1)]]),_:1},8,[`title`,`hint`])):v(``,!0),n(`div`,Xt,[n(`div`,{class:l([`monaco-container`,{hidden:O.value.length===0||ur.value||dr.value}]),ref_key:`editorContainerRef`,ref:F},null,2),ur.value&&O.value.length>0&&!q.value&&!J.value?(p(),t(`div`,Zt,[(p(),t(`svg`,Qt,[...o[32]||=[n(`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`},null,-1),n(`circle`,{cx:`9`,cy:`9`,r:`2`},null,-1),n(`path`,{d:`m21 15-5-5L5 21`},null,-1)]])),n(`p`,$t,e(X.value?.name),1),n(`p`,en,e(r(T)(`@EDITOR:这是图片文件,已在右侧预览面板中打开`)),1)])):v(``,!0),(q.value||J.value||Y.value)&&O.value.length>0?(p(),t(`div`,{key:1,class:`preview-resizer`,onMousedown:Nr},null,32)):v(``,!0),cr.value?x((p(),d(ct,{key:2,active:Y.value&&O.value.length>0,"active-file-path":k.value,"active-file-name":X.value?.name??``,style:g({flexBasis:lr.value+`px`}),onClose:o[8]||=e=>Y.value=!1},null,8,[`active`,`active-file-path`,`active-file-name`,`style`])),[[fe,Y.value&&O.value.length>0]]):v(``,!0),(q.value||J.value)&&O.value.length>0?(p(),t(`div`,{key:3,class:`preview-panel`,style:g({flexBasis:lr.value+`px`})},[n(`div`,tn,[n(`span`,nn,e(J.value?r(T)(`@EDITOR:思维导图`):r(T)(`@EDITOR:预览`)),1),n(`span`,rn,e(Z.value.toUpperCase()),1),o[34]||=n(`div`,{class:`preview-header-spacer`},null,-1),n(`button`,{class:`preview-close-btn`,title:J.value?r(T)(`@EDITOR:关闭思维导图`):r(T)(`@EDITOR:关闭预览`),onClick:o[9]||=e=>J.value?J.value=!1:q.value=!1},[...o[33]||=[n(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"stroke-linecap":`round`},[n(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),n(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]],8,an)]),n(`div`,on,[xr.value?(p(),t(`div`,sn,[n(`button`,{class:l([`preview-copy-btn`,{done:$.value===`md`}]),disabled:Q.value,title:r(T)(`@EDITOR:复制 Markdown 源码`),onClick:Tr},[o[35]||=n(`span`,{class:`preview-copy-btn-icon`},`{ }`,-1),n(`span`,null,e($.value===`md`?r(T)(`@EDITOR:已复制`):`Markdown`),1)],10,cn),n(`button`,{class:l([`preview-copy-btn`,{done:$.value===`html`}]),disabled:Q.value,title:r(T)(`@EDITOR:复制渲染后的 HTML(图片按开关内嵌)`),onClick:Er},[o[36]||=n(`span`,{class:`preview-copy-btn-icon`},`</>`,-1),n(`span`,null,e($.value===`html`?r(T)(`@EDITOR:已复制`):`HTML`),1)],10,ln),n(`button`,{class:l([`preview-copy-btn preview-copy-btn--primary`,{done:$.value===`rich`}]),disabled:Q.value,title:r(T)(`@EDITOR:复制为富文本,可直接粘贴到公众号编辑器`),onClick:Or},[o[37]||=n(`span`,{class:`preview-copy-btn-icon`},`⊞`,-1),n(`span`,null,e(Q.value?r(T)(`@EDITOR:转换图片中…`):$.value===`rich`?r(T)(`@EDITOR:已复制`):r(T)(`@EDITOR:复制富文本`)),1)],10,un),n(`label`,{class:`preview-copy-embed`,title:r(T)(`@EDITOR:复制时把本地图片转成 Base64 内嵌,关闭后保留原图地址`)},[x(n(`input`,{"onUpdate:modelValue":o[10]||=e=>yr.value=e,type:`checkbox`},null,512),[[ce,yr.value]]),n(`span`,null,e(r(T)(`@EDITOR:图片转 Base64`)),1)],8,dn)])):v(``,!0),J.value&&Z.value===`md`&&X.value?(p(),d($e,{key:1,content:X.value.content,class:`preview-mindmap`},null,8,[`content`])):q.value&&Z.value===`md`&&X.value?(p(),d(je,{ref_key:`mdPreviewRef`,ref:vr,key:X.value.path,content:X.value.content,"base-path":X.value.path,class:`preview-markdown`},null,8,[`content`,`base-path`])):q.value&&[`html`,`htm`,`svg`].includes(Z.value)?(p(),t(`iframe`,{key:3,class:`preview-iframe`,sandbox:r(Ee),srcdoc:kr.value},null,8,fn)):q.value&&r(sr).has(Z.value)&&X.value?(p(),d(Me,{key:4,"file-path":X.value.path,"file-name":X.value.name},null,8,[`file-path`,`file-name`])):q.value&&dr.value&&X.value?(p(),d(Ae,{key:5,"file-path":X.value.path},null,8,[`file-path`])):v(``,!0)])],4)):v(``,!0)])])],512),(p(),d(de,{to:`body`},[G.value?(p(),t(`div`,{key:0,ref_key:`ctxMenuRef`,ref:Un,class:`ctx-menu`,style:g({left:G.value.x+`px`,top:G.value.y+`px`}),onClick:o[11]||=S(()=>{},[`stop`])},[n(`button`,{class:`ctx-menu-item`,onClick:Gn},[o[38]||=n(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`path`,{d:`M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z`}),n(`polyline`,{points:`14 2 14 8 20 8`}),n(`line`,{x1:`12`,y1:`13`,x2:`12`,y2:`19`}),n(`line`,{x1:`9`,y1:`16`,x2:`15`,y2:`16`})],-1),f(` `+e(r(T)(`@EDITOR:新建文件`)),1)]),n(`button`,{class:`ctx-menu-item`,onClick:Kn},[o[39]||=n(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`path`,{d:`M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z`}),n(`line`,{x1:`12`,y1:`11`,x2:`12`,y2:`17`}),n(`line`,{x1:`9`,y1:`14`,x2:`15`,y2:`14`})],-1),f(` `+e(r(T)(`@EDITOR:新建文件夹`)),1)]),o[46]||=n(`div`,{class:`ctx-menu-sep`},null,-1),n(`button`,{class:`ctx-menu-item`,onClick:er},[o[40]||=n(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`rect`,{x:`9`,y:`9`,width:`13`,height:`13`,rx:`2`,ry:`2`}),n(`path`,{d:`M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1`})],-1),f(` `+e(r(T)(`@EDITOR:复制绝对路径`)),1)]),n(`button`,{class:`ctx-menu-item`,onClick:tr},[o[41]||=n(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`path`,{d:`M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71`}),n(`path`,{d:`M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71`})],-1),f(` `+e(r(T)(`@EDITOR:复制相对路径`)),1)]),o[47]||=n(`div`,{class:`ctx-menu-sep`},null,-1),ir.value?(p(),t(`button`,{key:0,class:`ctx-menu-item`,onClick:ar},[o[42]||=n(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`circle`,{cx:`12`,cy:`12`,r:`9`}),n(`line`,{x1:`3`,y1:`12`,x2:`21`,y2:`12`}),n(`path`,{d:`M12 3a13 13 0 0 1 3.5 9 13 13 0 0 1-3.5 9 13 13 0 0 1-3.5-9A13 13 0 0 1 12 3z`})],-1),f(` `+e(r(T)(`@EDITOR:在浏览器中打开`)),1)])):v(``,!0),n(`button`,{class:`ctx-menu-item`,onClick:Zn},[o[43]||=n(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`path`,{d:`M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`}),n(`path`,{d:`M3 7v10a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2`})],-1),f(` `+e(r(T)(`@EDITOR:在资源管理器中打开`)),1)]),n(`button`,{class:`ctx-menu-item`,onClick:nr},[a(he,{"icon-class":`vscode`,"class-name":`ctx-menu-icon`}),f(` `+e(r(T)(`@EDITOR:在 VSCode 中打开`)),1)]),n(`button`,{class:`ctx-menu-item`,onClick:qn},[o[44]||=n(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`path`,{d:`M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`}),n(`path`,{d:`M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z`})],-1),f(` `+e(r(T)(`@EDITOR:重命名`)),1)]),n(`button`,{class:`ctx-menu-item ctx-menu-item--danger`,onClick:Xn},[o[45]||=n(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`polyline`,{points:`3 6 5 6 21 6`}),n(`path`,{d:`M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6`}),n(`path`,{d:`M10 11v6`}),n(`path`,{d:`M14 11v6`}),n(`path`,{d:`M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2`})],-1),f(` `+e(r(T)(`@EDITOR:删除`)),1)])],4)):v(``,!0)]))],64))}}),[[`__scopeId`,`data-v-843a938c`]]);export{hn as default};
@@ -1 +0,0 @@
1
- .dir-chat[data-v-8a71be1d]{height:min(420px,42vh);min-height:200px;margin-top:var(--spacing-sm);border-top:1px solid var(--border-color-light);padding-top:var(--spacing-sm);flex-direction:column;display:flex}.dir-chat__bar[data-v-8a71be1d]{margin-bottom:var(--spacing-xs);flex-shrink:0;justify-content:flex-end;display:flex}.dir-chat__new[data-v-8a71be1d]{height:22px;padding:0 var(--spacing-base);border:1px solid var(--border-color);border-radius:var(--radius-base);color:var(--text-meta);font:inherit;font-size:var(--font-size-sm);cursor:pointer;transition:color var(--transition-fast), border-color var(--transition-fast);background:0 0;align-items:center;gap:4px;line-height:1;display:inline-flex}.dir-chat__new[data-v-8a71be1d]:hover{color:var(--color-primary);border-color:var(--color-primary)}.dir-chat__new[data-v-8a71be1d]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.dir-chat[data-v-8a71be1d]>.acu-chat{flex:1;min-width:0;min-height:0}.dir-chat--fill[data-v-8a71be1d]{flex:auto;height:auto;min-height:0}.dir-chat[data-v-8a71be1d] .acu-welcome{padding:var(--spacing-base);align-items:flex-start;overflow-y:auto}.dir-chat[data-v-8a71be1d] .acu-welcome-inner{margin-block:auto}.dir-chat[data-v-8a71be1d] .acu-welcome-logo{display:none}.dir-chat[data-v-8a71be1d] .acu-welcome-title{font-size:var(--font-size-lg);margin-bottom:var(--spacing-xs)}.dir-chat[data-v-8a71be1d] .acu-welcome-desc{font-size:var(--font-size-sm);margin-bottom:var(--spacing-base)}.dir-chat[data-v-8a71be1d] .acu-welcome-grid{gap:var(--spacing-sm)}.dir-chat[data-v-8a71be1d] .acu-bubble-row.is-assistant .acu-bubble-main{width:var(--acu-bubble-max-width);max-width:var(--acu-bubble-max-width);position:relative}.dir-chat[data-v-8a71be1d] .acu-bubble-row.is-assistant .acu-bubble{align-self:flex-start}.dir-chat[data-v-8a71be1d] .acu-message-meta{margin:0;position:absolute;top:0;right:0}
@@ -1 +0,0 @@
1
- import{$r as e,An as t,Dn as n,Dr as r,En as i,Fn as a,Fr as o,Jn as s,Jr as c,Ln as l,Qn as u,Vn as d,kn as f,mr as p}from"./element-plus-J45pKUrE.js";import{a as m}from"./vendor-B3NyhlYR.js";import{n as h,t as g}from"./_plugin-vue_export-helper-CDrhhAKC.js";import{F as _}from"./index-DjaZpz97.js";import{i as v,n as y,o as b,r as x,s as S,u as C}from"./agentConversations-BKjyYn-u.js";d(),p(),o();var w={key:0,class:`dir-chat__bar`},T=[`title`,`aria-label`],E=g(l({__name:`RecentDirectoriesChat`,props:{dirStatus:{},summary:{},fill:{type:Boolean}},setup(o){let l=o,{theme:d}=_(),p=i(()=>d.value===`dark`?`dark`:`light`),{messages:g,isStreaming:E,questionPanel:D,answeringQuestion:O,sendMessage:k,retryTurn:A,answerQuestion:j,newSession:M,stop:N,queuedMessages:P,queuePaused:F,removeQueuedMessage:I,flushQueued:L}=C(),R=b(),z=S(),B=i(()=>[{id:`priority`,label:h(`@13D1C:这些项目该先处理哪个?`),prompt:h(`@13D1C:这些项目里该先处理哪个?按优先级给我一个处理顺序,并说明每一项该做什么。`)},{id:`behind`,label:h(`@13D1C:哪些项目落后远端?`),prompt:h(`@13D1C:哪些项目落后远端?分别落后多少个提交?`)},{id:`pull-behind`,label:h(`@13D1C:落后远端的都帮我 pull 下代码`),prompt:h(`@13D1C:落后远端的项目都帮我 pull 下代码,逐个执行并汇报结果。`)},{id:`uncommitted`,label:h(`@13D1C:看一下各项目未提交的都改了什么`),prompt:h(`@13D1C:看一下各项目未提交的改动都改了什么,按项目列出来。`)}]);async function V(e){await k(e.text,e.files,{engine:`gai`,dirStatus:l.dirStatus,dirSummary:l.summary})}async function H(e){await V({text:e.prompt,files:[]})}function U(){N(),M()}return s(()=>{N()}),(i,s)=>(u(),t(`div`,{class:c([`dir-chat`,{"dir-chat--fill":o.fill}])},[r(g).length?(u(),t(`div`,w,[n(`button`,{type:`button`,class:`dir-chat__new`,title:r(h)(`@13D1C:新建对话,当前会话会保留`),"aria-label":r(h)(`@13D1C:新建对话`),onClick:U},[s[0]||=n(`svg`,{viewBox:`0 0 24 24`,width:`12`,height:`12`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[n(`line`,{x1:`12`,y1:`5`,x2:`12`,y2:`19`}),n(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`})],-1),n(`span`,null,e(r(h)(`@13D1C:新建对话`)),1)],8,T)])):f(``,!0),a(r(m),{messages:r(g),"assistant-name":r(y),theme:p.value,generating:r(E),"allow-queue":!0,queued:r(P),"queue-paused":r(F),"queue-labels":r(z),"show-avatar":!1,"upload-config":{enabled:!1},placeholder:r(E)?r(h)(`@13D1C:g ai 正在回答…发送会先排队,等本轮跑完自动接上`):r(h)(`@13D1C:追问 g ai:这批项目该怎么处理?`),"welcome-title":r(h)(`@13D1C:可以接着问 g ai`),"welcome-description":r(h)(`@13D1C:它已经拿到了这批目录的 Git 状态,可以直接问该先处理哪个、某个项目落后了什么。`),"preset-questions":B.value,question:r(D),"question-submitting":r(O),"question-labels":r(R),"plan-config":{labels:{title:r(h)(`@AGENT:计划`),raw:r(h)(`@AGENT:原始参数`)}},"message-rail-config":r(v),"message-meta-config":r(x),onSend:V,onSelect:H,onStop:r(N),onUnqueue:r(I),onFlushQueued:r(L),onAnswer:r(j),onRetry:r(A)},null,8,[`messages`,`assistant-name`,`theme`,`generating`,`queued`,`queue-paused`,`queue-labels`,`placeholder`,`welcome-title`,`welcome-description`,`preset-questions`,`question`,`question-submitting`,`question-labels`,`plan-config`,`message-rail-config`,`message-meta-config`,`onStop`,`onUnqueue`,`onFlushQueued`,`onAnswer`,`onRetry`])],2))}}),[[`__scopeId`,`data-v-8a71be1d`]]);export{E as default};
@@ -1 +0,0 @@
1
- .wb-ctx-menu[data-v-e3e872cb]{z-index:var(--z-menu-float);background:var(--bg-container);border:1px solid var(--border-color);border-radius:var(--radius-md);min-width:140px;box-shadow:var(--shadow-md);-webkit-user-select:none;user-select:none;font-size:var(--font-size-mid);margin:0;padding:4px;list-style:none;position:fixed}.wb-ctx-menu__item[data-v-e3e872cb]{border-radius:var(--radius-base);cursor:pointer;color:var(--text-primary);align-items:center;gap:8px;padding:6px 10px;display:flex}.wb-ctx-menu__item[data-v-e3e872cb]:hover{background:var(--tint-primary-12);color:var(--color-primary)}.wb-ctx-menu__item.is-disabled[data-v-e3e872cb]{cursor:progress;opacity:var(--disabled-opacity)}.wb-ctx-menu__icon[data-v-e3e872cb]{justify-content:center;align-items:center;width:16px;height:16px;display:inline-flex}.wb-log-details[data-v-9c103bcc]{border:1px solid var(--border-color);border-radius:var(--radius-base);background:var(--bg-code);flex-direction:column;flex:1;height:100%;min-height:0;margin-top:6px;display:flex;overflow:auto}.wb-log-details__body[data-v-9c103bcc]{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.wb-job-chat[data-v-9c103bcc]{flex-direction:column;flex:1;min-height:0;display:flex}.wb-job-chat[data-v-9c103bcc] .acu-chat-footer{display:none}.wb-job-chat[data-v-9c103bcc] .acu-chat{background:0 0}.wb-job-chat[data-v-9c103bcc] .acu-message-list-inner{gap:10px;padding:10px 12px 14px}.wb-job-chat[data-v-9c103bcc] .acu-bubble{font-size:var(--font-size-sm)}.wb-job-chat[data-v-9c103bcc] .acu-bubble-name{font-size:var(--font-size-xs)}.wb-log-summary[data-v-9c103bcc]{cursor:pointer;font-size:var(--font-size-sm);color:var(--text-secondary);-webkit-user-select:none;user-select:none;flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;padding:6px 10px;display:flex}.wb-log-summary[data-v-9c103bcc]:hover{background:var(--tint-primary-06)}.wb-log-summary__left[data-v-9c103bcc]{flex:1;align-items:center;gap:6px;min-width:0;display:inline-flex}.wb-log-summary__right[data-v-9c103bcc]{flex-shrink:0;align-items:center;gap:8px;display:inline-flex}.wb-log-summary__meta[data-v-9c103bcc]{font-size:var(--font-size-xs);color:var(--text-meta);font-variant-numeric:tabular-nums}.wb-log-copy[data-v-9c103bcc]{font-size:var(--font-size-xs);color:var(--text-secondary);background:var(--bg-container);border:1px solid var(--border-color-medium);border-radius:var(--radius-base);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);flex-shrink:0;align-items:center;gap:3px;padding:2px 7px;font-weight:500;display:inline-flex}.wb-log-copy[data-v-9c103bcc]:hover{background:color-mix(in srgb, var(--color-primary) 10%, transparent);border-color:color-mix(in srgb, var(--color-primary) 35%, transparent);color:var(--color-primary)}.wb-log-copy[data-v-9c103bcc]:active{background:color-mix(in srgb, var(--color-primary) 18%, transparent)}.wb-log-copy[data-v-9c103bcc]:focus-visible{outline:2px solid color-mix(in srgb, var(--color-primary) 50%, transparent);outline-offset:1px}.wb-chat__foot[data-v-9c103bcc]{border-top:1px solid color-mix(in srgb, var(--border-color) 60%, transparent);background:color-mix(in srgb, var(--text-tertiary) 3%, transparent);flex-shrink:0;justify-content:flex-end;gap:6px;padding:4px 10px 6px;display:flex}.wb-chat__action[data-v-9c103bcc]{font-size:var(--font-size-xs);color:var(--color-think-dark);background:color-mix(in srgb, var(--color-think) 10%, var(--bg-container));border:1px solid color-mix(in srgb, var(--color-think) 30%, transparent);border-radius:var(--radius-base);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);align-items:center;gap:3px;padding:2px 8px;font-weight:500;display:inline-flex}.wb-chat__action[data-v-9c103bcc]:hover{background:color-mix(in srgb, var(--color-think) 18%, var(--bg-container));border-color:color-mix(in srgb, var(--color-think) 50%, transparent);color:var(--color-think-darker)}.wb-chat__action[data-v-9c103bcc]:active{background:color-mix(in srgb, var(--color-think) 26%, var(--bg-container))}.wb-chat__action[data-v-9c103bcc]:focus-visible{outline:2px solid color-mix(in srgb, var(--color-think) 50%, transparent);outline-offset:1px}.wb-log-fullscreen-dialog .el-dialog__body[data-v-9c103bcc]{flex-direction:column;height:calc(100vh - 54px);padding:0 16px 16px;display:flex;overflow:hidden}.wb-log-fullscreen[data-v-9c103bcc]{border:1px solid var(--border-color);border-radius:var(--radius-base);background:var(--bg-code);flex:1;min-height:0;display:flex;overflow:hidden}.wb-log-fullscreen__render[data-v-9c103bcc]{min-height:0;font-size:var(--font-size-mid);color:var(--text-primary);flex:1;padding:14px 18px;line-height:1.65;overflow:auto}.wb-log-fullscreen__render[data-v-9c103bcc] pre{margin:8px 0}.wb-log-fullscreen__empty[data-v-9c103bcc]{color:var(--text-meta);padding:14px 18px;font-style:italic}.wb-log-summary__status[data-v-9c103bcc]{font-weight:600;font-size:var(--font-size-sm);align-items:center;gap:6px;display:inline-flex}.wb-log-summary__status--running[data-v-9c103bcc]{color:var(--color-warning-dark)}.wb-log-summary__status--pending[data-v-9c103bcc]{color:var(--color-primary)}.wb-log-summary__status--done[data-v-9c103bcc]{color:var(--color-success-dark,#15803d)}.wb-log-summary__status--cancelled[data-v-9c103bcc]{color:var(--color-gray-400)}.wb-log-summary__status--error[data-v-9c103bcc]{color:var(--color-danger,var(--color-danger-light))}.wb-log-summary__icon[data-v-9c103bcc]{font-size:var(--font-size-mid);line-height:1}.wb-log-summary__elapsed[data-v-9c103bcc]{font-size:var(--font-size-xs);color:var(--text-meta);font-variant-numeric:tabular-nums;margin-left:2px;font-weight:400}.wb-log-dots[data-v-9c103bcc]{align-items:center;gap:3px;margin-left:-2px;display:inline-flex}.wb-log-dots__dot[data-v-9c103bcc]{opacity:.35;background:currentColor;border-radius:50%;width:4px;height:4px;animation:1.4s ease-in-out infinite wb-log-dot-bounce-9c103bcc}.wb-log-dots__dot[data-v-9c103bcc]:nth-child(2){animation-delay:var(--transition-base)}.wb-log-dots__dot[data-v-9c103bcc]:nth-child(3){animation-delay:.4s}.wb-log-details.is-running .wb-log-summary[data-v-9c103bcc]{background:color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 8%, transparent)}.wb-log-details.is-pending .wb-log-summary[data-v-9c103bcc]{background:color-mix(in srgb, var(--color-primary) 6%, transparent)}.wb-log-details.is-finished .wb-log-summary[data-v-9c103bcc]{background:color-mix(in srgb, var(--color-success,var(--action-green)) 6%, transparent)}.wb-log-details.is-finished[data-v-9c103bcc]{animation:1.5s ease-out wb-log-finished-flash-9c103bcc}@keyframes wb-log-dot-bounce-9c103bcc{0%,80%,to{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}@keyframes wb-log-finished-flash-9c103bcc{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--color-success,var(--action-green)) 50%, transparent)}60%{box-shadow:0 0 0 4px color-mix(in srgb, var(--color-success,var(--action-green)) 0%, transparent)}to{box-shadow:0 0 #0000}}@media (prefers-reduced-motion:reduce){.wb-log-dots__dot[data-v-9c103bcc],.wb-log-details.is-finished[data-v-9c103bcc]{animation:none}}.exec-logs[data-v-dd1760f3]{flex-direction:column;gap:12px;height:100%;padding:16px 20px;display:flex;overflow:auto}.exec-logs__head[data-v-dd1760f3]{align-items:center;gap:12px;display:flex}.exec-logs__title-block[data-v-dd1760f3]{flex:1;align-items:baseline;gap:10px;min-width:0;display:flex}.exec-logs__stats[data-v-dd1760f3]{font-size:var(--font-size-sm);color:var(--text-meta);font-variant-numeric:tabular-nums}.exec-logs__head-actions[data-v-dd1760f3]{flex-shrink:0;gap:8px;display:inline-flex}.exec-logs__config[data-v-dd1760f3]{background:var(--bg-subtle,var(--bg-container));border:1px solid var(--border-color);border-radius:var(--radius-md,6px);flex-wrap:wrap;align-items:center;gap:16px;padding:10px 14px;display:flex}.exec-logs__config-label[data-v-dd1760f3]{font-size:var(--font-size-sm);color:var(--text-secondary);font-weight:600}.exec-logs__config-field[data-v-dd1760f3]{align-items:center;gap:8px;display:inline-flex}.exec-logs__config-name[data-v-dd1760f3]{font-size:var(--font-size-sm);color:var(--text-meta)}.exec-logs__filter[data-v-dd1760f3]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.exec-logs__filter-spacer[data-v-dd1760f3]{flex:1}.exec-logs__batch-meta[data-v-dd1760f3]{font-size:var(--font-size-sm);color:var(--text-secondary);font-variant-numeric:tabular-nums}.exec-logs__batch[data-v-dd1760f3]{background:color-mix(in srgb, var(--color-primary) 6%, transparent);border:1px solid color-mix(in srgb, var(--color-primary) 25%, transparent);border-radius:var(--radius-md,6px);align-items:center;gap:12px;padding:8px 14px;display:flex}.exec-logs__list[data-v-dd1760f3]{flex-direction:column;flex:1;gap:10px;min-height:200px;display:flex}.exec-logs__empty[data-v-dd1760f3]{border:1px dashed var(--border-color);border-radius:var(--radius-md,6px);color:var(--text-meta);text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:60px 20px;display:flex}.exec-logs__empty-art[data-v-dd1760f3]{opacity:.5;margin-bottom:8px;font-size:36px}.exec-logs__empty-title[data-v-dd1760f3]{font-size:var(--font-size-base);color:var(--text-secondary);margin-bottom:4px;font-weight:600}.exec-logs__empty-hint[data-v-dd1760f3]{font-size:var(--font-size-sm);max-width:400px}.exec-logs__pager[data-v-dd1760f3]{justify-content:center;padding-top:8px;display:flex}.exec-card[data-v-dd1760f3]{background:var(--bg-container);border:1px solid var(--border-color);border-radius:var(--radius-md,6px);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);flex-direction:column;gap:6px;padding:12px 14px;display:flex}.exec-card[data-v-dd1760f3]:hover{border-color:var(--color-primary)}.exec-card.is-selected[data-v-dd1760f3]{border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary)}.exec-card__head[data-v-dd1760f3]{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.exec-card__status[data-v-dd1760f3]{font-size:var(--font-size-xs);border:1px solid;border-radius:999px;flex-shrink:0;padding:1px 8px;font-weight:600;display:inline-block}.exec-card__title[data-v-dd1760f3]{font-size:var(--font-size-base);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;min-width:0;max-width:360px;font-weight:600;overflow:hidden}.exec-card__spacer[data-v-dd1760f3]{flex:1}.exec-card__meta[data-v-dd1760f3]{font-size:var(--font-size-xs);color:var(--text-meta);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:10px;display:inline-flex}.exec-card__task[data-v-dd1760f3]{white-space:nowrap;text-overflow:ellipsis;max-width:200px;overflow:hidden}.exec-card__time[data-v-dd1760f3]{font-variant-numeric:tabular-nums}.exec-card__exit[data-v-dd1760f3]{font-family:var(--font-mono,ui-monospace, monospace)}.exec-card__del[data-v-dd1760f3]{width:22px;height:22px;font-size:var(--font-size-md);color:var(--text-meta);border-radius:var(--radius-base);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;line-height:1;display:inline-flex}.exec-card__del[data-v-dd1760f3]:hover{background:var(--tint-danger-14);color:var(--color-danger-bright,var(--color-danger-light))}.exec-card__error[data-v-dd1760f3]{font-size:var(--font-size-sm);color:var(--color-danger-dark,#b91c1c);background:var(--tint-danger-06);border:1px solid color-mix(in srgb, var(--color-danger) 28%, transparent);border-radius:var(--radius-base);font-family:var(--font-mono,ui-monospace, monospace);white-space:pre-wrap;word-break:break-word;margin:0;padding:6px 10px}.wb-sidebar[data-v-cb578d87]{background:var(--bg-panel);flex-direction:column;flex-shrink:0;gap:18px;width:268px;padding:14px 12px 18px;display:flex;overflow-y:auto}.wb-section[data-v-cb578d87]{flex-direction:column;flex-shrink:0;gap:8px;min-height:0;display:flex}.wb-section+.wb-section[data-v-cb578d87]{padding-top:16px}.wb-section__head[data-v-cb578d87]{align-items:center;gap:6px;padding:0 4px;display:flex}.wb-section__tag[data-v-cb578d87]{height:18px;font-size:var(--font-size-xs);letter-spacing:.4px;color:var(--text-meta);background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-base);text-transform:uppercase;font-variant-numeric:tabular-nums;flex-shrink:0;align-items:center;padding:0 6px;font-weight:600;display:inline-flex}.wb-section__tag--accent[data-v-cb578d87]{color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 9%, transparent);border-color:var(--tint-primary-22)}.wb-section__title[data-v-cb578d87]{font-size:var(--font-size-sm);color:var(--text-secondary);letter-spacing:.2px;flex:1;min-width:0;margin:0;font-weight:600}.wb-section__action[data-v-cb578d87]{color:var(--text-meta);border-radius:var(--radius-base);cursor:pointer;width:28px;height:28px;font-size:var(--font-size-mid);transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.wb-section__action[data-v-cb578d87]:hover{background:var(--tint-primary-12);color:var(--color-primary)}.wb-new-btn[data-v-cb578d87]{border:1px dashed var(--tint-primary-35,color-mix(in srgb, var(--color-primary) 35%, transparent));border-radius:var(--radius-md);background:linear-gradient(135deg, color-mix(in srgb, var(--color-primary) 4%, transparent) 0%, color-mix(in srgb, var(--color-primary) 2%, transparent) 100%);width:100%;height:32px;color:var(--color-primary);font-size:var(--font-size-mid);letter-spacing:.05px;cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);align-items:center;gap:6px;padding:0 12px;font-weight:600;display:flex}.wb-new-btn__icon[data-v-cb578d87]{font-size:var(--font-size-mid);transition:transform var(--transition-fast) var(--ease-custom);flex-shrink:0}.wb-new-btn__shortcut[data-v-cb578d87]{display:none}.wb-new-btn[data-v-cb578d87]:hover{background:linear-gradient(135deg, color-mix(in srgb, var(--color-primary) 10%, transparent) 0%, color-mix(in srgb, var(--color-primary) 6%, transparent) 100%);color:var(--color-primary);border-style:solid;border-color:var(--tint-primary-50)}.wb-new-btn:hover .wb-new-btn__icon[data-v-cb578d87]{transform:rotate(90deg)}.wb-new-btn[data-v-cb578d87]:active{transform:scale(.99)}.wb-new-btn[data-v-cb578d87]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.wb-task-list[data-v-cb578d87]{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.wb-task-list.is-grouped .wb-task-item[data-v-cb578d87]{margin-left:14px}.wb-task-item[data-v-cb578d87]{border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);background:0 0;border:none;align-items:center;gap:8px;padding:7px 10px;display:flex;position:relative}.wb-task-item.is-running[data-v-cb578d87]{background:color-mix(in srgb, var(--color-warning) 8%, transparent)}.wb-task-item.is-running[data-v-cb578d87]:hover{background:color-mix(in srgb, var(--color-warning) 14%, transparent)}.wb-task-item[data-v-cb578d87]:hover{background:var(--bg-container-hover);border-color:#0000;transform:translateY(-.5px)}.wb-task-item.active[data-v-cb578d87]{background:color-mix(in srgb, var(--color-primary) 10%, var(--bg-container));box-shadow:0 1px 3px color-mix(in srgb, var(--color-primary) 12%, transparent), 0 0 0 1px color-mix(in srgb, var(--color-primary) 18%, transparent);border-color:#0000}.wb-task-item.active[data-v-cb578d87]:after{content:"";border-radius:var(--radius-base);background:linear-gradient(180deg, var(--color-primary) 0%, color-mix(in srgb, var(--color-primary) 70%, #fff) 100%);width:3px;box-shadow:0 0 8px color-mix(in srgb, var(--color-primary) 50%, transparent), 0 1px 3px color-mix(in srgb, var(--color-primary) 25%, transparent);position:absolute;top:5px;bottom:5px;left:-1px}.wb-task-item.active .wb-task-item__title[data-v-cb578d87],.wb-task-item.active .wb-task-item__del[data-v-cb578d87]{color:var(--color-primary)}.wb-task-item__running-dot[data-v-cb578d87]{background:var(--color-warning);width:6px;height:6px;box-shadow:0 0 0 0 color-mix(in srgb, var(--color-warning) 60%, transparent);border-radius:50%;flex:none;margin-left:auto;animation:1.4s ease-in-out infinite wb-running-pulse-cb578d87}@keyframes wb-running-pulse-cb578d87{0%,to{box-shadow:0 0 0 0 color-mix(in srgb, var(--color-warning) 60%, transparent);opacity:1;transform:scale(1)}50%{box-shadow:0 0 0 4px color-mix(in srgb, var(--color-warning) 0%, transparent);opacity:.75;transform:scale(1.35)}}.wb-task-item__body[data-v-cb578d87]{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.wb-task-item__title[data-v-cb578d87]{font-size:var(--font-size-sm);color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;letter-spacing:-.05px;font-weight:500;line-height:1.3;overflow:hidden}.wb-task-item.is-other-project[data-v-cb578d87]{opacity:.78}.wb-task-item.is-other-project[data-v-cb578d87]:hover{opacity:1}.wb-task-item[data-v-cb578d87]{cursor:grab}.wb-task-item.is-dragging[data-v-cb578d87]{opacity:.5;cursor:grabbing;pointer-events:none}.wb-task-item.is-drop-before[data-v-cb578d87]:before,.wb-task-item.is-drop-after[data-v-cb578d87]:after{content:"";background:var(--color-primary);border-radius:var(--radius-xs);height:2px;box-shadow:0 0 8px color-mix(in srgb, var(--color-primary) 50%, transparent);pointer-events:none;position:absolute;left:8px;right:8px}.wb-task-item.is-drop-before[data-v-cb578d87]:before{top:-2px}.wb-task-item.is-drop-after[data-v-cb578d87]:after{bottom:-2px}.wb-task-group__head.is-no-drop[data-v-cb578d87]{cursor:not-allowed;opacity:.55}.wb-task-item__action-group[data-v-cb578d87]{border-radius:var(--radius-lg);background:linear-gradient(to right, transparent 0%, var(--bg-container-hover) 40%);opacity:0;pointer-events:none;transition:opacity var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);align-items:center;gap:2px;padding:1px 1px 1px 14px;display:inline-flex;position:absolute;top:50%;right:6px;transform:translateY(-50%)translate(-2px)}.wb-task-item:hover .wb-task-item__action-group[data-v-cb578d87],.wb-task-item.active .wb-task-item__action-group[data-v-cb578d87]{opacity:1;pointer-events:auto;transform:translateY(-50%)translate(0)}.wb-task-item.active .wb-task-item__action-group[data-v-cb578d87]{background:linear-gradient(to right, transparent 0%, color-mix(in srgb, var(--color-primary) 10%, var(--bg-container)) 40%)}.wb-task-item.is-running .wb-task-item__action-group[data-v-cb578d87]{background:linear-gradient(to right, transparent 0%, color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 8%, var(--bg-panel)) 40%)}.wb-task-item__copy[data-v-cb578d87]{color:var(--text-meta);border-radius:var(--radius-md);cursor:pointer;width:22px;height:22px;font-size:var(--font-size-sm);transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.wb-task-item__copy[data-v-cb578d87]:hover{background:color-mix(in srgb, var(--color-primary) 12%, transparent);color:var(--color-primary)}.wb-task-item__copy[data-v-cb578d87]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset)}.wb-task-item__copy[data-v-cb578d87]:active{transform:scale(.9)}.wb-task-item__del[data-v-cb578d87]{color:var(--text-meta);border-radius:var(--radius-md);cursor:pointer;width:22px;height:22px;font-size:var(--font-size-sm);transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.wb-task-item__del[data-v-cb578d87]:hover{background:color-mix(in srgb, var(--color-danger) 14%, transparent);color:var(--color-danger-dark)}.wb-task-item__del[data-v-cb578d87]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset);opacity:1}.wb-task-item__del[data-v-cb578d87],.wb-sub-item__del[data-v-cb578d87]{font-size:var(--font-size-mid)}.wb-empty[data-v-cb578d87]{text-align:center;color:var(--text-meta);border-radius:var(--radius-md);background:linear-gradient(135deg, var(--bg-subtle) 0%, color-mix(in srgb, var(--tint-primary-06) 50%, transparent) 100%);border:1px dashed var(--border-color-light);flex-direction:column;align-items:center;gap:8px;padding:24px 14px 20px;display:flex;position:relative;overflow:hidden}.wb-empty[data-v-cb578d87]:before{content:"";background:radial-gradient(circle, color-mix(in srgb, var(--color-primary) 5%, transparent) 0%, transparent 70%);pointer-events:none;border-radius:50%;width:100px;height:100px;position:absolute;top:-25px;right:-25px}.wb-empty--compact[data-v-cb578d87]{background:var(--bg-subtle);border-style:solid;flex-direction:row;justify-content:center;gap:0;padding:10px 12px}.wb-empty--compact[data-v-cb578d87]:before{display:none}.wb-empty__art[data-v-cb578d87]{border-radius:var(--radius-xl);background:linear-gradient(135deg, var(--tint-primary-12) 0%, var(--tint-primary-08) 100%);width:52px;height:52px;color:var(--color-primary);font-size:var(--font-size-2xl);box-shadow:0 4px 12px color-mix(in srgb, var(--color-primary) 10%, transparent);z-index:1;justify-content:center;align-items:center;margin-bottom:4px;display:flex;position:relative}.wb-empty__title[data-v-cb578d87]{font-size:var(--font-size-base);letter-spacing:var(--letter-spacing-heading,-.25px);color:var(--text-secondary);z-index:1;font-weight:600;line-height:1.45;position:relative}.wb-empty--rich .wb-empty__hint[data-v-cb578d87]{font-size:var(--font-size-sm);color:var(--text-meta);z-index:1;max-width:280px;line-height:1.6;position:relative}.wb-empty__cta[data-v-cb578d87]{z-index:1;flex-wrap:wrap;justify-content:center;align-items:center;gap:14px;margin-top:8px;display:flex;position:relative}.wb-task-group__head[data-v-cb578d87]{border-radius:var(--radius-md);cursor:pointer;-webkit-user-select:none;user-select:none;font-size:var(--font-size-mid);color:var(--text-secondary);transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);align-items:center;gap:6px;margin-bottom:2px;padding:5px 6px;font-weight:600;display:flex}.wb-task-group__head[data-v-cb578d87]:hover{background:var(--bg-container-hover);color:var(--text-primary)}.wb-task-group__head.is-current[data-v-cb578d87]{color:var(--color-primary);font-weight:600}.wb-task-group__caret[data-v-cb578d87]{font-size:var(--font-size-sm);transition:transform var(--transition-fast);flex-shrink:0}.wb-task-group__icon[data-v-cb578d87]{font-size:var(--font-size-base);opacity:.7;flex-shrink:0}.wb-task-group__name[data-v-cb578d87]{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.wb-task-group__count[data-v-cb578d87]{min-width:14px;height:14px;font-size:var(--font-size-xs);background:var(--bg-subtle);padding:0 4px}.proj[data-v-4f1136db]{flex-direction:column;flex:auto;min-height:0;display:flex;overflow:hidden}.proj__head[data-v-4f1136db]{flex-shrink:0;align-items:center;gap:8px;padding:8px 12px;display:flex}.proj__title[data-v-4f1136db]{font-size:var(--font-size-sm);color:var(--text-secondary);flex:1;min-width:0;margin:0;font-weight:500}.proj__count[data-v-4f1136db]{font-size:var(--font-size-xs);color:var(--text-meta);font-variant-numeric:tabular-nums;text-align:right}.proj__tools[data-v-4f1136db]{flex-direction:column;flex-shrink:0;gap:8px;padding:0 12px 8px;display:flex}.proj__search[data-v-4f1136db]{border:1px solid var(--border-input);border-radius:var(--radius-md);background:var(--bg-input);height:24px;transition:border-color var(--transition-fast) var(--ease-custom), box-shadow var(--transition-fast) var(--ease-custom);align-items:center;gap:4px;padding:0 8px;display:flex}.proj__search[data-v-4f1136db]:hover:not(:focus-within){border-color:var(--border-input-hover)}.proj__search[data-v-4f1136db]:focus-within{border-color:var(--color-primary);box-shadow:var(--focus-ring-soft)}.proj__search-icon[data-v-4f1136db]{font-size:var(--font-size-sm);color:var(--text-meta);flex-shrink:0}.proj__search-input[data-v-4f1136db]{min-width:0;font-family:inherit;font-size:var(--font-size-sm);color:var(--text-primary);caret-color:var(--color-primary);background:0 0;border:none;outline:none;flex:1}.proj__search-input[data-v-4f1136db]::placeholder{color:var(--text-meta)}.proj__toggles[data-v-4f1136db]{align-items:center;gap:8px;display:flex}.proj__toggle[data-v-4f1136db]{border:1px solid var(--border-color);border-radius:var(--radius-md);min-width:0;height:22px;color:var(--text-meta);font-family:inherit;font-size:var(--font-size-xs);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;flex:1 1 0;padding:0 8px;line-height:1}.proj__toggle>span[data-v-4f1136db]{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.proj__toggle[data-v-4f1136db]:hover{color:var(--text-secondary);border-color:var(--text-tertiary)}.proj__toggle.is-on[data-v-4f1136db]{color:var(--color-primary);border-color:var(--color-primary);background:var(--tint-primary-12)}.proj__toggle[data-v-4f1136db]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.proj__list[data-v-4f1136db]{flex:auto;min-height:0;margin:0;padding:0 8px 8px;list-style:none;overflow-y:auto}.proj-item[data-v-4f1136db]{border-radius:var(--radius-lg);cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), box-shadow var(--transition-fast) var(--ease-custom);outline:none;padding:8px;position:relative}.proj-item[data-v-4f1136db]:hover{background:var(--bg-container-hover)}.proj-item.is-active[data-v-4f1136db]{background:linear-gradient(90deg, var(--tint-primary-10), var(--tint-primary-04));box-shadow:inset 0 0 0 1px var(--tint-primary-14)}.proj-item[data-v-4f1136db]:focus-visible{outline:var(--focus-outline);outline-offset:-1px}.proj-item.is-running[data-v-4f1136db]{background:var(--role-active-surface)}.proj-item--all[data-v-4f1136db]{border-bottom:1px solid var(--border-color);border-radius:var(--radius-lg) var(--radius-lg) 0 0;margin-bottom:4px}.proj-item__num[data-v-4f1136db]{font-size:var(--font-size-xs);border-radius:var(--radius-base);color:var(--text-secondary);background:var(--bg-subtle);font-variant-numeric:tabular-nums;flex-shrink:0;padding:0 5px;line-height:15px}.proj-item__running-text[data-v-4f1136db]{color:var(--color-warning-dark);font-variant-numeric:tabular-nums;flex-shrink:0;margin-left:auto}.proj-item__row1[data-v-4f1136db]{align-items:center;gap:6px;min-width:0;display:flex}.proj-item__icon[data-v-4f1136db]{font-size:var(--font-size-mid);color:var(--text-meta);flex-shrink:0}.proj-item.is-active .proj-item__icon[data-v-4f1136db]{color:var(--color-primary)}.proj-item__name[data-v-4f1136db]{font-size:var(--font-size-mid);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;padding-right:44px;font-weight:500;line-height:1.4;overflow:hidden}.proj-item__signals[data-v-4f1136db]{transition:opacity var(--transition-fast) var(--ease-custom);flex-shrink:0;align-items:center;gap:6px;display:inline-flex}.proj-item:hover .proj-item__signals[data-v-4f1136db]{opacity:0}.proj-item:has(.proj-item__action:focus-visible) .proj-item__signals[data-v-4f1136db]{opacity:0}.proj-item__running[data-v-4f1136db]{background:var(--color-warning);width:6px;height:6px;box-shadow:var(--dot-glow-warning);border-radius:50%;flex-shrink:0;animation:1.4s ease-in-out infinite proj-pulse-4f1136db}@keyframes proj-pulse-4f1136db{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(1.3)}}.proj-item__badge[data-v-4f1136db]{font-size:var(--font-size-xs);border-radius:var(--radius-base);color:var(--color-primary);background:var(--tint-primary-12);flex-shrink:0;padding:0 5px;line-height:15px}.proj-item__actions[data-v-4f1136db]{opacity:0;pointer-events:none;transition:opacity var(--transition-fast) var(--ease-custom);align-items:center;gap:2px;display:inline-flex;position:absolute;top:6px;right:8px}.proj-item:hover .proj-item__actions[data-v-4f1136db]{opacity:1;pointer-events:auto}.proj-item:has(.proj-item__action:focus-visible) .proj-item__actions[data-v-4f1136db]{opacity:1;pointer-events:auto}.proj-item:has(.proj-item__action.is-open) .proj-item__actions[data-v-4f1136db]{opacity:1;pointer-events:auto}.proj-item__action[data-v-4f1136db]{border-radius:var(--radius-base);width:20px;height:20px;color:var(--text-meta);font-size:var(--font-size-mid);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.proj-item__action[data-v-4f1136db]:hover{color:var(--color-primary);background:var(--tint-primary-12)}.proj-item__action[data-v-4f1136db]:active{color:var(--color-primary)}.proj-item__action[data-v-4f1136db]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.proj-item__action.is-open[data-v-4f1136db]{color:var(--color-primary);background:var(--tint-primary-12)}.proj-item__action--danger[data-v-4f1136db]{color:var(--color-danger-dark)}.proj-item__action--danger[data-v-4f1136db]:hover{color:var(--color-danger-dark);background:color-mix(in srgb, var(--color-danger) 14%, transparent)}.proj-item__action--danger[data-v-4f1136db]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.proj-menu[data-v-4f1136db]{font-size:var(--font-size-mid);color:var(--text-primary);margin:0;padding:2px 0;list-style:none}.proj-menu__item[data-v-4f1136db]{border-radius:var(--radius-md);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);align-items:center;gap:9px;padding:7px 10px;display:flex}.proj-menu__item[data-v-4f1136db]:hover,.proj-menu__item[data-v-4f1136db]:focus-visible{background:var(--tint-primary-12);outline:none}.proj-menu__icon[data-v-4f1136db]{width:16px;height:16px;font-size:var(--font-size-base);color:var(--text-secondary);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.proj-menu__icon[data-v-4f1136db] svg{width:16px;height:16px}.proj-menu__img[data-v-4f1136db]{object-fit:contain;-webkit-user-drag:none;width:16px;height:16px}.proj-menu__label[data-v-4f1136db]{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.proj-menu__hint[data-v-4f1136db]{font-size:var(--font-size-xs);color:var(--text-meta);transition:color var(--transition-fast) var(--ease-custom);flex-shrink:0}.proj-menu__item:hover .proj-menu__hint[data-v-4f1136db]{color:var(--color-primary)}.proj-menu__sep[data-v-4f1136db]{background:var(--border-color);height:1px;margin:4px 6px}.proj-menu__title[data-v-4f1136db]{font-size:var(--font-size-xs);letter-spacing:.3px;color:var(--text-meta);padding:4px 10px 3px;font-weight:600}.proj-menu__item--danger .proj-menu__label[data-v-4f1136db]{color:var(--color-warning-dark)}.proj-menu__item.is-missing .proj-menu__icon[data-v-4f1136db]{opacity:.5;filter:grayscale(.65)}.proj-menu__item.is-missing:hover .proj-menu__icon[data-v-4f1136db]{opacity:.85;filter:grayscale(.2)}.proj-item__row2[data-v-4f1136db]{min-width:0;font-size:var(--font-size-xs);color:var(--text-meta);align-items:center;gap:4px;margin-top:2px;display:flex}.proj-item__branch[data-v-4f1136db]{min-width:0;max-width:130px;font-family:var(--font-mono,ui-monospace, monospace);align-items:center;gap:4px;display:inline-flex}.proj-item__branch-name[data-v-4f1136db]{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.proj-item__branch[data-v-4f1136db] .proj-item__branch-icon{color:currentColor;flex-shrink:0;width:11px;height:11px}.proj-item__time[data-v-4f1136db]{font-variant-numeric:tabular-nums;flex-shrink:0;margin-left:auto}.proj-chip[data-v-4f1136db]{font-size:var(--font-size-xs);border-radius:var(--radius-pill);font-variant-numeric:tabular-nums;flex-shrink:0;padding:0 6px;line-height:14px}.proj-chip--ahead[data-v-4f1136db]{color:var(--color-primary);background:var(--tint-primary-12)}.proj-chip--behind[data-v-4f1136db]{color:var(--color-warning-dark);background:color-mix(in srgb, var(--color-warning) 14%, transparent)}.proj-chip--dirty[data-v-4f1136db]{color:var(--text-secondary);background:var(--bg-subtle)}.proj-chip--missing[data-v-4f1136db]{color:var(--color-danger-light);background:color-mix(in srgb, var(--color-danger) 12%, transparent)}.proj-item__row3[data-v-4f1136db]{align-items:center;gap:6px;margin-top:5px;display:flex}.proj-item__bar[data-v-4f1136db]{border-radius:var(--radius-pill);background:color-mix(in srgb, var(--text-tertiary) 16%, transparent);flex:1;min-width:0;height:4px;overflow:hidden}.proj-item__bar-fill[data-v-4f1136db]{border-radius:var(--radius-pill);background:var(--role-pending-bar);height:100%;transition:width var(--transition-base) var(--ease-custom), background var(--transition-fast) var(--ease-custom);display:block}.proj-item.is-running .proj-item__bar-fill[data-v-4f1136db]{background:var(--role-active-bar)}.proj-item.is-complete .proj-item__bar-fill[data-v-4f1136db]{background:var(--role-done-bar)}.proj-item__progress-text[data-v-4f1136db]{font-size:var(--font-size-xs);color:var(--text-meta);font-variant-numeric:tabular-nums;flex-shrink:0}.proj-empty[data-v-4f1136db]{text-align:center;border-radius:var(--radius-lg);background:var(--bg-subtle);margin:0 6px;padding:20px 12px;list-style:none}.proj-empty__title[data-v-4f1136db]{font-size:var(--font-size-mid);color:var(--text-secondary);margin:0 0 4px}.proj-empty__hint[data-v-4f1136db]{font-size:var(--font-size-xs);color:var(--text-meta);margin:0;line-height:1.6}.proj-empty__clear[data-v-4f1136db]{color:var(--color-primary);font-family:inherit;font-size:var(--font-size-xs);cursor:pointer;background:0 0;border:none;margin-top:8px;padding:2px 4px}.proj-empty__clear[data-v-4f1136db]:hover{text-decoration:underline}.proj-empty__clear[data-v-4f1136db]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.kb[data-v-efc67236]{flex-direction:column;flex:auto;min-width:0;min-height:0;display:flex}.kb__toolbar[data-v-efc67236]{border-bottom:1px solid var(--border-color);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:8px;padding:8px 12px;display:flex}.kb__views[data-v-efc67236]{border-radius:var(--radius-lg);background:var(--bg-subtle);flex-shrink:0;align-items:center;gap:2px;padding:3px;display:inline-flex}.kb__view-btn[data-v-efc67236]{color:var(--text-secondary);font-size:var(--font-size-sm);border-radius:var(--radius-base);cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);background:0 0;border:none;padding:0 10px;line-height:20px}.kb__view-btn[data-v-efc67236]:hover{color:var(--text-primary)}.kb__view-btn.is-active[data-v-efc67236]{background:var(--surface-elevated);box-shadow:var(--shadow-card-rest);color:var(--color-primary);font-weight:500}.kb__filters[data-v-efc67236]{flex-wrap:wrap;align-items:center;gap:10px;margin-left:auto;display:flex}.kb__search[data-v-efc67236]{align-items:center;display:inline-flex;position:relative}.kb__search-icon[data-v-efc67236]{font-size:var(--font-size-sm);color:var(--text-meta);pointer-events:none;position:absolute;left:7px}.kb__search-input[data-v-efc67236]{width:168px;height:24px;font-size:var(--font-size-sm);color:var(--text-primary);background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--radius-md);transition:border-color var(--transition-fast) var(--ease-custom), width var(--transition-base) var(--ease-custom);outline:none;padding:0 8px 0 24px}.kb__search-input[data-v-efc67236]:hover:not(:focus){border-color:var(--input-border-hover)}.kb__search-input[data-v-efc67236]:focus{border-color:var(--color-primary);box-shadow:var(--focus-ring-soft);width:216px}.kb__search-input[data-v-efc67236]::placeholder{color:var(--text-meta)}.kb__columns[data-v-efc67236]{flex:auto;min-height:0;display:grid;overflow:hidden}.kb__columns.is-animated[data-v-efc67236]{transition:grid-template-columns var(--transition-slow) var(--ease-enter)}.kb-col[data-v-efc67236]{--col-hue:var(--role-pending-hue);--col-ink:var(--role-pending-ink);--col-surface:var(--role-pending-surface);--col-wash:var(--role-pending-wash);--col-edge:var(--role-pending-edge);--col-glow:var(--role-pending-glow);--col-band:color-mix(in srgb, var(--col-hue) 26%, var(--surface-elevated));border-left:1px solid var(--border-color);background:var(--col-surface);min-width:0;min-height:0;transition:opacity var(--transition-base) var(--ease-enter), border-color var(--transition-base) var(--ease-enter);flex-direction:column;display:flex;overflow:hidden}.kb-col--doing[data-v-efc67236]{--col-hue:var(--role-active-hue);--col-ink:var(--role-active-ink);--col-surface:var(--role-active-surface);--col-wash:var(--role-active-wash);--col-edge:var(--role-active-edge);--col-glow:var(--role-active-glow)}.kb-col--done[data-v-efc67236]{--col-hue:var(--role-done-hue);--col-ink:var(--role-done-ink);--col-surface:var(--role-done-surface);--col-wash:var(--role-done-wash);--col-edge:var(--role-done-edge);--col-glow:var(--role-done-glow)}.kb-col[data-v-efc67236]:first-child{border-left:none}.kb-col__head[data-v-efc67236]{background:var(--col-band);border-bottom:1px solid var(--col-edge);flex-shrink:0;align-items:center;gap:8px;padding:8px 12px;display:flex}.kb-col__dot[data-v-efc67236]{background:var(--col-ink);width:8px;height:8px;box-shadow:var(--col-glow);border-radius:50%;flex-shrink:0}.kb-col--doing .kb-col__dot.is-live[data-v-efc67236]{animation:1.4s ease-in-out infinite kb-pulse-efc67236}@keyframes kb-pulse-efc67236{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(1.35)}}.kb-col__title[data-v-efc67236]{font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-wide);color:var(--col-ink);flex:1;min-width:0;margin:0;font-weight:600}.kb-col__count[data-v-efc67236]{font-size:var(--font-size-sm);color:var(--col-ink);font-variant-numeric:tabular-nums;border-radius:var(--radius-pill);background:color-mix(in srgb, var(--col-ink) 10%, transparent);padding:1px 7px;font-weight:600}.kb-col__list[data-v-efc67236]{flex:auto;min-height:0;margin:0;padding:12px;list-style:none;overflow-y:auto}.kb-col.is-collapsed[data-v-efc67236]{opacity:0;pointer-events:none;border-left-color:#0000}.kb-col__more[data-v-efc67236]{margin-top:4px;list-style:none}.kb-col__more-btn[data-v-efc67236]{border:1px dashed var(--border-color);border-radius:var(--radius-base);width:100%;color:var(--text-secondary);font-size:var(--font-size-sm);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom);background:0 0;padding:8px}.kb-col__more-btn[data-v-efc67236]:hover{color:var(--col-ink);border-color:var(--col-edge)}.kb-col__more-btn[data-v-efc67236]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.kb-card[data-v-efc67236]{--kb-mask-outside-band:linear-gradient(to bottom, #000 calc(100% - 19px), transparent calc(100% - 14px));border:1px solid var(--border-color-light);border-radius:var(--radius-lg);background:var(--surface-elevated);box-shadow:var(--shadow-card-rest);cursor:pointer;transition:border-color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom), box-shadow var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);margin-bottom:8px;padding:12px;position:relative}.kb-card[data-v-efc67236]:hover{border-color:var(--border-card-hover);background:var(--surface-elevated);box-shadow:var(--shadow-card-lift);transform:translateY(-1px)}.kb-card.is-running[data-v-efc67236]{border-color:var(--role-active-edge)}.kb-card.has-error[data-v-efc67236]{border-color:var(--role-error-edge);background:var(--role-error-wash)}.kb-card.is-opened[data-v-efc67236]{border-color:color-mix(in srgb, var(--color-primary) 42%, var(--border-color))}.kb-card__cover[data-v-efc67236]{border-radius:calc(var(--radius-lg) - 1px) calc(var(--radius-lg) - 1px) 0 0;background:var(--bg-container);cursor:zoom-in;border:none;width:calc(100% + 24px);height:72px;margin:-12px -12px 10px;padding:0;display:block;position:relative;overflow:hidden}.kb-card__cover[data-v-efc67236]:focus-visible{outline:var(--focus-outline);outline-offset:-2px}.kb-card__cover-img[data-v-efc67236]{object-fit:cover;object-position:top center;width:100%;height:100%;transition:transform var(--transition-base) var(--ease-custom);display:block}.kb-card__cover:hover .kb-card__cover-img[data-v-efc67236]{transform:scale(1.04)}.kb-card__cover-more[data-v-efc67236]{border-radius:var(--radius-base);background:var(--bg-overlay);color:#fff;font-size:var(--font-size-xs);font-variant-numeric:tabular-nums;padding:0 5px;line-height:16px;position:absolute;bottom:6px;right:6px}.kb-card__row1[data-v-efc67236]{min-width:0;font-size:var(--font-size-xs);color:var(--text-meta);align-items:baseline;gap:6px;margin-bottom:8px;display:flex}.kb-card__time[data-v-efc67236]{font-variant-numeric:tabular-nums;flex-shrink:0;margin-left:auto}.kb-card__spent[data-v-efc67236]{font-size:var(--font-size-xs);color:var(--text-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;margin:-2px 0 8px;overflow:hidden}.kb-card__auto-done[data-v-efc67236]{border:1px solid color-mix(in srgb, var(--color-success) 24%, var(--surface-elevated));border-radius:var(--radius-base);background:color-mix(in srgb, var(--color-success) 9%, var(--surface-elevated));color:color-mix(in srgb, var(--color-success) 62%, var(--text-primary));font-size:var(--font-size-xs);margin:-4px 0 8px;padding:0 5px;line-height:1.6;display:inline-block}.kb-table__auto-done[data-v-efc67236]{color:color-mix(in srgb, var(--color-success) 62%, var(--text-primary))}.kb-card__title[data-v-efc67236]{min-width:0;font-size:var(--font-size-base);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;flex:1 1 0;margin:0;font-weight:500;line-height:1.5;overflow:hidden}.kb-card__project-chip[data-v-efc67236],.kb-table__project[data-v-efc67236]{--tag-ink:hsl(var(--tag-hue,200) 62% 44%);border:1px solid color-mix(in srgb, var(--tag-ink) 24%, var(--surface-elevated));border-radius:var(--radius-pill);background:color-mix(in srgb, var(--tag-ink) 9%, var(--surface-elevated));max-width:100%;color:color-mix(in srgb, var(--tag-ink) 62%, var(--text-primary));font-size:var(--font-size-xs);white-space:nowrap;text-overflow:ellipsis;padding:0 6px;line-height:16px;display:inline-block;overflow:hidden}.kb-card__row1 .kb-card__project-chip[data-v-efc67236]{flex:0 auto;min-width:0}.kb-table__project[data-v-efc67236]{vertical-align:1px;margin-left:6px}.kb-card__live[data-v-efc67236]{border-top:1px dashed var(--border-color-light);min-width:0;margin-top:8px;padding-top:8px}.kb-card__live-meta[data-v-efc67236]{font-size:var(--font-size-xs);color:var(--text-meta);font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:8px;margin:0;display:flex}.kb-card__live-agent[data-v-efc67236],.kb-card__quote-agent[data-v-efc67236],.kb-table__agent[data-v-efc67236]{color:var(--text-meta);flex:none;align-items:center;font-size:12px;display:inline-flex}.kb-card__live-agent[data-v-efc67236],.kb-table__agent[data-v-efc67236]{margin-right:4px}.kb-card__reply-text[data-v-efc67236]{flex:auto;min-width:0;margin-left:4px}.kb-card__live-silent[data-v-efc67236]{color:var(--color-warning-dark)}.kb-card__live-line[data-v-efc67236]{font-size:var(--font-size-xs);color:var(--text-meta);-webkit-line-clamp:2;line-clamp:2;word-break:break-word;-webkit-box-orient:vertical;margin:4px 0 0;line-height:1.5;display:-webkit-box;overflow:hidden}.kb-card__live-line.is-tool[data-v-efc67236]{-webkit-line-clamp:1;line-clamp:1}.kb-card__live-line.is-thought[data-v-efc67236]{color:var(--text-secondary);padding-left:8px}.kb-card__live-tag[data-v-efc67236]{color:var(--text-meta);margin-right:4px}.kb-card__reply[data-v-efc67236]{border-top:1px dashed var(--border-color-light);border-left:2px solid var(--border-color-light);font-size:var(--font-size-xs);color:var(--text-secondary);word-break:break-word;align-items:flex-start;margin:6px 0 0;padding:6px 0 0;line-height:1.5;display:flex}.kb-card__reply-text[data-v-efc67236]{-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.kb-card__actions[data-v-efc67236]{opacity:0;pointer-events:none;transition:opacity var(--transition-fast) var(--ease-custom);align-items:center;gap:2px;padding-left:12px;display:inline-flex;position:absolute;bottom:6px;right:8px}.kb-card:hover .kb-card__actions[data-v-efc67236],.kb-card:focus-visible .kb-card__actions[data-v-efc67236]{opacity:1;pointer-events:auto}.kb-card:has(:focus-visible) .kb-card__actions[data-v-efc67236]{opacity:1;pointer-events:auto}.kb-card:hover .kb-card__live[data-v-efc67236]>:last-child,.kb-card:focus-visible .kb-card__live[data-v-efc67236]>:last-child,.kb-card:hover .kb-card__reply[data-v-efc67236],.kb-card:focus-visible .kb-card__reply[data-v-efc67236]{-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 118px), transparent calc(100% - 102px)), var(--kb-mask-outside-band);-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 118px), transparent calc(100% - 102px)), var(--kb-mask-outside-band);mask-image:linear-gradient(to right, #000 calc(100% - 118px), transparent calc(100% - 102px)), var(--kb-mask-outside-band);-webkit-mask-composite:source-over;-webkit-mask-composite:source-over;mask-composite:add}.kb-card:has(:focus-visible) .kb-card__live[data-v-efc67236]>:last-child{-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 118px), transparent calc(100% - 102px)), var(--kb-mask-outside-band);-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 118px), transparent calc(100% - 102px)), var(--kb-mask-outside-band);mask-image:linear-gradient(to right, #000 calc(100% - 118px), transparent calc(100% - 102px)), var(--kb-mask-outside-band);-webkit-mask-composite:source-over;-webkit-mask-composite:source-over;mask-composite:add}.kb-card:has(:focus-visible) .kb-card__reply[data-v-efc67236]{-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 118px), transparent calc(100% - 102px)), var(--kb-mask-outside-band);-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 118px), transparent calc(100% - 102px)), var(--kb-mask-outside-band);mask-image:linear-gradient(to right, #000 calc(100% - 118px), transparent calc(100% - 102px)), var(--kb-mask-outside-band);-webkit-mask-composite:source-over;-webkit-mask-composite:source-over;mask-composite:add}.kb-card:hover .kb-card__row1:not(:has(~:not(.kb-card__actions))) .kb-card__title[data-v-efc67236]{-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 68px), transparent calc(100% - 52px)), var(--kb-mask-outside-band);-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 68px), transparent calc(100% - 52px)), var(--kb-mask-outside-band);mask-image:linear-gradient(to right, #000 calc(100% - 68px), transparent calc(100% - 52px)), var(--kb-mask-outside-band);-webkit-mask-composite:source-over;-webkit-mask-composite:source-over;mask-composite:add}.kb-card:focus-visible .kb-card__row1:not(:has(~:not(.kb-card__actions))) .kb-card__title[data-v-efc67236]{-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 68px), transparent calc(100% - 52px)), var(--kb-mask-outside-band);-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 68px), transparent calc(100% - 52px)), var(--kb-mask-outside-band);mask-image:linear-gradient(to right, #000 calc(100% - 68px), transparent calc(100% - 52px)), var(--kb-mask-outside-band);-webkit-mask-composite:source-over;-webkit-mask-composite:source-over;mask-composite:add}.kb-card:has(:focus-visible) .kb-card__row1:not(:has(~:not(.kb-card__actions))) .kb-card__title[data-v-efc67236]{-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 68px), transparent calc(100% - 52px)), var(--kb-mask-outside-band);-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 68px), transparent calc(100% - 52px)), var(--kb-mask-outside-band);mask-image:linear-gradient(to right, #000 calc(100% - 68px), transparent calc(100% - 52px)), var(--kb-mask-outside-band);-webkit-mask-composite:source-over;-webkit-mask-composite:source-over;mask-composite:add}.kb-card__btn[data-v-efc67236]{color:var(--text-meta);font-size:var(--font-size-xs);border-radius:var(--radius-base);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom);background:0 0;border:none;padding:0 5px;line-height:18px}.kb-card__btn[data-v-efc67236]:hover{color:var(--color-primary);background:var(--bg-subtle-hover)}.kb-card__btn--danger[data-v-efc67236]{font-size:var(--font-size-base);padding:0 4px}.kb-card__btn--danger[data-v-efc67236]:hover{color:var(--color-danger-light)}.kb-card__btn--stop[data-v-efc67236]:hover{color:var(--color-warning-dark);background:var(--bg-subtle-hover)}.kb-card__btn--done[data-v-efc67236]:hover{color:var(--color-success-dark);background:var(--bg-subtle-hover)}.kb-card__btn[data-v-efc67236]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.kb-card__retry[data-v-efc67236]{border:1px solid var(--role-error-edge);border-radius:var(--radius-pill);background:var(--surface-elevated);color:var(--role-error-ink);font-size:var(--font-size-xs);cursor:pointer;transition:background var(--transition-fast) var(--ease-custom);margin-top:6px;padding:2px 10px;line-height:18px;display:inline-block}.kb-card__retry[data-v-efc67236]:hover{background:var(--role-error-surface)}.kb-card__retry[data-v-efc67236]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.kb-col__empty[data-v-efc67236]{text-align:center;font-size:var(--font-size-xs);color:var(--text-meta);border:1px dashed var(--border-color-light);border-radius:var(--radius-lg);background:var(--bg-subtle);margin:0 2px;padding:18px 8px;list-style:none}.kb-col__add[data-v-efc67236]{margin:0;padding:0;list-style:none}.kb-col__add-btn[data-v-efc67236]{width:100%;font-size:var(--font-size-xs);color:var(--text-meta);border:1px dashed var(--border-color-medium);border-radius:var(--radius-lg);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;justify-content:center;align-items:center;gap:5px;padding:5px 10px;line-height:20px;display:flex}.kb-col__add-btn[data-v-efc67236]:hover{color:var(--color-primary);border-color:var(--color-primary);background:var(--bg-subtle)}.kb-col__add-btn[data-v-efc67236]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.kb-col__add-plus[data-v-efc67236]{font-size:var(--font-size-base);line-height:1}.kb-col__add-btn--solo[data-v-efc67236]{padding:18px 8px}.kb__table-wrap[data-v-efc67236]{flex:auto;min-height:0;overflow:auto}.kb-table[data-v-efc67236]{table-layout:fixed;border-collapse:collapse;width:100%;font-size:var(--font-size-sm)}.kb-table__th[data-v-efc67236]{z-index:1;text-align:left;font-size:var(--font-size-xs);color:var(--text-meta);background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-filter);border-bottom:1px solid var(--border-color);white-space:nowrap;padding:7px 10px;font-weight:500;position:sticky;top:0}.kb-table__th--narrow[data-v-efc67236]{width:96px}.kb-table__th--time[data-v-efc67236]{width:148px}.kb-table__row[data-v-efc67236]{cursor:pointer;transition:background var(--transition-fast) var(--ease-custom)}.kb-table__row[data-v-efc67236]:hover{background:var(--bg-container-hover)}.kb-table__td[data-v-efc67236]{border-bottom:1px solid var(--border-color);color:var(--text-secondary);vertical-align:middle;padding:8px 10px}.kb-table__td--num[data-v-efc67236]{font-variant-numeric:tabular-nums}.kb-table__time[data-v-efc67236]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.kb-table__dur[data-v-efc67236]{color:var(--text-primary)}.kb-table__time-sep[data-v-efc67236]{opacity:.55;margin:0 3px}.kb-table__name[data-v-efc67236]{color:var(--text-primary)}.kb-table__shots[data-v-efc67236]{color:var(--text-secondary);font-family:inherit;font-size:var(--font-size-xs);cursor:zoom-in;background:0 0;border:none;margin-right:6px;padding:0}.kb-table__shots[data-v-efc67236]:hover{color:var(--color-primary)}.kb-table__shots[data-v-efc67236]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.kb-table__live[data-v-efc67236]{font-size:var(--font-size-xs);color:var(--text-meta);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;display:block;overflow:hidden}.kb-table__live-silent[data-v-efc67236]{color:var(--color-warning-dark);margin-left:6px}.kb-table__live--reply[data-v-efc67236]{color:var(--text-secondary);padding-left:8px}.kb-table__status[data-v-efc67236]{font-size:var(--font-size-xs);border-radius:var(--radius-base);background:var(--bg-subtle);color:var(--text-secondary);padding:1px 6px}.kb-table__status.is-doing[data-v-efc67236]{color:var(--color-warning-dark)}.kb-table__status.is-done[data-v-efc67236]{color:var(--color-success-dark)}.kb-table__empty[data-v-efc67236]{text-align:center;color:var(--text-meta);padding:28px 10px}@media (width<=860px){.kb__columns[data-v-efc67236]{display:block;overflow-y:auto}.kb-col[data-v-efc67236]{border-left:none;border-top:1px solid var(--border-color)}.kb-col[data-v-efc67236]:first-child{border-top:none}.kb-col__list[data-v-efc67236]{overflow:visible}.kb-col.is-collapsed[data-v-efc67236]{border-top-color:#0000;height:0}}.tep[data-v-beca42f2]{vertical-align:middle}.tep__btn[data-v-beca42f2]{border:1px solid var(--border-color);border-radius:var(--radius-pill);background:var(--bg-panel);height:22px;color:var(--text-secondary);font-size:var(--font-size-xs);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom);align-items:center;gap:5px;padding:0 8px;display:inline-flex}.tep__btn[data-v-beca42f2]:hover,.tep__btn[data-v-beca42f2]:focus-visible{color:var(--color-primary);border-color:var(--color-primary)}.tep__btn[data-v-beca42f2]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.tep__btn-icon[data-v-beca42f2]{font-size:var(--font-size-mid)}.tep__btn-caret[data-v-beca42f2]{font-size:var(--font-size-xs);opacity:.7}.tep__item[data-v-beca42f2]{align-items:center;gap:8px;min-width:132px;display:inline-flex}.tep__item-icon[data-v-beca42f2]{font-size:var(--font-size-base);flex:none}.tep__item-name[data-v-beca42f2]{flex:1}.tep__item-model[data-v-beca42f2]{white-space:nowrap;text-overflow:ellipsis;max-width:15em;font-size:var(--font-size-xs);color:var(--text-meta);flex:none;overflow:hidden}.tep__item-check[data-v-beca42f2]{color:var(--color-primary);font-size:var(--font-size-sm)}.tep__item-missing[data-v-beca42f2]{font-size:var(--font-size-xs);color:var(--text-meta,var(--text-secondary))}.acs[data-v-5aa33822]{flex-direction:column;flex:1;min-height:0;display:flex}.acs__head[data-v-5aa33822]{border-bottom:1px solid var(--border-color-light);flex:none;align-items:center;gap:6px;height:32px;padding:0 8px;display:flex}.acs__title[data-v-5aa33822]{font-size:var(--font-size-xs);letter-spacing:.06em;color:var(--text-meta);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-weight:700;overflow:hidden}.acs__spacer[data-v-5aa33822]{flex:1}.acs__engine[data-v-5aa33822]{flex:none}.acs__icon-btn[data-v-5aa33822]{border-radius:var(--radius-xs);width:22px;height:22px;color:var(--text-meta);cursor:pointer;transition:var(--transition-ui-fast);background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.acs__icon-btn[data-v-5aa33822]:hover{background:var(--bg-hover);color:var(--text-secondary)}.acs__body[data-v-5aa33822]{flex:1;grid-template:"stage"minmax(0,1fr)"composer"/minmax(0,1fr);min-height:0;display:grid}.acs__body.is-wide[data-v-5aa33822]{grid-template-columns:240px minmax(0,1fr);grid-template-areas:"list chat""list composer"}.acs__convs[data-v-5aa33822]{grid-area:stage;min-height:0;padding:8px;overflow-y:auto}.acs__chat[data-v-5aa33822]{grid-area:stage;min-height:0;display:flex}.acs__body.is-wide .acs__convs[data-v-5aa33822]{grid-area:list}.acs__body.is-wide .acs__chat[data-v-5aa33822]{grid-area:chat}.acs__composer[data-v-5aa33822]{padding:var(--acu-space-3) var(--acu-space-4) var(--acu-space-4);background:linear-gradient(to top, var(--acu-bg) 70%, transparent);grid-area:composer}.acs__composer[data-v-5aa33822] .acu-input-queue{--acu-queue-edge:var(--role-pending-edge);--acu-queue-surface:var(--role-pending-surface);--acu-queue-ink:var(--role-pending-ink);--acu-queue-wash:var(--role-pending-wash)}.acs__chat[data-v-5aa33822]>.acu-chat{flex:1;min-width:0}.acs__chat[data-v-5aa33822] .acu-avatar--left{background:0 0}.acs__chat[data-v-5aa33822] .acu-bubble-row.is-assistant .acu-bubble-main{width:var(--acu-bubble-max-width);max-width:var(--acu-bubble-max-width);position:relative}.acs__chat[data-v-5aa33822] .acu-bubble-row.is-assistant .acu-bubble{align-self:flex-start}.acs__chat[data-v-5aa33822] .acu-message-meta{margin:0;position:absolute;top:0;right:0}.acs__foot[data-v-5aa33822]{border-top:1px solid var(--border-color-light);flex-wrap:wrap;flex:none;align-items:center;gap:6px;padding:6px 8px;display:flex}.acs__foot-label[data-v-5aa33822]{font-size:var(--font-size-xs);color:var(--text-meta)}.acs__foot-hint[data-v-5aa33822]{font-size:var(--font-size-xs);color:var(--text-meta);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.acs__notice[data-v-5aa33822]{font-size:var(--font-size-xs);color:var(--color-warning-dark);margin:0;line-height:1.5}.oc[data-v-6516e4a1]{width:var(--wb-right-w,300px);border-left:1px solid var(--border-color-light);background:var(--bg-panel);min-height:0;transition:width var(--transition-base) var(--ease-custom);flex-direction:column;flex-shrink:0;display:flex}.board__cols.is-resizing .oc[data-v-6516e4a1]{transition:none}.oc.is-collapsed[data-v-6516e4a1]{width:32px}.oc__rail[data-v-6516e4a1]{width:100%;min-height:0;color:var(--text-meta);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-direction:column;flex:auto;align-items:center;gap:8px;padding:10px 0;display:flex}.oc__rail[data-v-6516e4a1]:hover{color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 8%, transparent)}.oc__rail[data-v-6516e4a1]:focus-visible{outline:var(--focus-outline);outline-offset:-2px}.oc__rail-icon[data-v-6516e4a1]{font-size:var(--font-size-base);flex-shrink:0}.oc__rail-live[data-v-6516e4a1]{background:var(--color-success);width:6px;height:6px;box-shadow:var(--dot-glow-success);border-radius:50%;flex-shrink:0;animation:1.6s ease-in-out infinite oc-pulse-6516e4a1}.oc__rail-live.is-off[data-v-6516e4a1]{background:var(--color-warning);box-shadow:var(--dot-glow-warning);animation:none}.oc__rail-text[data-v-6516e4a1]{writing-mode:vertical-rl;letter-spacing:1px;font-size:var(--font-size-sm);color:var(--text-secondary);-webkit-user-select:none;user-select:none}.oc__head[data-v-6516e4a1]{border-bottom:1px solid var(--border-color);flex-shrink:0;align-items:center;gap:8px;padding:10px 12px;display:flex}.oc__live[data-v-6516e4a1]{background:var(--color-success);width:6px;height:6px;box-shadow:var(--dot-glow-success);border-radius:50%;flex-shrink:0;animation:1.6s ease-in-out infinite oc-pulse-6516e4a1}.oc__live.is-off[data-v-6516e4a1]{background:var(--color-warning);box-shadow:var(--dot-glow-warning);animation:none}@keyframes oc-pulse-6516e4a1{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(1.35)}}.oc__title[data-v-6516e4a1]{font-size:var(--font-size-mid);letter-spacing:.01em;color:var(--text-primary);flex:1;min-width:0;margin:0;font-weight:600}.oc__toggle[data-v-6516e4a1]{border:1px solid var(--border-color);border-radius:var(--radius-pill);background:var(--surface-elevated);height:22px;color:var(--text-secondary);font-size:var(--font-size-xs);white-space:nowrap;cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);flex-shrink:0;align-items:center;padding:0 10px;font-family:inherit;font-weight:500;display:inline-flex}.oc__toggle[data-v-6516e4a1]:hover:not(:disabled),.oc__toggle.is-off[data-v-6516e4a1]{color:var(--role-active-ink);border-color:var(--role-active-edge);background:var(--role-active-surface)}.oc__toggle.is-off[data-v-6516e4a1]:hover:not(:disabled){border-color:var(--role-active-ink)}.oc__toggle[data-v-6516e4a1]:disabled{opacity:var(--disabled-opacity);cursor:default}.oc__toggle[data-v-6516e4a1]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.oc__collapse[data-v-6516e4a1]{width:22px;height:22px;color:var(--text-meta);border-radius:var(--radius-base);font-size:var(--font-size-mid);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.oc__collapse[data-v-6516e4a1]:hover{color:var(--color-primary)}.oc__collapse[data-v-6516e4a1]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.oc__state[data-v-6516e4a1]{font-size:var(--font-size-xs);color:var(--text-secondary);background:var(--bg-subtle);border-bottom:1px solid var(--border-color-light);flex-shrink:0;align-items:baseline;gap:8px;padding:9px 12px;display:flex}.oc__state.is-paused[data-v-6516e4a1]{color:var(--role-active-ink);background:var(--role-active-surface);border-bottom-color:var(--role-active-edge)}.oc__state-label[data-v-6516e4a1]{color:var(--text-meta)}.oc__state-value[data-v-6516e4a1]{font-size:var(--font-size-sm);color:var(--text-primary);margin-left:2px;font-weight:600}.oc__state.is-paused .oc__state-value[data-v-6516e4a1]{color:var(--role-active-ink)}.oc__state-meta[data-v-6516e4a1]{color:var(--text-meta);font-variant-numeric:tabular-nums;margin-left:auto}.oc__mode[data-v-6516e4a1]{border-radius:var(--radius-pill);background:var(--bg-subtle);border:1px solid var(--border-color);flex-shrink:0;gap:2px;margin:8px 12px 0;padding:2px;display:flex}.oc__mode-btn[data-v-6516e4a1]{border-radius:var(--radius-pill);height:22px;color:var(--text-meta);font-size:var(--font-size-xs);cursor:pointer;transition:var(--transition-ui-fast);background:0 0;border:none;flex:1}.oc__mode-btn[data-v-6516e4a1]:hover{color:var(--text-secondary)}.oc__mode-btn.is-active[data-v-6516e4a1]{background:color-mix(in srgb, var(--color-primary) 10%, var(--bg-panel));color:var(--color-primary-dark);box-shadow:var(--shadow-sm);font-weight:600}html.dark .oc__mode-btn.is-active[data-v-6516e4a1]{color:var(--color-primary-light)}.oc__mode-btn[data-v-6516e4a1]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.oc__chat[data-v-6516e4a1]{min-height:0}.oc__report[data-v-6516e4a1]{flex-direction:column;flex:auto;min-height:0;padding:8px 0 0;display:flex}.oc__report.is-empty .oc__report-list[data-v-6516e4a1]{justify-content:center;align-items:center;display:flex}.oc.is-report-empty .oc__input[data-v-6516e4a1]{min-height:168px}.oc__panel-title[data-v-6516e4a1]{font-size:var(--font-size-sm);color:var(--text-secondary);flex-shrink:0;align-items:center;gap:6px;margin:0 12px 6px;font-weight:600;display:flex}.oc__report-head[data-v-6516e4a1]{flex-shrink:0;align-items:center;gap:6px;margin:0 12px 6px;display:flex}.oc__report-head .oc__panel-title[data-v-6516e4a1]{flex:1;min-width:0;margin:0}.oc__interval[data-v-6516e4a1]{max-width:116px;height:22px;font-size:var(--font-size-xs);color:var(--text-secondary);background:var(--surface-elevated);border:1px solid var(--border-color);border-radius:var(--radius-pill);cursor:pointer;transition:border-color var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);outline:none;flex-shrink:0;padding:0 2px 0 6px;font-family:inherit}.oc__interval[data-v-6516e4a1]:hover{color:var(--text-primary);border-color:var(--border-color)}.oc__interval[data-v-6516e4a1]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.oc__report-run[data-v-6516e4a1]{border:1px solid var(--border-color);border-radius:var(--radius-pill);background:var(--surface-elevated);height:22px;color:var(--text-secondary);font-size:var(--font-size-xs);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom);flex-shrink:0;align-items:center;gap:3px;padding:0 8px;font-family:inherit;display:inline-flex}.oc__report-run[data-v-6516e4a1]:hover:not(:disabled){color:var(--color-primary);border-color:var(--color-primary)}.oc__report-run[data-v-6516e4a1]:disabled{opacity:var(--disabled-opacity);cursor:default}.oc__report-run[data-v-6516e4a1]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.oc__report-run-icon[data-v-6516e4a1]{font-size:var(--font-size-xs)}.oc__report-run-icon.is-spin[data-v-6516e4a1]{animation:1s linear infinite oc-spin-6516e4a1}@keyframes oc-spin-6516e4a1{to{transform:rotate(360deg)}}.oc__report-list[data-v-6516e4a1]{flex:auto;min-height:0;margin:0;padding:0 12px 12px;list-style:none;overflow-y:auto}.rp[data-v-6516e4a1]{border-radius:var(--radius-lg);background:var(--surface-elevated);border:1px solid var(--border-color);border-top:2px solid var(--role-active-bar);box-shadow:var(--shadow-sm);padding:10px 11px}.rp__head[data-v-6516e4a1]{font-size:var(--font-size-xs);align-items:center;gap:6px;margin-bottom:6px;display:flex}.rp__trigger[data-v-6516e4a1]{color:var(--color-primary);font-weight:500}.rp__trigger.is-auto[data-v-6516e4a1]{color:var(--text-meta);font-weight:400}.rp__stale[data-v-6516e4a1]{border-radius:var(--radius-pill);background:var(--bg-active);color:var(--text-meta);padding:0 5px}.rp__count[data-v-6516e4a1]{border-radius:var(--radius-pill);background:var(--tint-primary-08);color:var(--color-primary);font-variant-numeric:tabular-nums;padding:0 5px}.rp__time[data-v-6516e4a1]{color:var(--text-meta);font-variant-numeric:tabular-nums;margin-left:auto}.rp__progress[data-v-6516e4a1]{align-items:center;gap:6px;margin:0 0 6px;display:flex}.rp__bar[data-v-6516e4a1]{border-radius:var(--radius-pill);background:var(--bg-active);flex:1;min-width:0;height:4px;overflow:hidden}.rp__bar-fill[data-v-6516e4a1]{border-radius:var(--radius-pill);background:var(--role-active-bar);height:100%;transition:width var(--transition-base) var(--ease-custom);display:block}.rp__percent[data-v-6516e4a1]{font-size:var(--font-size-xs);color:var(--text-secondary);font-variant-numeric:tabular-nums;flex-shrink:0}.rp__percent-tag[data-v-6516e4a1]{color:var(--text-meta);margin-right:4px}.rp__body[data-v-6516e4a1]{padding-left:10px}.rp__text[data-v-6516e4a1]{font-size:var(--font-size-mid);color:var(--text-primary);word-break:break-word;white-space:pre-wrap;max-height:9.6em;margin:0;line-height:1.6;overflow:hidden}.rp__text.is-expanded[data-v-6516e4a1]{max-height:none}.rp__text.is-clamped[data-v-6516e4a1]{-webkit-mask-image:linear-gradient(#000 calc(100% - 1.8em),#0000);mask-image:linear-gradient(#000 calc(100% - 1.8em),#0000)}.rp__more[data-v-6516e4a1]{border-radius:var(--radius-pill);background:var(--tint-primary-08);color:var(--color-primary);font-size:var(--font-size-xs);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);border:none;align-items:center;gap:2px;margin:6px 0 0;padding:2px 9px;font-family:inherit;font-weight:500;display:inline-flex}.rp__more[data-v-6516e4a1]:hover{color:var(--color-primary-dark);background:color-mix(in srgb, var(--color-primary) 14%, transparent)}.rp__more[data-v-6516e4a1]:focus-visible{outline:var(--focus-outline);outline-offset:2px}.rp__notice[data-v-6516e4a1]{font-size:var(--font-size-xs);color:var(--text-meta);margin:0;line-height:1.55}.rp__facts[data-v-6516e4a1]{border-top:1px solid var(--border-color);margin:9px 0 0;padding-top:7px}.rp__facts.is-collapsed[data-v-6516e4a1]{margin-top:7px}.rp__facts-toggle[data-v-6516e4a1]{font-size:var(--font-size-xs);margin-bottom:0}.rp__facts:not(.is-collapsed) .rp__facts-toggle[data-v-6516e4a1]{margin-bottom:5px}.rp__facts-toggle .oc__sect-title[data-v-6516e4a1]{letter-spacing:.04em}.rp__tasks[data-v-6516e4a1]{flex-direction:column;gap:5px;margin:0;padding:0;list-style:none;display:flex}.rpt[data-v-6516e4a1]{border-radius:var(--radius-md);background:var(--bg-panel);border:1px solid var(--border-color-light);min-width:0;padding:7px 9px}.rpt.is-silent[data-v-6516e4a1]{border-color:var(--role-active-edge);background:var(--role-active-surface)}.rpt__title[data-v-6516e4a1]{font-size:var(--font-size-sm);color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;margin:0;font-weight:600;overflow:hidden}.rpt__meta[data-v-6516e4a1]{font-size:var(--font-size-xs);color:var(--text-meta);font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:2px 6px;margin:1px 0 0;display:flex}.rpt__meta>span+span[data-v-6516e4a1]:before{content:"·";color:var(--text-meta);margin-right:6px}.rpt__project[data-v-6516e4a1]{color:var(--text-secondary)}.rpt__progress[data-v-6516e4a1]{align-items:center;gap:6px;margin:3px 0 0;display:flex}.rpt__bar[data-v-6516e4a1]{border-radius:var(--radius-pill);background:var(--bg-active);flex:1;min-width:0;height:3px;overflow:hidden}.rpt__bar-fill[data-v-6516e4a1]{border-radius:var(--radius-pill);background:var(--role-active-bar);height:100%;transition:width var(--transition-base) var(--ease-custom);display:block}.rpt__percent[data-v-6516e4a1]{text-align:right;min-width:30px;font-size:var(--font-size-xs);color:var(--text-meta);font-variant-numeric:tabular-nums;flex-shrink:0}.rpt__silent[data-v-6516e4a1]{border-radius:var(--radius-pill);background:var(--tint-warning-14);color:var(--role-active-ink);padding:0 4px;font-weight:600}.rpt__line[data-v-6516e4a1]{font-size:var(--font-size-xs);color:var(--text-meta);-webkit-line-clamp:2;line-clamp:2;word-break:break-word;-webkit-box-orient:vertical;margin:3px 0 0;line-height:1.5;display:-webkit-box;overflow:hidden}.rpt__line.is-tool[data-v-6516e4a1]{-webkit-line-clamp:1;line-clamp:1}.rpt__line.is-thought[data-v-6516e4a1]{color:var(--text-secondary)}.rpt__tag[data-v-6516e4a1]{min-width:20px;color:var(--text-meta);margin-right:5px;font-weight:500;display:inline-block}.oc__sect[data-v-6516e4a1]{border-radius:var(--radius-base);width:100%;color:var(--text-meta);font-size:var(--font-size-xs);text-align:left;cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;border:none;align-items:center;gap:5px;margin:0 0 4px;padding:4px 6px;font-family:inherit;display:flex}.oc__sect[data-v-6516e4a1]:hover{color:var(--text-secondary);background:var(--bg-subtle)}.oc__sect[data-v-6516e4a1]:focus-visible{outline:var(--focus-outline);outline-offset:-2px}.oc__sect-caret[data-v-6516e4a1]{font-size:var(--font-size-sm);flex-shrink:0}.oc__sect-title[data-v-6516e4a1]{color:var(--text-secondary);flex-shrink:0;font-weight:500}.oc__sect-meta[data-v-6516e4a1]{align-items:center;gap:6px;min-width:0;margin-left:auto;display:flex}.oc__sect-meta .oc__git-name[data-v-6516e4a1]{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.oc__sect-brief[data-v-6516e4a1]{color:var(--text-meta);font-variant-numeric:tabular-nums;flex-shrink:0}.oc__history[data-v-6516e4a1]{border-top:1px solid var(--border-color);flex-shrink:0;max-height:132px;padding:6px 12px 8px;overflow-y:auto}.oc__history-list[data-v-6516e4a1]{margin:0;padding:0;list-style:none}.oc__history-item[data-v-6516e4a1]{border-radius:var(--radius-base);width:100%;color:var(--text-meta);font-size:var(--font-size-xs);text-align:left;cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);background:0 0;border:none;align-items:center;gap:6px;padding:3px 6px;font-family:inherit;display:flex}.oc__history-item[data-v-6516e4a1]:hover{background:var(--bg-subtle);color:var(--text-secondary)}.oc__history-item.is-active[data-v-6516e4a1]{background:color-mix(in srgb, var(--color-primary) 10%, transparent);color:var(--text-primary)}.oc__history-item[data-v-6516e4a1]:focus-visible{outline:var(--focus-outline);outline-offset:-2px}.oc__history-time[data-v-6516e4a1]{font-variant-numeric:tabular-nums;flex-shrink:0}.oc__history-pct[data-v-6516e4a1]{text-align:right;min-width:30px;color:var(--text-secondary);font-variant-numeric:tabular-nums;flex-shrink:0}.oc__history-sum[data-v-6516e4a1]{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.oc-empty[data-v-6516e4a1]{text-align:center;max-width:260px;font-size:var(--font-size-xs);color:var(--text-meta);border:1px dashed var(--border-color-light);border-radius:var(--radius-lg);background:var(--bg-subtle);margin:0 auto;padding:18px 10px;list-style:none}.oc__git[data-v-6516e4a1]{border-top:1px solid var(--border-color);flex-shrink:0;padding:8px 12px 10px}.oc__git-name[data-v-6516e4a1]{color:var(--text-secondary);font-weight:500}.oc__git-list[data-v-6516e4a1]{font-size:var(--font-size-xs);grid-template-columns:auto 1fr;gap:4px 10px;margin:0;display:grid}.oc__git-label[data-v-6516e4a1]{color:var(--text-meta)}.oc__git-value[data-v-6516e4a1]{text-align:right;color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.oc__git-value.is-warn[data-v-6516e4a1]{color:var(--color-warning-dark)}.oc__git-value.is-danger[data-v-6516e4a1]{color:var(--color-danger-light)}.oc__git.is-collapsed[data-v-6516e4a1],.oc__history.is-collapsed[data-v-6516e4a1]{padding-top:4px;padding-bottom:4px}.oc__history.is-collapsed[data-v-6516e4a1]{max-height:none;overflow:visible}.oc__git.is-collapsed .oc__sect[data-v-6516e4a1],.oc__history.is-collapsed .oc__sect[data-v-6516e4a1]{margin-bottom:0}.oc__compose[data-v-6516e4a1]{border-top:1px solid var(--border-color);flex-shrink:0;padding:8px 12px 10px}.oc__input[data-v-6516e4a1]{resize:vertical;width:100%;min-height:76px;max-height:min(380px,45vh);font-size:var(--font-size-mid);color:var(--text-primary);background:var(--input-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);transition:border-color var(--transition-fast) var(--ease-custom), box-shadow var(--transition-fast) var(--ease-custom);outline:none;padding:9px 10px;font-family:inherit;line-height:1.5}.oc__input[data-v-6516e4a1]:focus{border-color:var(--input-border-focus);box-shadow:var(--input-shadow-focus)}.oc__input[data-v-6516e4a1]::placeholder{color:var(--text-meta)}.oc__input.is-over[data-v-6516e4a1]{border-color:var(--color-danger);box-shadow:0 0 0 1px var(--color-danger)}.oc__count[data-v-6516e4a1]{text-align:right;font-size:var(--font-size-xs);font-variant-numeric:tabular-nums;color:var(--text-meta);margin:5px 2px 0}.oc__count.is-warn[data-v-6516e4a1]{color:var(--color-warning-dark)}.oc__count.is-over[data-v-6516e4a1]{color:var(--color-danger-dark)}.oc__compose-foot[data-v-6516e4a1]{flex-wrap:wrap;align-items:center;gap:6px 8px;margin-top:6px;display:flex}.oc__attach[data-v-6516e4a1]{width:26px;height:26px;color:var(--text-meta);font-size:var(--font-size-base);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.oc__attach[data-v-6516e4a1]:hover:not(:disabled),.oc__attach.is-on[data-v-6516e4a1]{color:var(--color-primary)}.oc__attach[data-v-6516e4a1]:disabled{opacity:var(--disabled-opacity);cursor:default}.oc__attach[data-v-6516e4a1]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.oc__autorn[data-v-6516e4a1]{font-size:var(--font-size-xs);color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:4px;display:inline-flex}.oc__autorn input[data-v-6516e4a1]{cursor:pointer;accent-color:var(--color-primary)}.oc__send[data-v-6516e4a1]{border-radius:var(--radius-md);background:var(--gradient-accent);box-shadow:var(--btn-shadow);color:#fff;font-size:var(--font-size-sm);cursor:pointer;transition:box-shadow var(--transition-fast) var(--ease-custom), opacity var(--transition-fast) var(--ease-custom);border:none;align-items:center;gap:4px;margin-left:auto;padding:0 14px;font-weight:500;line-height:28px;display:inline-flex}.oc__send[data-v-6516e4a1]:hover:not(:disabled){background:var(--gradient-accent-hover);box-shadow:var(--btn-shadow-hover)}.oc__send[data-v-6516e4a1]:disabled{opacity:var(--disabled-opacity);cursor:default}.oc__send[data-v-6516e4a1]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.oc__send-icon[data-v-6516e4a1]{font-size:var(--font-size-sm)}.oc__hint[data-v-6516e4a1]{font-size:var(--font-size-xs);color:var(--text-meta);margin:6px 0 0;line-height:1.5}@media (width<=860px){.oc[data-v-6516e4a1]{border-left:none;border-top:1px solid var(--border-color);order:-1;min-height:72vh}.oc__collapse[data-v-6516e4a1]{display:none}.rp__text[data-v-6516e4a1]{max-height:none}.oc__report-list[data-v-6516e4a1]{overflow:visible}}.pd[data-v-5d14f0f1]{flex-direction:column;gap:14px;line-height:1.5;display:flex}.pd__intro[data-v-5d14f0f1]{font-size:var(--font-size-sm);color:var(--text-meta);margin:0;line-height:1.6}.pd__field[data-v-5d14f0f1]{flex-direction:column;gap:5px;display:flex}.pd__head[data-v-5d14f0f1]{align-items:baseline;gap:8px;display:flex}.pd__label[data-v-5d14f0f1]{font-size:var(--font-size-sm);color:var(--text-secondary);font-weight:500}.pd__count[data-v-5d14f0f1]{font-size:var(--font-size-xs);color:var(--text-meta);font-variant-numeric:tabular-nums;margin-left:auto}.pd__area[data-v-5d14f0f1]{box-sizing:border-box;resize:vertical;width:100%;min-height:92px;max-height:280px;font-size:var(--font-size-mid);color:var(--text-primary);background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-md);transition:border-color var(--transition-fast) var(--ease-custom);outline:none;padding:7px 9px;font-family:inherit;line-height:1.5}.pd__area[data-v-5d14f0f1]:focus{border-color:var(--color-primary)}.pd__area[data-v-5d14f0f1]::placeholder{color:var(--text-meta)}.pd__area[data-v-5d14f0f1]:disabled{opacity:var(--disabled-opacity);cursor:not-allowed}.pd__hint[data-v-5d14f0f1]{font-size:var(--font-size-xs);color:var(--text-meta);margin:0;line-height:1.6}.pd__foot[data-v-5d14f0f1]{align-items:center;gap:8px;width:100%;display:flex}.pd__foot-spacer[data-v-5d14f0f1]{flex:1}.pd__btn[data-v-5d14f0f1]{color:var(--text-secondary);font-size:var(--font-size-sm);border-radius:var(--radius-md);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;border:none;padding:0 12px;line-height:28px}.pd__btn[data-v-5d14f0f1]:hover:not(:disabled){color:var(--color-primary);background:var(--bg-container-hover)}.pd__btn[data-v-5d14f0f1]:disabled{opacity:var(--disabled-opacity);cursor:default}.pd__btn[data-v-5d14f0f1]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.pd__btn--primary[data-v-5d14f0f1]{background:var(--color-primary);color:#fff}.pd__btn--primary[data-v-5d14f0f1]:hover:not(:disabled){background:var(--color-primary);color:#fff;opacity:.88}.nc[data-v-40a1a81b]{flex-direction:column;gap:14px;line-height:1.5;display:flex}.nc__field[data-v-40a1a81b]{flex-direction:column;gap:5px;display:flex}.nc__label[data-v-40a1a81b]{font-size:var(--font-size-sm);color:var(--text-secondary);font-weight:500}.nc__input[data-v-40a1a81b],.nc__select[data-v-40a1a81b]{width:100%;font-size:var(--font-size-mid);color:var(--text-primary);background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-md);transition:border-color var(--transition-fast) var(--ease-custom);box-sizing:border-box;outline:none;padding:7px 9px;font-family:inherit;line-height:1.5}.nc__input[data-v-40a1a81b]:focus,.nc__select[data-v-40a1a81b]:focus{border-color:var(--color-primary)}.nc__input[data-v-40a1a81b]::placeholder{color:var(--text-meta)}.nc__select[data-v-40a1a81b]{cursor:pointer}.nc__input--area[data-v-40a1a81b]{resize:vertical;min-height:92px;max-height:260px}.nc__hint[data-v-40a1a81b]{font-size:var(--font-size-xs);color:var(--text-meta);white-space:nowrap;text-overflow:ellipsis;margin:0;overflow:hidden}.nc__error[data-v-40a1a81b]{font-size:var(--font-size-sm);border-radius:var(--radius-md);color:var(--color-danger-light);background:color-mix(in srgb, var(--color-danger) 10%, transparent);margin:0;padding:6px 8px}.nc__foot[data-v-40a1a81b]{align-items:center;gap:8px;width:100%;display:flex}.nc__foot-spacer[data-v-40a1a81b]{flex:1}.nc__btn[data-v-40a1a81b]{color:var(--text-secondary);font-size:var(--font-size-sm);border-radius:var(--radius-md);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;border:none;padding:0 12px;line-height:28px}.nc__btn[data-v-40a1a81b]:hover:not(:disabled){color:var(--color-primary);background:var(--bg-container-hover)}.nc__btn[data-v-40a1a81b]:disabled{opacity:var(--disabled-opacity);cursor:default}.nc__btn[data-v-40a1a81b]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.nc__btn--primary[data-v-40a1a81b]{background:var(--color-primary);color:#fff}.nc__btn--primary[data-v-40a1a81b]:hover:not(:disabled){background:var(--color-primary);color:#fff;opacity:.88}.board[data-v-5da69428]{background:var(--bg-container);height:100%;min-height:0;color:var(--text-primary);--wb-left-w:264px;--wb-right-w:360px;flex-direction:column;display:flex}.board__top[data-v-5da69428]{border-bottom:1px solid var(--border-color-light);background:var(--bg-panel);background-image:var(--gradient-accent-soft);flex-shrink:0;align-items:center;gap:16px;height:52px;padding:0 12px;display:flex}.board__brand[data-v-5da69428]{align-items:center;gap:8px;min-width:0;display:flex}.board__live[data-v-5da69428]{background:var(--color-success);width:8px;height:8px;box-shadow:var(--dot-glow-success);border-radius:50%;flex-shrink:0;animation:1.6s ease-in-out infinite board-pulse-5da69428}.board__live.is-off[data-v-5da69428]{background:var(--color-warning);box-shadow:var(--dot-glow-warning);animation:none}@keyframes board-pulse-5da69428{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.4)}}.board__brand-text[data-v-5da69428]{min-width:0}.board__title[data-v-5da69428]{font-size:var(--font-size-lg);letter-spacing:var(--letter-spacing-heading);color:var(--text-primary);margin:0;font-weight:600;line-height:1.3}.board__subtitle[data-v-5da69428]{font-size:var(--font-size-sm);color:var(--text-meta);margin:0;line-height:1.3}.board__stats[data-v-5da69428]{flex-wrap:wrap;align-items:center;gap:12px;min-width:0;margin-left:4px;display:flex}.board__stat[data-v-5da69428]{font-size:var(--font-size-xs);color:var(--text-meta);align-items:baseline;gap:4px;display:inline-flex}.board__stat-value[data-v-5da69428]{font-size:var(--font-size-mid);color:var(--text-primary);font-variant-numeric:tabular-nums;font-weight:500}.board__stat-value.is-live[data-v-5da69428]{color:var(--color-warning-dark)}.board__icon-btn[data-v-5da69428]{color:var(--text-meta);border-radius:var(--radius-md);cursor:pointer;width:26px;height:26px;font-size:var(--font-size-base);transition:color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex}.board__icon-btn[data-v-5da69428]:hover{color:var(--color-primary);background:var(--bg-subtle-hover)}.board__icon-btn[data-v-5da69428]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.board__scrim[data-v-5da69428]{display:none}.board__cols[data-v-5da69428]{flex:auto;min-height:0;display:flex;position:relative}.board__left[data-v-5da69428]{width:var(--wb-left-w);background:var(--bg-panel);flex-direction:column;flex-shrink:0;min-height:0;display:flex}.board__splitter[data-v-5da69428]{z-index:5;cursor:col-resize;touch-action:none;flex:0 0 5px;position:relative}.board__splitter[data-v-5da69428]:after{content:"";width:1px;transition:background var(--transition-fast) var(--ease-custom);background:0 0;position:absolute;top:0;bottom:0;left:2px}.board__splitter[data-v-5da69428]:hover:after,.board__splitter[data-v-5da69428]:active:after,.board__cols.is-resizing .board__splitter[data-v-5da69428]:after{background:var(--color-primary)}.board__main[data-v-5da69428]{background:var(--surface-canvas);flex-direction:column;flex:auto;min-width:0;min-height:0;display:flex}.board__main-head[data-v-5da69428]{flex-shrink:0;align-items:center;gap:8px;min-width:0;padding:8px 12px;display:flex}.board__main-title[data-v-5da69428]{flex:1;align-items:baseline;gap:8px;min-width:0;display:flex}.board__project-name[data-v-5da69428]{font-size:var(--font-size-base);color:var(--text-primary);white-space:nowrap;flex-shrink:0;margin:0;font-weight:500}.board__project-path[data-v-5da69428]{font-size:var(--font-size-xs);color:var(--text-meta);white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.board__project-meta[data-v-5da69428]{font-size:var(--font-size-xs);color:var(--text-meta);font-variant-numeric:tabular-nums;flex-shrink:0}@media (width<=1440px){.board[data-v-5da69428]{--wb-left-w:224px;--wb-right-w:320px}}@media (width<=1180px){.board[data-v-5da69428]{--wb-left-w:200px;--wb-right-w:280px}}@media (width>=1025px){.board__left[data-v-5da69428]{transition:width var(--transition-base) var(--ease-custom)}.board__left.is-collapsed[data-v-5da69428]{width:0;overflow:hidden}.board__cols.is-resizing .board__left[data-v-5da69428]{transition:none}}@media (width<=1024px){.board__splitter--left[data-v-5da69428]{display:none}.board__left[data-v-5da69428]{z-index:20;width:min(var(--wb-left-w), 86vw);background:var(--bg-container);border-right:1px solid var(--border-color);box-shadow:var(--dialog-shadow);transition:transform var(--transition-base) var(--ease-custom);position:absolute;top:0;bottom:0;left:0}.board__left.is-collapsed[data-v-5da69428]{pointer-events:none;transform:translate(-100%)}.board__scrim.is-on[data-v-5da69428]{z-index:15;display:block;position:absolute;inset:0}}@media (width<=860px){.board[data-v-5da69428]{--wb-right-w:100%}.board__splitter--right[data-v-5da69428]{display:none}.board__cols[data-v-5da69428]{flex-direction:column;overflow-y:auto}.board__main[data-v-5da69428]{flex:none;min-height:72vh}.board__top[data-v-5da69428]{flex-wrap:wrap;gap:6px 12px;height:auto;padding:8px 12px}.board__stats[data-v-5da69428]{flex-basis:100%;order:3;gap:12px;margin-left:0}}.workbench[data-v-94990db7]{background:var(--bg-container);height:100%;color:var(--text-primary);flex-direction:column;display:flex}.wb-editor[data-v-94990db7]{flex-direction:column;flex:auto;min-height:0;line-height:1.5;display:flex}.wb-editor-bar[data-v-94990db7]{border-bottom:1px solid var(--border-color-light);background:var(--bg-panel);background-image:var(--gradient-accent-soft);flex-shrink:0;align-items:center;gap:8px;height:34px;padding:0 12px;display:flex}.wb-back-btn[data-v-94990db7]{color:var(--text-secondary);font-size:var(--font-size-sm);border-radius:var(--radius-md);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom);white-space:nowrap;background:0 0;border:none;align-items:center;gap:4px;padding:0 6px;line-height:22px;display:inline-flex}.wb-back-btn[data-v-94990db7]:hover{color:var(--color-primary)}.wb-back-btn[data-v-94990db7]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.wb-back-btn__icon[data-v-94990db7]{font-size:var(--font-size-mid)}.wb-editor-bar__project[data-v-94990db7]{font-size:var(--font-size-sm);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-weight:500;overflow:hidden}.wb-editor-bar__status[data-v-94990db7]{flex-shrink:100;align-items:center;min-width:0;display:inline-flex;overflow:hidden}.wb-editor-bar__status-pill[data-v-94990db7]{border-radius:var(--radius-pill);border:1px solid var(--role-pending-edge);background:var(--role-pending-wash);height:20px;color:var(--role-pending-ink);font-size:var(--font-size-xs);white-space:nowrap;flex-shrink:0;align-items:center;gap:5px;padding:0 8px 0 7px;font-weight:600;line-height:1;display:inline-flex}.wb-editor-bar__status-dot[data-v-94990db7]{background:currentColor;border-radius:50%;flex-shrink:0;width:6px;height:6px}.wb-editor-bar__status-label[data-v-94990db7]{text-overflow:ellipsis;min-width:0;overflow:hidden}.wb-editor-bar__status.is-running .wb-editor-bar__status-pill[data-v-94990db7]{border-color:var(--role-active-edge);background:var(--role-active-wash);color:var(--role-active-ink)}.wb-editor-bar__status.is-running .wb-editor-bar__status-dot[data-v-94990db7]{animation:1.4s ease-in-out infinite wb-bar-status-pulse-94990db7}.wb-editor-bar__status.is-done .wb-editor-bar__status-pill[data-v-94990db7]{border-color:var(--role-done-edge);background:var(--role-done-wash);color:var(--role-done-ink)}.wb-editor-bar__status.is-error .wb-editor-bar__status-pill[data-v-94990db7]{border-color:var(--role-error-edge);background:var(--role-error-wash);color:var(--role-error-ink)}@keyframes wb-bar-status-pulse-94990db7{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.7)}}@media (width<=620px){.wb-editor-bar__status[data-v-94990db7]{display:none}}.wb-editor-bar__hint[data-v-94990db7]{font-size:var(--font-size-xs);color:var(--text-meta);flex-shrink:0;margin-left:auto}.wb-editor-bar__time[data-v-94990db7]{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--font-size-xs);color:var(--text-meta);font-variant-numeric:tabular-nums;flex-shrink:100;margin-left:auto;overflow:hidden}.wb-editor-bar__spent[data-v-94990db7]{color:var(--text-secondary)}.wb-editor-bar__sep[data-v-94990db7]{opacity:.55;margin:0 5px}.wb-editor-bar__time+.wb-editor-bar__hint[data-v-94990db7]{margin-left:0}.wb-editor-bar__repo[data-v-94990db7]{text-overflow:ellipsis;white-space:nowrap;max-width:320px;font-size:var(--font-size-xs);border-radius:var(--radius-base);color:var(--color-warning-dark);background:color-mix(in srgb, var(--color-warning) 12%, transparent);font-variant-numeric:tabular-nums;flex-shrink:0;padding:0 6px;line-height:16px;overflow:hidden}.wb-task-desc[data-v-94990db7]{border-radius:var(--radius-md);background:var(--bg-subtle);flex-shrink:0;min-width:0;margin:0;padding:0;overflow:hidden}.wb-task-options[data-v-94990db7]{font-size:var(--font-size-sm);color:var(--text-secondary);align-items:center;gap:12px;padding:8px 12px 0;display:flex}.wb-task-desc[open][data-v-94990db7]{background:var(--bg-container)}.wb-task-desc__summary[data-v-94990db7]{cursor:pointer;font-size:var(--font-size-sm);color:var(--text-secondary);-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:8px 0;list-style:none;display:flex}.wb-task-desc__summary[data-v-94990db7]::-webkit-details-marker{display:none}.wb-task-desc__summary[data-v-94990db7]:hover{background:var(--bg-container-hover)}.wb-task-desc__caret[data-v-94990db7]{font-size:var(--font-size-sm);color:var(--text-meta);transition:transform var(--transition-fast)}.wb-task-desc__label[data-v-94990db7]{letter-spacing:.1px;font-weight:500}.wb-task-desc__tag[data-v-94990db7]{font-size:var(--font-size-xs);color:var(--color-primary);align-items:center;gap:5px;margin-left:auto;font-weight:600;display:inline-flex}.wb-task-desc__tag-attachment[data-v-94990db7]{border-radius:var(--radius-lg);background:var(--tint-primary-14);min-width:18px;height:16px;color:var(--color-primary);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;padding:0 5px;display:inline-flex}.wb-task-desc[open] .wb-task-desc__summary[data-v-94990db7]{margin-bottom:0}.wb-task-desc>.wb-textarea[data-v-94990db7],.wb-task-desc[data-v-94990db7]>.attachment-zone{margin:0 14px 0 0}.wb-task-desc>.wb-textarea[data-v-94990db7]{max-width:100%;margin-bottom:0}.wb-task-desc[data-v-94990db7]>.attachment-zone{margin-top:8px}.workbench__editor-row[data-v-94990db7]{flex:1;min-height:0;display:flex}.wb-splitter[data-v-94990db7]{cursor:col-resize;z-index:5;flex:0 0 5px;margin-right:-5px;position:relative}.wb-splitter[data-v-94990db7]:after{content:"";width:1px;transition:background var(--transition-fast) var(--ease-custom);background:0 0;position:absolute;top:0;bottom:0;left:2px}.wb-splitter[data-v-94990db7]:hover:after,.wb-splitter[data-v-94990db7]:active:after{background:var(--color-primary)}.wb-sidebar[data-v-94990db7]{background:var(--bg-panel);flex-direction:column;flex-shrink:0;gap:18px;width:268px;padding:14px 12px 18px;display:flex;overflow-y:auto}.wb-section[data-v-94990db7]{flex-direction:column;flex-shrink:0;gap:8px;min-height:0;display:flex}.wb-section+.wb-section[data-v-94990db7]{padding-top:16px}.wb-section__head[data-v-94990db7]{align-items:center;gap:6px;padding:0 4px;display:flex}.wb-section__tag[data-v-94990db7]{height:18px;font-size:var(--font-size-xs);letter-spacing:.4px;color:var(--text-meta);background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-base);text-transform:uppercase;font-variant-numeric:tabular-nums;flex-shrink:0;align-items:center;padding:0 6px;font-weight:600;display:inline-flex}.wb-section__tag--accent[data-v-94990db7]{color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 9%, transparent);border-color:var(--tint-primary-22)}.wb-section__title[data-v-94990db7]{font-size:var(--font-size-sm);color:var(--text-secondary);letter-spacing:.2px;flex:1;min-width:0;margin:0;font-weight:600}.wb-section__action[data-v-94990db7]{color:var(--text-meta);border-radius:var(--radius-base);cursor:pointer;width:28px;height:28px;font-size:var(--font-size-mid);transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.wb-section__action[data-v-94990db7]:hover{background:var(--tint-primary-12);color:var(--color-primary)}.wb-new-btn[data-v-94990db7]{border:1px dashed var(--tint-primary-35,color-mix(in srgb, var(--color-primary) 35%, transparent));border-radius:var(--radius-md);background:linear-gradient(135deg, color-mix(in srgb, var(--color-primary) 4%, transparent) 0%, color-mix(in srgb, var(--color-primary) 2%, transparent) 100%);width:100%;height:32px;color:var(--color-primary);font-size:var(--font-size-mid);letter-spacing:.05px;cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);align-items:center;gap:6px;padding:0 12px;font-weight:600;display:flex}.wb-new-btn__icon[data-v-94990db7]{font-size:var(--font-size-mid);transition:transform var(--transition-fast) var(--ease-custom);flex-shrink:0}.wb-new-btn__shortcut[data-v-94990db7]{display:none}.wb-new-btn[data-v-94990db7]:hover{background:linear-gradient(135deg, color-mix(in srgb, var(--color-primary) 10%, transparent) 0%, color-mix(in srgb, var(--color-primary) 6%, transparent) 100%);color:var(--color-primary);border-style:solid;border-color:var(--tint-primary-50)}.wb-new-btn:hover .wb-new-btn__icon[data-v-94990db7]{transform:rotate(90deg)}.wb-new-btn[data-v-94990db7]:active{transform:scale(.99)}.wb-new-btn[data-v-94990db7]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.wb-task-list[data-v-94990db7],.wb-prompt-list[data-v-94990db7]{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.wb-task-item[data-v-94990db7]{border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom), box-shadow var(--transition-fast) var(--ease-custom);background:0 0;border:none;align-items:center;gap:8px;padding:7px 10px;display:flex;position:relative}.wb-task-item[data-v-94990db7]:hover{background:var(--bg-container-hover);border-color:#0000;transform:translateY(-.5px)}.wb-task-item:hover .wb-task-item__del[data-v-94990db7]{opacity:1;transform:translate(0)}.wb-task-item.is-running[data-v-94990db7]{background:color-mix(in srgb, var(--color-warning) 8%, transparent)}.wb-task-item.is-running[data-v-94990db7]:hover{background:color-mix(in srgb, var(--color-warning) 14%, transparent);transform:none}.wb-task-item.active[data-v-94990db7]{background:color-mix(in srgb, var(--color-primary) 10%, var(--bg-container));box-shadow:0 1px 3px color-mix(in srgb, var(--color-primary) 12%, transparent), 0 0 0 1px color-mix(in srgb, var(--color-primary) 18%, transparent);border-color:#0000}.wb-task-item.active[data-v-94990db7]:after{content:"";border-radius:var(--radius-base);background:linear-gradient(180deg, var(--color-primary) 0%, color-mix(in srgb, var(--color-primary) 70%, #fff) 100%);width:3px;box-shadow:0 0 8px color-mix(in srgb, var(--color-primary) 50%, transparent), 0 1px 3px color-mix(in srgb, var(--color-primary) 25%, transparent);position:absolute;top:5px;bottom:5px;left:-1px}.wb-task-item.active .wb-task-item__title[data-v-94990db7]{color:var(--color-primary)}.wb-task-item.active .wb-task-item__del[data-v-94990db7]{opacity:1;color:var(--color-primary)}.wb-task-item__running-dot[data-v-94990db7]{background:var(--color-warning);width:6px;height:6px;box-shadow:0 0 0 0 color-mix(in srgb, var(--color-warning) 60%, transparent);border-radius:50%;flex:none;margin-left:auto;animation:1.4s ease-in-out infinite wb-running-pulse-94990db7}@keyframes wb-running-pulse-94990db7{0%,to{box-shadow:0 0 0 0 color-mix(in srgb, var(--color-warning) 60%, transparent);opacity:1;transform:scale(1)}50%{box-shadow:0 0 0 4px color-mix(in srgb, var(--color-warning) 0%, transparent);opacity:.75;transform:scale(1.35)}}.wb-task-item__body[data-v-94990db7]{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.wb-task-item__title[data-v-94990db7]{font-size:var(--font-size-sm);color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;letter-spacing:-.05px;font-weight:500;line-height:1.3;overflow:hidden}.wb-task-item__meta[data-v-94990db7]{font-size:var(--font-size-xs);color:var(--text-meta);align-items:center;gap:5px;line-height:1;display:flex}.wb-task-item__meta-item[data-v-94990db7]{font-variant-numeric:tabular-nums;align-items:center;gap:3px;font-weight:500;display:inline-flex}.wb-task-item__meta-item--accent[data-v-94990db7]{color:var(--color-primary)}.wb-task-item__meta-item--project[data-v-94990db7]{border-radius:var(--radius-md);background:color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 14%, transparent);height:15px;color:color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 80%, var(--text-primary));font-size:var(--font-size-xs);letter-spacing:.2px;white-space:nowrap;text-overflow:ellipsis;align-items:center;max-width:110px;padding:0 5px;font-weight:600;display:inline-flex;overflow:hidden}.wb-task-item.is-other-project[data-v-94990db7]{opacity:.78}.wb-task-item.is-other-project[data-v-94990db7]:hover{opacity:1}.wb-task-item__meta-icon[data-v-94990db7]{font-size:var(--font-size-xs);opacity:.85}.wb-task-item__num[data-v-94990db7]{min-width:14px;color:var(--text-secondary);transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);padding:0 4px}.wb-task-item.active .wb-task-item__num[data-v-94990db7]{color:var(--color-primary);background:var(--tint-primary-14)}.wb-task-item__meta-item--running .wb-task-item__num[data-v-94990db7]{color:color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 85%, var(--text-primary));background:color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 18%, transparent);font-weight:600}.wb-task-item.is-running .wb-task-item__meta-icon[data-v-94990db7]{color:color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 80%, var(--text-primary));animation:1.4s ease-in-out infinite wb-task-running-icon-94990db7}@keyframes wb-task-running-icon-94990db7{0%,to{opacity:.55}50%{opacity:1}}.wb-task-item__del[data-v-94990db7]{color:var(--text-meta);border-radius:var(--radius-md);cursor:pointer;width:22px;height:22px;font-size:var(--font-size-sm);opacity:0;transition:opacity var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex;transform:translate(-2px)}.wb-task-item__del[data-v-94990db7]:hover{background:color-mix(in srgb, var(--color-danger) 14%, transparent);color:var(--color-danger-dark)}.wb-task-item__del[data-v-94990db7]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset);opacity:1}.wb-task-item__del[data-v-94990db7],.wb-prompt-item__del[data-v-94990db7]{font-size:var(--font-size-mid)}.wb-prompt-item[data-v-94990db7]{border-radius:var(--radius-md);font-size:var(--font-size-mid);color:var(--text-primary);transition:background var(--transition-fast) var(--ease-custom);align-items:center;gap:8px;padding:7px 8px;display:flex;position:relative}.wb-prompt-item[data-v-94990db7]:hover{background:var(--bg-container-hover)}.wb-prompt-item:hover .wb-prompt-item__del[data-v-94990db7]{opacity:1}.wb-prompt-item__icon[data-v-94990db7]{border-radius:var(--radius-base);background:var(--tint-primary-08);width:22px;height:22px;color:var(--color-primary);font-size:var(--font-size-sm);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.wb-prompt-item__name[data-v-94990db7]{cursor:pointer;white-space:nowrap;text-overflow:ellipsis;min-width:0;color:var(--text-primary);letter-spacing:-.05px;flex:1;font-weight:500;overflow:hidden}.wb-prompt-item__tag[data-v-94990db7]{border-radius:var(--radius-xs);max-width:96px;font-size:var(--font-size-xs);letter-spacing:.1px;background:var(--tint-primary-08);color:var(--color-primary);white-space:nowrap;text-overflow:ellipsis;flex-shrink:0;padding:1px 6px;line-height:16px;overflow:hidden}.wb-prompt-item__tag--project[data-v-94990db7]{background:var(--bg-subtle);color:var(--text-secondary);border:1px solid var(--border-color-light)}.wb-prompt-item__del[data-v-94990db7]{color:var(--text-meta);border-radius:var(--radius-xs);cursor:pointer;width:20px;height:20px;font-size:var(--font-size-sm);opacity:0;transition:opacity var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.wb-prompt-item__del[data-v-94990db7]:hover{background:color-mix(in srgb, var(--color-danger) 14%, transparent);color:var(--color-danger-dark)}.wb-prompt-item__del[data-v-94990db7]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset);opacity:1}.wb-split[data-v-94990db7]{flex-direction:column;flex:1;gap:10px;min-height:0;padding:12px 24px 14px;display:flex;overflow:hidden}.wb-placeholder[data-v-94990db7]{color:var(--text-meta);font-size:var(--font-size-mid);flex:1;justify-content:center;align-items:center;display:flex}.wb-execution-body[data-v-94990db7]{border:none;border-radius:0;flex:1;grid-template-columns:1fr;gap:16px;min-height:0;display:grid;overflow:hidden}.wb-exec-detail[data-v-94990db7]{background:0 0;flex-direction:column;gap:14px;min-width:0;min-height:0;padding:4px 4px 8px;display:flex;overflow:auto}.wb-split__header[data-v-94990db7]{flex-shrink:0;align-items:center;gap:10px;padding-bottom:4px;padding-right:8px;display:flex}.wb-split__title-wrap[data-v-94990db7]{flex:1;align-items:center;gap:6px;min-width:0;display:flex}.wb-split__title-wrap .wb-input--title[data-v-94990db7]{flex:1;min-width:0}.wb-copy-btn[data-v-94990db7]{appearance:none;border-radius:var(--radius-lg);border:1px solid var(--border-color);background:var(--bg-container);width:28px;height:28px;color:var(--text-meta);cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.wb-copy-btn[data-v-94990db7]:hover:not(:disabled){background:var(--tint-primary-12);border-color:var(--tint-primary-35);color:var(--color-primary)}.wb-copy-btn[data-v-94990db7]:active:not(:disabled){transform:scale(.94)}.wb-copy-btn[data-v-94990db7]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.wb-copy-btn.is-flash[data-v-94990db7]{background:var(--tint-success-14,color-mix(in srgb, var(--color-success) 14%, transparent));border-color:var(--tint-success-35,color-mix(in srgb, var(--color-success) 35%, transparent));color:var(--color-success-dark)}.wb-copy-btn__icon[data-v-94990db7]{font-size:var(--font-size-mid);line-height:1}.wb-copy-btn__icon--check[data-v-94990db7]{font-size:var(--font-size-base);font-weight:800}.wb-copy-btn--inline[data-v-94990db7]{border-radius:var(--radius-md);width:22px;height:22px;margin-left:2px}.wb-copy-btn--inline .wb-copy-btn__icon[data-v-94990db7]{font-size:var(--font-size-xs)}@keyframes wb-ai-sparkle-pulse-94990db7{0%,to{opacity:.9;transform:scale(1)}50%{opacity:1;transform:scale(1.12)}}.wb-no-claude-hint[data-v-94990db7]{border:1px solid color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 32%, transparent);background:color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 8%, transparent);height:32px;color:color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 75%, var(--text-primary));border-radius:var(--radius-md);font-size:var(--font-size-sm);white-space:nowrap;flex-shrink:0;align-items:center;gap:6px;padding:0 12px;font-weight:500;display:inline-flex}.wb-executor-split[data-v-94990db7]{flex-shrink:0}.wb-executor-split__hint[data-v-94990db7]{font-size:var(--font-size-xs);opacity:.85;border-left:1px solid #ffffff59;align-items:center;gap:4px;margin-left:6px;padding-left:8px;font-weight:400;display:inline-flex}.wb-executor-split__hint-icon[data-v-94990db7]{font-size:var(--font-size-sm)}.wb-executor-item[data-v-94990db7]{align-items:center;gap:8px;min-width:132px;display:inline-flex}.wb-executor-item__icon[data-v-94990db7]{font-size:var(--font-size-base);flex:none}.wb-executor-item__name[data-v-94990db7]{flex:1}.wb-executor-item__check[data-v-94990db7]{color:var(--el-color-primary)}.wb-executor-item__missing[data-v-94990db7]{font-size:var(--font-size-xs);color:var(--text-secondary,var(--el-text-color-secondary))}.wb-executor-item__model[data-v-94990db7]{white-space:nowrap;text-overflow:ellipsis;max-width:15em;font-size:var(--font-size-xs);color:var(--text-meta);flex:none;overflow:hidden}.wb-no-claude-hint__icon[data-v-94990db7]{font-size:var(--font-size-base);opacity:.9}.wb-no-claude-hint__text[data-v-94990db7]{letter-spacing:-.05px}.wb-no-claude-hint__link[data-v-94990db7]{color:var(--color-primary);border-bottom:1px dashed color-mix(in srgb, var(--color-primary) 45%, transparent);margin-left:2px;font-weight:600;text-decoration:none}.wb-no-claude-hint__link[data-v-94990db7]:hover{border-bottom-style:solid}.wb-logs-inline-btn[data-v-94990db7]{appearance:none;border:1px solid var(--border-color);background:var(--bg-container);height:32px;color:var(--text-secondary);border-radius:var(--radius-md);font-size:var(--font-size-mid);cursor:pointer;white-space:nowrap;transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);flex-shrink:0;align-items:center;gap:5px;padding:0 12px;font-weight:500;display:inline-flex}.wb-logs-inline-btn[data-v-94990db7]:hover{background:var(--tint-primary-12);color:var(--color-primary);border-color:var(--tint-primary-35)}.wb-logs-inline-btn--danger[data-v-94990db7]{color:var(--text-secondary);border-color:var(--border-color);background:var(--bg-container)}.wb-logs-inline-btn--danger[data-v-94990db7]:hover{color:var(--color-danger,var(--color-danger-light));border-color:var(--tint-danger-50);background:var(--tint-danger-06)}.wb-logs-inline-btn--copy.is-flash[data-v-94990db7]{color:var(--color-success-dark,var(--color-success));border-color:var(--tint-success-35,color-mix(in srgb, var(--color-success) 35%, transparent));background:var(--tint-success-14,color-mix(in srgb, var(--color-success) 14%, transparent))}.wb-logs-inline-btn[data-v-94990db7]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.wb-logs-inline-btn__icon[data-v-94990db7]{font-size:var(--font-size-base)}.wb-copy-exec[data-v-94990db7]{flex-shrink:0;align-items:stretch;display:inline-flex}.wb-copy-exec .el-dropdown[data-v-94990db7]{display:inline-flex}.wb-copy-exec__main[data-v-94990db7]{border-top-right-radius:0;border-bottom-right-radius:0}.wb-copy-exec__caret[data-v-94990db7]{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px;padding:0 6px}.wb-input[data-v-94990db7],.wb-textarea[data-v-94990db7]{color:var(--text-primary);background:var(--bg-container);border:1px solid var(--border-color-medium);border-radius:var(--radius-md);box-shadow:var(--wb-card-inset-shadow);transition:border-color var(--transition-fast) var(--ease-custom), box-shadow var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);appearance:none;outline:none;font-family:inherit}.wb-input[data-v-94990db7]::placeholder,.wb-textarea[data-v-94990db7]::placeholder{color:var(--text-placeholder);font-weight:400}.wb-input[data-v-94990db7]{height:36px;font-size:var(--font-size-base);letter-spacing:-.05px;padding:0 12px;line-height:1.2}.wb-input[data-v-94990db7]:hover:not(:focus){border-color:var(--border-input-hover,#cbd5e1);background:var(--bg-container-hover)}.wb-input[data-v-94990db7]:focus{border-color:var(--color-primary);background:var(--bg-container);box-shadow:0 0 0 3px var(--tint-primary-18), var(--wb-card-inset-shadow)}.wb-input--title[data-v-94990db7]{height:36px;font-size:var(--font-size-base);letter-spacing:-.4px;border-color:var(--border-color);box-shadow:none;background:0 0;flex:1;padding:0 12px;font-weight:600}.wb-input--title[data-v-94990db7]:hover:not(:focus){border-color:var(--border-color-medium);background:var(--bg-container)}.wb-input--title[data-v-94990db7]:focus{border-color:var(--color-primary);background:var(--bg-container);box-shadow:0 0 0 3px var(--tint-primary-14)}.wb-input--title[data-v-94990db7]::placeholder{color:var(--text-placeholder);font-weight:500}.wb-textarea[data-v-94990db7]{font-size:var(--font-size-mid);letter-spacing:-.05px;resize:vertical;box-sizing:border-box;background:var(--bg-container);width:100%;min-height:52px;box-shadow:none;border-color:var(--border-color);flex-shrink:0;padding:10px 14px;line-height:1.55;display:block}.wb-textarea[data-v-94990db7]::placeholder{color:var(--text-placeholder);line-height:1.55}.wb-textarea[data-v-94990db7]:hover:not(:focus){border-color:var(--border-color-medium);background:var(--bg-container-hover)}.wb-textarea[data-v-94990db7]:focus{border-color:var(--color-primary);background:var(--bg-container-hover);box-shadow:0 0 0 3px var(--tint-primary-14)}.wb-textarea--focus-expand[data-v-94990db7]:focus{max-height:500px;transition:max-height var(--transition-base) var(--ease-custom)}.wb-textarea--autogrow[data-v-94990db7]{resize:none;min-height:52px;max-height:320px;transition:height var(--transition-fast) var(--ease-custom);overflow-y:hidden}.wb-split__sub-header[data-v-94990db7]{flex-shrink:0;justify-content:space-between;align-items:center;margin-top:8px;display:flex}.wb-split__sub-header h4[data-v-94990db7]{font-size:var(--font-size-mid);color:var(--text-secondary);margin:0;font-weight:600}.wb-simple__header[data-v-94990db7]{flex-shrink:0;align-items:baseline;gap:10px;margin-top:8px;padding-left:10px;display:flex}.wb-simple__header h4[data-v-94990db7]{font-size:var(--font-size-mid);color:var(--text-primary);letter-spacing:-.05px;margin:0;font-weight:600}.wb-simple__hint[data-v-94990db7]{font-size:var(--font-size-sm);color:var(--text-meta)}.wb-simple__status-row[data-v-94990db7]{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:8px;margin-top:2px;display:flex}.wb-simple__status[data-v-94990db7]{width:8px;height:8px;transition:background var(--transition-fast) var(--ease-custom);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;gap:5px;padding:0;display:inline-flex}.wb-simple__status--dot[data-v-94990db7]{border-radius:50%}.wb-simple__status-text[data-v-94990db7]{display:none}.wb-simple__meta[data-v-94990db7]{font-size:var(--font-size-sm);color:var(--text-meta);letter-spacing:-.05px;text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.wb-simple__meta--error[data-v-94990db7]{color:var(--color-danger-dark)}.wb-simple__status[style*=--text-tertiary] .wb-simple__status-dot[data-v-94990db7]{background:var(--text-tertiary)}.wb-simple__stop[data-v-94990db7]{border-radius:var(--radius-base);border:1px solid var(--color-danger-bright);color:var(--color-danger-bright);font-size:var(--font-size-sm);cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);background:0 0;margin-left:auto;padding:2px 10px;font-weight:600}.wb-simple__stop[data-v-94990db7]:hover:not(:disabled){background:var(--color-danger-bright);color:#fff}.wb-simple__stop[data-v-94990db7]:disabled{opacity:var(--disabled-opacity);cursor:not-allowed}.wb-task-prompt[data-v-94990db7]{border-radius:var(--radius-md)}.wb-task-prompt__summary[data-v-94990db7]{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:4px 0;list-style:none;display:flex}.wb-task-prompt__summary[data-v-94990db7]::-webkit-details-marker{display:none}.wb-task-prompt__caret[data-v-94990db7]{font-size:var(--font-size-sm);color:var(--text-meta);transition:transform var(--transition-fast) var(--ease-custom)}.wb-task-prompt[open]>.wb-task-prompt__summary .wb-task-prompt__caret[data-v-94990db7]{color:var(--color-primary);transform:rotate(90deg)}.wb-task-prompt.has-content>.wb-task-prompt__summary[data-v-94990db7]{color:var(--text-primary)}.wb-task-prompt__tag[data-v-94990db7]{font-size:var(--font-size-xs);border-radius:var(--radius-lg);background:var(--tint-primary-12,color-mix(in srgb, var(--color-primary) 12%, transparent));color:var(--color-primary);letter-spacing:.2px;padding:1px 6px;font-weight:600}.wb-task-prompt__parts[data-v-94990db7]{flex-direction:column;gap:8px;margin-top:8px;display:flex}.wb-task-prompt__part[data-v-94990db7]{border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-subtle);padding:6px 9px}.wb-task-prompt__label[data-v-94990db7]{font-size:var(--font-size-xs);color:var(--text-meta);margin-bottom:4px}.wb-task-prompt__text[data-v-94990db7]{max-height:220px;font-family:inherit;font-size:var(--font-size-mid);color:var(--text-primary);white-space:pre-wrap;word-break:break-word;margin:0;line-height:1.5;overflow:auto}.wb-task-prompt__empty[data-v-94990db7]{font-size:var(--font-size-xs);color:var(--text-meta);margin:8px 0 0}.wb-simple-chat-wrap[data-v-94990db7]{border:1px solid var(--border-color);border-radius:var(--radius-base);background:var(--bg-code);--acu-bg:var(--bg-code);flex-direction:column;flex:1;min-height:0;margin-top:6px;display:flex;overflow:hidden}.wb-simple-chat[data-v-94990db7]{flex-direction:column;flex:1;min-height:0;display:flex}.wb-simple-chat[data-v-94990db7] .acu-chat-footer{display:none}.wb-simple-chat[data-v-94990db7] .acu-chat,.wb-simple-chat[data-v-94990db7] .acu-message-list,.wb-simple-chat[data-v-94990db7] .acu-message-list-inner>*{background:0 0}.wb-simple-chat[data-v-94990db7] .acu-chat,.wb-simple-chat[data-v-94990db7] .acu-message-list{background:var(--bg-code)}.wb-simple-chat[data-v-94990db7] .acu-message-list-inner{gap:10px;max-width:100%;margin:0;padding:10px 8px 14px}.wb-simple-chat[data-v-94990db7] .acu-bubble-main{max-width:100%}.wb-simple-chat[data-v-94990db7] .acu-bubble{font-size:var(--font-size-sm);border-radius:var(--radius-lg)}.wb-simple-chat[data-v-94990db7] .acu-bubble-name{font-size:var(--font-size-xs)}.wb-simple-chat__footer[data-v-94990db7]{background:var(--bg-code);flex-shrink:0;padding:0 4px 4px}.wb-simple-chat__input[data-v-94990db7]{width:100%}.wb-chat-queue[data-v-94990db7]{border:1px solid var(--role-pending-edge);border-radius:var(--radius-md);background:var(--role-pending-surface);flex-direction:column;gap:6px;margin:0 0 6px;padding:8px 10px;display:flex}.wb-chat-queue__head[data-v-94990db7]{font-size:var(--font-size-xs);color:var(--role-pending-ink);align-items:center;gap:6px;display:flex}.wb-chat-queue__label[data-v-94990db7]{font-weight:600}.wb-chat-queue__count[data-v-94990db7]{background:var(--role-pending-wash);text-align:center;border-radius:999px;min-width:18px;padding:0 5px;font-weight:600}.wb-chat-queue__hint[data-v-94990db7]{color:var(--text-secondary)}.wb-chat-queue__item[data-v-94990db7]{font-size:var(--font-size-sm);align-items:center;gap:8px;display:flex}.wb-chat-queue__index[data-v-94990db7]{background:var(--role-pending-wash);width:16px;height:16px;color:var(--role-pending-ink);font-size:var(--font-size-xs);text-align:center;border-radius:999px;flex-shrink:0;line-height:16px}.wb-chat-queue__text[data-v-94990db7]{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-primary);flex:1;overflow:hidden}.wb-chat-queue__atts[data-v-94990db7]{text-overflow:ellipsis;white-space:nowrap;max-width:36%;color:var(--text-secondary);font-size:var(--font-size-xs);flex-shrink:0;overflow:hidden}.wb-chat-queue__btn[data-v-94990db7]{border:1px solid var(--role-pending-edge);border-radius:var(--radius-md);color:var(--role-pending-ink);font-size:var(--font-size-xs);cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom);background:0 0;flex-shrink:0;padding:2px 8px}.wb-chat-queue__btn[data-v-94990db7]:hover{background:var(--role-pending-wash);border-color:var(--role-pending-ink)}.wb-chat-queue__btn[data-v-94990db7]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.wb-chat-queue__btn.is-remove[data-v-94990db7]{color:var(--text-secondary);border-color:#0000;padding:2px 6px}.wb-chat-queue__btn.is-remove[data-v-94990db7]:hover{border-color:var(--border-card-hover);color:var(--text-primary);background:0 0}.wb-form-item[data-v-94990db7]{flex-direction:column;flex-shrink:0;gap:6px;display:flex}.wb-form-item__label[data-v-94990db7]{font-size:var(--font-size-sm);color:var(--text-secondary);letter-spacing:-.05px;font-weight:500}.wb-sub-list[data-v-94990db7]{flex-direction:column;flex:1;gap:8px;min-height:0;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}@keyframes wb-progress-slide-94990db7{0%{background-position:-50% 0}to{background-position:150% 0}}@keyframes wb-card-glow-94990db7{0%,to{box-shadow:0 0 0 1px var(--tint-primary-30), 0 4px 18px -4px color-mix(in srgb, var(--color-primary) 25%, transparent)}50%{box-shadow:0 0 0 1px var(--tint-primary-50), 0 6px 24px -2px color-mix(in srgb, var(--color-primary) 38%, transparent)}}@keyframes wb-card-sweep-94990db7{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes wb-border-shimmer-94990db7{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes wb-status-dot-pulse-94990db7{0%,to{transform:scale(1);box-shadow:0 0 4px #ffffff73}50%{transform:scale(1.35);box-shadow:0 0 8px #ffffffd9}}@keyframes wb-status-dot-94990db7{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.7)}}@media (prefers-reduced-motion:reduce){.wb-sub-expand-enter-active[data-v-94990db7],.wb-sub-expand-leave-active[data-v-94990db7]{transition:none}}.wb-sub-expand-enter-active[data-v-94990db7],.wb-sub-expand-leave-active[data-v-94990db7]{transition:grid-template-rows var(--transition-base,var(--transition-base)) var(--ease-custom), opacity var(--transition-fast) var(--ease-custom);overflow:hidden}.wb-sub-expand-enter-from[data-v-94990db7],.wb-sub-expand-leave-to[data-v-94990db7]{opacity:0;grid-template-rows:0fr}.wb-sub-expand-enter-to[data-v-94990db7],.wb-sub-expand-leave-from[data-v-94990db7]{opacity:1;grid-template-rows:1fr}.wb-sub-expand-inner[data-v-94990db7]{min-height:0;overflow:hidden}.wb-task-group__head[data-v-94990db7]{font-size:var(--font-size-mid);color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:var(--radius-base);transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);align-items:center;gap:6px;margin-top:4px;padding:8px 6px 4px;font-weight:600;display:flex}.wb-task-group__head[data-v-94990db7]:first-child{border-top:none;margin-top:0;padding-top:4px}.wb-task-group__head[data-v-94990db7]:hover{background:var(--tint-primary-08);color:var(--text-secondary)}.wb-task-group__head[data-v-94990db7]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset)}.wb-task-group__head.is-current[data-v-94990db7]{color:var(--color-primary);border-top-color:var(--tint-primary-30)}.wb-task-group__head.is-collapsed[data-v-94990db7]{background:var(--bg-subtle);border-top-style:solid;margin-top:6px;padding-top:6px;padding-bottom:6px}.wb-task-group__head.is-collapsed.is-current[data-v-94990db7]{background:color-mix(in srgb, var(--color-primary) 8%, var(--bg-subtle))}.wb-task-group__caret[data-v-94990db7]{font-size:var(--font-size-sm);opacity:.75;transition:transform var(--transition-fast) var(--ease-custom);flex-shrink:0}.wb-task-group__icon[data-v-94990db7]{font-size:var(--font-size-base);opacity:.8;flex-shrink:0}.wb-task-group__name[data-v-94990db7]{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.wb-task-group__count[data-v-94990db7]{min-width:18px}.wb-task-group__head.is-current .wb-task-group__count[data-v-94990db7]{background:var(--tint-primary-16,color-mix(in srgb, var(--color-primary) 16%, transparent));color:var(--color-primary)}.wb-meta-save[data-v-94990db7]{height:24px;font-size:var(--font-size-xs);letter-spacing:.1px;border-radius:var(--radius-xl);border:1px solid var(--border-color-medium);background:var(--bg-container);color:var(--text-meta);-webkit-user-select:none;user-select:none;transition:background var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);flex-shrink:0;align-items:center;gap:5px;padding:0 10px;font-weight:600;display:inline-flex}.wb-meta-save__dot[data-v-94990db7]{opacity:.85;background:currentColor;border-radius:50%;width:6px;height:6px;display:inline-block}.wb-meta-save__check[data-v-94990db7]{font-size:var(--font-size-sm);line-height:1}.wb-meta-save__bang[data-v-94990db7]{width:12px;height:12px;font-size:var(--font-size-xs);color:#fff;background:currentColor;border-radius:50%;justify-content:center;align-items:center;font-weight:800;line-height:1;display:inline-flex}.wb-meta-save.is-saving[data-v-94990db7]{color:var(--color-primary);border-color:var(--tint-primary-35);background:color-mix(in srgb, var(--color-primary) 8%, var(--bg-container))}.wb-meta-save.is-saving .wb-meta-save__dot[data-v-94990db7]{animation:1.2s ease-in-out infinite wb-meta-pulse-94990db7}.wb-meta-save.is-saved[data-v-94990db7]{color:var(--color-success-dark);border-color:var(--tint-success-35);background:var(--tint-success-08)}.wb-meta-save.is-dirty[data-v-94990db7]{color:var(--color-warning-dark);border-color:var(--tint-warning-45);background:var(--tint-warning-06)}.wb-meta-save.is-error[data-v-94990db7]{color:var(--color-danger-dark,#b91c1c);border-color:var(--tint-danger-45);background:var(--tint-danger-06)}@keyframes wb-meta-pulse-94990db7{0%,to{opacity:.4;transform:scale(.85)}50%{opacity:1;transform:scale(1.1)}}@media (prefers-reduced-motion:reduce){.wb-meta-save.is-saving .wb-meta-save__dot[data-v-94990db7]{animation:none}}.wb-logs-dialog{flex-direction:column;max-height:88vh;display:flex}.wb-logs-dialog .el-dialog__body{flex:auto;min-height:0;max-height:calc(88vh - 60px);padding:12px 20px 16px;overflow:auto}