@langchain/langgraph 1.1.4 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/dist/channels/any_value.d.cts +0 -1
  2. package/dist/channels/any_value.d.cts.map +1 -1
  3. package/dist/channels/any_value.d.ts +0 -1
  4. package/dist/channels/any_value.d.ts.map +1 -1
  5. package/dist/channels/base.d.cts.map +1 -1
  6. package/dist/channels/base.d.ts.map +1 -1
  7. package/dist/channels/binop.cjs +13 -2
  8. package/dist/channels/binop.cjs.map +1 -1
  9. package/dist/channels/binop.d.cts +4 -2
  10. package/dist/channels/binop.d.cts.map +1 -1
  11. package/dist/channels/binop.d.ts +4 -2
  12. package/dist/channels/binop.d.ts.map +1 -1
  13. package/dist/channels/binop.js +14 -3
  14. package/dist/channels/binop.js.map +1 -1
  15. package/dist/channels/dynamic_barrier_value.d.cts +0 -10
  16. package/dist/channels/dynamic_barrier_value.d.cts.map +1 -1
  17. package/dist/channels/dynamic_barrier_value.d.ts +0 -10
  18. package/dist/channels/dynamic_barrier_value.d.ts.map +1 -1
  19. package/dist/channels/ephemeral_value.d.cts +0 -1
  20. package/dist/channels/ephemeral_value.d.cts.map +1 -1
  21. package/dist/channels/ephemeral_value.d.ts +0 -1
  22. package/dist/channels/ephemeral_value.d.ts.map +1 -1
  23. package/dist/channels/last_value.d.cts +0 -1
  24. package/dist/channels/last_value.d.cts.map +1 -1
  25. package/dist/channels/last_value.d.ts +0 -1
  26. package/dist/channels/last_value.d.ts.map +1 -1
  27. package/dist/channels/named_barrier_value.d.cts +0 -1
  28. package/dist/channels/named_barrier_value.d.cts.map +1 -1
  29. package/dist/channels/named_barrier_value.d.ts +0 -1
  30. package/dist/channels/named_barrier_value.d.ts.map +1 -1
  31. package/dist/channels/topic.d.cts +0 -1
  32. package/dist/channels/topic.d.cts.map +1 -1
  33. package/dist/channels/topic.d.ts +0 -1
  34. package/dist/channels/topic.d.ts.map +1 -1
  35. package/dist/channels/untracked_value.d.cts +0 -1
  36. package/dist/channels/untracked_value.d.cts.map +1 -1
  37. package/dist/channels/untracked_value.d.ts +0 -1
  38. package/dist/channels/untracked_value.d.ts.map +1 -1
  39. package/dist/constants.cjs +78 -0
  40. package/dist/constants.cjs.map +1 -1
  41. package/dist/constants.d.cts +49 -16
  42. package/dist/constants.d.cts.map +1 -1
  43. package/dist/constants.d.ts +49 -16
  44. package/dist/constants.d.ts.map +1 -1
  45. package/dist/constants.js +76 -1
  46. package/dist/constants.js.map +1 -1
  47. package/dist/errors.d.cts.map +1 -1
  48. package/dist/errors.d.ts.map +1 -1
  49. package/dist/func/index.cjs +1 -1
  50. package/dist/func/index.d.cts +1 -2
  51. package/dist/func/index.d.cts.map +1 -1
  52. package/dist/func/index.d.ts +1 -2
  53. package/dist/func/index.d.ts.map +1 -1
  54. package/dist/func/index.js +1 -1
  55. package/dist/func/types.d.cts +0 -11
  56. package/dist/func/types.d.cts.map +1 -1
  57. package/dist/func/types.d.ts +0 -11
  58. package/dist/func/types.d.ts.map +1 -1
  59. package/dist/graph/annotation.cjs.map +1 -1
  60. package/dist/graph/annotation.d.cts +3 -2
  61. package/dist/graph/annotation.d.cts.map +1 -1
  62. package/dist/graph/annotation.d.ts +3 -2
  63. package/dist/graph/annotation.d.ts.map +1 -1
  64. package/dist/graph/annotation.js.map +1 -1
  65. package/dist/graph/graph.cjs +3 -6
  66. package/dist/graph/graph.cjs.map +1 -1
  67. package/dist/graph/graph.d.cts +2 -2
  68. package/dist/graph/graph.d.cts.map +1 -1
  69. package/dist/graph/graph.d.ts +2 -2
  70. package/dist/graph/graph.d.ts.map +1 -1
  71. package/dist/graph/graph.js +3 -6
  72. package/dist/graph/graph.js.map +1 -1
  73. package/dist/graph/index.cjs +1 -1
  74. package/dist/graph/index.d.ts +7 -0
  75. package/dist/graph/index.js +1 -1
  76. package/dist/graph/message.d.cts +2 -2
  77. package/dist/graph/message.d.cts.map +1 -1
  78. package/dist/graph/message.d.ts +2 -2
  79. package/dist/graph/message.d.ts.map +1 -1
  80. package/dist/graph/messages_annotation.d.cts +3 -3
  81. package/dist/graph/messages_annotation.d.cts.map +1 -1
  82. package/dist/graph/messages_annotation.d.ts +4 -3
  83. package/dist/graph/messages_annotation.d.ts.map +1 -1
  84. package/dist/graph/messages_reducer.d.cts +0 -1
  85. package/dist/graph/messages_reducer.d.cts.map +1 -1
  86. package/dist/graph/messages_reducer.d.ts +0 -1
  87. package/dist/graph/messages_reducer.d.ts.map +1 -1
  88. package/dist/graph/state.cjs +1 -1
  89. package/dist/graph/state.d.cts +1 -1
  90. package/dist/graph/state.d.cts.map +1 -1
  91. package/dist/graph/state.d.ts +1 -1
  92. package/dist/graph/state.d.ts.map +1 -1
  93. package/dist/graph/state.js +1 -1
  94. package/dist/graph/types.cjs +1 -1
  95. package/dist/graph/types.d.cts +3 -19
  96. package/dist/graph/types.d.cts.map +1 -1
  97. package/dist/graph/types.d.ts +3 -19
  98. package/dist/graph/types.d.ts.map +1 -1
  99. package/dist/graph/types.js +1 -1
  100. package/dist/graph/zod/index.d.cts +1 -0
  101. package/dist/graph/zod/index.d.ts +1 -0
  102. package/dist/graph/zod/meta.cjs.map +1 -1
  103. package/dist/graph/zod/meta.d.cts +3 -2
  104. package/dist/graph/zod/meta.d.cts.map +1 -1
  105. package/dist/graph/zod/meta.d.ts +3 -2
  106. package/dist/graph/zod/meta.d.ts.map +1 -1
  107. package/dist/graph/zod/meta.js.map +1 -1
  108. package/dist/graph/zod/plugin.d.cts +30 -0
  109. package/dist/graph/zod/plugin.d.cts.map +1 -0
  110. package/dist/graph/zod/plugin.d.ts +30 -0
  111. package/dist/graph/zod/plugin.d.ts.map +1 -0
  112. package/dist/graph/zod/schema.d.cts +0 -1
  113. package/dist/graph/zod/schema.d.cts.map +1 -1
  114. package/dist/graph/zod/schema.d.ts +0 -1
  115. package/dist/graph/zod/schema.d.ts.map +1 -1
  116. package/dist/graph/zod/zod-registry.d.cts +0 -1
  117. package/dist/graph/zod/zod-registry.d.cts.map +1 -1
  118. package/dist/graph/zod/zod-registry.d.ts +0 -1
  119. package/dist/graph/zod/zod-registry.d.ts.map +1 -1
  120. package/dist/index.cjs +2 -1
  121. package/dist/index.d.cts +2 -2
  122. package/dist/index.d.ts +2 -2
  123. package/dist/index.js +2 -2
  124. package/dist/interrupt.cjs +1 -1
  125. package/dist/interrupt.d.cts.map +1 -1
  126. package/dist/interrupt.d.ts.map +1 -1
  127. package/dist/interrupt.js +1 -1
  128. package/dist/prebuilt/agentName.d.cts +0 -17
  129. package/dist/prebuilt/agentName.d.cts.map +1 -1
  130. package/dist/prebuilt/agentName.d.ts +0 -17
  131. package/dist/prebuilt/agentName.d.ts.map +1 -1
  132. package/dist/prebuilt/agent_executor.d.cts +5 -5
  133. package/dist/prebuilt/agent_executor.d.cts.map +1 -1
  134. package/dist/prebuilt/agent_executor.d.ts +6 -5
  135. package/dist/prebuilt/agent_executor.d.ts.map +1 -1
  136. package/dist/prebuilt/chat_agent_executor.d.cts.map +1 -1
  137. package/dist/prebuilt/chat_agent_executor.d.ts.map +1 -1
  138. package/dist/prebuilt/interrupt.d.cts.map +1 -1
  139. package/dist/prebuilt/interrupt.d.ts.map +1 -1
  140. package/dist/prebuilt/react_agent_executor.cjs +1 -1
  141. package/dist/prebuilt/react_agent_executor.d.cts +11 -17
  142. package/dist/prebuilt/react_agent_executor.d.cts.map +1 -1
  143. package/dist/prebuilt/react_agent_executor.d.ts +13 -17
  144. package/dist/prebuilt/react_agent_executor.d.ts.map +1 -1
  145. package/dist/prebuilt/react_agent_executor.js +1 -1
  146. package/dist/prebuilt/tool_executor.d.cts.map +1 -1
  147. package/dist/prebuilt/tool_executor.d.ts.map +1 -1
  148. package/dist/prebuilt/tool_node.cjs +1 -1
  149. package/dist/prebuilt/tool_node.d.cts +1 -1
  150. package/dist/prebuilt/tool_node.d.cts.map +1 -1
  151. package/dist/prebuilt/tool_node.d.ts +1 -1
  152. package/dist/prebuilt/tool_node.d.ts.map +1 -1
  153. package/dist/prebuilt/tool_node.js +1 -1
  154. package/dist/pregel/algo.cjs +1 -1
  155. package/dist/pregel/algo.d.cts +0 -1
  156. package/dist/pregel/algo.d.cts.map +1 -1
  157. package/dist/pregel/algo.d.ts +5 -1
  158. package/dist/pregel/algo.d.ts.map +1 -1
  159. package/dist/pregel/algo.js +1 -1
  160. package/dist/pregel/index.cjs +13 -1
  161. package/dist/pregel/index.cjs.map +1 -1
  162. package/dist/pregel/index.d.cts +2 -1
  163. package/dist/pregel/index.d.cts.map +1 -1
  164. package/dist/pregel/index.d.ts +2 -1
  165. package/dist/pregel/index.d.ts.map +1 -1
  166. package/dist/pregel/index.js +14 -2
  167. package/dist/pregel/index.js.map +1 -1
  168. package/dist/pregel/io.cjs +1 -1
  169. package/dist/pregel/io.js +1 -1
  170. package/dist/pregel/loop.cjs +1 -1
  171. package/dist/pregel/loop.js +1 -1
  172. package/dist/pregel/read.cjs +4 -1
  173. package/dist/pregel/read.cjs.map +1 -1
  174. package/dist/pregel/read.d.cts +0 -1
  175. package/dist/pregel/read.d.cts.map +1 -1
  176. package/dist/pregel/read.d.ts +1 -1
  177. package/dist/pregel/read.d.ts.map +1 -1
  178. package/dist/pregel/read.js +4 -1
  179. package/dist/pregel/read.js.map +1 -1
  180. package/dist/pregel/remote.cjs +1 -1
  181. package/dist/pregel/remote.d.cts.map +1 -1
  182. package/dist/pregel/remote.d.ts +2 -0
  183. package/dist/pregel/remote.d.ts.map +1 -1
  184. package/dist/pregel/remote.js +1 -1
  185. package/dist/pregel/retry.cjs +1 -1
  186. package/dist/pregel/retry.js +1 -1
  187. package/dist/pregel/runnable_types.d.cts.map +1 -1
  188. package/dist/pregel/runnable_types.d.ts.map +1 -1
  189. package/dist/pregel/runner.cjs +1 -1
  190. package/dist/pregel/runner.js +1 -1
  191. package/dist/pregel/stream.cjs +81 -0
  192. package/dist/pregel/stream.cjs.map +1 -1
  193. package/dist/pregel/stream.d.ts +3 -0
  194. package/dist/pregel/stream.js +81 -1
  195. package/dist/pregel/stream.js.map +1 -1
  196. package/dist/pregel/types.cjs.map +1 -1
  197. package/dist/pregel/types.d.cts +27 -9
  198. package/dist/pregel/types.d.cts.map +1 -1
  199. package/dist/pregel/types.d.ts +27 -9
  200. package/dist/pregel/types.d.ts.map +1 -1
  201. package/dist/pregel/types.js.map +1 -1
  202. package/dist/pregel/utils/config.d.cts +0 -1
  203. package/dist/pregel/utils/config.d.cts.map +1 -1
  204. package/dist/pregel/utils/config.d.ts +0 -1
  205. package/dist/pregel/utils/config.d.ts.map +1 -1
  206. package/dist/pregel/utils/index.d.cts +3 -7
  207. package/dist/pregel/utils/index.d.cts.map +1 -1
  208. package/dist/pregel/utils/index.d.ts +3 -7
  209. package/dist/pregel/utils/index.d.ts.map +1 -1
  210. package/dist/pregel/write.cjs +2 -1
  211. package/dist/pregel/write.cjs.map +1 -1
  212. package/dist/pregel/write.d.cts +1 -2
  213. package/dist/pregel/write.d.cts.map +1 -1
  214. package/dist/pregel/write.d.ts +1 -2
  215. package/dist/pregel/write.d.ts.map +1 -1
  216. package/dist/pregel/write.js +2 -1
  217. package/dist/pregel/write.js.map +1 -1
  218. package/dist/state/adapter.d.cts +0 -1
  219. package/dist/state/adapter.d.cts.map +1 -1
  220. package/dist/state/adapter.d.ts +0 -1
  221. package/dist/state/adapter.d.ts.map +1 -1
  222. package/dist/state/index.d.ts +7 -0
  223. package/dist/state/prebuilt/index.d.ts +1 -0
  224. package/dist/state/prebuilt/messages.d.cts +2 -2
  225. package/dist/state/prebuilt/messages.d.cts.map +1 -1
  226. package/dist/state/prebuilt/messages.d.ts +2 -2
  227. package/dist/state/prebuilt/messages.d.ts.map +1 -1
  228. package/dist/state/schema.cjs.map +1 -1
  229. package/dist/state/schema.d.cts +3 -2
  230. package/dist/state/schema.d.cts.map +1 -1
  231. package/dist/state/schema.d.ts +4 -2
  232. package/dist/state/schema.d.ts.map +1 -1
  233. package/dist/state/schema.js.map +1 -1
  234. package/dist/state/types.d.cts +0 -20
  235. package/dist/state/types.d.cts.map +1 -1
  236. package/dist/state/types.d.ts +0 -20
  237. package/dist/state/types.d.ts.map +1 -1
  238. package/dist/state/values/reduced.d.cts +0 -1
  239. package/dist/state/values/reduced.d.cts.map +1 -1
  240. package/dist/state/values/reduced.d.ts +0 -1
  241. package/dist/state/values/reduced.d.ts.map +1 -1
  242. package/dist/state/values/untracked.d.cts +0 -1
  243. package/dist/state/values/untracked.d.cts.map +1 -1
  244. package/dist/state/values/untracked.d.ts +0 -1
  245. package/dist/state/values/untracked.d.ts.map +1 -1
  246. package/dist/utils.d.cts.map +1 -1
  247. package/dist/utils.d.ts.map +1 -1
  248. package/dist/web.cjs +2 -1
  249. package/dist/web.d.cts +2 -2
  250. package/dist/web.d.ts +5 -2
  251. package/dist/web.js +2 -2
  252. package/dist/writer.d.cts.map +1 -1
  253. package/dist/writer.d.ts.map +1 -1
  254. package/package.json +4 -4
@@ -1,7 +1,6 @@
1
1
  import { BaseChannel } from "./base.cjs";
2
2
 
3
3
  //#region src/channels/any_value.d.ts
4
-
5
4
  /**
6
5
  * Stores the last value received, assumes that if multiple values are received, they are all equal.
7
6
  *
@@ -1 +1 @@
1
- {"version":3,"file":"any_value.d.cts","names":["BaseChannel","AnyValue","Value"],"sources":["../../src/channels/any_value.d.ts"],"sourcesContent":["import { BaseChannel } from \"./base.js\";\n/**\n * Stores the last value received, assumes that if multiple values are received, they are all equal.\n *\n * Note: Unlike 'LastValue' if multiple nodes write to this channel in a single step, the values\n * will be continuously overwritten.\n */\nexport declare class AnyValue<Value> extends BaseChannel<Value, Value, Value> {\n lc_graph_name: string;\n value: [Value] | [];\n constructor();\n fromCheckpoint(checkpoint?: Value): this;\n update(values: Value[]): boolean;\n get(): Value;\n checkpoint(): Value;\n isAvailable(): boolean;\n}\n"],"mappings":";;;;;;AAOA;;;;AAAuEE,cAAlDD,QAAkDC,CAAAA,KAAAA,CAAAA,SAA1BF,WAA0BE,CAAdA,KAAcA,EAAPA,KAAOA,EAAAA,KAAAA,CAAAA,CAAAA;eAE3DA,EAAAA,MAAAA;OAEoBA,EAAAA,CAFpBA,KAEoBA,CAAAA,GAAAA,EAAAA;aACbA,CAAAA;gBACRA,CAAAA,UAAAA,CAAAA,EAFqBA,KAErBA,CAAAA,EAAAA,IAAAA;QACOA,CAAAA,MAAAA,EAFCA,KAEDA,EAAAA,CAAAA,EAAAA,OAAAA;KAP2BF,CAAAA,CAAAA,EAMlCE,KANkCF;EAAW,UAAA,CAAA,CAAA,EAOtCE,KAPsC"}
1
+ {"version":3,"file":"any_value.d.cts","names":[],"sources":["../../src/channels/any_value.ts"],"mappings":";;;;;AASA;;;;cAAa,QAAA,gBAAwB,WAAA,CAAY,KAAA,EAAO,KAAA,EAAO,KAAA;EAC7D,aAAA;EAGA,KAAA,GAAQ,KAAA;EAER,WAAA,CAAA;EAIA,cAAA,CAAe,UAAA,GAAa,KAAA;EAQ5B,MAAA,CAAO,MAAA,EAAQ,KAAA;EAYf,GAAA,CAAA,GAAO,KAAA;EAOP,UAAA,CAAA,GAAc,KAAA;EAOd,WAAA,CAAA;AAAA"}
@@ -1,7 +1,6 @@
1
1
  import { BaseChannel } from "./base.js";
2
2
 
3
3
  //#region src/channels/any_value.d.ts
4
-
5
4
  /**
6
5
  * Stores the last value received, assumes that if multiple values are received, they are all equal.
7
6
  *
@@ -1 +1 @@
1
- {"version":3,"file":"any_value.d.ts","names":["BaseChannel","AnyValue","Value"],"sources":["../../src/channels/any_value.d.ts"],"sourcesContent":["import { BaseChannel } from \"./base.js\";\n/**\n * Stores the last value received, assumes that if multiple values are received, they are all equal.\n *\n * Note: Unlike 'LastValue' if multiple nodes write to this channel in a single step, the values\n * will be continuously overwritten.\n */\nexport declare class AnyValue<Value> extends BaseChannel<Value, Value, Value> {\n lc_graph_name: string;\n value: [Value] | [];\n constructor();\n fromCheckpoint(checkpoint?: Value): this;\n update(values: Value[]): boolean;\n get(): Value;\n checkpoint(): Value;\n isAvailable(): boolean;\n}\n"],"mappings":";;;;;;AAOA;;;;AAAuEE,cAAlDD,QAAkDC,CAAAA,KAAAA,CAAAA,SAA1BF,WAA0BE,CAAdA,KAAcA,EAAPA,KAAOA,EAAAA,KAAAA,CAAAA,CAAAA;eAE3DA,EAAAA,MAAAA;OAEoBA,EAAAA,CAFpBA,KAEoBA,CAAAA,GAAAA,EAAAA;aACbA,CAAAA;gBACRA,CAAAA,UAAAA,CAAAA,EAFqBA,KAErBA,CAAAA,EAAAA,IAAAA;QACOA,CAAAA,MAAAA,EAFCA,KAEDA,EAAAA,CAAAA,EAAAA,OAAAA;KAP2BF,CAAAA,CAAAA,EAMlCE,KANkCF;EAAW,UAAA,CAAA,CAAA,EAOtCE,KAPsC"}
1
+ {"version":3,"file":"any_value.d.ts","names":[],"sources":["../../src/channels/any_value.ts"],"mappings":";;;;;AASA;;;;cAAa,QAAA,gBAAwB,WAAA,CAAY,KAAA,EAAO,KAAA,EAAO,KAAA;EAC7D,aAAA;EAGA,KAAA,GAAQ,KAAA;EAER,WAAA,CAAA;EAIA,cAAA,CAAe,UAAA,GAAa,KAAA;EAQ5B,MAAA,CAAO,MAAA,EAAQ,KAAA;EAYf,GAAA,CAAA,GAAO,KAAA;EAOP,UAAA,CAAA,GAAc,KAAA;EAOd,WAAA,CAAA;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.cts","names":["ReadonlyCheckpoint","Checkpoint","isBaseChannel","BaseChannel","ValueType","UpdateType","CheckpointType","getOnlyChannels","Record","emptyChannels","Cc","createCheckpoint"],"sources":["../../src/channels/base.d.ts"],"sourcesContent":["import { ReadonlyCheckpoint, Checkpoint } from \"@langchain/langgraph-checkpoint\";\nexport declare function isBaseChannel(obj: unknown): obj is BaseChannel;\n/** @internal */\nexport declare abstract class BaseChannel<ValueType = unknown, UpdateType = unknown, CheckpointType = unknown> {\n ValueType: ValueType;\n UpdateType: UpdateType;\n /**\n * The name of the channel.\n */\n abstract lc_graph_name: string;\n /** @ignore */\n lg_is_channel: boolean;\n /**\n * Return a new identical channel, optionally initialized from a checkpoint.\n * Can be thought of as a \"restoration\" from a checkpoint which is a \"snapshot\" of the channel's state.\n *\n * @param {CheckpointType | undefined} checkpoint\n * @param {CheckpointType | undefined} initialValue\n * @returns {this}\n */\n abstract fromCheckpoint(checkpoint?: CheckpointType): this;\n /**\n * Update the channel's value with the given sequence of updates.\n * The order of the updates in the sequence is arbitrary.\n * This method is called by Pregel for all channels at the end of each step.\n * If there are no updates, it is called with an empty sequence.\n *\n * Raises InvalidUpdateError if the sequence of updates is invalid.\n * Returns True if the channel was updated, False otherwise.\n *\n * @throws {InvalidUpdateError} if the sequence of updates is invalid.\n * @param {Array<UpdateType>} values\n * @returns {void}\n */\n abstract update(values: UpdateType[]): boolean;\n /**\n * Return the current value of the channel.\n *\n * @throws {EmptyChannelError} if the channel is empty (never updated yet).\n * @returns {ValueType}\n */\n abstract get(): ValueType;\n /**\n * Return a string representation of the channel's current state.\n *\n * @throws {EmptyChannelError} if the channel is empty (never updated yet), or doesn't support checkpoints.\n * @returns {CheckpointType | undefined}\n */\n abstract checkpoint(): CheckpointType | undefined;\n /**\n * Mark the current value of the channel as consumed. By default, no-op.\n * A channel can use this method to modify its state, preventing the value\n * from being consumed again.\n *\n * Returns True if the channel was updated, False otherwise.\n */\n consume(): boolean;\n /**\n * Notify the channel that the Pregel run is finishing. By default, no-op.\n * A channel can use this method to modify its state, preventing finish.\n *\n * Returns True if the channel was updated, False otherwise.\n */\n finish(): boolean;\n /**\n * Return True if the channel is available (not empty), False otherwise.\n * Subclasses should override this method to provide a more efficient\n * implementation than calling get() and catching EmptyChannelError.\n */\n isAvailable(): boolean;\n /**\n * Compare this channel with another channel for equality.\n * Used to determine if two channels with the same key are semantically equivalent.\n * Subclasses should override this method to provide a meaningful comparison.\n *\n * @param {BaseChannel} other - The other channel to compare with.\n * @returns {boolean} True if the channels are equal, false otherwise.\n */\n equals(other: BaseChannel): boolean;\n}\nexport declare function getOnlyChannels(channels: Record<string, BaseChannel>): Record<string, BaseChannel>;\nexport declare function emptyChannels<Cc extends Record<string, BaseChannel>>(channels: Cc, checkpoint: ReadonlyCheckpoint): Cc;\nexport declare function createCheckpoint<ValueType>(checkpoint: ReadonlyCheckpoint, channels: Record<string, BaseChannel<ValueType>> | undefined, step: number, options?: {\n id?: string;\n}): Checkpoint;\n"],"mappings":";;;;AAG8BG,uBAAAA,WAAW,CAAA,YAAA,OAAA,EAAA,aAAA,OAAA,EAAA,iBAAA,OAAA,CAAA,CAAA;EAAA,SAAA,EAC1BC,SAD0B;YAC1BA,EACCC,UADDD;;;;WAqCKA,aAAAA,EAAAA,MAAAA;;eAqCFD,EAAAA,OAAAA;EAAW;AAG7B;;;;;;;EAA+H,SAAA,cAAA,CAAA,UAAA,CAAA,EA7DtFG,cA6DsF,CAAA,EAAA,IAAA;EACvGK;;;;;;;;;;;;;0BAhDIN;;;;;;;kBAORD;;;;;;;yBAOOE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBA8BTH;;iBAGMM,yBAAyBD,eAAeL,wBAAwBO,gBAAgBV,qBAAqBU;iBACrGC,wCAAwCX,8BAA8BQ,eAAeL,YAAYC;;IAErHH"}
1
+ {"version":3,"file":"base.d.cts","names":[],"sources":["../../src/channels/base.ts"],"mappings":";;;;uBAYsB,WAAA;EAKpB,SAAA,EAAW,SAAA;EAEX,UAAA,EAAY,UAAA;EAFD;;;EAAA,SAOF,aAAA;EAoCO;EAjChB,aAAA;EA0Fc;;;;;;;;EAAA,SAhFL,cAAA,CAAe,UAAA,GAAa,cAAA;EAlBzB;;;;;;;;;;;;;EAAA,SAiCH,MAAA,CAAO,MAAA,EAAQ,UAAA;EAmCxB;;;;;;EAAA,SA3BS,GAAA,CAAA,GAAO,SAAA;EAgFF;;;;;;EAAA,SAxEL,UAAA,CAAA,GAAc,cAAA;EA2EtB;;;;;;;EAlED,OAAA,CAAA;EAiEY;;;;;AAcd;EArEE,MAAA,CAAA;EAqE8B;;;;;EA5D9B,WAAA,CAAA;EAiEW;;;;;;;;EA5CX,MAAA,CAAO,KAAA,EAAO,WAAA;AAAA;AAAA,iBAuBA,aAAA,YAAyB,MAAA,SAAe,WAAA,EAAA,CACtD,QAAA,EAAU,EAAA,EACV,UAAA,EAAY,kBAAA,GACX,EAAA;AAAA,iBAaa,gBAAA,WAAA,CACd,UAAA,EAAY,kBAAA,EACZ,QAAA,EAAU,MAAA,SAAe,WAAA,CAAY,SAAA,gBACrC,IAAA,UACA,OAAA;EAAY,EAAA;AAAA,IACX,UAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","names":["ReadonlyCheckpoint","Checkpoint","isBaseChannel","BaseChannel","ValueType","UpdateType","CheckpointType","getOnlyChannels","Record","emptyChannels","Cc","createCheckpoint"],"sources":["../../src/channels/base.d.ts"],"sourcesContent":["import { ReadonlyCheckpoint, Checkpoint } from \"@langchain/langgraph-checkpoint\";\nexport declare function isBaseChannel(obj: unknown): obj is BaseChannel;\n/** @internal */\nexport declare abstract class BaseChannel<ValueType = unknown, UpdateType = unknown, CheckpointType = unknown> {\n ValueType: ValueType;\n UpdateType: UpdateType;\n /**\n * The name of the channel.\n */\n abstract lc_graph_name: string;\n /** @ignore */\n lg_is_channel: boolean;\n /**\n * Return a new identical channel, optionally initialized from a checkpoint.\n * Can be thought of as a \"restoration\" from a checkpoint which is a \"snapshot\" of the channel's state.\n *\n * @param {CheckpointType | undefined} checkpoint\n * @param {CheckpointType | undefined} initialValue\n * @returns {this}\n */\n abstract fromCheckpoint(checkpoint?: CheckpointType): this;\n /**\n * Update the channel's value with the given sequence of updates.\n * The order of the updates in the sequence is arbitrary.\n * This method is called by Pregel for all channels at the end of each step.\n * If there are no updates, it is called with an empty sequence.\n *\n * Raises InvalidUpdateError if the sequence of updates is invalid.\n * Returns True if the channel was updated, False otherwise.\n *\n * @throws {InvalidUpdateError} if the sequence of updates is invalid.\n * @param {Array<UpdateType>} values\n * @returns {void}\n */\n abstract update(values: UpdateType[]): boolean;\n /**\n * Return the current value of the channel.\n *\n * @throws {EmptyChannelError} if the channel is empty (never updated yet).\n * @returns {ValueType}\n */\n abstract get(): ValueType;\n /**\n * Return a string representation of the channel's current state.\n *\n * @throws {EmptyChannelError} if the channel is empty (never updated yet), or doesn't support checkpoints.\n * @returns {CheckpointType | undefined}\n */\n abstract checkpoint(): CheckpointType | undefined;\n /**\n * Mark the current value of the channel as consumed. By default, no-op.\n * A channel can use this method to modify its state, preventing the value\n * from being consumed again.\n *\n * Returns True if the channel was updated, False otherwise.\n */\n consume(): boolean;\n /**\n * Notify the channel that the Pregel run is finishing. By default, no-op.\n * A channel can use this method to modify its state, preventing finish.\n *\n * Returns True if the channel was updated, False otherwise.\n */\n finish(): boolean;\n /**\n * Return True if the channel is available (not empty), False otherwise.\n * Subclasses should override this method to provide a more efficient\n * implementation than calling get() and catching EmptyChannelError.\n */\n isAvailable(): boolean;\n /**\n * Compare this channel with another channel for equality.\n * Used to determine if two channels with the same key are semantically equivalent.\n * Subclasses should override this method to provide a meaningful comparison.\n *\n * @param {BaseChannel} other - The other channel to compare with.\n * @returns {boolean} True if the channels are equal, false otherwise.\n */\n equals(other: BaseChannel): boolean;\n}\nexport declare function getOnlyChannels(channels: Record<string, BaseChannel>): Record<string, BaseChannel>;\nexport declare function emptyChannels<Cc extends Record<string, BaseChannel>>(channels: Cc, checkpoint: ReadonlyCheckpoint): Cc;\nexport declare function createCheckpoint<ValueType>(checkpoint: ReadonlyCheckpoint, channels: Record<string, BaseChannel<ValueType>> | undefined, step: number, options?: {\n id?: string;\n}): Checkpoint;\n"],"mappings":";;;;AAG8BG,uBAAAA,WAAW,CAAA,YAAA,OAAA,EAAA,aAAA,OAAA,EAAA,iBAAA,OAAA,CAAA,CAAA;EAAA,SAAA,EAC1BC,SAD0B;YAC1BA,EACCC,UADDD;;;;WAqCKA,aAAAA,EAAAA,MAAAA;;eAqCFD,EAAAA,OAAAA;EAAW;AAG7B;;;;;;;EAA+H,SAAA,cAAA,CAAA,UAAA,CAAA,EA7DtFG,cA6DsF,CAAA,EAAA,IAAA;EACvGK;;;;;;;;;;;;;0BAhDIN;;;;;;;kBAORD;;;;;;;yBAOOE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBA8BTH;;iBAGMM,yBAAyBD,eAAeL,wBAAwBO,gBAAgBV,qBAAqBU;iBACrGC,wCAAwCX,8BAA8BQ,eAAeL,YAAYC;;IAErHH"}
1
+ {"version":3,"file":"base.d.ts","names":[],"sources":["../../src/channels/base.ts"],"mappings":";;;;uBAYsB,WAAA;EAKpB,SAAA,EAAW,SAAA;EAEX,UAAA,EAAY,UAAA;EAFD;;;EAAA,SAOF,aAAA;EAoCO;EAjChB,aAAA;EA0Fc;;;;;;;;EAAA,SAhFL,cAAA,CAAe,UAAA,GAAa,cAAA;EAlBzB;;;;;;;;;;;;;EAAA,SAiCH,MAAA,CAAO,MAAA,EAAQ,UAAA;EAmCxB;;;;;;EAAA,SA3BS,GAAA,CAAA,GAAO,SAAA;EAgFF;;;;;;EAAA,SAxEL,UAAA,CAAA,GAAc,cAAA;EA2EtB;;;;;;;EAlED,OAAA,CAAA;EAiEY;;;;;AAcd;EArEE,MAAA,CAAA;EAqE8B;;;;;EA5D9B,WAAA,CAAA;EAiEW;;;;;;;;EA5CX,MAAA,CAAO,KAAA,EAAO,WAAA;AAAA;AAAA,iBAuBA,aAAA,YAAyB,MAAA,SAAe,WAAA,EAAA,CACtD,QAAA,EAAU,EAAA,EACV,UAAA,EAAY,kBAAA,GACX,EAAA;AAAA,iBAaa,gBAAA,WAAA,CACd,UAAA,EAAY,kBAAA,EACZ,QAAA,EAAU,MAAA,SAAe,WAAA,CAAY,SAAA,gBACrC,IAAA,UACA,OAAA;EAAY,EAAA;AAAA,IACX,UAAA"}
@@ -1,3 +1,4 @@
1
+ const require_constants = require('../constants.cjs');
1
2
  const require_errors = require('../errors.cjs');
2
3
  const require_base = require('./base.cjs');
3
4
 
@@ -28,10 +29,20 @@ var BinaryOperatorAggregate = class BinaryOperatorAggregate extends require_base
28
29
  let newValues = values;
29
30
  if (!newValues.length) return false;
30
31
  if (this.value === void 0) {
31
- [this.value] = newValues;
32
+ const first = newValues[0];
33
+ const [isOverwrite, overwriteVal] = require_constants._getOverwriteValue(first);
34
+ if (isOverwrite) this.value = overwriteVal;
35
+ else this.value = first;
32
36
  newValues = newValues.slice(1);
33
37
  }
34
- for (const value of newValues) if (this.value !== void 0) this.value = this.operator(this.value, value);
38
+ let seenOverwrite = false;
39
+ for (const incoming of newValues) if (require_constants._isOverwriteValue(incoming)) {
40
+ if (seenOverwrite) throw new require_errors.InvalidUpdateError("Can receive only one Overwrite value per step.");
41
+ const [, val] = require_constants._getOverwriteValue(incoming);
42
+ this.value = val;
43
+ seenOverwrite = true;
44
+ continue;
45
+ } else if (!seenOverwrite && this.value !== void 0) this.value = this.operator(this.value, incoming);
35
46
  return true;
36
47
  }
37
48
  get() {
@@ -1 +1 @@
1
- {"version":3,"file":"binop.cjs","names":["BaseChannel","EmptyChannelError"],"sources":["../../src/channels/binop.ts"],"sourcesContent":["import { EmptyChannelError } from \"../errors.js\";\nimport { BaseChannel } from \"./base.js\";\n\nexport type BinaryOperator<ValueType, UpdateType> = (\n a: ValueType,\n b: UpdateType\n) => ValueType;\n\nconst isBinaryOperatorAggregate = (\n value: BaseChannel\n): value is BinaryOperatorAggregate<unknown, unknown> => {\n return value != null && value.lc_graph_name === \"BinaryOperatorAggregate\";\n};\n\n/**\n * Stores the result of applying a binary operator to the current value and each new value.\n */\nexport class BinaryOperatorAggregate<\n ValueType,\n UpdateType = ValueType\n> extends BaseChannel<ValueType, UpdateType, ValueType> {\n lc_graph_name = \"BinaryOperatorAggregate\";\n\n value: ValueType | undefined;\n\n operator: BinaryOperator<ValueType, UpdateType>;\n\n initialValueFactory?: () => ValueType;\n\n constructor(\n operator: BinaryOperator<ValueType, UpdateType>,\n initialValueFactory?: () => ValueType\n ) {\n super();\n\n this.operator = operator;\n this.initialValueFactory = initialValueFactory;\n this.value = initialValueFactory?.();\n }\n\n public fromCheckpoint(checkpoint?: ValueType) {\n const empty = new BinaryOperatorAggregate(\n this.operator,\n this.initialValueFactory\n );\n if (typeof checkpoint !== \"undefined\") {\n empty.value = checkpoint;\n }\n return empty as this;\n }\n\n public update(values: UpdateType[]): boolean {\n let newValues = values;\n if (!newValues.length) return false;\n\n if (this.value === undefined) {\n [this.value as UpdateType] = newValues;\n newValues = newValues.slice(1);\n }\n\n for (const value of newValues) {\n if (this.value !== undefined) {\n this.value = this.operator(this.value, value);\n }\n }\n return true;\n }\n\n public get(): ValueType {\n if (this.value === undefined) {\n throw new EmptyChannelError();\n }\n return this.value;\n }\n\n public checkpoint(): ValueType {\n if (this.value === undefined) {\n throw new EmptyChannelError();\n }\n return this.value;\n }\n\n isAvailable(): boolean {\n return this.value !== undefined;\n }\n\n /**\n * Compare this channel with another channel for equality.\n * Two BinaryOperatorAggregate channels are equal if they have the same operator function.\n * This follows the Python implementation which compares operator references.\n */\n equals(other: BaseChannel): boolean {\n if (this === other) return true;\n if (!isBinaryOperatorAggregate(other)) return false;\n return this.operator === other.operator;\n }\n}\n"],"mappings":";;;;AAQA,MAAM,6BACJ,UACuD;AACvD,QAAO,SAAS,QAAQ,MAAM,kBAAkB;;;;;AAMlD,IAAa,0BAAb,MAAa,gCAGHA,yBAA8C;CACtD,gBAAgB;CAEhB;CAEA;CAEA;CAEA,YACE,UACA,qBACA;AACA,SAAO;AAEP,OAAK,WAAW;AAChB,OAAK,sBAAsB;AAC3B,OAAK,QAAQ,uBAAuB;;CAGtC,AAAO,eAAe,YAAwB;EAC5C,MAAM,QAAQ,IAAI,wBAChB,KAAK,UACL,KAAK,oBACN;AACD,MAAI,OAAO,eAAe,YACxB,OAAM,QAAQ;AAEhB,SAAO;;CAGT,AAAO,OAAO,QAA+B;EAC3C,IAAI,YAAY;AAChB,MAAI,CAAC,UAAU,OAAQ,QAAO;AAE9B,MAAI,KAAK,UAAU,QAAW;AAC5B,IAAC,KAAK,SAAuB;AAC7B,eAAY,UAAU,MAAM,EAAE;;AAGhC,OAAK,MAAM,SAAS,UAClB,KAAI,KAAK,UAAU,OACjB,MAAK,QAAQ,KAAK,SAAS,KAAK,OAAO,MAAM;AAGjD,SAAO;;CAGT,AAAO,MAAiB;AACtB,MAAI,KAAK,UAAU,OACjB,OAAM,IAAIC,kCAAmB;AAE/B,SAAO,KAAK;;CAGd,AAAO,aAAwB;AAC7B,MAAI,KAAK,UAAU,OACjB,OAAM,IAAIA,kCAAmB;AAE/B,SAAO,KAAK;;CAGd,cAAuB;AACrB,SAAO,KAAK,UAAU;;;;;;;CAQxB,OAAO,OAA6B;AAClC,MAAI,SAAS,MAAO,QAAO;AAC3B,MAAI,CAAC,0BAA0B,MAAM,CAAE,QAAO;AAC9C,SAAO,KAAK,aAAa,MAAM"}
1
+ {"version":3,"file":"binop.cjs","names":["BaseChannel","_getOverwriteValue","_isOverwriteValue","InvalidUpdateError","EmptyChannelError"],"sources":["../../src/channels/binop.ts"],"sourcesContent":["import {\n _getOverwriteValue,\n _isOverwriteValue,\n type OverwriteValue,\n} from \"../constants.js\";\nimport { EmptyChannelError, InvalidUpdateError } from \"../errors.js\";\nimport { BaseChannel } from \"./base.js\";\n\ntype OverwriteOrValue<ValueType, UpdateType> =\n | OverwriteValue<ValueType>\n | UpdateType;\n\nexport type BinaryOperator<ValueType, UpdateType> = (\n a: ValueType,\n b: UpdateType\n) => ValueType;\n\nconst isBinaryOperatorAggregate = (\n value: BaseChannel\n): value is BinaryOperatorAggregate<unknown, unknown> => {\n return value != null && value.lc_graph_name === \"BinaryOperatorAggregate\";\n};\n\n/**\n * Stores the result of applying a binary operator to the current value and each new value.\n */\nexport class BinaryOperatorAggregate<\n ValueType,\n UpdateType = ValueType\n> extends BaseChannel<\n ValueType,\n OverwriteOrValue<ValueType, UpdateType>,\n ValueType\n> {\n lc_graph_name = \"BinaryOperatorAggregate\";\n\n value: ValueType | undefined;\n\n operator: BinaryOperator<ValueType, UpdateType>;\n\n initialValueFactory?: () => ValueType;\n\n constructor(\n operator: BinaryOperator<ValueType, UpdateType>,\n initialValueFactory?: () => ValueType\n ) {\n super();\n\n this.operator = operator;\n this.initialValueFactory = initialValueFactory;\n this.value = initialValueFactory?.();\n }\n\n public fromCheckpoint(checkpoint?: ValueType) {\n const empty = new BinaryOperatorAggregate(\n this.operator,\n this.initialValueFactory\n );\n if (typeof checkpoint !== \"undefined\") {\n empty.value = checkpoint;\n }\n return empty as this;\n }\n\n public update(values: OverwriteOrValue<ValueType, UpdateType>[]): boolean {\n let newValues = values;\n if (!newValues.length) return false;\n\n if (this.value === undefined) {\n const first = newValues[0];\n const [isOverwrite, overwriteVal] = _getOverwriteValue<ValueType>(first);\n if (isOverwrite) {\n this.value = overwriteVal;\n } else {\n this.value = first as ValueType;\n }\n newValues = newValues.slice(1);\n }\n\n let seenOverwrite = false;\n for (const incoming of newValues) {\n if (_isOverwriteValue<ValueType>(incoming)) {\n if (seenOverwrite) {\n throw new InvalidUpdateError(\n \"Can receive only one Overwrite value per step.\"\n );\n }\n const [, val] = _getOverwriteValue<ValueType>(incoming);\n this.value = val;\n seenOverwrite = true;\n continue;\n } else if (!seenOverwrite && this.value !== undefined) {\n this.value = this.operator(this.value, incoming);\n }\n }\n return true;\n }\n\n public get(): ValueType {\n if (this.value === undefined) {\n throw new EmptyChannelError();\n }\n return this.value;\n }\n\n public checkpoint(): ValueType {\n if (this.value === undefined) {\n throw new EmptyChannelError();\n }\n return this.value;\n }\n\n isAvailable(): boolean {\n return this.value !== undefined;\n }\n\n /**\n * Compare this channel with another channel for equality.\n * Two BinaryOperatorAggregate channels are equal if they have the same operator function.\n * This follows the Python implementation which compares operator references.\n */\n equals(other: BaseChannel): boolean {\n if (this === other) return true;\n if (!isBinaryOperatorAggregate(other)) return false;\n return this.operator === other.operator;\n }\n}\n"],"mappings":";;;;;AAiBA,MAAM,6BACJ,UACuD;AACvD,QAAO,SAAS,QAAQ,MAAM,kBAAkB;;;;;AAMlD,IAAa,0BAAb,MAAa,gCAGHA,yBAIR;CACA,gBAAgB;CAEhB;CAEA;CAEA;CAEA,YACE,UACA,qBACA;AACA,SAAO;AAEP,OAAK,WAAW;AAChB,OAAK,sBAAsB;AAC3B,OAAK,QAAQ,uBAAuB;;CAGtC,AAAO,eAAe,YAAwB;EAC5C,MAAM,QAAQ,IAAI,wBAChB,KAAK,UACL,KAAK,oBACN;AACD,MAAI,OAAO,eAAe,YACxB,OAAM,QAAQ;AAEhB,SAAO;;CAGT,AAAO,OAAO,QAA4D;EACxE,IAAI,YAAY;AAChB,MAAI,CAAC,UAAU,OAAQ,QAAO;AAE9B,MAAI,KAAK,UAAU,QAAW;GAC5B,MAAM,QAAQ,UAAU;GACxB,MAAM,CAAC,aAAa,gBAAgBC,qCAA8B,MAAM;AACxE,OAAI,YACF,MAAK,QAAQ;OAEb,MAAK,QAAQ;AAEf,eAAY,UAAU,MAAM,EAAE;;EAGhC,IAAI,gBAAgB;AACpB,OAAK,MAAM,YAAY,UACrB,KAAIC,oCAA6B,SAAS,EAAE;AAC1C,OAAI,cACF,OAAM,IAAIC,kCACR,iDACD;GAEH,MAAM,GAAG,OAAOF,qCAA8B,SAAS;AACvD,QAAK,QAAQ;AACb,mBAAgB;AAChB;aACS,CAAC,iBAAiB,KAAK,UAAU,OAC1C,MAAK,QAAQ,KAAK,SAAS,KAAK,OAAO,SAAS;AAGpD,SAAO;;CAGT,AAAO,MAAiB;AACtB,MAAI,KAAK,UAAU,OACjB,OAAM,IAAIG,kCAAmB;AAE/B,SAAO,KAAK;;CAGd,AAAO,aAAwB;AAC7B,MAAI,KAAK,UAAU,OACjB,OAAM,IAAIA,kCAAmB;AAE/B,SAAO,KAAK;;CAGd,cAAuB;AACrB,SAAO,KAAK,UAAU;;;;;;;CAQxB,OAAO,OAA6B;AAClC,MAAI,SAAS,MAAO,QAAO;AAC3B,MAAI,CAAC,0BAA0B,MAAM,CAAE,QAAO;AAC9C,SAAO,KAAK,aAAa,MAAM"}
@@ -1,18 +1,20 @@
1
1
  import { BaseChannel } from "./base.cjs";
2
+ import { OverwriteValue } from "../constants.cjs";
2
3
 
3
4
  //#region src/channels/binop.d.ts
5
+ type OverwriteOrValue<ValueType, UpdateType> = OverwriteValue<ValueType> | UpdateType;
4
6
  type BinaryOperator<ValueType, UpdateType> = (a: ValueType, b: UpdateType) => ValueType;
5
7
  /**
6
8
  * Stores the result of applying a binary operator to the current value and each new value.
7
9
  */
8
- declare class BinaryOperatorAggregate<ValueType, UpdateType = ValueType> extends BaseChannel<ValueType, UpdateType, ValueType> {
10
+ declare class BinaryOperatorAggregate<ValueType, UpdateType = ValueType> extends BaseChannel<ValueType, OverwriteOrValue<ValueType, UpdateType>, ValueType> {
9
11
  lc_graph_name: string;
10
12
  value: ValueType | undefined;
11
13
  operator: BinaryOperator<ValueType, UpdateType>;
12
14
  initialValueFactory?: () => ValueType;
13
15
  constructor(operator: BinaryOperator<ValueType, UpdateType>, initialValueFactory?: () => ValueType);
14
16
  fromCheckpoint(checkpoint?: ValueType): this;
15
- update(values: UpdateType[]): boolean;
17
+ update(values: OverwriteOrValue<ValueType, UpdateType>[]): boolean;
16
18
  get(): ValueType;
17
19
  checkpoint(): ValueType;
18
20
  isAvailable(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"binop.d.cts","names":["BaseChannel","BinaryOperator","ValueType","UpdateType","BinaryOperatorAggregate"],"sources":["../../src/channels/binop.d.ts"],"sourcesContent":["import { BaseChannel } from \"./base.js\";\nexport type BinaryOperator<ValueType, UpdateType> = (a: ValueType, b: UpdateType) => ValueType;\n/**\n * Stores the result of applying a binary operator to the current value and each new value.\n */\nexport declare class BinaryOperatorAggregate<ValueType, UpdateType = ValueType> extends BaseChannel<ValueType, UpdateType, ValueType> {\n lc_graph_name: string;\n value: ValueType | undefined;\n operator: BinaryOperator<ValueType, UpdateType>;\n initialValueFactory?: () => ValueType;\n constructor(operator: BinaryOperator<ValueType, UpdateType>, initialValueFactory?: () => ValueType);\n fromCheckpoint(checkpoint?: ValueType): this;\n update(values: UpdateType[]): boolean;\n get(): ValueType;\n checkpoint(): ValueType;\n isAvailable(): boolean;\n /**\n * Compare this channel with another channel for equality.\n * Two BinaryOperatorAggregate channels are equal if they have the same operator function.\n * This follows the Python implementation which compares operator references.\n */\n equals(other: BaseChannel): boolean;\n}\n"],"mappings":";;;KACYC,4CAA4CC,cAAcC,eAAeD;;AAArF;;AAAwDA,cAInCE,uBAJmCF,CAAAA,SAAAA,EAAAA,aAIaA,SAJbA,CAAAA,SAIgCF,WAJhCE,CAI4CA,SAJ5CA,EAIuDC,UAJvDD,EAImEA,SAJnEA,CAAAA,CAAAA;eAAcC,EAAAA,MAAAA;OAAeD,EAM1EA,SAN0EA,GAAAA,SAAAA;EAAS,QAAA,EAOhFD,cAPgF,CAOjEC,SAPiE,EAOtDC,UAPsD,CAAA;EAIzEC,mBAAAA,CAAAA,EAAAA,GAAAA,GAIWF,SAJY;EAAA,WAAA,CAAA,QAAA,EAKlBD,cALkB,CAKHC,SALG,EAKQC,UALR,CAAA,EAAA,mBAAA,CAAA,EAAA,GAAA,GAKiDD,SALjD;gBAAyBA,CAAAA,UAAAA,CAAAA,EAMrCA,SANqCA,CAAAA,EAAAA,IAAAA;QAA+BA,CAAAA,MAAAA,EAOjFC,UAPiFD,EAAAA,CAAAA,EAAAA,OAAAA;KAAWC,CAAAA,CAAAA,EAQpGD,SARoGC;YAAYD,CAAAA,CAAAA,EASzGA,SATyGA;aAEhHA,CAAAA,CAAAA,EAAAA,OAAAA;;;;;;QAGyCC,CAAAA,KAAAA,EAWlCH,WAXkCG,CAAAA,EAAAA,OAAAA"}
1
+ {"version":3,"file":"binop.d.cts","names":[],"sources":["../../src/channels/binop.ts"],"mappings":";;;;KAQK,gBAAA,0BACD,cAAA,CAAe,SAAA,IACf,UAAA;AAAA,KAEQ,cAAA,2BACV,CAAA,EAAG,SAAA,EACH,CAAA,EAAG,UAAA,KACA,SAAA;AATmC;;;AAAA,cAoB3B,uBAAA,yBAEE,SAAA,UACL,WAAA,CACR,SAAA,EACA,gBAAA,CAAiB,SAAA,EAAW,UAAA,GAC5B,SAAA;EAEA,aAAA;EAEA,KAAA,EAAO,SAAA;EAEP,QAAA,EAAU,cAAA,CAAe,SAAA,EAAW,UAAA;EAEpC,mBAAA,SAA4B,SAAA;EAE5B,WAAA,CACE,QAAA,EAAU,cAAA,CAAe,SAAA,EAAW,UAAA,GACpC,mBAAA,SAA4B,SAAA;EASvB,cAAA,CAAe,UAAA,GAAa,SAAA;EAW5B,MAAA,CAAO,MAAA,EAAQ,gBAAA,CAAiB,SAAA,EAAW,UAAA;EAkC3C,GAAA,CAAA,GAAO,SAAA;EAOP,UAAA,CAAA,GAAc,SAAA;EAOrB,WAAA,CAAA;EAtGY;AAEd;;;;EA6GE,MAAA,CAAO,KAAA,EAAO,WAAA;AAAA"}
@@ -1,18 +1,20 @@
1
1
  import { BaseChannel } from "./base.js";
2
+ import { OverwriteValue } from "../constants.js";
2
3
 
3
4
  //#region src/channels/binop.d.ts
5
+ type OverwriteOrValue<ValueType, UpdateType> = OverwriteValue<ValueType> | UpdateType;
4
6
  type BinaryOperator<ValueType, UpdateType> = (a: ValueType, b: UpdateType) => ValueType;
5
7
  /**
6
8
  * Stores the result of applying a binary operator to the current value and each new value.
7
9
  */
8
- declare class BinaryOperatorAggregate<ValueType, UpdateType = ValueType> extends BaseChannel<ValueType, UpdateType, ValueType> {
10
+ declare class BinaryOperatorAggregate<ValueType, UpdateType = ValueType> extends BaseChannel<ValueType, OverwriteOrValue<ValueType, UpdateType>, ValueType> {
9
11
  lc_graph_name: string;
10
12
  value: ValueType | undefined;
11
13
  operator: BinaryOperator<ValueType, UpdateType>;
12
14
  initialValueFactory?: () => ValueType;
13
15
  constructor(operator: BinaryOperator<ValueType, UpdateType>, initialValueFactory?: () => ValueType);
14
16
  fromCheckpoint(checkpoint?: ValueType): this;
15
- update(values: UpdateType[]): boolean;
17
+ update(values: OverwriteOrValue<ValueType, UpdateType>[]): boolean;
16
18
  get(): ValueType;
17
19
  checkpoint(): ValueType;
18
20
  isAvailable(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"binop.d.ts","names":["BaseChannel","BinaryOperator","ValueType","UpdateType","BinaryOperatorAggregate"],"sources":["../../src/channels/binop.d.ts"],"sourcesContent":["import { BaseChannel } from \"./base.js\";\nexport type BinaryOperator<ValueType, UpdateType> = (a: ValueType, b: UpdateType) => ValueType;\n/**\n * Stores the result of applying a binary operator to the current value and each new value.\n */\nexport declare class BinaryOperatorAggregate<ValueType, UpdateType = ValueType> extends BaseChannel<ValueType, UpdateType, ValueType> {\n lc_graph_name: string;\n value: ValueType | undefined;\n operator: BinaryOperator<ValueType, UpdateType>;\n initialValueFactory?: () => ValueType;\n constructor(operator: BinaryOperator<ValueType, UpdateType>, initialValueFactory?: () => ValueType);\n fromCheckpoint(checkpoint?: ValueType): this;\n update(values: UpdateType[]): boolean;\n get(): ValueType;\n checkpoint(): ValueType;\n isAvailable(): boolean;\n /**\n * Compare this channel with another channel for equality.\n * Two BinaryOperatorAggregate channels are equal if they have the same operator function.\n * This follows the Python implementation which compares operator references.\n */\n equals(other: BaseChannel): boolean;\n}\n"],"mappings":";;;KACYC,4CAA4CC,cAAcC,eAAeD;;AAArF;;AAAwDA,cAInCE,uBAJmCF,CAAAA,SAAAA,EAAAA,aAIaA,SAJbA,CAAAA,SAIgCF,WAJhCE,CAI4CA,SAJ5CA,EAIuDC,UAJvDD,EAImEA,SAJnEA,CAAAA,CAAAA;eAAcC,EAAAA,MAAAA;OAAeD,EAM1EA,SAN0EA,GAAAA,SAAAA;EAAS,QAAA,EAOhFD,cAPgF,CAOjEC,SAPiE,EAOtDC,UAPsD,CAAA;EAIzEC,mBAAAA,CAAAA,EAAAA,GAAAA,GAIWF,SAJY;EAAA,WAAA,CAAA,QAAA,EAKlBD,cALkB,CAKHC,SALG,EAKQC,UALR,CAAA,EAAA,mBAAA,CAAA,EAAA,GAAA,GAKiDD,SALjD;gBAAyBA,CAAAA,UAAAA,CAAAA,EAMrCA,SANqCA,CAAAA,EAAAA,IAAAA;QAA+BA,CAAAA,MAAAA,EAOjFC,UAPiFD,EAAAA,CAAAA,EAAAA,OAAAA;KAAWC,CAAAA,CAAAA,EAQpGD,SARoGC;YAAYD,CAAAA,CAAAA,EASzGA,SATyGA;aAEhHA,CAAAA,CAAAA,EAAAA,OAAAA;;;;;;QAGyCC,CAAAA,KAAAA,EAWlCH,WAXkCG,CAAAA,EAAAA,OAAAA"}
1
+ {"version":3,"file":"binop.d.ts","names":[],"sources":["../../src/channels/binop.ts"],"mappings":";;;;KAQK,gBAAA,0BACD,cAAA,CAAe,SAAA,IACf,UAAA;AAAA,KAEQ,cAAA,2BACV,CAAA,EAAG,SAAA,EACH,CAAA,EAAG,UAAA,KACA,SAAA;AATmC;;;AAAA,cAoB3B,uBAAA,yBAEE,SAAA,UACL,WAAA,CACR,SAAA,EACA,gBAAA,CAAiB,SAAA,EAAW,UAAA,GAC5B,SAAA;EAEA,aAAA;EAEA,KAAA,EAAO,SAAA;EAEP,QAAA,EAAU,cAAA,CAAe,SAAA,EAAW,UAAA;EAEpC,mBAAA,SAA4B,SAAA;EAE5B,WAAA,CACE,QAAA,EAAU,cAAA,CAAe,SAAA,EAAW,UAAA,GACpC,mBAAA,SAA4B,SAAA;EASvB,cAAA,CAAe,UAAA,GAAa,SAAA;EAW5B,MAAA,CAAO,MAAA,EAAQ,gBAAA,CAAiB,SAAA,EAAW,UAAA;EAkC3C,GAAA,CAAA,GAAO,SAAA;EAOP,UAAA,CAAA,GAAc,SAAA;EAOrB,WAAA,CAAA;EAtGY;AAEd;;;;EA6GE,MAAA,CAAO,KAAA,EAAO,WAAA;AAAA"}
@@ -1,4 +1,5 @@
1
- import { EmptyChannelError } from "../errors.js";
1
+ import { _getOverwriteValue, _isOverwriteValue } from "../constants.js";
2
+ import { EmptyChannelError, InvalidUpdateError } from "../errors.js";
2
3
  import { BaseChannel } from "./base.js";
3
4
 
4
5
  //#region src/channels/binop.ts
@@ -28,10 +29,20 @@ var BinaryOperatorAggregate = class BinaryOperatorAggregate extends BaseChannel
28
29
  let newValues = values;
29
30
  if (!newValues.length) return false;
30
31
  if (this.value === void 0) {
31
- [this.value] = newValues;
32
+ const first = newValues[0];
33
+ const [isOverwrite, overwriteVal] = _getOverwriteValue(first);
34
+ if (isOverwrite) this.value = overwriteVal;
35
+ else this.value = first;
32
36
  newValues = newValues.slice(1);
33
37
  }
34
- for (const value of newValues) if (this.value !== void 0) this.value = this.operator(this.value, value);
38
+ let seenOverwrite = false;
39
+ for (const incoming of newValues) if (_isOverwriteValue(incoming)) {
40
+ if (seenOverwrite) throw new InvalidUpdateError("Can receive only one Overwrite value per step.");
41
+ const [, val] = _getOverwriteValue(incoming);
42
+ this.value = val;
43
+ seenOverwrite = true;
44
+ continue;
45
+ } else if (!seenOverwrite && this.value !== void 0) this.value = this.operator(this.value, incoming);
35
46
  return true;
36
47
  }
37
48
  get() {
@@ -1 +1 @@
1
- {"version":3,"file":"binop.js","names":[],"sources":["../../src/channels/binop.ts"],"sourcesContent":["import { EmptyChannelError } from \"../errors.js\";\nimport { BaseChannel } from \"./base.js\";\n\nexport type BinaryOperator<ValueType, UpdateType> = (\n a: ValueType,\n b: UpdateType\n) => ValueType;\n\nconst isBinaryOperatorAggregate = (\n value: BaseChannel\n): value is BinaryOperatorAggregate<unknown, unknown> => {\n return value != null && value.lc_graph_name === \"BinaryOperatorAggregate\";\n};\n\n/**\n * Stores the result of applying a binary operator to the current value and each new value.\n */\nexport class BinaryOperatorAggregate<\n ValueType,\n UpdateType = ValueType\n> extends BaseChannel<ValueType, UpdateType, ValueType> {\n lc_graph_name = \"BinaryOperatorAggregate\";\n\n value: ValueType | undefined;\n\n operator: BinaryOperator<ValueType, UpdateType>;\n\n initialValueFactory?: () => ValueType;\n\n constructor(\n operator: BinaryOperator<ValueType, UpdateType>,\n initialValueFactory?: () => ValueType\n ) {\n super();\n\n this.operator = operator;\n this.initialValueFactory = initialValueFactory;\n this.value = initialValueFactory?.();\n }\n\n public fromCheckpoint(checkpoint?: ValueType) {\n const empty = new BinaryOperatorAggregate(\n this.operator,\n this.initialValueFactory\n );\n if (typeof checkpoint !== \"undefined\") {\n empty.value = checkpoint;\n }\n return empty as this;\n }\n\n public update(values: UpdateType[]): boolean {\n let newValues = values;\n if (!newValues.length) return false;\n\n if (this.value === undefined) {\n [this.value as UpdateType] = newValues;\n newValues = newValues.slice(1);\n }\n\n for (const value of newValues) {\n if (this.value !== undefined) {\n this.value = this.operator(this.value, value);\n }\n }\n return true;\n }\n\n public get(): ValueType {\n if (this.value === undefined) {\n throw new EmptyChannelError();\n }\n return this.value;\n }\n\n public checkpoint(): ValueType {\n if (this.value === undefined) {\n throw new EmptyChannelError();\n }\n return this.value;\n }\n\n isAvailable(): boolean {\n return this.value !== undefined;\n }\n\n /**\n * Compare this channel with another channel for equality.\n * Two BinaryOperatorAggregate channels are equal if they have the same operator function.\n * This follows the Python implementation which compares operator references.\n */\n equals(other: BaseChannel): boolean {\n if (this === other) return true;\n if (!isBinaryOperatorAggregate(other)) return false;\n return this.operator === other.operator;\n }\n}\n"],"mappings":";;;;AAQA,MAAM,6BACJ,UACuD;AACvD,QAAO,SAAS,QAAQ,MAAM,kBAAkB;;;;;AAMlD,IAAa,0BAAb,MAAa,gCAGH,YAA8C;CACtD,gBAAgB;CAEhB;CAEA;CAEA;CAEA,YACE,UACA,qBACA;AACA,SAAO;AAEP,OAAK,WAAW;AAChB,OAAK,sBAAsB;AAC3B,OAAK,QAAQ,uBAAuB;;CAGtC,AAAO,eAAe,YAAwB;EAC5C,MAAM,QAAQ,IAAI,wBAChB,KAAK,UACL,KAAK,oBACN;AACD,MAAI,OAAO,eAAe,YACxB,OAAM,QAAQ;AAEhB,SAAO;;CAGT,AAAO,OAAO,QAA+B;EAC3C,IAAI,YAAY;AAChB,MAAI,CAAC,UAAU,OAAQ,QAAO;AAE9B,MAAI,KAAK,UAAU,QAAW;AAC5B,IAAC,KAAK,SAAuB;AAC7B,eAAY,UAAU,MAAM,EAAE;;AAGhC,OAAK,MAAM,SAAS,UAClB,KAAI,KAAK,UAAU,OACjB,MAAK,QAAQ,KAAK,SAAS,KAAK,OAAO,MAAM;AAGjD,SAAO;;CAGT,AAAO,MAAiB;AACtB,MAAI,KAAK,UAAU,OACjB,OAAM,IAAI,mBAAmB;AAE/B,SAAO,KAAK;;CAGd,AAAO,aAAwB;AAC7B,MAAI,KAAK,UAAU,OACjB,OAAM,IAAI,mBAAmB;AAE/B,SAAO,KAAK;;CAGd,cAAuB;AACrB,SAAO,KAAK,UAAU;;;;;;;CAQxB,OAAO,OAA6B;AAClC,MAAI,SAAS,MAAO,QAAO;AAC3B,MAAI,CAAC,0BAA0B,MAAM,CAAE,QAAO;AAC9C,SAAO,KAAK,aAAa,MAAM"}
1
+ {"version":3,"file":"binop.js","names":[],"sources":["../../src/channels/binop.ts"],"sourcesContent":["import {\n _getOverwriteValue,\n _isOverwriteValue,\n type OverwriteValue,\n} from \"../constants.js\";\nimport { EmptyChannelError, InvalidUpdateError } from \"../errors.js\";\nimport { BaseChannel } from \"./base.js\";\n\ntype OverwriteOrValue<ValueType, UpdateType> =\n | OverwriteValue<ValueType>\n | UpdateType;\n\nexport type BinaryOperator<ValueType, UpdateType> = (\n a: ValueType,\n b: UpdateType\n) => ValueType;\n\nconst isBinaryOperatorAggregate = (\n value: BaseChannel\n): value is BinaryOperatorAggregate<unknown, unknown> => {\n return value != null && value.lc_graph_name === \"BinaryOperatorAggregate\";\n};\n\n/**\n * Stores the result of applying a binary operator to the current value and each new value.\n */\nexport class BinaryOperatorAggregate<\n ValueType,\n UpdateType = ValueType\n> extends BaseChannel<\n ValueType,\n OverwriteOrValue<ValueType, UpdateType>,\n ValueType\n> {\n lc_graph_name = \"BinaryOperatorAggregate\";\n\n value: ValueType | undefined;\n\n operator: BinaryOperator<ValueType, UpdateType>;\n\n initialValueFactory?: () => ValueType;\n\n constructor(\n operator: BinaryOperator<ValueType, UpdateType>,\n initialValueFactory?: () => ValueType\n ) {\n super();\n\n this.operator = operator;\n this.initialValueFactory = initialValueFactory;\n this.value = initialValueFactory?.();\n }\n\n public fromCheckpoint(checkpoint?: ValueType) {\n const empty = new BinaryOperatorAggregate(\n this.operator,\n this.initialValueFactory\n );\n if (typeof checkpoint !== \"undefined\") {\n empty.value = checkpoint;\n }\n return empty as this;\n }\n\n public update(values: OverwriteOrValue<ValueType, UpdateType>[]): boolean {\n let newValues = values;\n if (!newValues.length) return false;\n\n if (this.value === undefined) {\n const first = newValues[0];\n const [isOverwrite, overwriteVal] = _getOverwriteValue<ValueType>(first);\n if (isOverwrite) {\n this.value = overwriteVal;\n } else {\n this.value = first as ValueType;\n }\n newValues = newValues.slice(1);\n }\n\n let seenOverwrite = false;\n for (const incoming of newValues) {\n if (_isOverwriteValue<ValueType>(incoming)) {\n if (seenOverwrite) {\n throw new InvalidUpdateError(\n \"Can receive only one Overwrite value per step.\"\n );\n }\n const [, val] = _getOverwriteValue<ValueType>(incoming);\n this.value = val;\n seenOverwrite = true;\n continue;\n } else if (!seenOverwrite && this.value !== undefined) {\n this.value = this.operator(this.value, incoming);\n }\n }\n return true;\n }\n\n public get(): ValueType {\n if (this.value === undefined) {\n throw new EmptyChannelError();\n }\n return this.value;\n }\n\n public checkpoint(): ValueType {\n if (this.value === undefined) {\n throw new EmptyChannelError();\n }\n return this.value;\n }\n\n isAvailable(): boolean {\n return this.value !== undefined;\n }\n\n /**\n * Compare this channel with another channel for equality.\n * Two BinaryOperatorAggregate channels are equal if they have the same operator function.\n * This follows the Python implementation which compares operator references.\n */\n equals(other: BaseChannel): boolean {\n if (this === other) return true;\n if (!isBinaryOperatorAggregate(other)) return false;\n return this.operator === other.operator;\n }\n}\n"],"mappings":";;;;;AAiBA,MAAM,6BACJ,UACuD;AACvD,QAAO,SAAS,QAAQ,MAAM,kBAAkB;;;;;AAMlD,IAAa,0BAAb,MAAa,gCAGH,YAIR;CACA,gBAAgB;CAEhB;CAEA;CAEA;CAEA,YACE,UACA,qBACA;AACA,SAAO;AAEP,OAAK,WAAW;AAChB,OAAK,sBAAsB;AAC3B,OAAK,QAAQ,uBAAuB;;CAGtC,AAAO,eAAe,YAAwB;EAC5C,MAAM,QAAQ,IAAI,wBAChB,KAAK,UACL,KAAK,oBACN;AACD,MAAI,OAAO,eAAe,YACxB,OAAM,QAAQ;AAEhB,SAAO;;CAGT,AAAO,OAAO,QAA4D;EACxE,IAAI,YAAY;AAChB,MAAI,CAAC,UAAU,OAAQ,QAAO;AAE9B,MAAI,KAAK,UAAU,QAAW;GAC5B,MAAM,QAAQ,UAAU;GACxB,MAAM,CAAC,aAAa,gBAAgB,mBAA8B,MAAM;AACxE,OAAI,YACF,MAAK,QAAQ;OAEb,MAAK,QAAQ;AAEf,eAAY,UAAU,MAAM,EAAE;;EAGhC,IAAI,gBAAgB;AACpB,OAAK,MAAM,YAAY,UACrB,KAAI,kBAA6B,SAAS,EAAE;AAC1C,OAAI,cACF,OAAM,IAAI,mBACR,iDACD;GAEH,MAAM,GAAG,OAAO,mBAA8B,SAAS;AACvD,QAAK,QAAQ;AACb,mBAAgB;AAChB;aACS,CAAC,iBAAiB,KAAK,UAAU,OAC1C,MAAK,QAAQ,KAAK,SAAS,KAAK,OAAO,SAAS;AAGpD,SAAO;;CAGT,AAAO,MAAiB;AACtB,MAAI,KAAK,UAAU,OACjB,OAAM,IAAI,mBAAmB;AAE/B,SAAO,KAAK;;CAGd,AAAO,aAAwB;AAC7B,MAAI,KAAK,UAAU,OACjB,OAAM,IAAI,mBAAmB;AAE/B,SAAO,KAAK;;CAGd,cAAuB;AACrB,SAAO,KAAK,UAAU;;;;;;;CAQxB,OAAO,OAA6B;AAClC,MAAI,SAAS,MAAO,QAAO;AAC3B,MAAI,CAAC,0BAA0B,MAAM,CAAE,QAAO;AAC9C,SAAO,KAAK,aAAa,MAAM"}
@@ -25,16 +25,6 @@ declare class DynamicBarrierValue<Value> extends BaseChannel<void, Value | WaitF
25
25
  checkpoint(): [Value[] | undefined, Value[]];
26
26
  isAvailable(): boolean;
27
27
  }
28
- /**
29
- * A channel that switches between two states with an additional finished flag
30
- *
31
- * - in the "priming" state it can't be read from.
32
- * - if it receives a WaitForNames update, it switches to the "waiting" state.
33
- * - in the "waiting" state it collects named values until all are received.
34
- * - once all named values are received, and the finished flag is set, it can be read once, and it switches
35
- * back to the "priming" state.
36
- * @internal
37
- */
38
28
  //#endregion
39
29
  export { DynamicBarrierValue, WaitForNames };
40
30
  //# sourceMappingURL=dynamic_barrier_value.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic_barrier_value.d.cts","names":["BaseChannel","WaitForNames","Value","DynamicBarrierValue","Set","DynamicBarrierValueAfterFinish"],"sources":["../../src/channels/dynamic_barrier_value.d.ts"],"sourcesContent":["import { BaseChannel } from \"./base.js\";\nexport interface WaitForNames<Value> {\n __names: Value[];\n}\n/**\n * A channel that switches between two states\n *\n * - in the \"priming\" state it can't be read from.\n * - if it receives a WaitForNames update, it switches to the \"waiting\" state.\n * - in the \"waiting\" state it collects named values until all are received.\n * - once all named values are received, it can be read once, and it switches\n * back to the \"priming\" state.\n */\nexport declare class DynamicBarrierValue<Value> extends BaseChannel<void, Value | WaitForNames<Value>, [\n Value[] | undefined,\n Value[]\n]> {\n lc_graph_name: string;\n names?: Set<Value>;\n seen: Set<Value>;\n constructor();\n fromCheckpoint(checkpoint?: [Value[] | undefined, Value[]]): this;\n update(values: (Value | WaitForNames<Value>)[]): boolean;\n consume(): boolean;\n get(): void;\n checkpoint(): [Value[] | undefined, Value[]];\n isAvailable(): boolean;\n}\n/**\n * A channel that switches between two states with an additional finished flag\n *\n * - in the \"priming\" state it can't be read from.\n * - if it receives a WaitForNames update, it switches to the \"waiting\" state.\n * - in the \"waiting\" state it collects named values until all are received.\n * - once all named values are received, and the finished flag is set, it can be read once, and it switches\n * back to the \"priming\" state.\n * @internal\n */\nexport declare class DynamicBarrierValueAfterFinish<Value> extends BaseChannel<void, Value | WaitForNames<Value>, [\n Value[] | undefined,\n Value[],\n boolean\n]> {\n lc_graph_name: string;\n names?: Set<Value>;\n seen: Set<Value>;\n finished: boolean;\n constructor();\n fromCheckpoint(checkpoint?: [Value[] | undefined, Value[], boolean]): this;\n update(values: (Value | WaitForNames<Value>)[]): boolean;\n consume(): boolean;\n finish(): boolean;\n get(): void;\n checkpoint(): [Value[] | undefined, Value[], boolean];\n isAvailable(): boolean;\n}\n"],"mappings":";;;UACiBC;WACJC;AADb;AAYA;;;;;;;;;AAMcA,cANOC,mBAMPD,CAAAA,KAAAA,CAAAA,SAN0CF,WAM1CE,CAAAA,IAAAA,EAN4DA,KAM5DA,GANoED,YAMpEC,CANiFA,KAMjFA,CAAAA,EAAAA,CALVA,KAKME,EAAAA,GAAAA,SAAAA,EAJNF,KAM6BA,EAAAA;eACbA,EAAAA,MAAAA;OAAqBA,CAAAA,EAJ7BE,GAI6BF,CAJzBA,KAIyBA,CAAAA;MAAbD,EAHlBG,GAGkBH,CAHdC,KAGcD,CAAAA;aAGTC,CAAAA;gBAAqBA,CAAAA,UAAAA,CAAAA,EAAAA,CAJPA,KAIOA,EAAAA,GAAAA,SAAAA,EAJcA,KAIdA,EAAAA,CAAAA,CAAAA,EAAAA,IAAAA;QAZgBF,CAAAA,MAAAA,EAAAA,CASpCE,KAToCF,GAS5BC,YAT4BD,CASfE,KATeF,CAAAA,CAAAA,EAAAA,CAAAA,EAAAA,OAAAA;EAAW,OAAA,CAAA,CAAA,EAAA,OAAA;;iBAYhDE,qBAAqBA"}
1
+ {"version":3,"file":"dynamic_barrier_value.d.cts","names":[],"sources":["../../src/channels/dynamic_barrier_value.ts"],"mappings":";;;UAIiB,YAAA;EACf,OAAA,EAAS,KAAA;AAAA;;;;;;;;;AAkBX;cAAa,mBAAA,gBAAmC,WAAA,OAE9C,KAAA,GAAQ,YAAA,CAAa,KAAA,IACpB,KAAA,gBAAqB,KAAA;EAEtB,aAAA;EAEA,KAAA,GAAQ,GAAA,CAAI,KAAA;EAEZ,IAAA,EAAM,GAAA,CAAI,KAAA;EAEV,WAAA,CAAA;EAMA,cAAA,CAAe,UAAA,IAAc,KAAA,gBAAqB,KAAA;EASlD,MAAA,CAAO,MAAA,GAAS,KAAA,GAAQ,YAAA,CAAa,KAAA;EA4BrC,OAAA,CAAA;EAWA,GAAA,CAAA;EAOA,UAAA,CAAA,IAAe,KAAA,gBAAqB,KAAA;EAIpC,WAAA,CAAA;AAAA"}
@@ -25,16 +25,6 @@ declare class DynamicBarrierValue<Value> extends BaseChannel<void, Value | WaitF
25
25
  checkpoint(): [Value[] | undefined, Value[]];
26
26
  isAvailable(): boolean;
27
27
  }
28
- /**
29
- * A channel that switches between two states with an additional finished flag
30
- *
31
- * - in the "priming" state it can't be read from.
32
- * - if it receives a WaitForNames update, it switches to the "waiting" state.
33
- * - in the "waiting" state it collects named values until all are received.
34
- * - once all named values are received, and the finished flag is set, it can be read once, and it switches
35
- * back to the "priming" state.
36
- * @internal
37
- */
38
28
  //#endregion
39
29
  export { DynamicBarrierValue, WaitForNames };
40
30
  //# sourceMappingURL=dynamic_barrier_value.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic_barrier_value.d.ts","names":["BaseChannel","WaitForNames","Value","DynamicBarrierValue","Set","DynamicBarrierValueAfterFinish"],"sources":["../../src/channels/dynamic_barrier_value.d.ts"],"sourcesContent":["import { BaseChannel } from \"./base.js\";\nexport interface WaitForNames<Value> {\n __names: Value[];\n}\n/**\n * A channel that switches between two states\n *\n * - in the \"priming\" state it can't be read from.\n * - if it receives a WaitForNames update, it switches to the \"waiting\" state.\n * - in the \"waiting\" state it collects named values until all are received.\n * - once all named values are received, it can be read once, and it switches\n * back to the \"priming\" state.\n */\nexport declare class DynamicBarrierValue<Value> extends BaseChannel<void, Value | WaitForNames<Value>, [\n Value[] | undefined,\n Value[]\n]> {\n lc_graph_name: string;\n names?: Set<Value>;\n seen: Set<Value>;\n constructor();\n fromCheckpoint(checkpoint?: [Value[] | undefined, Value[]]): this;\n update(values: (Value | WaitForNames<Value>)[]): boolean;\n consume(): boolean;\n get(): void;\n checkpoint(): [Value[] | undefined, Value[]];\n isAvailable(): boolean;\n}\n/**\n * A channel that switches between two states with an additional finished flag\n *\n * - in the \"priming\" state it can't be read from.\n * - if it receives a WaitForNames update, it switches to the \"waiting\" state.\n * - in the \"waiting\" state it collects named values until all are received.\n * - once all named values are received, and the finished flag is set, it can be read once, and it switches\n * back to the \"priming\" state.\n * @internal\n */\nexport declare class DynamicBarrierValueAfterFinish<Value> extends BaseChannel<void, Value | WaitForNames<Value>, [\n Value[] | undefined,\n Value[],\n boolean\n]> {\n lc_graph_name: string;\n names?: Set<Value>;\n seen: Set<Value>;\n finished: boolean;\n constructor();\n fromCheckpoint(checkpoint?: [Value[] | undefined, Value[], boolean]): this;\n update(values: (Value | WaitForNames<Value>)[]): boolean;\n consume(): boolean;\n finish(): boolean;\n get(): void;\n checkpoint(): [Value[] | undefined, Value[], boolean];\n isAvailable(): boolean;\n}\n"],"mappings":";;;UACiBC;WACJC;AADb;AAYA;;;;;;;;;AAMcA,cANOC,mBAMPD,CAAAA,KAAAA,CAAAA,SAN0CF,WAM1CE,CAAAA,IAAAA,EAN4DA,KAM5DA,GANoED,YAMpEC,CANiFA,KAMjFA,CAAAA,EAAAA,CALVA,KAKME,EAAAA,GAAAA,SAAAA,EAJNF,KAM6BA,EAAAA;eACbA,EAAAA,MAAAA;OAAqBA,CAAAA,EAJ7BE,GAI6BF,CAJzBA,KAIyBA,CAAAA;MAAbD,EAHlBG,GAGkBH,CAHdC,KAGcD,CAAAA;aAGTC,CAAAA;gBAAqBA,CAAAA,UAAAA,CAAAA,EAAAA,CAJPA,KAIOA,EAAAA,GAAAA,SAAAA,EAJcA,KAIdA,EAAAA,CAAAA,CAAAA,EAAAA,IAAAA;QAZgBF,CAAAA,MAAAA,EAAAA,CASpCE,KAToCF,GAS5BC,YAT4BD,CASfE,KATeF,CAAAA,CAAAA,EAAAA,CAAAA,EAAAA,OAAAA;EAAW,OAAA,CAAA,CAAA,EAAA,OAAA;;iBAYhDE,qBAAqBA"}
1
+ {"version":3,"file":"dynamic_barrier_value.d.ts","names":[],"sources":["../../src/channels/dynamic_barrier_value.ts"],"mappings":";;;UAIiB,YAAA;EACf,OAAA,EAAS,KAAA;AAAA;;;;;;;;;AAkBX;cAAa,mBAAA,gBAAmC,WAAA,OAE9C,KAAA,GAAQ,YAAA,CAAa,KAAA,IACpB,KAAA,gBAAqB,KAAA;EAEtB,aAAA;EAEA,KAAA,GAAQ,GAAA,CAAI,KAAA;EAEZ,IAAA,EAAM,GAAA,CAAI,KAAA;EAEV,WAAA,CAAA;EAMA,cAAA,CAAe,UAAA,IAAc,KAAA,gBAAqB,KAAA;EASlD,MAAA,CAAO,MAAA,GAAS,KAAA,GAAQ,YAAA,CAAa,KAAA;EA4BrC,OAAA,CAAA;EAWA,GAAA,CAAA;EAOA,UAAA,CAAA,IAAe,KAAA,gBAAqB,KAAA;EAIpC,WAAA,CAAA;AAAA"}
@@ -1,7 +1,6 @@
1
1
  import { BaseChannel } from "./base.cjs";
2
2
 
3
3
  //#region src/channels/ephemeral_value.d.ts
4
-
5
4
  /**
6
5
  * Stores the value received in the step immediately preceding, clears after.
7
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ephemeral_value.d.cts","names":["BaseChannel","EphemeralValue","Value"],"sources":["../../src/channels/ephemeral_value.d.ts"],"sourcesContent":["import { BaseChannel } from \"./base.js\";\n/**\n * Stores the value received in the step immediately preceding, clears after.\n */\nexport declare class EphemeralValue<Value> extends BaseChannel<Value, Value, Value> {\n lc_graph_name: string;\n guard: boolean;\n value: [Value] | [];\n constructor(guard?: boolean);\n fromCheckpoint(checkpoint?: Value): this;\n update(values: Value[]): boolean;\n get(): Value;\n checkpoint(): Value;\n isAvailable(): boolean;\n}\n"],"mappings":";;;;;;AAIA;AAAmC,cAAdC,cAAc,CAAA,KAAA,CAAA,SAAgBD,WAAhB,CAA4BE,KAA5B,EAAmCA,KAAnC,EAA0CA,KAA1C,CAAA,CAAA;eAA4BA,EAAAA,MAAAA;OAAOA,EAAAA,OAAAA;OAAOA,EAAAA,CAGjEA,KAHiEA,CAAAA,GAAAA,EAAAA;aAGjEA,CAAAA,KAAAA,CAAAA,EAAAA,OAAAA;gBAEoBA,CAAAA,UAAAA,CAAAA,EAAAA,KAAAA,CAAAA,EAAAA,IAAAA;QACbA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,CAAAA,EAAAA,OAAAA;KACRA,CAAAA,CAAAA,EAAAA,KAAAA;YACOA,CAAAA,CAAAA,EAAAA,KAAAA;aARiCF,CAAAA,CAAAA,EAAAA,OAAAA"}
1
+ {"version":3,"file":"ephemeral_value.d.cts","names":[],"sources":["../../src/channels/ephemeral_value.ts"],"mappings":";;;;;AAMA;cAAa,cAAA,gBAA8B,WAAA,CAAY,KAAA,EAAO,KAAA,EAAO,KAAA;EACnE,aAAA;EAEA,KAAA;EAGA,KAAA,GAAQ,KAAA;EAER,WAAA,CAAY,KAAA;EAKZ,cAAA,CAAe,UAAA,GAAa,KAAA;EAQ5B,MAAA,CAAO,MAAA,EAAQ,KAAA;EAkBf,GAAA,CAAA,GAAO,KAAA;EAOP,UAAA,CAAA,GAAc,KAAA;EAOd,WAAA,CAAA;AAAA"}
@@ -1,7 +1,6 @@
1
1
  import { BaseChannel } from "./base.js";
2
2
 
3
3
  //#region src/channels/ephemeral_value.d.ts
4
-
5
4
  /**
6
5
  * Stores the value received in the step immediately preceding, clears after.
7
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ephemeral_value.d.ts","names":["BaseChannel","EphemeralValue","Value"],"sources":["../../src/channels/ephemeral_value.d.ts"],"sourcesContent":["import { BaseChannel } from \"./base.js\";\n/**\n * Stores the value received in the step immediately preceding, clears after.\n */\nexport declare class EphemeralValue<Value> extends BaseChannel<Value, Value, Value> {\n lc_graph_name: string;\n guard: boolean;\n value: [Value] | [];\n constructor(guard?: boolean);\n fromCheckpoint(checkpoint?: Value): this;\n update(values: Value[]): boolean;\n get(): Value;\n checkpoint(): Value;\n isAvailable(): boolean;\n}\n"],"mappings":";;;;;;AAIA;AAAmC,cAAdC,cAAc,CAAA,KAAA,CAAA,SAAgBD,WAAhB,CAA4BE,KAA5B,EAAmCA,KAAnC,EAA0CA,KAA1C,CAAA,CAAA;eAA4BA,EAAAA,MAAAA;OAAOA,EAAAA,OAAAA;OAAOA,EAAAA,CAGjEA,KAHiEA,CAAAA,GAAAA,EAAAA;aAGjEA,CAAAA,KAAAA,CAAAA,EAAAA,OAAAA;gBAEoBA,CAAAA,UAAAA,CAAAA,EAAAA,KAAAA,CAAAA,EAAAA,IAAAA;QACbA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,CAAAA,EAAAA,OAAAA;KACRA,CAAAA,CAAAA,EAAAA,KAAAA;YACOA,CAAAA,CAAAA,EAAAA,KAAAA;aARiCF,CAAAA,CAAAA,EAAAA,OAAAA"}
1
+ {"version":3,"file":"ephemeral_value.d.ts","names":[],"sources":["../../src/channels/ephemeral_value.ts"],"mappings":";;;;;AAMA;cAAa,cAAA,gBAA8B,WAAA,CAAY,KAAA,EAAO,KAAA,EAAO,KAAA;EACnE,aAAA;EAEA,KAAA;EAGA,KAAA,GAAQ,KAAA;EAER,WAAA,CAAY,KAAA;EAKZ,cAAA,CAAe,UAAA,GAAa,KAAA;EAQ5B,MAAA,CAAO,MAAA,EAAQ,KAAA;EAkBf,GAAA,CAAA,GAAO,KAAA;EAOP,UAAA,CAAA,GAAc,KAAA;EAOd,WAAA,CAAA;AAAA"}
@@ -1,7 +1,6 @@
1
1
  import { BaseChannel } from "./base.cjs";
2
2
 
3
3
  //#region src/channels/last_value.d.ts
4
-
5
4
  /**
6
5
  * Stores the last value received, can receive at most one value per step.
7
6
  *
@@ -1 +1 @@
1
- {"version":3,"file":"last_value.d.cts","names":["BaseChannel","LastValue","Value","LastValueAfterFinish"],"sources":["../../src/channels/last_value.d.ts"],"sourcesContent":["import { BaseChannel } from \"./base.js\";\n/**\n * Stores the last value received, can receive at most one value per step.\n *\n * Since `update` is only called once per step and value can only be of length 1,\n * LastValue always stores the last value of a single node. If multiple nodes attempt to\n * write to this channel in a single step, an error will be thrown.\n * @internal\n */\nexport declare class LastValue<Value> extends BaseChannel<Value, Value, Value> {\n protected initialValueFactory?: (() => Value) | undefined;\n lc_graph_name: string;\n value: [Value] | [];\n constructor(initialValueFactory?: (() => Value) | undefined);\n fromCheckpoint(checkpoint?: Value): this;\n update(values: Value[]): boolean;\n get(): Value;\n checkpoint(): Value;\n isAvailable(): boolean;\n}\n/**\n * Stores the last value received, but only made available after finish().\n * Once made available, clears the value.\n */\nexport declare class LastValueAfterFinish<Value> extends BaseChannel<Value, Value, [\n Value,\n boolean\n]> {\n lc_graph_name: string;\n value: [Value] | [];\n finished: boolean;\n fromCheckpoint(checkpoint?: [Value, boolean]): this;\n update(values: Value[]): boolean;\n get(): Value;\n checkpoint(): [Value, boolean] | undefined;\n consume(): boolean;\n finish(): boolean;\n isAvailable(): boolean;\n}\n"],"mappings":";;;;;;AASA;;;;;;AAGYE,cAHSD,SAGTC,CAAAA,KAAAA,CAAAA,SAHkCF,WAGlCE,CAH8CA,KAG9CA,EAHqDA,KAGrDA,EAH4DA,KAG5DA,CAAAA,CAAAA;YACiCA,mBAAAA,CAAAA,EAAAA,CAAAA,GAAAA,GAHFA,KAGEA,CAAAA,GAAAA,SAAAA;eACbA,EAAAA,MAAAA;OACbA,EAAAA,CAHPA,KAGOA,CAAAA,GAAAA,EAAAA;aACRA,CAAAA,mBAAAA,CAAAA,EAAAA,CAAAA,GAAAA,GAHkCA,KAGlCA,CAAAA,GAAAA,SAAAA;gBACOA,CAAAA,UAAAA,CAAAA,EAHcA,KAGdA,CAAAA,EAAAA,IAAAA;QAR4BF,CAAAA,MAAAA,EAM3BE,KAN2BF,EAAAA,CAAAA,EAAAA,OAAAA;EAAW,GAAA,CAAA,CAAA,EAO9CE,KAP8C;EAepCC,UAAAA,CAAAA,CAAAA,EAPHD,KAOGC;EAAoB,WAAA,CAAA,CAAA,EAAA,OAAA;;;;;;AAQtBD,cAREC,oBAQFD,CAAAA,KAAAA,CAAAA,SARsCF,WAQtCE,CARkDA,KAQlDA,EARyDA,KAQzDA,EAAAA,CAPfA,KAQOA,SACQA;EAViD,aAAA,EAAA,MAAA;UAKxDA;;+BAEqBA;iBACdA;SACRA;iBACQA"}
1
+ {"version":3,"file":"last_value.d.cts","names":[],"sources":["../../src/channels/last_value.ts"],"mappings":";;;;;AAWA;;;;;;cAAa,SAAA,gBAAyB,WAAA,CAAY,KAAA,EAAO,KAAA,EAAO,KAAA;EAAA,UAMxC,mBAAA,UAAoB,KAAA;EAL1C,aAAA;EAGA,KAAA,GAAQ,KAAA;EAER,WAAA,CAAsB,mBAAA,UAAoB,KAAA;EAO1C,cAAA,CAAe,UAAA,GAAa,KAAA;EAS5B,MAAA,CAAO,MAAA,EAAQ,KAAA;EAgBf,GAAA,CAAA,GAAO,KAAA;EAOP,UAAA,CAAA,GAAc,KAAA;EAOd,WAAA,CAAA;AAAA;;;;;cASW,oBAAA,gBAAoC,WAAA,CAC/C,KAAA,EACA,KAAA,GACC,KAAA;EAED,aAAA;EAGA,KAAA,GAAQ,KAAA;EAER,QAAA;EAEA,cAAA,CAAe,UAAA,IAAc,KAAA;EAU7B,MAAA,CAAO,MAAA,EAAQ,KAAA;EAWf,GAAA,CAAA,GAAO,KAAA;EAOP,UAAA,CAAA,IAAe,KAAA;EAKf,OAAA,CAAA;EASA,MAAA,CAAA;EAQA,WAAA,CAAA;AAAA"}
@@ -1,7 +1,6 @@
1
1
  import { BaseChannel } from "./base.js";
2
2
 
3
3
  //#region src/channels/last_value.d.ts
4
-
5
4
  /**
6
5
  * Stores the last value received, can receive at most one value per step.
7
6
  *
@@ -1 +1 @@
1
- {"version":3,"file":"last_value.d.ts","names":["BaseChannel","LastValue","Value","LastValueAfterFinish"],"sources":["../../src/channels/last_value.d.ts"],"sourcesContent":["import { BaseChannel } from \"./base.js\";\n/**\n * Stores the last value received, can receive at most one value per step.\n *\n * Since `update` is only called once per step and value can only be of length 1,\n * LastValue always stores the last value of a single node. If multiple nodes attempt to\n * write to this channel in a single step, an error will be thrown.\n * @internal\n */\nexport declare class LastValue<Value> extends BaseChannel<Value, Value, Value> {\n protected initialValueFactory?: (() => Value) | undefined;\n lc_graph_name: string;\n value: [Value] | [];\n constructor(initialValueFactory?: (() => Value) | undefined);\n fromCheckpoint(checkpoint?: Value): this;\n update(values: Value[]): boolean;\n get(): Value;\n checkpoint(): Value;\n isAvailable(): boolean;\n}\n/**\n * Stores the last value received, but only made available after finish().\n * Once made available, clears the value.\n */\nexport declare class LastValueAfterFinish<Value> extends BaseChannel<Value, Value, [\n Value,\n boolean\n]> {\n lc_graph_name: string;\n value: [Value] | [];\n finished: boolean;\n fromCheckpoint(checkpoint?: [Value, boolean]): this;\n update(values: Value[]): boolean;\n get(): Value;\n checkpoint(): [Value, boolean] | undefined;\n consume(): boolean;\n finish(): boolean;\n isAvailable(): boolean;\n}\n"],"mappings":";;;;;;AASA;;;;;;AAGYE,cAHSD,SAGTC,CAAAA,KAAAA,CAAAA,SAHkCF,WAGlCE,CAH8CA,KAG9CA,EAHqDA,KAGrDA,EAH4DA,KAG5DA,CAAAA,CAAAA;YACiCA,mBAAAA,CAAAA,EAAAA,CAAAA,GAAAA,GAHFA,KAGEA,CAAAA,GAAAA,SAAAA;eACbA,EAAAA,MAAAA;OACbA,EAAAA,CAHPA,KAGOA,CAAAA,GAAAA,EAAAA;aACRA,CAAAA,mBAAAA,CAAAA,EAAAA,CAAAA,GAAAA,GAHkCA,KAGlCA,CAAAA,GAAAA,SAAAA;gBACOA,CAAAA,UAAAA,CAAAA,EAHcA,KAGdA,CAAAA,EAAAA,IAAAA;QAR4BF,CAAAA,MAAAA,EAM3BE,KAN2BF,EAAAA,CAAAA,EAAAA,OAAAA;EAAW,GAAA,CAAA,CAAA,EAO9CE,KAP8C;EAepCC,UAAAA,CAAAA,CAAAA,EAPHD,KAOGC;EAAoB,WAAA,CAAA,CAAA,EAAA,OAAA;;;;;;AAQtBD,cAREC,oBAQFD,CAAAA,KAAAA,CAAAA,SARsCF,WAQtCE,CARkDA,KAQlDA,EARyDA,KAQzDA,EAAAA,CAPfA,KAQOA,SACQA;EAViD,aAAA,EAAA,MAAA;UAKxDA;;+BAEqBA;iBACdA;SACRA;iBACQA"}
1
+ {"version":3,"file":"last_value.d.ts","names":[],"sources":["../../src/channels/last_value.ts"],"mappings":";;;;;AAWA;;;;;;cAAa,SAAA,gBAAyB,WAAA,CAAY,KAAA,EAAO,KAAA,EAAO,KAAA;EAAA,UAMxC,mBAAA,UAAoB,KAAA;EAL1C,aAAA;EAGA,KAAA,GAAQ,KAAA;EAER,WAAA,CAAsB,mBAAA,UAAoB,KAAA;EAO1C,cAAA,CAAe,UAAA,GAAa,KAAA;EAS5B,MAAA,CAAO,MAAA,EAAQ,KAAA;EAgBf,GAAA,CAAA,GAAO,KAAA;EAOP,UAAA,CAAA,GAAc,KAAA;EAOd,WAAA,CAAA;AAAA;;;;;cASW,oBAAA,gBAAoC,WAAA,CAC/C,KAAA,EACA,KAAA,GACC,KAAA;EAED,aAAA;EAGA,KAAA,GAAQ,KAAA;EAER,QAAA;EAEA,cAAA,CAAe,UAAA,IAAc,KAAA;EAU7B,MAAA,CAAO,MAAA,EAAQ,KAAA;EAWf,GAAA,CAAA,GAAO,KAAA;EAOP,UAAA,CAAA,IAAe,KAAA;EAKf,OAAA,CAAA;EASA,MAAA,CAAA;EAQA,WAAA,CAAA;AAAA"}
@@ -1,7 +1,6 @@
1
1
  import { BaseChannel } from "./base.cjs";
2
2
 
3
3
  //#region src/channels/named_barrier_value.d.ts
4
-
5
4
  /**
6
5
  * A channel that waits until all named values are received before making the value available.
7
6
  *
@@ -1 +1 @@
1
- {"version":3,"file":"named_barrier_value.d.cts","names":["BaseChannel","areSetsEqual","T","Set","NamedBarrierValue","Value","NamedBarrierValueAfterFinish"],"sources":["../../src/channels/named_barrier_value.d.ts"],"sourcesContent":["import { BaseChannel } from \"./base.js\";\nexport declare const areSetsEqual: <T>(a: Set<T>, b: Set<T>) => boolean;\n/**\n * A channel that waits until all named values are received before making the value available.\n *\n * This ensures that if node N and node M both write to channel C, the value of C will not be updated\n * until N and M have completed updating.\n */\nexport declare class NamedBarrierValue<Value> extends BaseChannel<void, Value, Value[]> {\n lc_graph_name: string;\n names: Set<Value>;\n seen: Set<Value>;\n constructor(names: Set<Value>);\n fromCheckpoint(checkpoint?: Value[]): this;\n update(values: Value[]): boolean;\n get(): void;\n checkpoint(): Value[];\n consume(): boolean;\n isAvailable(): boolean;\n}\n/**\n * A channel that waits until all named values are received before making the value ready to be made available.\n * It is only made available after finish() is called.\n * @internal\n */\nexport declare class NamedBarrierValueAfterFinish<Value> extends BaseChannel<void, Value, [\n Value[],\n boolean\n]> {\n lc_graph_name: string;\n names: Set<Value>;\n seen: Set<Value>;\n finished: boolean;\n constructor(names: Set<Value>);\n fromCheckpoint(checkpoint?: [Value[], boolean]): this;\n update(values: Value[]): boolean;\n get(): void;\n checkpoint(): [Value[], boolean];\n consume(): boolean;\n finish(): boolean;\n isAvailable(): boolean;\n}\n"],"mappings":";;;;;AAQA;;;;;AAEWG,cAFUC,iBAEVD,CAAAA,KAAAA,CAAAA,SAF2CH,WAE3CG,CAAAA,IAAAA,EAF6DE,KAE7DF,EAFoEE,KAEpEF,EAAAA,CAAAA,CAAAA;eACGE,EAAAA,MAAAA;OAAJF,EADCA,GACDA,CADKE,KACLF,CAAAA;MACiBE,EADjBF,GACiBE,CADbA,KACaA,CAAAA;aAAJF,CAAAA,KAAAA,EAAAA,GAAAA,CAAIE,KAAJF,CAAAA;gBACSE,CAAAA,UAAAA,CAAAA,EAAAA,KAAAA,EAAAA,CAAAA,EAAAA,IAAAA;QACbA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,CAAAA,EAAAA,OAAAA;KAEDA,CAAAA,CAAAA,EAAAA,IAAAA;YARoCL,CAAAA,CAAAA,EAQpCK,KARoCL,EAAAA;EAAW,OAAA,CAAA,CAAA,EAAA,OAAA;EAiB5CM,WAAAA,CAAAA,CAAAA,EAAAA,OAAAA;;;;;;;AAMXH,cANWG,4BAMXH,CAAAA,KAAAA,CAAAA,SANuDH,WAMvDG,CAAAA,IAAAA,EANyEE,KAMzEF,EAAAA,CALNE,KAOuBA,EAAAA,SAAJF;eAEJE,EAAAA,MAAAA;OAEAA,EAPRF,GAOQE,CAPJA,KAOIA,CAAAA;MAZ8CL,EAMvDG,GANuDH,CAMnDK,KANmDL,CAAAA;EAAW,QAAA,EAAA,OAAA;qBAQrDG,IAAIE;+BACMA;iBACdA;;iBAEAA"}
1
+ {"version":3,"file":"named_barrier_value.d.cts","names":[],"sources":["../../src/channels/named_barrier_value.ts"],"mappings":";;;;AAYA;;;;;cAAa,iBAAA,gBAAiC,WAAA,OAE5C,KAAA,EACA,KAAA;EAEA,aAAA;EAEA,KAAA,EAAO,GAAA,CAAI,KAAA;EAEX,IAAA,EAAM,GAAA,CAAI,KAAA;EAEV,WAAA,CAAY,KAAA,EAAO,GAAA,CAAI,KAAA;EAMvB,cAAA,CAAe,UAAA,GAAa,KAAA;EAQ5B,MAAA,CAAO,MAAA,EAAQ,KAAA;EAqBf,GAAA,CAAA;EAOA,UAAA,CAAA,GAAc,KAAA;EAId,OAAA,CAAA;EAQA,WAAA,CAAA;AAAA;;;;;;cAUW,4BAAA,gBAA4C,WAAA,OAEvD,KAAA,GACC,KAAA;EAED,aAAA;EAEA,KAAA,EAAO,GAAA,CAAI,KAAA;EAEX,IAAA,EAAM,GAAA,CAAI,KAAA;EAEV,QAAA;EAEA,WAAA,CAAY,KAAA,EAAO,GAAA,CAAI,KAAA;EAOvB,cAAA,CAAe,UAAA,IAAc,KAAA;EAU7B,MAAA,CAAO,MAAA,EAAQ,KAAA;EAiBf,GAAA,CAAA;EAOA,UAAA,CAAA,IAAe,KAAA;EAIf,OAAA,CAAA;EAcA,MAAA,CAAA;EAQA,WAAA,CAAA;AAAA"}
@@ -1,7 +1,6 @@
1
1
  import { BaseChannel } from "./base.js";
2
2
 
3
3
  //#region src/channels/named_barrier_value.d.ts
4
-
5
4
  /**
6
5
  * A channel that waits until all named values are received before making the value available.
7
6
  *
@@ -1 +1 @@
1
- {"version":3,"file":"named_barrier_value.d.ts","names":["BaseChannel","areSetsEqual","T","Set","NamedBarrierValue","Value","NamedBarrierValueAfterFinish"],"sources":["../../src/channels/named_barrier_value.d.ts"],"sourcesContent":["import { BaseChannel } from \"./base.js\";\nexport declare const areSetsEqual: <T>(a: Set<T>, b: Set<T>) => boolean;\n/**\n * A channel that waits until all named values are received before making the value available.\n *\n * This ensures that if node N and node M both write to channel C, the value of C will not be updated\n * until N and M have completed updating.\n */\nexport declare class NamedBarrierValue<Value> extends BaseChannel<void, Value, Value[]> {\n lc_graph_name: string;\n names: Set<Value>;\n seen: Set<Value>;\n constructor(names: Set<Value>);\n fromCheckpoint(checkpoint?: Value[]): this;\n update(values: Value[]): boolean;\n get(): void;\n checkpoint(): Value[];\n consume(): boolean;\n isAvailable(): boolean;\n}\n/**\n * A channel that waits until all named values are received before making the value ready to be made available.\n * It is only made available after finish() is called.\n * @internal\n */\nexport declare class NamedBarrierValueAfterFinish<Value> extends BaseChannel<void, Value, [\n Value[],\n boolean\n]> {\n lc_graph_name: string;\n names: Set<Value>;\n seen: Set<Value>;\n finished: boolean;\n constructor(names: Set<Value>);\n fromCheckpoint(checkpoint?: [Value[], boolean]): this;\n update(values: Value[]): boolean;\n get(): void;\n checkpoint(): [Value[], boolean];\n consume(): boolean;\n finish(): boolean;\n isAvailable(): boolean;\n}\n"],"mappings":";;;;;AAQA;;;;;AAEWG,cAFUC,iBAEVD,CAAAA,KAAAA,CAAAA,SAF2CH,WAE3CG,CAAAA,IAAAA,EAF6DE,KAE7DF,EAFoEE,KAEpEF,EAAAA,CAAAA,CAAAA;eACGE,EAAAA,MAAAA;OAAJF,EADCA,GACDA,CADKE,KACLF,CAAAA;MACiBE,EADjBF,GACiBE,CADbA,KACaA,CAAAA;aAAJF,CAAAA,KAAAA,EAAAA,GAAAA,CAAIE,KAAJF,CAAAA;gBACSE,CAAAA,UAAAA,CAAAA,EAAAA,KAAAA,EAAAA,CAAAA,EAAAA,IAAAA;QACbA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,CAAAA,EAAAA,OAAAA;KAEDA,CAAAA,CAAAA,EAAAA,IAAAA;YARoCL,CAAAA,CAAAA,EAQpCK,KARoCL,EAAAA;EAAW,OAAA,CAAA,CAAA,EAAA,OAAA;EAiB5CM,WAAAA,CAAAA,CAAAA,EAAAA,OAAAA;;;;;;;AAMXH,cANWG,4BAMXH,CAAAA,KAAAA,CAAAA,SANuDH,WAMvDG,CAAAA,IAAAA,EANyEE,KAMzEF,EAAAA,CALNE,KAOuBA,EAAAA,SAAJF;eAEJE,EAAAA,MAAAA;OAEAA,EAPRF,GAOQE,CAPJA,KAOIA,CAAAA;MAZ8CL,EAMvDG,GANuDH,CAMnDK,KANmDL,CAAAA;EAAW,QAAA,EAAA,OAAA;qBAQrDG,IAAIE;+BACMA;iBACdA;;iBAEAA"}
1
+ {"version":3,"file":"named_barrier_value.d.ts","names":[],"sources":["../../src/channels/named_barrier_value.ts"],"mappings":";;;;AAYA;;;;;cAAa,iBAAA,gBAAiC,WAAA,OAE5C,KAAA,EACA,KAAA;EAEA,aAAA;EAEA,KAAA,EAAO,GAAA,CAAI,KAAA;EAEX,IAAA,EAAM,GAAA,CAAI,KAAA;EAEV,WAAA,CAAY,KAAA,EAAO,GAAA,CAAI,KAAA;EAMvB,cAAA,CAAe,UAAA,GAAa,KAAA;EAQ5B,MAAA,CAAO,MAAA,EAAQ,KAAA;EAqBf,GAAA,CAAA;EAOA,UAAA,CAAA,GAAc,KAAA;EAId,OAAA,CAAA;EAQA,WAAA,CAAA;AAAA;;;;;;cAUW,4BAAA,gBAA4C,WAAA,OAEvD,KAAA,GACC,KAAA;EAED,aAAA;EAEA,KAAA,EAAO,GAAA,CAAI,KAAA;EAEX,IAAA,EAAM,GAAA,CAAI,KAAA;EAEV,QAAA;EAEA,WAAA,CAAY,KAAA,EAAO,GAAA,CAAI,KAAA;EAOvB,cAAA,CAAe,UAAA,IAAc,KAAA;EAU7B,MAAA,CAAO,MAAA,EAAQ,KAAA;EAiBf,GAAA,CAAA;EAOA,UAAA,CAAA,IAAe,KAAA;EAIf,OAAA,CAAA;EAcA,MAAA,CAAA;EAQA,WAAA,CAAA;AAAA"}
@@ -1,7 +1,6 @@
1
1
  import { BaseChannel } from "./base.cjs";
2
2
 
3
3
  //#region src/channels/topic.d.ts
4
-
5
4
  /**
6
5
  * A configurable PubSub Topic.
7
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"topic.d.cts","names":["BaseChannel","Topic","Value","Array","Set"],"sources":["../../src/channels/topic.d.ts"],"sourcesContent":["import { BaseChannel } from \"./base.js\";\n/**\n * A configurable PubSub Topic.\n */\nexport declare class Topic<Value> extends BaseChannel<Array<Value>, Value | Value[], [\n Value[],\n Value[]\n]> {\n lc_graph_name: string;\n unique: boolean;\n accumulate: boolean;\n seen: Set<Value>;\n values: Value[];\n constructor(fields?: {\n /**\n * Whether to only add unique values to the topic. If `true`, only unique values (using reference equality) will be added to the topic.\n */\n unique?: boolean;\n /**\n * Whether to accumulate values across steps. If `false`, the channel will be emptied after each step.\n */\n accumulate?: boolean;\n });\n fromCheckpoint(checkpoint?: [Value[], Value[]]): this;\n update(values: Array<Value | Value[]>): boolean;\n get(): Array<Value>;\n checkpoint(): [Value[], Value[]];\n isAvailable(): boolean;\n}\n"],"mappings":";;;;;;AAIA;AAA0B,cAALC,KAAK,CAAA,KAAA,CAAA,SAAgBD,WAAhB,CAA4BG,KAA5B,CAAkCD,KAAlC,CAAA,EAA0CA,KAA1C,GAAkDA,KAAlD,EAAA,EAAA,CACtBA,KADwDA,EAAAA,EAExDA,KAFkDC,EAAAA;eAAsBD,EAAAA,MAAAA;QACxEA,EAAAA,OAAAA;YACAA,EAAAA,OAAAA;MAKUA,EAAJE,GAAIF,CAAAA,KAAAA,CAAAA;QAAJE,EACEF,KADFE,EAAAA;aACEF,CAAAA,OAAAA,EAAAA;IAWqBA;;;IACAA,MAAAA,CAAAA,EAAAA,OAAAA;IAAdC;;;IAEAD,UAAAA,CAAAA,EAAAA,OAAAA;;gBAtBuBF,CAAAA,UAAAA,CAAAA,EAAAA,CAmBTE,KAnBSF,EAAAA,EAmBAE,KAnBAF,EAAAA,CAAAA,CAAAA,EAAAA,IAAAA;EAAW,MAAA,CAAA,MAAA,EAoBlCG,KApBkC,CAoB5BD,KApB4B,GAoBpBA,KApBoB,EAAA,CAAA,CAAA,EAAA,OAAA;SAqB1CC,MAAMD;iBACEA,SAASA"}
1
+ {"version":3,"file":"topic.d.cts","names":[],"sources":["../../src/channels/topic.ts"],"mappings":";;;;;AAMA;cAAa,KAAA,gBAAqB,WAAA,CAChC,KAAA,CAAM,KAAA,GACN,KAAA,GAAQ,KAAA,KACP,KAAA,IAAS,KAAA;EAEV,aAAA;EAEA,MAAA;EAEA,UAAA;EAEA,IAAA,EAAM,GAAA,CAAI,KAAA;EAEV,MAAA,EAAQ,KAAA;EAER,WAAA,CAAY,MAAA;IAFJ;;;IAMN,MAAA;IA4BkC;;;IAxBlC,UAAA;EAAA;EAWK,cAAA,CAAe,UAAA,IAAc,KAAA,IAAS,KAAA;EAatC,MAAA,CAAO,MAAA,EAAQ,KAAA,CAAM,KAAA,GAAQ,KAAA;EAwB7B,GAAA,CAAA,GAAO,KAAA,CAAM,KAAA;EAOb,UAAA,CAAA,IAAe,KAAA,IAAS,KAAA;EAI/B,WAAA,CAAA;AAAA"}
@@ -1,7 +1,6 @@
1
1
  import { BaseChannel } from "./base.js";
2
2
 
3
3
  //#region src/channels/topic.d.ts
4
-
5
4
  /**
6
5
  * A configurable PubSub Topic.
7
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"topic.d.ts","names":["BaseChannel","Topic","Value","Array","Set"],"sources":["../../src/channels/topic.d.ts"],"sourcesContent":["import { BaseChannel } from \"./base.js\";\n/**\n * A configurable PubSub Topic.\n */\nexport declare class Topic<Value> extends BaseChannel<Array<Value>, Value | Value[], [\n Value[],\n Value[]\n]> {\n lc_graph_name: string;\n unique: boolean;\n accumulate: boolean;\n seen: Set<Value>;\n values: Value[];\n constructor(fields?: {\n /**\n * Whether to only add unique values to the topic. If `true`, only unique values (using reference equality) will be added to the topic.\n */\n unique?: boolean;\n /**\n * Whether to accumulate values across steps. If `false`, the channel will be emptied after each step.\n */\n accumulate?: boolean;\n });\n fromCheckpoint(checkpoint?: [Value[], Value[]]): this;\n update(values: Array<Value | Value[]>): boolean;\n get(): Array<Value>;\n checkpoint(): [Value[], Value[]];\n isAvailable(): boolean;\n}\n"],"mappings":";;;;;;AAIA;AAA0B,cAALC,KAAK,CAAA,KAAA,CAAA,SAAgBD,WAAhB,CAA4BG,KAA5B,CAAkCD,KAAlC,CAAA,EAA0CA,KAA1C,GAAkDA,KAAlD,EAAA,EAAA,CACtBA,KADwDA,EAAAA,EAExDA,KAFkDC,EAAAA;eAAsBD,EAAAA,MAAAA;QACxEA,EAAAA,OAAAA;YACAA,EAAAA,OAAAA;MAKUA,EAAJE,GAAIF,CAAAA,KAAAA,CAAAA;QAAJE,EACEF,KADFE,EAAAA;aACEF,CAAAA,OAAAA,EAAAA;IAWqBA;;;IACAA,MAAAA,CAAAA,EAAAA,OAAAA;IAAdC;;;IAEAD,UAAAA,CAAAA,EAAAA,OAAAA;;gBAtBuBF,CAAAA,UAAAA,CAAAA,EAAAA,CAmBTE,KAnBSF,EAAAA,EAmBAE,KAnBAF,EAAAA,CAAAA,CAAAA,EAAAA,IAAAA;EAAW,MAAA,CAAA,MAAA,EAoBlCG,KApBkC,CAoB5BD,KApB4B,GAoBpBA,KApBoB,EAAA,CAAA,CAAA,EAAA,OAAA;SAqB1CC,MAAMD;iBACEA,SAASA"}
1
+ {"version":3,"file":"topic.d.ts","names":[],"sources":["../../src/channels/topic.ts"],"mappings":";;;;;AAMA;cAAa,KAAA,gBAAqB,WAAA,CAChC,KAAA,CAAM,KAAA,GACN,KAAA,GAAQ,KAAA,KACP,KAAA,IAAS,KAAA;EAEV,aAAA;EAEA,MAAA;EAEA,UAAA;EAEA,IAAA,EAAM,GAAA,CAAI,KAAA;EAEV,MAAA,EAAQ,KAAA;EAER,WAAA,CAAY,MAAA;IAFJ;;;IAMN,MAAA;IA4BkC;;;IAxBlC,UAAA;EAAA;EAWK,cAAA,CAAe,UAAA,IAAc,KAAA,IAAS,KAAA;EAatC,MAAA,CAAO,MAAA,EAAQ,KAAA,CAAM,KAAA,GAAQ,KAAA;EAwB7B,GAAA,CAAA,GAAO,KAAA,CAAM,KAAA;EAOb,UAAA,CAAA,IAAe,KAAA,IAAS,KAAA;EAI/B,WAAA,CAAA;AAAA"}
@@ -1,7 +1,6 @@
1
1
  import { BaseChannel } from "./base.cjs";
2
2
 
3
3
  //#region src/channels/untracked_value.d.ts
4
-
5
4
  /**
6
5
  * Stores the last value received, never checkpointed.
7
6
  *
@@ -1 +1 @@
1
- {"version":3,"file":"untracked_value.d.cts","names":["BaseChannel","UntrackedValueChannel","Value"],"sources":["../../src/channels/untracked_value.d.ts"],"sourcesContent":["import { BaseChannel } from \"./base.js\";\n/**\n * Stores the last value received, never checkpointed.\n *\n * This channel stores values during graph execution but does NOT persist\n * the value to checkpoints. On restoration from a checkpoint, the value\n * will be reset to empty (or the initial value if provided).\n *\n * Useful for transient state like:\n * - Database connections\n * - Temporary caches\n * - Runtime-only configuration\n *\n * @internal\n */\nexport declare class UntrackedValueChannel<Value> extends BaseChannel<Value, Value, undefined> {\n lc_graph_name: string;\n /**\n * If true, throws an error when multiple values are received in a single step.\n * If false, stores the last value received.\n */\n guard: boolean;\n /**\n * The current value. MISSING sentinel indicates no value has been set.\n */\n private _value;\n /**\n * Optional factory function for the initial value.\n */\n private initialValueFactory?;\n constructor(options?: {\n guard?: boolean;\n initialValueFactory?: () => Value;\n });\n /**\n * Return a new channel, ignoring the checkpoint since we don't persist.\n * The initial value (if any) is restored.\n */\n fromCheckpoint(_checkpoint?: undefined): this;\n /**\n * Update the channel with the given values.\n * If guard is true, throws if more than one value is received.\n */\n update(values: Value[]): boolean;\n /**\n * Get the current value.\n * @throws EmptyChannelError if no value has been set.\n */\n get(): Value;\n /**\n * Always returns undefined - untracked values are never checkpointed.\n */\n checkpoint(): undefined;\n /**\n * Return true if a value has been set.\n */\n isAvailable(): boolean;\n}\n"],"mappings":";;;;;;AAeA;;;;;;;;;;;;cAAqBC,qCAAqCD,YAAYE,OAAOA;;;;;;;;;;;;;;;;;gCAiBzCA;;;;;;;;;;;iBAWjBA;;;;;SAKRA"}
1
+ {"version":3,"file":"untracked_value.d.cts","names":[],"sources":["../../src/channels/untracked_value.ts"],"mappings":";;;;;AAoBA;;;;;;;;;;;;cAAa,qBAAA,gBAAqC,WAAA,CAChD,KAAA,EACA,KAAA;EAGA,aAAA;EAHA;;;;EASA,KAAA;EAYA;;;EAAA,QAPQ,MAAA;EAOI;;;EAAA,QAFJ,mBAAA;EAER,WAAA,CAAY,OAAA;IACV,KAAA;IACA,mBAAA,SAA4B,KAAA;EAAA;EAyD9B;;;;EA3CA,cAAA,CAAe,WAAA;;;;;EAYf,MAAA,CAAO,MAAA,EAAQ,KAAA;;;;;EAqBf,GAAA,CAAA,GAAO,KAAA;;;;EAUP,UAAA,CAAA;;;;EAOA,WAAA,CAAA;AAAA"}
@@ -1,7 +1,6 @@
1
1
  import { BaseChannel } from "./base.js";
2
2
 
3
3
  //#region src/channels/untracked_value.d.ts
4
-
5
4
  /**
6
5
  * Stores the last value received, never checkpointed.
7
6
  *
@@ -1 +1 @@
1
- {"version":3,"file":"untracked_value.d.ts","names":["BaseChannel","UntrackedValueChannel","Value"],"sources":["../../src/channels/untracked_value.d.ts"],"sourcesContent":["import { BaseChannel } from \"./base.js\";\n/**\n * Stores the last value received, never checkpointed.\n *\n * This channel stores values during graph execution but does NOT persist\n * the value to checkpoints. On restoration from a checkpoint, the value\n * will be reset to empty (or the initial value if provided).\n *\n * Useful for transient state like:\n * - Database connections\n * - Temporary caches\n * - Runtime-only configuration\n *\n * @internal\n */\nexport declare class UntrackedValueChannel<Value> extends BaseChannel<Value, Value, undefined> {\n lc_graph_name: string;\n /**\n * If true, throws an error when multiple values are received in a single step.\n * If false, stores the last value received.\n */\n guard: boolean;\n /**\n * The current value. MISSING sentinel indicates no value has been set.\n */\n private _value;\n /**\n * Optional factory function for the initial value.\n */\n private initialValueFactory?;\n constructor(options?: {\n guard?: boolean;\n initialValueFactory?: () => Value;\n });\n /**\n * Return a new channel, ignoring the checkpoint since we don't persist.\n * The initial value (if any) is restored.\n */\n fromCheckpoint(_checkpoint?: undefined): this;\n /**\n * Update the channel with the given values.\n * If guard is true, throws if more than one value is received.\n */\n update(values: Value[]): boolean;\n /**\n * Get the current value.\n * @throws EmptyChannelError if no value has been set.\n */\n get(): Value;\n /**\n * Always returns undefined - untracked values are never checkpointed.\n */\n checkpoint(): undefined;\n /**\n * Return true if a value has been set.\n */\n isAvailable(): boolean;\n}\n"],"mappings":";;;;;;AAeA;;;;;;;;;;;;cAAqBC,qCAAqCD,YAAYE,OAAOA;;;;;;;;;;;;;;;;;gCAiBzCA;;;;;;;;;;;iBAWjBA;;;;;SAKRA"}
1
+ {"version":3,"file":"untracked_value.d.ts","names":[],"sources":["../../src/channels/untracked_value.ts"],"mappings":";;;;;AAoBA;;;;;;;;;;;;cAAa,qBAAA,gBAAqC,WAAA,CAChD,KAAA,EACA,KAAA;EAGA,aAAA;EAHA;;;;EASA,KAAA;EAYA;;;EAAA,QAPQ,MAAA;EAOI;;;EAAA,QAFJ,mBAAA;EAER,WAAA,CAAY,OAAA;IACV,KAAA;IACA,mBAAA,SAA4B,KAAA;EAAA;EAyD9B;;;;EA3CA,cAAA,CAAe,WAAA;;;;;EAYf,MAAA,CAAO,MAAA,EAAQ,KAAA;;;;;EAqBf,GAAA,CAAA,GAAO,KAAA;;;;EAUP,UAAA,CAAA;;;;EAOA,WAAA,CAAA;AAAA"}