assistant-stream 0.1.7 → 0.2.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 (251) hide show
  1. package/ai-sdk/package.json +2 -2
  2. package/dist/ai-sdk/index.js +7 -34
  3. package/dist/ai-sdk/index.js.map +1 -1
  4. package/dist/ai-sdk/language-model.js +5 -31
  5. package/dist/ai-sdk/language-model.js.map +1 -1
  6. package/dist/ai-sdk.js +4 -32
  7. package/dist/ai-sdk.js.map +1 -1
  8. package/dist/core/AssistantStream.js +3 -29
  9. package/dist/core/AssistantStream.js.map +1 -1
  10. package/dist/core/AssistantStreamChunk.js +0 -18
  11. package/dist/core/AssistantStreamChunk.js.map +1 -1
  12. package/dist/core/accumulators/AssistantMessageStream.js +9 -35
  13. package/dist/core/accumulators/AssistantMessageStream.js.map +1 -1
  14. package/dist/core/accumulators/assistant-message-accumulator.js +22 -48
  15. package/dist/core/accumulators/assistant-message-accumulator.js.map +1 -1
  16. package/dist/core/index.js +16 -46
  17. package/dist/core/index.js.map +1 -1
  18. package/dist/core/modules/assistant-stream.js +29 -52
  19. package/dist/core/modules/assistant-stream.js.map +1 -1
  20. package/dist/core/modules/text.js +6 -33
  21. package/dist/core/modules/text.js.map +1 -1
  22. package/dist/core/modules/tool-call.js +8 -35
  23. package/dist/core/modules/tool-call.js.map +1 -1
  24. package/dist/core/serialization/PlainText.js +9 -36
  25. package/dist/core/serialization/PlainText.js.map +1 -1
  26. package/dist/core/serialization/data-stream/DataStream.js +57 -79
  27. package/dist/core/serialization/data-stream/DataStream.js.map +1 -1
  28. package/dist/core/serialization/data-stream/chunk-types.js +2 -28
  29. package/dist/core/serialization/data-stream/chunk-types.js.map +1 -1
  30. package/dist/core/serialization/data-stream/serialization.js +6 -33
  31. package/dist/core/serialization/data-stream/serialization.js.map +1 -1
  32. package/dist/core/tool/ToolCallReader.js +30 -55
  33. package/dist/core/tool/ToolCallReader.js.map +1 -1
  34. package/dist/core/tool/ToolExecutionStream.js +18 -52
  35. package/dist/core/tool/ToolExecutionStream.js.map +1 -1
  36. package/dist/core/tool/ToolResponse.js +5 -31
  37. package/dist/core/tool/ToolResponse.js.map +1 -1
  38. package/dist/core/tool/index.js +9 -35
  39. package/dist/core/tool/index.js.map +1 -1
  40. package/dist/core/tool/tool-types.js +0 -18
  41. package/dist/core/tool/tool-types.js.map +1 -1
  42. package/dist/core/tool/toolResultStream.js +8 -35
  43. package/dist/core/tool/toolResultStream.js.map +1 -1
  44. package/dist/core/tool/type-path-utils.js +0 -18
  45. package/dist/core/tool/type-path-utils.js.map +1 -1
  46. package/dist/core/utils/Counter.js +4 -30
  47. package/dist/core/utils/Counter.js.map +1 -1
  48. package/dist/core/utils/generateId.js +4 -30
  49. package/dist/core/utils/generateId.js.map +1 -1
  50. package/dist/core/utils/stream/AssistantMetaTransformStream.js +4 -30
  51. package/dist/core/utils/stream/AssistantMetaTransformStream.js.map +1 -1
  52. package/dist/core/utils/stream/AssistantTransformStream.js +8 -32
  53. package/dist/core/utils/stream/AssistantTransformStream.js.map +1 -1
  54. package/dist/core/utils/stream/LineDecoderStream.js +4 -30
  55. package/dist/core/utils/stream/LineDecoderStream.js.map +1 -1
  56. package/dist/core/utils/stream/PipeableTransformStream.js +4 -30
  57. package/dist/core/utils/stream/PipeableTransformStream.js.map +1 -1
  58. package/dist/core/utils/stream/UnderlyingReadable.js +0 -18
  59. package/dist/core/utils/stream/UnderlyingReadable.js.map +1 -1
  60. package/dist/core/utils/stream/merge.js +5 -31
  61. package/dist/core/utils/stream/merge.js.map +1 -1
  62. package/dist/core/utils/stream/path-utils.js +10 -38
  63. package/dist/core/utils/stream/path-utils.js.map +1 -1
  64. package/dist/core/utils/types.js +0 -18
  65. package/dist/core/utils/types.js.map +1 -1
  66. package/dist/core/utils/withPromiseOrValue.js +2 -28
  67. package/dist/core/utils/withPromiseOrValue.js.map +1 -1
  68. package/dist/index.js +1 -24
  69. package/dist/index.js.map +1 -1
  70. package/dist/utils/AsyncIterableStream.js +2 -28
  71. package/dist/utils/AsyncIterableStream.js.map +1 -1
  72. package/dist/utils/json/fix-json.js +2 -28
  73. package/dist/utils/json/fix-json.js.map +1 -1
  74. package/dist/utils/json/is-json.js +2 -30
  75. package/dist/utils/json/is-json.js.map +1 -1
  76. package/dist/utils/json/json-value.js +0 -18
  77. package/dist/utils/json/json-value.js.map +1 -1
  78. package/dist/utils/json/parse-partial-json-object.js +12 -50
  79. package/dist/utils/json/parse-partial-json-object.js.map +1 -1
  80. package/dist/utils/promiseWithResolvers.js +3 -29
  81. package/dist/utils/promiseWithResolvers.js.map +1 -1
  82. package/dist/utils.js +9 -32
  83. package/dist/utils.js.map +1 -1
  84. package/package.json +10 -28
  85. package/utils/package.json +1 -1
  86. package/dist/ai-sdk/index.d.ts +0 -5
  87. package/dist/ai-sdk/index.d.ts.map +0 -1
  88. package/dist/ai-sdk/index.mjs +0 -173
  89. package/dist/ai-sdk/index.mjs.map +0 -1
  90. package/dist/ai-sdk/language-model.d.ts +0 -6
  91. package/dist/ai-sdk/language-model.d.ts.map +0 -1
  92. package/dist/ai-sdk/language-model.mjs +0 -106
  93. package/dist/ai-sdk/language-model.mjs.map +0 -1
  94. package/dist/ai-sdk.d.ts +0 -3
  95. package/dist/ai-sdk.d.ts.map +0 -1
  96. package/dist/ai-sdk.mjs +0 -7
  97. package/dist/ai-sdk.mjs.map +0 -1
  98. package/dist/core/AssistantStream.d.ts +0 -12
  99. package/dist/core/AssistantStream.d.ts.map +0 -1
  100. package/dist/core/AssistantStream.mjs +0 -21
  101. package/dist/core/AssistantStream.mjs.map +0 -1
  102. package/dist/core/AssistantStreamChunk.d.ts +0 -64
  103. package/dist/core/AssistantStreamChunk.d.ts.map +0 -1
  104. package/dist/core/AssistantStreamChunk.mjs +0 -1
  105. package/dist/core/AssistantStreamChunk.mjs.map +0 -1
  106. package/dist/core/accumulators/AssistantMessageStream.d.ts +0 -13
  107. package/dist/core/accumulators/AssistantMessageStream.d.ts.map +0 -1
  108. package/dist/core/accumulators/AssistantMessageStream.mjs +0 -54
  109. package/dist/core/accumulators/AssistantMessageStream.mjs.map +0 -1
  110. package/dist/core/accumulators/assistant-message-accumulator.d.ts +0 -8
  111. package/dist/core/accumulators/assistant-message-accumulator.d.ts.map +0 -1
  112. package/dist/core/accumulators/assistant-message-accumulator.mjs +0 -309
  113. package/dist/core/accumulators/assistant-message-accumulator.mjs.map +0 -1
  114. package/dist/core/index.d.ts +0 -11
  115. package/dist/core/index.d.ts.map +0 -1
  116. package/dist/core/index.mjs +0 -26
  117. package/dist/core/index.mjs.map +0 -1
  118. package/dist/core/modules/assistant-stream.d.ts +0 -31
  119. package/dist/core/modules/assistant-stream.d.ts.map +0 -1
  120. package/dist/core/modules/assistant-stream.mjs +0 -202
  121. package/dist/core/modules/assistant-stream.mjs.map +0 -1
  122. package/dist/core/modules/text.d.ts +0 -9
  123. package/dist/core/modules/text.d.ts.map +0 -1
  124. package/dist/core/modules/text.mjs +0 -52
  125. package/dist/core/modules/text.mjs.map +0 -1
  126. package/dist/core/modules/tool-call.d.ts +0 -13
  127. package/dist/core/modules/tool-call.d.ts.map +0 -1
  128. package/dist/core/modules/tool-call.mjs +0 -84
  129. package/dist/core/modules/tool-call.mjs.map +0 -1
  130. package/dist/core/serialization/PlainText.d.ts +0 -11
  131. package/dist/core/serialization/PlainText.d.ts.map +0 -1
  132. package/dist/core/serialization/PlainText.mjs +0 -44
  133. package/dist/core/serialization/PlainText.mjs.map +0 -1
  134. package/dist/core/serialization/data-stream/DataStream.d.ts +0 -11
  135. package/dist/core/serialization/data-stream/DataStream.d.ts.map +0 -1
  136. package/dist/core/serialization/data-stream/DataStream.mjs +0 -311
  137. package/dist/core/serialization/data-stream/DataStream.mjs.map +0 -1
  138. package/dist/core/serialization/data-stream/chunk-types.d.ts +0 -86
  139. package/dist/core/serialization/data-stream/chunk-types.d.ts.map +0 -1
  140. package/dist/core/serialization/data-stream/chunk-types.mjs +0 -24
  141. package/dist/core/serialization/data-stream/chunk-types.mjs.map +0 -1
  142. package/dist/core/serialization/data-stream/serialization.d.ts +0 -8
  143. package/dist/core/serialization/data-stream/serialization.d.ts.map +0 -1
  144. package/dist/core/serialization/data-stream/serialization.mjs +0 -30
  145. package/dist/core/serialization/data-stream/serialization.mjs.map +0 -1
  146. package/dist/core/tool/ToolCallReader.d.ts +0 -33
  147. package/dist/core/tool/ToolCallReader.d.ts.map +0 -1
  148. package/dist/core/tool/ToolCallReader.mjs +0 -315
  149. package/dist/core/tool/ToolCallReader.mjs.map +0 -1
  150. package/dist/core/tool/ToolExecutionStream.d.ts +0 -24
  151. package/dist/core/tool/ToolExecutionStream.d.ts.map +0 -1
  152. package/dist/core/tool/ToolExecutionStream.mjs +0 -132
  153. package/dist/core/tool/ToolExecutionStream.mjs.map +0 -1
  154. package/dist/core/tool/ToolResponse.d.ts +0 -17
  155. package/dist/core/tool/ToolResponse.d.ts.map +0 -1
  156. package/dist/core/tool/ToolResponse.mjs +0 -22
  157. package/dist/core/tool/ToolResponse.mjs.map +0 -1
  158. package/dist/core/tool/index.d.ts +0 -6
  159. package/dist/core/tool/index.d.ts.map +0 -1
  160. package/dist/core/tool/index.mjs +0 -14
  161. package/dist/core/tool/index.mjs.map +0 -1
  162. package/dist/core/tool/tool-types.d.ts +0 -76
  163. package/dist/core/tool/tool-types.d.ts.map +0 -1
  164. package/dist/core/tool/tool-types.mjs +0 -1
  165. package/dist/core/tool/tool-types.mjs.map +0 -1
  166. package/dist/core/tool/toolResultStream.d.ts +0 -6
  167. package/dist/core/tool/toolResultStream.d.ts.map +0 -1
  168. package/dist/core/tool/toolResultStream.mjs +0 -78
  169. package/dist/core/tool/toolResultStream.mjs.map +0 -1
  170. package/dist/core/tool/type-path-utils.d.ts +0 -23
  171. package/dist/core/tool/type-path-utils.d.ts.map +0 -1
  172. package/dist/core/tool/type-path-utils.mjs +0 -1
  173. package/dist/core/tool/type-path-utils.mjs.map +0 -1
  174. package/dist/core/utils/Counter.d.ts +0 -5
  175. package/dist/core/utils/Counter.d.ts.map +0 -1
  176. package/dist/core/utils/Counter.mjs +0 -11
  177. package/dist/core/utils/Counter.mjs.map +0 -1
  178. package/dist/core/utils/generateId.d.ts +0 -2
  179. package/dist/core/utils/generateId.d.ts.map +0 -1
  180. package/dist/core/utils/generateId.mjs +0 -10
  181. package/dist/core/utils/generateId.mjs.map +0 -1
  182. package/dist/core/utils/stream/AssistantMetaTransformStream.d.ts +0 -20
  183. package/dist/core/utils/stream/AssistantMetaTransformStream.d.ts.map +0 -1
  184. package/dist/core/utils/stream/AssistantMetaTransformStream.mjs +0 -44
  185. package/dist/core/utils/stream/AssistantMetaTransformStream.mjs.map +0 -1
  186. package/dist/core/utils/stream/AssistantTransformStream.d.ts +0 -15
  187. package/dist/core/utils/stream/AssistantTransformStream.d.ts.map +0 -1
  188. package/dist/core/utils/stream/AssistantTransformStream.mjs +0 -46
  189. package/dist/core/utils/stream/AssistantTransformStream.mjs.map +0 -1
  190. package/dist/core/utils/stream/LineDecoderStream.d.ts +0 -5
  191. package/dist/core/utils/stream/LineDecoderStream.d.ts.map +0 -1
  192. package/dist/core/utils/stream/LineDecoderStream.mjs +0 -27
  193. package/dist/core/utils/stream/LineDecoderStream.mjs.map +0 -1
  194. package/dist/core/utils/stream/PipeableTransformStream.d.ts +0 -4
  195. package/dist/core/utils/stream/PipeableTransformStream.d.ts.map +0 -1
  196. package/dist/core/utils/stream/PipeableTransformStream.mjs +0 -15
  197. package/dist/core/utils/stream/PipeableTransformStream.mjs.map +0 -1
  198. package/dist/core/utils/stream/UnderlyingReadable.d.ts +0 -6
  199. package/dist/core/utils/stream/UnderlyingReadable.d.ts.map +0 -1
  200. package/dist/core/utils/stream/UnderlyingReadable.mjs +0 -1
  201. package/dist/core/utils/stream/UnderlyingReadable.mjs.map +0 -1
  202. package/dist/core/utils/stream/merge.d.ts +0 -9
  203. package/dist/core/utils/stream/merge.d.ts.map +0 -1
  204. package/dist/core/utils/stream/merge.mjs +0 -85
  205. package/dist/core/utils/stream/merge.mjs.map +0 -1
  206. package/dist/core/utils/stream/path-utils.d.ts +0 -12
  207. package/dist/core/utils/stream/path-utils.d.ts.map +0 -1
  208. package/dist/core/utils/stream/path-utils.mjs +0 -61
  209. package/dist/core/utils/stream/path-utils.mjs.map +0 -1
  210. package/dist/core/utils/types.d.ts +0 -102
  211. package/dist/core/utils/types.d.ts.map +0 -1
  212. package/dist/core/utils/types.mjs +0 -1
  213. package/dist/core/utils/types.mjs.map +0 -1
  214. package/dist/core/utils/withPromiseOrValue.d.ts +0 -2
  215. package/dist/core/utils/withPromiseOrValue.d.ts.map +0 -1
  216. package/dist/core/utils/withPromiseOrValue.mjs +0 -17
  217. package/dist/core/utils/withPromiseOrValue.mjs.map +0 -1
  218. package/dist/index.d.ts +0 -2
  219. package/dist/index.d.ts.map +0 -1
  220. package/dist/index.mjs +0 -3
  221. package/dist/index.mjs.map +0 -1
  222. package/dist/utils/AsyncIterableStream.d.ts +0 -3
  223. package/dist/utils/AsyncIterableStream.d.ts.map +0 -1
  224. package/dist/utils/AsyncIterableStream.mjs +0 -21
  225. package/dist/utils/AsyncIterableStream.mjs.map +0 -1
  226. package/dist/utils/json/fix-json.d.ts +0 -2
  227. package/dist/utils/json/fix-json.d.ts.map +0 -1
  228. package/dist/utils/json/fix-json.mjs +0 -362
  229. package/dist/utils/json/fix-json.mjs.map +0 -1
  230. package/dist/utils/json/is-json.d.ts +0 -5
  231. package/dist/utils/json/is-json.d.ts.map +0 -1
  232. package/dist/utils/json/is-json.mjs +0 -29
  233. package/dist/utils/json/is-json.mjs.map +0 -1
  234. package/dist/utils/json/json-value.d.ts +0 -6
  235. package/dist/utils/json/json-value.d.ts.map +0 -1
  236. package/dist/utils/json/json-value.mjs +0 -1
  237. package/dist/utils/json/json-value.mjs.map +0 -1
  238. package/dist/utils/json/parse-partial-json-object.d.ts +0 -14
  239. package/dist/utils/json/parse-partial-json-object.d.ts.map +0 -1
  240. package/dist/utils/json/parse-partial-json-object.mjs +0 -65
  241. package/dist/utils/json/parse-partial-json-object.mjs.map +0 -1
  242. package/dist/utils/json/parse-partial-json-object.test.d.ts +0 -2
  243. package/dist/utils/json/parse-partial-json-object.test.d.ts.map +0 -1
  244. package/dist/utils/promiseWithResolvers.d.ts +0 -6
  245. package/dist/utils/promiseWithResolvers.d.ts.map +0 -1
  246. package/dist/utils/promiseWithResolvers.mjs +0 -15
  247. package/dist/utils/promiseWithResolvers.mjs.map +0 -1
  248. package/dist/utils.d.ts +0 -4
  249. package/dist/utils.d.ts.map +0 -1
  250. package/dist/utils.mjs +0 -14
  251. package/dist/utils.mjs.map +0 -1
@@ -1,202 +0,0 @@
1
- // src/core/modules/assistant-stream.ts
2
- import { AssistantStream } from "../AssistantStream.mjs";
3
- import { createMergeStream } from "../utils/stream/merge.mjs";
4
- import { createTextStreamController } from "./text.mjs";
5
- import {
6
- createToolCallStreamController
7
- } from "./tool-call.mjs";
8
- import { Counter } from "../utils/Counter.mjs";
9
- import {
10
- PathAppendEncoder,
11
- PathMergeEncoder
12
- } from "../utils/stream/path-utils.mjs";
13
- import { DataStreamEncoder } from "../serialization/data-stream/DataStream.mjs";
14
- import { generateId } from "../utils/generateId.mjs";
15
- import { promiseWithResolvers } from "../../utils/promiseWithResolvers.mjs";
16
- var AssistantStreamControllerImpl = class {
17
- _merger = createMergeStream();
18
- _append;
19
- _contentCounter = new Counter();
20
- get __internal_isClosed() {
21
- return this._merger.isSealed();
22
- }
23
- __internal_getReadable() {
24
- return this._merger.readable;
25
- }
26
- _closeSubscriber;
27
- __internal_subscribeToClose(callback) {
28
- this._closeSubscriber = callback;
29
- }
30
- _addPart(part, stream) {
31
- if (this._append) {
32
- this._append.controller.close();
33
- this._append = void 0;
34
- }
35
- this.enqueue({
36
- type: "part-start",
37
- part,
38
- path: []
39
- });
40
- this._merger.addStream(
41
- stream.pipeThrough(new PathAppendEncoder(this._contentCounter.value))
42
- );
43
- }
44
- merge(stream) {
45
- this._merger.addStream(
46
- stream.pipeThrough(new PathMergeEncoder(this._contentCounter))
47
- );
48
- }
49
- appendText(textDelta) {
50
- if (this._append?.kind !== "text") {
51
- this._append = {
52
- kind: "text",
53
- controller: this.addTextPart()
54
- };
55
- }
56
- this._append.controller.append(textDelta);
57
- }
58
- appendReasoning(textDelta) {
59
- if (this._append?.kind !== "reasoning") {
60
- this._append = {
61
- kind: "reasoning",
62
- controller: this.addReasoningPart()
63
- };
64
- }
65
- this._append.controller.append(textDelta);
66
- }
67
- addTextPart() {
68
- const [stream, controller] = createTextStreamController();
69
- this._addPart({ type: "text" }, stream);
70
- return controller;
71
- }
72
- addReasoningPart() {
73
- const [stream, controller] = createTextStreamController();
74
- this._addPart({ type: "reasoning" }, stream);
75
- return controller;
76
- }
77
- addToolCallPart(options) {
78
- const opt = typeof options === "string" ? { toolName: options } : options;
79
- const toolName = opt.toolName;
80
- const toolCallId = opt.toolCallId ?? generateId();
81
- const [stream, controller] = createToolCallStreamController();
82
- this._addPart({ type: "tool-call", toolName, toolCallId }, stream);
83
- if (opt.argsText !== void 0) {
84
- controller.argsText.append(opt.argsText);
85
- controller.argsText.close();
86
- }
87
- if (opt.args !== void 0) {
88
- controller.argsText.append(JSON.stringify(opt.args));
89
- controller.argsText.close();
90
- }
91
- if (opt.response !== void 0) {
92
- controller.setResponse(opt.response);
93
- }
94
- return controller;
95
- }
96
- appendSource(options) {
97
- this._addPart(
98
- options,
99
- new ReadableStream({
100
- start(controller) {
101
- controller.enqueue({
102
- type: "part-finish",
103
- path: []
104
- });
105
- controller.close();
106
- }
107
- })
108
- );
109
- }
110
- appendFile(options) {
111
- this._addPart(
112
- options,
113
- new ReadableStream({
114
- start(controller) {
115
- controller.enqueue({
116
- type: "part-finish",
117
- path: []
118
- });
119
- controller.close();
120
- }
121
- })
122
- );
123
- }
124
- enqueue(chunk) {
125
- this._merger.enqueue(chunk);
126
- if (chunk.type === "part-start" && chunk.path.length === 0) {
127
- this._contentCounter.up();
128
- }
129
- }
130
- close() {
131
- this._merger.seal();
132
- this._append?.controller?.close();
133
- this._closeSubscriber?.();
134
- }
135
- };
136
- function createAssistantStream(callback) {
137
- const controller = new AssistantStreamControllerImpl();
138
- let promiseOrVoid;
139
- try {
140
- promiseOrVoid = callback(controller);
141
- } catch (e) {
142
- if (!controller.__internal_isClosed) {
143
- controller.enqueue({
144
- type: "error",
145
- path: [],
146
- error: String(e)
147
- });
148
- controller.close();
149
- }
150
- throw e;
151
- }
152
- if (promiseOrVoid instanceof Promise) {
153
- const runTask = async () => {
154
- try {
155
- await promiseOrVoid;
156
- } catch (e) {
157
- if (!controller.__internal_isClosed) {
158
- controller.enqueue({
159
- type: "error",
160
- path: [],
161
- error: String(e)
162
- });
163
- }
164
- throw e;
165
- } finally {
166
- if (!controller.__internal_isClosed) {
167
- controller.close();
168
- }
169
- }
170
- };
171
- runTask();
172
- } else {
173
- if (!controller.__internal_isClosed) {
174
- controller.close();
175
- }
176
- }
177
- return controller.__internal_getReadable();
178
- }
179
- function createAssistantStreamController() {
180
- const { resolve, promise } = promiseWithResolvers();
181
- let controller;
182
- const stream = createAssistantStream((c) => {
183
- controller = c;
184
- controller.__internal_subscribeToClose(
185
- resolve
186
- );
187
- return promise;
188
- });
189
- return [stream, controller];
190
- }
191
- function createAssistantStreamResponse(callback) {
192
- return AssistantStream.toResponse(
193
- createAssistantStream(callback),
194
- new DataStreamEncoder()
195
- );
196
- }
197
- export {
198
- createAssistantStream,
199
- createAssistantStreamController,
200
- createAssistantStreamResponse
201
- };
202
- //# sourceMappingURL=assistant-stream.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/modules/assistant-stream.ts"],"sourcesContent":["import { AssistantStream } from \"../AssistantStream\";\nimport { AssistantStreamChunk, PartInit } from \"../AssistantStreamChunk\";\nimport { createMergeStream } from \"../utils/stream/merge\";\nimport { createTextStreamController, TextStreamController } from \"./text\";\nimport {\n createToolCallStreamController,\n ToolCallStreamController,\n} from \"./tool-call\";\nimport { Counter } from \"../utils/Counter\";\nimport {\n PathAppendEncoder,\n PathMergeEncoder,\n} from \"../utils/stream/path-utils\";\nimport { DataStreamEncoder } from \"../serialization/data-stream/DataStream\";\nimport { FilePart, SourcePart } from \"../utils/types\";\nimport { generateId } from \"../utils/generateId\";\nimport {\n ReadonlyJSONObject,\n ReadonlyJSONValue,\n} from \"../../utils/json/json-value\";\nimport { ToolResponseInit } from \"../tool/ToolResponse\";\nimport { promiseWithResolvers } from \"../../utils/promiseWithResolvers\";\n\ntype ToolCallPartInit = {\n toolCallId?: string;\n toolName: string;\n argsText?: string;\n args?: ReadonlyJSONObject;\n response?: ToolResponseInit<ReadonlyJSONValue>;\n};\n\nexport type AssistantStreamController = {\n appendText(textDelta: string): void;\n appendReasoning(reasoningDelta: string): void;\n appendSource(options: SourcePart): void;\n appendFile(options: FilePart): void;\n addTextPart(): TextStreamController;\n addToolCallPart(options: string): ToolCallStreamController;\n addToolCallPart(options: ToolCallPartInit): ToolCallStreamController;\n enqueue(chunk: AssistantStreamChunk): void;\n merge(stream: AssistantStream): void;\n close(): void;\n};\n\nclass AssistantStreamControllerImpl implements AssistantStreamController {\n private _merger = createMergeStream();\n private _append:\n | {\n controller: TextStreamController;\n kind: \"text\" | \"reasoning\";\n }\n | undefined;\n private _contentCounter = new Counter();\n\n get __internal_isClosed() {\n return this._merger.isSealed();\n }\n\n __internal_getReadable() {\n return this._merger.readable;\n }\n\n private _closeSubscriber: undefined | (() => void);\n __internal_subscribeToClose(callback: () => void) {\n this._closeSubscriber = callback;\n }\n\n private _addPart(part: PartInit, stream: AssistantStream) {\n if (this._append) {\n this._append.controller.close();\n this._append = undefined;\n }\n\n this.enqueue({\n type: \"part-start\",\n part,\n path: [],\n });\n this._merger.addStream(\n stream.pipeThrough(new PathAppendEncoder(this._contentCounter.value)),\n );\n }\n\n merge(stream: AssistantStream) {\n this._merger.addStream(\n stream.pipeThrough(new PathMergeEncoder(this._contentCounter)),\n );\n }\n\n appendText(textDelta: string) {\n if (this._append?.kind !== \"text\") {\n this._append = {\n kind: \"text\",\n controller: this.addTextPart(),\n };\n }\n this._append.controller.append(textDelta);\n }\n\n appendReasoning(textDelta: string) {\n if (this._append?.kind !== \"reasoning\") {\n this._append = {\n kind: \"reasoning\",\n controller: this.addReasoningPart(),\n };\n }\n this._append.controller.append(textDelta);\n }\n\n addTextPart() {\n const [stream, controller] = createTextStreamController();\n this._addPart({ type: \"text\" }, stream);\n return controller;\n }\n\n addReasoningPart() {\n const [stream, controller] = createTextStreamController();\n this._addPart({ type: \"reasoning\" }, stream);\n return controller;\n }\n\n addToolCallPart(\n options: string | ToolCallPartInit,\n ): ToolCallStreamController {\n const opt = typeof options === \"string\" ? { toolName: options } : options;\n const toolName = opt.toolName;\n const toolCallId = opt.toolCallId ?? generateId();\n\n const [stream, controller] = createToolCallStreamController();\n this._addPart({ type: \"tool-call\", toolName, toolCallId }, stream);\n\n if (opt.argsText !== undefined) {\n controller.argsText.append(opt.argsText);\n controller.argsText.close();\n }\n if (opt.args !== undefined) {\n controller.argsText.append(JSON.stringify(opt.args));\n controller.argsText.close();\n }\n if (opt.response !== undefined) {\n controller.setResponse(opt.response);\n }\n\n return controller;\n }\n\n appendSource(options: SourcePart) {\n this._addPart(\n options,\n new ReadableStream({\n start(controller) {\n controller.enqueue({\n type: \"part-finish\",\n path: [],\n });\n controller.close();\n },\n }),\n );\n }\n\n appendFile(options: FilePart) {\n this._addPart(\n options,\n new ReadableStream({\n start(controller) {\n controller.enqueue({\n type: \"part-finish\",\n path: [],\n });\n controller.close();\n },\n }),\n );\n }\n\n enqueue(chunk: AssistantStreamChunk) {\n this._merger.enqueue(chunk);\n\n if (chunk.type === \"part-start\" && chunk.path.length === 0) {\n this._contentCounter.up();\n }\n }\n\n close() {\n this._merger.seal();\n this._append?.controller?.close();\n\n this._closeSubscriber?.();\n }\n}\n\nexport function createAssistantStream(\n callback: (controller: AssistantStreamController) => PromiseLike<void> | void,\n): AssistantStream {\n const controller = new AssistantStreamControllerImpl();\n\n let promiseOrVoid: PromiseLike<void> | void;\n try {\n promiseOrVoid = callback(controller);\n } catch (e) {\n if (!controller.__internal_isClosed) {\n controller.enqueue({\n type: \"error\",\n path: [],\n error: String(e),\n });\n controller.close();\n }\n throw e;\n }\n\n if (promiseOrVoid instanceof Promise) {\n const runTask = async () => {\n try {\n await promiseOrVoid;\n } catch (e) {\n if (!controller.__internal_isClosed) {\n controller.enqueue({\n type: \"error\",\n path: [],\n error: String(e),\n });\n }\n throw e;\n } finally {\n if (!controller.__internal_isClosed) {\n controller.close();\n }\n }\n };\n runTask();\n } else {\n if (!controller.__internal_isClosed) {\n controller.close();\n }\n }\n\n return controller.__internal_getReadable();\n}\n\nexport function createAssistantStreamController() {\n const { resolve, promise } = promiseWithResolvers<void>();\n let controller!: AssistantStreamController;\n const stream = createAssistantStream((c) => {\n controller = c;\n\n (controller as AssistantStreamControllerImpl).__internal_subscribeToClose(\n resolve,\n );\n\n return promise;\n });\n return [stream, controller] as const;\n}\n\nexport function createAssistantStreamResponse(\n callback: (controller: AssistantStreamController) => PromiseLike<void> | void,\n) {\n return AssistantStream.toResponse(\n createAssistantStream(callback),\n new DataStreamEncoder(),\n );\n}\n"],"mappings":"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","names":[]}
@@ -1,9 +0,0 @@
1
- import { AssistantStream } from "../AssistantStream";
2
- import { UnderlyingReadable } from "../utils/stream/UnderlyingReadable";
3
- export type TextStreamController = {
4
- append(textDelta: string): void;
5
- close(): void;
6
- };
7
- export declare const createTextStream: (readable: UnderlyingReadable<TextStreamController>) => AssistantStream;
8
- export declare const createTextStreamController: () => readonly [AssistantStream, TextStreamController];
9
- //# sourceMappingURL=text.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/core/modules/text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAExE,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AAgCF,eAAO,MAAM,gBAAgB,GAC3B,UAAU,kBAAkB,CAAC,oBAAoB,CAAC,KACjD,eAYF,CAAC;AAEF,eAAO,MAAM,0BAA0B,wDAQtC,CAAC"}
@@ -1,52 +0,0 @@
1
- // src/core/modules/text.ts
2
- var TextStreamControllerImpl = class {
3
- _controller;
4
- _isClosed = false;
5
- constructor(controller) {
6
- this._controller = controller;
7
- }
8
- append(textDelta) {
9
- this._controller.enqueue({
10
- type: "text-delta",
11
- path: [],
12
- textDelta
13
- });
14
- return this;
15
- }
16
- close() {
17
- if (this._isClosed) return;
18
- this._isClosed = true;
19
- this._controller.enqueue({
20
- type: "part-finish",
21
- path: []
22
- });
23
- this._controller.close();
24
- }
25
- };
26
- var createTextStream = (readable) => {
27
- return new ReadableStream({
28
- start(c) {
29
- return readable.start?.(new TextStreamControllerImpl(c));
30
- },
31
- pull(c) {
32
- return readable.pull?.(new TextStreamControllerImpl(c));
33
- },
34
- cancel(c) {
35
- return readable.cancel?.(c);
36
- }
37
- });
38
- };
39
- var createTextStreamController = () => {
40
- let controller;
41
- const stream = createTextStream({
42
- start(c) {
43
- controller = c;
44
- }
45
- });
46
- return [stream, controller];
47
- };
48
- export {
49
- createTextStream,
50
- createTextStreamController
51
- };
52
- //# sourceMappingURL=text.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/modules/text.ts"],"sourcesContent":["import { AssistantStream } from \"../AssistantStream\";\nimport { AssistantStreamChunk } from \"../AssistantStreamChunk\";\nimport { UnderlyingReadable } from \"../utils/stream/UnderlyingReadable\";\n\nexport type TextStreamController = {\n append(textDelta: string): void;\n close(): void; // TODO reason? error?\n};\n\nclass TextStreamControllerImpl implements TextStreamController {\n private _controller: ReadableStreamDefaultController<AssistantStreamChunk>;\n private _isClosed = false;\n\n constructor(\n controller: ReadableStreamDefaultController<AssistantStreamChunk>,\n ) {\n this._controller = controller;\n }\n\n append(textDelta: string) {\n this._controller.enqueue({\n type: \"text-delta\",\n path: [],\n textDelta,\n });\n return this;\n }\n\n close() {\n if (this._isClosed) return;\n this._isClosed = true;\n this._controller.enqueue({\n type: \"part-finish\",\n path: [],\n });\n this._controller.close();\n }\n}\n\nexport const createTextStream = (\n readable: UnderlyingReadable<TextStreamController>,\n): AssistantStream => {\n return new ReadableStream({\n start(c) {\n return readable.start?.(new TextStreamControllerImpl(c));\n },\n pull(c) {\n return readable.pull?.(new TextStreamControllerImpl(c));\n },\n cancel(c) {\n return readable.cancel?.(c);\n },\n });\n};\n\nexport const createTextStreamController = () => {\n let controller!: TextStreamController;\n const stream = createTextStream({\n start(c) {\n controller = c;\n },\n });\n return [stream, controller] as const;\n};\n"],"mappings":";AASA,IAAM,2BAAN,MAA+D;AAAA,EACrD;AAAA,EACA,YAAY;AAAA,EAEpB,YACE,YACA;AACA,SAAK,cAAc;AAAA,EACrB;AAAA,EAEA,OAAO,WAAmB;AACxB,SAAK,YAAY,QAAQ;AAAA,MACvB,MAAM;AAAA,MACN,MAAM,CAAC;AAAA,MACP;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AAAA,EAEA,QAAQ;AACN,QAAI,KAAK,UAAW;AACpB,SAAK,YAAY;AACjB,SAAK,YAAY,QAAQ;AAAA,MACvB,MAAM;AAAA,MACN,MAAM,CAAC;AAAA,IACT,CAAC;AACD,SAAK,YAAY,MAAM;AAAA,EACzB;AACF;AAEO,IAAM,mBAAmB,CAC9B,aACoB;AACpB,SAAO,IAAI,eAAe;AAAA,IACxB,MAAM,GAAG;AACP,aAAO,SAAS,QAAQ,IAAI,yBAAyB,CAAC,CAAC;AAAA,IACzD;AAAA,IACA,KAAK,GAAG;AACN,aAAO,SAAS,OAAO,IAAI,yBAAyB,CAAC,CAAC;AAAA,IACxD;AAAA,IACA,OAAO,GAAG;AACR,aAAO,SAAS,SAAS,CAAC;AAAA,IAC5B;AAAA,EACF,CAAC;AACH;AAEO,IAAM,6BAA6B,MAAM;AAC9C,MAAI;AACJ,QAAM,SAAS,iBAAiB;AAAA,IAC9B,MAAM,GAAG;AACP,mBAAa;AAAA,IACf;AAAA,EACF,CAAC;AACD,SAAO,CAAC,QAAQ,UAAU;AAC5B;","names":[]}
@@ -1,13 +0,0 @@
1
- import { AssistantStream } from "../AssistantStream";
2
- import { ToolResponseInit } from "../tool/ToolResponse";
3
- import { ReadonlyJSONValue } from "../../utils/json/json-value";
4
- import { UnderlyingReadable } from "../utils/stream/UnderlyingReadable";
5
- import { TextStreamController } from "./text";
6
- export type ToolCallStreamController = {
7
- argsText: TextStreamController;
8
- setResponse(response: ToolResponseInit<ReadonlyJSONValue>): void;
9
- close(): void;
10
- };
11
- export declare const createToolCallStream: (readable: UnderlyingReadable<ToolCallStreamController>) => AssistantStream;
12
- export declare const createToolCallStreamController: () => readonly [AssistantStream, ToolCallStreamController];
13
- //# sourceMappingURL=tool-call.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-call.d.ts","sourceRoot":"","sources":["../../../src/core/modules/tool-call.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAoB,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAEhE,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,oBAAoB,CAAC;IAE/B,WAAW,CAAC,QAAQ,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC;IACjE,KAAK,IAAI,IAAI,CAAC;CACf,CAAC;AAoEF,eAAO,MAAM,oBAAoB,GAC/B,UAAU,kBAAkB,CAAC,wBAAwB,CAAC,KACrD,eAYF,CAAC;AAEF,eAAO,MAAM,8BAA8B,4DAQ1C,CAAC"}
@@ -1,84 +0,0 @@
1
- // src/core/modules/tool-call.ts
2
- import { createTextStream } from "./text.mjs";
3
- var ToolCallStreamControllerImpl = class {
4
- constructor(_controller) {
5
- this._controller = _controller;
6
- const stream = createTextStream({
7
- start: (c) => {
8
- this._argsTextController = c;
9
- }
10
- });
11
- this._mergeTask = stream.pipeTo(
12
- new WritableStream({
13
- write: (chunk) => {
14
- switch (chunk.type) {
15
- case "text-delta":
16
- this._controller.enqueue(chunk);
17
- break;
18
- case "part-finish":
19
- this._controller.enqueue({
20
- type: "tool-call-args-text-finish",
21
- path: []
22
- });
23
- break;
24
- default:
25
- throw new Error(`Unexpected chunk type: ${chunk.type}`);
26
- }
27
- }
28
- })
29
- );
30
- }
31
- _isClosed = false;
32
- _mergeTask;
33
- get argsText() {
34
- return this._argsTextController;
35
- }
36
- _argsTextController;
37
- setResponse(response) {
38
- this._controller.enqueue({
39
- type: "result",
40
- path: [],
41
- artifact: response.artifact,
42
- result: response.result,
43
- isError: response.isError ?? false
44
- });
45
- }
46
- async close() {
47
- if (this._isClosed) return;
48
- this._isClosed = true;
49
- this._argsTextController.close();
50
- await this._mergeTask;
51
- this._controller.enqueue({
52
- type: "part-finish",
53
- path: []
54
- });
55
- this._controller.close();
56
- }
57
- };
58
- var createToolCallStream = (readable) => {
59
- return new ReadableStream({
60
- start(c) {
61
- return readable.start?.(new ToolCallStreamControllerImpl(c));
62
- },
63
- pull(c) {
64
- return readable.pull?.(new ToolCallStreamControllerImpl(c));
65
- },
66
- cancel(c) {
67
- return readable.cancel?.(c);
68
- }
69
- });
70
- };
71
- var createToolCallStreamController = () => {
72
- let controller;
73
- const stream = createToolCallStream({
74
- start(c) {
75
- controller = c;
76
- }
77
- });
78
- return [stream, controller];
79
- };
80
- export {
81
- createToolCallStream,
82
- createToolCallStreamController
83
- };
84
- //# sourceMappingURL=tool-call.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/modules/tool-call.ts"],"sourcesContent":["import { AssistantStream } from \"../AssistantStream\";\nimport { AssistantStreamChunk } from \"../AssistantStreamChunk\";\nimport { ToolResponseInit } from \"../tool/ToolResponse\";\nimport { ReadonlyJSONValue } from \"../../utils/json/json-value\";\nimport { UnderlyingReadable } from \"../utils/stream/UnderlyingReadable\";\nimport { createTextStream, TextStreamController } from \"./text\";\n\nexport type ToolCallStreamController = {\n argsText: TextStreamController;\n\n setResponse(response: ToolResponseInit<ReadonlyJSONValue>): void;\n close(): void;\n};\n\nclass ToolCallStreamControllerImpl implements ToolCallStreamController {\n private _isClosed = false;\n\n private _mergeTask: Promise<void>;\n constructor(\n private _controller: ReadableStreamDefaultController<AssistantStreamChunk>,\n ) {\n const stream = createTextStream({\n start: (c) => {\n this._argsTextController = c;\n },\n });\n this._mergeTask = stream.pipeTo(\n new WritableStream({\n write: (chunk) => {\n switch (chunk.type) {\n case \"text-delta\":\n this._controller.enqueue(chunk);\n break;\n\n case \"part-finish\":\n this._controller.enqueue({\n type: \"tool-call-args-text-finish\",\n path: [],\n });\n break;\n\n default:\n throw new Error(`Unexpected chunk type: ${chunk.type}`);\n }\n },\n }),\n );\n }\n\n get argsText() {\n return this._argsTextController;\n }\n\n private _argsTextController!: TextStreamController;\n\n setResponse(response: ToolResponseInit<ReadonlyJSONValue>) {\n this._controller.enqueue({\n type: \"result\",\n path: [],\n artifact: response.artifact,\n result: response.result,\n isError: response.isError ?? false,\n });\n }\n\n async close() {\n if (this._isClosed) return;\n\n this._isClosed = true;\n this._argsTextController.close();\n await this._mergeTask;\n\n this._controller.enqueue({\n type: \"part-finish\",\n path: [],\n });\n this._controller.close();\n }\n}\n\nexport const createToolCallStream = (\n readable: UnderlyingReadable<ToolCallStreamController>,\n): AssistantStream => {\n return new ReadableStream({\n start(c) {\n return readable.start?.(new ToolCallStreamControllerImpl(c));\n },\n pull(c) {\n return readable.pull?.(new ToolCallStreamControllerImpl(c));\n },\n cancel(c) {\n return readable.cancel?.(c);\n },\n });\n};\n\nexport const createToolCallStreamController = () => {\n let controller!: ToolCallStreamController;\n const stream = createToolCallStream({\n start(c) {\n controller = c;\n },\n });\n return [stream, controller] as const;\n};\n"],"mappings":";AAKA,SAAS,wBAA8C;AASvD,IAAM,+BAAN,MAAuE;AAAA,EAIrE,YACU,aACR;AADQ;AAER,UAAM,SAAS,iBAAiB;AAAA,MAC9B,OAAO,CAAC,MAAM;AACZ,aAAK,sBAAsB;AAAA,MAC7B;AAAA,IACF,CAAC;AACD,SAAK,aAAa,OAAO;AAAA,MACvB,IAAI,eAAe;AAAA,QACjB,OAAO,CAAC,UAAU;AAChB,kBAAQ,MAAM,MAAM;AAAA,YAClB,KAAK;AACH,mBAAK,YAAY,QAAQ,KAAK;AAC9B;AAAA,YAEF,KAAK;AACH,mBAAK,YAAY,QAAQ;AAAA,gBACvB,MAAM;AAAA,gBACN,MAAM,CAAC;AAAA,cACT,CAAC;AACD;AAAA,YAEF;AACE,oBAAM,IAAI,MAAM,0BAA0B,MAAM,IAAI,EAAE;AAAA,UAC1D;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAhCQ,YAAY;AAAA,EAEZ;AAAA,EAgCR,IAAI,WAAW;AACb,WAAO,KAAK;AAAA,EACd;AAAA,EAEQ;AAAA,EAER,YAAY,UAA+C;AACzD,SAAK,YAAY,QAAQ;AAAA,MACvB,MAAM;AAAA,MACN,MAAM,CAAC;AAAA,MACP,UAAU,SAAS;AAAA,MACnB,QAAQ,SAAS;AAAA,MACjB,SAAS,SAAS,WAAW;AAAA,IAC/B,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,QAAQ;AACZ,QAAI,KAAK,UAAW;AAEpB,SAAK,YAAY;AACjB,SAAK,oBAAoB,MAAM;AAC/B,UAAM,KAAK;AAEX,SAAK,YAAY,QAAQ;AAAA,MACvB,MAAM;AAAA,MACN,MAAM,CAAC;AAAA,IACT,CAAC;AACD,SAAK,YAAY,MAAM;AAAA,EACzB;AACF;AAEO,IAAM,uBAAuB,CAClC,aACoB;AACpB,SAAO,IAAI,eAAe;AAAA,IACxB,MAAM,GAAG;AACP,aAAO,SAAS,QAAQ,IAAI,6BAA6B,CAAC,CAAC;AAAA,IAC7D;AAAA,IACA,KAAK,GAAG;AACN,aAAO,SAAS,OAAO,IAAI,6BAA6B,CAAC,CAAC;AAAA,IAC5D;AAAA,IACA,OAAO,GAAG;AACR,aAAO,SAAS,SAAS,CAAC;AAAA,IAC5B;AAAA,EACF,CAAC;AACH;AAEO,IAAM,iCAAiC,MAAM;AAClD,MAAI;AACJ,QAAM,SAAS,qBAAqB;AAAA,IAClC,MAAM,GAAG;AACP,mBAAa;AAAA,IACf;AAAA,EACF,CAAC;AACD,SAAO,CAAC,QAAQ,UAAU;AAC5B;","names":[]}
@@ -1,11 +0,0 @@
1
- import { AssistantStreamEncoder } from "../AssistantStream";
2
- import { AssistantStreamChunk } from "../AssistantStreamChunk";
3
- import { PipeableTransformStream } from "../utils/stream/PipeableTransformStream";
4
- export declare class PlainTextEncoder extends PipeableTransformStream<AssistantStreamChunk, Uint8Array> implements AssistantStreamEncoder {
5
- headers: Headers;
6
- constructor();
7
- }
8
- export declare class PlainTextDecoder extends PipeableTransformStream<Uint8Array, AssistantStreamChunk> {
9
- constructor();
10
- }
11
- //# sourceMappingURL=PlainText.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlainText.d.ts","sourceRoot":"","sources":["../../../src/core/serialization/PlainText.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAElF,qBAAa,gBACX,SAAQ,uBAAuB,CAAC,oBAAoB,EAAE,UAAU,CAChE,YAAW,sBAAsB;IAEjC,OAAO,UAGJ;;CAoCJ;AAED,qBAAa,gBAAiB,SAAQ,uBAAuB,CAC3D,UAAU,EACV,oBAAoB,CACrB;;CAcA"}
@@ -1,44 +0,0 @@
1
- // src/core/serialization/PlainText.ts
2
- import { AssistantTransformStream } from "../utils/stream/AssistantTransformStream.mjs";
3
- import { PipeableTransformStream } from "../utils/stream/PipeableTransformStream.mjs";
4
- var PlainTextEncoder = class extends PipeableTransformStream {
5
- headers = new Headers({
6
- "Content-Type": "text/plain; charset=utf-8",
7
- "x-vercel-ai-data-stream": "v1"
8
- });
9
- constructor() {
10
- super((readable) => {
11
- const transform = new TransformStream({
12
- transform(chunk, controller) {
13
- const type = chunk.type;
14
- switch (type) {
15
- case "text-delta":
16
- controller.enqueue(chunk.textDelta);
17
- break;
18
- default:
19
- const unsupportedType = type;
20
- throw new Error(`unsupported chunk type: ${unsupportedType}`);
21
- }
22
- }
23
- });
24
- return readable.pipeThrough(transform).pipeThrough(new TextEncoderStream());
25
- });
26
- }
27
- };
28
- var PlainTextDecoder = class extends PipeableTransformStream {
29
- constructor() {
30
- super((readable) => {
31
- const transform = new AssistantTransformStream({
32
- transform(chunk, controller) {
33
- controller.appendText(chunk);
34
- }
35
- });
36
- return readable.pipeThrough(new TextDecoderStream()).pipeThrough(transform);
37
- });
38
- }
39
- };
40
- export {
41
- PlainTextDecoder,
42
- PlainTextEncoder
43
- };
44
- //# sourceMappingURL=PlainText.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/core/serialization/PlainText.ts"],"sourcesContent":["import { AssistantStreamEncoder } from \"../AssistantStream\";\nimport { AssistantStreamChunk } from \"../AssistantStreamChunk\";\nimport { AssistantTransformStream } from \"../utils/stream/AssistantTransformStream\";\nimport { PipeableTransformStream } from \"../utils/stream/PipeableTransformStream\";\n\nexport class PlainTextEncoder\n extends PipeableTransformStream<AssistantStreamChunk, Uint8Array>\n implements AssistantStreamEncoder\n{\n headers = new Headers({\n \"Content-Type\": \"text/plain; charset=utf-8\",\n \"x-vercel-ai-data-stream\": \"v1\",\n });\n\n constructor() {\n super((readable) => {\n const transform = new TransformStream<AssistantStreamChunk, string>({\n transform(chunk, controller) {\n const type = chunk.type;\n switch (type) {\n case \"text-delta\":\n controller.enqueue(chunk.textDelta);\n break;\n\n default:\n const unsupportedType:\n | \"part-start\"\n | \"part-finish\"\n | \"tool-call-args-text-finish\"\n | \"data\"\n | \"step-start\"\n | \"step-finish\"\n | \"message-finish\"\n | \"annotations\"\n | \"tool-call-begin\"\n | \"tool-call-delta\"\n | \"result\"\n | \"error\" = type;\n throw new Error(`unsupported chunk type: ${unsupportedType}`);\n }\n },\n });\n\n return readable\n .pipeThrough(transform)\n .pipeThrough(new TextEncoderStream());\n });\n }\n}\n\nexport class PlainTextDecoder extends PipeableTransformStream<\n Uint8Array,\n AssistantStreamChunk\n> {\n constructor() {\n super((readable) => {\n const transform = new AssistantTransformStream<string>({\n transform(chunk, controller) {\n controller.appendText(chunk);\n },\n });\n\n return readable\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(transform);\n });\n }\n}\n"],"mappings":";AAEA,SAAS,gCAAgC;AACzC,SAAS,+BAA+B;AAEjC,IAAM,mBAAN,cACG,wBAEV;AAAA,EACE,UAAU,IAAI,QAAQ;AAAA,IACpB,gBAAgB;AAAA,IAChB,2BAA2B;AAAA,EAC7B,CAAC;AAAA,EAED,cAAc;AACZ,UAAM,CAAC,aAAa;AAClB,YAAM,YAAY,IAAI,gBAA8C;AAAA,QAClE,UAAU,OAAO,YAAY;AAC3B,gBAAM,OAAO,MAAM;AACnB,kBAAQ,MAAM;AAAA,YACZ,KAAK;AACH,yBAAW,QAAQ,MAAM,SAAS;AAClC;AAAA,YAEF;AACE,oBAAM,kBAYQ;AACd,oBAAM,IAAI,MAAM,2BAA2B,eAAe,EAAE;AAAA,UAChE;AAAA,QACF;AAAA,MACF,CAAC;AAED,aAAO,SACJ,YAAY,SAAS,EACrB,YAAY,IAAI,kBAAkB,CAAC;AAAA,IACxC,CAAC;AAAA,EACH;AACF;AAEO,IAAM,mBAAN,cAA+B,wBAGpC;AAAA,EACA,cAAc;AACZ,UAAM,CAAC,aAAa;AAClB,YAAM,YAAY,IAAI,yBAAiC;AAAA,QACrD,UAAU,OAAO,YAAY;AAC3B,qBAAW,WAAW,KAAK;AAAA,QAC7B;AAAA,MACF,CAAC;AAED,aAAO,SACJ,YAAY,IAAI,kBAAkB,CAAC,EACnC,YAAY,SAAS;AAAA,IAC1B,CAAC;AAAA,EACH;AACF;","names":[]}
@@ -1,11 +0,0 @@
1
- import { AssistantStreamChunk } from "../../AssistantStreamChunk";
2
- import { PipeableTransformStream } from "../../utils/stream/PipeableTransformStream";
3
- import { AssistantStreamEncoder } from "../../AssistantStream";
4
- export declare class DataStreamEncoder extends PipeableTransformStream<AssistantStreamChunk, Uint8Array> implements AssistantStreamEncoder {
5
- headers: Headers;
6
- constructor();
7
- }
8
- export declare class DataStreamDecoder extends PipeableTransformStream<Uint8Array, AssistantStreamChunk> {
9
- constructor();
10
- }
11
- //# sourceMappingURL=DataStream.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DataStream.d.ts","sourceRoot":"","sources":["../../../../src/core/serialization/data-stream/DataStream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGlE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAYrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,qBAAa,iBACX,SAAQ,uBAAuB,CAAC,oBAAoB,EAAE,UAAU,CAChE,YAAW,sBAAsB;IAEjC,OAAO,UAGJ;;CAqJJ;AAaD,qBAAa,iBAAkB,SAAQ,uBAAuB,CAC5D,UAAU,EACV,oBAAoB,CACrB;;CAqKA"}