zen-gitsync 2.19.3 → 2.19.4

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 (35) hide show
  1. package/package.json +1 -1
  2. package/src/config.js +14 -0
  3. package/src/ui/public/assets/{AgentView-DzYcmZ80.css → AgentView-DAad0_qd.css} +1 -1
  4. package/src/ui/public/assets/{AgentView-DdZB5M3K.js → AgentView-DfARpZyC.js} +2 -2
  5. package/src/ui/public/assets/{AppVersionBadge-Clw0AO_V.js → AppVersionBadge-NdUFOUvY.js} +1 -1
  6. package/src/ui/public/assets/{BranchSelector-WG_dzJ1z.js → BranchSelector-C9OwntcN.js} +1 -1
  7. package/src/ui/public/assets/{CommitForm-Bai-xBwV.js → CommitForm-BrVzZBex.js} +1 -1
  8. package/src/ui/public/assets/{EditorView-DYznT1et.js → EditorView-BYyNWD9L.js} +1 -1
  9. package/src/ui/public/assets/{FlowOrchestrationWorkspace-B982yExF.js → FlowOrchestrationWorkspace-CR6SGCav.js} +1 -1
  10. package/src/ui/public/assets/{LogList-BG9RlR5V.js → LogList-9CoA8BE9.js} +1 -1
  11. package/src/ui/public/assets/{MindmapView-CfF3dnO9.js → MindmapView-BhliaJwt.js} +1 -1
  12. package/src/ui/public/assets/{MonitorView-C6NkhaTu.js → MonitorView-DcNrEb7I.js} +1 -1
  13. package/src/ui/public/assets/{ProjectManagerView-DfFtI8I9.js → ProjectManagerView-D6jyqFJI.js} +1 -1
  14. package/src/ui/public/assets/{ProjectStartupButton-PZDHhzaY.js → ProjectStartupButton-Bj99Poi0.js} +1 -1
  15. package/src/ui/public/assets/{RemoteManagerDialog-CGbTl8Nf.js → RemoteManagerDialog-kxRl8-yT.js} +1 -1
  16. package/src/ui/public/assets/{RemoteRepoCard-DIbrkSSq.js → RemoteRepoCard-ByN8bINN.js} +1 -1
  17. package/src/ui/public/assets/{SourceMapView-dmFzB7XF.js → SourceMapView-6gUYKwKF.js} +1 -1
  18. package/src/ui/public/assets/{WorkbenchView-oGjBJIT6.js → WorkbenchView-BwBnMnIK.js} +1 -1
  19. package/src/ui/public/assets/{index-Bz3MwUuu.js → index-D6QfSjkU.js} +3 -3
  20. package/src/ui/public/assets/{taskExecutionExport-0qwbiZRh.js → taskExecutionExport-BmT0ExK3.js} +1 -1
  21. package/src/ui/public/assets/{useWorkbenchProjects-flU0ll2K.js → useWorkbenchProjects-CezbGd4B.js} +1 -1
  22. package/src/ui/public/index.html +1 -1
  23. package/src/ui/server/routes/codeAnalysis.js +4 -2
  24. package/src/ui/server/routes/config.js +3 -1
  25. package/src/ui/server/routes/git/aiDiffSummary.js +3 -1
  26. package/src/ui/server/routes/projectStartupAi.js +3 -1
  27. package/src/ui/server/routes/projectStartupAi.test.js +7 -4
  28. package/src/ui/server/routes/recentDirectoriesAiSummary.js +3 -1
  29. package/src/ui/server/routes/recentDirectoriesAiSummary.test.js +4 -2
  30. package/src/ui/server/routes/workbench/agentRoutes.js +6 -1
  31. package/src/ui/server/routes/workbench/agentRoutes.test.js +57 -0
  32. package/src/ui/server/routes/workbench/dispatchInstruction.js +4 -2
  33. package/src/ui/server/routes/workbench/imageDescribe.js +4 -2
  34. package/src/ui/server/routes/workbench/index.js +3 -1
  35. package/src/ui/server/routes/workbench/scheduler.js +3 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zen-gitsync",
3
- "version": "2.19.3",
3
+ "version": "2.19.4",
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",
package/src/config.js CHANGED
@@ -777,6 +777,14 @@ function isJsonParseError(err) {
777
777
  * 为什么需要 modelsSeeded 这个标记:没有它就只能二选一 —— 要么新装的人没模型可用,
778
778
  * 要么删光后重启又长出来(永远删不掉)。标记由**写入口**打(见 saveConfig 与
779
779
  * routes/config.js 的 save-models:收到空数组时写一笔),读路径保持无副作用。
780
+ *
781
+ * ⚠️ **凡是运行期要拿模型发请求的地方,都必须走它,别直接读 `raw.models`。**
782
+ * 内置默认模型只活在 defaultConfig 里,从不落盘(磁盘上的 config.json 根本没有
783
+ * models 这个键);直读 raw 的代码看到的是 undefined → 一条候选链都没有 →
784
+ * "未配置 AI 模型"。而设置页读的是 loadConfig() 的结果(已经过 resolveModels),
785
+ * 于是界面明明显示着 agnes-3.0-flash、发出去却被服务端拒绝。
786
+ * 2026-11-02 用户报的"发消息什么都没了"就是这条:agentChat / 代码分析 / 差异总结
787
+ * 等 10 处直读 raw,全新安装下全部报未配置模型。
780
788
  */
781
789
  function resolveModels(raw) {
782
790
  const list = Array.isArray(raw?.models) ? raw.models : null;
@@ -1168,6 +1176,9 @@ export default {
1168
1176
  // 显式删除某个项目的全部分文件。写路径刻意不做删除(防"只加载了一个项目就写回"
1169
1177
  // 连带清空其它项目),清理失效项目只能走这里。
1170
1178
  deleteProjectConfig: deleteProjectConfigAndInvalidate,
1179
+ // 运行期取模型的唯一入口:内置默认模型不落盘,直读 raw.models 会拿到 undefined
1180
+ // (见 resolveModels 的注释)。GUI 设置页 / 各 AI 路由都必须用它。
1181
+ resolveModels,
1171
1182
  // AI 智能体单轮工具调用上限的规范化/区间(GUI 保存前也要用,见 /api/config/save-ai-settings)
1172
1183
  normalizeAiMaxToolIterations,
1173
1184
  // 请求上下文预算的规范化/区间(同一路由保存时用;公式本体在 cli/ai/context.js)
@@ -1212,4 +1223,7 @@ export {
1212
1223
  AI_MAX_TOOL_ITERATIONS_MAX,
1213
1224
  // 内置的免费默认模型(新装开箱可用)——测试与将来的"恢复默认"入口共用
1214
1225
  builtinModels,
1226
+ // 运行期取模型:raw 配置 → 实际该用的模型列表(含内置默认兜底)。
1227
+ // 命名导出给路由层直接 import(它们只拿得到 readRawConfigFile 的原始对象)。
1228
+ resolveModels,
1215
1229
  };
@@ -1 +1 @@
1
- .marketplace-panel[data-v-e2ba3323]{background:var(--bg-container);flex-direction:column;height:100%;min-height:0;display:flex}.mp-hero[data-v-e2ba3323]{flex-shrink:0;justify-content:space-between;align-items:flex-end;gap:12px;padding:16px 16px 12px;display:flex}.mp-hero-text[data-v-e2ba3323]{min-width:0}.mp-hero-title[data-v-e2ba3323]{font-size:var(--font-size-md);color:var(--text-primary);margin:0;font-weight:600}.mp-hero-sub[data-v-e2ba3323]{font-size:var(--font-size-sm);color:var(--text-meta);white-space:nowrap;text-overflow:ellipsis;margin:2px 0 0;overflow:hidden}.mp-hero-count[data-v-e2ba3323]{min-width:20px;height:18px;font-size:var(--font-size-xs);border-radius:var(--radius-lg);background:var(--bg-hover);color:var(--text-meta);flex-shrink:0;justify-content:center;align-items:center;padding:0 8px;display:inline-flex}.mp-toolbar[data-v-e2ba3323]{flex-shrink:0;align-items:center;gap:12px;padding:12px 16px 8px;display:flex}.mp-search[data-v-e2ba3323]{border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-panel);max-width:420px;height:32px;transition:border-color var(--transition-fast) ease;flex:1;align-items:center;gap:6px;padding:0 10px;display:flex}.mp-search[data-v-e2ba3323]:focus-within{border-color:var(--color-primary)}.mp-search .mp-search-icon[data-v-e2ba3323]{color:var(--text-meta);flex-shrink:0}.mp-search .mp-search-input[data-v-e2ba3323]{color:var(--text-primary);font-size:var(--font-size-mid);background:0 0;border:none;outline:none;flex:1;font-family:inherit}.mp-search .mp-search-input[data-v-e2ba3323]::placeholder{color:var(--text-meta)}.mp-target[data-v-e2ba3323]{flex-shrink:0}.mp-refresh[data-v-e2ba3323]{border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-panel);width:30px;height:30px;color:var(--text-secondary);cursor:pointer;transition:var(--transition-ui-fast);justify-content:center;align-items:center;display:flex}.mp-refresh[data-v-e2ba3323]:hover{color:var(--color-primary);border-color:var(--color-primary)}.mp-refresh.spinning svg[data-v-e2ba3323]{animation:.9s linear infinite mkt-spin-e2ba3323}@keyframes mkt-spin-e2ba3323{to{transform:rotate(360deg)}}.mp-toolbar-sub[data-v-e2ba3323]{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:12px;padding:0 16px 10px;display:flex}.mp-target-hint[data-v-e2ba3323]{font-size:var(--font-size-sm);color:var(--text-meta)}.mp-target-hint b[data-v-e2ba3323]{color:var(--color-primary);font-weight:600}.mp-source-filter[data-v-e2ba3323]{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.mp-chip[data-v-e2ba3323]{font-size:var(--font-size-sm);border:1px solid var(--border-color);border-radius:var(--radius-xl);color:var(--text-meta);cursor:pointer;transition:var(--transition-ui-fast);background:0 0;padding:2px 10px;font-family:inherit}.mp-chip[data-v-e2ba3323]:hover{color:var(--text-secondary);border-color:var(--text-tertiary)}.mp-chip.active[data-v-e2ba3323]{color:var(--color-primary);border-color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 8%, transparent)}.mp-chip.clear[data-v-e2ba3323]{color:var(--text-meta);border-style:dashed}.mp-body[data-v-e2ba3323]{flex:1;min-height:0;padding:0 16px 20px;overflow-y:auto}.mp-group[data-v-e2ba3323]{margin-bottom:20px}.mp-group.installed[data-v-e2ba3323]{border-top:1px dashed var(--border-color);padding-top:14px}.mp-group-header[data-v-e2ba3323]{align-items:center;gap:8px;margin-bottom:10px;display:flex}.mp-group-title[data-v-e2ba3323]{font-size:var(--font-size-mid);color:var(--text-primary);margin:0;font-weight:600}.mp-group-count[data-v-e2ba3323]{min-width:20px;height:18px;font-size:var(--font-size-xs);border-radius:var(--radius-lg);background:var(--bg-hover);color:var(--text-meta);justify-content:center;align-items:center;padding:0 6px;display:inline-flex}.mp-group-error[data-v-e2ba3323]{font-size:var(--font-size-sm);color:var(--color-warning-dark);align-items:center;gap:4px;display:inline-flex}.mp-group-link[data-v-e2ba3323]{color:var(--text-meta);transition:color var(--transition-fast) ease;display:inline-flex}.mp-group-link[data-v-e2ba3323]:hover{color:var(--color-primary)}.mp-grid[data-v-e2ba3323]{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px;display:grid}.mp-card[data-v-e2ba3323]{transition:background var(--transition-fast) ease;gap:10px;padding:12px;display:flex}.mp-card[data-v-e2ba3323]:hover{background:var(--bg-hover)}.mp-card-icon[data-v-e2ba3323]{border-radius:var(--radius-lg);flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:flex;overflow:hidden}.mp-card-icon img[data-v-e2ba3323]{object-fit:contain;width:100%;height:100%;display:block}.mp-card-icon.tile[data-v-e2ba3323]{background:hsl(var(--tile-hue,220), 62%, 95%)}.mp-card-icon.tile span[data-v-e2ba3323]{font-size:var(--font-size-mid);color:hsl(var(--tile-hue,220), 45%, 38%);font-weight:600}[data-theme=dark] .mp-card-icon.tile[data-v-e2ba3323]{background:hsl(var(--tile-hue,220), 35%, 22%)}[data-theme=dark] .mp-card-icon.tile span[data-v-e2ba3323]{color:hsl(var(--tile-hue,220), 55%, 75%)}.mp-card-main[data-v-e2ba3323]{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.mp-verified[data-v-e2ba3323]{color:var(--color-success-dark);flex-shrink:0;font-size:12px}.mp-card-head[data-v-e2ba3323]{align-items:center;gap:8px;display:flex}.mp-card-name[data-v-e2ba3323]{min-width:0;font-size:var(--font-size-mid);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;flex:1;font-weight:600;overflow:hidden}.mp-card-metric[data-v-e2ba3323]{font-size:var(--font-size-xs);color:var(--text-meta);flex-shrink:0;align-items:center;gap:3px;display:inline-flex}.mp-card-desc[data-v-e2ba3323]{font-size:var(--font-size-sm);color:var(--text-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:36px;margin:0;line-height:1.5;display:-webkit-box;overflow:hidden}.mp-card-meta[data-v-e2ba3323]{flex-wrap:wrap;align-items:center;gap:6px;min-height:18px;display:flex}.mp-meta-pkg[data-v-e2ba3323],.mp-meta-repo[data-v-e2ba3323]{font-size:var(--font-size-xs);color:var(--text-meta);white-space:nowrap;text-overflow:ellipsis;max-width:220px;overflow:hidden}.mp-tag[data-v-e2ba3323]{font-size:var(--font-size-xs);border-radius:var(--radius-lg);background:var(--bg-hover);color:var(--text-meta);flex-shrink:0;padding:1px 6px}.mp-tag.remote[data-v-e2ba3323]{background:color-mix(in srgb, var(--color-info,var(--action-teal)) 14%, transparent);color:var(--color-info,var(--action-teal))}.mp-tag.warn[data-v-e2ba3323]{background:color-mix(in srgb, var(--color-warning) 14%, transparent);color:var(--color-warning-dark)}.mp-card-foot[data-v-e2ba3323]{align-items:center;gap:8px;margin-top:auto;padding-top:2px;display:flex}.mp-card-link[data-v-e2ba3323]{font-size:var(--font-size-xs);color:var(--text-meta);text-decoration:none}.mp-card-link[data-v-e2ba3323]:hover{color:var(--color-primary);text-decoration:underline}.mp-foot-spacer[data-v-e2ba3323]{flex:1}.mp-install-btn[data-v-e2ba3323]{font-size:var(--font-size-sm);border:1px solid var(--color-primary);border-radius:var(--radius-base);color:var(--color-primary);cursor:pointer;transition:var(--transition-ui-fast);background:0 0;padding:4px 14px;font-family:inherit}.mp-install-btn[data-v-e2ba3323]:hover:not(:disabled){background:var(--color-primary);color:#fff}.mp-install-btn[data-v-e2ba3323]:disabled{opacity:var(--disabled-opacity);cursor:not-allowed}.mp-installed-chip[data-v-e2ba3323]{font-size:var(--font-size-xs);color:var(--color-success-dark);align-items:center;gap:3px;display:inline-flex}.mp-not-installable[data-v-e2ba3323]{font-size:var(--font-size-xs);color:var(--text-meta)}.mp-empty[data-v-e2ba3323]{font-size:var(--font-size-sm);color:var(--text-meta);padding:16px 0}.mp-empty.all[data-v-e2ba3323]{text-align:center;padding:48px 0}.mp-installed-block[data-v-e2ba3323]{margin-bottom:12px}.mp-installed-target[data-v-e2ba3323]{font-size:var(--font-size-xs);color:var(--text-meta);text-transform:uppercase;letter-spacing:.4px;margin-bottom:6px;font-weight:600}.mp-installed-list[data-v-e2ba3323]{flex-direction:column;gap:4px;display:flex}.mp-installed-row[data-v-e2ba3323]{transition:background var(--transition-fast) ease;align-items:center;gap:10px;padding:6px 10px;display:flex}.mp-installed-row[data-v-e2ba3323]:hover{background:var(--bg-hover)}.mp-installed-name[data-v-e2ba3323]{font-size:var(--font-size-sm);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-weight:500;overflow:hidden}.mp-installed-id[data-v-e2ba3323]{font-size:var(--font-size-xs);font-family:var(--font-mono);color:var(--text-meta);white-space:nowrap;text-overflow:ellipsis;max-width:40%;overflow:hidden}.mp-reveal-btn[data-v-e2ba3323],.mp-remove-btn[data-v-e2ba3323]{font-size:var(--font-size-xs);border:1px solid var(--border-color);border-radius:var(--radius-xs);color:var(--text-meta);cursor:pointer;white-space:nowrap;transition:var(--transition-ui-fast);background:0 0;align-items:center;gap:4px;padding:3px 10px;font-family:inherit;display:inline-flex}.mp-reveal-btn[data-v-e2ba3323]:disabled,.mp-remove-btn[data-v-e2ba3323]:disabled{opacity:var(--disabled-opacity);cursor:not-allowed}.mp-reveal-btn[data-v-e2ba3323]:hover:not(:disabled){color:var(--text-primary);border-color:var(--text-tertiary)}.mp-remove-btn[data-v-e2ba3323]:hover:not(:disabled){color:var(--color-danger-dark);border-color:var(--color-danger)}@media (prefers-reduced-motion:reduce){.mp-refresh.spinning svg[data-v-e2ba3323]{animation:none}}.mkt-form[data-v-e2ba3323]{flex-direction:column;gap:12px;display:flex}.mkt-form-name[data-v-e2ba3323]{font-size:var(--font-size-mid);color:var(--text-primary);margin:0;font-weight:600}.mkt-field[data-v-e2ba3323]{flex-direction:column;gap:4px;display:flex}.mkt-field label[data-v-e2ba3323]{font-size:var(--font-size-sm);color:var(--text-secondary);font-weight:600}.mkt-field input[data-v-e2ba3323]{border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-container);height:30px;color:var(--text-primary);font-size:var(--font-size-mid);transition:border-color var(--transition-fast) ease;padding:0 8px;font-family:inherit}.mkt-field input[data-v-e2ba3323]:focus{border-color:var(--color-primary);outline:none}.mkt-hint[data-v-e2ba3323]{font-size:var(--font-size-xs);color:var(--text-meta);margin:0}.mkt-cancel[data-v-e2ba3323],.mkt-confirm[data-v-e2ba3323]{font-size:var(--font-size-mid);border-radius:var(--radius-base);cursor:pointer;transition:var(--transition-ui-fast);padding:6px 16px;font-family:inherit}.mkt-cancel[data-v-e2ba3323]{border:1px solid var(--border-color);color:var(--text-secondary);background:0 0;margin-right:8px}.mkt-cancel[data-v-e2ba3323]:hover{color:var(--text-primary);border-color:var(--text-tertiary)}.mkt-confirm[data-v-e2ba3323]{border:1px solid var(--color-primary);background:var(--color-primary);color:#fff}.mkt-confirm[data-v-e2ba3323]:hover{opacity:.9}.schedule-panel[data-v-75be84e5]{flex-direction:column;flex:1;gap:12px;min-height:0;padding:16px 20px 24px;display:flex;overflow-y:auto}.schedule-toolbar[data-v-75be84e5]{justify-content:space-between;align-items:center;gap:12px;display:flex}.schedule-summary[data-v-75be84e5]{color:var(--text-secondary);font-size:12px}.schedule-error[data-v-75be84e5]{color:var(--text-danger);background:color-mix(in srgb, var(--color-danger) 8%, transparent);border:1px solid color-mix(in srgb, var(--color-danger) 25%, transparent);border-radius:6px;padding:8px 10px;font-size:12px}.schedule-loading[data-v-75be84e5],.schedule-empty[data-v-75be84e5]{color:var(--text-secondary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:40px 20px;font-size:13px;display:flex}.schedule-empty-title[data-v-75be84e5]{color:var(--text-primary);margin:0;font-size:14px;font-weight:500}.schedule-empty-desc[data-v-75be84e5]{text-align:center;max-width:440px;color:var(--text-tertiary);margin:0;font-size:12px;line-height:1.7}.schedule-list[data-v-75be84e5]{flex-direction:column;gap:8px;display:flex}.schedule-card[data-v-75be84e5]{background:var(--bg-card);border:1px solid var(--border-color);border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;transition:border-color .15s,background .15s;display:flex}.schedule-card[data-v-75be84e5]:hover{border-color:var(--border-color-medium)}.schedule-card.is-running[data-v-75be84e5]{border-color:var(--tint-primary-35);background:var(--tint-primary-04)}.schedule-card.is-disabled .schedule-name[data-v-75be84e5]{color:var(--text-secondary)}.schedule-card-body[data-v-75be84e5]{flex-direction:column;gap:4px;min-width:0;display:flex}.schedule-card-head[data-v-75be84e5]{align-items:center;gap:8px;min-width:0;display:flex}.schedule-name[data-v-75be84e5]{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;overflow:hidden}.schedule-running[data-v-75be84e5]{color:var(--color-primary);background:var(--tint-primary-10);white-space:nowrap;border-radius:4px;padding:1px 6px;font-size:11px}.schedule-card-sub[data-v-75be84e5]{color:var(--text-secondary);white-space:nowrap;align-items:center;gap:6px;min-width:0;font-size:12px;display:flex;overflow:hidden}.schedule-desc[data-v-75be84e5]{text-overflow:ellipsis;overflow:hidden}.schedule-sep[data-v-75be84e5]{color:var(--text-tertiary)}.schedule-last[data-v-75be84e5]{text-overflow:ellipsis;overflow:hidden}.schedule-last.is-ok[data-v-75be84e5]{color:var(--text-success)}.schedule-last.is-error[data-v-75be84e5]{color:var(--text-danger)}.schedule-last.is-skipped[data-v-75be84e5]{color:var(--text-warning)}.schedule-last.is-muted[data-v-75be84e5]{color:var(--text-tertiary)}.sch-link[data-v-75be84e5]{color:var(--color-primary);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px}.sch-link[data-v-75be84e5]:hover{text-decoration:underline}.schedule-card-side[data-v-75be84e5]{flex-shrink:0;align-items:center;gap:12px;display:flex}.schedule-next[data-v-75be84e5]{color:var(--text-secondary);white-space:nowrap;font-size:12px}.schedule-next.is-muted[data-v-75be84e5]{color:var(--text-tertiary)}.schedule-actions[data-v-75be84e5]{align-items:center;gap:2px;display:flex}.sch-switch[data-v-75be84e5]{border:1px solid var(--border-color-medium);background:var(--bg-subtle);cursor:pointer;border-radius:10px;flex-shrink:0;width:34px;height:20px;padding:0;transition:background .15s,border-color .15s;position:relative}.sch-switch .sch-switch-knob[data-v-75be84e5]{background:var(--text-tertiary);border-radius:50%;width:14px;height:14px;transition:transform .15s,background .15s;position:absolute;top:2px;left:2px}.sch-switch.on[data-v-75be84e5]{background:var(--tint-primary-18);border-color:var(--tint-primary-45)}.sch-switch.on .sch-switch-knob[data-v-75be84e5]{background:var(--color-primary);transform:translate(14px)}.sch-btn[data-v-75be84e5]{border:1px solid var(--border-color);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:6px;padding:3px 10px;font-size:12px;transition:background .15s,color .15s,border-color .15s}.sch-btn[data-v-75be84e5]:hover:not(:disabled){background:var(--bg-subtle-hover);color:var(--text-primary);border-color:var(--border-color-medium)}.sch-btn[data-v-75be84e5]:disabled{opacity:.5;cursor:default}.sch-btn-primary[data-v-75be84e5]{background:var(--tint-primary-10);border-color:var(--tint-primary-35);color:var(--color-primary)}.sch-btn-primary[data-v-75be84e5]:hover:not(:disabled){background:var(--tint-primary-18);color:var(--color-primary);border-color:var(--tint-primary-45)}.sch-btn-danger[data-v-75be84e5]{color:var(--text-danger)}.sch-btn-danger[data-v-75be84e5]:hover:not(:disabled){background:color-mix(in srgb, var(--color-danger) 8%, transparent);color:var(--text-danger);border-color:color-mix(in srgb, var(--color-danger) 30%, transparent)}.sch-form[data-v-75be84e5]{flex-direction:column;gap:14px;display:flex}.sch-field[data-v-75be84e5]{flex-direction:column;gap:6px;display:flex}.sch-field-label[data-v-75be84e5]{color:var(--text-secondary);font-size:12px}.sch-input[data-v-75be84e5]{box-sizing:border-box;width:100%;color:var(--text-primary);background:var(--bg-container);border:1px solid var(--border-color-medium);border-radius:6px;outline:none;padding:6px 10px;font-family:inherit;font-size:13px;transition:border-color .15s}.sch-input[data-v-75be84e5]:focus{border-color:var(--tint-primary-55)}.sch-select[data-v-75be84e5]{cursor:pointer}.sch-select-sm[data-v-75be84e5]{width:auto;min-width:64px}.sch-input-cron[data-v-75be84e5]{font-family:var(--font-mono,monospace)}.sch-textarea[data-v-75be84e5]{resize:vertical;min-height:72px;line-height:1.6}.sch-freq-row[data-v-75be84e5]{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.sch-inline-label[data-v-75be84e5]{color:var(--text-secondary);white-space:nowrap;font-size:12px}.sch-hint[data-v-75be84e5]{color:var(--text-tertiary);font-size:11px}.sch-radio-row[data-v-75be84e5]{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.sch-radio[data-v-75be84e5]{color:var(--text-secondary);cursor:pointer;align-items:center;gap:6px;font-size:12px;display:inline-flex}.sch-radio input[data-v-75be84e5]{accent-color:var(--color-primary);cursor:pointer;margin:0}.sch-form-error[data-v-75be84e5]{color:var(--text-danger);margin:0;font-size:12px}.sch-form-footer[data-v-75be84e5]{justify-content:flex-end;gap:8px;margin-top:14px;display:flex}.sch-confirm-text[data-v-75be84e5]{color:var(--text-primary);margin:0;font-size:13px;line-height:1.7}.aps[data-v-ed669bcb]{background:var(--bg-container);flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.aps__scroll[data-v-ed669bcb]{flex-direction:column;flex:1;gap:14px;max-width:860px;min-height:0;padding:16px 18px 24px;line-height:1.5;display:flex;overflow-y:auto}.aps__head[data-v-ed669bcb]{flex-direction:column;gap:5px;display:flex}.aps__title[data-v-ed669bcb]{font-size:var(--font-size-lg);color:var(--text-primary);margin:0;font-weight:600}.aps__intro[data-v-ed669bcb]{font-size:var(--font-size-sm);color:var(--text-meta);margin:0;line-height:1.6}.aps__card[data-v-ed669bcb]{background:var(--bg-panel);border:1px solid var(--border-color);border-radius:var(--radius-lg);flex-direction:column;gap:9px;padding:14px 16px;display:flex}.aps__card-head[data-v-ed669bcb]{align-items:baseline;gap:8px;display:flex}.aps__card-title[data-v-ed669bcb]{font-size:var(--font-size-mid);color:var(--text-primary);margin:0;font-weight:600}.aps__label[data-v-ed669bcb]{font-size:var(--font-size-sm);color:var(--text-secondary);font-weight:500}.aps__count[data-v-ed669bcb]{font-size:var(--font-size-xs);color:var(--text-meta);font-variant-numeric:tabular-nums;margin-left:auto}.aps__field[data-v-ed669bcb]{flex-direction:column;gap:5px;display:flex}.aps__hint[data-v-ed669bcb]{font-size:var(--font-size-xs);color:var(--text-meta);margin:0;line-height:1.6}.aps__area[data-v-ed669bcb]{box-sizing:border-box;resize:vertical;width:100%;min-height:92px;max-height:320px;font-size:var(--font-size-mid);color:var(--text-primary);background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-md);transition:border-color var(--transition-fast) var(--ease-custom);outline:none;padding:7px 9px;font-family:inherit;line-height:1.5}.aps__area[data-v-ed669bcb]:focus{border-color:var(--color-primary)}.aps__area[data-v-ed669bcb]::placeholder{color:var(--text-meta)}.aps__area[data-v-ed669bcb]:disabled{opacity:var(--disabled-opacity);cursor:not-allowed}.aps__foot[data-v-ed669bcb]{align-items:center;gap:8px;display:flex}.aps__spacer[data-v-ed669bcb]{flex:1}.aps__saved[data-v-ed669bcb]{font-size:var(--font-size-xs);color:var(--text-meta)}.aps__btn[data-v-ed669bcb]{color:var(--text-secondary);font-size:var(--font-size-sm);border-radius:var(--radius-md);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;border:none;padding:0 12px;line-height:28px}.aps__btn[data-v-ed669bcb]:hover:not(:disabled){color:var(--color-primary);background:var(--bg-container-hover)}.aps__btn[data-v-ed669bcb]:disabled{opacity:var(--disabled-opacity);cursor:default}.aps__btn[data-v-ed669bcb]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.aps__btn--primary[data-v-ed669bcb]{background:var(--color-primary);color:#fff}.aps__btn--primary[data-v-ed669bcb]:hover:not(:disabled){background:var(--color-primary);color:#fff;opacity:.88}.dps[data-v-d502a236]{border-top:1px solid var(--border-color);flex-direction:column;gap:14px;margin-top:6px;padding-top:18px;display:flex}.dps__head[data-v-d502a236]{flex-direction:column;gap:4px;display:flex}.dps__title[data-v-d502a236]{color:var(--text-primary);margin:0;font-size:14px;font-weight:600}.dps__intro[data-v-d502a236],.dps__foot[data-v-d502a236],.dps__empty[data-v-d502a236]{color:var(--text-secondary);margin:0;font-size:12px;line-height:1.6}.dps__row[data-v-d502a236],.dps__item[data-v-d502a236]{transition:background-color var(--transition-fast) var(--ease-custom);border-radius:6px;align-items:center;gap:10px;padding:8px 10px;display:flex}.dps__row[data-v-d502a236]:hover,.dps__item[data-v-d502a236]:hover{background:var(--bg-hover)}.dps__row-main[data-v-d502a236]{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.dps__row-name[data-v-d502a236]{color:var(--text-primary);font-size:13px}.dps__row-hint[data-v-d502a236]{color:var(--text-secondary);font-size:12px;line-height:1.6}.dps__switch[data-v-d502a236]{flex-shrink:0}.dps__block[data-v-d502a236]{flex-direction:column;gap:6px;display:flex}.dps__block-head[data-v-d502a236]{justify-content:space-between;align-items:baseline;gap:12px;padding:0 10px;display:flex}.dps__target[data-v-d502a236]{color:var(--text-secondary);white-space:nowrap;font-size:12px}.dps__list[data-v-d502a236]{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.dps__order[data-v-d502a236]{width:16px;color:var(--text-secondary);text-align:right;flex-shrink:0;font-size:12px}.dps__icon[data-v-d502a236]{flex-shrink:0;width:16px;height:16px}.dps__name[data-v-d502a236]{color:var(--text-primary);white-space:nowrap;font-size:13px}.dps__model[data-v-d502a236]{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.dps__missing[data-v-d502a236]{color:var(--text-secondary);opacity:.8;flex-shrink:0;font-size:11px}.dps__actions[data-v-d502a236]{flex-shrink:0;align-items:center;gap:2px;margin-left:auto;display:flex}.dps__act[data-v-d502a236]{width:22px;height:22px;color:var(--text-secondary);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), background-color var(--transition-fast) var(--ease-custom);background:0 0;border:0;border-radius:4px;justify-content:center;align-items:center;padding:0;display:inline-flex}.dps__act[data-v-d502a236]:hover:not(:disabled){background:var(--bg-active);color:var(--text-primary)}.dps__act--danger[data-v-d502a236]:hover:not(:disabled){color:var(--role-error-ink,var(--color-danger))}.dps__act[data-v-d502a236]:disabled{opacity:.35;cursor:not-allowed}.dps__add[data-v-d502a236]{align-self:flex-start;margin-left:10px}.dps__add-btn[data-v-d502a236]{border:1px dashed var(--border-color);color:var(--text-secondary);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom);background:0 0;border-radius:6px;align-items:center;gap:4px;padding:4px 8px;font-size:12px;display:inline-flex}.dps__add-btn[data-v-d502a236]:hover{color:var(--text-primary);border-color:var(--border-color-strong,var(--border-color))}.dps__add-item[data-v-d502a236]{align-items:center;gap:8px;display:flex}.agent-engine[data-v-adc17599]{vertical-align:middle}.agent-engine__btn[data-v-adc17599]{border:1px solid var(--border-color);border-radius:var(--radius-base);color:var(--text-secondary);font-size:var(--font-size-sm);cursor:pointer;transition:border-color var(--transition-fast) ease, color var(--transition-fast) ease;background:0 0;align-items:center;gap:6px;padding:4px 8px;font-family:inherit;line-height:1.5;display:inline-flex}.agent-engine__btn[data-v-adc17599]:hover:not(:disabled){border-color:var(--color-primary);color:var(--text-primary)}.agent-engine__btn[data-v-adc17599]:disabled{cursor:not-allowed;color:var(--text-meta)}.agent-engine__icon[data-v-adc17599],.agent-engine__item-icon[data-v-adc17599]{flex:none;font-size:14px}.agent-engine__caret[data-v-adc17599]{color:var(--text-meta);font-size:12px}.agent-engine__item[data-v-adc17599]{align-items:center;gap:8px;min-width:148px;display:inline-flex}.agent-engine__item-name[data-v-adc17599]{flex:1}.agent-engine__item-check[data-v-adc17599]{color:var(--color-primary);font-size:13px}.agent-engine__item-missing[data-v-adc17599]{font-size:var(--font-size-sm);color:var(--text-meta)}.csb[data-v-225c8d2f]{flex:none;align-items:center;display:inline-flex}.csb__btn[data-v-225c8d2f]{border-radius:var(--radius-xs);width:22px;height:22px;color:var(--text-meta);cursor:pointer;transition:var(--transition-ui-fast);background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.csb__btn[data-v-225c8d2f]:hover{background:var(--bg-hover);color:var(--text-secondary)}.csb__btn.is-flash[data-v-225c8d2f]{color:var(--color-success)}.csb__caret[data-v-225c8d2f]{width:15px}.chat-silence[data-v-f6811a1b]{font-size:var(--font-size-xs);color:var(--text-meta);white-space:nowrap;font-variant-numeric:tabular-nums;flex:none;align-items:center;gap:5px;line-height:1;display:inline-flex}.chat-silence__dot[data-v-f6811a1b]{background:currentColor;border-radius:50%;width:5px;height:5px}.chat-silence.is-warn[data-v-f6811a1b]{color:var(--color-warning-dark)}.chat-silence.is-warn .chat-silence__dot[data-v-f6811a1b]{animation:chat-silence-pulse-f6811a1b 1.6s var(--ease-custom) infinite}@keyframes chat-silence-pulse-f6811a1b{0%,to{opacity:1}50%{opacity:.25}}@media (prefers-reduced-motion:reduce){.chat-silence.is-warn .chat-silence__dot[data-v-f6811a1b]{animation:none}}.agent-view[data-v-f81d3ecb]{background:var(--bg-container);height:100%;min-height:0;display:flex}.agent-sidebar[data-v-f81d3ecb]{background:var(--bg-panel);border-right:1px solid var(--border-color);transition:width var(--transition-base) var(--ease-custom);flex-direction:column;flex-shrink:0;display:flex;overflow:hidden}.agent-conversations[data-v-f81d3ecb]{flex:1;min-height:0;padding:10px 6px 8px 12px}.agent-sidebar.is-convs-collapsed .agent-conversations[data-v-f81d3ecb]{padding:10px 4px 8px}.sidebar-resizer[data-v-f81d3ecb]{cursor:col-resize;width:4px;transition:background var(--transition-fast) ease;background:0 0;flex-shrink:0}.sidebar-resizer[data-v-f81d3ecb]:hover,.sidebar-resizer.active[data-v-f81d3ecb]{background:var(--color-primary);opacity:.3}.agent-chat-area[data-v-f81d3ecb]{flex-direction:column;flex:1;min-width:0;display:flex;position:relative;overflow:hidden}.agent-engine[data-v-f81d3ecb]{margin-bottom:7px;margin-left:auto}.agent-copy[data-v-f81d3ecb]{margin-bottom:7px;margin-left:2px}.agent-silence[data-v-f81d3ecb]{margin-bottom:7px;margin-left:10px}.agent-tabs[data-v-f81d3ecb]{border-bottom:1px solid var(--border-color);background:var(--bg-panel);flex-shrink:0;align-items:center;gap:4px;padding:8px 12px 0;display:flex}.agent-tab[data-v-f81d3ecb]{color:var(--text-meta);font-size:var(--font-size-mid);cursor:pointer;transition:color var(--transition-fast) ease, border-color var(--transition-fast) ease, background var(--transition-fast) ease;border-radius:var(--radius-base) var(--radius-base) 0 0;background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;gap:6px;padding:7px 14px 9px;font-family:inherit;display:inline-flex}.agent-tab[data-v-f81d3ecb]:hover{color:var(--text-secondary);background:var(--bg-hover)}.agent-tab.active[data-v-f81d3ecb]{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:600}.agent-tab-body[data-v-f81d3ecb]{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.agent-chat-pane[data-v-f81d3ecb]{flex-direction:column;flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.agent-tab-body[data-v-f81d3ecb]>.marketplace-panel{flex:1;min-height:0}.chat-loading[data-v-f81d3ecb]{color:var(--text-meta);font-size:var(--font-size-base);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;display:flex}.agent-list-page[data-v-f81d3ecb]{background:var(--bg-panel);flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.agent-list-page .agent-conversations[data-v-f81d3ecb]{padding:12px 12px 10px 14px}.agent-page-bar[data-v-f81d3ecb]{border-bottom:1px solid var(--border-color);background:var(--bg-panel);flex-shrink:0;align-items:center;gap:6px;height:34px;padding:0 12px 0 6px;display:flex}.agent-page-back[data-v-f81d3ecb]{border-radius:var(--radius-xs);width:24px;height:24px;color:var(--text-meta);cursor:pointer;transition:var(--transition-ui-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.agent-page-back[data-v-f81d3ecb]:hover{background:var(--bg-hover);color:var(--text-secondary)}.agent-page-title[data-v-f81d3ecb]{min-width:0;font-size:var(--font-size-mid);color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.agent-chat-host[data-v-f81d3ecb]{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.agent-chat-host[data-v-f81d3ecb] .acu-avatar--left{background:0 0}.agent-dispatch-foot[data-v-f81d3ecb]{font-size:var(--font-size-xs);color:var(--text-meta);flex-wrap:wrap;flex:none;align-items:center;gap:6px;padding:4px 12px 8px;line-height:1.5;display:flex}.agent-dispatch-label[data-v-f81d3ecb]{color:var(--text-secondary)}.agent-dispatch-notice[data-v-f81d3ecb]{color:var(--text-meta);margin:0}.agent-chat-host[data-v-f81d3ecb] .acu-bubble-row.is-assistant .acu-bubble-main{width:var(--acu-bubble-max-width);max-width:var(--acu-bubble-max-width);position:relative}.agent-chat-host[data-v-f81d3ecb] .acu-bubble-row.is-assistant .acu-bubble{align-self:flex-start}.agent-chat-host[data-v-f81d3ecb] .acu-message-meta{margin:0;position:absolute;top:0;right:0}.agent-chat-host[data-v-f81d3ecb] .acu-input-queue{--acu-queue-edge:var(--role-pending-edge);--acu-queue-surface:var(--role-pending-surface);--acu-queue-ink:var(--role-pending-ink);--acu-queue-wash:var(--role-pending-wash)}.agent-chat-host[data-v-f81d3ecb] .acu-welcome-logo{background:var(--welcome-avatar) center/46px 46px no-repeat;width:56px;height:56px;box-shadow:none}.agent-chat-host[data-v-f81d3ecb] .acu-welcome-logo>svg{display:none}.agent-chat-host[data-v-f81d3ecb] .acu-welcome-grid{flex-wrap:wrap;display:flex}.agent-chat-host[data-v-f81d3ecb] .acu-welcome-grid>.acu-preset-q{flex:260px;min-width:0}[data-theme=dark]{background:var(--bg-panel)}.agent-chat-host[data-v-f81d3ecb] .acu-input-wrap>.agent-context-slot{gap:var(--acu-space-2,8px);padding:var(--acu-space-2,8px) var(--acu-space-2,8px) 0;flex-wrap:wrap;display:flex}.agent-chat-host[data-v-f81d3ecb] .acu-input-attachments>.agent-context-slot{display:inline-flex}.agent-context-att[data-v-f81d3ecb]{align-items:center;gap:var(--acu-space-2,8px);max-width:180px;padding:var(--acu-space-2,8px) var(--acu-space-3,12px);border:1px solid var(--acu-border);border-radius:var(--acu-radius-sm,8px);background:var(--acu-bg,var(--bg-container));color:var(--acu-text-secondary,var(--text-secondary));font-size:var(--acu-font-size-xs,12px);display:inline-flex;position:relative}.agent-context-att-icon[data-v-f81d3ecb]{opacity:.75;flex-shrink:0}.agent-context-att-name[data-v-f81d3ecb]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.agent-context-att-remove[data-v-f81d3ecb]{border-radius:var(--acu-radius-full,999px);background:var(--acu-text,var(--text-primary));width:18px;height:18px;color:var(--acu-bg,var(--bg-container));cursor:pointer;box-shadow:var(--acu-shadow-sm,0 1px 2px #0003);transition:transform var(--acu-duration-fast,.15s) var(--acu-easing,ease);border:none;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute;top:-6px;right:-6px}.agent-context-att-remove[data-v-f81d3ecb]:hover{transform:scale(1.12)}.agent-context-att-remove[data-v-f81d3ecb]:active{transform:scale(1.02)}
1
+ .marketplace-panel[data-v-e2ba3323]{background:var(--bg-container);flex-direction:column;height:100%;min-height:0;display:flex}.mp-hero[data-v-e2ba3323]{flex-shrink:0;justify-content:space-between;align-items:flex-end;gap:12px;padding:16px 16px 12px;display:flex}.mp-hero-text[data-v-e2ba3323]{min-width:0}.mp-hero-title[data-v-e2ba3323]{font-size:var(--font-size-md);color:var(--text-primary);margin:0;font-weight:600}.mp-hero-sub[data-v-e2ba3323]{font-size:var(--font-size-sm);color:var(--text-meta);white-space:nowrap;text-overflow:ellipsis;margin:2px 0 0;overflow:hidden}.mp-hero-count[data-v-e2ba3323]{min-width:20px;height:18px;font-size:var(--font-size-xs);border-radius:var(--radius-lg);background:var(--bg-hover);color:var(--text-meta);flex-shrink:0;justify-content:center;align-items:center;padding:0 8px;display:inline-flex}.mp-toolbar[data-v-e2ba3323]{flex-shrink:0;align-items:center;gap:12px;padding:12px 16px 8px;display:flex}.mp-search[data-v-e2ba3323]{border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-panel);max-width:420px;height:32px;transition:border-color var(--transition-fast) ease;flex:1;align-items:center;gap:6px;padding:0 10px;display:flex}.mp-search[data-v-e2ba3323]:focus-within{border-color:var(--color-primary)}.mp-search .mp-search-icon[data-v-e2ba3323]{color:var(--text-meta);flex-shrink:0}.mp-search .mp-search-input[data-v-e2ba3323]{color:var(--text-primary);font-size:var(--font-size-mid);background:0 0;border:none;outline:none;flex:1;font-family:inherit}.mp-search .mp-search-input[data-v-e2ba3323]::placeholder{color:var(--text-meta)}.mp-target[data-v-e2ba3323]{flex-shrink:0}.mp-refresh[data-v-e2ba3323]{border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-panel);width:30px;height:30px;color:var(--text-secondary);cursor:pointer;transition:var(--transition-ui-fast);justify-content:center;align-items:center;display:flex}.mp-refresh[data-v-e2ba3323]:hover{color:var(--color-primary);border-color:var(--color-primary)}.mp-refresh.spinning svg[data-v-e2ba3323]{animation:.9s linear infinite mkt-spin-e2ba3323}@keyframes mkt-spin-e2ba3323{to{transform:rotate(360deg)}}.mp-toolbar-sub[data-v-e2ba3323]{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:12px;padding:0 16px 10px;display:flex}.mp-target-hint[data-v-e2ba3323]{font-size:var(--font-size-sm);color:var(--text-meta)}.mp-target-hint b[data-v-e2ba3323]{color:var(--color-primary);font-weight:600}.mp-source-filter[data-v-e2ba3323]{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.mp-chip[data-v-e2ba3323]{font-size:var(--font-size-sm);border:1px solid var(--border-color);border-radius:var(--radius-xl);color:var(--text-meta);cursor:pointer;transition:var(--transition-ui-fast);background:0 0;padding:2px 10px;font-family:inherit}.mp-chip[data-v-e2ba3323]:hover{color:var(--text-secondary);border-color:var(--text-tertiary)}.mp-chip.active[data-v-e2ba3323]{color:var(--color-primary);border-color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 8%, transparent)}.mp-chip.clear[data-v-e2ba3323]{color:var(--text-meta);border-style:dashed}.mp-body[data-v-e2ba3323]{flex:1;min-height:0;padding:0 16px 20px;overflow-y:auto}.mp-group[data-v-e2ba3323]{margin-bottom:20px}.mp-group.installed[data-v-e2ba3323]{border-top:1px dashed var(--border-color);padding-top:14px}.mp-group-header[data-v-e2ba3323]{align-items:center;gap:8px;margin-bottom:10px;display:flex}.mp-group-title[data-v-e2ba3323]{font-size:var(--font-size-mid);color:var(--text-primary);margin:0;font-weight:600}.mp-group-count[data-v-e2ba3323]{min-width:20px;height:18px;font-size:var(--font-size-xs);border-radius:var(--radius-lg);background:var(--bg-hover);color:var(--text-meta);justify-content:center;align-items:center;padding:0 6px;display:inline-flex}.mp-group-error[data-v-e2ba3323]{font-size:var(--font-size-sm);color:var(--color-warning-dark);align-items:center;gap:4px;display:inline-flex}.mp-group-link[data-v-e2ba3323]{color:var(--text-meta);transition:color var(--transition-fast) ease;display:inline-flex}.mp-group-link[data-v-e2ba3323]:hover{color:var(--color-primary)}.mp-grid[data-v-e2ba3323]{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px;display:grid}.mp-card[data-v-e2ba3323]{transition:background var(--transition-fast) ease;gap:10px;padding:12px;display:flex}.mp-card[data-v-e2ba3323]:hover{background:var(--bg-hover)}.mp-card-icon[data-v-e2ba3323]{border-radius:var(--radius-lg);flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:flex;overflow:hidden}.mp-card-icon img[data-v-e2ba3323]{object-fit:contain;width:100%;height:100%;display:block}.mp-card-icon.tile[data-v-e2ba3323]{background:hsl(var(--tile-hue,220), 62%, 95%)}.mp-card-icon.tile span[data-v-e2ba3323]{font-size:var(--font-size-mid);color:hsl(var(--tile-hue,220), 45%, 38%);font-weight:600}[data-theme=dark] .mp-card-icon.tile[data-v-e2ba3323]{background:hsl(var(--tile-hue,220), 35%, 22%)}[data-theme=dark] .mp-card-icon.tile span[data-v-e2ba3323]{color:hsl(var(--tile-hue,220), 55%, 75%)}.mp-card-main[data-v-e2ba3323]{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.mp-verified[data-v-e2ba3323]{color:var(--color-success-dark);flex-shrink:0;font-size:12px}.mp-card-head[data-v-e2ba3323]{align-items:center;gap:8px;display:flex}.mp-card-name[data-v-e2ba3323]{min-width:0;font-size:var(--font-size-mid);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;flex:1;font-weight:600;overflow:hidden}.mp-card-metric[data-v-e2ba3323]{font-size:var(--font-size-xs);color:var(--text-meta);flex-shrink:0;align-items:center;gap:3px;display:inline-flex}.mp-card-desc[data-v-e2ba3323]{font-size:var(--font-size-sm);color:var(--text-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:36px;margin:0;line-height:1.5;display:-webkit-box;overflow:hidden}.mp-card-meta[data-v-e2ba3323]{flex-wrap:wrap;align-items:center;gap:6px;min-height:18px;display:flex}.mp-meta-pkg[data-v-e2ba3323],.mp-meta-repo[data-v-e2ba3323]{font-size:var(--font-size-xs);color:var(--text-meta);white-space:nowrap;text-overflow:ellipsis;max-width:220px;overflow:hidden}.mp-tag[data-v-e2ba3323]{font-size:var(--font-size-xs);border-radius:var(--radius-lg);background:var(--bg-hover);color:var(--text-meta);flex-shrink:0;padding:1px 6px}.mp-tag.remote[data-v-e2ba3323]{background:color-mix(in srgb, var(--color-info,var(--action-teal)) 14%, transparent);color:var(--color-info,var(--action-teal))}.mp-tag.warn[data-v-e2ba3323]{background:color-mix(in srgb, var(--color-warning) 14%, transparent);color:var(--color-warning-dark)}.mp-card-foot[data-v-e2ba3323]{align-items:center;gap:8px;margin-top:auto;padding-top:2px;display:flex}.mp-card-link[data-v-e2ba3323]{font-size:var(--font-size-xs);color:var(--text-meta);text-decoration:none}.mp-card-link[data-v-e2ba3323]:hover{color:var(--color-primary);text-decoration:underline}.mp-foot-spacer[data-v-e2ba3323]{flex:1}.mp-install-btn[data-v-e2ba3323]{font-size:var(--font-size-sm);border:1px solid var(--color-primary);border-radius:var(--radius-base);color:var(--color-primary);cursor:pointer;transition:var(--transition-ui-fast);background:0 0;padding:4px 14px;font-family:inherit}.mp-install-btn[data-v-e2ba3323]:hover:not(:disabled){background:var(--color-primary);color:#fff}.mp-install-btn[data-v-e2ba3323]:disabled{opacity:var(--disabled-opacity);cursor:not-allowed}.mp-installed-chip[data-v-e2ba3323]{font-size:var(--font-size-xs);color:var(--color-success-dark);align-items:center;gap:3px;display:inline-flex}.mp-not-installable[data-v-e2ba3323]{font-size:var(--font-size-xs);color:var(--text-meta)}.mp-empty[data-v-e2ba3323]{font-size:var(--font-size-sm);color:var(--text-meta);padding:16px 0}.mp-empty.all[data-v-e2ba3323]{text-align:center;padding:48px 0}.mp-installed-block[data-v-e2ba3323]{margin-bottom:12px}.mp-installed-target[data-v-e2ba3323]{font-size:var(--font-size-xs);color:var(--text-meta);text-transform:uppercase;letter-spacing:.4px;margin-bottom:6px;font-weight:600}.mp-installed-list[data-v-e2ba3323]{flex-direction:column;gap:4px;display:flex}.mp-installed-row[data-v-e2ba3323]{transition:background var(--transition-fast) ease;align-items:center;gap:10px;padding:6px 10px;display:flex}.mp-installed-row[data-v-e2ba3323]:hover{background:var(--bg-hover)}.mp-installed-name[data-v-e2ba3323]{font-size:var(--font-size-sm);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-weight:500;overflow:hidden}.mp-installed-id[data-v-e2ba3323]{font-size:var(--font-size-xs);font-family:var(--font-mono);color:var(--text-meta);white-space:nowrap;text-overflow:ellipsis;max-width:40%;overflow:hidden}.mp-reveal-btn[data-v-e2ba3323],.mp-remove-btn[data-v-e2ba3323]{font-size:var(--font-size-xs);border:1px solid var(--border-color);border-radius:var(--radius-xs);color:var(--text-meta);cursor:pointer;white-space:nowrap;transition:var(--transition-ui-fast);background:0 0;align-items:center;gap:4px;padding:3px 10px;font-family:inherit;display:inline-flex}.mp-reveal-btn[data-v-e2ba3323]:disabled,.mp-remove-btn[data-v-e2ba3323]:disabled{opacity:var(--disabled-opacity);cursor:not-allowed}.mp-reveal-btn[data-v-e2ba3323]:hover:not(:disabled){color:var(--text-primary);border-color:var(--text-tertiary)}.mp-remove-btn[data-v-e2ba3323]:hover:not(:disabled){color:var(--color-danger-dark);border-color:var(--color-danger)}@media (prefers-reduced-motion:reduce){.mp-refresh.spinning svg[data-v-e2ba3323]{animation:none}}.mkt-form[data-v-e2ba3323]{flex-direction:column;gap:12px;display:flex}.mkt-form-name[data-v-e2ba3323]{font-size:var(--font-size-mid);color:var(--text-primary);margin:0;font-weight:600}.mkt-field[data-v-e2ba3323]{flex-direction:column;gap:4px;display:flex}.mkt-field label[data-v-e2ba3323]{font-size:var(--font-size-sm);color:var(--text-secondary);font-weight:600}.mkt-field input[data-v-e2ba3323]{border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-container);height:30px;color:var(--text-primary);font-size:var(--font-size-mid);transition:border-color var(--transition-fast) ease;padding:0 8px;font-family:inherit}.mkt-field input[data-v-e2ba3323]:focus{border-color:var(--color-primary);outline:none}.mkt-hint[data-v-e2ba3323]{font-size:var(--font-size-xs);color:var(--text-meta);margin:0}.mkt-cancel[data-v-e2ba3323],.mkt-confirm[data-v-e2ba3323]{font-size:var(--font-size-mid);border-radius:var(--radius-base);cursor:pointer;transition:var(--transition-ui-fast);padding:6px 16px;font-family:inherit}.mkt-cancel[data-v-e2ba3323]{border:1px solid var(--border-color);color:var(--text-secondary);background:0 0;margin-right:8px}.mkt-cancel[data-v-e2ba3323]:hover{color:var(--text-primary);border-color:var(--text-tertiary)}.mkt-confirm[data-v-e2ba3323]{border:1px solid var(--color-primary);background:var(--color-primary);color:#fff}.mkt-confirm[data-v-e2ba3323]:hover{opacity:.9}.schedule-panel[data-v-75be84e5]{flex-direction:column;flex:1;gap:12px;min-height:0;padding:16px 20px 24px;display:flex;overflow-y:auto}.schedule-toolbar[data-v-75be84e5]{justify-content:space-between;align-items:center;gap:12px;display:flex}.schedule-summary[data-v-75be84e5]{color:var(--text-secondary);font-size:12px}.schedule-error[data-v-75be84e5]{color:var(--text-danger);background:color-mix(in srgb, var(--color-danger) 8%, transparent);border:1px solid color-mix(in srgb, var(--color-danger) 25%, transparent);border-radius:6px;padding:8px 10px;font-size:12px}.schedule-loading[data-v-75be84e5],.schedule-empty[data-v-75be84e5]{color:var(--text-secondary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:40px 20px;font-size:13px;display:flex}.schedule-empty-title[data-v-75be84e5]{color:var(--text-primary);margin:0;font-size:14px;font-weight:500}.schedule-empty-desc[data-v-75be84e5]{text-align:center;max-width:440px;color:var(--text-tertiary);margin:0;font-size:12px;line-height:1.7}.schedule-list[data-v-75be84e5]{flex-direction:column;gap:8px;display:flex}.schedule-card[data-v-75be84e5]{background:var(--bg-card);border:1px solid var(--border-color);border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;transition:border-color .15s,background .15s;display:flex}.schedule-card[data-v-75be84e5]:hover{border-color:var(--border-color-medium)}.schedule-card.is-running[data-v-75be84e5]{border-color:var(--tint-primary-35);background:var(--tint-primary-04)}.schedule-card.is-disabled .schedule-name[data-v-75be84e5]{color:var(--text-secondary)}.schedule-card-body[data-v-75be84e5]{flex-direction:column;gap:4px;min-width:0;display:flex}.schedule-card-head[data-v-75be84e5]{align-items:center;gap:8px;min-width:0;display:flex}.schedule-name[data-v-75be84e5]{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;overflow:hidden}.schedule-running[data-v-75be84e5]{color:var(--color-primary);background:var(--tint-primary-10);white-space:nowrap;border-radius:4px;padding:1px 6px;font-size:11px}.schedule-card-sub[data-v-75be84e5]{color:var(--text-secondary);white-space:nowrap;align-items:center;gap:6px;min-width:0;font-size:12px;display:flex;overflow:hidden}.schedule-desc[data-v-75be84e5]{text-overflow:ellipsis;overflow:hidden}.schedule-sep[data-v-75be84e5]{color:var(--text-tertiary)}.schedule-last[data-v-75be84e5]{text-overflow:ellipsis;overflow:hidden}.schedule-last.is-ok[data-v-75be84e5]{color:var(--text-success)}.schedule-last.is-error[data-v-75be84e5]{color:var(--text-danger)}.schedule-last.is-skipped[data-v-75be84e5]{color:var(--text-warning)}.schedule-last.is-muted[data-v-75be84e5]{color:var(--text-tertiary)}.sch-link[data-v-75be84e5]{color:var(--color-primary);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px}.sch-link[data-v-75be84e5]:hover{text-decoration:underline}.schedule-card-side[data-v-75be84e5]{flex-shrink:0;align-items:center;gap:12px;display:flex}.schedule-next[data-v-75be84e5]{color:var(--text-secondary);white-space:nowrap;font-size:12px}.schedule-next.is-muted[data-v-75be84e5]{color:var(--text-tertiary)}.schedule-actions[data-v-75be84e5]{align-items:center;gap:2px;display:flex}.sch-switch[data-v-75be84e5]{border:1px solid var(--border-color-medium);background:var(--bg-subtle);cursor:pointer;border-radius:10px;flex-shrink:0;width:34px;height:20px;padding:0;transition:background .15s,border-color .15s;position:relative}.sch-switch .sch-switch-knob[data-v-75be84e5]{background:var(--text-tertiary);border-radius:50%;width:14px;height:14px;transition:transform .15s,background .15s;position:absolute;top:2px;left:2px}.sch-switch.on[data-v-75be84e5]{background:var(--tint-primary-18);border-color:var(--tint-primary-45)}.sch-switch.on .sch-switch-knob[data-v-75be84e5]{background:var(--color-primary);transform:translate(14px)}.sch-btn[data-v-75be84e5]{border:1px solid var(--border-color);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:6px;padding:3px 10px;font-size:12px;transition:background .15s,color .15s,border-color .15s}.sch-btn[data-v-75be84e5]:hover:not(:disabled){background:var(--bg-subtle-hover);color:var(--text-primary);border-color:var(--border-color-medium)}.sch-btn[data-v-75be84e5]:disabled{opacity:.5;cursor:default}.sch-btn-primary[data-v-75be84e5]{background:var(--tint-primary-10);border-color:var(--tint-primary-35);color:var(--color-primary)}.sch-btn-primary[data-v-75be84e5]:hover:not(:disabled){background:var(--tint-primary-18);color:var(--color-primary);border-color:var(--tint-primary-45)}.sch-btn-danger[data-v-75be84e5]{color:var(--text-danger)}.sch-btn-danger[data-v-75be84e5]:hover:not(:disabled){background:color-mix(in srgb, var(--color-danger) 8%, transparent);color:var(--text-danger);border-color:color-mix(in srgb, var(--color-danger) 30%, transparent)}.sch-form[data-v-75be84e5]{flex-direction:column;gap:14px;display:flex}.sch-field[data-v-75be84e5]{flex-direction:column;gap:6px;display:flex}.sch-field-label[data-v-75be84e5]{color:var(--text-secondary);font-size:12px}.sch-input[data-v-75be84e5]{box-sizing:border-box;width:100%;color:var(--text-primary);background:var(--bg-container);border:1px solid var(--border-color-medium);border-radius:6px;outline:none;padding:6px 10px;font-family:inherit;font-size:13px;transition:border-color .15s}.sch-input[data-v-75be84e5]:focus{border-color:var(--tint-primary-55)}.sch-select[data-v-75be84e5]{cursor:pointer}.sch-select-sm[data-v-75be84e5]{width:auto;min-width:64px}.sch-input-cron[data-v-75be84e5]{font-family:var(--font-mono,monospace)}.sch-textarea[data-v-75be84e5]{resize:vertical;min-height:72px;line-height:1.6}.sch-freq-row[data-v-75be84e5]{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.sch-inline-label[data-v-75be84e5]{color:var(--text-secondary);white-space:nowrap;font-size:12px}.sch-hint[data-v-75be84e5]{color:var(--text-tertiary);font-size:11px}.sch-radio-row[data-v-75be84e5]{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.sch-radio[data-v-75be84e5]{color:var(--text-secondary);cursor:pointer;align-items:center;gap:6px;font-size:12px;display:inline-flex}.sch-radio input[data-v-75be84e5]{accent-color:var(--color-primary);cursor:pointer;margin:0}.sch-form-error[data-v-75be84e5]{color:var(--text-danger);margin:0;font-size:12px}.sch-form-footer[data-v-75be84e5]{justify-content:flex-end;gap:8px;margin-top:14px;display:flex}.sch-confirm-text[data-v-75be84e5]{color:var(--text-primary);margin:0;font-size:13px;line-height:1.7}.aps[data-v-ed669bcb]{background:var(--bg-container);flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.aps__scroll[data-v-ed669bcb]{flex-direction:column;flex:1;gap:14px;max-width:860px;min-height:0;padding:16px 18px 24px;line-height:1.5;display:flex;overflow-y:auto}.aps__head[data-v-ed669bcb]{flex-direction:column;gap:5px;display:flex}.aps__title[data-v-ed669bcb]{font-size:var(--font-size-lg);color:var(--text-primary);margin:0;font-weight:600}.aps__intro[data-v-ed669bcb]{font-size:var(--font-size-sm);color:var(--text-meta);margin:0;line-height:1.6}.aps__card[data-v-ed669bcb]{background:var(--bg-panel);border:1px solid var(--border-color);border-radius:var(--radius-lg);flex-direction:column;gap:9px;padding:14px 16px;display:flex}.aps__card-head[data-v-ed669bcb]{align-items:baseline;gap:8px;display:flex}.aps__card-title[data-v-ed669bcb]{font-size:var(--font-size-mid);color:var(--text-primary);margin:0;font-weight:600}.aps__label[data-v-ed669bcb]{font-size:var(--font-size-sm);color:var(--text-secondary);font-weight:500}.aps__count[data-v-ed669bcb]{font-size:var(--font-size-xs);color:var(--text-meta);font-variant-numeric:tabular-nums;margin-left:auto}.aps__field[data-v-ed669bcb]{flex-direction:column;gap:5px;display:flex}.aps__hint[data-v-ed669bcb]{font-size:var(--font-size-xs);color:var(--text-meta);margin:0;line-height:1.6}.aps__area[data-v-ed669bcb]{box-sizing:border-box;resize:vertical;width:100%;min-height:92px;max-height:320px;font-size:var(--font-size-mid);color:var(--text-primary);background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-md);transition:border-color var(--transition-fast) var(--ease-custom);outline:none;padding:7px 9px;font-family:inherit;line-height:1.5}.aps__area[data-v-ed669bcb]:focus{border-color:var(--color-primary)}.aps__area[data-v-ed669bcb]::placeholder{color:var(--text-meta)}.aps__area[data-v-ed669bcb]:disabled{opacity:var(--disabled-opacity);cursor:not-allowed}.aps__foot[data-v-ed669bcb]{align-items:center;gap:8px;display:flex}.aps__spacer[data-v-ed669bcb]{flex:1}.aps__saved[data-v-ed669bcb]{font-size:var(--font-size-xs);color:var(--text-meta)}.aps__btn[data-v-ed669bcb]{color:var(--text-secondary);font-size:var(--font-size-sm);border-radius:var(--radius-md);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;border:none;padding:0 12px;line-height:28px}.aps__btn[data-v-ed669bcb]:hover:not(:disabled){color:var(--color-primary);background:var(--bg-container-hover)}.aps__btn[data-v-ed669bcb]:disabled{opacity:var(--disabled-opacity);cursor:default}.aps__btn[data-v-ed669bcb]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.aps__btn--primary[data-v-ed669bcb]{background:var(--color-primary);color:#fff}.aps__btn--primary[data-v-ed669bcb]:hover:not(:disabled){background:var(--color-primary);color:#fff;opacity:.88}.dps[data-v-d502a236]{border-top:1px solid var(--border-color);flex-direction:column;gap:14px;margin-top:6px;padding-top:18px;display:flex}.dps__head[data-v-d502a236]{flex-direction:column;gap:4px;display:flex}.dps__title[data-v-d502a236]{color:var(--text-primary);margin:0;font-size:14px;font-weight:600}.dps__intro[data-v-d502a236],.dps__foot[data-v-d502a236],.dps__empty[data-v-d502a236]{color:var(--text-secondary);margin:0;font-size:12px;line-height:1.6}.dps__row[data-v-d502a236],.dps__item[data-v-d502a236]{transition:background-color var(--transition-fast) var(--ease-custom);border-radius:6px;align-items:center;gap:10px;padding:8px 10px;display:flex}.dps__row[data-v-d502a236]:hover,.dps__item[data-v-d502a236]:hover{background:var(--bg-hover)}.dps__row-main[data-v-d502a236]{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.dps__row-name[data-v-d502a236]{color:var(--text-primary);font-size:13px}.dps__row-hint[data-v-d502a236]{color:var(--text-secondary);font-size:12px;line-height:1.6}.dps__switch[data-v-d502a236]{flex-shrink:0}.dps__block[data-v-d502a236]{flex-direction:column;gap:6px;display:flex}.dps__block-head[data-v-d502a236]{justify-content:space-between;align-items:baseline;gap:12px;padding:0 10px;display:flex}.dps__target[data-v-d502a236]{color:var(--text-secondary);white-space:nowrap;font-size:12px}.dps__list[data-v-d502a236]{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.dps__order[data-v-d502a236]{width:16px;color:var(--text-secondary);text-align:right;flex-shrink:0;font-size:12px}.dps__icon[data-v-d502a236]{flex-shrink:0;width:16px;height:16px}.dps__name[data-v-d502a236]{color:var(--text-primary);white-space:nowrap;font-size:13px}.dps__model[data-v-d502a236]{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.dps__missing[data-v-d502a236]{color:var(--text-secondary);opacity:.8;flex-shrink:0;font-size:11px}.dps__actions[data-v-d502a236]{flex-shrink:0;align-items:center;gap:2px;margin-left:auto;display:flex}.dps__act[data-v-d502a236]{width:22px;height:22px;color:var(--text-secondary);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), background-color var(--transition-fast) var(--ease-custom);background:0 0;border:0;border-radius:4px;justify-content:center;align-items:center;padding:0;display:inline-flex}.dps__act[data-v-d502a236]:hover:not(:disabled){background:var(--bg-active);color:var(--text-primary)}.dps__act--danger[data-v-d502a236]:hover:not(:disabled){color:var(--role-error-ink,var(--color-danger))}.dps__act[data-v-d502a236]:disabled{opacity:.35;cursor:not-allowed}.dps__add[data-v-d502a236]{align-self:flex-start;margin-left:10px}.dps__add-btn[data-v-d502a236]{border:1px dashed var(--border-color);color:var(--text-secondary);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom);background:0 0;border-radius:6px;align-items:center;gap:4px;padding:4px 8px;font-size:12px;display:inline-flex}.dps__add-btn[data-v-d502a236]:hover{color:var(--text-primary);border-color:var(--border-color-strong,var(--border-color))}.dps__add-item[data-v-d502a236]{align-items:center;gap:8px;display:flex}.agent-engine[data-v-adc17599]{vertical-align:middle}.agent-engine__btn[data-v-adc17599]{border:1px solid var(--border-color);border-radius:var(--radius-base);color:var(--text-secondary);font-size:var(--font-size-sm);cursor:pointer;transition:border-color var(--transition-fast) ease, color var(--transition-fast) ease;background:0 0;align-items:center;gap:6px;padding:4px 8px;font-family:inherit;line-height:1.5;display:inline-flex}.agent-engine__btn[data-v-adc17599]:hover:not(:disabled){border-color:var(--color-primary);color:var(--text-primary)}.agent-engine__btn[data-v-adc17599]:disabled{cursor:not-allowed;color:var(--text-meta)}.agent-engine__icon[data-v-adc17599],.agent-engine__item-icon[data-v-adc17599]{flex:none;font-size:14px}.agent-engine__caret[data-v-adc17599]{color:var(--text-meta);font-size:12px}.agent-engine__item[data-v-adc17599]{align-items:center;gap:8px;min-width:148px;display:inline-flex}.agent-engine__item-name[data-v-adc17599]{flex:1}.agent-engine__item-check[data-v-adc17599]{color:var(--color-primary);font-size:13px}.agent-engine__item-missing[data-v-adc17599]{font-size:var(--font-size-sm);color:var(--text-meta)}.csb[data-v-225c8d2f]{flex:none;align-items:center;display:inline-flex}.csb__btn[data-v-225c8d2f]{border-radius:var(--radius-xs);width:22px;height:22px;color:var(--text-meta);cursor:pointer;transition:var(--transition-ui-fast);background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.csb__btn[data-v-225c8d2f]:hover{background:var(--bg-hover);color:var(--text-secondary)}.csb__btn.is-flash[data-v-225c8d2f]{color:var(--color-success)}.csb__caret[data-v-225c8d2f]{width:15px}.chat-silence[data-v-f6811a1b]{font-size:var(--font-size-xs);color:var(--text-meta);white-space:nowrap;font-variant-numeric:tabular-nums;flex:none;align-items:center;gap:5px;line-height:1;display:inline-flex}.chat-silence__dot[data-v-f6811a1b]{background:currentColor;border-radius:50%;width:5px;height:5px}.chat-silence.is-warn[data-v-f6811a1b]{color:var(--color-warning-dark)}.chat-silence.is-warn .chat-silence__dot[data-v-f6811a1b]{animation:chat-silence-pulse-f6811a1b 1.6s var(--ease-custom) infinite}@keyframes chat-silence-pulse-f6811a1b{0%,to{opacity:1}50%{opacity:.25}}@media (prefers-reduced-motion:reduce){.chat-silence.is-warn .chat-silence__dot[data-v-f6811a1b]{animation:none}}.agent-view[data-v-f75acded]{background:var(--bg-container);height:100%;min-height:0;display:flex}.agent-sidebar[data-v-f75acded]{background:var(--bg-panel);border-right:1px solid var(--border-color);transition:width var(--transition-base) var(--ease-custom);flex-direction:column;flex-shrink:0;display:flex;overflow:hidden}.agent-conversations[data-v-f75acded]{flex:1;min-height:0;padding:10px 6px 8px 12px}.agent-sidebar.is-convs-collapsed .agent-conversations[data-v-f75acded]{padding:10px 4px 8px}.sidebar-resizer[data-v-f75acded]{cursor:col-resize;width:4px;transition:background var(--transition-fast) ease;background:0 0;flex-shrink:0}.sidebar-resizer[data-v-f75acded]:hover,.sidebar-resizer.active[data-v-f75acded]{background:var(--color-primary);opacity:.3}.agent-chat-area[data-v-f75acded]{flex-direction:column;flex:1;min-width:0;display:flex;position:relative;overflow:hidden}.agent-engine[data-v-f75acded]{margin-bottom:7px;margin-left:auto}.agent-copy[data-v-f75acded]{margin-bottom:7px;margin-left:2px}.agent-silence[data-v-f75acded]{margin-bottom:7px;margin-left:10px}.agent-tabs[data-v-f75acded]{border-bottom:1px solid var(--border-color);background:var(--bg-panel);flex-shrink:0;align-items:center;gap:4px;padding:8px 12px 0;display:flex}.agent-tab[data-v-f75acded]{color:var(--text-meta);font-size:var(--font-size-mid);cursor:pointer;transition:color var(--transition-fast) ease, border-color var(--transition-fast) ease, background var(--transition-fast) ease;border-radius:var(--radius-base) var(--radius-base) 0 0;background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;gap:6px;padding:7px 14px 9px;font-family:inherit;display:inline-flex}.agent-tab[data-v-f75acded]:hover{color:var(--text-secondary);background:var(--bg-hover)}.agent-tab.active[data-v-f75acded]{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:600}.agent-tab-body[data-v-f75acded]{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.agent-chat-pane[data-v-f75acded]{flex-direction:column;flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.agent-tab-body[data-v-f75acded]>.marketplace-panel{flex:1;min-height:0}.chat-loading[data-v-f75acded]{color:var(--text-meta);font-size:var(--font-size-base);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;display:flex}.agent-list-page[data-v-f75acded]{background:var(--bg-panel);flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.agent-list-page .agent-conversations[data-v-f75acded]{padding:12px 12px 10px 14px}.agent-page-bar[data-v-f75acded]{border-bottom:1px solid var(--border-color);background:var(--bg-panel);flex-shrink:0;align-items:center;gap:6px;height:34px;padding:0 12px 0 6px;display:flex}.agent-page-back[data-v-f75acded]{border-radius:var(--radius-xs);width:24px;height:24px;color:var(--text-meta);cursor:pointer;transition:var(--transition-ui-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.agent-page-back[data-v-f75acded]:hover{background:var(--bg-hover);color:var(--text-secondary)}.agent-page-title[data-v-f75acded]{min-width:0;font-size:var(--font-size-mid);color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.agent-chat-host[data-v-f75acded]{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.agent-chat-host[data-v-f75acded] .acu-avatar--left{background:0 0}.agent-dispatch-foot[data-v-f75acded]{font-size:var(--font-size-xs);color:var(--text-meta);flex-wrap:wrap;flex:none;align-items:center;gap:6px;padding:4px 12px 8px;line-height:1.5;display:flex}.agent-dispatch-label[data-v-f75acded]{color:var(--text-secondary)}.agent-dispatch-notice[data-v-f75acded]{color:var(--text-meta);margin:0}.agent-chat-host[data-v-f75acded] .acu-bubble-row.is-assistant .acu-bubble-main{width:var(--acu-bubble-max-width);max-width:var(--acu-bubble-max-width);position:relative}.agent-chat-host[data-v-f75acded] .acu-bubble-row.is-assistant .acu-bubble{align-self:flex-start}.agent-chat-host[data-v-f75acded] .acu-message-meta{margin:0;position:absolute;top:0;right:0}.agent-chat-host[data-v-f75acded] .acu-input-queue{--acu-queue-edge:var(--role-pending-edge);--acu-queue-surface:var(--role-pending-surface);--acu-queue-ink:var(--role-pending-ink);--acu-queue-wash:var(--role-pending-wash)}.agent-chat-host[data-v-f75acded] .acu-welcome-logo{background:var(--welcome-avatar) center/46px 46px no-repeat;width:56px;height:56px;box-shadow:none}.agent-chat-host[data-v-f75acded] .acu-welcome-logo>svg{display:none}.agent-chat-host[data-v-f75acded] .acu-welcome-grid{flex-wrap:wrap;display:flex}.agent-chat-host[data-v-f75acded] .acu-welcome-grid>.acu-preset-q{flex:260px;min-width:0}[data-theme=dark]{background:var(--bg-panel)}.agent-chat-host[data-v-f75acded] .acu-input-wrap>.agent-context-slot{gap:var(--acu-space-2,8px);padding:var(--acu-space-2,8px) var(--acu-space-2,8px) 0;flex-wrap:wrap;display:flex}.agent-chat-host[data-v-f75acded] .acu-input-attachments>.agent-context-slot{display:inline-flex}.agent-context-att[data-v-f75acded]{align-items:center;gap:var(--acu-space-2,8px);max-width:180px;padding:var(--acu-space-2,8px) var(--acu-space-3,12px);border:1px solid var(--acu-border);border-radius:var(--acu-radius-sm,8px);background:var(--acu-bg,var(--bg-container));color:var(--acu-text-secondary,var(--text-secondary));font-size:var(--acu-font-size-xs,12px);display:inline-flex;position:relative}.agent-context-att-icon[data-v-f75acded]{opacity:.75;flex-shrink:0}.agent-context-att-name[data-v-f75acded]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.agent-context-att-remove[data-v-f75acded]{border-radius:var(--acu-radius-full,999px);background:var(--acu-text,var(--text-primary));width:18px;height:18px;color:var(--acu-bg,var(--bg-container));cursor:pointer;box-shadow:var(--acu-shadow-sm,0 1px 2px #0003);transition:transform var(--acu-duration-fast,.15s) var(--acu-easing,ease);border:none;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute;top:-6px;right:-6px}.agent-context-att-remove[data-v-f75acded]:hover{transform:scale(1.12)}.agent-context-att-remove[data-v-f75acded]:active{transform:scale(1.02)}
@@ -1,4 +1,4 @@
1
- import"./rolldown-runtime-C0FnF6B9.js";import{An as e,Ar as t,Bn as n,C as r,Cn as i,Dt as a,Et as o,Ft as s,Gn as c,Gr as l,Gt as u,Ht as d,In as f,J as p,Jr as m,M as h,Mn as g,Pn as _,Q as v,Qn as y,Rt as b,S as x,Sn as S,Sr as C,Tn as w,Un as T,Ur as E,Vt as D,W as O,Xn as ee,Y as k,Yn as A,_n as j,a as M,ar as N,at as P,cr as te,ct as ne,dn as re,en as F,et as I,fn as L,gr as R,i as z,ir as B,j as V,kn as H,ln as U,lr as W,m as ie,mn as G,mr as ae,nr as K,on as oe,pn as q,pr as se,pt as ce,qn as J,r as le,w as ue,wn as Y,xn as X,xt as de,yn as fe}from"./element-plus-CkMnLwcU.js";import{a as pe,c as me,n as he,o as ge,s as _e,t as ve}from"./vendor-LCbsk86d.js";import{n as Z,t as Q}from"./_plugin-vue_export-helper-DlU9e1mk.js";import{t as ye}from"./SvgIcon-DqzYKNo_.js";import{d as be,f as $,m as xe,t as Se,u as Ce}from"./configStore-BNFH8Gjg.js";import{t as we}from"./CommonDialog-DTWEVQih.js";import{H as Te,L as Ee,St as De,Tt as Oe,V as ke,_ as Ae,d as je,f as Me,ft as Ne,g as Pe,h as Fe,m as Ie,n as Le,nt as Re,p as ze,r as Be,t as Ve,u as He,v as Ue,wt as We,y as Ge}from"./index-Bz3MwUuu.js";import{c as Ke,l as qe,n as Je,s as Ye,u as Xe}from"./taskExecutionExport-0qwbiZRh.js";import{n as Ze}from"./relativeTime-DVKGdz_G.js";function Qe(e,t=200){let n=typeof e==`string`?e:``;if(!n.trim())return``;let r=n.split(`
1
+ import"./rolldown-runtime-C0FnF6B9.js";import{An as e,Ar as t,Bn as n,C as r,Cn as i,Dt as a,Et as o,Ft as s,Gn as c,Gr as l,Gt as u,Ht as d,In as f,J as p,Jr as m,M as h,Mn as g,Pn as _,Q as v,Qn as y,Rt as b,S as x,Sn as S,Sr as C,Tn as w,Un as T,Ur as E,Vt as D,W as O,Xn as ee,Y as k,Yn as A,_n as j,a as M,ar as N,at as P,cr as te,ct as ne,dn as re,en as F,et as I,fn as L,gr as R,i as z,ir as B,j as V,kn as H,ln as U,lr as W,m as ie,mn as G,mr as ae,nr as K,on as oe,pn as q,pr as se,pt as ce,qn as J,r as le,w as ue,wn as Y,xn as X,xt as de,yn as fe}from"./element-plus-CkMnLwcU.js";import{a as pe,c as me,n as he,o as ge,s as _e,t as ve}from"./vendor-LCbsk86d.js";import{n as Z,t as Q}from"./_plugin-vue_export-helper-DlU9e1mk.js";import{t as ye}from"./SvgIcon-DqzYKNo_.js";import{d as be,f as $,m as xe,t as Se,u as Ce}from"./configStore-BNFH8Gjg.js";import{t as we}from"./CommonDialog-DTWEVQih.js";import{H as Te,L as Ee,St as De,Tt as Oe,V as ke,_ as Ae,d as je,f as Me,ft as Ne,g as Pe,h as Fe,m as Ie,n as Le,nt as Re,p as ze,r as Be,t as Ve,u as He,v as Ue,wt as We,y as Ge}from"./index-D6QfSjkU.js";import{c as Ke,l as qe,n as Je,s as Ye,u as Xe}from"./taskExecutionExport-BmT0ExK3.js";import{n as Ze}from"./relativeTime-DVKGdz_G.js";function Qe(e,t=200){let n=typeof e==`string`?e:``;if(!n.trim())return``;let r=n.split(`
2
2
  `).map(e=>e.trim()).filter(Boolean),i=(r.length?r[r.length-1]:``).replace(/\s+/g,` `);return i.length>t?`${i.slice(0,t-1)}…`:i}function $e(e){return Z(e===`done`?`@AGENT:对话已完成`:`@AGENT:对话出错`)}function et(){let e={page:!1,browser:!1,sound:!1};try{let t=Se();e.page=!!t.notifyPageOnTaskDone,e.browser=!!t.notifyBrowserOnTaskDone,e.sound=!!t.notifySoundOnTaskDone}catch{}return e}function tt(){return et().sound?Be():!1}function nt(e){let t=et();if(!Ve(t))return!1;let n=String(e.title||``).trim()||Z(`@AGENT:无标题`),r=Qe(e.detail),i=e.tag||`zen-gitsync-agent`,a=r?`${n}\n${r}`:n;return t.sound&&Le(e.kind),Te(t)&&ke({title:$e(e.kind),body:a,tag:i})||!t.page||e.alreadyToast||(e.kind===`done`?z.success(Z(`@AGENT:对话完成:{name}`,{name:n})):z.error(Z(`@AGENT:对话出错:{name}`,{name:n}))),!0}var rt=`g ai`,it=`g-ai`,at=[{id:`gai`,name:rt},...be.map(e=>({id:e.id,name:e.name}))],ot=`zen-gitsync-agent-engine`;function st(e){return e===`gai`||$(e)}function ct(e){return at.find(t=>t.id===e)?.name||`g ai`}function lt(e){return $(e)}function ut(){try{let e=localStorage.getItem(ot);if(st(e))return e}catch{}return`gai`}function dt(e){try{localStorage.setItem(ot,e)}catch{}}f(),W();var ft=[`image/*`,`.pdf`,`.txt`,`.md`,`.json`,`.csv`,`.log`,`.yml`,`.yaml`,`.xml`,`.toml`,`.ini`,`.html`,`.css`,`.js`,`.ts`,`.tsx`,`.vue`,`.py`,`.java`,`.go`,`.rs`,`.sql`,`.sh`].join(`,`),pt=65536,mt=`local-`,ht=0;function gt(e){if(!e||!Array.isArray(e.messages))return[];let t=[],n=e.messages.length,r=new Map;for(let t of e.turnTimings||[])typeof t?.turnIndex==`number`&&Number.isFinite(t?.durationMs)&&r.set(t.turnIndex,t);let i=-1;for(let a=0;a<n;a++){let o=e.messages[a];if(o.role!==`system`){if(o.role===`user`){i+=1;let e=``,n;if(typeof o.content==`string`)e=o.content;else if(Array.isArray(o.content)){e=o.content.filter(e=>e?.type===`text`).map(e=>e.text||``).join(` `);let t=o.content.filter(e=>e?.type===`image_url`&&typeof e.image_url?.url==`string`).map((e,t)=>({id:`att-${a}-${t}`,name:`image`,size:0,type:yt(e.image_url?.url||``)||`image/*`,preview:e.image_url?.url}));t.length>0&&(n=t)}(e||n)&&t.push({id:`msg-${a}`,role:`user`,content:e,attachments:n,status:`done`,createdAt:Date.now()})}else if(o.role===`assistant`){let o=`msg-${a}`,s=``,c=[],l=a;for(;l<n;){let t=e.messages[l];if(t.role!==`assistant`&&t.role!==`tool`)break;if(t.role===`assistant`){if(typeof t.content==`string`&&(s+=t.content),t.tool_calls&&t.tool_calls.length>0)for(let e of t.tool_calls)c.push({id:e.id||e.function?.name||_e(),name:e.function?.name||``,arguments:e.function?.arguments||``,argsPreview:_t(e.function?.name||``,e.function?.arguments||``),status:`done`,result:``})}else{let e=t.tool_call_id||t.name||``,n=c.find(t=>t.id===e);if(n){let e;e=typeof t.content==`string`?t.content:Array.isArray(t.content)&&t.content.filter(e=>e?.type===`text`).map(e=>e.text||``).join(`
3
3
  `)||`(non-text result)`,e.length>pt&&(e=`…(前文已截断)\n${e.slice(-65536)}`),n.result=e}}l++}a=l-1,s.length>pt&&(s=`…(前文已截断)\n${s.slice(-65536)}`);let u=!!s,d=c.length>0;if(u||d){let e=r.get(i),n=e?.finishedAt?Date.parse(e.finishedAt):NaN;t.push({id:o,role:`assistant`,content:s,toolCalls:d?c:void 0,status:`done`,createdAt:Number.isFinite(n)&&e?n-e.durationMs:Date.now(),finishedAt:Number.isFinite(n)?n:void 0,meta:e?{durationMs:e.durationMs}:void 0})}}}}return t}function _t(e,t){try{let n=JSON.parse(t);switch(e){case`run_command`:return(n.run_in_background?`[后台] `:``)+String(n.command||``).slice(0,200);case`background_task`:{let e=String(n.action||`read`);if(e===`list`)return`列出后台任务`;if(e===`kill`)return`停止 ${n.id||`?`}`;let t=Number(n.wait_seconds)||0;return`${n.id||`?`}${t?` · 等 ${t}s`:``}`}case`read_file`:case`write_file`:case`edit_file`:return String(n.path||``);case`list_files`:return String(n.path||`.`);case`search_text`:return String(n.pattern||``);case`update_plan`:{let e=ve(t,`update_plan`);if(!e)return``;let{total:r,done:i}=ge(e),a=String(n.explanation||``).replace(/\s+/g,` `).trim();return[`${i}/${r}`,a].filter(Boolean).join(` — `).slice(0,200)}default:return JSON.stringify(n).slice(0,200)}}catch{return t.slice(0,200)}}function vt(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(String(r.result||``)),r.onerror=()=>n(r.error||Error(`FileReader failed`)),r.readAsDataURL(e)})}function yt(e){let t=/^data:([^;,]+)/.exec(e);return t?t[1]:``}function bt(){let e=Se(),t=Ge(),n=++ht,r=R([]),i=R(!1),a=R(ut());function o(e){st(e)&&(a.value=e,dt(e))}let s=ae(new Map),c=R(null),l=R(!1),u=0,d=0,f=new Set,p=new Map;function m(e){return{key:e,sessionId:e.startsWith(mt)?null:e,title:``,messages:[],isStreaming:!1,abortController:null,nonce:0,pendingQuestion:null,answeringQuestion:!1,contextUsage:null,queue:[],queuePaused:!1,lastEventAt:null}}function h(e){let t=s.get(e);return t||=(s.set(e,m(e)),s.get(e)),t}let g=X(()=>c.value?s.get(c.value)??null:null),_=X(()=>g.value?.messages??[]),v=X(()=>{let e=_.value,t=g.value?.sessionId??null;if(!t)return e;let n=!1,r=e.map(e=>{if(!e.content||!e.content.includes(`![`))return e;let r=Xe(e.content,t);return r===e.content?e:(n=!0,{...e,content:r})});return n?r:e}),y=X(()=>g.value?.isStreaming??!1),b=R(Date.now()),x=null,S=X(()=>{let e=g.value;return!e||!e.isStreaming||!e.lastEventAt?null:Math.max(0,b.value-e.lastEventAt)});K(y,e=>{e?(b.value=Date.now(),x||=setInterval(()=>{b.value=Date.now()},1e3)):x&&=(clearInterval(x),null)},{immediate:!0}),te()&&se(()=>{x&&=(clearInterval(x),null)});let C=X(()=>g.value?.contextUsage??null),w=X(()=>{let e=C.value;return e?{ratio:Math.min(Math.max(e.tokenRatio,e.messageRatio),1),current:e.tokens,total:e.maxTokens,unit:`K`,suffix:`上下文已使用`,detail:[`${e.messages} / ${e.maxMessages} 条消息`,typeof e.actualInputTokens==`number`&&e.actualInputTokens>0?`实测 ${e.actualInputTokens.toLocaleString()} token`:`估算 ${Math.round(e.estTokens).toLocaleString()} token`,e.droppedMessages>0?`会话共 ${e.transcriptMessages} 条,本次只带入 ${e.messages} 条(其余已摘成梗概)`:``].filter(Boolean).join(`
4
4
  `)}:null}),T=X(()=>{let e=r.value.find(e=>e.sessionId===c.value);return st(e?.engine)?e.engine:a.value}),E=X(()=>r.value.some(e=>e.sessionId===c.value)),D=X(()=>g.value?.pendingQuestion??null),O=X(()=>g.value?.answeringQuestion??!1),ee=X(()=>g.value?.pendingQuestion??null),k=X(()=>g.value?.queuePaused??!1),A=X(()=>(g.value?.queue??[]).map(e=>({id:e.id,text:e.text,attachmentNames:e.files.map(e=>e.file.name)})));function j(e){let t=g.value;if(!t)return;let n=t.queue.findIndex(t=>t.id===e);n<0||(t.queue.splice(n,1),t.queue.length===0&&(t.queuePaused=!1))}function M(e){if(e.isStreaming)return;let t=e.queue.shift();t&&G(t.text,t.files,{...t.options,targetKey:e.key,background:!0})}function N(){let e=g.value;e&&!e.isStreaming&&e.queue.length!==0&&(e.queuePaused=!1,M(e))}function P(e){return!!s.get(e)?.isStreaming}function ne(t){let n=[...t];for(let t of s.values()){if(!t.sessionId)continue;let r=n.findIndex(e=>e.sessionId===t.sessionId);if(r!==-1){f.delete(t.sessionId),t.isStreaming&&(n[r]={...n[r],isGenerating:!0});continue}if(!t.isStreaming&&!f.has(t.sessionId))continue;let i=new Date().toISOString();n.unshift({sessionId:t.sessionId,title:t.title||Z(`@AGENT:无标题`),source:`web`,cwd:e.currentDirectory||``,model:``,engine:a.value,createdAt:i,updatedAt:i,messageCount:t.messages.filter(e=>e.role===`user`).length||1,size:0,isGenerating:t.isStreaming})}return n}function re(e,t){return(t.updatedAt||``).localeCompare(e.updatedAt||``)}function F(t){if(!t?.sessionId||r.value.some(e=>e.sessionId===t.sessionId))return;let n={sessionId:t.sessionId,title:t.title||Z(`@AGENT:无标题`),source:t.source||`web`,cwd:t.cwd||``,model:t.model||``,engine:t.engine,createdAt:t.createdAt||``,updatedAt:t.updatedAt||``,messageCount:Array.isArray(t.messages)?t.messages.length:0,size:0};p.set(t.sessionId,{meta:n,cwd:e.currentDirectory||``}),r.value=[...r.value,n].sort(re)}function I(){if(p.size===0)return;let t=e.currentDirectory||``,n=[];for(let[e,i]of[...p]){if(i.cwd!==t||r.value.some(t=>t.sessionId===e)){p.delete(e);continue}n.push(i.meta)}n.length&&(r.value=[...r.value,...n].sort(re))}async function L(){let t=++u,n=e.currentDirectory||``;if(!n){r.value=[],i.value=!1;return}i.value=!0;try{let e=`/api/agent/sessions?cwd=${encodeURIComponent(n)}`,i=await fetch(e,{cache:`no-store`}).then(e=>e.json());if(t!==u)return;if(!i.success){z.error(i.error||Z(`@AGENT:加载会话列表失败`));return}let a=Array.isArray(i.sessions)?i.sessions:[];r.value=ne(a),I()}catch(e){if(t!==u)return;z.error(Z(`@AGENT:加载会话列表失败`)+`: `+(e?.message||e))}finally{t===u&&(i.value=!1)}}function B(t,n){let i=new Date().toISOString(),o=r.value.find(e=>e.sessionId===t);if(o){o.isGenerating=!0,o.updatedAt=i;return}r.value=[{sessionId:t,title:n||Z(`@AGENT:无标题`),source:`web`,cwd:e.currentDirectory||``,model:``,engine:a.value,createdAt:i,updatedAt:i,messageCount:1,size:0,isGenerating:!0},...r.value]}function V(e){let t=r.value.find(t=>t.sessionId===e);t&&(t.isGenerating=!1)}async function H(e){if(s.get(e)?.isStreaming){c.value=e;return}l.value=!0,c.value=e;try{let t=await fetch(`/api/agent/sessions/${encodeURIComponent(e)}`).then(e=>e.json());if(!t.success){z.error(t.error||Z(`@AGENT:加载会话失败`));return}let n=h(e);n.sessionId=e,n.messages=gt(t.session),t.session?.title&&(n.title=t.session.title),F(t.session)}catch(e){z.error(Z(`@AGENT:加载会话失败`)+`: `+(e?.message||e))}finally{l.value=!1}}async function U(e){try{await le.confirm(Z(`@AGENT:确认删除该会话`),Z(`@AGENT:删除后无法恢复`),{type:`warning`})}catch{return}let t=s.get(e);if(t?.abortController)try{t.abortController.abort()}catch{}s.delete(e);try{let t=await fetch(`/api/agent/sessions/${encodeURIComponent(e)}`,{method:`DELETE`}).then(e=>e.json());if(!t.success){z.error(t.error||Z(`@AGENT:删除失败`));return}r.value=r.value.filter(t=>t.sessionId!==e),p.delete(e),c.value===e&&(c.value=null),z.success(Z(`@AGENT:已删除`))}catch(e){z.error(Z(`@AGENT:删除失败`)+`: `+(e?.message||e))}}async function W(e,t){try{let n=await fetch(`/api/agent/sessions/${encodeURIComponent(e)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({title:t})}).then(e=>e.json());if(!n.success){z.error(n.error||Z(`@AGENT:重命名失败`));return}let i=r.value.find(t=>t.sessionId===e);i&&(i.title=t);let a=s.get(e);a&&(a.title=t),z.success(Z(`@AGENT:已重命名`))}catch(e){z.error(Z(`@AGENT:重命名失败`)+`: `+(e?.message||e))}}function ie(){c.value=null}async function G(r,i=[],a={}){let o=i.filter(e=>e?.file?.type?.startsWith(`image/`)),s=i.filter(e=>!e?.file?.type?.startsWith(`image/`)),l=[],u=0;for(let e of s){let t=e.file.size||0;if(!(t>10485760)){if(l.length>=10||u+t>20971520)break;u+=t,l.push(e)}}let f=s.filter(e=>!l.includes(e));f.length>0&&z.warning(`${Z(`@AGENT:以下附件超过大小或数量上限,已忽略:`)}${f.map(e=>e.file.name).join(`、`)}`);let p=a.targetKey||c.value||`${mt}${Date.now()}-${++d}`,m=h(p);if(!r.trim()&&o.length===0&&l.length===0)return;if(m.isStreaming){m.queue.push({id:_e(),text:r,files:[...o,...l],options:a});return}let g=(await Promise.allSettled(o.map(e=>vt(e.file)))).map(e=>e.status===`fulfilled`?e.value:``).filter(e=>e.startsWith(`data:image/`)),_=(await Promise.allSettled(l.map(async e=>({name:e.file.name||`file`,dataUrl:await vt(e.file)})))).map(e=>e.status===`fulfilled`?e.value:null).filter(e=>!!e&&typeof e.dataUrl==`string`&&e.dataUrl.startsWith(`data:`));a.background||(c.value=m.key),m.nonce+=1;let v=m.nonce;m.abortController=new AbortController;let y=m.abortController;m.pendingQuestion=null,m.answeringQuestion=!1;let b={id:_e(),role:`user`,content:r,status:`done`,createdAt:Date.now()},x=[...o,...l];x.length>0&&(b.attachments=x.map(e=>({id:e.id,name:e.file.name||`image`,size:e.file.size||0,type:e.file.type||``,preview:e.preview}))),m.messages.push(b);let S=ae({id:_e(),role:`assistant`,content:``,status:`pending`,createdAt:Date.now()});m.messages.push(S),m.isStreaming=!0,m.lastEventAt=Date.now(),m.lastSendOptions=a;let C=`${n}:${p}:${v}`;t.begin(C),await oe(m,v,y,S,C,{sessionId:m.sessionId||``,userMessage:r,cwd:e.currentDirectory||``,engine:a.engine??T.value,...g.length>0?{images:g}:{},..._.length>0?{attachments:_}:{},...a.openFilePath?{openFilePath:a.openFilePath}:{},...a.docNote?{docNote:a.docNote}:{},...a.dirStatus?.length?{dirStatus:a.dirStatus}:{},...a.dirSummary?{dirSummary:a.dirSummary}:{},...a.allowDispatch?{allowDispatch:!0,dispatchExecutor:a.dispatchExecutor||``,dispatchUseDefaultPrompt:a.dispatchUseDefaultPrompt!==!1}:{}})}async function oe(e,n,r,i,a,o){let l=String(o.userMessage||``),u=[],d=e.sessionId,p=!1,m=null;try{let t=await fetch(`/api/agent/chat`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify(o),signal:r.signal});if(n!==e.nonce)return;if(!t.ok||!t.body){let e=await t.text().catch(()=>``);throw Error(e||`HTTP ${t.status}`)}let a=t.body.getReader(),f=new TextDecoder(`utf-8`),p=``;for(;;){let{value:t,done:r}=await a.read();if(n!==e.nonce)return;if(r)break;p+=f.decode(t,{stream:!0});let o=p.split(`
@@ -12,4 +12,4 @@ import"./rolldown-runtime-C0FnF6B9.js";import{An as e,Ar as t,Bn as n,C as r,Cn
12
12
 
13
13
  ---
14
14
 
15
- `)}\n`}f(),W(),t();var ka={class:`csb`},Aa=[`title`,`aria-label`],ja={key:0,viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},Ma={key:1,viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},Na=[`title`,`aria-label`],Pa=Q(g({__name:`CopySessionButton`,props:{messages:{},title:{},engine:{}},setup(t){let n=t,i=R(!1),a=null;T(()=>{a&&clearTimeout(a)});async function o(e){try{if(navigator?.clipboard?.writeText)return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,t.style.left=`-9999px`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch{return!1}}async function s(e){let t=Oa(n.messages||[],{title:n.title,engine:n.engine,assistantName:je},{scope:e});if(!t){z.warning(Z(`@AGENT:暂无会话内容可复制`));return}if(!await o(t)){z.error(Z(`@AGENT:复制失败`));return}i.value=!0,z.success(Z(`@AGENT:已复制会话`)),a&&clearTimeout(a),a=setTimeout(()=>{i.value=!1,a=null},1500)}function c(e){s(e===`full`?`full`:`brief`)}return(t,n)=>{let a=r,o=ue,l=x;return J(),w(`div`,ka,[S(`button`,{type:`button`,class:E([`csb__btn`,{"is-flash":i.value}]),title:C(Z)(`@AGENT:复制本会话的对话内容(默认精简:仅对话正文)`),"aria-label":C(Z)(`@AGENT:复制会话`),onClick:n[0]||=e=>s(`brief`)},[i.value?(J(),w(`svg`,ja,[...n[1]||=[S(`path`,{d:`M5 12l5 5l10-10`},null,-1)]])):(J(),w(`svg`,Ma,[...n[2]||=[S(`path`,{d:`M7 9.667a2.667 2.667 0 0 1 2.667-2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1-2.667 2.667h-8.666a2.667 2.667 0 0 1-2.667-2.667l0-8.666`},null,-1),S(`path`,{d:`M4.012 16.737a2.005 2.005 0 0 1-1.012-1.737v-10c0-1.1.9-2 2-2h10c.75 0 1.158.385 1.5 1`},null,-1)]]))],10,Aa),e(l,{trigger:`click`,placement:`bottom-end`,onCommand:c},{dropdown:B(()=>[e(o,null,{default:B(()=>[e(a,{command:`brief`},{default:B(()=>[H(m(C(Z)(`@AGENT:精简:对话正文`)),1)]),_:1}),e(a,{command:`full`},{default:B(()=>[H(m(C(Z)(`@AGENT:全量:对话正文 + 思考 + 工具调用`)),1)]),_:1})]),_:1})]),default:B(()=>[S(`button`,{type:`button`,class:`csb__btn csb__caret`,title:C(Z)(`@AGENT:选择复制范围`),"aria-label":C(Z)(`@AGENT:选择复制范围`)},[...n[3]||=[S(`svg`,{viewBox:`0 0 24 24`,width:`11`,height:`11`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[S(`path`,{d:`M6 9l6 6l6-6`})],-1)]],8,Na)]),_:1})])}}}),[[`__scopeId`,`data-v-225c8d2f`]]);f(),W(),t();var Fa=[`title`],Ia=1e4,La=6e4,Ra=Q(g({__name:`ChatSilenceBadge`,props:{silentMs:{default:null},streaming:{type:Boolean,default:!1}},setup(e){let t=e,n=X(()=>t.streaming&&t.silentMs!==null&&t.silentMs>=Ia),r=X(()=>(t.silentMs??0)>=La);return(t,i)=>n.value?(J(),w(`span`,{key:0,class:E([`chat-silence`,{"is-warn":r.value}]),title:C(Z)(`@AGENT:已经有一段时间没有收到模型的输出与工具调用了`)},[i[0]||=S(`span`,{class:`chat-silence__dot`,"aria-hidden":`true`},null,-1),H(` `+m(C(Z)(`@AGENT:静默 {elapsed}`,{elapsed:C(Ze)(e.silentMs)})),1)],10,Fa)):Y(``,!0)}}),[[`__scopeId`,`data-v-f6811a1b`]]);f(),W(),oe(),t();var za={class:`agent-chat-area`},Ba={class:`agent-tabs`,role:`tablist`},Va=[`aria-selected`,`title`,`aria-label`,`onClick`],Ha={key:0},Ua={class:`agent-tab-body`},Wa={key:0,class:`agent-chat-pane`},Ga={key:0,class:`agent-list-page`},Ka={key:0,class:`agent-page-bar`},qa=[`title`,`aria-label`],Ja={class:`agent-page-title`},Ya={key:0,class:`chat-loading`},Xa=[`title`],Za={class:`agent-context-att-name`},Qa=[`title`,`aria-label`],$a={class:`agent-dispatch-foot`},eo={key:0,class:`agent-dispatch-notice`},to={class:`agent-dispatch-label`},no={class:`agent-dispatch-hint`},ro=1100,io=640,ao=40,oo=Q(g({__name:`AgentView`,props:{contextFilePath:{},contextFileName:{},contextNote:{},forceNarrow:{type:Boolean},view:{}},setup(t,{expose:r}){let o=t,s=Se(),u=De(),{dispatchTarget:d,hasPriority:f,priority:h}=Ke(),v=X(()=>h.value.map(e=>xe(e)).join(` → `)),b=R(null),{width:x,narrow:D}=Lt(b),O=X(()=>o.forceNarrow===!0||D.value),ee=X(()=>x.value>0&&x.value<io),k=R(`chat`),M=R(`chat`),P=X(()=>M.value===`mcp`?`mcp`:`skill`),te=(...e)=>g({render:()=>_(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`},e.map(e=>_(`path`,{d:e})))}),ne=X(()=>[{id:`chat`,label:Z(`@AGENT:对话`),icon:te(`M12 11v.01`,`M8 11v.01`,`M16 11v.01`,`M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3h-5l-5 3v-3h-2a3 3 0 0 1-3-3v-8a3 3 0 0 1 3-3l12 0`)},{id:`schedule`,label:Z(`@AGENT:定时任务`),icon:te(`M5 13a7 7 0 1 0 14 0a7 7 0 0 0-14 0`,`M14.5 10.5l-2.5 2.5`,`M17 8l1-1`,`M14 3h-4`)},{id:`skill`,label:Z(`@AGENT:Skill 广场`),icon:te(`M6.331 8h11.339a2 2 0 0 1 1.977 2.304l-1.255 8.152a3 3 0 0 1-2.966 2.544h-6.852a3 3 0 0 1-2.965-2.544l-1.255-8.152a2 2 0 0 1 1.977-2.304`,`M9 11v-5a3 3 0 0 1 6 0v5`)},{id:`mcp`,label:Z(`@AGENT:MCP 广场`),icon:te(`M7 12l5 5l-1.5 1.5a3.536 3.536 0 1 1-5-5l1.5-1.5`,`M17 12l-5-5l1.5-1.5a3.536 3.536 0 1 1 5 5l-1.5 1.5`,`M3 21l2.5-2.5`,`M18.5 5.5l2.5-2.5`,`M10 11l-2 2`,`M13 14l-2 2`)},{id:`settings`,label:Z(`@AGENT:设置`),icon:te(`M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 0 0-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 0 0-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 0 0-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 0 0-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 0 0 1.066-2.573c-.94-1.543.826-3.31 2.37-2.37c1 .608 2.296.07 2.572-1.065`,`M9 12a3 3 0 1 0 6 0a3 3 0 0 0-6 0`)}]),{sessions:re,sessionsLoading:F,currentSessionId:I,messages:L,displayMessages:z,isStreaming:V,sessionLoading:H,loadSessions:U,loadSession:W,deleteSession:ie,renameSession:ae,newSession:oe,sendMessage:q,retryTurn:se,questionPanel:ce,answeringQuestion:le,answerQuestion:ue,isSessionGenerating:de,currentEngine:pe,pendingEngine:ge,isEngineLocked:_e,pickEngine:ve,stop:Q,inputContextUsage:ye,queuedMessages:be,queuePaused:$,removeQueuedMessage:we,flushQueued:Te,silentMs:Ee}=bt(),Oe=X(()=>_e.value?pe.value:ge.value),ke=X(()=>Oe.value!==`gai`);function Ne(e){_e.value||ve(e)}let Le=X(()=>{let e=s.theme;return e===`dark`||e===`auto`&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}),Re=X(()=>{let e=s.models.find(e=>e.isDefault);return e&&(e.name||e.model)||``}),Be=X(()=>Ue(re.value,de)),Ve=Ie(),We=X(()=>Be.value.find(e=>e.id===I.value)?.title||Z(`@AGENT:对话`)),Ge={"--welcome-avatar":`url("${He}")`},qe=R(null),Je=R(null),Xe=R(!1),Ze=null,Qe=X(()=>!!o.contextFileName&&!Xe.value);function $e(e){return Array.from(e.children).find(e=>e.classList?.contains(`acu-input-attachments`))??null}function et(){let e=qe.value?.querySelector(`.acu-input-wrap`);if(!e)return;let t=e.querySelector(`.agent-context-slot`);if(!Qe.value){if(!t)return;Je.value=null,n(()=>t.remove());return}let r=Je.value&&e.contains(Je.value)?Je.value:t;r||(r=document.createElement(`div`),r.className=`agent-context-slot`);let i=$e(e),a=i??e;r.parentElement!==a&&a.insertBefore(r,i?i.firstChild:e.firstChild),Je.value=r}function tt(){let e=qe.value;!e||typeof MutationObserver>`u`||(Ze?.disconnect(),Ze=new MutationObserver(()=>et()),Ze.observe(e,{childList:!0,subtree:!0}))}c(()=>{n(()=>{et(),tt()})}),T(()=>{Ze?.disconnect(),Ze=null,Je.value=null}),K(()=>o.contextFilePath,()=>{Xe.value=!1}),K(Qe,e=>{e&&n(et)});let nt=X(()=>Ce(s.agentPresetPrompts,o.view,s.agentPresetPromptsByView));async function rt(e){let t=Xe.value?void 0:o.contextFilePath||void 0,r=Xe.value?void 0:o.contextNote||void 0,i={...t?{openFilePath:t}:{},...r?{docNote:r}:{},...ke.value?{}:{allowDispatch:!0,dispatchExecutor:d.value,dispatchUseDefaultPrompt:!0}};await q(e.text,e.files,Object.keys(i).length?i:void 0),await n(),ut()}async function it(e){await q(e.prompt),await n(),ut()}let at=Pe(),ot=Fe(),st=R(null),lt=Ae();function ut(e=!0){st.value?.scrollToBottom(e)}K(()=>L.value.length,()=>{n(()=>ut(!1))});function dt(e){W(e),k.value=`chat`}function pt(e){e&&(M.value=`chat`,dt(e))}function mt(){oe(),k.value=`chat`}let ht=R(280),gt=R(!1),{convListCollapsed:_t,setConvListCollapsed:vt}=Vt();function yt(e){if(_t.value)return;gt.value=!0;let t=e.clientX,n=ht.value,r=e=>{let r=e.clientX-t,i=Math.max(200,Math.min(500,n+r));ht.value=i},i=()=>{gt.value=!1,document.removeEventListener(`mousemove`,r),document.removeEventListener(`mouseup`,i)};document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)}K(O,e=>{e||(k.value=`chat`)}),K(()=>[s.currentDirectory,V.value],async([e,t],n)=>{let r=!n||e!==n[0],i=!!n&&n[1]===!0&&!t;(r||i)&&await U(),I.value&&!V.value&&!re.value.some(e=>e.sessionId===I.value)&&oe()},{immediate:!0});let xt=null;return c(()=>{xt=Ot(e=>{e.type===`task_finished`&&U().catch(()=>{})})}),T(()=>{xt?.(),xt=null}),r({async askQuestion(e,t){M.value=`chat`,k.value=`chat`,await q(e,[],t?{engine:`gai`,dirStatus:t.dirStatus,dirSummary:t.dirSummary}:void 0),await n(),ut()}}),(t,n)=>(J(),w(`div`,{ref_key:`rootRef`,ref:b,class:`agent-view`},[N(S(`aside`,{class:E([`agent-sidebar`,{"is-convs-collapsed":C(_t)}]),style:l({width:(C(_t)?ao:ht.value)+`px`})},[e(C(me),{class:`agent-conversations`,items:Be.value,"active-id":C(I),loading:C(F),labels:C(Ve),collapsible:``,collapsed:C(_t),"onUpdate:collapsed":C(vt),onSelect:dt,onNew:mt,onRename:C(ae),onDelete:C(ie)},null,8,[`items`,`active-id`,`loading`,`labels`,`collapsed`,`onUpdate:collapsed`,`onRename`,`onDelete`])],6),[[G,M.value===`chat`&&!O.value]]),N(S(`div`,{class:E([`sidebar-resizer`,{active:gt.value}]),onMousedown:yt},null,34),[[G,M.value===`chat`&&!O.value&&!C(_t)]]),S(`main`,za,[S(`nav`,Ba,[(J(!0),w(j,null,A(ne.value,t=>(J(),w(`button`,{key:t.id,type:`button`,class:E([`agent-tab`,{active:M.value===t.id}]),role:`tab`,"aria-selected":M.value===t.id,title:t.label,"aria-label":t.label,onClick:e=>M.value=t.id},[e(C(p),null,{default:B(()=>[(J(),i(y(t.icon)))]),_:2},1024),ee.value?Y(``,!0):(J(),w(`span`,Ha,m(t.label),1))],10,Va))),128)),M.value===`chat`?(J(),i(xa,{key:0,class:`agent-engine`,engine:Oe.value,locked:C(_e),onSelect:Ne},null,8,[`engine`,`locked`])):Y(``,!0),M.value===`chat`&&!ee.value?(J(),i(Pa,{key:1,class:`agent-copy`,messages:C(L),title:We.value,engine:C(ct)(Oe.value)},null,8,[`messages`,`title`,`engine`])):Y(``,!0),M.value===`chat`&&(ee.value||C(x)>=ro)?(J(),i(Ra,{key:2,class:`agent-silence`,"silent-ms":C(Ee),streaming:C(V)&&!C(ce)},null,8,[`silent-ms`,`streaming`])):Y(``,!0)]),S(`div`,Ua,[M.value===`chat`?(J(),w(`div`,Wa,[O.value&&k.value===`list`?(J(),w(`div`,Ga,[e(C(me),{class:`agent-conversations`,items:Be.value,"active-id":C(I),loading:C(F),labels:C(Ve),onSelect:dt,onNew:mt,onRename:C(ae),onDelete:C(ie)},null,8,[`items`,`active-id`,`loading`,`labels`,`onRename`,`onDelete`])])):(J(),w(j,{key:1},[O.value?(J(),w(`div`,Ka,[S(`button`,{type:`button`,class:`agent-page-back`,title:C(Z)(`@AGENT:返回会话列表`),"aria-label":C(Z)(`@AGENT:返回会话列表`),onClick:n[0]||=e=>k.value=`list`},[...n[2]||=[S(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[S(`line`,{x1:`19`,y1:`12`,x2:`5`,y2:`12`}),S(`polyline`,{points:`12 19 5 12 12 5`})],-1)]],8,qa),S(`span`,Ja,m(We.value),1)])):Y(``,!0),S(`div`,{class:`agent-chat-host`,ref_key:`chatHostRef`,ref:qe,style:Ge},[C(H)?(J(),w(`div`,Ya,[e(C(p),{class:`is-loading`,size:32},{default:B(()=>[e(C(a))]),_:1}),S(`span`,null,m(C(Z)(`@AGENT:加载会话中...`)),1)])):(J(),i(C(he),{key:1,ref_key:`chatContainerRef`,ref:st,messages:C(z),"preset-questions":nt.value,"welcome-title":C(Z)(`@AGENT:智能体助手`),"welcome-description":C(Z)(`@AGENT:我可以帮你阅读代码、执行命令、修改文件。选择下方话题或直接输入你的问题。`),"assistant-name":C(je),"assistant-avatar":C(He),theme:Le.value,generating:C(V),"allow-queue":!0,queued:C(be),"queue-paused":C($),"queue-labels":C(lt),"upload-config":{accept:C(ft)},"context-usage":C(ye),"git-branch":C(u).currentBranch||void 0,model:Re.value||void 0,placeholder:C(V)?C(Z)(`@AGENT:生成中,发送后会排队,等本轮跑完自动接上…`):C(Z)(`@AGENT:输入消息,Enter 发送`),question:C(ce),"question-submitting":C(le),"question-labels":C(at),"file-changes-labels":C(ot),"plan-config":{labels:{title:C(Z)(`@AGENT:计划`),raw:C(Z)(`@AGENT:原始参数`)}},"message-rail-config":C(ze),"message-meta-config":C(Me),onSend:rt,onSelect:it,onStop:C(Q),onUnqueue:C(we),onFlushQueued:C(Te),onAnswer:C(ue),onRetry:C(se)},null,8,`messages.preset-questions.welcome-title.welcome-description.assistant-name.assistant-avatar.theme.generating.queued.queue-paused.queue-labels.upload-config.context-usage.git-branch.model.placeholder.question.question-submitting.question-labels.file-changes-labels.plan-config.message-rail-config.message-meta-config.onStop.onUnqueue.onFlushQueued.onAnswer.onRetry`.split(`.`)))],512)],64)),Je.value?(J(),i(fe,{key:2,to:Je.value},[Qe.value?(J(),w(`div`,{key:0,class:`agent-context-att`,title:o.contextFilePath||``},[n[4]||=S(`svg`,{class:`agent-context-att-icon`,viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.7`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[S(`path`,{d:`M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z`}),S(`polyline`,{points:`14 3 14 8 19 8`})],-1),S(`span`,Za,m(o.contextFileName),1),S(`button`,{type:`button`,class:`agent-context-att-remove`,title:C(Z)(`@EDITOR:不引用当前文档`),"aria-label":C(Z)(`@EDITOR:不引用当前文档`),onClick:n[1]||=e=>Xe.value=!0},[...n[3]||=[S(`svg`,{viewBox:`0 0 24 24`,width:`10`,height:`10`,fill:`none`,stroke:`currentColor`,"stroke-width":`3`,"stroke-linecap":`round`,"aria-hidden":`true`},[S(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),S(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]],8,Qa)],8,Xa)):Y(``,!0)],8,[`to`])):Y(``,!0),S(`div`,$a,[ke.value?(J(),w(`p`,eo,m(C(Z)(`@WORKBENCH:当前引擎「{name}」只能对话,不能派发任务 —— 切到内置 g ai 才能派活`,{name:C(ct)(Oe.value)})),1)):(J(),w(j,{key:1},[S(`span`,to,m(C(Z)(`@WORKBENCH:派发执行器`)),1),e(Ye,{readonly:C(f),value:C(d),title:C(f)?C(Z)(`@AGENT:按派发优先级挑选({chain})`,{chain:v.value}):C(Z)(`@WORKBENCH:它派出去的任务由这个执行器跑(与执行按钮的临时切换共用)`)},null,8,[`readonly`,`value`,`title`]),S(`span`,no,m(C(f)?C(Z)(`@AGENT:按优先级挑,去「设置」里调整`):C(Z)(`@WORKBENCH:任务会落到看板,跑完有完成提示`)),1)],64))])])):M.value===`schedule`?(J(),i(oi,{key:1,onOpenSession:pt})):M.value===`skill`||M.value===`mcp`?(J(),i(er,{key:2,type:P.value},null,8,[`type`])):(J(),i(Vi,{key:3},{default:B(()=>[e(ma)]),_:1}))])])],512))}}),[[`__scopeId`,`data-v-f81d3ecb`]]);export{oo as default};
15
+ `)}\n`}f(),W(),t();var ka={class:`csb`},Aa=[`title`,`aria-label`],ja={key:0,viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},Ma={key:1,viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},Na=[`title`,`aria-label`],Pa=Q(g({__name:`CopySessionButton`,props:{messages:{},title:{},engine:{}},setup(t){let n=t,i=R(!1),a=null;T(()=>{a&&clearTimeout(a)});async function o(e){try{if(navigator?.clipboard?.writeText)return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,t.style.left=`-9999px`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch{return!1}}async function s(e){let t=Oa(n.messages||[],{title:n.title,engine:n.engine,assistantName:je},{scope:e});if(!t){z.warning(Z(`@AGENT:暂无会话内容可复制`));return}if(!await o(t)){z.error(Z(`@AGENT:复制失败`));return}i.value=!0,z.success(Z(`@AGENT:已复制会话`)),a&&clearTimeout(a),a=setTimeout(()=>{i.value=!1,a=null},1500)}function c(e){s(e===`full`?`full`:`brief`)}return(t,n)=>{let a=r,o=ue,l=x;return J(),w(`div`,ka,[S(`button`,{type:`button`,class:E([`csb__btn`,{"is-flash":i.value}]),title:C(Z)(`@AGENT:复制本会话的对话内容(默认精简:仅对话正文)`),"aria-label":C(Z)(`@AGENT:复制会话`),onClick:n[0]||=e=>s(`brief`)},[i.value?(J(),w(`svg`,ja,[...n[1]||=[S(`path`,{d:`M5 12l5 5l10-10`},null,-1)]])):(J(),w(`svg`,Ma,[...n[2]||=[S(`path`,{d:`M7 9.667a2.667 2.667 0 0 1 2.667-2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1-2.667 2.667h-8.666a2.667 2.667 0 0 1-2.667-2.667l0-8.666`},null,-1),S(`path`,{d:`M4.012 16.737a2.005 2.005 0 0 1-1.012-1.737v-10c0-1.1.9-2 2-2h10c.75 0 1.158.385 1.5 1`},null,-1)]]))],10,Aa),e(l,{trigger:`click`,placement:`bottom-end`,onCommand:c},{dropdown:B(()=>[e(o,null,{default:B(()=>[e(a,{command:`brief`},{default:B(()=>[H(m(C(Z)(`@AGENT:精简:对话正文`)),1)]),_:1}),e(a,{command:`full`},{default:B(()=>[H(m(C(Z)(`@AGENT:全量:对话正文 + 思考 + 工具调用`)),1)]),_:1})]),_:1})]),default:B(()=>[S(`button`,{type:`button`,class:`csb__btn csb__caret`,title:C(Z)(`@AGENT:选择复制范围`),"aria-label":C(Z)(`@AGENT:选择复制范围`)},[...n[3]||=[S(`svg`,{viewBox:`0 0 24 24`,width:`11`,height:`11`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[S(`path`,{d:`M6 9l6 6l6-6`})],-1)]],8,Na)]),_:1})])}}}),[[`__scopeId`,`data-v-225c8d2f`]]);f(),W(),t();var Fa=[`title`],Ia=1e4,La=6e4,Ra=Q(g({__name:`ChatSilenceBadge`,props:{silentMs:{default:null},streaming:{type:Boolean,default:!1}},setup(e){let t=e,n=X(()=>t.streaming&&t.silentMs!==null&&t.silentMs>=Ia),r=X(()=>(t.silentMs??0)>=La);return(t,i)=>n.value?(J(),w(`span`,{key:0,class:E([`chat-silence`,{"is-warn":r.value}]),title:C(Z)(`@AGENT:已经有一段时间没有收到模型的输出与工具调用了`)},[i[0]||=S(`span`,{class:`chat-silence__dot`,"aria-hidden":`true`},null,-1),H(` `+m(C(Z)(`@AGENT:静默 {elapsed}`,{elapsed:C(Ze)(e.silentMs)})),1)],10,Fa)):Y(``,!0)}}),[[`__scopeId`,`data-v-f6811a1b`]]);f(),W(),oe(),t();var za={class:`agent-chat-area`},Ba={class:`agent-tabs`,role:`tablist`},Va=[`aria-selected`,`title`,`aria-label`,`onClick`],Ha={key:0},Ua={class:`agent-tab-body`},Wa={key:0,class:`agent-chat-pane`},Ga={key:0,class:`agent-list-page`},Ka={key:0,class:`agent-page-bar`},qa=[`title`,`aria-label`],Ja={class:`agent-page-title`},Ya={key:0,class:`chat-loading`},Xa=[`title`],Za={class:`agent-context-att-name`},Qa=[`title`,`aria-label`],$a={class:`agent-dispatch-foot`},eo={key:0,class:`agent-dispatch-notice`},to={class:`agent-dispatch-label`},no={class:`agent-dispatch-hint`},ro=1100,io=640,ao=40,oo=Q(g({__name:`AgentView`,props:{contextFilePath:{},contextFileName:{},contextNote:{},forceNarrow:{type:Boolean},view:{}},setup(t,{expose:r}){let o=t,s=Se(),u=De(),{dispatchTarget:d,hasPriority:f,priority:h}=Ke(),v=X(()=>h.value.map(e=>xe(e)).join(` → `)),b=R(null),{width:x,narrow:D}=Lt(b),O=X(()=>o.forceNarrow===!0||D.value),ee=X(()=>x.value>0&&x.value<io),k=R(`chat`),M=R(`chat`),P=X(()=>M.value===`mcp`?`mcp`:`skill`),te=(...e)=>g({render:()=>_(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`},e.map(e=>_(`path`,{d:e})))}),ne=X(()=>[{id:`chat`,label:Z(`@AGENT:对话`),icon:te(`M12 11v.01`,`M8 11v.01`,`M16 11v.01`,`M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3h-5l-5 3v-3h-2a3 3 0 0 1-3-3v-8a3 3 0 0 1 3-3l12 0`)},{id:`schedule`,label:Z(`@AGENT:定时任务`),icon:te(`M5 13a7 7 0 1 0 14 0a7 7 0 0 0-14 0`,`M14.5 10.5l-2.5 2.5`,`M17 8l1-1`,`M14 3h-4`)},{id:`skill`,label:Z(`@AGENT:Skill 广场`),icon:te(`M6.331 8h11.339a2 2 0 0 1 1.977 2.304l-1.255 8.152a3 3 0 0 1-2.966 2.544h-6.852a3 3 0 0 1-2.965-2.544l-1.255-8.152a2 2 0 0 1 1.977-2.304`,`M9 11v-5a3 3 0 0 1 6 0v5`)},{id:`mcp`,label:Z(`@AGENT:MCP 广场`),icon:te(`M7 12l5 5l-1.5 1.5a3.536 3.536 0 1 1-5-5l1.5-1.5`,`M17 12l-5-5l1.5-1.5a3.536 3.536 0 1 1 5 5l-1.5 1.5`,`M3 21l2.5-2.5`,`M18.5 5.5l2.5-2.5`,`M10 11l-2 2`,`M13 14l-2 2`)},{id:`settings`,label:Z(`@AGENT:设置`),icon:te(`M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 0 0-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 0 0-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 0 0-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 0 0-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 0 0 1.066-2.573c-.94-1.543.826-3.31 2.37-2.37c1 .608 2.296.07 2.572-1.065`,`M9 12a3 3 0 1 0 6 0a3 3 0 0 0-6 0`)}]),{sessions:re,sessionsLoading:F,currentSessionId:I,messages:L,displayMessages:z,isStreaming:V,sessionLoading:H,loadSessions:U,loadSession:W,deleteSession:ie,renameSession:ae,newSession:oe,sendMessage:q,retryTurn:se,questionPanel:ce,answeringQuestion:le,answerQuestion:ue,isSessionGenerating:de,currentEngine:pe,pendingEngine:ge,isEngineLocked:_e,pickEngine:ve,stop:Q,inputContextUsage:ye,queuedMessages:be,queuePaused:$,removeQueuedMessage:we,flushQueued:Te,silentMs:Ee}=bt(),Oe=X(()=>_e.value?pe.value:ge.value),ke=X(()=>Oe.value!==`gai`);function Ne(e){_e.value||ve(e)}let Le=X(()=>{let e=s.theme;return e===`dark`||e===`auto`&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}),Re=X(()=>{let e=s.models.find(e=>e.isDefault);return e&&(e.name||e.model)||``}),Be=X(()=>Ue(re.value,de)),Ve=Ie(),We=X(()=>Be.value.find(e=>e.id===I.value)?.title||Z(`@AGENT:对话`)),Ge={"--welcome-avatar":`url("${He}")`},qe=R(null),Je=R(null),Xe=R(!1),Ze=null,Qe=X(()=>!!o.contextFileName&&!Xe.value);function $e(e){return Array.from(e.children).find(e=>e.classList?.contains(`acu-input-attachments`))??null}function et(){let e=qe.value?.querySelector(`.acu-input-wrap`);if(!e)return;let t=e.querySelector(`.agent-context-slot`);if(!Qe.value){if(!t)return;Je.value=null,n(()=>t.remove());return}let r=Je.value&&e.contains(Je.value)?Je.value:t;r||(r=document.createElement(`div`),r.className=`agent-context-slot`);let i=$e(e),a=i??e;r.parentElement!==a&&a.insertBefore(r,i?i.firstChild:e.firstChild),Je.value=r}function tt(){let e=qe.value;!e||typeof MutationObserver>`u`||(Ze?.disconnect(),Ze=new MutationObserver(()=>et()),Ze.observe(e,{childList:!0,subtree:!0}))}c(()=>{n(()=>{et(),tt()})}),T(()=>{Ze?.disconnect(),Ze=null,Je.value=null}),K(()=>o.contextFilePath,()=>{Xe.value=!1}),K(Qe,e=>{e&&n(et)});let nt=X(()=>Ce(s.agentPresetPrompts,o.view,s.agentPresetPromptsByView));async function rt(e){let t=Xe.value?void 0:o.contextFilePath||void 0,r=Xe.value?void 0:o.contextNote||void 0,i={...t?{openFilePath:t}:{},...r?{docNote:r}:{},...ke.value?{}:{allowDispatch:!0,dispatchExecutor:d.value,dispatchUseDefaultPrompt:!0}};await q(e.text,e.files,Object.keys(i).length?i:void 0),await n(),ut()}async function it(e){await q(e.prompt),await n(),ut()}let at=Pe(),ot=Fe(),st=R(null),lt=Ae();function ut(e=!0){st.value?.scrollToBottom(e)}K(()=>L.value.length,()=>{n(()=>ut(!1))});function dt(e){W(e),k.value=`chat`}function pt(e){e&&(M.value=`chat`,dt(e))}function mt(){oe(),k.value=`chat`}let ht=R(280),gt=R(!1),{convListCollapsed:_t,setConvListCollapsed:vt}=Vt();function yt(e){if(_t.value)return;gt.value=!0;let t=e.clientX,n=ht.value,r=e=>{let r=e.clientX-t,i=Math.max(200,Math.min(500,n+r));ht.value=i},i=()=>{gt.value=!1,document.removeEventListener(`mousemove`,r),document.removeEventListener(`mouseup`,i)};document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)}K(O,e=>{e||(k.value=`chat`)}),K(()=>[s.currentDirectory,V.value],async([e,t],n)=>{let r=!n||e!==n[0],i=!!n&&n[1]===!0&&!t;(r||i)&&await U(),r&&I.value&&!V.value&&!re.value.some(e=>e.sessionId===I.value)&&oe()},{immediate:!0});let xt=null;return c(()=>{xt=Ot(e=>{e.type===`task_finished`&&U().catch(()=>{})})}),T(()=>{xt?.(),xt=null}),r({async askQuestion(e,t){M.value=`chat`,k.value=`chat`,await q(e,[],t?{engine:`gai`,dirStatus:t.dirStatus,dirSummary:t.dirSummary}:void 0),await n(),ut()}}),(t,n)=>(J(),w(`div`,{ref_key:`rootRef`,ref:b,class:`agent-view`},[N(S(`aside`,{class:E([`agent-sidebar`,{"is-convs-collapsed":C(_t)}]),style:l({width:(C(_t)?ao:ht.value)+`px`})},[e(C(me),{class:`agent-conversations`,items:Be.value,"active-id":C(I),loading:C(F),labels:C(Ve),collapsible:``,collapsed:C(_t),"onUpdate:collapsed":C(vt),onSelect:dt,onNew:mt,onRename:C(ae),onDelete:C(ie)},null,8,[`items`,`active-id`,`loading`,`labels`,`collapsed`,`onUpdate:collapsed`,`onRename`,`onDelete`])],6),[[G,M.value===`chat`&&!O.value]]),N(S(`div`,{class:E([`sidebar-resizer`,{active:gt.value}]),onMousedown:yt},null,34),[[G,M.value===`chat`&&!O.value&&!C(_t)]]),S(`main`,za,[S(`nav`,Ba,[(J(!0),w(j,null,A(ne.value,t=>(J(),w(`button`,{key:t.id,type:`button`,class:E([`agent-tab`,{active:M.value===t.id}]),role:`tab`,"aria-selected":M.value===t.id,title:t.label,"aria-label":t.label,onClick:e=>M.value=t.id},[e(C(p),null,{default:B(()=>[(J(),i(y(t.icon)))]),_:2},1024),ee.value?Y(``,!0):(J(),w(`span`,Ha,m(t.label),1))],10,Va))),128)),M.value===`chat`?(J(),i(xa,{key:0,class:`agent-engine`,engine:Oe.value,locked:C(_e),onSelect:Ne},null,8,[`engine`,`locked`])):Y(``,!0),M.value===`chat`&&!ee.value?(J(),i(Pa,{key:1,class:`agent-copy`,messages:C(L),title:We.value,engine:C(ct)(Oe.value)},null,8,[`messages`,`title`,`engine`])):Y(``,!0),M.value===`chat`&&(ee.value||C(x)>=ro)?(J(),i(Ra,{key:2,class:`agent-silence`,"silent-ms":C(Ee),streaming:C(V)&&!C(ce)},null,8,[`silent-ms`,`streaming`])):Y(``,!0)]),S(`div`,Ua,[M.value===`chat`?(J(),w(`div`,Wa,[O.value&&k.value===`list`?(J(),w(`div`,Ga,[e(C(me),{class:`agent-conversations`,items:Be.value,"active-id":C(I),loading:C(F),labels:C(Ve),onSelect:dt,onNew:mt,onRename:C(ae),onDelete:C(ie)},null,8,[`items`,`active-id`,`loading`,`labels`,`onRename`,`onDelete`])])):(J(),w(j,{key:1},[O.value?(J(),w(`div`,Ka,[S(`button`,{type:`button`,class:`agent-page-back`,title:C(Z)(`@AGENT:返回会话列表`),"aria-label":C(Z)(`@AGENT:返回会话列表`),onClick:n[0]||=e=>k.value=`list`},[...n[2]||=[S(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[S(`line`,{x1:`19`,y1:`12`,x2:`5`,y2:`12`}),S(`polyline`,{points:`12 19 5 12 12 5`})],-1)]],8,qa),S(`span`,Ja,m(We.value),1)])):Y(``,!0),S(`div`,{class:`agent-chat-host`,ref_key:`chatHostRef`,ref:qe,style:Ge},[C(H)?(J(),w(`div`,Ya,[e(C(p),{class:`is-loading`,size:32},{default:B(()=>[e(C(a))]),_:1}),S(`span`,null,m(C(Z)(`@AGENT:加载会话中...`)),1)])):(J(),i(C(he),{key:1,ref_key:`chatContainerRef`,ref:st,messages:C(z),"preset-questions":nt.value,"welcome-title":C(Z)(`@AGENT:智能体助手`),"welcome-description":C(Z)(`@AGENT:我可以帮你阅读代码、执行命令、修改文件。选择下方话题或直接输入你的问题。`),"assistant-name":C(je),"assistant-avatar":C(He),theme:Le.value,generating:C(V),"allow-queue":!0,queued:C(be),"queue-paused":C($),"queue-labels":C(lt),"upload-config":{accept:C(ft)},"context-usage":C(ye),"git-branch":C(u).currentBranch||void 0,model:Re.value||void 0,placeholder:C(V)?C(Z)(`@AGENT:生成中,发送后会排队,等本轮跑完自动接上…`):C(Z)(`@AGENT:输入消息,Enter 发送`),question:C(ce),"question-submitting":C(le),"question-labels":C(at),"file-changes-labels":C(ot),"plan-config":{labels:{title:C(Z)(`@AGENT:计划`),raw:C(Z)(`@AGENT:原始参数`)}},"message-rail-config":C(ze),"message-meta-config":C(Me),onSend:rt,onSelect:it,onStop:C(Q),onUnqueue:C(we),onFlushQueued:C(Te),onAnswer:C(ue),onRetry:C(se)},null,8,`messages.preset-questions.welcome-title.welcome-description.assistant-name.assistant-avatar.theme.generating.queued.queue-paused.queue-labels.upload-config.context-usage.git-branch.model.placeholder.question.question-submitting.question-labels.file-changes-labels.plan-config.message-rail-config.message-meta-config.onStop.onUnqueue.onFlushQueued.onAnswer.onRetry`.split(`.`)))],512)],64)),Je.value?(J(),i(fe,{key:2,to:Je.value},[Qe.value?(J(),w(`div`,{key:0,class:`agent-context-att`,title:o.contextFilePath||``},[n[4]||=S(`svg`,{class:`agent-context-att-icon`,viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.7`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[S(`path`,{d:`M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z`}),S(`polyline`,{points:`14 3 14 8 19 8`})],-1),S(`span`,Za,m(o.contextFileName),1),S(`button`,{type:`button`,class:`agent-context-att-remove`,title:C(Z)(`@EDITOR:不引用当前文档`),"aria-label":C(Z)(`@EDITOR:不引用当前文档`),onClick:n[1]||=e=>Xe.value=!0},[...n[3]||=[S(`svg`,{viewBox:`0 0 24 24`,width:`10`,height:`10`,fill:`none`,stroke:`currentColor`,"stroke-width":`3`,"stroke-linecap":`round`,"aria-hidden":`true`},[S(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),S(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]],8,Qa)],8,Xa)):Y(``,!0)],8,[`to`])):Y(``,!0),S(`div`,$a,[ke.value?(J(),w(`p`,eo,m(C(Z)(`@WORKBENCH:当前引擎「{name}」只能对话,不能派发任务 —— 切到内置 g ai 才能派活`,{name:C(ct)(Oe.value)})),1)):(J(),w(j,{key:1},[S(`span`,to,m(C(Z)(`@WORKBENCH:派发执行器`)),1),e(Ye,{readonly:C(f),value:C(d),title:C(f)?C(Z)(`@AGENT:按派发优先级挑选({chain})`,{chain:v.value}):C(Z)(`@WORKBENCH:它派出去的任务由这个执行器跑(与执行按钮的临时切换共用)`)},null,8,[`readonly`,`value`,`title`]),S(`span`,no,m(C(f)?C(Z)(`@AGENT:按优先级挑,去「设置」里调整`):C(Z)(`@WORKBENCH:任务会落到看板,跑完有完成提示`)),1)],64))])])):M.value===`schedule`?(J(),i(oi,{key:1,onOpenSession:pt})):M.value===`skill`||M.value===`mcp`?(J(),i(er,{key:2,type:P.value},null,8,[`type`])):(J(),i(Vi,{key:3},{default:B(()=>[e(ma)]),_:1}))])])],512))}}),[[`__scopeId`,`data-v-f75acded`]]);export{oo as default};
@@ -1,2 +1,2 @@
1
1
  import"./rolldown-runtime-C0FnF6B9.js";import{An as e,Ar as t,Bn as n,Cn as r,Dt as i,Gn as a,In as o,J as s,Jr as c,Mn as l,Sn as u,Sr as d,Tn as f,Un as p,Ur as m,W as h,gr as g,i as _,ir as v,kn as y,lr as b,nr as x,nt as S,qn as C,r as w,tt as T,wn as E,xn as D,z as O}from"./element-plus-CkMnLwcU.js";import{n as k,t as A}from"./_plugin-vue_export-helper-DlU9e1mk.js";import{t as j}from"./CommonDialog-DTWEVQih.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(()=>{})})}o(),b(),t();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(l({__name:`UpgradeDialog`,props:{modelValue:{type:Boolean},logs:{},status:{},countdown:{default:0}},emits:[`update:modelValue`,`retry`,`restart`,`cancel`],setup(t,{emit:a}){let o=t,l=a,p=g(null);x(()=>o.logs,async()=>{await n(),p.value&&(p.value.scrollTop=p.value.scrollHeight)});function h(){o.status!==`running`&&(o.status===`success`&&o.countdown>0&&l(`cancel`),l(`update:modelValue`,!1))}function b(){l(`retry`)}function w(){l(`restart`)}function D(){l(`cancel`),l(`update:modelValue`,!1)}async function A(){try{await navigator.clipboard.writeText(U),_.success(k(`@F13B4:已复制升级命令`))}catch{_.warning(k(`@F13B4:复制失败,请手动复制`))}}return(n,a)=>{let o=s,g=O;return C(),r(j,{"model-value":t.modelValue,"onUpdate:modelValue":a[0]||=e=>l(`update:modelValue`,e),title:d(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:v(()=>[t.status===`failed`?(C(),r(g,{key:0,type:`primary`,onClick:b},{default:v(()=>[y(c(d(k)(`@F13B4:重试`)),1)]),_:1})):E(``,!0),t.status===`failed`?(C(),r(g,{key:1,onClick:A},{default:v(()=>[y(c(d(k)(`@F13B4:复制升级命令`)),1)]),_:1})):E(``,!0),t.status===`success`?(C(),r(g,{key:2,type:`primary`,onClick:w},{default:v(()=>[y(c(d(k)(`@F13B4:立即重启并刷新`)),1)]),_:1})):E(``,!0),t.status===`success`?(C(),r(g,{key:3,onClick:D},{default:v(()=>[y(c(d(k)(`@F13B4:稍后手动重启`)),1)]),_:1})):E(``,!0),t.status===`running`?(C(),r(g,{key:4,disabled:``},{default:v(()=>[y(c(d(k)(`@F13B4:升级中`))+`... `,1)]),_:1})):E(``,!0)]),default:v(()=>[u(`div`,{class:m([`upgrade-status`,`is-${t.status}`])},[t.status===`running`?(C(),r(o,{key:0,class:`is-loading`},{default:v(()=>[e(d(i))]),_:1})):t.status===`success`?(C(),r(o,{key:1,color:`var(--color-success)`},{default:v(()=>[e(d(T))]),_:1})):(C(),r(o,{key:2,color:`var(--color-danger)`},{default:v(()=>[e(d(S))]),_:1})),t.status===`running`?(C(),f(`span`,I,c(d(k)(`@F13B4:升级中`)),1)):t.status===`success`?(C(),f(`span`,L,c(d(k)(`@F13B4:升级完成`)),1)):(C(),f(`span`,R,c(d(k)(`@F13B4:升级失败`)),1))],2),t.status===`success`?(C(),f(`p`,z,[y(c(d(k)(`@F13B4:新版本已全局安装,需要重启服务才能生效`))+` `,1),t.countdown>0?(C(),f(`span`,B,c(d(k)(`@F13B4:{seconds} 秒后自动刷新`,{seconds:t.countdown})),1)):E(``,!0)])):E(``,!0),t.status===`failed`?(C(),f(`p`,V,[u(`span`,H,c(d(k)(`@F13B4:手动升级命令`)),1),u(`code`,{class:`upgrade-manual__cmd`},c(U))])):E(``,!0),u(`pre`,{ref_key:`logEl`,ref:p,class:`upgrade-log`},c(t.logs||d(k)(`@F13B4:等待日志输出`)),513)]),_:1},8,[`model-value`,`title`,`show-close`])}}}),[[`__scopeId`,`data-v-6de8caee`]]);o(),b(),t();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/tags`,Q=5,$=`app-version-check`,ee=36e5,te=A(l({__name:`AppVersionBadge`,setup(t){let n=`2.19.3`,r=g(n),i=D(()=>r.value||n),o=g(null),s=g(!1),l=g(``),m=g(`running`),y=g(0),b=null,x=g(!1);function S(){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 T(e){try{sessionStorage.setItem($,JSON.stringify({at:Date.now(),data:e}))}catch{}}async function O(e=!1){let t=S();t&&(o.value=t);try{let t=await N();o.value=t,T(t),t.current&&(r.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 w.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}l.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&&(r.value=o.value.latest),j()}}else e.message&&(l.value+=e.message)})}}function j(){M(),y.value=Q,b=setInterval(()=>{--y.value,y.value<=0&&(b&&=(clearInterval(b),null),L())},1e3)}function M(){b&&=(clearInterval(b),null),y.value=0}function I(){M()}async function L(){if(M(),!x.value){x.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})}),x.value=!1}}}return p(()=>{M()}),a(()=>{O(!0)}),(t,n)=>{let r=h;return C(),f(`div`,G,[e(r,{content:d(k)(`@F13B4:在 GitHub 上查看源码`),placement:`top`,effect:`dark`,"show-after":300},{default:v(()=>[u(`a`,{href:`https://github.com/xz333221/zen-gitsync`,target:`_blank`,rel:`noopener noreferrer`,class:`badge-icon-link`,"aria-label":d(k)(`@F13B4:在 GitHub 上查看源码`)},[...n[1]||=[u(`svg`,{viewBox:`0 0 24 24`,width:`15`,height:`15`,"aria-hidden":`true`,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`},[u(`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`]),e(r,{content:d(k)(`@F13B4:在 npm 上查看包`),placement:`top`,effect:`dark`,"show-after":300},{default:v(()=>[u(`a`,{href:`https://www.npmjs.com/package/zen-gitsync`,target:`_blank`,rel:`noopener noreferrer`,class:`badge-icon-link badge-icon-link--npm`,"aria-label":d(k)(`@F13B4:在 npm 上查看包`)},[...n[2]||=[u(`svg`,{viewBox:`0 0 24 24`,width:`15`,height:`15`,"aria-hidden":`true`,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`},[u(`path`,{d:`M2 2v20h20V2H2zm17.167 17.167H12.5v-10h-3.333v10H4.833V4.833h14.334v14.334z`})],-1)]],8,q)]),_:1},8,[`content`]),e(r,{content:d(k)(`@F13B4:查看更新`),placement:`top`,effect:`dark`,"show-after":300},{default:v(()=>[u(`a`,{href:Z,target:`_blank`,rel:`noopener noreferrer`,class:`version-link`},`v`+c(i.value),1)]),_:1},8,[`content`]),o.value?.hasUpdate?(C(),f(`button`,{key:0,type:`button`,class:`upgrade-btn`,title:d(k)(`@F13B4:发现新版本 {version},点击升级`,{version:o.value.latest??``}),"aria-label":d(k)(`@F13B4:发现新版本 {version},点击升级`,{version:o.value.latest??``}),onClick:A},[n[3]||=u(`span`,{class:`upgrade-btn__dot`,"aria-hidden":`true`},null,-1),u(`span`,Y,c(d(k)(`@F13B4:升级`)),1),u(`span`,X,`v`+c(o.value.latest),1)],8,J)):E(``,!0),e(W,{modelValue:s.value,"onUpdate:modelValue":n[0]||=e=>s.value=e,logs:l.value,status:m.value,countdown:y.value,onRetry:A,onRestart:L,onCancel:I},null,8,[`modelValue`,`logs`,`status`,`countdown`])])}}}),[[`__scopeId`,`data-v-db57a632`]]);export{te as default};
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(()=>{})})}o(),b(),t();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(l({__name:`UpgradeDialog`,props:{modelValue:{type:Boolean},logs:{},status:{},countdown:{default:0}},emits:[`update:modelValue`,`retry`,`restart`,`cancel`],setup(t,{emit:a}){let o=t,l=a,p=g(null);x(()=>o.logs,async()=>{await n(),p.value&&(p.value.scrollTop=p.value.scrollHeight)});function h(){o.status!==`running`&&(o.status===`success`&&o.countdown>0&&l(`cancel`),l(`update:modelValue`,!1))}function b(){l(`retry`)}function w(){l(`restart`)}function D(){l(`cancel`),l(`update:modelValue`,!1)}async function A(){try{await navigator.clipboard.writeText(U),_.success(k(`@F13B4:已复制升级命令`))}catch{_.warning(k(`@F13B4:复制失败,请手动复制`))}}return(n,a)=>{let o=s,g=O;return C(),r(j,{"model-value":t.modelValue,"onUpdate:modelValue":a[0]||=e=>l(`update:modelValue`,e),title:d(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:v(()=>[t.status===`failed`?(C(),r(g,{key:0,type:`primary`,onClick:b},{default:v(()=>[y(c(d(k)(`@F13B4:重试`)),1)]),_:1})):E(``,!0),t.status===`failed`?(C(),r(g,{key:1,onClick:A},{default:v(()=>[y(c(d(k)(`@F13B4:复制升级命令`)),1)]),_:1})):E(``,!0),t.status===`success`?(C(),r(g,{key:2,type:`primary`,onClick:w},{default:v(()=>[y(c(d(k)(`@F13B4:立即重启并刷新`)),1)]),_:1})):E(``,!0),t.status===`success`?(C(),r(g,{key:3,onClick:D},{default:v(()=>[y(c(d(k)(`@F13B4:稍后手动重启`)),1)]),_:1})):E(``,!0),t.status===`running`?(C(),r(g,{key:4,disabled:``},{default:v(()=>[y(c(d(k)(`@F13B4:升级中`))+`... `,1)]),_:1})):E(``,!0)]),default:v(()=>[u(`div`,{class:m([`upgrade-status`,`is-${t.status}`])},[t.status===`running`?(C(),r(o,{key:0,class:`is-loading`},{default:v(()=>[e(d(i))]),_:1})):t.status===`success`?(C(),r(o,{key:1,color:`var(--color-success)`},{default:v(()=>[e(d(T))]),_:1})):(C(),r(o,{key:2,color:`var(--color-danger)`},{default:v(()=>[e(d(S))]),_:1})),t.status===`running`?(C(),f(`span`,I,c(d(k)(`@F13B4:升级中`)),1)):t.status===`success`?(C(),f(`span`,L,c(d(k)(`@F13B4:升级完成`)),1)):(C(),f(`span`,R,c(d(k)(`@F13B4:升级失败`)),1))],2),t.status===`success`?(C(),f(`p`,z,[y(c(d(k)(`@F13B4:新版本已全局安装,需要重启服务才能生效`))+` `,1),t.countdown>0?(C(),f(`span`,B,c(d(k)(`@F13B4:{seconds} 秒后自动刷新`,{seconds:t.countdown})),1)):E(``,!0)])):E(``,!0),t.status===`failed`?(C(),f(`p`,V,[u(`span`,H,c(d(k)(`@F13B4:手动升级命令`)),1),u(`code`,{class:`upgrade-manual__cmd`},c(U))])):E(``,!0),u(`pre`,{ref_key:`logEl`,ref:p,class:`upgrade-log`},c(t.logs||d(k)(`@F13B4:等待日志输出`)),513)]),_:1},8,[`model-value`,`title`,`show-close`])}}}),[[`__scopeId`,`data-v-6de8caee`]]);o(),b(),t();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/tags`,Q=5,$=`app-version-check`,ee=36e5,te=A(l({__name:`AppVersionBadge`,setup(t){let n=`2.19.4`,r=g(n),i=D(()=>r.value||n),o=g(null),s=g(!1),l=g(``),m=g(`running`),y=g(0),b=null,x=g(!1);function S(){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 T(e){try{sessionStorage.setItem($,JSON.stringify({at:Date.now(),data:e}))}catch{}}async function O(e=!1){let t=S();t&&(o.value=t);try{let t=await N();o.value=t,T(t),t.current&&(r.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 w.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}l.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&&(r.value=o.value.latest),j()}}else e.message&&(l.value+=e.message)})}}function j(){M(),y.value=Q,b=setInterval(()=>{--y.value,y.value<=0&&(b&&=(clearInterval(b),null),L())},1e3)}function M(){b&&=(clearInterval(b),null),y.value=0}function I(){M()}async function L(){if(M(),!x.value){x.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})}),x.value=!1}}}return p(()=>{M()}),a(()=>{O(!0)}),(t,n)=>{let r=h;return C(),f(`div`,G,[e(r,{content:d(k)(`@F13B4:在 GitHub 上查看源码`),placement:`top`,effect:`dark`,"show-after":300},{default:v(()=>[u(`a`,{href:`https://github.com/xz333221/zen-gitsync`,target:`_blank`,rel:`noopener noreferrer`,class:`badge-icon-link`,"aria-label":d(k)(`@F13B4:在 GitHub 上查看源码`)},[...n[1]||=[u(`svg`,{viewBox:`0 0 24 24`,width:`15`,height:`15`,"aria-hidden":`true`,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`},[u(`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`]),e(r,{content:d(k)(`@F13B4:在 npm 上查看包`),placement:`top`,effect:`dark`,"show-after":300},{default:v(()=>[u(`a`,{href:`https://www.npmjs.com/package/zen-gitsync`,target:`_blank`,rel:`noopener noreferrer`,class:`badge-icon-link badge-icon-link--npm`,"aria-label":d(k)(`@F13B4:在 npm 上查看包`)},[...n[2]||=[u(`svg`,{viewBox:`0 0 24 24`,width:`15`,height:`15`,"aria-hidden":`true`,fill:`currentColor`,xmlns:`http://www.w3.org/2000/svg`},[u(`path`,{d:`M2 2v20h20V2H2zm17.167 17.167H12.5v-10h-3.333v10H4.833V4.833h14.334v14.334z`})],-1)]],8,q)]),_:1},8,[`content`]),e(r,{content:d(k)(`@F13B4:查看更新`),placement:`top`,effect:`dark`,"show-after":300},{default:v(()=>[u(`a`,{href:Z,target:`_blank`,rel:`noopener noreferrer`,class:`version-link`},`v`+c(i.value),1)]),_:1},8,[`content`]),o.value?.hasUpdate?(C(),f(`button`,{key:0,type:`button`,class:`upgrade-btn`,title:d(k)(`@F13B4:发现新版本 {version},点击升级`,{version:o.value.latest??``}),"aria-label":d(k)(`@F13B4:发现新版本 {version},点击升级`,{version:o.value.latest??``}),onClick:A},[n[3]||=u(`span`,{class:`upgrade-btn__dot`,"aria-hidden":`true`},null,-1),u(`span`,Y,c(d(k)(`@F13B4:升级`)),1),u(`span`,X,`v`+c(o.value.latest),1)],8,J)):E(``,!0),e(W,{modelValue:s.value,"onUpdate:modelValue":n[0]||=e=>s.value=e,logs:l.value,status:m.value,countdown:y.value,onRetry:A,onRestart:L,onCancel:I},null,8,[`modelValue`,`logs`,`status`,`countdown`])])}}}),[[`__scopeId`,`data-v-db57a632`]]);export{te as default};
@@ -1 +1 @@
1
- import"./rolldown-runtime-C0FnF6B9.js";import{An as e,Ar as t,Cn as n,F as r,Ft as i,G as a,I as ee,In as o,J as te,Jr as s,K as c,Mn as l,Sn as u,Sr as d,Tn as f,U as ne,Ur as p,Yn as m,_ as re,_n as h,et as g,gr as _,hn as ie,ir as v,jt as y,lr as b,on as x,qn as S,wn as C,xn as w}from"./element-plus-CkMnLwcU.js";import{n as T,t as E}from"./_plugin-vue_export-helper-DlU9e1mk.js";import{t as D}from"./CommonDialog-DTWEVQih.js";import{Ct as O,St as k}from"./index-Bz3MwUuu.js";o(),b(),t(),x();var A={key:0,class:`branch-info`},j={class:`branch-wrapper`},M={class:`branch-btn`},N={class:`branch-btn-name`},P={class:`branch-btn-caret`},F={class:`branch-popover-inner`},I={class:`branch-search`},L={class:`branch-list`},R=[`onClick`],z={key:1,class:`branch-item-check-placeholder`},B={class:`branch-item-name`},V={key:0,class:`branch-empty`},ae={class:`branch-popover-footer`},H={class:`create-branch-content`},U={class:`form-label`},W={class:`form-label`},G={class:`dialog-footer`},K={class:`footer-actions`},q=[`disabled`],J=E(l({__name:`BranchSelector`,emits:[`branchChanged`],setup(t,{emit:o}){let l=k(),b=o,x=_(!1),E=_(``),J=w(()=>{let e=E.value.trim().toLowerCase();return e?l.allBranches.filter(t=>t.toLowerCase().includes(e)):l.allBranches});async function oe(e){if(e===l.currentBranch){x.value=!1;return}x.value=!1,await l.changeBranch(e)&&(b(`branchChanged`),l.refreshLog())}let Y=_(!1),X=_(``),Z=_(``);function se(){x.value=!1,Z.value=l.currentBranch,Y.value=!0}async function Q(){await l.createBranch(X.value,Z.value)&&(Y.value=!1,X.value=``,b(`branchChanged`))}let $=_(!1);async function ce(){if(!$.value){$.value=!0;try{await Promise.all([l.getCurrentBranch(!0),l.getBranchStatus(!0),l.getAllBranches()]),b(`branchChanged`),l.refreshLog()}finally{$.value=!1}}}return(t,o)=>{let _=te,b=ne,w=re,k=c,le=r,ue=ee,de=a;return d(l).currentBranch?(S(),f(`div`,A,[u(`div`,j,[e(w,{visible:x.value,"onUpdate:visible":o[1]||=e=>x.value=e,placement:`top-start`,width:260,trigger:`click`,"popper-class":`branch-popover`,"show-arrow":!1,onShow:o[2]||=e=>E.value=``},{reference:v(()=>[u(`button`,M,[o[8]||=u(`svg`,{class:`branch-btn-icon`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[u(`path`,{d:`M5 18a2 2 0 1 0 4 0a2 2 0 1 0-4 0`}),u(`path`,{d:`M5 6a2 2 0 1 0 4 0a2 2 0 1 0-4 0`}),u(`path`,{d:`M15 6a2 2 0 1 0 4 0a2 2 0 1 0-4 0`}),u(`path`,{d:`M7 8l0 8`}),u(`path`,{d:`M9 18h6a2 2 0 0 0 2-2v-5`}),u(`path`,{d:`M14 14l3-3l3 3`})],-1),u(`span`,N,s(d(l).currentBranch),1),u(`span`,P,[e(_,null,{default:v(()=>[...o[7]||=[u(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[u(`path`,{d:`M6 9l6 6l6 -6`})],-1)]]),_:1})])])]),default:v(()=>[u(`div`,F,[u(`div`,I,[e(b,{modelValue:E.value,"onUpdate:modelValue":o[0]||=e=>E.value=e,placeholder:d(T)(`@F13B4:搜索或签出分支`),size:`small`,clearable:``,autofocus:``},null,8,[`modelValue`,`placeholder`])]),u(`div`,L,[(S(!0),f(h,null,m(J.value,t=>(S(),f(`div`,{key:t,class:p([`branch-item`,{"is-active":t===d(l).currentBranch}]),onClick:e=>oe(t)},[t===d(l).currentBranch?(S(),n(_,{key:0,class:`branch-item-check`},{default:v(()=>[e(d(g))]),_:1})):(S(),f(`span`,z)),o[9]||=u(`svg`,{class:`branch-item-icon`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[u(`path`,{d:`M5 18a2 2 0 1 0 4 0a2 2 0 1 0-4 0`}),u(`path`,{d:`M5 6a2 2 0 1 0 4 0a2 2 0 1 0-4 0`}),u(`path`,{d:`M15 6a2 2 0 1 0 4 0a2 2 0 1 0-4 0`}),u(`path`,{d:`M7 8l0 8`}),u(`path`,{d:`M9 18h6a2 2 0 0 0 2-2v-5`}),u(`path`,{d:`M14 14l3-3l3 3`})],-1),u(`span`,B,s(t),1)],10,R))),128)),J.value.length===0?(S(),f(`div`,V,s(d(T)(`@F13B4:没有匹配的分支`)),1)):C(``,!0)]),u(`div`,ae,[u(`button`,{class:`branch-create-btn`,onClick:se},[e(_,null,{default:v(()=>[e(d(i))]),_:1}),u(`span`,null,s(d(T)(`@F13B4:创建新分支`)),1)])])])]),_:1},8,[`visible`]),e(O,{size:`small`,tooltip:d(T)(`@CMDCON:刷新`),onClick:ce},{default:v(()=>[e(_,{class:p({"is-loading":$.value})},{default:v(()=>[...o[10]||=[u(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[u(`path`,{d:`M20 11a8.1 8.1 0 0 0-15.5-2m-.5-4v4h4`}),u(`path`,{d:`M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4`})],-1)]]),_:1},8,[`class`])]),_:1},8,[`tooltip`])]),e(D,{modelValue:Y.value,"onUpdate:modelValue":o[6]||=e=>Y.value=e,title:d(T)(`@F13B4:创建新分支`),size:`small`,"destroy-on-close":!0,"append-to-body":!0,"custom-class":`create-branch-dialog`},{footer:v(()=>[u(`div`,G,[u(`div`,K,[u(`button`,{type:`button`,class:`dialog-cancel-btn`,onClick:o[5]||=e=>Y.value=!1},s(d(T)(`@F13B4:取消`)),1),u(`button`,{type:`button`,class:`dialog-confirm-btn`,onClick:Q,disabled:d(l).isCreatingBranch},[d(l).isCreatingBranch?(S(),n(_,{key:1,class:`is-loading`},{default:v(()=>[...o[11]||=[u(`svg`,{viewBox:`0 0 1024 1024`,xmlns:`http://www.w3.org/2000/svg`},[u(`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})):(S(),n(_,{key:0},{default:v(()=>[e(d(g))]),_:1})),u(`span`,null,s(d(T)(`@F13B4:创建`)),1)],8,q)])])]),default:v(()=>[u(`div`,H,[e(de,{model:{newBranchName:X.value,selectedBaseBranch:Z.value},"label-position":`top`},{default:v(()=>[e(k,null,{label:v(()=>[u(`div`,U,[e(_,{class:`label-icon`},{default:v(()=>[e(d(i))]),_:1}),u(`span`,null,s(d(T)(`@F13B4:新分支名称`)),1)])]),default:v(()=>[e(b,{modelValue:X.value,"onUpdate:modelValue":o[3]||=e=>X.value=e,placeholder:d(T)(`@F13B4:请输入新分支名称`),class:`modern-input`,size:`large`,onKeyup:ie(Q,[`enter`])},null,8,[`modelValue`,`placeholder`])]),_:1}),e(k,null,{label:v(()=>[u(`div`,W,[e(_,{class:`label-icon`},{default:v(()=>[e(d(y))]),_:1}),u(`span`,null,s(d(T)(`@F13B4:基于分支`)),1)])]),default:v(()=>[e(ue,{modelValue:Z.value,"onUpdate:modelValue":o[4]||=e=>Z.value=e,placeholder:d(T)(`@F13B4:选择基础分支`),class:`modern-select`,size:`large`,style:{width:`100%`}},{default:v(()=>[(S(!0),f(h,null,m(d(l).allBranches,e=>(S(),n(le,{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1})]),_:1},8,[`model`])])]),_:1},8,[`modelValue`,`title`])])):C(``,!0)}}}),[[`__scopeId`,`data-v-8e3b4b01`]]);export{J as default};
1
+ import"./rolldown-runtime-C0FnF6B9.js";import{An as e,Ar as t,Cn as n,F as r,Ft as i,G as a,I as ee,In as o,J as te,Jr as s,K as c,Mn as l,Sn as u,Sr as d,Tn as f,U as ne,Ur as p,Yn as m,_ as re,_n as h,et as g,gr as _,hn as ie,ir as v,jt as y,lr as b,on as x,qn as S,wn as C,xn as w}from"./element-plus-CkMnLwcU.js";import{n as T,t as E}from"./_plugin-vue_export-helper-DlU9e1mk.js";import{t as D}from"./CommonDialog-DTWEVQih.js";import{Ct as O,St as k}from"./index-D6QfSjkU.js";o(),b(),t(),x();var A={key:0,class:`branch-info`},j={class:`branch-wrapper`},M={class:`branch-btn`},N={class:`branch-btn-name`},P={class:`branch-btn-caret`},F={class:`branch-popover-inner`},I={class:`branch-search`},L={class:`branch-list`},R=[`onClick`],z={key:1,class:`branch-item-check-placeholder`},B={class:`branch-item-name`},V={key:0,class:`branch-empty`},ae={class:`branch-popover-footer`},H={class:`create-branch-content`},U={class:`form-label`},W={class:`form-label`},G={class:`dialog-footer`},K={class:`footer-actions`},q=[`disabled`],J=E(l({__name:`BranchSelector`,emits:[`branchChanged`],setup(t,{emit:o}){let l=k(),b=o,x=_(!1),E=_(``),J=w(()=>{let e=E.value.trim().toLowerCase();return e?l.allBranches.filter(t=>t.toLowerCase().includes(e)):l.allBranches});async function oe(e){if(e===l.currentBranch){x.value=!1;return}x.value=!1,await l.changeBranch(e)&&(b(`branchChanged`),l.refreshLog())}let Y=_(!1),X=_(``),Z=_(``);function se(){x.value=!1,Z.value=l.currentBranch,Y.value=!0}async function Q(){await l.createBranch(X.value,Z.value)&&(Y.value=!1,X.value=``,b(`branchChanged`))}let $=_(!1);async function ce(){if(!$.value){$.value=!0;try{await Promise.all([l.getCurrentBranch(!0),l.getBranchStatus(!0),l.getAllBranches()]),b(`branchChanged`),l.refreshLog()}finally{$.value=!1}}}return(t,o)=>{let _=te,b=ne,w=re,k=c,le=r,ue=ee,de=a;return d(l).currentBranch?(S(),f(`div`,A,[u(`div`,j,[e(w,{visible:x.value,"onUpdate:visible":o[1]||=e=>x.value=e,placement:`top-start`,width:260,trigger:`click`,"popper-class":`branch-popover`,"show-arrow":!1,onShow:o[2]||=e=>E.value=``},{reference:v(()=>[u(`button`,M,[o[8]||=u(`svg`,{class:`branch-btn-icon`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[u(`path`,{d:`M5 18a2 2 0 1 0 4 0a2 2 0 1 0-4 0`}),u(`path`,{d:`M5 6a2 2 0 1 0 4 0a2 2 0 1 0-4 0`}),u(`path`,{d:`M15 6a2 2 0 1 0 4 0a2 2 0 1 0-4 0`}),u(`path`,{d:`M7 8l0 8`}),u(`path`,{d:`M9 18h6a2 2 0 0 0 2-2v-5`}),u(`path`,{d:`M14 14l3-3l3 3`})],-1),u(`span`,N,s(d(l).currentBranch),1),u(`span`,P,[e(_,null,{default:v(()=>[...o[7]||=[u(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[u(`path`,{d:`M6 9l6 6l6 -6`})],-1)]]),_:1})])])]),default:v(()=>[u(`div`,F,[u(`div`,I,[e(b,{modelValue:E.value,"onUpdate:modelValue":o[0]||=e=>E.value=e,placeholder:d(T)(`@F13B4:搜索或签出分支`),size:`small`,clearable:``,autofocus:``},null,8,[`modelValue`,`placeholder`])]),u(`div`,L,[(S(!0),f(h,null,m(J.value,t=>(S(),f(`div`,{key:t,class:p([`branch-item`,{"is-active":t===d(l).currentBranch}]),onClick:e=>oe(t)},[t===d(l).currentBranch?(S(),n(_,{key:0,class:`branch-item-check`},{default:v(()=>[e(d(g))]),_:1})):(S(),f(`span`,z)),o[9]||=u(`svg`,{class:`branch-item-icon`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[u(`path`,{d:`M5 18a2 2 0 1 0 4 0a2 2 0 1 0-4 0`}),u(`path`,{d:`M5 6a2 2 0 1 0 4 0a2 2 0 1 0-4 0`}),u(`path`,{d:`M15 6a2 2 0 1 0 4 0a2 2 0 1 0-4 0`}),u(`path`,{d:`M7 8l0 8`}),u(`path`,{d:`M9 18h6a2 2 0 0 0 2-2v-5`}),u(`path`,{d:`M14 14l3-3l3 3`})],-1),u(`span`,B,s(t),1)],10,R))),128)),J.value.length===0?(S(),f(`div`,V,s(d(T)(`@F13B4:没有匹配的分支`)),1)):C(``,!0)]),u(`div`,ae,[u(`button`,{class:`branch-create-btn`,onClick:se},[e(_,null,{default:v(()=>[e(d(i))]),_:1}),u(`span`,null,s(d(T)(`@F13B4:创建新分支`)),1)])])])]),_:1},8,[`visible`]),e(O,{size:`small`,tooltip:d(T)(`@CMDCON:刷新`),onClick:ce},{default:v(()=>[e(_,{class:p({"is-loading":$.value})},{default:v(()=>[...o[10]||=[u(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[u(`path`,{d:`M20 11a8.1 8.1 0 0 0-15.5-2m-.5-4v4h4`}),u(`path`,{d:`M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4`})],-1)]]),_:1},8,[`class`])]),_:1},8,[`tooltip`])]),e(D,{modelValue:Y.value,"onUpdate:modelValue":o[6]||=e=>Y.value=e,title:d(T)(`@F13B4:创建新分支`),size:`small`,"destroy-on-close":!0,"append-to-body":!0,"custom-class":`create-branch-dialog`},{footer:v(()=>[u(`div`,G,[u(`div`,K,[u(`button`,{type:`button`,class:`dialog-cancel-btn`,onClick:o[5]||=e=>Y.value=!1},s(d(T)(`@F13B4:取消`)),1),u(`button`,{type:`button`,class:`dialog-confirm-btn`,onClick:Q,disabled:d(l).isCreatingBranch},[d(l).isCreatingBranch?(S(),n(_,{key:1,class:`is-loading`},{default:v(()=>[...o[11]||=[u(`svg`,{viewBox:`0 0 1024 1024`,xmlns:`http://www.w3.org/2000/svg`},[u(`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})):(S(),n(_,{key:0},{default:v(()=>[e(d(g))]),_:1})),u(`span`,null,s(d(T)(`@F13B4:创建`)),1)],8,q)])])]),default:v(()=>[u(`div`,H,[e(de,{model:{newBranchName:X.value,selectedBaseBranch:Z.value},"label-position":`top`},{default:v(()=>[e(k,null,{label:v(()=>[u(`div`,U,[e(_,{class:`label-icon`},{default:v(()=>[e(d(i))]),_:1}),u(`span`,null,s(d(T)(`@F13B4:新分支名称`)),1)])]),default:v(()=>[e(b,{modelValue:X.value,"onUpdate:modelValue":o[3]||=e=>X.value=e,placeholder:d(T)(`@F13B4:请输入新分支名称`),class:`modern-input`,size:`large`,onKeyup:ie(Q,[`enter`])},null,8,[`modelValue`,`placeholder`])]),_:1}),e(k,null,{label:v(()=>[u(`div`,W,[e(_,{class:`label-icon`},{default:v(()=>[e(d(y))]),_:1}),u(`span`,null,s(d(T)(`@F13B4:基于分支`)),1)])]),default:v(()=>[e(ue,{modelValue:Z.value,"onUpdate:modelValue":o[4]||=e=>Z.value=e,placeholder:d(T)(`@F13B4:选择基础分支`),class:`modern-select`,size:`large`,style:{width:`100%`}},{default:v(()=>[(S(!0),f(h,null,m(d(l).allBranches,e=>(S(),n(le,{key:e,label:e,value:e},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1})]),_:1},8,[`model`])])]),_:1},8,[`modelValue`,`title`])])):C(``,!0)}}}),[[`__scopeId`,`data-v-8e3b4b01`]]);export{J as default};
@@ -1,2 +1,2 @@
1
- import"./rolldown-runtime-C0FnF6B9.js";import{An as e,Ar as t,Bn as n,C as r,Cn as i,Dt as a,F as o,Gn as s,Gr as c,I as l,In as u,J as d,Jr as f,Mn as p,S as m,Sn as h,Sr as g,Tn as _,U as v,Ur as y,V as b,W as x,Y as S,Yn as ee,_n as C,ar as te,gn as w,gr as T,i as E,in as D,ir as O,lr as k,mn as ne,mr as A,mt as j,nr as M,on as N,q as re,qn as P,w as ie,wn as F,xn as I,yn as L,z as R}from"./element-plus-CkMnLwcU.js";import{n as z,t as B}from"./_plugin-vue_export-helper-DlU9e1mk.js";import{t as V}from"./SvgIcon-DqzYKNo_.js";import{o as ae,t as oe}from"./configStore-BNFH8Gjg.js";import{C as H,Ct as se,S as U,St as ce,b as W,bt as G,it as le,l as ue,x as K}from"./index-Bz3MwUuu.js";u(),t(),N();var q={class:`loading-container`},de={class:`loading-text`},J={key:0,class:`loading-progress`},fe=p({__name:`GlobalLoading`,props:{visible:{type:Boolean,default:!1},text:{default:z(`@2AEBA:加载中...`)},showProgress:{type:Boolean,default:!1},progress:{default:0},mock:{type:Boolean,default:!1}},setup(t){return(n,r)=>(P(),i(L,{to:`body`},[e(D,{name:`loading-fade`},{default:O(()=>[t.visible||t.mock?(P(),_(`div`,{key:0,class:`global-loading-overlay`,onClick:r[0]||=w(()=>{},[`stop`])},[h(`div`,q,[r[1]||=h(`div`,{class:`loading-spinner`},[h(`div`,{class:`spinner-ring`}),h(`div`,{class:`spinner-ring`}),h(`div`,{class:`spinner-ring`})],-1),h(`div`,de,f(t.text),1),t.showProgress||t.mock?(P(),_(`div`,J,[h(`div`,{class:y([`progress-bar`,{"is-mock":t.mock&&!t.showProgress}]),style:c(t.showProgress?{width:t.progress+`%`}:void 0)},null,6)])):F(``,!0)])])):F(``,!0)]),_:1})]))}}),pe=B(fe,[[`__scopeId`,`data-v-f4fe1f34`]]);u(),t(),N();var Y={class:`success-container`},X={class:`success-text`},me={key:0,class:`success-description`},he=p({__name:`SuccessModal`,props:{visible:{type:Boolean,default:!1},text:{default:z(`@71545:操作成功!`)},description:{default:``}},setup(t){return(n,r)=>(P(),i(L,{to:`body`},[e(D,{name:`success-fade`},{default:O(()=>[t.visible?(P(),_(`div`,{key:0,class:`success-overlay`,onClick:r[0]||=w(()=>{},[`stop`])},[h(`div`,Y,[r[1]||=h(`div`,{class:`success-icon`},[h(`svg`,{viewBox:`0 0 52 52`,class:`success-svg`},[h(`circle`,{class:`success-circle`,cx:`26`,cy:`26`,r:`25`,fill:`none`}),h(`path`,{class:`success-check`,fill:`none`,d:`m14.1 27.2l7.1 7.2 16.7-16.8`})])],-1),h(`div`,X,f(t.text),1),t.description?(P(),_(`div`,me,f(t.description),1)):F(``,!0)])])):F(``,!0)]),_:1})]))}}),ge=B(he,[[`__scopeId`,`data-v-3e82b431`]]);k();var Z=A({visible:!1,text:z(`@F2A3A:加载中...`),showProgress:!1,progress:0});function _e(){return{loadingState:Z,show:e=>{Z.visible=!0,Z.text=e?.text||z(`@F2A3A:加载中...`),Z.showProgress=e?.showProgress||!1,Z.progress=e?.progress||0},hide:()=>{Z.visible=!1},updateProgress:e=>{Z.progress=Math.max(0,Math.min(100,e))},updateText:e=>{Z.text=e},setText:e=>{Z.visible&&(Z.text=e)}}}k();var Q=A({visible:!1,text:z(`@B8591:操作成功!`),description:``});function ve(){let e=e=>{Q.visible=!0,Q.text=e?.text||z(`@B8591:操作成功!`),Q.description=e?.description||``;let n=e?.duration||2e3;setTimeout(()=>{t()},n)},t=()=>{Q.visible=!1};return{successState:Q,show:e,hide:t}}u(),k(),t();var ye={class:`one-commit-content`},be={class:`one-commit-text`},xe={class:`one-commit-title`},$={key:0,class:`one-commit-desc`},Se=B(p({__name:`QuickCommitButton`,props:{from:{default:`form`},hasUserCommitMessage:{type:Boolean,default:!1},finalCommitMessage:{default:``},skipHooks:{type:Boolean,default:!1}},emits:[`beforeCommit`,`afterCommit`,`clearFields`],setup(t,{expose:n,emit:r}){let i=ce(),a=oe(),o=t,s=r,c=I(()=>i.fileList.some(e=>!G(e.path,a.lockedFiles))),l=I(()=>i.isSelectionMode&&i.selectedFiles.size>0&&i.selectedUnstagedPaths.length>0),u=I(()=>i.hasConflictedFiles?!0:i.isSelectionMode?!l.value||!o.hasUserCommitMessage:!c.value||!o.hasUserCommitMessage),p=I(()=>i.isAddingFiles||i.isCommiting),m=I(()=>i.hasConflictedFiles?z(`@2E184:存在冲突文件,请先解决冲突`):i.isSelectionMode?i.selectedFiles.size===0?z(`@2E184:请先勾选要提交的文件`):i.selectedUnstagedPaths.length===0?z(`@2E184:所选文件无需暂存或被锁定`):o.hasUserCommitMessage?z(`@2E184:一键完成:仅暂存所选文件 → 提交`):z(`@2E184:请输入提交信息`):c.value?o.hasUserCommitMessage?z(`@2E184:一键完成:暂存所有更改 → 提交`):z(`@2E184:请输入提交信息`):z(`@2E184:没有需要提交的更改`)),v=I(()=>i.isSelectionMode&&l.value?z(`@2E184:一键提交所选`):z(`@2E184:一键提交`)),b=I(()=>o.from===`form`?i.isSelectionMode&&l.value?z(`@2E184:暂存所选 + 提交`):z(`@2E184:暂存 + 提交`):``);async function S(){s(`beforeCommit`);try{let e=await i.stageSelectedAndCommit(o.finalCommitMessage,o.skipHooks);e&&s(`clearFields`),s(`afterCommit`,e)}catch(e){console.error(`一键提交失败:`,e),s(`afterCommit`,!1)}}return n({triggerQuickCommit:S,isDisabled:u,isLoading:p,buttonTitle:v,buttonDesc:b,tooltipText:m}),(n,r)=>{let i=d,a=R;return P(),_(`div`,null,[e(g(x),{content:m.value,placement:`top`,"show-after":200},{default:O(()=>[e(a,{type:`primary`,onClick:S,loading:p.value,disabled:u.value,class:y([t.from,`one-commit-button`])},{default:O(()=>[h(`div`,ye,[e(i,{class:`one-commit-icon`},{default:O(()=>[e(g(j))]),_:1}),h(`div`,be,[h(`span`,xe,f(v.value),1),t.from===`form`?(P(),_(`span`,$,f(b.value),1)):F(``,!0)])])]),_:1},8,[`loading`,`disabled`,`class`])]),_:1},8,[`content`])])}}}),[[`__scopeId`,`data-v-cfc8c3a9`]]);u(),k(),t();var Ce={class:`qa-wrap`},we=[`aria-label`,`title`],Te={class:`qa-trigger__text`},Ee={class:`qa-trigger__title`},De={class:`qa-trigger__desc`},Oe={key:1,class:`qa-trigger__caret`,viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},ke={class:`qa-item`},Ae={class:`qa-item__text`},je={class:`qa-item__title`},Me={class:`qa-item__desc`},Ne={class:`qa-item`},Pe={class:`qa-item__text`},Fe={class:`qa-item__title`},Ie={class:`qa-item__desc`},Le={class:`qa-engines`,"aria-hidden":`true`},Re=B(p({__name:`QuickActionsDropdown`,props:{hasUserCommitMessage:{type:Boolean,default:!1},finalCommitMessage:{default:``},skipHooks:{type:Boolean,default:!1},from:{default:`form`}},emits:[`afterCommit`,`afterPush`,`beforePush`,`pushStart`,`clearFields`],setup(t,{expose:n,emit:o}){let s=t,c=o,l=T(null),u=T(null),p=I(()=>l.value?.isDisabled??!0),v=I(()=>l.value?.isLoading??!1),b=I(()=>l.value?.buttonTitle??z(`@2E184:一键提交`)),x=I(()=>p.value?l.value?.tooltipText??``:l.value?.buttonDesc??``),S=I(()=>l.value?.tooltipText??``),ee=I(()=>u.value?.isDisabled??!0),C=I(()=>u.value?.isLoading??!1),te=I(()=>u.value?.buttonTitle??z(`@2E184:一键推送所有`)),w=I(()=>ee.value?u.value?.tooltipText??``:u.value?.buttonDesc??``),E=I(()=>u.value?.tooltipText??``),D=I(()=>v.value||C.value),k=I(()=>p.value&&ee.value),ne=I(()=>u.value?.buttonDesc||z(`@2E184:暂存 + 提交 + 推送`));function A(e){e===`commit`?l.value?.triggerQuickCommit():e===`push`&&u.value?.triggerQuickPush()}return n({triggerQuickPush:()=>u.value?.triggerQuickPush()}),(t,n)=>{let o=d,v=r,C=ie,T=m;return P(),_(`div`,Ce,[e(T,{trigger:`click`,placement:`bottom-start`,"popper-class":`qa-dropdown-popper`,onCommand:A},{dropdown:O(()=>[e(C,null,{default:O(()=>[e(v,{disabled:p.value,command:`commit`},{default:O(()=>[h(`div`,ke,[n[7]||=h(`svg`,{class:`qa-item__icon`,viewBox:`0 0 24 24`,width:`18`,height:`18`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[h(`path`,{d:`M9 12a3 3 0 1 0 6 0a3 3 0 1 0 -6 0`}),h(`path`,{d:`M12 3l0 6`}),h(`path`,{d:`M12 15l0 6`})],-1),h(`div`,Ae,[h(`span`,je,f(b.value),1),h(`span`,Me,f(x.value||S.value),1)])])]),_:1},8,[`disabled`]),e(v,{disabled:ee.value,command:`push`},{default:O(()=>[h(`div`,Ne,[n[8]||=h(`svg`,{class:`qa-item__icon`,viewBox:`0 0 24 24`,width:`18`,height:`18`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[h(`path`,{d:`M7 18a4.6 4.4 0 0 1 0 -9a5 4.5 0 0 1 11 2h1a3.5 3.5 0 0 1 0 7h-1`}),h(`path`,{d:`M9 15l3 -3l3 3`}),h(`path`,{d:`M12 12l0 9`})],-1),h(`div`,Pe,[h(`span`,Fe,f(te.value),1),h(`span`,Ie,f(w.value||E.value),1)])])]),_:1},8,[`disabled`])]),_:1})]),default:O(()=>[h(`div`,{class:y([`qa-trigger`,{"is-quiet":k.value,"is-busy":D.value}]),role:`button`,tabindex:`0`,"aria-label":g(z)(`@2E184:提交并推送`),title:E.value},[h(`div`,Te,[h(`span`,Ee,f(g(z)(`@2E184:提交并推送`)),1),h(`span`,De,f(ne.value),1)]),D.value?(P(),i(o,{key:0,class:`is-loading qa-trigger__caret`},{default:O(()=>[e(g(a))]),_:1})):(P(),_(`svg`,Oe,[...n[6]||=[h(`path`,{d:`M6 9l6 6l6 -6`},null,-1)]]))],10,we)]),_:1}),h(`div`,Le,[e(Se,{ref_key:`quickCommitRef`,ref:l,from:s.from,"has-user-commit-message":s.hasUserCommitMessage,"final-commit-message":s.finalCommitMessage,"skip-hooks":s.skipHooks,onAfterCommit:n[0]||=e=>c(`afterCommit`,e),onClearFields:n[1]||=()=>c(`clearFields`)},null,8,[`from`,`has-user-commit-message`,`final-commit-message`,`skip-hooks`]),e(W,{ref_key:`quickPushRef`,ref:u,from:s.from,"has-user-commit-message":s.hasUserCommitMessage,"final-commit-message":s.finalCommitMessage,"skip-hooks":s.skipHooks,onBeforePush:n[2]||=()=>c(`beforePush`),onPushStart:n[3]||=()=>c(`pushStart`),onAfterPush:n[4]||=e=>c(`afterPush`,e),onClearFields:n[5]||=()=>c(`clearFields`)},null,8,[`from`,`has-user-commit-message`,`final-commit-message`,`skip-hooks`])])])}}}),[[`__scopeId`,`data-v-74ff0650`]]);u(),t(),k();var ze={class:`one-ai-push`},Be={class:`one-ai-push-content`},Ve={class:`one-ai-push-text`},He={class:`one-ai-push-title`},Ue={key:0,class:`one-ai-push-desc`},We=B(p({__name:`AiQuickPushButton`,props:{from:{default:`form`},generating:{type:Boolean,default:!1}},emits:[`trigger`],setup(t,{emit:n}){let r=ce(),i=oe(),a=t,o=n,s=I(()=>r.fileList.some(e=>!G(e.path,i.lockedFiles))),c=I(()=>r.isSelectionMode&&r.selectedFiles.size>0&&r.selectedUnstagedPaths.length>0),l=I(()=>!r.isSelectionMode&&!s.value&&r.branchAhead>0),u=I(()=>r.hasConflictedFiles||!r.hasUpstream?!0:r.isSelectionMode?!c.value:!s.value&&r.branchAhead===0),d=I(()=>a.generating||r.isAddingFiles||r.isCommiting||r.isPushing),p=I(()=>r.hasConflictedFiles?z(`@2E184:存在冲突文件,请先解决冲突`):r.hasUpstream?a.generating?z(`@2E184:AI 正在生成提交信息…`):r.isSelectionMode?c.value?z(`@2E184:一键完成:AI 生成提交信息 → 仅暂存所选文件 → 提交 → 推送`):z(`@2E184:请先勾选要推送的文件`):!s.value&&r.branchAhead===0?z(`@2E184:没有需要提交或推送的更改`):s.value?z(`@2E184:一键完成:AI 生成提交信息 → 暂存所有更改 → 提交 → 推送`):z(`@2E184:本地已提交,AI 将直接推送到远程仓库`):z(`@2E184:当前分支没有上游分支`)),m=I(()=>a.generating?z(`@2E184:AI 正在生成提交信息…`):r.isSelectionMode&&c.value?z(`@2E184:AI 提交并推送所选`):z(`@2E184:AI 提交并推送`)),v=I(()=>a.from!==`form`||a.generating?``:l.value?z(`@2E184:本地已提交,直接推送`):z(`@2E184:AI 生成信息 + 推送`));function b(){u.value||d.value||o(`trigger`)}return(n,r)=>{let i=R;return P(),_(`div`,ze,[e(g(x),{content:p.value,placement:`top`,"show-after":200},{default:O(()=>[e(i,{type:`primary`,onClick:b,loading:d.value,disabled:u.value,class:y([t.from,`one-ai-push-button`])},{default:O(()=>[h(`div`,Be,[e(V,{class:`one-ai-push-icon`,"icon-class":`message-chatbot`}),h(`div`,Ve,[h(`span`,He,f(m.value),1),t.from===`form`?(P(),_(`span`,Ue,f(v.value),1)):F(``,!0)])])]),_:1},8,[`loading`,`disabled`,`class`])]),_:1},8,[`content`])])}}}),[[`__scopeId`,`data-v-2c3e6bc2`]]);u(),k();var Ge={class:`form-bottom-actions`},Ke={class:`actions-flex-container`},qe={class:`left-actions`},Je={class:`button-grid`},Ye={class:`right-actions`},Xe=B(p({__name:`GitActionButtons`,props:{hasUserCommitMessage:{type:Boolean,default:!1},finalCommitMessage:{default:``},skipHooks:{type:Boolean,default:!1},from:{default:`form`},aiGenerating:{type:Boolean,default:!1}},emits:[`afterCommit`,`afterPush`,`beforePush`,`pushStart`,`clearFields`,`aiQuickPush`],setup(t,{expose:n,emit:r}){let i=r,a=T(null);function o(e){i(`afterCommit`,e)}function s(e){i(`afterPush`,e)}function c(){i(`beforePush`)}function l(){i(`pushStart`)}function u(){i(`clearFields`)}function d(){i(`aiQuickPush`)}async function f(){return a.value?.triggerQuickPush()}return n({triggerQuickPush:f}),(n,r)=>(P(),_(`div`,Ge,[h(`div`,Ke,[h(`div`,qe,[h(`div`,Je,[e(H,{onClick:()=>{},from:t.from},null,8,[`from`]),e(U,{"has-user-commit-message":t.hasUserCommitMessage,"final-commit-message":t.finalCommitMessage,"skip-hooks":t.skipHooks,onBeforeCommit:()=>{},onAfterCommit:o,onClick:()=>{},from:t.from},null,8,[`has-user-commit-message`,`final-commit-message`,`skip-hooks`,`from`]),e(K,{onBeforePush:()=>{},onAfterPush:s,onClick:()=>{},from:t.from},null,8,[`from`])])]),h(`div`,Ye,[e(Re,{ref_key:`quickActionsRef`,ref:a,from:t.from,"has-user-commit-message":t.hasUserCommitMessage,"final-commit-message":t.finalCommitMessage,"skip-hooks":t.skipHooks,onAfterCommit:o,onAfterPush:s,onBeforePush:c,onPushStart:l,onClearFields:u},null,8,[`from`,`has-user-commit-message`,`final-commit-message`,`skip-hooks`]),e(We,{from:t.from,generating:t.aiGenerating,onTrigger:d},null,8,[`from`,`generating`])])])]))}}),[[`__scopeId`,`data-v-c8e88c71`]]);u(),k(),t(),N();var Ze={class:`card-header app-card-header`},Qe={class:`header-left`},$e={class:`card-content app-card-content`},et={class:`layout-container`},tt={key:0,class:`git-config-warning`},nt={key:0,class:`merge-in-progress-banner`},rt={class:`commit-section`},it={key:0,class:`commit-form`},at={class:`description-container`},ot={key:1,class:`standard-commit-form`},st={class:`standard-commit-header`},ct={class:`type-scope-container`},lt={class:`scope-wrapper`},ut={class:`description-container description-inline`},dt=[`aria-expanded`],ft={class:`advanced-fields`},pt={key:0,class:`status-updating-indicator`},mt={key:0,class:`status-updating-indicator`},ht=B(p({__name:`CommitForm`,setup(t){let r=T(!1),c=T(!1);async function u(){let e=x.isSelectionMode&&x.selectedFiles.size>0?[...x.selectedFiles]:[],t=ae(),n=await(await fetch(`/api/config/generate-commit-message`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({selectedPaths:e,locale:t.currentLocale})})).json();if(!n.success){let e=n.code,t=n.error||z(`@76872:AI生成失败`),r=e?{TIMEOUT:`@76872:AI生成超时,请重试或检查模型响应速度`,NO_MODEL:`@76872:未配置AI模型,请先在通用设置中添加模型`,NO_JSON:`@76872:AI未返回有效结果,请重试`,PARSE_FAILED:`@76872:AI返回格式无法解析,请重试`,GENERATE_FAILED:`@76872:AI生成失败`,HTTP_ERR:`@76872:AI生成失败`}[e]:null;return E.error(r?z(r):t),!1}let r=[`feat`,`fix`,`docs`,`style`,`refactor`,`test`,`chore`];if(V.value)n.type&&r.includes(n.type)&&(H.value=n.type),n.scope!==void 0&&(U.value=n.scope),n.description&&(W.value=n.description);else{let e=n.type&&n.description?n.scope?`${n.type}(${n.scope}): ${n.description}`:`${n.type}: ${n.description}`:n.description||``;e&&(k.value=e)}return!0}async function p(){if(!r.value){r.value=!0;try{if(!await u())return;E.success(z(`@76872:AI已生成提交信息`))}catch(e){E.error(`${z(`@76872:AI生成失败`)}: ${e.message}`)}finally{r.value=!1}}}async function m(){if(!c.value){c.value=!0;try{let e=x.isSelectionMode&&x.selectedFiles.size>0,t=x.fileList.some(e=>!G(e.path,w.lockedFiles));if(e||t){if(!await u())return;if(await n(),!$.value){E.error(z(`@76872:AI生成失败`));return}}await Z.value?.triggerQuickPush?.()}catch(e){console.error(`AI 提交并推送失败:`,e),E.error(`${z(`@76872:AI生成失败`)}: ${e.message}`)}finally{c.value=!1}}}let x=ce(),w=oe(),k=T(``),{loadingState:A,show:j,hide:N,setText:ie}=_e(),{successState:L}=ve(),R=T(!1),B=T(``),V=I({get:()=>w.isStandardCommit,set:e=>{w.isStandardCommit=e}}),H=T(`feat`),U=T(``),W=T(``),K=T(``),q=T(``),de=T([]),J=T(!1),fe=T([]),Y=T(!1),X=T(!1),me=I({get:()=>w.skipHooks,set:e=>{w.skipHooks=e}}),he=I({get:()=>w.autoQuickPushOnEnter,set:e=>{w.autoQuickPushOnEnter=e}}),Z=T(null),Q=T(!1),ye=I(()=>[{value:`feat`,label:`feat: ${z(`@76872:新功能`)}`},{value:`fix`,label:`fix: ${z(`@76872:修复bug`)}`},{value:`docs`,label:`docs: ${z(`@76872:文档修改`)}`},{value:`style`,label:`style: ${z(`@76872:样式修改`)}`},{value:`refactor`,label:`refactor: ${z(`@76872:代码重构`)}`},{value:`test`,label:`test: ${z(`@76872:测试代码`)}`},{value:`chore`,label:`chore: ${z(`@76872:构建/工具修改`)}`}]),be=T([]),xe=I(()=>{if(!V.value)return k.value||B.value;let e=`${H.value||``}`;return U.value&&(e+=`(${U.value})`),e+=`: ${W.value}`,K.value&&(e+=`\n\n${K.value}`),q.value&&(e+=`\n\n${q.value}`),e}),$=I(()=>V.value?(x.isMergeInProgress||(H.value||``).trim()!==``)&&(W.value||``).trim()!==``:k.value.trim()!==``),Se=I(()=>x.hasConflictedFiles?!0:x.isMergeInProgress?!$.value:!x.fileList.some(e=>!G(e.path,w.lockedFiles))||!$.value),Ce=I(()=>{let e=`${z(`@76872:输入提交信息 (默认: `)}${B.value})`;return he.value?`${e}${z(`@76872:(按回车一键推送)`)}`:e}),we=I(()=>{let e=z(`@76872:简短描述(必填)`);return he.value?z(`@76872:简短描述(必填,按回车一键推送)`):e}),Te=I(()=>{let e=`git commit -m "${xe.value}"`;return me.value&&(e+=` --no-verify`),e});function Ee(){let e=w.config;e&&(B.value=e.defaultCommitMessage||``,e.descriptionTemplates&&Array.isArray(e.descriptionTemplates)&&(de.value=e.descriptionTemplates),e.scopeTemplates&&Array.isArray(e.scopeTemplates)&&(fe.value=e.scopeTemplates),e.messageTemplates&&Array.isArray(e.messageTemplates)&&(be.value=e.messageTemplates))}function De(e){W.value=e,J.value=!1}function Oe(e){U.value=e,Y.value=!1}function ke(){J.value=!0}function Ae(){Y.value=!0}function je(){k.value=``,W.value=``,K.value=``,q.value=``,H.value=`feat`,w.autoSetDefaultMessage&&w.defaultCommitMessage&&(V.value?W.value=w.defaultCommitMessage:k.value=w.defaultCommitMessage)}function Me(){j({text:z(`@76872:正在暂存文件…`),showProgress:!1})}function Ne(){N()}function Pe(e){if(N(),e){R.value=!0;try{setTimeout(async()=>{try{console.log(z(`@76872:推送成功,状态已更新`))}catch(e){console.error(`一键推送后处理失败:`,e)}finally{R.value=!1}},1e3)}catch(e){console.error(`一键推送后处理失败:`,e),R.value=!1}}}function Fe(e){k.value=e,X.value=!1}async function Ie(e){if(!he.value||!$.value)return;let t=x.fileList.some(e=>!G(e.path,w.lockedFiles)),n=x.hasConflictedFiles;if(t&&$.value&&x.hasUpstream&&!n&&e.key===`Enter`&&!e.shiftKey){e.preventDefault();try{await Z.value?.triggerQuickPush()}catch(e){console.error(`回车自动一键提交失败:`,e)}}}async function Le(e){try{await w.saveDefaultMessage(e)&&E.success(z(`@76872:默认提交信息设置成功`))}catch(e){E.error(`${z(`@76872:设置默认提交信息失败: `)}${e.message}`)}}M(()=>x.pendingMergeMessage,e=>{e&&(V.value?(H.value=``,W.value=e):k.value=e,x.pendingMergeMessage=``,E.info(z(`@76872:已自动填充合并提交信息`)))}),M(()=>x.isAddingFiles,e=>{e&&A.visible&&ie(z(`@76872:正在暂存文件…`))}),M(()=>x.isCommiting,e=>{e&&A.visible&&ie(z(`@76872:正在提交更改...`))}),M(()=>x.isPushing,e=>{e&&A.visible&&N()}),s(async()=>{M(()=>w.config,Ee,{immediate:!0}),w.config||await w.loadConfig(),w.autoSetDefaultMessage&&w.defaultCommitMessage&&(V.value?W.value||=w.defaultCommitMessage:k.value||=w.defaultCommitMessage),x.pendingMergeMessage&&(V.value?(H.value=``,W.value=x.pendingMergeMessage):k.value=x.pendingMergeMessage,x.pendingMergeMessage=``,E.info(z(`@76872:已自动填充合并提交信息`)))});function Re(e,t){t([...e?de.value.filter(t=>t.toLowerCase().includes(e.toLowerCase())).map(e=>({value:e})):de.value.map(e=>({value:e})),{value:`⚙️ 管理模板…`,isSettings:!0}])}function ze(e,t){t([...e?fe.value.filter(t=>t.toLowerCase().includes(e.toLowerCase())).map(e=>({value:e})):fe.value.map(e=>({value:e})),{value:`⚙️ 管理模板…`,isSettings:!0}])}function Be(e){e.isSettings?(ke(),W.value=``):W.value=e.value}function Ve(e){e.isSettings?(Ae(),U.value=``):U.value=e.value}function He(e,t){t([...e?be.value.filter(t=>t.toLowerCase().includes(e.toLowerCase())).map(e=>({value:e})):be.value.map(e=>({value:e})),{value:`⚙️ 管理模板…`,isSettings:!0}])}function Ue(e){e.isSettings?(X.value=!0,k.value=``):k.value=e.value}return(t,n)=>{let s=re,u=b,w=d,T=o,E=l,j=v;return P(),_(C,null,[h(`div`,{class:y([`card app-card`,{"is-pushing":g(x).isPushing}])},[h(`div`,Ze,[h(`div`,Qe,[g(x).userName!==``&&g(x).userEmail!==``?(P(),i(Xe,{key:0,ref_key:`gitActionButtonsRef`,ref:Z,"has-user-commit-message":$.value,"final-commit-message":xe.value,"skip-hooks":me.value,"ai-generating":c.value,onAfterCommit:n[0]||=e=>{e&&je()},onAfterPush:Pe,onBeforePush:Me,onPushStart:Ne,onClearFields:je,onAiQuickPush:m},null,8,[`has-user-commit-message`,`final-commit-message`,`skip-hooks`,`ai-generating`])):F(``,!0)])]),h(`div`,$e,[h(`div`,et,[g(x).userName===``||g(x).userEmail===``?(P(),_(`div`,tt,[e(s,{title:g(z)(`@76872:Git用户信息未配置`),type:`warning`,closable:!1,"show-icon":``},{default:O(()=>[h(`p`,null,f(g(z)(`@76872:您需要配置Git用户名和邮箱才能提交代码。请使用以下命令配置:`)),1),n[11]||=h(`pre`,{class:`config-command`},`git config --global user.name "Your Name"
1
+ import"./rolldown-runtime-C0FnF6B9.js";import{An as e,Ar as t,Bn as n,C as r,Cn as i,Dt as a,F as o,Gn as s,Gr as c,I as l,In as u,J as d,Jr as f,Mn as p,S as m,Sn as h,Sr as g,Tn as _,U as v,Ur as y,V as b,W as x,Y as S,Yn as ee,_n as C,ar as te,gn as w,gr as T,i as E,in as D,ir as O,lr as k,mn as ne,mr as A,mt as j,nr as M,on as N,q as re,qn as P,w as ie,wn as F,xn as I,yn as L,z as R}from"./element-plus-CkMnLwcU.js";import{n as z,t as B}from"./_plugin-vue_export-helper-DlU9e1mk.js";import{t as V}from"./SvgIcon-DqzYKNo_.js";import{o as ae,t as oe}from"./configStore-BNFH8Gjg.js";import{C as H,Ct as se,S as U,St as ce,b as W,bt as G,it as le,l as ue,x as K}from"./index-D6QfSjkU.js";u(),t(),N();var q={class:`loading-container`},de={class:`loading-text`},J={key:0,class:`loading-progress`},fe=p({__name:`GlobalLoading`,props:{visible:{type:Boolean,default:!1},text:{default:z(`@2AEBA:加载中...`)},showProgress:{type:Boolean,default:!1},progress:{default:0},mock:{type:Boolean,default:!1}},setup(t){return(n,r)=>(P(),i(L,{to:`body`},[e(D,{name:`loading-fade`},{default:O(()=>[t.visible||t.mock?(P(),_(`div`,{key:0,class:`global-loading-overlay`,onClick:r[0]||=w(()=>{},[`stop`])},[h(`div`,q,[r[1]||=h(`div`,{class:`loading-spinner`},[h(`div`,{class:`spinner-ring`}),h(`div`,{class:`spinner-ring`}),h(`div`,{class:`spinner-ring`})],-1),h(`div`,de,f(t.text),1),t.showProgress||t.mock?(P(),_(`div`,J,[h(`div`,{class:y([`progress-bar`,{"is-mock":t.mock&&!t.showProgress}]),style:c(t.showProgress?{width:t.progress+`%`}:void 0)},null,6)])):F(``,!0)])])):F(``,!0)]),_:1})]))}}),pe=B(fe,[[`__scopeId`,`data-v-f4fe1f34`]]);u(),t(),N();var Y={class:`success-container`},X={class:`success-text`},me={key:0,class:`success-description`},he=p({__name:`SuccessModal`,props:{visible:{type:Boolean,default:!1},text:{default:z(`@71545:操作成功!`)},description:{default:``}},setup(t){return(n,r)=>(P(),i(L,{to:`body`},[e(D,{name:`success-fade`},{default:O(()=>[t.visible?(P(),_(`div`,{key:0,class:`success-overlay`,onClick:r[0]||=w(()=>{},[`stop`])},[h(`div`,Y,[r[1]||=h(`div`,{class:`success-icon`},[h(`svg`,{viewBox:`0 0 52 52`,class:`success-svg`},[h(`circle`,{class:`success-circle`,cx:`26`,cy:`26`,r:`25`,fill:`none`}),h(`path`,{class:`success-check`,fill:`none`,d:`m14.1 27.2l7.1 7.2 16.7-16.8`})])],-1),h(`div`,X,f(t.text),1),t.description?(P(),_(`div`,me,f(t.description),1)):F(``,!0)])])):F(``,!0)]),_:1})]))}}),ge=B(he,[[`__scopeId`,`data-v-3e82b431`]]);k();var Z=A({visible:!1,text:z(`@F2A3A:加载中...`),showProgress:!1,progress:0});function _e(){return{loadingState:Z,show:e=>{Z.visible=!0,Z.text=e?.text||z(`@F2A3A:加载中...`),Z.showProgress=e?.showProgress||!1,Z.progress=e?.progress||0},hide:()=>{Z.visible=!1},updateProgress:e=>{Z.progress=Math.max(0,Math.min(100,e))},updateText:e=>{Z.text=e},setText:e=>{Z.visible&&(Z.text=e)}}}k();var Q=A({visible:!1,text:z(`@B8591:操作成功!`),description:``});function ve(){let e=e=>{Q.visible=!0,Q.text=e?.text||z(`@B8591:操作成功!`),Q.description=e?.description||``;let n=e?.duration||2e3;setTimeout(()=>{t()},n)},t=()=>{Q.visible=!1};return{successState:Q,show:e,hide:t}}u(),k(),t();var ye={class:`one-commit-content`},be={class:`one-commit-text`},xe={class:`one-commit-title`},$={key:0,class:`one-commit-desc`},Se=B(p({__name:`QuickCommitButton`,props:{from:{default:`form`},hasUserCommitMessage:{type:Boolean,default:!1},finalCommitMessage:{default:``},skipHooks:{type:Boolean,default:!1}},emits:[`beforeCommit`,`afterCommit`,`clearFields`],setup(t,{expose:n,emit:r}){let i=ce(),a=oe(),o=t,s=r,c=I(()=>i.fileList.some(e=>!G(e.path,a.lockedFiles))),l=I(()=>i.isSelectionMode&&i.selectedFiles.size>0&&i.selectedUnstagedPaths.length>0),u=I(()=>i.hasConflictedFiles?!0:i.isSelectionMode?!l.value||!o.hasUserCommitMessage:!c.value||!o.hasUserCommitMessage),p=I(()=>i.isAddingFiles||i.isCommiting),m=I(()=>i.hasConflictedFiles?z(`@2E184:存在冲突文件,请先解决冲突`):i.isSelectionMode?i.selectedFiles.size===0?z(`@2E184:请先勾选要提交的文件`):i.selectedUnstagedPaths.length===0?z(`@2E184:所选文件无需暂存或被锁定`):o.hasUserCommitMessage?z(`@2E184:一键完成:仅暂存所选文件 → 提交`):z(`@2E184:请输入提交信息`):c.value?o.hasUserCommitMessage?z(`@2E184:一键完成:暂存所有更改 → 提交`):z(`@2E184:请输入提交信息`):z(`@2E184:没有需要提交的更改`)),v=I(()=>i.isSelectionMode&&l.value?z(`@2E184:一键提交所选`):z(`@2E184:一键提交`)),b=I(()=>o.from===`form`?i.isSelectionMode&&l.value?z(`@2E184:暂存所选 + 提交`):z(`@2E184:暂存 + 提交`):``);async function S(){s(`beforeCommit`);try{let e=await i.stageSelectedAndCommit(o.finalCommitMessage,o.skipHooks);e&&s(`clearFields`),s(`afterCommit`,e)}catch(e){console.error(`一键提交失败:`,e),s(`afterCommit`,!1)}}return n({triggerQuickCommit:S,isDisabled:u,isLoading:p,buttonTitle:v,buttonDesc:b,tooltipText:m}),(n,r)=>{let i=d,a=R;return P(),_(`div`,null,[e(g(x),{content:m.value,placement:`top`,"show-after":200},{default:O(()=>[e(a,{type:`primary`,onClick:S,loading:p.value,disabled:u.value,class:y([t.from,`one-commit-button`])},{default:O(()=>[h(`div`,ye,[e(i,{class:`one-commit-icon`},{default:O(()=>[e(g(j))]),_:1}),h(`div`,be,[h(`span`,xe,f(v.value),1),t.from===`form`?(P(),_(`span`,$,f(b.value),1)):F(``,!0)])])]),_:1},8,[`loading`,`disabled`,`class`])]),_:1},8,[`content`])])}}}),[[`__scopeId`,`data-v-cfc8c3a9`]]);u(),k(),t();var Ce={class:`qa-wrap`},we=[`aria-label`,`title`],Te={class:`qa-trigger__text`},Ee={class:`qa-trigger__title`},De={class:`qa-trigger__desc`},Oe={key:1,class:`qa-trigger__caret`,viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},ke={class:`qa-item`},Ae={class:`qa-item__text`},je={class:`qa-item__title`},Me={class:`qa-item__desc`},Ne={class:`qa-item`},Pe={class:`qa-item__text`},Fe={class:`qa-item__title`},Ie={class:`qa-item__desc`},Le={class:`qa-engines`,"aria-hidden":`true`},Re=B(p({__name:`QuickActionsDropdown`,props:{hasUserCommitMessage:{type:Boolean,default:!1},finalCommitMessage:{default:``},skipHooks:{type:Boolean,default:!1},from:{default:`form`}},emits:[`afterCommit`,`afterPush`,`beforePush`,`pushStart`,`clearFields`],setup(t,{expose:n,emit:o}){let s=t,c=o,l=T(null),u=T(null),p=I(()=>l.value?.isDisabled??!0),v=I(()=>l.value?.isLoading??!1),b=I(()=>l.value?.buttonTitle??z(`@2E184:一键提交`)),x=I(()=>p.value?l.value?.tooltipText??``:l.value?.buttonDesc??``),S=I(()=>l.value?.tooltipText??``),ee=I(()=>u.value?.isDisabled??!0),C=I(()=>u.value?.isLoading??!1),te=I(()=>u.value?.buttonTitle??z(`@2E184:一键推送所有`)),w=I(()=>ee.value?u.value?.tooltipText??``:u.value?.buttonDesc??``),E=I(()=>u.value?.tooltipText??``),D=I(()=>v.value||C.value),k=I(()=>p.value&&ee.value),ne=I(()=>u.value?.buttonDesc||z(`@2E184:暂存 + 提交 + 推送`));function A(e){e===`commit`?l.value?.triggerQuickCommit():e===`push`&&u.value?.triggerQuickPush()}return n({triggerQuickPush:()=>u.value?.triggerQuickPush()}),(t,n)=>{let o=d,v=r,C=ie,T=m;return P(),_(`div`,Ce,[e(T,{trigger:`click`,placement:`bottom-start`,"popper-class":`qa-dropdown-popper`,onCommand:A},{dropdown:O(()=>[e(C,null,{default:O(()=>[e(v,{disabled:p.value,command:`commit`},{default:O(()=>[h(`div`,ke,[n[7]||=h(`svg`,{class:`qa-item__icon`,viewBox:`0 0 24 24`,width:`18`,height:`18`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[h(`path`,{d:`M9 12a3 3 0 1 0 6 0a3 3 0 1 0 -6 0`}),h(`path`,{d:`M12 3l0 6`}),h(`path`,{d:`M12 15l0 6`})],-1),h(`div`,Ae,[h(`span`,je,f(b.value),1),h(`span`,Me,f(x.value||S.value),1)])])]),_:1},8,[`disabled`]),e(v,{disabled:ee.value,command:`push`},{default:O(()=>[h(`div`,Ne,[n[8]||=h(`svg`,{class:`qa-item__icon`,viewBox:`0 0 24 24`,width:`18`,height:`18`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[h(`path`,{d:`M7 18a4.6 4.4 0 0 1 0 -9a5 4.5 0 0 1 11 2h1a3.5 3.5 0 0 1 0 7h-1`}),h(`path`,{d:`M9 15l3 -3l3 3`}),h(`path`,{d:`M12 12l0 9`})],-1),h(`div`,Pe,[h(`span`,Fe,f(te.value),1),h(`span`,Ie,f(w.value||E.value),1)])])]),_:1},8,[`disabled`])]),_:1})]),default:O(()=>[h(`div`,{class:y([`qa-trigger`,{"is-quiet":k.value,"is-busy":D.value}]),role:`button`,tabindex:`0`,"aria-label":g(z)(`@2E184:提交并推送`),title:E.value},[h(`div`,Te,[h(`span`,Ee,f(g(z)(`@2E184:提交并推送`)),1),h(`span`,De,f(ne.value),1)]),D.value?(P(),i(o,{key:0,class:`is-loading qa-trigger__caret`},{default:O(()=>[e(g(a))]),_:1})):(P(),_(`svg`,Oe,[...n[6]||=[h(`path`,{d:`M6 9l6 6l6 -6`},null,-1)]]))],10,we)]),_:1}),h(`div`,Le,[e(Se,{ref_key:`quickCommitRef`,ref:l,from:s.from,"has-user-commit-message":s.hasUserCommitMessage,"final-commit-message":s.finalCommitMessage,"skip-hooks":s.skipHooks,onAfterCommit:n[0]||=e=>c(`afterCommit`,e),onClearFields:n[1]||=()=>c(`clearFields`)},null,8,[`from`,`has-user-commit-message`,`final-commit-message`,`skip-hooks`]),e(W,{ref_key:`quickPushRef`,ref:u,from:s.from,"has-user-commit-message":s.hasUserCommitMessage,"final-commit-message":s.finalCommitMessage,"skip-hooks":s.skipHooks,onBeforePush:n[2]||=()=>c(`beforePush`),onPushStart:n[3]||=()=>c(`pushStart`),onAfterPush:n[4]||=e=>c(`afterPush`,e),onClearFields:n[5]||=()=>c(`clearFields`)},null,8,[`from`,`has-user-commit-message`,`final-commit-message`,`skip-hooks`])])])}}}),[[`__scopeId`,`data-v-74ff0650`]]);u(),t(),k();var ze={class:`one-ai-push`},Be={class:`one-ai-push-content`},Ve={class:`one-ai-push-text`},He={class:`one-ai-push-title`},Ue={key:0,class:`one-ai-push-desc`},We=B(p({__name:`AiQuickPushButton`,props:{from:{default:`form`},generating:{type:Boolean,default:!1}},emits:[`trigger`],setup(t,{emit:n}){let r=ce(),i=oe(),a=t,o=n,s=I(()=>r.fileList.some(e=>!G(e.path,i.lockedFiles))),c=I(()=>r.isSelectionMode&&r.selectedFiles.size>0&&r.selectedUnstagedPaths.length>0),l=I(()=>!r.isSelectionMode&&!s.value&&r.branchAhead>0),u=I(()=>r.hasConflictedFiles||!r.hasUpstream?!0:r.isSelectionMode?!c.value:!s.value&&r.branchAhead===0),d=I(()=>a.generating||r.isAddingFiles||r.isCommiting||r.isPushing),p=I(()=>r.hasConflictedFiles?z(`@2E184:存在冲突文件,请先解决冲突`):r.hasUpstream?a.generating?z(`@2E184:AI 正在生成提交信息…`):r.isSelectionMode?c.value?z(`@2E184:一键完成:AI 生成提交信息 → 仅暂存所选文件 → 提交 → 推送`):z(`@2E184:请先勾选要推送的文件`):!s.value&&r.branchAhead===0?z(`@2E184:没有需要提交或推送的更改`):s.value?z(`@2E184:一键完成:AI 生成提交信息 → 暂存所有更改 → 提交 → 推送`):z(`@2E184:本地已提交,AI 将直接推送到远程仓库`):z(`@2E184:当前分支没有上游分支`)),m=I(()=>a.generating?z(`@2E184:AI 正在生成提交信息…`):r.isSelectionMode&&c.value?z(`@2E184:AI 提交并推送所选`):z(`@2E184:AI 提交并推送`)),v=I(()=>a.from!==`form`||a.generating?``:l.value?z(`@2E184:本地已提交,直接推送`):z(`@2E184:AI 生成信息 + 推送`));function b(){u.value||d.value||o(`trigger`)}return(n,r)=>{let i=R;return P(),_(`div`,ze,[e(g(x),{content:p.value,placement:`top`,"show-after":200},{default:O(()=>[e(i,{type:`primary`,onClick:b,loading:d.value,disabled:u.value,class:y([t.from,`one-ai-push-button`])},{default:O(()=>[h(`div`,Be,[e(V,{class:`one-ai-push-icon`,"icon-class":`message-chatbot`}),h(`div`,Ve,[h(`span`,He,f(m.value),1),t.from===`form`?(P(),_(`span`,Ue,f(v.value),1)):F(``,!0)])])]),_:1},8,[`loading`,`disabled`,`class`])]),_:1},8,[`content`])])}}}),[[`__scopeId`,`data-v-2c3e6bc2`]]);u(),k();var Ge={class:`form-bottom-actions`},Ke={class:`actions-flex-container`},qe={class:`left-actions`},Je={class:`button-grid`},Ye={class:`right-actions`},Xe=B(p({__name:`GitActionButtons`,props:{hasUserCommitMessage:{type:Boolean,default:!1},finalCommitMessage:{default:``},skipHooks:{type:Boolean,default:!1},from:{default:`form`},aiGenerating:{type:Boolean,default:!1}},emits:[`afterCommit`,`afterPush`,`beforePush`,`pushStart`,`clearFields`,`aiQuickPush`],setup(t,{expose:n,emit:r}){let i=r,a=T(null);function o(e){i(`afterCommit`,e)}function s(e){i(`afterPush`,e)}function c(){i(`beforePush`)}function l(){i(`pushStart`)}function u(){i(`clearFields`)}function d(){i(`aiQuickPush`)}async function f(){return a.value?.triggerQuickPush()}return n({triggerQuickPush:f}),(n,r)=>(P(),_(`div`,Ge,[h(`div`,Ke,[h(`div`,qe,[h(`div`,Je,[e(H,{onClick:()=>{},from:t.from},null,8,[`from`]),e(U,{"has-user-commit-message":t.hasUserCommitMessage,"final-commit-message":t.finalCommitMessage,"skip-hooks":t.skipHooks,onBeforeCommit:()=>{},onAfterCommit:o,onClick:()=>{},from:t.from},null,8,[`has-user-commit-message`,`final-commit-message`,`skip-hooks`,`from`]),e(K,{onBeforePush:()=>{},onAfterPush:s,onClick:()=>{},from:t.from},null,8,[`from`])])]),h(`div`,Ye,[e(Re,{ref_key:`quickActionsRef`,ref:a,from:t.from,"has-user-commit-message":t.hasUserCommitMessage,"final-commit-message":t.finalCommitMessage,"skip-hooks":t.skipHooks,onAfterCommit:o,onAfterPush:s,onBeforePush:c,onPushStart:l,onClearFields:u},null,8,[`from`,`has-user-commit-message`,`final-commit-message`,`skip-hooks`]),e(We,{from:t.from,generating:t.aiGenerating,onTrigger:d},null,8,[`from`,`generating`])])])]))}}),[[`__scopeId`,`data-v-c8e88c71`]]);u(),k(),t(),N();var Ze={class:`card-header app-card-header`},Qe={class:`header-left`},$e={class:`card-content app-card-content`},et={class:`layout-container`},tt={key:0,class:`git-config-warning`},nt={key:0,class:`merge-in-progress-banner`},rt={class:`commit-section`},it={key:0,class:`commit-form`},at={class:`description-container`},ot={key:1,class:`standard-commit-form`},st={class:`standard-commit-header`},ct={class:`type-scope-container`},lt={class:`scope-wrapper`},ut={class:`description-container description-inline`},dt=[`aria-expanded`],ft={class:`advanced-fields`},pt={key:0,class:`status-updating-indicator`},mt={key:0,class:`status-updating-indicator`},ht=B(p({__name:`CommitForm`,setup(t){let r=T(!1),c=T(!1);async function u(){let e=x.isSelectionMode&&x.selectedFiles.size>0?[...x.selectedFiles]:[],t=ae(),n=await(await fetch(`/api/config/generate-commit-message`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({selectedPaths:e,locale:t.currentLocale})})).json();if(!n.success){let e=n.code,t=n.error||z(`@76872:AI生成失败`),r=e?{TIMEOUT:`@76872:AI生成超时,请重试或检查模型响应速度`,NO_MODEL:`@76872:未配置AI模型,请先在通用设置中添加模型`,NO_JSON:`@76872:AI未返回有效结果,请重试`,PARSE_FAILED:`@76872:AI返回格式无法解析,请重试`,GENERATE_FAILED:`@76872:AI生成失败`,HTTP_ERR:`@76872:AI生成失败`}[e]:null;return E.error(r?z(r):t),!1}let r=[`feat`,`fix`,`docs`,`style`,`refactor`,`test`,`chore`];if(V.value)n.type&&r.includes(n.type)&&(H.value=n.type),n.scope!==void 0&&(U.value=n.scope),n.description&&(W.value=n.description);else{let e=n.type&&n.description?n.scope?`${n.type}(${n.scope}): ${n.description}`:`${n.type}: ${n.description}`:n.description||``;e&&(k.value=e)}return!0}async function p(){if(!r.value){r.value=!0;try{if(!await u())return;E.success(z(`@76872:AI已生成提交信息`))}catch(e){E.error(`${z(`@76872:AI生成失败`)}: ${e.message}`)}finally{r.value=!1}}}async function m(){if(!c.value){c.value=!0;try{let e=x.isSelectionMode&&x.selectedFiles.size>0,t=x.fileList.some(e=>!G(e.path,w.lockedFiles));if(e||t){if(!await u())return;if(await n(),!$.value){E.error(z(`@76872:AI生成失败`));return}}await Z.value?.triggerQuickPush?.()}catch(e){console.error(`AI 提交并推送失败:`,e),E.error(`${z(`@76872:AI生成失败`)}: ${e.message}`)}finally{c.value=!1}}}let x=ce(),w=oe(),k=T(``),{loadingState:A,show:j,hide:N,setText:ie}=_e(),{successState:L}=ve(),R=T(!1),B=T(``),V=I({get:()=>w.isStandardCommit,set:e=>{w.isStandardCommit=e}}),H=T(`feat`),U=T(``),W=T(``),K=T(``),q=T(``),de=T([]),J=T(!1),fe=T([]),Y=T(!1),X=T(!1),me=I({get:()=>w.skipHooks,set:e=>{w.skipHooks=e}}),he=I({get:()=>w.autoQuickPushOnEnter,set:e=>{w.autoQuickPushOnEnter=e}}),Z=T(null),Q=T(!1),ye=I(()=>[{value:`feat`,label:`feat: ${z(`@76872:新功能`)}`},{value:`fix`,label:`fix: ${z(`@76872:修复bug`)}`},{value:`docs`,label:`docs: ${z(`@76872:文档修改`)}`},{value:`style`,label:`style: ${z(`@76872:样式修改`)}`},{value:`refactor`,label:`refactor: ${z(`@76872:代码重构`)}`},{value:`test`,label:`test: ${z(`@76872:测试代码`)}`},{value:`chore`,label:`chore: ${z(`@76872:构建/工具修改`)}`}]),be=T([]),xe=I(()=>{if(!V.value)return k.value||B.value;let e=`${H.value||``}`;return U.value&&(e+=`(${U.value})`),e+=`: ${W.value}`,K.value&&(e+=`\n\n${K.value}`),q.value&&(e+=`\n\n${q.value}`),e}),$=I(()=>V.value?(x.isMergeInProgress||(H.value||``).trim()!==``)&&(W.value||``).trim()!==``:k.value.trim()!==``),Se=I(()=>x.hasConflictedFiles?!0:x.isMergeInProgress?!$.value:!x.fileList.some(e=>!G(e.path,w.lockedFiles))||!$.value),Ce=I(()=>{let e=`${z(`@76872:输入提交信息 (默认: `)}${B.value})`;return he.value?`${e}${z(`@76872:(按回车一键推送)`)}`:e}),we=I(()=>{let e=z(`@76872:简短描述(必填)`);return he.value?z(`@76872:简短描述(必填,按回车一键推送)`):e}),Te=I(()=>{let e=`git commit -m "${xe.value}"`;return me.value&&(e+=` --no-verify`),e});function Ee(){let e=w.config;e&&(B.value=e.defaultCommitMessage||``,e.descriptionTemplates&&Array.isArray(e.descriptionTemplates)&&(de.value=e.descriptionTemplates),e.scopeTemplates&&Array.isArray(e.scopeTemplates)&&(fe.value=e.scopeTemplates),e.messageTemplates&&Array.isArray(e.messageTemplates)&&(be.value=e.messageTemplates))}function De(e){W.value=e,J.value=!1}function Oe(e){U.value=e,Y.value=!1}function ke(){J.value=!0}function Ae(){Y.value=!0}function je(){k.value=``,W.value=``,K.value=``,q.value=``,H.value=`feat`,w.autoSetDefaultMessage&&w.defaultCommitMessage&&(V.value?W.value=w.defaultCommitMessage:k.value=w.defaultCommitMessage)}function Me(){j({text:z(`@76872:正在暂存文件…`),showProgress:!1})}function Ne(){N()}function Pe(e){if(N(),e){R.value=!0;try{setTimeout(async()=>{try{console.log(z(`@76872:推送成功,状态已更新`))}catch(e){console.error(`一键推送后处理失败:`,e)}finally{R.value=!1}},1e3)}catch(e){console.error(`一键推送后处理失败:`,e),R.value=!1}}}function Fe(e){k.value=e,X.value=!1}async function Ie(e){if(!he.value||!$.value)return;let t=x.fileList.some(e=>!G(e.path,w.lockedFiles)),n=x.hasConflictedFiles;if(t&&$.value&&x.hasUpstream&&!n&&e.key===`Enter`&&!e.shiftKey){e.preventDefault();try{await Z.value?.triggerQuickPush()}catch(e){console.error(`回车自动一键提交失败:`,e)}}}async function Le(e){try{await w.saveDefaultMessage(e)&&E.success(z(`@76872:默认提交信息设置成功`))}catch(e){E.error(`${z(`@76872:设置默认提交信息失败: `)}${e.message}`)}}M(()=>x.pendingMergeMessage,e=>{e&&(V.value?(H.value=``,W.value=e):k.value=e,x.pendingMergeMessage=``,E.info(z(`@76872:已自动填充合并提交信息`)))}),M(()=>x.isAddingFiles,e=>{e&&A.visible&&ie(z(`@76872:正在暂存文件…`))}),M(()=>x.isCommiting,e=>{e&&A.visible&&ie(z(`@76872:正在提交更改...`))}),M(()=>x.isPushing,e=>{e&&A.visible&&N()}),s(async()=>{M(()=>w.config,Ee,{immediate:!0}),w.config||await w.loadConfig(),w.autoSetDefaultMessage&&w.defaultCommitMessage&&(V.value?W.value||=w.defaultCommitMessage:k.value||=w.defaultCommitMessage),x.pendingMergeMessage&&(V.value?(H.value=``,W.value=x.pendingMergeMessage):k.value=x.pendingMergeMessage,x.pendingMergeMessage=``,E.info(z(`@76872:已自动填充合并提交信息`)))});function Re(e,t){t([...e?de.value.filter(t=>t.toLowerCase().includes(e.toLowerCase())).map(e=>({value:e})):de.value.map(e=>({value:e})),{value:`⚙️ 管理模板…`,isSettings:!0}])}function ze(e,t){t([...e?fe.value.filter(t=>t.toLowerCase().includes(e.toLowerCase())).map(e=>({value:e})):fe.value.map(e=>({value:e})),{value:`⚙️ 管理模板…`,isSettings:!0}])}function Be(e){e.isSettings?(ke(),W.value=``):W.value=e.value}function Ve(e){e.isSettings?(Ae(),U.value=``):U.value=e.value}function He(e,t){t([...e?be.value.filter(t=>t.toLowerCase().includes(e.toLowerCase())).map(e=>({value:e})):be.value.map(e=>({value:e})),{value:`⚙️ 管理模板…`,isSettings:!0}])}function Ue(e){e.isSettings?(X.value=!0,k.value=``):k.value=e.value}return(t,n)=>{let s=re,u=b,w=d,T=o,E=l,j=v;return P(),_(C,null,[h(`div`,{class:y([`card app-card`,{"is-pushing":g(x).isPushing}])},[h(`div`,Ze,[h(`div`,Qe,[g(x).userName!==``&&g(x).userEmail!==``?(P(),i(Xe,{key:0,ref_key:`gitActionButtonsRef`,ref:Z,"has-user-commit-message":$.value,"final-commit-message":xe.value,"skip-hooks":me.value,"ai-generating":c.value,onAfterCommit:n[0]||=e=>{e&&je()},onAfterPush:Pe,onBeforePush:Me,onPushStart:Ne,onClearFields:je,onAiQuickPush:m},null,8,[`has-user-commit-message`,`final-commit-message`,`skip-hooks`,`ai-generating`])):F(``,!0)])]),h(`div`,$e,[h(`div`,et,[g(x).userName===``||g(x).userEmail===``?(P(),_(`div`,tt,[e(s,{title:g(z)(`@76872:Git用户信息未配置`),type:`warning`,closable:!1,"show-icon":``},{default:O(()=>[h(`p`,null,f(g(z)(`@76872:您需要配置Git用户名和邮箱才能提交代码。请使用以下命令配置:`)),1),n[11]||=h(`pre`,{class:`config-command`},`git config --global user.name "Your Name"
2
2
  git config --global user.email "your.email@example.com"`,-1)]),_:1},8,[`title`])])):(P(),_(C,{key:1},[g(x).isMergeInProgress?(P(),_(`div`,nt,[e(s,{title:g(z)(`@76872:合并进行中`),type:`warning`,closable:!1,"show-icon":``},{default:O(()=>[h(`span`,null,f(g(z)(`@76872:分支合并尚未完成,请输入提交信息后点击「提交」按钮完成合并。`)),1)]),_:1},8,[`title`])])):F(``,!0),h(`div`,rt,[V.value?(P(),_(`div`,ot,[h(`div`,st,[h(`div`,ct,[e(E,{modelValue:H.value,"onUpdate:modelValue":n[2]||=e=>H.value=e,placeholder:g(z)(`@76872:提交类型`),class:`type-select`,clearable:``},{default:O(()=>[(P(!0),_(C,null,ee(ye.value,e=>(P(),i(T,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`]),h(`div`,lt,[e(u,{modelValue:U.value,"onUpdate:modelValue":n[3]||=e=>U.value=e,"fetch-suggestions":ze,placeholder:g(z)(`@76872:作用域(可选)`),class:`scope-input`,clearable:``,onSelect:Ve},null,8,[`modelValue`,`placeholder`])]),h(`div`,ut,[e(u,{modelValue:W.value,"onUpdate:modelValue":n[4]||=e=>W.value=e,"fetch-suggestions":Re,placeholder:we.value,class:`description-input`,clearable:``,onSelect:Be,onKeydown:Ie},{suffix:O(()=>[e(se,{"custom-class":`ai-suffix-btn`,tooltip:g(z)(`@76872:AI生成提交信息`),"icon-class":r.value?``:`message-chatbot`,size:`small`,disabled:r.value,onClick:p},{default:O(()=>[r.value?(P(),i(w,{key:0,class:`is-loading`},{default:O(()=>[e(g(a))]),_:1})):F(``,!0)]),_:1},8,[`tooltip`,`icon-class`,`disabled`])]),_:1},8,[`modelValue`,`placeholder`])])])]),h(`button`,{type:`button`,class:`advanced-options-toggle`,"aria-expanded":Q.value,onClick:n[5]||=e=>Q.value=!Q.value},[h(`span`,null,f(Q.value?g(z)(`@76872:收起`):g(z)(`@76872:正文及页脚`)),1),e(w,{class:y([`toggle-icon`,{"is-active":Q.value}])},{default:O(()=>[e(g(S))]),_:1},8,[`class`])],8,dt),te(h(`div`,ft,[e(j,{modelValue:K.value,"onUpdate:modelValue":n[6]||=e=>K.value=e,type:`textarea`,rows:4,placeholder:g(z)(`@76872:正文(可选):详细描述本次提交的内容和原因`),class:`body-input`,clearable:``},null,8,[`modelValue`,`placeholder`]),e(j,{modelValue:q.value,"onUpdate:modelValue":n[7]||=e=>q.value=e,placeholder:g(z)(`@76872:页脚(可选):如 Closes #123`),class:`footer-input`,clearable:``},null,8,[`modelValue`,`placeholder`])],512),[[ne,Q.value]])])):(P(),_(`div`,it,[h(`div`,at,[e(u,{modelValue:k.value,"onUpdate:modelValue":n[1]||=e=>k.value=e,"fetch-suggestions":He,placeholder:Ce.value,type:`textarea`,rows:3,resize:`none`,class:`commit-message-input`,onSelect:Ue,onKeydown:Ie},null,8,[`modelValue`,`placeholder`]),e(se,{"custom-class":`ai-suffix-btn ai-suffix-btn--ta`,tooltip:g(z)(`@76872:AI生成提交信息`),"icon-class":r.value?``:`message-chatbot`,size:`small`,disabled:r.value,onClick:p},{default:O(()=>[r.value?(P(),i(w,{key:0,class:`is-loading`},{default:O(()=>[e(g(a))]),_:1})):F(``,!0)]),_:1},8,[`tooltip`,`icon-class`,`disabled`])])])),Se.value?F(``,!0):(P(),i(le,{key:2,command:Te.value,title:g(z)(`@76872:提交命令预览:`),placeholder:`git commit -m "<提交信息>"`},null,8,[`command`,`title`]))])],64))])])],2),e(ue,{visible:J.value,"onUpdate:visible":n[8]||=e=>J.value=e,type:`description`,title:g(z)(`@76872:简短描述模板设置`),placeholder:g(z)(`@76872:输入新模板内容`),"edit-placeholder":g(z)(`@76872:编辑模板内容`),"empty-description":g(z)(`@76872:暂无保存的模板`),onUseTemplate:De},null,8,[`visible`,`title`,`placeholder`,`edit-placeholder`,`empty-description`]),e(ue,{visible:Y.value,"onUpdate:visible":n[9]||=e=>Y.value=e,type:`scope`,title:g(z)(`@76872:作用域模板设置`),placeholder:g(z)(`@76872:输入新作用域模板`),"edit-placeholder":g(z)(`@76872:编辑作用域模板内容`),"empty-description":g(z)(`@76872:暂无保存的作用域`),onUseTemplate:Oe},null,8,[`visible`,`title`,`placeholder`,`edit-placeholder`,`empty-description`]),e(ue,{visible:X.value,"onUpdate:visible":n[10]||=e=>X.value=e,type:`message`,title:g(z)(`@76872:默认提交信息设置`),placeholder:g(z)(`@76872:输入新模板内容`),"edit-placeholder":g(z)(`@76872:编辑模板内容`),"empty-description":g(z)(`@76872:暂无保存的模板`),"show-default-section":!0,"show-help-text":!0,onUseTemplate:Fe,onSetDefault:Le},null,8,[`visible`,`title`,`placeholder`,`edit-placeholder`,`empty-description`]),e(D,{name:`el-fade-in-linear`},{default:O(()=>[R.value?(P(),_(`div`,pt,[e(w,{class:`is-loading`},{default:O(()=>[e(g(a))]),_:1}),h(`span`,null,f(g(z)(`@76872:更新状态中...`)),1)])):F(``,!0)]),_:1}),e(pe,{visible:g(A).visible,text:g(A).text,"show-progress":g(A).showProgress,progress:g(A).progress},null,8,[`visible`,`text`,`show-progress`,`progress`]),e(ge,{visible:g(L).visible,text:g(L).text,description:g(L).description},null,8,[`visible`,`text`,`description`]),e(D,{name:`el-fade-in-linear`},{default:O(()=>[R.value?(P(),_(`div`,mt,[e(w,{class:`is-loading`},{default:O(()=>[e(g(a))]),_:1}),h(`span`,null,f(g(z)(`@76872:更新状态中...`)),1)])):F(``,!0)]),_:1})],64)}}}),[[`__scopeId`,`data-v-184a99b0`]]);export{ht as default};