assistant-stream 0.2.45 → 0.2.47

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 (183) hide show
  1. package/dist/core/AssistantStream.d.ts +1 -1
  2. package/dist/core/AssistantStream.d.ts.map +1 -1
  3. package/dist/core/AssistantStream.js +15 -19
  4. package/dist/core/AssistantStream.js.map +1 -1
  5. package/dist/core/AssistantStreamChunk.d.ts +2 -2
  6. package/dist/core/AssistantStreamChunk.d.ts.map +1 -1
  7. package/dist/core/AssistantStreamChunk.js +1 -0
  8. package/dist/core/AssistantStreamChunk.js.map +1 -1
  9. package/dist/core/accumulators/AssistantMessageStream.d.ts +2 -2
  10. package/dist/core/accumulators/AssistantMessageStream.d.ts.map +1 -1
  11. package/dist/core/accumulators/AssistantMessageStream.js +45 -50
  12. package/dist/core/accumulators/AssistantMessageStream.js.map +1 -1
  13. package/dist/core/accumulators/assistant-message-accumulator.d.ts +3 -3
  14. package/dist/core/accumulators/assistant-message-accumulator.d.ts.map +1 -1
  15. package/dist/core/accumulators/assistant-message-accumulator.js +339 -329
  16. package/dist/core/accumulators/assistant-message-accumulator.js.map +1 -1
  17. package/dist/core/index.d.ts +17 -16
  18. package/dist/core/index.d.ts.map +1 -1
  19. package/dist/core/index.js +10 -44
  20. package/dist/core/index.js.map +1 -1
  21. package/dist/core/modules/assistant-stream.d.ts +7 -7
  22. package/dist/core/modules/assistant-stream.d.ts.map +1 -1
  23. package/dist/core/modules/assistant-stream.js +159 -188
  24. package/dist/core/modules/assistant-stream.js.map +1 -1
  25. package/dist/core/modules/text.d.ts +2 -2
  26. package/dist/core/modules/text.d.ts.map +1 -1
  27. package/dist/core/modules/text.js +43 -47
  28. package/dist/core/modules/text.js.map +1 -1
  29. package/dist/core/modules/tool-call.d.ts +5 -5
  30. package/dist/core/modules/tool-call.d.ts.map +1 -1
  31. package/dist/core/modules/tool-call.js +88 -89
  32. package/dist/core/modules/tool-call.js.map +1 -1
  33. package/dist/core/object/ObjectStreamAccumulator.d.ts +2 -2
  34. package/dist/core/object/ObjectStreamAccumulator.d.ts.map +1 -1
  35. package/dist/core/object/ObjectStreamAccumulator.js +49 -58
  36. package/dist/core/object/ObjectStreamAccumulator.js.map +1 -1
  37. package/dist/core/object/ObjectStreamResponse.d.ts +2 -2
  38. package/dist/core/object/ObjectStreamResponse.d.ts.map +1 -1
  39. package/dist/core/object/ObjectStreamResponse.js +70 -74
  40. package/dist/core/object/ObjectStreamResponse.js.map +1 -1
  41. package/dist/core/object/createObjectStream.d.ts +2 -2
  42. package/dist/core/object/createObjectStream.d.ts.map +1 -1
  43. package/dist/core/object/createObjectStream.js +45 -56
  44. package/dist/core/object/createObjectStream.js.map +1 -1
  45. package/dist/core/object/types.d.ts +1 -1
  46. package/dist/core/object/types.d.ts.map +1 -1
  47. package/dist/core/object/types.js +1 -0
  48. package/dist/core/object/types.js.map +1 -1
  49. package/dist/core/serialization/PlainText.d.ts +3 -3
  50. package/dist/core/serialization/PlainText.d.ts.map +1 -1
  51. package/dist/core/serialization/PlainText.js +46 -47
  52. package/dist/core/serialization/PlainText.js.map +1 -1
  53. package/dist/core/serialization/assistant-transport/AssistantTransport.d.ts +3 -3
  54. package/dist/core/serialization/assistant-transport/AssistantTransport.d.ts.map +1 -1
  55. package/dist/core/serialization/assistant-transport/AssistantTransport.js +117 -112
  56. package/dist/core/serialization/assistant-transport/AssistantTransport.js.map +1 -1
  57. package/dist/core/serialization/data-stream/DataStream.d.ts +3 -3
  58. package/dist/core/serialization/data-stream/DataStream.d.ts.map +1 -1
  59. package/dist/core/serialization/data-stream/DataStream.js +355 -354
  60. package/dist/core/serialization/data-stream/DataStream.js.map +1 -1
  61. package/dist/core/serialization/data-stream/chunk-types.d.ts +2 -2
  62. package/dist/core/serialization/data-stream/chunk-types.d.ts.map +1 -1
  63. package/dist/core/serialization/data-stream/chunk-types.js +22 -26
  64. package/dist/core/serialization/data-stream/chunk-types.js.map +1 -1
  65. package/dist/core/serialization/data-stream/serialization.d.ts +1 -1
  66. package/dist/core/serialization/data-stream/serialization.d.ts.map +1 -1
  67. package/dist/core/serialization/data-stream/serialization.js +23 -28
  68. package/dist/core/serialization/data-stream/serialization.js.map +1 -1
  69. package/dist/core/serialization/ui-message-stream/UIMessageStream.d.ts +19 -0
  70. package/dist/core/serialization/ui-message-stream/UIMessageStream.d.ts.map +1 -0
  71. package/dist/core/serialization/ui-message-stream/UIMessageStream.js +231 -0
  72. package/dist/core/serialization/ui-message-stream/UIMessageStream.js.map +1 -0
  73. package/dist/core/serialization/ui-message-stream/chunk-types.d.ts +78 -0
  74. package/dist/core/serialization/ui-message-stream/chunk-types.d.ts.map +1 -0
  75. package/dist/core/serialization/ui-message-stream/chunk-types.js +2 -0
  76. package/dist/core/serialization/ui-message-stream/chunk-types.js.map +1 -0
  77. package/dist/core/tool/ToolCallReader.d.ts +4 -4
  78. package/dist/core/tool/ToolCallReader.d.ts.map +1 -1
  79. package/dist/core/tool/ToolCallReader.js +303 -303
  80. package/dist/core/tool/ToolCallReader.js.map +1 -1
  81. package/dist/core/tool/ToolExecutionStream.d.ts +5 -5
  82. package/dist/core/tool/ToolExecutionStream.d.ts.map +1 -1
  83. package/dist/core/tool/ToolExecutionStream.js +140 -143
  84. package/dist/core/tool/ToolExecutionStream.js.map +1 -1
  85. package/dist/core/tool/ToolResponse.d.ts +1 -1
  86. package/dist/core/tool/ToolResponse.d.ts.map +1 -1
  87. package/dist/core/tool/ToolResponse.js +25 -29
  88. package/dist/core/tool/ToolResponse.js.map +1 -1
  89. package/dist/core/tool/index.d.ts +5 -5
  90. package/dist/core/tool/index.d.ts.map +1 -1
  91. package/dist/core/tool/index.js +3 -13
  92. package/dist/core/tool/index.js.map +1 -1
  93. package/dist/core/tool/tool-types.d.ts +3 -3
  94. package/dist/core/tool/tool-types.d.ts.map +1 -1
  95. package/dist/core/tool/tool-types.js +1 -0
  96. package/dist/core/tool/tool-types.js.map +1 -1
  97. package/dist/core/tool/toolResultStream.d.ts +3 -3
  98. package/dist/core/tool/toolResultStream.d.ts.map +1 -1
  99. package/dist/core/tool/toolResultStream.js +118 -125
  100. package/dist/core/tool/toolResultStream.js.map +1 -1
  101. package/dist/core/tool/type-path-utils.js +1 -0
  102. package/dist/core/tool/type-path-utils.js.map +1 -1
  103. package/dist/core/utils/Counter.js +6 -10
  104. package/dist/core/utils/Counter.js.map +1 -1
  105. package/dist/core/utils/generateId.js +1 -8
  106. package/dist/core/utils/generateId.js.map +1 -1
  107. package/dist/core/utils/stream/AssistantMetaTransformStream.d.ts +1 -1
  108. package/dist/core/utils/stream/AssistantMetaTransformStream.d.ts.map +1 -1
  109. package/dist/core/utils/stream/AssistantMetaTransformStream.js +42 -43
  110. package/dist/core/utils/stream/AssistantMetaTransformStream.js.map +1 -1
  111. package/dist/core/utils/stream/AssistantTransformStream.d.ts +2 -2
  112. package/dist/core/utils/stream/AssistantTransformStream.d.ts.map +1 -1
  113. package/dist/core/utils/stream/AssistantTransformStream.js +35 -45
  114. package/dist/core/utils/stream/AssistantTransformStream.js.map +1 -1
  115. package/dist/core/utils/stream/LineDecoderStream.js +24 -26
  116. package/dist/core/utils/stream/LineDecoderStream.js.map +1 -1
  117. package/dist/core/utils/stream/PipeableTransformStream.js +10 -14
  118. package/dist/core/utils/stream/PipeableTransformStream.js.map +1 -1
  119. package/dist/core/utils/stream/SSE.d.ts +1 -1
  120. package/dist/core/utils/stream/SSE.d.ts.map +1 -1
  121. package/dist/core/utils/stream/SSE.js +90 -98
  122. package/dist/core/utils/stream/SSE.js.map +1 -1
  123. package/dist/core/utils/stream/UnderlyingReadable.js +1 -0
  124. package/dist/core/utils/stream/UnderlyingReadable.js.map +1 -1
  125. package/dist/core/utils/stream/merge.d.ts +1 -1
  126. package/dist/core/utils/stream/merge.d.ts.map +1 -1
  127. package/dist/core/utils/stream/merge.js +169 -81
  128. package/dist/core/utils/stream/merge.js.map +1 -1
  129. package/dist/core/utils/stream/path-utils.d.ts +2 -2
  130. package/dist/core/utils/stream/path-utils.d.ts.map +1 -1
  131. package/dist/core/utils/stream/path-utils.js +49 -56
  132. package/dist/core/utils/stream/path-utils.js.map +1 -1
  133. package/dist/core/utils/types.d.ts +1 -1
  134. package/dist/core/utils/types.d.ts.map +1 -1
  135. package/dist/core/utils/types.js +1 -0
  136. package/dist/core/utils/types.js.map +1 -1
  137. package/dist/core/utils/withPromiseOrValue.js +14 -14
  138. package/dist/core/utils/withPromiseOrValue.js.map +1 -1
  139. package/dist/index.d.ts +1 -1
  140. package/dist/index.d.ts.map +1 -1
  141. package/dist/index.js +0 -1
  142. package/dist/index.js.map +1 -1
  143. package/dist/utils/AsyncIterableStream.js +15 -16
  144. package/dist/utils/AsyncIterableStream.js.map +1 -1
  145. package/dist/utils/index.d.ts +2 -2
  146. package/dist/utils/index.d.ts.map +1 -1
  147. package/dist/utils/index.js +1 -7
  148. package/dist/utils/index.js.map +1 -1
  149. package/dist/utils/json/fix-json.js +365 -343
  150. package/dist/utils/json/fix-json.js.map +1 -1
  151. package/dist/utils/json/index.d.ts +1 -1
  152. package/dist/utils/json/index.d.ts.map +1 -1
  153. package/dist/utils/json/index.js +1 -0
  154. package/dist/utils/json/index.js.map +1 -1
  155. package/dist/utils/json/is-json.d.ts +1 -1
  156. package/dist/utils/json/is-json.d.ts.map +1 -1
  157. package/dist/utils/json/is-json.js +21 -25
  158. package/dist/utils/json/is-json.js.map +1 -1
  159. package/dist/utils/json/json-value.js +1 -0
  160. package/dist/utils/json/json-value.js.map +1 -1
  161. package/dist/utils/json/parse-partial-json-object.d.ts +1 -1
  162. package/dist/utils/json/parse-partial-json-object.d.ts.map +1 -1
  163. package/dist/utils/json/parse-partial-json-object.js +61 -56
  164. package/dist/utils/json/parse-partial-json-object.js.map +1 -1
  165. package/dist/utils/promiseWithResolvers.js +10 -13
  166. package/dist/utils/promiseWithResolvers.js.map +1 -1
  167. package/dist/utils.d.ts +5 -5
  168. package/dist/utils.d.ts.map +1 -1
  169. package/dist/utils.js +4 -17
  170. package/dist/utils.js.map +1 -1
  171. package/package.json +26 -14
  172. package/src/core/index.ts +6 -0
  173. package/src/core/serialization/ui-message-stream/UIMessageStream.test.ts +370 -0
  174. package/src/core/serialization/ui-message-stream/UIMessageStream.ts +300 -0
  175. package/src/core/serialization/ui-message-stream/chunk-types.ts +60 -0
  176. package/dist/core/object/ObjectStream.test.d.ts +0 -2
  177. package/dist/core/object/ObjectStream.test.d.ts.map +0 -1
  178. package/dist/core/serialization/assistant-transport/AssistantTransport.test.d.ts +0 -2
  179. package/dist/core/serialization/assistant-transport/AssistantTransport.test.d.ts.map +0 -1
  180. package/dist/core/tool/toolResultStream.test.d.ts +0 -2
  181. package/dist/core/tool/toolResultStream.test.d.ts.map +0 -1
  182. package/dist/utils/json/parse-partial-json-object.test.d.ts +0 -2
  183. package/dist/utils/json/parse-partial-json-object.test.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ToolCallReader.d.ts","sourceRoot":"","sources":["../../../src/core/tool/ToolCallReader.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACvB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAEL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,aAAa,CAAC;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","sourceRoot":"","sources":["../../../src/core/tool/ToolCallReader.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACvB,wBAAqB;AACtB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,6BAA0B;AACtE,OAAO,EAAE,YAAY,EAAE,0BAAuB;AAC9C,OAAO,EAEL,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,322 +1,322 @@
1
- // src/core/tool/ToolCallReader.ts
2
1
  import { promiseWithResolvers } from "../../utils/promiseWithResolvers.js";
3
- import {
4
- parsePartialJsonObject,
5
- getPartialJsonObjectFieldState
6
- } from "../../utils/json/parse-partial-json-object.js";
7
- import {
8
- asAsyncIterableStream
9
- } from "../../utils/index.js";
2
+ import { parsePartialJsonObject, getPartialJsonObjectFieldState, } from "../../utils/json/parse-partial-json-object.js";
3
+ import { asAsyncIterableStream, } from "../../utils.js";
4
+ // TODO: remove dispose
10
5
  function getField(obj, fieldPath) {
11
- let current = obj;
12
- for (const key of fieldPath) {
13
- if (current === void 0 || current === null) {
14
- return void 0;
6
+ let current = obj;
7
+ for (const key of fieldPath) {
8
+ if (current === undefined || current === null) {
9
+ return undefined;
10
+ }
11
+ current = current[key];
15
12
  }
16
- current = current[key];
17
- }
18
- return current;
13
+ return current;
19
14
  }
20
- var GetHandle = class {
21
- resolve;
22
- reject;
23
- disposed = false;
24
- fieldPath;
25
- constructor(resolve, reject, fieldPath) {
26
- this.resolve = resolve;
27
- this.reject = reject;
28
- this.fieldPath = fieldPath;
29
- }
30
- update(args) {
31
- if (this.disposed) return;
32
- try {
33
- if (getPartialJsonObjectFieldState(
34
- args,
35
- this.fieldPath
36
- ) === "complete") {
37
- const value = getField(args, this.fieldPath);
38
- if (value !== void 0) {
39
- this.resolve(value);
40
- this.dispose();
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
41
  }
42
- }
43
- } catch (e) {
44
- this.reject(e);
45
- this.dispose();
46
42
  }
47
- }
48
- dispose() {
49
- this.disposed = true;
50
- }
51
- };
52
- var StreamValuesHandle = class {
53
- controller;
54
- disposed = false;
55
- fieldPath;
56
- constructor(controller, fieldPath) {
57
- this.controller = controller;
58
- this.fieldPath = fieldPath;
59
- }
60
- update(args) {
61
- if (this.disposed) return;
62
- try {
63
- const value = getField(args, this.fieldPath);
64
- if (value !== void 0) {
65
- this.controller.enqueue(value);
66
- }
67
- if (getPartialJsonObjectFieldState(
68
- args,
69
- this.fieldPath
70
- ) === "complete") {
71
- this.controller.close();
72
- this.dispose();
73
- }
74
- } catch (e) {
75
- this.controller.error(e);
76
- this.dispose();
43
+ dispose() {
44
+ this.disposed = true;
77
45
  }
78
- }
79
- dispose() {
80
- this.disposed = true;
81
- }
82
- };
83
- var StreamTextHandle = class {
84
- controller;
85
- disposed = false;
86
- fieldPath;
87
- lastValue = void 0;
88
- constructor(controller, fieldPath) {
89
- this.controller = controller;
90
- this.fieldPath = fieldPath;
91
- }
92
- update(args) {
93
- if (this.disposed) return;
94
- try {
95
- const value = getField(args, this.fieldPath);
96
- if (value !== void 0 && typeof value === "string") {
97
- const delta = value.substring(this.lastValue?.length || 0);
98
- this.lastValue = value;
99
- this.controller.enqueue(delta);
100
- }
101
- if (getPartialJsonObjectFieldState(
102
- args,
103
- this.fieldPath
104
- ) === "complete") {
105
- this.controller.close();
106
- this.dispose();
107
- }
108
- } catch (e) {
109
- this.controller.error(e);
110
- this.dispose();
46
+ }
47
+ class StreamValuesHandle {
48
+ controller;
49
+ disposed = false;
50
+ fieldPath;
51
+ constructor(controller, fieldPath) {
52
+ this.controller = controller;
53
+ this.fieldPath = fieldPath;
111
54
  }
112
- }
113
- dispose() {
114
- this.disposed = true;
115
- }
116
- };
117
- var ForEachHandle = class {
118
- controller;
119
- disposed = false;
120
- fieldPath;
121
- processedIndexes = /* @__PURE__ */ new Set();
122
- constructor(controller, fieldPath) {
123
- this.controller = controller;
124
- this.fieldPath = fieldPath;
125
- }
126
- update(args) {
127
- if (this.disposed) return;
128
- try {
129
- const array = getField(args, this.fieldPath);
130
- if (!Array.isArray(array)) {
131
- return;
132
- }
133
- for (let i = 0; i < array.length; i++) {
134
- if (!this.processedIndexes.has(i)) {
135
- const elementPath = [...this.fieldPath, i];
136
- if (getPartialJsonObjectFieldState(
137
- args,
138
- elementPath
139
- ) === "complete") {
140
- this.controller.enqueue(array[i]);
141
- this.processedIndexes.add(i);
142
- }
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
+ }
143
68
  }
144
- }
145
- if (getPartialJsonObjectFieldState(
146
- args,
147
- this.fieldPath
148
- ) === "complete") {
149
- this.controller.close();
150
- this.dispose();
151
- }
152
- } catch (e) {
153
- this.controller.error(e);
154
- this.dispose();
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;
155
86
  }
156
- }
157
- dispose() {
158
- this.disposed = true;
159
- }
160
- };
161
- var ToolCallArgsReaderImpl = class {
162
- argTextDeltas;
163
- handles = /* @__PURE__ */ new Set();
164
- args = parsePartialJsonObject("");
165
- constructor(argTextDeltas) {
166
- this.argTextDeltas = argTextDeltas;
167
- this.processStream();
168
- }
169
- async processStream() {
170
- try {
171
- let accumulatedText = "";
172
- const reader = this.argTextDeltas.getReader();
173
- while (true) {
174
- const { value, done } = await reader.read();
175
- if (done) break;
176
- accumulatedText += value;
177
- const parsedArgs = parsePartialJsonObject(accumulatedText);
178
- if (parsedArgs !== void 0) {
179
- this.args = parsedArgs;
180
- for (const handle of this.handles) {
181
- handle.update(parsedArgs);
182
- }
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();
183
148
  }
184
- }
185
- } catch (error) {
186
- console.error("Error processing argument stream:", error);
187
- for (const handle of this.handles) {
188
- handle.dispose();
189
- }
190
149
  }
191
- }
192
- get(...fieldPath) {
193
- return new Promise((resolve, reject) => {
194
- const handle = new GetHandle(
195
- resolve,
196
- reject,
197
- fieldPath
198
- );
199
- if (this.args && getPartialJsonObjectFieldState(
200
- this.args,
201
- fieldPath
202
- ) === "complete") {
203
- const value = getField(this.args, fieldPath);
204
- if (value !== void 0) {
205
- resolve(value);
206
- return;
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
+ }
207
181
  }
208
- }
209
- this.handles.add(handle);
210
- handle.update(this.args);
211
- });
212
- }
213
- streamValues(...fieldPath) {
214
- const simplePath = fieldPath;
215
- const stream = new ReadableStream({
216
- start: (controller) => {
217
- const handle = new StreamValuesHandle(controller, simplePath);
218
- this.handles.add(handle);
219
- handle.update(this.args);
220
- },
221
- cancel: () => {
222
- for (const handle of this.handles) {
223
- if (handle instanceof StreamValuesHandle) {
224
- handle.dispose();
225
- this.handles.delete(handle);
226
- break;
227
- }
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
+ }
228
188
  }
229
- }
230
- });
231
- return asAsyncIterableStream(stream);
232
- }
233
- streamText(...fieldPath) {
234
- const simplePath = fieldPath;
235
- const stream = new ReadableStream({
236
- start: (controller) => {
237
- const handle = new StreamTextHandle(controller, simplePath);
238
- this.handles.add(handle);
239
- handle.update(this.args);
240
- },
241
- cancel: () => {
242
- for (const handle of this.handles) {
243
- if (handle instanceof StreamTextHandle) {
244
- handle.dispose();
245
- this.handles.delete(handle);
246
- break;
247
- }
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);
248
306
  }
249
- }
250
- });
251
- return asAsyncIterableStream(stream);
252
- }
253
- forEach(...fieldPath) {
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
- handle.update(this.args);
260
- },
261
- cancel: () => {
262
- for (const handle of this.handles) {
263
- if (handle instanceof ForEachHandle) {
264
- handle.dispose();
265
- this.handles.delete(handle);
266
- break;
267
- }
307
+ finally {
308
+ writer.releaseLock();
268
309
  }
269
- }
270
- });
271
- return asAsyncIterableStream(stream);
272
- }
273
- };
274
- var ToolCallResponseReaderImpl = class {
275
- constructor(promise) {
276
- this.promise = promise;
277
- }
278
- get() {
279
- return this.promise;
280
- }
281
- };
282
- var ToolCallReaderImpl = class {
283
- args;
284
- response;
285
- writable;
286
- resolve;
287
- argsText = "";
288
- constructor() {
289
- const stream = new TransformStream();
290
- this.writable = stream.writable;
291
- this.args = new ToolCallArgsReaderImpl(stream.readable);
292
- const { promise, resolve } = promiseWithResolvers();
293
- this.resolve = resolve;
294
- this.response = new ToolCallResponseReaderImpl(promise);
295
- }
296
- async appendArgsTextDelta(text) {
297
- const writer = this.writable.getWriter();
298
- try {
299
- await writer.write(text);
300
- } catch (err) {
301
- console.warn(err);
302
- } finally {
303
- writer.releaseLock();
310
+ this.argsText += text;
304
311
  }
305
- this.argsText += text;
306
- }
307
- setResponse(value) {
308
- this.resolve(value);
309
- }
310
- result = {
311
- get: async () => {
312
- const response = await this.response.get();
313
- return response.result;
312
+ setResponse(value) {
313
+ this.resolve(value);
314
314
  }
315
- };
316
- };
317
- export {
318
- ToolCallArgsReaderImpl,
319
- ToolCallReaderImpl,
320
- ToolCallResponseReaderImpl
321
- };
315
+ result = {
316
+ get: async () => {
317
+ const response = await this.response.get();
318
+ return response.result;
319
+ },
320
+ };
321
+ }
322
322
  //# sourceMappingURL=ToolCallReader.js.map