assistant-stream 0.3.14 → 0.3.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/README.md +6 -4
  2. package/dist/core/AssistantStream.d.ts +50 -9
  3. package/dist/core/AssistantStream.d.ts.map +1 -1
  4. package/dist/core/AssistantStream.js +39 -15
  5. package/dist/core/AssistantStream.js.map +1 -1
  6. package/dist/core/AssistantStreamChunk.d.ts +84 -61
  7. package/dist/core/AssistantStreamChunk.d.ts.map +1 -1
  8. package/dist/core/AssistantStreamChunk.js +0 -2
  9. package/dist/core/accumulators/AssistantMessageStream.d.ts +15 -11
  10. package/dist/core/accumulators/AssistantMessageStream.d.ts.map +1 -1
  11. package/dist/core/accumulators/AssistantMessageStream.js +52 -48
  12. package/dist/core/accumulators/AssistantMessageStream.js.map +1 -1
  13. package/dist/core/accumulators/TimingTracker.d.ts +15 -11
  14. package/dist/core/accumulators/TimingTracker.d.ts.map +1 -1
  15. package/dist/core/accumulators/TimingTracker.js +36 -43
  16. package/dist/core/accumulators/TimingTracker.js.map +1 -1
  17. package/dist/core/accumulators/assistant-message-accumulator.d.ts +21 -11
  18. package/dist/core/accumulators/assistant-message-accumulator.d.ts.map +1 -1
  19. package/dist/core/accumulators/assistant-message-accumulator.js +349 -390
  20. package/dist/core/accumulators/assistant-message-accumulator.js.map +1 -1
  21. package/dist/core/converters/toGenericMessages.d.ts +49 -47
  22. package/dist/core/converters/toGenericMessages.d.ts.map +1 -1
  23. package/dist/core/converters/toGenericMessages.js +122 -136
  24. package/dist/core/converters/toGenericMessages.js.map +1 -1
  25. package/dist/core/modules/assistant-stream.d.ts +92 -28
  26. package/dist/core/modules/assistant-stream.d.ts.map +1 -1
  27. package/dist/core/modules/assistant-stream.js +177 -162
  28. package/dist/core/modules/assistant-stream.js.map +1 -1
  29. package/dist/core/modules/text.d.ts +11 -7
  30. package/dist/core/modules/text.d.ts.map +1 -1
  31. package/dist/core/modules/text.js +45 -45
  32. package/dist/core/modules/text.js.map +1 -1
  33. package/dist/core/modules/tool-call.d.ts +15 -11
  34. package/dist/core/modules/tool-call.d.ts.map +1 -1
  35. package/dist/core/modules/tool-call.js +81 -96
  36. package/dist/core/modules/tool-call.js.map +1 -1
  37. package/dist/core/object/ObjectStreamAccumulator.d.ts +13 -9
  38. package/dist/core/object/ObjectStreamAccumulator.d.ts.map +1 -1
  39. package/dist/core/object/ObjectStreamAccumulator.js +44 -52
  40. package/dist/core/object/ObjectStreamAccumulator.js.map +1 -1
  41. package/dist/core/object/ObjectStreamResponse.d.ts +12 -8
  42. package/dist/core/object/ObjectStreamResponse.d.ts.map +1 -1
  43. package/dist/core/object/ObjectStreamResponse.js +52 -71
  44. package/dist/core/object/ObjectStreamResponse.js.map +1 -1
  45. package/dist/core/object/createObjectStream.d.ts +14 -8
  46. package/dist/core/object/createObjectStream.d.ts.map +1 -1
  47. package/dist/core/object/createObjectStream.js +50 -47
  48. package/dist/core/object/createObjectStream.js.map +1 -1
  49. package/dist/core/object/types.d.ts +14 -11
  50. package/dist/core/object/types.d.ts.map +1 -1
  51. package/dist/core/object/types.js +0 -2
  52. package/dist/core/serialization/PlainText.d.ts +11 -7
  53. package/dist/core/serialization/PlainText.d.ts.map +1 -1
  54. package/dist/core/serialization/PlainText.js +40 -48
  55. package/dist/core/serialization/PlainText.js.map +1 -1
  56. package/dist/core/serialization/assistant-transport/AssistantTransport.d.ts +11 -7
  57. package/dist/core/serialization/assistant-transport/AssistantTransport.d.ts.map +1 -1
  58. package/dist/core/serialization/assistant-transport/AssistantTransport.js +102 -117
  59. package/dist/core/serialization/assistant-transport/AssistantTransport.js.map +1 -1
  60. package/dist/core/serialization/data-stream/DataStream.d.ts +11 -7
  61. package/dist/core/serialization/data-stream/DataStream.d.ts.map +1 -1
  62. package/dist/core/serialization/data-stream/DataStream.js +320 -371
  63. package/dist/core/serialization/data-stream/DataStream.js.map +1 -1
  64. package/dist/core/serialization/data-stream/chunk-types.d.ts +101 -100
  65. package/dist/core/serialization/data-stream/chunk-types.d.ts.map +1 -1
  66. package/dist/core/serialization/data-stream/chunk-types.js +27 -23
  67. package/dist/core/serialization/data-stream/chunk-types.js.map +1 -1
  68. package/dist/core/serialization/data-stream/serialization.d.ts +9 -5
  69. package/dist/core/serialization/data-stream/serialization.d.ts.map +1 -1
  70. package/dist/core/serialization/data-stream/serialization.js +23 -24
  71. package/dist/core/serialization/data-stream/serialization.js.map +1 -1
  72. package/dist/core/serialization/ui-message-stream/UIMessageStream.d.ts +15 -12
  73. package/dist/core/serialization/ui-message-stream/UIMessageStream.d.ts.map +1 -1
  74. package/dist/core/serialization/ui-message-stream/UIMessageStream.js +205 -228
  75. package/dist/core/serialization/ui-message-stream/UIMessageStream.js.map +1 -1
  76. package/dist/core/serialization/ui-message-stream/chunk-types.d.ts +68 -65
  77. package/dist/core/serialization/ui-message-stream/chunk-types.d.ts.map +1 -1
  78. package/dist/core/serialization/ui-message-stream/chunk-types.js +0 -2
  79. package/dist/core/tool/ToolCallReader.d.ts +34 -30
  80. package/dist/core/tool/ToolCallReader.d.ts.map +1 -1
  81. package/dist/core/tool/ToolCallReader.js +264 -317
  82. package/dist/core/tool/ToolCallReader.js.map +1 -1
  83. package/dist/core/tool/ToolExecutionStream.d.ts +20 -17
  84. package/dist/core/tool/ToolExecutionStream.d.ts.map +1 -1
  85. package/dist/core/tool/ToolExecutionStream.js +123 -146
  86. package/dist/core/tool/ToolExecutionStream.js.map +1 -1
  87. package/dist/core/tool/ToolResponse.d.ts +60 -19
  88. package/dist/core/tool/ToolResponse.d.ts.map +1 -1
  89. package/dist/core/tool/ToolResponse.js +51 -34
  90. package/dist/core/tool/ToolResponse.js.map +1 -1
  91. package/dist/core/tool/schema-utils.d.ts +19 -15
  92. package/dist/core/tool/schema-utils.d.ts.map +1 -1
  93. package/dist/core/tool/schema-utils.js +50 -84
  94. package/dist/core/tool/schema-utils.js.map +1 -1
  95. package/dist/core/tool/tool-types.d.ts +173 -92
  96. package/dist/core/tool/tool-types.d.ts.map +1 -1
  97. package/dist/core/tool/tool-types.js +0 -2
  98. package/dist/core/tool/toolResultStream.d.ts +24 -7
  99. package/dist/core/tool/toolResultStream.d.ts.map +1 -1
  100. package/dist/core/tool/toolResultStream.js +128 -145
  101. package/dist/core/tool/toolResultStream.js.map +1 -1
  102. package/dist/core/tool/type-path-utils.d.ts +8 -19
  103. package/dist/core/tool/type-path-utils.d.ts.map +1 -1
  104. package/dist/core/tool/type-path-utils.js +0 -2
  105. package/dist/core/utils/Counter.d.ts +6 -3
  106. package/dist/core/utils/Counter.d.ts.map +1 -1
  107. package/dist/core/utils/Counter.js +10 -6
  108. package/dist/core/utils/Counter.js.map +1 -1
  109. package/dist/core/utils/generateId.d.ts +4 -1
  110. package/dist/core/utils/generateId.d.ts.map +1 -1
  111. package/dist/core/utils/generateId.js +5 -1
  112. package/dist/core/utils/generateId.js.map +1 -1
  113. package/dist/core/utils/stream/AssistantMetaTransformStream.d.ts +15 -11
  114. package/dist/core/utils/stream/AssistantMetaTransformStream.d.ts.map +1 -1
  115. package/dist/core/utils/stream/AssistantMetaTransformStream.js +38 -42
  116. package/dist/core/utils/stream/AssistantMetaTransformStream.js.map +1 -1
  117. package/dist/core/utils/stream/AssistantTransformStream.d.ts +11 -8
  118. package/dist/core/utils/stream/AssistantTransformStream.d.ts.map +1 -1
  119. package/dist/core/utils/stream/AssistantTransformStream.js +37 -35
  120. package/dist/core/utils/stream/AssistantTransformStream.js.map +1 -1
  121. package/dist/core/utils/stream/LineDecoderStream.d.ts +6 -3
  122. package/dist/core/utils/stream/LineDecoderStream.d.ts.map +1 -1
  123. package/dist/core/utils/stream/LineDecoderStream.js +23 -26
  124. package/dist/core/utils/stream/LineDecoderStream.js.map +1 -1
  125. package/dist/core/utils/stream/PipeableTransformStream.d.ts +5 -2
  126. package/dist/core/utils/stream/PipeableTransformStream.d.ts.map +1 -1
  127. package/dist/core/utils/stream/PipeableTransformStream.js +14 -10
  128. package/dist/core/utils/stream/PipeableTransformStream.js.map +1 -1
  129. package/dist/core/utils/stream/SSE.d.ts +10 -6
  130. package/dist/core/utils/stream/SSE.d.ts.map +1 -1
  131. package/dist/core/utils/stream/SSE.js +79 -91
  132. package/dist/core/utils/stream/SSE.js.map +1 -1
  133. package/dist/core/utils/stream/UnderlyingReadable.d.ts +7 -4
  134. package/dist/core/utils/stream/UnderlyingReadable.d.ts.map +1 -1
  135. package/dist/core/utils/stream/UnderlyingReadable.js +0 -2
  136. package/dist/core/utils/stream/merge.d.ts +11 -7
  137. package/dist/core/utils/stream/merge.d.ts.map +1 -1
  138. package/dist/core/utils/stream/merge.js +68 -170
  139. package/dist/core/utils/stream/merge.js.map +1 -1
  140. package/dist/core/utils/stream/path-utils.d.ts +11 -7
  141. package/dist/core/utils/stream/path-utils.d.ts.map +1 -1
  142. package/dist/core/utils/stream/path-utils.js +46 -52
  143. package/dist/core/utils/stream/path-utils.js.map +1 -1
  144. package/dist/core/utils/types.d.ts +109 -113
  145. package/dist/core/utils/types.d.ts.map +1 -1
  146. package/dist/core/utils/types.js +0 -2
  147. package/dist/core/utils/withPromiseOrValue.d.ts +4 -1
  148. package/dist/core/utils/withPromiseOrValue.d.ts.map +1 -1
  149. package/dist/core/utils/withPromiseOrValue.js +12 -15
  150. package/dist/core/utils/withPromiseOrValue.js.map +1 -1
  151. package/dist/index.d.ts +23 -24
  152. package/dist/index.js +16 -16
  153. package/dist/node_modules/.pnpm/@types_json-schema@7.0.15/node_modules/@types/json-schema/index.d.ts +141 -0
  154. package/dist/node_modules/.pnpm/@types_json-schema@7.0.15/node_modules/@types/json-schema/index.d.ts.map +1 -0
  155. package/dist/resumable/ResumableStreamContext.d.ts +28 -24
  156. package/dist/resumable/ResumableStreamContext.d.ts.map +1 -1
  157. package/dist/resumable/ResumableStreamContext.js +99 -114
  158. package/dist/resumable/ResumableStreamContext.js.map +1 -1
  159. package/dist/resumable/constants.d.ts +4 -1
  160. package/dist/resumable/constants.d.ts.map +1 -1
  161. package/dist/resumable/constants.js +5 -1
  162. package/dist/resumable/constants.js.map +1 -1
  163. package/dist/resumable/createResumableAssistantStreamResponse.d.ts +22 -21
  164. package/dist/resumable/createResumableAssistantStreamResponse.d.ts.map +1 -1
  165. package/dist/resumable/createResumableAssistantStreamResponse.js +25 -32
  166. package/dist/resumable/createResumableAssistantStreamResponse.js.map +1 -1
  167. package/dist/resumable/errors.d.ts +8 -5
  168. package/dist/resumable/errors.d.ts.map +1 -1
  169. package/dist/resumable/errors.js +14 -12
  170. package/dist/resumable/errors.js.map +1 -1
  171. package/dist/resumable/index.d.ts +7 -7
  172. package/dist/resumable/index.js +5 -5
  173. package/dist/resumable/stores/InMemoryResumableStreamStore.d.ts +14 -10
  174. package/dist/resumable/stores/InMemoryResumableStreamStore.d.ts.map +1 -1
  175. package/dist/resumable/stores/InMemoryResumableStreamStore.js +159 -193
  176. package/dist/resumable/stores/InMemoryResumableStreamStore.js.map +1 -1
  177. package/dist/resumable/stores/ioredis.d.ts +9 -5
  178. package/dist/resumable/stores/ioredis.d.ts.map +1 -1
  179. package/dist/resumable/stores/ioredis.js +70 -82
  180. package/dist/resumable/stores/ioredis.js.map +1 -1
  181. package/dist/resumable/stores/redis-impl.d.ts +51 -48
  182. package/dist/resumable/stores/redis-impl.d.ts.map +1 -1
  183. package/dist/resumable/stores/redis-impl.js +176 -176
  184. package/dist/resumable/stores/redis-impl.js.map +1 -1
  185. package/dist/resumable/stores/redis.d.ts +31 -28
  186. package/dist/resumable/stores/redis.d.ts.map +1 -1
  187. package/dist/resumable/stores/redis.js +87 -95
  188. package/dist/resumable/stores/redis.js.map +1 -1
  189. package/dist/resumable/types.d.ts +29 -26
  190. package/dist/resumable/types.d.ts.map +1 -1
  191. package/dist/resumable/types.js +0 -2
  192. package/dist/utils/AsyncIterableStream.d.ts +5 -2
  193. package/dist/utils/AsyncIterableStream.d.ts.map +1 -1
  194. package/dist/utils/AsyncIterableStream.js +17 -16
  195. package/dist/utils/AsyncIterableStream.js.map +1 -1
  196. package/dist/utils/json/fix-json.d.ts +4 -1
  197. package/dist/utils/json/fix-json.d.ts.map +1 -1
  198. package/dist/utils/json/fix-json.js +286 -380
  199. package/dist/utils/json/fix-json.js.map +1 -1
  200. package/dist/utils/json/is-json.d.ts +8 -4
  201. package/dist/utils/json/is-json.d.ts.map +1 -1
  202. package/dist/utils/json/is-json.js +13 -21
  203. package/dist/utils/json/is-json.js.map +1 -1
  204. package/dist/utils/json/json-value.d.ts +7 -4
  205. package/dist/utils/json/json-value.d.ts.map +1 -1
  206. package/dist/utils/json/json-value.js +0 -2
  207. package/dist/utils/json/parse-partial-json-object.d.ts +11 -8
  208. package/dist/utils/json/parse-partial-json-object.d.ts.map +1 -1
  209. package/dist/utils/json/parse-partial-json-object.js +50 -62
  210. package/dist/utils/json/parse-partial-json-object.js.map +1 -1
  211. package/dist/utils/promiseWithResolvers.d.ts +7 -4
  212. package/dist/utils/promiseWithResolvers.d.ts.map +1 -1
  213. package/dist/utils/promiseWithResolvers.js +17 -10
  214. package/dist/utils/promiseWithResolvers.js.map +1 -1
  215. package/dist/utils.d.ts +6 -6
  216. package/dist/utils.js +5 -5
  217. package/package.json +5 -4
  218. package/src/core/AssistantStream.ts +37 -0
  219. package/src/core/AssistantStreamChunk.ts +30 -0
  220. package/src/core/modules/assistant-stream.ts +68 -0
  221. package/src/core/tool/ToolResponse.ts +45 -1
  222. package/src/core/tool/tool-types.ts +102 -2
  223. package/src/core/tool/toolResultStream.ts +15 -0
  224. package/dist/core/AssistantStreamChunk.js.map +0 -1
  225. package/dist/core/object/types.js.map +0 -1
  226. package/dist/core/serialization/ui-message-stream/chunk-types.js.map +0 -1
  227. package/dist/core/tool/tool-types.js.map +0 -1
  228. package/dist/core/tool/type-path-utils.js.map +0 -1
  229. package/dist/core/utils/stream/UnderlyingReadable.js.map +0 -1
  230. package/dist/core/utils/types.js.map +0 -1
  231. package/dist/index.d.ts.map +0 -1
  232. package/dist/index.js.map +0 -1
  233. package/dist/resumable/index.d.ts.map +0 -1
  234. package/dist/resumable/index.js.map +0 -1
  235. package/dist/resumable/types.js.map +0 -1
  236. package/dist/utils/json/json-value.js.map +0 -1
  237. package/dist/utils.d.ts.map +0 -1
  238. package/dist/utils.js.map +0 -1
@@ -1,10 +1,27 @@
1
- import type { Tool } from "./tool-types.js";
1
+ import { Tool } from "./tool-types.js";
2
+ import { AssistantMessage } from "../utils/types.js";
2
3
  import { ToolExecutionStream } from "./ToolExecutionStream.js";
3
- import type { AssistantMessage } from "../utils/types.js";
4
- export declare function unstable_runPendingTools(message: AssistantMessage, tools: Record<string, Tool> | undefined, abortSignal: AbortSignal, human: (toolCallId: string, payload: unknown) => Promise<unknown>): Promise<AssistantMessage>;
5
- export type ToolResultStreamOptions = {
6
- onExecutionStart?: (toolCallId: string, toolName: string) => void;
7
- onExecutionEnd?: (toolCallId: string, toolName: string) => void;
4
+
5
+ //#region src/core/tool/toolResultStream.d.ts
6
+ declare function unstable_runPendingTools(message: AssistantMessage, tools: Record<string, Tool> | undefined, abortSignal: AbortSignal, human: (toolCallId: string, payload: unknown) => Promise<unknown>): Promise<AssistantMessage>;
7
+ type ToolResultStreamOptions = {
8
+ /** Called immediately before a frontend tool's `execute` function runs. */onExecutionStart?: (toolCallId: string, toolName: string) => void; /** Called after frontend tool execution finishes or fails. */
9
+ onExecutionEnd?: (toolCallId: string, toolName: string) => void;
8
10
  };
9
- export declare function toolResultStream(tools: Record<string, Tool> | (() => Record<string, Tool> | undefined) | undefined, abortSignal: AbortSignal | (() => AbortSignal), human: (toolCallId: string, payload: unknown) => Promise<unknown>, options?: ToolResultStreamOptions): ToolExecutionStream;
11
+ /**
12
+ * Transform stream that executes frontend tools and appends tool results.
13
+ *
14
+ * The transform watches streamed tool-call arguments, runs the matching
15
+ * frontend tool once its arguments are complete, and emits a result chunk for
16
+ * the tool call. Backend and human tools pass through according to their tool
17
+ * definition.
18
+ *
19
+ * @param tools Tool registry or function returning the current registry.
20
+ * @param abortSignal Signal, or signal getter, used for the current run.
21
+ * @param human Callback used to resolve human-tool requests from UI input.
22
+ * @param options Optional execution lifecycle callbacks.
23
+ */
24
+ declare function toolResultStream(tools: Record<string, Tool> | (() => Record<string, Tool> | undefined) | undefined, abortSignal: AbortSignal | (() => AbortSignal), human: (toolCallId: string, payload: unknown) => Promise<unknown>, options?: ToolResultStreamOptions): ToolExecutionStream;
25
+ //#endregion
26
+ export { ToolResultStreamOptions, toolResultStream, unstable_runPendingTools };
10
27
  //# sourceMappingURL=toolResultStream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolResultStream.d.ts","sourceRoot":"","sources":["../../../src/core/tool/toolResultStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAuC,wBAAqB;AAG9E,OAAO,EAAE,mBAAmB,EAAE,iCAA8B;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,0BAAuB;AAyIvD,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,SAAS,EACvC,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,6BAoElE;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAClE,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACjE,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,KAAK,EACD,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GACpB,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,GACxC,SAAS,EACb,WAAW,EAAE,WAAW,GAAG,CAAC,MAAM,WAAW,CAAC,EAC9C,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,EACjE,OAAO,CAAC,EAAE,uBAAuB,uBAalC"}
1
+ {"version":3,"file":"toolResultStream.d.ts","names":[],"sources":["../../../src/core/tool/toolResultStream.ts"],"mappings":";;;;;iBA6IsB,wBAAA,CACpB,OAAA,EAAS,gBAAA,EACT,KAAA,EAAO,MAAA,SAAe,IAAA,eACtB,WAAA,EAAa,WAAA,EACb,KAAA,GAAQ,UAAA,UAAoB,OAAA,cAAqB,OAAA,YAAgB,OAAA,CAAA,gBAAA;AAAA,KAsEvD,uBAAA;EA1EU,2EA4EpB,gBAAA,IAAoB,UAAA,UAAoB,QAAA;EAExC,cAAA,IAAkB,UAAA,UAAoB,QAAA;AAAA;;;;;;;;;;;;;;iBAgBxB,gBAAA,CACd,KAAA,EACI,MAAA,SAAe,IAAA,WACR,MAAA,SAAe,IAAA,4BAE1B,WAAA,EAAa,WAAA,UAAqB,WAAA,GAClC,KAAA,GAAQ,UAAA,UAAoB,OAAA,cAAqB,OAAA,WACjD,OAAA,GAAU,uBAAA,GAAuB,mBAAA"}
@@ -1,156 +1,139 @@
1
1
  import { ToolResponse } from "./ToolResponse.js";
2
2
  import { ToolExecutionStream } from "./ToolExecutionStream.js";
3
+ //#region src/core/tool/toolResultStream.ts
3
4
  const isStandardSchemaV1 = (schema) => {
4
- return (typeof schema === "object" &&
5
- schema !== null &&
6
- "~standard" in schema &&
7
- schema["~standard"].version === 1);
5
+ return typeof schema === "object" && schema !== null && "~standard" in schema && schema["~standard"].version === 1;
8
6
  };
9
7
  function getToolResponse(tools, abortSignal, toolCall, human) {
10
- const tool = tools?.[toolCall.toolName];
11
- if (!tool?.execute)
12
- return undefined;
13
- const getResult = async (toolExecute) => {
14
- // Check if already aborted before starting
15
- if (abortSignal.aborted) {
16
- return new ToolResponse({
17
- result: "Tool execution was cancelled.",
18
- isError: true,
19
- });
20
- }
21
- let executeFn = toolExecute;
22
- if (isStandardSchemaV1(tool.parameters)) {
23
- let result = tool.parameters["~standard"].validate(toolCall.args);
24
- if (result instanceof Promise)
25
- result = await result;
26
- if (result.issues) {
27
- executeFn =
28
- tool.experimental_onSchemaValidationError ??
29
- (() => {
30
- throw new Error(`Function parameter validation failed. ${JSON.stringify(result.issues)}`);
31
- });
32
- }
33
- }
34
- // Create abort promise that resolves after 2 microtasks
35
- // This gives tools that handle abort a chance to win the race
36
- const abortPromise = new Promise((resolve) => {
37
- const onAbort = () => {
38
- queueMicrotask(() => {
39
- queueMicrotask(() => {
40
- resolve(new ToolResponse({
41
- result: "Tool execution was cancelled.",
42
- isError: true,
43
- }));
44
- });
45
- });
46
- };
47
- if (abortSignal.aborted) {
48
- onAbort();
49
- }
50
- else {
51
- abortSignal.addEventListener("abort", onAbort, { once: true });
52
- }
53
- });
54
- const executePromise = (async () => {
55
- const result = (await executeFn(toolCall.args, {
56
- toolCallId: toolCall.toolCallId,
57
- abortSignal,
58
- human: (payload) => human(toolCall.toolCallId, payload),
59
- }));
60
- const response = ToolResponse.toResponse(result);
61
- if (tool.toModelOutput &&
62
- !response.isError &&
63
- response.modelContent === undefined) {
64
- try {
65
- const modelContent = await tool.toModelOutput({
66
- toolCallId: toolCall.toolCallId,
67
- input: toolCall.args,
68
- output: response.result,
69
- });
70
- return new ToolResponse({
71
- result: response.result,
72
- artifact: response.artifact,
73
- isError: response.isError,
74
- messages: response.messages,
75
- modelContent,
76
- });
77
- }
78
- catch (e) {
79
- console.warn(`[assistant-stream] tool "${toolCall.toolName}" toModelOutput threw; falling back to default projection.`, e);
80
- }
81
- }
82
- return response;
83
- })();
84
- return Promise.race([executePromise, abortPromise]);
85
- };
86
- return getResult(tool.execute);
8
+ const tool = tools?.[toolCall.toolName];
9
+ if (!tool?.execute) return void 0;
10
+ const getResult = async (toolExecute) => {
11
+ if (abortSignal.aborted) return new ToolResponse({
12
+ result: "Tool execution was cancelled.",
13
+ isError: true
14
+ });
15
+ let executeFn = toolExecute;
16
+ if (isStandardSchemaV1(tool.parameters)) {
17
+ let result = tool.parameters["~standard"].validate(toolCall.args);
18
+ if (result instanceof Promise) result = await result;
19
+ if (result.issues) executeFn = tool.experimental_onSchemaValidationError ?? (() => {
20
+ throw new Error(`Function parameter validation failed. ${JSON.stringify(result.issues)}`);
21
+ });
22
+ }
23
+ const abortPromise = new Promise((resolve) => {
24
+ const onAbort = () => {
25
+ queueMicrotask(() => {
26
+ queueMicrotask(() => {
27
+ resolve(new ToolResponse({
28
+ result: "Tool execution was cancelled.",
29
+ isError: true
30
+ }));
31
+ });
32
+ });
33
+ };
34
+ if (abortSignal.aborted) onAbort();
35
+ else abortSignal.addEventListener("abort", onAbort, { once: true });
36
+ });
37
+ const executePromise = (async () => {
38
+ const result = await executeFn(toolCall.args, {
39
+ toolCallId: toolCall.toolCallId,
40
+ abortSignal,
41
+ human: (payload) => human(toolCall.toolCallId, payload)
42
+ });
43
+ const response = ToolResponse.toResponse(result);
44
+ if (tool.toModelOutput && !response.isError && response.modelContent === void 0) try {
45
+ const modelContent = await tool.toModelOutput({
46
+ toolCallId: toolCall.toolCallId,
47
+ input: toolCall.args,
48
+ output: response.result
49
+ });
50
+ return new ToolResponse({
51
+ result: response.result,
52
+ artifact: response.artifact,
53
+ isError: response.isError,
54
+ messages: response.messages,
55
+ modelContent
56
+ });
57
+ } catch (e) {
58
+ console.warn(`[assistant-stream] tool "${toolCall.toolName}" toModelOutput threw; falling back to default projection.`, e);
59
+ }
60
+ return response;
61
+ })();
62
+ return Promise.race([executePromise, abortPromise]);
63
+ };
64
+ return getResult(tool.execute);
87
65
  }
88
66
  function getToolStreamResponse(tools, abortSignal, reader, context, human) {
89
- tools?.[context.toolName]?.streamCall?.(reader, {
90
- toolCallId: context.toolCallId,
91
- abortSignal,
92
- human: (payload) => human(context.toolCallId, payload),
93
- });
67
+ tools?.[context.toolName]?.streamCall?.(reader, {
68
+ toolCallId: context.toolCallId,
69
+ abortSignal,
70
+ human: (payload) => human(context.toolCallId, payload)
71
+ });
94
72
  }
95
- export async function unstable_runPendingTools(message, tools, abortSignal, human) {
96
- const toolCallPromises = message.parts
97
- .filter((part) => part.type === "tool-call")
98
- .map(async (part) => {
99
- const promiseOrUndefined = getToolResponse(tools, abortSignal, part, human ??
100
- (async () => {
101
- throw new Error("Tool human input is not supported in this context");
102
- }));
103
- if (promiseOrUndefined) {
104
- const result = await promiseOrUndefined;
105
- return {
106
- toolCallId: part.toolCallId,
107
- result,
108
- };
109
- }
110
- return null;
111
- });
112
- const toolCallResults = (await Promise.all(toolCallPromises)).filter((result) => result !== null);
113
- if (toolCallResults.length === 0) {
114
- return message;
115
- }
116
- const toolCallResultsById = toolCallResults.reduce((acc, { toolCallId, result }) => {
117
- acc[toolCallId] = result;
118
- return acc;
119
- }, {});
120
- const updatedParts = message.parts.map((p) => {
121
- if (p.type === "tool-call") {
122
- const toolResponse = toolCallResultsById[p.toolCallId];
123
- if (toolResponse) {
124
- return {
125
- ...p,
126
- state: "result",
127
- ...(toolResponse.artifact !== undefined
128
- ? { artifact: toolResponse.artifact }
129
- : {}),
130
- ...(toolResponse.modelContent !== undefined
131
- ? { modelContent: toolResponse.modelContent }
132
- : {}),
133
- result: toolResponse.result,
134
- isError: toolResponse.isError,
135
- };
136
- }
137
- }
138
- return p;
139
- });
140
- return {
141
- ...message,
142
- parts: updatedParts,
143
- content: updatedParts,
144
- };
73
+ async function unstable_runPendingTools(message, tools, abortSignal, human) {
74
+ const toolCallPromises = message.parts.filter((part) => part.type === "tool-call").map(async (part) => {
75
+ const promiseOrUndefined = getToolResponse(tools, abortSignal, part, human ?? (async () => {
76
+ throw new Error("Tool human input is not supported in this context");
77
+ }));
78
+ if (promiseOrUndefined) {
79
+ const result = await promiseOrUndefined;
80
+ return {
81
+ toolCallId: part.toolCallId,
82
+ result
83
+ };
84
+ }
85
+ return null;
86
+ });
87
+ const toolCallResults = (await Promise.all(toolCallPromises)).filter((result) => result !== null);
88
+ if (toolCallResults.length === 0) return message;
89
+ const toolCallResultsById = toolCallResults.reduce((acc, { toolCallId, result }) => {
90
+ acc[toolCallId] = result;
91
+ return acc;
92
+ }, {});
93
+ const updatedParts = message.parts.map((p) => {
94
+ if (p.type === "tool-call") {
95
+ const toolResponse = toolCallResultsById[p.toolCallId];
96
+ if (toolResponse) return {
97
+ ...p,
98
+ state: "result",
99
+ ...toolResponse.artifact !== void 0 ? { artifact: toolResponse.artifact } : {},
100
+ ...toolResponse.modelContent !== void 0 ? { modelContent: toolResponse.modelContent } : {},
101
+ result: toolResponse.result,
102
+ isError: toolResponse.isError
103
+ };
104
+ }
105
+ return p;
106
+ });
107
+ return {
108
+ ...message,
109
+ parts: updatedParts,
110
+ content: updatedParts
111
+ };
145
112
  }
146
- export function toolResultStream(tools, abortSignal, human, options) {
147
- const toolsFn = typeof tools === "function" ? tools : () => tools;
148
- const abortSignalFn = typeof abortSignal === "function" ? abortSignal : () => abortSignal;
149
- return new ToolExecutionStream({
150
- execute: (toolCall) => getToolResponse(toolsFn(), abortSignalFn(), toolCall, human),
151
- streamCall: ({ reader, ...context }) => getToolStreamResponse(toolsFn(), abortSignalFn(), reader, context, human),
152
- onExecutionStart: options?.onExecutionStart,
153
- onExecutionEnd: options?.onExecutionEnd,
154
- });
113
+ /**
114
+ * Transform stream that executes frontend tools and appends tool results.
115
+ *
116
+ * The transform watches streamed tool-call arguments, runs the matching
117
+ * frontend tool once its arguments are complete, and emits a result chunk for
118
+ * the tool call. Backend and human tools pass through according to their tool
119
+ * definition.
120
+ *
121
+ * @param tools Tool registry or function returning the current registry.
122
+ * @param abortSignal Signal, or signal getter, used for the current run.
123
+ * @param human Callback used to resolve human-tool requests from UI input.
124
+ * @param options Optional execution lifecycle callbacks.
125
+ */
126
+ function toolResultStream(tools, abortSignal, human, options) {
127
+ const toolsFn = typeof tools === "function" ? tools : () => tools;
128
+ const abortSignalFn = typeof abortSignal === "function" ? abortSignal : () => abortSignal;
129
+ return new ToolExecutionStream({
130
+ execute: (toolCall) => getToolResponse(toolsFn(), abortSignalFn(), toolCall, human),
131
+ streamCall: ({ reader, ...context }) => getToolStreamResponse(toolsFn(), abortSignalFn(), reader, context, human),
132
+ onExecutionStart: options?.onExecutionStart,
133
+ onExecutionEnd: options?.onExecutionEnd
134
+ });
155
135
  }
136
+ //#endregion
137
+ export { toolResultStream, unstable_runPendingTools };
138
+
156
139
  //# sourceMappingURL=toolResultStream.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolResultStream.js","sourceRoot":"","sources":["../../../src/core/tool/toolResultStream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toolResultStream.js","names":[],"sources":["../../../src/core/tool/toolResultStream.ts"],"sourcesContent":["import type { Tool, ToolCallReader, ToolExecuteFunction } from \"./tool-types\";\nimport type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport { ToolResponse } from \"./ToolResponse\";\nimport { ToolExecutionStream } from \"./ToolExecutionStream\";\nimport type { AssistantMessage } from \"../utils/types\";\nimport type { ReadonlyJSONObject, ReadonlyJSONValue } from \"../../utils\";\n\nconst isStandardSchemaV1 = (\n schema: unknown,\n): schema is StandardSchemaV1<unknown> => {\n return (\n typeof schema === \"object\" &&\n schema !== null &&\n \"~standard\" in schema &&\n (schema as StandardSchemaV1<unknown>)[\"~standard\"].version === 1\n );\n};\n\nfunction getToolResponse(\n tools: Record<string, Tool> | undefined,\n abortSignal: AbortSignal,\n toolCall: {\n toolCallId: string;\n toolName: string;\n args: ReadonlyJSONObject;\n },\n human: (toolCallId: string, payload: unknown) => Promise<unknown>,\n) {\n const tool = tools?.[toolCall.toolName];\n if (!tool?.execute) return undefined;\n\n const getResult = async (\n toolExecute: ToolExecuteFunction<ReadonlyJSONObject, unknown>,\n ): Promise<ToolResponse<ReadonlyJSONValue>> => {\n // Check if already aborted before starting\n if (abortSignal.aborted) {\n return new ToolResponse({\n result: \"Tool execution was cancelled.\",\n isError: true,\n });\n }\n\n let executeFn = toolExecute;\n\n if (isStandardSchemaV1(tool.parameters)) {\n let result = tool.parameters[\"~standard\"].validate(toolCall.args);\n if (result instanceof Promise) result = await result;\n\n if (result.issues) {\n executeFn =\n tool.experimental_onSchemaValidationError ??\n (() => {\n throw new Error(\n `Function parameter validation failed. ${JSON.stringify(result.issues)}`,\n );\n });\n }\n }\n\n // Create abort promise that resolves after 2 microtasks\n // This gives tools that handle abort a chance to win the race\n const abortPromise = new Promise<ToolResponse<ReadonlyJSONValue>>(\n (resolve) => {\n const onAbort = () => {\n queueMicrotask(() => {\n queueMicrotask(() => {\n resolve(\n new ToolResponse({\n result: \"Tool execution was cancelled.\",\n isError: true,\n }),\n );\n });\n });\n };\n if (abortSignal.aborted) {\n onAbort();\n } else {\n abortSignal.addEventListener(\"abort\", onAbort, { once: true });\n }\n },\n );\n\n const executePromise = (async () => {\n const result = (await executeFn(toolCall.args, {\n toolCallId: toolCall.toolCallId,\n abortSignal,\n human: (payload: unknown) => human(toolCall.toolCallId, payload),\n })) as unknown as ReadonlyJSONValue;\n const response = ToolResponse.toResponse(result);\n if (\n tool.toModelOutput &&\n !response.isError &&\n response.modelContent === undefined\n ) {\n try {\n const modelContent = await tool.toModelOutput({\n toolCallId: toolCall.toolCallId,\n input: toolCall.args,\n output: response.result,\n });\n return new ToolResponse({\n result: response.result,\n artifact: response.artifact,\n isError: response.isError,\n messages: response.messages,\n modelContent,\n });\n } catch (e) {\n console.warn(\n `[assistant-stream] tool \"${toolCall.toolName}\" toModelOutput threw; falling back to default projection.`,\n e,\n );\n }\n }\n return response;\n })();\n\n return Promise.race([executePromise, abortPromise]);\n };\n\n return getResult(tool.execute);\n}\n\nfunction getToolStreamResponse(\n tools: Record<string, Tool> | undefined,\n abortSignal: AbortSignal,\n reader: ToolCallReader<any, ReadonlyJSONValue>,\n context: {\n toolCallId: string;\n toolName: string;\n },\n human: (toolCallId: string, payload: unknown) => Promise<unknown>,\n) {\n tools?.[context.toolName]?.streamCall?.(reader, {\n toolCallId: context.toolCallId,\n abortSignal,\n human: (payload: unknown) => human(context.toolCallId, payload),\n });\n}\n\nexport async function unstable_runPendingTools(\n message: AssistantMessage,\n tools: Record<string, Tool> | undefined,\n abortSignal: AbortSignal,\n human: (toolCallId: string, payload: unknown) => Promise<unknown>,\n) {\n const toolCallPromises = message.parts\n .filter((part) => part.type === \"tool-call\")\n .map(async (part) => {\n const promiseOrUndefined = getToolResponse(\n tools,\n abortSignal,\n part,\n human ??\n (async () => {\n throw new Error(\n \"Tool human input is not supported in this context\",\n );\n }),\n );\n if (promiseOrUndefined) {\n const result = await promiseOrUndefined;\n return {\n toolCallId: part.toolCallId,\n result,\n };\n }\n return null;\n });\n\n const toolCallResults = (await Promise.all(toolCallPromises)).filter(\n (result) => result !== null,\n ) as { toolCallId: string; result: ToolResponse<ReadonlyJSONValue> }[];\n\n if (toolCallResults.length === 0) {\n return message;\n }\n\n const toolCallResultsById = toolCallResults.reduce(\n (acc, { toolCallId, result }) => {\n acc[toolCallId] = result;\n return acc;\n },\n {} as Record<string, ToolResponse<ReadonlyJSONValue>>,\n );\n\n const updatedParts = message.parts.map((p) => {\n if (p.type === \"tool-call\") {\n const toolResponse = toolCallResultsById[p.toolCallId];\n if (toolResponse) {\n return {\n ...p,\n state: \"result\" as const,\n ...(toolResponse.artifact !== undefined\n ? { artifact: toolResponse.artifact }\n : {}),\n ...(toolResponse.modelContent !== undefined\n ? { modelContent: toolResponse.modelContent }\n : {}),\n result: toolResponse.result as ReadonlyJSONValue,\n isError: toolResponse.isError,\n };\n }\n }\n return p;\n });\n\n return {\n ...message,\n parts: updatedParts,\n content: updatedParts,\n };\n}\n\nexport type ToolResultStreamOptions = {\n /** Called immediately before a frontend tool's `execute` function runs. */\n onExecutionStart?: (toolCallId: string, toolName: string) => void;\n /** Called after frontend tool execution finishes or fails. */\n onExecutionEnd?: (toolCallId: string, toolName: string) => void;\n};\n\n/**\n * Transform stream that executes frontend tools and appends tool results.\n *\n * The transform watches streamed tool-call arguments, runs the matching\n * frontend tool once its arguments are complete, and emits a result chunk for\n * the tool call. Backend and human tools pass through according to their tool\n * definition.\n *\n * @param tools Tool registry or function returning the current registry.\n * @param abortSignal Signal, or signal getter, used for the current run.\n * @param human Callback used to resolve human-tool requests from UI input.\n * @param options Optional execution lifecycle callbacks.\n */\nexport function toolResultStream(\n tools:\n | Record<string, Tool>\n | (() => Record<string, Tool> | undefined)\n | undefined,\n abortSignal: AbortSignal | (() => AbortSignal),\n human: (toolCallId: string, payload: unknown) => Promise<unknown>,\n options?: ToolResultStreamOptions,\n) {\n const toolsFn = typeof tools === \"function\" ? tools : () => tools;\n const abortSignalFn =\n typeof abortSignal === \"function\" ? abortSignal : () => abortSignal;\n return new ToolExecutionStream({\n execute: (toolCall) =>\n getToolResponse(toolsFn(), abortSignalFn(), toolCall, human),\n streamCall: ({ reader, ...context }) =>\n getToolStreamResponse(toolsFn(), abortSignalFn(), reader, context, human),\n onExecutionStart: options?.onExecutionStart,\n onExecutionEnd: options?.onExecutionEnd,\n });\n}\n"],"mappings":"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"}
@@ -1,23 +1,12 @@
1
+ //#region src/core/tool/type-path-utils.d.ts
1
2
  type AsNumber<K> = K extends `${infer N extends number}` ? N | K : never;
2
3
  type TupleIndex<T extends readonly any[]> = Exclude<keyof T, keyof any[]>;
3
4
  type ObjectKey<T> = keyof T & (string | number);
4
- export type TypePath<T> = [] | (0 extends 1 & T ? any[] : T extends object ? T extends readonly any[] ? number extends T["length"] ? {
5
- [K in TupleIndex<T>]: [AsNumber<K>, ...TypePath<T[K]>];
6
- }[TupleIndex<T>] : [
7
- number,
8
- ...TypePath<T[number]>
9
- ] : {
10
- [K in ObjectKey<T>]: [K, ...TypePath<T[K]>];
11
- }[ObjectKey<T>] : [
12
- ]);
13
- export type TypeAtPath<T, P extends readonly any[]> = P extends [
14
- infer Head,
15
- ...infer Rest
16
- ] ? Head extends keyof T ? TypeAtPath<T[Head], Rest> : never : T;
17
- export type DeepPartial<T> = T extends readonly any[] ? readonly DeepPartial<T[number]>[] : T extends {
18
- [key: string]: any;
19
- } ? {
20
- readonly [K in keyof T]?: DeepPartial<T[K]>;
21
- } : T;
22
- export {};
5
+ type TypePath<T> = [] | (0 extends 1 & T ? any[] : T extends object ? T extends readonly any[] ? number extends T["length"] ? { [K in TupleIndex<T>]: [AsNumber<K>, ...TypePath<T[K]>] }[TupleIndex<T>] : [number, ...TypePath<T[number]>] : { [K in ObjectKey<T>]: [K, ...TypePath<T[K]>] }[ObjectKey<T>] : []);
6
+ type TypeAtPath<T, P extends readonly any[]> = P extends [infer Head, ...infer Rest] ? Head extends keyof T ? TypeAtPath<T[Head], Rest> : never : T;
7
+ type DeepPartial<T> = T extends readonly any[] ? readonly DeepPartial<T[number]>[] : T extends {
8
+ [key: string]: any;
9
+ } ? { readonly [K in keyof T]?: DeepPartial<T[K]> } : T;
10
+ //#endregion
11
+ export { DeepPartial, TypeAtPath, TypePath };
23
12
  //# sourceMappingURL=type-path-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"type-path-utils.d.ts","sourceRoot":"","sources":["../../../src/core/tool/type-path-utils.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACzE,KAAK,UAAU,CAAC,CAAC,SAAS,SAAS,GAAG,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC;AAC1E,KAAK,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AAEhD,MAAM,MAAM,QAAQ,CAAC,CAAC,IAClB,EAAE,GACF,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GACZ,GAAG,EAAE,GACL,CAAC,SAAS,MAAM,GACd,CAAC,SAAS,SAAS,GAAG,EAAE,GACtB,MAAM,SAAS,CAAC,CAAC,QAAQ,CAAC,GAExB;KACG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACvD,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAEhB;IAAC,MAAM;IAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;CAAC,GAElC;KAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAE/D;CAAE,CAAC,CAAC;AAEd,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,SAAS,SAAS,GAAG,EAAE,IAAI,CAAC,SAAS;IAC9D,MAAM,IAAI;IACV,GAAG,MAAM,IAAI;CACd,GACG,IAAI,SAAS,MAAM,CAAC,GAClB,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,GACzB,KAAK,GACP,CAAC,CAAC;AAEN,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,EAAE,GACjD,SAAS,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GACjC,CAAC,SAAS;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAC9B;IAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAC/C,CAAC,CAAC"}
1
+ {"version":3,"file":"type-path-utils.d.ts","names":[],"sources":["../../../src/core/tool/type-path-utils.ts"],"mappings":";KAAK,QAAA,MAAc,CAAA,uCAAwC,CAAA,GAAI,CAAA;AAAA,KAC1D,UAAA,6BAAuC,OAAO,OAAO,CAAA;AAAA,KACrD,SAAA,YAAqB,CAAC;AAAA,KAEf,QAAA,0BAEO,CAAA,WAEX,CAAA,kBACE,CAAA,yCACiB,CAAA,qBAGL,UAAA,CAAW,CAAA,KAAM,QAAA,CAAS,CAAA,MAAO,QAAA,CAAS,CAAA,CAAE,CAAA,MAClD,UAAA,CAAW,CAAA,iBAED,QAAA,CAAS,CAAA,qBAEf,SAAA,CAAU,CAAA,KAAM,CAAA,KAAM,QAAA,CAAS,CAAA,CAAE,CAAA,MAAO,SAAA,CAAU,CAAA;AAAA,KAI1D,UAAA,gCAA0C,CAAA,uCAIlD,IAAA,eAAmB,CAAA,GACjB,UAAA,CAAW,CAAA,CAAE,IAAA,GAAO,IAAA,YAEtB,CAAA;AAAA,KAEQ,WAAA,MAAiB,CAAA,mCAChB,WAAA,CAAY,CAAA,cACrB,CAAA;EAAA,CAAa,GAAA;AAAA,2BACY,CAAA,IAAK,WAAA,CAAY,CAAA,CAAE,CAAA,OAC1C,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=type-path-utils.js.map
@@ -1,5 +1,8 @@
1
- export declare class Counter {
2
- value: number;
3
- up(): number;
1
+ //#region src/core/utils/Counter.d.ts
2
+ declare class Counter {
3
+ value: number;
4
+ up(): number;
4
5
  }
6
+ //#endregion
7
+ export { Counter };
5
8
  //# sourceMappingURL=Counter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Counter.d.ts","sourceRoot":"","sources":["../../../src/core/utils/Counter.ts"],"names":[],"mappings":"AAAA,qBAAa,OAAO;IACX,KAAK,SAAM;IAElB,EAAE;CAGH"}
1
+ {"version":3,"file":"Counter.d.ts","names":[],"sources":["../../../src/core/utils/Counter.ts"],"mappings":";cAAa,OAAA;EACJ,KAAA;EAEP,EAAE,CAAA;AAAA"}
@@ -1,7 +1,11 @@
1
- export class Counter {
2
- value = -1;
3
- up() {
4
- return ++this.value;
5
- }
6
- }
1
+ //#region src/core/utils/Counter.ts
2
+ var Counter = class {
3
+ value = -1;
4
+ up() {
5
+ return ++this.value;
6
+ }
7
+ };
8
+ //#endregion
9
+ export { Counter };
10
+
7
11
  //# sourceMappingURL=Counter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Counter.js","sourceRoot":"","sources":["../../../src/core/utils/Counter.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,OAAO;IACX,KAAK,GAAG,CAAC,CAAC,CAAC;IAElB,EAAE;QACA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;CACF"}
1
+ {"version":3,"file":"Counter.js","names":[],"sources":["../../../src/core/utils/Counter.ts"],"sourcesContent":["export class Counter {\n public value = -1;\n\n up() {\n return ++this.value;\n }\n}\n"],"mappings":";AAAA,IAAa,UAAb,MAAqB;CACnB,QAAe;CAEf,KAAK;EACH,OAAO,EAAE,KAAK;CAChB;AACF"}
@@ -1,2 +1,5 @@
1
- export declare const generateId: (size?: number) => string;
1
+ //#region src/core/utils/generateId.d.ts
2
+ declare const generateId: (size?: number) => string;
3
+ //#endregion
4
+ export { generateId };
2
5
  //# sourceMappingURL=generateId.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateId.d.ts","sourceRoot":"","sources":["../../../src/core/utils/generateId.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,2BAGtB,CAAC"}
1
+ {"version":3,"file":"generateId.d.ts","names":[],"sources":["../../../src/core/utils/generateId.ts"],"mappings":";cAEa,UAAA,GAAU,IAAA"}
@@ -1,3 +1,7 @@
1
1
  import { customAlphabet } from "nanoid/non-secure";
2
- export const generateId = customAlphabet("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", 7);
2
+ //#region src/core/utils/generateId.ts
3
+ const generateId = customAlphabet("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", 7);
4
+ //#endregion
5
+ export { generateId };
6
+
3
7
  //# sourceMappingURL=generateId.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateId.js","sourceRoot":"","sources":["../../../src/core/utils/generateId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,CACtC,gEAAgE,EAChE,CAAC,CACF,CAAC"}
1
+ {"version":3,"file":"generateId.js","names":[],"sources":["../../../src/core/utils/generateId.ts"],"sourcesContent":["import { customAlphabet } from \"nanoid/non-secure\";\n\nexport const generateId = customAlphabet(\n \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\",\n 7,\n);\n"],"mappings":";;AAEA,MAAa,aAAa,eACxB,kEACA,CACF"}
@@ -1,20 +1,24 @@
1
- import type { AssistantStreamChunk, PartInit } from "../../AssistantStreamChunk.js";
1
+ import { AssistantStreamChunk, PartInit } from "../../AssistantStreamChunk.js";
2
+
3
+ //#region src/core/utils/stream/AssistantMetaTransformStream.d.ts
2
4
  /**
3
5
  * For chunk types that are associated with a part,
4
6
  * we require a non‑nullable meta field.
5
7
  */
6
- export type AssistantMetaStreamChunk = (AssistantStreamChunk & {
7
- type: "text-delta" | "part-finish";
8
- meta: PartInit;
8
+ type AssistantMetaStreamChunk = (AssistantStreamChunk & {
9
+ type: "text-delta" | "part-finish";
10
+ meta: PartInit;
9
11
  }) | (AssistantStreamChunk & {
10
- type: "result" | "tool-call-args-text-finish";
11
- meta: PartInit & {
12
- type: "tool-call";
13
- };
12
+ type: "result" | "tool-call-args-text-finish";
13
+ meta: PartInit & {
14
+ type: "tool-call";
15
+ };
14
16
  }) | (AssistantStreamChunk & {
15
- type: Exclude<AssistantStreamChunk["type"], "text-delta" | "result" | "tool-call-args-text-finish" | "part-finish">;
17
+ type: Exclude<AssistantStreamChunk["type"], "text-delta" | "result" | "tool-call-args-text-finish" | "part-finish">;
16
18
  });
17
- export declare class AssistantMetaTransformStream extends TransformStream<AssistantStreamChunk, AssistantMetaStreamChunk> {
18
- constructor();
19
+ declare class AssistantMetaTransformStream extends TransformStream<AssistantStreamChunk, AssistantMetaStreamChunk> {
20
+ constructor();
19
21
  }
22
+ //#endregion
23
+ export { AssistantMetaStreamChunk, AssistantMetaTransformStream };
20
24
  //# sourceMappingURL=AssistantMetaTransformStream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantMetaTransformStream.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/stream/AssistantMetaTransformStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,QAAQ,EACT,sCAAmC;AAEpC;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAChC,CAAC,oBAAoB,GAAG;IACtB,IAAI,EAAE,YAAY,GAAG,aAAa,CAAC;IACnC,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC,GACF,CAAC,oBAAoB,GAAG;IACtB,IAAI,EAAE,QAAQ,GAAG,4BAA4B,CAAC;IAC9C,IAAI,EAAE,QAAQ,GAAG;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC;CACxC,CAAC,GACF,CAAC,oBAAoB,GAAG;IACtB,IAAI,EAAE,OAAO,CACX,oBAAoB,CAAC,MAAM,CAAC,EAC5B,YAAY,GAAG,QAAQ,GAAG,4BAA4B,GAAG,aAAa,CACvE,CAAC;CACH,CAAC,CAAC;AACP,qBAAa,4BAA6B,SAAQ,eAAe,CAC/D,oBAAoB,EACpB,wBAAwB,CACzB;;CAiDA"}
1
+ {"version":3,"file":"AssistantMetaTransformStream.d.ts","names":[],"sources":["../../../../src/core/utils/stream/AssistantMetaTransformStream.ts"],"mappings":";;;;;AASA;;KAAY,wBAAA,IACP,oBAAA;EACC,IAAA;EACA,IAAA,EAAM,QAAA;AAAA,MAEP,oBAAA;EACC,IAAA;EACA,IAAA,EAAM,QAAA;IAAa,IAAA;EAAA;AAAA,MAEpB,oBAAA;EACC,IAAA,EAAM,OAAA,CACJ,oBAAA;AAAA;AAAA,cAIK,4BAAA,SAAqC,eAAA,CAChD,oBAAA,EACA,wBAAA"}