@tutti-os/agent-gui 0.0.63 → 0.0.65

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 (88) hide show
  1. package/dist/agent-conversation/index.d.ts +2 -2
  2. package/dist/agent-conversation/index.js +7 -7
  3. package/dist/agent-env/index.js +2 -1
  4. package/dist/agent-env/index.js.map +1 -1
  5. package/dist/agent-message-center/index.js +9 -9
  6. package/dist/{agentGuiNodeTypes-CC52zXAV.d.ts → agentGuiNodeTypes-CCjzXdTe.d.ts} +4 -1
  7. package/dist/app/renderer/agentactivity.css +41 -7
  8. package/dist/app/renderer/assets/icons/agents/agent-colorful.png +0 -0
  9. package/dist/app/renderer/assets/icons/agents/cursor-colorful.png +0 -0
  10. package/dist/app/renderer/assets/icons/agents/cursor-flat-filled.svg +3 -0
  11. package/dist/app/renderer/assets/icons/agents/cursor-rounded.png +0 -0
  12. package/dist/{chunk-IIVHPXAB.js → chunk-2IMBPRKV.js} +1 -1
  13. package/dist/chunk-2IMBPRKV.js.map +1 -0
  14. package/dist/{chunk-6MUKWI6Z.js → chunk-6OYLLPPN.js} +167 -113
  15. package/dist/chunk-6OYLLPPN.js.map +1 -0
  16. package/dist/{chunk-22L4VWUR.js → chunk-CKCUEHBW.js} +3 -1
  17. package/dist/chunk-CKCUEHBW.js.map +1 -0
  18. package/dist/{chunk-NZN43XT5.js → chunk-DL6BMEHI.js} +8 -6
  19. package/dist/chunk-DL6BMEHI.js.map +1 -0
  20. package/dist/{chunk-G6UO6JVM.js → chunk-EIPQGFAE.js} +2 -2
  21. package/dist/{chunk-SGXYVGQT.js → chunk-HKKC2U6J.js} +5 -5
  22. package/dist/{chunk-SW6JCJCO.js → chunk-IDTB6OID.js} +3 -3
  23. package/dist/{chunk-5WB3NGIN.js → chunk-LJE2W4EM.js} +27 -2
  24. package/dist/chunk-LJE2W4EM.js.map +1 -0
  25. package/dist/{chunk-K4UUEG7X.js → chunk-LQHYHF36.js} +115 -36
  26. package/dist/chunk-LQHYHF36.js.map +1 -0
  27. package/dist/{chunk-FRCIPTUD.js → chunk-N4I3TD4G.js} +8 -18
  28. package/dist/chunk-N4I3TD4G.js.map +1 -0
  29. package/dist/{chunk-QC642RAG.js → chunk-N7BGNAA2.js} +15 -8
  30. package/dist/chunk-N7BGNAA2.js.map +1 -0
  31. package/dist/{chunk-3KS22CG2.js → chunk-P5C3ED3V.js} +5 -4
  32. package/dist/chunk-P5C3ED3V.js.map +1 -0
  33. package/dist/{chunk-7P6CUYQT.js → chunk-QULZNKPA.js} +2 -2
  34. package/dist/{chunk-V4JGVBUN.js → chunk-R2NGSPQS.js} +32 -1
  35. package/dist/chunk-R2NGSPQS.js.map +1 -0
  36. package/dist/{chunk-ZUVEBW5T.js → chunk-R7PSPKBD.js} +2 -2
  37. package/dist/{chunk-4UTWOSHP.js → chunk-UI3YDJTC.js} +43 -5
  38. package/dist/chunk-UI3YDJTC.js.map +1 -0
  39. package/dist/{chunk-RO6KQD3J.js → chunk-UWBX3DZK.js} +2 -2
  40. package/dist/{chunk-CVSCZ3CK.js → chunk-W3Q7B3DV.js} +7 -2
  41. package/dist/chunk-W3Q7B3DV.js.map +1 -0
  42. package/dist/{chunk-CA25GD5Q.js → chunk-XLBJHHDX.js} +38 -6
  43. package/dist/chunk-XLBJHHDX.js.map +1 -0
  44. package/dist/{chunk-FQQDBBNI.js → chunk-XZPAU7FC.js} +3 -3
  45. package/dist/context-mention-palette/index.js +8 -8
  46. package/dist/i18n/index.d.ts +37 -5
  47. package/dist/i18n/index.js +2 -2
  48. package/dist/index.d.ts +25 -6
  49. package/dist/index.js +1093 -425
  50. package/dist/index.js.map +1 -1
  51. package/dist/queued-prompt-runtime.d.ts +2 -2
  52. package/dist/{types-DSc2ta3s.d.ts → types-BAPEle8b.d.ts} +3 -3
  53. package/dist/workbench/contribution.d.ts +10 -3
  54. package/dist/workbench/contribution.js +10 -8
  55. package/dist/workbench/index.d.ts +4 -2
  56. package/dist/workbench/index.js +11 -11
  57. package/dist/workbench/launch.d.ts +3 -1
  58. package/dist/workbench/launch.js +3 -3
  59. package/dist/workbench/providerCatalog.d.ts +2 -2
  60. package/dist/workbench/providerCatalog.js +1 -1
  61. package/dist/workbench/sessionTitle.d.ts +1 -1
  62. package/dist/workbench/sessionTitle.js +3 -3
  63. package/dist/workbench/state.d.ts +1 -1
  64. package/dist/workbench/state.js +3 -3
  65. package/dist/workbench/types.d.ts +3 -2
  66. package/dist/workbench/types.js +1 -1
  67. package/dist/workspace-agent-generated-files.js +3 -3
  68. package/package.json +12 -12
  69. package/dist/chunk-22L4VWUR.js.map +0 -1
  70. package/dist/chunk-3KS22CG2.js.map +0 -1
  71. package/dist/chunk-4UTWOSHP.js.map +0 -1
  72. package/dist/chunk-5WB3NGIN.js.map +0 -1
  73. package/dist/chunk-6MUKWI6Z.js.map +0 -1
  74. package/dist/chunk-CA25GD5Q.js.map +0 -1
  75. package/dist/chunk-CVSCZ3CK.js.map +0 -1
  76. package/dist/chunk-FRCIPTUD.js.map +0 -1
  77. package/dist/chunk-IIVHPXAB.js.map +0 -1
  78. package/dist/chunk-K4UUEG7X.js.map +0 -1
  79. package/dist/chunk-NZN43XT5.js.map +0 -1
  80. package/dist/chunk-QC642RAG.js.map +0 -1
  81. package/dist/chunk-V4JGVBUN.js.map +0 -1
  82. /package/dist/{chunk-G6UO6JVM.js.map → chunk-EIPQGFAE.js.map} +0 -0
  83. /package/dist/{chunk-SGXYVGQT.js.map → chunk-HKKC2U6J.js.map} +0 -0
  84. /package/dist/{chunk-SW6JCJCO.js.map → chunk-IDTB6OID.js.map} +0 -0
  85. /package/dist/{chunk-7P6CUYQT.js.map → chunk-QULZNKPA.js.map} +0 -0
  86. /package/dist/{chunk-ZUVEBW5T.js.map → chunk-R7PSPKBD.js.map} +0 -0
  87. /package/dist/{chunk-RO6KQD3J.js.map → chunk-UWBX3DZK.js.map} +0 -0
  88. /package/dist/{chunk-FQQDBBNI.js.map → chunk-XZPAU7FC.js.map} +0 -0
@@ -15,7 +15,7 @@ import {
15
15
  resolveWorkspaceFilePathCandidate,
16
16
  resolveWorkspaceLinkAction,
17
17
  useAgentTargetPresentations
18
- } from "./chunk-SW6JCJCO.js";
18
+ } from "./chunk-IDTB6OID.js";
19
19
  import {
20
20
  classifyFailedAgentMessage,
21
21
  openAgentEnvPanel,
@@ -28,7 +28,7 @@ import {
28
28
  formatAgentMentionMarkdown,
29
29
  mentionItemToAttrs,
30
30
  parseAgentMentionMarkdown
31
- } from "./chunk-FQQDBBNI.js";
31
+ } from "./chunk-XZPAU7FC.js";
32
32
  import {
33
33
  fileChangeCountFromChanges,
34
34
  fileChangeEntriesFromChanges,
@@ -38,14 +38,14 @@ import {
38
38
  import {
39
39
  getOptionalAgentActivityRuntime,
40
40
  useOptionalAgentHostApi
41
- } from "./chunk-FRCIPTUD.js";
41
+ } from "./chunk-N4I3TD4G.js";
42
42
  import {
43
43
  workspaceAgentProviderLabel
44
44
  } from "./chunk-TYGL25EL.js";
45
45
  import {
46
46
  getActiveUiLanguage,
47
47
  translate
48
- } from "./chunk-RO6KQD3J.js";
48
+ } from "./chunk-UWBX3DZK.js";
49
49
 
50
50
  // shared/workspaceAgentTimelineCanonical.ts
51
51
  import { isLiveTurnLifecyclePhase } from "@tutti-os/agent-activity-core";
@@ -228,6 +228,83 @@ function stringRecordValue(record, key) {
228
228
  return typeof value === "string" && value.trim() ? value.trim() : void 0;
229
229
  }
230
230
 
231
+ // shared/workspaceAgentToolCallLabels.ts
232
+ var TOOL_ACTIVITY_KIND_TRANSLATION_KEYS = {
233
+ run_command: "agentHost.agentTool.labels.runCommand",
234
+ read_file: "agentHost.agentTool.labels.readFile",
235
+ write_file: "agentHost.agentTool.labels.writeFile",
236
+ edit_file: "agentHost.agentTool.labels.editFile",
237
+ list_files: "agentHost.agentTool.labels.listFiles",
238
+ search_files: "agentHost.agentTool.labels.searchFiles",
239
+ web_search: "agentHost.agentTool.labels.webSearch",
240
+ web_fetch: "agentHost.agentTool.labels.webFetch",
241
+ apply_patch: "agentHost.agentTool.labels.applyPatch",
242
+ use_tool: "agentHost.agentTool.labels.useTool",
243
+ find_files: "agentHost.agentTool.labels.findFiles",
244
+ read_command_output: "agentHost.agentTool.labels.readCommandOutput",
245
+ stop_command: "agentHost.agentTool.labels.stopCommand",
246
+ read_notebook: "agentHost.agentTool.labels.readNotebook",
247
+ edit_notebook: "agentHost.agentTool.labels.editNotebook",
248
+ update_todos: "agentHost.agentTool.labels.updateTodos",
249
+ delegate_agent: "agentHost.agentTool.labels.delegateAgent",
250
+ thinking: "agentHost.agentTool.labels.thinking",
251
+ responding: "agentHost.agentTool.labels.responding",
252
+ notification: "agentHost.agentTool.labels.notification"
253
+ };
254
+ var AGENT_ACTIVITY_KINDS = /* @__PURE__ */ new Set([
255
+ "thinking",
256
+ "responding",
257
+ "notification"
258
+ ]);
259
+ var TOOL_NAME_TRANSLATION_KEYS = {
260
+ bash: "agentHost.agentTool.labels.runCommand",
261
+ read: "agentHost.agentTool.labels.readFile",
262
+ write: "agentHost.agentTool.labels.writeFile",
263
+ edit: "agentHost.agentTool.labels.editFile",
264
+ glob: "agentHost.agentTool.labels.findFiles",
265
+ grep: "agentHost.agentTool.labels.searchFiles",
266
+ websearch: "agentHost.agentTool.labels.webSearch",
267
+ webfetch: "agentHost.agentTool.labels.webFetch",
268
+ todowrite: "agentHost.agentTool.labels.updateTodos",
269
+ task: "agentHost.agentTool.labels.delegateAgent",
270
+ currenttask: "agentHost.agentTool.labels.currentIssue",
271
+ agent: "agentHost.agentTool.labels.delegateAgent",
272
+ closeagent: "agentHost.agentTool.labels.closeAgent",
273
+ wait: "agentHost.agentTool.labels.waitAgent"
274
+ };
275
+ function legacyKindToToolName(kind) {
276
+ switch (kind) {
277
+ case "run_command":
278
+ case "read_command_output":
279
+ case "stop_command":
280
+ return "Bash";
281
+ case "read_file":
282
+ case "read_notebook":
283
+ case "list_files":
284
+ return "Read";
285
+ case "write_file":
286
+ return "Write";
287
+ case "edit_file":
288
+ case "edit_notebook":
289
+ case "apply_patch":
290
+ return "Edit";
291
+ case "find_files":
292
+ return "Glob";
293
+ case "search_files":
294
+ return "Grep";
295
+ case "web_search":
296
+ return "WebSearch";
297
+ case "web_fetch":
298
+ return "WebFetch";
299
+ case "update_todos":
300
+ return "TodoWrite";
301
+ case "delegate_agent":
302
+ return "Task";
303
+ default:
304
+ return null;
305
+ }
306
+ }
307
+
231
308
  // shared/workspaceAgentToolCallCanonical.ts
232
309
  function resolveCanonicalToolName(toolName) {
233
310
  const normalized = normalizeToolNameToken2(toolName);
@@ -280,9 +357,16 @@ function resolveCanonicalToolName(toolName) {
280
357
  case "agent":
281
358
  return "Agent";
282
359
  default:
283
- return null;
360
+ return resolveLegacySnakeCaseToolName(toolName);
284
361
  }
285
362
  }
363
+ function resolveLegacySnakeCaseToolName(toolName) {
364
+ const trimmed = toolName?.trim() ?? "";
365
+ if (!trimmed || !(trimmed in TOOL_ACTIVITY_KIND_TRANSLATION_KEYS)) {
366
+ return null;
367
+ }
368
+ return legacyKindToToolName(trimmed);
369
+ }
286
370
  function resolveLiveCanonicalToolName(item, rawPayloadToolName, legacyACPToolName) {
287
371
  const itemName = (item.name ?? "").trim();
288
372
  if (rawPayloadToolName && looksLikeOpaqueToolCallID(rawPayloadToolName, item)) {
@@ -383,7 +467,7 @@ function stringPayloadValue(value, key) {
383
467
  }
384
468
 
385
469
  // shared/workspaceAgentToolCallAgentActivity.ts
386
- var AGENT_ACTIVITY_KINDS = /* @__PURE__ */ new Set([
470
+ var AGENT_ACTIVITY_KINDS2 = /* @__PURE__ */ new Set([
387
471
  "thinking",
388
472
  "responding",
389
473
  "notification"
@@ -402,7 +486,7 @@ function isAgentActivityTimelineItem(item) {
402
486
  stringRecordValue2(metadata, "activity_kind")
403
487
  )
404
488
  );
405
- if (AGENT_ACTIVITY_KINDS.has(normalizedKind)) {
489
+ if (AGENT_ACTIVITY_KINDS2.has(normalizedKind)) {
406
490
  return true;
407
491
  }
408
492
  const normalizedName = (item.name ?? "").trim().toLowerCase().replace(/[.\-\s]+/gu, "_");
@@ -434,83 +518,6 @@ function firstPresentString2(...values) {
434
518
  ) ?? "";
435
519
  }
436
520
 
437
- // shared/workspaceAgentToolCallLabels.ts
438
- var TOOL_ACTIVITY_KIND_TRANSLATION_KEYS = {
439
- run_command: "agentHost.agentTool.labels.runCommand",
440
- read_file: "agentHost.agentTool.labels.readFile",
441
- write_file: "agentHost.agentTool.labels.writeFile",
442
- edit_file: "agentHost.agentTool.labels.editFile",
443
- list_files: "agentHost.agentTool.labels.listFiles",
444
- search_files: "agentHost.agentTool.labels.searchFiles",
445
- web_search: "agentHost.agentTool.labels.webSearch",
446
- web_fetch: "agentHost.agentTool.labels.webFetch",
447
- apply_patch: "agentHost.agentTool.labels.applyPatch",
448
- use_tool: "agentHost.agentTool.labels.useTool",
449
- find_files: "agentHost.agentTool.labels.findFiles",
450
- read_command_output: "agentHost.agentTool.labels.readCommandOutput",
451
- stop_command: "agentHost.agentTool.labels.stopCommand",
452
- read_notebook: "agentHost.agentTool.labels.readNotebook",
453
- edit_notebook: "agentHost.agentTool.labels.editNotebook",
454
- update_todos: "agentHost.agentTool.labels.updateTodos",
455
- delegate_agent: "agentHost.agentTool.labels.delegateAgent",
456
- thinking: "agentHost.agentTool.labels.thinking",
457
- responding: "agentHost.agentTool.labels.responding",
458
- notification: "agentHost.agentTool.labels.notification"
459
- };
460
- var AGENT_ACTIVITY_KINDS2 = /* @__PURE__ */ new Set([
461
- "thinking",
462
- "responding",
463
- "notification"
464
- ]);
465
- var TOOL_NAME_TRANSLATION_KEYS = {
466
- bash: "agentHost.agentTool.labels.runCommand",
467
- read: "agentHost.agentTool.labels.readFile",
468
- write: "agentHost.agentTool.labels.writeFile",
469
- edit: "agentHost.agentTool.labels.editFile",
470
- glob: "agentHost.agentTool.labels.findFiles",
471
- grep: "agentHost.agentTool.labels.searchFiles",
472
- websearch: "agentHost.agentTool.labels.webSearch",
473
- webfetch: "agentHost.agentTool.labels.webFetch",
474
- todowrite: "agentHost.agentTool.labels.updateTodos",
475
- task: "agentHost.agentTool.labels.delegateAgent",
476
- currenttask: "agentHost.agentTool.labels.currentIssue",
477
- agent: "agentHost.agentTool.labels.delegateAgent",
478
- closeagent: "agentHost.agentTool.labels.closeAgent",
479
- wait: "agentHost.agentTool.labels.waitAgent"
480
- };
481
- function legacyKindToToolName(kind) {
482
- switch (kind) {
483
- case "run_command":
484
- case "read_command_output":
485
- case "stop_command":
486
- return "Bash";
487
- case "read_file":
488
- case "read_notebook":
489
- case "list_files":
490
- return "Read";
491
- case "write_file":
492
- return "Write";
493
- case "edit_file":
494
- case "edit_notebook":
495
- case "apply_patch":
496
- return "Edit";
497
- case "find_files":
498
- return "Glob";
499
- case "search_files":
500
- return "Grep";
501
- case "web_search":
502
- return "WebSearch";
503
- case "web_fetch":
504
- return "WebFetch";
505
- case "update_todos":
506
- return "TodoWrite";
507
- case "delegate_agent":
508
- return "Task";
509
- default:
510
- return null;
511
- }
512
- }
513
-
514
521
  // shared/workspaceAgentToolCallDisplay.ts
515
522
  function isWorkspaceAgentToolCallItem(item) {
516
523
  const itemType = item.itemType.trim().toLowerCase();
@@ -626,7 +633,7 @@ function resolveLegacyToolName(item) {
626
633
  const metadata = recordValue3(item.payload, "metadata");
627
634
  const rawKind = stringRecordValue3(item.payload, "activityKind") ?? stringRecordValue3(item.payload, "activity_kind") ?? stringRecordValue3(metadata, "activityKind") ?? stringRecordValue3(metadata, "activity_kind");
628
635
  const normalizedKind = normalizeToolToken2(rawKind);
629
- if (AGENT_ACTIVITY_KINDS2.has(normalizedKind)) {
636
+ if (AGENT_ACTIVITY_KINDS.has(normalizedKind)) {
630
637
  return null;
631
638
  }
632
639
  if (isToolActivityKind(normalizedKind)) {
@@ -5385,6 +5392,10 @@ function selectPendingApproval(rows) {
5385
5392
  continue;
5386
5393
  }
5387
5394
  for (const call of toolCallsFromRow(row).reverse()) {
5395
+ const nestedApproval = pendingApprovalFromNestedTask(call);
5396
+ if (nestedApproval) {
5397
+ return nestedApproval;
5398
+ }
5388
5399
  const approval = call.approval ?? fallbackApprovalFromCall(call);
5389
5400
  if (approval && normalizeApprovalPendingStatus(
5390
5401
  approval.status ?? call.status,
@@ -5396,41 +5407,81 @@ function selectPendingApproval(rows) {
5396
5407
  }
5397
5408
  return null;
5398
5409
  }
5410
+ function pendingApprovalFromNestedTask(call) {
5411
+ if (!call.task) {
5412
+ return null;
5413
+ }
5414
+ for (const step of [...call.task.steps].reverse()) {
5415
+ const stepCall = step.tool;
5416
+ if (!stepCall) {
5417
+ continue;
5418
+ }
5419
+ const nestedApproval = pendingApprovalFromNestedTask(stepCall);
5420
+ if (nestedApproval) {
5421
+ return nestedApproval;
5422
+ }
5423
+ const approval = stepCall.approval ?? fallbackApprovalFromCall(stepCall);
5424
+ if (approval && normalizeApprovalPendingStatus(
5425
+ approval.status ?? stepCall.status,
5426
+ stepCall.statusKind
5427
+ ) && !approval.output) {
5428
+ return approval;
5429
+ }
5430
+ }
5431
+ return null;
5432
+ }
5399
5433
  function selectPendingInteractivePrompt(rows) {
5400
5434
  for (const row of [...rows].reverse()) {
5401
5435
  if (row.kind !== "tool-group") {
5402
5436
  continue;
5403
5437
  }
5404
5438
  for (const call of toolCallsFromRow(row).reverse()) {
5405
- if (call.askUserQuestion && normalizeInteractivePendingStatus(
5406
- call.askUserQuestion.status ?? call.status,
5407
- call.statusKind
5408
- ) && call.askUserQuestion.questions.some(
5409
- (question) => question.answer === null
5410
- )) {
5411
- return {
5412
- kind: "ask-user",
5413
- requestId: call.askUserQuestion.requestId,
5414
- title: call.askUserQuestion.title,
5415
- questions: call.askUserQuestion.questions
5416
- };
5417
- }
5418
- if (call.planMode?.kind === "exit" && normalizeInteractivePendingStatus(
5419
- call.planMode.status ?? call.status,
5420
- call.statusKind
5421
- )) {
5422
- return {
5423
- kind: "exit-plan",
5424
- requestId: call.planMode.requestId ?? call.id.replace(/^call:/, ""),
5425
- title: call.planMode.title,
5426
- options: call.planMode.options ?? [],
5427
- ...call.planMode.keepPlanningOptionId ? { keepPlanningOptionId: call.planMode.keepPlanningOptionId } : {}
5428
- };
5439
+ const prompt = pendingInteractivePromptFromCall(call);
5440
+ if (prompt) {
5441
+ return prompt;
5429
5442
  }
5430
5443
  }
5431
5444
  }
5432
5445
  return null;
5433
5446
  }
5447
+ function pendingInteractivePromptFromCall(call) {
5448
+ if (call.askUserQuestion && normalizeInteractivePendingStatus(
5449
+ call.askUserQuestion.status ?? call.status,
5450
+ call.statusKind
5451
+ ) && call.askUserQuestion.questions.some((question) => question.answer === null)) {
5452
+ return {
5453
+ kind: "ask-user",
5454
+ requestId: call.askUserQuestion.requestId,
5455
+ title: call.askUserQuestion.title,
5456
+ questions: call.askUserQuestion.questions
5457
+ };
5458
+ }
5459
+ if (call.planMode?.kind === "exit" && normalizeInteractivePendingStatus(
5460
+ call.planMode.status ?? call.status,
5461
+ call.statusKind
5462
+ )) {
5463
+ return {
5464
+ kind: "exit-plan",
5465
+ requestId: call.planMode.requestId ?? call.id.replace(/^call:/, ""),
5466
+ title: call.planMode.title,
5467
+ options: call.planMode.options ?? [],
5468
+ ...call.planMode.keepPlanningOptionId ? { keepPlanningOptionId: call.planMode.keepPlanningOptionId } : {}
5469
+ };
5470
+ }
5471
+ if (!call.task) {
5472
+ return null;
5473
+ }
5474
+ for (const step of [...call.task.steps].reverse()) {
5475
+ if (!step.tool) {
5476
+ continue;
5477
+ }
5478
+ const prompt = pendingInteractivePromptFromCall(step.tool);
5479
+ if (prompt) {
5480
+ return prompt;
5481
+ }
5482
+ }
5483
+ return null;
5484
+ }
5434
5485
  function toolCallsFromRow(row) {
5435
5486
  return row.calls.length > 0 ? [...row.calls] : row.entries.flatMap(
5436
5487
  (entry) => entry.kind === "tool-call" ? [entry.call] : []
@@ -10820,7 +10871,7 @@ function fileNameFromPath2(path) {
10820
10871
  }
10821
10872
  function flatLineClassName(kind) {
10822
10873
  if (kind === "add") {
10823
- return "agent-tool-diff__line grid grid-cols-[48px_minmax(0,1fr)] border-l-[2px] border-l-[var(--state-success)] font-[var(--tsh-font-mono)] text-[11px] leading-6";
10874
+ return "grid grid-cols-[48px_minmax(0,1fr)] border-l-[2px] border-l-[var(--state-success)] bg-[color:color-mix(in_srgb,var(--state-success)_10%,transparent)] font-[var(--tsh-font-mono)] text-[11px] leading-6";
10824
10875
  }
10825
10876
  if (kind === "remove") {
10826
10877
  return "grid grid-cols-[48px_minmax(0,1fr)] border-l-[2px] border-l-[var(--state-danger)] bg-[color:color-mix(in_srgb,var(--state-danger)_10%,transparent)] font-[var(--tsh-font-mono)] text-[11px] leading-6";
@@ -12889,8 +12940,11 @@ function subAgentStatusLabel(status) {
12889
12940
  return translate("agentHost.agentTool.statusWorking");
12890
12941
  }
12891
12942
  }
12943
+ function isSubAgentActivelyRunning(subAgent) {
12944
+ return subAgent.status === "running" && !subAgent.queued;
12945
+ }
12892
12946
  function useRunningSubAgentNowUnixMs(subAgent) {
12893
- const shouldTick = subAgent.status === "running" && typeof subAgent.startedAtUnixMs === "number";
12947
+ const shouldTick = isSubAgentActivelyRunning(subAgent) && typeof subAgent.startedAtUnixMs === "number";
12894
12948
  const [nowUnixMs, setNowUnixMs] = useState14(
12895
12949
  () => shouldTick ? Date.now() : null
12896
12950
  );
@@ -12913,7 +12967,7 @@ function subAgentElapsedText(subAgent, runningNowUnixMs) {
12913
12967
  }
12914
12968
  const terminal = subAgent.terminalAtUnixMs;
12915
12969
  const latest = subAgent.latestActivityAtUnixMs;
12916
- const ended = typeof terminal === "number" ? terminal : subAgent.status === "running" && typeof runningNowUnixMs === "number" ? Math.max(latest ?? started, runningNowUnixMs) : latest;
12970
+ const ended = typeof terminal === "number" ? terminal : isSubAgentActivelyRunning(subAgent) && typeof runningNowUnixMs === "number" ? Math.max(latest ?? started, runningNowUnixMs) : latest;
12917
12971
  if (typeof ended !== "number" || ended <= started) {
12918
12972
  return null;
12919
12973
  }
@@ -15053,4 +15107,4 @@ export {
15053
15107
  AgentConversationFlow,
15054
15108
  useProjectedAgentConversation
15055
15109
  };
15056
- //# sourceMappingURL=chunk-6MUKWI6Z.js.map
15110
+ //# sourceMappingURL=chunk-6OYLLPPN.js.map