@langchain/langgraph 1.4.15-rc.0 → 1.4.16
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.
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.d.cts +6 -0
- package/dist/constants.d.cts.map +1 -1
- package/dist/constants.d.ts +6 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/func/index.cjs +1 -1
- package/dist/func/index.js +1 -1
- package/dist/graph/state.cjs +1 -3
- package/dist/graph/state.cjs.map +1 -1
- package/dist/graph/state.d.cts +2 -4
- package/dist/graph/state.d.cts.map +1 -1
- package/dist/graph/state.d.ts +2 -4
- package/dist/graph/state.d.ts.map +1 -1
- package/dist/graph/state.js +1 -3
- package/dist/graph/state.js.map +1 -1
- package/dist/index.cjs +4 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/interrupt.cjs +19 -7
- package/dist/interrupt.cjs.map +1 -1
- package/dist/interrupt.d.cts +20 -3
- package/dist/interrupt.d.cts.map +1 -1
- package/dist/interrupt.d.ts +20 -3
- package/dist/interrupt.d.ts.map +1 -1
- package/dist/interrupt.js +19 -7
- package/dist/interrupt.js.map +1 -1
- package/dist/pregel/algo.cjs +1 -1
- package/dist/pregel/algo.js +1 -1
- package/dist/pregel/index.cjs +1 -1
- package/dist/pregel/index.js +1 -1
- package/dist/pregel/loop.cjs +1 -1
- package/dist/pregel/loop.js +1 -1
- package/dist/pregel/read.cjs +7 -18
- package/dist/pregel/read.cjs.map +1 -1
- package/dist/pregel/read.d.cts +1 -3
- package/dist/pregel/read.d.cts.map +1 -1
- package/dist/pregel/read.d.ts +1 -3
- package/dist/pregel/read.d.ts.map +1 -1
- package/dist/pregel/read.js +7 -18
- package/dist/pregel/read.js.map +1 -1
- package/dist/pregel/runner.cjs +1 -1
- package/dist/pregel/runner.js +1 -1
- package/dist/pregel/utils/index.cjs +0 -8
- package/dist/pregel/utils/index.cjs.map +1 -1
- package/dist/pregel/utils/index.d.cts +1 -37
- package/dist/pregel/utils/index.d.cts.map +1 -1
- package/dist/pregel/utils/index.d.ts +1 -37
- package/dist/pregel/utils/index.d.ts.map +1 -1
- package/dist/pregel/utils/index.js +1 -8
- package/dist/pregel/utils/index.js.map +1 -1
- package/dist/web.cjs +4 -6
- package/dist/web.d.cts +3 -3
- package/dist/web.d.ts +3 -3
- package/dist/web.js +1 -2
- package/package.json +5 -5
- package/dist/pregel/runnable.cjs +0 -103
- package/dist/pregel/runnable.cjs.map +0 -1
- package/dist/pregel/runnable.js +0 -103
- package/dist/pregel/runnable.js.map +0 -1
package/dist/interrupt.cjs
CHANGED
|
@@ -2,6 +2,8 @@ const require_constants = require("./constants.cjs");
|
|
|
2
2
|
const require_errors = require("./errors.cjs");
|
|
3
3
|
const require_hash = require("./hash.cjs");
|
|
4
4
|
let _langchain_core_singletons = require("@langchain/core/singletons");
|
|
5
|
+
let _langchain_core_utils_json_schema = require("@langchain/core/utils/json_schema");
|
|
6
|
+
let _langchain_core_utils_types = require("@langchain/core/utils/types");
|
|
5
7
|
//#region src/interrupt.ts
|
|
6
8
|
/**
|
|
7
9
|
* Interrupts the execution of a graph node.
|
|
@@ -19,7 +21,10 @@ let _langchain_core_singletons = require("@langchain/core/singletons");
|
|
|
19
21
|
* or if you do, ensure that the `GraphInterrupt` error is thrown again within your `catch` block.
|
|
20
22
|
*
|
|
21
23
|
* @param value - The value to include in the interrupt. This will be available in task.interrupts[].value
|
|
22
|
-
* @
|
|
24
|
+
* @param options - Optional settings. `responseSchema` describes the expected resume value and is
|
|
25
|
+
* available in task.interrupts[].response_schema as JSON Schema; a Zod schema also validates the resume value.
|
|
26
|
+
* @returns The `resume` value provided when the graph is re-invoked with a Command, parsed by
|
|
27
|
+
* `responseSchema` when it is a Zod schema
|
|
23
28
|
*
|
|
24
29
|
* @example
|
|
25
30
|
* ```typescript
|
|
@@ -45,32 +50,39 @@ let _langchain_core_singletons = require("@langchain/core/singletons");
|
|
|
45
50
|
*
|
|
46
51
|
* @throws {Error} If called outside the context of a graph
|
|
47
52
|
* @throws {GraphInterrupt} When no resume value is available
|
|
53
|
+
* @throws {ZodError} When the resume value does not match a Zod `responseSchema`
|
|
48
54
|
*/
|
|
49
|
-
function interrupt(value) {
|
|
55
|
+
function interrupt(value, options) {
|
|
50
56
|
const config = _langchain_core_singletons.AsyncLocalStorageProviderSingleton.getRunnableConfig();
|
|
51
57
|
if (!config) throw new Error("Called interrupt() outside the context of a graph.");
|
|
52
58
|
const conf = config.configurable;
|
|
53
59
|
if (!conf) throw new Error("No configurable found in config");
|
|
54
60
|
if (!conf["__pregel_checkpointer"]) throw new require_errors.GraphValueError("No checkpointer set", { lc_error_code: "MISSING_CHECKPOINTER" });
|
|
61
|
+
const schema = options?.responseSchema;
|
|
62
|
+
const parseResume = (resume) => schema !== void 0 && (0, _langchain_core_utils_types.isInteropZodSchema)(schema) ? (0, _langchain_core_utils_types.interopParse)(schema, resume) : resume;
|
|
55
63
|
const scratchpad = conf[require_constants.CONFIG_KEY_SCRATCHPAD];
|
|
56
64
|
scratchpad.interruptCounter += 1;
|
|
57
65
|
const idx = scratchpad.interruptCounter;
|
|
58
66
|
if (scratchpad.resume.length > 0 && idx < scratchpad.resume.length) {
|
|
59
|
-
|
|
60
|
-
|
|
67
|
+
const parsed = parseResume(scratchpad.resume[idx]);
|
|
68
|
+
conf[require_constants.CONFIG_KEY_SEND]?.([[require_constants.RESUME, scratchpad.resume.slice(0, idx + 1)]]);
|
|
69
|
+
return parsed;
|
|
61
70
|
}
|
|
62
71
|
if (scratchpad.nullResume !== void 0) {
|
|
63
72
|
if (scratchpad.resume.length !== idx) throw new Error(`Resume length mismatch: ${scratchpad.resume.length} !== ${idx}`);
|
|
64
73
|
const v = scratchpad.consumeNullResume();
|
|
74
|
+
const parsed = parseResume(v);
|
|
65
75
|
scratchpad.resume.push(v);
|
|
66
76
|
conf[require_constants.CONFIG_KEY_SEND]?.([[require_constants.RESUME, scratchpad.resume]]);
|
|
67
|
-
return
|
|
77
|
+
return parsed;
|
|
68
78
|
}
|
|
69
79
|
const ns = conf[require_constants.CONFIG_KEY_CHECKPOINT_NS]?.split("|");
|
|
70
|
-
|
|
80
|
+
const pending = {
|
|
71
81
|
id: ns ? require_hash.XXH3(ns.join("|")) : void 0,
|
|
72
82
|
value
|
|
73
|
-
}
|
|
83
|
+
};
|
|
84
|
+
if (schema !== void 0) pending.response_schema = (0, _langchain_core_utils_json_schema.toJsonSchema)(schema);
|
|
85
|
+
throw new require_errors.GraphInterrupt([pending]);
|
|
74
86
|
}
|
|
75
87
|
//#endregion
|
|
76
88
|
exports.interrupt = interrupt;
|
package/dist/interrupt.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interrupt.cjs","names":["AsyncLocalStorageProviderSingleton","GraphValueError","CONFIG_KEY_SCRATCHPAD","CONFIG_KEY_SEND","RESUME","CONFIG_KEY_CHECKPOINT_NS","
|
|
1
|
+
{"version":3,"file":"interrupt.cjs","names":["AsyncLocalStorageProviderSingleton","GraphValueError","CONFIG_KEY_SCRATCHPAD","CONFIG_KEY_SEND","RESUME","CONFIG_KEY_CHECKPOINT_NS","XXH3","GraphInterrupt"],"sources":["../src/interrupt.ts"],"sourcesContent":["import { AsyncLocalStorageProviderSingleton } from \"@langchain/core/singletons\";\nimport { RunnableConfig } from \"@langchain/core/runnables\";\nimport {\n type JSONSchema,\n toJsonSchema,\n} from \"@langchain/core/utils/json_schema\";\nimport {\n type InteropZodType,\n interopParse,\n isInteropZodSchema,\n} from \"@langchain/core/utils/types\";\nimport {\n BaseCheckpointSaver,\n type PendingWrite,\n} from \"@langchain/langgraph-checkpoint\";\nimport { GraphInterrupt, GraphValueError } from \"./errors.js\";\nimport {\n CONFIG_KEY_CHECKPOINT_NS,\n CONFIG_KEY_SCRATCHPAD,\n CONFIG_KEY_SEND,\n CONFIG_KEY_CHECKPOINTER,\n CHECKPOINT_NAMESPACE_SEPARATOR,\n RESUME,\n type Interrupt,\n} from \"./constants.js\";\nimport { PregelScratchpad } from \"./pregel/types.js\";\nimport { XXH3 } from \"./hash.js\";\n\nexport interface InterruptOptions {\n /**\n * Schema for the value expected when the graph is resumed, surfaced to\n * clients on `Interrupt.response_schema` (as JSON Schema) so they can render\n * a typed input form. A Zod schema also parses the resume value, and the\n * parsed value is what `interrupt` returns; a JSON Schema object is passed\n * through to clients without validating the resume value.\n */\n responseSchema?: InteropZodType | JSONSchema;\n}\n\n/**\n * Interrupts the execution of a graph node.\n * This function can be used to pause execution of a node, and return the value of the `resume`\n * input when the graph is re-invoked using `Command`.\n * Multiple interrupts can be called within a single node, and each will be handled sequentially.\n *\n * When an interrupt is called:\n * 1. If there's a `resume` value available (from a previous `Command`), it returns that value.\n * 2. Otherwise, it throws a `GraphInterrupt` with the provided value\n * 3. The graph can be resumed by passing a `Command` with a `resume` value\n *\n * Because the `interrupt` function propagates by throwing a special `GraphInterrupt` error,\n * you should avoid using `try/catch` blocks around the `interrupt` function,\n * or if you do, ensure that the `GraphInterrupt` error is thrown again within your `catch` block.\n *\n * @param value - The value to include in the interrupt. This will be available in task.interrupts[].value\n * @param options - Optional settings. `responseSchema` describes the expected resume value and is\n * available in task.interrupts[].response_schema as JSON Schema; a Zod schema also validates the resume value.\n * @returns The `resume` value provided when the graph is re-invoked with a Command, parsed by\n * `responseSchema` when it is a Zod schema\n *\n * @example\n * ```typescript\n * // Define a node that uses multiple interrupts\n * const nodeWithInterrupts = () => {\n * // First interrupt - will pause execution and include {value: 1} in task values\n * const answer1 = interrupt({ value: 1 });\n *\n * // Second interrupt - only called after first interrupt is resumed\n * const answer2 = interrupt({ value: 2 });\n *\n * // Use the resume values\n * return { myKey: answer1 + \" \" + answer2 };\n * };\n *\n * // Resume the graph after first interrupt\n * await graph.stream(new Command({ resume: \"answer 1\" }));\n *\n * // Resume the graph after second interrupt\n * await graph.stream(new Command({ resume: \"answer 2\" }));\n * // Final result: { myKey: \"answer 1 answer 2\" }\n * ```\n *\n * @throws {Error} If called outside the context of a graph\n * @throws {GraphInterrupt} When no resume value is available\n * @throws {ZodError} When the resume value does not match a Zod `responseSchema`\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function interrupt<I = unknown, R = any>(\n value: I,\n options?: InterruptOptions\n): R {\n const config: RunnableConfig | undefined =\n AsyncLocalStorageProviderSingleton.getRunnableConfig();\n if (!config) {\n throw new Error(\"Called interrupt() outside the context of a graph.\");\n }\n\n const conf = config.configurable;\n if (!conf) {\n throw new Error(\"No configurable found in config\");\n }\n\n const checkpointer: BaseCheckpointSaver = conf[CONFIG_KEY_CHECKPOINTER];\n if (!checkpointer) {\n throw new GraphValueError(\"No checkpointer set\", {\n lc_error_code: \"MISSING_CHECKPOINTER\",\n });\n }\n\n const schema = options?.responseSchema;\n const parseResume = (resume: unknown): R =>\n (schema !== undefined && isInteropZodSchema(schema)\n ? interopParse(schema, resume)\n : resume) as R;\n\n // Track interrupt index\n const scratchpad: PregelScratchpad = conf[CONFIG_KEY_SCRATCHPAD];\n scratchpad.interruptCounter += 1;\n const idx = scratchpad.interruptCounter;\n\n // Find previous resume values\n if (scratchpad.resume.length > 0 && idx < scratchpad.resume.length) {\n const parsed = parseResume(scratchpad.resume[idx]);\n // Persist only through the interrupt being consumed. Values past `idx` belong\n // to later interrupts and may be unvalidated mapped resumes; a failing one must\n // not become durable, or its retry can never replace it.\n conf[CONFIG_KEY_SEND]?.([\n [RESUME, scratchpad.resume.slice(0, idx + 1)] as PendingWrite,\n ]);\n return parsed;\n }\n\n // Find current resume value\n if (scratchpad.nullResume !== undefined) {\n if (scratchpad.resume.length !== idx) {\n throw new Error(\n `Resume length mismatch: ${scratchpad.resume.length} !== ${idx}`\n );\n }\n const v = scratchpad.consumeNullResume();\n const parsed = parseResume(v);\n scratchpad.resume.push(v);\n conf[CONFIG_KEY_SEND]?.([[RESUME, scratchpad.resume] as PendingWrite]);\n return parsed;\n }\n\n // No resume value found\n const ns: string[] | undefined = conf[CONFIG_KEY_CHECKPOINT_NS]?.split(\n CHECKPOINT_NAMESPACE_SEPARATOR\n );\n\n const id = ns ? XXH3(ns.join(CHECKPOINT_NAMESPACE_SEPARATOR)) : undefined;\n const pending: Interrupt<I> = { id, value };\n if (schema !== undefined) {\n pending.response_schema = toJsonSchema(schema);\n }\n throw new GraphInterrupt([pending]);\n}\n\ntype FilterAny<X> =\n (<T>() => T extends X ? 1 : 2) extends <\n T,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n >() => T extends any ? 1 : 2\n ? never\n : X;\n\nexport type InferInterruptInputType<T> = T extends typeof interrupt<\n infer I,\n unknown\n>\n ? I\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends { [key: string]: typeof interrupt<any, any> }\n ? { [K in keyof T]: InferInterruptInputType<T[K]> }[keyof T]\n : unknown;\n\nexport type InferInterruptResumeType<\n T,\n TInner = false,\n> = T extends typeof interrupt<never, infer R>\n ? TInner extends true\n ? FilterAny<R>\n : R\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends { [key: string]: typeof interrupt<any, any> }\n ? { [K in keyof T]: InferInterruptResumeType<T[K], true> }[keyof T]\n : unknown;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuFA,SAAgB,UACd,OACA,SACG;CACH,MAAM,SACJA,2BAAAA,mCAAmC,mBAAmB;AACxD,KAAI,CAAC,OACH,OAAM,IAAI,MAAM,qDAAqD;CAGvE,MAAM,OAAO,OAAO;AACpB,KAAI,CAAC,KACH,OAAM,IAAI,MAAM,kCAAkC;AAIpD,KAAI,CADsC,KAAA,yBAExC,OAAM,IAAIC,eAAAA,gBAAgB,uBAAuB,EAC/C,eAAe,wBAChB,CAAC;CAGJ,MAAM,SAAS,SAAS;CACxB,MAAM,eAAe,WAClB,WAAW,KAAA,MAAA,GAAA,4BAAA,oBAAgC,OAAO,IAAA,GAAA,4BAAA,cAClC,QAAQ,OAAO,GAC5B;CAGN,MAAM,aAA+B,KAAKC,kBAAAA;AAC1C,YAAW,oBAAoB;CAC/B,MAAM,MAAM,WAAW;AAGvB,KAAI,WAAW,OAAO,SAAS,KAAK,MAAM,WAAW,OAAO,QAAQ;EAClE,MAAM,SAAS,YAAY,WAAW,OAAO,KAAK;AAIlD,OAAKC,kBAAAA,mBAAmB,CACtB,CAACC,kBAAAA,QAAQ,WAAW,OAAO,MAAM,GAAG,MAAM,EAAE,CAAC,CAC9C,CAAC;AACF,SAAO;;AAIT,KAAI,WAAW,eAAe,KAAA,GAAW;AACvC,MAAI,WAAW,OAAO,WAAW,IAC/B,OAAM,IAAI,MACR,2BAA2B,WAAW,OAAO,OAAO,OAAO,MAC5D;EAEH,MAAM,IAAI,WAAW,mBAAmB;EACxC,MAAM,SAAS,YAAY,EAAE;AAC7B,aAAW,OAAO,KAAK,EAAE;AACzB,OAAKD,kBAAAA,mBAAmB,CAAC,CAACC,kBAAAA,QAAQ,WAAW,OAAO,CAAiB,CAAC;AACtE,SAAO;;CAIT,MAAM,KAA2B,KAAKC,kBAAAA,2BAA2B,MAAA,IAEhE;CAGD,MAAM,UAAwB;EAAE,IADrB,KAAKC,aAAAA,KAAK,GAAG,KAAA,IAAoC,CAAC,GAAG,KAAA;EAC5B;EAAO;AAC3C,KAAI,WAAW,KAAA,EACb,SAAQ,mBAAA,GAAA,kCAAA,cAA+B,OAAO;AAEhD,OAAM,IAAIC,eAAAA,eAAe,CAAC,QAAQ,CAAC"}
|
package/dist/interrupt.d.cts
CHANGED
|
@@ -1,4 +1,17 @@
|
|
|
1
|
+
import { JSONSchema } from "@langchain/core/utils/json_schema";
|
|
2
|
+
import { InteropZodType } from "@langchain/core/utils/types";
|
|
3
|
+
|
|
1
4
|
//#region src/interrupt.d.ts
|
|
5
|
+
interface InterruptOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Schema for the value expected when the graph is resumed, surfaced to
|
|
8
|
+
* clients on `Interrupt.response_schema` (as JSON Schema) so they can render
|
|
9
|
+
* a typed input form. A Zod schema also parses the resume value, and the
|
|
10
|
+
* parsed value is what `interrupt` returns; a JSON Schema object is passed
|
|
11
|
+
* through to clients without validating the resume value.
|
|
12
|
+
*/
|
|
13
|
+
responseSchema?: InteropZodType | JSONSchema;
|
|
14
|
+
}
|
|
2
15
|
/**
|
|
3
16
|
* Interrupts the execution of a graph node.
|
|
4
17
|
* This function can be used to pause execution of a node, and return the value of the `resume`
|
|
@@ -15,7 +28,10 @@
|
|
|
15
28
|
* or if you do, ensure that the `GraphInterrupt` error is thrown again within your `catch` block.
|
|
16
29
|
*
|
|
17
30
|
* @param value - The value to include in the interrupt. This will be available in task.interrupts[].value
|
|
18
|
-
* @
|
|
31
|
+
* @param options - Optional settings. `responseSchema` describes the expected resume value and is
|
|
32
|
+
* available in task.interrupts[].response_schema as JSON Schema; a Zod schema also validates the resume value.
|
|
33
|
+
* @returns The `resume` value provided when the graph is re-invoked with a Command, parsed by
|
|
34
|
+
* `responseSchema` when it is a Zod schema
|
|
19
35
|
*
|
|
20
36
|
* @example
|
|
21
37
|
* ```typescript
|
|
@@ -41,8 +57,9 @@
|
|
|
41
57
|
*
|
|
42
58
|
* @throws {Error} If called outside the context of a graph
|
|
43
59
|
* @throws {GraphInterrupt} When no resume value is available
|
|
60
|
+
* @throws {ZodError} When the resume value does not match a Zod `responseSchema`
|
|
44
61
|
*/
|
|
45
|
-
declare function interrupt<I = unknown, R = any>(value: I): R;
|
|
62
|
+
declare function interrupt<I = unknown, R = any>(value: I, options?: InterruptOptions): R;
|
|
46
63
|
type FilterAny<X> = (<T>() => T extends X ? 1 : 2) extends (<T>() => (T extends any ? 1 : 2)) ? never : X;
|
|
47
64
|
type InferInterruptInputType<T> = T extends typeof interrupt<infer I, unknown> ? I : T extends {
|
|
48
65
|
[key: string]: typeof interrupt<any, any>;
|
|
@@ -51,5 +68,5 @@ type InferInterruptResumeType<T, TInner = false> = T extends typeof interrupt<ne
|
|
|
51
68
|
[key: string]: typeof interrupt<any, any>;
|
|
52
69
|
} ? { [K in keyof T]: InferInterruptResumeType<T[K], true> }[keyof T] : unknown;
|
|
53
70
|
//#endregion
|
|
54
|
-
export { InferInterruptInputType, InferInterruptResumeType, interrupt };
|
|
71
|
+
export { InferInterruptInputType, InferInterruptResumeType, InterruptOptions, interrupt };
|
|
55
72
|
//# sourceMappingURL=interrupt.d.cts.map
|
package/dist/interrupt.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interrupt.d.cts","names":[],"sources":["../src/interrupt.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"interrupt.d.cts","names":[],"sources":["../src/interrupt.ts"],"mappings":";;;;UA4BiB,gBAAA;;AAAjB;;;;;;EAQE,cAAA,GAAiB,cAAA,GAAiB,UAAA;AAAA;;AAmDpC;;;;;;;;;;;;;;;;;AAsEC;;;;;;;;;;;;;;;;;;AAUD;;;;;;;;;;;iBAhFgB,SAAA,sBAAA,CACd,KAAA,EAAO,CAAA,EACP,OAAA,GAAU,gBAAA,GACT,CAAA;AAAA,KAqEE,SAAA,gBACO,CAAA,SAAU,CAAA,6BAGb,CAAA,iCAEH,CAAA;AAAA,KAEM,uBAAA,MAA6B,CAAA,gBAAiB,SAAA,qBAItD,CAAA,GAEA,CAAA;EAAA,CAAa,GAAA,kBAAqB,SAAA;AAAA,kBAClB,CAAA,GAAI,uBAAA,CAAwB,CAAA,CAAE,CAAA,WAAY,CAAA;AAAA,KAGlD,wBAAA,sBAGR,CAAA,gBAAiB,SAAA,mBACjB,MAAA,gBACE,SAAA,CAAU,CAAA,IACV,CAAA,GAEF,CAAA;EAAA,CAAa,GAAA,kBAAqB,SAAA;AAAA,kBAClB,CAAA,GAAI,wBAAA,CAAyB,CAAA,CAAE,CAAA,iBAAkB,CAAA"}
|
package/dist/interrupt.d.ts
CHANGED
|
@@ -1,4 +1,17 @@
|
|
|
1
|
+
import { JSONSchema } from "@langchain/core/utils/json_schema";
|
|
2
|
+
import { InteropZodType } from "@langchain/core/utils/types";
|
|
3
|
+
|
|
1
4
|
//#region src/interrupt.d.ts
|
|
5
|
+
interface InterruptOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Schema for the value expected when the graph is resumed, surfaced to
|
|
8
|
+
* clients on `Interrupt.response_schema` (as JSON Schema) so they can render
|
|
9
|
+
* a typed input form. A Zod schema also parses the resume value, and the
|
|
10
|
+
* parsed value is what `interrupt` returns; a JSON Schema object is passed
|
|
11
|
+
* through to clients without validating the resume value.
|
|
12
|
+
*/
|
|
13
|
+
responseSchema?: InteropZodType | JSONSchema;
|
|
14
|
+
}
|
|
2
15
|
/**
|
|
3
16
|
* Interrupts the execution of a graph node.
|
|
4
17
|
* This function can be used to pause execution of a node, and return the value of the `resume`
|
|
@@ -15,7 +28,10 @@
|
|
|
15
28
|
* or if you do, ensure that the `GraphInterrupt` error is thrown again within your `catch` block.
|
|
16
29
|
*
|
|
17
30
|
* @param value - The value to include in the interrupt. This will be available in task.interrupts[].value
|
|
18
|
-
* @
|
|
31
|
+
* @param options - Optional settings. `responseSchema` describes the expected resume value and is
|
|
32
|
+
* available in task.interrupts[].response_schema as JSON Schema; a Zod schema also validates the resume value.
|
|
33
|
+
* @returns The `resume` value provided when the graph is re-invoked with a Command, parsed by
|
|
34
|
+
* `responseSchema` when it is a Zod schema
|
|
19
35
|
*
|
|
20
36
|
* @example
|
|
21
37
|
* ```typescript
|
|
@@ -41,8 +57,9 @@
|
|
|
41
57
|
*
|
|
42
58
|
* @throws {Error} If called outside the context of a graph
|
|
43
59
|
* @throws {GraphInterrupt} When no resume value is available
|
|
60
|
+
* @throws {ZodError} When the resume value does not match a Zod `responseSchema`
|
|
44
61
|
*/
|
|
45
|
-
declare function interrupt<I = unknown, R = any>(value: I): R;
|
|
62
|
+
declare function interrupt<I = unknown, R = any>(value: I, options?: InterruptOptions): R;
|
|
46
63
|
type FilterAny<X> = (<T>() => T extends X ? 1 : 2) extends (<T>() => (T extends any ? 1 : 2)) ? never : X;
|
|
47
64
|
type InferInterruptInputType<T> = T extends typeof interrupt<infer I, unknown> ? I : T extends {
|
|
48
65
|
[key: string]: typeof interrupt<any, any>;
|
|
@@ -51,5 +68,5 @@ type InferInterruptResumeType<T, TInner = false> = T extends typeof interrupt<ne
|
|
|
51
68
|
[key: string]: typeof interrupt<any, any>;
|
|
52
69
|
} ? { [K in keyof T]: InferInterruptResumeType<T[K], true> }[keyof T] : unknown;
|
|
53
70
|
//#endregion
|
|
54
|
-
export { InferInterruptInputType, InferInterruptResumeType, interrupt };
|
|
71
|
+
export { InferInterruptInputType, InferInterruptResumeType, InterruptOptions, interrupt };
|
|
55
72
|
//# sourceMappingURL=interrupt.d.ts.map
|
package/dist/interrupt.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interrupt.d.ts","names":[],"sources":["../src/interrupt.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"interrupt.d.ts","names":[],"sources":["../src/interrupt.ts"],"mappings":";;;;UA4BiB,gBAAA;;AAAjB;;;;;;EAQE,cAAA,GAAiB,cAAA,GAAiB,UAAA;AAAA;;AAmDpC;;;;;;;;;;;;;;;;;AAsEC;;;;;;;;;;;;;;;;;;AAUD;;;;;;;;;;;iBAhFgB,SAAA,sBAAA,CACd,KAAA,EAAO,CAAA,EACP,OAAA,GAAU,gBAAA,GACT,CAAA;AAAA,KAqEE,SAAA,gBACO,CAAA,SAAU,CAAA,6BAGb,CAAA,iCAEH,CAAA;AAAA,KAEM,uBAAA,MAA6B,CAAA,gBAAiB,SAAA,qBAItD,CAAA,GAEA,CAAA;EAAA,CAAa,GAAA,kBAAqB,SAAA;AAAA,kBAClB,CAAA,GAAI,uBAAA,CAAwB,CAAA,CAAE,CAAA,WAAY,CAAA;AAAA,KAGlD,wBAAA,sBAGR,CAAA,gBAAiB,SAAA,mBACjB,MAAA,gBACE,SAAA,CAAU,CAAA,IACV,CAAA,GAEF,CAAA;EAAA,CAAa,GAAA,kBAAqB,SAAA;AAAA,kBAClB,CAAA,GAAI,wBAAA,CAAyB,CAAA,CAAE,CAAA,iBAAkB,CAAA"}
|
package/dist/interrupt.js
CHANGED
|
@@ -2,6 +2,8 @@ import { CONFIG_KEY_CHECKPOINT_NS, CONFIG_KEY_SCRATCHPAD, CONFIG_KEY_SEND, RESUM
|
|
|
2
2
|
import { GraphInterrupt, GraphValueError } from "./errors.js";
|
|
3
3
|
import { XXH3 } from "./hash.js";
|
|
4
4
|
import { AsyncLocalStorageProviderSingleton } from "@langchain/core/singletons";
|
|
5
|
+
import { toJsonSchema } from "@langchain/core/utils/json_schema";
|
|
6
|
+
import { interopParse, isInteropZodSchema } from "@langchain/core/utils/types";
|
|
5
7
|
//#region src/interrupt.ts
|
|
6
8
|
/**
|
|
7
9
|
* Interrupts the execution of a graph node.
|
|
@@ -19,7 +21,10 @@ import { AsyncLocalStorageProviderSingleton } from "@langchain/core/singletons";
|
|
|
19
21
|
* or if you do, ensure that the `GraphInterrupt` error is thrown again within your `catch` block.
|
|
20
22
|
*
|
|
21
23
|
* @param value - The value to include in the interrupt. This will be available in task.interrupts[].value
|
|
22
|
-
* @
|
|
24
|
+
* @param options - Optional settings. `responseSchema` describes the expected resume value and is
|
|
25
|
+
* available in task.interrupts[].response_schema as JSON Schema; a Zod schema also validates the resume value.
|
|
26
|
+
* @returns The `resume` value provided when the graph is re-invoked with a Command, parsed by
|
|
27
|
+
* `responseSchema` when it is a Zod schema
|
|
23
28
|
*
|
|
24
29
|
* @example
|
|
25
30
|
* ```typescript
|
|
@@ -45,32 +50,39 @@ import { AsyncLocalStorageProviderSingleton } from "@langchain/core/singletons";
|
|
|
45
50
|
*
|
|
46
51
|
* @throws {Error} If called outside the context of a graph
|
|
47
52
|
* @throws {GraphInterrupt} When no resume value is available
|
|
53
|
+
* @throws {ZodError} When the resume value does not match a Zod `responseSchema`
|
|
48
54
|
*/
|
|
49
|
-
function interrupt(value) {
|
|
55
|
+
function interrupt(value, options) {
|
|
50
56
|
const config = AsyncLocalStorageProviderSingleton.getRunnableConfig();
|
|
51
57
|
if (!config) throw new Error("Called interrupt() outside the context of a graph.");
|
|
52
58
|
const conf = config.configurable;
|
|
53
59
|
if (!conf) throw new Error("No configurable found in config");
|
|
54
60
|
if (!conf["__pregel_checkpointer"]) throw new GraphValueError("No checkpointer set", { lc_error_code: "MISSING_CHECKPOINTER" });
|
|
61
|
+
const schema = options?.responseSchema;
|
|
62
|
+
const parseResume = (resume) => schema !== void 0 && isInteropZodSchema(schema) ? interopParse(schema, resume) : resume;
|
|
55
63
|
const scratchpad = conf[CONFIG_KEY_SCRATCHPAD];
|
|
56
64
|
scratchpad.interruptCounter += 1;
|
|
57
65
|
const idx = scratchpad.interruptCounter;
|
|
58
66
|
if (scratchpad.resume.length > 0 && idx < scratchpad.resume.length) {
|
|
59
|
-
|
|
60
|
-
|
|
67
|
+
const parsed = parseResume(scratchpad.resume[idx]);
|
|
68
|
+
conf[CONFIG_KEY_SEND]?.([[RESUME, scratchpad.resume.slice(0, idx + 1)]]);
|
|
69
|
+
return parsed;
|
|
61
70
|
}
|
|
62
71
|
if (scratchpad.nullResume !== void 0) {
|
|
63
72
|
if (scratchpad.resume.length !== idx) throw new Error(`Resume length mismatch: ${scratchpad.resume.length} !== ${idx}`);
|
|
64
73
|
const v = scratchpad.consumeNullResume();
|
|
74
|
+
const parsed = parseResume(v);
|
|
65
75
|
scratchpad.resume.push(v);
|
|
66
76
|
conf[CONFIG_KEY_SEND]?.([[RESUME, scratchpad.resume]]);
|
|
67
|
-
return
|
|
77
|
+
return parsed;
|
|
68
78
|
}
|
|
69
79
|
const ns = conf[CONFIG_KEY_CHECKPOINT_NS]?.split("|");
|
|
70
|
-
|
|
80
|
+
const pending = {
|
|
71
81
|
id: ns ? XXH3(ns.join("|")) : void 0,
|
|
72
82
|
value
|
|
73
|
-
}
|
|
83
|
+
};
|
|
84
|
+
if (schema !== void 0) pending.response_schema = toJsonSchema(schema);
|
|
85
|
+
throw new GraphInterrupt([pending]);
|
|
74
86
|
}
|
|
75
87
|
//#endregion
|
|
76
88
|
export { interrupt };
|
package/dist/interrupt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interrupt.js","names":[],"sources":["../src/interrupt.ts"],"sourcesContent":["import { AsyncLocalStorageProviderSingleton } from \"@langchain/core/singletons\";\nimport { RunnableConfig } from \"@langchain/core/runnables\";\nimport {\n BaseCheckpointSaver,\n type PendingWrite,\n} from \"@langchain/langgraph-checkpoint\";\nimport { GraphInterrupt, GraphValueError } from \"./errors.js\";\nimport {\n CONFIG_KEY_CHECKPOINT_NS,\n CONFIG_KEY_SCRATCHPAD,\n CONFIG_KEY_SEND,\n CONFIG_KEY_CHECKPOINTER,\n CHECKPOINT_NAMESPACE_SEPARATOR,\n RESUME,\n} from \"./constants.js\";\nimport { PregelScratchpad } from \"./pregel/types.js\";\nimport { XXH3 } from \"./hash.js\";\n\n/**\n * Interrupts the execution of a graph node.\n * This function can be used to pause execution of a node, and return the value of the `resume`\n * input when the graph is re-invoked using `Command`.\n * Multiple interrupts can be called within a single node, and each will be handled sequentially.\n *\n * When an interrupt is called:\n * 1. If there's a `resume` value available (from a previous `Command`), it returns that value.\n * 2. Otherwise, it throws a `GraphInterrupt` with the provided value\n * 3. The graph can be resumed by passing a `Command` with a `resume` value\n *\n * Because the `interrupt` function propagates by throwing a special `GraphInterrupt` error,\n * you should avoid using `try/catch` blocks around the `interrupt` function,\n * or if you do, ensure that the `GraphInterrupt` error is thrown again within your `catch` block.\n *\n * @param value - The value to include in the interrupt. This will be available in task.interrupts[].value\n * @returns The `resume` value provided when the graph is re-invoked with a Command\n *\n * @example\n * ```typescript\n * // Define a node that uses multiple interrupts\n * const nodeWithInterrupts = () => {\n * // First interrupt - will pause execution and include {value: 1} in task values\n * const answer1 = interrupt({ value: 1 });\n *\n * // Second interrupt - only called after first interrupt is resumed\n * const answer2 = interrupt({ value: 2 });\n *\n * // Use the resume values\n * return { myKey: answer1 + \" \" + answer2 };\n * };\n *\n * // Resume the graph after first interrupt\n * await graph.stream(new Command({ resume: \"answer 1\" }));\n *\n * // Resume the graph after second interrupt\n * await graph.stream(new Command({ resume: \"answer 2\" }));\n * // Final result: { myKey: \"answer 1 answer 2\" }\n * ```\n *\n * @throws {Error} If called outside the context of a graph\n * @throws {GraphInterrupt} When no resume value is available\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function interrupt<I = unknown, R = any>(value: I): R {\n const config: RunnableConfig | undefined =\n AsyncLocalStorageProviderSingleton.getRunnableConfig();\n if (!config) {\n throw new Error(\"Called interrupt() outside the context of a graph.\");\n }\n\n const conf = config.configurable;\n if (!conf) {\n throw new Error(\"No configurable found in config\");\n }\n\n const checkpointer: BaseCheckpointSaver = conf[CONFIG_KEY_CHECKPOINTER];\n if (!checkpointer) {\n throw new GraphValueError(\"No checkpointer set\", {\n lc_error_code: \"MISSING_CHECKPOINTER\",\n });\n }\n\n // Track interrupt index\n const scratchpad: PregelScratchpad = conf[CONFIG_KEY_SCRATCHPAD];\n scratchpad.interruptCounter += 1;\n const idx = scratchpad.interruptCounter;\n\n // Find previous resume values\n if (scratchpad.resume.length > 0 && idx < scratchpad.resume.length) {\n conf[CONFIG_KEY_SEND]?.([[RESUME, scratchpad.resume] as PendingWrite]);\n return
|
|
1
|
+
{"version":3,"file":"interrupt.js","names":[],"sources":["../src/interrupt.ts"],"sourcesContent":["import { AsyncLocalStorageProviderSingleton } from \"@langchain/core/singletons\";\nimport { RunnableConfig } from \"@langchain/core/runnables\";\nimport {\n type JSONSchema,\n toJsonSchema,\n} from \"@langchain/core/utils/json_schema\";\nimport {\n type InteropZodType,\n interopParse,\n isInteropZodSchema,\n} from \"@langchain/core/utils/types\";\nimport {\n BaseCheckpointSaver,\n type PendingWrite,\n} from \"@langchain/langgraph-checkpoint\";\nimport { GraphInterrupt, GraphValueError } from \"./errors.js\";\nimport {\n CONFIG_KEY_CHECKPOINT_NS,\n CONFIG_KEY_SCRATCHPAD,\n CONFIG_KEY_SEND,\n CONFIG_KEY_CHECKPOINTER,\n CHECKPOINT_NAMESPACE_SEPARATOR,\n RESUME,\n type Interrupt,\n} from \"./constants.js\";\nimport { PregelScratchpad } from \"./pregel/types.js\";\nimport { XXH3 } from \"./hash.js\";\n\nexport interface InterruptOptions {\n /**\n * Schema for the value expected when the graph is resumed, surfaced to\n * clients on `Interrupt.response_schema` (as JSON Schema) so they can render\n * a typed input form. A Zod schema also parses the resume value, and the\n * parsed value is what `interrupt` returns; a JSON Schema object is passed\n * through to clients without validating the resume value.\n */\n responseSchema?: InteropZodType | JSONSchema;\n}\n\n/**\n * Interrupts the execution of a graph node.\n * This function can be used to pause execution of a node, and return the value of the `resume`\n * input when the graph is re-invoked using `Command`.\n * Multiple interrupts can be called within a single node, and each will be handled sequentially.\n *\n * When an interrupt is called:\n * 1. If there's a `resume` value available (from a previous `Command`), it returns that value.\n * 2. Otherwise, it throws a `GraphInterrupt` with the provided value\n * 3. The graph can be resumed by passing a `Command` with a `resume` value\n *\n * Because the `interrupt` function propagates by throwing a special `GraphInterrupt` error,\n * you should avoid using `try/catch` blocks around the `interrupt` function,\n * or if you do, ensure that the `GraphInterrupt` error is thrown again within your `catch` block.\n *\n * @param value - The value to include in the interrupt. This will be available in task.interrupts[].value\n * @param options - Optional settings. `responseSchema` describes the expected resume value and is\n * available in task.interrupts[].response_schema as JSON Schema; a Zod schema also validates the resume value.\n * @returns The `resume` value provided when the graph is re-invoked with a Command, parsed by\n * `responseSchema` when it is a Zod schema\n *\n * @example\n * ```typescript\n * // Define a node that uses multiple interrupts\n * const nodeWithInterrupts = () => {\n * // First interrupt - will pause execution and include {value: 1} in task values\n * const answer1 = interrupt({ value: 1 });\n *\n * // Second interrupt - only called after first interrupt is resumed\n * const answer2 = interrupt({ value: 2 });\n *\n * // Use the resume values\n * return { myKey: answer1 + \" \" + answer2 };\n * };\n *\n * // Resume the graph after first interrupt\n * await graph.stream(new Command({ resume: \"answer 1\" }));\n *\n * // Resume the graph after second interrupt\n * await graph.stream(new Command({ resume: \"answer 2\" }));\n * // Final result: { myKey: \"answer 1 answer 2\" }\n * ```\n *\n * @throws {Error} If called outside the context of a graph\n * @throws {GraphInterrupt} When no resume value is available\n * @throws {ZodError} When the resume value does not match a Zod `responseSchema`\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function interrupt<I = unknown, R = any>(\n value: I,\n options?: InterruptOptions\n): R {\n const config: RunnableConfig | undefined =\n AsyncLocalStorageProviderSingleton.getRunnableConfig();\n if (!config) {\n throw new Error(\"Called interrupt() outside the context of a graph.\");\n }\n\n const conf = config.configurable;\n if (!conf) {\n throw new Error(\"No configurable found in config\");\n }\n\n const checkpointer: BaseCheckpointSaver = conf[CONFIG_KEY_CHECKPOINTER];\n if (!checkpointer) {\n throw new GraphValueError(\"No checkpointer set\", {\n lc_error_code: \"MISSING_CHECKPOINTER\",\n });\n }\n\n const schema = options?.responseSchema;\n const parseResume = (resume: unknown): R =>\n (schema !== undefined && isInteropZodSchema(schema)\n ? interopParse(schema, resume)\n : resume) as R;\n\n // Track interrupt index\n const scratchpad: PregelScratchpad = conf[CONFIG_KEY_SCRATCHPAD];\n scratchpad.interruptCounter += 1;\n const idx = scratchpad.interruptCounter;\n\n // Find previous resume values\n if (scratchpad.resume.length > 0 && idx < scratchpad.resume.length) {\n const parsed = parseResume(scratchpad.resume[idx]);\n // Persist only through the interrupt being consumed. Values past `idx` belong\n // to later interrupts and may be unvalidated mapped resumes; a failing one must\n // not become durable, or its retry can never replace it.\n conf[CONFIG_KEY_SEND]?.([\n [RESUME, scratchpad.resume.slice(0, idx + 1)] as PendingWrite,\n ]);\n return parsed;\n }\n\n // Find current resume value\n if (scratchpad.nullResume !== undefined) {\n if (scratchpad.resume.length !== idx) {\n throw new Error(\n `Resume length mismatch: ${scratchpad.resume.length} !== ${idx}`\n );\n }\n const v = scratchpad.consumeNullResume();\n const parsed = parseResume(v);\n scratchpad.resume.push(v);\n conf[CONFIG_KEY_SEND]?.([[RESUME, scratchpad.resume] as PendingWrite]);\n return parsed;\n }\n\n // No resume value found\n const ns: string[] | undefined = conf[CONFIG_KEY_CHECKPOINT_NS]?.split(\n CHECKPOINT_NAMESPACE_SEPARATOR\n );\n\n const id = ns ? XXH3(ns.join(CHECKPOINT_NAMESPACE_SEPARATOR)) : undefined;\n const pending: Interrupt<I> = { id, value };\n if (schema !== undefined) {\n pending.response_schema = toJsonSchema(schema);\n }\n throw new GraphInterrupt([pending]);\n}\n\ntype FilterAny<X> =\n (<T>() => T extends X ? 1 : 2) extends <\n T,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n >() => T extends any ? 1 : 2\n ? never\n : X;\n\nexport type InferInterruptInputType<T> = T extends typeof interrupt<\n infer I,\n unknown\n>\n ? I\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends { [key: string]: typeof interrupt<any, any> }\n ? { [K in keyof T]: InferInterruptInputType<T[K]> }[keyof T]\n : unknown;\n\nexport type InferInterruptResumeType<\n T,\n TInner = false,\n> = T extends typeof interrupt<never, infer R>\n ? TInner extends true\n ? FilterAny<R>\n : R\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n T extends { [key: string]: typeof interrupt<any, any> }\n ? { [K in keyof T]: InferInterruptResumeType<T[K], true> }[keyof T]\n : unknown;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuFA,SAAgB,UACd,OACA,SACG;CACH,MAAM,SACJ,mCAAmC,mBAAmB;AACxD,KAAI,CAAC,OACH,OAAM,IAAI,MAAM,qDAAqD;CAGvE,MAAM,OAAO,OAAO;AACpB,KAAI,CAAC,KACH,OAAM,IAAI,MAAM,kCAAkC;AAIpD,KAAI,CADsC,KAAA,yBAExC,OAAM,IAAI,gBAAgB,uBAAuB,EAC/C,eAAe,wBAChB,CAAC;CAGJ,MAAM,SAAS,SAAS;CACxB,MAAM,eAAe,WAClB,WAAW,KAAA,KAAa,mBAAmB,OAAO,GAC/C,aAAa,QAAQ,OAAO,GAC5B;CAGN,MAAM,aAA+B,KAAK;AAC1C,YAAW,oBAAoB;CAC/B,MAAM,MAAM,WAAW;AAGvB,KAAI,WAAW,OAAO,SAAS,KAAK,MAAM,WAAW,OAAO,QAAQ;EAClE,MAAM,SAAS,YAAY,WAAW,OAAO,KAAK;AAIlD,OAAK,mBAAmB,CACtB,CAAC,QAAQ,WAAW,OAAO,MAAM,GAAG,MAAM,EAAE,CAAC,CAC9C,CAAC;AACF,SAAO;;AAIT,KAAI,WAAW,eAAe,KAAA,GAAW;AACvC,MAAI,WAAW,OAAO,WAAW,IAC/B,OAAM,IAAI,MACR,2BAA2B,WAAW,OAAO,OAAO,OAAO,MAC5D;EAEH,MAAM,IAAI,WAAW,mBAAmB;EACxC,MAAM,SAAS,YAAY,EAAE;AAC7B,aAAW,OAAO,KAAK,EAAE;AACzB,OAAK,mBAAmB,CAAC,CAAC,QAAQ,WAAW,OAAO,CAAiB,CAAC;AACtE,SAAO;;CAIT,MAAM,KAA2B,KAAK,2BAA2B,MAAA,IAEhE;CAGD,MAAM,UAAwB;EAAE,IADrB,KAAK,KAAK,GAAG,KAAA,IAAoC,CAAC,GAAG,KAAA;EAC5B;EAAO;AAC3C,KAAI,WAAW,KAAA,EACb,SAAQ,kBAAkB,aAAa,OAAO;AAEhD,OAAM,IAAI,eAAe,CAAC,QAAQ,CAAC"}
|
package/dist/pregel/algo.cjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
const require_constants = require("../constants.cjs");
|
|
2
2
|
const require_errors = require("../errors.cjs");
|
|
3
3
|
const require_base = require("../channels/base.cjs");
|
|
4
|
-
const require_index = require("./utils/index.cjs");
|
|
5
4
|
const require_hash = require("../hash.cjs");
|
|
6
5
|
const require_io = require("./io.cjs");
|
|
7
6
|
const require_types = require("./types.cjs");
|
|
7
|
+
const require_index = require("./utils/index.cjs");
|
|
8
8
|
const require_call = require("./call.cjs");
|
|
9
9
|
let _langchain_langgraph_checkpoint = require("@langchain/langgraph-checkpoint");
|
|
10
10
|
let _langchain_core_runnables = require("@langchain/core/runnables");
|
package/dist/pregel/algo.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { CACHE_NS_WRITES, CONFIG_KEY_CHECKPOINTER, CONFIG_KEY_CHECKPOINT_MAP, CONFIG_KEY_NODE_ERROR, CONFIG_KEY_PREVIOUS_STATE, CONFIG_KEY_READ, CONFIG_KEY_RESUME_MAP, CONFIG_KEY_SCRATCHPAD, CONFIG_KEY_SEND, CONFIG_KEY_TASK_ID, ERROR, ERROR_SOURCE_NODE, INTERRUPT, NO_WRITES, PREVIOUS, PULL, PUSH, RESERVED, RESUME, RETURN, Send, TAG_HIDDEN, TASKS, _isSend, _isSendInterface } from "../constants.js";
|
|
2
2
|
import { EmptyChannelError, InvalidUpdateError, NodeError } from "../errors.js";
|
|
3
3
|
import { createCheckpoint, emptyChannels, getOnlyChannels, isDeltaChannel } from "../channels/base.js";
|
|
4
|
-
import { getNullChannelVersion } from "./utils/index.js";
|
|
5
4
|
import { XXH3 } from "../hash.js";
|
|
6
5
|
import { readChannel, readChannels } from "./io.js";
|
|
7
6
|
import { isCall } from "./types.js";
|
|
7
|
+
import { getNullChannelVersion } from "./utils/index.js";
|
|
8
8
|
import { getRunnableForFunc } from "./call.js";
|
|
9
9
|
import { copyCheckpoint, maxChannelVersion, uuid5 } from "@langchain/langgraph-checkpoint";
|
|
10
10
|
import { mergeConfigs, patchConfig } from "@langchain/core/runnables";
|
package/dist/pregel/index.cjs
CHANGED
|
@@ -5,10 +5,10 @@ const require_base = require("../channels/base.cjs");
|
|
|
5
5
|
const require_config = require("./utils/config.cjs");
|
|
6
6
|
const require_utils = require("../utils.cjs");
|
|
7
7
|
const require_write = require("./write.cjs");
|
|
8
|
-
const require_index = require("./utils/index.cjs");
|
|
9
8
|
const require_read = require("./read.cjs");
|
|
10
9
|
const require_runtime = require("./runtime.cjs");
|
|
11
10
|
const require_io = require("./io.cjs");
|
|
11
|
+
const require_index = require("./utils/index.cjs");
|
|
12
12
|
const require_algo = require("./algo.cjs");
|
|
13
13
|
const require_subgraph = require("./utils/subgraph.cjs");
|
|
14
14
|
const require_debug = require("./debug.cjs");
|
package/dist/pregel/index.js
CHANGED
|
@@ -4,10 +4,10 @@ import { channelsFromCheckpoint, createCheckpoint, getOnlyChannels } from "../ch
|
|
|
4
4
|
import { ensureLangGraphConfig, getConfig, recastCheckpointNamespace } from "./utils/config.js";
|
|
5
5
|
import { gatherIterator, patchConfigurable } from "../utils.js";
|
|
6
6
|
import { ChannelWrite, PASSTHROUGH } from "./write.js";
|
|
7
|
-
import { _coerceToDict, combineAbortSignals, getNewChannelVersions, patchCheckpointMap } from "./utils/index.js";
|
|
8
7
|
import { PregelNode } from "./read.js";
|
|
9
8
|
import { RunControl } from "./runtime.js";
|
|
10
9
|
import { mapInput, readChannels } from "./io.js";
|
|
10
|
+
import { _coerceToDict, combineAbortSignals, getNewChannelVersions, patchCheckpointMap } from "./utils/index.js";
|
|
11
11
|
import { _applyWrites, _localRead, _prepareNextTasks } from "./algo.js";
|
|
12
12
|
import { findSubgraphPregel } from "./utils/subgraph.js";
|
|
13
13
|
import { printStepCheckpoint, printStepTasks, printStepWrites, tasksWithWrites } from "./debug.js";
|
package/dist/pregel/loop.cjs
CHANGED
|
@@ -2,9 +2,9 @@ const require_constants = require("../constants.cjs");
|
|
|
2
2
|
const require_errors = require("../errors.cjs");
|
|
3
3
|
const require_base = require("../channels/base.cjs");
|
|
4
4
|
const require_utils = require("../utils.cjs");
|
|
5
|
-
const require_index = require("./utils/index.cjs");
|
|
6
5
|
const require_hash = require("../hash.cjs");
|
|
7
6
|
const require_io = require("./io.cjs");
|
|
7
|
+
const require_index = require("./utils/index.cjs");
|
|
8
8
|
const require_algo = require("./algo.cjs");
|
|
9
9
|
const require_debug = require("./debug.cjs");
|
|
10
10
|
const require_replay = require("./replay.cjs");
|
package/dist/pregel/loop.js
CHANGED
|
@@ -2,9 +2,9 @@ import { CONFIG_KEY_CHECKPOINT_ID, CONFIG_KEY_CHECKPOINT_MAP, CONFIG_KEY_CHECKPO
|
|
|
2
2
|
import { EmptyInputError, GraphInterrupt, isGraphInterrupt } from "../errors.js";
|
|
3
3
|
import { channelsFromCheckpoint, createCheckpoint, deltaChannelsToSnapshot, exitDeltaTaskId, isDeltaChannel } from "../channels/base.js";
|
|
4
4
|
import { gatherIterator, gatherIteratorSync, prefixGenerator } from "../utils.js";
|
|
5
|
-
import { getNewChannelVersions, patchConfigurable } from "./utils/index.js";
|
|
6
5
|
import { isXXH3 } from "../hash.js";
|
|
7
6
|
import { mapCommand, mapInput, mapOutputUpdates, mapOutputValues, readChannels } from "./io.js";
|
|
7
|
+
import { getNewChannelVersions, patchConfigurable } from "./utils/index.js";
|
|
8
8
|
import { _applyWrites, _prepareNextTasks, _prepareNodeErrorHandlerTask, _prepareSingleTask, increment, sanitizeUntrackedValuesInSend, shouldInterrupt } from "./algo.js";
|
|
9
9
|
import { mapDebugCheckpoint, mapDebugTaskResults, mapDebugTasks, printStepTasks } from "./debug.js";
|
|
10
10
|
import { ReplayState } from "./replay.js";
|
package/dist/pregel/read.cjs
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
const require_constants = require("../constants.cjs");
|
|
2
2
|
const require_utils = require("../utils.cjs");
|
|
3
3
|
const require_write = require("./write.cjs");
|
|
4
|
-
const require_runnable = require("./runnable.cjs");
|
|
5
4
|
let _langchain_core_runnables = require("@langchain/core/runnables");
|
|
6
5
|
//#region src/pregel/read.ts
|
|
7
6
|
var ChannelRead = class ChannelRead extends require_utils.RunnableCallable {
|
|
@@ -40,13 +39,12 @@ var PregelNode = class PregelNode extends _langchain_core_runnables.RunnableBind
|
|
|
40
39
|
retryPolicy;
|
|
41
40
|
cachePolicy;
|
|
42
41
|
timeout;
|
|
43
|
-
tracePolicy;
|
|
44
42
|
subgraphs;
|
|
45
43
|
ends;
|
|
46
44
|
isErrorHandler;
|
|
47
45
|
errorHandlerNode;
|
|
48
46
|
constructor(fields) {
|
|
49
|
-
const { channels, triggers, mapper, writers, bound, kwargs, metadata, retryPolicy, cachePolicy, timeout,
|
|
47
|
+
const { channels, triggers, mapper, writers, bound, kwargs, metadata, retryPolicy, cachePolicy, timeout, tags, subgraphs, ends, isErrorHandler, errorHandlerNode } = fields;
|
|
50
48
|
const mergedTags = [...fields.config?.tags ? fields.config.tags : [], ...tags ?? []];
|
|
51
49
|
super({
|
|
52
50
|
...fields,
|
|
@@ -67,7 +65,6 @@ var PregelNode = class PregelNode extends _langchain_core_runnables.RunnableBind
|
|
|
67
65
|
this.retryPolicy = retryPolicy;
|
|
68
66
|
this.cachePolicy = cachePolicy;
|
|
69
67
|
this.timeout = timeout;
|
|
70
|
-
this.tracePolicy = tracePolicy;
|
|
71
68
|
this.subgraphs = subgraphs;
|
|
72
69
|
this.ends = ends;
|
|
73
70
|
this.isErrorHandler = isErrorHandler;
|
|
@@ -85,19 +82,15 @@ var PregelNode = class PregelNode extends _langchain_core_runnables.RunnableBind
|
|
|
85
82
|
}
|
|
86
83
|
getNode() {
|
|
87
84
|
const writers = this.getWriters();
|
|
88
|
-
const sequence = (fields) => this.tracePolicy ? new require_runnable.RunnableSeq({
|
|
89
|
-
...fields,
|
|
90
|
-
tracePolicy: this.tracePolicy
|
|
91
|
-
}) : new _langchain_core_runnables.RunnableSequence(fields);
|
|
92
85
|
if (this.bound === defaultRunnableBound && writers.length === 0) return;
|
|
93
86
|
else if (this.bound === defaultRunnableBound && writers.length === 1) return writers[0];
|
|
94
|
-
else if (this.bound === defaultRunnableBound) return
|
|
87
|
+
else if (this.bound === defaultRunnableBound) return new _langchain_core_runnables.RunnableSequence({
|
|
95
88
|
first: writers[0],
|
|
96
89
|
middle: writers.slice(1, writers.length - 1),
|
|
97
90
|
last: writers[writers.length - 1],
|
|
98
91
|
omitSequenceTags: true
|
|
99
92
|
});
|
|
100
|
-
else if (writers.length > 0) return
|
|
93
|
+
else if (writers.length > 0) return new _langchain_core_runnables.RunnableSequence({
|
|
101
94
|
first: this.bound,
|
|
102
95
|
middle: writers.slice(0, writers.length - 1),
|
|
103
96
|
last: writers[writers.length - 1],
|
|
@@ -121,8 +114,7 @@ var PregelNode = class PregelNode extends _langchain_core_runnables.RunnableBind
|
|
|
121
114
|
config: this.config,
|
|
122
115
|
retryPolicy: this.retryPolicy,
|
|
123
116
|
cachePolicy: this.cachePolicy,
|
|
124
|
-
timeout: this.timeout
|
|
125
|
-
tracePolicy: this.tracePolicy
|
|
117
|
+
timeout: this.timeout
|
|
126
118
|
});
|
|
127
119
|
}
|
|
128
120
|
pipe(coerceable) {
|
|
@@ -136,8 +128,7 @@ var PregelNode = class PregelNode extends _langchain_core_runnables.RunnableBind
|
|
|
136
128
|
kwargs: this.kwargs,
|
|
137
129
|
retryPolicy: this.retryPolicy,
|
|
138
130
|
cachePolicy: this.cachePolicy,
|
|
139
|
-
timeout: this.timeout
|
|
140
|
-
tracePolicy: this.tracePolicy
|
|
131
|
+
timeout: this.timeout
|
|
141
132
|
});
|
|
142
133
|
else if (this.bound === defaultRunnableBound) return new PregelNode({
|
|
143
134
|
channels: this.channels,
|
|
@@ -149,8 +140,7 @@ var PregelNode = class PregelNode extends _langchain_core_runnables.RunnableBind
|
|
|
149
140
|
kwargs: this.kwargs,
|
|
150
141
|
retryPolicy: this.retryPolicy,
|
|
151
142
|
cachePolicy: this.cachePolicy,
|
|
152
|
-
timeout: this.timeout
|
|
153
|
-
tracePolicy: this.tracePolicy
|
|
143
|
+
timeout: this.timeout
|
|
154
144
|
});
|
|
155
145
|
else return new PregelNode({
|
|
156
146
|
channels: this.channels,
|
|
@@ -162,8 +152,7 @@ var PregelNode = class PregelNode extends _langchain_core_runnables.RunnableBind
|
|
|
162
152
|
kwargs: this.kwargs,
|
|
163
153
|
retryPolicy: this.retryPolicy,
|
|
164
154
|
cachePolicy: this.cachePolicy,
|
|
165
|
-
timeout: this.timeout
|
|
166
|
-
tracePolicy: this.tracePolicy
|
|
155
|
+
timeout: this.timeout
|
|
167
156
|
});
|
|
168
157
|
}
|
|
169
158
|
};
|
package/dist/pregel/read.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.cjs","names":["RunnableCallable","CONFIG_KEY_READ","RunnablePassthrough","RunnableBinding","ChannelWrite","RunnableSeq","RunnableSequence"],"sources":["../../src/pregel/read.ts"],"sourcesContent":["import {\n Runnable,\n RunnableBinding,\n RunnableBindingArgs,\n RunnableConfig,\n RunnablePassthrough,\n RunnableSequence,\n _coerceToRunnable,\n type RunnableLike,\n} from \"@langchain/core/runnables\";\nimport { CONFIG_KEY_READ } from \"../constants.js\";\nimport { ChannelWrite } from \"./write.js\";\nimport { RunnableCallable } from \"../utils.js\";\nimport type {\n CachePolicy,\n RetryPolicy,\n TimeoutPolicy,\n TracePolicy,\n} from \"./utils/index.js\";\nimport { RunnableSeq } from \"./runnable.js\";\n\nexport class ChannelRead<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunInput = any,\n> extends RunnableCallable {\n lc_graph_name = \"ChannelRead\";\n\n channel: string | Array<string>;\n\n fresh: boolean = false;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n mapper?: (args: any) => any;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(\n channel: string | Array<string>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n mapper?: (args: any) => any,\n fresh: boolean = false\n ) {\n super({\n trace: false,\n func: (_: RunInput, config: RunnableConfig) =>\n ChannelRead.doRead(config, this.channel, this.fresh, this.mapper),\n });\n this.fresh = fresh;\n this.mapper = mapper;\n this.channel = channel;\n this.name = Array.isArray(channel)\n ? `ChannelRead<${channel.join(\",\")}>`\n : `ChannelRead<${channel}>`;\n }\n\n static doRead<T = unknown>(\n config: RunnableConfig,\n channel: string | Array<string>,\n fresh: boolean,\n mapper?: (args: unknown) => unknown\n ): T {\n const read: (arg: string | string[], fresh: boolean) => unknown =\n config.configurable?.[CONFIG_KEY_READ];\n if (!read) {\n throw new Error(\n \"Runnable is not configured with a read function. Make sure to call in the context of a Pregel process\"\n );\n }\n if (mapper) {\n return mapper(read(channel, fresh)) as T;\n } else {\n return read(channel, fresh) as T;\n }\n }\n}\n\nconst defaultRunnableBound =\n /* #__PURE__ */ new RunnablePassthrough<PregelNodeInputType>();\n\ninterface PregelNodeArgs<RunInput, RunOutput> extends Partial<\n RunnableBindingArgs<RunInput, RunOutput>\n> {\n channels: Record<string, string> | string[];\n triggers: Array<string>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n mapper?: (args: any) => any;\n writers?: Runnable<RunOutput, unknown>[];\n tags?: string[];\n bound?: Runnable<RunInput, RunOutput>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n kwargs?: Record<string, any>;\n config?: RunnableConfig;\n metadata?: Record<string, unknown>;\n retryPolicy?: RetryPolicy;\n cachePolicy?: CachePolicy;\n timeout?: TimeoutPolicy;\n tracePolicy?: TracePolicy;\n subgraphs?: Runnable[];\n ends?: string[];\n /** Whether this node is an auto-generated node-level error handler. */\n isErrorHandler?: boolean;\n /** Name of the error handler node to run if this node's execution fails. */\n errorHandlerNode?: string;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type PregelNodeInputType = any;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type PregelNodeOutputType = any;\n\nexport class PregelNode<\n RunInput = PregelNodeInputType,\n RunOutput = PregelNodeOutputType,\n> extends RunnableBinding<RunInput, RunOutput, RunnableConfig> {\n lc_graph_name = \"PregelNode\";\n\n channels: Record<string, string> | string[];\n\n triggers: string[] = [];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n mapper?: (args: any) => any;\n\n writers: Runnable[] = [];\n\n bound: Runnable<RunInput, RunOutput> = defaultRunnableBound;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n kwargs: Record<string, any> = {};\n\n metadata: Record<string, unknown> = {};\n\n tags: string[] = [];\n\n retryPolicy?: RetryPolicy;\n\n cachePolicy?: CachePolicy;\n\n timeout?: TimeoutPolicy;\n\n tracePolicy?: TracePolicy;\n\n subgraphs?: Runnable[];\n\n ends?: string[];\n\n isErrorHandler?: boolean;\n\n errorHandlerNode?: string;\n\n constructor(fields: PregelNodeArgs<RunInput, RunOutput>) {\n const {\n channels,\n triggers,\n mapper,\n writers,\n bound,\n kwargs,\n metadata,\n retryPolicy,\n cachePolicy,\n timeout,\n tracePolicy,\n tags,\n subgraphs,\n ends,\n isErrorHandler,\n errorHandlerNode,\n } = fields;\n const mergedTags = [\n ...(fields.config?.tags ? fields.config.tags : []),\n ...(tags ?? []),\n ];\n\n super({\n ...fields,\n bound:\n fields.bound ??\n (defaultRunnableBound as unknown as Runnable<RunInput, RunOutput>),\n config: {\n ...(fields.config ? fields.config : {}),\n tags: mergedTags,\n },\n });\n\n this.channels = channels;\n this.triggers = triggers;\n this.mapper = mapper;\n this.writers = writers ?? this.writers;\n this.bound = bound ?? this.bound;\n this.kwargs = kwargs ?? this.kwargs;\n this.metadata = metadata ?? this.metadata;\n this.tags = mergedTags;\n this.retryPolicy = retryPolicy;\n this.cachePolicy = cachePolicy;\n this.timeout = timeout;\n this.tracePolicy = tracePolicy;\n this.subgraphs = subgraphs;\n this.ends = ends;\n this.isErrorHandler = isErrorHandler;\n this.errorHandlerNode = errorHandlerNode;\n }\n\n getWriters(): Array<Runnable> {\n const newWriters = [...this.writers];\n while (\n newWriters.length > 1 &&\n // eslint-disable-next-line no-instanceof/no-instanceof\n newWriters[newWriters.length - 1] instanceof ChannelWrite &&\n // eslint-disable-next-line no-instanceof/no-instanceof\n newWriters[newWriters.length - 2] instanceof ChannelWrite\n ) {\n // we can combine writes if they are consecutive\n // careful to not modify the original writers list or ChannelWrite\n const endWriters = newWriters.slice(-2) as ChannelWrite[];\n const combinedWrites = endWriters[0].writes.concat(endWriters[1].writes);\n newWriters[newWriters.length - 2] = new ChannelWrite(\n combinedWrites,\n endWriters[0].config?.tags\n );\n newWriters.pop();\n }\n return newWriters;\n }\n\n getNode(): Runnable<RunInput, RunOutput> | undefined {\n const writers = this.getWriters();\n const sequence = (\n fields: ConstructorParameters<\n typeof RunnableSequence<RunInput, RunOutput>\n >[0]\n ) =>\n this.tracePolicy\n ? new RunnableSeq({ ...fields, tracePolicy: this.tracePolicy })\n : new RunnableSequence(fields);\n if (this.bound === defaultRunnableBound && writers.length === 0) {\n return undefined;\n } else if (this.bound === defaultRunnableBound && writers.length === 1) {\n return writers[0];\n } else if (this.bound === defaultRunnableBound) {\n return sequence({\n first: writers[0],\n middle: writers.slice(1, writers.length - 1),\n last: writers[writers.length - 1],\n omitSequenceTags: true,\n });\n } else if (writers.length > 0) {\n return sequence({\n first: this.bound,\n middle: writers.slice(0, writers.length - 1),\n last: writers[writers.length - 1],\n omitSequenceTags: true,\n });\n } else {\n return this.bound;\n }\n }\n\n join(channels: Array<string>): PregelNode<RunInput, RunOutput> {\n if (!Array.isArray(channels)) {\n throw new Error(\"channels must be a list\");\n }\n if (typeof this.channels !== \"object\") {\n throw new Error(\"all channels must be named when using .join()\");\n }\n\n return new PregelNode<RunInput, RunOutput>({\n channels: {\n ...this.channels,\n ...Object.fromEntries(channels.map((chan) => [chan, chan])),\n },\n triggers: this.triggers,\n mapper: this.mapper,\n writers: this.writers,\n bound: this.bound,\n kwargs: this.kwargs,\n config: this.config,\n retryPolicy: this.retryPolicy,\n cachePolicy: this.cachePolicy,\n timeout: this.timeout,\n tracePolicy: this.tracePolicy,\n });\n }\n\n pipe<NewRunOutput>(\n coerceable: RunnableLike\n ): PregelNode<RunInput, Exclude<NewRunOutput, Error>> {\n if (ChannelWrite.isWriter(coerceable)) {\n return new PregelNode<RunInput, Exclude<NewRunOutput, Error>>({\n channels: this.channels,\n triggers: this.triggers,\n mapper: this.mapper,\n writers: [...this.writers, coerceable],\n bound: this.bound as unknown as PregelNode<\n RunInput,\n Exclude<NewRunOutput, Error>\n >,\n config: this.config,\n kwargs: this.kwargs,\n retryPolicy: this.retryPolicy,\n cachePolicy: this.cachePolicy,\n timeout: this.timeout,\n tracePolicy: this.tracePolicy,\n });\n } else if (this.bound === defaultRunnableBound) {\n return new PregelNode<RunInput, Exclude<NewRunOutput, Error>>({\n channels: this.channels,\n triggers: this.triggers,\n mapper: this.mapper,\n writers: this.writers,\n bound: _coerceToRunnable<RunInput, NewRunOutput>(coerceable),\n config: this.config,\n kwargs: this.kwargs,\n retryPolicy: this.retryPolicy,\n cachePolicy: this.cachePolicy,\n timeout: this.timeout,\n tracePolicy: this.tracePolicy,\n });\n } else {\n return new PregelNode<RunInput, Exclude<NewRunOutput, Error>>({\n channels: this.channels,\n triggers: this.triggers,\n mapper: this.mapper,\n writers: this.writers,\n bound: this.bound.pipe(coerceable),\n config: this.config,\n kwargs: this.kwargs,\n retryPolicy: this.retryPolicy,\n cachePolicy: this.cachePolicy,\n timeout: this.timeout,\n tracePolicy: this.tracePolicy,\n });\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"read.cjs","names":["RunnableCallable","CONFIG_KEY_READ","RunnablePassthrough","RunnableBinding","ChannelWrite","RunnableSequence"],"sources":["../../src/pregel/read.ts"],"sourcesContent":["import {\n Runnable,\n RunnableBinding,\n RunnableBindingArgs,\n RunnableConfig,\n RunnablePassthrough,\n RunnableSequence,\n _coerceToRunnable,\n type RunnableLike,\n} from \"@langchain/core/runnables\";\nimport { CONFIG_KEY_READ } from \"../constants.js\";\nimport { ChannelWrite } from \"./write.js\";\nimport { RunnableCallable } from \"../utils.js\";\nimport type { CachePolicy, RetryPolicy, TimeoutPolicy } from \"./utils/index.js\";\n\nexport class ChannelRead<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RunInput = any,\n> extends RunnableCallable {\n lc_graph_name = \"ChannelRead\";\n\n channel: string | Array<string>;\n\n fresh: boolean = false;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n mapper?: (args: any) => any;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(\n channel: string | Array<string>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n mapper?: (args: any) => any,\n fresh: boolean = false\n ) {\n super({\n trace: false,\n func: (_: RunInput, config: RunnableConfig) =>\n ChannelRead.doRead(config, this.channel, this.fresh, this.mapper),\n });\n this.fresh = fresh;\n this.mapper = mapper;\n this.channel = channel;\n this.name = Array.isArray(channel)\n ? `ChannelRead<${channel.join(\",\")}>`\n : `ChannelRead<${channel}>`;\n }\n\n static doRead<T = unknown>(\n config: RunnableConfig,\n channel: string | Array<string>,\n fresh: boolean,\n mapper?: (args: unknown) => unknown\n ): T {\n const read: (arg: string | string[], fresh: boolean) => unknown =\n config.configurable?.[CONFIG_KEY_READ];\n if (!read) {\n throw new Error(\n \"Runnable is not configured with a read function. Make sure to call in the context of a Pregel process\"\n );\n }\n if (mapper) {\n return mapper(read(channel, fresh)) as T;\n } else {\n return read(channel, fresh) as T;\n }\n }\n}\n\nconst defaultRunnableBound =\n /* #__PURE__ */ new RunnablePassthrough<PregelNodeInputType>();\n\ninterface PregelNodeArgs<RunInput, RunOutput> extends Partial<\n RunnableBindingArgs<RunInput, RunOutput>\n> {\n channels: Record<string, string> | string[];\n triggers: Array<string>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n mapper?: (args: any) => any;\n writers?: Runnable<RunOutput, unknown>[];\n tags?: string[];\n bound?: Runnable<RunInput, RunOutput>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n kwargs?: Record<string, any>;\n config?: RunnableConfig;\n metadata?: Record<string, unknown>;\n retryPolicy?: RetryPolicy;\n cachePolicy?: CachePolicy;\n timeout?: TimeoutPolicy;\n subgraphs?: Runnable[];\n ends?: string[];\n /** Whether this node is an auto-generated node-level error handler. */\n isErrorHandler?: boolean;\n /** Name of the error handler node to run if this node's execution fails. */\n errorHandlerNode?: string;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type PregelNodeInputType = any;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type PregelNodeOutputType = any;\n\nexport class PregelNode<\n RunInput = PregelNodeInputType,\n RunOutput = PregelNodeOutputType,\n> extends RunnableBinding<RunInput, RunOutput, RunnableConfig> {\n lc_graph_name = \"PregelNode\";\n\n channels: Record<string, string> | string[];\n\n triggers: string[] = [];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n mapper?: (args: any) => any;\n\n writers: Runnable[] = [];\n\n bound: Runnable<RunInput, RunOutput> = defaultRunnableBound;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n kwargs: Record<string, any> = {};\n\n metadata: Record<string, unknown> = {};\n\n tags: string[] = [];\n\n retryPolicy?: RetryPolicy;\n\n cachePolicy?: CachePolicy;\n\n timeout?: TimeoutPolicy;\n\n subgraphs?: Runnable[];\n\n ends?: string[];\n\n isErrorHandler?: boolean;\n\n errorHandlerNode?: string;\n\n constructor(fields: PregelNodeArgs<RunInput, RunOutput>) {\n const {\n channels,\n triggers,\n mapper,\n writers,\n bound,\n kwargs,\n metadata,\n retryPolicy,\n cachePolicy,\n timeout,\n tags,\n subgraphs,\n ends,\n isErrorHandler,\n errorHandlerNode,\n } = fields;\n const mergedTags = [\n ...(fields.config?.tags ? fields.config.tags : []),\n ...(tags ?? []),\n ];\n\n super({\n ...fields,\n bound:\n fields.bound ??\n (defaultRunnableBound as unknown as Runnable<RunInput, RunOutput>),\n config: {\n ...(fields.config ? fields.config : {}),\n tags: mergedTags,\n },\n });\n\n this.channels = channels;\n this.triggers = triggers;\n this.mapper = mapper;\n this.writers = writers ?? this.writers;\n this.bound = bound ?? this.bound;\n this.kwargs = kwargs ?? this.kwargs;\n this.metadata = metadata ?? this.metadata;\n this.tags = mergedTags;\n this.retryPolicy = retryPolicy;\n this.cachePolicy = cachePolicy;\n this.timeout = timeout;\n this.subgraphs = subgraphs;\n this.ends = ends;\n this.isErrorHandler = isErrorHandler;\n this.errorHandlerNode = errorHandlerNode;\n }\n\n getWriters(): Array<Runnable> {\n const newWriters = [...this.writers];\n while (\n newWriters.length > 1 &&\n // eslint-disable-next-line no-instanceof/no-instanceof\n newWriters[newWriters.length - 1] instanceof ChannelWrite &&\n // eslint-disable-next-line no-instanceof/no-instanceof\n newWriters[newWriters.length - 2] instanceof ChannelWrite\n ) {\n // we can combine writes if they are consecutive\n // careful to not modify the original writers list or ChannelWrite\n const endWriters = newWriters.slice(-2) as ChannelWrite[];\n const combinedWrites = endWriters[0].writes.concat(endWriters[1].writes);\n newWriters[newWriters.length - 2] = new ChannelWrite(\n combinedWrites,\n endWriters[0].config?.tags\n );\n newWriters.pop();\n }\n return newWriters;\n }\n\n getNode(): Runnable<RunInput, RunOutput> | undefined {\n const writers = this.getWriters();\n if (this.bound === defaultRunnableBound && writers.length === 0) {\n return undefined;\n } else if (this.bound === defaultRunnableBound && writers.length === 1) {\n return writers[0];\n } else if (this.bound === defaultRunnableBound) {\n return new RunnableSequence({\n first: writers[0],\n middle: writers.slice(1, writers.length - 1),\n last: writers[writers.length - 1],\n omitSequenceTags: true,\n });\n } else if (writers.length > 0) {\n return new RunnableSequence({\n first: this.bound,\n middle: writers.slice(0, writers.length - 1),\n last: writers[writers.length - 1],\n omitSequenceTags: true,\n });\n } else {\n return this.bound;\n }\n }\n\n join(channels: Array<string>): PregelNode<RunInput, RunOutput> {\n if (!Array.isArray(channels)) {\n throw new Error(\"channels must be a list\");\n }\n if (typeof this.channels !== \"object\") {\n throw new Error(\"all channels must be named when using .join()\");\n }\n\n return new PregelNode<RunInput, RunOutput>({\n channels: {\n ...this.channels,\n ...Object.fromEntries(channels.map((chan) => [chan, chan])),\n },\n triggers: this.triggers,\n mapper: this.mapper,\n writers: this.writers,\n bound: this.bound,\n kwargs: this.kwargs,\n config: this.config,\n retryPolicy: this.retryPolicy,\n cachePolicy: this.cachePolicy,\n timeout: this.timeout,\n });\n }\n\n pipe<NewRunOutput>(\n coerceable: RunnableLike\n ): PregelNode<RunInput, Exclude<NewRunOutput, Error>> {\n if (ChannelWrite.isWriter(coerceable)) {\n return new PregelNode<RunInput, Exclude<NewRunOutput, Error>>({\n channels: this.channels,\n triggers: this.triggers,\n mapper: this.mapper,\n writers: [...this.writers, coerceable],\n bound: this.bound as unknown as PregelNode<\n RunInput,\n Exclude<NewRunOutput, Error>\n >,\n config: this.config,\n kwargs: this.kwargs,\n retryPolicy: this.retryPolicy,\n cachePolicy: this.cachePolicy,\n timeout: this.timeout,\n });\n } else if (this.bound === defaultRunnableBound) {\n return new PregelNode<RunInput, Exclude<NewRunOutput, Error>>({\n channels: this.channels,\n triggers: this.triggers,\n mapper: this.mapper,\n writers: this.writers,\n bound: _coerceToRunnable<RunInput, NewRunOutput>(coerceable),\n config: this.config,\n kwargs: this.kwargs,\n retryPolicy: this.retryPolicy,\n cachePolicy: this.cachePolicy,\n timeout: this.timeout,\n });\n } else {\n return new PregelNode<RunInput, Exclude<NewRunOutput, Error>>({\n channels: this.channels,\n triggers: this.triggers,\n mapper: this.mapper,\n writers: this.writers,\n bound: this.bound.pipe(coerceable),\n config: this.config,\n kwargs: this.kwargs,\n retryPolicy: this.retryPolicy,\n cachePolicy: this.cachePolicy,\n timeout: this.timeout,\n });\n }\n }\n}\n"],"mappings":"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"}
|
package/dist/pregel/read.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TimeoutPolicy } from "./utils/timeout.cjs";
|
|
2
|
-
import { CachePolicy, RetryPolicy
|
|
2
|
+
import { CachePolicy, RetryPolicy } from "./utils/index.cjs";
|
|
3
3
|
import { Runnable, RunnableBinding, RunnableBindingArgs, RunnableConfig, RunnableLike } from "@langchain/core/runnables";
|
|
4
4
|
|
|
5
5
|
//#region src/pregel/read.d.ts
|
|
@@ -16,7 +16,6 @@ interface PregelNodeArgs<RunInput, RunOutput> extends Partial<RunnableBindingArg
|
|
|
16
16
|
retryPolicy?: RetryPolicy;
|
|
17
17
|
cachePolicy?: CachePolicy;
|
|
18
18
|
timeout?: TimeoutPolicy;
|
|
19
|
-
tracePolicy?: TracePolicy;
|
|
20
19
|
subgraphs?: Runnable[];
|
|
21
20
|
ends?: string[];
|
|
22
21
|
/** Whether this node is an auto-generated node-level error handler. */
|
|
@@ -39,7 +38,6 @@ declare class PregelNode<RunInput = PregelNodeInputType, RunOutput = PregelNodeO
|
|
|
39
38
|
retryPolicy?: RetryPolicy;
|
|
40
39
|
cachePolicy?: CachePolicy;
|
|
41
40
|
timeout?: TimeoutPolicy;
|
|
42
|
-
tracePolicy?: TracePolicy;
|
|
43
41
|
subgraphs?: Runnable[];
|
|
44
42
|
ends?: string[];
|
|
45
43
|
isErrorHandler?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.cts","names":[],"sources":["../../src/pregel/read.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"read.d.cts","names":[],"sources":["../../src/pregel/read.ts"],"mappings":";;;;;UAwEU,cAAA,8BAA4C,OAAA,CACpD,mBAAA,CAAoB,QAAA,EAAU,SAAA;EAE9B,QAAA,EAAU,MAAA;EACV,QAAA,EAAU,KAAA;EAEV,MAAA,IAAU,IAAA;EACV,OAAA,GAAU,QAAA,CAAS,SAAA;EACnB,IAAA;EACA,KAAA,GAAQ,QAAA,CAAS,QAAA,EAAU,SAAA;EAE3B,MAAA,GAAS,MAAA;EACT,MAAA,GAAS,cAAA;EACT,QAAA,GAAW,MAAA;EACX,WAAA,GAAc,WAAA;EACd,WAAA,GAAc,WAAA;EACd,OAAA,GAAU,aAAA;EACV,SAAA,GAAY,QAAA;EACZ,IAAA;EAlB2D;EAoB3D,cAAA;EApBuB;EAsBvB,gBAAA;AAAA;AAAA,KAIU,mBAAA;AAAA,KAGA,oBAAA;AAAA,cAEC,UAAA,YACA,mBAAA,cACC,oBAAA,UACJ,eAAA,CAAgB,QAAA,EAAU,SAAA,EAAW,cAAA;EAC7C,aAAA;EAEA,QAAA,EAAU,MAAA;EAEV,QAAA;EAGA,MAAA,IAAU,IAAA;EAEV,OAAA,EAAS,QAAA;EAET,KAAA,EAAO,QAAA,CAAS,QAAA,EAAU,SAAA;EAG1B,MAAA,EAAQ,MAAA;EAER,QAAA,EAAU,MAAA;EAEV,IAAA;EAEA,WAAA,GAAc,WAAA;EAEd,WAAA,GAAc,WAAA;EAEd,OAAA,GAAU,aAAA;EAEV,SAAA,GAAY,QAAA;EAEZ,IAAA;EAEA,cAAA;EAEA,gBAAA;EAEA,WAAA,CAAY,MAAA,EAAQ,cAAA,CAAe,QAAA,EAAU,SAAA;EAmD7C,UAAA,CAAA,GAAc,KAAA,CAAM,QAAA;EAsBpB,OAAA,CAAA,GAAW,QAAA,CAAS,QAAA,EAAU,SAAA;EAyB9B,IAAA,CAAK,QAAA,EAAU,KAAA,WAAgB,UAAA,CAAW,QAAA,EAAU,SAAA;EAyBpD,IAAA,cAAA,CACE,UAAA,EAAY,YAAA,GACX,UAAA,CAAW,QAAA,EAAU,OAAA,CAAQ,YAAA,EAAc,KAAA;AAAA"}
|
package/dist/pregel/read.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TimeoutPolicy } from "./utils/timeout.js";
|
|
2
|
-
import { CachePolicy, RetryPolicy
|
|
2
|
+
import { CachePolicy, RetryPolicy } from "./utils/index.js";
|
|
3
3
|
import { Runnable, RunnableBinding, RunnableBindingArgs, RunnableConfig, RunnableLike } from "@langchain/core/runnables";
|
|
4
4
|
|
|
5
5
|
//#region src/pregel/read.d.ts
|
|
@@ -16,7 +16,6 @@ interface PregelNodeArgs<RunInput, RunOutput> extends Partial<RunnableBindingArg
|
|
|
16
16
|
retryPolicy?: RetryPolicy;
|
|
17
17
|
cachePolicy?: CachePolicy;
|
|
18
18
|
timeout?: TimeoutPolicy;
|
|
19
|
-
tracePolicy?: TracePolicy;
|
|
20
19
|
subgraphs?: Runnable[];
|
|
21
20
|
ends?: string[];
|
|
22
21
|
/** Whether this node is an auto-generated node-level error handler. */
|
|
@@ -39,7 +38,6 @@ declare class PregelNode<RunInput = PregelNodeInputType, RunOutput = PregelNodeO
|
|
|
39
38
|
retryPolicy?: RetryPolicy;
|
|
40
39
|
cachePolicy?: CachePolicy;
|
|
41
40
|
timeout?: TimeoutPolicy;
|
|
42
|
-
tracePolicy?: TracePolicy;
|
|
43
41
|
subgraphs?: Runnable[];
|
|
44
42
|
ends?: string[];
|
|
45
43
|
isErrorHandler?: boolean;
|