zen-gitsync 2.13.7 → 2.13.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/README.md +2 -0
- package/package.json +1 -1
- package/scripts/README_COLOR_CONVERTER.md +196 -196
- package/scripts/README_FONTSIZE_CONVERTER.md +278 -278
- package/scripts/README_SPACING_CONVERTER.md +126 -126
- package/scripts/README_STYLE_VARS.md +180 -180
- package/scripts/verify-file-search.mjs +281 -0
- package/scripts/verify-subtask-row.mjs +284 -0
- package/src/ui/public/assets/EditorView-Dvg7sMyU.css +1 -0
- package/src/ui/public/assets/EditorView-eQBqgBEd.js +0 -0
- package/src/ui/public/assets/SourceMapView-BLkrjBFW.js +3 -0
- package/src/ui/public/assets/WorkbenchView-BMtAZx07.css +1 -0
- package/src/ui/public/assets/WorkbenchView-D2eEOP1R.js +6 -0
- package/src/ui/public/assets/{_plugin-vue_export-helper-CSyhX3vt.js → _plugin-vue_export-helper-BMDM_R2D.js} +3 -3
- package/src/ui/public/assets/{css.worker-CvXBzhp8.js → css.worker-Wv5dxAWO.js} +1 -1
- package/src/ui/public/assets/{html.worker-BO6WuOEO.js → html.worker-CQP8QQsS.js} +1 -1
- package/src/ui/public/assets/index-BaFDF44N.js +66 -0
- package/src/ui/public/assets/index-BvzxdkDp.css +1 -0
- package/src/ui/public/assets/{json.worker-BkJRGcCJ.js → json.worker-DzV-CpCQ.js} +1 -1
- package/src/ui/public/assets/{ts.worker-B0J26iPs.js → ts.worker-Dth06zuC.js} +15 -15
- package/src/ui/public/assets/{vendor-C30huq-U.js → vendor-CDAfMQIV.js} +240 -247
- package/src/ui/public/assets/vendor-CIeR0bF6.css +1 -0
- package/src/ui/public/favicon.svg +75 -75
- package/src/ui/public/index.html +23 -23
- package/src/ui/public/logo.svg +74 -74
- package/src/ui/public/assets/EditorView-CbfYBgbJ.js +0 -0
- package/src/ui/public/assets/EditorView-DEd8QuPp.css +0 -1
- package/src/ui/public/assets/SourceMapView-CyGL7mqz.js +0 -3
- package/src/ui/public/assets/WorkbenchView-B6BA_Qbo.css +0 -1
- package/src/ui/public/assets/WorkbenchView-Bu9HDEKs.js +0 -6
- package/src/ui/public/assets/index-BTlhS8hO.js +0 -66
- package/src/ui/public/assets/index-p1e3YDoA.css +0 -1
- package/src/ui/public/assets/vendor-Bq2rS2vY.css +0 -1
- /package/src/ui/public/assets/{editor.worker-Cn2oRESe.js → editor.worker-Bd9IXS8d.js} +0 -0
- /package/src/ui/public/assets/{rolldown-runtime-CMxvf4Kt.js → rolldown-runtime-BM3Ffeng.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ai-split-status[data-v-fa5bf380]{align-items:center;gap:var(--spacing-base);margin-bottom:var(--spacing-md);color:var(--el-color-primary);font-size:13px;display:flex}.ai-split-status.is-error[data-v-fa5bf380]{color:var(--el-color-danger)}.ai-split-status .is-loading[data-v-fa5bf380]{animation:2s linear infinite rotating-fa5bf380}@keyframes rotating-fa5bf380{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ai-split-tabs[data-v-fa5bf380]{margin-top:-8px}.ai-split-tab-count[data-v-fa5bf380]{color:var(--text-tertiary);font-variant-numeric:tabular-nums;margin-left:4px;font-size:11px}.ai-split-prompt-actions[data-v-fa5bf380]{justify-content:flex-end;margin-bottom:8px;display:flex}.ai-split-prompt-editor[data-v-fa5bf380]{flex-direction:column;gap:8px;margin-bottom:12px;display:flex}.ai-split-prompt-editor__actions[data-v-fa5bf380]{justify-content:flex-end;gap:8px;display:flex}.ai-split-subhead[data-v-fa5bf380]{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.3px;margin:12px 0 4px;font-size:12px;font-weight:600}.ai-split-pre[data-v-fa5bf380]{background:var(--bg-code);color:var(--text-primary);max-height:280px;font-family:var(--font-mono,ui-monospace, monospace);white-space:pre-wrap;word-break:break-word;border-radius:4px;margin:0;padding:10px 12px;font-size:12px;line-height:1.6;overflow:auto}.ai-split-pre--think[data-v-fa5bf380]{color:var(--text-secondary);background:#8b5cf60f;border-left:2px solid #8b5cf673;font-style:italic}.ai-split-empty[data-v-fa5bf380]{text-align:center;color:var(--text-tertiary);padding:32px;font-size:13px}.ai-split-list[data-v-fa5bf380]{flex-direction:column;gap:8px;max-height:360px;margin:0;padding:0;list-style:none;display:flex;overflow:auto}.ai-split-list__item[data-v-fa5bf380]{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:4px;gap:10px;padding:10px 12px;display:flex}.ai-split-list__no[data-v-fa5bf380]{background:var(--el-color-primary);color:#fff;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:12px;font-weight:600;display:flex}.ai-split-list__body[data-v-fa5bf380]{flex:1;min-width:0}.ai-split-list__title[data-v-fa5bf380]{color:var(--text-primary);margin-bottom:4px;font-size:13px;font-weight:600}.ai-split-list__desc[data-v-fa5bf380]{color:var(--text-secondary);white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.5}.ai-split-parse-error[data-v-fa5bf380]{margin-bottom:10px}.ai-split-parse-error__detail[data-v-fa5bf380]{font-family:var(--font-mono,ui-monospace, monospace);word-break:break-word;color:var(--text-primary);margin:4px 0 6px;font-size:12px}.ai-split-parse-error__hint[data-v-fa5bf380]{color:var(--text-secondary);margin-bottom:8px;font-size:12px;line-height:1.55}.ai-split-parse-error__actions[data-v-fa5bf380]{gap:8px;display:flex}.ai-split-footer-hint[data-v-fa5bf380]{color:var(--el-color-warning);background:#e6a23c1a;border-radius:4px;align-items:center;gap:6px;margin-top:8px;padding:8px 10px;font-size:12px;display:flex}.ai-split-raw-toolbar[data-v-fa5bf380]{background:#409eff0f;border-radius:4px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;padding:6px 10px;font-size:12px;display:flex}.ai-split-raw-tip[data-v-fa5bf380]{color:var(--text-secondary)}.ai-split-raw-editor[data-v-fa5bf380] .el-textarea__inner{font-family:var(--font-mono,ui-monospace, monospace);max-height:360px;font-size:12px;line-height:1.6}.wb-log-details[data-v-ae32f993]{border:1px solid var(--border-color);border-radius:var(--radius-sm,4px);background:var(--bg-code);margin-top:6px;overflow:hidden}.wb-log-summary[data-v-ae32f993]{cursor:pointer;color:var(--text-secondary);-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:8px;padding:6px 10px;font-size:12px;list-style:none;display:flex}.wb-log-summary[data-v-ae32f993]::-webkit-details-marker{display:none}.wb-log-summary[data-v-ae32f993]:hover{background:#3b82f60f}.wb-log-summary__left[data-v-ae32f993]{flex:1;align-items:center;gap:6px;min-width:0;display:inline-flex}.wb-log-summary__right[data-v-ae32f993]{flex-shrink:0;align-items:center;gap:8px;display:inline-flex}.wb-log-summary__meta[data-v-ae32f993]{color:var(--text-tertiary);font-variant-numeric:tabular-nums;font-size:11px}.wb-log-copy[data-v-ae32f993]{color:var(--text-secondary);background:var(--bg-container);border:1px solid var(--border-color-medium);border-radius:var(--radius-sm,4px);cursor:pointer;-webkit-user-select:none;user-select:none;flex-shrink:0;align-items:center;gap:3px;padding:2px 7px;font-size:11px;font-weight:500;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.wb-log-copy[data-v-ae32f993]: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-ae32f993]:active{background:color-mix(in srgb, var(--color-primary) 18%, transparent)}.wb-log-copy[data-v-ae32f993]:focus-visible{outline:2px solid color-mix(in srgb, var(--color-primary) 50%, transparent);outline-offset:1px}.wb-log-copy--sm[data-v-ae32f993]{padding:1px 6px;font-size:10px}.wb-log-pre__head[data-v-ae32f993]{border-top:1px solid var(--border-color);background:var(--bg-subtle,var(--bg-container));color:var(--text-secondary);align-items:center;gap:8px;padding:5px 10px;font-size:11px;display:flex}.wb-log-pre__label[data-v-ae32f993]{letter-spacing:.3px;text-transform:uppercase;flex:1;font-weight:600}.wb-log-pre__meta[data-v-ae32f993]{color:var(--text-tertiary);font-variant-numeric:tabular-nums;font-size:11px}.wb-log-pre[data-v-ae32f993]{max-height:600px;font-family:var(--font-mono,ui-monospace, monospace);color:var(--text-primary);background:var(--bg-code);white-space:pre-wrap;word-break:break-word;margin:0;padding:8px 10px;font-size:12px;line-height:1.55;overflow:auto}.wb-log-section[data-v-ae32f993]{border-top:1px solid var(--border-color)}.wb-log-section__summary[data-v-ae32f993]{cursor:pointer;color:var(--text-secondary);-webkit-user-select:none;user-select:none;background:var(--bg-subtle,var(--bg-container));justify-content:space-between;align-items:center;gap:8px;padding:5px 10px;font-size:11px;list-style:none;display:flex}.wb-log-section__summary[data-v-ae32f993]::-webkit-details-marker{display:none}.wb-log-section__summary[data-v-ae32f993]:hover{background:#3b82f60f}.wb-log-section__tag[data-v-ae32f993]{letter-spacing:.3px;text-transform:uppercase;border-radius:3px;padding:1px 6px;font-size:10px;font-weight:600;display:inline-block}.wb-log-section__tag--user[data-v-ae32f993]{color:#b45309;background:#f59e0b2e}.wb-log-section__tag--think[data-v-ae32f993]{color:#6d28d9;background:#8b5cf62e}.wb-log-section__count[data-v-ae32f993]{color:var(--text-tertiary);font-variant-numeric:tabular-nums;font-size:10px}.wb-log-section__pre[data-v-ae32f993]{max-height:800px;font-family:var(--font-mono,ui-monospace, monospace);white-space:pre-wrap;word-break:break-word;margin:0;padding:8px 10px;font-size:11px;line-height:1.55;overflow:auto}.wb-log-section__pre--user[data-v-ae32f993]{color:var(--text-primary);background:#f59e0b0f;border-left:2px solid #f59e0b73}.wb-log-section__pre--think[data-v-ae32f993]{color:var(--text-secondary);background:#8b5cf60f;border-left:2px solid #8b5cf673;font-style:italic}.exec-logs[data-v-13ab606e]{flex-direction:column;gap:12px;height:100%;padding:16px 20px;display:flex;overflow:auto}.exec-logs__head[data-v-13ab606e]{align-items:center;gap:12px;display:flex}.exec-logs__title-block[data-v-13ab606e]{flex:1;align-items:baseline;gap:10px;min-width:0;display:flex}.exec-logs__title[data-v-13ab606e]{color:var(--text-primary);margin:0;font-size:18px;font-weight:600}.exec-logs__stats[data-v-13ab606e]{color:var(--text-tertiary);font-variant-numeric:tabular-nums;font-size:12px}.exec-logs__head-actions[data-v-13ab606e]{flex-shrink:0;gap:8px;display:inline-flex}.exec-logs__config[data-v-13ab606e]{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-13ab606e]{color:var(--text-secondary);font-size:12px;font-weight:600}.exec-logs__config-field[data-v-13ab606e]{align-items:center;gap:8px;display:inline-flex}.exec-logs__config-name[data-v-13ab606e]{color:var(--text-tertiary);font-size:12px}.exec-logs__filter[data-v-13ab606e]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.exec-logs__filter-spacer[data-v-13ab606e]{flex:1}.exec-logs__batch-meta[data-v-13ab606e]{color:var(--text-secondary);font-variant-numeric:tabular-nums;font-size:12px}.exec-logs__batch[data-v-13ab606e]{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-13ab606e]{flex-direction:column;flex:1;gap:10px;min-height:200px;display:flex}.exec-logs__empty[data-v-13ab606e]{border:1px dashed var(--border-color);border-radius:var(--radius-md,6px);color:var(--text-tertiary);text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:60px 20px;display:flex}.exec-logs__empty-art[data-v-13ab606e]{opacity:.5;margin-bottom:8px;font-size:36px}.exec-logs__empty-title[data-v-13ab606e]{color:var(--text-secondary);margin-bottom:4px;font-size:14px;font-weight:600}.exec-logs__empty-hint[data-v-13ab606e]{max-width:400px;font-size:12px}.exec-logs__pager[data-v-13ab606e]{justify-content:center;padding-top:8px;display:flex}.exec-card[data-v-13ab606e]{background:var(--bg-container);border:1px solid var(--border-color);border-radius:var(--radius-md,6px);flex-direction:column;gap:6px;padding:12px 14px;transition:border-color .15s,box-shadow .15s;display:flex}.exec-card[data-v-13ab606e]:hover{border-color:var(--color-primary)}.exec-card.is-selected[data-v-13ab606e]{border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary)}.exec-card__head[data-v-13ab606e]{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.exec-card__status[data-v-13ab606e]{border:1px solid;border-radius:999px;flex-shrink:0;padding:1px 8px;font-size:11px;font-weight:600;display:inline-block}.exec-card__title[data-v-13ab606e]{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;min-width:0;max-width:360px;font-size:14px;font-weight:600;overflow:hidden}.exec-card__spacer[data-v-13ab606e]{flex:1}.exec-card__meta[data-v-13ab606e]{color:var(--text-tertiary);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:10px;font-size:11px;display:inline-flex}.exec-card__task[data-v-13ab606e]{white-space:nowrap;text-overflow:ellipsis;max-width:200px;overflow:hidden}.exec-card__time[data-v-13ab606e]{font-variant-numeric:tabular-nums}.exec-card__exit[data-v-13ab606e]{font-family:var(--font-mono,ui-monospace, monospace)}.exec-card__del[data-v-13ab606e]{width:22px;height:22px;color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;font-size:16px;line-height:1;transition:background .15s,color .15s;display:inline-flex}.exec-card__del[data-v-13ab606e]:hover{color:#ef4444;background:#ef44441f}.exec-card__error[data-v-13ab606e]{color:#b91c1c;font-size:12px;font-family:var(--font-mono,ui-monospace, monospace);white-space:pre-wrap;word-break:break-word;background:#ef44440f;border-left:2px solid #ef4444;border-radius:3px;margin:0;padding:6px 10px}.workbench[data-v-1c45d6b6]{background:var(--bg-container);height:100%;color:var(--text-primary);flex-direction:column;display:flex}.wb-tabs[data-v-1c45d6b6]{border-bottom:1px solid var(--border-color);background:var(--bg-subtle,var(--bg-container));flex-shrink:0;align-items:stretch;gap:4px;min-height:40px;padding:0 16px;display:flex}.wb-tab[data-v-1c45d6b6]{appearance:none;color:var(--text-tertiary);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;padding:0 16px;font-size:13px;font-weight:500;transition:color .15s;position:relative}.wb-tab[data-v-1c45d6b6]:hover{color:var(--text-primary)}.wb-tab.is-active[data-v-1c45d6b6]{color:var(--color-primary);font-weight:600}.wb-tab.is-active[data-v-1c45d6b6]:after{content:"";background:var(--color-primary);border-radius:var(--radius-2xs);height:2px;position:absolute;bottom:-1px;left:12px;right:12px}.workbench__editor-row[data-v-1c45d6b6]{flex:1;min-height:0;display:flex}.wb-sidebar[data-v-1c45d6b6]{border-right:1px solid var(--border-color);background:var(--bg-container);flex-direction:column;flex-shrink:0;gap:18px;width:268px;padding:14px 12px 18px;display:flex;overflow-y:auto}.wb-section[data-v-1c45d6b6]{flex-direction:column;flex-shrink:0;gap:8px;min-height:0;display:flex}.wb-section+.wb-section[data-v-1c45d6b6]{border-top:1px dashed var(--border-color);padding-top:16px}.wb-section__head[data-v-1c45d6b6]{align-items:center;gap:6px;padding:0 4px;display:flex}.wb-section__tag[data-v-1c45d6b6]{letter-spacing:.4px;height:18px;color:var(--text-tertiary);background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:var(--radius-sm);text-transform:uppercase;font-variant-numeric:tabular-nums;flex-shrink:0;align-items:center;padding:0 6px;font-size:10px;font-weight:600;display:inline-flex}.wb-section__tag--accent[data-v-1c45d6b6]{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-1c45d6b6]{color:var(--text-secondary);letter-spacing:.2px;flex:1;min-width:0;margin:0;font-size:12px;font-weight:600}.wb-section__action[data-v-1c45d6b6]{color:var(--text-tertiary);border-radius:var(--radius-sm);cursor:pointer;width:28px;height:28px;transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;display:inline-flex}.wb-section__action[data-v-1c45d6b6]:hover{background:var(--tint-primary-12);color:var(--color-primary)}.wb-new-btn[data-v-1c45d6b6]{border:1px solid var(--tint-primary-30);border-radius:var(--radius-md);background:color-mix(in srgb, var(--color-primary) 8%, var(--bg-container));width:100%;height:34px;color:var(--color-primary);letter-spacing:.1px;cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), box-shadow var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);align-items:center;gap:8px;padding:0 12px;font-size:13px;font-weight:600;display:flex}.wb-new-btn__icon[data-v-1c45d6b6]{transition:transform var(--transition-fast) var(--ease-custom);flex-shrink:0;font-size:14px}.wb-new-btn__shortcut[data-v-1c45d6b6]{display:none}.wb-new-btn[data-v-1c45d6b6]:hover{background:color-mix(in srgb, var(--color-primary) 14%, var(--bg-container));border-color:var(--tint-primary-50);box-shadow:var(--wb-card-shadow-hover), 0 0 0 3px var(--tint-primary-10)}.wb-new-btn:hover .wb-new-btn__icon[data-v-1c45d6b6]{transform:rotate(90deg)}.wb-new-btn[data-v-1c45d6b6]:active{transform:scale(.99)}.wb-new-btn[data-v-1c45d6b6]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset-lg)}.wb-task-list[data-v-1c45d6b6],.wb-prompt-list[data-v-1c45d6b6]{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.wb-task-item[data-v-1c45d6b6]{border:1px solid var(--border-color);border-radius:var(--radius-lg);background:var(--bg-container);cursor:pointer;transition:background var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), box-shadow var(--transition-fast) var(--ease-custom), transform var(--transition-fast) var(--ease-custom);align-items:center;gap:10px;padding:9px 10px;display:flex;position:relative}.wb-task-item.is-running[data-v-1c45d6b6]{border-color:color-mix(in srgb, var(--color-warning) 55%, var(--border-color));box-shadow:0 0 0 1px color-mix(in srgb, var(--color-warning) 22%, transparent) inset}.wb-task-item.is-running[data-v-1c45d6b6]:before{content:"";background:var(--color-warning);width:3px;box-shadow:0 0 6px color-mix(in srgb, var(--color-warning) 60%, transparent);border-radius:2px;position:absolute;top:8px;bottom:8px;left:-1px}.wb-task-item[data-v-1c45d6b6]:hover{background:var(--bg-container-hover);border-color:var(--border-color-medium);box-shadow:var(--wb-card-shadow-hover)}.wb-task-item:hover .wb-task-item__del[data-v-1c45d6b6]{opacity:1;transform:translate(0)}.wb-task-item.active[data-v-1c45d6b6]{background:color-mix(in srgb, var(--color-primary) 9%, var(--bg-container));border-color:var(--tint-primary-45);box-shadow:var(--wb-card-shadow-hover)}.wb-task-item.active .wb-task-item__title[data-v-1c45d6b6]{color:var(--color-primary)}.wb-task-item.active .wb-task-item__del[data-v-1c45d6b6]{opacity:1;color:var(--color-primary)}.wb-task-item__avatar[data-v-1c45d6b6]{border-radius:var(--radius-md);width:30px;height:30px;font-size:var(--font-size-15);background:var(--bg-subtle);color:var(--text-tertiary);border:1px solid var(--border-color);transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.wb-task-item__avatar[data-icon=image][data-v-1c45d6b6]{color:#6d28d9;background:#8b5cf61f;border-color:#8b5cf647}.wb-task-item__avatar[data-icon=icon][data-v-1c45d6b6]{color:#0369a1;background:#0ea5e91f;border-color:#0ea5e947}.wb-task-item__avatar[data-icon=test][data-v-1c45d6b6]{color:#047857;background:#10b9811f;border-color:#10b98147}.wb-task-item__avatar[data-icon=ui][data-v-1c45d6b6]{color:#b45309;background:#f59e0b1f;border-color:#f59e0b47}.wb-task-item.active .wb-task-item__avatar[data-v-1c45d6b6]{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.wb-task-item__body[data-v-1c45d6b6]{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.wb-task-item__title[data-v-1c45d6b6]{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;letter-spacing:-.1px;font-size:13px;font-weight:500;line-height:1.3;overflow:hidden}.wb-task-item__meta[data-v-1c45d6b6]{color:var(--text-tertiary);align-items:center;gap:8px;font-size:11px;line-height:1;display:flex}.wb-task-item__meta-item[data-v-1c45d6b6]{font-variant-numeric:tabular-nums;align-items:center;gap:3px;font-weight:500;display:inline-flex}.wb-task-item__meta-item--accent[data-v-1c45d6b6]{color:var(--color-primary)}.wb-task-item__meta-item--simple[data-v-1c45d6b6]{color:#047857;letter-spacing:.2px;white-space:nowrap;background:#10b98124;border-radius:7px;align-items:center;height:15px;padding:0 6px;font-size:10px;font-weight:600;display:inline-flex}.wb-task-item__meta-item--project[data-v-1c45d6b6]{background:color-mix(in srgb, var(--color-warning,#f59e0b) 14%, transparent);height:15px;color:color-mix(in srgb, var(--color-warning,#f59e0b) 80%, var(--text-primary));letter-spacing:.2px;white-space:nowrap;text-overflow:ellipsis;border-radius:7px;align-items:center;max-width:110px;padding:0 5px;font-size:10px;font-weight:600;display:inline-flex;overflow:hidden}.wb-task-item.is-other-project[data-v-1c45d6b6]{opacity:.78}.wb-task-item.is-other-project[data-v-1c45d6b6]:hover{opacity:1}.wb-task-item__meta-icon[data-v-1c45d6b6]{opacity:.85;font-size:11px}.wb-task-item__num[data-v-1c45d6b6]{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-1c45d6b6]{color:var(--color-primary);background:var(--tint-primary-14)}.wb-task-item__meta-item--running .wb-task-item__num[data-v-1c45d6b6]{color:color-mix(in srgb, var(--color-warning,#f59e0b) 85%, var(--text-primary));background:color-mix(in srgb, var(--color-warning,#f59e0b) 18%, transparent);font-weight:600}.wb-task-item.is-running .wb-task-item__meta-icon[data-v-1c45d6b6]{color:color-mix(in srgb, var(--color-warning,#f59e0b) 80%, var(--text-primary));animation:1.4s ease-in-out infinite wb-task-running-icon-1c45d6b6}@keyframes wb-task-running-icon-1c45d6b6{0%,to{opacity:.55}50%{opacity:1}}.wb-task-item__del[data-v-1c45d6b6]{color:var(--text-tertiary);border-radius:var(--radius-sm);cursor:pointer;opacity:0;width:28px;height:28px;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;font-size:13px;display:inline-flex;transform:translate(-2px)}.wb-task-item__del[data-v-1c45d6b6]:hover{background:color-mix(in srgb, var(--color-danger) 14%, transparent);color:var(--color-danger)}.wb-task-item__del[data-v-1c45d6b6]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset);opacity:1}.wb-task-item__del[data-v-1c45d6b6],.wb-prompt-item__del[data-v-1c45d6b6],.wb-sub-item__del[data-v-1c45d6b6]{font-size:13px}.wb-prompt-item[data-v-1c45d6b6]{border-radius:var(--radius-md);font-size:var(--font-size-125);color:var(--text-primary);transition:background var(--transition-fast) var(--ease-custom);align-items:center;gap:8px;padding:7px 8px;display:flex;position:relative}.wb-prompt-item[data-v-1c45d6b6]:hover{background:var(--bg-container-hover)}.wb-prompt-item:hover .wb-prompt-item__del[data-v-1c45d6b6]{opacity:1}.wb-prompt-item__icon[data-v-1c45d6b6]{border-radius:var(--radius-sm);background:var(--tint-primary-08);width:22px;height:22px;color:var(--color-primary);flex-shrink:0;justify-content:center;align-items:center;font-size:12px;display:inline-flex}.wb-prompt-item__name[data-v-1c45d6b6]{cursor:pointer;white-space:nowrap;text-overflow:ellipsis;min-width:0;color:var(--text-primary);letter-spacing:-.05px;flex:1;font-weight:500;overflow:hidden}.wb-prompt-item__project[data-v-1c45d6b6]{background:var(--tint-primary-12);height:16px;color:var(--color-primary);letter-spacing:.2px;white-space:nowrap;text-overflow:ellipsis;border-radius:8px;flex-shrink:0;align-items:center;max-width:110px;padding:0 6px;font-size:10px;font-weight:600;display:inline-flex;overflow:hidden}.wb-prompt-item__del[data-v-1c45d6b6]{color:var(--text-tertiary);border-radius:var(--radius-xs);cursor:pointer;opacity:0;width:20px;height:20px;transition:opacity var(--transition-fast) var(--ease-custom), background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;display:inline-flex}.wb-prompt-item__del[data-v-1c45d6b6]:hover{background:color-mix(in srgb, var(--color-danger) 14%, transparent);color:var(--color-danger)}.wb-prompt-item__del[data-v-1c45d6b6]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset);opacity:1}.wb-empty[data-v-1c45d6b6]{text-align:center;color:var(--text-tertiary);border:1px dashed var(--border-color);border-radius:var(--radius-md);background:var(--bg-subtle);flex-direction:column;align-items:center;gap:4px;padding:22px 12px 18px;display:flex}.wb-empty--compact[data-v-1c45d6b6]{flex-direction:row;justify-content:center;gap:0;padding:10px 12px}.wb-empty__icon[data-v-1c45d6b6]{color:var(--text-tertiary);opacity:.65;margin-bottom:2px;font-size:22px}.wb-empty__text[data-v-1c45d6b6]{font-size:var(--font-size-125);color:var(--text-secondary);font-weight:500}.wb-empty__hint[data-v-1c45d6b6]{color:var(--text-tertiary);font-size:11px}.wb-empty--rich[data-v-1c45d6b6]{border-style:solid;border-color:var(--border-color);background:var(--bg-container);gap:10px;margin:4px 2px 2px;padding:32px 28px 28px}.wb-empty__art[data-v-1c45d6b6]{background:var(--tint-primary-12);width:44px;height:44px;color:var(--color-primary);border-radius:12px;justify-content:center;align-items:center;margin-bottom:2px;font-size:22px;display:flex}.wb-empty__title[data-v-1c45d6b6]{letter-spacing:var(--letter-spacing-heading,-.25px);color:var(--text-secondary);font-size:14px;font-weight:600;line-height:1.4}.wb-empty--rich .wb-empty__hint[data-v-1c45d6b6]{color:var(--text-tertiary);max-width:280px;font-size:12px;line-height:1.55}.wb-empty__cta[data-v-1c45d6b6]{flex-wrap:wrap;justify-content:center;align-items:center;gap:14px;margin-top:6px;display:flex}.wb-empty__link[data-v-1c45d6b6]{appearance:none;min-height:32px;color:var(--color-primary);cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;padding:6px 10px;font-size:12px;font-weight:500;transition:color .15s ease-out,background-color .15s ease-out;display:inline-flex}.wb-empty__link[data-v-1c45d6b6]:hover:not(:disabled){color:var(--color-primary);background:var(--tint-primary-08)}.wb-empty__link[data-v-1c45d6b6]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset-lg)}.wb-empty__link[data-v-1c45d6b6]:disabled{color:var(--text-tertiary);cursor:not-allowed;opacity:.6}@media (prefers-reduced-motion:reduce){.wb-empty__link[data-v-1c45d6b6]{transition:none}}.wb-split[data-v-1c45d6b6]{flex-direction:column;flex:1;gap:8px;min-height:0;padding:10px 16px;display:flex;overflow:hidden}.wb-placeholder[data-v-1c45d6b6]{color:var(--text-tertiary);flex:1;justify-content:center;align-items:center;font-size:13px;display:flex}.wb-execution-body[data-v-1c45d6b6]{border:1px solid var(--border-color);border-radius:var(--radius-md);flex:1;min-height:0;display:flex;overflow:hidden}.wb-exec-list[data-v-1c45d6b6]{border-right:1px solid var(--border-color);background:var(--bg-subtle);flex-direction:column;flex-shrink:0;width:260px;display:flex;overflow:hidden}.wb-exec-list__header[data-v-1c45d6b6]{border-bottom:1px solid var(--border-color);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:8px;padding:10px 12px 8px;display:flex}.wb-exec-list__title[data-v-1c45d6b6]{color:var(--text-secondary);letter-spacing:.1px;flex-shrink:0;margin:0;font-size:12px;font-weight:600}.wb-exec-list__header .wb-split__sub-actions[data-v-1c45d6b6]{margin-left:auto}.wb-exec-sub-list[data-v-1c45d6b6]{flex-direction:column;flex:1;gap:4px;min-height:0;margin:0;padding:6px;list-style:none;display:flex;overflow-y:auto}.wb-exec-sub-item[data-v-1c45d6b6]{border-radius:var(--radius-md);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom);border:1px solid #0000;flex-direction:column;gap:0;padding:7px 8px 5px;display:flex;position:relative}.wb-exec-sub-item[data-v-1c45d6b6]:hover{background:var(--bg-container-hover);border-color:var(--border-color)}.wb-exec-sub-item.is-selected[data-v-1c45d6b6]{background:color-mix(in srgb, var(--color-primary) 9%, var(--bg-container));border-color:var(--tint-primary-35)}.wb-exec-sub-item.is-running[data-v-1c45d6b6]{border-color:var(--tint-primary-45);background:color-mix(in srgb, var(--color-primary) 6%, var(--bg-container))}.wb-exec-sub-item.is-done[data-v-1c45d6b6]:not(.is-selected){opacity:.75}.wb-exec-sub-item__row1[data-v-1c45d6b6]{align-items:center;gap:6px;min-width:0;display:flex}.wb-exec-sub-item__row2[data-v-1c45d6b6]{opacity:0;max-height:0;transition:max-height .18s var(--ease-custom), opacity .15s var(--ease-custom), padding-top .18s var(--ease-custom);align-items:center;gap:4px;padding-top:0;display:flex;overflow:hidden}.wb-exec-sub-item:hover .wb-exec-sub-item__row2[data-v-1c45d6b6],.wb-exec-sub-item.is-selected .wb-exec-sub-item__row2[data-v-1c45d6b6],.wb-exec-sub-item.is-running .wb-exec-sub-item__row2[data-v-1c45d6b6]{opacity:1;max-height:28px;padding-top:5px}.wb-exec-sub-item__actions[data-v-1c45d6b6]{align-items:center;gap:4px;margin-left:auto;display:inline-flex}.wb-exec-sub-item__dirty-dot[data-v-1c45d6b6]{background:#f59e0b;border-radius:50%;flex-shrink:0;width:5px;height:5px}.wb-exec-sub-btn[data-v-1c45d6b6]{appearance:none;border:1px solid var(--border-color-medium);background:var(--bg-container);color:var(--text-tertiary);cursor:pointer;white-space:nowrap;border-radius:10px;flex-shrink:0;height:20px;padding:0 7px;font-size:10px;font-weight:600;transition:background .15s,color .15s,border-color .15s}.wb-exec-sub-btn[data-v-1c45d6b6]:disabled{opacity:.4;cursor:not-allowed}.wb-exec-sub-btn--run[data-v-1c45d6b6]{color:var(--color-primary);border-color:var(--tint-primary-35);background:color-mix(in srgb, var(--color-primary) 6%, var(--bg-container))}.wb-exec-sub-btn--run[data-v-1c45d6b6]:hover{background:color-mix(in srgb, var(--color-primary) 14%, var(--bg-container))}.wb-exec-sub-btn--stop[data-v-1c45d6b6]{color:#ef4444;background:#ef44440f;border-color:#ef444466}.wb-exec-sub-btn--stop[data-v-1c45d6b6]:hover{background:#ef44441f}.wb-exec-sub-btn--undo[data-v-1c45d6b6]{color:var(--color-primary);border-color:var(--tint-primary-35);background:color-mix(in srgb, var(--color-primary) 6%, var(--bg-container))}.wb-exec-sub-btn--undo[data-v-1c45d6b6]:hover{background:color-mix(in srgb, var(--color-primary) 14%, var(--bg-container))}.wb-exec-sub-btn--del[data-v-1c45d6b6]{width:20px;color:var(--text-tertiary);padding:0;font-size:13px}.wb-exec-sub-btn--del[data-v-1c45d6b6]:hover{color:#ef4444;background:#ef44440f;border-color:#ef444466}.wb-exec-sub-item__title[data-v-1c45d6b6]{min-width:0;color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:12px;font-weight:500;line-height:1.35;overflow:hidden}.wb-exec-sub-item.is-selected .wb-exec-sub-item__title[data-v-1c45d6b6]{color:var(--color-primary)}.wb-exec-sub-item.is-done .wb-exec-sub-item__title[data-v-1c45d6b6]{text-decoration:line-through;-webkit-text-decoration-color:var(--border-color);text-decoration-color:var(--border-color);text-decoration-thickness:1px}.wb-exec-detail[data-v-1c45d6b6]{background:var(--bg-container);flex-direction:column;flex:1;gap:12px;min-width:0;min-height:0;padding:16px 20px 20px;display:flex;overflow-y:auto}.wb-exec-detail__head[data-v-1c45d6b6]{flex-shrink:0;align-items:center;gap:10px;display:flex}.wb-exec-detail__head .wb-input[data-v-1c45d6b6]{flex:1}.wb-split__header[data-v-1c45d6b6]{flex-shrink:0;align-items:center;gap:10px;display:flex}.wb-input[data-v-1c45d6b6],.wb-select[data-v-1c45d6b6],.wb-textarea[data-v-1c45d6b6]{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-1c45d6b6]::placeholder,.wb-textarea[data-v-1c45d6b6]::placeholder{color:var(--text-placeholder);font-weight:400}.wb-input[data-v-1c45d6b6]{height:36px;font-size:var(--font-size-135);letter-spacing:-.05px;padding:0 12px;line-height:1.2}.wb-input[data-v-1c45d6b6]:hover:not(:focus){border-color:var(--border-input-hover,#cbd5e1);background:var(--bg-container-hover)}.wb-input[data-v-1c45d6b6]: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-1c45d6b6]{height:36px;font-size:var(--font-size-15);letter-spacing:-.3px;border-color:var(--border-color-medium);background:var(--bg-container);flex:1;padding:0 12px;font-weight:600}.wb-input--title[data-v-1c45d6b6]:hover:not(:focus){border-color:color-mix(in srgb, var(--color-primary) 30%, var(--border-color-medium))}.wb-input--title[data-v-1c45d6b6]:focus{border-color:var(--color-primary);box-shadow:0 0 0 4px var(--tint-primary-14), var(--wb-card-inset-shadow)}.wb-input--title[data-v-1c45d6b6]::placeholder{color:var(--text-placeholder);font-weight:500}.wb-select[data-v-1c45d6b6]{cursor:pointer;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path d='M3 4.5l3 3 3-3' fill='none' stroke='%236b7280' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/></svg>");background-position:right 10px center;background-repeat:no-repeat;background-size:12px 12px;flex-shrink:0;min-width:168px;height:36px;padding:0 32px 0 12px;font-size:13px;font-weight:500}.wb-select[data-v-1c45d6b6]:hover:not(:focus){border-color:var(--border-input-hover,#cbd5e1);background-color:var(--bg-container-hover)}.wb-select[data-v-1c45d6b6]:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--tint-primary-18)}.wb-textarea[data-v-1c45d6b6]{font-size:var(--font-size-135);letter-spacing:-.05px;resize:vertical;box-sizing:border-box;flex-shrink:0;width:100%;min-height:52px;padding:8px 12px;line-height:1.6;display:block}.wb-textarea[data-v-1c45d6b6]::placeholder{line-height:1.65}.wb-textarea[data-v-1c45d6b6]:hover:not(:focus){border-color:var(--border-input-hover,#cbd5e1);background:var(--bg-container-hover)}.wb-textarea[data-v-1c45d6b6]: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-textarea--sm[data-v-1c45d6b6]{min-height:44px;padding:8px 12px;font-size:13px}.wb-split__sub-header[data-v-1c45d6b6]{flex-shrink:0;justify-content:space-between;align-items:center;margin-top:8px;display:flex}.wb-split__sub-header h4[data-v-1c45d6b6]{color:var(--text-secondary);margin:0;font-size:13px;font-weight:600}.wb-split__sub-actions[data-v-1c45d6b6]{align-items:center;gap:8px;display:inline-flex}.wb-simple__header[data-v-1c45d6b6]{border-left:2px solid var(--color-primary);flex-shrink:0;align-items:baseline;gap:10px;margin-top:8px;padding-left:8px;display:flex}.wb-simple__header h4[data-v-1c45d6b6]{color:var(--text-primary);letter-spacing:-.05px;margin:0;font-size:13px;font-weight:600}.wb-simple__hint[data-v-1c45d6b6]{font-size:var(--font-size-115);color:var(--text-tertiary)}.wb-simple__status-row[data-v-1c45d6b6]{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:8px;margin-top:2px;display:flex}.wb-simple__status[data-v-1c45d6b6]{color:#fff;letter-spacing:.2px;white-space:nowrap;transition:background var(--transition-fast) var(--ease-custom);border-radius:10px;flex-shrink:0;align-items:center;gap:5px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.wb-simple__status-dot[data-v-1c45d6b6]{opacity:.9;background:#fff;border-radius:50%;flex-shrink:0;width:5px;height:5px}.wb-simple__status-text[data-v-1c45d6b6]{line-height:1.4}.wb-simple__meta[data-v-1c45d6b6]{font-size:var(--font-size-115);color:var(--text-tertiary);letter-spacing:-.05px;text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.wb-simple__meta--error[data-v-1c45d6b6]{color:var(--color-danger)}.wb-simple__status[style*=--text-tertiary][data-v-1c45d6b6]{color:var(--text-secondary)}.wb-simple__status[style*=--text-tertiary] .wb-simple__status-dot[data-v-1c45d6b6]{background:var(--text-tertiary)}.wb-simple__override[data-v-1c45d6b6]{border-radius:var(--radius-md)}.wb-simple__override>.wb-textarea[data-v-1c45d6b6]{margin-top:8px}.wb-simple__override-summary[data-v-1c45d6b6]{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:4px 0;list-style:none;display:inline-flex}.wb-simple__override-summary[data-v-1c45d6b6]::-webkit-details-marker{display:none}.wb-simple__override-caret[data-v-1c45d6b6]{color:var(--text-tertiary);transition:transform var(--transition-fast) var(--ease-custom);font-size:12px}.wb-simple__override[open]>.wb-simple__override-summary .wb-simple__override-caret[data-v-1c45d6b6]{color:var(--color-primary);transform:rotate(90deg)}.wb-simple__override.has-content>.wb-simple__override-summary[data-v-1c45d6b6]{color:var(--text-primary)}.wb-simple__override-tag[data-v-1c45d6b6]{background:var(--tint-primary-12,color-mix(in srgb, var(--color-primary) 12%, transparent));color:var(--color-primary);letter-spacing:.2px;border-radius:8px;padding:1px 6px;font-size:10px;font-weight:600}.wb-form-item[data-v-1c45d6b6]{flex-direction:column;flex-shrink:0;gap:6px;display:flex}.wb-form-item__label[data-v-1c45d6b6]{color:var(--text-secondary);letter-spacing:-.05px;font-size:12px;font-weight:500}.wb-sub-list[data-v-1c45d6b6]{flex-direction:column;flex:1;gap:8px;min-height:0;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.wb-sub-item[data-v-1c45d6b6]{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-md);max-height:min(70vh,720px);padding:10px;transition:border-color .15s,box-shadow .15s;position:relative;overflow:auto}.wb-sub-item.is-dirty[data-v-1c45d6b6]{background:#f59e0b0a;border-color:#f59e0b8c}.wb-sub-item.is-running[data-v-1c45d6b6]{border-color:var(--tint-primary-55);background:linear-gradient(135deg, color-mix(in srgb, var(--color-primary) 6%, var(--bg-surface)) 0%, var(--bg-surface) 60%);box-shadow:0 0 0 1px var(--tint-primary-30), 0 4px 18px -4px color-mix(in srgb, var(--color-primary) 25%, transparent);animation:2.4s ease-in-out infinite wb-card-glow-1c45d6b6}.wb-sub-item.is-running[data-v-1c45d6b6]:before{content:"";background:linear-gradient(90deg, transparent 0%, var(--color-primary) 50%, transparent 100%);pointer-events:none;z-index:1;background-repeat:no-repeat;background-size:50% 100%;height:2px;animation:1.6s ease-in-out infinite wb-progress-slide-1c45d6b6;position:absolute;top:0;left:0;right:0}.wb-sub-item.is-running[data-v-1c45d6b6]:after{content:"";border-radius:inherit;background:linear-gradient(90deg, transparent 0%, var(--tint-primary-10) 50%, transparent 100%);pointer-events:none;opacity:.5;background-size:200% 100%;animation:3.2s linear infinite wb-card-sweep-1c45d6b6;position:absolute;inset:0}@keyframes wb-progress-slide-1c45d6b6{0%{background-position:-50% 0}to{background-position:150% 0}}@keyframes wb-card-glow-1c45d6b6{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-1c45d6b6{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.wb-sub-item.is-running[data-v-1c45d6b6],.wb-sub-item.is-running[data-v-1c45d6b6]:before,.wb-sub-item.is-running[data-v-1c45d6b6]:after{animation:none}}.wb-sub-item__dirty[data-v-1c45d6b6]{color:#b45309;letter-spacing:.2px;background:#f59e0b26;border-radius:8px;flex-shrink:0;align-items:center;gap:3px;padding:2px 7px;font-size:10px;font-weight:600;display:inline-flex}.wb-sub-item__dirty[data-v-1c45d6b6]:before{content:"";background:#f59e0b;border-radius:50%;width:5px;height:5px;display:inline-block}.wb-dirty-badge[data-v-1c45d6b6]{color:#fff;vertical-align:middle;background:#ef4444;border-radius:8px;justify-content:center;align-items:center;min-width:16px;height:16px;margin-left:6px;padding:0 5px;font-size:10px;font-weight:700;line-height:1;display:inline-flex}.wb-sub-item__row[data-v-1c45d6b6]{cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:var(--radius-sm,4px);transition:background var(--transition-fast) var(--ease-custom), box-shadow var(--transition-fast) var(--ease-custom);align-items:center;gap:8px;margin-bottom:6px;margin-left:-6px;margin-right:-6px;padding:4px 6px;display:flex}.wb-sub-item__row[data-v-1c45d6b6]:hover{background:var(--bg-container-hover);box-shadow:inset 0 0 0 1px var(--tint-primary-12,transparent)}.wb-sub-item__row:hover .wb-sub-item__toggle[data-v-1c45d6b6],.wb-sub-item__row:hover .wb-sub-item__undo[data-v-1c45d6b6],.wb-sub-item__row:hover .wb-sub-item__del[data-v-1c45d6b6],.wb-sub-item__row:hover .wb-sub-item__run[data-v-1c45d6b6],.wb-sub-item__row:hover .wb-sub-item__stop[data-v-1c45d6b6]{z-index:1;position:relative}.wb-sub-item__row[data-v-1c45d6b6]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset);border-radius:var(--radius-sm,4px)}.wb-sub-item__row--compact[data-v-1c45d6b6]{cursor:pointer;gap:6px;margin-bottom:0}.wb-sub-item__title-compact[data-v-1c45d6b6]{min-width:0;color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;letter-spacing:-.05px;text-decoration:line-through;-webkit-text-decoration-color:var(--border-color);text-decoration-color:var(--border-color);flex:1;font-size:13px;font-weight:500;line-height:1.3;text-decoration-thickness:1px;overflow:hidden}.wb-sub-item__toggle[data-v-1c45d6b6]{border:1px solid var(--border-color-medium);background:var(--bg-container);color:var(--text-tertiary);border-radius:var(--radius-sm,4px);cursor:pointer;width:28px;height:28px;transition:background var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);flex-shrink:0;justify-content:center;align-items:center;font-size:12px;display:inline-flex}.wb-sub-item__toggle .el-icon[data-v-1c45d6b6]{transition:transform var(--transition-base,.2s) var(--ease-custom);display:inline-flex}.wb-sub-item__toggle:hover .el-icon[data-v-1c45d6b6]{transform:scale(1.12)}.wb-sub-item__toggle[data-v-1c45d6b6]:hover{background:var(--bg-container-hover);border-color:var(--color-primary);color:var(--color-primary)}.wb-sub-item__toggle[data-v-1c45d6b6]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset)}.wb-sub-item__undo[data-v-1c45d6b6]{border:1px solid var(--tint-primary-35);background:color-mix(in srgb, var(--color-primary) 6%, var(--bg-container));color:var(--color-primary);letter-spacing:.1px;border-radius:var(--radius-sm,4px);cursor:pointer;height:28px;transition:background var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);flex-shrink:0;padding:0 10px;font-size:11px;font-weight:600}.wb-sub-item__undo[data-v-1c45d6b6]:hover{background:color-mix(in srgb, var(--color-primary) 14%, var(--bg-container));border-color:var(--color-primary);color:var(--color-primary-dark,var(--color-primary))}.wb-sub-item__undo[data-v-1c45d6b6]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset)}.wb-sub-item__toggle[data-v-1c45d6b6]:disabled,.wb-sub-item__undo[data-v-1c45d6b6]:disabled,.wb-sub-item__del[data-v-1c45d6b6]:disabled,.wb-sub-item__run[data-v-1c45d6b6]:disabled,.wb-sub-item__stop[data-v-1c45d6b6]:disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.wb-sub-item.is-done[data-v-1c45d6b6]:not(.is-running){background:color-mix(in srgb, #22c55e 4%, var(--bg-container));border-color:#22c55e4d}.wb-sub-item.is-done.is-collapsed[data-v-1c45d6b6]{padding:8px 10px}.wb-sub-item__status[data-v-1c45d6b6]{color:#fff;letter-spacing:.2px;border-radius:10px;flex-shrink:0;align-items:center;gap:5px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex;position:relative;overflow:hidden}.wb-sub-item.is-running .wb-sub-item__status[data-v-1c45d6b6]{box-shadow:0 0 0 0 var(--tint-primary-45), 0 0 12px var(--tint-primary-35);animation:2.4s ease-in-out infinite wb-status-pulse-1c45d6b6,2.4s linear infinite wb-status-shimmer-1c45d6b6;background:linear-gradient(90deg, var(--color-primary) 0%, color-mix(in srgb, var(--color-primary) 70%, #fff) 50%, var(--color-primary) 100%)!important;background-size:200% 100%!important}.wb-sub-item.is-running .wb-sub-item__status[data-v-1c45d6b6]:before{content:"";background:#fff;border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite wb-status-dot-1c45d6b6;box-shadow:0 0 6px #ffffffe6}.wb-sub-item.is-running .wb-sub-item__status[data-v-1c45d6b6]:after{content:"";border-radius:inherit;pointer-events:none;background:linear-gradient(90deg,#0000 0%,#fff6 50%,#0000 100%);animation:2.4s ease-in-out infinite wb-status-sweep-1c45d6b6;position:absolute;inset:0}@keyframes wb-status-shimmer-1c45d6b6{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes wb-status-pulse-1c45d6b6{0%,to{box-shadow:0 0 0 0 var(--tint-primary-45), 0 0 12px var(--tint-primary-35)}50%{box-shadow:0 0 0 4px color-mix(in srgb, var(--color-primary) 0%, transparent), 0 0 18px var(--tint-primary-55)}}@keyframes wb-status-dot-1c45d6b6{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.7)}}@keyframes wb-status-sweep-1c45d6b6{0%{transform:translate(-100%)}to{transform:translate(100%)}}@media (prefers-reduced-motion:reduce){.wb-sub-item.is-running .wb-sub-item__status[data-v-1c45d6b6],.wb-sub-item.is-running .wb-sub-item__status[data-v-1c45d6b6]:before,.wb-sub-item.is-running .wb-sub-item__status[data-v-1c45d6b6]:after{animation:none}.wb-sub-item__toggle .el-icon[data-v-1c45d6b6],.wb-sub-item__row[data-v-1c45d6b6],.wb-sub-expand-enter-active[data-v-1c45d6b6],.wb-sub-expand-leave-active[data-v-1c45d6b6]{transition:none}}.wb-sub-expand-enter-active[data-v-1c45d6b6],.wb-sub-expand-leave-active[data-v-1c45d6b6]{transition:grid-template-rows var(--transition-base,.22s) var(--ease-custom), opacity var(--transition-fast) var(--ease-custom);overflow:hidden}.wb-sub-expand-enter-from[data-v-1c45d6b6],.wb-sub-expand-leave-to[data-v-1c45d6b6]{opacity:0;grid-template-rows:0fr}.wb-sub-expand-enter-to[data-v-1c45d6b6],.wb-sub-expand-leave-from[data-v-1c45d6b6]{opacity:1;grid-template-rows:1fr}.wb-sub-expand-inner[data-v-1c45d6b6]{min-height:0;overflow:hidden}.wb-sub-item__pid[data-v-1c45d6b6]{color:var(--text-tertiary);flex-shrink:0;font-family:ui-monospace,monospace;font-size:11px}.wb-sub-item__stop[data-v-1c45d6b6]{color:#ef4444;border-radius:var(--radius-sm,4px);cursor:pointer;background:#ef444414;border:1px solid #ef444480;flex-shrink:0;height:28px;padding:2px 10px;font-size:11px;font-weight:600;transition:background .15s,color .15s}.wb-sub-item__stop[data-v-1c45d6b6]:hover{color:#fff;background:#ef4444;border-color:#ef4444}.wb-sub-item__run[data-v-1c45d6b6]{border:1px solid var(--el-color-primary,#409eff);background:var(--el-color-primary,#409eff);color:#fff;border-radius:var(--radius-sm,4px);cursor:pointer;flex-shrink:0;height:28px;padding:2px 10px;font-size:11px;font-weight:600;transition:opacity .15s,filter .15s}.wb-sub-item__run[data-v-1c45d6b6]:hover{opacity:.88;filter:brightness(1.05)}.wb-sub-item__row .wb-input[data-v-1c45d6b6]{flex:1}.wb-task-group__head[data-v-1c45d6b6]{color:var(--text-tertiary);letter-spacing:.3px;text-transform:uppercase;border-top:1px dashed var(--border-color);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:var(--radius-sm);transition:background var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);align-items:center;gap:6px;margin-top:4px;padding:8px 6px 4px;font-size:11px;font-weight:600;display:flex}.wb-task-group__head[data-v-1c45d6b6]:first-child{border-top:none;margin-top:0;padding-top:4px}.wb-task-group__head[data-v-1c45d6b6]:hover{background:var(--tint-primary-08);color:var(--text-secondary)}.wb-task-group__head[data-v-1c45d6b6]:focus-visible{outline:var(--focus-outline);outline-offset:var(--focus-outline-offset)}.wb-task-group__head.is-current[data-v-1c45d6b6]{color:var(--color-primary);border-top-color:var(--tint-primary-30)}.wb-task-group__head.is-collapsed[data-v-1c45d6b6]{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-1c45d6b6]{background:color-mix(in srgb, var(--color-primary) 8%, var(--bg-subtle))}.wb-task-group__caret[data-v-1c45d6b6]{opacity:.75;transition:transform var(--transition-fast) var(--ease-custom);flex-shrink:0;font-size:11px}.wb-task-group__icon[data-v-1c45d6b6]{opacity:.8;flex-shrink:0;font-size:12px}.wb-task-group__name[data-v-1c45d6b6]{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.wb-task-group__count[data-v-1c45d6b6]{min-width:18px}.wb-task-group__head.is-current .wb-task-group__count[data-v-1c45d6b6]{background:var(--tint-primary-16,color-mix(in srgb, var(--color-primary) 16%, transparent));color:var(--color-primary)}.wb-meta-save[data-v-1c45d6b6]{letter-spacing:.1px;border:1px solid var(--border-color-medium);background:var(--bg-container);height:24px;color:var(--text-tertiary);-webkit-user-select:none;user-select:none;transition:background var(--transition-fast) var(--ease-custom), border-color var(--transition-fast) var(--ease-custom), color var(--transition-fast) var(--ease-custom);border-radius:12px;flex-shrink:0;align-items:center;gap:5px;padding:0 10px;font-size:11px;font-weight:600;display:inline-flex}.wb-meta-save__dot[data-v-1c45d6b6]{opacity:.85;background:currentColor;border-radius:50%;width:6px;height:6px;display:inline-block}.wb-meta-save__check[data-v-1c45d6b6]{font-size:12px;line-height:1}.wb-meta-save__bang[data-v-1c45d6b6]{color:#fff;background:currentColor;border-radius:50%;justify-content:center;align-items:center;width:12px;height:12px;font-size:9px;font-weight:800;line-height:1;display:inline-flex}.wb-meta-save.is-saving[data-v-1c45d6b6]{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-1c45d6b6]{animation:1.2s ease-in-out infinite wb-meta-pulse-1c45d6b6}.wb-meta-save.is-saved[data-v-1c45d6b6]{color:#047857;background:color-mix(in srgb, #10b981 8%, var(--bg-container));border-color:#10b98159}.wb-meta-save.is-dirty[data-v-1c45d6b6]{color:#b45309;background:#f59e0b0f;border-color:#f59e0b73}.wb-meta-save.is-error[data-v-1c45d6b6]{color:#b91c1c;background:#ef44440f;border-color:#ef444473}@keyframes wb-meta-pulse-1c45d6b6{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-1c45d6b6]{animation:none}}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import"./rolldown-runtime-BM3Ffeng.js";import{$n as e,$r as t,An as n,Bi as r,Di as i,Dn as a,Dr as o,En as s,Er as c,Gi as l,Hi as u,Hn as d,Ii as f,Ir as p,Ki as m,Kn as h,Li as g,Ln as ee,Ni as _,Nr as te,Oi as v,On as y,Pr as b,Qn as x,Ri as S,Si as C,Tn as ne,Un as w,Vi as T,Wi as E,Wn as D,Xn as re,Zn as O,_i as k,_n as ie,_r as ae,br as oe,di as A,dn as j,fr as se,gi as M,gn as N,hi as P,ir as ce,ji as F,jn as le,ki as ue,kn as I,kr as de,li as fe,ln as L,mi as R,mr as pe,oi as me,pi as he,qi as z,si as ge,sr as _e,ui as B,un as V,vi as H,wi as U,xi as W,zi as ve}from"./vendor-CDAfMQIV.js";import{n as G,t as ye}from"./_plugin-vue_export-helper-BMDM_R2D.js";import{t as be}from"./index-BaFDF44N.js";var K={key:0,class:`ai-split-status`},xe={key:1,class:`ai-split-status is-error`},Se={class:`ai-split-prompt-actions`},Ce={key:0,class:`ai-split-prompt-editor`},we={class:`ai-split-prompt-editor__actions`},Te={key:1,class:`ai-split-pre`},Ee={class:`ai-split-subhead`},De={class:`ai-split-pre`},q={key:0,class:`ai-split-tab-count`},J={class:`ai-split-pre ai-split-pre--think`},Y={key:0,class:`ai-split-tab-count`},Oe={class:`ai-split-parse-error__detail`},ke={class:`ai-split-parse-error__hint`},Ae={class:`ai-split-parse-error__actions`},X={key:1,class:`ai-split-raw-toolbar`},je={class:`ai-split-raw-tip`},Me={key:0,class:`ai-split-tab-count`},Ne={key:0,class:`ai-split-empty`},Pe={key:1,class:`ai-split-list`},Fe={class:`ai-split-list__no`},Z={class:`ai-split-list__body`},Ie={class:`ai-split-list__title`},Le={class:`ai-split-list__desc`},Re={key:2,class:`ai-split-footer-hint`},ze=ye(U({__name:`AISplitDialog`,props:{modelValue:{type:Boolean},title:{},desc:{},taskId:{},promptId:{}},emits:[`update:modelValue`,`confirm`],setup(e,{emit:n}){let r=e,i=n,a=u(`idle`),s=u(`prompt`),c=u(``),l=u(``),d=u(``),f=u(``),p=u(``),m=u([]),te=u(``),v=u(``),y=u(``),b=null,x=0,ne=R(()=>d.value.length),w=R(()=>f.value.length),T=R(()=>a.value===`result`&&m.value.length>0),D=R(()=>a.value===`running`);function ae(){oe(),i(`update:modelValue`,!1)}function oe(){b&&=(b.abort(),null)}function j(){oe(),a.value=`idle`,s.value=`prompt`,c.value=``,l.value=``,d.value=``,f.value=``,p.value=``,m.value=[],te.value=``,v.value=``,y.value=``}async function se(){if(!r.title.trim()){V.warning(G(`@WORKBENCH:请先填写任务标题`));return}j();let e=++x;a.value=`running`,s.value=`thinking`,b=new AbortController;let t=b;try{let n=await fetch(`/api/workbench/tasks/ai-split-subtasks`,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`text/event-stream`},body:JSON.stringify({title:r.title,desc:r.desc,taskId:r.taskId||``,promptId:r.promptId||``}),signal:t.signal});if(e!==x)return;if(!n.ok||!n.body){let e=await n.text().catch(()=>``);throw Error(e||`HTTP ${n.status}`)}let i=n.body.getReader(),o=new TextDecoder(`utf-8`),u=``,h=null;for(;;){let{value:t,done:n}=await i.read();if(e!==x)return;if(n)break;u+=o.decode(t,{stream:!0});let r=u.split(`
|
|
2
|
+
`);u=r.pop()??``;for(let e of r){let t=e.trim();if(!t.startsWith(`data:`))continue;let n=t.slice(5).trim();if(!n)continue;let r;try{r=JSON.parse(n)}catch{continue}switch(r.type){case`meta`:c.value=r.prompt?.system||``,l.value=r.prompt?.user||``;break;case`thinking`:d.value+=String(r.delta||``);break;case`content`:f.value+=String(r.delta||``);break;case`done`:h=r;break;case`error`:throw Error(r.error||`AI 拆分失败`)}}}if(e!==x)return;if(!h)throw Error(G(`@WORKBENCH:AI 未返回结果`));m.value=Array.isArray(h.subtasks)?h.subtasks:[],p.value=h.raw||f.value,v.value=String(h.parseError||``),y.value=String(h.parseStage||``),d.value||=G(`@WORKBENCH:(当前模型未返回独立的思考内容,可切换到「原始结果」查看完整输出)`),a.value=`result`,s.value=m.value.length>0?`confirm`:(v.value,`raw`)}catch(n){if(console.log(`[AI Split] catch err:`,{name:n?.name,msg:n?.message,aborted:t.signal.aborted,nonce:{mine:e,cur:x}}),e!==x||n?.name===`AbortError`||t.signal.aborted)return;a.value=`error`,te.value=n?.message||String(n)}finally{e===x&&(b=null)}}function le(){T.value&&(i(`confirm`,m.value.slice()),i(`update:modelValue`,!1))}function ue(){se()}let I=u(!1);async function de(){if(!f.value.trim()){V.warning(G(`@WORKBENCH:原始结果为空,无法解析`));return}I.value=!0;try{let e=await fetch(`/api/workbench/tasks/parse-subtasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({raw:f.value})}).then(e=>e.json());if(!e.success){V.error(e.error||G(`@WORKBENCH:解析失败`));return}m.value=Array.isArray(e.subtasks)?e.subtasks:[],v.value=String(e.parseError||``),y.value=String(e.parseStage||``),p.value=f.value,m.value.length>0?(V.success(G(`@WORKBENCH:解析成功,已识别 {n} 个子任务`,{n:m.value.length})),s.value=`confirm`):V.warning(G(`@WORKBENCH:仍未解析到子任务,请继续修改原始结果`))}catch(e){V.error(G(`@WORKBENCH:解析失败: `)+(e?.message||e))}finally{I.value=!1}}g(()=>r.modelValue,e=>{e&&a.value===`idle`&&se()});let fe=u(!1),L=u(``),pe=u(!1);function me(){L.value=c.value,fe.value=!0}async function he(){if(!L.value.trim()){V.warning(G(`@WORKBENCH:指令内容不能为空`));return}pe.value=!0;try{let e=await fetch(`/api/workbench/tasks/ai-subtask-instruction`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({instruction:L.value})}).then(e=>e.json());e.success?(V.success(G(`@WORKBENCH:已保存指令`)),fe.value=!1,ue()):V.error(e.error||G(`@WORKBENCH:保存失败`))}catch(e){V.error(G(`@WORKBENCH:保存失败: `)+(e?.message||e))}finally{pe.value=!1}}function ge(){fe.value=!1}return(e,n)=>{let r=t,u=h,p=re,g=N,y=O,b=ie,x=ee;return F(),M(x,{"model-value":e.modelValue,"onUpdate:modelValue":n[4]||=e=>i(`update:modelValue`,e),title:E(G)(`@WORKBENCH:AI 拆分任务`),width:`800px`,"close-on-click-modal":!1,"close-on-press-escape":!D.value,"show-close":!D.value,onClose:ae},{footer:S(()=>[a.value===`error`||a.value===`result`&&v.value&&m.value.length===0?(F(),M(u,{key:0,onClick:ue},{default:S(()=>[W(z(E(G)(`@WORKBENCH:重新生成`)),1)]),_:1})):k(``,!0),C(u,{onClick:ae},{default:S(()=>[W(z(E(G)(`@WORKBENCH:取消`)),1)]),_:1}),C(u,{type:`primary`,disabled:!T.value,onClick:le},{default:S(()=>[W(z(E(G)(`@WORKBENCH:确认入库`))+` (`+z(m.value.length)+`) `,1)]),_:1},8,[`disabled`])]),default:S(()=>[D.value?(F(),H(`div`,K,[C(r,{class:`is-loading`},{default:S(()=>[C(E(o))]),_:1}),P(`span`,null,z(E(G)(`@WORKBENCH:AI 正在拆分…`)),1)])):a.value===`error`?(F(),H(`div`,xe,[C(r,{color:`#f56c6c`},{default:S(()=>[C(E(ce))]),_:1}),P(`span`,null,z(te.value),1)])):k(``,!0),C(b,{modelValue:s.value,"onUpdate:modelValue":n[3]||=e=>s.value=e,class:`ai-split-tabs`},{default:S(()=>[C(g,{label:E(G)(`@WORKBENCH:提示词`),name:`prompt`},{default:S(()=>[P(`div`,Se,[C(u,{size:`small`,disabled:D.value,onClick:me},{default:S(()=>[W(z(E(G)(`@WORKBENCH:编辑指令`)),1)]),_:1},8,[`disabled`])]),fe.value?(F(),H(`div`,Ce,[C(p,{modelValue:L.value,"onUpdate:modelValue":n[0]||=e=>L.value=e,type:`textarea`,rows:12,placeholder:E(G)(`@WORKBENCH:指令内容`)},null,8,[`modelValue`,`placeholder`]),P(`div`,we,[C(u,{size:`small`,onClick:ge},{default:S(()=>[W(z(E(G)(`@WORKBENCH:取消`)),1)]),_:1}),C(u,{size:`small`,type:`primary`,loading:pe.value,onClick:he},{default:S(()=>[W(z(E(G)(`@WORKBENCH:保存并重跑`)),1)]),_:1},8,[`loading`])])])):(F(),H(`pre`,Te,z(c.value||`(等待 LLM 启动…)`),1)),P(`h4`,Ee,z(E(G)(`@WORKBENCH:用户提示词(拼装后)`)),1),P(`pre`,De,z(l.value||`(等待 LLM 启动…)`),1)]),_:1},8,[`label`]),C(g,{name:`thinking`},{label:S(()=>[P(`span`,null,[W(z(E(G)(`@WORKBENCH:思考`))+` `,1),ne.value>0?(F(),H(`span`,q,`(`+z(ne.value)+`)`,1)):k(``,!0)])]),default:S(()=>[P(`pre`,J,z(d.value||E(G)(`@WORKBENCH:(暂无输出)`)),1)]),_:1}),C(g,{name:`raw`},{label:S(()=>[P(`span`,null,[W(z(E(G)(`@WORKBENCH:原始结果`))+` `,1),w.value>0?(F(),H(`span`,Y,`(`+z(w.value)+`)`,1)):k(``,!0)])]),default:S(()=>[v.value&&a.value===`result`?(F(),M(y,{key:0,type:`warning`,"show-icon":``,closable:!1,class:`ai-split-parse-error`},{title:S(()=>[W(z(E(G)(`@WORKBENCH:模型返回内容解析失败,无法识别为有效的子任务 JSON`)),1)]),default:S(()=>[P(`div`,Oe,z(v.value),1),P(`div`,ke,z(E(G)(`@WORKBENCH:常见原因:desc 内夹杂了 ASCII 双引号、出现尾随逗号,或输出被截断。可在下方文本框中手动修改后点「重新解析」,或重新生成。`)),1),P(`div`,Ae,[C(u,{size:`small`,type:`primary`,loading:I.value,onClick:de},{default:S(()=>[W(z(E(G)(`@WORKBENCH:重新解析`)),1)]),_:1},8,[`loading`]),C(u,{size:`small`,onClick:ue},{default:S(()=>[W(z(E(G)(`@WORKBENCH:重新生成`)),1)]),_:1}),C(u,{size:`small`,onClick:n[1]||=e=>s.value=`prompt`},{default:S(()=>[W(z(E(G)(`@WORKBENCH:去编辑指令`)),1)]),_:1})])]),_:1})):k(``,!0),a.value===`result`||f.value?(F(),H(`div`,X,[P(`span`,je,z(E(G)(`@WORKBENCH:可直接编辑下方文本,修正后点「重新解析」即可入库`)),1),C(u,{size:`small`,type:`primary`,loading:I.value,disabled:!f.value.trim(),onClick:de},{default:S(()=>[W(z(E(G)(`@WORKBENCH:重新解析`)),1)]),_:1},8,[`loading`,`disabled`])])):k(``,!0),C(p,{modelValue:f.value,"onUpdate:modelValue":n[2]||=e=>f.value=e,type:`textarea`,rows:14,placeholder:E(G)(`@WORKBENCH:(暂无输出)`),readonly:D.value,class:`ai-split-raw-editor`,resize:`none`},null,8,[`modelValue`,`placeholder`,`readonly`])]),_:1}),C(g,{name:`confirm`,disabled:m.value.length===0},{label:S(()=>[P(`span`,null,[W(z(E(G)(`@WORKBENCH:确认入库`))+` `,1),m.value.length>0?(F(),H(`span`,Me,`(`+z(m.value.length)+`)`,1)):k(``,!0)])]),default:S(()=>[m.value.length===0?(F(),H(`div`,Ne,z(E(G)(`@WORKBENCH:(暂无子任务)`)),1)):(F(),H(`ul`,Pe,[(F(!0),H(A,null,_(m.value,(e,t)=>(F(),H(`li`,{key:t,class:`ai-split-list__item`},[P(`div`,Fe,z(t+1),1),P(`div`,Z,[P(`div`,Ie,z(e.title),1),P(`div`,Le,z(e.desc),1)])]))),128))]))]),_:1},8,[`disabled`])]),_:1},8,[`modelValue`]),v.value&&a.value===`result`&&m.value.length===0?(F(),H(`div`,Re,[C(r,{color:`#e6a23c`},{default:S(()=>[C(E(ce))]),_:1}),P(`span`,null,z(E(G)(`@WORKBENCH:解析失败,未能从模型输出中提取出子任务 — 请查看「原始结果」`)),1)])):k(``,!0)]),_:1},8,[`model-value`,`title`,`close-on-press-escape`,`show-close`])}}}),[[`__scopeId`,`data-v-fa5bf380`]]),Be={class:`wb-attachments__head`},Ve={class:`wb-attachments__label`},He={class:`wb-attachments__count`},Ue=[`disabled`],We={key:0,class:`wb-attachments__paste-hint`},Ge={key:1,class:`wb-attachments__list`},Ke=[`title`,`onClick`],Q=[`src`,`alt`],qe={key:1},Je={class:`wb-attachment__meta`},Ye=[`title`],Xe={class:`wb-attachment__sub`},Ze=[`onClick`,`title`],Qe=U({__name:`AttachmentZone`,props:{attachments:{},isImage:{type:Function},humanSize:{type:Function},isUploading:{type:Boolean},isPasteHover:{type:Boolean},maxCount:{},onPick:{type:Function},onRemove:{type:Function}},emits:[`paste`,`drop`,`dragover`,`dragenter`,`dragleave`],setup(e,{emit:t}){let n=e,r=t,i=R(()=>n.attachments.filter(e=>n.isImage(e))),a=R(()=>i.value.map(e=>`/api/workbench/attachments/${e.id}/raw`)),o=u(0),s=u(!1);function c(e){if(n.isImage(e)){let t=i.value.findIndex(t=>t.id===e.id);o.value=t>=0?t:0,s.value=!0}else window.open(`/api/workbench/attachments/${e.id}/raw`,`_blank`,`noopener`)}function d(){s.value=!1}return(e,t)=>(F(),H(A,null,[P(`div`,{class:l([`wb-attachments`,{"is-paste-hover":e.isPasteHover}]),onPaste:t[1]||=e=>r(`paste`,e),onDrop:t[2]||=B(e=>r(`drop`,e),[`prevent`]),onDragover:t[3]||=B(e=>r(`dragover`,e),[`prevent`]),onDragenter:t[4]||=B(e=>r(`dragenter`,e),[`prevent`]),onDragleave:t[5]||=e=>r(`dragleave`,e)},[P(`div`,Be,[P(`span`,Ve,[W(z(E(G)(`@WORKBENCH:附件`))+` `,1),P(`span`,He,z(e.attachments.length)+` / `+z(e.maxCount),1)]),P(`button`,{class:`wb-attachments__add wb-soft-btn`,disabled:e.isUploading||e.attachments.length>=e.maxCount,onClick:t[0]||=(...t)=>e.onPick&&e.onPick(...t)},z(e.isUploading?E(G)(`@WORKBENCH:上传中…`):E(G)(`@WORKBENCH:添加附件`)),9,Ue)]),e.isPasteHover?(F(),H(`div`,We,z(E(G)(`@WORKBENCH:粘贴图片以快速添加`)),1)):k(``,!0),e.attachments.length>0?(F(),H(`ul`,Ge,[(F(!0),H(A,null,_(e.attachments,t=>(F(),H(`li`,{key:t.id,class:`wb-attachment`},[P(`button`,{type:`button`,class:`wb-attachment__preview`,title:E(G)(`@WORKBENCH:点击预览`),onClick:e=>c(t)},[P(`div`,{class:l([`wb-attachment__icon`,{"wb-attachment__icon--img":e.isImage(t)}])},[e.isImage(t)?(F(),H(`img`,{key:0,src:`/api/workbench/attachments/${t.id}/raw`,alt:t.originalName,loading:`lazy`},null,8,Q)):(F(),H(`span`,qe,z(t.ext.toUpperCase()),1))],2),P(`div`,Je,[P(`div`,{class:`wb-attachment__name`,title:t.originalName},z(t.originalName),9,Ye),P(`div`,Xe,z(e.humanSize(t.size))+` · `+z(t.mimeType),1)])],8,Ke),P(`button`,{class:`wb-attachment__del`,onClick:B(n=>e.onRemove(t),[`stop`]),title:E(G)(`@WORKBENCH:删除`)},`×`,8,Ze)]))),128))])):k(``,!0)],34),(F(),M(he,{to:`body`},[s.value&&a.value.length>0?(F(),M(E(I),{key:0,"url-list":a.value,"initial-index":o.value,"hide-on-click-modal":!0,onClose:d},null,8,[`url-list`,`initial-index`])):k(``,!0)]))],64))}}),$e=[`open`],et={class:`wb-log-summary`},tt={class:`wb-log-summary__left`},nt={key:0},rt={key:1},it={key:2},at={class:`wb-log-summary__right`},ot={class:`wb-log-summary__meta`},st=[`title`],ct={key:0,class:`wb-log-section`},lt={class:`wb-log-section__summary`},ut={class:`wb-log-section__tag wb-log-section__tag--user`},dt={class:`wb-log-section__count`},ft=[`title`],pt={class:`wb-log-section__pre wb-log-section__pre--user`},mt={key:1,class:`wb-log-section`},ht={class:`wb-log-section__summary`},gt={class:`wb-log-section__tag wb-log-section__tag--think`},_t={class:`wb-log-section__count`},vt=[`title`],yt={class:`wb-log-section__pre wb-log-section__pre--think`},bt={class:`wb-log-pre__head`},xt={class:`wb-log-pre__label`},St={class:`wb-log-pre__meta`},Ct=[`title`],wt=64*1024,Tt=ye(U({__name:`JobLogDetails`,props:{job:{}},setup(e){let t=e,n=R(()=>t.job.status===`running`||t.job.status===`pending`);function r(){let e=t.job.output||``;return e?e.length<=wt?e:`${G(`@WORKBENCH:…(前文已截断)`)}\n${e.slice(-wt)}`:``}async function a(e){try{if(navigator?.clipboard?.writeText)return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,t.style.left=`-9999px`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch{return!1}}async function o(e){let n=t.job[e]||``;if(!n){V.warning(G(`@WORKBENCH:暂无内容可复制`));return}await a(n)?V.success(G(`@WORKBENCH:已复制到剪贴板`)):V.error(G(`@WORKBENCH:复制失败`))}async function s(){let e=[];if(t.job.prompt&&e.push(`## ${G(`@WORKBENCH:用户提示词`)}\n\n${t.job.prompt}`),t.job.thinking&&e.push(`## ${G(`@WORKBENCH:Claude 思考`)}\n\n${t.job.thinking}`),t.job.output&&e.push(`## ${G(`@WORKBENCH:模型返回`)}\n\n${t.job.output}`),!e.length){V.warning(G(`@WORKBENCH:暂无内容可复制`));return}await a(e.join(`
|
|
3
|
+
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
`))?V.success(G(`@WORKBENCH:已复制到剪贴板`)):V.error(G(`@WORKBENCH:复制失败`))}let c=u(null);return g(()=>(t.job.output||``).length,async()=>{n.value&&(await i(),c.value&&(c.value.scrollTop=c.value.scrollHeight))}),(e,t)=>(F(),H(`details`,{class:`wb-log-details`,open:n.value},[P(`summary`,et,[P(`span`,tt,[e.job.status===`running`?(F(),H(`span`,nt,`● `+z(E(G)(`@WORKBENCH:正在执行…`)),1)):e.job.status===`pending`?(F(),H(`span`,rt,z(E(G)(`@WORKBENCH:排队中…`)),1)):(F(),H(`span`,it,z(E(G)(`@WORKBENCH:查看执行日志`)),1))]),P(`span`,at,[P(`span`,ot,z((e.job.output||``).length)+` `+z(E(G)(`@WORKBENCH:字符`)),1),P(`button`,{type:`button`,class:`wb-log-copy`,title:E(G)(`@WORKBENCH:复制全部(含提示词与输出)`),onClick:B(s,[`stop`])},` ⧉ `+z(E(G)(`@WORKBENCH:复制全部`)),9,st)])]),e.job.prompt?(F(),H(`details`,ct,[P(`summary`,lt,[P(`span`,ut,z(E(G)(`@WORKBENCH:用户提示词`)),1),P(`span`,dt,z((e.job.prompt||``).length)+` `+z(E(G)(`@WORKBENCH:字符`)),1),P(`button`,{type:`button`,class:`wb-log-copy wb-log-copy--sm`,title:E(G)(`@WORKBENCH:复制用户提示词`),onClick:t[0]||=B(e=>o(`prompt`),[`stop`])},` ⧉ `+z(E(G)(`@WORKBENCH:复制`)),9,ft)]),P(`pre`,pt,z(e.job.prompt),1)])):k(``,!0),e.job.thinking?(F(),H(`details`,mt,[P(`summary`,ht,[P(`span`,gt,z(E(G)(`@WORKBENCH:Claude 思考`)),1),P(`span`,_t,z((e.job.thinking||``).length)+` `+z(E(G)(`@WORKBENCH:字符`)),1),P(`button`,{type:`button`,class:`wb-log-copy wb-log-copy--sm`,title:E(G)(`@WORKBENCH:复制思考内容`),onClick:t[1]||=B(e=>o(`thinking`),[`stop`])},` ⧉ `+z(E(G)(`@WORKBENCH:复制`)),9,vt)]),P(`pre`,yt,z(e.job.thinking),1)])):k(``,!0),P(`div`,bt,[P(`span`,xt,z(E(G)(`@WORKBENCH:模型返回`)),1),P(`span`,St,z((e.job.output||``).length)+` `+z(E(G)(`@WORKBENCH:字符`)),1),P(`button`,{type:`button`,class:`wb-log-copy wb-log-copy--sm`,title:E(G)(`@WORKBENCH:复制模型返回`),onClick:t[2]||=B(e=>o(`output`),[`stop`])},` ⧉ `+z(E(G)(`@WORKBENCH:复制`)),9,Ct)]),P(`pre`,{ref_key:`preRef`,ref:c,class:`wb-log-pre`},z(r()||E(G)(`@WORKBENCH:(暂无输出)`)),513)],8,$e))}}),[[`__scopeId`,`data-v-ae32f993`]]);function Et(e){switch(e){case`todo`:return G(`@WORKBENCH:待执行`);case`running`:return G(`@WORKBENCH:执行中`);case`done`:return G(`@WORKBENCH:已完成`);case`error`:return G(`@WORKBENCH:出错`);case`cancelled`:return G(`@WORKBENCH:已取消`);case`pending`:return G(`@WORKBENCH:排队中`);default:return e}}function Dt(e){switch(e){case`running`:return`var(--color-primary)`;case`done`:return`#22c55e`;case`error`:return`#ef4444`;case`cancelled`:return`#9ca3af`;case`pending`:return`#f59e0b`;default:return`var(--text-tertiary)`}}var Ot={class:`exec-logs`},kt={class:`exec-logs__head`},At={class:`exec-logs__title-block`},jt={class:`exec-logs__title`},Mt={class:`exec-logs__stats`},Nt={class:`exec-logs__head-actions`},$={class:`exec-logs__config`},Pt={class:`exec-logs__config-label`},Ft={class:`exec-logs__config-field`},It={class:`exec-logs__config-name`},Lt={class:`exec-logs__config-field`},Rt={class:`exec-logs__config-name`},zt={class:`exec-logs__filter`},Bt={key:0,class:`exec-logs__batch-meta`},Vt={key:0,class:`exec-logs__batch`},Ht={class:`exec-logs__list`},Ut={key:0,class:`exec-logs__empty`},Wt={class:`exec-logs__empty-art`,"aria-hidden":`true`},Gt={class:`exec-logs__empty-title`},Kt={class:`exec-logs__empty-hint`},qt={class:`exec-card__head`},Jt=[`title`],Yt={class:`exec-card__meta`},Xt={key:0,class:`exec-card__task`},Zt={key:1,class:`exec-card__time`},Qt={key:2,class:`exec-card__exit`},$t=[`title`,`onClick`],en={key:0,class:`exec-card__error`},tn={key:1,class:`exec-logs__pager`},nn=50,rn=ye(U({__name:`ExecutionLogManager`,setup(e){function n(e){return e instanceof Error?e.message:String(e)}let r=u([]),i=u(0),o=T({count:0,sizeMB:0,byStatus:{}}),c=u(!1),d=u(new Set),f=T({q:``,status:``,page:1}),g=u({maxCount:500,maxSizeMB:256}),ee=T({maxCount:500,maxSizeMB:256}),te=u(!1),v=[{value:`pending`,label:G(`@WORKBENCH:排队中`)},{value:`running`,label:G(`@WORKBENCH:执行中`)},{value:`done`,label:G(`@WORKBENCH:已完成`)},{value:`error`,label:G(`@WORKBENCH:出错`)},{value:`cancelled`,label:G(`@WORKBENCH:已取消`)}],b=R(()=>r.value.length>0&&r.value.every(e=>d.value.has(e.id))),x=R(()=>r.value.some(e=>d.value.has(e.id))&&!b.value);async function w(){c.value=!0;try{let e=new URLSearchParams;f.q&&e.set(`q`,f.q),f.status&&e.set(`status`,f.status),e.set(`limit`,String(nn)),e.set(`offset`,String((f.page-1)*nn));let t=await fetch(`/api/workbench/jobs/list?${e.toString()}`).then(e=>e.json());if(!t.success)throw Error(t.error||`list failed`);r.value=t.jobs,i.value=t.total,o.count=t.stats.count,o.sizeMB=t.stats.sizeMB,o.byStatus=t.stats.byStatus;let n=new Set(r.value.map(e=>e.id));for(let e of Array.from(d.value))n.has(e)||d.value.delete(e)}catch(e){V.error(G(`@WORKBENCH:加载失败`)+`: `+n(e))}finally{c.value=!1}}async function O(){try{let e=await fetch(`/api/workbench/jobs/config`).then(e=>e.json());e.success&&(g.value=e.config,ee.maxCount=e.config.maxCount,ee.maxSizeMB=e.config.maxSizeMB)}catch{}}async function ie(){te.value=!0;try{let e=await fetch(`/api/workbench/jobs/config`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({maxCount:ee.maxCount,maxSizeMB:ee.maxSizeMB})}).then(e=>e.json());if(!e.success)throw Error(e.error||`save failed`);g.value=e.config,V.success(G(`@WORKBENCH:已保存策略`)),await w()}catch(e){V.error(G(`@WORKBENCH:保存失败`)+`: `+n(e))}finally{te.value=!1}}function ae(){f.page=1,w()}function oe(){f.q=``,f.status=``,f.page=1,w()}function se(e,t){t?d.value.add(e):d.value.delete(e),d.value=new Set(d.value)}function M(e){if(e)for(let e of r.value)d.value.add(e.id);else for(let e of r.value)d.value.delete(e.id);d.value=new Set(d.value)}async function N(e){try{await L.confirm(G(`@WORKBENCH:确定要删除所选的 {count} 条日志吗?`,{count:1}),G(`@WORKBENCH:删除`),{type:`warning`})}catch{return}try{let t=await fetch(`/api/workbench/jobs/${e}`,{method:`DELETE`}).then(e=>e.json());if(!t.success)throw Error(t.error||`delete failed`);d.value.delete(e),d.value=new Set(d.value),await w()}catch(e){V.error(G(`@WORKBENCH:保存失败`)+`: `+n(e))}}async function ce(){let e=Array.from(d.value);if(e.length!==0){try{await L.confirm(G(`@WORKBENCH:确定要删除所选的 {count} 条日志吗?`,{count:e.length}),G(`@WORKBENCH:批量删除`),{type:`warning`})}catch{return}try{let t=await fetch(`/api/workbench/jobs/batch-delete`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({ids:e})}).then(e=>e.json());if(!t.success)throw Error(t.error||`batch delete failed`);V.success(G(`@WORKBENCH:成功删除 {count} 条`,{count:t.removed||e.length})),d.value=new Set,await w()}catch(e){V.error(G(`@WORKBENCH:保存失败`)+`: `+n(e))}}}async function le(){let e=o.count;if(e!==0){try{await L.confirm(G(`@WORKBENCH:确定要清空所有 {count} 条执行日志吗?此操作不可恢复。`,{count:e}),G(`@WORKBENCH:清空全部`),{type:`warning`,confirmButtonText:G(`@WORKBENCH:清空全部`)})}catch{return}try{let t=await fetch(`/api/workbench/jobs/clear`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({confirm:!0})}).then(e=>e.json());if(!t.success)throw Error(t.error||`clear failed`);V.success(G(`@WORKBENCH:成功删除 {count} 条`,{count:t.removed||e})),d.value=new Set,await w()}catch(e){V.error(G(`@WORKBENCH:保存失败`)+`: `+n(e))}}}function I(e,t){if(!e)return``;let n=new Date(e).getTime(),r=t?new Date(t).getTime():Date.now(),i=Math.max(0,r-n);return i<1e3?`${i}ms`:i<6e4?`${(i/1e3).toFixed(1)}s`:i<36e5?`${Math.floor(i/6e4)}m ${Math.floor(i%6e4/1e3)}s`:`${Math.floor(i/36e5)}h ${Math.floor(i%36e5/6e4)}m`}return ue(()=>{w(),O()}),(e,n)=>{let u=h,g=y,T=re,O=s,ue=a,de=D,L=t,R=ne,me=j;return F(),H(`div`,Ot,[P(`header`,kt,[P(`div`,At,[P(`h2`,jt,z(E(G)(`@WORKBENCH:执行日志`)),1),P(`span`,Mt,z(E(G)(`@WORKBENCH:共 {count} 条,占 {size} MB`,{count:o.count,size:o.sizeMB})),1)]),P(`div`,Nt,[C(u,{icon:E(p),size:`small`,loading:c.value,onClick:w},{default:S(()=>[W(z(E(G)(`@WORKBENCH:刷新`)),1)]),_:1},8,[`icon`,`loading`]),C(u,{type:`danger`,plain:``,size:`small`,disabled:o.count===0,onClick:le},{default:S(()=>[W(z(E(G)(`@WORKBENCH:清空全部`)),1)]),_:1},8,[`disabled`])])]),P(`div`,$,[P(`span`,Pt,z(E(G)(`@WORKBENCH:保存策略`)),1),P(`span`,Ft,[P(`span`,It,z(E(G)(`@WORKBENCH:最大条数`)),1),C(g,{modelValue:ee.maxCount,"onUpdate:modelValue":n[0]||=e=>ee.maxCount=e,min:0,max:1e4,step:50,size:`small`,"controls-position":`right`,style:{width:`130px`}},null,8,[`modelValue`])]),P(`span`,Lt,[P(`span`,Rt,z(E(G)(`@WORKBENCH:最大体积 (MB)`)),1),C(g,{modelValue:ee.maxSizeMB,"onUpdate:modelValue":n[1]||=e=>ee.maxSizeMB=e,min:0,max:10240,step:32,size:`small`,"controls-position":`right`,style:{width:`140px`}},null,8,[`modelValue`])]),C(u,{type:`primary`,size:`small`,loading:te.value,onClick:ie},{default:S(()=>[W(z(E(G)(`@WORKBENCH:保存策略`)),1)]),_:1},8,[`loading`])]),P(`div`,zt,[C(T,{modelValue:f.q,"onUpdate:modelValue":n[2]||=e=>f.q=e,placeholder:E(G)(`@WORKBENCH:搜索标题 / 任务`),clearable:``,size:`small`,style:{width:`240px`},onKeyup:fe(ae,[`enter`]),onClear:ae},null,8,[`modelValue`,`placeholder`]),C(ue,{modelValue:f.status,"onUpdate:modelValue":n[3]||=e=>f.status=e,placeholder:E(G)(`@WORKBENCH:全部状态`),clearable:``,size:`small`,style:{width:`130px`},onChange:ae},{default:S(()=>[(F(),H(A,null,_(v,e=>C(O,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`,`placeholder`]),C(u,{size:`small`,onClick:oe},{default:S(()=>[W(z(E(G)(`@WORKBENCH:重置`)),1)]),_:1}),n[5]||=P(`span`,{class:`exec-logs__filter-spacer`},null,-1),d.value.size>0?(F(),H(`span`,Bt,z(E(G)(`@WORKBENCH:已选择 {count} 项`,{count:d.value.size})),1)):k(``,!0)]),d.value.size>0?(F(),H(`div`,Vt,[C(de,{"model-value":b.value,indeterminate:x.value,onChange:M},{default:S(()=>[W(z(b.value?E(G)(`@WORKBENCH:取消全选`):E(G)(`@WORKBENCH:全选`)),1)]),_:1},8,[`model-value`,`indeterminate`]),C(u,{type:`danger`,size:`small`,onClick:ce},{default:S(()=>[W(z(E(G)(`@WORKBENCH:批量删除`)),1)]),_:1})])):k(``,!0),ve((F(),H(`div`,Ht,[!c.value&&r.value.length===0?(F(),H(`div`,Ut,[P(`div`,Wt,[C(L,null,{default:S(()=>[C(E(pe))]),_:1})]),P(`div`,Gt,z(E(G)(`@WORKBENCH:暂无执行日志`)),1),P(`div`,Kt,z(E(G)(`@WORKBENCH:点击「执行任务」开始一次执行,日志会出现在这里。`)),1)])):k(``,!0),(F(!0),H(A,null,_(r.value,e=>(F(),H(`article`,{key:e.id,class:l([`exec-card`,{"is-selected":d.value.has(e.id)}])},[P(`header`,qt,[C(de,{"model-value":d.value.has(e.id),onChange:t=>se(e.id,t)},null,8,[`model-value`,`onChange`]),P(`span`,{class:`exec-card__status`,style:m({color:E(Dt)(e.status),borderColor:E(Dt)(e.status)})},z(E(Et)(e.status)),5),P(`span`,{class:`exec-card__title`,title:e.title||E(G)(`@WORKBENCH:无标题`)},z(e.title||E(G)(`@WORKBENCH:无标题`)),9,Jt),n[6]||=P(`span`,{class:`exec-card__spacer`},null,-1),P(`span`,Yt,[e.taskTitle?(F(),H(`span`,Xt,`📁 `+z(e.taskTitle),1)):k(``,!0),e.startedAt?(F(),H(`span`,Zt,`⏱ `+z(I(e.startedAt,e.endedAt)),1)):k(``,!0),e.exitCode===null?k(``,!0):(F(),H(`span`,Qt,`exit `+z(e.exitCode),1))]),P(`button`,{type:`button`,class:`exec-card__del`,title:E(G)(`@WORKBENCH:删除`),onClick:t=>N(e.id)},`×`,8,$t)]),e.error?(F(),H(`p`,en,`⚠ `+z(e.error),1)):k(``,!0),C(Tt,{job:e},null,8,[`job`])],2))),128))])),[[me,c.value]]),i.value>nn?(F(),H(`footer`,tn,[C(R,{"current-page":f.page,"onUpdate:currentPage":n[4]||=e=>f.page=e,"page-size":nn,total:i.value,layout:`prev, pager, next, total`,background:``,small:``,onCurrentChange:w},null,8,[`current-page`,`total`])])):k(``,!0)])}}}),[[`__scopeId`,`data-v-13ab606e`]]),an={class:`workbench`},on={class:`wb-tabs`},sn={key:0,class:`workbench__editor-row`},cn={class:`wb-sidebar`},ln={class:`wb-section`},un={class:`wb-section__head`},dn={class:`wb-section__tag`},fn={class:`wb-section__title`},pn={class:`wb-pill wb-section__count`},mn={class:`wb-task-list`},hn=[`aria-expanded`,`title`,`onClick`,`onKeydown`],gn=[`title`],_n={class:`wb-pill wb-task-group__count`},vn=[`data-icon`,`onClick`],yn=[`data-icon`],bn={class:`wb-task-item__body`},xn=[`title`],Sn={class:`wb-task-item__meta`},Cn=[`title`],wn={class:`wb-pill wb-task-item__num`},Tn=[`title`],En={class:`wb-pill wb-task-item__num`},Dn=[`title`],On=[`title`],kn=[`title`],An=[`onClick`,`title`,`aria-label`],jn={key:0,class:`wb-empty wb-empty--rich`},Mn={class:`wb-empty__art`,"aria-hidden":`true`},Nn={class:`wb-empty__title`},Pn={class:`wb-empty__hint`},Fn={class:`wb-empty__cta`},In={class:`wb-section`},Ln={class:`wb-section__head`},Rn={class:`wb-section__tag wb-section__tag--accent`},zn={class:`wb-section__title`},Bn={class:`wb-pill wb-section__count`},Vn=[`title`,`aria-label`],Hn={class:`wb-prompt-list`},Un={class:`wb-prompt-item__icon`},Wn=[`onClick`,`title`],Gn=[`title`],Kn=[`onClick`,`title`,`aria-label`],qn={key:0,class:`wb-empty wb-empty--compact`},Jn={class:`wb-split`},Yn={key:0,class:`wb-placeholder`},Xn={class:`wb-split__header`},Zn=[`placeholder`],Qn=[`title`],$n={key:0,class:`wb-meta-save__dot`},er={key:1,class:`wb-meta-save__check`},tr={key:2,class:`wb-meta-save__bang`},nr={key:3,class:`wb-meta-save__dot`},rr={value:null},ir=[`value`],ar=[`placeholder`],or={class:`wb-execution-body`},sr={class:`wb-exec-list`},cr={class:`wb-exec-list__header`},lr={class:`wb-exec-list__title`},ur={class:`wb-split__sub-actions`},dr={key:0,class:`wb-dirty-badge`},fr={class:`wb-exec-sub-list`},pr=[`onClick`],mr={class:`wb-exec-sub-item__row1`},hr=[`title`],gr={key:0,class:`wb-exec-sub-item__dirty-dot`,title:`未保存`},_r={class:`wb-exec-sub-item__row2`},vr={key:0,class:`wb-sub-item__pid`},yr={class:`wb-exec-sub-item__actions`},br=[`title`,`onClick`],xr=[`title`,`onClick`],Sr=[`title`,`disabled`,`onClick`],Cr=[`title`,`disabled`,`onClick`],wr={key:0,class:`wb-empty wb-empty--rich`},Tr={class:`wb-empty__art`,"aria-hidden":`true`},Er={class:`wb-empty__title`},Dr={class:`wb-empty__hint`},Or={class:`wb-empty__cta`},kr=[`disabled`],Ar={class:`wb-exec-list__header`},jr={class:`wb-exec-list__title`},Mr={class:`wb-simple__hint`},Nr={class:`wb-exec-sub-list`},Pr=[`title`],Fr={key:0,class:`wb-simple__meta`},Ir={class:`wb-exec-detail`},Lr={key:0,class:`wb-placeholder`},Rr={class:`wb-exec-detail__head`},zr=[`placeholder`],Br=[`title`],Vr=[`placeholder`],Hr={class:`wb-simple__status-row`},Ur=[`title`],Wr={class:`wb-simple__status-text`},Gr={key:0,class:`wb-simple__meta`},Kr=[`title`],qr={class:`wb-form-item__label wb-simple__override-summary`},Jr=[`title`],Yr=[`placeholder`],Xr={style:{display:`flex`,gap:`8px`,"align-items":`center`}},Zr=`__simple`,Qr=`__no_project__`,$r=`.png,.jpg,.jpeg,.gif,.webp,.bmp,.svg,.pdf,.txt,.md,.csv,.json,.log`,ei=5*1024*1024,ti=ye(U({__name:`WorkbenchView`,setup(i){let o=u([]),p=u([]),y=u([]),ne=u(`editor`),D=u(null),O=R(()=>p.value.find(e=>e.id===D.value)||null),ie=R(()=>O.value?.type===`simple`),j=u(null),N=R(()=>!O.value||ie.value||!j.value?null:O.value.subtasks.find(e=>e.id===j.value)||null),ce=u(new Map),I=u({title:``,desc:``,promptId:null,simpleOverride:``});function he(){let e=new Map;if(O.value)for(let t of O.value.subtasks)e.set(t.id,{id:t.id,title:t.title,desc:t.desc,promptOverride:t.promptOverride});ce.value=e,O.value?I.value={title:O.value.title,desc:O.value.desc,promptId:O.value.promptId,simpleOverride:O.value.simpleOverride||``}:I.value={title:``,desc:``,promptId:null,simpleOverride:``}}let U=R(()=>{let e=new Set;if(!O.value)return e;for(let t of O.value.subtasks){let n=ce.value.get(t.id);if(!n){e.add(t.id);continue}(n.title!==t.title||n.desc!==t.desc||n.promptOverride!==t.promptOverride)&&e.add(t.id)}return e}),ye=R(()=>U.value.size>0),K=u(`idle`),xe=u(0),Se=null,Ce=R(()=>{if(!O.value)return!1;let e=O.value;return I.value.title!==e.title||I.value.desc!==e.desc||I.value.promptId!==e.promptId||I.value.simpleOverride!==(e.simpleOverride||``)});function we(){Se!==null&&(clearTimeout(Se),Se=null)}async function Te(){if(!O.value)return!1;if(!Ce.value)return!0;if(K.value=`saving`,await vt(!1))return xe.value=Date.now(),K.value=`saved`,setTimeout(()=>{K.value===`saved`&&Date.now()-xe.value>=4e3&&(K.value=`idle`)},4e3),!0;K.value=`error`;let e=Date.now();return setTimeout(()=>{K.value===`error`&&Date.now()-e>=4e3&&(K.value=`idle`)},4e3),!1}g(()=>O.value?{id:O.value.id,title:O.value.title,desc:O.value.desc,promptId:O.value.promptId,simpleOverride:O.value.simpleOverride||``}:null,(e,t)=>{!e||!t||e.id!==t.id||(Se!==null&&clearTimeout(Se),Se=window.setTimeout(()=>{Te()},1500))},{deep:!0}),g(D,async(e,t)=>{we(),O.value&&Ce.value&&await Te()});function Ee(e){try{let t=new Blob([JSON.stringify(e)],{type:`application/json`});navigator.sendBeacon?.(`/api/workbench/tasks`,t)}catch{}}function De(){O.value&&Ce.value&&Ee(O.value)}let q=T({visible:!1,editing:null,name:``,content:``,aiLoading:!1}),J=T({visible:!1,text:``,loading:!1,saving:!1}),Y=T({visible:!1,editing:null,title:``,desc:``,promptId:null,type:`complex`,simpleOverride:``}),Oe=null,ke=be();function Ae(){ke.setRunning(y.value.filter(e=>e.status===`running`).length)}function X(e){return y.value.find(t=>t.subId===e)||null}function je(e,t){if(e===`hello`){y.value=t.jobs||[],Ae();return}if(e===`job:update`){let e=t,n=y.value.findIndex(t=>t.id===e.id);n>=0?y.value[n]=e:y.value.push(e),Ae();return}if(e===`job:thinking-delta`||e===`job:output-delta`){let n=e===`job:thinking-delta`?`thinking`:`output`,r=t?.delta||``;if(!r)return;let i=y.value.findIndex(e=>e.id===t.id);if(i<0)return;let a=y.value[i][n]||``;y.value[i][n]=a+r;return}if(e===`sub:update`){let e=p.value.find(e=>e.id===t.taskId);if(e){let n=e.subtasks.findIndex(e=>e.id===t.sub.id);n>=0&&(e.subtasks[n]=t.sub)}}if(e===`task:update`){let e=p.value.findIndex(e=>e.id===t.id);e>=0&&(p.value[e]=t)}e===`task:error`&&V.error(t.error||G(`@WORKBENCH:执行出错`))}let Me=[{key:`image`,patterns:[/图\s*片/,/上\s*传/,/upload/i,/image/i,/screenshot/i,/截图/,/附件/,/attachment/i]},{key:`icon`,patterns:[/图\s*标/,/icon/i,/svg/i]},{key:`test`,patterns:[/测\s*试/,/test/i,/spec/i,/\bqa\b/i]},{key:`ui`,patterns:[/ui\s*优\s*化/,/样\s*式/,/style/i,/css/i,/界面/,/视\s*觉/,/design/i]}];function Ne(e){let t=(e||``).trim();if(!t)return`doc`;for(let e of Me)if(e.patterns.some(e=>e.test(t)))return e.key;return`doc`}let Pe={icon:r(pe),image:r(te),test:r(ae),ui:r(de),doc:r(pe),idea:r(de)};function Fe(e){return Pe[Ne(e.title)]}function Z(e){return e?X(`${e.id}${Zr}`):null}function Ie(e){return e?e.status===`pending`||e.status===`running`?`running`:e.status===`done`?`done`:e.status===`cancelled`?`cancelled`:`error`:`idle`}function Le(e){switch(e){case`running`:return`var(--color-primary)`;case`done`:return`#22c55e`;case`error`:return`#ef4444`;case`cancelled`:return`#9ca3af`;default:return`var(--text-tertiary)`}}function Re(e){switch(e){case`idle`:return G(`@WORKBENCH:尚未执行`);case`running`:return G(`@WORKBENCH:正在执行…`);case`done`:return G(`@WORKBENCH:已完成`);case`error`:return G(`@WORKBENCH:执行失败`);case`cancelled`:return G(`@WORKBENCH:已停止`)}}function Be(e){if(!e)return``;let t=new Date(e);if(Number.isNaN(t.getTime()))return e;let n=e=>String(e).padStart(2,`0`);return`${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}`}function Ve(e){return Array.isArray(e.attachments)?e.attachments.length:0}function He(e){return Array.isArray(e.subtasks)?e.subtasks.length:0}function Ue(e){return Array.isArray(e.subtasks)?e.subtasks.filter(e=>e&&e.status===`done`).length:0}function We(e){return Array.isArray(e.subtasks)?e.subtasks.some(e=>e&&e.status===`running`):!1}async function Ge(){o.value=(await fetch(`/api/workbench/prompts`).then(e=>e.json()).catch(()=>({prompts:[]}))).prompts||[]}async function Ke(){p.value=(await fetch(`/api/workbench/tasks`).then(e=>e.json()).catch(()=>({tasks:[]}))).tasks||[],!D.value&&p.value.length>0&&(D.value=p.value[0].id),he()}let Q=u({path:``,name:``});async function qe(){let e=await fetch(`/api/workbench/current-project`).then(e=>e.json()).catch(()=>({}));e&&typeof e.projectPath==`string`&&(Q.value={path:e.projectPath,name:e.projectName||``})}let Je=u(new Set);function Ye(e){return Je.value.has(e)}function Xe(e){Je.value.has(e)?Je.value.delete(e):Je.value.add(e),Je.value=new Set(Je.value)}let Ze=R(()=>{let e=p.value,t=new Map;for(let n of e){let e=(n.projectPath||``).trim()||Qr;t.has(e)||t.set(e,[]),t.get(e).push(n)}let n=Q.value.path,r=Array.from(t.keys()).sort((e,t)=>e===n?-1:t===n||e===Qr?1:t===Qr?-1:e.localeCompare(t));return{groups:r.map(e=>({path:e,label:e===Qr?G(`@WORKBENCH:未关联项目`):e,tasks:t.get(e)})),hasMultiple:r.length>1}});function $e(e){if(!e||e===Qr)return e;let t=e.split(/[\\/]/).filter(Boolean);return t.length<=1?e:t.slice(-2).join(`/`)}g(()=>Ze.value.groups.map(e=>e.path),e=>{let t=Q.value.path,n=new Set(Je.value),r=!1;for(let i of e)i!==t&&!n.has(i)&&(n.add(i),r=!0);r&&(Je.value=n)},{immediate:!0});async function et(){y.value=(await fetch(`/api/workbench/jobs`).then(e=>e.json()).catch(()=>({jobs:[]}))).jobs||[],Ae()}function tt(){Oe&&=(Oe.close(),null),Oe=new EventSource(`/api/workbench/events`),Oe.onmessage=e=>{try{let t=JSON.parse(e.data);je(t.event,t.payload)}catch{}},Oe.onerror=()=>{Oe&&=(Oe.close(),null),setTimeout(tt,3e3)}}function nt(){q.editing=null,q.name=``,q.content=``,q.aiLoading=!1,q.visible=!0}function rt(e){q.editing=e,q.name=e.name,q.content=e.content,q.aiLoading=!1,q.visible=!0}async function it(){if(!q.aiLoading){q.aiLoading=!0;try{let e=await fetch(`/api/workbench/prompts/ai-generate`,{method:`POST`}).then(e=>e.json());e.success?(q.name=e.name||q.name,q.content=e.result||``,V.success(G(`@WORKBENCH:已生成,可继续编辑`))):V.error(e.error||G(`@WORKBENCH:生成失败`))}catch(e){V.error(G(`@WORKBENCH:网络错误: `)+(e&&e.message||e))}finally{q.aiLoading=!1}}}async function at(){J.visible=!0,J.loading=!0;try{let e=await fetch(`/api/workbench/prompts/ai-instruction`).then(e=>e.json());e.success?J.text=e.instruction||``:V.error(e.error||G(`@WORKBENCH:读取指令失败`))}catch(e){V.error(G(`@WORKBENCH:读取指令失败`)+`: `+(e&&e.message||e))}finally{J.loading=!1}}async function ot(){if(!J.text.trim()){V.warning(G(`@WORKBENCH:指令内容不能为空`));return}J.saving=!0;try{let e=await fetch(`/api/workbench/prompts/ai-instruction`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({instruction:J.text})}).then(e=>e.json());e.success?(V.success(G(`@WORKBENCH:已保存指令`)),J.visible=!1):V.error(e.error||G(`@WORKBENCH:保存失败`))}catch(e){V.error(G(`@WORKBENCH:网络错误: `)+(e&&e.message||e))}finally{J.saving=!1}}async function st(){if(!q.name.trim()||!q.content.trim()){V.warning(G(`@WORKBENCH:名称和内容不能为空`));return}let e={id:q.editing?.id,name:q.name.trim(),content:q.content},t=await fetch(`/api/workbench/prompts`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}).then(e=>e.json());t.success?(V.success(G(`@WORKBENCH:已保存`)),q.visible=!1,Ge()):V.error(t.error||G(`@WORKBENCH:保存失败`))}async function ct(e){await L.confirm(G(`@WORKBENCH:删除提示词「{name}」?`,{name:e.name}),G(`@WORKBENCH:确认`),{type:`warning`}),await fetch(`/api/workbench/prompts/${e.id}`,{method:`DELETE`}),Ge();for(let t of p.value)t.promptId===e.id&&(t.promptId=null,await fetch(`/api/workbench/tasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}));Ke()}function lt(){Y.editing=null,Y.title=``,Y.desc=``,Y.promptId=null,Y.type=`complex`,Y.simpleOverride=``,Y.visible=!0}async function ut(){if(!Y.title.trim()){V.warning(G(`@WORKBENCH:标题必填`));return}let e={id:Y.editing?.id,title:Y.title.trim(),desc:Y.desc,promptId:Y.promptId,type:Y.type,simpleOverride:Y.type===`simple`?Y.simpleOverride:``,subtasks:Y.editing?.subtasks||[]};!Y.editing?.id&&Q.value.path&&(e.projectPath=Q.value.path);let t=await fetch(`/api/workbench/tasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}).then(e=>e.json());if(t.success){V.success(G(`@WORKBENCH:已保存`));let e=!Y.editing?.id;Y.visible=!1,await Ke(),e&&t.task?.id?(D.value=t.task.id,he()):D.value||=t.task.id}else V.error(t.error||G(`@WORKBENCH:保存失败`))}async function dt(e){await L.confirm(G(`@WORKBENCH:删除任务「{title}」及其所有子任务?`,{title:e.title}),G(`@WORKBENCH:确认`),{type:`warning`}),await fetch(`/api/workbench/tasks/${e.id}`,{method:`DELETE`}),D.value===e.id&&(D.value=null),Ke()}async function ft(e){D.value!==e.id&&(we(),O.value&&Ce.value&&await Te(),D.value=e.id,he())}g(()=>O.value,e=>{if(!e||e.type===`simple`){j.value=null;return}j.value=e.subtasks.find(e=>e.status===`running`)?.id||e.subtasks[0]?.id||null},{immediate:!0}),g(()=>O.value?.subtasks?.length,()=>{!O.value||ie.value||(!j.value||!O.value.subtasks.find(e=>e.id===j.value))&&(j.value=O.value.subtasks[0]?.id||null)});let pt=u(new Set);function mt(e){return pt.value.has(e)}function ht(e,t){t?pt.value.add(e):pt.value.delete(e),pt.value=new Set(pt.value)}async function gt(){if(!O.value)return;let e={id:`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`,title:G(`@WORKBENCH:新子任务`),desc:``,status:`todo`,promptOverride:``};O.value.subtasks.push(e),ht(e.id,!0);try{await vt(!1)}finally{ht(e.id,!1)}}async function _t(e){if(O.value){O.value.subtasks=O.value.subtasks.filter(t=>t.id!==e.id),ht(e.id,!0);try{await vt(!1)}finally{ht(e.id,!1)}}}async function vt(e){if(!O.value)return!1;let t=await fetch(`/api/workbench/tasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(O.value)}).then(e=>e.json());return t.success?(e&&V.success(G(`@WORKBENCH:已保存拆分`)),await Ke(),!0):(V.error(t.error||G(`@WORKBENCH:保存失败`)),!1)}async function yt(){await vt(!0)}let bt=u(!1);function xt(){if(O.value){if(!(O.value.title||``).trim()){V.warning(G(`@WORKBENCH:请先填写任务标题`));return}bt.value=!0}}function St(e){if(O.value){for(let t of e)O.value.subtasks.push({id:`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`,title:t.title,desc:t.desc||``,status:`todo`,promptOverride:``,attachments:[]});V.success(G(`@WORKBENCH:已生成 {n} 个子任务,请审阅后保存`,{n:e.length}))}}async function Ct(e){if(e.type===`simple`)return wt(e);if(!e.subtasks||e.subtasks.length===0){V.warning(G(`@WORKBENCH:请先拆分任务`));return}if(O.value&&O.value.id===e.id){let t=p.value.find(t=>t.id===e.id);if((!t||t.title!==O.value.title||t.desc!==O.value.desc||JSON.stringify(t.subtasks)!==JSON.stringify(O.value.subtasks)||t.promptId!==O.value.promptId)&&!await vt(!1))return}let t=await fetch(`/api/workbench/tasks/${e.id}/run`,{method:`POST`}).then(e=>e.json());t.success?V.success(t.message||G(`@WORKBENCH:已加入执行队列`)):V.error(t.error||G(`@WORKBENCH:执行失败`))}async function wt(e){if(O.value&&O.value.id===e.id){let t=p.value.find(t=>t.id===e.id);if((!t||t.title!==O.value.title||t.desc!==O.value.desc||t.promptId!==O.value.promptId||(t.simpleOverride||``)!==(O.value.simpleOverride||``))&&!await vt(!1))return}let t=await fetch(`/api/workbench/tasks/${e.id}/run-simple`,{method:`POST`}).then(e=>e.json());t.success?V.success(t.message||G(`@WORKBENCH:已加入执行队列`)):V.error(t.error||G(`@WORKBENCH:执行失败`))}async function Ot(e){if(!O.value)return;let t=O.value,n=X(e.id);if(n&&(n.status===`running`||n.status===`pending`)){V.warning(G(`@WORKBENCH:该子任务正在执行中`));return}let r=p.value.find(e=>e.id===t.id);if((!r||r.title!==t.title||r.desc!==t.desc||JSON.stringify(r.subtasks)!==JSON.stringify(t.subtasks)||r.promptId!==t.promptId)&&!await vt(!1))return;let i=await fetch(`/api/workbench/subtasks/${e.id}/run`,{method:`POST`}).then(e=>e.json()).catch(e=>({success:!1,error:e?.message||String(e)}));i.success?V.success(i.message||G(`@WORKBENCH:已开始执行子任务`)):V.error(i.error||G(`@WORKBENCH:执行失败`))}function kt(e){if(e.status===`done`)return!1;let t=X(e.id);return!(t&&(t.status===`running`||t.status===`pending`))}async function At(e){if(O.value&&!mt(e.id)){ht(e.id,!0);try{let t=ce.value.get(e.id);t&&ce.value.set(e.id,{...t,status:`todo`}),e.status=`todo`,await vt(!1)}finally{ht(e.id,!1)}}}async function jt(e){try{await L.confirm(G(`@WORKBENCH:确认停止执行?已输出的内容会保留。`),G(`@WORKBENCH:停止执行`),{confirmButtonText:G(`@WORKBENCH:停止`),cancelButtonText:G(`@WORKBENCH:取消`),type:`warning`})}catch{return}let t=await fetch(`/api/workbench/jobs/${e.id}/cancel`,{method:`POST`}).then(e=>e.json()).catch(e=>({success:!1,error:e?.message||String(e)}));t.success?V.success(G(`@WORKBENCH:已发送停止信号`)):V.error(t.error||G(`@WORKBENCH:停止失败`))}ue(async()=>{await Promise.all([Ge(),Ke(),qe(),et()]),tt(),window.addEventListener(`beforeunload`,De)}),v(()=>{Oe&&=(Oe.close(),null),window.removeEventListener(`beforeunload`,De),O.value&&Ce.value&&Ee(O.value)});let Mt=new Set([`image/png`,`image/jpeg`,`image/jpg`,`image/gif`,`image/webp`,`image/bmp`,`image/svg+xml`,`application/pdf`,`text/plain`,`text/markdown`,`text/x-markdown`,`text/csv`,`application/json`,`text/json`,`text/x-log`]),Nt=u({}),$=u(null);function Pt(e){return!!Nt.value[e]}function Ft(e,t){if(e instanceof File)return e;let n=e.type||`application/octet-stream`;return new File([e],t,{type:n})}function It(e){return e.kind===`task`?`task-${e.task?.id??``}`:`sub-${e.sub.id}`}function Lt(e){let t=e.kind===`task`?e.task?.attachments:e.sub.attachments;return Array.isArray(t)?t:[]}function Rt(e,t){e.kind===`task`?e.task&&(e.task.attachments=t):e.sub.attachments=t}function zt(e){return e.kind===`task`?`/api/workbench/tasks/${e.task?.id??``}/attachments`:`/api/workbench/subtasks/${e.sub.id}/attachments`}function Bt(e,t){return e.kind===`task`?`/api/workbench/tasks/${e.task?.id??``}/attachments/${t}`:`/api/workbench/subtasks/${e.sub.id}/attachments/${t}`}function Vt(e,t){if(!e.clipboardData)return;let n=Array.from(e.clipboardData.items).filter(e=>e.kind===`file`&&e.type.startsWith(`image/`));if(n.length>0){e.preventDefault();for(let e of n){let n=e.getAsFile();if(!n)continue;let r=(n.type.split(`/`)[1]||`png`).replace(`jpeg`,`jpg`);Ut(t,Ft(n,`paste-${new Date().toISOString().replace(/[:.]/g,`-`)}.${r}`))}return}let r=Array.from(e.clipboardData.items).filter(e=>e.kind===`file`&&!e.type.startsWith(`image/`));if(r.length>0){e.preventDefault();for(let e of r){let n=e.getAsFile();n&&Ut(t,Ft(n,n.name||`pasted-file`))}}}function Ht(e,t){$.value=null,Array.from(e.dataTransfer?.files||[]).forEach(e=>Ut(t,e))}async function Ut(e,t){if(t.size>ei){V.error(`「${t.name}」${G(`@WORKBENCH:超过 5MB 限制`)}`);return}if(!Mt.has(t.type)&&!t.name.match(/\.(png|jpg|jpeg|gif|webp|bmp|svg|pdf|txt|md|markdown|csv|json|log)$/i)){V.error(`${G(`@WORKBENCH:不支持的文件类型`)}(${t.name})`);return}let n=Lt(e);if(n.length>=9){V.error(G(`@WORKBENCH:单个任务最多 9 个附件`));return}if(n.find(e=>e.originalName===t.name&&e.size===t.size)){V.info(`${t.name} ${G(`@WORKBENCH:已存在,已复用`)}`);return}let r=It(e);Nt.value[r]=!0;try{let n=await fetch(zt(e),{method:`POST`,headers:{"Content-Type":`application/octet-stream`,"X-Original-Name":t.name,"X-Mime-Type":t.type||`application/octet-stream`},body:t}).then(e=>e.json());if(n.success){let r=Lt(e);r.push(n.attachment),Rt(e,r),V.success(`${G(`@WORKBENCH:已添加:`)}${t.name}`)}else V.error(n.error||G(`@WORKBENCH:上传失败`))}catch(e){V.error(G(`@WORKBENCH:上传失败`)+`:`+(e&&e.message||e))}finally{Nt.value[r]=!1}}async function Wt(e,t){try{await L.confirm(G(`@WORKBENCH:删除附件「{name}」?`,{name:t.originalName}),G(`@WORKBENCH:确认`),{type:`warning`})}catch{return}let n=await fetch(Bt(e,t.id),{method:`DELETE`}).then(e=>e.json());n.success?(Rt(e,Lt(e).filter(e=>e.id!==t.id)),V.success(G(`@WORKBENCH:已删除`))):V.error(n.error||G(`@WORKBENCH:删除失败`))}function Gt(e){let t=document.createElement(`input`);t.type=`file`,t.accept=$r,t.multiple=!0,t.onchange=()=>{Array.from(t.files||[]).forEach(t=>Ut(e,t))},t.click()}let Kt=new Set([`png`,`jpg`,`jpeg`,`gif`,`webp`,`bmp`,`svg`]);function qt(e){return Kt.has(String(e.ext||``).toLowerCase())}function Jt(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(2)} MB`}return(r,i)=>{let u=t,g=h,v=re,y=le,T=n,ae=ee,ce=d,ue=w,I=s,L=a;return F(),H(`div`,an,[P(`header`,on,[P(`button`,{type:`button`,class:l([`wb-tab`,{"is-active":ne.value===`editor`}]),onClick:i[0]||=e=>ne.value=`editor`},z(E(G)(`@WORKBENCH:任务执行`)),3),P(`button`,{type:`button`,class:l([`wb-tab`,{"is-active":ne.value===`logs`}]),onClick:i[1]||=e=>ne.value=`logs`},z(E(G)(`@WORKBENCH:执行日志`)),3)]),ne.value===`editor`?(F(),H(`div`,sn,[P(`aside`,cn,[P(`section`,ln,[P(`header`,un,[P(`span`,dn,z(E(G)(`@WORKBENCH:任务`)),1),P(`h3`,fn,z(E(G)(`@WORKBENCH:任务列表`)),1),P(`span`,pn,z(p.value.length),1)]),P(`button`,{class:`wb-new-btn`,onClick:lt},[C(u,{class:`wb-new-btn__icon`},{default:S(()=>[C(E(b))]),_:1}),P(`span`,null,z(E(G)(`@WORKBENCH:新建任务`)),1),i[39]||=P(`span`,{class:`wb-new-btn__shortcut`},`N`,-1)]),P(`ul`,mn,[(F(!0),H(A,null,_(Ze.value.groups,t=>(F(),H(A,{key:t.path},[Ze.value.hasMultiple?(F(),H(`li`,{key:0,class:l([`wb-task-group__head`,{"is-current":t.path===Q.value.path,"is-collapsed":Ye(t.path)}]),role:`button`,tabindex:`0`,"aria-expanded":!Ye(t.path),title:Ye(t.path)?E(G)(`@WORKBENCH:展开`):E(G)(`@WORKBENCH:收起`),onClick:e=>Xe(t.path),onKeydown:[fe(B(e=>Xe(t.path),[`prevent`]),[`enter`]),fe(B(e=>Xe(t.path),[`prevent`]),[`space`])]},[C(u,{class:`wb-task-group__caret`},{default:S(()=>[(F(),M(f(Ye(t.path)?E(e):E(x))))]),_:2},1024),C(u,{class:`wb-task-group__icon`},{default:S(()=>[C(E(oe))]),_:1}),P(`span`,{class:`wb-task-group__name`,title:t.path===Q.value.path?Q.value.path:t.label},z(t.path===Q.value.path?Q.value.name:$e(t.label)),9,gn),P(`span`,_n,z(t.tasks.length),1)],42,hn)):k(``,!0),Ye(t.path)?k(``,!0):(F(!0),H(A,{key:1},_(t.tasks,e=>(F(),H(`li`,{key:e.id,class:l([`wb-task-item`,{active:e.id===D.value,"has-attachment":Ve(e)>0,"is-other-project":e.projectPath&&e.projectPath!==Q.value.path,"is-running":We(e)}]),"data-icon":Ne(e.title),onClick:t=>ft(e)},[P(`div`,{class:`wb-task-item__avatar`,"data-icon":Ne(e.title)},[C(u,null,{default:S(()=>[(F(),M(f(Fe(e))))]),_:2},1024)],8,yn),P(`div`,bn,[P(`div`,{class:`wb-task-item__title`,title:e.title},z(e.title||E(G)(`@WORKBENCH:未命名任务`)),9,xn),P(`div`,Sn,[He(e)>0?(F(),H(`span`,{key:0,class:l([`wb-task-item__meta-item`,{"wb-task-item__meta-item--running":We(e)}]),title:E(G)(`@WORKBENCH:个子任务`)},[C(u,{class:`wb-task-item__meta-icon`},{default:S(()=>[C(E(c))]),_:1}),P(`span`,wn,z(Ue(e))+`/`+z(He(e)),1)],10,Cn)):k(``,!0),Ve(e)>0?(F(),H(`span`,{key:1,class:`wb-task-item__meta-item`,title:E(G)(`@WORKBENCH:附件`)},[C(u,{class:`wb-task-item__meta-icon`},{default:S(()=>[C(E(te))]),_:1}),P(`span`,En,z(Ve(e)),1)],8,Tn)):k(``,!0),e.promptId?(F(),H(`span`,{key:2,class:`wb-task-item__meta-item wb-task-item__meta-item--accent`,title:E(G)(`@WORKBENCH:已绑定预置提示词`)},[C(u,{class:`wb-task-item__meta-icon`},{default:S(()=>[C(E(de))]),_:1})],8,Dn)):k(``,!0),e.type===`simple`?(F(),H(`span`,{key:3,class:`wb-task-item__meta-item wb-task-item__meta-item--simple`,title:E(G)(`@WORKBENCH:简单任务 - 无需拆分直接执行`)},z(E(G)(`@WORKBENCH:简单`)),9,On)):k(``,!0),e.projectPath&&e.projectPath!==Q.value.path?(F(),H(`span`,{key:4,class:`wb-task-item__meta-item wb-task-item__meta-item--project`,title:e.projectPath},z($e(e.projectPath)),9,kn)):k(``,!0)])]),P(`button`,{class:`wb-task-item__del`,onClick:B(t=>dt(e),[`stop`]),title:E(G)(`@WORKBENCH:删除`),"aria-label":E(G)(`@WORKBENCH:删除`)},[C(u,null,{default:S(()=>[C(E(_e))]),_:1})],8,An)],10,vn))),128))],64))),128)),p.value.length===0?(F(),H(`li`,jn,[P(`div`,Mn,[C(u,null,{default:S(()=>[C(E(se))]),_:1})]),P(`div`,Nn,z(E(G)(`@WORKBENCH:暂无任务`)),1),P(`div`,Pn,z(E(G)(`@WORKBENCH:点击上方按钮新建`)),1),P(`div`,Fn,[C(g,{type:`primary`,size:`small`,icon:E(b),onClick:lt},{default:S(()=>[W(z(E(G)(`@WORKBENCH:新建任务`)),1)]),_:1},8,[`icon`])])])):k(``,!0)])]),P(`section`,In,[P(`header`,Ln,[P(`span`,Rn,z(E(G)(`@WORKBENCH:提示`)),1),P(`h3`,zn,z(E(G)(`@WORKBENCH:预置提示词`)),1),P(`span`,Bn,z(o.value.length),1),P(`button`,{class:`wb-section__action`,onClick:nt,title:E(G)(`@WORKBENCH:新建提示词`),"aria-label":E(G)(`@WORKBENCH:新建提示词`)},[C(u,null,{default:S(()=>[C(E(b))]),_:1})],8,Vn)]),P(`ul`,Hn,[(F(!0),H(A,null,_(o.value,e=>(F(),H(`li`,{key:e.id,class:`wb-prompt-item`},[P(`div`,Un,[C(u,null,{default:S(()=>[C(E(de))]),_:1})]),P(`span`,{class:`wb-prompt-item__name`,onClick:t=>rt(e),title:e.content},z(e.name),9,Wn),Q.value.name?(F(),H(`span`,{key:0,class:`wb-prompt-item__project`,title:E(G)(`@WORKBENCH:适用于当前项目`)+`:`+Q.value.path},z(Q.value.name),9,Gn)):k(``,!0),P(`button`,{class:`wb-prompt-item__del`,onClick:t=>ct(e),title:E(G)(`@WORKBENCH:删除`),"aria-label":E(G)(`@WORKBENCH:删除`)},[C(u,null,{default:S(()=>[C(E(_e))]),_:1})],8,Kn)]))),128)),o.value.length===0?(F(),H(`li`,qn,z(E(G)(`@WORKBENCH:暂无提示词`)),1)):k(``,!0)])])]),P(`section`,Jn,[O.value?(F(),H(A,{key:1},[P(`div`,Xn,[ve(P(`input`,{class:`wb-input wb-input--title`,"onUpdate:modelValue":i[2]||=e=>O.value.title=e,placeholder:E(G)(`@WORKBENCH:任务标题`)},null,8,Zn),[[ge,O.value.title]]),K.value!==`idle`||Ce.value?(F(),H(`span`,{key:0,class:l([`wb-meta-save`,{"is-saving":K.value===`saving`,"is-saved":K.value===`saved`,"is-error":K.value===`error`,"is-dirty":Ce.value&&K.value===`idle`}]),title:K.value===`saving`?E(G)(`@WORKBENCH:保存中…`):K.value===`error`?E(G)(`@WORKBENCH:保存失败`):K.value===`saved`?E(G)(`@WORKBENCH:已保存`):``},[K.value===`saving`?(F(),H(`span`,$n)):K.value===`saved`?(F(),H(`span`,er,`✓`)):K.value===`error`?(F(),H(`span`,tr,`!`)):(F(),H(`span`,nr)),W(` `+z(K.value===`saving`?E(G)(`@WORKBENCH:保存中…`):K.value===`saved`?E(G)(`@WORKBENCH:已保存`):K.value===`error`?E(G)(`@WORKBENCH:保存失败`):E(G)(`@WORKBENCH:有未保存的更改`)),1)],10,Qn)):k(``,!0),ve(P(`select`,{class:`wb-select`,"onUpdate:modelValue":i[3]||=e=>O.value.promptId=e},[P(`option`,rr,z(E(G)(`@WORKBENCH:不绑定预置提示词`)),1),(F(!0),H(A,null,_(o.value,e=>(F(),H(`option`,{key:e.id,value:e.id},z(e.name),9,ir))),128))],512),[[me,O.value.promptId]]),ie.value?k(``,!0):(F(),M(g,{key:1,type:`info`,plain:``,disabled:!O.value.title||!O.value.title.trim(),onClick:xt},{default:S(()=>[W(z(E(G)(`@WORKBENCH:AI 拆分`)),1)]),_:1},8,[`disabled`])),C(g,{type:`primary`,loading:!1,onClick:i[4]||=e=>Ct(O.value)},{default:S(()=>[W(z(ie.value?E(G)(`@WORKBENCH:执行`):E(G)(`@WORKBENCH:执行任务`)),1)]),_:1})]),ve(P(`textarea`,{class:`wb-textarea`,"onUpdate:modelValue":i[5]||=e=>O.value.desc=e,placeholder:E(G)(`@WORKBENCH:任务描述(可选)`),rows:`2`,onPaste:i[6]||=e=>Vt(e,{kind:`task`,task:O.value})},null,40,ar),[[ge,O.value.desc]]),C(Qe,{attachments:O.value.attachments||[],"is-image":qt,"human-size":Jt,"is-uploading":Pt(`task-`+O.value.id),"is-paste-hover":$.value===`task-`+O.value.id,"max-count":9,"on-pick":()=>Gt({kind:`task`,task:O.value}),"on-remove":e=>Wt({kind:`task`,task:O.value},e),onPaste:i[7]||=e=>Vt(e,{kind:`task`,task:O.value}),onDrop:i[8]||=B(e=>Ht(e,{kind:`task`,task:O.value}),[`prevent`]),onDragover:i[9]||=B(e=>$.value=`task-`+O.value.id,[`prevent`]),onDragenter:i[10]||=B(e=>$.value=`task-`+O.value.id,[`prevent`]),onDragleave:i[11]||=e=>$.value=$.value===`task-`+O.value.id?null:$.value},null,8,[`attachments`,`is-uploading`,`is-paste-hover`,`on-pick`,`on-remove`]),P(`div`,or,[P(`div`,sr,[ie.value?(F(),H(A,{key:1},[P(`div`,Ar,[P(`h4`,jr,z(E(G)(`@WORKBENCH:简单任务`)),1),P(`span`,Mr,z(E(G)(`@WORKBENCH:无需拆分子任务;点执行后直接用上方描述驱动 Claude`)),1)]),P(`ul`,Nr,[P(`li`,{class:l([`wb-exec-sub-item is-selected`,{"is-running":Ie(Z(O.value))===`running`,"is-done":Ie(Z(O.value))===`done`}])},[P(`span`,{class:`wb-sub-item__status`,style:m({background:Le(Ie(Z(O.value)))})},[i[40]||=P(`span`,{class:`wb-simple__status-dot`,"aria-hidden":`true`},null,-1),W(` `+z(Re(Ie(Z(O.value)))),1)],4),P(`span`,{class:`wb-exec-sub-item__title`,title:O.value.title},z(O.value.title||E(G)(`@WORKBENCH:未命名任务`)),9,Pr),Z(O.value)?.endedAt&&Ie(Z(O.value))===`done`?(F(),H(`span`,Fr,z(Be(Z(O.value)?.endedAt)),1)):k(``,!0)],2)])],64)):(F(),H(A,{key:0},[P(`div`,cr,[P(`h4`,lr,z(E(G)(`@WORKBENCH:子任务拆分`)),1),P(`div`,ur,[C(g,{size:`small`,plain:``,icon:E(b),disabled:O.value.subtasks.length===0,onClick:gt},{default:S(()=>[W(z(E(G)(`@WORKBENCH:添加子任务`)),1)]),_:1},8,[`icon`,`disabled`]),C(g,{size:`small`,type:ye.value?`primary`:`default`,disabled:O.value.subtasks.length===0,onClick:yt},{default:S(()=>[W(z(E(G)(`@WORKBENCH:保存拆分`))+` `,1),ye.value?(F(),H(`span`,dr,z(U.value.size),1)):k(``,!0)]),_:1},8,[`type`,`disabled`])])]),P(`ul`,fr,[(F(!0),H(A,null,_(O.value.subtasks,e=>(F(),H(`li`,{key:e.id,class:l([`wb-exec-sub-item`,{"is-selected":j.value===e.id,"is-running":e.status===`running`,"is-done":e.status===`done`,"is-dirty":U.value.has(e.id),"is-persisting":mt(e.id)}]),onClick:t=>j.value=e.id},[P(`div`,mr,[P(`span`,{class:`wb-sub-item__status`,style:m({background:E(Dt)(e.status)})},z(E(Et)(e.status)),5),P(`span`,{class:`wb-exec-sub-item__title`,title:e.title},z(e.title||E(G)(`@WORKBENCH:未命名子任务`)),9,hr),U.value.has(e.id)?(F(),H(`span`,gr)):k(``,!0)]),P(`div`,_r,[X(e.id)?(F(),H(`span`,vr,`PID: `+z(X(e.id)?.pid),1)):k(``,!0),P(`span`,yr,[kt(e)?(F(),H(`button`,{key:0,class:`wb-exec-sub-btn wb-exec-sub-btn--run`,title:E(G)(`@WORKBENCH:单独执行此子任务`),onClick:B(t=>Ot(e),[`stop`])},z(E(G)(`@WORKBENCH:执行`)),9,br)):k(``,!0),X(e.id)&&(X(e.id)?.status===`running`||X(e.id)?.status===`pending`)?(F(),H(`button`,{key:1,class:`wb-exec-sub-btn wb-exec-sub-btn--stop`,title:E(G)(`@WORKBENCH:停止执行`),onClick:B(t=>jt(X(e.id)),[`stop`])},z(E(G)(`@WORKBENCH:停止`)),9,xr)):k(``,!0),e.status===`done`?(F(),H(`button`,{key:2,class:`wb-exec-sub-btn wb-exec-sub-btn--undo`,title:E(G)(`@WORKBENCH:取消完成`),disabled:mt(e.id),onClick:B(t=>At(e),[`stop`])},z(E(G)(`@WORKBENCH:取消完成`)),9,Sr)):k(``,!0),P(`button`,{class:`wb-exec-sub-btn wb-exec-sub-btn--del`,title:E(G)(`@WORKBENCH:删除`),disabled:mt(e.id),onClick:B(t=>_t(e),[`stop`])},`×`,8,Cr)])])],10,pr))),128)),O.value.subtasks.length===0?(F(),H(`li`,wr,[P(`div`,Tr,[C(u,null,{default:S(()=>[C(E(c))]),_:1})]),P(`div`,Er,z(E(G)(`@WORKBENCH:拆分任务,逐项执行`)),1),P(`div`,Dr,z(E(G)(`@WORKBENCH:手动添加子任务,或让 AI 帮你自动拆分`)),1),P(`div`,Or,[C(g,{type:`primary`,size:`small`,icon:E(b),onClick:gt},{default:S(()=>[W(z(E(G)(`@WORKBENCH:添加子任务`)),1)]),_:1},8,[`icon`]),P(`button`,{type:`button`,class:`wb-empty__link`,disabled:!O.value.title||!O.value.title.trim(),onClick:xt},z(E(G)(`@WORKBENCH:用 AI 自动拆分`)),9,kr)])])):k(``,!0)])],64))]),P(`div`,Ir,[ie.value?(F(),H(A,{key:1},[P(`div`,Hr,[P(`span`,{class:`wb-simple__status`,style:m({background:Le(Ie(Z(O.value)))}),title:E(G)(`@WORKBENCH:任务完成状态`)},[i[41]||=P(`span`,{class:`wb-simple__status-dot`,"aria-hidden":`true`},null,-1),P(`span`,Wr,z(Re(Ie(Z(O.value)))),1)],12,Ur),Z(O.value)?.endedAt&&Ie(Z(O.value))===`done`?(F(),H(`span`,Gr,` · `+z(E(G)(`@WORKBENCH:完成时间`))+` `+z(Be(Z(O.value)?.endedAt)),1)):Z(O.value)?.error&&Ie(Z(O.value))===`error`?(F(),H(`span`,{key:1,class:`wb-simple__meta wb-simple__meta--error`,title:Z(O.value)?.error||``},` — `+z(Z(O.value)?.error),9,Kr)):k(``,!0)]),P(`details`,{class:l([`wb-simple__override`,{"has-content":!!(O.value.simpleOverride&&O.value.simpleOverride.trim())}])},[P(`summary`,qr,[C(u,{class:`wb-simple__override-caret`},{default:S(()=>[C(E(e))]),_:1}),P(`span`,null,z(E(G)(`@WORKBENCH:覆盖预置提示词(可选)`)),1),O.value.simpleOverride&&O.value.simpleOverride.trim()?(F(),H(`span`,{key:0,class:`wb-simple__override-tag`,title:E(G)(`@WORKBENCH:已填写覆盖内容`)},z(E(G)(`@WORKBENCH:已填写`)),9,Jr)):k(``,!0)]),ve(P(`textarea`,{class:`wb-textarea`,"onUpdate:modelValue":i[22]||=e=>O.value.simpleOverride=e,placeholder:E(G)(`@WORKBENCH:留空则使用上方选定的「预置提示词」模板;可用变量同子任务:{{task.title}} {{task.desc}} {{repo.path}} {{branch}}`),rows:`6`},null,8,Yr),[[ge,O.value.simpleOverride]])],2),X(`${O.value.id}__simple`)?(F(),M(Tt,{key:0,job:X(`${O.value.id}__simple`)},null,8,[`job`])):k(``,!0)],64)):(F(),H(A,{key:0},[N.value?(F(),H(A,{key:1},[P(`div`,Rr,[ve(P(`input`,{class:`wb-input`,"onUpdate:modelValue":i[12]||=e=>N.value.title=e,placeholder:E(G)(`@WORKBENCH:子任务标题`),onClick:i[13]||=B(()=>{},[`stop`]),onPaste:i[14]||=e=>Vt(e,{kind:`sub`,task:O.value,sub:N.value})},null,40,zr),[[ge,N.value.title]]),U.value.has(N.value.id)?(F(),H(`span`,{key:0,class:`wb-sub-item__dirty`,title:E(G)(`@WORKBENCH:有未保存的更改`)},z(E(G)(`@WORKBENCH:未保存`)),9,Br)):k(``,!0)]),ve(P(`textarea`,{class:`wb-textarea wb-textarea--sm`,"onUpdate:modelValue":i[15]||=e=>N.value.desc=e,placeholder:E(G)(`@WORKBENCH:子任务描述 / 独立提示词覆盖`),rows:`3`,onPaste:i[16]||=e=>Vt(e,{kind:`sub`,task:O.value,sub:N.value})},null,40,Vr),[[ge,N.value.desc]]),X(N.value.id)?(F(),M(Tt,{key:0,job:X(N.value.id)},null,8,[`job`])):k(``,!0),C(Qe,{attachments:N.value.attachments||[],"is-image":qt,"human-size":Jt,"is-uploading":Pt(`sub-`+N.value.id),"is-paste-hover":$.value===N.value.id,"max-count":9,"on-pick":()=>Gt({kind:`sub`,task:O.value,sub:N.value}),"on-remove":e=>Wt({kind:`sub`,task:O.value,sub:N.value},e),onPaste:i[17]||=e=>Vt(e,{kind:`sub`,task:O.value,sub:N.value}),onDrop:i[18]||=B(e=>Ht(e,{kind:`sub`,task:O.value,sub:N.value}),[`prevent`]),onDragover:i[19]||=B(e=>$.value=N.value.id,[`prevent`]),onDragenter:i[20]||=B(e=>$.value=N.value.id,[`prevent`]),onDragleave:i[21]||=e=>$.value=$.value===N.value.id?null:$.value},null,8,[`attachments`,`is-uploading`,`is-paste-hover`,`on-pick`,`on-remove`])],64)):(F(),H(`div`,Lr,[P(`p`,null,z(O.value.subtasks.length===0?E(G)(`@WORKBENCH:手动添加子任务,或让 AI 帮你自动拆分`):E(G)(`@WORKBENCH:左侧选择子任务查看详情`)),1)]))],64))])])],64)):(F(),H(`div`,Yn,[P(`p`,null,z(E(G)(`@WORKBENCH:左侧选择任务,或新建一个任务开始`)),1)]))])])):(F(),M(rn,{key:1})),C(ae,{modelValue:q.visible,"onUpdate:modelValue":i[26]||=e=>q.visible=e,title:q.editing?E(G)(`@WORKBENCH:编辑提示词`):E(G)(`@WORKBENCH:新建提示词`),width:`640px`},{footer:S(()=>[C(g,{onClick:i[25]||=e=>q.visible=!1},{default:S(()=>[W(z(E(G)(`@WORKBENCH:取消`)),1)]),_:1}),C(g,{type:`primary`,onClick:st},{default:S(()=>[W(z(E(G)(`@WORKBENCH:保存`)),1)]),_:1})]),default:S(()=>[C(T,{"label-position":`top`},{default:S(()=>[C(y,{label:E(G)(`@WORKBENCH:名称`)},{default:S(()=>[C(v,{modelValue:q.name,"onUpdate:modelValue":i[23]||=e=>q.name=e,placeholder:E(G)(`@WORKBENCH:如:代码审查 / 写测试`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),C(y,null,{default:S(()=>[P(`div`,Xr,[C(g,{type:`primary`,plain:``,loading:q.aiLoading,onClick:it},{default:S(()=>[W(z(E(G)(`@WORKBENCH:AI 生成项目架构说明`)),1)]),_:1},8,[`loading`]),C(g,{onClick:at},{default:S(()=>[W(z(E(G)(`@WORKBENCH:编辑指令`)),1)]),_:1})])]),_:1}),C(y,{label:E(G)(`@WORKBENCH:内容`)},{default:S(()=>[C(v,{modelValue:q.content,"onUpdate:modelValue":i[24]||=e=>q.content=e,type:`textarea`,rows:10,placeholder:E(G)(`@WORKBENCH:可用变量:`)+`{{task.title}} {{task.desc}} {{sub.title}} {{sub.desc}} {{repo.path}} {{branch}}`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1},8,[`modelValue`,`title`]),C(ae,{modelValue:J.visible,"onUpdate:modelValue":i[29]||=e=>J.visible=e,title:E(G)(`@WORKBENCH:编辑生成指令`),width:`720px`,"append-to-body":``},{footer:S(()=>[C(g,{onClick:i[28]||=e=>J.visible=!1},{default:S(()=>[W(z(E(G)(`@WORKBENCH:取消`)),1)]),_:1}),C(g,{type:`primary`,loading:J.saving,onClick:ot},{default:S(()=>[W(z(E(G)(`@WORKBENCH:保存`)),1)]),_:1},8,[`loading`])]),default:S(()=>[C(T,{"label-position":`top`},{default:S(()=>[C(y,{label:E(G)(`@WORKBENCH:指令内容`)},{default:S(()=>[C(v,{modelValue:J.text,"onUpdate:modelValue":i[27]||=e=>J.text=e,type:`textarea`,rows:18,placeholder:E(G)(`@WORKBENCH:指令内容`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1},8,[`modelValue`,`title`]),C(ae,{modelValue:Y.visible,"onUpdate:modelValue":i[37]||=e=>Y.visible=e,title:Y.editing?E(G)(`@WORKBENCH:编辑任务`):E(G)(`@WORKBENCH:新建任务`),width:`600px`},{footer:S(()=>[C(g,{onClick:i[36]||=e=>Y.visible=!1},{default:S(()=>[W(z(E(G)(`@WORKBENCH:取消`)),1)]),_:1}),C(g,{type:`primary`,onClick:ut},{default:S(()=>[W(z(E(G)(`@WORKBENCH:保存`)),1)]),_:1})]),default:S(()=>[C(T,{"label-position":`top`},{default:S(()=>[C(y,{label:E(G)(`@WORKBENCH:标题`)},{default:S(()=>[C(v,{modelValue:Y.title,"onUpdate:modelValue":i[30]||=e=>Y.title=e},null,8,[`modelValue`])]),_:1},8,[`label`]),C(y,{label:E(G)(`@WORKBENCH:类型`)},{default:S(()=>[C(ue,{modelValue:Y.type,"onUpdate:modelValue":i[31]||=e=>Y.type=e},{default:S(()=>[C(ce,{value:`complex`},{default:S(()=>[W(z(E(G)(`@WORKBENCH:复杂任务(需要拆分子任务)`)),1)]),_:1}),C(ce,{value:`simple`},{default:S(()=>[W(z(E(G)(`@WORKBENCH:简单任务(直接执行)`)),1)]),_:1})]),_:1},8,[`modelValue`])]),_:1},8,[`label`]),Y.type===`simple`?(F(),M(y,{key:0,label:E(G)(`@WORKBENCH:描述`)},{default:S(()=>[C(v,{modelValue:Y.desc,"onUpdate:modelValue":i[32]||=e=>Y.desc=e,type:`textarea`,rows:4,placeholder:E(G)(`@WORKBENCH:把要做的事直接写在这里,执行时会把这段描述作为 prompt 喂给 Claude`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])):(F(),M(y,{key:1,label:E(G)(`@WORKBENCH:描述`)},{default:S(()=>[C(v,{modelValue:Y.desc,"onUpdate:modelValue":i[33]||=e=>Y.desc=e,type:`textarea`,rows:3},null,8,[`modelValue`])]),_:1},8,[`label`])),Y.type===`simple`?(F(),M(y,{key:2,label:E(G)(`@WORKBENCH:覆盖预置提示词(可选)`)},{default:S(()=>[C(v,{modelValue:Y.simpleOverride,"onUpdate:modelValue":i[34]||=e=>Y.simpleOverride=e,type:`textarea`,rows:5,placeholder:E(G)(`@WORKBENCH:留空则使用「预置提示词」下拉里选定的模板;可用变量同子任务覆盖。`)},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])):k(``,!0),C(y,{label:E(G)(`@WORKBENCH:预置提示词`)},{default:S(()=>[C(L,{modelValue:Y.promptId,"onUpdate:modelValue":i[35]||=e=>Y.promptId=e,clearable:``,placeholder:E(G)(`@WORKBENCH:不绑定`),style:{width:`100%`}},{default:S(()=>[(F(!0),H(A,null,_(o.value,e=>(F(),M(I,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1})]),_:1},8,[`modelValue`,`title`]),O.value?(F(),M(ze,{key:2,modelValue:bt.value,"onUpdate:modelValue":i[38]||=e=>bt.value=e,title:O.value.title,desc:O.value.desc,"task-id":O.value.id,"prompt-id":O.value.promptId,onConfirm:St},null,8,[`modelValue`,`title`,`desc`,`task-id`,`prompt-id`])):k(``,!0)])}}}),[[`__scopeId`,`data-v-1c45d6b6`]]);export{ti as default};
|