@langchain/core 1.2.0-dev-1775763803878 → 1.2.1

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 (751) hide show
  1. package/CHANGELOG.md +130 -0
  2. package/README.md +1 -1
  3. package/agents.cjs +1 -0
  4. package/agents.d.cts +1 -0
  5. package/agents.d.ts +1 -0
  6. package/agents.js +1 -0
  7. package/caches.cjs +1 -0
  8. package/caches.d.cts +1 -0
  9. package/caches.d.ts +1 -0
  10. package/caches.js +1 -0
  11. package/callbacks/base.cjs +1 -0
  12. package/callbacks/base.d.cts +1 -0
  13. package/callbacks/base.d.ts +1 -0
  14. package/callbacks/base.js +1 -0
  15. package/callbacks/dispatch/web.cjs +1 -0
  16. package/callbacks/dispatch/web.d.cts +1 -0
  17. package/callbacks/dispatch/web.d.ts +1 -0
  18. package/callbacks/dispatch/web.js +1 -0
  19. package/callbacks/dispatch.cjs +1 -0
  20. package/callbacks/dispatch.d.cts +1 -0
  21. package/callbacks/dispatch.d.ts +1 -0
  22. package/callbacks/dispatch.js +1 -0
  23. package/callbacks/manager.cjs +1 -0
  24. package/callbacks/manager.d.cts +1 -0
  25. package/callbacks/manager.d.ts +1 -0
  26. package/callbacks/manager.js +1 -0
  27. package/callbacks/promises.cjs +1 -0
  28. package/callbacks/promises.d.cts +1 -0
  29. package/callbacks/promises.d.ts +1 -0
  30. package/callbacks/promises.js +1 -0
  31. package/chat_history.cjs +1 -0
  32. package/chat_history.d.cts +1 -0
  33. package/chat_history.d.ts +1 -0
  34. package/chat_history.js +1 -0
  35. package/context.cjs +1 -0
  36. package/context.d.cts +1 -0
  37. package/context.d.ts +1 -0
  38. package/context.js +1 -0
  39. package/dist/callbacks/base.cjs +7 -3
  40. package/dist/callbacks/base.cjs.map +1 -1
  41. package/dist/callbacks/base.d.cts +20 -1
  42. package/dist/callbacks/base.d.cts.map +1 -1
  43. package/dist/callbacks/base.d.ts +20 -1
  44. package/dist/callbacks/base.d.ts.map +1 -1
  45. package/dist/callbacks/base.js +7 -3
  46. package/dist/callbacks/base.js.map +1 -1
  47. package/dist/callbacks/dispatch/index.cjs.map +1 -1
  48. package/dist/callbacks/dispatch/index.js.map +1 -1
  49. package/dist/callbacks/manager.cjs +29 -7
  50. package/dist/callbacks/manager.cjs.map +1 -1
  51. package/dist/callbacks/manager.d.cts +4 -0
  52. package/dist/callbacks/manager.d.cts.map +1 -1
  53. package/dist/callbacks/manager.d.ts +4 -0
  54. package/dist/callbacks/manager.d.ts.map +1 -1
  55. package/dist/callbacks/manager.js +23 -1
  56. package/dist/callbacks/manager.js.map +1 -1
  57. package/dist/example_selectors/conditional.cjs.map +1 -1
  58. package/dist/example_selectors/conditional.js.map +1 -1
  59. package/dist/example_selectors/length_based.cjs.map +1 -1
  60. package/dist/example_selectors/length_based.js.map +1 -1
  61. package/dist/example_selectors/semantic_similarity.cjs.map +1 -1
  62. package/dist/example_selectors/semantic_similarity.js.map +1 -1
  63. package/dist/indexing/base.cjs +3 -4
  64. package/dist/indexing/base.cjs.map +1 -1
  65. package/dist/indexing/base.js +1 -1
  66. package/dist/indexing/base.js.map +1 -1
  67. package/dist/language_models/base.cjs +9 -1
  68. package/dist/language_models/base.cjs.map +1 -1
  69. package/dist/language_models/base.d.cts +5 -0
  70. package/dist/language_models/base.d.cts.map +1 -1
  71. package/dist/language_models/base.d.ts +5 -0
  72. package/dist/language_models/base.d.ts.map +1 -1
  73. package/dist/language_models/base.js +9 -1
  74. package/dist/language_models/base.js.map +1 -1
  75. package/dist/language_models/chat_models.cjs +71 -33
  76. package/dist/language_models/chat_models.cjs.map +1 -1
  77. package/dist/language_models/chat_models.d.cts +74 -3
  78. package/dist/language_models/chat_models.d.cts.map +1 -1
  79. package/dist/language_models/chat_models.d.ts +74 -3
  80. package/dist/language_models/chat_models.d.ts.map +1 -1
  81. package/dist/language_models/chat_models.js +72 -34
  82. package/dist/language_models/chat_models.js.map +1 -1
  83. package/dist/language_models/compat.cjs +255 -78
  84. package/dist/language_models/compat.cjs.map +1 -1
  85. package/dist/language_models/compat.d.cts +3 -17
  86. package/dist/language_models/compat.d.cts.map +1 -1
  87. package/dist/language_models/compat.d.ts +3 -17
  88. package/dist/language_models/compat.d.ts.map +1 -1
  89. package/dist/language_models/compat.js +256 -78
  90. package/dist/language_models/compat.js.map +1 -1
  91. package/dist/language_models/event.cjs.map +1 -1
  92. package/dist/language_models/event.d.cts +82 -90
  93. package/dist/language_models/event.d.cts.map +1 -1
  94. package/dist/language_models/event.d.ts +82 -90
  95. package/dist/language_models/event.d.ts.map +1 -1
  96. package/dist/language_models/event.js.map +1 -1
  97. package/dist/language_models/llms.cjs +18 -6
  98. package/dist/language_models/llms.cjs.map +1 -1
  99. package/dist/language_models/llms.d.cts.map +1 -1
  100. package/dist/language_models/llms.d.ts.map +1 -1
  101. package/dist/language_models/llms.js +18 -6
  102. package/dist/language_models/llms.js.map +1 -1
  103. package/dist/language_models/openai_completions_stream.cjs +308 -0
  104. package/dist/language_models/openai_completions_stream.cjs.map +1 -0
  105. package/dist/language_models/openai_completions_stream.d.cts +75 -0
  106. package/dist/language_models/openai_completions_stream.d.cts.map +1 -0
  107. package/dist/language_models/openai_completions_stream.d.ts +75 -0
  108. package/dist/language_models/openai_completions_stream.d.ts.map +1 -0
  109. package/dist/language_models/openai_completions_stream.js +301 -0
  110. package/dist/language_models/openai_completions_stream.js.map +1 -0
  111. package/dist/language_models/stream.cjs +216 -86
  112. package/dist/language_models/stream.cjs.map +1 -1
  113. package/dist/language_models/stream.d.cts +5 -28
  114. package/dist/language_models/stream.d.cts.map +1 -1
  115. package/dist/language_models/stream.d.ts +5 -28
  116. package/dist/language_models/stream.d.ts.map +1 -1
  117. package/dist/language_models/stream.js +216 -86
  118. package/dist/language_models/stream.js.map +1 -1
  119. package/dist/load/import_map.cjs +4 -0
  120. package/dist/load/import_map.cjs.map +1 -1
  121. package/dist/load/import_map.js +4 -0
  122. package/dist/load/import_map.js.map +1 -1
  123. package/dist/load/index.cjs +19 -0
  124. package/dist/load/index.cjs.map +1 -1
  125. package/dist/load/index.d.cts +4 -0
  126. package/dist/load/index.d.cts.map +1 -1
  127. package/dist/load/index.d.ts +4 -0
  128. package/dist/load/index.d.ts.map +1 -1
  129. package/dist/load/index.js +19 -0
  130. package/dist/load/index.js.map +1 -1
  131. package/dist/load/map_keys.cjs +13 -7
  132. package/dist/load/map_keys.cjs.map +1 -1
  133. package/dist/load/map_keys.d.cts.map +1 -1
  134. package/dist/load/map_keys.d.ts.map +1 -1
  135. package/dist/load/map_keys.js +11 -2
  136. package/dist/load/map_keys.js.map +1 -1
  137. package/dist/memory.cjs.map +1 -1
  138. package/dist/memory.js.map +1 -1
  139. package/dist/messages/ai.cjs +12 -9
  140. package/dist/messages/ai.cjs.map +1 -1
  141. package/dist/messages/ai.d.cts.map +1 -1
  142. package/dist/messages/ai.d.ts.map +1 -1
  143. package/dist/messages/ai.js +12 -9
  144. package/dist/messages/ai.js.map +1 -1
  145. package/dist/messages/base.cjs +10 -0
  146. package/dist/messages/base.cjs.map +1 -1
  147. package/dist/messages/base.d.cts +9 -0
  148. package/dist/messages/base.d.cts.map +1 -1
  149. package/dist/messages/base.d.ts +9 -0
  150. package/dist/messages/base.d.ts.map +1 -1
  151. package/dist/messages/base.js +10 -0
  152. package/dist/messages/base.js.map +1 -1
  153. package/dist/messages/block_translators/anthropic.cjs.map +1 -1
  154. package/dist/messages/block_translators/anthropic.js.map +1 -1
  155. package/dist/messages/block_translators/bedrock_converse.cjs.map +1 -1
  156. package/dist/messages/block_translators/bedrock_converse.js.map +1 -1
  157. package/dist/messages/block_translators/google.cjs.map +1 -1
  158. package/dist/messages/block_translators/google.js.map +1 -1
  159. package/dist/messages/block_translators/google_vertexai.cjs.map +1 -1
  160. package/dist/messages/block_translators/google_vertexai.js.map +1 -1
  161. package/dist/messages/block_translators/index.cjs +2 -0
  162. package/dist/messages/block_translators/index.cjs.map +1 -1
  163. package/dist/messages/block_translators/index.js +2 -0
  164. package/dist/messages/block_translators/index.js.map +1 -1
  165. package/dist/messages/block_translators/openai.cjs.map +1 -1
  166. package/dist/messages/block_translators/openai.js.map +1 -1
  167. package/dist/messages/block_translators/openrouter.cjs +101 -0
  168. package/dist/messages/block_translators/openrouter.cjs.map +1 -0
  169. package/dist/messages/block_translators/openrouter.js +101 -0
  170. package/dist/messages/block_translators/openrouter.js.map +1 -0
  171. package/dist/messages/index.d.cts +2 -2
  172. package/dist/messages/index.d.ts +2 -2
  173. package/dist/messages/modifier.cjs +6 -0
  174. package/dist/messages/modifier.cjs.map +1 -1
  175. package/dist/messages/modifier.d.cts +9 -4
  176. package/dist/messages/modifier.d.cts.map +1 -1
  177. package/dist/messages/modifier.d.ts +9 -4
  178. package/dist/messages/modifier.d.ts.map +1 -1
  179. package/dist/messages/modifier.js +6 -0
  180. package/dist/messages/modifier.js.map +1 -1
  181. package/dist/messages/transformers.cjs.map +1 -1
  182. package/dist/messages/transformers.js.map +1 -1
  183. package/dist/messages/utils.cjs +16 -2
  184. package/dist/messages/utils.cjs.map +1 -1
  185. package/dist/messages/utils.d.cts +9 -1
  186. package/dist/messages/utils.d.cts.map +1 -1
  187. package/dist/messages/utils.d.ts +9 -1
  188. package/dist/messages/utils.d.ts.map +1 -1
  189. package/dist/messages/utils.js +16 -2
  190. package/dist/messages/utils.js.map +1 -1
  191. package/dist/output_parsers/openai_functions/json_output_functions_parsers.cjs.map +1 -1
  192. package/dist/output_parsers/openai_functions/json_output_functions_parsers.js.map +1 -1
  193. package/dist/output_parsers/openai_tools/json_output_tools_parsers.cjs.map +1 -1
  194. package/dist/output_parsers/openai_tools/json_output_tools_parsers.js.map +1 -1
  195. package/dist/output_parsers/standard_schema.cjs +3 -0
  196. package/dist/output_parsers/standard_schema.cjs.map +1 -1
  197. package/dist/output_parsers/standard_schema.d.cts +2 -0
  198. package/dist/output_parsers/standard_schema.d.cts.map +1 -1
  199. package/dist/output_parsers/standard_schema.d.ts +2 -0
  200. package/dist/output_parsers/standard_schema.d.ts.map +1 -1
  201. package/dist/output_parsers/standard_schema.js +3 -0
  202. package/dist/output_parsers/standard_schema.js.map +1 -1
  203. package/dist/output_parsers/structured.cjs +3 -0
  204. package/dist/output_parsers/structured.cjs.map +1 -1
  205. package/dist/output_parsers/structured.d.cts +2 -0
  206. package/dist/output_parsers/structured.d.cts.map +1 -1
  207. package/dist/output_parsers/structured.d.ts +2 -0
  208. package/dist/output_parsers/structured.d.ts.map +1 -1
  209. package/dist/output_parsers/structured.js +3 -0
  210. package/dist/output_parsers/structured.js.map +1 -1
  211. package/dist/output_parsers/xml.cjs.map +1 -1
  212. package/dist/output_parsers/xml.js.map +1 -1
  213. package/dist/prompts/base.cjs.map +1 -1
  214. package/dist/prompts/base.js.map +1 -1
  215. package/dist/prompts/chat.cjs.map +1 -1
  216. package/dist/prompts/chat.js.map +1 -1
  217. package/dist/prompts/few_shot.cjs.map +1 -1
  218. package/dist/prompts/few_shot.js.map +1 -1
  219. package/dist/prompts/image.cjs.map +1 -1
  220. package/dist/prompts/image.js.map +1 -1
  221. package/dist/prompts/prompt.cjs +1 -1
  222. package/dist/prompts/prompt.cjs.map +1 -1
  223. package/dist/prompts/prompt.d.cts +1 -1
  224. package/dist/prompts/prompt.d.ts +1 -1
  225. package/dist/prompts/prompt.js +1 -1
  226. package/dist/prompts/prompt.js.map +1 -1
  227. package/dist/prompts/string.cjs.map +1 -1
  228. package/dist/prompts/string.js.map +1 -1
  229. package/dist/prompts/template.cjs +1 -1
  230. package/dist/prompts/template.cjs.map +1 -1
  231. package/dist/prompts/template.js.map +1 -1
  232. package/dist/retrievers/index.cjs.map +1 -1
  233. package/dist/retrievers/index.js.map +1 -1
  234. package/dist/runnables/base.cjs +5 -2
  235. package/dist/runnables/base.cjs.map +1 -1
  236. package/dist/runnables/base.d.cts +43 -0
  237. package/dist/runnables/base.d.cts.map +1 -1
  238. package/dist/runnables/base.d.ts +43 -0
  239. package/dist/runnables/base.d.ts.map +1 -1
  240. package/dist/runnables/base.js +4 -1
  241. package/dist/runnables/base.js.map +1 -1
  242. package/dist/runnables/branch.cjs.map +1 -1
  243. package/dist/runnables/branch.js.map +1 -1
  244. package/dist/runnables/config.cjs +16 -8
  245. package/dist/runnables/config.cjs.map +1 -1
  246. package/dist/runnables/config.d.cts.map +1 -1
  247. package/dist/runnables/config.d.ts.map +1 -1
  248. package/dist/runnables/config.js +16 -8
  249. package/dist/runnables/config.js.map +1 -1
  250. package/dist/runnables/graph.cjs +6 -6
  251. package/dist/runnables/graph.cjs.map +1 -1
  252. package/dist/runnables/graph.js +1 -1
  253. package/dist/runnables/graph.js.map +1 -1
  254. package/dist/runnables/graph_mermaid.cjs.map +1 -1
  255. package/dist/runnables/graph_mermaid.js.map +1 -1
  256. package/dist/runnables/history.cjs +3 -0
  257. package/dist/runnables/history.cjs.map +1 -1
  258. package/dist/runnables/history.d.cts +3 -0
  259. package/dist/runnables/history.d.cts.map +1 -1
  260. package/dist/runnables/history.d.ts +3 -0
  261. package/dist/runnables/history.d.ts.map +1 -1
  262. package/dist/runnables/history.js +3 -0
  263. package/dist/runnables/history.js.map +1 -1
  264. package/dist/runnables/router.cjs.map +1 -1
  265. package/dist/runnables/router.js.map +1 -1
  266. package/dist/runnables/utils.cjs.map +1 -1
  267. package/dist/runnables/utils.js.map +1 -1
  268. package/dist/singletons/async_local_storage/context.cjs.map +1 -1
  269. package/dist/singletons/async_local_storage/context.js.map +1 -1
  270. package/dist/singletons/async_local_storage/index.cjs.map +1 -1
  271. package/dist/singletons/async_local_storage/index.js.map +1 -1
  272. package/dist/singletons/callbacks.cjs +1 -1
  273. package/dist/testing/fake_model_builder.cjs +10 -9
  274. package/dist/testing/fake_model_builder.cjs.map +1 -1
  275. package/dist/testing/fake_model_builder.d.cts +1 -2
  276. package/dist/testing/fake_model_builder.d.cts.map +1 -1
  277. package/dist/testing/fake_model_builder.d.ts +1 -2
  278. package/dist/testing/fake_model_builder.d.ts.map +1 -1
  279. package/dist/testing/fake_model_builder.js +10 -9
  280. package/dist/testing/fake_model_builder.js.map +1 -1
  281. package/dist/testing/index.cjs +16 -0
  282. package/dist/testing/index.cjs.map +1 -1
  283. package/dist/testing/index.d.cts +3 -1
  284. package/dist/testing/index.d.ts +3 -1
  285. package/dist/testing/index.js +10 -1
  286. package/dist/testing/index.js.map +1 -1
  287. package/dist/testing/matchers.cjs +3 -1
  288. package/dist/testing/matchers.cjs.map +1 -1
  289. package/dist/testing/matchers.d.cts +8 -4
  290. package/dist/testing/matchers.d.cts.map +1 -1
  291. package/dist/testing/matchers.d.ts +8 -4
  292. package/dist/testing/matchers.d.ts.map +1 -1
  293. package/dist/testing/matchers.js +3 -1
  294. package/dist/testing/matchers.js.map +1 -1
  295. package/dist/tools/index.cjs +4 -1
  296. package/dist/tools/index.cjs.map +1 -1
  297. package/dist/tools/index.d.cts.map +1 -1
  298. package/dist/tools/index.d.ts.map +1 -1
  299. package/dist/tools/index.js +4 -1
  300. package/dist/tools/index.js.map +1 -1
  301. package/dist/tracers/console.cjs +30 -4
  302. package/dist/tracers/console.cjs.map +1 -1
  303. package/dist/tracers/console.d.cts.map +1 -1
  304. package/dist/tracers/console.d.ts.map +1 -1
  305. package/dist/tracers/console.js +28 -1
  306. package/dist/tracers/console.js.map +1 -1
  307. package/dist/tracers/event_stream.cjs.map +1 -1
  308. package/dist/tracers/event_stream.js.map +1 -1
  309. package/dist/tracers/tracer_langchain.cjs +70 -2
  310. package/dist/tracers/tracer_langchain.cjs.map +1 -1
  311. package/dist/tracers/tracer_langchain.d.cts +26 -1
  312. package/dist/tracers/tracer_langchain.d.cts.map +1 -1
  313. package/dist/tracers/tracer_langchain.d.ts +26 -1
  314. package/dist/tracers/tracer_langchain.d.ts.map +1 -1
  315. package/dist/tracers/tracer_langchain.js +70 -3
  316. package/dist/tracers/tracer_langchain.js.map +1 -1
  317. package/dist/utils/async_caller.cjs +132 -8
  318. package/dist/utils/async_caller.cjs.map +1 -1
  319. package/dist/utils/async_caller.d.cts +9 -1
  320. package/dist/utils/async_caller.d.cts.map +1 -1
  321. package/dist/utils/async_caller.d.ts +9 -1
  322. package/dist/utils/async_caller.d.ts.map +1 -1
  323. package/dist/utils/async_caller.js +130 -8
  324. package/dist/utils/async_caller.js.map +1 -1
  325. package/dist/utils/callbacks.cjs.map +1 -1
  326. package/dist/utils/callbacks.js.map +1 -1
  327. package/dist/utils/context.cjs.map +1 -1
  328. package/dist/utils/context.js.map +1 -1
  329. package/dist/utils/env.cjs.map +1 -1
  330. package/dist/utils/env.d.cts.map +1 -1
  331. package/dist/utils/env.d.ts.map +1 -1
  332. package/dist/utils/env.js.map +1 -1
  333. package/dist/utils/event_source_parse.cjs +5 -12
  334. package/dist/utils/event_source_parse.cjs.map +1 -1
  335. package/dist/utils/event_source_parse.js +5 -12
  336. package/dist/utils/event_source_parse.js.map +1 -1
  337. package/dist/utils/fast-json-patch/src/core.cjs.map +1 -1
  338. package/dist/utils/fast-json-patch/src/core.js.map +1 -1
  339. package/dist/utils/json_schema.cjs.map +1 -1
  340. package/dist/utils/json_schema.js.map +1 -1
  341. package/dist/utils/p-retry/index.cjs +3 -1
  342. package/dist/utils/p-retry/index.cjs.map +1 -1
  343. package/dist/utils/p-retry/index.js +3 -1
  344. package/dist/utils/p-retry/index.js.map +1 -1
  345. package/dist/utils/sax-js/sax.cjs.map +1 -1
  346. package/dist/utils/sax-js/sax.js.map +1 -1
  347. package/dist/utils/ssrf.cjs.map +1 -1
  348. package/dist/utils/ssrf.js.map +1 -1
  349. package/dist/utils/stream.d.cts +2 -2
  350. package/dist/utils/stream.d.cts.map +1 -1
  351. package/dist/utils/stream.d.ts +2 -2
  352. package/dist/utils/stream.d.ts.map +1 -1
  353. package/dist/utils/testing/chat_models.cjs.map +1 -1
  354. package/dist/utils/testing/chat_models.js.map +1 -1
  355. package/dist/utils/testing/embeddings.cjs.map +1 -1
  356. package/dist/utils/testing/embeddings.js.map +1 -1
  357. package/dist/utils/testing/index.cjs +17 -1
  358. package/dist/utils/testing/index.cjs.map +1 -1
  359. package/dist/utils/testing/index.d.cts +3 -1
  360. package/dist/utils/testing/index.d.ts +3 -1
  361. package/dist/utils/testing/index.js +11 -2
  362. package/dist/utils/testing/index.js.map +1 -1
  363. package/dist/utils/testing/openai_stream_fixtures.cjs +160 -0
  364. package/dist/utils/testing/openai_stream_fixtures.cjs.map +1 -0
  365. package/dist/utils/testing/openai_stream_fixtures.d.cts +12 -0
  366. package/dist/utils/testing/openai_stream_fixtures.d.cts.map +1 -0
  367. package/dist/utils/testing/openai_stream_fixtures.d.ts +12 -0
  368. package/dist/utils/testing/openai_stream_fixtures.d.ts.map +1 -0
  369. package/dist/utils/testing/openai_stream_fixtures.js +155 -0
  370. package/dist/utils/testing/openai_stream_fixtures.js.map +1 -0
  371. package/dist/utils/testing/stream.cjs +136 -0
  372. package/dist/utils/testing/stream.cjs.map +1 -0
  373. package/dist/utils/testing/stream.d.cts +96 -0
  374. package/dist/utils/testing/stream.d.cts.map +1 -0
  375. package/dist/utils/testing/stream.d.ts +96 -0
  376. package/dist/utils/testing/stream.d.ts.map +1 -0
  377. package/dist/utils/testing/stream.js +136 -0
  378. package/dist/utils/testing/stream.js.map +1 -0
  379. package/dist/utils/testing/vectorstores.cjs.map +1 -1
  380. package/dist/utils/testing/vectorstores.js.map +1 -1
  381. package/dist/utils/types/zod.cjs.map +1 -1
  382. package/dist/utils/types/zod.js.map +1 -1
  383. package/dist/utils/uuid/index.cjs +58 -0
  384. package/dist/utils/uuid/index.cjs.map +1 -0
  385. package/dist/utils/uuid/index.d.cts +26 -0
  386. package/dist/utils/uuid/index.d.cts.map +1 -0
  387. package/dist/utils/uuid/index.d.ts +26 -0
  388. package/dist/utils/uuid/index.d.ts.map +1 -0
  389. package/dist/utils/uuid/index.js +41 -0
  390. package/dist/utils/uuid/index.js.map +1 -0
  391. package/dist/utils/uuid/max.cjs +6 -0
  392. package/dist/utils/uuid/max.cjs.map +1 -0
  393. package/dist/utils/uuid/max.js +6 -0
  394. package/dist/utils/uuid/max.js.map +1 -0
  395. package/dist/utils/uuid/nil.cjs +6 -0
  396. package/dist/utils/uuid/nil.cjs.map +1 -0
  397. package/dist/utils/uuid/nil.js +6 -0
  398. package/dist/utils/uuid/nil.js.map +1 -0
  399. package/dist/utils/uuid/parse.cjs +11 -0
  400. package/dist/utils/uuid/parse.cjs.map +1 -0
  401. package/dist/utils/uuid/parse.d.cts +7 -0
  402. package/dist/utils/uuid/parse.d.cts.map +1 -0
  403. package/dist/utils/uuid/parse.d.ts +7 -0
  404. package/dist/utils/uuid/parse.d.ts.map +1 -0
  405. package/dist/utils/uuid/parse.js +11 -0
  406. package/dist/utils/uuid/parse.js.map +1 -0
  407. package/dist/utils/uuid/regex.cjs +6 -0
  408. package/dist/utils/uuid/regex.cjs.map +1 -0
  409. package/dist/utils/uuid/regex.js +6 -0
  410. package/dist/utils/uuid/regex.js.map +1 -0
  411. package/dist/utils/uuid/rng.cjs +9 -0
  412. package/dist/utils/uuid/rng.cjs.map +1 -0
  413. package/dist/utils/uuid/rng.js +9 -0
  414. package/dist/utils/uuid/rng.js.map +1 -0
  415. package/dist/utils/uuid/sha1.cjs +71 -0
  416. package/dist/utils/uuid/sha1.cjs.map +1 -0
  417. package/dist/utils/uuid/sha1.js +71 -0
  418. package/dist/utils/uuid/sha1.js.map +1 -0
  419. package/dist/utils/uuid/stringify.cjs +21 -0
  420. package/dist/utils/uuid/stringify.cjs.map +1 -0
  421. package/dist/utils/uuid/stringify.d.cts +5 -0
  422. package/dist/utils/uuid/stringify.d.cts.map +1 -0
  423. package/dist/utils/uuid/stringify.d.ts +5 -0
  424. package/dist/utils/uuid/stringify.d.ts.map +1 -0
  425. package/dist/utils/uuid/stringify.js +20 -0
  426. package/dist/utils/uuid/stringify.js.map +1 -0
  427. package/dist/utils/uuid/types.d.cts +26 -0
  428. package/dist/utils/uuid/types.d.cts.map +1 -0
  429. package/dist/utils/uuid/types.d.ts +26 -0
  430. package/dist/utils/uuid/types.d.ts.map +1 -0
  431. package/dist/utils/uuid/v1.cjs +69 -0
  432. package/dist/utils/uuid/v1.cjs.map +1 -0
  433. package/dist/utils/uuid/v1.d.cts +8 -0
  434. package/dist/utils/uuid/v1.d.cts.map +1 -0
  435. package/dist/utils/uuid/v1.d.ts +8 -0
  436. package/dist/utils/uuid/v1.d.ts.map +1 -0
  437. package/dist/utils/uuid/v1.js +69 -0
  438. package/dist/utils/uuid/v1.js.map +1 -0
  439. package/dist/utils/uuid/v1ToV6.cjs +14 -0
  440. package/dist/utils/uuid/v1ToV6.cjs.map +1 -0
  441. package/dist/utils/uuid/v1ToV6.js +14 -0
  442. package/dist/utils/uuid/v1ToV6.js.map +1 -0
  443. package/dist/utils/uuid/v35.cjs +36 -0
  444. package/dist/utils/uuid/v35.cjs.map +1 -0
  445. package/dist/utils/uuid/v35.js +34 -0
  446. package/dist/utils/uuid/v35.js.map +1 -0
  447. package/dist/utils/uuid/v4.cjs +25 -0
  448. package/dist/utils/uuid/v4.cjs.map +1 -0
  449. package/dist/utils/uuid/v4.d.cts +8 -0
  450. package/dist/utils/uuid/v4.d.cts.map +1 -0
  451. package/dist/utils/uuid/v4.d.ts +8 -0
  452. package/dist/utils/uuid/v4.d.ts.map +1 -0
  453. package/dist/utils/uuid/v4.js +25 -0
  454. package/dist/utils/uuid/v4.js.map +1 -0
  455. package/dist/utils/uuid/v5.cjs +12 -0
  456. package/dist/utils/uuid/v5.cjs.map +1 -0
  457. package/dist/utils/uuid/v5.d.cts +14 -0
  458. package/dist/utils/uuid/v5.d.cts.map +1 -0
  459. package/dist/utils/uuid/v5.d.ts +14 -0
  460. package/dist/utils/uuid/v5.d.ts.map +1 -0
  461. package/dist/utils/uuid/v5.js +12 -0
  462. package/dist/utils/uuid/v5.js.map +1 -0
  463. package/dist/utils/uuid/v6.cjs +23 -0
  464. package/dist/utils/uuid/v6.cjs.map +1 -0
  465. package/dist/utils/uuid/v6.d.cts +8 -0
  466. package/dist/utils/uuid/v6.d.cts.map +1 -0
  467. package/dist/utils/uuid/v6.d.ts +8 -0
  468. package/dist/utils/uuid/v6.d.ts.map +1 -0
  469. package/dist/utils/uuid/v6.js +23 -0
  470. package/dist/utils/uuid/v6.js.map +1 -0
  471. package/dist/utils/uuid/v7.cjs +57 -0
  472. package/dist/utils/uuid/v7.cjs.map +1 -0
  473. package/dist/utils/uuid/v7.d.cts +8 -0
  474. package/dist/utils/uuid/v7.d.cts.map +1 -0
  475. package/dist/utils/uuid/v7.d.ts +8 -0
  476. package/dist/utils/uuid/v7.d.ts.map +1 -0
  477. package/dist/utils/uuid/v7.js +57 -0
  478. package/dist/utils/uuid/v7.js.map +1 -0
  479. package/dist/utils/uuid/validate.cjs +9 -0
  480. package/dist/utils/uuid/validate.cjs.map +1 -0
  481. package/dist/utils/uuid/validate.d.cts +5 -0
  482. package/dist/utils/uuid/validate.d.cts.map +1 -0
  483. package/dist/utils/uuid/validate.d.ts +5 -0
  484. package/dist/utils/uuid/validate.d.ts.map +1 -0
  485. package/dist/utils/uuid/validate.js +9 -0
  486. package/dist/utils/uuid/validate.js.map +1 -0
  487. package/dist/utils/uuid/version.cjs +10 -0
  488. package/dist/utils/uuid/version.cjs.map +1 -0
  489. package/dist/utils/uuid/version.d.cts +5 -0
  490. package/dist/utils/uuid/version.d.cts.map +1 -0
  491. package/dist/utils/uuid/version.d.ts +5 -0
  492. package/dist/utils/uuid/version.d.ts.map +1 -0
  493. package/dist/utils/uuid/version.js +10 -0
  494. package/dist/utils/uuid/version.js.map +1 -0
  495. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.cjs.map +1 -1
  496. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.js.map +1 -1
  497. package/dist/utils/zod-to-json-schema/parsers/pipeline.cjs.map +1 -1
  498. package/dist/utils/zod-to-json-schema/parsers/pipeline.js.map +1 -1
  499. package/dist/utils/zod-to-json-schema/parsers/set.cjs.map +1 -1
  500. package/dist/utils/zod-to-json-schema/parsers/set.js.map +1 -1
  501. package/dist/utils/zod-to-json-schema/parsers/string.cjs +26 -0
  502. package/dist/utils/zod-to-json-schema/parsers/string.cjs.map +1 -1
  503. package/dist/utils/zod-to-json-schema/parsers/string.js +26 -0
  504. package/dist/utils/zod-to-json-schema/parsers/string.js.map +1 -1
  505. package/dist/vectorstores.cjs.map +1 -1
  506. package/dist/vectorstores.js.map +1 -1
  507. package/document_loaders/base.cjs +1 -0
  508. package/document_loaders/base.d.cts +1 -0
  509. package/document_loaders/base.d.ts +1 -0
  510. package/document_loaders/base.js +1 -0
  511. package/document_loaders/langsmith.cjs +1 -0
  512. package/document_loaders/langsmith.d.cts +1 -0
  513. package/document_loaders/langsmith.d.ts +1 -0
  514. package/document_loaders/langsmith.js +1 -0
  515. package/documents.cjs +1 -0
  516. package/documents.d.cts +1 -0
  517. package/documents.d.ts +1 -0
  518. package/documents.js +1 -0
  519. package/embeddings.cjs +1 -0
  520. package/embeddings.d.cts +1 -0
  521. package/embeddings.d.ts +1 -0
  522. package/embeddings.js +1 -0
  523. package/errors.cjs +1 -0
  524. package/errors.d.cts +1 -0
  525. package/errors.d.ts +1 -0
  526. package/errors.js +1 -0
  527. package/example_selectors.cjs +1 -0
  528. package/example_selectors.d.cts +1 -0
  529. package/example_selectors.d.ts +1 -0
  530. package/example_selectors.js +1 -0
  531. package/indexing.cjs +1 -0
  532. package/indexing.d.cts +1 -0
  533. package/indexing.d.ts +1 -0
  534. package/indexing.js +1 -0
  535. package/language_models/base.cjs +1 -0
  536. package/language_models/base.d.cts +1 -0
  537. package/language_models/base.d.ts +1 -0
  538. package/language_models/base.js +1 -0
  539. package/language_models/chat_models.cjs +1 -0
  540. package/language_models/chat_models.d.cts +1 -0
  541. package/language_models/chat_models.d.ts +1 -0
  542. package/language_models/chat_models.js +1 -0
  543. package/language_models/compat.cjs +1 -0
  544. package/language_models/compat.d.cts +1 -0
  545. package/language_models/compat.d.ts +1 -0
  546. package/language_models/compat.js +1 -0
  547. package/language_models/event.cjs +1 -0
  548. package/language_models/event.d.cts +1 -0
  549. package/language_models/event.d.ts +1 -0
  550. package/language_models/event.js +1 -0
  551. package/language_models/llms.cjs +1 -0
  552. package/language_models/llms.d.cts +1 -0
  553. package/language_models/llms.d.ts +1 -0
  554. package/language_models/llms.js +1 -0
  555. package/language_models/openai_completions_stream.cjs +1 -0
  556. package/language_models/openai_completions_stream.d.cts +1 -0
  557. package/language_models/openai_completions_stream.d.ts +1 -0
  558. package/language_models/openai_completions_stream.js +1 -0
  559. package/language_models/profile.cjs +1 -0
  560. package/language_models/profile.d.cts +1 -0
  561. package/language_models/profile.d.ts +1 -0
  562. package/language_models/profile.js +1 -0
  563. package/language_models/stream.cjs +1 -0
  564. package/language_models/stream.d.cts +1 -0
  565. package/language_models/stream.d.ts +1 -0
  566. package/language_models/stream.js +1 -0
  567. package/language_models/structured_output.cjs +1 -0
  568. package/language_models/structured_output.d.cts +1 -0
  569. package/language_models/structured_output.d.ts +1 -0
  570. package/language_models/structured_output.js +1 -0
  571. package/load/serializable.cjs +1 -0
  572. package/load/serializable.d.cts +1 -0
  573. package/load/serializable.d.ts +1 -0
  574. package/load/serializable.js +1 -0
  575. package/load.cjs +1 -0
  576. package/load.d.cts +1 -0
  577. package/load.d.ts +1 -0
  578. package/load.js +1 -0
  579. package/memory.cjs +1 -0
  580. package/memory.d.cts +1 -0
  581. package/memory.d.ts +1 -0
  582. package/memory.js +1 -0
  583. package/messages/tool.cjs +1 -0
  584. package/messages/tool.d.cts +1 -0
  585. package/messages/tool.d.ts +1 -0
  586. package/messages/tool.js +1 -0
  587. package/messages.cjs +1 -0
  588. package/messages.d.cts +1 -0
  589. package/messages.d.ts +1 -0
  590. package/messages.js +1 -0
  591. package/output_parsers/openai_functions.cjs +1 -0
  592. package/output_parsers/openai_functions.d.cts +1 -0
  593. package/output_parsers/openai_functions.d.ts +1 -0
  594. package/output_parsers/openai_functions.js +1 -0
  595. package/output_parsers/openai_tools.cjs +1 -0
  596. package/output_parsers/openai_tools.d.cts +1 -0
  597. package/output_parsers/openai_tools.d.ts +1 -0
  598. package/output_parsers/openai_tools.js +1 -0
  599. package/output_parsers.cjs +1 -0
  600. package/output_parsers.d.cts +1 -0
  601. package/output_parsers.d.ts +1 -0
  602. package/output_parsers.js +1 -0
  603. package/outputs.cjs +1 -0
  604. package/outputs.d.cts +1 -0
  605. package/outputs.d.ts +1 -0
  606. package/outputs.js +1 -0
  607. package/package.json +34 -14
  608. package/prompt_values.cjs +1 -0
  609. package/prompt_values.d.cts +1 -0
  610. package/prompt_values.d.ts +1 -0
  611. package/prompt_values.js +1 -0
  612. package/prompts.cjs +1 -0
  613. package/prompts.d.cts +1 -0
  614. package/prompts.d.ts +1 -0
  615. package/prompts.js +1 -0
  616. package/retrievers/document_compressors.cjs +1 -0
  617. package/retrievers/document_compressors.d.cts +1 -0
  618. package/retrievers/document_compressors.d.ts +1 -0
  619. package/retrievers/document_compressors.js +1 -0
  620. package/retrievers.cjs +1 -0
  621. package/retrievers.d.cts +1 -0
  622. package/retrievers.d.ts +1 -0
  623. package/retrievers.js +1 -0
  624. package/runnables/graph.cjs +1 -0
  625. package/runnables/graph.d.cts +1 -0
  626. package/runnables/graph.d.ts +1 -0
  627. package/runnables/graph.js +1 -0
  628. package/runnables.cjs +1 -0
  629. package/runnables.d.cts +1 -0
  630. package/runnables.d.ts +1 -0
  631. package/runnables.js +1 -0
  632. package/singletons.cjs +1 -0
  633. package/singletons.d.cts +1 -0
  634. package/singletons.d.ts +1 -0
  635. package/singletons.js +1 -0
  636. package/stores.cjs +1 -0
  637. package/stores.d.cts +1 -0
  638. package/stores.d.ts +1 -0
  639. package/stores.js +1 -0
  640. package/structured_query.cjs +1 -0
  641. package/structured_query.d.cts +1 -0
  642. package/structured_query.d.ts +1 -0
  643. package/structured_query.js +1 -0
  644. package/testing.cjs +1 -0
  645. package/testing.d.cts +1 -0
  646. package/testing.d.ts +1 -0
  647. package/testing.js +1 -0
  648. package/tools.cjs +1 -0
  649. package/tools.d.cts +1 -0
  650. package/tools.d.ts +1 -0
  651. package/tools.js +1 -0
  652. package/tracers/base.cjs +1 -0
  653. package/tracers/base.d.cts +1 -0
  654. package/tracers/base.d.ts +1 -0
  655. package/tracers/base.js +1 -0
  656. package/tracers/console.cjs +1 -0
  657. package/tracers/console.d.cts +1 -0
  658. package/tracers/console.d.ts +1 -0
  659. package/tracers/console.js +1 -0
  660. package/tracers/log_stream.cjs +1 -0
  661. package/tracers/log_stream.d.cts +1 -0
  662. package/tracers/log_stream.d.ts +1 -0
  663. package/tracers/log_stream.js +1 -0
  664. package/tracers/run_collector.cjs +1 -0
  665. package/tracers/run_collector.d.cts +1 -0
  666. package/tracers/run_collector.d.ts +1 -0
  667. package/tracers/run_collector.js +1 -0
  668. package/tracers/tracer_langchain.cjs +1 -0
  669. package/tracers/tracer_langchain.d.cts +1 -0
  670. package/tracers/tracer_langchain.d.ts +1 -0
  671. package/tracers/tracer_langchain.js +1 -0
  672. package/types/stream.cjs +1 -0
  673. package/types/stream.d.cts +1 -0
  674. package/types/stream.d.ts +1 -0
  675. package/types/stream.js +1 -0
  676. package/utils/async_caller.cjs +1 -0
  677. package/utils/async_caller.d.cts +1 -0
  678. package/utils/async_caller.d.ts +1 -0
  679. package/utils/async_caller.js +1 -0
  680. package/utils/chunk_array.cjs +1 -0
  681. package/utils/chunk_array.d.cts +1 -0
  682. package/utils/chunk_array.d.ts +1 -0
  683. package/utils/chunk_array.js +1 -0
  684. package/utils/context.cjs +1 -0
  685. package/utils/context.d.cts +1 -0
  686. package/utils/context.d.ts +1 -0
  687. package/utils/context.js +1 -0
  688. package/utils/env.cjs +1 -0
  689. package/utils/env.d.cts +1 -0
  690. package/utils/env.d.ts +1 -0
  691. package/utils/env.js +1 -0
  692. package/utils/event_source_parse.cjs +1 -0
  693. package/utils/event_source_parse.d.cts +1 -0
  694. package/utils/event_source_parse.d.ts +1 -0
  695. package/utils/event_source_parse.js +1 -0
  696. package/utils/format.cjs +1 -0
  697. package/utils/format.d.cts +1 -0
  698. package/utils/format.d.ts +1 -0
  699. package/utils/format.js +1 -0
  700. package/utils/function_calling.cjs +1 -0
  701. package/utils/function_calling.d.cts +1 -0
  702. package/utils/function_calling.d.ts +1 -0
  703. package/utils/function_calling.js +1 -0
  704. package/utils/hash.cjs +1 -0
  705. package/utils/hash.d.cts +1 -0
  706. package/utils/hash.d.ts +1 -0
  707. package/utils/hash.js +1 -0
  708. package/utils/json_patch.cjs +1 -0
  709. package/utils/json_patch.d.cts +1 -0
  710. package/utils/json_patch.d.ts +1 -0
  711. package/utils/json_patch.js +1 -0
  712. package/utils/json_schema.cjs +1 -0
  713. package/utils/json_schema.d.cts +1 -0
  714. package/utils/json_schema.d.ts +1 -0
  715. package/utils/json_schema.js +1 -0
  716. package/utils/math.cjs +1 -0
  717. package/utils/math.d.cts +1 -0
  718. package/utils/math.d.ts +1 -0
  719. package/utils/math.js +1 -0
  720. package/utils/ssrf.cjs +1 -0
  721. package/utils/ssrf.d.cts +1 -0
  722. package/utils/ssrf.d.ts +1 -0
  723. package/utils/ssrf.js +1 -0
  724. package/utils/standard_schema.cjs +1 -0
  725. package/utils/standard_schema.d.cts +1 -0
  726. package/utils/standard_schema.d.ts +1 -0
  727. package/utils/standard_schema.js +1 -0
  728. package/utils/stream.cjs +1 -0
  729. package/utils/stream.d.cts +1 -0
  730. package/utils/stream.d.ts +1 -0
  731. package/utils/stream.js +1 -0
  732. package/utils/testing.cjs +1 -0
  733. package/utils/testing.d.cts +1 -0
  734. package/utils/testing.d.ts +1 -0
  735. package/utils/testing.js +1 -0
  736. package/utils/tiktoken.cjs +1 -0
  737. package/utils/tiktoken.d.cts +1 -0
  738. package/utils/tiktoken.d.ts +1 -0
  739. package/utils/tiktoken.js +1 -0
  740. package/utils/types.cjs +1 -0
  741. package/utils/types.d.cts +1 -0
  742. package/utils/types.d.ts +1 -0
  743. package/utils/types.js +1 -0
  744. package/utils/uuid.cjs +1 -0
  745. package/utils/uuid.d.cts +1 -0
  746. package/utils/uuid.d.ts +1 -0
  747. package/utils/uuid.js +1 -0
  748. package/vectorstores.cjs +1 -0
  749. package/vectorstores.d.cts +1 -0
  750. package/vectorstores.d.ts +1 -0
  751. package/vectorstores.js +1 -0
@@ -7,33 +7,98 @@ const require_ai = require("../messages/ai.cjs");
7
7
  * (`ChatGenerationChunk` / `AIMessageChunk`) output to the new
8
8
  * `ChatModelStreamEvent` protocol.
9
9
  *
10
- * This module is used by `BaseChatModel._streamChatModelEvents` as
11
- * the default implementation when a provider has not yet implemented
12
- * native event streaming.
13
- *
14
10
  * @module
15
11
  */
16
12
  var compat_exports = /* @__PURE__ */ require_runtime.__exportAll({
17
- accumulateContentBlock: () => accumulateContentBlock,
18
13
  convertChunksToEvents: () => convertChunksToEvents,
19
14
  finalizeContentBlock: () => finalizeContentBlock
20
15
  });
16
+ const MIME_TYPE_BY_AUDIO_FORMAT = {
17
+ wav: "audio/wav",
18
+ mp3: "audio/mpeg",
19
+ flac: "audio/flac",
20
+ opus: "audio/opus",
21
+ aac: "audio/aac",
22
+ pcm16: "audio/pcm"
23
+ };
24
+ const MIME_TYPE_BY_IMAGE_FORMAT = {
25
+ png: "image/png",
26
+ jpeg: "image/jpeg",
27
+ jpg: "image/jpeg",
28
+ webp: "image/webp",
29
+ gif: "image/gif"
30
+ };
31
+ function nextBlockIndex(activeBlocks) {
32
+ let next = 0;
33
+ for (const index of activeBlocks.keys()) if (index >= next) next = index + 1;
34
+ return next;
35
+ }
36
+ function getAdditionalKwargs(message) {
37
+ const additional = message.additional_kwargs;
38
+ return additional != null && typeof additional === "object" ? additional : {};
39
+ }
40
+ function extractImageBlocksFromToolOutputs(message) {
41
+ const toolOutputs = getAdditionalKwargs(message).tool_outputs;
42
+ if (!Array.isArray(toolOutputs)) return [];
43
+ const blocks = [];
44
+ for (const entry of toolOutputs) {
45
+ if (entry == null || typeof entry !== "object") continue;
46
+ const record = entry;
47
+ if (record.type !== "image_generation_call") continue;
48
+ const data = typeof record.result === "string" ? record.result : void 0;
49
+ const url = typeof record.url === "string" ? record.url : void 0;
50
+ if (data == null && url == null) continue;
51
+ const outputFormat = typeof record.output_format === "string" ? record.output_format.toLowerCase() : void 0;
52
+ const mimeType = (outputFormat != null ? MIME_TYPE_BY_IMAGE_FORMAT[outputFormat] : void 0) ?? "image/png";
53
+ blocks.push({
54
+ type: "image",
55
+ ...typeof record.id === "string" ? { id: record.id } : {},
56
+ ...url != null ? { url } : {},
57
+ ...data != null ? { data } : {},
58
+ mimeType
59
+ });
60
+ }
61
+ return blocks;
62
+ }
21
63
  /**
22
- * Convert an async iterable of legacy `ChatGenerationChunk`s into
23
- * `ChatModelStreamEvent`s.
64
+ * Get the audio payload from the message.
24
65
  *
25
- * Tracks content blocks by index, synthesizes start/delta/finish events,
26
- * and emits usage updates. Handles both string content and array content
27
- * blocks, as well as tool call chunks.
66
+ * This handles the OpenAI-shaped `additional_kwargs.audio` payload used by
67
+ * legacy chunk streams; other providers must normalize into this shape first.
28
68
  *
29
- * @param chunks - The legacy chunk stream from `_streamResponseChunks`.
30
- * @param options - Optional signal for abort handling.
31
- * @returns An async generator of {@link ChatModelStreamEvent}.
69
+ * @param message - The message to get the audio payload from.
70
+ * @returns The audio payload.
71
+ * @internal
72
+ */
73
+ function getAudioPayload(message) {
74
+ const audio = getAdditionalKwargs(message).audio;
75
+ if (audio == null || typeof audio !== "object") return void 0;
76
+ const record = audio;
77
+ const data = typeof record.data === "string" ? record.data : void 0;
78
+ const url = typeof record.url === "string" ? record.url : void 0;
79
+ const transcript = typeof record.transcript === "string" ? record.transcript : void 0;
80
+ if (data == null && url == null && transcript == null) return void 0;
81
+ const explicitMimeType = typeof record.mime_type === "string" ? record.mime_type : typeof record.mimeType === "string" ? record.mimeType : void 0;
82
+ const format = typeof record.format === "string" ? record.format.toLowerCase() : void 0;
83
+ const mimeType = explicitMimeType ?? (format != null ? MIME_TYPE_BY_AUDIO_FORMAT[format] : void 0) ?? (data != null ? "audio/wav" : "audio/pcm");
84
+ return {
85
+ ...typeof record.id === "string" ? { id: record.id } : {},
86
+ ...data != null ? { data } : {},
87
+ ...url != null ? { url } : {},
88
+ ...transcript != null ? { transcript } : {},
89
+ mimeType
90
+ };
91
+ }
92
+ /**
93
+ * Convert an async iterable of legacy `ChatGenerationChunk`s into
94
+ * `ChatModelStreamEvent`s with typed deltas.
32
95
  */
33
96
  async function* convertChunksToEvents(chunks, options) {
34
97
  const activeBlocks = /* @__PURE__ */ new Map();
35
98
  let messageStarted = false;
36
99
  let lastUsage;
100
+ let audioStream;
101
+ const emittedImageKeys = /* @__PURE__ */ new Set();
37
102
  for await (const chunk of chunks) {
38
103
  options?.signal?.throwIfAborted();
39
104
  const msg = chunk.message;
@@ -41,7 +106,7 @@ async function* convertChunksToEvents(chunks, options) {
41
106
  if (!messageStarted) {
42
107
  messageStarted = true;
43
108
  const startEvent = {
44
- type: "message-start",
109
+ event: "message-start",
45
110
  id: msg.id ?? void 0
46
111
  };
47
112
  if (require_ai.AIMessageChunk.isInstance(msg) && msg.usage_metadata) {
@@ -61,79 +126,168 @@ async function* convertChunksToEvents(chunks, options) {
61
126
  text: ""
62
127
  };
63
128
  activeBlocks.set(blockIndex, {
64
- started: true,
129
+ type: "text",
65
130
  accumulated: initial
66
131
  });
67
132
  yield {
68
- type: "content-block-start",
133
+ event: "content-block-start",
69
134
  index: blockIndex,
70
135
  content: initial
71
136
  };
72
137
  }
73
138
  const block = activeBlocks.get(blockIndex);
74
- const accumulated = {
75
- type: "text",
76
- text: block.accumulated.text + content
139
+ block.accumulated = {
140
+ ...block.accumulated,
141
+ text: (block.accumulated.text ?? "") + content
77
142
  };
78
- block.accumulated = accumulated;
79
143
  yield {
80
- type: "content-block-delta",
144
+ event: "content-block-delta",
81
145
  index: blockIndex,
82
- content: accumulated
146
+ delta: {
147
+ type: "text-delta",
148
+ text: content
149
+ }
83
150
  };
84
151
  }
85
152
  } else if (Array.isArray(content)) for (const part of content) {
86
153
  const blockIndex = typeof part.index === "number" ? part.index : activeBlocks.size;
87
154
  if (!activeBlocks.has(blockIndex)) {
88
155
  activeBlocks.set(blockIndex, {
89
- started: true,
156
+ type: part.type,
90
157
  accumulated: { ...part }
91
158
  });
92
159
  yield {
93
- type: "content-block-start",
160
+ event: "content-block-start",
94
161
  index: blockIndex,
95
162
  content: { ...part }
96
163
  };
97
164
  } else {
98
165
  const block = activeBlocks.get(blockIndex);
99
- const accumulated = accumulateContentBlock(block.accumulated, part);
100
- block.accumulated = accumulated;
166
+ const delta = contentBlockToDelta(part);
167
+ block.accumulated = applyDeltaToBlock(block.accumulated, delta);
101
168
  yield {
102
- type: "content-block-delta",
169
+ event: "content-block-delta",
103
170
  index: blockIndex,
104
- content: accumulated
171
+ delta
105
172
  };
106
173
  }
107
174
  }
108
175
  if (require_ai.AIMessageChunk.isInstance(msg) && msg.tool_call_chunks && msg.tool_call_chunks.length > 0) for (const toolChunk of msg.tool_call_chunks) {
109
176
  const blockIndex = typeof toolChunk.index === "number" ? toolChunk.index : activeBlocks.size;
110
- const delta = {
111
- type: "tool_call_chunk",
112
- id: toolChunk.id,
113
- name: toolChunk.name,
114
- args: toolChunk.args,
115
- index: blockIndex
116
- };
117
177
  if (!activeBlocks.has(blockIndex)) {
178
+ const initial = {
179
+ type: "tool_call_chunk",
180
+ id: toolChunk.id,
181
+ name: toolChunk.name,
182
+ args: "",
183
+ index: blockIndex
184
+ };
118
185
  activeBlocks.set(blockIndex, {
119
- started: true,
120
- accumulated: { ...delta }
186
+ type: "tool_call_chunk",
187
+ accumulated: initial
121
188
  });
122
189
  yield {
123
- type: "content-block-start",
190
+ event: "content-block-start",
124
191
  index: blockIndex,
125
- content: { ...delta }
192
+ content: initial
126
193
  };
127
- } else {
128
- const block = activeBlocks.get(blockIndex);
129
- const accumulated = accumulateContentBlock(block.accumulated, delta);
130
- block.accumulated = accumulated;
194
+ }
195
+ const acc = activeBlocks.get(blockIndex).accumulated;
196
+ if (toolChunk.id != null) acc.id = toolChunk.id;
197
+ if (toolChunk.name != null) acc.name = toolChunk.name;
198
+ acc.args = (acc.args ?? "") + (toolChunk.args ?? "");
199
+ yield {
200
+ event: "content-block-delta",
201
+ index: blockIndex,
202
+ delta: {
203
+ type: "block-delta",
204
+ fields: {
205
+ type: "tool_call_chunk",
206
+ ..."id" in acc && acc.id != null ? { id: acc.id } : {},
207
+ ..."name" in acc && acc.name != null ? { name: acc.name } : {},
208
+ args: acc.args
209
+ }
210
+ }
211
+ };
212
+ }
213
+ const audioPayload = getAudioPayload(msg);
214
+ if (audioPayload != null) {
215
+ if (audioStream == null) {
216
+ const index = nextBlockIndex(activeBlocks);
217
+ audioStream = {
218
+ index,
219
+ id: audioPayload.id,
220
+ mimeType: audioPayload.mimeType,
221
+ transcript: ""
222
+ };
223
+ const initial = {
224
+ type: "audio",
225
+ ...audioPayload.id != null ? { id: audioPayload.id } : {},
226
+ ...audioPayload.url != null ? { url: audioPayload.url } : {},
227
+ data: "",
228
+ mimeType: audioPayload.mimeType
229
+ };
230
+ activeBlocks.set(index, {
231
+ type: "audio",
232
+ accumulated: initial
233
+ });
131
234
  yield {
132
- type: "content-block-delta",
133
- index: blockIndex,
134
- content: accumulated
235
+ event: "content-block-start",
236
+ index,
237
+ content: initial
135
238
  };
136
239
  }
240
+ const activeAudio = activeBlocks.get(audioStream.index);
241
+ if (activeAudio != null) {
242
+ const accumulated = activeAudio.accumulated;
243
+ if (audioPayload.id != null && audioStream.id == null) {
244
+ audioStream.id = audioPayload.id;
245
+ accumulated.id = audioPayload.id;
246
+ }
247
+ if (audioPayload.transcript != null) {
248
+ audioStream.transcript += audioPayload.transcript;
249
+ accumulated.transcript = audioStream.transcript;
250
+ yield {
251
+ event: "content-block-delta",
252
+ index: audioStream.index,
253
+ delta: {
254
+ type: "block-delta",
255
+ fields: {
256
+ type: "audio",
257
+ transcript: audioStream.transcript
258
+ }
259
+ }
260
+ };
261
+ }
262
+ if (audioPayload.data != null && audioPayload.data.length > 0) {
263
+ accumulated.data = (accumulated.data ?? "") + audioPayload.data;
264
+ yield {
265
+ event: "content-block-delta",
266
+ index: audioStream.index,
267
+ delta: {
268
+ type: "data-delta",
269
+ data: audioPayload.data,
270
+ encoding: "base64"
271
+ }
272
+ };
273
+ }
274
+ }
275
+ }
276
+ for (const imageBlock of extractImageBlocksFromToolOutputs(msg)) {
277
+ const imageRecord = imageBlock;
278
+ const imageKey = imageRecord.id ?? imageRecord.url ?? (imageRecord.data != null ? `${imageRecord.data.length}:${imageRecord.data.slice(0, 32)}` : void 0);
279
+ if (imageKey != null && emittedImageKeys.has(imageKey)) continue;
280
+ if (imageKey != null) emittedImageKeys.add(imageKey);
281
+ const index = nextBlockIndex(activeBlocks);
282
+ activeBlocks.set(index, {
283
+ type: "image",
284
+ accumulated: imageBlock
285
+ });
286
+ yield {
287
+ event: "content-block-start",
288
+ index,
289
+ content: imageBlock
290
+ };
137
291
  }
138
292
  if (!usageHandledInStart && require_ai.AIMessageChunk.isInstance(msg) && msg.usage_metadata) {
139
293
  const chunkUsage = msg.usage_metadata;
@@ -144,58 +298,82 @@ async function* convertChunksToEvents(chunks, options) {
144
298
  total_tokens: lastUsage.total_tokens + chunkUsage.total_tokens
145
299
  };
146
300
  yield {
147
- type: "usage",
301
+ event: "usage",
148
302
  usage: { ...lastUsage }
149
303
  };
150
304
  }
151
305
  }
152
306
  for (const [index, block] of activeBlocks) yield {
153
- type: "content-block-finish",
307
+ event: "content-block-finish",
154
308
  index,
155
309
  content: finalizeContentBlock(block.accumulated)
156
310
  };
157
311
  yield {
158
- type: "message-finish",
312
+ event: "message-finish",
159
313
  reason: "stop",
160
314
  ...lastUsage ? { usage: lastUsage } : {}
161
315
  };
162
316
  }
163
317
  /**
164
- * Accumulate a content block delta into the running snapshot.
318
+ * Apply a typed delta to an accumulated content block.
319
+ * @internal
165
320
  */
166
- function accumulateContentBlock(accumulated, delta) {
167
- if (accumulated.type === "text" && delta.type === "text") return {
168
- ...accumulated,
169
- type: "text",
170
- text: accumulated.text + (delta.text ?? "")
171
- };
172
- if (accumulated.type === "reasoning" && delta.type === "reasoning") return {
173
- ...accumulated,
174
- type: "reasoning",
175
- reasoning: accumulated.reasoning + (delta.reasoning ?? "")
176
- };
177
- if ((accumulated.type === "tool_call_chunk" || accumulated.type === "tool_call") && (delta.type === "tool_call_chunk" || delta.type === "tool_call")) {
178
- const accTC = accumulated;
179
- const deltaTC = delta;
180
- return {
181
- ...accumulated,
182
- type: "tool_call_chunk",
183
- id: accTC.id ?? deltaTC.id,
184
- name: accTC.name ?? deltaTC.name,
185
- args: (accTC.args ?? "") + (deltaTC.args ?? ""),
186
- index: accTC.index ?? deltaTC.index
321
+ function applyDeltaToBlock(block, delta) {
322
+ switch (delta.type) {
323
+ case "text-delta":
324
+ if (block.type === "text") return {
325
+ ...block,
326
+ text: (block.text ?? "") + delta.text
327
+ };
328
+ return block;
329
+ case "reasoning-delta":
330
+ if (block.type === "thinking") return {
331
+ ...block,
332
+ thinking: (block.thinking ?? "") + delta.reasoning
333
+ };
334
+ if (block.type === "reasoning") return {
335
+ ...block,
336
+ reasoning: (block.reasoning ?? "") + delta.reasoning
337
+ };
338
+ return block;
339
+ case "data-delta": return {
340
+ ...block,
341
+ data: (block.data ?? "") + delta.data
342
+ };
343
+ case "block-delta": return {
344
+ ...block,
345
+ ...delta.fields
187
346
  };
347
+ default: throw new Error(`Unknown delta type: ${JSON.stringify(delta)}`);
188
348
  }
189
- return {
190
- ...accumulated,
191
- ...delta
349
+ }
350
+ function contentBlockToDelta(block) {
351
+ if (block.type === "text") return {
352
+ type: "text-delta",
353
+ text: block.text
354
+ };
355
+ if (block.type === "reasoning") return {
356
+ type: "reasoning-delta",
357
+ reasoning: block.reasoning
358
+ };
359
+ if (block.type === "thinking" && typeof block.thinking === "string") return {
360
+ type: "reasoning-delta",
361
+ reasoning: block.thinking
192
362
  };
363
+ if (typeof block.data === "string") return {
364
+ type: "data-delta",
365
+ data: block.data,
366
+ encoding: "base64"
367
+ };
368
+ if (typeof block.type === "string") return {
369
+ type: "block-delta",
370
+ fields: { ...block }
371
+ };
372
+ throw new Error(`Unsupported content block delta: ${JSON.stringify(block)}`);
193
373
  }
194
374
  /**
195
375
  * Finalize a content block for the finish event.
196
- *
197
- * For tool calls, attempts to parse the accumulated args JSON string
198
- * into an object, upgrading from `tool_call_chunk` to `tool_call`.
376
+ * For tool calls, parse the accumulated JSON args string.
199
377
  */
200
378
  function finalizeContentBlock(block) {
201
379
  if (block.type === "tool_call_chunk") {
@@ -222,7 +400,6 @@ function finalizeContentBlock(block) {
222
400
  return block;
223
401
  }
224
402
  //#endregion
225
- exports.accumulateContentBlock = accumulateContentBlock;
226
403
  Object.defineProperty(exports, "compat_exports", {
227
404
  enumerable: true,
228
405
  get: function() {
@@ -1 +1 @@
1
- {"version":3,"file":"compat.cjs","names":["AIMessageChunk"],"sources":["../../src/language_models/compat.ts"],"sourcesContent":["/**\n * Compatibility bridge: converts legacy `_streamResponseChunks`\n * (`ChatGenerationChunk` / `AIMessageChunk`) output to the new\n * `ChatModelStreamEvent` protocol.\n *\n * This module is used by `BaseChatModel._streamChatModelEvents` as\n * the default implementation when a provider has not yet implemented\n * native event streaming.\n *\n * @module\n */\n\nimport { AIMessageChunk } from \"../messages/ai.js\";\nimport type { ContentBlock } from \"../messages/content/index.js\";\nimport type { ChatGenerationChunk } from \"../outputs.js\";\nimport type { ChatModelStreamEvent } from \"./event.js\";\n\n/**\n * Convert an async iterable of legacy `ChatGenerationChunk`s into\n * `ChatModelStreamEvent`s.\n *\n * Tracks content blocks by index, synthesizes start/delta/finish events,\n * and emits usage updates. Handles both string content and array content\n * blocks, as well as tool call chunks.\n *\n * @param chunks - The legacy chunk stream from `_streamResponseChunks`.\n * @param options - Optional signal for abort handling.\n * @returns An async generator of {@link ChatModelStreamEvent}.\n */\nexport async function* convertChunksToEvents(\n chunks: AsyncIterable<ChatGenerationChunk>,\n options?: { signal?: AbortSignal }\n): AsyncGenerator<ChatModelStreamEvent> {\n // Track active content blocks for the bridge\n const activeBlocks = new Map<\n number,\n { started: boolean; accumulated: ContentBlock }\n >();\n let messageStarted = false;\n let lastUsage:\n | { input_tokens: number; output_tokens: number; total_tokens: number }\n | undefined;\n\n for await (const chunk of chunks) {\n options?.signal?.throwIfAborted();\n\n const msg = chunk.message;\n\n // Emit message-start on the first chunk\n let usageHandledInStart = false;\n if (!messageStarted) {\n messageStarted = true;\n const startEvent: ChatModelStreamEvent = {\n type: \"message-start\" as const,\n id: msg.id ?? undefined,\n };\n // If first chunk has usage (e.g., Anthropic input tokens)\n if (AIMessageChunk.isInstance(msg) && msg.usage_metadata) {\n (startEvent as { usage?: unknown }).usage = msg.usage_metadata;\n lastUsage = { ...msg.usage_metadata };\n usageHandledInStart = true;\n }\n yield startEvent;\n }\n\n // Process content from the chunk\n const content = msg.content;\n if (typeof content === \"string\") {\n if (content !== \"\") {\n // Simple string content → single text block at index 0\n const blockIndex = 0;\n\n if (!activeBlocks.has(blockIndex)) {\n const initial: ContentBlock.Text = { type: \"text\", text: \"\" };\n activeBlocks.set(blockIndex, {\n started: true,\n accumulated: initial,\n });\n yield {\n type: \"content-block-start\" as const,\n index: blockIndex,\n content: initial,\n };\n }\n\n const block = activeBlocks.get(blockIndex)!;\n const prevText = (block.accumulated as ContentBlock.Text).text;\n const accumulated: ContentBlock.Text = {\n type: \"text\",\n text: prevText + content,\n };\n block.accumulated = accumulated;\n\n yield {\n type: \"content-block-delta\" as const,\n index: blockIndex,\n content: accumulated,\n };\n }\n } else if (Array.isArray(content)) {\n for (const part of content) {\n const blockIndex =\n typeof part.index === \"number\" ? part.index : activeBlocks.size;\n\n if (!activeBlocks.has(blockIndex)) {\n activeBlocks.set(blockIndex, {\n started: true,\n accumulated: { ...part },\n });\n yield {\n type: \"content-block-start\" as const,\n index: blockIndex,\n content: { ...part },\n };\n } else {\n // Accumulate into existing block\n const block = activeBlocks.get(blockIndex)!;\n const accumulated = accumulateContentBlock(block.accumulated, part);\n block.accumulated = accumulated;\n\n yield {\n type: \"content-block-delta\" as const,\n index: blockIndex,\n content: accumulated,\n };\n }\n }\n }\n\n // Handle tool call chunks from the legacy path\n if (\n AIMessageChunk.isInstance(msg) &&\n msg.tool_call_chunks &&\n msg.tool_call_chunks.length > 0\n ) {\n for (const toolChunk of msg.tool_call_chunks) {\n const blockIndex =\n typeof toolChunk.index === \"number\"\n ? toolChunk.index\n : activeBlocks.size;\n\n const delta: ContentBlock = {\n type: \"tool_call_chunk\" as const,\n id: toolChunk.id,\n name: toolChunk.name,\n args: toolChunk.args,\n index: blockIndex,\n };\n\n if (!activeBlocks.has(blockIndex)) {\n activeBlocks.set(blockIndex, {\n started: true,\n accumulated: { ...delta },\n });\n yield {\n type: \"content-block-start\" as const,\n index: blockIndex,\n content: { ...delta },\n };\n } else {\n const block = activeBlocks.get(blockIndex)!;\n const accumulated = accumulateContentBlock(block.accumulated, delta);\n block.accumulated = accumulated;\n\n yield {\n type: \"content-block-delta\" as const,\n index: blockIndex,\n content: accumulated,\n };\n }\n }\n }\n\n // Accumulate usage (legacy chunks use additive usage, not snapshots)\n if (\n !usageHandledInStart &&\n AIMessageChunk.isInstance(msg) &&\n msg.usage_metadata\n ) {\n const chunkUsage = msg.usage_metadata;\n if (!lastUsage) {\n lastUsage = { ...chunkUsage };\n } else {\n lastUsage = {\n input_tokens: lastUsage.input_tokens + chunkUsage.input_tokens,\n output_tokens: lastUsage.output_tokens + chunkUsage.output_tokens,\n total_tokens: lastUsage.total_tokens + chunkUsage.total_tokens,\n };\n }\n yield { type: \"usage\" as const, usage: { ...lastUsage } };\n }\n }\n\n // Emit content-block-finish for all active blocks\n for (const [index, block] of activeBlocks) {\n const finalized = finalizeContentBlock(block.accumulated);\n yield {\n type: \"content-block-finish\" as const,\n index,\n content: finalized,\n };\n }\n\n // Emit message-finish\n yield {\n type: \"message-finish\" as const,\n reason: \"stop\" as const,\n ...(lastUsage ? { usage: lastUsage } : {}),\n };\n}\n\n/**\n * Accumulate a content block delta into the running snapshot.\n */\nexport function accumulateContentBlock(\n accumulated: ContentBlock,\n delta: ContentBlock\n): ContentBlock {\n if (accumulated.type === \"text\" && delta.type === \"text\") {\n return {\n ...accumulated,\n type: \"text\" as const,\n text:\n (accumulated as ContentBlock.Text).text +\n ((delta as ContentBlock.Text).text ?? \"\"),\n } as ContentBlock.Text;\n }\n\n if (accumulated.type === \"reasoning\" && delta.type === \"reasoning\") {\n return {\n ...accumulated,\n type: \"reasoning\" as const,\n reasoning:\n (accumulated as ContentBlock.Reasoning).reasoning +\n ((delta as ContentBlock.Reasoning).reasoning ?? \"\"),\n } as ContentBlock.Reasoning;\n }\n\n if (\n (accumulated.type === \"tool_call_chunk\" ||\n accumulated.type === \"tool_call\") &&\n (delta.type === \"tool_call_chunk\" || delta.type === \"tool_call\")\n ) {\n const accTC = accumulated as ContentBlock.Tools.ToolCallChunk;\n const deltaTC = delta as ContentBlock.Tools.ToolCallChunk;\n return {\n ...accumulated,\n type: \"tool_call_chunk\" as const,\n id: accTC.id ?? deltaTC.id,\n name: accTC.name ?? deltaTC.name,\n args: (accTC.args ?? \"\") + (deltaTC.args ?? \"\"),\n index: accTC.index ?? deltaTC.index,\n } as ContentBlock.Tools.ToolCallChunk;\n }\n\n // For block types we don't know how to merge, just spread the delta over\n return { ...accumulated, ...delta };\n}\n\n/**\n * Finalize a content block for the finish event.\n *\n * For tool calls, attempts to parse the accumulated args JSON string\n * into an object, upgrading from `tool_call_chunk` to `tool_call`.\n */\nexport function finalizeContentBlock(block: ContentBlock): ContentBlock {\n if (block.type === \"tool_call_chunk\") {\n const chunk = block as ContentBlock.Tools.ToolCallChunk;\n let parsedArgs: unknown;\n try {\n parsedArgs = JSON.parse(chunk.args ?? \"{}\");\n } catch {\n // If JSON parsing fails, return as invalid tool call\n return {\n type: \"invalid_tool_call\" as const,\n id: chunk.id,\n name: chunk.name,\n args: chunk.args,\n error: \"Failed to parse tool call arguments as JSON\",\n } as ContentBlock.Tools.InvalidToolCall;\n }\n return {\n type: \"tool_call\" as const,\n id: chunk.id,\n name: chunk.name!,\n args: parsedArgs,\n } as ContentBlock.Tools.ToolCall;\n }\n\n return block;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"compat.cjs","names":["AIMessageChunk"],"sources":["../../src/language_models/compat.ts"],"sourcesContent":["/**\n * Compatibility bridge: converts legacy `_streamResponseChunks`\n * (`ChatGenerationChunk` / `AIMessageChunk`) output to the new\n * `ChatModelStreamEvent` protocol.\n *\n * @module\n */\n\nimport { AIMessageChunk } from \"../messages/ai.js\";\nimport type { ContentBlock } from \"../messages/content/index.js\";\nimport type { ChatGenerationChunk } from \"../outputs.js\";\nimport type { ChatModelStreamEvent, ContentBlockDelta } from \"./event.js\";\n\nconst MIME_TYPE_BY_AUDIO_FORMAT: Record<string, string> = {\n wav: \"audio/wav\",\n mp3: \"audio/mpeg\",\n flac: \"audio/flac\",\n opus: \"audio/opus\",\n aac: \"audio/aac\",\n pcm16: \"audio/pcm\",\n};\n\nconst MIME_TYPE_BY_IMAGE_FORMAT: Record<string, string> = {\n png: \"image/png\",\n jpeg: \"image/jpeg\",\n jpg: \"image/jpeg\",\n webp: \"image/webp\",\n gif: \"image/gif\",\n};\n\ntype AudioStreamState = {\n index: number;\n id?: string;\n mimeType: string;\n transcript: string;\n};\n\nfunction nextBlockIndex(activeBlocks: Map<number, unknown>): number {\n let next = 0;\n for (const index of activeBlocks.keys()) {\n if (index >= next) next = index + 1;\n }\n return next;\n}\n\nfunction getAdditionalKwargs(message: unknown): Record<string, unknown> {\n const additional = (message as { additional_kwargs?: unknown })\n .additional_kwargs;\n return additional != null && typeof additional === \"object\"\n ? (additional as Record<string, unknown>)\n : {};\n}\n\nfunction extractImageBlocksFromToolOutputs(message: unknown): ContentBlock[] {\n const toolOutputs = getAdditionalKwargs(message).tool_outputs;\n if (!Array.isArray(toolOutputs)) return [];\n\n const blocks: ContentBlock[] = [];\n for (const entry of toolOutputs) {\n if (entry == null || typeof entry !== \"object\") continue;\n const record = entry as Record<string, unknown>;\n if (record.type !== \"image_generation_call\") continue;\n\n const data = typeof record.result === \"string\" ? record.result : undefined;\n const url = typeof record.url === \"string\" ? record.url : undefined;\n if (data == null && url == null) continue;\n\n const outputFormat =\n typeof record.output_format === \"string\"\n ? record.output_format.toLowerCase()\n : undefined;\n const mimeType =\n (outputFormat != null\n ? MIME_TYPE_BY_IMAGE_FORMAT[outputFormat]\n : undefined) ?? \"image/png\";\n\n blocks.push({\n type: \"image\",\n ...(typeof record.id === \"string\" ? { id: record.id } : {}),\n ...(url != null ? { url } : {}),\n ...(data != null ? { data } : {}),\n mimeType,\n } as ContentBlock);\n }\n return blocks;\n}\n\n/**\n * Get the audio payload from the message.\n *\n * This handles the OpenAI-shaped `additional_kwargs.audio` payload used by\n * legacy chunk streams; other providers must normalize into this shape first.\n *\n * @param message - The message to get the audio payload from.\n * @returns The audio payload.\n * @internal\n */\nfunction getAudioPayload(message: unknown):\n | {\n id?: string;\n data?: string;\n url?: string;\n transcript?: string;\n mimeType: string;\n }\n | undefined {\n const audio = getAdditionalKwargs(message).audio;\n if (audio == null || typeof audio !== \"object\") return undefined;\n const record = audio as Record<string, unknown>;\n\n const data = typeof record.data === \"string\" ? record.data : undefined;\n const url = typeof record.url === \"string\" ? record.url : undefined;\n const transcript =\n typeof record.transcript === \"string\" ? record.transcript : undefined;\n if (data == null && url == null && transcript == null) return undefined;\n\n const explicitMimeType =\n typeof record.mime_type === \"string\"\n ? record.mime_type\n : typeof record.mimeType === \"string\"\n ? record.mimeType\n : undefined;\n const format =\n typeof record.format === \"string\" ? record.format.toLowerCase() : undefined;\n const mimeType =\n explicitMimeType ??\n (format != null ? MIME_TYPE_BY_AUDIO_FORMAT[format] : undefined) ??\n (data != null ? \"audio/wav\" : \"audio/pcm\");\n\n return {\n ...(typeof record.id === \"string\" ? { id: record.id } : {}),\n ...(data != null ? { data } : {}),\n ...(url != null ? { url } : {}),\n ...(transcript != null ? { transcript } : {}),\n mimeType,\n };\n}\n\n/**\n * Convert an async iterable of legacy `ChatGenerationChunk`s into\n * `ChatModelStreamEvent`s with typed deltas.\n */\nexport async function* convertChunksToEvents(\n chunks: AsyncIterable<ChatGenerationChunk>,\n options?: { signal?: AbortSignal }\n): AsyncGenerator<ChatModelStreamEvent> {\n const activeBlocks = new Map<\n number,\n { type: string; accumulated: ContentBlock }\n >();\n let messageStarted = false;\n let lastUsage:\n | { input_tokens: number; output_tokens: number; total_tokens: number }\n | undefined;\n let audioStream: AudioStreamState | undefined;\n const emittedImageKeys = new Set<string>();\n\n for await (const chunk of chunks) {\n options?.signal?.throwIfAborted();\n\n const msg = chunk.message;\n\n // Message start\n let usageHandledInStart = false;\n if (!messageStarted) {\n messageStarted = true;\n const startEvent: ChatModelStreamEvent = {\n event: \"message-start\" as const,\n id: msg.id ?? undefined,\n };\n if (AIMessageChunk.isInstance(msg) && msg.usage_metadata) {\n (startEvent as { usage?: unknown }).usage = msg.usage_metadata;\n lastUsage = { ...msg.usage_metadata };\n usageHandledInStart = true;\n }\n yield startEvent;\n }\n\n // Process content\n const content = msg.content;\n if (typeof content === \"string\") {\n if (content !== \"\") {\n const blockIndex = 0;\n if (!activeBlocks.has(blockIndex)) {\n const initial: ContentBlock.Text = { type: \"text\", text: \"\" };\n activeBlocks.set(blockIndex, {\n type: \"text\",\n accumulated: initial,\n });\n yield {\n event: \"content-block-start\" as const,\n index: blockIndex,\n content: initial,\n };\n }\n const block = activeBlocks.get(blockIndex)!;\n block.accumulated = {\n ...block.accumulated,\n text: ((block.accumulated as { text?: string }).text ?? \"\") + content,\n };\n yield {\n event: \"content-block-delta\" as const,\n index: blockIndex,\n delta: { type: \"text-delta\" as const, text: content },\n };\n }\n } else if (Array.isArray(content)) {\n for (const part of content) {\n const blockIndex =\n typeof part.index === \"number\" ? part.index : activeBlocks.size;\n\n if (!activeBlocks.has(blockIndex)) {\n activeBlocks.set(blockIndex, {\n type: part.type,\n accumulated: { ...part },\n });\n yield {\n event: \"content-block-start\" as const,\n index: blockIndex,\n content: { ...part },\n };\n } else {\n const block = activeBlocks.get(blockIndex)!;\n const delta = contentBlockToDelta(part);\n block.accumulated = applyDeltaToBlock(block.accumulated, delta);\n yield {\n event: \"content-block-delta\" as const,\n index: blockIndex,\n delta,\n };\n }\n }\n }\n\n // Tool call chunks\n if (\n AIMessageChunk.isInstance(msg) &&\n msg.tool_call_chunks &&\n msg.tool_call_chunks.length > 0\n ) {\n for (const toolChunk of msg.tool_call_chunks) {\n const blockIndex =\n typeof toolChunk.index === \"number\"\n ? toolChunk.index\n : activeBlocks.size;\n\n if (!activeBlocks.has(blockIndex)) {\n const initial: ContentBlock = {\n type: \"tool_call_chunk\" as const,\n id: toolChunk.id,\n name: toolChunk.name,\n args: \"\",\n index: blockIndex,\n };\n activeBlocks.set(blockIndex, {\n type: \"tool_call_chunk\",\n accumulated: initial,\n });\n yield {\n event: \"content-block-start\" as const,\n index: blockIndex,\n content: initial,\n };\n }\n\n // Accumulate tool call args internally, emit incremental content chunks.\n const block = activeBlocks.get(blockIndex)!;\n const acc = block.accumulated as {\n args?: string;\n id?: string;\n name?: string;\n };\n if (toolChunk.id != null) acc.id = toolChunk.id;\n if (toolChunk.name != null) acc.name = toolChunk.name;\n acc.args = (acc.args ?? \"\") + (toolChunk.args ?? \"\");\n yield {\n event: \"content-block-delta\" as const,\n index: blockIndex,\n delta: {\n type: \"block-delta\" as const,\n fields: {\n type: \"tool_call_chunk\",\n ...(\"id\" in acc && acc.id != null ? { id: acc.id } : {}),\n ...(\"name\" in acc && acc.name != null ? { name: acc.name } : {}),\n args: acc.args,\n },\n },\n };\n }\n }\n\n const audioPayload = getAudioPayload(msg);\n if (audioPayload != null) {\n if (audioStream == null) {\n const index = nextBlockIndex(activeBlocks);\n audioStream = {\n index,\n id: audioPayload.id,\n mimeType: audioPayload.mimeType,\n transcript: \"\",\n };\n const initial = {\n type: \"audio\",\n ...(audioPayload.id != null ? { id: audioPayload.id } : {}),\n ...(audioPayload.url != null ? { url: audioPayload.url } : {}),\n data: \"\",\n mimeType: audioPayload.mimeType,\n } as ContentBlock;\n activeBlocks.set(index, {\n type: \"audio\",\n accumulated: initial,\n });\n yield {\n event: \"content-block-start\" as const,\n index,\n content: initial,\n };\n }\n\n const activeAudio = activeBlocks.get(audioStream.index);\n if (activeAudio != null) {\n const accumulated = activeAudio.accumulated as ContentBlock & {\n data?: string;\n transcript?: string;\n };\n if (audioPayload.id != null && audioStream.id == null) {\n audioStream.id = audioPayload.id;\n (accumulated as { id?: string }).id = audioPayload.id;\n }\n if (audioPayload.transcript != null) {\n audioStream.transcript += audioPayload.transcript;\n accumulated.transcript = audioStream.transcript;\n yield {\n event: \"content-block-delta\" as const,\n index: audioStream.index,\n delta: {\n type: \"block-delta\" as const,\n fields: {\n type: \"audio\",\n transcript: audioStream.transcript,\n },\n },\n };\n }\n if (audioPayload.data != null && audioPayload.data.length > 0) {\n accumulated.data = (accumulated.data ?? \"\") + audioPayload.data;\n yield {\n event: \"content-block-delta\" as const,\n index: audioStream.index,\n delta: {\n type: \"data-delta\" as const,\n data: audioPayload.data,\n encoding: \"base64\" as const,\n },\n };\n }\n }\n }\n\n for (const imageBlock of extractImageBlocksFromToolOutputs(msg)) {\n const imageRecord = imageBlock as ContentBlock & {\n id?: string;\n url?: string;\n data?: string;\n };\n const imageKey =\n imageRecord.id ??\n imageRecord.url ??\n (imageRecord.data != null\n ? `${imageRecord.data.length}:${imageRecord.data.slice(0, 32)}`\n : undefined);\n if (imageKey != null && emittedImageKeys.has(imageKey)) continue;\n if (imageKey != null) emittedImageKeys.add(imageKey);\n\n const index = nextBlockIndex(activeBlocks);\n activeBlocks.set(index, {\n type: \"image\",\n accumulated: imageBlock,\n });\n yield {\n event: \"content-block-start\" as const,\n index,\n content: imageBlock,\n };\n }\n\n // Usage\n if (\n !usageHandledInStart &&\n AIMessageChunk.isInstance(msg) &&\n msg.usage_metadata\n ) {\n const chunkUsage = msg.usage_metadata;\n if (!lastUsage) {\n lastUsage = { ...chunkUsage };\n } else {\n lastUsage = {\n input_tokens: lastUsage.input_tokens + chunkUsage.input_tokens,\n output_tokens: lastUsage.output_tokens + chunkUsage.output_tokens,\n total_tokens: lastUsage.total_tokens + chunkUsage.total_tokens,\n };\n }\n yield { event: \"usage\" as const, usage: { ...lastUsage } };\n }\n }\n\n // Finish all blocks\n for (const [index, block] of activeBlocks) {\n const finalized = finalizeContentBlock(block.accumulated);\n yield {\n event: \"content-block-finish\" as const,\n index,\n content: finalized,\n };\n }\n\n yield {\n event: \"message-finish\" as const,\n reason: \"stop\" as const,\n ...(lastUsage ? { usage: lastUsage } : {}),\n };\n}\n\n/**\n * Apply a typed delta to an accumulated content block.\n * @internal\n */\nfunction applyDeltaToBlock(\n block: ContentBlock,\n delta: ContentBlockDelta\n): ContentBlock {\n switch (delta.type) {\n case \"text-delta\":\n if (block.type === \"text\") {\n return {\n ...block,\n text: (block.text ?? \"\") + delta.text,\n };\n }\n return block;\n case \"reasoning-delta\":\n if (block.type === \"thinking\") {\n return {\n ...block,\n thinking: (block.thinking ?? \"\") + delta.reasoning,\n };\n }\n if (block.type === \"reasoning\") {\n return {\n ...block,\n reasoning: (block.reasoning ?? \"\") + delta.reasoning,\n };\n }\n return block;\n case \"data-delta\":\n return {\n ...block,\n data: (block.data ?? \"\") + delta.data,\n };\n case \"block-delta\":\n return { ...block, ...delta.fields } as ContentBlock;\n default:\n throw new Error(`Unknown delta type: ${JSON.stringify(delta)}`);\n }\n}\n\nfunction contentBlockToDelta(block: ContentBlock): ContentBlockDelta {\n if (block.type === \"text\") {\n return { type: \"text-delta\", text: (block as ContentBlock.Text).text };\n }\n if (block.type === \"reasoning\") {\n return {\n type: \"reasoning-delta\",\n reasoning: (block as ContentBlock.Reasoning).reasoning,\n };\n }\n if (block.type === \"thinking\" && typeof block.thinking === \"string\") {\n return {\n type: \"reasoning-delta\",\n reasoning: block.thinking,\n };\n }\n if (typeof block.data === \"string\") {\n return {\n type: \"data-delta\",\n data: block.data,\n encoding: \"base64\",\n };\n }\n if (typeof block.type === \"string\") {\n return {\n type: \"block-delta\",\n fields: {\n ...(block as unknown as { type: string } & Record<string, unknown>),\n },\n };\n }\n\n throw new Error(`Unsupported content block delta: ${JSON.stringify(block)}`);\n}\n\n/**\n * Finalize a content block for the finish event.\n * For tool calls, parse the accumulated JSON args string.\n */\nexport function finalizeContentBlock(block: ContentBlock): ContentBlock {\n if (block.type === \"tool_call_chunk\") {\n const chunk = block as ContentBlock.Tools.ToolCallChunk;\n let parsedArgs: unknown;\n try {\n parsedArgs = JSON.parse(chunk.args ?? \"{}\");\n } catch {\n return {\n type: \"invalid_tool_call\" as const,\n id: chunk.id,\n name: chunk.name,\n args: chunk.args,\n error: \"Failed to parse tool call arguments as JSON\",\n } as ContentBlock.Tools.InvalidToolCall;\n }\n return {\n type: \"tool_call\" as const,\n id: chunk.id,\n name: chunk.name!,\n args: parsedArgs,\n } as ContentBlock.Tools.ToolCall;\n }\n\n return block;\n}\n"],"mappings":"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"}
@@ -5,30 +5,16 @@ import { ChatModelStreamEvent } from "./event.cjs";
5
5
  //#region src/language_models/compat.d.ts
6
6
  /**
7
7
  * Convert an async iterable of legacy `ChatGenerationChunk`s into
8
- * `ChatModelStreamEvent`s.
9
- *
10
- * Tracks content blocks by index, synthesizes start/delta/finish events,
11
- * and emits usage updates. Handles both string content and array content
12
- * blocks, as well as tool call chunks.
13
- *
14
- * @param chunks - The legacy chunk stream from `_streamResponseChunks`.
15
- * @param options - Optional signal for abort handling.
16
- * @returns An async generator of {@link ChatModelStreamEvent}.
8
+ * `ChatModelStreamEvent`s with typed deltas.
17
9
  */
18
10
  declare function convertChunksToEvents(chunks: AsyncIterable<ChatGenerationChunk>, options?: {
19
11
  signal?: AbortSignal;
20
12
  }): AsyncGenerator<ChatModelStreamEvent>;
21
- /**
22
- * Accumulate a content block delta into the running snapshot.
23
- */
24
- declare function accumulateContentBlock(accumulated: ContentBlock, delta: ContentBlock): ContentBlock;
25
13
  /**
26
14
  * Finalize a content block for the finish event.
27
- *
28
- * For tool calls, attempts to parse the accumulated args JSON string
29
- * into an object, upgrading from `tool_call_chunk` to `tool_call`.
15
+ * For tool calls, parse the accumulated JSON args string.
30
16
  */
31
17
  declare function finalizeContentBlock(block: ContentBlock): ContentBlock;
32
18
  //#endregion
33
- export { accumulateContentBlock, convertChunksToEvents, finalizeContentBlock };
19
+ export { convertChunksToEvents, finalizeContentBlock };
34
20
  //# sourceMappingURL=compat.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compat.d.cts","names":[],"sources":["../../src/language_models/compat.ts"],"mappings":";;;;;;;;;;;;;;;;AAsNA;iBAzLuB,qBAAA,CACrB,MAAA,EAAQ,aAAA,CAAc,mBAAA,GACtB,OAAA;EAAY,MAAA,GAAS,WAAA;AAAA,IACpB,cAAA,CAAe,oBAAA;;;;iBAsLF,sBAAA,CACd,WAAA,EAAa,YAAA,EACb,KAAA,EAAO,YAAA,GACN,YAAA;;;;;;;iBAgDa,oBAAA,CAAqB,KAAA,EAAO,YAAA,GAAe,YAAA"}
1
+ {"version":3,"file":"compat.d.cts","names":[],"sources":["../../src/language_models/compat.ts"],"mappings":";;;;;;;;;iBA8IuB,qBAAA,CACrB,MAAA,EAAQ,aAAA,CAAc,mBAAA,GACtB,OAAA;EAAY,MAAA,GAAS,WAAA;AAAA,IACpB,cAAA,CAAe,oBAAA;;;;;iBAwWF,oBAAA,CAAqB,KAAA,EAAO,YAAA,GAAe,YAAA"}
@@ -5,30 +5,16 @@ import { ChatModelStreamEvent } from "./event.js";
5
5
  //#region src/language_models/compat.d.ts
6
6
  /**
7
7
  * Convert an async iterable of legacy `ChatGenerationChunk`s into
8
- * `ChatModelStreamEvent`s.
9
- *
10
- * Tracks content blocks by index, synthesizes start/delta/finish events,
11
- * and emits usage updates. Handles both string content and array content
12
- * blocks, as well as tool call chunks.
13
- *
14
- * @param chunks - The legacy chunk stream from `_streamResponseChunks`.
15
- * @param options - Optional signal for abort handling.
16
- * @returns An async generator of {@link ChatModelStreamEvent}.
8
+ * `ChatModelStreamEvent`s with typed deltas.
17
9
  */
18
10
  declare function convertChunksToEvents(chunks: AsyncIterable<ChatGenerationChunk>, options?: {
19
11
  signal?: AbortSignal;
20
12
  }): AsyncGenerator<ChatModelStreamEvent>;
21
- /**
22
- * Accumulate a content block delta into the running snapshot.
23
- */
24
- declare function accumulateContentBlock(accumulated: ContentBlock, delta: ContentBlock): ContentBlock;
25
13
  /**
26
14
  * Finalize a content block for the finish event.
27
- *
28
- * For tool calls, attempts to parse the accumulated args JSON string
29
- * into an object, upgrading from `tool_call_chunk` to `tool_call`.
15
+ * For tool calls, parse the accumulated JSON args string.
30
16
  */
31
17
  declare function finalizeContentBlock(block: ContentBlock): ContentBlock;
32
18
  //#endregion
33
- export { accumulateContentBlock, convertChunksToEvents, finalizeContentBlock };
19
+ export { convertChunksToEvents, finalizeContentBlock };
34
20
  //# sourceMappingURL=compat.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compat.d.ts","names":[],"sources":["../../src/language_models/compat.ts"],"mappings":";;;;;;;;;;;;;;;;AAsNA;iBAzLuB,qBAAA,CACrB,MAAA,EAAQ,aAAA,CAAc,mBAAA,GACtB,OAAA;EAAY,MAAA,GAAS,WAAA;AAAA,IACpB,cAAA,CAAe,oBAAA;;;;iBAsLF,sBAAA,CACd,WAAA,EAAa,YAAA,EACb,KAAA,EAAO,YAAA,GACN,YAAA;;;;;;;iBAgDa,oBAAA,CAAqB,KAAA,EAAO,YAAA,GAAe,YAAA"}
1
+ {"version":3,"file":"compat.d.ts","names":[],"sources":["../../src/language_models/compat.ts"],"mappings":";;;;;;;;;iBA8IuB,qBAAA,CACrB,MAAA,EAAQ,aAAA,CAAc,mBAAA,GACtB,OAAA;EAAY,MAAA,GAAS,WAAA;AAAA,IACpB,cAAA,CAAe,oBAAA;;;;;iBAwWF,oBAAA,CAAqB,KAAA,EAAO,YAAA,GAAe,YAAA"}