zen-gitsync 2.18.8 → 2.18.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -1
- package/src/cli/ai/agent.js +7 -0
- package/src/cli/ai/runtime.test.js +22 -1
- package/src/cli/ai/tools.js +1 -1
- package/src/cli/ai/tools.test.js +1 -1
- package/src/cli/ai/transport.js +8 -3
- package/src/config.js +7 -5
- package/src/mcp/tools/workbench.js +1 -1
- package/src/ui/public/assets/{AgentView-DZx3n-So.css → AgentView-CV_8sYX6.css} +1 -1
- package/src/ui/public/assets/AgentView-DxmnqJxE.js +1 -0
- package/src/ui/public/assets/{AppVersionBadge-Bg5lrtKb.js → AppVersionBadge-C4OhcUi8.js} +2 -2
- package/src/ui/public/assets/{BranchSelector-CxjTqAkl.js → BranchSelector-CrLieQyJ.js} +1 -1
- package/src/ui/public/assets/{CommitForm-BWWrOvj5.js → CommitForm-KGQisnPQ.js} +2 -2
- package/src/ui/public/assets/{CommonDialog-x5jfL4Lq.js → CommonDialog-j_53ORvj.js} +1 -1
- package/src/ui/public/assets/CopySessionButton-y5Rzmact.js +20 -0
- package/src/ui/public/assets/EditorView-CkZb2kw5.js +1 -0
- package/src/ui/public/assets/{EditorView-BUiVsBv7.css → EditorView-Ims2BUK_.css} +1 -1
- package/src/ui/public/assets/{FlowExecutionViewer-BkZ20jxN.js → FlowExecutionViewer-CQ-TPhwF.js} +1 -1
- package/src/ui/public/assets/{FlowOrchestrationWorkspace-aZBYu29g.js → FlowOrchestrationWorkspace-BMQSVm3V.js} +1 -1
- package/src/ui/public/assets/{LogList-CSIbmUMK.js → LogList-BxH6QNlK.js} +4 -4
- package/src/ui/public/assets/{MindmapView-JYLp185X.js → MindmapView-D9_qjJsR.js} +1 -1
- package/src/ui/public/assets/{MonitorView-BS2Mh-I7.js → MonitorView-z_fsnE8Y.js} +1 -1
- package/src/ui/public/assets/{ProjectStartupButton-DAEP6ZU5.js → ProjectStartupButton-CFB_JpYG.js} +1 -1
- package/src/ui/public/assets/RecentDirectoriesChat-7fzSkSmc.css +1 -0
- package/src/ui/public/assets/RecentDirectoriesChat-BYI8lkjQ.js +1 -0
- package/src/ui/public/assets/{RemoteManagerDialog-aaNmsKpy.js → RemoteManagerDialog-DXDcN8e7.js} +1 -1
- package/src/ui/public/assets/{RemoteRepoCard-DndI8rNZ.js → RemoteRepoCard-C_TYGsXi.js} +1 -1
- package/src/ui/public/assets/{SourceMapView-BTD9-R8t.js → SourceMapView-D6cSweDt.js} +1 -1
- package/src/ui/public/assets/{SvgIcon-0n6uuKFm.js → SvgIcon-5AlG3IfR.js} +1 -1
- package/src/ui/public/assets/{UserInputNode-B-mDg9Wy.js → UserInputNode-BKP869D6.js} +1 -1
- package/src/ui/public/assets/WorkbenchView-D4UDurhF.js +6 -0
- package/src/ui/public/assets/WorkbenchView-DogERhHQ.css +1 -0
- package/src/ui/public/assets/{_plugin-vue_export-helper-C3o7kvRL.js → _plugin-vue_export-helper-Csn085FF.js} +4 -4
- package/src/ui/public/assets/agentConversations-DyzaxUXm.js +10 -0
- package/src/ui/public/assets/configStore-DOaPZ6Mq.js +1 -0
- package/src/ui/public/assets/index-C7Y9odvZ.js +57 -0
- package/src/ui/public/assets/index-NYzaTfbS.css +1 -0
- package/src/ui/public/assets/{useOrchestrator-CS9sn7nV.js → useOrchestrator-C236G5P5.js} +1 -1
- package/src/ui/public/index.html +6 -6
- package/src/ui/server/index.js +8 -0
- package/src/ui/server/routes/fileOpen.js +57 -1
- package/src/ui/server/routes/fileOpen.test.js +1 -1
- package/src/ui/server/routes/workbench/agentChat.js +70 -8
- package/src/ui/server/routes/workbench/agentChatExtensions.test.js +290 -0
- package/src/ui/server/routes/workbench/agentEngines.js +8 -4
- package/src/ui/server/routes/workbench/agentExtensions.js +157 -0
- package/src/ui/server/routes/workbench/agentMarketplace.js +12 -0
- package/src/ui/server/routes/workbench/agentParity.test.js +16 -0
- package/src/ui/server/routes/workbench/agentRoutes.js +82 -7
- package/src/ui/server/routes/workbench/agentRoutes.test.js +141 -1
- package/src/ui/server/routes/workbench/executorModels.js +30 -5
- package/src/ui/server/routes/workbench/executorModels.test.js +16 -4
- package/src/ui/server/routes/workbench/index.js +1 -1
- package/src/ui/server/routes/workbench/jobActivity.js +3 -3
- package/src/ui/server/routes/workbench/jobActivity.test.js +1 -0
- package/src/ui/server/routes/workbench/runExternalTurn.js +22 -25
- package/src/ui/server/routes/workbench/runExternalTurn.test.js +34 -0
- package/src/ui/server/routes/workbench/taskRunner.codebuddy.test.js +275 -0
- package/src/ui/server/routes/workbench/taskRunner.js +311 -24
- package/src/ui/server/routes/workbench/taskRunner.opencode.test.js +2 -1
- package/src/ui/public/assets/AgentView-BRAUZCtA.js +0 -1
- package/src/ui/public/assets/CopySessionButton-D0wFpk8a.js +0 -20
- package/src/ui/public/assets/EditorView-DmaGiI-z.js +0 -1
- package/src/ui/public/assets/RecentDirectoriesChat-B19uAf8k.css +0 -1
- package/src/ui/public/assets/RecentDirectoriesChat-CVFTShrU.js +0 -1
- package/src/ui/public/assets/WorkbenchView-CfSrCIbp.js +0 -8
- package/src/ui/public/assets/WorkbenchView-D6NRqZ5W.css +0 -1
- package/src/ui/public/assets/agentConversations-DpiGplZB.js +0 -8
- package/src/ui/public/assets/configStore-BdL3uW2E.js +0 -1
- package/src/ui/public/assets/index-BS7BDFG4.js +0 -57
- package/src/ui/public/assets/index-DwJWiCiN.css +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.wb-ctx-menu[data-v-e3e872cb]{z-index:var(--z-menu-float);background:var(--bg-container);border:1px solid var(--border-color);border-radius:var(--radius-md);min-width:140px;box-shadow:var(--shadow-md);-webkit-user-select:none;user-select:none;font-size:var(--font-size-mid);margin:0;padding:4px;list-style:none;position:fixed}.wb-ctx-menu__item[data-v-e3e872cb]{border-radius:var(--radius-base);cursor:pointer;color:var(--text-primary);align-items:center;gap:8px;padding:6px 10px;display:flex}.wb-ctx-menu__item[data-v-e3e872cb]:hover{background:var(--tint-primary-12);color:var(--color-primary)}.wb-ctx-menu__item.is-disabled[data-v-e3e872cb]{cursor:progress;opacity:var(--disabled-opacity)}.wb-ctx-menu__icon[data-v-e3e872cb]{justify-content:center;align-items:center;width:16px;height:16px;display:inline-flex}.wb-log-details[data-v-9c103bcc]{border:1px solid var(--border-color);border-radius:var(--radius-base);background:var(--bg-code);flex-direction:column;flex:1;height:100%;min-height:0;margin-top:6px;display:flex;overflow:auto}.wb-log-details__body[data-v-9c103bcc]{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.wb-job-chat[data-v-9c103bcc]{flex-direction:column;flex:1;min-height:0;display:flex}.wb-job-chat[data-v-9c103bcc] .acu-chat-footer{display:none}.wb-job-chat[data-v-9c103bcc] .acu-chat{background:0 0}.wb-job-chat[data-v-9c103bcc] .acu-message-list-inner{gap:10px;padding:10px 12px 14px}.wb-job-chat[data-v-9c103bcc] .acu-bubble{font-size:var(--font-size-sm)}.wb-job-chat[data-v-9c103bcc] .acu-bubble-name{font-size:var(--font-size-xs)}.wb-log-summary[data-v-9c103bcc]{cursor:pointer;font-size:var(--font-size-sm);color:var(--text-secondary);-webkit-user-select:none;user-select:none;flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;padding:6px 10px;display:flex}.wb-log-summary[data-v-9c103bcc]:hover{background:var(--tint-primary-06)}.wb-log-summary__left[data-v-9c103bcc]{flex:1;align-items:center;gap:6px;min-width:0;display:inline-flex}.wb-log-summary__right[data-v-9c103bcc]{flex-shrink:0;align-items:center;gap:8px;display:inline-flex}.wb-log-summary__meta[data-v-9c103bcc]{font-size:var(--font-size-xs);color:var(--text-meta);font-variant-numeric:tabular-nums}.wb-log-copy[data-v-9c103bcc]{font-size:var(--font-size-xs);color:var(--text-secondary);background:var(--bg-container);border:1px solid var(--border-color-medium);border-radius:var(--radius-base);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);flex-shrink:0;align-items:center;gap:3px;padding:2px 7px;font-weight:500;display:inline-flex}.wb-log-copy[data-v-9c103bcc]:hover{background:color-mix(in srgb, var(--color-primary) 10%, transparent);border-color:color-mix(in srgb, var(--color-primary) 35%, transparent);color:var(--color-primary)}.wb-log-copy[data-v-9c103bcc]:active{background:color-mix(in srgb, var(--color-primary) 18%, transparent)}.wb-log-copy[data-v-9c103bcc]:focus-visible{outline:2px solid color-mix(in srgb, var(--color-primary) 50%, transparent);outline-offset:1px}.wb-chat__foot[data-v-9c103bcc]{border-top:1px solid color-mix(in srgb, var(--border-color) 60%, transparent);background:color-mix(in srgb, var(--text-tertiary) 3%, transparent);flex-shrink:0;justify-content:flex-end;gap:6px;padding:4px 10px 6px;display:flex}.wb-chat__action[data-v-9c103bcc]{font-size:var(--font-size-xs);color:var(--color-think-dark);background:color-mix(in srgb, var(--color-think) 10%, var(--bg-container));border:1px solid color-mix(in srgb, var(--color-think) 30%, transparent);border-radius:var(--radius-base);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);align-items:center;gap:3px;padding:2px 8px;font-weight:500;display:inline-flex}.wb-chat__action[data-v-9c103bcc]:hover{background:color-mix(in srgb, var(--color-think) 18%, var(--bg-container));border-color:color-mix(in srgb, var(--color-think) 50%, transparent);color:var(--color-think-darker)}.wb-chat__action[data-v-9c103bcc]:active{background:color-mix(in srgb, var(--color-think) 26%, var(--bg-container))}.wb-chat__action[data-v-9c103bcc]:focus-visible{outline:2px solid color-mix(in srgb, var(--color-think) 50%, transparent);outline-offset:1px}.wb-log-fullscreen-dialog .el-dialog__body[data-v-9c103bcc]{flex-direction:column;height:calc(100vh - 54px);padding:0 16px 16px;display:flex;overflow:hidden}.wb-log-fullscreen[data-v-9c103bcc]{border:1px solid var(--border-color);border-radius:var(--radius-base);background:var(--bg-code);flex:1;min-height:0;display:flex;overflow:hidden}.wb-log-fullscreen__render[data-v-9c103bcc]{min-height:0;font-size:var(--font-size-mid);color:var(--text-primary);flex:1;padding:14px 18px;line-height:1.65;overflow:auto}.wb-log-fullscreen__render[data-v-9c103bcc] pre{margin:8px 0}.wb-log-fullscreen__empty[data-v-9c103bcc]{color:var(--text-meta);padding:14px 18px;font-style:italic}.wb-log-summary__status[data-v-9c103bcc]{font-weight:600;font-size:var(--font-size-sm);align-items:center;gap:6px;display:inline-flex}.wb-log-summary__status--running[data-v-9c103bcc]{color:var(--color-warning-dark)}.wb-log-summary__status--pending[data-v-9c103bcc]{color:var(--color-primary)}.wb-log-summary__status--done[data-v-9c103bcc]{color:var(--color-success-dark,#15803d)}.wb-log-summary__status--cancelled[data-v-9c103bcc]{color:var(--color-gray-400)}.wb-log-summary__status--error[data-v-9c103bcc]{color:var(--color-danger,var(--color-danger-light))}.wb-log-summary__icon[data-v-9c103bcc]{font-size:var(--font-size-mid);line-height:1}.wb-log-summary__elapsed[data-v-9c103bcc]{font-size:var(--font-size-xs);color:var(--text-meta);font-variant-numeric:tabular-nums;margin-left:2px;font-weight:400}.wb-log-dots[data-v-9c103bcc]{align-items:center;gap:3px;margin-left:-2px;display:inline-flex}.wb-log-dots__dot[data-v-9c103bcc]{opacity:.35;background:currentColor;border-radius:50%;width:4px;height:4px;animation:1.4s ease-in-out infinite wb-log-dot-bounce-9c103bcc}.wb-log-dots__dot[data-v-9c103bcc]:nth-child(2){animation-delay:var(--transition-base)}.wb-log-dots__dot[data-v-9c103bcc]:nth-child(3){animation-delay:.4s}.wb-log-details.is-running .wb-log-summary[data-v-9c103bcc]{background:color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 8%, transparent)}.wb-log-details.is-pending .wb-log-summary[data-v-9c103bcc]{background:color-mix(in srgb, var(--color-primary) 6%, transparent)}.wb-log-details.is-finished .wb-log-summary[data-v-9c103bcc]{background:color-mix(in srgb, var(--color-success,var(--action-green)) 6%, transparent)}.wb-log-details.is-finished[data-v-9c103bcc]{animation:1.5s ease-out wb-log-finished-flash-9c103bcc}@keyframes wb-log-dot-bounce-9c103bcc{0%,80%,to{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}@keyframes wb-log-finished-flash-9c103bcc{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--color-success,var(--action-green)) 50%, transparent)}60%{box-shadow:0 0 0 4px color-mix(in srgb, var(--color-success,var(--action-green)) 0%, transparent)}to{box-shadow:0 0 #0000}}@media (prefers-reduced-motion:reduce){.wb-log-dots__dot[data-v-9c103bcc],.wb-log-details.is-finished[data-v-9c103bcc]{animation:none}}.exec-logs[data-v-dd1760f3]{flex-direction:column;gap:12px;height:100%;padding:16px 20px;display:flex;overflow:auto}.exec-logs__head[data-v-dd1760f3]{align-items:center;gap:12px;display:flex}.exec-logs__title-block[data-v-dd1760f3]{flex:1;align-items:baseline;gap:10px;min-width:0;display:flex}.exec-logs__stats[data-v-dd1760f3]{font-size:var(--font-size-sm);color:var(--text-meta);font-variant-numeric:tabular-nums}.exec-logs__head-actions[data-v-dd1760f3]{flex-shrink:0;gap:8px;display:inline-flex}.exec-logs__config[data-v-dd1760f3]{background:var(--bg-subtle,var(--bg-container));border:1px solid var(--border-color);border-radius:var(--radius-md,6px);flex-wrap:wrap;align-items:center;gap:16px;padding:10px 14px;display:flex}.exec-logs__config-label[data-v-dd1760f3]{font-size:var(--font-size-sm);color:var(--text-secondary);font-weight:600}.exec-logs__config-field[data-v-dd1760f3]{align-items:center;gap:8px;display:inline-flex}.exec-logs__config-name[data-v-dd1760f3]{font-size:var(--font-size-sm);color:var(--text-meta)}.exec-logs__filter[data-v-dd1760f3]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.exec-logs__filter-spacer[data-v-dd1760f3]{flex:1}.exec-logs__batch-meta[data-v-dd1760f3]{font-size:var(--font-size-sm);color:var(--text-secondary);font-variant-numeric:tabular-nums}.exec-logs__batch[data-v-dd1760f3]{background:color-mix(in srgb, var(--color-primary) 6%, transparent);border:1px solid color-mix(in srgb, var(--color-primary) 25%, transparent);border-radius:var(--radius-md,6px);align-items:center;gap:12px;padding:8px 14px;display:flex}.exec-logs__list[data-v-dd1760f3]{flex-direction:column;flex:1;gap:10px;min-height:200px;display:flex}.exec-logs__empty[data-v-dd1760f3]{border:1px dashed var(--border-color);border-radius:var(--radius-md,6px);color:var(--text-meta);text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:60px 20px;display:flex}.exec-logs__empty-art[data-v-dd1760f3]{opacity:.5;margin-bottom:8px;font-size:36px}.exec-logs__empty-title[data-v-dd1760f3]{font-size:var(--font-size-base);color:var(--text-secondary);margin-bottom:4px;font-weight:600}.exec-logs__empty-hint[data-v-dd1760f3]{font-size:var(--font-size-sm);max-width:400px}.exec-logs__pager[data-v-dd1760f3]{justify-content:center;padding-top:8px;display:flex}.exec-card[data-v-dd1760f3]{background:var(--bg-container);border:1px solid var(--border-color);border-radius:var(--radius-md,6px);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);flex-direction:column;gap:6px;padding:12px 14px;display:flex}.exec-card[data-v-dd1760f3]:hover{border-color:var(--color-primary)}.exec-card.is-selected[data-v-dd1760f3]{border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary)}.exec-card__head[data-v-dd1760f3]{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.exec-card__status[data-v-dd1760f3]{font-size:var(--font-size-xs);border:1px solid;border-radius:999px;flex-shrink:0;padding:1px 8px;font-weight:600;display:inline-block}.exec-card__title[data-v-dd1760f3]{font-size:var(--font-size-base);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;min-width:0;max-width:360px;font-weight:600;overflow:hidden}.exec-card__spacer[data-v-dd1760f3]{flex:1}.exec-card__meta[data-v-dd1760f3]{font-size:var(--font-size-xs);color:var(--text-meta);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:10px;display:inline-flex}.exec-card__task[data-v-dd1760f3]{white-space:nowrap;text-overflow:ellipsis;max-width:200px;overflow:hidden}.exec-card__time[data-v-dd1760f3]{font-variant-numeric:tabular-nums}.exec-card__exit[data-v-dd1760f3]{font-family:var(--font-mono,ui-monospace, monospace)}.exec-card__del[data-v-dd1760f3]{width:22px;height:22px;font-size:var(--font-size-md);color:var(--text-meta);border-radius:var(--radius-base);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;line-height:1;display:inline-flex}.exec-card__del[data-v-dd1760f3]:hover{background:var(--tint-danger-14);color:var(--color-danger-bright,var(--color-danger-light))}.exec-card__error[data-v-dd1760f3]{font-size:var(--font-size-sm);color:var(--color-danger-dark,#b91c1c);background:var(--tint-danger-06);border:1px solid color-mix(in srgb, var(--color-danger) 28%, transparent);border-radius:var(--radius-base);font-family:var(--font-mono,ui-monospace, monospace);white-space:pre-wrap;word-break:break-word;margin:0;padding:6px 10px}.wb-sidebar[data-v-cb578d87]{background:var(--bg-panel);flex-direction:column;flex-shrink:0;gap:18px;width:268px;padding:14px 12px 18px;display:flex;overflow-y:auto}.wb-section[data-v-cb578d87]{flex-direction:column;flex-shrink:0;gap:8px;min-height:0;display:flex}.wb-section+.wb-section[data-v-cb578d87]{padding-top:16px}.wb-section__head[data-v-cb578d87]{align-items:center;gap:6px;padding:0 4px;display:flex}.wb-section__tag[data-v-cb578d87]{height:18px;font-size:var(--font-size-xs);letter-spacing:.4px;color:var(--text-meta);background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-base);text-transform:uppercase;font-variant-numeric:tabular-nums;flex-shrink:0;align-items:center;padding:0 6px;font-weight:600;display:inline-flex}.wb-section__tag--accent[data-v-cb578d87]{color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 9%, transparent);border-color:var(--tint-primary-22)}.wb-section__title[data-v-cb578d87]{font-size:var(--font-size-sm);color:var(--text-secondary);letter-spacing:.2px;flex:1;min-width:0;margin:0;font-weight:600}.wb-section__action[data-v-cb578d87]{color:var(--text-meta);border-radius:var(--radius-base);cursor:pointer;width:28px;height:28px;font-size:var(--font-size-mid);transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.wb-section__action[data-v-cb578d87]:hover{background:var(--tint-primary-12);color:var(--color-primary)}.wb-new-btn[data-v-cb578d87]{border:1px dashed var(--tint-primary-35,color-mix(in srgb, var(--color-primary) 35%, transparent));border-radius:var(--radius-md);background:linear-gradient(135deg, color-mix(in srgb, var(--color-primary) 4%, transparent) 0%, color-mix(in srgb, var(--color-primary) 2%, transparent) 100%);width:100%;height:32px;color:var(--color-primary);font-size:var(--font-size-mid);letter-spacing:.05px;cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);align-items:center;gap:6px;padding:0 12px;font-weight:600;display:flex}.wb-new-btn__icon[data-v-cb578d87]{font-size:var(--font-size-mid);transition:transform var(--transition-fast) var(--ease-custom);flex-shrink:0}.wb-new-btn__shortcut[data-v-cb578d87]{display:none}.wb-new-btn[data-v-cb578d87]:hover{background:linear-gradient(135deg, color-mix(in srgb, var(--color-primary) 10%, transparent) 0%, color-mix(in srgb, var(--color-primary) 6%, transparent) 100%);color:var(--color-primary);border-style:solid;border-color:var(--tint-primary-50)}.wb-new-btn:hover .wb-new-btn__icon[data-v-cb578d87]{transform:rotate(90deg)}.wb-new-btn[data-v-cb578d87]:active{transform:scale(.99)}.wb-new-btn[data-v-cb578d87]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.wb-task-list[data-v-cb578d87]{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.wb-task-list.is-grouped .wb-task-item[data-v-cb578d87]{margin-left:14px}.wb-task-item[data-v-cb578d87]{border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);background:0 0;border:none;align-items:center;gap:8px;padding:7px 10px;display:flex;position:relative}.wb-task-item.is-running[data-v-cb578d87]{background:color-mix(in srgb, var(--color-warning) 8%, transparent)}.wb-task-item.is-running[data-v-cb578d87]:hover{background:color-mix(in srgb, var(--color-warning) 14%, transparent)}.wb-task-item[data-v-cb578d87]:hover{background:var(--bg-container-hover);border-color:#0000;transform:translateY(-.5px)}.wb-task-item.active[data-v-cb578d87]{background:color-mix(in srgb, var(--color-primary) 10%, var(--bg-container));box-shadow:0 1px 3px color-mix(in srgb, var(--color-primary) 12%, transparent), 0 0 0 1px color-mix(in srgb, var(--color-primary) 18%, transparent);border-color:#0000}.wb-task-item.active[data-v-cb578d87]:after{content:"";border-radius:var(--radius-base);background:linear-gradient(180deg, var(--color-primary) 0%, color-mix(in srgb, var(--color-primary) 70%, #fff) 100%);width:3px;box-shadow:0 0 8px color-mix(in srgb, var(--color-primary) 50%, transparent), 0 1px 3px color-mix(in srgb, var(--color-primary) 25%, transparent);position:absolute;top:5px;bottom:5px;left:-1px}.wb-task-item.active .wb-task-item__title[data-v-cb578d87],.wb-task-item.active .wb-task-item__del[data-v-cb578d87]{color:var(--color-primary)}.wb-task-item__running-dot[data-v-cb578d87]{background:var(--color-warning);width:6px;height:6px;box-shadow:0 0 0 0 color-mix(in srgb, var(--color-warning) 60%, transparent);border-radius:50%;flex:none;margin-left:auto;animation:1.4s ease-in-out infinite wb-running-pulse-cb578d87}@keyframes wb-running-pulse-cb578d87{0%,to{box-shadow:0 0 0 0 color-mix(in srgb, var(--color-warning) 60%, transparent);opacity:1;transform:scale(1)}50%{box-shadow:0 0 0 4px color-mix(in srgb, var(--color-warning) 0%, transparent);opacity:.75;transform:scale(1.35)}}.wb-task-item__body[data-v-cb578d87]{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.wb-task-item__title[data-v-cb578d87]{font-size:var(--font-size-sm);color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;letter-spacing:-.05px;font-weight:500;line-height:1.3;overflow:hidden}.wb-task-item.is-other-project[data-v-cb578d87]{opacity:.78}.wb-task-item.is-other-project[data-v-cb578d87]:hover{opacity:1}.wb-task-item[data-v-cb578d87]{cursor:grab}.wb-task-item.is-dragging[data-v-cb578d87]{opacity:.5;cursor:grabbing;pointer-events:none}.wb-task-item.is-drop-before[data-v-cb578d87]:before,.wb-task-item.is-drop-after[data-v-cb578d87]:after{content:"";background:var(--color-primary);border-radius:var(--radius-xs);height:2px;box-shadow:0 0 8px color-mix(in srgb, var(--color-primary) 50%, transparent);pointer-events:none;position:absolute;left:8px;right:8px}.wb-task-item.is-drop-before[data-v-cb578d87]:before{top:-2px}.wb-task-item.is-drop-after[data-v-cb578d87]:after{bottom:-2px}.wb-task-group__head.is-no-drop[data-v-cb578d87]{cursor:not-allowed;opacity:.55}.wb-task-item__action-group[data-v-cb578d87]{border-radius:var(--radius-lg);background:linear-gradient(to right, transparent 0%, var(--bg-container-hover) 40%);opacity:0;pointer-events:none;transition:opacity var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);align-items:center;gap:2px;padding:1px 1px 1px 14px;display:inline-flex;position:absolute;top:50%;right:6px;transform:translateY(-50%)translate(-2px)}.wb-task-item:hover .wb-task-item__action-group[data-v-cb578d87],.wb-task-item.active .wb-task-item__action-group[data-v-cb578d87]{opacity:1;pointer-events:auto;transform:translateY(-50%)translate(0)}.wb-task-item.active .wb-task-item__action-group[data-v-cb578d87]{background:linear-gradient(to right, transparent 0%, color-mix(in srgb, var(--color-primary) 10%, var(--bg-container)) 40%)}.wb-task-item.is-running .wb-task-item__action-group[data-v-cb578d87]{background:linear-gradient(to right, transparent 0%, color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 8%, var(--bg-panel)) 40%)}.wb-task-item__copy[data-v-cb578d87]{color:var(--text-meta);border-radius:var(--radius-md);cursor:pointer;width:22px;height:22px;font-size:var(--font-size-sm);transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.wb-task-item__copy[data-v-cb578d87]:hover{background:color-mix(in srgb, var(--color-primary) 12%, transparent);color:var(--color-primary)}.wb-task-item__copy[data-v-cb578d87]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset)}.wb-task-item__copy[data-v-cb578d87]:active{transform:scale(.9)}.wb-task-item__del[data-v-cb578d87]{color:var(--text-meta);border-radius:var(--radius-md);cursor:pointer;width:22px;height:22px;font-size:var(--font-size-sm);transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.wb-task-item__del[data-v-cb578d87]:hover{background:color-mix(in srgb, var(--color-danger) 14%, transparent);color:var(--color-danger-dark)}.wb-task-item__del[data-v-cb578d87]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset);opacity:1}.wb-task-item__del[data-v-cb578d87],.wb-sub-item__del[data-v-cb578d87]{font-size:var(--font-size-mid)}.wb-empty[data-v-cb578d87]{text-align:center;color:var(--text-meta);border-radius:var(--radius-md);background:linear-gradient(135deg, var(--bg-subtle) 0%, color-mix(in srgb, var(--tint-primary-06) 50%, transparent) 100%);border:1px dashed var(--border-color-light);flex-direction:column;align-items:center;gap:8px;padding:24px 14px 20px;display:flex;position:relative;overflow:hidden}.wb-empty[data-v-cb578d87]:before{content:"";background:radial-gradient(circle, color-mix(in srgb, var(--color-primary) 5%, transparent) 0%, transparent 70%);pointer-events:none;border-radius:50%;width:100px;height:100px;position:absolute;top:-25px;right:-25px}.wb-empty--compact[data-v-cb578d87]{background:var(--bg-subtle);border-style:solid;flex-direction:row;justify-content:center;gap:0;padding:10px 12px}.wb-empty--compact[data-v-cb578d87]:before{display:none}.wb-empty__art[data-v-cb578d87]{border-radius:var(--radius-xl);background:linear-gradient(135deg, var(--tint-primary-12) 0%, var(--tint-primary-08) 100%);width:52px;height:52px;color:var(--color-primary);font-size:var(--font-size-2xl);box-shadow:0 4px 12px color-mix(in srgb, var(--color-primary) 10%, transparent);z-index:1;justify-content:center;align-items:center;margin-bottom:4px;display:flex;position:relative}.wb-empty__title[data-v-cb578d87]{font-size:var(--font-size-base);letter-spacing:var(--letter-spacing-heading,-.25px);color:var(--text-secondary);z-index:1;font-weight:600;line-height:1.45;position:relative}.wb-empty--rich .wb-empty__hint[data-v-cb578d87]{font-size:var(--font-size-sm);color:var(--text-meta);z-index:1;max-width:280px;line-height:1.6;position:relative}.wb-empty__cta[data-v-cb578d87]{z-index:1;flex-wrap:wrap;justify-content:center;align-items:center;gap:14px;margin-top:8px;display:flex;position:relative}.wb-task-group__head[data-v-cb578d87]{border-radius:var(--radius-md);cursor:pointer;-webkit-user-select:none;user-select:none;font-size:var(--font-size-mid);color:var(--text-secondary);transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);align-items:center;gap:6px;margin-bottom:2px;padding:5px 6px;font-weight:600;display:flex}.wb-task-group__head[data-v-cb578d87]:hover{background:var(--bg-container-hover);color:var(--text-primary)}.wb-task-group__head.is-current[data-v-cb578d87]{color:var(--color-primary);font-weight:600}.wb-task-group__caret[data-v-cb578d87]{font-size:var(--font-size-sm);transition:transform var(--transition-fast);flex-shrink:0}.wb-task-group__icon[data-v-cb578d87]{font-size:var(--font-size-base);opacity:.7;flex-shrink:0}.wb-task-group__name[data-v-cb578d87]{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.wb-task-group__count[data-v-cb578d87]{min-width:14px;height:14px;font-size:var(--font-size-xs);background:var(--bg-subtle);padding:0 4px}.proj[data-v-4f1136db]{flex-direction:column;flex:auto;min-height:0;display:flex;overflow:hidden}.proj__head[data-v-4f1136db]{flex-shrink:0;align-items:center;gap:8px;padding:8px 12px;display:flex}.proj__title[data-v-4f1136db]{font-size:var(--font-size-sm);color:var(--text-secondary);flex:1;min-width:0;margin:0;font-weight:500}.proj__count[data-v-4f1136db]{font-size:var(--font-size-xs);color:var(--text-meta);font-variant-numeric:tabular-nums;text-align:right}.proj__tools[data-v-4f1136db]{flex-direction:column;flex-shrink:0;gap:8px;padding:0 12px 8px;display:flex}.proj__search[data-v-4f1136db]{border:1px solid var(--border-input);border-radius:var(--radius-md);background:var(--bg-input);height:24px;transition:border-color var(--transition-fast) var(--ease-custom), box-shadow var(--transition-fast) var(--ease-custom);align-items:center;gap:4px;padding:0 8px;display:flex}.proj__search[data-v-4f1136db]:hover:not(:focus-within){border-color:var(--border-input-hover)}.proj__search[data-v-4f1136db]:focus-within{border-color:var(--color-primary);box-shadow:var(--focus-ring-soft)}.proj__search-icon[data-v-4f1136db]{font-size:var(--font-size-sm);color:var(--text-meta);flex-shrink:0}.proj__search-input[data-v-4f1136db]{min-width:0;font-family:inherit;font-size:var(--font-size-sm);color:var(--text-primary);caret-color:var(--color-primary);background:0 0;border:none;outline:none;flex:1}.proj__search-input[data-v-4f1136db]::placeholder{color:var(--text-meta)}.proj__toggles[data-v-4f1136db]{align-items:center;gap:8px;display:flex}.proj__toggle[data-v-4f1136db]{border:1px solid var(--border-color);border-radius:var(--radius-md);min-width:0;height:22px;color:var(--text-meta);font-family:inherit;font-size:var(--font-size-xs);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;flex:1 1 0;padding:0 8px;line-height:1}.proj__toggle>span[data-v-4f1136db]{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.proj__toggle[data-v-4f1136db]:hover{color:var(--text-secondary);border-color:var(--text-tertiary)}.proj__toggle.is-on[data-v-4f1136db]{color:var(--color-primary);border-color:var(--color-primary);background:var(--tint-primary-12)}.proj__toggle[data-v-4f1136db]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.proj__list[data-v-4f1136db]{flex:auto;min-height:0;margin:0;padding:0 8px 8px;list-style:none;overflow-y:auto}.proj-item[data-v-4f1136db]{border-radius:var(--radius-lg);cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), box-shadow var(--transition-fast) var(--ease-custom);outline:none;padding:8px;position:relative}.proj-item[data-v-4f1136db]:hover{background:var(--bg-container-hover)}.proj-item.is-active[data-v-4f1136db]{background:linear-gradient(90deg, var(--tint-primary-10), var(--tint-primary-04));box-shadow:inset 0 0 0 1px var(--tint-primary-14)}.proj-item[data-v-4f1136db]:focus-visible{outline:var(--focus-outline);outline-offset:-1px}.proj-item.is-running[data-v-4f1136db]{background:var(--role-active-surface)}.proj-item--all[data-v-4f1136db]{border-bottom:1px solid var(--border-color);border-radius:var(--radius-lg) var(--radius-lg) 0 0;margin-bottom:4px}.proj-item__num[data-v-4f1136db]{font-size:var(--font-size-xs);border-radius:var(--radius-base);color:var(--text-secondary);background:var(--bg-subtle);font-variant-numeric:tabular-nums;flex-shrink:0;padding:0 5px;line-height:15px}.proj-item__running-text[data-v-4f1136db]{color:var(--color-warning-dark);font-variant-numeric:tabular-nums;flex-shrink:0;margin-left:auto}.proj-item__row1[data-v-4f1136db]{align-items:center;gap:6px;min-width:0;display:flex}.proj-item__icon[data-v-4f1136db]{font-size:var(--font-size-mid);color:var(--text-meta);flex-shrink:0}.proj-item.is-active .proj-item__icon[data-v-4f1136db]{color:var(--color-primary)}.proj-item__name[data-v-4f1136db]{font-size:var(--font-size-mid);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;padding-right:44px;font-weight:500;line-height:1.4;overflow:hidden}.proj-item__signals[data-v-4f1136db]{transition:opacity var(--transition-fast) var(--ease-custom);flex-shrink:0;align-items:center;gap:6px;display:inline-flex}.proj-item:hover .proj-item__signals[data-v-4f1136db]{opacity:0}.proj-item:has(.proj-item__action:focus-visible) .proj-item__signals[data-v-4f1136db]{opacity:0}.proj-item__running[data-v-4f1136db]{background:var(--color-warning);width:6px;height:6px;box-shadow:var(--dot-glow-warning);border-radius:50%;flex-shrink:0;animation:1.4s ease-in-out infinite proj-pulse-4f1136db}@keyframes proj-pulse-4f1136db{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(1.3)}}.proj-item__badge[data-v-4f1136db]{font-size:var(--font-size-xs);border-radius:var(--radius-base);color:var(--color-primary);background:var(--tint-primary-12);flex-shrink:0;padding:0 5px;line-height:15px}.proj-item__actions[data-v-4f1136db]{opacity:0;pointer-events:none;transition:opacity var(--transition-fast) var(--ease-custom);align-items:center;gap:2px;display:inline-flex;position:absolute;top:6px;right:8px}.proj-item:hover .proj-item__actions[data-v-4f1136db]{opacity:1;pointer-events:auto}.proj-item:has(.proj-item__action:focus-visible) .proj-item__actions[data-v-4f1136db]{opacity:1;pointer-events:auto}.proj-item:has(.proj-item__action.is-open) .proj-item__actions[data-v-4f1136db]{opacity:1;pointer-events:auto}.proj-item__action[data-v-4f1136db]{border-radius:var(--radius-base);width:20px;height:20px;color:var(--text-meta);font-size:var(--font-size-mid);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.proj-item__action[data-v-4f1136db]:hover{color:var(--color-primary);background:var(--tint-primary-12)}.proj-item__action[data-v-4f1136db]:active{color:var(--color-primary)}.proj-item__action[data-v-4f1136db]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.proj-item__action.is-open[data-v-4f1136db]{color:var(--color-primary);background:var(--tint-primary-12)}.proj-item__action--danger[data-v-4f1136db]{color:var(--color-danger-dark)}.proj-item__action--danger[data-v-4f1136db]:hover{color:var(--color-danger-dark);background:color-mix(in srgb, var(--color-danger) 14%, transparent)}.proj-item__action--danger[data-v-4f1136db]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.proj-menu[data-v-4f1136db]{font-size:var(--font-size-mid);color:var(--text-primary);margin:0;padding:2px 0;list-style:none}.proj-menu__item[data-v-4f1136db]{border-radius:var(--radius-md);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);align-items:center;gap:9px;padding:7px 10px;display:flex}.proj-menu__item[data-v-4f1136db]:hover,.proj-menu__item[data-v-4f1136db]:focus-visible{background:var(--tint-primary-12);outline:none}.proj-menu__icon[data-v-4f1136db]{width:16px;height:16px;font-size:var(--font-size-base);color:var(--text-secondary);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.proj-menu__icon[data-v-4f1136db] svg{width:16px;height:16px}.proj-menu__img[data-v-4f1136db]{object-fit:contain;-webkit-user-drag:none;width:16px;height:16px}.proj-menu__label[data-v-4f1136db]{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.proj-menu__hint[data-v-4f1136db]{font-size:var(--font-size-xs);color:var(--text-meta);transition:color var(--transition-fast) var(--ease-custom);flex-shrink:0}.proj-menu__item:hover .proj-menu__hint[data-v-4f1136db]{color:var(--color-primary)}.proj-menu__sep[data-v-4f1136db]{background:var(--border-color);height:1px;margin:4px 6px}.proj-menu__title[data-v-4f1136db]{font-size:var(--font-size-xs);letter-spacing:.3px;color:var(--text-meta);padding:4px 10px 3px;font-weight:600}.proj-menu__item--danger .proj-menu__label[data-v-4f1136db]{color:var(--color-warning-dark)}.proj-menu__item.is-missing .proj-menu__icon[data-v-4f1136db]{opacity:.5;filter:grayscale(.65)}.proj-menu__item.is-missing:hover .proj-menu__icon[data-v-4f1136db]{opacity:.85;filter:grayscale(.2)}.proj-item__row2[data-v-4f1136db]{min-width:0;font-size:var(--font-size-xs);color:var(--text-meta);align-items:center;gap:4px;margin-top:2px;display:flex}.proj-item__branch[data-v-4f1136db]{min-width:0;max-width:130px;font-family:var(--font-mono,ui-monospace, monospace);align-items:center;gap:4px;display:inline-flex}.proj-item__branch-name[data-v-4f1136db]{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.proj-item__branch[data-v-4f1136db] .proj-item__branch-icon{color:currentColor;flex-shrink:0;width:11px;height:11px}.proj-item__time[data-v-4f1136db]{font-variant-numeric:tabular-nums;flex-shrink:0;margin-left:auto}.proj-chip[data-v-4f1136db]{font-size:var(--font-size-xs);border-radius:var(--radius-pill);font-variant-numeric:tabular-nums;flex-shrink:0;padding:0 6px;line-height:14px}.proj-chip--ahead[data-v-4f1136db]{color:var(--color-primary);background:var(--tint-primary-12)}.proj-chip--behind[data-v-4f1136db]{color:var(--color-warning-dark);background:color-mix(in srgb, var(--color-warning) 14%, transparent)}.proj-chip--dirty[data-v-4f1136db]{color:var(--text-secondary);background:var(--bg-subtle)}.proj-chip--missing[data-v-4f1136db]{color:var(--color-danger-light);background:color-mix(in srgb, var(--color-danger) 12%, transparent)}.proj-item__row3[data-v-4f1136db]{align-items:center;gap:6px;margin-top:5px;display:flex}.proj-item__bar[data-v-4f1136db]{border-radius:var(--radius-pill);background:color-mix(in srgb, var(--text-tertiary) 16%, transparent);flex:1;min-width:0;height:4px;overflow:hidden}.proj-item__bar-fill[data-v-4f1136db]{border-radius:var(--radius-pill);background:var(--role-pending-bar);height:100%;transition:width var(--transition-base) var(--ease-custom), background var(--transition-fast) var(--ease-custom);display:block}.proj-item.is-running .proj-item__bar-fill[data-v-4f1136db]{background:var(--role-active-bar)}.proj-item.is-complete .proj-item__bar-fill[data-v-4f1136db]{background:var(--role-done-bar)}.proj-item__progress-text[data-v-4f1136db]{font-size:var(--font-size-xs);color:var(--text-meta);font-variant-numeric:tabular-nums;flex-shrink:0}.proj-empty[data-v-4f1136db]{text-align:center;border-radius:var(--radius-lg);background:var(--bg-subtle);margin:0 6px;padding:20px 12px;list-style:none}.proj-empty__title[data-v-4f1136db]{font-size:var(--font-size-mid);color:var(--text-secondary);margin:0 0 4px}.proj-empty__hint[data-v-4f1136db]{font-size:var(--font-size-xs);color:var(--text-meta);margin:0;line-height:1.6}.proj-empty__clear[data-v-4f1136db]{color:var(--color-primary);font-family:inherit;font-size:var(--font-size-xs);cursor:pointer;background:0 0;border:none;margin-top:8px;padding:2px 4px}.proj-empty__clear[data-v-4f1136db]:hover{text-decoration:underline}.proj-empty__clear[data-v-4f1136db]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.kb[data-v-efc67236]{flex-direction:column;flex:auto;min-width:0;min-height:0;display:flex}.kb__toolbar[data-v-efc67236]{border-bottom:1px solid var(--border-color);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:8px;padding:8px 12px;display:flex}.kb__views[data-v-efc67236]{border-radius:var(--radius-lg);background:var(--bg-subtle);flex-shrink:0;align-items:center;gap:2px;padding:3px;display:inline-flex}.kb__view-btn[data-v-efc67236]{color:var(--text-secondary);font-size:var(--font-size-sm);border-radius:var(--radius-base);cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);background:0 0;border:none;padding:0 10px;line-height:20px}.kb__view-btn[data-v-efc67236]:hover{color:var(--text-primary)}.kb__view-btn.is-active[data-v-efc67236]{background:var(--surface-elevated);box-shadow:var(--shadow-card-rest);color:var(--color-primary);font-weight:500}.kb__filters[data-v-efc67236]{flex-wrap:wrap;align-items:center;gap:10px;margin-left:auto;display:flex}.kb__search[data-v-efc67236]{align-items:center;display:inline-flex;position:relative}.kb__search-icon[data-v-efc67236]{font-size:var(--font-size-sm);color:var(--text-meta);pointer-events:none;position:absolute;left:7px}.kb__search-input[data-v-efc67236]{width:168px;height:24px;font-size:var(--font-size-sm);color:var(--text-primary);background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--radius-md);transition:border-color var(--transition-fast) var(--ease-custom), width var(--transition-base) var(--ease-custom);outline:none;padding:0 8px 0 24px}.kb__search-input[data-v-efc67236]:hover:not(:focus){border-color:var(--input-border-hover)}.kb__search-input[data-v-efc67236]:focus{border-color:var(--color-primary);box-shadow:var(--focus-ring-soft);width:216px}.kb__search-input[data-v-efc67236]::placeholder{color:var(--text-meta)}.kb__columns[data-v-efc67236]{flex:auto;min-height:0;display:grid;overflow:hidden}.kb__columns.is-animated[data-v-efc67236]{transition:grid-template-columns var(--transition-slow) var(--ease-enter)}.kb-col[data-v-efc67236]{--col-hue:var(--role-pending-hue);--col-ink:var(--role-pending-ink);--col-surface:var(--role-pending-surface);--col-wash:var(--role-pending-wash);--col-edge:var(--role-pending-edge);--col-glow:var(--role-pending-glow);--col-band:color-mix(in srgb, var(--col-hue) 26%, var(--surface-elevated));border-left:1px solid var(--border-color);background:var(--col-surface);min-width:0;min-height:0;transition:opacity var(--transition-base) var(--ease-enter), border-color var(--transition-base) var(--ease-enter);flex-direction:column;display:flex;overflow:hidden}.kb-col--doing[data-v-efc67236]{--col-hue:var(--role-active-hue);--col-ink:var(--role-active-ink);--col-surface:var(--role-active-surface);--col-wash:var(--role-active-wash);--col-edge:var(--role-active-edge);--col-glow:var(--role-active-glow)}.kb-col--done[data-v-efc67236]{--col-hue:var(--role-done-hue);--col-ink:var(--role-done-ink);--col-surface:var(--role-done-surface);--col-wash:var(--role-done-wash);--col-edge:var(--role-done-edge);--col-glow:var(--role-done-glow)}.kb-col[data-v-efc67236]:first-child{border-left:none}.kb-col__head[data-v-efc67236]{background:var(--col-band);border-bottom:1px solid var(--col-edge);flex-shrink:0;align-items:center;gap:8px;padding:8px 12px;display:flex}.kb-col__dot[data-v-efc67236]{background:var(--col-ink);width:8px;height:8px;box-shadow:var(--col-glow);border-radius:50%;flex-shrink:0}.kb-col--doing .kb-col__dot.is-live[data-v-efc67236]{animation:1.4s ease-in-out infinite kb-pulse-efc67236}@keyframes kb-pulse-efc67236{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(1.35)}}.kb-col__title[data-v-efc67236]{font-size:var(--font-size-sm);letter-spacing:var(--letter-spacing-wide);color:var(--col-ink);flex:1;min-width:0;margin:0;font-weight:600}.kb-col__count[data-v-efc67236]{font-size:var(--font-size-sm);color:var(--col-ink);font-variant-numeric:tabular-nums;border-radius:var(--radius-pill);background:color-mix(in srgb, var(--col-ink) 10%, transparent);padding:1px 7px;font-weight:600}.kb-col__list[data-v-efc67236]{flex:auto;min-height:0;margin:0;padding:12px;list-style:none;overflow-y:auto}.kb-col.is-collapsed[data-v-efc67236]{opacity:0;pointer-events:none;border-left-color:#0000}.kb-col__more[data-v-efc67236]{margin-top:4px;list-style:none}.kb-col__more-btn[data-v-efc67236]{border:1px dashed var(--border-color);border-radius:var(--radius-base);width:100%;color:var(--text-secondary);font-size:var(--font-size-sm);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom);background:0 0;padding:8px}.kb-col__more-btn[data-v-efc67236]:hover{color:var(--col-ink);border-color:var(--col-edge)}.kb-col__more-btn[data-v-efc67236]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.kb-card[data-v-efc67236]{--kb-mask-outside-band:linear-gradient(to bottom, #000 calc(100% - 19px), transparent calc(100% - 14px));border:1px solid var(--border-color-light);border-radius:var(--radius-lg);background:var(--surface-elevated);box-shadow:var(--shadow-card-rest);cursor:pointer;transition:border-color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom), box-shadow var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);margin-bottom:8px;padding:12px;position:relative}.kb-card[data-v-efc67236]:hover{border-color:var(--border-card-hover);background:var(--surface-elevated);box-shadow:var(--shadow-card-lift);transform:translateY(-1px)}.kb-card.is-running[data-v-efc67236]{border-color:var(--role-active-edge)}.kb-card.has-error[data-v-efc67236]{border-color:var(--role-error-edge);background:var(--role-error-wash)}.kb-card.is-opened[data-v-efc67236]{border-color:color-mix(in srgb, var(--color-primary) 42%, var(--border-color))}.kb-card__cover[data-v-efc67236]{border-radius:calc(var(--radius-lg) - 1px) calc(var(--radius-lg) - 1px) 0 0;background:var(--bg-container);cursor:zoom-in;border:none;width:calc(100% + 24px);height:72px;margin:-12px -12px 10px;padding:0;display:block;position:relative;overflow:hidden}.kb-card__cover[data-v-efc67236]:focus-visible{outline:var(--focus-outline);outline-offset:-2px}.kb-card__cover-img[data-v-efc67236]{object-fit:cover;object-position:top center;width:100%;height:100%;transition:transform var(--transition-base) var(--ease-custom);display:block}.kb-card__cover:hover .kb-card__cover-img[data-v-efc67236]{transform:scale(1.04)}.kb-card__cover-more[data-v-efc67236]{border-radius:var(--radius-base);background:var(--bg-overlay);color:#fff;font-size:var(--font-size-xs);font-variant-numeric:tabular-nums;padding:0 5px;line-height:16px;position:absolute;bottom:6px;right:6px}.kb-card__row1[data-v-efc67236]{min-width:0;font-size:var(--font-size-xs);color:var(--text-meta);align-items:baseline;gap:6px;margin-bottom:8px;display:flex}.kb-card__time[data-v-efc67236]{font-variant-numeric:tabular-nums;flex-shrink:0;margin-left:auto}.kb-card__spent[data-v-efc67236]{font-size:var(--font-size-xs);color:var(--text-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;margin:-2px 0 8px;overflow:hidden}.kb-card__auto-done[data-v-efc67236]{border:1px solid color-mix(in srgb, var(--color-success) 24%, var(--surface-elevated));border-radius:var(--radius-base);background:color-mix(in srgb, var(--color-success) 9%, var(--surface-elevated));color:color-mix(in srgb, var(--color-success) 62%, var(--text-primary));font-size:var(--font-size-xs);margin:-4px 0 8px;padding:0 5px;line-height:1.6;display:inline-block}.kb-table__auto-done[data-v-efc67236]{color:color-mix(in srgb, var(--color-success) 62%, var(--text-primary))}.kb-card__title[data-v-efc67236]{min-width:0;font-size:var(--font-size-base);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;flex:1 1 0;margin:0;font-weight:500;line-height:1.5;overflow:hidden}.kb-card__project-chip[data-v-efc67236],.kb-table__project[data-v-efc67236]{--tag-ink:hsl(var(--tag-hue,200) 62% 44%);border:1px solid color-mix(in srgb, var(--tag-ink) 24%, var(--surface-elevated));border-radius:var(--radius-pill);background:color-mix(in srgb, var(--tag-ink) 9%, var(--surface-elevated));max-width:100%;color:color-mix(in srgb, var(--tag-ink) 62%, var(--text-primary));font-size:var(--font-size-xs);white-space:nowrap;text-overflow:ellipsis;padding:0 6px;line-height:16px;display:inline-block;overflow:hidden}.kb-card__row1 .kb-card__project-chip[data-v-efc67236]{flex:0 auto;min-width:0}.kb-table__project[data-v-efc67236]{vertical-align:1px;margin-left:6px}.kb-card__live[data-v-efc67236]{border-top:1px dashed var(--border-color-light);min-width:0;margin-top:8px;padding-top:8px}.kb-card__live-meta[data-v-efc67236]{font-size:var(--font-size-xs);color:var(--text-meta);font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:8px;margin:0;display:flex}.kb-card__live-agent[data-v-efc67236],.kb-card__quote-agent[data-v-efc67236],.kb-table__agent[data-v-efc67236]{color:var(--text-meta);flex:none;align-items:center;font-size:12px;display:inline-flex}.kb-card__live-agent[data-v-efc67236],.kb-table__agent[data-v-efc67236]{margin-right:4px}.kb-card__reply-text[data-v-efc67236]{flex:auto;min-width:0;margin-left:4px}.kb-card__live-silent[data-v-efc67236]{color:var(--color-warning-dark)}.kb-card__live-line[data-v-efc67236]{font-size:var(--font-size-xs);color:var(--text-meta);-webkit-line-clamp:2;line-clamp:2;word-break:break-word;-webkit-box-orient:vertical;margin:4px 0 0;line-height:1.5;display:-webkit-box;overflow:hidden}.kb-card__live-line.is-tool[data-v-efc67236]{-webkit-line-clamp:1;line-clamp:1}.kb-card__live-line.is-thought[data-v-efc67236]{color:var(--text-secondary);padding-left:8px}.kb-card__live-tag[data-v-efc67236]{color:var(--text-meta);margin-right:4px}.kb-card__reply[data-v-efc67236]{border-top:1px dashed var(--border-color-light);border-left:2px solid var(--border-color-light);font-size:var(--font-size-xs);color:var(--text-secondary);word-break:break-word;align-items:flex-start;margin:6px 0 0;padding:6px 0 0;line-height:1.5;display:flex}.kb-card__reply-text[data-v-efc67236]{-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.kb-card__actions[data-v-efc67236]{opacity:0;pointer-events:none;transition:opacity var(--transition-fast) var(--ease-custom);align-items:center;gap:2px;padding-left:12px;display:inline-flex;position:absolute;bottom:6px;right:8px}.kb-card:hover .kb-card__actions[data-v-efc67236],.kb-card:focus-visible .kb-card__actions[data-v-efc67236]{opacity:1;pointer-events:auto}.kb-card:has(:focus-visible) .kb-card__actions[data-v-efc67236]{opacity:1;pointer-events:auto}.kb-card:hover .kb-card__live[data-v-efc67236]>:last-child,.kb-card:focus-visible .kb-card__live[data-v-efc67236]>:last-child,.kb-card:hover .kb-card__reply[data-v-efc67236],.kb-card:focus-visible .kb-card__reply[data-v-efc67236]{-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 118px), transparent calc(100% - 102px)), var(--kb-mask-outside-band);-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 118px), transparent calc(100% - 102px)), var(--kb-mask-outside-band);mask-image:linear-gradient(to right, #000 calc(100% - 118px), transparent calc(100% - 102px)), var(--kb-mask-outside-band);-webkit-mask-composite:source-over;-webkit-mask-composite:source-over;mask-composite:add}.kb-card:has(:focus-visible) .kb-card__live[data-v-efc67236]>:last-child{-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 118px), transparent calc(100% - 102px)), var(--kb-mask-outside-band);-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 118px), transparent calc(100% - 102px)), var(--kb-mask-outside-band);mask-image:linear-gradient(to right, #000 calc(100% - 118px), transparent calc(100% - 102px)), var(--kb-mask-outside-band);-webkit-mask-composite:source-over;-webkit-mask-composite:source-over;mask-composite:add}.kb-card:has(:focus-visible) .kb-card__reply[data-v-efc67236]{-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 118px), transparent calc(100% - 102px)), var(--kb-mask-outside-band);-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 118px), transparent calc(100% - 102px)), var(--kb-mask-outside-band);mask-image:linear-gradient(to right, #000 calc(100% - 118px), transparent calc(100% - 102px)), var(--kb-mask-outside-band);-webkit-mask-composite:source-over;-webkit-mask-composite:source-over;mask-composite:add}.kb-card:hover .kb-card__row1:not(:has(~:not(.kb-card__actions))) .kb-card__title[data-v-efc67236]{-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 68px), transparent calc(100% - 52px)), var(--kb-mask-outside-band);-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 68px), transparent calc(100% - 52px)), var(--kb-mask-outside-band);mask-image:linear-gradient(to right, #000 calc(100% - 68px), transparent calc(100% - 52px)), var(--kb-mask-outside-band);-webkit-mask-composite:source-over;-webkit-mask-composite:source-over;mask-composite:add}.kb-card:focus-visible .kb-card__row1:not(:has(~:not(.kb-card__actions))) .kb-card__title[data-v-efc67236]{-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 68px), transparent calc(100% - 52px)), var(--kb-mask-outside-band);-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 68px), transparent calc(100% - 52px)), var(--kb-mask-outside-band);mask-image:linear-gradient(to right, #000 calc(100% - 68px), transparent calc(100% - 52px)), var(--kb-mask-outside-band);-webkit-mask-composite:source-over;-webkit-mask-composite:source-over;mask-composite:add}.kb-card:has(:focus-visible) .kb-card__row1:not(:has(~:not(.kb-card__actions))) .kb-card__title[data-v-efc67236]{-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 68px), transparent calc(100% - 52px)), var(--kb-mask-outside-band);-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 68px), transparent calc(100% - 52px)), var(--kb-mask-outside-band);mask-image:linear-gradient(to right, #000 calc(100% - 68px), transparent calc(100% - 52px)), var(--kb-mask-outside-band);-webkit-mask-composite:source-over;-webkit-mask-composite:source-over;mask-composite:add}.kb-card__btn[data-v-efc67236]{color:var(--text-meta);font-size:var(--font-size-xs);border-radius:var(--radius-base);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom);background:0 0;border:none;padding:0 5px;line-height:18px}.kb-card__btn[data-v-efc67236]:hover{color:var(--color-primary);background:var(--bg-subtle-hover)}.kb-card__btn--danger[data-v-efc67236]{font-size:var(--font-size-base);padding:0 4px}.kb-card__btn--danger[data-v-efc67236]:hover{color:var(--color-danger-light)}.kb-card__btn--stop[data-v-efc67236]:hover{color:var(--color-warning-dark);background:var(--bg-subtle-hover)}.kb-card__btn--done[data-v-efc67236]:hover{color:var(--color-success-dark);background:var(--bg-subtle-hover)}.kb-card__btn[data-v-efc67236]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.kb-card__retry[data-v-efc67236]{border:1px solid var(--role-error-edge);border-radius:var(--radius-pill);background:var(--surface-elevated);color:var(--role-error-ink);font-size:var(--font-size-xs);cursor:pointer;transition:background var(--transition-fast) var(--ease-custom);margin-top:6px;padding:2px 10px;line-height:18px;display:inline-block}.kb-card__retry[data-v-efc67236]:hover{background:var(--role-error-surface)}.kb-card__retry[data-v-efc67236]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.kb-col__empty[data-v-efc67236]{text-align:center;font-size:var(--font-size-xs);color:var(--text-meta);border:1px dashed var(--border-color-light);border-radius:var(--radius-lg);background:var(--bg-subtle);margin:0 2px;padding:18px 8px;list-style:none}.kb-col__add[data-v-efc67236]{margin:0;padding:0;list-style:none}.kb-col__add-btn[data-v-efc67236]{width:100%;font-size:var(--font-size-xs);color:var(--text-meta);border:1px dashed var(--border-color-medium);border-radius:var(--radius-lg);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;justify-content:center;align-items:center;gap:5px;padding:5px 10px;line-height:20px;display:flex}.kb-col__add-btn[data-v-efc67236]:hover{color:var(--color-primary);border-color:var(--color-primary);background:var(--bg-subtle)}.kb-col__add-btn[data-v-efc67236]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.kb-col__add-plus[data-v-efc67236]{font-size:var(--font-size-base);line-height:1}.kb-col__add-btn--solo[data-v-efc67236]{padding:18px 8px}.kb__table-wrap[data-v-efc67236]{flex:auto;min-height:0;overflow:auto}.kb-table[data-v-efc67236]{table-layout:fixed;border-collapse:collapse;width:100%;font-size:var(--font-size-sm)}.kb-table__th[data-v-efc67236]{z-index:1;text-align:left;font-size:var(--font-size-xs);color:var(--text-meta);background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-filter);border-bottom:1px solid var(--border-color);white-space:nowrap;padding:7px 10px;font-weight:500;position:sticky;top:0}.kb-table__th--narrow[data-v-efc67236]{width:96px}.kb-table__th--time[data-v-efc67236]{width:148px}.kb-table__row[data-v-efc67236]{cursor:pointer;transition:background var(--transition-fast) var(--ease-custom)}.kb-table__row[data-v-efc67236]:hover{background:var(--bg-container-hover)}.kb-table__td[data-v-efc67236]{border-bottom:1px solid var(--border-color);color:var(--text-secondary);vertical-align:middle;padding:8px 10px}.kb-table__td--num[data-v-efc67236]{font-variant-numeric:tabular-nums}.kb-table__time[data-v-efc67236]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.kb-table__dur[data-v-efc67236]{color:var(--text-primary)}.kb-table__time-sep[data-v-efc67236]{opacity:.55;margin:0 3px}.kb-table__name[data-v-efc67236]{color:var(--text-primary)}.kb-table__shots[data-v-efc67236]{color:var(--text-secondary);font-family:inherit;font-size:var(--font-size-xs);cursor:zoom-in;background:0 0;border:none;margin-right:6px;padding:0}.kb-table__shots[data-v-efc67236]:hover{color:var(--color-primary)}.kb-table__shots[data-v-efc67236]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.kb-table__live[data-v-efc67236]{font-size:var(--font-size-xs);color:var(--text-meta);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;display:block;overflow:hidden}.kb-table__live-silent[data-v-efc67236]{color:var(--color-warning-dark);margin-left:6px}.kb-table__live--reply[data-v-efc67236]{color:var(--text-secondary);padding-left:8px}.kb-table__status[data-v-efc67236]{font-size:var(--font-size-xs);border-radius:var(--radius-base);background:var(--bg-subtle);color:var(--text-secondary);padding:1px 6px}.kb-table__status.is-doing[data-v-efc67236]{color:var(--color-warning-dark)}.kb-table__status.is-done[data-v-efc67236]{color:var(--color-success-dark)}.kb-table__empty[data-v-efc67236]{text-align:center;color:var(--text-meta);padding:28px 10px}@media (width<=860px){.kb__columns[data-v-efc67236]{display:block;overflow-y:auto}.kb-col[data-v-efc67236]{border-left:none;border-top:1px solid var(--border-color)}.kb-col[data-v-efc67236]:first-child{border-top:none}.kb-col__list[data-v-efc67236]{overflow:visible}.kb-col.is-collapsed[data-v-efc67236]{border-top-color:#0000;height:0}}.tep[data-v-beca42f2]{vertical-align:middle}.tep__btn[data-v-beca42f2]{border:1px solid var(--border-color);border-radius:var(--radius-pill);background:var(--bg-panel);height:22px;color:var(--text-secondary);font-size:var(--font-size-xs);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom);align-items:center;gap:5px;padding:0 8px;display:inline-flex}.tep__btn[data-v-beca42f2]:hover,.tep__btn[data-v-beca42f2]:focus-visible{color:var(--color-primary);border-color:var(--color-primary)}.tep__btn[data-v-beca42f2]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.tep__btn-icon[data-v-beca42f2]{font-size:var(--font-size-mid)}.tep__btn-caret[data-v-beca42f2]{font-size:var(--font-size-xs);opacity:.7}.tep__item[data-v-beca42f2]{align-items:center;gap:8px;min-width:132px;display:inline-flex}.tep__item-icon[data-v-beca42f2]{font-size:var(--font-size-base);flex:none}.tep__item-name[data-v-beca42f2]{flex:1}.tep__item-model[data-v-beca42f2]{white-space:nowrap;text-overflow:ellipsis;max-width:15em;font-size:var(--font-size-xs);color:var(--text-meta);flex:none;overflow:hidden}.tep__item-check[data-v-beca42f2]{color:var(--color-primary);font-size:var(--font-size-sm)}.tep__item-missing[data-v-beca42f2]{font-size:var(--font-size-xs);color:var(--text-meta,var(--text-secondary))}.acs[data-v-5aa33822]{flex-direction:column;flex:1;min-height:0;display:flex}.acs__head[data-v-5aa33822]{border-bottom:1px solid var(--border-color-light);flex:none;align-items:center;gap:6px;height:32px;padding:0 8px;display:flex}.acs__title[data-v-5aa33822]{font-size:var(--font-size-xs);letter-spacing:.06em;color:var(--text-meta);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-weight:700;overflow:hidden}.acs__spacer[data-v-5aa33822]{flex:1}.acs__engine[data-v-5aa33822]{flex:none}.acs__icon-btn[data-v-5aa33822]{border-radius:var(--radius-xs);width:22px;height:22px;color:var(--text-meta);cursor:pointer;transition:var(--transition-ui-fast);background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.acs__icon-btn[data-v-5aa33822]:hover{background:var(--bg-hover);color:var(--text-secondary)}.acs__body[data-v-5aa33822]{flex:1;grid-template:"stage"minmax(0,1fr)"composer"/minmax(0,1fr);min-height:0;display:grid}.acs__body.is-wide[data-v-5aa33822]{grid-template-columns:240px minmax(0,1fr);grid-template-areas:"list chat""list composer"}.acs__convs[data-v-5aa33822]{grid-area:stage;min-height:0;padding:8px;overflow-y:auto}.acs__chat[data-v-5aa33822]{grid-area:stage;min-height:0;display:flex}.acs__body.is-wide .acs__convs[data-v-5aa33822]{grid-area:list}.acs__body.is-wide .acs__chat[data-v-5aa33822]{grid-area:chat}.acs__composer[data-v-5aa33822]{padding:var(--acu-space-3) var(--acu-space-4) var(--acu-space-4);background:linear-gradient(to top, var(--acu-bg) 70%, transparent);grid-area:composer}.acs__composer[data-v-5aa33822] .acu-input-queue{--acu-queue-edge:var(--role-pending-edge);--acu-queue-surface:var(--role-pending-surface);--acu-queue-ink:var(--role-pending-ink);--acu-queue-wash:var(--role-pending-wash)}.acs__chat[data-v-5aa33822]>.acu-chat{flex:1;min-width:0}.acs__chat[data-v-5aa33822] .acu-avatar--left{background:0 0}.acs__chat[data-v-5aa33822] .acu-bubble-row.is-assistant .acu-bubble-main{width:var(--acu-bubble-max-width);max-width:var(--acu-bubble-max-width);position:relative}.acs__chat[data-v-5aa33822] .acu-bubble-row.is-assistant .acu-bubble{align-self:flex-start}.acs__chat[data-v-5aa33822] .acu-message-meta{margin:0;position:absolute;top:0;right:0}.acs__foot[data-v-5aa33822]{border-top:1px solid var(--border-color-light);flex-wrap:wrap;flex:none;align-items:center;gap:6px;padding:6px 8px;display:flex}.acs__foot-label[data-v-5aa33822]{font-size:var(--font-size-xs);color:var(--text-meta)}.acs__foot-hint[data-v-5aa33822]{font-size:var(--font-size-xs);color:var(--text-meta);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.acs__notice[data-v-5aa33822]{font-size:var(--font-size-xs);color:var(--color-warning-dark);margin:0;line-height:1.5}.oc[data-v-6516e4a1]{width:var(--wb-right-w,300px);border-left:1px solid var(--border-color-light);background:var(--bg-panel);min-height:0;transition:width var(--transition-base) var(--ease-custom);flex-direction:column;flex-shrink:0;display:flex}.board__cols.is-resizing .oc[data-v-6516e4a1]{transition:none}.oc.is-collapsed[data-v-6516e4a1]{width:32px}.oc__rail[data-v-6516e4a1]{width:100%;min-height:0;color:var(--text-meta);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-direction:column;flex:auto;align-items:center;gap:8px;padding:10px 0;display:flex}.oc__rail[data-v-6516e4a1]:hover{color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 8%, transparent)}.oc__rail[data-v-6516e4a1]:focus-visible{outline:var(--focus-outline);outline-offset:-2px}.oc__rail-icon[data-v-6516e4a1]{font-size:var(--font-size-base);flex-shrink:0}.oc__rail-live[data-v-6516e4a1]{background:var(--color-success);width:6px;height:6px;box-shadow:var(--dot-glow-success);border-radius:50%;flex-shrink:0;animation:1.6s ease-in-out infinite oc-pulse-6516e4a1}.oc__rail-live.is-off[data-v-6516e4a1]{background:var(--color-warning);box-shadow:var(--dot-glow-warning);animation:none}.oc__rail-text[data-v-6516e4a1]{writing-mode:vertical-rl;letter-spacing:1px;font-size:var(--font-size-sm);color:var(--text-secondary);-webkit-user-select:none;user-select:none}.oc__head[data-v-6516e4a1]{border-bottom:1px solid var(--border-color);flex-shrink:0;align-items:center;gap:8px;padding:10px 12px;display:flex}.oc__live[data-v-6516e4a1]{background:var(--color-success);width:6px;height:6px;box-shadow:var(--dot-glow-success);border-radius:50%;flex-shrink:0;animation:1.6s ease-in-out infinite oc-pulse-6516e4a1}.oc__live.is-off[data-v-6516e4a1]{background:var(--color-warning);box-shadow:var(--dot-glow-warning);animation:none}@keyframes oc-pulse-6516e4a1{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(1.35)}}.oc__title[data-v-6516e4a1]{font-size:var(--font-size-mid);letter-spacing:.01em;color:var(--text-primary);flex:1;min-width:0;margin:0;font-weight:600}.oc__toggle[data-v-6516e4a1]{border:1px solid var(--border-color);border-radius:var(--radius-pill);background:var(--surface-elevated);height:22px;color:var(--text-secondary);font-size:var(--font-size-xs);white-space:nowrap;cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);flex-shrink:0;align-items:center;padding:0 10px;font-family:inherit;font-weight:500;display:inline-flex}.oc__toggle[data-v-6516e4a1]:hover:not(:disabled),.oc__toggle.is-off[data-v-6516e4a1]{color:var(--role-active-ink);border-color:var(--role-active-edge);background:var(--role-active-surface)}.oc__toggle.is-off[data-v-6516e4a1]:hover:not(:disabled){border-color:var(--role-active-ink)}.oc__toggle[data-v-6516e4a1]:disabled{opacity:var(--disabled-opacity);cursor:default}.oc__toggle[data-v-6516e4a1]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.oc__collapse[data-v-6516e4a1]{width:22px;height:22px;color:var(--text-meta);border-radius:var(--radius-base);font-size:var(--font-size-mid);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.oc__collapse[data-v-6516e4a1]:hover{color:var(--color-primary)}.oc__collapse[data-v-6516e4a1]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.oc__state[data-v-6516e4a1]{font-size:var(--font-size-xs);color:var(--text-secondary);background:var(--bg-subtle);border-bottom:1px solid var(--border-color-light);flex-shrink:0;align-items:baseline;gap:8px;padding:9px 12px;display:flex}.oc__state.is-paused[data-v-6516e4a1]{color:var(--role-active-ink);background:var(--role-active-surface);border-bottom-color:var(--role-active-edge)}.oc__state-label[data-v-6516e4a1]{color:var(--text-meta)}.oc__state-value[data-v-6516e4a1]{font-size:var(--font-size-sm);color:var(--text-primary);margin-left:2px;font-weight:600}.oc__state.is-paused .oc__state-value[data-v-6516e4a1]{color:var(--role-active-ink)}.oc__state-meta[data-v-6516e4a1]{color:var(--text-meta);font-variant-numeric:tabular-nums;margin-left:auto}.oc__mode[data-v-6516e4a1]{border-radius:var(--radius-pill);background:var(--bg-subtle);border:1px solid var(--border-color);flex-shrink:0;gap:2px;margin:8px 12px 0;padding:2px;display:flex}.oc__mode-btn[data-v-6516e4a1]{border-radius:var(--radius-pill);height:22px;color:var(--text-meta);font-size:var(--font-size-xs);cursor:pointer;transition:var(--transition-ui-fast);background:0 0;border:none;flex:1}.oc__mode-btn[data-v-6516e4a1]:hover{color:var(--text-secondary)}.oc__mode-btn.is-active[data-v-6516e4a1]{background:color-mix(in srgb, var(--color-primary) 10%, var(--bg-panel));color:var(--color-primary-dark);box-shadow:var(--shadow-sm);font-weight:600}html.dark .oc__mode-btn.is-active[data-v-6516e4a1]{color:var(--color-primary-light)}.oc__mode-btn[data-v-6516e4a1]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.oc__chat[data-v-6516e4a1]{min-height:0}.oc__report[data-v-6516e4a1]{flex-direction:column;flex:auto;min-height:0;padding:8px 0 0;display:flex}.oc__report.is-empty .oc__report-list[data-v-6516e4a1]{justify-content:center;align-items:center;display:flex}.oc.is-report-empty .oc__input[data-v-6516e4a1]{min-height:168px}.oc__panel-title[data-v-6516e4a1]{font-size:var(--font-size-sm);color:var(--text-secondary);flex-shrink:0;align-items:center;gap:6px;margin:0 12px 6px;font-weight:600;display:flex}.oc__report-head[data-v-6516e4a1]{flex-shrink:0;align-items:center;gap:6px;margin:0 12px 6px;display:flex}.oc__report-head .oc__panel-title[data-v-6516e4a1]{flex:1;min-width:0;margin:0}.oc__interval[data-v-6516e4a1]{max-width:116px;height:22px;font-size:var(--font-size-xs);color:var(--text-secondary);background:var(--surface-elevated);border:1px solid var(--border-color);border-radius:var(--radius-pill);cursor:pointer;transition:border-color var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);outline:none;flex-shrink:0;padding:0 2px 0 6px;font-family:inherit}.oc__interval[data-v-6516e4a1]:hover{color:var(--text-primary);border-color:var(--border-color)}.oc__interval[data-v-6516e4a1]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.oc__report-run[data-v-6516e4a1]{border:1px solid var(--border-color);border-radius:var(--radius-pill);background:var(--surface-elevated);height:22px;color:var(--text-secondary);font-size:var(--font-size-xs);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom);flex-shrink:0;align-items:center;gap:3px;padding:0 8px;font-family:inherit;display:inline-flex}.oc__report-run[data-v-6516e4a1]:hover:not(:disabled){color:var(--color-primary);border-color:var(--color-primary)}.oc__report-run[data-v-6516e4a1]:disabled{opacity:var(--disabled-opacity);cursor:default}.oc__report-run[data-v-6516e4a1]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.oc__report-run-icon[data-v-6516e4a1]{font-size:var(--font-size-xs)}.oc__report-run-icon.is-spin[data-v-6516e4a1]{animation:1s linear infinite oc-spin-6516e4a1}@keyframes oc-spin-6516e4a1{to{transform:rotate(360deg)}}.oc__report-list[data-v-6516e4a1]{flex:auto;min-height:0;margin:0;padding:0 12px 12px;list-style:none;overflow-y:auto}.rp[data-v-6516e4a1]{border-radius:var(--radius-lg);background:var(--surface-elevated);border:1px solid var(--border-color);border-top:2px solid var(--role-active-bar);box-shadow:var(--shadow-sm);padding:10px 11px}.rp__head[data-v-6516e4a1]{font-size:var(--font-size-xs);align-items:center;gap:6px;margin-bottom:6px;display:flex}.rp__trigger[data-v-6516e4a1]{color:var(--color-primary);font-weight:500}.rp__trigger.is-auto[data-v-6516e4a1]{color:var(--text-meta);font-weight:400}.rp__stale[data-v-6516e4a1]{border-radius:var(--radius-pill);background:var(--bg-active);color:var(--text-meta);padding:0 5px}.rp__count[data-v-6516e4a1]{border-radius:var(--radius-pill);background:var(--tint-primary-08);color:var(--color-primary);font-variant-numeric:tabular-nums;padding:0 5px}.rp__time[data-v-6516e4a1]{color:var(--text-meta);font-variant-numeric:tabular-nums;margin-left:auto}.rp__progress[data-v-6516e4a1]{align-items:center;gap:6px;margin:0 0 6px;display:flex}.rp__bar[data-v-6516e4a1]{border-radius:var(--radius-pill);background:var(--bg-active);flex:1;min-width:0;height:4px;overflow:hidden}.rp__bar-fill[data-v-6516e4a1]{border-radius:var(--radius-pill);background:var(--role-active-bar);height:100%;transition:width var(--transition-base) var(--ease-custom);display:block}.rp__percent[data-v-6516e4a1]{font-size:var(--font-size-xs);color:var(--text-secondary);font-variant-numeric:tabular-nums;flex-shrink:0}.rp__percent-tag[data-v-6516e4a1]{color:var(--text-meta);margin-right:4px}.rp__body[data-v-6516e4a1]{padding-left:10px}.rp__text[data-v-6516e4a1]{font-size:var(--font-size-mid);color:var(--text-primary);word-break:break-word;white-space:pre-wrap;max-height:9.6em;margin:0;line-height:1.6;overflow:hidden}.rp__text.is-expanded[data-v-6516e4a1]{max-height:none}.rp__text.is-clamped[data-v-6516e4a1]{-webkit-mask-image:linear-gradient(#000 calc(100% - 1.8em),#0000);mask-image:linear-gradient(#000 calc(100% - 1.8em),#0000)}.rp__more[data-v-6516e4a1]{border-radius:var(--radius-pill);background:var(--tint-primary-08);color:var(--color-primary);font-size:var(--font-size-xs);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);border:none;align-items:center;gap:2px;margin:6px 0 0;padding:2px 9px;font-family:inherit;font-weight:500;display:inline-flex}.rp__more[data-v-6516e4a1]:hover{color:var(--color-primary-dark);background:color-mix(in srgb, var(--color-primary) 14%, transparent)}.rp__more[data-v-6516e4a1]:focus-visible{outline:var(--focus-outline);outline-offset:2px}.rp__notice[data-v-6516e4a1]{font-size:var(--font-size-xs);color:var(--text-meta);margin:0;line-height:1.55}.rp__facts[data-v-6516e4a1]{border-top:1px solid var(--border-color);margin:9px 0 0;padding-top:7px}.rp__facts.is-collapsed[data-v-6516e4a1]{margin-top:7px}.rp__facts-toggle[data-v-6516e4a1]{font-size:var(--font-size-xs);margin-bottom:0}.rp__facts:not(.is-collapsed) .rp__facts-toggle[data-v-6516e4a1]{margin-bottom:5px}.rp__facts-toggle .oc__sect-title[data-v-6516e4a1]{letter-spacing:.04em}.rp__tasks[data-v-6516e4a1]{flex-direction:column;gap:5px;margin:0;padding:0;list-style:none;display:flex}.rpt[data-v-6516e4a1]{border-radius:var(--radius-md);background:var(--bg-panel);border:1px solid var(--border-color-light);min-width:0;padding:7px 9px}.rpt.is-silent[data-v-6516e4a1]{border-color:var(--role-active-edge);background:var(--role-active-surface)}.rpt__title[data-v-6516e4a1]{font-size:var(--font-size-sm);color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;margin:0;font-weight:600;overflow:hidden}.rpt__meta[data-v-6516e4a1]{font-size:var(--font-size-xs);color:var(--text-meta);font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:2px 6px;margin:1px 0 0;display:flex}.rpt__meta>span+span[data-v-6516e4a1]:before{content:"·";color:var(--text-meta);margin-right:6px}.rpt__project[data-v-6516e4a1]{color:var(--text-secondary)}.rpt__progress[data-v-6516e4a1]{align-items:center;gap:6px;margin:3px 0 0;display:flex}.rpt__bar[data-v-6516e4a1]{border-radius:var(--radius-pill);background:var(--bg-active);flex:1;min-width:0;height:3px;overflow:hidden}.rpt__bar-fill[data-v-6516e4a1]{border-radius:var(--radius-pill);background:var(--role-active-bar);height:100%;transition:width var(--transition-base) var(--ease-custom);display:block}.rpt__percent[data-v-6516e4a1]{text-align:right;min-width:30px;font-size:var(--font-size-xs);color:var(--text-meta);font-variant-numeric:tabular-nums;flex-shrink:0}.rpt__silent[data-v-6516e4a1]{border-radius:var(--radius-pill);background:var(--tint-warning-14);color:var(--role-active-ink);padding:0 4px;font-weight:600}.rpt__line[data-v-6516e4a1]{font-size:var(--font-size-xs);color:var(--text-meta);-webkit-line-clamp:2;line-clamp:2;word-break:break-word;-webkit-box-orient:vertical;margin:3px 0 0;line-height:1.5;display:-webkit-box;overflow:hidden}.rpt__line.is-tool[data-v-6516e4a1]{-webkit-line-clamp:1;line-clamp:1}.rpt__line.is-thought[data-v-6516e4a1]{color:var(--text-secondary)}.rpt__tag[data-v-6516e4a1]{min-width:20px;color:var(--text-meta);margin-right:5px;font-weight:500;display:inline-block}.oc__sect[data-v-6516e4a1]{border-radius:var(--radius-base);width:100%;color:var(--text-meta);font-size:var(--font-size-xs);text-align:left;cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;border:none;align-items:center;gap:5px;margin:0 0 4px;padding:4px 6px;font-family:inherit;display:flex}.oc__sect[data-v-6516e4a1]:hover{color:var(--text-secondary);background:var(--bg-subtle)}.oc__sect[data-v-6516e4a1]:focus-visible{outline:var(--focus-outline);outline-offset:-2px}.oc__sect-caret[data-v-6516e4a1]{font-size:var(--font-size-sm);flex-shrink:0}.oc__sect-title[data-v-6516e4a1]{color:var(--text-secondary);flex-shrink:0;font-weight:500}.oc__sect-meta[data-v-6516e4a1]{align-items:center;gap:6px;min-width:0;margin-left:auto;display:flex}.oc__sect-meta .oc__git-name[data-v-6516e4a1]{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.oc__sect-brief[data-v-6516e4a1]{color:var(--text-meta);font-variant-numeric:tabular-nums;flex-shrink:0}.oc__history[data-v-6516e4a1]{border-top:1px solid var(--border-color);flex-shrink:0;max-height:132px;padding:6px 12px 8px;overflow-y:auto}.oc__history-list[data-v-6516e4a1]{margin:0;padding:0;list-style:none}.oc__history-item[data-v-6516e4a1]{border-radius:var(--radius-base);width:100%;color:var(--text-meta);font-size:var(--font-size-xs);text-align:left;cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);background:0 0;border:none;align-items:center;gap:6px;padding:3px 6px;font-family:inherit;display:flex}.oc__history-item[data-v-6516e4a1]:hover{background:var(--bg-subtle);color:var(--text-secondary)}.oc__history-item.is-active[data-v-6516e4a1]{background:color-mix(in srgb, var(--color-primary) 10%, transparent);color:var(--text-primary)}.oc__history-item[data-v-6516e4a1]:focus-visible{outline:var(--focus-outline);outline-offset:-2px}.oc__history-time[data-v-6516e4a1]{font-variant-numeric:tabular-nums;flex-shrink:0}.oc__history-pct[data-v-6516e4a1]{text-align:right;min-width:30px;color:var(--text-secondary);font-variant-numeric:tabular-nums;flex-shrink:0}.oc__history-sum[data-v-6516e4a1]{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.oc-empty[data-v-6516e4a1]{text-align:center;max-width:260px;font-size:var(--font-size-xs);color:var(--text-meta);border:1px dashed var(--border-color-light);border-radius:var(--radius-lg);background:var(--bg-subtle);margin:0 auto;padding:18px 10px;list-style:none}.oc__git[data-v-6516e4a1]{border-top:1px solid var(--border-color);flex-shrink:0;padding:8px 12px 10px}.oc__git-name[data-v-6516e4a1]{color:var(--text-secondary);font-weight:500}.oc__git-list[data-v-6516e4a1]{font-size:var(--font-size-xs);grid-template-columns:auto 1fr;gap:4px 10px;margin:0;display:grid}.oc__git-label[data-v-6516e4a1]{color:var(--text-meta)}.oc__git-value[data-v-6516e4a1]{text-align:right;color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.oc__git-value.is-warn[data-v-6516e4a1]{color:var(--color-warning-dark)}.oc__git-value.is-danger[data-v-6516e4a1]{color:var(--color-danger-light)}.oc__git.is-collapsed[data-v-6516e4a1],.oc__history.is-collapsed[data-v-6516e4a1]{padding-top:4px;padding-bottom:4px}.oc__history.is-collapsed[data-v-6516e4a1]{max-height:none;overflow:visible}.oc__git.is-collapsed .oc__sect[data-v-6516e4a1],.oc__history.is-collapsed .oc__sect[data-v-6516e4a1]{margin-bottom:0}.oc__compose[data-v-6516e4a1]{border-top:1px solid var(--border-color);flex-shrink:0;padding:8px 12px 10px}.oc__input[data-v-6516e4a1]{resize:vertical;width:100%;min-height:76px;max-height:min(380px,45vh);font-size:var(--font-size-mid);color:var(--text-primary);background:var(--input-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);transition:border-color var(--transition-fast) var(--ease-custom), box-shadow var(--transition-fast) var(--ease-custom);outline:none;padding:9px 10px;font-family:inherit;line-height:1.5}.oc__input[data-v-6516e4a1]:focus{border-color:var(--input-border-focus);box-shadow:var(--input-shadow-focus)}.oc__input[data-v-6516e4a1]::placeholder{color:var(--text-meta)}.oc__input.is-over[data-v-6516e4a1]{border-color:var(--color-danger);box-shadow:0 0 0 1px var(--color-danger)}.oc__count[data-v-6516e4a1]{text-align:right;font-size:var(--font-size-xs);font-variant-numeric:tabular-nums;color:var(--text-meta);margin:5px 2px 0}.oc__count.is-warn[data-v-6516e4a1]{color:var(--color-warning-dark)}.oc__count.is-over[data-v-6516e4a1]{color:var(--color-danger-dark)}.oc__compose-foot[data-v-6516e4a1]{flex-wrap:wrap;align-items:center;gap:6px 8px;margin-top:6px;display:flex}.oc__attach[data-v-6516e4a1]{width:26px;height:26px;color:var(--text-meta);font-size:var(--font-size-base);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.oc__attach[data-v-6516e4a1]:hover:not(:disabled),.oc__attach.is-on[data-v-6516e4a1]{color:var(--color-primary)}.oc__attach[data-v-6516e4a1]:disabled{opacity:var(--disabled-opacity);cursor:default}.oc__attach[data-v-6516e4a1]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.oc__autorn[data-v-6516e4a1]{font-size:var(--font-size-xs);color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:4px;display:inline-flex}.oc__autorn input[data-v-6516e4a1]{cursor:pointer;accent-color:var(--color-primary)}.oc__send[data-v-6516e4a1]{border-radius:var(--radius-md);background:var(--gradient-accent);box-shadow:var(--btn-shadow);color:#fff;font-size:var(--font-size-sm);cursor:pointer;transition:box-shadow var(--transition-fast) var(--ease-custom), opacity var(--transition-fast) var(--ease-custom);border:none;align-items:center;gap:4px;margin-left:auto;padding:0 14px;font-weight:500;line-height:28px;display:inline-flex}.oc__send[data-v-6516e4a1]:hover:not(:disabled){background:var(--gradient-accent-hover);box-shadow:var(--btn-shadow-hover)}.oc__send[data-v-6516e4a1]:disabled{opacity:var(--disabled-opacity);cursor:default}.oc__send[data-v-6516e4a1]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.oc__send-icon[data-v-6516e4a1]{font-size:var(--font-size-sm)}.oc__hint[data-v-6516e4a1]{font-size:var(--font-size-xs);color:var(--text-meta);margin:6px 0 0;line-height:1.5}@media (width<=860px){.oc[data-v-6516e4a1]{border-left:none;border-top:1px solid var(--border-color);order:-1;min-height:72vh}.oc__collapse[data-v-6516e4a1]{display:none}.rp__text[data-v-6516e4a1]{max-height:none}.oc__report-list[data-v-6516e4a1]{overflow:visible}}.pd[data-v-5d14f0f1]{flex-direction:column;gap:14px;line-height:1.5;display:flex}.pd__intro[data-v-5d14f0f1]{font-size:var(--font-size-sm);color:var(--text-meta);margin:0;line-height:1.6}.pd__field[data-v-5d14f0f1]{flex-direction:column;gap:5px;display:flex}.pd__head[data-v-5d14f0f1]{align-items:baseline;gap:8px;display:flex}.pd__label[data-v-5d14f0f1]{font-size:var(--font-size-sm);color:var(--text-secondary);font-weight:500}.pd__count[data-v-5d14f0f1]{font-size:var(--font-size-xs);color:var(--text-meta);font-variant-numeric:tabular-nums;margin-left:auto}.pd__area[data-v-5d14f0f1]{box-sizing:border-box;resize:vertical;width:100%;min-height:92px;max-height:280px;font-size:var(--font-size-mid);color:var(--text-primary);background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-md);transition:border-color var(--transition-fast) var(--ease-custom);outline:none;padding:7px 9px;font-family:inherit;line-height:1.5}.pd__area[data-v-5d14f0f1]:focus{border-color:var(--color-primary)}.pd__area[data-v-5d14f0f1]::placeholder{color:var(--text-meta)}.pd__area[data-v-5d14f0f1]:disabled{opacity:var(--disabled-opacity);cursor:not-allowed}.pd__hint[data-v-5d14f0f1]{font-size:var(--font-size-xs);color:var(--text-meta);margin:0;line-height:1.6}.pd__foot[data-v-5d14f0f1]{align-items:center;gap:8px;width:100%;display:flex}.pd__foot-spacer[data-v-5d14f0f1]{flex:1}.pd__btn[data-v-5d14f0f1]{color:var(--text-secondary);font-size:var(--font-size-sm);border-radius:var(--radius-md);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;border:none;padding:0 12px;line-height:28px}.pd__btn[data-v-5d14f0f1]:hover:not(:disabled){color:var(--color-primary);background:var(--bg-container-hover)}.pd__btn[data-v-5d14f0f1]:disabled{opacity:var(--disabled-opacity);cursor:default}.pd__btn[data-v-5d14f0f1]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.pd__btn--primary[data-v-5d14f0f1]{background:var(--color-primary);color:#fff}.pd__btn--primary[data-v-5d14f0f1]:hover:not(:disabled){background:var(--color-primary);color:#fff;opacity:.88}.nc[data-v-40a1a81b]{flex-direction:column;gap:14px;line-height:1.5;display:flex}.nc__field[data-v-40a1a81b]{flex-direction:column;gap:5px;display:flex}.nc__label[data-v-40a1a81b]{font-size:var(--font-size-sm);color:var(--text-secondary);font-weight:500}.nc__input[data-v-40a1a81b],.nc__select[data-v-40a1a81b]{width:100%;font-size:var(--font-size-mid);color:var(--text-primary);background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-md);transition:border-color var(--transition-fast) var(--ease-custom);box-sizing:border-box;outline:none;padding:7px 9px;font-family:inherit;line-height:1.5}.nc__input[data-v-40a1a81b]:focus,.nc__select[data-v-40a1a81b]:focus{border-color:var(--color-primary)}.nc__input[data-v-40a1a81b]::placeholder{color:var(--text-meta)}.nc__select[data-v-40a1a81b]{cursor:pointer}.nc__input--area[data-v-40a1a81b]{resize:vertical;min-height:92px;max-height:260px}.nc__hint[data-v-40a1a81b]{font-size:var(--font-size-xs);color:var(--text-meta);white-space:nowrap;text-overflow:ellipsis;margin:0;overflow:hidden}.nc__error[data-v-40a1a81b]{font-size:var(--font-size-sm);border-radius:var(--radius-md);color:var(--color-danger-light);background:color-mix(in srgb, var(--color-danger) 10%, transparent);margin:0;padding:6px 8px}.nc__foot[data-v-40a1a81b]{align-items:center;gap:8px;width:100%;display:flex}.nc__foot-spacer[data-v-40a1a81b]{flex:1}.nc__btn[data-v-40a1a81b]{color:var(--text-secondary);font-size:var(--font-size-sm);border-radius:var(--radius-md);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;border:none;padding:0 12px;line-height:28px}.nc__btn[data-v-40a1a81b]:hover:not(:disabled){color:var(--color-primary);background:var(--bg-container-hover)}.nc__btn[data-v-40a1a81b]:disabled{opacity:var(--disabled-opacity);cursor:default}.nc__btn[data-v-40a1a81b]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.nc__btn--primary[data-v-40a1a81b]{background:var(--color-primary);color:#fff}.nc__btn--primary[data-v-40a1a81b]:hover:not(:disabled){background:var(--color-primary);color:#fff;opacity:.88}.board[data-v-5da69428]{background:var(--bg-container);height:100%;min-height:0;color:var(--text-primary);--wb-left-w:264px;--wb-right-w:360px;flex-direction:column;display:flex}.board__top[data-v-5da69428]{border-bottom:1px solid var(--border-color-light);background:var(--bg-panel);background-image:var(--gradient-accent-soft);flex-shrink:0;align-items:center;gap:16px;height:52px;padding:0 12px;display:flex}.board__brand[data-v-5da69428]{align-items:center;gap:8px;min-width:0;display:flex}.board__live[data-v-5da69428]{background:var(--color-success);width:8px;height:8px;box-shadow:var(--dot-glow-success);border-radius:50%;flex-shrink:0;animation:1.6s ease-in-out infinite board-pulse-5da69428}.board__live.is-off[data-v-5da69428]{background:var(--color-warning);box-shadow:var(--dot-glow-warning);animation:none}@keyframes board-pulse-5da69428{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.4)}}.board__brand-text[data-v-5da69428]{min-width:0}.board__title[data-v-5da69428]{font-size:var(--font-size-lg);letter-spacing:var(--letter-spacing-heading);color:var(--text-primary);margin:0;font-weight:600;line-height:1.3}.board__subtitle[data-v-5da69428]{font-size:var(--font-size-sm);color:var(--text-meta);margin:0;line-height:1.3}.board__stats[data-v-5da69428]{flex-wrap:wrap;align-items:center;gap:12px;min-width:0;margin-left:4px;display:flex}.board__stat[data-v-5da69428]{font-size:var(--font-size-xs);color:var(--text-meta);align-items:baseline;gap:4px;display:inline-flex}.board__stat-value[data-v-5da69428]{font-size:var(--font-size-mid);color:var(--text-primary);font-variant-numeric:tabular-nums;font-weight:500}.board__stat-value.is-live[data-v-5da69428]{color:var(--color-warning-dark)}.board__icon-btn[data-v-5da69428]{color:var(--text-meta);border-radius:var(--radius-md);cursor:pointer;width:26px;height:26px;font-size:var(--font-size-base);transition:color var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex}.board__icon-btn[data-v-5da69428]:hover{color:var(--color-primary);background:var(--bg-subtle-hover)}.board__icon-btn[data-v-5da69428]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.board__scrim[data-v-5da69428]{display:none}.board__cols[data-v-5da69428]{flex:auto;min-height:0;display:flex;position:relative}.board__left[data-v-5da69428]{width:var(--wb-left-w);background:var(--bg-panel);flex-direction:column;flex-shrink:0;min-height:0;display:flex}.board__splitter[data-v-5da69428]{z-index:5;cursor:col-resize;touch-action:none;flex:0 0 5px;position:relative}.board__splitter[data-v-5da69428]:after{content:"";width:1px;transition:background var(--transition-fast) var(--ease-custom);background:0 0;position:absolute;top:0;bottom:0;left:2px}.board__splitter[data-v-5da69428]:hover:after,.board__splitter[data-v-5da69428]:active:after,.board__cols.is-resizing .board__splitter[data-v-5da69428]:after{background:var(--color-primary)}.board__main[data-v-5da69428]{background:var(--surface-canvas);flex-direction:column;flex:auto;min-width:0;min-height:0;display:flex}.board__main-head[data-v-5da69428]{flex-shrink:0;align-items:center;gap:8px;min-width:0;padding:8px 12px;display:flex}.board__main-title[data-v-5da69428]{flex:1;align-items:baseline;gap:8px;min-width:0;display:flex}.board__project-name[data-v-5da69428]{font-size:var(--font-size-base);color:var(--text-primary);white-space:nowrap;flex-shrink:0;margin:0;font-weight:500}.board__project-path[data-v-5da69428]{font-size:var(--font-size-xs);color:var(--text-meta);white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.board__project-meta[data-v-5da69428]{font-size:var(--font-size-xs);color:var(--text-meta);font-variant-numeric:tabular-nums;flex-shrink:0}@media (width<=1440px){.board[data-v-5da69428]{--wb-left-w:224px;--wb-right-w:320px}}@media (width<=1180px){.board[data-v-5da69428]{--wb-left-w:200px;--wb-right-w:280px}}@media (width>=1025px){.board__left[data-v-5da69428]{transition:width var(--transition-base) var(--ease-custom)}.board__left.is-collapsed[data-v-5da69428]{width:0;overflow:hidden}.board__cols.is-resizing .board__left[data-v-5da69428]{transition:none}}@media (width<=1024px){.board__splitter--left[data-v-5da69428]{display:none}.board__left[data-v-5da69428]{z-index:20;width:min(var(--wb-left-w), 86vw);background:var(--bg-container);border-right:1px solid var(--border-color);box-shadow:var(--dialog-shadow);transition:transform var(--transition-base) var(--ease-custom);position:absolute;top:0;bottom:0;left:0}.board__left.is-collapsed[data-v-5da69428]{pointer-events:none;transform:translate(-100%)}.board__scrim.is-on[data-v-5da69428]{z-index:15;display:block;position:absolute;inset:0}}@media (width<=860px){.board[data-v-5da69428]{--wb-right-w:100%}.board__splitter--right[data-v-5da69428]{display:none}.board__cols[data-v-5da69428]{flex-direction:column;overflow-y:auto}.board__main[data-v-5da69428]{flex:none;min-height:72vh}.board__top[data-v-5da69428]{flex-wrap:wrap;gap:6px 12px;height:auto;padding:8px 12px}.board__stats[data-v-5da69428]{flex-basis:100%;order:3;gap:12px;margin-left:0}}.workbench[data-v-94990db7]{background:var(--bg-container);height:100%;color:var(--text-primary);flex-direction:column;display:flex}.wb-editor[data-v-94990db7]{flex-direction:column;flex:auto;min-height:0;line-height:1.5;display:flex}.wb-editor-bar[data-v-94990db7]{border-bottom:1px solid var(--border-color-light);background:var(--bg-panel);background-image:var(--gradient-accent-soft);flex-shrink:0;align-items:center;gap:8px;height:34px;padding:0 12px;display:flex}.wb-back-btn[data-v-94990db7]{color:var(--text-secondary);font-size:var(--font-size-sm);border-radius:var(--radius-md);cursor:pointer;transition:color var(--transition-fast) var(--ease-custom);white-space:nowrap;background:0 0;border:none;align-items:center;gap:4px;padding:0 6px;line-height:22px;display:inline-flex}.wb-back-btn[data-v-94990db7]:hover{color:var(--color-primary)}.wb-back-btn[data-v-94990db7]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.wb-back-btn__icon[data-v-94990db7]{font-size:var(--font-size-mid)}.wb-editor-bar__project[data-v-94990db7]{font-size:var(--font-size-sm);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-weight:500;overflow:hidden}.wb-editor-bar__status[data-v-94990db7]{flex-shrink:100;align-items:center;min-width:0;display:inline-flex;overflow:hidden}.wb-editor-bar__status-pill[data-v-94990db7]{border-radius:var(--radius-pill);border:1px solid var(--role-pending-edge);background:var(--role-pending-wash);height:20px;color:var(--role-pending-ink);font-size:var(--font-size-xs);white-space:nowrap;flex-shrink:0;align-items:center;gap:5px;padding:0 8px 0 7px;font-weight:600;line-height:1;display:inline-flex}.wb-editor-bar__status-dot[data-v-94990db7]{background:currentColor;border-radius:50%;flex-shrink:0;width:6px;height:6px}.wb-editor-bar__status-label[data-v-94990db7]{text-overflow:ellipsis;min-width:0;overflow:hidden}.wb-editor-bar__status.is-running .wb-editor-bar__status-pill[data-v-94990db7]{border-color:var(--role-active-edge);background:var(--role-active-wash);color:var(--role-active-ink)}.wb-editor-bar__status.is-running .wb-editor-bar__status-dot[data-v-94990db7]{animation:1.4s ease-in-out infinite wb-bar-status-pulse-94990db7}.wb-editor-bar__status.is-done .wb-editor-bar__status-pill[data-v-94990db7]{border-color:var(--role-done-edge);background:var(--role-done-wash);color:var(--role-done-ink)}.wb-editor-bar__status.is-error .wb-editor-bar__status-pill[data-v-94990db7]{border-color:var(--role-error-edge);background:var(--role-error-wash);color:var(--role-error-ink)}@keyframes wb-bar-status-pulse-94990db7{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.7)}}@media (width<=620px){.wb-editor-bar__status[data-v-94990db7]{display:none}}.wb-editor-bar__hint[data-v-94990db7]{font-size:var(--font-size-xs);color:var(--text-meta);flex-shrink:0;margin-left:auto}.wb-editor-bar__time[data-v-94990db7]{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--font-size-xs);color:var(--text-meta);font-variant-numeric:tabular-nums;flex-shrink:100;margin-left:auto;overflow:hidden}.wb-editor-bar__spent[data-v-94990db7]{color:var(--text-secondary)}.wb-editor-bar__sep[data-v-94990db7]{opacity:.55;margin:0 5px}.wb-editor-bar__time+.wb-editor-bar__hint[data-v-94990db7]{margin-left:0}.wb-editor-bar__repo[data-v-94990db7]{text-overflow:ellipsis;white-space:nowrap;max-width:320px;font-size:var(--font-size-xs);border-radius:var(--radius-base);color:var(--color-warning-dark);background:color-mix(in srgb, var(--color-warning) 12%, transparent);font-variant-numeric:tabular-nums;flex-shrink:0;padding:0 6px;line-height:16px;overflow:hidden}.wb-task-desc[data-v-94990db7]{border-radius:var(--radius-md);background:var(--bg-subtle);flex-shrink:0;min-width:0;margin:0;padding:0;overflow:hidden}.wb-task-options[data-v-94990db7]{font-size:var(--font-size-sm);color:var(--text-secondary);align-items:center;gap:12px;padding:8px 12px 0;display:flex}.wb-task-desc[open][data-v-94990db7]{background:var(--bg-container)}.wb-task-desc__summary[data-v-94990db7]{cursor:pointer;font-size:var(--font-size-sm);color:var(--text-secondary);-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:8px 0;list-style:none;display:flex}.wb-task-desc__summary[data-v-94990db7]::-webkit-details-marker{display:none}.wb-task-desc__summary[data-v-94990db7]:hover{background:var(--bg-container-hover)}.wb-task-desc__caret[data-v-94990db7]{font-size:var(--font-size-sm);color:var(--text-meta);transition:transform var(--transition-fast)}.wb-task-desc__label[data-v-94990db7]{letter-spacing:.1px;font-weight:500}.wb-task-desc__tag[data-v-94990db7]{font-size:var(--font-size-xs);color:var(--color-primary);align-items:center;gap:5px;margin-left:auto;font-weight:600;display:inline-flex}.wb-task-desc__tag-attachment[data-v-94990db7]{border-radius:var(--radius-lg);background:var(--tint-primary-14);min-width:18px;height:16px;color:var(--color-primary);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;padding:0 5px;display:inline-flex}.wb-task-desc[open] .wb-task-desc__summary[data-v-94990db7]{margin-bottom:0}.wb-task-desc>.wb-textarea[data-v-94990db7],.wb-task-desc[data-v-94990db7]>.attachment-zone{margin:0 14px 0 0}.wb-task-desc>.wb-textarea[data-v-94990db7]{max-width:100%;margin-bottom:0}.wb-task-desc[data-v-94990db7]>.attachment-zone{margin-top:8px}.workbench__editor-row[data-v-94990db7]{flex:1;min-height:0;display:flex}.wb-splitter[data-v-94990db7]{cursor:col-resize;z-index:5;flex:0 0 5px;margin-right:-5px;position:relative}.wb-splitter[data-v-94990db7]:after{content:"";width:1px;transition:background var(--transition-fast) var(--ease-custom);background:0 0;position:absolute;top:0;bottom:0;left:2px}.wb-splitter[data-v-94990db7]:hover:after,.wb-splitter[data-v-94990db7]:active:after{background:var(--color-primary)}.wb-sidebar[data-v-94990db7]{background:var(--bg-panel);flex-direction:column;flex-shrink:0;gap:18px;width:268px;padding:14px 12px 18px;display:flex;overflow-y:auto}.wb-section[data-v-94990db7]{flex-direction:column;flex-shrink:0;gap:8px;min-height:0;display:flex}.wb-section+.wb-section[data-v-94990db7]{padding-top:16px}.wb-section__head[data-v-94990db7]{align-items:center;gap:6px;padding:0 4px;display:flex}.wb-section__tag[data-v-94990db7]{height:18px;font-size:var(--font-size-xs);letter-spacing:.4px;color:var(--text-meta);background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-base);text-transform:uppercase;font-variant-numeric:tabular-nums;flex-shrink:0;align-items:center;padding:0 6px;font-weight:600;display:inline-flex}.wb-section__tag--accent[data-v-94990db7]{color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 9%, transparent);border-color:var(--tint-primary-22)}.wb-section__title[data-v-94990db7]{font-size:var(--font-size-sm);color:var(--text-secondary);letter-spacing:.2px;flex:1;min-width:0;margin:0;font-weight:600}.wb-section__action[data-v-94990db7]{color:var(--text-meta);border-radius:var(--radius-base);cursor:pointer;width:28px;height:28px;font-size:var(--font-size-mid);transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.wb-section__action[data-v-94990db7]:hover{background:var(--tint-primary-12);color:var(--color-primary)}.wb-new-btn[data-v-94990db7]{border:1px dashed var(--tint-primary-35,color-mix(in srgb, var(--color-primary) 35%, transparent));border-radius:var(--radius-md);background:linear-gradient(135deg, color-mix(in srgb, var(--color-primary) 4%, transparent) 0%, color-mix(in srgb, var(--color-primary) 2%, transparent) 100%);width:100%;height:32px;color:var(--color-primary);font-size:var(--font-size-mid);letter-spacing:.05px;cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);align-items:center;gap:6px;padding:0 12px;font-weight:600;display:flex}.wb-new-btn__icon[data-v-94990db7]{font-size:var(--font-size-mid);transition:transform var(--transition-fast) var(--ease-custom);flex-shrink:0}.wb-new-btn__shortcut[data-v-94990db7]{display:none}.wb-new-btn[data-v-94990db7]:hover{background:linear-gradient(135deg, color-mix(in srgb, var(--color-primary) 10%, transparent) 0%, color-mix(in srgb, var(--color-primary) 6%, transparent) 100%);color:var(--color-primary);border-style:solid;border-color:var(--tint-primary-50)}.wb-new-btn:hover .wb-new-btn__icon[data-v-94990db7]{transform:rotate(90deg)}.wb-new-btn[data-v-94990db7]:active{transform:scale(.99)}.wb-new-btn[data-v-94990db7]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.wb-task-list[data-v-94990db7],.wb-prompt-list[data-v-94990db7]{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.wb-task-item[data-v-94990db7]{border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom), box-shadow var(--transition-fast) var(--ease-custom);background:0 0;border:none;align-items:center;gap:8px;padding:7px 10px;display:flex;position:relative}.wb-task-item[data-v-94990db7]:hover{background:var(--bg-container-hover);border-color:#0000;transform:translateY(-.5px)}.wb-task-item:hover .wb-task-item__del[data-v-94990db7]{opacity:1;transform:translate(0)}.wb-task-item.is-running[data-v-94990db7]{background:color-mix(in srgb, var(--color-warning) 8%, transparent)}.wb-task-item.is-running[data-v-94990db7]:hover{background:color-mix(in srgb, var(--color-warning) 14%, transparent);transform:none}.wb-task-item.active[data-v-94990db7]{background:color-mix(in srgb, var(--color-primary) 10%, var(--bg-container));box-shadow:0 1px 3px color-mix(in srgb, var(--color-primary) 12%, transparent), 0 0 0 1px color-mix(in srgb, var(--color-primary) 18%, transparent);border-color:#0000}.wb-task-item.active[data-v-94990db7]:after{content:"";border-radius:var(--radius-base);background:linear-gradient(180deg, var(--color-primary) 0%, color-mix(in srgb, var(--color-primary) 70%, #fff) 100%);width:3px;box-shadow:0 0 8px color-mix(in srgb, var(--color-primary) 50%, transparent), 0 1px 3px color-mix(in srgb, var(--color-primary) 25%, transparent);position:absolute;top:5px;bottom:5px;left:-1px}.wb-task-item.active .wb-task-item__title[data-v-94990db7]{color:var(--color-primary)}.wb-task-item.active .wb-task-item__del[data-v-94990db7]{opacity:1;color:var(--color-primary)}.wb-task-item__running-dot[data-v-94990db7]{background:var(--color-warning);width:6px;height:6px;box-shadow:0 0 0 0 color-mix(in srgb, var(--color-warning) 60%, transparent);border-radius:50%;flex:none;margin-left:auto;animation:1.4s ease-in-out infinite wb-running-pulse-94990db7}@keyframes wb-running-pulse-94990db7{0%,to{box-shadow:0 0 0 0 color-mix(in srgb, var(--color-warning) 60%, transparent);opacity:1;transform:scale(1)}50%{box-shadow:0 0 0 4px color-mix(in srgb, var(--color-warning) 0%, transparent);opacity:.75;transform:scale(1.35)}}.wb-task-item__body[data-v-94990db7]{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.wb-task-item__title[data-v-94990db7]{font-size:var(--font-size-sm);color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;letter-spacing:-.05px;font-weight:500;line-height:1.3;overflow:hidden}.wb-task-item__meta[data-v-94990db7]{font-size:var(--font-size-xs);color:var(--text-meta);align-items:center;gap:5px;line-height:1;display:flex}.wb-task-item__meta-item[data-v-94990db7]{font-variant-numeric:tabular-nums;align-items:center;gap:3px;font-weight:500;display:inline-flex}.wb-task-item__meta-item--accent[data-v-94990db7]{color:var(--color-primary)}.wb-task-item__meta-item--project[data-v-94990db7]{border-radius:var(--radius-md);background:color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 14%, transparent);height:15px;color:color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 80%, var(--text-primary));font-size:var(--font-size-xs);letter-spacing:.2px;white-space:nowrap;text-overflow:ellipsis;align-items:center;max-width:110px;padding:0 5px;font-weight:600;display:inline-flex;overflow:hidden}.wb-task-item.is-other-project[data-v-94990db7]{opacity:.78}.wb-task-item.is-other-project[data-v-94990db7]:hover{opacity:1}.wb-task-item__meta-icon[data-v-94990db7]{font-size:var(--font-size-xs);opacity:.85}.wb-task-item__num[data-v-94990db7]{min-width:14px;color:var(--text-secondary);transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);padding:0 4px}.wb-task-item.active .wb-task-item__num[data-v-94990db7]{color:var(--color-primary);background:var(--tint-primary-14)}.wb-task-item__meta-item--running .wb-task-item__num[data-v-94990db7]{color:color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 85%, var(--text-primary));background:color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 18%, transparent);font-weight:600}.wb-task-item.is-running .wb-task-item__meta-icon[data-v-94990db7]{color:color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 80%, var(--text-primary));animation:1.4s ease-in-out infinite wb-task-running-icon-94990db7}@keyframes wb-task-running-icon-94990db7{0%,to{opacity:.55}50%{opacity:1}}.wb-task-item__del[data-v-94990db7]{color:var(--text-meta);border-radius:var(--radius-md);cursor:pointer;width:22px;height:22px;font-size:var(--font-size-sm);opacity:0;transition:opacity var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex;transform:translate(-2px)}.wb-task-item__del[data-v-94990db7]:hover{background:color-mix(in srgb, var(--color-danger) 14%, transparent);color:var(--color-danger-dark)}.wb-task-item__del[data-v-94990db7]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset);opacity:1}.wb-task-item__del[data-v-94990db7],.wb-prompt-item__del[data-v-94990db7]{font-size:var(--font-size-mid)}.wb-prompt-item[data-v-94990db7]{border-radius:var(--radius-md);font-size:var(--font-size-mid);color:var(--text-primary);transition:background var(--transition-fast) var(--ease-custom);align-items:center;gap:8px;padding:7px 8px;display:flex;position:relative}.wb-prompt-item[data-v-94990db7]:hover{background:var(--bg-container-hover)}.wb-prompt-item:hover .wb-prompt-item__del[data-v-94990db7]{opacity:1}.wb-prompt-item__icon[data-v-94990db7]{border-radius:var(--radius-base);background:var(--tint-primary-08);width:22px;height:22px;color:var(--color-primary);font-size:var(--font-size-sm);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.wb-prompt-item__name[data-v-94990db7]{cursor:pointer;white-space:nowrap;text-overflow:ellipsis;min-width:0;color:var(--text-primary);letter-spacing:-.05px;flex:1;font-weight:500;overflow:hidden}.wb-prompt-item__tag[data-v-94990db7]{border-radius:var(--radius-xs);max-width:96px;font-size:var(--font-size-xs);letter-spacing:.1px;background:var(--tint-primary-08);color:var(--color-primary);white-space:nowrap;text-overflow:ellipsis;flex-shrink:0;padding:1px 6px;line-height:16px;overflow:hidden}.wb-prompt-item__tag--project[data-v-94990db7]{background:var(--bg-subtle);color:var(--text-secondary);border:1px solid var(--border-color-light)}.wb-prompt-item__del[data-v-94990db7]{color:var(--text-meta);border-radius:var(--radius-xs);cursor:pointer;width:20px;height:20px;font-size:var(--font-size-sm);opacity:0;transition:opacity var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.wb-prompt-item__del[data-v-94990db7]:hover{background:color-mix(in srgb, var(--color-danger) 14%, transparent);color:var(--color-danger-dark)}.wb-prompt-item__del[data-v-94990db7]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset);opacity:1}.wb-split[data-v-94990db7]{flex-direction:column;flex:1;gap:10px;min-height:0;padding:12px 24px 14px;display:flex;overflow:hidden}.wb-placeholder[data-v-94990db7]{color:var(--text-meta);font-size:var(--font-size-mid);flex:1;justify-content:center;align-items:center;display:flex}.wb-execution-body[data-v-94990db7]{border:none;border-radius:0;flex:1;grid-template-columns:1fr;gap:16px;min-height:0;display:grid;overflow:hidden}.wb-exec-detail[data-v-94990db7]{background:0 0;flex-direction:column;gap:14px;min-width:0;min-height:0;padding:4px 4px 8px;display:flex;overflow:auto}.wb-split__header[data-v-94990db7]{flex-shrink:0;align-items:center;gap:10px;padding-bottom:4px;padding-right:8px;display:flex}.wb-split__title-wrap[data-v-94990db7]{flex:1;align-items:center;gap:6px;min-width:0;display:flex}.wb-split__title-wrap .wb-input--title[data-v-94990db7]{flex:1;min-width:0}.wb-copy-btn[data-v-94990db7]{appearance:none;border-radius:var(--radius-lg);border:1px solid var(--border-color);background:var(--bg-container);width:28px;height:28px;color:var(--text-meta);cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.wb-copy-btn[data-v-94990db7]:hover:not(:disabled){background:var(--tint-primary-12);border-color:var(--tint-primary-35);color:var(--color-primary)}.wb-copy-btn[data-v-94990db7]:active:not(:disabled){transform:scale(.94)}.wb-copy-btn[data-v-94990db7]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.wb-copy-btn.is-flash[data-v-94990db7]{background:var(--tint-success-14,color-mix(in srgb, var(--color-success) 14%, transparent));border-color:var(--tint-success-35,color-mix(in srgb, var(--color-success) 35%, transparent));color:var(--color-success-dark)}.wb-copy-btn__icon[data-v-94990db7]{font-size:var(--font-size-mid);line-height:1}.wb-copy-btn__icon--check[data-v-94990db7]{font-size:var(--font-size-base);font-weight:800}.wb-copy-btn--inline[data-v-94990db7]{border-radius:var(--radius-md);width:22px;height:22px;margin-left:2px}.wb-copy-btn--inline .wb-copy-btn__icon[data-v-94990db7]{font-size:var(--font-size-xs)}@keyframes wb-ai-sparkle-pulse-94990db7{0%,to{opacity:.9;transform:scale(1)}50%{opacity:1;transform:scale(1.12)}}.wb-no-claude-hint[data-v-94990db7]{border:1px solid color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 32%, transparent);background:color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 8%, transparent);height:32px;color:color-mix(in srgb, var(--color-warning,var(--color-warning-light)) 75%, var(--text-primary));border-radius:var(--radius-md);font-size:var(--font-size-sm);white-space:nowrap;flex-shrink:0;align-items:center;gap:6px;padding:0 12px;font-weight:500;display:inline-flex}.wb-executor-split[data-v-94990db7]{flex-shrink:0}.wb-executor-split__hint[data-v-94990db7]{font-size:var(--font-size-xs);opacity:.85;border-left:1px solid #ffffff59;align-items:center;gap:4px;margin-left:6px;padding-left:8px;font-weight:400;display:inline-flex}.wb-executor-split__hint-icon[data-v-94990db7]{font-size:var(--font-size-sm)}.wb-executor-item[data-v-94990db7]{align-items:center;gap:8px;min-width:132px;display:inline-flex}.wb-executor-item__icon[data-v-94990db7]{font-size:var(--font-size-base);flex:none}.wb-executor-item__name[data-v-94990db7]{flex:1}.wb-executor-item__check[data-v-94990db7]{color:var(--el-color-primary)}.wb-executor-item__missing[data-v-94990db7]{font-size:var(--font-size-xs);color:var(--text-secondary,var(--el-text-color-secondary))}.wb-executor-item__model[data-v-94990db7]{white-space:nowrap;text-overflow:ellipsis;max-width:15em;font-size:var(--font-size-xs);color:var(--text-meta);flex:none;overflow:hidden}.wb-no-claude-hint__icon[data-v-94990db7]{font-size:var(--font-size-base);opacity:.9}.wb-no-claude-hint__text[data-v-94990db7]{letter-spacing:-.05px}.wb-no-claude-hint__link[data-v-94990db7]{color:var(--color-primary);border-bottom:1px dashed color-mix(in srgb, var(--color-primary) 45%, transparent);margin-left:2px;font-weight:600;text-decoration:none}.wb-no-claude-hint__link[data-v-94990db7]:hover{border-bottom-style:solid}.wb-logs-inline-btn[data-v-94990db7]{appearance:none;border:1px solid var(--border-color);background:var(--bg-container);height:32px;color:var(--text-secondary);border-radius:var(--radius-md);font-size:var(--font-size-mid);cursor:pointer;white-space:nowrap;transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);flex-shrink:0;align-items:center;gap:5px;padding:0 12px;font-weight:500;display:inline-flex}.wb-logs-inline-btn[data-v-94990db7]:hover{background:var(--tint-primary-12);color:var(--color-primary);border-color:var(--tint-primary-35)}.wb-logs-inline-btn--danger[data-v-94990db7]{color:var(--text-secondary);border-color:var(--border-color);background:var(--bg-container)}.wb-logs-inline-btn--danger[data-v-94990db7]:hover{color:var(--color-danger,var(--color-danger-light));border-color:var(--tint-danger-50);background:var(--tint-danger-06)}.wb-logs-inline-btn--copy.is-flash[data-v-94990db7]{color:var(--color-success-dark,var(--color-success));border-color:var(--tint-success-35,color-mix(in srgb, var(--color-success) 35%, transparent));background:var(--tint-success-14,color-mix(in srgb, var(--color-success) 14%, transparent))}.wb-logs-inline-btn[data-v-94990db7]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.wb-logs-inline-btn__icon[data-v-94990db7]{font-size:var(--font-size-base)}.wb-copy-exec[data-v-94990db7]{flex-shrink:0;align-items:stretch;display:inline-flex}.wb-copy-exec .el-dropdown[data-v-94990db7]{display:inline-flex}.wb-copy-exec__main[data-v-94990db7]{border-top-right-radius:0;border-bottom-right-radius:0}.wb-copy-exec__caret[data-v-94990db7]{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px;padding:0 6px}.wb-input[data-v-94990db7],.wb-textarea[data-v-94990db7]{color:var(--text-primary);background:var(--bg-container);border:1px solid var(--border-color-medium);border-radius:var(--radius-md);box-shadow:var(--wb-card-inset-shadow);transition:border-color var(--transition-fast) var(--ease-custom), box-shadow var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom);appearance:none;outline:none;font-family:inherit}.wb-input[data-v-94990db7]::placeholder,.wb-textarea[data-v-94990db7]::placeholder{color:var(--text-placeholder);font-weight:400}.wb-input[data-v-94990db7]{height:36px;font-size:var(--font-size-base);letter-spacing:-.05px;padding:0 12px;line-height:1.2}.wb-input[data-v-94990db7]:hover:not(:focus){border-color:var(--border-input-hover,#cbd5e1);background:var(--bg-container-hover)}.wb-input[data-v-94990db7]:focus{border-color:var(--color-primary);background:var(--bg-container);box-shadow:0 0 0 3px var(--tint-primary-18), var(--wb-card-inset-shadow)}.wb-input--title[data-v-94990db7]{height:36px;font-size:var(--font-size-base);letter-spacing:-.4px;border-color:var(--border-color);box-shadow:none;background:0 0;flex:1;padding:0 12px;font-weight:600}.wb-input--title[data-v-94990db7]:hover:not(:focus){border-color:var(--border-color-medium);background:var(--bg-container)}.wb-input--title[data-v-94990db7]:focus{border-color:var(--color-primary);background:var(--bg-container);box-shadow:0 0 0 3px var(--tint-primary-14)}.wb-input--title[data-v-94990db7]::placeholder{color:var(--text-placeholder);font-weight:500}.wb-textarea[data-v-94990db7]{font-size:var(--font-size-mid);letter-spacing:-.05px;resize:vertical;box-sizing:border-box;background:var(--bg-container);width:100%;min-height:52px;box-shadow:none;border-color:var(--border-color);flex-shrink:0;padding:10px 14px;line-height:1.55;display:block}.wb-textarea[data-v-94990db7]::placeholder{color:var(--text-placeholder);line-height:1.55}.wb-textarea[data-v-94990db7]:hover:not(:focus){border-color:var(--border-color-medium);background:var(--bg-container-hover)}.wb-textarea[data-v-94990db7]:focus{border-color:var(--color-primary);background:var(--bg-container-hover);box-shadow:0 0 0 3px var(--tint-primary-14)}.wb-textarea--focus-expand[data-v-94990db7]:focus{max-height:500px;transition:max-height var(--transition-base) var(--ease-custom)}.wb-textarea--autogrow[data-v-94990db7]{resize:none;min-height:52px;max-height:320px;transition:height var(--transition-fast) var(--ease-custom);overflow-y:hidden}.wb-split__sub-header[data-v-94990db7]{flex-shrink:0;justify-content:space-between;align-items:center;margin-top:8px;display:flex}.wb-split__sub-header h4[data-v-94990db7]{font-size:var(--font-size-mid);color:var(--text-secondary);margin:0;font-weight:600}.wb-simple__header[data-v-94990db7]{flex-shrink:0;align-items:baseline;gap:10px;margin-top:8px;padding-left:10px;display:flex}.wb-simple__header h4[data-v-94990db7]{font-size:var(--font-size-mid);color:var(--text-primary);letter-spacing:-.05px;margin:0;font-weight:600}.wb-simple__hint[data-v-94990db7]{font-size:var(--font-size-sm);color:var(--text-meta)}.wb-simple__status-row[data-v-94990db7]{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:8px;margin-top:2px;display:flex}.wb-simple__status[data-v-94990db7]{width:8px;height:8px;transition:background var(--transition-fast) var(--ease-custom);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;gap:5px;padding:0;display:inline-flex}.wb-simple__status--dot[data-v-94990db7]{border-radius:50%}.wb-simple__status-text[data-v-94990db7]{display:none}.wb-simple__meta[data-v-94990db7]{font-size:var(--font-size-sm);color:var(--text-meta);letter-spacing:-.05px;text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.wb-simple__meta--error[data-v-94990db7]{color:var(--color-danger-dark)}.wb-simple__status[style*=--text-tertiary] .wb-simple__status-dot[data-v-94990db7]{background:var(--text-tertiary)}.wb-simple__stop[data-v-94990db7]{border-radius:var(--radius-base);border:1px solid var(--color-danger-bright);color:var(--color-danger-bright);font-size:var(--font-size-sm);cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);background:0 0;margin-left:auto;padding:2px 10px;font-weight:600}.wb-simple__stop[data-v-94990db7]:hover:not(:disabled){background:var(--color-danger-bright);color:#fff}.wb-simple__stop[data-v-94990db7]:disabled{opacity:var(--disabled-opacity);cursor:not-allowed}.wb-task-prompt[data-v-94990db7]{border-radius:var(--radius-md)}.wb-task-prompt__summary[data-v-94990db7]{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:4px 0;list-style:none;display:flex}.wb-task-prompt__summary[data-v-94990db7]::-webkit-details-marker{display:none}.wb-task-prompt__caret[data-v-94990db7]{font-size:var(--font-size-sm);color:var(--text-meta);transition:transform var(--transition-fast) var(--ease-custom)}.wb-task-prompt[open]>.wb-task-prompt__summary .wb-task-prompt__caret[data-v-94990db7]{color:var(--color-primary);transform:rotate(90deg)}.wb-task-prompt.has-content>.wb-task-prompt__summary[data-v-94990db7]{color:var(--text-primary)}.wb-task-prompt__tag[data-v-94990db7]{font-size:var(--font-size-xs);border-radius:var(--radius-lg);background:var(--tint-primary-12,color-mix(in srgb, var(--color-primary) 12%, transparent));color:var(--color-primary);letter-spacing:.2px;padding:1px 6px;font-weight:600}.wb-task-prompt__parts[data-v-94990db7]{flex-direction:column;gap:8px;margin-top:8px;display:flex}.wb-task-prompt__part[data-v-94990db7]{border:1px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-subtle);padding:6px 9px}.wb-task-prompt__label[data-v-94990db7]{font-size:var(--font-size-xs);color:var(--text-meta);margin-bottom:4px}.wb-task-prompt__text[data-v-94990db7]{max-height:220px;font-family:inherit;font-size:var(--font-size-mid);color:var(--text-primary);white-space:pre-wrap;word-break:break-word;margin:0;line-height:1.5;overflow:auto}.wb-task-prompt__empty[data-v-94990db7]{font-size:var(--font-size-xs);color:var(--text-meta);margin:8px 0 0}.wb-simple-chat-wrap[data-v-94990db7]{border:1px solid var(--border-color);border-radius:var(--radius-base);background:var(--bg-code);--acu-bg:var(--bg-code);flex-direction:column;flex:1;min-height:0;margin-top:6px;display:flex;overflow:hidden}.wb-simple-chat[data-v-94990db7]{flex-direction:column;flex:1;min-height:0;display:flex}.wb-simple-chat[data-v-94990db7] .acu-chat-footer{display:none}.wb-simple-chat[data-v-94990db7] .acu-chat,.wb-simple-chat[data-v-94990db7] .acu-message-list,.wb-simple-chat[data-v-94990db7] .acu-message-list-inner>*{background:0 0}.wb-simple-chat[data-v-94990db7] .acu-chat,.wb-simple-chat[data-v-94990db7] .acu-message-list{background:var(--bg-code)}.wb-simple-chat[data-v-94990db7] .acu-message-list-inner{gap:10px;max-width:100%;margin:0;padding:10px 8px 14px}.wb-simple-chat[data-v-94990db7] .acu-bubble-main{max-width:100%}.wb-simple-chat[data-v-94990db7] .acu-bubble{font-size:var(--font-size-sm);border-radius:var(--radius-lg)}.wb-simple-chat[data-v-94990db7] .acu-bubble-name{font-size:var(--font-size-xs)}.wb-simple-chat__footer[data-v-94990db7]{background:var(--bg-code);flex-shrink:0;padding:0 4px 4px}.wb-simple-chat__input[data-v-94990db7]{width:100%}.wb-chat-queue[data-v-94990db7]{border:1px solid var(--role-pending-edge);border-radius:var(--radius-md);background:var(--role-pending-surface);flex-direction:column;gap:6px;margin:0 0 6px;padding:8px 10px;display:flex}.wb-chat-queue__head[data-v-94990db7]{font-size:var(--font-size-xs);color:var(--role-pending-ink);align-items:center;gap:6px;display:flex}.wb-chat-queue__label[data-v-94990db7]{font-weight:600}.wb-chat-queue__count[data-v-94990db7]{background:var(--role-pending-wash);text-align:center;border-radius:999px;min-width:18px;padding:0 5px;font-weight:600}.wb-chat-queue__hint[data-v-94990db7]{color:var(--text-secondary)}.wb-chat-queue__item[data-v-94990db7]{font-size:var(--font-size-sm);align-items:center;gap:8px;display:flex}.wb-chat-queue__index[data-v-94990db7]{background:var(--role-pending-wash);width:16px;height:16px;color:var(--role-pending-ink);font-size:var(--font-size-xs);text-align:center;border-radius:999px;flex-shrink:0;line-height:16px}.wb-chat-queue__text[data-v-94990db7]{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-primary);flex:1;overflow:hidden}.wb-chat-queue__atts[data-v-94990db7]{text-overflow:ellipsis;white-space:nowrap;max-width:36%;color:var(--text-secondary);font-size:var(--font-size-xs);flex-shrink:0;overflow:hidden}.wb-chat-queue__btn[data-v-94990db7]{border:1px solid var(--role-pending-edge);border-radius:var(--radius-md);color:var(--role-pending-ink);font-size:var(--font-size-xs);cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom);background:0 0;flex-shrink:0;padding:2px 8px}.wb-chat-queue__btn[data-v-94990db7]:hover{background:var(--role-pending-wash);border-color:var(--role-pending-ink)}.wb-chat-queue__btn[data-v-94990db7]:focus-visible{outline:var(--focus-outline);outline-offset:1px}.wb-chat-queue__btn.is-remove[data-v-94990db7]{color:var(--text-secondary);border-color:#0000;padding:2px 6px}.wb-chat-queue__btn.is-remove[data-v-94990db7]:hover{border-color:var(--border-card-hover);color:var(--text-primary);background:0 0}.wb-form-item[data-v-94990db7]{flex-direction:column;flex-shrink:0;gap:6px;display:flex}.wb-form-item__label[data-v-94990db7]{font-size:var(--font-size-sm);color:var(--text-secondary);letter-spacing:-.05px;font-weight:500}.wb-sub-list[data-v-94990db7]{flex-direction:column;flex:1;gap:8px;min-height:0;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}@keyframes wb-progress-slide-94990db7{0%{background-position:-50% 0}to{background-position:150% 0}}@keyframes wb-card-glow-94990db7{0%,to{box-shadow:0 0 0 1px var(--tint-primary-30), 0 4px 18px -4px color-mix(in srgb, var(--color-primary) 25%, transparent)}50%{box-shadow:0 0 0 1px var(--tint-primary-50), 0 6px 24px -2px color-mix(in srgb, var(--color-primary) 38%, transparent)}}@keyframes wb-card-sweep-94990db7{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes wb-border-shimmer-94990db7{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes wb-status-dot-pulse-94990db7{0%,to{transform:scale(1);box-shadow:0 0 4px #ffffff73}50%{transform:scale(1.35);box-shadow:0 0 8px #ffffffd9}}@keyframes wb-status-dot-94990db7{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.7)}}@media (prefers-reduced-motion:reduce){.wb-sub-expand-enter-active[data-v-94990db7],.wb-sub-expand-leave-active[data-v-94990db7]{transition:none}}.wb-sub-expand-enter-active[data-v-94990db7],.wb-sub-expand-leave-active[data-v-94990db7]{transition:grid-template-rows var(--transition-base,var(--transition-base)) var(--ease-custom), opacity var(--transition-fast) var(--ease-custom);overflow:hidden}.wb-sub-expand-enter-from[data-v-94990db7],.wb-sub-expand-leave-to[data-v-94990db7]{opacity:0;grid-template-rows:0fr}.wb-sub-expand-enter-to[data-v-94990db7],.wb-sub-expand-leave-from[data-v-94990db7]{opacity:1;grid-template-rows:1fr}.wb-sub-expand-inner[data-v-94990db7]{min-height:0;overflow:hidden}.wb-task-group__head[data-v-94990db7]{font-size:var(--font-size-mid);color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:var(--radius-base);transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);align-items:center;gap:6px;margin-top:4px;padding:8px 6px 4px;font-weight:600;display:flex}.wb-task-group__head[data-v-94990db7]:first-child{border-top:none;margin-top:0;padding-top:4px}.wb-task-group__head[data-v-94990db7]:hover{background:var(--tint-primary-08);color:var(--text-secondary)}.wb-task-group__head[data-v-94990db7]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset)}.wb-task-group__head.is-current[data-v-94990db7]{color:var(--color-primary);border-top-color:var(--tint-primary-30)}.wb-task-group__head.is-collapsed[data-v-94990db7]{background:var(--bg-subtle);border-top-style:solid;margin-top:6px;padding-top:6px;padding-bottom:6px}.wb-task-group__head.is-collapsed.is-current[data-v-94990db7]{background:color-mix(in srgb, var(--color-primary) 8%, var(--bg-subtle))}.wb-task-group__caret[data-v-94990db7]{font-size:var(--font-size-sm);opacity:.75;transition:transform var(--transition-fast) var(--ease-custom);flex-shrink:0}.wb-task-group__icon[data-v-94990db7]{font-size:var(--font-size-base);opacity:.8;flex-shrink:0}.wb-task-group__name[data-v-94990db7]{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.wb-task-group__count[data-v-94990db7]{min-width:18px}.wb-task-group__head.is-current .wb-task-group__count[data-v-94990db7]{background:var(--tint-primary-16,color-mix(in srgb, var(--color-primary) 16%, transparent));color:var(--color-primary)}.wb-meta-save[data-v-94990db7]{height:24px;font-size:var(--font-size-xs);letter-spacing:.1px;border-radius:var(--radius-xl);border:1px solid var(--border-color-medium);background:var(--bg-container);color:var(--text-meta);-webkit-user-select:none;user-select:none;transition:background var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);flex-shrink:0;align-items:center;gap:5px;padding:0 10px;font-weight:600;display:inline-flex}.wb-meta-save__dot[data-v-94990db7]{opacity:.85;background:currentColor;border-radius:50%;width:6px;height:6px;display:inline-block}.wb-meta-save__check[data-v-94990db7]{font-size:var(--font-size-sm);line-height:1}.wb-meta-save__bang[data-v-94990db7]{width:12px;height:12px;font-size:var(--font-size-xs);color:#fff;background:currentColor;border-radius:50%;justify-content:center;align-items:center;font-weight:800;line-height:1;display:inline-flex}.wb-meta-save.is-saving[data-v-94990db7]{color:var(--color-primary);border-color:var(--tint-primary-35);background:color-mix(in srgb, var(--color-primary) 8%, var(--bg-container))}.wb-meta-save.is-saving .wb-meta-save__dot[data-v-94990db7]{animation:1.2s ease-in-out infinite wb-meta-pulse-94990db7}.wb-meta-save.is-saved[data-v-94990db7]{color:var(--color-success-dark);border-color:var(--tint-success-35);background:var(--tint-success-08)}.wb-meta-save.is-dirty[data-v-94990db7]{color:var(--color-warning-dark);border-color:var(--tint-warning-45);background:var(--tint-warning-06)}.wb-meta-save.is-error[data-v-94990db7]{color:var(--color-danger-dark,#b91c1c);border-color:var(--tint-danger-45);background:var(--tint-danger-06)}@keyframes wb-meta-pulse-94990db7{0%,to{opacity:.4;transform:scale(.85)}50%{opacity:1;transform:scale(1.1)}}@media (prefers-reduced-motion:reduce){.wb-meta-save.is-saving .wb-meta-save__dot[data-v-94990db7]{animation:none}}.wb-logs-dialog{flex-direction:column;max-height:88vh;display:flex}.wb-logs-dialog .el-dialog__body{flex:auto;min-height:0;max-height:calc(88vh - 60px);padding:12px 20px 16px;overflow:auto}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import"./rolldown-runtime-C0FnF6B9.js";import{En as e,Vn as t,i as n,mr as r,r as i,xr as a,yr as o}from"./element-plus-J45pKUrE.js";import{c as s,o as c,s as l,t as u}from"./vendor-B3NyhlYR.js";import{n as d}from"./_plugin-vue_export-helper-C3o7kvRL.js";import{c as f,s as p,t as m}from"./configStore-BdL3uW2E.js";import{_ as h,g,n as _,p as v,r as y,t as b}from"./index-BS7BDFG4.js";function x(e,t=200){let n=typeof e==`string`?e:``;if(!n.trim())return``;let r=n.split(`
|
|
2
|
-
`).map(e=>e.trim()).filter(Boolean),i=(r.length?r[r.length-1]:``).replace(/\s+/g,` `);return i.length>t?`${i.slice(0,t-1)}…`:i}function S(e){return d(e===`done`?`@AGENT:对话已完成`:`@AGENT:对话出错`)}function C(){let e={page:!1,browser:!1,sound:!1};try{let t=m();e.page=!!t.notifyPageOnTaskDone,e.browser=!!t.notifyBrowserOnTaskDone,e.sound=!!t.notifySoundOnTaskDone}catch{}return e}function w(){return C().sound?y():!1}function T(e){let t=C();if(!b(t))return!1;let r=String(e.title||``).trim()||d(`@AGENT:无标题`),i=x(e.detail),a=e.tag||`zen-gitsync-agent`,o=i?`${r}\n${i}`:r;return t.sound&&_(e.kind),h(t)&&g({title:S(e.kind),body:o,tag:a})||!t.page||e.alreadyToast||(e.kind===`done`?n.success(d(`@AGENT:对话完成:{name}`,{name:r})):n.error(d(`@AGENT:对话出错:{name}`,{name:r}))),!0}var E=`g ai`,D=`g-ai`,O=[{id:`gai`,name:E},...p.map(e=>({id:e.id,name:e.name}))],k=`zen-gitsync-agent-engine`;function A(e){return e===`gai`||f(e)}function j(e){return O.find(t=>t.id===e)?.name||`g ai`}function M(e){return f(e)}function N(){try{let e=localStorage.getItem(k);if(A(e))return e}catch{}return`gai`}function ee(e){try{localStorage.setItem(k,e)}catch{}}t(),r();var P=[`image/*`,`.pdf`,`.txt`,`.md`,`.json`,`.csv`,`.log`,`.yml`,`.yaml`,`.xml`,`.toml`,`.ini`,`.html`,`.css`,`.js`,`.ts`,`.tsx`,`.vue`,`.py`,`.java`,`.go`,`.rs`,`.sql`,`.sh`].join(`,`),F=65536,I=`local-`,L=0;function te(e){if(!e||!Array.isArray(e.messages))return[];let t=[],n=e.messages.length,r=new Map;for(let t of e.turnTimings||[])typeof t?.turnIndex==`number`&&Number.isFinite(t?.durationMs)&&r.set(t.turnIndex,t);let i=-1;for(let a=0;a<n;a++){let o=e.messages[a];if(o.role!==`system`){if(o.role===`user`){i+=1;let e=``,n;if(typeof o.content==`string`)e=o.content;else if(Array.isArray(o.content)){e=o.content.filter(e=>e?.type===`text`).map(e=>e.text||``).join(` `);let t=o.content.filter(e=>e?.type===`image_url`&&typeof e.image_url?.url==`string`).map((e,t)=>({id:`att-${a}-${t}`,name:`image`,size:0,type:B(e.image_url?.url||``)||`image/*`,preview:e.image_url?.url}));t.length>0&&(n=t)}(e||n)&&t.push({id:`msg-${a}`,role:`user`,content:e,attachments:n,status:`done`,createdAt:Date.now()})}else if(o.role===`assistant`){let o=`msg-${a}`,s=``,l=[],u=a;for(;u<n;){let t=e.messages[u];if(t.role!==`assistant`&&t.role!==`tool`)break;if(t.role===`assistant`){if(typeof t.content==`string`&&(s+=t.content),t.tool_calls&&t.tool_calls.length>0)for(let e of t.tool_calls)l.push({id:e.id||e.function?.name||c(),name:e.function?.name||``,arguments:e.function?.arguments||``,argsPreview:R(e.function?.name||``,e.function?.arguments||``),status:`done`,result:``})}else{let e=t.tool_call_id||t.name||``,n=l.find(t=>t.id===e);if(n){let e;e=typeof t.content==`string`?t.content:Array.isArray(t.content)&&t.content.filter(e=>e?.type===`text`).map(e=>e.text||``).join(`
|
|
3
|
-
`)||`(non-text result)`,e.length>F&&(e=`…(前文已截断)\n${e.slice(-65536)}`),n.result=e}}u++}a=u-1,s.length>F&&(s=`…(前文已截断)\n${s.slice(-65536)}`);let d=!!s,f=l.length>0;if(d||f){let e=r.get(i),n=e?.finishedAt?Date.parse(e.finishedAt):NaN;t.push({id:o,role:`assistant`,content:s,toolCalls:f?l:void 0,status:`done`,createdAt:Number.isFinite(n)&&e?n-e.durationMs:Date.now(),finishedAt:Number.isFinite(n)?n:void 0,meta:e?{durationMs:e.durationMs}:void 0})}}}}return t}function R(e,t){try{let n=JSON.parse(t);switch(e){case`run_command`:return String(n.command||``).slice(0,200);case`read_file`:case`write_file`:case`edit_file`:return String(n.path||``);case`list_files`:return String(n.path||`.`);case`search_text`:return String(n.pattern||``);case`update_plan`:{let e=s(t,`update_plan`);if(!e)return``;let{total:r,done:i}=u(e),a=String(n.explanation||``).replace(/\s+/g,` `).trim();return[`${i}/${r}`,a].filter(Boolean).join(` — `).slice(0,200)}default:return JSON.stringify(n).slice(0,200)}}catch{return t.slice(0,200)}}function z(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(String(r.result||``)),r.onerror=()=>n(r.error||Error(`FileReader failed`)),r.readAsDataURL(e)})}function B(e){let t=/^data:([^;,]+)/.exec(e);return t?t[1]:``}function V(){let t=m(),r=v(),s=++L,u=a([]),f=a(!1),p=a(N());function h(e){A(e)&&(p.value=e,ee(e))}let g=o(new Map),_=a(null),y=a(!1),b=0,x=0,S=new Set;function C(e){return{key:e,sessionId:e.startsWith(I)?null:e,title:``,messages:[],isStreaming:!1,abortController:null,nonce:0,pendingQuestion:null,answeringQuestion:!1,contextUsage:null,queue:[],queuePaused:!1}}function E(e){let t=g.get(e);return t||=(g.set(e,C(e)),g.get(e)),t}let D=e(()=>_.value?g.get(_.value)??null:null),O=e(()=>D.value?.messages??[]),k=e(()=>D.value?.isStreaming??!1),j=e(()=>D.value?.contextUsage??null),M=e(()=>{let e=j.value;return e?{ratio:Math.min(Math.max(e.tokenRatio,e.messageRatio),1),current:e.tokens,total:e.maxTokens,unit:`K`,suffix:`上下文已使用`,detail:[`${e.messages} / ${e.maxMessages} 条消息`,typeof e.actualInputTokens==`number`&&e.actualInputTokens>0?`实测 ${e.actualInputTokens.toLocaleString()} token`:`估算 ${Math.round(e.estTokens).toLocaleString()} token`,e.droppedMessages>0?`会话共 ${e.transcriptMessages} 条,本次只带入 ${e.messages} 条(其余已摘成梗概)`:``].filter(Boolean).join(`
|
|
4
|
-
`)}:null}),P=e(()=>{let e=u.value.find(e=>e.sessionId===_.value);return A(e?.engine)?e.engine:p.value}),R=e(()=>u.value.some(e=>e.sessionId===_.value)),B=e(()=>D.value?.pendingQuestion??null),V=e(()=>D.value?.answeringQuestion??!1),H=e(()=>D.value?.pendingQuestion??null),U=e(()=>D.value?.queuePaused??!1),W=e(()=>(D.value?.queue??[]).map(e=>({id:e.id,text:e.text,attachmentNames:e.files.map(e=>e.file.name)})));function G(e){let t=D.value;if(!t)return;let n=t.queue.findIndex(t=>t.id===e);n<0||(t.queue.splice(n,1),t.queue.length===0&&(t.queuePaused=!1))}function K(e){if(e.isStreaming)return;let t=e.queue.shift();t&&Q(t.text,t.files,{...t.options,targetKey:e.key,background:!0})}function q(){let e=D.value;e&&!e.isStreaming&&e.queue.length!==0&&(e.queuePaused=!1,K(e))}function J(e){return!!g.get(e)?.isStreaming}function Y(e){let n=[...e];for(let e of g.values()){if(!e.sessionId)continue;let r=n.findIndex(t=>t.sessionId===e.sessionId);if(r!==-1){S.delete(e.sessionId),e.isStreaming&&(n[r]={...n[r],isGenerating:!0});continue}if(!e.isStreaming&&!S.has(e.sessionId))continue;let i=new Date().toISOString();n.unshift({sessionId:e.sessionId,title:e.title||d(`@AGENT:无标题`),source:`web`,cwd:t.currentDirectory||``,model:``,engine:p.value,createdAt:i,updatedAt:i,messageCount:e.messages.filter(e=>e.role===`user`).length||1,size:0,isGenerating:e.isStreaming})}return n}async function X(){let e=++b,r=t.currentDirectory||``;if(!r){u.value=[],f.value=!1;return}f.value=!0;try{let t=`/api/agent/sessions?cwd=${encodeURIComponent(r)}`,i=await fetch(t).then(e=>e.json());if(e!==b)return;if(!i.success){n.error(i.error||d(`@AGENT:加载会话列表失败`));return}let a=Array.isArray(i.sessions)?i.sessions:[];u.value=Y(a)}catch(t){if(e!==b)return;n.error(d(`@AGENT:加载会话列表失败`)+`: `+(t?.message||t))}finally{e===b&&(f.value=!1)}}function Z(e,n){let r=new Date().toISOString(),i=u.value.find(t=>t.sessionId===e);if(i){i.isGenerating=!0,i.updatedAt=r;return}u.value=[{sessionId:e,title:n||d(`@AGENT:无标题`),source:`web`,cwd:t.currentDirectory||``,model:``,engine:p.value,createdAt:r,updatedAt:r,messageCount:1,size:0,isGenerating:!0},...u.value]}function ne(e){let t=u.value.find(t=>t.sessionId===e);t&&(t.isGenerating=!1)}async function re(e){if(g.get(e)?.isStreaming){_.value=e;return}y.value=!0,_.value=e;try{let t=await fetch(`/api/agent/sessions/${encodeURIComponent(e)}`).then(e=>e.json());if(!t.success){n.error(t.error||d(`@AGENT:加载会话失败`));return}let r=E(e);r.sessionId=e,r.messages=te(t.session),t.session?.title&&(r.title=t.session.title)}catch(e){n.error(d(`@AGENT:加载会话失败`)+`: `+(e?.message||e))}finally{y.value=!1}}async function ie(e){try{await i.confirm(d(`@AGENT:确认删除该会话`),d(`@AGENT:删除后无法恢复`),{type:`warning`})}catch{return}let t=g.get(e);if(t?.abortController)try{t.abortController.abort()}catch{}g.delete(e);try{let t=await fetch(`/api/agent/sessions/${encodeURIComponent(e)}`,{method:`DELETE`}).then(e=>e.json());if(!t.success){n.error(t.error||d(`@AGENT:删除失败`));return}u.value=u.value.filter(t=>t.sessionId!==e),_.value===e&&(_.value=null),n.success(d(`@AGENT:已删除`))}catch(e){n.error(d(`@AGENT:删除失败`)+`: `+(e?.message||e))}}async function ae(e,t){try{let r=await fetch(`/api/agent/sessions/${encodeURIComponent(e)}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({title:t})}).then(e=>e.json());if(!r.success){n.error(r.error||d(`@AGENT:重命名失败`));return}let i=u.value.find(t=>t.sessionId===e);i&&(i.title=t);let a=g.get(e);a&&(a.title=t),n.success(d(`@AGENT:已重命名`))}catch(e){n.error(d(`@AGENT:重命名失败`)+`: `+(e?.message||e))}}function oe(){_.value=null}async function Q(e,i=[],a={}){let l=i.filter(e=>e?.file?.type?.startsWith(`image/`)),u=i.filter(e=>!e?.file?.type?.startsWith(`image/`)),f=[],p=0;for(let e of u){let t=e.file.size||0;if(!(t>10485760)){if(f.length>=10||p+t>20971520)break;p+=t,f.push(e)}}let m=u.filter(e=>!f.includes(e));m.length>0&&n.warning(`${d(`@AGENT:以下附件超过大小或数量上限,已忽略:`)}${m.map(e=>e.file.name).join(`、`)}`);let h=a.targetKey||_.value||`${I}${Date.now()}-${++x}`,g=E(h);if(!e.trim()&&l.length===0&&f.length===0)return;if(g.isStreaming){g.queue.push({id:c(),text:e,files:[...l,...f],options:a});return}let v=(await Promise.allSettled(l.map(e=>z(e.file)))).map(e=>e.status===`fulfilled`?e.value:``).filter(e=>e.startsWith(`data:image/`)),y=(await Promise.allSettled(f.map(async e=>({name:e.file.name||`file`,dataUrl:await z(e.file)})))).map(e=>e.status===`fulfilled`?e.value:null).filter(e=>!!e&&typeof e.dataUrl==`string`&&e.dataUrl.startsWith(`data:`));a.background||(_.value=g.key),g.nonce+=1;let b=g.nonce;g.abortController=new AbortController;let S=g.abortController;g.pendingQuestion=null,g.answeringQuestion=!1;let C={id:c(),role:`user`,content:e,status:`done`,createdAt:Date.now()},w=[...l,...f];w.length>0&&(C.attachments=w.map(e=>({id:e.id,name:e.file.name||`image`,size:e.file.size||0,type:e.file.type||``,preview:e.preview}))),g.messages.push(C);let T=o({id:c(),role:`assistant`,content:``,status:`pending`,createdAt:Date.now()});g.messages.push(T),g.isStreaming=!0,g.lastSendOptions=a;let D=`${s}:${h}:${b}`;r.begin(D),await $(g,b,S,T,D,{sessionId:g.sessionId||``,userMessage:e,cwd:t.currentDirectory||``,engine:a.engine??P.value,...v.length>0?{images:v}:{},...y.length>0?{attachments:y}:{},...a.openFilePath?{openFilePath:a.openFilePath}:{},...a.dirStatus?.length?{dirStatus:a.dirStatus}:{},...a.dirSummary?{dirSummary:a.dirSummary}:{},...a.allowDispatch?{allowDispatch:!0,dispatchExecutor:a.dispatchExecutor||``,dispatchUseDefaultPrompt:a.dispatchUseDefaultPrompt!==!1}:{}})}async function $(e,t,i,a,s,u){let f=String(u.userMessage||``),p=[],m=e.sessionId,h=!1,v=null;try{let r=await fetch(`/api/agent/chat`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify(u),signal:i.signal});if(t!==e.nonce)return;if(!r.ok||!r.body){let e=await r.text().catch(()=>``);throw Error(e||`HTTP ${r.status}`)}let s=r.body.getReader(),h=new TextDecoder(`utf-8`),y=``;for(;;){let{value:r,done:i}=await s.read();if(t!==e.nonce)return;if(i)break;y+=h.decode(r,{stream:!0});let u=y.split(`
|
|
5
|
-
`);y=u.pop()??``;for(let t of u){let r=t.trim();if(!r.startsWith(`data:`))continue;let i=r.slice(5).trim();if(!i)continue;let s;try{s=JSON.parse(i)}catch{continue}switch(s.type){case`context`:s.usage&&(e.contextUsage={...e.contextUsage||{},...s.usage});break;case`meta`:if(s.sessionId){let t=String(s.sessionId);if(m=t,e.sessionId!==t){let n=e.key;e.sessionId=t,e.key=t,n!==t&&(g.delete(n),g.set(t,e),_.value===n&&(_.value=t))}let n=String(s.title||``).trim()||f.trim().split(`
|
|
6
|
-
`)[0].trim().slice(0,40)||d(`@AGENT:无标题`);e.title||=n,Z(t,n)}break;case`attempt`:v={content:(a.content||``).length,reasoning:(a.reasoning||``).length,tools:a.toolCalls?.length??0};break;case`retry`:v&&(a.content=(a.content||``).slice(0,v.content),a.reasoning&&=a.reasoning.slice(0,v.reasoning),a.toolCalls&&a.toolCalls.length>v.tools&&(a.toolCalls.length=v.tools,p=[...a.toolCalls])),a.status=`pending`,a.error=``,a.finishedAt=void 0,a.reasoningStatus===`streaming`&&(a.reasoningStatus=`done`),n.info(d(`@AGENT:连接中断,正在自动重试({attempt}/{max}):{reason}`,{attempt:Number(s.attempt)||0,max:Number(s.maxRetries)||0,reason:String(s.reason||``)}));break;case`thinking`:a.reasoning||(a.reasoning=``,a.reasoningStatus=`streaming`),typeof a.reasoningStartedAt!=`number`&&(a.reasoningStartedAt=Date.now()),a.reasoningEndedAt=Date.now(),a.reasoning+=String(s.delta||``),a.status=`streaming`;break;case`content`:a.status===`pending`&&(a.status=`streaming`);{let e=String(s.delta||``);a.content+=e;let t=l(a.content);t.reasoning&&(a.reasoning||(a.reasoning=``,a.reasoningStatus=`streaming`),a.reasoning=t.reasoning,a.content=t.content)}break;case`tool_call_start`:{let e=o({id:s.toolCallId||c(),name:s.name||``,argsPreview:s.argsPreview||``,arguments:s.arguments||s.argsPreview||``,status:`running`,result:``});p.push(e),a.toolCalls||=[],a.toolCalls.push(e),a.status===`pending`&&(a.status=`streaming`);break}case`tool_output`:{let e=p.find(e=>e.id===s.toolCallId);if(e){let t=`${e.result||``}${String(s.chunk||``)}`;e.result=t.length>F?`…(前文已截断)\n${t.slice(-65536)}`:t}break}case`tool_result`:{let t=p.find(e=>e.id===s.toolCallId);t&&(t.result=String(s.result||``),t.status=`done`,t.name===`ask_user`&&(e.pendingQuestion=null));break}case`ask_user`:e.pendingQuestion={interactionId:String(s.interactionId||``),question:String(s.question||``),options:Array.isArray(s.options)?s.options.map(e=>String(e)):[],allowFreeText:s.allowFreeText!==!1,multiple:s.multiple===!0},w();break;case`done`:{let e=s.content||a.content,t=l(e);t.reasoning&&!a.reasoning&&(a.reasoning=t.reasoning),a.content=t.content,a.status=`done`,a.reasoningStatus===`streaming`&&(a.reasoningStatus=`done`);break}case`turn_done`:{let e=Number(s.durationMs);if(!Number.isFinite(e)||e<0||a.meta?.durationMs!==void 0)break;a.finishedAt=Date.now(),a.meta={...a.meta||{},durationMs:e};break}case`error`:a.status=`error`,a.error=String(s.error||d(`@AGENT:未知错误`)),a.reasoningStatus===`streaming`&&(a.reasoningStatus=`done`)}}}if(t!==e.nonce)return;a.status===`pending`&&(a.status=`done`)}catch(r){if(t!==e.nonce)return;r?.name===`AbortError`||i.signal.aborted?(h=!0,a.content=(a.content||``)+`
|
|
7
|
-
|
|
8
|
-
[`+d(`@AGENT:已停止`)+`]`,a.status=`done`,a.reasoningStatus===`streaming`&&(a.reasoningStatus=`done`),a.meta?.durationMs===void 0&&(a.finishedAt=Date.now(),a.meta={...a.meta||{},durationMs:a.finishedAt-(a.createdAt||a.finishedAt)})):(a.status=`error`,a.error=r?.message||String(r),n.error(a.error||d(`@AGENT:对话失败`)))}finally{let n=!!e.pendingQuestion,i=a.status===`error`?`error`:`done`;r.end(s),t===e.nonce&&(e.isStreaming=!1,e.pendingQuestion=null,e.answeringQuestion=!1,e.abortController=null,!h&&!n&&T({kind:i,title:e.title,detail:i===`error`&&a.error||a.content,tag:`zen-gitsync-agent-${m||e.key}`,alreadyToast:i===`error`}),e.queue.length>0&&(h||a.status===`error`?e.queuePaused=!0:n||K(e))),m&&(h&&S.add(m),ne(m)),X().catch(()=>{})}}async function se(e){let i=D.value;if(!i||i.isStreaming)return!1;let a=[...i.messages].reverse().find(e=>e.role===`assistant`),o=(e?.id?i.messages.find(t=>t.id===e.id):null)||a;if(!o||o.role!==`assistant`)return!1;if(a&&o.id!==a.id)return n.warning(d(`@AGENT:只能重试最后一轮`)),!1;if(!i.sessionId)return n.warning(d(`@AGENT:这条会话还没在服务端建立,请重新发送消息`)),!1;let c=u.value.find(e=>e.sessionId===i.sessionId)?.engine||P.value;if(c!==`gai`)return n.warning(d(`@AGENT:该会话由外部 CLI 引擎运行,不支持重试上一轮,请重新发送`)),!1;o.content=``,o.reasoning=void 0,o.reasoningStatus=void 0,o.reasoningStartedAt=void 0,o.reasoningEndedAt=void 0,o.error=``,o.status=`pending`,o.finishedAt=void 0,o.meta&&={...o.meta,durationMs:void 0},i.nonce+=1;let l=i.nonce;i.abortController=new AbortController;let f=i.abortController;i.pendingQuestion=null,i.answeringQuestion=!1,i.isStreaming=!0;let p=`${s}:${i.key}:${l}`;return r.begin(p),await $(i,l,f,o,p,{sessionId:i.sessionId||``,resume:!0,cwd:t.currentDirectory||``,engine:c,...i.lastSendOptions?.openFilePath?{openFilePath:i.lastSendOptions.openFilePath}:{},...i.lastSendOptions?.dirStatus?.length?{dirStatus:i.lastSendOptions.dirStatus}:{},...i.lastSendOptions?.dirSummary?{dirSummary:i.lastSendOptions.dirSummary}:{},...i.lastSendOptions?.allowDispatch?{allowDispatch:!0,dispatchExecutor:i.lastSendOptions.dispatchExecutor||``,dispatchUseDefaultPrompt:i.lastSendOptions.dispatchUseDefaultPrompt!==!1}:{}}),!0}async function ce(e){let t=D.value,r=t?.pendingQuestion,i=t?.sessionId,a=(Array.isArray(e)?e:[e]).map(e=>String(e??``).trim()).filter(Boolean);if(!t||!r||!i||!a.length||t.answeringQuestion)return!1;t.answeringQuestion=!0;try{let e=await fetch(`/api/agent/respond`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({sessionId:i,interactionId:r.interactionId,answer:r.multiple?a:a[0]})}).then(e=>e.json());if(!e.success)throw Error(e.error||d(`@AGENT:回答提交失败`));return t.pendingQuestion=null,!0}catch(e){return n.error(e?.message||d(`@AGENT:回答提交失败`)),!1}finally{t.answeringQuestion=!1}}function le(){let e=D.value;e?.abortController&&(e.abortController.abort(),e.abortController=null)}return{sessions:u,sessionsLoading:f,currentSessionId:_,messages:O,isStreaming:k,sessionLoading:y,pendingQuestion:B,questionPanel:H,answeringQuestion:V,isSessionGenerating:J,contextUsage:j,inputContextUsage:M,queuedMessages:W,queuePaused:U,removeQueuedMessage:G,flushQueued:q,currentEngine:P,pendingEngine:p,isEngineLocked:R,pickEngine:h,loadSessions:X,loadSession:re,deleteSession:ie,renameSession:ae,newSession:oe,sendMessage:Q,retryTurn:se,answerQuestion:ce,stop:le}}var H=`data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2032%2032'%20fill='none'%3e%3crect%20x='2'%20y='6'%20width='27'%20height='23'%20rx='6'%20fill='%235364E8'/%3e%3cpath%20d='M9.419%2012.581a1.3%201.3%200%200%200-1.838%201.838L11.162%2018l-3.581%203.581a1.3%201.3%200%200%200%201.838%201.838l4.5-4.5a1.3%201.3%200%200%200%200-1.838Z'%20fill='%23FFFFFF'/%3e%3crect%20x='15.7'%20y='21.2'%20width='7.6'%20height='2.6'%20rx='1.3'%20fill='%23FFFFFF'/%3e%3cpath%20d='M25%20.4%2027.115%204.885%2031.6%207l-4.485%202.115L25%2013.6l-2.115-4.485L18.4%207l4.485-2.115Z'%20fill='%23FFFFFF'/%3e%3cpath%20d='M25%202.5%2026.22%205.78%2029.5%207l-3.28%201.22L25%2011.5l-1.22-3.28L20.5%207l3.28-1.22Z'%20fill='%2339D7B5'/%3e%3c/svg%3e`;function U(e){if(!e)return``;try{let t=new Date(e);if(Number.isNaN(t.getTime()))return e;let n=new Date,r=n.getTime()-t.getTime(),i=e=>String(e).padStart(2,`0`);if(t.toDateString()===n.toDateString())return`${i(t.getHours())}:${i(t.getMinutes())}`;if(r<6048e5){let e=Math.floor(r/864e5);return e===0?d(`@AGENT:今天`):`${e}${d(`@AGENT:天前`)}`}return`${t.getFullYear()}-${i(t.getMonth()+1)}-${i(t.getDate())}`}catch{return e}}function W(e,t){return e.map(e=>({id:e.sessionId,title:e.title||d(`@AGENT:无标题`),meta:`${U(e.updatedAt)} · ${e.messageCount??0} ${d(`@AGENT:条`)}`,generatingText:e.isGenerating||t(e.sessionId)?d(`@AGENT:正在生成中...`):``,badge:e.source===`cli`?`CLI`:``,searchText:e.model}))}function G(){return{newConversation:d(`@AGENT:新建会话`),searchPlaceholder:d(`@AGENT:搜索会话...`),empty:d(`@AGENT:暂无会话`),emptyHint:d(`@AGENT:点击上方按钮开始对话`),noResult:d(`@AGENT:未找到匹配的会话`),loading:d(`@AGENT:加载会话中...`),rename:d(`@AGENT:重命名`),delete:d(`@AGENT:删除`),untitled:d(`@AGENT:无标题`)}}var K=`g ai`,q=H,J={enable:!0},Y={enable:!0,items:[`duration`],visibility:`always`};function X(){return{title:d(`@AGENT:等待你的回答`),placeholder:d(`@AGENT:输入回答`),submit:d(`@AGENT:提交回答`),answered:d(`@AGENT:已回答`),expand:d(`@AGENT:展开完整问答`),collapse:d(`@AGENT:收起完整问答`)}}function Z(){return{title:d(`@AGENT:排队中`),hint:d(`@AGENT:本轮结束后依次发送`),pausedHint:d(`@AGENT:已暂停,点「立即发送」继续`),send:d(`@AGENT:加入队列`),flush:d(`@AGENT:立即发送`),remove:d(`@AGENT:移出队列`)}}export{G as a,W as c,O as d,D as f,J as i,P as l,M as m,K as n,X as o,j as p,Y as r,Z as s,q as t,V as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./rolldown-runtime-C0FnF6B9.js";import{En as e,Vn as t,i as n,mr as r,n as i,sr as a,t as o,xr as s}from"./element-plus-J45pKUrE.js";import{S as c,h as l,v as u}from"./vendor-B3NyhlYR.js";import{a as d,n as f,r as p}from"./_plugin-vue_export-helper-C3o7kvRL.js";var m=[{id:`claude`,name:`Claude Code`},{id:`opencode`,name:`OpenCode`},{id:`codex`,name:`Codex`}];function h(e){return m.some(t=>t.id===e)}function g(e){return m.find(t=>t.id===e)?.name||m[0].name}var _={"zh-CN":i,"en-US":o};function v(e){return _[e]||i}r(),t();var y=c(`locale`,()=>{let t=s(p()),n=e(()=>v(t.value));async function r(e){d(e),t.value=e;let n=N();n.locale!==e&&await n.saveGeneralSettings({locale:e})}return{currentLocale:t,elementPlusLocale:n,changeLocale:r}}),b=`flowdash-md-preview-theme`,x=`data-md-theme`,S=`github`,C={light:`github`,dark:`github-dark`},w=`md-preview--scoped-`,T=`flowdash-md-preview-scoped-`,E=new Set,D=Object.keys(l);function O(e,t){let n=RegExp(`(?:^|[;{\\n])\\s*${t}\\s*:\\s*([^;]+);`).exec(e);return n?n[1].trim():void 0}var k=D.map(e=>{let t=u(e)||``;return{value:e,bg:O(t,`background`),fg:O(t,`color`)}});function A(e){if(typeof document>`u`)return;let t=typeof e==`string`&&e.trim()?e.trim():S,n=u(t)??u(`github`),r=document.getElementById(b);if(!n){r?.remove();return}r||(r=document.createElement(`style`),r.id=b,document.head.appendChild(r)),r.setAttribute(x,t),r.textContent!==n&&(r.textContent=n)}function j(e){let t=typeof e==`string`&&e.trim()?e.trim():S;return w+(u(t)?t:S).toLowerCase().replace(/[^a-z0-9_-]+/g,`-`)}function M(e){let t=j(e);if(typeof document>`u`||E.has(t))return t;let n=t.slice(19),r=u(n)??u(`github`);if(!r)return null;let i=document.createElement(`style`);return i.id=`${T}${n}`,i.setAttribute(x,n),i.textContent=r.replace(/\.md-preview(?![\w-])/g,`.md-preview.${t}`),document.head.appendChild(i),E.add(t),t}r(),t();var N=c(`config`,()=>{let t=s(``),r=s([]),i=s([]),o=s([]),c=s([]),l=s([]),u=s([]),p=s([]),m=s([]),g=s(!1),_=s({enabled:!1,type:`command`,refId:``}),v=s(!1),b=s(!1),x=s(``),C=s(``),w=s(``),T=s(!0),E=s(!1),O=s(!0),k=s(!1),j=s(!1),M=s(!0),N=s(`light`),P=s(`zh-CN`),F=s([]),I=s(1e3),L=s(8e5),R=s([]),z=s(``),B=s(null),V=s(`claude`),H=s(!0),ee=s(!1),U=s(!0),W={layout:{leftRatio:.25,midRatio:.375,rightRatio:.375,topRatio:.5},layoutsByProject:{},aiDiffSummaryByProject:{},fileListViewMode:`list`,fileDiffSplitPercent:35,diffPreviewSplitPercent:55,commandConsole:{expanded:!0,useTerminal:!0,showTerminalSessions:!0,splitPercent:25},editorAutoSave:!0,fileTreeAutoRefresh:!0,editorSidebarWidth:220,mindmapDirs:[],mindmapDir:``,headerToolsHidden:[],lastTaskExecutor:null,pickerGlobalSearch:!1,markdownTheme:S,editorWorkspaceByProject:{}},G=s(JSON.parse(JSON.stringify(W))),K=s(!1);function te(e){w.value=e||``}let ne=e(()=>{let e=w.value;return e?G.value.aiDiffSummaryByProject[e]!==!1:!1});function re(){let e=w.value;if(e&&G.value.layoutsByProject?.[e]){G.value.layout={...G.value.layoutsByProject[e]};return}}function q(e){let t=document.documentElement;e===`dark`?t.setAttribute(`data-theme`,`dark`):e===`light`?t.removeAttribute(`data-theme`):window.matchMedia(`(prefers-color-scheme: dark)`).matches?t.setAttribute(`data-theme`,`dark`):t.removeAttribute(`data-theme`)}function ie(){let e=document.documentElement.getAttribute(`data-theme`)===`dark`?`light`:`dark`;return N.value=e,q(e),Le({theme:e}).catch(e=>{console.error(`保存主题切换结果失败:`,e)}),e}q(N.value);let J=e(()=>({defaultCommitMessage:t.value,descriptionTemplates:r.value,scopeTemplates:i.value,messageTemplates:o.value,commandTemplates:c.value,lockedFiles:l.value,customCommands:u.value,orchestrations:p.value,startupItems:m.value,startupAutoRun:g.value,afterQuickPushAction:_.value,currentDirectory:w.value})),ae=e(()=>!!(x.value&&x.value.trim()));async function oe(){try{let e=await fetch(`/api/config/open-file`,{method:`POST`,headers:{"Content-Type":`application/json`}}),t=await e.json().catch(()=>({}));return e.ok&&t?.success?(n.success(f(`@D50BB:已打开系统配置文件`)),!0):(n.error(`${f(`@D50BB:打开系统配置文件失败: `)}${t?.error||``}`),!1)}catch(e){return n.error(`${f(`@D50BB:打开系统配置文件失败: `)}${e.message}`),!1}}async function Y(e=!1){if(!e&&b.value&&!v.value)return console.log(f(`@D50BB:使用缓存的配置信息`)),J.value;v.value=!0;try{v.value=!0,console.log(f(`@D50BB:加载配置信息...`));let e=await fetch(`/api/config/getConfig`),a=await e.json().catch(()=>({}));if(!e.ok||a&&a.success===!1){let e=String(a?.error||f(`@D50BB:加载配置失败`)),t=String(a?.configPath||``),r=t?`\n${f(`@D50BB:配置文件`)}: ${t}`:``;return n.error(`${f(`@D50BB:加载配置失败: `)}${e}${r}`),x.value=e,C.value=t,null}if(x.value=``,C.value=``,t.value=a.defaultCommitMessage||``,r.value=a.descriptionTemplates||[],i.value=a.scopeTemplates||[],o.value=a.messageTemplates||[],c.value=a.commandTemplates||[],l.value=a.lockedFiles||[],u.value=a.customCommands||[],p.value=a.orchestrations||[],m.value=(a.startupItems||[]).map(e=>({id:String(e?.id??``),type:e?.type===`workflow`?`workflow`:`command`,refId:String(e?.refId??e?.commandId??``),createdAt:Number(e?.createdAt??Date.now()),enabled:typeof e?.enabled!=`boolean`||e.enabled})).filter(e=>e.id&&e.refId),g.value=a.startupAutoRun||!1,_.value={enabled:!!a?.afterQuickPushAction?.enabled,type:a?.afterQuickPushAction?.type===`workflow`?`workflow`:`command`,refId:String(a?.afterQuickPushAction?.refId||``).trim()},a.isStandardCommit!==void 0&&(O.value=!!a.isStandardCommit),a.skipHooks!==void 0&&(k.value=!!a.skipHooks),a.autoQuickPushOnEnter!==void 0&&(j.value=!!a.autoQuickPushOnEnter),a.autoSetDefaultMessage!==void 0&&(E.value=!!a.autoSetDefaultMessage),a.autoClosePushModal!==void 0&&(T.value=!!a.autoClosePushModal),a.pullBeforePush!==void 0&&(M.value=!!a.pullBeforePush),Array.isArray(a.models)&&(F.value=a.models),Number.isFinite(Number(a.aiMaxToolIterations))&&Number(a.aiMaxToolIterations)>0&&(I.value=Math.floor(Number(a.aiMaxToolIterations))),Number.isFinite(Number(a.aiMaxRequestTokens))&&Number(a.aiMaxRequestTokens)>0&&(L.value=Math.floor(Number(a.aiMaxRequestTokens))),Number.isFinite(Number(a?.aiRequestBudget?.maxUserChars))&&Number(a.aiRequestBudget.maxUserChars)>0&&(B.value={maxTokens:Math.floor(Number(a.aiRequestBudget.maxTokens)||0),maxChars:Math.floor(Number(a.aiRequestBudget.maxChars)||0),maxMessages:Math.floor(Number(a.aiRequestBudget.maxMessages)||0),maxUserChars:Math.floor(Number(a.aiRequestBudget.maxUserChars))}),Array.isArray(a.agentPresetPrompts)&&(R.value=a.agentPresetPrompts.filter(e=>e&&typeof e.label==`string`&&typeof e.prompt==`string`).map(e=>({id:String(e.id??``),label:e.label,prompt:e.prompt}))),h(a.taskExecutor)&&(V.value=a.taskExecutor),typeof a.agentDefaultPrompt==`string`&&(z.value=a.agentDefaultPrompt),typeof a.notifyPageOnTaskDone==`boolean`&&(H.value=a.notifyPageOnTaskDone),typeof a.notifyBrowserOnTaskDone==`boolean`&&(ee.value=a.notifyBrowserOnTaskDone),typeof a.notifySoundOnTaskDone==`boolean`&&(U.value=a.notifySoundOnTaskDone),a.theme&&[`light`,`dark`,`auto`].includes(a.theme)&&(N.value=a.theme,q(a.theme)),a.locale&&[`zh-CN`,`en-US`].includes(a.locale)){P.value=a.locale,d(a.locale);let e=y();e.currentLocale=a.locale}if(a.currentDirectory&&(w.value=a.currentDirectory),a.ui==null){let e=e=>{try{return localStorage.getItem(e)}catch{return null}},t={},n=e(`zen-gitsync-layout-left-ratio`),r=e(`zen-gitsync-layout-mid-ratio`),i=e(`zen-gitsync-layout-right-ratio`),a=e(`zen-gitsync-layout-top-ratio`);if(n||r||i||a){let e=(e,t)=>{let n=e==null?NaN:parseFloat(e);return Number.isFinite(n)?n:t};t.layout={leftRatio:e(n,W.layout.leftRatio),midRatio:e(r,W.layout.midRatio),rightRatio:e(i,W.layout.rightRatio),topRatio:e(a,W.layout.topRatio)}}let o=e(`zen-gitsync-file-list-view-mode`);(o===`list`||o===`tree`)&&(t.fileListViewMode=o);let s=e(`zen-gitsync-filediff-ratio`)??e(`fileDiff.splitPercent`);if(s!=null){let e=parseFloat(s);Number.isFinite(e)&&(t.fileDiffSplitPercent=Math.min(85,Math.max(15,e)))}let c=e(`useTerminal`),l=e(`isConsoleExpanded`),u=e(`showTerminalSessions`),d=e(`zen-gitsync-commandconsole-ratio`);if(c!==null||l!==null||u!==null||d!=null){let e=d==null?NaN:parseFloat(d);t.commandConsole={useTerminal:c!==`false`,expanded:l!==`false`,showTerminalSessions:u==null||u===`true`,splitPercent:Number.isFinite(e)?Math.min(85,Math.max(15,e)):W.commandConsole.splitPercent}}let f=e(`zen-gitsync-editor-auto-save`);f!=null&&(t.editorAutoSave=f===`true`),Object.keys(t).length>0&&(G.value={...G.value,...t}),Object.keys(t).length>0&&$(t,{immediate:!0}).catch(e=>{console.error(`迁移 UI 设置到文件失败:`,e)});try{[`zen-gitsync-theme`,`zen-gitsync-locale`,`zen-gitsync-editor-auto-save`,`zen-gitsync-file-list-view-mode`,`zen-gitsync-filediff-ratio`,`fileDiff.splitPercent`,`isConsoleExpanded`,`useTerminal`,`showTerminalSessions`,`zen-gitsync-commandconsole-ratio`,`zen-gitsync-layout-left-ratio`,`zen-gitsync-layout-mid-ratio`,`zen-gitsync-layout-right-ratio`,`zen-gitsync-layout-top-ratio`,`locale`].forEach(e=>localStorage.removeItem(e))}catch{}}else{let e=a.ui.layoutsByProject&&typeof a.ui.layoutsByProject==`object`&&!Array.isArray(a.ui.layoutsByProject)?a.ui.layoutsByProject:{},t={};for(let[n,r]of Object.entries(e))if(r&&typeof r==`object`&&!Array.isArray(r)){let e=r;t[n]={leftRatio:Number.isFinite(Number(e.leftRatio))?Number(e.leftRatio):W.layout.leftRatio,midRatio:Number.isFinite(Number(e.midRatio))?Number(e.midRatio):W.layout.midRatio,rightRatio:Number.isFinite(Number(e.rightRatio))?Number(e.rightRatio):W.layout.rightRatio,topRatio:Number.isFinite(Number(e.topRatio))?Number(e.topRatio):W.layout.topRatio}}let n=a.ui.aiDiffSummaryByProject&&typeof a.ui.aiDiffSummaryByProject==`object`&&!Array.isArray(a.ui.aiDiffSummaryByProject)?a.ui.aiDiffSummaryByProject:{},r={};for(let[e,t]of Object.entries(n))typeof t==`boolean`&&(r[e]=t);let i=a.ui.editorWorkspaceByProject&&typeof a.ui.editorWorkspaceByProject==`object`&&!Array.isArray(a.ui.editorWorkspaceByProject)?a.ui.editorWorkspaceByProject:{},o={},s=e=>Array.isArray(e)?e.filter(e=>typeof e==`string`&&e.length>0):[];for(let[e,t]of Object.entries(i)){if(!t||typeof t!=`object`||Array.isArray(t))continue;let n=t,r=s(n.tabs).slice(0,40);o[e]={expandedDirs:s(n.expandedDirs).slice(0,200),tabs:r,activeTab:typeof n.activeTab==`string`&&r.includes(n.activeTab)?n.activeTab:null}}let c=typeof a.ui.mindmapDir==`string`?a.ui.mindmapDir.trim():``,l=[],u=new Set,d=Array.isArray(a.ui.mindmapDirs)?a.ui.mindmapDirs:[];for(let e of d){if(typeof e!=`string`)continue;let t=e.trim();if(!t)continue;let n=t.toLowerCase();u.has(n)||(u.add(n),l.push(t))}l.length===0&&c&&l.push(c);let f={...W.layout,...a.ui.layout||{}};G.value={layout:f,layoutsByProject:t,aiDiffSummaryByProject:r,fileListViewMode:a.ui.fileListViewMode===`tree`?`tree`:`list`,fileDiffSplitPercent:Number.isFinite(Number(a.ui.fileDiffSplitPercent))?Math.min(85,Math.max(15,Number(a.ui.fileDiffSplitPercent))):W.fileDiffSplitPercent,diffPreviewSplitPercent:Number.isFinite(Number(a.ui.diffPreviewSplitPercent))?Math.min(85,Math.max(25,Number(a.ui.diffPreviewSplitPercent))):W.diffPreviewSplitPercent,commandConsole:{expanded:typeof a.ui.commandConsole?.expanded==`boolean`?a.ui.commandConsole.expanded:W.commandConsole.expanded,useTerminal:typeof a.ui.commandConsole?.useTerminal==`boolean`?a.ui.commandConsole.useTerminal:W.commandConsole.useTerminal,showTerminalSessions:typeof a.ui.commandConsole?.showTerminalSessions==`boolean`?a.ui.commandConsole.showTerminalSessions:W.commandConsole.showTerminalSessions,splitPercent:Number.isFinite(Number(a.ui.commandConsole?.splitPercent))?Math.min(85,Math.max(15,Number(a.ui.commandConsole.splitPercent))):W.commandConsole.splitPercent},editorAutoSave:typeof a.ui.editorAutoSave==`boolean`?a.ui.editorAutoSave:W.editorAutoSave,fileTreeAutoRefresh:typeof a.ui.fileTreeAutoRefresh==`boolean`?a.ui.fileTreeAutoRefresh:W.fileTreeAutoRefresh,editorSidebarWidth:Number.isFinite(Number(a.ui.editorSidebarWidth))?Math.min(400,Math.max(140,Number(a.ui.editorSidebarWidth))):W.editorSidebarWidth,mindmapDirs:l,mindmapDir:c,headerToolsHidden:Array.isArray(a.ui.headerToolsHidden)?a.ui.headerToolsHidden.filter(e=>typeof e==`string`):[],lastTaskExecutor:h(a.ui.lastTaskExecutor)?a.ui.lastTaskExecutor:W.lastTaskExecutor,pickerGlobalSearch:typeof a.ui.pickerGlobalSearch==`boolean`?a.ui.pickerGlobalSearch:W.pickerGlobalSearch,markdownTheme:typeof a.ui.markdownTheme==`string`&&D.includes(a.ui.markdownTheme)?a.ui.markdownTheme:W.markdownTheme,editorWorkspaceByProject:o}}return re(),A(G.value.markdownTheme),K.value=!0,b.value=!0,console.log(f(`@D50BB:配置信息加载完成`)),J.value}catch(e){return console.error(`加载配置失败:`,e),n.error(`${f(`@D50BB:加载配置失败: `)}${e.message}`),x.value=e.message,null}finally{v.value=!1}}async function se(){try{await fetch(`/api/config/save-commit-settings`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({isStandardCommit:O.value,skipHooks:k.value,autoQuickPushOnEnter:j.value,autoSetDefaultMessage:E.value,autoClosePushModal:T.value,pullBeforePush:M.value})})}catch(e){console.error(`保存提交设置失败:`,e)}}a([O,k,j,E,T,M],()=>{b.value&&se()});let X=null,Z={};async function Q(){if(X&&=(clearTimeout(X),null),Object.keys(Z).length===0)return;let e=Z;Z={};try{await fetch(`/api/config/save-ui-settings`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})}catch(e){console.error(`保存 UI 设置失败:`,e)}}async function $(e,t={}){if(K.value){if(t.immediate){Object.assign(Z,e),await Q();return}Object.assign(Z,e),X&&clearTimeout(X),X=setTimeout(()=>{Q()},300)}}async function ce(e){h(e)&&G.value.lastTaskExecutor!==e&&(G.value.lastTaskExecutor=e,await $({lastTaskExecutor:e},{immediate:!0}))}let le=e(()=>h(G.value.lastTaskExecutor)?G.value.lastTaskExecutor:V.value);async function ue(){G.value.layout={...W.layout};let e=w.value;return e&&(G.value.layoutsByProject={...G.value.layoutsByProject,[e]:{...G.value.layout}}),await $({layoutsByProject:G.value.layoutsByProject},{immediate:!0}),G.value.layout}async function de(e){let t=w.value;t&&(G.value.aiDiffSummaryByProject={...G.value.aiDiffSummaryByProject,[t]:e},await $({aiDiffSummaryByProject:{[t]:e}},{immediate:!0}))}async function fe(e){if(!Number.isFinite(e))return;let t=Math.min(400,Math.max(140,e));G.value.editorSidebarWidth=t,await $({editorSidebarWidth:t})}function pe(e){let t=w.value;if(!t)return;let n=e.tabs.slice(0,40);G.value.editorWorkspaceByProject={...G.value.editorWorkspaceByProject,[t]:{expandedDirs:e.expandedDirs.slice(0,200),tabs:n,activeTab:e.activeTab&&n.includes(e.activeTab)?e.activeTab:null}},$({editorWorkspaceByProject:G.value.editorWorkspaceByProject})}function me(e){let t=e??w.value;return t?G.value.editorWorkspaceByProject[t]??null:null}a(()=>G.value.fileListViewMode,e=>{K.value&&$({fileListViewMode:e})}),a(()=>G.value.fileDiffSplitPercent,e=>{K.value&&$({fileDiffSplitPercent:e})}),a(()=>G.value.diffPreviewSplitPercent,e=>{K.value&&e!=null&&$({diffPreviewSplitPercent:e})}),a(()=>G.value.editorAutoSave,e=>{K.value&&$({editorAutoSave:e})}),a(()=>G.value.fileTreeAutoRefresh,e=>{K.value&&$({fileTreeAutoRefresh:e})}),a(()=>G.value.headerToolsHidden,e=>{K.value&&Array.isArray(e)&&$({headerToolsHidden:e})}),a(()=>G.value.mindmapDirs,e=>{K.value&&Array.isArray(e)&&$({mindmapDirs:e})}),a(()=>G.value.pickerGlobalSearch,e=>{K.value&&$({pickerGlobalSearch:e})});let he=e(()=>G.value.markdownTheme);async function ge(e){let t=D.includes(e)?e:W.markdownTheme;return G.value.markdownTheme=t,A(t),await $({markdownTheme:t},{immediate:!0}),t}a(()=>G.value.markdownTheme,e=>{K.value&&typeof e==`string`&&e&&(A(e),$({markdownTheme:e}))}),a(()=>G.value.layout,e=>{if(!K.value)return;let t=w.value;t&&(G.value.layoutsByProject={...G.value.layoutsByProject,[t]:e},$({layoutsByProject:G.value.layoutsByProject}))},{deep:!0}),a(()=>G.value.commandConsole,e=>{K.value&&$({commandConsole:e})},{deep:!0}),typeof window<`u`&&window.addEventListener(`beforeunload`,()=>{Q()});async function _e(e){try{let r=await(await fetch(`/api/config/saveDefaultMessage`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({defaultCommitMessage:e})})).json();return r.success?(t.value=e,n.success(f(`@D50BB:默认提交信息已保存`)),!0):(n.error(`${f(`@D50BB:保存失败: `)}${r.error}`),!1)}catch(e){return n.error(`${f(`@D50BB:保存失败: `)}${e.message}`),!1}}async function ve(e){try{let t=await(await fetch(`/api/config/save-after-quick-push-action`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({afterQuickPushAction:{enabled:!!e?.enabled,type:e?.type===`workflow`?`workflow`:`command`,refId:String(e?.refId||``).trim()}})})).json();return t.success?(_.value={enabled:!!e?.enabled,type:e?.type===`workflow`?`workflow`:`command`,refId:String(e?.refId||``).trim()},!0):(n.error(`保存提交后启动项失败: ${t.error}`),!1)}catch(e){return n.error(`保存提交后启动项失败: ${e.message}`),!1}}async function ye(e,t){try{let a=await(await fetch(`/api/config/save-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({template:e,type:t})})).json();return a.success?(t===`description`?r.value.includes(e)||r.value.push(e):t===`scope`?i.value.includes(e)||i.value.push(e):t===`message`?o.value.includes(e)||o.value.push(e):t===`command`&&(c.value.includes(e)||c.value.push(e)),n.success(f(`@D50BB:模板已保存`)),!0):(n.error(`${f(`@D50BB:保存模板失败: `)}${a.error}`),!1)}catch(e){return n.error(`${f(`@D50BB:保存模板失败: `)}${e.message}`),!1}}async function be(e,t){try{let a=await(await fetch(`/api/config/delete-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({template:e,type:t})})).json();return a.success?(t===`description`?r.value=r.value.filter(t=>t!==e):t===`scope`?i.value=i.value.filter(t=>t!==e):t===`message`?o.value=o.value.filter(t=>t!==e):t===`command`&&(c.value=c.value.filter(t=>t!==e)),n.success(f(`@D50BB:模板已删除`)),!0):(n.error(`${f(`@D50BB:删除模板失败: `)}${a.error}`),!1)}catch(e){return n.error(`${f(`@D50BB:删除模板失败: `)}${e.message}`),!1}}async function xe(e,t,a){try{let s=await(await fetch(`/api/config/update-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({oldTemplate:e,newTemplate:t,type:a})})).json();if(s.success){if(a===`description`){let n=r.value.indexOf(e);n!==-1&&(r.value[n]=t)}else if(a===`scope`){let n=i.value.indexOf(e);n!==-1&&(i.value[n]=t)}else if(a===`message`){let n=o.value.indexOf(e);n!==-1&&(o.value[n]=t)}else if(a===`command`){let n=c.value.indexOf(e);n!==-1&&(c.value[n]=t)}return n.success(f(`@D50BB:模板已更新`)),!0}return n.error(`${f(`@D50BB:更新模板失败: `)}${s.error}`),!1}catch(e){return n.error(`${f(`@D50BB:更新模板失败: `)}${e.message}`),!1}}async function Se(e,t){try{let a=await(await fetch(`/api/config/pin-template`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({template:e,type:t})})).json();return a.success?(t===`description`?(r.value=r.value.filter(t=>t!==e),r.value.unshift(e)):t===`scope`?(i.value=i.value.filter(t=>t!==e),i.value.unshift(e)):t===`message`?(o.value=o.value.filter(t=>t!==e),o.value.unshift(e)):t===`command`&&(c.value=c.value.filter(t=>t!==e),c.value.unshift(e)),n.success(f(`@D50BB:模板已置顶`)),!0):(n.error(`${f(`@D50BB:置顶模板失败: `)}${a.error}`),!1)}catch(e){return n.error(`${f(`@D50BB:置顶模板失败: `)}${e.message}`),!1}}async function Ce(){try{let e=await(await fetch(`/api/locked-files`)).json();return e.success?(l.value=e.lockedFiles||[],e.lockedFiles):(n.error(`${f(`@D50BB:加载锁定文件列表失败: `)}${e.error}`),[])}catch(e){return console.error(`加载锁定文件列表失败:`,e),n.error(`${f(`@D50BB:加载锁定文件列表失败: `)}${e.message}`),[]}}async function we(e){try{let t=await(await fetch(`/api/lock-file`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return t.success?(await Ce(),n.success(`${f(`@D50BB:文件已锁定: `)}${e}`),!0):(n.error(`${f(`@D50BB:锁定文件失败: `)}${t.error}`),!1)}catch(e){return console.error(`锁定文件失败:`,e),n.error(`${f(`@D50BB:锁定文件失败: `)}${e.message}`),!1}}async function Te(e){try{let t=await(await fetch(`/api/unlock-file`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return t.success?(await Ce(),n.success(`${f(`@D50BB:文件已解锁: `)}${e}`),!0):(n.error(`${f(`@D50BB:解锁文件失败: `)}${t.error}`),!1)}catch(e){return console.error(`解锁文件失败:`,e),n.error(`${f(`@D50BB:解锁文件失败: `)}${e.message}`),!1}}async function Ee(e){try{let t=await(await fetch(`/api/check-file-lock`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})})).json();return t.success?t.isLocked:(console.error(`检查文件锁定状态失败:`,t.error),!1)}catch(e){return console.error(`检查文件锁定状态失败:`,e),!1}}async function De(e){try{let t=await(await fetch(`/api/config/save-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({command:e})})).json();return t.success?(await Y(!0),n.success(f(`@CMD01:命令已保存`)),!0):(n.error(`${f(`@CMD01:保存命令失败: `)}${t.error}`),!1)}catch(e){return n.error(`${f(`@CMD01:保存命令失败: `)}${e.message}`),!1}}async function Oe(e){try{let t=await(await fetch(`/api/config/delete-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e})})).json();return t.success?(await Y(!0),n.success(f(`@CMD01:命令已删除`)),!0):(n.error(`${f(`@CMD01:删除命令失败: `)}${t.error}`),!1)}catch(e){return n.error(`${f(`@CMD01:删除命令失败: `)}${e.message}`),!1}}async function ke(e,t){try{let r=await(await fetch(`/api/config/update-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e,command:t})})).json();return r.success?(await Y(!0),n.success(f(`@CMD01:命令已更新`)),!0):(n.error(`${f(`@CMD01:更新命令失败: `)}${r.error}`),!1)}catch(e){return n.error(`${f(`@CMD01:更新命令失败: `)}${e.message}`),!1}}async function Ae(e){try{let t=await(await fetch(`/api/config/pin-custom-command`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e})})).json();return t.success?(await Y(!0),!0):(n.error(t.error),!1)}catch(e){return n.error(e.message),!1}}async function je(e){try{let t=await(await fetch(`/api/config/save-orchestration`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({orchestration:e})})).json();return t.success?(await Y(!0),n.success(f(`@ORCH:编排已保存`)),t.orchestration||null):(n.error(`${f(`@ORCH:保存编排失败: `)}${t.error}`),null)}catch(e){return n.error(`${f(`@ORCH:保存编排失败: `)}${e.message}`),null}}async function Me(e){try{let t=await(await fetch(`/api/config/delete-orchestration`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e})})).json();return t.success?(await Y(!0),n.success(f(`@ORCH:编排已删除`)),!0):(n.error(`${f(`@ORCH:删除编排失败: `)}${t.error}`),!1)}catch(e){return n.error(`${f(`@ORCH:删除编排失败: `)}${e.message}`),!1}}async function Ne(e,t){try{let r=await(await fetch(`/api/config/update-orchestration`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({id:e,orchestration:t})})).json();return r.success?(await Y(!0),n.success(f(`@ORCH:编排已更新`)),!0):(n.error(`${f(`@ORCH:更新编排失败: `)}${r.error}`),!1)}catch(e){return n.error(`${f(`@ORCH:更新编排失败: `)}${e.message}`),!1}}async function Pe(e,t){try{let r=await(await fetch(`/api/config/save-startup-items`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({startupItems:e,startupAutoRun:t===void 0?g.value:t})})).json();return r.success?(m.value=e,t!==void 0&&(g.value=t),!0):(n.error(`保存启动项失败: ${r.error}`),!1)}catch(e){return n.error(`保存启动项失败: ${e.message}`),!1}}async function Fe(e){try{let t=await(await fetch(`/api/config/save-ai-settings`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({...e.aiMaxToolIterations===void 0?{}:{aiMaxToolIterations:e.aiMaxToolIterations},...e.aiMaxRequestTokens===void 0?{}:{aiMaxRequestTokens:e.aiMaxRequestTokens},...e.agentPresetPrompts===void 0?{}:{agentPresetPrompts:e.agentPresetPrompts},...e.agentDefaultPrompt===void 0?{}:{agentDefaultPrompt:e.agentDefaultPrompt}})})).json();return t.success?(t.aiMaxToolIterations!==void 0&&(I.value=Number(t.aiMaxToolIterations)||e.aiMaxToolIterations||I.value),t.aiMaxRequestTokens!==void 0&&(L.value=Number(t.aiMaxRequestTokens)||e.aiMaxRequestTokens||L.value),t.aiRequestBudget&&Number(t.aiRequestBudget.maxUserChars)>0&&(B.value={maxTokens:Math.floor(Number(t.aiRequestBudget.maxTokens)||0),maxChars:Math.floor(Number(t.aiRequestBudget.maxChars)||0),maxMessages:Math.floor(Number(t.aiRequestBudget.maxMessages)||0),maxUserChars:Math.floor(Number(t.aiRequestBudget.maxUserChars))}),Array.isArray(t.agentPresetPrompts)&&(R.value=t.agentPresetPrompts),typeof t.agentDefaultPrompt==`string`&&(z.value=t.agentDefaultPrompt),!0):(n.error(`${f(`@D50BB:保存 AI 设置失败: `)}${t.error}`),!1)}catch(e){return n.error(`${f(`@D50BB:保存 AI 设置失败: `)}${e.message}`),!1}}async function Ie(e){try{let t=await(await fetch(`/api/config/save-models`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({models:e})})).json();return t.success?(F.value=e,!0):(n.error(`${f(`@D50BB:保存模型失败: `)}${t.error}`),!1)}catch(e){return n.error(`${f(`@D50BB:保存模型失败: `)}${e.message}`),!1}}async function Le(e){try{let t=await(await fetch(`/api/config/save-general-settings`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)})).json();if(t.success){if(e.theme&&(N.value=e.theme,q(e.theme)),e.locale){P.value=e.locale,d(e.locale);let t=y();t.currentLocale=e.locale}return h(e.taskExecutor)&&(V.value=e.taskExecutor),typeof e.notifyPageOnTaskDone==`boolean`&&(H.value=e.notifyPageOnTaskDone),typeof e.notifyBrowserOnTaskDone==`boolean`&&(ee.value=e.notifyBrowserOnTaskDone),typeof e.notifySoundOnTaskDone==`boolean`&&(U.value=e.notifySoundOnTaskDone),!0}return n.error(`保存通用设置失败: ${t.error}`),!1}catch(e){return n.error(`保存通用设置失败: ${e.message}`),!1}}return{models:F,aiMaxToolIterations:I,aiMaxRequestTokens:L,agentPresetPrompts:R,agentDefaultPrompt:z,aiRequestBudget:B,taskExecutor:V,resolvedTaskExecutor:le,setLastTaskExecutor:ce,notifyPageOnTaskDone:H,notifyBrowserOnTaskDone:ee,notifySoundOnTaskDone:U,defaultCommitMessage:t,descriptionTemplates:r,scopeTemplates:i,messageTemplates:o,commandTemplates:c,lockedFiles:l,customCommands:u,orchestrations:p,startupItems:m,startupAutoRun:g,afterQuickPushAction:_,isLoading:v,isLoaded:b,configLoadError:x,configFilePath:C,hasConfigLoadError:ae,currentDirectory:w,config:J,autoClosePushModal:T,autoSetDefaultMessage:E,isStandardCommit:O,skipHooks:k,autoQuickPushOnEnter:j,pullBeforePush:M,theme:N,locale:P,ui:G,isUiLoaded:K,aiDiffSummaryEnabled:ne,markdownTheme:he,loadConfig:Y,setCurrentDirectory:te,openSystemConfigFile:oe,saveTemplate:ye,saveModels:Ie,saveAiSettings:Fe,saveGeneralSettings:Le,saveUiSettings:$,setAiDiffSummaryEnabled:de,setEditorSidebarWidth:fe,saveEditorWorkspace:pe,getEditorWorkspace:me,setMarkdownTheme:ge,resetUiLayout:ue,applyTheme:q,toggleTheme:ie,saveDefaultMessage:_e,deleteTemplate:be,updateTemplate:xe,pinTemplate:Se,loadLockedFiles:Ce,lockFile:we,unlockFile:Te,isFileLocked:Ee,saveCustomCommand:De,deleteCustomCommand:Oe,updateCustomCommand:ke,pinCustomCommand:Ae,saveOrchestration:je,deleteOrchestration:Me,updateOrchestration:Ne,saveStartupItems:Pe,saveAfterQuickPushAction:ve,saveCommitSettings:se}});export{j as a,h as c,M as i,g as l,C as n,y as o,k as r,m as s,N as t};
|