@convex-dev/agent 0.6.0-alpha.1 → 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 (181) hide show
  1. package/package.json +1 -1
  2. package/src/UIMessages.ts +135 -0
  3. package/src/client/index.ts +56 -14
  4. package/src/client/search.test.ts +4 -5
  5. package/src/client/search.ts +45 -4
  6. package/src/client/streaming.integration.test.ts +1206 -0
  7. package/src/client/streaming.ts +9 -2
  8. package/src/mapping.test.ts +136 -71
  9. package/src/mapping.ts +81 -28
  10. package/dist/UIMessages.d.ts +0 -46
  11. package/dist/UIMessages.d.ts.map +0 -1
  12. package/dist/UIMessages.js +0 -546
  13. package/dist/UIMessages.js.map +0 -1
  14. package/dist/client/createTool.d.ts +0 -167
  15. package/dist/client/createTool.d.ts.map +0 -1
  16. package/dist/client/createTool.js +0 -116
  17. package/dist/client/createTool.js.map +0 -1
  18. package/dist/client/defaultComponent.d.ts +0 -11
  19. package/dist/client/defaultComponent.d.ts.map +0 -1
  20. package/dist/client/defaultComponent.js +0 -7
  21. package/dist/client/defaultComponent.js.map +0 -1
  22. package/dist/client/definePlaygroundAPI.d.ts +0 -1725
  23. package/dist/client/definePlaygroundAPI.d.ts.map +0 -1
  24. package/dist/client/definePlaygroundAPI.js +0 -271
  25. package/dist/client/definePlaygroundAPI.js.map +0 -1
  26. package/dist/client/files.d.ts +0 -69
  27. package/dist/client/files.d.ts.map +0 -1
  28. package/dist/client/files.js +0 -181
  29. package/dist/client/files.js.map +0 -1
  30. package/dist/client/index.d.ts +0 -2091
  31. package/dist/client/index.d.ts.map +0 -1
  32. package/dist/client/index.js +0 -895
  33. package/dist/client/index.js.map +0 -1
  34. package/dist/client/messages.d.ts +0 -461
  35. package/dist/client/messages.d.ts.map +0 -1
  36. package/dist/client/messages.js +0 -106
  37. package/dist/client/messages.js.map +0 -1
  38. package/dist/client/mockModel.d.ts +0 -42
  39. package/dist/client/mockModel.d.ts.map +0 -1
  40. package/dist/client/mockModel.js +0 -182
  41. package/dist/client/mockModel.js.map +0 -1
  42. package/dist/client/saveInputMessages.d.ts +0 -20
  43. package/dist/client/saveInputMessages.d.ts.map +0 -1
  44. package/dist/client/saveInputMessages.js +0 -58
  45. package/dist/client/saveInputMessages.js.map +0 -1
  46. package/dist/client/search.d.ts +0 -493
  47. package/dist/client/search.d.ts.map +0 -1
  48. package/dist/client/search.js +0 -425
  49. package/dist/client/search.js.map +0 -1
  50. package/dist/client/start.d.ts +0 -84
  51. package/dist/client/start.d.ts.map +0 -1
  52. package/dist/client/start.js +0 -185
  53. package/dist/client/start.js.map +0 -1
  54. package/dist/client/streamText.d.ts +0 -46
  55. package/dist/client/streamText.d.ts.map +0 -1
  56. package/dist/client/streamText.js +0 -117
  57. package/dist/client/streamText.js.map +0 -1
  58. package/dist/client/streaming.d.ts +0 -3778
  59. package/dist/client/streaming.d.ts.map +0 -1
  60. package/dist/client/streaming.js +0 -314
  61. package/dist/client/streaming.js.map +0 -1
  62. package/dist/client/threads.d.ts +0 -46
  63. package/dist/client/threads.d.ts.map +0 -1
  64. package/dist/client/threads.js +0 -49
  65. package/dist/client/threads.js.map +0 -1
  66. package/dist/client/types.d.ts +0 -461
  67. package/dist/client/types.d.ts.map +0 -1
  68. package/dist/client/types.js +0 -2
  69. package/dist/client/types.js.map +0 -1
  70. package/dist/client/utils.d.ts +0 -4
  71. package/dist/client/utils.d.ts.map +0 -1
  72. package/dist/client/utils.js +0 -21
  73. package/dist/client/utils.js.map +0 -1
  74. package/dist/component/_generated/api.d.ts +0 -48
  75. package/dist/component/_generated/api.d.ts.map +0 -1
  76. package/dist/component/_generated/api.js +0 -31
  77. package/dist/component/_generated/api.js.map +0 -1
  78. package/dist/component/_generated/component.d.ts +0 -3120
  79. package/dist/component/_generated/component.d.ts.map +0 -1
  80. package/dist/component/_generated/component.js +0 -11
  81. package/dist/component/_generated/component.js.map +0 -1
  82. package/dist/component/_generated/dataModel.d.ts +0 -46
  83. package/dist/component/_generated/dataModel.d.ts.map +0 -1
  84. package/dist/component/_generated/dataModel.js +0 -11
  85. package/dist/component/_generated/dataModel.js.map +0 -1
  86. package/dist/component/_generated/server.d.ts +0 -121
  87. package/dist/component/_generated/server.d.ts.map +0 -1
  88. package/dist/component/_generated/server.js +0 -78
  89. package/dist/component/_generated/server.js.map +0 -1
  90. package/dist/component/apiKeys.d.ts +0 -11
  91. package/dist/component/apiKeys.d.ts.map +0 -1
  92. package/dist/component/apiKeys.js +0 -69
  93. package/dist/component/apiKeys.js.map +0 -1
  94. package/dist/component/convex.config.d.ts +0 -3
  95. package/dist/component/convex.config.d.ts.map +0 -1
  96. package/dist/component/convex.config.js +0 -3
  97. package/dist/component/convex.config.js.map +0 -1
  98. package/dist/component/files.d.ts +0 -97
  99. package/dist/component/files.d.ts.map +0 -1
  100. package/dist/component/files.js +0 -190
  101. package/dist/component/files.js.map +0 -1
  102. package/dist/component/messages.d.ts +0 -3851
  103. package/dist/component/messages.d.ts.map +0 -1
  104. package/dist/component/messages.js +0 -757
  105. package/dist/component/messages.js.map +0 -1
  106. package/dist/component/schema.d.ts +0 -8026
  107. package/dist/component/schema.d.ts.map +0 -1
  108. package/dist/component/schema.js +0 -147
  109. package/dist/component/schema.js.map +0 -1
  110. package/dist/component/streams.d.ts +0 -128
  111. package/dist/component/streams.d.ts.map +0 -1
  112. package/dist/component/streams.js +0 -413
  113. package/dist/component/streams.js.map +0 -1
  114. package/dist/component/threads.d.ts +0 -115
  115. package/dist/component/threads.d.ts.map +0 -1
  116. package/dist/component/threads.js +0 -208
  117. package/dist/component/threads.js.map +0 -1
  118. package/dist/component/users.d.ts +0 -52
  119. package/dist/component/users.d.ts.map +0 -1
  120. package/dist/component/users.js +0 -229
  121. package/dist/component/users.js.map +0 -1
  122. package/dist/component/vector/index.d.ts +0 -61
  123. package/dist/component/vector/index.d.ts.map +0 -1
  124. package/dist/component/vector/index.js +0 -146
  125. package/dist/component/vector/index.js.map +0 -1
  126. package/dist/component/vector/tables.d.ts +0 -58
  127. package/dist/component/vector/tables.d.ts.map +0 -1
  128. package/dist/component/vector/tables.js +0 -56
  129. package/dist/component/vector/tables.js.map +0 -1
  130. package/dist/deltas.d.ts +0 -43
  131. package/dist/deltas.d.ts.map +0 -1
  132. package/dist/deltas.js +0 -446
  133. package/dist/deltas.js.map +0 -1
  134. package/dist/mapping.d.ts +0 -72
  135. package/dist/mapping.d.ts.map +0 -1
  136. package/dist/mapping.js +0 -677
  137. package/dist/mapping.js.map +0 -1
  138. package/dist/react/SmoothText.d.ts +0 -5
  139. package/dist/react/SmoothText.d.ts.map +0 -1
  140. package/dist/react/SmoothText.js +0 -6
  141. package/dist/react/SmoothText.js.map +0 -1
  142. package/dist/react/index.d.ts +0 -25
  143. package/dist/react/index.d.ts.map +0 -1
  144. package/dist/react/index.js +0 -70
  145. package/dist/react/index.js.map +0 -1
  146. package/dist/react/optimisticallySendMessage.d.ts +0 -42
  147. package/dist/react/optimisticallySendMessage.d.ts.map +0 -1
  148. package/dist/react/optimisticallySendMessage.js +0 -74
  149. package/dist/react/optimisticallySendMessage.js.map +0 -1
  150. package/dist/react/types.d.ts +0 -12
  151. package/dist/react/types.d.ts.map +0 -1
  152. package/dist/react/types.js +0 -2
  153. package/dist/react/types.js.map +0 -1
  154. package/dist/react/useDeltaStreams.d.ts +0 -10
  155. package/dist/react/useDeltaStreams.d.ts.map +0 -1
  156. package/dist/react/useDeltaStreams.js +0 -106
  157. package/dist/react/useDeltaStreams.js.map +0 -1
  158. package/dist/react/useSmoothText.d.ts +0 -27
  159. package/dist/react/useSmoothText.d.ts.map +0 -1
  160. package/dist/react/useSmoothText.js +0 -68
  161. package/dist/react/useSmoothText.js.map +0 -1
  162. package/dist/react/useStreamingUIMessages.d.ts +0 -22
  163. package/dist/react/useStreamingUIMessages.d.ts.map +0 -1
  164. package/dist/react/useStreamingUIMessages.js +0 -92
  165. package/dist/react/useStreamingUIMessages.js.map +0 -1
  166. package/dist/react/useThreadMessages.d.ts +0 -104
  167. package/dist/react/useThreadMessages.d.ts.map +0 -1
  168. package/dist/react/useThreadMessages.js +0 -148
  169. package/dist/react/useThreadMessages.js.map +0 -1
  170. package/dist/react/useUIMessages.d.ts +0 -96
  171. package/dist/react/useUIMessages.d.ts.map +0 -1
  172. package/dist/react/useUIMessages.js +0 -108
  173. package/dist/react/useUIMessages.js.map +0 -1
  174. package/dist/shared.d.ts +0 -26
  175. package/dist/shared.d.ts.map +0 -1
  176. package/dist/shared.js +0 -67
  177. package/dist/shared.js.map +0 -1
  178. package/dist/validators.d.ts +0 -24516
  179. package/dist/validators.d.ts.map +0 -1
  180. package/dist/validators.js +0 -475
  181. package/dist/validators.js.map +0 -1
package/dist/deltas.js DELETED
@@ -1,446 +0,0 @@
1
- import { readUIMessageStream, } from "ai";
2
- import { assert, pick } from "convex-helpers";
3
- import {} from "./UIMessages.js";
4
- import { joinText, sorted } from "./shared.js";
5
- import {} from "./validators.js";
6
- import { getErrorMessage } from "@ai-sdk/provider-utils";
7
- export function blankUIMessage(streamMessage, threadId) {
8
- return {
9
- id: `stream:${streamMessage.streamId}`,
10
- key: `${threadId}-${streamMessage.order}-${streamMessage.stepOrder}`,
11
- order: streamMessage.order,
12
- stepOrder: streamMessage.stepOrder,
13
- status: statusFromStreamStatus(streamMessage.status),
14
- agentName: streamMessage.agentName,
15
- text: "",
16
- _creationTime: Date.now(),
17
- role: "assistant",
18
- parts: [],
19
- ...(streamMessage.metadata ? { metadata: streamMessage.metadata } : {}),
20
- };
21
- }
22
- export function statusFromStreamStatus(status) {
23
- switch (status) {
24
- case "streaming":
25
- return "streaming";
26
- case "finished":
27
- return "success";
28
- case "aborted":
29
- return "failed";
30
- default:
31
- return "pending";
32
- }
33
- }
34
- export async function updateFromUIMessageChunks(uiMessage, parts) {
35
- const partsStream = new ReadableStream({
36
- start(controller) {
37
- for (const part of parts) {
38
- controller.enqueue(part);
39
- }
40
- controller.close();
41
- },
42
- });
43
- let failed = false;
44
- let suppressError = false;
45
- const messageStream = readUIMessageStream({
46
- message: uiMessage,
47
- stream: partsStream,
48
- onError: (e) => {
49
- const errorMessage = e instanceof Error ? e.message : String(e);
50
- // Tool invocation errors can be safely ignored when streaming continuation
51
- // after tool approval - the stored messages have the complete tool context
52
- if (errorMessage.toLowerCase().includes("no tool invocation found")) {
53
- // Silently suppress - this is expected after tool approval when the
54
- // continuation stream has tool-result without the original tool-call
55
- suppressError = true;
56
- return;
57
- }
58
- failed = true;
59
- console.error("Error in stream", e);
60
- },
61
- terminateOnError: true,
62
- });
63
- let message = uiMessage;
64
- try {
65
- for await (const messagePart of messageStream) {
66
- assert(messagePart.id === message.id, `Expecting to only make one UIMessage in a stream`);
67
- message = messagePart;
68
- }
69
- }
70
- catch (e) {
71
- // If we've already handled this error in onError and marked it as suppressed,
72
- // don't rethrow - the stored messages provide the fallback
73
- if (!suppressError) {
74
- throw e;
75
- }
76
- }
77
- if (failed) {
78
- message.status = "failed";
79
- }
80
- message.text = joinText(message.parts);
81
- return message;
82
- }
83
- export async function deriveUIMessagesFromDeltas(threadId, streamMessages, allDeltas) {
84
- const messages = [];
85
- for (const streamMessage of streamMessages) {
86
- if (streamMessage.format === "UIMessageChunk") {
87
- const { parts } = getParts(allDeltas.filter((d) => d.streamId === streamMessage.streamId), 0);
88
- const uiMessage = await updateFromUIMessageChunks(blankUIMessage(streamMessage, threadId), parts);
89
- messages.push(uiMessage);
90
- }
91
- else {
92
- const [uiMessages] = deriveUIMessagesFromTextStreamParts(threadId, [streamMessage], [], allDeltas);
93
- messages.push(...uiMessages);
94
- }
95
- }
96
- return sorted(messages);
97
- }
98
- /**
99
- *
100
- */
101
- export function deriveUIMessagesFromTextStreamParts(threadId, streamMessages, existingStreams, allDeltas) {
102
- const newStreams = [];
103
- // Seed the existing chunks
104
- let changed = false;
105
- for (const streamMessage of streamMessages) {
106
- const deltas = allDeltas.filter((d) => d.streamId === streamMessage.streamId);
107
- const existing = existingStreams.find((s) => s.streamId === streamMessage.streamId);
108
- const [newStream, messageChanged] = updateFromTextStreamParts(threadId, streamMessage, existing, deltas);
109
- newStreams.push(newStream);
110
- if (messageChanged)
111
- changed = true;
112
- }
113
- for (const { streamId } of existingStreams) {
114
- if (!newStreams.find((s) => s.streamId === streamId)) {
115
- // There's a stream that's no longer active.
116
- changed = true;
117
- }
118
- }
119
- const messages = sorted(newStreams.map((s) => s.message));
120
- return [messages, newStreams, changed];
121
- }
122
- export function getParts(deltas, fromCursor) {
123
- const parts = [];
124
- let cursor = fromCursor ?? 0;
125
- for (const delta of deltas.sort((a, b) => a.start - b.start)) {
126
- if (delta.parts.length === 0) {
127
- console.debug(`Got delta with no parts: ${JSON.stringify(delta)}`);
128
- continue;
129
- }
130
- if (cursor !== delta.start) {
131
- if (cursor >= delta.end) {
132
- continue;
133
- }
134
- else if (cursor < delta.start) {
135
- console.warn(`Got delta for stream ${delta.streamId} that has a gap ${cursor} -> ${delta.start}`);
136
- break;
137
- }
138
- else {
139
- throw new Error(`Got unexpected delta for stream ${delta.streamId}: delta: ${delta.start} -> ${delta.end} existing cursor: ${cursor}`);
140
- }
141
- }
142
- parts.push(...delta.parts);
143
- cursor = delta.end;
144
- }
145
- return { parts, cursor };
146
- }
147
- /**
148
- * This is historically from when we would use the onChunk callback instead of
149
- * consuming the full UIMessageStream.
150
- */
151
- // exported for testing
152
- export function updateFromTextStreamParts(threadId, streamMessage, existing, deltas) {
153
- const { cursor, parts } = getParts(deltas, existing?.cursor);
154
- const changed = parts.length > 0 ||
155
- (existing &&
156
- statusFromStreamStatus(streamMessage.status) !== existing.message.status);
157
- const existingMessage = existing?.message ?? blankUIMessage(streamMessage, threadId);
158
- if (!changed) {
159
- return [
160
- existing ?? {
161
- streamId: streamMessage.streamId,
162
- cursor,
163
- message: existingMessage,
164
- },
165
- false,
166
- ];
167
- }
168
- const message = structuredClone(existingMessage);
169
- message.status = statusFromStreamStatus(streamMessage.status);
170
- const textPartsById = new Map();
171
- const toolPartsById = new Map(message.parts
172
- .filter((p) => p.type.startsWith("tool-") || p.type === "dynamic-tool")
173
- .map((p) => [p.toolCallId, p]));
174
- const reasoningPartsById = new Map();
175
- for (const part of parts) {
176
- switch (part.type) {
177
- case "text-start":
178
- case "text-delta": {
179
- if (!textPartsById.has(part.id)) {
180
- const lastPart = message.parts.at(-1);
181
- if (lastPart?.type === "text") {
182
- textPartsById.set(part.id, lastPart);
183
- }
184
- else {
185
- const newPart = {
186
- type: "text",
187
- text: "",
188
- providerMetadata: part.providerMetadata,
189
- };
190
- textPartsById.set(part.id, newPart);
191
- message.parts.push(newPart);
192
- }
193
- }
194
- if (part.type === "text-delta") {
195
- const textPart = textPartsById.get(part.id);
196
- textPart.text += part.text;
197
- textPart.providerMetadata = mergeProviderMetadata(textPart.providerMetadata, part.providerMetadata);
198
- }
199
- break;
200
- }
201
- case "tool-input-start": {
202
- let newPart;
203
- if (part.dynamic) {
204
- newPart = {
205
- type: "dynamic-tool",
206
- toolCallId: part.id,
207
- toolName: part.toolName,
208
- state: "input-streaming",
209
- input: "",
210
- };
211
- }
212
- else {
213
- newPart = {
214
- type: `tool-${part.toolName}`,
215
- toolCallId: part.id,
216
- state: "input-streaming",
217
- input: "",
218
- providerExecuted: part.providerExecuted,
219
- };
220
- }
221
- toolPartsById.set(part.id, newPart);
222
- message.parts.push(newPart);
223
- break;
224
- }
225
- case "tool-input-delta":
226
- {
227
- const toUpdate = toolPartsById.get(part.id);
228
- assert(toUpdate, `Expected to find tool call part ${part.id} to update`);
229
- toUpdate.input = (toUpdate.input ?? "") + part.delta;
230
- }
231
- break;
232
- case "tool-input-end":
233
- {
234
- const toUpdate = toolPartsById.get(part.id);
235
- assert(toUpdate, `Expected to find tool call part ${part.id} to update`);
236
- toUpdate.state = "input-available";
237
- if (part.providerMetadata) {
238
- const updatable = toUpdate;
239
- updatable.callProviderMetadata = mergeProviderMetadata(updatable.callProviderMetadata, part.providerMetadata);
240
- }
241
- }
242
- break;
243
- case "tool-call": {
244
- let newPart;
245
- if (part.dynamic) {
246
- newPart = {
247
- type: "dynamic-tool",
248
- toolCallId: part.toolCallId,
249
- toolName: part.toolName,
250
- input: part.input,
251
- state: "input-available",
252
- };
253
- }
254
- else {
255
- newPart = {
256
- type: `tool-${part.toolName}`,
257
- toolCallId: part.toolCallId,
258
- input: part.input,
259
- state: "input-available",
260
- };
261
- if (part.providerExecuted) {
262
- newPart.providerExecuted = part.providerExecuted;
263
- }
264
- }
265
- if (part.providerMetadata) {
266
- newPart.callProviderMetadata = part.providerMetadata;
267
- }
268
- if (toolPartsById.has(part.toolCallId)) {
269
- const toUpdate = toolPartsById.get(part.toolCallId);
270
- Object.assign(toUpdate, newPart);
271
- }
272
- else {
273
- toolPartsById.set(part.toolCallId, newPart);
274
- message.parts.push(newPart);
275
- }
276
- break;
277
- }
278
- case "tool-result": {
279
- const toolCall = toolPartsById.get(part.toolCallId);
280
- assert(toolCall, `Expected to find tool call part ${part.toolCallId} to update with result`);
281
- let newPart;
282
- if (toolCall.type === "dynamic-tool") {
283
- newPart = {
284
- ...toolCall,
285
- state: "output-available",
286
- input: part.input ?? toolCall.input,
287
- output: part.output ?? toolCall.output,
288
- ...pick(part, ["preliminary"]),
289
- };
290
- }
291
- else {
292
- newPart = {
293
- ...toolCall,
294
- state: "output-available",
295
- input: part.input ?? toolCall.input,
296
- output: part.output ?? toolCall.output,
297
- preliminary: part.preliminary,
298
- };
299
- }
300
- Object.assign(toolCall, newPart);
301
- break;
302
- }
303
- case "reasoning-start":
304
- case "reasoning-delta": {
305
- if (!reasoningPartsById.has(part.id)) {
306
- const lastPart = message.parts.at(-1);
307
- if (lastPart?.type === "reasoning") {
308
- reasoningPartsById.set(part.id, lastPart);
309
- }
310
- else {
311
- const newPart = {
312
- type: "reasoning",
313
- state: "streaming",
314
- text: "",
315
- providerMetadata: part.providerMetadata,
316
- };
317
- reasoningPartsById.set(part.id, newPart);
318
- message.parts.push(newPart);
319
- }
320
- }
321
- const reasoningPart = reasoningPartsById.get(part.id);
322
- if (part.type === "reasoning-delta") {
323
- reasoningPart.text += part.text;
324
- reasoningPart.providerMetadata = mergeProviderMetadata(reasoningPart.providerMetadata, part.providerMetadata);
325
- }
326
- break;
327
- }
328
- case "reasoning-end": {
329
- const reasoningPart = reasoningPartsById.get(part.id) ??
330
- message.parts.find((p) => p.type === "reasoning" && p.state === "streaming");
331
- if (reasoningPart) {
332
- reasoningPart.state = "done";
333
- }
334
- else {
335
- console.warn(`Expected to find reasoning part ${part.id} to finish, but found none`);
336
- }
337
- break;
338
- }
339
- case "source":
340
- if (part.sourceType === "url") {
341
- message.parts.push({
342
- type: "source-url",
343
- url: part.url,
344
- sourceId: part.id,
345
- providerMetadata: part.providerMetadata,
346
- title: part.title,
347
- });
348
- }
349
- else if (part.sourceType === "document") {
350
- message.parts.push({
351
- type: "source-document",
352
- mediaType: part.mediaType,
353
- sourceId: part.id,
354
- title: part.title,
355
- filename: part.filename,
356
- providerMetadata: part.providerMetadata,
357
- });
358
- }
359
- else {
360
- console.warn("Got source part with unknown source type", part);
361
- }
362
- break;
363
- case "abort":
364
- message.status = "failed";
365
- break;
366
- case "error":
367
- message.status = "failed";
368
- console.warn("Generation failed with error", part.error);
369
- break;
370
- case "tool-error": {
371
- const toolPart = toolPartsById.get(part.toolCallId);
372
- if (toolPart) {
373
- toolPart.errorText = getErrorMessage(part.error);
374
- }
375
- break;
376
- }
377
- case "tool-approval-request": {
378
- const typedPart = part;
379
- const toolPart = toolPartsById.get(typedPart.toolCallId);
380
- if (toolPart) {
381
- toolPart.state = "approval-requested";
382
- toolPart.approval = {
383
- id: typedPart.approvalId,
384
- };
385
- }
386
- else {
387
- console.warn(`Expected tool call part ${typedPart.toolCallId} for approval request`);
388
- }
389
- break;
390
- }
391
- case "file":
392
- case "text-end":
393
- case "finish-step":
394
- case "finish":
395
- case "raw":
396
- case "start-step":
397
- case "start":
398
- // ignore
399
- break;
400
- default: {
401
- // Exhaustiveness check disabled intentionally for forwards compatibility.
402
- // New TextStreamPart types from future AI SDK versions will trigger a
403
- // runtime warning rather than a compile error, allowing graceful degradation.
404
- // const _: never = part;
405
- console.warn(`Received unexpected part: ${JSON.stringify(part)}`);
406
- break;
407
- }
408
- }
409
- }
410
- // Consider reasoning done once something else happens
411
- for (let i = 0; i < message.parts.length - 1; i++) {
412
- const part = message.parts[i];
413
- if (part.type === "reasoning") {
414
- part.state = "done";
415
- }
416
- }
417
- message.text = joinText(message.parts);
418
- return [
419
- {
420
- streamId: streamMessage.streamId,
421
- cursor,
422
- message,
423
- },
424
- true,
425
- ];
426
- }
427
- function mergeProviderMetadata(existing, part) {
428
- if (!existing && !part) {
429
- return undefined;
430
- }
431
- if (!existing) {
432
- return part;
433
- }
434
- if (!part) {
435
- return existing;
436
- }
437
- const merged = existing;
438
- for (const [provider, metadata] of Object.entries(part)) {
439
- merged[provider] = {
440
- ...merged[provider],
441
- ...metadata,
442
- };
443
- }
444
- return merged;
445
- }
446
- //# sourceMappingURL=deltas.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deltas.js","sourceRoot":"","sources":["../src/deltas.ts"],"names":[],"mappings":"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"}
package/dist/mapping.d.ts DELETED
@@ -1,72 +0,0 @@
1
- import { type UIMessage as AIMessage, type AssistantContent, type ModelMessage, type DataContent, type FilePart, type GenerateObjectResult, type ImagePart, type StepResult, type ToolContent, type ToolSet, type UserContent, type FileUIPart, type LanguageModelUsage, type CallWarning, type ToolResultPart, type JSONValue } from "ai";
2
- import { type Message, type MessageWithMetadata, type Usage, type MessageDoc } from "./validators.js";
3
- import type { ActionCtx, AgentComponent } from "./client/types.js";
4
- import type { MutationCtx } from "./client/types.js";
5
- import { type ModelOrMetadata } from "./shared.js";
6
- export type AIMessageWithoutId = Omit<AIMessage, "id">;
7
- export type SerializeUrlsAndUint8Arrays<T> = T extends URL ? string : T extends Uint8Array | ArrayBufferLike ? ArrayBuffer : T extends Array<infer Inner> ? Array<SerializeUrlsAndUint8Arrays<Inner>> : T extends Record<string, any> ? {
8
- [K in keyof T]: SerializeUrlsAndUint8Arrays<T[K]>;
9
- } : T;
10
- export type Content = UserContent | AssistantContent | ToolContent;
11
- export type SerializedContent = Message["content"];
12
- export type SerializedMessage = Message;
13
- export declare function serializeMessage(ctx: ActionCtx | MutationCtx, component: AgentComponent, message: ModelMessage | Message): Promise<{
14
- message: SerializedMessage;
15
- fileIds?: string[];
16
- }>;
17
- export declare function fromModelMessage(message: ModelMessage): Message;
18
- export declare function serializeOrThrow(message: ModelMessage | Message): Promise<SerializedMessage>;
19
- export declare function toModelMessage(message: SerializedMessage | ModelMessage): ModelMessage;
20
- export declare function docsToModelMessages(messages: MessageDoc[]): ModelMessage[];
21
- /**
22
- * Merge consecutive tool messages that contain `tool-approval-response` parts
23
- * into a single tool message. The AI SDK's `collectToolApprovals` only examines
24
- * the last tool message, so when multiple approvals are saved as separate
25
- * messages (e.g. approve tool A, then deny tool B), they must be combined
26
- * for the SDK to process them all.
27
- */
28
- export declare function mergeApprovalResponseMessages(messages: ModelMessage[]): ModelMessage[];
29
- export declare function serializeUsage(usage: LanguageModelUsage): Usage;
30
- export declare function toModelMessageUsage(usage: Usage): LanguageModelUsage;
31
- export declare function serializeWarnings(warnings: CallWarning[] | undefined): MessageWithMetadata["warnings"];
32
- export declare function toModelMessageWarnings(warnings: MessageWithMetadata["warnings"]): CallWarning[] | undefined;
33
- export declare function serializeNewMessagesInStep<TOOLS extends ToolSet>(ctx: ActionCtx, component: AgentComponent, step: StepResult<TOOLS>, model: ModelOrMetadata | undefined,
34
- /**
35
- * If provided, these are the new response messages for this step
36
- * (pre-sliced by the caller). When not provided, falls back to the
37
- * existing heuristic of slicing the last 1-2 messages.
38
- *
39
- * This is needed for tool approval flows where the SDK adds extra
40
- * messages (e.g. approval tool-results) at the beginning of
41
- * responseMessages that the old slice(-1/-2) logic would miss.
42
- */
43
- newResponseMessages?: ModelMessage[]): Promise<{
44
- messages: MessageWithMetadata[];
45
- }>;
46
- export declare function serializeObjectResult(ctx: ActionCtx, component: AgentComponent, result: GenerateObjectResult<unknown>, model: ModelOrMetadata | undefined): Promise<{
47
- messages: MessageWithMetadata[];
48
- }>;
49
- export declare function serializeContent(ctx: ActionCtx | MutationCtx, component: AgentComponent, content: Content | Message["content"]): Promise<{
50
- content: SerializedContent;
51
- fileIds?: string[];
52
- }>;
53
- export declare function fromModelMessageContent(content: Content): Message["content"];
54
- export declare function toModelMessageContent(content: SerializedContent | ModelMessage["content"]): Content;
55
- export declare function normalizeToolOutput(result: string | JSONValue | undefined): ToolResultPart["output"];
56
- /**
57
- * Return a best-guess MIME type based on the magic-number signature
58
- * found at the start of an ArrayBuffer.
59
- *
60
- * @param buf – the source ArrayBuffer
61
- * @returns the detected MIME type, or `"application/octet-stream"` if unknown
62
- */
63
- export declare function guessMimeType(buf: ArrayBuffer | string): string;
64
- /**
65
- * Serialize an AI SDK `DataContent` or `URL` to a Convex-serializable format.
66
- * @param dataOrUrl - The data or URL to serialize.
67
- * @returns The serialized data as an ArrayBuffer or the URL as a string.
68
- */
69
- export declare function serializeDataOrUrl(dataOrUrl: DataContent | URL): ArrayBuffer | string;
70
- export declare function toModelMessageDataOrUrl(urlOrString: string | ArrayBuffer | URL | DataContent): URL | DataContent;
71
- export declare function toUIFilePart(part: ImagePart | FilePart): FileUIPart;
72
- //# sourceMappingURL=mapping.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../src/mapping.ts"],"names":[],"mappings":"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"}