@convex-dev/agent 0.6.4 → 0.7.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 (225) hide show
  1. package/MIGRATION.md +60 -116
  2. package/dist/client/messages.d.ts +1 -398
  3. package/dist/client/messages.d.ts.map +1 -1
  4. package/dist/client/messages.js +3 -47
  5. package/dist/client/messages.js.map +1 -1
  6. package/dist/client/types.d.ts +1 -455
  7. package/dist/client/types.d.ts.map +1 -1
  8. package/dist/component/_generated/component.d.ts +805 -45
  9. package/dist/component/_generated/component.d.ts.map +1 -1
  10. package/dist/component/messages.d.ts +1252 -201
  11. package/dist/component/messages.d.ts.map +1 -1
  12. package/dist/component/messages.js +49 -23
  13. package/dist/component/messages.js.map +1 -1
  14. package/dist/component/schema.d.ts +2593 -332
  15. package/dist/component/schema.d.ts.map +1 -1
  16. package/dist/component/streams.d.ts +7 -1
  17. package/dist/component/streams.d.ts.map +1 -1
  18. package/dist/component/streams.js +24 -30
  19. package/dist/component/streams.js.map +1 -1
  20. package/dist/component/threads.d.ts.map +1 -1
  21. package/dist/component/threads.js +1 -2
  22. package/dist/component/threads.js.map +1 -1
  23. package/dist/react/index.d.ts +5 -5
  24. package/dist/react/index.d.ts.map +1 -1
  25. package/dist/react/index.js +5 -5
  26. package/dist/react/index.js.map +1 -1
  27. package/dist/shared.d.ts +19 -7
  28. package/dist/shared.d.ts.map +1 -1
  29. package/dist/shared.js +4 -4
  30. package/dist/shared.js.map +1 -1
  31. package/dist/streaming/materializePersistedUIMessageChunks.d.ts +16 -0
  32. package/dist/streaming/materializePersistedUIMessageChunks.d.ts.map +1 -0
  33. package/dist/streaming/materializePersistedUIMessageChunks.js +302 -0
  34. package/dist/streaming/materializePersistedUIMessageChunks.js.map +1 -0
  35. package/dist/streaming/persistedUIMessageChunks.d.ts +106 -0
  36. package/dist/streaming/persistedUIMessageChunks.d.ts.map +1 -0
  37. package/dist/streaming/persistedUIMessageChunks.js +475 -0
  38. package/dist/streaming/persistedUIMessageChunks.js.map +1 -0
  39. package/dist/validators.d.ts +10026 -1055
  40. package/dist/validators.d.ts.map +1 -1
  41. package/dist/validators.js +71 -9
  42. package/dist/validators.js.map +1 -1
  43. package/dist/{UIMessages.d.ts → vercel/UIMessages.d.ts} +1 -1
  44. package/dist/vercel/UIMessages.d.ts.map +1 -0
  45. package/dist/{UIMessages.js → vercel/UIMessages.js} +63 -1
  46. package/dist/vercel/UIMessages.js.map +1 -0
  47. package/dist/{client → vercel/client}/createTool.d.ts +23 -16
  48. package/dist/vercel/client/createTool.d.ts.map +1 -0
  49. package/dist/{client → vercel/client}/createTool.js +2 -0
  50. package/dist/vercel/client/createTool.js.map +1 -0
  51. package/dist/{client → vercel/client}/definePlaygroundAPI.d.ts +533 -79
  52. package/dist/{client → vercel/client}/definePlaygroundAPI.d.ts.map +1 -1
  53. package/dist/{client → vercel/client}/definePlaygroundAPI.js +8 -7
  54. package/dist/vercel/client/definePlaygroundAPI.js.map +1 -0
  55. package/dist/{client → vercel/client}/files.d.ts +2 -2
  56. package/dist/vercel/client/files.d.ts.map +1 -0
  57. package/dist/vercel/client/files.js.map +1 -0
  58. package/dist/vercel/client/messages.d.ts +542 -0
  59. package/dist/vercel/client/messages.d.ts.map +1 -0
  60. package/dist/vercel/client/messages.js +66 -0
  61. package/dist/vercel/client/messages.js.map +1 -0
  62. package/dist/{client → vercel/client}/mockModel.d.ts +17 -17
  63. package/dist/vercel/client/mockModel.d.ts.map +1 -0
  64. package/dist/{client → vercel/client}/mockModel.js +12 -13
  65. package/dist/vercel/client/mockModel.js.map +1 -0
  66. package/dist/{client → vercel/client}/saveInputMessages.d.ts +2 -2
  67. package/dist/vercel/client/saveInputMessages.d.ts.map +1 -0
  68. package/dist/vercel/client/saveInputMessages.js.map +1 -0
  69. package/dist/{client → vercel/client}/search.d.ts +119 -22
  70. package/dist/vercel/client/search.d.ts.map +1 -0
  71. package/dist/{client → vercel/client}/search.js +2 -2
  72. package/dist/vercel/client/search.js.map +1 -0
  73. package/dist/{client → vercel/client}/start.d.ts +26 -11
  74. package/dist/vercel/client/start.d.ts.map +1 -0
  75. package/dist/{client → vercel/client}/start.js +64 -22
  76. package/dist/vercel/client/start.js.map +1 -0
  77. package/dist/{client → vercel/client}/streamText.d.ts +13 -12
  78. package/dist/vercel/client/streamText.d.ts.map +1 -0
  79. package/dist/{client → vercel/client}/streamText.js +43 -9
  80. package/dist/vercel/client/streamText.js.map +1 -0
  81. package/dist/{client → vercel/client}/streaming.d.ts +1410 -183
  82. package/dist/vercel/client/streaming.d.ts.map +1 -0
  83. package/dist/{client → vercel/client}/streaming.js +120 -52
  84. package/dist/vercel/client/streaming.js.map +1 -0
  85. package/dist/vercel/client/types.d.ts +456 -0
  86. package/dist/vercel/client/types.d.ts.map +1 -0
  87. package/dist/vercel/client/types.js +3 -0
  88. package/dist/vercel/client/types.js.map +1 -0
  89. package/dist/{client → vercel/client}/utils.d.ts +3 -2
  90. package/dist/vercel/client/utils.d.ts.map +1 -0
  91. package/dist/{client → vercel/client}/utils.js +2 -2
  92. package/dist/vercel/client/utils.js.map +1 -0
  93. package/dist/{deltas.d.ts → vercel/deltas.d.ts} +3 -4
  94. package/dist/vercel/deltas.d.ts.map +1 -0
  95. package/dist/{deltas.js → vercel/deltas.js} +195 -99
  96. package/dist/vercel/deltas.js.map +1 -0
  97. package/dist/{client → vercel}/index.d.ts +482 -106
  98. package/dist/vercel/index.d.ts.map +1 -0
  99. package/dist/{client → vercel}/index.js +64 -46
  100. package/dist/vercel/index.js.map +1 -0
  101. package/dist/{mapping.d.ts → vercel/mapping.d.ts} +5 -19
  102. package/dist/vercel/mapping.d.ts.map +1 -0
  103. package/dist/{mapping.js → vercel/mapping.js} +411 -114
  104. package/dist/vercel/mapping.js.map +1 -0
  105. package/dist/{react → vercel/react}/optimisticallySendMessage.d.ts +2 -2
  106. package/dist/vercel/react/optimisticallySendMessage.d.ts.map +1 -0
  107. package/dist/vercel/react/optimisticallySendMessage.js.map +1 -0
  108. package/dist/{react → vercel/react}/types.d.ts +1 -1
  109. package/dist/vercel/react/types.d.ts.map +1 -0
  110. package/dist/{react → vercel/react}/types.js.map +1 -1
  111. package/dist/{react → vercel/react}/useDeltaStreams.d.ts +1 -1
  112. package/dist/vercel/react/useDeltaStreams.d.ts.map +1 -0
  113. package/dist/{react → vercel/react}/useDeltaStreams.js +1 -1
  114. package/dist/vercel/react/useDeltaStreams.js.map +1 -0
  115. package/dist/{react → vercel/react}/useStreamingUIMessages.d.ts +1 -1
  116. package/dist/vercel/react/useStreamingUIMessages.d.ts.map +1 -0
  117. package/dist/{react → vercel/react}/useStreamingUIMessages.js +7 -3
  118. package/dist/vercel/react/useStreamingUIMessages.js.map +1 -0
  119. package/dist/{react → vercel/react}/useThreadMessages.d.ts +1 -1
  120. package/dist/vercel/react/useThreadMessages.d.ts.map +1 -0
  121. package/dist/{react → vercel/react}/useThreadMessages.js +1 -1
  122. package/dist/vercel/react/useThreadMessages.js.map +1 -0
  123. package/dist/{react → vercel/react}/useUIMessages.d.ts +1 -1
  124. package/dist/vercel/react/useUIMessages.d.ts.map +1 -0
  125. package/dist/{react → vercel/react}/useUIMessages.js +1 -1
  126. package/dist/vercel/react/useUIMessages.js.map +1 -0
  127. package/package.json +31 -24
  128. package/src/client/messages.ts +5 -107
  129. package/src/client/types.ts +0 -608
  130. package/src/component/_generated/component.ts +1089 -48
  131. package/src/component/messages.test.ts +273 -1
  132. package/src/component/messages.ts +62 -32
  133. package/src/component/streams.ts +47 -47
  134. package/src/component/threads.ts +5 -2
  135. package/src/eslintConfig.test.ts +44 -0
  136. package/src/react/index.ts +8 -5
  137. package/src/shared.ts +26 -36
  138. package/src/streaming/materializePersistedUIMessageChunks.test.ts +513 -0
  139. package/src/streaming/materializePersistedUIMessageChunks.ts +398 -0
  140. package/src/streaming/persistedUIMessageChunks.test.ts +205 -0
  141. package/src/streaming/persistedUIMessageChunks.ts +658 -0
  142. package/src/validators.test.ts +4 -1
  143. package/src/validators.ts +89 -8
  144. package/src/{UIMessages.combineUIMessages.test.ts → vercel/UIMessages.combineUIMessages.test.ts} +4 -1
  145. package/src/{UIMessages.ts → vercel/UIMessages.ts} +95 -3
  146. package/src/{client → vercel/client}/approval.test.ts +23 -13
  147. package/src/{client → vercel/client}/createTool.ts +62 -22
  148. package/src/{client → vercel/client}/definePlaygroundAPI.ts +15 -16
  149. package/src/{client → vercel/client}/files.ts +2 -2
  150. package/src/{client → vercel/client}/index.test.ts +99 -31
  151. package/src/vercel/client/messages.ts +182 -0
  152. package/src/{client → vercel/client}/mockModel.ts +38 -39
  153. package/src/{client → vercel/client}/saveInputMessages.test.ts +1 -1
  154. package/src/{client → vercel/client}/saveInputMessages.ts +3 -3
  155. package/src/{client → vercel/client}/search.test.ts +3 -3
  156. package/src/{client → vercel/client}/search.ts +4 -4
  157. package/src/{client → vercel/client}/setup.test.ts +6 -3
  158. package/src/vercel/client/start.test.ts +14 -0
  159. package/src/{client → vercel/client}/start.ts +147 -36
  160. package/src/vercel/client/streamText.test.ts +223 -0
  161. package/src/{client → vercel/client}/streamText.ts +102 -31
  162. package/src/{client → vercel/client}/streaming.integration.test.ts +6 -3
  163. package/src/{client → vercel/client}/streaming.test.ts +178 -4
  164. package/src/{client → vercel/client}/streaming.ts +114 -52
  165. package/src/vercel/client/types.test.ts +13 -0
  166. package/src/vercel/client/types.ts +679 -0
  167. package/src/{client → vercel/client}/utils.ts +13 -7
  168. package/src/{deltas.test.ts → vercel/deltas.test.ts} +384 -93
  169. package/src/{deltas.ts → vercel/deltas.ts} +218 -115
  170. package/src/{fromUIMessages.test.ts → vercel/fromUIMessages.test.ts} +17 -1
  171. package/src/{client → vercel}/index.ts +167 -84
  172. package/src/{mapping.test.ts → vercel/mapping.test.ts} +377 -92
  173. package/src/{mapping.ts → vercel/mapping.ts} +501 -137
  174. package/src/{react → vercel/react}/optimisticallySendMessage.ts +2 -2
  175. package/src/{react → vercel/react}/types.ts +1 -1
  176. package/src/{react → vercel/react}/useDeltaStreams.ts +6 -2
  177. package/src/{react → vercel/react}/useStreamingUIMessages.ts +7 -3
  178. package/src/{react → vercel/react}/useThreadMessages.ts +2 -2
  179. package/src/{react → vercel/react}/useUIMessages.ts +2 -2
  180. package/src/{toUIMessages.test.ts → vercel/toUIMessages.test.ts} +49 -2
  181. package/dist/UIMessages.d.ts.map +0 -1
  182. package/dist/UIMessages.js.map +0 -1
  183. package/dist/client/createTool.d.ts.map +0 -1
  184. package/dist/client/createTool.js.map +0 -1
  185. package/dist/client/definePlaygroundAPI.js.map +0 -1
  186. package/dist/client/files.d.ts.map +0 -1
  187. package/dist/client/files.js.map +0 -1
  188. package/dist/client/index.d.ts.map +0 -1
  189. package/dist/client/index.js.map +0 -1
  190. package/dist/client/mockModel.d.ts.map +0 -1
  191. package/dist/client/mockModel.js.map +0 -1
  192. package/dist/client/saveInputMessages.d.ts.map +0 -1
  193. package/dist/client/saveInputMessages.js.map +0 -1
  194. package/dist/client/search.d.ts.map +0 -1
  195. package/dist/client/search.js.map +0 -1
  196. package/dist/client/start.d.ts.map +0 -1
  197. package/dist/client/start.js.map +0 -1
  198. package/dist/client/streamText.d.ts.map +0 -1
  199. package/dist/client/streamText.js.map +0 -1
  200. package/dist/client/streaming.d.ts.map +0 -1
  201. package/dist/client/streaming.js.map +0 -1
  202. package/dist/client/utils.d.ts.map +0 -1
  203. package/dist/client/utils.js.map +0 -1
  204. package/dist/deltas.d.ts.map +0 -1
  205. package/dist/deltas.js.map +0 -1
  206. package/dist/mapping.d.ts.map +0 -1
  207. package/dist/mapping.js.map +0 -1
  208. package/dist/react/optimisticallySendMessage.d.ts.map +0 -1
  209. package/dist/react/optimisticallySendMessage.js.map +0 -1
  210. package/dist/react/types.d.ts.map +0 -1
  211. package/dist/react/useDeltaStreams.d.ts.map +0 -1
  212. package/dist/react/useDeltaStreams.js.map +0 -1
  213. package/dist/react/useStreamingUIMessages.d.ts.map +0 -1
  214. package/dist/react/useStreamingUIMessages.js.map +0 -1
  215. package/dist/react/useThreadMessages.d.ts.map +0 -1
  216. package/dist/react/useThreadMessages.js.map +0 -1
  217. package/dist/react/useUIMessages.d.ts.map +0 -1
  218. package/dist/react/useUIMessages.js.map +0 -1
  219. package/src/client/streamText.test.ts +0 -102
  220. /package/dist/{client → vercel/client}/files.js +0 -0
  221. /package/dist/{client → vercel/client}/saveInputMessages.js +0 -0
  222. /package/dist/{react → vercel/react}/optimisticallySendMessage.js +0 -0
  223. /package/dist/{react → vercel/react}/types.js +0 -0
  224. /package/src/{UIMessages.test.ts → vercel/UIMessages.test.ts} +0 -0
  225. /package/src/{react → vercel/react}/useUIMessages.test.ts +0 -0
@@ -0,0 +1,475 @@
1
+ export class PersistedUIMessageChunkError extends Error {
2
+ code;
3
+ chunkType;
4
+ id;
5
+ partType;
6
+ constructor(code, message, chunkType, id, partType) {
7
+ super(message);
8
+ this.code = code;
9
+ this.chunkType = chunkType;
10
+ this.id = id;
11
+ this.partType = partType;
12
+ }
13
+ }
14
+ export function createPersistedUIMessageChunkState() {
15
+ return {
16
+ format: "UIMessageChunk",
17
+ parts: [],
18
+ activeText: new Map(),
19
+ activeReasoning: new Map(),
20
+ toolIndexById: new Map(),
21
+ toolInputText: new Map(),
22
+ };
23
+ }
24
+ export function reducePersistedUIMessageChunks(previous, chunks) {
25
+ const parts = structuredClone(previous.parts);
26
+ const activeText = new Map(previous.activeText);
27
+ const activeReasoning = new Map(previous.activeReasoning);
28
+ const toolIndexById = new Map(previous.toolIndexById);
29
+ const toolInputText = new Map(previous.toolInputText);
30
+ const touchedToolCallIds = new Set();
31
+ const toolPart = (toolCallId) => {
32
+ const index = toolIndexById.get(toolCallId);
33
+ return index === undefined
34
+ ? undefined
35
+ : parts[index];
36
+ };
37
+ const addToolPart = (part) => {
38
+ parts.push(part);
39
+ toolIndexById.set(part.toolCallId, parts.length - 1);
40
+ return part;
41
+ };
42
+ chunkLoop: for (const value of chunks) {
43
+ const chunk = chunkRecord(value);
44
+ assertSupportedPersistedUIMessageChunk(chunk);
45
+ switch (chunk.type) {
46
+ case "text-start": {
47
+ const part = {
48
+ type: "text",
49
+ text: "",
50
+ state: "streaming",
51
+ providerMetadata: providerMetadata(chunk.providerMetadata),
52
+ };
53
+ parts.push(part);
54
+ activeText.set(stringField(chunk, "id"), parts.length - 1);
55
+ break;
56
+ }
57
+ case "text-delta": {
58
+ const id = stringField(chunk, "id");
59
+ const index = activeText.get(id);
60
+ if (index === undefined) {
61
+ throw missingPart(chunk.type, id, "text");
62
+ }
63
+ const part = parts[index];
64
+ part.text += stringField(chunk, "delta");
65
+ part.providerMetadata =
66
+ providerMetadata(chunk.providerMetadata) ?? part.providerMetadata;
67
+ break;
68
+ }
69
+ case "text-end": {
70
+ const id = stringField(chunk, "id");
71
+ const index = activeText.get(id);
72
+ if (index === undefined) {
73
+ throw missingPart(chunk.type, id, "text");
74
+ }
75
+ const part = parts[index];
76
+ part.state = "done";
77
+ part.providerMetadata =
78
+ providerMetadata(chunk.providerMetadata) ?? part.providerMetadata;
79
+ activeText.delete(id);
80
+ break;
81
+ }
82
+ case "reasoning-start": {
83
+ const part = {
84
+ type: "reasoning",
85
+ text: "",
86
+ state: "streaming",
87
+ providerMetadata: providerMetadata(chunk.providerMetadata),
88
+ };
89
+ parts.push(part);
90
+ activeReasoning.set(stringField(chunk, "id"), parts.length - 1);
91
+ break;
92
+ }
93
+ case "reasoning-delta": {
94
+ const id = stringField(chunk, "id");
95
+ const index = activeReasoning.get(id);
96
+ if (index === undefined) {
97
+ throw missingPart(chunk.type, id, "reasoning");
98
+ }
99
+ const part = parts[index];
100
+ part.text += stringField(chunk, "delta");
101
+ part.providerMetadata =
102
+ providerMetadata(chunk.providerMetadata) ?? part.providerMetadata;
103
+ break;
104
+ }
105
+ case "reasoning-end": {
106
+ const id = stringField(chunk, "id");
107
+ const index = activeReasoning.get(id);
108
+ if (index === undefined) {
109
+ throw missingPart(chunk.type, id, "reasoning");
110
+ }
111
+ const part = parts[index];
112
+ part.state = "done";
113
+ part.providerMetadata =
114
+ providerMetadata(chunk.providerMetadata) ?? part.providerMetadata;
115
+ activeReasoning.delete(id);
116
+ break;
117
+ }
118
+ case "tool-input-start": {
119
+ const toolCallId = stringField(chunk, "toolCallId");
120
+ const toolName = stringField(chunk, "toolName");
121
+ const dynamic = chunk.dynamic === true;
122
+ addToolPart({
123
+ type: dynamic ? "dynamic-tool" : `tool-${toolName}`,
124
+ toolName: dynamic ? toolName : undefined,
125
+ toolCallId,
126
+ state: "input-streaming",
127
+ providerExecuted: optionalBoolean(chunk.providerExecuted),
128
+ callProviderMetadata: providerMetadata(chunk.providerMetadata),
129
+ title: optionalString(chunk.title),
130
+ toolMetadata: optionalRecord(chunk.toolMetadata),
131
+ });
132
+ toolInputText.set(toolCallId, "");
133
+ break;
134
+ }
135
+ case "tool-input-delta": {
136
+ const toolCallId = stringField(chunk, "toolCallId");
137
+ if (!toolIndexById.has(toolCallId)) {
138
+ throw missingPart(chunk.type, toolCallId, "tool call");
139
+ }
140
+ toolInputText.set(toolCallId, (toolInputText.get(toolCallId) ?? "") +
141
+ stringField(chunk, "inputTextDelta"));
142
+ touchedToolCallIds.add(toolCallId);
143
+ break;
144
+ }
145
+ case "tool-input-available": {
146
+ const toolCallId = stringField(chunk, "toolCallId");
147
+ const toolName = stringField(chunk, "toolName");
148
+ const dynamic = chunk.dynamic === true;
149
+ const part = toolPart(toolCallId) ??
150
+ addToolPart({
151
+ type: dynamic ? "dynamic-tool" : `tool-${toolName}`,
152
+ toolName: dynamic ? toolName : undefined,
153
+ toolCallId,
154
+ state: "input-available",
155
+ });
156
+ Object.assign(part, {
157
+ state: "input-available",
158
+ input: chunk.input,
159
+ callProviderMetadata: providerMetadata(chunk.providerMetadata) ??
160
+ part.callProviderMetadata,
161
+ title: optionalString(chunk.title) ?? part.title,
162
+ toolMetadata: optionalRecord(chunk.toolMetadata) ?? part.toolMetadata,
163
+ providerExecuted: optionalBoolean(chunk.providerExecuted) ?? part.providerExecuted,
164
+ });
165
+ touchedToolCallIds.delete(toolCallId);
166
+ toolInputText.delete(toolCallId);
167
+ break;
168
+ }
169
+ case "tool-input-error": {
170
+ const toolCallId = stringField(chunk, "toolCallId");
171
+ const toolName = stringField(chunk, "toolName");
172
+ const dynamic = chunk.dynamic === true;
173
+ const part = toolPart(toolCallId) ??
174
+ addToolPart({
175
+ type: dynamic ? "dynamic-tool" : `tool-${toolName}`,
176
+ toolName: dynamic ? toolName : undefined,
177
+ toolCallId,
178
+ state: "output-error",
179
+ });
180
+ Object.assign(part, {
181
+ state: "output-error",
182
+ errorText: stringField(chunk, "errorText"),
183
+ ...(part.type === "dynamic-tool"
184
+ ? { input: chunk.input, rawInput: undefined }
185
+ : { input: undefined, rawInput: chunk.input }),
186
+ resultProviderMetadata: providerMetadata(chunk.providerMetadata) ??
187
+ part.resultProviderMetadata,
188
+ title: optionalString(chunk.title) ?? part.title,
189
+ toolMetadata: optionalRecord(chunk.toolMetadata) ?? part.toolMetadata,
190
+ providerExecuted: optionalBoolean(chunk.providerExecuted) ?? part.providerExecuted,
191
+ });
192
+ touchedToolCallIds.delete(toolCallId);
193
+ toolInputText.delete(toolCallId);
194
+ break;
195
+ }
196
+ case "tool-output-available": {
197
+ const toolCallId = stringField(chunk, "toolCallId");
198
+ const part = toolPart(toolCallId);
199
+ if (!part) {
200
+ // Orphan continuation of a prior message's tool call: stop reducing
201
+ // rather than persist parts referencing results this stream lacks.
202
+ break chunkLoop;
203
+ }
204
+ Object.assign(part, {
205
+ state: "output-available",
206
+ output: chunk.output,
207
+ preliminary: optionalBoolean(chunk.preliminary),
208
+ providerExecuted: optionalBoolean(chunk.providerExecuted) ?? part.providerExecuted,
209
+ resultProviderMetadata: providerMetadata(chunk.providerMetadata) ??
210
+ part.resultProviderMetadata,
211
+ toolMetadata: optionalRecord(chunk.toolMetadata) ?? part.toolMetadata,
212
+ });
213
+ break;
214
+ }
215
+ case "tool-output-error": {
216
+ const toolCallId = stringField(chunk, "toolCallId");
217
+ const part = toolPart(toolCallId);
218
+ if (!part) {
219
+ break chunkLoop;
220
+ }
221
+ Object.assign(part, {
222
+ state: "output-error",
223
+ errorText: stringField(chunk, "errorText"),
224
+ output: undefined,
225
+ preliminary: undefined,
226
+ providerExecuted: optionalBoolean(chunk.providerExecuted) ?? part.providerExecuted,
227
+ resultProviderMetadata: providerMetadata(chunk.providerMetadata) ??
228
+ part.resultProviderMetadata,
229
+ toolMetadata: optionalRecord(chunk.toolMetadata) ?? part.toolMetadata,
230
+ });
231
+ break;
232
+ }
233
+ case "tool-output-denied": {
234
+ const toolCallId = stringField(chunk, "toolCallId");
235
+ const part = toolPart(toolCallId);
236
+ if (!part) {
237
+ break chunkLoop;
238
+ }
239
+ if (!part.approval) {
240
+ throw new PersistedUIMessageChunkError("missing-approval", `Received tool-output-denied for tool call with ID "${toolCallId}" without a preceding tool-approval-request.`, chunk.type, toolCallId);
241
+ }
242
+ part.state = "output-denied";
243
+ break;
244
+ }
245
+ case "tool-approval-request": {
246
+ const toolCallId = stringField(chunk, "toolCallId");
247
+ const part = toolPart(toolCallId);
248
+ if (!part) {
249
+ break chunkLoop;
250
+ }
251
+ part.state = "approval-requested";
252
+ part.approval = {
253
+ id: stringField(chunk, "approvalId"),
254
+ isAutomatic: optionalBoolean(chunk.isAutomatic),
255
+ signature: optionalString(chunk.signature),
256
+ };
257
+ break;
258
+ }
259
+ case "tool-approval-response": {
260
+ const approvalId = stringField(chunk, "approvalId");
261
+ const part = parts.find((candidate) => isToolPart(candidate) && candidate.approval?.id === approvalId);
262
+ if (!part) {
263
+ break chunkLoop;
264
+ }
265
+ part.state = "approval-responded";
266
+ part.approval = {
267
+ ...part.approval,
268
+ approved: booleanField(chunk, "approved"),
269
+ reason: optionalString(chunk.reason),
270
+ };
271
+ part.providerExecuted =
272
+ optionalBoolean(chunk.providerExecuted) ?? part.providerExecuted;
273
+ part.callProviderMetadata =
274
+ providerMetadata(chunk.providerMetadata) ?? part.callProviderMetadata;
275
+ break;
276
+ }
277
+ case "custom":
278
+ parts.push({
279
+ type: "custom",
280
+ kind: stringField(chunk, "kind"),
281
+ providerMetadata: providerMetadata(chunk.providerMetadata),
282
+ });
283
+ break;
284
+ case "source-url":
285
+ parts.push({
286
+ type: "source-url",
287
+ sourceId: stringField(chunk, "sourceId"),
288
+ url: stringField(chunk, "url"),
289
+ title: optionalString(chunk.title),
290
+ providerMetadata: providerMetadata(chunk.providerMetadata),
291
+ });
292
+ break;
293
+ case "source-document":
294
+ parts.push({
295
+ type: "source-document",
296
+ sourceId: stringField(chunk, "sourceId"),
297
+ mediaType: stringField(chunk, "mediaType"),
298
+ title: stringField(chunk, "title"),
299
+ filename: optionalString(chunk.filename),
300
+ providerMetadata: providerMetadata(chunk.providerMetadata),
301
+ });
302
+ break;
303
+ case "file":
304
+ parts.push({
305
+ type: "file",
306
+ mediaType: stringField(chunk, "mediaType"),
307
+ url: stringField(chunk, "url"),
308
+ filename: optionalString(chunk.filename),
309
+ providerMetadata: providerMetadata(chunk.providerMetadata),
310
+ });
311
+ break;
312
+ case "reasoning-file":
313
+ parts.push({
314
+ type: "reasoning-file",
315
+ mediaType: stringField(chunk, "mediaType"),
316
+ url: stringField(chunk, "url"),
317
+ providerMetadata: providerMetadata(chunk.providerMetadata),
318
+ });
319
+ break;
320
+ case "start-step":
321
+ parts.push({ type: "step-start" });
322
+ break;
323
+ case "finish-step":
324
+ activeText.clear();
325
+ activeReasoning.clear();
326
+ break;
327
+ case "start":
328
+ case "finish":
329
+ case "message-metadata":
330
+ case "error":
331
+ case "abort":
332
+ break;
333
+ default:
334
+ if (chunk.type.startsWith("data-")) {
335
+ if (chunk.transient === true)
336
+ break;
337
+ const id = optionalString(chunk.id);
338
+ const existingIndex = id === undefined
339
+ ? -1
340
+ : parts.findIndex((part) => part.type === chunk.type && "id" in part && part.id === id);
341
+ if (existingIndex >= 0) {
342
+ parts[existingIndex].data = chunk.data;
343
+ }
344
+ else {
345
+ parts.push({
346
+ type: chunk.type,
347
+ id,
348
+ data: chunk.data,
349
+ });
350
+ }
351
+ }
352
+ else {
353
+ throw new PersistedUIMessageChunkError("unsupported-chunk", `Unsupported durable UI message chunk type "${chunk.type}"`, chunk.type);
354
+ }
355
+ }
356
+ }
357
+ return {
358
+ state: {
359
+ format: "UIMessageChunk",
360
+ parts,
361
+ activeText,
362
+ activeReasoning,
363
+ toolIndexById,
364
+ toolInputText,
365
+ },
366
+ touchedToolCallIds: [...touchedToolCallIds],
367
+ };
368
+ }
369
+ export function setParsedToolInput(state, toolCallId, input) {
370
+ const index = state.toolIndexById.get(toolCallId);
371
+ if (index === undefined)
372
+ return;
373
+ const part = state.parts[index];
374
+ if (part && isToolPart(part) && part.input === undefined) {
375
+ part.input = input;
376
+ }
377
+ }
378
+ export function collectContiguousStreamParts(deltas, fromCursor = 0) {
379
+ const parts = [];
380
+ let cursor = fromCursor;
381
+ for (const delta of [...deltas].sort((a, b) => a.start - b.start)) {
382
+ if (delta.parts.length === 0)
383
+ continue;
384
+ if (cursor !== delta.start) {
385
+ if (cursor >= delta.end)
386
+ continue;
387
+ if (cursor < delta.start)
388
+ break;
389
+ throw new Error(`Got unexpected delta for stream ${delta.streamId}: delta: ${delta.start} -> ${delta.end} existing cursor: ${cursor}`);
390
+ }
391
+ parts.push(...delta.parts);
392
+ cursor = delta.end;
393
+ }
394
+ return { parts, cursor };
395
+ }
396
+ function missingPart(chunkType, id, partType) {
397
+ return new PersistedUIMessageChunkError("missing-part", `Received ${chunkType} for missing ${partType} part with ID "${id}".`, chunkType, id, partType);
398
+ }
399
+ function chunkRecord(value) {
400
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
401
+ throw new Error("Invalid persisted UIMessageChunk");
402
+ }
403
+ const record = value;
404
+ if (typeof record.type !== "string") {
405
+ throw new Error("Persisted UIMessageChunk is missing a type");
406
+ }
407
+ return record;
408
+ }
409
+ const supportedChunkTypes = new Set([
410
+ "text-start",
411
+ "text-delta",
412
+ "text-end",
413
+ "reasoning-start",
414
+ "reasoning-delta",
415
+ "reasoning-end",
416
+ "custom",
417
+ "error",
418
+ "tool-input-start",
419
+ "tool-input-delta",
420
+ "tool-input-available",
421
+ "tool-input-error",
422
+ "tool-approval-request",
423
+ "tool-approval-response",
424
+ "tool-output-available",
425
+ "tool-output-error",
426
+ "tool-output-denied",
427
+ "source-url",
428
+ "source-document",
429
+ "file",
430
+ "reasoning-file",
431
+ "start-step",
432
+ "finish-step",
433
+ "start",
434
+ "finish",
435
+ "abort",
436
+ "message-metadata",
437
+ ]);
438
+ function assertSupportedPersistedUIMessageChunk(chunk) {
439
+ if (supportedChunkTypes.has(chunk.type) || chunk.type.startsWith("data-")) {
440
+ return;
441
+ }
442
+ throw new Error(`persisted chunk type "${chunk.type}" is not part of the supported UIMessageChunk wire format`);
443
+ }
444
+ function stringField(record, field) {
445
+ const value = record[field];
446
+ if (typeof value !== "string") {
447
+ throw new Error(`Persisted UIMessageChunk field ${field} must be a string`);
448
+ }
449
+ return value;
450
+ }
451
+ function booleanField(record, field) {
452
+ const value = record[field];
453
+ if (typeof value !== "boolean") {
454
+ throw new Error(`Persisted UIMessageChunk field ${field} must be a boolean`);
455
+ }
456
+ return value;
457
+ }
458
+ function optionalString(value) {
459
+ return typeof value === "string" ? value : undefined;
460
+ }
461
+ function optionalBoolean(value) {
462
+ return typeof value === "boolean" ? value : undefined;
463
+ }
464
+ function optionalRecord(value) {
465
+ return value !== null && typeof value === "object" && !Array.isArray(value)
466
+ ? value
467
+ : undefined;
468
+ }
469
+ function providerMetadata(value) {
470
+ return optionalRecord(value);
471
+ }
472
+ function isToolPart(part) {
473
+ return part.type === "dynamic-tool" || part.type.startsWith("tool-");
474
+ }
475
+ //# sourceMappingURL=persistedUIMessageChunks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistedUIMessageChunks.js","sourceRoot":"","sources":["../../src/streaming/persistedUIMessageChunks.ts"],"names":[],"mappings":"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"}