@tutti-os/agent-gui 0.0.94 → 0.0.95

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 (153) hide show
  1. package/README.md +48 -32
  2. package/dist/AgentGUI-CwBLYtv-.d.ts +992 -0
  3. package/dist/agent-conversation/index.d.ts +5 -7
  4. package/dist/agent-conversation/index.js +12 -8
  5. package/dist/agent-conversation/index.js.map +1 -1
  6. package/dist/agent-env/index.d.ts +10 -36
  7. package/dist/agent-env/index.js +1 -56
  8. package/dist/agent-env/index.js.map +1 -1
  9. package/dist/agent-gui.d.ts +21 -0
  10. package/dist/agent-gui.js +39 -0
  11. package/dist/agent-message-center/index.d.ts +145 -124
  12. package/dist/agent-message-center/index.js +1374 -1316
  13. package/dist/agent-message-center/index.js.map +1 -1
  14. package/dist/{agentConversationVM-Cl4G0Lln.d.ts → agentConversationVM-C335TR6S.d.ts} +112 -7
  15. package/dist/agentFileMentionContracts-Czvz6YMI.d.ts +107 -0
  16. package/dist/{agentGuiNodeTypes-CAioPXK9.d.ts → agentGuiNodeTypes-DppADPHW.d.ts} +96 -148
  17. package/dist/agentPlanPromptDispatch-C7cCMjve.d.ts +37 -0
  18. package/dist/agents.d.ts +13 -0
  19. package/dist/agents.js +13 -0
  20. package/dist/app/renderer/agentactivity.css +126 -80
  21. package/dist/app/renderer/assets/icons/agent-vinyls/tutti-vinyl.png +0 -0
  22. package/dist/app/renderer/assets/icons/open-link-lined.svg +4 -0
  23. package/dist/{chunk-P72YLKC6.js → chunk-3R2D4E57.js} +3127 -3398
  24. package/dist/chunk-3R2D4E57.js.map +1 -0
  25. package/dist/chunk-4YG7YK7S.js +23 -0
  26. package/dist/chunk-4YG7YK7S.js.map +1 -0
  27. package/dist/chunk-5X7YDOC6.js +42 -0
  28. package/dist/chunk-5X7YDOC6.js.map +1 -0
  29. package/dist/{chunk-IBIMGLCD.js → chunk-7J4K6WKB.js} +1 -1
  30. package/dist/chunk-7J4K6WKB.js.map +1 -0
  31. package/dist/{chunk-BXVPOGYK.js → chunk-7PFDA2HQ.js} +505 -504
  32. package/dist/chunk-7PFDA2HQ.js.map +1 -0
  33. package/dist/{chunk-AWAIUYG4.js → chunk-7RDD3EWP.js} +513 -555
  34. package/dist/chunk-7RDD3EWP.js.map +1 -0
  35. package/dist/{chunk-UBDPV34P.js → chunk-AOS2VWU6.js} +1355 -1305
  36. package/dist/chunk-AOS2VWU6.js.map +1 -0
  37. package/dist/{chunk-E5FOXRUM.js → chunk-BFNJKTDV.js} +295 -255
  38. package/dist/chunk-BFNJKTDV.js.map +1 -0
  39. package/dist/{chunk-5FE7M42A.js → chunk-BIHBXWK5.js} +2 -2
  40. package/dist/{chunk-7BUYFVRI.js → chunk-C5FV4UGI.js} +2921 -2944
  41. package/dist/chunk-C5FV4UGI.js.map +1 -0
  42. package/dist/{chunk-SCLLP5DO.js → chunk-CRO2MV2Y.js} +36 -46
  43. package/dist/chunk-CRO2MV2Y.js.map +1 -0
  44. package/dist/chunk-FGLQZ6I4.js +9 -0
  45. package/dist/chunk-FGLQZ6I4.js.map +1 -0
  46. package/dist/chunk-H6IQ63DQ.js +14 -0
  47. package/dist/chunk-H6IQ63DQ.js.map +1 -0
  48. package/dist/{chunk-IGY4ASUF.js → chunk-JX2SIXNL.js} +1293 -1702
  49. package/dist/chunk-JX2SIXNL.js.map +1 -0
  50. package/dist/chunk-KAL4XZMA.js +231 -0
  51. package/dist/chunk-KAL4XZMA.js.map +1 -0
  52. package/dist/chunk-KJQERFKX.js +259 -0
  53. package/dist/chunk-KJQERFKX.js.map +1 -0
  54. package/dist/chunk-LQVXBT65.js +491 -0
  55. package/dist/chunk-LQVXBT65.js.map +1 -0
  56. package/dist/{chunk-554VG7ZW.js → chunk-NITOD7WF.js} +2 -2
  57. package/dist/{chunk-7LMJXF4R.js → chunk-NJAZ7LQM.js} +20 -16
  58. package/dist/chunk-NJAZ7LQM.js.map +1 -0
  59. package/dist/chunk-NX3CZJXW.js +25 -0
  60. package/dist/chunk-NX3CZJXW.js.map +1 -0
  61. package/dist/chunk-O6W72SEP.js +93 -0
  62. package/dist/chunk-O6W72SEP.js.map +1 -0
  63. package/dist/chunk-RY6GIO3K.js +31700 -0
  64. package/dist/chunk-RY6GIO3K.js.map +1 -0
  65. package/dist/{chunk-XDV4ZRVK.js → chunk-UGVI47X6.js} +98 -37
  66. package/dist/chunk-UGVI47X6.js.map +1 -0
  67. package/dist/{chunk-XW4CVBUH.js → chunk-UQJPV6HP.js} +18 -11
  68. package/dist/chunk-UQJPV6HP.js.map +1 -0
  69. package/dist/{chunk-GAPTLVII.js → chunk-VF22EG3F.js} +1 -1
  70. package/dist/{chunk-GAPTLVII.js.map → chunk-VF22EG3F.js.map} +1 -1
  71. package/dist/{chunk-45FF4DQU.js → chunk-WEDMAVX2.js} +22 -24
  72. package/dist/chunk-WEDMAVX2.js.map +1 -0
  73. package/dist/{chunk-MATIJPGF.js → chunk-XMO45GKA.js} +531 -401
  74. package/dist/chunk-XMO45GKA.js.map +1 -0
  75. package/dist/{chunk-ZUW4B5AT.js → chunk-YE25HN6T.js} +6 -9
  76. package/dist/chunk-YE25HN6T.js.map +1 -0
  77. package/dist/context-mention-palette/index.d.ts +3 -2
  78. package/dist/context-mention-palette/index.js +19 -14
  79. package/dist/custom-mention.d.ts +44 -0
  80. package/dist/custom-mention.js +17 -0
  81. package/dist/custom-mention.js.map +1 -0
  82. package/dist/dock-icons.d.ts +6 -0
  83. package/dist/dock-icons.js +11 -0
  84. package/dist/dock-icons.js.map +1 -0
  85. package/dist/i18n/index.d.ts +850 -841
  86. package/dist/i18n/index.js +2 -2
  87. package/dist/index.d.ts +52 -1061
  88. package/dist/index.js +72 -35530
  89. package/dist/index.js.map +1 -1
  90. package/dist/mention-search.d.ts +226 -0
  91. package/dist/mention-search.js +29 -0
  92. package/dist/mention-search.js.map +1 -0
  93. package/dist/open-link-lined-JWEKUKME.svg +4 -0
  94. package/dist/provider-icons.d.ts +6 -0
  95. package/dist/provider-icons.js +12 -0
  96. package/dist/provider-icons.js.map +1 -0
  97. package/dist/provider-identity.d.ts +9 -0
  98. package/dist/provider-identity.js +21 -0
  99. package/dist/provider-identity.js.map +1 -0
  100. package/dist/runtime-BBNdWgDU.d.ts +10 -0
  101. package/dist/{types-PLFZ8SBX.d.ts → types-DX2bxgB8.d.ts} +28 -83
  102. package/dist/workbench/contribution.d.ts +32 -40
  103. package/dist/workbench/contribution.js +10 -6
  104. package/dist/workbench/index.d.ts +3 -2
  105. package/dist/workbench/index.js +24 -20
  106. package/dist/workbench/launch.d.ts +2 -5
  107. package/dist/workbench/launch.js +4 -3
  108. package/dist/workbench/providerCatalog.js +2 -1
  109. package/dist/workbench/sessionTitle.d.ts +4 -3
  110. package/dist/workbench/sessionTitle.js +4 -3
  111. package/dist/workbench/state.d.ts +1 -1
  112. package/dist/workbench/state.js +3 -2
  113. package/dist/workbench/types.d.ts +0 -3
  114. package/dist/workbench/types.js +1 -1
  115. package/dist/workspace-agent-generated-files.d.ts +20 -2
  116. package/dist/workspace-agent-generated-files.js +7 -6
  117. package/dist/workspaceAgentActivityListTypes-C7gPWYiA.d.ts +71 -0
  118. package/package.json +63 -26
  119. package/dist/AgentMentionSearchController-DD_WOred.d.ts +0 -241
  120. package/dist/AgentMessageMarkdown-DeYPURtF.d.ts +0 -7
  121. package/dist/chunk-45FF4DQU.js.map +0 -1
  122. package/dist/chunk-4HP6V2YA.js +0 -207
  123. package/dist/chunk-4HP6V2YA.js.map +0 -1
  124. package/dist/chunk-7BUYFVRI.js.map +0 -1
  125. package/dist/chunk-7LMJXF4R.js.map +0 -1
  126. package/dist/chunk-AWAIUYG4.js.map +0 -1
  127. package/dist/chunk-BXVPOGYK.js.map +0 -1
  128. package/dist/chunk-E5FOXRUM.js.map +0 -1
  129. package/dist/chunk-IBIMGLCD.js.map +0 -1
  130. package/dist/chunk-IGY4ASUF.js.map +0 -1
  131. package/dist/chunk-LR4FA5X6.js +0 -368
  132. package/dist/chunk-LR4FA5X6.js.map +0 -1
  133. package/dist/chunk-MATIJPGF.js.map +0 -1
  134. package/dist/chunk-MKHDRIGN.js +0 -71
  135. package/dist/chunk-MKHDRIGN.js.map +0 -1
  136. package/dist/chunk-P72YLKC6.js.map +0 -1
  137. package/dist/chunk-SCLLP5DO.js.map +0 -1
  138. package/dist/chunk-UBDPV34P.js.map +0 -1
  139. package/dist/chunk-VAKFNNKT.js +0 -410
  140. package/dist/chunk-VAKFNNKT.js.map +0 -1
  141. package/dist/chunk-XDV4ZRVK.js.map +0 -1
  142. package/dist/chunk-XW4CVBUH.js.map +0 -1
  143. package/dist/chunk-ZUW4B5AT.js.map +0 -1
  144. package/dist/plan-decision-ops.d.ts +0 -70
  145. package/dist/plan-decision-ops.js +0 -19
  146. package/dist/queued-prompt-runtime.d.ts +0 -115
  147. package/dist/queued-prompt-runtime.js +0 -9
  148. package/dist/workspaceAgentActivityListViewModel-BzV-cf0D.d.ts +0 -340
  149. package/dist/workspaceLinkActions-DS9LWqzI.d.ts +0 -74
  150. /package/dist/{plan-decision-ops.js.map → agent-gui.js.map} +0 -0
  151. /package/dist/{queued-prompt-runtime.js.map → agents.js.map} +0 -0
  152. /package/dist/{chunk-5FE7M42A.js.map → chunk-BIHBXWK5.js.map} +0 -0
  153. /package/dist/{chunk-554VG7ZW.js.map → chunk-NITOD7WF.js.map} +0 -0
@@ -1,12 +1,13 @@
1
1
  import * as react from 'react';
2
2
  import { JSX, ReactNode, HTMLAttributes } from 'react';
3
3
  import { I18nRuntime } from '@tutti-os/ui-i18n-runtime';
4
- import { TranslateFn, useTranslation, AgentGuiI18nLocale } from '../i18n/index.js';
5
- import { W as WorkspaceLinkAction } from '../workspaceLinkActions-DS9LWqzI.js';
6
- import { AgentActivityNeedsAttentionItem, AgentActivitySnapshot } from '@tutti-os/agent-activity-core';
7
- import { b as AgentConversationPromptVM } from '../agentConversationVM-Cl4G0Lln.js';
8
- import { o as WorkspaceAgentActivityStatus } from '../workspaceAgentActivityListViewModel-BzV-cf0D.js';
9
- export { PLAN_IMPLEMENTATION_ACTION_IMPLEMENT, PLAN_IMPLEMENTATION_PROMPT } from '../plan-decision-ops.js';
4
+ import { A as AgentGuiI18nLocale, T as TranslateFn } from '../runtime-BBNdWgDU.js';
5
+ import { b as AgentConversationPromptVM, e as WorkspaceLinkAction } from '../agentConversationVM-C335TR6S.js';
6
+ import { AgentActivityNeedsAttentionItem, WorkspaceAgentConsumerSession, AgentActivitySnapshot, AgentSessionEngineState } from '@tutti-os/agent-activity-core';
7
+ export { WorkspaceAgentConsumerCounts, WorkspaceAgentConsumerSession, selectWorkspaceAgentConsumerCounts, selectWorkspaceAgentConsumerSession, selectWorkspaceAgentConsumerSessions } from '@tutti-os/agent-activity-core';
8
+ import { d as WorkspaceAgentActivityStatus } from '../workspaceAgentActivityListTypes-C7gPWYiA.js';
9
+ export { P as PLAN_IMPLEMENTATION_ACTION_IMPLEMENT, a as PLAN_IMPLEMENTATION_PROMPT, d as dispatchAgentPlanPromptAction, u as useEngineSelector } from '../agentPlanPromptDispatch-C7cCMjve.js';
10
+ import { useTranslation } from '../i18n/index.js';
10
11
  import '@tutti-os/workspace-issue-manager/core';
11
12
 
12
13
  type WorkspaceAgentMessageCenterDigestPrimaryKind = "input-required" | "error" | "outcome" | "progress" | "summary";
@@ -19,6 +20,10 @@ interface WorkspaceAgentMessageCenterDigest {
19
20
  primary: WorkspaceAgentMessageCenterDigestPrimary;
20
21
  }
21
22
 
23
+ declare function isWaitingMessageCenterItem(item: WorkspaceAgentMessageCenterItem): boolean;
24
+ declare function isInteractiveMessageCenterItem(item: WorkspaceAgentMessageCenterItem): boolean;
25
+ declare function selectMessageCenterAttentionDeckItems(items: readonly WorkspaceAgentMessageCenterItem[]): WorkspaceAgentMessageCenterItem[];
26
+
22
27
  interface WorkspaceAgentMessageCenterModel {
23
28
  waitingCount: number;
24
29
  items: WorkspaceAgentMessageCenterItem[];
@@ -75,58 +80,70 @@ interface WorkspaceAgentMessageCenterPromptFallbackLabels {
75
80
  question: string;
76
81
  title: string;
77
82
  }
78
- declare function buildWorkspaceAgentMessageCenterModel(snapshot: AgentActivitySnapshot, options?: BuildWorkspaceAgentMessageCenterOptions): WorkspaceAgentMessageCenterModel;
79
- declare function isWaitingMessageCenterItem(item: WorkspaceAgentMessageCenterItem): boolean;
80
- declare function isInteractiveMessageCenterItem(item: WorkspaceAgentMessageCenterItem): boolean;
81
- declare function selectMessageCenterAttentionDeckItems(items: readonly WorkspaceAgentMessageCenterItem[]): WorkspaceAgentMessageCenterItem[];
82
83
 
83
- type MessageCenterGroupBy = "priority" | "status" | "agent" | "time";
84
- type MessageCenterStatusFilter = "waiting" | "working" | "completed" | "failed";
85
- type MessageCenterTranslate = TranslateFn;
86
- interface MessageCenterStatusOption {
87
- count: number;
88
- label: string;
89
- value: MessageCenterStatusFilter;
90
- }
91
- interface MessageCenterProviderOption {
92
- count: number;
93
- label: string;
94
- value: string;
95
- }
96
- interface MessageCenterGroup {
97
- id: string;
98
- identity?: WorkspaceAgentMessageCenterIdentity | null;
84
+ declare function MessageCenterOpenChatButton({ actionsAccessory, alwaysVisible, item, label, onOpenChat, provider }: {
85
+ actionsAccessory?: ReactNode;
86
+ alwaysVisible?: boolean;
87
+ item: WorkspaceAgentMessageCenterItem;
99
88
  label: string;
100
- items: WorkspaceAgentMessageCenterItem[];
101
- provider?: string;
102
- userId?: string | null;
103
- }
104
- interface MessageCenterAgentUserStack {
105
- id: string;
89
+ onOpenChat: (input: {
90
+ agentSessionId: string;
91
+ provider: string;
92
+ }) => void;
106
93
  provider: string;
107
- userId: string | null;
108
- items: WorkspaceAgentMessageCenterItem[];
109
- }
110
- declare function partitionMessageCenterItemsByAgentUser(items: readonly WorkspaceAgentMessageCenterItem[]): MessageCenterAgentUserStack[];
111
- declare function messageCenterAgentUserStackId(item: Pick<WorkspaceAgentMessageCenterItem, "provider" | "userId">): string;
112
- declare function messageCenterStackRenderId(groupId: string, stackId: string): string;
113
- declare function messageCenterStackScrollSyncSegment({ expanded, groupId, stack }: {
114
- expanded: boolean;
115
- groupId: string;
116
- stack: MessageCenterAgentUserStack;
117
- }): string;
118
- declare function buildMessageCenterStatusOptions(counts: WorkspaceAgentMessageCenterModel["counts"], t: MessageCenterTranslate): MessageCenterStatusOption[];
119
- declare function buildMessageCenterProviderOptions(items: readonly WorkspaceAgentMessageCenterItem[]): MessageCenterProviderOption[];
120
- declare function itemMatchesViewFilters({ item, providerFilters, statusFilters }: {
121
- item: WorkspaceAgentMessageCenterItem;
122
- providerFilters: Set<string> | null;
123
- statusFilters: Set<MessageCenterStatusFilter> | null;
124
- }): boolean;
125
- declare function messageCenterStatusFilterValue(item: WorkspaceAgentMessageCenterItem): MessageCenterStatusFilter;
126
- declare function groupMessageCenterItems(items: readonly WorkspaceAgentMessageCenterItem[], groupBy: MessageCenterGroupBy, t: MessageCenterTranslate): MessageCenterGroup[];
127
- declare function isRecentlyCompletedMessageCenterItem(item: WorkspaceAgentMessageCenterItem, nowUnixMs: number): boolean;
128
- declare function messageCenterGroupLabel(groupBy: MessageCenterGroupBy, t: MessageCenterTranslate): string;
129
- declare function statusFilterSummary(statusFilters: Set<MessageCenterStatusFilter> | null, statusOptions: readonly MessageCenterStatusOption[]): string;
94
+ }): JSX.Element;
95
+ declare function MessageCenterIdentityLabel({ identity, provider }: {
96
+ identity: WorkspaceAgentMessageCenterIdentity | null;
97
+ provider: string;
98
+ }): JSX.Element;
99
+ declare function MessageCenterIdentityAvatarMark({ identity, provider, userId }: {
100
+ identity: WorkspaceAgentMessageCenterIdentity | null;
101
+ provider: string;
102
+ userId?: string | null;
103
+ }): JSX.Element;
104
+ declare function MessageCenterIdentityAvatarStack({ agentAvatarUrl, userAvatarUrl: rawUserAvatarUrl, userName }: {
105
+ agentAvatarUrl: string;
106
+ userAvatarUrl?: string;
107
+ userName: string;
108
+ }): JSX.Element;
109
+ type MessageCenterStatusTone = "amber" | "blue" | "green" | "neutral" | "red";
110
+ declare function messageCenterStatusTone(item: WorkspaceAgentMessageCenterItem): MessageCenterStatusTone;
111
+ declare function messageCenterStatusToneClass(tone: MessageCenterStatusTone): string;
112
+
113
+ declare function messageCenterStackPreviewText(item: WorkspaceAgentMessageCenterItem): string;
114
+ /**
115
+ * 收起态预览只展示纯文本 + 一个静态(不可点击) mention 图标,复用
116
+ * AgentMessageMarkdown 里那套富文本 chip 的视觉样式,但不渲染成 <a>——
117
+ * 这块预览本身嵌套在外层切换展开/收起的 <button> 里,塞一个可点击链接
118
+ * 会出现交互元素嵌套交互元素的问题。
119
+ */
120
+ declare function messageCenterStackPreviewNodes(item: WorkspaceAgentMessageCenterItem): ReactNode[];
121
+ declare function resolveMessageCenterNotificationAction(item: WorkspaceAgentMessageCenterItem, input: {
122
+ action?: string;
123
+ optionId?: string;
124
+ }): string | null;
125
+ declare function buildWorkspaceAgentInteractivePromptLabels(t: ReturnType<typeof useTranslation>["t"], provider?: string): {
126
+ approvalLead: string;
127
+ planLead: string;
128
+ planModes: {
129
+ id: string;
130
+ label: string;
131
+ description: string;
132
+ }[];
133
+ stayInPlan: string;
134
+ sendFeedback: string;
135
+ feedbackPlaceholder: string;
136
+ previousQuestion: string;
137
+ nextQuestion: string;
138
+ submitAnswers: string;
139
+ answerPlaceholder: string;
140
+ waitingForAnswer: string;
141
+ planImplementationLead: string;
142
+ planImplementationConfirm: string;
143
+ planImplementationFeedbackPlaceholder: string;
144
+ planImplementationSend: string;
145
+ planImplementationSkip: string;
146
+ };
130
147
 
131
148
  interface WorkspaceAgentMessageCenterCardProps {
132
149
  item: WorkspaceAgentMessageCenterItem;
@@ -165,40 +182,6 @@ interface WorkspaceAgentMessageCenterStackProps {
165
182
  }
166
183
  declare const WorkspaceAgentMessageCenterCard: react.NamedExoticComponent<WorkspaceAgentMessageCenterCardProps>;
167
184
  declare const WorkspaceAgentMessageCenterStack: react.NamedExoticComponent<WorkspaceAgentMessageCenterStackProps>;
168
- declare function messageCenterStackPreviewText(item: WorkspaceAgentMessageCenterItem): string;
169
- /**
170
- * 收起态预览只展示纯文本 + 一个静态(不可点击)的 mention 图标,复用
171
- * AgentMessageMarkdown 里那套富文本 chip 的视觉样式,但不渲染成 <a>——
172
- * 这块预览本身嵌套在外层切换展开/收起的 <button> 里,塞一个可点击链接
173
- * 会出现交互元素嵌套交互元素的问题。
174
- */
175
- declare function messageCenterStackPreviewNodes(item: WorkspaceAgentMessageCenterItem): ReactNode[];
176
- declare function resolveMessageCenterNotificationAction(item: WorkspaceAgentMessageCenterItem, input: {
177
- action?: string;
178
- optionId?: string;
179
- }): string | null;
180
- declare function buildWorkspaceAgentInteractivePromptLabels(t: ReturnType<typeof useTranslation>["t"], provider?: string): {
181
- approvalLead: string;
182
- planLead: string;
183
- planModes: {
184
- id: string;
185
- label: string;
186
- description: string;
187
- }[];
188
- stayInPlan: string;
189
- sendFeedback: string;
190
- feedbackPlaceholder: string;
191
- previousQuestion: string;
192
- nextQuestion: string;
193
- submitAnswers: string;
194
- answerPlaceholder: string;
195
- waitingForAnswer: string;
196
- planImplementationLead: string;
197
- planImplementationConfirm: string;
198
- planImplementationFeedbackPlaceholder: string;
199
- planImplementationSend: string;
200
- planImplementationSkip: string;
201
- };
202
185
  declare function MessageCenterSummary({ emptyLabel, item, lazy, onLinkAction, summary }: {
203
186
  emptyLabel: string;
204
187
  item: WorkspaceAgentMessageCenterItem;
@@ -206,36 +189,8 @@ declare function MessageCenterSummary({ emptyLabel, item, lazy, onLinkAction, su
206
189
  onLinkAction?: (action: WorkspaceLinkAction) => void;
207
190
  summary: string;
208
191
  }): JSX.Element;
209
- declare function MessageCenterOpenChatButton({ actionsAccessory, alwaysVisible, item, label, onOpenChat, provider }: {
210
- actionsAccessory?: ReactNode;
211
- alwaysVisible?: boolean;
212
- item: WorkspaceAgentMessageCenterItem;
213
- label: string;
214
- onOpenChat: (input: {
215
- agentSessionId: string;
216
- provider: string;
217
- }) => void;
218
- provider: string;
219
- }): JSX.Element;
220
- declare function MessageCenterIdentityLabel({ identity, provider }: {
221
- identity: WorkspaceAgentMessageCenterIdentity | null;
222
- provider: string;
223
- }): JSX.Element;
224
- declare function MessageCenterIdentityAvatarMark({ identity, provider, userId }: {
225
- identity: WorkspaceAgentMessageCenterIdentity | null;
226
- provider: string;
227
- userId?: string | null;
228
- }): JSX.Element;
229
- declare function MessageCenterIdentityAvatarStack({ agentAvatarUrl, userAvatarUrl: rawUserAvatarUrl, userName }: {
230
- agentAvatarUrl: string;
231
- userAvatarUrl?: string;
232
- userName: string;
233
- }): JSX.Element;
234
- type MessageCenterStatusTone = "amber" | "blue" | "green" | "neutral" | "red";
235
- declare function messageCenterStatusTone(item: WorkspaceAgentMessageCenterItem): MessageCenterStatusTone;
236
- declare function messageCenterStatusToneClass(tone: MessageCenterStatusTone): string;
237
192
 
238
- type WorkspaceAgentMessageCenterPresentation = "drawer" | "embedded";
193
+ type WorkspaceAgentMessageCenterPanelPresentation = "drawer" | "embedded";
239
194
  interface WorkspaceAgentMessageCenterPanelProps {
240
195
  i18n?: I18nRuntime<string> | null;
241
196
  locale?: AgentGuiI18nLocale;
@@ -243,7 +198,7 @@ interface WorkspaceAgentMessageCenterPanelProps {
243
198
  model: WorkspaceAgentMessageCenterModel;
244
199
  highlightedItemId?: string | null;
245
200
  portalContainer?: HTMLElement | null;
246
- presentation?: WorkspaceAgentMessageCenterPresentation;
201
+ presentation?: WorkspaceAgentMessageCenterPanelPresentation;
247
202
  onClose: () => void;
248
203
  onHighlightedItemSettled?: (itemId: string) => void;
249
204
  onLinkAction?: (action: WorkspaceLinkAction) => void;
@@ -255,6 +210,7 @@ interface WorkspaceAgentMessageCenterPanelProps {
255
210
  agentSessionId: string;
256
211
  provider: string;
257
212
  }) => void;
213
+ promptStatus?: (item: WorkspaceAgentMessageCenterItem) => "idle" | "responding" | "unknown" | "failed";
258
214
  onSubmitPrompt: (input: {
259
215
  action?: string;
260
216
  agentSessionId: string;
@@ -265,14 +221,63 @@ interface WorkspaceAgentMessageCenterPanelProps {
265
221
  }) => Promise<void> | void;
266
222
  }
267
223
  declare const WorkspaceAgentMessageCenterPanel: react.NamedExoticComponent<WorkspaceAgentMessageCenterPanelProps>;
224
+
225
+ type MessageCenterGroupBy = "priority" | "status" | "agent" | "time";
226
+ type MessageCenterStatusFilter = "waiting" | "working" | "completed" | "failed";
227
+ type MessageCenterTranslate = TranslateFn;
228
+ interface MessageCenterStatusOption {
229
+ count: number;
230
+ label: string;
231
+ value: MessageCenterStatusFilter;
232
+ }
233
+ interface MessageCenterProviderOption {
234
+ count: number;
235
+ label: string;
236
+ value: string;
237
+ }
238
+ interface MessageCenterGroup {
239
+ id: string;
240
+ identity?: WorkspaceAgentMessageCenterIdentity | null;
241
+ label: string;
242
+ items: WorkspaceAgentMessageCenterItem[];
243
+ provider?: string;
244
+ userId?: string | null;
245
+ }
246
+ interface MessageCenterAgentUserStack {
247
+ id: string;
248
+ provider: string;
249
+ userId: string | null;
250
+ items: WorkspaceAgentMessageCenterItem[];
251
+ }
252
+ declare function partitionMessageCenterItemsByAgentUser(items: readonly WorkspaceAgentMessageCenterItem[]): MessageCenterAgentUserStack[];
253
+ declare function messageCenterAgentUserStackId(item: Pick<WorkspaceAgentMessageCenterItem, "provider" | "userId">): string;
254
+ declare function messageCenterStackRenderId(groupId: string, stackId: string): string;
255
+ declare function messageCenterStackScrollSyncSegment({ expanded, groupId, stack }: {
256
+ expanded: boolean;
257
+ groupId: string;
258
+ stack: MessageCenterAgentUserStack;
259
+ }): string;
260
+ declare function buildMessageCenterStatusOptions(counts: WorkspaceAgentMessageCenterModel["counts"], t: MessageCenterTranslate): MessageCenterStatusOption[];
261
+ declare function buildMessageCenterProviderOptions(items: readonly WorkspaceAgentMessageCenterItem[]): MessageCenterProviderOption[];
262
+ declare function itemMatchesViewFilters({ item, providerFilters, statusFilters }: {
263
+ item: WorkspaceAgentMessageCenterItem;
264
+ providerFilters: Set<string> | null;
265
+ statusFilters: Set<MessageCenterStatusFilter> | null;
266
+ }): boolean;
267
+ declare function messageCenterStatusFilterValue(item: WorkspaceAgentMessageCenterItem): MessageCenterStatusFilter;
268
+ declare function groupMessageCenterItems(items: readonly WorkspaceAgentMessageCenterItem[], groupBy: MessageCenterGroupBy, t: MessageCenterTranslate): MessageCenterGroup[];
269
+ declare function isRecentlyCompletedMessageCenterItem(item: WorkspaceAgentMessageCenterItem, nowUnixMs: number): boolean;
270
+ declare function messageCenterGroupLabel(groupBy: MessageCenterGroupBy, t: MessageCenterTranslate): string;
271
+ declare function statusFilterSummary(statusFilters: Set<MessageCenterStatusFilter> | null, statusOptions: readonly MessageCenterStatusOption[]): string;
272
+
268
273
  declare function MessageCenterGroupHeading({ group }: {
269
- group: ReturnType<typeof groupMessageCenterItems>[number];
270
- }): JSX.Element;
274
+ group: MessageCenterGroup;
275
+ }): React.JSX.Element;
271
276
 
272
277
  interface WorkspaceAgentMessageCenterAttentionDeckProps {
273
278
  items: WorkspaceAgentMessageCenterItem[];
274
279
  highlightedItemId?: string | null;
275
- submittingPromptKey: string | null;
280
+ isPromptSubmitting: (item: WorkspaceAgentMessageCenterItem) => boolean;
276
281
  registerNode?: (itemId: string, node: HTMLElement | null) => void;
277
282
  renderCard?: (input: WorkspaceAgentMessageCenterAttentionDeckRenderCardInput) => ReactNode;
278
283
  onLinkAction?: (action: WorkspaceLinkAction) => void;
@@ -300,7 +305,7 @@ interface WorkspaceAgentMessageCenterAttentionDeckRenderCardInput {
300
305
  requestId: string;
301
306
  }) => void;
302
307
  }
303
- declare function WorkspaceAgentMessageCenterAttentionDeck({ items, highlightedItemId, submittingPromptKey, registerNode, renderCard, onLinkAction, onOpenChat, onSubmitPrompt }: WorkspaceAgentMessageCenterAttentionDeckProps): JSX.Element | null;
308
+ declare function WorkspaceAgentMessageCenterAttentionDeck({ items, highlightedItemId, isPromptSubmitting, registerNode, renderCard, onLinkAction, onOpenChat, onSubmitPrompt }: WorkspaceAgentMessageCenterAttentionDeckProps): JSX.Element | null;
304
309
 
305
310
  declare function MessageCenterViewMenu({ filtersActive, groupBy, providerFilters, providerOptions, statusFilters, statusOptions, onClearFilters, onGroupByChange, onProviderToggle, onStatusToggle }: {
306
311
  filtersActive?: boolean;
@@ -404,6 +409,22 @@ declare function approvalOptionDisplayLabel(option: {
404
409
  feedback?: boolean;
405
410
  }): string;
406
411
 
412
+ /**
413
+ * Canonical Message Center entrypoint. Session/turn/interaction truth comes
414
+ * directly from the engine. Durable messages are presentation input only:
415
+ * title and digest text may use them, but they cannot recreate lifecycle or
416
+ * pending-interaction state.
417
+ */
418
+ declare function buildWorkspaceAgentMessageCenterModelFromEngine(presentation: WorkspaceAgentMessageCenterPresentation, snapshot: Pick<AgentActivitySnapshot, "sessionMessagesById" | "workspaceId">, options?: BuildWorkspaceAgentMessageCenterOptions): WorkspaceAgentMessageCenterModel;
419
+ interface WorkspaceAgentMessageCenterPresentation {
420
+ consumers: readonly WorkspaceAgentConsumerSession[];
421
+ promptStatusByKey: Readonly<Record<string, WorkspaceAgentMessageCenterPromptStatus>>;
422
+ }
423
+ declare function selectWorkspaceAgentMessageCenterPresentation(state: AgentSessionEngineState): WorkspaceAgentMessageCenterPresentation;
424
+ declare function workspaceAgentMessageCenterPresentationEqual(left: WorkspaceAgentMessageCenterPresentation, right: WorkspaceAgentMessageCenterPresentation): boolean;
425
+ type WorkspaceAgentMessageCenterPromptStatus = "idle" | "responding" | "unknown" | "failed";
426
+ declare function workspaceAgentMessageCenterPromptStatus(presentation: WorkspaceAgentMessageCenterPresentation, item: Pick<WorkspaceAgentMessageCenterItem, "agentSessionId" | "pendingPrompt">): WorkspaceAgentMessageCenterPromptStatus;
427
+
407
428
  declare function stabilizeWorkspaceAgentMessageCenterModel(previous: WorkspaceAgentMessageCenterModel | null, next: WorkspaceAgentMessageCenterModel): WorkspaceAgentMessageCenterModel;
408
429
 
409
430
  declare const messageCenterFiltersStorageKey = "tutti.agent-message-center.filters";
@@ -415,4 +436,4 @@ interface MessageCenterFilterPreferences {
415
436
  declare function readMessageCenterFilterPreferences(): MessageCenterFilterPreferences;
416
437
  declare function writeMessageCenterFilterPreferences(preferences: MessageCenterFilterPreferences): void;
417
438
 
418
- 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, type WorkspaceAgentMessageCenterPresentation, 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 };
439
+ 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 WorkspaceAgentMessageCenterPanelPresentation, type WorkspaceAgentMessageCenterPanelProps, type WorkspaceAgentMessageCenterPresentation, type WorkspaceAgentMessageCenterPromptStatus, WorkspaceAgentMessageCenterStack, MessageCenterViewMenu as WorkspaceAgentMessageCenterViewMenu, approvalOptionDisplayLabel, buildMessageCenterProviderOptions, buildMessageCenterStatusOptions, buildWorkspaceAgentInteractivePromptLabels, buildWorkspaceAgentMessageCenterModelFromEngine, getPromptToolDetails, groupMessageCenterItems, isInteractiveMessageCenterItem, isPromptRequestIdTitle, isRecentlyCompletedMessageCenterItem, isWaitingMessageCenterItem, itemMatchesViewFilters, managedAgentRoundedIconUrl, messageCenterAgentUserStackId, messageCenterFiltersStorageKey, messageCenterGroupLabel, messageCenterStackPreviewNodes, messageCenterStackPreviewText, messageCenterStackRenderId, messageCenterStackScrollSyncSegment, messageCenterStatusFilterValue, messageCenterStatusTone, messageCenterStatusToneClass, partitionMessageCenterItemsByAgentUser, readMessageCenterFilterPreferences, resolveMessageCenterNotificationAction, selectMessageCenterAttentionDeckItems, selectWorkspaceAgentMessageCenterPresentation, stabilizeWorkspaceAgentMessageCenterModel, statusFilterSummary, userAvatarPlaceholderUrl, workspaceAgentActivityStatusLabel, workspaceAgentMessageCenterPresentationEqual, workspaceAgentMessageCenterPromptStatus, writeMessageCenterFilterPreferences };