@tutti-os/agent-gui 0.0.93 → 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 (164) 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 +13 -9
  5. package/dist/agent-conversation/index.js.map +1 -1
  6. package/dist/agent-env/index.d.ts +14 -38
  7. package/dist/agent-env/index.js +2 -57
  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 -122
  12. package/dist/agent-message-center/index.js +1473 -1398
  13. package/dist/agent-message-center/index.js.map +1 -1
  14. package/dist/{agentConversationVM-CfXN_TQ2.d.ts → agentConversationVM-C335TR6S.d.ts} +112 -7
  15. package/dist/agentFileMentionContracts-Czvz6YMI.d.ts +107 -0
  16. package/dist/{agentGuiNodeTypes-rGaDqxVR.d.ts → agentGuiNodeTypes-DppADPHW.d.ts} +102 -149
  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 +431 -75
  21. package/dist/app/renderer/assets/icons/agent-vinyl-player-chassis.png +0 -0
  22. package/dist/app/renderer/assets/icons/agent-vinyl-tonearm.png +0 -0
  23. package/dist/app/renderer/assets/icons/agent-vinyls/claude-vinyl.png +0 -0
  24. package/dist/app/renderer/assets/icons/agent-vinyls/codex-vinyl.png +0 -0
  25. package/dist/app/renderer/assets/icons/agent-vinyls/cursor-vinyl.png +0 -0
  26. package/dist/app/renderer/assets/icons/agent-vinyls/hermes-vinyl.png +0 -0
  27. package/dist/app/renderer/assets/icons/agent-vinyls/openclaw-vinyl.png +0 -0
  28. package/dist/app/renderer/assets/icons/agent-vinyls/opencode-vinyl.png +0 -0
  29. package/dist/app/renderer/assets/icons/agent-vinyls/tutti-vinyl.png +0 -0
  30. package/dist/app/renderer/assets/icons/open-link-lined.svg +4 -0
  31. package/dist/{chunk-7QHBFRG5.js → chunk-3R2D4E57.js} +3137 -3396
  32. package/dist/chunk-3R2D4E57.js.map +1 -0
  33. package/dist/chunk-4YG7YK7S.js +23 -0
  34. package/dist/chunk-4YG7YK7S.js.map +1 -0
  35. package/dist/chunk-5X7YDOC6.js +42 -0
  36. package/dist/chunk-5X7YDOC6.js.map +1 -0
  37. package/dist/{chunk-IBIMGLCD.js → chunk-7J4K6WKB.js} +1 -1
  38. package/dist/chunk-7J4K6WKB.js.map +1 -0
  39. package/dist/{chunk-KQE5KV2V.js → chunk-7PFDA2HQ.js} +505 -504
  40. package/dist/chunk-7PFDA2HQ.js.map +1 -0
  41. package/dist/{chunk-M2LWH54R.js → chunk-7RDD3EWP.js} +557 -569
  42. package/dist/chunk-7RDD3EWP.js.map +1 -0
  43. package/dist/{chunk-VWXFFSIM.js → chunk-AOS2VWU6.js} +1357 -1301
  44. package/dist/chunk-AOS2VWU6.js.map +1 -0
  45. package/dist/{chunk-3HARXLAZ.js → chunk-BFNJKTDV.js} +295 -255
  46. package/dist/chunk-BFNJKTDV.js.map +1 -0
  47. package/dist/{chunk-U7D7G3UU.js → chunk-BIHBXWK5.js} +2 -2
  48. package/dist/{chunk-XQUUELKF.js → chunk-C5FV4UGI.js} +2921 -2944
  49. package/dist/chunk-C5FV4UGI.js.map +1 -0
  50. package/dist/{chunk-HOSX5C5V.js → chunk-CRO2MV2Y.js} +36 -46
  51. package/dist/chunk-CRO2MV2Y.js.map +1 -0
  52. package/dist/chunk-FGLQZ6I4.js +9 -0
  53. package/dist/chunk-FGLQZ6I4.js.map +1 -0
  54. package/dist/chunk-H6IQ63DQ.js +14 -0
  55. package/dist/chunk-H6IQ63DQ.js.map +1 -0
  56. package/dist/{chunk-4SQNOOJ3.js → chunk-JX2SIXNL.js} +1293 -1702
  57. package/dist/chunk-JX2SIXNL.js.map +1 -0
  58. package/dist/chunk-KAL4XZMA.js +231 -0
  59. package/dist/chunk-KAL4XZMA.js.map +1 -0
  60. package/dist/chunk-KJQERFKX.js +259 -0
  61. package/dist/chunk-KJQERFKX.js.map +1 -0
  62. package/dist/chunk-LQVXBT65.js +491 -0
  63. package/dist/chunk-LQVXBT65.js.map +1 -0
  64. package/dist/{chunk-AOVPGJBC.js → chunk-NITOD7WF.js} +2 -2
  65. package/dist/{chunk-7LMJXF4R.js → chunk-NJAZ7LQM.js} +20 -16
  66. package/dist/chunk-NJAZ7LQM.js.map +1 -0
  67. package/dist/chunk-NX3CZJXW.js +25 -0
  68. package/dist/chunk-NX3CZJXW.js.map +1 -0
  69. package/dist/chunk-O6W72SEP.js +93 -0
  70. package/dist/chunk-O6W72SEP.js.map +1 -0
  71. package/dist/{chunk-PSLAWU25.js → chunk-R2EWECUP.js} +7 -1
  72. package/dist/chunk-R2EWECUP.js.map +1 -0
  73. package/dist/chunk-RY6GIO3K.js +31700 -0
  74. package/dist/chunk-RY6GIO3K.js.map +1 -0
  75. package/dist/{chunk-XDV4ZRVK.js → chunk-UGVI47X6.js} +98 -37
  76. package/dist/chunk-UGVI47X6.js.map +1 -0
  77. package/dist/{chunk-XW4CVBUH.js → chunk-UQJPV6HP.js} +18 -11
  78. package/dist/chunk-UQJPV6HP.js.map +1 -0
  79. package/dist/{chunk-GAPTLVII.js → chunk-VF22EG3F.js} +1 -1
  80. package/dist/{chunk-GAPTLVII.js.map → chunk-VF22EG3F.js.map} +1 -1
  81. package/dist/{chunk-45FF4DQU.js → chunk-WEDMAVX2.js} +22 -24
  82. package/dist/chunk-WEDMAVX2.js.map +1 -0
  83. package/dist/{chunk-SXDLSEHO.js → chunk-XMO45GKA.js} +531 -401
  84. package/dist/chunk-XMO45GKA.js.map +1 -0
  85. package/dist/{chunk-UNO7CEAF.js → chunk-YE25HN6T.js} +6 -9
  86. package/dist/chunk-YE25HN6T.js.map +1 -0
  87. package/dist/context-mention-palette/index.d.ts +3 -2
  88. package/dist/context-mention-palette/index.js +19 -14
  89. package/dist/custom-mention.d.ts +44 -0
  90. package/dist/custom-mention.js +17 -0
  91. package/dist/custom-mention.js.map +1 -0
  92. package/dist/dock-icons.d.ts +6 -0
  93. package/dist/dock-icons.js +11 -0
  94. package/dist/dock-icons.js.map +1 -0
  95. package/dist/i18n/index.d.ts +852 -837
  96. package/dist/i18n/index.js +2 -2
  97. package/dist/index.d.ts +52 -1061
  98. package/dist/index.js +72 -35254
  99. package/dist/index.js.map +1 -1
  100. package/dist/mention-search.d.ts +226 -0
  101. package/dist/mention-search.js +29 -0
  102. package/dist/mention-search.js.map +1 -0
  103. package/dist/open-link-lined-JWEKUKME.svg +4 -0
  104. package/dist/provider-icons.d.ts +6 -0
  105. package/dist/provider-icons.js +12 -0
  106. package/dist/provider-icons.js.map +1 -0
  107. package/dist/provider-identity.d.ts +9 -0
  108. package/dist/provider-identity.js +21 -0
  109. package/dist/provider-identity.js.map +1 -0
  110. package/dist/runtime-BBNdWgDU.d.ts +10 -0
  111. package/dist/{types-PLFZ8SBX.d.ts → types-DX2bxgB8.d.ts} +28 -83
  112. package/dist/workbench/contribution.d.ts +32 -40
  113. package/dist/workbench/contribution.js +10 -6
  114. package/dist/workbench/index.d.ts +6 -2
  115. package/dist/workbench/index.js +24 -20
  116. package/dist/workbench/launch.d.ts +2 -5
  117. package/dist/workbench/launch.js +4 -3
  118. package/dist/workbench/providerCatalog.js +2 -1
  119. package/dist/workbench/sessionTitle.d.ts +4 -3
  120. package/dist/workbench/sessionTitle.js +4 -3
  121. package/dist/workbench/state.d.ts +1 -1
  122. package/dist/workbench/state.js +3 -2
  123. package/dist/workbench/types.d.ts +0 -3
  124. package/dist/workbench/types.js +1 -1
  125. package/dist/workspace-agent-generated-files.d.ts +20 -2
  126. package/dist/workspace-agent-generated-files.js +7 -6
  127. package/dist/workspaceAgentActivityListTypes-C7gPWYiA.d.ts +71 -0
  128. package/package.json +65 -28
  129. package/dist/AgentMentionSearchController-DD_WOred.d.ts +0 -241
  130. package/dist/AgentMessageMarkdown-DeYPURtF.d.ts +0 -7
  131. package/dist/chunk-3HARXLAZ.js.map +0 -1
  132. package/dist/chunk-45FF4DQU.js.map +0 -1
  133. package/dist/chunk-4HP6V2YA.js +0 -207
  134. package/dist/chunk-4HP6V2YA.js.map +0 -1
  135. package/dist/chunk-4SQNOOJ3.js.map +0 -1
  136. package/dist/chunk-7LMJXF4R.js.map +0 -1
  137. package/dist/chunk-7QHBFRG5.js.map +0 -1
  138. package/dist/chunk-HOSX5C5V.js.map +0 -1
  139. package/dist/chunk-IBIMGLCD.js.map +0 -1
  140. package/dist/chunk-KQE5KV2V.js.map +0 -1
  141. package/dist/chunk-LR4FA5X6.js +0 -368
  142. package/dist/chunk-LR4FA5X6.js.map +0 -1
  143. package/dist/chunk-M2LWH54R.js.map +0 -1
  144. package/dist/chunk-MKHDRIGN.js +0 -71
  145. package/dist/chunk-MKHDRIGN.js.map +0 -1
  146. package/dist/chunk-PSLAWU25.js.map +0 -1
  147. package/dist/chunk-SXDLSEHO.js.map +0 -1
  148. package/dist/chunk-UNO7CEAF.js.map +0 -1
  149. package/dist/chunk-VAKFNNKT.js +0 -410
  150. package/dist/chunk-VAKFNNKT.js.map +0 -1
  151. package/dist/chunk-VWXFFSIM.js.map +0 -1
  152. package/dist/chunk-XDV4ZRVK.js.map +0 -1
  153. package/dist/chunk-XQUUELKF.js.map +0 -1
  154. package/dist/chunk-XW4CVBUH.js.map +0 -1
  155. package/dist/plan-decision-ops.d.ts +0 -70
  156. package/dist/plan-decision-ops.js +0 -19
  157. package/dist/queued-prompt-runtime.d.ts +0 -115
  158. package/dist/queued-prompt-runtime.js +0 -9
  159. package/dist/workspaceAgentActivityListViewModel-TXH1VXrk.d.ts +0 -339
  160. package/dist/workspaceLinkActions-DS9LWqzI.d.ts +0 -74
  161. /package/dist/{plan-decision-ops.js.map → agent-gui.js.map} +0 -0
  162. /package/dist/{queued-prompt-runtime.js.map → agents.js.map} +0 -0
  163. /package/dist/{chunk-U7D7G3UU.js.map → chunk-BIHBXWK5.js.map} +0 -0
  164. /package/dist/{chunk-AOVPGJBC.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-CfXN_TQ2.js';
8
- import { o as WorkspaceAgentActivityStatus } from '../workspaceAgentActivityListViewModel-TXH1VXrk.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,35 +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
 
193
+ type WorkspaceAgentMessageCenterPanelPresentation = "drawer" | "embedded";
238
194
  interface WorkspaceAgentMessageCenterPanelProps {
239
195
  i18n?: I18nRuntime<string> | null;
240
196
  locale?: AgentGuiI18nLocale;
@@ -242,6 +198,7 @@ interface WorkspaceAgentMessageCenterPanelProps {
242
198
  model: WorkspaceAgentMessageCenterModel;
243
199
  highlightedItemId?: string | null;
244
200
  portalContainer?: HTMLElement | null;
201
+ presentation?: WorkspaceAgentMessageCenterPanelPresentation;
245
202
  onClose: () => void;
246
203
  onHighlightedItemSettled?: (itemId: string) => void;
247
204
  onLinkAction?: (action: WorkspaceLinkAction) => void;
@@ -253,6 +210,7 @@ interface WorkspaceAgentMessageCenterPanelProps {
253
210
  agentSessionId: string;
254
211
  provider: string;
255
212
  }) => void;
213
+ promptStatus?: (item: WorkspaceAgentMessageCenterItem) => "idle" | "responding" | "unknown" | "failed";
256
214
  onSubmitPrompt: (input: {
257
215
  action?: string;
258
216
  agentSessionId: string;
@@ -263,14 +221,63 @@ interface WorkspaceAgentMessageCenterPanelProps {
263
221
  }) => Promise<void> | void;
264
222
  }
265
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
+
266
273
  declare function MessageCenterGroupHeading({ group }: {
267
- group: ReturnType<typeof groupMessageCenterItems>[number];
268
- }): JSX.Element;
274
+ group: MessageCenterGroup;
275
+ }): React.JSX.Element;
269
276
 
270
277
  interface WorkspaceAgentMessageCenterAttentionDeckProps {
271
278
  items: WorkspaceAgentMessageCenterItem[];
272
279
  highlightedItemId?: string | null;
273
- submittingPromptKey: string | null;
280
+ isPromptSubmitting: (item: WorkspaceAgentMessageCenterItem) => boolean;
274
281
  registerNode?: (itemId: string, node: HTMLElement | null) => void;
275
282
  renderCard?: (input: WorkspaceAgentMessageCenterAttentionDeckRenderCardInput) => ReactNode;
276
283
  onLinkAction?: (action: WorkspaceLinkAction) => void;
@@ -298,7 +305,7 @@ interface WorkspaceAgentMessageCenterAttentionDeckRenderCardInput {
298
305
  requestId: string;
299
306
  }) => void;
300
307
  }
301
- 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;
302
309
 
303
310
  declare function MessageCenterViewMenu({ filtersActive, groupBy, providerFilters, providerOptions, statusFilters, statusOptions, onClearFilters, onGroupByChange, onProviderToggle, onStatusToggle }: {
304
311
  filtersActive?: boolean;
@@ -402,6 +409,22 @@ declare function approvalOptionDisplayLabel(option: {
402
409
  feedback?: boolean;
403
410
  }): string;
404
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
+
405
428
  declare function stabilizeWorkspaceAgentMessageCenterModel(previous: WorkspaceAgentMessageCenterModel | null, next: WorkspaceAgentMessageCenterModel): WorkspaceAgentMessageCenterModel;
406
429
 
407
430
  declare const messageCenterFiltersStorageKey = "tutti.agent-message-center.filters";
@@ -413,4 +436,4 @@ interface MessageCenterFilterPreferences {
413
436
  declare function readMessageCenterFilterPreferences(): MessageCenterFilterPreferences;
414
437
  declare function writeMessageCenterFilterPreferences(preferences: MessageCenterFilterPreferences): void;
415
438
 
416
- 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 };
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 };