@tutti-os/agent-gui 0.0.233 → 0.0.234

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 (87) hide show
  1. package/README.md +49 -0
  2. package/dist/{AgentRichTextReadonly-U3XUJYCW.js → AgentRichTextReadonly-CCELQPHE.js} +5 -5
  3. package/dist/agent-conversation/index.d.ts +17 -4
  4. package/dist/agent-conversation/index.js +13 -9
  5. package/dist/agent-conversation/index.js.map +1 -1
  6. package/dist/agent-gui.d.ts +19 -3
  7. package/dist/agent-gui.js +22 -16
  8. package/dist/agent-message-center/index.d.ts +1 -1
  9. package/dist/agent-message-center/index.js +10 -7
  10. package/dist/agent-message-center/index.js.map +1 -1
  11. package/dist/{agentGuiNodeTypes-DW7T--Y8.d.ts → agentGuiNodeTypes-Dgl7kQHA.d.ts} +2 -2
  12. package/dist/agents.d.ts +1 -1
  13. package/dist/app/renderer/agentactivity.css +17 -0
  14. package/dist/{chunk-M6WEFXPL.js → chunk-2MCNNB2P.js} +2 -24
  15. package/dist/chunk-2MCNNB2P.js.map +1 -0
  16. package/dist/{chunk-CQFT3MI5.js → chunk-3YYI6RXA.js} +7 -5
  17. package/dist/{chunk-CQFT3MI5.js.map → chunk-3YYI6RXA.js.map} +1 -1
  18. package/dist/{chunk-EDP4D42H.js → chunk-45KN5Z5F.js} +877 -871
  19. package/dist/chunk-45KN5Z5F.js.map +1 -0
  20. package/dist/{chunk-T57ZZWTC.js → chunk-4HAG3FOY.js} +2 -2
  21. package/dist/{chunk-ZBI6R46N.js → chunk-5DN5N2XS.js} +2 -2
  22. package/dist/{chunk-BCBB4HOV.js → chunk-634MNSI5.js} +2 -2
  23. package/dist/chunk-A4KKC324.js +4768 -0
  24. package/dist/chunk-A4KKC324.js.map +1 -0
  25. package/dist/chunk-ALAGL6VL.js +48 -0
  26. package/dist/chunk-ALAGL6VL.js.map +1 -0
  27. package/dist/{chunk-2STAUA73.js → chunk-AYTUAZE3.js} +5 -2
  28. package/dist/chunk-AYTUAZE3.js.map +1 -0
  29. package/dist/{chunk-SWO67UWQ.js → chunk-CZOZBUIM.js} +7 -7
  30. package/dist/{chunk-SWO67UWQ.js.map → chunk-CZOZBUIM.js.map} +1 -1
  31. package/dist/{chunk-2L2LVSOD.js → chunk-EHNPHZE4.js} +881 -5812
  32. package/dist/chunk-EHNPHZE4.js.map +1 -0
  33. package/dist/{chunk-N5356722.js → chunk-EKQ7UX2B.js} +13 -319
  34. package/dist/chunk-EKQ7UX2B.js.map +1 -0
  35. package/dist/{chunk-ZXEICU6J.js → chunk-KK7YXPTS.js} +3 -1
  36. package/dist/chunk-KK7YXPTS.js.map +1 -0
  37. package/dist/{chunk-WGCDSA7P.js → chunk-MBM7PJIF.js} +27 -506
  38. package/dist/chunk-MBM7PJIF.js.map +1 -0
  39. package/dist/chunk-RMC2MGL4.js +557 -0
  40. package/dist/chunk-RMC2MGL4.js.map +1 -0
  41. package/dist/{chunk-JA6XAKKE.js → chunk-TWF6JXPC.js} +2 -2
  42. package/dist/{chunk-7AYFKNLD.js → chunk-TWMV6YTX.js} +4 -4
  43. package/dist/chunk-VV3YIU5W.js +25 -0
  44. package/dist/chunk-VV3YIU5W.js.map +1 -0
  45. package/dist/{chunk-GLVENTN6.js → chunk-WXLO33YP.js} +2 -2
  46. package/dist/chunk-XWPHTXEM.js +529 -0
  47. package/dist/chunk-XWPHTXEM.js.map +1 -0
  48. package/dist/chunk-YEXRTXTE.js +315 -0
  49. package/dist/chunk-YEXRTXTE.js.map +1 -0
  50. package/dist/{chunk-WMJDOMG6.js → chunk-ZELGKLW5.js} +4 -4
  51. package/dist/composer-projection.d.ts +37 -0
  52. package/dist/composer-projection.js +21 -0
  53. package/dist/composer-projection.js.map +1 -0
  54. package/dist/context-mention-palette/index.js +9 -7
  55. package/dist/conversation-projection.d.ts +551 -0
  56. package/dist/conversation-projection.js +42 -0
  57. package/dist/conversation-projection.js.map +1 -0
  58. package/dist/conversation-rail-projection.js +3 -3
  59. package/dist/i18n/index.d.ts +2 -0
  60. package/dist/i18n/index.js +2 -2
  61. package/dist/index.d.ts +32 -13
  62. package/dist/index.js +22 -16
  63. package/dist/index.js.map +1 -1
  64. package/dist/mention-search.js +7 -5
  65. package/dist/{types-CHAMK2g7.d.ts → types-DtXXsISB.d.ts} +1 -1
  66. package/dist/workbench/contribution.js +4 -4
  67. package/dist/workbench/index.js +4 -4
  68. package/dist/workbench/sessionTitle.js +3 -3
  69. package/dist/workspace-agent-generated-files.d.ts +1 -12
  70. package/dist/workspaceAgentActivityListTypes-BUKNyMbh.d.ts +48 -0
  71. package/dist/{workspaceLinkActions-CzsbvGmC.d.ts → workspaceLinkActions-DxyzMy10.d.ts} +13 -12
  72. package/package.json +31 -17
  73. package/dist/chunk-2L2LVSOD.js.map +0 -1
  74. package/dist/chunk-2STAUA73.js.map +0 -1
  75. package/dist/chunk-EDP4D42H.js.map +0 -1
  76. package/dist/chunk-M6WEFXPL.js.map +0 -1
  77. package/dist/chunk-N5356722.js.map +0 -1
  78. package/dist/chunk-WGCDSA7P.js.map +0 -1
  79. package/dist/chunk-ZXEICU6J.js.map +0 -1
  80. /package/dist/{AgentRichTextReadonly-U3XUJYCW.js.map → AgentRichTextReadonly-CCELQPHE.js.map} +0 -0
  81. /package/dist/{chunk-T57ZZWTC.js.map → chunk-4HAG3FOY.js.map} +0 -0
  82. /package/dist/{chunk-ZBI6R46N.js.map → chunk-5DN5N2XS.js.map} +0 -0
  83. /package/dist/{chunk-BCBB4HOV.js.map → chunk-634MNSI5.js.map} +0 -0
  84. /package/dist/{chunk-JA6XAKKE.js.map → chunk-TWF6JXPC.js.map} +0 -0
  85. /package/dist/{chunk-7AYFKNLD.js.map → chunk-TWMV6YTX.js.map} +0 -0
  86. /package/dist/{chunk-GLVENTN6.js.map → chunk-WXLO33YP.js.map} +0 -0
  87. /package/dist/{chunk-WMJDOMG6.js.map → chunk-ZELGKLW5.js.map} +0 -0
@@ -1,31 +1,16 @@
1
- import {
2
- changedFilesForSession,
3
- workspaceAgentSessionMessageAliases
4
- } from "./chunk-VMPA46ET.js";
5
- import {
6
- resolveWorkspaceAgentSessionSortTimeUnixMs
7
- } from "./chunk-YMXYBG7U.js";
8
- import {
9
- isWorkspaceAgentSyntheticControlMessage
10
- } from "./chunk-XJ34OIEQ.js";
11
1
  import {
12
2
  normalizeAgentSessionMentionTitle,
13
3
  resolveAgentSessionMentionIconUrl
14
- } from "./chunk-SWO67UWQ.js";
4
+ } from "./chunk-CZOZBUIM.js";
15
5
  import {
16
6
  resolveAgentMentionFileThumbnailUrl
17
7
  } from "./chunk-3V5OCA2M.js";
18
8
  import {
19
- getOptionalAgentHostApi,
20
- workspaceAgentProviderLabel
21
- } from "./chunk-M6WEFXPL.js";
9
+ getOptionalAgentHostApi
10
+ } from "./chunk-2MCNNB2P.js";
22
11
  import {
23
- translate,
24
- translateInUiLanguage
25
- } from "./chunk-GLVENTN6.js";
26
- import {
27
- normalizeAgentTitleText
28
- } from "./chunk-MIJXEELH.js";
12
+ translate
13
+ } from "./chunk-WXLO33YP.js";
29
14
  import {
30
15
  AGENT_CONTEXT_MENTION_PROVIDER_IDS
31
16
  } from "./chunk-RMQREVJY.js";
@@ -98,296 +83,6 @@ function agentMentionEmptyGroupLabel(groupId, query) {
98
83
  return translate("agentHost.agentGui.mentionEmptyIssues");
99
84
  }
100
85
 
101
- // shared/workspaceAgentActivityListProjection.ts
102
- import { selectRootAgentActivitySessions } from "@tutti-os/agent-activity-core";
103
-
104
- // shared/workspaceAgentActivityStatus.ts
105
- function resolveWorkspaceAgentActivityStatus(session) {
106
- const normalized = canonicalSessionStatus(session);
107
- switch (normalized) {
108
- case "failed":
109
- return "failed";
110
- case "canceled":
111
- return "canceled";
112
- case "completed":
113
- return "completed";
114
- case "waiting":
115
- return "waiting";
116
- case "working":
117
- return "working";
118
- default:
119
- return "idle";
120
- }
121
- }
122
- function canonicalSessionStatus(session) {
123
- if ((session.pendingInteractions?.length ?? 0) > 0) return "waiting";
124
- if (session.activeTurn && session.activeTurn.phase !== "settled") {
125
- return session.activeTurn.phase === "waiting" ? "waiting" : "working";
126
- }
127
- switch (session.latestTurn?.outcome) {
128
- case "completed":
129
- return "completed";
130
- case "failed":
131
- return "failed";
132
- case "canceled":
133
- case "interrupted":
134
- return "canceled";
135
- default:
136
- return "idle";
137
- }
138
- }
139
-
140
- // shared/workspaceAgentLatestActivitySummary.ts
141
- function fallbackSummary(status) {
142
- switch (status) {
143
- case "working":
144
- return translate("agentHost.workspaceAgentActivityStatusWorking");
145
- case "waiting":
146
- return translate("agentHost.workspaceAgentActivityStatusWaiting");
147
- case "idle":
148
- return translate("agentHost.workspaceAgentActivityStatusIdle");
149
- case "canceled":
150
- case "completed":
151
- return translate("agentHost.workspaceAgentActivityStatusEnd");
152
- case "failed":
153
- return translate("agentHost.workspaceAgentActivityStatusFailed");
154
- }
155
- }
156
- function isWorkspaceAgentUntitledConversation(title) {
157
- return localizedWorkspaceAgentLabelSet(
158
- "agentHost.workspaceAgentsUntitledConversation"
159
- ).has(compactText(title));
160
- }
161
- function compactText(value) {
162
- return value.trim().replace(/\s+/g, " ");
163
- }
164
- function localizedWorkspaceAgentLabelSet(key) {
165
- return new Set(
166
- ["en", "zh-CN"].map((language) => compactText(translateInUiLanguage(language, key))).filter(Boolean)
167
- );
168
- }
169
-
170
- // shared/workspaceAgentActivitySummary.ts
171
- function resolveWorkspaceAgentActivityTitle(session) {
172
- return session.title.trim() || workspaceAgentUntitledConversationLabel();
173
- }
174
- function resolveLatestActivity(messages, status, actors) {
175
- const latestMessage = latestDisplayableMessage(messages);
176
- if (latestMessage) {
177
- return {
178
- actorName: messageRole(latestMessage.message) === "user" ? actors.userName : actors.agentName,
179
- summary: latestMessage.text
180
- };
181
- }
182
- return {
183
- actorName: actors.agentName,
184
- summary: fallbackSummary(status)
185
- };
186
- }
187
- function latestDisplayableMessage(messages) {
188
- return messages.map((message) => ({
189
- message,
190
- text: messageDisplayText(message),
191
- time: messageTime(message)
192
- })).filter(
193
- (item) => item.text.length > 0 && normalizeToken(item.message.kind) !== "tool_call"
194
- ).sort((left, right) => {
195
- const timeDiff = (right.time ?? 0) - (left.time ?? 0);
196
- if (timeDiff !== 0) {
197
- return timeDiff;
198
- }
199
- return right.message.messageId.localeCompare(left.message.messageId);
200
- })[0] ?? null;
201
- }
202
- function messageDisplayText(message) {
203
- const payload = message.payload ?? {};
204
- const text = normalizeAgentTitleText(
205
- compactText2(
206
- stringValue(payload.displayPrompt) || stringValue(payload.text) || stringValue(payload.content) || stringValue(payload.message) || stringValue(payload.body) || stringValue(payload.title) || ""
207
- )
208
- );
209
- return isWorkspaceAgentSyntheticControlMessage(text) ? "" : text;
210
- }
211
- function messageRole(message) {
212
- return normalizeToken(message.role);
213
- }
214
- function messageTime(message) {
215
- return message.occurredAtUnixMs ?? message.completedAtUnixMs ?? message.startedAtUnixMs;
216
- }
217
- function normalizeToken(value) {
218
- return value?.trim().toLowerCase() ?? "";
219
- }
220
- function compactText2(value) {
221
- return value.replace(/\s+/g, " ").trim();
222
- }
223
- function workspaceAgentUntitledConversationLabel() {
224
- return normalizeAgentTitleText(
225
- translate("agentHost.workspaceAgentsUntitledConversation")
226
- );
227
- }
228
- function stringValue(value) {
229
- return typeof value === "string" && value.trim() ? value.trim() : null;
230
- }
231
-
232
- // shared/workspaceAgentSessionTitle.ts
233
- function resolveDisplayableWorkspaceAgentSessionTitle(session) {
234
- const title = session.title.trim();
235
- if (!title || isWorkspaceAgentUntitledConversation(title) || isWorkspaceAgentSyntheticControlMessage(title)) {
236
- return "";
237
- }
238
- const provider = session.provider?.trim();
239
- if (provider && workspaceAgentProviderLabel(provider).toLowerCase() === title.toLowerCase()) {
240
- return "";
241
- }
242
- return title;
243
- }
244
-
245
- // shared/workspaceAgentActivityListOrdering.ts
246
- function shouldHideEmptyRuntimePlaceholderSession(session, messages, status, options) {
247
- if (messages.length > 0) {
248
- return false;
249
- }
250
- if (!hasLoadedSessionMessageRecord(session, options.sessionMessagesById)) {
251
- return false;
252
- }
253
- if (!isRuntimePlaceholderTerminalStatus(status)) {
254
- return false;
255
- }
256
- return resolveDisplayableWorkspaceAgentSessionTitle(session) === "";
257
- }
258
- function hasLoadedSessionMessageRecord(session, sessionMessagesById) {
259
- if (!sessionMessagesById) {
260
- return false;
261
- }
262
- return workspaceAgentSessionMessageAliases(session).some(
263
- (alias) => alias in sessionMessagesById
264
- );
265
- }
266
- function isRuntimePlaceholderTerminalStatus(status) {
267
- return status === "idle" || status === "completed" || status === "canceled";
268
- }
269
- function compareActivities(left, right) {
270
- const timeDiff = right.sortTimeUnixMs - left.sortTimeUnixMs;
271
- if (timeDiff !== 0) {
272
- return timeDiff;
273
- }
274
- return left.sessionId.localeCompare(right.sessionId);
275
- }
276
-
277
- // shared/workspaceAgentActivityListProjection.ts
278
- function buildWorkspaceAgentActivityListViewModel(snapshot, options = {}) {
279
- const activities = selectRootAgentActivitySessions(snapshot).map((session) => {
280
- const presence = snapshot.presences.find(
281
- (candidate) => candidate.provider === session.provider && Boolean(candidate.userId) && candidate.userId === session.userId
282
- ) ?? null;
283
- const messages = resolveWorkspaceAgentSessionMessages(
284
- options.sessionMessagesById,
285
- session
286
- );
287
- const status = resolveWorkspaceAgentActivityStatus(session);
288
- if (shouldHideEmptyRuntimePlaceholderSession(
289
- session,
290
- messages,
291
- status,
292
- options
293
- )) {
294
- return null;
295
- }
296
- const user = resolveActivityUser(session, presence, options);
297
- const agentProvider = resolveProvider(session, presence);
298
- const agentName = workspaceAgentProviderLabel(agentProvider);
299
- const resolvedSortTimeUnixMs = resolveWorkspaceAgentSessionSortTimeUnixMs(session);
300
- const latestActivity = resolveLatestActivity(messages, status, {
301
- agentName,
302
- userName: user.userName
303
- });
304
- const activity = {
305
- id: `activity-${session.agentSessionId}`,
306
- sessionId: session.agentSessionId,
307
- userId: user.userId,
308
- userName: user.userName,
309
- ...user.userAvatarUrl ? { userAvatarUrl: user.userAvatarUrl } : {},
310
- agentProvider,
311
- agentName,
312
- title: resolveWorkspaceAgentActivityTitle(session),
313
- status,
314
- latestActivitySummary: latestActivity.summary,
315
- latestActivityActorName: latestActivity.actorName,
316
- changedFiles: changedFilesForSession(messages),
317
- sortTimeUnixMs: resolvedSortTimeUnixMs,
318
- readTimeUnixMs: readTimeUnixMs(session, status, resolvedSortTimeUnixMs)
319
- };
320
- return activity;
321
- }).filter(
322
- (activity) => activity !== null
323
- ).sort(compareActivities);
324
- return { activities };
325
- }
326
- function resolveWorkspaceAgentSessionMessages(sessionMessagesById, session) {
327
- if (!sessionMessagesById) {
328
- return [];
329
- }
330
- for (const alias of workspaceAgentSessionMessageAliases(session)) {
331
- const messages = sessionMessagesById[alias];
332
- if (messages) {
333
- return messages;
334
- }
335
- }
336
- return [];
337
- }
338
- function resolveActivityUser(session, presence, options) {
339
- if (presence) {
340
- return resolveUserFromId(presence.userId ?? "", options);
341
- }
342
- const sessionUserId = session.userId?.trim() ?? "";
343
- if (sessionUserId) {
344
- return resolveUserFromId(sessionUserId, options);
345
- }
346
- return {
347
- userId: null,
348
- userName: "Unknown member"
349
- };
350
- }
351
- function resolveUserFromId(rawUserId, options) {
352
- const userId = rawUserId.trim();
353
- const profile = options.userProfilesById?.[userId];
354
- const profileName = compactText3(profile?.name ?? "");
355
- const profileAvatar = profile?.avatar?.trim();
356
- const rawName = profileName || userId || "Unknown member";
357
- return {
358
- userId,
359
- userName: stripTrailingParentheticalEmailFromLabel(rawName) || rawName,
360
- ...profileAvatar ? { userAvatarUrl: profileAvatar } : {}
361
- };
362
- }
363
- function resolveProvider(session, presence) {
364
- const sessionProvider = normalizeProvider(session.provider);
365
- if (sessionProvider) {
366
- return sessionProvider;
367
- }
368
- const presenceProvider = normalizeProvider(presence?.provider);
369
- if (presenceProvider) {
370
- return presenceProvider;
371
- }
372
- return "unknown";
373
- }
374
- function normalizeProvider(provider) {
375
- const trimmed = provider?.trim();
376
- return trimmed ? trimmed.toLowerCase() : null;
377
- }
378
- function readTimeUnixMs(session, status, fallbackUnixMs) {
379
- if (status === "completed" || status === "failed") {
380
- return session.endedAtUnixMs ?? session.updatedAtUnixMs ?? fallbackUnixMs;
381
- }
382
- return fallbackUnixMs;
383
- }
384
- function stripTrailingParentheticalEmailFromLabel(label) {
385
- return label.trim().replace(/\s*\([^)]*@[^)]+\)\s*$/u, "").trim();
386
- }
387
- function compactText3(value) {
388
- return value.replace(/\s+/g, " ").trim();
389
- }
390
-
391
86
  // shared/richText/richTextDocument.ts
392
87
  import { isRichTextMentionHref } from "@tutti-os/ui-rich-text/core";
393
88
 
@@ -500,7 +195,7 @@ function resolveMentionGroupTotalCount(groupId, totalCounts, itemCount) {
500
195
  function normalizeQuery(value) {
501
196
  return value.replace(/\s+/g, " ").trim();
502
197
  }
503
- function compactText4(value) {
198
+ function compactText(value) {
504
199
  return value?.replace(/\s+/g, " ").trim() ?? "";
505
200
  }
506
201
 
@@ -993,7 +688,7 @@ function normalizeSessionMentionItems(input) {
993
688
  return input.items.filter((item) => item.kind === "session");
994
689
  }
995
690
  function providerItemToAgentMentionItem(input) {
996
- const label = compactText4(input.label);
691
+ const label = compactText(input.label);
997
692
  if (!label) {
998
693
  return null;
999
694
  }
@@ -1072,7 +767,7 @@ function providerItemToAgentMentionItem(input) {
1072
767
  title: label,
1073
768
  iconUrl: presentation.iconUrl?.trim() || void 0,
1074
769
  status: presentation.status?.trim() || void 0,
1075
- contentPreview: compactText4(presentation.description) || compactText4(input.subtitle) || void 0
770
+ contentPreview: compactText(presentation.description) || compactText(input.subtitle) || void 0
1076
771
  };
1077
772
  }
1078
773
  if (input.providerId === WORKSPACE_APP_PROVIDER_ID) {
@@ -1089,7 +784,7 @@ function providerItemToAgentMentionItem(input) {
1089
784
  targetId: appId,
1090
785
  appId,
1091
786
  name: label,
1092
- description: compactText4(presentation.description) || compactText4(presentation.subtitle) || compactText4(input.subtitle) || void 0,
787
+ description: compactText(presentation.description) || compactText(presentation.subtitle) || compactText(input.subtitle) || void 0,
1093
788
  iconUrl: presentation.iconUrl?.trim() || void 0,
1094
789
  referencesListSupported: presentation.referencesListSupported === "true"
1095
790
  };
@@ -1107,7 +802,7 @@ function providerItemToAgentMentionItem(input) {
1107
802
  workspaceId,
1108
803
  targetId,
1109
804
  name: label,
1110
- description: compactText4(presentation.description) || compactText4(presentation.subtitle) || compactText4(input.subtitle) || void 0,
805
+ description: compactText(presentation.description) || compactText(presentation.subtitle) || compactText(input.subtitle) || void 0,
1111
806
  agentProviderId,
1112
807
  iconUrl: presentation.iconUrl?.trim() || void 0,
1113
808
  availabilityStatus: presentation.status?.trim() || void 0
@@ -1116,8 +811,8 @@ function providerItemToAgentMentionItem(input) {
1116
811
  if (input.providerId === AGENT_SESSION_PROVIDER_ID) {
1117
812
  const agentName = presentation.subtitle?.trim() || "";
1118
813
  const title = normalizeAgentSessionMentionTitle(label) || label;
1119
- const description = compactText4(presentation.description);
1120
- const summaryPreview = description || compactText4(input.subtitle) || void 0;
814
+ const description = compactText(presentation.description);
815
+ const summaryPreview = description || compactText(input.subtitle) || void 0;
1121
816
  return {
1122
817
  kind: "session",
1123
818
  href: createRichTextMentionHref2({
@@ -3197,7 +2892,6 @@ function preloadAgentMentionBrowse(input) {
3197
2892
  }
3198
2893
 
3199
2894
  export {
3200
- buildWorkspaceAgentActivityListViewModel,
3201
2895
  agentGuiScheduler,
3202
2896
  agentMentionGroupLabel,
3203
2897
  agentMentionFilterLabel,
@@ -3211,4 +2905,4 @@ export {
3211
2905
  AgentMentionSearchController,
3212
2906
  preloadAgentMentionBrowse
3213
2907
  };
3214
- //# sourceMappingURL=chunk-N5356722.js.map
2908
+ //# sourceMappingURL=chunk-EKQ7UX2B.js.map