zen-gitsync 2.17.32 → 2.17.33

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 (51) hide show
  1. package/README.md +8 -0
  2. package/package.json +8 -1
  3. package/src/ui/public/assets/{AgentEngineSelector-CPS9WawU.js → AgentEngineSelector-CGrUh2kD.js} +1 -1
  4. package/src/ui/public/assets/{AgentView-CHj8Esf5.js → AgentView-BRC3kn-3.js} +1 -1
  5. package/src/ui/public/assets/{AppVersionBadge-CbYQ0KFm.js → AppVersionBadge-BR_ZX6Oq.js} +2 -2
  6. package/src/ui/public/assets/{BranchSelector-i_DZoGr4.js → BranchSelector-C77-aizC.js} +1 -1
  7. package/src/ui/public/assets/{CommitForm-C-cL8_vz.css → CommitForm-BbgIoF4h.css} +1 -1
  8. package/src/ui/public/assets/CommitForm-C6qTIW0T.js +6 -0
  9. package/src/ui/public/assets/{CommonDialog-Nwwi4-_9.js → CommonDialog-kDck8ITZ.js} +1 -1
  10. package/src/ui/public/assets/{EditorView-Cj7r5oIY.js → EditorView-DNZXnJnc.js} +1 -1
  11. package/src/ui/public/assets/{FileDiffViewer-2vvvRZ_R.js → FileDiffViewer-BxFkqvIA.js} +1 -1
  12. package/src/ui/public/assets/{FlowExecutionViewer-STZphigj.js → FlowExecutionViewer-DDkb05TW.js} +1 -1
  13. package/src/ui/public/assets/{FlowOrchestrationWorkspace-BdW1MijZ.js → FlowOrchestrationWorkspace-BiHGQE0o.js} +1 -1
  14. package/src/ui/public/assets/{IconButton-BuiJBsJ3.js → IconButton-BflzboUD.js} +1 -1
  15. package/src/ui/public/assets/{LogList-C14b7EUJ.js → LogList-DHfr-rPz.js} +1 -1
  16. package/src/ui/public/assets/{MindmapView-dcm1kcrO.js → MindmapView-7u02tj5n.js} +1 -1
  17. package/src/ui/public/assets/{MonitorView-7SOXc-I2.js → MonitorView-cdUkh4VE.js} +1 -1
  18. package/src/ui/public/assets/{ProjectStartupButton-BM2RrBbL.js → ProjectStartupButton-B9KAavAO.js} +1 -1
  19. package/src/ui/public/assets/{RecentDirectoriesChat-CXxGKkqI.js → RecentDirectoriesChat-DQ9phSSJ.js} +1 -1
  20. package/src/ui/public/assets/{RemoteManagerDialog-BTtVeges.js → RemoteManagerDialog-CgnM1ndZ.js} +1 -1
  21. package/src/ui/public/assets/{RemoteRepoCard-B0n8k5Go.js → RemoteRepoCard-BDAvJcFk.js} +1 -1
  22. package/src/ui/public/assets/{SourceMapView-CT2C3tAc.js → SourceMapView-BEAC-dHC.js} +1 -1
  23. package/src/ui/public/assets/{SvgIcon-U-AI95UV.js → SvgIcon-B-2iTLW-.js} +1 -1
  24. package/src/ui/public/assets/{TemplateManager-BIMeoTp0.js → TemplateManager-CYy3G7rH.js} +1 -1
  25. package/src/ui/public/assets/{UserInputNode-D_V8dhh9.js → UserInputNode-DIX4shBD.js} +1 -1
  26. package/src/ui/public/assets/WorkbenchView-BAko4SjJ.js +20 -0
  27. package/src/ui/public/assets/WorkbenchView-DWQChnqF.css +1 -0
  28. package/src/ui/public/assets/{_plugin-vue_export-helper-DkeTtFKF.js → _plugin-vue_export-helper-D8rwCQpe.js} +6 -6
  29. package/src/ui/public/assets/{agentConversations-B2aTliJe.js → agentConversations-C0WoSH0y.js} +1 -1
  30. package/src/ui/public/assets/{configStore-Y1biBqmb.js → configStore-BFGSfIBp.js} +1 -1
  31. package/src/ui/public/assets/{gitStore-CiBz68_Z.js → gitStore-BcrFZogC.js} +1 -1
  32. package/src/ui/public/assets/index-BCTkDpQv.css +1 -0
  33. package/src/ui/public/assets/{index-BoZNUwmd.js → index-aNSr4k87.js} +10 -10
  34. package/src/ui/public/assets/{previewSandbox-D7HcNin7.js → previewSandbox-C_ZzCEpS.js} +1 -1
  35. package/src/ui/public/assets/{toolsStore-Dhfr-VDL.js → toolsStore-B3LQrSEp.js} +1 -1
  36. package/src/ui/public/index.html +12 -12
  37. package/src/ui/server/routes/workbench/index.js +182 -18
  38. package/src/ui/server/routes/workbench/jobActivity.js +18 -6
  39. package/src/ui/server/routes/workbench/liveJobs.js +7 -1
  40. package/src/ui/server/routes/workbench/llmClient.js +20 -4
  41. package/src/ui/server/routes/workbench/progressReport.js +6 -0
  42. package/src/ui/server/routes/workbench/projectRegistry.js +58 -2
  43. package/src/ui/server/routes/workbench/projectRegistry.test.js +51 -0
  44. package/src/ui/server/routes/workbench/stallWatchdog.js +330 -0
  45. package/src/ui/server/routes/workbench/stallWatchdog.test.js +356 -0
  46. package/src/ui/server/utils/directoryGitState.js +41 -1
  47. package/src/ui/server/utils/directoryGitState.test.js +91 -0
  48. package/src/ui/public/assets/CommitForm-DrAhqXPt.js +0 -6
  49. package/src/ui/public/assets/WorkbenchView-BeC5sg_V.css +0 -1
  50. package/src/ui/public/assets/WorkbenchView-C74ciC03.js +0 -20
  51. package/src/ui/public/assets/index-BrIl1iaG.css +0 -1
package/README.md CHANGED
@@ -63,6 +63,7 @@ npm install -g zen-gitsync
63
63
  - **Skill / MCP marketplace** — install skills and MCP servers from the Agent view into the current project or the `g ai` agent
64
64
  - **Reset to remote** — One-click `git reset --hard origin/<branch>` from the Git panel (auto-refreshes branch info first to avoid wrong-target resets)
65
65
  - **AI commit message** — Generate commit message from staged diff automatically
66
+ - **AI commit & push** — One click does the whole loop: AI writes the commit message from the diff, then stages → commits → pushes (no need to type a message first)
66
67
  - **Selection-scoped diff** — AI commit message and quick commit/push use only the diff of currently selected files when the Git view is the active tab
67
68
  - **Commit templates** — Save type/scope/description/message templates
68
69
  - **Theme & language** — Light/dark theme and Chinese/English UI; one-click theme toggle in the header (no need to dig into settings)
@@ -151,6 +152,7 @@ The GUI runs as a local web server and opens in your default browser on the firs
151
152
  | AI commit message | Generate commit message from staged diff using an AI model |
152
153
  | Push | Push to remote with live progress modal |
153
154
  | Quick commit+push | One-click stage → commit → push |
155
+ | AI commit & push | One-click **AI writes the message → stage → commit → push** (form is filled in first, so you can see what was committed). When the branch is already committed and only needs pushing, AI is skipped and it pushes directly |
154
156
  | Pull / Fetch | Pull from or fetch the upstream branch |
155
157
  | Reset to remote | One-click `git reset --hard origin/<branch>`; auto-refreshes branch info first to avoid stale-branch targets; hidden when working tree is clean and no unpushed commits |
156
158
  | Merge | Merge another branch; detects and surfaces in-progress merge state |
@@ -382,6 +384,8 @@ A dedicated view for running coding agents across one or many projects. Every ta
382
384
  | Master-agent console | Give the master agent an instruction and it dispatches a new task, deciding the target project itself (or honouring the project you selected). Enter dispatches, Shift+Enter starts a new line. Dispatching can be paused and resumed — while paused, a dispatch creates the task without running it |
383
385
  | Card after a run | A card in Done no longer stops at its title and timestamp: it keeps a short excerpt of the last thing the agent said — the tail of the newest run's reply, flattened to one line and capped at 100 characters. This is the case it was built for: a run often ends by asking you something ("shall I push?"), so a task sitting in Done may still be waiting on your answer, and the only way to find out used to be opening the editor and reading the log. The executor's brand icon sits at the head of that excerpt — the line is what **it** said, so the icon that says which CLI said it belongs there rather than somewhere else on the card. A task that is still running keeps showing the live block instead (the two are mutually exclusive), a run that wrote no body text leaves this line out entirely rather than borrowing an earlier run's words, and the full excerpt is in the hover tooltip; the table view carries the same line under the task name. Executor icons are drawn only when the executor is actually known — a run recorded before the `agent` field existed, or one whose value this build does not recognise, gets no icon rather than a guessed brand (in the table view, icons appear on the status line for a running task and on the last-reply line for a finished one) |
384
386
  | Progress report | The console's **Instruction** pane reports where your running tasks actually stand instead of listing what was dispatched and what finished (the board already shows that). The master agent reads each running job — elapsed time, **its latest thinking**, **what mix of tools it has been calling**, **how long it has been silent**, and the latest output — and writes a short paragraph per report: what each task is doing, how far it has got, and whether it looks stuck. Each report also carries a **progress bar**: the model is asked for its own estimate of overall progress plus one figure per task, and those numbers are drawn as bars labelled **AI estimate** (hover says what the guess is based on). It is an estimate, not a measurement — and when the model declines to give a number, the bar is simply not drawn instead of defaulting to 0%. The thinking line is what makes this work for tasks that never write a line of prose (they are the common case — their output stays empty from start to finish); "looks stuck" now has to come with evidence — a silence figure, or a tool mix going in circles — instead of being inferred from a high call count. Reports appear on an interval you pick (5 / 10 / 15 / 30 / 60 minutes, or off) or whenever you hit **Report now**, and the newest one is shown with the facts behind it (project, elapsed, tool mix, latest thinking, last tool call, silence) while earlier ones stay browsable from the history list. Automatic reports are generated **server-side**, so the history keeps filling up while the tab is closed and is waiting for you when you come back. Nothing running means nothing filed: automatic reports are skipped outright, and **Report now** answers with a plain "no task is running right now" rather than filing an empty entry (no empty entries, no wasted model call), while two identical reports arriving seconds apart are collapsed into one so a double click leaves no duplicate. The paragraph is written in the UI language and, when a task's output is inconclusive, it says so rather than inventing progress |
387
+ | Silent wrap-up | When a run has been silent for more than **10 minutes** (no prose, no thinking, no tool call) the console asks the master agent to read the facts it has — latest thinking, the last thing it said, the tool mix — and decide whether it **has finished** or is still working / stuck. A "finished" verdict settles that run: the card moves from In progress to Done, with an **AI marked done** chip under the elapsed time whose tooltip carries the model's reasoning. When the evidence is thin it does nothing at all (it only books the check, waits another 10 minutes, and asks at most 3 times per run) — not acting beats marking a running task as done. It changes the record, never the process: killing a hung process stays the job of the **Stop** button on the card. Only runs owned by **this instance** are judged — a task started in another `g ui` window is settled by that window |
388
+ | Marking a task done by hand | The columns are derived from execution facts, which cannot express the two things only you know: a task sitting in **Todo** that was really finished somewhere else, and an **In progress** task whose model has gone quiet while you can see the work is done. Both cards now hover out a **Done** button next to **Run** / **Stop**, and a card that got into Done *by hand* trades it for **Undo**. A card that finished on its own keeps showing neither — undoing a mark it never had would do nothing at all. Marking a still-running task done asks first and stops that run as part of the same action (a card cannot be Done and running at once), which holds across windows too: if the job lives in another `g ui` instance the server refuses with that very reason instead of pretending. The mark is stored on the task rather than faked as a run record, and a later run of that task supersedes it, so the card goes back to following the facts. Undo is one click with no confirmation — it is the "I clicked the wrong one" path — and hands the card back to the execution facts, which is why it is offered only where the mark is what keeps the card in Done |
385
389
  | Dispatch default prompts | Give every dispatch a standing prompt: one **global** entry that applies to all projects, plus one **per project** that is appended after it whenever you dispatch to that project (it supplements the global one rather than replacing it). Both are edited from the gear button in the console's composer; the combined text is prepended to the instruction, a "Default prompt (global + this project)" checkbox appears next to **Run now** so a single dispatch can opt out, and the instruction log records which level was attached. The prompt is copied onto the task at dispatch time, so editing the setting later never rewrites tasks that already exist; it lands in the task's own prompt field, where you can still edit it per task |
386
390
  | Open-with menu per project | Hovering a project row in the board's project list reveals two buttons: **Open folder** (straight to your file manager) and **Open with**, a menu holding file manager / terminal / `g ui` in a new tab plus every editor and AI tool (VS Code, Codex, OpenCode, Kimi Code, ZCode, DeepSeek Harness, and Claude Code in default or fully-approved mode). Tools that are not installed are dimmed and labelled "Not installed" — clicking one opens the very same install guide the top bar uses. Every action applies to that row's project only; the board's selection is never touched |
387
391
  | Task editor overlay | Clicking a board card opens the editor as an overlay: a flat sidebar holding the task list and prompt presets, then the task header, preset selector, executor split-button, the copy-execution / execution-log / clear-execution actions, and a chat-style execution body. The description collapses into a one-line "Task description (optional)" summary until clicked, showing a "Filled" badge and the attachment count once there is content. Opening the overlay lands the conversation on its **newest** turn rather than its first: the flow keeps re-pinning to the bottom while markdown highlighting and tool-call folding are still growing it after mount, and lets go as soon as you scroll yourself |
@@ -714,6 +718,7 @@ npm install -g zen-gitsync
714
718
  - **Skill / MCP 广场** — 在智能体页把 Skill 与 MCP 服务安装到当前项目或 `g ai` 智能体
715
719
  - **重置到远程** — 在 Git 面板一键执行 `git reset --hard origin/<branch>`(点击前会先自动刷新分支信息,避免重置到陈旧分支)
716
720
  - **AI 生成提交信息** — 基于 staged diff 自动生成提交消息
721
+ - **AI 提交并推送** — 一键跑完整条链路:AI 从 diff 写好提交信息 → 暂存 → 提交 → 推送(不必先自己敲一条提交信息)
717
722
  - **选择模式差异** — 当 Git 视图为当前激活标签时,AI 生成提交信息与一键提交/推送仅作用于当前勾选文件的 diff
718
723
  - **提交模板** — 保存类型/范围/描述/完整提交信息模板
719
724
  - **主题与语言** — 支持明/暗主题,中英文界面切换;header 一键切换主题(无需进入设置)
@@ -833,6 +838,7 @@ $ ZEN_ALLOWED_ORIGINS="https://zen.example.com,http://10.0.0.5:8080" g ui
833
838
  | AI 生成提交信息 | 基于 staged diff 自动生成提交消息 |
834
839
  | 推送 | 推送到远程,实时显示进度弹窗 |
835
840
  | 快速提交+推送 | 一键完成暂存 → 提交 → 推送 |
841
+ | AI 提交并推送 | 一键完成 **AI 写提交信息 → 暂存 → 提交 → 推送**(信息会先填进表单,能看见到底提了什么)。本地已提交、只差推送时跳过 AI 直接推 |
836
842
  | 拉取 / Fetch | 从上游拉取或仅获取远程信息 |
837
843
  | 重置到远程 | 一键执行 `git reset --hard origin/<branch>`;点击前会先刷新分支信息,避免重置到陈旧分支;当工作区干净且无未推送提交时按钮自动隐藏 |
838
844
  | 合并 | 合并其他分支,自动检测并引导处理合并中间状态 |
@@ -1064,6 +1070,8 @@ Activity Bar 第四个视图,在 GUI 内直接浏览并编辑项目文件:
1064
1070
  | 跑完卡片 | 「已完成」列的卡片不再只有标题和时间:它留下一小段**智能体最后说的话** —— 最近一轮执行的正文尾部,压平成一句话、最多 100 字。这条最有用的时候正是它被做出来的理由:一次执行常常以反问收尾(「要 push 吗?」),标着"已完成"的任务其实在等你回一句话,而以前只有点进编辑器翻日志才知道。**执行器的品牌图标就挂在这段摘录的开头** —— 这句话是"它"说的,图标说的是哪个 CLI 说的,放在这里比放在卡片别处更直接。正在跑的任务仍然走上面那块活动区(两者互斥);那次执行没写正文时这段整块不渲染,不拿上一轮的旧话顶;完整摘录在悬停提示里。表格视图的任务名下方同样有这一行。图标只在**执行器认得出来**时才画:加 `agent` 字段之前跑的记录、或值不在已知执行器里的,一律不画,而不是猜一个品牌显示(表格视图里,正在跑的任务图标在状态摘要行、跑完的在最后回复行) |
1065
1071
  | 主 Agent 控制台 | 两种工作方式,拨片切换、选择记在浏览器里:**对话** —— 直接跟内置 g ai 聊,由它按需把活派给某个项目(可多轮、可先问清再派);**指令** —— 你自己写一句话,落点由主 Agent 判断(或遵从此前选中的项目),Enter 派发、Shift+Enter 换行。两种方式落到**同一条派发链路与同一条指令流水**,差别只在"谁决定派什么"。调度可暂停 / 恢复,暂停期间派发只建任务不执行 |
1066
1072
  | 进度报告 | 「指令」模式下这块报的是**正在跑的任务现在到哪一步了**,而不是"谁派发了、谁完成了"(那些看板本身就能看出来)。主 Agent 会读一遍每个在跑的 job —— 已运行多久、**最近在想什么**、**最近 20 次都在调哪类工具**、**已经多久没动静**、最近一行输出 —— 写一段汇报:每个任务在做什么、走到哪一步、有没有卡住的迹象。每次汇报还带一条**进度条**:模型在正文之前先交它自己估的整体进度与每个任务各自的百分比,界面把它们画成条并标上「AI 估计」(悬停说明这个数字是怎么估出来的)。它是估计不是实测 —— 模型不肯给数字时不画那条,不会拿一个 0% 糊弄过去。**思考那一行是关键**:一句正文都不写的任务才是常态(它们的输出从头到尾是空的),只看输出就只能写"看不出来";而"是不是卡住了"现在必须给依据(静默时长、或工具分布是不是在原地打转),不许因为调用次数多就暗示卡住。报告按你设的间隔自动生成(5 / 10 / 15 / 30 / 60 分钟,也可以关掉),也能随时点「立即报告」;面板上展示最新那份及其依据(项目、已运行时长、工具分布、最近思考、最近一次工具调用、静默时长),更早的从下方历史列表里点开回看。自动报告由**服务端**定时产生,所以标签页关着也照样攒历史,回来就能看到;**没有任务在跑就不记条目** —— 自动报告直接跳过,「立即报告」改成回你一句"当前没有正在执行的任务"(都不白调一次模型);间隔内内容一样的两份也不重复落盘,连点两下只留一条。汇报按界面语言生成,输出看不出进度时会直说,而不是编一段像模像样的进展 |
1073
+ | 静默收尾 | 一条任务静默超过 **10 分钟**(没有正文、没有思考、也没有工具调用)时,编排台会让主 Agent 读一遍它手上的事实 —— 最近在想什么、最后说了什么、工具分布长什么样 —— 判断它是**已经做完了**,还是还在干活 / 卡住了。判成做完就把这一轮落成终态:卡片从「进行中」挪到「已完成」,并在用时下面标一枚 **AI 判定完成**,悬停看模型给的依据。判据不足时**什么都不做**(只记一笔,等下一个 10 分钟再问,同一条最多问 3 次)—— 不动手,好过把还在跑的任务标成完成。它只改记录、**不动进程**:真要把挂住的进程收掉,仍然是卡片上那个「停止」。只判**本实例**跑的任务 —— 别的 `g ui` 窗口里派出去的那条,由那个窗口自己收尾 |
1074
+ | 手动标记完成 | 列是执行事实推出来的,推不出两件只有你自己知道的事:一条躺在**待处理**里的任务其实早在别处干完了;一条**进行中**的任务模型已经不说话了,而你一眼能看出它做完了。这两种卡片现在 hover 会浮出一颗 **完成**(就在「执行 / 停止」旁边那一格),而**手动**收进已完成的卡片把那颗换成 **撤销**;自己跑完的卡片两颗都没有 —— 撤销一个它从来没有过的标记,点下去什么都不会发生。给正在跑的任务标完成会先问一句,并在同一次动作里把那一轮停掉(一张卡片不能既是「已完成」又在跑);跨窗口也一样:那个 job 活在别的 `g ui` 实例里时服务端直说原因,不假装标成功。标记记在任务身上,不补假的执行记录;这条任务之后再跑一轮,标记就作废,列重新跟着执行事实走。撤销是一键、不弹确认(它走的就是"点错了退回来"那条路),撤完回哪一列仍然由执行事实说了算 —— 所以那颗按钮只出现在"正是它把卡片留在已完成列"的卡上 |
1067
1075
  | 派发执行器 | 派出去的任务由哪个 CLI 跑:**对话模式**在输入框下方选,**指令模式**在派发栏选 —— 两处是同一个组件、同一份选择,与执行按钮的临时切换也共用。注意「引擎」和「执行器」不是一回事:只有**内置 g ai** 能在服务端跑工具循环、才有派发能力,所以对话模式下把引擎切成外部 CLI 时,执行器选择会换成一句「当前引擎只能对话,不能派发任务 —— 切到内置 g ai 才能派活」的说明,而不是让你点了个不会生效的下拉 |
1068
1076
  | 派发默认提示词 | 给每次派发配一段常驻提示词:一条**全局**的(所有项目都附加)+ 每个项目一条(派发到该项目时追加在全局之后,是补充而不是覆盖)。两者都在控制台输入区的齿轮按钮里设置;拼好的正文放在指令**之前**,「立即执行」旁边会多出一个「默认提示词(全局 + 本项目)」勾选,单次派发可以取消勾选,指令流水里也记下这条指令附带的是哪一级。提示词在派发那一刻就抄进任务自己的提示词字段,之后改设置不会回头改写已建任务,单条任务仍可再改 |
1069
1077
  | 项目行打开方式 | 编排台项目列表里 hover 任意一行会出现两个按钮:「打开文件夹」一键进资源管理器,以及「打开方式」菜单 —— 文件管理器 / 终端 / 新标签页跑 `g ui`,以及各编辑器与 AI 工具(VS Code、Codex、OpenCode、Kimi Code、ZCode、DeepSeek Harness,加上默认权限或完全批准的 Claude Code)。没安装的工具会置灰并标「未安装」,点它弹的是顶栏那套安装引导;菜单里的动作只作用于该行项目,不会改变看板选中态 |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zen-gitsync",
3
- "version": "2.17.32",
3
+ "version": "2.17.33",
4
4
  "description": "Auto commit, scheduled sync, and visual GUI for Git. Run `g` in any repo for one-key commit & push, AI commit messages, scheduled background sync, and a drag-and-drop workflow builder.",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -40,6 +40,7 @@
40
40
  "verify:wb-dispatch": "node scripts/verify-workbench-dispatch-attach.cjs",
41
41
  "verify:wb-env-context": "node scripts/verify-workbench-env-context.mjs",
42
42
  "verify:wb-live-jobs": "node scripts/verify-wb-live-jobs.mjs",
43
+ "verify:wb-manual-done": "node scripts/verify-wb-manual-done.mjs",
43
44
  "verify:wb-bubble-prompt": "node scripts/verify-wb-bubble-prompt.cjs",
44
45
  "verify:wb-copy-execution": "node scripts/verify-wb-copy-execution.cjs",
45
46
  "verify:wb-overview": "node scripts/verify-workbench-overview.cjs",
@@ -52,6 +53,12 @@
52
53
  "verify:wb-card-opened": "node scripts/verify-wb-card-opened.cjs",
53
54
  "verify:wb-card-stop": "node scripts/verify-wb-card-stop.cjs",
54
55
  "verify:wb-card-stop:reverse": "node scripts/verify-wb-card-stop.cjs --reverse",
56
+ "verify:wb-card-done": "node scripts/verify-wb-card-done.cjs",
57
+ "verify:wb-card-done:reverse": "node scripts/verify-wb-card-done.cjs --reverse",
58
+ "verify:wb-rerun-label": "node scripts/verify-wb-rerun-label.cjs",
59
+ "verify:wb-rerun-label:reverse": "node scripts/verify-wb-rerun-label.cjs --reverse",
60
+ "verify:wb-auto-done": "node scripts/verify-wb-auto-done.cjs",
61
+ "verify:wb-auto-done:reverse": "node scripts/verify-wb-auto-done.cjs --reverse",
55
62
  "verify:wb-list-view": "node scripts/verify-wb-list-view.cjs",
56
63
  "verify:wb-executor-models": "node scripts/verify-wb-executor-models.cjs",
57
64
  "verify:wb-task-sound": "node scripts/verify-wb-task-sound.cjs",
@@ -1 +1 @@
1
- import"./rolldown-runtime-C0FnF6B9.js";import{$n as e,Bn as t,C as n,Dn as r,En as i,Er as a,In as o,J as s,On as c,Pn as l,Pr as u,Qr as d,S as f,Tn as p,Wn as m,Y as h,Yn as g,Zn as _,br as v,cr as y,kn as b,pr as x,qn as S,qr as C,tt as w,w as T,xn as E}from"./element-plus-CgEuJBlB.js";import{n as D,t as O}from"./_plugin-vue_export-helper-DkeTtFKF.js";import{t as k}from"./SvgIcon-U-AI95UV.js";import{t as A}from"./toolsStore-Dhfr-VDL.js";import{s as j,v as M}from"./index-BoZNUwmd.js";import{c as N,d as P,l as F,u as I}from"./agentConversations-B2aTliJe.js";t(),x();function L(e,t=680){let n=v(0),r=null;function i(){let t=e.value;return t?(n.value=t.clientWidth,typeof ResizeObserver>`u`||(r=new ResizeObserver(e=>{let t=e[0]?.contentRect?.width;typeof t==`number`&&(n.value=t)}),r.observe(t),!0)):!1}return g(()=>{i()||m(()=>i())}),S(()=>{r?.disconnect(),r=null}),{width:n,narrow:p(()=>n.value>0&&n.value<t)}}t(),x(),u();var R={class:`agent-engine`},z=[`disabled`,`title`,`aria-label`],B={class:`agent-engine__name`},V={class:`agent-engine__item`},H={class:`agent-engine__item-name`},U={key:3,class:`agent-engine__item-missing`},W=O(o({__name:`AgentEngineSelector`,props:{engine:{},locked:{type:Boolean}},emits:[`select`],setup(t,{emit:o}){let u=t,m=o,g=A(),x=p(()=>I(u.engine)),S=p(()=>({gai:!0,claude:g.claudeAvailable,opencode:g.opencodeAvailable,codex:g.codexAvailable})),O=v(!1),L=v(null);function W(e){if(!u.locked){if(!S.value[e]){if(!P(e))return;L.value=e,O.value=!0;return}m(`select`,e)}}return(o,u)=>(_(),b(`div`,R,[l(a(f),{trigger:`click`,onCommand:W},{dropdown:y(()=>[l(a(T),null,{default:y(()=>[(_(!0),b(E,null,e(a(N),e=>(_(),r(a(n),{key:e.id,command:e.id},{default:y(()=>[i(`span`,V,[a(P)(e.id)?(_(),r(j,{key:0,executor:e.id,class:`agent-engine__item-icon`},null,8,[`executor`])):(_(),r(k,{key:1,"icon-class":a(F),class:`agent-engine__item-icon`},null,8,[`icon-class`])),i(`span`,H,d(e.name),1),t.engine===e.id?(_(),r(a(s),{key:2,class:`agent-engine__item-check`},{default:y(()=>[l(a(w))]),_:1})):S.value[e.id]?c(``,!0):(_(),b(`span`,U,d(a(D)(`@42BB9:未安装`)),1))])]),_:2},1032,[`command`]))),128))]),_:1})]),default:y(()=>[i(`button`,{type:`button`,class:C([`agent-engine__btn`,{"is-locked":t.locked}]),disabled:t.locked,title:t.locked?a(D)(`@AGENT:本会话的引擎已锁定;要换引擎请新建会话`):a(D)(`@AGENT:新建会话使用的引擎`),"aria-label":a(D)(`@AGENT:智能体引擎`)},[a(P)(t.engine)?(_(),r(j,{key:0,executor:t.engine,class:`agent-engine__icon`},null,8,[`executor`])):(_(),r(k,{key:1,"icon-class":a(F),class:`agent-engine__icon`},null,8,[`icon-class`])),i(`span`,B,d(x.value),1),l(a(s),{class:`agent-engine__caret`},{default:y(()=>[l(a(h))]),_:1})],10,z)]),_:1}),l(M,{modelValue:O.value,"onUpdate:modelValue":u[0]||=e=>O.value=e,tool:L.value},null,8,[`modelValue`,`tool`])]))}}),[[`__scopeId`,`data-v-81dfa007`]]);export{L as n,W as t};
1
+ import"./rolldown-runtime-C0FnF6B9.js";import{$n as e,Bn as t,C as n,Dn as r,En as i,Er as a,In as o,J as s,On as c,Pn as l,Pr as u,Qr as d,S as f,Tn as p,Wn as m,Y as h,Yn as g,Zn as _,br as v,cr as y,kn as b,pr as x,qn as S,qr as C,tt as w,w as T,xn as E}from"./element-plus-CgEuJBlB.js";import{n as D,t as O}from"./_plugin-vue_export-helper-D8rwCQpe.js";import{t as k}from"./SvgIcon-B-2iTLW-.js";import{t as A}from"./toolsStore-B3LQrSEp.js";import{s as j,v as M}from"./index-aNSr4k87.js";import{c as N,d as P,l as F,u as I}from"./agentConversations-C0WoSH0y.js";t(),x();function L(e,t=680){let n=v(0),r=null;function i(){let t=e.value;return t?(n.value=t.clientWidth,typeof ResizeObserver>`u`||(r=new ResizeObserver(e=>{let t=e[0]?.contentRect?.width;typeof t==`number`&&(n.value=t)}),r.observe(t),!0)):!1}return g(()=>{i()||m(()=>i())}),S(()=>{r?.disconnect(),r=null}),{width:n,narrow:p(()=>n.value>0&&n.value<t)}}t(),x(),u();var R={class:`agent-engine`},z=[`disabled`,`title`,`aria-label`],B={class:`agent-engine__name`},V={class:`agent-engine__item`},H={class:`agent-engine__item-name`},U={key:3,class:`agent-engine__item-missing`},W=O(o({__name:`AgentEngineSelector`,props:{engine:{},locked:{type:Boolean}},emits:[`select`],setup(t,{emit:o}){let u=t,m=o,g=A(),x=p(()=>I(u.engine)),S=p(()=>({gai:!0,claude:g.claudeAvailable,opencode:g.opencodeAvailable,codex:g.codexAvailable})),O=v(!1),L=v(null);function W(e){if(!u.locked){if(!S.value[e]){if(!P(e))return;L.value=e,O.value=!0;return}m(`select`,e)}}return(o,u)=>(_(),b(`div`,R,[l(a(f),{trigger:`click`,onCommand:W},{dropdown:y(()=>[l(a(T),null,{default:y(()=>[(_(!0),b(E,null,e(a(N),e=>(_(),r(a(n),{key:e.id,command:e.id},{default:y(()=>[i(`span`,V,[a(P)(e.id)?(_(),r(j,{key:0,executor:e.id,class:`agent-engine__item-icon`},null,8,[`executor`])):(_(),r(k,{key:1,"icon-class":a(F),class:`agent-engine__item-icon`},null,8,[`icon-class`])),i(`span`,H,d(e.name),1),t.engine===e.id?(_(),r(a(s),{key:2,class:`agent-engine__item-check`},{default:y(()=>[l(a(w))]),_:1})):S.value[e.id]?c(``,!0):(_(),b(`span`,U,d(a(D)(`@42BB9:未安装`)),1))])]),_:2},1032,[`command`]))),128))]),_:1})]),default:y(()=>[i(`button`,{type:`button`,class:C([`agent-engine__btn`,{"is-locked":t.locked}]),disabled:t.locked,title:t.locked?a(D)(`@AGENT:本会话的引擎已锁定;要换引擎请新建会话`):a(D)(`@AGENT:新建会话使用的引擎`),"aria-label":a(D)(`@AGENT:智能体引擎`)},[a(P)(t.engine)?(_(),r(j,{key:0,executor:t.engine,class:`agent-engine__icon`},null,8,[`executor`])):(_(),r(k,{key:1,"icon-class":a(F),class:`agent-engine__icon`},null,8,[`icon-class`])),i(`span`,B,d(x.value),1),l(a(s),{class:`agent-engine__caret`},{default:y(()=>[l(a(h))]),_:1})],10,z)]),_:1}),l(M,{modelValue:O.value,"onUpdate:modelValue":u[0]||=e=>O.value=e,tool:L.value},null,8,[`modelValue`,`tool`])]))}}),[[`__scopeId`,`data-v-81dfa007`]]);export{L as n,W as t};
@@ -1 +1 @@
1
- import"./rolldown-runtime-C0FnF6B9.js";import{$n as e,At as t,Bn as n,Ct as r,Dn as i,En as a,Er as o,Gt as s,Ht as c,In as l,J as ee,M as u,Nn as d,On as f,Pn as p,Pr as m,Qr as h,Tn as g,Tt as _,W as te,Wn as v,Yr as y,Yt as ne,Zn as b,_n as x,a as S,an as C,br as w,cr as T,dn as E,et as D,i as O,j as re,kn as k,kt as A,lr as j,lt as M,mt as N,nr as P,o as ie,or as F,pr as I,qr as L,st as R,tt as ae,vr as oe,xn as z}from"./element-plus-CgEuJBlB.js";import{a as B,t as V}from"./vendor-CDZ64WVU.js";import{n as H,t as U}from"./_plugin-vue_export-helper-DkeTtFKF.js";import{t as se}from"./configStore-Y1biBqmb.js";import{t as ce}from"./CommonDialog-Nwwi4-_9.js";import{a as W,i as le,n as ue,o as G,r as K,s as de,t as q}from"./agentConversations-B2aTliJe.js";import{n as J,t as fe}from"./AgentEngineSelector-CPS9WawU.js";n(),I(),E(),m();var Y={class:`marketplace-panel`},pe={class:`mp-toolbar`},me={class:`mp-search`},he=[`placeholder`],ge={class:`mp-toolbar-sub`},_e={class:`mp-target-hint`},X={class:`mp-source-filter`},ve=[`onClick`],ye={class:`mp-body`},be={class:`mp-group-header`},xe={class:`mp-group-title`},Se={key:0,class:`mp-group-count`},Ce={key:1,class:`mp-group-error`},we=[`href`,`title`],Te={key:0,class:`mp-grid`},Z={class:`mp-card-head`},Ee=[`title`],De={key:0,class:`mp-card-metric`},Q=[`title`],$={class:`mp-card-meta`},Oe=[`title`],ke=[`title`],Ae={key:2,class:`mp-tag remote`},je={class:`mp-card-foot`},Me=[`href`],Ne={key:1,class:`mp-installed-chip`},Pe=[`disabled`,`onClick`],Fe={key:3,class:`mp-not-installable`},Ie={key:1,class:`mp-empty`},Le={key:0,class:`mp-group installed`},Re={class:`mp-group-header`},ze={class:`mp-group-title`},Be={class:`mp-group-count`},Ve={key:0,class:`mp-installed-block`},He={class:`mp-installed-target`},Ue={class:`mp-installed-list`},We=[`title`],Ge=[`title`],Ke={key:1,class:`mp-meta-pkg`},qe={key:2,class:`mp-tag warn`},Je=[`disabled`,`title`,`onClick`],Ye=[`disabled`,`onClick`],Xe={key:1,class:`mp-empty all`},Ze={key:0,class:`mkt-form`},Qe={class:`mkt-form-name`},$e=[`onUpdate:modelValue`,`placeholder`],et={key:0,class:`mkt-field`},tt={class:`mkt-hint`},nt=U(l({__name:`MarketplacePanel`,props:{type:{}},setup(t){let n=t,l=se(),m=w([]),_=w([]),v=w(!1),y=w(``),E=w(``),D=w([]),P=w(`project`),I=w(new Set),R=w(new Set),B=w(new Set),V=g(()=>l.currentDirectory||``),U=null;async function W(){if(!v.value){v.value=!0;try{let e=new URLSearchParams({type:n.type,cwd:V.value});E.value&&e.set(`q`,E.value),D.value.length&&e.set(`sources`,D.value.join(`,`));let t=await(await fetch(`/api/agent/marketplace/catalog?${e}`)).json();t?.success?(m.value=t.groups||[],_.value=t.installed||[]):S.error(t?.error||H(`@MKT:加载失败`))}catch{S.error(H(`@MKT:加载失败`))}finally{v.value=!1}}}F(y,e=>{U&&clearTimeout(U),U=setTimeout(()=>{E.value=e.trim(),W()},400)}),F(D,()=>W()),F(()=>n.type,()=>{D.value=[],E.value=``,y.value=``,W()}),F(V,()=>W()),W();let le=g(()=>{let e=V.value?V.value.split(/[\\/]/).filter(Boolean).pop():``;return P.value===`project`?e||H(`@MKT:当前项目`):H(`@MKT:g ai 智能体`)});function ue(e){return e.stars?`${G(e.stars)} ★`:e.downloads?`${G(e.downloads)} ${H(`@MKT:周下载`)}`:e.uses?`${G(e.uses)} ${H(`@MKT:次使用`)}`:``}function G(e){return e>=1e3?`${(e/1e3).toFixed(e>=1e4?0:1)}k`:String(e)}function K(e){return`${e.id}`}function de(e){return I.value.has(K(e))}let q=g(()=>{let e={project:[],global:[]};for(let t of _.value)(e[t.target]||=[]).push(t);return e}),J=oe({visible:!1,item:null,env:{},args:``});function fe(e){return n.type===`mcp`&&(!!e.envKeys?.length||!!e.args?.length)}function nt(e){J.item=e,J.env=Object.fromEntries((e.envKeys||[]).map(e=>[e,``])),J.args=(e.args||[]).join(` `),J.visible=!0}function rt(){let e=J.item;if(J.visible=!1,!e)return;let t=Object.fromEntries(Object.entries(J.env).filter(([,e])=>e.trim()!==``)),n=J.args.trim()?J.args.trim().match(/(?:[^\s"]+|"[^"]*")+/g)?.map(e=>e.replace(/^"|"$/g,``))??void 0:void 0;at(e,{env:t,...n?{args:n}:{}})}async function it(e){if(!e.installed||await ot(e)){if(fe(e)){nt(e);return}await at(e,{})}}async function at(e,t){let r=K(e);I.value.add(r);try{let r=await fetch(`/api/agent/marketplace/install`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({type:n.type,target:P.value,cwd:V.value,item:{...e,...t}})}),i=await r.json().catch(()=>null);if(!r.ok||!i?.success){S.error(i?.error||H(`@MKT:安装失败`));return}i.item?.warning&&S.warning(i.item.warning),i.item?.envKeys?.length?S.warning(`${H(`@MKT:还缺环境变量`)}: ${i.item.envKeys.join(`, `)}`):S.success(H(`@MKT:安装成功`)),await W()}catch{S.error(H(`@MKT:安装失败`))}finally{I.value.delete(r)}}async function ot(e){try{return await O.confirm(`${e.name} ${H(`@MKT:已安装,要重新安装吗?`)}`,H(`@MKT:重新安装`),{confirmButtonText:H(`@MKT:重装`),cancelButtonText:H(`@MKT:取消`),type:`warning`}),!0}catch{return!1}}async function st(e){let t=`${e.target}:${e.id}`;B.value.add(t);try{let t=await fetch(`/api/agent/marketplace/reveal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({type:n.type,target:e.target,cwd:V.value,id:e.id})}),r=await t.json().catch(()=>null);(!t.ok||!r?.success)&&S.error(r?.error||H(`@MKT:打开失败`))}catch{S.error(H(`@MKT:打开失败`))}finally{B.value.delete(t)}}async function ct(e){try{await O.confirm(`${H(`@MKT:确定卸载`)} ${e.name}?`,H(`@MKT:卸载`),{confirmButtonText:H(`@MKT:卸载`),cancelButtonText:H(`@MKT:取消`),type:`warning`})}catch{return}let t=`${e.target}:${e.id}`;R.value.add(t);try{let t=new URLSearchParams({target:e.target,cwd:V.value}),r=await fetch(`/api/agent/marketplace/item/${n.type}/${encodeURIComponent(e.id)}?${t}`,{method:`DELETE`}),i=await r.json().catch(()=>null);if(!r.ok||!i?.success){S.error(i?.error||H(`@MKT:卸载失败`));return}S.success(H(`@MKT:已卸载`)),await W()}catch{S.error(H(`@MKT:卸载失败`))}finally{R.value.delete(t)}}return(n,l)=>{let g=ee,S=re,w=u,E=te,O=ie;return b(),k(`div`,Y,[a(`div`,pe,[a(`div`,me,[p(g,{class:`mp-search-icon`},{default:T(()=>[p(o(s))]),_:1}),j(a(`input`,{"onUpdate:modelValue":l[0]||=e=>y.value=e,class:`mp-search-input`,type:`text`,placeholder:t.type===`skill`?o(H)(`@MKT:搜索 Skill...`):o(H)(`@MKT:搜索 MCP 服务...`)},null,8,he),[[x,y.value]])]),p(w,{modelValue:P.value,"onUpdate:modelValue":l[1]||=e=>P.value=e,size:`small`,class:`mp-target`},{default:T(()=>[p(S,{value:`project`},{default:T(()=>[d(h(o(H)(`@MKT:当前项目`)),1)]),_:1}),p(S,{value:`global`},{default:T(()=>[d(h(o(H)(`@MKT:g ai 智能体`)),1)]),_:1})]),_:1},8,[`modelValue`]),p(E,{content:o(H)(`@MKT:刷新`),placement:`top`,"show-after":300},{default:T(()=>[a(`button`,{class:L([`mp-refresh`,{spinning:v.value}]),onClick:W},[p(g,null,{default:T(()=>[p(o(c))]),_:1})],2)]),_:1},8,[`content`])]),a(`div`,ge,[a(`span`,_e,[d(h(o(H)(`@MKT:安装到`))+` `,1),a(`b`,null,h(le.value),1)]),a(`div`,X,[(b(!0),k(z,null,e(m.value,e=>(b(),k(`button`,{key:e.id,class:L([`mp-chip`,{active:D.value.includes(e.id)}]),onClick:()=>{let t=D.value.indexOf(e.id);t>=0?D.value.splice(t,1):D.value.push(e.id)}},h(e.label),11,ve))),128)),D.value.length?(b(),k(`button`,{key:0,class:`mp-chip clear`,onClick:l[2]||=e=>D.value=[]},h(o(H)(`@MKT:全部来源`)),1)):f(``,!0)])]),j((b(),k(`div`,ye,[(b(!0),k(z,null,e(m.value,t=>(b(),k(`section`,{key:t.id,class:`mp-group`},[a(`header`,be,[a(`h3`,xe,h(t.label),1),t.status===`ok`?(b(),k(`span`,Se,h(t.items.length),1)):(b(),k(`span`,Ce,[p(g,null,{default:T(()=>[p(o(C))]),_:1}),d(` `+h(t.error||o(H)(`@MKT:来源不可用`)),1)])),t.homepage?(b(),k(`a`,{key:2,class:`mp-group-link`,href:t.homepage,target:`_blank`,rel:`noopener noreferrer`,title:t.homepage},[p(g,null,{default:T(()=>[p(o(A))]),_:1})],8,we)):f(``,!0)]),t.status===`ok`&&t.items.length?(b(),k(`div`,Te,[(b(!0),k(z,null,e(t.items,t=>(b(),k(`article`,{key:K(t),class:`mp-card`},[a(`div`,Z,[a(`span`,{class:`mp-card-name`,title:t.name},h(t.name),9,Ee),ue(t)?(b(),k(`span`,De,[p(g,null,{default:T(()=>[t.stars?(b(),i(o(ne),{key:0})):(b(),i(o(N),{key:1}))]),_:2},1024),d(` `+h(ue(t)),1)])):f(``,!0)]),a(`p`,{class:`mp-card-desc`,title:t.description},h(t.description||o(H)(`@MKT:暂无描述`)),9,Q),a(`div`,$,[t.package?(b(),k(`code`,{key:0,class:`mp-meta-pkg`,title:t.package},h(t.package),9,Oe)):t.repository?(b(),k(`span`,{key:1,class:`mp-meta-repo`,title:t.repository+(t.subpath?` · `+t.subpath:``)},[d(h(t.repository),1),t.subpath?(b(),k(z,{key:0},[d(` · `+h(t.subpath),1)],64)):f(``,!0)],8,ke)):f(``,!0),t.transport===`remote`?(b(),k(`span`,Ae,h(o(H)(`@MKT:远程服务`)),1)):f(``,!0),(b(!0),k(z,null,e((t.tags||[]).slice(0,2),e=>(b(),k(`span`,{key:e,class:`mp-tag`},h(e),1))),128))]),a(`div`,je,[t.upstream?(b(),k(`a`,{key:0,class:`mp-card-link`,href:t.upstream,target:`_blank`,rel:`noopener noreferrer`},h(o(H)(`@MKT:查看来源`)),9,Me)):f(``,!0),l[6]||=a(`span`,{class:`mp-foot-spacer`},null,-1),t.installed?(b(),k(`span`,Ne,[p(g,null,{default:T(()=>[p(o(ae))]),_:1}),d(h(o(H)(`@MKT:已安装`)),1)])):t.installable===!1?(b(),k(`span`,Fe,h(o(H)(`@MKT:暂不支持一键安装`)),1)):(b(),k(`button`,{key:2,class:`mp-install-btn`,disabled:de(t),onClick:e=>it(t)},h(de(t)?o(H)(`@MKT:安装中...`):o(H)(`@MKT:安装`)),9,Pe))])]))),128))])):t.status===`ok`?(b(),k(`div`,Ie,h(o(H)(`@MKT:该来源暂无结果`)),1)):f(``,!0)]))),128)),_.value.length?(b(),k(`section`,Le,[a(`header`,Re,[a(`h3`,ze,h(o(H)(`@MKT:已安装`)),1),a(`span`,Be,h(_.value.length),1)]),(b(),k(z,null,e([`project`,`global`],t=>a(`div`,{key:t},[q.value[t]?.length?(b(),k(`div`,Ve,[a(`div`,He,h(t===`project`?o(H)(`@MKT:当前项目`):o(H)(`@MKT:g ai 智能体`)),1),a(`div`,Ue,[(b(!0),k(z,null,e(q.value[t],e=>(b(),k(`div`,{key:t+e.id,class:`mp-installed-row`},[a(`span`,{class:`mp-installed-name`,title:e.name},h(e.name),9,We),e.id&&e.id!==e.name?(b(),k(`code`,{key:0,class:`mp-installed-id`,title:e.dir||e.file||e.id},h(e.id),9,Ge)):f(``,!0),e.package?(b(),k(`code`,Ke,h(e.package),1)):f(``,!0),e.requiredEnv?.length?(b(),k(`span`,qe,h(o(H)(`@MKT:待配置`))+`: `+h(e.requiredEnv.join(`, `)),1)):f(``,!0),l[7]||=a(`span`,{class:`mp-foot-spacer`},null,-1),a(`button`,{class:`mp-reveal-btn`,disabled:B.value.has(t+e.id),title:e.dir||e.file||``,onClick:t=>st(e)},[p(g,null,{default:T(()=>[p(o(r))]),_:1}),d(` `+h(o(H)(`@MKT:打开文件夹`)),1)],8,Je),a(`button`,{class:`mp-remove-btn`,disabled:R.value.has(t+e.id),onClick:t=>ct(e)},[p(g,null,{default:T(()=>[p(o(M))]),_:1}),d(` `+h(R.value.has(t+e.id)?o(H)(`@MKT:卸载中...`):o(H)(`@MKT:卸载`)),1)],8,Ye)]))),128))])])):f(``,!0)])),64))])):f(``,!0),!v.value&&!m.value.length?(b(),k(`div`,Xe,h(o(H)(`@MKT:加载失败`)),1)):f(``,!0)])),[[O,v.value]]),p(ce,{modelValue:J.visible,"onUpdate:modelValue":l[5]||=e=>J.visible=e,title:o(H)(`@MKT:配置 MCP`),width:`460px`,type:`flex`,"close-on-click-modal":!1,"append-to-body":``},{footer:T(()=>[a(`button`,{class:`mkt-cancel`,onClick:l[4]||=e=>J.visible=!1},h(o(H)(`@MKT:取消`)),1),a(`button`,{class:`mkt-confirm`,onClick:rt},h(o(H)(`@MKT:安装`)),1)]),default:T(()=>[J.item?(b(),k(`div`,Ze,[a(`p`,Qe,h(J.item.name),1),(b(!0),k(z,null,e(Object.keys(J.env),e=>(b(),k(`div`,{key:e,class:`mkt-field`},[a(`label`,null,h(e),1),j(a(`input`,{"onUpdate:modelValue":t=>J.env[e]=t,type:`text`,autocomplete:`off`,placeholder:o(H)(`@MKT:环境变量值`),spellcheck:`false`},null,8,$e),[[x,J.env[e]]])]))),128)),J.item.args?.length?(b(),k(`div`,et,[a(`label`,null,h(o(H)(`@MKT:启动参数`)),1),j(a(`input`,{"onUpdate:modelValue":l[3]||=e=>J.args=e,type:`text`,autocomplete:`off`,spellcheck:`false`},null,512),[[x,J.args]]),a(`p`,tt,h(o(H)(`@MKT:参数提示`)),1)])):f(``,!0)])):f(``,!0)]),_:1},8,[`modelValue`,`title`])])}}}),[[`__scopeId`,`data-v-79426bd0`]]);n(),I(),m();var rt={class:`agent-chat-area`},it={class:`agent-tabs`,role:`tablist`},at=[`aria-selected`,`onClick`],ot={class:`agent-tab-body`},st={key:0,class:`agent-chat-pane`},ct={key:0,class:`agent-list-page`},lt={key:0,class:`agent-page-bar`},ut=[`title`,`aria-label`],dt={class:`agent-page-title`},ft={key:0,class:`chat-loading`},pt=U(l({__name:`AgentView`,setup(n){let r=se(),s=w(null),{narrow:c}=J(s),l=w(`chat`),u=w(`chat`),d=g(()=>u.value===`mcp`?`mcp`:`skill`),m=g(()=>[{id:`chat`,label:H(`@AGENT:对话`),icon:D},{id:`skill`,label:H(`@AGENT:Skill 广场`),icon:_},{id:`mcp`,label:H(`@AGENT:MCP 广场`),icon:R}]),{sessions:te,sessionsLoading:ne,currentSessionId:x,messages:S,isStreaming:C,sessionLoading:E,loadSessions:O,loadSession:re,deleteSession:A,renameSession:j,newSession:M,sendMessage:N,pendingQuestion:ie,answeringQuestion:I,answerQuestion:ae,isSessionGenerating:oe,currentEngine:U,pendingEngine:ce,isEngineLocked:Y,pickEngine:pe,stop:me}=de(),he=g(()=>Y.value?U.value:ce.value);function ge(e){Y.value||pe(e)}let _e=g(()=>{let e=r.theme;return e===`dark`||e===`auto`&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}),X=g(()=>W(te.value,oe)),ve=K(),ye=g(()=>X.value.find(e=>e.id===x.value)?.title||H(`@AGENT:对话`)),be={"--welcome-avatar":`url("${q}")`},xe=g(()=>[{id:`p1`,label:H(`@AGENT:查看项目结构`),prompt:H(`@AGENT:prompt_p1`)},{id:`p2`,label:H(`@AGENT:分析代码质量`),prompt:H(`@AGENT:prompt_p2`)},{id:`p3`,label:H(`@AGENT:帮我写测试`),prompt:H(`@AGENT:prompt_p3`)},{id:`p4`,label:H(`@AGENT:Git 状态检查`),prompt:H(`@AGENT:prompt_p4`)},{id:`p5`,label:H(`@AGENT:帮我启动项目`),prompt:H(`@AGENT:prompt_p5`)}]);async function Se(e){await N(e.text,e.files),await v(),Z()}async function Ce(e){await N(e.prompt),await v(),Z()}let we=le(),Te=w(null);function Z(e=!0){Te.value?.scrollToBottom(e)}F(()=>S.value.length,()=>{v(()=>Z(!1))});function Ee(e){re(e),l.value=`chat`}function De(){M(),l.value=`chat`}let Q=w(280),$=w(!1);function Oe(e){$.value=!0;let t=e.clientX,n=Q.value,r=e=>{let r=e.clientX-t,i=Math.max(200,Math.min(500,n+r));Q.value=i},i=()=>{$.value=!1,document.removeEventListener(`mousemove`,r),document.removeEventListener(`mouseup`,i)};document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)}return F(c,e=>{e||(l.value=`chat`)}),F(()=>[r.currentDirectory,C.value],async([e,t],n)=>{let r=!n||e!==n[0],i=!!n&&n[1]===!0&&!t;(r||i)&&await O(),x.value&&!C.value&&!te.value.some(e=>e.sessionId===x.value)&&M()},{immediate:!0}),(n,r)=>(b(),k(`div`,{ref_key:`rootRef`,ref:s,class:`agent-view`},[u.value===`chat`&&!o(c)?(b(),k(z,{key:0},[a(`aside`,{class:`agent-sidebar`,style:y({width:Q.value+`px`})},[p(o(V),{class:`agent-conversations`,items:X.value,"active-id":o(x),loading:o(ne),labels:o(ve),onSelect:Ee,onNew:De,onRename:o(j),onDelete:o(A)},null,8,[`items`,`active-id`,`loading`,`labels`,`onRename`,`onDelete`])],4),a(`div`,{class:L([`sidebar-resizer`,{active:$.value}]),onMousedown:Oe},null,34)],64)):f(``,!0),a(`main`,rt,[a(`nav`,it,[(b(!0),k(z,null,e(m.value,e=>(b(),k(`button`,{key:e.id,type:`button`,class:L([`agent-tab`,{active:u.value===e.id}]),role:`tab`,"aria-selected":u.value===e.id,onClick:t=>u.value=e.id},[p(o(ee),null,{default:T(()=>[(b(),i(P(e.icon)))]),_:2},1024),a(`span`,null,h(e.label),1)],10,at))),128)),u.value===`chat`?(b(),i(fe,{key:0,class:`agent-engine`,engine:he.value,locked:o(Y),onSelect:ge},null,8,[`engine`,`locked`])):f(``,!0)]),a(`div`,ot,[u.value===`chat`?(b(),k(`div`,st,[o(c)&&l.value===`list`?(b(),k(`div`,ct,[p(o(V),{class:`agent-conversations`,items:X.value,"active-id":o(x),loading:o(ne),labels:o(ve),onSelect:Ee,onNew:De,onRename:o(j),onDelete:o(A)},null,8,[`items`,`active-id`,`loading`,`labels`,`onRename`,`onDelete`])])):(b(),k(z,{key:1},[o(c)?(b(),k(`div`,lt,[a(`button`,{type:`button`,class:`agent-page-back`,title:o(H)(`@AGENT:返回会话列表`),"aria-label":o(H)(`@AGENT:返回会话列表`),onClick:r[0]||=e=>l.value=`list`},[...r[1]||=[a(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[a(`line`,{x1:`19`,y1:`12`,x2:`5`,y2:`12`}),a(`polyline`,{points:`12 19 5 12 12 5`})],-1)]],8,ut),a(`span`,dt,h(ye.value),1)])):f(``,!0),a(`div`,{class:`agent-chat-host`,style:be},[o(E)?(b(),k(`div`,ft,[p(o(ee),{class:`is-loading`,size:32},{default:T(()=>[p(o(t))]),_:1}),a(`span`,null,h(o(H)(`@AGENT:加载会话中...`)),1)])):(b(),i(o(B),{key:1,ref_key:`chatContainerRef`,ref:Te,messages:o(S),"preset-questions":xe.value,"welcome-title":o(H)(`@AGENT:智能体助手`),"welcome-description":o(H)(`@AGENT:我可以帮你阅读代码、执行命令、修改文件。选择下方话题或直接输入你的问题。`),"assistant-name":o(ue),"assistant-avatar":o(q),theme:_e.value,disabled:o(C),generating:o(C),"upload-config":{accept:o(G)},placeholder:o(C)?o(H)(`@AGENT:正在生成中...`):o(H)(`@AGENT:输入消息,Enter 发送`),question:o(ie),"question-submitting":o(I),"question-labels":o(we),"plan-config":{labels:{title:o(H)(`@AGENT:计划`),raw:o(H)(`@AGENT:原始参数`)}},onSend:Se,onSelect:Ce,onStop:o(me),onAnswer:o(ae)},null,8,[`messages`,`preset-questions`,`welcome-title`,`welcome-description`,`assistant-name`,`assistant-avatar`,`theme`,`disabled`,`generating`,`upload-config`,`placeholder`,`question`,`question-submitting`,`question-labels`,`plan-config`,`onStop`,`onAnswer`]))])],64))])):(b(),i(nt,{key:1,type:d.value},null,8,[`type`]))])])],512))}}),[[`__scopeId`,`data-v-05972cec`]]);export{pt as default};
1
+ import"./rolldown-runtime-C0FnF6B9.js";import{$n as e,At as t,Bn as n,Ct as r,Dn as i,En as a,Er as o,Gt as s,Ht as c,In as l,J as ee,M as u,Nn as d,On as f,Pn as p,Pr as m,Qr as h,Tn as g,Tt as _,W as te,Wn as v,Yr as y,Yt as ne,Zn as b,_n as x,a as S,an as C,br as w,cr as T,dn as E,et as D,i as O,j as re,kn as k,kt as A,lr as j,lt as M,mt as N,nr as P,o as ie,or as F,pr as I,qr as L,st as R,tt as ae,vr as oe,xn as z}from"./element-plus-CgEuJBlB.js";import{a as B,t as V}from"./vendor-CDZ64WVU.js";import{n as H,t as U}from"./_plugin-vue_export-helper-D8rwCQpe.js";import{t as se}from"./configStore-BFGSfIBp.js";import{t as ce}from"./CommonDialog-kDck8ITZ.js";import{a as W,i as le,n as ue,o as G,r as K,s as de,t as q}from"./agentConversations-C0WoSH0y.js";import{n as J,t as fe}from"./AgentEngineSelector-CGrUh2kD.js";n(),I(),E(),m();var Y={class:`marketplace-panel`},pe={class:`mp-toolbar`},me={class:`mp-search`},he=[`placeholder`],ge={class:`mp-toolbar-sub`},_e={class:`mp-target-hint`},X={class:`mp-source-filter`},ve=[`onClick`],ye={class:`mp-body`},be={class:`mp-group-header`},xe={class:`mp-group-title`},Se={key:0,class:`mp-group-count`},Ce={key:1,class:`mp-group-error`},we=[`href`,`title`],Te={key:0,class:`mp-grid`},Z={class:`mp-card-head`},Ee=[`title`],De={key:0,class:`mp-card-metric`},Q=[`title`],$={class:`mp-card-meta`},Oe=[`title`],ke=[`title`],Ae={key:2,class:`mp-tag remote`},je={class:`mp-card-foot`},Me=[`href`],Ne={key:1,class:`mp-installed-chip`},Pe=[`disabled`,`onClick`],Fe={key:3,class:`mp-not-installable`},Ie={key:1,class:`mp-empty`},Le={key:0,class:`mp-group installed`},Re={class:`mp-group-header`},ze={class:`mp-group-title`},Be={class:`mp-group-count`},Ve={key:0,class:`mp-installed-block`},He={class:`mp-installed-target`},Ue={class:`mp-installed-list`},We=[`title`],Ge=[`title`],Ke={key:1,class:`mp-meta-pkg`},qe={key:2,class:`mp-tag warn`},Je=[`disabled`,`title`,`onClick`],Ye=[`disabled`,`onClick`],Xe={key:1,class:`mp-empty all`},Ze={key:0,class:`mkt-form`},Qe={class:`mkt-form-name`},$e=[`onUpdate:modelValue`,`placeholder`],et={key:0,class:`mkt-field`},tt={class:`mkt-hint`},nt=U(l({__name:`MarketplacePanel`,props:{type:{}},setup(t){let n=t,l=se(),m=w([]),_=w([]),v=w(!1),y=w(``),E=w(``),D=w([]),P=w(`project`),I=w(new Set),R=w(new Set),B=w(new Set),V=g(()=>l.currentDirectory||``),U=null;async function W(){if(!v.value){v.value=!0;try{let e=new URLSearchParams({type:n.type,cwd:V.value});E.value&&e.set(`q`,E.value),D.value.length&&e.set(`sources`,D.value.join(`,`));let t=await(await fetch(`/api/agent/marketplace/catalog?${e}`)).json();t?.success?(m.value=t.groups||[],_.value=t.installed||[]):S.error(t?.error||H(`@MKT:加载失败`))}catch{S.error(H(`@MKT:加载失败`))}finally{v.value=!1}}}F(y,e=>{U&&clearTimeout(U),U=setTimeout(()=>{E.value=e.trim(),W()},400)}),F(D,()=>W()),F(()=>n.type,()=>{D.value=[],E.value=``,y.value=``,W()}),F(V,()=>W()),W();let le=g(()=>{let e=V.value?V.value.split(/[\\/]/).filter(Boolean).pop():``;return P.value===`project`?e||H(`@MKT:当前项目`):H(`@MKT:g ai 智能体`)});function ue(e){return e.stars?`${G(e.stars)} ★`:e.downloads?`${G(e.downloads)} ${H(`@MKT:周下载`)}`:e.uses?`${G(e.uses)} ${H(`@MKT:次使用`)}`:``}function G(e){return e>=1e3?`${(e/1e3).toFixed(e>=1e4?0:1)}k`:String(e)}function K(e){return`${e.id}`}function de(e){return I.value.has(K(e))}let q=g(()=>{let e={project:[],global:[]};for(let t of _.value)(e[t.target]||=[]).push(t);return e}),J=oe({visible:!1,item:null,env:{},args:``});function fe(e){return n.type===`mcp`&&(!!e.envKeys?.length||!!e.args?.length)}function nt(e){J.item=e,J.env=Object.fromEntries((e.envKeys||[]).map(e=>[e,``])),J.args=(e.args||[]).join(` `),J.visible=!0}function rt(){let e=J.item;if(J.visible=!1,!e)return;let t=Object.fromEntries(Object.entries(J.env).filter(([,e])=>e.trim()!==``)),n=J.args.trim()?J.args.trim().match(/(?:[^\s"]+|"[^"]*")+/g)?.map(e=>e.replace(/^"|"$/g,``))??void 0:void 0;at(e,{env:t,...n?{args:n}:{}})}async function it(e){if(!e.installed||await ot(e)){if(fe(e)){nt(e);return}await at(e,{})}}async function at(e,t){let r=K(e);I.value.add(r);try{let r=await fetch(`/api/agent/marketplace/install`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({type:n.type,target:P.value,cwd:V.value,item:{...e,...t}})}),i=await r.json().catch(()=>null);if(!r.ok||!i?.success){S.error(i?.error||H(`@MKT:安装失败`));return}i.item?.warning&&S.warning(i.item.warning),i.item?.envKeys?.length?S.warning(`${H(`@MKT:还缺环境变量`)}: ${i.item.envKeys.join(`, `)}`):S.success(H(`@MKT:安装成功`)),await W()}catch{S.error(H(`@MKT:安装失败`))}finally{I.value.delete(r)}}async function ot(e){try{return await O.confirm(`${e.name} ${H(`@MKT:已安装,要重新安装吗?`)}`,H(`@MKT:重新安装`),{confirmButtonText:H(`@MKT:重装`),cancelButtonText:H(`@MKT:取消`),type:`warning`}),!0}catch{return!1}}async function st(e){let t=`${e.target}:${e.id}`;B.value.add(t);try{let t=await fetch(`/api/agent/marketplace/reveal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({type:n.type,target:e.target,cwd:V.value,id:e.id})}),r=await t.json().catch(()=>null);(!t.ok||!r?.success)&&S.error(r?.error||H(`@MKT:打开失败`))}catch{S.error(H(`@MKT:打开失败`))}finally{B.value.delete(t)}}async function ct(e){try{await O.confirm(`${H(`@MKT:确定卸载`)} ${e.name}?`,H(`@MKT:卸载`),{confirmButtonText:H(`@MKT:卸载`),cancelButtonText:H(`@MKT:取消`),type:`warning`})}catch{return}let t=`${e.target}:${e.id}`;R.value.add(t);try{let t=new URLSearchParams({target:e.target,cwd:V.value}),r=await fetch(`/api/agent/marketplace/item/${n.type}/${encodeURIComponent(e.id)}?${t}`,{method:`DELETE`}),i=await r.json().catch(()=>null);if(!r.ok||!i?.success){S.error(i?.error||H(`@MKT:卸载失败`));return}S.success(H(`@MKT:已卸载`)),await W()}catch{S.error(H(`@MKT:卸载失败`))}finally{R.value.delete(t)}}return(n,l)=>{let g=ee,S=re,w=u,E=te,O=ie;return b(),k(`div`,Y,[a(`div`,pe,[a(`div`,me,[p(g,{class:`mp-search-icon`},{default:T(()=>[p(o(s))]),_:1}),j(a(`input`,{"onUpdate:modelValue":l[0]||=e=>y.value=e,class:`mp-search-input`,type:`text`,placeholder:t.type===`skill`?o(H)(`@MKT:搜索 Skill...`):o(H)(`@MKT:搜索 MCP 服务...`)},null,8,he),[[x,y.value]])]),p(w,{modelValue:P.value,"onUpdate:modelValue":l[1]||=e=>P.value=e,size:`small`,class:`mp-target`},{default:T(()=>[p(S,{value:`project`},{default:T(()=>[d(h(o(H)(`@MKT:当前项目`)),1)]),_:1}),p(S,{value:`global`},{default:T(()=>[d(h(o(H)(`@MKT:g ai 智能体`)),1)]),_:1})]),_:1},8,[`modelValue`]),p(E,{content:o(H)(`@MKT:刷新`),placement:`top`,"show-after":300},{default:T(()=>[a(`button`,{class:L([`mp-refresh`,{spinning:v.value}]),onClick:W},[p(g,null,{default:T(()=>[p(o(c))]),_:1})],2)]),_:1},8,[`content`])]),a(`div`,ge,[a(`span`,_e,[d(h(o(H)(`@MKT:安装到`))+` `,1),a(`b`,null,h(le.value),1)]),a(`div`,X,[(b(!0),k(z,null,e(m.value,e=>(b(),k(`button`,{key:e.id,class:L([`mp-chip`,{active:D.value.includes(e.id)}]),onClick:()=>{let t=D.value.indexOf(e.id);t>=0?D.value.splice(t,1):D.value.push(e.id)}},h(e.label),11,ve))),128)),D.value.length?(b(),k(`button`,{key:0,class:`mp-chip clear`,onClick:l[2]||=e=>D.value=[]},h(o(H)(`@MKT:全部来源`)),1)):f(``,!0)])]),j((b(),k(`div`,ye,[(b(!0),k(z,null,e(m.value,t=>(b(),k(`section`,{key:t.id,class:`mp-group`},[a(`header`,be,[a(`h3`,xe,h(t.label),1),t.status===`ok`?(b(),k(`span`,Se,h(t.items.length),1)):(b(),k(`span`,Ce,[p(g,null,{default:T(()=>[p(o(C))]),_:1}),d(` `+h(t.error||o(H)(`@MKT:来源不可用`)),1)])),t.homepage?(b(),k(`a`,{key:2,class:`mp-group-link`,href:t.homepage,target:`_blank`,rel:`noopener noreferrer`,title:t.homepage},[p(g,null,{default:T(()=>[p(o(A))]),_:1})],8,we)):f(``,!0)]),t.status===`ok`&&t.items.length?(b(),k(`div`,Te,[(b(!0),k(z,null,e(t.items,t=>(b(),k(`article`,{key:K(t),class:`mp-card`},[a(`div`,Z,[a(`span`,{class:`mp-card-name`,title:t.name},h(t.name),9,Ee),ue(t)?(b(),k(`span`,De,[p(g,null,{default:T(()=>[t.stars?(b(),i(o(ne),{key:0})):(b(),i(o(N),{key:1}))]),_:2},1024),d(` `+h(ue(t)),1)])):f(``,!0)]),a(`p`,{class:`mp-card-desc`,title:t.description},h(t.description||o(H)(`@MKT:暂无描述`)),9,Q),a(`div`,$,[t.package?(b(),k(`code`,{key:0,class:`mp-meta-pkg`,title:t.package},h(t.package),9,Oe)):t.repository?(b(),k(`span`,{key:1,class:`mp-meta-repo`,title:t.repository+(t.subpath?` · `+t.subpath:``)},[d(h(t.repository),1),t.subpath?(b(),k(z,{key:0},[d(` · `+h(t.subpath),1)],64)):f(``,!0)],8,ke)):f(``,!0),t.transport===`remote`?(b(),k(`span`,Ae,h(o(H)(`@MKT:远程服务`)),1)):f(``,!0),(b(!0),k(z,null,e((t.tags||[]).slice(0,2),e=>(b(),k(`span`,{key:e,class:`mp-tag`},h(e),1))),128))]),a(`div`,je,[t.upstream?(b(),k(`a`,{key:0,class:`mp-card-link`,href:t.upstream,target:`_blank`,rel:`noopener noreferrer`},h(o(H)(`@MKT:查看来源`)),9,Me)):f(``,!0),l[6]||=a(`span`,{class:`mp-foot-spacer`},null,-1),t.installed?(b(),k(`span`,Ne,[p(g,null,{default:T(()=>[p(o(ae))]),_:1}),d(h(o(H)(`@MKT:已安装`)),1)])):t.installable===!1?(b(),k(`span`,Fe,h(o(H)(`@MKT:暂不支持一键安装`)),1)):(b(),k(`button`,{key:2,class:`mp-install-btn`,disabled:de(t),onClick:e=>it(t)},h(de(t)?o(H)(`@MKT:安装中...`):o(H)(`@MKT:安装`)),9,Pe))])]))),128))])):t.status===`ok`?(b(),k(`div`,Ie,h(o(H)(`@MKT:该来源暂无结果`)),1)):f(``,!0)]))),128)),_.value.length?(b(),k(`section`,Le,[a(`header`,Re,[a(`h3`,ze,h(o(H)(`@MKT:已安装`)),1),a(`span`,Be,h(_.value.length),1)]),(b(),k(z,null,e([`project`,`global`],t=>a(`div`,{key:t},[q.value[t]?.length?(b(),k(`div`,Ve,[a(`div`,He,h(t===`project`?o(H)(`@MKT:当前项目`):o(H)(`@MKT:g ai 智能体`)),1),a(`div`,Ue,[(b(!0),k(z,null,e(q.value[t],e=>(b(),k(`div`,{key:t+e.id,class:`mp-installed-row`},[a(`span`,{class:`mp-installed-name`,title:e.name},h(e.name),9,We),e.id&&e.id!==e.name?(b(),k(`code`,{key:0,class:`mp-installed-id`,title:e.dir||e.file||e.id},h(e.id),9,Ge)):f(``,!0),e.package?(b(),k(`code`,Ke,h(e.package),1)):f(``,!0),e.requiredEnv?.length?(b(),k(`span`,qe,h(o(H)(`@MKT:待配置`))+`: `+h(e.requiredEnv.join(`, `)),1)):f(``,!0),l[7]||=a(`span`,{class:`mp-foot-spacer`},null,-1),a(`button`,{class:`mp-reveal-btn`,disabled:B.value.has(t+e.id),title:e.dir||e.file||``,onClick:t=>st(e)},[p(g,null,{default:T(()=>[p(o(r))]),_:1}),d(` `+h(o(H)(`@MKT:打开文件夹`)),1)],8,Je),a(`button`,{class:`mp-remove-btn`,disabled:R.value.has(t+e.id),onClick:t=>ct(e)},[p(g,null,{default:T(()=>[p(o(M))]),_:1}),d(` `+h(R.value.has(t+e.id)?o(H)(`@MKT:卸载中...`):o(H)(`@MKT:卸载`)),1)],8,Ye)]))),128))])])):f(``,!0)])),64))])):f(``,!0),!v.value&&!m.value.length?(b(),k(`div`,Xe,h(o(H)(`@MKT:加载失败`)),1)):f(``,!0)])),[[O,v.value]]),p(ce,{modelValue:J.visible,"onUpdate:modelValue":l[5]||=e=>J.visible=e,title:o(H)(`@MKT:配置 MCP`),width:`460px`,type:`flex`,"close-on-click-modal":!1,"append-to-body":``},{footer:T(()=>[a(`button`,{class:`mkt-cancel`,onClick:l[4]||=e=>J.visible=!1},h(o(H)(`@MKT:取消`)),1),a(`button`,{class:`mkt-confirm`,onClick:rt},h(o(H)(`@MKT:安装`)),1)]),default:T(()=>[J.item?(b(),k(`div`,Ze,[a(`p`,Qe,h(J.item.name),1),(b(!0),k(z,null,e(Object.keys(J.env),e=>(b(),k(`div`,{key:e,class:`mkt-field`},[a(`label`,null,h(e),1),j(a(`input`,{"onUpdate:modelValue":t=>J.env[e]=t,type:`text`,autocomplete:`off`,placeholder:o(H)(`@MKT:环境变量值`),spellcheck:`false`},null,8,$e),[[x,J.env[e]]])]))),128)),J.item.args?.length?(b(),k(`div`,et,[a(`label`,null,h(o(H)(`@MKT:启动参数`)),1),j(a(`input`,{"onUpdate:modelValue":l[3]||=e=>J.args=e,type:`text`,autocomplete:`off`,spellcheck:`false`},null,512),[[x,J.args]]),a(`p`,tt,h(o(H)(`@MKT:参数提示`)),1)])):f(``,!0)])):f(``,!0)]),_:1},8,[`modelValue`,`title`])])}}}),[[`__scopeId`,`data-v-79426bd0`]]);n(),I(),m();var rt={class:`agent-chat-area`},it={class:`agent-tabs`,role:`tablist`},at=[`aria-selected`,`onClick`],ot={class:`agent-tab-body`},st={key:0,class:`agent-chat-pane`},ct={key:0,class:`agent-list-page`},lt={key:0,class:`agent-page-bar`},ut=[`title`,`aria-label`],dt={class:`agent-page-title`},ft={key:0,class:`chat-loading`},pt=U(l({__name:`AgentView`,setup(n){let r=se(),s=w(null),{narrow:c}=J(s),l=w(`chat`),u=w(`chat`),d=g(()=>u.value===`mcp`?`mcp`:`skill`),m=g(()=>[{id:`chat`,label:H(`@AGENT:对话`),icon:D},{id:`skill`,label:H(`@AGENT:Skill 广场`),icon:_},{id:`mcp`,label:H(`@AGENT:MCP 广场`),icon:R}]),{sessions:te,sessionsLoading:ne,currentSessionId:x,messages:S,isStreaming:C,sessionLoading:E,loadSessions:O,loadSession:re,deleteSession:A,renameSession:j,newSession:M,sendMessage:N,pendingQuestion:ie,answeringQuestion:I,answerQuestion:ae,isSessionGenerating:oe,currentEngine:U,pendingEngine:ce,isEngineLocked:Y,pickEngine:pe,stop:me}=de(),he=g(()=>Y.value?U.value:ce.value);function ge(e){Y.value||pe(e)}let _e=g(()=>{let e=r.theme;return e===`dark`||e===`auto`&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}),X=g(()=>W(te.value,oe)),ve=K(),ye=g(()=>X.value.find(e=>e.id===x.value)?.title||H(`@AGENT:对话`)),be={"--welcome-avatar":`url("${q}")`},xe=g(()=>[{id:`p1`,label:H(`@AGENT:查看项目结构`),prompt:H(`@AGENT:prompt_p1`)},{id:`p2`,label:H(`@AGENT:分析代码质量`),prompt:H(`@AGENT:prompt_p2`)},{id:`p3`,label:H(`@AGENT:帮我写测试`),prompt:H(`@AGENT:prompt_p3`)},{id:`p4`,label:H(`@AGENT:Git 状态检查`),prompt:H(`@AGENT:prompt_p4`)},{id:`p5`,label:H(`@AGENT:帮我启动项目`),prompt:H(`@AGENT:prompt_p5`)}]);async function Se(e){await N(e.text,e.files),await v(),Z()}async function Ce(e){await N(e.prompt),await v(),Z()}let we=le(),Te=w(null);function Z(e=!0){Te.value?.scrollToBottom(e)}F(()=>S.value.length,()=>{v(()=>Z(!1))});function Ee(e){re(e),l.value=`chat`}function De(){M(),l.value=`chat`}let Q=w(280),$=w(!1);function Oe(e){$.value=!0;let t=e.clientX,n=Q.value,r=e=>{let r=e.clientX-t,i=Math.max(200,Math.min(500,n+r));Q.value=i},i=()=>{$.value=!1,document.removeEventListener(`mousemove`,r),document.removeEventListener(`mouseup`,i)};document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)}return F(c,e=>{e||(l.value=`chat`)}),F(()=>[r.currentDirectory,C.value],async([e,t],n)=>{let r=!n||e!==n[0],i=!!n&&n[1]===!0&&!t;(r||i)&&await O(),x.value&&!C.value&&!te.value.some(e=>e.sessionId===x.value)&&M()},{immediate:!0}),(n,r)=>(b(),k(`div`,{ref_key:`rootRef`,ref:s,class:`agent-view`},[u.value===`chat`&&!o(c)?(b(),k(z,{key:0},[a(`aside`,{class:`agent-sidebar`,style:y({width:Q.value+`px`})},[p(o(V),{class:`agent-conversations`,items:X.value,"active-id":o(x),loading:o(ne),labels:o(ve),onSelect:Ee,onNew:De,onRename:o(j),onDelete:o(A)},null,8,[`items`,`active-id`,`loading`,`labels`,`onRename`,`onDelete`])],4),a(`div`,{class:L([`sidebar-resizer`,{active:$.value}]),onMousedown:Oe},null,34)],64)):f(``,!0),a(`main`,rt,[a(`nav`,it,[(b(!0),k(z,null,e(m.value,e=>(b(),k(`button`,{key:e.id,type:`button`,class:L([`agent-tab`,{active:u.value===e.id}]),role:`tab`,"aria-selected":u.value===e.id,onClick:t=>u.value=e.id},[p(o(ee),null,{default:T(()=>[(b(),i(P(e.icon)))]),_:2},1024),a(`span`,null,h(e.label),1)],10,at))),128)),u.value===`chat`?(b(),i(fe,{key:0,class:`agent-engine`,engine:he.value,locked:o(Y),onSelect:ge},null,8,[`engine`,`locked`])):f(``,!0)]),a(`div`,ot,[u.value===`chat`?(b(),k(`div`,st,[o(c)&&l.value===`list`?(b(),k(`div`,ct,[p(o(V),{class:`agent-conversations`,items:X.value,"active-id":o(x),loading:o(ne),labels:o(ve),onSelect:Ee,onNew:De,onRename:o(j),onDelete:o(A)},null,8,[`items`,`active-id`,`loading`,`labels`,`onRename`,`onDelete`])])):(b(),k(z,{key:1},[o(c)?(b(),k(`div`,lt,[a(`button`,{type:`button`,class:`agent-page-back`,title:o(H)(`@AGENT:返回会话列表`),"aria-label":o(H)(`@AGENT:返回会话列表`),onClick:r[0]||=e=>l.value=`list`},[...r[1]||=[a(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[a(`line`,{x1:`19`,y1:`12`,x2:`5`,y2:`12`}),a(`polyline`,{points:`12 19 5 12 12 5`})],-1)]],8,ut),a(`span`,dt,h(ye.value),1)])):f(``,!0),a(`div`,{class:`agent-chat-host`,style:be},[o(E)?(b(),k(`div`,ft,[p(o(ee),{class:`is-loading`,size:32},{default:T(()=>[p(o(t))]),_:1}),a(`span`,null,h(o(H)(`@AGENT:加载会话中...`)),1)])):(b(),i(o(B),{key:1,ref_key:`chatContainerRef`,ref:Te,messages:o(S),"preset-questions":xe.value,"welcome-title":o(H)(`@AGENT:智能体助手`),"welcome-description":o(H)(`@AGENT:我可以帮你阅读代码、执行命令、修改文件。选择下方话题或直接输入你的问题。`),"assistant-name":o(ue),"assistant-avatar":o(q),theme:_e.value,disabled:o(C),generating:o(C),"upload-config":{accept:o(G)},placeholder:o(C)?o(H)(`@AGENT:正在生成中...`):o(H)(`@AGENT:输入消息,Enter 发送`),question:o(ie),"question-submitting":o(I),"question-labels":o(we),"plan-config":{labels:{title:o(H)(`@AGENT:计划`),raw:o(H)(`@AGENT:原始参数`)}},onSend:Se,onSelect:Ce,onStop:o(me),onAnswer:o(ae)},null,8,[`messages`,`preset-questions`,`welcome-title`,`welcome-description`,`assistant-name`,`assistant-avatar`,`theme`,`disabled`,`generating`,`upload-config`,`placeholder`,`question`,`question-submitting`,`question-labels`,`plan-config`,`onStop`,`onAnswer`]))])],64))])):(b(),i(nt,{key:1,type:d.value},null,8,[`type`]))])])],512))}}),[[`__scopeId`,`data-v-05972cec`]]);export{pt as default};
@@ -1,2 +1,2 @@
1
- import"./rolldown-runtime-C0FnF6B9.js";import{At as e,Bn as t,Dn as n,En as r,Er as i,In as a,J as o,Nn as s,On as c,Pn as l,Pr as u,Qr as d,Tn as f,W as p,Wn as m,Yn as h,Zn as g,a as _,br as v,cr as y,i as b,kn as x,nt as S,or as C,pr as w,qn as T,qr as E,rt as D,z as O}from"./element-plus-CgEuJBlB.js";import{n as k,t as A}from"./_plugin-vue_export-helper-DkeTtFKF.js";import{t as j}from"./CommonDialog-Nwwi4-_9.js";async function M(e,t){let n=e.body.getReader(),r=new TextDecoder(`utf-8`),i=``;for(;;){let{done:e,value:a}=await n.read();if(e)break;i+=r.decode(a,{stream:!0});let o=i.split(`
2
- `);i=o.pop()??``;for(let e of o)e.trim()&&t(e)}i.trim()&&t(i)}async function N(){let e=await fetch(`/api/app-version`);return e.ok?e.json():{success:!1,current:``,latest:null,hasUpdate:!1,error:`HTTP ${e.status}`}}async function P(e){let t=await fetch(`/api/app-upgrade`,{method:`POST`});if(!t.ok){let n=`HTTP ${t.status}`;try{let e=await t.json();e?.error&&(n=e.error)}catch{}e({type:`error`,message:n}),e({type:`done`,code:t.status});return}if(!t.body){e({type:`error`,message:`响应无 body`}),e({type:`done`,code:-1});return}await M(t,t=>{try{e(JSON.parse(t))}catch{}})}async function F(){let e=await fetch(`/api/app-restart`,{method:`POST`});if(!e.ok){let t=`HTTP ${e.status}`;try{let n=await e.json();n?.error&&(t=n.error)}catch{}throw Error(t)}if(!e.body)throw Error(`响应无 body`);return new Promise((t,n)=>{let r=!1,i=e=>{r||(r=!0,e())};M(e,e=>{try{let r=JSON.parse(e);r.type===`ready`&&typeof r.port==`number`&&r.port>0?i(()=>t(r.port)):r.type===`timeout`?i(()=>n(Error(`restart.timeout`))):r.type===`error`&&i(()=>n(Error(r.message||`restart.failed`)))}catch{}}).then(()=>{i(()=>n(Error(`restart.stream-closed`)))}).catch(()=>{})})}t(),w(),u();var I={key:3},L={key:4},R={key:5},z={key:0,class:`upgrade-hint`},B={key:0,class:`upgrade-countdown`},V={key:1,class:`upgrade-manual`},H={class:`upgrade-manual__label`},U=`npm install -g zen-gitsync --registry https://registry.npmjs.org/`,W=A(a({__name:`UpgradeDialog`,props:{modelValue:{type:Boolean},logs:{},status:{},countdown:{default:0}},emits:[`update:modelValue`,`retry`,`restart`,`cancel`],setup(t,{emit:a}){let u=t,f=a,p=v(null);C(()=>u.logs,async()=>{await m(),p.value&&(p.value.scrollTop=p.value.scrollHeight)});function h(){u.status!==`running`&&(u.status===`success`&&u.countdown>0&&f(`cancel`),f(`update:modelValue`,!1))}function b(){f(`retry`)}function w(){f(`restart`)}function T(){f(`cancel`),f(`update:modelValue`,!1)}async function A(){try{await navigator.clipboard.writeText(U),_.success(k(`@F13B4:已复制升级命令`))}catch{_.warning(k(`@F13B4:复制失败,请手动复制`))}}return(a,u)=>{let m=o,_=O;return g(),n(j,{"model-value":t.modelValue,"onUpdate:modelValue":u[0]||=e=>f(`update:modelValue`,e),title:i(k)(`@F13B4:升级`),width:`680px`,type:`flex`,"close-on-click-modal":!1,"close-on-press-escape":!1,"show-close":t.status!==`running`,"append-to-body":``,onClose:h},{footer:y(()=>[t.status===`failed`?(g(),n(_,{key:0,type:`primary`,onClick:b},{default:y(()=>[s(d(i(k)(`@F13B4:重试`)),1)]),_:1})):c(``,!0),t.status===`failed`?(g(),n(_,{key:1,onClick:A},{default:y(()=>[s(d(i(k)(`@F13B4:复制升级命令`)),1)]),_:1})):c(``,!0),t.status===`success`?(g(),n(_,{key:2,type:`primary`,onClick:w},{default:y(()=>[s(d(i(k)(`@F13B4:立即重启并刷新`)),1)]),_:1})):c(``,!0),t.status===`success`?(g(),n(_,{key:3,onClick:T},{default:y(()=>[s(d(i(k)(`@F13B4:稍后手动重启`)),1)]),_:1})):c(``,!0),t.status===`running`?(g(),n(_,{key:4,disabled:``},{default:y(()=>[s(d(i(k)(`@F13B4:升级中`))+`... `,1)]),_:1})):c(``,!0)]),default:y(()=>[r(`div`,{class:E([`upgrade-status`,`is-${t.status}`])},[t.status===`running`?(g(),n(m,{key:0,class:`is-loading`},{default:y(()=>[l(i(e))]),_:1})):t.status===`success`?(g(),n(m,{key:1,color:`var(--color-success)`},{default:y(()=>[l(i(S))]),_:1})):(g(),n(m,{key:2,color:`var(--color-danger)`},{default:y(()=>[l(i(D))]),_:1})),t.status===`running`?(g(),x(`span`,I,d(i(k)(`@F13B4:升级中`)),1)):t.status===`success`?(g(),x(`span`,L,d(i(k)(`@F13B4:升级完成`)),1)):(g(),x(`span`,R,d(i(k)(`@F13B4:升级失败`)),1))],2),t.status===`success`?(g(),x(`p`,z,[s(d(i(k)(`@F13B4:新版本已全局安装,需要重启服务才能生效`))+` `,1),t.countdown>0?(g(),x(`span`,B,d(i(k)(`@F13B4:{seconds} 秒后自动刷新`,{seconds:t.countdown})),1)):c(``,!0)])):c(``,!0),t.status===`failed`?(g(),x(`p`,V,[r(`span`,H,d(i(k)(`@F13B4:手动升级命令`)),1),r(`code`,{class:`upgrade-manual__cmd`},d(U))])):c(``,!0),r(`pre`,{ref_key:`logEl`,ref:p,class:`upgrade-log`},d(t.logs||i(k)(`@F13B4:等待日志输出`)),513)]),_:1},8,[`model-value`,`title`,`show-close`])}}}),[[`__scopeId`,`data-v-5c9f402d`]]);t(),w(),u();var G={class:`app-version-badge`},K=[`aria-label`],q=[`aria-label`],J=[`title`,`aria-label`],Y={class:`upgrade-btn__label`},X={class:`upgrade-btn__version`},Z=`https://github.com/xz333221/zen-gitsync/releases`,Q=5,$=`app-version-check`,ee=36e5,te=A(a({__name:`AppVersionBadge`,setup(e){let t=`2.17.32`,n=v(t),a=f(()=>n.value||t),o=v(null),s=v(!1),u=v(``),m=v(`running`),S=v(0),C=null,w=v(!1);function E(){try{let e=sessionStorage.getItem($);if(!e)return null;let{at:t,data:n}=JSON.parse(e);return Date.now()-t>ee?null:n}catch{return null}}function D(e){try{sessionStorage.setItem($,JSON.stringify({at:Date.now(),data:e}))}catch{}}async function O(e=!1){let t=E();t&&(o.value=t);try{let t=await N();o.value=t,D(t),t.current&&(n.value=t.current),!e&&t.success&&t.hasUpdate&&_({type:`success`,message:k(`@F13B4:发现新版本 {version}`,{version:t.latest??``}),duration:4e3})}catch(t){e||_({type:`warning`,message:k(`@F13B4:检查更新失败 {error}`,{error:t?.message||``})})}}async function A(){if(o.value?.hasUpdate){try{await b.confirm(k(`@F13B4:确定要从 {current} 升级到 {latest} 吗?`,{current:o.value.current,latest:o.value.latest}),k(`@F13B4:升级`),{confirmButtonText:k(`@F13B4:确定升级`),cancelButtonText:k(`@F13B4:取消`),type:`info`})}catch{return}u.value=``,m.value=`running`,s.value=!0,await P(e=>{if(e.type===`done`){if(m.value=e.code===0?`success`:`failed`,e.code===0){try{sessionStorage.removeItem($)}catch{}o.value?.latest&&(n.value=o.value.latest),j()}}else e.message&&(u.value+=e.message)})}}function j(){M(),S.value=Q,C=setInterval(()=>{--S.value,S.value<=0&&(C&&=(clearInterval(C),null),L())},1e3)}function M(){C&&=(clearInterval(C),null),S.value=0}function I(){M()}async function L(){if(M(),!w.value){w.value=!0;try{let e=await F(),{pathname:t,search:n,hash:r}=window.location;window.location.href=`http://localhost:${e}${t}${n}${r}`}catch(e){let t=e?.message||``,n={"restart.timeout":`@F13B4:重启超时`,"restart.stream-closed":`@F13B4:重启失败,请刷新页面重试`,"restart.failed":`@F13B4:重启失败`}[t];_({type:`warning`,message:n?k(n):k(`@F13B4:重启失败 {error}`,{error:t})}),w.value=!1}}}return T(()=>{M()}),h(()=>{O(!0)}),(e,t)=>{let n=p;return g(),x(`div`,G,[l(n,{content:i(k)(`@F13B4:在 GitHub 上查看源码`),placement:`top`,effect:`dark`,"show-after":300},{default:y(()=>[r(`a`,{href:`https://github.com/xz333221/zen-gitsync`,target:`_blank`,rel:`noopener noreferrer`,class:`badge-icon-link`,"aria-label":i(k)(`@F13B4:在 GitHub 上查看源码`)},[...t[1]||=[r(`svg`,{viewBox:`0 0 24 24`,width:`15`,height:`15`,"aria-hidden":`true`,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`},[r(`path`,{d:`M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0 1 12 6.844a9.59 9.59 0 0 1 2.504.337c1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.02 10.02 0 0 0 22 12.017C22 6.484 17.522 2 12 2z`})],-1)]],8,K)]),_:1},8,[`content`]),l(n,{content:i(k)(`@F13B4:在 npm 上查看包`),placement:`top`,effect:`dark`,"show-after":300},{default:y(()=>[r(`a`,{href:`https://www.npmjs.com/package/zen-gitsync`,target:`_blank`,rel:`noopener noreferrer`,class:`badge-icon-link badge-icon-link--npm`,"aria-label":i(k)(`@F13B4:在 npm 上查看包`)},[...t[2]||=[r(`svg`,{viewBox:`0 0 24 24`,width:`15`,height:`15`,"aria-hidden":`true`,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`},[r(`path`,{d:`M2 2v20h20V2H2zm17.167 17.167H12.5v-10h-3.333v10H4.833V4.833h14.334v14.334z`})],-1)]],8,q)]),_:1},8,[`content`]),l(n,{content:i(k)(`@F13B4:查看更新`),placement:`top`,effect:`dark`,"show-after":300},{default:y(()=>[r(`a`,{href:Z,target:`_blank`,rel:`noopener noreferrer`,class:`version-link`},`v`+d(a.value),1)]),_:1},8,[`content`]),o.value?.hasUpdate?(g(),x(`button`,{key:0,type:`button`,class:`upgrade-btn`,title:i(k)(`@F13B4:发现新版本 {version},点击升级`,{version:o.value.latest??``}),"aria-label":i(k)(`@F13B4:发现新版本 {version},点击升级`,{version:o.value.latest??``}),onClick:A},[t[3]||=r(`span`,{class:`upgrade-btn__dot`,"aria-hidden":`true`},null,-1),r(`span`,Y,d(i(k)(`@F13B4:升级`)),1),r(`span`,X,`v`+d(o.value.latest),1)],8,J)):c(``,!0),l(W,{modelValue:s.value,"onUpdate:modelValue":t[0]||=e=>s.value=e,logs:u.value,status:m.value,countdown:S.value,onRetry:A,onRestart:L,onCancel:I},null,8,[`modelValue`,`logs`,`status`,`countdown`])])}}}),[[`__scopeId`,`data-v-4084e4be`]]);export{te as default};
1
+ import"./rolldown-runtime-C0FnF6B9.js";import{At as e,Bn as t,Dn as n,En as r,Er as i,In as a,J as o,Nn as s,On as c,Pn as l,Pr as u,Qr as d,Tn as f,W as p,Wn as m,Yn as h,Zn as g,a as _,br as v,cr as y,i as b,kn as x,nt as S,or as C,pr as w,qn as T,qr as E,rt as D,z as O}from"./element-plus-CgEuJBlB.js";import{n as k,t as A}from"./_plugin-vue_export-helper-D8rwCQpe.js";import{t as j}from"./CommonDialog-kDck8ITZ.js";async function M(e,t){let n=e.body.getReader(),r=new TextDecoder(`utf-8`),i=``;for(;;){let{done:e,value:a}=await n.read();if(e)break;i+=r.decode(a,{stream:!0});let o=i.split(`
2
+ `);i=o.pop()??``;for(let e of o)e.trim()&&t(e)}i.trim()&&t(i)}async function N(){let e=await fetch(`/api/app-version`);return e.ok?e.json():{success:!1,current:``,latest:null,hasUpdate:!1,error:`HTTP ${e.status}`}}async function P(e){let t=await fetch(`/api/app-upgrade`,{method:`POST`});if(!t.ok){let n=`HTTP ${t.status}`;try{let e=await t.json();e?.error&&(n=e.error)}catch{}e({type:`error`,message:n}),e({type:`done`,code:t.status});return}if(!t.body){e({type:`error`,message:`响应无 body`}),e({type:`done`,code:-1});return}await M(t,t=>{try{e(JSON.parse(t))}catch{}})}async function F(){let e=await fetch(`/api/app-restart`,{method:`POST`});if(!e.ok){let t=`HTTP ${e.status}`;try{let n=await e.json();n?.error&&(t=n.error)}catch{}throw Error(t)}if(!e.body)throw Error(`响应无 body`);return new Promise((t,n)=>{let r=!1,i=e=>{r||(r=!0,e())};M(e,e=>{try{let r=JSON.parse(e);r.type===`ready`&&typeof r.port==`number`&&r.port>0?i(()=>t(r.port)):r.type===`timeout`?i(()=>n(Error(`restart.timeout`))):r.type===`error`&&i(()=>n(Error(r.message||`restart.failed`)))}catch{}}).then(()=>{i(()=>n(Error(`restart.stream-closed`)))}).catch(()=>{})})}t(),w(),u();var I={key:3},L={key:4},R={key:5},z={key:0,class:`upgrade-hint`},B={key:0,class:`upgrade-countdown`},V={key:1,class:`upgrade-manual`},H={class:`upgrade-manual__label`},U=`npm install -g zen-gitsync --registry https://registry.npmjs.org/`,W=A(a({__name:`UpgradeDialog`,props:{modelValue:{type:Boolean},logs:{},status:{},countdown:{default:0}},emits:[`update:modelValue`,`retry`,`restart`,`cancel`],setup(t,{emit:a}){let u=t,f=a,p=v(null);C(()=>u.logs,async()=>{await m(),p.value&&(p.value.scrollTop=p.value.scrollHeight)});function h(){u.status!==`running`&&(u.status===`success`&&u.countdown>0&&f(`cancel`),f(`update:modelValue`,!1))}function b(){f(`retry`)}function w(){f(`restart`)}function T(){f(`cancel`),f(`update:modelValue`,!1)}async function A(){try{await navigator.clipboard.writeText(U),_.success(k(`@F13B4:已复制升级命令`))}catch{_.warning(k(`@F13B4:复制失败,请手动复制`))}}return(a,u)=>{let m=o,_=O;return g(),n(j,{"model-value":t.modelValue,"onUpdate:modelValue":u[0]||=e=>f(`update:modelValue`,e),title:i(k)(`@F13B4:升级`),width:`680px`,type:`flex`,"close-on-click-modal":!1,"close-on-press-escape":!1,"show-close":t.status!==`running`,"append-to-body":``,onClose:h},{footer:y(()=>[t.status===`failed`?(g(),n(_,{key:0,type:`primary`,onClick:b},{default:y(()=>[s(d(i(k)(`@F13B4:重试`)),1)]),_:1})):c(``,!0),t.status===`failed`?(g(),n(_,{key:1,onClick:A},{default:y(()=>[s(d(i(k)(`@F13B4:复制升级命令`)),1)]),_:1})):c(``,!0),t.status===`success`?(g(),n(_,{key:2,type:`primary`,onClick:w},{default:y(()=>[s(d(i(k)(`@F13B4:立即重启并刷新`)),1)]),_:1})):c(``,!0),t.status===`success`?(g(),n(_,{key:3,onClick:T},{default:y(()=>[s(d(i(k)(`@F13B4:稍后手动重启`)),1)]),_:1})):c(``,!0),t.status===`running`?(g(),n(_,{key:4,disabled:``},{default:y(()=>[s(d(i(k)(`@F13B4:升级中`))+`... `,1)]),_:1})):c(``,!0)]),default:y(()=>[r(`div`,{class:E([`upgrade-status`,`is-${t.status}`])},[t.status===`running`?(g(),n(m,{key:0,class:`is-loading`},{default:y(()=>[l(i(e))]),_:1})):t.status===`success`?(g(),n(m,{key:1,color:`var(--color-success)`},{default:y(()=>[l(i(S))]),_:1})):(g(),n(m,{key:2,color:`var(--color-danger)`},{default:y(()=>[l(i(D))]),_:1})),t.status===`running`?(g(),x(`span`,I,d(i(k)(`@F13B4:升级中`)),1)):t.status===`success`?(g(),x(`span`,L,d(i(k)(`@F13B4:升级完成`)),1)):(g(),x(`span`,R,d(i(k)(`@F13B4:升级失败`)),1))],2),t.status===`success`?(g(),x(`p`,z,[s(d(i(k)(`@F13B4:新版本已全局安装,需要重启服务才能生效`))+` `,1),t.countdown>0?(g(),x(`span`,B,d(i(k)(`@F13B4:{seconds} 秒后自动刷新`,{seconds:t.countdown})),1)):c(``,!0)])):c(``,!0),t.status===`failed`?(g(),x(`p`,V,[r(`span`,H,d(i(k)(`@F13B4:手动升级命令`)),1),r(`code`,{class:`upgrade-manual__cmd`},d(U))])):c(``,!0),r(`pre`,{ref_key:`logEl`,ref:p,class:`upgrade-log`},d(t.logs||i(k)(`@F13B4:等待日志输出`)),513)]),_:1},8,[`model-value`,`title`,`show-close`])}}}),[[`__scopeId`,`data-v-5c9f402d`]]);t(),w(),u();var G={class:`app-version-badge`},K=[`aria-label`],q=[`aria-label`],J=[`title`,`aria-label`],Y={class:`upgrade-btn__label`},X={class:`upgrade-btn__version`},Z=`https://github.com/xz333221/zen-gitsync/releases`,Q=5,$=`app-version-check`,ee=36e5,te=A(a({__name:`AppVersionBadge`,setup(e){let t=`2.17.33`,n=v(t),a=f(()=>n.value||t),o=v(null),s=v(!1),u=v(``),m=v(`running`),S=v(0),C=null,w=v(!1);function E(){try{let e=sessionStorage.getItem($);if(!e)return null;let{at:t,data:n}=JSON.parse(e);return Date.now()-t>ee?null:n}catch{return null}}function D(e){try{sessionStorage.setItem($,JSON.stringify({at:Date.now(),data:e}))}catch{}}async function O(e=!1){let t=E();t&&(o.value=t);try{let t=await N();o.value=t,D(t),t.current&&(n.value=t.current),!e&&t.success&&t.hasUpdate&&_({type:`success`,message:k(`@F13B4:发现新版本 {version}`,{version:t.latest??``}),duration:4e3})}catch(t){e||_({type:`warning`,message:k(`@F13B4:检查更新失败 {error}`,{error:t?.message||``})})}}async function A(){if(o.value?.hasUpdate){try{await b.confirm(k(`@F13B4:确定要从 {current} 升级到 {latest} 吗?`,{current:o.value.current,latest:o.value.latest}),k(`@F13B4:升级`),{confirmButtonText:k(`@F13B4:确定升级`),cancelButtonText:k(`@F13B4:取消`),type:`info`})}catch{return}u.value=``,m.value=`running`,s.value=!0,await P(e=>{if(e.type===`done`){if(m.value=e.code===0?`success`:`failed`,e.code===0){try{sessionStorage.removeItem($)}catch{}o.value?.latest&&(n.value=o.value.latest),j()}}else e.message&&(u.value+=e.message)})}}function j(){M(),S.value=Q,C=setInterval(()=>{--S.value,S.value<=0&&(C&&=(clearInterval(C),null),L())},1e3)}function M(){C&&=(clearInterval(C),null),S.value=0}function I(){M()}async function L(){if(M(),!w.value){w.value=!0;try{let e=await F(),{pathname:t,search:n,hash:r}=window.location;window.location.href=`http://localhost:${e}${t}${n}${r}`}catch(e){let t=e?.message||``,n={"restart.timeout":`@F13B4:重启超时`,"restart.stream-closed":`@F13B4:重启失败,请刷新页面重试`,"restart.failed":`@F13B4:重启失败`}[t];_({type:`warning`,message:n?k(n):k(`@F13B4:重启失败 {error}`,{error:t})}),w.value=!1}}}return T(()=>{M()}),h(()=>{O(!0)}),(e,t)=>{let n=p;return g(),x(`div`,G,[l(n,{content:i(k)(`@F13B4:在 GitHub 上查看源码`),placement:`top`,effect:`dark`,"show-after":300},{default:y(()=>[r(`a`,{href:`https://github.com/xz333221/zen-gitsync`,target:`_blank`,rel:`noopener noreferrer`,class:`badge-icon-link`,"aria-label":i(k)(`@F13B4:在 GitHub 上查看源码`)},[...t[1]||=[r(`svg`,{viewBox:`0 0 24 24`,width:`15`,height:`15`,"aria-hidden":`true`,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`},[r(`path`,{d:`M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0 1 12 6.844a9.59 9.59 0 0 1 2.504.337c1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.02 10.02 0 0 0 22 12.017C22 6.484 17.522 2 12 2z`})],-1)]],8,K)]),_:1},8,[`content`]),l(n,{content:i(k)(`@F13B4:在 npm 上查看包`),placement:`top`,effect:`dark`,"show-after":300},{default:y(()=>[r(`a`,{href:`https://www.npmjs.com/package/zen-gitsync`,target:`_blank`,rel:`noopener noreferrer`,class:`badge-icon-link badge-icon-link--npm`,"aria-label":i(k)(`@F13B4:在 npm 上查看包`)},[...t[2]||=[r(`svg`,{viewBox:`0 0 24 24`,width:`15`,height:`15`,"aria-hidden":`true`,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`},[r(`path`,{d:`M2 2v20h20V2H2zm17.167 17.167H12.5v-10h-3.333v10H4.833V4.833h14.334v14.334z`})],-1)]],8,q)]),_:1},8,[`content`]),l(n,{content:i(k)(`@F13B4:查看更新`),placement:`top`,effect:`dark`,"show-after":300},{default:y(()=>[r(`a`,{href:Z,target:`_blank`,rel:`noopener noreferrer`,class:`version-link`},`v`+d(a.value),1)]),_:1},8,[`content`]),o.value?.hasUpdate?(g(),x(`button`,{key:0,type:`button`,class:`upgrade-btn`,title:i(k)(`@F13B4:发现新版本 {version},点击升级`,{version:o.value.latest??``}),"aria-label":i(k)(`@F13B4:发现新版本 {version},点击升级`,{version:o.value.latest??``}),onClick:A},[t[3]||=r(`span`,{class:`upgrade-btn__dot`,"aria-hidden":`true`},null,-1),r(`span`,Y,d(i(k)(`@F13B4:升级`)),1),r(`span`,X,`v`+d(o.value.latest),1)],8,J)):c(``,!0),l(W,{modelValue:s.value,"onUpdate:modelValue":t[0]||=e=>s.value=e,logs:u.value,status:m.value,countdown:S.value,onRetry:A,onRestart:L,onCancel:I},null,8,[`modelValue`,`logs`,`status`,`countdown`])])}}}),[[`__scopeId`,`data-v-4084e4be`]]);export{te as default};
@@ -1 +1 @@
1
- import"./rolldown-runtime-C0FnF6B9.js";import{$n as e,Bn as t,Dn as n,En as r,Er as i,F as ee,G as te,Ht as a,I as ne,In as o,J as re,K as s,Nt as c,On as l,Pn as u,Pr as d,Qr as f,Tn as p,U as ie,Zn as m,br as h,cr as g,dn as _,kn as v,pr as y,qr as b,r as ae,tt as x,xn as S,yn as C,zt as w}from"./element-plus-CgEuJBlB.js";import{n as T,t as E}from"./_plugin-vue_export-helper-DkeTtFKF.js";import{t as D}from"./SvgIcon-U-AI95UV.js";import{t as O}from"./IconButton-BuiJBsJ3.js";import{r as k}from"./gitStore-CiBz68_Z.js";import{t as A}from"./CommonDialog-Nwwi4-_9.js";t(),y(),d(),_();var j={key:0,class:`branch-info`},M={class:`branch-wrapper`},N={class:`branch-btn`},P={class:`branch-btn-name`},F={class:`branch-btn-caret`},I={class:`branch-popover-inner`},L={class:`branch-search`},R={class:`branch-list`},z=[`onClick`],B={key:1,class:`branch-item-check-placeholder`},V={class:`branch-item-name`},oe={key:0,class:`branch-empty`},H={class:`branch-popover-footer`},U={class:`create-branch-content`},W={class:`form-label`},G={class:`form-label`},K={class:`dialog-footer`},q={class:`footer-actions`},se=[`disabled`],J=E(o({__name:`BranchSelector`,emits:[`branchChanged`],setup(t,{emit:o}){let d=k(),_=o,y=h(!1),E=h(``),J=p(()=>{let e=E.value.trim().toLowerCase();return e?d.allBranches.filter(t=>t.toLowerCase().includes(e)):d.allBranches});async function ce(e){if(e===d.currentBranch){y.value=!1;return}y.value=!1,await d.changeBranch(e)&&(_(`branchChanged`),d.refreshLog())}let Y=h(!1),X=h(``),Z=h(``);function le(){y.value=!1,Z.value=d.currentBranch,Y.value=!0}async function Q(){await d.createBranch(X.value,Z.value)&&(Y.value=!1,X.value=``,_(`branchChanged`))}let $=h(!1);async function ue(){if(!$.value){$.value=!0;try{await Promise.all([d.getCurrentBranch(!0),d.getBranchStatus(!0),d.getAllBranches()]),_(`branchChanged`),d.refreshLog()}finally{$.value=!1}}}return(t,o)=>{let p=re,h=ie,_=ae,k=s,de=ee,fe=ne,pe=te;return i(d).currentBranch?(m(),v(`div`,j,[r(`div`,M,[u(_,{visible:y.value,"onUpdate:visible":o[1]||=e=>y.value=e,placement:`top-start`,width:260,trigger:`click`,"popper-class":`branch-popover`,"show-arrow":!1,onShow:o[2]||=e=>E.value=``},{reference:g(()=>[r(`button`,N,[u(D,{"icon-class":`git-branch`,"class-name":`branch-btn-icon`}),r(`span`,P,f(i(d).currentBranch),1),r(`span`,F,[u(p,null,{default:g(()=>[...o[7]||=[r(`svg`,{viewBox:`0 0 1024 1024`,xmlns:`http://www.w3.org/2000/svg`},[r(`path`,{fill:`currentColor`,d:`M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.776a29.12 29.12 0 0 0 0-41.6 30.592 30.592 0 0 0-42.752 0z`})],-1)]]),_:1})])])]),default:g(()=>[r(`div`,I,[r(`div`,L,[u(h,{modelValue:E.value,"onUpdate:modelValue":o[0]||=e=>E.value=e,placeholder:i(T)(`@F13B4:搜索或签出分支`),size:`small`,clearable:``,autofocus:``},null,8,[`modelValue`,`placeholder`])]),r(`div`,R,[(m(!0),v(S,null,e(J.value,e=>(m(),v(`div`,{key:e,class:b([`branch-item`,{"is-active":e===i(d).currentBranch}]),onClick:t=>ce(e)},[e===i(d).currentBranch?(m(),n(p,{key:0,class:`branch-item-check`},{default:g(()=>[u(i(x))]),_:1})):(m(),v(`span`,B)),u(D,{"icon-class":`git-branch`,"class-name":`branch-item-icon`}),r(`span`,V,f(e),1)],10,z))),128)),J.value.length===0?(m(),v(`div`,oe,f(i(T)(`@F13B4:没有匹配的分支`)),1)):l(``,!0)]),r(`div`,H,[r(`button`,{class:`branch-create-btn`,onClick:le},[u(p,null,{default:g(()=>[u(i(w))]),_:1}),r(`span`,null,f(i(T)(`@F13B4:创建新分支`)),1)])])])]),_:1},8,[`visible`]),u(O,{tooltip:i(T)(`@CMDCON:刷新`),onClick:ue},{default:g(()=>[u(p,{class:b({"is-loading":$.value})},{default:g(()=>[u(i(a))]),_:1},8,[`class`])]),_:1},8,[`tooltip`])]),u(A,{modelValue:Y.value,"onUpdate:modelValue":o[6]||=e=>Y.value=e,title:i(T)(`@F13B4:创建新分支`),size:`small`,"destroy-on-close":!0,"append-to-body":!0,"custom-class":`create-branch-dialog`},{footer:g(()=>[r(`div`,K,[r(`div`,q,[r(`button`,{type:`button`,class:`dialog-cancel-btn`,onClick:o[5]||=e=>Y.value=!1},f(i(T)(`@F13B4:取消`)),1),r(`button`,{type:`button`,class:`dialog-confirm-btn`,onClick:Q,disabled:i(d).isCreatingBranch},[i(d).isCreatingBranch?(m(),n(p,{key:1,class:`is-loading`},{default:g(()=>[...o[8]||=[r(`svg`,{viewBox:`0 0 1024 1024`,xmlns:`http://www.w3.org/2000/svg`},[r(`path`,{fill:`currentColor`,d:`M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32zm0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32zm448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32zm-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32z`})],-1)]]),_:1})):(m(),n(p,{key:0},{default:g(()=>[u(i(x))]),_:1})),r(`span`,null,f(i(T)(`@F13B4:创建`)),1)],8,se)])])]),default:g(()=>[r(`div`,U,[u(pe,{model:{newBranchName:X.value,selectedBaseBranch:Z.value},"label-position":`top`},{default:g(()=>[u(k,null,{label:g(()=>[r(`div`,W,[u(p,{class:`label-icon`},{default:g(()=>[u(i(w))]),_:1}),r(`span`,null,f(i(T)(`@F13B4:新分支名称`)),1)])]),default:g(()=>[u(h,{modelValue:X.value,"onUpdate:modelValue":o[3]||=e=>X.value=e,placeholder:i(T)(`@F13B4:请输入新分支名称`),class:`modern-input`,size:`large`,onKeyup:C(Q,[`enter`])},null,8,[`modelValue`,`placeholder`])]),_:1}),u(k,null,{label:g(()=>[r(`div`,G,[u(p,{class:`label-icon`},{default:g(()=>[u(i(c))]),_:1}),r(`span`,null,f(i(T)(`@F13B4:基于分支`)),1)])]),default:g(()=>[u(fe,{modelValue:Z.value,"onUpdate:modelValue":o[4]||=e=>Z.value=e,placeholder:i(T)(`@F13B4:选择基础分支`),class:`modern-select`,size:`large`,style:{width:`100%`}},{default:g(()=>[(m(!0),v(S,null,e(i(d).allBranches,e=>(m(),n(de,{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1})]),_:1},8,[`model`])])]),_:1},8,[`modelValue`,`title`])])):l(``,!0)}}}),[[`__scopeId`,`data-v-407da320`]]);export{J as default};
1
+ import"./rolldown-runtime-C0FnF6B9.js";import{$n as e,Bn as t,Dn as n,En as r,Er as i,F as ee,G as te,Ht as a,I as ne,In as o,J as re,K as s,Nt as c,On as l,Pn as u,Pr as d,Qr as f,Tn as p,U as ie,Zn as m,br as h,cr as g,dn as _,kn as v,pr as y,qr as b,r as ae,tt as x,xn as S,yn as C,zt as w}from"./element-plus-CgEuJBlB.js";import{n as T,t as E}from"./_plugin-vue_export-helper-D8rwCQpe.js";import{t as D}from"./SvgIcon-B-2iTLW-.js";import{t as O}from"./IconButton-BflzboUD.js";import{r as k}from"./gitStore-BcrFZogC.js";import{t as A}from"./CommonDialog-kDck8ITZ.js";t(),y(),d(),_();var j={key:0,class:`branch-info`},M={class:`branch-wrapper`},N={class:`branch-btn`},P={class:`branch-btn-name`},F={class:`branch-btn-caret`},I={class:`branch-popover-inner`},L={class:`branch-search`},R={class:`branch-list`},z=[`onClick`],B={key:1,class:`branch-item-check-placeholder`},V={class:`branch-item-name`},oe={key:0,class:`branch-empty`},H={class:`branch-popover-footer`},U={class:`create-branch-content`},W={class:`form-label`},G={class:`form-label`},K={class:`dialog-footer`},q={class:`footer-actions`},se=[`disabled`],J=E(o({__name:`BranchSelector`,emits:[`branchChanged`],setup(t,{emit:o}){let d=k(),_=o,y=h(!1),E=h(``),J=p(()=>{let e=E.value.trim().toLowerCase();return e?d.allBranches.filter(t=>t.toLowerCase().includes(e)):d.allBranches});async function ce(e){if(e===d.currentBranch){y.value=!1;return}y.value=!1,await d.changeBranch(e)&&(_(`branchChanged`),d.refreshLog())}let Y=h(!1),X=h(``),Z=h(``);function le(){y.value=!1,Z.value=d.currentBranch,Y.value=!0}async function Q(){await d.createBranch(X.value,Z.value)&&(Y.value=!1,X.value=``,_(`branchChanged`))}let $=h(!1);async function ue(){if(!$.value){$.value=!0;try{await Promise.all([d.getCurrentBranch(!0),d.getBranchStatus(!0),d.getAllBranches()]),_(`branchChanged`),d.refreshLog()}finally{$.value=!1}}}return(t,o)=>{let p=re,h=ie,_=ae,k=s,de=ee,fe=ne,pe=te;return i(d).currentBranch?(m(),v(`div`,j,[r(`div`,M,[u(_,{visible:y.value,"onUpdate:visible":o[1]||=e=>y.value=e,placement:`top-start`,width:260,trigger:`click`,"popper-class":`branch-popover`,"show-arrow":!1,onShow:o[2]||=e=>E.value=``},{reference:g(()=>[r(`button`,N,[u(D,{"icon-class":`git-branch`,"class-name":`branch-btn-icon`}),r(`span`,P,f(i(d).currentBranch),1),r(`span`,F,[u(p,null,{default:g(()=>[...o[7]||=[r(`svg`,{viewBox:`0 0 1024 1024`,xmlns:`http://www.w3.org/2000/svg`},[r(`path`,{fill:`currentColor`,d:`M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.776a29.12 29.12 0 0 0 0-41.6 30.592 30.592 0 0 0-42.752 0z`})],-1)]]),_:1})])])]),default:g(()=>[r(`div`,I,[r(`div`,L,[u(h,{modelValue:E.value,"onUpdate:modelValue":o[0]||=e=>E.value=e,placeholder:i(T)(`@F13B4:搜索或签出分支`),size:`small`,clearable:``,autofocus:``},null,8,[`modelValue`,`placeholder`])]),r(`div`,R,[(m(!0),v(S,null,e(J.value,e=>(m(),v(`div`,{key:e,class:b([`branch-item`,{"is-active":e===i(d).currentBranch}]),onClick:t=>ce(e)},[e===i(d).currentBranch?(m(),n(p,{key:0,class:`branch-item-check`},{default:g(()=>[u(i(x))]),_:1})):(m(),v(`span`,B)),u(D,{"icon-class":`git-branch`,"class-name":`branch-item-icon`}),r(`span`,V,f(e),1)],10,z))),128)),J.value.length===0?(m(),v(`div`,oe,f(i(T)(`@F13B4:没有匹配的分支`)),1)):l(``,!0)]),r(`div`,H,[r(`button`,{class:`branch-create-btn`,onClick:le},[u(p,null,{default:g(()=>[u(i(w))]),_:1}),r(`span`,null,f(i(T)(`@F13B4:创建新分支`)),1)])])])]),_:1},8,[`visible`]),u(O,{tooltip:i(T)(`@CMDCON:刷新`),onClick:ue},{default:g(()=>[u(p,{class:b({"is-loading":$.value})},{default:g(()=>[u(i(a))]),_:1},8,[`class`])]),_:1},8,[`tooltip`])]),u(A,{modelValue:Y.value,"onUpdate:modelValue":o[6]||=e=>Y.value=e,title:i(T)(`@F13B4:创建新分支`),size:`small`,"destroy-on-close":!0,"append-to-body":!0,"custom-class":`create-branch-dialog`},{footer:g(()=>[r(`div`,K,[r(`div`,q,[r(`button`,{type:`button`,class:`dialog-cancel-btn`,onClick:o[5]||=e=>Y.value=!1},f(i(T)(`@F13B4:取消`)),1),r(`button`,{type:`button`,class:`dialog-confirm-btn`,onClick:Q,disabled:i(d).isCreatingBranch},[i(d).isCreatingBranch?(m(),n(p,{key:1,class:`is-loading`},{default:g(()=>[...o[8]||=[r(`svg`,{viewBox:`0 0 1024 1024`,xmlns:`http://www.w3.org/2000/svg`},[r(`path`,{fill:`currentColor`,d:`M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32zm0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32zm448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32zm-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32z`})],-1)]]),_:1})):(m(),n(p,{key:0},{default:g(()=>[u(i(x))]),_:1})),r(`span`,null,f(i(T)(`@F13B4:创建`)),1)],8,se)])])]),default:g(()=>[r(`div`,U,[u(pe,{model:{newBranchName:X.value,selectedBaseBranch:Z.value},"label-position":`top`},{default:g(()=>[u(k,null,{label:g(()=>[r(`div`,W,[u(p,{class:`label-icon`},{default:g(()=>[u(i(w))]),_:1}),r(`span`,null,f(i(T)(`@F13B4:新分支名称`)),1)])]),default:g(()=>[u(h,{modelValue:X.value,"onUpdate:modelValue":o[3]||=e=>X.value=e,placeholder:i(T)(`@F13B4:请输入新分支名称`),class:`modern-input`,size:`large`,onKeyup:C(Q,[`enter`])},null,8,[`modelValue`,`placeholder`])]),_:1}),u(k,null,{label:g(()=>[r(`div`,G,[u(p,{class:`label-icon`},{default:g(()=>[u(i(c))]),_:1}),r(`span`,null,f(i(T)(`@F13B4:基于分支`)),1)])]),default:g(()=>[u(fe,{modelValue:Z.value,"onUpdate:modelValue":o[4]||=e=>Z.value=e,placeholder:i(T)(`@F13B4:选择基础分支`),class:`modern-select`,size:`large`,style:{width:`100%`}},{default:g(()=>[(m(!0),v(S,null,e(i(d).allBranches,e=>(m(),n(de,{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1})]),_:1},8,[`model`])])]),_:1},8,[`modelValue`,`title`])])):l(``,!0)}}}),[[`__scopeId`,`data-v-407da320`]]);export{J as default};
@@ -1 +1 @@
1
- .stage-button.from-drawer[data-v-7c59a857]{padding:6px var(--spacing-md);font-size:var(--font-size-sm);height:32px}.stage-button.from-status[data-v-7c59a857]{padding:var(--spacing-base);font-size:var(--font-size-sm);height:36px}.stage-button.from-form[data-v-7c59a857]{font-size:var(--font-size-mid);height:32px}.stage-button.is-selective[data-v-7c59a857]{box-shadow:0 0 0 2px var(--tint-primary-35)}.commit-button.from-drawer[data-v-056f6f5d]{padding:6px var(--spacing-md);font-size:var(--font-size-sm);height:32px}.commit-button.from-status[data-v-056f6f5d]{padding:var(--spacing-base);font-size:var(--font-size-sm);height:36px}.commit-button.from-form[data-v-056f6f5d]{font-size:var(--font-size-mid);height:32px}.commit-button.is-committing[data-v-056f6f5d]{min-width:96px;transition:min-width var(--transition-base) var(--ease-custom)}[data-v-3d7c968a] .el-overlay-dialog{will-change:auto!important}[data-v-3d7c968a] .el-dialog{overflow:hidden;will-change:auto!important;border-radius:12px!important}.push-progress-dialog[data-v-3d7c968a] .el-dialog__header{padding:var(--spacing-lg) var(--spacing-xl)}.push-progress-dialog[data-v-3d7c968a] .el-dialog__title{font-size:var(--font-size-md);letter-spacing:.5px;font-weight:600}.status-progress[data-v-3d7c968a] .el-dialog__title{color:var(--color-primary)}.status-success[data-v-3d7c968a] .el-dialog__title{color:var(--color-success)}.status-error[data-v-3d7c968a] .el-dialog__title{color:var(--color-danger)}.push-progress-container[data-v-3d7c968a]{gap:var(--spacing-lg);padding:var(--spacing-md);flex-direction:column;display:flex}.push-progress-container[data-v-3d7c968a] *{will-change:auto}@keyframes success-pulse-3d7c968a{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes loading-pulse-3d7c968a{0%,to{box-shadow:0 0 0 0 var(--tint-primary-16)}50%{box-shadow:0 0 0 6px #409eff00}}@keyframes border-light-run-3d7c968a{0%{width:60px;height:2px;top:0;left:0}24.99%{width:60px;height:2px;top:0;left:100%}25%{width:2px;height:60px;top:0;left:100%}49.99%{width:2px;height:60px;top:100%;left:100%}50%{width:60px;height:2px;top:100%;left:100%}74.99%{width:60px;height:2px;top:100%;left:0}75%{width:2px;height:60px;top:100%;left:0}99.99%{width:2px;height:60px;top:0;left:0}to{width:60px;height:2px;top:0;left:0}}.pulling-section[data-v-3d7c968a]{align-items:center;gap:var(--spacing-lg);padding:var(--spacing-xl) var(--spacing-xl);border-radius:var(--radius-md);background:#409eff0a;border:1px solid #409eff2e;display:flex;position:relative;overflow:hidden}.pulling-section[data-v-3d7c968a]:before{content:"";width:60px;height:2px;box-shadow:0 0 10px var(--tint-primary-50);background:linear-gradient(90deg,#0000 0%,#409eff66 30%,#409effe6 50%,#409eff66 70%,#0000 100%);animation:2.5s linear infinite border-light-run-3d7c968a;position:absolute;top:0;left:0}.pulling-icon-wrap[data-v-3d7c968a]{flex-shrink:0;width:44px;height:44px}.pulling-spinner[data-v-3d7c968a]{width:44px;height:44px;animation:1.4s linear infinite pulling-rotate-3d7c968a}.pulling-spinner .pulling-spinner-track[data-v-3d7c968a]{stroke:var(--tint-primary-16)}.pulling-spinner .pulling-spinner-arc[data-v-3d7c968a]{stroke:#409effe6;stroke-linecap:round;stroke-dasharray:80 126;animation:1.4s ease-in-out infinite pulling-dash-3d7c968a}.pulling-text-wrap[data-v-3d7c968a]{flex-direction:column;gap:4px;display:flex}.pulling-title[data-v-3d7c968a]{font-size:var(--font-size-sm);color:#409efff2;letter-spacing:.3px;font-weight:600}.pulling-sub[data-v-3d7c968a]{font-size:var(--font-size-sm);color:#ffffff59}@keyframes pulling-rotate-3d7c968a{to{transform:rotate(360deg)}}@keyframes pulling-dash-3d7c968a{0%{stroke-dasharray:1 126;stroke-dashoffset:0}50%{stroke-dasharray:90 126;stroke-dashoffset:-35px}to{stroke-dasharray:90 126;stroke-dashoffset:-124px}}.stages-section[data-v-3d7c968a]{gap:var(--spacing-md);padding:var(--spacing-md);border-radius:var(--radius-md);transition:var(--transition-ui-slow);background:0 0;border:1px solid #ffffff0d;grid-template-columns:repeat(2,1fr);display:grid;position:relative;overflow:hidden}.stages-section.is-loading[data-v-3d7c968a]{border-color:var(--tint-primary-16)}.stages-section.is-loading[data-v-3d7c968a]:before{content:"";width:60px;height:2px;box-shadow:0 0 10px var(--tint-primary-50);background:linear-gradient(90deg,#0000 0%,#409eff66 30%,#409effcc 50%,#409eff66 70%,#0000 100%);animation:4s linear infinite border-light-run-3d7c968a;position:absolute;top:0;left:0}.stages-section.is-success[data-v-3d7c968a]{border-color:#67c23a33}[data-theme=dark] .stages-section[data-v-3d7c968a]{opacity:.8}.stage-item[data-v-3d7c968a]{gap:var(--spacing-base);padding:10px var(--spacing-md);border-radius:var(--radius-lg);transition:var(--transition-ui-slow);background:#ffffff08;border:1px solid #ffffff14;flex-direction:column;display:flex;position:relative}.stage-item.active[data-v-3d7c968a]{background:var(--tint-primary-06);border-color:var(--tint-primary-16);transform:scale(1.01)}.stage-item.finished[data-v-3d7c968a]{background:#67c23a0d;border-color:#67c23a26}.stage-item.error[data-v-3d7c968a]{background:#f56c6c0d;border-color:#f56c6c26}.stage-header[data-v-3d7c968a]{align-items:center;gap:10px;display:flex}.stage-icon[data-v-3d7c968a]{width:24px;height:24px;transition:var(--transition-ui-slow);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:600;display:flex}.stage-icon .icon-finish[data-v-3d7c968a]{color:var(--color-success);font-size:var(--font-size-md)}.stage-icon .icon-error[data-v-3d7c968a]{color:var(--color-danger);font-size:var(--font-size-md)}.stage-icon .icon-process[data-v-3d7c968a]{color:var(--color-primary);font-size:var(--font-size-md);animation:1s linear infinite rotate-3d7c968a}.stage-icon .icon-wait[data-v-3d7c968a]{color:gray;font-size:var(--font-size-md);animation:2s linear infinite rotate-3d7c968a}@keyframes rotate-3d7c968a{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.stage-info[data-v-3d7c968a]{flex:1;justify-content:space-between;align-items:center;display:flex}.stage-label[data-v-3d7c968a]{color:var(--text-primary);letter-spacing:.2px;font-weight:500}.stage-percent[data-v-3d7c968a]{font-size:var(--font-size-sm);color:var(--color-primary);text-align:right;letter-spacing:.5px;min-width:42px;font-family:Consolas,Monaco,monospace;font-weight:700}.finished .stage-percent[data-v-3d7c968a]{color:var(--color-success)}.stage-progress[data-v-3d7c968a]{padding-left:34px}.stage-progress[data-v-3d7c968a] .el-progress-bar__outer{background-color:#00000014}.stage-progress[data-v-3d7c968a] .el-progress-bar__inner{background:linear-gradient(90deg, var(--color-primary), var(--color-primary-light));transition:var(--transition-ui-slow)}.finished .stage-progress[data-v-3d7c968a] .el-progress-bar__inner{background:linear-gradient(90deg, var(--color-success), var(--color-success))}.error-section[data-v-3d7c968a]{border-radius:var(--radius-lg);padding:var(--spacing-lg);gap:var(--spacing-base);background:#fef0f0;border:1px solid #fde2e2;flex-direction:column;display:flex}.error-header[data-v-3d7c968a]{justify-content:space-between;align-items:center;display:flex}.error-title[data-v-3d7c968a]{color:var(--color-danger);font-weight:600}.pull-button[data-v-3d7c968a]{align-items:center;gap:4px;display:flex}.error-content[data-v-3d7c968a]{color:#c45656;font-size:var(--font-size-mid);word-break:break-word;padding:var(--spacing-sm);border-radius:var(--radius-base);background:#00000008;line-height:1.6}.error-suggestion[data-v-3d7c968a]{font-size:var(--font-size-sm);color:var(--color-primary);margin-top:4px;font-weight:500}.messages-section[data-v-3d7c968a]{gap:var(--spacing-base);flex-direction:column;display:flex}.messages-title[data-v-3d7c968a]{color:var(--text-secondary);font-weight:600;font-size:var(--font-size-sm);letter-spacing:.3px;opacity:.85}.progress-messages[data-v-3d7c968a]{border-radius:var(--radius-lg);max-height:160px;padding:10px var(--spacing-md);font-family:Consolas,Monaco,Courier New,monospace;font-size:var(--font-size-xs);background:#0000004d;border:1px solid #ffffff0d;line-height:1.5;overflow-y:auto;box-shadow:inset 0 2px 4px #0003}.progress-messages[data-v-3d7c968a]::-webkit-scrollbar{width:5px}.progress-messages[data-v-3d7c968a]::-webkit-scrollbar-track{border-radius:var(--radius-base);background:#0000001a}.progress-messages[data-v-3d7c968a]::-webkit-scrollbar-thumb{border-radius:var(--radius-base);background:#fff3}.progress-messages[data-v-3d7c968a]::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.message-item[data-v-3d7c968a]{color:#ffffffd9;padding:var(--spacing-xs) 0;white-space:nowrap;text-overflow:ellipsis;opacity:.9;transition:opacity var(--transition-base) ease;overflow:hidden}.message-item[data-v-3d7c968a]:hover{opacity:1}.message-item[data-v-3d7c968a]:not(:last-child){margin-bottom:3px}[data-theme=dark] .error-section[data-v-3d7c968a]{background:#f56c6c1a;border-color:#f56c6c4d}[data-theme=dark] .error-content[data-v-3d7c968a]{color:#f89898}:root:not([data-theme=dark]) .progress-messages[data-v-3d7c968a]{background:#0000000f;border:1px solid #00000014;box-shadow:inset 0 1px 3px #00000014}:root:not([data-theme=dark]) .message-item[data-v-3d7c968a]{color:#000000bf}:root:not([data-theme=dark]) .message-item[data-v-3d7c968a]:hover{color:#000000e6}:root:not([data-theme=dark]) .messages-title[data-v-3d7c968a]{color:#000000a6}:root:not([data-theme=dark]) .progress-messages[data-v-3d7c968a]::-webkit-scrollbar-track{background:#0000000d}:root:not([data-theme=dark]) .progress-messages[data-v-3d7c968a]::-webkit-scrollbar-thumb{background:#0003}:root:not([data-theme=dark]) .progress-messages[data-v-3d7c968a]::-webkit-scrollbar-thumb:hover{background:#0000004d}.push-button-group[data-v-ed54022f]{align-items:center;gap:4px;display:inline-flex}.push-remote-item[data-v-ed54022f]{align-items:center;gap:6px;display:inline-flex}.push-button.from-drawer[data-v-ed54022f]{padding:6px var(--spacing-md);font-size:var(--font-size-sm);height:32px}.push-button.from-status[data-v-ed54022f]{padding:var(--spacing-base);font-size:var(--font-size-sm);height:36px}.push-button.from-form[data-v-ed54022f]{font-size:var(--font-size-mid);height:32px}.push-button__caret.from-drawer[data-v-ed54022f],.push-button__caret.from-form[data-v-ed54022f]{height:32px;padding:0 6px}.push-button__caret.from-status[data-v-ed54022f]{height:36px;padding:0 6px}.push-button__caret[data-v-ed54022f] .el-icon{font-size:var(--font-size-sm)}.one-push-button[data-v-c8c92c10]{height:100%;background:var(--color-primary-dark)!important;border:1px solid var(--color-primary-dark)!important;color:#fff!important}.one-push-button[data-v-c8c92c10]:hover:not(.is-disabled){background:color-mix(in srgb, var(--color-primary-dark) 88%, #000)!important;border-color:color-mix(in srgb, var(--color-primary-dark) 88%, #000)!important}.one-push-button .one-push-icon[data-v-c8c92c10],.one-push-button .one-push-title[data-v-c8c92c10],.one-push-button .one-push-desc[data-v-c8c92c10]{color:#fff}.one-push-button.form[data-v-c8c92c10]{width:100%;padding:4px 12px}.one-push-button.drawer[data-v-c8c92c10]{width:auto;height:32px}.one-push-button .one-push-content[data-v-c8c92c10]{align-items:center;gap:6px;display:flex}.one-push-button .one-push-content .one-push-icon[data-v-c8c92c10]{font-size:var(--font-size-base)}.one-push-button .one-push-content .one-push-text[data-v-c8c92c10]{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.one-push-button .one-push-content .one-push-text .one-push-title[data-v-c8c92c10]{font-size:var(--font-size-mid)}.one-push-button .one-push-content .one-push-text .one-push-desc[data-v-c8c92c10]{font-size:var(--font-size-xs);opacity:.9;letter-spacing:.1px;font-weight:400}.create-tag-button[data-v-871521cb]{display:inline-block}.tag-dialog-content[data-v-871521cb]{gap:var(--spacing-base);flex-direction:column;display:flex}.tag-info-card[data-v-871521cb]{align-items:flex-start;gap:var(--spacing-base);padding:var(--spacing-base);border-radius:var(--radius-xl);background:linear-gradient(135deg,#f0fdf4 0%,#dcfce7 100%);border:1px solid #86efac;display:flex;position:relative;overflow:hidden}.tag-info-card[data-v-871521cb]:before{content:"";background:linear-gradient(90deg, var(--action-green) 0%, var(--action-green-dark) 100%);height:3px;position:absolute;top:0;left:0;right:0}.tag-info-card .info-icon[data-v-871521cb]{background:linear-gradient(135deg, var(--action-green) 0%, var(--action-green-dark) 100%);border-radius:var(--radius-md);color:#fff;width:40px;height:40px;font-size:var(--font-size-lg);box-shadow:var(--shadow-md);flex-shrink:0;justify-content:center;align-items:center;display:flex}.tag-info-card .info-content[data-v-871521cb]{flex:1}.tag-info-card .info-content h4[data-v-871521cb]{font-size:var(--font-size-md);color:#14532d;margin:0 0 6px;font-weight:600;line-height:1.2}.tag-info-card .info-content p[data-v-871521cb]{color:#166534;margin:0;line-height:1.4}.tag-form[data-v-871521cb]{gap:var(--spacing-base);flex-direction:column;display:flex}.tag-form[data-v-871521cb] .el-form-item{margin-bottom:0}.tag-form[data-v-871521cb] .el-form-item__label{color:var(--color-text-title);margin-bottom:var(--spacing-base);font-weight:600}.tag-form[data-v-871521cb] .el-input .el-input__inner{border-radius:var(--radius-lg);border:2px solid var(--color-gray-200);transition:var(--transition-ui-slow)}.tag-form[data-v-871521cb] .el-input .el-input__inner:hover{border-color:var(--color-gray-300)}.tag-form[data-v-871521cb] .el-input .el-input__inner:focus-visible{border-color:var(--action-green);box-shadow:0 0 0 3px #22c55e1a}.tag-form[data-v-871521cb] .el-textarea .el-textarea__inner{border-radius:var(--radius-lg);border:2px solid var(--color-gray-200);transition:var(--transition-ui-slow);line-height:1.5}.tag-form[data-v-871521cb] .el-textarea .el-textarea__inner:hover{border-color:var(--color-gray-300)}.tag-form[data-v-871521cb] .el-textarea .el-textarea__inner:focus-visible{border-color:var(--action-green);box-shadow:0 0 0 3px #22c55e1a}.tag-form[data-v-871521cb] .el-radio-group{width:100%}.tag-form[data-v-871521cb] .el-radio-group .el-radio-button{flex:1}.tag-form[data-v-871521cb] .el-radio-group .el-radio-button .el-radio-button__inner{border-radius:var(--radius-lg);width:100%;transition:var(--transition-ui-slow)}.form-tip[data-v-871521cb]{margin-top:var(--spacing-base);font-size:var(--font-size-sm);color:var(--color-gray-500);align-items:flex-start;gap:6px;line-height:1.4;display:flex}.form-tip .el-icon[data-v-871521cb]{color:var(--color-gray-400);flex-shrink:0;margin-top:1px}.commit-prefix[data-v-871521cb]{font-size:var(--font-size-sm);color:var(--color-gray-500);font-family:monospace}[data-v-871521cb] .tag-dialog .common-dialog__footer .el-button{border-radius:var(--radius-lg);transition:var(--transition-ui-slow);font-weight:500}[data-v-871521cb] .tag-dialog .common-dialog__footer .el-button:hover{transform:scale(1.02)}[data-v-871521cb] .tag-dialog .common-dialog__footer .el-button:active{transform:scale(.98)}[data-v-871521cb] .tag-dialog .common-dialog__footer .el-button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.tag-list-button[data-v-366ce062]{display:inline-block}.tag-list-content[data-v-366ce062]{min-height:400px;padding:0}[data-v-366ce062] .tag-list-dialog .common-dialog__header{background:var(--action-green);color:#fff;padding:var(--spacing-xl) var(--spacing-2xl);border-radius:var(--radius-lg) var(--radius-lg) 0 0;margin:0}[data-v-366ce062] .tag-list-dialog .common-dialog__title{font-size:var(--font-size-lg);color:#fff;font-weight:600}[data-v-366ce062] .tag-list-dialog .common-dialog__close{color:#fff;font-size:var(--font-size-lg)}[data-v-366ce062] .tag-list-dialog .common-dialog__close:hover{color:var(--border-card)}.tag-header[data-v-366ce062]{margin-bottom:var(--spacing-base);padding:var(--spacing-base);background:linear-gradient(135deg, var(--color-white) 0%, var(--color-gray-soft) 100%);border-radius:var(--radius-lg);border:1px solid var(--border-component);box-shadow:var(--shadow-md);justify-content:space-between;align-items:center;display:flex}.tag-stats[data-v-366ce062]{align-items:center;gap:var(--spacing-base);display:flex}.stat-item[data-v-366ce062]{align-items:center;gap:var(--spacing-base);padding:var(--spacing-xs) var(--spacing-base);background:var(--action-green);border-radius:var(--radius-lg);color:#fff;display:flex}.stat-icon[data-v-366ce062]{font-size:var(--font-size-md)}.stat-number[data-v-366ce062]{font-size:var(--font-size-lg);font-weight:600}.stat-label[data-v-366ce062]{opacity:.9}.tag-actions-header[data-v-366ce062]{gap:var(--spacing-base);display:flex}.refresh-btn[data-v-366ce062],.push-all-btn[data-v-366ce062]{border-radius:var(--radius-lg);padding:var(--spacing-xs) var(--spacing-base);transition:var(--transition-ui-slow);font-weight:500}.refresh-btn[data-v-366ce062]:hover,.push-all-btn[data-v-366ce062]:hover{transform:scale(1.02)}.refresh-btn[data-v-366ce062]:active,.push-all-btn[data-v-366ce062]:active{transform:scale(.98)}.refresh-btn[data-v-366ce062]:focus-visible,.push-all-btn[data-v-366ce062]:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.tag-list-container[data-v-366ce062]{min-height:300px}.tag-cards[data-v-366ce062]{gap:var(--spacing-base);flex-direction:column;display:flex}.tag-card[data-v-366ce062]{background:var(--bg-container);border-radius:var(--radius-lg);border:1px solid var(--border-component);box-shadow:var(--shadow-md);transition:var(--transition-ui-slow);overflow:hidden}.tag-card[data-v-366ce062]:hover{border-color:var(--action-green);transform:scale(1.02)}.tag-card[data-v-366ce062]:active{transform:scale(.98)}.tag-card[data-v-366ce062]:focus-visible{outline:2px solid var(--action-green);outline-offset:2px}.tag-card-content[data-v-366ce062]{padding:var(--spacing-base);align-items:center;gap:var(--spacing-base);display:flex}.tag-info[data-v-366ce062]{gap:var(--spacing-sm);flex-direction:column;flex:1;min-width:0;display:flex}.tag-main-info[data-v-366ce062]{flex-direction:column;gap:6px;display:flex}.tag-name-badge[data-v-366ce062]{align-items:center;gap:var(--spacing-base);flex-shrink:0;display:flex}.badge-icon[data-v-366ce062]{color:var(--action-green)}.tag-name-text[data-v-366ce062]{color:var(--color-text);font-family:Consolas,Monaco,Courier New,monospace;font-weight:600}.type-tag[data-v-366ce062]{margin-left:var(--spacing-sm)}.tag-meta[data-v-366ce062]{align-items:center;gap:var(--spacing-md);font-size:var(--font-size-sm);color:var(--text-secondary);display:flex}.tag-commit[data-v-366ce062]{align-items:center;gap:var(--spacing-sm);background:var(--bg-panel);padding:var(--spacing-xs) 6px;border-radius:var(--radius-base);font-family:monospace;display:flex}.tag-date[data-v-366ce062]{color:var(--text-tertiary)}.tag-message[data-v-366ce062]{font-size:var(--font-size-sm);color:var(--text-secondary);padding:6px var(--spacing-base);background:var(--bg-panel);border-radius:var(--radius-md);border-left:3px solid var(--action-green);line-height:1.4}.tag-card-actions[data-v-366ce062]{flex-shrink:0;align-items:center;gap:6px;display:none}.tag-card:hover .tag-card-actions[data-v-366ce062]{display:flex}.action-btn[data-v-366ce062]{border-radius:var(--radius-md);transition:var(--transition-ui-slow);min-width:60px;padding:6px var(--spacing-md);font-weight:500;font-size:var(--font-size-sm)}.action-btn[data-v-366ce062]:hover{transform:scale(1.02)}.action-btn[data-v-366ce062]:active{transform:scale(.98)}.action-btn[data-v-366ce062]:focus-visible{outline:2px solid var(--action-green);outline-offset:2px}.view-btn[data-v-366ce062]:hover,.push-btn[data-v-366ce062]:hover,.delete-btn[data-v-366ce062]:hover{box-shadow:var(--shadow-md)}.tag-detail-content[data-v-366ce062]{gap:var(--spacing-md);flex-direction:column;display:flex}.detail-row[data-v-366ce062]{align-items:center;gap:var(--spacing-md);background:var(--bg-panel);border-radius:var(--radius-lg);padding:10px;display:flex}.detail-row.detail-message[data-v-366ce062]{flex-direction:column;align-items:flex-start}.detail-label[data-v-366ce062]{font-size:var(--font-size-sm);color:var(--text-secondary);white-space:nowrap;min-width:80px;font-weight:600}.detail-value[data-v-366ce062]{color:var(--color-text)}.detail-value[data-v-366ce062]:is(code){background:var(--border-component);padding:var(--spacing-xs) var(--spacing-base);border-radius:var(--radius-base);border:1px solid var(--border-component);font-family:monospace}.message-content[data-v-366ce062]{width:100%;padding:var(--spacing-base);border-radius:var(--radius-md);border:1px solid var(--border-card);white-space:pre-wrap;word-break:break-word;background:#fff;line-height:1.6}.git-operations-button[data-v-feb8c688]{display:inline-block}.action-groups[data-v-feb8c688]{flex-direction:column;gap:16px;display:flex}.action-group[data-v-feb8c688]{background:var(--bg-container);border-radius:var(--radius-lg);border:1px solid var(--border-component);padding:16px}.group-title[data-v-feb8c688]{font-size:var(--font-size-base);color:var(--text-primary);margin-bottom:10px;padding-bottom:6px;font-weight:600}.group-buttons[data-v-feb8c688]{flex-direction:column;gap:10px;display:flex}.group-buttons[data-v-feb8c688] .el-button{justify-content:center;align-items:center;width:100%;height:40px;display:flex}.pull-error-content[data-v-feb8c688]{flex-direction:column;gap:16px;display:flex}.pull-error-type[data-v-feb8c688]{border-radius:var(--radius-lg);font-size:var(--font-size-mid);align-items:flex-start;gap:10px;padding:12px 14px;line-height:1.6;display:flex}.pull-error-type.is-warning[data-v-feb8c688]{color:var(--color-warning-dark);background:#faad141a;border:1px solid #faad1466}.pull-error-type.is-error[data-v-feb8c688]{color:var(--action-coral);background:#f56c6c14;border:1px solid #f56c6c59}.pull-error-icon[data-v-feb8c688]{font-size:var(--font-size-md);flex-shrink:0;margin-top:2px}.pull-error-detail[data-v-feb8c688]{flex-direction:column;gap:6px;display:flex}.pull-error-label[data-v-feb8c688]{font-size:var(--font-size-mid);color:var(--text-primary);font-weight:600}.pull-error-pre[data-v-feb8c688]{border-radius:var(--radius-lg);font-family:Consolas,Monaco,Courier New,monospace;font-size:var(--font-size-sm);color:var(--text-primary);white-space:pre-wrap;word-break:break-all;background:#0000000f;border:1px solid #0000001a;max-height:300px;margin:0;padding:12px 14px;line-height:1.6;overflow-y:auto}.global-loading-overlay[data-v-691919d3]{z-index:9999;background:#fff0;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.loading-container[data-v-691919d3]{justify-content:center;align-items:center;gap:var(--spacing-md);border-radius:var(--radius-xl);-webkit-backdrop-filter:blur(25px);backdrop-filter:blur(25px);background:linear-gradient(135deg,#409effe6 0%,#67c23ae6 100%);flex-direction:column;width:240px;padding:28px 32px;display:flex;overflow:hidden;box-shadow:0 8px 32px #0000004d;height:auto!important}.loading-spinner[data-v-691919d3]{width:64px;height:64px;position:relative}.spinner-ring[data-v-691919d3]{border:4px solid #0000;border-radius:50%;width:100%;height:100%;position:absolute;top:0;left:0}.spinner-ring[data-v-691919d3]:first-child{border-top:4px solid #ffffffe6;animation:2s linear infinite spin-691919d3}.spinner-ring[data-v-691919d3]:nth-child(2){border-right:4px solid #fff9;width:90%;height:90%;animation:3s linear infinite reverse spin-691919d3;top:5%;left:5%}.spinner-ring[data-v-691919d3]:nth-child(3){border-bottom:4px solid #ffffff4d;width:80%;height:80%;animation:4s linear infinite spin-691919d3;top:10%;left:10%}.loading-text[data-v-691919d3]{font-size:var(--font-size-lg);text-shadow:0 2px 8px #0000004d;letter-spacing:1px;text-align:center;color:var(--color-white);font-weight:600;animation:2s ease-in-out infinite pulse-text-691919d3}.loading-progress[data-v-691919d3]{border-radius:var(--radius-xs);background:#fff3;width:200px;height:4px;overflow:hidden}.progress-bar[data-v-691919d3]{background:linear-gradient(90deg, var(--bg-container) 0%, #fffc 100%);border-radius:var(--radius-xs);height:100%;transition:width var(--transition-slow) ease;box-shadow:0 0 10px #ffffff80}.progress-bar.is-mock[data-v-691919d3]{width:0%;animation:2.4s ease-in-out infinite mock-progress-691919d3}@keyframes spin-691919d3{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse-text-691919d3{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}@keyframes mock-progress-691919d3{0%{width:0%}50%{width:70%}to{width:100%}}.loading-fade-enter-active[data-v-691919d3],.loading-fade-leave-active[data-v-691919d3]{transition:var(--transition-ui-slow)}.loading-fade-enter-from[data-v-691919d3],.loading-fade-leave-to[data-v-691919d3]{opacity:0}.loading-fade-enter-to[data-v-691919d3],.loading-fade-leave-from[data-v-691919d3]{opacity:1}.loading-fade-enter-active .loading-container[data-v-691919d3],.loading-fade-leave-active .loading-container[data-v-691919d3]{transition:var(--transition-ui-slow)}.loading-fade-enter-from .loading-container[data-v-691919d3],.loading-fade-leave-to .loading-container[data-v-691919d3]{opacity:0;-webkit-backdrop-filter:blur();backdrop-filter:blur();transform:scale(.8)}.loading-fade-enter-to .loading-container[data-v-691919d3],.loading-fade-leave-from .loading-container[data-v-691919d3]{opacity:1;-webkit-backdrop-filter:blur(25px);backdrop-filter:blur(25px);transform:scale(1)}[data-theme=dark] .global-loading-overlay[data-v-691919d3]{background:#00000073}[data-theme=dark] .loading-container[data-v-691919d3]{background:linear-gradient(135deg,#161616e6 0%,#1c1c1ce6 100%);border:1px solid #ffffff14;box-shadow:0 12px 36px #0009}[data-theme=dark] .loading-text[data-v-691919d3]{color:#ffffffeb;text-shadow:0 2px 10px #0009}[data-theme=dark] .loading-progress[data-v-691919d3]{background:#ffffff1f}[data-theme=dark] .progress-bar[data-v-691919d3]{box-shadow:0 0 10px var(--tint-primary-45);background:linear-gradient(90deg,#409effd9 0%,#67c23ad9 100%)}.success-overlay[data-v-c3fad05d]{background:var(--dialog-overlay);-webkit-backdrop-filter:blur(10px);padding:var(--spacing-2xl);z-index:9999;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.success-container[data-v-c3fad05d]{background:var(--bg-container);border:1px solid var(--dialog-border-color);border-radius:var(--dialog-radius);width:min(92vw,420px);box-shadow:var(--dialog-shadow);text-align:center;flex-direction:column;align-items:center;gap:18px;padding:32px 30px 28px;display:flex}.success-icon[data-v-c3fad05d]{background:color-mix(in srgb, var(--color-success) 10%, var(--bg-container) 90%);width:76px;height:76px;box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--color-success) 18%, transparent 82%);border-radius:999px;justify-content:center;align-items:center;display:inline-flex}.success-svg[data-v-c3fad05d]{width:48px;height:48px}.success-circle[data-v-c3fad05d]{stroke:var(--color-success);stroke-width:2px;stroke-miterlimit:10;stroke-dasharray:166;stroke-dashoffset:166px;fill:none;animation:success-circle-animation-c3fad05d .58s var(--ease-enter) forwards}.success-check[data-v-c3fad05d]{stroke:var(--color-success);stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:48;stroke-dashoffset:48px;animation:success-check-animation-c3fad05d .24s var(--ease-enter) .5s forwards}.success-text[data-v-c3fad05d]{max-width:18ch;font-size:clamp(20px,2vw,22px);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-heading);color:var(--text-title);margin:0;line-height:1.25}.success-description[data-v-c3fad05d]{max-width:28ch;font-size:var(--font-size-base);color:var(--text-secondary);line-height:var(--line-height-relaxed);margin:0}@keyframes success-circle-animation-c3fad05d{to{stroke-dashoffset:0}}@keyframes success-check-animation-c3fad05d{to{stroke-dashoffset:0}}.success-fade-enter-active[data-v-c3fad05d],.success-fade-leave-active[data-v-c3fad05d]{transition:opacity var(--transition-base) cubic-bezier(.22, 1, .36, 1)}.success-fade-enter-from[data-v-c3fad05d],.success-fade-leave-to[data-v-c3fad05d]{opacity:0}.success-fade-enter-to[data-v-c3fad05d],.success-fade-leave-from[data-v-c3fad05d]{opacity:1}.success-fade-enter-active .success-container[data-v-c3fad05d],.success-fade-leave-active .success-container[data-v-c3fad05d]{transition:opacity var(--transition-base) cubic-bezier(.22, 1, .36, 1), transform var(--transition-base) cubic-bezier(.22, 1, .36, 1)}.success-fade-enter-from .success-container[data-v-c3fad05d],.success-fade-leave-to .success-container[data-v-c3fad05d]{opacity:0;transform:translateY(8px)scale(.985)}.success-fade-enter-to .success-container[data-v-c3fad05d],.success-fade-leave-from .success-container[data-v-c3fad05d]{opacity:1;transform:translateY(0)scale(1)}.one-commit-button[data-v-91c441c2]{height:100%;background:linear-gradient(135deg, var(--color-primary-dark) 0%, color-mix(in srgb, var(--color-primary-dark) 78%, #000) 100%)!important;color:#fff!important;border:none!important}.one-commit-button .one-commit-icon[data-v-91c441c2],.one-commit-button .one-commit-title[data-v-91c441c2],.one-commit-button .one-commit-desc[data-v-91c441c2]{color:#fff}.one-commit-button.form[data-v-91c441c2]{width:100%;padding:4px 12px}.one-commit-button.drawer[data-v-91c441c2]{width:auto;height:32px}.one-commit-button .one-commit-content[data-v-91c441c2]{align-items:center;gap:6px;display:flex}.one-commit-button .one-commit-content .one-commit-icon[data-v-91c441c2]{font-size:var(--font-size-base)}.one-commit-button .one-commit-content .one-commit-text[data-v-91c441c2]{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.one-commit-button .one-commit-content .one-commit-text .one-commit-title[data-v-91c441c2]{font-size:var(--font-size-mid)}.one-commit-button .one-commit-content .one-commit-text .one-commit-desc[data-v-91c441c2]{font-size:var(--font-size-xs);opacity:.9;letter-spacing:.1px;font-weight:400}[data-v-6dc84697] .el-button+.el-button{margin-left:0}[data-v-6dc84697] .el-button{border-radius:var(--radius-md);transition:var(--transition-ui-slow);font-weight:500;font-size:var(--font-size-sm);padding:6px 10px}[data-v-6dc84697] .el-button:hover{box-shadow:var(--shadow-md);transform:scale(1.02)}[data-v-6dc84697] .el-button:active{transform:scale(.98)}[data-v-6dc84697] .el-button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}[data-v-6dc84697] .el-button.is-disabled{opacity:.4!important}[data-v-6dc84697] .el-button--primary{background:var(--color-primary);color:#fff;border:none}[data-v-6dc84697] .el-button--primary.is-disabled{background-color:var(--color-primary-light)!important;border-color:var(--color-primary-light)!important;opacity:.5!important}[data-v-6dc84697] .el-button--warning{background:var(--color-warning);color:#fff;border:none}[data-v-6dc84697] .el-button--warning.is-disabled{background-color:var(--color-warning)!important;border-color:var(--color-warning)!important;opacity:.5!important}[data-v-6dc84697] .left-actions .el-button{background:var(--bg-container);border:1px solid var(--border-color-medium);color:var(--text-secondary);box-shadow:none}[data-v-6dc84697] .left-actions .el-button:hover:not(.is-disabled){background:var(--soft-btn-bg-hover);border-color:var(--soft-btn-border-hover)}[data-v-6dc84697] .left-actions .el-button--primary.is-disabled{background-color:var(--bg-container)!important;border-color:var(--border-color-medium)!important;color:var(--text-disabled)!important;opacity:.6!important}.actions-flex-container[data-v-6dc84697]{justify-content:flex-start;align-items:center;gap:6px;display:flex}.left-actions[data-v-6dc84697]{align-self:center;display:flex}.button-grid[data-v-6dc84697]{gap:6px;display:flex}.right-actions[data-v-6dc84697]{align-items:stretch;gap:6px;height:36px;margin-left:auto;display:flex}.command-history-button[data-v-6ba10e2c]{width:36px;height:36px;padding:0}.history-scroll[data-v-6ba10e2c]{flex-grow:1;overflow-y:auto}.dialog-content .modern-btn[data-v-6ba10e2c]{color:#000c;background:#0000000d;border:1px solid #0000001a}.dialog-content .modern-btn[data-v-6ba10e2c]:hover{color:#000;background:#00000014;border-color:#00000026}.enhanced-btn[data-v-6ba10e2c]{min-width:60px;height:36px;padding:var(--spacing-base);border-radius:var(--radius-md);font-size:var(--font-size-sm);transition:var(--transition-ui-slow);gap:6px;font-weight:500;position:relative;overflow:hidden}.enhanced-btn .btn-text[data-v-6ba10e2c]{font-size:var(--font-size-sm);white-space:nowrap;z-index:1;font-weight:500;position:relative}.enhanced-btn .btn-icon[data-v-6ba10e2c]{font-size:var(--font-size-lg);z-index:1;position:relative}.danger-btn[data-v-6ba10e2c]{color:var(--color-danger);background:#f56c6c1a;border-color:#f56c6c33}.danger-btn[data-v-6ba10e2c]:before{background:linear-gradient(135deg,#f56c6c26 0%,#ff4d4f26 100%)}.danger-btn[data-v-6ba10e2c]:hover{color:var(--color-danger);box-shadow:var(--shadow-md);background:#f56c6c26;border-color:#f56c6c4d}.copy-commands-button[data-v-6ba10e2c],.copy-all-button[data-v-6ba10e2c],.clear-button[data-v-6ba10e2c]{min-width:70px;height:36px;font-weight:600}.dialog-toolbar .enhanced-btn[data-v-6ba10e2c]{color:#000000d9;box-shadow:var(--shadow-sm);background:#ffffffe6;border:1px solid #00000014}.dialog-toolbar .enhanced-btn[data-v-6ba10e2c]:hover{color:#000;box-shadow:var(--shadow-lg);background:#fff;border-color:#0000001f}[data-theme=dark] .dialog-toolbar .enhanced-btn[data-v-6ba10e2c]{background:var(--bg-container);color:var(--text-primary);border-color:var(--border-component);box-shadow:var(--shadow-md)}[data-theme=dark] .dialog-toolbar .enhanced-btn[data-v-6ba10e2c]:hover{background:var(--bg-container-hover);color:var(--color-white);border-color:var(--border-component-light);box-shadow:var(--shadow-lg)}.dialog-toolbar .danger-btn[data-v-6ba10e2c]{color:var(--color-danger);background:#f56c6c14;border-color:#f56c6c26}.dialog-toolbar .danger-btn[data-v-6ba10e2c]:hover{color:var(--color-danger);box-shadow:var(--shadow-md);background:#f56c6c1f;border-color:#f56c6c40}[data-theme=dark] .dialog-toolbar .danger-btn[data-v-6ba10e2c]{background:var(--action-coral);color:#fff;border-color:#e74c3c}[data-theme=dark] .dialog-toolbar .danger-btn[data-v-6ba10e2c]:hover{color:#fff;box-shadow:var(--shadow-lg);background:#e74c3c;border-color:#ff6b6b}.item-copy-button[data-v-6ba10e2c],.output-copy-button[data-v-6ba10e2c]{width:32px;height:32px;padding:0!important}.item-copy-button .btn-icon[data-v-6ba10e2c],.output-copy-button .btn-icon[data-v-6ba10e2c]{font-size:var(--font-size-md)}.item-copy-button .btn-text[data-v-6ba10e2c],.output-copy-button .btn-text[data-v-6ba10e2c]{display:none}.item-copy-button[data-v-6ba10e2c]:hover,.output-copy-button[data-v-6ba10e2c]:hover{box-shadow:var(--shadow-md);transform:scale(1.02)}.item-copy-button[data-v-6ba10e2c]:active,.output-copy-button[data-v-6ba10e2c]:active{box-shadow:var(--shadow-md);transform:scale(.98)}.item-copy-button[data-v-6ba10e2c]:focus-visible,.output-copy-button[data-v-6ba10e2c]:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.expand-button[data-v-6ba10e2c]{width:32px;height:32px;color:var(--text-secondary);transition:transform var(--transition-slow) ease;justify-content:center;align-items:center;display:flex}.expand-button .btn-icon[data-v-6ba10e2c]{font-size:var(--font-size-md);transition:transform var(--transition-slow) ease}.enhanced-btn[data-v-6ba10e2c]:active{box-shadow:var(--shadow-md);transform:scale(.98)}.enhanced-btn[data-v-6ba10e2c]:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.enhanced-btn[data-v-6ba10e2c]:disabled{opacity:.6;cursor:not-allowed;transform:none}.enhanced-btn[data-v-6ba10e2c]:disabled:hover{box-shadow:none;transform:none}.expand-button.is-expanded .btn-icon[data-v-6ba10e2c]{transform:rotate(180deg)}.command-history-dialog[data-v-6ba10e2c]{border-radius:var(--radius-lg);z-index:9999!important}[data-v-6ba10e2c] .command-history-dialog .el-overlay{z-index:9998!important}[data-v-6ba10e2c] .command-history-dialog .el-dialog{z-index:9999!important}.dialog-toolbar[data-v-6ba10e2c]{padding:var(--spacing-lg) var(--spacing-xl);justify-content:space-between;align-items:center;gap:var(--spacing-md);background:linear-gradient(135deg, var(--color-gray-soft) 0%, var(--border-component) 100%);border-radius:8px 8px 0 0;flex-wrap:wrap;display:flex}.filter-controls[data-v-6ba10e2c]{align-items:center;gap:var(--spacing-sm);flex:1;min-width:300px;display:flex}.filter-select[data-v-6ba10e2c]{width:120px}.search-input[data-v-6ba10e2c]{width:200px}.toolbar-actions[data-v-6ba10e2c]{align-items:center;gap:var(--spacing-sm);display:flex}[data-theme=dark] .dialog-toolbar[data-v-6ba10e2c]{background:linear-gradient(135deg,#ffffff0d 0%,#ffffff05 100%);border-bottom-color:#ffffff1a}[data-theme=dark] .filter-controls .el-input__wrapper[data-v-6ba10e2c],[data-theme=dark] .filter-controls .el-select .el-input__wrapper[data-v-6ba10e2c]{background-color:#0000004d;border-color:#ffffff1a}[data-theme=dark] .filter-controls .el-input__inner[data-v-6ba10e2c]{color:#ffffffe6}[data-theme=dark] .filter-controls .el-input__inner[data-v-6ba10e2c]::placeholder{color:#ffffff80}.socket-status[data-v-6ba10e2c]{font-size:var(--font-size-sm);margin-right:auto;font-weight:500}.loading-state[data-v-6ba10e2c]{flex-direction:column;justify-content:center;align-items:center;height:100%;min-height:100px;display:flex}.loading-icon[data-v-6ba10e2c]{color:var(--color-primary);margin-bottom:10px;font-size:36px}.loading-text[data-v-6ba10e2c]{color:var(--text-secondary)}.history-list[data-v-6ba10e2c]{gap:var(--spacing-base);flex-direction:column;flex:1;display:flex;overflow-y:auto}.history-item[data-v-6ba10e2c]{border:1px solid var(--border-card);border-radius:var(--radius-base);transition:var(--transition-ui-base);overflow:hidden}[data-theme=dark] .history-item[data-v-6ba10e2c]{background-color:#ffffff08;border-color:#ffffff1a}[data-theme=dark] .history-item[data-v-6ba10e2c]:hover{background-color:#ffffff14;border-color:#fff3}.history-item[data-v-6ba10e2c]:hover{box-shadow:0 2px 12px #0000001a}.history-item.is-error[data-v-6ba10e2c]{border-left:3px solid var(--color-danger)}.item-header[data-v-6ba10e2c]{padding:10px var(--spacing-md);cursor:pointer;transition:background-color var(--transition-base);justify-content:space-between;align-items:center;display:flex}.item-header[data-v-6ba10e2c]:hover{background-color:var(--bg-icon-hover)}.command-info[data-v-6ba10e2c]{flex:1;min-width:0;overflow:hidden}.command-text[data-v-6ba10e2c]{align-items:center;gap:var(--spacing-base);margin-bottom:var(--spacing-sm);display:flex}.command-text code[data-v-6ba10e2c]{font-family:Consolas,Courier New,monospace;font-size:var(--font-size-sm);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}[data-theme=dark] .command-text code[data-v-6ba10e2c]{color:#ffffffe6}.command-meta[data-v-6ba10e2c]{align-items:center;gap:var(--spacing-lg);font-size:var(--font-size-sm);color:var(--text-tertiary);display:flex}[data-theme=dark] .command-meta[data-v-6ba10e2c]{color:#fff9}.timestamp[data-v-6ba10e2c],.duration[data-v-6ba10e2c]{white-space:nowrap}.item-actions[data-v-6ba10e2c]{margin-left:var(--spacing-base);align-items:center;gap:6px;display:flex}.item-details[data-v-6ba10e2c]{padding:10px var(--spacing-md);border-top:1px solid var(--border-card);gap:var(--spacing-md);flex-direction:column;display:flex}[data-theme=dark] .item-details[data-v-6ba10e2c]{background-color:#ffffff05;border-top-color:#ffffff1a}.output-section[data-v-6ba10e2c]{flex-direction:column;gap:6px;display:flex}.output-section.error[data-v-6ba10e2c]{border-left:3px solid var(--color-danger);padding-left:var(--spacing-base)}.output-section[data-v-6ba10e2c]:not(.error){border-left:3px solid var(--color-success);padding-left:var(--spacing-base)}.output-header[data-v-6ba10e2c]{justify-content:space-between;align-items:center;display:flex}.output-header h4[data-v-6ba10e2c]{color:var(--text-secondary);margin:0;font-weight:500}[data-theme=dark] .output-header h4[data-v-6ba10e2c]{color:#fffc}.output-content[data-v-6ba10e2c]{border-radius:var(--radius-base);font-family:Consolas,Courier New,monospace;font-size:var(--font-size-sm);white-space:pre-wrap;word-break:break-all;border:1px solid var(--border-card);max-height:300px;margin:0;padding:10px;overflow-y:auto}[data-theme=dark] .output-content[data-v-6ba10e2c]{color:#ffffffe6;background-color:#0000004d;border-color:#ffffff1a}.status-tag[data-v-6ba10e2c]{flex-shrink:0}.truncation-notice[data-v-6ba10e2c]{margin-top:6px}.output-content[data-v-6ba10e2c]::-webkit-scrollbar{width:6px;height:6px}.output-content[data-v-6ba10e2c]::-webkit-scrollbar-thumb{background-color:var(--text-placeholder);border-radius:var(--radius-base)}.output-content[data-v-6ba10e2c]::-webkit-scrollbar-track{background-color:var(--bg-panel)}.command-history-dialog{z-index:1999!important}.el-overlay{z-index:1998!important}.header-left[data-v-300e12fc]{align-items:center;gap:var(--spacing-md);display:flex}.header-left h2[data-v-300e12fc]{margin:0}.header-right[data-v-300e12fc]{align-items:center;gap:var(--spacing-sm);display:flex}.card-content[data-v-300e12fc]{padding:var(--spacing-base);flex:1;overflow-y:auto}.layout-container[data-v-300e12fc]{gap:var(--spacing-base);flex-direction:column;height:100%;display:flex}.standard-commit-form[data-v-300e12fc]{gap:var(--spacing-base);margin-bottom:var(--spacing-base);flex-direction:column;display:flex}.standard-commit-header[data-v-300e12fc]{gap:var(--spacing-sm);flex-direction:column;width:100%;display:flex}.type-scope-container[data-v-300e12fc]{gap:var(--spacing-base);align-items:stretch;width:100%;display:flex}.type-select[data-v-300e12fc]{width:180px}.scope-wrapper[data-v-300e12fc]{align-items:center;gap:5px;width:130px;display:flex}.commit-form[data-v-300e12fc]{gap:var(--spacing-base);flex-direction:column;display:flex}.description-container[data-v-300e12fc]{border-radius:var(--radius-xl);width:100%;box-shadow:none;transition:var(--transition-ui-slow);background:0 0;align-items:center;gap:5px;display:flex}.description-container.description-inline[data-v-300e12fc]{min-width:0;box-shadow:none;background:0 0;flex:1}.description-container.description-inline[data-v-300e12fc]:hover,.description-container[data-v-300e12fc]:hover{box-shadow:none}[data-v-300e12fc] .description-input{flex-grow:1}[data-v-300e12fc] .description-input .el-input__wrapper{border-radius:var(--radius-lg);background:var(--input-bg);border:1px solid var(--input-border);box-shadow:none;transition:var(--transition-ui-fast);height:40px}[data-v-300e12fc] .description-input .el-input__wrapper:hover{border-color:var(--input-border-hover)}[data-v-300e12fc] .description-input .el-input__wrapper.is-focus{border-color:var(--input-border-focus);box-shadow:var(--focus-ring)}[data-v-300e12fc] .description-input .el-input__inner{height:34px;font-weight:500}[data-v-300e12fc] .description-input .el-input__inner::placeholder{color:var(--text-placeholder);font-weight:400}[data-v-300e12fc] .type-select .el-select__wrapper{border-radius:var(--radius-lg);background:var(--input-bg);border:1px solid var(--input-border);box-shadow:none;transition:var(--transition-ui-fast);height:40px}[data-v-300e12fc] .type-select .el-select__wrapper:hover{border-color:var(--input-border-hover)}[data-v-300e12fc] .type-select .el-select__wrapper.is-focus{border-color:var(--input-border-focus);box-shadow:var(--focus-ring)}[data-v-300e12fc] .type-select .el-select__inner{font-weight:500}[data-v-300e12fc] .type-select .el-select__inner::placeholder{color:var(--text-placeholder);font-weight:400}[data-v-300e12fc] .scope-input{flex-grow:1}[data-v-300e12fc] .scope-input .el-input__wrapper{border-radius:var(--radius-lg);background:var(--input-bg);border:1px solid var(--input-border);box-shadow:none;transition:var(--transition-ui-fast);height:40px}[data-v-300e12fc] .scope-input .el-input__wrapper:hover{border-color:var(--input-border-hover)}[data-v-300e12fc] .scope-input .el-input__wrapper.is-focus{border-color:var(--input-border-focus);box-shadow:var(--focus-ring)}[data-v-300e12fc] .scope-input .el-input__inner{font-weight:500}[data-v-300e12fc] .scope-input .el-input__inner::placeholder{color:var(--text-placeholder);font-weight:400}[data-v-300e12fc] .commit-message-input{border-radius:var(--radius-xl)}[data-v-300e12fc] .commit-message-input .el-textarea__inner{border-radius:var(--radius-lg);background:var(--input-bg);border:1px solid var(--input-border);box-shadow:none;transition:var(--transition-ui-fast);font-weight:500}[data-v-300e12fc] .commit-message-input .el-textarea__inner:hover{border-color:var(--input-border-hover)}[data-v-300e12fc] .commit-message-input .el-textarea__inner:focus-visible{border-color:var(--input-border-focus);box-shadow:var(--focus-ring);outline:none}[data-v-300e12fc] .commit-message-input .el-textarea__inner::placeholder{color:var(--text-placeholder);font-weight:400}[data-v-300e12fc] .commit-message-input:hover{box-shadow:none}.git-config-warning[data-v-300e12fc]{width:100%}.merge-in-progress-banner[data-v-300e12fc]{width:100%;margin-bottom:var(--spacing-base)}.config-command[data-v-300e12fc]{background-color:var(--bg-code-dark);color:#f8f8f2;font-family:var(--font-mono);padding:var(--spacing-base);border-radius:var(--radius-base);margin-top:var(--spacing-base);white-space:pre}.advanced-options-toggle[data-v-300e12fc]{font:inherit;color:inherit;text-align:left;background:0 0;background-color:var(--bg-panel);border-radius:var(--radius-base);cursor:pointer;width:100%;transition:var(--transition-ui-slow);-webkit-user-select:none;user-select:none;border:none;justify-content:center;align-items:center;padding:7px 0 6px;display:flex}.advanced-options-toggle[data-v-300e12fc]:hover{background-color:var(--border-card);color:var(--color-primary)}.toggle-icon[data-v-300e12fc]{margin-left:var(--spacing-base);transition:transform var(--transition-slow) ease;font-size:var(--font-size-sm)}.toggle-icon.is-active[data-v-300e12fc]{transform:rotate(180deg)}.advanced-fields[data-v-300e12fc]{gap:var(--spacing-base);animation:fade-in-300e12fc var(--transition-slow) ease-in-out;flex-direction:column;display:flex}@keyframes fade-in-300e12fc{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.commit-section[data-v-300e12fc]{flex:1;width:100%;min-width:0}.is-loading[data-v-300e12fc]{animation:2s linear infinite rotating-300e12fc}@keyframes rotating-300e12fc{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.save-btn[data-v-300e12fc]{border-radius:var(--radius-md);min-width:100px;transition:var(--transition-ui-slow);font-weight:500}.save-btn[data-v-300e12fc]:hover{box-shadow:var(--shadow-md);transform:scale(1.02)}.save-btn[data-v-300e12fc]:active{transform:scale(.98)}.save-btn[data-v-300e12fc]:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}
1
+ .stage-button.from-drawer[data-v-7c59a857]{padding:6px var(--spacing-md);font-size:var(--font-size-sm);height:32px}.stage-button.from-status[data-v-7c59a857]{padding:var(--spacing-base);font-size:var(--font-size-sm);height:36px}.stage-button.from-form[data-v-7c59a857]{font-size:var(--font-size-mid);height:32px}.stage-button.is-selective[data-v-7c59a857]{box-shadow:0 0 0 2px var(--tint-primary-35)}.commit-button.from-drawer[data-v-056f6f5d]{padding:6px var(--spacing-md);font-size:var(--font-size-sm);height:32px}.commit-button.from-status[data-v-056f6f5d]{padding:var(--spacing-base);font-size:var(--font-size-sm);height:36px}.commit-button.from-form[data-v-056f6f5d]{font-size:var(--font-size-mid);height:32px}.commit-button.is-committing[data-v-056f6f5d]{min-width:96px;transition:min-width var(--transition-base) var(--ease-custom)}[data-v-3d7c968a] .el-overlay-dialog{will-change:auto!important}[data-v-3d7c968a] .el-dialog{overflow:hidden;will-change:auto!important;border-radius:12px!important}.push-progress-dialog[data-v-3d7c968a] .el-dialog__header{padding:var(--spacing-lg) var(--spacing-xl)}.push-progress-dialog[data-v-3d7c968a] .el-dialog__title{font-size:var(--font-size-md);letter-spacing:.5px;font-weight:600}.status-progress[data-v-3d7c968a] .el-dialog__title{color:var(--color-primary)}.status-success[data-v-3d7c968a] .el-dialog__title{color:var(--color-success)}.status-error[data-v-3d7c968a] .el-dialog__title{color:var(--color-danger)}.push-progress-container[data-v-3d7c968a]{gap:var(--spacing-lg);padding:var(--spacing-md);flex-direction:column;display:flex}.push-progress-container[data-v-3d7c968a] *{will-change:auto}@keyframes success-pulse-3d7c968a{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes loading-pulse-3d7c968a{0%,to{box-shadow:0 0 0 0 var(--tint-primary-16)}50%{box-shadow:0 0 0 6px #409eff00}}@keyframes border-light-run-3d7c968a{0%{width:60px;height:2px;top:0;left:0}24.99%{width:60px;height:2px;top:0;left:100%}25%{width:2px;height:60px;top:0;left:100%}49.99%{width:2px;height:60px;top:100%;left:100%}50%{width:60px;height:2px;top:100%;left:100%}74.99%{width:60px;height:2px;top:100%;left:0}75%{width:2px;height:60px;top:100%;left:0}99.99%{width:2px;height:60px;top:0;left:0}to{width:60px;height:2px;top:0;left:0}}.pulling-section[data-v-3d7c968a]{align-items:center;gap:var(--spacing-lg);padding:var(--spacing-xl) var(--spacing-xl);border-radius:var(--radius-md);background:#409eff0a;border:1px solid #409eff2e;display:flex;position:relative;overflow:hidden}.pulling-section[data-v-3d7c968a]:before{content:"";width:60px;height:2px;box-shadow:0 0 10px var(--tint-primary-50);background:linear-gradient(90deg,#0000 0%,#409eff66 30%,#409effe6 50%,#409eff66 70%,#0000 100%);animation:2.5s linear infinite border-light-run-3d7c968a;position:absolute;top:0;left:0}.pulling-icon-wrap[data-v-3d7c968a]{flex-shrink:0;width:44px;height:44px}.pulling-spinner[data-v-3d7c968a]{width:44px;height:44px;animation:1.4s linear infinite pulling-rotate-3d7c968a}.pulling-spinner .pulling-spinner-track[data-v-3d7c968a]{stroke:var(--tint-primary-16)}.pulling-spinner .pulling-spinner-arc[data-v-3d7c968a]{stroke:#409effe6;stroke-linecap:round;stroke-dasharray:80 126;animation:1.4s ease-in-out infinite pulling-dash-3d7c968a}.pulling-text-wrap[data-v-3d7c968a]{flex-direction:column;gap:4px;display:flex}.pulling-title[data-v-3d7c968a]{font-size:var(--font-size-sm);color:#409efff2;letter-spacing:.3px;font-weight:600}.pulling-sub[data-v-3d7c968a]{font-size:var(--font-size-sm);color:#ffffff59}@keyframes pulling-rotate-3d7c968a{to{transform:rotate(360deg)}}@keyframes pulling-dash-3d7c968a{0%{stroke-dasharray:1 126;stroke-dashoffset:0}50%{stroke-dasharray:90 126;stroke-dashoffset:-35px}to{stroke-dasharray:90 126;stroke-dashoffset:-124px}}.stages-section[data-v-3d7c968a]{gap:var(--spacing-md);padding:var(--spacing-md);border-radius:var(--radius-md);transition:var(--transition-ui-slow);background:0 0;border:1px solid #ffffff0d;grid-template-columns:repeat(2,1fr);display:grid;position:relative;overflow:hidden}.stages-section.is-loading[data-v-3d7c968a]{border-color:var(--tint-primary-16)}.stages-section.is-loading[data-v-3d7c968a]:before{content:"";width:60px;height:2px;box-shadow:0 0 10px var(--tint-primary-50);background:linear-gradient(90deg,#0000 0%,#409eff66 30%,#409effcc 50%,#409eff66 70%,#0000 100%);animation:4s linear infinite border-light-run-3d7c968a;position:absolute;top:0;left:0}.stages-section.is-success[data-v-3d7c968a]{border-color:#67c23a33}[data-theme=dark] .stages-section[data-v-3d7c968a]{opacity:.8}.stage-item[data-v-3d7c968a]{gap:var(--spacing-base);padding:10px var(--spacing-md);border-radius:var(--radius-lg);transition:var(--transition-ui-slow);background:#ffffff08;border:1px solid #ffffff14;flex-direction:column;display:flex;position:relative}.stage-item.active[data-v-3d7c968a]{background:var(--tint-primary-06);border-color:var(--tint-primary-16);transform:scale(1.01)}.stage-item.finished[data-v-3d7c968a]{background:#67c23a0d;border-color:#67c23a26}.stage-item.error[data-v-3d7c968a]{background:#f56c6c0d;border-color:#f56c6c26}.stage-header[data-v-3d7c968a]{align-items:center;gap:10px;display:flex}.stage-icon[data-v-3d7c968a]{width:24px;height:24px;transition:var(--transition-ui-slow);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:600;display:flex}.stage-icon .icon-finish[data-v-3d7c968a]{color:var(--color-success);font-size:var(--font-size-md)}.stage-icon .icon-error[data-v-3d7c968a]{color:var(--color-danger);font-size:var(--font-size-md)}.stage-icon .icon-process[data-v-3d7c968a]{color:var(--color-primary);font-size:var(--font-size-md);animation:1s linear infinite rotate-3d7c968a}.stage-icon .icon-wait[data-v-3d7c968a]{color:gray;font-size:var(--font-size-md);animation:2s linear infinite rotate-3d7c968a}@keyframes rotate-3d7c968a{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.stage-info[data-v-3d7c968a]{flex:1;justify-content:space-between;align-items:center;display:flex}.stage-label[data-v-3d7c968a]{color:var(--text-primary);letter-spacing:.2px;font-weight:500}.stage-percent[data-v-3d7c968a]{font-size:var(--font-size-sm);color:var(--color-primary);text-align:right;letter-spacing:.5px;min-width:42px;font-family:Consolas,Monaco,monospace;font-weight:700}.finished .stage-percent[data-v-3d7c968a]{color:var(--color-success)}.stage-progress[data-v-3d7c968a]{padding-left:34px}.stage-progress[data-v-3d7c968a] .el-progress-bar__outer{background-color:#00000014}.stage-progress[data-v-3d7c968a] .el-progress-bar__inner{background:linear-gradient(90deg, var(--color-primary), var(--color-primary-light));transition:var(--transition-ui-slow)}.finished .stage-progress[data-v-3d7c968a] .el-progress-bar__inner{background:linear-gradient(90deg, var(--color-success), var(--color-success))}.error-section[data-v-3d7c968a]{border-radius:var(--radius-lg);padding:var(--spacing-lg);gap:var(--spacing-base);background:#fef0f0;border:1px solid #fde2e2;flex-direction:column;display:flex}.error-header[data-v-3d7c968a]{justify-content:space-between;align-items:center;display:flex}.error-title[data-v-3d7c968a]{color:var(--color-danger);font-weight:600}.pull-button[data-v-3d7c968a]{align-items:center;gap:4px;display:flex}.error-content[data-v-3d7c968a]{color:#c45656;font-size:var(--font-size-mid);word-break:break-word;padding:var(--spacing-sm);border-radius:var(--radius-base);background:#00000008;line-height:1.6}.error-suggestion[data-v-3d7c968a]{font-size:var(--font-size-sm);color:var(--color-primary);margin-top:4px;font-weight:500}.messages-section[data-v-3d7c968a]{gap:var(--spacing-base);flex-direction:column;display:flex}.messages-title[data-v-3d7c968a]{color:var(--text-secondary);font-weight:600;font-size:var(--font-size-sm);letter-spacing:.3px;opacity:.85}.progress-messages[data-v-3d7c968a]{border-radius:var(--radius-lg);max-height:160px;padding:10px var(--spacing-md);font-family:Consolas,Monaco,Courier New,monospace;font-size:var(--font-size-xs);background:#0000004d;border:1px solid #ffffff0d;line-height:1.5;overflow-y:auto;box-shadow:inset 0 2px 4px #0003}.progress-messages[data-v-3d7c968a]::-webkit-scrollbar{width:5px}.progress-messages[data-v-3d7c968a]::-webkit-scrollbar-track{border-radius:var(--radius-base);background:#0000001a}.progress-messages[data-v-3d7c968a]::-webkit-scrollbar-thumb{border-radius:var(--radius-base);background:#fff3}.progress-messages[data-v-3d7c968a]::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.message-item[data-v-3d7c968a]{color:#ffffffd9;padding:var(--spacing-xs) 0;white-space:nowrap;text-overflow:ellipsis;opacity:.9;transition:opacity var(--transition-base) ease;overflow:hidden}.message-item[data-v-3d7c968a]:hover{opacity:1}.message-item[data-v-3d7c968a]:not(:last-child){margin-bottom:3px}[data-theme=dark] .error-section[data-v-3d7c968a]{background:#f56c6c1a;border-color:#f56c6c4d}[data-theme=dark] .error-content[data-v-3d7c968a]{color:#f89898}:root:not([data-theme=dark]) .progress-messages[data-v-3d7c968a]{background:#0000000f;border:1px solid #00000014;box-shadow:inset 0 1px 3px #00000014}:root:not([data-theme=dark]) .message-item[data-v-3d7c968a]{color:#000000bf}:root:not([data-theme=dark]) .message-item[data-v-3d7c968a]:hover{color:#000000e6}:root:not([data-theme=dark]) .messages-title[data-v-3d7c968a]{color:#000000a6}:root:not([data-theme=dark]) .progress-messages[data-v-3d7c968a]::-webkit-scrollbar-track{background:#0000000d}:root:not([data-theme=dark]) .progress-messages[data-v-3d7c968a]::-webkit-scrollbar-thumb{background:#0003}:root:not([data-theme=dark]) .progress-messages[data-v-3d7c968a]::-webkit-scrollbar-thumb:hover{background:#0000004d}.push-button-group[data-v-ed54022f]{align-items:center;gap:4px;display:inline-flex}.push-remote-item[data-v-ed54022f]{align-items:center;gap:6px;display:inline-flex}.push-button.from-drawer[data-v-ed54022f]{padding:6px var(--spacing-md);font-size:var(--font-size-sm);height:32px}.push-button.from-status[data-v-ed54022f]{padding:var(--spacing-base);font-size:var(--font-size-sm);height:36px}.push-button.from-form[data-v-ed54022f]{font-size:var(--font-size-mid);height:32px}.push-button__caret.from-drawer[data-v-ed54022f],.push-button__caret.from-form[data-v-ed54022f]{height:32px;padding:0 6px}.push-button__caret.from-status[data-v-ed54022f]{height:36px;padding:0 6px}.push-button__caret[data-v-ed54022f] .el-icon{font-size:var(--font-size-sm)}.one-push-button[data-v-c8c92c10]{height:100%;background:var(--color-primary-dark)!important;border:1px solid var(--color-primary-dark)!important;color:#fff!important}.one-push-button[data-v-c8c92c10]:hover:not(.is-disabled){background:color-mix(in srgb, var(--color-primary-dark) 88%, #000)!important;border-color:color-mix(in srgb, var(--color-primary-dark) 88%, #000)!important}.one-push-button .one-push-icon[data-v-c8c92c10],.one-push-button .one-push-title[data-v-c8c92c10],.one-push-button .one-push-desc[data-v-c8c92c10]{color:#fff}.one-push-button.form[data-v-c8c92c10]{width:100%;padding:4px 12px}.one-push-button.drawer[data-v-c8c92c10]{width:auto;height:32px}.one-push-button .one-push-content[data-v-c8c92c10]{align-items:center;gap:6px;display:flex}.one-push-button .one-push-content .one-push-icon[data-v-c8c92c10]{font-size:var(--font-size-base)}.one-push-button .one-push-content .one-push-text[data-v-c8c92c10]{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.one-push-button .one-push-content .one-push-text .one-push-title[data-v-c8c92c10]{font-size:var(--font-size-mid)}.one-push-button .one-push-content .one-push-text .one-push-desc[data-v-c8c92c10]{font-size:var(--font-size-xs);opacity:.9;letter-spacing:.1px;font-weight:400}.create-tag-button[data-v-871521cb]{display:inline-block}.tag-dialog-content[data-v-871521cb]{gap:var(--spacing-base);flex-direction:column;display:flex}.tag-info-card[data-v-871521cb]{align-items:flex-start;gap:var(--spacing-base);padding:var(--spacing-base);border-radius:var(--radius-xl);background:linear-gradient(135deg,#f0fdf4 0%,#dcfce7 100%);border:1px solid #86efac;display:flex;position:relative;overflow:hidden}.tag-info-card[data-v-871521cb]:before{content:"";background:linear-gradient(90deg, var(--action-green) 0%, var(--action-green-dark) 100%);height:3px;position:absolute;top:0;left:0;right:0}.tag-info-card .info-icon[data-v-871521cb]{background:linear-gradient(135deg, var(--action-green) 0%, var(--action-green-dark) 100%);border-radius:var(--radius-md);color:#fff;width:40px;height:40px;font-size:var(--font-size-lg);box-shadow:var(--shadow-md);flex-shrink:0;justify-content:center;align-items:center;display:flex}.tag-info-card .info-content[data-v-871521cb]{flex:1}.tag-info-card .info-content h4[data-v-871521cb]{font-size:var(--font-size-md);color:#14532d;margin:0 0 6px;font-weight:600;line-height:1.2}.tag-info-card .info-content p[data-v-871521cb]{color:#166534;margin:0;line-height:1.4}.tag-form[data-v-871521cb]{gap:var(--spacing-base);flex-direction:column;display:flex}.tag-form[data-v-871521cb] .el-form-item{margin-bottom:0}.tag-form[data-v-871521cb] .el-form-item__label{color:var(--color-text-title);margin-bottom:var(--spacing-base);font-weight:600}.tag-form[data-v-871521cb] .el-input .el-input__inner{border-radius:var(--radius-lg);border:2px solid var(--color-gray-200);transition:var(--transition-ui-slow)}.tag-form[data-v-871521cb] .el-input .el-input__inner:hover{border-color:var(--color-gray-300)}.tag-form[data-v-871521cb] .el-input .el-input__inner:focus-visible{border-color:var(--action-green);box-shadow:0 0 0 3px #22c55e1a}.tag-form[data-v-871521cb] .el-textarea .el-textarea__inner{border-radius:var(--radius-lg);border:2px solid var(--color-gray-200);transition:var(--transition-ui-slow);line-height:1.5}.tag-form[data-v-871521cb] .el-textarea .el-textarea__inner:hover{border-color:var(--color-gray-300)}.tag-form[data-v-871521cb] .el-textarea .el-textarea__inner:focus-visible{border-color:var(--action-green);box-shadow:0 0 0 3px #22c55e1a}.tag-form[data-v-871521cb] .el-radio-group{width:100%}.tag-form[data-v-871521cb] .el-radio-group .el-radio-button{flex:1}.tag-form[data-v-871521cb] .el-radio-group .el-radio-button .el-radio-button__inner{border-radius:var(--radius-lg);width:100%;transition:var(--transition-ui-slow)}.form-tip[data-v-871521cb]{margin-top:var(--spacing-base);font-size:var(--font-size-sm);color:var(--color-gray-500);align-items:flex-start;gap:6px;line-height:1.4;display:flex}.form-tip .el-icon[data-v-871521cb]{color:var(--color-gray-400);flex-shrink:0;margin-top:1px}.commit-prefix[data-v-871521cb]{font-size:var(--font-size-sm);color:var(--color-gray-500);font-family:monospace}[data-v-871521cb] .tag-dialog .common-dialog__footer .el-button{border-radius:var(--radius-lg);transition:var(--transition-ui-slow);font-weight:500}[data-v-871521cb] .tag-dialog .common-dialog__footer .el-button:hover{transform:scale(1.02)}[data-v-871521cb] .tag-dialog .common-dialog__footer .el-button:active{transform:scale(.98)}[data-v-871521cb] .tag-dialog .common-dialog__footer .el-button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.tag-list-button[data-v-366ce062]{display:inline-block}.tag-list-content[data-v-366ce062]{min-height:400px;padding:0}[data-v-366ce062] .tag-list-dialog .common-dialog__header{background:var(--action-green);color:#fff;padding:var(--spacing-xl) var(--spacing-2xl);border-radius:var(--radius-lg) var(--radius-lg) 0 0;margin:0}[data-v-366ce062] .tag-list-dialog .common-dialog__title{font-size:var(--font-size-lg);color:#fff;font-weight:600}[data-v-366ce062] .tag-list-dialog .common-dialog__close{color:#fff;font-size:var(--font-size-lg)}[data-v-366ce062] .tag-list-dialog .common-dialog__close:hover{color:var(--border-card)}.tag-header[data-v-366ce062]{margin-bottom:var(--spacing-base);padding:var(--spacing-base);background:linear-gradient(135deg, var(--color-white) 0%, var(--color-gray-soft) 100%);border-radius:var(--radius-lg);border:1px solid var(--border-component);box-shadow:var(--shadow-md);justify-content:space-between;align-items:center;display:flex}.tag-stats[data-v-366ce062]{align-items:center;gap:var(--spacing-base);display:flex}.stat-item[data-v-366ce062]{align-items:center;gap:var(--spacing-base);padding:var(--spacing-xs) var(--spacing-base);background:var(--action-green);border-radius:var(--radius-lg);color:#fff;display:flex}.stat-icon[data-v-366ce062]{font-size:var(--font-size-md)}.stat-number[data-v-366ce062]{font-size:var(--font-size-lg);font-weight:600}.stat-label[data-v-366ce062]{opacity:.9}.tag-actions-header[data-v-366ce062]{gap:var(--spacing-base);display:flex}.refresh-btn[data-v-366ce062],.push-all-btn[data-v-366ce062]{border-radius:var(--radius-lg);padding:var(--spacing-xs) var(--spacing-base);transition:var(--transition-ui-slow);font-weight:500}.refresh-btn[data-v-366ce062]:hover,.push-all-btn[data-v-366ce062]:hover{transform:scale(1.02)}.refresh-btn[data-v-366ce062]:active,.push-all-btn[data-v-366ce062]:active{transform:scale(.98)}.refresh-btn[data-v-366ce062]:focus-visible,.push-all-btn[data-v-366ce062]:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.tag-list-container[data-v-366ce062]{min-height:300px}.tag-cards[data-v-366ce062]{gap:var(--spacing-base);flex-direction:column;display:flex}.tag-card[data-v-366ce062]{background:var(--bg-container);border-radius:var(--radius-lg);border:1px solid var(--border-component);box-shadow:var(--shadow-md);transition:var(--transition-ui-slow);overflow:hidden}.tag-card[data-v-366ce062]:hover{border-color:var(--action-green);transform:scale(1.02)}.tag-card[data-v-366ce062]:active{transform:scale(.98)}.tag-card[data-v-366ce062]:focus-visible{outline:2px solid var(--action-green);outline-offset:2px}.tag-card-content[data-v-366ce062]{padding:var(--spacing-base);align-items:center;gap:var(--spacing-base);display:flex}.tag-info[data-v-366ce062]{gap:var(--spacing-sm);flex-direction:column;flex:1;min-width:0;display:flex}.tag-main-info[data-v-366ce062]{flex-direction:column;gap:6px;display:flex}.tag-name-badge[data-v-366ce062]{align-items:center;gap:var(--spacing-base);flex-shrink:0;display:flex}.badge-icon[data-v-366ce062]{color:var(--action-green)}.tag-name-text[data-v-366ce062]{color:var(--color-text);font-family:Consolas,Monaco,Courier New,monospace;font-weight:600}.type-tag[data-v-366ce062]{margin-left:var(--spacing-sm)}.tag-meta[data-v-366ce062]{align-items:center;gap:var(--spacing-md);font-size:var(--font-size-sm);color:var(--text-secondary);display:flex}.tag-commit[data-v-366ce062]{align-items:center;gap:var(--spacing-sm);background:var(--bg-panel);padding:var(--spacing-xs) 6px;border-radius:var(--radius-base);font-family:monospace;display:flex}.tag-date[data-v-366ce062]{color:var(--text-tertiary)}.tag-message[data-v-366ce062]{font-size:var(--font-size-sm);color:var(--text-secondary);padding:6px var(--spacing-base);background:var(--bg-panel);border-radius:var(--radius-md);border-left:3px solid var(--action-green);line-height:1.4}.tag-card-actions[data-v-366ce062]{flex-shrink:0;align-items:center;gap:6px;display:none}.tag-card:hover .tag-card-actions[data-v-366ce062]{display:flex}.action-btn[data-v-366ce062]{border-radius:var(--radius-md);transition:var(--transition-ui-slow);min-width:60px;padding:6px var(--spacing-md);font-weight:500;font-size:var(--font-size-sm)}.action-btn[data-v-366ce062]:hover{transform:scale(1.02)}.action-btn[data-v-366ce062]:active{transform:scale(.98)}.action-btn[data-v-366ce062]:focus-visible{outline:2px solid var(--action-green);outline-offset:2px}.view-btn[data-v-366ce062]:hover,.push-btn[data-v-366ce062]:hover,.delete-btn[data-v-366ce062]:hover{box-shadow:var(--shadow-md)}.tag-detail-content[data-v-366ce062]{gap:var(--spacing-md);flex-direction:column;display:flex}.detail-row[data-v-366ce062]{align-items:center;gap:var(--spacing-md);background:var(--bg-panel);border-radius:var(--radius-lg);padding:10px;display:flex}.detail-row.detail-message[data-v-366ce062]{flex-direction:column;align-items:flex-start}.detail-label[data-v-366ce062]{font-size:var(--font-size-sm);color:var(--text-secondary);white-space:nowrap;min-width:80px;font-weight:600}.detail-value[data-v-366ce062]{color:var(--color-text)}.detail-value[data-v-366ce062]:is(code){background:var(--border-component);padding:var(--spacing-xs) var(--spacing-base);border-radius:var(--radius-base);border:1px solid var(--border-component);font-family:monospace}.message-content[data-v-366ce062]{width:100%;padding:var(--spacing-base);border-radius:var(--radius-md);border:1px solid var(--border-card);white-space:pre-wrap;word-break:break-word;background:#fff;line-height:1.6}.git-operations-button[data-v-feb8c688]{display:inline-block}.action-groups[data-v-feb8c688]{flex-direction:column;gap:16px;display:flex}.action-group[data-v-feb8c688]{background:var(--bg-container);border-radius:var(--radius-lg);border:1px solid var(--border-component);padding:16px}.group-title[data-v-feb8c688]{font-size:var(--font-size-base);color:var(--text-primary);margin-bottom:10px;padding-bottom:6px;font-weight:600}.group-buttons[data-v-feb8c688]{flex-direction:column;gap:10px;display:flex}.group-buttons[data-v-feb8c688] .el-button{justify-content:center;align-items:center;width:100%;height:40px;display:flex}.pull-error-content[data-v-feb8c688]{flex-direction:column;gap:16px;display:flex}.pull-error-type[data-v-feb8c688]{border-radius:var(--radius-lg);font-size:var(--font-size-mid);align-items:flex-start;gap:10px;padding:12px 14px;line-height:1.6;display:flex}.pull-error-type.is-warning[data-v-feb8c688]{color:var(--color-warning-dark);background:#faad141a;border:1px solid #faad1466}.pull-error-type.is-error[data-v-feb8c688]{color:var(--action-coral);background:#f56c6c14;border:1px solid #f56c6c59}.pull-error-icon[data-v-feb8c688]{font-size:var(--font-size-md);flex-shrink:0;margin-top:2px}.pull-error-detail[data-v-feb8c688]{flex-direction:column;gap:6px;display:flex}.pull-error-label[data-v-feb8c688]{font-size:var(--font-size-mid);color:var(--text-primary);font-weight:600}.pull-error-pre[data-v-feb8c688]{border-radius:var(--radius-lg);font-family:Consolas,Monaco,Courier New,monospace;font-size:var(--font-size-sm);color:var(--text-primary);white-space:pre-wrap;word-break:break-all;background:#0000000f;border:1px solid #0000001a;max-height:300px;margin:0;padding:12px 14px;line-height:1.6;overflow-y:auto}.global-loading-overlay[data-v-691919d3]{z-index:9999;background:#fff0;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.loading-container[data-v-691919d3]{justify-content:center;align-items:center;gap:var(--spacing-md);border-radius:var(--radius-xl);-webkit-backdrop-filter:blur(25px);backdrop-filter:blur(25px);background:linear-gradient(135deg,#409effe6 0%,#67c23ae6 100%);flex-direction:column;width:240px;padding:28px 32px;display:flex;overflow:hidden;box-shadow:0 8px 32px #0000004d;height:auto!important}.loading-spinner[data-v-691919d3]{width:64px;height:64px;position:relative}.spinner-ring[data-v-691919d3]{border:4px solid #0000;border-radius:50%;width:100%;height:100%;position:absolute;top:0;left:0}.spinner-ring[data-v-691919d3]:first-child{border-top:4px solid #ffffffe6;animation:2s linear infinite spin-691919d3}.spinner-ring[data-v-691919d3]:nth-child(2){border-right:4px solid #fff9;width:90%;height:90%;animation:3s linear infinite reverse spin-691919d3;top:5%;left:5%}.spinner-ring[data-v-691919d3]:nth-child(3){border-bottom:4px solid #ffffff4d;width:80%;height:80%;animation:4s linear infinite spin-691919d3;top:10%;left:10%}.loading-text[data-v-691919d3]{font-size:var(--font-size-lg);text-shadow:0 2px 8px #0000004d;letter-spacing:1px;text-align:center;color:var(--color-white);font-weight:600;animation:2s ease-in-out infinite pulse-text-691919d3}.loading-progress[data-v-691919d3]{border-radius:var(--radius-xs);background:#fff3;width:200px;height:4px;overflow:hidden}.progress-bar[data-v-691919d3]{background:linear-gradient(90deg, var(--bg-container) 0%, #fffc 100%);border-radius:var(--radius-xs);height:100%;transition:width var(--transition-slow) ease;box-shadow:0 0 10px #ffffff80}.progress-bar.is-mock[data-v-691919d3]{width:0%;animation:2.4s ease-in-out infinite mock-progress-691919d3}@keyframes spin-691919d3{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse-text-691919d3{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}@keyframes mock-progress-691919d3{0%{width:0%}50%{width:70%}to{width:100%}}.loading-fade-enter-active[data-v-691919d3],.loading-fade-leave-active[data-v-691919d3]{transition:var(--transition-ui-slow)}.loading-fade-enter-from[data-v-691919d3],.loading-fade-leave-to[data-v-691919d3]{opacity:0}.loading-fade-enter-to[data-v-691919d3],.loading-fade-leave-from[data-v-691919d3]{opacity:1}.loading-fade-enter-active .loading-container[data-v-691919d3],.loading-fade-leave-active .loading-container[data-v-691919d3]{transition:var(--transition-ui-slow)}.loading-fade-enter-from .loading-container[data-v-691919d3],.loading-fade-leave-to .loading-container[data-v-691919d3]{opacity:0;-webkit-backdrop-filter:blur();backdrop-filter:blur();transform:scale(.8)}.loading-fade-enter-to .loading-container[data-v-691919d3],.loading-fade-leave-from .loading-container[data-v-691919d3]{opacity:1;-webkit-backdrop-filter:blur(25px);backdrop-filter:blur(25px);transform:scale(1)}[data-theme=dark] .global-loading-overlay[data-v-691919d3]{background:#00000073}[data-theme=dark] .loading-container[data-v-691919d3]{background:linear-gradient(135deg,#161616e6 0%,#1c1c1ce6 100%);border:1px solid #ffffff14;box-shadow:0 12px 36px #0009}[data-theme=dark] .loading-text[data-v-691919d3]{color:#ffffffeb;text-shadow:0 2px 10px #0009}[data-theme=dark] .loading-progress[data-v-691919d3]{background:#ffffff1f}[data-theme=dark] .progress-bar[data-v-691919d3]{box-shadow:0 0 10px var(--tint-primary-45);background:linear-gradient(90deg,#409effd9 0%,#67c23ad9 100%)}.success-overlay[data-v-c3fad05d]{background:var(--dialog-overlay);-webkit-backdrop-filter:blur(10px);padding:var(--spacing-2xl);z-index:9999;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.success-container[data-v-c3fad05d]{background:var(--bg-container);border:1px solid var(--dialog-border-color);border-radius:var(--dialog-radius);width:min(92vw,420px);box-shadow:var(--dialog-shadow);text-align:center;flex-direction:column;align-items:center;gap:18px;padding:32px 30px 28px;display:flex}.success-icon[data-v-c3fad05d]{background:color-mix(in srgb, var(--color-success) 10%, var(--bg-container) 90%);width:76px;height:76px;box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--color-success) 18%, transparent 82%);border-radius:999px;justify-content:center;align-items:center;display:inline-flex}.success-svg[data-v-c3fad05d]{width:48px;height:48px}.success-circle[data-v-c3fad05d]{stroke:var(--color-success);stroke-width:2px;stroke-miterlimit:10;stroke-dasharray:166;stroke-dashoffset:166px;fill:none;animation:success-circle-animation-c3fad05d .58s var(--ease-enter) forwards}.success-check[data-v-c3fad05d]{stroke:var(--color-success);stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:48;stroke-dashoffset:48px;animation:success-check-animation-c3fad05d .24s var(--ease-enter) .5s forwards}.success-text[data-v-c3fad05d]{max-width:18ch;font-size:clamp(20px,2vw,22px);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-heading);color:var(--text-title);margin:0;line-height:1.25}.success-description[data-v-c3fad05d]{max-width:28ch;font-size:var(--font-size-base);color:var(--text-secondary);line-height:var(--line-height-relaxed);margin:0}@keyframes success-circle-animation-c3fad05d{to{stroke-dashoffset:0}}@keyframes success-check-animation-c3fad05d{to{stroke-dashoffset:0}}.success-fade-enter-active[data-v-c3fad05d],.success-fade-leave-active[data-v-c3fad05d]{transition:opacity var(--transition-base) cubic-bezier(.22, 1, .36, 1)}.success-fade-enter-from[data-v-c3fad05d],.success-fade-leave-to[data-v-c3fad05d]{opacity:0}.success-fade-enter-to[data-v-c3fad05d],.success-fade-leave-from[data-v-c3fad05d]{opacity:1}.success-fade-enter-active .success-container[data-v-c3fad05d],.success-fade-leave-active .success-container[data-v-c3fad05d]{transition:opacity var(--transition-base) cubic-bezier(.22, 1, .36, 1), transform var(--transition-base) cubic-bezier(.22, 1, .36, 1)}.success-fade-enter-from .success-container[data-v-c3fad05d],.success-fade-leave-to .success-container[data-v-c3fad05d]{opacity:0;transform:translateY(8px)scale(.985)}.success-fade-enter-to .success-container[data-v-c3fad05d],.success-fade-leave-from .success-container[data-v-c3fad05d]{opacity:1;transform:translateY(0)scale(1)}.one-commit-button[data-v-91c441c2]{height:100%;background:linear-gradient(135deg, var(--color-primary-dark) 0%, color-mix(in srgb, var(--color-primary-dark) 78%, #000) 100%)!important;color:#fff!important;border:none!important}.one-commit-button .one-commit-icon[data-v-91c441c2],.one-commit-button .one-commit-title[data-v-91c441c2],.one-commit-button .one-commit-desc[data-v-91c441c2]{color:#fff}.one-commit-button.form[data-v-91c441c2]{width:100%;padding:4px 12px}.one-commit-button.drawer[data-v-91c441c2]{width:auto;height:32px}.one-commit-button .one-commit-content[data-v-91c441c2]{align-items:center;gap:6px;display:flex}.one-commit-button .one-commit-content .one-commit-icon[data-v-91c441c2]{font-size:var(--font-size-base)}.one-commit-button .one-commit-content .one-commit-text[data-v-91c441c2]{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.one-commit-button .one-commit-content .one-commit-text .one-commit-title[data-v-91c441c2]{font-size:var(--font-size-mid)}.one-commit-button .one-commit-content .one-commit-text .one-commit-desc[data-v-91c441c2]{font-size:var(--font-size-xs);opacity:.9;letter-spacing:.1px;font-weight:400}.one-ai-push-button[data-v-7c1fd6f9]{height:100%;color:#fff!important;background:linear-gradient(135deg,#7c3aed 0%,#6d28d9 100%)!important;border:none!important}.one-ai-push-button[data-v-7c1fd6f9]:hover:not(.is-disabled){background:linear-gradient(135deg,#6d28d9 0%,#5b21b6 100%)!important}.one-ai-push-button .one-ai-push-icon[data-v-7c1fd6f9],.one-ai-push-button .one-ai-push-title[data-v-7c1fd6f9],.one-ai-push-button .one-ai-push-desc[data-v-7c1fd6f9]{color:#fff}.one-ai-push-button.form[data-v-7c1fd6f9]{width:100%;padding:4px 12px}.one-ai-push-button.drawer[data-v-7c1fd6f9]{width:auto;height:32px}.one-ai-push-button .one-ai-push-icon[data-v-7c1fd6f9]{font-size:var(--font-size-base)}.one-ai-push-button .one-ai-push-content[data-v-7c1fd6f9]{align-items:center;gap:6px;display:flex}.one-ai-push-button .one-ai-push-content .one-ai-push-text[data-v-7c1fd6f9]{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.one-ai-push-button .one-ai-push-content .one-ai-push-text .one-ai-push-title[data-v-7c1fd6f9]{font-size:var(--font-size-mid)}.one-ai-push-button .one-ai-push-content .one-ai-push-text .one-ai-push-desc[data-v-7c1fd6f9]{font-size:var(--font-size-xs);opacity:.9;letter-spacing:.1px;font-weight:400}[data-v-32a611a8] .el-button+.el-button{margin-left:0}[data-v-32a611a8] .el-button{border-radius:var(--radius-md);transition:var(--transition-ui-slow);font-weight:500;font-size:var(--font-size-sm);padding:6px 10px}[data-v-32a611a8] .el-button:hover{box-shadow:var(--shadow-md);transform:scale(1.02)}[data-v-32a611a8] .el-button:active{transform:scale(.98)}[data-v-32a611a8] .el-button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}[data-v-32a611a8] .el-button.is-disabled{opacity:.4!important}[data-v-32a611a8] .el-button--primary{background:var(--color-primary);color:#fff;border:none}[data-v-32a611a8] .el-button--primary.is-disabled{background-color:var(--color-primary-light)!important;border-color:var(--color-primary-light)!important;opacity:.5!important}[data-v-32a611a8] .el-button--warning{background:var(--color-warning);color:#fff;border:none}[data-v-32a611a8] .el-button--warning.is-disabled{background-color:var(--color-warning)!important;border-color:var(--color-warning)!important;opacity:.5!important}[data-v-32a611a8] .left-actions .el-button{background:var(--bg-container);border:1px solid var(--border-color-medium);color:var(--text-secondary);box-shadow:none}[data-v-32a611a8] .left-actions .el-button:hover:not(.is-disabled){background:var(--soft-btn-bg-hover);border-color:var(--soft-btn-border-hover)}[data-v-32a611a8] .left-actions .el-button--primary.is-disabled{background-color:var(--bg-container)!important;border-color:var(--border-color-medium)!important;color:var(--text-disabled)!important;opacity:.6!important}.actions-flex-container[data-v-32a611a8]{justify-content:flex-start;align-items:center;gap:6px;display:flex}.left-actions[data-v-32a611a8]{align-self:center;display:flex}.button-grid[data-v-32a611a8]{gap:6px;display:flex}.right-actions[data-v-32a611a8]{align-items:stretch;gap:6px;height:36px;margin-left:auto;display:flex}.command-history-button[data-v-6ba10e2c]{width:36px;height:36px;padding:0}.history-scroll[data-v-6ba10e2c]{flex-grow:1;overflow-y:auto}.dialog-content .modern-btn[data-v-6ba10e2c]{color:#000c;background:#0000000d;border:1px solid #0000001a}.dialog-content .modern-btn[data-v-6ba10e2c]:hover{color:#000;background:#00000014;border-color:#00000026}.enhanced-btn[data-v-6ba10e2c]{min-width:60px;height:36px;padding:var(--spacing-base);border-radius:var(--radius-md);font-size:var(--font-size-sm);transition:var(--transition-ui-slow);gap:6px;font-weight:500;position:relative;overflow:hidden}.enhanced-btn .btn-text[data-v-6ba10e2c]{font-size:var(--font-size-sm);white-space:nowrap;z-index:1;font-weight:500;position:relative}.enhanced-btn .btn-icon[data-v-6ba10e2c]{font-size:var(--font-size-lg);z-index:1;position:relative}.danger-btn[data-v-6ba10e2c]{color:var(--color-danger);background:#f56c6c1a;border-color:#f56c6c33}.danger-btn[data-v-6ba10e2c]:before{background:linear-gradient(135deg,#f56c6c26 0%,#ff4d4f26 100%)}.danger-btn[data-v-6ba10e2c]:hover{color:var(--color-danger);box-shadow:var(--shadow-md);background:#f56c6c26;border-color:#f56c6c4d}.copy-commands-button[data-v-6ba10e2c],.copy-all-button[data-v-6ba10e2c],.clear-button[data-v-6ba10e2c]{min-width:70px;height:36px;font-weight:600}.dialog-toolbar .enhanced-btn[data-v-6ba10e2c]{color:#000000d9;box-shadow:var(--shadow-sm);background:#ffffffe6;border:1px solid #00000014}.dialog-toolbar .enhanced-btn[data-v-6ba10e2c]:hover{color:#000;box-shadow:var(--shadow-lg);background:#fff;border-color:#0000001f}[data-theme=dark] .dialog-toolbar .enhanced-btn[data-v-6ba10e2c]{background:var(--bg-container);color:var(--text-primary);border-color:var(--border-component);box-shadow:var(--shadow-md)}[data-theme=dark] .dialog-toolbar .enhanced-btn[data-v-6ba10e2c]:hover{background:var(--bg-container-hover);color:var(--color-white);border-color:var(--border-component-light);box-shadow:var(--shadow-lg)}.dialog-toolbar .danger-btn[data-v-6ba10e2c]{color:var(--color-danger);background:#f56c6c14;border-color:#f56c6c26}.dialog-toolbar .danger-btn[data-v-6ba10e2c]:hover{color:var(--color-danger);box-shadow:var(--shadow-md);background:#f56c6c1f;border-color:#f56c6c40}[data-theme=dark] .dialog-toolbar .danger-btn[data-v-6ba10e2c]{background:var(--action-coral);color:#fff;border-color:#e74c3c}[data-theme=dark] .dialog-toolbar .danger-btn[data-v-6ba10e2c]:hover{color:#fff;box-shadow:var(--shadow-lg);background:#e74c3c;border-color:#ff6b6b}.item-copy-button[data-v-6ba10e2c],.output-copy-button[data-v-6ba10e2c]{width:32px;height:32px;padding:0!important}.item-copy-button .btn-icon[data-v-6ba10e2c],.output-copy-button .btn-icon[data-v-6ba10e2c]{font-size:var(--font-size-md)}.item-copy-button .btn-text[data-v-6ba10e2c],.output-copy-button .btn-text[data-v-6ba10e2c]{display:none}.item-copy-button[data-v-6ba10e2c]:hover,.output-copy-button[data-v-6ba10e2c]:hover{box-shadow:var(--shadow-md);transform:scale(1.02)}.item-copy-button[data-v-6ba10e2c]:active,.output-copy-button[data-v-6ba10e2c]:active{box-shadow:var(--shadow-md);transform:scale(.98)}.item-copy-button[data-v-6ba10e2c]:focus-visible,.output-copy-button[data-v-6ba10e2c]:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.expand-button[data-v-6ba10e2c]{width:32px;height:32px;color:var(--text-secondary);transition:transform var(--transition-slow) ease;justify-content:center;align-items:center;display:flex}.expand-button .btn-icon[data-v-6ba10e2c]{font-size:var(--font-size-md);transition:transform var(--transition-slow) ease}.enhanced-btn[data-v-6ba10e2c]:active{box-shadow:var(--shadow-md);transform:scale(.98)}.enhanced-btn[data-v-6ba10e2c]:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.enhanced-btn[data-v-6ba10e2c]:disabled{opacity:.6;cursor:not-allowed;transform:none}.enhanced-btn[data-v-6ba10e2c]:disabled:hover{box-shadow:none;transform:none}.expand-button.is-expanded .btn-icon[data-v-6ba10e2c]{transform:rotate(180deg)}.command-history-dialog[data-v-6ba10e2c]{border-radius:var(--radius-lg);z-index:9999!important}[data-v-6ba10e2c] .command-history-dialog .el-overlay{z-index:9998!important}[data-v-6ba10e2c] .command-history-dialog .el-dialog{z-index:9999!important}.dialog-toolbar[data-v-6ba10e2c]{padding:var(--spacing-lg) var(--spacing-xl);justify-content:space-between;align-items:center;gap:var(--spacing-md);background:linear-gradient(135deg, var(--color-gray-soft) 0%, var(--border-component) 100%);border-radius:8px 8px 0 0;flex-wrap:wrap;display:flex}.filter-controls[data-v-6ba10e2c]{align-items:center;gap:var(--spacing-sm);flex:1;min-width:300px;display:flex}.filter-select[data-v-6ba10e2c]{width:120px}.search-input[data-v-6ba10e2c]{width:200px}.toolbar-actions[data-v-6ba10e2c]{align-items:center;gap:var(--spacing-sm);display:flex}[data-theme=dark] .dialog-toolbar[data-v-6ba10e2c]{background:linear-gradient(135deg,#ffffff0d 0%,#ffffff05 100%);border-bottom-color:#ffffff1a}[data-theme=dark] .filter-controls .el-input__wrapper[data-v-6ba10e2c],[data-theme=dark] .filter-controls .el-select .el-input__wrapper[data-v-6ba10e2c]{background-color:#0000004d;border-color:#ffffff1a}[data-theme=dark] .filter-controls .el-input__inner[data-v-6ba10e2c]{color:#ffffffe6}[data-theme=dark] .filter-controls .el-input__inner[data-v-6ba10e2c]::placeholder{color:#ffffff80}.socket-status[data-v-6ba10e2c]{font-size:var(--font-size-sm);margin-right:auto;font-weight:500}.loading-state[data-v-6ba10e2c]{flex-direction:column;justify-content:center;align-items:center;height:100%;min-height:100px;display:flex}.loading-icon[data-v-6ba10e2c]{color:var(--color-primary);margin-bottom:10px;font-size:36px}.loading-text[data-v-6ba10e2c]{color:var(--text-secondary)}.history-list[data-v-6ba10e2c]{gap:var(--spacing-base);flex-direction:column;flex:1;display:flex;overflow-y:auto}.history-item[data-v-6ba10e2c]{border:1px solid var(--border-card);border-radius:var(--radius-base);transition:var(--transition-ui-base);overflow:hidden}[data-theme=dark] .history-item[data-v-6ba10e2c]{background-color:#ffffff08;border-color:#ffffff1a}[data-theme=dark] .history-item[data-v-6ba10e2c]:hover{background-color:#ffffff14;border-color:#fff3}.history-item[data-v-6ba10e2c]:hover{box-shadow:0 2px 12px #0000001a}.history-item.is-error[data-v-6ba10e2c]{border-left:3px solid var(--color-danger)}.item-header[data-v-6ba10e2c]{padding:10px var(--spacing-md);cursor:pointer;transition:background-color var(--transition-base);justify-content:space-between;align-items:center;display:flex}.item-header[data-v-6ba10e2c]:hover{background-color:var(--bg-icon-hover)}.command-info[data-v-6ba10e2c]{flex:1;min-width:0;overflow:hidden}.command-text[data-v-6ba10e2c]{align-items:center;gap:var(--spacing-base);margin-bottom:var(--spacing-sm);display:flex}.command-text code[data-v-6ba10e2c]{font-family:Consolas,Courier New,monospace;font-size:var(--font-size-sm);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}[data-theme=dark] .command-text code[data-v-6ba10e2c]{color:#ffffffe6}.command-meta[data-v-6ba10e2c]{align-items:center;gap:var(--spacing-lg);font-size:var(--font-size-sm);color:var(--text-tertiary);display:flex}[data-theme=dark] .command-meta[data-v-6ba10e2c]{color:#fff9}.timestamp[data-v-6ba10e2c],.duration[data-v-6ba10e2c]{white-space:nowrap}.item-actions[data-v-6ba10e2c]{margin-left:var(--spacing-base);align-items:center;gap:6px;display:flex}.item-details[data-v-6ba10e2c]{padding:10px var(--spacing-md);border-top:1px solid var(--border-card);gap:var(--spacing-md);flex-direction:column;display:flex}[data-theme=dark] .item-details[data-v-6ba10e2c]{background-color:#ffffff05;border-top-color:#ffffff1a}.output-section[data-v-6ba10e2c]{flex-direction:column;gap:6px;display:flex}.output-section.error[data-v-6ba10e2c]{border-left:3px solid var(--color-danger);padding-left:var(--spacing-base)}.output-section[data-v-6ba10e2c]:not(.error){border-left:3px solid var(--color-success);padding-left:var(--spacing-base)}.output-header[data-v-6ba10e2c]{justify-content:space-between;align-items:center;display:flex}.output-header h4[data-v-6ba10e2c]{color:var(--text-secondary);margin:0;font-weight:500}[data-theme=dark] .output-header h4[data-v-6ba10e2c]{color:#fffc}.output-content[data-v-6ba10e2c]{border-radius:var(--radius-base);font-family:Consolas,Courier New,monospace;font-size:var(--font-size-sm);white-space:pre-wrap;word-break:break-all;border:1px solid var(--border-card);max-height:300px;margin:0;padding:10px;overflow-y:auto}[data-theme=dark] .output-content[data-v-6ba10e2c]{color:#ffffffe6;background-color:#0000004d;border-color:#ffffff1a}.status-tag[data-v-6ba10e2c]{flex-shrink:0}.truncation-notice[data-v-6ba10e2c]{margin-top:6px}.output-content[data-v-6ba10e2c]::-webkit-scrollbar{width:6px;height:6px}.output-content[data-v-6ba10e2c]::-webkit-scrollbar-thumb{background-color:var(--text-placeholder);border-radius:var(--radius-base)}.output-content[data-v-6ba10e2c]::-webkit-scrollbar-track{background-color:var(--bg-panel)}.command-history-dialog{z-index:1999!important}.el-overlay{z-index:1998!important}.header-left[data-v-e7d03318]{align-items:center;gap:var(--spacing-md);display:flex}.header-left h2[data-v-e7d03318]{margin:0}.header-right[data-v-e7d03318]{align-items:center;gap:var(--spacing-sm);display:flex}.card-content[data-v-e7d03318]{padding:var(--spacing-base);flex:1;overflow-y:auto}.layout-container[data-v-e7d03318]{gap:var(--spacing-base);flex-direction:column;height:100%;display:flex}.standard-commit-form[data-v-e7d03318]{gap:var(--spacing-base);margin-bottom:var(--spacing-base);flex-direction:column;display:flex}.standard-commit-header[data-v-e7d03318]{gap:var(--spacing-sm);flex-direction:column;width:100%;display:flex}.type-scope-container[data-v-e7d03318]{gap:var(--spacing-base);align-items:stretch;width:100%;display:flex}.type-select[data-v-e7d03318]{width:180px}.scope-wrapper[data-v-e7d03318]{align-items:center;gap:5px;width:130px;display:flex}.commit-form[data-v-e7d03318]{gap:var(--spacing-base);flex-direction:column;display:flex}.description-container[data-v-e7d03318]{border-radius:var(--radius-xl);width:100%;box-shadow:none;transition:var(--transition-ui-slow);background:0 0;align-items:center;gap:5px;display:flex}.description-container.description-inline[data-v-e7d03318]{min-width:0;box-shadow:none;background:0 0;flex:1}.description-container.description-inline[data-v-e7d03318]:hover,.description-container[data-v-e7d03318]:hover{box-shadow:none}[data-v-e7d03318] .description-input{flex-grow:1}[data-v-e7d03318] .description-input .el-input__wrapper{border-radius:var(--radius-lg);background:var(--input-bg);border:1px solid var(--input-border);box-shadow:none;transition:var(--transition-ui-fast);height:40px}[data-v-e7d03318] .description-input .el-input__wrapper:hover{border-color:var(--input-border-hover)}[data-v-e7d03318] .description-input .el-input__wrapper.is-focus{border-color:var(--input-border-focus);box-shadow:var(--focus-ring)}[data-v-e7d03318] .description-input .el-input__inner{height:34px;font-weight:500}[data-v-e7d03318] .description-input .el-input__inner::placeholder{color:var(--text-placeholder);font-weight:400}[data-v-e7d03318] .type-select .el-select__wrapper{border-radius:var(--radius-lg);background:var(--input-bg);border:1px solid var(--input-border);box-shadow:none;transition:var(--transition-ui-fast);height:40px}[data-v-e7d03318] .type-select .el-select__wrapper:hover{border-color:var(--input-border-hover)}[data-v-e7d03318] .type-select .el-select__wrapper.is-focus{border-color:var(--input-border-focus);box-shadow:var(--focus-ring)}[data-v-e7d03318] .type-select .el-select__inner{font-weight:500}[data-v-e7d03318] .type-select .el-select__inner::placeholder{color:var(--text-placeholder);font-weight:400}[data-v-e7d03318] .scope-input{flex-grow:1}[data-v-e7d03318] .scope-input .el-input__wrapper{border-radius:var(--radius-lg);background:var(--input-bg);border:1px solid var(--input-border);box-shadow:none;transition:var(--transition-ui-fast);height:40px}[data-v-e7d03318] .scope-input .el-input__wrapper:hover{border-color:var(--input-border-hover)}[data-v-e7d03318] .scope-input .el-input__wrapper.is-focus{border-color:var(--input-border-focus);box-shadow:var(--focus-ring)}[data-v-e7d03318] .scope-input .el-input__inner{font-weight:500}[data-v-e7d03318] .scope-input .el-input__inner::placeholder{color:var(--text-placeholder);font-weight:400}[data-v-e7d03318] .commit-message-input{border-radius:var(--radius-xl)}[data-v-e7d03318] .commit-message-input .el-textarea__inner{border-radius:var(--radius-lg);background:var(--input-bg);border:1px solid var(--input-border);box-shadow:none;transition:var(--transition-ui-fast);font-weight:500}[data-v-e7d03318] .commit-message-input .el-textarea__inner:hover{border-color:var(--input-border-hover)}[data-v-e7d03318] .commit-message-input .el-textarea__inner:focus-visible{border-color:var(--input-border-focus);box-shadow:var(--focus-ring);outline:none}[data-v-e7d03318] .commit-message-input .el-textarea__inner::placeholder{color:var(--text-placeholder);font-weight:400}[data-v-e7d03318] .commit-message-input:hover{box-shadow:none}.git-config-warning[data-v-e7d03318]{width:100%}.merge-in-progress-banner[data-v-e7d03318]{width:100%;margin-bottom:var(--spacing-base)}.config-command[data-v-e7d03318]{background-color:var(--bg-code-dark);color:#f8f8f2;font-family:var(--font-mono);padding:var(--spacing-base);border-radius:var(--radius-base);margin-top:var(--spacing-base);white-space:pre}.advanced-options-toggle[data-v-e7d03318]{font:inherit;color:inherit;text-align:left;background:0 0;background-color:var(--bg-panel);border-radius:var(--radius-base);cursor:pointer;width:100%;transition:var(--transition-ui-slow);-webkit-user-select:none;user-select:none;border:none;justify-content:center;align-items:center;padding:7px 0 6px;display:flex}.advanced-options-toggle[data-v-e7d03318]:hover{background-color:var(--border-card);color:var(--color-primary)}.toggle-icon[data-v-e7d03318]{margin-left:var(--spacing-base);transition:transform var(--transition-slow) ease;font-size:var(--font-size-sm)}.toggle-icon.is-active[data-v-e7d03318]{transform:rotate(180deg)}.advanced-fields[data-v-e7d03318]{gap:var(--spacing-base);animation:fade-in-e7d03318 var(--transition-slow) ease-in-out;flex-direction:column;display:flex}@keyframes fade-in-e7d03318{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.commit-section[data-v-e7d03318]{flex:1;width:100%;min-width:0}.is-loading[data-v-e7d03318]{animation:2s linear infinite rotating-e7d03318}@keyframes rotating-e7d03318{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.save-btn[data-v-e7d03318]{border-radius:var(--radius-md);min-width:100px;transition:var(--transition-ui-slow);font-weight:500}.save-btn[data-v-e7d03318]:hover{box-shadow:var(--shadow-md);transform:scale(1.02)}.save-btn[data-v-e7d03318]:active{transform:scale(.98)}.save-btn[data-v-e7d03318]:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}