@langchain/langgraph 1.2.1 → 1.2.3

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 (272) hide show
  1. package/dist/channels/any_value.cjs +3 -4
  2. package/dist/channels/any_value.cjs.map +1 -1
  3. package/dist/channels/any_value.js +1 -2
  4. package/dist/channels/any_value.js.map +1 -1
  5. package/dist/channels/base.cjs +2 -3
  6. package/dist/channels/base.cjs.map +1 -1
  7. package/dist/channels/base.js +1 -2
  8. package/dist/channels/base.js.map +1 -1
  9. package/dist/channels/binop.cjs +4 -5
  10. package/dist/channels/binop.cjs.map +1 -1
  11. package/dist/channels/binop.js +1 -2
  12. package/dist/channels/binop.js.map +1 -1
  13. package/dist/channels/dynamic_barrier_value.cjs +4 -5
  14. package/dist/channels/dynamic_barrier_value.cjs.map +1 -1
  15. package/dist/channels/dynamic_barrier_value.js +1 -2
  16. package/dist/channels/dynamic_barrier_value.js.map +1 -1
  17. package/dist/channels/ephemeral_value.cjs +3 -4
  18. package/dist/channels/ephemeral_value.cjs.map +1 -1
  19. package/dist/channels/ephemeral_value.js +1 -2
  20. package/dist/channels/ephemeral_value.js.map +1 -1
  21. package/dist/channels/index.cjs +11 -12
  22. package/dist/channels/index.js +1 -2
  23. package/dist/channels/last_value.cjs +3 -4
  24. package/dist/channels/last_value.cjs.map +1 -1
  25. package/dist/channels/last_value.js +1 -2
  26. package/dist/channels/last_value.js.map +1 -1
  27. package/dist/channels/named_barrier_value.cjs +3 -4
  28. package/dist/channels/named_barrier_value.cjs.map +1 -1
  29. package/dist/channels/named_barrier_value.js +1 -2
  30. package/dist/channels/named_barrier_value.js.map +1 -1
  31. package/dist/channels/topic.cjs +3 -4
  32. package/dist/channels/topic.cjs.map +1 -1
  33. package/dist/channels/topic.js +1 -2
  34. package/dist/channels/topic.js.map +1 -1
  35. package/dist/channels/untracked_value.cjs +3 -4
  36. package/dist/channels/untracked_value.cjs.map +1 -1
  37. package/dist/channels/untracked_value.js +1 -2
  38. package/dist/channels/untracked_value.js.map +1 -1
  39. package/dist/constants.cjs +4 -9
  40. package/dist/constants.cjs.map +1 -1
  41. package/dist/constants.js +5 -7
  42. package/dist/constants.js.map +1 -1
  43. package/dist/errors.cjs +1 -2
  44. package/dist/errors.cjs.map +1 -1
  45. package/dist/errors.js +1 -1
  46. package/dist/errors.js.map +1 -1
  47. package/dist/func/index.cjs +9 -10
  48. package/dist/func/index.cjs.map +1 -1
  49. package/dist/func/index.js +1 -2
  50. package/dist/func/index.js.map +1 -1
  51. package/dist/graph/annotation.cjs +3 -4
  52. package/dist/graph/annotation.cjs.map +1 -1
  53. package/dist/graph/annotation.js +1 -2
  54. package/dist/graph/annotation.js.map +1 -1
  55. package/dist/graph/graph.cjs +23 -24
  56. package/dist/graph/graph.cjs.map +1 -1
  57. package/dist/graph/graph.js +16 -17
  58. package/dist/graph/graph.js.map +1 -1
  59. package/dist/graph/index.cjs +6 -6
  60. package/dist/graph/index.js +7 -8
  61. package/dist/graph/message.cjs +4 -5
  62. package/dist/graph/message.cjs.map +1 -1
  63. package/dist/graph/message.js +1 -2
  64. package/dist/graph/message.js.map +1 -1
  65. package/dist/graph/messages_annotation.cjs +4 -5
  66. package/dist/graph/messages_annotation.cjs.map +1 -1
  67. package/dist/graph/messages_annotation.d.ts +0 -1
  68. package/dist/graph/messages_annotation.d.ts.map +1 -1
  69. package/dist/graph/messages_annotation.js +1 -2
  70. package/dist/graph/messages_annotation.js.map +1 -1
  71. package/dist/graph/messages_reducer.cjs +2 -3
  72. package/dist/graph/messages_reducer.cjs.map +1 -1
  73. package/dist/graph/messages_reducer.js +2 -3
  74. package/dist/graph/messages_reducer.js.map +1 -1
  75. package/dist/graph/state.cjs +24 -25
  76. package/dist/graph/state.cjs.map +1 -1
  77. package/dist/graph/state.js +10 -11
  78. package/dist/graph/state.js.map +1 -1
  79. package/dist/graph/types.cjs +4 -5
  80. package/dist/graph/types.cjs.map +1 -1
  81. package/dist/graph/types.js +2 -3
  82. package/dist/graph/types.js.map +1 -1
  83. package/dist/graph/zod/index.cjs +5 -6
  84. package/dist/graph/zod/index.d.cts +0 -1
  85. package/dist/graph/zod/index.d.ts +0 -1
  86. package/dist/graph/zod/index.js +1 -2
  87. package/dist/graph/zod/meta.cjs +4 -5
  88. package/dist/graph/zod/meta.cjs.map +1 -1
  89. package/dist/graph/zod/meta.js +2 -3
  90. package/dist/graph/zod/meta.js.map +1 -1
  91. package/dist/graph/zod/plugin.cjs +2 -3
  92. package/dist/graph/zod/plugin.cjs.map +1 -1
  93. package/dist/graph/zod/plugin.js +2 -3
  94. package/dist/graph/zod/plugin.js.map +1 -1
  95. package/dist/graph/zod/schema.cjs +5 -6
  96. package/dist/graph/zod/schema.cjs.map +1 -1
  97. package/dist/graph/zod/schema.js +4 -5
  98. package/dist/graph/zod/schema.js.map +1 -1
  99. package/dist/graph/zod/zod-registry.cjs +2 -3
  100. package/dist/graph/zod/zod-registry.cjs.map +1 -1
  101. package/dist/graph/zod/zod-registry.js +1 -2
  102. package/dist/graph/zod/zod-registry.js.map +1 -1
  103. package/dist/hash.cjs +1 -2
  104. package/dist/hash.cjs.map +1 -1
  105. package/dist/hash.js +1 -1
  106. package/dist/index.cjs +60 -61
  107. package/dist/index.cjs.map +1 -1
  108. package/dist/index.js +1 -2
  109. package/dist/index.js.map +1 -1
  110. package/dist/interrupt.cjs +7 -8
  111. package/dist/interrupt.cjs.map +1 -1
  112. package/dist/interrupt.js +5 -6
  113. package/dist/interrupt.js.map +1 -1
  114. package/dist/prebuilt/agentName.cjs +1 -2
  115. package/dist/prebuilt/agentName.cjs.map +1 -1
  116. package/dist/prebuilt/agentName.js +1 -2
  117. package/dist/prebuilt/agentName.js.map +1 -1
  118. package/dist/prebuilt/agent_executor.cjs +4 -5
  119. package/dist/prebuilt/agent_executor.cjs.map +1 -1
  120. package/dist/prebuilt/agent_executor.d.ts +0 -1
  121. package/dist/prebuilt/agent_executor.d.ts.map +1 -1
  122. package/dist/prebuilt/agent_executor.js +1 -2
  123. package/dist/prebuilt/agent_executor.js.map +1 -1
  124. package/dist/prebuilt/chat_agent_executor.cjs +4 -5
  125. package/dist/prebuilt/chat_agent_executor.cjs.map +1 -1
  126. package/dist/prebuilt/chat_agent_executor.js +1 -2
  127. package/dist/prebuilt/chat_agent_executor.js.map +1 -1
  128. package/dist/prebuilt/index.cjs +8 -9
  129. package/dist/prebuilt/index.js +1 -2
  130. package/dist/prebuilt/react_agent_executor.cjs +8 -9
  131. package/dist/prebuilt/react_agent_executor.cjs.map +1 -1
  132. package/dist/prebuilt/react_agent_executor.d.ts +0 -2
  133. package/dist/prebuilt/react_agent_executor.d.ts.map +1 -1
  134. package/dist/prebuilt/react_agent_executor.js +1 -2
  135. package/dist/prebuilt/react_agent_executor.js.map +1 -1
  136. package/dist/prebuilt/tool_executor.cjs +1 -2
  137. package/dist/prebuilt/tool_executor.cjs.map +1 -1
  138. package/dist/prebuilt/tool_executor.js +1 -2
  139. package/dist/prebuilt/tool_executor.js.map +1 -1
  140. package/dist/prebuilt/tool_node.cjs +4 -5
  141. package/dist/prebuilt/tool_node.cjs.map +1 -1
  142. package/dist/prebuilt/tool_node.js +1 -2
  143. package/dist/prebuilt/tool_node.js.map +1 -1
  144. package/dist/pregel/algo.cjs +30 -31
  145. package/dist/pregel/algo.cjs.map +1 -1
  146. package/dist/pregel/algo.d.ts +0 -5
  147. package/dist/pregel/algo.d.ts.map +1 -1
  148. package/dist/pregel/algo.js +23 -24
  149. package/dist/pregel/algo.js.map +1 -1
  150. package/dist/pregel/call.cjs +5 -6
  151. package/dist/pregel/call.cjs.map +1 -1
  152. package/dist/pregel/call.js +2 -3
  153. package/dist/pregel/call.js.map +1 -1
  154. package/dist/pregel/debug.cjs +10 -11
  155. package/dist/pregel/debug.cjs.map +1 -1
  156. package/dist/pregel/debug.js +8 -9
  157. package/dist/pregel/debug.js.map +1 -1
  158. package/dist/pregel/index.cjs +47 -48
  159. package/dist/pregel/index.cjs.map +1 -1
  160. package/dist/pregel/index.js +28 -29
  161. package/dist/pregel/index.js.map +1 -1
  162. package/dist/pregel/io.cjs +7 -8
  163. package/dist/pregel/io.cjs.map +1 -1
  164. package/dist/pregel/io.js +5 -6
  165. package/dist/pregel/io.js.map +1 -1
  166. package/dist/pregel/loop.cjs +29 -30
  167. package/dist/pregel/loop.cjs.map +1 -1
  168. package/dist/pregel/loop.js +20 -21
  169. package/dist/pregel/loop.js.map +1 -1
  170. package/dist/pregel/messages.cjs +4 -5
  171. package/dist/pregel/messages.cjs.map +1 -1
  172. package/dist/pregel/messages.js +4 -5
  173. package/dist/pregel/messages.js.map +1 -1
  174. package/dist/pregel/read.cjs +4 -5
  175. package/dist/pregel/read.cjs.map +1 -1
  176. package/dist/pregel/read.d.ts +0 -1
  177. package/dist/pregel/read.d.ts.map +1 -1
  178. package/dist/pregel/read.js +1 -2
  179. package/dist/pregel/read.js.map +1 -1
  180. package/dist/pregel/remote.cjs +9 -10
  181. package/dist/pregel/remote.cjs.map +1 -1
  182. package/dist/pregel/remote.d.ts +0 -2
  183. package/dist/pregel/remote.d.ts.map +1 -1
  184. package/dist/pregel/remote.js +7 -8
  185. package/dist/pregel/remote.js.map +1 -1
  186. package/dist/pregel/retry.cjs +8 -14
  187. package/dist/pregel/retry.cjs.map +1 -1
  188. package/dist/pregel/retry.js +4 -10
  189. package/dist/pregel/retry.js.map +1 -1
  190. package/dist/pregel/runner.cjs +8 -9
  191. package/dist/pregel/runner.cjs.map +1 -1
  192. package/dist/pregel/runner.js +4 -5
  193. package/dist/pregel/runner.js.map +1 -1
  194. package/dist/pregel/stream.cjs +3 -4
  195. package/dist/pregel/stream.cjs.map +1 -1
  196. package/dist/pregel/stream.d.ts +0 -1
  197. package/dist/pregel/stream.js +3 -4
  198. package/dist/pregel/stream.js.map +1 -1
  199. package/dist/pregel/types.cjs +1 -2
  200. package/dist/pregel/types.cjs.map +1 -1
  201. package/dist/pregel/types.js +1 -1
  202. package/dist/pregel/types.js.map +1 -1
  203. package/dist/pregel/utils/config.cjs +6 -7
  204. package/dist/pregel/utils/config.cjs.map +1 -1
  205. package/dist/pregel/utils/config.js +6 -7
  206. package/dist/pregel/utils/config.js.map +1 -1
  207. package/dist/pregel/utils/index.cjs +2 -3
  208. package/dist/pregel/utils/index.cjs.map +1 -1
  209. package/dist/pregel/utils/index.js +1 -2
  210. package/dist/pregel/utils/index.js.map +1 -1
  211. package/dist/pregel/utils/subgraph.cjs +1 -2
  212. package/dist/pregel/utils/subgraph.cjs.map +1 -1
  213. package/dist/pregel/utils/subgraph.js +1 -1
  214. package/dist/pregel/validate.cjs +4 -5
  215. package/dist/pregel/validate.cjs.map +1 -1
  216. package/dist/pregel/validate.js +2 -3
  217. package/dist/pregel/validate.js.map +1 -1
  218. package/dist/pregel/write.cjs +5 -8
  219. package/dist/pregel/write.cjs.map +1 -1
  220. package/dist/pregel/write.js +2 -5
  221. package/dist/pregel/write.js.map +1 -1
  222. package/dist/remote.cjs +3 -4
  223. package/dist/remote.js +1 -2
  224. package/dist/setup/async_local_storage.cjs +1 -2
  225. package/dist/setup/async_local_storage.cjs.map +1 -1
  226. package/dist/setup/async_local_storage.js +1 -2
  227. package/dist/setup/async_local_storage.js.map +1 -1
  228. package/dist/state/adapter.cjs +2 -3
  229. package/dist/state/adapter.cjs.map +1 -1
  230. package/dist/state/adapter.js +1 -2
  231. package/dist/state/adapter.js.map +1 -1
  232. package/dist/state/index.cjs +8 -8
  233. package/dist/state/index.d.ts +1 -2
  234. package/dist/state/index.js +7 -8
  235. package/dist/state/prebuilt/index.cjs +1 -1
  236. package/dist/state/prebuilt/index.js +2 -3
  237. package/dist/state/prebuilt/messages.cjs +3 -4
  238. package/dist/state/prebuilt/messages.cjs.map +1 -1
  239. package/dist/state/prebuilt/messages.js +3 -7
  240. package/dist/state/prebuilt/messages.js.map +1 -1
  241. package/dist/state/schema.cjs +16 -12
  242. package/dist/state/schema.cjs.map +1 -1
  243. package/dist/state/schema.d.cts.map +1 -1
  244. package/dist/state/schema.d.ts +0 -1
  245. package/dist/state/schema.d.ts.map +1 -1
  246. package/dist/state/schema.js +8 -4
  247. package/dist/state/schema.js.map +1 -1
  248. package/dist/state/types.cjs +1 -2
  249. package/dist/state/types.cjs.map +1 -1
  250. package/dist/state/types.js +1 -1
  251. package/dist/state/values/index.cjs +2 -2
  252. package/dist/state/values/index.js +3 -4
  253. package/dist/state/values/reduced.cjs +1 -2
  254. package/dist/state/values/reduced.cjs.map +1 -1
  255. package/dist/state/values/reduced.js +1 -1
  256. package/dist/state/values/reduced.js.map +1 -1
  257. package/dist/state/values/untracked.cjs +1 -2
  258. package/dist/state/values/untracked.cjs.map +1 -1
  259. package/dist/state/values/untracked.js +1 -1
  260. package/dist/state/values/untracked.js.map +1 -1
  261. package/dist/utils.cjs +2 -3
  262. package/dist/utils.cjs.map +1 -1
  263. package/dist/utils.js +1 -2
  264. package/dist/utils.js.map +1 -1
  265. package/dist/web.cjs +58 -59
  266. package/dist/web.d.ts +0 -3
  267. package/dist/web.js +1 -2
  268. package/dist/writer.cjs +1 -2
  269. package/dist/writer.cjs.map +1 -1
  270. package/dist/writer.js +1 -2
  271. package/dist/writer.js.map +1 -1
  272. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/pregel/utils/index.ts"],"sourcesContent":["import { Callbacks } from \"@langchain/core/callbacks/manager\";\nimport { RunnableConfig } from \"@langchain/core/runnables\";\nimport type {\n ChannelVersions,\n CheckpointMetadata,\n} from \"@langchain/langgraph-checkpoint\";\nimport { CONFIG_KEY_CHECKPOINT_MAP, START } from \"../../constants.js\";\n\nexport function getNullChannelVersion(currentVersions: ChannelVersions) {\n // Short circuit for commonly used channels such as __start__\n // (used by StateGraph)\n const startVersion = typeof currentVersions[START];\n if (startVersion === \"number\") return 0;\n if (startVersion === \"string\") return \"\";\n\n // Defer back to obtaining a first key from channel versions\n for (const key in currentVersions) {\n if (!Object.prototype.hasOwnProperty.call(currentVersions, key)) continue;\n const versionType = typeof currentVersions[key];\n if (versionType === \"number\") return 0;\n if (versionType === \"string\") return \"\";\n break;\n }\n\n return undefined;\n}\n\nexport function getNewChannelVersions(\n previousVersions: ChannelVersions,\n currentVersions: ChannelVersions\n): ChannelVersions {\n // Get new channel versions\n if (Object.keys(previousVersions).length > 0) {\n const nullVersion = getNullChannelVersion(currentVersions);\n return Object.fromEntries(\n Object.entries(currentVersions).filter(\n ([k, v]) => v > (previousVersions[k] ?? nullVersion)\n )\n );\n } else {\n return currentVersions;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _coerceToDict(value: any, defaultKey: string) {\n return value &&\n !Array.isArray(value) &&\n // eslint-disable-next-line no-instanceof/no-instanceof\n !(value instanceof Date) &&\n typeof value === \"object\"\n ? value\n : { [defaultKey]: value };\n}\n\nexport type RetryPolicy = {\n /**\n * Amount of time that must elapse before the first retry occurs in milliseconds.\n * @default 500\n */\n initialInterval?: number;\n\n /**\n * Multiplier by which the interval increases after each retry.\n * @default 2\n */\n backoffFactor?: number;\n\n /**\n * Maximum amount of time that may elapse between retries in milliseconds.\n * @default 128000\n */\n maxInterval?: number;\n\n /**\n * Maximum amount of time that may elapse between retries.\n * @default 3\n */\n maxAttempts?: number;\n\n /** Whether to add random jitter to the interval between retries. */\n jitter?: boolean;\n\n /** A function that returns True for exceptions that should trigger a retry. */\n retryOn?: (e: any) => boolean; // eslint-disable-line @typescript-eslint/no-explicit-any\n\n /** Whether to log a warning when a retry is attempted. Defaults to true. */\n logWarning?: boolean;\n};\n\n/**\n * Configuration for caching nodes.\n */\nexport type CachePolicy = {\n /**\n * A function used to generate a cache key from node's input.\n * @returns A key for the cache.\n */\n keyFunc?: (args: unknown[]) => string;\n\n /**\n * The time to live for the cache in seconds.\n * If not defined, the entry will never expire.\n */\n ttl?: number;\n};\n\nexport function patchConfigurable(\n config: RunnableConfig | undefined,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch: Record<string, any>\n): RunnableConfig {\n if (config === null) {\n return { configurable: patch };\n } else if (config?.configurable === undefined) {\n return { ...config, configurable: patch };\n } else {\n return {\n ...config,\n configurable: { ...config.configurable, ...patch },\n };\n }\n}\n\nexport function patchCheckpointMap(\n config: RunnableConfig,\n metadata?: CheckpointMetadata\n): RunnableConfig {\n const parents = metadata?.parents ?? {};\n\n if (Object.keys(parents).length > 0) {\n return patchConfigurable(config, {\n [CONFIG_KEY_CHECKPOINT_MAP]: {\n ...parents,\n [config.configurable?.checkpoint_ns ?? \"\"]:\n config.configurable?.checkpoint_id,\n },\n });\n } else {\n return config;\n }\n}\n\n/**\n * Combine multiple abort signals into a single abort signal.\n * @param signals - The abort signals to combine.\n * @returns A combined abort signal and a dispose function to remove the abort listener if unused.\n */\nexport function combineAbortSignals(...x: (AbortSignal | undefined)[]): {\n signal: AbortSignal | undefined;\n dispose?: () => void;\n} {\n const signals = [...new Set(x.filter(Boolean))] as AbortSignal[];\n\n if (signals.length === 0) {\n return { signal: undefined, dispose: undefined };\n }\n\n if (signals.length === 1) {\n return { signal: signals[0], dispose: undefined };\n }\n\n const combinedController = new AbortController();\n const listener = () => {\n const reason = signals.find((s) => s.aborted)?.reason;\n combinedController.abort(reason);\n signals.forEach((s) => s.removeEventListener(\"abort\", listener));\n };\n\n signals.forEach((s) => s.addEventListener(\"abort\", listener, { once: true }));\n\n const hasAlreadyAbortedSignal = signals.find((s) => s.aborted);\n if (hasAlreadyAbortedSignal) {\n combinedController.abort(hasAlreadyAbortedSignal.reason);\n }\n\n return {\n signal: combinedController.signal,\n dispose: () => {\n signals.forEach((s) => s.removeEventListener(\"abort\", listener));\n },\n };\n}\n\n/**\n * Combine multiple callbacks into a single callback.\n * @param callback1 - The first callback to combine.\n * @param callback2 - The second callback to combine.\n * @returns A single callback that is a combination of the input callbacks.\n */\nexport const combineCallbacks = (\n callback1?: Callbacks,\n callback2?: Callbacks\n): Callbacks | undefined => {\n if (!callback1 && !callback2) {\n return undefined;\n }\n\n if (!callback1) {\n return callback2;\n }\n\n if (!callback2) {\n return callback1;\n }\n if (Array.isArray(callback1) && Array.isArray(callback2)) {\n return [...callback1, ...callback2];\n }\n if (Array.isArray(callback1)) {\n return [...callback1, callback2] as Callbacks;\n }\n if (Array.isArray(callback2)) {\n return [callback1, ...callback2];\n }\n return [callback1, callback2] as Callbacks;\n};\n"],"mappings":";;;AAQA,SAAgB,sBAAsB,iBAAkC;CAGtE,MAAM,eAAe,OAAO,gBAAgB;AAC5C,KAAI,iBAAiB,SAAU,QAAO;AACtC,KAAI,iBAAiB,SAAU,QAAO;AAGtC,MAAK,MAAM,OAAO,iBAAiB;AACjC,MAAI,CAAC,OAAO,UAAU,eAAe,KAAK,iBAAiB,IAAI,CAAE;EACjE,MAAM,cAAc,OAAO,gBAAgB;AAC3C,MAAI,gBAAgB,SAAU,QAAO;AACrC,MAAI,gBAAgB,SAAU,QAAO;AACrC;;;AAMJ,SAAgB,sBACd,kBACA,iBACiB;AAEjB,KAAI,OAAO,KAAK,iBAAiB,CAAC,SAAS,GAAG;EAC5C,MAAM,cAAc,sBAAsB,gBAAgB;AAC1D,SAAO,OAAO,YACZ,OAAO,QAAQ,gBAAgB,CAAC,QAC7B,CAAC,GAAG,OAAO,KAAK,iBAAiB,MAAM,aACzC,CACF;OAED,QAAO;;AAKX,SAAgB,cAAc,OAAY,YAAoB;AAC5D,QAAO,SACL,CAAC,MAAM,QAAQ,MAAM,IAErB,EAAE,iBAAiB,SACnB,OAAO,UAAU,WACf,QACA,GAAG,aAAa,OAAO;;AAuD7B,SAAgB,kBACd,QAEA,OACgB;AAChB,KAAI,WAAW,KACb,QAAO,EAAE,cAAc,OAAO;UACrB,QAAQ,iBAAiB,OAClC,QAAO;EAAE,GAAG;EAAQ,cAAc;EAAO;KAEzC,QAAO;EACL,GAAG;EACH,cAAc;GAAE,GAAG,OAAO;GAAc,GAAG;GAAO;EACnD;;AAIL,SAAgB,mBACd,QACA,UACgB;CAChB,MAAM,UAAU,UAAU,WAAW,EAAE;AAEvC,KAAI,OAAO,KAAK,QAAQ,CAAC,SAAS,EAChC,QAAO,kBAAkB,QAAQ,GAC9B,4BAA4B;EAC3B,GAAG;GACF,OAAO,cAAc,iBAAiB,KACrC,OAAO,cAAc;EACxB,EACF,CAAC;KAEF,QAAO;;;;;;;AASX,SAAgB,oBAAoB,GAAG,GAGrC;CACA,MAAM,UAAU,CAAC,GAAG,IAAI,IAAI,EAAE,OAAO,QAAQ,CAAC,CAAC;AAE/C,KAAI,QAAQ,WAAW,EACrB,QAAO;EAAE,QAAQ;EAAW,SAAS;EAAW;AAGlD,KAAI,QAAQ,WAAW,EACrB,QAAO;EAAE,QAAQ,QAAQ;EAAI,SAAS;EAAW;CAGnD,MAAM,qBAAqB,IAAI,iBAAiB;CAChD,MAAM,iBAAiB;EACrB,MAAM,SAAS,QAAQ,MAAM,MAAM,EAAE,QAAQ,EAAE;AAC/C,qBAAmB,MAAM,OAAO;AAChC,UAAQ,SAAS,MAAM,EAAE,oBAAoB,SAAS,SAAS,CAAC;;AAGlE,SAAQ,SAAS,MAAM,EAAE,iBAAiB,SAAS,UAAU,EAAE,MAAM,MAAM,CAAC,CAAC;CAE7E,MAAM,0BAA0B,QAAQ,MAAM,MAAM,EAAE,QAAQ;AAC9D,KAAI,wBACF,oBAAmB,MAAM,wBAAwB,OAAO;AAG1D,QAAO;EACL,QAAQ,mBAAmB;EAC3B,eAAe;AACb,WAAQ,SAAS,MAAM,EAAE,oBAAoB,SAAS,SAAS,CAAC;;EAEnE;;;;;;;;AASH,MAAa,oBACX,WACA,cAC0B;AAC1B,KAAI,CAAC,aAAa,CAAC,UACjB;AAGF,KAAI,CAAC,UACH,QAAO;AAGT,KAAI,CAAC,UACH,QAAO;AAET,KAAI,MAAM,QAAQ,UAAU,IAAI,MAAM,QAAQ,UAAU,CACtD,QAAO,CAAC,GAAG,WAAW,GAAG,UAAU;AAErC,KAAI,MAAM,QAAQ,UAAU,CAC1B,QAAO,CAAC,GAAG,WAAW,UAAU;AAElC,KAAI,MAAM,QAAQ,UAAU,CAC1B,QAAO,CAAC,WAAW,GAAG,UAAU;AAElC,QAAO,CAAC,WAAW,UAAU"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/pregel/utils/index.ts"],"sourcesContent":["import { Callbacks } from \"@langchain/core/callbacks/manager\";\nimport { RunnableConfig } from \"@langchain/core/runnables\";\nimport type {\n ChannelVersions,\n CheckpointMetadata,\n} from \"@langchain/langgraph-checkpoint\";\nimport { CONFIG_KEY_CHECKPOINT_MAP, START } from \"../../constants.js\";\n\nexport function getNullChannelVersion(currentVersions: ChannelVersions) {\n // Short circuit for commonly used channels such as __start__\n // (used by StateGraph)\n const startVersion = typeof currentVersions[START];\n if (startVersion === \"number\") return 0;\n if (startVersion === \"string\") return \"\";\n\n // Defer back to obtaining a first key from channel versions\n for (const key in currentVersions) {\n if (!Object.prototype.hasOwnProperty.call(currentVersions, key)) continue;\n const versionType = typeof currentVersions[key];\n if (versionType === \"number\") return 0;\n if (versionType === \"string\") return \"\";\n break;\n }\n\n return undefined;\n}\n\nexport function getNewChannelVersions(\n previousVersions: ChannelVersions,\n currentVersions: ChannelVersions\n): ChannelVersions {\n // Get new channel versions\n if (Object.keys(previousVersions).length > 0) {\n const nullVersion = getNullChannelVersion(currentVersions);\n return Object.fromEntries(\n Object.entries(currentVersions).filter(\n ([k, v]) => v > (previousVersions[k] ?? nullVersion)\n )\n );\n } else {\n return currentVersions;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _coerceToDict(value: any, defaultKey: string) {\n return value &&\n !Array.isArray(value) &&\n // eslint-disable-next-line no-instanceof/no-instanceof\n !(value instanceof Date) &&\n typeof value === \"object\"\n ? value\n : { [defaultKey]: value };\n}\n\nexport type RetryPolicy = {\n /**\n * Amount of time that must elapse before the first retry occurs in milliseconds.\n * @default 500\n */\n initialInterval?: number;\n\n /**\n * Multiplier by which the interval increases after each retry.\n * @default 2\n */\n backoffFactor?: number;\n\n /**\n * Maximum amount of time that may elapse between retries in milliseconds.\n * @default 128000\n */\n maxInterval?: number;\n\n /**\n * Maximum amount of time that may elapse between retries.\n * @default 3\n */\n maxAttempts?: number;\n\n /** Whether to add random jitter to the interval between retries. */\n jitter?: boolean;\n\n /** A function that returns True for exceptions that should trigger a retry. */\n retryOn?: (e: any) => boolean; // eslint-disable-line @typescript-eslint/no-explicit-any\n\n /** Whether to log a warning when a retry is attempted. Defaults to true. */\n logWarning?: boolean;\n};\n\n/**\n * Configuration for caching nodes.\n */\nexport type CachePolicy = {\n /**\n * A function used to generate a cache key from node's input.\n * @returns A key for the cache.\n */\n keyFunc?: (args: unknown[]) => string;\n\n /**\n * The time to live for the cache in seconds.\n * If not defined, the entry will never expire.\n */\n ttl?: number;\n};\n\nexport function patchConfigurable(\n config: RunnableConfig | undefined,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n patch: Record<string, any>\n): RunnableConfig {\n if (config === null) {\n return { configurable: patch };\n } else if (config?.configurable === undefined) {\n return { ...config, configurable: patch };\n } else {\n return {\n ...config,\n configurable: { ...config.configurable, ...patch },\n };\n }\n}\n\nexport function patchCheckpointMap(\n config: RunnableConfig,\n metadata?: CheckpointMetadata\n): RunnableConfig {\n const parents = metadata?.parents ?? {};\n\n if (Object.keys(parents).length > 0) {\n return patchConfigurable(config, {\n [CONFIG_KEY_CHECKPOINT_MAP]: {\n ...parents,\n [config.configurable?.checkpoint_ns ?? \"\"]:\n config.configurable?.checkpoint_id,\n },\n });\n } else {\n return config;\n }\n}\n\n/**\n * Combine multiple abort signals into a single abort signal.\n * @param signals - The abort signals to combine.\n * @returns A combined abort signal and a dispose function to remove the abort listener if unused.\n */\nexport function combineAbortSignals(...x: (AbortSignal | undefined)[]): {\n signal: AbortSignal | undefined;\n dispose?: () => void;\n} {\n const signals = [...new Set(x.filter(Boolean))] as AbortSignal[];\n\n if (signals.length === 0) {\n return { signal: undefined, dispose: undefined };\n }\n\n if (signals.length === 1) {\n return { signal: signals[0], dispose: undefined };\n }\n\n const combinedController = new AbortController();\n const listener = () => {\n const reason = signals.find((s) => s.aborted)?.reason;\n combinedController.abort(reason);\n signals.forEach((s) => s.removeEventListener(\"abort\", listener));\n };\n\n signals.forEach((s) => s.addEventListener(\"abort\", listener, { once: true }));\n\n const hasAlreadyAbortedSignal = signals.find((s) => s.aborted);\n if (hasAlreadyAbortedSignal) {\n combinedController.abort(hasAlreadyAbortedSignal.reason);\n }\n\n return {\n signal: combinedController.signal,\n dispose: () => {\n signals.forEach((s) => s.removeEventListener(\"abort\", listener));\n },\n };\n}\n\n/**\n * Combine multiple callbacks into a single callback.\n * @param callback1 - The first callback to combine.\n * @param callback2 - The second callback to combine.\n * @returns A single callback that is a combination of the input callbacks.\n */\nexport const combineCallbacks = (\n callback1?: Callbacks,\n callback2?: Callbacks\n): Callbacks | undefined => {\n if (!callback1 && !callback2) {\n return undefined;\n }\n\n if (!callback1) {\n return callback2;\n }\n\n if (!callback2) {\n return callback1;\n }\n if (Array.isArray(callback1) && Array.isArray(callback2)) {\n return [...callback1, ...callback2];\n }\n if (Array.isArray(callback1)) {\n return [...callback1, callback2] as Callbacks;\n }\n if (Array.isArray(callback2)) {\n return [callback1, ...callback2];\n }\n return [callback1, callback2] as Callbacks;\n};\n"],"mappings":";;AAQA,SAAgB,sBAAsB,iBAAkC;CAGtE,MAAM,eAAe,OAAO,gBAAgB;AAC5C,KAAI,iBAAiB,SAAU,QAAO;AACtC,KAAI,iBAAiB,SAAU,QAAO;AAGtC,MAAK,MAAM,OAAO,iBAAiB;AACjC,MAAI,CAAC,OAAO,UAAU,eAAe,KAAK,iBAAiB,IAAI,CAAE;EACjE,MAAM,cAAc,OAAO,gBAAgB;AAC3C,MAAI,gBAAgB,SAAU,QAAO;AACrC,MAAI,gBAAgB,SAAU,QAAO;AACrC;;;AAMJ,SAAgB,sBACd,kBACA,iBACiB;AAEjB,KAAI,OAAO,KAAK,iBAAiB,CAAC,SAAS,GAAG;EAC5C,MAAM,cAAc,sBAAsB,gBAAgB;AAC1D,SAAO,OAAO,YACZ,OAAO,QAAQ,gBAAgB,CAAC,QAC7B,CAAC,GAAG,OAAO,KAAK,iBAAiB,MAAM,aACzC,CACF;OAED,QAAO;;AAKX,SAAgB,cAAc,OAAY,YAAoB;AAC5D,QAAO,SACL,CAAC,MAAM,QAAQ,MAAM,IAErB,EAAE,iBAAiB,SACnB,OAAO,UAAU,WACf,QACA,GAAG,aAAa,OAAO;;AAuD7B,SAAgB,kBACd,QAEA,OACgB;AAChB,KAAI,WAAW,KACb,QAAO,EAAE,cAAc,OAAO;UACrB,QAAQ,iBAAiB,KAAA,EAClC,QAAO;EAAE,GAAG;EAAQ,cAAc;EAAO;KAEzC,QAAO;EACL,GAAG;EACH,cAAc;GAAE,GAAG,OAAO;GAAc,GAAG;GAAO;EACnD;;AAIL,SAAgB,mBACd,QACA,UACgB;CAChB,MAAM,UAAU,UAAU,WAAW,EAAE;AAEvC,KAAI,OAAO,KAAK,QAAQ,CAAC,SAAS,EAChC,QAAO,kBAAkB,QAAQ,GAC9B,4BAA4B;EAC3B,GAAG;GACF,OAAO,cAAc,iBAAiB,KACrC,OAAO,cAAc;EACxB,EACF,CAAC;KAEF,QAAO;;;;;;;AASX,SAAgB,oBAAoB,GAAG,GAGrC;CACA,MAAM,UAAU,CAAC,GAAG,IAAI,IAAI,EAAE,OAAO,QAAQ,CAAC,CAAC;AAE/C,KAAI,QAAQ,WAAW,EACrB,QAAO;EAAE,QAAQ,KAAA;EAAW,SAAS,KAAA;EAAW;AAGlD,KAAI,QAAQ,WAAW,EACrB,QAAO;EAAE,QAAQ,QAAQ;EAAI,SAAS,KAAA;EAAW;CAGnD,MAAM,qBAAqB,IAAI,iBAAiB;CAChD,MAAM,iBAAiB;EACrB,MAAM,SAAS,QAAQ,MAAM,MAAM,EAAE,QAAQ,EAAE;AAC/C,qBAAmB,MAAM,OAAO;AAChC,UAAQ,SAAS,MAAM,EAAE,oBAAoB,SAAS,SAAS,CAAC;;AAGlE,SAAQ,SAAS,MAAM,EAAE,iBAAiB,SAAS,UAAU,EAAE,MAAM,MAAM,CAAC,CAAC;CAE7E,MAAM,0BAA0B,QAAQ,MAAM,MAAM,EAAE,QAAQ;AAC9D,KAAI,wBACF,oBAAmB,MAAM,wBAAwB,OAAO;AAG1D,QAAO;EACL,QAAQ,mBAAmB;EAC3B,eAAe;AACb,WAAQ,SAAS,MAAM,EAAE,oBAAoB,SAAS,SAAS,CAAC;;EAEnE;;;;;;;;AASH,MAAa,oBACX,WACA,cAC0B;AAC1B,KAAI,CAAC,aAAa,CAAC,UACjB;AAGF,KAAI,CAAC,UACH,QAAO;AAGT,KAAI,CAAC,UACH,QAAO;AAET,KAAI,MAAM,QAAQ,UAAU,IAAI,MAAM,QAAQ,UAAU,CACtD,QAAO,CAAC,GAAG,WAAW,GAAG,UAAU;AAErC,KAAI,MAAM,QAAQ,UAAU,CAC1B,QAAO,CAAC,GAAG,WAAW,UAAU;AAElC,KAAI,MAAM,QAAQ,UAAU,CAC1B,QAAO,CAAC,WAAW,GAAG,UAAU;AAElC,QAAO,CAAC,WAAW,UAAU"}
@@ -1,4 +1,3 @@
1
-
2
1
  //#region src/pregel/utils/subgraph.ts
3
2
  function isRunnableSequence(x) {
4
3
  return "steps" in x && Array.isArray(x.steps);
@@ -11,8 +10,8 @@ function findSubgraphPregel(candidate) {
11
10
  for (const candidate of candidates) if (isPregelLike(candidate)) return candidate;
12
11
  else if (isRunnableSequence(candidate)) candidates.push(...candidate.steps);
13
12
  }
14
-
15
13
  //#endregion
16
14
  exports.findSubgraphPregel = findSubgraphPregel;
17
15
  exports.isPregelLike = isPregelLike;
16
+
18
17
  //# sourceMappingURL=subgraph.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"subgraph.cjs","names":[],"sources":["../../../src/pregel/utils/subgraph.ts"],"sourcesContent":["import {\n RunnableSequence,\n Runnable,\n RunnableLike,\n} from \"@langchain/core/runnables\";\nimport type { PregelInterface } from \"../types.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isRunnableSequence(\n x: RunnableSequence | Runnable\n): x is RunnableSequence {\n return \"steps\" in x && Array.isArray(x.steps);\n}\n\nexport function isPregelLike(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n x: PregelInterface<any, any> | RunnableLike<any, any, any>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): x is PregelInterface<any, any> {\n return \"lg_is_pregel\" in x && x.lg_is_pregel === true;\n}\n\nexport function findSubgraphPregel(\n candidate: Runnable\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): PregelInterface<any, any> | undefined {\n const candidates = [candidate];\n for (const candidate of candidates) {\n if (isPregelLike(candidate)) {\n return candidate;\n } else if (isRunnableSequence(candidate)) {\n candidates.push(...candidate.steps);\n }\n }\n return undefined;\n}\n"],"mappings":";;AAQA,SAAS,mBACP,GACuB;AACvB,QAAO,WAAW,KAAK,MAAM,QAAQ,EAAE,MAAM;;AAG/C,SAAgB,aAEd,GAEgC;AAChC,QAAO,kBAAkB,KAAK,EAAE,iBAAiB;;AAGnD,SAAgB,mBACd,WAEuC;CACvC,MAAM,aAAa,CAAC,UAAU;AAC9B,MAAK,MAAM,aAAa,WACtB,KAAI,aAAa,UAAU,CACzB,QAAO;UACE,mBAAmB,UAAU,CACtC,YAAW,KAAK,GAAG,UAAU,MAAM"}
1
+ {"version":3,"file":"subgraph.cjs","names":[],"sources":["../../../src/pregel/utils/subgraph.ts"],"sourcesContent":["import {\n RunnableSequence,\n Runnable,\n RunnableLike,\n} from \"@langchain/core/runnables\";\nimport type { PregelInterface } from \"../types.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isRunnableSequence(\n x: RunnableSequence | Runnable\n): x is RunnableSequence {\n return \"steps\" in x && Array.isArray(x.steps);\n}\n\nexport function isPregelLike(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n x: PregelInterface<any, any> | RunnableLike<any, any, any>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): x is PregelInterface<any, any> {\n return \"lg_is_pregel\" in x && x.lg_is_pregel === true;\n}\n\nexport function findSubgraphPregel(\n candidate: Runnable\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): PregelInterface<any, any> | undefined {\n const candidates = [candidate];\n for (const candidate of candidates) {\n if (isPregelLike(candidate)) {\n return candidate;\n } else if (isRunnableSequence(candidate)) {\n candidates.push(...candidate.steps);\n }\n }\n return undefined;\n}\n"],"mappings":";AAQA,SAAS,mBACP,GACuB;AACvB,QAAO,WAAW,KAAK,MAAM,QAAQ,EAAE,MAAM;;AAG/C,SAAgB,aAEd,GAEgC;AAChC,QAAO,kBAAkB,KAAK,EAAE,iBAAiB;;AAGnD,SAAgB,mBACd,WAEuC;CACvC,MAAM,aAAa,CAAC,UAAU;AAC9B,MAAK,MAAM,aAAa,WACtB,KAAI,aAAa,UAAU,CACzB,QAAO;UACE,mBAAmB,UAAU,CACtC,YAAW,KAAK,GAAG,UAAU,MAAM"}
@@ -10,7 +10,7 @@ function findSubgraphPregel(candidate) {
10
10
  for (const candidate of candidates) if (isPregelLike(candidate)) return candidate;
11
11
  else if (isRunnableSequence(candidate)) candidates.push(...candidate.steps);
12
12
  }
13
-
14
13
  //#endregion
15
14
  export { findSubgraphPregel, isPregelLike };
15
+
16
16
  //# sourceMappingURL=subgraph.js.map
@@ -1,6 +1,5 @@
1
- const require_constants = require('../constants.cjs');
2
- const require_read = require('./read.cjs');
3
-
1
+ const require_constants = require("../constants.cjs");
2
+ const require_read = require("./read.cjs");
4
3
  //#region src/pregel/validate.ts
5
4
  var GraphValidationError = class extends Error {
6
5
  constructor(message) {
@@ -13,7 +12,7 @@ function validateGraph({ nodes, channels, inputChannels, outputChannels, streamC
13
12
  const subscribedChannels = /* @__PURE__ */ new Set();
14
13
  const allOutputChannels = /* @__PURE__ */ new Set();
15
14
  for (const [name, node] of Object.entries(nodes)) {
16
- if (name === require_constants.INTERRUPT) throw new GraphValidationError(`"Node name ${require_constants.INTERRUPT} is reserved"`);
15
+ if (name === "__interrupt__") throw new GraphValidationError(`"Node name ${require_constants.INTERRUPT} is reserved"`);
17
16
  if (node.constructor === require_read.PregelNode) node.triggers.forEach((trigger) => subscribedChannels.add(trigger));
18
17
  else throw new GraphValidationError(`Invalid node type ${typeof node}, expected PregelNode`);
19
18
  }
@@ -38,8 +37,8 @@ function validateKeys(keys, channels) {
38
37
  for (const key of keys) if (!(key in channels)) throw new Error(`Key ${String(key)} not found in channels`);
39
38
  } else if (!(keys in channels)) throw new Error(`Key ${String(keys)} not found in channels`);
40
39
  }
41
-
42
40
  //#endregion
43
41
  exports.validateGraph = validateGraph;
44
42
  exports.validateKeys = validateKeys;
43
+
45
44
  //# sourceMappingURL=validate.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.cjs","names":["INTERRUPT","PregelNode"],"sources":["../../src/pregel/validate.ts"],"sourcesContent":["import { All } from \"@langchain/langgraph-checkpoint\";\nimport { BaseChannel } from \"../channels/index.js\";\nimport { INTERRUPT } from \"../constants.js\";\nimport { PregelNode } from \"./read.js\";\n\nexport class GraphValidationError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"GraphValidationError\";\n }\n}\n\nexport function validateGraph<\n Nn extends Record<string, PregelNode>,\n Cc extends Record<string, BaseChannel>\n>({\n nodes,\n channels,\n inputChannels,\n outputChannels,\n streamChannels,\n interruptAfterNodes,\n interruptBeforeNodes,\n}: {\n nodes: Nn;\n channels: Cc;\n inputChannels: keyof Cc | Array<keyof Cc>;\n outputChannels: keyof Cc | Array<keyof Cc>;\n streamChannels?: keyof Cc | Array<keyof Cc>;\n interruptAfterNodes?: Array<keyof Nn> | All;\n interruptBeforeNodes?: Array<keyof Nn> | All;\n}): void {\n if (!channels) {\n throw new GraphValidationError(\"Channels not provided\");\n }\n\n const subscribedChannels = new Set<keyof Cc>();\n const allOutputChannels = new Set<keyof Cc>();\n\n for (const [name, node] of Object.entries(nodes)) {\n if (name === INTERRUPT) {\n throw new GraphValidationError(`\"Node name ${INTERRUPT} is reserved\"`);\n }\n if (node.constructor === PregelNode) {\n node.triggers.forEach((trigger) => subscribedChannels.add(trigger));\n } else {\n throw new GraphValidationError(\n `Invalid node type ${typeof node}, expected PregelNode`\n );\n }\n }\n\n // side effect: update channels\n for (const chan of subscribedChannels) {\n if (!(chan in channels)) {\n throw new GraphValidationError(\n `Subscribed channel '${String(chan)}' not in channels`\n );\n }\n }\n\n if (!Array.isArray(inputChannels)) {\n if (!subscribedChannels.has(inputChannels)) {\n throw new GraphValidationError(\n `Input channel ${String(\n inputChannels\n )} is not subscribed to by any node`\n );\n }\n } else {\n if (inputChannels.every((channel) => !subscribedChannels.has(channel))) {\n throw new GraphValidationError(\n `None of the input channels ${inputChannels} are subscribed to by any node`\n );\n }\n }\n\n if (!Array.isArray(outputChannels)) {\n allOutputChannels.add(outputChannels);\n } else {\n outputChannels.forEach((chan) => allOutputChannels.add(chan));\n }\n\n if (streamChannels && !Array.isArray(streamChannels)) {\n allOutputChannels.add(streamChannels);\n } else if (Array.isArray(streamChannels)) {\n streamChannels.forEach((chan) => allOutputChannels.add(chan));\n }\n\n for (const chan of allOutputChannels) {\n if (!(chan in channels)) {\n throw new GraphValidationError(\n `Output channel '${String(chan)}' not in channels`\n );\n }\n }\n\n // validate interrupt before/after\n if (interruptAfterNodes && interruptAfterNodes !== \"*\") {\n for (const node of interruptAfterNodes) {\n if (!(node in nodes)) {\n throw new GraphValidationError(`Node ${String(node)} not in nodes`);\n }\n }\n }\n\n if (interruptBeforeNodes && interruptBeforeNodes !== \"*\") {\n for (const node of interruptBeforeNodes) {\n if (!(node in nodes)) {\n throw new GraphValidationError(`Node ${String(node)} not in nodes`);\n }\n }\n }\n}\n\nexport function validateKeys<Cc extends Record<string, BaseChannel>>(\n keys: keyof Cc | Array<keyof Cc>,\n channels: Cc\n): void {\n if (Array.isArray(keys)) {\n for (const key of keys) {\n if (!(key in channels)) {\n throw new Error(`Key ${String(key)} not found in channels`);\n }\n }\n } else {\n if (!(keys in channels)) {\n throw new Error(`Key ${String(keys)} not found in channels`);\n }\n }\n}\n"],"mappings":";;;;AAKA,IAAa,uBAAb,cAA0C,MAAM;CAC9C,YAAY,SAAkB;AAC5B,QAAM,QAAQ;AACd,OAAK,OAAO;;;AAIhB,SAAgB,cAGd,EACA,OACA,UACA,eACA,gBACA,gBACA,qBACA,wBASO;AACP,KAAI,CAAC,SACH,OAAM,IAAI,qBAAqB,wBAAwB;CAGzD,MAAM,qCAAqB,IAAI,KAAe;CAC9C,MAAM,oCAAoB,IAAI,KAAe;AAE7C,MAAK,MAAM,CAAC,MAAM,SAAS,OAAO,QAAQ,MAAM,EAAE;AAChD,MAAI,SAASA,4BACX,OAAM,IAAI,qBAAqB,cAAcA,4BAAU,eAAe;AAExE,MAAI,KAAK,gBAAgBC,wBACvB,MAAK,SAAS,SAAS,YAAY,mBAAmB,IAAI,QAAQ,CAAC;MAEnE,OAAM,IAAI,qBACR,qBAAqB,OAAO,KAAK,uBAClC;;AAKL,MAAK,MAAM,QAAQ,mBACjB,KAAI,EAAE,QAAQ,UACZ,OAAM,IAAI,qBACR,uBAAuB,OAAO,KAAK,CAAC,mBACrC;AAIL,KAAI,CAAC,MAAM,QAAQ,cAAc,EAC/B;MAAI,CAAC,mBAAmB,IAAI,cAAc,CACxC,OAAM,IAAI,qBACR,iBAAiB,OACf,cACD,CAAC,mCACH;YAGC,cAAc,OAAO,YAAY,CAAC,mBAAmB,IAAI,QAAQ,CAAC,CACpE,OAAM,IAAI,qBACR,8BAA8B,cAAc,gCAC7C;AAIL,KAAI,CAAC,MAAM,QAAQ,eAAe,CAChC,mBAAkB,IAAI,eAAe;KAErC,gBAAe,SAAS,SAAS,kBAAkB,IAAI,KAAK,CAAC;AAG/D,KAAI,kBAAkB,CAAC,MAAM,QAAQ,eAAe,CAClD,mBAAkB,IAAI,eAAe;UAC5B,MAAM,QAAQ,eAAe,CACtC,gBAAe,SAAS,SAAS,kBAAkB,IAAI,KAAK,CAAC;AAG/D,MAAK,MAAM,QAAQ,kBACjB,KAAI,EAAE,QAAQ,UACZ,OAAM,IAAI,qBACR,mBAAmB,OAAO,KAAK,CAAC,mBACjC;AAKL,KAAI,uBAAuB,wBAAwB,KACjD;OAAK,MAAM,QAAQ,oBACjB,KAAI,EAAE,QAAQ,OACZ,OAAM,IAAI,qBAAqB,QAAQ,OAAO,KAAK,CAAC,eAAe;;AAKzE,KAAI,wBAAwB,yBAAyB,KACnD;OAAK,MAAM,QAAQ,qBACjB,KAAI,EAAE,QAAQ,OACZ,OAAM,IAAI,qBAAqB,QAAQ,OAAO,KAAK,CAAC,eAAe;;;AAM3E,SAAgB,aACd,MACA,UACM;AACN,KAAI,MAAM,QAAQ,KAAK,EACrB;OAAK,MAAM,OAAO,KAChB,KAAI,EAAE,OAAO,UACX,OAAM,IAAI,MAAM,OAAO,OAAO,IAAI,CAAC,wBAAwB;YAI3D,EAAE,QAAQ,UACZ,OAAM,IAAI,MAAM,OAAO,OAAO,KAAK,CAAC,wBAAwB"}
1
+ {"version":3,"file":"validate.cjs","names":["INTERRUPT","PregelNode"],"sources":["../../src/pregel/validate.ts"],"sourcesContent":["import { All } from \"@langchain/langgraph-checkpoint\";\nimport { BaseChannel } from \"../channels/index.js\";\nimport { INTERRUPT } from \"../constants.js\";\nimport { PregelNode } from \"./read.js\";\n\nexport class GraphValidationError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"GraphValidationError\";\n }\n}\n\nexport function validateGraph<\n Nn extends Record<string, PregelNode>,\n Cc extends Record<string, BaseChannel>\n>({\n nodes,\n channels,\n inputChannels,\n outputChannels,\n streamChannels,\n interruptAfterNodes,\n interruptBeforeNodes,\n}: {\n nodes: Nn;\n channels: Cc;\n inputChannels: keyof Cc | Array<keyof Cc>;\n outputChannels: keyof Cc | Array<keyof Cc>;\n streamChannels?: keyof Cc | Array<keyof Cc>;\n interruptAfterNodes?: Array<keyof Nn> | All;\n interruptBeforeNodes?: Array<keyof Nn> | All;\n}): void {\n if (!channels) {\n throw new GraphValidationError(\"Channels not provided\");\n }\n\n const subscribedChannels = new Set<keyof Cc>();\n const allOutputChannels = new Set<keyof Cc>();\n\n for (const [name, node] of Object.entries(nodes)) {\n if (name === INTERRUPT) {\n throw new GraphValidationError(`\"Node name ${INTERRUPT} is reserved\"`);\n }\n if (node.constructor === PregelNode) {\n node.triggers.forEach((trigger) => subscribedChannels.add(trigger));\n } else {\n throw new GraphValidationError(\n `Invalid node type ${typeof node}, expected PregelNode`\n );\n }\n }\n\n // side effect: update channels\n for (const chan of subscribedChannels) {\n if (!(chan in channels)) {\n throw new GraphValidationError(\n `Subscribed channel '${String(chan)}' not in channels`\n );\n }\n }\n\n if (!Array.isArray(inputChannels)) {\n if (!subscribedChannels.has(inputChannels)) {\n throw new GraphValidationError(\n `Input channel ${String(\n inputChannels\n )} is not subscribed to by any node`\n );\n }\n } else {\n if (inputChannels.every((channel) => !subscribedChannels.has(channel))) {\n throw new GraphValidationError(\n `None of the input channels ${inputChannels} are subscribed to by any node`\n );\n }\n }\n\n if (!Array.isArray(outputChannels)) {\n allOutputChannels.add(outputChannels);\n } else {\n outputChannels.forEach((chan) => allOutputChannels.add(chan));\n }\n\n if (streamChannels && !Array.isArray(streamChannels)) {\n allOutputChannels.add(streamChannels);\n } else if (Array.isArray(streamChannels)) {\n streamChannels.forEach((chan) => allOutputChannels.add(chan));\n }\n\n for (const chan of allOutputChannels) {\n if (!(chan in channels)) {\n throw new GraphValidationError(\n `Output channel '${String(chan)}' not in channels`\n );\n }\n }\n\n // validate interrupt before/after\n if (interruptAfterNodes && interruptAfterNodes !== \"*\") {\n for (const node of interruptAfterNodes) {\n if (!(node in nodes)) {\n throw new GraphValidationError(`Node ${String(node)} not in nodes`);\n }\n }\n }\n\n if (interruptBeforeNodes && interruptBeforeNodes !== \"*\") {\n for (const node of interruptBeforeNodes) {\n if (!(node in nodes)) {\n throw new GraphValidationError(`Node ${String(node)} not in nodes`);\n }\n }\n }\n}\n\nexport function validateKeys<Cc extends Record<string, BaseChannel>>(\n keys: keyof Cc | Array<keyof Cc>,\n channels: Cc\n): void {\n if (Array.isArray(keys)) {\n for (const key of keys) {\n if (!(key in channels)) {\n throw new Error(`Key ${String(key)} not found in channels`);\n }\n }\n } else {\n if (!(keys in channels)) {\n throw new Error(`Key ${String(keys)} not found in channels`);\n }\n }\n}\n"],"mappings":";;;AAKA,IAAa,uBAAb,cAA0C,MAAM;CAC9C,YAAY,SAAkB;AAC5B,QAAM,QAAQ;AACd,OAAK,OAAO;;;AAIhB,SAAgB,cAGd,EACA,OACA,UACA,eACA,gBACA,gBACA,qBACA,wBASO;AACP,KAAI,CAAC,SACH,OAAM,IAAI,qBAAqB,wBAAwB;CAGzD,MAAM,qCAAqB,IAAI,KAAe;CAC9C,MAAM,oCAAoB,IAAI,KAAe;AAE7C,MAAK,MAAM,CAAC,MAAM,SAAS,OAAO,QAAQ,MAAM,EAAE;AAChD,MAAI,SAAA,gBACF,OAAM,IAAI,qBAAqB,cAAcA,kBAAAA,UAAU,eAAe;AAExE,MAAI,KAAK,gBAAgBC,aAAAA,WACvB,MAAK,SAAS,SAAS,YAAY,mBAAmB,IAAI,QAAQ,CAAC;MAEnE,OAAM,IAAI,qBACR,qBAAqB,OAAO,KAAK,uBAClC;;AAKL,MAAK,MAAM,QAAQ,mBACjB,KAAI,EAAE,QAAQ,UACZ,OAAM,IAAI,qBACR,uBAAuB,OAAO,KAAK,CAAC,mBACrC;AAIL,KAAI,CAAC,MAAM,QAAQ,cAAc;MAC3B,CAAC,mBAAmB,IAAI,cAAc,CACxC,OAAM,IAAI,qBACR,iBAAiB,OACf,cACD,CAAC,mCACH;YAGC,cAAc,OAAO,YAAY,CAAC,mBAAmB,IAAI,QAAQ,CAAC,CACpE,OAAM,IAAI,qBACR,8BAA8B,cAAc,gCAC7C;AAIL,KAAI,CAAC,MAAM,QAAQ,eAAe,CAChC,mBAAkB,IAAI,eAAe;KAErC,gBAAe,SAAS,SAAS,kBAAkB,IAAI,KAAK,CAAC;AAG/D,KAAI,kBAAkB,CAAC,MAAM,QAAQ,eAAe,CAClD,mBAAkB,IAAI,eAAe;UAC5B,MAAM,QAAQ,eAAe,CACtC,gBAAe,SAAS,SAAS,kBAAkB,IAAI,KAAK,CAAC;AAG/D,MAAK,MAAM,QAAQ,kBACjB,KAAI,EAAE,QAAQ,UACZ,OAAM,IAAI,qBACR,mBAAmB,OAAO,KAAK,CAAC,mBACjC;AAKL,KAAI,uBAAuB,wBAAwB;OAC5C,MAAM,QAAQ,oBACjB,KAAI,EAAE,QAAQ,OACZ,OAAM,IAAI,qBAAqB,QAAQ,OAAO,KAAK,CAAC,eAAe;;AAKzE,KAAI,wBAAwB,yBAAyB;OAC9C,MAAM,QAAQ,qBACjB,KAAI,EAAE,QAAQ,OACZ,OAAM,IAAI,qBAAqB,QAAQ,OAAO,KAAK,CAAC,eAAe;;;AAM3E,SAAgB,aACd,MACA,UACM;AACN,KAAI,MAAM,QAAQ,KAAK;OAChB,MAAM,OAAO,KAChB,KAAI,EAAE,OAAO,UACX,OAAM,IAAI,MAAM,OAAO,OAAO,IAAI,CAAC,wBAAwB;YAI3D,EAAE,QAAQ,UACZ,OAAM,IAAI,MAAM,OAAO,OAAO,KAAK,CAAC,wBAAwB"}
@@ -1,6 +1,5 @@
1
1
  import { INTERRUPT } from "../constants.js";
2
2
  import { PregelNode } from "./read.js";
3
-
4
3
  //#region src/pregel/validate.ts
5
4
  var GraphValidationError = class extends Error {
6
5
  constructor(message) {
@@ -13,7 +12,7 @@ function validateGraph({ nodes, channels, inputChannels, outputChannels, streamC
13
12
  const subscribedChannels = /* @__PURE__ */ new Set();
14
13
  const allOutputChannels = /* @__PURE__ */ new Set();
15
14
  for (const [name, node] of Object.entries(nodes)) {
16
- if (name === INTERRUPT) throw new GraphValidationError(`"Node name ${INTERRUPT} is reserved"`);
15
+ if (name === "__interrupt__") throw new GraphValidationError(`"Node name ${INTERRUPT} is reserved"`);
17
16
  if (node.constructor === PregelNode) node.triggers.forEach((trigger) => subscribedChannels.add(trigger));
18
17
  else throw new GraphValidationError(`Invalid node type ${typeof node}, expected PregelNode`);
19
18
  }
@@ -38,7 +37,7 @@ function validateKeys(keys, channels) {
38
37
  for (const key of keys) if (!(key in channels)) throw new Error(`Key ${String(key)} not found in channels`);
39
38
  } else if (!(keys in channels)) throw new Error(`Key ${String(keys)} not found in channels`);
40
39
  }
41
-
42
40
  //#endregion
43
41
  export { validateGraph, validateKeys };
42
+
44
43
  //# sourceMappingURL=validate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","names":[],"sources":["../../src/pregel/validate.ts"],"sourcesContent":["import { All } from \"@langchain/langgraph-checkpoint\";\nimport { BaseChannel } from \"../channels/index.js\";\nimport { INTERRUPT } from \"../constants.js\";\nimport { PregelNode } from \"./read.js\";\n\nexport class GraphValidationError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"GraphValidationError\";\n }\n}\n\nexport function validateGraph<\n Nn extends Record<string, PregelNode>,\n Cc extends Record<string, BaseChannel>\n>({\n nodes,\n channels,\n inputChannels,\n outputChannels,\n streamChannels,\n interruptAfterNodes,\n interruptBeforeNodes,\n}: {\n nodes: Nn;\n channels: Cc;\n inputChannels: keyof Cc | Array<keyof Cc>;\n outputChannels: keyof Cc | Array<keyof Cc>;\n streamChannels?: keyof Cc | Array<keyof Cc>;\n interruptAfterNodes?: Array<keyof Nn> | All;\n interruptBeforeNodes?: Array<keyof Nn> | All;\n}): void {\n if (!channels) {\n throw new GraphValidationError(\"Channels not provided\");\n }\n\n const subscribedChannels = new Set<keyof Cc>();\n const allOutputChannels = new Set<keyof Cc>();\n\n for (const [name, node] of Object.entries(nodes)) {\n if (name === INTERRUPT) {\n throw new GraphValidationError(`\"Node name ${INTERRUPT} is reserved\"`);\n }\n if (node.constructor === PregelNode) {\n node.triggers.forEach((trigger) => subscribedChannels.add(trigger));\n } else {\n throw new GraphValidationError(\n `Invalid node type ${typeof node}, expected PregelNode`\n );\n }\n }\n\n // side effect: update channels\n for (const chan of subscribedChannels) {\n if (!(chan in channels)) {\n throw new GraphValidationError(\n `Subscribed channel '${String(chan)}' not in channels`\n );\n }\n }\n\n if (!Array.isArray(inputChannels)) {\n if (!subscribedChannels.has(inputChannels)) {\n throw new GraphValidationError(\n `Input channel ${String(\n inputChannels\n )} is not subscribed to by any node`\n );\n }\n } else {\n if (inputChannels.every((channel) => !subscribedChannels.has(channel))) {\n throw new GraphValidationError(\n `None of the input channels ${inputChannels} are subscribed to by any node`\n );\n }\n }\n\n if (!Array.isArray(outputChannels)) {\n allOutputChannels.add(outputChannels);\n } else {\n outputChannels.forEach((chan) => allOutputChannels.add(chan));\n }\n\n if (streamChannels && !Array.isArray(streamChannels)) {\n allOutputChannels.add(streamChannels);\n } else if (Array.isArray(streamChannels)) {\n streamChannels.forEach((chan) => allOutputChannels.add(chan));\n }\n\n for (const chan of allOutputChannels) {\n if (!(chan in channels)) {\n throw new GraphValidationError(\n `Output channel '${String(chan)}' not in channels`\n );\n }\n }\n\n // validate interrupt before/after\n if (interruptAfterNodes && interruptAfterNodes !== \"*\") {\n for (const node of interruptAfterNodes) {\n if (!(node in nodes)) {\n throw new GraphValidationError(`Node ${String(node)} not in nodes`);\n }\n }\n }\n\n if (interruptBeforeNodes && interruptBeforeNodes !== \"*\") {\n for (const node of interruptBeforeNodes) {\n if (!(node in nodes)) {\n throw new GraphValidationError(`Node ${String(node)} not in nodes`);\n }\n }\n }\n}\n\nexport function validateKeys<Cc extends Record<string, BaseChannel>>(\n keys: keyof Cc | Array<keyof Cc>,\n channels: Cc\n): void {\n if (Array.isArray(keys)) {\n for (const key of keys) {\n if (!(key in channels)) {\n throw new Error(`Key ${String(key)} not found in channels`);\n }\n }\n } else {\n if (!(keys in channels)) {\n throw new Error(`Key ${String(keys)} not found in channels`);\n }\n }\n}\n"],"mappings":";;;;AAKA,IAAa,uBAAb,cAA0C,MAAM;CAC9C,YAAY,SAAkB;AAC5B,QAAM,QAAQ;AACd,OAAK,OAAO;;;AAIhB,SAAgB,cAGd,EACA,OACA,UACA,eACA,gBACA,gBACA,qBACA,wBASO;AACP,KAAI,CAAC,SACH,OAAM,IAAI,qBAAqB,wBAAwB;CAGzD,MAAM,qCAAqB,IAAI,KAAe;CAC9C,MAAM,oCAAoB,IAAI,KAAe;AAE7C,MAAK,MAAM,CAAC,MAAM,SAAS,OAAO,QAAQ,MAAM,EAAE;AAChD,MAAI,SAAS,UACX,OAAM,IAAI,qBAAqB,cAAc,UAAU,eAAe;AAExE,MAAI,KAAK,gBAAgB,WACvB,MAAK,SAAS,SAAS,YAAY,mBAAmB,IAAI,QAAQ,CAAC;MAEnE,OAAM,IAAI,qBACR,qBAAqB,OAAO,KAAK,uBAClC;;AAKL,MAAK,MAAM,QAAQ,mBACjB,KAAI,EAAE,QAAQ,UACZ,OAAM,IAAI,qBACR,uBAAuB,OAAO,KAAK,CAAC,mBACrC;AAIL,KAAI,CAAC,MAAM,QAAQ,cAAc,EAC/B;MAAI,CAAC,mBAAmB,IAAI,cAAc,CACxC,OAAM,IAAI,qBACR,iBAAiB,OACf,cACD,CAAC,mCACH;YAGC,cAAc,OAAO,YAAY,CAAC,mBAAmB,IAAI,QAAQ,CAAC,CACpE,OAAM,IAAI,qBACR,8BAA8B,cAAc,gCAC7C;AAIL,KAAI,CAAC,MAAM,QAAQ,eAAe,CAChC,mBAAkB,IAAI,eAAe;KAErC,gBAAe,SAAS,SAAS,kBAAkB,IAAI,KAAK,CAAC;AAG/D,KAAI,kBAAkB,CAAC,MAAM,QAAQ,eAAe,CAClD,mBAAkB,IAAI,eAAe;UAC5B,MAAM,QAAQ,eAAe,CACtC,gBAAe,SAAS,SAAS,kBAAkB,IAAI,KAAK,CAAC;AAG/D,MAAK,MAAM,QAAQ,kBACjB,KAAI,EAAE,QAAQ,UACZ,OAAM,IAAI,qBACR,mBAAmB,OAAO,KAAK,CAAC,mBACjC;AAKL,KAAI,uBAAuB,wBAAwB,KACjD;OAAK,MAAM,QAAQ,oBACjB,KAAI,EAAE,QAAQ,OACZ,OAAM,IAAI,qBAAqB,QAAQ,OAAO,KAAK,CAAC,eAAe;;AAKzE,KAAI,wBAAwB,yBAAyB,KACnD;OAAK,MAAM,QAAQ,qBACjB,KAAI,EAAE,QAAQ,OACZ,OAAM,IAAI,qBAAqB,QAAQ,OAAO,KAAK,CAAC,eAAe;;;AAM3E,SAAgB,aACd,MACA,UACM;AACN,KAAI,MAAM,QAAQ,KAAK,EACrB;OAAK,MAAM,OAAO,KAChB,KAAI,EAAE,OAAO,UACX,OAAM,IAAI,MAAM,OAAO,OAAO,IAAI,CAAC,wBAAwB;YAI3D,EAAE,QAAQ,UACZ,OAAM,IAAI,MAAM,OAAO,OAAO,KAAK,CAAC,wBAAwB"}
1
+ {"version":3,"file":"validate.js","names":[],"sources":["../../src/pregel/validate.ts"],"sourcesContent":["import { All } from \"@langchain/langgraph-checkpoint\";\nimport { BaseChannel } from \"../channels/index.js\";\nimport { INTERRUPT } from \"../constants.js\";\nimport { PregelNode } from \"./read.js\";\n\nexport class GraphValidationError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"GraphValidationError\";\n }\n}\n\nexport function validateGraph<\n Nn extends Record<string, PregelNode>,\n Cc extends Record<string, BaseChannel>\n>({\n nodes,\n channels,\n inputChannels,\n outputChannels,\n streamChannels,\n interruptAfterNodes,\n interruptBeforeNodes,\n}: {\n nodes: Nn;\n channels: Cc;\n inputChannels: keyof Cc | Array<keyof Cc>;\n outputChannels: keyof Cc | Array<keyof Cc>;\n streamChannels?: keyof Cc | Array<keyof Cc>;\n interruptAfterNodes?: Array<keyof Nn> | All;\n interruptBeforeNodes?: Array<keyof Nn> | All;\n}): void {\n if (!channels) {\n throw new GraphValidationError(\"Channels not provided\");\n }\n\n const subscribedChannels = new Set<keyof Cc>();\n const allOutputChannels = new Set<keyof Cc>();\n\n for (const [name, node] of Object.entries(nodes)) {\n if (name === INTERRUPT) {\n throw new GraphValidationError(`\"Node name ${INTERRUPT} is reserved\"`);\n }\n if (node.constructor === PregelNode) {\n node.triggers.forEach((trigger) => subscribedChannels.add(trigger));\n } else {\n throw new GraphValidationError(\n `Invalid node type ${typeof node}, expected PregelNode`\n );\n }\n }\n\n // side effect: update channels\n for (const chan of subscribedChannels) {\n if (!(chan in channels)) {\n throw new GraphValidationError(\n `Subscribed channel '${String(chan)}' not in channels`\n );\n }\n }\n\n if (!Array.isArray(inputChannels)) {\n if (!subscribedChannels.has(inputChannels)) {\n throw new GraphValidationError(\n `Input channel ${String(\n inputChannels\n )} is not subscribed to by any node`\n );\n }\n } else {\n if (inputChannels.every((channel) => !subscribedChannels.has(channel))) {\n throw new GraphValidationError(\n `None of the input channels ${inputChannels} are subscribed to by any node`\n );\n }\n }\n\n if (!Array.isArray(outputChannels)) {\n allOutputChannels.add(outputChannels);\n } else {\n outputChannels.forEach((chan) => allOutputChannels.add(chan));\n }\n\n if (streamChannels && !Array.isArray(streamChannels)) {\n allOutputChannels.add(streamChannels);\n } else if (Array.isArray(streamChannels)) {\n streamChannels.forEach((chan) => allOutputChannels.add(chan));\n }\n\n for (const chan of allOutputChannels) {\n if (!(chan in channels)) {\n throw new GraphValidationError(\n `Output channel '${String(chan)}' not in channels`\n );\n }\n }\n\n // validate interrupt before/after\n if (interruptAfterNodes && interruptAfterNodes !== \"*\") {\n for (const node of interruptAfterNodes) {\n if (!(node in nodes)) {\n throw new GraphValidationError(`Node ${String(node)} not in nodes`);\n }\n }\n }\n\n if (interruptBeforeNodes && interruptBeforeNodes !== \"*\") {\n for (const node of interruptBeforeNodes) {\n if (!(node in nodes)) {\n throw new GraphValidationError(`Node ${String(node)} not in nodes`);\n }\n }\n }\n}\n\nexport function validateKeys<Cc extends Record<string, BaseChannel>>(\n keys: keyof Cc | Array<keyof Cc>,\n channels: Cc\n): void {\n if (Array.isArray(keys)) {\n for (const key of keys) {\n if (!(key in channels)) {\n throw new Error(`Key ${String(key)} not found in channels`);\n }\n }\n } else {\n if (!(keys in channels)) {\n throw new Error(`Key ${String(keys)} not found in channels`);\n }\n }\n}\n"],"mappings":";;;AAKA,IAAa,uBAAb,cAA0C,MAAM;CAC9C,YAAY,SAAkB;AAC5B,QAAM,QAAQ;AACd,OAAK,OAAO;;;AAIhB,SAAgB,cAGd,EACA,OACA,UACA,eACA,gBACA,gBACA,qBACA,wBASO;AACP,KAAI,CAAC,SACH,OAAM,IAAI,qBAAqB,wBAAwB;CAGzD,MAAM,qCAAqB,IAAI,KAAe;CAC9C,MAAM,oCAAoB,IAAI,KAAe;AAE7C,MAAK,MAAM,CAAC,MAAM,SAAS,OAAO,QAAQ,MAAM,EAAE;AAChD,MAAI,SAAA,gBACF,OAAM,IAAI,qBAAqB,cAAc,UAAU,eAAe;AAExE,MAAI,KAAK,gBAAgB,WACvB,MAAK,SAAS,SAAS,YAAY,mBAAmB,IAAI,QAAQ,CAAC;MAEnE,OAAM,IAAI,qBACR,qBAAqB,OAAO,KAAK,uBAClC;;AAKL,MAAK,MAAM,QAAQ,mBACjB,KAAI,EAAE,QAAQ,UACZ,OAAM,IAAI,qBACR,uBAAuB,OAAO,KAAK,CAAC,mBACrC;AAIL,KAAI,CAAC,MAAM,QAAQ,cAAc;MAC3B,CAAC,mBAAmB,IAAI,cAAc,CACxC,OAAM,IAAI,qBACR,iBAAiB,OACf,cACD,CAAC,mCACH;YAGC,cAAc,OAAO,YAAY,CAAC,mBAAmB,IAAI,QAAQ,CAAC,CACpE,OAAM,IAAI,qBACR,8BAA8B,cAAc,gCAC7C;AAIL,KAAI,CAAC,MAAM,QAAQ,eAAe,CAChC,mBAAkB,IAAI,eAAe;KAErC,gBAAe,SAAS,SAAS,kBAAkB,IAAI,KAAK,CAAC;AAG/D,KAAI,kBAAkB,CAAC,MAAM,QAAQ,eAAe,CAClD,mBAAkB,IAAI,eAAe;UAC5B,MAAM,QAAQ,eAAe,CACtC,gBAAe,SAAS,SAAS,kBAAkB,IAAI,KAAK,CAAC;AAG/D,MAAK,MAAM,QAAQ,kBACjB,KAAI,EAAE,QAAQ,UACZ,OAAM,IAAI,qBACR,mBAAmB,OAAO,KAAK,CAAC,mBACjC;AAKL,KAAI,uBAAuB,wBAAwB;OAC5C,MAAM,QAAQ,oBACjB,KAAI,EAAE,QAAQ,OACZ,OAAM,IAAI,qBAAqB,QAAQ,OAAO,KAAK,CAAC,eAAe;;AAKzE,KAAI,wBAAwB,yBAAyB;OAC9C,MAAM,QAAQ,qBACjB,KAAI,EAAE,QAAQ,OACZ,OAAM,IAAI,qBAAqB,QAAQ,OAAO,KAAK,CAAC,eAAe;;;AAM3E,SAAgB,aACd,MACA,UACM;AACN,KAAI,MAAM,QAAQ,KAAK;OAChB,MAAM,OAAO,KAChB,KAAI,EAAE,OAAO,UACX,OAAM,IAAI,MAAM,OAAO,OAAO,IAAI,CAAC,wBAAwB;YAI3D,EAAE,QAAQ,UACZ,OAAM,IAAI,MAAM,OAAO,OAAO,KAAK,CAAC,wBAAwB"}
@@ -1,10 +1,7 @@
1
- const require_constants = require('../constants.cjs');
2
- const require_errors = require('../errors.cjs');
3
- const require_utils = require('../utils.cjs');
1
+ const require_constants = require("../constants.cjs");
2
+ const require_errors = require("../errors.cjs");
3
+ const require_utils = require("../utils.cjs");
4
4
  let _langchain_core_runnables = require("@langchain/core/runnables");
5
-
6
- //#region src/pregel/write.ts
7
- const SKIP_WRITE = { [Symbol.for("LG_SKIP_WRITE")]: true };
8
5
  function _isSkipWrite(x) {
9
6
  return typeof x === "object" && x?.[Symbol.for("LG_SKIP_WRITE")] !== void 0;
10
7
  }
@@ -56,7 +53,7 @@ var ChannelWrite = class ChannelWrite extends require_utils.RunnableCallable {
56
53
  static async doWrite(config, writes) {
57
54
  for (const w of writes) {
58
55
  if (_isChannelWriteEntry(w)) {
59
- if (w.channel === require_constants.TASKS) throw new require_errors.InvalidUpdateError("Cannot write to the reserved channel TASKS");
56
+ if (w.channel === "__pregel_tasks") throw new require_errors.InvalidUpdateError("Cannot write to the reserved channel TASKS");
60
57
  if (_isPassthrough(w.value)) throw new require_errors.InvalidUpdateError("PASSTHROUGH value must be replaced");
61
58
  }
62
59
  if (_isChannelWriteTupleEntry(w)) {
@@ -90,8 +87,8 @@ function _isChannelWriteEntry(x) {
90
87
  function _isChannelWriteTupleEntry(x) {
91
88
  return x !== void 0 && !_isChannelWriteEntry(x) && _langchain_core_runnables.Runnable.isRunnable(x.mapper);
92
89
  }
93
-
94
90
  //#endregion
95
91
  exports.ChannelWrite = ChannelWrite;
96
92
  exports.PASSTHROUGH = PASSTHROUGH;
93
+
97
94
  //# sourceMappingURL=write.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"write.cjs","names":["RunnableCallable","_isSend","TASKS","InvalidUpdateError","CONFIG_KEY_SEND","Runnable"],"sources":["../../src/pregel/write.ts"],"sourcesContent":["import {\n Runnable,\n RunnableConfig,\n RunnableLike,\n} from \"@langchain/core/runnables\";\nimport { _isSend, CONFIG_KEY_SEND, Send, TASKS } from \"../constants.js\";\nimport { RunnableCallable } from \"../utils.js\";\nimport { InvalidUpdateError } from \"../errors.js\";\n\ntype TYPE_SEND = (values: Array<[string, unknown]>) => void;\n\nexport const SKIP_WRITE = {\n [Symbol.for(\"LG_SKIP_WRITE\")]: true,\n};\n\nfunction _isSkipWrite(x: unknown) {\n return (\n typeof x === \"object\" &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (x as any)?.[Symbol.for(\"LG_SKIP_WRITE\")] !== undefined\n );\n}\n\nexport const PASSTHROUGH = {\n [Symbol.for(\"LG_PASSTHROUGH\")]: true,\n};\n\nfunction _isPassthrough(x: unknown) {\n return (\n typeof x === \"object\" &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (x as any)?.[Symbol.for(\"LG_PASSTHROUGH\")] !== undefined\n );\n}\n\nconst IS_WRITER = Symbol(\"IS_WRITER\");\n\n/**\n * Mapping of write channels to Runnables that return the value to be written,\n * or None to skip writing.\n */\nexport class ChannelWrite<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunInput = any\n> extends RunnableCallable<RunInput, RunInput> {\n writes: Array<ChannelWriteEntry | ChannelWriteTupleEntry | Send>;\n\n constructor(\n writes: Array<ChannelWriteEntry | ChannelWriteTupleEntry | Send>,\n tags?: string[]\n ) {\n const name = `ChannelWrite<${writes\n .map((packet) => {\n if (_isSend(packet)) {\n return packet.node;\n } else if (\"channel\" in packet) {\n return packet.channel;\n }\n return \"...\";\n })\n .join(\",\")}>`;\n super({\n ...{ writes, name, tags },\n trace: false,\n func: async (input: RunInput, config?: RunnableConfig) => {\n return this._write(input, config ?? {});\n },\n });\n\n this.writes = writes;\n }\n\n async _write(input: unknown, config: RunnableConfig): Promise<unknown> {\n const writes = this.writes.map((write) => {\n if (_isChannelWriteTupleEntry(write) && _isPassthrough(write.value)) {\n return {\n mapper: write.mapper,\n value: input,\n };\n } else if (_isChannelWriteEntry(write) && _isPassthrough(write.value)) {\n return {\n channel: write.channel,\n value: input,\n skipNone: write.skipNone,\n mapper: write.mapper,\n };\n } else {\n return write;\n }\n });\n await ChannelWrite.doWrite(config, writes);\n return input;\n }\n\n // TODO: Support requireAtLeastOneOf\n static async doWrite(\n config: RunnableConfig,\n writes: (ChannelWriteEntry | ChannelWriteTupleEntry | Send)[]\n ): Promise<void> {\n // validate\n for (const w of writes) {\n if (_isChannelWriteEntry(w)) {\n if (w.channel === TASKS) {\n throw new InvalidUpdateError(\n \"Cannot write to the reserved channel TASKS\"\n );\n }\n if (_isPassthrough(w.value)) {\n throw new InvalidUpdateError(\"PASSTHROUGH value must be replaced\");\n }\n }\n if (_isChannelWriteTupleEntry(w)) {\n if (_isPassthrough(w.value)) {\n throw new InvalidUpdateError(\"PASSTHROUGH value must be replaced\");\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const writeEntries: [string, any][] = [];\n for (const w of writes) {\n if (_isSend(w)) {\n writeEntries.push([TASKS, w]);\n } else if (_isChannelWriteTupleEntry(w)) {\n const mappedResult = await w.mapper.invoke(w.value, config);\n if (mappedResult != null && mappedResult.length > 0) {\n writeEntries.push(...mappedResult);\n }\n } else if (_isChannelWriteEntry(w)) {\n const mappedValue =\n w.mapper !== undefined\n ? await w.mapper.invoke(w.value, config)\n : w.value;\n if (_isSkipWrite(mappedValue)) {\n continue;\n }\n if (w.skipNone && mappedValue === undefined) {\n continue;\n }\n writeEntries.push([w.channel, mappedValue]);\n } else {\n throw new Error(`Invalid write entry: ${JSON.stringify(w)}`);\n }\n }\n const write: TYPE_SEND = config.configurable?.[CONFIG_KEY_SEND];\n write(writeEntries);\n }\n\n static isWriter(runnable: RunnableLike): runnable is ChannelWrite {\n return (\n // eslint-disable-next-line no-instanceof/no-instanceof\n runnable instanceof ChannelWrite ||\n (IS_WRITER in runnable && !!runnable[IS_WRITER])\n );\n }\n\n static registerWriter<T extends Runnable>(runnable: T): T {\n return Object.defineProperty(runnable, IS_WRITER, { value: true });\n }\n}\n\nexport interface ChannelWriteEntry {\n channel: string;\n value: unknown;\n skipNone?: boolean;\n mapper?: Runnable;\n}\n\nfunction _isChannelWriteEntry(x: unknown): x is ChannelWriteEntry {\n return (\n x !== undefined && typeof (x as ChannelWriteEntry).channel === \"string\"\n );\n}\n\nexport interface ChannelWriteTupleEntry {\n value: unknown;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n mapper: Runnable<any, [string, any][]>;\n}\n\nfunction _isChannelWriteTupleEntry(x: unknown): x is ChannelWriteTupleEntry {\n return (\n x !== undefined &&\n !_isChannelWriteEntry(x) &&\n Runnable.isRunnable((x as ChannelWriteTupleEntry).mapper)\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"write.cjs","names":["RunnableCallable","_isSend","InvalidUpdateError","TASKS","CONFIG_KEY_SEND","Runnable"],"sources":["../../src/pregel/write.ts"],"sourcesContent":["import {\n Runnable,\n RunnableConfig,\n RunnableLike,\n} from \"@langchain/core/runnables\";\nimport { _isSend, CONFIG_KEY_SEND, Send, TASKS } from \"../constants.js\";\nimport { RunnableCallable } from \"../utils.js\";\nimport { InvalidUpdateError } from \"../errors.js\";\n\ntype TYPE_SEND = (values: Array<[string, unknown]>) => void;\n\nexport const SKIP_WRITE = {\n [Symbol.for(\"LG_SKIP_WRITE\")]: true,\n};\n\nfunction _isSkipWrite(x: unknown) {\n return (\n typeof x === \"object\" &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (x as any)?.[Symbol.for(\"LG_SKIP_WRITE\")] !== undefined\n );\n}\n\nexport const PASSTHROUGH = {\n [Symbol.for(\"LG_PASSTHROUGH\")]: true,\n};\n\nfunction _isPassthrough(x: unknown) {\n return (\n typeof x === \"object\" &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (x as any)?.[Symbol.for(\"LG_PASSTHROUGH\")] !== undefined\n );\n}\n\nconst IS_WRITER = Symbol(\"IS_WRITER\");\n\n/**\n * Mapping of write channels to Runnables that return the value to be written,\n * or None to skip writing.\n */\nexport class ChannelWrite<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunInput = any\n> extends RunnableCallable<RunInput, RunInput> {\n writes: Array<ChannelWriteEntry | ChannelWriteTupleEntry | Send>;\n\n constructor(\n writes: Array<ChannelWriteEntry | ChannelWriteTupleEntry | Send>,\n tags?: string[]\n ) {\n const name = `ChannelWrite<${writes\n .map((packet) => {\n if (_isSend(packet)) {\n return packet.node;\n } else if (\"channel\" in packet) {\n return packet.channel;\n }\n return \"...\";\n })\n .join(\",\")}>`;\n super({\n ...{ writes, name, tags },\n trace: false,\n func: async (input: RunInput, config?: RunnableConfig) => {\n return this._write(input, config ?? {});\n },\n });\n\n this.writes = writes;\n }\n\n async _write(input: unknown, config: RunnableConfig): Promise<unknown> {\n const writes = this.writes.map((write) => {\n if (_isChannelWriteTupleEntry(write) && _isPassthrough(write.value)) {\n return {\n mapper: write.mapper,\n value: input,\n };\n } else if (_isChannelWriteEntry(write) && _isPassthrough(write.value)) {\n return {\n channel: write.channel,\n value: input,\n skipNone: write.skipNone,\n mapper: write.mapper,\n };\n } else {\n return write;\n }\n });\n await ChannelWrite.doWrite(config, writes);\n return input;\n }\n\n // TODO: Support requireAtLeastOneOf\n static async doWrite(\n config: RunnableConfig,\n writes: (ChannelWriteEntry | ChannelWriteTupleEntry | Send)[]\n ): Promise<void> {\n // validate\n for (const w of writes) {\n if (_isChannelWriteEntry(w)) {\n if (w.channel === TASKS) {\n throw new InvalidUpdateError(\n \"Cannot write to the reserved channel TASKS\"\n );\n }\n if (_isPassthrough(w.value)) {\n throw new InvalidUpdateError(\"PASSTHROUGH value must be replaced\");\n }\n }\n if (_isChannelWriteTupleEntry(w)) {\n if (_isPassthrough(w.value)) {\n throw new InvalidUpdateError(\"PASSTHROUGH value must be replaced\");\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const writeEntries: [string, any][] = [];\n for (const w of writes) {\n if (_isSend(w)) {\n writeEntries.push([TASKS, w]);\n } else if (_isChannelWriteTupleEntry(w)) {\n const mappedResult = await w.mapper.invoke(w.value, config);\n if (mappedResult != null && mappedResult.length > 0) {\n writeEntries.push(...mappedResult);\n }\n } else if (_isChannelWriteEntry(w)) {\n const mappedValue =\n w.mapper !== undefined\n ? await w.mapper.invoke(w.value, config)\n : w.value;\n if (_isSkipWrite(mappedValue)) {\n continue;\n }\n if (w.skipNone && mappedValue === undefined) {\n continue;\n }\n writeEntries.push([w.channel, mappedValue]);\n } else {\n throw new Error(`Invalid write entry: ${JSON.stringify(w)}`);\n }\n }\n const write: TYPE_SEND = config.configurable?.[CONFIG_KEY_SEND];\n write(writeEntries);\n }\n\n static isWriter(runnable: RunnableLike): runnable is ChannelWrite {\n return (\n // eslint-disable-next-line no-instanceof/no-instanceof\n runnable instanceof ChannelWrite ||\n (IS_WRITER in runnable && !!runnable[IS_WRITER])\n );\n }\n\n static registerWriter<T extends Runnable>(runnable: T): T {\n return Object.defineProperty(runnable, IS_WRITER, { value: true });\n }\n}\n\nexport interface ChannelWriteEntry {\n channel: string;\n value: unknown;\n skipNone?: boolean;\n mapper?: Runnable;\n}\n\nfunction _isChannelWriteEntry(x: unknown): x is ChannelWriteEntry {\n return (\n x !== undefined && typeof (x as ChannelWriteEntry).channel === \"string\"\n );\n}\n\nexport interface ChannelWriteTupleEntry {\n value: unknown;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n mapper: Runnable<any, [string, any][]>;\n}\n\nfunction _isChannelWriteTupleEntry(x: unknown): x is ChannelWriteTupleEntry {\n return (\n x !== undefined &&\n !_isChannelWriteEntry(x) &&\n Runnable.isRunnable((x as ChannelWriteTupleEntry).mapper)\n );\n}\n"],"mappings":"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"}
@@ -2,9 +2,6 @@ import { CONFIG_KEY_SEND, TASKS, _isSend } from "../constants.js";
2
2
  import { InvalidUpdateError } from "../errors.js";
3
3
  import { RunnableCallable } from "../utils.js";
4
4
  import { Runnable } from "@langchain/core/runnables";
5
-
6
- //#region src/pregel/write.ts
7
- const SKIP_WRITE = { [Symbol.for("LG_SKIP_WRITE")]: true };
8
5
  function _isSkipWrite(x) {
9
6
  return typeof x === "object" && x?.[Symbol.for("LG_SKIP_WRITE")] !== void 0;
10
7
  }
@@ -56,7 +53,7 @@ var ChannelWrite = class ChannelWrite extends RunnableCallable {
56
53
  static async doWrite(config, writes) {
57
54
  for (const w of writes) {
58
55
  if (_isChannelWriteEntry(w)) {
59
- if (w.channel === TASKS) throw new InvalidUpdateError("Cannot write to the reserved channel TASKS");
56
+ if (w.channel === "__pregel_tasks") throw new InvalidUpdateError("Cannot write to the reserved channel TASKS");
60
57
  if (_isPassthrough(w.value)) throw new InvalidUpdateError("PASSTHROUGH value must be replaced");
61
58
  }
62
59
  if (_isChannelWriteTupleEntry(w)) {
@@ -90,7 +87,7 @@ function _isChannelWriteEntry(x) {
90
87
  function _isChannelWriteTupleEntry(x) {
91
88
  return x !== void 0 && !_isChannelWriteEntry(x) && Runnable.isRunnable(x.mapper);
92
89
  }
93
-
94
90
  //#endregion
95
91
  export { ChannelWrite, PASSTHROUGH };
92
+
96
93
  //# sourceMappingURL=write.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"write.js","names":[],"sources":["../../src/pregel/write.ts"],"sourcesContent":["import {\n Runnable,\n RunnableConfig,\n RunnableLike,\n} from \"@langchain/core/runnables\";\nimport { _isSend, CONFIG_KEY_SEND, Send, TASKS } from \"../constants.js\";\nimport { RunnableCallable } from \"../utils.js\";\nimport { InvalidUpdateError } from \"../errors.js\";\n\ntype TYPE_SEND = (values: Array<[string, unknown]>) => void;\n\nexport const SKIP_WRITE = {\n [Symbol.for(\"LG_SKIP_WRITE\")]: true,\n};\n\nfunction _isSkipWrite(x: unknown) {\n return (\n typeof x === \"object\" &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (x as any)?.[Symbol.for(\"LG_SKIP_WRITE\")] !== undefined\n );\n}\n\nexport const PASSTHROUGH = {\n [Symbol.for(\"LG_PASSTHROUGH\")]: true,\n};\n\nfunction _isPassthrough(x: unknown) {\n return (\n typeof x === \"object\" &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (x as any)?.[Symbol.for(\"LG_PASSTHROUGH\")] !== undefined\n );\n}\n\nconst IS_WRITER = Symbol(\"IS_WRITER\");\n\n/**\n * Mapping of write channels to Runnables that return the value to be written,\n * or None to skip writing.\n */\nexport class ChannelWrite<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunInput = any\n> extends RunnableCallable<RunInput, RunInput> {\n writes: Array<ChannelWriteEntry | ChannelWriteTupleEntry | Send>;\n\n constructor(\n writes: Array<ChannelWriteEntry | ChannelWriteTupleEntry | Send>,\n tags?: string[]\n ) {\n const name = `ChannelWrite<${writes\n .map((packet) => {\n if (_isSend(packet)) {\n return packet.node;\n } else if (\"channel\" in packet) {\n return packet.channel;\n }\n return \"...\";\n })\n .join(\",\")}>`;\n super({\n ...{ writes, name, tags },\n trace: false,\n func: async (input: RunInput, config?: RunnableConfig) => {\n return this._write(input, config ?? {});\n },\n });\n\n this.writes = writes;\n }\n\n async _write(input: unknown, config: RunnableConfig): Promise<unknown> {\n const writes = this.writes.map((write) => {\n if (_isChannelWriteTupleEntry(write) && _isPassthrough(write.value)) {\n return {\n mapper: write.mapper,\n value: input,\n };\n } else if (_isChannelWriteEntry(write) && _isPassthrough(write.value)) {\n return {\n channel: write.channel,\n value: input,\n skipNone: write.skipNone,\n mapper: write.mapper,\n };\n } else {\n return write;\n }\n });\n await ChannelWrite.doWrite(config, writes);\n return input;\n }\n\n // TODO: Support requireAtLeastOneOf\n static async doWrite(\n config: RunnableConfig,\n writes: (ChannelWriteEntry | ChannelWriteTupleEntry | Send)[]\n ): Promise<void> {\n // validate\n for (const w of writes) {\n if (_isChannelWriteEntry(w)) {\n if (w.channel === TASKS) {\n throw new InvalidUpdateError(\n \"Cannot write to the reserved channel TASKS\"\n );\n }\n if (_isPassthrough(w.value)) {\n throw new InvalidUpdateError(\"PASSTHROUGH value must be replaced\");\n }\n }\n if (_isChannelWriteTupleEntry(w)) {\n if (_isPassthrough(w.value)) {\n throw new InvalidUpdateError(\"PASSTHROUGH value must be replaced\");\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const writeEntries: [string, any][] = [];\n for (const w of writes) {\n if (_isSend(w)) {\n writeEntries.push([TASKS, w]);\n } else if (_isChannelWriteTupleEntry(w)) {\n const mappedResult = await w.mapper.invoke(w.value, config);\n if (mappedResult != null && mappedResult.length > 0) {\n writeEntries.push(...mappedResult);\n }\n } else if (_isChannelWriteEntry(w)) {\n const mappedValue =\n w.mapper !== undefined\n ? await w.mapper.invoke(w.value, config)\n : w.value;\n if (_isSkipWrite(mappedValue)) {\n continue;\n }\n if (w.skipNone && mappedValue === undefined) {\n continue;\n }\n writeEntries.push([w.channel, mappedValue]);\n } else {\n throw new Error(`Invalid write entry: ${JSON.stringify(w)}`);\n }\n }\n const write: TYPE_SEND = config.configurable?.[CONFIG_KEY_SEND];\n write(writeEntries);\n }\n\n static isWriter(runnable: RunnableLike): runnable is ChannelWrite {\n return (\n // eslint-disable-next-line no-instanceof/no-instanceof\n runnable instanceof ChannelWrite ||\n (IS_WRITER in runnable && !!runnable[IS_WRITER])\n );\n }\n\n static registerWriter<T extends Runnable>(runnable: T): T {\n return Object.defineProperty(runnable, IS_WRITER, { value: true });\n }\n}\n\nexport interface ChannelWriteEntry {\n channel: string;\n value: unknown;\n skipNone?: boolean;\n mapper?: Runnable;\n}\n\nfunction _isChannelWriteEntry(x: unknown): x is ChannelWriteEntry {\n return (\n x !== undefined && typeof (x as ChannelWriteEntry).channel === \"string\"\n );\n}\n\nexport interface ChannelWriteTupleEntry {\n value: unknown;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n mapper: Runnable<any, [string, any][]>;\n}\n\nfunction _isChannelWriteTupleEntry(x: unknown): x is ChannelWriteTupleEntry {\n return (\n x !== undefined &&\n !_isChannelWriteEntry(x) &&\n Runnable.isRunnable((x as ChannelWriteTupleEntry).mapper)\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"write.js","names":[],"sources":["../../src/pregel/write.ts"],"sourcesContent":["import {\n Runnable,\n RunnableConfig,\n RunnableLike,\n} from \"@langchain/core/runnables\";\nimport { _isSend, CONFIG_KEY_SEND, Send, TASKS } from \"../constants.js\";\nimport { RunnableCallable } from \"../utils.js\";\nimport { InvalidUpdateError } from \"../errors.js\";\n\ntype TYPE_SEND = (values: Array<[string, unknown]>) => void;\n\nexport const SKIP_WRITE = {\n [Symbol.for(\"LG_SKIP_WRITE\")]: true,\n};\n\nfunction _isSkipWrite(x: unknown) {\n return (\n typeof x === \"object\" &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (x as any)?.[Symbol.for(\"LG_SKIP_WRITE\")] !== undefined\n );\n}\n\nexport const PASSTHROUGH = {\n [Symbol.for(\"LG_PASSTHROUGH\")]: true,\n};\n\nfunction _isPassthrough(x: unknown) {\n return (\n typeof x === \"object\" &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (x as any)?.[Symbol.for(\"LG_PASSTHROUGH\")] !== undefined\n );\n}\n\nconst IS_WRITER = Symbol(\"IS_WRITER\");\n\n/**\n * Mapping of write channels to Runnables that return the value to be written,\n * or None to skip writing.\n */\nexport class ChannelWrite<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunInput = any\n> extends RunnableCallable<RunInput, RunInput> {\n writes: Array<ChannelWriteEntry | ChannelWriteTupleEntry | Send>;\n\n constructor(\n writes: Array<ChannelWriteEntry | ChannelWriteTupleEntry | Send>,\n tags?: string[]\n ) {\n const name = `ChannelWrite<${writes\n .map((packet) => {\n if (_isSend(packet)) {\n return packet.node;\n } else if (\"channel\" in packet) {\n return packet.channel;\n }\n return \"...\";\n })\n .join(\",\")}>`;\n super({\n ...{ writes, name, tags },\n trace: false,\n func: async (input: RunInput, config?: RunnableConfig) => {\n return this._write(input, config ?? {});\n },\n });\n\n this.writes = writes;\n }\n\n async _write(input: unknown, config: RunnableConfig): Promise<unknown> {\n const writes = this.writes.map((write) => {\n if (_isChannelWriteTupleEntry(write) && _isPassthrough(write.value)) {\n return {\n mapper: write.mapper,\n value: input,\n };\n } else if (_isChannelWriteEntry(write) && _isPassthrough(write.value)) {\n return {\n channel: write.channel,\n value: input,\n skipNone: write.skipNone,\n mapper: write.mapper,\n };\n } else {\n return write;\n }\n });\n await ChannelWrite.doWrite(config, writes);\n return input;\n }\n\n // TODO: Support requireAtLeastOneOf\n static async doWrite(\n config: RunnableConfig,\n writes: (ChannelWriteEntry | ChannelWriteTupleEntry | Send)[]\n ): Promise<void> {\n // validate\n for (const w of writes) {\n if (_isChannelWriteEntry(w)) {\n if (w.channel === TASKS) {\n throw new InvalidUpdateError(\n \"Cannot write to the reserved channel TASKS\"\n );\n }\n if (_isPassthrough(w.value)) {\n throw new InvalidUpdateError(\"PASSTHROUGH value must be replaced\");\n }\n }\n if (_isChannelWriteTupleEntry(w)) {\n if (_isPassthrough(w.value)) {\n throw new InvalidUpdateError(\"PASSTHROUGH value must be replaced\");\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const writeEntries: [string, any][] = [];\n for (const w of writes) {\n if (_isSend(w)) {\n writeEntries.push([TASKS, w]);\n } else if (_isChannelWriteTupleEntry(w)) {\n const mappedResult = await w.mapper.invoke(w.value, config);\n if (mappedResult != null && mappedResult.length > 0) {\n writeEntries.push(...mappedResult);\n }\n } else if (_isChannelWriteEntry(w)) {\n const mappedValue =\n w.mapper !== undefined\n ? await w.mapper.invoke(w.value, config)\n : w.value;\n if (_isSkipWrite(mappedValue)) {\n continue;\n }\n if (w.skipNone && mappedValue === undefined) {\n continue;\n }\n writeEntries.push([w.channel, mappedValue]);\n } else {\n throw new Error(`Invalid write entry: ${JSON.stringify(w)}`);\n }\n }\n const write: TYPE_SEND = config.configurable?.[CONFIG_KEY_SEND];\n write(writeEntries);\n }\n\n static isWriter(runnable: RunnableLike): runnable is ChannelWrite {\n return (\n // eslint-disable-next-line no-instanceof/no-instanceof\n runnable instanceof ChannelWrite ||\n (IS_WRITER in runnable && !!runnable[IS_WRITER])\n );\n }\n\n static registerWriter<T extends Runnable>(runnable: T): T {\n return Object.defineProperty(runnable, IS_WRITER, { value: true });\n }\n}\n\nexport interface ChannelWriteEntry {\n channel: string;\n value: unknown;\n skipNone?: boolean;\n mapper?: Runnable;\n}\n\nfunction _isChannelWriteEntry(x: unknown): x is ChannelWriteEntry {\n return (\n x !== undefined && typeof (x as ChannelWriteEntry).channel === \"string\"\n );\n}\n\nexport interface ChannelWriteTupleEntry {\n value: unknown;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n mapper: Runnable<any, [string, any][]>;\n}\n\nfunction _isChannelWriteTupleEntry(x: unknown): x is ChannelWriteTupleEntry {\n return (\n x !== undefined &&\n !_isChannelWriteEntry(x) &&\n Runnable.isRunnable((x as ChannelWriteTupleEntry).mapper)\n );\n}\n"],"mappings":";;;;AAeA,SAAS,aAAa,GAAY;AAChC,QACE,OAAO,MAAM,YAEZ,IAAY,OAAO,IAAI,gBAAgB,MAAM,KAAA;;AAIlD,MAAa,cAAc,GACxB,OAAO,IAAI,iBAAiB,GAAG,MACjC;AAED,SAAS,eAAe,GAAY;AAClC,QACE,OAAO,MAAM,YAEZ,IAAY,OAAO,IAAI,iBAAiB,MAAM,KAAA;;AAInD,MAAM,YAAY,OAAO,YAAY;;;;;AAMrC,IAAa,eAAb,MAAa,qBAGH,iBAAqC;CAC7C;CAEA,YACE,QACA,MACA;EACA,MAAM,OAAO,gBAAgB,OAC1B,KAAK,WAAW;AACf,OAAI,QAAQ,OAAO,CACjB,QAAO,OAAO;YACL,aAAa,OACtB,QAAO,OAAO;AAEhB,UAAO;IACP,CACD,KAAK,IAAI,CAAC;AACb,QAAM;GACC;GAAQ;GAAM;GACnB,OAAO;GACP,MAAM,OAAO,OAAiB,WAA4B;AACxD,WAAO,KAAK,OAAO,OAAO,UAAU,EAAE,CAAC;;GAE1C,CAAC;AAEF,OAAK,SAAS;;CAGhB,MAAM,OAAO,OAAgB,QAA0C;EACrE,MAAM,SAAS,KAAK,OAAO,KAAK,UAAU;AACxC,OAAI,0BAA0B,MAAM,IAAI,eAAe,MAAM,MAAM,CACjE,QAAO;IACL,QAAQ,MAAM;IACd,OAAO;IACR;YACQ,qBAAqB,MAAM,IAAI,eAAe,MAAM,MAAM,CACnE,QAAO;IACL,SAAS,MAAM;IACf,OAAO;IACP,UAAU,MAAM;IAChB,QAAQ,MAAM;IACf;OAED,QAAO;IAET;AACF,QAAM,aAAa,QAAQ,QAAQ,OAAO;AAC1C,SAAO;;CAIT,aAAa,QACX,QACA,QACe;AAEf,OAAK,MAAM,KAAK,QAAQ;AACtB,OAAI,qBAAqB,EAAE,EAAE;AAC3B,QAAI,EAAE,YAAA,iBACJ,OAAM,IAAI,mBACR,6CACD;AAEH,QAAI,eAAe,EAAE,MAAM,CACzB,OAAM,IAAI,mBAAmB,qCAAqC;;AAGtE,OAAI,0BAA0B,EAAE;QAC1B,eAAe,EAAE,MAAM,CACzB,OAAM,IAAI,mBAAmB,qCAAqC;;;EAKxE,MAAM,eAAgC,EAAE;AACxC,OAAK,MAAM,KAAK,OACd,KAAI,QAAQ,EAAE,CACZ,cAAa,KAAK,CAAC,OAAO,EAAE,CAAC;WACpB,0BAA0B,EAAE,EAAE;GACvC,MAAM,eAAe,MAAM,EAAE,OAAO,OAAO,EAAE,OAAO,OAAO;AAC3D,OAAI,gBAAgB,QAAQ,aAAa,SAAS,EAChD,cAAa,KAAK,GAAG,aAAa;aAE3B,qBAAqB,EAAE,EAAE;GAClC,MAAM,cACJ,EAAE,WAAW,KAAA,IACT,MAAM,EAAE,OAAO,OAAO,EAAE,OAAO,OAAO,GACtC,EAAE;AACR,OAAI,aAAa,YAAY,CAC3B;AAEF,OAAI,EAAE,YAAY,gBAAgB,KAAA,EAChC;AAEF,gBAAa,KAAK,CAAC,EAAE,SAAS,YAAY,CAAC;QAE3C,OAAM,IAAI,MAAM,wBAAwB,KAAK,UAAU,EAAE,GAAG;EAGhE,MAAM,QAAmB,OAAO,eAAe;AAC/C,QAAM,aAAa;;CAGrB,OAAO,SAAS,UAAkD;AAChE,SAEE,oBAAoB,gBACnB,aAAa,YAAY,CAAC,CAAC,SAAS;;CAIzC,OAAO,eAAmC,UAAgB;AACxD,SAAO,OAAO,eAAe,UAAU,WAAW,EAAE,OAAO,MAAM,CAAC;;;AAWtE,SAAS,qBAAqB,GAAoC;AAChE,QACE,MAAM,KAAA,KAAa,OAAQ,EAAwB,YAAY;;AAUnE,SAAS,0BAA0B,GAAyC;AAC1E,QACE,MAAM,KAAA,KACN,CAAC,qBAAqB,EAAE,IACxB,SAAS,WAAY,EAA6B,OAAO"}
package/dist/remote.cjs CHANGED
@@ -1,4 +1,3 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_remote = require('./pregel/remote.cjs');
3
-
4
- exports.RemoteGraph = require_remote.RemoteGraph;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_remote = require("./pregel/remote.cjs");
3
+ exports.RemoteGraph = require_remote.RemoteGraph;
package/dist/remote.js CHANGED
@@ -1,3 +1,2 @@
1
1
  import { RemoteGraph } from "./pregel/remote.js";
2
-
3
- export { RemoteGraph };
2
+ export { RemoteGraph };
@@ -1,11 +1,10 @@
1
1
  let _langchain_core_singletons = require("@langchain/core/singletons");
2
2
  let node_async_hooks = require("node:async_hooks");
3
-
4
3
  //#region src/setup/async_local_storage.ts
5
4
  function initializeAsyncLocalStorageSingleton() {
6
5
  _langchain_core_singletons.AsyncLocalStorageProviderSingleton.initializeGlobalInstance(new node_async_hooks.AsyncLocalStorage());
7
6
  }
8
-
9
7
  //#endregion
10
8
  exports.initializeAsyncLocalStorageSingleton = initializeAsyncLocalStorageSingleton;
9
+
11
10
  //# sourceMappingURL=async_local_storage.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"async_local_storage.cjs","names":["AsyncLocalStorage"],"sources":["../../src/setup/async_local_storage.ts"],"sourcesContent":["import { AsyncLocalStorageProviderSingleton } from \"@langchain/core/singletons\";\nimport { AsyncLocalStorage } from \"node:async_hooks\";\n\nexport function initializeAsyncLocalStorageSingleton() {\n AsyncLocalStorageProviderSingleton.initializeGlobalInstance(\n new AsyncLocalStorage()\n );\n}\n"],"mappings":";;;;AAGA,SAAgB,uCAAuC;AACrD,+DAAmC,yBACjC,IAAIA,oCAAmB,CACxB"}
1
+ {"version":3,"file":"async_local_storage.cjs","names":["AsyncLocalStorage"],"sources":["../../src/setup/async_local_storage.ts"],"sourcesContent":["import { AsyncLocalStorageProviderSingleton } from \"@langchain/core/singletons\";\nimport { AsyncLocalStorage } from \"node:async_hooks\";\n\nexport function initializeAsyncLocalStorageSingleton() {\n AsyncLocalStorageProviderSingleton.initializeGlobalInstance(\n new AsyncLocalStorage()\n );\n}\n"],"mappings":";;;AAGA,SAAgB,uCAAuC;AACrD,4BAAA,mCAAmC,yBACjC,IAAIA,iBAAAA,mBAAmB,CACxB"}
@@ -1,11 +1,10 @@
1
1
  import { AsyncLocalStorageProviderSingleton } from "@langchain/core/singletons";
2
2
  import { AsyncLocalStorage } from "node:async_hooks";
3
-
4
3
  //#region src/setup/async_local_storage.ts
5
4
  function initializeAsyncLocalStorageSingleton() {
6
5
  AsyncLocalStorageProviderSingleton.initializeGlobalInstance(new AsyncLocalStorage());
7
6
  }
8
-
9
7
  //#endregion
10
8
  export { initializeAsyncLocalStorageSingleton };
9
+
11
10
  //# sourceMappingURL=async_local_storage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"async_local_storage.js","names":[],"sources":["../../src/setup/async_local_storage.ts"],"sourcesContent":["import { AsyncLocalStorageProviderSingleton } from \"@langchain/core/singletons\";\nimport { AsyncLocalStorage } from \"node:async_hooks\";\n\nexport function initializeAsyncLocalStorageSingleton() {\n AsyncLocalStorageProviderSingleton.initializeGlobalInstance(\n new AsyncLocalStorage()\n );\n}\n"],"mappings":";;;;AAGA,SAAgB,uCAAuC;AACrD,oCAAmC,yBACjC,IAAI,mBAAmB,CACxB"}
1
+ {"version":3,"file":"async_local_storage.js","names":[],"sources":["../../src/setup/async_local_storage.ts"],"sourcesContent":["import { AsyncLocalStorageProviderSingleton } from \"@langchain/core/singletons\";\nimport { AsyncLocalStorage } from \"node:async_hooks\";\n\nexport function initializeAsyncLocalStorageSingleton() {\n AsyncLocalStorageProviderSingleton.initializeGlobalInstance(\n new AsyncLocalStorage()\n );\n}\n"],"mappings":";;;AAGA,SAAgB,uCAAuC;AACrD,oCAAmC,yBACjC,IAAI,mBAAmB,CACxB"}
@@ -1,5 +1,4 @@
1
- const require_types = require('./types.cjs');
2
-
1
+ const require_types = require("./types.cjs");
3
2
  //#region src/state/adapter.ts
4
3
  /**
5
4
  * Get the JSON schema from a SerializableSchema.
@@ -46,8 +45,8 @@ function getSchemaDefaultGetter(schema) {
46
45
  }
47
46
  } catch {}
48
47
  }
49
-
50
48
  //#endregion
51
49
  exports.getJsonSchemaFromSchema = getJsonSchemaFromSchema;
52
50
  exports.getSchemaDefaultGetter = getSchemaDefaultGetter;
51
+
53
52
  //# sourceMappingURL=adapter.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.cjs","names":["isStandardJSONSchema","isStandardSchema"],"sources":["../../src/state/adapter.ts"],"sourcesContent":["/**\n * Adapter utilities for working with Standard Schema.\n */\nimport type { SerializableSchema } from \"./types.js\";\nimport { isStandardJSONSchema, isStandardSchema } from \"./types.js\";\n\n/**\n * Get the JSON schema from a SerializableSchema.\n */\nexport function getJsonSchemaFromSchema(\n schema: SerializableSchema | unknown\n): Record<string, unknown> | undefined {\n if (isStandardJSONSchema(schema)) {\n try {\n const standard = schema[\"~standard\"];\n return standard.jsonSchema.input({ target: \"draft-07\" });\n } catch {\n return undefined;\n }\n }\n return undefined;\n}\n\n/**\n * Detect if a schema has a default value by validating `undefined`.\n *\n * Uses the Standard Schema `~standard.validate` API to detect defaults.\n * If the schema accepts `undefined` and returns a value, that value is the default.\n *\n * This approach is library-agnostic and works with any Standard Schema compliant\n * library (Zod, Valibot, ArkType, etc.) without needing to introspect internals.\n *\n * @param schema - The schema to check for a default value.\n * @returns A factory function returning the default, or undefined if no default exists.\n *\n * @example\n * ```ts\n * const getter = getSchemaDefaultGetter(z.string().default(\"hello\"));\n * getter?.(); // \"hello\"\n *\n * const noDefault = getSchemaDefaultGetter(z.string());\n * noDefault; // undefined\n * ```\n */\nexport function getSchemaDefaultGetter(\n schema: SerializableSchema | unknown\n): (() => unknown) | undefined {\n if (schema == null) {\n return undefined;\n }\n\n if (!isStandardSchema(schema)) {\n return undefined;\n }\n\n try {\n const result = schema[\"~standard\"].validate(undefined);\n\n // Handle sync result (not a Promise)\n // Default values are always synchronous - async validation only happens\n // with async refinements, which don't affect default value resolution.\n if (\n result &&\n typeof result === \"object\" &&\n !(\"then\" in result && typeof result.then === \"function\")\n ) {\n const syncResult = result as { issues?: unknown; value?: unknown };\n if (!syncResult.issues) {\n const defaultValue = syncResult.value;\n return () => defaultValue;\n }\n }\n } catch {\n // Validation threw - no default\n }\n\n return undefined;\n}\n"],"mappings":";;;;;;AASA,SAAgB,wBACd,QACqC;AACrC,KAAIA,mCAAqB,OAAO,CAC9B,KAAI;AAEF,SADiB,OAAO,aACR,WAAW,MAAM,EAAE,QAAQ,YAAY,CAAC;SAClD;AACN;;;;;;;;;;;;;;;;;;;;;;;;AA2BN,SAAgB,uBACd,QAC6B;AAC7B,KAAI,UAAU,KACZ;AAGF,KAAI,CAACC,+BAAiB,OAAO,CAC3B;AAGF,KAAI;EACF,MAAM,SAAS,OAAO,aAAa,SAAS,OAAU;AAKtD,MACE,UACA,OAAO,WAAW,YAClB,EAAE,UAAU,UAAU,OAAO,OAAO,SAAS,aAC7C;GACA,MAAM,aAAa;AACnB,OAAI,CAAC,WAAW,QAAQ;IACtB,MAAM,eAAe,WAAW;AAChC,iBAAa;;;SAGX"}
1
+ {"version":3,"file":"adapter.cjs","names":["isStandardJSONSchema","isStandardSchema"],"sources":["../../src/state/adapter.ts"],"sourcesContent":["/**\n * Adapter utilities for working with Standard Schema.\n */\nimport type { SerializableSchema } from \"./types.js\";\nimport { isStandardJSONSchema, isStandardSchema } from \"./types.js\";\n\n/**\n * Get the JSON schema from a SerializableSchema.\n */\nexport function getJsonSchemaFromSchema(\n schema: SerializableSchema | unknown\n): Record<string, unknown> | undefined {\n if (isStandardJSONSchema(schema)) {\n try {\n const standard = schema[\"~standard\"];\n return standard.jsonSchema.input({ target: \"draft-07\" });\n } catch {\n return undefined;\n }\n }\n return undefined;\n}\n\n/**\n * Detect if a schema has a default value by validating `undefined`.\n *\n * Uses the Standard Schema `~standard.validate` API to detect defaults.\n * If the schema accepts `undefined` and returns a value, that value is the default.\n *\n * This approach is library-agnostic and works with any Standard Schema compliant\n * library (Zod, Valibot, ArkType, etc.) without needing to introspect internals.\n *\n * @param schema - The schema to check for a default value.\n * @returns A factory function returning the default, or undefined if no default exists.\n *\n * @example\n * ```ts\n * const getter = getSchemaDefaultGetter(z.string().default(\"hello\"));\n * getter?.(); // \"hello\"\n *\n * const noDefault = getSchemaDefaultGetter(z.string());\n * noDefault; // undefined\n * ```\n */\nexport function getSchemaDefaultGetter(\n schema: SerializableSchema | unknown\n): (() => unknown) | undefined {\n if (schema == null) {\n return undefined;\n }\n\n if (!isStandardSchema(schema)) {\n return undefined;\n }\n\n try {\n const result = schema[\"~standard\"].validate(undefined);\n\n // Handle sync result (not a Promise)\n // Default values are always synchronous - async validation only happens\n // with async refinements, which don't affect default value resolution.\n if (\n result &&\n typeof result === \"object\" &&\n !(\"then\" in result && typeof result.then === \"function\")\n ) {\n const syncResult = result as { issues?: unknown; value?: unknown };\n if (!syncResult.issues) {\n const defaultValue = syncResult.value;\n return () => defaultValue;\n }\n }\n } catch {\n // Validation threw - no default\n }\n\n return undefined;\n}\n"],"mappings":";;;;;AASA,SAAgB,wBACd,QACqC;AACrC,KAAIA,cAAAA,qBAAqB,OAAO,CAC9B,KAAI;AAEF,SADiB,OAAO,aACR,WAAW,MAAM,EAAE,QAAQ,YAAY,CAAC;SAClD;AACN;;;;;;;;;;;;;;;;;;;;;;;;AA2BN,SAAgB,uBACd,QAC6B;AAC7B,KAAI,UAAU,KACZ;AAGF,KAAI,CAACC,cAAAA,iBAAiB,OAAO,CAC3B;AAGF,KAAI;EACF,MAAM,SAAS,OAAO,aAAa,SAAS,KAAA,EAAU;AAKtD,MACE,UACA,OAAO,WAAW,YAClB,EAAE,UAAU,UAAU,OAAO,OAAO,SAAS,aAC7C;GACA,MAAM,aAAa;AACnB,OAAI,CAAC,WAAW,QAAQ;IACtB,MAAM,eAAe,WAAW;AAChC,iBAAa;;;SAGX"}
@@ -1,5 +1,4 @@
1
1
  import { isStandardJSONSchema, isStandardSchema } from "./types.js";
2
-
3
2
  //#region src/state/adapter.ts
4
3
  /**
5
4
  * Get the JSON schema from a SerializableSchema.
@@ -46,7 +45,7 @@ function getSchemaDefaultGetter(schema) {
46
45
  }
47
46
  } catch {}
48
47
  }
49
-
50
48
  //#endregion
51
49
  export { getJsonSchemaFromSchema, getSchemaDefaultGetter };
50
+
52
51
  //# sourceMappingURL=adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","names":[],"sources":["../../src/state/adapter.ts"],"sourcesContent":["/**\n * Adapter utilities for working with Standard Schema.\n */\nimport type { SerializableSchema } from \"./types.js\";\nimport { isStandardJSONSchema, isStandardSchema } from \"./types.js\";\n\n/**\n * Get the JSON schema from a SerializableSchema.\n */\nexport function getJsonSchemaFromSchema(\n schema: SerializableSchema | unknown\n): Record<string, unknown> | undefined {\n if (isStandardJSONSchema(schema)) {\n try {\n const standard = schema[\"~standard\"];\n return standard.jsonSchema.input({ target: \"draft-07\" });\n } catch {\n return undefined;\n }\n }\n return undefined;\n}\n\n/**\n * Detect if a schema has a default value by validating `undefined`.\n *\n * Uses the Standard Schema `~standard.validate` API to detect defaults.\n * If the schema accepts `undefined` and returns a value, that value is the default.\n *\n * This approach is library-agnostic and works with any Standard Schema compliant\n * library (Zod, Valibot, ArkType, etc.) without needing to introspect internals.\n *\n * @param schema - The schema to check for a default value.\n * @returns A factory function returning the default, or undefined if no default exists.\n *\n * @example\n * ```ts\n * const getter = getSchemaDefaultGetter(z.string().default(\"hello\"));\n * getter?.(); // \"hello\"\n *\n * const noDefault = getSchemaDefaultGetter(z.string());\n * noDefault; // undefined\n * ```\n */\nexport function getSchemaDefaultGetter(\n schema: SerializableSchema | unknown\n): (() => unknown) | undefined {\n if (schema == null) {\n return undefined;\n }\n\n if (!isStandardSchema(schema)) {\n return undefined;\n }\n\n try {\n const result = schema[\"~standard\"].validate(undefined);\n\n // Handle sync result (not a Promise)\n // Default values are always synchronous - async validation only happens\n // with async refinements, which don't affect default value resolution.\n if (\n result &&\n typeof result === \"object\" &&\n !(\"then\" in result && typeof result.then === \"function\")\n ) {\n const syncResult = result as { issues?: unknown; value?: unknown };\n if (!syncResult.issues) {\n const defaultValue = syncResult.value;\n return () => defaultValue;\n }\n }\n } catch {\n // Validation threw - no default\n }\n\n return undefined;\n}\n"],"mappings":";;;;;;AASA,SAAgB,wBACd,QACqC;AACrC,KAAI,qBAAqB,OAAO,CAC9B,KAAI;AAEF,SADiB,OAAO,aACR,WAAW,MAAM,EAAE,QAAQ,YAAY,CAAC;SAClD;AACN;;;;;;;;;;;;;;;;;;;;;;;;AA2BN,SAAgB,uBACd,QAC6B;AAC7B,KAAI,UAAU,KACZ;AAGF,KAAI,CAAC,iBAAiB,OAAO,CAC3B;AAGF,KAAI;EACF,MAAM,SAAS,OAAO,aAAa,SAAS,OAAU;AAKtD,MACE,UACA,OAAO,WAAW,YAClB,EAAE,UAAU,UAAU,OAAO,OAAO,SAAS,aAC7C;GACA,MAAM,aAAa;AACnB,OAAI,CAAC,WAAW,QAAQ;IACtB,MAAM,eAAe,WAAW;AAChC,iBAAa;;;SAGX"}
1
+ {"version":3,"file":"adapter.js","names":[],"sources":["../../src/state/adapter.ts"],"sourcesContent":["/**\n * Adapter utilities for working with Standard Schema.\n */\nimport type { SerializableSchema } from \"./types.js\";\nimport { isStandardJSONSchema, isStandardSchema } from \"./types.js\";\n\n/**\n * Get the JSON schema from a SerializableSchema.\n */\nexport function getJsonSchemaFromSchema(\n schema: SerializableSchema | unknown\n): Record<string, unknown> | undefined {\n if (isStandardJSONSchema(schema)) {\n try {\n const standard = schema[\"~standard\"];\n return standard.jsonSchema.input({ target: \"draft-07\" });\n } catch {\n return undefined;\n }\n }\n return undefined;\n}\n\n/**\n * Detect if a schema has a default value by validating `undefined`.\n *\n * Uses the Standard Schema `~standard.validate` API to detect defaults.\n * If the schema accepts `undefined` and returns a value, that value is the default.\n *\n * This approach is library-agnostic and works with any Standard Schema compliant\n * library (Zod, Valibot, ArkType, etc.) without needing to introspect internals.\n *\n * @param schema - The schema to check for a default value.\n * @returns A factory function returning the default, or undefined if no default exists.\n *\n * @example\n * ```ts\n * const getter = getSchemaDefaultGetter(z.string().default(\"hello\"));\n * getter?.(); // \"hello\"\n *\n * const noDefault = getSchemaDefaultGetter(z.string());\n * noDefault; // undefined\n * ```\n */\nexport function getSchemaDefaultGetter(\n schema: SerializableSchema | unknown\n): (() => unknown) | undefined {\n if (schema == null) {\n return undefined;\n }\n\n if (!isStandardSchema(schema)) {\n return undefined;\n }\n\n try {\n const result = schema[\"~standard\"].validate(undefined);\n\n // Handle sync result (not a Promise)\n // Default values are always synchronous - async validation only happens\n // with async refinements, which don't affect default value resolution.\n if (\n result &&\n typeof result === \"object\" &&\n !(\"then\" in result && typeof result.then === \"function\")\n ) {\n const syncResult = result as { issues?: unknown; value?: unknown };\n if (!syncResult.issues) {\n const defaultValue = syncResult.value;\n return () => defaultValue;\n }\n }\n } catch {\n // Validation threw - no default\n }\n\n return undefined;\n}\n"],"mappings":";;;;;AASA,SAAgB,wBACd,QACqC;AACrC,KAAI,qBAAqB,OAAO,CAC9B,KAAI;AAEF,SADiB,OAAO,aACR,WAAW,MAAM,EAAE,QAAQ,YAAY,CAAC;SAClD;AACN;;;;;;;;;;;;;;;;;;;;;;;;AA2BN,SAAgB,uBACd,QAC6B;AAC7B,KAAI,UAAU,KACZ;AAGF,KAAI,CAAC,iBAAiB,OAAO,CAC3B;AAGF,KAAI;EACF,MAAM,SAAS,OAAO,aAAa,SAAS,KAAA,EAAU;AAKtD,MACE,UACA,OAAO,WAAW,YAClB,EAAE,UAAU,UAAU,OAAO,OAAO,SAAS,aAC7C;GACA,MAAM,aAAa;AACnB,OAAI,CAAC,WAAW,QAAQ;IACtB,MAAM,eAAe,WAAW;AAChC,iBAAa;;;SAGX"}
@@ -1,8 +1,8 @@
1
- const require_types = require('./types.cjs');
2
- const require_adapter = require('./adapter.cjs');
3
- const require_reduced = require('./values/reduced.cjs');
4
- const require_untracked = require('./values/untracked.cjs');
5
- const require_schema = require('./schema.cjs');
6
- const require_messages = require('./prebuilt/messages.cjs');
7
- require('./prebuilt/index.cjs');
8
- require('./values/index.cjs');
1
+ require("./types.cjs");
2
+ require("./adapter.cjs");
3
+ require("./values/reduced.cjs");
4
+ require("./values/untracked.cjs");
5
+ require("./schema.cjs");
6
+ require("./prebuilt/messages.cjs");
7
+ require("./prebuilt/index.cjs");
8
+ require("./values/index.cjs");
@@ -3,5 +3,4 @@ import { ReducedValue, ReducedValueInit } from "./values/reduced.js";
3
3
  import { UntrackedValue, UntrackedValueInit } from "./values/untracked.js";
4
4
  import { InferStateSchemaUpdate, InferStateSchemaValue, StateSchema, StateSchemaField, StateSchemaFields } from "./schema.js";
5
5
  import { getJsonSchemaFromSchema, getSchemaDefaultGetter } from "./adapter.js";
6
- import { MessagesValue } from "./prebuilt/messages.js";
7
- import "./prebuilt/index.js";
6
+ import { MessagesValue } from "./prebuilt/messages.js";
@@ -1,10 +1,9 @@
1
- import { isSerializableSchema, isStandardSchema } from "./types.js";
2
- import { getJsonSchemaFromSchema, getSchemaDefaultGetter } from "./adapter.js";
3
- import { ReducedValue } from "./values/reduced.js";
4
- import { UntrackedValue } from "./values/untracked.js";
5
- import { StateSchema } from "./schema.js";
6
- import { MessagesValue } from "./prebuilt/messages.js";
1
+ import "./types.js";
2
+ import "./adapter.js";
3
+ import "./values/reduced.js";
4
+ import "./values/untracked.js";
5
+ import "./schema.js";
6
+ import "./prebuilt/messages.js";
7
7
  import "./prebuilt/index.js";
8
8
  import "./values/index.js";
9
-
10
- export { };
9
+ export {};
@@ -1 +1 @@
1
- const require_messages = require('./messages.cjs');
1
+ require("./messages.cjs");
@@ -1,3 +1,2 @@
1
- import { MessagesValue } from "./messages.js";
2
-
3
- export { };
1
+ import "./messages.js";
2
+ export {};
@@ -1,7 +1,6 @@
1
- const require_reduced = require('../values/reduced.cjs');
2
- const require_messages_reducer = require('../../graph/messages_reducer.cjs');
1
+ const require_reduced = require("../values/reduced.cjs");
2
+ const require_messages_reducer = require("../../graph/messages_reducer.cjs");
3
3
  let zod_v4 = require("zod/v4");
4
-
5
4
  //#region src/state/prebuilt/messages.ts
6
5
  const messagesValueSchema = zod_v4.z.custom().default(() => []);
7
6
  const messagesInputSchema = zod_v4.z.custom();
@@ -13,7 +12,7 @@ const MessagesValue = new require_reduced.ReducedValue(messagesValueSchema, {
13
12
  description: "A list of chat messages"
14
13
  }
15
14
  });
16
-
17
15
  //#endregion
18
16
  exports.MessagesValue = MessagesValue;
17
+
19
18
  //# sourceMappingURL=messages.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"messages.cjs","names":["z","ReducedValue","messagesStateReducer"],"sources":["../../../src/state/prebuilt/messages.ts"],"sourcesContent":["import type { BaseMessage } from \"@langchain/core/messages\";\nimport { z } from \"zod/v4\";\n\nimport { ReducedValue } from \"../values/reduced.js\";\nimport {\n messagesStateReducer,\n type Messages,\n} from \"../../graph/messages_reducer.js\";\n\nconst messagesValueSchema = z.custom<BaseMessage[]>().default(() => []);\nconst messagesInputSchema = z.custom<Messages>();\n\nexport const MessagesValue = new ReducedValue(\n // Value schema: array of BaseMessage\n messagesValueSchema,\n {\n // Input schema: accepts flexible message types\n inputSchema: messagesInputSchema,\n // Use the existing messagesStateReducer\n reducer: messagesStateReducer,\n // JSON schema extras for Studio\n jsonSchemaExtra: {\n langgraph_type: \"messages\",\n description: \"A list of chat messages\",\n },\n }\n);\n"],"mappings":";;;;;AASA,MAAM,sBAAsBA,SAAE,QAAuB,CAAC,cAAc,EAAE,CAAC;AACvE,MAAM,sBAAsBA,SAAE,QAAkB;AAEhD,MAAa,gBAAgB,IAAIC,6BAE/B,qBACA;CAEE,aAAa;CAEb,SAASC;CAET,iBAAiB;EACf,gBAAgB;EAChB,aAAa;EACd;CACF,CACF"}
1
+ {"version":3,"file":"messages.cjs","names":["z","ReducedValue","messagesStateReducer"],"sources":["../../../src/state/prebuilt/messages.ts"],"sourcesContent":["import type { BaseMessage } from \"@langchain/core/messages\";\nimport { z } from \"zod/v4\";\n\nimport { ReducedValue } from \"../values/reduced.js\";\nimport {\n messagesStateReducer,\n type Messages,\n} from \"../../graph/messages_reducer.js\";\n\nconst messagesValueSchema = z.custom<BaseMessage[]>().default(() => []);\nconst messagesInputSchema = z.custom<Messages>();\n\nexport const MessagesValue = new ReducedValue(\n // Value schema: array of BaseMessage\n messagesValueSchema,\n {\n // Input schema: accepts flexible message types\n inputSchema: messagesInputSchema,\n // Use the existing messagesStateReducer\n reducer: messagesStateReducer,\n // JSON schema extras for Studio\n jsonSchemaExtra: {\n langgraph_type: \"messages\",\n description: \"A list of chat messages\",\n },\n }\n);\n"],"mappings":";;;;AASA,MAAM,sBAAsBA,OAAAA,EAAE,QAAuB,CAAC,cAAc,EAAE,CAAC;AACvE,MAAM,sBAAsBA,OAAAA,EAAE,QAAkB;AAEhD,MAAa,gBAAgB,IAAIC,gBAAAA,aAE/B,qBACA;CAEE,aAAa;CAEb,SAASC,yBAAAA;CAET,iBAAiB;EACf,gBAAgB;EAChB,aAAa;EACd;CACF,CACF"}
@@ -1,19 +1,15 @@
1
1
  import { ReducedValue } from "../values/reduced.js";
2
2
  import { messagesStateReducer } from "../../graph/messages_reducer.js";
3
3
  import { z } from "zod/v4";
4
-
5
- //#region src/state/prebuilt/messages.ts
6
- const messagesValueSchema = z.custom().default(() => []);
7
- const messagesInputSchema = z.custom();
8
- const MessagesValue = new ReducedValue(messagesValueSchema, {
9
- inputSchema: messagesInputSchema,
4
+ const MessagesValue = new ReducedValue(z.custom().default(() => []), {
5
+ inputSchema: z.custom(),
10
6
  reducer: messagesStateReducer,
11
7
  jsonSchemaExtra: {
12
8
  langgraph_type: "messages",
13
9
  description: "A list of chat messages"
14
10
  }
15
11
  });
16
-
17
12
  //#endregion
18
13
  export { MessagesValue };
14
+
19
15
  //# sourceMappingURL=messages.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","names":[],"sources":["../../../src/state/prebuilt/messages.ts"],"sourcesContent":["import type { BaseMessage } from \"@langchain/core/messages\";\nimport { z } from \"zod/v4\";\n\nimport { ReducedValue } from \"../values/reduced.js\";\nimport {\n messagesStateReducer,\n type Messages,\n} from \"../../graph/messages_reducer.js\";\n\nconst messagesValueSchema = z.custom<BaseMessage[]>().default(() => []);\nconst messagesInputSchema = z.custom<Messages>();\n\nexport const MessagesValue = new ReducedValue(\n // Value schema: array of BaseMessage\n messagesValueSchema,\n {\n // Input schema: accepts flexible message types\n inputSchema: messagesInputSchema,\n // Use the existing messagesStateReducer\n reducer: messagesStateReducer,\n // JSON schema extras for Studio\n jsonSchemaExtra: {\n langgraph_type: \"messages\",\n description: \"A list of chat messages\",\n },\n }\n);\n"],"mappings":";;;;;AASA,MAAM,sBAAsB,EAAE,QAAuB,CAAC,cAAc,EAAE,CAAC;AACvE,MAAM,sBAAsB,EAAE,QAAkB;AAEhD,MAAa,gBAAgB,IAAI,aAE/B,qBACA;CAEE,aAAa;CAEb,SAAS;CAET,iBAAiB;EACf,gBAAgB;EAChB,aAAa;EACd;CACF,CACF"}
1
+ {"version":3,"file":"messages.js","names":[],"sources":["../../../src/state/prebuilt/messages.ts"],"sourcesContent":["import type { BaseMessage } from \"@langchain/core/messages\";\nimport { z } from \"zod/v4\";\n\nimport { ReducedValue } from \"../values/reduced.js\";\nimport {\n messagesStateReducer,\n type Messages,\n} from \"../../graph/messages_reducer.js\";\n\nconst messagesValueSchema = z.custom<BaseMessage[]>().default(() => []);\nconst messagesInputSchema = z.custom<Messages>();\n\nexport const MessagesValue = new ReducedValue(\n // Value schema: array of BaseMessage\n messagesValueSchema,\n {\n // Input schema: accepts flexible message types\n inputSchema: messagesInputSchema,\n // Use the existing messagesStateReducer\n reducer: messagesStateReducer,\n // JSON schema extras for Studio\n jsonSchemaExtra: {\n langgraph_type: \"messages\",\n description: \"A list of chat messages\",\n },\n }\n);\n"],"mappings":";;;AAYA,MAAa,gBAAgB,IAAI,aAHL,EAAE,QAAuB,CAAC,cAAc,EAAE,CAAC,EAMrE;CAEE,aAPwB,EAAE,QAAkB;CAS5C,SAAS;CAET,iBAAiB;EACf,gBAAgB;EAChB,aAAa;EACd;CACF,CACF"}