@langchain/langgraph 0.2.62 → 0.2.63

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 (52) hide show
  1. package/README.md +14 -0
  2. package/dist/prebuilt/react_agent_executor.cjs +34 -13
  3. package/dist/prebuilt/react_agent_executor.d.ts +3 -0
  4. package/dist/prebuilt/react_agent_executor.js +34 -15
  5. package/dist/prebuilt/react_agent_executor.js.map +1 -1
  6. package/dist/prebuilt/tool_node.cjs +26 -4
  7. package/dist/prebuilt/tool_node.js +27 -5
  8. package/dist/prebuilt/tool_node.js.map +1 -1
  9. package/dist/pregel/debug.cjs +9 -7
  10. package/dist/pregel/debug.d.ts +10 -0
  11. package/dist/pregel/debug.js +2 -2
  12. package/dist/pregel/debug.js.map +1 -1
  13. package/dist/pregel/debug.test.cjs +189 -0
  14. package/dist/pregel/debug.test.d.ts +1 -0
  15. package/dist/pregel/debug.test.js +187 -0
  16. package/dist/pregel/debug.test.js.map +1 -0
  17. package/dist/pregel/io.mapCommand.test.cjs +151 -0
  18. package/dist/pregel/io.mapCommand.test.d.ts +1 -0
  19. package/dist/pregel/io.mapCommand.test.js +149 -0
  20. package/dist/pregel/io.mapCommand.test.js.map +1 -0
  21. package/dist/pregel/messages.test.cjs +351 -0
  22. package/dist/pregel/messages.test.d.ts +1 -0
  23. package/dist/pregel/messages.test.js +349 -0
  24. package/dist/pregel/messages.test.js.map +1 -0
  25. package/dist/pregel/read.cjs +1 -1
  26. package/dist/pregel/read.js +1 -1
  27. package/dist/pregel/read.js.map +1 -1
  28. package/dist/pregel/read.test.cjs +194 -0
  29. package/dist/pregel/read.test.d.ts +1 -0
  30. package/dist/pregel/read.test.js +192 -0
  31. package/dist/pregel/read.test.js.map +1 -0
  32. package/dist/pregel/runner.test.cjs +66 -0
  33. package/dist/pregel/runner.test.d.ts +1 -0
  34. package/dist/pregel/runner.test.js +64 -0
  35. package/dist/pregel/runner.test.js.map +1 -0
  36. package/dist/pregel/utils/config.test.cjs +214 -0
  37. package/dist/pregel/utils/config.test.d.ts +1 -0
  38. package/dist/pregel/utils/config.test.js +212 -0
  39. package/dist/pregel/utils/config.test.js.map +1 -0
  40. package/dist/pregel/utils/subgraph.test.cjs +83 -0
  41. package/dist/pregel/utils/subgraph.test.d.ts +1 -0
  42. package/dist/pregel/utils/subgraph.test.js +81 -0
  43. package/dist/pregel/utils/subgraph.test.js.map +1 -0
  44. package/dist/pregel/validate.test.cjs +220 -0
  45. package/dist/pregel/validate.test.d.ts +1 -0
  46. package/dist/pregel/validate.test.js +218 -0
  47. package/dist/pregel/validate.test.js.map +1 -0
  48. package/dist/pregel/write.test.cjs +181 -0
  49. package/dist/pregel/write.test.d.ts +1 -0
  50. package/dist/pregel/write.test.js +179 -0
  51. package/dist/pregel/write.test.js.map +1 -0
  52. package/package.json +1 -1
@@ -0,0 +1,349 @@
1
+ import { describe, expect, it, jest } from "@jest/globals";
2
+ import { AIMessage, AIMessageChunk, ToolMessage, } from "@langchain/core/messages";
3
+ import { ChatGenerationChunk } from "@langchain/core/outputs";
4
+ import { StreamMessagesHandler } from "./messages.js";
5
+ import { TAG_HIDDEN, TAG_NOSTREAM } from "../constants.js";
6
+ describe("StreamMessagesHandler", () => {
7
+ describe("constructor", () => {
8
+ it("should properly initialize the handler", () => {
9
+ const streamFn = jest.fn();
10
+ const handler = new StreamMessagesHandler(streamFn);
11
+ expect(handler.name).toBe("StreamMessagesHandler");
12
+ expect(handler.streamFn).toBe(streamFn);
13
+ expect(handler.metadatas).toEqual({});
14
+ expect(handler.seen).toEqual({});
15
+ expect(handler.emittedChatModelRunIds).toEqual({});
16
+ expect(handler.stableMessageIdMap).toEqual({});
17
+ expect(handler.lc_prefer_streaming).toBe(true);
18
+ });
19
+ });
20
+ describe("_emit", () => {
21
+ it("should emit a message with metadata", () => {
22
+ const streamFn = jest.fn();
23
+ const handler = new StreamMessagesHandler(streamFn);
24
+ const meta = [
25
+ ["ns1", "ns2"],
26
+ { name: "test", tags: [] },
27
+ ];
28
+ const message = new AIMessage({ content: "Hello world" });
29
+ const runId = "run-123";
30
+ handler._emit(meta, message, runId);
31
+ expect(streamFn).toHaveBeenCalledWith([
32
+ ["ns1", "ns2"],
33
+ "messages",
34
+ [message, { name: "test", tags: [] }],
35
+ ]);
36
+ // Should store the message in seen if it has an ID
37
+ message.id = "msg-123";
38
+ handler._emit(meta, message, runId);
39
+ expect(handler.seen["msg-123"]).toBe(message);
40
+ });
41
+ it("should deduplicate messages when dedupe=true and message has been seen", () => {
42
+ const streamFn = jest.fn();
43
+ const handler = new StreamMessagesHandler(streamFn);
44
+ const meta = [
45
+ ["ns1"],
46
+ { name: "test" },
47
+ ];
48
+ const message = new AIMessage({ content: "Hello world", id: "msg-123" });
49
+ const runId = "run-123";
50
+ // First emit should work
51
+ handler._emit(meta, message, runId);
52
+ expect(streamFn).toHaveBeenCalledTimes(1);
53
+ // Second emit with same ID and dedupe=true should be ignored
54
+ streamFn.mockClear();
55
+ handler._emit(meta, message, runId, true);
56
+ expect(streamFn).not.toHaveBeenCalled();
57
+ });
58
+ it("should assign proper ID to tool messages", () => {
59
+ const streamFn = jest.fn();
60
+ const handler = new StreamMessagesHandler(streamFn);
61
+ const meta = [
62
+ ["ns1"],
63
+ { name: "test" },
64
+ ];
65
+ const toolMessage = new ToolMessage({
66
+ content: "Tool result",
67
+ tool_call_id: "tc-123",
68
+ });
69
+ const runId = "run-456";
70
+ handler._emit(meta, toolMessage, runId);
71
+ // Should assign an ID based on the tool call ID
72
+ expect(toolMessage.id).toBe(`run-${runId}-tool-tc-123`);
73
+ expect(streamFn).toHaveBeenCalled();
74
+ });
75
+ it("should maintain stable message IDs for the same run", () => {
76
+ const streamFn = jest.fn();
77
+ const handler = new StreamMessagesHandler(streamFn);
78
+ const meta = [
79
+ ["ns1"],
80
+ { name: "test" },
81
+ ];
82
+ const runId = "run-789";
83
+ // First message with auto-generated ID
84
+ const message1 = new AIMessage({ content: "First chunk" });
85
+ handler._emit(meta, message1, runId);
86
+ const stableId = message1.id;
87
+ // Second message with no ID should get the same stable ID
88
+ const message2 = new AIMessage({ content: "Second chunk" });
89
+ handler._emit(meta, message2, runId);
90
+ expect(message2.id).toBe(stableId);
91
+ expect(handler.stableMessageIdMap[runId]).toBe(stableId);
92
+ });
93
+ });
94
+ describe("handleChatModelStart", () => {
95
+ it("should store metadata when provided", () => {
96
+ const handler = new StreamMessagesHandler(jest.fn());
97
+ const runId = "run-123";
98
+ const metadata = {
99
+ langgraph_checkpoint_ns: "ns1|ns2",
100
+ other_meta: "value",
101
+ };
102
+ handler.handleChatModelStart({}, // llm
103
+ [], // messages
104
+ runId, undefined, // parentRunId
105
+ {}, // extraParams
106
+ [], // tags
107
+ metadata, // metadata
108
+ "ModelName" // name
109
+ );
110
+ expect(handler.metadatas[runId]).toEqual([
111
+ ["ns1", "ns2"],
112
+ { tags: [], name: "ModelName", ...metadata },
113
+ ]);
114
+ });
115
+ it("should not store metadata when TAG_NOSTREAM is present", () => {
116
+ const handler = new StreamMessagesHandler(jest.fn());
117
+ const runId = "run-123";
118
+ const metadata = {
119
+ langgraph_checkpoint_ns: "ns1|ns2",
120
+ };
121
+ handler.handleChatModelStart({}, [], runId, undefined, {}, [TAG_NOSTREAM], // nostream tag
122
+ metadata, "ModelName");
123
+ // Should not store metadata due to TAG_NOSTREAM
124
+ expect(handler.metadatas[runId]).toBeUndefined();
125
+ });
126
+ });
127
+ describe("handleLLMNewToken", () => {
128
+ it("should emit message chunk when metadata exists", () => {
129
+ const streamFn = jest.fn();
130
+ const handler = new StreamMessagesHandler(streamFn);
131
+ const runId = "run-123";
132
+ handler.metadatas[runId] = [["ns1", "ns2"], { name: "test" }];
133
+ // Spy on _emit
134
+ const emitSpy = jest.spyOn(handler, "_emit");
135
+ handler.handleLLMNewToken("token", { prompt: 0, completion: 0 }, // idx
136
+ runId);
137
+ // Should mark run as emitted
138
+ expect(handler.emittedChatModelRunIds[runId]).toBe(true);
139
+ // Should emit AIMessageChunk when no chunk is provided
140
+ expect(emitSpy).toHaveBeenCalledWith(handler.metadatas[runId], expect.any(AIMessageChunk), runId);
141
+ expect(emitSpy.mock.calls[0][1].content).toBe("token");
142
+ });
143
+ it("should emit provided chunk when available", () => {
144
+ const streamFn = jest.fn();
145
+ const handler = new StreamMessagesHandler(streamFn);
146
+ const runId = "run-123";
147
+ handler.metadatas[runId] = [["ns1"], { name: "test" }];
148
+ // Spy on _emit
149
+ const emitSpy = jest.spyOn(handler, "_emit");
150
+ // Create a chunk
151
+ const chunk = new ChatGenerationChunk({
152
+ message: new AIMessageChunk({ content: "chunk content" }),
153
+ text: "chunk content", // Add text field to satisfy ChatGenerationChunkFields
154
+ });
155
+ handler.handleLLMNewToken("token", { prompt: 0, completion: 0 }, runId, undefined, undefined, { chunk } // provide the chunk
156
+ );
157
+ // Should emit the chunk's message
158
+ expect(emitSpy).toHaveBeenCalledWith(handler.metadatas[runId], chunk.message, runId);
159
+ });
160
+ it("should not emit when metadata is missing", () => {
161
+ const streamFn = jest.fn();
162
+ const handler = new StreamMessagesHandler(streamFn);
163
+ const runId = "run-123";
164
+ // No metadata for this runId
165
+ // Spy on _emit
166
+ const emitSpy = jest.spyOn(handler, "_emit");
167
+ handler.handleLLMNewToken("token", { prompt: 0, completion: 0 }, runId);
168
+ // Should mark run as emitted
169
+ expect(handler.emittedChatModelRunIds[runId]).toBe(true);
170
+ // But should not call _emit
171
+ expect(emitSpy).not.toHaveBeenCalled();
172
+ });
173
+ });
174
+ describe("handleLLMEnd", () => {
175
+ it("should emit message from non-streaming run", () => {
176
+ const streamFn = jest.fn();
177
+ const handler = new StreamMessagesHandler(streamFn);
178
+ const runId = "run-123";
179
+ handler.metadatas[runId] = [["ns1"], { name: "test" }];
180
+ // Not marked as emitted yet
181
+ // Mock _emit directly instead of spying
182
+ handler._emit = jest.fn();
183
+ const message = new AIMessage({ content: "final result" });
184
+ handler.handleLLMEnd({
185
+ generations: [[{ text: "test output", message }]],
186
+ }, runId);
187
+ // Should emit the message with dedupe=true
188
+ expect(handler._emit).toHaveBeenCalledWith(expect.anything(), expect.objectContaining({ content: "final result" }), runId, true);
189
+ // Should clean up
190
+ expect(handler.metadatas[runId]).toBeUndefined();
191
+ });
192
+ it("should not emit for streaming runs that already emitted", () => {
193
+ const streamFn = jest.fn();
194
+ const handler = new StreamMessagesHandler(streamFn);
195
+ const runId = "run-123";
196
+ handler.metadatas[runId] = [["ns1"], { name: "test" }];
197
+ // Mark as already emitted
198
+ handler.emittedChatModelRunIds[runId] = true;
199
+ // Mock _emit directly
200
+ handler._emit = jest.fn();
201
+ handler.handleLLMEnd({
202
+ generations: [
203
+ [
204
+ {
205
+ text: "test output",
206
+ message: new AIMessage({ content: "result" }),
207
+ },
208
+ ],
209
+ ],
210
+ }, runId);
211
+ // Should not emit anything
212
+ expect(handler._emit).not.toHaveBeenCalled();
213
+ // Should clean up metadata
214
+ expect(handler.metadatas[runId]).toBeUndefined();
215
+ });
216
+ });
217
+ describe("handleLLMError", () => {
218
+ it("should clean up metadata on error", () => {
219
+ const handler = new StreamMessagesHandler(jest.fn());
220
+ const runId = "run-123";
221
+ handler.metadatas[runId] = [["ns1"], { name: "test" }];
222
+ handler.handleLLMError(new Error("Test error"), runId);
223
+ // Should clean up metadata
224
+ expect(handler.metadatas[runId]).toBeUndefined();
225
+ });
226
+ });
227
+ describe("handleChainStart", () => {
228
+ it("should store metadata for matching node name", () => {
229
+ const handler = new StreamMessagesHandler(jest.fn());
230
+ const runId = "chain-123";
231
+ const metadata = {
232
+ langgraph_checkpoint_ns: "ns1|ns2",
233
+ langgraph_node: "NodeName", // Matches name parameter
234
+ };
235
+ handler.handleChainStart({}, {}, runId, undefined, [], metadata, undefined, "NodeName" // Name matches langgraph_node
236
+ );
237
+ expect(handler.metadatas[runId]).toEqual([
238
+ ["ns1", "ns2"],
239
+ { tags: [], name: "NodeName", ...metadata },
240
+ ]);
241
+ });
242
+ it("should not store metadata when node name doesn't match", () => {
243
+ const handler = new StreamMessagesHandler(jest.fn());
244
+ const runId = "chain-123";
245
+ const metadata = {
246
+ langgraph_checkpoint_ns: "ns1|ns2",
247
+ langgraph_node: "NodeName", // Doesn't match name parameter
248
+ };
249
+ handler.handleChainStart({}, {}, runId, undefined, [], metadata, undefined, "DifferentName" // Different from langgraph_node
250
+ );
251
+ expect(handler.metadatas[runId]).toBeUndefined();
252
+ });
253
+ it("should not store metadata when TAG_HIDDEN is present", () => {
254
+ const handler = new StreamMessagesHandler(jest.fn());
255
+ const runId = "chain-123";
256
+ const metadata = {
257
+ langgraph_checkpoint_ns: "ns1|ns2",
258
+ langgraph_node: "NodeName",
259
+ };
260
+ handler.handleChainStart({}, {}, runId, undefined, [TAG_HIDDEN], // Hidden tag
261
+ metadata, undefined, "NodeName");
262
+ expect(handler.metadatas[runId]).toBeUndefined();
263
+ });
264
+ });
265
+ describe("handleChainEnd", () => {
266
+ it("should emit a single message output", () => {
267
+ const streamFn = jest.fn();
268
+ const handler = new StreamMessagesHandler(streamFn);
269
+ const runId = "chain-123";
270
+ handler.metadatas[runId] = [["ns1"], { name: "test" }];
271
+ // Mock _emit directly
272
+ handler._emit = jest.fn();
273
+ const message = new AIMessage({ content: "chain result" });
274
+ handler.handleChainEnd(message, runId);
275
+ // Should emit the message with dedupe=true
276
+ expect(handler._emit).toHaveBeenCalledWith(expect.anything(), expect.objectContaining({ content: "chain result" }), runId, true);
277
+ // Should clean up
278
+ expect(handler.metadatas[runId]).toBeUndefined();
279
+ });
280
+ it("should emit messages from an array output", () => {
281
+ const streamFn = jest.fn();
282
+ const handler = new StreamMessagesHandler(streamFn);
283
+ const runId = "chain-123";
284
+ handler.metadatas[runId] = [["ns1"], { name: "test" }];
285
+ // Mock _emit directly
286
+ handler._emit = jest.fn();
287
+ const message1 = new AIMessage({ content: "result 1" });
288
+ const message2 = new AIMessage({ content: "result 2" });
289
+ const notAMessage = "not a message";
290
+ handler.handleChainEnd([message1, message2, notAMessage], runId);
291
+ // Should emit both messages
292
+ expect(handler._emit).toHaveBeenCalledTimes(2);
293
+ // Verify calls in a way that's less brittle
294
+ const callArgs = handler._emit.mock.calls;
295
+ const emittedContents = callArgs.map((args) => args[1].content);
296
+ expect(emittedContents).toContain("result 1");
297
+ expect(emittedContents).toContain("result 2");
298
+ // Should clean up
299
+ expect(handler.metadatas[runId]).toBeUndefined();
300
+ });
301
+ it("should emit messages from object output properties", () => {
302
+ const streamFn = jest.fn();
303
+ const handler = new StreamMessagesHandler(streamFn);
304
+ const runId = "chain-123";
305
+ handler.metadatas[runId] = [["ns1"], { name: "test" }];
306
+ // Mock _emit directly
307
+ handler._emit = jest.fn();
308
+ const message = new AIMessage({ content: "direct result" });
309
+ const arrayMessage = new AIMessage({ content: "array result" });
310
+ handler.handleChainEnd({
311
+ directMessage: message,
312
+ arrayMessages: [arrayMessage, "not a message"],
313
+ otherProp: "something else",
314
+ }, runId);
315
+ // Should emit both messages
316
+ expect(handler._emit).toHaveBeenCalledTimes(2);
317
+ // Verify calls in a way that's less brittle
318
+ const callArgs = handler._emit.mock.calls;
319
+ const emittedContents = callArgs.map((args) => args[1].content);
320
+ expect(emittedContents).toContain("direct result");
321
+ expect(emittedContents).toContain("array result");
322
+ // Should clean up
323
+ expect(handler.metadatas[runId]).toBeUndefined();
324
+ });
325
+ it("should do nothing when metadata is missing", () => {
326
+ const streamFn = jest.fn();
327
+ const handler = new StreamMessagesHandler(streamFn);
328
+ const runId = "chain-123";
329
+ // No metadata for this runId
330
+ // Spy on _emit
331
+ const emitSpy = jest.spyOn(handler, "_emit");
332
+ const message = new AIMessage({ content: "result" });
333
+ handler.handleChainEnd(message, runId);
334
+ // Should not emit anything
335
+ expect(emitSpy).not.toHaveBeenCalled();
336
+ });
337
+ });
338
+ describe("handleChainError", () => {
339
+ it("should clean up metadata on error", () => {
340
+ const handler = new StreamMessagesHandler(jest.fn());
341
+ const runId = "chain-123";
342
+ handler.metadatas[runId] = [["ns1"], { name: "test" }];
343
+ handler.handleChainError(new Error("Test error"), runId);
344
+ // Should clean up metadata
345
+ expect(handler.metadatas[runId]).toBeUndefined();
346
+ });
347
+ });
348
+ });
349
+ //# sourceMappingURL=messages.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.test.js","sourceRoot":"","sources":["../../src/pregel/messages.test.ts"],"names":[],"mappings":"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"}
@@ -48,7 +48,7 @@ class ChannelRead extends utils_js_1.RunnableCallable {
48
48
  static doRead(config, channel, fresh, mapper) {
49
49
  const read = config.configurable?.[constants_js_1.CONFIG_KEY_READ];
50
50
  if (!read) {
51
- throw new Error(`Runnable ${this} is not configured with a read function. Make sure to call in the context of a Pregel process`);
51
+ throw new Error("Runnable is not configured with a read function. Make sure to call in the context of a Pregel process");
52
52
  }
53
53
  if (mapper) {
54
54
  return mapper(read(channel, fresh));
@@ -45,7 +45,7 @@ export class ChannelRead extends RunnableCallable {
45
45
  static doRead(config, channel, fresh, mapper) {
46
46
  const read = config.configurable?.[CONFIG_KEY_READ];
47
47
  if (!read) {
48
- throw new Error(`Runnable ${this} is not configured with a read function. Make sure to call in the context of a Pregel process`);
48
+ throw new Error("Runnable is not configured with a read function. Make sure to call in the context of a Pregel process");
49
49
  }
50
50
  if (mapper) {
51
51
  return mapper(read(channel, fresh));
@@ -1 +1 @@
1
- {"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/pregel/read.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/pregel/read.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const globals_1 = require("@jest/globals");
4
+ const constants_js_1 = require("../constants.cjs");
5
+ const last_value_js_1 = require("../channels/last_value.cjs");
6
+ const read_js_1 = require("./read.cjs");
7
+ const write_js_1 = require("./write.cjs");
8
+ (0, globals_1.describe)("ChannelRead", () => {
9
+ (0, globals_1.it)("should read a single channel value", async () => {
10
+ // Setup mock read function
11
+ const mockRead = globals_1.jest
12
+ .fn()
13
+ .mockImplementation((channel) => {
14
+ if (channel === "test_channel") {
15
+ return "test_value";
16
+ }
17
+ return null;
18
+ });
19
+ const config = {
20
+ configurable: {
21
+ [constants_js_1.CONFIG_KEY_READ]: mockRead,
22
+ },
23
+ };
24
+ // Create channel read
25
+ const channelRead = new read_js_1.ChannelRead("test_channel");
26
+ // Run the channel read with our config
27
+ const result = await channelRead.invoke(null, config);
28
+ // Verify results
29
+ (0, globals_1.expect)(result).toBe("test_value");
30
+ });
31
+ (0, globals_1.it)("should read multiple channel values", async () => {
32
+ // Setup mock read function
33
+ const mockRead = globals_1.jest
34
+ .fn()
35
+ .mockImplementation((channels) => {
36
+ if (Array.isArray(channels)) {
37
+ return {
38
+ channel1: "value1",
39
+ channel2: "value2",
40
+ };
41
+ }
42
+ return null;
43
+ });
44
+ const config = {
45
+ configurable: {
46
+ [constants_js_1.CONFIG_KEY_READ]: mockRead,
47
+ },
48
+ };
49
+ // Create channel read for multiple channels
50
+ const channelRead = new read_js_1.ChannelRead(["channel1", "channel2"]);
51
+ // Run the channel read with our config
52
+ const result = await channelRead.invoke(null, config);
53
+ // Verify results
54
+ (0, globals_1.expect)(result).toEqual({
55
+ channel1: "value1",
56
+ channel2: "value2",
57
+ });
58
+ });
59
+ (0, globals_1.it)("should apply a mapper function to the channel value", async () => {
60
+ // Setup mock read function
61
+ const mockRead = globals_1.jest.fn().mockImplementation(() => "test_value");
62
+ const config = {
63
+ configurable: {
64
+ [constants_js_1.CONFIG_KEY_READ]: mockRead,
65
+ },
66
+ };
67
+ // Create mapper function
68
+ const mapper = (value) => `mapped_${value}`;
69
+ // Create channel read with mapper
70
+ const channelRead = new read_js_1.ChannelRead("test_channel", mapper);
71
+ // Run the channel read with our config
72
+ const result = await channelRead.invoke(null, config);
73
+ // Verify results
74
+ (0, globals_1.expect)(result).toBe("mapped_test_value");
75
+ });
76
+ (0, globals_1.it)("should throw an error if no read function is configured", async () => {
77
+ // Create channel read without configuring a read function
78
+ const channelRead = new read_js_1.ChannelRead("test_channel");
79
+ const config = {};
80
+ // Run the channel read with empty config
81
+ await (0, globals_1.expect)(channelRead.invoke(null, config)).rejects.toThrow("not configured with a read function");
82
+ });
83
+ });
84
+ (0, globals_1.describe)("PregelNode", () => {
85
+ (0, globals_1.it)("should create a node that subscribes to channels", () => {
86
+ const node = new read_js_1.PregelNode({
87
+ channels: ["input", "context"],
88
+ triggers: ["input"],
89
+ });
90
+ (0, globals_1.expect)(node.channels).toEqual(["input", "context"]);
91
+ (0, globals_1.expect)(node.triggers).toEqual(["input"]);
92
+ });
93
+ (0, globals_1.it)("should chain with ChannelWrite using pipe", () => {
94
+ const node = new read_js_1.PregelNode({
95
+ channels: ["input"],
96
+ triggers: ["input"],
97
+ });
98
+ const write = new write_js_1.ChannelWrite([
99
+ { channel: "output", value: "test_output" },
100
+ ]);
101
+ const pipeResult = node.pipe(write);
102
+ (0, globals_1.expect)(pipeResult.writers).toHaveLength(1);
103
+ (0, globals_1.expect)(pipeResult.writers[0]).toBe(write);
104
+ });
105
+ (0, globals_1.it)("should combine multiple consecutive ChannelWrite instances", () => {
106
+ const node = new read_js_1.PregelNode({
107
+ channels: ["input"],
108
+ triggers: ["input"],
109
+ });
110
+ const write1 = new write_js_1.ChannelWrite([{ channel: "output1", value: "value1" }]);
111
+ const write2 = new write_js_1.ChannelWrite([{ channel: "output2", value: "value2" }]);
112
+ // Chain two writes
113
+ const pipeResult = node.pipe(write1).pipe(write2);
114
+ // Get optimized writers
115
+ const optimizedWriters = pipeResult.getWriters();
116
+ // Should be combined into a single ChannelWrite
117
+ (0, globals_1.expect)(optimizedWriters).toHaveLength(1);
118
+ (0, globals_1.expect)(optimizedWriters[0]).toBeInstanceOf(write_js_1.ChannelWrite);
119
+ (0, globals_1.expect)(optimizedWriters[0].writes).toHaveLength(2);
120
+ });
121
+ (0, globals_1.it)("should join additional channels", () => {
122
+ const node = new read_js_1.PregelNode({
123
+ channels: { input: "input", context: "context" },
124
+ triggers: ["input"],
125
+ });
126
+ const joinedNode = node.join(["history"]);
127
+ (0, globals_1.expect)(joinedNode.channels).toEqual({
128
+ input: "input",
129
+ context: "context",
130
+ history: "history",
131
+ });
132
+ });
133
+ });
134
+ (0, globals_1.describe)("Integrated Channel Read and Write", () => {
135
+ (0, globals_1.it)("should perform direct channel operations", async () => {
136
+ // Use direct channel operations rather than depending on invoke
137
+ // Setup test environment with real channels
138
+ const channels = {
139
+ input: new last_value_js_1.LastValue(),
140
+ output: new last_value_js_1.LastValue(),
141
+ };
142
+ // Set initial value in input channel
143
+ channels.input.update(["test_input"]);
144
+ // Get value from input channel
145
+ const inputValue = channels.input.get();
146
+ (0, globals_1.expect)(inputValue).toBe("test_input");
147
+ // Process value
148
+ const processedValue = `processed_${inputValue}`;
149
+ // Write to output channel
150
+ const updated = channels.output.update([processedValue]);
151
+ (0, globals_1.expect)(updated).toBe(true);
152
+ // Read from output channel
153
+ const outputValue = channels.output.get();
154
+ (0, globals_1.expect)(outputValue).toBe("processed_test_input");
155
+ });
156
+ (0, globals_1.it)("should work with manual read and write operations", async () => {
157
+ // Setup test environment with real channels
158
+ const channels = {
159
+ input: new last_value_js_1.LastValue(),
160
+ output: new last_value_js_1.LastValue(),
161
+ };
162
+ // Initialize input channel with a value
163
+ channels.input.update(["test_input"]);
164
+ // Setup write tracking
165
+ let writtenValue = null;
166
+ // Manual read operation
167
+ const readFunc = (channel) => {
168
+ if (channel === "input") {
169
+ return channels.input.get();
170
+ }
171
+ return null;
172
+ };
173
+ // Manual write operation
174
+ const writeFunc = (values) => {
175
+ for (const [channel, value] of values) {
176
+ if (channel === "output") {
177
+ writtenValue = value;
178
+ channels.output.update([value]);
179
+ }
180
+ }
181
+ };
182
+ // Read from input channel
183
+ const inputValue = readFunc("input");
184
+ (0, globals_1.expect)(inputValue).toBe("test_input");
185
+ // Process the value
186
+ const processedValue = `processed_${inputValue}`;
187
+ // Write to output channel
188
+ writeFunc([["output", processedValue]]);
189
+ // Verify the write happened
190
+ (0, globals_1.expect)(writtenValue).toBe("processed_test_input");
191
+ (0, globals_1.expect)(channels.output.get()).toBe("processed_test_input");
192
+ });
193
+ });
194
+ //# sourceMappingURL=read.test.js.map
@@ -0,0 +1 @@
1
+ export {};