zen-gitsync 2.13.13 → 2.13.15

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 (27) hide show
  1. package/README.md +2 -0
  2. package/package.json +1 -1
  3. package/scripts/README_COLOR_CONVERTER.md +196 -196
  4. package/scripts/README_FONTSIZE_CONVERTER.md +278 -278
  5. package/scripts/README_SPACING_CONVERTER.md +126 -126
  6. package/scripts/README_STYLE_VARS.md +180 -180
  7. package/src/ui/public/assets/EditorView-BoRRJEFO.css +1 -0
  8. package/src/ui/public/assets/{EditorView-rBBwf4oR.js → EditorView-nLJuJf8I.js} +0 -0
  9. package/src/ui/public/assets/{SourceMapView-DRKJ0uP-.js → SourceMapView-BfQkRIld.js} +3 -3
  10. package/src/ui/public/assets/SourceMapView-DTsSdcgG.css +1 -0
  11. package/src/ui/public/assets/WorkbenchView-DBm4y9hO.css +1 -0
  12. package/src/ui/public/assets/WorkbenchView-DadqVl2m.js +9 -0
  13. package/src/ui/public/assets/{_plugin-vue_export-helper-Bbh8jjwh.js → _plugin-vue_export-helper-FEqtfvX2.js} +3 -3
  14. package/src/ui/public/assets/index-BB8LQ04I.css +1 -0
  15. package/src/ui/public/assets/index-YZlo31ni.js +69 -0
  16. package/src/ui/public/assets/{vendor-Cs1V1Sid.js → vendor-1pu0KtT-.js} +314 -314
  17. package/src/ui/public/assets/{vendor-F3eVqHe1.css → vendor-B99WlFa_.css} +1 -1
  18. package/src/ui/public/favicon.svg +75 -75
  19. package/src/ui/public/index.html +22 -22
  20. package/src/ui/public/logo.svg +74 -74
  21. package/src/ui/server/routes/workbench.js +226 -21
  22. package/src/ui/public/assets/EditorView-noBxnUk5.css +0 -1
  23. package/src/ui/public/assets/SourceMapView-P9hbpXgz.css +0 -1
  24. package/src/ui/public/assets/WorkbenchView-DOvk3v8R.css +0 -1
  25. package/src/ui/public/assets/WorkbenchView-XhHEHVFX.js +0 -9
  26. package/src/ui/public/assets/index-CxqzqyPo.js +0 -69
  27. package/src/ui/public/assets/index-DXk-bEn0.css +0 -1
@@ -83,11 +83,12 @@ const MAX_ATTACHMENTS_PER_SUBTASK = 9;
83
83
  const DEFAULT_SUBTASK_INSTRUCTION_ZH = `你是一名任务拆分助手。
84
84
 
85
85
  【思考过程】
86
- 在给出 JSON 之前,请先在内部仔细思考(如果模型支持,把思考放在 reasoning 中;否则可以先输出一段简短分析,再输出 JSON):
87
- - 任务的真实目标是什么?用户提供的描述/图片/上下文里有哪些关键信息?
88
- - 涉及哪些技术栈、模块、文件、约束?是否有易被忽略的边界条件?
86
+ 在给出 JSON 之前,请先在内部仔细思考(如果模型支持,把思考放在 reasoning 中;否则可以先输出一段较长的仔细分析,再输出 JSON)。分析要覆盖足够维度,不要简短一两句话就过:
87
+ - 任务的真实目标是什么?用户提供的描述/图片/上下文里有哪些关键信息和隐藏诉求?
88
+ - 涉及哪些技术栈、模块、文件、约束?是否有易被忽略的边界条件、风险点?
89
89
  - 自然的执行顺序是什么?哪些步骤是前置依赖?哪些可以并行?
90
- - 哪些步骤可能失败、需要单独验证?
90
+ - 哪些步骤可能失败、需要单独验证?验证方式是什么?
91
+ - 是否需要先做调研/读现有代码的步骤,再做修改?
91
92
 
92
93
  【拆分原则】
93
94
  1. 单一职责:每个子任务只做一件事,避免"做 A 和 B"。
@@ -111,11 +112,12 @@ JSON 要用 \`\`\`json ... \`\`\` 代码块包裹,前面可以有分析文字
111
112
  const DEFAULT_SUBTASK_INSTRUCTION_EN = `You are a task breakdown assistant.
112
113
 
113
114
  [Thinking process]
114
- Before producing JSON, think carefully (put your thoughts in reasoning if the model supports it; otherwise output a short analysis first, then JSON):
115
- - What is the real goal? What key information is in the description / images / context?
116
- - Which stack, modules, files, constraints are involved? Any easily missed edge cases?
115
+ Before producing JSON, think carefully (put your thoughts in reasoning if the model supports it; otherwise output a longer careful analysis first, then JSON). Cover enough dimensions — don't settle for a one-or-two-sentence summary:
116
+ - What is the real goal? What key info and hidden needs are in the description / images / context?
117
+ - Which stack, modules, files, constraints are involved? Any easily missed edge cases or risks?
117
118
  - What is the natural execution order? What blocks what? What can run in parallel?
118
- - Which steps may fail and need separate verification?
119
+ - Which steps may fail and need separate verification? How will you verify?
120
+ - Should a research / read-existing-code step come before the changes?
119
121
 
120
122
  [Breakdown principles]
121
123
  1. Single responsibility: each subtask does only one thing, avoid bundling "do A and B".
@@ -998,7 +1000,9 @@ function snapshotJobs() {
998
1000
  startedAt: j.startedAt || null,
999
1001
  endedAt: j.endedAt || null,
1000
1002
  exitCode: typeof j.exitCode === 'number' ? j.exitCode : null,
1001
- error: j.error || null
1003
+ error: j.error || null,
1004
+ // 续接对话用:claude --output-format stream-json 的 system.init 事件捕获到的 session_id
1005
+ claudeSessionId: j.claudeSessionId || null
1002
1006
  }));
1003
1007
  }
1004
1008
 
@@ -1006,16 +1010,21 @@ function snapshotJobs() {
1006
1010
  // 返回 { pid, child }:调用方可以监听 child.stdout/stderr 实时收集输出。
1007
1011
  // 不再走 cmd /k 弹窗——claude -p 是非交互模式,输出通过 stdout pipe 实时回传
1008
1012
  // 到前端面板展示。
1009
- function launchClaudeInNewWindow(cwd, promptText) {
1013
+ function launchClaudeInNewWindow(cwd, promptText, resumeSessionId) {
1010
1014
  return new Promise((resolve, reject) => {
1011
- const args = [
1015
+ const args = [];
1016
+ // 续接历史会话:--resume 必须放在 -p 之前,确保 claude CLI 先识别 resume 上下文
1017
+ if (resumeSessionId) {
1018
+ args.push('--resume', String(resumeSessionId));
1019
+ }
1020
+ args.push(
1012
1021
  '-p', promptText,
1013
1022
  '--input-format', 'text',
1014
1023
  '--output-format', 'stream-json',
1015
1024
  '--verbose',
1016
1025
  '--permission-mode', 'bypassPermissions',
1017
1026
  '--dangerously-skip-permissions'
1018
- ];
1027
+ );
1019
1028
  let child;
1020
1029
  let spawnedExe = 'claude';
1021
1030
  if (process.platform === 'win32') {
@@ -1088,8 +1097,15 @@ async function runTaskQueue(task, repoPath, branch) {
1088
1097
  * 前序 done 子任务的输出摘要(in-place 追加)。用于把同一任务下
1089
1098
  * 前面已完成的 sub 产物拼到当前 sub 的 prompt 头部,让 Claude
1090
1099
  * 知道上下文。单独跑一个 sub 时,这个数组里只会有"前面 done 的 sub"。
1100
+ * @param {object} [options]
1101
+ * @param {string|null} [options.resumeSessionId]
1102
+ * 续接历史 claude 会话:传入上一轮通过 stream-json 的 system.init
1103
+ * 事件捕获到的 session_id,本轮以 --resume <id> 启动,claude 会带着
1104
+ * 上下文继续对话。前端"简单任务执行完成后继续聊"走的就是这条路径。
1091
1105
  */
1092
- async function runSingleSubtask(task, sub, repoPath, branch, priorOutputs) {
1106
+ async function runSingleSubtask(task, sub, repoPath, branch, priorOutputs, options) {
1107
+ const opts = options || {}
1108
+ const resumeSessionId = opts.resumeSessionId || null
1093
1109
  const MAX_PREV_OUTPUT_CHARS = 2000
1094
1110
  const promptTemplate = sub.promptOverride || (task.promptId
1095
1111
  ? (await readJson(PROMPTS_FILE, { prompts: [] })).prompts.find(p => p.id === task.promptId)?.content
@@ -1124,10 +1140,18 @@ ${prompt}`
1124
1140
  // claude -p 字符串模式会扫描 prompt 中出现的本地文件路径并自动
1125
1141
  // 识别为附件(图片 / PDF / 文本均可)。
1126
1142
  // 主任务附件对所有 sub 都可见;子任务自己的附件只对该 sub 可见。
1127
- const allAttachments = [
1128
- ...(Array.isArray(task.attachments) ? task.attachments : []),
1129
- ...(Array.isArray(sub.attachments) ? sub.attachments : [])
1130
- ];
1143
+ // 注意:run-simple 路径下 virtualSub.attachments 就是 task.attachments 的同一引用,
1144
+ // 不去重会把同一张图在 prompt 里列两遍。按 absolutePath 去重。
1145
+ const taskAtts = Array.isArray(task.attachments) ? task.attachments : [];
1146
+ const subAtts = Array.isArray(sub.attachments) ? sub.attachments : [];
1147
+ const seen = new Set();
1148
+ const allAttachments = [];
1149
+ for (const a of [...subAtts, ...taskAtts]) {
1150
+ if (!a || !a.absolutePath) continue;
1151
+ if (seen.has(a.absolutePath)) continue;
1152
+ seen.add(a.absolutePath);
1153
+ allAttachments.push(a);
1154
+ }
1131
1155
  if (allAttachments.length > 0) {
1132
1156
  const lines = allAttachments
1133
1157
  .filter(a => a && a.absolutePath)
@@ -1144,7 +1168,9 @@ ${prompt}`
1144
1168
  subId: sub.id,
1145
1169
  title: `${task.title} / ${sub.title}`,
1146
1170
  status: 'pending',
1147
- prompt
1171
+ prompt,
1172
+ // 续接历史会话时先填上,首条 system.init 事件回来后再用真值覆盖(通常等同)
1173
+ claudeSessionId: resumeSessionId
1148
1174
  };
1149
1175
  jobs.set(jobId, job);
1150
1176
  sub.status = 'running';
@@ -1152,7 +1178,7 @@ ${prompt}`
1152
1178
  publish('job:update', job);
1153
1179
 
1154
1180
  try {
1155
- const { pid, child } = await launchClaudeInNewWindow(repoPath || process.cwd(), prompt);
1181
+ const { pid, child } = await launchClaudeInNewWindow(repoPath || process.cwd(), prompt, resumeSessionId);
1156
1182
  job.pid = pid;
1157
1183
  // 保存 child 引用,供 cancel 接口调用 kill
1158
1184
  job.child = child;
@@ -1194,6 +1220,15 @@ ${prompt}`
1194
1220
  }
1195
1221
  let evt;
1196
1222
  try { evt = JSON.parse(trimmed) } catch { continue }
1223
+ // 捕获 system.init 里的 session_id,供后续"续接对话"用(--resume <id>)。
1224
+ // 一个 claude -p 调用只在首行发一次,所以仅在 job 还没记到时写入。
1225
+ if (evt.type === 'system' && evt.subtype === 'init' && typeof evt.session_id === 'string') {
1226
+ if (!job.claudeSessionId || job.claudeSessionId !== evt.session_id) {
1227
+ job.claudeSessionId = evt.session_id;
1228
+ publish('job:update', job);
1229
+ }
1230
+ continue;
1231
+ }
1197
1232
  if (evt.type !== 'assistant') continue;
1198
1233
  const blocks = evt.message?.content;
1199
1234
  if (!Array.isArray(blocks)) continue;
@@ -1590,6 +1625,11 @@ ${subSummaries.map((s, i) => `\n### [${i + 1}] ${s.name} (${s.root})\n${s.summar
1590
1625
  const desc = String(req.body?.desc || '').trim();
1591
1626
  const taskId = String(req.body?.taskId || '').trim();
1592
1627
  const promptId = String(req.body?.promptId || '').trim();
1628
+ // customUserBlock:用户在前端 prompt 预览页编辑过的 user prompt。非空时
1629
+ // 直接拿它发给 LLM,跳过服务端拼装;为空时按老逻辑现拼。
1630
+ // 注意:即便传了 customUserBlock,attachments/imageDataUrls 仍按 taskId 重新读,
1631
+ // 因为图片要随消息发,不能跟 prompt 文本一起塞。
1632
+ const customUserBlock = typeof req.body?.customUserBlock === 'string' ? req.body.customUserBlock : '';
1593
1633
  if (!title) {
1594
1634
  return res.status(400).json({ success: false, error: '任务标题不能为空' });
1595
1635
  }
@@ -1687,7 +1727,7 @@ ${subSummaries.map((s, i) => `\n### [${i + 1}] ${s.name} (${s.root})\n${s.summar
1687
1727
  } catch { /* 没拿到附件不影响拆分 */ }
1688
1728
  }
1689
1729
 
1690
- const userBlock = `${userInstruction}
1730
+ const userBlock = customUserBlock.trim() ? customUserBlock : `${userInstruction}
1691
1731
 
1692
1732
  ---
1693
1733
 
@@ -1700,7 +1740,7 @@ ${desc ? `描述:${desc}` : '描述:(无)'}${attachmentBlock}${templateB
1700
1740
  - 项目根目录:${projectPath || '(未指定)'}
1701
1741
  - 主要 manifest:${manifestHint || '(未识别到)'}
1702
1742
 
1703
- 请先简要分析(可以放在 reasoning 中或直接写出来),然后给出 JSON。JSON 用 \`\`\`json ... \`\`\` 包裹:
1743
+ 请先仔细分析(可以放在 reasoning 中或直接写出来)。仔细分析指:列出 5 个维度——任务真实目标 / 关键技术栈与边界 / 自然执行顺序 / 风险点与可能失败步骤 / 是否需要前置调研——不要简短一两句话就过;分析过后再给出 JSON。JSON 用 \`\`\`json ... \`\`\` 包裹:
1704
1744
  {
1705
1745
  "subtasks": [
1706
1746
  { "title": "子任务标题", "desc": "具体描述" }
@@ -1753,6 +1793,103 @@ ${desc ? `描述:${desc}` : '描述:(无)'}${attachmentBlock}${templateB
1753
1793
  }
1754
1794
  });
1755
1795
 
1796
+ // POST /api/workbench/tasks/ai-split-preview
1797
+ // body: { title, desc?, taskId?, promptId? }
1798
+ // → { success, system, user, hasImages, imageCount }
1799
+ // "AI 拆分前预览/编辑 prompt" 用:跟 /ai-split-subtasks 做完全一样的拼装,
1800
+ // 但**不调 LLM**,只把拼好的 system + user 返回。前端在 UI 上 textarea 展示,
1801
+ // 用户改完按"发送给 AI"再正式调 /ai-split-subtasks 并把改过的文本作为
1802
+ // customUserBlock 传回。这样省一次 LLM 调用,且让用户能修正提示词后再拆分。
1803
+ app.post('/api/workbench/tasks/ai-split-preview', async (req, res) => {
1804
+ try {
1805
+ const title = String(req.body?.title || '').trim();
1806
+ const desc = String(req.body?.desc || '').trim();
1807
+ const taskId = String(req.body?.taskId || '').trim();
1808
+ const promptId = String(req.body?.promptId || '').trim();
1809
+ if (!title) {
1810
+ return res.status(400).json({ success: false, error: '任务标题不能为空' });
1811
+ }
1812
+
1813
+ const userInstruction = await readSubtaskInstruction(req);
1814
+ const projectPath = typeof getCurrentProjectPath === 'function' ? getCurrentProjectPath() : '';
1815
+ const projectName = projectPath ? path.basename(projectPath) : '(未指定项目)';
1816
+ const manifestHint = await detectProjectManifest(projectPath);
1817
+
1818
+ let templateBlock = '';
1819
+ if (promptId) {
1820
+ try {
1821
+ const promptData = await readJson(PROMPTS_FILE, { prompts: [] });
1822
+ const p = (promptData.prompts || []).find(x => x.id === promptId);
1823
+ if (p && p.content) {
1824
+ templateBlock = `\n\n## 子任务执行模板(每个拆出的子任务最终会被这套模板包裹后送给 claude 执行;拆分时请确保子任务能让模板里的 {{sub.title}} / {{sub.desc}} 等变量填得有意义)\n模板名:${p.name || '(未命名)'}\n---\n${p.content}\n---`;
1825
+ }
1826
+ } catch { /* 模板读取失败不影响预览 */ }
1827
+ }
1828
+
1829
+ // 附件:只列条目,不读图片二进制(preview 阶段不需要 image_data_url)
1830
+ let attachmentBlock = '';
1831
+ let imageCount = 0;
1832
+ if (taskId) {
1833
+ try {
1834
+ const data = await readJson(TASKS_FILE, { tasks: [] });
1835
+ const task = (data.tasks || []).find(t => t.id === taskId);
1836
+ const atts = Array.isArray(task?.attachments) ? task.attachments : [];
1837
+ if (atts.length > 0) {
1838
+ const lines = [];
1839
+ for (let i = 0; i < atts.length; i++) {
1840
+ const a = atts[i];
1841
+ if (!a || !a.absolutePath) continue;
1842
+ lines.push(` ${i + 1}. [${a.mimeType || 'application/octet-stream'}] ${a.absolutePath}`);
1843
+ if (isImageExt(a.ext)) imageCount++;
1844
+ }
1845
+ if (lines.length > 0) {
1846
+ const imgNote = imageCount > 0
1847
+ ? `(其中 ${imageCount} 张图片已随消息一并发送,请直接基于图片内容拆分)`
1848
+ : '';
1849
+ attachmentBlock = `\n\n## 任务附件${imgNote}\n${lines.join('\n')}`;
1850
+ }
1851
+ }
1852
+ } catch { /* 没拿到附件不影响预览 */ }
1853
+ }
1854
+
1855
+ const userBlock = `${userInstruction}
1856
+
1857
+ ---
1858
+
1859
+ ## 待拆分的任务
1860
+ 标题:${title}
1861
+ ${desc ? `描述:${desc}` : '描述:(无)'}${attachmentBlock}${templateBlock}
1862
+
1863
+ ## 项目上下文(仅供参考,便于拆分时考虑项目特性)
1864
+ - 项目名称:${projectName}
1865
+ - 项目根目录:${projectPath || '(未指定)'}
1866
+ - 主要 manifest:${manifestHint || '(未识别到)'}
1867
+
1868
+ 请先仔细分析(可以放在 reasoning 中或直接写出来)。仔细分析指:列出 5 个维度——任务真实目标 / 关键技术栈与边界 / 自然执行顺序 / 风险点与可能失败步骤 / 是否需要前置调研——不要简短一两句话就过;分析过后再给出 JSON。JSON 用 \`\`\`json ... \`\`\` 包裹:
1869
+ {
1870
+ "subtasks": [
1871
+ { "title": "子任务标题", "desc": "具体描述" }
1872
+ ]
1873
+ }
1874
+
1875
+ **JSON 输出严格要求**(不遵守会导致解析失败、用户无法入库):
1876
+ 1. title 和 desc 内如需引用术语 / 页面名 / 状态名,**必须使用中文引号「」或『』**,禁止使用 ASCII 双引号、单引号或反引号,否则会破坏外层 JSON 结构。
1877
+ 2. JSON 中不允许尾随逗号(最后一个元素后面不能跟逗号)。
1878
+ 3. JSON 中不允许写注释。
1879
+ 4. 所有字符串字段必须用 ASCII 双引号包裹,字符串内部如有换行用 \\n 转义。`;
1880
+
1881
+ res.json({
1882
+ success: true,
1883
+ system: userInstruction,
1884
+ user: userBlock,
1885
+ hasImages: imageCount > 0,
1886
+ imageCount
1887
+ });
1888
+ } catch (err) {
1889
+ res.status(500).json({ success: false, error: '生成预览失败: ' + (err?.message || String(err)) });
1890
+ }
1891
+ });
1892
+
1756
1893
  // POST /api/workbench/tasks/parse-subtasks
1757
1894
  // body: { raw: string }
1758
1895
  // → { success, subtasks, parseError, parseStage }
@@ -2303,6 +2440,74 @@ ${desc ? `描述:${desc}` : '描述:(无)'}${attachmentBlock}${templateB
2303
2440
  }
2304
2441
  });
2305
2442
 
2443
+ // ── 续接简单任务对话 ────────────────────────────────────────────
2444
+ // POST /api/workbench/jobs/:id/continue
2445
+ // 入参 body: { userMessage: string }
2446
+ // 行为:
2447
+ // - 仅用于 type==='simple' 的任务,基于上一轮 job 捕获到的 claudeSessionId,
2448
+ // 用 claude --resume <id> 续接历史对话,**新一轮 = 新 job**
2449
+ // - 新 job 的 subId 形如 `${task.id}__simple__r${n}`,跟首轮 `${task.id}__simple`
2450
+ // 区分;前端按 subId 前缀聚合渲染对话流
2451
+ // - 上一轮还在 pending/running 时拒绝(避免 session 并发跑乱)
2452
+ // - 上一轮未捕获到 session_id(claude 在 init 前就 crash)时拒绝
2453
+ app.post('/api/workbench/jobs/:id/continue', async (req, res) => {
2454
+ try {
2455
+ const userMessage = String(req.body?.userMessage || '').trim();
2456
+ if (!userMessage) {
2457
+ return res.status(400).json({ success: false, error: 'userMessage 不能为空' });
2458
+ }
2459
+ const prevJob = jobs.get(req.params.id);
2460
+ if (!prevJob) {
2461
+ return res.status(404).json({ success: false, error: 'job 不存在' });
2462
+ }
2463
+ if (prevJob.status === 'running' || prevJob.status === 'pending') {
2464
+ return res.status(400).json({ success: false, error: '上一轮还在执行,请等结束后再续接' });
2465
+ }
2466
+ if (!prevJob.claudeSessionId) {
2467
+ return res.status(400).json({ success: false, error: '无法续接:会话标识未捕获' });
2468
+ }
2469
+ const data = await readJson(TASKS_FILE, { tasks: [] });
2470
+ const task = (data.tasks || []).find(t => t.id === prevJob.taskId);
2471
+ if (!task) {
2472
+ return res.status(404).json({ success: false, error: '所属任务不存在' });
2473
+ }
2474
+ if (task.type !== 'simple') {
2475
+ return res.status(400).json({ success: false, error: '仅支持简单任务的续接' });
2476
+ }
2477
+ // 计算续接轮次号:扫所有同 task 下的 __simple / __simple__rN job,取最大 N + 1
2478
+ const subIdPrefix = `${task.id}__simple`;
2479
+ let maxRound = 0;
2480
+ for (const j of jobs.values()) {
2481
+ if (j.taskId !== task.id) continue;
2482
+ if (j.subId === subIdPrefix) continue;
2483
+ const m = j.subId && j.subId.match(/__simple__r(\d+)$/);
2484
+ if (m) {
2485
+ const n = parseInt(m[1], 10);
2486
+ if (!isNaN(n) && n > maxRound) maxRound = n;
2487
+ }
2488
+ }
2489
+ const nextRound = maxRound + 1;
2490
+ const virtualSub = {
2491
+ id: `${task.id}__simple__r${nextRound}`,
2492
+ title: `续接 #${nextRound}`,
2493
+ desc: '',
2494
+ status: 'todo',
2495
+ // 用户输入的续接消息直接作为本轮 prompt(走 promptOverride,不再拼模板)
2496
+ promptOverride: userMessage,
2497
+ // 续接轮不带附件,避免重复推附件给 claude(已在首轮 prompt 里)
2498
+ attachments: []
2499
+ };
2500
+ const repoPath = typeof getCurrentProjectPath === 'function' ? getCurrentProjectPath() : '';
2501
+ res.json({ success: true, message: '已加入续接队列' });
2502
+ runSingleSubtask(task, virtualSub, repoPath, '', [], { resumeSessionId: prevJob.claudeSessionId })
2503
+ .catch(err => {
2504
+ publish('task:error', { taskId: task.id, error: err.message });
2505
+ });
2506
+ } catch (err) {
2507
+ res.status(500).json({ success: false, error: err.message });
2508
+ }
2509
+ });
2510
+
2306
2511
  // ── 执行日志管理 API(持久化 + 清理) ────────────────────────────
2307
2512
  // 路径都在 /api/workbench/jobs/* 下;/list、/config、/batch-delete、/clear
2308
2513
  // 是字面路径,必须排在 :id 路由之前注册,避免被 :id 匹配吞掉。
@@ -1 +0,0 @@
1
- .md-preview[data-v-d602e5a5]{color:inherit;word-break:break-word;padding:20px 24px;font-size:14px;line-height:1.6}.md-preview[data-v-d602e5a5] h1,.md-preview[data-v-d602e5a5] h2,.md-preview[data-v-d602e5a5] h3,.md-preview[data-v-d602e5a5] h4,.md-preview[data-v-d602e5a5] h5,.md-preview[data-v-d602e5a5] h6{border-bottom:1px solid var(--border-color,#d0d7de);margin-top:24px;margin-bottom:16px;padding-bottom:.3em;font-weight:600}.md-preview[data-v-d602e5a5] h1{font-size:1.8em}.md-preview[data-v-d602e5a5] h2{font-size:1.4em}.md-preview[data-v-d602e5a5] h3{font-size:1.2em}.md-preview[data-v-d602e5a5] p{margin:0 0 14px}.md-preview[data-v-d602e5a5] a{color:var(--link-color,#0969da);text-decoration:none}.md-preview[data-v-d602e5a5] a:hover{text-decoration:underline}.md-preview[data-v-d602e5a5] code{background:var(--code-bg,#f6f8fa);border-radius:4px;padding:2px 5px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:87%}.md-preview[data-v-d602e5a5] pre{background:var(--code-bg,#f6f8fa);border-radius:6px;margin:0 0 16px;padding:14px 16px;overflow:auto}.md-preview[data-v-d602e5a5] pre code{background:0 0;padding:0;font-size:100%}.md-preview[data-v-d602e5a5] blockquote{border-left:3px solid var(--border-color,#d0d7de);color:var(--text-secondary,#656d76);margin:0 0 16px;padding:0 16px}.md-preview[data-v-d602e5a5] img{border-radius:4px;max-width:100%}.md-preview[data-v-d602e5a5] hr{border:none;border-top:1px solid var(--border-color,#d0d7de);margin:24px 0}.md-preview[data-v-d602e5a5] table{border-collapse:collapse;width:100%;margin-bottom:16px}.md-preview[data-v-d602e5a5] th,.md-preview[data-v-d602e5a5] td{border:1px solid var(--border-color,#d0d7de);padding:6px 13px}.md-preview[data-v-d602e5a5] thead tr{background:var(--code-bg,#f6f8fa)}.md-preview[data-v-d602e5a5] ul,.md-preview[data-v-d602e5a5] ol{margin-bottom:16px;padding-left:2em}.md-preview[data-v-d602e5a5] li{margin:4px 0}.md-segment[data-v-d602e5a5]{display:block}.md-mindmap[data-v-d602e5a5]{border:1px solid var(--border-color,#d0d7de);background:var(--bg-panel,#fff);border-radius:8px;margin:18px 0 28px;overflow:hidden}.md-mindmap-title[data-v-d602e5a5]{color:var(--text-secondary,#656d76);background:var(--code-bg,#f6f8fa);border-bottom:1px solid var(--border-color,#d0d7de);letter-spacing:.5px;padding:8px 12px;font-size:12px;font-weight:600}.md-mindmap-canvas[data-v-d602e5a5]{width:100%;height:480px;display:block}.mindmap-preview[data-v-5988cf1a]{background:var(--bg-container,#fff);flex-direction:column;width:100%;height:100%;display:flex}.mindmap-preview-header[data-v-5988cf1a]{border-bottom:1px solid var(--border-color,#d0d7de);background:var(--bg-panel,#f6f8fa);align-items:center;gap:12px;padding:8px 14px;font-size:12px;display:flex}.mindmap-preview-title[data-v-5988cf1a]{color:var(--text-primary,#1f2328);letter-spacing:.5px;font-weight:600}.mindmap-preview-hint[data-v-5988cf1a]{color:var(--text-secondary,#656d76);font-size:11px}.mindmap-preview-canvas[data-v-5988cf1a]{flex:1;width:100%;min-height:0}.mindmap-preview-canvas[data-v-5988cf1a] .zm-mindmap,.mindmap-preview-canvas[data-v-5988cf1a]>*{width:100%;height:100%}.editor-view[data-v-83afeae5]{background:var(--bg-container);border:1px solid var(--border-color);width:100%;height:100%;box-shadow:var(--shadow-sm);border-radius:0;display:flex;overflow:hidden}.editor-sidebar[data-v-83afeae5]{border-right:1px solid var(--border-color);background:var(--bg-panel);flex-direction:column;flex-shrink:0;display:flex;overflow:hidden}.sidebar-header[data-v-83afeae5]{border-bottom:1px solid var(--border-color);flex-shrink:0;justify-content:space-between;align-items:center;padding:8px 10px 6px;display:flex}.sidebar-title[data-v-83afeae5]{letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);-webkit-user-select:none;user-select:none;font-size:11px;font-weight:700}.sidebar-action-btn[data-v-83afeae5]{cursor:pointer;color:var(--text-tertiary);border-radius:var(--radius-base);background:0 0;border:none;align-items:center;padding:3px;display:flex}.sidebar-action-btn[data-v-83afeae5]:hover{color:var(--text-primary);background:var(--bg-hover)}.sidebar-search[data-v-83afeae5]{border-bottom:1px solid var(--border-color);flex-shrink:0;align-items:center;padding:6px 10px;display:flex;position:relative}.sidebar-search-icon[data-v-83afeae5]{color:var(--text-tertiary);pointer-events:none;position:absolute;left:18px}.sidebar-search-input[data-v-83afeae5]{min-width:0;height:26px;color:var(--text-primary);background:var(--bg-input,#ffffff0a);border:1px solid var(--border-color);border-radius:var(--radius-base);outline:none;flex:1;padding:0 24px 0 26px;font-size:12px;transition:border-color .12s,background .12s}.sidebar-search-input[data-v-83afeae5]::placeholder{color:var(--text-tertiary)}.sidebar-search-input[data-v-83afeae5]:hover{border-color:var(--text-tertiary)}.sidebar-search-input[data-v-83afeae5]:focus{border-color:var(--accent-color,#3b82f6);background:var(--bg-panel)}.sidebar-search-clear[data-v-83afeae5]{cursor:pointer;width:18px;height:18px;color:var(--text-tertiary);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:background .12s,color .12s;display:flex;position:absolute;right:14px}.sidebar-search-clear[data-v-83afeae5]:hover{background:var(--bg-hover);color:var(--text-primary)}.tree-name-hit[data-v-83afeae5]{color:var(--accent-color,#f59e0b);background:#f59e0b26;border-radius:2px;padding:0 1px}.sidebar-tree[data-v-83afeae5]{flex:1;padding:4px 0;overflow:hidden auto}.tree-node[data-v-83afeae5]{cursor:pointer;-webkit-user-select:none;user-select:none;height:24px;color:var(--text-primary);white-space:nowrap;border-radius:4px;align-items:center;gap:4px;padding-right:8px;font-size:13px;transition:background .1s;display:flex;overflow:hidden}.tree-node[data-v-83afeae5]:hover{background:var(--bg-hover)}.tree-node--active[data-v-83afeae5]{color:var(--color-primary);background:#3b82f61f}.tree-node--selected[data-v-83afeae5]{outline-offset:-1px;background:#63b3ed26;outline:1px solid #63b3ed59}.tree-arrow[data-v-83afeae5]{color:var(--text-tertiary);flex-shrink:0;align-items:center;width:12px;transition:transform .15s;display:flex}.tree-arrow.expanded[data-v-83afeae5]{transform:rotate(90deg)}.tree-arrow-spacer[data-v-83afeae5]{flex-shrink:0;width:12px}.tree-icon[data-v-83afeae5]{flex-shrink:0;align-items:center;font-size:14px;line-height:1;display:flex}.tree-icon.mit-icon[data-v-83afeae5]{fill:currentColor;vertical-align:middle;width:14px;height:14px;display:inline-block}.tree-icon--dir[data-v-83afeae5]{color:#e8b84b}.tree-name[data-v-83afeae5]{text-overflow:ellipsis;flex:1;min-width:0;font-size:13px;overflow:hidden}.tree-loading[data-v-83afeae5]{border:1.5px solid var(--color-primary);border-top-color:#0000;border-radius:50%;flex-shrink:0;width:10px;height:10px;animation:.8s linear infinite spin-83afeae5;display:inline-block}.tree-empty[data-v-83afeae5]{color:var(--text-tertiary);text-align:center;padding:24px 12px;font-size:12px}.sidebar-loading[data-v-83afeae5]{flex:1;justify-content:center;align-items:center;display:flex}.spin-icon[data-v-83afeae5]{border:2px solid var(--color-primary);border-top-color:#0000;border-radius:50%;width:20px;height:20px;animation:.8s linear infinite spin-83afeae5;display:inline-block}@keyframes spin-83afeae5{to{transform:rotate(360deg)}}.editor-resizer[data-v-83afeae5]{cursor:col-resize;z-index:2;background:0 0;flex-shrink:0;width:6px;transition:background .15s;position:relative}.editor-resizer[data-v-83afeae5]:after{content:"";background:var(--color-gray-300);border-radius:2px;width:2px;height:32px;transition:background .15s,height .15s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.editor-resizer[data-v-83afeae5]:hover{background:#3b82f60f}.editor-resizer[data-v-83afeae5]:hover:after{background:var(--color-primary);height:48px;box-shadow:0 0 8px #3b82f666}.editor-main[data-v-83afeae5]{flex-direction:column;flex:1;display:flex;overflow:hidden}.editor-tabs[data-v-83afeae5]{border-bottom:1px solid var(--border-color);background:var(--bg-panel);scrollbar-width:none;flex-shrink:0;display:flex;overflow:auto hidden}.editor-tabs[data-v-83afeae5]::-webkit-scrollbar{display:none}.editor-tab[data-v-83afeae5]{border-right:1px solid var(--border-color);cursor:pointer;height:34px;color:var(--text-secondary);-webkit-user-select:none;user-select:none;flex-shrink:0;align-items:center;gap:6px;min-width:80px;max-width:200px;padding:0 12px;font-size:12.5px;transition:background .1s,color .1s;display:flex}.editor-tab[data-v-83afeae5]:hover{background:var(--bg-hover);color:var(--text-primary)}.editor-tab.active[data-v-83afeae5]{background:var(--bg-container);color:var(--text-primary);border-bottom:2px solid var(--color-primary)}.tab-name[data-v-83afeae5]{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.tab-dirty-dot[data-v-83afeae5]{background:var(--color-warning);border-radius:50%;flex-shrink:0;width:6px;height:6px}.tab-close[data-v-83afeae5]{cursor:pointer;color:var(--text-tertiary);opacity:0;background:0 0;border:none;border-radius:3px;flex-shrink:0;align-items:center;padding:2px;transition:opacity .1s,background .1s;display:flex}.editor-tab:hover .tab-close[data-v-83afeae5],.editor-tab.active .tab-close[data-v-83afeae5]{opacity:1}.tab-close[data-v-83afeae5]:hover{background:var(--bg-hover);color:var(--color-danger)}.editor-empty[data-v-83afeae5]{color:var(--text-tertiary);-webkit-user-select:none;user-select:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:10px;font-size:13px;display:flex}.editor-empty p[data-v-83afeae5]{margin:0}.editor-empty-hint[data-v-83afeae5]{opacity:.6;font-size:11px}.monaco-container[data-v-83afeae5]{flex:1;min-width:0;overflow:hidden}.monaco-container.hidden[data-v-83afeae5]{display:none}.image-tab-placeholder[data-v-83afeae5]{justify-content:center;align-items:center;gap:var(--spacing-sm);color:var(--text-secondary);background:var(--bg-container);text-align:center;padding:var(--spacing-lg);flex-direction:column;flex:1;display:flex}.image-tab-placeholder-title[data-v-83afeae5]{font-size:var(--font-size-md);font-weight:var(--font-weight-medium);color:var(--text-primary);word-break:break-all;margin:0}.image-tab-placeholder-hint[data-v-83afeae5]{font-size:var(--font-size-sm);color:var(--text-tertiary);margin:0}.editor-body[data-v-83afeae5]{flex:1;min-height:0;display:flex;overflow:hidden}.preview-resizer[data-v-83afeae5]{cursor:col-resize;z-index:2;background:0 0;flex-shrink:0;order:99;width:6px;margin-left:auto;transition:background .15s;position:relative}.preview-resizer[data-v-83afeae5]:after{content:"";background:var(--color-gray-300);border-radius:2px;width:2px;height:32px;transition:background .15s,height .15s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.preview-resizer[data-v-83afeae5]:hover{background:#3b82f60f}.preview-resizer[data-v-83afeae5]:hover:after{background:var(--color-primary);height:48px;box-shadow:0 0 8px #3b82f666}.preview-panel[data-v-83afeae5]{border-left:1px solid var(--border-color);background:var(--bg-panel);flex-direction:column;flex:1 1 0;min-width:200px;display:flex;overflow:hidden}.preview-header[data-v-83afeae5]{border-bottom:1px solid var(--border-color);background:var(--bg-panel);flex-shrink:0;align-items:center;gap:6px;height:34px;padding:0 10px;display:flex}.preview-title[data-v-83afeae5]{letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);-webkit-user-select:none;user-select:none;font-size:11px;font-weight:700}.preview-ext-badge[data-v-83afeae5]{color:var(--color-primary);letter-spacing:.04em;background:#3b82f626;border-radius:3px;padding:1px 5px;font-size:10px;font-weight:600}.preview-header-spacer[data-v-83afeae5]{flex:1}.preview-close-btn[data-v-83afeae5]{cursor:pointer;color:var(--text-tertiary);border-radius:var(--radius-base);background:0 0;border:none;align-items:center;padding:3px;transition:color .1s,background .1s;display:flex}.preview-close-btn[data-v-83afeae5]:hover{color:var(--color-danger);background:var(--bg-hover)}.preview-body[data-v-83afeae5]{flex-direction:column;flex:1;display:flex;overflow:hidden}.preview-iframe[data-v-83afeae5]{background:0 0;border:none;flex:1;width:100%;height:100%}.preview-markdown[data-v-83afeae5]{background:var(--bg-container,#fff);width:100%;height:100%;color:var(--text-primary,#1f2328);flex:1;overflow:auto}.preview-mindmap[data-v-83afeae5]{background:var(--bg-container,#fff);flex-direction:column;flex:1;width:100%;height:100%;display:flex;overflow:hidden}.mindmap-toggle-btn.disabled[data-v-83afeae5]{opacity:.45;cursor:not-allowed}.mindmap-toggle-btn.active[data-v-83afeae5]{color:#fff;background:linear-gradient(#6366f1 0%,#4f46e5 100%);border-color:#4f46e5}.preview-image-wrap[data-v-83afeae5]{background:var(--bg-container);flex:1;justify-content:center;align-items:center;padding:16px;display:flex;overflow:auto}.preview-image-wrap img[data-v-83afeae5]{object-fit:contain;border-radius:4px;max-width:100%;max-height:100%;box-shadow:0 2px 12px #0003}.editor-tabs-spacer[data-v-83afeae5]{flex:1}.preview-toggle-btn[data-v-83afeae5]{cursor:pointer;height:34px;color:var(--text-secondary);white-space:nowrap;border:none;border-left:1px solid var(--border-color);background:0 0;flex-shrink:0;align-items:center;gap:5px;padding:0 10px;font-size:12px;transition:background .1s,color .1s;display:flex}.preview-toggle-btn[data-v-83afeae5]:hover{background:var(--bg-hover);color:var(--text-primary)}.preview-toggle-btn.active[data-v-83afeae5]{color:var(--color-primary);background:#3b82f614}.sidebar-actions[data-v-83afeae5]{align-items:center;gap:2px;display:flex}.tree-inline-input-row[data-v-83afeae5]{cursor:default;background:var(--bg-hover)}.tree-inline-input[data-v-83afeae5]{background:var(--bg-container);border:1px solid var(--color-primary);min-width:0;height:20px;color:var(--text-primary);border-radius:3px;outline:none;flex:1;padding:0 5px;font-family:inherit;font-size:12.5px}.ctx-menu[data-v-83afeae5]{z-index:9999;background:var(--bg-panel);border:1px solid var(--border-color);-webkit-user-select:none;user-select:none;border-radius:6px;min-width:160px;padding:4px;position:fixed;box-shadow:0 8px 24px #00000040}.ctx-menu-item[data-v-83afeae5]{cursor:pointer;width:100%;color:var(--text-primary);text-align:left;background:0 0;border:none;border-radius:4px;align-items:center;gap:8px;padding:6px 10px;font-size:12.5px;transition:background .1s;display:flex}.ctx-menu-item[data-v-83afeae5]:hover{background:var(--bg-hover)}.ctx-menu-item--danger[data-v-83afeae5]{color:var(--color-danger)}.ctx-menu-item--danger[data-v-83afeae5]:hover{background:#ef44441a}.ctx-menu-sep[data-v-83afeae5]{background:var(--border-color);height:1px;margin:4px 2px}
@@ -1 +0,0 @@
1
- .source-map-view[data-v-71d3569e]{background:var(--sm-graph-bg);width:100%;height:100%;color:var(--text-primary);flex-direction:column;font-size:13px;display:flex;overflow:hidden}.sm-toolbar[data-v-71d3569e]{background:var(--sm-canvas-bg);border-bottom:1px solid var(--border-color);flex-shrink:0;align-items:center;gap:12px;padding:8px 16px;display:flex}.sm-toolbar-left[data-v-71d3569e]{flex-shrink:0;align-items:center;gap:8px;display:flex}.sm-toolbar-center[data-v-71d3569e]{flex:1;align-items:center;gap:8px;display:flex}.sm-toolbar-right[data-v-71d3569e]{flex-shrink:0;align-items:center;gap:4px;display:flex}.sm-icon-map[data-v-71d3569e]{color:#f59e0b}.sm-title[data-v-71d3569e]{color:var(--text-primary);font-size:13px;font-weight:600}.sm-path-input[data-v-71d3569e]{background:var(--bg-input);border:1px solid var(--border-input);height:30px;color:var(--text-primary);border-radius:6px;outline:none;flex:1;padding:0 10px;font-family:Consolas,Monaco,monospace;font-size:12px;transition:border-color .15s}.sm-path-input[data-v-71d3569e]:focus{border-color:#f59e0b}.sm-path-input[data-v-71d3569e]:disabled{opacity:.6;cursor:not-allowed}.sm-btn[data-v-71d3569e]{cursor:pointer;white-space:nowrap;border:none;border-radius:6px;align-items:center;gap:6px;height:30px;padding:0 14px;font-size:12px;font-weight:500;transition:all .15s;display:inline-flex}.sm-btn-primary[data-v-71d3569e]{color:#fff;background:linear-gradient(135deg,#f59e0b,#d97706)}.sm-btn-primary[data-v-71d3569e]:hover:not(:disabled){background:linear-gradient(135deg,#fbbf24,#f59e0b)}.sm-btn-primary[data-v-71d3569e]:disabled{opacity:.6;cursor:not-allowed}.sm-panel-btn[data-v-71d3569e]{cursor:pointer;width:28px;height:28px;color:var(--text-tertiary);background:0 0;border:1px solid #0000;border-radius:5px;justify-content:center;align-items:center;transition:all .15s;display:flex}.sm-panel-btn[data-v-71d3569e]:hover,.sm-panel-btn.active[data-v-71d3569e]{background:var(--bg-component-hover);border-color:var(--border-color);color:var(--text-primary)}.sm-panel-btn.active[data-v-71d3569e]{color:#f59e0b;border-color:#f59e0b40}.sm-body[data-v-71d3569e]{flex:1;min-height:0;display:flex;overflow:hidden}.sm-resizer[data-v-71d3569e]{z-index:2;background:0 0;flex-shrink:0;transition:background .15s;position:relative}.sm-resizer-v[data-v-71d3569e]{cursor:col-resize;width:6px}.sm-resizer-h[data-v-71d3569e]{cursor:row-resize;height:6px}.sm-resizer[data-v-71d3569e]:after{content:"";background:var(--border-color);border-radius:2px;transition:background .15s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.sm-resizer-v[data-v-71d3569e]:after{width:2px;height:32px}.sm-resizer-h[data-v-71d3569e]:after{width:32px;height:2px}.sm-resizer[data-v-71d3569e]:hover{background:#3b82f60f}.sm-resizer[data-v-71d3569e]:hover:after{background:var(--color-primary,#3b82f6);box-shadow:0 0 8px #3b82f666}.sm-resizer-v[data-v-71d3569e]:hover:after{height:48px}.sm-resizer-h[data-v-71d3569e]:hover:after{width:48px}.sm-panel[data-v-71d3569e]{flex-direction:column;min-width:0;display:flex;overflow:hidden}.sm-panel-files[data-v-71d3569e]{background:var(--sm-canvas-bg);border-right:1px solid var(--border-color);flex-shrink:0;min-width:0;overflow:hidden}.sm-panel-graph[data-v-71d3569e]{background:var(--sm-graph-bg);flex:1;min-width:300px}.sm-panel-source[data-v-71d3569e]{background:var(--sm-canvas-bg);border-left:1px solid var(--border-color);flex-shrink:0}.sm-panel-header[data-v-71d3569e]{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border-color);background:var(--sm-canvas-bg);flex-shrink:0;align-items:center;gap:6px;padding:6px 10px;font-size:11px;font-weight:600;display:flex}.sm-panel-body[data-v-71d3569e]{flex:1;min-height:0;overflow:auto}.sm-project-info[data-v-71d3569e]{background:var(--sm-canvas-bg);border-bottom:1px solid var(--border-color);flex-shrink:0;align-items:center;gap:6px;padding:6px 12px;display:flex;overflow:hidden}.sm-lang-badge[data-v-71d3569e]{color:#f59e0b;background:#f59e0b22;border:1px solid #f59e0b44;border-radius:4px;flex-shrink:0;align-items:center;padding:1px 7px;font-size:10px;font-weight:600;display:inline-flex}.sm-tech-tag[data-v-71d3569e]{color:#93c5fd;background:#3b82f611;border:1px solid #3b82f630;border-radius:4px;flex-shrink:0;align-items:center;padding:1px 6px;font-size:10px;display:inline-flex}.sm-subsystem-tag[data-v-71d3569e]{opacity:.85;background:0 0;border:1px solid;border-radius:4px;flex-shrink:0;align-items:center;gap:3px;padding:1px 7px;font-size:10px;font-weight:600;display:inline-flex}.sm-summary-text[data-v-71d3569e]{color:var(--text-tertiary);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:11px;overflow:hidden}.sm-graph-container[data-v-71d3569e]{flex:1;min-height:0;position:relative;overflow:hidden}.sm-vue-flow[data-v-71d3569e]{width:100%;height:100%}.sm-graph-empty[data-v-71d3569e],.sm-graph-loading[data-v-71d3569e]{color:var(--text-tertiary);pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:12px;font-size:13px;display:flex;position:absolute;inset:0}.sm-log-panel[data-v-71d3569e]{border-top:1px solid var(--border-color);background:var(--sm-canvas-bg);flex-direction:column;flex-shrink:0;min-height:60px;display:flex}.sm-log-header[data-v-71d3569e]{color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border-color);flex-shrink:0;align-items:center;gap:6px;padding:4px 10px;font-size:10px;font-weight:600;display:flex}.sm-log-indicator[data-v-71d3569e]{background:#f59e0b;border-radius:50%;width:6px;height:6px;margin-left:auto;animation:1s infinite pulse-71d3569e}@keyframes pulse-71d3569e{0%,to{opacity:1}50%{opacity:.3}}.sm-log-body[data-v-71d3569e]{flex:1;padding:4px 0;font-family:Consolas,Monaco,monospace;font-size:11px;overflow-y:auto}.sm-log-entry[data-v-71d3569e]{padding:2px 10px;line-height:1.5}.sm-log-entry--info[data-v-71d3569e]{color:var(--text-tertiary)}.sm-log-entry--success[data-v-71d3569e]{color:var(--text-success,#16a34a)}.sm-log-entry--error[data-v-71d3569e]{color:var(--text-danger,#dc2626)}.sm-log-entry--thinking[data-v-71d3569e]{color:#f59e0b}.sm-file-tree[data-v-71d3569e]{flex:1;padding:4px 0;overflow:hidden auto}.sm-tree-node[data-v-71d3569e]{cursor:pointer;-webkit-user-select:none;user-select:none;height:24px;color:var(--text-primary);white-space:nowrap;box-sizing:border-box;border-radius:4px;align-items:center;gap:4px;padding-right:8px;font-size:13px;transition:background .1s;display:flex;overflow:hidden}.sm-tree-node[data-v-71d3569e]:hover{background:var(--bg-component-hover)}.sm-tree-node--active[data-v-71d3569e]{color:var(--color-primary);background:#3b82f61f}.sm-tree-arrow[data-v-71d3569e]{color:var(--text-tertiary);flex-shrink:0;align-items:center;width:12px;transition:transform .15s;display:flex}.sm-tree-arrow.expanded[data-v-71d3569e]{transform:rotate(90deg)}.sm-tree-arrow-spacer[data-v-71d3569e]{flex-shrink:0;width:12px;display:inline-block}.sm-tree-icon[data-v-71d3569e]{flex-shrink:0;align-items:center;font-size:14px;line-height:1;display:flex}.sm-tree-icon.mit-icon[data-v-71d3569e]{fill:currentColor;vertical-align:middle;width:14px;height:14px;display:inline-block}.sm-tree-name[data-v-71d3569e]{text-overflow:ellipsis;flex:1;min-width:0;font-size:13px;overflow:hidden}.sm-tree-empty[data-v-71d3569e]{color:var(--text-tertiary);text-align:center;padding:24px 12px;font-size:12px}.sm-node-detail[data-v-71d3569e]{background:#f59e0b0f;border-bottom:1px solid #f59e0b38;flex-shrink:0;padding:8px 12px}.sm-node-name[data-v-71d3569e]{color:#f59e0b;font-family:Consolas,monospace;font-size:13px;font-weight:600}.sm-node-file[data-v-71d3569e]{color:var(--text-tertiary);margin-top:2px;font-family:Consolas,monospace;font-size:10px}.sm-node-desc[data-v-71d3569e]{color:var(--text-secondary);margin-top:4px;font-size:11px;line-height:1.4}.sm-source-body[data-v-71d3569e]{background:var(--sm-source-bg);position:relative;overflow:hidden}.sm-monaco-container[data-v-71d3569e]{width:100%;height:100%}.sm-source-overlay[data-v-71d3569e]{background:var(--sm-source-overlay-bg);z-index:10;color:var(--text-tertiary);pointer-events:none;justify-content:center;align-items:center;font-size:12px;display:flex;position:absolute;inset:0}.sm-source-placeholder[data-v-71d3569e]{background:var(--sm-source-bg);pointer-events:none}.sm-empty[data-v-71d3569e]{height:100%;min-height:60px;color:var(--text-tertiary);text-align:center;justify-content:center;align-items:center;padding:12px;font-size:12px;display:flex}.sm-badge[data-v-71d3569e]{background:var(--bg-page);border:1px solid var(--border-color);color:var(--text-secondary);border-radius:4px;align-items:center;margin-left:4px;padding:1px 6px;font-size:10px;font-weight:600;display:inline-flex}.sm-badge-amber[data-v-71d3569e]{color:#f59e0b;background:#f59e0b15;border-color:#f59e0b40}.sm-spinner[data-v-71d3569e]{border:2px solid #ffffff40;border-top-color:#fff;border-radius:50%;width:12px;height:12px;animation:.8s linear infinite spin-71d3569e;display:inline-block}.sm-spinner-lg[data-v-71d3569e]{border-width:3px;border-color:#f59e0b #f59e0b20 #f59e0b20;width:32px;height:32px}@keyframes spin-71d3569e{to{transform:rotate(360deg)}}[data-v-71d3569e] .vue-flow__background{background:var(--sm-graph-bg)}[data-v-71d3569e] .vue-flow__controls{background:var(--sm-controls-bg);border:1px solid var(--sm-controls-border);box-shadow:none;border-radius:8px}[data-v-71d3569e] .vue-flow__controls-button{color:var(--sm-controls-color);background:0 0;border:none}[data-v-71d3569e] .vue-flow__controls-button:hover{background:var(--sm-controls-hover-bg);color:var(--sm-controls-hover-color)}[data-v-71d3569e] .vue-flow__minimap{background:var(--sm-minimap-bg);border:1px solid var(--sm-controls-border);border-radius:6px}[data-v-71d3569e] .vue-flow__minimap-mask{fill:var(--sm-minimap-mask);stroke:var(--sm-minimap-mask-stroke)}[data-v-71d3569e] .vue-flow__edge-path,[data-v-71d3569e] .vue-flow__connection-path{stroke:var(--sm-edge-color)}[data-v-71d3569e] .vue-flow__arrowhead polyline,[data-v-71d3569e] .vue-flow__arrowhead path,[data-v-71d3569e] .vue-flow__marker polyline,[data-v-71d3569e] .vue-flow__marker path{stroke:var(--sm-edge-color);fill:var(--sm-edge-color)}[data-v-71d3569e] .vue-flow__edge{stroke:var(--sm-edge-color)}[data-v-71d3569e] .vue-flow__node{transition:box-shadow .15s}[data-v-71d3569e] .vue-flow__node:hover{box-shadow:0 0 0 2px #f59e0b8c}[data-v-71d3569e] .vue-flow__node.selected{box-shadow:0 0 0 2px #f59e0b}[data-v-71d3569e] .sm-fn-node{background:var(--sm-node-bg);color:var(--sm-node-text);border:2px solid var(--node-accent,#3b82f6);cursor:pointer;border-radius:8px;min-width:140px;max-width:200px;padding:8px 12px;font-size:12px;transition:transform .15s,box-shadow .15s;box-shadow:0 1px 2px #0f172a14,0 4px 12px #0f172a0f}[data-theme=dark][data-v-71d3569e] .sm-fn-node{box-shadow:0 1px 2px #00000052,0 6px 14px #00000047}[data-v-71d3569e] .sm-fn-node:hover{transform:translateY(-1px)}[data-v-71d3569e] .sm-fn-edge .vue-flow__edge-path{stroke-width:1.5px}.sm-layout-btn-wrap[data-v-71d3569e]{z-index:10;position:absolute;top:10px;right:10px}.sm-layout-btn[data-v-71d3569e]{background:var(--sm-controls-bg);border:1px solid var(--sm-controls-border);height:28px;color:var(--text-secondary);cursor:pointer;white-space:nowrap;border-radius:6px;align-items:center;gap:5px;padding:0 10px;font-size:11px;font-weight:500;transition:all .15s;display:flex}.sm-layout-btn[data-v-71d3569e]:hover:not(:disabled){color:#f59e0b;background:#f59e0b08;border-color:#f59e0b50}.sm-layout-btn[data-v-71d3569e]:disabled{opacity:.45;cursor:not-allowed}.sm-fn-inner[data-v-71d3569e]{text-align:center;flex-direction:column;gap:3px;width:100%;min-width:0;display:flex;overflow:hidden}.sm-fn-label[data-v-71d3569e]{color:var(--sm-node-text);white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:12px;font-weight:600;overflow:hidden}.sm-fn-desc[data-v-71d3569e]{color:var(--sm-node-desc);white-space:nowrap;text-overflow:ellipsis;max-width:180px;font-size:10px;overflow:hidden}.sm-panel-header--tabs[data-v-71d3569e]{gap:0;height:32px;min-height:32px;padding:0}.sm-tab-btn[data-v-71d3569e]{cursor:pointer;height:100%;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;align-items:center;gap:4px;padding:0 8px;font-size:10px;font-weight:600;transition:all .15s;display:flex}.sm-tab-btn[data-v-71d3569e]:hover{color:var(--text-secondary);background:var(--bg-component-hover)}.sm-tab-btn.active[data-v-71d3569e]{color:#f59e0b;border-bottom-color:#f59e0b}.sm-outline-body[data-v-71d3569e]{flex:1;padding:4px 0;overflow:hidden auto}.sm-outline-group[data-v-71d3569e]{margin-bottom:2px}.sm-outline-group-header[data-v-71d3569e]{text-transform:uppercase;letter-spacing:.06em;background:var(--sm-canvas-bg);z-index:1;align-items:center;gap:5px;padding:5px 10px 3px;font-size:10px;font-weight:700;display:flex;position:sticky;top:0}.sm-outline-node[data-v-71d3569e]{cursor:pointer;align-items:center;gap:6px;height:26px;padding:0 8px 0 16px;transition:background .1s;display:flex;overflow:hidden}.sm-outline-node[data-v-71d3569e]:hover{background:var(--bg-component-hover)}.sm-outline-node--active[data-v-71d3569e]{background:#3b82f61f}.sm-outline-dot[data-v-71d3569e]{border-radius:50%;flex-shrink:0;width:6px;height:6px}.sm-outline-label[data-v-71d3569e]{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;flex-shrink:0;max-width:80px;font-family:Consolas,monospace;font-size:12px;font-weight:500;overflow:hidden}.sm-outline-desc[data-v-71d3569e]{color:var(--text-tertiary);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:10px;overflow:hidden}
@@ -1 +0,0 @@
1
- .ai-split-direct-pane[data-v-ad6c7be1]{flex-direction:column;display:flex}.ai-split-status[data-v-ad6c7be1]{align-items:center;gap:var(--spacing-base);margin-bottom:var(--spacing-md);color:var(--el-color-primary);font-size:13px;display:flex}.ai-split-status.is-error[data-v-ad6c7be1]{color:var(--el-color-danger)}.ai-split-status .is-loading[data-v-ad6c7be1]{animation:2s linear infinite rotating-ad6c7be1}.ai-split-idle[data-v-ad6c7be1]{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:32px 16px 24px;display:flex}.ai-split-idle__icon[data-v-ad6c7be1]{color:var(--el-color-primary);opacity:.6;margin-bottom:4px}.ai-split-idle__title[data-v-ad6c7be1]{color:var(--text-primary);font-size:15px;font-weight:600}.ai-split-idle__desc[data-v-ad6c7be1]{color:var(--text-secondary);max-width:460px;margin-bottom:4px;font-size:13px;line-height:1.6}@keyframes rotating-ad6c7be1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ai-split-tabs[data-v-ad6c7be1]{margin-top:-8px}.ai-split-tab-count[data-v-ad6c7be1]{color:var(--text-tertiary);font-variant-numeric:tabular-nums;margin-left:4px;font-size:11px}.ai-split-prompt-actions[data-v-ad6c7be1]{justify-content:flex-end;margin-bottom:8px;display:flex}.ai-split-prompt-editor[data-v-ad6c7be1]{flex-direction:column;gap:8px;margin-bottom:12px;display:flex}.ai-split-prompt-editor__actions[data-v-ad6c7be1]{justify-content:flex-end;gap:8px;display:flex}.ai-split-subhead[data-v-ad6c7be1]{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.3px;margin:12px 0 4px;font-size:12px;font-weight:600}.ai-split-pre[data-v-ad6c7be1]{background:var(--bg-code);color:var(--text-primary);max-height:280px;font-family:var(--font-mono,ui-monospace, monospace);white-space:pre-wrap;word-break:break-word;border-radius:4px;margin:0;padding:10px 12px;font-size:12px;line-height:1.6;overflow:auto}.ai-split-pre--think[data-v-ad6c7be1]{color:var(--text-secondary);background:var(--tint-think-06);border-left:2px solid var(--tint-think-45);font-style:italic}.ai-split-empty[data-v-ad6c7be1]{text-align:center;color:var(--text-tertiary);padding:32px;font-size:13px}.ai-split-list[data-v-ad6c7be1]{flex-direction:column;gap:8px;max-height:360px;margin:0;padding:0;list-style:none;display:flex;overflow:auto}.ai-split-list__item[data-v-ad6c7be1]{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:4px;gap:10px;padding:10px 12px;display:flex}.ai-split-list__no[data-v-ad6c7be1]{background:var(--el-color-primary);color:#fff;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:12px;font-weight:600;display:flex}.ai-split-list__body[data-v-ad6c7be1]{flex:1;min-width:0}.ai-split-list__title[data-v-ad6c7be1]{color:var(--text-primary);margin-bottom:4px;font-size:13px;font-weight:600}.ai-split-list__desc[data-v-ad6c7be1]{color:var(--text-secondary);white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.5}.ai-split-parse-error[data-v-ad6c7be1]{margin-bottom:10px}.ai-split-parse-error__detail[data-v-ad6c7be1]{font-family:var(--font-mono,ui-monospace, monospace);word-break:break-word;color:var(--text-primary);margin:4px 0 6px;font-size:12px}.ai-split-parse-error__hint[data-v-ad6c7be1]{color:var(--text-secondary);margin-bottom:8px;font-size:12px;line-height:1.55}.ai-split-parse-error__actions[data-v-ad6c7be1]{gap:8px;display:flex}.ai-split-footer-hint[data-v-ad6c7be1]{background:var(--tint-warning-14,#e6a23c1a);color:var(--el-color-warning);border-radius:4px;align-items:center;gap:6px;margin-top:8px;padding:8px 10px;font-size:12px;display:flex}.ai-split-raw-toolbar[data-v-ad6c7be1]{background:var(--tint-primary-06);border-radius:4px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;padding:6px 10px;font-size:12px;display:flex}.ai-split-raw-tip[data-v-ad6c7be1]{color:var(--text-secondary)}.ai-split-raw-editor[data-v-ad6c7be1] .el-textarea__inner{font-family:var(--font-mono,ui-monospace, monospace);max-height:360px;font-size:12px;line-height:1.6}.ai-split-direct-footer[data-v-ad6c7be1]{border-top:1px solid var(--border-color);justify-content:flex-end;gap:8px;margin-top:12px;padding-top:12px;display:flex}.ai-chat-pane[data-v-e4e36196]{flex-direction:column;height:60vh;min-height:360px;max-height:60vh;display:flex}.ai-chat-stream[data-v-e4e36196]{flex-direction:column;flex:1;gap:12px;min-height:0;padding:12px 4px;display:flex;overflow-y:auto}.ai-chat-empty[data-v-e4e36196]{text-align:center;color:#909399;margin:auto}.ai-chat-empty__title[data-v-e4e36196]{color:#606266;margin-top:12px;font-size:16px}.ai-chat-empty__desc[data-v-e4e36196]{margin-top:6px;font-size:13px;line-height:1.6}.ai-chat-turn[data-v-e4e36196]{width:100%;display:flex}.ai-chat-turn--user[data-v-e4e36196]{justify-content:flex-end}.ai-chat-turn--assistant[data-v-e4e36196]{justify-content:flex-start}.ai-chat-bubble[data-v-e4e36196]{word-wrap:break-word;border-radius:8px;max-width:80%;padding:10px 14px}.ai-chat-bubble.user[data-v-e4e36196]{color:#fff;background:#409eff}.ai-chat-bubble.user .ai-chat-content[data-v-e4e36196]{white-space:pre-wrap;margin:0;font-family:inherit;font-size:14px;line-height:1.6}.ai-chat-bubble.assistant[data-v-e4e36196]{color:#303133;background:#f4f4f5;width:100%;max-width:100%}.ai-chat-collapse[data-v-e4e36196]{border:none;margin-bottom:8px}.ai-chat-collapse[data-v-e4e36196] .el-collapse-item__header{color:#909399;background:0 0;border:none;font-size:12px}.ai-chat-collapse[data-v-e4e36196] .el-collapse-item__wrap{background:0 0;border:none}.ai-chat-content-text[data-v-e4e36196]{color:#303133;white-space:pre-wrap;word-wrap:break-word;background:#fff;border:1px solid #ebeef5;border-radius:4px;max-height:400px;margin:4px 0 8px;padding:10px 12px;font-size:13px;line-height:1.7;overflow-y:auto}.ai-chat-pre[data-v-e4e36196]{white-space:pre-wrap;word-wrap:break-word;background:#0000000a;border-radius:4px;max-height:300px;margin:0;padding:8px 10px;font-size:12px;line-height:1.6;overflow-y:auto}.ai-chat-pre--think[data-v-e4e36196]{color:#606266;background:#409eff14}.ai-chat-subtasks[data-v-e4e36196]{margin:8px 0}.ai-chat-subtasks__head[data-v-e4e36196]{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.ai-chat-subtasks__count[data-v-e4e36196]{color:#67c23a;font-size:13px;font-weight:500}.ai-chat-list[data-v-e4e36196]{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.ai-chat-list__item[data-v-e4e36196]{background:#fff;border:1px solid #ebeef5;border-radius:4px;gap:10px;padding:8px 10px;display:flex}.ai-chat-list__no[data-v-e4e36196]{color:#fff;text-align:center;background:#409eff;border-radius:50%;flex-shrink:0;width:22px;height:22px;font-size:12px;font-weight:500;line-height:22px}.ai-chat-list__body[data-v-e4e36196]{flex:1;min-width:0}.ai-chat-list__title[data-v-e4e36196]{color:#303133;margin-bottom:2px;font-size:14px;font-weight:500}.ai-chat-list__desc[data-v-e4e36196]{color:#606266;white-space:pre-wrap;font-size:12px;line-height:1.5}.ai-chat-parse-error[data-v-e4e36196]{margin:8px 0}.ai-chat-parse-error__detail[data-v-e4e36196]{color:#606266;white-space:pre-wrap;margin-top:4px;font-size:12px}.ai-chat-turn__actions[data-v-e4e36196]{justify-content:flex-end;margin-top:8px;display:flex}.ai-chat-streaming-banner[data-v-e4e36196]{background:var(--tint-primary-06,#409eff14);border-left:2px solid var(--el-color-primary);color:var(--el-color-primary);z-index:1;border-radius:4px;align-items:center;gap:8px;margin-bottom:4px;padding:8px 12px;font-size:13px;display:flex;position:sticky;top:0}.ai-chat-streaming-hint[data-v-e4e36196]{color:#909399;align-items:center;gap:6px;font-size:13px;display:flex}.ai-chat-input[data-v-e4e36196]{border-top:1px solid #ebeef5;flex-direction:column;gap:8px;padding-top:10px;display:flex}.ai-chat-input__actions[data-v-e4e36196]{justify-content:flex-end;gap:8px;display:flex}.ai-chat-history__loading[data-v-e4e36196],.ai-chat-history__empty[data-v-e4e36196]{text-align:center;color:#909399;padding:40px 0}.ai-chat-history__list[data-v-e4e36196]{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.ai-chat-history__item[data-v-e4e36196]{border:1px solid #ebeef5;border-radius:6px;padding:10px 12px}.ai-chat-history__title[data-v-e4e36196]{color:#303133;margin-bottom:4px;font-size:14px;font-weight:500}.ai-chat-history__meta[data-v-e4e36196]{color:#909399;flex-wrap:wrap;gap:4px;font-size:12px;display:flex}.ai-chat-history__actions[data-v-e4e36196]{gap:6px;margin-top:8px;display:flex}.ai-split-mode-bar[data-v-2732cf4b]{justify-content:flex-start;margin-bottom:12px;display:flex}.wb-ctx-menu[data-v-9e1ed466]{z-index:9999;background:var(--bg-container);border:1px solid var(--border-color);min-width:140px;box-shadow:var(--shadow-md);-webkit-user-select:none;user-select:none;border-radius:6px;margin:0;padding:4px;font-size:13px;list-style:none;position:fixed}.wb-ctx-menu__item[data-v-9e1ed466]{cursor:pointer;color:var(--text-primary);border-radius:4px;align-items:center;gap:8px;padding:6px 10px;display:flex}.wb-ctx-menu__item[data-v-9e1ed466]:hover{background:var(--tint-primary-12);color:var(--color-primary)}.wb-ctx-menu__item.is-disabled[data-v-9e1ed466]{cursor:progress;opacity:.6}.wb-ctx-menu__icon[data-v-9e1ed466]{justify-content:center;align-items:center;width:16px;height:16px;display:inline-flex}.wb-log-details[data-v-70385c0f]{border:1px solid var(--border-color);border-radius:var(--radius-sm,4px);background:var(--bg-code);flex-direction:column;flex:1;height:100%;min-height:0;margin-top:6px;display:flex;overflow:hidden}.wb-log-details__body[data-v-70385c0f]{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.wb-log-summary[data-v-70385c0f]{cursor:pointer;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;font-size:12px;display:flex}.wb-log-summary[data-v-70385c0f]:hover{background:var(--tint-primary-06)}.wb-log-summary__left[data-v-70385c0f]{flex:1;align-items:center;gap:6px;min-width:0;display:inline-flex}.wb-log-summary__right[data-v-70385c0f]{flex-shrink:0;align-items:center;gap:8px;display:inline-flex}.wb-log-summary__meta[data-v-70385c0f]{color:var(--text-tertiary);font-variant-numeric:tabular-nums;font-size:11px}.wb-log-copy[data-v-70385c0f]{color:var(--text-secondary);background:var(--bg-container);border:1px solid var(--border-color-medium);border-radius:var(--radius-sm,4px);cursor:pointer;-webkit-user-select:none;user-select:none;flex-shrink:0;align-items:center;gap:3px;padding:2px 7px;font-size:11px;font-weight:500;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.wb-log-copy[data-v-70385c0f]: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-70385c0f]:active{background:color-mix(in srgb, var(--color-primary) 18%, transparent)}.wb-log-copy[data-v-70385c0f]:focus-visible{outline:2px solid color-mix(in srgb, var(--color-primary) 50%, transparent);outline-offset:1px}.wb-log-copy--sm[data-v-70385c0f]{padding:1px 6px;font-size:10px}.wb-log-pre__head[data-v-70385c0f]{border-top:1px solid var(--border-color);background:var(--bg-subtle,var(--bg-container));color:var(--text-secondary);align-items:center;gap:8px;padding:5px 10px;font-size:11px;display:flex}.wb-log-pre__label[data-v-70385c0f]{letter-spacing:.3px;text-transform:uppercase;flex:1;font-weight:600}.wb-log-pre__meta[data-v-70385c0f]{color:var(--text-tertiary);font-variant-numeric:tabular-nums;font-size:11px}.wb-log-pre[data-v-70385c0f]{background:var(--bg-code);flex:1;min-height:0;margin:0;padding:8px 10px;overflow:auto}.wb-log-pre__render[data-v-70385c0f]{color:var(--text-primary);font-size:12px;line-height:1.55}.wb-log-pre__render[data-v-70385c0f],.wb-log-pre__render.markdown-renderer[data-v-70385c0f]{content-visibility:visible;contain-intrinsic-size:auto}.wb-log-pre__render[data-v-70385c0f] pre{margin:6px 0}.wb-log-pre__render[data-v-70385c0f] code{font-family:var(--font-mono,ui-monospace, monospace)}.wb-log-pre__empty[data-v-70385c0f]{color:var(--text-tertiary);padding:4px 0;font-size:12px;font-style:italic}.wb-log-section[data-v-70385c0f]{border-top:1px solid var(--border-color)}.wb-log-section__summary[data-v-70385c0f]{cursor:pointer;color:var(--text-secondary);-webkit-user-select:none;user-select:none;background:var(--bg-subtle,var(--bg-container));justify-content:space-between;align-items:center;gap:8px;padding:5px 10px;font-size:11px;list-style:none;display:flex}.wb-log-section__summary[data-v-70385c0f]::-webkit-details-marker{display:none}.wb-log-section__summary[data-v-70385c0f]:hover{background:var(--tint-primary-06)}.wb-log-section__tag[data-v-70385c0f]{letter-spacing:.3px;text-transform:uppercase;border-radius:3px;padding:1px 6px;font-size:10px;font-weight:600;display:inline-block}.wb-log-section__tag--user[data-v-70385c0f]{background:var(--tint-warning-14);color:var(--color-warning-dark,#b45309)}.wb-log-section__tag--think[data-v-70385c0f]{background:var(--tint-think-14);color:var(--color-think-dark,#6d28d9)}.wb-log-section__count[data-v-70385c0f]{color:var(--text-tertiary);font-variant-numeric:tabular-nums;font-size:10px}.wb-log-section__pre[data-v-70385c0f]{max-height:800px;font-family:var(--font-mono,ui-monospace, monospace);white-space:pre-wrap;word-break:break-word;margin:0;padding:8px 10px;font-size:11px;line-height:1.55;overflow:auto}.wb-log-section__pre--user[data-v-70385c0f]{background:var(--tint-warning-04,#f59e0b0f);color:var(--text-primary);border-left:2px solid var(--tint-warning-45,#f59e0b73)}.wb-log-section__pre--think[data-v-70385c0f]{background:var(--tint-think-04,#8b5cf60f);color:var(--text-secondary);border-left:2px solid var(--tint-think-45,#8b5cf673);font-style:italic}.wb-log-fullscreen-dialog .el-dialog__body[data-v-70385c0f]{flex-direction:column;height:calc(100vh - 54px);padding:0 16px 16px;display:flex;overflow:hidden}.wb-log-fullscreen[data-v-70385c0f]{border:1px solid var(--border-color);border-radius:var(--radius-sm,4px);background:var(--bg-code);flex:1;min-height:0;display:flex;overflow:hidden}.wb-log-fullscreen__render[data-v-70385c0f]{min-height:0;color:var(--text-primary);flex:1;padding:14px 18px;font-size:13px;line-height:1.65;overflow:auto}.wb-log-fullscreen__render[data-v-70385c0f] pre{margin:8px 0}.wb-log-fullscreen__empty[data-v-70385c0f]{color:var(--text-tertiary);padding:14px 18px;font-style:italic}.wb-log-summary__status[data-v-70385c0f]{align-items:center;gap:6px;font-size:12px;font-weight:600;display:inline-flex}.wb-log-summary__status--running[data-v-70385c0f]{color:var(--color-warning-dark,#b45309)}.wb-log-summary__status--pending[data-v-70385c0f]{color:var(--color-primary)}.wb-log-summary__status--done[data-v-70385c0f]{color:var(--color-success-dark,#15803d)}.wb-log-summary__icon[data-v-70385c0f]{font-size:13px;line-height:1}.wb-log-summary__elapsed[data-v-70385c0f]{color:var(--text-tertiary);font-variant-numeric:tabular-nums;margin-left:2px;font-size:11px;font-weight:400}.wb-log-dots[data-v-70385c0f]{align-items:center;gap:3px;margin-left:-2px;display:inline-flex}.wb-log-dots__dot[data-v-70385c0f]{opacity:.35;background:currentColor;border-radius:50%;width:4px;height:4px;animation:1.4s ease-in-out infinite wb-log-dot-bounce-70385c0f}.wb-log-dots__dot[data-v-70385c0f]:nth-child(2){animation-delay:.2s}.wb-log-dots__dot[data-v-70385c0f]:nth-child(3){animation-delay:.4s}.wb-log-details.is-running .wb-log-summary[data-v-70385c0f]{background:color-mix(in srgb, var(--color-warning,#f59e0b) 8%, transparent)}.wb-log-details.is-pending .wb-log-summary[data-v-70385c0f]{background:color-mix(in srgb, var(--color-primary) 6%, transparent)}.wb-log-details.is-finished .wb-log-summary[data-v-70385c0f]{background:color-mix(in srgb, var(--color-success,#22c55e) 6%, transparent)}.wb-log-details.is-running .wb-log-pre[data-v-70385c0f]{border-left:2px solid var(--color-warning,#f59e0b)}.wb-log-details.is-pending .wb-log-pre[data-v-70385c0f]{border-left:2px solid color-mix(in srgb, var(--color-primary) 50%, transparent)}.wb-log-details.is-finished .wb-log-pre[data-v-70385c0f]{border-left:2px solid color-mix(in srgb, var(--color-success,#22c55e) 60%, transparent)}.wb-log-details.is-finished[data-v-70385c0f]{animation:1.5s ease-out wb-log-finished-flash-70385c0f}@keyframes wb-log-dot-bounce-70385c0f{0%,80%,to{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}@keyframes wb-log-finished-flash-70385c0f{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--color-success,#22c55e) 50%, transparent)}60%{box-shadow:0 0 0 4px color-mix(in srgb, var(--color-success,#22c55e) 0%, transparent)}to{box-shadow:0 0 #0000}}@media (prefers-reduced-motion:reduce){.wb-log-dots__dot[data-v-70385c0f],.wb-log-details.is-finished[data-v-70385c0f]{animation:none}}.exec-logs[data-v-174a9b87]{flex-direction:column;gap:12px;height:100%;padding:16px 20px;display:flex;overflow:auto}.exec-logs__head[data-v-174a9b87]{align-items:center;gap:12px;display:flex}.exec-logs__title-block[data-v-174a9b87]{flex:1;align-items:baseline;gap:10px;min-width:0;display:flex}.exec-logs__stats[data-v-174a9b87]{color:var(--text-tertiary);font-variant-numeric:tabular-nums;font-size:12px}.exec-logs__head-actions[data-v-174a9b87]{flex-shrink:0;gap:8px;display:inline-flex}.exec-logs__config[data-v-174a9b87]{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-174a9b87]{color:var(--text-secondary);font-size:12px;font-weight:600}.exec-logs__config-field[data-v-174a9b87]{align-items:center;gap:8px;display:inline-flex}.exec-logs__config-name[data-v-174a9b87]{color:var(--text-tertiary);font-size:12px}.exec-logs__filter[data-v-174a9b87]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.exec-logs__filter-spacer[data-v-174a9b87]{flex:1}.exec-logs__batch-meta[data-v-174a9b87]{color:var(--text-secondary);font-variant-numeric:tabular-nums;font-size:12px}.exec-logs__batch[data-v-174a9b87]{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-174a9b87]{flex-direction:column;flex:1;gap:10px;min-height:200px;display:flex}.exec-logs__empty[data-v-174a9b87]{border:1px dashed var(--border-color);border-radius:var(--radius-md,6px);color:var(--text-tertiary);text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:60px 20px;display:flex}.exec-logs__empty-art[data-v-174a9b87]{opacity:.5;margin-bottom:8px;font-size:36px}.exec-logs__empty-title[data-v-174a9b87]{color:var(--text-secondary);margin-bottom:4px;font-size:14px;font-weight:600}.exec-logs__empty-hint[data-v-174a9b87]{max-width:400px;font-size:12px}.exec-logs__pager[data-v-174a9b87]{justify-content:center;padding-top:8px;display:flex}.exec-card[data-v-174a9b87]{background:var(--bg-container);border:1px solid var(--border-color);border-radius:var(--radius-md,6px);flex-direction:column;gap:6px;padding:12px 14px;transition:border-color .15s,box-shadow .15s;display:flex}.exec-card[data-v-174a9b87]:hover{border-color:var(--color-primary)}.exec-card.is-selected[data-v-174a9b87]{border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary)}.exec-card__head[data-v-174a9b87]{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.exec-card__status[data-v-174a9b87]{border:1px solid;border-radius:999px;flex-shrink:0;padding:1px 8px;font-size:11px;font-weight:600;display:inline-block}.exec-card__title[data-v-174a9b87]{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;min-width:0;max-width:360px;font-size:14px;font-weight:600;overflow:hidden}.exec-card__spacer[data-v-174a9b87]{flex:1}.exec-card__meta[data-v-174a9b87]{color:var(--text-tertiary);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:10px;font-size:11px;display:inline-flex}.exec-card__task[data-v-174a9b87]{white-space:nowrap;text-overflow:ellipsis;max-width:200px;overflow:hidden}.exec-card__time[data-v-174a9b87]{font-variant-numeric:tabular-nums}.exec-card__exit[data-v-174a9b87]{font-family:var(--font-mono,ui-monospace, monospace)}.exec-card__del[data-v-174a9b87]{width:22px;height:22px;color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;font-size:16px;line-height:1;transition:background .15s,color .15s;display:inline-flex}.exec-card__del[data-v-174a9b87]:hover{background:var(--tint-danger-14);color:var(--color-danger-bright,#ef4444)}.exec-card__error[data-v-174a9b87]{color:var(--color-danger-dark,#b91c1c);background:var(--tint-danger-06);border-left:2px solid var(--color-danger-bright,#ef4444);font-size:12px;font-family:var(--font-mono,ui-monospace, monospace);white-space:pre-wrap;word-break:break-word;border-radius:3px;margin:0;padding:6px 10px}.workbench[data-v-093a936d]{background:var(--bg-container);height:100%;color:var(--text-primary);flex-direction:column;display:flex}.wb-task-desc[data-v-093a936d]{border:1px solid var(--border-color);background:var(--bg-subtle);border-radius:10px;flex-shrink:0;margin:0;padding:0;overflow:hidden}.wb-task-desc[open][data-v-093a936d]{background:var(--bg-container)}.wb-task-desc__summary[data-v-093a936d]{cursor:pointer;color:var(--text-secondary);-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:8px 12px;font-size:12px;list-style:none;display:flex}.wb-task-desc__summary[data-v-093a936d]::-webkit-details-marker{display:none}.wb-task-desc__summary[data-v-093a936d]:hover{background:var(--bg-container-hover)}.wb-task-desc__caret[data-v-093a936d]{color:var(--text-tertiary);font-size:12px;transition:transform .15s}.wb-task-desc__label[data-v-093a936d]{letter-spacing:.1px;font-weight:500}.wb-task-desc__tag[data-v-093a936d]{color:var(--color-primary);align-items:center;gap:5px;margin-left:auto;font-size:10px;font-weight:600;display:inline-flex}.wb-task-desc__tag-attachment[data-v-093a936d]{background:var(--tint-primary-14);min-width:18px;height:16px;color:var(--color-primary);font-variant-numeric:tabular-nums;border-radius:8px;justify-content:center;align-items:center;padding:0 5px;display:inline-flex}.wb-task-desc[open] .wb-task-desc__summary[data-v-093a936d]{border-bottom:1px solid var(--border-color);margin-bottom:0}.wb-task-desc>.wb-textarea[data-v-093a936d],.wb-task-desc[data-v-093a936d]>.attachment-zone{margin:8px 12px 10px}.wb-task-desc>.wb-textarea[data-v-093a936d]{margin-bottom:0}.wb-task-desc[data-v-093a936d]>.attachment-zone{margin-top:0}.workbench__editor-row[data-v-093a936d]{flex:1;min-height:0;display:flex}.wb-sidebar[data-v-093a936d]{border-right:1px solid var(--border-color);background:var(--bg-container);flex-direction:column;flex-shrink:0;gap:18px;width:268px;padding:14px 12px 18px;display:flex;overflow-y:auto}.wb-section[data-v-093a936d]{flex-direction:column;flex-shrink:0;gap:8px;min-height:0;display:flex}.wb-section+.wb-section[data-v-093a936d]{border-top:1px dashed var(--border-color);padding-top:16px}.wb-section__head[data-v-093a936d]{align-items:center;gap:6px;padding:0 4px;display:flex}.wb-section__tag[data-v-093a936d]{letter-spacing:.4px;height:18px;color:var(--text-tertiary);background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-sm);text-transform:uppercase;font-variant-numeric:tabular-nums;flex-shrink:0;align-items:center;padding:0 6px;font-size:10px;font-weight:600;display:inline-flex}.wb-section__tag--accent[data-v-093a936d]{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-093a936d]{color:var(--text-secondary);letter-spacing:.2px;flex:1;min-width:0;margin:0;font-size:12px;font-weight:600}.wb-section__action[data-v-093a936d]{color:var(--text-tertiary);border-radius:var(--radius-sm);cursor:pointer;width:28px;height:28px;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;font-size:13px;display:inline-flex}.wb-section__action[data-v-093a936d]:hover{background:var(--tint-primary-12);color:var(--color-primary)}.wb-new-btn[data-v-093a936d]{width:100%;height:30px;color:var(--color-primary);letter-spacing:.05px;cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);background:0 0;border:none;border-radius:8px;align-items:center;gap:6px;padding:0 10px;font-size:12.5px;font-weight:500;display:flex}.wb-new-btn__icon[data-v-093a936d]{transition:transform var(--transition-fast) var(--ease-custom);flex-shrink:0;font-size:13px}.wb-new-btn__shortcut[data-v-093a936d]{display:none}.wb-new-btn[data-v-093a936d]:hover{background:var(--tint-primary-12);color:var(--color-primary)}.wb-new-btn:hover .wb-new-btn__icon[data-v-093a936d]{transform:rotate(90deg)}.wb-new-btn[data-v-093a936d]:active{transform:scale(.99)}.wb-new-btn[data-v-093a936d]:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.wb-task-list[data-v-093a936d],.wb-prompt-list[data-v-093a936d]{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.wb-task-item[data-v-093a936d]{cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:6px 10px;display:flex;position:relative}.wb-task-item.is-running[data-v-093a936d]{background:color-mix(in srgb, var(--color-warning) 8%, transparent)}.wb-task-item.is-running[data-v-093a936d]:before{content:"";background:var(--color-warning);width:2px;box-shadow:0 0 6px color-mix(in srgb, var(--color-warning) 60%, transparent);border-radius:2px;position:absolute;top:4px;bottom:4px;left:-1px}.wb-task-item[data-v-093a936d]:hover{background:var(--bg-container-hover);border-color:#0000}.wb-task-item:hover .wb-task-item__del[data-v-093a936d]{opacity:1;transform:translate(0)}.wb-task-item.active[data-v-093a936d]{background:color-mix(in srgb, var(--color-primary) 9%, var(--bg-container));box-shadow:none;border-color:#0000}.wb-task-item.active[data-v-093a936d]:after{content:"";background:var(--color-primary);width:2px;box-shadow:0 0 6px color-mix(in srgb, var(--color-primary) 60%, transparent);border-radius:2px;position:absolute;top:4px;bottom:4px;left:-1px}.wb-task-item.active .wb-task-item__title[data-v-093a936d]{color:var(--color-primary)}.wb-task-item.active .wb-task-item__del[data-v-093a936d]{opacity:1;color:var(--color-primary)}.wb-task-item__avatar[data-v-093a936d]{background:var(--bg-subtle);width:22px;height:22px;color:var(--text-tertiary);transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom);border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;display:inline-flex}.wb-task-item__avatar[data-icon=image][data-v-093a936d]{background:color-mix(in srgb, var(--color-think) 12%, transparent);color:var(--color-think-dark,#6d28d9);border:none}.wb-task-item__avatar[data-icon=icon][data-v-093a936d]{background:color-mix(in srgb, var(--color-info-light) 12%, transparent);color:var(--color-info,#0369a1);border:none}.wb-task-item__avatar[data-icon=test][data-v-093a936d]{background:var(--tint-success-14);color:var(--color-success-dark,#047857);border:none}.wb-task-item__avatar[data-icon=ui][data-v-093a936d]{background:color-mix(in srgb, var(--color-warning) 12%, transparent);color:var(--color-warning-dark,#b45309);border:none}.wb-task-item.active .wb-task-item__avatar[data-v-093a936d]{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.wb-task-item__body[data-v-093a936d]{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.wb-task-item__title[data-v-093a936d]{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;letter-spacing:-.1px;font-size:12.5px;font-weight:500;line-height:1.25;overflow:hidden}.wb-task-item__meta[data-v-093a936d]{color:var(--text-tertiary);align-items:center;gap:5px;font-size:10px;line-height:1;display:flex}.wb-task-item__meta-item[data-v-093a936d]{font-variant-numeric:tabular-nums;align-items:center;gap:3px;font-weight:500;display:inline-flex}.wb-task-item__meta-item--accent[data-v-093a936d]{color:var(--color-primary)}.wb-task-item__type-toggle[data-v-093a936d]{letter-spacing:.2px;white-space:nowrap;cursor:pointer;border:none;border-radius:7px;height:15px;padding:0 6px;font-family:inherit;font-size:10px;font-weight:600;transition:background-color .15s,color .15s,transform .1s}.wb-task-item__type-toggle[data-v-093a936d]:active{transform:scale(.96)}.wb-task-item__type-toggle[data-v-093a936d]:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.wb-task-item__meta-item--simple[data-v-093a936d]{background:var(--tint-success-14);height:15px;color:var(--color-success-dark,#047857);letter-spacing:.2px;white-space:nowrap;border-radius:7px;align-items:center;padding:0 6px;font-size:10px;font-weight:600;display:inline-flex}.wb-task-item__meta-item--complex[data-v-093a936d]{background:var(--tint-think-14);color:var(--color-think-darker,#4338ca)}.wb-task-item__type-toggle[data-v-093a936d]:hover{filter:brightness(.95)}.wb-task-item__meta-item--project[data-v-093a936d]{background:color-mix(in srgb, var(--color-warning,#f59e0b) 14%, transparent);height:15px;color:color-mix(in srgb, var(--color-warning,#f59e0b) 80%, var(--text-primary));letter-spacing:.2px;white-space:nowrap;text-overflow:ellipsis;border-radius:7px;align-items:center;max-width:110px;padding:0 5px;font-size:10px;font-weight:600;display:inline-flex;overflow:hidden}.wb-task-item.is-other-project[data-v-093a936d]{opacity:.78}.wb-task-item.is-other-project[data-v-093a936d]:hover{opacity:1}.wb-task-item__meta-icon[data-v-093a936d]{opacity:.85;font-size:11px}.wb-task-item__num[data-v-093a936d]{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-093a936d]{color:var(--color-primary);background:var(--tint-primary-14)}.wb-task-item__meta-item--running .wb-task-item__num[data-v-093a936d]{color:color-mix(in srgb, var(--color-warning,#f59e0b) 85%, var(--text-primary));background:color-mix(in srgb, var(--color-warning,#f59e0b) 18%, transparent);font-weight:600}.wb-task-item.is-running .wb-task-item__meta-icon[data-v-093a936d]{color:color-mix(in srgb, var(--color-warning,#f59e0b) 80%, var(--text-primary));animation:1.4s ease-in-out infinite wb-task-running-icon-093a936d}@keyframes wb-task-running-icon-093a936d{0%,to{opacity:.55}50%{opacity:1}}.wb-task-item__del[data-v-093a936d]{color:var(--text-tertiary);cursor:pointer;opacity:0;width:22px;height:22px;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;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;display:inline-flex;transform:translate(-2px)}.wb-task-item__del[data-v-093a936d]:hover{background:color-mix(in srgb, var(--color-danger) 14%, transparent);color:var(--color-danger)}.wb-task-item__del[data-v-093a936d]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset);opacity:1}.wb-task-item__del[data-v-093a936d],.wb-prompt-item__del[data-v-093a936d],.wb-sub-item__del[data-v-093a936d]{font-size:13px}.wb-prompt-item[data-v-093a936d]{border-radius:var(--radius-md);font-size:var(--font-size-125);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-093a936d]:hover{background:var(--bg-container-hover)}.wb-prompt-item:hover .wb-prompt-item__del[data-v-093a936d]{opacity:1}.wb-prompt-item__icon[data-v-093a936d]{border-radius:var(--radius-sm);background:var(--tint-primary-08);width:22px;height:22px;color:var(--color-primary);flex-shrink:0;justify-content:center;align-items:center;font-size:12px;display:inline-flex}.wb-prompt-item__name[data-v-093a936d]{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__project[data-v-093a936d]{background:var(--tint-primary-12);height:16px;color:var(--color-primary);letter-spacing:.2px;white-space:nowrap;text-overflow:ellipsis;border-radius:8px;flex-shrink:0;align-items:center;max-width:110px;padding:0 6px;font-size:10px;font-weight:600;display:inline-flex;overflow:hidden}.wb-prompt-item__del[data-v-093a936d]{color:var(--text-tertiary);border-radius:var(--radius-xs);cursor:pointer;opacity:0;width:20px;height:20px;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;font-size:12px;display:inline-flex}.wb-prompt-item__del[data-v-093a936d]:hover{background:color-mix(in srgb, var(--color-danger) 14%, transparent);color:var(--color-danger)}.wb-prompt-item__del[data-v-093a936d]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset);opacity:1}.wb-empty[data-v-093a936d]{text-align:center;color:var(--text-tertiary);border:1px dashed var(--border-color);border-radius:var(--radius-md);background:var(--bg-subtle);flex-direction:column;align-items:center;gap:4px;padding:22px 12px 18px;display:flex}.wb-empty--compact[data-v-093a936d]{flex-direction:row;justify-content:center;gap:0;padding:10px 12px}.wb-empty__icon[data-v-093a936d]{color:var(--text-tertiary);opacity:.65;margin-bottom:2px;font-size:22px}.wb-empty__text[data-v-093a936d]{font-size:var(--font-size-125);color:var(--text-secondary);font-weight:500}.wb-empty__hint[data-v-093a936d]{color:var(--text-tertiary);font-size:11px}.wb-empty--rich[data-v-093a936d]{border-style:solid;border-color:var(--border-color);background:var(--bg-container);gap:10px;margin:4px 2px 2px;padding:32px 28px 28px}.wb-empty__art[data-v-093a936d]{background:var(--tint-primary-12);width:44px;height:44px;color:var(--color-primary);border-radius:12px;justify-content:center;align-items:center;margin-bottom:2px;font-size:22px;display:flex}.wb-empty__title[data-v-093a936d]{letter-spacing:var(--letter-spacing-heading,-.25px);color:var(--text-secondary);font-size:14px;font-weight:600;line-height:1.4}.wb-empty--rich .wb-empty__hint[data-v-093a936d]{color:var(--text-tertiary);max-width:280px;font-size:12px;line-height:1.55}.wb-empty__cta[data-v-093a936d]{flex-wrap:wrap;justify-content:center;align-items:center;gap:14px;margin-top:6px;display:flex}.wb-empty__link[data-v-093a936d]{appearance:none;min-height:32px;color:var(--color-primary);cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;padding:6px 10px;font-size:12px;font-weight:500;transition:color .15s ease-out,background-color .15s ease-out;display:inline-flex}.wb-empty__link[data-v-093a936d]:hover:not(:disabled){color:var(--color-primary);background:var(--tint-primary-08)}.wb-empty__link[data-v-093a936d]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset-lg)}.wb-empty__link[data-v-093a936d]:disabled{color:var(--text-tertiary);cursor:not-allowed;opacity:.6}@media (prefers-reduced-motion:reduce){.wb-empty__link[data-v-093a936d]{transition:none}}.wb-split[data-v-093a936d]{flex-direction:column;flex:1;gap:8px;min-height:0;padding:10px 16px;display:flex;overflow:hidden}.wb-placeholder[data-v-093a936d]{color:var(--text-tertiary);flex:1;justify-content:center;align-items:center;font-size:13px;display:flex}.wb-execution-body[data-v-093a936d]{border:none;border-radius:0;flex:1;grid-template-columns:260px 1fr;gap:16px;min-height:0;display:grid;overflow:hidden}.wb-execution-body--simple[data-v-093a936d]{grid-template-columns:1fr;gap:0}.wb-exec-list[data-v-093a936d]{border:1px solid var(--border-color);background:var(--bg-subtle);border-radius:12px;flex-direction:column;width:100%;min-width:0;min-height:0;display:flex;overflow:hidden}.wb-exec-list__header[data-v-093a936d]{border-bottom:1px solid var(--border-color);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:8px;padding:10px 12px 8px;display:flex}.wb-exec-list__title[data-v-093a936d]{color:var(--text-secondary);letter-spacing:.1px;flex-shrink:0;margin:0;font-size:12px;font-weight:600}.wb-exec-list__header .wb-split__sub-actions[data-v-093a936d]{margin-left:auto}.wb-exec-sub-list[data-v-093a936d]{flex-direction:column;flex:1;gap:4px;min-height:0;margin:0;padding:6px;list-style:none;display:flex;overflow-y:auto}.wb-exec-sub-item[data-v-093a936d]{border-radius:var(--radius-md);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom);border:1px solid #0000;flex-direction:column;gap:0;padding:7px 8px 5px;display:flex;position:relative}.wb-exec-sub-item[data-v-093a936d]:hover{background:var(--bg-container-hover);border-color:var(--border-color)}.wb-exec-sub-item.is-selected[data-v-093a936d]{background:color-mix(in srgb, var(--color-primary) 9%, var(--bg-container));border-color:var(--tint-primary-35)}.wb-exec-sub-item.is-running[data-v-093a936d]{border-color:var(--tint-primary-45);background:color-mix(in srgb, var(--color-primary) 6%, var(--bg-container))}.wb-exec-sub-item.is-running .wb-sub-item__status[data-v-093a936d]{box-shadow:0 0 0 0 var(--tint-primary-45), 0 0 12px var(--tint-primary-35);animation:2.4s ease-in-out infinite wb-status-pulse,2.4s linear infinite wb-status-shimmer;background:linear-gradient(90deg, var(--color-primary) 0%, color-mix(in srgb, var(--color-primary) 70%, #fff) 50%, var(--color-primary) 100%)!important;background-size:200% 100%!important}.wb-exec-sub-item.is-running .wb-sub-item__status[data-v-093a936d]:before{content:"";background:#fff;border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite wb-status-dot-093a936d;box-shadow:0 0 6px #ffffffe6}.wb-exec-sub-item.is-running .wb-sub-item__status[data-v-093a936d]:after{content:"";border-radius:inherit;pointer-events:none;background:linear-gradient(90deg,#0000 0%,#fff6 50%,#0000 100%);animation:2.4s ease-in-out infinite wb-status-sweep;position:absolute;inset:0}.wb-exec-sub-item.is-done[data-v-093a936d]:not(.is-selected){opacity:.75}.wb-exec-sub-item__row1[data-v-093a936d]{align-items:center;gap:6px;min-width:0;display:flex}.wb-exec-sub-item__row2[data-v-093a936d]{opacity:0;max-height:0;transition:max-height .18s var(--ease-custom), opacity .15s var(--ease-custom), padding-top .18s var(--ease-custom);align-items:center;gap:4px;padding-top:0;display:flex;overflow:hidden}.wb-exec-sub-item:hover .wb-exec-sub-item__row2[data-v-093a936d],.wb-exec-sub-item.is-selected .wb-exec-sub-item__row2[data-v-093a936d],.wb-exec-sub-item.is-running .wb-exec-sub-item__row2[data-v-093a936d]{opacity:1;max-height:28px;padding-top:5px}.wb-exec-sub-item__actions[data-v-093a936d]{align-items:center;gap:4px;margin-left:auto;display:inline-flex}.wb-exec-sub-item__dirty-dot[data-v-093a936d]{background:var(--color-warning);border-radius:50%;flex-shrink:0;width:5px;height:5px}.wb-exec-sub-btn[data-v-093a936d]{appearance:none;border:1px solid var(--border-color-medium);background:var(--bg-container);color:var(--text-tertiary);cursor:pointer;white-space:nowrap;border-radius:10px;flex-shrink:0;height:20px;padding:0 7px;font-size:10px;font-weight:600;transition:background .15s,color .15s,border-color .15s}.wb-exec-sub-btn[data-v-093a936d]:disabled{opacity:.4;cursor:not-allowed}.wb-exec-sub-btn--run[data-v-093a936d]{color:var(--color-primary);border-color:var(--tint-primary-35);background:color-mix(in srgb, var(--color-primary) 6%, var(--bg-container))}.wb-exec-sub-btn--run[data-v-093a936d]:hover{background:color-mix(in srgb, var(--color-primary) 14%, var(--bg-container))}.wb-exec-sub-btn--stop[data-v-093a936d]{color:var(--color-danger-bright,#ef4444);border-color:var(--tint-danger-50);background:var(--tint-danger-06)}.wb-exec-sub-btn--stop[data-v-093a936d]:hover{background:var(--tint-danger-14)}.wb-exec-sub-btn--undo[data-v-093a936d]{color:var(--color-primary);border-color:var(--tint-primary-35);background:color-mix(in srgb, var(--color-primary) 6%, var(--bg-container))}.wb-exec-sub-btn--undo[data-v-093a936d]:hover{background:color-mix(in srgb, var(--color-primary) 14%, var(--bg-container))}.wb-exec-sub-btn--del[data-v-093a936d]{width:20px;color:var(--text-tertiary);padding:0;font-size:13px}.wb-exec-sub-btn--del[data-v-093a936d]:hover{color:var(--color-danger);border-color:var(--tint-danger-50);background:var(--tint-danger-06)}.wb-exec-sub-item__title[data-v-093a936d]{min-width:0;color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:12px;font-weight:500;line-height:1.35;overflow:hidden}.wb-exec-sub-item.is-selected .wb-exec-sub-item__title[data-v-093a936d]{color:var(--color-primary)}.wb-exec-sub-item.is-done .wb-exec-sub-item__title[data-v-093a936d]{text-decoration:line-through;-webkit-text-decoration-color:var(--border-color);text-decoration-color:var(--border-color);text-decoration-thickness:1px}.wb-exec-detail[data-v-093a936d]{background:0 0;flex-direction:column;gap:14px;min-width:0;min-height:0;padding:4px 4px 8px;display:flex;overflow:hidden}.wb-exec-detail__head[data-v-093a936d]{flex-shrink:0;align-items:center;gap:10px;display:flex}.wb-exec-detail__head .wb-input[data-v-093a936d]{flex:1}.wb-split__header[data-v-093a936d]{flex-shrink:0;align-items:center;gap:10px;display:flex}.wb-mode-switch[data-v-093a936d]{background:var(--bg-subtle);border:1px solid var(--border-color);-webkit-user-select:none;user-select:none;isolation:isolate;border-radius:10px;flex-shrink:0;align-items:stretch;height:32px;padding:3px;display:inline-flex;position:relative}.wb-mode-switch__btn[data-v-093a936d]{z-index:1;appearance:none;letter-spacing:.1px;min-width:64px;color:var(--text-tertiary);cursor:pointer;transition:color .18s var(--ease-custom);background:0 0;border:none;border-radius:7px;justify-content:center;align-items:center;padding:0 14px;font-family:inherit;font-size:12px;font-weight:500;display:inline-flex;position:relative}.wb-mode-switch__btn[data-v-093a936d]:hover:not(.is-active){color:var(--text-secondary)}.wb-mode-switch__btn.is-active[data-v-093a936d]{color:var(--text-primary);font-weight:600}.wb-mode-switch__btn[data-v-093a936d]:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.wb-mode-switch__indicator[data-v-093a936d]{background:var(--bg-container);border:1px solid var(--border-color-medium);width:calc(50% - 3px);box-shadow:var(--shadow-sm), 0 0 0 1px var(--tint-primary-06);transition:transform .22s var(--ease-custom,cubic-bezier(.4, 0, .2, 1));z-index:0;pointer-events:none;border-radius:7px;position:absolute;top:3px;bottom:3px;left:3px}.wb-mode-switch__indicator.is-right[data-v-093a936d]{transform:translate(100%)}@media (prefers-reduced-motion:reduce){.wb-mode-switch__indicator[data-v-093a936d]{transition:none}}.wb-ai-split-btn[data-v-093a936d]{appearance:none;border:1px solid var(--tint-primary-35,color-mix(in srgb, var(--color-primary) 35%, transparent));background:color-mix(in srgb, var(--color-primary) 5%, var(--bg-container));height:32px;color:var(--color-primary);letter-spacing:.1px;cursor:pointer;transition:background .15s var(--ease-custom,ease), border-color .15s var(--ease-custom,ease), color .15s var(--ease-custom,ease), transform .1s var(--ease-custom,ease);border-radius:10px;flex-shrink:0;align-items:center;gap:6px;padding:0 12px;font-family:inherit;font-size:12px;font-weight:600;display:inline-flex}.wb-ai-split-btn[data-v-093a936d]:hover:not(:disabled){background:color-mix(in srgb, var(--color-primary) 12%, var(--bg-container));border-color:var(--color-primary);color:var(--color-primary)}.wb-ai-split-btn[data-v-093a936d]:active:not(:disabled){transform:scale(.98)}.wb-ai-split-btn[data-v-093a936d]:disabled{opacity:.5;cursor:not-allowed;border-color:var(--border-color);color:var(--text-tertiary);background:0 0}.wb-ai-split-btn[data-v-093a936d]:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.wb-ai-split-btn__icon[data-v-093a936d]{transform-origin:50%;flex-shrink:0;animation:2.6s ease-in-out infinite wb-ai-sparkle-pulse-093a936d}@keyframes wb-ai-sparkle-pulse-093a936d{0%,to{opacity:.9;transform:scale(1)}50%{opacity:1;transform:scale(1.12)}}.wb-ai-split-btn:disabled .wb-ai-split-btn__icon[data-v-093a936d]{opacity:.5;animation:none}@media (prefers-reduced-motion:reduce){.wb-ai-split-btn__icon[data-v-093a936d]{animation:none}}.wb-logs-inline-btn[data-v-093a936d]{appearance:none;border:1px solid var(--border-color);background:var(--bg-container);height:32px;color:var(--text-secondary);border-radius:var(--radius-md);cursor:pointer;white-space:nowrap;flex-shrink:0;align-items:center;gap:5px;padding:0 12px;font-size:12.5px;font-weight:500;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.wb-logs-inline-btn[data-v-093a936d]:hover{background:var(--tint-primary-12);color:var(--color-primary);border-color:var(--tint-primary-35)}.wb-logs-inline-btn[data-v-093a936d]:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.wb-logs-inline-btn__icon[data-v-093a936d]{font-size:14px}.wb-input[data-v-093a936d],.wb-select[data-v-093a936d],.wb-textarea[data-v-093a936d]{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-093a936d]::placeholder,.wb-textarea[data-v-093a936d]::placeholder{color:var(--text-placeholder);font-weight:400}.wb-input[data-v-093a936d]{height:36px;font-size:var(--font-size-135);letter-spacing:-.05px;padding:0 12px;line-height:1.2}.wb-input[data-v-093a936d]:hover:not(:focus){border-color:var(--border-input-hover,#cbd5e1);background:var(--bg-container-hover)}.wb-input[data-v-093a936d]: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-093a936d]{letter-spacing:-.4px;border-color:var(--border-color);height:36px;box-shadow:none;background:0 0;flex:1;padding:0 12px;font-size:14px;font-weight:600}.wb-input--title[data-v-093a936d]:hover:not(:focus){border-color:var(--border-color-medium);background:var(--bg-container)}.wb-input--title[data-v-093a936d]: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-093a936d]::placeholder{color:var(--text-placeholder);font-weight:500}.wb-select[data-v-093a936d]{cursor:pointer;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path d='M3 4.5l3 3 3-3' fill='none' stroke='%236b7280' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/></svg>");background-position:right 10px center;background-repeat:no-repeat;background-size:12px 12px;flex-shrink:0;min-width:168px;height:36px;padding:0 32px 0 12px;font-size:13px;font-weight:500}.wb-select[data-v-093a936d]:hover:not(:focus){border-color:var(--border-input-hover,#cbd5e1);background-color:var(--bg-container-hover)}.wb-select[data-v-093a936d]:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--tint-primary-18)}.wb-textarea[data-v-093a936d]{letter-spacing:-.05px;resize:vertical;box-sizing:border-box;width:100%;min-height:52px;box-shadow:none;border-color:var(--border-color);background:0 0;flex-shrink:0;padding:10px 14px;font-size:13px;line-height:1.55;display:block}.wb-textarea[data-v-093a936d]::placeholder{color:var(--text-placeholder);line-height:1.55}.wb-textarea[data-v-093a936d]:hover:not(:focus){border-color:var(--border-color-medium);background:var(--bg-container)}.wb-textarea[data-v-093a936d]:focus{border-color:var(--color-primary);background:var(--bg-container);box-shadow:0 0 0 3px var(--tint-primary-14)}.wb-textarea--sm[data-v-093a936d]{min-height:44px;padding:8px 12px;font-size:13px}.wb-split__sub-header[data-v-093a936d]{flex-shrink:0;justify-content:space-between;align-items:center;margin-top:8px;display:flex}.wb-split__sub-header h4[data-v-093a936d]{color:var(--text-secondary);margin:0;font-size:13px;font-weight:600}.wb-split__sub-actions[data-v-093a936d]{align-items:center;gap:8px;display:inline-flex}.wb-simple__header[data-v-093a936d]{border-left:2px solid var(--color-primary);flex-shrink:0;align-items:baseline;gap:10px;margin-top:8px;padding-left:8px;display:flex}.wb-simple__header h4[data-v-093a936d]{color:var(--text-primary);letter-spacing:-.05px;margin:0;font-size:13px;font-weight:600}.wb-simple__hint[data-v-093a936d]{font-size:var(--font-size-115);color:var(--text-tertiary)}.wb-simple__status-row[data-v-093a936d]{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:8px;margin-top:2px;display:flex}.wb-simple__status[data-v-093a936d]{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-093a936d]{border-radius:50%}.wb-simple__status-dot[data-v-093a936d]{display:none}.wb-exec-sub-item.is-running .wb-simple__status[data-v-093a936d]{animation:1.4s ease-in-out infinite wb-status-dot-pulse-093a936d;box-shadow:0 0 6px #ffffffb3}.wb-simple__status-text[data-v-093a936d]{display:none}.wb-simple__meta[data-v-093a936d]{font-size:var(--font-size-115);color:var(--text-tertiary);letter-spacing:-.05px;text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.wb-simple__meta--error[data-v-093a936d]{color:var(--color-danger)}.wb-simple__status[style*=--text-tertiary] .wb-simple__status-dot[data-v-093a936d]{background:var(--text-tertiary)}.wb-simple__stop[data-v-093a936d]{border-radius:var(--radius-sm);border:1px solid var(--color-danger-bright);color:var(--color-danger-bright);font-size:var(--font-size-115);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-093a936d]:hover:not(:disabled){background:var(--color-danger-bright);color:#fff}.wb-simple__stop[data-v-093a936d]:disabled{opacity:.45;cursor:not-allowed}.wb-simple__override[data-v-093a936d]{border-radius:var(--radius-md)}.wb-simple__override>.wb-textarea[data-v-093a936d]{margin-top:8px}.wb-simple__override-summary[data-v-093a936d]{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:4px 0;list-style:none;display:flex}.wb-simple__override-summary[data-v-093a936d]::-webkit-details-marker{display:none}.wb-simple__override-caret[data-v-093a936d]{color:var(--text-tertiary);transition:transform var(--transition-fast) var(--ease-custom);font-size:12px}.wb-simple__override[open]>.wb-simple__override-summary .wb-simple__override-caret[data-v-093a936d]{color:var(--color-primary);transform:rotate(90deg)}.wb-simple__override.has-content>.wb-simple__override-summary[data-v-093a936d]{color:var(--text-primary)}.wb-simple__override-tag[data-v-093a936d]{background:var(--tint-primary-12,color-mix(in srgb, var(--color-primary) 12%, transparent));color:var(--color-primary);letter-spacing:.2px;border-radius:8px;padding:1px 6px;font-size:10px;font-weight:600}.wb-form-item[data-v-093a936d]{flex-direction:column;flex-shrink:0;gap:6px;display:flex}.wb-form-item__label[data-v-093a936d]{color:var(--text-secondary);letter-spacing:-.05px;font-size:12px;font-weight:500}.wb-sub-list[data-v-093a936d]{flex-direction:column;flex:1;gap:8px;min-height:0;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.wb-sub-item[data-v-093a936d]{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-md);max-height:min(70vh,720px);padding:10px;transition:border-color .15s,box-shadow .15s;position:relative;overflow:auto}.wb-sub-item.is-dirty[data-v-093a936d]{border-color:var(--tint-warning-45);background:var(--tint-warning-04)}.wb-sub-item.is-running[data-v-093a936d]{border-color:var(--tint-primary-55);background:linear-gradient(135deg, color-mix(in srgb, var(--color-primary) 6%, var(--bg-surface)) 0%, var(--bg-surface) 60%);box-shadow:0 0 0 1px var(--tint-primary-30), 0 4px 18px -4px color-mix(in srgb, var(--color-primary) 25%, transparent);animation:2.4s ease-in-out infinite wb-card-glow-093a936d}.wb-sub-item.is-running[data-v-093a936d]:before{content:"";background:linear-gradient(90deg, transparent 0%, var(--color-primary) 50%, transparent 100%);pointer-events:none;z-index:1;background-repeat:no-repeat;background-size:50% 100%;height:2px;animation:1.6s ease-in-out infinite wb-progress-slide-093a936d;position:absolute;top:0;left:0;right:0}.wb-sub-item.is-running[data-v-093a936d]:after{content:"";border-radius:inherit;background:linear-gradient(90deg, transparent 0%, var(--tint-primary-10) 50%, transparent 100%);pointer-events:none;opacity:.5;background-size:200% 100%;animation:3.2s linear infinite wb-card-sweep-093a936d;position:absolute;inset:0}@keyframes wb-progress-slide-093a936d{0%{background-position:-50% 0}to{background-position:150% 0}}@keyframes wb-card-glow-093a936d{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-093a936d{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.wb-sub-item.is-running[data-v-093a936d],.wb-sub-item.is-running[data-v-093a936d]:before,.wb-sub-item.is-running[data-v-093a936d]:after{animation:none}}.wb-sub-item__dirty[data-v-093a936d]{color:var(--color-warning-dark,#b45309);background:var(--tint-warning-14);letter-spacing:.2px;border-radius:8px;flex-shrink:0;align-items:center;gap:3px;padding:2px 7px;font-size:10px;font-weight:600;display:inline-flex}.wb-sub-item__dirty[data-v-093a936d]:before{content:"";background:var(--color-warning);border-radius:50%;width:5px;height:5px;display:inline-block}.wb-dirty-badge[data-v-093a936d]{color:#fff;background:var(--color-danger);vertical-align:middle;border-radius:8px;justify-content:center;align-items:center;min-width:16px;height:16px;margin-left:6px;padding:0 5px;font-size:10px;font-weight:700;line-height:1;display:inline-flex}.wb-sub-item__row[data-v-093a936d]{cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:var(--radius-sm,4px);transition:background var(--transition-fast) var(--ease-custom), box-shadow var(--transition-fast) var(--ease-custom);align-items:center;gap:8px;margin-bottom:6px;margin-left:-6px;margin-right:-6px;padding:4px 6px;display:flex}.wb-sub-item__row[data-v-093a936d]:hover{background:var(--bg-container-hover);box-shadow:inset 0 0 0 1px var(--tint-primary-12,transparent)}.wb-sub-item__row:hover .wb-sub-item__toggle[data-v-093a936d],.wb-sub-item__row:hover .wb-sub-item__undo[data-v-093a936d],.wb-sub-item__row:hover .wb-sub-item__del[data-v-093a936d],.wb-sub-item__row:hover .wb-sub-item__run[data-v-093a936d],.wb-sub-item__row:hover .wb-sub-item__stop[data-v-093a936d]{z-index:1;position:relative}.wb-sub-item__row[data-v-093a936d]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset);border-radius:var(--radius-sm,4px)}.wb-sub-item__row--compact[data-v-093a936d]{cursor:pointer;gap:6px;margin-bottom:0}.wb-sub-item__title-compact[data-v-093a936d]{min-width:0;color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;letter-spacing:-.05px;text-decoration:line-through;-webkit-text-decoration-color:var(--border-color);text-decoration-color:var(--border-color);flex:1;font-size:13px;font-weight:500;line-height:1.3;text-decoration-thickness:1px;overflow:hidden}.wb-sub-item__toggle[data-v-093a936d]{border:1px solid var(--border-color-medium);background:var(--bg-container);color:var(--text-tertiary);border-radius:var(--radius-sm,4px);cursor:pointer;width:28px;height:28px;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;justify-content:center;align-items:center;font-size:12px;display:inline-flex}.wb-sub-item__toggle .el-icon[data-v-093a936d]{transition:transform var(--transition-base,.2s) var(--ease-custom);display:inline-flex}.wb-sub-item__toggle:hover .el-icon[data-v-093a936d]{transform:scale(1.12)}.wb-sub-item__toggle[data-v-093a936d]:hover{background:var(--bg-container-hover);border-color:var(--color-primary);color:var(--color-primary)}.wb-sub-item__toggle[data-v-093a936d]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset)}.wb-sub-item__undo[data-v-093a936d]{border:1px solid var(--tint-primary-35);background:color-mix(in srgb, var(--color-primary) 6%, var(--bg-container));color:var(--color-primary);letter-spacing:.1px;border-radius:var(--radius-sm,4px);cursor:pointer;height:28px;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;padding:0 10px;font-size:11px;font-weight:600}.wb-sub-item__undo[data-v-093a936d]:hover{background:color-mix(in srgb, var(--color-primary) 14%, var(--bg-container));border-color:var(--color-primary);color:var(--color-primary-dark,var(--color-primary))}.wb-sub-item__undo[data-v-093a936d]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset)}.wb-sub-item__toggle[data-v-093a936d]:disabled,.wb-sub-item__undo[data-v-093a936d]:disabled,.wb-sub-item__del[data-v-093a936d]:disabled,.wb-sub-item__run[data-v-093a936d]:disabled,.wb-sub-item__stop[data-v-093a936d]:disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.wb-sub-item.is-done[data-v-093a936d]:not(.is-running){border-color:var(--tint-success-30);background:var(--tint-success-04)}.wb-sub-item.is-done.is-collapsed[data-v-093a936d]{padding:8px 10px}.wb-sub-item__status[data-v-093a936d]{color:#fff;letter-spacing:.2px;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;gap:5px;width:8px;height:8px;padding:0;font-size:11px;font-weight:600;display:inline-flex;position:relative;overflow:hidden}.wb-sub-item__status--dot[data-v-093a936d]{border-radius:50%}.wb-sub-item__status[style*=--bg-subtle][data-v-093a936d]{color:var(--text-secondary)}.wb-sub-item__status[style*=--bg-subtle] .wb-simple__status-dot[data-v-093a936d]{background:var(--text-tertiary)}.wb-sub-item.is-running .wb-sub-item__status[data-v-093a936d],.wb-exec-sub-item.is-running .wb-sub-item__status[data-v-093a936d]{animation:1.4s ease-in-out infinite wb-status-dot-pulse-093a936d;box-shadow:0 0 6px #fff9}.wb-sub-item.is-running .wb-sub-item__status[data-v-093a936d]:before,.wb-sub-item.is-running .wb-sub-item__status[data-v-093a936d]:after,.wb-exec-sub-item.is-running .wb-sub-item__status[data-v-093a936d]:before,.wb-exec-sub-item.is-running .wb-sub-item__status[data-v-093a936d]:after{content:none}.wb-sub-item.is-running[data-v-093a936d],.wb-exec-sub-item.is-running[data-v-093a936d]{border-color:var(--color-primary);background:linear-gradient(90deg, transparent 0%, var(--tint-primary-18) 50%, transparent 100%) var(--tint-primary-04);box-shadow:0 0 0 1px var(--tint-primary-45), 0 0 12px var(--tint-primary-25);background-size:200% 100%;animation:2.4s linear infinite wb-border-shimmer-093a936d;position:relative}@keyframes wb-border-shimmer-093a936d{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes wb-status-dot-pulse-093a936d{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-093a936d{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.7)}}@media (prefers-reduced-motion:reduce){.wb-sub-item.is-running[data-v-093a936d],.wb-exec-sub-item.is-running[data-v-093a936d],.wb-sub-item.is-running .wb-sub-item__status[data-v-093a936d],.wb-exec-sub-item.is-running .wb-sub-item__status[data-v-093a936d],.wb-sub-item.is-running .wb-sub-item__status[data-v-093a936d]:before,.wb-sub-item.is-running .wb-sub-item__status[data-v-093a936d]:after,.wb-exec-sub-item.is-running .wb-sub-item__status[data-v-093a936d]:before,.wb-exec-sub-item.is-running .wb-sub-item__status[data-v-093a936d]:after,.wb-exec-sub-item.is-running .wb-simple__status-dot[data-v-093a936d]{animation:none}.wb-sub-item__toggle .el-icon[data-v-093a936d],.wb-sub-item__row[data-v-093a936d],.wb-sub-expand-enter-active[data-v-093a936d],.wb-sub-expand-leave-active[data-v-093a936d]{transition:none}}.wb-sub-expand-enter-active[data-v-093a936d],.wb-sub-expand-leave-active[data-v-093a936d]{transition:grid-template-rows var(--transition-base,.22s) var(--ease-custom), opacity var(--transition-fast) var(--ease-custom);overflow:hidden}.wb-sub-expand-enter-from[data-v-093a936d],.wb-sub-expand-leave-to[data-v-093a936d]{opacity:0;grid-template-rows:0fr}.wb-sub-expand-enter-to[data-v-093a936d],.wb-sub-expand-leave-from[data-v-093a936d]{opacity:1;grid-template-rows:1fr}.wb-sub-expand-inner[data-v-093a936d]{min-height:0;overflow:hidden}.wb-sub-item__pid[data-v-093a936d]{color:var(--text-tertiary);flex-shrink:0;font-family:ui-monospace,monospace;font-size:11px}.wb-sub-item__stop[data-v-093a936d]{border:1px solid var(--tint-danger-50);background:var(--tint-danger-08);color:var(--color-danger-bright,#ef4444);border-radius:var(--radius-sm,4px);cursor:pointer;flex-shrink:0;height:28px;padding:2px 10px;font-size:11px;font-weight:600;transition:background .15s,color .15s}.wb-sub-item__stop[data-v-093a936d]:hover{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.wb-sub-item__run[data-v-093a936d]{border:1px solid var(--color-primary);background:var(--color-primary);color:#fff;border-radius:var(--radius-sm,4px);cursor:pointer;flex-shrink:0;height:28px;padding:2px 10px;font-size:11px;font-weight:600;transition:opacity .15s,filter .15s}.wb-sub-item__run[data-v-093a936d]:hover{opacity:.88;filter:brightness(1.05)}.wb-sub-item__row .wb-input[data-v-093a936d]{flex:1}.wb-task-group__head[data-v-093a936d]{color:var(--text-tertiary);letter-spacing:.3px;text-transform:uppercase;border-top:1px dashed var(--border-color);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:var(--radius-sm);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-size:11px;font-weight:600;display:flex}.wb-task-group__head[data-v-093a936d]:first-child{border-top:none;margin-top:0;padding-top:4px}.wb-task-group__head[data-v-093a936d]:hover{background:var(--tint-primary-08);color:var(--text-secondary)}.wb-task-group__head[data-v-093a936d]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset)}.wb-task-group__head.is-current[data-v-093a936d]{color:var(--color-primary);border-top-color:var(--tint-primary-30)}.wb-task-group__head.is-collapsed[data-v-093a936d]{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-093a936d]{background:color-mix(in srgb, var(--color-primary) 8%, var(--bg-subtle))}.wb-task-group__caret[data-v-093a936d]{opacity:.75;transition:transform var(--transition-fast) var(--ease-custom);flex-shrink:0;font-size:11px}.wb-task-group__icon[data-v-093a936d]{opacity:.8;flex-shrink:0;font-size:12px}.wb-task-group__name[data-v-093a936d]{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.wb-task-group__count[data-v-093a936d]{min-width:18px}.wb-task-group__head.is-current .wb-task-group__count[data-v-093a936d]{background:var(--tint-primary-16,color-mix(in srgb, var(--color-primary) 16%, transparent));color:var(--color-primary)}.wb-meta-save[data-v-093a936d]{letter-spacing:.1px;border:1px solid var(--border-color-medium);background:var(--bg-container);height:24px;color:var(--text-tertiary);-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);border-radius:12px;flex-shrink:0;align-items:center;gap:5px;padding:0 10px;font-size:11px;font-weight:600;display:inline-flex}.wb-meta-save__dot[data-v-093a936d]{opacity:.85;background:currentColor;border-radius:50%;width:6px;height:6px;display:inline-block}.wb-meta-save__check[data-v-093a936d]{font-size:12px;line-height:1}.wb-meta-save__bang[data-v-093a936d]{color:#fff;background:currentColor;border-radius:50%;justify-content:center;align-items:center;width:12px;height:12px;font-size:9px;font-weight:800;line-height:1;display:inline-flex}.wb-meta-save.is-saving[data-v-093a936d]{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-093a936d]{animation:1.2s ease-in-out infinite wb-meta-pulse-093a936d}.wb-meta-save.is-saved[data-v-093a936d]{color:var(--color-success-dark,#047857);border-color:var(--tint-success-35);background:var(--tint-success-08)}.wb-meta-save.is-dirty[data-v-093a936d]{color:var(--color-warning-dark,#b45309);border-color:var(--tint-warning-45);background:var(--tint-warning-06)}.wb-meta-save.is-error[data-v-093a936d]{color:var(--color-danger-dark,#b91c1c);border-color:var(--tint-danger-45);background:var(--tint-danger-06)}@keyframes wb-meta-pulse-093a936d{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-093a936d]{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}