@langchain/langgraph 0.4.9 → 1.0.0-alpha.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 (505) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +1 -2
  3. package/dist/_virtual/rolldown_runtime.cjs +25 -0
  4. package/dist/channels/any_value.cjs +44 -63
  5. package/dist/channels/any_value.cjs.map +1 -0
  6. package/dist/channels/any_value.d.cts +24 -0
  7. package/dist/channels/any_value.d.cts.map +1 -0
  8. package/dist/channels/any_value.d.ts +16 -11
  9. package/dist/channels/any_value.d.ts.map +1 -0
  10. package/dist/channels/any_value.js +42 -57
  11. package/dist/channels/any_value.js.map +1 -1
  12. package/dist/channels/base.cjs +93 -133
  13. package/dist/channels/base.cjs.map +1 -0
  14. package/dist/channels/base.d.cts +79 -0
  15. package/dist/channels/base.d.cts.map +1 -0
  16. package/dist/channels/base.d.ts +77 -73
  17. package/dist/channels/base.d.ts.map +1 -0
  18. package/dist/channels/base.js +90 -127
  19. package/dist/channels/base.js.map +1 -1
  20. package/dist/channels/binop.cjs +47 -77
  21. package/dist/channels/binop.cjs.map +1 -0
  22. package/dist/channels/binop.d.cts +22 -0
  23. package/dist/channels/binop.d.cts.map +1 -0
  24. package/dist/channels/binop.d.ts +17 -12
  25. package/dist/channels/binop.d.ts.map +1 -0
  26. package/dist/channels/binop.js +45 -71
  27. package/dist/channels/binop.js.map +1 -1
  28. package/dist/channels/dynamic_barrier_value.cjs +72 -208
  29. package/dist/channels/dynamic_barrier_value.cjs.map +1 -0
  30. package/dist/channels/dynamic_barrier_value.d.cts +42 -0
  31. package/dist/channels/dynamic_barrier_value.d.cts.map +1 -0
  32. package/dist/channels/dynamic_barrier_value.d.ts +20 -35
  33. package/dist/channels/dynamic_barrier_value.d.ts.map +1 -0
  34. package/dist/channels/dynamic_barrier_value.js +69 -200
  35. package/dist/channels/dynamic_barrier_value.js.map +1 -1
  36. package/dist/channels/ephemeral_value.cjs +44 -70
  37. package/dist/channels/ephemeral_value.cjs.map +1 -0
  38. package/dist/channels/ephemeral_value.d.cts +22 -0
  39. package/dist/channels/ephemeral_value.d.cts.map +1 -0
  40. package/dist/channels/ephemeral_value.d.ts +18 -12
  41. package/dist/channels/ephemeral_value.d.ts.map +1 -0
  42. package/dist/channels/ephemeral_value.js +43 -65
  43. package/dist/channels/ephemeral_value.js.map +1 -1
  44. package/dist/channels/index.cjs +21 -10
  45. package/dist/channels/index.d.cts +9 -0
  46. package/dist/channels/index.d.ts +9 -7
  47. package/dist/channels/index.js +10 -3
  48. package/dist/channels/last_value.cjs +90 -140
  49. package/dist/channels/last_value.cjs.map +1 -0
  50. package/dist/channels/last_value.d.cts +42 -0
  51. package/dist/channels/last_value.d.cts.map +1 -0
  52. package/dist/channels/last_value.d.ts +27 -23
  53. package/dist/channels/last_value.d.ts.map +1 -0
  54. package/dist/channels/last_value.js +87 -133
  55. package/dist/channels/last_value.js.map +1 -1
  56. package/dist/channels/named_barrier_value.cjs +114 -170
  57. package/dist/channels/named_barrier_value.cjs.map +1 -0
  58. package/dist/channels/named_barrier_value.d.cts +46 -0
  59. package/dist/channels/named_barrier_value.d.cts.map +1 -0
  60. package/dist/channels/named_barrier_value.d.ts +32 -29
  61. package/dist/channels/named_barrier_value.d.ts.map +1 -0
  62. package/dist/channels/named_barrier_value.js +111 -163
  63. package/dist/channels/named_barrier_value.js.map +1 -1
  64. package/dist/channels/topic.cjs +63 -96
  65. package/dist/channels/topic.cjs.map +1 -0
  66. package/dist/channels/topic.d.cts +32 -0
  67. package/dist/channels/topic.d.cts.map +1 -0
  68. package/dist/channels/topic.d.ts +28 -19
  69. package/dist/channels/topic.d.ts.map +1 -0
  70. package/dist/channels/topic.js +61 -90
  71. package/dist/channels/topic.js.map +1 -1
  72. package/dist/constants.cjs +376 -452
  73. package/dist/constants.cjs.map +1 -0
  74. package/dist/constants.d.cts +285 -0
  75. package/dist/constants.d.cts.map +1 -0
  76. package/dist/constants.d.ts +113 -148
  77. package/dist/constants.d.ts.map +1 -0
  78. package/dist/constants.js +336 -444
  79. package/dist/constants.js.map +1 -1
  80. package/dist/errors.cjs +151 -179
  81. package/dist/errors.cjs.map +1 -0
  82. package/dist/errors.d.cts +81 -0
  83. package/dist/errors.d.cts.map +1 -0
  84. package/dist/errors.d.ts +56 -46
  85. package/dist/errors.d.ts.map +1 -0
  86. package/dist/errors.js +140 -165
  87. package/dist/errors.js.map +1 -1
  88. package/dist/func/index.cjs +292 -290
  89. package/dist/func/index.cjs.map +1 -0
  90. package/dist/func/index.d.cts +293 -0
  91. package/dist/func/index.d.cts.map +1 -0
  92. package/dist/func/index.d.ts +86 -72
  93. package/dist/func/index.d.ts.map +1 -0
  94. package/dist/func/index.js +288 -284
  95. package/dist/func/index.js.map +1 -1
  96. package/dist/func/types.d.cts +64 -0
  97. package/dist/func/types.d.cts.map +1 -0
  98. package/dist/func/types.d.ts +24 -19
  99. package/dist/func/types.d.ts.map +1 -0
  100. package/dist/graph/annotation.cjs +96 -120
  101. package/dist/graph/annotation.cjs.map +1 -0
  102. package/dist/graph/annotation.d.cts +116 -0
  103. package/dist/graph/annotation.d.cts.map +1 -0
  104. package/dist/graph/annotation.d.ts +33 -34
  105. package/dist/graph/annotation.d.ts.map +1 -0
  106. package/dist/graph/annotation.js +91 -112
  107. package/dist/graph/annotation.js.map +1 -1
  108. package/dist/graph/graph.cjs +419 -723
  109. package/dist/graph/graph.cjs.map +1 -0
  110. package/dist/graph/graph.d.cts +133 -0
  111. package/dist/graph/graph.d.cts.map +1 -0
  112. package/dist/graph/graph.d.ts +124 -91
  113. package/dist/graph/graph.d.ts.map +1 -0
  114. package/dist/graph/graph.js +412 -713
  115. package/dist/graph/graph.js.map +1 -1
  116. package/dist/graph/index.cjs +4 -17
  117. package/dist/graph/index.js +6 -5
  118. package/dist/graph/message.cjs +59 -104
  119. package/dist/graph/message.cjs.map +1 -0
  120. package/dist/graph/message.d.cts +19 -0
  121. package/dist/graph/message.d.cts.map +1 -0
  122. package/dist/graph/message.d.ts +11 -10
  123. package/dist/graph/message.d.ts.map +1 -0
  124. package/dist/graph/message.js +56 -98
  125. package/dist/graph/message.js.map +1 -1
  126. package/dist/graph/messages_annotation.cjs +106 -106
  127. package/dist/graph/messages_annotation.cjs.map +1 -0
  128. package/dist/graph/messages_annotation.d.cts +111 -0
  129. package/dist/graph/messages_annotation.d.cts.map +1 -0
  130. package/dist/graph/messages_annotation.d.ts +18 -9
  131. package/dist/graph/messages_annotation.d.ts.map +1 -0
  132. package/dist/graph/messages_annotation.js +100 -100
  133. package/dist/graph/messages_annotation.js.map +1 -1
  134. package/dist/graph/state.cjs +475 -779
  135. package/dist/graph/state.cjs.map +1 -0
  136. package/dist/graph/state.d.cts +231 -0
  137. package/dist/graph/state.d.cts.map +1 -0
  138. package/dist/graph/state.d.ts +148 -138
  139. package/dist/graph/state.d.ts.map +1 -0
  140. package/dist/graph/state.js +469 -769
  141. package/dist/graph/state.js.map +1 -1
  142. package/dist/graph/zod/index.cjs +10 -21
  143. package/dist/graph/zod/index.d.cts +3 -0
  144. package/dist/graph/zod/index.d.ts +3 -3
  145. package/dist/graph/zod/index.js +4 -4
  146. package/dist/graph/zod/meta.cjs +142 -177
  147. package/dist/graph/zod/meta.cjs.map +1 -0
  148. package/dist/graph/zod/meta.d.cts +116 -0
  149. package/dist/graph/zod/meta.d.cts.map +1 -0
  150. package/dist/graph/zod/meta.d.ts +99 -97
  151. package/dist/graph/zod/meta.d.ts.map +1 -0
  152. package/dist/graph/zod/meta.js +136 -170
  153. package/dist/graph/zod/meta.js.map +1 -1
  154. package/dist/graph/zod/plugin.cjs +36 -39
  155. package/dist/graph/zod/plugin.cjs.map +1 -0
  156. package/dist/graph/zod/plugin.js +34 -35
  157. package/dist/graph/zod/plugin.js.map +1 -1
  158. package/dist/graph/zod/schema.cjs +82 -110
  159. package/dist/graph/zod/schema.cjs.map +1 -0
  160. package/dist/graph/zod/schema.d.cts +38 -0
  161. package/dist/graph/zod/schema.d.cts.map +1 -0
  162. package/dist/graph/zod/schema.d.ts +12 -6
  163. package/dist/graph/zod/schema.d.ts.map +1 -0
  164. package/dist/graph/zod/schema.js +77 -103
  165. package/dist/graph/zod/schema.js.map +1 -1
  166. package/dist/graph/zod/zod-registry.cjs +41 -47
  167. package/dist/graph/zod/zod-registry.cjs.map +1 -0
  168. package/dist/graph/zod/zod-registry.d.cts +51 -0
  169. package/dist/graph/zod/zod-registry.d.cts.map +1 -0
  170. package/dist/graph/zod/zod-registry.d.ts +34 -26
  171. package/dist/graph/zod/zod-registry.d.ts.map +1 -0
  172. package/dist/graph/zod/zod-registry.js +37 -41
  173. package/dist/graph/zod/zod-registry.js.map +1 -1
  174. package/dist/hash.cjs +205 -267
  175. package/dist/hash.cjs.map +1 -0
  176. package/dist/hash.js +205 -265
  177. package/dist/hash.js.map +1 -1
  178. package/dist/index.cjs +111 -33
  179. package/dist/index.cjs.map +1 -0
  180. package/dist/index.d.cts +26 -0
  181. package/dist/index.d.ts +26 -5
  182. package/dist/index.js +19 -7
  183. package/dist/index.js.map +1 -1
  184. package/dist/interrupt.cjs +79 -85
  185. package/dist/interrupt.cjs.map +1 -0
  186. package/dist/interrupt.d.cts +49 -0
  187. package/dist/interrupt.d.cts.map +1 -0
  188. package/dist/interrupt.d.ts +6 -1
  189. package/dist/interrupt.d.ts.map +1 -0
  190. package/dist/interrupt.js +76 -80
  191. package/dist/interrupt.js.map +1 -1
  192. package/dist/prebuilt/agentName.cjs +139 -172
  193. package/dist/prebuilt/agentName.cjs.map +1 -0
  194. package/dist/prebuilt/agentName.d.cts +42 -0
  195. package/dist/prebuilt/agentName.d.cts.map +1 -0
  196. package/dist/prebuilt/agentName.d.ts +13 -21
  197. package/dist/prebuilt/agentName.d.ts.map +1 -0
  198. package/dist/prebuilt/agentName.js +139 -168
  199. package/dist/prebuilt/agentName.js.map +1 -1
  200. package/dist/prebuilt/agent_executor.cjs +42 -80
  201. package/dist/prebuilt/agent_executor.cjs.map +1 -0
  202. package/dist/prebuilt/agent_executor.d.cts +57 -0
  203. package/dist/prebuilt/agent_executor.d.cts.map +1 -0
  204. package/dist/prebuilt/agent_executor.d.ts +47 -38
  205. package/dist/prebuilt/agent_executor.d.ts.map +1 -0
  206. package/dist/prebuilt/agent_executor.js +40 -75
  207. package/dist/prebuilt/agent_executor.js.map +1 -1
  208. package/dist/prebuilt/chat_agent_executor.cjs +66 -128
  209. package/dist/prebuilt/chat_agent_executor.cjs.map +1 -0
  210. package/dist/prebuilt/chat_agent_executor.d.cts +23 -0
  211. package/dist/prebuilt/chat_agent_executor.d.cts.map +1 -0
  212. package/dist/prebuilt/chat_agent_executor.d.ts +18 -10
  213. package/dist/prebuilt/chat_agent_executor.d.ts.map +1 -0
  214. package/dist/prebuilt/chat_agent_executor.js +63 -123
  215. package/dist/prebuilt/chat_agent_executor.js.map +1 -1
  216. package/dist/prebuilt/index.cjs +15 -18
  217. package/dist/prebuilt/index.d.cts +8 -0
  218. package/dist/prebuilt/index.d.ts +8 -8
  219. package/dist/prebuilt/index.js +8 -7
  220. package/dist/prebuilt/interrupt.d.cts +73 -0
  221. package/dist/prebuilt/interrupt.d.cts.map +1 -0
  222. package/dist/prebuilt/interrupt.d.ts +32 -15
  223. package/dist/prebuilt/interrupt.d.ts.map +1 -0
  224. package/dist/prebuilt/react_agent_executor.cjs +317 -473
  225. package/dist/prebuilt/react_agent_executor.cjs.map +1 -0
  226. package/dist/prebuilt/react_agent_executor.d.cts +229 -0
  227. package/dist/prebuilt/react_agent_executor.d.cts.map +1 -0
  228. package/dist/prebuilt/react_agent_executor.d.ts +171 -143
  229. package/dist/prebuilt/react_agent_executor.d.ts.map +1 -0
  230. package/dist/prebuilt/react_agent_executor.js +315 -465
  231. package/dist/prebuilt/react_agent_executor.js.map +1 -1
  232. package/dist/prebuilt/tool_executor.cjs +45 -67
  233. package/dist/prebuilt/tool_executor.cjs.map +1 -0
  234. package/dist/prebuilt/tool_executor.d.cts +42 -0
  235. package/dist/prebuilt/tool_executor.d.cts.map +1 -0
  236. package/dist/prebuilt/tool_executor.d.ts +30 -24
  237. package/dist/prebuilt/tool_executor.d.ts.map +1 -0
  238. package/dist/prebuilt/tool_executor.js +44 -63
  239. package/dist/prebuilt/tool_executor.js.map +1 -1
  240. package/dist/prebuilt/tool_node.cjs +213 -275
  241. package/dist/prebuilt/tool_node.cjs.map +1 -0
  242. package/dist/prebuilt/tool_node.d.cts +151 -0
  243. package/dist/prebuilt/tool_node.d.cts.map +1 -0
  244. package/dist/prebuilt/tool_node.d.ts +30 -17
  245. package/dist/prebuilt/tool_node.d.ts.map +1 -0
  246. package/dist/prebuilt/tool_node.js +209 -268
  247. package/dist/prebuilt/tool_node.js.map +1 -1
  248. package/dist/pregel/algo.cjs +551 -692
  249. package/dist/pregel/algo.cjs.map +1 -0
  250. package/dist/pregel/algo.d.cts +13 -0
  251. package/dist/pregel/algo.d.cts.map +1 -0
  252. package/dist/pregel/algo.d.ts +8 -38
  253. package/dist/pregel/algo.d.ts.map +1 -0
  254. package/dist/pregel/algo.js +546 -683
  255. package/dist/pregel/algo.js.map +1 -1
  256. package/dist/pregel/call.cjs +46 -42
  257. package/dist/pregel/call.cjs.map +1 -0
  258. package/dist/pregel/call.js +43 -37
  259. package/dist/pregel/call.js.map +1 -1
  260. package/dist/pregel/debug.cjs +153 -223
  261. package/dist/pregel/debug.cjs.map +1 -0
  262. package/dist/pregel/debug.js +152 -215
  263. package/dist/pregel/debug.js.map +1 -1
  264. package/dist/pregel/index.cjs +1138 -1604
  265. package/dist/pregel/index.cjs.map +1 -0
  266. package/dist/pregel/index.d.cts +536 -0
  267. package/dist/pregel/index.d.cts.map +1 -0
  268. package/dist/pregel/index.d.ts +460 -422
  269. package/dist/pregel/index.d.ts.map +1 -0
  270. package/dist/pregel/index.js +1129 -1592
  271. package/dist/pregel/index.js.map +1 -1
  272. package/dist/pregel/io.cjs +127 -234
  273. package/dist/pregel/io.cjs.map +1 -0
  274. package/dist/pregel/io.js +122 -225
  275. package/dist/pregel/io.js.map +1 -1
  276. package/dist/pregel/loop.cjs +542 -954
  277. package/dist/pregel/loop.cjs.map +1 -0
  278. package/dist/pregel/loop.js +539 -948
  279. package/dist/pregel/loop.js.map +1 -1
  280. package/dist/pregel/messages.cjs +104 -196
  281. package/dist/pregel/messages.cjs.map +1 -0
  282. package/dist/pregel/messages.js +102 -191
  283. package/dist/pregel/messages.js.map +1 -1
  284. package/dist/pregel/read.cjs +150 -280
  285. package/dist/pregel/read.cjs.map +1 -0
  286. package/dist/pregel/read.d.cts +51 -0
  287. package/dist/pregel/read.d.cts.map +1 -0
  288. package/dist/pregel/read.d.ts +48 -46
  289. package/dist/pregel/read.d.ts.map +1 -0
  290. package/dist/pregel/read.js +147 -274
  291. package/dist/pregel/read.js.map +1 -1
  292. package/dist/pregel/remote.cjs +339 -458
  293. package/dist/pregel/remote.cjs.map +1 -0
  294. package/dist/pregel/remote.d.cts +121 -0
  295. package/dist/pregel/remote.d.cts.map +1 -0
  296. package/dist/pregel/remote.d.ts +79 -69
  297. package/dist/pregel/remote.d.ts.map +1 -0
  298. package/dist/pregel/remote.js +337 -453
  299. package/dist/pregel/remote.js.map +1 -1
  300. package/dist/pregel/retry.cjs +87 -138
  301. package/dist/pregel/retry.cjs.map +1 -0
  302. package/dist/pregel/retry.js +83 -130
  303. package/dist/pregel/retry.js.map +1 -1
  304. package/dist/pregel/runnable_types.d.cts +49 -0
  305. package/dist/pregel/runnable_types.d.cts.map +1 -0
  306. package/dist/pregel/runnable_types.d.ts +47 -17
  307. package/dist/pregel/runnable_types.d.ts.map +1 -0
  308. package/dist/pregel/runner.cjs +222 -315
  309. package/dist/pregel/runner.cjs.map +1 -0
  310. package/dist/pregel/runner.js +219 -308
  311. package/dist/pregel/runner.js.map +1 -1
  312. package/dist/pregel/stream.cjs +89 -130
  313. package/dist/pregel/stream.cjs.map +1 -0
  314. package/dist/pregel/stream.js +87 -125
  315. package/dist/pregel/stream.js.map +1 -1
  316. package/dist/pregel/types.cjs +25 -62
  317. package/dist/pregel/types.cjs.map +1 -0
  318. package/dist/pregel/types.d.cts +440 -0
  319. package/dist/pregel/types.d.cts.map +1 -0
  320. package/dist/pregel/types.d.ts +381 -432
  321. package/dist/pregel/types.d.ts.map +1 -0
  322. package/dist/pregel/types.js +23 -57
  323. package/dist/pregel/types.js.map +1 -1
  324. package/dist/pregel/utils/config.cjs +101 -147
  325. package/dist/pregel/utils/config.cjs.map +1 -0
  326. package/dist/pregel/utils/config.d.cts +36 -0
  327. package/dist/pregel/utils/config.d.cts.map +1 -0
  328. package/dist/pregel/utils/config.d.ts +12 -9
  329. package/dist/pregel/utils/config.d.ts.map +1 -0
  330. package/dist/pregel/utils/config.js +99 -143
  331. package/dist/pregel/utils/config.js.map +1 -1
  332. package/dist/pregel/utils/index.cjs +87 -125
  333. package/dist/pregel/utils/index.cjs.map +1 -0
  334. package/dist/pregel/utils/index.d.cts +51 -0
  335. package/dist/pregel/utils/index.d.cts.map +1 -0
  336. package/dist/pregel/utils/index.d.ts +45 -61
  337. package/dist/pregel/utils/index.d.ts.map +1 -0
  338. package/dist/pregel/utils/index.js +86 -120
  339. package/dist/pregel/utils/index.js.map +1 -1
  340. package/dist/pregel/utils/subgraph.cjs +15 -26
  341. package/dist/pregel/utils/subgraph.cjs.map +1 -0
  342. package/dist/pregel/utils/subgraph.js +12 -21
  343. package/dist/pregel/utils/subgraph.js.map +1 -1
  344. package/dist/pregel/validate.cjs +42 -92
  345. package/dist/pregel/validate.cjs.map +1 -0
  346. package/dist/pregel/validate.js +39 -84
  347. package/dist/pregel/validate.js.map +1 -1
  348. package/dist/pregel/write.cjs +87 -137
  349. package/dist/pregel/write.cjs.map +1 -0
  350. package/dist/pregel/write.d.cts +35 -0
  351. package/dist/pregel/write.d.cts.map +1 -0
  352. package/dist/pregel/write.d.ts +27 -23
  353. package/dist/pregel/write.d.ts.map +1 -0
  354. package/dist/pregel/write.js +83 -131
  355. package/dist/pregel/write.js.map +1 -1
  356. package/dist/remote.cjs +3 -6
  357. package/dist/remote.d.cts +2 -0
  358. package/dist/remote.d.ts +2 -1
  359. package/dist/remote.js +3 -2
  360. package/dist/setup/async_local_storage.cjs +10 -7
  361. package/dist/setup/async_local_storage.cjs.map +1 -0
  362. package/dist/setup/async_local_storage.js +7 -2
  363. package/dist/setup/async_local_storage.js.map +1 -1
  364. package/dist/ui/index.cjs +4 -0
  365. package/dist/ui/index.d.cts +5 -0
  366. package/dist/ui/index.d.ts +5 -0
  367. package/dist/ui/index.js +3 -0
  368. package/dist/ui/stream.cjs +145 -0
  369. package/dist/ui/stream.cjs.map +1 -0
  370. package/dist/ui/stream.d.cts +25 -0
  371. package/dist/ui/stream.d.cts.map +1 -0
  372. package/dist/ui/stream.d.ts +25 -0
  373. package/dist/ui/stream.d.ts.map +1 -0
  374. package/dist/ui/stream.js +143 -0
  375. package/dist/ui/stream.js.map +1 -0
  376. package/dist/ui/types.infer.d.cts +53 -0
  377. package/dist/ui/types.infer.d.cts.map +1 -0
  378. package/dist/ui/types.infer.d.ts +53 -0
  379. package/dist/ui/types.infer.d.ts.map +1 -0
  380. package/dist/ui/types.message.d.cts +95 -0
  381. package/dist/ui/types.message.d.cts.map +1 -0
  382. package/dist/ui/types.message.d.ts +95 -0
  383. package/dist/ui/types.message.d.ts.map +1 -0
  384. package/dist/ui/types.schema.d.cts +228 -0
  385. package/dist/ui/types.schema.d.cts.map +1 -0
  386. package/dist/ui/types.schema.d.ts +228 -0
  387. package/dist/ui/types.schema.d.ts.map +1 -0
  388. package/dist/utils.cjs +77 -147
  389. package/dist/utils.cjs.map +1 -0
  390. package/dist/utils.d.cts +32 -0
  391. package/dist/utils.d.cts.map +1 -0
  392. package/dist/utils.d.ts +29 -25
  393. package/dist/utils.d.ts.map +1 -0
  394. package/dist/utils.js +73 -140
  395. package/dist/utils.js.map +1 -1
  396. package/dist/web.cjs +96 -55
  397. package/dist/web.d.cts +23 -0
  398. package/dist/web.d.ts +23 -14
  399. package/dist/web.js +15 -8
  400. package/dist/writer.cjs +15 -0
  401. package/dist/writer.cjs.map +1 -0
  402. package/dist/writer.d.cts +5 -0
  403. package/dist/writer.d.cts.map +1 -0
  404. package/dist/writer.d.ts +5 -0
  405. package/dist/writer.d.ts.map +1 -0
  406. package/dist/writer.js +14 -0
  407. package/dist/writer.js.map +1 -0
  408. package/package.json +90 -83
  409. package/dist/channels/index.js.map +0 -1
  410. package/dist/func/types.cjs +0 -15
  411. package/dist/func/types.js +0 -12
  412. package/dist/func/types.js.map +0 -1
  413. package/dist/graph/index.d.ts +0 -4
  414. package/dist/graph/index.js.map +0 -1
  415. package/dist/graph/message.test.cjs +0 -196
  416. package/dist/graph/message.test.d.ts +0 -1
  417. package/dist/graph/message.test.js +0 -194
  418. package/dist/graph/message.test.js.map +0 -1
  419. package/dist/graph/zod/index.js.map +0 -1
  420. package/dist/graph/zod/plugin.d.ts +0 -28
  421. package/dist/hash.d.ts +0 -2
  422. package/dist/prebuilt/index.js.map +0 -1
  423. package/dist/prebuilt/interrupt.cjs +0 -3
  424. package/dist/prebuilt/interrupt.js +0 -2
  425. package/dist/prebuilt/interrupt.js.map +0 -1
  426. package/dist/pregel/call.d.ts +0 -16
  427. package/dist/pregel/debug.d.ts +0 -41
  428. package/dist/pregel/debug.test.cjs +0 -258
  429. package/dist/pregel/debug.test.d.ts +0 -1
  430. package/dist/pregel/debug.test.js +0 -256
  431. package/dist/pregel/debug.test.js.map +0 -1
  432. package/dist/pregel/io.d.ts +0 -30
  433. package/dist/pregel/io.mapCommand.test.cjs +0 -150
  434. package/dist/pregel/io.mapCommand.test.d.ts +0 -1
  435. package/dist/pregel/io.mapCommand.test.js +0 -148
  436. package/dist/pregel/io.mapCommand.test.js.map +0 -1
  437. package/dist/pregel/loop.d.ts +0 -147
  438. package/dist/pregel/messages.d.ts +0 -30
  439. package/dist/pregel/messages.test.cjs +0 -369
  440. package/dist/pregel/messages.test.d.ts +0 -1
  441. package/dist/pregel/messages.test.js +0 -367
  442. package/dist/pregel/messages.test.js.map +0 -1
  443. package/dist/pregel/read.test.cjs +0 -194
  444. package/dist/pregel/read.test.d.ts +0 -1
  445. package/dist/pregel/read.test.js +0 -192
  446. package/dist/pregel/read.test.js.map +0 -1
  447. package/dist/pregel/retry.d.ts +0 -17
  448. package/dist/pregel/runnable_types.cjs +0 -3
  449. package/dist/pregel/runnable_types.js +0 -2
  450. package/dist/pregel/runnable_types.js.map +0 -1
  451. package/dist/pregel/runner.d.ts +0 -79
  452. package/dist/pregel/runner.test.cjs +0 -66
  453. package/dist/pregel/runner.test.d.ts +0 -1
  454. package/dist/pregel/runner.test.js +0 -64
  455. package/dist/pregel/runner.test.js.map +0 -1
  456. package/dist/pregel/stream.d.ts +0 -40
  457. package/dist/pregel/utils/config.test.cjs +0 -214
  458. package/dist/pregel/utils/config.test.d.ts +0 -1
  459. package/dist/pregel/utils/config.test.js +0 -212
  460. package/dist/pregel/utils/config.test.js.map +0 -1
  461. package/dist/pregel/utils/subgraph.d.ts +0 -4
  462. package/dist/pregel/utils/subgraph.test.cjs +0 -83
  463. package/dist/pregel/utils/subgraph.test.d.ts +0 -1
  464. package/dist/pregel/utils/subgraph.test.js +0 -81
  465. package/dist/pregel/utils/subgraph.test.js.map +0 -1
  466. package/dist/pregel/validate.d.ts +0 -16
  467. package/dist/pregel/validate.test.cjs +0 -220
  468. package/dist/pregel/validate.test.d.ts +0 -1
  469. package/dist/pregel/validate.test.js +0 -218
  470. package/dist/pregel/validate.test.js.map +0 -1
  471. package/dist/pregel/write.test.cjs +0 -181
  472. package/dist/pregel/write.test.d.ts +0 -1
  473. package/dist/pregel/write.test.js +0 -179
  474. package/dist/pregel/write.test.js.map +0 -1
  475. package/dist/remote.js.map +0 -1
  476. package/dist/setup/async_local_storage.d.ts +0 -1
  477. package/dist/web.js.map +0 -1
  478. package/index.cjs +0 -1
  479. package/index.d.cts +0 -1
  480. package/index.d.ts +0 -1
  481. package/index.js +0 -1
  482. package/prebuilt.cjs +0 -1
  483. package/prebuilt.d.cts +0 -1
  484. package/prebuilt.d.ts +0 -1
  485. package/prebuilt.js +0 -1
  486. package/pregel.cjs +0 -1
  487. package/pregel.d.cts +0 -1
  488. package/pregel.d.ts +0 -1
  489. package/pregel.js +0 -1
  490. package/remote.cjs +0 -1
  491. package/remote.d.cts +0 -1
  492. package/remote.d.ts +0 -1
  493. package/remote.js +0 -1
  494. package/web.cjs +0 -1
  495. package/web.d.cts +0 -1
  496. package/web.d.ts +0 -1
  497. package/web.js +0 -1
  498. package/zod/schema.cjs +0 -1
  499. package/zod/schema.d.cts +0 -1
  500. package/zod/schema.d.ts +0 -1
  501. package/zod/schema.js +0 -1
  502. package/zod.cjs +0 -1
  503. package/zod.d.cts +0 -1
  504. package/zod.d.ts +0 -1
  505. package/zod.js +0 -1
@@ -1,247 +1,140 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.readChannel = readChannel;
4
- exports.readChannels = readChannels;
5
- exports.mapCommand = mapCommand;
6
- exports.mapInput = mapInput;
7
- exports.mapOutputValues = mapOutputValues;
8
- exports.mapOutputUpdates = mapOutputUpdates;
9
- exports.single = single;
10
- const constants_js_1 = require("../constants.cjs");
11
- const errors_js_1 = require("../errors.cjs");
12
- const hash_js_1 = require("../hash.cjs");
1
+ const require_errors = require('../errors.cjs');
2
+ const require_constants = require('../constants.cjs');
3
+ const require_hash = require('../hash.cjs');
4
+
5
+ //#region src/pregel/io.ts
13
6
  function readChannel(channels, chan, catchErrors = true, returnException = false) {
14
- try {
15
- return channels[chan].get();
16
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
- }
18
- catch (e) {
19
- if (e.name === errors_js_1.EmptyChannelError.unminifiable_name) {
20
- if (returnException) {
21
- return e;
22
- }
23
- else if (catchErrors) {
24
- return null;
25
- }
26
- }
27
- throw e;
28
- }
7
+ try {
8
+ return channels[chan].get();
9
+ } catch (e) {
10
+ if (e.name === require_errors.EmptyChannelError.unminifiable_name) {
11
+ if (returnException) return e;
12
+ else if (catchErrors) return null;
13
+ }
14
+ throw e;
15
+ }
29
16
  }
30
- function readChannels(channels, select, skipEmpty = true
31
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
32
- ) {
33
- if (Array.isArray(select)) {
34
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
35
- const values = {};
36
- for (const k of select) {
37
- try {
38
- values[k] = readChannel(channels, k, !skipEmpty);
39
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
40
- }
41
- catch (e) {
42
- if (e.name === errors_js_1.EmptyChannelError.unminifiable_name) {
43
- continue;
44
- }
45
- }
46
- }
47
- return values;
48
- }
49
- else {
50
- return readChannel(channels, select);
51
- }
17
+ function readChannels(channels, select, skipEmpty = true) {
18
+ if (Array.isArray(select)) {
19
+ const values = {};
20
+ for (const k of select) try {
21
+ values[k] = readChannel(channels, k, !skipEmpty);
22
+ } catch (e) {
23
+ if (e.name === require_errors.EmptyChannelError.unminifiable_name) continue;
24
+ }
25
+ return values;
26
+ } else return readChannel(channels, select);
52
27
  }
53
28
  /**
54
- * Map input chunk to a sequence of pending writes in the form (channel, value).
55
- */
29
+ * Map input chunk to a sequence of pending writes in the form (channel, value).
30
+ */
56
31
  function* mapCommand(cmd, pendingWrites) {
57
- if (cmd.graph === constants_js_1.Command.PARENT) {
58
- throw new errors_js_1.InvalidUpdateError("There is no parent graph.");
59
- }
60
- if (cmd.goto) {
61
- let sends;
62
- if (Array.isArray(cmd.goto)) {
63
- sends = cmd.goto;
64
- }
65
- else {
66
- sends = [cmd.goto];
67
- }
68
- for (const send of sends) {
69
- if ((0, constants_js_1._isSend)(send)) {
70
- yield [constants_js_1.NULL_TASK_ID, constants_js_1.TASKS, send];
71
- }
72
- else if (typeof send === "string") {
73
- yield [constants_js_1.NULL_TASK_ID, `branch:to:${send}`, "__start__"];
74
- }
75
- else {
76
- throw new Error(`In Command.send, expected Send or string, got ${typeof send}`);
77
- }
78
- }
79
- }
80
- if (cmd.resume) {
81
- if (typeof cmd.resume === "object" &&
82
- Object.keys(cmd.resume).length &&
83
- Object.keys(cmd.resume).every(hash_js_1.isXXH3)) {
84
- for (const [tid, resume] of Object.entries(cmd.resume)) {
85
- const existing = pendingWrites
86
- .filter((w) => w[0] === tid && w[1] === constants_js_1.RESUME)
87
- .map((w) => w[2])
88
- .slice(0, 1) ?? [];
89
- existing.push(resume);
90
- yield [tid, constants_js_1.RESUME, existing];
91
- }
92
- }
93
- else {
94
- yield [constants_js_1.NULL_TASK_ID, constants_js_1.RESUME, cmd.resume];
95
- }
96
- }
97
- if (cmd.update) {
98
- if (typeof cmd.update !== "object" || !cmd.update) {
99
- throw new Error("Expected cmd.update to be a dict mapping channel names to update values");
100
- }
101
- if (Array.isArray(cmd.update)) {
102
- for (const [k, v] of cmd.update) {
103
- yield [constants_js_1.NULL_TASK_ID, k, v];
104
- }
105
- }
106
- else {
107
- for (const [k, v] of Object.entries(cmd.update)) {
108
- yield [constants_js_1.NULL_TASK_ID, k, v];
109
- }
110
- }
111
- }
32
+ if (cmd.graph === require_constants.Command.PARENT) throw new require_errors.InvalidUpdateError("There is no parent graph.");
33
+ if (cmd.goto) {
34
+ let sends;
35
+ if (Array.isArray(cmd.goto)) sends = cmd.goto;
36
+ else sends = [cmd.goto];
37
+ for (const send of sends) if (require_constants._isSend(send)) yield [
38
+ require_constants.NULL_TASK_ID,
39
+ require_constants.TASKS,
40
+ send
41
+ ];
42
+ else if (typeof send === "string") yield [
43
+ require_constants.NULL_TASK_ID,
44
+ `branch:to:${send}`,
45
+ "__start__"
46
+ ];
47
+ else throw new Error(`In Command.send, expected Send or string, got ${typeof send}`);
48
+ }
49
+ if (cmd.resume) if (typeof cmd.resume === "object" && Object.keys(cmd.resume).length && Object.keys(cmd.resume).every(require_hash.isXXH3)) for (const [tid, resume] of Object.entries(cmd.resume)) {
50
+ const existing = pendingWrites.filter((w) => w[0] === tid && w[1] === require_constants.RESUME).map((w) => w[2]).slice(0, 1) ?? [];
51
+ existing.push(resume);
52
+ yield [
53
+ tid,
54
+ require_constants.RESUME,
55
+ existing
56
+ ];
57
+ }
58
+ else yield [
59
+ require_constants.NULL_TASK_ID,
60
+ require_constants.RESUME,
61
+ cmd.resume
62
+ ];
63
+ if (cmd.update) {
64
+ if (typeof cmd.update !== "object" || !cmd.update) throw new Error("Expected cmd.update to be a dict mapping channel names to update values");
65
+ if (Array.isArray(cmd.update)) for (const [k, v] of cmd.update) yield [
66
+ require_constants.NULL_TASK_ID,
67
+ k,
68
+ v
69
+ ];
70
+ else for (const [k, v] of Object.entries(cmd.update)) yield [
71
+ require_constants.NULL_TASK_ID,
72
+ k,
73
+ v
74
+ ];
75
+ }
112
76
  }
113
77
  /**
114
- * Map input chunk to a sequence of pending writes in the form [channel, value].
115
- */
116
- function* mapInput(inputChannels,
117
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
118
- chunk
119
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
120
- ) {
121
- if (chunk !== undefined && chunk !== null) {
122
- if (Array.isArray(inputChannels) &&
123
- typeof chunk === "object" &&
124
- !Array.isArray(chunk)) {
125
- for (const k in chunk) {
126
- if (inputChannels.includes(k)) {
127
- yield [k, chunk[k]];
128
- }
129
- }
130
- }
131
- else if (Array.isArray(inputChannels)) {
132
- throw new Error(`Input chunk must be an object when "inputChannels" is an array`);
133
- }
134
- else {
135
- yield [inputChannels, chunk];
136
- }
137
- }
78
+ * Map input chunk to a sequence of pending writes in the form [channel, value].
79
+ */
80
+ function* mapInput(inputChannels, chunk) {
81
+ if (chunk !== void 0 && chunk !== null) if (Array.isArray(inputChannels) && typeof chunk === "object" && !Array.isArray(chunk)) {
82
+ for (const k in chunk) if (inputChannels.includes(k)) yield [k, chunk[k]];
83
+ } else if (Array.isArray(inputChannels)) throw new Error(`Input chunk must be an object when "inputChannels" is an array`);
84
+ else yield [inputChannels, chunk];
138
85
  }
139
86
  /**
140
- * Map pending writes (a sequence of tuples (channel, value)) to output chunk.
141
- */
142
- function* mapOutputValues(outputChannels, pendingWrites, channels
143
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
144
- ) {
145
- if (Array.isArray(outputChannels)) {
146
- if (pendingWrites === true ||
147
- pendingWrites.find(([chan, _]) => outputChannels.includes(chan))) {
148
- yield readChannels(channels, outputChannels);
149
- }
150
- }
151
- else {
152
- if (pendingWrites === true ||
153
- pendingWrites.some(([chan, _]) => chan === outputChannels)) {
154
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
155
- yield readChannel(channels, outputChannels);
156
- }
157
- }
87
+ * Map pending writes (a sequence of tuples (channel, value)) to output chunk.
88
+ */
89
+ function* mapOutputValues(outputChannels, pendingWrites, channels) {
90
+ if (Array.isArray(outputChannels)) {
91
+ if (pendingWrites === true || pendingWrites.find(([chan, _]) => outputChannels.includes(chan))) yield readChannels(channels, outputChannels);
92
+ } else if (pendingWrites === true || pendingWrites.some(([chan, _]) => chan === outputChannels)) yield readChannel(channels, outputChannels);
158
93
  }
159
94
  /**
160
- * Map pending writes (a sequence of tuples (channel, value)) to output chunk.
161
- * @internal
162
- *
163
- * @param outputChannels - The channels to output.
164
- * @param tasks - The tasks to output.
165
- * @param cached - Whether the output is cached.
166
- *
167
- * @returns A generator that yields the output chunk (if any).
168
- */
95
+ * Map pending writes (a sequence of tuples (channel, value)) to output chunk.
96
+ * @internal
97
+ *
98
+ * @param outputChannels - The channels to output.
99
+ * @param tasks - The tasks to output.
100
+ * @param cached - Whether the output is cached.
101
+ *
102
+ * @returns A generator that yields the output chunk (if any).
103
+ */
169
104
  function* mapOutputUpdates(outputChannels, tasks, cached) {
170
- const outputTasks = tasks.filter(([task, ww]) => {
171
- return ((task.config === undefined || !task.config.tags?.includes(constants_js_1.TAG_HIDDEN)) &&
172
- ww[0][0] !== constants_js_1.ERROR &&
173
- ww[0][0] !== constants_js_1.INTERRUPT);
174
- });
175
- if (!outputTasks.length) {
176
- return;
177
- }
178
- let updated;
179
- if (outputTasks.some(([task]) => task.writes.some(([chan, _]) => chan === constants_js_1.RETURN))) {
180
- // TODO: probably should assert that RETURN is the only "non-special" channel (starts with "__")
181
- updated = outputTasks.flatMap(([task]) => task.writes
182
- .filter(([chan, _]) => chan === constants_js_1.RETURN)
183
- .map(([_, value]) => [task.name, value]));
184
- }
185
- else if (!Array.isArray(outputChannels)) {
186
- // special case where graph state is a single channel (MessageGraph)
187
- // probably using this in functional API, too
188
- updated = outputTasks.flatMap(([task]) => task.writes
189
- .filter(([chan, _]) => chan === outputChannels)
190
- .map(([_, value]) => [task.name, value]));
191
- }
192
- else {
193
- updated = outputTasks.flatMap(([task]) => {
194
- const { writes } = task;
195
- const counts = {};
196
- for (const [chan] of writes) {
197
- if (outputChannels.includes(chan)) {
198
- counts[chan] = (counts[chan] || 0) + 1;
199
- }
200
- }
201
- if (Object.values(counts).some((count) => count > 1)) {
202
- // Multiple writes to the same channel: create separate entries
203
- return writes
204
- .filter(([chan]) => outputChannels.includes(chan))
205
- .map(([chan, value]) => [task.name, { [chan]: value }]);
206
- }
207
- else {
208
- // Single write to each channel: create a single combined entry
209
- return [
210
- [
211
- task.name,
212
- Object.fromEntries(writes.filter(([chan]) => outputChannels.includes(chan))),
213
- ],
214
- ];
215
- }
216
- });
217
- }
218
- const grouped = {};
219
- for (const [node, value] of updated) {
220
- if (!(node in grouped)) {
221
- grouped[node] = [];
222
- }
223
- grouped[node].push(value);
224
- }
225
- const flattened = {};
226
- for (const node in grouped) {
227
- if (grouped[node].length === 1) {
228
- const [write] = grouped[node];
229
- flattened[node] = write;
230
- }
231
- else {
232
- flattened[node] = grouped[node];
233
- }
234
- }
235
- if (cached) {
236
- flattened["__metadata__"] = { cached };
237
- }
238
- yield flattened;
239
- }
240
- function single(iter) {
241
- // eslint-disable-next-line no-unreachable-loop
242
- for (const value of iter) {
243
- return value;
244
- }
245
- return null;
105
+ const outputTasks = tasks.filter(([task, ww]) => {
106
+ return (task.config === void 0 || !task.config.tags?.includes(require_constants.TAG_HIDDEN)) && ww[0][0] !== require_constants.ERROR && ww[0][0] !== require_constants.INTERRUPT;
107
+ });
108
+ if (!outputTasks.length) return;
109
+ let updated;
110
+ if (outputTasks.some(([task]) => task.writes.some(([chan, _]) => chan === require_constants.RETURN))) updated = outputTasks.flatMap(([task]) => task.writes.filter(([chan, _]) => chan === require_constants.RETURN).map(([_, value]) => [task.name, value]));
111
+ else if (!Array.isArray(outputChannels)) updated = outputTasks.flatMap(([task]) => task.writes.filter(([chan, _]) => chan === outputChannels).map(([_, value]) => [task.name, value]));
112
+ else updated = outputTasks.flatMap(([task]) => {
113
+ const { writes } = task;
114
+ const counts = {};
115
+ for (const [chan] of writes) if (outputChannels.includes(chan)) counts[chan] = (counts[chan] || 0) + 1;
116
+ if (Object.values(counts).some((count) => count > 1)) return writes.filter(([chan]) => outputChannels.includes(chan)).map(([chan, value]) => [task.name, { [chan]: value }]);
117
+ else return [[task.name, Object.fromEntries(writes.filter(([chan]) => outputChannels.includes(chan)))]];
118
+ });
119
+ const grouped = {};
120
+ for (const [node, value] of updated) {
121
+ if (!(node in grouped)) grouped[node] = [];
122
+ grouped[node].push(value);
123
+ }
124
+ const flattened = {};
125
+ for (const node in grouped) if (grouped[node].length === 1) {
126
+ const [write] = grouped[node];
127
+ flattened[node] = write;
128
+ } else flattened[node] = grouped[node];
129
+ if (cached) flattened["__metadata__"] = { cached };
130
+ yield flattened;
246
131
  }
247
- //# sourceMappingURL=io.js.map
132
+
133
+ //#endregion
134
+ exports.mapCommand = mapCommand;
135
+ exports.mapInput = mapInput;
136
+ exports.mapOutputUpdates = mapOutputUpdates;
137
+ exports.mapOutputValues = mapOutputValues;
138
+ exports.readChannel = readChannel;
139
+ exports.readChannels = readChannels;
140
+ //# sourceMappingURL=io.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.cjs","names":["e: any","EmptyChannelError","Command","InvalidUpdateError","_isSend","NULL_TASK_ID","TASKS","isXXH3","RESUME","TAG_HIDDEN","ERROR","INTERRUPT","updated: [N, Record<string, unknown>][]","RETURN","counts: Record<C, number>"],"sources":["../../src/pregel/io.ts"],"sourcesContent":["import type {\n CheckpointPendingWrite,\n PendingWrite,\n} from \"@langchain/langgraph-checkpoint\";\n\nimport type { BaseChannel } from \"../channels/base.js\";\nimport type { PregelExecutableTask } from \"./types.js\";\nimport {\n _isSend,\n Command,\n ERROR,\n INTERRUPT,\n NULL_TASK_ID,\n RESUME,\n RETURN,\n TAG_HIDDEN,\n TASKS,\n} from \"../constants.js\";\nimport { EmptyChannelError, InvalidUpdateError } from \"../errors.js\";\nimport { isXXH3 } from \"../hash.js\";\n\nexport function readChannel<C extends PropertyKey>(\n channels: Record<C, BaseChannel>,\n chan: C,\n catchErrors: boolean = true,\n returnException: boolean = false\n): unknown | null {\n try {\n return channels[chan].get();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n if (e.name === EmptyChannelError.unminifiable_name) {\n if (returnException) {\n return e;\n } else if (catchErrors) {\n return null;\n }\n }\n throw e;\n }\n}\n\nexport function readChannels<C extends PropertyKey>(\n channels: Record<C, BaseChannel>,\n select: C | Array<C>,\n skipEmpty: boolean = true\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Record<string, any> | any {\n if (Array.isArray(select)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const values = {} as Record<C, any>;\n for (const k of select) {\n try {\n values[k] = readChannel(channels, k, !skipEmpty);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n if (e.name === EmptyChannelError.unminifiable_name) {\n continue;\n }\n }\n }\n return values;\n } else {\n return readChannel(channels, select);\n }\n}\n\n/**\n * Map input chunk to a sequence of pending writes in the form (channel, value).\n */\nexport function* mapCommand(\n cmd: Command,\n pendingWrites: CheckpointPendingWrite[]\n): Generator<[string, string, unknown]> {\n if (cmd.graph === Command.PARENT) {\n throw new InvalidUpdateError(\"There is no parent graph.\");\n }\n if (cmd.goto) {\n let sends;\n if (Array.isArray(cmd.goto)) {\n sends = cmd.goto;\n } else {\n sends = [cmd.goto];\n }\n for (const send of sends) {\n if (_isSend(send)) {\n yield [NULL_TASK_ID, TASKS, send];\n } else if (typeof send === \"string\") {\n yield [NULL_TASK_ID, `branch:to:${send}`, \"__start__\"];\n } else {\n throw new Error(\n `In Command.send, expected Send or string, got ${typeof send}`\n );\n }\n }\n }\n if (cmd.resume) {\n if (\n typeof cmd.resume === \"object\" &&\n Object.keys(cmd.resume).length &&\n Object.keys(cmd.resume).every(isXXH3)\n ) {\n for (const [tid, resume] of Object.entries(cmd.resume)) {\n const existing =\n pendingWrites\n .filter((w) => w[0] === tid && w[1] === RESUME)\n .map((w) => w[2])\n .slice(0, 1) ?? [];\n existing.push(resume);\n yield [tid, RESUME, existing];\n }\n } else {\n yield [NULL_TASK_ID, RESUME, cmd.resume];\n }\n }\n if (cmd.update) {\n if (typeof cmd.update !== \"object\" || !cmd.update) {\n throw new Error(\n \"Expected cmd.update to be a dict mapping channel names to update values\"\n );\n }\n\n if (Array.isArray(cmd.update)) {\n for (const [k, v] of cmd.update) {\n yield [NULL_TASK_ID, k, v];\n }\n } else {\n for (const [k, v] of Object.entries(cmd.update)) {\n yield [NULL_TASK_ID, k, v];\n }\n }\n }\n}\n\n/**\n * Map input chunk to a sequence of pending writes in the form [channel, value].\n */\nexport function* mapInput<C extends PropertyKey>(\n inputChannels: C | Array<C>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n chunk?: any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Generator<[C, any]> {\n if (chunk !== undefined && chunk !== null) {\n if (\n Array.isArray(inputChannels) &&\n typeof chunk === \"object\" &&\n !Array.isArray(chunk)\n ) {\n for (const k in chunk) {\n if (inputChannels.includes(k as C)) {\n yield [k as C, chunk[k]];\n }\n }\n } else if (Array.isArray(inputChannels)) {\n throw new Error(\n `Input chunk must be an object when \"inputChannels\" is an array`\n );\n } else {\n yield [inputChannels, chunk];\n }\n }\n}\n\n/**\n * Map pending writes (a sequence of tuples (channel, value)) to output chunk.\n */\nexport function* mapOutputValues<C extends PropertyKey>(\n outputChannels: C | Array<C>,\n pendingWrites: readonly PendingWrite<C>[] | true,\n channels: Record<C, BaseChannel>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Generator<Record<string, any>, any> {\n if (Array.isArray(outputChannels)) {\n if (\n pendingWrites === true ||\n pendingWrites.find(([chan, _]) => outputChannels.includes(chan))\n ) {\n yield readChannels(channels, outputChannels);\n }\n } else {\n if (\n pendingWrites === true ||\n pendingWrites.some(([chan, _]) => chan === outputChannels)\n ) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yield readChannel(channels, outputChannels) as any;\n }\n }\n}\n\n/**\n * Map pending writes (a sequence of tuples (channel, value)) to output chunk.\n * @internal\n *\n * @param outputChannels - The channels to output.\n * @param tasks - The tasks to output.\n * @param cached - Whether the output is cached.\n *\n * @returns A generator that yields the output chunk (if any).\n */\nexport function* mapOutputUpdates<N extends PropertyKey, C extends PropertyKey>(\n outputChannels: C | Array<C>,\n tasks: readonly [PregelExecutableTask<N, C>, PendingWrite<C>[]][],\n cached?: boolean\n): Generator<Record<N, Record<string, unknown> | unknown>> {\n const outputTasks = tasks.filter(([task, ww]) => {\n return (\n (task.config === undefined || !task.config.tags?.includes(TAG_HIDDEN)) &&\n ww[0][0] !== ERROR &&\n ww[0][0] !== INTERRUPT\n );\n });\n if (!outputTasks.length) {\n return;\n }\n\n let updated: [N, Record<string, unknown>][];\n\n if (\n outputTasks.some(([task]) =>\n task.writes.some(([chan, _]) => chan === RETURN)\n )\n ) {\n // TODO: probably should assert that RETURN is the only \"non-special\" channel (starts with \"__\")\n updated = outputTasks.flatMap(([task]) =>\n task.writes\n .filter(([chan, _]) => chan === RETURN)\n .map(([_, value]) => [task.name, value] as [N, Record<string, unknown>])\n );\n } else if (!Array.isArray(outputChannels)) {\n // special case where graph state is a single channel (MessageGraph)\n // probably using this in functional API, too\n updated = outputTasks.flatMap(([task]) =>\n task.writes\n .filter(([chan, _]) => chan === outputChannels)\n .map(([_, value]) => [task.name, value] as [N, Record<string, unknown>])\n );\n } else {\n updated = outputTasks.flatMap(([task]) => {\n const { writes } = task;\n const counts: Record<C, number> = {} as Record<C, number>;\n for (const [chan] of writes) {\n if (outputChannels.includes(chan)) {\n counts[chan] = (counts[chan] || 0) + 1;\n }\n }\n\n if ((Object.values(counts) as number[]).some((count) => count > 1)) {\n // Multiple writes to the same channel: create separate entries\n return writes\n .filter(([chan]) => outputChannels.includes(chan))\n .map(\n ([chan, value]) =>\n [task.name, { [chan]: value }] as [N, Record<string, unknown>]\n );\n } else {\n // Single write to each channel: create a single combined entry\n return [\n [\n task.name,\n Object.fromEntries(\n writes.filter(([chan]) => outputChannels.includes(chan))\n ),\n ] as [N, Record<string, unknown>],\n ];\n }\n });\n }\n\n const grouped = {} as Record<N, unknown[]>;\n\n for (const [node, value] of updated) {\n if (!(node in grouped)) {\n grouped[node] = [];\n }\n grouped[node].push(value);\n }\n\n const flattened = {} as Record<N, unknown>;\n for (const node in grouped) {\n if (grouped[node].length === 1) {\n const [write] = grouped[node];\n flattened[node] = write;\n } else {\n flattened[node] = grouped[node];\n }\n }\n\n if (cached) {\n flattened[\"__metadata__\" as N] = { cached };\n }\n yield flattened;\n}\n\nexport function single<T>(iter: IterableIterator<T>): T | null {\n // eslint-disable-next-line no-unreachable-loop\n for (const value of iter) {\n return value;\n }\n return null;\n}\n"],"mappings":"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"}