assistant-stream 0.2.44 → 0.2.46

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