assistant-stream 0.3.15 → 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 (232) hide show
  1. package/README.md +6 -4
  2. package/dist/core/AssistantStream.d.ts +35 -31
  3. package/dist/core/AssistantStream.d.ts.map +1 -1
  4. package/dist/core/AssistantStream.js +39 -37
  5. package/dist/core/AssistantStream.js.map +1 -1
  6. package/dist/core/AssistantStreamChunk.d.ts +71 -78
  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 +62 -66
  26. package/dist/core/modules/assistant-stream.d.ts.map +1 -1
  27. package/dist/core/modules/assistant-stream.js +174 -182
  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 +41 -41
  88. package/dist/core/tool/ToolResponse.d.ts.map +1 -1
  89. package/dist/core/tool/ToolResponse.js +50 -56
  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 +103 -122
  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 +11 -9
  99. package/dist/core/tool/toolResultStream.d.ts.map +1 -1
  100. package/dist/core/tool/toolResultStream.js +127 -157
  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 +3 -3
  218. package/dist/core/AssistantStreamChunk.js.map +0 -1
  219. package/dist/core/object/types.js.map +0 -1
  220. package/dist/core/serialization/ui-message-stream/chunk-types.js.map +0 -1
  221. package/dist/core/tool/tool-types.js.map +0 -1
  222. package/dist/core/tool/type-path-utils.js.map +0 -1
  223. package/dist/core/utils/stream/UnderlyingReadable.js.map +0 -1
  224. package/dist/core/utils/types.js.map +0 -1
  225. package/dist/index.d.ts.map +0 -1
  226. package/dist/index.js.map +0 -1
  227. package/dist/resumable/index.d.ts.map +0 -1
  228. package/dist/resumable/index.js.map +0 -1
  229. package/dist/resumable/types.js.map +0 -1
  230. package/dist/utils/json/json-value.js.map +0 -1
  231. package/dist/utils.d.ts.map +0 -1
  232. package/dist/utils.js.map +0 -1
@@ -1,16 +1,18 @@
1
+ import { ReadonlyJSONObject, ReadonlyJSONValue } from "../../utils/json/json-value.js";
2
+ import { TextStreamController } from "./text.js";
3
+ import { ToolResponseLike } from "../tool/ToolResponse.js";
4
+ import { ToolCallStreamController } from "./tool-call.js";
5
+ import { DataPart, FilePart, SourcePart } from "../utils/types.js";
6
+ import { AssistantStreamChunk } from "../AssistantStreamChunk.js";
1
7
  import { AssistantStream } from "../AssistantStream.js";
2
- import type { AssistantStreamChunk } from "../AssistantStreamChunk.js";
3
- import { type TextStreamController } from "./text.js";
4
- import { type ToolCallStreamController } from "./tool-call.js";
5
- import type { DataPart, FilePart, SourcePart } from "../utils/types.js";
6
- import type { ReadonlyJSONObject, ReadonlyJSONValue } from "../../utils/json/json-value.js";
7
- import type { ToolResponseLike } from "../tool/ToolResponse.js";
8
+
9
+ //#region src/core/modules/assistant-stream.d.ts
8
10
  type ToolCallPartInit = {
9
- toolCallId?: string;
10
- toolName: string;
11
- argsText?: string;
12
- args?: ReadonlyJSONObject;
13
- response?: ToolResponseLike<ReadonlyJSONValue>;
11
+ toolCallId?: string;
12
+ toolName: string;
13
+ argsText?: string;
14
+ args?: ReadonlyJSONObject;
15
+ response?: ToolResponseLike<ReadonlyJSONValue>;
14
16
  };
15
17
  /**
16
18
  * Imperative writer for constructing an {@link AssistantStream}.
@@ -19,57 +21,50 @@ type ToolCallPartInit = {
19
21
  * `appendText` and `appendReasoning` for simple token streams, or open explicit
20
22
  * parts with `addTextPart` and `addToolCallPart` when you need direct control.
21
23
  */
22
- export type AssistantStreamController = {
23
- /** Appends text to the current text part, opening one if needed. */
24
- appendText(textDelta: string): void;
25
- /** Appends reasoning text to the current reasoning part, opening one if needed. */
26
- appendReasoning(reasoningDelta: string): void;
27
- /** Appends a source citation part to the stream. */
28
- appendSource(options: SourcePart): void;
29
- /** Appends a file part to the stream. */
30
- appendFile(options: FilePart): void;
31
- /** Appends a named data part to the stream. */
32
- appendData(options: DataPart): void;
33
- /**
34
- * Opens a text part and returns its writer.
35
- *
36
- * Close the returned controller when the text part is complete. Opening a new
37
- * part through this controller closes any implicit text or reasoning append
38
- * part first.
39
- */
40
- addTextPart(): TextStreamController;
41
- /**
42
- * Opens a tool-call part by tool name and returns its writer.
43
- *
44
- * A tool call id is generated automatically. Use the object overload when the
45
- * caller already has an id, initial args, args text, or response.
46
- */
47
- addToolCallPart(options: string): ToolCallStreamController;
48
- /**
49
- * Opens a tool-call part and returns its writer.
50
- *
51
- * Use this overload to provide a stable `toolCallId`, initial arguments,
52
- * streamed argument text, or an immediate {@link ToolResponseLike}.
53
- */
54
- addToolCallPart(options: ToolCallPartInit): ToolCallStreamController;
55
- /** Enqueues a raw protocol chunk. Prefer higher-level helpers when possible. */
56
- enqueue(chunk: AssistantStreamChunk): void;
57
- /**
58
- * Merges another assistant stream into this stream.
59
- *
60
- * Paths from the merged stream are remapped so its parts appear at the next
61
- * available position in this controller's output.
62
- */
63
- merge(stream: AssistantStream): void;
64
- /** Closes any active part and finishes the stream. */
65
- close(): void;
66
- /**
67
- * Returns a controller that writes child parts with `parentId` attached.
68
- *
69
- * Use this for nested or related parts that should be associated with an
70
- * existing message or part in downstream renderers.
71
- */
72
- withParentId(parentId: string): AssistantStreamController;
24
+ type AssistantStreamController = {
25
+ /** Appends text to the current text part, opening one if needed. */appendText(textDelta: string): void; /** Appends reasoning text to the current reasoning part, opening one if needed. */
26
+ appendReasoning(reasoningDelta: string): void; /** Appends a source citation part to the stream. */
27
+ appendSource(options: SourcePart): void; /** Appends a file part to the stream. */
28
+ appendFile(options: FilePart): void; /** Appends a named data part to the stream. */
29
+ appendData(options: DataPart): void;
30
+ /**
31
+ * Opens a text part and returns its writer.
32
+ *
33
+ * Close the returned controller when the text part is complete. Opening a new
34
+ * part through this controller closes any implicit text or reasoning append
35
+ * part first.
36
+ */
37
+ addTextPart(): TextStreamController;
38
+ /**
39
+ * Opens a tool-call part by tool name and returns its writer.
40
+ *
41
+ * A tool call id is generated automatically. Use the object overload when the
42
+ * caller already has an id, initial args, args text, or response.
43
+ */
44
+ addToolCallPart(options: string): ToolCallStreamController;
45
+ /**
46
+ * Opens a tool-call part and returns its writer.
47
+ *
48
+ * Use this overload to provide a stable `toolCallId`, initial arguments,
49
+ * streamed argument text, or an immediate {@link ToolResponseLike}.
50
+ */
51
+ addToolCallPart(options: ToolCallPartInit): ToolCallStreamController; /** Enqueues a raw protocol chunk. Prefer higher-level helpers when possible. */
52
+ enqueue(chunk: AssistantStreamChunk): void;
53
+ /**
54
+ * Merges another assistant stream into this stream.
55
+ *
56
+ * Paths from the merged stream are remapped so its parts appear at the next
57
+ * available position in this controller's output.
58
+ */
59
+ merge(stream: AssistantStream): void; /** Closes any active part and finishes the stream. */
60
+ close(): void;
61
+ /**
62
+ * Returns a controller that writes child parts with `parentId` attached.
63
+ *
64
+ * Use this for nested or related parts that should be associated with an
65
+ * existing message or part in downstream renderers.
66
+ */
67
+ withParentId(parentId: string): AssistantStreamController;
73
68
  };
74
69
  /**
75
70
  * Creates an {@link AssistantStream} and writes to it with an
@@ -80,7 +75,7 @@ export type AssistantStreamController = {
80
75
  * settles, the stream is closed automatically unless the controller was
81
76
  * already closed.
82
77
  */
83
- export declare function createAssistantStream(callback: (controller: AssistantStreamController) => PromiseLike<void> | void): AssistantStream;
78
+ declare function createAssistantStream(callback: (controller: AssistantStreamController) => PromiseLike<void> | void): AssistantStream;
84
79
  /**
85
80
  * Creates an {@link AssistantStream} together with the controller used to
86
81
  * write into it.
@@ -88,7 +83,7 @@ export declare function createAssistantStream(callback: (controller: AssistantSt
88
83
  * Use this when the stream needs to be returned before all writers are known.
89
84
  * Closing the returned controller finishes the paired stream.
90
85
  */
91
- export declare function createAssistantStreamController(): readonly [AssistantStream, AssistantStreamController];
86
+ declare function createAssistantStreamController(): readonly [AssistantStream, AssistantStreamController];
92
87
  /**
93
88
  * Creates a `Response` whose body is an encoded {@link AssistantStream}.
94
89
  *
@@ -96,6 +91,7 @@ export declare function createAssistantStreamController(): readonly [AssistantSt
96
91
  * uses {@link DataStreamEncoder} so the response can be consumed by matching
97
92
  * assistant-ui data stream decoders.
98
93
  */
99
- export declare function createAssistantStreamResponse(callback: (controller: AssistantStreamController) => PromiseLike<void> | void): Response;
100
- export {};
94
+ declare function createAssistantStreamResponse(callback: (controller: AssistantStreamController) => PromiseLike<void> | void): Response;
95
+ //#endregion
96
+ export { AssistantStreamController, createAssistantStream, createAssistantStreamController, createAssistantStreamResponse };
101
97
  //# sourceMappingURL=assistant-stream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assistant-stream.d.ts","sourceRoot":"","sources":["../../../src/core/modules/assistant-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,8BAA2B;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAY,mCAAgC;AAE9E,OAAO,EAA8B,KAAK,oBAAoB,EAAE,kBAAe;AAC/E,OAAO,EAEL,KAAK,wBAAwB,EAC9B,uBAAoB;AAOrB,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,0BAAuB;AAErE,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAClB,uCAAoC;AACrC,OAAO,KAAK,EAAE,gBAAgB,EAAE,gCAA6B;AAG7D,KAAK,gBAAgB,GAAG;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,CAAC,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;CAChD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,oEAAoE;IACpE,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,mFAAmF;IACnF,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,oDAAoD;IACpD,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IACxC,yCAAyC;IACzC,UAAU,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAC;IACpC,+CAA+C;IAC/C,UAAU,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAC;IACpC;;;;;;OAMG;IACH,WAAW,IAAI,oBAAoB,CAAC;IACpC;;;;;OAKG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,wBAAwB,CAAC;IAC3D;;;;;OAKG;IACH,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,wBAAwB,CAAC;IACrE,gFAAgF;IAChF,OAAO,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC3C;;;;;OAKG;IACH,KAAK,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IACrC,sDAAsD;IACtD,KAAK,IAAI,IAAI,CAAC;IACd;;;;;OAKG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,yBAAyB,CAAC;CAC3D,CAAC;AAwLF;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,CAAC,UAAU,EAAE,yBAAyB,KAAK,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,GAC5E,eAAe,CAwBjB;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,0DAa9C;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,CAAC,UAAU,EAAE,yBAAyB,KAAK,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,YAM9E"}
1
+ {"version":3,"file":"assistant-stream.d.ts","names":[],"sources":["../../../src/core/modules/assistant-stream.ts"],"mappings":";;;;;;;;;KAuBK,gBAAA;EACH,UAAA;EACA,QAAA;EACA,QAAA;EACA,IAAA,GAAO,kBAAA;EACP,QAAA,GAAW,gBAAA,CAAiB,iBAAA;AAAA;;;;;;;;KAUlB,yBAAA;EAVV,oEAYA,UAAA,CAAW,SAAA,iBAZiB;EAc5B,eAAA,CAAgB,cAAA,iBAd6B;EAgB7C,YAAA,CAAa,OAAA,EAAS,UAAA,SANa;EAQnC,UAAA,CAAW,OAAA,EAAS,QAAA,SAFE;EAItB,UAAA,CAAW,OAAA,EAAS,QAAA;EAAA;;;;;;;EAQpB,WAAA,IAAe,oBAAA;EAgC0C;;;;;;EAzBzD,eAAA,CAAgB,OAAA,WAAkB,wBAAA;EAnBZ;;;;;;EA0BtB,eAAA,CAAgB,OAAA,EAAS,gBAAA,GAAmB,wBAAA,EAtBjC;EAwBX,OAAA,CAAQ,KAAA,EAAO,oBAAA;EAhBA;;;;;;EAuBf,KAAA,CAAM,MAAA,EAAQ,eAAA,SAT8B;EAW5C,KAAA;EATe;;;;;;EAgBf,YAAA,CAAa,QAAA,WAAmB,yBAAA;AAAA;;;AAAyB;AAkM3D;;;;;;iBAAgB,qBAAA,CACd,QAAA,GAAW,UAAA,EAAY,yBAAA,KAA8B,WAAA,gBACpD,eAAA;;;;;;;;iBAiCa,+BAAA,CAAA,aAA+B,eAAA,EAAA,yBAAA;AAA/C;;;;AAA+C;AAsB/C;;AAtBA,iBAsBgB,6BAAA,CACd,QAAA,GAAW,UAAA,EAAY,yBAAA,KAA8B,WAAA,gBAAwB,QAAA"}
@@ -1,195 +1,187 @@
1
1
  import { AssistantStream } from "../AssistantStream.js";
2
+ import { promiseWithResolvers } from "../../utils/promiseWithResolvers.js";
2
3
  import { createMergeStream } from "../utils/stream/merge.js";
3
4
  import { createTextStreamController } from "./text.js";
4
- import { createToolCallStreamController, } from "./tool-call.js";
5
+ import { createToolCallStreamController } from "./tool-call.js";
5
6
  import { Counter } from "../utils/Counter.js";
6
- import { PathAppendEncoder, PathMergeEncoder, } from "../utils/stream/path-utils.js";
7
+ import { PathAppendEncoder, PathMergeEncoder } from "../utils/stream/path-utils.js";
7
8
  import { DataStreamEncoder } from "../serialization/data-stream/DataStream.js";
8
9
  import { generateId } from "../utils/generateId.js";
9
- import { promiseWithResolvers } from "../../utils/promiseWithResolvers.js";
10
- class AssistantStreamControllerImpl {
11
- _state;
12
- _parentId;
13
- constructor(state) {
14
- this._state = state || {
15
- merger: createMergeStream(),
16
- contentCounter: new Counter(),
17
- };
18
- }
19
- get __internal_isClosed() {
20
- return this._state.merger.isSealed();
21
- }
22
- __internal_getReadable() {
23
- return this._state.merger.readable;
24
- }
25
- __internal_subscribeToClose(callback) {
26
- this._state.closeSubscriber = callback;
27
- }
28
- _addPart(part, stream) {
29
- if (this._state.append) {
30
- this._state.append.controller.close();
31
- this._state.append = undefined;
32
- }
33
- this.enqueue({
34
- type: "part-start",
35
- part,
36
- path: [],
37
- });
38
- this._state.merger.addStream(stream.pipeThrough(new PathAppendEncoder(this._state.contentCounter.value)));
39
- }
40
- merge(stream) {
41
- this._state.merger.addStream(stream.pipeThrough(new PathMergeEncoder(this._state.contentCounter)));
42
- }
43
- appendText(textDelta) {
44
- if (this._state.append?.kind !== "text") {
45
- this._state.append = {
46
- kind: "text",
47
- controller: this.addTextPart(),
48
- };
49
- }
50
- this._state.append.controller.append(textDelta);
51
- }
52
- appendReasoning(textDelta) {
53
- if (this._state.append?.kind !== "reasoning") {
54
- this._state.append = {
55
- kind: "reasoning",
56
- controller: this.addReasoningPart(),
57
- };
58
- }
59
- this._state.append.controller.append(textDelta);
60
- }
61
- addTextPart() {
62
- const [stream, controller] = createTextStreamController();
63
- this._addPart({ type: "text" }, stream);
64
- return controller;
65
- }
66
- addReasoningPart() {
67
- const [stream, controller] = createTextStreamController();
68
- this._addPart({ type: "reasoning" }, stream);
69
- return controller;
70
- }
71
- addToolCallPart(options) {
72
- const opt = typeof options === "string" ? { toolName: options } : options;
73
- const toolName = opt.toolName;
74
- const toolCallId = opt.toolCallId ?? generateId();
75
- const [stream, controller] = createToolCallStreamController();
76
- this._addPart({
77
- type: "tool-call",
78
- toolName,
79
- toolCallId,
80
- ...(this._parentId && { parentId: this._parentId }),
81
- }, stream);
82
- if (opt.argsText !== undefined) {
83
- controller.argsText.append(opt.argsText);
84
- controller.argsText.close();
85
- }
86
- if (opt.args !== undefined) {
87
- controller.argsText.append(JSON.stringify(opt.args));
88
- controller.argsText.close();
89
- }
90
- if (opt.response !== undefined) {
91
- controller.setResponse(opt.response);
92
- }
93
- return controller;
94
- }
95
- _finishedPartStream() {
96
- return new ReadableStream({
97
- start(controller) {
98
- controller.enqueue({ type: "part-finish", path: [] });
99
- controller.close();
100
- },
101
- });
102
- }
103
- _withParentIdOption(options) {
104
- if (!this._parentId)
105
- return options;
106
- return { ...options, parentId: this._parentId };
107
- }
108
- appendSource(options) {
109
- this._addPart(this._withParentIdOption(options), this._finishedPartStream());
110
- }
111
- appendFile(options) {
112
- this._addPart(this._withParentIdOption(options), this._finishedPartStream());
113
- }
114
- appendData(options) {
115
- this._addPart(this._withParentIdOption(options), this._finishedPartStream());
116
- }
117
- enqueue(chunk) {
118
- this._state.merger.enqueue(chunk);
119
- if (chunk.type === "part-start" && chunk.path.length === 0) {
120
- this._state.contentCounter.up();
121
- }
122
- }
123
- withParentId(parentId) {
124
- const controller = new AssistantStreamControllerImpl(this._state);
125
- controller._parentId = parentId;
126
- return controller;
127
- }
128
- close() {
129
- this._state.append?.controller?.close();
130
- this._state.merger.seal();
131
- this._state.closeSubscriber?.();
132
- }
133
- }
10
+ //#region src/core/modules/assistant-stream.ts
11
+ var AssistantStreamControllerImpl = class AssistantStreamControllerImpl {
12
+ _state;
13
+ _parentId;
14
+ constructor(state) {
15
+ this._state = state || {
16
+ merger: createMergeStream(),
17
+ contentCounter: new Counter()
18
+ };
19
+ }
20
+ get __internal_isClosed() {
21
+ return this._state.merger.isSealed();
22
+ }
23
+ __internal_getReadable() {
24
+ return this._state.merger.readable;
25
+ }
26
+ __internal_subscribeToClose(callback) {
27
+ this._state.closeSubscriber = callback;
28
+ }
29
+ _addPart(part, stream) {
30
+ if (this._state.append) {
31
+ this._state.append.controller.close();
32
+ this._state.append = void 0;
33
+ }
34
+ this.enqueue({
35
+ type: "part-start",
36
+ part,
37
+ path: []
38
+ });
39
+ this._state.merger.addStream(stream.pipeThrough(new PathAppendEncoder(this._state.contentCounter.value)));
40
+ }
41
+ merge(stream) {
42
+ this._state.merger.addStream(stream.pipeThrough(new PathMergeEncoder(this._state.contentCounter)));
43
+ }
44
+ appendText(textDelta) {
45
+ if (this._state.append?.kind !== "text") this._state.append = {
46
+ kind: "text",
47
+ controller: this.addTextPart()
48
+ };
49
+ this._state.append.controller.append(textDelta);
50
+ }
51
+ appendReasoning(textDelta) {
52
+ if (this._state.append?.kind !== "reasoning") this._state.append = {
53
+ kind: "reasoning",
54
+ controller: this.addReasoningPart()
55
+ };
56
+ this._state.append.controller.append(textDelta);
57
+ }
58
+ addTextPart() {
59
+ const [stream, controller] = createTextStreamController();
60
+ this._addPart({ type: "text" }, stream);
61
+ return controller;
62
+ }
63
+ addReasoningPart() {
64
+ const [stream, controller] = createTextStreamController();
65
+ this._addPart({ type: "reasoning" }, stream);
66
+ return controller;
67
+ }
68
+ addToolCallPart(options) {
69
+ const opt = typeof options === "string" ? { toolName: options } : options;
70
+ const toolName = opt.toolName;
71
+ const toolCallId = opt.toolCallId ?? generateId();
72
+ const [stream, controller] = createToolCallStreamController();
73
+ this._addPart({
74
+ type: "tool-call",
75
+ toolName,
76
+ toolCallId,
77
+ ...this._parentId && { parentId: this._parentId }
78
+ }, stream);
79
+ if (opt.argsText !== void 0) {
80
+ controller.argsText.append(opt.argsText);
81
+ controller.argsText.close();
82
+ }
83
+ if (opt.args !== void 0) {
84
+ controller.argsText.append(JSON.stringify(opt.args));
85
+ controller.argsText.close();
86
+ }
87
+ if (opt.response !== void 0) controller.setResponse(opt.response);
88
+ return controller;
89
+ }
90
+ _finishedPartStream() {
91
+ return new ReadableStream({ start(controller) {
92
+ controller.enqueue({
93
+ type: "part-finish",
94
+ path: []
95
+ });
96
+ controller.close();
97
+ } });
98
+ }
99
+ _withParentIdOption(options) {
100
+ if (!this._parentId) return options;
101
+ return {
102
+ ...options,
103
+ parentId: this._parentId
104
+ };
105
+ }
106
+ appendSource(options) {
107
+ this._addPart(this._withParentIdOption(options), this._finishedPartStream());
108
+ }
109
+ appendFile(options) {
110
+ this._addPart(this._withParentIdOption(options), this._finishedPartStream());
111
+ }
112
+ appendData(options) {
113
+ this._addPart(this._withParentIdOption(options), this._finishedPartStream());
114
+ }
115
+ enqueue(chunk) {
116
+ this._state.merger.enqueue(chunk);
117
+ if (chunk.type === "part-start" && chunk.path.length === 0) this._state.contentCounter.up();
118
+ }
119
+ withParentId(parentId) {
120
+ const controller = new AssistantStreamControllerImpl(this._state);
121
+ controller._parentId = parentId;
122
+ return controller;
123
+ }
124
+ close() {
125
+ this._state.append?.controller?.close();
126
+ this._state.merger.seal();
127
+ this._state.closeSubscriber?.();
128
+ }
129
+ };
134
130
  /**
135
- * Creates an {@link AssistantStream} and writes to it with an
136
- * {@link AssistantStreamController}.
137
- *
138
- * The callback may write synchronously or asynchronously. If it throws, an
139
- * `error` chunk is emitted before the error is rethrown; when the callback
140
- * settles, the stream is closed automatically unless the controller was
141
- * already closed.
142
- */
143
- export function createAssistantStream(callback) {
144
- const controller = new AssistantStreamControllerImpl();
145
- const runTask = async () => {
146
- try {
147
- await callback(controller);
148
- }
149
- catch (e) {
150
- if (!controller.__internal_isClosed) {
151
- controller.enqueue({
152
- type: "error",
153
- path: [],
154
- error: String(e),
155
- });
156
- }
157
- throw e;
158
- }
159
- finally {
160
- if (!controller.__internal_isClosed) {
161
- controller.close();
162
- }
163
- }
164
- };
165
- runTask();
166
- return controller.__internal_getReadable();
131
+ * Creates an {@link AssistantStream} and writes to it with an
132
+ * {@link AssistantStreamController}.
133
+ *
134
+ * The callback may write synchronously or asynchronously. If it throws, an
135
+ * `error` chunk is emitted before the error is rethrown; when the callback
136
+ * settles, the stream is closed automatically unless the controller was
137
+ * already closed.
138
+ */
139
+ function createAssistantStream(callback) {
140
+ const controller = new AssistantStreamControllerImpl();
141
+ const runTask = async () => {
142
+ try {
143
+ await callback(controller);
144
+ } catch (e) {
145
+ if (!controller.__internal_isClosed) controller.enqueue({
146
+ type: "error",
147
+ path: [],
148
+ error: String(e)
149
+ });
150
+ throw e;
151
+ } finally {
152
+ if (!controller.__internal_isClosed) controller.close();
153
+ }
154
+ };
155
+ runTask();
156
+ return controller.__internal_getReadable();
167
157
  }
168
158
  /**
169
- * Creates an {@link AssistantStream} together with the controller used to
170
- * write into it.
171
- *
172
- * Use this when the stream needs to be returned before all writers are known.
173
- * Closing the returned controller finishes the paired stream.
174
- */
175
- export function createAssistantStreamController() {
176
- const { resolve, promise } = promiseWithResolvers();
177
- let controller;
178
- const stream = createAssistantStream((c) => {
179
- controller = c;
180
- controller.__internal_subscribeToClose(resolve);
181
- return promise;
182
- });
183
- return [stream, controller];
159
+ * Creates an {@link AssistantStream} together with the controller used to
160
+ * write into it.
161
+ *
162
+ * Use this when the stream needs to be returned before all writers are known.
163
+ * Closing the returned controller finishes the paired stream.
164
+ */
165
+ function createAssistantStreamController() {
166
+ const { resolve, promise } = promiseWithResolvers();
167
+ let controller;
168
+ return [createAssistantStream((c) => {
169
+ controller = c;
170
+ controller.__internal_subscribeToClose(resolve);
171
+ return promise;
172
+ }), controller];
184
173
  }
185
174
  /**
186
- * Creates a `Response` whose body is an encoded {@link AssistantStream}.
187
- *
188
- * This is the HTTP-route convenience form of {@link createAssistantStream}; it
189
- * uses {@link DataStreamEncoder} so the response can be consumed by matching
190
- * assistant-ui data stream decoders.
191
- */
192
- export function createAssistantStreamResponse(callback) {
193
- return AssistantStream.toResponse(createAssistantStream(callback), new DataStreamEncoder());
175
+ * Creates a `Response` whose body is an encoded {@link AssistantStream}.
176
+ *
177
+ * This is the HTTP-route convenience form of {@link createAssistantStream}; it
178
+ * uses {@link DataStreamEncoder} so the response can be consumed by matching
179
+ * assistant-ui data stream decoders.
180
+ */
181
+ function createAssistantStreamResponse(callback) {
182
+ return AssistantStream.toResponse(createAssistantStream(callback), new DataStreamEncoder());
194
183
  }
184
+ //#endregion
185
+ export { createAssistantStream, createAssistantStreamController, createAssistantStreamResponse };
186
+
195
187
  //# sourceMappingURL=assistant-stream.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"assistant-stream.js","sourceRoot":"","sources":["../../../src/core/modules/assistant-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,8BAA2B;AAErD,OAAO,EAAE,iBAAiB,EAAE,iCAA8B;AAC1D,OAAO,EAAE,0BAA0B,EAA6B,kBAAe;AAC/E,OAAO,EACL,8BAA8B,GAE/B,uBAAoB;AACrB,OAAO,EAAE,OAAO,EAAE,4BAAyB;AAC3C,OAAO,EACL,iBAAiB,EACjB,gBAAgB,GACjB,sCAAmC;AACpC,OAAO,EAAE,iBAAiB,EAAE,mDAAgD;AAE5E,OAAO,EAAE,UAAU,EAAE,+BAA4B;AAMjD,OAAO,EAAE,oBAAoB,EAAE,4CAAyC;AAmFxE,MAAM,6BAA6B;IAChB,MAAM,CAAiC;IAChD,SAAS,CAAU;IAE3B,YAAY,KAAsC;QAChD,IAAI,CAAC,MAAM,GAAG,KAAK,IAAI;YACrB,MAAM,EAAE,iBAAiB,EAAE;YAC3B,cAAc,EAAE,IAAI,OAAO,EAAE;SAC9B,CAAC;IACJ,CAAC;IAED,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IACvC,CAAC;IAED,sBAAsB;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;IACrC,CAAC;IAED,2BAA2B,CAAC,QAAoB;QAC9C,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,QAAQ,CAAC;IACzC,CAAC;IAEO,QAAQ,CAAC,IAAc,EAAE,MAAuB;QACtD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,OAAO,CAAC;YACX,IAAI,EAAE,YAAY;YAClB,IAAI;YACJ,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAC1B,MAAM,CAAC,WAAW,CAChB,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CACxD,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAuB;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAC1B,MAAM,CAAC,WAAW,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CACrE,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG;gBACnB,IAAI,EAAE,MAAM;gBACZ,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE;aAC/B,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;IAED,eAAe,CAAC,SAAiB;QAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG;gBACnB,IAAI,EAAE,WAAW;gBACjB,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE;aACpC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;IAED,WAAW;QACT,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,0BAA0B,EAAE,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;QACxC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,gBAAgB;QACd,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,0BAA0B,EAAE,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,eAAe,CACb,OAAkC;QAElC,MAAM,GAAG,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC1E,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC9B,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,UAAU,EAAE,CAAC;QAElD,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,8BAA8B,EAAE,CAAC;QAC9D,IAAI,CAAC,QAAQ,CACX;YACE,IAAI,EAAE,WAAW;YACjB,QAAQ;YACR,UAAU;YACV,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;SACpD,EACD,MAAM,CACP,CAAC;QAEF,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC/B,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACzC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3B,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YACrD,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC/B,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,mBAAmB;QACzB,OAAO,IAAI,cAAc,CAAC;YACxB,KAAK,CAAC,UAAU;gBACd,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBACtD,UAAU,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAEO,mBAAmB,CAAI,OAAU;QACvC,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,OAAO,CAAC;QACpC,OAAO,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAClD,CAAC;IAED,YAAY,CAAC,OAAmB;QAC9B,IAAI,CAAC,QAAQ,CACX,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EACjC,IAAI,CAAC,mBAAmB,EAAE,CAC3B,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,OAAiB;QAC1B,IAAI,CAAC,QAAQ,CACX,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EACjC,IAAI,CAAC,mBAAmB,EAAE,CAC3B,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,OAAiB;QAC1B,IAAI,CAAC,QAAQ,CACX,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EACjC,IAAI,CAAC,mBAAmB,EAAE,CAC3B,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,KAA2B;QACjC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAElC,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IAED,YAAY,CAAC,QAAgB;QAC3B,MAAM,UAAU,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClE,UAAU,CAAC,SAAS,GAAG,QAAQ,CAAC;QAChC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAE1B,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC;IAClC,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAA6E;IAE7E,MAAM,UAAU,GAAG,IAAI,6BAA6B,EAAE,CAAC;IAEvD,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;gBACpC,UAAU,CAAC,OAAO,CAAC;oBACjB,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;iBACjB,CAAC,CAAC;YACL,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;gBACpC,UAAU,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,OAAO,EAAE,CAAC;IAEV,OAAO,UAAU,CAAC,sBAAsB,EAAE,CAAC;AAC7C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,+BAA+B;IAC7C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,oBAAoB,EAAQ,CAAC;IAC1D,IAAI,UAAsC,CAAC;IAC3C,MAAM,MAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAAE;QACzC,UAAU,GAAG,CAAC,CAAC;QAEd,UAA4C,CAAC,2BAA2B,CACvE,OAAO,CACR,CAAC;QAEF,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,EAAE,UAAU,CAAU,CAAC;AACvC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAC3C,QAA6E;IAE7E,OAAO,eAAe,CAAC,UAAU,CAC/B,qBAAqB,CAAC,QAAQ,CAAC,EAC/B,IAAI,iBAAiB,EAAE,CACxB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"assistant-stream.js","names":[],"sources":["../../../src/core/modules/assistant-stream.ts"],"sourcesContent":["import { AssistantStream } from \"../AssistantStream\";\nimport type { AssistantStreamChunk, PartInit } from \"../AssistantStreamChunk\";\nimport { createMergeStream } from \"../utils/stream/merge\";\nimport { createTextStreamController, type TextStreamController } from \"./text\";\nimport {\n createToolCallStreamController,\n type 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 type { DataPart, FilePart, SourcePart } from \"../utils/types\";\nimport { generateId } from \"../utils/generateId\";\nimport type {\n ReadonlyJSONObject,\n ReadonlyJSONValue,\n} from \"../../utils/json/json-value\";\nimport type { ToolResponseLike } 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?: ToolResponseLike<ReadonlyJSONValue>;\n};\n\n/**\n * Imperative writer for constructing an {@link AssistantStream}.\n *\n * The controller handles part boundaries for common streaming operations. Use\n * `appendText` and `appendReasoning` for simple token streams, or open explicit\n * parts with `addTextPart` and `addToolCallPart` when you need direct control.\n */\nexport type AssistantStreamController = {\n /** Appends text to the current text part, opening one if needed. */\n appendText(textDelta: string): void;\n /** Appends reasoning text to the current reasoning part, opening one if needed. */\n appendReasoning(reasoningDelta: string): void;\n /** Appends a source citation part to the stream. */\n appendSource(options: SourcePart): void;\n /** Appends a file part to the stream. */\n appendFile(options: FilePart): void;\n /** Appends a named data part to the stream. */\n appendData(options: DataPart): void;\n /**\n * Opens a text part and returns its writer.\n *\n * Close the returned controller when the text part is complete. Opening a new\n * part through this controller closes any implicit text or reasoning append\n * part first.\n */\n addTextPart(): TextStreamController;\n /**\n * Opens a tool-call part by tool name and returns its writer.\n *\n * A tool call id is generated automatically. Use the object overload when the\n * caller already has an id, initial args, args text, or response.\n */\n addToolCallPart(options: string): ToolCallStreamController;\n /**\n * Opens a tool-call part and returns its writer.\n *\n * Use this overload to provide a stable `toolCallId`, initial arguments,\n * streamed argument text, or an immediate {@link ToolResponseLike}.\n */\n addToolCallPart(options: ToolCallPartInit): ToolCallStreamController;\n /** Enqueues a raw protocol chunk. Prefer higher-level helpers when possible. */\n enqueue(chunk: AssistantStreamChunk): void;\n /**\n * Merges another assistant stream into this stream.\n *\n * Paths from the merged stream are remapped so its parts appear at the next\n * available position in this controller's output.\n */\n merge(stream: AssistantStream): void;\n /** Closes any active part and finishes the stream. */\n close(): void;\n /**\n * Returns a controller that writes child parts with `parentId` attached.\n *\n * Use this for nested or related parts that should be associated with an\n * existing message or part in downstream renderers.\n */\n withParentId(parentId: string): AssistantStreamController;\n};\n\n// Shared state between controller instances\ntype AssistantStreamControllerState = {\n merger: ReturnType<typeof createMergeStream>;\n append?:\n | {\n controller: TextStreamController;\n kind: \"text\" | \"reasoning\";\n }\n | undefined;\n contentCounter: Counter;\n closeSubscriber?: () => void;\n};\n\nclass AssistantStreamControllerImpl implements AssistantStreamController {\n private readonly _state: AssistantStreamControllerState;\n private _parentId?: string;\n\n constructor(state?: AssistantStreamControllerState) {\n this._state = state || {\n merger: createMergeStream(),\n contentCounter: new Counter(),\n };\n }\n\n get __internal_isClosed() {\n return this._state.merger.isSealed();\n }\n\n __internal_getReadable() {\n return this._state.merger.readable;\n }\n\n __internal_subscribeToClose(callback: () => void) {\n this._state.closeSubscriber = callback;\n }\n\n private _addPart(part: PartInit, stream: AssistantStream) {\n if (this._state.append) {\n this._state.append.controller.close();\n this._state.append = undefined;\n }\n\n this.enqueue({\n type: \"part-start\",\n part,\n path: [],\n });\n this._state.merger.addStream(\n stream.pipeThrough(\n new PathAppendEncoder(this._state.contentCounter.value),\n ),\n );\n }\n\n merge(stream: AssistantStream) {\n this._state.merger.addStream(\n stream.pipeThrough(new PathMergeEncoder(this._state.contentCounter)),\n );\n }\n\n appendText(textDelta: string) {\n if (this._state.append?.kind !== \"text\") {\n this._state.append = {\n kind: \"text\",\n controller: this.addTextPart(),\n };\n }\n this._state.append.controller.append(textDelta);\n }\n\n appendReasoning(textDelta: string) {\n if (this._state.append?.kind !== \"reasoning\") {\n this._state.append = {\n kind: \"reasoning\",\n controller: this.addReasoningPart(),\n };\n }\n this._state.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(\n {\n type: \"tool-call\",\n toolName,\n toolCallId,\n ...(this._parentId && { parentId: this._parentId }),\n },\n stream,\n );\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 private _finishedPartStream(): AssistantStream {\n return new ReadableStream({\n start(controller) {\n controller.enqueue({ type: \"part-finish\", path: [] });\n controller.close();\n },\n });\n }\n\n private _withParentIdOption<T>(options: T): T {\n if (!this._parentId) return options;\n return { ...options, parentId: this._parentId };\n }\n\n appendSource(options: SourcePart) {\n this._addPart(\n this._withParentIdOption(options),\n this._finishedPartStream(),\n );\n }\n\n appendFile(options: FilePart) {\n this._addPart(\n this._withParentIdOption(options),\n this._finishedPartStream(),\n );\n }\n\n appendData(options: DataPart) {\n this._addPart(\n this._withParentIdOption(options),\n this._finishedPartStream(),\n );\n }\n\n enqueue(chunk: AssistantStreamChunk) {\n this._state.merger.enqueue(chunk);\n\n if (chunk.type === \"part-start\" && chunk.path.length === 0) {\n this._state.contentCounter.up();\n }\n }\n\n withParentId(parentId: string): AssistantStreamController {\n const controller = new AssistantStreamControllerImpl(this._state);\n controller._parentId = parentId;\n return controller;\n }\n\n close() {\n this._state.append?.controller?.close();\n this._state.merger.seal();\n\n this._state.closeSubscriber?.();\n }\n}\n\n/**\n * Creates an {@link AssistantStream} and writes to it with an\n * {@link AssistantStreamController}.\n *\n * The callback may write synchronously or asynchronously. If it throws, an\n * `error` chunk is emitted before the error is rethrown; when the callback\n * settles, the stream is closed automatically unless the controller was\n * already closed.\n */\nexport function createAssistantStream(\n callback: (controller: AssistantStreamController) => PromiseLike<void> | void,\n): AssistantStream {\n const controller = new AssistantStreamControllerImpl();\n\n const runTask = async () => {\n try {\n await callback(controller);\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\n return controller.__internal_getReadable();\n}\n\n/**\n * Creates an {@link AssistantStream} together with the controller used to\n * write into it.\n *\n * Use this when the stream needs to be returned before all writers are known.\n * Closing the returned controller finishes the paired stream.\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\n/**\n * Creates a `Response` whose body is an encoded {@link AssistantStream}.\n *\n * This is the HTTP-route convenience form of {@link createAssistantStream}; it\n * uses {@link DataStreamEncoder} so the response can be consumed by matching\n * assistant-ui data stream decoders.\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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"}
@@ -1,9 +1,13 @@
1
- import type { AssistantStream } from "../AssistantStream.js";
2
- import type { UnderlyingReadable } from "../utils/stream/UnderlyingReadable.js";
3
- export type TextStreamController = {
4
- append(textDelta: string): void;
5
- close(): void;
1
+ import { UnderlyingReadable } from "../utils/stream/UnderlyingReadable.js";
2
+ import { AssistantStream } from "../AssistantStream.js";
3
+
4
+ //#region src/core/modules/text.d.ts
5
+ type TextStreamController = {
6
+ append(textDelta: string): void;
7
+ close(): void;
6
8
  };
7
- export declare const createTextStream: (readable: UnderlyingReadable<TextStreamController>) => AssistantStream;
8
- export declare const createTextStreamController: () => readonly [AssistantStream, TextStreamController];
9
+ declare const createTextStream: (readable: UnderlyingReadable<TextStreamController>) => AssistantStream;
10
+ declare const createTextStreamController: () => readonly [AssistantStream, TextStreamController];
11
+ //#endregion
12
+ export { TextStreamController, createTextStream, createTextStreamController };
9
13
  //# sourceMappingURL=text.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/core/modules/text.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,8BAA2B;AAE1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,8CAA2C;AAE7E,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
+ {"version":3,"file":"text.d.ts","names":[],"sources":["../../../src/core/modules/text.ts"],"mappings":";;;;KAIY,oBAAA;EACV,MAAA,CAAO,SAAA;EACP,KAAA;AAAA;AAAA,cAiCW,gBAAA,GACX,QAAA,EAAU,kBAAA,CAAmB,oBAAA,MAC5B,eAAA;AAAA,cAcU,0BAAA,kBAA0B,eAAA,EAAA,oBAAA"}