@convex-dev/agent 0.6.0-alpha.0 → 0.6.0

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 (192) hide show
  1. package/MIGRATION.md +153 -0
  2. package/package.json +4 -2
  3. package/src/UIMessages.ts +135 -0
  4. package/src/client/approval.test.ts +350 -0
  5. package/src/client/createTool.ts +50 -52
  6. package/src/client/index.ts +162 -1
  7. package/src/client/mockModel.ts +9 -2
  8. package/src/client/search.test.ts +4 -5
  9. package/src/client/search.ts +47 -2
  10. package/src/client/start.ts +41 -24
  11. package/src/client/streamText.ts +27 -3
  12. package/src/client/streaming.integration.test.ts +1206 -0
  13. package/src/client/streaming.ts +41 -12
  14. package/src/client/types.ts +14 -12
  15. package/src/component/_generated/component.ts +53 -64
  16. package/src/component/messages.ts +12 -2
  17. package/src/deltas.ts +0 -1
  18. package/src/mapping.test.ts +143 -1
  19. package/src/mapping.ts +115 -6
  20. package/src/react/useDeltaStreams.ts +6 -0
  21. package/dist/UIMessages.d.ts +0 -46
  22. package/dist/UIMessages.d.ts.map +0 -1
  23. package/dist/UIMessages.js +0 -546
  24. package/dist/UIMessages.js.map +0 -1
  25. package/dist/client/createTool.d.ts +0 -170
  26. package/dist/client/createTool.d.ts.map +0 -1
  27. package/dist/client/createTool.js +0 -115
  28. package/dist/client/createTool.js.map +0 -1
  29. package/dist/client/defaultComponent.d.ts +0 -11
  30. package/dist/client/defaultComponent.d.ts.map +0 -1
  31. package/dist/client/defaultComponent.js +0 -7
  32. package/dist/client/defaultComponent.js.map +0 -1
  33. package/dist/client/definePlaygroundAPI.d.ts +0 -1725
  34. package/dist/client/definePlaygroundAPI.d.ts.map +0 -1
  35. package/dist/client/definePlaygroundAPI.js +0 -271
  36. package/dist/client/definePlaygroundAPI.js.map +0 -1
  37. package/dist/client/files.d.ts +0 -69
  38. package/dist/client/files.d.ts.map +0 -1
  39. package/dist/client/files.js +0 -181
  40. package/dist/client/files.js.map +0 -1
  41. package/dist/client/index.d.ts +0 -2044
  42. package/dist/client/index.d.ts.map +0 -1
  43. package/dist/client/index.js +0 -804
  44. package/dist/client/index.js.map +0 -1
  45. package/dist/client/messages.d.ts +0 -461
  46. package/dist/client/messages.d.ts.map +0 -1
  47. package/dist/client/messages.js +0 -106
  48. package/dist/client/messages.js.map +0 -1
  49. package/dist/client/mockModel.d.ts +0 -42
  50. package/dist/client/mockModel.d.ts.map +0 -1
  51. package/dist/client/mockModel.js +0 -175
  52. package/dist/client/mockModel.js.map +0 -1
  53. package/dist/client/saveInputMessages.d.ts +0 -20
  54. package/dist/client/saveInputMessages.d.ts.map +0 -1
  55. package/dist/client/saveInputMessages.js +0 -58
  56. package/dist/client/saveInputMessages.js.map +0 -1
  57. package/dist/client/search.d.ts +0 -493
  58. package/dist/client/search.d.ts.map +0 -1
  59. package/dist/client/search.js +0 -425
  60. package/dist/client/search.js.map +0 -1
  61. package/dist/client/start.d.ts +0 -84
  62. package/dist/client/start.d.ts.map +0 -1
  63. package/dist/client/start.js +0 -171
  64. package/dist/client/start.js.map +0 -1
  65. package/dist/client/streamText.d.ts +0 -46
  66. package/dist/client/streamText.d.ts.map +0 -1
  67. package/dist/client/streamText.js +0 -93
  68. package/dist/client/streamText.js.map +0 -1
  69. package/dist/client/streaming.d.ts +0 -3767
  70. package/dist/client/streaming.d.ts.map +0 -1
  71. package/dist/client/streaming.js +0 -294
  72. package/dist/client/streaming.js.map +0 -1
  73. package/dist/client/threads.d.ts +0 -46
  74. package/dist/client/threads.d.ts.map +0 -1
  75. package/dist/client/threads.js +0 -49
  76. package/dist/client/threads.js.map +0 -1
  77. package/dist/client/types.d.ts +0 -460
  78. package/dist/client/types.d.ts.map +0 -1
  79. package/dist/client/types.js +0 -2
  80. package/dist/client/types.js.map +0 -1
  81. package/dist/client/utils.d.ts +0 -4
  82. package/dist/client/utils.d.ts.map +0 -1
  83. package/dist/client/utils.js +0 -21
  84. package/dist/client/utils.js.map +0 -1
  85. package/dist/component/_generated/api.d.ts +0 -48
  86. package/dist/component/_generated/api.d.ts.map +0 -1
  87. package/dist/component/_generated/api.js +0 -31
  88. package/dist/component/_generated/api.js.map +0 -1
  89. package/dist/component/_generated/component.d.ts +0 -3119
  90. package/dist/component/_generated/component.d.ts.map +0 -1
  91. package/dist/component/_generated/component.js +0 -11
  92. package/dist/component/_generated/component.js.map +0 -1
  93. package/dist/component/_generated/dataModel.d.ts +0 -46
  94. package/dist/component/_generated/dataModel.d.ts.map +0 -1
  95. package/dist/component/_generated/dataModel.js +0 -11
  96. package/dist/component/_generated/dataModel.js.map +0 -1
  97. package/dist/component/_generated/server.d.ts +0 -121
  98. package/dist/component/_generated/server.d.ts.map +0 -1
  99. package/dist/component/_generated/server.js +0 -78
  100. package/dist/component/_generated/server.js.map +0 -1
  101. package/dist/component/apiKeys.d.ts +0 -11
  102. package/dist/component/apiKeys.d.ts.map +0 -1
  103. package/dist/component/apiKeys.js +0 -69
  104. package/dist/component/apiKeys.js.map +0 -1
  105. package/dist/component/convex.config.d.ts +0 -3
  106. package/dist/component/convex.config.d.ts.map +0 -1
  107. package/dist/component/convex.config.js +0 -3
  108. package/dist/component/convex.config.js.map +0 -1
  109. package/dist/component/files.d.ts +0 -97
  110. package/dist/component/files.d.ts.map +0 -1
  111. package/dist/component/files.js +0 -190
  112. package/dist/component/files.js.map +0 -1
  113. package/dist/component/messages.d.ts +0 -3850
  114. package/dist/component/messages.d.ts.map +0 -1
  115. package/dist/component/messages.js +0 -747
  116. package/dist/component/messages.js.map +0 -1
  117. package/dist/component/schema.d.ts +0 -8026
  118. package/dist/component/schema.d.ts.map +0 -1
  119. package/dist/component/schema.js +0 -147
  120. package/dist/component/schema.js.map +0 -1
  121. package/dist/component/streams.d.ts +0 -128
  122. package/dist/component/streams.d.ts.map +0 -1
  123. package/dist/component/streams.js +0 -413
  124. package/dist/component/streams.js.map +0 -1
  125. package/dist/component/threads.d.ts +0 -115
  126. package/dist/component/threads.d.ts.map +0 -1
  127. package/dist/component/threads.js +0 -208
  128. package/dist/component/threads.js.map +0 -1
  129. package/dist/component/users.d.ts +0 -52
  130. package/dist/component/users.d.ts.map +0 -1
  131. package/dist/component/users.js +0 -229
  132. package/dist/component/users.js.map +0 -1
  133. package/dist/component/vector/index.d.ts +0 -61
  134. package/dist/component/vector/index.d.ts.map +0 -1
  135. package/dist/component/vector/index.js +0 -146
  136. package/dist/component/vector/index.js.map +0 -1
  137. package/dist/component/vector/tables.d.ts +0 -58
  138. package/dist/component/vector/tables.d.ts.map +0 -1
  139. package/dist/component/vector/tables.js +0 -56
  140. package/dist/component/vector/tables.js.map +0 -1
  141. package/dist/deltas.d.ts +0 -43
  142. package/dist/deltas.d.ts.map +0 -1
  143. package/dist/deltas.js +0 -447
  144. package/dist/deltas.js.map +0 -1
  145. package/dist/mapping.d.ts +0 -54
  146. package/dist/mapping.d.ts.map +0 -1
  147. package/dist/mapping.js +0 -626
  148. package/dist/mapping.js.map +0 -1
  149. package/dist/react/SmoothText.d.ts +0 -5
  150. package/dist/react/SmoothText.d.ts.map +0 -1
  151. package/dist/react/SmoothText.js +0 -6
  152. package/dist/react/SmoothText.js.map +0 -1
  153. package/dist/react/index.d.ts +0 -25
  154. package/dist/react/index.d.ts.map +0 -1
  155. package/dist/react/index.js +0 -70
  156. package/dist/react/index.js.map +0 -1
  157. package/dist/react/optimisticallySendMessage.d.ts +0 -42
  158. package/dist/react/optimisticallySendMessage.d.ts.map +0 -1
  159. package/dist/react/optimisticallySendMessage.js +0 -74
  160. package/dist/react/optimisticallySendMessage.js.map +0 -1
  161. package/dist/react/types.d.ts +0 -12
  162. package/dist/react/types.d.ts.map +0 -1
  163. package/dist/react/types.js +0 -2
  164. package/dist/react/types.js.map +0 -1
  165. package/dist/react/useDeltaStreams.d.ts +0 -10
  166. package/dist/react/useDeltaStreams.d.ts.map +0 -1
  167. package/dist/react/useDeltaStreams.js +0 -101
  168. package/dist/react/useDeltaStreams.js.map +0 -1
  169. package/dist/react/useSmoothText.d.ts +0 -27
  170. package/dist/react/useSmoothText.d.ts.map +0 -1
  171. package/dist/react/useSmoothText.js +0 -68
  172. package/dist/react/useSmoothText.js.map +0 -1
  173. package/dist/react/useStreamingUIMessages.d.ts +0 -22
  174. package/dist/react/useStreamingUIMessages.d.ts.map +0 -1
  175. package/dist/react/useStreamingUIMessages.js +0 -92
  176. package/dist/react/useStreamingUIMessages.js.map +0 -1
  177. package/dist/react/useThreadMessages.d.ts +0 -104
  178. package/dist/react/useThreadMessages.d.ts.map +0 -1
  179. package/dist/react/useThreadMessages.js +0 -148
  180. package/dist/react/useThreadMessages.js.map +0 -1
  181. package/dist/react/useUIMessages.d.ts +0 -96
  182. package/dist/react/useUIMessages.d.ts.map +0 -1
  183. package/dist/react/useUIMessages.js +0 -108
  184. package/dist/react/useUIMessages.js.map +0 -1
  185. package/dist/shared.d.ts +0 -26
  186. package/dist/shared.d.ts.map +0 -1
  187. package/dist/shared.js +0 -67
  188. package/dist/shared.js.map +0 -1
  189. package/dist/validators.d.ts +0 -24516
  190. package/dist/validators.d.ts.map +0 -1
  191. package/dist/validators.js +0 -475
  192. package/dist/validators.js.map +0 -1
@@ -1,46 +0,0 @@
1
- import { type UIMessage as AIUIMessage, type UIDataTypes, type UITools } from "ai";
2
- import type { MessageDoc, MessageStatus, ProviderOptions } from "./validators.js";
3
- export type UIStatus = "streaming" | MessageStatus;
4
- export type UIMessage<METADATA = unknown, DATA_PARTS extends UIDataTypes = UIDataTypes, TOOLS extends UITools = UITools> = AIUIMessage<METADATA, DATA_PARTS, TOOLS> & {
5
- key: string;
6
- order: number;
7
- stepOrder: number;
8
- status: UIStatus;
9
- agentName?: string;
10
- userId?: string;
11
- text: string;
12
- _creationTime: number;
13
- };
14
- /**
15
- * Converts a list of UIMessages to MessageDocs, along with extra metadata that
16
- * may be available to associate with the MessageDocs.
17
- * @param messages - The UIMessages to convert to MessageDocs.
18
- * @param meta - The metadata to add to the MessageDocs.
19
- * @returns
20
- */
21
- export declare function fromUIMessages<METADATA = unknown>(messages: UIMessage<METADATA>[], meta: {
22
- threadId: string;
23
- userId?: string;
24
- model?: string;
25
- provider?: string;
26
- providerOptions?: ProviderOptions;
27
- metadata?: METADATA;
28
- }): Promise<(MessageDoc & {
29
- streaming: boolean;
30
- metadata?: METADATA;
31
- })[]>;
32
- type ExtraFields<METADATA = unknown> = {
33
- streaming?: boolean;
34
- metadata?: METADATA;
35
- };
36
- /**
37
- * Converts a list of MessageDocs to UIMessages.
38
- * This is somewhat lossy, as many fields are not supported by UIMessages, e.g.
39
- * the model, provider, userId, etc.
40
- * The UIMessage type is the augmented type that includes more fields such as
41
- * key, order, stepOrder, status, agentName, text, etc.
42
- */
43
- export declare function toUIMessages<METADATA = unknown, DATA_PARTS extends UIDataTypes = UIDataTypes, TOOLS extends UITools = UITools>(messages: (MessageDoc & ExtraFields<METADATA>)[]): UIMessage<METADATA, DATA_PARTS, TOOLS>[];
44
- export declare function combineUIMessages(messages: UIMessage[]): UIMessage[];
45
- export {};
46
- //# sourceMappingURL=UIMessages.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"UIMessages.d.ts","sourceRoot":"","sources":["../src/UIMessages.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,IAAI,WAAW,EAU7B,KAAK,WAAW,EAChB,KAAK,OAAO,EACb,MAAM,IAAI,CAAC;AAUZ,OAAO,KAAK,EACV,UAAU,EACV,aAAa,EACb,eAAe,EAGhB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,aAAa,CAAC;AAEnD,MAAM,MAAM,SAAS,CACnB,QAAQ,GAAG,OAAO,EAClB,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,KAAK,SAAS,OAAO,GAAG,OAAO,IAC7B,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,QAAQ,GAAG,OAAO,EACrD,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,EAC/B,IAAI,EAAE;IACJ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,GACA,OAAO,CAAC,CAAC,UAAU,GAAG;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;CAAE,CAAC,EAAE,CAAC,CAiEvE;AA8BD,KAAK,WAAW,CAAC,QAAQ,GAAG,OAAO,IAAI;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,GAAG,OAAO,EAClB,UAAU,SAAS,WAAW,GAAG,WAAW,EAC5C,KAAK,SAAS,OAAO,GAAG,OAAO,EAE/B,QAAQ,EAAE,CAAC,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,GAC/C,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,CAiB1C;AA+dD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CA2CpE"}
@@ -1,546 +0,0 @@
1
- import { convertToModelMessages, } from "ai";
2
- import { toModelMessage, fromModelMessage, toUIFilePart } from "./mapping.js";
3
- import { extractReasoning, extractText, isTool, joinText, sorted, } from "./shared.js";
4
- import { omit, pick } from "convex-helpers";
5
- /**
6
- * Converts a list of UIMessages to MessageDocs, along with extra metadata that
7
- * may be available to associate with the MessageDocs.
8
- * @param messages - The UIMessages to convert to MessageDocs.
9
- * @param meta - The metadata to add to the MessageDocs.
10
- * @returns
11
- */
12
- export async function fromUIMessages(messages, meta) {
13
- const nested = await Promise.all(messages.map(async (uiMessage) => {
14
- const stepOrder = uiMessage.stepOrder;
15
- const commonFields = {
16
- ...pick(meta, [
17
- "threadId",
18
- "userId",
19
- "model",
20
- "provider",
21
- "providerOptions",
22
- "metadata",
23
- ]),
24
- ...omit(uiMessage, ["parts", "role", "key", "text", "userId"]),
25
- userId: uiMessage.userId ?? meta.userId,
26
- status: uiMessage.status === "streaming" ? "pending" : "success",
27
- streaming: uiMessage.status === "streaming",
28
- // to override
29
- _id: uiMessage.id,
30
- tool: false,
31
- };
32
- const modelMessages = await convertToModelMessages([uiMessage]);
33
- return modelMessages
34
- .map((modelMessage, i) => {
35
- if (modelMessage.content.length === 0) {
36
- return undefined;
37
- }
38
- const message = fromModelMessage(modelMessage);
39
- const tool = isTool(message);
40
- const doc = {
41
- ...commonFields,
42
- _id: uiMessage.id + `-${i}`,
43
- stepOrder: stepOrder + i,
44
- message,
45
- tool,
46
- text: extractText(message),
47
- reasoning: extractReasoning(message),
48
- finishReason: tool ? "tool-calls" : "stop",
49
- sources: fromSourceParts(uiMessage.parts),
50
- };
51
- if (Array.isArray(modelMessage.content)) {
52
- // Find a content part with providerOptions (type assertion needed for SDK compatibility)
53
- const partWithProviderOptions = modelMessage.content.find((c) => "providerOptions" in c && c.providerOptions !== undefined);
54
- if (partWithProviderOptions?.providerOptions) {
55
- // convertToModelMessages changes providerMetadata to providerOptions
56
- const providerOptions = partWithProviderOptions.providerOptions;
57
- if (providerOptions) {
58
- doc.providerMetadata = providerOptions;
59
- doc.providerOptions ??= providerOptions;
60
- }
61
- }
62
- }
63
- return doc;
64
- })
65
- .filter((d) => d !== undefined);
66
- }));
67
- return nested.flat();
68
- }
69
- function fromSourceParts(parts) {
70
- return parts
71
- .map((part) => {
72
- if (part.type === "source-url") {
73
- return {
74
- type: "source",
75
- sourceType: "url",
76
- url: part.url,
77
- id: part.sourceId,
78
- providerMetadata: part.providerMetadata,
79
- title: part.title,
80
- };
81
- }
82
- if (part.type === "source-document") {
83
- return {
84
- type: "source",
85
- sourceType: "document",
86
- mediaType: part.mediaType,
87
- id: part.sourceId,
88
- providerMetadata: part.providerMetadata,
89
- title: part.title,
90
- };
91
- }
92
- return undefined;
93
- })
94
- .filter((p) => p !== undefined);
95
- }
96
- /**
97
- * Converts a list of MessageDocs to UIMessages.
98
- * This is somewhat lossy, as many fields are not supported by UIMessages, e.g.
99
- * the model, provider, userId, etc.
100
- * The UIMessage type is the augmented type that includes more fields such as
101
- * key, order, stepOrder, status, agentName, text, etc.
102
- */
103
- export function toUIMessages(messages) {
104
- // Group assistant and tool messages together
105
- const assistantGroups = groupAssistantMessages(sorted(messages));
106
- const uiMessages = [];
107
- for (const group of assistantGroups) {
108
- if (group.role === "system") {
109
- uiMessages.push(createSystemUIMessage(group.message));
110
- }
111
- else if (group.role === "user") {
112
- uiMessages.push(createUserUIMessage(group.message));
113
- }
114
- else {
115
- // Assistant/tool group
116
- uiMessages.push(createAssistantUIMessage(group.messages));
117
- }
118
- }
119
- return uiMessages;
120
- }
121
- function groupAssistantMessages(messages) {
122
- const groups = [];
123
- let currentAssistantGroup = [];
124
- let currentOrder;
125
- for (const message of messages) {
126
- const coreMessage = message.message && toModelMessage(message.message);
127
- if (!coreMessage)
128
- continue;
129
- if (coreMessage.role === "user" || coreMessage.role === "system") {
130
- // Finish any current assistant group
131
- if (currentAssistantGroup.length > 0) {
132
- groups.push({
133
- role: "assistant",
134
- messages: currentAssistantGroup,
135
- });
136
- currentAssistantGroup = [];
137
- currentOrder = undefined;
138
- }
139
- // Add singleton group
140
- groups.push({
141
- role: coreMessage.role,
142
- message,
143
- });
144
- }
145
- else {
146
- // Assistant or tool message
147
- // Start new group if order changes or this is the first assistant/tool message
148
- if (currentOrder !== undefined && message.order !== currentOrder) {
149
- if (currentAssistantGroup.length > 0) {
150
- groups.push({
151
- role: "assistant",
152
- messages: currentAssistantGroup,
153
- });
154
- currentAssistantGroup = [];
155
- }
156
- }
157
- currentOrder = message.order;
158
- currentAssistantGroup.push(message);
159
- // End group if this is an assistant message without tool calls
160
- if (coreMessage.role === "assistant" && !message.tool) {
161
- groups.push({
162
- role: "assistant",
163
- messages: currentAssistantGroup,
164
- });
165
- currentAssistantGroup = [];
166
- currentOrder = undefined;
167
- }
168
- }
169
- }
170
- // Add any remaining assistant group
171
- if (currentAssistantGroup.length > 0) {
172
- groups.push({
173
- role: "assistant",
174
- messages: currentAssistantGroup,
175
- });
176
- }
177
- return groups;
178
- }
179
- function createSystemUIMessage(message) {
180
- const text = extractTextFromMessageDoc(message);
181
- const partCommon = {
182
- state: message.streaming ? "streaming" : "done",
183
- ...(message.providerMetadata
184
- ? { providerMetadata: message.providerMetadata }
185
- : {}),
186
- };
187
- return {
188
- id: message._id,
189
- _creationTime: message._creationTime,
190
- order: message.order,
191
- stepOrder: message.stepOrder,
192
- status: message.streaming ? "streaming" : message.status,
193
- key: `${message.threadId}-${message.order}-${message.stepOrder}`,
194
- text,
195
- role: "system",
196
- agentName: message.agentName,
197
- userId: message.userId,
198
- parts: [{ type: "text", text, ...partCommon }],
199
- metadata: message.metadata,
200
- };
201
- }
202
- function extractTextFromMessageDoc(message) {
203
- return ((message.message && extractText(message.message)) || message.text || "");
204
- }
205
- function createUserUIMessage(message) {
206
- const text = extractTextFromMessageDoc(message);
207
- const coreMessage = toModelMessage(message.message);
208
- const content = coreMessage.content;
209
- const nonStringContent = content && typeof content !== "string" ? content : [];
210
- const partCommon = {
211
- state: message.streaming ? "streaming" : "done",
212
- ...(message.providerMetadata
213
- ? { providerMetadata: message.providerMetadata }
214
- : {}),
215
- };
216
- const parts = [];
217
- if (text && !nonStringContent.length) {
218
- parts.push({ type: "text", text });
219
- }
220
- for (const contentPart of nonStringContent) {
221
- switch (contentPart.type) {
222
- case "text":
223
- parts.push({ type: "text", text: contentPart.text, ...partCommon });
224
- break;
225
- case "file":
226
- case "image":
227
- parts.push(toUIFilePart(contentPart));
228
- break;
229
- default:
230
- console.warn("Unknown content part type for user", contentPart);
231
- break;
232
- }
233
- }
234
- return {
235
- id: message._id,
236
- _creationTime: message._creationTime,
237
- order: message.order,
238
- stepOrder: message.stepOrder,
239
- status: message.streaming ? "streaming" : message.status,
240
- key: `${message.threadId}-${message.order}-${message.stepOrder}`,
241
- text,
242
- role: "user",
243
- userId: message.userId,
244
- parts,
245
- metadata: message.metadata,
246
- };
247
- }
248
- function createAssistantUIMessage(groupUnordered) {
249
- const group = sorted(groupUnordered);
250
- const firstMessage = group[0];
251
- // Use first message for special fields
252
- const common = {
253
- id: firstMessage._id,
254
- _creationTime: firstMessage._creationTime,
255
- order: firstMessage.order,
256
- stepOrder: firstMessage.stepOrder,
257
- key: `${firstMessage.threadId}-${firstMessage.order}-${firstMessage.stepOrder}`,
258
- agentName: firstMessage.agentName,
259
- userId: firstMessage.userId,
260
- };
261
- // Get status from last message
262
- const lastMessage = group[group.length - 1];
263
- const status = lastMessage.streaming
264
- ? "streaming"
265
- : lastMessage.status;
266
- // Collect all parts from all messages
267
- const allParts = [];
268
- for (const message of group) {
269
- const coreMessage = message.message && toModelMessage(message.message);
270
- if (!coreMessage)
271
- continue;
272
- const content = coreMessage.content;
273
- const nonStringContent = content && typeof content !== "string" ? content : [];
274
- const text = extractTextFromMessageDoc(message);
275
- const partCommon = {
276
- state: message.streaming ? "streaming" : "done",
277
- ...(message.providerMetadata
278
- ? { providerMetadata: message.providerMetadata }
279
- : {}),
280
- };
281
- // Add reasoning parts
282
- if (message.reasoning &&
283
- !nonStringContent.some((c) => c.type === "reasoning")) {
284
- allParts.push({
285
- type: "reasoning",
286
- text: message.reasoning,
287
- ...partCommon,
288
- });
289
- }
290
- // Add text parts if no structured content
291
- if (text && !nonStringContent.length) {
292
- allParts.push({
293
- type: "text",
294
- text: text,
295
- ...partCommon,
296
- });
297
- }
298
- // Add all structured content parts
299
- for (const contentPart of nonStringContent) {
300
- switch (contentPart.type) {
301
- case "text":
302
- allParts.push({
303
- ...partCommon,
304
- ...contentPart,
305
- });
306
- break;
307
- case "reasoning":
308
- allParts.push({
309
- ...partCommon,
310
- ...contentPart,
311
- });
312
- break;
313
- case "file":
314
- case "image":
315
- allParts.push(toUIFilePart(contentPart));
316
- break;
317
- case "tool-call": {
318
- allParts.push({
319
- type: "step-start",
320
- });
321
- const toolPart = {
322
- type: `tool-${contentPart.toolName}`,
323
- toolCallId: contentPart.toolCallId,
324
- input: contentPart.input,
325
- providerExecuted: contentPart.providerExecuted,
326
- ...(message.streaming
327
- ? { state: "input-streaming" }
328
- : {
329
- state: "input-available",
330
- callProviderMetadata: message.providerMetadata,
331
- }),
332
- };
333
- allParts.push(toolPart);
334
- break;
335
- }
336
- case "tool-result": {
337
- const typedPart = contentPart;
338
- // Check if this is an execution-denied result
339
- if (typedPart.output?.type === "execution-denied") {
340
- const call = allParts.find((part) => part.type === `tool-${contentPart.toolName}` &&
341
- "toolCallId" in part &&
342
- part.toolCallId === contentPart.toolCallId);
343
- if (call) {
344
- call.state = "output-denied";
345
- if (!("approval" in call) || !call.approval) {
346
- call.approval = {
347
- id: "",
348
- approved: false,
349
- reason: typedPart.output.reason,
350
- };
351
- }
352
- else {
353
- const approval = call.approval;
354
- approval.approved = false;
355
- approval.reason = typedPart.output.reason;
356
- }
357
- }
358
- break;
359
- }
360
- const output = typeof typedPart.output?.type === "string"
361
- ? typedPart.output.value
362
- : typedPart.output;
363
- // Check for error at both the content part level (isError) and message level
364
- // isError may exist on stored tool results but isn't in ToolResultPart type
365
- const hasError = contentPart.isError || message.error;
366
- const errorText = message.error || (hasError ? String(output) : undefined);
367
- const call = allParts.find((part) => part.type === `tool-${contentPart.toolName}` &&
368
- "toolCallId" in part &&
369
- part.toolCallId === contentPart.toolCallId);
370
- if (call) {
371
- if (hasError) {
372
- call.state = "output-error";
373
- call.errorText = errorText ?? "Unknown error";
374
- call.output = output;
375
- }
376
- else {
377
- call.state = "output-available";
378
- call.output = output;
379
- }
380
- }
381
- else {
382
- // Tool call is on a previous page - create standalone tool part
383
- if (hasError) {
384
- allParts.push({
385
- type: `tool-${contentPart.toolName}`,
386
- toolCallId: contentPart.toolCallId,
387
- state: "output-error",
388
- input: undefined,
389
- errorText: errorText ?? "Unknown error",
390
- callProviderMetadata: message.providerMetadata,
391
- });
392
- }
393
- else {
394
- allParts.push({
395
- type: `tool-${contentPart.toolName}`,
396
- toolCallId: contentPart.toolCallId,
397
- state: "output-available",
398
- input: undefined,
399
- output,
400
- callProviderMetadata: message.providerMetadata,
401
- });
402
- }
403
- }
404
- break;
405
- }
406
- case "tool-approval-request": {
407
- // Find the matching tool call
408
- const typedPart = contentPart;
409
- const toolCallPart = allParts.find((part) => "toolCallId" in part && part.toolCallId === typedPart.toolCallId);
410
- if (toolCallPart) {
411
- toolCallPart.state = "approval-requested";
412
- toolCallPart.approval = {
413
- id: typedPart.approvalId,
414
- };
415
- }
416
- else {
417
- console.warn("Tool approval request without preceding tool call", contentPart);
418
- }
419
- break;
420
- }
421
- case "tool-approval-response": {
422
- // Find the tool call that has this approval by matching approval.id
423
- const typedPart = contentPart;
424
- const toolCallPart = allParts.find((part) => "approval" in part &&
425
- part.approval
426
- ?.id === typedPart.approvalId);
427
- if (toolCallPart) {
428
- if (typedPart.approved) {
429
- toolCallPart.state = "approval-responded";
430
- toolCallPart.approval = {
431
- id: typedPart.approvalId,
432
- approved: true,
433
- reason: typedPart.reason,
434
- };
435
- }
436
- else {
437
- toolCallPart.state = "output-denied";
438
- toolCallPart.approval = {
439
- id: typedPart.approvalId,
440
- approved: false,
441
- reason: typedPart.reason,
442
- };
443
- }
444
- }
445
- else {
446
- console.warn("Tool approval response without matching approval request", contentPart);
447
- }
448
- break;
449
- }
450
- default: {
451
- const maybeSource = contentPart;
452
- if (maybeSource.type === "source") {
453
- allParts.push(toSourcePart(maybeSource));
454
- }
455
- else {
456
- console.warn("Unknown content part type for assistant", contentPart);
457
- }
458
- }
459
- }
460
- }
461
- // Add source parts
462
- for (const source of message.sources ?? []) {
463
- allParts.push(toSourcePart(source));
464
- }
465
- }
466
- return {
467
- ...common,
468
- role: "assistant",
469
- text: joinText(allParts),
470
- status,
471
- parts: allParts,
472
- metadata: group.find((m) => m.metadata)?.metadata,
473
- };
474
- }
475
- function toSourcePart(part) {
476
- if (part.sourceType === "url") {
477
- return {
478
- type: "source-url",
479
- url: part.url,
480
- sourceId: part.id,
481
- providerMetadata: part.providerMetadata,
482
- title: part.title,
483
- };
484
- }
485
- return {
486
- type: "source-document",
487
- mediaType: part.mediaType,
488
- sourceId: part.id,
489
- title: part.title,
490
- filename: part.filename,
491
- providerMetadata: part.providerMetadata,
492
- };
493
- }
494
- export function combineUIMessages(messages) {
495
- const combined = messages.reduce((acc, message) => {
496
- if (!acc.length) {
497
- return [message];
498
- }
499
- const previous = acc.at(-1);
500
- if (message.order !== previous.order ||
501
- previous.role !== message.role ||
502
- message.role !== "assistant") {
503
- acc.push(message);
504
- return acc;
505
- }
506
- // We will replace it with a combined message
507
- acc.pop();
508
- const newParts = [...previous.parts];
509
- for (const part of message.parts) {
510
- const toolCallId = getToolCallId(part);
511
- if (!toolCallId) {
512
- newParts.push(part);
513
- continue;
514
- }
515
- const previousPartIndex = newParts.findIndex((p) => getToolCallId(p) === toolCallId);
516
- if (previousPartIndex === -1) {
517
- // Tool call not found in previous parts, add it as new
518
- newParts.push(part);
519
- continue;
520
- }
521
- const previousPart = newParts.splice(previousPartIndex, 1)[0];
522
- newParts.push(mergeParts(previousPart, part));
523
- }
524
- acc.push({
525
- ...previous,
526
- ...pick(message, ["status", "metadata", "agentName"]),
527
- parts: newParts,
528
- text: joinText(newParts),
529
- });
530
- return acc;
531
- }, []);
532
- return combined;
533
- }
534
- function getToolCallId(part) {
535
- return part.toolCallId;
536
- }
537
- function mergeParts(previousPart, part) {
538
- const merged = { ...previousPart };
539
- for (const [key, value] of Object.entries(part)) {
540
- if (value !== undefined) {
541
- merged[key] = value;
542
- }
543
- }
544
- return merged;
545
- }
546
- //# sourceMappingURL=UIMessages.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"UIMessages.js","sourceRoot":"","sources":["../src/UIMessages.ts"],"names":[],"mappings":"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"}