@langchain/core 1.2.0-dev-1775763803878 → 1.2.0

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 (737) hide show
  1. package/CHANGELOG.md +120 -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/tracers/console.cjs +30 -4
  296. package/dist/tracers/console.cjs.map +1 -1
  297. package/dist/tracers/console.d.cts.map +1 -1
  298. package/dist/tracers/console.d.ts.map +1 -1
  299. package/dist/tracers/console.js +28 -1
  300. package/dist/tracers/console.js.map +1 -1
  301. package/dist/tracers/event_stream.cjs.map +1 -1
  302. package/dist/tracers/event_stream.js.map +1 -1
  303. package/dist/tracers/tracer_langchain.cjs +70 -2
  304. package/dist/tracers/tracer_langchain.cjs.map +1 -1
  305. package/dist/tracers/tracer_langchain.d.cts +26 -1
  306. package/dist/tracers/tracer_langchain.d.cts.map +1 -1
  307. package/dist/tracers/tracer_langchain.d.ts +26 -1
  308. package/dist/tracers/tracer_langchain.d.ts.map +1 -1
  309. package/dist/tracers/tracer_langchain.js +70 -3
  310. package/dist/tracers/tracer_langchain.js.map +1 -1
  311. package/dist/utils/async_caller.cjs +3 -2
  312. package/dist/utils/async_caller.cjs.map +1 -1
  313. package/dist/utils/async_caller.js +2 -1
  314. package/dist/utils/async_caller.js.map +1 -1
  315. package/dist/utils/callbacks.cjs.map +1 -1
  316. package/dist/utils/callbacks.js.map +1 -1
  317. package/dist/utils/context.cjs.map +1 -1
  318. package/dist/utils/context.js.map +1 -1
  319. package/dist/utils/env.cjs.map +1 -1
  320. package/dist/utils/env.d.cts.map +1 -1
  321. package/dist/utils/env.d.ts.map +1 -1
  322. package/dist/utils/env.js.map +1 -1
  323. package/dist/utils/event_source_parse.cjs +5 -12
  324. package/dist/utils/event_source_parse.cjs.map +1 -1
  325. package/dist/utils/event_source_parse.js +5 -12
  326. package/dist/utils/event_source_parse.js.map +1 -1
  327. package/dist/utils/fast-json-patch/src/core.cjs.map +1 -1
  328. package/dist/utils/fast-json-patch/src/core.js.map +1 -1
  329. package/dist/utils/json_schema.cjs.map +1 -1
  330. package/dist/utils/json_schema.js.map +1 -1
  331. package/dist/utils/sax-js/sax.cjs.map +1 -1
  332. package/dist/utils/sax-js/sax.js.map +1 -1
  333. package/dist/utils/ssrf.cjs.map +1 -1
  334. package/dist/utils/ssrf.js.map +1 -1
  335. package/dist/utils/stream.d.cts +2 -2
  336. package/dist/utils/stream.d.cts.map +1 -1
  337. package/dist/utils/stream.d.ts +2 -2
  338. package/dist/utils/stream.d.ts.map +1 -1
  339. package/dist/utils/testing/chat_models.cjs.map +1 -1
  340. package/dist/utils/testing/chat_models.js.map +1 -1
  341. package/dist/utils/testing/embeddings.cjs.map +1 -1
  342. package/dist/utils/testing/embeddings.js.map +1 -1
  343. package/dist/utils/testing/index.cjs +17 -1
  344. package/dist/utils/testing/index.cjs.map +1 -1
  345. package/dist/utils/testing/index.d.cts +3 -1
  346. package/dist/utils/testing/index.d.ts +3 -1
  347. package/dist/utils/testing/index.js +11 -2
  348. package/dist/utils/testing/index.js.map +1 -1
  349. package/dist/utils/testing/openai_stream_fixtures.cjs +160 -0
  350. package/dist/utils/testing/openai_stream_fixtures.cjs.map +1 -0
  351. package/dist/utils/testing/openai_stream_fixtures.d.cts +12 -0
  352. package/dist/utils/testing/openai_stream_fixtures.d.cts.map +1 -0
  353. package/dist/utils/testing/openai_stream_fixtures.d.ts +12 -0
  354. package/dist/utils/testing/openai_stream_fixtures.d.ts.map +1 -0
  355. package/dist/utils/testing/openai_stream_fixtures.js +155 -0
  356. package/dist/utils/testing/openai_stream_fixtures.js.map +1 -0
  357. package/dist/utils/testing/stream.cjs +136 -0
  358. package/dist/utils/testing/stream.cjs.map +1 -0
  359. package/dist/utils/testing/stream.d.cts +96 -0
  360. package/dist/utils/testing/stream.d.cts.map +1 -0
  361. package/dist/utils/testing/stream.d.ts +96 -0
  362. package/dist/utils/testing/stream.d.ts.map +1 -0
  363. package/dist/utils/testing/stream.js +136 -0
  364. package/dist/utils/testing/stream.js.map +1 -0
  365. package/dist/utils/testing/vectorstores.cjs.map +1 -1
  366. package/dist/utils/testing/vectorstores.js.map +1 -1
  367. package/dist/utils/types/zod.cjs.map +1 -1
  368. package/dist/utils/types/zod.js.map +1 -1
  369. package/dist/utils/uuid/index.cjs +58 -0
  370. package/dist/utils/uuid/index.cjs.map +1 -0
  371. package/dist/utils/uuid/index.d.cts +26 -0
  372. package/dist/utils/uuid/index.d.cts.map +1 -0
  373. package/dist/utils/uuid/index.d.ts +26 -0
  374. package/dist/utils/uuid/index.d.ts.map +1 -0
  375. package/dist/utils/uuid/index.js +41 -0
  376. package/dist/utils/uuid/index.js.map +1 -0
  377. package/dist/utils/uuid/max.cjs +6 -0
  378. package/dist/utils/uuid/max.cjs.map +1 -0
  379. package/dist/utils/uuid/max.js +6 -0
  380. package/dist/utils/uuid/max.js.map +1 -0
  381. package/dist/utils/uuid/nil.cjs +6 -0
  382. package/dist/utils/uuid/nil.cjs.map +1 -0
  383. package/dist/utils/uuid/nil.js +6 -0
  384. package/dist/utils/uuid/nil.js.map +1 -0
  385. package/dist/utils/uuid/parse.cjs +11 -0
  386. package/dist/utils/uuid/parse.cjs.map +1 -0
  387. package/dist/utils/uuid/parse.d.cts +7 -0
  388. package/dist/utils/uuid/parse.d.cts.map +1 -0
  389. package/dist/utils/uuid/parse.d.ts +7 -0
  390. package/dist/utils/uuid/parse.d.ts.map +1 -0
  391. package/dist/utils/uuid/parse.js +11 -0
  392. package/dist/utils/uuid/parse.js.map +1 -0
  393. package/dist/utils/uuid/regex.cjs +6 -0
  394. package/dist/utils/uuid/regex.cjs.map +1 -0
  395. package/dist/utils/uuid/regex.js +6 -0
  396. package/dist/utils/uuid/regex.js.map +1 -0
  397. package/dist/utils/uuid/rng.cjs +9 -0
  398. package/dist/utils/uuid/rng.cjs.map +1 -0
  399. package/dist/utils/uuid/rng.js +9 -0
  400. package/dist/utils/uuid/rng.js.map +1 -0
  401. package/dist/utils/uuid/sha1.cjs +71 -0
  402. package/dist/utils/uuid/sha1.cjs.map +1 -0
  403. package/dist/utils/uuid/sha1.js +71 -0
  404. package/dist/utils/uuid/sha1.js.map +1 -0
  405. package/dist/utils/uuid/stringify.cjs +21 -0
  406. package/dist/utils/uuid/stringify.cjs.map +1 -0
  407. package/dist/utils/uuid/stringify.d.cts +5 -0
  408. package/dist/utils/uuid/stringify.d.cts.map +1 -0
  409. package/dist/utils/uuid/stringify.d.ts +5 -0
  410. package/dist/utils/uuid/stringify.d.ts.map +1 -0
  411. package/dist/utils/uuid/stringify.js +20 -0
  412. package/dist/utils/uuid/stringify.js.map +1 -0
  413. package/dist/utils/uuid/types.d.cts +26 -0
  414. package/dist/utils/uuid/types.d.cts.map +1 -0
  415. package/dist/utils/uuid/types.d.ts +26 -0
  416. package/dist/utils/uuid/types.d.ts.map +1 -0
  417. package/dist/utils/uuid/v1.cjs +69 -0
  418. package/dist/utils/uuid/v1.cjs.map +1 -0
  419. package/dist/utils/uuid/v1.d.cts +8 -0
  420. package/dist/utils/uuid/v1.d.cts.map +1 -0
  421. package/dist/utils/uuid/v1.d.ts +8 -0
  422. package/dist/utils/uuid/v1.d.ts.map +1 -0
  423. package/dist/utils/uuid/v1.js +69 -0
  424. package/dist/utils/uuid/v1.js.map +1 -0
  425. package/dist/utils/uuid/v1ToV6.cjs +14 -0
  426. package/dist/utils/uuid/v1ToV6.cjs.map +1 -0
  427. package/dist/utils/uuid/v1ToV6.js +14 -0
  428. package/dist/utils/uuid/v1ToV6.js.map +1 -0
  429. package/dist/utils/uuid/v35.cjs +36 -0
  430. package/dist/utils/uuid/v35.cjs.map +1 -0
  431. package/dist/utils/uuid/v35.js +34 -0
  432. package/dist/utils/uuid/v35.js.map +1 -0
  433. package/dist/utils/uuid/v4.cjs +25 -0
  434. package/dist/utils/uuid/v4.cjs.map +1 -0
  435. package/dist/utils/uuid/v4.d.cts +8 -0
  436. package/dist/utils/uuid/v4.d.cts.map +1 -0
  437. package/dist/utils/uuid/v4.d.ts +8 -0
  438. package/dist/utils/uuid/v4.d.ts.map +1 -0
  439. package/dist/utils/uuid/v4.js +25 -0
  440. package/dist/utils/uuid/v4.js.map +1 -0
  441. package/dist/utils/uuid/v5.cjs +12 -0
  442. package/dist/utils/uuid/v5.cjs.map +1 -0
  443. package/dist/utils/uuid/v5.d.cts +14 -0
  444. package/dist/utils/uuid/v5.d.cts.map +1 -0
  445. package/dist/utils/uuid/v5.d.ts +14 -0
  446. package/dist/utils/uuid/v5.d.ts.map +1 -0
  447. package/dist/utils/uuid/v5.js +12 -0
  448. package/dist/utils/uuid/v5.js.map +1 -0
  449. package/dist/utils/uuid/v6.cjs +23 -0
  450. package/dist/utils/uuid/v6.cjs.map +1 -0
  451. package/dist/utils/uuid/v6.d.cts +8 -0
  452. package/dist/utils/uuid/v6.d.cts.map +1 -0
  453. package/dist/utils/uuid/v6.d.ts +8 -0
  454. package/dist/utils/uuid/v6.d.ts.map +1 -0
  455. package/dist/utils/uuid/v6.js +23 -0
  456. package/dist/utils/uuid/v6.js.map +1 -0
  457. package/dist/utils/uuid/v7.cjs +57 -0
  458. package/dist/utils/uuid/v7.cjs.map +1 -0
  459. package/dist/utils/uuid/v7.d.cts +8 -0
  460. package/dist/utils/uuid/v7.d.cts.map +1 -0
  461. package/dist/utils/uuid/v7.d.ts +8 -0
  462. package/dist/utils/uuid/v7.d.ts.map +1 -0
  463. package/dist/utils/uuid/v7.js +57 -0
  464. package/dist/utils/uuid/v7.js.map +1 -0
  465. package/dist/utils/uuid/validate.cjs +9 -0
  466. package/dist/utils/uuid/validate.cjs.map +1 -0
  467. package/dist/utils/uuid/validate.d.cts +5 -0
  468. package/dist/utils/uuid/validate.d.cts.map +1 -0
  469. package/dist/utils/uuid/validate.d.ts +5 -0
  470. package/dist/utils/uuid/validate.d.ts.map +1 -0
  471. package/dist/utils/uuid/validate.js +9 -0
  472. package/dist/utils/uuid/validate.js.map +1 -0
  473. package/dist/utils/uuid/version.cjs +10 -0
  474. package/dist/utils/uuid/version.cjs.map +1 -0
  475. package/dist/utils/uuid/version.d.cts +5 -0
  476. package/dist/utils/uuid/version.d.cts.map +1 -0
  477. package/dist/utils/uuid/version.d.ts +5 -0
  478. package/dist/utils/uuid/version.d.ts.map +1 -0
  479. package/dist/utils/uuid/version.js +10 -0
  480. package/dist/utils/uuid/version.js.map +1 -0
  481. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.cjs.map +1 -1
  482. package/dist/utils/zod-to-json-schema/parsers/nativeEnum.js.map +1 -1
  483. package/dist/utils/zod-to-json-schema/parsers/pipeline.cjs.map +1 -1
  484. package/dist/utils/zod-to-json-schema/parsers/pipeline.js.map +1 -1
  485. package/dist/utils/zod-to-json-schema/parsers/set.cjs.map +1 -1
  486. package/dist/utils/zod-to-json-schema/parsers/set.js.map +1 -1
  487. package/dist/utils/zod-to-json-schema/parsers/string.cjs +26 -0
  488. package/dist/utils/zod-to-json-schema/parsers/string.cjs.map +1 -1
  489. package/dist/utils/zod-to-json-schema/parsers/string.js +26 -0
  490. package/dist/utils/zod-to-json-schema/parsers/string.js.map +1 -1
  491. package/dist/vectorstores.cjs.map +1 -1
  492. package/dist/vectorstores.js.map +1 -1
  493. package/document_loaders/base.cjs +1 -0
  494. package/document_loaders/base.d.cts +1 -0
  495. package/document_loaders/base.d.ts +1 -0
  496. package/document_loaders/base.js +1 -0
  497. package/document_loaders/langsmith.cjs +1 -0
  498. package/document_loaders/langsmith.d.cts +1 -0
  499. package/document_loaders/langsmith.d.ts +1 -0
  500. package/document_loaders/langsmith.js +1 -0
  501. package/documents.cjs +1 -0
  502. package/documents.d.cts +1 -0
  503. package/documents.d.ts +1 -0
  504. package/documents.js +1 -0
  505. package/embeddings.cjs +1 -0
  506. package/embeddings.d.cts +1 -0
  507. package/embeddings.d.ts +1 -0
  508. package/embeddings.js +1 -0
  509. package/errors.cjs +1 -0
  510. package/errors.d.cts +1 -0
  511. package/errors.d.ts +1 -0
  512. package/errors.js +1 -0
  513. package/example_selectors.cjs +1 -0
  514. package/example_selectors.d.cts +1 -0
  515. package/example_selectors.d.ts +1 -0
  516. package/example_selectors.js +1 -0
  517. package/indexing.cjs +1 -0
  518. package/indexing.d.cts +1 -0
  519. package/indexing.d.ts +1 -0
  520. package/indexing.js +1 -0
  521. package/language_models/base.cjs +1 -0
  522. package/language_models/base.d.cts +1 -0
  523. package/language_models/base.d.ts +1 -0
  524. package/language_models/base.js +1 -0
  525. package/language_models/chat_models.cjs +1 -0
  526. package/language_models/chat_models.d.cts +1 -0
  527. package/language_models/chat_models.d.ts +1 -0
  528. package/language_models/chat_models.js +1 -0
  529. package/language_models/compat.cjs +1 -0
  530. package/language_models/compat.d.cts +1 -0
  531. package/language_models/compat.d.ts +1 -0
  532. package/language_models/compat.js +1 -0
  533. package/language_models/event.cjs +1 -0
  534. package/language_models/event.d.cts +1 -0
  535. package/language_models/event.d.ts +1 -0
  536. package/language_models/event.js +1 -0
  537. package/language_models/llms.cjs +1 -0
  538. package/language_models/llms.d.cts +1 -0
  539. package/language_models/llms.d.ts +1 -0
  540. package/language_models/llms.js +1 -0
  541. package/language_models/openai_completions_stream.cjs +1 -0
  542. package/language_models/openai_completions_stream.d.cts +1 -0
  543. package/language_models/openai_completions_stream.d.ts +1 -0
  544. package/language_models/openai_completions_stream.js +1 -0
  545. package/language_models/profile.cjs +1 -0
  546. package/language_models/profile.d.cts +1 -0
  547. package/language_models/profile.d.ts +1 -0
  548. package/language_models/profile.js +1 -0
  549. package/language_models/stream.cjs +1 -0
  550. package/language_models/stream.d.cts +1 -0
  551. package/language_models/stream.d.ts +1 -0
  552. package/language_models/stream.js +1 -0
  553. package/language_models/structured_output.cjs +1 -0
  554. package/language_models/structured_output.d.cts +1 -0
  555. package/language_models/structured_output.d.ts +1 -0
  556. package/language_models/structured_output.js +1 -0
  557. package/load/serializable.cjs +1 -0
  558. package/load/serializable.d.cts +1 -0
  559. package/load/serializable.d.ts +1 -0
  560. package/load/serializable.js +1 -0
  561. package/load.cjs +1 -0
  562. package/load.d.cts +1 -0
  563. package/load.d.ts +1 -0
  564. package/load.js +1 -0
  565. package/memory.cjs +1 -0
  566. package/memory.d.cts +1 -0
  567. package/memory.d.ts +1 -0
  568. package/memory.js +1 -0
  569. package/messages/tool.cjs +1 -0
  570. package/messages/tool.d.cts +1 -0
  571. package/messages/tool.d.ts +1 -0
  572. package/messages/tool.js +1 -0
  573. package/messages.cjs +1 -0
  574. package/messages.d.cts +1 -0
  575. package/messages.d.ts +1 -0
  576. package/messages.js +1 -0
  577. package/output_parsers/openai_functions.cjs +1 -0
  578. package/output_parsers/openai_functions.d.cts +1 -0
  579. package/output_parsers/openai_functions.d.ts +1 -0
  580. package/output_parsers/openai_functions.js +1 -0
  581. package/output_parsers/openai_tools.cjs +1 -0
  582. package/output_parsers/openai_tools.d.cts +1 -0
  583. package/output_parsers/openai_tools.d.ts +1 -0
  584. package/output_parsers/openai_tools.js +1 -0
  585. package/output_parsers.cjs +1 -0
  586. package/output_parsers.d.cts +1 -0
  587. package/output_parsers.d.ts +1 -0
  588. package/output_parsers.js +1 -0
  589. package/outputs.cjs +1 -0
  590. package/outputs.d.cts +1 -0
  591. package/outputs.d.ts +1 -0
  592. package/outputs.js +1 -0
  593. package/package.json +34 -14
  594. package/prompt_values.cjs +1 -0
  595. package/prompt_values.d.cts +1 -0
  596. package/prompt_values.d.ts +1 -0
  597. package/prompt_values.js +1 -0
  598. package/prompts.cjs +1 -0
  599. package/prompts.d.cts +1 -0
  600. package/prompts.d.ts +1 -0
  601. package/prompts.js +1 -0
  602. package/retrievers/document_compressors.cjs +1 -0
  603. package/retrievers/document_compressors.d.cts +1 -0
  604. package/retrievers/document_compressors.d.ts +1 -0
  605. package/retrievers/document_compressors.js +1 -0
  606. package/retrievers.cjs +1 -0
  607. package/retrievers.d.cts +1 -0
  608. package/retrievers.d.ts +1 -0
  609. package/retrievers.js +1 -0
  610. package/runnables/graph.cjs +1 -0
  611. package/runnables/graph.d.cts +1 -0
  612. package/runnables/graph.d.ts +1 -0
  613. package/runnables/graph.js +1 -0
  614. package/runnables.cjs +1 -0
  615. package/runnables.d.cts +1 -0
  616. package/runnables.d.ts +1 -0
  617. package/runnables.js +1 -0
  618. package/singletons.cjs +1 -0
  619. package/singletons.d.cts +1 -0
  620. package/singletons.d.ts +1 -0
  621. package/singletons.js +1 -0
  622. package/stores.cjs +1 -0
  623. package/stores.d.cts +1 -0
  624. package/stores.d.ts +1 -0
  625. package/stores.js +1 -0
  626. package/structured_query.cjs +1 -0
  627. package/structured_query.d.cts +1 -0
  628. package/structured_query.d.ts +1 -0
  629. package/structured_query.js +1 -0
  630. package/testing.cjs +1 -0
  631. package/testing.d.cts +1 -0
  632. package/testing.d.ts +1 -0
  633. package/testing.js +1 -0
  634. package/tools.cjs +1 -0
  635. package/tools.d.cts +1 -0
  636. package/tools.d.ts +1 -0
  637. package/tools.js +1 -0
  638. package/tracers/base.cjs +1 -0
  639. package/tracers/base.d.cts +1 -0
  640. package/tracers/base.d.ts +1 -0
  641. package/tracers/base.js +1 -0
  642. package/tracers/console.cjs +1 -0
  643. package/tracers/console.d.cts +1 -0
  644. package/tracers/console.d.ts +1 -0
  645. package/tracers/console.js +1 -0
  646. package/tracers/log_stream.cjs +1 -0
  647. package/tracers/log_stream.d.cts +1 -0
  648. package/tracers/log_stream.d.ts +1 -0
  649. package/tracers/log_stream.js +1 -0
  650. package/tracers/run_collector.cjs +1 -0
  651. package/tracers/run_collector.d.cts +1 -0
  652. package/tracers/run_collector.d.ts +1 -0
  653. package/tracers/run_collector.js +1 -0
  654. package/tracers/tracer_langchain.cjs +1 -0
  655. package/tracers/tracer_langchain.d.cts +1 -0
  656. package/tracers/tracer_langchain.d.ts +1 -0
  657. package/tracers/tracer_langchain.js +1 -0
  658. package/types/stream.cjs +1 -0
  659. package/types/stream.d.cts +1 -0
  660. package/types/stream.d.ts +1 -0
  661. package/types/stream.js +1 -0
  662. package/utils/async_caller.cjs +1 -0
  663. package/utils/async_caller.d.cts +1 -0
  664. package/utils/async_caller.d.ts +1 -0
  665. package/utils/async_caller.js +1 -0
  666. package/utils/chunk_array.cjs +1 -0
  667. package/utils/chunk_array.d.cts +1 -0
  668. package/utils/chunk_array.d.ts +1 -0
  669. package/utils/chunk_array.js +1 -0
  670. package/utils/context.cjs +1 -0
  671. package/utils/context.d.cts +1 -0
  672. package/utils/context.d.ts +1 -0
  673. package/utils/context.js +1 -0
  674. package/utils/env.cjs +1 -0
  675. package/utils/env.d.cts +1 -0
  676. package/utils/env.d.ts +1 -0
  677. package/utils/env.js +1 -0
  678. package/utils/event_source_parse.cjs +1 -0
  679. package/utils/event_source_parse.d.cts +1 -0
  680. package/utils/event_source_parse.d.ts +1 -0
  681. package/utils/event_source_parse.js +1 -0
  682. package/utils/format.cjs +1 -0
  683. package/utils/format.d.cts +1 -0
  684. package/utils/format.d.ts +1 -0
  685. package/utils/format.js +1 -0
  686. package/utils/function_calling.cjs +1 -0
  687. package/utils/function_calling.d.cts +1 -0
  688. package/utils/function_calling.d.ts +1 -0
  689. package/utils/function_calling.js +1 -0
  690. package/utils/hash.cjs +1 -0
  691. package/utils/hash.d.cts +1 -0
  692. package/utils/hash.d.ts +1 -0
  693. package/utils/hash.js +1 -0
  694. package/utils/json_patch.cjs +1 -0
  695. package/utils/json_patch.d.cts +1 -0
  696. package/utils/json_patch.d.ts +1 -0
  697. package/utils/json_patch.js +1 -0
  698. package/utils/json_schema.cjs +1 -0
  699. package/utils/json_schema.d.cts +1 -0
  700. package/utils/json_schema.d.ts +1 -0
  701. package/utils/json_schema.js +1 -0
  702. package/utils/math.cjs +1 -0
  703. package/utils/math.d.cts +1 -0
  704. package/utils/math.d.ts +1 -0
  705. package/utils/math.js +1 -0
  706. package/utils/ssrf.cjs +1 -0
  707. package/utils/ssrf.d.cts +1 -0
  708. package/utils/ssrf.d.ts +1 -0
  709. package/utils/ssrf.js +1 -0
  710. package/utils/standard_schema.cjs +1 -0
  711. package/utils/standard_schema.d.cts +1 -0
  712. package/utils/standard_schema.d.ts +1 -0
  713. package/utils/standard_schema.js +1 -0
  714. package/utils/stream.cjs +1 -0
  715. package/utils/stream.d.cts +1 -0
  716. package/utils/stream.d.ts +1 -0
  717. package/utils/stream.js +1 -0
  718. package/utils/testing.cjs +1 -0
  719. package/utils/testing.d.cts +1 -0
  720. package/utils/testing.d.ts +1 -0
  721. package/utils/testing.js +1 -0
  722. package/utils/tiktoken.cjs +1 -0
  723. package/utils/tiktoken.d.cts +1 -0
  724. package/utils/tiktoken.d.ts +1 -0
  725. package/utils/tiktoken.js +1 -0
  726. package/utils/types.cjs +1 -0
  727. package/utils/types.d.cts +1 -0
  728. package/utils/types.d.ts +1 -0
  729. package/utils/types.js +1 -0
  730. package/utils/uuid.cjs +1 -0
  731. package/utils/uuid.d.cts +1 -0
  732. package/utils/uuid.d.ts +1 -0
  733. package/utils/uuid.js +1 -0
  734. package/vectorstores.cjs +1 -0
  735. package/vectorstores.d.cts +1 -0
  736. package/vectorstores.d.ts +1 -0
  737. package/vectorstores.js +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai_completions_stream.cjs","names":["finalizeContentBlock"],"sources":["../../src/language_models/openai_completions_stream.ts"],"sourcesContent":["/**\n * Converts OpenAI Chat Completions-shaped stream chunks into\n * {@link ChatModelStreamEvent}s.\n *\n * Used by `@langchain/openai` and OpenAI-compatible providers (Groq, Mistral,\n * OpenRouter, IBM watsonx, etc.) without requiring a dependency on\n * `@langchain/openai`.\n *\n * @module\n */\n\nimport { finalizeContentBlock } from \"./compat.js\";\nimport type { ChatModelStreamEvent, FinishReason } from \"./event.js\";\nimport type { ContentBlock } from \"../messages/content/index.js\";\nimport type { UsageMetadata } from \"../messages/metadata.js\";\n\nexport type OpenAICompletionsFinishReason =\n | \"stop\"\n | \"length\"\n | \"max_tokens\"\n | \"tool_calls\"\n | \"function_call\"\n | \"content_filter\"\n | null;\n\nexport interface OpenAICompletionsUsage {\n prompt_tokens?: number;\n completion_tokens?: number;\n total_tokens?: number;\n prompt_tokens_details?: {\n audio_tokens?: number;\n cached_tokens?: number;\n };\n completion_tokens_details?: {\n audio_tokens?: number;\n reasoning_tokens?: number;\n };\n}\n\nexport interface OpenAICompletionsToolCallDelta {\n index?: number;\n id?: string;\n type?: \"function\";\n function?: {\n name?: string;\n arguments?: string;\n };\n}\n\nexport interface OpenAICompletionsDelta {\n role?: string;\n content?: string | null;\n reasoning_content?: string;\n reasoning?: string;\n tool_calls?: OpenAICompletionsToolCallDelta[];\n function_call?: unknown;\n audio?: {\n id?: string;\n data?: string;\n transcript?: string;\n };\n}\n\nexport interface OpenAICompletionsStreamChoice {\n index?: number;\n finish_reason?: OpenAICompletionsFinishReason;\n logprobs?: unknown;\n delta?: OpenAICompletionsDelta;\n}\n\nexport interface OpenAICompletionsStreamChunk {\n id?: string;\n model?: string;\n service_tier?: string | null;\n system_fingerprint?: string | null;\n usage?: OpenAICompletionsUsage | null;\n x_groq?: {\n usage?: {\n prompt_tokens?: number;\n completion_tokens?: number;\n total_tokens?: number;\n };\n };\n choices?: OpenAICompletionsStreamChoice[];\n}\n\nexport interface ConvertOpenAICompletionsStreamOptions {\n streamUsage?: boolean;\n /** Provider id for passthrough events (default `\"openai\"`). */\n provider?: string;\n /** Optional per-chunk transform before conversion. */\n mapChunk?: (\n chunk: OpenAICompletionsStreamChunk\n ) => OpenAICompletionsStreamChunk;\n}\n\ntype BlockKey = \"text\" | \"reasoning\" | \"audio\" | `tool:${number}`;\n\n/**\n * Convert an async iterable of OpenAI Chat Completions-shaped stream chunks into\n * LangChain `ChatModelStreamEvent`s with typed deltas.\n */\nexport async function* convertOpenAICompletionsStream(\n source: AsyncIterable<OpenAICompletionsStreamChunk>,\n options: ConvertOpenAICompletionsStreamOptions = {}\n): AsyncGenerator<ChatModelStreamEvent> {\n const shouldStreamUsage = options.streamUsage ?? true;\n const provider = options.provider ?? \"openai\";\n const mapChunk = options.mapChunk;\n\n const blockAccumulators = new Map<\n number,\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n Record<string, any>\n >();\n const blockKeyToIndex = new Map<BlockKey, number>();\n let nextBlockIndex = 0;\n let messageStarted = false;\n let usageSnapshot: UsageMetadata | undefined;\n let finishReason: FinishReason | undefined;\n let responseMetadata: Record<string, unknown> | undefined;\n let emittedProviderMetadata = false;\n\n const getOrCreateBlockIndex = (\n key: BlockKey,\n initial: Record<string, unknown>\n ): { index: number; isNew: boolean } => {\n const existing = blockKeyToIndex.get(key);\n if (existing !== undefined) {\n return { index: existing, isNew: false };\n }\n const index = nextBlockIndex++;\n blockKeyToIndex.set(key, index);\n blockAccumulators.set(index, { ...initial });\n return { index, isNew: true };\n };\n\n for await (let data of source) {\n if (mapChunk) {\n data = mapChunk(data);\n }\n if (!messageStarted) {\n messageStarted = true;\n yield {\n event: \"message-start\" as const,\n id: data.id,\n };\n }\n\n if (!emittedProviderMetadata && (data.model || data.service_tier)) {\n emittedProviderMetadata = true;\n yield {\n event: \"provider\" as const,\n provider,\n name: \"stream_metadata\",\n payload: {\n model: data.model,\n service_tier: data.service_tier,\n },\n };\n }\n\n if (data.usage && shouldStreamUsage) {\n usageSnapshot = buildUsageSnapshot(data.usage);\n yield { event: \"usage\" as const, usage: usageSnapshot };\n }\n\n const groqUsage = data.x_groq?.usage;\n if (groqUsage && shouldStreamUsage) {\n usageSnapshot = buildGroqUsageSnapshot(groqUsage);\n yield { event: \"usage\" as const, usage: usageSnapshot };\n }\n\n const choice = data.choices?.[0];\n if (!choice) {\n continue;\n }\n\n if (choice.finish_reason != null) {\n finishReason = mapFinishReason(choice.finish_reason);\n responseMetadata = buildResponseMetadata(data, choice);\n }\n\n const { delta } = choice;\n if (!delta) {\n continue;\n }\n\n const reasoningText = getReasoningDeltaText(delta);\n if (reasoningText) {\n const key: BlockKey = \"reasoning\";\n const { index, isNew } = getOrCreateBlockIndex(key, {\n type: \"reasoning\" as const,\n reasoning: \"\",\n });\n if (isNew) {\n yield {\n event: \"content-block-start\" as const,\n index,\n content: { type: \"reasoning\", reasoning: \"\" } as ContentBlock,\n };\n }\n const acc = blockAccumulators.get(index)!;\n acc.reasoning = (acc.reasoning ?? \"\") + reasoningText;\n yield {\n event: \"content-block-delta\" as const,\n index,\n delta: {\n type: \"reasoning-delta\" as const,\n reasoning: reasoningText,\n },\n };\n }\n\n if (delta.content) {\n const key: BlockKey = \"text\";\n const { index, isNew } = getOrCreateBlockIndex(key, {\n type: \"text\" as const,\n text: \"\",\n });\n if (isNew) {\n yield {\n event: \"content-block-start\" as const,\n index,\n content: { type: \"text\", text: \"\" } as ContentBlock,\n };\n }\n const acc = blockAccumulators.get(index)!;\n acc.text = (acc.text ?? \"\") + delta.content;\n yield {\n event: \"content-block-delta\" as const,\n index,\n delta: { type: \"text-delta\" as const, text: delta.content },\n };\n }\n\n if (Array.isArray(delta.tool_calls)) {\n for (const rawToolCall of delta.tool_calls) {\n const toolIndex = rawToolCall.index ?? 0;\n const key: BlockKey = `tool:${toolIndex}`;\n const { index, isNew } = getOrCreateBlockIndex(key, {\n type: \"tool_call_chunk\" as const,\n id: rawToolCall.id,\n name: rawToolCall.function?.name,\n args: \"\",\n index: toolIndex,\n });\n if (isNew) {\n yield {\n event: \"content-block-start\" as const,\n index,\n content: {\n type: \"tool_call_chunk\",\n id: rawToolCall.id,\n name: rawToolCall.function?.name,\n args: \"\",\n index: toolIndex,\n } as ContentBlock,\n };\n }\n\n const acc = blockAccumulators.get(index)!;\n if (rawToolCall.id != null) acc.id = rawToolCall.id;\n if (rawToolCall.function?.name != null) {\n acc.name = rawToolCall.function.name;\n }\n const argDelta = rawToolCall.function?.arguments ?? \"\";\n acc.args = (acc.args ?? \"\") + argDelta;\n yield {\n event: \"content-block-delta\" as const,\n index,\n delta: {\n type: \"block-delta\" as const,\n fields: {\n type: \"tool_call_chunk\",\n ...(acc.id != null ? { id: acc.id } : {}),\n ...(acc.name != null ? { name: acc.name } : {}),\n args: acc.args,\n },\n },\n };\n }\n }\n\n if (delta.audio) {\n const key: BlockKey = \"audio\";\n const { index, isNew } = getOrCreateBlockIndex(key, {\n type: \"audio\" as const,\n id: delta.audio.id,\n data: \"\",\n mimeType: \"audio/pcm\",\n transcript: delta.audio.transcript ?? \"\",\n });\n if (isNew) {\n yield {\n event: \"content-block-start\" as const,\n index,\n content: {\n type: \"audio\",\n id: delta.audio.id,\n data: \"\",\n mimeType: \"audio/pcm\",\n transcript: delta.audio.transcript ?? \"\",\n } as ContentBlock,\n };\n }\n const acc = blockAccumulators.get(index)!;\n if (delta.audio.transcript) {\n acc.transcript = (acc.transcript ?? \"\") + delta.audio.transcript;\n yield {\n event: \"content-block-delta\" as const,\n index,\n delta: {\n type: \"block-delta\" as const,\n fields: {\n type: \"audio\",\n transcript: acc.transcript,\n },\n },\n };\n }\n if (delta.audio.data) {\n acc.data = (acc.data ?? \"\") + delta.audio.data;\n yield {\n event: \"content-block-delta\" as const,\n index,\n delta: {\n type: \"data-delta\" as const,\n data: delta.audio.data,\n encoding: \"base64\" as const,\n },\n };\n }\n }\n\n if (delta.function_call) {\n yield {\n event: \"provider\" as const,\n provider,\n name: \"function_call\",\n payload: delta.function_call,\n };\n }\n\n if (choice.logprobs) {\n yield {\n event: \"provider\" as const,\n provider,\n name: \"logprobs\",\n payload: choice.logprobs,\n };\n }\n }\n\n for (const [index, acc] of blockAccumulators) {\n const finalized = finalizeContentBlock(acc as ContentBlock);\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: finishReason,\n ...(usageSnapshot ? { usage: usageSnapshot } : {}),\n ...(responseMetadata ? { responseMetadata } : {}),\n };\n}\n\nfunction getReasoningDeltaText(\n delta: OpenAICompletionsDelta\n): string | undefined {\n const reasoning = delta.reasoning_content ?? delta.reasoning;\n return typeof reasoning === \"string\" && reasoning.length > 0\n ? reasoning\n : undefined;\n}\n\nfunction buildGroqUsageSnapshot(usage: {\n prompt_tokens?: number;\n completion_tokens?: number;\n total_tokens?: number;\n}): UsageMetadata {\n return {\n input_tokens: usage.prompt_tokens ?? 0,\n output_tokens: usage.completion_tokens ?? 0,\n total_tokens: usage.total_tokens ?? 0,\n };\n}\n\nfunction mapFinishReason(reason: OpenAICompletionsFinishReason): FinishReason {\n switch (reason) {\n case \"stop\":\n return \"stop\";\n case \"length\":\n case \"max_tokens\":\n return \"length\";\n case \"tool_calls\":\n case \"function_call\":\n return \"tool_use\";\n case \"content_filter\":\n return \"content_filter\";\n default:\n return \"stop\";\n }\n}\n\nfunction buildUsageSnapshot(usage: OpenAICompletionsUsage): UsageMetadata {\n const inputTokenDetails = {\n ...(usage.prompt_tokens_details?.audio_tokens != null && {\n audio: usage.prompt_tokens_details.audio_tokens,\n }),\n ...(usage.prompt_tokens_details?.cached_tokens != null && {\n cache_read: usage.prompt_tokens_details.cached_tokens,\n }),\n };\n const outputTokenDetails = {\n ...(usage.completion_tokens_details?.audio_tokens != null && {\n audio: usage.completion_tokens_details.audio_tokens,\n }),\n ...(usage.completion_tokens_details?.reasoning_tokens != null && {\n reasoning: usage.completion_tokens_details.reasoning_tokens,\n }),\n };\n return {\n input_tokens: usage.prompt_tokens ?? 0,\n output_tokens: usage.completion_tokens ?? 0,\n total_tokens: usage.total_tokens ?? 0,\n ...(Object.keys(inputTokenDetails).length > 0 && {\n input_token_details: inputTokenDetails,\n }),\n ...(Object.keys(outputTokenDetails).length > 0 && {\n output_token_details: outputTokenDetails,\n }),\n };\n}\n\nfunction buildResponseMetadata(\n data: OpenAICompletionsStreamChunk,\n choice: OpenAICompletionsStreamChoice\n): Record<string, unknown> {\n return {\n model_provider: \"openai\",\n model_name: data.model,\n system_fingerprint: data.system_fingerprint,\n service_tier: data.service_tier,\n finish_reason: choice.finish_reason,\n ...(data.usage ? { usage: data.usage } : {}),\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAsGA,gBAAuB,+BACrB,QACA,UAAiD,EAAE,EACb;CACtC,MAAM,oBAAoB,QAAQ,eAAe;CACjD,MAAM,WAAW,QAAQ,YAAY;CACrC,MAAM,WAAW,QAAQ;CAEzB,MAAM,oCAAoB,IAAI,KAI3B;CACH,MAAM,kCAAkB,IAAI,KAAuB;CACnD,IAAI,iBAAiB;CACrB,IAAI,iBAAiB;CACrB,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI,0BAA0B;CAE9B,MAAM,yBACJ,KACA,YACsC;EACtC,MAAM,WAAW,gBAAgB,IAAI,IAAI;AACzC,MAAI,aAAa,KAAA,EACf,QAAO;GAAE,OAAO;GAAU,OAAO;GAAO;EAE1C,MAAM,QAAQ;AACd,kBAAgB,IAAI,KAAK,MAAM;AAC/B,oBAAkB,IAAI,OAAO,EAAE,GAAG,SAAS,CAAC;AAC5C,SAAO;GAAE;GAAO,OAAO;GAAM;;AAG/B,YAAW,IAAI,QAAQ,QAAQ;AAC7B,MAAI,SACF,QAAO,SAAS,KAAK;AAEvB,MAAI,CAAC,gBAAgB;AACnB,oBAAiB;AACjB,SAAM;IACJ,OAAO;IACP,IAAI,KAAK;IACV;;AAGH,MAAI,CAAC,4BAA4B,KAAK,SAAS,KAAK,eAAe;AACjE,6BAA0B;AAC1B,SAAM;IACJ,OAAO;IACP;IACA,MAAM;IACN,SAAS;KACP,OAAO,KAAK;KACZ,cAAc,KAAK;KACpB;IACF;;AAGH,MAAI,KAAK,SAAS,mBAAmB;AACnC,mBAAgB,mBAAmB,KAAK,MAAM;AAC9C,SAAM;IAAE,OAAO;IAAkB,OAAO;IAAe;;EAGzD,MAAM,YAAY,KAAK,QAAQ;AAC/B,MAAI,aAAa,mBAAmB;AAClC,mBAAgB,uBAAuB,UAAU;AACjD,SAAM;IAAE,OAAO;IAAkB,OAAO;IAAe;;EAGzD,MAAM,SAAS,KAAK,UAAU;AAC9B,MAAI,CAAC,OACH;AAGF,MAAI,OAAO,iBAAiB,MAAM;AAChC,kBAAe,gBAAgB,OAAO,cAAc;AACpD,sBAAmB,sBAAsB,MAAM,OAAO;;EAGxD,MAAM,EAAE,UAAU;AAClB,MAAI,CAAC,MACH;EAGF,MAAM,gBAAgB,sBAAsB,MAAM;AAClD,MAAI,eAAe;GAEjB,MAAM,EAAE,OAAO,UAAU,sBAAsB,aAAK;IAClD,MAAM;IACN,WAAW;IACZ,CAAC;AACF,OAAI,MACF,OAAM;IACJ,OAAO;IACP;IACA,SAAS;KAAE,MAAM;KAAa,WAAW;KAAI;IAC9C;GAEH,MAAM,MAAM,kBAAkB,IAAI,MAAM;AACxC,OAAI,aAAa,IAAI,aAAa,MAAM;AACxC,SAAM;IACJ,OAAO;IACP;IACA,OAAO;KACL,MAAM;KACN,WAAW;KACZ;IACF;;AAGH,MAAI,MAAM,SAAS;GAEjB,MAAM,EAAE,OAAO,UAAU,sBAAsB,QAAK;IAClD,MAAM;IACN,MAAM;IACP,CAAC;AACF,OAAI,MACF,OAAM;IACJ,OAAO;IACP;IACA,SAAS;KAAE,MAAM;KAAQ,MAAM;KAAI;IACpC;GAEH,MAAM,MAAM,kBAAkB,IAAI,MAAM;AACxC,OAAI,QAAQ,IAAI,QAAQ,MAAM,MAAM;AACpC,SAAM;IACJ,OAAO;IACP;IACA,OAAO;KAAE,MAAM;KAAuB,MAAM,MAAM;KAAS;IAC5D;;AAGH,MAAI,MAAM,QAAQ,MAAM,WAAW,CACjC,MAAK,MAAM,eAAe,MAAM,YAAY;GAC1C,MAAM,YAAY,YAAY,SAAS;GAEvC,MAAM,EAAE,OAAO,UAAU,sBAAsB,QADjB,aACsB;IAClD,MAAM;IACN,IAAI,YAAY;IAChB,MAAM,YAAY,UAAU;IAC5B,MAAM;IACN,OAAO;IACR,CAAC;AACF,OAAI,MACF,OAAM;IACJ,OAAO;IACP;IACA,SAAS;KACP,MAAM;KACN,IAAI,YAAY;KAChB,MAAM,YAAY,UAAU;KAC5B,MAAM;KACN,OAAO;KACR;IACF;GAGH,MAAM,MAAM,kBAAkB,IAAI,MAAM;AACxC,OAAI,YAAY,MAAM,KAAM,KAAI,KAAK,YAAY;AACjD,OAAI,YAAY,UAAU,QAAQ,KAChC,KAAI,OAAO,YAAY,SAAS;GAElC,MAAM,WAAW,YAAY,UAAU,aAAa;AACpD,OAAI,QAAQ,IAAI,QAAQ,MAAM;AAC9B,SAAM;IACJ,OAAO;IACP;IACA,OAAO;KACL,MAAM;KACN,QAAQ;MACN,MAAM;MACN,GAAI,IAAI,MAAM,OAAO,EAAE,IAAI,IAAI,IAAI,GAAG,EAAE;MACxC,GAAI,IAAI,QAAQ,OAAO,EAAE,MAAM,IAAI,MAAM,GAAG,EAAE;MAC9C,MAAM,IAAI;MACX;KACF;IACF;;AAIL,MAAI,MAAM,OAAO;GAEf,MAAM,EAAE,OAAO,UAAU,sBAAsB,SAAK;IAClD,MAAM;IACN,IAAI,MAAM,MAAM;IAChB,MAAM;IACN,UAAU;IACV,YAAY,MAAM,MAAM,cAAc;IACvC,CAAC;AACF,OAAI,MACF,OAAM;IACJ,OAAO;IACP;IACA,SAAS;KACP,MAAM;KACN,IAAI,MAAM,MAAM;KAChB,MAAM;KACN,UAAU;KACV,YAAY,MAAM,MAAM,cAAc;KACvC;IACF;GAEH,MAAM,MAAM,kBAAkB,IAAI,MAAM;AACxC,OAAI,MAAM,MAAM,YAAY;AAC1B,QAAI,cAAc,IAAI,cAAc,MAAM,MAAM,MAAM;AACtD,UAAM;KACJ,OAAO;KACP;KACA,OAAO;MACL,MAAM;MACN,QAAQ;OACN,MAAM;OACN,YAAY,IAAI;OACjB;MACF;KACF;;AAEH,OAAI,MAAM,MAAM,MAAM;AACpB,QAAI,QAAQ,IAAI,QAAQ,MAAM,MAAM,MAAM;AAC1C,UAAM;KACJ,OAAO;KACP;KACA,OAAO;MACL,MAAM;MACN,MAAM,MAAM,MAAM;MAClB,UAAU;MACX;KACF;;;AAIL,MAAI,MAAM,cACR,OAAM;GACJ,OAAO;GACP;GACA,MAAM;GACN,SAAS,MAAM;GAChB;AAGH,MAAI,OAAO,SACT,OAAM;GACJ,OAAO;GACP;GACA,MAAM;GACN,SAAS,OAAO;GACjB;;AAIL,MAAK,MAAM,CAAC,OAAO,QAAQ,kBAEzB,OAAM;EACJ,OAAO;EACP;EACA,SAJgBA,+BAAAA,qBAAqB,IAInB;EACnB;AAGH,OAAM;EACJ,OAAO;EACP,QAAQ;EACR,GAAI,gBAAgB,EAAE,OAAO,eAAe,GAAG,EAAE;EACjD,GAAI,mBAAmB,EAAE,kBAAkB,GAAG,EAAE;EACjD;;AAGH,SAAS,sBACP,OACoB;CACpB,MAAM,YAAY,MAAM,qBAAqB,MAAM;AACnD,QAAO,OAAO,cAAc,YAAY,UAAU,SAAS,IACvD,YACA,KAAA;;AAGN,SAAS,uBAAuB,OAId;AAChB,QAAO;EACL,cAAc,MAAM,iBAAiB;EACrC,eAAe,MAAM,qBAAqB;EAC1C,cAAc,MAAM,gBAAgB;EACrC;;AAGH,SAAS,gBAAgB,QAAqD;AAC5E,SAAQ,QAAR;EACE,KAAK,OACH,QAAO;EACT,KAAK;EACL,KAAK,aACH,QAAO;EACT,KAAK;EACL,KAAK,gBACH,QAAO;EACT,KAAK,iBACH,QAAO;EACT,QACE,QAAO;;;AAIb,SAAS,mBAAmB,OAA8C;CACxE,MAAM,oBAAoB;EACxB,GAAI,MAAM,uBAAuB,gBAAgB,QAAQ,EACvD,OAAO,MAAM,sBAAsB,cACpC;EACD,GAAI,MAAM,uBAAuB,iBAAiB,QAAQ,EACxD,YAAY,MAAM,sBAAsB,eACzC;EACF;CACD,MAAM,qBAAqB;EACzB,GAAI,MAAM,2BAA2B,gBAAgB,QAAQ,EAC3D,OAAO,MAAM,0BAA0B,cACxC;EACD,GAAI,MAAM,2BAA2B,oBAAoB,QAAQ,EAC/D,WAAW,MAAM,0BAA0B,kBAC5C;EACF;AACD,QAAO;EACL,cAAc,MAAM,iBAAiB;EACrC,eAAe,MAAM,qBAAqB;EAC1C,cAAc,MAAM,gBAAgB;EACpC,GAAI,OAAO,KAAK,kBAAkB,CAAC,SAAS,KAAK,EAC/C,qBAAqB,mBACtB;EACD,GAAI,OAAO,KAAK,mBAAmB,CAAC,SAAS,KAAK,EAChD,sBAAsB,oBACvB;EACF;;AAGH,SAAS,sBACP,MACA,QACyB;AACzB,QAAO;EACL,gBAAgB;EAChB,YAAY,KAAK;EACjB,oBAAoB,KAAK;EACzB,cAAc,KAAK;EACnB,eAAe,OAAO;EACtB,GAAI,KAAK,QAAQ,EAAE,OAAO,KAAK,OAAO,GAAG,EAAE;EAC5C"}
@@ -0,0 +1,75 @@
1
+ import { ChatModelStreamEvent } from "./event.cjs";
2
+
3
+ //#region src/language_models/openai_completions_stream.d.ts
4
+ type OpenAICompletionsFinishReason = "stop" | "length" | "max_tokens" | "tool_calls" | "function_call" | "content_filter" | null;
5
+ interface OpenAICompletionsUsage {
6
+ prompt_tokens?: number;
7
+ completion_tokens?: number;
8
+ total_tokens?: number;
9
+ prompt_tokens_details?: {
10
+ audio_tokens?: number;
11
+ cached_tokens?: number;
12
+ };
13
+ completion_tokens_details?: {
14
+ audio_tokens?: number;
15
+ reasoning_tokens?: number;
16
+ };
17
+ }
18
+ interface OpenAICompletionsToolCallDelta {
19
+ index?: number;
20
+ id?: string;
21
+ type?: "function";
22
+ function?: {
23
+ name?: string;
24
+ arguments?: string;
25
+ };
26
+ }
27
+ interface OpenAICompletionsDelta {
28
+ role?: string;
29
+ content?: string | null;
30
+ reasoning_content?: string;
31
+ reasoning?: string;
32
+ tool_calls?: OpenAICompletionsToolCallDelta[];
33
+ function_call?: unknown;
34
+ audio?: {
35
+ id?: string;
36
+ data?: string;
37
+ transcript?: string;
38
+ };
39
+ }
40
+ interface OpenAICompletionsStreamChoice {
41
+ index?: number;
42
+ finish_reason?: OpenAICompletionsFinishReason;
43
+ logprobs?: unknown;
44
+ delta?: OpenAICompletionsDelta;
45
+ }
46
+ interface OpenAICompletionsStreamChunk {
47
+ id?: string;
48
+ model?: string;
49
+ service_tier?: string | null;
50
+ system_fingerprint?: string | null;
51
+ usage?: OpenAICompletionsUsage | null;
52
+ x_groq?: {
53
+ usage?: {
54
+ prompt_tokens?: number;
55
+ completion_tokens?: number;
56
+ total_tokens?: number;
57
+ };
58
+ };
59
+ choices?: OpenAICompletionsStreamChoice[];
60
+ }
61
+ interface ConvertOpenAICompletionsStreamOptions {
62
+ streamUsage?: boolean;
63
+ /** Provider id for passthrough events (default `"openai"`). */
64
+ provider?: string;
65
+ /** Optional per-chunk transform before conversion. */
66
+ mapChunk?: (chunk: OpenAICompletionsStreamChunk) => OpenAICompletionsStreamChunk;
67
+ }
68
+ /**
69
+ * Convert an async iterable of OpenAI Chat Completions-shaped stream chunks into
70
+ * LangChain `ChatModelStreamEvent`s with typed deltas.
71
+ */
72
+ declare function convertOpenAICompletionsStream(source: AsyncIterable<OpenAICompletionsStreamChunk>, options?: ConvertOpenAICompletionsStreamOptions): AsyncGenerator<ChatModelStreamEvent>;
73
+ //#endregion
74
+ export { ConvertOpenAICompletionsStreamOptions, OpenAICompletionsDelta, OpenAICompletionsFinishReason, OpenAICompletionsStreamChoice, OpenAICompletionsStreamChunk, OpenAICompletionsToolCallDelta, OpenAICompletionsUsage, convertOpenAICompletionsStream };
75
+ //# sourceMappingURL=openai_completions_stream.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai_completions_stream.d.cts","names":[],"sources":["../../src/language_models/openai_completions_stream.ts"],"mappings":";;;KAgBY,6BAAA;AAAA,UASK,sBAAA;EACf,aAAA;EACA,iBAAA;EACA,YAAA;EACA,qBAAA;IACE,YAAA;IACA,aAAA;EAAA;EAEF,yBAAA;IACE,YAAA;IACA,gBAAA;EAAA;AAAA;AAAA,UAIa,8BAAA;EACf,KAAA;EACA,EAAA;EACA,IAAA;EACA,QAAA;IACE,IAAA;IACA,SAAA;EAAA;AAAA;AAAA,UAIa,sBAAA;EACf,IAAA;EACA,OAAA;EACA,iBAAA;EACA,SAAA;EACA,UAAA,GAAa,8BAAA;EACb,aAAA;EACA,KAAA;IACE,EAAA;IACA,IAAA;IACA,UAAA;EAAA;AAAA;AAAA,UAIa,6BAAA;EACf,KAAA;EACA,aAAA,GAAgB,6BAAA;EAChB,QAAA;EACA,KAAA,GAAQ,sBAAA;AAAA;AAAA,UAGO,4BAAA;EACf,EAAA;EACA,KAAA;EACA,YAAA;EACA,kBAAA;EACA,KAAA,GAAQ,sBAAA;EACR,MAAA;IACE,KAAA;MACE,aAAA;MACA,iBAAA;MACA,YAAA;IAAA;EAAA;EAGJ,OAAA,GAAU,6BAAA;AAAA;AAAA,UAGK,qCAAA;EACf,WAAA;EAdA;EAgBA,QAAA;EAdA;EAgBA,QAAA,IACE,KAAA,EAAO,4BAAA,KACJ,4BAAA;AAAA;;;;;iBASgB,8BAAA,CACrB,MAAA,EAAQ,aAAA,CAAc,4BAAA,GACtB,OAAA,GAAS,qCAAA,GACR,cAAA,CAAe,oBAAA"}
@@ -0,0 +1,75 @@
1
+ import { ChatModelStreamEvent } from "./event.js";
2
+
3
+ //#region src/language_models/openai_completions_stream.d.ts
4
+ type OpenAICompletionsFinishReason = "stop" | "length" | "max_tokens" | "tool_calls" | "function_call" | "content_filter" | null;
5
+ interface OpenAICompletionsUsage {
6
+ prompt_tokens?: number;
7
+ completion_tokens?: number;
8
+ total_tokens?: number;
9
+ prompt_tokens_details?: {
10
+ audio_tokens?: number;
11
+ cached_tokens?: number;
12
+ };
13
+ completion_tokens_details?: {
14
+ audio_tokens?: number;
15
+ reasoning_tokens?: number;
16
+ };
17
+ }
18
+ interface OpenAICompletionsToolCallDelta {
19
+ index?: number;
20
+ id?: string;
21
+ type?: "function";
22
+ function?: {
23
+ name?: string;
24
+ arguments?: string;
25
+ };
26
+ }
27
+ interface OpenAICompletionsDelta {
28
+ role?: string;
29
+ content?: string | null;
30
+ reasoning_content?: string;
31
+ reasoning?: string;
32
+ tool_calls?: OpenAICompletionsToolCallDelta[];
33
+ function_call?: unknown;
34
+ audio?: {
35
+ id?: string;
36
+ data?: string;
37
+ transcript?: string;
38
+ };
39
+ }
40
+ interface OpenAICompletionsStreamChoice {
41
+ index?: number;
42
+ finish_reason?: OpenAICompletionsFinishReason;
43
+ logprobs?: unknown;
44
+ delta?: OpenAICompletionsDelta;
45
+ }
46
+ interface OpenAICompletionsStreamChunk {
47
+ id?: string;
48
+ model?: string;
49
+ service_tier?: string | null;
50
+ system_fingerprint?: string | null;
51
+ usage?: OpenAICompletionsUsage | null;
52
+ x_groq?: {
53
+ usage?: {
54
+ prompt_tokens?: number;
55
+ completion_tokens?: number;
56
+ total_tokens?: number;
57
+ };
58
+ };
59
+ choices?: OpenAICompletionsStreamChoice[];
60
+ }
61
+ interface ConvertOpenAICompletionsStreamOptions {
62
+ streamUsage?: boolean;
63
+ /** Provider id for passthrough events (default `"openai"`). */
64
+ provider?: string;
65
+ /** Optional per-chunk transform before conversion. */
66
+ mapChunk?: (chunk: OpenAICompletionsStreamChunk) => OpenAICompletionsStreamChunk;
67
+ }
68
+ /**
69
+ * Convert an async iterable of OpenAI Chat Completions-shaped stream chunks into
70
+ * LangChain `ChatModelStreamEvent`s with typed deltas.
71
+ */
72
+ declare function convertOpenAICompletionsStream(source: AsyncIterable<OpenAICompletionsStreamChunk>, options?: ConvertOpenAICompletionsStreamOptions): AsyncGenerator<ChatModelStreamEvent>;
73
+ //#endregion
74
+ export { ConvertOpenAICompletionsStreamOptions, OpenAICompletionsDelta, OpenAICompletionsFinishReason, OpenAICompletionsStreamChoice, OpenAICompletionsStreamChunk, OpenAICompletionsToolCallDelta, OpenAICompletionsUsage, convertOpenAICompletionsStream };
75
+ //# sourceMappingURL=openai_completions_stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai_completions_stream.d.ts","names":[],"sources":["../../src/language_models/openai_completions_stream.ts"],"mappings":";;;KAgBY,6BAAA;AAAA,UASK,sBAAA;EACf,aAAA;EACA,iBAAA;EACA,YAAA;EACA,qBAAA;IACE,YAAA;IACA,aAAA;EAAA;EAEF,yBAAA;IACE,YAAA;IACA,gBAAA;EAAA;AAAA;AAAA,UAIa,8BAAA;EACf,KAAA;EACA,EAAA;EACA,IAAA;EACA,QAAA;IACE,IAAA;IACA,SAAA;EAAA;AAAA;AAAA,UAIa,sBAAA;EACf,IAAA;EACA,OAAA;EACA,iBAAA;EACA,SAAA;EACA,UAAA,GAAa,8BAAA;EACb,aAAA;EACA,KAAA;IACE,EAAA;IACA,IAAA;IACA,UAAA;EAAA;AAAA;AAAA,UAIa,6BAAA;EACf,KAAA;EACA,aAAA,GAAgB,6BAAA;EAChB,QAAA;EACA,KAAA,GAAQ,sBAAA;AAAA;AAAA,UAGO,4BAAA;EACf,EAAA;EACA,KAAA;EACA,YAAA;EACA,kBAAA;EACA,KAAA,GAAQ,sBAAA;EACR,MAAA;IACE,KAAA;MACE,aAAA;MACA,iBAAA;MACA,YAAA;IAAA;EAAA;EAGJ,OAAA,GAAU,6BAAA;AAAA;AAAA,UAGK,qCAAA;EACf,WAAA;EAdA;EAgBA,QAAA;EAdA;EAgBA,QAAA,IACE,KAAA,EAAO,4BAAA,KACJ,4BAAA;AAAA;;;;;iBASgB,8BAAA,CACrB,MAAA,EAAQ,aAAA,CAAc,4BAAA,GACtB,OAAA,GAAS,qCAAA,GACR,cAAA,CAAe,oBAAA"}
@@ -0,0 +1,301 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ import { finalizeContentBlock } from "./compat.js";
3
+ //#region src/language_models/openai_completions_stream.ts
4
+ /**
5
+ * Converts OpenAI Chat Completions-shaped stream chunks into
6
+ * {@link ChatModelStreamEvent}s.
7
+ *
8
+ * Used by `@langchain/openai` and OpenAI-compatible providers (Groq, Mistral,
9
+ * OpenRouter, IBM watsonx, etc.) without requiring a dependency on
10
+ * `@langchain/openai`.
11
+ *
12
+ * @module
13
+ */
14
+ var openai_completions_stream_exports = /* @__PURE__ */ __exportAll({ convertOpenAICompletionsStream: () => convertOpenAICompletionsStream });
15
+ /**
16
+ * Convert an async iterable of OpenAI Chat Completions-shaped stream chunks into
17
+ * LangChain `ChatModelStreamEvent`s with typed deltas.
18
+ */
19
+ async function* convertOpenAICompletionsStream(source, options = {}) {
20
+ const shouldStreamUsage = options.streamUsage ?? true;
21
+ const provider = options.provider ?? "openai";
22
+ const mapChunk = options.mapChunk;
23
+ const blockAccumulators = /* @__PURE__ */ new Map();
24
+ const blockKeyToIndex = /* @__PURE__ */ new Map();
25
+ let nextBlockIndex = 0;
26
+ let messageStarted = false;
27
+ let usageSnapshot;
28
+ let finishReason;
29
+ let responseMetadata;
30
+ let emittedProviderMetadata = false;
31
+ const getOrCreateBlockIndex = (key, initial) => {
32
+ const existing = blockKeyToIndex.get(key);
33
+ if (existing !== void 0) return {
34
+ index: existing,
35
+ isNew: false
36
+ };
37
+ const index = nextBlockIndex++;
38
+ blockKeyToIndex.set(key, index);
39
+ blockAccumulators.set(index, { ...initial });
40
+ return {
41
+ index,
42
+ isNew: true
43
+ };
44
+ };
45
+ for await (let data of source) {
46
+ if (mapChunk) data = mapChunk(data);
47
+ if (!messageStarted) {
48
+ messageStarted = true;
49
+ yield {
50
+ event: "message-start",
51
+ id: data.id
52
+ };
53
+ }
54
+ if (!emittedProviderMetadata && (data.model || data.service_tier)) {
55
+ emittedProviderMetadata = true;
56
+ yield {
57
+ event: "provider",
58
+ provider,
59
+ name: "stream_metadata",
60
+ payload: {
61
+ model: data.model,
62
+ service_tier: data.service_tier
63
+ }
64
+ };
65
+ }
66
+ if (data.usage && shouldStreamUsage) {
67
+ usageSnapshot = buildUsageSnapshot(data.usage);
68
+ yield {
69
+ event: "usage",
70
+ usage: usageSnapshot
71
+ };
72
+ }
73
+ const groqUsage = data.x_groq?.usage;
74
+ if (groqUsage && shouldStreamUsage) {
75
+ usageSnapshot = buildGroqUsageSnapshot(groqUsage);
76
+ yield {
77
+ event: "usage",
78
+ usage: usageSnapshot
79
+ };
80
+ }
81
+ const choice = data.choices?.[0];
82
+ if (!choice) continue;
83
+ if (choice.finish_reason != null) {
84
+ finishReason = mapFinishReason(choice.finish_reason);
85
+ responseMetadata = buildResponseMetadata(data, choice);
86
+ }
87
+ const { delta } = choice;
88
+ if (!delta) continue;
89
+ const reasoningText = getReasoningDeltaText(delta);
90
+ if (reasoningText) {
91
+ const { index, isNew } = getOrCreateBlockIndex("reasoning", {
92
+ type: "reasoning",
93
+ reasoning: ""
94
+ });
95
+ if (isNew) yield {
96
+ event: "content-block-start",
97
+ index,
98
+ content: {
99
+ type: "reasoning",
100
+ reasoning: ""
101
+ }
102
+ };
103
+ const acc = blockAccumulators.get(index);
104
+ acc.reasoning = (acc.reasoning ?? "") + reasoningText;
105
+ yield {
106
+ event: "content-block-delta",
107
+ index,
108
+ delta: {
109
+ type: "reasoning-delta",
110
+ reasoning: reasoningText
111
+ }
112
+ };
113
+ }
114
+ if (delta.content) {
115
+ const { index, isNew } = getOrCreateBlockIndex("text", {
116
+ type: "text",
117
+ text: ""
118
+ });
119
+ if (isNew) yield {
120
+ event: "content-block-start",
121
+ index,
122
+ content: {
123
+ type: "text",
124
+ text: ""
125
+ }
126
+ };
127
+ const acc = blockAccumulators.get(index);
128
+ acc.text = (acc.text ?? "") + delta.content;
129
+ yield {
130
+ event: "content-block-delta",
131
+ index,
132
+ delta: {
133
+ type: "text-delta",
134
+ text: delta.content
135
+ }
136
+ };
137
+ }
138
+ if (Array.isArray(delta.tool_calls)) for (const rawToolCall of delta.tool_calls) {
139
+ const toolIndex = rawToolCall.index ?? 0;
140
+ const { index, isNew } = getOrCreateBlockIndex(`tool:${toolIndex}`, {
141
+ type: "tool_call_chunk",
142
+ id: rawToolCall.id,
143
+ name: rawToolCall.function?.name,
144
+ args: "",
145
+ index: toolIndex
146
+ });
147
+ if (isNew) yield {
148
+ event: "content-block-start",
149
+ index,
150
+ content: {
151
+ type: "tool_call_chunk",
152
+ id: rawToolCall.id,
153
+ name: rawToolCall.function?.name,
154
+ args: "",
155
+ index: toolIndex
156
+ }
157
+ };
158
+ const acc = blockAccumulators.get(index);
159
+ if (rawToolCall.id != null) acc.id = rawToolCall.id;
160
+ if (rawToolCall.function?.name != null) acc.name = rawToolCall.function.name;
161
+ const argDelta = rawToolCall.function?.arguments ?? "";
162
+ acc.args = (acc.args ?? "") + argDelta;
163
+ yield {
164
+ event: "content-block-delta",
165
+ index,
166
+ delta: {
167
+ type: "block-delta",
168
+ fields: {
169
+ type: "tool_call_chunk",
170
+ ...acc.id != null ? { id: acc.id } : {},
171
+ ...acc.name != null ? { name: acc.name } : {},
172
+ args: acc.args
173
+ }
174
+ }
175
+ };
176
+ }
177
+ if (delta.audio) {
178
+ const { index, isNew } = getOrCreateBlockIndex("audio", {
179
+ type: "audio",
180
+ id: delta.audio.id,
181
+ data: "",
182
+ mimeType: "audio/pcm",
183
+ transcript: delta.audio.transcript ?? ""
184
+ });
185
+ if (isNew) yield {
186
+ event: "content-block-start",
187
+ index,
188
+ content: {
189
+ type: "audio",
190
+ id: delta.audio.id,
191
+ data: "",
192
+ mimeType: "audio/pcm",
193
+ transcript: delta.audio.transcript ?? ""
194
+ }
195
+ };
196
+ const acc = blockAccumulators.get(index);
197
+ if (delta.audio.transcript) {
198
+ acc.transcript = (acc.transcript ?? "") + delta.audio.transcript;
199
+ yield {
200
+ event: "content-block-delta",
201
+ index,
202
+ delta: {
203
+ type: "block-delta",
204
+ fields: {
205
+ type: "audio",
206
+ transcript: acc.transcript
207
+ }
208
+ }
209
+ };
210
+ }
211
+ if (delta.audio.data) {
212
+ acc.data = (acc.data ?? "") + delta.audio.data;
213
+ yield {
214
+ event: "content-block-delta",
215
+ index,
216
+ delta: {
217
+ type: "data-delta",
218
+ data: delta.audio.data,
219
+ encoding: "base64"
220
+ }
221
+ };
222
+ }
223
+ }
224
+ if (delta.function_call) yield {
225
+ event: "provider",
226
+ provider,
227
+ name: "function_call",
228
+ payload: delta.function_call
229
+ };
230
+ if (choice.logprobs) yield {
231
+ event: "provider",
232
+ provider,
233
+ name: "logprobs",
234
+ payload: choice.logprobs
235
+ };
236
+ }
237
+ for (const [index, acc] of blockAccumulators) yield {
238
+ event: "content-block-finish",
239
+ index,
240
+ content: finalizeContentBlock(acc)
241
+ };
242
+ yield {
243
+ event: "message-finish",
244
+ reason: finishReason,
245
+ ...usageSnapshot ? { usage: usageSnapshot } : {},
246
+ ...responseMetadata ? { responseMetadata } : {}
247
+ };
248
+ }
249
+ function getReasoningDeltaText(delta) {
250
+ const reasoning = delta.reasoning_content ?? delta.reasoning;
251
+ return typeof reasoning === "string" && reasoning.length > 0 ? reasoning : void 0;
252
+ }
253
+ function buildGroqUsageSnapshot(usage) {
254
+ return {
255
+ input_tokens: usage.prompt_tokens ?? 0,
256
+ output_tokens: usage.completion_tokens ?? 0,
257
+ total_tokens: usage.total_tokens ?? 0
258
+ };
259
+ }
260
+ function mapFinishReason(reason) {
261
+ switch (reason) {
262
+ case "stop": return "stop";
263
+ case "length":
264
+ case "max_tokens": return "length";
265
+ case "tool_calls":
266
+ case "function_call": return "tool_use";
267
+ case "content_filter": return "content_filter";
268
+ default: return "stop";
269
+ }
270
+ }
271
+ function buildUsageSnapshot(usage) {
272
+ const inputTokenDetails = {
273
+ ...usage.prompt_tokens_details?.audio_tokens != null && { audio: usage.prompt_tokens_details.audio_tokens },
274
+ ...usage.prompt_tokens_details?.cached_tokens != null && { cache_read: usage.prompt_tokens_details.cached_tokens }
275
+ };
276
+ const outputTokenDetails = {
277
+ ...usage.completion_tokens_details?.audio_tokens != null && { audio: usage.completion_tokens_details.audio_tokens },
278
+ ...usage.completion_tokens_details?.reasoning_tokens != null && { reasoning: usage.completion_tokens_details.reasoning_tokens }
279
+ };
280
+ return {
281
+ input_tokens: usage.prompt_tokens ?? 0,
282
+ output_tokens: usage.completion_tokens ?? 0,
283
+ total_tokens: usage.total_tokens ?? 0,
284
+ ...Object.keys(inputTokenDetails).length > 0 && { input_token_details: inputTokenDetails },
285
+ ...Object.keys(outputTokenDetails).length > 0 && { output_token_details: outputTokenDetails }
286
+ };
287
+ }
288
+ function buildResponseMetadata(data, choice) {
289
+ return {
290
+ model_provider: "openai",
291
+ model_name: data.model,
292
+ system_fingerprint: data.system_fingerprint,
293
+ service_tier: data.service_tier,
294
+ finish_reason: choice.finish_reason,
295
+ ...data.usage ? { usage: data.usage } : {}
296
+ };
297
+ }
298
+ //#endregion
299
+ export { convertOpenAICompletionsStream, openai_completions_stream_exports };
300
+
301
+ //# sourceMappingURL=openai_completions_stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai_completions_stream.js","names":[],"sources":["../../src/language_models/openai_completions_stream.ts"],"sourcesContent":["/**\n * Converts OpenAI Chat Completions-shaped stream chunks into\n * {@link ChatModelStreamEvent}s.\n *\n * Used by `@langchain/openai` and OpenAI-compatible providers (Groq, Mistral,\n * OpenRouter, IBM watsonx, etc.) without requiring a dependency on\n * `@langchain/openai`.\n *\n * @module\n */\n\nimport { finalizeContentBlock } from \"./compat.js\";\nimport type { ChatModelStreamEvent, FinishReason } from \"./event.js\";\nimport type { ContentBlock } from \"../messages/content/index.js\";\nimport type { UsageMetadata } from \"../messages/metadata.js\";\n\nexport type OpenAICompletionsFinishReason =\n | \"stop\"\n | \"length\"\n | \"max_tokens\"\n | \"tool_calls\"\n | \"function_call\"\n | \"content_filter\"\n | null;\n\nexport interface OpenAICompletionsUsage {\n prompt_tokens?: number;\n completion_tokens?: number;\n total_tokens?: number;\n prompt_tokens_details?: {\n audio_tokens?: number;\n cached_tokens?: number;\n };\n completion_tokens_details?: {\n audio_tokens?: number;\n reasoning_tokens?: number;\n };\n}\n\nexport interface OpenAICompletionsToolCallDelta {\n index?: number;\n id?: string;\n type?: \"function\";\n function?: {\n name?: string;\n arguments?: string;\n };\n}\n\nexport interface OpenAICompletionsDelta {\n role?: string;\n content?: string | null;\n reasoning_content?: string;\n reasoning?: string;\n tool_calls?: OpenAICompletionsToolCallDelta[];\n function_call?: unknown;\n audio?: {\n id?: string;\n data?: string;\n transcript?: string;\n };\n}\n\nexport interface OpenAICompletionsStreamChoice {\n index?: number;\n finish_reason?: OpenAICompletionsFinishReason;\n logprobs?: unknown;\n delta?: OpenAICompletionsDelta;\n}\n\nexport interface OpenAICompletionsStreamChunk {\n id?: string;\n model?: string;\n service_tier?: string | null;\n system_fingerprint?: string | null;\n usage?: OpenAICompletionsUsage | null;\n x_groq?: {\n usage?: {\n prompt_tokens?: number;\n completion_tokens?: number;\n total_tokens?: number;\n };\n };\n choices?: OpenAICompletionsStreamChoice[];\n}\n\nexport interface ConvertOpenAICompletionsStreamOptions {\n streamUsage?: boolean;\n /** Provider id for passthrough events (default `\"openai\"`). */\n provider?: string;\n /** Optional per-chunk transform before conversion. */\n mapChunk?: (\n chunk: OpenAICompletionsStreamChunk\n ) => OpenAICompletionsStreamChunk;\n}\n\ntype BlockKey = \"text\" | \"reasoning\" | \"audio\" | `tool:${number}`;\n\n/**\n * Convert an async iterable of OpenAI Chat Completions-shaped stream chunks into\n * LangChain `ChatModelStreamEvent`s with typed deltas.\n */\nexport async function* convertOpenAICompletionsStream(\n source: AsyncIterable<OpenAICompletionsStreamChunk>,\n options: ConvertOpenAICompletionsStreamOptions = {}\n): AsyncGenerator<ChatModelStreamEvent> {\n const shouldStreamUsage = options.streamUsage ?? true;\n const provider = options.provider ?? \"openai\";\n const mapChunk = options.mapChunk;\n\n const blockAccumulators = new Map<\n number,\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n Record<string, any>\n >();\n const blockKeyToIndex = new Map<BlockKey, number>();\n let nextBlockIndex = 0;\n let messageStarted = false;\n let usageSnapshot: UsageMetadata | undefined;\n let finishReason: FinishReason | undefined;\n let responseMetadata: Record<string, unknown> | undefined;\n let emittedProviderMetadata = false;\n\n const getOrCreateBlockIndex = (\n key: BlockKey,\n initial: Record<string, unknown>\n ): { index: number; isNew: boolean } => {\n const existing = blockKeyToIndex.get(key);\n if (existing !== undefined) {\n return { index: existing, isNew: false };\n }\n const index = nextBlockIndex++;\n blockKeyToIndex.set(key, index);\n blockAccumulators.set(index, { ...initial });\n return { index, isNew: true };\n };\n\n for await (let data of source) {\n if (mapChunk) {\n data = mapChunk(data);\n }\n if (!messageStarted) {\n messageStarted = true;\n yield {\n event: \"message-start\" as const,\n id: data.id,\n };\n }\n\n if (!emittedProviderMetadata && (data.model || data.service_tier)) {\n emittedProviderMetadata = true;\n yield {\n event: \"provider\" as const,\n provider,\n name: \"stream_metadata\",\n payload: {\n model: data.model,\n service_tier: data.service_tier,\n },\n };\n }\n\n if (data.usage && shouldStreamUsage) {\n usageSnapshot = buildUsageSnapshot(data.usage);\n yield { event: \"usage\" as const, usage: usageSnapshot };\n }\n\n const groqUsage = data.x_groq?.usage;\n if (groqUsage && shouldStreamUsage) {\n usageSnapshot = buildGroqUsageSnapshot(groqUsage);\n yield { event: \"usage\" as const, usage: usageSnapshot };\n }\n\n const choice = data.choices?.[0];\n if (!choice) {\n continue;\n }\n\n if (choice.finish_reason != null) {\n finishReason = mapFinishReason(choice.finish_reason);\n responseMetadata = buildResponseMetadata(data, choice);\n }\n\n const { delta } = choice;\n if (!delta) {\n continue;\n }\n\n const reasoningText = getReasoningDeltaText(delta);\n if (reasoningText) {\n const key: BlockKey = \"reasoning\";\n const { index, isNew } = getOrCreateBlockIndex(key, {\n type: \"reasoning\" as const,\n reasoning: \"\",\n });\n if (isNew) {\n yield {\n event: \"content-block-start\" as const,\n index,\n content: { type: \"reasoning\", reasoning: \"\" } as ContentBlock,\n };\n }\n const acc = blockAccumulators.get(index)!;\n acc.reasoning = (acc.reasoning ?? \"\") + reasoningText;\n yield {\n event: \"content-block-delta\" as const,\n index,\n delta: {\n type: \"reasoning-delta\" as const,\n reasoning: reasoningText,\n },\n };\n }\n\n if (delta.content) {\n const key: BlockKey = \"text\";\n const { index, isNew } = getOrCreateBlockIndex(key, {\n type: \"text\" as const,\n text: \"\",\n });\n if (isNew) {\n yield {\n event: \"content-block-start\" as const,\n index,\n content: { type: \"text\", text: \"\" } as ContentBlock,\n };\n }\n const acc = blockAccumulators.get(index)!;\n acc.text = (acc.text ?? \"\") + delta.content;\n yield {\n event: \"content-block-delta\" as const,\n index,\n delta: { type: \"text-delta\" as const, text: delta.content },\n };\n }\n\n if (Array.isArray(delta.tool_calls)) {\n for (const rawToolCall of delta.tool_calls) {\n const toolIndex = rawToolCall.index ?? 0;\n const key: BlockKey = `tool:${toolIndex}`;\n const { index, isNew } = getOrCreateBlockIndex(key, {\n type: \"tool_call_chunk\" as const,\n id: rawToolCall.id,\n name: rawToolCall.function?.name,\n args: \"\",\n index: toolIndex,\n });\n if (isNew) {\n yield {\n event: \"content-block-start\" as const,\n index,\n content: {\n type: \"tool_call_chunk\",\n id: rawToolCall.id,\n name: rawToolCall.function?.name,\n args: \"\",\n index: toolIndex,\n } as ContentBlock,\n };\n }\n\n const acc = blockAccumulators.get(index)!;\n if (rawToolCall.id != null) acc.id = rawToolCall.id;\n if (rawToolCall.function?.name != null) {\n acc.name = rawToolCall.function.name;\n }\n const argDelta = rawToolCall.function?.arguments ?? \"\";\n acc.args = (acc.args ?? \"\") + argDelta;\n yield {\n event: \"content-block-delta\" as const,\n index,\n delta: {\n type: \"block-delta\" as const,\n fields: {\n type: \"tool_call_chunk\",\n ...(acc.id != null ? { id: acc.id } : {}),\n ...(acc.name != null ? { name: acc.name } : {}),\n args: acc.args,\n },\n },\n };\n }\n }\n\n if (delta.audio) {\n const key: BlockKey = \"audio\";\n const { index, isNew } = getOrCreateBlockIndex(key, {\n type: \"audio\" as const,\n id: delta.audio.id,\n data: \"\",\n mimeType: \"audio/pcm\",\n transcript: delta.audio.transcript ?? \"\",\n });\n if (isNew) {\n yield {\n event: \"content-block-start\" as const,\n index,\n content: {\n type: \"audio\",\n id: delta.audio.id,\n data: \"\",\n mimeType: \"audio/pcm\",\n transcript: delta.audio.transcript ?? \"\",\n } as ContentBlock,\n };\n }\n const acc = blockAccumulators.get(index)!;\n if (delta.audio.transcript) {\n acc.transcript = (acc.transcript ?? \"\") + delta.audio.transcript;\n yield {\n event: \"content-block-delta\" as const,\n index,\n delta: {\n type: \"block-delta\" as const,\n fields: {\n type: \"audio\",\n transcript: acc.transcript,\n },\n },\n };\n }\n if (delta.audio.data) {\n acc.data = (acc.data ?? \"\") + delta.audio.data;\n yield {\n event: \"content-block-delta\" as const,\n index,\n delta: {\n type: \"data-delta\" as const,\n data: delta.audio.data,\n encoding: \"base64\" as const,\n },\n };\n }\n }\n\n if (delta.function_call) {\n yield {\n event: \"provider\" as const,\n provider,\n name: \"function_call\",\n payload: delta.function_call,\n };\n }\n\n if (choice.logprobs) {\n yield {\n event: \"provider\" as const,\n provider,\n name: \"logprobs\",\n payload: choice.logprobs,\n };\n }\n }\n\n for (const [index, acc] of blockAccumulators) {\n const finalized = finalizeContentBlock(acc as ContentBlock);\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: finishReason,\n ...(usageSnapshot ? { usage: usageSnapshot } : {}),\n ...(responseMetadata ? { responseMetadata } : {}),\n };\n}\n\nfunction getReasoningDeltaText(\n delta: OpenAICompletionsDelta\n): string | undefined {\n const reasoning = delta.reasoning_content ?? delta.reasoning;\n return typeof reasoning === \"string\" && reasoning.length > 0\n ? reasoning\n : undefined;\n}\n\nfunction buildGroqUsageSnapshot(usage: {\n prompt_tokens?: number;\n completion_tokens?: number;\n total_tokens?: number;\n}): UsageMetadata {\n return {\n input_tokens: usage.prompt_tokens ?? 0,\n output_tokens: usage.completion_tokens ?? 0,\n total_tokens: usage.total_tokens ?? 0,\n };\n}\n\nfunction mapFinishReason(reason: OpenAICompletionsFinishReason): FinishReason {\n switch (reason) {\n case \"stop\":\n return \"stop\";\n case \"length\":\n case \"max_tokens\":\n return \"length\";\n case \"tool_calls\":\n case \"function_call\":\n return \"tool_use\";\n case \"content_filter\":\n return \"content_filter\";\n default:\n return \"stop\";\n }\n}\n\nfunction buildUsageSnapshot(usage: OpenAICompletionsUsage): UsageMetadata {\n const inputTokenDetails = {\n ...(usage.prompt_tokens_details?.audio_tokens != null && {\n audio: usage.prompt_tokens_details.audio_tokens,\n }),\n ...(usage.prompt_tokens_details?.cached_tokens != null && {\n cache_read: usage.prompt_tokens_details.cached_tokens,\n }),\n };\n const outputTokenDetails = {\n ...(usage.completion_tokens_details?.audio_tokens != null && {\n audio: usage.completion_tokens_details.audio_tokens,\n }),\n ...(usage.completion_tokens_details?.reasoning_tokens != null && {\n reasoning: usage.completion_tokens_details.reasoning_tokens,\n }),\n };\n return {\n input_tokens: usage.prompt_tokens ?? 0,\n output_tokens: usage.completion_tokens ?? 0,\n total_tokens: usage.total_tokens ?? 0,\n ...(Object.keys(inputTokenDetails).length > 0 && {\n input_token_details: inputTokenDetails,\n }),\n ...(Object.keys(outputTokenDetails).length > 0 && {\n output_token_details: outputTokenDetails,\n }),\n };\n}\n\nfunction buildResponseMetadata(\n data: OpenAICompletionsStreamChunk,\n choice: OpenAICompletionsStreamChoice\n): Record<string, unknown> {\n return {\n model_provider: \"openai\",\n model_name: data.model,\n system_fingerprint: data.system_fingerprint,\n service_tier: data.service_tier,\n finish_reason: choice.finish_reason,\n ...(data.usage ? { usage: data.usage } : {}),\n };\n}\n"],"mappings":"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"}