@tutti-os/agent-gui 0.0.50 → 0.0.51

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.
@@ -6,8 +6,8 @@ import {
6
6
  projectAgentConversationVM,
7
7
  reconcileProjectedAgentConversationVM,
8
8
  useProjectedAgentConversation
9
- } from "../chunk-RPXRNKU5.js";
10
- import "../chunk-VKP5ZW5O.js";
9
+ } from "../chunk-23YM25SG.js";
10
+ import "../chunk-RKZMETSQ.js";
11
11
  import "../chunk-UUY5VEK4.js";
12
12
  import "../chunk-Y35GDLP2.js";
13
13
  import "../chunk-LUGELG5V.js";
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
- import { JSX } from 'react';
2
+ import { JSX, ReactNode, HTMLAttributes } from 'react';
3
3
  import { I18nRuntime } from '@tutti-os/ui-i18n-runtime';
4
- import { useTranslation, AgentGuiI18nLocale, TranslateFn } from '../i18n/index.js';
4
+ import { TranslateFn, useTranslation, AgentGuiI18nLocale } from '../i18n/index.js';
5
5
  import { W as WorkspaceLinkAction } from '../workspaceLinkActions-C6POH38D.js';
6
6
  import { AgentActivityNeedsAttentionItem, AgentActivitySnapshot } from '@tutti-os/agent-activity-core';
7
7
  import { b as AgentConversationPromptVM } from '../agentConversationVM-Qbz9GBwR.js';
@@ -76,14 +76,68 @@ interface WorkspaceAgentMessageCenterPromptFallbackLabels {
76
76
  }
77
77
  declare function buildWorkspaceAgentMessageCenterModel(snapshot: AgentActivitySnapshot, options?: BuildWorkspaceAgentMessageCenterOptions): WorkspaceAgentMessageCenterModel;
78
78
  declare function isWaitingMessageCenterItem(item: WorkspaceAgentMessageCenterItem): boolean;
79
+ declare function isInteractiveMessageCenterItem(item: WorkspaceAgentMessageCenterItem): boolean;
80
+ declare function selectMessageCenterAttentionDeckItems(items: readonly WorkspaceAgentMessageCenterItem[]): WorkspaceAgentMessageCenterItem[];
81
+
82
+ type MessageCenterGroupBy = "priority" | "status" | "agent" | "time";
83
+ type MessageCenterStatusFilter = "waiting" | "working" | "completed" | "failed";
84
+ type MessageCenterTranslate = TranslateFn;
85
+ interface MessageCenterStatusOption {
86
+ count: number;
87
+ label: string;
88
+ value: MessageCenterStatusFilter;
89
+ }
90
+ interface MessageCenterProviderOption {
91
+ count: number;
92
+ label: string;
93
+ value: string;
94
+ }
95
+ interface MessageCenterGroup {
96
+ id: string;
97
+ identity?: WorkspaceAgentMessageCenterIdentity | null;
98
+ label: string;
99
+ items: WorkspaceAgentMessageCenterItem[];
100
+ provider?: string;
101
+ userId?: string | null;
102
+ }
103
+ interface MessageCenterAgentUserStack {
104
+ id: string;
105
+ provider: string;
106
+ userId: string | null;
107
+ items: WorkspaceAgentMessageCenterItem[];
108
+ }
109
+ declare function partitionMessageCenterItemsByAgentUser(items: readonly WorkspaceAgentMessageCenterItem[]): MessageCenterAgentUserStack[];
110
+ declare function messageCenterAgentUserStackId(item: Pick<WorkspaceAgentMessageCenterItem, "provider" | "userId">): string;
111
+ declare function messageCenterStackRenderId(groupId: string, stackId: string): string;
112
+ declare function messageCenterStackScrollSyncSegment({ expanded, groupId, stack }: {
113
+ expanded: boolean;
114
+ groupId: string;
115
+ stack: MessageCenterAgentUserStack;
116
+ }): string;
117
+ declare function buildMessageCenterStatusOptions(counts: WorkspaceAgentMessageCenterModel["counts"], t: MessageCenterTranslate): MessageCenterStatusOption[];
118
+ declare function buildMessageCenterProviderOptions(items: readonly WorkspaceAgentMessageCenterItem[]): MessageCenterProviderOption[];
119
+ declare function itemMatchesViewFilters({ item, providerFilters, statusFilters }: {
120
+ item: WorkspaceAgentMessageCenterItem;
121
+ providerFilters: Set<string> | null;
122
+ statusFilters: Set<MessageCenterStatusFilter> | null;
123
+ }): boolean;
124
+ declare function messageCenterStatusFilterValue(item: WorkspaceAgentMessageCenterItem): MessageCenterStatusFilter;
125
+ declare function groupMessageCenterItems(items: readonly WorkspaceAgentMessageCenterItem[], groupBy: MessageCenterGroupBy, t: MessageCenterTranslate): MessageCenterGroup[];
126
+ declare function isRecentlyCompletedMessageCenterItem(item: WorkspaceAgentMessageCenterItem, nowUnixMs: number): boolean;
127
+ declare function messageCenterGroupLabel(groupBy: MessageCenterGroupBy, t: MessageCenterTranslate): string;
128
+ declare function statusFilterSummary(statusFilters: Set<MessageCenterStatusFilter> | null, statusOptions: readonly MessageCenterStatusOption[]): string;
79
129
 
80
130
  interface WorkspaceAgentMessageCenterCardProps {
81
131
  item: WorkspaceAgentMessageCenterItem;
82
132
  cardRef?: (node: HTMLElement | null) => void;
133
+ actionsAccessory?: ReactNode;
134
+ footerAccessory?: ReactNode;
135
+ headerAccessory?: ReactNode;
83
136
  highlighted?: boolean;
84
137
  interactive?: boolean;
85
138
  isSubmitting: boolean;
86
139
  lazySummary?: boolean;
140
+ summaryAccessory?: ReactNode;
87
141
  onLinkAction?: (action: WorkspaceLinkAction) => void;
88
142
  onOpenChat: (input: {
89
143
  agentSessionId: string;
@@ -96,7 +150,32 @@ interface WorkspaceAgentMessageCenterCardProps {
96
150
  requestId: string;
97
151
  }) => void;
98
152
  }
153
+ interface WorkspaceAgentMessageCenterStackProps {
154
+ className?: string;
155
+ expanded: boolean;
156
+ groupId: string;
157
+ highlightedItemId?: string | null;
158
+ items: WorkspaceAgentMessageCenterItem[];
159
+ renderCard: (item: WorkspaceAgentMessageCenterItem, options?: {
160
+ stackedIndex?: number;
161
+ }) => ReactNode;
162
+ onCollapse: (groupId: string) => void;
163
+ onExpand: (groupId: string) => void;
164
+ }
99
165
  declare const WorkspaceAgentMessageCenterCard: react.NamedExoticComponent<WorkspaceAgentMessageCenterCardProps>;
166
+ declare const WorkspaceAgentMessageCenterStack: react.NamedExoticComponent<WorkspaceAgentMessageCenterStackProps>;
167
+ declare function messageCenterStackPreviewText(item: WorkspaceAgentMessageCenterItem): string;
168
+ /**
169
+ * 收起态预览只展示纯文本 + 一个静态(不可点击)的 mention 图标,复用
170
+ * AgentMessageMarkdown 里那套富文本 chip 的视觉样式,但不渲染成 <a>——
171
+ * 这块预览本身嵌套在外层切换展开/收起的 <button> 里,塞一个可点击链接
172
+ * 会出现交互元素嵌套交互元素的问题。
173
+ */
174
+ declare function messageCenterStackPreviewNodes(item: WorkspaceAgentMessageCenterItem): ReactNode[];
175
+ declare function resolveMessageCenterNotificationAction(item: WorkspaceAgentMessageCenterItem, input: {
176
+ action?: string;
177
+ optionId?: string;
178
+ }): string | null;
100
179
  declare function buildWorkspaceAgentInteractivePromptLabels(t: ReturnType<typeof useTranslation>["t"], provider?: string): {
101
180
  approvalLead: string;
102
181
  planLead: string;
@@ -119,6 +198,41 @@ declare function buildWorkspaceAgentInteractivePromptLabels(t: ReturnType<typeof
119
198
  planImplementationSend: string;
120
199
  planImplementationSkip: string;
121
200
  };
201
+ declare function MessageCenterSummary({ emptyLabel, item, lazy, onLinkAction, summary }: {
202
+ emptyLabel: string;
203
+ item: WorkspaceAgentMessageCenterItem;
204
+ lazy: boolean;
205
+ onLinkAction?: (action: WorkspaceLinkAction) => void;
206
+ summary: string;
207
+ }): JSX.Element;
208
+ declare function MessageCenterOpenChatButton({ actionsAccessory, alwaysVisible, item, label, onOpenChat, provider }: {
209
+ actionsAccessory?: ReactNode;
210
+ alwaysVisible?: boolean;
211
+ item: WorkspaceAgentMessageCenterItem;
212
+ label: string;
213
+ onOpenChat: (input: {
214
+ agentSessionId: string;
215
+ provider: string;
216
+ }) => void;
217
+ provider: string;
218
+ }): JSX.Element;
219
+ declare function MessageCenterIdentityLabel({ identity, provider }: {
220
+ identity: WorkspaceAgentMessageCenterIdentity | null;
221
+ provider: string;
222
+ }): JSX.Element;
223
+ declare function MessageCenterIdentityAvatarMark({ identity, provider, userId }: {
224
+ identity: WorkspaceAgentMessageCenterIdentity | null;
225
+ provider: string;
226
+ userId?: string | null;
227
+ }): JSX.Element;
228
+ declare function MessageCenterIdentityAvatarStack({ agentAvatarUrl, userAvatarUrl: rawUserAvatarUrl, userName }: {
229
+ agentAvatarUrl: string;
230
+ userAvatarUrl?: string;
231
+ userName: string;
232
+ }): JSX.Element;
233
+ type MessageCenterStatusTone = "amber" | "blue" | "green" | "neutral" | "red";
234
+ declare function messageCenterStatusTone(item: WorkspaceAgentMessageCenterItem): MessageCenterStatusTone;
235
+ declare function messageCenterStatusToneClass(tone: MessageCenterStatusTone): string;
122
236
 
123
237
  interface WorkspaceAgentMessageCenterPanelProps {
124
238
  i18n?: I18nRuntime<string> | null;
@@ -148,6 +262,64 @@ interface WorkspaceAgentMessageCenterPanelProps {
148
262
  }) => Promise<void> | void;
149
263
  }
150
264
  declare const WorkspaceAgentMessageCenterPanel: react.NamedExoticComponent<WorkspaceAgentMessageCenterPanelProps>;
265
+ declare function MessageCenterGroupHeading({ group }: {
266
+ group: ReturnType<typeof groupMessageCenterItems>[number];
267
+ }): JSX.Element;
268
+
269
+ interface WorkspaceAgentMessageCenterAttentionDeckProps {
270
+ items: WorkspaceAgentMessageCenterItem[];
271
+ highlightedItemId?: string | null;
272
+ submittingPromptKey: string | null;
273
+ registerNode?: (itemId: string, node: HTMLElement | null) => void;
274
+ renderCard?: (input: WorkspaceAgentMessageCenterAttentionDeckRenderCardInput) => ReactNode;
275
+ onLinkAction?: (action: WorkspaceLinkAction) => void;
276
+ onOpenChat: (input: {
277
+ agentSessionId: string;
278
+ provider: string;
279
+ }) => void;
280
+ onSubmitPrompt: (item: WorkspaceAgentMessageCenterItem, input: {
281
+ action?: string;
282
+ optionId?: string;
283
+ payload?: Record<string, unknown>;
284
+ requestId: string;
285
+ }) => void;
286
+ }
287
+ interface WorkspaceAgentMessageCenterAttentionDeckRenderCardInput {
288
+ cardRef?: (node: HTMLElement | null) => void;
289
+ highlighted: boolean;
290
+ interactive: boolean;
291
+ isSubmitting: boolean;
292
+ item: WorkspaceAgentMessageCenterItem;
293
+ onSubmitPrompt: (input: {
294
+ action?: string;
295
+ optionId?: string;
296
+ payload?: Record<string, unknown>;
297
+ requestId: string;
298
+ }) => void;
299
+ }
300
+ declare function WorkspaceAgentMessageCenterAttentionDeck({ items, highlightedItemId, submittingPromptKey, registerNode, renderCard, onLinkAction, onOpenChat, onSubmitPrompt }: WorkspaceAgentMessageCenterAttentionDeckProps): JSX.Element | null;
301
+
302
+ declare function MessageCenterViewMenu({ filtersActive, groupBy, providerFilters, providerOptions, statusFilters, statusOptions, onClearFilters, onGroupByChange, onProviderToggle, onStatusToggle }: {
303
+ filtersActive?: boolean;
304
+ groupBy: MessageCenterGroupBy;
305
+ providerFilters: Set<string> | null;
306
+ providerOptions: MessageCenterProviderOption[];
307
+ statusFilters: Set<MessageCenterStatusFilter> | null;
308
+ statusOptions: MessageCenterStatusOption[];
309
+ onClearFilters: () => void;
310
+ onGroupByChange: (groupBy: MessageCenterGroupBy) => void;
311
+ onProviderToggle: (provider: string) => void;
312
+ onStatusToggle: (status: MessageCenterStatusFilter) => void;
313
+ }): JSX.Element;
314
+
315
+ interface AgentVerticalScrollAreaProps extends HTMLAttributes<HTMLDivElement> {
316
+ children: ReactNode;
317
+ viewportClassName?: string;
318
+ scrollbarClassName?: string;
319
+ scrollbarThumbClassName?: string;
320
+ syncKey?: unknown;
321
+ }
322
+ declare const AgentVerticalScrollArea: react.ForwardRefExoticComponent<AgentVerticalScrollAreaProps & react.RefAttributes<HTMLDivElement>>;
151
323
 
152
324
  /**
153
325
  * Where the prompt is rendered, which sets its interaction budget:
@@ -231,4 +403,13 @@ declare function approvalOptionDisplayLabel(option: {
231
403
 
232
404
  declare function stabilizeWorkspaceAgentMessageCenterModel(previous: WorkspaceAgentMessageCenterModel | null, next: WorkspaceAgentMessageCenterModel): WorkspaceAgentMessageCenterModel;
233
405
 
234
- export { AgentInteractivePromptSurface, type BuildWorkspaceAgentMessageCenterOptions, type PromptToolDetail, WorkspaceAgentMessageCenterCard, type WorkspaceAgentMessageCenterCardProps, type WorkspaceAgentMessageCenterCounts, type WorkspaceAgentMessageCenterDigest, type WorkspaceAgentMessageCenterDigestPrimary, type WorkspaceAgentMessageCenterDigestPrimaryKind, type WorkspaceAgentMessageCenterIdentity, type WorkspaceAgentMessageCenterItem, type WorkspaceAgentMessageCenterModel, WorkspaceAgentMessageCenterPanel, type WorkspaceAgentMessageCenterPanelProps, approvalOptionDisplayLabel, buildWorkspaceAgentInteractivePromptLabels, buildWorkspaceAgentMessageCenterModel, getPromptToolDetails, isPromptRequestIdTitle, isWaitingMessageCenterItem, managedAgentRoundedIconUrl, stabilizeWorkspaceAgentMessageCenterModel, userAvatarPlaceholderUrl, workspaceAgentActivityStatusLabel };
406
+ declare const messageCenterFiltersStorageKey = "tutti.agent-message-center.filters";
407
+ interface MessageCenterFilterPreferences {
408
+ groupBy: MessageCenterGroupBy;
409
+ statusFilters: Set<MessageCenterStatusFilter> | null;
410
+ providerFilters: Set<string> | null;
411
+ }
412
+ declare function readMessageCenterFilterPreferences(): MessageCenterFilterPreferences;
413
+ declare function writeMessageCenterFilterPreferences(preferences: MessageCenterFilterPreferences): void;
414
+
415
+ export { AgentInteractivePromptSurface, AgentVerticalScrollArea, type BuildWorkspaceAgentMessageCenterOptions, type MessageCenterAgentUserStack, type MessageCenterFilterPreferences, type MessageCenterGroup, type MessageCenterGroupBy, MessageCenterGroupHeading, MessageCenterIdentityAvatarMark, MessageCenterIdentityAvatarStack, MessageCenterIdentityLabel, MessageCenterOpenChatButton, type MessageCenterProviderOption, type MessageCenterStatusFilter, type MessageCenterStatusOption, type MessageCenterStatusTone, MessageCenterSummary, type MessageCenterTranslate, type PromptToolDetail, WorkspaceAgentMessageCenterAttentionDeck, type WorkspaceAgentMessageCenterAttentionDeckProps, type WorkspaceAgentMessageCenterAttentionDeckRenderCardInput, WorkspaceAgentMessageCenterCard, type WorkspaceAgentMessageCenterCardProps, type WorkspaceAgentMessageCenterCounts, type WorkspaceAgentMessageCenterDigest, type WorkspaceAgentMessageCenterDigestPrimary, type WorkspaceAgentMessageCenterDigestPrimaryKind, type WorkspaceAgentMessageCenterIdentity, type WorkspaceAgentMessageCenterItem, type WorkspaceAgentMessageCenterModel, WorkspaceAgentMessageCenterPanel, type WorkspaceAgentMessageCenterPanelProps, WorkspaceAgentMessageCenterStack, MessageCenterViewMenu as WorkspaceAgentMessageCenterViewMenu, approvalOptionDisplayLabel, buildMessageCenterProviderOptions, buildMessageCenterStatusOptions, buildWorkspaceAgentInteractivePromptLabels, buildWorkspaceAgentMessageCenterModel, getPromptToolDetails, groupMessageCenterItems, isInteractiveMessageCenterItem, isPromptRequestIdTitle, isRecentlyCompletedMessageCenterItem, isWaitingMessageCenterItem, itemMatchesViewFilters, managedAgentRoundedIconUrl, messageCenterAgentUserStackId, messageCenterFiltersStorageKey, messageCenterGroupLabel, messageCenterStackPreviewNodes, messageCenterStackPreviewText, messageCenterStackRenderId, messageCenterStackScrollSyncSegment, messageCenterStatusFilterValue, messageCenterStatusTone, messageCenterStatusToneClass, partitionMessageCenterItemsByAgentUser, readMessageCenterFilterPreferences, resolveMessageCenterNotificationAction, selectMessageCenterAttentionDeckItems, stabilizeWorkspaceAgentMessageCenterModel, statusFilterSummary, userAvatarPlaceholderUrl, workspaceAgentActivityStatusLabel, writeMessageCenterFilterPreferences };
@@ -6,7 +6,7 @@ import {
6
6
  approvalOptionDisplayLabel,
7
7
  getPromptToolDetails,
8
8
  isPromptRequestIdTitle
9
- } from "../chunk-FS26J46N.js";
9
+ } from "../chunk-M7GNA2WD.js";
10
10
  import {
11
11
  PLAN_IMPLEMENTATION_ACTION_IMPLEMENT,
12
12
  PLAN_IMPLEMENTATION_PROMPT,
@@ -25,7 +25,7 @@ import {
25
25
  extractExitPlanModeOptions,
26
26
  isExitPlanSwitchModeInput,
27
27
  normalizeAskUserQuestions
28
- } from "../chunk-VKP5ZW5O.js";
28
+ } from "../chunk-RKZMETSQ.js";
29
29
  import {
30
30
  managedAgentRoundedIconUrl,
31
31
  userAvatarPlaceholderUrl,
@@ -964,7 +964,12 @@ function positiveNumber2(value) {
964
964
  }
965
965
 
966
966
  // agent-message-center/WorkspaceAgentMessageCenterAttentionDeck.tsx
967
- import { useEffect as useEffect2, useMemo, useRef as useRef2, useState as useState2 } from "react";
967
+ import {
968
+ useEffect as useEffect2,
969
+ useMemo,
970
+ useRef as useRef2,
971
+ useState as useState2
972
+ } from "react";
968
973
  import { cn as cn3 } from "@tutti-os/ui-system";
969
974
 
970
975
  // agent-message-center/WorkspaceAgentMessageCenterCard.tsx
@@ -1003,11 +1008,15 @@ function stopMessageCenterTextPointerPropagation(event) {
1003
1008
  var WorkspaceAgentMessageCenterCard = memo(
1004
1009
  function WorkspaceAgentMessageCenterCard2({
1005
1010
  cardRef,
1011
+ actionsAccessory,
1012
+ footerAccessory,
1013
+ headerAccessory,
1006
1014
  highlighted = false,
1007
1015
  interactive = true,
1008
1016
  item,
1009
1017
  isSubmitting,
1010
1018
  lazySummary = false,
1019
+ summaryAccessory,
1011
1020
  onLinkAction,
1012
1021
  onOpenChat,
1013
1022
  onSubmitPrompt
@@ -1059,29 +1068,32 @@ var WorkspaceAgentMessageCenterCard = memo(
1059
1068
  ),
1060
1069
  item.cwd ? /* @__PURE__ */ jsx2(ProjectPathInfo, { path: item.cwd }) : null
1061
1070
  ] }),
1062
- /* @__PURE__ */ jsxs(
1063
- "span",
1064
- {
1065
- className: cn2(
1066
- "workspace-agent-message-center__status inline-flex shrink-0 items-center gap-1.5 text-[11px] font-semibold leading-4",
1067
- messageCenterStatusToneClass(statusTone)
1068
- ),
1069
- "data-status": displayStatus,
1070
- title: statusLabel,
1071
- children: [
1072
- /* @__PURE__ */ jsx2(
1073
- StatusDot,
1074
- {
1075
- tone: statusTone,
1076
- pulse: isWaitingMessageCenterItem(item) || item.status === "working",
1077
- size: "sm",
1078
- title: statusLabel
1079
- }
1071
+ /* @__PURE__ */ jsxs("span", { className: "flex shrink-0 items-center gap-2", children: [
1072
+ headerAccessory,
1073
+ /* @__PURE__ */ jsxs(
1074
+ "span",
1075
+ {
1076
+ className: cn2(
1077
+ "workspace-agent-message-center__status inline-flex shrink-0 items-center gap-1.5 text-[11px] font-semibold leading-4",
1078
+ messageCenterStatusToneClass(statusTone)
1080
1079
  ),
1081
- /* @__PURE__ */ jsx2("span", { children: statusLabel })
1082
- ]
1083
- }
1084
- )
1080
+ "data-status": displayStatus,
1081
+ title: statusLabel,
1082
+ children: [
1083
+ /* @__PURE__ */ jsx2(
1084
+ StatusDot,
1085
+ {
1086
+ tone: statusTone,
1087
+ pulse: isWaitingMessageCenterItem(item) || item.status === "working",
1088
+ size: "sm",
1089
+ title: statusLabel
1090
+ }
1091
+ ),
1092
+ /* @__PURE__ */ jsx2("span", { children: statusLabel })
1093
+ ]
1094
+ }
1095
+ )
1096
+ ] })
1085
1097
  ] }),
1086
1098
  summary ? /* @__PURE__ */ jsx2(
1087
1099
  MessageCenterSummary,
@@ -1093,6 +1105,7 @@ var WorkspaceAgentMessageCenterCard = memo(
1093
1105
  emptyLabel: t("agentHost.workspaceAgentMessageCenterNoSummary")
1094
1106
  }
1095
1107
  ) : null,
1108
+ summaryAccessory,
1096
1109
  prompt && interactive ? /* @__PURE__ */ jsx2("div", { className: "min-w-0", children: /* @__PURE__ */ jsx2(
1097
1110
  AgentInteractivePromptSurface,
1098
1111
  {
@@ -1108,9 +1121,11 @@ var WorkspaceAgentMessageCenterCard = memo(
1108
1121
  )
1109
1122
  }
1110
1123
  ) }) : null,
1124
+ footerAccessory,
1111
1125
  /* @__PURE__ */ jsx2(
1112
1126
  MessageCenterOpenChatButton,
1113
1127
  {
1128
+ actionsAccessory,
1114
1129
  provider: item.provider,
1115
1130
  item,
1116
1131
  label: t("agentHost.workspaceAgentMessageCenterOpenChat"),
@@ -1743,6 +1758,7 @@ function useDeferredMessageCenterSummaryMeasureReady(ref, enabled) {
1743
1758
  return ready;
1744
1759
  }
1745
1760
  function MessageCenterOpenChatButton({
1761
+ actionsAccessory,
1746
1762
  alwaysVisible = false,
1747
1763
  item,
1748
1764
  label,
@@ -1758,33 +1774,36 @@ function MessageCenterOpenChatButton({
1758
1774
  provider
1759
1775
  }
1760
1776
  ),
1761
- /* @__PURE__ */ jsxs(
1762
- Button,
1763
- {
1764
- type: "button",
1765
- variant: "ghost",
1766
- size: "default",
1767
- className: cn2(
1768
- "workspace-agent-message-center__open-chat-button h-auto gap-1.5 border-0 bg-transparent p-0 text-[var(--accent-codex)] shadow-none transition-[color,opacity,visibility] hover:bg-transparent hover:text-[var(--accent-codex)] focus-visible:bg-transparent focus-visible:text-[var(--accent-codex)] active:bg-transparent",
1769
- !alwaysVisible && "invisible opacity-0 group-hover/message-card:visible group-hover/message-card:opacity-100 group-focus-within/message-card:visible group-focus-within/message-card:opacity-100"
1770
- ),
1771
- onClick: () => onOpenChat({
1772
- agentSessionId: item.agentSessionId,
1773
- provider: item.provider
1774
- }),
1775
- children: [
1776
- /* @__PURE__ */ jsx2(
1777
- ExternalLink,
1778
- {
1779
- className: "size-[15px]",
1780
- strokeWidth: 2.2,
1781
- "aria-hidden": "true"
1782
- }
1777
+ /* @__PURE__ */ jsxs("span", { className: "inline-flex shrink-0 items-center gap-2", children: [
1778
+ actionsAccessory,
1779
+ /* @__PURE__ */ jsxs(
1780
+ Button,
1781
+ {
1782
+ type: "button",
1783
+ variant: "ghost",
1784
+ size: "default",
1785
+ className: cn2(
1786
+ "workspace-agent-message-center__open-chat-button h-auto gap-1.5 border-0 bg-transparent p-0 text-[var(--accent-codex)] shadow-none transition-[color,opacity,visibility] hover:bg-transparent hover:text-[var(--accent-codex)] focus-visible:bg-transparent focus-visible:text-[var(--accent-codex)] active:bg-transparent",
1787
+ !alwaysVisible && "invisible opacity-0 group-hover/message-card:visible group-hover/message-card:opacity-100 group-focus-within/message-card:visible group-focus-within/message-card:opacity-100"
1783
1788
  ),
1784
- label
1785
- ]
1786
- }
1787
- )
1789
+ onClick: () => onOpenChat({
1790
+ agentSessionId: item.agentSessionId,
1791
+ provider: item.provider
1792
+ }),
1793
+ children: [
1794
+ /* @__PURE__ */ jsx2(
1795
+ ExternalLink,
1796
+ {
1797
+ className: "size-[15px]",
1798
+ strokeWidth: 2.2,
1799
+ "aria-hidden": "true"
1800
+ }
1801
+ ),
1802
+ label
1803
+ ]
1804
+ }
1805
+ )
1806
+ ] })
1788
1807
  ] });
1789
1808
  }
1790
1809
  function MessageCenterIdentityLabel({
@@ -2033,6 +2052,7 @@ function WorkspaceAgentMessageCenterAttentionDeck({
2033
2052
  highlightedItemId = null,
2034
2053
  submittingPromptKey,
2035
2054
  registerNode,
2055
+ renderCard,
2036
2056
  onLinkAction,
2037
2057
  onOpenChat,
2038
2058
  onSubmitPrompt
@@ -2130,7 +2150,14 @@ function WorkspaceAgentMessageCenterAttentionDeck({
2130
2150
  );
2131
2151
  }
2132
2152
  },
2133
- children: /* @__PURE__ */ jsx3(
2153
+ children: renderCard ? renderCard({
2154
+ highlighted: false,
2155
+ interactive: false,
2156
+ isSubmitting: false,
2157
+ item: leavingItem,
2158
+ onSubmitPrompt: () => {
2159
+ }
2160
+ }) : /* @__PURE__ */ jsx3(
2134
2161
  WorkspaceAgentMessageCenterCard,
2135
2162
  {
2136
2163
  interactive: false,
@@ -2151,7 +2178,14 @@ function WorkspaceAgentMessageCenterAttentionDeck({
2151
2178
  "relative min-w-0 rounded-lg motion-safe:animate-in motion-safe:fade-in-0 motion-safe:slide-in-from-top-1 motion-safe:duration-300 motion-reduce:animate-none",
2152
2179
  peekCount > 1 ? "shadow-[0_7px_0_-4px_var(--background-fronted),0_7px_0_-3px_var(--line-2),0_14px_0_-8px_var(--background-fronted),0_14px_0_-7px_var(--line-2)]" : peekCount > 0 && "shadow-[0_7px_0_-4px_var(--background-fronted),0_7px_0_-3px_var(--line-2)]"
2153
2180
  ),
2154
- children: /* @__PURE__ */ jsx3(
2181
+ children: renderCard ? renderCard({
2182
+ cardRef: registerNode ? (node) => registerNode(topItem.id, node) : void 0,
2183
+ highlighted: topItem.id === highlightedItemId,
2184
+ interactive: true,
2185
+ isSubmitting: topIsSubmitting || isTopCoolingDown,
2186
+ item: topItem,
2187
+ onSubmitPrompt: (input) => onSubmitPrompt(topItem, input)
2188
+ }) : /* @__PURE__ */ jsx3(
2155
2189
  WorkspaceAgentMessageCenterCard,
2156
2190
  {
2157
2191
  cardRef: registerNode ? (node) => registerNode(topItem.id, node) : void 0,
@@ -3392,19 +3426,51 @@ function messageCenterPromptEqual(left, right) {
3392
3426
  }
3393
3427
  export {
3394
3428
  AgentInteractivePromptSurface,
3429
+ AgentVerticalScrollArea,
3430
+ MessageCenterGroupHeading,
3431
+ MessageCenterIdentityAvatarMark,
3432
+ MessageCenterIdentityAvatarStack,
3433
+ MessageCenterIdentityLabel,
3434
+ MessageCenterOpenChatButton,
3435
+ MessageCenterSummary,
3395
3436
  PLAN_IMPLEMENTATION_ACTION_IMPLEMENT,
3396
3437
  PLAN_IMPLEMENTATION_PROMPT,
3438
+ WorkspaceAgentMessageCenterAttentionDeck,
3397
3439
  WorkspaceAgentMessageCenterCard,
3398
3440
  WorkspaceAgentMessageCenterPanel,
3441
+ WorkspaceAgentMessageCenterStack,
3442
+ MessageCenterViewMenu as WorkspaceAgentMessageCenterViewMenu,
3399
3443
  approvalOptionDisplayLabel,
3444
+ buildMessageCenterProviderOptions,
3445
+ buildMessageCenterStatusOptions,
3400
3446
  buildWorkspaceAgentInteractivePromptLabels,
3401
3447
  buildWorkspaceAgentMessageCenterModel,
3402
3448
  getPromptToolDetails,
3449
+ groupMessageCenterItems,
3450
+ isInteractiveMessageCenterItem,
3403
3451
  isPromptRequestIdTitle,
3452
+ isRecentlyCompletedMessageCenterItem,
3404
3453
  isWaitingMessageCenterItem,
3454
+ itemMatchesViewFilters,
3405
3455
  managedAgentRoundedIconUrl,
3456
+ messageCenterAgentUserStackId,
3457
+ messageCenterFiltersStorageKey,
3458
+ messageCenterGroupLabel,
3459
+ messageCenterStackPreviewNodes,
3460
+ messageCenterStackPreviewText,
3461
+ messageCenterStackRenderId,
3462
+ messageCenterStackScrollSyncSegment,
3463
+ messageCenterStatusFilterValue,
3464
+ messageCenterStatusTone,
3465
+ messageCenterStatusToneClass,
3466
+ partitionMessageCenterItemsByAgentUser,
3467
+ readMessageCenterFilterPreferences,
3468
+ resolveMessageCenterNotificationAction,
3469
+ selectMessageCenterAttentionDeckItems,
3406
3470
  stabilizeWorkspaceAgentMessageCenterModel,
3471
+ statusFilterSummary,
3407
3472
  userAvatarPlaceholderUrl,
3408
- workspaceAgentActivityStatusLabel
3473
+ workspaceAgentActivityStatusLabel,
3474
+ writeMessageCenterFilterPreferences
3409
3475
  };
3410
3476
  //# sourceMappingURL=index.js.map