@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,294 +1,298 @@
1
- import { AsyncLocalStorageProviderSingleton } from "@langchain/core/singletons";
2
- import { Pregel } from "../pregel/index.js";
3
- import { PregelNode } from "../pregel/read.js";
4
- import { CONFIG_KEY_PREVIOUS_STATE, END, PREVIOUS, START, TAG_HIDDEN, } from "../constants.js";
5
- import { EphemeralValue } from "../channels/ephemeral_value.js";
6
- import { call, getRunnableForEntrypoint } from "../pregel/call.js";
7
1
  import { LastValue } from "../channels/last_value.js";
8
- import { RunnableCallable, isAsyncGeneratorFunction, isGeneratorFunction, } from "../utils.js";
2
+ import { CONFIG_KEY_PREVIOUS_STATE, END, PREVIOUS, START, TAG_HIDDEN } from "../constants.js";
3
+ import { RunnableCallable, isAsyncGeneratorFunction, isGeneratorFunction } from "../utils.js";
9
4
  import { ChannelWrite, PASSTHROUGH } from "../pregel/write.js";
5
+ import { PregelNode } from "../pregel/read.js";
6
+ import { call, getRunnableForEntrypoint } from "../pregel/call.js";
7
+ import { Pregel } from "../pregel/index.js";
8
+ import { EphemeralValue } from "../channels/ephemeral_value.js";
9
+ import { AsyncLocalStorageProviderSingleton } from "@langchain/core/singletons";
10
+
11
+ //#region src/func/index.ts
10
12
  /**
11
- * Define a LangGraph task using the `task` function.
12
- *
13
- * Tasks can only be called from within an {@link entrypoint} or from within a StateGraph.
14
- * A task can be called like a regular function with the following differences:
15
- *
16
- * - When a checkpointer is enabled, the function inputs and outputs must be serializable.
17
- * - The wrapped function can only be called from within an entrypoint or StateGraph.
18
- * - Calling the function produces a promise. This makes it easy to parallelize tasks.
19
- *
20
- * @typeParam ArgsT - The type of arguments the task function accepts
21
- * @typeParam OutputT - The type of value the task function returns
22
- * @param optionsOrName - Either an {@link TaskOptions} object, or a string for the name of the task
23
- * @param func - The function that executes this task
24
- * @returns A proxy function that accepts the same arguments as the original and always returns the result as a Promise
25
- *
26
- * @example basic example
27
- * ```typescript
28
- * const addOne = task("add", async (a: number) => a + 1);
29
- *
30
- * const workflow = entrypoint("example", async (numbers: number[]) => {
31
- * const promises = numbers.map(n => addOne(n));
32
- * const results = await Promise.all(promises);
33
- * return results;
34
- * });
35
- *
36
- * // Call the entrypoint
37
- * await workflow.invoke([1, 2, 3]); // Returns [2, 3, 4]
38
- * ```
39
- *
40
- * @example using a retry policy
41
- * ```typescript
42
- * const addOne = task({
43
- * name: "add",
44
- * retry: { maxAttempts: 3 }
45
- * },
46
- * async (a: number) => a + 1
47
- * );
48
- *
49
- * const workflow = entrypoint("example", async (numbers: number[]) => {
50
- * const promises = numbers.map(n => addOne(n));
51
- * const results = await Promise.all(promises);
52
- * return results;
53
- * });
54
- * ```
55
- */
56
- export function task(optionsOrName, func) {
57
- const options = typeof optionsOrName === "string"
58
- ? { name: optionsOrName, retry: undefined, cachePolicy: undefined }
59
- : optionsOrName;
60
- const { name, retry } = options;
61
- if (isAsyncGeneratorFunction(func) || isGeneratorFunction(func)) {
62
- throw new Error("Generators are disallowed as tasks. For streaming responses, use config.write.");
63
- }
64
- const cachePolicy = options.cachePolicy ??
65
- // `cache` was mistakingly used as an alias for `cachePolicy` in v0.3.x,
66
- // TODO: remove in 1.x
67
- ("cache" in options ? options.cache : undefined);
68
- let cache;
69
- if (typeof cachePolicy === "boolean") {
70
- cache = cachePolicy ? {} : undefined;
71
- }
72
- else {
73
- cache = cachePolicy;
74
- }
75
- return (...args) => {
76
- return call({ func, name, retry, cache }, ...args);
77
- };
13
+ * Define a LangGraph task using the `task` function.
14
+ *
15
+ * Tasks can only be called from within an {@link entrypoint} or from within a StateGraph.
16
+ * A task can be called like a regular function with the following differences:
17
+ *
18
+ * - When a checkpointer is enabled, the function inputs and outputs must be serializable.
19
+ * - The wrapped function can only be called from within an entrypoint or StateGraph.
20
+ * - Calling the function produces a promise. This makes it easy to parallelize tasks.
21
+ *
22
+ * @typeParam ArgsT - The type of arguments the task function accepts
23
+ * @typeParam OutputT - The type of value the task function returns
24
+ * @param optionsOrName - Either an {@link TaskOptions} object, or a string for the name of the task
25
+ * @param func - The function that executes this task
26
+ * @returns A proxy function that accepts the same arguments as the original and always returns the result as a Promise
27
+ *
28
+ * @example basic example
29
+ * ```typescript
30
+ * const addOne = task("add", async (a: number) => a + 1);
31
+ *
32
+ * const workflow = entrypoint("example", async (numbers: number[]) => {
33
+ * const promises = numbers.map(n => addOne(n));
34
+ * const results = await Promise.all(promises);
35
+ * return results;
36
+ * });
37
+ *
38
+ * // Call the entrypoint
39
+ * await workflow.invoke([1, 2, 3]); // Returns [2, 3, 4]
40
+ * ```
41
+ *
42
+ * @example using a retry policy
43
+ * ```typescript
44
+ * const addOne = task({
45
+ * name: "add",
46
+ * retry: { maxAttempts: 3 }
47
+ * },
48
+ * async (a: number) => a + 1
49
+ * );
50
+ *
51
+ * const workflow = entrypoint("example", async (numbers: number[]) => {
52
+ * const promises = numbers.map(n => addOne(n));
53
+ * const results = await Promise.all(promises);
54
+ * return results;
55
+ * });
56
+ * ```
57
+ * @category Functional API
58
+ */
59
+ function task(optionsOrName, func) {
60
+ const options = typeof optionsOrName === "string" ? {
61
+ name: optionsOrName,
62
+ retry: void 0,
63
+ cachePolicy: void 0
64
+ } : optionsOrName;
65
+ const { name, retry } = options;
66
+ if (isAsyncGeneratorFunction(func) || isGeneratorFunction(func)) throw new Error("Generators are disallowed as tasks. For streaming responses, use config.write.");
67
+ const cachePolicy = options.cachePolicy ?? ("cache" in options ? options.cache : void 0);
68
+ let cache;
69
+ if (typeof cachePolicy === "boolean") cache = cachePolicy ? {} : void 0;
70
+ else cache = cachePolicy;
71
+ return (...args) => {
72
+ return call({
73
+ func,
74
+ name,
75
+ retry,
76
+ cache
77
+ }, ...args);
78
+ };
78
79
  }
79
80
  /**
80
- * Define a LangGraph workflow using the `entrypoint` function.
81
- *
82
- * ### Function signature
83
- *
84
- * The wrapped function must accept at most **two parameters**. The first parameter
85
- * is the input to the function. The second (optional) parameter is a
86
- * {@link LangGraphRunnableConfig} object. If you wish to pass multiple parameters to
87
- * the function, you can pass them as an object.
88
- *
89
- * ### Helper functions
90
- *
91
- * #### Streaming
92
- * To write data to the "custom" stream, use the {@link getWriter} function, or the
93
- * {@link LangGraphRunnableConfig.writer} property.
94
- *
95
- * #### State management
96
- * The {@link getPreviousState} function can be used to access the previous state
97
- * that was returned from the last invocation of the entrypoint on the same thread id.
98
- *
99
- * If you wish to save state other than the return value, you can use the
100
- * {@link entrypoint.final} function.
101
- *
102
- * @typeParam InputT - The type of input the entrypoint accepts
103
- * @typeParam OutputT - The type of output the entrypoint produces
104
- * @param optionsOrName - Either an {@link EntrypointOptions} object, or a string for the name of the entrypoint
105
- * @param func - The function that executes this entrypoint
106
- * @returns A {@link Pregel} instance that can be run to execute the workflow
107
- *
108
- * @example Using entrypoint and tasks
109
- * ```typescript
110
- * import { task, entrypoint } from "@langchain/langgraph";
111
- * import { MemorySaver } from "@langchain/langgraph-checkpoint";
112
- * import { interrupt, Command } from "@langchain/langgraph";
113
- *
114
- * const composeEssay = task("compose", async (topic: string) => {
115
- * await new Promise(r => setTimeout(r, 1000)); // Simulate slow operation
116
- * return `An essay about ${topic}`;
117
- * });
118
- *
119
- * const reviewWorkflow = entrypoint({
120
- * name: "review",
121
- * checkpointer: new MemorySaver()
122
- * }, async (topic: string) => {
123
- * const essay = await composeEssay(topic);
124
- * const humanReview = await interrupt({
125
- * question: "Please provide a review",
126
- * essay
127
- * });
128
- * return {
129
- * essay,
130
- * review: humanReview
131
- * };
132
- * });
133
- *
134
- * // Example configuration for the workflow
135
- * const config = {
136
- * configurable: {
137
- * thread_id: "some_thread"
138
- * }
139
- * };
140
- *
141
- * // Topic for the essay
142
- * const topic = "cats";
143
- *
144
- * // Stream the workflow to generate the essay and await human review
145
- * for await (const result of reviewWorkflow.stream(topic, config)) {
146
- * console.log(result);
147
- * }
148
- *
149
- * // Example human review provided after the interrupt
150
- * const humanReview = "This essay is great.";
151
- *
152
- * // Resume the workflow with the provided human review
153
- * for await (const result of reviewWorkflow.stream(new Command({ resume: humanReview }), config)) {
154
- * console.log(result);
155
- * }
156
- * ```
157
- *
158
- * @example Accessing the previous return value
159
- * ```typescript
160
- * import { entrypoint, getPreviousState } from "@langchain/langgraph";
161
- * import { MemorySaver } from "@langchain/langgraph-checkpoint";
162
- *
163
- * const accumulator = entrypoint({
164
- * name: "accumulator",
165
- * checkpointer: new MemorySaver()
166
- * }, async (input: string) => {
167
- * const previous = getPreviousState<number>();
168
- * return previous !== undefined ? `${previous } ${input}` : input;
169
- * });
170
- *
171
- * const config = {
172
- * configurable: {
173
- * thread_id: "some_thread"
174
- * }
175
- * };
176
- * await accumulator.invoke("hello", config); // returns "hello"
177
- * await accumulator.invoke("world", config); // returns "hello world"
178
- * ```
179
- *
180
- * @example Using entrypoint.final to save a value
181
- * ```typescript
182
- * import { entrypoint, getPreviousState } from "@langchain/langgraph";
183
- * import { MemorySaver } from "@langchain/langgraph-checkpoint";
184
- *
185
- * const myWorkflow = entrypoint({
186
- * name: "accumulator",
187
- * checkpointer: new MemorySaver()
188
- * }, async (num: number) => {
189
- * const previous = getPreviousState<number>();
190
- *
191
- * // This will return the previous value to the caller, saving
192
- * // 2 * num to the checkpoint, which will be used in the next invocation
193
- * // for the `previous` parameter.
194
- * return entrypoint.final({
195
- * value: previous ?? 0,
196
- * save: 2 * num
197
- * });
198
- * });
199
- *
200
- * const config = {
201
- * configurable: {
202
- * thread_id: "some_thread"
203
- * }
204
- * };
205
- *
206
- * await myWorkflow.invoke(3, config); // 0 (previous was undefined)
207
- * await myWorkflow.invoke(1, config); // 6 (previous was 3 * 2 from the previous invocation)
208
- * ```
209
- */
210
- export const entrypoint = function entrypoint(optionsOrName, func) {
211
- const { name, checkpointer, store, cache } = typeof optionsOrName === "string"
212
- ? { name: optionsOrName, checkpointer: undefined, store: undefined }
213
- : optionsOrName;
214
- if (isAsyncGeneratorFunction(func) || isGeneratorFunction(func)) {
215
- throw new Error("Generators are disallowed as entrypoints. For streaming responses, use config.write.");
216
- }
217
- const streamMode = "updates";
218
- const bound = getRunnableForEntrypoint(name, func);
219
- // Helper to check if a value is an EntrypointFinal
220
- function isEntrypointFinal(value) {
221
- return (typeof value === "object" &&
222
- value !== null &&
223
- "__lg_type" in value &&
224
- value.__lg_type === "__pregel_final");
225
- }
226
- // Helper function to pluck the return value from EntrypointFinal or passthrough
227
- const pluckReturnValue = new RunnableCallable({
228
- name: "pluckReturnValue",
229
- func: (value) => {
230
- return isEntrypointFinal(value) ? value.value : value;
231
- },
232
- });
233
- // Helper function to pluck the save value from EntrypointFinal or passthrough
234
- const pluckSaveValue = new RunnableCallable({
235
- name: "pluckSaveValue",
236
- func: (value) => {
237
- return isEntrypointFinal(value) ? value.save : value;
238
- },
239
- });
240
- const entrypointNode = new PregelNode({
241
- bound,
242
- triggers: [START],
243
- channels: [START],
244
- writers: [
245
- new ChannelWrite([
246
- { channel: END, value: PASSTHROUGH, mapper: pluckReturnValue },
247
- { channel: PREVIOUS, value: PASSTHROUGH, mapper: pluckSaveValue },
248
- ], [TAG_HIDDEN]),
249
- ],
250
- });
251
- return new Pregel({
252
- name,
253
- checkpointer,
254
- nodes: {
255
- [name]: entrypointNode,
256
- },
257
- channels: {
258
- [START]: new EphemeralValue(),
259
- [END]: new LastValue(),
260
- [PREVIOUS]: new LastValue(),
261
- },
262
- inputChannels: START,
263
- outputChannels: END,
264
- streamChannels: END,
265
- streamMode,
266
- store,
267
- cache,
268
- });
81
+ * Define a LangGraph workflow using the `entrypoint` function.
82
+ *
83
+ * ### Function signature
84
+ *
85
+ * The wrapped function must accept at most **two parameters**. The first parameter
86
+ * is the input to the function. The second (optional) parameter is a
87
+ * {@link LangGraphRunnableConfig} object. If you wish to pass multiple parameters to
88
+ * the function, you can pass them as an object.
89
+ *
90
+ * ### Helper functions
91
+ *
92
+ * #### Streaming
93
+ * To write data to the "custom" stream, use the {@link getWriter} function, or the
94
+ * {@link LangGraphRunnableConfig.writer} property.
95
+ *
96
+ * #### State management
97
+ * The {@link getPreviousState} function can be used to access the previous state
98
+ * that was returned from the last invocation of the entrypoint on the same thread id.
99
+ *
100
+ * If you wish to save state other than the return value, you can use the
101
+ * {@link entrypoint.final} function.
102
+ *
103
+ * @typeParam InputT - The type of input the entrypoint accepts
104
+ * @typeParam OutputT - The type of output the entrypoint produces
105
+ * @param optionsOrName - Either an {@link EntrypointOptions} object, or a string for the name of the entrypoint
106
+ * @param func - The function that executes this entrypoint
107
+ * @returns A {@link Pregel} instance that can be run to execute the workflow
108
+ *
109
+ * @example Using entrypoint and tasks
110
+ * ```typescript
111
+ * import { task, entrypoint } from "@langchain/langgraph";
112
+ * import { MemorySaver } from "@langchain/langgraph-checkpoint";
113
+ * import { interrupt, Command } from "@langchain/langgraph";
114
+ *
115
+ * const composeEssay = task("compose", async (topic: string) => {
116
+ * await new Promise(r => setTimeout(r, 1000)); // Simulate slow operation
117
+ * return `An essay about ${topic}`;
118
+ * });
119
+ *
120
+ * const reviewWorkflow = entrypoint({
121
+ * name: "review",
122
+ * checkpointer: new MemorySaver()
123
+ * }, async (topic: string) => {
124
+ * const essay = await composeEssay(topic);
125
+ * const humanReview = await interrupt({
126
+ * question: "Please provide a review",
127
+ * essay
128
+ * });
129
+ * return {
130
+ * essay,
131
+ * review: humanReview
132
+ * };
133
+ * });
134
+ *
135
+ * // Example configuration for the workflow
136
+ * const config = {
137
+ * configurable: {
138
+ * thread_id: "some_thread"
139
+ * }
140
+ * };
141
+ *
142
+ * // Topic for the essay
143
+ * const topic = "cats";
144
+ *
145
+ * // Stream the workflow to generate the essay and await human review
146
+ * for await (const result of reviewWorkflow.stream(topic, config)) {
147
+ * console.log(result);
148
+ * }
149
+ *
150
+ * // Example human review provided after the interrupt
151
+ * const humanReview = "This essay is great.";
152
+ *
153
+ * // Resume the workflow with the provided human review
154
+ * for await (const result of reviewWorkflow.stream(new Command({ resume: humanReview }), config)) {
155
+ * console.log(result);
156
+ * }
157
+ * ```
158
+ *
159
+ * @example Accessing the previous return value
160
+ * ```typescript
161
+ * import { entrypoint, getPreviousState } from "@langchain/langgraph";
162
+ * import { MemorySaver } from "@langchain/langgraph-checkpoint";
163
+ *
164
+ * const accumulator = entrypoint({
165
+ * name: "accumulator",
166
+ * checkpointer: new MemorySaver()
167
+ * }, async (input: string) => {
168
+ * const previous = getPreviousState<number>();
169
+ * return previous !== undefined ? `${previous } ${input}` : input;
170
+ * });
171
+ *
172
+ * const config = {
173
+ * configurable: {
174
+ * thread_id: "some_thread"
175
+ * }
176
+ * };
177
+ * await accumulator.invoke("hello", config); // returns "hello"
178
+ * await accumulator.invoke("world", config); // returns "hello world"
179
+ * ```
180
+ *
181
+ * @example Using entrypoint.final to save a value
182
+ * ```typescript
183
+ * import { entrypoint, getPreviousState } from "@langchain/langgraph";
184
+ * import { MemorySaver } from "@langchain/langgraph-checkpoint";
185
+ *
186
+ * const myWorkflow = entrypoint({
187
+ * name: "accumulator",
188
+ * checkpointer: new MemorySaver()
189
+ * }, async (num: number) => {
190
+ * const previous = getPreviousState<number>();
191
+ *
192
+ * // This will return the previous value to the caller, saving
193
+ * // 2 * num to the checkpoint, which will be used in the next invocation
194
+ * // for the `previous` parameter.
195
+ * return entrypoint.final({
196
+ * value: previous ?? 0,
197
+ * save: 2 * num
198
+ * });
199
+ * });
200
+ *
201
+ * const config = {
202
+ * configurable: {
203
+ * thread_id: "some_thread"
204
+ * }
205
+ * };
206
+ *
207
+ * await myWorkflow.invoke(3, config); // 0 (previous was undefined)
208
+ * await myWorkflow.invoke(1, config); // 6 (previous was 3 * 2 from the previous invocation)
209
+ * ```
210
+ * @category Functional API
211
+ */
212
+ const entrypoint = function entrypoint$1(optionsOrName, func) {
213
+ const { name, checkpointer, store, cache } = typeof optionsOrName === "string" ? {
214
+ name: optionsOrName,
215
+ checkpointer: void 0,
216
+ store: void 0
217
+ } : optionsOrName;
218
+ if (isAsyncGeneratorFunction(func) || isGeneratorFunction(func)) throw new Error("Generators are disallowed as entrypoints. For streaming responses, use config.write.");
219
+ const streamMode = "updates";
220
+ const bound = getRunnableForEntrypoint(name, func);
221
+ function isEntrypointFinal(value) {
222
+ return typeof value === "object" && value !== null && "__lg_type" in value && value.__lg_type === "__pregel_final";
223
+ }
224
+ const pluckReturnValue = new RunnableCallable({
225
+ name: "pluckReturnValue",
226
+ func: (value) => {
227
+ return isEntrypointFinal(value) ? value.value : value;
228
+ }
229
+ });
230
+ const pluckSaveValue = new RunnableCallable({
231
+ name: "pluckSaveValue",
232
+ func: (value) => {
233
+ return isEntrypointFinal(value) ? value.save : value;
234
+ }
235
+ });
236
+ const entrypointNode = new PregelNode({
237
+ bound,
238
+ triggers: [START],
239
+ channels: [START],
240
+ writers: [new ChannelWrite([{
241
+ channel: END,
242
+ value: PASSTHROUGH,
243
+ mapper: pluckReturnValue
244
+ }, {
245
+ channel: PREVIOUS,
246
+ value: PASSTHROUGH,
247
+ mapper: pluckSaveValue
248
+ }], [TAG_HIDDEN])]
249
+ });
250
+ return new Pregel({
251
+ name,
252
+ checkpointer,
253
+ nodes: { [name]: entrypointNode },
254
+ channels: {
255
+ [START]: new EphemeralValue(),
256
+ [END]: new LastValue(),
257
+ [PREVIOUS]: new LastValue()
258
+ },
259
+ inputChannels: START,
260
+ outputChannels: END,
261
+ streamChannels: END,
262
+ streamMode,
263
+ store,
264
+ cache
265
+ });
269
266
  };
270
- // documented by the EntrypointFunction interface
271
- entrypoint.final = function final({ value, save, }) {
272
- return { value, save, __lg_type: "__pregel_final" };
267
+ entrypoint.final = function final({ value, save }) {
268
+ return {
269
+ value,
270
+ save,
271
+ __lg_type: "__pregel_final"
272
+ };
273
273
  };
274
274
  /**
275
- * A helper utility function for use with the functional API that returns the previous
276
- * state from the checkpoint from the last invocation of the current thread.
277
- *
278
- * This function allows workflows to access state that was saved in previous runs
279
- * using {@link entrypoint.final}.
280
- *
281
- * @typeParam StateT - The type of the state that was previously saved
282
- * @returns The previous saved state from the last invocation of the current thread
283
- *
284
- * @example
285
- * ```typescript
286
- * const previousState = getPreviousState<{ counter: number }>();
287
- * const newCount = (previousState?.counter ?? 0) + 1;
288
- * ```
289
- */
290
- export function getPreviousState() {
291
- const config = AsyncLocalStorageProviderSingleton.getRunnableConfig();
292
- return config.configurable?.[CONFIG_KEY_PREVIOUS_STATE];
275
+ * A helper utility function for use with the functional API that returns the previous
276
+ * state from the checkpoint from the last invocation of the current thread.
277
+ *
278
+ * This function allows workflows to access state that was saved in previous runs
279
+ * using {@link entrypoint.final}.
280
+ *
281
+ * @typeParam StateT - The type of the state that was previously saved
282
+ * @returns The previous saved state from the last invocation of the current thread
283
+ *
284
+ * @example
285
+ * ```typescript
286
+ * const previousState = getPreviousState<{ counter: number }>();
287
+ * const newCount = (previousState?.counter ?? 0) + 1;
288
+ * ```
289
+ * @category Functional API
290
+ */
291
+ function getPreviousState() {
292
+ const config = AsyncLocalStorageProviderSingleton.getRunnableConfig();
293
+ return config.configurable?.[CONFIG_KEY_PREVIOUS_STATE];
293
294
  }
295
+
296
+ //#endregion
297
+ export { entrypoint, getPreviousState, task };
294
298
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/func/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["cache: CachePolicy | undefined","entrypoint","config: LangGraphRunnableConfig"],"sources":["../../src/func/index.ts"],"sourcesContent":["import {\n BaseCache,\n BaseCheckpointSaver,\n BaseStore,\n} from \"@langchain/langgraph-checkpoint\";\nimport { AsyncLocalStorageProviderSingleton } from \"@langchain/core/singletons\";\nimport { Pregel } from \"../pregel/index.js\";\nimport { PregelNode } from \"../pregel/read.js\";\nimport {\n CONFIG_KEY_PREVIOUS_STATE,\n END,\n PREVIOUS,\n START,\n TAG_HIDDEN,\n} from \"../constants.js\";\nimport { EphemeralValue } from \"../channels/ephemeral_value.js\";\nimport { call, getRunnableForEntrypoint } from \"../pregel/call.js\";\nimport type { CachePolicy, RetryPolicy } from \"../pregel/utils/index.js\";\nimport { LastValue } from \"../channels/last_value.js\";\nimport {\n EntrypointFinal,\n EntrypointReturnT,\n EntrypointFinalSaveT,\n EntrypointFunc,\n TaskFunc,\n} from \"./types.js\";\nimport { LangGraphRunnableConfig } from \"../pregel/runnable_types.js\";\nimport {\n RunnableCallable,\n isAsyncGeneratorFunction,\n isGeneratorFunction,\n} from \"../utils.js\";\nimport { ChannelWrite, PASSTHROUGH } from \"../pregel/write.js\";\n\n/**\n * Options for the {@link task} function\n */\nexport interface TaskOptions {\n /**\n * The name of the task, analogous to the node name in {@link StateGraph}.\n */\n name: string;\n /**\n * The retry policy for the task. Configures how many times and under what conditions\n * the task should be retried if it fails.\n */\n retry?: RetryPolicy;\n\n /**\n * The cache policy for the task. Configures how the task should be cached.\n */\n cachePolicy?: CachePolicy;\n}\n\n/**\n * Define a LangGraph task using the `task` function.\n *\n * Tasks can only be called from within an {@link entrypoint} or from within a StateGraph.\n * A task can be called like a regular function with the following differences:\n *\n * - When a checkpointer is enabled, the function inputs and outputs must be serializable.\n * - The wrapped function can only be called from within an entrypoint or StateGraph.\n * - Calling the function produces a promise. This makes it easy to parallelize tasks.\n *\n * @typeParam ArgsT - The type of arguments the task function accepts\n * @typeParam OutputT - The type of value the task function returns\n * @param optionsOrName - Either an {@link TaskOptions} object, or a string for the name of the task\n * @param func - The function that executes this task\n * @returns A proxy function that accepts the same arguments as the original and always returns the result as a Promise\n *\n * @example basic example\n * ```typescript\n * const addOne = task(\"add\", async (a: number) => a + 1);\n *\n * const workflow = entrypoint(\"example\", async (numbers: number[]) => {\n * const promises = numbers.map(n => addOne(n));\n * const results = await Promise.all(promises);\n * return results;\n * });\n *\n * // Call the entrypoint\n * await workflow.invoke([1, 2, 3]); // Returns [2, 3, 4]\n * ```\n *\n * @example using a retry policy\n * ```typescript\n * const addOne = task({\n * name: \"add\",\n * retry: { maxAttempts: 3 }\n * },\n * async (a: number) => a + 1\n * );\n *\n * const workflow = entrypoint(\"example\", async (numbers: number[]) => {\n * const promises = numbers.map(n => addOne(n));\n * const results = await Promise.all(promises);\n * return results;\n * });\n * ```\n * @category Functional API\n */\nexport function task<ArgsT extends unknown[], OutputT>(\n optionsOrName: TaskOptions | string,\n func: TaskFunc<ArgsT, OutputT>\n): (...args: ArgsT) => Promise<OutputT> {\n const options =\n typeof optionsOrName === \"string\"\n ? { name: optionsOrName, retry: undefined, cachePolicy: undefined }\n : optionsOrName;\n\n const { name, retry } = options;\n if (isAsyncGeneratorFunction(func) || isGeneratorFunction(func)) {\n throw new Error(\n \"Generators are disallowed as tasks. For streaming responses, use config.write.\"\n );\n }\n\n const cachePolicy =\n options.cachePolicy ??\n // `cache` was mistakingly used as an alias for `cachePolicy` in v0.3.x,\n // TODO: remove in 1.x\n (\"cache\" in options ? (options.cache as CachePolicy) : undefined);\n\n let cache: CachePolicy | undefined;\n if (typeof cachePolicy === \"boolean\") {\n cache = cachePolicy ? {} : undefined;\n } else {\n cache = cachePolicy;\n }\n\n return (...args: ArgsT) => {\n return call({ func, name, retry, cache }, ...args);\n };\n}\n\n/**\n * Options for the {@link entrypoint} function\n */\nexport type EntrypointOptions = {\n /**\n * The name of the {@link entrypoint}, analogous to the node name in {@link StateGraph}.\n * This name is used for logging, debugging, and checkpoint identification.\n */\n name: string;\n /**\n * The checkpointer for the {@link entrypoint}. Used to save and restore state between\n * invocations of the workflow.\n */\n checkpointer?: BaseCheckpointSaver;\n /**\n * The store for the {@link entrypoint}. Used to persist data across workflow runs.\n */\n store?: BaseStore;\n\n /**\n * The cache for the {@link entrypoint}. Used to cache values between workflow runs.\n */\n cache?: BaseCache;\n};\n\n/**\n * Type declaration for the entrypoint function with its properties\n * @category Functional API\n */\nexport interface EntrypointFunction {\n <InputT, OutputT>(\n optionsOrName: EntrypointOptions | string,\n func: EntrypointFunc<InputT, OutputT>\n ): Pregel<\n Record<string, PregelNode<InputT, EntrypointReturnT<OutputT>>>,\n {\n [START]: EphemeralValue<InputT>;\n [END]: LastValue<EntrypointReturnT<OutputT>>;\n [PREVIOUS]: LastValue<EntrypointFinalSaveT<OutputT>>;\n },\n Record<string, unknown>,\n InputT,\n EntrypointReturnT<OutputT>,\n // Because the update type is an return type union of tasks + entrypoint,\n // thus we can't type it properly.\n any, // eslint-disable-line @typescript-eslint/no-explicit-any\n Awaited<EntrypointReturnT<OutputT>>\n >;\n\n /**\n * A helper utility for use with the functional API that returns a value to the caller,\n * as well as a separate state value to persist to the checkpoint. This allows workflows\n * to maintain state between runs while returning different values to the caller.\n *\n * @typeParam ValueT - The type of the value to return to the caller\n * @typeParam SaveT - The type of the state to save to the checkpoint\n * @param value - The value to return to the caller\n * @param save - The value to save to the checkpoint\n * @returns An object with the value and save properties\n *\n * @example\n * ```typescript\n * return entrypoint.final({\n * value: \"result for caller\",\n * save: { counter: currentCount + 1 }\n * });\n * ```\n */\n final<ValueT, SaveT>(options: {\n value?: ValueT;\n save?: SaveT;\n }): EntrypointFinal<ValueT, SaveT>;\n}\n\n/**\n * Define a LangGraph workflow using the `entrypoint` function.\n *\n * ### Function signature\n *\n * The wrapped function must accept at most **two parameters**. The first parameter\n * is the input to the function. The second (optional) parameter is a\n * {@link LangGraphRunnableConfig} object. If you wish to pass multiple parameters to\n * the function, you can pass them as an object.\n *\n * ### Helper functions\n *\n * #### Streaming\n * To write data to the \"custom\" stream, use the {@link getWriter} function, or the\n * {@link LangGraphRunnableConfig.writer} property.\n *\n * #### State management\n * The {@link getPreviousState} function can be used to access the previous state\n * that was returned from the last invocation of the entrypoint on the same thread id.\n *\n * If you wish to save state other than the return value, you can use the\n * {@link entrypoint.final} function.\n *\n * @typeParam InputT - The type of input the entrypoint accepts\n * @typeParam OutputT - The type of output the entrypoint produces\n * @param optionsOrName - Either an {@link EntrypointOptions} object, or a string for the name of the entrypoint\n * @param func - The function that executes this entrypoint\n * @returns A {@link Pregel} instance that can be run to execute the workflow\n *\n * @example Using entrypoint and tasks\n * ```typescript\n * import { task, entrypoint } from \"@langchain/langgraph\";\n * import { MemorySaver } from \"@langchain/langgraph-checkpoint\";\n * import { interrupt, Command } from \"@langchain/langgraph\";\n *\n * const composeEssay = task(\"compose\", async (topic: string) => {\n * await new Promise(r => setTimeout(r, 1000)); // Simulate slow operation\n * return `An essay about ${topic}`;\n * });\n *\n * const reviewWorkflow = entrypoint({\n * name: \"review\",\n * checkpointer: new MemorySaver()\n * }, async (topic: string) => {\n * const essay = await composeEssay(topic);\n * const humanReview = await interrupt({\n * question: \"Please provide a review\",\n * essay\n * });\n * return {\n * essay,\n * review: humanReview\n * };\n * });\n *\n * // Example configuration for the workflow\n * const config = {\n * configurable: {\n * thread_id: \"some_thread\"\n * }\n * };\n *\n * // Topic for the essay\n * const topic = \"cats\";\n *\n * // Stream the workflow to generate the essay and await human review\n * for await (const result of reviewWorkflow.stream(topic, config)) {\n * console.log(result);\n * }\n *\n * // Example human review provided after the interrupt\n * const humanReview = \"This essay is great.\";\n *\n * // Resume the workflow with the provided human review\n * for await (const result of reviewWorkflow.stream(new Command({ resume: humanReview }), config)) {\n * console.log(result);\n * }\n * ```\n *\n * @example Accessing the previous return value\n * ```typescript\n * import { entrypoint, getPreviousState } from \"@langchain/langgraph\";\n * import { MemorySaver } from \"@langchain/langgraph-checkpoint\";\n *\n * const accumulator = entrypoint({\n * name: \"accumulator\",\n * checkpointer: new MemorySaver()\n * }, async (input: string) => {\n * const previous = getPreviousState<number>();\n * return previous !== undefined ? `${previous } ${input}` : input;\n * });\n *\n * const config = {\n * configurable: {\n * thread_id: \"some_thread\"\n * }\n * };\n * await accumulator.invoke(\"hello\", config); // returns \"hello\"\n * await accumulator.invoke(\"world\", config); // returns \"hello world\"\n * ```\n *\n * @example Using entrypoint.final to save a value\n * ```typescript\n * import { entrypoint, getPreviousState } from \"@langchain/langgraph\";\n * import { MemorySaver } from \"@langchain/langgraph-checkpoint\";\n *\n * const myWorkflow = entrypoint({\n * name: \"accumulator\",\n * checkpointer: new MemorySaver()\n * }, async (num: number) => {\n * const previous = getPreviousState<number>();\n *\n * // This will return the previous value to the caller, saving\n * // 2 * num to the checkpoint, which will be used in the next invocation\n * // for the `previous` parameter.\n * return entrypoint.final({\n * value: previous ?? 0,\n * save: 2 * num\n * });\n * });\n *\n * const config = {\n * configurable: {\n * thread_id: \"some_thread\"\n * }\n * };\n *\n * await myWorkflow.invoke(3, config); // 0 (previous was undefined)\n * await myWorkflow.invoke(1, config); // 6 (previous was 3 * 2 from the previous invocation)\n * ```\n * @category Functional API\n */\nexport const entrypoint = function entrypoint<InputT, OutputT>(\n optionsOrName: EntrypointOptions | string,\n func: EntrypointFunc<InputT, OutputT>\n) {\n const { name, checkpointer, store, cache } =\n typeof optionsOrName === \"string\"\n ? { name: optionsOrName, checkpointer: undefined, store: undefined }\n : optionsOrName;\n if (isAsyncGeneratorFunction(func) || isGeneratorFunction(func)) {\n throw new Error(\n \"Generators are disallowed as entrypoints. For streaming responses, use config.write.\"\n );\n }\n const streamMode = \"updates\";\n const bound = getRunnableForEntrypoint(name, func);\n\n // Helper to check if a value is an EntrypointFinal\n function isEntrypointFinal(\n value: unknown\n ): value is EntrypointFinal<unknown, unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"__lg_type\" in value &&\n value.__lg_type === \"__pregel_final\"\n );\n }\n\n // Helper function to pluck the return value from EntrypointFinal or passthrough\n const pluckReturnValue = new RunnableCallable({\n name: \"pluckReturnValue\",\n func: (value: unknown) => {\n return isEntrypointFinal(value) ? value.value : value;\n },\n });\n\n // Helper function to pluck the save value from EntrypointFinal or passthrough\n const pluckSaveValue = new RunnableCallable({\n name: \"pluckSaveValue\",\n func: (value: unknown) => {\n return isEntrypointFinal(value) ? value.save : value;\n },\n });\n\n const entrypointNode = new PregelNode<InputT, EntrypointReturnT<OutputT>>({\n bound,\n triggers: [START],\n channels: [START],\n writers: [\n new ChannelWrite(\n [\n { channel: END, value: PASSTHROUGH, mapper: pluckReturnValue },\n { channel: PREVIOUS, value: PASSTHROUGH, mapper: pluckSaveValue },\n ],\n [TAG_HIDDEN]\n ),\n ],\n });\n\n return new Pregel<\n Record<string, PregelNode<InputT, EntrypointReturnT<OutputT>>>, // node types\n {\n [START]: EphemeralValue<InputT>;\n [END]: LastValue<EntrypointReturnT<OutputT>>;\n [PREVIOUS]: LastValue<EntrypointFinalSaveT<OutputT>>;\n }, // channel types\n Record<string, unknown>, // configurable types\n InputT, // input type\n EntrypointReturnT<OutputT> // output type\n >({\n name,\n checkpointer,\n nodes: {\n [name]: entrypointNode,\n },\n channels: {\n [START]: new EphemeralValue<InputT>(),\n [END]: new LastValue<EntrypointReturnT<OutputT>>(),\n [PREVIOUS]: new LastValue<EntrypointFinalSaveT<OutputT>>(),\n },\n inputChannels: START,\n outputChannels: END,\n streamChannels: END,\n streamMode,\n store,\n cache,\n });\n} as EntrypointFunction;\n\n// documented by the EntrypointFunction interface\nentrypoint.final = function final<ValueT, SaveT>({\n value,\n save,\n}: {\n value?: ValueT;\n save?: SaveT;\n}): EntrypointFinal<ValueT, SaveT> {\n return { value, save, __lg_type: \"__pregel_final\" };\n};\n\n/**\n * A helper utility function for use with the functional API that returns the previous\n * state from the checkpoint from the last invocation of the current thread.\n *\n * This function allows workflows to access state that was saved in previous runs\n * using {@link entrypoint.final}.\n *\n * @typeParam StateT - The type of the state that was previously saved\n * @returns The previous saved state from the last invocation of the current thread\n *\n * @example\n * ```typescript\n * const previousState = getPreviousState<{ counter: number }>();\n * const newCount = (previousState?.counter ?? 0) + 1;\n * ```\n * @category Functional API\n */\nexport function getPreviousState<StateT>(): StateT {\n const config: LangGraphRunnableConfig =\n AsyncLocalStorageProviderSingleton.getRunnableConfig();\n return config.configurable?.[CONFIG_KEY_PREVIOUS_STATE] as StateT;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqGA,SAAgB,KACd,eACA,MACsC;CACtC,MAAM,UACJ,OAAO,kBAAkB,WACrB;EAAE,MAAM;EAAe,OAAO;EAAW,aAAa;KACtD;CAEN,MAAM,EAAE,MAAM,UAAU;AACxB,KAAI,yBAAyB,SAAS,oBAAoB,MACxD,OAAM,IAAI,MACR;CAIJ,MAAM,cACJ,QAAQ,gBAGP,WAAW,UAAW,QAAQ,QAAwB;CAEzD,IAAIA;AACJ,KAAI,OAAO,gBAAgB,UACzB,SAAQ,cAAc,KAAK;KAE3B,SAAQ;AAGV,SAAQ,GAAG,SAAgB;AACzB,SAAO,KAAK;GAAE;GAAM;GAAM;GAAO;KAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkNjD,MAAa,aAAa,SAASC,aACjC,eACA,MACA;CACA,MAAM,EAAE,MAAM,cAAc,OAAO,UACjC,OAAO,kBAAkB,WACrB;EAAE,MAAM;EAAe,cAAc;EAAW,OAAO;KACvD;AACN,KAAI,yBAAyB,SAAS,oBAAoB,MACxD,OAAM,IAAI,MACR;CAGJ,MAAM,aAAa;CACnB,MAAM,QAAQ,yBAAyB,MAAM;CAG7C,SAAS,kBACP,OAC4C;AAC5C,SACE,OAAO,UAAU,YACjB,UAAU,QACV,eAAe,SACf,MAAM,cAAc;;CAKxB,MAAM,mBAAmB,IAAI,iBAAiB;EAC5C,MAAM;EACN,OAAO,UAAmB;AACxB,UAAO,kBAAkB,SAAS,MAAM,QAAQ;;;CAKpD,MAAM,iBAAiB,IAAI,iBAAiB;EAC1C,MAAM;EACN,OAAO,UAAmB;AACxB,UAAO,kBAAkB,SAAS,MAAM,OAAO;;;CAInD,MAAM,iBAAiB,IAAI,WAA+C;EACxE;EACA,UAAU,CAAC;EACX,UAAU,CAAC;EACX,SAAS,CACP,IAAI,aACF,CACE;GAAE,SAAS;GAAK,OAAO;GAAa,QAAQ;KAC5C;GAAE,SAAS;GAAU,OAAO;GAAa,QAAQ;MAEnD,CAAC;;AAKP,QAAO,IAAI,OAUT;EACA;EACA;EACA,OAAO,GACJ,OAAO;EAEV,UAAU;IACP,QAAQ,IAAI;IACZ,MAAM,IAAI;IACV,WAAW,IAAI;;EAElB,eAAe;EACf,gBAAgB;EAChB,gBAAgB;EAChB;EACA;EACA;;;AAKJ,WAAW,QAAQ,SAAS,MAAqB,EAC/C,OACA,QAIiC;AACjC,QAAO;EAAE;EAAO;EAAM,WAAW;;;;;;;;;;;;;;;;;;;;AAoBnC,SAAgB,mBAAmC;CACjD,MAAMC,SACJ,mCAAmC;AACrC,QAAO,OAAO,eAAe"}