zen-gitsync 2.17.21 → 2.17.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -12
- package/package.json +10 -1
- package/scripts/release.js +214 -82
- package/src/ui/public/assets/{AgentEngineSelector-D_8VedA0.js → AgentEngineSelector-DLJ8He83.js} +1 -1
- package/src/ui/public/assets/{AgentView-CpKIfQLq.js → AgentView-CQ18nw02.js} +1 -1
- package/src/ui/public/assets/{AppVersionBadge-kyk4Mmvf.js → AppVersionBadge-1pyUzRer.js} +2 -2
- package/src/ui/public/assets/{BranchSelector-BUPiKcdW.js → BranchSelector-DrsrZiWJ.js} +1 -1
- package/src/ui/public/assets/{CommitForm-CMe1gjY-.js → CommitForm-B5p-7P7m.js} +1 -1
- package/src/ui/public/assets/{CommonDialog-DMWtstZq.js → CommonDialog-BEm2cK1X.js} +1 -1
- package/src/ui/public/assets/{EditorView-mUmFBb7H.css → EditorView-C6HFYeEM.css} +1 -1
- package/src/ui/public/assets/EditorView-fuMrS9P7.js +1 -0
- package/src/ui/public/assets/{FileDiffViewer-CvN5b1ZC.js → FileDiffViewer-CYxcLw10.js} +1 -1
- package/src/ui/public/assets/{FlowExecutionViewer-Ynr4q8qE.js → FlowExecutionViewer-DTmlBLXQ.js} +1 -1
- package/src/ui/public/assets/{FlowOrchestrationWorkspace-DPDZc9uf.js → FlowOrchestrationWorkspace-Da_UmTRT.js} +1 -1
- package/src/ui/public/assets/{IconButton-CFJkDLVG.js → IconButton-BShiC2AP.js} +1 -1
- package/src/ui/public/assets/{LogList-CbfsCVsy.js → LogList-5M5JBhlB.js} +1 -1
- package/src/ui/public/assets/{MindmapView-D8A1V-Fd.js → MindmapView-BUV_w14M.js} +1 -1
- package/src/ui/public/assets/{MonitorView-Bm_vUP8Y.js → MonitorView-D9N4QH5Y.js} +1 -1
- package/src/ui/public/assets/{ProjectStartupButton-BBND5XcZ.js → ProjectStartupButton-DYYQ-O7P.js} +1 -1
- package/src/ui/public/assets/RecentDirectoriesChat-BtWa_HMY.js +1 -0
- package/src/ui/public/assets/RecentDirectoriesChat-vHT8jMxW.css +1 -0
- package/src/ui/public/assets/{RemoteManagerDialog-BVQeIr8U.js → RemoteManagerDialog-C4QIJK_F.js} +1 -1
- package/src/ui/public/assets/{RemoteRepoCard-vuCu_cpA.js → RemoteRepoCard-BmDh538v.js} +1 -1
- package/src/ui/public/assets/{SourceMapView-BZjgxQM8.js → SourceMapView-Ceamya-N.js} +1 -1
- package/src/ui/public/assets/{SvgIcon-D0hK-p1U.js → SvgIcon-xtz4vvc9.js} +1 -1
- package/src/ui/public/assets/{TemplateManager-XoPZv_i6.js → TemplateManager-DhKTZ4EM.js} +1 -1
- package/src/ui/public/assets/{UserInputNode-CZarmsrv.js → UserInputNode-DfeCGlEO.js} +1 -1
- package/src/ui/public/assets/WorkbenchView-D9l3i4Qj.css +1 -0
- package/src/ui/public/assets/WorkbenchView-DX2epPD9.js +6 -0
- package/src/ui/public/assets/{_plugin-vue_export-helper-N8Vc5eEs.js → _plugin-vue_export-helper-C_bQVzeb.js} +4 -4
- package/src/ui/public/assets/{agentConversations-Da7zLPfP.js → agentConversations-BUPj8vzH.js} +1 -1
- package/src/ui/public/assets/configStore-DJH7OlB_.js +1 -0
- package/src/ui/public/assets/{gitStore-grKwgyHH.js → gitStore-ByP9lpuT.js} +1 -1
- package/src/ui/public/assets/index-CFX8sK4w.js +29 -0
- package/src/ui/public/assets/{previewSandbox-D4455rKO.js → previewSandbox-DSzZ_Rky.js} +1 -1
- package/src/ui/public/index.html +10 -10
- package/src/ui/public/sounds/CREDITS.txt +32 -0
- package/src/ui/public/sounds/task-done.wav +0 -0
- package/src/ui/public/sounds/task-error.wav +0 -0
- package/src/ui/server/routes/config.js +4 -1
- package/src/ui/server/routes/workbench/index.js +15 -6
- package/src/ui/server/routes/workbench/jobActivity.js +274 -0
- package/src/ui/server/routes/workbench/jobActivity.test.js +295 -0
- package/src/ui/server/routes/workbench/liveJobs.js +3 -0
- package/src/ui/server/routes/workbench/orchestratorStore.js +53 -2
- package/src/ui/server/routes/workbench/orchestratorStore.progressReport.test.js +177 -0
- package/src/ui/server/routes/workbench/progressReport.js +54 -47
- package/src/ui/server/routes/workbench/progressReport.test.js +73 -42
- package/src/ui/server/routes/workbench/projectRegistry.js +36 -2
- package/src/ui/server/routes/workbench/projectRegistry.test.js +98 -0
- package/src/ui/server/routes/workbench/taskRunner.js +9 -0
- package/src/utils/selfUpdatePolicy.js +123 -0
- package/src/utils/selfUpdatePolicy.test.js +204 -0
- package/src/ui/public/assets/EditorView-C6msf9YP.js +0 -1
- package/src/ui/public/assets/RecentDirectoriesChat-BQbncY1L.css +0 -1
- package/src/ui/public/assets/RecentDirectoriesChat-D9fMFh8r.js +0 -1
- package/src/ui/public/assets/WorkbenchView-BLyXsdYw.css +0 -1
- package/src/ui/public/assets/WorkbenchView-CPur8WEj.js +0 -6
- package/src/ui/public/assets/configStore-BFb0I8eP.js +0 -1
- package/src/ui/public/assets/index-BHYAwndE.js +0 -29
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.wb-ctx-menu[data-v-ef29ad59]{z-index:9999;background:var(--bg-container);border:1px solid var(--border-color);border-radius:var(--radius-md);min-width:140px;box-shadow:var(--shadow-md);-webkit-user-select:none;user-select:none;font-size:var(--font-size-mid);margin:0;padding:4px;list-style:none;position:fixed}.wb-ctx-menu__item[data-v-ef29ad59]{border-radius:var(--radius-base);cursor:pointer;color:var(--text-primary);align-items:center;gap:8px;padding:6px 10px;display:flex}.wb-ctx-menu__item[data-v-ef29ad59]:hover{background:var(--tint-primary-12);color:var(--color-primary)}.wb-ctx-menu__item.is-disabled[data-v-ef29ad59]{cursor:progress;opacity:.6}.wb-ctx-menu__icon[data-v-ef29ad59]{justify-content:center;align-items:center;width:16px;height:16px;display:inline-flex}.wb-log-details[data-v-5c82e125]{border:1px solid var(--border-color);border-radius:var(--radius-base);background:var(--bg-code);flex-direction:column;flex:1;height:100%;min-height:0;margin-top:6px;display:flex;overflow:auto}.wb-log-details__body[data-v-5c82e125]{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.wb-job-chat[data-v-5c82e125]{flex:1;min-height:0}.wb-job-chat[data-v-5c82e125] .acu-chat-footer{display:none}.wb-job-chat[data-v-5c82e125] .acu-chat{background:0 0}.wb-job-chat[data-v-5c82e125] .acu-message-list-inner{gap:10px;padding:10px 12px 14px}.wb-job-chat[data-v-5c82e125] .acu-bubble{font-size:var(--font-size-sm)}.wb-job-chat[data-v-5c82e125] .acu-bubble-name{font-size:var(--font-size-xs)}.wb-log-summary[data-v-5c82e125]{cursor:pointer;font-size:var(--font-size-sm);color:var(--text-secondary);-webkit-user-select:none;user-select:none;flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;padding:6px 10px;display:flex}.wb-log-summary[data-v-5c82e125]:hover{background:var(--tint-primary-06)}.wb-log-summary__left[data-v-5c82e125]{flex:1;align-items:center;gap:6px;min-width:0;display:inline-flex}.wb-log-summary__right[data-v-5c82e125]{flex-shrink:0;align-items:center;gap:8px;display:inline-flex}.wb-log-summary__meta[data-v-5c82e125]{font-size:var(--font-size-xs);color:var(--text-tertiary);font-variant-numeric:tabular-nums}.wb-log-copy[data-v-5c82e125]{font-size:var(--font-size-xs);color:var(--text-secondary);background:var(--bg-container);border:1px solid var(--border-color-medium);border-radius:var(--radius-base);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);flex-shrink:0;align-items:center;gap:3px;padding:2px 7px;font-weight:500;display:inline-flex}.wb-log-copy[data-v-5c82e125]:hover{background:color-mix(in srgb, var(--color-primary) 10%, transparent);border-color:color-mix(in srgb, var(--color-primary) 35%, transparent);color:var(--color-primary)}.wb-log-copy[data-v-5c82e125]:active{background:color-mix(in srgb, var(--color-primary) 18%, transparent)}.wb-log-copy[data-v-5c82e125]:focus-visible{outline:2px solid color-mix(in srgb, var(--color-primary) 50%, transparent);outline-offset:1px}.wb-chat__foot[data-v-5c82e125]{border-top:1px solid color-mix(in srgb, var(--border-color) 60%, transparent);background:color-mix(in srgb, var(--text-tertiary) 3%, transparent);flex-shrink:0;justify-content:flex-end;gap:6px;padding:4px 10px 6px;display:flex}.wb-chat__action[data-v-5c82e125]{font-size:var(--font-size-xs);color:#6d28d9;background:color-mix(in srgb, var(--color-think) 10%, var(--bg-container));border:1px solid color-mix(in srgb, var(--color-think) 30%, transparent);border-radius:var(--radius-base);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);align-items:center;gap:3px;padding:2px 8px;font-weight:500;display:inline-flex}.wb-chat__action[data-v-5c82e125]:hover{background:color-mix(in srgb, var(--color-think) 18%, var(--bg-container));border-color:color-mix(in srgb, var(--color-think) 50%, transparent);color:#5b21b6}.wb-chat__action[data-v-5c82e125]:active{background:color-mix(in srgb, var(--color-think) 26%, var(--bg-container))}.wb-chat__action[data-v-5c82e125]:focus-visible{outline:2px solid color-mix(in srgb, var(--color-think) 50%, transparent);outline-offset:1px}.wb-log-fullscreen-dialog .el-dialog__body[data-v-5c82e125]{flex-direction:column;height:calc(100vh - 54px);padding:0 16px 16px;display:flex;overflow:hidden}.wb-log-fullscreen[data-v-5c82e125]{border:1px solid var(--border-color);border-radius:var(--radius-base);background:var(--bg-code);flex:1;min-height:0;display:flex;overflow:hidden}.wb-log-fullscreen__render[data-v-5c82e125]{min-height:0;font-size:var(--font-size-mid);color:var(--text-primary);flex:1;padding:14px 18px;line-height:1.65;overflow:auto}.wb-log-fullscreen__render[data-v-5c82e125] pre{margin:8px 0}.wb-log-fullscreen__empty[data-v-5c82e125]{color:var(--text-tertiary);padding:14px 18px;font-style:italic}.wb-log-summary__status[data-v-5c82e125]{font-weight:600;font-size:var(--font-size-sm);align-items:center;gap:6px;display:inline-flex}.wb-log-summary__status--running[data-v-5c82e125]{color:var(--color-warning-dark,var(--color-warning-dark))}.wb-log-summary__status--pending[data-v-5c82e125]{color:var(--color-primary)}.wb-log-summary__status--done[data-v-5c82e125]{color:var(--color-success-dark,#15803d)}.wb-log-summary__status--cancelled[data-v-5c82e125]{color:var(--color-gray-400)}.wb-log-summary__status--error[data-v-5c82e125]{color:var(--color-danger,var(--color-danger-light))}.wb-log-summary__icon[data-v-5c82e125]{font-size:var(--font-size-mid);line-height:1}.wb-log-summary__elapsed[data-v-5c82e125]{font-size:var(--font-size-xs);color:var(--text-tertiary);font-variant-numeric:tabular-nums;margin-left:2px;font-weight:400}.wb-log-dots[data-v-5c82e125]{align-items:center;gap:3px;margin-left:-2px;display:inline-flex}.wb-log-dots__dot[data-v-5c82e125]{opacity:.35;background:currentColor;border-radius:50%;width:4px;height:4px;animation:1.4s ease-in-out infinite wb-log-dot-bounce-5c82e125}.wb-log-dots__dot[data-v-5c82e125]:nth-child(2){animation-delay:var(--transition-base)}.wb-log-dots__dot[data-v-5c82e125]:nth-child(3){animation-delay:.4s}.wb-log-details.is-running .wb-log-summary[data-v-5c82e125]{background:color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 8%, transparent)}.wb-log-details.is-pending .wb-log-summary[data-v-5c82e125]{background:color-mix(in srgb, var(--color-primary) 6%, transparent)}.wb-log-details.is-finished .wb-log-summary[data-v-5c82e125]{background:color-mix(in srgb, var(--color-success,var(--action-green)) 6%, transparent)}.wb-log-details.is-finished[data-v-5c82e125]{animation:1.5s ease-out wb-log-finished-flash-5c82e125}@keyframes wb-log-dot-bounce-5c82e125{0%,80%,to{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}@keyframes wb-log-finished-flash-5c82e125{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--color-success,var(--action-green)) 50%, transparent)}60%{box-shadow:0 0 0 4px color-mix(in srgb, var(--color-success,var(--action-green)) 0%, transparent)}to{box-shadow:0 0 #0000}}@media (prefers-reduced-motion:reduce){.wb-log-dots__dot[data-v-5c82e125],.wb-log-details.is-finished[data-v-5c82e125]{animation:none}}.exec-logs[data-v-7079b876]{flex-direction:column;gap:12px;height:100%;padding:16px 20px;display:flex;overflow:auto}.exec-logs__head[data-v-7079b876]{align-items:center;gap:12px;display:flex}.exec-logs__title-block[data-v-7079b876]{flex:1;align-items:baseline;gap:10px;min-width:0;display:flex}.exec-logs__stats[data-v-7079b876]{font-size:var(--font-size-sm);color:var(--text-tertiary);font-variant-numeric:tabular-nums}.exec-logs__head-actions[data-v-7079b876]{flex-shrink:0;gap:8px;display:inline-flex}.exec-logs__config[data-v-7079b876]{background:var(--bg-subtle,var(--bg-container));border:1px solid var(--border-color);border-radius:var(--radius-md,6px);flex-wrap:wrap;align-items:center;gap:16px;padding:10px 14px;display:flex}.exec-logs__config-label[data-v-7079b876]{font-size:var(--font-size-sm);color:var(--text-secondary);font-weight:600}.exec-logs__config-field[data-v-7079b876]{align-items:center;gap:8px;display:inline-flex}.exec-logs__config-name[data-v-7079b876]{font-size:var(--font-size-sm);color:var(--text-tertiary)}.exec-logs__filter[data-v-7079b876]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.exec-logs__filter-spacer[data-v-7079b876]{flex:1}.exec-logs__batch-meta[data-v-7079b876]{font-size:var(--font-size-sm);color:var(--text-secondary);font-variant-numeric:tabular-nums}.exec-logs__batch[data-v-7079b876]{background:color-mix(in srgb, var(--color-primary) 6%, transparent);border:1px solid color-mix(in srgb, var(--color-primary) 25%, transparent);border-radius:var(--radius-md,6px);align-items:center;gap:12px;padding:8px 14px;display:flex}.exec-logs__list[data-v-7079b876]{flex-direction:column;flex:1;gap:10px;min-height:200px;display:flex}.exec-logs__empty[data-v-7079b876]{border:1px dashed var(--border-color);border-radius:var(--radius-md,6px);color:var(--text-tertiary);text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:60px 20px;display:flex}.exec-logs__empty-art[data-v-7079b876]{opacity:.5;margin-bottom:8px;font-size:36px}.exec-logs__empty-title[data-v-7079b876]{font-size:var(--font-size-base);color:var(--text-secondary);margin-bottom:4px;font-weight:600}.exec-logs__empty-hint[data-v-7079b876]{font-size:var(--font-size-sm);max-width:400px}.exec-logs__pager[data-v-7079b876]{justify-content:center;padding-top:8px;display:flex}.exec-card[data-v-7079b876]{background:var(--bg-container);border:1px solid var(--border-color);border-radius:var(--radius-md,6px);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);flex-direction:column;gap:6px;padding:12px 14px;display:flex}.exec-card[data-v-7079b876]:hover{border-color:var(--color-primary)}.exec-card.is-selected[data-v-7079b876]{border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary)}.exec-card__head[data-v-7079b876]{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.exec-card__status[data-v-7079b876]{font-size:var(--font-size-xs);border:1px solid;border-radius:999px;flex-shrink:0;padding:1px 8px;font-weight:600;display:inline-block}.exec-card__title[data-v-7079b876]{font-size:var(--font-size-base);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;min-width:0;max-width:360px;font-weight:600;overflow:hidden}.exec-card__spacer[data-v-7079b876]{flex:1}.exec-card__meta[data-v-7079b876]{font-size:var(--font-size-xs);color:var(--text-tertiary);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:10px;display:inline-flex}.exec-card__task[data-v-7079b876]{white-space:nowrap;text-overflow:ellipsis;max-width:200px;overflow:hidden}.exec-card__time[data-v-7079b876]{font-variant-numeric:tabular-nums}.exec-card__exit[data-v-7079b876]{font-family:var(--font-mono,ui-monospace, monospace)}.exec-card__del[data-v-7079b876]{width:22px;height:22px;font-size:var(--font-size-md);color:var(--text-tertiary);border-radius:var(--radius-base);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;line-height:1;display:inline-flex}.exec-card__del[data-v-7079b876]:hover{background:var(--tint-danger-14);color:var(--color-danger-bright,var(--color-danger-light))}.exec-card__error[data-v-7079b876]{font-size:var(--font-size-sm);color:var(--color-danger-dark,#b91c1c);background:var(--tint-danger-06);border-left:2px solid var(--color-danger-bright,var(--color-danger-light));border-radius:var(--radius-base);font-family:var(--font-mono,ui-monospace, monospace);white-space:pre-wrap;word-break:break-word;margin:0;padding:6px 10px}.wb-sidebar[data-v-b7ae6143]{background:var(--bg-panel);flex-direction:column;flex-shrink:0;gap:18px;width:268px;padding:14px 12px 18px;display:flex;overflow-y:auto}.wb-section[data-v-b7ae6143]{flex-direction:column;flex-shrink:0;gap:8px;min-height:0;display:flex}.wb-section+.wb-section[data-v-b7ae6143]{padding-top:16px}.wb-section__head[data-v-b7ae6143]{align-items:center;gap:6px;padding:0 4px;display:flex}.wb-section__tag[data-v-b7ae6143]{height:18px;font-size:var(--font-size-xs);letter-spacing:.4px;color:var(--text-tertiary);background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-base);text-transform:uppercase;font-variant-numeric:tabular-nums;flex-shrink:0;align-items:center;padding:0 6px;font-weight:600;display:inline-flex}.wb-section__tag--accent[data-v-b7ae6143]{color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 9%, transparent);border-color:var(--tint-primary-22)}.wb-section__title[data-v-b7ae6143]{font-size:var(--font-size-sm);color:var(--text-secondary);letter-spacing:.2px;flex:1;min-width:0;margin:0;font-weight:600}.wb-section__action[data-v-b7ae6143]{color:var(--text-tertiary);border-radius:var(--radius-base);cursor:pointer;width:28px;height:28px;font-size:var(--font-size-mid);transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.wb-section__action[data-v-b7ae6143]:hover{background:var(--tint-primary-12);color:var(--color-primary)}.wb-new-btn[data-v-b7ae6143]{border:1px dashed var(--tint-primary-35,color-mix(in srgb, var(--color-primary) 35%, transparent));border-radius:var(--radius-md);background:linear-gradient(135deg, color-mix(in srgb, var(--color-primary) 4%, transparent) 0%, color-mix(in srgb, var(--color-primary) 2%, transparent) 100%);width:100%;height:32px;color:var(--color-primary);font-size:var(--font-size-mid);letter-spacing:.05px;cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);align-items:center;gap:6px;padding:0 12px;font-weight:600;display:flex}.wb-new-btn__icon[data-v-b7ae6143]{font-size:var(--font-size-mid);transition:transform var(--transition-fast) var(--ease-custom);flex-shrink:0}.wb-new-btn__shortcut[data-v-b7ae6143]{display:none}.wb-new-btn[data-v-b7ae6143]:hover{background:linear-gradient(135deg, color-mix(in srgb, var(--color-primary) 10%, transparent) 0%, color-mix(in srgb, var(--color-primary) 6%, transparent) 100%);color:var(--color-primary);border-style:solid;border-color:var(--tint-primary-50)}.wb-new-btn:hover .wb-new-btn__icon[data-v-b7ae6143]{transform:rotate(90deg)}.wb-new-btn[data-v-b7ae6143]:active{transform:scale(.99)}.wb-new-btn[data-v-b7ae6143]:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.wb-task-list[data-v-b7ae6143],.wb-prompt-list[data-v-b7ae6143]{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.wb-task-list.is-grouped .wb-task-item[data-v-b7ae6143]{margin-left:14px}.wb-task-item[data-v-b7ae6143]{border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);background:0 0;border:none;align-items:center;gap:8px;padding:7px 10px;display:flex;position:relative}.wb-task-item.is-running[data-v-b7ae6143]{background:color-mix(in srgb, var(--color-warning) 8%, transparent)}.wb-task-item.is-running[data-v-b7ae6143]:hover{background:color-mix(in srgb, var(--color-warning) 14%, transparent)}.wb-task-item[data-v-b7ae6143]:hover{background:var(--bg-container-hover);border-color:#0000;transform:translateY(-.5px)}.wb-task-item.active[data-v-b7ae6143]{background:color-mix(in srgb, var(--color-primary) 10%, var(--bg-container));box-shadow:0 1px 3px color-mix(in srgb, var(--color-primary) 12%, transparent), 0 0 0 1px color-mix(in srgb, var(--color-primary) 18%, transparent);border-color:#0000}.wb-task-item.active[data-v-b7ae6143]:after{content:"";border-radius:var(--radius-base);background:linear-gradient(180deg, var(--color-primary) 0%, color-mix(in srgb, var(--color-primary) 70%, #fff) 100%);width:3px;box-shadow:0 0 8px color-mix(in srgb, var(--color-primary) 50%, transparent), 0 1px 3px color-mix(in srgb, var(--color-primary) 25%, transparent);position:absolute;top:5px;bottom:5px;left:-1px}.wb-task-item.active .wb-task-item__title[data-v-b7ae6143],.wb-task-item.active .wb-task-item__del[data-v-b7ae6143]{color:var(--color-primary)}.wb-task-item__running-dot[data-v-b7ae6143]{background:var(--color-warning);width:6px;height:6px;box-shadow:0 0 0 0 color-mix(in srgb, var(--color-warning) 60%, transparent);border-radius:50%;flex:none;margin-left:auto;animation:1.4s ease-in-out infinite wb-running-pulse-b7ae6143}@keyframes wb-running-pulse-b7ae6143{0%,to{box-shadow:0 0 0 0 color-mix(in srgb, var(--color-warning) 60%, transparent);opacity:1;transform:scale(1)}50%{box-shadow:0 0 0 4px color-mix(in srgb, var(--color-warning) 0%, transparent);opacity:.75;transform:scale(1.35)}}.wb-task-item__body[data-v-b7ae6143]{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.wb-task-item__title[data-v-b7ae6143]{font-size:var(--font-size-sm);color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;letter-spacing:-.05px;font-weight:500;line-height:1.3;overflow:hidden}.wb-task-item.is-other-project[data-v-b7ae6143]{opacity:.78}.wb-task-item.is-other-project[data-v-b7ae6143]:hover{opacity:1}.wb-task-item[data-v-b7ae6143]{cursor:grab}.wb-task-item.is-dragging[data-v-b7ae6143]{opacity:.5;cursor:grabbing;pointer-events:none}.wb-task-item.is-drop-before[data-v-b7ae6143]:before,.wb-task-item.is-drop-after[data-v-b7ae6143]:after{content:"";background:var(--color-primary);border-radius:var(--radius-xs);height:2px;box-shadow:0 0 8px color-mix(in srgb, var(--color-primary) 50%, transparent);pointer-events:none;position:absolute;left:8px;right:8px}.wb-task-item.is-drop-before[data-v-b7ae6143]:before{top:-2px}.wb-task-item.is-drop-after[data-v-b7ae6143]:after{bottom:-2px}.wb-task-group__head.is-no-drop[data-v-b7ae6143]{cursor:not-allowed;opacity:.55}.wb-task-item__action-group[data-v-b7ae6143]{border-radius:var(--radius-lg);background:linear-gradient(to right, transparent 0%, var(--bg-container-hover) 40%);opacity:0;pointer-events:none;transition:opacity var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);align-items:center;gap:2px;padding:1px 1px 1px 14px;display:inline-flex;position:absolute;top:50%;right:6px;transform:translateY(-50%)translate(-2px)}.wb-task-item:hover .wb-task-item__action-group[data-v-b7ae6143],.wb-task-item.active .wb-task-item__action-group[data-v-b7ae6143]{opacity:1;pointer-events:auto;transform:translateY(-50%)translate(0)}.wb-task-item.active .wb-task-item__action-group[data-v-b7ae6143]{background:linear-gradient(to right, transparent 0%, color-mix(in srgb, var(--color-primary) 10%, var(--bg-container)) 40%)}.wb-task-item.is-running .wb-task-item__action-group[data-v-b7ae6143]{background:linear-gradient(to right, transparent 0%, color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 8%, var(--bg-panel)) 40%)}.wb-task-item__copy[data-v-b7ae6143]{color:var(--text-tertiary);border-radius:var(--radius-md);cursor:pointer;width:22px;height:22px;font-size:var(--font-size-sm);transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.wb-task-item__copy[data-v-b7ae6143]:hover{background:color-mix(in srgb, var(--color-primary) 12%, transparent);color:var(--color-primary)}.wb-task-item__copy[data-v-b7ae6143]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset)}.wb-task-item__copy[data-v-b7ae6143]:active{transform:scale(.9)}.wb-task-item__del[data-v-b7ae6143]{color:var(--text-tertiary);border-radius:var(--radius-md);cursor:pointer;width:22px;height:22px;font-size:var(--font-size-sm);transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.wb-task-item__del[data-v-b7ae6143]:hover{background:color-mix(in srgb, var(--color-danger) 14%, transparent);color:var(--color-danger)}.wb-task-item__del[data-v-b7ae6143]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset);opacity:1}.wb-task-item__del[data-v-b7ae6143],.wb-prompt-item__del[data-v-b7ae6143],.wb-sub-item__del[data-v-b7ae6143]{font-size:var(--font-size-mid)}.wb-prompt-item[data-v-b7ae6143]{border-radius:var(--radius-md);font-size:var(--font-size-mid);color:var(--text-primary);transition:background var(--transition-fast) var(--ease-custom);align-items:center;gap:8px;padding:7px 8px;display:flex;position:relative}.wb-prompt-item[data-v-b7ae6143]:hover{background:var(--bg-container-hover)}.wb-prompt-item:hover .wb-prompt-item__del[data-v-b7ae6143]{opacity:1}.wb-prompt-item__icon[data-v-b7ae6143]{border-radius:var(--radius-base);background:var(--tint-primary-08);width:22px;height:22px;color:var(--color-primary);font-size:var(--font-size-sm);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.wb-prompt-item__name[data-v-b7ae6143]{font:inherit;text-align:left;cursor:pointer;white-space:nowrap;text-overflow:ellipsis;width:100%;min-width:0;color:var(--text-primary);letter-spacing:-.05px;background:0 0;border:none;flex:1;padding:0;font-weight:500;overflow:hidden}.wb-prompt-item__tag[data-v-b7ae6143]{border-radius:var(--radius-xs);max-width:96px;font-size:var(--font-size-xs);letter-spacing:.1px;background:var(--tint-primary-08);color:var(--color-primary);white-space:nowrap;text-overflow:ellipsis;flex-shrink:0;padding:1px 6px;line-height:16px;overflow:hidden}.wb-prompt-item__tag--project[data-v-b7ae6143]{background:var(--bg-subtle);color:var(--text-secondary);border:1px solid var(--border-color-light)}.wb-prompt-item__del[data-v-b7ae6143]{color:var(--text-tertiary);border-radius:var(--radius-xs);cursor:pointer;width:20px;height:20px;font-size:var(--font-size-sm);opacity:0;transition:opacity var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.wb-prompt-item__del[data-v-b7ae6143]:hover{background:color-mix(in srgb, var(--color-danger) 14%, transparent);color:var(--color-danger)}.wb-prompt-item__del[data-v-b7ae6143]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset);opacity:1}.wb-empty[data-v-b7ae6143]{text-align:center;color:var(--text-tertiary);border-radius:var(--radius-md);background:linear-gradient(135deg, var(--bg-subtle) 0%, color-mix(in srgb, var(--tint-primary-06) 50%, transparent) 100%);border:1px dashed var(--border-color-light);flex-direction:column;align-items:center;gap:8px;padding:24px 14px 20px;display:flex;position:relative;overflow:hidden}.wb-empty[data-v-b7ae6143]:before{content:"";background:radial-gradient(circle, color-mix(in srgb, var(--color-primary) 5%, transparent) 0%, transparent 70%);pointer-events:none;border-radius:50%;width:100px;height:100px;position:absolute;top:-25px;right:-25px}.wb-empty--compact[data-v-b7ae6143]{background:var(--bg-subtle);border-style:solid;flex-direction:row;justify-content:center;gap:0;padding:10px 12px}.wb-empty--compact[data-v-b7ae6143]:before{display:none}.wb-empty__art[data-v-b7ae6143]{border-radius:var(--radius-xl);background:linear-gradient(135deg, var(--tint-primary-12) 0%, var(--tint-primary-08) 100%);width:52px;height:52px;color:var(--color-primary);font-size:var(--font-size-2xl);box-shadow:0 4px 12px color-mix(in srgb, var(--color-primary) 10%, transparent);z-index:1;justify-content:center;align-items:center;margin-bottom:4px;display:flex;position:relative}.wb-empty__title[data-v-b7ae6143]{font-size:var(--font-size-base);letter-spacing:var(--letter-spacing-heading,-.25px);color:var(--text-secondary);z-index:1;font-weight:600;line-height:1.45;position:relative}.wb-empty--rich .wb-empty__hint[data-v-b7ae6143]{font-size:var(--font-size-sm);color:var(--text-tertiary);z-index:1;max-width:280px;line-height:1.6;position:relative}.wb-empty__cta[data-v-b7ae6143]{z-index:1;flex-wrap:wrap;justify-content:center;align-items:center;gap:14px;margin-top:8px;display:flex;position:relative}.wb-pill[data-v-b7ae6143]{border-radius:var(--radius-lg);min-width:16px;height:16px;font-size:var(--font-size-xs);color:var(--text-tertiary);background:var(--bg-subtle);font-variant-numeric:tabular-nums;flex-shrink:0;justify-content:center;align-items:center;padding:0 5px;font-weight:600;display:inline-flex}.wb-section__count[data-v-b7ae6143]{background:var(--tint-primary-12);color:var(--color-primary)}.wb-task-group__head[data-v-b7ae6143]{border-radius:var(--radius-md);cursor:pointer;-webkit-user-select:none;user-select:none;font-size:var(--font-size-mid);color:var(--text-secondary);transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);align-items:center;gap:6px;margin-bottom:2px;padding:5px 6px;font-weight:600;display:flex}.wb-task-group__head[data-v-b7ae6143]:hover{background:var(--bg-container-hover);color:var(--text-primary)}.wb-task-group__head.is-current[data-v-b7ae6143]{color:var(--color-primary);font-weight:600}.wb-task-group__caret[data-v-b7ae6143]{font-size:var(--font-size-sm);transition:transform var(--transition-fast);flex-shrink:0}.wb-task-group__icon[data-v-b7ae6143]{font-size:var(--font-size-base);opacity:.7;flex-shrink:0}.wb-task-group__name[data-v-b7ae6143]{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.wb-task-group__count[data-v-b7ae6143]{min-width:14px;height:14px;font-size:var(--font-size-xs);background:var(--bg-subtle);padding:0 4px}.proj[data-v-43ec6df2]{flex-direction:column;flex:auto;min-height:0;display:flex;overflow:hidden}.proj__head[data-v-43ec6df2]{flex-shrink:0;align-items:center;gap:6px;padding:10px 12px 6px;display:flex}.proj__title[data-v-43ec6df2]{font-size:var(--font-size-sm);color:var(--text-secondary);flex:1;min-width:0;margin:0;font-weight:500}.proj__count[data-v-43ec6df2]{font-size:var(--font-size-xs);color:var(--text-tertiary);font-variant-numeric:tabular-nums;text-align:right}.proj__tools[data-v-43ec6df2]{flex-direction:column;flex-shrink:0;gap:6px;padding:0 12px 8px;display:flex}.proj__search[data-v-43ec6df2]{border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-subtle);height:24px;transition:border-color var(--transition-fast) var(--ease-custom);align-items:center;gap:5px;padding:0 7px;display:flex}.proj__search[data-v-43ec6df2]:focus-within{border-color:var(--color-primary);box-shadow:var(--focus-ring-soft)}.proj__search-icon[data-v-43ec6df2]{font-size:var(--font-size-sm);color:var(--text-tertiary);flex-shrink:0}.proj__search-input[data-v-43ec6df2]{min-width:0;font-family:inherit;font-size:var(--font-size-sm);color:var(--text-primary);background:0 0;border:none;outline:none;flex:1}.proj__search-input[data-v-43ec6df2]::placeholder{color:var(--text-tertiary)}.proj__toggles[data-v-43ec6df2]{align-items:center;gap:6px;display:flex}.proj__toggle[data-v-43ec6df2]{border:1px solid var(--border-color);border-radius:var(--radius-md);min-width:0;height:22px;color:var(--text-tertiary);font-family:inherit;font-size:var(--font-size-xs);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;flex:1 1 0;padding:0 6px;line-height:1}.proj__toggle>span[data-v-43ec6df2]{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.proj__toggle[data-v-43ec6df2]:hover{color:var(--text-secondary);border-color:var(--text-tertiary)}.proj__toggle.is-on[data-v-43ec6df2]{color:var(--color-primary);border-color:var(--color-primary);background:var(--tint-primary-12)}.proj__toggle[data-v-43ec6df2]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.proj__list[data-v-43ec6df2]{flex:auto;min-height:0;margin:0;padding:0 6px 8px;list-style:none;overflow-y:auto}.proj-item[data-v-43ec6df2]{border-radius:var(--radius-lg);cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), box-shadow var(--transition-fast) var(--ease-custom);outline:none;padding:7px 8px;position:relative}.proj-item[data-v-43ec6df2]:hover{background:var(--bg-container-hover)}.proj-item.is-active[data-v-43ec6df2]{background:linear-gradient(90deg, var(--tint-primary-10), var(--tint-primary-04));box-shadow:inset 0 0 0 1px var(--tint-primary-14)}.proj-item[data-v-43ec6df2]:focus-visible{outline:var(--focus-outline);outline-offset:-1px}.proj-item.is-running[data-v-43ec6df2]{background:color-mix(in srgb, var(--color-warning) 7%, transparent)}.proj-item--all[data-v-43ec6df2]{border-bottom:1px solid var(--border-color);border-radius:var(--radius-lg) var(--radius-lg) 0 0;margin-bottom:4px}.proj-item__num[data-v-43ec6df2]{font-size:var(--font-size-xs);border-radius:var(--radius-base);color:var(--text-secondary);background:var(--bg-subtle);font-variant-numeric:tabular-nums;flex-shrink:0;padding:0 5px;line-height:15px}.proj-item__running-text[data-v-43ec6df2]{color:var(--color-warning);font-variant-numeric:tabular-nums;flex-shrink:0;margin-left:auto}.proj-item__row1[data-v-43ec6df2]{align-items:center;gap:6px;min-width:0;display:flex}.proj-item__icon[data-v-43ec6df2]{font-size:var(--font-size-mid);color:var(--text-tertiary);flex-shrink:0}.proj-item.is-active .proj-item__icon[data-v-43ec6df2]{color:var(--color-primary)}.proj-item__name[data-v-43ec6df2]{font-size:var(--font-size-mid);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;padding-right:44px;font-weight:500;line-height:1.4;overflow:hidden}.proj-item__signals[data-v-43ec6df2]{transition:opacity var(--transition-fast) var(--ease-custom);flex-shrink:0;align-items:center;gap:6px;display:inline-flex}.proj-item:not(.is-missing):hover .proj-item__signals[data-v-43ec6df2]{opacity:0}.proj-item:not(.is-missing):has(.proj-item__action:focus-visible) .proj-item__signals[data-v-43ec6df2]{opacity:0}.proj-item__running[data-v-43ec6df2]{background:var(--color-warning);width:6px;height:6px;box-shadow:var(--dot-glow-warning);border-radius:50%;flex-shrink:0;animation:1.4s ease-in-out infinite proj-pulse-43ec6df2}@keyframes proj-pulse-43ec6df2{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(1.3)}}.proj-item__badge[data-v-43ec6df2]{font-size:var(--font-size-xs);border-radius:var(--radius-base);color:var(--color-primary);background:var(--tint-primary-12);flex-shrink:0;padding:0 5px;line-height:15px}.proj-item__actions[data-v-43ec6df2]{opacity:0;pointer-events:none;transition:opacity var(--transition-fast) var(--ease-custom);align-items:center;gap:2px;display:inline-flex;position:absolute;top:6px;right:8px}.proj-item:hover .proj-item__actions[data-v-43ec6df2]{opacity:1;pointer-events:auto}.proj-item:has(.proj-item__action:focus-visible) .proj-item__actions[data-v-43ec6df2]{opacity:1;pointer-events:auto}.proj-item:has(.proj-item__action.is-open) .proj-item__actions[data-v-43ec6df2]{opacity:1;pointer-events:auto}.proj-item__action[data-v-43ec6df2]{border-radius:var(--radius-base);width:20px;height:20px;color:var(--text-tertiary);font-size:var(--font-size-mid);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.proj-item__action[data-v-43ec6df2]:hover{color:var(--color-primary);background:var(--tint-primary-12)}.proj-item__action[data-v-43ec6df2]:active{color:var(--color-primary)}.proj-item__action[data-v-43ec6df2]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.proj-item__action.is-open[data-v-43ec6df2]{color:var(--color-primary);background:var(--tint-primary-12)}.proj-menu[data-v-43ec6df2]{font-size:var(--font-size-mid);color:var(--text-primary);margin:0;padding:2px 0;list-style:none}.proj-menu__item[data-v-43ec6df2]{border-radius:var(--radius-md);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);align-items:center;gap:9px;padding:7px 10px;display:flex}.proj-menu__item[data-v-43ec6df2]:hover,.proj-menu__item[data-v-43ec6df2]:focus-visible{background:var(--tint-primary-12);outline:none}.proj-menu__icon[data-v-43ec6df2]{width:16px;height:16px;font-size:var(--font-size-base);color:var(--text-secondary);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.proj-menu__icon[data-v-43ec6df2] svg{width:16px;height:16px}.proj-menu__img[data-v-43ec6df2]{object-fit:contain;-webkit-user-drag:none;width:16px;height:16px}.proj-menu__label[data-v-43ec6df2]{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.proj-menu__hint[data-v-43ec6df2]{font-size:var(--font-size-xs);color:var(--text-tertiary);transition:color var(--transition-fast) var(--ease-custom);flex-shrink:0}.proj-menu__item:hover .proj-menu__hint[data-v-43ec6df2]{color:var(--color-primary)}.proj-menu__sep[data-v-43ec6df2]{background:var(--border-color);height:1px;margin:4px 6px}.proj-menu__title[data-v-43ec6df2]{font-size:var(--font-size-xs);letter-spacing:.3px;color:var(--text-tertiary);padding:4px 10px 3px;font-weight:600}.proj-menu__item--danger .proj-menu__label[data-v-43ec6df2]{color:var(--color-warning)}.proj-menu__item.is-missing .proj-menu__icon[data-v-43ec6df2]{opacity:.5;filter:grayscale(.65)}.proj-menu__item.is-missing:hover .proj-menu__icon[data-v-43ec6df2]{opacity:.85;filter:grayscale(.2)}.proj-item__row2[data-v-43ec6df2]{min-width:0;font-size:var(--font-size-xs);color:var(--text-tertiary);align-items:center;gap:5px;margin-top:2px;display:flex}.proj-item__branch[data-v-43ec6df2]{min-width:0;max-width:130px;font-family:var(--font-mono,ui-monospace, monospace);align-items:center;gap:4px;display:inline-flex}.proj-item__branch-name[data-v-43ec6df2]{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.proj-item__branch[data-v-43ec6df2] .proj-item__branch-icon{color:currentColor;flex-shrink:0;width:11px;height:11px}.proj-item__time[data-v-43ec6df2]{font-variant-numeric:tabular-nums;flex-shrink:0;margin-left:auto}.proj-chip[data-v-43ec6df2]{font-size:var(--font-size-xs);border-radius:var(--radius-pill);font-variant-numeric:tabular-nums;flex-shrink:0;padding:0 6px;line-height:14px}.proj-chip--ahead[data-v-43ec6df2]{color:var(--color-primary);background:var(--tint-primary-12)}.proj-chip--behind[data-v-43ec6df2]{color:var(--color-warning);background:color-mix(in srgb, var(--color-warning) 14%, transparent)}.proj-chip--dirty[data-v-43ec6df2]{color:var(--text-secondary);background:var(--bg-subtle)}.proj-chip--missing[data-v-43ec6df2]{color:var(--color-danger-light);background:color-mix(in srgb, var(--color-danger) 12%, transparent)}.proj-item__row3[data-v-43ec6df2]{align-items:center;gap:6px;margin-top:5px;display:flex}.proj-item__bar[data-v-43ec6df2]{border-radius:var(--radius-pill);background:var(--bg-subtle);flex:1;min-width:0;height:4px;overflow:hidden}.proj-item__bar-fill[data-v-43ec6df2]{border-radius:var(--radius-pill);background:var(--gradient-progress);height:100%;transition:width var(--transition-base) var(--ease-custom);display:block}.proj-item__progress-text[data-v-43ec6df2]{font-size:var(--font-size-xs);color:var(--text-tertiary);font-variant-numeric:tabular-nums;flex-shrink:0}.proj-empty[data-v-43ec6df2]{text-align:center;border-radius:var(--radius-lg);background:var(--bg-subtle);margin:0 6px;padding:20px 12px;list-style:none}.proj-empty__title[data-v-43ec6df2]{font-size:var(--font-size-mid);color:var(--text-secondary);margin:0 0 4px}.proj-empty__hint[data-v-43ec6df2]{font-size:var(--font-size-xs);color:var(--text-tertiary);margin:0;line-height:1.6}.proj-empty__clear[data-v-43ec6df2]{color:var(--color-primary);font-family:inherit;font-size:var(--font-size-xs);cursor:pointer;background:0 0;border:none;margin-top:8px;padding:2px 4px}.proj-empty__clear[data-v-43ec6df2]:hover{text-decoration:underline}.proj-empty__clear[data-v-43ec6df2]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.agents[data-v-0843acc2]{min-height:0;height:var(--wb-agents-h,auto);max-height:var(--wb-agents-h,42%);flex-direction:column;flex:none;display:flex;overflow:hidden}.agents__head[data-v-0843acc2]{flex-shrink:0;align-items:center;gap:6px;padding:10px 12px 6px;display:flex}.agents__title[data-v-0843acc2]{font-size:var(--font-size-sm);color:var(--text-secondary);flex:1;min-width:0;margin:0;font-weight:500}.agents__count[data-v-0843acc2]{font-size:var(--font-size-xs);color:var(--text-tertiary);font-variant-numeric:tabular-nums}.agents__count.is-live[data-v-0843acc2]{color:var(--color-warning)}.agents__list[data-v-0843acc2]{flex:auto;min-height:0;margin:0;padding:0 6px 8px;list-style:none;overflow-y:auto}.agent-item[data-v-0843acc2]{border-radius:var(--radius-lg);background:color-mix(in srgb, var(--color-warning) 7%, transparent);margin-bottom:4px;padding:7px 8px}.agent-item__row1[data-v-0843acc2]{align-items:center;gap:6px;min-width:0;display:flex}.agent-item__dot[data-v-0843acc2]{background:var(--color-warning);width:6px;height:6px;box-shadow:var(--dot-glow-warning);border-radius:50%;flex-shrink:0;animation:1.4s ease-in-out infinite agent-pulse-0843acc2}.agent-item__dot.is-pending[data-v-0843acc2]{background:var(--text-tertiary);box-shadow:none;animation:none}@keyframes agent-pulse-0843acc2{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(1.3)}}.agent-item__project[data-v-0843acc2]{font-size:var(--font-size-sm);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-weight:500;overflow:hidden}.agent-item__status[data-v-0843acc2]{font-size:var(--font-size-xs);color:var(--color-warning);flex-shrink:0}.agent-item__task[data-v-0843acc2]{font-size:var(--font-size-sm);color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;margin:3px 0 0 12px;line-height:1.5;overflow:hidden}.agent-item__row3[data-v-0843acc2]{font-size:var(--font-size-xs);color:var(--text-tertiary);font-variant-numeric:tabular-nums;align-items:center;gap:8px;margin:3px 0 0 12px;display:flex}.agent-item__elapsed[data-v-0843acc2]{margin-left:auto}.agents-empty[data-v-0843acc2]{text-align:center;font-size:var(--font-size-xs);color:var(--text-tertiary);padding:14px 10px;list-style:none}.kb[data-v-de96d0c8]{flex-direction:column;flex:auto;min-width:0;min-height:0;display:flex}.kb__toolbar[data-v-de96d0c8]{border-bottom:1px solid var(--border-color);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:10px;padding:8px 12px;display:flex}.kb__views[data-v-de96d0c8]{border-radius:var(--radius-lg);background:var(--bg-subtle);flex-shrink:0;align-items:center;gap:2px;padding:3px;display:inline-flex}.kb__view-btn[data-v-de96d0c8]{color:var(--text-secondary);font-size:var(--font-size-sm);border-radius:var(--radius-base);cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);background:0 0;border:none;padding:0 10px;line-height:20px}.kb__view-btn[data-v-de96d0c8]:hover{color:var(--text-primary)}.kb__view-btn.is-active[data-v-de96d0c8]{background:var(--surface-elevated);box-shadow:var(--shadow-card-rest);color:var(--color-primary);font-weight:500}.kb__filters[data-v-de96d0c8]{flex-wrap:wrap;align-items:center;gap:10px;margin-left:auto;display:flex}.kb__check[data-v-de96d0c8]{font-size:var(--font-size-sm);color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:4px;display:inline-flex}.kb__check input[data-v-de96d0c8]{cursor:pointer}.kb__search[data-v-de96d0c8]{align-items:center;display:inline-flex;position:relative}.kb__search-icon[data-v-de96d0c8]{font-size:var(--font-size-sm);color:var(--text-tertiary);pointer-events:none;position:absolute;left:7px}.kb__search-input[data-v-de96d0c8]{width:168px;height:24px;font-size:var(--font-size-sm);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), width var(--transition-base) var(--ease-custom);outline:none;padding:0 8px 0 24px}.kb__search-input[data-v-de96d0c8]:focus{border-color:var(--color-primary);box-shadow:var(--focus-ring-soft);width:216px}.kb__search-input[data-v-de96d0c8]::placeholder{color:var(--text-tertiary)}.kb__columns[data-v-de96d0c8]{flex:auto;min-height:0;display:grid;overflow:hidden}.kb-col[data-v-de96d0c8]{border-left:1px solid var(--border-color);flex-direction:column;min-width:0;min-height:0;display:flex}.kb-col[data-v-de96d0c8]:first-child{border-left:none}.kb-col__head[data-v-de96d0c8]{border-bottom:1px solid var(--border-color-light);flex-shrink:0;align-items:center;gap:6px;padding:9px 10px 7px;display:flex}.kb-col__dot[data-v-de96d0c8]{background:var(--text-tertiary);border-radius:50%;flex-shrink:0;width:6px;height:6px}.kb-col--doing .kb-col__dot[data-v-de96d0c8]{background:var(--color-warning);box-shadow:var(--dot-glow-warning);animation:1.4s ease-in-out infinite kb-pulse-de96d0c8}.kb-col--done .kb-col__dot[data-v-de96d0c8]{background:var(--color-success);box-shadow:var(--dot-glow-success)}@keyframes kb-pulse-de96d0c8{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(1.35)}}.kb-col__title[data-v-de96d0c8]{font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-wide);color:var(--text-secondary);flex:1;min-width:0;margin:0;font-weight:500}.kb-col__count[data-v-de96d0c8]{font-size:var(--font-size-xs);color:var(--text-tertiary);font-variant-numeric:tabular-nums}.kb-col__list[data-v-de96d0c8]{flex:auto;min-height:0;margin:0;padding:0 8px 10px;list-style:none;overflow-y:auto}.kb-card[data-v-de96d0c8]{border:1px solid var(--border-color-light);border-radius:var(--radius-lg);background:var(--surface-elevated);box-shadow:var(--shadow-card-rest);cursor:pointer;transition:border-color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom), box-shadow var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);margin-bottom:6px;padding:8px 10px;position:relative}.kb-card[data-v-de96d0c8]:hover{border-color:var(--border-card-hover);background:var(--surface-elevated);box-shadow:var(--shadow-card-lift);transform:translateY(-1px)}.kb-card.is-running[data-v-de96d0c8]{border-color:color-mix(in srgb, var(--color-warning) 45%, var(--border-color));background:color-mix(in srgb, var(--color-warning) 4%, var(--surface-elevated))}.kb-card.has-error[data-v-de96d0c8]{border-color:color-mix(in srgb, var(--color-danger) 40%, var(--border-color));background:color-mix(in srgb, var(--color-danger) 4%, var(--surface-elevated))}.kb-card__row1[data-v-de96d0c8]{min-width:0;font-size:var(--font-size-xs);color:var(--text-tertiary);align-items:center;gap:4px;margin-bottom:4px;display:flex}.kb-card__running[data-v-de96d0c8]{background:var(--color-warning);width:6px;height:6px;box-shadow:var(--dot-glow-warning);border-radius:50%;flex-shrink:0;animation:1.4s ease-in-out infinite kb-pulse-de96d0c8}.kb-card__time[data-v-de96d0c8]{font-variant-numeric:tabular-nums;flex-shrink:0;margin-left:auto}.kb-card__title[data-v-de96d0c8]{font-size:var(--font-size-mid);color:var(--text-primary);-webkit-line-clamp:2;line-clamp:2;word-break:break-word;-webkit-box-orient:vertical;margin:0;line-height:1.5;display:-webkit-box;overflow:hidden}.kb-card__project[data-v-de96d0c8]{font-size:var(--font-size-xs);color:var(--text-tertiary);white-space:nowrap;text-overflow:ellipsis;margin:3px 0 0;overflow:hidden}.kb-card__actions[data-v-de96d0c8]{opacity:0;pointer-events:none;transition:opacity var(--transition-fast) var(--ease-custom);align-items:center;gap:2px;padding-left:12px;display:inline-flex;position:absolute;bottom:6px;right:8px}.kb-card:hover .kb-card__actions[data-v-de96d0c8],.kb-card:focus-within .kb-card__actions[data-v-de96d0c8]{opacity:1;pointer-events:auto}.kb-card:hover .kb-card__title[data-v-de96d0c8],.kb-card:focus-within .kb-card__title[data-v-de96d0c8],.kb-card:hover .kb-card__project[data-v-de96d0c8],.kb-card:focus-within .kb-card__project[data-v-de96d0c8]{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 80px),#0000 calc(100% - 64px));mask-image:linear-gradient(90deg,#000 calc(100% - 80px),#0000 calc(100% - 64px))}.kb-card__btn[data-v-de96d0c8]{color:var(--text-tertiary);font-size:var(--font-size-xs);border-radius:var(--radius-base);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom);background:0 0;border:none;padding:0 5px;line-height:18px}.kb-card__btn[data-v-de96d0c8]:hover{color:var(--color-primary);background:var(--bg-subtle-hover)}.kb-card__btn--danger[data-v-de96d0c8]{font-size:var(--font-size-base);padding:0 4px}.kb-card__btn--danger[data-v-de96d0c8]:hover{color:var(--color-danger-light)}.kb-card__btn[data-v-de96d0c8]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.kb-col__empty[data-v-de96d0c8]{text-align:center;font-size:var(--font-size-xs);color:var(--text-tertiary);border:1px dashed var(--border-color-light);border-radius:var(--radius-lg);background:var(--bg-subtle);margin:0 2px;padding:18px 8px;list-style:none}.kb-col__add[data-v-de96d0c8]{margin:0;padding:0;list-style:none}.kb-col__add-btn[data-v-de96d0c8]{width:100%;font-size:var(--font-size-xs);color:var(--text-tertiary);border:1px dashed var(--border-color-medium);border-radius:var(--radius-lg);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;justify-content:center;align-items:center;gap:5px;padding:5px 10px;line-height:20px;display:flex}.kb-col__add-btn[data-v-de96d0c8]:hover{color:var(--color-primary);border-color:var(--color-primary);background:var(--bg-subtle)}.kb-col__add-btn[data-v-de96d0c8]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.kb-col__add-plus[data-v-de96d0c8]{font-size:var(--font-size-base);line-height:1}.kb-col__add-btn--solo[data-v-de96d0c8]{padding:18px 8px}.kb__table-wrap[data-v-de96d0c8]{flex:auto;min-height:0;overflow:auto}.kb-table[data-v-de96d0c8]{border-collapse:collapse;width:100%;font-size:var(--font-size-sm)}.kb-table__th[data-v-de96d0c8]{z-index:1;text-align:left;font-size:var(--font-size-xs);color:var(--text-tertiary);background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-filter);border-bottom:1px solid var(--border-color);white-space:nowrap;padding:7px 10px;font-weight:500;position:sticky;top:0}.kb-table__th--narrow[data-v-de96d0c8]{width:96px}.kb-table__row[data-v-de96d0c8]{cursor:pointer;transition:background var(--transition-fast) var(--ease-custom)}.kb-table__row[data-v-de96d0c8]:hover{background:var(--bg-container-hover)}.kb-table__td[data-v-de96d0c8]{border-bottom:1px solid var(--border-color);color:var(--text-secondary);vertical-align:middle;padding:8px 10px}.kb-table__td--num[data-v-de96d0c8]{font-variant-numeric:tabular-nums}.kb-table__name[data-v-de96d0c8]{color:var(--text-primary)}.kb-table__project[data-v-de96d0c8]{font-size:var(--font-size-xs);color:var(--text-tertiary);margin-left:6px}.kb-table__status[data-v-de96d0c8]{font-size:var(--font-size-xs);border-radius:var(--radius-base);background:var(--bg-subtle);color:var(--text-secondary);padding:1px 6px}.kb-table__status.is-doing[data-v-de96d0c8]{color:var(--color-warning)}.kb-table__status.is-done[data-v-de96d0c8]{color:var(--color-success)}.kb-table__empty[data-v-de96d0c8]{text-align:center;color:var(--text-tertiary);padding:28px 10px}@media (width<=860px){.kb__columns[data-v-de96d0c8]{display:block;overflow-y:auto}.kb-col[data-v-de96d0c8]{border-left:none;border-top:1px solid var(--border-color)}.kb-col[data-v-de96d0c8]:first-child{border-top:none}.kb-col__list[data-v-de96d0c8]{overflow:visible}}.tep[data-v-88579c65]{vertical-align:middle}.tep__btn[data-v-88579c65]{border:1px solid var(--border-color);border-radius:var(--radius-pill);background:var(--bg-panel);height:22px;color:var(--text-secondary);font-size:var(--font-size-xs);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom);align-items:center;gap:5px;padding:0 8px;display:inline-flex}.tep__btn[data-v-88579c65]:hover,.tep__btn[data-v-88579c65]:focus-visible{color:var(--color-primary);border-color:var(--color-primary)}.tep__btn[data-v-88579c65]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.tep__btn-icon[data-v-88579c65]{font-size:var(--font-size-mid)}.tep__btn-caret[data-v-88579c65]{font-size:var(--font-size-xs);opacity:.7}.tep__item[data-v-88579c65]{align-items:center;gap:8px;min-width:132px;display:inline-flex}.tep__item-icon[data-v-88579c65]{font-size:var(--font-size-base);flex:none}.tep__item-name[data-v-88579c65]{flex:1}.tep__item-check[data-v-88579c65]{color:var(--color-primary);font-size:var(--font-size-sm)}.tep__item-missing[data-v-88579c65]{font-size:var(--font-size-xs);color:var(--text-tertiary,var(--text-secondary))}.acs[data-v-cb72fc94]{flex-direction:column;flex:1;min-height:0;display:flex}.acs__head[data-v-cb72fc94]{border-bottom:1px solid var(--border-color-light);flex:none;align-items:center;gap:6px;height:32px;padding:0 8px;display:flex}.acs__title[data-v-cb72fc94]{font-size:var(--font-size-xs);letter-spacing:.06em;color:var(--text-tertiary);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-weight:700;overflow:hidden}.acs__spacer[data-v-cb72fc94]{flex:1}.acs__engine[data-v-cb72fc94]{flex:none}.acs__icon-btn[data-v-cb72fc94]{border-radius:var(--radius-xs);width:22px;height:22px;color:var(--text-tertiary);cursor:pointer;transition:var(--transition-ui-fast);background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.acs__icon-btn[data-v-cb72fc94]:hover{background:var(--bg-hover);color:var(--text-secondary)}.acs__body[data-v-cb72fc94]{flex:1;grid-template:"stage"minmax(0,1fr)"composer"/minmax(0,1fr);min-height:0;display:grid}.acs__body.is-wide[data-v-cb72fc94]{grid-template-columns:240px minmax(0,1fr);grid-template-areas:"list chat""list composer"}.acs__convs[data-v-cb72fc94]{grid-area:stage;min-height:0;padding:8px;overflow-y:auto}.acs__chat[data-v-cb72fc94]{grid-area:stage;min-height:0;display:flex}.acs__body.is-wide .acs__convs[data-v-cb72fc94]{grid-area:list}.acs__body.is-wide .acs__chat[data-v-cb72fc94]{grid-area:chat}.acs__composer[data-v-cb72fc94]{padding:var(--acu-space-3) var(--acu-space-4) var(--acu-space-4);background:linear-gradient(to top, var(--acu-bg) 70%, transparent);grid-area:composer}.acs__chat[data-v-cb72fc94]>.acu-chat{flex:1;min-width:0}.acs__chat[data-v-cb72fc94] .acu-avatar--left{background:0 0}.acs__foot[data-v-cb72fc94]{border-top:1px solid var(--border-color-light);flex-wrap:wrap;flex:none;align-items:center;gap:6px;padding:6px 8px;display:flex}.acs__foot-label[data-v-cb72fc94]{font-size:var(--font-size-xs);color:var(--text-tertiary)}.acs__foot-hint[data-v-cb72fc94]{font-size:var(--font-size-xs);color:var(--text-tertiary);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.acs__notice[data-v-cb72fc94]{font-size:var(--font-size-xs);color:var(--color-warning);margin:0;line-height:1.5}.oc[data-v-b64a5618]{width:var(--wb-right-w,300px);border-left:1px solid var(--border-color-light);background:var(--bg-panel);min-height:0;transition:width var(--transition-base) var(--ease-custom);flex-direction:column;flex-shrink:0;display:flex}.board__cols.is-resizing .oc[data-v-b64a5618]{transition:none}.oc.is-collapsed[data-v-b64a5618]{width:32px}.oc__rail[data-v-b64a5618]{width:100%;min-height:0;color:var(--text-tertiary);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-direction:column;flex:auto;align-items:center;gap:8px;padding:10px 0;display:flex}.oc__rail[data-v-b64a5618]:hover{color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 8%, transparent)}.oc__rail[data-v-b64a5618]:focus-visible{outline:var(--focus-outline);outline-offset:-2px}.oc__rail-icon[data-v-b64a5618]{font-size:var(--font-size-base);flex-shrink:0}.oc__rail-live[data-v-b64a5618]{background:var(--color-success);width:6px;height:6px;box-shadow:var(--dot-glow-success);border-radius:50%;flex-shrink:0;animation:1.6s ease-in-out infinite oc-pulse-b64a5618}.oc__rail-live.is-off[data-v-b64a5618]{background:var(--color-warning);box-shadow:var(--dot-glow-warning);animation:none}.oc__rail-text[data-v-b64a5618]{writing-mode:vertical-rl;letter-spacing:1px;font-size:var(--font-size-sm);color:var(--text-secondary);-webkit-user-select:none;user-select:none}.oc__head[data-v-b64a5618]{border-bottom:1px solid var(--border-color-light);flex-shrink:0;align-items:center;gap:6px;padding:10px 12px;display:flex}.oc__live[data-v-b64a5618]{background:var(--color-success);width:6px;height:6px;box-shadow:var(--dot-glow-success);border-radius:50%;flex-shrink:0;animation:1.6s ease-in-out infinite oc-pulse-b64a5618}.oc__live.is-off[data-v-b64a5618]{background:var(--color-warning);box-shadow:var(--dot-glow-warning);animation:none}@keyframes oc-pulse-b64a5618{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(1.35)}}.oc__title[data-v-b64a5618]{font-size:var(--font-size-sm);color:var(--text-secondary);flex:1;min-width:0;margin:0;font-weight:500}.oc__toggle[data-v-b64a5618]{color:var(--text-tertiary);font-size:var(--font-size-xs);border-radius:var(--radius-base);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;border:none;padding:2px 6px}.oc__toggle[data-v-b64a5618]:hover:not(:disabled){color:var(--color-warning);background:color-mix(in srgb, var(--color-warning) 10%, transparent)}.oc__toggle[data-v-b64a5618]:disabled{opacity:.5;cursor:default}.oc__toggle[data-v-b64a5618]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.oc__collapse[data-v-b64a5618]{width:22px;height:22px;color:var(--text-tertiary);border-radius:var(--radius-base);font-size:var(--font-size-mid);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.oc__collapse[data-v-b64a5618]:hover{color:var(--color-primary)}.oc__collapse[data-v-b64a5618]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.oc__state[data-v-b64a5618]{font-size:var(--font-size-xs);color:var(--text-secondary);background:var(--bg-subtle);background-image:var(--gradient-accent-soft);flex-shrink:0;align-items:center;gap:6px;padding:6px 12px;display:flex}.oc__state.is-paused[data-v-b64a5618]{color:var(--color-warning)}.oc__state-label[data-v-b64a5618]{color:var(--text-tertiary)}.oc__state-value[data-v-b64a5618]{font-weight:500}.oc__state-meta[data-v-b64a5618]{color:var(--text-tertiary);font-variant-numeric:tabular-nums;margin-left:auto}.oc__mode[data-v-b64a5618]{border-radius:var(--radius-pill);background:var(--bg-subtle);border:1px solid var(--border-color-light);flex-shrink:0;gap:2px;margin:8px 12px 0;padding:2px;display:flex}.oc__mode-btn[data-v-b64a5618]{border-radius:var(--radius-pill);height:22px;color:var(--text-tertiary);font-size:var(--font-size-xs);cursor:pointer;transition:var(--transition-ui-fast);background:0 0;border:none;flex:1}.oc__mode-btn[data-v-b64a5618]:hover{color:var(--text-secondary)}.oc__mode-btn.is-active[data-v-b64a5618]{background:var(--bg-panel);color:var(--color-primary);box-shadow:var(--shadow-xs,0 1px 2px #0000000f);font-weight:500}.oc__mode-btn[data-v-b64a5618]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.oc__chat[data-v-b64a5618]{min-height:0}.oc__report[data-v-b64a5618]{flex-direction:column;flex:auto;min-height:0;padding:8px 0 0;display:flex}.oc__panel-title[data-v-b64a5618]{font-size:var(--font-size-xs);color:var(--text-tertiary);flex-shrink:0;align-items:center;gap:6px;margin:0 12px 6px;display:flex}.oc__report-head[data-v-b64a5618]{flex-shrink:0;align-items:center;gap:6px;margin:0 12px 6px;display:flex}.oc__report-head .oc__panel-title[data-v-b64a5618]{flex:1;min-width:0;margin:0}.oc__interval[data-v-b64a5618]{max-width:116px;height:22px;font-size:var(--font-size-xs);color:var(--text-secondary);background:var(--bg-subtle);border:1px solid var(--border-color-light);border-radius:var(--radius-pill);cursor:pointer;transition:border-color var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);outline:none;flex-shrink:0;padding:0 2px 0 6px;font-family:inherit}.oc__interval[data-v-b64a5618]:hover{color:var(--text-primary);border-color:var(--border-color)}.oc__interval[data-v-b64a5618]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.oc__report-run[data-v-b64a5618]{border:1px solid var(--border-color-light);border-radius:var(--radius-pill);background:var(--bg-panel);height:22px;color:var(--text-secondary);font-size:var(--font-size-xs);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom);flex-shrink:0;align-items:center;gap:3px;padding:0 8px;font-family:inherit;display:inline-flex}.oc__report-run[data-v-b64a5618]:hover:not(:disabled){color:var(--color-primary);border-color:var(--color-primary)}.oc__report-run[data-v-b64a5618]:disabled{opacity:.55;cursor:default}.oc__report-run[data-v-b64a5618]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.oc__report-run-icon[data-v-b64a5618]{font-size:var(--font-size-xs)}.oc__report-run-icon.is-spin[data-v-b64a5618]{animation:1s linear infinite oc-spin-b64a5618}@keyframes oc-spin-b64a5618{to{transform:rotate(360deg)}}.oc__report-list[data-v-b64a5618]{flex:auto;min-height:0;margin:0;padding:0 10px 10px;list-style:none;overflow-y:auto}.rp[data-v-b64a5618]{border-radius:var(--radius-lg);background:var(--bg-subtle);border:1px solid var(--border-color-light);padding:8px 9px}.rp__head[data-v-b64a5618]{font-size:var(--font-size-xs);align-items:center;gap:6px;margin-bottom:4px;display:flex}.rp__trigger[data-v-b64a5618]{color:var(--color-primary);font-weight:500}.rp__trigger.is-auto[data-v-b64a5618]{color:var(--text-tertiary);font-weight:400}.rp__count[data-v-b64a5618]{color:var(--text-tertiary)}.rp__time[data-v-b64a5618]{color:var(--text-tertiary);font-variant-numeric:tabular-nums;margin-left:auto}.rp__text[data-v-b64a5618]{font-size:var(--font-size-sm);color:var(--text-primary);word-break:break-word;white-space:pre-wrap;margin:0;line-height:1.6}.rp__notice[data-v-b64a5618]{font-size:var(--font-size-xs);color:var(--text-tertiary);margin:0;line-height:1.55}.rp__tasks[data-v-b64a5618]{border-top:1px dashed var(--border-color-light);flex-direction:column;gap:6px;margin:8px 0 0;padding:8px 0 0;list-style:none;display:flex}.rpt__title[data-v-b64a5618]{font-size:var(--font-size-xs);color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.rpt__meta[data-v-b64a5618]{font-size:var(--font-size-xs);color:var(--text-tertiary);font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:6px;margin:1px 0 0;display:flex}.rpt__project[data-v-b64a5618]{color:var(--text-secondary)}.rpt__line[data-v-b64a5618]{font-size:var(--font-size-xs);color:var(--text-tertiary);-webkit-line-clamp:2;line-clamp:2;word-break:break-word;-webkit-box-orient:vertical;margin:2px 0 0;line-height:1.5;display:-webkit-box;overflow:hidden}.oc__history[data-v-b64a5618]{border-top:1px solid var(--border-color-light);flex-shrink:0;max-height:132px;padding:6px 10px 8px;overflow-y:auto}.oc__history-title[data-v-b64a5618]{font-size:var(--font-size-xs);color:var(--text-tertiary);margin:0 2px 4px}.oc__history-list[data-v-b64a5618]{margin:0;padding:0;list-style:none}.oc__history-item[data-v-b64a5618]{border-radius:var(--radius-base);width:100%;color:var(--text-tertiary);font-size:var(--font-size-xs);text-align:left;cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);background:0 0;border:none;align-items:center;gap:6px;padding:3px 6px;font-family:inherit;display:flex}.oc__history-item[data-v-b64a5618]:hover{background:var(--bg-subtle);color:var(--text-secondary)}.oc__history-item.is-active[data-v-b64a5618]{background:color-mix(in srgb, var(--color-primary) 10%, transparent);color:var(--text-primary)}.oc__history-item[data-v-b64a5618]:focus-visible{outline:var(--focus-outline);outline-offset:-2px}.oc__history-time[data-v-b64a5618]{font-variant-numeric:tabular-nums;flex-shrink:0}.oc__history-sum[data-v-b64a5618]{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.oc-empty[data-v-b64a5618]{text-align:center;font-size:var(--font-size-xs);color:var(--text-tertiary);padding:20px 10px;list-style:none}.oc__git[data-v-b64a5618]{border-top:1px solid var(--border-color-light);flex-shrink:0;padding:8px 12px 10px}.oc__git-name[data-v-b64a5618]{color:var(--text-secondary);font-weight:500}.oc__git-list[data-v-b64a5618]{font-size:var(--font-size-xs);grid-template-columns:auto 1fr;gap:4px 10px;margin:0;display:grid}.oc__git-label[data-v-b64a5618]{color:var(--text-tertiary)}.oc__git-value[data-v-b64a5618]{text-align:right;color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.oc__git-value.is-warn[data-v-b64a5618]{color:var(--color-warning)}.oc__git-value.is-danger[data-v-b64a5618]{color:var(--color-danger-light)}.oc__compose[data-v-b64a5618]{border-top:1px solid var(--border-color-light);flex-shrink:0;padding:8px 12px 10px}.oc__input[data-v-b64a5618]{resize:vertical;width:100%;min-height:76px;max-height:min(380px,45vh);font-size:var(--font-size-sm);color:var(--text-primary);background:var(--input-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);transition:border-color var(--transition-fast) var(--ease-custom), box-shadow var(--transition-fast) var(--ease-custom);outline:none;padding:7px 8px;font-family:inherit;line-height:1.5}.oc__input[data-v-b64a5618]:focus{border-color:var(--input-border-focus);box-shadow:var(--input-shadow-focus)}.oc__input[data-v-b64a5618]::placeholder{color:var(--text-tertiary)}.oc__compose-foot[data-v-b64a5618]{flex-wrap:wrap;align-items:center;gap:6px 8px;margin-top:6px;display:flex}.oc__attach[data-v-b64a5618]{width:26px;height:26px;color:var(--text-tertiary);font-size:var(--font-size-base);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.oc__attach[data-v-b64a5618]:hover:not(:disabled),.oc__attach.is-on[data-v-b64a5618]{color:var(--color-primary)}.oc__attach[data-v-b64a5618]:disabled{opacity:.4;cursor:default}.oc__attach[data-v-b64a5618]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.oc__autorn[data-v-b64a5618]{font-size:var(--font-size-xs);color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:4px;display:inline-flex}.oc__autorn input[data-v-b64a5618]{cursor:pointer}.oc__send[data-v-b64a5618]{border-radius:var(--radius-md);background:var(--gradient-accent);box-shadow:var(--btn-shadow);color:#fff;font-size:var(--font-size-sm);cursor:pointer;transition:box-shadow var(--transition-fast) var(--ease-custom), opacity var(--transition-fast) var(--ease-custom);border:none;align-items:center;gap:4px;margin-left:auto;padding:0 12px;line-height:24px;display:inline-flex}.oc__send[data-v-b64a5618]:hover:not(:disabled){background:var(--gradient-accent-hover);box-shadow:var(--btn-shadow-hover)}.oc__send[data-v-b64a5618]:disabled{opacity:.45;cursor:default}.oc__send[data-v-b64a5618]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.oc__send-icon[data-v-b64a5618]{font-size:var(--font-size-sm)}.oc__hint[data-v-b64a5618]{font-size:var(--font-size-xs);color:var(--text-tertiary);margin:6px 0 0;line-height:1.5}@media (width<=860px){.oc[data-v-b64a5618]{border-left:none;border-top:1px solid var(--border-color);min-height:72vh}.oc__collapse[data-v-b64a5618]{display:none}}.pd[data-v-bc4078f5]{flex-direction:column;gap:14px;line-height:1.5;display:flex}.pd__intro[data-v-bc4078f5]{font-size:var(--font-size-sm);color:var(--text-tertiary);margin:0;line-height:1.6}.pd__field[data-v-bc4078f5]{flex-direction:column;gap:5px;display:flex}.pd__head[data-v-bc4078f5]{align-items:baseline;gap:8px;display:flex}.pd__label[data-v-bc4078f5]{font-size:var(--font-size-sm);color:var(--text-secondary);font-weight:500}.pd__count[data-v-bc4078f5]{font-size:var(--font-size-xs);color:var(--text-tertiary);font-variant-numeric:tabular-nums;margin-left:auto}.pd__area[data-v-bc4078f5]{box-sizing:border-box;resize:vertical;width:100%;min-height:92px;max-height:280px;font-size:var(--font-size-mid);color:var(--text-primary);background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-md);transition:border-color var(--transition-fast) var(--ease-custom);outline:none;padding:7px 9px;font-family:inherit;line-height:1.5}.pd__area[data-v-bc4078f5]:focus{border-color:var(--color-primary)}.pd__area[data-v-bc4078f5]::placeholder{color:var(--text-tertiary)}.pd__area[data-v-bc4078f5]:disabled{opacity:.55;cursor:not-allowed}.pd__hint[data-v-bc4078f5]{font-size:var(--font-size-xs);color:var(--text-tertiary);margin:0;line-height:1.6}.pd__foot[data-v-bc4078f5]{align-items:center;gap:8px;width:100%;display:flex}.pd__foot-spacer[data-v-bc4078f5]{flex:1}.pd__btn[data-v-bc4078f5]{color:var(--text-secondary);font-size:var(--font-size-sm);border-radius:var(--radius-md);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;border:none;padding:0 12px;line-height:28px}.pd__btn[data-v-bc4078f5]:hover:not(:disabled){color:var(--color-primary);background:var(--bg-container-hover)}.pd__btn[data-v-bc4078f5]:disabled{opacity:.45;cursor:default}.pd__btn[data-v-bc4078f5]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.pd__btn--primary[data-v-bc4078f5]{background:var(--color-primary);color:#fff}.pd__btn--primary[data-v-bc4078f5]:hover:not(:disabled){background:var(--color-primary);color:#fff;opacity:.88}.nc[data-v-5e9238ae]{flex-direction:column;gap:14px;line-height:1.5;display:flex}.nc__field[data-v-5e9238ae]{flex-direction:column;gap:5px;display:flex}.nc__label[data-v-5e9238ae]{font-size:var(--font-size-sm);color:var(--text-secondary);font-weight:500}.nc__input[data-v-5e9238ae],.nc__select[data-v-5e9238ae]{width:100%;font-size:var(--font-size-mid);color:var(--text-primary);background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-md);transition:border-color var(--transition-fast) var(--ease-custom);box-sizing:border-box;outline:none;padding:7px 9px;font-family:inherit;line-height:1.5}.nc__input[data-v-5e9238ae]:focus,.nc__select[data-v-5e9238ae]:focus{border-color:var(--color-primary)}.nc__input[data-v-5e9238ae]::placeholder{color:var(--text-tertiary)}.nc__select[data-v-5e9238ae]{cursor:pointer}.nc__input--area[data-v-5e9238ae]{resize:vertical;min-height:92px;max-height:260px}.nc__hint[data-v-5e9238ae]{font-size:var(--font-size-xs);color:var(--text-tertiary);white-space:nowrap;text-overflow:ellipsis;margin:0;overflow:hidden}.nc__error[data-v-5e9238ae]{font-size:var(--font-size-sm);border-radius:var(--radius-md);color:var(--color-danger-light);background:color-mix(in srgb, var(--color-danger) 10%, transparent);margin:0;padding:6px 8px}.nc__foot[data-v-5e9238ae]{align-items:center;gap:8px;width:100%;display:flex}.nc__foot-spacer[data-v-5e9238ae]{flex:1}.nc__btn[data-v-5e9238ae]{color:var(--text-secondary);font-size:var(--font-size-sm);border-radius:var(--radius-md);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;border:none;padding:0 12px;line-height:28px}.nc__btn[data-v-5e9238ae]:hover:not(:disabled){color:var(--color-primary);background:var(--bg-container-hover)}.nc__btn[data-v-5e9238ae]:disabled{opacity:.45;cursor:default}.nc__btn[data-v-5e9238ae]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.nc__btn--primary[data-v-5e9238ae]{background:var(--color-primary);color:#fff}.nc__btn--primary[data-v-5e9238ae]:hover:not(:disabled){background:var(--color-primary);color:#fff;opacity:.88}.board[data-v-5c12357b]{background:var(--bg-container);height:100%;min-height:0;color:var(--text-primary);--wb-left-w:264px;--wb-right-w:360px;flex-direction:column;display:flex}.board__top[data-v-5c12357b]{border-bottom:1px solid var(--border-color-light);background:var(--bg-panel);background-image:var(--gradient-accent-soft);flex-shrink:0;align-items:center;gap:16px;height:52px;padding:0 14px;display:flex}.board__brand[data-v-5c12357b]{align-items:center;gap:8px;min-width:0;display:flex}.board__live[data-v-5c12357b]{background:var(--color-success);width:8px;height:8px;box-shadow:var(--dot-glow-success);border-radius:50%;flex-shrink:0;animation:1.6s ease-in-out infinite board-pulse-5c12357b}.board__live.is-off[data-v-5c12357b]{background:var(--color-warning);box-shadow:var(--dot-glow-warning);animation:none}@keyframes board-pulse-5c12357b{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.4)}}.board__brand-text[data-v-5c12357b]{min-width:0}.board__title[data-v-5c12357b]{font-size:var(--font-size-base);letter-spacing:var(--letter-spacing-heading);color:var(--text-primary);margin:0;font-weight:600;line-height:1.3}.board__subtitle[data-v-5c12357b]{font-size:var(--font-size-xs);color:var(--text-tertiary);margin:0;line-height:1.3}.board__stats[data-v-5c12357b]{flex-wrap:wrap;align-items:center;gap:14px;min-width:0;margin-left:4px;display:flex}.board__stat[data-v-5c12357b]{font-size:var(--font-size-xs);color:var(--text-tertiary);align-items:baseline;gap:4px;display:inline-flex}.board__stat-value[data-v-5c12357b]{font-size:var(--font-size-mid);color:var(--text-primary);font-variant-numeric:tabular-nums;font-weight:500}.board__stat-value.is-live[data-v-5c12357b]{color:var(--color-warning)}.board__actions[data-v-5c12357b]{flex-shrink:0;align-items:center;gap:8px;margin-left:auto;display:flex}.board__icon-btn[data-v-5c12357b]{color:var(--text-tertiary);border-radius:var(--radius-md);cursor:pointer;width:26px;height:26px;font-size:var(--font-size-base);transition:color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex}.board__icon-btn[data-v-5c12357b]:hover{color:var(--color-primary);background:var(--bg-subtle-hover)}.board__icon-btn[data-v-5c12357b]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.board__scrim[data-v-5c12357b]{display:none}.board__cols[data-v-5c12357b]{flex:auto;min-height:0;display:flex;position:relative}.board__left[data-v-5c12357b]{width:var(--wb-left-w);background:var(--bg-panel);flex-direction:column;flex-shrink:0;min-height:0;display:flex}.board__splitter[data-v-5c12357b]{z-index:5;cursor:col-resize;touch-action:none;flex:0 0 5px;position:relative}.board__splitter[data-v-5c12357b]:after{content:"";width:1px;transition:background var(--transition-fast) var(--ease-custom);background:0 0;position:absolute;top:0;bottom:0;left:2px}.board__splitter[data-v-5c12357b]:hover:after,.board__splitter[data-v-5c12357b]:active:after,.board__cols.is-resizing .board__splitter[data-v-5c12357b]:after{background:var(--color-primary)}.board__splitter--h[data-v-5c12357b]{cursor:row-resize;flex:0 0 5px}.board__splitter--h[data-v-5c12357b]:after{background:var(--border-color);width:auto;height:1px;top:2px;bottom:auto;left:0}.board__splitter--h[data-v-5c12357b]:hover:after,.board__splitter--h[data-v-5c12357b]:active:after{background:var(--color-primary)}.board__main[data-v-5c12357b]{background:var(--surface-canvas);flex-direction:column;flex:auto;min-width:0;min-height:0;display:flex}.board__main-head[data-v-5c12357b]{flex-shrink:0;align-items:center;gap:10px;min-width:0;padding:10px 14px 8px;display:flex}.board__main-title[data-v-5c12357b]{flex:1;align-items:baseline;gap:8px;min-width:0;display:flex}.board__project-name[data-v-5c12357b]{font-size:var(--font-size-base);color:var(--text-primary);white-space:nowrap;flex-shrink:0;margin:0;font-weight:500}.board__project-path[data-v-5c12357b]{font-size:var(--font-size-xs);color:var(--text-tertiary);white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.board__project-meta[data-v-5c12357b]{font-size:var(--font-size-xs);color:var(--text-tertiary);font-variant-numeric:tabular-nums;flex-shrink:0}@media (width<=1440px){.board[data-v-5c12357b]{--wb-left-w:224px;--wb-right-w:320px}}@media (width<=1180px){.board[data-v-5c12357b]{--wb-left-w:200px;--wb-right-w:280px}}@media (width>=1025px){.board__left[data-v-5c12357b]{transition:width var(--transition-base) var(--ease-custom)}.board__left.is-collapsed[data-v-5c12357b]{width:0;overflow:hidden}.board__cols.is-resizing .board__left[data-v-5c12357b]{transition:none}}@media (width<=1024px){.board__splitter--left[data-v-5c12357b]{display:none}.board__left[data-v-5c12357b]{z-index:20;width:min(var(--wb-left-w), 86vw);background:var(--bg-container);border-right:1px solid var(--border-color);box-shadow:var(--dialog-shadow);transition:transform var(--transition-base) var(--ease-custom);position:absolute;top:0;bottom:0;left:0}.board__left.is-collapsed[data-v-5c12357b]{pointer-events:none;transform:translate(-100%)}.board__scrim.is-on[data-v-5c12357b]{z-index:15;display:block;position:absolute;inset:0}}@media (width<=860px){.board[data-v-5c12357b]{--wb-right-w:100%}.board__splitter--right[data-v-5c12357b]{display:none}.board__cols[data-v-5c12357b]{flex-direction:column;overflow-y:auto}.board__main[data-v-5c12357b]{flex:none;min-height:72vh}.board__top[data-v-5c12357b]{flex-wrap:wrap;gap:6px 12px;height:auto;padding:8px 12px}.board__stats[data-v-5c12357b]{flex-basis:100%;order:3;gap:12px;margin-left:0}.board__actions[data-v-5c12357b]{margin-left:auto}}.workbench[data-v-dd181061]{background:var(--bg-container);height:100%;color:var(--text-primary);flex-direction:column;display:flex}.wb-editor[data-v-dd181061]{flex-direction:column;flex:auto;min-height:0;line-height:1.5;display:flex}.wb-editor-bar[data-v-dd181061]{border-bottom:1px solid var(--border-color-light);background:var(--bg-panel);background-image:var(--gradient-accent-soft);flex-shrink:0;align-items:center;gap:8px;height:34px;padding:0 12px;display:flex}.wb-back-btn[data-v-dd181061]{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:0 0;border:none;align-items:center;gap:4px;padding:0 6px;line-height:22px;display:inline-flex}.wb-back-btn[data-v-dd181061]:hover{color:var(--color-primary)}.wb-back-btn[data-v-dd181061]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.wb-back-btn__icon[data-v-dd181061]{font-size:var(--font-size-mid)}.wb-editor-bar__project[data-v-dd181061]{font-size:var(--font-size-sm);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-weight:500;overflow:hidden}.wb-editor-bar__hint[data-v-dd181061]{font-size:var(--font-size-xs);color:var(--text-tertiary);flex-shrink:0;margin-left:auto}.wb-editor-bar__repo[data-v-dd181061]{text-overflow:ellipsis;white-space:nowrap;max-width:320px;font-size:var(--font-size-xs);border-radius:var(--radius-base);color:var(--color-warning);background:color-mix(in srgb, var(--color-warning) 12%, transparent);font-variant-numeric:tabular-nums;flex-shrink:0;padding:0 6px;line-height:16px;overflow:hidden}.wb-task-desc[data-v-dd181061]{border-radius:var(--radius-md);background:var(--bg-subtle);flex-shrink:0;min-width:0;margin:0;padding:0;overflow:hidden}.wb-task-options[data-v-dd181061]{font-size:var(--font-size-sm);color:var(--text-secondary);align-items:center;gap:12px;padding:8px 12px 0;display:flex}.wb-task-desc[open][data-v-dd181061]{background:var(--bg-container)}.wb-task-desc__summary[data-v-dd181061]{cursor:pointer;font-size:var(--font-size-sm);color:var(--text-secondary);-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:8px 0;list-style:none;display:flex}.wb-task-desc__summary[data-v-dd181061]::-webkit-details-marker{display:none}.wb-task-desc__summary[data-v-dd181061]:hover{background:var(--bg-container-hover)}.wb-task-desc__caret[data-v-dd181061]{font-size:var(--font-size-sm);color:var(--text-tertiary);transition:transform var(--transition-fast)}.wb-task-desc__label[data-v-dd181061]{letter-spacing:.1px;font-weight:500}.wb-task-desc__tag[data-v-dd181061]{font-size:var(--font-size-xs);color:var(--color-primary);align-items:center;gap:5px;margin-left:auto;font-weight:600;display:inline-flex}.wb-task-desc__tag-attachment[data-v-dd181061]{border-radius:var(--radius-lg);background:var(--tint-primary-14);min-width:18px;height:16px;color:var(--color-primary);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;padding:0 5px;display:inline-flex}.wb-task-desc[open] .wb-task-desc__summary[data-v-dd181061]{margin-bottom:0}.wb-task-desc>.wb-textarea[data-v-dd181061],.wb-task-desc[data-v-dd181061]>.attachment-zone{margin:0 14px 0 0}.wb-task-desc>.wb-textarea[data-v-dd181061]{max-width:100%;margin-bottom:0}.wb-task-desc[data-v-dd181061]>.attachment-zone{margin-top:8px}.workbench__editor-row[data-v-dd181061]{flex:1;min-height:0;display:flex}.wb-splitter[data-v-dd181061]{cursor:col-resize;z-index:5;flex:0 0 5px;margin-right:-5px;position:relative}.wb-splitter[data-v-dd181061]:after{content:"";width:1px;transition:background var(--transition-fast) var(--ease-custom);background:0 0;position:absolute;top:0;bottom:0;left:2px}.wb-splitter[data-v-dd181061]:hover:after,.wb-splitter[data-v-dd181061]:active:after{background:var(--color-primary)}.wb-sidebar[data-v-dd181061]{background:var(--bg-panel);flex-direction:column;flex-shrink:0;gap:18px;width:268px;padding:14px 12px 18px;display:flex;overflow-y:auto}.wb-section[data-v-dd181061]{flex-direction:column;flex-shrink:0;gap:8px;min-height:0;display:flex}.wb-section+.wb-section[data-v-dd181061]{padding-top:16px}.wb-section__head[data-v-dd181061]{align-items:center;gap:6px;padding:0 4px;display:flex}.wb-section__tag[data-v-dd181061]{height:18px;font-size:var(--font-size-xs);letter-spacing:.4px;color:var(--text-tertiary);background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-base);text-transform:uppercase;font-variant-numeric:tabular-nums;flex-shrink:0;align-items:center;padding:0 6px;font-weight:600;display:inline-flex}.wb-section__tag--accent[data-v-dd181061]{color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 9%, transparent);border-color:var(--tint-primary-22)}.wb-section__title[data-v-dd181061]{font-size:var(--font-size-sm);color:var(--text-secondary);letter-spacing:.2px;flex:1;min-width:0;margin:0;font-weight:600}.wb-section__action[data-v-dd181061]{color:var(--text-tertiary);border-radius:var(--radius-base);cursor:pointer;width:28px;height:28px;font-size:var(--font-size-mid);transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.wb-section__action[data-v-dd181061]:hover{background:var(--tint-primary-12);color:var(--color-primary)}.wb-new-btn[data-v-dd181061]{border:1px dashed var(--tint-primary-35,color-mix(in srgb, var(--color-primary) 35%, transparent));border-radius:var(--radius-md);background:linear-gradient(135deg, color-mix(in srgb, var(--color-primary) 4%, transparent) 0%, color-mix(in srgb, var(--color-primary) 2%, transparent) 100%);width:100%;height:32px;color:var(--color-primary);font-size:var(--font-size-mid);letter-spacing:.05px;cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);align-items:center;gap:6px;padding:0 12px;font-weight:600;display:flex}.wb-new-btn__icon[data-v-dd181061]{font-size:var(--font-size-mid);transition:transform var(--transition-fast) var(--ease-custom);flex-shrink:0}.wb-new-btn__shortcut[data-v-dd181061]{display:none}.wb-new-btn[data-v-dd181061]:hover{background:linear-gradient(135deg, color-mix(in srgb, var(--color-primary) 10%, transparent) 0%, color-mix(in srgb, var(--color-primary) 6%, transparent) 100%);color:var(--color-primary);border-style:solid;border-color:var(--tint-primary-50)}.wb-new-btn:hover .wb-new-btn__icon[data-v-dd181061]{transform:rotate(90deg)}.wb-new-btn[data-v-dd181061]:active{transform:scale(.99)}.wb-new-btn[data-v-dd181061]:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.wb-task-list[data-v-dd181061],.wb-prompt-list[data-v-dd181061]{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.wb-task-item[data-v-dd181061]{border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom), box-shadow var(--transition-fast) var(--ease-custom);background:0 0;border:none;align-items:center;gap:8px;padding:7px 10px;display:flex;position:relative}.wb-task-item[data-v-dd181061]:hover{background:var(--bg-container-hover);border-color:#0000;transform:translateY(-.5px)}.wb-task-item:hover .wb-task-item__del[data-v-dd181061]{opacity:1;transform:translate(0)}.wb-task-item.is-running[data-v-dd181061]{background:color-mix(in srgb, var(--color-warning) 8%, transparent)}.wb-task-item.is-running[data-v-dd181061]:hover{background:color-mix(in srgb, var(--color-warning) 14%, transparent);transform:none}.wb-task-item.active[data-v-dd181061]{background:color-mix(in srgb, var(--color-primary) 10%, var(--bg-container));box-shadow:0 1px 3px color-mix(in srgb, var(--color-primary) 12%, transparent), 0 0 0 1px color-mix(in srgb, var(--color-primary) 18%, transparent);border-color:#0000}.wb-task-item.active[data-v-dd181061]:after{content:"";border-radius:var(--radius-base);background:linear-gradient(180deg, var(--color-primary) 0%, color-mix(in srgb, var(--color-primary) 70%, #fff) 100%);width:3px;box-shadow:0 0 8px color-mix(in srgb, var(--color-primary) 50%, transparent), 0 1px 3px color-mix(in srgb, var(--color-primary) 25%, transparent);position:absolute;top:5px;bottom:5px;left:-1px}.wb-task-item.active .wb-task-item__title[data-v-dd181061]{color:var(--color-primary)}.wb-task-item.active .wb-task-item__del[data-v-dd181061]{opacity:1;color:var(--color-primary)}.wb-task-item__running-dot[data-v-dd181061]{background:var(--color-warning);width:6px;height:6px;box-shadow:0 0 0 0 color-mix(in srgb, var(--color-warning) 60%, transparent);border-radius:50%;flex:none;margin-left:auto;animation:1.4s ease-in-out infinite wb-running-pulse-dd181061}@keyframes wb-running-pulse-dd181061{0%,to{box-shadow:0 0 0 0 color-mix(in srgb, var(--color-warning) 60%, transparent);opacity:1;transform:scale(1)}50%{box-shadow:0 0 0 4px color-mix(in srgb, var(--color-warning) 0%, transparent);opacity:.75;transform:scale(1.35)}}.wb-task-item__body[data-v-dd181061]{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.wb-task-item__title[data-v-dd181061]{font-size:var(--font-size-sm);color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;letter-spacing:-.05px;font-weight:500;line-height:1.3;overflow:hidden}.wb-task-item__meta[data-v-dd181061]{font-size:var(--font-size-xs);color:var(--text-tertiary);align-items:center;gap:5px;line-height:1;display:flex}.wb-task-item__meta-item[data-v-dd181061]{font-variant-numeric:tabular-nums;align-items:center;gap:3px;font-weight:500;display:inline-flex}.wb-task-item__meta-item--accent[data-v-dd181061]{color:var(--color-primary)}.wb-task-item__meta-item--project[data-v-dd181061]{border-radius:var(--radius-md);background:color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 14%, transparent);height:15px;color:color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 80%, var(--text-primary));font-size:var(--font-size-xs);letter-spacing:.2px;white-space:nowrap;text-overflow:ellipsis;align-items:center;max-width:110px;padding:0 5px;font-weight:600;display:inline-flex;overflow:hidden}.wb-task-item.is-other-project[data-v-dd181061]{opacity:.78}.wb-task-item.is-other-project[data-v-dd181061]:hover{opacity:1}.wb-task-item__meta-icon[data-v-dd181061]{font-size:var(--font-size-xs);opacity:.85}.wb-task-item__num[data-v-dd181061]{min-width:14px;color:var(--text-secondary);transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);padding:0 4px}.wb-task-item.active .wb-task-item__num[data-v-dd181061]{color:var(--color-primary);background:var(--tint-primary-14)}.wb-task-item__meta-item--running .wb-task-item__num[data-v-dd181061]{color:color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 85%, var(--text-primary));background:color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 18%, transparent);font-weight:600}.wb-task-item.is-running .wb-task-item__meta-icon[data-v-dd181061]{color:color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 80%, var(--text-primary));animation:1.4s ease-in-out infinite wb-task-running-icon-dd181061}@keyframes wb-task-running-icon-dd181061{0%,to{opacity:.55}50%{opacity:1}}.wb-task-item__del[data-v-dd181061]{color:var(--text-tertiary);border-radius:var(--radius-md);cursor:pointer;width:22px;height:22px;font-size:var(--font-size-sm);opacity:0;transition:opacity var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex;transform:translate(-2px)}.wb-task-item__del[data-v-dd181061]:hover{background:color-mix(in srgb, var(--color-danger) 14%, transparent);color:var(--color-danger)}.wb-task-item__del[data-v-dd181061]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset);opacity:1}.wb-task-item__del[data-v-dd181061],.wb-prompt-item__del[data-v-dd181061]{font-size:var(--font-size-mid)}.wb-prompt-item[data-v-dd181061]{border-radius:var(--radius-md);font-size:var(--font-size-mid);color:var(--text-primary);transition:background var(--transition-fast) var(--ease-custom);align-items:center;gap:8px;padding:7px 8px;display:flex;position:relative}.wb-prompt-item[data-v-dd181061]:hover{background:var(--bg-container-hover)}.wb-prompt-item:hover .wb-prompt-item__del[data-v-dd181061]{opacity:1}.wb-prompt-item__icon[data-v-dd181061]{border-radius:var(--radius-base);background:var(--tint-primary-08);width:22px;height:22px;color:var(--color-primary);font-size:var(--font-size-sm);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.wb-prompt-item__name[data-v-dd181061]{cursor:pointer;white-space:nowrap;text-overflow:ellipsis;min-width:0;color:var(--text-primary);letter-spacing:-.05px;flex:1;font-weight:500;overflow:hidden}.wb-prompt-item__tag[data-v-dd181061]{border-radius:var(--radius-xs);max-width:96px;font-size:var(--font-size-xs);letter-spacing:.1px;background:var(--tint-primary-08);color:var(--color-primary);white-space:nowrap;text-overflow:ellipsis;flex-shrink:0;padding:1px 6px;line-height:16px;overflow:hidden}.wb-prompt-item__tag--project[data-v-dd181061]{background:var(--bg-subtle);color:var(--text-secondary);border:1px solid var(--border-color-light)}.wb-prompt-item__del[data-v-dd181061]{color:var(--text-tertiary);border-radius:var(--radius-xs);cursor:pointer;width:20px;height:20px;font-size:var(--font-size-sm);opacity:0;transition:opacity var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.wb-prompt-item__del[data-v-dd181061]:hover{background:color-mix(in srgb, var(--color-danger) 14%, transparent);color:var(--color-danger)}.wb-prompt-item__del[data-v-dd181061]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset);opacity:1}.wb-split[data-v-dd181061]{flex-direction:column;flex:1;gap:10px;min-height:0;padding:12px 24px 14px;display:flex;overflow:hidden}.wb-placeholder[data-v-dd181061]{color:var(--text-tertiary);font-size:var(--font-size-mid);flex:1;justify-content:center;align-items:center;display:flex}.wb-execution-body[data-v-dd181061]{border:none;border-radius:0;flex:1;grid-template-columns:1fr;gap:16px;min-height:0;display:grid;overflow:hidden}.wb-exec-detail[data-v-dd181061]{background:0 0;flex-direction:column;gap:14px;min-width:0;min-height:0;padding:4px 4px 8px;display:flex;overflow:auto}.wb-split__header[data-v-dd181061]{flex-shrink:0;align-items:center;gap:10px;padding-bottom:4px;padding-right:8px;display:flex}.wb-split__title-wrap[data-v-dd181061]{flex:1;align-items:center;gap:6px;min-width:0;display:flex}.wb-split__title-wrap .wb-input--title[data-v-dd181061]{flex:1;min-width:0}.wb-copy-btn[data-v-dd181061]{appearance:none;border-radius:var(--radius-lg);border:1px solid var(--border-color);background:var(--bg-container);width:28px;height:28px;color:var(--text-tertiary);cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.wb-copy-btn[data-v-dd181061]:hover:not(:disabled){background:var(--tint-primary-12);border-color:var(--tint-primary-35);color:var(--color-primary)}.wb-copy-btn[data-v-dd181061]:active:not(:disabled){transform:scale(.94)}.wb-copy-btn[data-v-dd181061]:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.wb-copy-btn.is-flash[data-v-dd181061]{background:var(--tint-success-14,color-mix(in srgb, var(--color-success) 14%, transparent));border-color:var(--tint-success-35,color-mix(in srgb, var(--color-success) 35%, transparent));color:var(--color-success-dark,var(--color-success-dark))}.wb-copy-btn__icon[data-v-dd181061]{font-size:var(--font-size-mid);line-height:1}.wb-copy-btn__icon--check[data-v-dd181061]{font-size:var(--font-size-base);font-weight:800}.wb-copy-btn--inline[data-v-dd181061]{border-radius:var(--radius-md);width:22px;height:22px;margin-left:2px}.wb-copy-btn--inline .wb-copy-btn__icon[data-v-dd181061]{font-size:var(--font-size-xs)}@keyframes wb-ai-sparkle-pulse-dd181061{0%,to{opacity:.9;transform:scale(1)}50%{opacity:1;transform:scale(1.12)}}.wb-no-claude-hint[data-v-dd181061]{border:1px solid color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 32%, transparent);background:color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 8%, transparent);height:32px;color:color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 75%, var(--text-primary));border-radius:var(--radius-md);font-size:var(--font-size-sm);white-space:nowrap;flex-shrink:0;align-items:center;gap:6px;padding:0 12px;font-weight:500;display:inline-flex}.wb-executor-split[data-v-dd181061]{flex-shrink:0}.wb-executor-split__hint[data-v-dd181061]{font-size:var(--font-size-xs);opacity:.85;border-left:1px solid #ffffff59;align-items:center;gap:4px;margin-left:6px;padding-left:8px;font-weight:400;display:inline-flex}.wb-executor-split__hint-icon[data-v-dd181061]{font-size:var(--font-size-sm)}.wb-executor-item[data-v-dd181061]{align-items:center;gap:8px;min-width:132px;display:inline-flex}.wb-executor-item__icon[data-v-dd181061]{font-size:var(--font-size-base);flex:none}.wb-executor-item__name[data-v-dd181061]{flex:1}.wb-executor-item__check[data-v-dd181061]{color:var(--el-color-primary)}.wb-executor-item__missing[data-v-dd181061]{font-size:var(--font-size-xs);color:var(--text-secondary,var(--el-text-color-secondary))}.wb-no-claude-hint__icon[data-v-dd181061]{font-size:var(--font-size-base);opacity:.9}.wb-no-claude-hint__text[data-v-dd181061]{letter-spacing:-.05px}.wb-no-claude-hint__link[data-v-dd181061]{color:var(--color-primary);border-bottom:1px dashed color-mix(in srgb, var(--color-primary) 45%, transparent);margin-left:2px;font-weight:600;text-decoration:none}.wb-no-claude-hint__link[data-v-dd181061]:hover{border-bottom-style:solid}.wb-logs-inline-btn[data-v-dd181061]{appearance:none;border:1px solid var(--border-color);background:var(--bg-container);height:32px;color:var(--text-secondary);border-radius:var(--radius-md);font-size:var(--font-size-mid);cursor:pointer;white-space:nowrap;transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);flex-shrink:0;align-items:center;gap:5px;padding:0 12px;font-weight:500;display:inline-flex}.wb-logs-inline-btn[data-v-dd181061]:hover{background:var(--tint-primary-12);color:var(--color-primary);border-color:var(--tint-primary-35)}.wb-logs-inline-btn--danger[data-v-dd181061]{color:var(--text-secondary);border-color:var(--border-color);background:var(--bg-container)}.wb-logs-inline-btn--danger[data-v-dd181061]:hover{color:var(--color-danger,var(--color-danger-light));border-color:var(--tint-danger-50);background:var(--tint-danger-06)}.wb-logs-inline-btn[data-v-dd181061]:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.wb-logs-inline-btn__icon[data-v-dd181061]{font-size:var(--font-size-base)}.wb-input[data-v-dd181061],.wb-select[data-v-dd181061],.wb-textarea[data-v-dd181061]{color:var(--text-primary);background:var(--bg-container);border:1px solid var(--border-color-medium);border-radius:var(--radius-md);box-shadow:var(--wb-card-inset-shadow);transition:border-color var(--transition-fast) var(--ease-custom), box-shadow var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);appearance:none;outline:none;font-family:inherit}.wb-input[data-v-dd181061]::placeholder,.wb-textarea[data-v-dd181061]::placeholder{color:var(--text-placeholder);font-weight:400}.wb-input[data-v-dd181061]{height:36px;font-size:var(--font-size-base);letter-spacing:-.05px;padding:0 12px;line-height:1.2}.wb-input[data-v-dd181061]:hover:not(:focus){border-color:var(--border-input-hover,#cbd5e1);background:var(--bg-container-hover)}.wb-input[data-v-dd181061]:focus{border-color:var(--color-primary);background:var(--bg-container);box-shadow:0 0 0 3px var(--tint-primary-18), var(--wb-card-inset-shadow)}.wb-input--title[data-v-dd181061]{height:36px;font-size:var(--font-size-base);letter-spacing:-.4px;border-color:var(--border-color);box-shadow:none;background:0 0;flex:1;padding:0 12px;font-weight:600}.wb-input--title[data-v-dd181061]:hover:not(:focus){border-color:var(--border-color-medium);background:var(--bg-container)}.wb-input--title[data-v-dd181061]:focus{border-color:var(--color-primary);background:var(--bg-container);box-shadow:0 0 0 3px var(--tint-primary-14)}.wb-input--title[data-v-dd181061]::placeholder{color:var(--text-placeholder);font-weight:500}.wb-select[data-v-dd181061]{height:36px;font-size:var(--font-size-mid);cursor:pointer;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path d='M3 4.5l3 3 3-3' fill='none' stroke='%236b7280' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/></svg>");background-position:right 10px center;background-repeat:no-repeat;background-size:12px 12px;flex-shrink:0;min-width:168px;padding:0 32px 0 12px;font-weight:500}.wb-select[data-v-dd181061]:hover:not(:focus){border-color:var(--border-input-hover,#cbd5e1);background-color:var(--bg-container-hover)}.wb-select[data-v-dd181061]:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--tint-primary-18)}.wb-textarea[data-v-dd181061]{font-size:var(--font-size-mid);letter-spacing:-.05px;resize:vertical;box-sizing:border-box;background:var(--bg-container);width:100%;min-height:52px;box-shadow:none;border-color:var(--border-color);flex-shrink:0;padding:10px 14px;line-height:1.55;display:block}.wb-textarea[data-v-dd181061]::placeholder{color:var(--text-placeholder);line-height:1.55}.wb-textarea[data-v-dd181061]:hover:not(:focus){border-color:var(--border-color-medium);background:var(--bg-container-hover)}.wb-textarea[data-v-dd181061]:focus{border-color:var(--color-primary);background:var(--bg-container-hover);box-shadow:0 0 0 3px var(--tint-primary-14)}.wb-textarea--focus-expand[data-v-dd181061]:focus{max-height:500px;transition:max-height var(--transition-base) var(--ease-custom)}.wb-textarea--autogrow[data-v-dd181061]{resize:none;min-height:52px;max-height:320px;transition:height var(--transition-fast) var(--ease-custom);overflow-y:hidden}.wb-split__sub-header[data-v-dd181061]{flex-shrink:0;justify-content:space-between;align-items:center;margin-top:8px;display:flex}.wb-split__sub-header h4[data-v-dd181061]{font-size:var(--font-size-mid);color:var(--text-secondary);margin:0;font-weight:600}.wb-simple__header[data-v-dd181061]{border-left:2px solid var(--color-primary);flex-shrink:0;align-items:baseline;gap:10px;margin-top:8px;padding-left:8px;display:flex}.wb-simple__header h4[data-v-dd181061]{font-size:var(--font-size-mid);color:var(--text-primary);letter-spacing:-.05px;margin:0;font-weight:600}.wb-simple__hint[data-v-dd181061]{font-size:var(--font-size-sm);color:var(--text-tertiary)}.wb-simple__status-row[data-v-dd181061]{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:8px;margin-top:2px;display:flex}.wb-simple__status[data-v-dd181061]{width:8px;height:8px;transition:background var(--transition-fast) var(--ease-custom);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;gap:5px;padding:0;display:inline-flex}.wb-simple__status--dot[data-v-dd181061]{border-radius:50%}.wb-simple__status-text[data-v-dd181061]{display:none}.wb-simple__meta[data-v-dd181061]{font-size:var(--font-size-sm);color:var(--text-tertiary);letter-spacing:-.05px;text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.wb-simple__meta--error[data-v-dd181061]{color:var(--color-danger)}.wb-simple__status[style*=--text-tertiary] .wb-simple__status-dot[data-v-dd181061]{background:var(--text-tertiary)}.wb-simple__stop[data-v-dd181061]{border-radius:var(--radius-base);border:1px solid var(--color-danger-bright);color:var(--color-danger-bright);font-size:var(--font-size-sm);cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);background:0 0;margin-left:auto;padding:2px 10px;font-weight:600}.wb-simple__stop[data-v-dd181061]:hover:not(:disabled){background:var(--color-danger-bright);color:#fff}.wb-simple__stop[data-v-dd181061]:disabled{opacity:.45;cursor:not-allowed}.wb-simple__override[data-v-dd181061]{border-radius:var(--radius-md)}.wb-simple__override>.wb-textarea[data-v-dd181061]{margin-top:8px}.wb-simple__override-summary[data-v-dd181061]{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:4px 0;list-style:none;display:flex}.wb-simple__override-summary[data-v-dd181061]::-webkit-details-marker{display:none}.wb-simple__override-caret[data-v-dd181061]{font-size:var(--font-size-sm);color:var(--text-tertiary);transition:transform var(--transition-fast) var(--ease-custom)}.wb-simple__override[open]>.wb-simple__override-summary .wb-simple__override-caret[data-v-dd181061]{color:var(--color-primary);transform:rotate(90deg)}.wb-simple__override.has-content>.wb-simple__override-summary[data-v-dd181061]{color:var(--text-primary)}.wb-simple__override-tag[data-v-dd181061]{font-size:var(--font-size-xs);border-radius:var(--radius-lg);background:var(--tint-primary-12,color-mix(in srgb, var(--color-primary) 12%, transparent));color:var(--color-primary);letter-spacing:.2px;padding:1px 6px;font-weight:600}.wb-simple-chat-wrap[data-v-dd181061]{border:1px solid var(--border-color);border-radius:var(--radius-base);background:var(--bg-code);--acu-bg:var(--bg-code);flex-direction:column;flex:1;min-height:0;margin-top:6px;display:flex;overflow:hidden}.wb-simple-chat[data-v-dd181061]{flex:1;min-height:0}.wb-simple-chat[data-v-dd181061] .acu-chat-footer{display:none}.wb-simple-chat[data-v-dd181061] .acu-chat,.wb-simple-chat[data-v-dd181061] .acu-message-list,.wb-simple-chat[data-v-dd181061] .acu-message-list-inner>*{background:0 0}.wb-simple-chat[data-v-dd181061] .acu-chat,.wb-simple-chat[data-v-dd181061] .acu-message-list{background:var(--bg-code)}.wb-simple-chat[data-v-dd181061] .acu-message-list-inner{gap:10px;max-width:100%;margin:0;padding:10px 8px 14px}.wb-simple-chat[data-v-dd181061] .acu-bubble-main{max-width:100%}.wb-simple-chat[data-v-dd181061] .acu-bubble{font-size:var(--font-size-sm);border-radius:var(--radius-lg)}.wb-simple-chat[data-v-dd181061] .acu-bubble-name{font-size:var(--font-size-xs)}.wb-simple-chat__footer[data-v-dd181061]{background:var(--bg-code);flex-shrink:0;padding:0 4px 4px}.wb-simple-chat__input[data-v-dd181061]{width:100%}.wb-form-item[data-v-dd181061]{flex-direction:column;flex-shrink:0;gap:6px;display:flex}.wb-form-item__label[data-v-dd181061]{font-size:var(--font-size-sm);color:var(--text-secondary);letter-spacing:-.05px;font-weight:500}.wb-sub-list[data-v-dd181061]{flex-direction:column;flex:1;gap:8px;min-height:0;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}@keyframes wb-progress-slide-dd181061{0%{background-position:-50% 0}to{background-position:150% 0}}@keyframes wb-card-glow-dd181061{0%,to{box-shadow:0 0 0 1px var(--tint-primary-30), 0 4px 18px -4px color-mix(in srgb, var(--color-primary) 25%, transparent)}50%{box-shadow:0 0 0 1px var(--tint-primary-50), 0 6px 24px -2px color-mix(in srgb, var(--color-primary) 38%, transparent)}}@keyframes wb-card-sweep-dd181061{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes wb-border-shimmer-dd181061{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes wb-status-dot-pulse-dd181061{0%,to{transform:scale(1);box-shadow:0 0 4px #ffffff73}50%{transform:scale(1.35);box-shadow:0 0 8px #ffffffd9}}@keyframes wb-status-dot-dd181061{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.7)}}@media (prefers-reduced-motion:reduce){.wb-sub-expand-enter-active[data-v-dd181061],.wb-sub-expand-leave-active[data-v-dd181061]{transition:none}}.wb-sub-expand-enter-active[data-v-dd181061],.wb-sub-expand-leave-active[data-v-dd181061]{transition:grid-template-rows var(--transition-base,var(--transition-base)) var(--ease-custom), opacity var(--transition-fast) var(--ease-custom);overflow:hidden}.wb-sub-expand-enter-from[data-v-dd181061],.wb-sub-expand-leave-to[data-v-dd181061]{opacity:0;grid-template-rows:0fr}.wb-sub-expand-enter-to[data-v-dd181061],.wb-sub-expand-leave-from[data-v-dd181061]{opacity:1;grid-template-rows:1fr}.wb-sub-expand-inner[data-v-dd181061]{min-height:0;overflow:hidden}.wb-task-group__head[data-v-dd181061]{font-size:var(--font-size-mid);color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:var(--radius-base);transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);align-items:center;gap:6px;margin-top:4px;padding:8px 6px 4px;font-weight:600;display:flex}.wb-task-group__head[data-v-dd181061]:first-child{border-top:none;margin-top:0;padding-top:4px}.wb-task-group__head[data-v-dd181061]:hover{background:var(--tint-primary-08);color:var(--text-secondary)}.wb-task-group__head[data-v-dd181061]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset)}.wb-task-group__head.is-current[data-v-dd181061]{color:var(--color-primary);border-top-color:var(--tint-primary-30)}.wb-task-group__head.is-collapsed[data-v-dd181061]{background:var(--bg-subtle);border-top-style:solid;margin-top:6px;padding-top:6px;padding-bottom:6px}.wb-task-group__head.is-collapsed.is-current[data-v-dd181061]{background:color-mix(in srgb, var(--color-primary) 8%, var(--bg-subtle))}.wb-task-group__caret[data-v-dd181061]{font-size:var(--font-size-sm);opacity:.75;transition:transform var(--transition-fast) var(--ease-custom);flex-shrink:0}.wb-task-group__icon[data-v-dd181061]{font-size:var(--font-size-base);opacity:.8;flex-shrink:0}.wb-task-group__name[data-v-dd181061]{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.wb-task-group__count[data-v-dd181061]{min-width:18px}.wb-task-group__head.is-current .wb-task-group__count[data-v-dd181061]{background:var(--tint-primary-16,color-mix(in srgb, var(--color-primary) 16%, transparent));color:var(--color-primary)}.wb-meta-save[data-v-dd181061]{height:24px;font-size:var(--font-size-xs);letter-spacing:.1px;border-radius:var(--radius-xl);border:1px solid var(--border-color-medium);background:var(--bg-container);color:var(--text-tertiary);-webkit-user-select:none;user-select:none;transition:background var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);flex-shrink:0;align-items:center;gap:5px;padding:0 10px;font-weight:600;display:inline-flex}.wb-meta-save__dot[data-v-dd181061]{opacity:.85;background:currentColor;border-radius:50%;width:6px;height:6px;display:inline-block}.wb-meta-save__check[data-v-dd181061]{font-size:var(--font-size-sm);line-height:1}.wb-meta-save__bang[data-v-dd181061]{width:12px;height:12px;font-size:var(--font-size-xs);color:#fff;background:currentColor;border-radius:50%;justify-content:center;align-items:center;font-weight:800;line-height:1;display:inline-flex}.wb-meta-save.is-saving[data-v-dd181061]{color:var(--color-primary);border-color:var(--tint-primary-35);background:color-mix(in srgb, var(--color-primary) 8%, var(--bg-container))}.wb-meta-save.is-saving .wb-meta-save__dot[data-v-dd181061]{animation:1.2s ease-in-out infinite wb-meta-pulse-dd181061}.wb-meta-save.is-saved[data-v-dd181061]{color:var(--color-success-dark,var(--color-success-dark));border-color:var(--tint-success-35);background:var(--tint-success-08)}.wb-meta-save.is-dirty[data-v-dd181061]{color:var(--color-warning-dark,var(--color-warning-dark));border-color:var(--tint-warning-45);background:var(--tint-warning-06)}.wb-meta-save.is-error[data-v-dd181061]{color:var(--color-danger-dark,#b91c1c);border-color:var(--tint-danger-45);background:var(--tint-danger-06)}@keyframes wb-meta-pulse-dd181061{0%,to{opacity:.4;transform:scale(.85)}50%{opacity:1;transform:scale(1.1)}}@media (prefers-reduced-motion:reduce){.wb-meta-save.is-saving .wb-meta-save__dot[data-v-dd181061]{animation:none}}.wb-logs-dialog{flex-direction:column;max-height:88vh;display:flex}.wb-logs-dialog .el-dialog__body{flex:auto;min-height:0;max-height:calc(88vh - 60px);padding:12px 20px 16px;overflow:auto}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import"./rolldown-runtime-C0FnF6B9.js";import{$ as e,An as t,At as n,Bt as r,C as i,Cn as a,Dn as o,En as s,Er as c,F as l,Ft as u,It as d,J as f,Jn as p,K as ee,Kn as m,Kt as h,L as g,Lt as _,M as v,Mn as y,Nt as b,P as te,Pn as x,Pr as S,Qn as C,Qr as w,Rn as T,S as E,Tn as D,U as ne,Un as O,Ut as re,V as ie,Vn as k,W as ae,Xn as A,Y as oe,Yr as se,_n as j,_t as ce,a as M,b as N,br as P,bt as le,cr as F,dt as I,fn as L,gn as R,hn as ue,ht as de,i as fe,ir as pe,it as me,jn as z,ln as he,lr as B,lt as ge,mn as _e,o as ve,or as V,ot as ye,pr as H,q as be,qr as U,r as W,rn as xe,st as Se,tr as Ce,v as we,vn as G,vr as Te,w as Ee,wn as K,wt as De,xn as q,xt as Oe,y as ke,yn as J,zt as Ae}from"./element-plus-Bx3j6vzG.js";import{a as Y,o as je,r as Me,s as Ne,t as Pe}from"./vendor-CyWsJd6S.js";import{n as X,t as Z}from"./_plugin-vue_export-helper-N8Vc5eEs.js";import{t as Fe}from"./SvgIcon-D0hK-p1U.js";import{a as Ie,c as Le,i as Re,s as ze,t as Be}from"./configStore-BFb0I8eP.js";import{t as Ve}from"./toolsStore-B49mCaQ_.js";import{t as He}from"./useThemeObserver-DYxFoHh1.js";import{t as Ue}from"./CommonDialog-DMWtstZq.js";import{S as Q,a as We,c as Ge,d as Ke,f as qe,i as Je,l as Ye,m as $,o as Xe,p as Ze,s as Qe,u as $e}from"./index-BHYAwndE.js";import{a as et,i as tt,n as nt,o as rt,r as it,s as at,t as ot,u as st}from"./agentConversations-Da7zLPfP.js";import{n as ct,t as lt}from"./AgentEngineSelector-D_8VedA0.js";T(),H(),S(),he();var ut={class:`wb-attachments__head`},dt={class:`wb-attachments__label`},ft={class:`wb-attachments__count`},pt=[`disabled`],mt={key:0,class:`wb-attachments__paste-hint`},ht={key:1,class:`wb-attachments__list`},gt=[`title`,`onClick`,`onContextmenu`],_t=[`src`,`alt`],vt={key:1},yt={class:`wb-attachment__meta`},bt=[`title`],xt=[`onClick`,`title`],St=Z(x({__name:`AttachmentZone`,props:{attachments:{},isImage:{type:Function},humanSize:{type:Function},isUploading:{type:Boolean},isPasteHover:{type:Boolean},maxCount:{},onPick:{type:Function},onRemove:{type:Function},rawBase:{}},emits:[`paste`,`drop`,`dragover`,`dragenter`,`dragleave`],setup(e,{emit:t}){let n=e;function r(e){return`${n.rawBase||`/api/workbench/attachments`}/${e.id}/raw`}let i=t,l=a(()=>n.attachments.filter(e=>n.isImage(e))),u=a(()=>l.value.map(e=>r(e))),d=P(0),f=P(!1);function p(e){if(n.isImage(e)){let t=l.value.findIndex(t=>t.id===e.id);d.value=t>=0?t:0,f.value=!0}else window.open(r(e),`_blank`,`noopener`)}function ee(){f.value=!1}let h=P({visible:!1,x:0,y:0,att:null}),g=P(!1);function _(e,t){if(!n.isImage(e))return;t.preventDefault();let r=window.innerWidth-180,i=window.innerHeight-120;h.value={visible:!0,x:Math.min(t.clientX,r),y:Math.min(t.clientY,i),att:e}}function v(){h.value.visible&&(h.value.visible=!1)}async function y(){let e=h.value.att;if(e&&!g.value){if(v(),!navigator.clipboard||typeof ClipboardItem>`u`){M({type:`warning`,message:X(`@WORKBENCH:当前浏览器不支持复制图片`)});return}g.value=!0;try{let t=await fetch(r(e),{credentials:`same-origin`});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.blob(),i=[`image/png`,`image/jpeg`,`image/webp`,`image/gif`].includes(n.type)?n.type:`image/png`,a=new ClipboardItem({[i]:n});await navigator.clipboard.write([a]),M({type:`success`,message:X(`@WORKBENCH:图片已复制到剪贴板`),duration:1800})}catch(e){M({type:`error`,message:X(`@WORKBENCH:复制失败 {error}`,{error:e?.message||``})})}finally{g.value=!1}}}return typeof window<`u`&&(window.addEventListener(`click`,v),window.addEventListener(`scroll`,v,!0),window.addEventListener(`blur`,v)),m(()=>{typeof window<`u`&&(window.removeEventListener(`click`,v),window.removeEventListener(`scroll`,v,!0),window.removeEventListener(`blur`,v))}),(t,n)=>(A(),o(J,null,[K(`div`,{class:U([`wb-attachments`,{"is-paste-hover":e.isPasteHover}]),onPaste:n[1]||=e=>i(`paste`,e),onDrop:n[2]||=G(e=>i(`drop`,e),[`prevent`]),onDragover:n[3]||=G(e=>i(`dragover`,e),[`prevent`]),onDragenter:n[4]||=G(e=>i(`dragenter`,e),[`prevent`]),onDragleave:n[5]||=e=>i(`dragleave`,e)},[K(`div`,ut,[K(`span`,dt,[z(w(c(X)(`@WORKBENCH:附件`))+` `,1),K(`span`,ft,w(e.attachments.length)+` / `+w(e.maxCount),1)]),K(`button`,{class:`wb-attachments__add wb-soft-btn`,disabled:e.isUploading||e.attachments.length>=e.maxCount,onClick:n[0]||=(...t)=>e.onPick&&e.onPick(...t)},w(e.isUploading?c(X)(`@WORKBENCH:上传中…`):c(X)(`@WORKBENCH:添加附件`)),9,pt)]),e.isPasteHover?(A(),o(`div`,mt,w(c(X)(`@WORKBENCH:粘贴图片以快速添加`)),1)):s(``,!0),e.attachments.length>0?(A(),o(`ul`,ht,[(A(!0),o(J,null,C(e.attachments,t=>(A(),o(`li`,{key:t.id,class:`wb-attachment`},[K(`button`,{type:`button`,class:`wb-attachment__preview`,title:c(X)(`@WORKBENCH:点击预览`),onClick:e=>p(t),onContextmenu:e=>_(t,e)},[K(`div`,{class:U([`wb-attachment__icon`,{"wb-attachment__icon--img":e.isImage(t)}])},[e.isImage(t)?(A(),o(`img`,{key:0,src:r(t),alt:t.originalName,loading:`lazy`},null,8,_t)):(A(),o(`span`,vt,w(t.ext.toUpperCase()),1))],2),K(`div`,yt,[K(`div`,{class:`wb-attachment__name`,title:`${t.originalName} (${e.humanSize(t.size)})`},w(t.originalName),9,bt)])],40,gt),K(`button`,{class:`wb-attachment__del`,onClick:G(n=>e.onRemove(t),[`stop`]),title:c(X)(`@WORKBENCH:删除`)},`×`,8,xt)]))),128))])):s(``,!0)],34),f.value&&u.value.length>0?(A(),D(c(N),{key:0,"url-list":u.value,"initial-index":d.value,"hide-on-click-modal":!0,teleported:!0,onClose:ee},null,8,[`url-list`,`initial-index`])):s(``,!0),(A(),D(q,{to:`body`},[h.value.visible&&h.value.att&&e.isImage(h.value.att)?(A(),o(`ul`,{key:0,class:`wb-ctx-menu`,style:se({top:h.value.y+`px`,left:h.value.x+`px`}),onContextmenu:n[6]||=G(()=>{},[`prevent`])},[K(`li`,{class:U([`wb-ctx-menu__item`,{"is-disabled":g.value}]),onClick:y},[n[7]||=K(`span`,{class:`wb-ctx-menu__icon`,"aria-hidden":`true`},[K(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.8`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[K(`rect`,{x:`9`,y:`9`,width:`11`,height:`11`,rx:`2`}),K(`path`,{d:`M5 15V5a2 2 0 0 1 2-2h10`})])],-1),K(`span`,null,w(c(X)(`@WORKBENCH:复制图片`)),1)],2)],36)):s(``,!0)]))],64))}}),[[`__scopeId`,`data-v-ef29ad59`]]),Ct=Y(`claude`),wt=Y(`opencode`),Tt=Y(`codex`);function Et(e){return e===`opencode`?wt:e===`codex`?Tt:Ct}function Dt(e){switch(e){case`todo`:return X(`@WORKBENCH:待执行`);case`running`:return X(`@WORKBENCH:执行中`);case`done`:return X(`@WORKBENCH:已完成`);case`error`:return X(`@WORKBENCH:出错`);case`cancelled`:return X(`@WORKBENCH:已取消`);case`pending`:return X(`@WORKBENCH:排队中`);default:return e}}function Ot(e){switch(e){case`running`:return`var(--color-primary)`;case`done`:return`#22c55e`;case`error`:return`#ef4444`;case`cancelled`:return`#9ca3af`;case`pending`:return`#f59e0b`;default:return`var(--text-tertiary)`}}var kt=8192;function At(e,t){return e.length>t?`…(前文已截断)\n${e.slice(-t)}`:e}function jt(e,t){let n=e||`done`;return n!==`pending`&&n!==`running`||t===`running`||t===`pending`?n:t===`cancelled`||t===`error`?`error`:`done`}function Mt(e){let t=e?.toolCalls;if(!Array.isArray(t)||t.length===0)return[];let n=e?.status||`done`,r=[];for(let e=0;e<t.length;e++){let i=t[e];if(!i||typeof i!=`object`)continue;let a=jt(i.status,n),o=typeof i.result==`string`?i.result:``;r.push({id:typeof i.id==`string`&&i.id?i.id:`tool-${e}`,name:typeof i.name==`string`?i.name:``,argsPreview:typeof i.argsPreview==`string`?i.argsPreview:``,arguments:typeof i.arguments==`string`?i.arguments:``,result:o?At(o,kt):``,status:a,error:typeof i.error==`string`&&i.error?i.error:void 0})}return r}T(),H(),S(),he();var Nt=[`aria-expanded`],Pt={class:`wb-log-summary__left`},Ft={key:0,class:`wb-log-summary__status wb-log-summary__status--running`},It={class:`wb-log-summary__label`},Lt={key:0,class:`wb-log-summary__elapsed`},Rt={key:1,class:`wb-log-summary__status wb-log-summary__status--pending`},zt={class:`wb-log-summary__label`},Bt={class:`wb-log-summary__icon`},Vt={class:`wb-log-summary__label`},Ht={key:0,class:`wb-log-summary__elapsed`},Ut={key:3},Wt={class:`wb-log-summary__right`},Gt={class:`wb-log-summary__meta`},Kt=[`title`,`aria-label`],qt={class:`wb-log-details__body`},Jt={key:0,class:`wb-chat__foot`},Yt=[`title`,`aria-label`],Xt={key:1,class:`wb-log-fullscreen__empty`},Zt=65536,Qt=Z(x({__name:`JobLogDetails`,props:{job:{}},emits:[`re-execute`],setup(e,{emit:t}){let n=Be(),r=e,i=t,l=P(!1);function u(){l.value=!l.value}let d=a(()=>r.job.status===`running`||r.job.status===`pending`);V(()=>r.job.status,(e,t)=>{t!==`running`&&t!==`pending`&&(e===`running`||e===`pending`)&&(l.value=!1)});function f(){let e=r.job.output||``;return e?e.length<=Zt?e:`${X(`@WORKBENCH:…(前文已截断)`)}\n${e.slice(-65536)}`:``}function p(){let e=r.job.thinking||``;return e?e.length<=Zt?e:`${X(`@WORKBENCH:…(前文已截断)`)}\n${e.slice(-65536)}`:``}async function ee(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 m(){let e=[];if(r.job.prompt&&e.push(`## ${X(`@WORKBENCH:用户提示词`)}\n\n${r.job.prompt}`),r.job.thinking&&e.push(`## ${X(`@WORKBENCH:Claude 思考`)}\n\n${r.job.thinking}`),r.job.output&&e.push(`## ${X(`@WORKBENCH:模型返回`)}\n\n${r.job.output}`),!e.length){M.warning(X(`@WORKBENCH:暂无内容可复制`));return}await ee(e.join(`
|
|
2
|
-
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
`))?M.success(X(`@WORKBENCH:已复制到剪贴板`)):M.error(X(`@WORKBENCH:复制失败`))}let h=a(()=>{let e=r.job.status;return e===`done`||e===`error`||e===`cancelled`}),g=a(()=>r.job.status===`cancelled`?`wb-log-summary__status--cancelled`:r.job.status===`error`?`wb-log-summary__status--error`:`wb-log-summary__status--done`),_=a(()=>r.job.status===`cancelled`?`⏹`:r.job.status===`error`?`✗`:`✓`),v=a(()=>r.job.status===`cancelled`?X(`@WORKBENCH:已停止`):r.job.status===`error`?X(`@WORKBENCH:执行出错`):X(`@WORKBENCH:执行完成`)),b=a(()=>Le(r.job?.agent)),te=a(()=>Et(r.job?.agent));function x(e,t){return e===`running`||e===`pending`?t?`streaming`:`pending`:e===`error`?`error`:`done`}let S=a(()=>{let e=r.job,t=[],n=e.startedAt?new Date(e.startedAt).getTime():Date.now();e.prompt&&t.push({id:`${e.id}-u`,role:`user`,content:e.prompt,status:`done`,createdAt:n});let i=f(),a=p(),o=!!i,s=!!a,c=Mt(e),l=c.length>0,u=o||s||l,d=x(e.status,u);return t.push({id:`${e.id}-a`,role:`assistant`,content:i,reasoning:s?a:void 0,reasoningStatus:s?o?`done`:d===`streaming`?`streaming`:`done`:void 0,toolCalls:l?c:void 0,status:d,error:d===`error`&&e.error||void 0,createdAt:n}),t}),C=P(null);V(()=>r.job.status,(e,t)=>{e===`running`&&t!==`running`&&(C.value=C.value??Date.now())});let T=a(()=>{if(!C.value)return``;let e=C.value,t=r.job.endedAt?new Date(r.job.endedAt).getTime():Date.now(),n=Math.max(0,Math.floor((t-e)/1e3));return n<60?`${n}s`:`${Math.floor(n/60)}分${(n%60).toString().padStart(2,`0`)}秒`}),E=P(!1),ne=a(()=>!!(r.job.output&&r.job.output.length)),re=a(()=>r.job.output||``),ie=P(null);V(E,async e=>{e&&(await O(),ie.value&&(ie.value.scrollTop=ie.value.scrollHeight))}),V(()=>(r.job.output||``).length,async()=>{E.value&&(await O(),ie.value&&(ie.value.scrollTop=ie.value.scrollHeight))});function k(){}let ae=a(()=>h.value&&!!r.job.prompt);function oe(){i(`re-execute`,r.job)}return(t,r)=>(A(),o(`div`,{class:U([`wb-log-details`,{"is-running":d.value,"is-pending":e.job.status===`pending`,"is-finished":h.value}])},[K(`div`,{class:`wb-log-summary`,onClick:u,role:`button`,"aria-expanded":!l.value},[K(`span`,Pt,[e.job.status===`running`?(A(),o(`span`,Ft,[K(`span`,It,w(c(X)(`@WORKBENCH:正在执行…`)),1),r[1]||=K(`span`,{class:`wb-log-dots`,"aria-hidden":`true`},[K(`span`,{class:`wb-log-dots__dot`}),K(`span`,{class:`wb-log-dots__dot`}),K(`span`,{class:`wb-log-dots__dot`})],-1),T.value?(A(),o(`span`,Lt,w(T.value),1)):s(``,!0)])):e.job.status===`pending`?(A(),o(`span`,Rt,[K(`span`,zt,w(c(X)(`@WORKBENCH:排队中…`)),1),r[2]||=K(`span`,{class:`wb-log-dots`,"aria-hidden":`true`},[K(`span`,{class:`wb-log-dots__dot`}),K(`span`,{class:`wb-log-dots__dot`}),K(`span`,{class:`wb-log-dots__dot`})],-1)])):h.value?(A(),o(`span`,{key:2,class:U([`wb-log-summary__status`,g.value])},[K(`span`,Bt,w(_.value),1),K(`span`,Vt,w(v.value),1),T.value?(A(),o(`span`,Ht,w(T.value),1)):s(``,!0)],2)):(A(),o(`span`,Ut,w(c(X)(`@WORKBENCH:查看执行日志`)),1))]),K(`span`,Wt,[K(`span`,Gt,w((e.job.output||``).length)+` `+w(c(X)(`@WORKBENCH:字符`)),1),K(`button`,{type:`button`,class:`wb-log-copy`,title:c(X)(`@WORKBENCH:复制全部(含提示词与输出)`),"aria-label":c(X)(`@WORKBENCH:复制全部`),onClick:G(m,[`stop`])},` ⧉ `,8,Kt)])],8,Nt),B(K(`div`,qt,[y(c(Pe),{messages:S.value,"assistant-name":b.value,"assistant-avatar":te.value,"show-avatar":!0,theme:c(n).theme,"tool-calls-config":{group:!0,collapseThreshold:2},class:`wb-job-chat`},null,8,[`messages`,`assistant-name`,`assistant-avatar`,`theme`]),ae.value?(A(),o(`footer`,Jt,[K(`button`,{type:`button`,class:`wb-chat__action`,title:c(X)(`@WORKBENCH:用相同的提示词重新执行此任务`),"aria-label":c(X)(`@WORKBENCH:重新执行`),onClick:oe},` ↻ `,8,Yt)])):s(``,!0),y(Ue,{modelValue:E.value,"onUpdate:modelValue":r[0]||=e=>E.value=e,title:c(X)(`@WORKBENCH:模型返回 - 全屏查看`),size:`fullscreen`,type:`flex`,"close-on-click-modal":!1,"custom-class":`wb-log-fullscreen-dialog`,onClosed:k},{default:F(()=>[K(`div`,{ref_key:`fullscreenContainerRef`,ref:ie,class:`wb-log-fullscreen`},[ne.value?(A(),D(c(Ne),{key:0,source:re.value,class:`wb-log-fullscreen__render`},null,8,[`source`])):(A(),o(`div`,Xt,w(c(X)(`@WORKBENCH:(暂无输出)`)),1))],512)]),_:1},8,[`modelValue`,`title`])],512),[[R,!l.value]])],2))}}),[[`__scopeId`,`data-v-5c82e125`]]);T(),H(),S(),he();var $t={class:`exec-logs`},en={class:`exec-logs__head`},tn={class:`exec-logs__title-block`},nn={class:`exec-logs__stats`},rn={class:`exec-logs__head-actions`},an={class:`exec-logs__config`},on={class:`exec-logs__config-label`},sn={class:`exec-logs__config-field`},cn={class:`exec-logs__config-name`},ln={class:`exec-logs__config-field`},un={class:`exec-logs__config-name`},dn={class:`exec-logs__filter`},fn={key:0,class:`exec-logs__batch-meta`},pn={key:0,class:`exec-logs__batch`},mn={class:`exec-logs__list`},hn={key:0,class:`exec-logs__empty`},gn={class:`exec-logs__empty-art`,"aria-hidden":`true`},_n={class:`exec-logs__empty-title`},vn={class:`exec-logs__empty-hint`},yn={class:`exec-card__head`},bn=[`title`],xn={class:`exec-card__meta`},Sn={key:0,class:`exec-card__task`},Cn={key:1,class:`exec-card__time`},wn={key:2,class:`exec-card__exit`},Tn=[`title`,`onClick`],En={key:0,class:`exec-card__error`},Dn={key:1,class:`exec-logs__pager`},On=50,kn=Z(x({__name:`ExecutionLogManager`,setup(e){function t(e){return e instanceof Error?e.message:String(e)}let n=P([]),i=P(0),u=Te({count:0,sizeMB:0,byStatus:{}}),d=P(!1),f=P(new Set),m=Te({q:``,status:``,page:1}),h=P({maxCount:500,maxSizeMB:256}),_=Te({maxCount:500,maxSizeMB:256}),b=P(!1),x=[{value:`pending`,label:X(`@WORKBENCH:排队中`)},{value:`running`,label:X(`@WORKBENCH:执行中`)},{value:`done`,label:X(`@WORKBENCH:已完成`)},{value:`error`,label:X(`@WORKBENCH:出错`)},{value:`cancelled`,label:X(`@WORKBENCH:已取消`)}],S=a(()=>n.value.length>0&&n.value.every(e=>f.value.has(e.id))),T=a(()=>n.value.some(e=>f.value.has(e.id))&&!S.value);async function E(){d.value=!0;try{let e=new URLSearchParams;m.q&&e.set(`q`,m.q),m.status&&e.set(`status`,m.status),e.set(`limit`,String(On)),e.set(`offset`,String((m.page-1)*On));let t=await fetch(`/api/workbench/jobs/list?${e.toString()}`).then(e=>e.json());if(!t.success)throw Error(t.error||`list failed`);n.value=t.jobs,i.value=t.total,u.count=t.stats.count,u.sizeMB=t.stats.sizeMB,u.byStatus=t.stats.byStatus;let r=new Set(n.value.map(e=>e.id));for(let e of Array.from(f.value))r.has(e)||f.value.delete(e)}catch(e){M.error(X(`@WORKBENCH:加载失败`)+`: `+t(e))}finally{d.value=!1}}async function D(){try{let e=await fetch(`/api/workbench/jobs/config`).then(e=>e.json());e.success&&(h.value=e.config,_.maxCount=e.config.maxCount,_.maxSizeMB=e.config.maxSizeMB)}catch{}}async function ne(){b.value=!0;try{let e=await fetch(`/api/workbench/jobs/config`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({maxCount:_.maxCount,maxSizeMB:_.maxSizeMB})}).then(e=>e.json());if(!e.success)throw Error(e.error||`save failed`);h.value=e.config,M.success(X(`@WORKBENCH:已保存策略`)),await E()}catch(e){M.error(X(`@WORKBENCH:保存失败`)+`: `+t(e))}finally{b.value=!1}}function O(){m.page=1,E()}function re(){m.q=``,m.status=``,m.page=1,E()}function k(e,t){t?f.value.add(e):f.value.delete(e),f.value=new Set(f.value)}function ae(e){if(e)for(let e of n.value)f.value.add(e.id);else for(let e of n.value)f.value.delete(e.id);f.value=new Set(f.value)}function oe(e){M.info(X(`@WORKBENCH:请到工作台主面板的对应任务上点击「重新执行」`))}async function ce(e){try{await fe.confirm(X(`@WORKBENCH:确定要删除所选的 {count} 条日志吗?`,{count:1}),X(`@WORKBENCH:删除`),{type:`warning`})}catch{return}try{let t=await fetch(`/api/workbench/jobs/${e}`,{method:`DELETE`}).then(e=>e.json());if(!t.success)throw Error(t.error||`delete failed`);f.value.delete(e),f.value=new Set(f.value),await E()}catch(e){M.error(X(`@WORKBENCH:保存失败`)+`: `+t(e))}}async function N(){let e=Array.from(f.value);if(e.length!==0){try{await fe.confirm(X(`@WORKBENCH:确定要删除所选的 {count} 条日志吗?`,{count:e.length}),X(`@WORKBENCH:批量删除`),{type:`warning`})}catch{return}try{let t=await fetch(`/api/workbench/jobs/batch-delete`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({ids:e})}).then(e=>e.json());if(!t.success)throw Error(t.error||`batch delete failed`);M.success(X(`@WORKBENCH:成功删除 {count} 条`,{count:t.removed||e.length})),f.value=new Set,await E()}catch(e){M.error(X(`@WORKBENCH:保存失败`)+`: `+t(e))}}}async function le(){let e=u.count;if(e!==0){try{await fe.confirm(X(`@WORKBENCH:确定要清空所有 {count} 条执行日志吗?此操作不可恢复。`,{count:e}),X(`@WORKBENCH:清空全部`),{type:`warning`,confirmButtonText:X(`@WORKBENCH:清空全部`)})}catch{return}try{let t=await fetch(`/api/workbench/jobs/clear`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({confirm:!0})}).then(e=>e.json());if(!t.success)throw Error(t.error||`clear failed`);M.success(X(`@WORKBENCH:成功删除 {count} 条`,{count:t.removed||e})),f.value=new Set,await E()}catch(e){M.error(X(`@WORKBENCH:保存失败`)+`: `+t(e))}}}function L(e,t){if(!e)return``;let n=new Date(e).getTime(),r=t?new Date(t).getTime():Date.now(),i=Math.max(0,r-n);return i<1e3?`${i}ms`:i<6e4?`${(i/1e3).toFixed(1)}s`:i<36e5?`${Math.floor(i/6e4)}m ${Math.floor(i%6e4/1e3)}s`:`${Math.floor(i/36e5)}h ${Math.floor(i%36e5/6e4)}m`}return p(()=>{E(),D()}),(e,t)=>{let a=g,p=ke,h=ie,D=te,M=l,P=v,R=ee,ue=we,de=ve;return A(),o(`div`,$t,[K(`header`,en,[K(`div`,tn,[K(`span`,nn,w(c(X)(`@WORKBENCH:共 {count} 条,占 {size} MB`,{count:u.count,size:u.sizeMB})),1)]),K(`div`,rn,[y(a,{icon:c(r),size:`small`,loading:d.value,onClick:E},{default:F(()=>[z(w(c(X)(`@WORKBENCH:刷新`)),1)]),_:1},8,[`icon`,`loading`]),y(a,{type:`danger`,plain:``,size:`small`,disabled:u.count===0,onClick:le},{default:F(()=>[z(w(c(X)(`@WORKBENCH:清空全部`)),1)]),_:1},8,[`disabled`])])]),K(`div`,an,[K(`span`,on,w(c(X)(`@WORKBENCH:保存策略`)),1),K(`span`,sn,[K(`span`,cn,w(c(X)(`@WORKBENCH:最大条数`)),1),y(p,{modelValue:_.maxCount,"onUpdate:modelValue":t[0]||=e=>_.maxCount=e,min:0,max:1e4,step:50,size:`small`,"controls-position":`right`,style:{width:`130px`}},null,8,[`modelValue`])]),K(`span`,ln,[K(`span`,un,w(c(X)(`@WORKBENCH:最大体积 (MB)`)),1),y(p,{modelValue:_.maxSizeMB,"onUpdate:modelValue":t[1]||=e=>_.maxSizeMB=e,min:0,max:10240,step:32,size:`small`,"controls-position":`right`,style:{width:`140px`}},null,8,[`modelValue`])]),y(a,{type:`primary`,size:`small`,loading:b.value,onClick:ne},{default:F(()=>[z(w(c(X)(`@WORKBENCH:保存策略`)),1)]),_:1},8,[`loading`])]),K(`div`,dn,[y(h,{modelValue:m.q,"onUpdate:modelValue":t[2]||=e=>m.q=e,placeholder:c(X)(`@WORKBENCH:搜索标题 / 任务`),clearable:``,size:`small`,style:{width:`240px`},onKeyup:j(O,[`enter`]),onClear:O},null,8,[`modelValue`,`placeholder`]),y(M,{modelValue:m.status,"onUpdate:modelValue":t[3]||=e=>m.status=e,placeholder:c(X)(`@WORKBENCH:全部状态`),clearable:``,size:`small`,style:{width:`130px`},onChange:O},{default:F(()=>[(A(),o(J,null,C(x,e=>y(D,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`,`placeholder`]),y(a,{size:`small`,onClick:re},{default:F(()=>[z(w(c(X)(`@WORKBENCH:重置`)),1)]),_:1}),t[5]||=K(`span`,{class:`exec-logs__filter-spacer`},null,-1),f.value.size>0?(A(),o(`span`,fn,w(c(X)(`@WORKBENCH:已选择 {count} 项`,{count:f.value.size})),1)):s(``,!0)]),f.value.size>0?(A(),o(`div`,pn,[y(P,{"model-value":S.value,indeterminate:T.value,onChange:ae},{default:F(()=>[z(w(S.value?c(X)(`@WORKBENCH:取消全选`):c(X)(`@WORKBENCH:全选`)),1)]),_:1},8,[`model-value`,`indeterminate`]),y(a,{type:`danger`,size:`small`,onClick:N},{default:F(()=>[z(w(c(X)(`@WORKBENCH:批量删除`)),1)]),_:1})])):s(``,!0),B((A(),o(`div`,mn,[!d.value&&n.value.length===0?(A(),o(`div`,hn,[K(`div`,gn,[y(R,null,{default:F(()=>[y(c(I))]),_:1})]),K(`div`,_n,w(c(X)(`@WORKBENCH:暂无执行日志`)),1),K(`div`,vn,w(c(X)(`@WORKBENCH:点击「执行任务」开始一次执行,日志会出现在这里。`)),1)])):s(``,!0),(A(!0),o(J,null,C(n.value,e=>(A(),o(`article`,{key:e.id,class:U([`exec-card`,{"is-selected":f.value.has(e.id)}])},[K(`header`,yn,[y(P,{"model-value":f.value.has(e.id),onChange:t=>k(e.id,t)},null,8,[`model-value`,`onChange`]),K(`span`,{class:`exec-card__status`,style:se({color:c(Ot)(e.status),borderColor:c(Ot)(e.status)})},w(c(Dt)(e.status)),5),K(`span`,{class:`exec-card__title`,title:e.title||c(X)(`@WORKBENCH:无标题`)},w(e.title||c(X)(`@WORKBENCH:无标题`)),9,bn),t[6]||=K(`span`,{class:`exec-card__spacer`},null,-1),K(`span`,xn,[e.taskTitle?(A(),o(`span`,Sn,`📁 `+w(e.taskTitle),1)):s(``,!0),e.startedAt?(A(),o(`span`,Cn,`⏱ `+w(L(e.startedAt,e.endedAt)),1)):s(``,!0),e.exitCode===null?s(``,!0):(A(),o(`span`,wn,`exit `+w(e.exitCode),1))]),K(`button`,{type:`button`,class:`exec-card__del`,title:c(X)(`@WORKBENCH:删除`),onClick:t=>ce(e.id)},`×`,8,Tn)]),e.error?(A(),o(`p`,En,`⚠ `+w(e.error),1)):s(``,!0),y(Qt,{job:e,onReExecute:oe},null,8,[`job`])],2))),128))])),[[de,d.value]]),i.value>On?(A(),o(`footer`,Dn,[y(ue,{"current-page":m.page,"onUpdate:currentPage":t[4]||=e=>m.page=e,"page-size":On,total:i.value,layout:`prev, pager, next, total`,background:``,small:``,onCurrentChange:E},null,8,[`current-page`,`total`])])):s(``,!0)])}}}),[[`__scopeId`,`data-v-7079b876`]]);H();var An=new Set([`image/png`,`image/jpeg`,`image/jpg`,`image/gif`,`image/webp`,`image/bmp`,`image/svg+xml`,`application/pdf`,`text/plain`,`text/markdown`,`text/x-markdown`,`text/csv`,`application/json`,`text/json`,`text/x-log`]),jn=`.png,.jpg,.jpeg,.gif,.webp,.bmp,.svg,.pdf,.txt,.md,.csv,.json,.log`,Mn=20971520,Nn=3840,Pn=new Set([`image/png`,`image/jpeg`,`image/jpg`,`image/webp`,`image/bmp`]);function Fn(e){if(e.size<=3670016)return!1;let t=String(e.type||``).toLowerCase();return t?Pn.has(t):/\.(png|jpe?g|webp|bmp)$/i.test(e.name)}function In(e,t){return`${String(e||`attachment`).replace(/\.[^./\\]+$/,``)}.${t}`}async function Ln(e){if(typeof createImageBitmap==`function`)try{let t=await createImageBitmap(e);return{source:t,width:t.width,height:t.height,release:()=>t.close()}}catch{}return await new Promise(t=>{let n=URL.createObjectURL(e),r=new Image;r.onload=()=>t({source:r,width:r.naturalWidth,height:r.naturalHeight,release:()=>URL.revokeObjectURL(n)}),r.onerror=()=>{URL.revokeObjectURL(n),t(null)},r.src=n})}function Rn(e,t,n){return new Promise(r=>{try{e.toBlob(e=>r(e&&e.type===t?e:null),t,n)}catch{r(null)}})}async function zn(e){let t=await Ln(e);if(!t)return null;try{let n=[{edge:Nn,quality:.95},{edge:Nn,quality:.85},{edge:2560,quality:.85},{edge:1920,quality:.8}],r=null;for(let e of n){let n=Math.min(1,e.edge/Math.max(t.width,t.height)),i=Math.max(1,Math.round(t.width*n)),a=Math.max(1,Math.round(t.height*n)),o=document.createElement(`canvas`);o.width=i,o.height=a;let s=o.getContext(`2d`);if(!s)return null;s.drawImage(t.source,0,0,i,a);let c=await Rn(o,`image/webp`,e.quality)||await Rn(o,`image/jpeg`,e.quality);if(!c)return null;if((!r||c.size<r.size)&&(r=c),c.size<=3670016)break}return!r||r.size>=e.size?null:{blob:r,ext:r.type===`image/webp`?`webp`:`jpg`}}catch{return null}finally{t.release()}}function Bn(){let e=P({}),t=P(null);function n(t){return!!e.value[t]}function r(e,t){if(e instanceof File)return e;let n=e.type||`application/octet-stream`;return new File([e],t,{type:n})}function i(e){return e.kind===`draft`?`draft`:`task-${e.task?.id??``}`}function a(e){if(e.kind===`draft`)return e.list;let t=e.task?.attachments;return Array.isArray(t)?t:[]}function o(e,t){if(e.kind===`draft`){e.replace(t);return}e.task&&(e.task.attachments=t)}function s(e){return e.kind===`draft`?`/api/workbench/orchestrator/attachments`:`/api/workbench/tasks/${e.task?.id??``}/attachments`}function c(e,t){return e.kind===`draft`?`/api/workbench/orchestrator/attachments/${t}`:`/api/workbench/tasks/${e.task?.id??``}/attachments/${t}`}function l(e,t){if(!e.clipboardData)return;let n=Array.from(e.clipboardData.items).filter(e=>e.kind===`file`&&e.type.startsWith(`image/`));if(n.length>0){e.preventDefault();for(let e of n){let n=e.getAsFile();if(!n)continue;let i=(n.type.split(`/`)[1]||`png`).replace(`jpeg`,`jpg`);d(t,r(n,`paste-${new Date().toISOString().replace(/[:.]/g,`-`)}.${i}`))}return}let i=Array.from(e.clipboardData.items).filter(e=>e.kind===`file`&&!e.type.startsWith(`image/`));if(i.length>0){e.preventDefault();for(let e of i){let n=e.getAsFile();n&&d(t,r(n,n.name||`pasted-file`))}}}function u(e,n){t.value=null,Array.from(e.dataTransfer?.files||[]).forEach(e=>d(n,e))}async function d(t,n){if(!An.has(n.type)&&!n.name.match(/\.(png|jpg|jpeg|gif|webp|bmp|svg|pdf|txt|md|markdown|csv|json|log)$/i)){M.error(`${X(`@WORKBENCH:不支持的文件类型`)}(${n.name})`);return}let c=a(t);if(c.length>=9){M.error(X(`@WORKBENCH:单个任务最多 9 个附件`));return}if(c.find(e=>e.originalName===n.name&&e.size===n.size)){M.info(`${n.name} ${X(`@WORKBENCH:已存在,已复用`)}`);return}let l=i(t);e.value[l]=!0;try{let e=n;if(Fn(n)){let t=await zn(n);t&&(e=r(t.blob,In(n.name,t.ext)),M.info(X(`@WORKBENCH:图片过大,已压缩后上传:{from} → {to}`,{from:h(n.size),to:h(e.size)})))}if(e.size>20971520){M.error(`「${n.name}」${X(`@WORKBENCH:超过 {size} 限制`,{size:h(Mn)})}`);return}let i=await fetch(s(t),{method:`POST`,headers:{"Content-Type":`application/octet-stream`,"X-Original-Name":e.name,"X-Mime-Type":e.type||`application/octet-stream`},body:e}).then(e=>e.json());if(i.success){let n=a(t);n.push(i.attachment),o(t,n),M.success(`${X(`@WORKBENCH:已添加:`)}${e.name}`)}else M.error(i.error||X(`@WORKBENCH:上传失败`))}catch(e){M.error(X(`@WORKBENCH:上传失败`)+`:`+(e&&e.message||e))}finally{e.value[l]=!1}}async function f(e,t){try{await fe.confirm(X(`@WORKBENCH:删除附件「{name}」?`,{name:t.originalName}),X(`@WORKBENCH:确认`),{type:`warning`})}catch{return}let n=await fetch(c(e,t.id),{method:`DELETE`}).then(e=>e.json());n.success?(o(e,a(e).filter(e=>e.id!==t.id)),M.success(X(`@WORKBENCH:已删除`))):M.error(n.error||X(`@WORKBENCH:删除失败`))}function p(e){let t=document.createElement(`input`);t.type=`file`,t.accept=jn,t.multiple=!0,t.onchange=()=>{Array.from(t.files||[]).forEach(t=>d(e,t))},t.click()}let ee=new Set([`png`,`jpg`,`jpeg`,`gif`,`webp`,`bmp`,`svg`]);function m(e){let t=String(e?.ext||``).toLowerCase();if(t&&ee.has(t)||String(e?.mimeType||``).toLowerCase().startsWith(`image/`))return!0;let n=String(e?.originalName||``).toLowerCase();return/\.(png|jpe?g|gif|webp|bmp|svg)$/.test(n)}function h(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(2)} MB`}return{uploadingTargets:e,pasteHoverId:t,isUploading:n,ensureFile:r,isImageAttachment:m,humanSize:h,targetKey:i,targetAttachments:a,setTargetAttachments:o,targetUploadUrl:s,targetDeleteUrl:c,onAttachmentPaste:l,onAttachmentDrop:u,uploadAttachment:d,removeAttachment:f,pickAttachmentFile:p}}T();var Vn=`__simple`,Hn=65536;function Un(e,t){function n(t){if(!t)return[];let n=`${t.id}${Vn}`;return e.value.filter(e=>e.subId===n||e.subId.startsWith(`${n}__r`)).sort((e,t)=>{let n=e.startedAt||``,r=t.startedAt||``;return n&&r?n.localeCompare(r):n?-1:+!!r})}function r(e){if(!e)return null;let t=n(e);return t.length>0?t[t.length-1]:null}function i(e){return e?e.status===`pending`||e.status===`running`?`running`:e.status===`done`?`done`:e.status===`cancelled`?`cancelled`:`error`:`idle`}return{simpleConversationMessages:a(()=>{if(!t.value)return[];let e=n(t.value);if(e.length===0)return[];let r=[];return e.forEach((t,n)=>{let i=n===e.length-1,a=t.startedAt?new Date(t.startedAt).getTime():Date.now();t.prompt&&r.push({id:`${t.id}-u`,role:`user`,content:t.prompt,status:`done`,createdAt:a});let o=t.output||``,s=t.thinking||``,c=o.length>Hn?`\u2026(前文已截断)\n${o.slice(-65536)}`:o,l=s.length>Hn?`\u2026(前文已截断)\n${s.slice(-65536)}`:s,u=!!c,d=!!l,f=Mt(t),p=f.length>0,ee=u||d||p,m;if(!i)m=`done`;else{let e=t.status;m=e===`running`||e===`pending`?ee?`streaming`:`pending`:e===`error`?`error`:`done`}r.push({id:`${t.id}-a`,role:`assistant`,content:c,reasoning:d?l:void 0,reasoningStatus:d?!i&&u||u?`done`:m===`streaming`?`streaming`:`done`:void 0,toolCalls:p?f:void 0,status:m,error:m===`error`&&t.error||void 0,createdAt:a})}),r}),simpleAllJobsFor:n,simpleJobFor:r,simpleJobState:i,SIMPLE_SUB_ID_SUFFIX:Vn,MAX_LOG_DISPLAY_SIMPLE:Hn}}function Wn(e,t,n,r){function i(){return{executor:r.getExecutor()}}async function a(e){if(!n.value||n.value.id!==e.id)return!0;let i=t.value.find(t=>t.id===e.id);return i&&i.title===n.value.title&&i.desc===n.value.desc&&i.promptId===n.value.promptId&&(i.simpleOverride||``)===(n.value.simpleOverride||``)?!0:await r.persistTask(!1)}async function o(e){if(!await a(e))return;await r.clearJobsByTask(e.id);let t=await fetch(`/api/workbench/tasks/${encodeURIComponent(e.id)}/run`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(i())}).then(e=>e.json()).catch(e=>({success:!1,error:e?.message||String(e)}));t.success?M.success(t.message||X(`@WORKBENCH:已加入执行队列`)):M.error(t.error||X(`@WORKBENCH:执行失败`))}async function s(t,n){let r=e.value.filter(e=>e.taskId===t.id).slice(-1)[0];if(!r){M.error(X(`@WORKBENCH:没有可续接的会话`));return}let i=Array.isArray(t.attachments)?t.attachments:[],a=await fetch(`/api/workbench/jobs/${r.id}/continue`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({userMessage:n,attachments:i})}).then(e=>e.json()).catch(e=>({success:!1,error:e?.message||String(e)}));a.success?M.success(a.message||X(`@WORKBENCH:已加入续接队列`)):M.error(a.error||X(`@WORKBENCH:续接失败`))}async function c(e,t){let n=t.text.trim();if(n){for(let n of t.files)await r.uploadAttachment({kind:`task`,task:e},n.file);await s(e,n)}}async function l(e){let n=t.value.find(t=>t.id===e.taskId)||t.value.find(t=>t.id===String(e.subId||``).replace(/__simple(?:__r\d+)?$/,``));if(!n){M.error(X(`@WORKBENCH:找不到对应任务,无法重新执行`));return}await o(n)}async function u(e){try{await fe.confirm(X(`@WORKBENCH:确认停止执行?已输出的内容会保留。`),X(`@WORKBENCH:停止执行`),{confirmButtonText:X(`@WORKBENCH:停止`),cancelButtonText:X(`@WORKBENCH:取消`),type:`warning`})}catch{return}let t=await fetch(`/api/workbench/jobs/${e.id}/cancel`,{method:`POST`}).then(e=>e.json()).catch(e=>({success:!1,error:e?.message||String(e)}));t.success?M.success(X(`@WORKBENCH:已发送停止信号`)):M.error(t.error||X(`@WORKBENCH:停止失败`))}async function d(){if(!n.value)return;let t=n.value,i=e.value.filter(e=>e.taskId===t.id),a=i.filter(e=>e.status===`running`||e.status===`pending`).length,o=i.length===0?X(`@WORKBENCH:当前任务还没有执行内容,确认仍要清空?`):X(`@WORKBENCH:将清空 {m} 条执行记录,任务描述/附件保留。`,{m:i.length});try{await fe.confirm(o,X(`@WORKBENCH:清空执行内容`),{confirmButtonText:X(`@WORKBENCH:清空`),cancelButtonText:X(`@WORKBENCH:取消`),type:`warning`})}catch{return}if(a>0){M.warning(X(`@WORKBENCH:任务正在执行,请先停止`));return}let s=await fetch(`/api/workbench/tasks/${encodeURIComponent(t.id)}/clear-execution`,{method:`POST`,headers:{"Content-Type":`application/json`}}).then(e=>e.json()).catch(e=>({success:!1,error:e?.message||String(e)}));s?.success?(e.value=e.value.filter(e=>e.taskId!==t.id),r.syncRunningCount(),M.success(s.message||X(`@WORKBENCH:已清空执行内容`))):M.error(s?.error||X(`@WORKBENCH:清空失败`))}return{runTask:o,continueChat:s,onContinueSendFromChat:c,onReExecuteJob:l,cancelJob:u,clearExecutionForSelectedTask:d}}H();function Gn(){let e=P([]),t=P([]),n=P([]),r=P({path:``,name:``}),i=Je();function a(){i.setRunning(n.value.filter(e=>e.status===`running`).length)}function o(e,r){if(e===`hello`){n.value=r.jobs||[],a();return}if(e===`job:update`){let e=r,t=n.value.findIndex(t=>t.id===e.id);t>=0?n.value[t]=e:n.value.push(e),a();return}if(e===`job:thinking-delta`||e===`job:output-delta`){let t=e===`job:thinking-delta`?`thinking`:`output`,i=r?.delta||``;if(!i)return;let a=n.value.findIndex(e=>e.id===r.id);if(a<0)return;let o=n.value[a][t]||``;n.value[a][t]=o+i;return}if(e===`job:toolcalls`){let e=Array.isArray(r?.updates)?r.updates:[];if(!e.length)return;let t=n.value.findIndex(e=>e.id===r.id);if(t<0)return;let i=n.value[t];for(let t of e){if(!t||!t.id)continue;Array.isArray(i.toolCalls)||(i.toolCalls=[]);let e=i.toolCalls.findIndex(e=>e.id===t.id);e>=0?i.toolCalls[e]={...i.toolCalls[e],...t}:i.toolCalls.push(t)}return}if(e===`task:update`){let e=t.value.findIndex(e=>e.id===r.id);e>=0&&(t.value[e]=r)}if(e===`tasks:reordered`){if(Array.isArray(r?.tasks)){if(r.tasks.length<t.value.length){console.warn(`[SSE tasks:reordered] 数据丢失风险:当前 ${t.value.length} 个任务,服务端只返回 ${r.tasks.length} 个,拒绝覆盖`);return}t.value=r.tasks}return}e===`task:error`&&M.error(r.error||X(`@WORKBENCH:执行出错`))}let s=null;function c(){s&&=(s.close(),null),s=new EventSource(`/api/workbench/events`),s.onmessage=e=>{try{let t=JSON.parse(e.data);o(t.event,t.payload)}catch{}},s.onerror=()=>{s&&=(s.close(),null),setTimeout(c,3e3)}}function l(){s&&=(s.close(),null)}async function u(){let t=await fetch(`/api/workbench/prompts`).then(e=>e.json()).catch(()=>({prompts:[]}));e.value=t.prompts||[]}async function d(e){let n=await fetch(`/api/workbench/tasks`).then(e=>e.json()).catch(()=>({tasks:[]}));t.value=n.tasks||[],e?.()}async function f(){let e=await fetch(`/api/workbench/current-project`).then(e=>e.json()).catch(()=>({}));e&&typeof e.projectPath==`string`&&(r.value={path:e.projectPath,name:e.projectName||``})}async function p(){let e=await fetch(`/api/workbench/jobs`).then(e=>e.json()).catch(()=>({jobs:[]}));n.value=e.jobs||[],a()}async function ee(e){try{let t=await fetch(`/api/workbench/jobs/by-task/${encodeURIComponent(e)}`,{method:`DELETE`}).then(e=>e.json());return t?.success?(n.value=n.value.filter(t=>t.taskId!==e),a(),t.removed||0):(console.warn(`[clearJobsByTask] failed:`,t?.error),0)}catch(e){return console.warn(`[clearJobsByTask] error:`,e),0}}async function m(e){let t={title:``,desc:``,promptId:null,simpleOverride:``};e&&(t.projectPath=e);try{let e=await fetch(`/api/workbench/tasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}).then(e=>e.json());return e.success?e.task||null:(M.error(e.error||X(`@WORKBENCH:保存失败`)),null)}catch{return M.error(X(`@WORKBENCH:保存失败`)),null}}return{prompts:e,tasks:t,jobs:n,currentProject:r,syncRunningCount:a,applyJobEvent:o,connectSSE:c,disconnectSSE:l,loadPrompts:u,loadTasks:d,loadCurrentProject:f,loadJobs:p,clearJobsByTask:ee,createTask:m}}H(),T();var Kn=`__no_project__`,qn=`wb.collapsedGroupPaths.v1`,Jn=`wb.seenGroupPaths.v1`;function Yn(e){try{let t=localStorage.getItem(e);if(!t)return new Set;let n=JSON.parse(t);return new Set(Array.isArray(n)?n.filter(e=>typeof e==`string`):[])}catch{return new Set}}function Xn(e,t){try{localStorage.setItem(e,JSON.stringify(Array.from(t)))}catch{}}function Zn(e,t){let n=P(Yn(qn)),r=P(Yn(Jn));V(n,e=>Xn(qn,e),{deep:!1}),V(r,e=>Xn(Jn,e),{deep:!1});function i(e){return n.value.has(e)}function o(e){n.value.has(e)?n.value.delete(e):n.value.add(e),n.value=new Set(n.value);let t=new Set(r.value);t.add(e),r.value=t}let s=a(()=>{let r=e.value,i=new Map;for(let e of r){let t=Q(e.projectPath)||Kn;i.has(t)||i.set(t,[]),i.get(t).push(e)}let a=Q(t.value.path),o=Array.from(i.keys()).sort((e,t)=>e===a?-1:t===a||e===Kn?1:t===Kn?-1:e.localeCompare(t));return{groups:o.map(e=>({path:e,label:e===Kn?X(`@WORKBENCH:未关联项目`):e,tasks:i.get(e)})),hasMultiple:o.length>1||o.length===1&&n.value.has(o[0])}});function c(e){if(!e||e===Kn)return e;let t=e.split(/[\\/]/).filter(Boolean);return t.length<=1?e:t.slice(-2).join(`/`)}let l=a(()=>`${Q(t.value.path)}|${s.value.groups.map(e=>e.path).join(`
|
|
6
|
-
`)}`);return V(l,()=>{let e=Q(t.value.path);if(!e)return;let i=new Set(n.value),a=new Set(r.value),o=!1;for(let t of s.value.groups)a.has(t.path)||(a.add(t.path),t.path!==e&&(i.add(t.path),o=!0));o&&(n.value=i),r.value=a},{immediate:!0}),{groupedTasksList:s,isGroupCollapsed:i,toggleGroupCollapsed:o,shortProjectLabel:c}}T(),H(),S(),he();var Qn={class:`wb-sidebar`},$n={class:`wb-section`},er=[`disabled`],tr=[`aria-expanded`,`title`,`onClick`,`onKeydown`],nr=[`title`],rr={class:`wb-pill wb-task-group__count`},ir=[`data-task-id`,`data-group-path`,`title`,`aria-pressed`,`onClick`,`onKeydown`,`onMousedown`],ar={class:`wb-task-item__body`},or=[`title`],sr=[`title`],cr={class:`wb-task-item__action-group`},lr=[`title`,`aria-label`,`onClick`],ur=[`onClick`,`title`,`aria-label`],dr={key:0,class:`wb-empty wb-empty--rich`},fr={class:`wb-empty__art`,"aria-hidden":`true`},pr={class:`wb-empty__title`},mr={class:`wb-empty__hint`},hr={class:`wb-empty__cta`},gr={class:`wb-section`},_r={class:`wb-section__head`},vr={class:`wb-section__tag wb-section__tag--accent`},yr={class:`wb-section__title`},br={class:`wb-pill wb-section__count`},xr=[`title`,`aria-label`],Sr={class:`wb-prompt-list`},Cr={class:`wb-prompt-item__icon`},wr=[`onClick`,`title`],Tr=[`title`],Er=[`title`],Dr=[`onClick`,`title`,`aria-label`],Or={key:0,class:`wb-empty wb-empty--compact`},kr=5,Ar=Z(x({__name:`WorkbenchSidebar`,props:{tasks:{},prompts:{},selectedTaskId:{},currentProject:{},creatingTask:{type:Boolean},isTaskRunning:{type:Function}},emits:[`select-task`,`delete-task`,`copy-task`,`create-task`,`open-create-prompt`,`open-edit-prompt`,`delete-prompt`,`reorder-tasks`],setup(e,{emit:t}){let r=e,i=t,l=a(()=>r.currentProject),{groupedTasksList:u,isGroupCollapsed:d,toggleGroupCollapsed:f,shortProjectLabel:p}=Zn(a(()=>r.tasks),l),m=a(()=>Q(r.currentProject.path));function h(e){return!!e.projectPath&&Q(e.projectPath)!==m.value}let v=a(()=>{let e=m.value;return r.prompts.filter(t=>!t.projectPath||Q(t.projectPath)===e)});function b(e){return(e.title||``).trim()||(e.desc||``).replace(/\s+/g,` `).trim()}function te(e){let t=b(e),n=X(`@WORKBENCH:拖动排序提示`);return t?`${t} · ${n}`:n}function x(e){return r.isTaskRunning(e)}let S=P(null),T=P(null),E=P(null),ne=P(null),O=P(null),re=null;function ie(){S.value=null,T.value=null,E.value=null,ne.value=null,O.value=null,re=null}function k(e,t,n,r){e.button===0&&(re={pointerY:e.clientY,li:r,taskId:t.id,groupPath:n},window.addEventListener(`mousemove`,ae),window.addEventListener(`mouseup`,se,{once:!0}))}function ae(e){if(!re)return;if(S.value===null){if(Math.abs(e.clientY-re.pointerY)<kr)return;S.value=re.taskId,T.value=re.groupPath,window.getSelection()?.removeAllRanges(),document.body.style.userSelect=`none`}let t=document.elementFromPoint(e.clientX,e.clientY);if(!t)return;let n=t.closest(`.wb-task-item`);if(!n){E.value=null,ne.value=null,O.value=null;return}let r=n.getAttribute(`data-task-id`),i=n.getAttribute(`data-group-path`);if(!r||!i)return;if(i!==T.value){E.value=null,ne.value=null,O.value=null;return}let a=n.getBoundingClientRect(),o=a.top+a.height/2;E.value=r,ne.value=i,O.value=e.clientY<o?`before`:`after`}function se(e){if(window.removeEventListener(`mousemove`,ae),document.body.style.userSelect=``,!re){ie();return}let t=re.groupPath,n=re.taskId,r=E.value,a=O.value,o=ne.value;if(ie(),!r||!a||o!==t)return;let s=u.value.groups.find(e=>e.path===t);if(!s)return;let c=s.tasks.map(e=>e.id),l=c.indexOf(n);if(l<0)return;c.splice(l,1);let d=c.indexOf(r)+ +(a===`after`);c.splice(d,0,n),i(`reorder-tasks`,{groupPath:t,orderedIds:c})}return(t,r)=>{let a=ee,l=g;return A(),o(`aside`,Qn,[K(`section`,$n,[K(`button`,{class:`wb-new-btn`,disabled:e.creatingTask,onClick:r[0]||=e=>i(`create-task`)},[y(a,{class:`wb-new-btn__icon`},{default:F(()=>[y(c(_))]),_:1}),K(`span`,null,w(c(X)(`@WORKBENCH:新建任务`)),1),r[5]||=K(`span`,{class:`wb-new-btn__shortcut`},`N`,-1)],8,er),K(`ul`,{class:U([`wb-task-list`,{"is-grouped":c(u).hasMultiple}])},[(A(!0),o(J,null,C(c(u).groups,t=>(A(),o(J,{key:t.path},[c(u).hasMultiple?(A(),o(`li`,{key:0,class:U([`wb-task-group__head`,{"is-current":t.path===m.value,"is-collapsed":c(d)(t.path)}]),role:`button`,tabindex:`0`,"aria-expanded":!c(d)(t.path),title:c(d)(t.path)?c(X)(`@WORKBENCH:展开`):c(X)(`@WORKBENCH:收起`),onClick:e=>c(f)(t.path),onKeydown:[j(G(e=>c(f)(t.path),[`prevent`]),[`enter`]),j(G(e=>c(f)(t.path),[`prevent`]),[`space`])]},[y(a,{class:`wb-task-group__caret`},{default:F(()=>[(A(),D(Ce(c(d)(t.path)?c(oe):c(be))))]),_:2},1024),y(a,{class:`wb-task-group__icon`},{default:F(()=>[y(c(le))]),_:1}),K(`span`,{class:`wb-task-group__name`,title:t.path===m.value?e.currentProject.path:t.label},w(t.path===m.value?e.currentProject.name:c(p)(t.label)),9,nr),K(`span`,rr,w(t.tasks.length),1)],42,tr)):s(``,!0),c(d)(t.path)?s(``,!0):(A(!0),o(J,{key:1},C(t.tasks,n=>(A(),o(`li`,{key:n.id,class:U([`wb-task-item`,{active:n.id===e.selectedTaskId,"is-other-project":h(n),"is-running":x(n),"is-dragging":S.value===n.id,"is-drop-before":E.value===n.id&&O.value===`before`,"is-drop-after":E.value===n.id&&O.value===`after`}]),"data-task-id":n.id,"data-group-path":t.path,title:te(n),role:`button`,tabindex:`0`,"aria-pressed":n.id===e.selectedTaskId,onClick:e=>i(`select-task`,n),onKeydown:[j(G(e=>i(`select-task`,n),[`prevent`]),[`enter`]),j(G(e=>i(`select-task`,n),[`prevent`]),[`space`])],onMousedown:e=>k(e,n,t.path,e.currentTarget)},[K(`div`,ar,[K(`div`,{class:`wb-task-item__title`,title:b(n)},w(b(n)),9,or)]),x(n)?(A(),o(`span`,{key:0,class:`wb-task-item__running-dot`,title:c(X)(`@WORKBENCH:执行中`),"aria-hidden":`true`},null,8,sr)):s(``,!0),K(`div`,cr,[K(`button`,{class:`wb-task-item__copy`,title:c(X)(`@WORKBENCH:复制任务`),"aria-label":c(X)(`@WORKBENCH:复制任务`),onClick:G(e=>i(`copy-task`,n),[`stop`]),onKeydown:r[1]||=G(()=>{},[`stop`])},[y(a,null,{default:F(()=>[y(c(ye))]),_:1})],40,lr),x(n)?s(``,!0):(A(),o(`button`,{key:0,class:`wb-task-item__del`,onClick:G(e=>i(`delete-task`,n),[`stop`]),onKeydown:r[2]||=G(()=>{},[`stop`]),title:c(X)(`@WORKBENCH:删除`),"aria-label":c(X)(`@WORKBENCH:删除`)},[y(a,null,{default:F(()=>[y(c(me))]),_:1})],40,ur))])],42,ir))),128))],64))),128)),e.tasks.length===0?(A(),o(`li`,dr,[K(`div`,fr,[y(a,null,{default:F(()=>[y(c(ge))]),_:1})]),K(`div`,pr,w(c(X)(`@WORKBENCH:暂无任务`)),1),K(`div`,mr,w(c(X)(`@WORKBENCH:点击上方按钮新建`)),1),K(`div`,hr,[y(l,{type:`primary`,size:`small`,icon:c(_),loading:e.creatingTask,onClick:r[3]||=e=>i(`create-task`)},{default:F(()=>[z(w(c(X)(`@WORKBENCH:新建任务`)),1)]),_:1},8,[`icon`,`loading`])])])):s(``,!0)],2)]),K(`section`,gr,[K(`header`,_r,[K(`span`,vr,w(c(X)(`@WORKBENCH:提示`)),1),K(`h3`,yr,w(c(X)(`@WORKBENCH:预置提示词`)),1),K(`span`,br,w(v.value.length),1),K(`button`,{class:`wb-section__action`,onClick:r[4]||=e=>i(`open-create-prompt`),title:c(X)(`@WORKBENCH:新建提示词`),"aria-label":c(X)(`@WORKBENCH:新建提示词`)},[y(a,null,{default:F(()=>[y(c(_))]),_:1})],8,xr)]),K(`ul`,Sr,[(A(!0),o(J,null,C(v.value,e=>(A(),o(`li`,{key:e.id,class:`wb-prompt-item`},[K(`div`,Cr,[y(a,null,{default:F(()=>[y(c(n))]),_:1})]),K(`button`,{type:`button`,class:`wb-prompt-item__name`,onClick:t=>i(`open-edit-prompt`,e),title:e.content},w(e.name),9,wr),e.projectPath?(A(),o(`span`,{key:1,class:`wb-prompt-item__tag wb-prompt-item__tag--project`,title:e.projectPath},w(c(p)(e.projectPath)),9,Er)):(A(),o(`span`,{key:0,class:`wb-prompt-item__tag`,title:c(X)(`@WORKBENCH:全局(所有项目可用)`)},w(c(X)(`@WORKBENCH:全局(所有项目可用)`)),9,Tr)),K(`button`,{class:`wb-prompt-item__del`,onClick:t=>i(`delete-prompt`,e),title:c(X)(`@WORKBENCH:删除`),"aria-label":c(X)(`@WORKBENCH:删除`)},[y(a,null,{default:F(()=>[y(c(me))]),_:1})],8,Dr)]))),128)),v.value.length===0?(A(),o(`li`,Or,w(c(X)(`@WORKBENCH:暂无提示词`)),1)):s(``,!0)])])])}}}),[[`__scopeId`,`data-v-b7ae6143`]]);H();function jr(){let e=P([]),t=P([]),n=P(``),r=P(!1),i=P(!1);async function a(a=!1){a||(r.value=!0);try{let r=await fetch(`/api/workbench/projects`,{cache:`no-store`}).then(e=>e.json());return r?.success?(e.value=Array.isArray(r.projects)?r.projects:[],t.value=Array.isArray(r.tasks)?r.tasks:[],n.value=r.currentProjectPath||``,i.value=!0,!0):(a||M.error(r?.error||X(`@WORKBENCH:读取项目列表失败`)),!1)}catch(e){return a||M.error(X(`@WORKBENCH:网络错误: `)+(e?.message||e)),!1}finally{r.value=!1}}return{projects:e,boardTasks:t,currentProjectPath:n,loading:r,loaded:i,loadProjects:a}}var Mr=[0,5,10,15,30,60].map(e=>e*60*1e3),Nr=6e5;function Pr(e){let t=Number(e);return Mr.includes(t)?t:Nr}function Fr(e){return e?e>=36e5?`@WORKBENCH:每 {n} 小时报告`:`@WORKBENCH:每 {n} 分钟报告`:`@WORKBENCH:关闭自动报告`}function Ir(e){return e?{n:Math.round(e>=36e5?e/36e5:e/6e4)}:{}}function Lr(e){switch(e){case`NO_MODEL`:return`@WORKBENCH:没有可用的 AI 模型,只记录了任务事实`;case`LLM_TIMEOUT`:return`@WORKBENCH:生成超时,只记录了任务事实`;case`LLM_FAILED`:return`@WORKBENCH:生成失败,只记录了任务事实`;default:return`@WORKBENCH:生成失败,只记录了任务事实`}}H();function Rr(){let e=P(!0),t=P([]),n=P([]),r=P([]),i=P(null),a=P(!1),o=P(!1),s=P(!1),c=P(``),l=P({}),u=P([]),d=P(!1),f=P(!1),p=P(Nr);async function ee(o=!1){try{let s=await fetch(`/api/workbench/orchestrator`,{cache:`no-store`}).then(e=>e.json());return s?.success?(e.value=s.active!==!1,t.value=Array.isArray(s.instructions)?s.instructions:[],n.value=Array.isArray(s.activity)?s.activity:[],r.value=Array.isArray(s.running)?s.running:[],i.value=s.updatedAt||null,c.value=typeof s.defaultPrompt==`string`?s.defaultPrompt:``,l.value=s.projectPrompts&&typeof s.projectPrompts==`object`?s.projectPrompts:{},p.value=Pr(s.reportIntervalMs),a.value=!0,!0):(o||M.error(s?.error||X(`@WORKBENCH:读取编排状态失败`)),!1)}catch(e){return o||M.error(X(`@WORKBENCH:网络错误: `)+(e?.message||e)),!1}}async function m(e=!1){if(d.value)return!1;d.value=!0;try{let t=await fetch(`/api/workbench/orchestrator/reports`,{cache:`no-store`}).then(e=>e.json());return t?.success?(u.value=Array.isArray(t.reports)?t.reports:[],!0):(e||M.error(t?.error||X(`@WORKBENCH:读取进度报告失败`)),!1)}catch(t){return e||M.error(X(`@WORKBENCH:网络错误: `)+(t?.message||t)),!1}finally{d.value=!1}}async function h(){if(f.value)return null;f.value=!0;try{let e=String(Be().locale||``).startsWith(`en`)?`en`:`zh`,t=await fetch(`/api/workbench/orchestrator/report`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({locale:e})}).then(e=>e.json());return t?.success?(t.report&&(u.value=[t.report,...u.value].slice(0,20)),t.report||null):(M.error(t?.error||X(`@WORKBENCH:生成进度报告失败`)),null)}catch(e){return M.error(X(`@WORKBENCH:网络错误: `)+(e?.message||e)),null}finally{f.value=!1}}async function g(e){try{let t=await fetch(`/api/workbench/orchestrator/report-interval`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({intervalMs:e})}).then(e=>e.json());return t?.success?(p.value=Pr(t.reportIntervalMs),!0):(M.error(t?.error||X(`@WORKBENCH:保存失败`)),!1)}catch(e){return M.error(X(`@WORKBENCH:网络错误: `)+(e?.message||e)),!1}}async function _(e){try{let t=await fetch(`/api/workbench/orchestrator/default-prompt`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({prompt:e})}).then(e=>e.json());return t?.success?(c.value=typeof t.defaultPrompt==`string`?t.defaultPrompt:``,M.success(X(`@WORKBENCH:已保存全局默认提示词`)),!0):(M.error(t?.error||X(`@WORKBENCH:保存失败`)),!1)}catch(e){return M.error(X(`@WORKBENCH:网络错误: `)+(e?.message||e)),!1}}async function v(e,t){try{let n=await fetch(`/api/workbench/orchestrator/project-prompt`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({projectPath:e,prompt:t})}).then(e=>e.json());return n?.success?(l.value=n.projectPrompts&&typeof n.projectPrompts==`object`?n.projectPrompts:{},M.success(X(`@WORKBENCH:已保存项目默认提示词`)),!0):(M.error(n?.error||X(`@WORKBENCH:保存失败`)),!1)}catch(e){return M.error(X(`@WORKBENCH:网络错误: `)+(e?.message||e)),!1}}async function y(t){if(o.value)return!1;let n=e.value;e.value=t,o.value=!0;try{let r=await fetch(`/api/workbench/orchestrator/state`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({active:t})}).then(e=>e.json());return r?.success?(e.value=r.active!==!1,M.success(e.value?X(`@WORKBENCH:已恢复调度`):X(`@WORKBENCH:已暂停调度,派发将只建任务不执行`)),!0):(e.value=n,M.error(r?.error||X(`@WORKBENCH:切换调度状态失败`)),!1)}catch(t){return e.value=n,M.error(X(`@WORKBENCH:网络错误: `)+(t?.message||t)),!1}finally{o.value=!1}}async function b(e){if(s.value)return null;s.value=!0;try{let t=await fetch(`/api/workbench/orchestrator/dispatch`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({text:e.text,projectPath:e.projectPath||``,autoRun:e.autoRun!==!1,useDefaultPrompt:e.useDefaultPrompt!==!1,executor:e.executor,attachments:(e.attachments||[]).map(e=>({id:e.id,ext:e.ext,originalName:e.originalName}))})}).then(e=>e.json());return t?.success?(await ee(!0),{task:t.task||null,ran:!!t.ran}):(M.error(t?.error||X(`@WORKBENCH:派发失败`)),null)}catch(e){return M.error(X(`@WORKBENCH:网络错误: `)+(e?.message||e)),null}finally{s.value=!1}}return{active:e,instructions:t,activity:n,running:r,updatedAt:i,loaded:a,togglingSchedule:o,dispatching:s,defaultPrompt:c,projectPrompts:l,reports:u,loadingReports:d,generatingReport:f,reportIntervalMs:p,loadOrchestrator:ee,setSchedulingActive:y,dispatch:b,saveDefaultPrompt:_,saveProjectPrompt:v,loadReports:m,generateReport:h,setReportInterval:g}}var zr=6e4,Br=60*zr,Vr=24*Br;function Hr(e,t=Date.now()){if(!e)return``;let n=new Date(e).getTime();if(Number.isNaN(n))return``;let r=Math.max(0,t-n);return r<zr?X(`@WORKBENCH:刚刚`):r<Br?X(`@WORKBENCH:N 分钟前`,{n:Math.floor(r/zr)}):r<Vr?X(`@WORKBENCH:N 小时前`,{n:Math.floor(r/Br)}):r<30*Vr?X(`@WORKBENCH:N 天前`,{n:Math.floor(r/Vr)}):new Date(n).toLocaleDateString()}function Ur(e){let t=Number(e);if(!Number.isFinite(t)||t<0)return``;let n=Math.floor(t/1e3),r=Math.floor(n/3600),i=Math.floor(n%3600/60),a=n%60;return r>0?X(`@WORKBENCH:N 小时 M 分`,{n:r,m:i}):i>0?X(`@WORKBENCH:N 分 M 秒`,{n:i,m:a}):X(`@WORKBENCH:N 秒`,{n:a})}function Wr(e,t,n=Date.now()){if(!e)return``;let r=new Date(e).getTime();if(Number.isNaN(r))return``;let i=t?new Date(t).getTime():n;return Number.isNaN(i)?``:Ur(Math.max(0,i-r))}function Gr(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function Kr(e,t=Date.now()){if(!e)return``;let n=new Date(e);if(Number.isNaN(n.getTime()))return``;let r=e=>String(e).padStart(2,`0`),i=`${r(n.getHours())}:${r(n.getMinutes())}:${r(n.getSeconds())}`,a=new Date(t);if(Gr(n,a))return i;if(Gr(n,new Date(a.getFullYear(),a.getMonth(),a.getDate()-1)))return X(`@WORKBENCH:昨天 {time}`,{time:i});let o=`${n.getMonth()+1}/${n.getDate()}`;return n.getFullYear()===a.getFullYear()?`${o} ${i}`:`${n.getFullYear()}/${o} ${i}`}T(),H(),S(),he();var qr={class:`proj`},Jr={class:`proj__head`},Yr={class:`proj__title`},Xr={class:`proj__count`},Zr={key:0,class:`proj__tools`},Qr={class:`proj__search`},$r=[`placeholder`,`aria-label`],ei={class:`proj__toggles`},ti=[`aria-pressed`,`title`],ni=[`aria-pressed`,`title`],ri={class:`proj__list`},ii=[`title`],ai={class:`proj-item__row1`},oi={class:`proj-item__name`},si={key:0,class:`proj-item__running`,"aria-hidden":`true`},ci={class:`proj-item__num`},li={class:`proj-item__row2`},ui={key:0,class:`proj-item__running-text`},di={key:0,class:`proj-item__row3`},fi={class:`proj-item__bar`,"aria-hidden":`true`},pi={class:`proj-item__progress-text`},mi=[`title`,`onClick`,`onKeydown`],hi={class:`proj-item__row1`},gi={class:`proj-item__name`},_i={class:`proj-item__signals`},vi={key:0,class:`proj-item__running`,"aria-hidden":`true`},yi={key:1,class:`proj-item__badge`},bi={class:`proj-item__row2`},xi={key:0,class:`proj-chip proj-chip--missing`},Si={key:0,class:`proj-item__branch`},Ci={class:`proj-item__branch-name`},wi={key:1,class:`proj-chip proj-chip--ahead`},Ti={key:2,class:`proj-chip proj-chip--behind`},Ei={key:3,class:`proj-chip proj-chip--dirty`},Di={class:`proj-item__time`},Oi={key:0,class:`proj-item__row3`},ki={class:`proj-item__bar`,"aria-hidden":`true`},Ai={class:`proj-item__progress-text`},ji={key:1,class:`proj-item__actions`},Mi=[`title`,`aria-label`,`onClick`],Ni=[`title`,`aria-label`,`aria-expanded`,`onClick`],Pi=[`aria-label`],Fi=[`onClick`,`onKeydown`],Ii={class:`proj-menu__icon`},Li={class:`proj-menu__label`},Ri=[`onClick`,`onKeydown`],zi={class:`proj-menu__icon`},Bi={class:`proj-menu__label`},Vi=[`onClick`,`onKeydown`],Hi={class:`proj-menu__icon`},Ui={class:`proj-menu__label`},Wi=[`onClick`,`onKeydown`],Gi={class:`proj-menu__icon`},Ki={class:`proj-menu__label`},qi={class:`proj-menu__title`,role:`presentation`},Ji=[`onClick`,`onKeydown`],Yi={class:`proj-menu__icon`},Xi={class:`proj-menu__label`},Zi={key:0,class:`proj-menu__hint`},Qi=[`onClick`,`onKeydown`],$i={class:`proj-menu__icon`},ea=[`src`],ta={class:`proj-menu__label`},na={class:`proj-menu__hint`},ra=[`onClick`,`onKeydown`],ia={class:`proj-menu__icon`},aa=[`src`],oa={class:`proj-menu__label`},sa={key:0,class:`proj-empty`},ca={class:`proj-empty__title`},la={class:`proj-empty__hint`},ua={key:1,class:`proj-empty`},da={class:`proj-empty__title`},fa=Z(x({__name:`WorkbenchProjectPanel`,props:{projects:{},selectedKey:{},loading:{type:Boolean}},emits:[`select`],setup(e,{emit:t}){let n=e,r=t,i=a(()=>[...n.projects].sort((e,t)=>{if(e.stats.runningJobs>0!=t.stats.runningJobs>0)return e.stats.runningJobs>0?-1:1;let n=e.stats.lastActiveAt||``,r=t.stats.lastActiveAt||``;return n===r?e.name.localeCompare(t.name):r.localeCompare(n)})),l=P(``),d=P(!1),f=P(!1),h=a(()=>!!l.value.trim()||d.value||f.value),g=a(()=>{let e=l.value.trim().toLowerCase();return i.value.filter(t=>d.value&&t.stats.total===0||f.value&&t.git&&t.git.isGitRepo===!1?!1:!e||t.name.toLowerCase().includes(e)||t.path.toLowerCase().includes(e))});function _(){l.value=``,d.value=!1,f.value=!1}let v=a(()=>n.projects.reduce((e,t)=>({running:e.running+t.stats.runningJobs,done:e.done+t.stats.done,total:e.total+t.stats.total}),{running:0,done:0,total:0})),te=a(()=>v.value.total>0?Math.round(v.value.done/v.value.total*100):0);function x(e){return e.git?e.git.isGitRepo===null?X(`@WORKBENCH:未知`):e.git.isGitRepo?e.git.detached?X(`@WORKBENCH:游离 HEAD`):e.git.branch||X(`@WORKBENCH:未知`):``:``}function S(e){return!!(e.git&&e.git.isGitRepo&&(e.git.detached||e.git.branch))}let T=P(null),E=P(null);function ne(e,t){if(T.value===e.key){T.value=null;return}E.value=t.currentTarget,T.value=e.key}function O(){T.value=null}function ie(e){if(!T.value)return;let t=e.target;if(t&&!E.value?.contains(t)){for(let e of Array.from(document.querySelectorAll(`.proj-open-menu`)))if(e.contains(t))return;T.value=null}}p(()=>document.addEventListener(`mousedown`,ie,!0)),m(()=>document.removeEventListener(`mousedown`,ie,!0));let k=Ve(),ae=P(!1),oe=P(null);function ce(e){return k.lastCheckedAt!==null&&!k.isToolAvailable(e)}async function N(e){O();let t=await $e(e.path);t.success?M.success(t.message||X(`@WORKBENCH:已在文件管理器中打开文件夹`)):M.error(t.error||X(`@WORKBENCH:打开文件夹失败`))}async function I(e){O();let t=await Ke(e.path);t.success?M.success(t.message||X(`@67CE7:已在终端中打开目录`)):M.error(t.error||X(`@WORKBENCH:打开终端失败`))}async function L(e){O();let t=await Ye(e.path);t.success?M.success(X(`@WORKBENCH:已在新标签页启动 g ui`)):M.error(t.error||X(`@WORKBENCH:启动 g ui 失败`))}async function R(e){if(O(),e.name)try{await navigator.clipboard.writeText(e.name),M.success(X(`@67CE7:已复制文件夹名称`))}catch{M.error(X(`@67CE7:复制失败`))}}async function de(e,t,n){if(O(),!await Ge()){M.warning(X(`@67CE7:工具检测失败,请稍后重试`));return}if(!k.isToolAvailable(t)){oe.value=t,ae.value=!0;return}let r=await qe(t,e.path,n);r.success?M.success(r.message||X(`@67CE7:已用 {tool} 打开目录`,{tool:Qe[t]})):M.error(`${X(`@67CE7:打开失败: `)}${r.error??``}`)}return(t,n)=>{let i=ee,a=W;return A(),o(`section`,qr,[K(`header`,Jr,[K(`h3`,Yr,w(c(X)(`@WORKBENCH:项目列表`)),1),K(`span`,Xr,[h.value?(A(),o(J,{key:0},[z(w(c(X)(`@WORKBENCH:匹配 {n}/{total} 个项目`,{n:g.value.length,total:e.projects.length})),1)],64)):(A(),o(J,{key:1},[z(w(e.projects.length),1)],64))])]),e.projects.length>0?(A(),o(`div`,Zr,[K(`div`,Qr,[y(i,{class:`proj__search-icon`,"aria-hidden":`true`},{default:F(()=>[y(c(re))]),_:1}),B(K(`input`,{"onUpdate:modelValue":n[0]||=e=>l.value=e,class:`proj__search-input`,type:`search`,placeholder:c(X)(`@WORKBENCH:搜索项目名称或路径`),"aria-label":c(X)(`@WORKBENCH:搜索项目名称或路径`),onKeydown:n[1]||=j(e=>l.value=``,[`esc`])},null,40,$r),[[ue,l.value]])]),K(`div`,ei,[K(`button`,{type:`button`,class:U([`proj__toggle`,{"is-on":d.value}]),"aria-pressed":d.value,title:c(X)(`@WORKBENCH:只显示有任务的项目`),onClick:n[2]||=e=>d.value=!d.value},[K(`span`,null,w(c(X)(`@WORKBENCH:只看有任务`)),1)],10,ti),K(`button`,{type:`button`,class:U([`proj__toggle`,{"is-on":f.value}]),"aria-pressed":f.value,title:c(X)(`@WORKBENCH:只显示 Git 仓库`),onClick:n[3]||=e=>f.value=!f.value},[K(`span`,null,w(c(X)(`@WORKBENCH:隐藏非 Git`)),1)],10,ni)])])):s(``,!0),K(`ul`,ri,[K(`li`,{class:U([`proj-item proj-item--all`,{"is-active":e.selectedKey===``}]),role:`button`,tabindex:`0`,title:c(X)(`@WORKBENCH:全部项目`),onClick:n[4]||=e=>r(`select`,null),onKeydown:[n[5]||=j(G(e=>r(`select`,null),[`prevent`]),[`enter`]),n[6]||=j(G(e=>r(`select`,null),[`prevent`]),[`space`])]},[K(`div`,ai,[y(i,{class:`proj-item__icon`},{default:F(()=>[y(c(De))]),_:1}),K(`span`,oi,w(c(X)(`@WORKBENCH:全部项目`)),1),v.value.running>0?(A(),o(`span`,si)):s(``,!0),K(`span`,ci,w(e.projects.length),1)]),K(`div`,li,[K(`span`,null,w(c(X)(`@WORKBENCH:{n} 个项目`,{n:e.projects.length})),1),v.value.running>0?(A(),o(`span`,ui,w(c(X)(`@WORKBENCH:{n} 个执行中`,{n:v.value.running})),1)):s(``,!0)]),v.value.total>0?(A(),o(`div`,di,[K(`span`,fi,[K(`i`,{class:`proj-item__bar-fill`,style:se({width:te.value+`%`})},null,4)]),K(`span`,pi,w(c(X)(`@WORKBENCH:{done}/{total} 任务完成`,{done:v.value.done,total:v.value.total})),1)])):s(``,!0)],42,ii),(A(!0),o(J,null,C(g.value,t=>(A(),o(`li`,{key:t.key,class:U([`proj-item`,{"is-active":t.key===e.selectedKey,"is-running":t.stats.runningJobs>0,"is-missing":t.exists===!1}]),role:`button`,tabindex:`0`,title:t.path,onClick:e=>r(`select`,t),onKeydown:[j(G(e=>r(`select`,t),[`self`,`prevent`]),[`enter`]),j(G(e=>r(`select`,t),[`self`,`prevent`]),[`space`])]},[K(`div`,hi,[y(i,{class:`proj-item__icon`},{default:F(()=>[y(c(le))]),_:1}),K(`span`,gi,w(t.name),1),K(`span`,_i,[t.stats.runningJobs>0?(A(),o(`span`,vi)):s(``,!0),t.isCurrent?(A(),o(`span`,yi,w(c(X)(`@WORKBENCH:当前`)),1)):s(``,!0)])]),K(`div`,bi,[t.exists===!1?(A(),o(`span`,xi,w(c(X)(`@WORKBENCH:目录不存在`)),1)):(A(),o(J,{key:1},[x(t)?(A(),o(`span`,Si,[S(t)?(A(),D(Fe,{key:0,"icon-class":`git-branch`,"class-name":`proj-item__branch-icon`})):s(``,!0),K(`span`,Ci,w(x(t)),1)])):s(``,!0),t.git&&t.git.ahead>0?(A(),o(`span`,wi,`↑`+w(t.git.ahead),1)):s(``,!0),t.git&&t.git.behind>0?(A(),o(`span`,Ti,`↓`+w(t.git.behind),1)):s(``,!0),t.git&&t.git.changed>0?(A(),o(`span`,Ei,`●`+w(t.git.changed),1)):s(``,!0)],64)),K(`span`,Di,w(c(Hr)(t.stats.lastActiveAt)),1)]),t.stats.total>0?(A(),o(`div`,Oi,[K(`span`,ki,[K(`i`,{class:`proj-item__bar-fill`,style:se({width:t.stats.progress+`%`})},null,4)]),K(`span`,Ai,w(c(X)(`@WORKBENCH:{done}/{total} 任务完成`,{done:t.stats.done,total:t.stats.total})),1)])):s(``,!0),t.exists===!1?s(``,!0):(A(),o(`div`,ji,[K(`button`,{type:`button`,class:`proj-item__action`,title:c(X)(`@WORKBENCH:打开文件夹`),"aria-label":`${c(X)(`@WORKBENCH:打开文件夹`)} ${t.name}`,onClick:G(e=>N(t),[`stop`])},[y(i,{"aria-hidden":`true`},{default:F(()=>[y(c(Oe))]),_:1})],8,Mi),y(a,{visible:T.value===t.key,trigger:`manual`,placement:`right-start`,width:272,"show-arrow":!1,offset:6,"popper-class":`proj-open-menu`},{reference:F(()=>[K(`button`,{type:`button`,class:U([`proj-item__action`,{"is-open":T.value===t.key}]),title:c(X)(`@WORKBENCH:打开方式`),"aria-label":`${c(X)(`@WORKBENCH:打开方式`)} ${t.name}`,"aria-expanded":T.value===t.key,"aria-haspopup":`menu`,onClick:G(e=>ne(t,e),[`stop`])},[y(i,{"aria-hidden":`true`},{default:F(()=>[y(c(u))]),_:1})],10,Ni)]),default:F(()=>[T.value===t.key?(A(),o(`ul`,{key:0,class:`proj-menu`,role:`menu`,"aria-label":c(X)(`@WORKBENCH:打开方式`)},[K(`li`,{class:`proj-menu__item`,role:`menuitem`,tabindex:`-1`,onClick:e=>N(t),onKeydown:[j(G(e=>N(t),[`prevent`]),[`enter`]),j(G(e=>N(t),[`prevent`]),[`space`])]},[K(`span`,Ii,[y(i,{"aria-hidden":`true`},{default:F(()=>[y(c(Oe))]),_:1})]),K(`span`,Li,w(c(X)(`@WORKBENCH:在文件管理器中打开`)),1)],40,Fi),K(`li`,{class:`proj-menu__item`,role:`menuitem`,tabindex:`-1`,onClick:e=>I(t),onKeydown:[j(G(e=>I(t),[`prevent`]),[`enter`]),j(G(e=>I(t),[`prevent`]),[`space`])]},[K(`span`,zi,[y(i,{"aria-hidden":`true`},{default:F(()=>[y(c(b))]),_:1})]),K(`span`,Bi,w(c(X)(`@WORKBENCH:在终端中打开`)),1)],40,Ri),K(`li`,{class:`proj-menu__item`,role:`menuitem`,tabindex:`-1`,onClick:e=>L(t),onKeydown:[j(G(e=>L(t),[`prevent`]),[`enter`]),j(G(e=>L(t),[`prevent`]),[`space`])]},[K(`span`,Hi,[y(i,{"aria-hidden":`true`},{default:F(()=>[y(c(Ae))]),_:1})]),K(`span`,Ui,w(c(X)(`@WORKBENCH:在新标签页启动 g ui`)),1)],40,Vi),K(`li`,{class:`proj-menu__item`,role:`menuitem`,tabindex:`-1`,onClick:e=>R(t),onKeydown:[j(G(e=>R(t),[`prevent`]),[`enter`]),j(G(e=>R(t),[`prevent`]),[`space`])]},[K(`span`,Gi,[y(i,{"aria-hidden":`true`},{default:F(()=>[y(c(ye))]),_:1})]),K(`span`,Ki,w(c(X)(`@67CE7:复制文件夹名称`)),1)],40,Wi),n[8]||=K(`li`,{class:`proj-menu__sep`,role:`separator`},null,-1),K(`li`,qi,w(c(X)(`@WORKBENCH:用工具打开`)),1),(A(!0),o(J,null,C(c(Xe),e=>(A(),o(`li`,{key:e.id,class:U([`proj-menu__item`,{"is-missing":ce(e.id)}]),role:`menuitem`,tabindex:`-1`,onClick:n=>de(t,e.id),onKeydown:[j(G(n=>de(t,e.id),[`prevent`]),[`enter`]),j(G(n=>de(t,e.id),[`prevent`]),[`space`])]},[K(`span`,Yi,[y(Fe,{"icon-class":e.icon},null,8,[`icon-class`])]),K(`span`,Xi,w(c(X)(e.labelKey)),1),ce(e.id)?(A(),o(`span`,Zi,w(c(X)(`@67CE7:未安装`)),1)):s(``,!0)],42,Ji))),128)),K(`li`,{class:U([`proj-menu__item`,{"is-missing":ce(`claude`)}]),role:`menuitem`,tabindex:`-1`,onClick:e=>de(t,`claude`),onKeydown:[j(G(e=>de(t,`claude`),[`prevent`]),[`enter`]),j(G(e=>de(t,`claude`),[`prevent`]),[`space`])]},[K(`span`,$i,[K(`img`,{src:c(Ze),alt:``,class:`proj-menu__img`},null,8,ea)]),K(`span`,ta,w(c(X)(`@67CE7:用 Claude Code 打开`)),1),K(`span`,na,w(ce(`claude`)?c(X)(`@67CE7:未安装`):c(X)(`@67CE7:默认权限`)),1)],42,Qi),K(`li`,{class:U([`proj-menu__item proj-menu__item--danger`,{"is-missing":ce(`claude`)}]),role:`menuitem`,tabindex:`-1`,onClick:e=>de(t,`claude`,`bypassPermissions`),onKeydown:[j(G(e=>de(t,`claude`,`bypassPermissions`),[`prevent`]),[`enter`]),j(G(e=>de(t,`claude`,`bypassPermissions`),[`prevent`]),[`space`])]},[K(`span`,ia,[K(`img`,{src:c(Ze),alt:``,class:`proj-menu__img`},null,8,aa)]),K(`span`,oa,w(c(X)(`@67CE7:用 Claude Code 打开(完全批准)`)),1)],42,ra)],8,Pi)):s(``,!0)]),_:2},1032,[`visible`])]))],42,mi))),128)),!e.loading&&e.projects.length===0?(A(),o(`li`,sa,[K(`p`,ca,w(c(X)(`@WORKBENCH:尚无项目`)),1),K(`p`,la,w(c(X)(`@WORKBENCH:常用目录与建过任务的目录都会出现在这里`)),1)])):s(``,!0),!e.loading&&e.projects.length>0&&g.value.length===0?(A(),o(`li`,ua,[K(`p`,da,w(c(X)(`@WORKBENCH:没有匹配的项目`)),1),K(`button`,{type:`button`,class:`proj-empty__clear`,onClick:_},w(c(X)(`@WORKBENCH:清除筛选`)),1)])):s(``,!0)]),y($,{modelValue:ae.value,"onUpdate:modelValue":n[7]||=e=>ae.value=e,tool:oe.value},null,8,[`modelValue`,`tool`])])}}}),[[`__scopeId`,`data-v-43ec6df2`]]);T(),H(),S();var pa={class:`agents`},ma={class:`agents__head`},ha={class:`agents__title`},ga={class:`agents__list`},_a={class:`agent-item__row1`},va=[`title`],ya={class:`agent-item__status`},ba=[`title`],xa={class:`agent-item__row3`},Sa={key:0,class:`agent-item__pid`},Ca={class:`agent-item__elapsed`},wa={key:0,class:`agents-empty`},Ta=Z(x({__name:`WorkbenchAgentPanel`,props:{running:{}},setup(e){let t=e,n=P(Date.now()),r=null;function i(){r&&=(clearInterval(r),null)}function l(){if(t.running.length>0){if(r)return;n.value=Date.now(),r=setInterval(()=>{n.value=Date.now()},1e3)}else i()}V(()=>t.running.length,l,{immediate:!0}),m(i);let u=a(()=>t.running.map(e=>({...e,elapsed:Wr(e.startedAt,null,n.value)})));return(t,n)=>(A(),o(`section`,pa,[K(`header`,ma,[K(`h3`,ha,w(c(X)(`@WORKBENCH:执行监控`)),1),K(`span`,{class:U([`agents__count`,{"is-live":e.running.length>0}])},w(c(X)(`@WORKBENCH:{n} 个执行中`,{n:e.running.length})),3)]),K(`ul`,ga,[(A(!0),o(J,null,C(u.value,e=>(A(),o(`li`,{key:e.jobId,class:`agent-item`},[K(`div`,_a,[K(`span`,{class:U([`agent-item__dot`,{"is-pending":e.status===`pending`}]),"aria-hidden":`true`},null,2),K(`span`,{class:`agent-item__project`,title:e.projectName},w(e.projectName||`—`),9,va),K(`span`,ya,w(e.status===`pending`?c(X)(`@WORKBENCH:排队中`):c(X)(`@WORKBENCH:执行中`)),1)]),K(`p`,{class:`agent-item__task`,title:e.taskTitle},w(e.taskTitle||c(X)(`@WORKBENCH:未命名任务`)),9,ba),K(`div`,xa,[e.pid?(A(),o(`span`,Sa,`PID `+w(e.pid),1)):s(``,!0),K(`span`,Ca,w(e.elapsed),1)])]))),128)),e.running.length===0?(A(),o(`li`,wa,w(c(X)(`@WORKBENCH:暂无执行中的任务`)),1)):s(``,!0)])]))}}),[[`__scopeId`,`data-v-0843acc2`]]);T(),H(),S(),he();var Ea={class:`kb`},Da={class:`kb__toolbar`},Oa={class:`kb__views`,role:`tablist`},ka=[`aria-selected`],Aa=[`aria-selected`],ja={class:`kb__filters`},Ma=[`title`],Na={class:`kb__search`},Pa=[`placeholder`,`aria-label`],Fa={class:`kb-col__head`},Ia={class:`kb-col__title`},La={class:`kb-col__count`},Ra={class:`kb-col__list`},za=[`onClick`,`onKeydown`],Ba={class:`kb-card__row1`},Va={key:0,class:`kb-card__running`,"aria-hidden":`true`},Ha={class:`kb-card__time`},Ua=[`title`],Wa={key:0,class:`kb-card__project`},Ga={class:`kb-card__actions`},Ka=[`title`,`onClick`],qa=[`title`,`aria-label`,`onClick`],Ja={key:0,class:`kb-col__add`},Ya={key:1,class:`kb-col__empty`},Xa={key:1,class:`kb__table-wrap`},Za={class:`kb-table`},Qa={class:`kb-table__th`},$a={class:`kb-table__th kb-table__th--narrow`},eo={class:`kb-table__th kb-table__th--narrow`},to=[`onClick`,`onKeydown`],no={class:`kb-table__td`},ro={class:`kb-table__name`},io={key:0,class:`kb-table__project`},ao={class:`kb-table__td`},oo={class:`kb-table__td kb-table__td--num`},so={key:0},co={class:`kb-table__td kb-table__empty`,colspan:`3`},lo=`wb.boardView.v1`,uo=Z(x({__name:`WorkbenchKanban`,props:{tasks:{},projectLabels:{},showProjectLabel:{type:Boolean}},emits:[`open-task`,`run-task`,`delete-task`,`create-task`],setup(e,{emit:t}){let n=e,r=t,i=P((()=>{try{return localStorage.getItem(lo)===`list`?`list`:`kanban`}catch{return`kanban`}})());V(i,e=>{try{localStorage.setItem(lo,e)}catch{}});let l=P(``),u=P(!1),d=[{key:`todo`,labelKey:`@WORKBENCH:待处理`},{key:`doing`,labelKey:`@WORKBENCH:进行中`},{key:`done`,labelKey:`@WORKBENCH:已完成`}],f=a(()=>{let e=l.value.trim().toLowerCase();return n.tasks.filter(t=>u.value&&t.lastJobStatus!==`error`?!1:!e||(t.title||``).toLowerCase().includes(e)||(t.desc||``).toLowerCase().includes(e))}),p=a(()=>d.map(e=>e.key===`done`?{...e,tasks:f.value.filter(t=>t.column===e.key).sort(h)}:{...e,tasks:f.value.filter(t=>t.column===e.key)}));function m(e){return String(e.lastJobEndedAt||e.updatedAt||e.createdAt||``)}function h(e,t){return m(t).localeCompare(m(e))}function g(e){return e.column===`done`?m(e):e.updatedAt||e.createdAt||``}let _=a(()=>({gridTemplateColumns:`repeat(${p.value.length}, minmax(0, 1fr))`}));function v(e){return(e.title||``).trim()||(e.desc||``).replace(/\s+/g,` `).trim()}function b(e){return n.projectLabels[e.projectPath]||``}function te(e){return e.lastJobStatus===`error`}return(t,n)=>{let a=ee;return A(),o(`div`,Ea,[K(`div`,Da,[K(`div`,Oa,[K(`button`,{type:`button`,role:`tab`,class:U([`kb__view-btn`,{"is-active":i.value===`kanban`}]),"aria-selected":i.value===`kanban`,onClick:n[0]||=e=>i.value=`kanban`},w(c(X)(`@WORKBENCH:看板视图`)),11,ka),K(`button`,{type:`button`,role:`tab`,class:U([`kb__view-btn`,{"is-active":i.value===`list`}]),"aria-selected":i.value===`list`,onClick:n[1]||=e=>i.value=`list`},w(c(X)(`@WORKBENCH:列表视图`)),11,Aa)]),K(`div`,ja,[K(`label`,{class:`kb__check`,title:c(X)(`@WORKBENCH:只显示最近一次执行报错的任务`)},[B(K(`input`,{type:`checkbox`,"onUpdate:modelValue":n[2]||=e=>u.value=e},null,512),[[L,u.value]]),K(`span`,null,w(c(X)(`@WORKBENCH:仅看报错`)),1)],8,Ma),K(`div`,Na,[y(a,{class:`kb__search-icon`},{default:F(()=>[y(c(re))]),_:1}),B(K(`input`,{class:`kb__search-input`,type:`search`,"onUpdate:modelValue":n[3]||=e=>l.value=e,placeholder:c(X)(`@WORKBENCH:搜索任务标题或描述`),"aria-label":c(X)(`@WORKBENCH:搜索任务标题或描述`)},null,8,Pa),[[ue,l.value]])])])]),i.value===`kanban`?(A(),o(`div`,{key:0,class:`kb__columns`,style:se(_.value)},[(A(!0),o(J,null,C(p.value,t=>(A(),o(`section`,{key:t.key,class:U([`kb-col`,`kb-col--`+t.key])},[K(`header`,Fa,[n[7]||=K(`span`,{class:`kb-col__dot`,"aria-hidden":`true`},null,-1),K(`h3`,Ia,w(c(X)(t.labelKey)),1),K(`span`,La,w(t.tasks.length),1)]),K(`ul`,Ra,[(A(!0),o(J,null,C(t.tasks,t=>(A(),o(`li`,{key:t.id,class:U([`kb-card`,{"is-running":t.runningJobs>0,"has-error":te(t)}]),role:`button`,tabindex:`0`,onClick:e=>r(`open-task`,t),onKeydown:[j(G(e=>r(`open-task`,t),[`prevent`]),[`enter`]),j(G(e=>r(`open-task`,t),[`prevent`]),[`space`])]},[K(`div`,Ba,[t.runningJobs>0?(A(),o(`span`,Va)):s(``,!0),K(`span`,Ha,w(c(Hr)(g(t))),1)]),K(`p`,{class:`kb-card__title`,title:v(t)},w(v(t)||c(X)(`@WORKBENCH:未命名任务`)),9,Ua),e.showProjectLabel&&b(t)?(A(),o(`p`,Wa,w(b(t)),1)):s(``,!0),K(`div`,Ga,[t.runningJobs===0?(A(),o(`button`,{key:0,type:`button`,class:`kb-card__btn`,title:c(X)(`@WORKBENCH:执行`),onClick:G(e=>r(`run-task`,t),[`stop`]),onKeydown:n[4]||=G(()=>{},[`stop`])},w(c(X)(`@WORKBENCH:执行`)),41,Ka)):s(``,!0),K(`button`,{type:`button`,class:`kb-card__btn kb-card__btn--danger`,title:c(X)(`@WORKBENCH:删除`),"aria-label":c(X)(`@WORKBENCH:删除`),onClick:G(e=>r(`delete-task`,t),[`stop`]),onKeydown:n[5]||=G(()=>{},[`stop`])},`×`,40,qa)])],42,za))),128)),t.key===`todo`?(A(),o(`li`,Ja,[K(`button`,{type:`button`,class:U([`kb-col__add-btn`,{"kb-col__add-btn--solo":t.tasks.length===0}]),onClick:n[6]||=e=>r(`create-task`)},[n[8]||=K(`span`,{class:`kb-col__add-plus`,"aria-hidden":`true`},`+`,-1),K(`span`,null,w(c(X)(`@WORKBENCH:新建任务`)),1)],2)])):t.tasks.length===0?(A(),o(`li`,Ya,[K(`span`,null,w(c(X)(`@WORKBENCH:暂无任务`)),1)])):s(``,!0)])],2))),128))],4)):(A(),o(`div`,Xa,[K(`table`,Za,[K(`thead`,null,[K(`tr`,null,[K(`th`,Qa,w(c(X)(`@WORKBENCH:任务`)),1),K(`th`,$a,w(c(X)(`@WORKBENCH:状态`)),1),K(`th`,eo,w(c(X)(`@WORKBENCH:更新时间`)),1)])]),K(`tbody`,null,[(A(!0),o(J,null,C(f.value,t=>(A(),o(`tr`,{key:t.id,class:`kb-table__row`,tabindex:`0`,onClick:e=>r(`open-task`,t),onKeydown:[j(G(e=>r(`open-task`,t),[`prevent`]),[`enter`]),j(G(e=>r(`open-task`,t),[`prevent`]),[`space`])]},[K(`td`,no,[K(`span`,ro,w(v(t)||c(X)(`@WORKBENCH:未命名任务`)),1),e.showProjectLabel&&b(t)?(A(),o(`span`,io,w(b(t)),1)):s(``,!0)]),K(`td`,ao,[K(`span`,{class:U([`kb-table__status`,`is-`+t.column])},w(c(X)(d.find(e=>e.key===t.column).labelKey)),3)]),K(`td`,oo,w(c(Hr)(t.updatedAt||t.createdAt)),1)],40,to))),128)),f.value.length===0?(A(),o(`tr`,so,[K(`td`,co,w(c(X)(`@WORKBENCH:暂无任务`)),1)])):s(``,!0)])])]))])}}}),[[`__scopeId`,`data-v-de96d0c8`]]);T(),H(),S();var fo=[`title`,`aria-label`],po={class:`tep__btn-name`},mo={class:`tep__item`},ho={class:`tep__item-name`},go={key:1,class:`tep__item-missing`},_o=Z(x({__name:`TaskExecutorPicker`,props:k({title:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(t){let n=pe(t,`modelValue`),r=t,l=Ve(),u=a(()=>({claude:l.claudeAvailable,opencode:l.opencodeAvailable,codex:l.codexAvailable}));function d(e){u.value[e]&&(n.value=e,ze(e))}let f=a(()=>Object.keys(u.value).find(e=>u.value[e]));return f.value&&!u.value[n.value]&&d(f.value),(t,a)=>{let l=ee,f=i,p=Ee,m=E;return A(),D(m,{trigger:`click`,class:`tep`,onCommand:d},{dropdown:F(()=>[y(p,null,{default:F(()=>[(A(!0),o(J,null,C(c(Re),t=>(A(),D(f,{key:t.id,command:t.id,disabled:!u.value[t.id]},{default:F(()=>[K(`span`,mo,[y(We,{executor:t.id,class:`tep__item-icon`},null,8,[`executor`]),K(`span`,ho,w(t.name),1),n.value===t.id?(A(),D(l,{key:0,class:`tep__item-check`},{default:F(()=>[y(c(e))]),_:1})):u.value[t.id]?s(``,!0):(A(),o(`span`,go,w(c(X)(`@42BB9:未安装`)),1))])]),_:2},1032,[`command`,`disabled`]))),128))]),_:1})]),default:F(()=>[K(`button`,{type:`button`,class:`tep__btn`,title:r.title,"aria-label":c(X)(`@WORKBENCH:任务执行器`)},[y(We,{executor:n.value,class:`tep__btn-icon`},null,8,[`executor`]),K(`span`,po,w(c(Le)(n.value)),1),y(l,{class:`tep__btn-caret`},{default:F(()=>[y(c(be))]),_:1})],8,fo)]),_:1})}}}),[[`__scopeId`,`data-v-88579c65`]]);T(),H(),S(),he();var vo={class:`acs__head`},yo=[`title`,`aria-label`],bo={class:`acs__title`},xo=[`title`,`aria-label`],So={class:`acs__convs`},Co={class:`acs__chat`},wo=[`data-theme`],To={key:0,class:`acs__foot`},Eo={key:0,class:`acs__notice`},Do={class:`acs__foot-label`},Oo={class:`acs__foot-hint`},ko=Z(x({__name:`AgentChatSurface`,props:k({title:{},active:{type:Boolean},allowDispatch:{type:Boolean},dispatchUseDefaultPrompt:{type:Boolean},placeholder:{}},{dispatchExecutor:{default:`claude`},dispatchExecutorModifiers:{}}),emits:[`update:dispatchExecutor`],setup(e){let n=e,r=pe(e,`dispatchExecutor`),{theme:i}=He(),l=a(()=>i.value===`dark`?`dark`:`light`),{sessions:u,sessionsLoading:d,currentSessionId:f,messages:ee,isStreaming:m,pendingQuestion:h,answeringQuestion:g,isSessionGenerating:_,currentEngine:v,pendingEngine:b,isEngineLocked:te,pickEngine:x,loadSessions:S,loadSession:C,deleteSession:T,renameSession:E,newSession:ne,sendMessage:re,answerQuestion:ie,stop:k}=at(),ae=a(()=>te.value?v.value:b.value);function oe(e){te.value||x(e)}let se=a(()=>n.allowDispatch!==!1&&ae.value!==`gai`),j=a(()=>et(u.value,_)),ce=it(),M=tt(),N=P(null),{width:le,narrow:F}=ct(N),I=P(`chat`),L=P(null);function ue(e=!0){L.value?.scrollToBottom?.(e)}async function de(e){await re(e.text,e.files,{allowDispatch:n.allowDispatch===!0,dispatchExecutor:r.value,dispatchUseDefaultPrompt:n.dispatchUseDefaultPrompt!==!1}),await O(),ue()}function fe(e){C(e),I.value=`chat`}function me(){ne(),I.value=`chat`}return V(()=>ee.value.length,()=>{O(()=>ue(!1))}),V(()=>n.active,e=>{e&&(S().catch(()=>{}),O(()=>ue(!1)))}),V(F,e=>{e||(I.value=`chat`)}),p(()=>{S().catch(()=>{}),O(()=>ue(!1))}),(n,i)=>(A(),o(`div`,{ref_key:`rootRef`,ref:N,class:`acs`},[K(`div`,vo,[c(F)&&I.value===`list`?(A(),o(`button`,{key:0,type:`button`,class:`acs__icon-btn`,title:c(X)(`@EDITOR:返回对话`),"aria-label":c(X)(`@EDITOR:返回对话`),onClick:i[0]||=e=>I.value=`chat`},[...i[3]||=[K(`svg`,{viewBox:`0 0 24 24`,width:`12`,height:`12`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[K(`line`,{x1:`19`,y1:`12`,x2:`5`,y2:`12`}),K(`polyline`,{points:`12 19 5 12 12 5`})],-1)]],8,yo)):s(``,!0),K(`span`,bo,w(e.title||c(X)(`@WORKBENCH:g ai 对话`)),1),i[5]||=K(`span`,{class:`acs__spacer`},null,-1),!c(F)||I.value===`chat`?(A(),D(lt,{key:1,class:`acs__engine`,engine:ae.value,locked:c(te),onSelect:oe},null,8,[`engine`,`locked`])):s(``,!0),c(F)&&I.value===`chat`?(A(),o(`button`,{key:2,type:`button`,class:`acs__icon-btn`,title:c(X)(`@EDITOR:会话列表`),"aria-label":c(X)(`@EDITOR:会话列表`),onClick:i[1]||=e=>I.value=`list`},[...i[4]||=[t(`<svg viewBox="0 0 24 24" width="12" height="12" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" data-v-cb72fc94><line x1="8" y1="6" x2="21" y2="6" data-v-cb72fc94></line><line x1="8" y1="12" x2="21" y2="12" data-v-cb72fc94></line><line x1="8" y1="18" x2="21" y2="18" data-v-cb72fc94></line><line x1="3" y1="6" x2="3.01" y2="6" data-v-cb72fc94></line><line x1="3" y1="12" x2="3.01" y2="12" data-v-cb72fc94></line><line x1="3" y1="18" x2="3.01" y2="18" data-v-cb72fc94></line></svg>`,1)]],8,xo)):s(``,!0)]),K(`div`,{class:U([`acs__body`,{"is-wide":!c(F)}])},[B(K(`div`,So,[y(c(Me),{"show-search":!0,items:j.value,"active-id":c(f),loading:c(d),labels:c(ce),onSelect:fe,onNew:me,onRename:c(E),onDelete:c(T)},null,8,[`items`,`active-id`,`loading`,`labels`,`onRename`,`onDelete`])],512),[[R,!c(F)||I.value===`list`]]),B(K(`div`,Co,[y(c(Pe),{ref_key:`chatRef`,ref:L,"show-input":!1,messages:c(ee),"assistant-name":c(nt),"assistant-avatar":c(ot),theme:l.value,question:c(h),"question-submitting":c(g),"question-labels":c(M),onAnswer:c(ie)},null,8,[`messages`,`assistant-name`,`assistant-avatar`,`theme`,`question`,`question-submitting`,`question-labels`,`onAnswer`])],512),[[R,!c(F)||I.value===`chat`]]),c(le)>0?(A(),o(`div`,{key:0,class:`acs__composer acu-root`,"data-theme":l.value},[y(c(je),{disabled:c(m),generating:c(m),placeholder:e.placeholder||(c(m)?c(X)(`@AGENT:正在生成中...`):c(X)(`@AGENT:输入消息,Enter 发送`)),"upload-config":{accept:c(rt)},onSend:de,onStop:c(k)},null,8,[`disabled`,`generating`,`placeholder`,`upload-config`,`onStop`])],8,wo)):s(``,!0)],2),e.allowDispatch&&I.value===`chat`?(A(),o(`div`,To,[se.value?(A(),o(`p`,Eo,w(c(X)(`@WORKBENCH:当前引擎「{name}」只能对话,不能派发任务 —— 切到内置 g ai 才能派活`,{name:c(st)(ae.value)})),1)):(A(),o(J,{key:1},[K(`span`,Do,w(c(X)(`@WORKBENCH:派发执行器`)),1),y(_o,{modelValue:r.value,"onUpdate:modelValue":i[2]||=e=>r.value=e,title:c(X)(`@WORKBENCH:它派出去的任务由这个执行器跑(与执行按钮的临时切换共用)`)},null,8,[`modelValue`,`title`]),K(`span`,Oo,w(c(X)(`@WORKBENCH:任务会落到看板,跑完有完成提示`)),1)],64))])):s(``,!0)],512))}}),[[`__scopeId`,`data-v-cb72fc94`]]);T(),H(),S(),he();var Ao=[`title`,`aria-label`],jo={class:`oc__rail-text`},Mo={class:`oc__head`},No={class:`oc__title`},Po=[`disabled`,`title`],Fo=[`title`,`aria-label`],Io={class:`oc__state-label`},Lo={class:`oc__state-value`},Ro={class:`oc__state-meta`},zo=[`aria-label`],Bo=[`aria-selected`],Vo=[`aria-selected`],Ho={class:`oc__report`},Uo={class:`oc__report-head`},Wo={class:`oc__panel-title`},Go=[`value`,`title`,`aria-label`],Ko=[`value`],qo=[`disabled`,`title`],Jo={class:`oc__report-list`},Yo={key:0,class:`rp`},Xo={class:`rp__head`},Zo={class:`rp__count`},Qo={class:`rp__time`},$o={key:0,class:`rp__text`},es=[`title`],ts={key:2,class:`rp__tasks`},ns={class:`rpt__title`},rs={class:`rpt__meta`},is={key:0,class:`rpt__project`},as={key:1,class:`rpt__agent`},os={key:2},ss=[`title`],cs=[`title`],ls={key:1,class:`oc-empty`},us={key:0,class:`oc__history`},ds={class:`oc__history-title`},fs={class:`oc__history-list`},ps=[`onClick`],ms={class:`oc__history-time`},hs={class:`oc__history-sum`},gs={class:`oc__git`},_s={class:`oc__panel-title`},vs={class:`oc__git-name`},ys={class:`oc__git-list`},bs={class:`oc__git-label`},xs={class:`oc__git-label`},Ss={class:`oc__git-value`},Cs={class:`oc__git-label`},ws={class:`oc__git-value`},Ts=[`placeholder`],Es={class:`oc__compose-foot`},Ds=[`disabled`,`title`,`aria-label`],Os=[`title`,`aria-label`],ks=[`title`],As=[`title`],js=[`disabled`],Ms={class:`oc__hint`},Ns=`wb.ocMode.v2`,Ps=`/api/workbench/orchestrator/attachments`,Fs=`wb.ocInputHeight.v1`,Is=76,Ls=20,Rs=Z(x({__name:`OrchestratorConsole`,props:{active:{type:Boolean},runningCount:{},selectedProject:{},dispatching:{type:Boolean},togglingSchedule:{type:Boolean},todayDone:{},collapsed:{type:Boolean},defaultPrompt:{},projectPrompts:{},reports:{},reportIntervalMs:{},generatingReport:{type:Boolean}},emits:[`toggle-schedule`,`toggle-collapse`,`open-prompt-settings`,`generate-report`,`set-report-interval`,`dispatch`],setup(e,{expose:t,emit:n}){let i=e,l=n,u=P(``),f=P(!0),g=P(!0),_=P(Ie()),v=P((()=>{try{return localStorage.getItem(Ns)===`chat`?`chat`:`command`}catch{return`command`}})());function b(e){v.value=e;try{localStorage.setItem(Ns,e)}catch{}}let te=P([]),x=a(()=>({kind:`draft`,list:te.value,replace:e=>{te.value=e}})),{isUploading:S,isImageAttachment:T,humanSize:E,onAttachmentPaste:ne,onAttachmentDrop:O,removeAttachment:re,pickAttachmentFile:ie}=Bn(),k=a(()=>S(`draft`)),ae=P(!1);function oe(e){e.stopPropagation(),ne(e,x.value)}function j(e){ae.value=!1,O(e,x.value)}function M(){ie(x.value)}function N(e){re(x.value,e)}function le(){te.value=[]}t({clearAttachments:le});let I=a(()=>i.selectedProject?.key||``),fe=a(()=>(i.defaultPrompt||``).trim()),pe=a(()=>{let e=I.value;return e?(i.projectPrompts?.[e]?.prompt||``).trim():``}),me=a(()=>Object.values(i.projectPrompts||{}).some(e=>(e?.prompt||``).trim().length>0)),he=a(()=>!!fe.value||me.value),ge=a(()=>{let e=!!fe.value,t=I.value?pe.value?`project`:`none`:me.value?`target`:`none`;return X(e&&t===`project`?`@WORKBENCH:全局 + 本项目`:e&&t===`target`?`@WORKBENCH:全局 + 落点项目`:e?`@WORKBENCH:全局`:t===`project`?`@WORKBENCH:本项目`:t===`target`?`@WORKBENCH:落点项目`:`@WORKBENCH:未设置`)}),_e=a(()=>u.value.trim().length>0&&!i.dispatching&&!k.value);function ve(){_e.value&&(l(`dispatch`,{text:u.value.trim(),autoRun:f.value,attachments:te.value,projectPath:i.selectedProject?i.selectedProject.path:``,useDefaultPrompt:g.value,executor:_.value}),u.value=``)}function V(e){e.isComposing||e.keyCode===229||e.key!==`Enter`||e.shiftKey||(e.preventDefault(),ve())}function ye(){try{let e=localStorage.getItem(Fs);if(!e)return null;let t=Number(e);return Number.isFinite(t)&&t>=Is?Math.round(t):null}catch{return null}}let H=P(null),be=P(ye()),W=a(()=>{let e={};return be.value&&(e.height=`${be.value}px`),e}),xe=null,Se=!1,Ce=!0;function we(e){let t=H.value;if(!t)return;let n=t.getBoundingClientRect();Se=n.right-e.clientX<=Ls&&n.bottom-e.clientY<=Ls}function Te(){Se=!1}function Ee(e){let t=Math.round(e.offsetHeight);if(!(t<Is||t===be.value)){be.value=t;try{localStorage.setItem(Fs,String(t))}catch{}}}p(()=>{let e=H.value;e&&(window.addEventListener(`mouseup`,Te),typeof ResizeObserver<`u`&&(xe=new ResizeObserver(()=>{if(Ce){Ce=!1;return}let t=parseFloat(getComputedStyle(e).maxHeight),n=Number.isFinite(t)&&e.offsetHeight>=t-1;(Se||!n)&&Ee(e)}),xe.observe(e)))}),m(()=>{window.removeEventListener(`mouseup`,Te),xe?.disconnect(),xe=null});let De=P(null),q=a(()=>{let e=i.reports||[];return e.length?e.find(e=>e.id===De.value)||e[0]:null});function Oe(e){De.value=e.id}function ke(e){let t=String(e.text||``).replace(/\s+/g,` `).trim();return t?t.length>42?t.slice(0,42)+`…`:t:e.errorCode?X(Lr(e.errorCode)):X(`@WORKBENCH:当时没有任务在执行`)}function Y(e){return e.errorCode?X(Lr(e.errorCode)):e.tasks.length?X(`@WORKBENCH:模型没有返回内容`):X(`@WORKBENCH:生成这份报告时没有任务在执行`)}function je(e){let t=e.target,n=Number(t.value);Mr.includes(n)&&l(`set-report-interval`,n)}let Me=a(()=>{let e=i.selectedProject;if(!e)return[];let t=[];if(e.exists===!1)return t.push({label:X(`@WORKBENCH:工作区`),value:X(`@WORKBENCH:目录不存在`),tone:`danger`}),t;let n=e.git;return!n||n.isGitRepo===null?(t.push({label:X(`@WORKBENCH:Git 状态`),value:X(`@WORKBENCH:未知`),tone:``}),t):n.isGitRepo?(t.push({label:X(`@WORKBENCH:分支`),value:n.detached?X(`@WORKBENCH:游离 HEAD`):n.branch||X(`@WORKBENCH:未知`),tone:``}),t.push({label:X(`@WORKBENCH:工作区`),value:n.changed>0?X(`@WORKBENCH:未提交 {n} 项`,{n:n.changed}):X(`@WORKBENCH:干净`),tone:n.changed>0?`warn`:``}),n.hasUpstream&&(n.ahead>0||n.behind>0)&&t.push({label:X(`@WORKBENCH:与上游`),value:X(`@WORKBENCH:领先 {ahead} / 落后 {behind}`,{ahead:n.ahead,behind:n.behind}),tone:n.behind>0?`warn`:``}),t):(t.push({label:X(`@WORKBENCH:Git 状态`),value:X(`@WORKBENCH:不是 Git 仓库`),tone:``}),t)});return(t,n)=>{let i=ee;return A(),o(`aside`,{class:U([`oc`,{"is-collapsed":e.collapsed}])},[e.collapsed?(A(),o(`button`,{key:0,type:`button`,class:`oc__rail`,title:c(X)(`@WORKBENCH:展开主 Agent 控制台`),"aria-label":c(X)(`@WORKBENCH:展开主 Agent 控制台`),"aria-expanded":!1,onClick:n[0]||=e=>l(`toggle-collapse`)},[y(i,{class:`oc__rail-icon`},{default:F(()=>[y(c(ce))]),_:1}),K(`span`,{class:U([`oc__rail-live`,{"is-off":!e.active}]),"aria-hidden":`true`},null,2),K(`span`,jo,w(c(X)(`@WORKBENCH:主 Agent 控制台`)),1)],8,Ao)):s(``,!0),B(K(`header`,Mo,[K(`span`,{class:U([`oc__live`,{"is-off":!e.active}]),"aria-hidden":`true`},null,2),K(`h3`,No,w(c(X)(`@WORKBENCH:主 Agent 控制台`)),1),K(`button`,{type:`button`,class:`oc__toggle`,disabled:e.togglingSchedule,title:e.active?c(X)(`@WORKBENCH:暂停后派发只建任务,不会自动执行`):c(X)(`@WORKBENCH:恢复后派发会自动执行`),onClick:n[1]||=t=>l(`toggle-schedule`,!e.active)},w(e.active?c(X)(`@WORKBENCH:暂停调度`):c(X)(`@WORKBENCH:恢复调度`)),9,Po),K(`button`,{type:`button`,class:`oc__collapse`,title:c(X)(`@WORKBENCH:收起主 Agent 控制台`),"aria-label":c(X)(`@WORKBENCH:收起主 Agent 控制台`),"aria-expanded":!0,onClick:n[2]||=e=>l(`toggle-collapse`)},[y(i,null,{default:F(()=>[y(c(de))]),_:1})],8,Fo)],512),[[R,!e.collapsed]]),B(K(`div`,{class:U([`oc__state`,{"is-paused":!e.active}])},[K(`span`,Io,w(c(X)(`@WORKBENCH:调度状态`)),1),K(`span`,Lo,w(e.active?c(X)(`@WORKBENCH:调度中`):c(X)(`@WORKBENCH:已暂停`)),1),K(`span`,Ro,w(c(X)(`@WORKBENCH:{n} 个执行中`,{n:e.runningCount})),1)],2),[[R,!e.collapsed]]),B(K(`div`,{class:`oc__mode`,role:`tablist`,"aria-label":c(X)(`@WORKBENCH:切换主 Agent 控制台的工作方式`)},[K(`button`,{type:`button`,role:`tab`,class:U([`oc__mode-btn`,{"is-active":v.value===`chat`}]),"aria-selected":v.value===`chat`,onClick:n[3]||=e=>b(`chat`)},w(c(X)(`@WORKBENCH:对话`)),11,Bo),K(`button`,{type:`button`,role:`tab`,class:U([`oc__mode-btn`,{"is-active":v.value===`command`}]),"aria-selected":v.value===`command`,onClick:n[4]||=e=>b(`command`)},w(c(X)(`@WORKBENCH:指令`)),11,Vo)],8,zo),[[R,!e.collapsed]]),B(y(ko,{"dispatch-executor":_.value,"onUpdate:dispatchExecutor":n[5]||=e=>_.value=e,class:`oc__chat`,active:!e.collapsed&&v.value===`chat`,"allow-dispatch":``,"dispatch-use-default-prompt":g.value,title:c(X)(`@WORKBENCH:g ai 对话`)},null,8,[`dispatch-executor`,`active`,`dispatch-use-default-prompt`,`title`]),[[R,!e.collapsed&&v.value===`chat`]]),B(K(`div`,Ho,[K(`div`,Uo,[K(`p`,Wo,w(c(X)(`@WORKBENCH:进度报告`)),1),K(`select`,{class:`oc__interval`,value:String(e.reportIntervalMs??0),title:c(X)(`@WORKBENCH:自动报告的间隔(关掉后仍可随时点「立即报告」)`),"aria-label":c(X)(`@WORKBENCH:自动报告间隔`),onChange:je},[(A(!0),o(J,null,C(c(Mr),e=>(A(),o(`option`,{key:e,value:String(e)},w(c(X)(c(Fr)(e),c(Ir)(e))),9,Ko))),128))],40,Go),K(`button`,{type:`button`,class:`oc__report-run`,disabled:e.generatingReport,title:c(X)(`@WORKBENCH:让主 Agent 现在汇报一次正在执行的任务进度`),onClick:n[6]||=e=>l(`generate-report`)},[y(i,{class:U([`oc__report-run-icon`,{"is-spin":e.generatingReport}])},{default:F(()=>[y(c(r))]),_:1},8,[`class`]),K(`span`,null,w(e.generatingReport?c(X)(`@WORKBENCH:生成中…`):c(X)(`@WORKBENCH:立即报告`)),1)],8,qo)]),K(`ul`,Jo,[q.value?(A(),o(`li`,Yo,[K(`div`,Xo,[K(`span`,{class:U([`rp__trigger`,{"is-auto":q.value.trigger===`auto`}])},w(q.value.trigger===`auto`?c(X)(`@WORKBENCH:自动`):c(X)(`@WORKBENCH:手动`)),3),K(`span`,Zo,w(c(X)(`@WORKBENCH:{n} 个任务进行中`,{n:q.value.tasks.length})),1),K(`span`,Qo,w(c(Kr)(q.value.at)),1)]),q.value.text?(A(),o(`p`,$o,w(q.value.text),1)):(A(),o(`p`,{key:1,class:`rp__notice`,title:q.value.errorDetail},w(Y(q.value)),9,es)),q.value.tasks.length?(A(),o(`ul`,ts,[(A(!0),o(J,null,C(q.value.tasks,(e,t)=>(A(),o(`li`,{key:e.taskId||t,class:`rpt`},[K(`p`,ns,w(e.taskTitle||c(X)(`@WORKBENCH:未命名任务`)),1),K(`p`,rs,[e.projectName?(A(),o(`span`,is,w(e.projectName),1)):s(``,!0),K(`span`,null,w(c(X)(`@WORKBENCH:已运行 {elapsed}`,{elapsed:c(Ur)(e.elapsedMs)})),1),e.agent?(A(),o(`span`,as,w(e.agent),1)):s(``,!0),e.toolCallCount?(A(),o(`span`,os,w(c(X)(`@WORKBENCH:工具 {n} 次`,{n:e.toolCallCount})),1)):s(``,!0)]),e.lastTool?(A(),o(`p`,{key:0,class:`rpt__line`,title:e.lastTool},w(e.lastTool),9,ss)):e.lastLine?(A(),o(`p`,{key:1,class:`rpt__line`,title:e.lastLine},w(e.lastLine),9,cs)):s(``,!0)]))),128))])):s(``,!0)])):(A(),o(`li`,ls,w(c(X)(`@WORKBENCH:暂无进度报告`)),1))]),(e.reports||[]).length>1?(A(),o(`div`,us,[K(`p`,ds,w(c(X)(`@WORKBENCH:历史报告`)),1),K(`ul`,fs,[(A(!0),o(J,null,C(e.reports,e=>(A(),o(`li`,{key:e.id},[K(`button`,{type:`button`,class:U([`oc__history-item`,{"is-active":e.id===q.value?.id}]),onClick:t=>Oe(e)},[K(`span`,ms,w(c(Kr)(e.at)),1),K(`span`,hs,w(ke(e)),1)],10,ps)]))),128))])])):s(``,!0)],512),[[R,!e.collapsed&&v.value===`command`]]),B(K(`div`,gs,[K(`p`,_s,[z(w(c(X)(`@WORKBENCH:项目概览`))+` `,1),K(`span`,vs,w(e.selectedProject?e.selectedProject.name:c(X)(`@WORKBENCH:全部项目`)),1)]),K(`dl`,ys,[(A(!0),o(J,null,C(Me.value,e=>(A(),o(J,{key:e.label},[K(`dt`,bs,w(e.label),1),K(`dd`,{class:U([`oc__git-value`,{"is-warn":e.tone===`warn`,"is-danger":e.tone===`danger`}])},w(e.value),3)],64))),128)),K(`dt`,xs,w(c(X)(`@WORKBENCH:今日完成`)),1),K(`dd`,Ss,w(e.todayDone),1),K(`dt`,Cs,w(c(X)(`@WORKBENCH:最后活跃`)),1),K(`dd`,ws,w(e.selectedProject&&c(Hr)(e.selectedProject.stats.lastActiveAt)||`—`),1)])],512),[[R,!e.collapsed&&v.value===`command`]]),B(K(`div`,{class:`oc__compose`,onPaste:oe,onDrop:G(j,[`prevent`]),onDragover:n[15]||=G(e=>ae.value=!0,[`prevent`]),onDragleave:n[16]||=e=>ae.value=!1},[B(K(`textarea`,{ref_key:`inputRef`,ref:H,class:`oc__input`,"onUpdate:modelValue":n[7]||=e=>u.value=e,style:se(W.value),rows:`4`,placeholder:c(X)(`@WORKBENCH:给主 Agent 下一条指令,例如:把登录模块的错误处理重构一遍`),onKeydown:V,onPaste:oe,onMousedown:we},null,44,Ts),[[ue,u.value]]),te.value.length>0||k.value?(A(),D(St,{key:0,attachments:te.value,"is-image":c(T),"human-size":c(E),"is-uploading":k.value,"is-paste-hover":ae.value,"max-count":9,"on-pick":M,"on-remove":N,"raw-base":Ps,onPaste:oe,onDrop:j,onDragover:n[8]||=G(e=>ae.value=!0,[`prevent`]),onDragenter:n[9]||=G(e=>ae.value=!0,[`prevent`]),onDragleave:n[10]||=e=>ae.value=!1},null,8,[`attachments`,`is-image`,`human-size`,`is-uploading`,`is-paste-hover`])):s(``,!0),K(`div`,Es,[K(`button`,{type:`button`,class:`oc__attach`,disabled:k.value||te.value.length>=9,title:c(X)(`@WORKBENCH:添加附件(也可直接粘贴或拖入文件)`),"aria-label":c(X)(`@WORKBENCH:添加附件`),onClick:M},[y(i,null,{default:F(()=>[y(c(d))]),_:1})],8,Ds),K(`button`,{type:`button`,class:U([`oc__attach`,{"is-on":he.value}]),title:c(X)(`@WORKBENCH:设置派发时自动附加的默认提示词(全局 / 各项目)`),"aria-label":c(X)(`@WORKBENCH:默认提示词设置`),onClick:n[11]||=e=>l(`open-prompt-settings`)},[y(i,null,{default:F(()=>[y(c(h))]),_:1})],10,Os),K(`label`,{class:`oc__autorn`,title:c(X)(`@WORKBENCH:取消勾选则只建任务草稿,不自动执行`)},[B(K(`input`,{type:`checkbox`,"onUpdate:modelValue":n[12]||=e=>f.value=e},null,512),[[L,f.value]]),K(`span`,null,w(c(X)(`@WORKBENCH:立即执行`)),1)],8,ks),he.value?(A(),o(`label`,{key:0,class:`oc__autorn`,title:c(X)(`@WORKBENCH:取消勾选则本次派发的任务不带默认提示词(设置本身不受影响)`)},[B(K(`input`,{type:`checkbox`,"onUpdate:modelValue":n[13]||=e=>g.value=e},null,512),[[L,g.value]]),K(`span`,null,w(c(X)(`@WORKBENCH:默认提示词({state})`,{state:ge.value})),1)],8,As)):s(``,!0),y(_o,{modelValue:_.value,"onUpdate:modelValue":n[14]||=e=>_.value=e,title:c(X)(`@WORKBENCH:本次派发使用的执行器(与执行按钮的临时切换共用)`)},null,8,[`modelValue`,`title`]),K(`button`,{type:`button`,class:`oc__send`,disabled:!_e.value,onClick:ve},[y(i,{class:`oc__send-icon`},{default:F(()=>[y(c(Ae))]),_:1}),K(`span`,null,w(e.dispatching?c(X)(`@WORKBENCH:派发中…`):c(X)(`@WORKBENCH:派发`)),1)],8,js)]),K(`p`,Ms,[e.selectedProject?(A(),o(J,{key:0},[z(w(c(X)(`@WORKBENCH:指令会在「{name}」下新建一个任务;Enter 派发,Shift+Enter 换行`,{name:e.selectedProject.name})),1)],64)):(A(),o(J,{key:1},[z(w(c(X)(`@WORKBENCH:指令落到哪个项目由主 Agent 判断;Enter 派发,Shift+Enter 换行`)),1)],64))])],544),[[R,!e.collapsed&&v.value===`command`]])],2)}}}),[[`__scopeId`,`data-v-b64a5618`]]);T(),H(),S(),he();var zs={class:`pd`},Bs={class:`pd__intro`},Vs={class:`pd__field`},Hs={class:`pd__head`},Us={class:`pd__label`,for:`pd-global`},Ws={class:`pd__count`},Gs=[`placeholder`],Ks={class:`pd__field`},qs={class:`pd__head`},Js={class:`pd__label`,for:`pd-project`},Ys={key:0,class:`pd__count`},Xs=[`disabled`,`placeholder`],Zs={class:`pd__hint`},Qs={class:`pd__foot`},$s=[`disabled`],ec=4e3,tc=Z(x({__name:`WorkbenchDefaultPromptDialog`,props:{modelValue:{type:Boolean},defaultPrompt:{},projectPath:{},projectName:{},projectPrompt:{},saving:{type:Boolean}},emits:[`update:modelValue`,`save`],setup(e,{emit:t}){let n=e,r=t,i=P(``),l=P(``);V(()=>n.modelValue,e=>{e&&(i.value=n.defaultPrompt||``,l.value=n.projectPrompt||``)});let u=a(()=>!!n.projectPath),d=a(()=>i.value.trim()!==(n.defaultPrompt||``).trim()||u.value&&l.value.trim()!==(n.projectPrompt||``).trim());function f(){n.saving||r(`save`,{globalPrompt:i.value,projectPrompt:l.value})}function p(){r(`update:modelValue`,!1)}return(t,n)=>(A(),D(Ue,{"model-value":e.modelValue,title:c(X)(`@WORKBENCH:默认提示词`),width:`min(640px, 94vw)`,"close-on-click-modal":!1,"onUpdate:modelValue":n[2]||=e=>r(`update:modelValue`,e)},{footer:F(()=>[K(`div`,Qs,[K(`button`,{type:`button`,class:`pd__btn`,onClick:p},w(c(X)(`@WORKBENCH:取消`)),1),n[3]||=K(`span`,{class:`pd__foot-spacer`},null,-1),K(`button`,{type:`button`,class:`pd__btn pd__btn--primary`,disabled:e.saving||!d.value,onClick:f},w(e.saving?c(X)(`@WORKBENCH:保存中…`):c(X)(`@WORKBENCH:保存`)),9,$s)])]),default:F(()=>[K(`div`,zs,[K(`p`,Bs,w(c(X)(`@WORKBENCH:派发指令时自动附加在指令之前,让每个任务都带上这些约束。只影响之后派发的任务,不会改动已经建好的任务。`)),1),K(`div`,Vs,[K(`div`,Hs,[K(`label`,Us,w(c(X)(`@WORKBENCH:全局默认提示词`)),1),K(`span`,Ws,w(i.value.length)+` / `+w(ec),1)]),B(K(`textarea`,{id:`pd-global`,"onUpdate:modelValue":n[0]||=e=>i.value=e,class:`pd__area`,rows:`5`,maxlength:ec,placeholder:c(X)(`@WORKBENCH:对所有项目生效。例如:回答用中文;改完代码必须跑一遍测试;不要动 dist 目录`)},null,8,Gs),[[ue,i.value]])]),K(`div`,Ks,[K(`div`,qs,[K(`label`,Js,w(u.value?c(X)(`@WORKBENCH:「{name}」的项目提示词`,{name:e.projectName}):c(X)(`@WORKBENCH:项目提示词`)),1),u.value?(A(),o(`span`,Ys,w(l.value.length)+` / `+w(ec),1)):s(``,!0)]),B(K(`textarea`,{id:`pd-project`,"onUpdate:modelValue":n[1]||=e=>l.value=e,class:`pd__area`,rows:`5`,maxlength:ec,disabled:!u.value,placeholder:u.value?c(X)(`@WORKBENCH:只在这个项目派发时附加。例如:包管理器用 pnpm;改动集中在 src/ui 下`):c(X)(`@WORKBENCH:先在左侧选中一个具体项目,才能设置它的提示词`)},null,8,Xs),[[ue,l.value]]),K(`p`,Zs,w(u.value?c(X)(`@WORKBENCH:项目提示词追加在全局提示词之后(不覆盖全局),派发到「{name}」时一起带上`,{name:e.projectName}):c(X)(`@WORKBENCH:选中的是「全部项目」,落点由主 Agent 判断 —— 想给某个项目单设提示词,先选中它`)),1)])])]),_:1},8,[`model-value`,`title`]))}}),[[`__scopeId`,`data-v-bc4078f5`]]);T(),H(),S(),he();var nc={class:`nc`},rc={class:`nc__field`},ic={class:`nc__label`,for:`nc-project`},ac={value:``},oc=[`value`],sc=[`title`],cc={class:`nc__field`},lc={class:`nc__label`,for:`nc-title`},uc=[`placeholder`],dc={class:`nc__field`},fc={class:`nc__label`,for:`nc-desc`},pc=[`placeholder`],mc={key:0,class:`nc__error`},hc={class:`nc__foot`},gc=[`disabled`],_c=[`disabled`],vc=Z(x({__name:`WorkbenchTaskCreateDialog`,props:{modelValue:{type:Boolean},projects:{},defaultProjectPath:{}},emits:[`update:modelValue`,`created`],setup(e,{emit:t}){let n=e,r=t,i=P(``),l=P(``),u=P(``),d=P(!1),f=P(``);function p(e){let t=Q(e);if(!t)return``;let r=n.projects.find(e=>Q(e.path)===t);return r?r.path:``}V(()=>n.modelValue,e=>{e&&(i.value=``,l.value=``,u.value=p(n.defaultProjectPath),f.value=``,d.value=!1)});let ee=a(()=>n.projects),m=a(()=>!d.value&&(i.value.trim().length>0||l.value.trim().length>0)),h=a(()=>{let e=Q(u.value);if(!e)return``;let t=ee.value.find(t=>Q(t.path)===e);return t?t.name:``});async function g(e){if(m.value){d.value=!0,f.value=``;try{let t={title:i.value.trim(),desc:l.value,promptId:null,simpleOverride:``};u.value&&(t.projectPath=u.value);let n=await fetch(`/api/workbench/tasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}).then(e=>e.json()).catch(()=>null);if(!n?.success){f.value=n?.error||X(`@WORKBENCH:保存失败`);return}r(`update:modelValue`,!1),r(`created`,{task:n.task,openEditor:e})}finally{d.value=!1}}}return(t,n)=>(A(),D(Ue,{"model-value":e.modelValue,title:c(X)(`@WORKBENCH:新建开发任务`),width:`min(600px, 94vw)`,"close-on-click-modal":!1,"onUpdate:modelValue":n[9]||=e=>r(`update:modelValue`,e)},{footer:F(()=>[K(`div`,hc,[K(`button`,{type:`button`,class:`nc__btn`,onClick:n[6]||=e=>r(`update:modelValue`,!1)},w(c(X)(`@WORKBENCH:取消`)),1),n[10]||=K(`span`,{class:`nc__foot-spacer`},null,-1),K(`button`,{type:`button`,class:`nc__btn`,disabled:!m.value,onClick:n[7]||=e=>g(!0)},w(c(X)(`@WORKBENCH:创建并打开编辑器`)),9,gc),K(`button`,{type:`button`,class:`nc__btn nc__btn--primary`,disabled:!m.value,onClick:n[8]||=e=>g(!1)},w(d.value?c(X)(`@WORKBENCH:创建中…`):c(X)(`@WORKBENCH:创建`)),9,_c)])]),default:F(()=>[K(`div`,nc,[K(`div`,rc,[K(`label`,ic,w(c(X)(`@WORKBENCH:项目`)),1),B(K(`select`,{id:`nc-project`,"onUpdate:modelValue":n[0]||=e=>u.value=e,class:`nc__select`},[K(`option`,ac,w(c(X)(`@WORKBENCH:跟随当前项目`)),1),(A(!0),o(J,null,C(ee.value,e=>(A(),o(`option`,{key:e.key,value:e.path},w(e.name)+w(e.exists===!1?` · ${c(X)(`@WORKBENCH:目录不存在`)}`:``),9,oc))),128))],512),[[_e,u.value]]),K(`p`,{class:`nc__hint`,title:u.value},w(h.value?c(X)(`@WORKBENCH:任务会在「{name}」目录下执行`,{name:h.value}):c(X)(`@WORKBENCH:任务会跟随应用当前的工作目录`)),9,sc)]),K(`div`,cc,[K(`label`,lc,w(c(X)(`@WORKBENCH:标题`)),1),B(K(`input`,{id:`nc-title`,"onUpdate:modelValue":n[1]||=e=>i.value=e,class:`nc__input`,type:`text`,maxlength:`200`,placeholder:c(X)(`@WORKBENCH:一句话说清要做什么`),onKeydown:n[2]||=j(G(e=>g(!1),[`prevent`]),[`enter`])},null,40,uc),[[ue,i.value]])]),K(`div`,dc,[K(`label`,fc,w(c(X)(`@WORKBENCH:描述`)),1),B(K(`textarea`,{id:`nc-desc`,"onUpdate:modelValue":n[3]||=e=>l.value=e,class:`nc__input nc__input--area`,rows:`6`,placeholder:c(X)(`@WORKBENCH:把背景、验收标准、相关文件路径写进来,执行时用它当上下文`),onKeydown:[n[4]||=j(G(e=>g(!1),[`ctrl`,`prevent`]),[`enter`]),n[5]||=j(G(e=>g(!1),[`meta`,`prevent`]),[`enter`])]},null,40,pc),[[ue,l.value]])]),f.value?(A(),o(`p`,mc,w(f.value),1)):s(``,!0)])]),_:1},8,[`model-value`,`title`]))}}),[[`__scopeId`,`data-v-5e9238ae`]]);T(),H(),S(),he();var yc={class:`board__top`},bc=[`title`,`aria-label`,`aria-expanded`],xc={class:`board__brand`},Sc={class:`board__brand-text`},Cc={class:`board__title`},wc={class:`board__subtitle`},Tc={class:`board__stats`},Ec={class:`board__stat`},Dc={class:`board__stat-label`},Oc={class:`board__stat-value`},kc={class:`board__stat`},Ac={class:`board__stat-label`},jc={class:`board__stat-value`},Mc={class:`board__stat`},Nc={class:`board__stat-label`},Pc={class:`board__stat`},Fc={class:`board__stat-label`},Ic={class:`board__stat-value`},Lc={class:`board__actions`},Rc=[`title`,`aria-label`],zc=[`title`],Bc=[`title`],Vc={class:`board__main`},Hc={class:`board__main-head`},Uc={class:`board__main-title`},Wc={class:`board__project-name`},Gc=[`title`],Kc={key:1,class:`board__project-path`},qc={key:0,class:`board__project-meta`},Jc=[`title`],Yc=`wb.boardProject.v1`,Xc=5e3,Zc=3e4,Qc=`wb.boardLayout.v1`,$c=180,el=420,tl=260,nl=900,rl=.26,il=.46,al=120,ol=560,sl=.5,cl=Z(x({__name:`WorkbenchBoard`,emits:[`open-task`],setup(e,{emit:t}){let n=t,{projects:i,boardTasks:l,currentProjectPath:u,loading:d,loadProjects:f}=jr(),{active:h,activity:v,running:b,dispatching:te,togglingSchedule:x,defaultPrompt:S,projectPrompts:C,reports:T,generatingReport:E,reportIntervalMs:ne,loadOrchestrator:O,setSchedulingActive:re,dispatch:ie,saveDefaultPrompt:k,saveProjectPrompt:ae,loadReports:oe,generateReport:N,setReportInterval:le}=Rr(),I=(()=>{try{return localStorage.getItem(Yc)}catch{return null}})(),L=P(I||``);V(L,e=>{try{localStorage.setItem(Yc,e)}catch{}});let R=a(()=>L.value&&i.value.find(e=>e.key===L.value)||null);V(i,e=>{L.value&&(e.some(e=>e.key===L.value)||(L.value=``))});let ue=!1;function pe(){if(ue||(ue=!0,I!==null))return;let e=u.value?Q(u.value):``;e&&i.value.some(t=>t.key===e)&&(L.value=e)}let me=a(()=>{let e=new Map(i.value.map(e=>[e.key,e.name])),t={};for(let n of l.value)n.projectPath&&(t[n.projectPath]=e.get(Q(n.projectPath))||``);return t}),he=a(()=>{if(!L.value)return l.value;let e=L.value;return l.value.filter(t=>Q(t.projectPath)===e)}),B=a(()=>{let e=new Date;e.setHours(0,0,0,0);let t=e.getTime();return{projects:i.value.length,tasks:l.value.length,running:b.value.length,todayDone:v.value.filter(e=>e.kind===`done`&&e.at&&new Date(e.at).getTime()>=t).length}});function ge(e){n(`open-task`,{taskId:e.id,projectPath:e.projectPath})}let _e=null,ve=!1,ye=null;async function H(e=!0){if(!ve){ve=!0;try{await Promise.all([f(e),O(e)])}finally{ve=!1}}}function be(){document.hidden||(H(!0),oe(!0))}p(async()=>{window.addEventListener(`resize`,G),await H(!1),oe(!0),pe(),_e=setInterval(()=>{document.hidden||H(!0)},Xc),ye=setInterval(()=>{document.hidden||oe(!0)},Zc),document.addEventListener(`visibilitychange`,be)}),m(()=>{window.removeEventListener(`resize`,G),_e&&=(clearInterval(_e),null),ye&&=(clearInterval(ye),null),document.removeEventListener(`visibilitychange`,be)});let W=Te({left:null,right:null,agentH:null,leftCollapsed:!1,rightCollapsed:!1});function xe(){try{let e=localStorage.getItem(Qc);if(!e)return;let t=JSON.parse(e);typeof t.left==`number`&&Number.isFinite(t.left)&&(W.left=t.left),typeof t.right==`number`&&Number.isFinite(t.right)&&(W.right=t.right),typeof t.agentH==`number`&&Number.isFinite(t.agentH)&&(W.agentH=t.agentH),W.leftCollapsed=t.leftCollapsed===!0,W.rightCollapsed=t.rightCollapsed===!0}catch{}}xe();function Se(){try{localStorage.setItem(Qc,JSON.stringify(W))}catch{}}let Ce=P(typeof window>`u`?1920:window.innerWidth),we=P(typeof window>`u`?1080:window.innerHeight);function G(){Ce.value=window.innerWidth,we.value=window.innerHeight}let Ee=a(()=>Ce.value<=1024),De=a(()=>Ce.value<=860);function q(e,t){let n=e===`left`?$c:tl,r=Math.min(e===`left`?el:nl,Ce.value*(e===`left`?rl:il));return Math.round(Math.min(Math.max(t,n),Math.max(n,r)))}function Oe(e){let t=Math.min(ol,we.value*sl);return Math.round(Math.min(Math.max(e,al),Math.max(al,t)))}let ke=a(()=>{let e={};return W.left!=null&&(e[`--wb-left-w`]=q(`left`,W.left)+`px`),W.right!=null&&!De.value&&(e[`--wb-right-w`]=q(`right`,W.right)+`px`),e}),J=a(()=>{let e={};return W.agentH!=null&&(e[`--wb-agents-h`]=Oe(W.agentH)+`px`),e}),Ae=P(null),Y=P(null),je=P(null);function Me(e){return Ae.value?.querySelector(e===`left`?`.board__left`:`.oc`)}function Ne(e){window.removeEventListener(`mousemove`,e),document.body.style.userSelect=``,document.body.style.cursor=``,je.value=null,Se()}function Pe(e,t){if(e===`left`?Ee.value:De.value)return;let n=Me(e);if(!n)return;t.preventDefault();let r=t.clientX,i=n.getBoundingClientRect().width;je.value=e,document.body.style.userSelect=`none`,document.body.style.cursor=`col-resize`;let a=t=>{let n=(t.clientX-r)*(e===`left`?1:-1);W[e]=q(e,i+n)};window.addEventListener(`mousemove`,a),window.addEventListener(`mouseup`,()=>Ne(a),{once:!0})}function Z(e){W[e]=null,Se()}function Fe(){return Y.value?.querySelector(`.agents`)}function Le(e){let t=Fe();if(!t)return;e.preventDefault();let n=e.clientY,r=t.getBoundingClientRect().height;je.value=`agents`,document.body.style.userSelect=`none`,document.body.style.cursor=`row-resize`;let i=e=>{W.agentH=Oe(r+(n-e.clientY))};window.addEventListener(`mousemove`,i),window.addEventListener(`mouseup`,()=>Ne(i),{once:!0})}function Re(){W.agentH=null,Se()}let ze=P(!1),Be=a(()=>Ee.value?!ze.value:W.leftCollapsed);function He(){if(Ee.value){ze.value=!ze.value;return}W.leftCollapsed=!W.leftCollapsed,Se()}function Ue(){Ee.value&&(ze.value=!1)}let We=a(()=>W.rightCollapsed&&!De.value);function Ge(){W.rightCollapsed=!W.rightCollapsed,Se()}function Ke(e){L.value=e?e.key:``,ze.value=!1}let qe=P(!1);function Je(){qe.value=!0}async function Ye(e){if(await H(!0),e.openEditor){n(`open-task`,{taskId:e.task.id,projectPath:e.task.projectPath||``});return}M.success(X(`@WORKBENCH:已创建任务`))}async function $(e){if(e.runningJobs>0)return;let t=Ve(),n={claude:t.claudeAvailable,opencode:t.opencodeAvailable,codex:t.codexAvailable},r=Ie();n[r]||(r=Object.keys(n).find(e=>n[e])||r);let i=`/api/workbench/tasks/${encodeURIComponent(e.id)}/run`,a=await fetch(i,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({executor:r})}).then(e=>e.json()).catch(()=>null);if(!a?.success){M.error(a?.error||X(`@WORKBENCH:执行失败`));return}M.success(X(`@WORKBENCH:已开始执行`)),await H(!0)}async function Xe(e){let t=(e.title||``).trim()||X(`@WORKBENCH:未命名任务`);try{await fe.confirm(X(`@WORKBENCH:删除任务「{title}」?`,{title:t}),X(`@WORKBENCH:确认`),{type:`warning`})}catch{return}let n=await fetch(`/api/workbench/tasks/${encodeURIComponent(e.id)}`,{method:`DELETE`}).then(e=>e.json()).catch(()=>null);if(n&&n.success===!1){M.error(n.error||X(`@WORKBENCH:删除失败`));return}await H(!0)}let Ze=P(null),Qe=a(()=>R.value?.path||u.value);async function $e(e){let t=await ie({text:e.text,projectPath:e.projectPath,autoRun:e.autoRun,attachments:e.attachments,useDefaultPrompt:e.useDefaultPrompt,executor:e.executor});t&&(Ze.value?.clearAttachments(),M.success(t.ran?X(`@WORKBENCH:已派发并开始执行`):X(`@WORKBENCH:已派发(只建任务未执行)`)),await H(!0))}async function et(e){await re(e)}let tt=P(!1),nt=P(!1),rt=a(()=>{let e=R.value?.key;return e&&C.value?.[e]?.prompt||``});async function it(e){if(nt.value)return;let t=e.globalPrompt.trim(),n=e.projectPrompt.trim(),r=R.value;nt.value=!0;try{let e=!0;t!==(S.value||``).trim()&&(e=await k(t)),e&&r&&n!==rt.value.trim()&&(e=await ae(r.path,n)),e&&(tt.value=!1)}finally{nt.value=!1}}return(e,t)=>{let n=ee,a=g;return A(),o(`div`,{class:`board`,style:se(ke.value)},[K(`header`,yc,[K(`button`,{type:`button`,class:U([`board__icon-btn board__fold-btn`,{"is-on":!Be.value}]),title:Be.value?c(X)(`@WORKBENCH:展开项目列表`):c(X)(`@WORKBENCH:收起项目列表`),"aria-label":Be.value?c(X)(`@WORKBENCH:展开项目列表`):c(X)(`@WORKBENCH:收起项目列表`),"aria-expanded":!Be.value,onClick:He},[Be.value?(A(),D(n,{key:1},{default:F(()=>[y(c(de))]),_:1})):(A(),D(n,{key:0},{default:F(()=>[y(c(ce))]),_:1}))],10,bc),K(`div`,xc,[K(`span`,{class:U([`board__live`,{"is-off":!c(h)}]),"aria-hidden":`true`},null,2),K(`div`,Sc,[K(`h1`,Cc,w(c(X)(`@WORKBENCH:多项目编排台`)),1),K(`p`,wc,w(c(h)?c(X)(`@WORKBENCH:主 Agent 调度中`):c(X)(`@WORKBENCH:主 Agent 已暂停`)),1)])]),K(`div`,Tc,[K(`span`,Ec,[K(`span`,Dc,w(c(X)(`@WORKBENCH:项目`)),1),K(`strong`,Oc,w(B.value.projects),1)]),K(`span`,kc,[K(`span`,Ac,w(c(X)(`@WORKBENCH:任务`)),1),K(`strong`,jc,w(B.value.tasks),1)]),K(`span`,Mc,[K(`span`,Nc,w(c(X)(`@WORKBENCH:活跃执行`)),1),K(`strong`,{class:U([`board__stat-value`,{"is-live":B.value.running>0}])},w(B.value.running),3)]),K(`span`,Pc,[K(`span`,Fc,w(c(X)(`@WORKBENCH:今日完成`)),1),K(`strong`,Ic,w(B.value.todayDone),1)])]),K(`div`,Lc,[K(`button`,{type:`button`,class:`board__icon-btn`,title:c(X)(`@WORKBENCH:刷新`),"aria-label":c(X)(`@WORKBENCH:刷新`),onClick:t[0]||=e=>H(!1)},[y(n,null,{default:F(()=>[y(c(r))]),_:1})],8,Rc),y(a,{type:`primary`,size:`small`,icon:c(_),onClick:Je},{default:F(()=>[z(w(c(X)(`@WORKBENCH:新建开发任务`)),1)]),_:1},8,[`icon`])])]),K(`div`,{ref_key:`colsRef`,ref:Ae,class:U([`board__cols`,{"is-resizing":je.value!==null}])},[K(`div`,{class:U([`board__scrim`,{"is-on":ze.value}]),"aria-hidden":`true`,onClick:t[1]||=e=>ze.value=!1},null,2),K(`aside`,{ref_key:`leftRef`,ref:Y,class:U([`board__left`,{"is-collapsed":Be.value}]),style:se(J.value),onKeydown:j(Ue,[`esc`])},[y(fa,{projects:c(i),"selected-key":L.value,loading:c(d),onSelect:Ke},null,8,[`projects`,`selected-key`,`loading`]),K(`div`,{class:`board__splitter board__splitter--h`,role:`separator`,"aria-orientation":`horizontal`,title:c(X)(`@WORKBENCH:上下拖动调整执行监控高度,双击恢复默认`),onMousedown:Le,onDblclick:Re},null,40,zc),y(Ta,{running:c(b)},null,8,[`running`])],38),Be.value?s(``,!0):(A(),o(`div`,{key:0,class:`board__splitter board__splitter--left`,role:`separator`,"aria-orientation":`vertical`,title:c(X)(`@WORKBENCH:拖动调整项目列表宽度,双击恢复默认`),onMousedown:t[2]||=e=>Pe(`left`,e),onDblclick:t[3]||=e=>Z(`left`)},null,40,Bc)),K(`main`,Vc,[K(`div`,Hc,[K(`div`,Uc,[K(`h2`,Wc,w(R.value?R.value.name:c(X)(`@WORKBENCH:全部项目`)),1),R.value?(A(),o(`span`,{key:0,class:`board__project-path`,title:R.value.path},w(R.value.path),9,Gc)):(A(),o(`span`,Kc,w(c(X)(`@WORKBENCH:共 {n} 个项目的任务`,{n:c(i).length})),1))]),R.value?(A(),o(`span`,qc,w(c(X)(`@WORKBENCH:{done}/{total} 任务完成`,{done:R.value.stats.done,total:R.value.stats.total})),1)):s(``,!0)]),y(uo,{tasks:he.value,"project-labels":me.value,"show-project-label":!R.value,onOpenTask:ge,onRunTask:$,onDeleteTask:Xe,onCreateTask:Je},null,8,[`tasks`,`project-labels`,`show-project-label`])]),!We.value&&!De.value?(A(),o(`div`,{key:1,class:`board__splitter board__splitter--right`,role:`separator`,"aria-orientation":`vertical`,title:c(X)(`@WORKBENCH:拖动调整主 Agent 控制台宽度,双击恢复默认`),onMousedown:t[4]||=e=>Pe(`right`,e),onDblclick:t[5]||=e=>Z(`right`)},null,40,Jc)):s(``,!0),y(Rs,{ref_key:`consoleRef`,ref:Ze,active:c(h),"running-count":c(b).length,"selected-project":R.value,dispatching:c(te),"toggling-schedule":c(x),"today-done":B.value.todayDone,collapsed:We.value,"default-prompt":c(S),"project-prompts":c(C),reports:c(T),"report-interval-ms":c(ne),"generating-report":c(E),onToggleCollapse:Ge,onToggleSchedule:et,onDispatch:$e,onGenerateReport:c(N),onSetReportInterval:c(le),onOpenPromptSettings:t[6]||=e=>tt.value=!0},null,8,[`active`,`running-count`,`selected-project`,`dispatching`,`toggling-schedule`,`today-done`,`collapsed`,`default-prompt`,`project-prompts`,`reports`,`report-interval-ms`,`generating-report`,`onGenerateReport`,`onSetReportInterval`])],2),y(tc,{modelValue:tt.value,"onUpdate:modelValue":t[7]||=e=>tt.value=e,"default-prompt":c(S),"project-path":R.value?.path||``,"project-name":R.value?.name||``,"project-prompt":rt.value,saving:nt.value,onSave:it},null,8,[`modelValue`,`default-prompt`,`project-path`,`project-name`,`project-prompt`,`saving`]),y(vc,{modelValue:qe.value,"onUpdate:modelValue":t[8]||=e=>qe.value=e,projects:c(i),"default-project-path":Qe.value,onCreated:Ye},null,8,[`modelValue`,`projects`,`default-project-path`])],4)}}}),[[`__scopeId`,`data-v-5c12357b`]]);T(),H(),S(),he();var ll={class:`workbench`},ul={class:`wb-editor`},dl={class:`wb-editor-bar`},fl=[`title`],pl=[`title`],ml=[`title`],hl={class:`wb-editor-bar__hint`},gl={class:`workbench__editor-row`},_l=[`aria-label`,`aria-valuenow`,`title`],vl={class:`wb-split`},yl={key:0,class:`wb-placeholder`},bl={class:`wb-split__header`},xl={class:`wb-split__title-wrap`},Sl=[`placeholder`,`aria-label`],Cl=[`title`,`aria-label`],wl=[`title`],Tl={key:0,class:`wb-meta-save__dot`},El={key:1,class:`wb-meta-save__check`},Dl={key:2,class:`wb-meta-save__bang`},Ol={key:3,class:`wb-meta-save__dot`},kl=[`aria-label`],Al={value:null},jl=[`value`],Ml={class:`wb-executor-split__hint`},Nl={class:`wb-executor-item`},Pl={class:`wb-executor-item__name`},Fl={key:1,class:`wb-executor-item__missing`},Il={key:2,class:`wb-no-claude-hint`,role:`status`},Ll={class:`wb-no-claude-hint__text`},Rl={class:`wb-no-claude-hint__link`,href:`https://docs.claude.com/en/docs/claude-code/setup`,target:`_blank`,rel:`noopener noreferrer`},zl=[`title`,`aria-label`],Bl=[`title`,`aria-label`],Vl=[`open`],Hl={class:`wb-task-desc__summary`},Ul={class:`wb-task-desc__label`},Wl=[`title`,`aria-label`],Gl={key:0,class:`wb-task-desc__tag`},Kl={key:0},ql={key:1,class:`wb-task-desc__tag-attachment`},Jl=[`placeholder`,`aria-label`],Yl={class:`wb-execution-body`},Xl={class:`wb-exec-detail`},Zl={class:`wb-form-item__label wb-simple__override-summary`},Ql=[`title`],$l=[`placeholder`,`aria-label`],eu={key:0,class:`wb-simple-chat-wrap`},tu={key:0,class:`wb-simple-chat__footer`},nu={style:{display:`flex`,gap:`8px`,"align-items":`center`}},ru=`wb.lastTaskByProject.v1`,iu=`__no_project__`,au=`wb.sidebarWidth.v1`,ou=200,su=480,cu=268,lu=52,uu=320,du=500,fu=Z(x({__name:`WorkbenchView`,setup(t){let n=Be(),r=Ve(),u=P((()=>{try{let e=parseInt(localStorage.getItem(au)||``,10);return Number.isFinite(e)?Math.min(su,Math.max(ou,e)):cu}catch{return cu}})());function d(e){e.preventDefault();let t=e.clientX,n=u.value;document.body.style.userSelect=`none`,document.body.style.cursor=`col-resize`;let r=e=>{u.value=Math.min(su,Math.max(ou,n+e.clientX-t))};window.addEventListener(`mousemove`,r),window.addEventListener(`mouseup`,()=>{window.removeEventListener(`mousemove`,r),document.body.style.userSelect=``,document.body.style.cursor=``;try{localStorage.setItem(au,String(u.value))}catch{}},{once:!0})}function h(e){u.value=Math.min(su,Math.max(ou,u.value+e));try{localStorage.setItem(au,String(u.value))}catch{}}function _(){try{let e=localStorage.getItem(ru),t=e?JSON.parse(e):{};return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch{return{}}}function v(e){try{localStorage.setItem(ru,JSON.stringify(e))}catch{}}function b(e,t){let n=_();n[e||iu]=t,v(n)}let x=P(!1);function S(){x.value=!1}async function T(e){await ge(),De.value=e.taskId,Ae(),q.value&&b(Q(N.value.path),e.taskId),x.value=!0}let{prompts:re,tasks:k,jobs:ce,currentProject:N,syncRunningCount:le,connectSSE:L,disconnectSSE:R,loadPrompts:de,loadCurrentProject:pe,loadJobs:me,clearJobsByTask:he,loadTasks:ge}=Gn();function ve(){let e=Q(N.value.path),t=k.value.filter(t=>!t.projectPath||Q(t.projectPath)===e),n=_(),r=e&&n[e]||!e&&n[iu]||``,i=r?k.value.find(e=>e.id===r):null,a=t[0]||k.value[0]||null,o=i&&i.projectPath&&Q(i.projectPath)!==e?null:i?i.id:a?a.id:null;De.value=o,Ae()}async function H(){let e=De.value;if(await ge(),e&&k.value.some(t=>t.id===e)){Ae();return}ve()}async function W(){await ge(),ve()}let we=P(!1),De=P(null),q=a(()=>k.value.find(e=>e.id===De.value)||null),Oe=a(()=>{let e=q.value?.projectPath||``;return!e||Q(e)===Q(N.value.path)?null:{name:e.replace(/[\\/]+$/,``).split(/[\\/]/).pop()||e,path:e}}),ke=P({title:``,desc:``,promptId:null,simpleOverride:``});function Ae(){q.value?ke.value={title:q.value.title,desc:q.value.desc,promptId:q.value.promptId,simpleOverride:q.value.simpleOverride||``}:ke.value={title:``,desc:``,promptId:null,simpleOverride:``}}let Y=P(`idle`),Me=P(0),Ne=null,Z=a(()=>{if(!q.value)return!1;let e=q.value;return ke.value.title!==e.title||ke.value.desc!==e.desc||ke.value.promptId!==e.promptId||ke.value.simpleOverride!==(e.simpleOverride||``)});function Fe(){Ne!==null&&(clearTimeout(Ne),Ne=null)}function He(e){return!(!e||(e.title||``).trim()||(e.desc||``).trim()||e.promptId||(e.simpleOverride||``).trim()||Array.isArray(e.attachments)&&e.attachments.length>0)}async function Ge(e){try{await fetch(`/api/workbench/tasks/${e.id}`,{method:`DELETE`})}catch{}let t=k.value.findIndex(t=>t.id===e.id);t!==-1&&k.value.splice(t,1)}async function Ke(){let e=k.value.filter(e=>e.id!==De.value&&He(e));for(let t of e)await Ge(t)}async function qe(){if(!q.value)return!1;if(!Z.value)return!0;if(Y.value=`saving`,await Ot(!1))return Me.value=Date.now(),Y.value=`saved`,setTimeout(()=>{Y.value===`saved`&&Date.now()-Me.value>=4e3&&(Y.value=`idle`)},4e3),!0;Y.value=`error`;let e=Date.now();return setTimeout(()=>{Y.value===`error`&&Date.now()-e>=4e3&&(Y.value=`idle`)},4e3),!1}V(()=>q.value?{id:q.value.id,title:q.value.title,desc:q.value.desc,promptId:q.value.promptId,simpleOverride:q.value.simpleOverride||``}:null,(e,t)=>{e&&t&&e.id===t.id&&(Ne!==null&&clearTimeout(Ne),Ne=window.setTimeout(()=>{qe()},1500))},{deep:!0}),V(De,async(e,t)=>{Fe(),q.value&&Z.value&&await qe()}),V(N,async e=>{if(!e.path)return;let t=Q(e.path),n=q.value;n&&n.projectPath&&Q(n.projectPath)!==t&&await W()});function Je(e){try{let t=new Blob([JSON.stringify(e)],{type:`application/json`});navigator.sendBeacon?.(`/api/workbench/tasks`,t)}catch{}}function Ye(){q.value&&Z.value&&!He(q.value)&&Je(q.value)}let $=Te({visible:!1,editing:null,name:``,content:``,aiLoading:!1,projectPath:``}),Xe=Te({visible:!1,text:``,loading:!1,saving:!1}),Ze=P(!0),Qe=a(()=>{let e=Q(N.value.path);return re.value.filter(t=>!t.projectPath||Q(t.projectPath)===e)});async function $e(e){try{if(navigator.clipboard&&window.isSecureContext)return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.left=`-9999px`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch{return!1}}let et=P(null),tt=P(null);async function nt(e){if(e){if(!await $e((e.title||``).trim()||X(`@WORKBENCH:未命名任务`))){M.error(X(`@WORKBENCH:复制失败`));return}et.value=e.id,M.success(X(`@WORKBENCH:已复制任务标题`)),window.setTimeout(()=>{et.value===e.id&&(et.value=null)},1500)}}async function rt(e){if(!e)return;let t=(e.desc||``).trim();if(!t){M.warning(X(`@WORKBENCH:任务描述为空,无需复制`));return}if(!await $e(t)){M.error(X(`@WORKBENCH:复制失败`));return}tt.value=e.id,M.success(X(`@WORKBENCH:已复制任务描述`)),window.setTimeout(()=>{tt.value===e.id&&(tt.value=null)},1500)}let{simpleConversationMessages:it,simpleAllJobsFor:at,simpleJobFor:ot,simpleJobState:st}=Un(ce,q);function ct(e){if(!e)return!1;let t=ot(e);return!!t&&(t.status===`running`||t.status===`pending`)}function lt(){$.editing=null,$.name=``,$.content=``,$.aiLoading=!1,$.projectPath=(N.value.path||``).trim(),$.visible=!0}function ut(e){$.editing=e,$.name=e.name,$.content=e.content,$.aiLoading=!1,$.projectPath=(e.projectPath||``).trim(),$.visible=!0}async function dt(){if(!$.aiLoading){$.aiLoading=!0;try{let e=await fetch(`/api/workbench/prompts/ai-generate`,{method:`POST`}).then(e=>e.json());e.success?($.name=e.name||$.name,$.content=e.result||``,M.success(X(`@WORKBENCH:已生成,可继续编辑`))):M.error(e.error||X(`@WORKBENCH:生成失败`))}catch(e){M.error(X(`@WORKBENCH:网络错误: `)+(e&&e.message||e))}finally{$.aiLoading=!1}}}async function ft(){Xe.visible=!0,Xe.loading=!0;try{let e=await fetch(`/api/workbench/prompts/ai-instruction`).then(e=>e.json());e.success?Xe.text=e.instruction||``:M.error(e.error||X(`@WORKBENCH:读取指令失败`))}catch(e){M.error(X(`@WORKBENCH:读取指令失败`)+`: `+(e&&e.message||e))}finally{Xe.loading=!1}}async function pt(){if(!Xe.text.trim()){M.warning(X(`@WORKBENCH:指令内容不能为空`));return}Xe.saving=!0;try{let e=await fetch(`/api/workbench/prompts/ai-instruction`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({instruction:Xe.text})}).then(e=>e.json());e.success?(M.success(X(`@WORKBENCH:已保存指令`)),Xe.visible=!1):M.error(e.error||X(`@WORKBENCH:保存失败`))}catch(e){M.error(X(`@WORKBENCH:网络错误: `)+(e&&e.message||e))}finally{Xe.saving=!1}}async function mt(){if(!$.name.trim()||!$.content.trim()){M.warning(X(`@WORKBENCH:名称和内容不能为空`));return}let e={id:$.editing?.id,name:$.name.trim(),content:$.content,projectPath:($.projectPath||``).trim()},t=await fetch(`/api/workbench/prompts`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}).then(e=>e.json());t.success?(M.success(X(`@WORKBENCH:已保存`)),$.visible=!1,de()):M.error(t.error||X(`@WORKBENCH:保存失败`))}async function ht(e){await fe.confirm(X(`@WORKBENCH:删除提示词「{name}」?`,{name:e.name}),X(`@WORKBENCH:确认`),{type:`warning`}),await fetch(`/api/workbench/prompts/${e.id}`,{method:`DELETE`}),de();for(let t of k.value)t.promptId===e.id&&(t.promptId=null,await fetch(`/api/workbench/tasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}));await H()}let gt=P(!1),_t=P(null),vt=P(null);function yt(e){let t=e?.currentTarget||vt.value;if(!t)return;t.style.height=`auto`;let n=document.activeElement===t?du:uu,r=Math.min(Math.max(t.scrollHeight,lu),n);t.style.height=`${r}px`,t.style.overflowY=t.scrollHeight>n?`auto`:`hidden`}V(Ze,async e=>{e&&(await O(),yt())}),V(()=>q.value?.id,async()=>{Ze.value&&(await O(),yt())});async function bt(){if(gt.value)return;gt.value=!0;let e={title:``,desc:``,promptId:null,simpleOverride:``};N.value.path&&(e.projectPath=N.value.path);try{let t=await fetch(`/api/workbench/tasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}).then(e=>e.json());if(!t.success){M.error(t.error||X(`@WORKBENCH:保存失败`));return}Fe(),q.value&&He(q.value)?await Ge(q.value):q.value&&Z.value&&await qe(),await W(),t.task?.id&&(De.value=t.task.id,Ae(),M.success(X(`@WORKBENCH:已新建任务`)),await O(),_t.value?.focus())}finally{gt.value=!1}}async function xt(e){await fe.confirm(X(`@WORKBENCH:删除任务「{title}」?`,{title:e.title}),X(`@WORKBENCH:确认`),{type:`warning`}),await fetch(`/api/workbench/tasks/${e.id}`,{method:`DELETE`}),De.value===e.id&&(De.value=null),W()}async function Ct(e){let t=(e.title||X(`@WORKBENCH:未命名任务`)).trim(),n={title:X(`@WORKBENCH:{title} (副本)`,{title:t}),desc:e.desc||``,promptId:e.promptId||null,simpleOverride:e.simpleOverride||``};N.value.path&&(n.projectPath=N.value.path);try{let e=await fetch(`/api/workbench/tasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(n)}).then(e=>e.json());if(!e.success){M.error(e.error||X(`@WORKBENCH:复制失败`));return}await W(),e.task?.id&&(De.value=e.task.id,Ae()),M.success(X(`@WORKBENCH:已复制任务`))}catch(e){M.error(X(`@WORKBENCH:网络错误: `)+(e&&e.message||e))}}async function wt(e){if(De.value===e.id)return;Fe();let t=q.value;t&&He(t)?await Ge(t):t&&Z.value&&await qe(),De.value=e.id,Ae(),b(Q(N.value.path),e.id)}async function Tt(e){let{groupPath:t,orderedIds:n}=e;if(!Array.isArray(n)||n.length===0)return;let r=k.value.slice(),i=Dt(k.value,t,n);if(i!==k.value){k.value=i;try{let e=await fetch(`/api/workbench/tasks/reorder`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({orderedIds:n,groupPath:t})}).then(e=>e.json()).catch(()=>({success:!1,error:X(`@WORKBENCH:排序保存失败`)}));e?.success||(k.value=r,M.error(e?.error||X(`@WORKBENCH:排序保存失败`)))}catch(e){k.value=r,M.error(X(`@WORKBENCH:排序保存失败`)+`: `+(e?.message||e))}}}function Dt(e,t,n){let r=e=>Q(e)||iu,i=e.filter(e=>r(e.projectPath)===t).map(e=>e.id),a=new Set(i);if(n.length!==a.size||n.some(e=>!a.has(e)))return e;let o=new Map(e.map(e=>[e.id,e])),s=n.map(e=>o.get(e)).filter(Boolean),c=[],l=0;for(let n of e)r(n.projectPath)===t?c.push(s[l++]):c.push(n);return c}async function Ot(e){if(!q.value)return!1;let t=await fetch(`/api/workbench/tasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(q.value)}).then(e=>e.json());return t.success?(e&&M.success(X(`@WORKBENCH:已保存`)),await H(),!0):(M.error(t.error||X(`@WORKBENCH:保存失败`)),!1)}p(async()=>{await Promise.all([de(),W(),pe(),me()]),await Ke(),L(),window.addEventListener(`beforeunload`,Ye)}),m(()=>{R(),window.removeEventListener(`beforeunload`,Ye),q.value&&Z.value&&!He(q.value)&&Je(q.value)});let{pasteHoverId:kt,isUploading:At,isImageAttachment:jt,humanSize:Mt,onAttachmentPaste:Nt,onAttachmentDrop:Pt,uploadAttachment:Ft,removeAttachment:It,pickAttachmentFile:Lt}=Bn(),{runTask:Rt,onContinueSendFromChat:zt,cancelJob:Bt,clearExecutionForSelectedTask:Vt}=Wn(ce,k,q,{syncRunningCount:le,clearJobsByTask:he,persistTask:Ot,uploadAttachment:Ft,getExecutor:()=>Ht.value}),Ht=P(Ie()),Ut=a(()=>({claude:r.claudeAvailable,opencode:r.opencodeAvailable,codex:r.codexAvailable})),Wt=a(()=>Re.some(e=>Ut.value[e.id]));V(Ut,e=>{if(e[Ht.value])return;let t=Object.keys(e).find(t=>e[t]);t&&(Ht.value=t)},{immediate:!0});function Gt(e){Ut.value[e]&&(Ht.value=e,ze(e))}function Kt(e){return Le(e)}let qt=a(()=>at(q.value).slice(-1)[0]),Jt=a(()=>Le(qt.value?.agent)),Yt=a(()=>Et(qt.value?.agent));return(t,r)=>{let a=ee,p=i,m=Ee,_=E,v=ie,b=ae,O=te,ce=l,M=g,P=ne;return A(),o(`div`,ll,[y(cl,{onOpenTask:T}),y(Ue,{modelValue:x.value,"onUpdate:modelValue":r[23]||=e=>x.value=e,title:c(X)(`@WORKBENCH:任务执行`),type:`flex`,"height-mode":`fixed`,"height-offset":`88px`,top:`2vh`,width:`min(1520px, 96vw)`},{default:F(()=>[K(`div`,ul,[K(`div`,dl,[K(`button`,{type:`button`,class:`wb-back-btn`,title:c(X)(`@WORKBENCH:返回看板`),onClick:S},[y(a,{class:`wb-back-btn__icon`},{default:F(()=>[y(c(f))]),_:1}),K(`span`,null,w(c(X)(`@WORKBENCH:返回看板`)),1)],8,fl),K(`span`,{class:`wb-editor-bar__project`,title:c(N).path},w(c(N).name),9,pl),Oe.value?(A(),o(`span`,{key:0,class:`wb-editor-bar__repo`,title:Oe.value.path},w(c(X)(`@WORKBENCH:执行于 {name}`,{name:Oe.value.name})),9,ml)):s(``,!0),K(`span`,hl,w(c(X)(`@WORKBENCH:任务执行`)),1)]),K(`div`,gl,[y(Ar,{style:se({width:u.value+`px`}),tasks:c(k),prompts:c(re),"selected-task-id":De.value,"current-project":c(N),"creating-task":gt.value,"is-task-running":ct,onSelectTask:wt,onDeleteTask:xt,onCopyTask:Ct,onCreateTask:bt,onOpenCreatePrompt:lt,onOpenEditPrompt:ut,onDeletePrompt:ht,onReorderTasks:Tt},null,8,[`style`,`tasks`,`prompts`,`selected-task-id`,`current-project`,`creating-task`]),K(`div`,{class:`wb-splitter`,role:`separator`,tabindex:`0`,"aria-orientation":`vertical`,"aria-label":c(X)(`@WORKBENCH:拖动调整侧边栏宽度`),"aria-valuenow":u.value,"aria-valuemin":ou,"aria-valuemax":su,title:c(X)(`@WORKBENCH:拖动调整侧边栏宽度`),onMousedown:d,onKeydown:[r[0]||=j(G(e=>h(-16),[`prevent`]),[`left`]),r[1]||=j(G(e=>h(16),[`prevent`]),[`right`])]},null,40,_l),K(`section`,vl,[q.value?(A(),o(J,{key:1},[K(`div`,bl,[K(`div`,xl,[B(K(`input`,{ref_key:`titleInputRef`,ref:_t,class:`wb-input wb-input--title`,"onUpdate:modelValue":r[2]||=e=>q.value.title=e,placeholder:c(X)(`@WORKBENCH:任务标题`),"aria-label":c(X)(`@WORKBENCH:任务标题`)},null,8,Sl),[[ue,q.value.title]]),K(`button`,{type:`button`,class:U([`wb-copy-btn`,{"is-flash":et.value===q.value.id}]),title:c(X)(`@WORKBENCH:复制任务标题`),"aria-label":c(X)(`@WORKBENCH:复制任务标题`),onClick:r[3]||=e=>nt(q.value)},[et.value===q.value.id?(A(),D(a,{key:1,class:`wb-copy-btn__icon wb-copy-btn__icon--check`},{default:F(()=>[...r[33]||=[z(`✓`,-1)]]),_:1})):(A(),D(a,{key:0,class:`wb-copy-btn__icon`},{default:F(()=>[y(c(ye))]),_:1}))],10,Cl)]),Y.value!==`idle`||Z.value?(A(),o(`span`,{key:0,class:U([`wb-meta-save`,{"is-saving":Y.value===`saving`,"is-saved":Y.value===`saved`,"is-error":Y.value===`error`,"is-dirty":Z.value&&Y.value===`idle`}]),title:Y.value===`saving`?c(X)(`@WORKBENCH:保存中…`):Y.value===`error`?c(X)(`@WORKBENCH:保存失败`):Y.value===`saved`?c(X)(`@WORKBENCH:已保存`):``},[Y.value===`saving`?(A(),o(`span`,Tl)):Y.value===`saved`?(A(),o(`span`,El,`✓`)):Y.value===`error`?(A(),o(`span`,Dl,`!`)):(A(),o(`span`,Ol)),z(` `+w(Y.value===`saving`?c(X)(`@WORKBENCH:保存中…`):Y.value===`saved`?c(X)(`@WORKBENCH:已保存`):Y.value===`error`?c(X)(`@WORKBENCH:保存失败`):c(X)(`@WORKBENCH:有未保存的更改`)),1)],10,wl)):s(``,!0),B(K(`select`,{class:`wb-select`,"onUpdate:modelValue":r[4]||=e=>q.value.promptId=e,"aria-label":c(X)(`@WORKBENCH:预置提示词`)},[K(`option`,Al,w(c(X)(`@WORKBENCH:不绑定预置提示词`)),1),(A(!0),o(J,null,C(Qe.value,e=>(A(),o(`option`,{key:e.id,value:e.id},w(e.name),9,jl))),128))],8,kl),[[_e,q.value.promptId]]),Wt.value?(A(),D(_,{key:1,"split-button":``,type:`primary`,class:`wb-executor-split`,trigger:`click`,onClick:r[5]||=e=>c(Rt)(q.value),onCommand:Gt},{dropdown:F(()=>[y(m,null,{default:F(()=>[(A(!0),o(J,null,C(c(Re),t=>(A(),D(p,{key:t.id,command:t.id,disabled:!Ut.value[t.id]},{default:F(()=>[K(`span`,Nl,[y(We,{executor:t.id,class:`wb-executor-item__icon`},null,8,[`executor`]),K(`span`,Pl,w(t.name),1),Ht.value===t.id?(A(),D(a,{key:0,class:`wb-executor-item__check`},{default:F(()=>[y(c(e))]),_:1})):Ut.value[t.id]?s(``,!0):(A(),o(`span`,Fl,w(c(X)(`@42BB9:未安装`)),1))])]),_:2},1032,[`command`,`disabled`]))),128))]),_:1})]),default:F(()=>[z(w(c(X)(`@WORKBENCH:执行任务`))+` `,1),K(`span`,Ml,[y(We,{executor:Ht.value,class:`wb-executor-split__hint-icon`},null,8,[`executor`]),z(` `+w(Kt(Ht.value)),1)])]),_:1})):(A(),o(`div`,Il,[y(a,{class:`wb-no-claude-hint__icon`},{default:F(()=>[y(c(xe))]),_:1}),K(`span`,Ll,w(c(X)(`@WORKBENCH:未检测到本地 claude / opencode,无法执行任务`)),1),K(`a`,Rl,w(c(X)(`@WORKBENCH:查看安装指引`)),1)])),K(`button`,{type:`button`,class:`wb-logs-inline-btn wb-logs-inline-btn--danger`,title:c(X)(`@WORKBENCH:清空当前任务的所有执行内容`),"aria-label":c(X)(`@WORKBENCH:清空当前任务的所有执行内容`),onClick:r[6]||=(...e)=>c(Vt)&&c(Vt)(...e)},[y(a,{class:`wb-logs-inline-btn__icon`},{default:F(()=>[y(c(Se))]),_:1}),K(`span`,null,w(c(X)(`@WORKBENCH:清空执行`)),1)],8,zl),K(`button`,{type:`button`,class:`wb-logs-inline-btn`,title:c(X)(`@WORKBENCH:执行日志`),"aria-label":c(X)(`@WORKBENCH:执行日志`),onClick:r[7]||=e=>we.value=!0},[y(a,{class:`wb-logs-inline-btn__icon`},{default:F(()=>[y(c(I))]),_:1}),K(`span`,null,w(c(X)(`@WORKBENCH:执行日志`)),1)],8,Bl)]),K(`details`,{class:`wb-task-desc`,open:Ze.value,onToggle:r[19]||=e=>Ze.value=e.target.open},[K(`summary`,Hl,[y(a,{class:`wb-task-desc__caret`},{default:F(()=>[(A(),D(Ce(Ze.value?c(be):c(oe))))]),_:1}),K(`span`,Ul,w(c(X)(`@WORKBENCH:任务描述(可选)`)),1),K(`button`,{type:`button`,class:U([`wb-copy-btn wb-copy-btn--inline`,{"is-flash":tt.value===q.value.id}]),title:q.value.desc&&q.value.desc.trim()?c(X)(`@WORKBENCH:复制任务描述`):c(X)(`@WORKBENCH:任务描述为空,无需复制`),"aria-label":c(X)(`@WORKBENCH:复制任务描述`),onClick:r[8]||=G(e=>rt(q.value),[`stop`,`prevent`])},[tt.value===q.value.id?(A(),D(a,{key:1,class:`wb-copy-btn__icon wb-copy-btn__icon--check`},{default:F(()=>[...r[34]||=[z(`✓`,-1)]]),_:1})):(A(),D(a,{key:0,class:`wb-copy-btn__icon`},{default:F(()=>[y(c(ye))]),_:1}))],10,Wl),q.value.desc&&q.value.desc.length>0||q.value.attachments&&q.value.attachments.length>0?(A(),o(`span`,Gl,[q.value.desc&&q.value.desc.length>0?(A(),o(`span`,Kl,w(c(X)(`@WORKBENCH:已填写`)),1)):s(``,!0),q.value.attachments&&q.value.attachments.length>0?(A(),o(`span`,ql,w(q.value.attachments.length),1)):s(``,!0)])):s(``,!0)]),B(K(`textarea`,{ref_key:`taskDescTextareaRef`,ref:vt,class:`wb-textarea wb-textarea--autogrow`,"onUpdate:modelValue":r[9]||=e=>q.value.desc=e,placeholder:c(X)(`@WORKBENCH:任务描述(可选)`),"aria-label":c(X)(`@WORKBENCH:任务描述(可选)`),onInput:r[10]||=e=>yt(e),onFocus:r[11]||=e=>yt(e),onBlur:r[12]||=e=>yt(e),onPaste:r[13]||=e=>c(Nt)(e,{kind:`task`,task:q.value})},null,40,Jl),[[ue,q.value.desc]]),y(St,{attachments:q.value.attachments||[],"is-image":c(jt),"human-size":c(Mt),"is-uploading":c(At)(`task-`+q.value.id),"is-paste-hover":c(kt)===`task-`+q.value.id,"max-count":9,"on-pick":()=>c(Lt)({kind:`task`,task:q.value}),"on-remove":e=>c(It)({kind:`task`,task:q.value},e),onPaste:r[14]||=e=>c(Nt)(e,{kind:`task`,task:q.value}),onDrop:r[15]||=G(e=>c(Pt)(e,{kind:`task`,task:q.value}),[`prevent`]),onDragover:r[16]||=G(e=>kt.value=`task-`+q.value.id,[`prevent`]),onDragenter:r[17]||=G(e=>kt.value=`task-`+q.value.id,[`prevent`]),onDragleave:r[18]||=e=>kt.value=c(kt)===`task-`+q.value.id?null:c(kt)},null,8,[`attachments`,`is-image`,`human-size`,`is-uploading`,`is-paste-hover`,`on-pick`,`on-remove`])],40,Vl),K(`div`,Yl,[K(`div`,Xl,[K(`details`,{class:U([`wb-simple__override`,{"has-content":!!(q.value.simpleOverride&&q.value.simpleOverride.trim())}])},[K(`summary`,Zl,[y(a,{class:`wb-simple__override-caret`},{default:F(()=>[y(c(oe))]),_:1}),K(`span`,null,w(c(X)(`@WORKBENCH:覆盖预置提示词(可选)`)),1),q.value.simpleOverride&&q.value.simpleOverride.trim()?(A(),o(`span`,{key:0,class:`wb-simple__override-tag`,title:c(X)(`@WORKBENCH:已填写覆盖内容`)},w(c(X)(`@WORKBENCH:已填写`)),9,Ql)):s(``,!0),c(st)(c(ot)(q.value))===`running`&&c(ot)(q.value)?(A(),o(`button`,{key:1,class:`wb-simple__stop`,onClick:r[20]||=G(e=>c(Bt)(c(ot)(q.value)),[`stop`])},w(c(X)(`@WORKBENCH:停止`)),1)):s(``,!0)]),B(K(`textarea`,{class:`wb-textarea`,"onUpdate:modelValue":r[21]||=e=>q.value.simpleOverride=e,placeholder:c(X)(`@WORKBENCH:留空则使用上方选定的「预置提示词」模板;可用变量:{{task.title}} {{task.desc}} {{repo.path}} {{branch}}`),"aria-label":c(X)(`@WORKBENCH:覆盖预置提示词(可选)`),rows:`6`},null,8,$l),[[ue,q.value.simpleOverride]])],2),c(at)(q.value).length>0?(A(),o(`div`,eu,[(A(),D(c(Pe),{key:q.value.id,messages:c(it),"assistant-name":Jt.value,"assistant-avatar":Yt.value,"show-avatar":!0,theme:c(n).theme,"tool-calls-config":{group:!0,collapseThreshold:2},class:`wb-simple-chat`},null,8,[`messages`,`assistant-name`,`assistant-avatar`,`theme`])),c(ot)(q.value)&&[`done`,`error`,`cancelled`].includes(c(st)(c(ot)(q.value)))?(A(),o(`div`,tu,[(A(),D(c(je),{key:`input-`+q.value.id,placeholder:c(X)(`@WORKBENCH:输入后续问题继续对话…(Ctrl+Enter 发送)`),"upload-config":{enabled:!0,accept:c(jn),multiple:!0,maxCount:Math.max(0,9-(q.value.attachments?.length??0)),maxSize:c(Mn)},class:`wb-simple-chat__input`,onSend:r[22]||=e=>c(zt)(q.value,e)},null,8,[`placeholder`,`upload-config`]))])):s(``,!0)])):s(``,!0)])])],64)):(A(),o(`div`,yl,[K(`p`,null,w(c(X)(`@WORKBENCH:左侧选择任务,或新建一个任务开始`)),1)]))])])])]),_:1},8,[`modelValue`,`title`]),y(Ue,{modelValue:we.value,"onUpdate:modelValue":r[24]||=e=>we.value=e,title:c(X)(`@WORKBENCH:执行日志`),width:`1080px`,"close-on-click-modal":!1,top:`6vh`,type:`flex`,"custom-class":`wb-logs-dialog`,"append-to-body":``},{default:F(()=>[y(kn)]),_:1},8,[`modelValue`,`title`]),y(Ue,{modelValue:$.visible,"onUpdate:modelValue":r[29]||=e=>$.visible=e,title:$.editing?c(X)(`@WORKBENCH:编辑提示词`):c(X)(`@WORKBENCH:新建提示词`),width:`640px`,type:`flex`,"append-to-body":``},{footer:F(()=>[y(M,{onClick:r[28]||=e=>$.visible=!1},{default:F(()=>[z(w(c(X)(`@WORKBENCH:取消`)),1)]),_:1}),y(M,{type:`primary`,onClick:mt},{default:F(()=>[z(w(c(X)(`@WORKBENCH:保存`)),1)]),_:1})]),default:F(()=>[y(P,{"label-position":`top`},{default:F(()=>[y(b,{label:c(X)(`@WORKBENCH:名称`)},{default:F(()=>[y(v,{modelValue:$.name,"onUpdate:modelValue":r[25]||=e=>$.name=e,placeholder:c(X)(`@WORKBENCH:如:代码审查 / 写测试`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),y(b,{label:c(X)(`@WORKBENCH:所属项目`)},{default:F(()=>[y(ce,{modelValue:$.projectPath,"onUpdate:modelValue":r[26]||=e=>$.projectPath=e,placeholder:c(X)(`@WORKBENCH:所属项目`),style:{width:`100%`},disabled:!c(N).path},{default:F(()=>[y(O,{label:c(X)(`@WORKBENCH:全局(所有项目可用)`),value:``},null,8,[`label`]),c(N).path?(A(),D(O,{key:c(N).path,label:c(N).name||c(N).path,value:c(N).path},null,8,[`label`,`value`])):s(``,!0)]),_:1},8,[`modelValue`,`placeholder`,`disabled`])]),_:1},8,[`label`]),y(b,null,{default:F(()=>[K(`div`,nu,[y(M,{type:`primary`,plain:``,loading:$.aiLoading,onClick:dt},{default:F(()=>[z(w(c(X)(`@WORKBENCH:AI 生成项目架构说明`)),1)]),_:1},8,[`loading`]),y(M,{onClick:ft},{default:F(()=>[z(w(c(X)(`@WORKBENCH:编辑指令`)),1)]),_:1})])]),_:1}),y(b,{label:c(X)(`@WORKBENCH:内容`)},{default:F(()=>[y(v,{modelValue:$.content,"onUpdate:modelValue":r[27]||=e=>$.content=e,type:`textarea`,rows:10,placeholder:c(X)(`@WORKBENCH:可用变量:`)+`{{task.title}} {{task.desc}} {{sub.title}} {{sub.desc}} {{repo.path}} {{branch}}`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1},8,[`modelValue`,`title`]),y(Ue,{modelValue:Xe.visible,"onUpdate:modelValue":r[32]||=e=>Xe.visible=e,title:c(X)(`@WORKBENCH:编辑生成指令`),width:`720px`,type:`flex`,"append-to-body":``},{footer:F(()=>[y(M,{onClick:r[31]||=e=>Xe.visible=!1},{default:F(()=>[z(w(c(X)(`@WORKBENCH:取消`)),1)]),_:1}),y(M,{type:`primary`,loading:Xe.saving,onClick:pt},{default:F(()=>[z(w(c(X)(`@WORKBENCH:保存`)),1)]),_:1},8,[`loading`])]),default:F(()=>[y(P,{"label-position":`top`},{default:F(()=>[y(b,{label:c(X)(`@WORKBENCH:指令内容`)},{default:F(()=>[y(v,{modelValue:Xe.text,"onUpdate:modelValue":r[30]||=e=>Xe.text=e,type:`textarea`,rows:18,placeholder:c(X)(`@WORKBENCH:指令内容`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1},8,[`modelValue`,`title`])])}}}),[[`__scopeId`,`data-v-dd181061`]]);export{fu as default};
|