assistant-stream 0.3.14 → 0.3.16

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 (238) hide show
  1. package/README.md +6 -4
  2. package/dist/core/AssistantStream.d.ts +50 -9
  3. package/dist/core/AssistantStream.d.ts.map +1 -1
  4. package/dist/core/AssistantStream.js +39 -15
  5. package/dist/core/AssistantStream.js.map +1 -1
  6. package/dist/core/AssistantStreamChunk.d.ts +84 -61
  7. package/dist/core/AssistantStreamChunk.d.ts.map +1 -1
  8. package/dist/core/AssistantStreamChunk.js +0 -2
  9. package/dist/core/accumulators/AssistantMessageStream.d.ts +15 -11
  10. package/dist/core/accumulators/AssistantMessageStream.d.ts.map +1 -1
  11. package/dist/core/accumulators/AssistantMessageStream.js +52 -48
  12. package/dist/core/accumulators/AssistantMessageStream.js.map +1 -1
  13. package/dist/core/accumulators/TimingTracker.d.ts +15 -11
  14. package/dist/core/accumulators/TimingTracker.d.ts.map +1 -1
  15. package/dist/core/accumulators/TimingTracker.js +36 -43
  16. package/dist/core/accumulators/TimingTracker.js.map +1 -1
  17. package/dist/core/accumulators/assistant-message-accumulator.d.ts +21 -11
  18. package/dist/core/accumulators/assistant-message-accumulator.d.ts.map +1 -1
  19. package/dist/core/accumulators/assistant-message-accumulator.js +349 -390
  20. package/dist/core/accumulators/assistant-message-accumulator.js.map +1 -1
  21. package/dist/core/converters/toGenericMessages.d.ts +49 -47
  22. package/dist/core/converters/toGenericMessages.d.ts.map +1 -1
  23. package/dist/core/converters/toGenericMessages.js +122 -136
  24. package/dist/core/converters/toGenericMessages.js.map +1 -1
  25. package/dist/core/modules/assistant-stream.d.ts +92 -28
  26. package/dist/core/modules/assistant-stream.d.ts.map +1 -1
  27. package/dist/core/modules/assistant-stream.js +177 -162
  28. package/dist/core/modules/assistant-stream.js.map +1 -1
  29. package/dist/core/modules/text.d.ts +11 -7
  30. package/dist/core/modules/text.d.ts.map +1 -1
  31. package/dist/core/modules/text.js +45 -45
  32. package/dist/core/modules/text.js.map +1 -1
  33. package/dist/core/modules/tool-call.d.ts +15 -11
  34. package/dist/core/modules/tool-call.d.ts.map +1 -1
  35. package/dist/core/modules/tool-call.js +81 -96
  36. package/dist/core/modules/tool-call.js.map +1 -1
  37. package/dist/core/object/ObjectStreamAccumulator.d.ts +13 -9
  38. package/dist/core/object/ObjectStreamAccumulator.d.ts.map +1 -1
  39. package/dist/core/object/ObjectStreamAccumulator.js +44 -52
  40. package/dist/core/object/ObjectStreamAccumulator.js.map +1 -1
  41. package/dist/core/object/ObjectStreamResponse.d.ts +12 -8
  42. package/dist/core/object/ObjectStreamResponse.d.ts.map +1 -1
  43. package/dist/core/object/ObjectStreamResponse.js +52 -71
  44. package/dist/core/object/ObjectStreamResponse.js.map +1 -1
  45. package/dist/core/object/createObjectStream.d.ts +14 -8
  46. package/dist/core/object/createObjectStream.d.ts.map +1 -1
  47. package/dist/core/object/createObjectStream.js +50 -47
  48. package/dist/core/object/createObjectStream.js.map +1 -1
  49. package/dist/core/object/types.d.ts +14 -11
  50. package/dist/core/object/types.d.ts.map +1 -1
  51. package/dist/core/object/types.js +0 -2
  52. package/dist/core/serialization/PlainText.d.ts +11 -7
  53. package/dist/core/serialization/PlainText.d.ts.map +1 -1
  54. package/dist/core/serialization/PlainText.js +40 -48
  55. package/dist/core/serialization/PlainText.js.map +1 -1
  56. package/dist/core/serialization/assistant-transport/AssistantTransport.d.ts +11 -7
  57. package/dist/core/serialization/assistant-transport/AssistantTransport.d.ts.map +1 -1
  58. package/dist/core/serialization/assistant-transport/AssistantTransport.js +102 -117
  59. package/dist/core/serialization/assistant-transport/AssistantTransport.js.map +1 -1
  60. package/dist/core/serialization/data-stream/DataStream.d.ts +11 -7
  61. package/dist/core/serialization/data-stream/DataStream.d.ts.map +1 -1
  62. package/dist/core/serialization/data-stream/DataStream.js +320 -371
  63. package/dist/core/serialization/data-stream/DataStream.js.map +1 -1
  64. package/dist/core/serialization/data-stream/chunk-types.d.ts +101 -100
  65. package/dist/core/serialization/data-stream/chunk-types.d.ts.map +1 -1
  66. package/dist/core/serialization/data-stream/chunk-types.js +27 -23
  67. package/dist/core/serialization/data-stream/chunk-types.js.map +1 -1
  68. package/dist/core/serialization/data-stream/serialization.d.ts +9 -5
  69. package/dist/core/serialization/data-stream/serialization.d.ts.map +1 -1
  70. package/dist/core/serialization/data-stream/serialization.js +23 -24
  71. package/dist/core/serialization/data-stream/serialization.js.map +1 -1
  72. package/dist/core/serialization/ui-message-stream/UIMessageStream.d.ts +15 -12
  73. package/dist/core/serialization/ui-message-stream/UIMessageStream.d.ts.map +1 -1
  74. package/dist/core/serialization/ui-message-stream/UIMessageStream.js +205 -228
  75. package/dist/core/serialization/ui-message-stream/UIMessageStream.js.map +1 -1
  76. package/dist/core/serialization/ui-message-stream/chunk-types.d.ts +68 -65
  77. package/dist/core/serialization/ui-message-stream/chunk-types.d.ts.map +1 -1
  78. package/dist/core/serialization/ui-message-stream/chunk-types.js +0 -2
  79. package/dist/core/tool/ToolCallReader.d.ts +34 -30
  80. package/dist/core/tool/ToolCallReader.d.ts.map +1 -1
  81. package/dist/core/tool/ToolCallReader.js +264 -317
  82. package/dist/core/tool/ToolCallReader.js.map +1 -1
  83. package/dist/core/tool/ToolExecutionStream.d.ts +20 -17
  84. package/dist/core/tool/ToolExecutionStream.d.ts.map +1 -1
  85. package/dist/core/tool/ToolExecutionStream.js +123 -146
  86. package/dist/core/tool/ToolExecutionStream.js.map +1 -1
  87. package/dist/core/tool/ToolResponse.d.ts +60 -19
  88. package/dist/core/tool/ToolResponse.d.ts.map +1 -1
  89. package/dist/core/tool/ToolResponse.js +51 -34
  90. package/dist/core/tool/ToolResponse.js.map +1 -1
  91. package/dist/core/tool/schema-utils.d.ts +19 -15
  92. package/dist/core/tool/schema-utils.d.ts.map +1 -1
  93. package/dist/core/tool/schema-utils.js +50 -84
  94. package/dist/core/tool/schema-utils.js.map +1 -1
  95. package/dist/core/tool/tool-types.d.ts +173 -92
  96. package/dist/core/tool/tool-types.d.ts.map +1 -1
  97. package/dist/core/tool/tool-types.js +0 -2
  98. package/dist/core/tool/toolResultStream.d.ts +24 -7
  99. package/dist/core/tool/toolResultStream.d.ts.map +1 -1
  100. package/dist/core/tool/toolResultStream.js +128 -145
  101. package/dist/core/tool/toolResultStream.js.map +1 -1
  102. package/dist/core/tool/type-path-utils.d.ts +8 -19
  103. package/dist/core/tool/type-path-utils.d.ts.map +1 -1
  104. package/dist/core/tool/type-path-utils.js +0 -2
  105. package/dist/core/utils/Counter.d.ts +6 -3
  106. package/dist/core/utils/Counter.d.ts.map +1 -1
  107. package/dist/core/utils/Counter.js +10 -6
  108. package/dist/core/utils/Counter.js.map +1 -1
  109. package/dist/core/utils/generateId.d.ts +4 -1
  110. package/dist/core/utils/generateId.d.ts.map +1 -1
  111. package/dist/core/utils/generateId.js +5 -1
  112. package/dist/core/utils/generateId.js.map +1 -1
  113. package/dist/core/utils/stream/AssistantMetaTransformStream.d.ts +15 -11
  114. package/dist/core/utils/stream/AssistantMetaTransformStream.d.ts.map +1 -1
  115. package/dist/core/utils/stream/AssistantMetaTransformStream.js +38 -42
  116. package/dist/core/utils/stream/AssistantMetaTransformStream.js.map +1 -1
  117. package/dist/core/utils/stream/AssistantTransformStream.d.ts +11 -8
  118. package/dist/core/utils/stream/AssistantTransformStream.d.ts.map +1 -1
  119. package/dist/core/utils/stream/AssistantTransformStream.js +37 -35
  120. package/dist/core/utils/stream/AssistantTransformStream.js.map +1 -1
  121. package/dist/core/utils/stream/LineDecoderStream.d.ts +6 -3
  122. package/dist/core/utils/stream/LineDecoderStream.d.ts.map +1 -1
  123. package/dist/core/utils/stream/LineDecoderStream.js +23 -26
  124. package/dist/core/utils/stream/LineDecoderStream.js.map +1 -1
  125. package/dist/core/utils/stream/PipeableTransformStream.d.ts +5 -2
  126. package/dist/core/utils/stream/PipeableTransformStream.d.ts.map +1 -1
  127. package/dist/core/utils/stream/PipeableTransformStream.js +14 -10
  128. package/dist/core/utils/stream/PipeableTransformStream.js.map +1 -1
  129. package/dist/core/utils/stream/SSE.d.ts +10 -6
  130. package/dist/core/utils/stream/SSE.d.ts.map +1 -1
  131. package/dist/core/utils/stream/SSE.js +79 -91
  132. package/dist/core/utils/stream/SSE.js.map +1 -1
  133. package/dist/core/utils/stream/UnderlyingReadable.d.ts +7 -4
  134. package/dist/core/utils/stream/UnderlyingReadable.d.ts.map +1 -1
  135. package/dist/core/utils/stream/UnderlyingReadable.js +0 -2
  136. package/dist/core/utils/stream/merge.d.ts +11 -7
  137. package/dist/core/utils/stream/merge.d.ts.map +1 -1
  138. package/dist/core/utils/stream/merge.js +68 -170
  139. package/dist/core/utils/stream/merge.js.map +1 -1
  140. package/dist/core/utils/stream/path-utils.d.ts +11 -7
  141. package/dist/core/utils/stream/path-utils.d.ts.map +1 -1
  142. package/dist/core/utils/stream/path-utils.js +46 -52
  143. package/dist/core/utils/stream/path-utils.js.map +1 -1
  144. package/dist/core/utils/types.d.ts +109 -113
  145. package/dist/core/utils/types.d.ts.map +1 -1
  146. package/dist/core/utils/types.js +0 -2
  147. package/dist/core/utils/withPromiseOrValue.d.ts +4 -1
  148. package/dist/core/utils/withPromiseOrValue.d.ts.map +1 -1
  149. package/dist/core/utils/withPromiseOrValue.js +12 -15
  150. package/dist/core/utils/withPromiseOrValue.js.map +1 -1
  151. package/dist/index.d.ts +23 -24
  152. package/dist/index.js +16 -16
  153. package/dist/node_modules/.pnpm/@types_json-schema@7.0.15/node_modules/@types/json-schema/index.d.ts +141 -0
  154. package/dist/node_modules/.pnpm/@types_json-schema@7.0.15/node_modules/@types/json-schema/index.d.ts.map +1 -0
  155. package/dist/resumable/ResumableStreamContext.d.ts +28 -24
  156. package/dist/resumable/ResumableStreamContext.d.ts.map +1 -1
  157. package/dist/resumable/ResumableStreamContext.js +99 -114
  158. package/dist/resumable/ResumableStreamContext.js.map +1 -1
  159. package/dist/resumable/constants.d.ts +4 -1
  160. package/dist/resumable/constants.d.ts.map +1 -1
  161. package/dist/resumable/constants.js +5 -1
  162. package/dist/resumable/constants.js.map +1 -1
  163. package/dist/resumable/createResumableAssistantStreamResponse.d.ts +22 -21
  164. package/dist/resumable/createResumableAssistantStreamResponse.d.ts.map +1 -1
  165. package/dist/resumable/createResumableAssistantStreamResponse.js +25 -32
  166. package/dist/resumable/createResumableAssistantStreamResponse.js.map +1 -1
  167. package/dist/resumable/errors.d.ts +8 -5
  168. package/dist/resumable/errors.d.ts.map +1 -1
  169. package/dist/resumable/errors.js +14 -12
  170. package/dist/resumable/errors.js.map +1 -1
  171. package/dist/resumable/index.d.ts +7 -7
  172. package/dist/resumable/index.js +5 -5
  173. package/dist/resumable/stores/InMemoryResumableStreamStore.d.ts +14 -10
  174. package/dist/resumable/stores/InMemoryResumableStreamStore.d.ts.map +1 -1
  175. package/dist/resumable/stores/InMemoryResumableStreamStore.js +159 -193
  176. package/dist/resumable/stores/InMemoryResumableStreamStore.js.map +1 -1
  177. package/dist/resumable/stores/ioredis.d.ts +9 -5
  178. package/dist/resumable/stores/ioredis.d.ts.map +1 -1
  179. package/dist/resumable/stores/ioredis.js +70 -82
  180. package/dist/resumable/stores/ioredis.js.map +1 -1
  181. package/dist/resumable/stores/redis-impl.d.ts +51 -48
  182. package/dist/resumable/stores/redis-impl.d.ts.map +1 -1
  183. package/dist/resumable/stores/redis-impl.js +176 -176
  184. package/dist/resumable/stores/redis-impl.js.map +1 -1
  185. package/dist/resumable/stores/redis.d.ts +31 -28
  186. package/dist/resumable/stores/redis.d.ts.map +1 -1
  187. package/dist/resumable/stores/redis.js +87 -95
  188. package/dist/resumable/stores/redis.js.map +1 -1
  189. package/dist/resumable/types.d.ts +29 -26
  190. package/dist/resumable/types.d.ts.map +1 -1
  191. package/dist/resumable/types.js +0 -2
  192. package/dist/utils/AsyncIterableStream.d.ts +5 -2
  193. package/dist/utils/AsyncIterableStream.d.ts.map +1 -1
  194. package/dist/utils/AsyncIterableStream.js +17 -16
  195. package/dist/utils/AsyncIterableStream.js.map +1 -1
  196. package/dist/utils/json/fix-json.d.ts +4 -1
  197. package/dist/utils/json/fix-json.d.ts.map +1 -1
  198. package/dist/utils/json/fix-json.js +286 -380
  199. package/dist/utils/json/fix-json.js.map +1 -1
  200. package/dist/utils/json/is-json.d.ts +8 -4
  201. package/dist/utils/json/is-json.d.ts.map +1 -1
  202. package/dist/utils/json/is-json.js +13 -21
  203. package/dist/utils/json/is-json.js.map +1 -1
  204. package/dist/utils/json/json-value.d.ts +7 -4
  205. package/dist/utils/json/json-value.d.ts.map +1 -1
  206. package/dist/utils/json/json-value.js +0 -2
  207. package/dist/utils/json/parse-partial-json-object.d.ts +11 -8
  208. package/dist/utils/json/parse-partial-json-object.d.ts.map +1 -1
  209. package/dist/utils/json/parse-partial-json-object.js +50 -62
  210. package/dist/utils/json/parse-partial-json-object.js.map +1 -1
  211. package/dist/utils/promiseWithResolvers.d.ts +7 -4
  212. package/dist/utils/promiseWithResolvers.d.ts.map +1 -1
  213. package/dist/utils/promiseWithResolvers.js +17 -10
  214. package/dist/utils/promiseWithResolvers.js.map +1 -1
  215. package/dist/utils.d.ts +6 -6
  216. package/dist/utils.js +5 -5
  217. package/package.json +5 -4
  218. package/src/core/AssistantStream.ts +37 -0
  219. package/src/core/AssistantStreamChunk.ts +30 -0
  220. package/src/core/modules/assistant-stream.ts +68 -0
  221. package/src/core/tool/ToolResponse.ts +45 -1
  222. package/src/core/tool/tool-types.ts +102 -2
  223. package/src/core/tool/toolResultStream.ts +15 -0
  224. package/dist/core/AssistantStreamChunk.js.map +0 -1
  225. package/dist/core/object/types.js.map +0 -1
  226. package/dist/core/serialization/ui-message-stream/chunk-types.js.map +0 -1
  227. package/dist/core/tool/tool-types.js.map +0 -1
  228. package/dist/core/tool/type-path-utils.js.map +0 -1
  229. package/dist/core/utils/stream/UnderlyingReadable.js.map +0 -1
  230. package/dist/core/utils/types.js.map +0 -1
  231. package/dist/index.d.ts.map +0 -1
  232. package/dist/index.js.map +0 -1
  233. package/dist/resumable/index.d.ts.map +0 -1
  234. package/dist/resumable/index.js.map +0 -1
  235. package/dist/resumable/types.js.map +0 -1
  236. package/dist/utils/json/json-value.js.map +0 -1
  237. package/dist/utils.d.ts.map +0 -1
  238. package/dist/utils.js.map +0 -1
@@ -1,377 +1,326 @@
1
1
  import { AssistantTransformStream } from "../../utils/stream/AssistantTransformStream.js";
2
2
  import { PipeableTransformStream } from "../../utils/stream/PipeableTransformStream.js";
3
- import { DataStreamStreamChunkType } from "./chunk-types.js";
3
+ import "./chunk-types.js";
4
4
  import { LineDecoderStream } from "../../utils/stream/LineDecoderStream.js";
5
- import { DataStreamChunkDecoder, DataStreamChunkEncoder, } from "./serialization.js";
6
- import { AssistantMetaTransformStream, } from "../../utils/stream/AssistantMetaTransformStream.js";
7
- export class DataStreamEncoder extends PipeableTransformStream {
8
- headers = new Headers({
9
- "Content-Type": "text/plain; charset=utf-8",
10
- "x-vercel-ai-data-stream": "v1",
11
- });
12
- constructor() {
13
- super((readable) => {
14
- const transform = new TransformStream({
15
- transform(chunk, controller) {
16
- const type = chunk.type;
17
- switch (type) {
18
- case "part-start": {
19
- const part = chunk.part;
20
- if (part.type === "tool-call") {
21
- const { type, ...value } = part;
22
- controller.enqueue({
23
- type: DataStreamStreamChunkType.StartToolCall,
24
- value,
25
- });
26
- }
27
- if (part.type === "source") {
28
- const { type, ...value } = part;
29
- controller.enqueue({
30
- type: DataStreamStreamChunkType.Source,
31
- value,
32
- });
33
- }
34
- if (part.type === "data") {
35
- const { type, ...value } = part;
36
- controller.enqueue({
37
- type: DataStreamStreamChunkType.AuiDataPart,
38
- value,
39
- });
40
- }
41
- break;
42
- }
43
- case "text-delta": {
44
- const part = chunk.meta;
45
- switch (part.type) {
46
- case "text": {
47
- if (part.parentId) {
48
- controller.enqueue({
49
- type: DataStreamStreamChunkType.AuiTextDelta,
50
- value: {
51
- textDelta: chunk.textDelta,
52
- parentId: part.parentId,
53
- },
54
- });
55
- }
56
- else {
57
- controller.enqueue({
58
- type: DataStreamStreamChunkType.TextDelta,
59
- value: chunk.textDelta,
60
- });
61
- }
62
- break;
63
- }
64
- case "reasoning": {
65
- if (part.parentId) {
66
- controller.enqueue({
67
- type: DataStreamStreamChunkType.AuiReasoningDelta,
68
- value: {
69
- reasoningDelta: chunk.textDelta,
70
- parentId: part.parentId,
71
- },
72
- });
73
- }
74
- else {
75
- controller.enqueue({
76
- type: DataStreamStreamChunkType.ReasoningDelta,
77
- value: chunk.textDelta,
78
- });
79
- }
80
- break;
81
- }
82
- case "tool-call": {
83
- controller.enqueue({
84
- type: DataStreamStreamChunkType.ToolCallArgsTextDelta,
85
- value: {
86
- toolCallId: part.toolCallId,
87
- argsTextDelta: chunk.textDelta,
88
- },
89
- });
90
- break;
91
- }
92
- default:
93
- throw new Error(`Unsupported part type for text-delta: ${part.type}`);
94
- }
95
- break;
96
- }
97
- case "result": {
98
- // Only tool-call parts can have results.
99
- const part = chunk.meta;
100
- if (part.type !== "tool-call") {
101
- throw new Error(`Result chunk on non-tool-call part not supported: ${part.type}`);
102
- }
103
- controller.enqueue({
104
- type: DataStreamStreamChunkType.ToolCallResult,
105
- value: {
106
- toolCallId: part.toolCallId,
107
- result: chunk.result,
108
- artifact: chunk.artifact,
109
- ...(chunk.isError ? { isError: chunk.isError } : {}),
110
- },
111
- });
112
- break;
113
- }
114
- case "step-start": {
115
- const { type, ...value } = chunk;
116
- controller.enqueue({
117
- type: DataStreamStreamChunkType.StartStep,
118
- value,
119
- });
120
- break;
121
- }
122
- case "step-finish": {
123
- const { type, ...value } = chunk;
124
- controller.enqueue({
125
- type: DataStreamStreamChunkType.FinishStep,
126
- value,
127
- });
128
- break;
129
- }
130
- case "message-finish": {
131
- const { type, ...value } = chunk;
132
- controller.enqueue({
133
- type: DataStreamStreamChunkType.FinishMessage,
134
- value,
135
- });
136
- break;
137
- }
138
- case "error": {
139
- controller.enqueue({
140
- type: DataStreamStreamChunkType.Error,
141
- value: chunk.error,
142
- });
143
- break;
144
- }
145
- case "annotations": {
146
- controller.enqueue({
147
- type: DataStreamStreamChunkType.Annotation,
148
- value: chunk.annotations,
149
- });
150
- break;
151
- }
152
- case "data": {
153
- controller.enqueue({
154
- type: DataStreamStreamChunkType.Data,
155
- value: chunk.data,
156
- });
157
- break;
158
- }
159
- case "update-state": {
160
- controller.enqueue({
161
- type: DataStreamStreamChunkType.AuiUpdateStateOperations,
162
- value: chunk.operations,
163
- });
164
- break;
165
- }
166
- // TODO ignore for now
167
- // in the future, we should create a handler that waits for text parts to finish before continuing
168
- case "tool-call-args-text-finish":
169
- case "part-finish":
170
- break;
171
- default: {
172
- const exhaustiveCheck = type;
173
- throw new Error(`Unsupported chunk type: ${exhaustiveCheck}`);
174
- }
175
- }
176
- },
177
- });
178
- return readable
179
- .pipeThrough(new AssistantMetaTransformStream())
180
- .pipeThrough(transform)
181
- .pipeThrough(new DataStreamChunkEncoder())
182
- .pipeThrough(new TextEncoderStream());
183
- });
184
- }
185
- }
5
+ import { DataStreamChunkDecoder, DataStreamChunkEncoder } from "./serialization.js";
6
+ import { AssistantMetaTransformStream } from "../../utils/stream/AssistantMetaTransformStream.js";
7
+ //#region src/core/serialization/data-stream/DataStream.ts
8
+ var DataStreamEncoder = class extends PipeableTransformStream {
9
+ headers = new Headers({
10
+ "Content-Type": "text/plain; charset=utf-8",
11
+ "x-vercel-ai-data-stream": "v1"
12
+ });
13
+ constructor() {
14
+ super((readable) => {
15
+ const transform = new TransformStream({ transform(chunk, controller) {
16
+ const type = chunk.type;
17
+ switch (type) {
18
+ case "part-start": {
19
+ const part = chunk.part;
20
+ if (part.type === "tool-call") {
21
+ const { type, ...value } = part;
22
+ controller.enqueue({
23
+ type: "b",
24
+ value
25
+ });
26
+ }
27
+ if (part.type === "source") {
28
+ const { type, ...value } = part;
29
+ controller.enqueue({
30
+ type: "h",
31
+ value
32
+ });
33
+ }
34
+ if (part.type === "data") {
35
+ const { type, ...value } = part;
36
+ controller.enqueue({
37
+ type: "aui-data",
38
+ value
39
+ });
40
+ }
41
+ break;
42
+ }
43
+ case "text-delta": {
44
+ const part = chunk.meta;
45
+ switch (part.type) {
46
+ case "text":
47
+ if (part.parentId) controller.enqueue({
48
+ type: "aui-text-delta",
49
+ value: {
50
+ textDelta: chunk.textDelta,
51
+ parentId: part.parentId
52
+ }
53
+ });
54
+ else controller.enqueue({
55
+ type: "0",
56
+ value: chunk.textDelta
57
+ });
58
+ break;
59
+ case "reasoning":
60
+ if (part.parentId) controller.enqueue({
61
+ type: "aui-reasoning-delta",
62
+ value: {
63
+ reasoningDelta: chunk.textDelta,
64
+ parentId: part.parentId
65
+ }
66
+ });
67
+ else controller.enqueue({
68
+ type: "g",
69
+ value: chunk.textDelta
70
+ });
71
+ break;
72
+ case "tool-call":
73
+ controller.enqueue({
74
+ type: "c",
75
+ value: {
76
+ toolCallId: part.toolCallId,
77
+ argsTextDelta: chunk.textDelta
78
+ }
79
+ });
80
+ break;
81
+ default: throw new Error(`Unsupported part type for text-delta: ${part.type}`);
82
+ }
83
+ break;
84
+ }
85
+ case "result": {
86
+ const part = chunk.meta;
87
+ if (part.type !== "tool-call") throw new Error(`Result chunk on non-tool-call part not supported: ${part.type}`);
88
+ controller.enqueue({
89
+ type: "a",
90
+ value: {
91
+ toolCallId: part.toolCallId,
92
+ result: chunk.result,
93
+ artifact: chunk.artifact,
94
+ ...chunk.isError ? { isError: chunk.isError } : {}
95
+ }
96
+ });
97
+ break;
98
+ }
99
+ case "step-start": {
100
+ const { type, ...value } = chunk;
101
+ controller.enqueue({
102
+ type: "f",
103
+ value
104
+ });
105
+ break;
106
+ }
107
+ case "step-finish": {
108
+ const { type, ...value } = chunk;
109
+ controller.enqueue({
110
+ type: "e",
111
+ value
112
+ });
113
+ break;
114
+ }
115
+ case "message-finish": {
116
+ const { type, ...value } = chunk;
117
+ controller.enqueue({
118
+ type: "d",
119
+ value
120
+ });
121
+ break;
122
+ }
123
+ case "error":
124
+ controller.enqueue({
125
+ type: "3",
126
+ value: chunk.error
127
+ });
128
+ break;
129
+ case "annotations":
130
+ controller.enqueue({
131
+ type: "8",
132
+ value: chunk.annotations
133
+ });
134
+ break;
135
+ case "data":
136
+ controller.enqueue({
137
+ type: "2",
138
+ value: chunk.data
139
+ });
140
+ break;
141
+ case "update-state":
142
+ controller.enqueue({
143
+ type: "aui-state",
144
+ value: chunk.operations
145
+ });
146
+ break;
147
+ case "tool-call-args-text-finish":
148
+ case "part-finish": break;
149
+ default: throw new Error(`Unsupported chunk type: ${type}`);
150
+ }
151
+ } });
152
+ return readable.pipeThrough(new AssistantMetaTransformStream()).pipeThrough(transform).pipeThrough(new DataStreamChunkEncoder()).pipeThrough(new TextEncoderStream());
153
+ });
154
+ }
155
+ };
186
156
  const TOOL_CALL_ARGS_CLOSING_CHUNKS = [
187
- DataStreamStreamChunkType.StartToolCall,
188
- DataStreamStreamChunkType.ToolCall,
189
- DataStreamStreamChunkType.TextDelta,
190
- DataStreamStreamChunkType.ReasoningDelta,
191
- DataStreamStreamChunkType.Source,
192
- DataStreamStreamChunkType.Error,
193
- DataStreamStreamChunkType.FinishStep,
194
- DataStreamStreamChunkType.FinishMessage,
195
- DataStreamStreamChunkType.AuiTextDelta,
196
- DataStreamStreamChunkType.AuiReasoningDelta,
197
- DataStreamStreamChunkType.AuiDataPart,
157
+ "b",
158
+ "9",
159
+ "0",
160
+ "g",
161
+ "h",
162
+ "3",
163
+ "e",
164
+ "d",
165
+ "aui-text-delta",
166
+ "aui-reasoning-delta",
167
+ "aui-data"
198
168
  ];
199
- export class DataStreamDecoder extends PipeableTransformStream {
200
- constructor() {
201
- super((readable) => {
202
- const toolCallControllers = new Map();
203
- let activeToolCallArgsText;
204
- const transform = new AssistantTransformStream({
205
- transform(chunk, controller) {
206
- const { type, value } = chunk;
207
- if (TOOL_CALL_ARGS_CLOSING_CHUNKS.includes(type)) {
208
- activeToolCallArgsText?.close();
209
- activeToolCallArgsText = undefined;
210
- }
211
- switch (type) {
212
- case DataStreamStreamChunkType.ReasoningDelta:
213
- controller.appendReasoning(value);
214
- break;
215
- case DataStreamStreamChunkType.TextDelta:
216
- controller.appendText(value);
217
- break;
218
- case DataStreamStreamChunkType.AuiTextDelta:
219
- controller
220
- .withParentId(value.parentId)
221
- .appendText(value.textDelta);
222
- break;
223
- case DataStreamStreamChunkType.AuiReasoningDelta:
224
- controller
225
- .withParentId(value.parentId)
226
- .appendReasoning(value.reasoningDelta);
227
- break;
228
- case DataStreamStreamChunkType.StartToolCall: {
229
- const { toolCallId, toolName, parentId } = value;
230
- const ctrl = parentId
231
- ? controller.withParentId(parentId)
232
- : controller;
233
- if (toolCallControllers.has(toolCallId))
234
- throw new Error(`Encountered duplicate tool call id: ${toolCallId}`);
235
- const toolCallController = ctrl.addToolCallPart({
236
- toolCallId,
237
- toolName,
238
- });
239
- toolCallControllers.set(toolCallId, toolCallController);
240
- activeToolCallArgsText = toolCallController.argsText;
241
- break;
242
- }
243
- case DataStreamStreamChunkType.ToolCallArgsTextDelta: {
244
- const { toolCallId, argsTextDelta } = value;
245
- const toolCallController = toolCallControllers.get(toolCallId);
246
- if (!toolCallController)
247
- throw new Error(`Encountered tool call with unknown id: ${toolCallId}`);
248
- toolCallController.argsText.append(argsTextDelta);
249
- break;
250
- }
251
- case DataStreamStreamChunkType.ToolCallResult: {
252
- const { toolCallId, artifact, result, isError } = value;
253
- const toolCallController = toolCallControllers.get(toolCallId);
254
- if (!toolCallController)
255
- throw new Error(`Encountered tool call result with unknown id: ${toolCallId}`);
256
- toolCallController.setResponse({
257
- artifact,
258
- result,
259
- isError,
260
- });
261
- break;
262
- }
263
- case DataStreamStreamChunkType.ToolCall: {
264
- const { toolCallId, toolName, args } = value;
265
- let toolCallController = toolCallControllers.get(toolCallId);
266
- if (toolCallController) {
267
- toolCallController.argsText.close();
268
- }
269
- else {
270
- toolCallController = controller.addToolCallPart({
271
- toolCallId,
272
- toolName,
273
- args,
274
- });
275
- toolCallControllers.set(toolCallId, toolCallController);
276
- }
277
- break;
278
- }
279
- case DataStreamStreamChunkType.FinishMessage:
280
- controller.enqueue({
281
- type: "message-finish",
282
- path: [],
283
- ...value,
284
- });
285
- break;
286
- case DataStreamStreamChunkType.StartStep:
287
- controller.enqueue({
288
- type: "step-start",
289
- path: [],
290
- ...value,
291
- });
292
- break;
293
- case DataStreamStreamChunkType.FinishStep:
294
- controller.enqueue({
295
- type: "step-finish",
296
- path: [],
297
- ...value,
298
- });
299
- break;
300
- case DataStreamStreamChunkType.Data:
301
- controller.enqueue({
302
- type: "data",
303
- path: [],
304
- data: value,
305
- });
306
- break;
307
- case DataStreamStreamChunkType.Annotation:
308
- controller.enqueue({
309
- type: "annotations",
310
- path: [],
311
- annotations: value,
312
- });
313
- break;
314
- case DataStreamStreamChunkType.Source: {
315
- const { parentId, ...sourceData } = value;
316
- const ctrl = parentId
317
- ? controller.withParentId(parentId)
318
- : controller;
319
- ctrl.appendSource({
320
- type: "source",
321
- ...sourceData,
322
- });
323
- break;
324
- }
325
- case DataStreamStreamChunkType.Error:
326
- controller.enqueue({
327
- type: "error",
328
- path: [],
329
- error: value,
330
- });
331
- break;
332
- case DataStreamStreamChunkType.File:
333
- controller.appendFile({
334
- type: "file",
335
- ...value,
336
- });
337
- break;
338
- case DataStreamStreamChunkType.AuiDataPart:
339
- controller.appendData({
340
- type: "data",
341
- ...value,
342
- });
343
- break;
344
- case DataStreamStreamChunkType.AuiUpdateStateOperations:
345
- controller.enqueue({
346
- type: "update-state",
347
- path: [],
348
- operations: value,
349
- });
350
- break;
351
- case DataStreamStreamChunkType.ReasoningSignature:
352
- case DataStreamStreamChunkType.RedactedReasoning:
353
- // ignore these for now
354
- break;
355
- default: {
356
- const exhaustiveCheck = type;
357
- throw new Error(`unsupported chunk type: ${exhaustiveCheck}`);
358
- }
359
- }
360
- },
361
- flush() {
362
- activeToolCallArgsText?.close();
363
- activeToolCallArgsText = undefined;
364
- // biome-ignore lint/suspicious/useIterableCallbackReturn: forEach callback intentionally has no return
365
- toolCallControllers.forEach((controller) => controller.close());
366
- toolCallControllers.clear();
367
- },
368
- });
369
- return readable
370
- .pipeThrough(new TextDecoderStream())
371
- .pipeThrough(new LineDecoderStream())
372
- .pipeThrough(new DataStreamChunkDecoder())
373
- .pipeThrough(transform);
374
- });
375
- }
376
- }
169
+ var DataStreamDecoder = class extends PipeableTransformStream {
170
+ constructor() {
171
+ super((readable) => {
172
+ const toolCallControllers = /* @__PURE__ */ new Map();
173
+ let activeToolCallArgsText;
174
+ const transform = new AssistantTransformStream({
175
+ transform(chunk, controller) {
176
+ const { type, value } = chunk;
177
+ if (TOOL_CALL_ARGS_CLOSING_CHUNKS.includes(type)) {
178
+ activeToolCallArgsText?.close();
179
+ activeToolCallArgsText = void 0;
180
+ }
181
+ switch (type) {
182
+ case "g":
183
+ controller.appendReasoning(value);
184
+ break;
185
+ case "0":
186
+ controller.appendText(value);
187
+ break;
188
+ case "aui-text-delta":
189
+ controller.withParentId(value.parentId).appendText(value.textDelta);
190
+ break;
191
+ case "aui-reasoning-delta":
192
+ controller.withParentId(value.parentId).appendReasoning(value.reasoningDelta);
193
+ break;
194
+ case "b": {
195
+ const { toolCallId, toolName, parentId } = value;
196
+ const ctrl = parentId ? controller.withParentId(parentId) : controller;
197
+ if (toolCallControllers.has(toolCallId)) throw new Error(`Encountered duplicate tool call id: ${toolCallId}`);
198
+ const toolCallController = ctrl.addToolCallPart({
199
+ toolCallId,
200
+ toolName
201
+ });
202
+ toolCallControllers.set(toolCallId, toolCallController);
203
+ activeToolCallArgsText = toolCallController.argsText;
204
+ break;
205
+ }
206
+ case "c": {
207
+ const { toolCallId, argsTextDelta } = value;
208
+ const toolCallController = toolCallControllers.get(toolCallId);
209
+ if (!toolCallController) throw new Error(`Encountered tool call with unknown id: ${toolCallId}`);
210
+ toolCallController.argsText.append(argsTextDelta);
211
+ break;
212
+ }
213
+ case "a": {
214
+ const { toolCallId, artifact, result, isError } = value;
215
+ const toolCallController = toolCallControllers.get(toolCallId);
216
+ if (!toolCallController) throw new Error(`Encountered tool call result with unknown id: ${toolCallId}`);
217
+ toolCallController.setResponse({
218
+ artifact,
219
+ result,
220
+ isError
221
+ });
222
+ break;
223
+ }
224
+ case "9": {
225
+ const { toolCallId, toolName, args } = value;
226
+ let toolCallController = toolCallControllers.get(toolCallId);
227
+ if (toolCallController) toolCallController.argsText.close();
228
+ else {
229
+ toolCallController = controller.addToolCallPart({
230
+ toolCallId,
231
+ toolName,
232
+ args
233
+ });
234
+ toolCallControllers.set(toolCallId, toolCallController);
235
+ }
236
+ break;
237
+ }
238
+ case "d":
239
+ controller.enqueue({
240
+ type: "message-finish",
241
+ path: [],
242
+ ...value
243
+ });
244
+ break;
245
+ case "f":
246
+ controller.enqueue({
247
+ type: "step-start",
248
+ path: [],
249
+ ...value
250
+ });
251
+ break;
252
+ case "e":
253
+ controller.enqueue({
254
+ type: "step-finish",
255
+ path: [],
256
+ ...value
257
+ });
258
+ break;
259
+ case "2":
260
+ controller.enqueue({
261
+ type: "data",
262
+ path: [],
263
+ data: value
264
+ });
265
+ break;
266
+ case "8":
267
+ controller.enqueue({
268
+ type: "annotations",
269
+ path: [],
270
+ annotations: value
271
+ });
272
+ break;
273
+ case "h": {
274
+ const { parentId, ...sourceData } = value;
275
+ (parentId ? controller.withParentId(parentId) : controller).appendSource({
276
+ type: "source",
277
+ ...sourceData
278
+ });
279
+ break;
280
+ }
281
+ case "3":
282
+ controller.enqueue({
283
+ type: "error",
284
+ path: [],
285
+ error: value
286
+ });
287
+ break;
288
+ case "k":
289
+ controller.appendFile({
290
+ type: "file",
291
+ ...value
292
+ });
293
+ break;
294
+ case "aui-data":
295
+ controller.appendData({
296
+ type: "data",
297
+ ...value
298
+ });
299
+ break;
300
+ case "aui-state":
301
+ controller.enqueue({
302
+ type: "update-state",
303
+ path: [],
304
+ operations: value
305
+ });
306
+ break;
307
+ case "j":
308
+ case "i": break;
309
+ default: throw new Error(`unsupported chunk type: ${type}`);
310
+ }
311
+ },
312
+ flush() {
313
+ activeToolCallArgsText?.close();
314
+ activeToolCallArgsText = void 0;
315
+ toolCallControllers.forEach((controller) => controller.close());
316
+ toolCallControllers.clear();
317
+ }
318
+ });
319
+ return readable.pipeThrough(new TextDecoderStream()).pipeThrough(new LineDecoderStream()).pipeThrough(new DataStreamChunkDecoder()).pipeThrough(transform);
320
+ });
321
+ }
322
+ };
323
+ //#endregion
324
+ export { DataStreamDecoder, DataStreamEncoder };
325
+
377
326
  //# sourceMappingURL=DataStream.js.map