@langchain/langgraph-sdk 1.8.10 → 1.9.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 (435) hide show
  1. package/README.md +90 -43
  2. package/dist/client/assistants/index.cjs +180 -0
  3. package/dist/client/assistants/index.cjs.map +1 -0
  4. package/dist/client/assistants/index.d.cts +155 -0
  5. package/dist/client/assistants/index.d.cts.map +1 -0
  6. package/dist/client/assistants/index.d.ts +155 -0
  7. package/dist/client/assistants/index.d.ts.map +1 -0
  8. package/dist/client/assistants/index.js +180 -0
  9. package/dist/client/assistants/index.js.map +1 -0
  10. package/dist/client/base.cjs +190 -0
  11. package/dist/client/base.cjs.map +1 -0
  12. package/dist/client/base.d.cts +84 -0
  13. package/dist/client/base.d.cts.map +1 -0
  14. package/dist/client/base.d.ts +84 -0
  15. package/dist/client/base.d.ts.map +1 -0
  16. package/dist/client/base.js +188 -0
  17. package/dist/client/base.js.map +1 -0
  18. package/dist/client/crons/index.cjs +159 -0
  19. package/dist/client/crons/index.cjs.map +1 -0
  20. package/dist/client/crons/index.d.cts +71 -0
  21. package/dist/client/crons/index.d.cts.map +1 -0
  22. package/dist/client/crons/index.d.ts +71 -0
  23. package/dist/client/crons/index.d.ts.map +1 -0
  24. package/dist/client/crons/index.js +159 -0
  25. package/dist/client/crons/index.js.map +1 -0
  26. package/dist/client/index.cjs +84 -0
  27. package/dist/client/index.cjs.map +1 -0
  28. package/dist/client/index.d.cts +63 -0
  29. package/dist/client/index.d.cts.map +1 -0
  30. package/dist/client/index.d.ts +63 -0
  31. package/dist/client/index.d.ts.map +1 -0
  32. package/dist/client/index.js +83 -0
  33. package/dist/client/index.js.map +1 -0
  34. package/dist/client/runs/index.cjs +275 -0
  35. package/dist/client/runs/index.cjs.map +1 -0
  36. package/dist/client/runs/index.d.cts +123 -0
  37. package/dist/client/runs/index.d.cts.map +1 -0
  38. package/dist/client/runs/index.d.ts +123 -0
  39. package/dist/client/runs/index.d.ts.map +1 -0
  40. package/dist/client/runs/index.js +275 -0
  41. package/dist/client/runs/index.js.map +1 -0
  42. package/dist/client/store/index.cjs +128 -0
  43. package/dist/client/store/index.cjs.map +1 -0
  44. package/dist/client/store/index.d.cts +75 -0
  45. package/dist/client/store/index.d.cts.map +1 -0
  46. package/dist/client/store/index.d.ts +75 -0
  47. package/dist/client/store/index.d.ts.map +1 -0
  48. package/dist/client/store/index.js +128 -0
  49. package/dist/client/store/index.js.map +1 -0
  50. package/dist/client/stream/error.cjs +18 -0
  51. package/dist/client/stream/error.cjs.map +1 -0
  52. package/dist/client/stream/error.d.cts +14 -0
  53. package/dist/client/stream/error.d.cts.map +1 -0
  54. package/dist/client/stream/error.d.ts +14 -0
  55. package/dist/client/stream/error.d.ts.map +1 -0
  56. package/dist/client/stream/error.js +18 -0
  57. package/dist/client/stream/error.js.map +1 -0
  58. package/dist/client/stream/handles/index.cjs +3 -0
  59. package/dist/client/stream/handles/index.d.ts +3 -0
  60. package/dist/client/stream/handles/index.js +4 -0
  61. package/dist/client/stream/handles/subagents.cjs +263 -0
  62. package/dist/client/stream/handles/subagents.cjs.map +1 -0
  63. package/dist/client/stream/handles/subagents.d.cts +45 -0
  64. package/dist/client/stream/handles/subagents.d.cts.map +1 -0
  65. package/dist/client/stream/handles/subagents.d.ts +45 -0
  66. package/dist/client/stream/handles/subagents.d.ts.map +1 -0
  67. package/dist/client/stream/handles/subagents.js +262 -0
  68. package/dist/client/stream/handles/subagents.js.map +1 -0
  69. package/dist/client/stream/handles/subgraphs.cjs +352 -0
  70. package/dist/client/stream/handles/subgraphs.cjs.map +1 -0
  71. package/dist/client/stream/handles/subgraphs.d.cts +82 -0
  72. package/dist/client/stream/handles/subgraphs.d.cts.map +1 -0
  73. package/dist/client/stream/handles/subgraphs.d.ts +82 -0
  74. package/dist/client/stream/handles/subgraphs.d.ts.map +1 -0
  75. package/dist/client/stream/handles/subgraphs.js +351 -0
  76. package/dist/client/stream/handles/subgraphs.js.map +1 -0
  77. package/dist/client/stream/handles/tools.cjs +92 -0
  78. package/dist/client/stream/handles/tools.cjs.map +1 -0
  79. package/dist/client/stream/handles/tools.d.cts +26 -0
  80. package/dist/client/stream/handles/tools.d.cts.map +1 -0
  81. package/dist/client/stream/handles/tools.d.ts +26 -0
  82. package/dist/client/stream/handles/tools.d.ts.map +1 -0
  83. package/dist/client/stream/handles/tools.js +92 -0
  84. package/dist/client/stream/handles/tools.js.map +1 -0
  85. package/dist/client/stream/index.cjs +1368 -0
  86. package/dist/client/stream/index.cjs.map +1 -0
  87. package/dist/client/stream/index.d.cts +238 -0
  88. package/dist/client/stream/index.d.cts.map +1 -0
  89. package/dist/client/stream/index.d.ts +238 -0
  90. package/dist/client/stream/index.d.ts.map +1 -0
  91. package/dist/client/stream/index.js +1367 -0
  92. package/dist/client/stream/index.js.map +1 -0
  93. package/dist/client/stream/media.cjs +506 -0
  94. package/dist/client/stream/media.cjs.map +1 -0
  95. package/dist/client/stream/media.d.cts +164 -0
  96. package/dist/client/stream/media.d.cts.map +1 -0
  97. package/dist/client/stream/media.d.ts +164 -0
  98. package/dist/client/stream/media.d.ts.map +1 -0
  99. package/dist/client/stream/media.js +505 -0
  100. package/dist/client/stream/media.js.map +1 -0
  101. package/dist/client/stream/messages.cjs +635 -0
  102. package/dist/client/stream/messages.cjs.map +1 -0
  103. package/dist/client/stream/messages.d.cts +139 -0
  104. package/dist/client/stream/messages.d.cts.map +1 -0
  105. package/dist/client/stream/messages.d.ts +139 -0
  106. package/dist/client/stream/messages.d.ts.map +1 -0
  107. package/dist/client/stream/messages.js +631 -0
  108. package/dist/client/stream/messages.js.map +1 -0
  109. package/dist/client/stream/multi-cursor-buffer.cjs +55 -0
  110. package/dist/client/stream/multi-cursor-buffer.cjs.map +1 -0
  111. package/dist/client/stream/multi-cursor-buffer.js +55 -0
  112. package/dist/client/stream/multi-cursor-buffer.js.map +1 -0
  113. package/dist/client/stream/subscription.cjs +85 -0
  114. package/dist/client/stream/subscription.cjs.map +1 -0
  115. package/dist/client/stream/subscription.d.cts +22 -0
  116. package/dist/client/stream/subscription.d.cts.map +1 -0
  117. package/dist/client/stream/subscription.d.ts +22 -0
  118. package/dist/client/stream/subscription.d.ts.map +1 -0
  119. package/dist/client/stream/subscription.js +84 -0
  120. package/dist/client/stream/subscription.js.map +1 -0
  121. package/dist/client/stream/transport/agent-server.cjs +45 -0
  122. package/dist/client/stream/transport/agent-server.cjs.map +1 -0
  123. package/dist/client/stream/transport/agent-server.d.cts +39 -0
  124. package/dist/client/stream/transport/agent-server.d.cts.map +1 -0
  125. package/dist/client/stream/transport/agent-server.d.ts +39 -0
  126. package/dist/client/stream/transport/agent-server.d.ts.map +1 -0
  127. package/dist/client/stream/transport/agent-server.js +45 -0
  128. package/dist/client/stream/transport/agent-server.js.map +1 -0
  129. package/dist/client/stream/transport/constants.cjs +10 -0
  130. package/dist/client/stream/transport/constants.cjs.map +1 -0
  131. package/dist/client/stream/transport/constants.js +10 -0
  132. package/dist/client/stream/transport/constants.js.map +1 -0
  133. package/dist/client/stream/transport/decoder.cjs +115 -0
  134. package/dist/client/stream/transport/decoder.cjs.map +1 -0
  135. package/dist/client/stream/transport/decoder.js +114 -0
  136. package/dist/client/stream/transport/decoder.js.map +1 -0
  137. package/dist/client/stream/transport/http.cjs +183 -0
  138. package/dist/client/stream/transport/http.cjs.map +1 -0
  139. package/dist/client/stream/transport/http.d.cts +45 -0
  140. package/dist/client/stream/transport/http.d.cts.map +1 -0
  141. package/dist/client/stream/transport/http.d.ts +45 -0
  142. package/dist/client/stream/transport/http.d.ts.map +1 -0
  143. package/dist/client/stream/transport/http.js +183 -0
  144. package/dist/client/stream/transport/http.js.map +1 -0
  145. package/dist/client/stream/transport/index.cjs +3 -0
  146. package/dist/client/stream/transport/index.js +4 -0
  147. package/dist/client/stream/transport/queue.cjs +55 -0
  148. package/dist/client/stream/transport/queue.cjs.map +1 -0
  149. package/dist/client/stream/transport/queue.js +55 -0
  150. package/dist/client/stream/transport/queue.js.map +1 -0
  151. package/dist/client/stream/transport/stream.cjs +79 -0
  152. package/dist/client/stream/transport/stream.cjs.map +1 -0
  153. package/dist/client/stream/transport/stream.js +79 -0
  154. package/dist/client/stream/transport/stream.js.map +1 -0
  155. package/dist/client/stream/transport/types.d.cts +29 -0
  156. package/dist/client/stream/transport/types.d.cts.map +1 -0
  157. package/dist/client/stream/transport/types.d.ts +29 -0
  158. package/dist/client/stream/transport/types.d.ts.map +1 -0
  159. package/dist/client/stream/transport/utils.cjs +45 -0
  160. package/dist/client/stream/transport/utils.cjs.map +1 -0
  161. package/dist/client/stream/transport/utils.js +39 -0
  162. package/dist/client/stream/transport/utils.js.map +1 -0
  163. package/dist/client/stream/transport/websocket.cjs +155 -0
  164. package/dist/client/stream/transport/websocket.cjs.map +1 -0
  165. package/dist/client/stream/transport/websocket.d.cts +36 -0
  166. package/dist/client/stream/transport/websocket.d.cts.map +1 -0
  167. package/dist/client/stream/transport/websocket.d.ts +36 -0
  168. package/dist/client/stream/transport/websocket.d.ts.map +1 -0
  169. package/dist/client/stream/transport/websocket.js +155 -0
  170. package/dist/client/stream/transport/websocket.js.map +1 -0
  171. package/dist/client/stream/transport.d.cts +104 -0
  172. package/dist/client/stream/transport.d.cts.map +1 -0
  173. package/dist/client/stream/transport.d.ts +104 -0
  174. package/dist/client/stream/transport.d.ts.map +1 -0
  175. package/dist/client/stream/types.d.cts +208 -0
  176. package/dist/client/stream/types.d.cts.map +1 -0
  177. package/dist/client/stream/types.d.ts +208 -0
  178. package/dist/client/stream/types.d.ts.map +1 -0
  179. package/dist/client/threads/index.cjs +271 -0
  180. package/dist/client/threads/index.cjs.map +1 -0
  181. package/dist/client/threads/index.d.cts +235 -0
  182. package/dist/client/threads/index.d.cts.map +1 -0
  183. package/dist/client/threads/index.d.ts +235 -0
  184. package/dist/client/threads/index.d.ts.map +1 -0
  185. package/dist/client/threads/index.js +270 -0
  186. package/dist/client/threads/index.js.map +1 -0
  187. package/dist/client/ui-internal/index.cjs +29 -0
  188. package/dist/client/ui-internal/index.cjs.map +1 -0
  189. package/dist/client/ui-internal/index.d.cts +11 -0
  190. package/dist/client/ui-internal/index.d.cts.map +1 -0
  191. package/dist/client/ui-internal/index.d.ts +11 -0
  192. package/dist/client/ui-internal/index.d.ts.map +1 -0
  193. package/dist/client/ui-internal/index.js +29 -0
  194. package/dist/client/ui-internal/index.js.map +1 -0
  195. package/dist/client.cjs +35 -1308
  196. package/dist/client.d.cts +19 -857
  197. package/dist/client.d.ts +19 -857
  198. package/dist/client.js +16 -1301
  199. package/dist/index.cjs +25 -4
  200. package/dist/index.d.cts +15 -3
  201. package/dist/index.d.ts +15 -3
  202. package/dist/index.js +14 -3
  203. package/dist/react/stream.cjs.map +1 -1
  204. package/dist/react/stream.custom.cjs +1 -1
  205. package/dist/react/stream.custom.js +1 -1
  206. package/dist/react/stream.d.cts +2 -1
  207. package/dist/react/stream.d.cts.map +1 -1
  208. package/dist/react/stream.d.ts +2 -1
  209. package/dist/react/stream.d.ts.map +1 -1
  210. package/dist/react/stream.js.map +1 -1
  211. package/dist/react/stream.lgp.cjs +6 -5
  212. package/dist/react/stream.lgp.cjs.map +1 -1
  213. package/dist/react/stream.lgp.js +4 -3
  214. package/dist/react/stream.lgp.js.map +1 -1
  215. package/dist/react/types.d.cts +1 -1
  216. package/dist/react/types.d.ts +1 -1
  217. package/dist/react/types.d.ts.map +1 -1
  218. package/dist/react-ui/server/server.cjs +1 -1
  219. package/dist/react-ui/server/server.cjs.map +1 -1
  220. package/dist/react-ui/server/server.js +1 -1
  221. package/dist/react-ui/server/server.js.map +1 -1
  222. package/dist/react-ui/types.cjs.map +1 -1
  223. package/dist/react-ui/types.d.cts +1 -1
  224. package/dist/react-ui/types.d.cts.map +1 -1
  225. package/dist/react-ui/types.d.ts +1 -1
  226. package/dist/react-ui/types.d.ts.map +1 -1
  227. package/dist/react-ui/types.js.map +1 -1
  228. package/dist/stream/assembled-to-message.cjs +121 -0
  229. package/dist/stream/assembled-to-message.cjs.map +1 -0
  230. package/dist/stream/assembled-to-message.d.cts +35 -0
  231. package/dist/stream/assembled-to-message.d.cts.map +1 -0
  232. package/dist/stream/assembled-to-message.d.ts +35 -0
  233. package/dist/stream/assembled-to-message.d.ts.map +1 -0
  234. package/dist/stream/assembled-to-message.js +119 -0
  235. package/dist/stream/assembled-to-message.js.map +1 -0
  236. package/dist/stream/channel-registry.cjs +224 -0
  237. package/dist/stream/channel-registry.cjs.map +1 -0
  238. package/dist/stream/channel-registry.d.cts +102 -0
  239. package/dist/stream/channel-registry.d.cts.map +1 -0
  240. package/dist/stream/channel-registry.d.ts +102 -0
  241. package/dist/stream/channel-registry.d.ts.map +1 -0
  242. package/dist/stream/channel-registry.js +224 -0
  243. package/dist/stream/channel-registry.js.map +1 -0
  244. package/dist/stream/constants.cjs +11 -0
  245. package/dist/stream/constants.cjs.map +1 -0
  246. package/dist/stream/constants.d.cts +10 -0
  247. package/dist/stream/constants.d.cts.map +1 -0
  248. package/dist/stream/constants.d.ts +10 -0
  249. package/dist/stream/constants.d.ts.map +1 -0
  250. package/dist/stream/constants.js +11 -0
  251. package/dist/stream/constants.js.map +1 -0
  252. package/dist/stream/controller.cjs +933 -0
  253. package/dist/stream/controller.cjs.map +1 -0
  254. package/dist/stream/controller.d.cts +135 -0
  255. package/dist/stream/controller.d.cts.map +1 -0
  256. package/dist/stream/controller.d.ts +135 -0
  257. package/dist/stream/controller.d.ts.map +1 -0
  258. package/dist/stream/controller.js +910 -0
  259. package/dist/stream/controller.js.map +1 -0
  260. package/dist/stream/discovery/index.d.ts +2 -0
  261. package/dist/stream/discovery/subagents.cjs +235 -0
  262. package/dist/stream/discovery/subagents.cjs.map +1 -0
  263. package/dist/stream/discovery/subagents.d.cts +18 -0
  264. package/dist/stream/discovery/subagents.d.cts.map +1 -0
  265. package/dist/stream/discovery/subagents.d.ts +18 -0
  266. package/dist/stream/discovery/subagents.d.ts.map +1 -0
  267. package/dist/stream/discovery/subagents.js +235 -0
  268. package/dist/stream/discovery/subagents.js.map +1 -0
  269. package/dist/stream/discovery/subgraphs.cjs +153 -0
  270. package/dist/stream/discovery/subgraphs.cjs.map +1 -0
  271. package/dist/stream/discovery/subgraphs.d.cts +19 -0
  272. package/dist/stream/discovery/subgraphs.d.cts.map +1 -0
  273. package/dist/stream/discovery/subgraphs.d.ts +19 -0
  274. package/dist/stream/discovery/subgraphs.d.ts.map +1 -0
  275. package/dist/stream/discovery/subgraphs.js +153 -0
  276. package/dist/stream/discovery/subgraphs.js.map +1 -0
  277. package/dist/stream/index.cjs +36 -0
  278. package/dist/stream/index.d.cts +25 -0
  279. package/dist/stream/index.d.ts +25 -0
  280. package/dist/stream/index.js +16 -0
  281. package/dist/stream/lifecycle-loading-tracker.cjs +83 -0
  282. package/dist/stream/lifecycle-loading-tracker.cjs.map +1 -0
  283. package/dist/stream/lifecycle-loading-tracker.js +83 -0
  284. package/dist/stream/lifecycle-loading-tracker.js.map +1 -0
  285. package/dist/stream/message-metadata-tracker.cjs +165 -0
  286. package/dist/stream/message-metadata-tracker.cjs.map +1 -0
  287. package/dist/stream/message-metadata-tracker.d.cts +24 -0
  288. package/dist/stream/message-metadata-tracker.d.cts.map +1 -0
  289. package/dist/stream/message-metadata-tracker.d.ts +24 -0
  290. package/dist/stream/message-metadata-tracker.d.ts.map +1 -0
  291. package/dist/stream/message-metadata-tracker.js +165 -0
  292. package/dist/stream/message-metadata-tracker.js.map +1 -0
  293. package/dist/stream/message-reconciliation.cjs +118 -0
  294. package/dist/stream/message-reconciliation.cjs.map +1 -0
  295. package/dist/stream/message-reconciliation.js +115 -0
  296. package/dist/stream/message-reconciliation.js.map +1 -0
  297. package/dist/stream/namespace.cjs +54 -0
  298. package/dist/stream/namespace.cjs.map +1 -0
  299. package/dist/stream/namespace.js +49 -0
  300. package/dist/stream/namespace.js.map +1 -0
  301. package/dist/stream/projections/channel.cjs +53 -0
  302. package/dist/stream/projections/channel.cjs.map +1 -0
  303. package/dist/stream/projections/channel.d.cts +22 -0
  304. package/dist/stream/projections/channel.d.cts.map +1 -0
  305. package/dist/stream/projections/channel.d.ts +22 -0
  306. package/dist/stream/projections/channel.d.ts.map +1 -0
  307. package/dist/stream/projections/channel.js +53 -0
  308. package/dist/stream/projections/channel.js.map +1 -0
  309. package/dist/stream/projections/extension.cjs +29 -0
  310. package/dist/stream/projections/extension.cjs.map +1 -0
  311. package/dist/stream/projections/extension.d.cts +7 -0
  312. package/dist/stream/projections/extension.d.cts.map +1 -0
  313. package/dist/stream/projections/extension.d.ts +7 -0
  314. package/dist/stream/projections/extension.d.ts.map +1 -0
  315. package/dist/stream/projections/extension.js +29 -0
  316. package/dist/stream/projections/extension.js.map +1 -0
  317. package/dist/stream/projections/index.cjs +6 -0
  318. package/dist/stream/projections/index.d.ts +6 -0
  319. package/dist/stream/projections/index.js +7 -0
  320. package/dist/stream/projections/media.cjs +81 -0
  321. package/dist/stream/projections/media.cjs.map +1 -0
  322. package/dist/stream/projections/media.d.cts +18 -0
  323. package/dist/stream/projections/media.d.cts.map +1 -0
  324. package/dist/stream/projections/media.d.ts +18 -0
  325. package/dist/stream/projections/media.d.ts.map +1 -0
  326. package/dist/stream/projections/media.js +78 -0
  327. package/dist/stream/projections/media.js.map +1 -0
  328. package/dist/stream/projections/messages.cjs +121 -0
  329. package/dist/stream/projections/messages.cjs.map +1 -0
  330. package/dist/stream/projections/messages.d.cts +8 -0
  331. package/dist/stream/projections/messages.d.cts.map +1 -0
  332. package/dist/stream/projections/messages.d.ts +8 -0
  333. package/dist/stream/projections/messages.d.ts.map +1 -0
  334. package/dist/stream/projections/messages.js +121 -0
  335. package/dist/stream/projections/messages.js.map +1 -0
  336. package/dist/stream/projections/runtime.cjs +44 -0
  337. package/dist/stream/projections/runtime.cjs.map +1 -0
  338. package/dist/stream/projections/runtime.js +44 -0
  339. package/dist/stream/projections/runtime.js.map +1 -0
  340. package/dist/stream/projections/tool-calls.cjs +50 -0
  341. package/dist/stream/projections/tool-calls.cjs.map +1 -0
  342. package/dist/stream/projections/tool-calls.d.cts +8 -0
  343. package/dist/stream/projections/tool-calls.d.cts.map +1 -0
  344. package/dist/stream/projections/tool-calls.d.ts +8 -0
  345. package/dist/stream/projections/tool-calls.d.ts.map +1 -0
  346. package/dist/stream/projections/tool-calls.js +50 -0
  347. package/dist/stream/projections/tool-calls.js.map +1 -0
  348. package/dist/stream/projections/values.cjs +52 -0
  349. package/dist/stream/projections/values.cjs.map +1 -0
  350. package/dist/stream/projections/values.d.cts +7 -0
  351. package/dist/stream/projections/values.d.cts.map +1 -0
  352. package/dist/stream/projections/values.d.ts +6 -0
  353. package/dist/stream/projections/values.d.ts.map +1 -0
  354. package/dist/stream/projections/values.js +52 -0
  355. package/dist/stream/projections/values.js.map +1 -0
  356. package/dist/stream/root-message-projection.cjs +256 -0
  357. package/dist/stream/root-message-projection.cjs.map +1 -0
  358. package/dist/stream/root-message-projection.js +256 -0
  359. package/dist/stream/root-message-projection.js.map +1 -0
  360. package/dist/stream/store.cjs +32 -0
  361. package/dist/stream/store.cjs.map +1 -0
  362. package/dist/stream/store.d.cts +37 -0
  363. package/dist/stream/store.d.cts.map +1 -0
  364. package/dist/stream/store.d.ts +37 -0
  365. package/dist/stream/store.d.ts.map +1 -0
  366. package/dist/stream/store.js +32 -0
  367. package/dist/stream/store.js.map +1 -0
  368. package/dist/stream/submit-coordinator.cjs +399 -0
  369. package/dist/stream/submit-coordinator.cjs.map +1 -0
  370. package/dist/stream/submit-coordinator.d.cts +27 -0
  371. package/dist/stream/submit-coordinator.d.cts.map +1 -0
  372. package/dist/stream/submit-coordinator.d.ts +27 -0
  373. package/dist/stream/submit-coordinator.d.ts.map +1 -0
  374. package/dist/stream/submit-coordinator.js +397 -0
  375. package/dist/stream/submit-coordinator.js.map +1 -0
  376. package/dist/stream/tool-calls.cjs +15 -0
  377. package/dist/stream/tool-calls.cjs.map +1 -0
  378. package/dist/stream/tool-calls.js +15 -0
  379. package/dist/stream/tool-calls.js.map +1 -0
  380. package/dist/stream/types-inference.d.cts +43 -0
  381. package/dist/stream/types-inference.d.cts.map +1 -0
  382. package/dist/stream/types-inference.d.ts +43 -0
  383. package/dist/stream/types-inference.d.ts.map +1 -0
  384. package/dist/stream/types.d.cts +354 -0
  385. package/dist/stream/types.d.cts.map +1 -0
  386. package/dist/stream/types.d.ts +354 -0
  387. package/dist/stream/types.d.ts.map +1 -0
  388. package/dist/types.d.cts +2 -1
  389. package/dist/types.d.cts.map +1 -1
  390. package/dist/types.d.ts +2 -1
  391. package/dist/types.d.ts.map +1 -1
  392. package/dist/ui/index.cjs +1 -1
  393. package/dist/ui/index.d.cts +3 -3
  394. package/dist/ui/index.d.ts +3 -3
  395. package/dist/ui/index.js +1 -1
  396. package/dist/ui/manager.cjs +1 -1
  397. package/dist/ui/manager.js +1 -1
  398. package/dist/ui/messages.cjs +50 -7
  399. package/dist/ui/messages.cjs.map +1 -1
  400. package/dist/ui/messages.d.cts.map +1 -1
  401. package/dist/ui/messages.d.ts.map +1 -1
  402. package/dist/ui/messages.js +51 -9
  403. package/dist/ui/messages.js.map +1 -1
  404. package/dist/ui/orchestrator-custom.cjs +1 -1
  405. package/dist/ui/orchestrator-custom.js +1 -1
  406. package/dist/ui/orchestrator.cjs +2 -2
  407. package/dist/ui/orchestrator.d.cts +1 -1
  408. package/dist/ui/orchestrator.d.ts +1 -1
  409. package/dist/ui/orchestrator.d.ts.map +1 -1
  410. package/dist/ui/orchestrator.js +2 -2
  411. package/dist/ui/stream/agent.d.cts +1 -1
  412. package/dist/ui/stream/agent.d.cts.map +1 -1
  413. package/dist/ui/stream/agent.d.ts +1 -1
  414. package/dist/ui/stream/agent.d.ts.map +1 -1
  415. package/dist/ui/stream/base.d.cts +7 -6
  416. package/dist/ui/stream/base.d.cts.map +1 -1
  417. package/dist/ui/stream/base.d.ts +7 -6
  418. package/dist/ui/stream/base.d.ts.map +1 -1
  419. package/dist/ui/stream/deep-agent.d.cts +1 -1
  420. package/dist/ui/stream/deep-agent.d.cts.map +1 -1
  421. package/dist/ui/stream/deep-agent.d.ts +1 -1
  422. package/dist/ui/stream/deep-agent.d.ts.map +1 -1
  423. package/dist/ui/stream/index.d.cts +4 -4
  424. package/dist/ui/stream/index.d.cts.map +1 -1
  425. package/dist/ui/stream/index.d.ts +4 -4
  426. package/dist/ui/stream/index.d.ts.map +1 -1
  427. package/dist/ui/types.d.cts +3 -2
  428. package/dist/ui/types.d.cts.map +1 -1
  429. package/dist/ui/types.d.ts +2 -1
  430. package/dist/ui/types.d.ts.map +1 -1
  431. package/package.json +18 -8
  432. package/dist/client.cjs.map +0 -1
  433. package/dist/client.d.cts.map +0 -1
  434. package/dist/client.d.ts.map +0 -1
  435. package/dist/client.js.map +0 -1
@@ -0,0 +1,183 @@
1
+ import { AsyncQueue } from "./queue.js";
2
+ import { isProtocolResponse, isRecord, mergeHeaders, toAbsoluteUrl, toError } from "./utils.js";
3
+ import { BytesLineDecoder, SSEDecoder } from "./decoder.js";
4
+ import { IterableReadableStream } from "./stream.js";
5
+ //#region src/client/stream/transport/http.ts
6
+ /**
7
+ * Transport adapter that speaks the thread-centric protocol over HTTP
8
+ * commands plus SSE event streams. Bound to a specific `threadId`
9
+ * at construction. Each {@link openEventStream} call opens an independent
10
+ * filtered SSE connection via `POST /threads/:thread_id/stream/events`.
11
+ */
12
+ var ProtocolSseTransportAdapter = class {
13
+ threadId;
14
+ queue = new AsyncQueue();
15
+ fetchImpl;
16
+ apiUrl;
17
+ defaultHeaders;
18
+ onRequest;
19
+ fetchFactory;
20
+ commandsUrl;
21
+ streamUrl;
22
+ sessionAbortController = new AbortController();
23
+ eventStreams = /* @__PURE__ */ new Set();
24
+ closed = false;
25
+ constructor(options) {
26
+ this.fetchImpl = options.fetch ?? fetch;
27
+ this.apiUrl = options.apiUrl;
28
+ this.defaultHeaders = options.defaultHeaders ?? {};
29
+ this.onRequest = options.onRequest;
30
+ this.fetchFactory = options.fetchFactory;
31
+ this.threadId = options.threadId;
32
+ this.commandsUrl = options.paths?.commands ?? `/threads/${this.threadId}/commands`;
33
+ this.streamUrl = options.paths?.stream ?? `/threads/${this.threadId}/stream/events`;
34
+ }
35
+ async resolveFetch() {
36
+ if (this.fetchFactory) return await this.fetchFactory();
37
+ return this.fetchImpl;
38
+ }
39
+ /**
40
+ * HTTP/SSE transports have no handshake — connections are made
41
+ * per-command and per-subscription.
42
+ */
43
+ async open() {}
44
+ async send(command) {
45
+ const response = await this.request(this.commandsUrl, {
46
+ method: "POST",
47
+ headers: { "content-type": "application/json" },
48
+ body: JSON.stringify(command),
49
+ signal: this.sessionAbortController.signal
50
+ });
51
+ if (response.status === 202 || response.status === 204) return;
52
+ const payload = await response.json();
53
+ if (!isProtocolResponse(payload)) throw new Error("Protocol command did not return a valid response.");
54
+ return payload;
55
+ }
56
+ /**
57
+ * WebSocket-style single event stream.
58
+ * For the SSE transport this returns a dummy iterable; real event
59
+ * delivery happens via {@link openEventStream}.
60
+ */
61
+ events() {
62
+ const queue = this.queue;
63
+ return { [Symbol.asyncIterator]: () => ({
64
+ next: async () => await queue.shift(),
65
+ return: async () => {
66
+ queue.close();
67
+ return {
68
+ done: true,
69
+ value: void 0
70
+ };
71
+ }
72
+ }) };
73
+ }
74
+ openEventStream(params) {
75
+ if (this.closed) throw new Error("Protocol transport is closed.");
76
+ const ac = new AbortController();
77
+ this.eventStreams.add(ac);
78
+ const streamQueue = new AsyncQueue();
79
+ const streamUrl = this.streamUrl;
80
+ let resolveReady;
81
+ let rejectReady;
82
+ const ready = new Promise((resolve, reject) => {
83
+ resolveReady = resolve;
84
+ rejectReady = reject;
85
+ });
86
+ const since = params.since;
87
+ const startStream = async () => {
88
+ try {
89
+ const response = await this.request(streamUrl, {
90
+ method: "POST",
91
+ headers: {
92
+ "content-type": "application/json",
93
+ accept: "text/event-stream"
94
+ },
95
+ body: JSON.stringify({
96
+ channels: params.channels,
97
+ ...params.namespaces ? { namespaces: params.namespaces } : {},
98
+ ...params.depth != null ? { depth: params.depth } : {},
99
+ ...typeof since === "number" ? { since } : {}
100
+ }),
101
+ signal: ac.signal
102
+ });
103
+ resolveReady();
104
+ const stream = (response.body ?? new ReadableStream({ start(controller) {
105
+ controller.close();
106
+ } })).pipeThrough(BytesLineDecoder()).pipeThrough(SSEDecoder());
107
+ const iterable = IterableReadableStream.fromReadableStream(stream);
108
+ for await (const event of iterable) {
109
+ if (ac.signal.aborted || this.closed) break;
110
+ if (isRecord(event.data)) {
111
+ const msg = event.data;
112
+ streamQueue.push(msg);
113
+ }
114
+ }
115
+ streamQueue.close();
116
+ } catch (error) {
117
+ rejectReady(error);
118
+ if (ac.signal.aborted || this.closed) {
119
+ streamQueue.close();
120
+ return;
121
+ }
122
+ streamQueue.close(error);
123
+ }
124
+ };
125
+ startStream();
126
+ const cleanup = () => {
127
+ this.eventStreams.delete(ac);
128
+ ac.abort();
129
+ streamQueue.close();
130
+ };
131
+ return {
132
+ events: { [Symbol.asyncIterator]: () => ({
133
+ next: async () => await streamQueue.shift(),
134
+ return: async () => {
135
+ cleanup();
136
+ return {
137
+ done: true,
138
+ value: void 0
139
+ };
140
+ }
141
+ }) },
142
+ ready,
143
+ close: cleanup
144
+ };
145
+ }
146
+ async close() {
147
+ if (this.closed) return;
148
+ this.closed = true;
149
+ this.sessionAbortController.abort();
150
+ for (const ac of this.eventStreams) ac.abort();
151
+ this.eventStreams.clear();
152
+ this.queue.close();
153
+ }
154
+ async request(path, init) {
155
+ const url = toAbsoluteUrl(this.apiUrl, path);
156
+ let requestInit = {
157
+ ...init,
158
+ headers: mergeHeaders(this.defaultHeaders, init.headers)
159
+ };
160
+ if (this.onRequest) requestInit = await this.onRequest(url, requestInit);
161
+ try {
162
+ const response = await (await this.resolveFetch())(url.toString(), requestInit);
163
+ if (!response.ok) {
164
+ let detail = "";
165
+ try {
166
+ const body = await response.text();
167
+ const parsed = JSON.parse(body);
168
+ if (typeof parsed === "object" && parsed != null) detail = parsed.message ?? parsed.error ?? "";
169
+ if (!detail) detail = body;
170
+ } catch {}
171
+ const message = detail ? `Protocol request failed: ${response.status} ${response.statusText} — ${detail}` : `Protocol request failed: ${response.status} ${response.statusText}`;
172
+ throw new Error(message);
173
+ }
174
+ return response;
175
+ } catch (error) {
176
+ throw toError(error);
177
+ }
178
+ }
179
+ };
180
+ //#endregion
181
+ export { ProtocolSseTransportAdapter };
182
+
183
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","names":[],"sources":["../../../../src/client/stream/transport/http.ts"],"sourcesContent":["import { AsyncQueue } from \"./queue.js\";\nimport type {\n Message,\n SubscribeParams,\n Command,\n CommandResponse,\n ErrorResponse,\n} from \"@langchain/protocol\";\n\nimport type {\n HeaderValue,\n ProtocolRequestHook,\n ProtocolSseTransportOptions,\n} from \"./types.js\";\nimport type { TransportAdapter, EventStreamHandle } from \"../transport.js\";\nimport {\n toAbsoluteUrl,\n isRecord,\n mergeHeaders,\n toError,\n isProtocolResponse,\n} from \"./utils.js\";\nimport { BytesLineDecoder, SSEDecoder } from \"./decoder.js\";\nimport { IterableReadableStream } from \"./stream.js\";\n\n/**\n * Transport adapter that speaks the thread-centric protocol over HTTP\n * commands plus SSE event streams. Bound to a specific `threadId`\n * at construction. Each {@link openEventStream} call opens an independent\n * filtered SSE connection via `POST /threads/:thread_id/stream/events`.\n */\nexport class ProtocolSseTransportAdapter implements TransportAdapter {\n readonly threadId: string;\n\n private readonly queue = new AsyncQueue<Message>();\n\n private readonly fetchImpl: typeof fetch;\n\n private readonly apiUrl: string;\n\n private readonly defaultHeaders: Record<string, HeaderValue>;\n\n private readonly onRequest?: ProtocolRequestHook;\n\n private readonly fetchFactory?: () => typeof fetch | Promise<typeof fetch>;\n\n private readonly commandsUrl: string;\n\n private readonly streamUrl: string;\n\n private readonly sessionAbortController = new AbortController();\n\n private readonly eventStreams = new Set<AbortController>();\n\n private closed = false;\n\n constructor(options: ProtocolSseTransportOptions) {\n this.fetchImpl = options.fetch ?? fetch;\n this.apiUrl = options.apiUrl;\n this.defaultHeaders = options.defaultHeaders ?? {};\n this.onRequest = options.onRequest;\n this.fetchFactory = options.fetchFactory;\n this.threadId = options.threadId;\n this.commandsUrl =\n options.paths?.commands ?? `/threads/${this.threadId}/commands`;\n this.streamUrl =\n options.paths?.stream ?? `/threads/${this.threadId}/stream/events`;\n }\n\n private async resolveFetch(): Promise<typeof fetch> {\n if (this.fetchFactory) {\n return await this.fetchFactory();\n }\n return this.fetchImpl;\n }\n\n /**\n * HTTP/SSE transports have no handshake — connections are made\n * per-command and per-subscription.\n */\n async open(): Promise<void> {\n // no-op\n }\n\n async send(\n command: Command\n ): Promise<CommandResponse | ErrorResponse | void> {\n const response = await this.request(this.commandsUrl, {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(command),\n signal: this.sessionAbortController.signal,\n });\n\n if (response.status === 202 || response.status === 204) {\n return undefined;\n }\n\n const payload = (await response.json()) as unknown;\n if (!isProtocolResponse(payload)) {\n throw new Error(\"Protocol command did not return a valid response.\");\n }\n return payload;\n }\n\n /**\n * WebSocket-style single event stream.\n * For the SSE transport this returns a dummy iterable; real event\n * delivery happens via {@link openEventStream}.\n */\n events(): AsyncIterable<Message> {\n const queue = this.queue;\n return {\n [Symbol.asyncIterator]: () => ({\n next: async () => await queue.shift(),\n return: async () => {\n queue.close();\n return { done: true, value: undefined };\n },\n }),\n };\n }\n\n openEventStream(params: SubscribeParams): EventStreamHandle {\n if (this.closed) {\n throw new Error(\"Protocol transport is closed.\");\n }\n\n const ac = new AbortController();\n this.eventStreams.add(ac);\n const streamQueue = new AsyncQueue<Message>();\n const streamUrl = this.streamUrl;\n\n let resolveReady!: () => void;\n let rejectReady!: (err: unknown) => void;\n const ready = new Promise<void>((resolve, reject) => {\n resolveReady = resolve;\n rejectReady = reject;\n });\n\n const since = (params as SubscribeParams & { since?: unknown }).since;\n\n const startStream = async () => {\n try {\n const response = await this.request(streamUrl, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n accept: \"text/event-stream\",\n },\n body: JSON.stringify({\n channels: params.channels,\n ...(params.namespaces ? { namespaces: params.namespaces } : {}),\n ...(params.depth != null ? { depth: params.depth } : {}),\n ...(typeof since === \"number\" ? { since } : {}),\n }),\n signal: ac.signal,\n });\n\n resolveReady();\n\n const readable =\n response.body ??\n new ReadableStream<Uint8Array>({\n start(controller) {\n controller.close();\n },\n });\n\n const stream = readable\n .pipeThrough(BytesLineDecoder())\n .pipeThrough(SSEDecoder());\n const iterable = IterableReadableStream.fromReadableStream(stream);\n\n for await (const event of iterable) {\n if (ac.signal.aborted || this.closed) {\n break;\n }\n if (isRecord(event.data)) {\n const msg = event.data as Message & {\n seq?: number;\n method?: string;\n };\n streamQueue.push(msg);\n }\n }\n streamQueue.close();\n } catch (error) {\n rejectReady(error);\n if (ac.signal.aborted || this.closed) {\n streamQueue.close();\n return;\n }\n streamQueue.close(error);\n }\n };\n\n void startStream();\n\n const cleanup = () => {\n this.eventStreams.delete(ac);\n ac.abort();\n streamQueue.close();\n };\n\n return {\n events: {\n [Symbol.asyncIterator]: () => ({\n next: async () => await streamQueue.shift(),\n return: async () => {\n cleanup();\n return { done: true, value: undefined };\n },\n }),\n },\n ready,\n close: cleanup,\n };\n }\n\n async close(): Promise<void> {\n if (this.closed) {\n return;\n }\n this.closed = true;\n this.sessionAbortController.abort();\n for (const ac of this.eventStreams) ac.abort();\n this.eventStreams.clear();\n this.queue.close();\n }\n\n private async request(path: string, init: RequestInit): Promise<Response> {\n const url = toAbsoluteUrl(this.apiUrl, path);\n let requestInit: RequestInit = {\n ...init,\n headers: mergeHeaders(this.defaultHeaders, init.headers),\n };\n\n if (this.onRequest) {\n requestInit = await this.onRequest(url, requestInit);\n }\n\n try {\n const fetchImpl = await this.resolveFetch();\n const response = await fetchImpl(url.toString(), requestInit);\n if (!response.ok) {\n let detail = \"\";\n try {\n const body = await response.text();\n const parsed = JSON.parse(body);\n if (typeof parsed === \"object\" && parsed != null) {\n detail =\n ((parsed as Record<string, unknown>).message as string) ??\n ((parsed as Record<string, unknown>).error as string) ??\n \"\";\n }\n if (!detail) detail = body;\n } catch {\n // body unreadable or not JSON — fall through\n }\n const message = detail\n ? `Protocol request failed: ${response.status} ${response.statusText} — ${detail}`\n : `Protocol request failed: ${response.status} ${response.statusText}`;\n throw new Error(message);\n }\n return response;\n } catch (error) {\n throw toError(error);\n }\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ require("./http.cjs");
2
+ require("./websocket.cjs");
3
+ require("./agent-server.cjs");
@@ -0,0 +1,4 @@
1
+ import "./http.js";
2
+ import "./websocket.js";
3
+ import "./agent-server.js";
4
+ export {};
@@ -0,0 +1,55 @@
1
+ //#region src/client/stream/transport/queue.ts
2
+ var AsyncQueue = class {
3
+ values = [];
4
+ waiters = [];
5
+ rejecters = [];
6
+ closed = false;
7
+ error = null;
8
+ push(value) {
9
+ if (this.closed) return;
10
+ const waiter = this.waiters.shift();
11
+ this.rejecters.shift();
12
+ if (waiter) {
13
+ waiter({
14
+ done: false,
15
+ value
16
+ });
17
+ return;
18
+ }
19
+ this.values.push(value);
20
+ }
21
+ close(error) {
22
+ if (this.closed) return;
23
+ this.closed = true;
24
+ this.error = error == null ? null : error instanceof Error ? error : new Error(String(error));
25
+ if (this.error) {
26
+ for (const rejecter of this.rejecters.splice(0)) rejecter(this.error);
27
+ this.waiters.length = 0;
28
+ return;
29
+ }
30
+ for (const waiter of this.waiters.splice(0)) waiter({
31
+ done: true,
32
+ value: void 0
33
+ });
34
+ this.rejecters.length = 0;
35
+ }
36
+ async shift() {
37
+ if (this.values.length > 0) return {
38
+ done: false,
39
+ value: this.values.shift()
40
+ };
41
+ if (this.error) throw this.error;
42
+ if (this.closed) return {
43
+ done: true,
44
+ value: void 0
45
+ };
46
+ return await new Promise((resolve, reject) => {
47
+ this.waiters.push(resolve);
48
+ this.rejecters.push(reject);
49
+ });
50
+ }
51
+ };
52
+ //#endregion
53
+ exports.AsyncQueue = AsyncQueue;
54
+
55
+ //# sourceMappingURL=queue.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.cjs","names":[],"sources":["../../../../src/client/stream/transport/queue.ts"],"sourcesContent":["import type { QueueResult } from \"./types.js\";\n\nexport class AsyncQueue<T> {\n private readonly values: T[] = [];\n\n private readonly waiters: Array<(result: QueueResult<T>) => void> = [];\n\n private readonly rejecters: Array<(error: Error) => void> = [];\n\n private closed = false;\n\n private error: Error | null = null;\n\n push(value: T): void {\n if (this.closed) {\n return;\n }\n\n const waiter = this.waiters.shift();\n this.rejecters.shift();\n if (waiter) {\n waiter({ done: false, value });\n return;\n }\n\n this.values.push(value);\n }\n\n close(error?: unknown): void {\n if (this.closed) {\n return;\n }\n\n this.closed = true;\n this.error =\n error == null\n ? null\n : // oxlint-disable-next-line no-instanceof/no-instanceof\n error instanceof Error\n ? error\n : new Error(String(error));\n\n if (this.error) {\n for (const rejecter of this.rejecters.splice(0)) {\n rejecter(this.error);\n }\n this.waiters.length = 0;\n return;\n }\n\n for (const waiter of this.waiters.splice(0)) {\n waiter({ done: true, value: undefined });\n }\n this.rejecters.length = 0;\n }\n\n async shift(): Promise<QueueResult<T>> {\n if (this.values.length > 0) {\n return { done: false, value: this.values.shift() as T };\n }\n\n if (this.error) {\n throw this.error;\n }\n\n if (this.closed) {\n return { done: true, value: undefined };\n }\n\n return await new Promise<QueueResult<T>>((resolve, reject) => {\n this.waiters.push(resolve);\n this.rejecters.push(reject);\n });\n }\n}\n"],"mappings":";AAEA,IAAa,aAAb,MAA2B;CACzB,SAA+B,EAAE;CAEjC,UAAoE,EAAE;CAEtE,YAA4D,EAAE;CAE9D,SAAiB;CAEjB,QAA8B;CAE9B,KAAK,OAAgB;AACnB,MAAI,KAAK,OACP;EAGF,MAAM,SAAS,KAAK,QAAQ,OAAO;AACnC,OAAK,UAAU,OAAO;AACtB,MAAI,QAAQ;AACV,UAAO;IAAE,MAAM;IAAO;IAAO,CAAC;AAC9B;;AAGF,OAAK,OAAO,KAAK,MAAM;;CAGzB,MAAM,OAAuB;AAC3B,MAAI,KAAK,OACP;AAGF,OAAK,SAAS;AACd,OAAK,QACH,SAAS,OACL,OAEA,iBAAiB,QACf,QACA,IAAI,MAAM,OAAO,MAAM,CAAC;AAEhC,MAAI,KAAK,OAAO;AACd,QAAK,MAAM,YAAY,KAAK,UAAU,OAAO,EAAE,CAC7C,UAAS,KAAK,MAAM;AAEtB,QAAK,QAAQ,SAAS;AACtB;;AAGF,OAAK,MAAM,UAAU,KAAK,QAAQ,OAAO,EAAE,CACzC,QAAO;GAAE,MAAM;GAAM,OAAO,KAAA;GAAW,CAAC;AAE1C,OAAK,UAAU,SAAS;;CAG1B,MAAM,QAAiC;AACrC,MAAI,KAAK,OAAO,SAAS,EACvB,QAAO;GAAE,MAAM;GAAO,OAAO,KAAK,OAAO,OAAO;GAAO;AAGzD,MAAI,KAAK,MACP,OAAM,KAAK;AAGb,MAAI,KAAK,OACP,QAAO;GAAE,MAAM;GAAM,OAAO,KAAA;GAAW;AAGzC,SAAO,MAAM,IAAI,SAAyB,SAAS,WAAW;AAC5D,QAAK,QAAQ,KAAK,QAAQ;AAC1B,QAAK,UAAU,KAAK,OAAO;IAC3B"}
@@ -0,0 +1,55 @@
1
+ //#region src/client/stream/transport/queue.ts
2
+ var AsyncQueue = class {
3
+ values = [];
4
+ waiters = [];
5
+ rejecters = [];
6
+ closed = false;
7
+ error = null;
8
+ push(value) {
9
+ if (this.closed) return;
10
+ const waiter = this.waiters.shift();
11
+ this.rejecters.shift();
12
+ if (waiter) {
13
+ waiter({
14
+ done: false,
15
+ value
16
+ });
17
+ return;
18
+ }
19
+ this.values.push(value);
20
+ }
21
+ close(error) {
22
+ if (this.closed) return;
23
+ this.closed = true;
24
+ this.error = error == null ? null : error instanceof Error ? error : new Error(String(error));
25
+ if (this.error) {
26
+ for (const rejecter of this.rejecters.splice(0)) rejecter(this.error);
27
+ this.waiters.length = 0;
28
+ return;
29
+ }
30
+ for (const waiter of this.waiters.splice(0)) waiter({
31
+ done: true,
32
+ value: void 0
33
+ });
34
+ this.rejecters.length = 0;
35
+ }
36
+ async shift() {
37
+ if (this.values.length > 0) return {
38
+ done: false,
39
+ value: this.values.shift()
40
+ };
41
+ if (this.error) throw this.error;
42
+ if (this.closed) return {
43
+ done: true,
44
+ value: void 0
45
+ };
46
+ return await new Promise((resolve, reject) => {
47
+ this.waiters.push(resolve);
48
+ this.rejecters.push(reject);
49
+ });
50
+ }
51
+ };
52
+ //#endregion
53
+ export { AsyncQueue };
54
+
55
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","names":[],"sources":["../../../../src/client/stream/transport/queue.ts"],"sourcesContent":["import type { QueueResult } from \"./types.js\";\n\nexport class AsyncQueue<T> {\n private readonly values: T[] = [];\n\n private readonly waiters: Array<(result: QueueResult<T>) => void> = [];\n\n private readonly rejecters: Array<(error: Error) => void> = [];\n\n private closed = false;\n\n private error: Error | null = null;\n\n push(value: T): void {\n if (this.closed) {\n return;\n }\n\n const waiter = this.waiters.shift();\n this.rejecters.shift();\n if (waiter) {\n waiter({ done: false, value });\n return;\n }\n\n this.values.push(value);\n }\n\n close(error?: unknown): void {\n if (this.closed) {\n return;\n }\n\n this.closed = true;\n this.error =\n error == null\n ? null\n : // oxlint-disable-next-line no-instanceof/no-instanceof\n error instanceof Error\n ? error\n : new Error(String(error));\n\n if (this.error) {\n for (const rejecter of this.rejecters.splice(0)) {\n rejecter(this.error);\n }\n this.waiters.length = 0;\n return;\n }\n\n for (const waiter of this.waiters.splice(0)) {\n waiter({ done: true, value: undefined });\n }\n this.rejecters.length = 0;\n }\n\n async shift(): Promise<QueueResult<T>> {\n if (this.values.length > 0) {\n return { done: false, value: this.values.shift() as T };\n }\n\n if (this.error) {\n throw this.error;\n }\n\n if (this.closed) {\n return { done: true, value: undefined };\n }\n\n return await new Promise<QueueResult<T>>((resolve, reject) => {\n this.waiters.push(resolve);\n this.rejecters.push(reject);\n });\n }\n}\n"],"mappings":";AAEA,IAAa,aAAb,MAA2B;CACzB,SAA+B,EAAE;CAEjC,UAAoE,EAAE;CAEtE,YAA4D,EAAE;CAE9D,SAAiB;CAEjB,QAA8B;CAE9B,KAAK,OAAgB;AACnB,MAAI,KAAK,OACP;EAGF,MAAM,SAAS,KAAK,QAAQ,OAAO;AACnC,OAAK,UAAU,OAAO;AACtB,MAAI,QAAQ;AACV,UAAO;IAAE,MAAM;IAAO;IAAO,CAAC;AAC9B;;AAGF,OAAK,OAAO,KAAK,MAAM;;CAGzB,MAAM,OAAuB;AAC3B,MAAI,KAAK,OACP;AAGF,OAAK,SAAS;AACd,OAAK,QACH,SAAS,OACL,OAEA,iBAAiB,QACf,QACA,IAAI,MAAM,OAAO,MAAM,CAAC;AAEhC,MAAI,KAAK,OAAO;AACd,QAAK,MAAM,YAAY,KAAK,UAAU,OAAO,EAAE,CAC7C,UAAS,KAAK,MAAM;AAEtB,QAAK,QAAQ,SAAS;AACtB;;AAGF,OAAK,MAAM,UAAU,KAAK,QAAQ,OAAO,EAAE,CACzC,QAAO;GAAE,MAAM;GAAM,OAAO,KAAA;GAAW,CAAC;AAE1C,OAAK,UAAU,SAAS;;CAG1B,MAAM,QAAiC;AACrC,MAAI,KAAK,OAAO,SAAS,EACvB,QAAO;GAAE,MAAM;GAAO,OAAO,KAAK,OAAO,OAAO;GAAO;AAGzD,MAAI,KAAK,MACP,OAAM,KAAK;AAGb,MAAI,KAAK,OACP,QAAO;GAAE,MAAM;GAAM,OAAO,KAAA;GAAW;AAGzC,SAAO,MAAM,IAAI,SAAyB,SAAS,WAAW;AAC5D,QAAK,QAAQ,KAAK,QAAQ;AAC1B,QAAK,UAAU,KAAK,OAAO;IAC3B"}
@@ -0,0 +1,79 @@
1
+ //#region src/client/stream/transport/stream.ts
2
+ var IterableReadableStream = class IterableReadableStream extends ReadableStream {
3
+ reader;
4
+ ensureReader() {
5
+ if (!this.reader) this.reader = this.getReader();
6
+ }
7
+ async next() {
8
+ this.ensureReader();
9
+ try {
10
+ const result = await this.reader.read();
11
+ if (result.done) {
12
+ this.reader.releaseLock();
13
+ return {
14
+ done: true,
15
+ value: void 0
16
+ };
17
+ }
18
+ return {
19
+ done: false,
20
+ value: result.value
21
+ };
22
+ } catch (error) {
23
+ this.reader.releaseLock();
24
+ throw error;
25
+ }
26
+ }
27
+ async return() {
28
+ this.ensureReader();
29
+ if (this.locked) {
30
+ const cancelPromise = this.reader.cancel();
31
+ this.reader.releaseLock();
32
+ await cancelPromise;
33
+ }
34
+ return {
35
+ done: true,
36
+ value: void 0
37
+ };
38
+ }
39
+ async throw(error) {
40
+ this.ensureReader();
41
+ if (this.locked) {
42
+ const cancelPromise = this.reader.cancel();
43
+ this.reader.releaseLock();
44
+ await cancelPromise;
45
+ }
46
+ throw error;
47
+ }
48
+ async [Symbol.asyncDispose]() {
49
+ await this.return();
50
+ }
51
+ [Symbol.asyncIterator]() {
52
+ return this;
53
+ }
54
+ static fromReadableStream(stream) {
55
+ const reader = stream.getReader();
56
+ return new IterableReadableStream({
57
+ start(controller) {
58
+ return pump();
59
+ function pump() {
60
+ return reader.read().then(({ done, value }) => {
61
+ if (done) {
62
+ controller.close();
63
+ return;
64
+ }
65
+ controller.enqueue(value);
66
+ return pump();
67
+ });
68
+ }
69
+ },
70
+ cancel() {
71
+ reader.releaseLock();
72
+ }
73
+ });
74
+ }
75
+ };
76
+ //#endregion
77
+ exports.IterableReadableStream = IterableReadableStream;
78
+
79
+ //# sourceMappingURL=stream.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.cjs","names":[],"sources":["../../../../src/client/stream/transport/stream.ts"],"sourcesContent":["export class IterableReadableStream<T>\n extends ReadableStream<T>\n implements AsyncIterable<T>\n{\n public reader!: ReadableStreamDefaultReader<T>;\n\n ensureReader() {\n if (!this.reader) {\n this.reader = this.getReader();\n }\n }\n\n async next(): Promise<IteratorResult<T>> {\n this.ensureReader();\n try {\n const result = await this.reader.read();\n if (result.done) {\n this.reader.releaseLock();\n return {\n done: true,\n value: undefined,\n };\n }\n\n return {\n done: false,\n value: result.value,\n };\n } catch (error) {\n this.reader.releaseLock();\n throw error;\n }\n }\n\n async return(): Promise<IteratorResult<T>> {\n this.ensureReader();\n if (this.locked) {\n const cancelPromise = this.reader.cancel();\n this.reader.releaseLock();\n await cancelPromise;\n }\n return { done: true, value: undefined };\n }\n\n async throw(error: unknown): Promise<IteratorResult<T>> {\n this.ensureReader();\n if (this.locked) {\n const cancelPromise = this.reader.cancel();\n this.reader.releaseLock();\n await cancelPromise;\n }\n throw error;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Not present in Node 18 types, required in latest Node 22\n async [Symbol.asyncDispose]() {\n await this.return();\n }\n\n [Symbol.asyncIterator]() {\n return this;\n }\n\n static fromReadableStream<T>(stream: ReadableStream<T>) {\n const reader = stream.getReader();\n return new IterableReadableStream<T>({\n start(controller) {\n return pump();\n\n function pump(): Promise<T | undefined> {\n return reader.read().then(({ done, value }) => {\n if (done) {\n controller.close();\n return;\n }\n controller.enqueue(value);\n return pump();\n });\n }\n },\n cancel() {\n reader.releaseLock();\n },\n });\n }\n}\n"],"mappings":";AAAA,IAAa,yBAAb,MAAa,+BACH,eAEV;CACE;CAEA,eAAe;AACb,MAAI,CAAC,KAAK,OACR,MAAK,SAAS,KAAK,WAAW;;CAIlC,MAAM,OAAmC;AACvC,OAAK,cAAc;AACnB,MAAI;GACF,MAAM,SAAS,MAAM,KAAK,OAAO,MAAM;AACvC,OAAI,OAAO,MAAM;AACf,SAAK,OAAO,aAAa;AACzB,WAAO;KACL,MAAM;KACN,OAAO,KAAA;KACR;;AAGH,UAAO;IACL,MAAM;IACN,OAAO,OAAO;IACf;WACM,OAAO;AACd,QAAK,OAAO,aAAa;AACzB,SAAM;;;CAIV,MAAM,SAAqC;AACzC,OAAK,cAAc;AACnB,MAAI,KAAK,QAAQ;GACf,MAAM,gBAAgB,KAAK,OAAO,QAAQ;AAC1C,QAAK,OAAO,aAAa;AACzB,SAAM;;AAER,SAAO;GAAE,MAAM;GAAM,OAAO,KAAA;GAAW;;CAGzC,MAAM,MAAM,OAA4C;AACtD,OAAK,cAAc;AACnB,MAAI,KAAK,QAAQ;GACf,MAAM,gBAAgB,KAAK,OAAO,QAAQ;AAC1C,QAAK,OAAO,aAAa;AACzB,SAAM;;AAER,QAAM;;CAKR,OAAO,OAAO,gBAAgB;AAC5B,QAAM,KAAK,QAAQ;;CAGrB,CAAC,OAAO,iBAAiB;AACvB,SAAO;;CAGT,OAAO,mBAAsB,QAA2B;EACtD,MAAM,SAAS,OAAO,WAAW;AACjC,SAAO,IAAI,uBAA0B;GACnC,MAAM,YAAY;AAChB,WAAO,MAAM;IAEb,SAAS,OAA+B;AACtC,YAAO,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,YAAY;AAC7C,UAAI,MAAM;AACR,kBAAW,OAAO;AAClB;;AAEF,iBAAW,QAAQ,MAAM;AACzB,aAAO,MAAM;OACb;;;GAGN,SAAS;AACP,WAAO,aAAa;;GAEvB,CAAC"}
@@ -0,0 +1,79 @@
1
+ //#region src/client/stream/transport/stream.ts
2
+ var IterableReadableStream = class IterableReadableStream extends ReadableStream {
3
+ reader;
4
+ ensureReader() {
5
+ if (!this.reader) this.reader = this.getReader();
6
+ }
7
+ async next() {
8
+ this.ensureReader();
9
+ try {
10
+ const result = await this.reader.read();
11
+ if (result.done) {
12
+ this.reader.releaseLock();
13
+ return {
14
+ done: true,
15
+ value: void 0
16
+ };
17
+ }
18
+ return {
19
+ done: false,
20
+ value: result.value
21
+ };
22
+ } catch (error) {
23
+ this.reader.releaseLock();
24
+ throw error;
25
+ }
26
+ }
27
+ async return() {
28
+ this.ensureReader();
29
+ if (this.locked) {
30
+ const cancelPromise = this.reader.cancel();
31
+ this.reader.releaseLock();
32
+ await cancelPromise;
33
+ }
34
+ return {
35
+ done: true,
36
+ value: void 0
37
+ };
38
+ }
39
+ async throw(error) {
40
+ this.ensureReader();
41
+ if (this.locked) {
42
+ const cancelPromise = this.reader.cancel();
43
+ this.reader.releaseLock();
44
+ await cancelPromise;
45
+ }
46
+ throw error;
47
+ }
48
+ async [Symbol.asyncDispose]() {
49
+ await this.return();
50
+ }
51
+ [Symbol.asyncIterator]() {
52
+ return this;
53
+ }
54
+ static fromReadableStream(stream) {
55
+ const reader = stream.getReader();
56
+ return new IterableReadableStream({
57
+ start(controller) {
58
+ return pump();
59
+ function pump() {
60
+ return reader.read().then(({ done, value }) => {
61
+ if (done) {
62
+ controller.close();
63
+ return;
64
+ }
65
+ controller.enqueue(value);
66
+ return pump();
67
+ });
68
+ }
69
+ },
70
+ cancel() {
71
+ reader.releaseLock();
72
+ }
73
+ });
74
+ }
75
+ };
76
+ //#endregion
77
+ export { IterableReadableStream };
78
+
79
+ //# sourceMappingURL=stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.js","names":[],"sources":["../../../../src/client/stream/transport/stream.ts"],"sourcesContent":["export class IterableReadableStream<T>\n extends ReadableStream<T>\n implements AsyncIterable<T>\n{\n public reader!: ReadableStreamDefaultReader<T>;\n\n ensureReader() {\n if (!this.reader) {\n this.reader = this.getReader();\n }\n }\n\n async next(): Promise<IteratorResult<T>> {\n this.ensureReader();\n try {\n const result = await this.reader.read();\n if (result.done) {\n this.reader.releaseLock();\n return {\n done: true,\n value: undefined,\n };\n }\n\n return {\n done: false,\n value: result.value,\n };\n } catch (error) {\n this.reader.releaseLock();\n throw error;\n }\n }\n\n async return(): Promise<IteratorResult<T>> {\n this.ensureReader();\n if (this.locked) {\n const cancelPromise = this.reader.cancel();\n this.reader.releaseLock();\n await cancelPromise;\n }\n return { done: true, value: undefined };\n }\n\n async throw(error: unknown): Promise<IteratorResult<T>> {\n this.ensureReader();\n if (this.locked) {\n const cancelPromise = this.reader.cancel();\n this.reader.releaseLock();\n await cancelPromise;\n }\n throw error;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Not present in Node 18 types, required in latest Node 22\n async [Symbol.asyncDispose]() {\n await this.return();\n }\n\n [Symbol.asyncIterator]() {\n return this;\n }\n\n static fromReadableStream<T>(stream: ReadableStream<T>) {\n const reader = stream.getReader();\n return new IterableReadableStream<T>({\n start(controller) {\n return pump();\n\n function pump(): Promise<T | undefined> {\n return reader.read().then(({ done, value }) => {\n if (done) {\n controller.close();\n return;\n }\n controller.enqueue(value);\n return pump();\n });\n }\n },\n cancel() {\n reader.releaseLock();\n },\n });\n }\n}\n"],"mappings":";AAAA,IAAa,yBAAb,MAAa,+BACH,eAEV;CACE;CAEA,eAAe;AACb,MAAI,CAAC,KAAK,OACR,MAAK,SAAS,KAAK,WAAW;;CAIlC,MAAM,OAAmC;AACvC,OAAK,cAAc;AACnB,MAAI;GACF,MAAM,SAAS,MAAM,KAAK,OAAO,MAAM;AACvC,OAAI,OAAO,MAAM;AACf,SAAK,OAAO,aAAa;AACzB,WAAO;KACL,MAAM;KACN,OAAO,KAAA;KACR;;AAGH,UAAO;IACL,MAAM;IACN,OAAO,OAAO;IACf;WACM,OAAO;AACd,QAAK,OAAO,aAAa;AACzB,SAAM;;;CAIV,MAAM,SAAqC;AACzC,OAAK,cAAc;AACnB,MAAI,KAAK,QAAQ;GACf,MAAM,gBAAgB,KAAK,OAAO,QAAQ;AAC1C,QAAK,OAAO,aAAa;AACzB,SAAM;;AAER,SAAO;GAAE,MAAM;GAAM,OAAO,KAAA;GAAW;;CAGzC,MAAM,MAAM,OAA4C;AACtD,OAAK,cAAc;AACnB,MAAI,KAAK,QAAQ;GACf,MAAM,gBAAgB,KAAK,OAAO,QAAQ;AAC1C,QAAK,OAAO,aAAa;AACzB,SAAM;;AAER,QAAM;;CAKR,OAAO,OAAO,gBAAgB;AAC5B,QAAM,KAAK,QAAQ;;CAGrB,CAAC,OAAO,iBAAiB;AACvB,SAAO;;CAGT,OAAO,mBAAsB,QAA2B;EACtD,MAAM,SAAS,OAAO,WAAW;AACjC,SAAO,IAAI,uBAA0B;GACnC,MAAM,YAAY;AAChB,WAAO,MAAM;IAEb,SAAS,OAA+B;AACtC,YAAO,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,YAAY;AAC7C,UAAI,MAAM;AACR,kBAAW,OAAO;AAClB;;AAEF,iBAAW,QAAQ,MAAM;AACzB,aAAO,MAAM;OACb;;;GAGN,SAAS;AACP,WAAO,aAAa;;GAEvB,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { CommandResponse, ErrorResponse } from "@langchain/protocol";
2
+
3
+ //#region src/client/stream/transport/types.d.ts
4
+ type ProtocolRequestHook = (url: URL, init: RequestInit) => Promise<RequestInit> | RequestInit;
5
+ interface ProtocolTransportPaths {
6
+ commands?: string;
7
+ stream?: string;
8
+ }
9
+ interface ProtocolSseTransportOptions {
10
+ apiUrl: string;
11
+ threadId: string;
12
+ defaultHeaders?: Record<string, HeaderValue>;
13
+ onRequest?: ProtocolRequestHook;
14
+ fetch?: typeof fetch;
15
+ fetchFactory?: () => typeof fetch | Promise<typeof fetch>;
16
+ paths?: ProtocolTransportPaths;
17
+ }
18
+ interface ProtocolWebSocketTransportOptions {
19
+ apiUrl: string;
20
+ threadId: string;
21
+ defaultHeaders?: Record<string, HeaderValue>;
22
+ onRequest?: ProtocolRequestHook;
23
+ webSocketFactory?: (url: string) => WebSocket;
24
+ paths?: Pick<ProtocolTransportPaths, "stream">;
25
+ }
26
+ type HeaderValue = string | undefined | null;
27
+ //#endregion
28
+ export { HeaderValue, ProtocolRequestHook, ProtocolSseTransportOptions, ProtocolTransportPaths, ProtocolWebSocketTransportOptions };
29
+ //# sourceMappingURL=types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.cts","names":[],"sources":["../../../../src/client/stream/transport/types.ts"],"mappings":";;;KAEY,mBAAA,IACV,GAAA,EAAK,GAAA,EACL,IAAA,EAAM,WAAA,KACH,OAAA,CAAQ,WAAA,IAAe,WAAA;AAAA,UAEX,sBAAA;EACf,QAAA;EACA,MAAA;AAAA;AAAA,UAGe,2BAAA;EACf,MAAA;EACA,QAAA;EACA,cAAA,GAAiB,MAAA,SAAe,WAAA;EAChC,SAAA,GAAY,mBAAA;EACZ,KAAA,UAAe,KAAA;EACf,YAAA,gBAA4B,KAAA,GAAQ,OAAA,QAAe,KAAA;EACnD,KAAA,GAAQ,sBAAA;AAAA;AAAA,UAGO,iCAAA;EACf,MAAA;EACA,QAAA;EACA,cAAA,GAAiB,MAAA,SAAe,WAAA;EAChC,SAAA,GAAY,mBAAA;EACZ,gBAAA,IAAoB,GAAA,aAAgB,SAAA;EACpC,KAAA,GAAQ,IAAA,CAAK,sBAAA;AAAA;AAAA,KAGH,WAAA"}
@@ -0,0 +1,29 @@
1
+ import { CommandResponse, ErrorResponse } from "@langchain/protocol";
2
+
3
+ //#region src/client/stream/transport/types.d.ts
4
+ type ProtocolRequestHook = (url: URL, init: RequestInit) => Promise<RequestInit> | RequestInit;
5
+ interface ProtocolTransportPaths {
6
+ commands?: string;
7
+ stream?: string;
8
+ }
9
+ interface ProtocolSseTransportOptions {
10
+ apiUrl: string;
11
+ threadId: string;
12
+ defaultHeaders?: Record<string, HeaderValue>;
13
+ onRequest?: ProtocolRequestHook;
14
+ fetch?: typeof fetch;
15
+ fetchFactory?: () => typeof fetch | Promise<typeof fetch>;
16
+ paths?: ProtocolTransportPaths;
17
+ }
18
+ interface ProtocolWebSocketTransportOptions {
19
+ apiUrl: string;
20
+ threadId: string;
21
+ defaultHeaders?: Record<string, HeaderValue>;
22
+ onRequest?: ProtocolRequestHook;
23
+ webSocketFactory?: (url: string) => WebSocket;
24
+ paths?: Pick<ProtocolTransportPaths, "stream">;
25
+ }
26
+ type HeaderValue = string | undefined | null;
27
+ //#endregion
28
+ export { HeaderValue, ProtocolRequestHook, ProtocolSseTransportOptions, ProtocolTransportPaths, ProtocolWebSocketTransportOptions };
29
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../../../src/client/stream/transport/types.ts"],"mappings":";;;KAEY,mBAAA,IACV,GAAA,EAAK,GAAA,EACL,IAAA,EAAM,WAAA,KACH,OAAA,CAAQ,WAAA,IAAe,WAAA;AAAA,UAEX,sBAAA;EACf,QAAA;EACA,MAAA;AAAA;AAAA,UAGe,2BAAA;EACf,MAAA;EACA,QAAA;EACA,cAAA,GAAiB,MAAA,SAAe,WAAA;EAChC,SAAA,GAAY,mBAAA;EACZ,KAAA,UAAe,KAAA;EACf,YAAA,gBAA4B,KAAA,GAAQ,OAAA,QAAe,KAAA;EACnD,KAAA,GAAQ,sBAAA;AAAA;AAAA,UAGO,iCAAA;EACf,MAAA;EACA,QAAA;EACA,cAAA,GAAiB,MAAA,SAAe,WAAA;EAChC,SAAA,GAAY,mBAAA;EACZ,gBAAA,IAAoB,GAAA,aAAgB,SAAA;EACpC,KAAA,GAAQ,IAAA,CAAK,sBAAA;AAAA;AAAA,KAGH,WAAA"}
@@ -0,0 +1,45 @@
1
+ //#region src/client/stream/transport/utils.ts
2
+ const isRecord = (value) => typeof value === "object" && value !== null;
3
+ const toAbsoluteUrl = (apiUrl, path) => new URL(path, apiUrl.endsWith("/") ? apiUrl : `${apiUrl}/`);
4
+ const toError = (error) => error instanceof Error ? error : new Error(String(error));
5
+ const toWebSocketUrl = (apiUrl) => {
6
+ const url = new URL(apiUrl);
7
+ url.protocol = url.protocol === "https:" ? "wss:" : "ws:";
8
+ url.search = "";
9
+ url.hash = "";
10
+ return url.toString();
11
+ };
12
+ const hasHeaders = (headers) => Object.values(headers ?? {}).some((value) => value != null);
13
+ function mergeHeaders(...headerGroups) {
14
+ const merged = new Headers();
15
+ for (const group of headerGroups) {
16
+ if (!group) continue;
17
+ if (group instanceof Headers) {
18
+ group.forEach((value, key) => {
19
+ merged.set(key, value);
20
+ });
21
+ continue;
22
+ }
23
+ if (Array.isArray(group)) {
24
+ for (const [key, value] of group) if (value == null) merged.delete(key);
25
+ else merged.set(key, value);
26
+ continue;
27
+ }
28
+ for (const [key, value] of Object.entries(group)) if (value == null) merged.delete(key);
29
+ else merged.set(key, value);
30
+ }
31
+ return merged;
32
+ }
33
+ function isProtocolResponse(value) {
34
+ return isRecord(value) && typeof value.type === "string" && (value.type === "success" || value.type === "error");
35
+ }
36
+ //#endregion
37
+ exports.hasHeaders = hasHeaders;
38
+ exports.isProtocolResponse = isProtocolResponse;
39
+ exports.isRecord = isRecord;
40
+ exports.mergeHeaders = mergeHeaders;
41
+ exports.toAbsoluteUrl = toAbsoluteUrl;
42
+ exports.toError = toError;
43
+ exports.toWebSocketUrl = toWebSocketUrl;
44
+
45
+ //# sourceMappingURL=utils.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.cjs","names":[],"sources":["../../../../src/client/stream/transport/utils.ts"],"sourcesContent":["import type { HeaderValue } from \"./types.js\";\nimport type { CommandResponse, ErrorResponse } from \"@langchain/protocol\";\n\nexport const isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null;\n\nexport const toAbsoluteUrl = (apiUrl: string, path: string) =>\n new URL(path, apiUrl.endsWith(\"/\") ? apiUrl : `${apiUrl}/`);\n\nexport const toError = (error: unknown) =>\n // oxlint-disable-next-line no-instanceof/no-instanceof\n error instanceof Error ? error : new Error(String(error));\n\nexport const toWebSocketUrl = (apiUrl: string): string => {\n // Extract path from the input (e.g. \"http://host/threads/X/stream\") and\n // swap the scheme to ws/wss. The caller passes a fully-formed URL\n // with the desired path.\n const url = new URL(apiUrl);\n url.protocol = url.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n url.search = \"\";\n url.hash = \"\";\n return url.toString();\n};\n\nexport const hasHeaders = (headers?: Record<string, HeaderValue>) =>\n Object.values(headers ?? {}).some((value) => value != null);\n\nexport function mergeHeaders(\n ...headerGroups: Array<\n HeadersInit | Record<string, HeaderValue> | undefined | null\n >\n): Headers {\n const merged = new Headers();\n\n for (const group of headerGroups) {\n if (!group) {\n continue;\n }\n\n // oxlint-disable-next-line no-instanceof/no-instanceof\n if (group instanceof Headers) {\n group.forEach((value, key) => {\n merged.set(key, value);\n });\n continue;\n }\n\n if (Array.isArray(group)) {\n for (const [key, value] of group) {\n if (value == null) {\n merged.delete(key);\n } else {\n merged.set(key, value);\n }\n }\n continue;\n }\n\n for (const [key, value] of Object.entries(group)) {\n if (value == null) {\n merged.delete(key);\n } else {\n merged.set(key, value);\n }\n }\n }\n\n return merged;\n}\n\nexport function isProtocolResponse(\n value: unknown\n): value is CommandResponse | ErrorResponse {\n return (\n isRecord(value) &&\n typeof value.type === \"string\" &&\n (value.type === \"success\" || value.type === \"error\")\n );\n}\n"],"mappings":";AAGA,MAAa,YAAY,UACvB,OAAO,UAAU,YAAY,UAAU;AAEzC,MAAa,iBAAiB,QAAgB,SAC5C,IAAI,IAAI,MAAM,OAAO,SAAS,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG;AAE7D,MAAa,WAAW,UAEtB,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,MAAM,CAAC;AAE3D,MAAa,kBAAkB,WAA2B;CAIxD,MAAM,MAAM,IAAI,IAAI,OAAO;AAC3B,KAAI,WAAW,IAAI,aAAa,WAAW,SAAS;AACpD,KAAI,SAAS;AACb,KAAI,OAAO;AACX,QAAO,IAAI,UAAU;;AAGvB,MAAa,cAAc,YACzB,OAAO,OAAO,WAAW,EAAE,CAAC,CAAC,MAAM,UAAU,SAAS,KAAK;AAE7D,SAAgB,aACd,GAAG,cAGM;CACT,MAAM,SAAS,IAAI,SAAS;AAE5B,MAAK,MAAM,SAAS,cAAc;AAChC,MAAI,CAAC,MACH;AAIF,MAAI,iBAAiB,SAAS;AAC5B,SAAM,SAAS,OAAO,QAAQ;AAC5B,WAAO,IAAI,KAAK,MAAM;KACtB;AACF;;AAGF,MAAI,MAAM,QAAQ,MAAM,EAAE;AACxB,QAAK,MAAM,CAAC,KAAK,UAAU,MACzB,KAAI,SAAS,KACX,QAAO,OAAO,IAAI;OAElB,QAAO,IAAI,KAAK,MAAM;AAG1B;;AAGF,OAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,CAC9C,KAAI,SAAS,KACX,QAAO,OAAO,IAAI;MAElB,QAAO,IAAI,KAAK,MAAM;;AAK5B,QAAO;;AAGT,SAAgB,mBACd,OAC0C;AAC1C,QACE,SAAS,MAAM,IACf,OAAO,MAAM,SAAS,aACrB,MAAM,SAAS,aAAa,MAAM,SAAS"}