codexmate 0.0.56 → 0.0.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/cli.js +680 -129
  2. package/lib/task-orchestrator.js +90 -21
  3. package/lib/task-workspace-chat.js +292 -0
  4. package/package.json +2 -2
  5. package/web-ui/app.js +55 -129
  6. package/web-ui/modules/app.computed.main-tabs.mjs +304 -7
  7. package/web-ui/modules/app.methods.agents.mjs +3 -0
  8. package/web-ui/modules/app.methods.claude-config.mjs +65 -25
  9. package/web-ui/modules/app.methods.navigation.mjs +67 -83
  10. package/web-ui/modules/app.methods.openclaw-editing.mjs +3 -6
  11. package/web-ui/modules/app.methods.session-actions.mjs +1 -12
  12. package/web-ui/modules/app.methods.session-browser.mjs +23 -54
  13. package/web-ui/modules/app.methods.session-trash.mjs +0 -1
  14. package/web-ui/modules/app.methods.startup-claude.mjs +16 -31
  15. package/web-ui/modules/app.methods.task-orchestration.mjs +347 -8
  16. package/web-ui/modules/app.methods.tool-config-permissions.mjs +0 -3
  17. package/web-ui/modules/app.methods.web-ui-preferences.mjs +415 -68
  18. package/web-ui/modules/config-template-confirm-pref.mjs +2 -3
  19. package/web-ui/modules/i18n/locales/en.mjs +146 -26
  20. package/web-ui/modules/i18n/locales/ja.mjs +143 -23
  21. package/web-ui/modules/i18n/locales/vi.mjs +145 -25
  22. package/web-ui/modules/i18n/locales/zh-tw.mjs +146 -26
  23. package/web-ui/modules/i18n/locales/zh.mjs +148 -28
  24. package/web-ui/modules/i18n.mjs +5 -12
  25. package/web-ui/modules/sessions-filters-url.mjs +1 -2
  26. package/web-ui/partials/index/layout-header.html +37 -14
  27. package/web-ui/partials/index/panel-orchestration.html +489 -282
  28. package/web-ui/res/web-ui-render.precompiled.js +1049 -610
  29. package/web-ui/styles/layout-shell.css +157 -1
  30. package/web-ui/styles/navigation-panels.css +11 -0
  31. package/web-ui/styles/task-orchestration.css +2161 -4
@@ -103,16 +103,16 @@ return function render(_ctx, _cache) {
103
103
  ? (_openBlock(), _createElementBlock("button", {
104
104
  key: 0,
105
105
  type: "button",
106
- class: _normalizeClass(["top-tab", { active: _ctx.isMainTabNavActive('orchestration') }]),
106
+ class: "top-tab top-tab-disabled",
107
107
  id: "tab-orchestration",
108
108
  role: "tab",
109
109
  "data-main-tab": "orchestration",
110
- tabindex: _ctx.mainTab === 'orchestration' ? 0 : -1,
111
- "aria-selected": _ctx.mainTab === 'orchestration',
112
- "aria-controls": "panel-orchestration",
113
- onPointerdown: $event => (_ctx.onMainTabPointerDown('orchestration', $event)),
114
- onClick: $event => (_ctx.onMainTabClick('orchestration', $event))
115
- }, _toDisplayString(_ctx.t('tab.orchestration')), 43 /* TEXT, CLASS, PROPS, NEED_HYDRATION */, ["tabindex", "aria-selected", "onPointerdown", "onClick"]))
110
+ tabindex: "-1",
111
+ "aria-selected": "false",
112
+ "aria-disabled": "true",
113
+ disabled: "",
114
+ title: _ctx.t('orchestration.rebuilding.body')
115
+ }, _toDisplayString(_ctx.t('tab.orchestration')), 9 /* TEXT, PROPS */, ["title"]))
116
116
  : _createCommentVNode("v-if", true),
117
117
  _createElementVNode("button", {
118
118
  type: "button",
@@ -178,13 +178,23 @@ return function render(_ctx, _cache) {
178
178
  ]))
179
179
  : _createCommentVNode("v-if", true),
180
180
  _createElementVNode("div", {
181
- class: _normalizeClass(['app-shell', { standalone: _ctx.sessionStandalone }])
181
+ class: _normalizeClass(['app-shell', { standalone: _ctx.sessionStandalone, 'sidebar-collapsed': _ctx.sidebarCollapsed }])
182
182
  }, [
183
183
  (!_ctx.sessionStandalone)
184
184
  ? (_openBlock(), _createElementBlock("aside", {
185
185
  key: 0,
186
186
  class: "side-rail"
187
187
  }, [
188
+ _createElementVNode("button", {
189
+ type: "button",
190
+ class: "side-rail-collapse-toggle",
191
+ "aria-pressed": _ctx.sidebarCollapsed ? 'true' : 'false',
192
+ "aria-label": _ctx.sidebarCollapsed ? _ctx.t('side.expand') : _ctx.t('side.collapse'),
193
+ title: _ctx.sidebarCollapsed ? _ctx.t('side.expand') : _ctx.t('side.collapse'),
194
+ onClick: _ctx.toggleSidebarCollapsed
195
+ }, [
196
+ _createElementVNode("span", { "aria-hidden": "true" }, _toDisplayString(_ctx.sidebarCollapsed ? '›' : '‹'), 1 /* TEXT */)
197
+ ], 8 /* PROPS */, ["aria-pressed", "aria-label", "title", "onClick"]),
188
198
  _createElementVNode("div", { class: "brand-block" }, [
189
199
  _createElementVNode("div", { class: "brand-head" }, [
190
200
  _createElementVNode("img", {
@@ -227,6 +237,10 @@ return function render(_ctx, _cache) {
227
237
  onPointerdown: $event => (_ctx.onMainTabPointerDown('dashboard', $event)),
228
238
  onClick: $event => (_ctx.onMainTabClick('dashboard', $event))
229
239
  }, [
240
+ _createElementVNode("span", {
241
+ class: "side-item-icon",
242
+ "aria-hidden": "true"
243
+ }, "⌂"),
230
244
  _createElementVNode("div", { class: "side-item-title" }, _toDisplayString(_ctx.t('side.overview.doctor')), 1 /* TEXT */),
231
245
  _createElementVNode("div", { class: "side-item-meta" }, [
232
246
  _createElementVNode("span", null, _toDisplayString(_ctx.t('side.overview.doctor.meta')), 1 /* TEXT */),
@@ -248,6 +262,10 @@ return function render(_ctx, _cache) {
248
262
  onPointerdown: $event => (_ctx.onMainTabPointerDown('docs', $event)),
249
263
  onClick: $event => (_ctx.onMainTabClick('docs', $event))
250
264
  }, [
265
+ _createElementVNode("span", {
266
+ class: "side-item-icon",
267
+ "aria-hidden": "true"
268
+ }, "?"),
251
269
  _createElementVNode("div", { class: "side-item-title" }, _toDisplayString(_ctx.t('side.docs.cliInstall')), 1 /* TEXT */),
252
270
  _createElementVNode("div", { class: "side-item-meta" }, [
253
271
  _createElementVNode("span", null, _toDisplayString(_ctx.t('side.docs.cliInstall.meta')), 1 /* TEXT */),
@@ -270,6 +288,10 @@ return function render(_ctx, _cache) {
270
288
  onPointerdown: $event => (_ctx.onConfigTabPointerDown('codex', $event)),
271
289
  onClick: $event => (_ctx.onConfigTabClick('codex', $event))
272
290
  }, [
291
+ _createElementVNode("span", {
292
+ class: "side-item-icon",
293
+ "aria-hidden": "true"
294
+ }, "C"),
273
295
  _createElementVNode("div", { class: "side-item-title" }, _toDisplayString(_ctx.t('side.config.codex')), 1 /* TEXT */),
274
296
  _createElementVNode("div", { class: "side-item-meta" }, [
275
297
  _createElementVNode("span", null, _toDisplayString(_ctx.t('side.config.codex.meta')), 1 /* TEXT */),
@@ -287,6 +309,10 @@ return function render(_ctx, _cache) {
287
309
  onPointerdown: $event => (_ctx.onConfigTabPointerDown('claude', $event)),
288
310
  onClick: $event => (_ctx.onConfigTabClick('claude', $event))
289
311
  }, [
312
+ _createElementVNode("span", {
313
+ class: "side-item-icon",
314
+ "aria-hidden": "true"
315
+ }, "A"),
290
316
  _createElementVNode("div", { class: "side-item-title" }, _toDisplayString(_ctx.t('side.config.claude')), 1 /* TEXT */),
291
317
  _createElementVNode("div", { class: "side-item-meta" }, [
292
318
  _createElementVNode("span", null, _toDisplayString(_ctx.t('side.config.claude.meta')), 1 /* TEXT */),
@@ -304,6 +330,10 @@ return function render(_ctx, _cache) {
304
330
  onPointerdown: $event => (_ctx.onConfigTabPointerDown('openclaw', $event)),
305
331
  onClick: $event => (_ctx.onConfigTabClick('openclaw', $event))
306
332
  }, [
333
+ _createElementVNode("span", {
334
+ class: "side-item-icon",
335
+ "aria-hidden": "true"
336
+ }, "O"),
307
337
  _createElementVNode("div", { class: "side-item-title" }, _toDisplayString(_ctx.t('side.config.openclaw')), 1 /* TEXT */),
308
338
  _createElementVNode("div", { class: "side-item-meta" }, [
309
339
  _createElementVNode("span", null, _toDisplayString(_ctx.t('side.config.openclaw.meta')), 1 /* TEXT */),
@@ -321,6 +351,10 @@ return function render(_ctx, _cache) {
321
351
  onPointerdown: $event => (_ctx.onConfigTabPointerDown('opencode', $event)),
322
352
  onClick: $event => (_ctx.onConfigTabClick('opencode', $event))
323
353
  }, [
354
+ _createElementVNode("span", {
355
+ class: "side-item-icon",
356
+ "aria-hidden": "true"
357
+ }, "N"),
324
358
  _createElementVNode("div", { class: "side-item-title" }, _toDisplayString(_ctx.t('side.config.opencode')), 1 /* TEXT */),
325
359
  _createElementVNode("div", { class: "side-item-meta" }, [
326
360
  _createElementVNode("span", null, _toDisplayString(_ctx.t('side.config.opencode.meta')), 1 /* TEXT */),
@@ -345,6 +379,10 @@ return function render(_ctx, _cache) {
345
379
  onPointerdown: $event => (_ctx.onMainTabPointerDown('prompts', $event)),
346
380
  onClick: $event => {_ctx.switchPromptsSubTab('codex'); _ctx.onMainTabClick('prompts')}
347
381
  }, [
382
+ _createElementVNode("span", {
383
+ class: "side-item-icon",
384
+ "aria-hidden": "true"
385
+ }, "P"),
348
386
  _createElementVNode("div", { class: "side-item-title" }, _toDisplayString(_ctx.t('side.prompts.agents')), 1 /* TEXT */),
349
387
  _createElementVNode("div", { class: "side-item-meta" }, [
350
388
  _createElementVNode("span", null, _toDisplayString(_ctx.t('side.prompts.agents.meta')), 1 /* TEXT */)
@@ -359,6 +397,10 @@ return function render(_ctx, _cache) {
359
397
  onPointerdown: $event => (_ctx.onMainTabPointerDown('prompts', $event)),
360
398
  onClick: $event => {_ctx.switchPromptsSubTab('claude-project'); _ctx.onMainTabClick('prompts')}
361
399
  }, [
400
+ _createElementVNode("span", {
401
+ class: "side-item-icon",
402
+ "aria-hidden": "true"
403
+ }, "M"),
362
404
  _createElementVNode("div", { class: "side-item-title" }, _toDisplayString(_ctx.t('side.prompts.claude')), 1 /* TEXT */),
363
405
  _createElementVNode("div", { class: "side-item-meta" }, [
364
406
  _createElementVNode("span", null, _toDisplayString(_ctx.t('side.prompts.claude.meta')), 1 /* TEXT */)
@@ -379,6 +421,10 @@ return function render(_ctx, _cache) {
379
421
  onPointerdown: $event => (_ctx.onMainTabPointerDown('sessions', $event)),
380
422
  onClick: $event => (_ctx.onMainTabClick('sessions', $event))
381
423
  }, [
424
+ _createElementVNode("span", {
425
+ class: "side-item-icon",
426
+ "aria-hidden": "true"
427
+ }, "S"),
382
428
  _createElementVNode("div", { class: "side-item-title" }, _toDisplayString(_ctx.t('side.sessions.browser')), 1 /* TEXT */),
383
429
  _createElementVNode("div", { class: "side-item-meta" }, [
384
430
  _createElementVNode("span", null, _toDisplayString(_ctx.t('side.sessions.browser.meta')), 1 /* TEXT */),
@@ -393,6 +439,10 @@ return function render(_ctx, _cache) {
393
439
  onPointerdown: $event => (_ctx.onMainTabPointerDown('usage', $event)),
394
440
  onClick: $event => (_ctx.onMainTabClick('usage', $event))
395
441
  }, [
442
+ _createElementVNode("span", {
443
+ class: "side-item-icon",
444
+ "aria-hidden": "true"
445
+ }, "↗"),
396
446
  _createElementVNode("div", { class: "side-item-title" }, _toDisplayString(_ctx.t('tab.usage')), 1 /* TEXT */),
397
447
  _createElementVNode("div", { class: "side-item-meta" }, [
398
448
  _createElementVNode("span", null, _toDisplayString(_ctx.t('side.usage.meta')), 1 /* TEXT */),
@@ -411,17 +461,21 @@ return function render(_ctx, _cache) {
411
461
  _createElementVNode("button", {
412
462
  id: "side-tab-orchestration",
413
463
  "data-main-tab": "orchestration",
414
- "aria-current": _ctx.mainTab === 'orchestration' ? 'page' : null,
415
- class: _normalizeClass(['side-item', { active: _ctx.isMainTabNavActive('orchestration') }]),
416
- onPointerdown: $event => (_ctx.onMainTabPointerDown('orchestration', $event)),
417
- onClick: $event => (_ctx.onMainTabClick('orchestration', $event))
464
+ class: "side-item side-item-disabled",
465
+ "aria-disabled": "true",
466
+ disabled: "",
467
+ title: _ctx.t('orchestration.rebuilding.body')
418
468
  }, [
469
+ _createElementVNode("span", {
470
+ class: "side-item-icon",
471
+ "aria-hidden": "true"
472
+ }, "T"),
419
473
  _createElementVNode("div", { class: "side-item-title" }, _toDisplayString(_ctx.t('tab.orchestration')), 1 /* TEXT */),
420
474
  _createElementVNode("div", { class: "side-item-meta" }, [
421
- _createElementVNode("span", null, _toDisplayString(_ctx.t('side.orchestration.meta')), 1 /* TEXT */),
422
- _createElementVNode("span", null, _toDisplayString(_ctx.t('orchestration.queueStats', { running: _ctx.taskOrchestrationQueueStats.running, queued: _ctx.taskOrchestrationQueueStats.queued })), 1 /* TEXT */)
475
+ _createElementVNode("span", null, _toDisplayString(_ctx.t('orchestration.rebuilding.status')), 1 /* TEXT */),
476
+ _createElementVNode("span", null, _toDisplayString(_ctx.t('orchestration.rebuilding.title')), 1 /* TEXT */)
423
477
  ])
424
- ], 42 /* CLASS, PROPS, NEED_HYDRATION */, ["aria-current", "onPointerdown", "onClick"])
478
+ ], 8 /* PROPS */, ["title"])
425
479
  ], 8 /* PROPS */, ["aria-label"]))
426
480
  : _createCommentVNode("v-if", true),
427
481
  _createElementVNode("div", {
@@ -438,6 +492,10 @@ return function render(_ctx, _cache) {
438
492
  onPointerdown: $event => (_ctx.onMainTabPointerDown('market', $event)),
439
493
  onClick: $event => (_ctx.onMainTabClick('market', $event))
440
494
  }, [
495
+ _createElementVNode("span", {
496
+ class: "side-item-icon",
497
+ "aria-hidden": "true"
498
+ }, "★"),
441
499
  _createElementVNode("div", { class: "side-item-title" }, _toDisplayString(_ctx.t('tab.market')), 1 /* TEXT */),
442
500
  _createElementVNode("div", { class: "side-item-meta" }, [
443
501
  _createElementVNode("span", null, _toDisplayString(_ctx.t('skills.localLabel', { target: _ctx.skillsTargetLabel })), 1 /* TEXT */),
@@ -459,6 +517,10 @@ return function render(_ctx, _cache) {
459
517
  onPointerdown: $event => (_ctx.onMainTabPointerDown('plugins', $event)),
460
518
  onClick: $event => (_ctx.onMainTabClick('plugins', $event))
461
519
  }, [
520
+ _createElementVNode("span", {
521
+ class: "side-item-icon",
522
+ "aria-hidden": "true"
523
+ }, "◇"),
462
524
  _createElementVNode("div", { class: "side-item-title" }, _toDisplayString(_ctx.t('side.plugins.tools')), 1 /* TEXT */),
463
525
  _createElementVNode("div", { class: "side-item-meta" }, [
464
526
  _createElementVNode("span", null, _toDisplayString(_ctx.t('side.plugins.tools.meta')), 1 /* TEXT */),
@@ -480,6 +542,10 @@ return function render(_ctx, _cache) {
480
542
  onPointerdown: $event => (_ctx.onMainTabPointerDown('settings', $event)),
481
543
  onClick: $event => (_ctx.onMainTabClick('settings', $event))
482
544
  }, [
545
+ _createElementVNode("span", {
546
+ class: "side-item-icon",
547
+ "aria-hidden": "true"
548
+ }, "⚙"),
483
549
  _createElementVNode("div", { class: "side-item-title" }, _toDisplayString(_ctx.t('side.system.settings')), 1 /* TEXT */),
484
550
  _createElementVNode("div", { class: "side-item-meta" }, [
485
551
  _createElementVNode("span", null, _toDisplayString(_ctx.t('side.system.settings.meta')), 1 /* TEXT */)
@@ -493,6 +559,10 @@ return function render(_ctx, _cache) {
493
559
  onPointerdown: $event => (_ctx.onMainTabPointerDown('trash', $event)),
494
560
  onClick: $event => (_ctx.onMainTabClick('trash', $event))
495
561
  }, [
562
+ _createElementVNode("span", {
563
+ class: "side-item-icon",
564
+ "aria-hidden": "true"
565
+ }, "⌫"),
496
566
  _createElementVNode("div", { class: "side-item-title" }, _toDisplayString(_ctx.t('settings.trash.title')), 1 /* TEXT */),
497
567
  _createElementVNode("div", { class: "side-item-meta" }, [
498
568
  _createElementVNode("span", null, _toDisplayString(_ctx.t('settings.trash.meta')), 1 /* TEXT */),
@@ -2939,7 +3009,7 @@ return function render(_ctx, _cache) {
2939
3009
  }, [
2940
3010
  (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.visibleSessionsList, (session, __, ___, _cached) => {
2941
3011
  const _memo = ([_ctx.activeSessionExportKey === _ctx.getSessionExportKey(session), session.messageCount, session.updatedAt, session.title, session.sourceLabel, session.cwd, _ctx.isSessionPinned(session), _ctx.sessionsLoading, session.match && session.match.count])
2942
- if (_cached && _cached.key === session.source + '-' + session.sessionId + '-' + session.filePath && _isMemoSame(_cached, _memo)) return _cached
3012
+ if (_cached && _cached.el && _cached.key === session.source + '-' + session.sessionId + '-' + session.filePath && _isMemoSame(_cached, _memo)) return _cached
2943
3013
  const _item = (_openBlock(), _createElementBlock("div", {
2944
3014
  key: session.source + '-' + session.sessionId + '-' + session.filePath,
2945
3015
  class: _normalizeClass([
@@ -3435,7 +3505,7 @@ return function render(_ctx, _cache) {
3435
3505
  : _createCommentVNode("v-if", true),
3436
3506
  (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.activeSessionVisibleMessages, (msg, idx, ___, _cached) => {
3437
3507
  const _memo = ([msg.text, msg.timestamp, msg.roleLabel, msg.normalizedRole])
3438
- if (_cached && _cached.key === _ctx.getRecordRenderKey(msg, idx) && _isMemoSame(_cached, _memo)) return _cached
3508
+ if (_cached && _cached.el && _cached.key === _ctx.getRecordRenderKey(msg, idx) && _isMemoSame(_cached, _memo)) return _cached
3439
3509
  const _item = (_openBlock(), _createElementBlock("div", {
3440
3510
  key: _ctx.getRecordRenderKey(msg, idx),
3441
3511
  "data-message-key": _ctx.getRecordRenderKey(msg, idx),
@@ -3486,7 +3556,7 @@ return function render(_ctx, _cache) {
3486
3556
  _createElementVNode("div", { class: "session-timeline-track" }),
3487
3557
  (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.sessionTimelineNodes, (node, __, ___, _cached) => {
3488
3558
  const _memo = ([_ctx.sessionTimelineActiveKey === node.key, node.safePercent, node.title])
3489
- if (_cached && _cached.key === 'timeline-' + node.key && _isMemoSame(_cached, _memo)) return _cached
3559
+ if (_cached && _cached.el && _cached.key === 'timeline-' + node.key && _isMemoSame(_cached, _memo)) return _cached
3490
3560
  const _item = (_openBlock(), _createElementBlock("button", {
3491
3561
  key: 'timeline-' + node.key,
3492
3562
  type: "button",
@@ -3518,7 +3588,7 @@ return function render(_ctx, _cache) {
3518
3588
  ]),
3519
3589
  (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.sessionTimelineNodes, (node, __, ___, _cached) => {
3520
3590
  const _memo = ([_ctx.sessionTimelineActiveKey === node.key, node.safePercent, node.title])
3521
- if (_cached && _cached.key === 'timeline-bar-' + node.key && _isMemoSame(_cached, _memo)) return _cached
3591
+ if (_cached && _cached.el && _cached.key === 'timeline-bar-' + node.key && _isMemoSame(_cached, _memo)) return _cached
3522
3592
  const _item = (_openBlock(), _createElementBlock("button", {
3523
3593
  key: 'timeline-bar-' + node.key,
3524
3594
  type: "button",
@@ -3997,6 +4067,7 @@ return function render(_ctx, _cache) {
3997
4067
  key: 0,
3998
4068
  class: "mode-content",
3999
4069
  id: "panel-orchestration",
4070
+ "data-active": _ctx.mainTab === 'orchestration' ? 'true' : 'false',
4000
4071
  role: "tabpanel",
4001
4072
  "aria-labelledby": "tab-orchestration"
4002
4073
  }, [
@@ -4027,663 +4098,1031 @@ return function render(_ctx, _cache) {
4027
4098
  disabled: _ctx.loading || !!_ctx.initError
4028
4099
  }, _toDisplayString(_ctx.t('dashboard.doctor.title')), 9 /* TEXT, PROPS */, ["onClick", "disabled"])
4029
4100
  ])
4030
- ]),
4031
- (_ctx.taskOrchestrationQueueStats.running || _ctx.taskOrchestrationQueueStats.queued || _ctx.taskOrchestration.runs.length)
4032
- ? (_openBlock(), _createElementBlock("div", {
4033
- key: 0,
4034
- class: "task-hero-meta-strip",
4035
- "aria-label": _ctx.t('orchestration.summary.aria')
4036
- }, [
4037
- _createElementVNode("div", { class: "task-hero-meta" }, [
4038
- _createTextVNode(_toDisplayString(_ctx.t('orchestration.summary.running')) + " ", 1 /* TEXT */),
4039
- _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestrationQueueStats.running), 1 /* TEXT */)
4040
- ]),
4041
- _createElementVNode("div", { class: "task-hero-meta" }, [
4042
- _createTextVNode(_toDisplayString(_ctx.t('orchestration.summary.queued')) + " ", 1 /* TEXT */),
4043
- _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestrationQueueStats.queued), 1 /* TEXT */)
4044
- ]),
4045
- _createElementVNode("div", { class: "task-hero-meta" }, [
4046
- _createTextVNode(_toDisplayString(_ctx.t('orchestration.summary.runs')) + " ", 1 /* TEXT */),
4047
- _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestration.runs.length), 1 /* TEXT */)
4048
- ])
4049
- ], 8 /* PROPS */, ["aria-label"]))
4050
- : _createCommentVNode("v-if", true)
4101
+ ])
4051
4102
  ]),
4052
- _createElementVNode("div", { class: "task-layout-grid task-layout-grid-primary" }, [
4053
- _createElementVNode("section", { class: "selector-section task-compose-flow-card" }, [
4054
- _createElementVNode("div", { class: "task-flow-section task-flow-section-compact" }, [
4055
- _createElementVNode("div", { class: "task-flow-head" }, [
4056
- _createElementVNode("div", { class: "task-flow-step" }, "1"),
4103
+ _createElementVNode("div", { class: "task-layout-grid task-layout-grid-primary task-quick-layout" }, [
4104
+ _createElementVNode("section", { class: "selector-section task-compose-flow-card task-quick-card" }, [
4105
+ _createElementVNode("aside", {
4106
+ class: "task-project-sidebar",
4107
+ "aria-label": _ctx.t('orchestration.workspace.aria')
4108
+ }, [
4109
+ _createElementVNode("div", { class: "task-project-sidebar-head" }, [
4057
4110
  _createElementVNode("div", null, [
4058
- _createElementVNode("div", { class: "task-flow-title" }, _toDisplayString(_ctx.t('orchestration.step1.title')), 1 /* TEXT */),
4059
- _createElementVNode("div", { class: "task-flow-copy" }, _toDisplayString(_ctx.t('orchestration.step1.subtitle')), 1 /* TEXT */)
4060
- ])
4061
- ]),
4062
- (!_ctx.taskOrchestration.target.trim())
4063
- ? (_openBlock(), _createElementBlock("details", {
4064
- key: 0,
4065
- class: "task-template-panel"
4066
- }, [
4067
- _createElementVNode("summary", { class: "task-advanced-summary" }, _toDisplayString(_ctx.t('orchestration.templates.title')), 1 /* TEXT */),
4068
- _createElementVNode("div", { class: "task-template-block" }, [
4069
- _createElementVNode("div", { class: "task-template-chip-group" }, [
4070
- _createElementVNode("button", {
4071
- type: "button",
4072
- class: "task-template-chip",
4073
- onClick: $event => {_ctx.taskOrchestration.target = _ctx.t('orchestration.templates.reviewFix.target'); _ctx.taskOrchestration.selectedEngine = 'codex'; _ctx.taskOrchestration.workflowIdsText = ''; _ctx.taskOrchestration.notes = _ctx.t('orchestration.templates.reviewFix.notes'); _ctx.taskOrchestration.followUpsText = _ctx.t('orchestration.templates.reviewFix.followUps')}
4074
- }, _toDisplayString(_ctx.t('orchestration.templates.reviewFix.label')), 9 /* TEXT, PROPS */, ["onClick"]),
4075
- _createElementVNode("button", {
4076
- type: "button",
4077
- class: "task-template-chip",
4078
- onClick: $event => {_ctx.taskOrchestration.target = _ctx.t('orchestration.templates.planOnly.target'); _ctx.taskOrchestration.selectedEngine = 'codex'; _ctx.taskOrchestration.workflowIdsText = ''; _ctx.taskOrchestration.notes = _ctx.t('orchestration.templates.planOnly.notes'); _ctx.taskOrchestration.followUpsText = ''}
4079
- }, _toDisplayString(_ctx.t('orchestration.templates.planOnly.label')), 9 /* TEXT, PROPS */, ["onClick"]),
4080
- _createElementVNode("button", {
4081
- type: "button",
4082
- class: "task-template-chip",
4083
- onClick: $event => {_ctx.taskOrchestration.target = _ctx.t('orchestration.templates.workflowBatch.target'); _ctx.taskOrchestration.selectedEngine = 'workflow'; _ctx.taskOrchestration.workflowIdsText = _ctx.t('orchestration.templates.workflowBatch.workflowIds'); _ctx.taskOrchestration.notes = _ctx.t('orchestration.templates.workflowBatch.notes'); _ctx.taskOrchestration.followUpsText = ''}
4084
- }, _toDisplayString(_ctx.t('orchestration.templates.workflowBatch.label')), 9 /* TEXT, PROPS */, ["onClick"])
4085
- ])
4086
- ])
4087
- ]))
4088
- : _createCommentVNode("v-if", true),
4089
- _createElementVNode("div", { class: "selector-grid task-composer-grid task-composer-grid-primary" }, [
4090
- _createElementVNode("label", { class: "selector-field task-field task-field-wide task-goal-field" }, [
4091
- _createElementVNode("span", { class: "selector-label" }, _toDisplayString(_ctx.t('orchestration.fields.target')), 1 /* TEXT */),
4092
- _withDirectives(_createElementVNode("textarea", {
4093
- "onUpdate:modelValue": $event => ((_ctx.taskOrchestration.target) = $event),
4094
- class: "task-textarea task-textarea-goal",
4095
- rows: "5",
4096
- placeholder: _ctx.t('orchestration.fields.target.placeholder')
4097
- }, null, 8 /* PROPS */, ["onUpdate:modelValue", "placeholder"]), [
4098
- [_vModelText, _ctx.taskOrchestration.target]
4099
- ]),
4100
- _createElementVNode("span", { class: "task-field-hint" }, _toDisplayString(_ctx.t('orchestration.fields.target.hint')), 1 /* TEXT */)
4101
- ])
4102
- ]),
4103
- _createElementVNode("div", { class: "task-draft-overview task-draft-inline" }, [
4104
- _createElementVNode("div", { class: "task-draft-inline-head" }, [
4105
- _createElementVNode("span", {
4106
- class: _normalizeClass(['pill', _ctx.taskOrchestrationDraftReadiness.tone])
4107
- }, _toDisplayString(_ctx.taskOrchestrationDraftReadiness.title), 3 /* TEXT, CLASS */),
4108
- _createElementVNode("div", { class: "task-readiness-copy task-draft-inline-copy" }, _toDisplayString(_ctx.taskOrchestrationDraftReadiness.summary), 1 /* TEXT */)
4111
+ _createElementVNode("div", { class: "task-thread-card-label" }, _toDisplayString(_ctx.t('orchestration.workspace.title')), 1 /* TEXT */),
4112
+ _createElementVNode("div", { class: "skills-panel-note" }, _toDisplayString(_ctx.t('orchestration.workspace.subtitle')), 1 /* TEXT */)
4109
4113
  ]),
4110
- _createElementVNode("div", { class: "task-config-strip" }, [
4111
- _createElementVNode("div", { class: "task-config-pill" }, _toDisplayString(_ctx.taskOrchestration.selectedEngine === 'workflow' ? _ctx.t('orchestration.engine.workflow') : _ctx.t('orchestration.engine.codex')), 1 /* TEXT */),
4112
- _createElementVNode("div", { class: "task-config-pill" }, _toDisplayString(_ctx.taskOrchestration.runMode === 'dry-run' ? _ctx.t('orchestration.runMode.dryRun') : (_ctx.taskOrchestration.runMode === 'read' ? _ctx.t('orchestration.runMode.readOnly') : _ctx.t('orchestration.runMode.write'))), 1 /* TEXT */),
4113
- (_ctx.taskOrchestration.title.trim())
4114
- ? (_openBlock(), _createElementBlock("div", {
4115
- key: 0,
4116
- class: "task-config-pill"
4117
- }, _toDisplayString(_ctx.t('orchestration.pills.hasTitle')), 1 /* TEXT */))
4118
- : _createCommentVNode("v-if", true),
4119
- (_ctx.taskOrchestration.selectedEngine === 'workflow' && _ctx.taskOrchestrationDraftMetrics.workflowCount > 0)
4120
- ? (_openBlock(), _createElementBlock("div", {
4121
- key: 1,
4122
- class: "task-config-pill"
4123
- }, _toDisplayString(_ctx.t('orchestration.pills.workflowCount', { count: _ctx.taskOrchestrationDraftMetrics.workflowCount })), 1 /* TEXT */))
4124
- : _createCommentVNode("v-if", true),
4125
- (_ctx.taskOrchestration.plan)
4126
- ? (_openBlock(), _createElementBlock("div", {
4127
- key: 2,
4128
- class: "task-config-pill"
4129
- }, _toDisplayString(_ctx.t('orchestration.pills.planNodes', { count: _ctx.taskOrchestrationDraftMetrics.planNodeCount })), 1 /* TEXT */))
4130
- : _createCommentVNode("v-if", true)
4131
- ])
4132
- ])
4133
- ]),
4134
- _createElementVNode("div", { class: "task-flow-section task-flow-section-compact" }, [
4135
- _createElementVNode("div", { class: "task-flow-head" }, [
4136
- _createElementVNode("div", { class: "task-flow-step" }, "2"),
4137
- _createElementVNode("div", null, [
4138
- _createElementVNode("div", { class: "task-flow-title" }, _toDisplayString(_ctx.t('orchestration.step2.title')), 1 /* TEXT */),
4139
- _createElementVNode("div", { class: "task-flow-copy" }, _toDisplayString(_ctx.t('orchestration.step2.subtitle')), 1 /* TEXT */)
4140
- ])
4114
+ _createElementVNode("button", {
4115
+ type: "button",
4116
+ class: "btn-mini",
4117
+ onClick: $event => (_ctx.loadTaskOrchestrationOverview({ forceRefresh: true, includeDetail: true })),
4118
+ disabled: _ctx.taskOrchestration.loading
4119
+ }, _toDisplayString(_ctx.taskOrchestration.loading ? _ctx.t('common.refreshing') : _ctx.t('common.refresh')), 9 /* TEXT, PROPS */, ["onClick", "disabled"])
4141
4120
  ]),
4142
- _createElementVNode("div", { class: "selector-grid task-composer-grid task-composer-grid-compact task-composer-grid-inline" }, [
4143
- _createElementVNode("label", { class: "selector-field" }, [
4144
- _createElementVNode("span", { class: "selector-label" }, _toDisplayString(_ctx.t('orchestration.fields.engine')), 1 /* TEXT */),
4145
- _withDirectives(_createElementVNode("select", {
4146
- "onUpdate:modelValue": $event => ((_ctx.taskOrchestration.selectedEngine) = $event),
4147
- class: "provider-fast-switch-select",
4148
- disabled: ""
4121
+ _createElementVNode("div", {
4122
+ class: "task-project-list",
4123
+ "aria-label": _ctx.t('orchestration.workspace.selector')
4124
+ }, [
4125
+ (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.taskOrchestrationWorkspaceItems, (workspace) => {
4126
+ return (_openBlock(), _createElementBlock("button", {
4127
+ key: workspace.key,
4128
+ type: "button",
4129
+ class: _normalizeClass(['task-project-item', { active: workspace.active }]),
4130
+ "aria-selected": workspace.active ? 'true' : 'false',
4131
+ title: workspace.path ? _ctx.t('orchestration.workspace.pathHidden') : workspace.meta,
4132
+ onClick: $event => (_ctx.selectTaskWorkspace(workspace.path))
4149
4133
  }, [
4150
- _createElementVNode("option", { value: "codex" }, _toDisplayString(_ctx.t('orchestration.engine.codex')), 1 /* TEXT */),
4151
- _createElementVNode("option", { value: "workflow" }, _toDisplayString(_ctx.t('orchestration.engine.workflow')), 1 /* TEXT */)
4152
- ], 8 /* PROPS */, ["onUpdate:modelValue"]), [
4153
- [_vModelSelect, _ctx.taskOrchestration.selectedEngine]
4154
- ])
4134
+ _createElementVNode("span", { class: "task-project-item-title" }, _toDisplayString(workspace.label), 1 /* TEXT */),
4135
+ _createElementVNode("span", { class: "task-project-item-meta" }, _toDisplayString(workspace.path ? _ctx.t('orchestration.workspace.pathHidden') : workspace.meta), 1 /* TEXT */),
4136
+ _createElementVNode("span", { class: "task-project-item-stats" }, _toDisplayString(_ctx.t('orchestration.workspace.counts', { runs: workspace.runCount, queue: workspace.queueCount })), 1 /* TEXT */)
4137
+ ], 10 /* CLASS, PROPS */, ["aria-selected", "title", "onClick"]))
4138
+ }), 128 /* KEYED_FRAGMENT */))
4139
+ ], 8 /* PROPS */, ["aria-label"]),
4140
+ _createElementVNode("button", {
4141
+ type: "button",
4142
+ class: "btn-tool btn-primary task-project-new-session",
4143
+ onClick: $event => (_ctx.startNewTaskWorkspaceSession())
4144
+ }, _toDisplayString(_ctx.t('orchestration.workspace.newSession')), 9 /* TEXT, PROPS */, ["onClick"]),
4145
+ _createElementVNode("div", { class: "task-session-inbox" }, [
4146
+ _createElementVNode("div", { class: "task-session-inbox-head" }, [
4147
+ _createElementVNode("span", { class: "task-readiness-title" }, _toDisplayString(_ctx.t('orchestration.workspace.sessions.title')), 1 /* TEXT */),
4148
+ _createElementVNode("span", { class: "pill neutral" }, _toDisplayString(_ctx.taskOrchestrationWorkspaceSessions.length), 1 /* TEXT */)
4155
4149
  ]),
4156
- _createElementVNode("label", { class: "selector-field" }, [
4157
- _createElementVNode("span", { class: "selector-label" }, _toDisplayString(_ctx.t('orchestration.fields.runMode')), 1 /* TEXT */),
4158
- _withDirectives(_createElementVNode("select", {
4159
- "onUpdate:modelValue": $event => ((_ctx.taskOrchestration.runMode) = $event),
4160
- class: "provider-fast-switch-select",
4161
- disabled: ""
4150
+ (!_ctx.taskOrchestrationWorkspaceSessions.length)
4151
+ ? (_openBlock(), _createElementBlock("div", {
4152
+ key: 0,
4153
+ class: "task-empty-state task-session-empty"
4154
+ }, [
4155
+ _createElementVNode("div", { class: "task-empty-title" }, _toDisplayString(_ctx.t('orchestration.workspace.sessions.empty.title')), 1 /* TEXT */),
4156
+ _createElementVNode("div", { class: "task-empty-copy" }, _toDisplayString(_ctx.t('orchestration.workspace.sessions.empty.subtitle')), 1 /* TEXT */)
4157
+ ]))
4158
+ : _createCommentVNode("v-if", true),
4159
+ (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.taskOrchestrationWorkspaceSessions.slice(0, 8), (session) => {
4160
+ return (_openBlock(), _createElementBlock("button", {
4161
+ key: session.id,
4162
+ type: "button",
4163
+ class: "task-session-inbox-item",
4164
+ onClick: $event => (_ctx.continueTaskWorkspaceSession(session))
4162
4165
  }, [
4163
- _createElementVNode("option", { value: "write" }, _toDisplayString(_ctx.t('orchestration.runMode.write')), 1 /* TEXT */),
4164
- _createElementVNode("option", { value: "read" }, _toDisplayString(_ctx.t('orchestration.runMode.readOnly')), 1 /* TEXT */),
4165
- _createElementVNode("option", { value: "dry-run" }, _toDisplayString(_ctx.t('orchestration.runMode.dryRun')), 1 /* TEXT */)
4166
- ], 8 /* PROPS */, ["onUpdate:modelValue"]), [
4167
- [_vModelSelect, _ctx.taskOrchestration.runMode]
4168
- ])
4169
- ])
4170
- ]),
4171
- _createElementVNode("details", { class: "task-advanced-panel" }, [
4172
- _createElementVNode("summary", { class: "task-advanced-summary" }, _toDisplayString(_ctx.t('orchestration.advanced.title')), 1 /* TEXT */),
4173
- _createElementVNode("div", { class: "selector-grid task-composer-grid task-composer-grid-secondary" }, [
4174
- _createElementVNode("label", { class: "selector-field task-field-wide" }, [
4175
- _createElementVNode("span", { class: "selector-label" }, _toDisplayString(_ctx.t('orchestration.fields.title')), 1 /* TEXT */),
4176
- _withDirectives(_createElementVNode("input", {
4177
- "onUpdate:modelValue": $event => ((_ctx.taskOrchestration.title) = $event),
4178
- class: "model-input",
4179
- type: "text",
4180
- placeholder: _ctx.t('orchestration.fields.title.placeholder')
4181
- }, null, 8 /* PROPS */, ["onUpdate:modelValue", "placeholder"]), [
4182
- [_vModelText, _ctx.taskOrchestration.title]
4183
- ])
4184
- ]),
4185
- _createElementVNode("label", { class: "selector-field task-field-wide" }, [
4186
- _createElementVNode("span", { class: "selector-label" }, _toDisplayString(_ctx.t('orchestration.fields.notes')), 1 /* TEXT */),
4187
- _withDirectives(_createElementVNode("textarea", {
4188
- "onUpdate:modelValue": $event => ((_ctx.taskOrchestration.notes) = $event),
4189
- class: "task-textarea",
4190
- rows: "3",
4191
- placeholder: _ctx.t('orchestration.fields.notes.placeholder')
4192
- }, null, 8 /* PROPS */, ["onUpdate:modelValue", "placeholder"]), [
4193
- [_vModelText, _ctx.taskOrchestration.notes]
4166
+ _createElementVNode("span", { class: "task-session-inbox-main" }, [
4167
+ _createElementVNode("span", { class: "task-session-inbox-title" }, _toDisplayString(session.type === 'queue' ? _ctx.t('orchestration.workspace.sessions.queueTitle') : _ctx.t('orchestration.workspace.sessions.runTitle')), 1 /* TEXT */),
4168
+ _createElementVNode("span", { class: "task-session-inbox-meta" }, _toDisplayString(_ctx.t('orchestration.workspace.sessions.detailsHidden')), 1 /* TEXT */)
4194
4169
  ]),
4195
- _createElementVNode("span", { class: "task-field-hint" }, _toDisplayString(_ctx.t('orchestration.fields.notes.hint')), 1 /* TEXT */)
4170
+ _createElementVNode("span", {
4171
+ class: _normalizeClass(['pill', _ctx.taskRunStatusTone(session.status)])
4172
+ }, _toDisplayString(session.status), 3 /* TEXT, CLASS */)
4173
+ ], 8 /* PROPS */, ["onClick"]))
4174
+ }), 128 /* KEYED_FRAGMENT */))
4175
+ ])
4176
+ ], 8 /* PROPS */, ["aria-label"]),
4177
+ _createElementVNode("div", { class: "task-quick-main" }, [
4178
+ _createElementVNode("div", { class: "task-quick-copy" }, [
4179
+ _createElementVNode("div", { class: "task-hero-kicker" }, _toDisplayString(_ctx.t('orchestration.quick.kicker')), 1 /* TEXT */),
4180
+ _createElementVNode("div", { class: "selector-title task-quick-title" }, _toDisplayString(_ctx.t('orchestration.quick.title')), 1 /* TEXT */),
4181
+ _createElementVNode("div", { class: "skills-panel-note task-hero-copy" }, _toDisplayString(_ctx.t('orchestration.quick.subtitle')), 1 /* TEXT */)
4182
+ ]),
4183
+ _createElementVNode("section", {
4184
+ class: "task-agent-cockpit",
4185
+ "aria-label": _ctx.t('orchestration.agent.aria')
4186
+ }, [
4187
+ _createElementVNode("div", { class: "task-agent-cockpit-head" }, [
4188
+ _createElementVNode("div", null, [
4189
+ _createElementVNode("div", { class: "task-hero-kicker" }, _toDisplayString(_ctx.t('orchestration.agent.kicker')), 1 /* TEXT */),
4190
+ _createElementVNode("div", { class: "selector-title task-agent-title" }, _toDisplayString(_ctx.t('orchestration.agent.title')), 1 /* TEXT */),
4191
+ _createElementVNode("div", { class: "skills-panel-note task-agent-copy" }, _toDisplayString(_ctx.t('orchestration.agent.subtitle')), 1 /* TEXT */)
4196
4192
  ]),
4197
- _createElementVNode("label", { class: "selector-field task-field-wide" }, [
4198
- _createElementVNode("span", { class: "selector-label" }, _toDisplayString(_ctx.t('orchestration.fields.followUps')), 1 /* TEXT */),
4199
- _withDirectives(_createElementVNode("textarea", {
4200
- "onUpdate:modelValue": $event => ((_ctx.taskOrchestration.followUpsText) = $event),
4201
- class: "task-textarea",
4202
- rows: "3",
4203
- placeholder: _ctx.t('orchestration.fields.followUps.placeholder')
4204
- }, null, 8 /* PROPS */, ["onUpdate:modelValue", "placeholder"]), [
4205
- [_vModelText, _ctx.taskOrchestration.followUpsText]
4206
- ])
4193
+ _createElementVNode("span", {
4194
+ class: _normalizeClass(['pill', _ctx.taskOrchestration.running || _ctx.taskOrchestration.planning ? 'warn' : (_ctx.taskOrchestrationSelectedRun && _ctx.taskOrchestrationSelectedRun.run ? _ctx.taskRunStatusTone(_ctx.taskOrchestrationSelectedRun.run.status) : 'neutral')])
4195
+ }, _toDisplayString(_ctx.taskOrchestration.running ? _ctx.t('orchestration.agent.state.running') : (_ctx.taskOrchestration.planning ? _ctx.t('orchestration.agent.state.planning') : (_ctx.taskOrchestrationSelectedRun && _ctx.taskOrchestrationSelectedRun.run ? _ctx.taskOrchestrationSelectedRun.run.status : _ctx.t('orchestration.agent.state.ready')))), 3 /* TEXT, CLASS */)
4196
+ ]),
4197
+ _createElementVNode("div", { class: "task-agent-surface-grid" }, [
4198
+ _createElementVNode("div", { class: "task-agent-surface-card" }, [
4199
+ _createElementVNode("span", null, _toDisplayString(_ctx.t('orchestration.agent.surface.workspace')), 1 /* TEXT */),
4200
+ _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestrationWorkspacePath ? _ctx.t('orchestration.privacy.workspace.selected') : _ctx.t('orchestration.chat.context.workspace.auto')), 1 /* TEXT */)
4207
4201
  ]),
4208
- _createElementVNode("label", { class: "selector-field" }, [
4209
- _createElementVNode("span", { class: "selector-label" }, _toDisplayString(_ctx.t('orchestration.fields.concurrency')), 1 /* TEXT */),
4210
- _withDirectives(_createElementVNode("input", {
4211
- "onUpdate:modelValue": $event => ((_ctx.taskOrchestration.concurrency) = $event),
4212
- class: "model-input",
4213
- type: "number",
4214
- min: "1",
4215
- max: "8"
4216
- }, null, 8 /* PROPS */, ["onUpdate:modelValue"]), [
4217
- [_vModelText, _ctx.taskOrchestration.concurrency]
4218
- ]),
4219
- _createElementVNode("span", { class: "task-field-hint" }, _toDisplayString(_ctx.t('orchestration.fields.concurrency.hint')), 1 /* TEXT */)
4202
+ _createElementVNode("div", { class: "task-agent-surface-card" }, [
4203
+ _createElementVNode("span", null, _toDisplayString(_ctx.t('orchestration.agent.surface.session')), 1 /* TEXT */),
4204
+ _createElementVNode("strong", null, _toDisplayString((_ctx.taskOrchestration.threadId.trim() || (_ctx.taskOrchestrationSelectedRun && _ctx.taskOrchestrationSelectedRun.threadId)) ? _ctx.t('orchestration.privacy.thread.selected') : _ctx.t('orchestration.chat.context.thread.auto')), 1 /* TEXT */)
4220
4205
  ]),
4221
- _createElementVNode("label", { class: "selector-field" }, [
4222
- _createElementVNode("span", { class: "selector-label" }, _toDisplayString(_ctx.t('orchestration.fields.autoFixRounds')), 1 /* TEXT */),
4223
- _withDirectives(_createElementVNode("input", {
4224
- "onUpdate:modelValue": $event => ((_ctx.taskOrchestration.autoFixRounds) = $event),
4225
- class: "model-input",
4226
- type: "number",
4227
- min: "0",
4228
- max: "5"
4229
- }, null, 8 /* PROPS */, ["onUpdate:modelValue"]), [
4230
- [_vModelText, _ctx.taskOrchestration.autoFixRounds]
4231
- ]),
4232
- _createElementVNode("span", { class: "task-field-hint" }, _toDisplayString(_ctx.t('orchestration.fields.autoFixRounds.hint')), 1 /* TEXT */)
4206
+ _createElementVNode("div", { class: "task-agent-surface-card" }, [
4207
+ _createElementVNode("span", null, _toDisplayString(_ctx.t('orchestration.agent.surface.mode')), 1 /* TEXT */),
4208
+ _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestration.selectedEngine === 'workflow' ? _ctx.t('orchestration.engine.workflow') : _ctx.t('orchestration.engine.openaiChat')) + " · " + _toDisplayString(_ctx.taskOrchestration.runMode === 'dry-run' ? _ctx.t('orchestration.runMode.dryRun') : (_ctx.taskOrchestration.runMode === 'read' ? _ctx.t('orchestration.runMode.readOnly') : _ctx.t('orchestration.runMode.write'))), 1 /* TEXT */)
4233
4209
  ]),
4234
- (_ctx.taskOrchestration.selectedEngine === 'workflow')
4235
- ? (_openBlock(), _createElementBlock("label", {
4210
+ _createElementVNode("div", { class: "task-agent-surface-card" }, [
4211
+ _createElementVNode("span", null, _toDisplayString(_ctx.t('orchestration.agent.surface.trace')), 1 /* TEXT */),
4212
+ _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestrationWorkspaceRuns.length) + " " + _toDisplayString(_ctx.t('orchestration.agent.surface.runs')) + " · " + _toDisplayString(_ctx.taskOrchestrationWorkspaceQueue.length) + " " + _toDisplayString(_ctx.t('orchestration.agent.surface.queue')), 1 /* TEXT */)
4213
+ ])
4214
+ ])
4215
+ ], 8 /* PROPS */, ["aria-label"]),
4216
+ _createElementVNode("div", { class: "task-quick-input-card task-chat-panel" }, [
4217
+ _createElementVNode("div", {
4218
+ class: "task-chat-thread",
4219
+ role: "log",
4220
+ "aria-label": _ctx.t('orchestration.chat.thread.aria')
4221
+ }, [
4222
+ (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.taskOrchestrationConversationMessages, (message) => {
4223
+ return (_openBlock(), _createElementBlock("div", {
4224
+ key: message.id,
4225
+ class: _normalizeClass(['task-chat-bubble-row', message.role === 'user' ? 'is-user' : 'is-assistant'])
4226
+ }, [
4227
+ _createElementVNode("div", { class: "task-chat-bubble" }, [
4228
+ _createElementVNode("div", { class: "task-chat-bubble-label" }, _toDisplayString(message.label), 1 /* TEXT */),
4229
+ _createElementVNode("div", { class: "task-chat-bubble-text" }, _toDisplayString(message.text), 1 /* TEXT */),
4230
+ (message.meta)
4231
+ ? (_openBlock(), _createElementBlock("div", {
4232
+ key: 0,
4233
+ class: "task-chat-bubble-meta"
4234
+ }, _toDisplayString(message.meta), 1 /* TEXT */))
4235
+ : _createCommentVNode("v-if", true)
4236
+ ])
4237
+ ], 2 /* CLASS */))
4238
+ }), 128 /* KEYED_FRAGMENT */)),
4239
+ (_ctx.taskOrchestration.plan || _ctx.taskOrchestration.planIssues.length || _ctx.taskOrchestration.planWarnings.length || _ctx.taskOrchestration.lastError)
4240
+ ? (_openBlock(), _createElementBlock("div", {
4236
4241
  key: 0,
4237
- class: "selector-field task-field-wide"
4242
+ class: "task-chat-bubble-row is-user task-thread-plan-request"
4238
4243
  }, [
4239
- _createElementVNode("span", { class: "selector-label" }, _toDisplayString(_ctx.t('orchestration.fields.workflowIds')), 1 /* TEXT */),
4240
- _withDirectives(_createElementVNode("textarea", {
4241
- "onUpdate:modelValue": $event => ((_ctx.taskOrchestration.workflowIdsText) = $event),
4242
- class: "task-textarea",
4243
- rows: "3",
4244
- placeholder: _ctx.t('orchestration.fields.workflowIds.placeholder')
4245
- }, null, 8 /* PROPS */, ["onUpdate:modelValue", "placeholder"]), [
4246
- [_vModelText, _ctx.taskOrchestration.workflowIdsText]
4247
- ]),
4248
- _createElementVNode("span", { class: "task-field-hint" }, _toDisplayString(_ctx.t('orchestration.fields.workflowIds.hint', { count: _ctx.taskOrchestration.workflows.length })), 1 /* TEXT */),
4249
- (_ctx.taskOrchestration.workflows.length)
4244
+ _createElementVNode("div", { class: "task-chat-bubble" }, [
4245
+ _createElementVNode("div", { class: "task-chat-bubble-label" }, "You · /plan"),
4246
+ _createElementVNode("div", { class: "task-chat-bubble-text" }, "/plan " + _toDisplayString(_ctx.taskOrchestration.target), 1 /* TEXT */),
4247
+ (_ctx.taskOrchestrationDraftMetrics.followUpCount)
4248
+ ? (_openBlock(), _createElementBlock("div", {
4249
+ key: 0,
4250
+ class: "task-chat-bubble-meta"
4251
+ }, _toDisplayString(_ctx.t('orchestration.chat.input.sequenceHint', { count: _ctx.taskOrchestrationDraftMetrics.followUpCount + 1 })), 1 /* TEXT */))
4252
+ : _createCommentVNode("v-if", true)
4253
+ ])
4254
+ ]))
4255
+ : _createCommentVNode("v-if", true),
4256
+ (_ctx.taskOrchestration.plan || _ctx.taskOrchestration.planIssues.length || _ctx.taskOrchestration.planWarnings.length || _ctx.taskOrchestration.lastError)
4257
+ ? (_openBlock(), _createElementBlock("section", {
4258
+ key: 1,
4259
+ class: "selector-section task-plan-card task-thread-message-card task-thread-plan-card"
4260
+ }, [
4261
+ _createElementVNode("div", { class: "task-thread-card-label" }, "AI · " + _toDisplayString(_ctx.t('orchestration.plan.title')), 1 /* TEXT */),
4262
+ (_ctx.taskOrchestration.lastError)
4250
4263
  ? (_openBlock(), _createElementBlock("div", {
4251
4264
  key: 0,
4252
- class: "task-workflow-suggestions"
4265
+ class: "task-issue-item"
4266
+ }, _toDisplayString(_ctx.taskOrchestration.lastError), 1 /* TEXT */))
4267
+ : _createCommentVNode("v-if", true),
4268
+ (_ctx.taskOrchestration.plan)
4269
+ ? (_openBlock(), _createElementBlock("div", {
4270
+ key: 1,
4271
+ class: "task-thread-run-summary task-thread-plan-summary"
4253
4272
  }, [
4254
- (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.taskOrchestration.workflows, (workflow) => {
4255
- return (_openBlock(), _createElementBlock("button", {
4256
- key: workflow.id || workflow.name,
4257
- type: "button",
4258
- class: "task-workflow-chip",
4259
- onClick: $event => (_ctx.appendTaskWorkflowId(workflow.id || workflow.name))
4260
- }, [
4261
- _createElementVNode("span", null, _toDisplayString(workflow.name || workflow.id), 1 /* TEXT */),
4262
- (workflow.stepCount)
4263
- ? (_openBlock(), _createElementBlock("small", { key: 0 }, _toDisplayString(_ctx.t('orchestration.workflow.stepCount', { count: workflow.stepCount })), 1 /* TEXT */))
4264
- : _createCommentVNode("v-if", true)
4265
- ], 8 /* PROPS */, ["onClick"]))
4273
+ _createElementVNode("span", { class: "pill configured" }, "/plan"),
4274
+ _createElementVNode("span", { class: "task-thread-run-summary-copy" }, _toDisplayString(_ctx.t('orchestration.chat.assistant.planSummary', { nodes: _ctx.taskOrchestration.plan.nodes.length, waves: _ctx.taskOrchestration.plan.waves.length })), 1 /* TEXT */)
4275
+ ]))
4276
+ : _createCommentVNode("v-if", true),
4277
+ (_ctx.taskOrchestration.planIssues.length)
4278
+ ? (_openBlock(), _createElementBlock("div", {
4279
+ key: 2,
4280
+ class: "task-issues-list"
4281
+ }, [
4282
+ (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.taskOrchestration.planIssues, (issue) => {
4283
+ return (_openBlock(), _createElementBlock("div", {
4284
+ key: issue.code + issue.message,
4285
+ class: "task-issue-item"
4286
+ }, _toDisplayString(issue.message), 1 /* TEXT */))
4266
4287
  }), 128 /* KEYED_FRAGMENT */))
4267
4288
  ]))
4289
+ : _createCommentVNode("v-if", true),
4290
+ (_ctx.taskOrchestration.planWarnings.length)
4291
+ ? (_openBlock(), _createElementBlock("div", {
4292
+ key: 3,
4293
+ class: "task-warning-list"
4294
+ }, [
4295
+ (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.taskOrchestration.planWarnings, (warning) => {
4296
+ return (_openBlock(), _createElementBlock("div", {
4297
+ key: warning,
4298
+ class: "task-warning-item"
4299
+ }, _toDisplayString(warning), 1 /* TEXT */))
4300
+ }), 128 /* KEYED_FRAGMENT */))
4301
+ ]))
4302
+ : _createCommentVNode("v-if", true),
4303
+ (_ctx.taskOrchestration.plan)
4304
+ ? (_openBlock(), _createElementBlock("details", {
4305
+ key: 4,
4306
+ class: "task-thread-run-details task-thread-plan-details"
4307
+ }, [
4308
+ _createElementVNode("summary", null, "Plan details"),
4309
+ _createElementVNode("div", { class: "task-plan-summary-strip" }, [
4310
+ _createElementVNode("div", { class: "task-plan-summary-item" }, [
4311
+ _createElementVNode("span", { class: "task-plan-summary-label" }, _toDisplayString(_ctx.t('orchestration.plan.summary.nodes')), 1 /* TEXT */),
4312
+ _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestration.plan.nodes.length), 1 /* TEXT */)
4313
+ ]),
4314
+ _createElementVNode("div", { class: "task-plan-summary-item" }, [
4315
+ _createElementVNode("span", { class: "task-plan-summary-label" }, _toDisplayString(_ctx.t('orchestration.plan.summary.waves')), 1 /* TEXT */),
4316
+ _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestration.plan.waves.length), 1 /* TEXT */)
4317
+ ]),
4318
+ _createElementVNode("div", { class: "task-plan-summary-item" }, [
4319
+ _createElementVNode("span", { class: "task-plan-summary-label" }, _toDisplayString(_ctx.t('orchestration.plan.summary.engine')), 1 /* TEXT */),
4320
+ _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestration.plan.engine), 1 /* TEXT */)
4321
+ ]),
4322
+ (_ctx.taskOrchestration.plan.threadId)
4323
+ ? (_openBlock(), _createElementBlock("div", {
4324
+ key: 0,
4325
+ class: "task-plan-summary-item"
4326
+ }, [
4327
+ _createElementVNode("span", { class: "task-plan-summary-label" }, _toDisplayString(_ctx.t('orchestration.plan.summary.threadId')), 1 /* TEXT */),
4328
+ _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestration.plan.threadId), 1 /* TEXT */)
4329
+ ]))
4330
+ : _createCommentVNode("v-if", true),
4331
+ (_ctx.taskOrchestration.plan.cwd)
4332
+ ? (_openBlock(), _createElementBlock("div", {
4333
+ key: 1,
4334
+ class: "task-plan-summary-item"
4335
+ }, [
4336
+ _createElementVNode("span", { class: "task-plan-summary-label" }, _toDisplayString(_ctx.t('orchestration.plan.summary.cwd')), 1 /* TEXT */),
4337
+ _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestration.plan.cwd), 1 /* TEXT */)
4338
+ ]))
4339
+ : _createCommentVNode("v-if", true)
4340
+ ]),
4341
+ _createElementVNode("div", { class: "task-wave-list" }, [
4342
+ (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.taskOrchestration.plan.waves, (wave) => {
4343
+ return (_openBlock(), _createElementBlock("div", {
4344
+ key: wave.label,
4345
+ class: "task-wave-card"
4346
+ }, [
4347
+ _createElementVNode("div", { class: "task-wave-title" }, _toDisplayString(wave.label), 1 /* TEXT */),
4348
+ _createElementVNode("div", { class: "task-wave-nodes" }, _toDisplayString(wave.nodeIds.join(', ')), 1 /* TEXT */)
4349
+ ]))
4350
+ }), 128 /* KEYED_FRAGMENT */))
4351
+ ]),
4352
+ _createElementVNode("div", { class: "task-node-list" }, [
4353
+ (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.taskOrchestration.plan.nodes, (node) => {
4354
+ return (_openBlock(), _createElementBlock("div", {
4355
+ key: node.id,
4356
+ class: "task-node-card"
4357
+ }, [
4358
+ _createElementVNode("div", { class: "task-node-head" }, [
4359
+ _createElementVNode("div", null, [
4360
+ _createElementVNode("div", { class: "task-node-title" }, _toDisplayString(node.title || node.id), 1 /* TEXT */),
4361
+ _createElementVNode("div", { class: "task-node-meta" }, [
4362
+ _createTextVNode(_toDisplayString(node.id) + " · " + _toDisplayString(node.kind), 1 /* TEXT */),
4363
+ (node.workflowId)
4364
+ ? (_openBlock(), _createElementBlock("span", { key: 0 }, " · " + _toDisplayString(node.workflowId), 1 /* TEXT */))
4365
+ : _createCommentVNode("v-if", true)
4366
+ ])
4367
+ ]),
4368
+ _createElementVNode("span", {
4369
+ class: _normalizeClass(['pill', node.write ? 'configured' : 'empty'])
4370
+ }, _toDisplayString(node.write ? _ctx.t('orchestration.plan.node.write') : _ctx.t('orchestration.plan.node.readOnly')), 3 /* TEXT, CLASS */)
4371
+ ]),
4372
+ _createElementVNode("div", { class: "task-node-deps" }, _toDisplayString(_ctx.t('orchestration.labels.dependencies')) + _toDisplayString(_ctx.formatTaskNodeDependencies(node)), 1 /* TEXT */)
4373
+ ]))
4374
+ }), 128 /* KEYED_FRAGMENT */))
4375
+ ])
4376
+ ]))
4268
4377
  : _createCommentVNode("v-if", true)
4269
4378
  ]))
4270
4379
  : _createCommentVNode("v-if", true)
4271
- ])
4380
+ ], 8 /* PROPS */, ["aria-label"]),
4381
+ _createElementVNode("div", { class: "task-thread-composer" }, [
4382
+ _createElementVNode("label", { class: "task-quick-target-field task-chat-composer" }, [
4383
+ _createElementVNode("span", { class: "selector-label" }, _toDisplayString(_ctx.t('orchestration.chat.input.label')), 1 /* TEXT */),
4384
+ _createElementVNode("span", {
4385
+ class: "task-composer-prompt-glyph",
4386
+ "aria-hidden": "true"
4387
+ }, "›"),
4388
+ _withDirectives(_createElementVNode("textarea", {
4389
+ "onUpdate:modelValue": $event => ((_ctx.taskOrchestration.chatDraft) = $event),
4390
+ class: "task-textarea task-textarea-goal task-quick-target",
4391
+ rows: "3",
4392
+ placeholder: _ctx.t('orchestration.chat.input.placeholder'),
4393
+ onKeydown: _withKeys(_withModifiers($event => (_ctx.submitTaskOrchestrationChatMessage()), ["exact","prevent"]), ["enter"])
4394
+ }, null, 40 /* PROPS, NEED_HYDRATION */, ["onUpdate:modelValue", "placeholder", "onKeydown"]), [
4395
+ [_vModelText, _ctx.taskOrchestration.chatDraft]
4396
+ ]),
4397
+ _createElementVNode("span", { class: "task-field-hint" }, _toDisplayString(_ctx.t('orchestration.chat.input.hint')), 1 /* TEXT */)
4398
+ ]),
4399
+ _createElementVNode("div", { class: "task-chat-send-row" }, [
4400
+ _createElementVNode("div", { class: "task-chat-action-buttons task-chat-primary-action" }, [
4401
+ _createElementVNode("button", {
4402
+ type: "button",
4403
+ class: "btn-tool btn-primary task-chat-primary-button",
4404
+ onClick: $event => (_ctx.planAndRunTaskOrchestrationFromChat()),
4405
+ disabled: _ctx.taskOrchestration.running || _ctx.taskOrchestration.planning || (!_ctx.taskOrchestration.target.trim() && !_ctx.taskOrchestration.chatDraft.trim())
4406
+ }, _toDisplayString(_ctx.taskOrchestration.running ? _ctx.t('orchestration.actions.processing') : (_ctx.taskOrchestration.planning ? _ctx.t('orchestration.actions.planning') : _ctx.t('orchestration.chat.input.work'))), 9 /* TEXT, PROPS */, ["onClick", "disabled"])
4407
+ ]),
4408
+ _createElementVNode("span", { class: "task-field-hint" }, _toDisplayString(_ctx.taskOrchestrationDraftMetrics.hasTarget ? _ctx.t('orchestration.chat.input.sequenceHint', { count: _ctx.taskOrchestrationDraftMetrics.followUpCount + 2 }) : _ctx.t('orchestration.chat.input.workHint')), 1 /* TEXT */)
4409
+ ]),
4410
+ _createElementVNode("div", { class: "task-chat-execute-caption" }, _toDisplayString(_ctx.t('orchestration.chat.input.workCaption')), 1 /* TEXT */),
4411
+ _createElementVNode("div", {
4412
+ class: "task-chat-context-row task-chat-context-row-primary",
4413
+ role: "group",
4414
+ "aria-label": _ctx.t('orchestration.chat.context.aria')
4415
+ }, [
4416
+ _createElementVNode("span", { class: "task-chat-context-chip task-chat-context-chip-strong" }, [
4417
+ _createElementVNode("small", null, _toDisplayString(_ctx.t('orchestration.plan.summary.cwd')), 1 /* TEXT */),
4418
+ _createElementVNode("strong", null, _toDisplayString((_ctx.taskOrchestrationWorkspacePath || _ctx.taskOrchestration.workspacePath.trim()) ? _ctx.t('orchestration.privacy.workspace.selected') : _ctx.t('orchestration.chat.context.workspace.auto')), 1 /* TEXT */)
4419
+ ]),
4420
+ _createElementVNode("span", { class: "task-chat-context-chip task-chat-context-chip-strong" }, [
4421
+ _createElementVNode("small", null, _toDisplayString(_ctx.t('orchestration.plan.summary.threadId')), 1 /* TEXT */),
4422
+ _createElementVNode("strong", null, _toDisplayString((_ctx.taskOrchestration.threadId.trim() || (_ctx.taskOrchestrationSelectedRun && _ctx.taskOrchestrationSelectedRun.threadId)) ? _ctx.t('orchestration.privacy.thread.selected') : _ctx.t('orchestration.chat.context.thread.auto')), 1 /* TEXT */)
4423
+ ]),
4424
+ _createElementVNode("span", { class: "task-chat-context-chip" }, _toDisplayString(_ctx.taskOrchestrationDraftMetrics.hasTarget ? _ctx.t('orchestration.chat.context.sequence.value', { count: _ctx.taskOrchestrationDraftMetrics.requestCount }) : _ctx.t('orchestration.chat.context.sequence.empty')), 1 /* TEXT */),
4425
+ _createElementVNode("span", { class: "task-chat-context-chip" }, _toDisplayString(_ctx.taskOrchestration.runMode === 'dry-run' ? _ctx.t('orchestration.runMode.dryRun') : (_ctx.taskOrchestration.runMode === 'read' ? _ctx.t('orchestration.runMode.readOnly') : _ctx.t('orchestration.runMode.write') )), 1 /* TEXT */),
4426
+ _createElementVNode("button", {
4427
+ type: "button",
4428
+ class: "task-chat-context-chip task-chat-context-action",
4429
+ onClick: $event => (_ctx.taskOrchestration.settingsOpen = true)
4430
+ }, _toDisplayString(_ctx.t('orchestration.advanced.open')), 9 /* TEXT, PROPS */, ["onClick"])
4431
+ ], 8 /* PROPS */, ["aria-label"]),
4432
+ _createElementVNode("div", { class: "task-action-caption" }, _toDisplayString(_ctx.t('orchestration.quick.caption')), 1 /* TEXT */)
4433
+ ])
4272
4434
  ])
4273
4435
  ]),
4274
- _createElementVNode("div", { class: "task-flow-section task-flow-section-actions task-flow-section-compact" }, [
4275
- _createElementVNode("div", { class: "task-flow-head" }, [
4276
- _createElementVNode("div", { class: "task-flow-step" }, "3"),
4277
- _createElementVNode("div", null, [
4278
- _createElementVNode("div", { class: "task-flow-title" }, _toDisplayString(_ctx.t('orchestration.step3.title')), 1 /* TEXT */),
4279
- _createElementVNode("div", { class: "task-flow-copy" }, _toDisplayString(_ctx.t('orchestration.step3.subtitle')), 1 /* TEXT */)
4280
- ])
4281
- ]),
4282
- _createElementVNode("div", { class: "task-action-row task-action-row-prominent" }, [
4283
- _createElementVNode("button", {
4284
- type: "button",
4285
- class: "btn-tool task-action-preview",
4286
- onClick: $event => (_ctx.previewTaskPlan()),
4287
- disabled: _ctx.taskOrchestration.planning || _ctx.taskOrchestration.running || !_ctx.taskOrchestration.target.trim()
4288
- }, _toDisplayString(_ctx.taskOrchestration.planning ? _ctx.t('orchestration.actions.planning') : _ctx.t('orchestration.actions.previewOnly')), 9 /* TEXT, PROPS */, ["onClick", "disabled"]),
4289
- _createElementVNode("div", { class: "task-action-row-right task-action-row-right-prominent" }, [
4290
- _createElementVNode("button", {
4291
- type: "button",
4292
- class: "btn-tool btn-primary",
4293
- onClick: $event => (_ctx.planAndRunTaskOrchestration()),
4294
- disabled: _ctx.taskOrchestration.running || _ctx.taskOrchestration.planning || !_ctx.taskOrchestration.target.trim()
4295
- }, _toDisplayString((_ctx.taskOrchestration.running || _ctx.taskOrchestration.planning) ? _ctx.t('orchestration.actions.preparing') : (_ctx.taskOrchestration.runMode === 'dry-run' ? _ctx.t('orchestration.actions.generatePlan') : _ctx.t('orchestration.actions.planAndRun'))), 9 /* TEXT, PROPS */, ["onClick", "disabled"]),
4296
- _createElementVNode("button", {
4297
- type: "button",
4298
- class: "btn-tool",
4299
- onClick: $event => (_ctx.queueTaskOrchestrationAndStart()),
4300
- disabled: _ctx.taskOrchestration.queueAdding || _ctx.taskOrchestration.queueStarting || _ctx.taskOrchestration.planning || !_ctx.taskOrchestration.target.trim()
4301
- }, _toDisplayString((_ctx.taskOrchestration.queueAdding || _ctx.taskOrchestration.queueStarting) ? _ctx.t('orchestration.actions.processing') : _ctx.t('orchestration.actions.queueAndStart')), 9 /* TEXT, PROPS */, ["onClick", "disabled"])
4302
- ])
4303
- ]),
4304
- _createElementVNode("div", { class: "task-action-caption" }, _toDisplayString(_ctx.t('orchestration.actions.caption')), 1 /* TEXT */)
4305
- ])
4306
- ])
4307
- ]),
4308
- (!(_ctx.taskOrchestration.plan || _ctx.taskOrchestration.planIssues.length || _ctx.taskOrchestration.planWarnings.length || _ctx.taskOrchestration.lastError || _ctx.taskOrchestration.queue.length || _ctx.taskOrchestration.runs.length || _ctx.taskOrchestration.selectedRunId || _ctx.taskOrchestration.selectedRunError))
4309
- ? (_openBlock(), _createElementBlock("section", {
4310
- key: 0,
4311
- class: "selector-section task-stage-card"
4312
- }, [
4313
- _createElementVNode("div", { class: "task-stage-empty" }, [
4314
- _createElementVNode("div", null, [
4315
- _createElementVNode("div", { class: "selector-title" }, _toDisplayString(_ctx.t('orchestration.stage.title')), 1 /* TEXT */),
4316
- _createElementVNode("div", { class: "skills-panel-note" }, _toDisplayString(_ctx.t('orchestration.stage.subtitle')), 1 /* TEXT */)
4436
+ _createElementVNode("aside", { class: "task-quick-side-card" }, [
4437
+ _createElementVNode("section", { class: "selector-section task-workbench-card task-side-workbench-card" }, [
4438
+ _createElementVNode("div", { class: "task-thread-card-label" }, _toDisplayString(_ctx.t('orchestration.workbench.title')), 1 /* TEXT */),
4439
+ _createElementVNode("div", { class: "task-thread-run-summary" }, [
4440
+ (_ctx.taskOrchestrationSelectedRun && _ctx.taskOrchestrationSelectedRun.run)
4441
+ ? (_openBlock(), _createElementBlock("span", {
4442
+ key: 0,
4443
+ class: _normalizeClass(['pill', _ctx.taskRunStatusTone(_ctx.taskOrchestrationSelectedRun.run.status)])
4444
+ }, _toDisplayString(_ctx.taskOrchestrationSelectedRun.run.status), 3 /* TEXT, CLASS */))
4445
+ : (_ctx.taskOrchestrationWorkspaceRuns.length)
4446
+ ? (_openBlock(), _createElementBlock("span", {
4447
+ key: 1,
4448
+ class: _normalizeClass(['pill', _ctx.taskRunStatusTone(_ctx.taskOrchestrationWorkspaceRuns[0].status)])
4449
+ }, _toDisplayString(_ctx.taskOrchestrationWorkspaceRuns[0].status), 3 /* TEXT, CLASS */))
4450
+ : (_ctx.taskOrchestrationWorkspaceQueue.length)
4451
+ ? (_openBlock(), _createElementBlock("span", {
4452
+ key: 2,
4453
+ class: "pill neutral"
4454
+ }, _toDisplayString(_ctx.t('orchestration.workbench.queueCount', { count: _ctx.taskOrchestrationWorkspaceQueue.length })), 1 /* TEXT */))
4455
+ : (_openBlock(), _createElementBlock("span", {
4456
+ key: 3,
4457
+ class: "pill empty"
4458
+ }, _toDisplayString(_ctx.t('orchestration.workbench.ready')), 1 /* TEXT */)),
4459
+ (_ctx.taskOrchestrationSelectedRun && _ctx.taskOrchestrationSelectedRun.run)
4460
+ ? (_openBlock(), _createElementBlock("span", {
4461
+ key: 4,
4462
+ class: "task-thread-run-summary-copy"
4463
+ }, _toDisplayString(_ctx.taskOrchestrationSelectedRun.run.summary || _ctx.taskOrchestrationSelectedRun.run.runId || _ctx.taskOrchestration.selectedRunId), 1 /* TEXT */))
4464
+ : (_ctx.taskOrchestrationWorkspaceRuns.length)
4465
+ ? (_openBlock(), _createElementBlock("span", {
4466
+ key: 5,
4467
+ class: "task-thread-run-summary-copy"
4468
+ }, _toDisplayString(_ctx.taskOrchestrationWorkspaceRuns[0].summary || _ctx.taskOrchestrationWorkspaceRuns[0].runId), 1 /* TEXT */))
4469
+ : (_ctx.taskOrchestrationWorkspaceQueue.length)
4470
+ ? (_openBlock(), _createElementBlock("span", {
4471
+ key: 6,
4472
+ class: "task-thread-run-summary-copy"
4473
+ }, _toDisplayString(_ctx.taskOrchestrationWorkspaceQueue[0].title || _ctx.taskOrchestrationWorkspaceQueue[0].target || _ctx.taskOrchestrationWorkspaceQueue[0].taskId), 1 /* TEXT */))
4474
+ : (_openBlock(), _createElementBlock("span", {
4475
+ key: 7,
4476
+ class: "task-thread-run-summary-copy"
4477
+ }, _toDisplayString(_ctx.t('orchestration.workbench.subtitle')), 1 /* TEXT */))
4317
4478
  ]),
4318
- _createElementVNode("div", { class: "task-stage-strip" }, [
4319
- _createElementVNode("div", { class: "task-stage-pill" }, _toDisplayString(_ctx.t('orchestration.stage.pill.target')), 1 /* TEXT */),
4320
- _createElementVNode("div", { class: "task-stage-pill" }, _toDisplayString(_ctx.t('orchestration.stage.pill.preview')), 1 /* TEXT */),
4321
- _createElementVNode("div", { class: "task-stage-pill" }, _toDisplayString(_ctx.t('orchestration.stage.pill.run')), 1 /* TEXT */)
4322
- ])
4323
- ])
4324
- ]))
4325
- : (_openBlock(), _createElementBlock("div", {
4326
- key: 1,
4327
- class: "task-layout-grid task-layout-grid-secondary"
4328
- }, [
4329
- (_ctx.taskOrchestration.plan || _ctx.taskOrchestration.planIssues.length || _ctx.taskOrchestration.planWarnings.length || _ctx.taskOrchestration.lastError)
4330
- ? (_openBlock(), _createElementBlock("section", {
4331
- key: 0,
4332
- class: "selector-section task-plan-card"
4333
- }, [
4334
- (_ctx.taskOrchestration.lastError)
4335
- ? (_openBlock(), _createElementBlock("div", {
4479
+ _createElementVNode("details", {
4480
+ class: "task-thread-run-details",
4481
+ open: ""
4482
+ }, [
4483
+ _createElementVNode("summary", null, _toDisplayString(_ctx.t('orchestration.agent.trace.title')), 1 /* TEXT */),
4484
+ _createElementVNode("div", { class: "settings-tab-actions task-header-actions task-thread-detail-actions" }, [
4485
+ _createElementVNode("button", {
4486
+ type: "button",
4487
+ class: "btn-tool btn-tool-compact",
4488
+ onClick: $event => (_ctx.loadTaskOrchestrationOverview({ forceRefresh: true, includeDetail: true })),
4489
+ disabled: _ctx.taskOrchestration.loading
4490
+ }, _toDisplayString(_ctx.taskOrchestration.loading ? _ctx.t('common.refreshing') : _ctx.t('common.refresh')), 9 /* TEXT, PROPS */, ["onClick", "disabled"]),
4491
+ (_ctx.taskOrchestrationWorkspaceQueue.length)
4492
+ ? (_openBlock(), _createElementBlock("button", {
4336
4493
  key: 0,
4337
- class: "task-issue-item"
4338
- }, _toDisplayString(_ctx.taskOrchestration.lastError), 1 /* TEXT */))
4339
- : _createCommentVNode("v-if", true),
4340
- _createElementVNode("div", { class: "selector-header task-section-header" }, [
4341
- _createElementVNode("div", null, [
4342
- _createElementVNode("span", { class: "selector-title" }, _toDisplayString(_ctx.t('orchestration.plan.title')), 1 /* TEXT */),
4343
- _createElementVNode("div", { class: "skills-panel-note" }, _toDisplayString(_ctx.t('orchestration.plan.subtitle')), 1 /* TEXT */)
4344
- ])
4345
- ]),
4346
- (_ctx.taskOrchestration.planIssues.length)
4347
- ? (_openBlock(), _createElementBlock("div", {
4348
- key: 1,
4349
- class: "task-issues-list"
4350
- }, [
4351
- (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.taskOrchestration.planIssues, (issue) => {
4352
- return (_openBlock(), _createElementBlock("div", {
4353
- key: issue.code + issue.message,
4354
- class: "task-issue-item"
4355
- }, _toDisplayString(issue.message), 1 /* TEXT */))
4356
- }), 128 /* KEYED_FRAGMENT */))
4357
- ]))
4358
- : _createCommentVNode("v-if", true),
4359
- (_ctx.taskOrchestration.planWarnings.length)
4360
- ? (_openBlock(), _createElementBlock("div", {
4361
- key: 2,
4362
- class: "task-warning-list"
4363
- }, [
4364
- (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.taskOrchestration.planWarnings, (warning) => {
4365
- return (_openBlock(), _createElementBlock("div", {
4366
- key: warning,
4367
- class: "task-warning-item"
4368
- }, _toDisplayString(warning), 1 /* TEXT */))
4369
- }), 128 /* KEYED_FRAGMENT */))
4370
- ]))
4371
- : _createCommentVNode("v-if", true),
4372
- (_ctx.taskOrchestration.plan)
4373
- ? (_openBlock(), _createElementBlock(_Fragment, { key: 3 }, [
4374
- _createElementVNode("div", { class: "task-plan-summary-strip" }, [
4375
- _createElementVNode("div", { class: "task-plan-summary-item" }, [
4376
- _createElementVNode("span", { class: "task-plan-summary-label" }, _toDisplayString(_ctx.t('orchestration.plan.summary.nodes')), 1 /* TEXT */),
4377
- _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestration.plan.nodes.length), 1 /* TEXT */)
4378
- ]),
4379
- _createElementVNode("div", { class: "task-plan-summary-item" }, [
4380
- _createElementVNode("span", { class: "task-plan-summary-label" }, _toDisplayString(_ctx.t('orchestration.plan.summary.waves')), 1 /* TEXT */),
4381
- _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestration.plan.waves.length), 1 /* TEXT */)
4382
- ]),
4383
- _createElementVNode("div", { class: "task-plan-summary-item" }, [
4384
- _createElementVNode("span", { class: "task-plan-summary-label" }, _toDisplayString(_ctx.t('orchestration.plan.summary.engine')), 1 /* TEXT */),
4385
- _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestration.plan.engine), 1 /* TEXT */)
4386
- ])
4387
- ]),
4388
- _createElementVNode("div", { class: "task-wave-list" }, [
4389
- (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.taskOrchestration.plan.waves, (wave) => {
4390
- return (_openBlock(), _createElementBlock("div", {
4391
- key: wave.label,
4392
- class: "task-wave-card"
4393
- }, [
4394
- _createElementVNode("div", { class: "task-wave-title" }, _toDisplayString(wave.label), 1 /* TEXT */),
4395
- _createElementVNode("div", { class: "task-wave-nodes" }, _toDisplayString(wave.nodeIds.join(', ')), 1 /* TEXT */)
4396
- ]))
4397
- }), 128 /* KEYED_FRAGMENT */))
4398
- ]),
4399
- _createElementVNode("div", { class: "task-node-list" }, [
4400
- (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.taskOrchestration.plan.nodes, (node) => {
4401
- return (_openBlock(), _createElementBlock("div", {
4402
- key: node.id,
4403
- class: "task-node-card"
4404
- }, [
4405
- _createElementVNode("div", { class: "task-node-head" }, [
4406
- _createElementVNode("div", null, [
4407
- _createElementVNode("div", { class: "task-node-title" }, _toDisplayString(node.title || node.id), 1 /* TEXT */),
4408
- _createElementVNode("div", { class: "task-node-meta" }, [
4409
- _createTextVNode(_toDisplayString(node.id) + " · " + _toDisplayString(node.kind), 1 /* TEXT */),
4410
- (node.workflowId)
4411
- ? (_openBlock(), _createElementBlock("span", { key: 0 }, " · " + _toDisplayString(node.workflowId), 1 /* TEXT */))
4412
- : _createCommentVNode("v-if", true)
4413
- ])
4414
- ]),
4415
- _createElementVNode("span", {
4416
- class: _normalizeClass(['pill', node.write ? 'configured' : 'empty'])
4417
- }, _toDisplayString(node.write ? _ctx.t('orchestration.plan.node.write') : _ctx.t('orchestration.plan.node.readOnly')), 3 /* TEXT, CLASS */)
4418
- ]),
4419
- _createElementVNode("div", { class: "task-node-deps" }, _toDisplayString(_ctx.t('orchestration.labels.dependencies')) + _toDisplayString(_ctx.formatTaskNodeDependencies(node)), 1 /* TEXT */)
4420
- ]))
4421
- }), 128 /* KEYED_FRAGMENT */))
4422
- ])
4423
- ], 64 /* STABLE_FRAGMENT */))
4424
- : _createCommentVNode("v-if", true)
4425
- ]))
4426
- : _createCommentVNode("v-if", true),
4427
- (_ctx.taskOrchestration.queue.length || _ctx.taskOrchestration.runs.length || _ctx.taskOrchestration.selectedRunId || _ctx.taskOrchestration.selectedRunError)
4428
- ? (_openBlock(), _createElementBlock("section", {
4429
- key: 1,
4430
- class: "selector-section task-workbench-card"
4431
- }, [
4432
- _createElementVNode("div", { class: "selector-header task-section-header" }, [
4433
- _createElementVNode("div", null, [
4434
- _createElementVNode("span", { class: "selector-title" }, _toDisplayString(_ctx.t('orchestration.workbench.title')), 1 /* TEXT */),
4435
- _createElementVNode("div", { class: "skills-panel-note" }, _toDisplayString(_ctx.t('orchestration.workbench.subtitle')), 1 /* TEXT */)
4436
- ]),
4437
- _createElementVNode("div", { class: "settings-tab-actions task-header-actions" }, [
4438
- _createElementVNode("button", {
4439
4494
  type: "button",
4440
4495
  class: "btn-tool btn-tool-compact",
4441
- onClick: $event => (_ctx.loadTaskOrchestrationOverview({ forceRefresh: true, includeDetail: true })),
4442
- disabled: _ctx.taskOrchestration.loading
4443
- }, _toDisplayString(_ctx.taskOrchestration.loading ? _ctx.t('common.refreshing') : _ctx.t('common.refresh')), 9 /* TEXT, PROPS */, ["onClick", "disabled"]),
4444
- (_ctx.taskOrchestration.queue.length)
4496
+ onClick: $event => (_ctx.startTaskQueueRunner()),
4497
+ disabled: _ctx.taskOrchestration.queueStarting
4498
+ }, _toDisplayString(_ctx.taskOrchestration.queueStarting ? _ctx.t('orchestration.queue.starting') : _ctx.t('orchestration.queue.start')), 9 /* TEXT, PROPS */, ["onClick", "disabled"]))
4499
+ : _createCommentVNode("v-if", true)
4500
+ ]),
4501
+ _createElementVNode("div", { class: "task-agent-trace-grid" }, [
4502
+ _createElementVNode("div", { class: "task-agent-trace-card" }, [
4503
+ _createElementVNode("span", null, _toDisplayString(_ctx.t('orchestration.agent.trace.plan')), 1 /* TEXT */),
4504
+ _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestration.plan ? _ctx.taskOrchestration.plan.nodes.length : 0), 1 /* TEXT */)
4505
+ ]),
4506
+ _createElementVNode("div", { class: "task-agent-trace-card" }, [
4507
+ _createElementVNode("span", null, _toDisplayString(_ctx.t('orchestration.agent.trace.queue')), 1 /* TEXT */),
4508
+ _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestrationWorkspaceQueue.length), 1 /* TEXT */)
4509
+ ]),
4510
+ _createElementVNode("div", { class: "task-agent-trace-card" }, [
4511
+ _createElementVNode("span", null, _toDisplayString(_ctx.t('orchestration.agent.trace.runs')), 1 /* TEXT */),
4512
+ _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestrationWorkspaceRuns.length), 1 /* TEXT */)
4513
+ ]),
4514
+ _createElementVNode("div", { class: "task-agent-trace-card" }, [
4515
+ _createElementVNode("span", null, _toDisplayString(_ctx.t('orchestration.agent.trace.nodes')), 1 /* TEXT */),
4516
+ _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestrationSelectedRunNodes.length), 1 /* TEXT */)
4517
+ ])
4518
+ ]),
4519
+ ((_ctx.taskOrchestrationWorkspaceQueue.length ? 1 : 0) + (_ctx.taskOrchestrationWorkspaceRuns.length ? 1 : 0) + ((_ctx.taskOrchestration.selectedRunId || _ctx.taskOrchestration.selectedRunError) ? 1 : 0) > 1)
4520
+ ? (_openBlock(), _createElementBlock("div", {
4521
+ key: 0,
4522
+ class: "task-workbench-tabs",
4523
+ role: "group",
4524
+ "aria-label": _ctx.t('orchestration.workbench.tabs.aria')
4525
+ }, [
4526
+ (_ctx.taskOrchestrationWorkspaceQueue.length)
4445
4527
  ? (_openBlock(), _createElementBlock("button", {
4446
4528
  key: 0,
4447
4529
  type: "button",
4448
- class: "btn-tool btn-tool-compact",
4449
- onClick: $event => (_ctx.startTaskQueueRunner()),
4450
- disabled: _ctx.taskOrchestration.queueStarting
4451
- }, _toDisplayString(_ctx.taskOrchestration.queueStarting ? _ctx.t('orchestration.queue.starting') : _ctx.t('orchestration.queue.start')), 9 /* TEXT, PROPS */, ["onClick", "disabled"]))
4530
+ class: _normalizeClass(["task-workbench-tab", { active: _ctx.taskOrchestration.workspaceTab === 'queue' }]),
4531
+ onClick: $event => (_ctx.taskOrchestration.workspaceTab = 'queue')
4532
+ }, _toDisplayString(_ctx.t('orchestration.workbench.tabs.queue', { count: _ctx.taskOrchestrationWorkspaceQueue.length })), 11 /* TEXT, CLASS, PROPS */, ["onClick"]))
4533
+ : _createCommentVNode("v-if", true),
4534
+ (_ctx.taskOrchestrationWorkspaceRuns.length)
4535
+ ? (_openBlock(), _createElementBlock("button", {
4536
+ key: 1,
4537
+ type: "button",
4538
+ class: _normalizeClass(["task-workbench-tab", { active: _ctx.taskOrchestration.workspaceTab === 'runs' }]),
4539
+ onClick: $event => (_ctx.taskOrchestration.workspaceTab = 'runs')
4540
+ }, _toDisplayString(_ctx.t('orchestration.workbench.tabs.runs', { count: _ctx.taskOrchestrationWorkspaceRuns.length })), 11 /* TEXT, CLASS, PROPS */, ["onClick"]))
4541
+ : _createCommentVNode("v-if", true),
4542
+ (_ctx.taskOrchestration.selectedRunId || _ctx.taskOrchestration.selectedRunError)
4543
+ ? (_openBlock(), _createElementBlock("button", {
4544
+ key: 2,
4545
+ type: "button",
4546
+ class: _normalizeClass(["task-workbench-tab", { active: _ctx.taskOrchestration.workspaceTab === 'detail' }]),
4547
+ onClick: $event => (_ctx.taskOrchestration.workspaceTab = 'detail')
4548
+ }, _toDisplayString(_ctx.t('orchestration.workbench.tabs.detail')), 11 /* TEXT, CLASS, PROPS */, ["onClick"]))
4452
4549
  : _createCommentVNode("v-if", true)
4453
- ])
4454
- ]),
4455
- ((_ctx.taskOrchestration.queue.length ? 1 : 0) + (_ctx.taskOrchestration.runs.length ? 1 : 0) + ((_ctx.taskOrchestration.selectedRunId || _ctx.taskOrchestration.selectedRunError) ? 1 : 0) > 1)
4456
- ? (_openBlock(), _createElementBlock("div", {
4457
- key: 0,
4458
- class: "task-workbench-tabs",
4459
- role: "group",
4460
- "aria-label": _ctx.t('orchestration.workbench.tabs.aria')
4461
- }, [
4462
- (_ctx.taskOrchestration.queue.length)
4463
- ? (_openBlock(), _createElementBlock("button", {
4464
- key: 0,
4465
- type: "button",
4466
- class: _normalizeClass(["task-workbench-tab", { active: _ctx.taskOrchestration.workspaceTab === 'queue' }]),
4467
- onClick: $event => (_ctx.taskOrchestration.workspaceTab = 'queue')
4468
- }, _toDisplayString(_ctx.t('orchestration.workbench.tabs.queue', { count: _ctx.taskOrchestration.queue.length })), 11 /* TEXT, CLASS, PROPS */, ["onClick"]))
4469
- : _createCommentVNode("v-if", true),
4470
- (_ctx.taskOrchestration.runs.length)
4471
- ? (_openBlock(), _createElementBlock("button", {
4472
- key: 1,
4473
- type: "button",
4474
- class: _normalizeClass(["task-workbench-tab", { active: _ctx.taskOrchestration.workspaceTab === 'runs' }]),
4475
- onClick: $event => (_ctx.taskOrchestration.workspaceTab = 'runs')
4476
- }, _toDisplayString(_ctx.t('orchestration.workbench.tabs.runs', { count: _ctx.taskOrchestration.runs.length })), 11 /* TEXT, CLASS, PROPS */, ["onClick"]))
4477
- : _createCommentVNode("v-if", true),
4478
- (_ctx.taskOrchestration.selectedRunId || _ctx.taskOrchestration.selectedRunError)
4479
- ? (_openBlock(), _createElementBlock("button", {
4480
- key: 2,
4481
- type: "button",
4482
- class: _normalizeClass(["task-workbench-tab", { active: _ctx.taskOrchestration.workspaceTab === 'detail' }]),
4483
- onClick: $event => (_ctx.taskOrchestration.workspaceTab = 'detail')
4484
- }, _toDisplayString(_ctx.t('orchestration.workbench.tabs.detail')), 11 /* TEXT, CLASS, PROPS */, ["onClick"]))
4485
- : _createCommentVNode("v-if", true)
4486
- ], 8 /* PROPS */, ["aria-label"]))
4487
- : _createCommentVNode("v-if", true),
4488
- (_ctx.taskOrchestration.workspaceTab === 'queue' || (!_ctx.taskOrchestration.runs.length && !_ctx.taskOrchestration.selectedRunId && !_ctx.taskOrchestration.selectedRunError))
4550
+ ], 8 /* PROPS */, ["aria-label"]))
4551
+ : _createCommentVNode("v-if", true),
4552
+ ((_ctx.taskOrchestrationWorkspaceQueue.length && _ctx.taskOrchestration.workspaceTab === 'queue') || (!_ctx.taskOrchestrationWorkspaceRuns.length && !_ctx.taskOrchestration.selectedRunId && !_ctx.taskOrchestration.selectedRunError))
4553
+ ? (_openBlock(), _createElementBlock("div", {
4554
+ key: 1,
4555
+ class: "task-workbench-panel"
4556
+ }, [
4557
+ (!_ctx.taskOrchestrationWorkspaceQueue.length)
4558
+ ? (_openBlock(), _createElementBlock("div", {
4559
+ key: 0,
4560
+ class: "task-empty-state"
4561
+ }, [
4562
+ _createElementVNode("div", { class: "task-empty-title" }, _toDisplayString(_ctx.t('orchestration.queue.empty.title')), 1 /* TEXT */),
4563
+ _createElementVNode("div", { class: "task-empty-copy" }, _toDisplayString(_ctx.t('orchestration.queue.empty.subtitle')), 1 /* TEXT */)
4564
+ ]))
4565
+ : (_openBlock(), _createElementBlock("div", {
4566
+ key: 1,
4567
+ class: "task-runtime-list"
4568
+ }, [
4569
+ (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.taskOrchestrationWorkspaceQueue, (item) => {
4570
+ return (_openBlock(), _createElementBlock("div", {
4571
+ key: item.taskId,
4572
+ class: _normalizeClass(['task-runtime-item', { active: item.lastRunId && _ctx.taskOrchestration.selectedRunId === item.lastRunId, clickable: !!item.lastRunId }]),
4573
+ role: item.lastRunId ? 'button' : null,
4574
+ tabindex: item.lastRunId ? 0 : -1,
4575
+ "aria-disabled": item.lastRunId ? null : 'true',
4576
+ onClick: $event => (item.lastRunId ? (_ctx.taskOrchestration.workspaceTab = 'detail', _ctx.selectTaskRun(item.lastRunId)) : null),
4577
+ onKeydown: [
4578
+ _withKeys(_withModifiers($event => (item.lastRunId ? (_ctx.taskOrchestration.workspaceTab = 'detail', _ctx.selectTaskRun(item.lastRunId)) : null), ["self","prevent"]), ["enter"]),
4579
+ _withKeys(_withModifiers($event => (item.lastRunId ? (_ctx.taskOrchestration.workspaceTab = 'detail', _ctx.selectTaskRun(item.lastRunId)) : null), ["self","prevent"]), ["space"])
4580
+ ]
4581
+ }, [
4582
+ _createElementVNode("div", { class: "task-runtime-item-main" }, [
4583
+ _createElementVNode("div", { class: "task-runtime-item-title" }, _toDisplayString(item.title || item.target || item.taskId), 1 /* TEXT */),
4584
+ _createElementVNode("div", { class: "task-runtime-item-meta" }, _toDisplayString(item.taskId) + " · " + _toDisplayString(item.updatedAt || item.createdAt), 1 /* TEXT */),
4585
+ (item.threadId || item.cwd)
4586
+ ? (_openBlock(), _createElementBlock("div", {
4587
+ key: 0,
4588
+ class: "task-runtime-item-meta"
4589
+ }, [
4590
+ (item.threadId)
4591
+ ? (_openBlock(), _createElementBlock("span", { key: 0 }, _toDisplayString(_ctx.t('orchestration.plan.summary.threadId')) + ": " + _toDisplayString(item.threadId), 1 /* TEXT */))
4592
+ : _createCommentVNode("v-if", true),
4593
+ (item.threadId && item.cwd)
4594
+ ? (_openBlock(), _createElementBlock("span", { key: 1 }, " · "))
4595
+ : _createCommentVNode("v-if", true),
4596
+ (item.cwd)
4597
+ ? (_openBlock(), _createElementBlock("span", { key: 2 }, _toDisplayString(_ctx.t('orchestration.plan.summary.cwd')) + ": " + _toDisplayString(item.cwd), 1 /* TEXT */))
4598
+ : _createCommentVNode("v-if", true)
4599
+ ]))
4600
+ : _createCommentVNode("v-if", true),
4601
+ (item.lastSummary)
4602
+ ? (_openBlock(), _createElementBlock("div", {
4603
+ key: 1,
4604
+ class: "task-runtime-item-summary"
4605
+ }, _toDisplayString(item.lastSummary), 1 /* TEXT */))
4606
+ : _createCommentVNode("v-if", true)
4607
+ ]),
4608
+ _createElementVNode("div", { class: "task-runtime-item-actions" }, [
4609
+ _createElementVNode("span", {
4610
+ class: _normalizeClass(['pill', _ctx.taskRunStatusTone(item.status || item.runStatus)])
4611
+ }, _toDisplayString(item.status || item.runStatus), 3 /* TEXT, CLASS */),
4612
+ (_ctx.isTaskRunActive(item.status || item.runStatus))
4613
+ ? (_openBlock(), _createElementBlock("button", {
4614
+ key: 0,
4615
+ type: "button",
4616
+ class: "btn-mini",
4617
+ onClick: _withModifiers($event => (_ctx.cancelTaskRunFromUi(item.taskId)), ["stop"])
4618
+ }, _toDisplayString(_ctx.t('common.cancel')), 9 /* TEXT, PROPS */, ["onClick"]))
4619
+ : _createCommentVNode("v-if", true)
4620
+ ])
4621
+ ], 42 /* CLASS, PROPS, NEED_HYDRATION */, ["role", "tabindex", "aria-disabled", "onClick", "onKeydown"]))
4622
+ }), 128 /* KEYED_FRAGMENT */))
4623
+ ]))
4624
+ ]))
4625
+ : (_ctx.taskOrchestration.workspaceTab === 'runs' || (!_ctx.taskOrchestrationWorkspaceQueue.length && _ctx.taskOrchestrationWorkspaceRuns.length && !_ctx.taskOrchestration.selectedRunId && !_ctx.taskOrchestration.selectedRunError))
4489
4626
  ? (_openBlock(), _createElementBlock("div", {
4490
- key: 1,
4627
+ key: 2,
4491
4628
  class: "task-workbench-panel"
4492
4629
  }, [
4493
- (!_ctx.taskOrchestration.queue.length)
4630
+ (!_ctx.taskOrchestrationWorkspaceRuns.length)
4494
4631
  ? (_openBlock(), _createElementBlock("div", {
4495
4632
  key: 0,
4496
4633
  class: "task-empty-state"
4497
4634
  }, [
4498
- _createElementVNode("div", { class: "task-empty-title" }, _toDisplayString(_ctx.t('orchestration.queue.empty.title')), 1 /* TEXT */),
4499
- _createElementVNode("div", { class: "task-empty-copy" }, _toDisplayString(_ctx.t('orchestration.queue.empty.subtitle')), 1 /* TEXT */)
4635
+ _createElementVNode("div", { class: "task-empty-title" }, _toDisplayString(_ctx.t('orchestration.runs.empty.title')), 1 /* TEXT */),
4636
+ _createElementVNode("div", { class: "task-empty-copy" }, _toDisplayString(_ctx.t('orchestration.runs.empty.subtitle')), 1 /* TEXT */)
4500
4637
  ]))
4501
4638
  : (_openBlock(), _createElementBlock("div", {
4502
4639
  key: 1,
4503
4640
  class: "task-runtime-list"
4504
4641
  }, [
4505
- (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.taskOrchestration.queue, (item) => {
4506
- return (_openBlock(), _createElementBlock("div", {
4507
- key: item.taskId,
4508
- class: _normalizeClass(['task-runtime-item', { active: item.lastRunId && _ctx.taskOrchestration.selectedRunId === item.lastRunId, clickable: !!item.lastRunId }]),
4509
- role: item.lastRunId ? 'button' : null,
4510
- tabindex: item.lastRunId ? 0 : -1,
4511
- "aria-disabled": item.lastRunId ? null : 'true',
4512
- onClick: $event => (item.lastRunId ? (_ctx.taskOrchestration.workspaceTab = 'detail', _ctx.selectTaskRun(item.lastRunId)) : null),
4513
- onKeydown: [
4514
- _withKeys(_withModifiers($event => (item.lastRunId ? (_ctx.taskOrchestration.workspaceTab = 'detail', _ctx.selectTaskRun(item.lastRunId)) : null), ["self","prevent"]), ["enter"]),
4515
- _withKeys(_withModifiers($event => (item.lastRunId ? (_ctx.taskOrchestration.workspaceTab = 'detail', _ctx.selectTaskRun(item.lastRunId)) : null), ["self","prevent"]), ["space"])
4516
- ]
4642
+ (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.taskOrchestrationWorkspaceRuns, (item) => {
4643
+ return (_openBlock(), _createElementBlock("button", {
4644
+ key: item.runId,
4645
+ type: "button",
4646
+ class: _normalizeClass(['task-runtime-item', { active: _ctx.taskOrchestration.selectedRunId === item.runId }]),
4647
+ onClick: $event => {_ctx.taskOrchestration.workspaceTab = 'detail'; _ctx.selectTaskRun(item.runId)}
4517
4648
  }, [
4518
4649
  _createElementVNode("div", { class: "task-runtime-item-main" }, [
4519
- _createElementVNode("div", { class: "task-runtime-item-title" }, _toDisplayString(item.title || item.target || item.taskId), 1 /* TEXT */),
4520
- _createElementVNode("div", { class: "task-runtime-item-meta" }, _toDisplayString(item.taskId) + " · " + _toDisplayString(item.updatedAt || item.createdAt), 1 /* TEXT */),
4521
- (item.lastSummary)
4650
+ _createElementVNode("div", { class: "task-runtime-item-title" }, _toDisplayString(item.title || item.taskId || item.runId), 1 /* TEXT */),
4651
+ _createElementVNode("div", { class: "task-runtime-item-meta" }, _toDisplayString(item.runId) + " · " + _toDisplayString(item.durationMs || 0) + "ms", 1 /* TEXT */),
4652
+ (item.threadId || item.cwd)
4522
4653
  ? (_openBlock(), _createElementBlock("div", {
4523
4654
  key: 0,
4655
+ class: "task-runtime-item-meta"
4656
+ }, [
4657
+ (item.threadId)
4658
+ ? (_openBlock(), _createElementBlock("span", { key: 0 }, _toDisplayString(_ctx.t('orchestration.plan.summary.threadId')) + ": " + _toDisplayString(item.threadId), 1 /* TEXT */))
4659
+ : _createCommentVNode("v-if", true),
4660
+ (item.threadId && item.cwd)
4661
+ ? (_openBlock(), _createElementBlock("span", { key: 1 }, " · "))
4662
+ : _createCommentVNode("v-if", true),
4663
+ (item.cwd)
4664
+ ? (_openBlock(), _createElementBlock("span", { key: 2 }, _toDisplayString(_ctx.t('orchestration.plan.summary.cwd')) + ": " + _toDisplayString(item.cwd), 1 /* TEXT */))
4665
+ : _createCommentVNode("v-if", true)
4666
+ ]))
4667
+ : _createCommentVNode("v-if", true),
4668
+ (item.summary)
4669
+ ? (_openBlock(), _createElementBlock("div", {
4670
+ key: 1,
4524
4671
  class: "task-runtime-item-summary"
4525
- }, _toDisplayString(item.lastSummary), 1 /* TEXT */))
4672
+ }, _toDisplayString(item.summary), 1 /* TEXT */))
4526
4673
  : _createCommentVNode("v-if", true)
4527
4674
  ]),
4528
4675
  _createElementVNode("div", { class: "task-runtime-item-actions" }, [
4529
4676
  _createElementVNode("span", {
4530
4677
  class: _normalizeClass(['pill', _ctx.taskRunStatusTone(item.status)])
4531
- }, _toDisplayString(item.status), 3 /* TEXT, CLASS */),
4532
- _createElementVNode("button", {
4533
- type: "button",
4534
- class: "btn-mini",
4535
- onClick: _withModifiers($event => (_ctx.cancelTaskRunFromUi(item.taskId)), ["stop"]),
4536
- disabled: item.status !== 'queued' && item.status !== 'running'
4537
- }, _toDisplayString(_ctx.t('common.cancel')), 9 /* TEXT, PROPS */, ["onClick", "disabled"])
4678
+ }, _toDisplayString(item.status), 3 /* TEXT, CLASS */)
4538
4679
  ])
4539
- ], 42 /* CLASS, PROPS, NEED_HYDRATION */, ["role", "tabindex", "aria-disabled", "onClick", "onKeydown"]))
4680
+ ], 10 /* CLASS, PROPS */, ["onClick"]))
4540
4681
  }), 128 /* KEYED_FRAGMENT */))
4541
4682
  ]))
4542
4683
  ]))
4543
- : (_ctx.taskOrchestration.workspaceTab === 'runs' || (!_ctx.taskOrchestration.queue.length && _ctx.taskOrchestration.runs.length && !_ctx.taskOrchestration.selectedRunId && !_ctx.taskOrchestration.selectedRunError))
4544
- ? (_openBlock(), _createElementBlock("div", {
4545
- key: 2,
4546
- class: "task-workbench-panel"
4547
- }, [
4548
- (!_ctx.taskOrchestration.runs.length)
4549
- ? (_openBlock(), _createElementBlock("div", {
4550
- key: 0,
4551
- class: "task-empty-state"
4552
- }, [
4553
- _createElementVNode("div", { class: "task-empty-title" }, _toDisplayString(_ctx.t('orchestration.runs.empty.title')), 1 /* TEXT */),
4554
- _createElementVNode("div", { class: "task-empty-copy" }, _toDisplayString(_ctx.t('orchestration.runs.empty.subtitle')), 1 /* TEXT */)
4555
- ]))
4556
- : (_openBlock(), _createElementBlock("div", {
4557
- key: 1,
4558
- class: "task-runtime-list"
4559
- }, [
4560
- (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.taskOrchestration.runs, (item) => {
4561
- return (_openBlock(), _createElementBlock("button", {
4562
- key: item.runId,
4563
- type: "button",
4564
- class: _normalizeClass(['task-runtime-item', { active: _ctx.taskOrchestration.selectedRunId === item.runId }]),
4565
- onClick: $event => {_ctx.taskOrchestration.workspaceTab = 'detail'; _ctx.selectTaskRun(item.runId)}
4566
- }, [
4567
- _createElementVNode("div", { class: "task-runtime-item-main" }, [
4568
- _createElementVNode("div", { class: "task-runtime-item-title" }, _toDisplayString(item.title || item.taskId || item.runId), 1 /* TEXT */),
4569
- _createElementVNode("div", { class: "task-runtime-item-meta" }, _toDisplayString(item.runId) + " · " + _toDisplayString(item.durationMs || 0) + "ms", 1 /* TEXT */),
4570
- (item.summary)
4571
- ? (_openBlock(), _createElementBlock("div", {
4572
- key: 0,
4573
- class: "task-runtime-item-summary"
4574
- }, _toDisplayString(item.summary), 1 /* TEXT */))
4575
- : _createCommentVNode("v-if", true)
4576
- ]),
4577
- _createElementVNode("div", { class: "task-runtime-item-actions" }, [
4578
- _createElementVNode("span", {
4579
- class: _normalizeClass(['pill', _ctx.taskRunStatusTone(item.status)])
4580
- }, _toDisplayString(item.status), 3 /* TEXT, CLASS */)
4581
- ])
4582
- ], 10 /* CLASS, PROPS */, ["onClick"]))
4583
- }), 128 /* KEYED_FRAGMENT */))
4584
- ]))
4585
- ]))
4586
- : (_openBlock(), _createElementBlock("div", {
4587
- key: 3,
4588
- class: "task-workbench-panel"
4589
- }, [
4590
- _createElementVNode("div", { class: "task-detail-toolbar settings-tab-actions" }, [
4591
- _createElementVNode("button", {
4592
- type: "button",
4593
- class: "btn-tool btn-tool-compact",
4594
- onClick: $event => (_ctx.taskOrchestration.selectedRunId ? _ctx.loadTaskRunDetail(_ctx.taskOrchestration.selectedRunId) : null),
4595
- disabled: !_ctx.taskOrchestration.selectedRunId || _ctx.taskOrchestration.selectedRunLoading
4596
- }, _toDisplayString(_ctx.taskOrchestration.selectedRunLoading ? _ctx.t('common.refreshing') : _ctx.t('orchestration.detail.refresh')), 9 /* TEXT, PROPS */, ["onClick", "disabled"]),
4597
- _createElementVNode("button", {
4598
- type: "button",
4599
- class: "btn-tool btn-tool-compact",
4600
- onClick: $event => (_ctx.retryTaskRunFromUi(_ctx.taskOrchestration.selectedRunId)),
4601
- disabled: !_ctx.taskOrchestration.selectedRunId || _ctx.taskOrchestration.retrying
4602
- }, _toDisplayString(_ctx.taskOrchestration.retrying ? _ctx.t('orchestration.detail.retrying') : _ctx.t('orchestration.detail.retry')), 9 /* TEXT, PROPS */, ["onClick", "disabled"]),
4603
- _createElementVNode("button", {
4604
- type: "button",
4605
- class: "btn-tool btn-tool-compact",
4606
- onClick: $event => (_ctx.cancelTaskRunFromUi(_ctx.taskOrchestration.selectedRunId)),
4607
- disabled: !_ctx.taskOrchestrationSelectedRun || !_ctx.taskOrchestrationSelectedRun.run || !_ctx.isTaskRunActive(_ctx.taskOrchestrationSelectedRun.run.status)
4608
- }, _toDisplayString(_ctx.t('common.cancel')), 9 /* TEXT, PROPS */, ["onClick", "disabled"])
4609
- ]),
4610
- (_ctx.taskOrchestration.selectedRunError)
4611
- ? (_openBlock(), _createElementBlock("div", {
4684
+ : (_openBlock(), _createElementBlock("div", {
4685
+ key: 3,
4686
+ class: "task-workbench-panel"
4687
+ }, [
4688
+ _createElementVNode("div", { class: "task-detail-toolbar settings-tab-actions" }, [
4689
+ _createElementVNode("button", {
4690
+ type: "button",
4691
+ class: "btn-tool btn-tool-compact",
4692
+ onClick: $event => (_ctx.taskOrchestration.selectedRunId ? _ctx.loadTaskRunDetail(_ctx.taskOrchestration.selectedRunId) : null),
4693
+ disabled: !_ctx.taskOrchestration.selectedRunId || _ctx.taskOrchestration.selectedRunLoading
4694
+ }, _toDisplayString(_ctx.taskOrchestration.selectedRunLoading ? _ctx.t('common.refreshing') : _ctx.t('orchestration.detail.refresh')), 9 /* TEXT, PROPS */, ["onClick", "disabled"]),
4695
+ _createElementVNode("button", {
4696
+ type: "button",
4697
+ class: "btn-tool btn-tool-compact",
4698
+ onClick: $event => (_ctx.retryTaskRunFromUi(_ctx.taskOrchestration.selectedRunId)),
4699
+ disabled: !_ctx.taskOrchestration.selectedRunId || _ctx.taskOrchestration.retrying
4700
+ }, _toDisplayString(_ctx.taskOrchestration.retrying ? _ctx.t('orchestration.detail.retrying') : _ctx.t('orchestration.detail.retry')), 9 /* TEXT, PROPS */, ["onClick", "disabled"]),
4701
+ _createElementVNode("button", {
4702
+ type: "button",
4703
+ class: "btn-tool btn-tool-compact",
4704
+ onClick: _ctx.continueTaskThreadFromUi,
4705
+ disabled: !_ctx.taskOrchestrationSelectedRun
4706
+ }, _toDisplayString(_ctx.t('orchestration.detail.continueThread')), 9 /* TEXT, PROPS */, ["onClick", "disabled"]),
4707
+ (_ctx.taskOrchestrationSelectedRun && _ctx.taskOrchestrationSelectedRun.run && _ctx.isTaskRunActive(_ctx.taskOrchestrationSelectedRun.run.status))
4708
+ ? (_openBlock(), _createElementBlock("button", {
4612
4709
  key: 0,
4613
- class: "task-issue-item"
4614
- }, _toDisplayString(_ctx.taskOrchestration.selectedRunError), 1 /* TEXT */))
4615
- : _createCommentVNode("v-if", true),
4616
- (!_ctx.taskOrchestrationSelectedRun)
4617
- ? (_openBlock(), _createElementBlock("div", {
4618
- key: 1,
4619
- class: "task-empty-state"
4620
- }, [
4621
- _createElementVNode("div", { class: "task-empty-title" }, _toDisplayString(_ctx.t('orchestration.detail.empty.title')), 1 /* TEXT */),
4622
- _createElementVNode("div", { class: "task-empty-copy" }, _toDisplayString(_ctx.t('orchestration.detail.empty.subtitle')), 1 /* TEXT */)
4623
- ]))
4624
- : (_openBlock(), _createElementBlock(_Fragment, { key: 2 }, [
4625
- _createElementVNode("div", { class: "task-detail-summary-strip" }, [
4626
- _createElementVNode("div", { class: "task-plan-summary-item" }, [
4627
- _createElementVNode("span", { class: "task-plan-summary-label" }, _toDisplayString(_ctx.t('orchestration.detail.summary.status')), 1 /* TEXT */),
4628
- _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestrationSelectedRun.run.status), 1 /* TEXT */)
4629
- ]),
4630
- _createElementVNode("div", { class: "task-plan-summary-item" }, [
4631
- _createElementVNode("span", { class: "task-plan-summary-label" }, _toDisplayString(_ctx.t('orchestration.detail.summary.duration')), 1 /* TEXT */),
4632
- _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestrationSelectedRun.run.durationMs || 0) + "ms", 1 /* TEXT */)
4633
- ]),
4634
- _createElementVNode("div", { class: "task-plan-summary-item" }, [
4635
- _createElementVNode("span", { class: "task-plan-summary-label" }, _toDisplayString(_ctx.t('orchestration.detail.summary.nodes')), 1 /* TEXT */),
4636
- _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestrationSelectedRunNodes.length), 1 /* TEXT */)
4637
- ]),
4638
- _createElementVNode("div", { class: "task-plan-summary-item" }, [
4639
- _createElementVNode("span", { class: "task-plan-summary-label" }, _toDisplayString(_ctx.t('orchestration.detail.summary.summary')), 1 /* TEXT */),
4640
- _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestrationSelectedRun.run.summary || _ctx.t('common.none')), 1 /* TEXT */)
4641
- ])
4710
+ type: "button",
4711
+ class: "btn-tool btn-tool-compact",
4712
+ onClick: $event => (_ctx.cancelTaskRunFromUi(_ctx.taskOrchestration.selectedRunId))
4713
+ }, _toDisplayString(_ctx.t('common.cancel')), 9 /* TEXT, PROPS */, ["onClick"]))
4714
+ : _createCommentVNode("v-if", true)
4715
+ ]),
4716
+ (_ctx.taskOrchestration.selectedRunError)
4717
+ ? (_openBlock(), _createElementBlock("div", {
4718
+ key: 0,
4719
+ class: "task-issue-item"
4720
+ }, _toDisplayString(_ctx.taskOrchestration.selectedRunError), 1 /* TEXT */))
4721
+ : _createCommentVNode("v-if", true),
4722
+ (!_ctx.taskOrchestrationSelectedRun)
4723
+ ? (_openBlock(), _createElementBlock("div", {
4724
+ key: 1,
4725
+ class: "task-empty-state"
4726
+ }, [
4727
+ _createElementVNode("div", { class: "task-empty-title" }, _toDisplayString(_ctx.t('orchestration.detail.empty.title')), 1 /* TEXT */),
4728
+ _createElementVNode("div", { class: "task-empty-copy" }, _toDisplayString(_ctx.t('orchestration.detail.empty.subtitle')), 1 /* TEXT */)
4729
+ ]))
4730
+ : (_openBlock(), _createElementBlock(_Fragment, { key: 2 }, [
4731
+ _createElementVNode("div", { class: "task-detail-summary-strip" }, [
4732
+ _createElementVNode("div", { class: "task-plan-summary-item" }, [
4733
+ _createElementVNode("span", { class: "task-plan-summary-label" }, _toDisplayString(_ctx.t('orchestration.detail.summary.status')), 1 /* TEXT */),
4734
+ _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestrationSelectedRun.run.status), 1 /* TEXT */)
4642
4735
  ]),
4643
- (_ctx.taskOrchestrationSelectedRun.run.error)
4736
+ _createElementVNode("div", { class: "task-plan-summary-item" }, [
4737
+ _createElementVNode("span", { class: "task-plan-summary-label" }, _toDisplayString(_ctx.t('orchestration.detail.summary.duration')), 1 /* TEXT */),
4738
+ _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestrationSelectedRun.run.durationMs || 0) + "ms", 1 /* TEXT */)
4739
+ ]),
4740
+ _createElementVNode("div", { class: "task-plan-summary-item" }, [
4741
+ _createElementVNode("span", { class: "task-plan-summary-label" }, _toDisplayString(_ctx.t('orchestration.detail.summary.nodes')), 1 /* TEXT */),
4742
+ _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestrationSelectedRunNodes.length), 1 /* TEXT */)
4743
+ ]),
4744
+ _createElementVNode("div", { class: "task-plan-summary-item" }, [
4745
+ _createElementVNode("span", { class: "task-plan-summary-label" }, _toDisplayString(_ctx.t('orchestration.detail.summary.summary')), 1 /* TEXT */),
4746
+ _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestrationSelectedRun.run.summary || _ctx.t('common.none')), 1 /* TEXT */)
4747
+ ]),
4748
+ (_ctx.taskOrchestrationSelectedRun.threadId)
4644
4749
  ? (_openBlock(), _createElementBlock("div", {
4645
4750
  key: 0,
4646
- class: "task-issue-item"
4647
- }, _toDisplayString(_ctx.taskOrchestrationSelectedRun.run.error), 1 /* TEXT */))
4751
+ class: "task-plan-summary-item"
4752
+ }, [
4753
+ _createElementVNode("span", { class: "task-plan-summary-label" }, _toDisplayString(_ctx.t('orchestration.plan.summary.threadId')), 1 /* TEXT */),
4754
+ _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestrationSelectedRun.threadId), 1 /* TEXT */)
4755
+ ]))
4648
4756
  : _createCommentVNode("v-if", true),
4649
- _createElementVNode("div", { class: "task-node-list" }, [
4650
- (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.taskOrchestrationSelectedRunNodes, (node) => {
4651
- return (_openBlock(), _createElementBlock("div", {
4652
- key: node.id,
4653
- class: "task-node-card task-node-card-detail"
4757
+ (_ctx.taskOrchestrationSelectedRun.cwd)
4758
+ ? (_openBlock(), _createElementBlock("div", {
4759
+ key: 1,
4760
+ class: "task-plan-summary-item"
4654
4761
  }, [
4655
- _createElementVNode("div", { class: "task-node-head" }, [
4656
- _createElementVNode("div", null, [
4657
- _createElementVNode("div", { class: "task-node-title" }, _toDisplayString(node.title || node.id), 1 /* TEXT */),
4658
- _createElementVNode("div", { class: "task-node-meta" }, _toDisplayString(_ctx.t('orchestration.detail.node.meta', { id: node.id, attempts: (node.attemptCount || 0), autoFix: (node.autoFixRounds || 0) })), 1 /* TEXT */)
4659
- ]),
4660
- _createElementVNode("span", {
4661
- class: _normalizeClass(['pill', _ctx.taskRunStatusTone(node.status)])
4662
- }, _toDisplayString(node.status), 3 /* TEXT, CLASS */)
4663
- ]),
4664
- (node.summary)
4665
- ? (_openBlock(), _createElementBlock("div", {
4666
- key: 0,
4667
- class: "task-runtime-item-summary"
4668
- }, _toDisplayString(node.summary), 1 /* TEXT */))
4669
- : _createCommentVNode("v-if", true),
4670
- (node.error && node.error !== node.summary)
4671
- ? (_openBlock(), _createElementBlock("div", {
4672
- key: 1,
4673
- class: "task-node-deps"
4674
- }, _toDisplayString(_ctx.t('orchestration.labels.error')) + _toDisplayString(node.error), 1 /* TEXT */))
4675
- : _createCommentVNode("v-if", true),
4676
- _createElementVNode("div", { class: "task-node-deps" }, _toDisplayString(_ctx.t('orchestration.labels.dependencies')) + _toDisplayString(_ctx.formatTaskNodeDependencies(node)), 1 /* TEXT */),
4677
- _createElementVNode("pre", { class: "task-log-block" }, _toDisplayString(_ctx.formatTaskNodeLogs(node.logs)), 1 /* TEXT */)
4762
+ _createElementVNode("span", { class: "task-plan-summary-label" }, _toDisplayString(_ctx.t('orchestration.plan.summary.cwd')), 1 /* TEXT */),
4763
+ _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestrationSelectedRun.cwd), 1 /* TEXT */)
4678
4764
  ]))
4679
- }), 128 /* KEYED_FRAGMENT */))
4680
- ])
4681
- ], 64 /* STABLE_FRAGMENT */))
4682
- ]))
4683
- ]))
4684
- : _createCommentVNode("v-if", true)
4765
+ : _createCommentVNode("v-if", true)
4766
+ ]),
4767
+ (_ctx.taskOrchestrationSelectedRun.run.error)
4768
+ ? (_openBlock(), _createElementBlock("div", {
4769
+ key: 0,
4770
+ class: "task-issue-item"
4771
+ }, _toDisplayString(_ctx.taskOrchestrationSelectedRun.run.error), 1 /* TEXT */))
4772
+ : _createCommentVNode("v-if", true),
4773
+ _createElementVNode("div", { class: "task-node-list" }, [
4774
+ (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.taskOrchestrationSelectedRunNodes, (node) => {
4775
+ return (_openBlock(), _createElementBlock("div", {
4776
+ key: node.id,
4777
+ class: "task-node-card task-node-card-detail"
4778
+ }, [
4779
+ _createElementVNode("div", { class: "task-node-head" }, [
4780
+ _createElementVNode("div", null, [
4781
+ _createElementVNode("div", { class: "task-node-title" }, _toDisplayString(node.title || node.id), 1 /* TEXT */),
4782
+ _createElementVNode("div", { class: "task-node-meta" }, _toDisplayString(_ctx.t('orchestration.detail.node.meta', { id: node.id, attempts: (node.attemptCount || 0), autoFix: (node.autoFixRounds || 0) })), 1 /* TEXT */)
4783
+ ]),
4784
+ _createElementVNode("span", {
4785
+ class: _normalizeClass(['pill', _ctx.taskRunStatusTone(node.status)])
4786
+ }, _toDisplayString(node.status), 3 /* TEXT, CLASS */)
4787
+ ]),
4788
+ (node.summary)
4789
+ ? (_openBlock(), _createElementBlock("div", {
4790
+ key: 0,
4791
+ class: "task-runtime-item-summary"
4792
+ }, _toDisplayString(node.summary), 1 /* TEXT */))
4793
+ : _createCommentVNode("v-if", true),
4794
+ (node.error && node.error !== node.summary)
4795
+ ? (_openBlock(), _createElementBlock("div", {
4796
+ key: 1,
4797
+ class: "task-node-deps"
4798
+ }, _toDisplayString(_ctx.t('orchestration.labels.error')) + _toDisplayString(node.error), 1 /* TEXT */))
4799
+ : _createCommentVNode("v-if", true),
4800
+ _createElementVNode("div", { class: "task-node-deps" }, _toDisplayString(_ctx.t('orchestration.labels.dependencies')) + _toDisplayString(_ctx.formatTaskNodeDependencies(node)), 1 /* TEXT */),
4801
+ (node.output && typeof node.output === 'object')
4802
+ ? (_openBlock(), _createElementBlock("div", {
4803
+ key: 2,
4804
+ class: "task-node-output-card"
4805
+ }, [
4806
+ _createElementVNode("div", { class: "task-node-output-head" }, [
4807
+ _createElementVNode("strong", null, _toDisplayString(_ctx.t('orchestration.detail.node.output')), 1 /* TEXT */),
4808
+ (node.output.provider || node.output.model)
4809
+ ? (_openBlock(), _createElementBlock("span", {
4810
+ key: 0,
4811
+ class: "task-node-output-meta"
4812
+ }, [
4813
+ _createTextVNode(_toDisplayString(node.output.provider || ''), 1 /* TEXT */),
4814
+ (node.output.provider && node.output.model)
4815
+ ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [
4816
+ _createTextVNode(" · ")
4817
+ ], 64 /* STABLE_FRAGMENT */))
4818
+ : _createCommentVNode("v-if", true),
4819
+ _createTextVNode(_toDisplayString(node.output.model || ''), 1 /* TEXT */)
4820
+ ]))
4821
+ : _createCommentVNode("v-if", true)
4822
+ ]),
4823
+ _createElementVNode("div", { class: "task-node-output-facts" }, [
4824
+ (node.output.endpoint)
4825
+ ? (_openBlock(), _createElementBlock("span", { key: 0 }, _toDisplayString(_ctx.t('orchestration.detail.node.endpoint')) + _toDisplayString(node.output.endpoint), 1 /* TEXT */))
4826
+ : _createCommentVNode("v-if", true),
4827
+ (node.output.status)
4828
+ ? (_openBlock(), _createElementBlock("span", { key: 1 }, "HTTP " + _toDisplayString(node.output.status), 1 /* TEXT */))
4829
+ : _createCommentVNode("v-if", true),
4830
+ (node.output.durationMs)
4831
+ ? (_openBlock(), _createElementBlock("span", { key: 2 }, _toDisplayString(node.output.durationMs) + "ms", 1 /* TEXT */))
4832
+ : _createCommentVNode("v-if", true)
4833
+ ]),
4834
+ _createElementVNode("pre", { class: "task-log-block task-output-block" }, _toDisplayString(_ctx.formatTaskNodeOutputText(node)), 1 /* TEXT */),
4835
+ (node.output.materializedFiles && node.output.materializedFiles.length)
4836
+ ? (_openBlock(), _createElementBlock("div", {
4837
+ key: 0,
4838
+ class: "task-materialized-files"
4839
+ }, [
4840
+ _createElementVNode("div", { class: "task-node-deps" }, _toDisplayString(_ctx.t('orchestration.detail.node.materializedFiles')), 1 /* TEXT */),
4841
+ (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(node.output.materializedFiles, (file) => {
4842
+ return (_openBlock(), _createElementBlock("div", {
4843
+ key: file.path || file.relativePath,
4844
+ class: "task-materialized-file"
4845
+ }, _toDisplayString(file.relativePath || file.path) + " · " + _toDisplayString(file.bytes || 0) + " bytes", 1 /* TEXT */))
4846
+ }), 128 /* KEYED_FRAGMENT */))
4847
+ ]))
4848
+ : _createCommentVNode("v-if", true),
4849
+ (node.output.workspaceFiles && node.output.workspaceFiles.length)
4850
+ ? (_openBlock(), _createElementBlock("div", {
4851
+ key: 1,
4852
+ class: "task-materialized-files task-workspace-files"
4853
+ }, [
4854
+ _createElementVNode("div", { class: "task-node-deps" }, _toDisplayString(_ctx.t('orchestration.detail.node.workspaceFiles')), 1 /* TEXT */),
4855
+ (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(node.output.workspaceFiles, (file) => {
4856
+ return (_openBlock(), _createElementBlock("div", {
4857
+ key: file.path || file.relativePath,
4858
+ class: "task-materialized-file"
4859
+ }, _toDisplayString([String(file.operation || '').trim().toUpperCase(), String(file.relativePath || file.path || '').trim(), Number.isFinite(Number(file.bytes)) ? (Number(file.bytes) + ' bytes') : '', typeof file.existed === 'boolean' ? (file.existed ? 'existed' : 'new') : ''].filter(Boolean).join(' · ')), 1 /* TEXT */))
4860
+ }), 128 /* KEYED_FRAGMENT */))
4861
+ ]))
4862
+ : _createCommentVNode("v-if", true)
4863
+ ]))
4864
+ : _createCommentVNode("v-if", true),
4865
+ _createElementVNode("pre", { class: "task-log-block" }, _toDisplayString(_ctx.formatTaskNodeLogs(node.logs)), 1 /* TEXT */)
4866
+ ]))
4867
+ }), 128 /* KEYED_FRAGMENT */))
4868
+ ])
4869
+ ], 64 /* STABLE_FRAGMENT */))
4870
+ ]))
4871
+ ])
4872
+ ]),
4873
+ _createElementVNode("details", {
4874
+ class: "selector-section task-side-settings-card task-advanced-panel task-quick-advanced",
4875
+ open: _ctx.taskOrchestration.settingsOpen,
4876
+ onToggle: $event => (_ctx.taskOrchestration.settingsOpen = $event.target.open)
4877
+ }, [
4878
+ _createElementVNode("summary", { class: "task-advanced-summary" }, _toDisplayString(_ctx.t('orchestration.advanced.title')), 1 /* TEXT */),
4879
+ _createElementVNode("div", { class: "task-action-row-right task-action-row-right-prominent task-codex-queue-action" }, [
4880
+ _createElementVNode("button", {
4881
+ type: "button",
4882
+ class: "btn-tool",
4883
+ onClick: $event => (_ctx.queueTaskOrchestrationAndStart()),
4884
+ disabled: _ctx.taskOrchestration.queueAdding || _ctx.taskOrchestration.queueStarting || _ctx.taskOrchestration.planning || !_ctx.taskOrchestration.target.trim()
4885
+ }, _toDisplayString((_ctx.taskOrchestration.queueAdding || _ctx.taskOrchestration.queueStarting) ? _ctx.t('orchestration.actions.processing') : _ctx.t('orchestration.actions.queueAndStart')), 9 /* TEXT, PROPS */, ["onClick", "disabled"])
4886
+ ]),
4887
+ _createElementVNode("div", { class: "selector-grid task-composer-grid task-composer-grid-secondary" }, [
4888
+ _createElementVNode("label", { class: "selector-field task-field-wide" }, [
4889
+ _createElementVNode("span", { class: "selector-label" }, _toDisplayString(_ctx.t('orchestration.fields.title')), 1 /* TEXT */),
4890
+ _withDirectives(_createElementVNode("input", {
4891
+ "onUpdate:modelValue": $event => ((_ctx.taskOrchestration.title) = $event),
4892
+ class: "model-input",
4893
+ type: "text",
4894
+ placeholder: _ctx.t('orchestration.fields.title.placeholder')
4895
+ }, null, 8 /* PROPS */, ["onUpdate:modelValue", "placeholder"]), [
4896
+ [_vModelText, _ctx.taskOrchestration.title]
4897
+ ])
4898
+ ]),
4899
+ _createElementVNode("label", { class: "selector-field" }, [
4900
+ _createElementVNode("span", { class: "selector-label" }, _toDisplayString(_ctx.t('orchestration.fields.engine')), 1 /* TEXT */),
4901
+ _withDirectives(_createElementVNode("select", {
4902
+ "onUpdate:modelValue": $event => ((_ctx.taskOrchestration.selectedEngine) = $event),
4903
+ class: "provider-fast-switch-select",
4904
+ onChange: $event => (_ctx.taskOrchestration.selectedEngine === 'workflow' ? null : _ctx.taskOrchestration.workflowIdsText = '')
4905
+ }, [
4906
+ _createElementVNode("option", { value: "openai-chat" }, _toDisplayString(_ctx.t('orchestration.engine.openaiChat')), 1 /* TEXT */),
4907
+ _createElementVNode("option", { value: "workflow" }, _toDisplayString(_ctx.t('orchestration.engine.workflow')), 1 /* TEXT */)
4908
+ ], 40 /* PROPS, NEED_HYDRATION */, ["onUpdate:modelValue", "onChange"]), [
4909
+ [_vModelSelect, _ctx.taskOrchestration.selectedEngine]
4910
+ ])
4911
+ ]),
4912
+ _createElementVNode("label", { class: "selector-field" }, [
4913
+ _createElementVNode("span", { class: "selector-label" }, _toDisplayString(_ctx.t('orchestration.fields.runMode')), 1 /* TEXT */),
4914
+ _withDirectives(_createElementVNode("select", {
4915
+ "onUpdate:modelValue": $event => ((_ctx.taskOrchestration.runMode) = $event),
4916
+ class: "provider-fast-switch-select"
4917
+ }, [
4918
+ _createElementVNode("option", { value: "write" }, _toDisplayString(_ctx.t('orchestration.runMode.write')), 1 /* TEXT */),
4919
+ _createElementVNode("option", { value: "read" }, _toDisplayString(_ctx.t('orchestration.runMode.readOnly')), 1 /* TEXT */),
4920
+ _createElementVNode("option", { value: "dry-run" }, _toDisplayString(_ctx.t('orchestration.runMode.dryRun')), 1 /* TEXT */)
4921
+ ], 8 /* PROPS */, ["onUpdate:modelValue"]), [
4922
+ [_vModelSelect, _ctx.taskOrchestration.runMode]
4923
+ ])
4924
+ ]),
4925
+ _createElementVNode("label", { class: "selector-field task-field-wide" }, [
4926
+ _createElementVNode("span", { class: "selector-label" }, _toDisplayString(_ctx.t('orchestration.fields.notes')), 1 /* TEXT */),
4927
+ _withDirectives(_createElementVNode("textarea", {
4928
+ "onUpdate:modelValue": $event => ((_ctx.taskOrchestration.notes) = $event),
4929
+ class: "task-textarea",
4930
+ rows: "3",
4931
+ placeholder: _ctx.t('orchestration.fields.notes.placeholder')
4932
+ }, null, 8 /* PROPS */, ["onUpdate:modelValue", "placeholder"]), [
4933
+ [_vModelText, _ctx.taskOrchestration.notes]
4934
+ ]),
4935
+ _createElementVNode("span", { class: "task-field-hint" }, _toDisplayString(_ctx.t('orchestration.fields.notes.hint')), 1 /* TEXT */)
4936
+ ]),
4937
+ _createElementVNode("label", { class: "selector-field task-field-wide" }, [
4938
+ _createElementVNode("span", { class: "selector-label" }, _toDisplayString(_ctx.t('orchestration.fields.workspacePath')), 1 /* TEXT */),
4939
+ _withDirectives(_createElementVNode("input", {
4940
+ "onUpdate:modelValue": $event => ((_ctx.taskOrchestration.workspacePath) = $event),
4941
+ class: "model-input",
4942
+ type: "text",
4943
+ placeholder: _ctx.t('orchestration.fields.workspacePath.placeholder')
4944
+ }, null, 8 /* PROPS */, ["onUpdate:modelValue", "placeholder"]), [
4945
+ [_vModelText, _ctx.taskOrchestration.workspacePath]
4946
+ ]),
4947
+ _createElementVNode("span", { class: "task-field-hint" }, _toDisplayString(_ctx.t('orchestration.fields.workspacePath.hint')), 1 /* TEXT */)
4948
+ ]),
4949
+ _createElementVNode("label", { class: "selector-field" }, [
4950
+ _createElementVNode("span", { class: "selector-label" }, _toDisplayString(_ctx.t('orchestration.fields.threadId')), 1 /* TEXT */),
4951
+ _withDirectives(_createElementVNode("input", {
4952
+ "onUpdate:modelValue": $event => ((_ctx.taskOrchestration.threadId) = $event),
4953
+ class: "model-input",
4954
+ type: "text",
4955
+ placeholder: _ctx.t('orchestration.fields.threadId.placeholder')
4956
+ }, null, 8 /* PROPS */, ["onUpdate:modelValue", "placeholder"]), [
4957
+ [_vModelText, _ctx.taskOrchestration.threadId]
4958
+ ]),
4959
+ _createElementVNode("span", { class: "task-field-hint" }, _toDisplayString(_ctx.t('orchestration.fields.threadId.hint')), 1 /* TEXT */)
4960
+ ]),
4961
+ _createElementVNode("label", { class: "selector-field task-field-wide" }, [
4962
+ _createElementVNode("span", { class: "selector-label" }, _toDisplayString(_ctx.t('orchestration.fields.followUps')), 1 /* TEXT */),
4963
+ _withDirectives(_createElementVNode("textarea", {
4964
+ "onUpdate:modelValue": $event => ((_ctx.taskOrchestration.followUpsText) = $event),
4965
+ class: "task-textarea",
4966
+ rows: "3",
4967
+ placeholder: _ctx.t('orchestration.fields.followUps.placeholder')
4968
+ }, null, 8 /* PROPS */, ["onUpdate:modelValue", "placeholder"]), [
4969
+ [_vModelText, _ctx.taskOrchestration.followUpsText]
4970
+ ])
4971
+ ]),
4972
+ _createElementVNode("label", { class: "selector-field" }, [
4973
+ _createElementVNode("span", { class: "selector-label" }, _toDisplayString(_ctx.t('orchestration.fields.concurrency')), 1 /* TEXT */),
4974
+ _withDirectives(_createElementVNode("input", {
4975
+ "onUpdate:modelValue": $event => ((_ctx.taskOrchestration.concurrency) = $event),
4976
+ class: "model-input",
4977
+ type: "number",
4978
+ min: "1",
4979
+ max: "8"
4980
+ }, null, 8 /* PROPS */, ["onUpdate:modelValue"]), [
4981
+ [_vModelText, _ctx.taskOrchestration.concurrency]
4982
+ ]),
4983
+ _createElementVNode("span", { class: "task-field-hint" }, _toDisplayString(_ctx.t('orchestration.fields.concurrency.hint')), 1 /* TEXT */)
4984
+ ]),
4985
+ _createElementVNode("label", { class: "selector-field" }, [
4986
+ _createElementVNode("span", { class: "selector-label" }, _toDisplayString(_ctx.t('orchestration.fields.autoFixRounds')), 1 /* TEXT */),
4987
+ _withDirectives(_createElementVNode("input", {
4988
+ "onUpdate:modelValue": $event => ((_ctx.taskOrchestration.autoFixRounds) = $event),
4989
+ class: "model-input",
4990
+ type: "number",
4991
+ min: "0",
4992
+ max: "5"
4993
+ }, null, 8 /* PROPS */, ["onUpdate:modelValue"]), [
4994
+ [_vModelText, _ctx.taskOrchestration.autoFixRounds]
4995
+ ]),
4996
+ _createElementVNode("span", { class: "task-field-hint" }, _toDisplayString(_ctx.t('orchestration.fields.autoFixRounds.hint')), 1 /* TEXT */)
4997
+ ]),
4998
+ (_ctx.taskOrchestration.selectedEngine === 'workflow')
4999
+ ? (_openBlock(), _createElementBlock("label", {
5000
+ key: 0,
5001
+ class: "selector-field task-field-wide"
5002
+ }, [
5003
+ _createElementVNode("span", { class: "selector-label" }, _toDisplayString(_ctx.t('orchestration.fields.workflowIds')), 1 /* TEXT */),
5004
+ _withDirectives(_createElementVNode("textarea", {
5005
+ "onUpdate:modelValue": $event => ((_ctx.taskOrchestration.workflowIdsText) = $event),
5006
+ class: "task-textarea",
5007
+ rows: "3",
5008
+ placeholder: _ctx.t('orchestration.fields.workflowIds.placeholder')
5009
+ }, null, 8 /* PROPS */, ["onUpdate:modelValue", "placeholder"]), [
5010
+ [_vModelText, _ctx.taskOrchestration.workflowIdsText]
5011
+ ]),
5012
+ _createElementVNode("span", { class: "task-field-hint" }, _toDisplayString(_ctx.t('orchestration.fields.workflowIds.hint', { count: _ctx.taskOrchestration.workflows.length })), 1 /* TEXT */),
5013
+ (_ctx.taskOrchestration.workflows.length)
5014
+ ? (_openBlock(), _createElementBlock("div", {
5015
+ key: 0,
5016
+ class: "task-workflow-suggestions"
5017
+ }, [
5018
+ (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.taskOrchestration.workflows, (workflow) => {
5019
+ return (_openBlock(), _createElementBlock("button", {
5020
+ key: workflow.id || workflow.name,
5021
+ type: "button",
5022
+ class: "task-workflow-chip",
5023
+ onClick: $event => (_ctx.appendTaskWorkflowId(workflow.id || workflow.name))
5024
+ }, [
5025
+ _createElementVNode("span", null, _toDisplayString(workflow.name || workflow.id), 1 /* TEXT */),
5026
+ (workflow.stepCount)
5027
+ ? (_openBlock(), _createElementBlock("small", { key: 0 }, _toDisplayString(_ctx.t('orchestration.workflow.stepCount', { count: workflow.stepCount })), 1 /* TEXT */))
5028
+ : _createCommentVNode("v-if", true)
5029
+ ], 8 /* PROPS */, ["onClick"]))
5030
+ }), 128 /* KEYED_FRAGMENT */))
5031
+ ]))
5032
+ : _createCommentVNode("v-if", true)
5033
+ ]))
5034
+ : _createCommentVNode("v-if", true)
5035
+ ])
5036
+ ], 40 /* PROPS, NEED_HYDRATION */, ["open", "onToggle"]),
5037
+ _createElementVNode("div", { class: "task-provider-status-card" }, [
5038
+ _createElementVNode("div", { class: "task-readiness-title" }, _toDisplayString(_ctx.t('orchestration.openai.status.title')), 1 /* TEXT */),
5039
+ _createElementVNode("div", { class: "task-readiness-copy" }, _toDisplayString(_ctx.t('orchestration.openai.status.subtitle')), 1 /* TEXT */),
5040
+ (_ctx.taskOrchestration.openAiChatStatus)
5041
+ ? (_openBlock(), _createElementBlock("div", {
5042
+ key: 0,
5043
+ class: "task-provider-status-grid"
5044
+ }, [
5045
+ _createElementVNode("div", { class: "task-provider-status-row" }, [
5046
+ _createElementVNode("span", null, _toDisplayString(_ctx.t('orchestration.openai.status.provider')), 1 /* TEXT */),
5047
+ _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestration.openAiChatStatus.providerName ? _ctx.t('orchestration.openai.status.configured') : _ctx.t('orchestration.openai.status.notSet')), 1 /* TEXT */)
5048
+ ]),
5049
+ _createElementVNode("div", { class: "task-provider-status-row" }, [
5050
+ _createElementVNode("span", null, _toDisplayString(_ctx.t('orchestration.openai.status.model')), 1 /* TEXT */),
5051
+ _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestration.openAiChatStatus.model ? _ctx.t('orchestration.openai.status.configured') : _ctx.t('orchestration.openai.status.notSet')), 1 /* TEXT */)
5052
+ ]),
5053
+ _createElementVNode("div", { class: "task-provider-status-row task-provider-status-row-wide" }, [
5054
+ _createElementVNode("span", null, _toDisplayString(_ctx.t('orchestration.openai.status.endpoint')), 1 /* TEXT */),
5055
+ _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestration.openAiChatStatus.endpoint ? _ctx.t('orchestration.openai.status.configured') : _ctx.t('orchestration.openai.status.notSet')), 1 /* TEXT */)
5056
+ ]),
5057
+ _createElementVNode("div", { class: "task-provider-status-row" }, [
5058
+ _createElementVNode("span", null, _toDisplayString(_ctx.t('orchestration.openai.status.apiKey')), 1 /* TEXT */),
5059
+ _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestration.openAiChatStatus.hasApiKey ? _ctx.t('orchestration.openai.status.configured') : _ctx.t('orchestration.openai.status.missing')), 1 /* TEXT */)
5060
+ ]),
5061
+ _createElementVNode("div", { class: "task-provider-status-row" }, [
5062
+ _createElementVNode("span", null, _toDisplayString(_ctx.t('orchestration.openai.status.headers')), 1 /* TEXT */),
5063
+ _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestration.openAiChatStatus.hasExtraHeaders ? _ctx.t('orchestration.openai.status.configured') : _ctx.t('orchestration.openai.status.notSet')), 1 /* TEXT */)
5064
+ ])
5065
+ ]))
5066
+ : (_openBlock(), _createElementBlock("div", {
5067
+ key: 1,
5068
+ class: "task-readiness-copy"
5069
+ }, _toDisplayString(_ctx.t('orchestration.openai.status.notLoaded')), 1 /* TEXT */)),
5070
+ (_ctx.taskOrchestration.openAiChatStatus && _ctx.taskOrchestration.openAiChatStatus.error)
5071
+ ? (_openBlock(), _createElementBlock("div", {
5072
+ key: 2,
5073
+ class: "task-issue-item task-provider-status-error"
5074
+ }, _toDisplayString(_ctx.taskOrchestration.openAiChatStatus.error), 1 /* TEXT */))
5075
+ : _createCommentVNode("v-if", true),
5076
+ _createElementVNode("button", {
5077
+ type: "button",
5078
+ class: "btn-tool btn-tool-compact task-provider-config-button",
5079
+ onClick: $event => (_ctx.openTaskOpenAiChatConfig())
5080
+ }, _toDisplayString(_ctx.t('orchestration.openai.status.configure')), 9 /* TEXT, PROPS */, ["onClick"])
5081
+ ]),
5082
+ _createElementVNode("div", { class: "task-readiness-head" }, [
5083
+ _createElementVNode("div", null, [
5084
+ _createElementVNode("div", { class: "task-readiness-title" }, _toDisplayString(_ctx.t('orchestration.quick.checklist.title')), 1 /* TEXT */),
5085
+ _createElementVNode("div", { class: "task-readiness-copy" }, _toDisplayString(_ctx.t('orchestration.quick.checklist.subtitle')), 1 /* TEXT */)
5086
+ ])
5087
+ ]),
5088
+ _createElementVNode("div", { class: "task-readiness-grid task-quick-checklist" }, [
5089
+ (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.taskOrchestrationDraftChecklist, (item) => {
5090
+ return (_openBlock(), _createElementBlock("div", {
5091
+ key: item.key,
5092
+ class: _normalizeClass(['task-readiness-item', { done: item.done }])
5093
+ }, [
5094
+ _createElementVNode("strong", null, _toDisplayString(item.label), 1 /* TEXT */),
5095
+ _createElementVNode("span", null, _toDisplayString(item.detail), 1 /* TEXT */)
5096
+ ], 2 /* CLASS */))
5097
+ }), 128 /* KEYED_FRAGMENT */))
5098
+ ]),
5099
+ _createElementVNode("div", { class: "task-quick-status-card" }, [
5100
+ _createElementVNode("div", { class: "task-plan-summary-label" }, _toDisplayString(_ctx.t('orchestration.quick.status.title')), 1 /* TEXT */),
5101
+ _createElementVNode("strong", null, _toDisplayString(_ctx.taskOrchestrationDraftReadiness.title), 1 /* TEXT */),
5102
+ _createElementVNode("span", null, _toDisplayString(_ctx.taskOrchestrationDraftReadiness.summary), 1 /* TEXT */)
5103
+ ])
5104
+ ])
5105
+ ])
5106
+ ]),
5107
+ (!(_ctx.taskOrchestration.plan || _ctx.taskOrchestration.planIssues.length || _ctx.taskOrchestration.planWarnings.length || _ctx.taskOrchestration.lastError || _ctx.taskOrchestrationWorkspaceQueue.length || _ctx.taskOrchestrationWorkspaceRuns.length || _ctx.taskOrchestration.selectedRunId || _ctx.taskOrchestration.selectedRunError))
5108
+ ? (_openBlock(), _createElementBlock("section", {
5109
+ key: 0,
5110
+ class: "selector-section task-stage-card"
5111
+ }, [
5112
+ _createElementVNode("div", { class: "task-stage-empty" }, [
5113
+ _createElementVNode("div", null, [
5114
+ _createElementVNode("div", { class: "selector-title" }, _toDisplayString(_ctx.t('orchestration.stage.title')), 1 /* TEXT */),
5115
+ _createElementVNode("div", { class: "skills-panel-note" }, _toDisplayString(_ctx.t('orchestration.stage.subtitle')), 1 /* TEXT */)
5116
+ ]),
5117
+ _createElementVNode("div", { class: "task-stage-strip" }, [
5118
+ _createElementVNode("div", { class: "task-stage-pill" }, _toDisplayString(_ctx.t('orchestration.stage.pill.target')), 1 /* TEXT */),
5119
+ _createElementVNode("div", { class: "task-stage-pill" }, _toDisplayString(_ctx.t('orchestration.stage.pill.preview')), 1 /* TEXT */),
5120
+ _createElementVNode("div", { class: "task-stage-pill" }, _toDisplayString(_ctx.t('orchestration.stage.pill.run')), 1 /* TEXT */)
5121
+ ])
5122
+ ])
4685
5123
  ]))
4686
- ], 512 /* NEED_PATCH */)), [
5124
+ : _createCommentVNode("v-if", true)
5125
+ ], 8 /* PROPS */, ["data-active"])), [
4687
5126
  [_vShow, _ctx.mainTab === 'orchestration']
4688
5127
  ])
4689
5128
  : _createCommentVNode("v-if", true),