assistant-stream 0.3.15 → 0.3.17

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 (234) 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 +176 -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/src/core/modules/assistant-stream.test.ts +104 -0
  219. package/src/core/modules/assistant-stream.ts +13 -4
  220. package/dist/core/AssistantStreamChunk.js.map +0 -1
  221. package/dist/core/object/types.js.map +0 -1
  222. package/dist/core/serialization/ui-message-stream/chunk-types.js.map +0 -1
  223. package/dist/core/tool/tool-types.js.map +0 -1
  224. package/dist/core/tool/type-path-utils.js.map +0 -1
  225. package/dist/core/utils/stream/UnderlyingReadable.js.map +0 -1
  226. package/dist/core/utils/types.js.map +0 -1
  227. package/dist/index.d.ts.map +0 -1
  228. package/dist/index.js.map +0 -1
  229. package/dist/resumable/index.d.ts.map +0 -1
  230. package/dist/resumable/index.js.map +0 -1
  231. package/dist/resumable/types.js.map +0 -1
  232. package/dist/utils/json/json-value.js.map +0 -1
  233. package/dist/utils.d.ts.map +0 -1
  234. package/dist/utils.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-types.d.ts","sourceRoot":"","sources":["../../../../src/core/serialization/ui-message-stream/chunk-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,0CAAuC;AAExE,KAAK,YAAY,GACb,MAAM,GACN,QAAQ,GACR,gBAAgB,GAChB,YAAY,GACZ,OAAO,GACP,OAAO,GACP,SAAS,CAAC;AAEd,KAAK,KAAK,GAAG;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACzB;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE;QAAE,UAAU,EAAE,KAAK,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACxE,GACD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAC1D;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,GACD;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACzB;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B,GACD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1C;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,KAAK,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;CACtB,GACD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,YAAY,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACpC,wBAAwB,CAAC;AAE7B,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,QAAQ,MAAM,EAAE,CAAC;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,iBAAiB,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC"}
1
+ {"version":3,"file":"chunk-types.d.ts","names":[],"sources":["../../../../src/core/serialization/ui-message-stream/chunk-types.ts"],"mappings":";;;KAEK,YAAA;AAAA,KASA,KAAA;EACH,WAAA;EACA,YAAY;AAAA;AAAA,KAGF,oBAAA;EACN,IAAA;EAAe,SAAA;AAAA;EACf,IAAA;EAAoB,EAAA;AAAA;EACpB,IAAA;EAAoB,SAAA;AAAA;EACpB,IAAA;AAAA;EACA,IAAA;EAAyB,EAAA;AAAA;EACzB,IAAA;EAAyB,KAAA;AAAA;EACzB,IAAA;AAAA;EAEA,IAAA;EACA,MAAA;IAAU,UAAA;IAAmB,EAAA;IAAY,GAAA;IAAa,KAAA;EAAA;AAAA;EAEtD,IAAA;EAAc,IAAA;IAAQ,QAAA;IAAkB,IAAA;EAAA;AAAA;EAExC,IAAA;EACA,EAAA;EACA,UAAA;EACA,QAAA;AAAA;EAEA,IAAA;EAAyB,QAAA;AAAA;EACzB,IAAA;AAAA;EAEA,IAAA;EACA,UAAA;EACA,MAAA,EAAQ,iBAAA;EACR,OAAA;EACA,QAAA,GAAW,iBAAA;AAAA;EAEX,IAAA;EAAoB,SAAA;AAAA;EAEpB,IAAA;EACA,YAAA,EAAc,YAAA;EACd,KAAA,EAAO,KAAA;EACP,WAAA;AAAA;EAEA,IAAA;EAAgB,YAAA,EAAc,YAAA;EAAc,KAAA,EAAO,KAAA;AAAA;EACnD,IAAA;EAAe,SAAA;AAAA,IACjB,wBAAA;AAAA,KAEQ,wBAAA;EACV,IAAA;EACA,EAAA;EACA,IAAA,EAAM,iBAAiB;EACvB,SAAA;AAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=chunk-types.js.map
@@ -1,34 +1,38 @@
1
- import type { ToolCallArgsReader, ToolCallReader, ToolCallResponseReader } from "./tool-types.js";
2
- import type { DeepPartial, TypeAtPath, TypePath } from "./type-path-utils.js";
3
- import type { ToolResponse } from "./ToolResponse.js";
4
- import type { AsyncIterableStream, ReadonlyJSONObject, ReadonlyJSONValue } from "../../utils.js";
5
- export declare class ToolCallArgsReaderImpl<T extends ReadonlyJSONObject> implements ToolCallArgsReader<T> {
6
- private argTextDeltas;
7
- private handles;
8
- private args;
9
- constructor(argTextDeltas: ReadableStream<string>);
10
- private processStream;
11
- get<PathT extends TypePath<T>>(...fieldPath: PathT): Promise<TypeAtPath<T, PathT>>;
12
- streamValues<PathT extends TypePath<T>>(...fieldPath: PathT): AsyncIterableStream<DeepPartial<TypeAtPath<T, PathT>>>;
13
- streamText<PathT extends TypePath<T>>(...fieldPath: PathT): TypeAtPath<T, PathT> extends string & infer U ? AsyncIterableStream<U> : never;
14
- forEach<PathT extends TypePath<T>>(...fieldPath: PathT): TypeAtPath<T, PathT> extends Array<infer U> ? AsyncIterableStream<U> : never;
1
+ import { ReadonlyJSONObject, ReadonlyJSONValue } from "../../utils/json/json-value.js";
2
+ import { AsyncIterableStream } from "../../utils/AsyncIterableStream.js";
3
+ import { DeepPartial, TypeAtPath, TypePath } from "./type-path-utils.js";
4
+ import { ToolCallArgsReader, ToolCallReader, ToolCallResponseReader } from "./tool-types.js";
5
+ import { ToolResponse } from "./ToolResponse.js";
6
+ //#region src/core/tool/ToolCallReader.d.ts
7
+ declare class ToolCallArgsReaderImpl<T extends ReadonlyJSONObject> implements ToolCallArgsReader<T> {
8
+ private argTextDeltas;
9
+ private handles;
10
+ private args;
11
+ constructor(argTextDeltas: ReadableStream<string>);
12
+ private processStream;
13
+ get<PathT extends TypePath<T>>(...fieldPath: PathT): Promise<TypeAtPath<T, PathT>>;
14
+ streamValues<PathT extends TypePath<T>>(...fieldPath: PathT): AsyncIterableStream<DeepPartial<TypeAtPath<T, PathT>>>;
15
+ streamText<PathT extends TypePath<T>>(...fieldPath: PathT): TypeAtPath<T, PathT> extends string & infer U ? AsyncIterableStream<U> : never;
16
+ forEach<PathT extends TypePath<T>>(...fieldPath: PathT): TypeAtPath<T, PathT> extends Array<infer U> ? AsyncIterableStream<U> : never;
15
17
  }
16
- export declare class ToolCallResponseReaderImpl<TResult extends ReadonlyJSONValue> implements ToolCallResponseReader<TResult> {
17
- private readonly promise;
18
- constructor(promise: Promise<ToolResponse<TResult>>);
19
- get(): Promise<ToolResponse<TResult>>;
18
+ declare class ToolCallResponseReaderImpl<TResult extends ReadonlyJSONValue> implements ToolCallResponseReader<TResult> {
19
+ private readonly promise;
20
+ constructor(promise: Promise<ToolResponse<TResult>>);
21
+ get(): Promise<ToolResponse<TResult>>;
20
22
  }
21
- export declare class ToolCallReaderImpl<TArgs extends ReadonlyJSONObject, TResult extends ReadonlyJSONValue> implements ToolCallReader<TArgs, TResult> {
22
- readonly args: ToolCallArgsReaderImpl<TArgs>;
23
- readonly response: ToolCallResponseReaderImpl<TResult>;
24
- private readonly writable;
25
- private readonly resolve;
26
- argsText: string;
27
- constructor();
28
- appendArgsTextDelta(text: string): Promise<void>;
29
- setResponse(value: ToolResponse<TResult>): void;
30
- result: {
31
- get: () => Promise<TResult>;
32
- };
23
+ declare class ToolCallReaderImpl<TArgs extends ReadonlyJSONObject, TResult extends ReadonlyJSONValue> implements ToolCallReader<TArgs, TResult> {
24
+ readonly args: ToolCallArgsReaderImpl<TArgs>;
25
+ readonly response: ToolCallResponseReaderImpl<TResult>;
26
+ private readonly writable;
27
+ private readonly resolve;
28
+ argsText: string;
29
+ constructor();
30
+ appendArgsTextDelta(text: string): Promise<void>;
31
+ setResponse(value: ToolResponse<TResult>): void;
32
+ result: {
33
+ get: () => Promise<TResult>;
34
+ };
33
35
  }
36
+ //#endregion
37
+ export { ToolCallArgsReaderImpl, ToolCallReaderImpl, ToolCallResponseReaderImpl };
34
38
  //# sourceMappingURL=ToolCallReader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToolCallReader.d.ts","sourceRoot":"","sources":["../../../src/core/tool/ToolCallReader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACvB,wBAAqB;AACtB,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,6BAA0B;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,0BAAuB;AAEnD,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EAClB,uBAAoB;AAyNrB,qBAAa,sBAAsB,CAAC,CAAC,SAAS,kBAAkB,CAC9D,YAAW,kBAAkB,CAAC,CAAC,CAAC;IAEhC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,IAAI,CAAuC;gBAEvC,aAAa,EAAE,cAAc,CAAC,MAAM,CAAC;YAKnC,aAAa;IA6B3B,GAAG,CAAC,KAAK,SAAS,QAAQ,CAAC,CAAC,CAAC,EAC3B,GAAG,SAAS,EAAE,KAAK,GAClB,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IA4BhC,YAAY,CAAC,KAAK,SAAS,QAAQ,CAAC,CAAC,CAAC,EACpC,GAAG,SAAS,EAAE,KAAK,GAClB,mBAAmB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IA2BzD,UAAU,CAAC,KAAK,SAAS,QAAQ,CAAC,CAAC,CAAC,EAClC,GAAG,SAAS,EAAE,KAAK,GAClB,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,GAC5C,mBAAmB,CAAC,CAAC,CAAC,GACtB,KAAK;IA2BT,OAAO,CAAC,KAAK,SAAS,QAAQ,CAAC,CAAC,CAAC,EAC/B,GAAG,SAAS,EAAE,KAAK,GAClB,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAC1C,mBAAmB,CAAC,CAAC,CAAC,GACtB,KAAK;CA0BV;AAED,qBAAa,0BAA0B,CAAC,OAAO,SAAS,iBAAiB,CACvE,YAAW,sBAAsB,CAAC,OAAO,CAAC;IAE9B,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAE7D,GAAG;CAGX;AAED,qBAAa,kBAAkB,CAC7B,KAAK,SAAS,kBAAkB,EAChC,OAAO,SAAS,iBAAiB,CACjC,YAAW,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC;IAEzC,SAAgB,IAAI,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACpD,SAAgB,QAAQ,EAAE,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAC9D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;IAE1D,QAAQ,EAAE,MAAM,CAAM;;IAYvB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAatD,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI;IAI/C,MAAM;;MAKJ;CACH"}
1
+ {"version":3,"file":"ToolCallReader.d.ts","names":[],"sources":["../../../src/core/tool/ToolCallReader.ts"],"mappings":";;;;;;cA0Oa,sBAAA,WAAiC,kBAAA,aACjC,kBAAA,CAAmB,CAAA;EAAA,QAEtB,aAAA;EAAA,QACA,OAAA;EAAA,QACA,IAAA;cAEI,aAAA,EAAe,cAAA;EAAA,QAKb,aAAA;EA6Bd,GAAA,eAAkB,QAAA,CAAS,CAAA,EAAA,CAAA,GACtB,SAAA,EAAW,KAAA,GACb,OAAA,CAAQ,UAAA,CAAW,CAAA,EAAG,KAAA;EA4BzB,YAAA,eAA2B,QAAA,CAAS,CAAA,EAAA,CAAA,GAC/B,SAAA,EAAW,KAAA,GACb,mBAAA,CAAoB,WAAA,CAAY,UAAA,CAAW,CAAA,EAAG,KAAA;EA2BjD,UAAA,eAAyB,QAAA,CAAS,CAAA,EAAA,CAAA,GAC7B,SAAA,EAAW,KAAA,GACb,UAAA,CAAW,CAAA,EAAG,KAAA,6BACb,mBAAA,CAAoB,CAAA;EA4BxB,OAAA,eAAsB,QAAA,CAAS,CAAA,EAAA,CAAA,GAC1B,SAAA,EAAW,KAAA,GACb,UAAA,CAAW,CAAA,EAAG,KAAA,UAAe,KAAA,YAC5B,mBAAA,CAAoB,CAAA;AAAA;AAAA,cA6Bb,0BAAA,iBAA2C,iBAAA,aAC3C,sBAAA,CAAuB,OAAA;EAAA,iBAEL,OAAA;cAAA,OAAA,EAAS,OAAA,CAAQ,YAAA,CAAa,OAAA;EAEpD,GAAA,CAAA,GAAG,OAAA,CAAA,YAAA,CAAA,OAAA;AAAA;AAAA,cAKC,kBAAA,eACG,kBAAA,kBACE,iBAAA,aACL,cAAA,CAAe,KAAA,EAAO,OAAA;EAAA,SAEjB,IAAA,EAAM,sBAAA,CAAuB,KAAA;EAAA,SAC7B,QAAA,EAAU,0BAAA,CAA2B,OAAA;EAAA,iBACpC,QAAA;EAAA,iBACA,OAAA;EAEV,QAAA;;EAYD,mBAAA,CAAoB,IAAA,WAAe,OAAA;EAazC,WAAA,CAAY,KAAA,EAAO,YAAA,CAAa,OAAA;EAIhC,MAAA"}
@@ -1,322 +1,269 @@
1
1
  import { promiseWithResolvers } from "../../utils/promiseWithResolvers.js";
2
- import { parsePartialJsonObject, getPartialJsonObjectFieldState, } from "../../utils/json/parse-partial-json-object.js";
2
+ import { getPartialJsonObjectFieldState, parsePartialJsonObject } from "../../utils/json/parse-partial-json-object.js";
3
3
  import { asAsyncIterableStream } from "../../utils/AsyncIterableStream.js";
4
- // TODO: remove dispose
4
+ //#region src/core/tool/ToolCallReader.ts
5
5
  function getField(obj, fieldPath) {
6
- let current = obj;
7
- for (const key of fieldPath) {
8
- if (current === undefined || current === null) {
9
- return undefined;
10
- }
11
- current = current[key];
12
- }
13
- return current;
14
- }
15
- class GetHandle {
16
- resolve;
17
- reject;
18
- disposed = false;
19
- fieldPath;
20
- constructor(resolve, reject, fieldPath) {
21
- this.resolve = resolve;
22
- this.reject = reject;
23
- this.fieldPath = fieldPath;
24
- }
25
- update(args) {
26
- if (this.disposed)
27
- return;
28
- try {
29
- // Check if the field is complete
30
- if (getPartialJsonObjectFieldState(args, this.fieldPath) === "complete") {
31
- const value = getField(args, this.fieldPath);
32
- if (value !== undefined) {
33
- this.resolve(value);
34
- this.dispose();
35
- }
36
- }
37
- }
38
- catch (e) {
39
- this.reject(e);
40
- this.dispose();
41
- }
42
- }
43
- dispose() {
44
- this.disposed = true;
45
- }
46
- }
47
- class StreamValuesHandle {
48
- controller;
49
- disposed = false;
50
- fieldPath;
51
- constructor(controller, fieldPath) {
52
- this.controller = controller;
53
- this.fieldPath = fieldPath;
54
- }
55
- update(args) {
56
- if (this.disposed)
57
- return;
58
- try {
59
- const value = getField(args, this.fieldPath);
60
- if (value !== undefined) {
61
- this.controller.enqueue(value);
62
- }
63
- // Check if the field is complete, if so close the stream
64
- if (getPartialJsonObjectFieldState(args, this.fieldPath) === "complete") {
65
- this.controller.close();
66
- this.dispose();
67
- }
68
- }
69
- catch (e) {
70
- this.controller.error(e);
71
- this.dispose();
72
- }
73
- }
74
- dispose() {
75
- this.disposed = true;
76
- }
77
- }
78
- class StreamTextHandle {
79
- controller;
80
- disposed = false;
81
- fieldPath;
82
- lastValue = undefined;
83
- constructor(controller, fieldPath) {
84
- this.controller = controller;
85
- this.fieldPath = fieldPath;
86
- }
87
- update(args) {
88
- if (this.disposed)
89
- return;
90
- try {
91
- const value = getField(args, this.fieldPath);
92
- if (value !== undefined && typeof value === "string") {
93
- const delta = value.substring(this.lastValue?.length || 0);
94
- this.lastValue = value;
95
- this.controller.enqueue(delta);
96
- }
97
- // Check if the field is complete, if so close the stream
98
- if (getPartialJsonObjectFieldState(args, this.fieldPath) === "complete") {
99
- this.controller.close();
100
- this.dispose();
101
- }
102
- }
103
- catch (e) {
104
- this.controller.error(e);
105
- this.dispose();
106
- }
107
- }
108
- dispose() {
109
- this.disposed = true;
110
- }
111
- }
112
- class ForEachHandle {
113
- controller;
114
- disposed = false;
115
- fieldPath;
116
- processedIndexes = new Set();
117
- constructor(controller, fieldPath) {
118
- this.controller = controller;
119
- this.fieldPath = fieldPath;
120
- }
121
- update(args) {
122
- if (this.disposed)
123
- return;
124
- try {
125
- const array = getField(args, this.fieldPath);
126
- if (!Array.isArray(array)) {
127
- return;
128
- }
129
- // Check each array element and emit completed ones that haven't been processed
130
- for (let i = 0; i < array.length; i++) {
131
- if (!this.processedIndexes.has(i)) {
132
- const elementPath = [...this.fieldPath, i];
133
- if (getPartialJsonObjectFieldState(args, elementPath) === "complete") {
134
- this.controller.enqueue(array[i]);
135
- this.processedIndexes.add(i);
136
- }
137
- }
138
- }
139
- // Check if the entire array is complete
140
- if (getPartialJsonObjectFieldState(args, this.fieldPath) === "complete") {
141
- this.controller.close();
142
- this.dispose();
143
- }
144
- }
145
- catch (e) {
146
- this.controller.error(e);
147
- this.dispose();
148
- }
149
- }
150
- dispose() {
151
- this.disposed = true;
152
- }
153
- }
154
- // Implementation of ToolCallReader that uses stream of partial JSON
155
- export class ToolCallArgsReaderImpl {
156
- argTextDeltas;
157
- handles = new Set();
158
- args = parsePartialJsonObject("");
159
- constructor(argTextDeltas) {
160
- this.argTextDeltas = argTextDeltas;
161
- this.processStream();
162
- }
163
- async processStream() {
164
- try {
165
- let accumulatedText = "";
166
- const reader = this.argTextDeltas.getReader();
167
- while (true) {
168
- const { value, done } = await reader.read();
169
- if (done)
170
- break;
171
- accumulatedText += value;
172
- const parsedArgs = parsePartialJsonObject(accumulatedText);
173
- if (parsedArgs !== undefined) {
174
- this.args = parsedArgs;
175
- // Notify all handles of the updated args
176
- for (const handle of this.handles) {
177
- handle.update(parsedArgs);
178
- }
179
- }
180
- }
181
- }
182
- catch (error) {
183
- console.error("Error processing argument stream:", error);
184
- // Notify handles of the error
185
- for (const handle of this.handles) {
186
- handle.dispose();
187
- }
188
- }
189
- }
190
- get(...fieldPath) {
191
- return new Promise((resolve, reject) => {
192
- const handle = new GetHandle(resolve, reject, fieldPath);
193
- // Check if the field is already complete in current args
194
- if (this.args &&
195
- getPartialJsonObjectFieldState(this.args, fieldPath) === "complete") {
196
- const value = getField(this.args, fieldPath);
197
- if (value !== undefined) {
198
- resolve(value);
199
- return;
200
- }
201
- }
202
- this.handles.add(handle);
203
- handle.update(this.args);
204
- });
205
- }
206
- streamValues(...fieldPath) {
207
- // Use a type assertion to convert the complex TypePath to a simple array
208
- const simplePath = fieldPath;
209
- const stream = new ReadableStream({
210
- start: (controller) => {
211
- const handle = new StreamValuesHandle(controller, simplePath);
212
- this.handles.add(handle);
213
- // Check current args immediately
214
- handle.update(this.args);
215
- },
216
- cancel: () => {
217
- // Find and dispose the corresponding handle
218
- for (const handle of this.handles) {
219
- if (handle instanceof StreamValuesHandle) {
220
- handle.dispose();
221
- this.handles.delete(handle);
222
- break;
223
- }
224
- }
225
- },
226
- });
227
- return asAsyncIterableStream(stream);
228
- }
229
- streamText(...fieldPath) {
230
- // Use a type assertion to convert the complex TypePath to a simple array
231
- const simplePath = fieldPath;
232
- const stream = new ReadableStream({
233
- start: (controller) => {
234
- const handle = new StreamTextHandle(controller, simplePath);
235
- this.handles.add(handle);
236
- // Check current args immediately
237
- handle.update(this.args);
238
- },
239
- cancel: () => {
240
- // Find and dispose the corresponding handle
241
- for (const handle of this.handles) {
242
- if (handle instanceof StreamTextHandle) {
243
- handle.dispose();
244
- this.handles.delete(handle);
245
- break;
246
- }
247
- }
248
- },
249
- });
250
- return asAsyncIterableStream(stream);
251
- }
252
- forEach(...fieldPath) {
253
- // Use a type assertion to convert the complex TypePath to a simple array
254
- const simplePath = fieldPath;
255
- const stream = new ReadableStream({
256
- start: (controller) => {
257
- const handle = new ForEachHandle(controller, simplePath);
258
- this.handles.add(handle);
259
- // Check current args immediately
260
- handle.update(this.args);
261
- },
262
- cancel: () => {
263
- // Find and dispose the corresponding handle
264
- for (const handle of this.handles) {
265
- if (handle instanceof ForEachHandle) {
266
- handle.dispose();
267
- this.handles.delete(handle);
268
- break;
269
- }
270
- }
271
- },
272
- });
273
- return asAsyncIterableStream(stream);
274
- }
275
- }
276
- export class ToolCallResponseReaderImpl {
277
- promise;
278
- constructor(promise) {
279
- this.promise = promise;
280
- }
281
- get() {
282
- return this.promise;
283
- }
284
- }
285
- export class ToolCallReaderImpl {
286
- args;
287
- response;
288
- writable;
289
- resolve;
290
- argsText = "";
291
- constructor() {
292
- const stream = new TransformStream();
293
- this.writable = stream.writable;
294
- this.args = new ToolCallArgsReaderImpl(stream.readable);
295
- const { promise, resolve } = promiseWithResolvers();
296
- this.resolve = resolve;
297
- this.response = new ToolCallResponseReaderImpl(promise);
298
- }
299
- async appendArgsTextDelta(text) {
300
- const writer = this.writable.getWriter();
301
- try {
302
- await writer.write(text);
303
- }
304
- catch (err) {
305
- console.warn(err);
306
- }
307
- finally {
308
- writer.releaseLock();
309
- }
310
- this.argsText += text;
311
- }
312
- setResponse(value) {
313
- this.resolve(value);
314
- }
315
- result = {
316
- get: async () => {
317
- const response = await this.response.get();
318
- return response.result;
319
- },
320
- };
6
+ let current = obj;
7
+ for (const key of fieldPath) {
8
+ if (current === void 0 || current === null) return;
9
+ current = current[key];
10
+ }
11
+ return current;
321
12
  }
13
+ var GetHandle = class {
14
+ resolve;
15
+ reject;
16
+ disposed = false;
17
+ fieldPath;
18
+ constructor(resolve, reject, fieldPath) {
19
+ this.resolve = resolve;
20
+ this.reject = reject;
21
+ this.fieldPath = fieldPath;
22
+ }
23
+ update(args) {
24
+ if (this.disposed) return;
25
+ try {
26
+ if (getPartialJsonObjectFieldState(args, this.fieldPath) === "complete") {
27
+ const value = getField(args, this.fieldPath);
28
+ if (value !== void 0) {
29
+ this.resolve(value);
30
+ this.dispose();
31
+ }
32
+ }
33
+ } catch (e) {
34
+ this.reject(e);
35
+ this.dispose();
36
+ }
37
+ }
38
+ dispose() {
39
+ this.disposed = true;
40
+ }
41
+ };
42
+ var StreamValuesHandle = class {
43
+ controller;
44
+ disposed = false;
45
+ fieldPath;
46
+ constructor(controller, fieldPath) {
47
+ this.controller = controller;
48
+ this.fieldPath = fieldPath;
49
+ }
50
+ update(args) {
51
+ if (this.disposed) return;
52
+ try {
53
+ const value = getField(args, this.fieldPath);
54
+ if (value !== void 0) this.controller.enqueue(value);
55
+ if (getPartialJsonObjectFieldState(args, this.fieldPath) === "complete") {
56
+ this.controller.close();
57
+ this.dispose();
58
+ }
59
+ } catch (e) {
60
+ this.controller.error(e);
61
+ this.dispose();
62
+ }
63
+ }
64
+ dispose() {
65
+ this.disposed = true;
66
+ }
67
+ };
68
+ var StreamTextHandle = class {
69
+ controller;
70
+ disposed = false;
71
+ fieldPath;
72
+ lastValue = void 0;
73
+ constructor(controller, fieldPath) {
74
+ this.controller = controller;
75
+ this.fieldPath = fieldPath;
76
+ }
77
+ update(args) {
78
+ if (this.disposed) return;
79
+ try {
80
+ const value = getField(args, this.fieldPath);
81
+ if (value !== void 0 && typeof value === "string") {
82
+ const delta = value.substring(this.lastValue?.length || 0);
83
+ this.lastValue = value;
84
+ this.controller.enqueue(delta);
85
+ }
86
+ if (getPartialJsonObjectFieldState(args, this.fieldPath) === "complete") {
87
+ this.controller.close();
88
+ this.dispose();
89
+ }
90
+ } catch (e) {
91
+ this.controller.error(e);
92
+ this.dispose();
93
+ }
94
+ }
95
+ dispose() {
96
+ this.disposed = true;
97
+ }
98
+ };
99
+ var ForEachHandle = class {
100
+ controller;
101
+ disposed = false;
102
+ fieldPath;
103
+ processedIndexes = /* @__PURE__ */ new Set();
104
+ constructor(controller, fieldPath) {
105
+ this.controller = controller;
106
+ this.fieldPath = fieldPath;
107
+ }
108
+ update(args) {
109
+ if (this.disposed) return;
110
+ try {
111
+ const array = getField(args, this.fieldPath);
112
+ if (!Array.isArray(array)) return;
113
+ for (let i = 0; i < array.length; i++) if (!this.processedIndexes.has(i)) {
114
+ if (getPartialJsonObjectFieldState(args, [...this.fieldPath, i]) === "complete") {
115
+ this.controller.enqueue(array[i]);
116
+ this.processedIndexes.add(i);
117
+ }
118
+ }
119
+ if (getPartialJsonObjectFieldState(args, this.fieldPath) === "complete") {
120
+ this.controller.close();
121
+ this.dispose();
122
+ }
123
+ } catch (e) {
124
+ this.controller.error(e);
125
+ this.dispose();
126
+ }
127
+ }
128
+ dispose() {
129
+ this.disposed = true;
130
+ }
131
+ };
132
+ var ToolCallArgsReaderImpl = class {
133
+ argTextDeltas;
134
+ handles = /* @__PURE__ */ new Set();
135
+ args = parsePartialJsonObject("");
136
+ constructor(argTextDeltas) {
137
+ this.argTextDeltas = argTextDeltas;
138
+ this.processStream();
139
+ }
140
+ async processStream() {
141
+ try {
142
+ let accumulatedText = "";
143
+ const reader = this.argTextDeltas.getReader();
144
+ while (true) {
145
+ const { value, done } = await reader.read();
146
+ if (done) break;
147
+ accumulatedText += value;
148
+ const parsedArgs = parsePartialJsonObject(accumulatedText);
149
+ if (parsedArgs !== void 0) {
150
+ this.args = parsedArgs;
151
+ for (const handle of this.handles) handle.update(parsedArgs);
152
+ }
153
+ }
154
+ } catch (error) {
155
+ console.error("Error processing argument stream:", error);
156
+ for (const handle of this.handles) handle.dispose();
157
+ }
158
+ }
159
+ get(...fieldPath) {
160
+ return new Promise((resolve, reject) => {
161
+ const handle = new GetHandle(resolve, reject, fieldPath);
162
+ if (this.args && getPartialJsonObjectFieldState(this.args, fieldPath) === "complete") {
163
+ const value = getField(this.args, fieldPath);
164
+ if (value !== void 0) {
165
+ resolve(value);
166
+ return;
167
+ }
168
+ }
169
+ this.handles.add(handle);
170
+ handle.update(this.args);
171
+ });
172
+ }
173
+ streamValues(...fieldPath) {
174
+ const simplePath = fieldPath;
175
+ return asAsyncIterableStream(new ReadableStream({
176
+ start: (controller) => {
177
+ const handle = new StreamValuesHandle(controller, simplePath);
178
+ this.handles.add(handle);
179
+ handle.update(this.args);
180
+ },
181
+ cancel: () => {
182
+ for (const handle of this.handles) if (handle instanceof StreamValuesHandle) {
183
+ handle.dispose();
184
+ this.handles.delete(handle);
185
+ break;
186
+ }
187
+ }
188
+ }));
189
+ }
190
+ streamText(...fieldPath) {
191
+ const simplePath = fieldPath;
192
+ return asAsyncIterableStream(new ReadableStream({
193
+ start: (controller) => {
194
+ const handle = new StreamTextHandle(controller, simplePath);
195
+ this.handles.add(handle);
196
+ handle.update(this.args);
197
+ },
198
+ cancel: () => {
199
+ for (const handle of this.handles) if (handle instanceof StreamTextHandle) {
200
+ handle.dispose();
201
+ this.handles.delete(handle);
202
+ break;
203
+ }
204
+ }
205
+ }));
206
+ }
207
+ forEach(...fieldPath) {
208
+ const simplePath = fieldPath;
209
+ return asAsyncIterableStream(new ReadableStream({
210
+ start: (controller) => {
211
+ const handle = new ForEachHandle(controller, simplePath);
212
+ this.handles.add(handle);
213
+ handle.update(this.args);
214
+ },
215
+ cancel: () => {
216
+ for (const handle of this.handles) if (handle instanceof ForEachHandle) {
217
+ handle.dispose();
218
+ this.handles.delete(handle);
219
+ break;
220
+ }
221
+ }
222
+ }));
223
+ }
224
+ };
225
+ var ToolCallResponseReaderImpl = class {
226
+ promise;
227
+ constructor(promise) {
228
+ this.promise = promise;
229
+ }
230
+ get() {
231
+ return this.promise;
232
+ }
233
+ };
234
+ var ToolCallReaderImpl = class {
235
+ args;
236
+ response;
237
+ writable;
238
+ resolve;
239
+ argsText = "";
240
+ constructor() {
241
+ const stream = new TransformStream();
242
+ this.writable = stream.writable;
243
+ this.args = new ToolCallArgsReaderImpl(stream.readable);
244
+ const { promise, resolve } = promiseWithResolvers();
245
+ this.resolve = resolve;
246
+ this.response = new ToolCallResponseReaderImpl(promise);
247
+ }
248
+ async appendArgsTextDelta(text) {
249
+ const writer = this.writable.getWriter();
250
+ try {
251
+ await writer.write(text);
252
+ } catch (err) {
253
+ console.warn(err);
254
+ } finally {
255
+ writer.releaseLock();
256
+ }
257
+ this.argsText += text;
258
+ }
259
+ setResponse(value) {
260
+ this.resolve(value);
261
+ }
262
+ result = { get: async () => {
263
+ return (await this.response.get()).result;
264
+ } };
265
+ };
266
+ //#endregion
267
+ export { ToolCallArgsReaderImpl, ToolCallReaderImpl, ToolCallResponseReaderImpl };
268
+
322
269
  //# sourceMappingURL=ToolCallReader.js.map