@tutti-os/agent-gui 0.0.33 → 0.0.35

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 (46) hide show
  1. package/README.md +5 -0
  2. package/dist/{AgentMessageMarkdown-Cp70W-Z2.d.ts → AgentMessageMarkdown-0sV8Biv3.d.ts} +53 -5
  3. package/dist/agent-conversation/index.d.ts +4 -4
  4. package/dist/agent-conversation/index.js +5 -5
  5. package/dist/agent-message-center/index.d.ts +2 -2
  6. package/dist/agent-message-center/index.js +29 -8
  7. package/dist/agent-message-center/index.js.map +1 -1
  8. package/dist/{agentConversationVM-BElW2LNR.d.ts → agentConversationVM-xuzmD5IL.d.ts} +2 -0
  9. package/dist/app/renderer/agentactivity.css +54 -128
  10. package/dist/{chunk-SGQ4C7JE.js → chunk-2ADVHCST.js} +2 -1
  11. package/dist/chunk-2ADVHCST.js.map +1 -0
  12. package/dist/{chunk-WPWZKKKV.js → chunk-3LEUGNCT.js} +2 -2
  13. package/dist/{chunk-AFTAFV2C.js → chunk-CMXRLF64.js} +85 -13
  14. package/dist/chunk-CMXRLF64.js.map +1 -0
  15. package/dist/{chunk-RDCBACWR.js → chunk-JYH2ITNL.js} +5 -5
  16. package/dist/{chunk-RQ3HEF42.js → chunk-KFMD33UD.js} +36 -12
  17. package/dist/chunk-KFMD33UD.js.map +1 -0
  18. package/dist/{chunk-ZWYHKGQ7.js → chunk-NCS7X3XY.js} +11 -9
  19. package/dist/{chunk-ZWYHKGQ7.js.map → chunk-NCS7X3XY.js.map} +1 -1
  20. package/dist/{chunk-GSZPMKFW.js → chunk-O56P2KSZ.js} +237 -26
  21. package/dist/chunk-O56P2KSZ.js.map +1 -0
  22. package/dist/{chunk-ERRANBGS.js → chunk-U3D7YI47.js} +7 -11
  23. package/dist/chunk-U3D7YI47.js.map +1 -0
  24. package/dist/{chunk-OOQIJXCA.js → chunk-UN4XGHLQ.js} +3 -2
  25. package/dist/{chunk-A4KUAXE5.js → chunk-VPC55T7P.js} +2 -2
  26. package/dist/context-mention-palette/index.js +6 -6
  27. package/dist/i18n/index.d.ts +34 -10
  28. package/dist/i18n/index.js +1 -1
  29. package/dist/index.d.ts +5 -4
  30. package/dist/index.js +1012 -477
  31. package/dist/index.js.map +1 -1
  32. package/dist/plan-decision-ops.d.ts +1 -1
  33. package/dist/workbench/contribution.js +1 -1
  34. package/dist/workbench/index.js +1 -1
  35. package/dist/workspace-agent-generated-files.js +2 -2
  36. package/dist/{workspaceLinkActions-CqWZaCY4.d.ts → workspaceLinkActions-C6POH38D.d.ts} +7 -1
  37. package/package.json +12 -12
  38. package/dist/chunk-AFTAFV2C.js.map +0 -1
  39. package/dist/chunk-ERRANBGS.js.map +0 -1
  40. package/dist/chunk-GSZPMKFW.js.map +0 -1
  41. package/dist/chunk-RQ3HEF42.js.map +0 -1
  42. package/dist/chunk-SGQ4C7JE.js.map +0 -1
  43. /package/dist/{chunk-WPWZKKKV.js.map → chunk-3LEUGNCT.js.map} +0 -0
  44. /package/dist/{chunk-RDCBACWR.js.map → chunk-JYH2ITNL.js.map} +0 -0
  45. /package/dist/{chunk-OOQIJXCA.js.map → chunk-UN4XGHLQ.js.map} +0 -0
  46. /package/dist/{chunk-A4KUAXE5.js.map → chunk-VPC55T7P.js.map} +0 -0
package/README.md CHANGED
@@ -3,6 +3,11 @@
3
3
  AgentGUI renders workspace agent sessions, timelines, approvals, and composer
4
4
  UI. It is a UI package, not a host transport or business-core package.
5
5
 
6
+ Before changing AgentGUI, AgentGuiNode, or the agent conversation module, read
7
+ [AgentGuiNode Architecture and Troubleshooting](../../../docs/architecture/agent-gui-node.md).
8
+ It records the source-of-truth rules, common chains, debugging playbooks, and
9
+ the self-evolution loop for durable lessons.
10
+
6
11
  ## Data Source
7
12
 
8
13
  `AgentActivityRuntime` is the AgentGUI source for agent activity data.
@@ -1,8 +1,18 @@
1
1
  import { AgentActivityUsage } from '@tutti-os/agent-activity-core';
2
2
  import { A as AgentHostBatchUserInfoInput, a as AgentHostBatchUserInfoResult, b as AgentHostDeleteWorkspaceAgentSessionInput, k as AgentHostWorkspaceAgentSessionSummaryInput, j as AgentHostWorkspaceAgentSessionSummary, e as AgentHostWorkspaceAgentListInput, l as AgentHostWorkspaceAgentSnapshot, i as AgentHostWorkspaceAgentSessionMessagesInput, h as AgentHostWorkspaceAgentSessionMessages, p as WorkspaceAgentActivitySyncState } from './workspaceAgentActivityListViewModel-DwpbJGDx.js';
3
- import { A as AgentApprovalItemVM, a as AgentAskUserQuestionVM, b as AgentConversationPromptVM, c as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from './agentConversationVM-BElW2LNR.js';
3
+ import { A as AgentApprovalItemVM, a as AgentAskUserQuestionVM, b as AgentConversationPromptVM, c as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from './agentConversationVM-xuzmD5IL.js';
4
4
  import { WorkspaceUserProjectService } from '@tutti-os/workspace-user-project/contracts';
5
5
 
6
+ declare const APP_ERROR_CODES: readonly ["common.invalid_input", "common.approved_path_required", "common.unavailable", "common.unexpected", "session.not_found", "control_surface.unauthorized", "workspace.select_directory_failed", "workspace.select_files_failed", "workspace.ensure_directory_failed", "workspace.import_files_failed", "workspace.read_file_failed", "workspace.write_file_failed", "workspace.export_file_failed", "workspace.copy_path_failed", "workspace.host_unsupported", "workspace.runtime_artifact_unavailable", "runtime.guest_agent_lane_unavailable", "workspace.room_full", "workspace.room_delete_forbidden", "workspace.room_delete_not_found", "filesystem.create_directory_failed", "filesystem.read_file_bytes_failed", "filesystem.read_file_text_failed", "filesystem.write_file_text_failed", "filesystem.copy_entry_failed", "filesystem.move_entry_failed", "filesystem.rename_entry_failed", "filesystem.delete_entry_failed", "filesystem.read_directory_failed", "filesystem.stat_failed", "terminal.spawn_failed", "terminal.write_failed", "terminal.resize_failed", "terminal.close_failed", "terminal.attach_failed", "terminal.detach_failed", "terminal.snapshot_failed", "agent.list_models_failed", "agent.launch_failed", "agent.read_last_message_failed", "agent.provider_session_not_found", "agent.resume_session_not_local", "agent.resume_session_resolve_failed", "agent.settings_require_new_session", "task.suggest_title_failed", "persistence.unavailable", "persistence.quota_exceeded", "persistence.payload_too_large", "persistence.io_failed", "persistence.invalid_state", "persistence.invalid_node_id", "update.get_state_failed", "update.configure_failed", "update.check_failed", "update.download_failed", "update.install_failed", "PACKAGE_DOWNLOAD_INTERRUPTED", "PACKAGE_DOWNLOAD_HTTP_STATUS", "PACKAGE_DOWNLOAD_INVALID", "PACKAGE_DOWNLOAD_DISK_ERROR"];
7
+ type AppErrorCode = (typeof APP_ERROR_CODES)[number];
8
+ type AppErrorParamValue = boolean | number | string | null;
9
+ type AppErrorParams = Record<string, AppErrorParamValue>;
10
+ interface AppErrorDescriptor {
11
+ code: AppErrorCode;
12
+ params?: AppErrorParams;
13
+ debugMessage?: string;
14
+ }
15
+
6
16
  type AgentHostAgentSessionProvider = "claude-code" | "codex" | "nexight" | "gemini" | "hermes" | "openclaw";
7
17
  type AgentHostAgentSessionPermissionModeSemantic = "ask-before-write" | "accept-edits" | "locked-down" | "auto" | "full-access" | "unconfigurable";
8
18
  type AgentHostAgentSessionReasoningEffort = "minimal" | "low" | "medium" | "high" | "xhigh" | string;
@@ -194,6 +204,37 @@ interface AgentHostListWorkspaceAgentProbesInput {
194
204
  }
195
205
  type AgentHostWorkspaceAgentProbesResult = AgentProbeSnapshot;
196
206
 
207
+ type PersistWriteLevel = "full" | "no_scrollback" | "settings_only";
208
+ type PersistWriteFailureReason = "unavailable" | "quota" | "payload_too_large" | "io" | "unknown";
209
+ type PersistWriteResult = {
210
+ ok: true;
211
+ level: PersistWriteLevel;
212
+ bytes: number;
213
+ revision?: number;
214
+ } | {
215
+ ok: false;
216
+ reason: PersistWriteFailureReason;
217
+ error: AppErrorDescriptor;
218
+ };
219
+ type WorkspaceAgentReadStateKind = "completed" | "failed";
220
+ interface WorkspaceAgentReadStateBucket {
221
+ readIds: string[];
222
+ unreadIds: string[];
223
+ }
224
+ interface WorkspaceAgentReadStateSnapshot {
225
+ completed: WorkspaceAgentReadStateBucket;
226
+ failed: WorkspaceAgentReadStateBucket;
227
+ }
228
+ interface ReadWorkspaceAgentReadStateInput {
229
+ roomId: string;
230
+ userId: string;
231
+ }
232
+ interface WriteWorkspaceAgentReadStateInput extends ReadWorkspaceAgentReadStateInput {
233
+ kind: WorkspaceAgentReadStateKind;
234
+ readIds: string[];
235
+ unreadIds: string[];
236
+ }
237
+
197
238
  interface ReadWorkspaceFileResult {
198
239
  bytes: Uint8Array;
199
240
  }
@@ -239,6 +280,10 @@ type AgentHostEnvironmentApi = AgentHostRecord & {
239
280
  getBaseUrl?: () => AgentHostAsyncResult<string>;
240
281
  warmupOpenclawGateway?: (input?: unknown) => AgentHostAsyncResult<unknown>;
241
282
  };
283
+ type AgentHostPersistenceApi = AgentHostRecord & {
284
+ readWorkspaceAgentReadState: (input: ReadWorkspaceAgentReadStateInput) => AgentHostAsyncResult<WorkspaceAgentReadStateSnapshot>;
285
+ writeWorkspaceAgentReadState: (input: WriteWorkspaceAgentReadStateInput) => AgentHostAsyncResult<PersistWriteResult>;
286
+ };
242
287
  interface AgentHostSelectedFile {
243
288
  name?: string;
244
289
  path: string;
@@ -278,6 +323,7 @@ interface AgentHostInputApi {
278
323
  filesystem: AgentHostFilesystemApi;
279
324
  meta?: AgentHostMetaApi;
280
325
  onHostEvent?: (listener: (event: any) => void) => AgentHostUnsubscribe;
326
+ persistence?: AgentHostPersistenceApi;
281
327
  runtime?: AgentHostEnvironmentApi;
282
328
  userProjects?: AgentHostUserProjectsApi;
283
329
  workspace: AgentHostWorkspaceApi;
@@ -424,6 +470,7 @@ interface AgentHostRuntimeApi {
424
470
  filesystem: AgentHostFilesystemApi;
425
471
  meta?: AgentHostMetaApi;
426
472
  onHostEvent?: (listener: (event: any) => void) => AgentHostUnsubscribe;
473
+ persistence?: AgentHostPersistenceApi;
427
474
  runtime?: AgentHostEnvironmentApi;
428
475
  userProjects?: AgentHostUserProjectsApi;
429
476
  workspace: AgentHostWorkspaceApi;
@@ -491,6 +538,7 @@ interface AgentGUIConversationSummary {
491
538
  sortTimeUnixMs?: number;
492
539
  updatedAtUnixMs: number;
493
540
  hasUnreadCompletion?: boolean;
541
+ unreadCompletionKey?: string | null;
494
542
  syncState?: WorkspaceAgentActivitySyncState;
495
543
  }
496
544
  type AgentGUIConversationStatus = "working" | "waiting" | "ready" | "completed" | "failed" | "canceled";
@@ -509,8 +557,6 @@ type AgentGUIInteractivePrompt = AgentGUIApprovalRequest | {
509
557
  kind: "plan-implementation";
510
558
  }>;
511
559
 
512
- type UsageAlertTier = "warn" | "critical";
513
-
514
560
  interface AgentGUISessionChrome {
515
561
  auth: {
516
562
  message: string;
@@ -638,14 +684,16 @@ interface AgentGUINodeViewModel {
638
684
  draftContent: AgentComposerDraft;
639
685
  isLoadingConversations: boolean;
640
686
  isLoadingMessages: boolean;
687
+ isLoadingOlderMessages: boolean;
688
+ hasOlderMessages: boolean;
641
689
  isCreatingConversation: boolean;
642
690
  isSubmitting: boolean;
643
691
  isInterrupting: boolean;
692
+ isCancelPending: boolean;
644
693
  isRespondingApproval: boolean;
645
694
  promptImagesSupported: boolean;
646
695
  compactSupported: boolean | null;
647
696
  usage: AgentActivityUsage | null;
648
- usageAlert: UsageAlertTier | null;
649
697
  /** Codex plan turn finished: offer the TUI-equivalent implement prompt. */
650
698
  listError: string | null;
651
699
  isDeletingConversation: boolean;
@@ -676,4 +724,4 @@ interface AgentMessageMarkdownWorkspaceAppIcon {
676
724
  workspaceId?: string | null;
677
725
  }
678
726
 
679
- export type { AgentGUINodeData as A, NodeFrame as N, Point as P, AgentGUINodeViewModel as a, AgentGUIProviderSkillOption as b, AgentHostActivateAgentSessionResult as c, AgentHostAgentSessionComposerSettings as d, AgentHostAgentSessionState as e, AgentHostApi as f, AgentHostInputApi as g, AgentHostRuntimeApi as h, AgentHostSelectFilesInput as i, AgentHostUnactivateAgentSessionResult as j, AgentHostUpdateAgentSessionSettingsResult as k, AgentMessageMarkdownWorkspaceAppIcon as l, AgentProbeProvider as m, AgentProbeSnapshot as n, AgentProvider as o, AgentProviderProbeListInput as p, AgentProviderProbeListResult as q, AgentUsageQuota as r, AgentUsageSnapshot as s };
727
+ export type { AgentGUINodeData as A, NodeFrame as N, PersistWriteResult as P, ReadWorkspaceAgentReadStateInput as R, WorkspaceAgentReadStateSnapshot as W, AgentGUINodeViewModel as a, AgentGUIProviderSkillOption as b, AgentHostActivateAgentSessionResult as c, AgentHostAgentSessionComposerSettings as d, AgentHostAgentSessionState as e, AgentHostApi as f, AgentHostInputApi as g, AgentHostRuntimeApi as h, AgentHostSelectFilesInput as i, AgentHostUnactivateAgentSessionResult as j, AgentHostUpdateAgentSessionSettingsResult as k, AgentMessageMarkdownWorkspaceAppIcon as l, AgentProbeProvider as m, AgentProbeSnapshot as n, AgentProvider as o, AgentProviderProbeListInput as p, AgentProviderProbeListResult as q, AgentUsageQuota as r, AgentUsageSnapshot as s, Point as t, WriteWorkspaceAgentReadStateInput as u };
@@ -1,9 +1,9 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode, JSX } from 'react';
3
- import { W as WorkspaceLinkAction } from '../workspaceLinkActions-CqWZaCY4.js';
4
- import { b as AgentGUIProviderSkillOption, l as AgentMessageMarkdownWorkspaceAppIcon } from '../AgentMessageMarkdown-Cp70W-Z2.js';
5
- import { c as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-BElW2LNR.js';
6
- export { B as BuildWorkspaceAgentSessionDetailInput, d as buildWorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-BElW2LNR.js';
3
+ import { W as WorkspaceLinkAction } from '../workspaceLinkActions-C6POH38D.js';
4
+ import { b as AgentGUIProviderSkillOption, l as AgentMessageMarkdownWorkspaceAppIcon } from '../AgentMessageMarkdown-0sV8Biv3.js';
5
+ import { c as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-xuzmD5IL.js';
6
+ export { B as BuildWorkspaceAgentSessionDetailInput, d as buildWorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-xuzmD5IL.js';
7
7
  export { W as WorkspaceAgentActivityCard, n as WorkspaceAgentActivitySession, q as WorkspaceAgentActivityTimelineItem } from '../workspaceAgentActivityListViewModel-DwpbJGDx.js';
8
8
  import '@tutti-os/workspace-issue-manager/core';
9
9
  import '@tutti-os/agent-activity-core';
@@ -6,15 +6,15 @@ import {
6
6
  projectAgentConversationVM,
7
7
  reconcileProjectedAgentConversationVM,
8
8
  useProjectedAgentConversation
9
- } from "../chunk-GSZPMKFW.js";
10
- import "../chunk-AFTAFV2C.js";
11
- import "../chunk-A4KUAXE5.js";
9
+ } from "../chunk-O56P2KSZ.js";
10
+ import "../chunk-CMXRLF64.js";
11
+ import "../chunk-VPC55T7P.js";
12
12
  import "../chunk-Y35GDLP2.js";
13
- import "../chunk-SGQ4C7JE.js";
13
+ import "../chunk-2ADVHCST.js";
14
14
  import "../chunk-TYGL25EL.js";
15
15
  import {
16
16
  translate
17
- } from "../chunk-RQ3HEF42.js";
17
+ } from "../chunk-KFMD33UD.js";
18
18
  import "../chunk-LUGELG5V.js";
19
19
  import "../chunk-PJP5BUU6.js";
20
20
 
@@ -2,9 +2,9 @@ import * as react from 'react';
2
2
  import { JSX } from 'react';
3
3
  import { I18nRuntime } from '@tutti-os/ui-i18n-runtime';
4
4
  import { useTranslation, AgentGuiI18nLocale, TranslateFn } from '../i18n/index.js';
5
- import { W as WorkspaceLinkAction } from '../workspaceLinkActions-CqWZaCY4.js';
5
+ import { W as WorkspaceLinkAction } from '../workspaceLinkActions-C6POH38D.js';
6
6
  import { AgentActivityNeedsAttentionItem, AgentActivitySnapshot } from '@tutti-os/agent-activity-core';
7
- import { b as AgentConversationPromptVM } from '../agentConversationVM-BElW2LNR.js';
7
+ import { b as AgentConversationPromptVM } from '../agentConversationVM-xuzmD5IL.js';
8
8
  import { o as WorkspaceAgentActivityStatus } from '../workspaceAgentActivityListViewModel-DwpbJGDx.js';
9
9
  export { PLAN_IMPLEMENTATION_ACTION_IMPLEMENT, PLAN_IMPLEMENTATION_PROMPT } from '../plan-decision-ops.js';
10
10
  import '@tutti-os/workspace-issue-manager/core';
@@ -3,7 +3,7 @@ import {
3
3
  approvalOptionDisplayLabel,
4
4
  getPromptToolDetails,
5
5
  isPromptRequestIdTitle
6
- } from "../chunk-RDCBACWR.js";
6
+ } from "../chunk-JYH2ITNL.js";
7
7
  import {
8
8
  PLAN_IMPLEMENTATION_ACTION_IMPLEMENT,
9
9
  PLAN_IMPLEMENTATION_PROMPT,
@@ -16,17 +16,17 @@ import {
16
16
  cn,
17
17
  extractAgentMcpToolTarget,
18
18
  normalizeAskUserQuestions
19
- } from "../chunk-AFTAFV2C.js";
19
+ } from "../chunk-CMXRLF64.js";
20
20
  import {
21
21
  managedAgentRoundedIconUrl,
22
22
  userAvatarPlaceholderUrl,
23
23
  workspaceAgentActivityStatusLabel
24
- } from "../chunk-WPWZKKKV.js";
24
+ } from "../chunk-3LEUGNCT.js";
25
25
  import "../chunk-MTFSQWZ6.js";
26
26
  import {
27
27
  resolveWorkspaceAgentSessionSortTimeUnixMs
28
28
  } from "../chunk-IBIMGLCD.js";
29
- import "../chunk-SGQ4C7JE.js";
29
+ import "../chunk-2ADVHCST.js";
30
30
  import {
31
31
  workspaceAgentProviderLabel
32
32
  } from "../chunk-TYGL25EL.js";
@@ -36,7 +36,7 @@ import {
36
36
  import {
37
37
  AgentGuiI18nProvider,
38
38
  useTranslation
39
- } from "../chunk-RQ3HEF42.js";
39
+ } from "../chunk-KFMD33UD.js";
40
40
  import "../chunk-PJP5BUU6.js";
41
41
 
42
42
  // agent-message-center/WorkspaceAgentMessageCenterPanel.tsx
@@ -963,6 +963,7 @@ var WorkspaceAgentMessageCenterCard = memo(
963
963
  const displayTitle = normalizeAgentTitleText(item.title);
964
964
  const summary = messageCenterVisibleSummary(item);
965
965
  const displayStatus = statusClass(item);
966
+ const statusTone = messageCenterStatusTone(item);
966
967
  const statusLabel = workspaceAgentActivityStatusLabel(displayStatus, t);
967
968
  return /* @__PURE__ */ jsxs(
968
969
  "article",
@@ -1004,14 +1005,17 @@ var WorkspaceAgentMessageCenterCard = memo(
1004
1005
  /* @__PURE__ */ jsxs(
1005
1006
  "span",
1006
1007
  {
1007
- className: "workspace-agent-message-center__status inline-flex shrink-0 items-center gap-1.5 text-[11px] font-semibold leading-4 text-[var(--text-secondary)]",
1008
+ className: cn2(
1009
+ "workspace-agent-message-center__status inline-flex shrink-0 items-center gap-1.5 text-[11px] font-semibold leading-4",
1010
+ messageCenterStatusToneClass(statusTone)
1011
+ ),
1008
1012
  "data-status": displayStatus,
1009
1013
  title: statusLabel,
1010
1014
  children: [
1011
1015
  /* @__PURE__ */ jsx2(
1012
1016
  StatusDot,
1013
1017
  {
1014
- tone: messageCenterStatusTone(item),
1018
+ tone: statusTone,
1015
1019
  pulse: isWaitingMessageCenterItem(item) || item.status === "working",
1016
1020
  size: "sm",
1017
1021
  title: statusLabel
@@ -1859,6 +1863,20 @@ function messageCenterStatusTone(item) {
1859
1863
  }
1860
1864
  return "neutral";
1861
1865
  }
1866
+ function messageCenterStatusToneClass(tone) {
1867
+ switch (tone) {
1868
+ case "amber":
1869
+ return "text-[var(--state-warning)]";
1870
+ case "blue":
1871
+ return "text-[var(--status-running)]";
1872
+ case "green":
1873
+ return "text-[var(--state-success)]";
1874
+ case "red":
1875
+ return "text-[var(--state-danger)]";
1876
+ case "neutral":
1877
+ return "text-[var(--text-secondary)]";
1878
+ }
1879
+ }
1862
1880
 
1863
1881
  // agent-message-center/WorkspaceAgentMessageCenterAttentionDeck.tsx
1864
1882
  import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
@@ -3020,7 +3038,10 @@ function MessageCenterGroupHeading({
3020
3038
  return /* @__PURE__ */ jsxs4(
3021
3039
  "h3",
3022
3040
  {
3023
- className: "flex min-w-0 items-center gap-1.5 text-[11px] font-normal leading-4 text-[var(--text-tertiary)]",
3041
+ className: cn5(
3042
+ "flex min-w-0 items-center gap-1.5 text-[11px] font-normal leading-4",
3043
+ statusSignal ? messageCenterStatusToneClass(statusSignal.tone) : "text-[var(--text-tertiary)]"
3044
+ ),
3024
3045
  title: `${group.label} \xB7 ${group.items.length}`,
3025
3046
  children: [
3026
3047
  statusSignal ? /* @__PURE__ */ jsx5(