@tutti-os/agent-gui 0.0.66 → 0.0.67

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 (86) hide show
  1. package/dist/agent-conversation/index.d.ts +2 -2
  2. package/dist/agent-conversation/index.js +8 -8
  3. package/dist/agent-message-center/index.js +10 -10
  4. package/dist/{agentGuiNodeTypes-B9Aq3UEU.d.ts → agentGuiNodeTypes-DNXndXhV.d.ts} +1 -1
  5. package/dist/app/renderer/agentactivity.css +66 -0
  6. package/dist/app/renderer/assets/icons/agents/tutti-flat-filled.svg +12 -0
  7. package/dist/{chunk-N4I3TD4G.js → chunk-BX4UBTOI.js} +70 -2
  8. package/dist/chunk-BX4UBTOI.js.map +1 -0
  9. package/dist/{chunk-T3KGZV35.js → chunk-CTYXJGSW.js} +3 -3
  10. package/dist/{chunk-P5C3ED3V.js → chunk-DP2X4J2D.js} +3 -3
  11. package/dist/{chunk-LJE2W4EM.js → chunk-DQTBWOIK.js} +27 -4
  12. package/dist/chunk-DQTBWOIK.js.map +1 -0
  13. package/dist/chunk-IL2ORY23.js +193 -0
  14. package/dist/chunk-IL2ORY23.js.map +1 -0
  15. package/dist/{chunk-NOTZW5WH.js → chunk-JGU2VMDA.js} +3 -3
  16. package/dist/{chunk-DL6BMEHI.js → chunk-JWWHS34V.js} +3 -3
  17. package/dist/{chunk-6ULTMCKP.js → chunk-KS4ULVGM.js} +2 -2
  18. package/dist/{chunk-KRJF7WLJ.js → chunk-MA254MXR.js} +41 -7
  19. package/dist/chunk-MA254MXR.js.map +1 -0
  20. package/dist/{chunk-2IMBPRKV.js → chunk-NCAVJEHI.js} +1 -1
  21. package/dist/chunk-NCAVJEHI.js.map +1 -0
  22. package/dist/{chunk-R2NGSPQS.js → chunk-OEJQJP65.js} +3 -1
  23. package/dist/{chunk-R2NGSPQS.js.map → chunk-OEJQJP65.js.map} +1 -1
  24. package/dist/{chunk-UBBHWDMP.js → chunk-PFKY5W76.js} +9 -9
  25. package/dist/chunk-PFKY5W76.js.map +1 -0
  26. package/dist/{chunk-JTFWT6DK.js → chunk-QZYGCZNQ.js} +4 -4
  27. package/dist/{chunk-CKCUEHBW.js → chunk-RNFP7CUO.js} +9 -8
  28. package/dist/chunk-RNFP7CUO.js.map +1 -0
  29. package/dist/{chunk-UI3YDJTC.js → chunk-SKWDZTEV.js} +6 -4
  30. package/dist/chunk-SKWDZTEV.js.map +1 -0
  31. package/dist/{chunk-LQHYHF36.js → chunk-UAXKJNM2.js} +14 -7
  32. package/dist/chunk-UAXKJNM2.js.map +1 -0
  33. package/dist/{chunk-CTJQTUQ3.js → chunk-VIJQ5C33.js} +5 -5
  34. package/dist/{chunk-VBTPXEFH.js → chunk-XBR7D7X2.js} +2 -2
  35. package/dist/{chunk-DXVMRZHH.js → chunk-YU3XLPLC.js} +2 -2
  36. package/dist/{chunk-Z26P2QNT.js → chunk-YYAP6IK7.js} +4 -166
  37. package/dist/chunk-YYAP6IK7.js.map +1 -0
  38. package/dist/{chunk-HNODQVG2.js → chunk-ZABN3POD.js} +6 -2
  39. package/dist/chunk-ZABN3POD.js.map +1 -0
  40. package/dist/context-mention-palette/index.js +9 -9
  41. package/dist/cursor-flat-filled-CL7N3BTZ.svg +3 -0
  42. package/dist/i18n/index.d.ts +40 -6
  43. package/dist/i18n/index.js +2 -2
  44. package/dist/index.d.ts +48 -6
  45. package/dist/index.js +1420 -921
  46. package/dist/index.js.map +1 -1
  47. package/dist/queued-prompt-runtime.d.ts +2 -2
  48. package/dist/tutti-flat-filled-K32QBTZE.svg +12 -0
  49. package/dist/{types-Bxn8bLEp.d.ts → types-BxOwnK7K.d.ts} +3 -3
  50. package/dist/workbench/contribution.d.ts +1 -1
  51. package/dist/workbench/contribution.js +8 -8
  52. package/dist/workbench/index.d.ts +1 -1
  53. package/dist/workbench/index.js +11 -11
  54. package/dist/workbench/launch.d.ts +1 -1
  55. package/dist/workbench/launch.js +3 -3
  56. package/dist/workbench/providerCatalog.d.ts +4 -4
  57. package/dist/workbench/providerCatalog.js +1 -1
  58. package/dist/workbench/sessionTitle.d.ts +1 -1
  59. package/dist/workbench/sessionTitle.js +3 -3
  60. package/dist/workbench/state.d.ts +1 -1
  61. package/dist/workbench/state.js +3 -3
  62. package/dist/workbench/types.d.ts +2 -2
  63. package/dist/workbench/types.js +1 -1
  64. package/dist/workspace-agent-generated-files.js +4 -4
  65. package/package.json +12 -12
  66. package/dist/chunk-2IMBPRKV.js.map +0 -1
  67. package/dist/chunk-CKCUEHBW.js.map +0 -1
  68. package/dist/chunk-HNODQVG2.js.map +0 -1
  69. package/dist/chunk-KRJF7WLJ.js.map +0 -1
  70. package/dist/chunk-LJE2W4EM.js.map +0 -1
  71. package/dist/chunk-LQHYHF36.js.map +0 -1
  72. package/dist/chunk-N4I3TD4G.js.map +0 -1
  73. package/dist/chunk-TYGL25EL.js +0 -30
  74. package/dist/chunk-TYGL25EL.js.map +0 -1
  75. package/dist/chunk-UBBHWDMP.js.map +0 -1
  76. package/dist/chunk-UI3YDJTC.js.map +0 -1
  77. package/dist/chunk-Z26P2QNT.js.map +0 -1
  78. /package/dist/{chunk-T3KGZV35.js.map → chunk-CTYXJGSW.js.map} +0 -0
  79. /package/dist/{chunk-P5C3ED3V.js.map → chunk-DP2X4J2D.js.map} +0 -0
  80. /package/dist/{chunk-NOTZW5WH.js.map → chunk-JGU2VMDA.js.map} +0 -0
  81. /package/dist/{chunk-DL6BMEHI.js.map → chunk-JWWHS34V.js.map} +0 -0
  82. /package/dist/{chunk-6ULTMCKP.js.map → chunk-KS4ULVGM.js.map} +0 -0
  83. /package/dist/{chunk-JTFWT6DK.js.map → chunk-QZYGCZNQ.js.map} +0 -0
  84. /package/dist/{chunk-CTJQTUQ3.js.map → chunk-VIJQ5C33.js.map} +0 -0
  85. /package/dist/{chunk-VBTPXEFH.js.map → chunk-XBR7D7X2.js.map} +0 -0
  86. /package/dist/{chunk-DXVMRZHH.js.map → chunk-YU3XLPLC.js.map} +0 -0
@@ -0,0 +1,193 @@
1
+ // shared/workspaceAgentProviderLabel.ts
2
+ function workspaceAgentProviderLabel(provider) {
3
+ const normalized = provider.trim().toLowerCase();
4
+ switch (normalized) {
5
+ case "codex":
6
+ return "Codex";
7
+ case "claude-code":
8
+ return "Claude Code";
9
+ case "gemini":
10
+ return "Gemini";
11
+ case "openclaw":
12
+ return "OpenClaw";
13
+ case "hermes":
14
+ return "Hermes";
15
+ case "nexight":
16
+ return "Nexight";
17
+ case "unknown":
18
+ return "Unknown";
19
+ default:
20
+ return titleCase(provider);
21
+ }
22
+ }
23
+ function titleCase(value) {
24
+ return value.split(/[-_\s]+/).filter(Boolean).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join(" ");
25
+ }
26
+
27
+ // shared/workspaceAgentActivityTypes.ts
28
+ import {
29
+ mergeAgentActivityMessages
30
+ } from "@tutti-os/agent-activity-core";
31
+ var WORKSPACE_AGENT_ACTIVITY_RUNTIME_SESSION_ORIGIN = "WORKSPACE_AGENT_SESSION_ORIGIN_RUNTIME";
32
+ function isWorkspaceAgentActivityRuntimeSessionOrigin(sessionOrigin) {
33
+ const normalized = sessionOrigin?.trim() ?? "";
34
+ return normalized === "" || normalized === WORKSPACE_AGENT_ACTIVITY_RUNTIME_SESSION_ORIGIN;
35
+ }
36
+ function createWorkspaceAgentActivityUserMessageIdFromClientSubmitId(clientSubmitId) {
37
+ const normalized = clientSubmitId.trim();
38
+ return normalized ? `client-submit:user:${normalized}` : null;
39
+ }
40
+ function isWorkspaceAgentActivityOptimisticMessage(message) {
41
+ return message.payload?.__agentGuiOptimisticPrompt === true;
42
+ }
43
+ function selectWorkspaceAgentActivityOverlayMessages(input) {
44
+ const durableMessages = input.durableMessages ?? [];
45
+ const localMessages = input.localMessages ?? [];
46
+ if (localMessages.length === 0) {
47
+ return [];
48
+ }
49
+ const durableIdentities = new Set(
50
+ durableMessages.map(workspaceAgentActivityMessageIdentity).filter((identity) => identity !== null)
51
+ );
52
+ const durableClientSubmitIds = new Set(
53
+ durableMessages.map(workspaceAgentActivityClientSubmitId).filter(
54
+ (clientSubmitId) => clientSubmitId !== null
55
+ )
56
+ );
57
+ const durableUserPromptSignatures = new Set(
58
+ durableMessages.map(workspaceAgentActivityUserPromptSignature).filter((signature) => signature !== null)
59
+ );
60
+ return localMessages.filter((message) => {
61
+ const identity = workspaceAgentActivityMessageIdentity(message);
62
+ if (identity !== null && durableIdentities.has(identity)) {
63
+ return false;
64
+ }
65
+ if (isWorkspaceAgentActivityOptimisticMessage(message)) {
66
+ const clientSubmitId = workspaceAgentActivityClientSubmitId(message);
67
+ if (clientSubmitId !== null && durableClientSubmitIds.has(clientSubmitId)) {
68
+ return false;
69
+ }
70
+ if (clientSubmitId !== null) {
71
+ return true;
72
+ }
73
+ const signature = workspaceAgentActivityUserPromptSignature(message);
74
+ return signature === null || !durableUserPromptSignatures.has(signature);
75
+ }
76
+ return true;
77
+ });
78
+ }
79
+ function mergeWorkspaceAgentActivityDurableAndOverlayMessages(input) {
80
+ const durableMessages = input.durableMessages ?? [];
81
+ const overlayMessages = selectWorkspaceAgentActivityOverlayMessages(input);
82
+ if (overlayMessages.length === 0) {
83
+ return [...durableMessages];
84
+ }
85
+ const overlayDurableMessages = overlayMessages.filter(
86
+ (message) => !isWorkspaceAgentActivityOptimisticMessage(message)
87
+ );
88
+ const optimisticMessages = overlayMessages.filter(isWorkspaceAgentActivityOptimisticMessage).slice().sort(
89
+ (left, right) => left.occurredAtUnixMs - right.occurredAtUnixMs || left.messageId.localeCompare(right.messageId)
90
+ );
91
+ const merged = overlayDurableMessages.length === 0 ? [...durableMessages] : mergeAgentActivityMessages(durableMessages, overlayDurableMessages);
92
+ return optimisticMessages.length === 0 ? merged : [...merged, ...optimisticMessages];
93
+ }
94
+ function workspaceAgentActivityMessageIdentity(message) {
95
+ const messageId = message.messageId?.trim() ?? "";
96
+ if (messageId) {
97
+ return `message:${messageId}`;
98
+ }
99
+ if (typeof message.version === "number" && Number.isFinite(message.version)) {
100
+ return `version:${message.version}`;
101
+ }
102
+ return null;
103
+ }
104
+ function workspaceAgentActivityClientSubmitId(message) {
105
+ const clientSubmitId = message.payload?.clientSubmitId;
106
+ return typeof clientSubmitId === "string" && clientSubmitId.trim() ? `${message.agentSessionId}\0${clientSubmitId.trim()}` : null;
107
+ }
108
+ function workspaceAgentActivityUserPromptSignature(message) {
109
+ if (message.role !== "user") {
110
+ return null;
111
+ }
112
+ const text = workspaceAgentActivityPayloadText(message.payload).trim();
113
+ const content = workspaceAgentActivityPayloadContentSignature(
114
+ message.payload
115
+ );
116
+ if (!text && content === null) {
117
+ return null;
118
+ }
119
+ return [message.agentSessionId, text, content ?? ""].join("\0");
120
+ }
121
+ function workspaceAgentActivityPayloadText(payload) {
122
+ const text = payload?.text;
123
+ return typeof text === "string" ? text : "";
124
+ }
125
+ function workspaceAgentActivityPayloadContentSignature(payload) {
126
+ if (!payload || !Object.prototype.hasOwnProperty.call(payload, "content")) {
127
+ return null;
128
+ }
129
+ const content = payload.content;
130
+ if (!Array.isArray(content)) {
131
+ return null;
132
+ }
133
+ const parts = [];
134
+ for (const block of content) {
135
+ const signature = workspaceAgentActivityPromptBlockSignature(block);
136
+ if (signature === null) {
137
+ return null;
138
+ }
139
+ parts.push(signature);
140
+ }
141
+ return parts.join("");
142
+ }
143
+ function workspaceAgentActivityPromptBlockSignature(block) {
144
+ if (!block || typeof block !== "object") {
145
+ return null;
146
+ }
147
+ const record = block;
148
+ const type = workspaceAgentActivityStringField(record, "type");
149
+ if (!type) {
150
+ return null;
151
+ }
152
+ const fields = [
153
+ "text",
154
+ "mimeType",
155
+ "data",
156
+ "url",
157
+ "attachmentId",
158
+ "name",
159
+ "path",
160
+ "uri",
161
+ "hostPath",
162
+ "uploadStatus",
163
+ "assetId",
164
+ "kind"
165
+ ];
166
+ const parts = [`type=${type}`];
167
+ for (const field of fields) {
168
+ const value = workspaceAgentActivityStringField(record, field);
169
+ if (value) {
170
+ parts.push(`${field}=${value}`);
171
+ }
172
+ }
173
+ const sizeBytes = record.sizeBytes;
174
+ if (typeof sizeBytes === "number" && Number.isFinite(sizeBytes)) {
175
+ parts.push(`sizeBytes=${sizeBytes}`);
176
+ }
177
+ return parts.join("");
178
+ }
179
+ function workspaceAgentActivityStringField(record, field) {
180
+ const value = record[field];
181
+ return typeof value === "string" ? value.trim() : "";
182
+ }
183
+
184
+ export {
185
+ workspaceAgentProviderLabel,
186
+ WORKSPACE_AGENT_ACTIVITY_RUNTIME_SESSION_ORIGIN,
187
+ isWorkspaceAgentActivityRuntimeSessionOrigin,
188
+ createWorkspaceAgentActivityUserMessageIdFromClientSubmitId,
189
+ isWorkspaceAgentActivityOptimisticMessage,
190
+ selectWorkspaceAgentActivityOverlayMessages,
191
+ mergeWorkspaceAgentActivityDurableAndOverlayMessages
192
+ };
193
+ //# sourceMappingURL=chunk-IL2ORY23.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../shared/workspaceAgentProviderLabel.ts","../shared/workspaceAgentActivityTypes.ts"],"sourcesContent":["export function workspaceAgentProviderLabel(provider: string): string {\n const normalized = provider.trim().toLowerCase();\n switch (normalized) {\n case \"codex\":\n return \"Codex\";\n case \"claude-code\":\n return \"Claude Code\";\n case \"gemini\":\n return \"Gemini\";\n case \"openclaw\":\n return \"OpenClaw\";\n case \"hermes\":\n return \"Hermes\";\n case \"nexight\":\n return \"Nexight\";\n case \"unknown\":\n return \"Unknown\";\n default:\n return titleCase(provider);\n }\n}\n\nfunction titleCase(value: string): string {\n return value\n .split(/[-_\\s]+/)\n .filter(Boolean)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\" \");\n}\n","import {\n mergeAgentActivityMessages,\n AgentActivityMessage,\n AgentActivityMessageSemantics,\n AgentActivityPresence,\n AgentActivitySession,\n AgentActivitySnapshot,\n AgentActivitySubmitAvailability,\n AgentActivityTurnLifecycle\n} from \"@tutti-os/agent-activity-core\";\n\nexport type WorkspaceAgentActivityProvider = \"codex\" | \"claude-code\" | string;\n\nexport interface WorkspaceAgentActivityComposerSettings {\n model?: string | null;\n reasoningEffort?: string | null;\n speed?: string | null;\n planMode?: boolean;\n browserUse?: boolean;\n computerUse?: boolean;\n permissionModeId?: string | null;\n}\n\nexport const WORKSPACE_AGENT_ACTIVITY_RUNTIME_SESSION_ORIGIN =\n \"WORKSPACE_AGENT_SESSION_ORIGIN_RUNTIME\";\n\nexport type WorkspaceAgentActivitySessionOrigin =\n | typeof WORKSPACE_AGENT_ACTIVITY_RUNTIME_SESSION_ORIGIN\n | string;\n\nexport function isWorkspaceAgentActivityRuntimeSessionOrigin(\n sessionOrigin: string | null | undefined\n): boolean {\n const normalized = sessionOrigin?.trim() ?? \"\";\n // Core-native AgentActivitySession does not carry the legacy host origin DTO.\n return (\n normalized === \"\" ||\n normalized === WORKSPACE_AGENT_ACTIVITY_RUNTIME_SESSION_ORIGIN\n );\n}\n\nexport function createWorkspaceAgentActivityUserMessageIdFromClientSubmitId(\n clientSubmitId: string\n): string | null {\n const normalized = clientSubmitId.trim();\n return normalized ? `client-submit:user:${normalized}` : null;\n}\n\nexport type WorkspaceAgentActivitySyncStatus =\n | \"pending\"\n | \"synced\"\n | \"failed\"\n | string;\n\nexport interface WorkspaceAgentActivitySyncState {\n workspaceId?: string;\n agentSessionId?: string;\n status: WorkspaceAgentActivitySyncStatus;\n pendingTimelineItemCount?: number;\n pendingStatePatchCount?: number;\n attemptCount?: number;\n failedReportCount?: number;\n lastError?: string;\n lastAttemptAtUnixMs?: number;\n lastSyncedAtUnixMs?: number;\n updatedAtUnixMs?: number;\n}\n\nexport interface WorkspaceAgentActivityPresence extends Omit<\n AgentActivityPresence,\n \"id\" | \"provider\" | \"status\"\n> {\n id: string | number;\n provider: WorkspaceAgentActivityProvider;\n status: string;\n userId?: string | null;\n}\n\nexport interface WorkspaceAgentActivitySession extends Omit<\n AgentActivitySession,\n | \"provider\"\n | \"providerSessionId\"\n | \"pinnedAtUnixMs\"\n | \"status\"\n | \"title\"\n | \"workspaceId\"\n> {\n id?: number;\n workspaceId?: string;\n presenceId?: string | number;\n userId?: string;\n provider?: WorkspaceAgentActivityProvider;\n providerSessionId?: string | null;\n resumable?: boolean;\n sessionOrigin?: WorkspaceAgentActivitySessionOrigin;\n lifecycleStatus?: string;\n turnPhase?: string;\n endedAtUnixMs?: number;\n effectiveStatus?: string;\n status?: string;\n turnLifecycle?: AgentActivityTurnLifecycle | null;\n submitAvailability?: AgentActivitySubmitAvailability | null;\n title?: string;\n pinnedAtUnixMs?: number | null;\n syncState?: WorkspaceAgentActivitySyncState;\n}\n\nexport interface WorkspaceAgentActivityFileChange {\n path: string;\n change?: \"added\" | \"modified\" | \"deleted\" | \"moved\" | string;\n tools?: string[];\n}\n\nexport interface WorkspaceAgentActivityFileChanges {\n coverage?: string;\n files?: WorkspaceAgentActivityFileChange[];\n}\n\nexport interface WorkspaceAgentActivityTimelineItem {\n id: number;\n workspaceId?: string;\n agentSessionId: string;\n seq?: number;\n turnId?: string;\n eventSource?: string;\n eventId: string;\n actorType: string;\n actorId: string;\n itemType: \"message\" | \"call\" | \"event\" | \"error\" | \"lifecycle\" | string;\n role?: string;\n callType?: \"tool\" | \"skill\" | \"subagent\" | \"approval\" | \"workflow\" | string;\n callId?: string;\n name?: string;\n status?: string | null;\n content?: string;\n payload?: Record<string, unknown> & {\n content?: unknown;\n text?: unknown;\n fileChanges?: WorkspaceAgentActivityFileChanges;\n };\n occurredAtUnixMs?: number;\n createdAtUnixMs?: number;\n}\n\nexport interface WorkspaceAgentActivityMessage extends Omit<\n AgentActivityMessage,\n \"id\" | \"status\"\n> {\n id?: number;\n status?: string | null;\n semantics?: AgentActivityMessageSemantics;\n}\n\nexport interface WorkspaceAgentActivitySnapshot extends Omit<\n AgentActivitySnapshot,\n \"sessions\" | \"presences\" | \"sessionMessagesById\" | \"workspaceId\"\n> {\n workspaceId?: string;\n presences: WorkspaceAgentActivityPresence[];\n sessions: WorkspaceAgentActivitySession[];\n sessionMessagesById?: Record<string, WorkspaceAgentActivityMessage[]>;\n}\n\nexport interface WorkspaceAgentActivityTurnStatePatch {\n turnId: string;\n phase?: string;\n outcome?: string;\n fileChanges?: Record<string, unknown>;\n startedAtUnixMs?: number;\n completedAtUnixMs?: number;\n activeTurnId?: string | null;\n settling?: boolean;\n completedCommand?: {\n kind: string;\n status: string;\n } | null;\n submitAvailability?: AgentActivitySubmitAvailability;\n}\n\nexport interface WorkspaceAgentActivityEntityStatePatch {\n callId: string;\n turnId?: string;\n callType?: string;\n name?: string;\n status?: string;\n input?: Record<string, unknown>;\n output?: Record<string, unknown>;\n error?: Record<string, unknown>;\n startedAtUnixMs?: number;\n completedAtUnixMs?: number;\n}\n\nexport interface WorkspaceAgentActivityStatePatch {\n workspaceId?: string;\n agentSessionId: string;\n provider?: string;\n providerSessionId?: string;\n model?: string;\n permissionModeId?: string;\n settings?: WorkspaceAgentActivityComposerSettings;\n runtimeContext?: Record<string, unknown>;\n pendingInteractive?: AgentActivitySession[\"pendingInteractive\"];\n cwd?: string;\n title?: string;\n lifecycleStatus?: string;\n currentPhase?: string;\n lastError?: string;\n occurredAtUnixMs?: number;\n submitAvailability?: AgentActivitySubmitAvailability;\n turn?: WorkspaceAgentActivityTurnStatePatch;\n entities?: WorkspaceAgentActivityEntityStatePatch[];\n}\n\nexport interface WorkspaceAgentActivitySessionSummaryItem {\n id?: number;\n turnId?: string;\n actorType?: string;\n actorId?: string;\n itemType?: string;\n role?: string;\n content?: string;\n title?: string;\n status?: string;\n callType?: string;\n name?: string;\n payload?: Record<string, unknown>;\n occurredAtUnixMs?: number;\n}\n\nexport interface WorkspaceAgentActivitySessionSummaryTurn {\n turnId: string;\n userItems?: WorkspaceAgentActivitySessionSummaryItem[];\n agentItems?: WorkspaceAgentActivitySessionSummaryItem[];\n}\n\nexport interface WorkspaceAgentActivitySessionExecutionStatus {\n currentOrFinalStatus?: string;\n updatedAtUnixMs?: number;\n}\n\nexport interface WorkspaceAgentActivitySessionSummary {\n agentSessionId: string;\n latestUserRequirement?: string;\n initialUserRequirement?: string;\n latestTurn?: WorkspaceAgentActivitySessionSummaryTurn;\n recentAgentReplies?: string[];\n recentTurns?: WorkspaceAgentActivitySessionSummaryTurn[];\n currentOrFinalStatus?: string;\n executionStatus?: WorkspaceAgentActivitySessionExecutionStatus;\n}\n\nexport function isWorkspaceAgentActivityOptimisticMessage(\n message: WorkspaceAgentActivityMessage\n): boolean {\n return message.payload?.__agentGuiOptimisticPrompt === true;\n}\n\nexport function selectWorkspaceAgentActivityOverlayMessages(input: {\n durableMessages?: readonly WorkspaceAgentActivityMessage[] | null;\n localMessages?: readonly WorkspaceAgentActivityMessage[] | null;\n}): WorkspaceAgentActivityMessage[] {\n const durableMessages = input.durableMessages ?? [];\n const localMessages = input.localMessages ?? [];\n if (localMessages.length === 0) {\n return [];\n }\n const durableIdentities = new Set(\n durableMessages\n .map(workspaceAgentActivityMessageIdentity)\n .filter((identity): identity is string => identity !== null)\n );\n const durableClientSubmitIds = new Set(\n durableMessages\n .map(workspaceAgentActivityClientSubmitId)\n .filter(\n (clientSubmitId): clientSubmitId is string => clientSubmitId !== null\n )\n );\n const durableUserPromptSignatures = new Set(\n durableMessages\n .map(workspaceAgentActivityUserPromptSignature)\n .filter((signature): signature is string => signature !== null)\n );\n return localMessages.filter((message) => {\n const identity = workspaceAgentActivityMessageIdentity(message);\n if (identity !== null && durableIdentities.has(identity)) {\n return false;\n }\n if (isWorkspaceAgentActivityOptimisticMessage(message)) {\n const clientSubmitId = workspaceAgentActivityClientSubmitId(message);\n if (\n clientSubmitId !== null &&\n durableClientSubmitIds.has(clientSubmitId)\n ) {\n return false;\n }\n if (clientSubmitId !== null) {\n return true;\n }\n const signature = workspaceAgentActivityUserPromptSignature(message);\n return signature === null || !durableUserPromptSignatures.has(signature);\n }\n return true;\n });\n}\n\nexport function mergeWorkspaceAgentActivityDurableAndOverlayMessages(input: {\n durableMessages?: readonly WorkspaceAgentActivityMessage[] | null;\n localMessages?: readonly WorkspaceAgentActivityMessage[] | null;\n}): WorkspaceAgentActivityMessage[] {\n const durableMessages = input.durableMessages ?? [];\n const overlayMessages = selectWorkspaceAgentActivityOverlayMessages(input);\n if (overlayMessages.length === 0) {\n return [...durableMessages];\n }\n // Optimistic echoes carry version 0 (outside the durable version domain),\n // so they cannot participate in a version sort. Durable-domain overlay rows\n // merge by version as usual; surviving echoes append after all durable\n // rows, ordered among themselves by when the user submitted.\n const overlayDurableMessages = overlayMessages.filter(\n (message) => !isWorkspaceAgentActivityOptimisticMessage(message)\n );\n const optimisticMessages = overlayMessages\n .filter(isWorkspaceAgentActivityOptimisticMessage)\n .slice()\n .sort(\n (left, right) =>\n left.occurredAtUnixMs - right.occurredAtUnixMs ||\n left.messageId.localeCompare(right.messageId)\n );\n const merged =\n overlayDurableMessages.length === 0\n ? [...durableMessages]\n : mergeAgentActivityMessages(durableMessages, overlayDurableMessages);\n return optimisticMessages.length === 0\n ? merged\n : [...merged, ...optimisticMessages];\n}\n\nfunction workspaceAgentActivityMessageIdentity(\n message: WorkspaceAgentActivityMessage\n): string | null {\n const messageId = message.messageId?.trim() ?? \"\";\n if (messageId) {\n return `message:${messageId}`;\n }\n if (typeof message.version === \"number\" && Number.isFinite(message.version)) {\n return `version:${message.version}`;\n }\n return null;\n}\n\nfunction workspaceAgentActivityClientSubmitId(\n message: WorkspaceAgentActivityMessage\n): string | null {\n const clientSubmitId = message.payload?.clientSubmitId;\n return typeof clientSubmitId === \"string\" && clientSubmitId.trim()\n ? `${message.agentSessionId}\\u0000${clientSubmitId.trim()}`\n : null;\n}\n\nfunction workspaceAgentActivityUserPromptSignature(\n message: WorkspaceAgentActivityMessage\n): string | null {\n if (message.role !== \"user\") {\n return null;\n }\n const text = workspaceAgentActivityPayloadText(message.payload).trim();\n const content = workspaceAgentActivityPayloadContentSignature(\n message.payload\n );\n if (!text && content === null) {\n return null;\n }\n return [message.agentSessionId, text, content ?? \"\"].join(\"\\u0000\");\n}\n\nfunction workspaceAgentActivityPayloadText(\n payload: Record<string, unknown> | undefined\n): string {\n const text = payload?.text;\n return typeof text === \"string\" ? text : \"\";\n}\n\nfunction workspaceAgentActivityPayloadContentSignature(\n payload: Record<string, unknown> | undefined\n): string | null {\n if (!payload || !Object.prototype.hasOwnProperty.call(payload, \"content\")) {\n return null;\n }\n const content = payload.content;\n if (!Array.isArray(content)) {\n return null;\n }\n const parts: string[] = [];\n for (const block of content) {\n const signature = workspaceAgentActivityPromptBlockSignature(block);\n if (signature === null) {\n return null;\n }\n parts.push(signature);\n }\n return parts.join(\"\\u0001\");\n}\n\nfunction workspaceAgentActivityPromptBlockSignature(\n block: unknown\n): string | null {\n if (!block || typeof block !== \"object\") {\n return null;\n }\n const record = block as Record<string, unknown>;\n const type = workspaceAgentActivityStringField(record, \"type\");\n if (!type) {\n return null;\n }\n const fields = [\n \"text\",\n \"mimeType\",\n \"data\",\n \"url\",\n \"attachmentId\",\n \"name\",\n \"path\",\n \"uri\",\n \"hostPath\",\n \"uploadStatus\",\n \"assetId\",\n \"kind\"\n ];\n const parts = [`type=${type}`];\n for (const field of fields) {\n const value = workspaceAgentActivityStringField(record, field);\n if (value) {\n parts.push(`${field}=${value}`);\n }\n }\n const sizeBytes = record.sizeBytes;\n if (typeof sizeBytes === \"number\" && Number.isFinite(sizeBytes)) {\n parts.push(`sizeBytes=${sizeBytes}`);\n }\n return parts.join(\"\\u0002\");\n}\n\nfunction workspaceAgentActivityStringField(\n record: Record<string, unknown>,\n field: string\n): string {\n const value = record[field];\n return typeof value === \"string\" ? value.trim() : \"\";\n}\n"],"mappings":"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","names":[]}
@@ -5,11 +5,11 @@ import {
5
5
  import {
6
6
  getAgentCustomMentionKind,
7
7
  managedAgentRoundedIconUrl
8
- } from "./chunk-N4I3TD4G.js";
8
+ } from "./chunk-BX4UBTOI.js";
9
9
  import {
10
10
  translate,
11
11
  useTranslation
12
- } from "./chunk-6ULTMCKP.js";
12
+ } from "./chunk-KS4ULVGM.js";
13
13
 
14
14
  // agent-gui/agentGuiNode/agentRichText/agentFileMentionExtension.ts
15
15
  import { mergeAttributes, Node } from "@tiptap/core";
@@ -1437,4 +1437,4 @@ export {
1437
1437
  mentionItemToAttrs,
1438
1438
  attrsToMentionItem
1439
1439
  };
1440
- //# sourceMappingURL=chunk-NOTZW5WH.js.map
1440
+ //# sourceMappingURL=chunk-JGU2VMDA.js.map
@@ -2,10 +2,10 @@ import {
2
2
  agentGuiWorkbenchProviders,
3
3
  isAgentGuiWorkbenchProvider,
4
4
  normalizeAgentGuiWorkbenchProvider
5
- } from "./chunk-CKCUEHBW.js";
5
+ } from "./chunk-RNFP7CUO.js";
6
6
  import {
7
7
  agentGUIProviderTargetRefsEqual
8
- } from "./chunk-UI3YDJTC.js";
8
+ } from "./chunk-SKWDZTEV.js";
9
9
 
10
10
  // workbench/state.ts
11
11
  function createDefaultAgentGuiWorkbenchNodeState(provider = "codex") {
@@ -320,4 +320,4 @@ export {
320
320
  agentGuiWorkbenchProviderFromInstanceId,
321
321
  createAgentGuiWorkbenchNodeStateSource
322
322
  };
323
- //# sourceMappingURL=chunk-DL6BMEHI.js.map
323
+ //# sourceMappingURL=chunk-JWWHS34V.js.map
@@ -6,7 +6,7 @@ import {
6
6
  setCurrentAgentGuiI18nRuntime,
7
7
  translate,
8
8
  translateInUiLanguage
9
- } from "./chunk-KRJF7WLJ.js";
9
+ } from "./chunk-MA254MXR.js";
10
10
 
11
11
  // i18n/index.ts
12
12
  import React, {
@@ -68,4 +68,4 @@ export {
68
68
  AgentGuiI18nProvider,
69
69
  useTranslation
70
70
  };
71
- //# sourceMappingURL=chunk-6ULTMCKP.js.map
71
+ //# sourceMappingURL=chunk-KS4ULVGM.js.map
@@ -460,9 +460,9 @@ var en = {
460
460
  providerGateInstallTitle: "Install {{provider}} first",
461
461
  providerGateInstallDescription: "{{provider}} needs to be installed before you can start a new chat here.",
462
462
  providerGateInstallAction: "Install",
463
- providerGateLoginTitle: "Connect to {{provider}}",
464
- providerGateLoginDescription: "{{provider}} is ready to connect. Complete the connection, then come back and start chatting.",
465
- providerGateLoginAction: "Connect",
463
+ providerGateLoginTitle: "Log in to {{provider}}",
464
+ providerGateLoginDescription: "Log in with your account to start chatting with {{provider}}.",
465
+ providerGateLoginAction: "Log in",
466
466
  providerGateComingSoonTitle: "{{provider}} is coming soon",
467
467
  providerGateComingSoonDescription: "{{provider}} is not available yet. We will enable this agent when it is ready.",
468
468
  providerGateComingSoonAction: "coming soon",
@@ -702,6 +702,22 @@ var en = {
702
702
  empty: "What can {{provider}} help you with?",
703
703
  conversations: "Sessions",
704
704
  newConversation: "New session",
705
+ accountMenuTitle: "Tutti Agent",
706
+ accountMenuMember: "Membership",
707
+ accountMenuUpgrade: "Upgrade",
708
+ accountMenuCreditsBalance: "Credits",
709
+ accountMenuAccountCenter: "Account center",
710
+ accountMenuSettings: "Settings",
711
+ accountMenuFree: "Free",
712
+ accountMenuSignIn: "Sign in",
713
+ accountMenuSignOut: "Sign out",
714
+ accountMenuLoading: "Loading",
715
+ accountMenuUnavailable: "--",
716
+ accountMenuDataUnavailable: "Some account data is unavailable",
717
+ accountRewardToastTitle: "New user credits",
718
+ accountRewardToastCreditsUnit: "credits",
719
+ accountRewardToastDescription: "Added to account balance",
720
+ accountRewardToastClose: "Close credits reward notification",
705
721
  agentConfig: "Check & Settings",
706
722
  agentSettingsMenu: "Settings",
707
723
  agentEnvSetup: "Environment Check",
@@ -726,6 +742,7 @@ var en = {
726
742
  batchRunnerProviderHermes: "Hermes",
727
743
  batchRunnerProviderNexight: "Nexight",
728
744
  batchRunnerProviderOpenClaw: "OpenClaw",
745
+ batchRunnerProviderTuttiAgent: "Tutti Agent",
729
746
  batchRunnerRun: "Run",
730
747
  batchRunnerRunning: "Running...",
731
748
  batchRunnerExport: "Export",
@@ -2989,9 +3006,9 @@ var zhCN = {
2989
3006
  providerGateInstallTitle: "\u5148\u5B89\u88C5 {{provider}}",
2990
3007
  providerGateInstallDescription: "\u9700\u8981\u5148\u5B89\u88C5 {{provider}}\uFF0C\u624D\u80FD\u5728\u8FD9\u91CC\u5F00\u59CB\u65B0\u7684\u5BF9\u8BDD\u3002",
2991
3008
  providerGateInstallAction: "\u5B89\u88C5",
2992
- providerGateLoginTitle: "\u8FDE\u63A5 {{provider}}",
2993
- providerGateLoginDescription: "{{provider}} \u5DF2\u51C6\u5907\u597D\u8FDE\u63A5\u3002\u5B8C\u6210\u8FDE\u63A5\u540E\u56DE\u5230\u8FD9\u91CC\u5373\u53EF\u5F00\u59CB\u5BF9\u8BDD\u3002",
2994
- providerGateLoginAction: "\u8FDE\u63A5",
3009
+ providerGateLoginTitle: "\u767B\u5F55 {{provider}}",
3010
+ providerGateLoginDescription: "\u4F7F\u7528\u8D26\u53F7\u767B\u5F55\u540E\u5373\u53EF\u5F00\u59CB\u4F7F\u7528 {{provider}} \u5BF9\u8BDD\u3002",
3011
+ providerGateLoginAction: "\u767B\u5F55",
2995
3012
  providerGateComingSoonTitle: "{{provider}} \u5373\u5C06\u4E0A\u7EBF",
2996
3013
  providerGateComingSoonDescription: "{{provider}} \u6682\u672A\u5F00\u653E\u3002\u51C6\u5907\u597D\u540E\u5373\u53EF\u5728\u8FD9\u91CC\u4F7F\u7528\u8FD9\u4E2A Agent\u3002",
2997
3014
  providerGateComingSoonAction: "coming soon",
@@ -3231,6 +3248,22 @@ var zhCN = {
3231
3248
  empty: "\u9700\u8981 {{provider}} \u5E2E\u4F60\u505A\u4E9B\u4EC0\u4E48\uFF1F",
3232
3249
  conversations: "\u4F1A\u8BDD",
3233
3250
  newConversation: "\u65B0\u5EFA\u4F1A\u8BDD",
3251
+ accountMenuTitle: "Tutti Agent",
3252
+ accountMenuMember: "\u4F1A\u5458",
3253
+ accountMenuUpgrade: "\u5347\u7EA7",
3254
+ accountMenuCreditsBalance: "\u79EF\u5206\u4F59\u989D",
3255
+ accountMenuAccountCenter: "\u8D26\u53F7\u4E2D\u5FC3",
3256
+ accountMenuSettings: "\u8BBE\u7F6E",
3257
+ accountMenuFree: "Free",
3258
+ accountMenuSignIn: "\u767B\u5F55",
3259
+ accountMenuSignOut: "\u9000\u51FA\u767B\u5F55",
3260
+ accountMenuLoading: "\u52A0\u8F7D\u4E2D",
3261
+ accountMenuUnavailable: "--",
3262
+ accountMenuDataUnavailable: "\u90E8\u5206\u8D26\u53F7\u6570\u636E\u6682\u4E0D\u53EF\u7528",
3263
+ accountRewardToastTitle: "\u65B0\u7528\u6237\u79EF\u5206\u5230\u8D26",
3264
+ accountRewardToastCreditsUnit: "\u79EF\u5206",
3265
+ accountRewardToastDescription: "\u5DF2\u52A0\u5165\u8D26\u6237\u4F59\u989D",
3266
+ accountRewardToastClose: "\u5173\u95ED\u79EF\u5206\u5230\u8D26\u63D0\u793A",
3234
3267
  agentConfig: "\u68C0\u6D4B\u4E0E\u8BBE\u7F6E",
3235
3268
  agentSettingsMenu: "\u8BBE\u7F6E",
3236
3269
  agentEnvSetup: "\u73AF\u5883\u68C0\u6D4B",
@@ -3255,6 +3288,7 @@ var zhCN = {
3255
3288
  batchRunnerProviderHermes: "Hermes",
3256
3289
  batchRunnerProviderNexight: "Nexight",
3257
3290
  batchRunnerProviderOpenClaw: "OpenClaw",
3291
+ batchRunnerProviderTuttiAgent: "Tutti Agent",
3258
3292
  batchRunnerRun: "\u6267\u884C",
3259
3293
  batchRunnerRunning: "\u6267\u884C\u4E2D...",
3260
3294
  batchRunnerExport: "\u5BFC\u51FA",
@@ -5119,4 +5153,4 @@ export {
5119
5153
  translateInUiLanguage,
5120
5154
  getActiveUiLanguage
5121
5155
  };
5122
- //# sourceMappingURL=chunk-KRJF7WLJ.js.map
5156
+ //# sourceMappingURL=chunk-MA254MXR.js.map