@langchain/langgraph 0.0.12 → 0.0.13

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 (134) hide show
  1. package/dist/channels/any_value.cjs +57 -0
  2. package/dist/channels/any_value.d.ts +16 -0
  3. package/dist/channels/any_value.js +53 -0
  4. package/dist/channels/base.cjs +19 -28
  5. package/dist/channels/base.d.ts +13 -19
  6. package/dist/channels/base.js +17 -24
  7. package/dist/channels/binop.cjs +4 -3
  8. package/dist/channels/binop.d.ts +1 -1
  9. package/dist/channels/binop.js +3 -2
  10. package/dist/channels/dynamic_barrier_value.cjs +88 -0
  11. package/dist/channels/dynamic_barrier_value.d.ts +26 -0
  12. package/dist/channels/dynamic_barrier_value.js +84 -0
  13. package/dist/channels/ephemeral_value.cjs +64 -0
  14. package/dist/channels/ephemeral_value.d.ts +14 -0
  15. package/dist/channels/ephemeral_value.js +60 -0
  16. package/dist/channels/index.cjs +1 -3
  17. package/dist/channels/index.d.ts +1 -1
  18. package/dist/channels/index.js +1 -1
  19. package/dist/channels/last_value.cjs +11 -5
  20. package/dist/channels/last_value.d.ts +5 -1
  21. package/dist/channels/last_value.js +9 -3
  22. package/dist/channels/named_barrier_value.cjs +71 -0
  23. package/dist/channels/named_barrier_value.d.ts +18 -0
  24. package/dist/channels/named_barrier_value.js +66 -0
  25. package/dist/channels/topic.cjs +5 -3
  26. package/dist/channels/topic.d.ts +3 -3
  27. package/dist/channels/topic.js +5 -3
  28. package/dist/checkpoint/base.cjs +30 -12
  29. package/dist/checkpoint/base.d.ts +39 -22
  30. package/dist/checkpoint/base.js +28 -11
  31. package/dist/checkpoint/id.cjs +40 -0
  32. package/dist/checkpoint/id.d.ts +2 -0
  33. package/dist/checkpoint/id.js +35 -0
  34. package/dist/checkpoint/index.cjs +2 -2
  35. package/dist/checkpoint/index.d.ts +2 -2
  36. package/dist/checkpoint/index.js +2 -2
  37. package/dist/checkpoint/memory.cjs +63 -49
  38. package/dist/checkpoint/memory.d.ts +7 -10
  39. package/dist/checkpoint/memory.js +62 -47
  40. package/dist/checkpoint/sqlite.cjs +170 -0
  41. package/dist/checkpoint/sqlite.d.ts +14 -0
  42. package/dist/checkpoint/sqlite.js +163 -0
  43. package/dist/constants.cjs +3 -1
  44. package/dist/constants.d.ts +2 -0
  45. package/dist/constants.js +2 -0
  46. package/dist/errors.cjs +31 -0
  47. package/dist/errors.d.ts +12 -0
  48. package/dist/errors.js +24 -0
  49. package/dist/graph/graph.cjs +235 -95
  50. package/dist/graph/graph.d.ts +52 -23
  51. package/dist/graph/graph.js +234 -96
  52. package/dist/graph/index.cjs +2 -2
  53. package/dist/graph/index.d.ts +2 -2
  54. package/dist/graph/index.js +2 -2
  55. package/dist/graph/message.cjs +4 -3
  56. package/dist/graph/message.d.ts +4 -1
  57. package/dist/graph/message.js +4 -3
  58. package/dist/graph/state.cjs +237 -102
  59. package/dist/graph/state.d.ts +41 -18
  60. package/dist/graph/state.js +238 -104
  61. package/dist/index.cjs +6 -2
  62. package/dist/index.d.ts +3 -2
  63. package/dist/index.js +2 -1
  64. package/dist/prebuilt/agent_executor.cjs +22 -36
  65. package/dist/prebuilt/agent_executor.d.ts +7 -10
  66. package/dist/prebuilt/agent_executor.js +23 -37
  67. package/dist/prebuilt/chat_agent_executor.cjs +13 -13
  68. package/dist/prebuilt/chat_agent_executor.d.ts +3 -1
  69. package/dist/prebuilt/chat_agent_executor.js +15 -15
  70. package/dist/prebuilt/index.cjs +4 -1
  71. package/dist/prebuilt/index.d.ts +1 -0
  72. package/dist/prebuilt/index.js +1 -0
  73. package/dist/prebuilt/tool_node.cjs +59 -0
  74. package/dist/prebuilt/tool_node.d.ts +17 -0
  75. package/dist/prebuilt/tool_node.js +54 -0
  76. package/dist/pregel/debug.cjs +6 -8
  77. package/dist/pregel/debug.d.ts +2 -2
  78. package/dist/pregel/debug.js +5 -7
  79. package/dist/pregel/index.cjs +406 -236
  80. package/dist/pregel/index.d.ts +77 -41
  81. package/dist/pregel/index.js +408 -241
  82. package/dist/pregel/io.cjs +117 -30
  83. package/dist/pregel/io.d.ts +11 -3
  84. package/dist/pregel/io.js +111 -28
  85. package/dist/pregel/read.cjs +126 -46
  86. package/dist/pregel/read.d.ts +27 -18
  87. package/dist/pregel/read.js +125 -45
  88. package/dist/pregel/types.cjs +2 -0
  89. package/dist/pregel/types.d.ts +32 -0
  90. package/dist/pregel/types.js +1 -0
  91. package/dist/pregel/validate.cjs +58 -51
  92. package/dist/pregel/validate.d.ts +14 -13
  93. package/dist/pregel/validate.js +56 -50
  94. package/dist/pregel/write.cjs +46 -30
  95. package/dist/pregel/write.d.ts +18 -8
  96. package/dist/pregel/write.js +45 -29
  97. package/dist/serde/base.cjs +2 -0
  98. package/dist/serde/base.d.ts +4 -0
  99. package/dist/serde/base.js +1 -0
  100. package/dist/setup/async_local_storage.cjs +2 -2
  101. package/dist/setup/async_local_storage.js +1 -1
  102. package/dist/tests/channels.test.d.ts +1 -0
  103. package/dist/tests/channels.test.js +151 -0
  104. package/dist/tests/chatbot.int.test.d.ts +1 -0
  105. package/dist/tests/chatbot.int.test.js +61 -0
  106. package/dist/tests/checkpoints.test.d.ts +1 -0
  107. package/dist/tests/checkpoints.test.js +190 -0
  108. package/dist/tests/graph.test.d.ts +1 -0
  109. package/dist/tests/graph.test.js +15 -0
  110. package/dist/tests/prebuilt.int.test.d.ts +1 -0
  111. package/dist/tests/prebuilt.int.test.js +101 -0
  112. package/dist/tests/prebuilt.test.d.ts +1 -0
  113. package/dist/tests/prebuilt.test.js +195 -0
  114. package/dist/tests/pregel.io.test.d.ts +1 -0
  115. package/dist/tests/pregel.io.test.js +332 -0
  116. package/dist/tests/pregel.read.test.d.ts +1 -0
  117. package/dist/tests/pregel.read.test.js +109 -0
  118. package/dist/tests/pregel.test.d.ts +1 -0
  119. package/dist/tests/pregel.test.js +1879 -0
  120. package/dist/tests/pregel.validate.test.d.ts +1 -0
  121. package/dist/tests/pregel.validate.test.js +198 -0
  122. package/dist/tests/pregel.write.test.d.ts +1 -0
  123. package/dist/tests/pregel.write.test.js +44 -0
  124. package/dist/tests/tracing.int.test.d.ts +1 -0
  125. package/dist/tests/tracing.int.test.js +449 -0
  126. package/dist/tests/utils.d.ts +22 -0
  127. package/dist/tests/utils.js +76 -0
  128. package/dist/utils.cjs +74 -0
  129. package/dist/utils.d.ts +18 -0
  130. package/dist/utils.js +70 -0
  131. package/package.json +11 -7
  132. package/dist/pregel/reserved.cjs +0 -6
  133. package/dist/pregel/reserved.d.ts +0 -3
  134. package/dist/pregel/reserved.js +0 -3
@@ -0,0 +1,22 @@
1
+ import { CallbackManagerForLLMRun } from "@langchain/core/callbacks/manager";
2
+ import { BaseChatModel, BaseChatModelParams } from "@langchain/core/language_models/chat_models";
3
+ import { BaseMessage } from "@langchain/core/messages";
4
+ import { ChatResult } from "@langchain/core/outputs";
5
+ import { RunnableConfig } from "@langchain/core/runnables";
6
+ import { MemorySaver } from "../checkpoint/memory.js";
7
+ import { Checkpoint, CheckpointMetadata } from "../checkpoint/base.js";
8
+ export interface FakeChatModelArgs extends BaseChatModelParams {
9
+ responses: BaseMessage[];
10
+ }
11
+ export declare class FakeChatModel extends BaseChatModel {
12
+ responses: BaseMessage[];
13
+ constructor(fields: FakeChatModelArgs);
14
+ _combineLLMOutput(): never[];
15
+ _llmType(): string;
16
+ _generate(messages: BaseMessage[], options?: this["ParsedCallOptions"], runManager?: CallbackManagerForLLMRun): Promise<ChatResult>;
17
+ }
18
+ export declare class MemorySaverAssertImmutable extends MemorySaver {
19
+ storageForCopies: Record<string, Record<string, string>>;
20
+ constructor();
21
+ put(config: RunnableConfig, checkpoint: Checkpoint, metadata: CheckpointMetadata): Promise<RunnableConfig>;
22
+ }
@@ -0,0 +1,76 @@
1
+ import assert from "node:assert";
2
+ import { BaseChatModel, } from "@langchain/core/language_models/chat_models";
3
+ import { AIMessage } from "@langchain/core/messages";
4
+ import { MemorySaver } from "../checkpoint/memory.js";
5
+ export class FakeChatModel extends BaseChatModel {
6
+ constructor(fields) {
7
+ super(fields);
8
+ Object.defineProperty(this, "responses", {
9
+ enumerable: true,
10
+ configurable: true,
11
+ writable: true,
12
+ value: void 0
13
+ });
14
+ this.responses = fields.responses;
15
+ }
16
+ _combineLLMOutput() {
17
+ return [];
18
+ }
19
+ _llmType() {
20
+ return "fake";
21
+ }
22
+ async _generate(messages, options, runManager) {
23
+ if (options?.stop?.length) {
24
+ return {
25
+ generations: [
26
+ {
27
+ message: new AIMessage(options.stop[0]),
28
+ text: options.stop[0],
29
+ },
30
+ ],
31
+ };
32
+ }
33
+ const response = this.responses.shift();
34
+ const text = messages.map((m) => m.content).join("\n");
35
+ await runManager?.handleLLMNewToken(text);
36
+ return {
37
+ generations: [
38
+ {
39
+ message: response ?? new AIMessage(text),
40
+ text: response ? response.content : text,
41
+ },
42
+ ],
43
+ llmOutput: {},
44
+ };
45
+ }
46
+ }
47
+ export class MemorySaverAssertImmutable extends MemorySaver {
48
+ constructor() {
49
+ super();
50
+ Object.defineProperty(this, "storageForCopies", {
51
+ enumerable: true,
52
+ configurable: true,
53
+ writable: true,
54
+ value: {}
55
+ });
56
+ this.storageForCopies = {};
57
+ }
58
+ async put(config, checkpoint, metadata) {
59
+ const thread_id = config.configurable?.thread_id;
60
+ if (!this.storageForCopies[thread_id]) {
61
+ this.storageForCopies[thread_id] = {};
62
+ }
63
+ // assert checkpoint hasn't been modified since last written
64
+ const saved = await super.get(config);
65
+ if (saved) {
66
+ const savedId = saved.id;
67
+ if (this.storageForCopies[thread_id][savedId]) {
68
+ assert(JSON.stringify(saved) === this.storageForCopies[thread_id][savedId], "Checkpoint has been modified since last written");
69
+ }
70
+ }
71
+ // save a copy of the checkpoint
72
+ this.storageForCopies[thread_id][checkpoint.id] =
73
+ this.serde.stringify(checkpoint);
74
+ return super.put(config, checkpoint, metadata);
75
+ }
76
+ }
package/dist/utils.cjs ADDED
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RunnableCallable = void 0;
4
+ const runnables_1 = require("@langchain/core/runnables");
5
+ class RunnableCallable extends runnables_1.Runnable {
6
+ constructor(fields) {
7
+ super();
8
+ Object.defineProperty(this, "lc_namespace", {
9
+ enumerable: true,
10
+ configurable: true,
11
+ writable: true,
12
+ value: ["langgraph"]
13
+ });
14
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
15
+ Object.defineProperty(this, "func", {
16
+ enumerable: true,
17
+ configurable: true,
18
+ writable: true,
19
+ value: void 0
20
+ });
21
+ Object.defineProperty(this, "tags", {
22
+ enumerable: true,
23
+ configurable: true,
24
+ writable: true,
25
+ value: void 0
26
+ });
27
+ Object.defineProperty(this, "config", {
28
+ enumerable: true,
29
+ configurable: true,
30
+ writable: true,
31
+ value: void 0
32
+ });
33
+ Object.defineProperty(this, "trace", {
34
+ enumerable: true,
35
+ configurable: true,
36
+ writable: true,
37
+ value: true
38
+ });
39
+ Object.defineProperty(this, "recurse", {
40
+ enumerable: true,
41
+ configurable: true,
42
+ writable: true,
43
+ value: true
44
+ });
45
+ this.name = fields.name ?? fields.func.name;
46
+ this.func = fields.func;
47
+ this.config = fields.tags ? { tags: fields.tags } : undefined;
48
+ this.trace = fields.trace ?? this.trace;
49
+ this.recurse = fields.recurse ?? this.recurse;
50
+ }
51
+ async invoke(
52
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
53
+ input, options
54
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
+ ) {
56
+ if (this.func === undefined) {
57
+ return this.invoke(input, options);
58
+ }
59
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
60
+ let returnValue;
61
+ if (this.trace) {
62
+ returnValue = await this._callWithConfig(this.func, input, (0, runnables_1.mergeConfigs)(this.config, options));
63
+ }
64
+ else {
65
+ returnValue = await this.func(input, (0, runnables_1.mergeConfigs)(this.config, options));
66
+ }
67
+ // eslint-disable-next-line no-instanceof/no-instanceof
68
+ if (returnValue instanceof runnables_1.Runnable && this.recurse) {
69
+ return await returnValue.invoke(input, options);
70
+ }
71
+ return returnValue;
72
+ }
73
+ }
74
+ exports.RunnableCallable = RunnableCallable;
@@ -0,0 +1,18 @@
1
+ import { Runnable, RunnableConfig } from "@langchain/core/runnables";
2
+ export interface RunnableCallableArgs extends Partial<any> {
3
+ name?: string;
4
+ func: (...args: any[]) => any;
5
+ tags?: string[];
6
+ trace?: boolean;
7
+ recurse?: boolean;
8
+ }
9
+ export declare class RunnableCallable<I = unknown, O = unknown> extends Runnable<I, O> {
10
+ lc_namespace: string[];
11
+ func: (...args: any[]) => any;
12
+ tags?: string[];
13
+ config?: RunnableConfig;
14
+ trace: boolean;
15
+ recurse: boolean;
16
+ constructor(fields: RunnableCallableArgs);
17
+ invoke(input: any, options?: Partial<RunnableConfig> | undefined): Promise<any>;
18
+ }
package/dist/utils.js ADDED
@@ -0,0 +1,70 @@
1
+ import { mergeConfigs, Runnable, } from "@langchain/core/runnables";
2
+ export class RunnableCallable extends Runnable {
3
+ constructor(fields) {
4
+ super();
5
+ Object.defineProperty(this, "lc_namespace", {
6
+ enumerable: true,
7
+ configurable: true,
8
+ writable: true,
9
+ value: ["langgraph"]
10
+ });
11
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
+ Object.defineProperty(this, "func", {
13
+ enumerable: true,
14
+ configurable: true,
15
+ writable: true,
16
+ value: void 0
17
+ });
18
+ Object.defineProperty(this, "tags", {
19
+ enumerable: true,
20
+ configurable: true,
21
+ writable: true,
22
+ value: void 0
23
+ });
24
+ Object.defineProperty(this, "config", {
25
+ enumerable: true,
26
+ configurable: true,
27
+ writable: true,
28
+ value: void 0
29
+ });
30
+ Object.defineProperty(this, "trace", {
31
+ enumerable: true,
32
+ configurable: true,
33
+ writable: true,
34
+ value: true
35
+ });
36
+ Object.defineProperty(this, "recurse", {
37
+ enumerable: true,
38
+ configurable: true,
39
+ writable: true,
40
+ value: true
41
+ });
42
+ this.name = fields.name ?? fields.func.name;
43
+ this.func = fields.func;
44
+ this.config = fields.tags ? { tags: fields.tags } : undefined;
45
+ this.trace = fields.trace ?? this.trace;
46
+ this.recurse = fields.recurse ?? this.recurse;
47
+ }
48
+ async invoke(
49
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
+ input, options
51
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
52
+ ) {
53
+ if (this.func === undefined) {
54
+ return this.invoke(input, options);
55
+ }
56
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
57
+ let returnValue;
58
+ if (this.trace) {
59
+ returnValue = await this._callWithConfig(this.func, input, mergeConfigs(this.config, options));
60
+ }
61
+ else {
62
+ returnValue = await this.func(input, mergeConfigs(this.config, options));
63
+ }
64
+ // eslint-disable-next-line no-instanceof/no-instanceof
65
+ if (returnValue instanceof Runnable && this.recurse) {
66
+ return await returnValue.invoke(input, options);
67
+ }
68
+ return returnValue;
69
+ }
70
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@langchain/langgraph",
3
- "version": "0.0.12",
3
+ "version": "0.0.13",
4
4
  "description": "LangGraph",
5
5
  "type": "module",
6
6
  "engines": {
@@ -14,15 +14,15 @@
14
14
  },
15
15
  "scripts": {
16
16
  "build": "yarn clean && yarn build:esm && yarn build:cjs && yarn build:scripts",
17
- "build:esm": "NODE_OPTIONS=--max-old-space-size=4096 tsc --outDir dist/ && rm -rf dist/tests dist/**/tests",
18
- "build:cjs": "NODE_OPTIONS=--max-old-space-size=4096 tsc --outDir dist-cjs/ -p tsconfig.cjs.json && yarn move-cjs-to-dist && rm -rf dist-cjs",
17
+ "build:esm": "NODE_OPTIONS=--max-old-space-size=4096 rm -f src/package.json && tsc --outDir dist/",
18
+ "build:cjs": "NODE_OPTIONS=--max-old-space-size=4096 echo '{}' > src/package.json && tsc --outDir dist-cjs/ -p tsconfig.cjs.json && yarn move-cjs-to-dist && rm -rf dist-cjs/ src/package.json",
19
19
  "build:watch": "yarn create-entrypoints && tsc --outDir dist/ --watch",
20
20
  "build:scripts": "yarn create-entrypoints && yarn check-tree-shaking",
21
21
  "lint:eslint": "NODE_OPTIONS=--max-old-space-size=4096 eslint --cache --ext .ts,.js src/",
22
22
  "lint:dpdm": "dpdm --exit-code circular:1 --no-warning --no-tree src/*.ts src/**/*.ts",
23
23
  "lint": "yarn lint:eslint && yarn lint:dpdm",
24
24
  "lint:fix": "yarn lint:eslint --fix && yarn lint:dpdm",
25
- "clean": "rm -rf dist/ && NODE_OPTIONS=--max-old-space-size=4096 yarn create-entrypoints -- --pre",
25
+ "clean": "rm -rf dist/ dist-cjs/ src/package.json && NODE_OPTIONS=--max-old-space-size=4096 yarn create-entrypoints -- --pre",
26
26
  "prepack": "yarn build",
27
27
  "test": "NODE_OPTIONS=--experimental-vm-modules jest --testPathIgnorePatterns=\\.int\\.test.ts --testTimeout 30000 --maxWorkers=50%",
28
28
  "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch --testPathIgnorePatterns=\\.int\\.test.ts",
@@ -37,16 +37,20 @@
37
37
  "author": "LangChain",
38
38
  "license": "MIT",
39
39
  "dependencies": {
40
- "@langchain/core": "^0.1.51"
40
+ "@langchain/core": "^0.1.61",
41
+ "better-sqlite3": "^9.5.0",
42
+ "uuid": "^9.0.1"
41
43
  },
42
44
  "devDependencies": {
43
45
  "@jest/globals": "^29.5.0",
44
46
  "@langchain/community": "^0.0.43",
45
47
  "@langchain/openai": "^0.0.23",
46
- "@langchain/scripts": "~0.0",
48
+ "@langchain/scripts": "^0.0.13",
47
49
  "@swc/core": "^1.3.90",
48
50
  "@swc/jest": "^0.2.29",
49
51
  "@tsconfig/recommended": "^1.0.3",
52
+ "@types/better-sqlite3": "^7.6.9",
53
+ "@types/uuid": "^9",
50
54
  "@typescript-eslint/eslint-plugin": "^6.12.0",
51
55
  "@typescript-eslint/parser": "^6.12.0",
52
56
  "dotenv": "^16.3.1",
@@ -65,7 +69,7 @@
65
69
  "rollup": "^4.5.2",
66
70
  "ts-jest": "^29.1.0",
67
71
  "tsx": "^4.7.0",
68
- "typescript": "<5.2.0",
72
+ "typescript": "^5.4.5",
69
73
  "zod": "^3.22.4",
70
74
  "zod-to-json-schema": "^3.22.4"
71
75
  },
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ReservedChannelsMap = void 0;
4
- exports.ReservedChannelsMap = {
5
- isLastStep: "isLastStep",
6
- };
@@ -1,3 +0,0 @@
1
- export declare const ReservedChannelsMap: {
2
- isLastStep: string;
3
- };
@@ -1,3 +0,0 @@
1
- export const ReservedChannelsMap = {
2
- isLastStep: "isLastStep",
3
- };