@langchain/langgraph 1.0.0-alpha.2 → 1.0.0-alpha.4
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/CHANGELOG.md +13 -0
- package/dist/graph/message.cjs +3 -4
- package/dist/graph/message.cjs.map +1 -1
- package/dist/graph/message.d.cts +2 -1
- package/dist/graph/message.d.cts.map +1 -1
- package/dist/graph/message.d.ts +2 -1
- package/dist/graph/message.d.ts.map +1 -1
- package/dist/graph/message.js +3 -4
- package/dist/graph/message.js.map +1 -1
- package/dist/graph/messages_annotation.d.cts +5 -4
- package/dist/graph/messages_annotation.d.cts.map +1 -1
- package/dist/graph/messages_annotation.d.ts +5 -4
- package/dist/graph/messages_annotation.d.ts.map +1 -1
- package/dist/graph/state.cjs +5 -1
- package/dist/graph/state.cjs.map +1 -1
- package/dist/graph/state.d.cts +6 -9
- package/dist/graph/state.d.cts.map +1 -1
- package/dist/graph/state.d.ts +6 -9
- package/dist/graph/state.d.ts.map +1 -1
- package/dist/graph/state.js +5 -1
- package/dist/graph/state.js.map +1 -1
- package/dist/graph/zod/zod-registry.cjs.map +1 -1
- package/dist/graph/zod/zod-registry.d.cts.map +1 -1
- package/dist/graph/zod/zod-registry.js.map +1 -1
- package/dist/interrupt.cjs.map +1 -1
- package/dist/interrupt.d.cts +10 -1
- package/dist/interrupt.d.cts.map +1 -1
- package/dist/interrupt.d.ts +10 -1
- package/dist/interrupt.d.ts.map +1 -1
- package/dist/interrupt.js.map +1 -1
- package/dist/prebuilt/agentName.cjs +8 -5
- package/dist/prebuilt/agentName.cjs.map +1 -1
- package/dist/prebuilt/agentName.js +8 -5
- package/dist/prebuilt/agentName.js.map +1 -1
- package/dist/prebuilt/agent_executor.d.cts +5 -4
- package/dist/prebuilt/agent_executor.d.cts.map +1 -1
- package/dist/prebuilt/agent_executor.d.ts +5 -4
- package/dist/prebuilt/agent_executor.d.ts.map +1 -1
- package/dist/prebuilt/react_agent_executor.d.cts +3 -2
- package/dist/prebuilt/react_agent_executor.d.cts.map +1 -1
- package/dist/prebuilt/react_agent_executor.d.ts +3 -2
- package/dist/prebuilt/react_agent_executor.d.ts.map +1 -1
- package/dist/prebuilt/tool_node.cjs +2 -2
- package/dist/prebuilt/tool_node.cjs.map +1 -1
- package/dist/prebuilt/tool_node.js +3 -3
- package/dist/prebuilt/tool_node.js.map +1 -1
- package/dist/pregel/index.cjs +40 -12
- package/dist/pregel/index.cjs.map +1 -1
- package/dist/pregel/index.d.cts +13 -4
- package/dist/pregel/index.d.cts.map +1 -1
- package/dist/pregel/index.d.ts +13 -4
- package/dist/pregel/index.d.ts.map +1 -1
- package/dist/pregel/index.js +41 -13
- package/dist/pregel/index.js.map +1 -1
- package/dist/pregel/stream.cjs +107 -0
- package/dist/pregel/stream.cjs.map +1 -1
- package/dist/pregel/stream.js +107 -1
- package/dist/pregel/stream.js.map +1 -1
- package/dist/pregel/types.cjs.map +1 -1
- package/dist/pregel/types.d.cts +15 -2
- package/dist/pregel/types.d.cts.map +1 -1
- package/dist/pregel/types.d.ts +15 -2
- package/dist/pregel/types.d.ts.map +1 -1
- package/dist/pregel/types.js.map +1 -1
- package/dist/writer.cjs.map +1 -1
- package/dist/writer.d.cts +3 -1
- package/dist/writer.d.cts.map +1 -1
- package/dist/writer.d.ts +3 -1
- package/dist/writer.d.ts.map +1 -1
- package/dist/writer.js.map +1 -1
- package/package.json +29 -32
- package/dist/ui/index.cjs +0 -4
- package/dist/ui/index.d.cts +0 -5
- package/dist/ui/index.d.ts +0 -5
- package/dist/ui/index.js +0 -3
- package/dist/ui/stream.cjs +0 -145
- package/dist/ui/stream.cjs.map +0 -1
- package/dist/ui/stream.d.cts +0 -25
- package/dist/ui/stream.d.cts.map +0 -1
- package/dist/ui/stream.d.ts +0 -25
- package/dist/ui/stream.d.ts.map +0 -1
- package/dist/ui/stream.js +0 -143
- package/dist/ui/stream.js.map +0 -1
- package/dist/ui/types.infer.d.cts +0 -53
- package/dist/ui/types.infer.d.cts.map +0 -1
- package/dist/ui/types.infer.d.ts +0 -53
- package/dist/ui/types.infer.d.ts.map +0 -1
- package/dist/ui/types.message.d.cts +0 -95
- package/dist/ui/types.message.d.cts.map +0 -1
- package/dist/ui/types.message.d.ts +0 -95
- package/dist/ui/types.message.d.ts.map +0 -1
- package/dist/ui/types.schema.d.cts +0 -228
- package/dist/ui/types.schema.d.cts.map +0 -1
- package/dist/ui/types.schema.d.ts +0 -228
- package/dist/ui/types.schema.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","names":["All","BaseCache","BaseCheckpointSaver","BaseStore","InteropZodObject","RunnableLike","Runtime","BaseChannel","CompiledGraph","Graph","Branch","AddNodeOptions","NodeSpec","Command","END","START","CommandInstance","Interrupt","INTERRUPT","AnnotationRoot","SingleReducer","StateDefinition","StateType","UpdateType","CachePolicy","RetryPolicy","SchemaMetaRegistry","InteropZodToStateDefinition","interrupt","writer","ChannelReducers","Channels","K","StateGraphArgs","StateGraphNodeSpec","RunInput","RunOutput","StateGraphAddNodeOptions","Nodes","StateGraphArgsWithStateSchema","SD","I","O","StateGraphArgsWithInputOutputSchemas","ZodStateGraphArgsWithStateSchema","SDZod","ToStateDefinition","T","InterruptResumeType","R","InterruptInputType","InferWriterType","C","NodeAction","S","U","Record","InterruptType","WriterType","StrictNodeAction","Prettify","PartialStateSchema","MergeReturnType","Prev","Curr","StateGraph","Partial","N","Set","Map","NodeMap","NodeReturnType","key","NodeInput","NodeOutput","checkpointer","store","cache","interruptBefore","interruptAfter","name","description","CompiledStateGraph","ConstructorParameters","Promise"],"sources":["../../src/graph/state.d.ts"],"sourcesContent":["import { All, type BaseCache, BaseCheckpointSaver, BaseStore } from \"@langchain/langgraph-checkpoint\";\nimport { type InteropZodObject } from \"@langchain/core/utils/types\";\nimport type { RunnableLike, Runtime } from \"../pregel/runnable_types.js\";\nimport { BaseChannel } from \"../channels/base.js\";\nimport { CompiledGraph, Graph, Branch, AddNodeOptions, NodeSpec } from \"./graph.js\";\nimport { Command, END, START, CommandInstance, Interrupt, INTERRUPT } from \"../constants.js\";\nimport { AnnotationRoot, SingleReducer, StateDefinition, StateType, UpdateType } from \"./annotation.js\";\nimport type { CachePolicy, RetryPolicy } from \"../pregel/utils/index.js\";\nimport { type SchemaMetaRegistry, InteropZodToStateDefinition } from \"./zod/meta.js\";\nimport { interrupt } from \"../interrupt.js\";\nimport { writer } from \"../writer.js\";\nexport type ChannelReducers<Channels extends object> = {\n [K in keyof Channels]: SingleReducer<Channels[K], any>;\n};\nexport interface StateGraphArgs<Channels extends object | unknown> {\n channels: Channels extends object ? Channels extends unknown[] ? ChannelReducers<{\n __root__: Channels;\n }> : ChannelReducers<Channels> : ChannelReducers<{\n __root__: Channels;\n }>;\n}\nexport type StateGraphNodeSpec<RunInput, RunOutput> = NodeSpec<RunInput, RunOutput> & {\n input?: StateDefinition;\n retryPolicy?: RetryPolicy;\n cachePolicy?: CachePolicy;\n};\nexport type StateGraphAddNodeOptions<Nodes extends string = string> = {\n retryPolicy?: RetryPolicy;\n cachePolicy?: CachePolicy | boolean;\n // TODO: Fix generic typing for annotations\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n input?: AnnotationRoot<any> | InteropZodObject;\n} & AddNodeOptions<Nodes>;\nexport type StateGraphArgsWithStateSchema<SD extends StateDefinition, I extends StateDefinition, O extends StateDefinition> = {\n stateSchema: AnnotationRoot<SD>;\n input?: AnnotationRoot<I>;\n output?: AnnotationRoot<O>;\n};\nexport type StateGraphArgsWithInputOutputSchemas<SD extends StateDefinition, O extends StateDefinition = SD> = {\n input: AnnotationRoot<SD>;\n output: AnnotationRoot<O>;\n};\ntype ZodStateGraphArgsWithStateSchema<SD extends InteropZodObject, I extends SDZod, O extends SDZod> = {\n state: SD;\n input?: I;\n output?: O;\n};\ntype SDZod = StateDefinition | InteropZodObject;\ntype ToStateDefinition<T> = T extends InteropZodObject ? InteropZodToStateDefinition<T> : T extends StateDefinition ? T : never;\ntype InterruptResumeType<T> = T extends typeof interrupt<unknown, infer R> ? R : unknown;\ntype InterruptInputType<T> = T extends typeof interrupt<infer I, unknown> ? I : unknown;\ntype InferWriterType<T> = T extends typeof writer<infer C> ? C : any; // eslint-disable-line @typescript-eslint/no-explicit-any\ntype NodeAction<S, U, C extends SDZod, InterruptType, WriterType> = RunnableLike<S, U extends object ? U & Record<string, any> : U, // eslint-disable-line @typescript-eslint/no-explicit-any\nRuntime<StateType<ToStateDefinition<C>>, InterruptType, WriterType>>;\ntype StrictNodeAction<S, U, C extends SDZod, Nodes extends string, InterruptType, WriterType> = RunnableLike<Prettify<S>, U | Command<InterruptResumeType<InterruptType>, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nU & Record<string, any>, Nodes>, Runtime<StateType<ToStateDefinition<C>>, InterruptType, WriterType>>;\ndeclare const PartialStateSchema: unique symbol;\ntype PartialStateSchema = typeof PartialStateSchema;\ntype MergeReturnType<Prev, Curr> = Prev & Curr extends infer T ? {\n [K in keyof T]: T[K];\n} & unknown : never;\ntype Prettify<T> = {\n [K in keyof T]: T[K];\n} & {};\n/**\n * A graph whose nodes communicate by reading and writing to a shared state.\n * Each node takes a defined `State` as input and returns a `Partial<State>`.\n *\n * Each state key can optionally be annotated with a reducer function that\n * will be used to aggregate the values of that key received from multiple nodes.\n * The signature of a reducer function is (left: Value, right: UpdateValue) => Value.\n *\n * See {@link Annotation} for more on defining state.\n *\n * After adding nodes and edges to your graph, you must call `.compile()` on it before\n * you can use it.\n *\n * @example\n * ```ts\n * import {\n * type BaseMessage,\n * AIMessage,\n * HumanMessage,\n * } from \"@langchain/core/messages\";\n * import { StateGraph, Annotation } from \"@langchain/langgraph\";\n *\n * // Define a state with a single key named \"messages\" that will\n * // combine a returned BaseMessage or arrays of BaseMessages\n * const StateAnnotation = Annotation.Root({\n * sentiment: Annotation<string>,\n * messages: Annotation<BaseMessage[]>({\n * reducer: (left: BaseMessage[], right: BaseMessage | BaseMessage[]) => {\n * if (Array.isArray(right)) {\n * return left.concat(right);\n * }\n * return left.concat([right]);\n * },\n * default: () => [],\n * }),\n * });\n *\n * const graphBuilder = new StateGraph(StateAnnotation);\n *\n * // A node in the graph that returns an object with a \"messages\" key\n * // will update the state by combining the existing value with the returned one.\n * const myNode = (state: typeof StateAnnotation.State) => {\n * return {\n * messages: [new AIMessage(\"Some new response\")],\n * sentiment: \"positive\",\n * };\n * };\n *\n * const graph = graphBuilder\n * .addNode(\"myNode\", myNode)\n * .addEdge(\"__start__\", \"myNode\")\n * .addEdge(\"myNode\", \"__end__\")\n * .compile();\n *\n * await graph.invoke({ messages: [new HumanMessage(\"how are you?\")] });\n *\n * // {\n * // messages: [HumanMessage(\"how are you?\"), AIMessage(\"Some new response\")],\n * // sentiment: \"positive\",\n * // }\n * ```\n */\nexport declare class StateGraph<SD extends SDZod | unknown, S = SD extends SDZod ? StateType<ToStateDefinition<SD>> : SD, U = SD extends SDZod ? UpdateType<ToStateDefinition<SD>> : Partial<S>, N extends string = typeof START, I extends SDZod = SD extends SDZod ? ToStateDefinition<SD> : StateDefinition, O extends SDZod = SD extends SDZod ? ToStateDefinition<SD> : StateDefinition, C extends SDZod = StateDefinition, NodeReturnType = unknown, InterruptType = unknown, WriterType = unknown> extends Graph<N, S, U, StateGraphNodeSpec<S, U>, ToStateDefinition<C>> {\n channels: Record<string, BaseChannel>;\n // TODO: this doesn't dedupe edges as in py, so worth fixing at some point\n waitingEdges: Set<[N[], N]>;\n /** @internal */\n _schemaDefinition: StateDefinition;\n /** @internal */\n _schemaRuntimeDefinition: InteropZodObject | undefined;\n /** @internal */\n _inputDefinition: I;\n /** @internal */\n _inputRuntimeDefinition: InteropZodObject | PartialStateSchema | undefined;\n /** @internal */\n _outputDefinition: O;\n /** @internal */\n _outputRuntimeDefinition: InteropZodObject | undefined;\n /**\n * Map schemas to managed values\n * @internal\n */\n _schemaDefinitions: Map<any, any>;\n /** @internal */\n _metaRegistry: SchemaMetaRegistry;\n /** @internal Used only for typing. */\n _configSchema: ToStateDefinition<C> | undefined;\n /** @internal */\n _configRuntimeSchema: InteropZodObject | undefined;\n /** @internal */\n _interrupt: InterruptType;\n /** @internal */\n _writer: WriterType;\n Node: StrictNodeAction<S, U, C, N, InterruptType, WriterType>;\n constructor(state: SD extends StateDefinition ? AnnotationRoot<SD> : never, options?: {\n context?: C | AnnotationRoot<ToStateDefinition<C>>;\n input?: I | AnnotationRoot<ToStateDefinition<I>>;\n output?: O | AnnotationRoot<ToStateDefinition<O>>;\n interrupt?: InterruptType;\n writer?: WriterType;\n nodes?: N[];\n });\n constructor(state: SD extends InteropZodObject ? SD : never, options?: {\n context?: C | AnnotationRoot<ToStateDefinition<C>>;\n input?: I | AnnotationRoot<ToStateDefinition<I>>;\n output?: O | AnnotationRoot<ToStateDefinition<O>>;\n interrupt?: InterruptType;\n writer?: WriterType;\n nodes?: N[];\n });\n constructor(fields: SD extends StateDefinition ? StateGraphArgsWithInputOutputSchemas<SD, ToStateDefinition<O>> : never, contextSchema?: C | AnnotationRoot<ToStateDefinition<C>>);\n constructor(fields: SD extends StateDefinition ? AnnotationRoot<SD> | StateGraphArgsWithStateSchema<SD, ToStateDefinition<I>, ToStateDefinition<O>> : never, contextSchema?: C | AnnotationRoot<ToStateDefinition<C>>);\n /** @deprecated Use `Annotation.Root` or `zod` for state definition instead. */\n constructor(fields: SD extends StateDefinition ? SD | StateGraphArgs<S> : StateGraphArgs<S>, contextSchema?: C | AnnotationRoot<ToStateDefinition<C>>);\n constructor(fields: SD extends InteropZodObject ? SD | ZodStateGraphArgsWithStateSchema<SD, I, O> : never, contextSchema?: C | AnnotationRoot<ToStateDefinition<C>>);\n get allEdges(): Set<[string, string]>;\n _addSchema(stateDefinition: SDZod): void;\n addNode<K extends string, NodeMap extends Record<K, NodeAction<S, U, C, InterruptType, WriterType>>>(nodes: NodeMap): StateGraph<SD, S, U, N | K, I, O, C, MergeReturnType<NodeReturnType, {\n [key in keyof NodeMap]: NodeMap[key] extends NodeAction<S, infer U, C, InterruptType, WriterType> ? U : never;\n }>>;\n addNode<K extends string, NodeInput = S, NodeOutput extends U = U>(nodes: [\n key: K,\n action: NodeAction<NodeInput, NodeOutput, C, InterruptType, WriterType>,\n options?: StateGraphAddNodeOptions\n ][]): StateGraph<SD, S, U, N | K, I, O, C, MergeReturnType<NodeReturnType, {\n [key in K]: NodeOutput;\n }>>;\n addNode<K extends string, NodeInput = S, NodeOutput extends U = U>(key: K, action: NodeAction<NodeInput, NodeOutput, C, InterruptType, WriterType>, options?: StateGraphAddNodeOptions): StateGraph<SD, S, U, N | K, I, O, C, MergeReturnType<NodeReturnType, {\n [key in K]: NodeOutput;\n }>>;\n addNode<K extends string, NodeInput = S>(key: K, action: NodeAction<NodeInput, U, C, InterruptType, WriterType>, options?: StateGraphAddNodeOptions): StateGraph<SD, S, U, N | K, I, O, C, NodeReturnType>;\n addEdge(startKey: typeof START | N | N[], endKey: N | typeof END): this;\n addSequence<K extends string, NodeInput = S, NodeOutput extends U = U>(nodes: [\n key: K,\n action: NodeAction<NodeInput, NodeOutput, C, InterruptType, WriterType>,\n options?: StateGraphAddNodeOptions\n ][]): StateGraph<SD, S, U, N | K, I, O, C, MergeReturnType<NodeReturnType, {\n [key in K]: NodeOutput;\n }>>;\n addSequence<K extends string, NodeMap extends Record<K, NodeAction<S, U, C, InterruptType, WriterType>>>(nodes: NodeMap): StateGraph<SD, S, U, N | K, I, O, C, MergeReturnType<NodeReturnType, {\n [key in keyof NodeMap]: NodeMap[key] extends NodeAction<S, infer U, C, InterruptType, WriterType> ? U : never;\n }>>;\n compile({ checkpointer, store, cache, interruptBefore, interruptAfter, name, description }?: {\n checkpointer?: BaseCheckpointSaver | boolean;\n store?: BaseStore;\n cache?: BaseCache;\n interruptBefore?: N[] | All;\n interruptAfter?: N[] | All;\n name?: string;\n description?: string;\n }): CompiledStateGraph<Prettify<S>, Prettify<U>, N, I, O, C, NodeReturnType, InterruptType, WriterType>;\n}\n/**\n * Final result from building and compiling a {@link StateGraph}.\n * Should not be instantiated directly, only using the StateGraph `.compile()`\n * instance method.\n */\nexport declare class CompiledStateGraph<S, U, N extends string = typeof START, I extends SDZod = StateDefinition, O extends SDZod = StateDefinition, C extends SDZod = StateDefinition, NodeReturnType = unknown, InterruptType = unknown, WriterType = unknown> extends CompiledGraph<N, S, U, StateType<ToStateDefinition<C>>, UpdateType<ToStateDefinition<I>>, StateType<ToStateDefinition<O>>, NodeReturnType, CommandInstance<InterruptResumeType<InterruptType>, Prettify<U>, N>, InferWriterType<WriterType>> {\n builder: StateGraph<unknown, S, U, N, I, O, C, NodeReturnType>;\n /**\n * The description of the compiled graph.\n * This is used by the supervisor agent to describe the handoff to the agent.\n */\n description?: string;\n /** @internal */\n _metaRegistry: SchemaMetaRegistry;\n constructor({ description, ...rest }: {\n description?: string;\n } & ConstructorParameters<typeof CompiledGraph<N, S, U, StateType<ToStateDefinition<C>>, UpdateType<ToStateDefinition<I>>, StateType<ToStateDefinition<O>>, NodeReturnType, CommandInstance<InterruptResumeType<InterruptType>, Prettify<U>, N>, InferWriterType<WriterType>>>[0]);\n attachNode(key: typeof START, node?: never): void;\n attachNode(key: N, node: StateGraphNodeSpec<S, U>): void;\n attachEdge(starts: N | N[] | \"__start__\", end: N | \"__end__\"): void;\n attachBranch(start: N | typeof START, _: string, branch: Branch<S, N>, options?: {\n withReader?: boolean;\n }): void;\n protected _validateInput(input: UpdateType<ToStateDefinition<I>>): Promise<UpdateType<ToStateDefinition<I>>>;\n isInterrupted(input: unknown): input is {\n [INTERRUPT]: Interrupt<InterruptInputType<InterruptType>>[];\n };\n protected _validateContext(config: Partial<Record<string, unknown>>): Promise<Partial<Record<string, unknown>>>;\n}\nexport {};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"state.d.ts","names":["All","BaseCache","BaseCheckpointSaver","BaseStore","InteropZodObject","RunnableLike","Runtime","BaseChannel","CompiledGraph","Graph","Branch","AddNodeOptions","NodeSpec","Command","END","START","CommandInstance","Interrupt","INTERRUPT","AnnotationRoot","SingleReducer","StateDefinition","StateType","UpdateType","CachePolicy","RetryPolicy","SchemaMetaRegistry","InteropZodToStateDefinition","InferInterruptResumeType","InferInterruptInputType","InferWriterType","ChannelReducers","Channels","K","StateGraphArgs","StateGraphNodeSpec","RunInput","RunOutput","StateGraphAddNodeOptions","Nodes","StateGraphArgsWithStateSchema","SD","I","O","StateGraphArgsWithInputOutputSchemas","ZodStateGraphArgsWithStateSchema","SDZod","ToStateDefinition","T","NodeAction","S","U","Record","C","InterruptType","WriterType","StrictNodeAction","Prettify","PartialStateSchema","MergeReturnType","Prev","Curr","StateGraph","Partial","N","Set","Map","NodeMap","NodeReturnType","key","NodeInput","NodeOutput","checkpointer","store","cache","interruptBefore","interruptAfter","name","description","CompiledStateGraph","ConstructorParameters","Promise"],"sources":["../../src/graph/state.d.ts"],"sourcesContent":["import { All, type BaseCache, BaseCheckpointSaver, BaseStore } from \"@langchain/langgraph-checkpoint\";\nimport { type InteropZodObject } from \"@langchain/core/utils/types\";\nimport type { RunnableLike, Runtime } from \"../pregel/runnable_types.js\";\nimport { BaseChannel } from \"../channels/base.js\";\nimport { CompiledGraph, Graph, Branch, AddNodeOptions, NodeSpec } from \"./graph.js\";\nimport { Command, END, START, CommandInstance, Interrupt, INTERRUPT } from \"../constants.js\";\nimport { AnnotationRoot, SingleReducer, StateDefinition, StateType, UpdateType } from \"./annotation.js\";\nimport type { CachePolicy, RetryPolicy } from \"../pregel/utils/index.js\";\nimport { type SchemaMetaRegistry, InteropZodToStateDefinition } from \"./zod/meta.js\";\nimport type { InferInterruptResumeType, InferInterruptInputType } from \"../interrupt.js\";\nimport type { InferWriterType } from \"../writer.js\";\nexport type ChannelReducers<Channels extends object> = {\n [K in keyof Channels]: SingleReducer<Channels[K], any>;\n};\nexport interface StateGraphArgs<Channels extends object | unknown> {\n channels: Channels extends object ? Channels extends unknown[] ? ChannelReducers<{\n __root__: Channels;\n }> : ChannelReducers<Channels> : ChannelReducers<{\n __root__: Channels;\n }>;\n}\nexport type StateGraphNodeSpec<RunInput, RunOutput> = NodeSpec<RunInput, RunOutput> & {\n input?: StateDefinition;\n retryPolicy?: RetryPolicy;\n cachePolicy?: CachePolicy;\n};\nexport type StateGraphAddNodeOptions<Nodes extends string = string> = {\n retryPolicy?: RetryPolicy;\n cachePolicy?: CachePolicy | boolean;\n // TODO: Fix generic typing for annotations\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n input?: AnnotationRoot<any> | InteropZodObject;\n} & AddNodeOptions<Nodes>;\nexport type StateGraphArgsWithStateSchema<SD extends StateDefinition, I extends StateDefinition, O extends StateDefinition> = {\n stateSchema: AnnotationRoot<SD>;\n input?: AnnotationRoot<I>;\n output?: AnnotationRoot<O>;\n};\nexport type StateGraphArgsWithInputOutputSchemas<SD extends StateDefinition, O extends StateDefinition = SD> = {\n input: AnnotationRoot<SD>;\n output: AnnotationRoot<O>;\n};\ntype ZodStateGraphArgsWithStateSchema<SD extends InteropZodObject, I extends SDZod, O extends SDZod> = {\n state: SD;\n input?: I;\n output?: O;\n};\ntype SDZod = StateDefinition | InteropZodObject;\ntype ToStateDefinition<T> = T extends InteropZodObject ? InteropZodToStateDefinition<T> : T extends StateDefinition ? T : never;\ntype NodeAction<S, U, C extends SDZod, InterruptType, WriterType> = RunnableLike<S, U extends object ? U & Record<string, any> : U, // eslint-disable-line @typescript-eslint/no-explicit-any\nRuntime<StateType<ToStateDefinition<C>>, InterruptType, WriterType>>;\ntype StrictNodeAction<S, U, C extends SDZod, Nodes extends string, InterruptType, WriterType> = RunnableLike<Prettify<S>, U | Command<InferInterruptResumeType<InterruptType>, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nU & Record<string, any>, Nodes>, Runtime<StateType<ToStateDefinition<C>>, InterruptType, WriterType>>;\ndeclare const PartialStateSchema: unique symbol;\ntype PartialStateSchema = typeof PartialStateSchema;\ntype MergeReturnType<Prev, Curr> = Prev & Curr extends infer T ? {\n [K in keyof T]: T[K];\n} & unknown : never;\ntype Prettify<T> = {\n [K in keyof T]: T[K];\n} & {};\n/**\n * A graph whose nodes communicate by reading and writing to a shared state.\n * Each node takes a defined `State` as input and returns a `Partial<State>`.\n *\n * Each state key can optionally be annotated with a reducer function that\n * will be used to aggregate the values of that key received from multiple nodes.\n * The signature of a reducer function is (left: Value, right: UpdateValue) => Value.\n *\n * See {@link Annotation} for more on defining state.\n *\n * After adding nodes and edges to your graph, you must call `.compile()` on it before\n * you can use it.\n *\n * @example\n * ```ts\n * import {\n * type BaseMessage,\n * AIMessage,\n * HumanMessage,\n * } from \"@langchain/core/messages\";\n * import { StateGraph, Annotation } from \"@langchain/langgraph\";\n *\n * // Define a state with a single key named \"messages\" that will\n * // combine a returned BaseMessage or arrays of BaseMessages\n * const StateAnnotation = Annotation.Root({\n * sentiment: Annotation<string>,\n * messages: Annotation<BaseMessage[]>({\n * reducer: (left: BaseMessage[], right: BaseMessage | BaseMessage[]) => {\n * if (Array.isArray(right)) {\n * return left.concat(right);\n * }\n * return left.concat([right]);\n * },\n * default: () => [],\n * }),\n * });\n *\n * const graphBuilder = new StateGraph(StateAnnotation);\n *\n * // A node in the graph that returns an object with a \"messages\" key\n * // will update the state by combining the existing value with the returned one.\n * const myNode = (state: typeof StateAnnotation.State) => {\n * return {\n * messages: [new AIMessage(\"Some new response\")],\n * sentiment: \"positive\",\n * };\n * };\n *\n * const graph = graphBuilder\n * .addNode(\"myNode\", myNode)\n * .addEdge(\"__start__\", \"myNode\")\n * .addEdge(\"myNode\", \"__end__\")\n * .compile();\n *\n * await graph.invoke({ messages: [new HumanMessage(\"how are you?\")] });\n *\n * // {\n * // messages: [HumanMessage(\"how are you?\"), AIMessage(\"Some new response\")],\n * // sentiment: \"positive\",\n * // }\n * ```\n */\nexport declare class StateGraph<SD extends SDZod | unknown, S = SD extends SDZod ? StateType<ToStateDefinition<SD>> : SD, U = SD extends SDZod ? UpdateType<ToStateDefinition<SD>> : Partial<S>, N extends string = typeof START, I extends SDZod = SD extends SDZod ? ToStateDefinition<SD> : StateDefinition, O extends SDZod = SD extends SDZod ? ToStateDefinition<SD> : StateDefinition, C extends SDZod = StateDefinition, NodeReturnType = unknown, InterruptType = unknown, WriterType = unknown> extends Graph<N, S, U, StateGraphNodeSpec<S, U>, ToStateDefinition<C>> {\n channels: Record<string, BaseChannel>;\n // TODO: this doesn't dedupe edges as in py, so worth fixing at some point\n waitingEdges: Set<[N[], N]>;\n /** @internal */\n _schemaDefinition: StateDefinition;\n /** @internal */\n _schemaRuntimeDefinition: InteropZodObject | undefined;\n /** @internal */\n _inputDefinition: I;\n /** @internal */\n _inputRuntimeDefinition: InteropZodObject | PartialStateSchema | undefined;\n /** @internal */\n _outputDefinition: O;\n /** @internal */\n _outputRuntimeDefinition: InteropZodObject | undefined;\n /**\n * Map schemas to managed values\n * @internal\n */\n _schemaDefinitions: Map<any, any>;\n /** @internal */\n _metaRegistry: SchemaMetaRegistry;\n /** @internal Used only for typing. */\n _configSchema: ToStateDefinition<C> | undefined;\n /** @internal */\n _configRuntimeSchema: InteropZodObject | undefined;\n /** @internal */\n _interrupt: InterruptType;\n /** @internal */\n _writer: WriterType;\n Node: StrictNodeAction<S, U, C, N, InterruptType, WriterType>;\n constructor(state: SD extends StateDefinition ? AnnotationRoot<SD> : never, options?: {\n context?: C | AnnotationRoot<ToStateDefinition<C>>;\n input?: I | AnnotationRoot<ToStateDefinition<I>>;\n output?: O | AnnotationRoot<ToStateDefinition<O>>;\n interrupt?: InterruptType;\n writer?: WriterType;\n nodes?: N[];\n });\n constructor(state: SD extends InteropZodObject ? SD : never, options?: {\n context?: C | AnnotationRoot<ToStateDefinition<C>>;\n input?: I | AnnotationRoot<ToStateDefinition<I>>;\n output?: O | AnnotationRoot<ToStateDefinition<O>>;\n interrupt?: InterruptType;\n writer?: WriterType;\n nodes?: N[];\n });\n constructor(fields: SD extends StateDefinition ? StateGraphArgsWithInputOutputSchemas<SD, ToStateDefinition<O>> : never, contextSchema?: C | AnnotationRoot<ToStateDefinition<C>>);\n constructor(fields: SD extends StateDefinition ? AnnotationRoot<SD> | StateGraphArgsWithStateSchema<SD, ToStateDefinition<I>, ToStateDefinition<O>> : never, contextSchema?: C | AnnotationRoot<ToStateDefinition<C>>);\n /** @deprecated Use `Annotation.Root` or `zod` for state definition instead. */\n constructor(fields: SD extends StateDefinition ? SD | StateGraphArgs<S> : StateGraphArgs<S>, contextSchema?: C | AnnotationRoot<ToStateDefinition<C>>);\n constructor(fields: SD extends InteropZodObject ? SD | ZodStateGraphArgsWithStateSchema<SD, I, O> : never, contextSchema?: C | AnnotationRoot<ToStateDefinition<C>>);\n get allEdges(): Set<[string, string]>;\n _addSchema(stateDefinition: SDZod): void;\n addNode<K extends string, NodeMap extends Record<K, NodeAction<S, U, C, InterruptType, WriterType>>>(nodes: NodeMap): StateGraph<SD, S, U, N | K, I, O, C, MergeReturnType<NodeReturnType, {\n [key in keyof NodeMap]: NodeMap[key] extends NodeAction<S, infer U, C, InterruptType, WriterType> ? U : never;\n }>>;\n addNode<K extends string, NodeInput = S, NodeOutput extends U = U>(nodes: [\n key: K,\n action: NodeAction<NodeInput, NodeOutput, C, InterruptType, WriterType>,\n options?: StateGraphAddNodeOptions\n ][]): StateGraph<SD, S, U, N | K, I, O, C, MergeReturnType<NodeReturnType, {\n [key in K]: NodeOutput;\n }>>;\n addNode<K extends string, NodeInput = S, NodeOutput extends U = U>(key: K, action: NodeAction<NodeInput, NodeOutput, C, InterruptType, WriterType>, options?: StateGraphAddNodeOptions): StateGraph<SD, S, U, N | K, I, O, C, MergeReturnType<NodeReturnType, {\n [key in K]: NodeOutput;\n }>>;\n addNode<K extends string, NodeInput = S>(key: K, action: NodeAction<NodeInput, U, C, InterruptType, WriterType>, options?: StateGraphAddNodeOptions): StateGraph<SD, S, U, N | K, I, O, C, NodeReturnType>;\n addEdge(startKey: typeof START | N | N[], endKey: N | typeof END): this;\n addSequence<K extends string, NodeInput = S, NodeOutput extends U = U>(nodes: [\n key: K,\n action: NodeAction<NodeInput, NodeOutput, C, InterruptType, WriterType>,\n options?: StateGraphAddNodeOptions\n ][]): StateGraph<SD, S, U, N | K, I, O, C, MergeReturnType<NodeReturnType, {\n [key in K]: NodeOutput;\n }>>;\n addSequence<K extends string, NodeMap extends Record<K, NodeAction<S, U, C, InterruptType, WriterType>>>(nodes: NodeMap): StateGraph<SD, S, U, N | K, I, O, C, MergeReturnType<NodeReturnType, {\n [key in keyof NodeMap]: NodeMap[key] extends NodeAction<S, infer U, C, InterruptType, WriterType> ? U : never;\n }>>;\n compile({ checkpointer, store, cache, interruptBefore, interruptAfter, name, description }?: {\n checkpointer?: BaseCheckpointSaver | boolean;\n store?: BaseStore;\n cache?: BaseCache;\n interruptBefore?: N[] | All;\n interruptAfter?: N[] | All;\n name?: string;\n description?: string;\n }): CompiledStateGraph<Prettify<S>, Prettify<U>, N, I, O, C, NodeReturnType, InterruptType, WriterType>;\n}\n/**\n * Final result from building and compiling a {@link StateGraph}.\n * Should not be instantiated directly, only using the StateGraph `.compile()`\n * instance method.\n */\nexport declare class CompiledStateGraph<S, U, N extends string = typeof START, I extends SDZod = StateDefinition, O extends SDZod = StateDefinition, C extends SDZod = StateDefinition, NodeReturnType = unknown, InterruptType = unknown, WriterType = unknown> extends CompiledGraph<N, S, U, StateType<ToStateDefinition<C>>, UpdateType<ToStateDefinition<I>>, StateType<ToStateDefinition<O>>, NodeReturnType, CommandInstance<InferInterruptResumeType<InterruptType>, Prettify<U>, N>, InferWriterType<WriterType>> {\n builder: StateGraph<unknown, S, U, N, I, O, C, NodeReturnType>;\n /**\n * The description of the compiled graph.\n * This is used by the supervisor agent to describe the handoff to the agent.\n */\n description?: string;\n /** @internal */\n _metaRegistry: SchemaMetaRegistry;\n constructor({ description, ...rest }: {\n description?: string;\n } & ConstructorParameters<typeof CompiledGraph<N, S, U, StateType<ToStateDefinition<C>>, UpdateType<ToStateDefinition<I>>, StateType<ToStateDefinition<O>>, NodeReturnType, CommandInstance<InferInterruptResumeType<InterruptType>, Prettify<U>, N>, InferWriterType<WriterType>>>[0]);\n attachNode(key: typeof START, node?: never): void;\n attachNode(key: N, node: StateGraphNodeSpec<S, U>): void;\n attachEdge(starts: N | N[] | \"__start__\", end: N | \"__end__\"): void;\n attachBranch(start: N | typeof START, _: string, branch: Branch<S, N>, options?: {\n withReader?: boolean;\n }): void;\n protected _validateInput(input: UpdateType<ToStateDefinition<I>>): Promise<UpdateType<ToStateDefinition<I>>>;\n isInterrupted(input: unknown): input is {\n [INTERRUPT]: Interrupt<InferInterruptInputType<InterruptType>>[];\n };\n protected _validateContext(config: Partial<Record<string, unknown>>): Promise<Partial<Record<string, unknown>>>;\n}\nexport {};\n"],"mappings":"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"}
|
package/dist/graph/state.js
CHANGED
|
@@ -154,6 +154,8 @@ var StateGraph = class extends Graph {
|
|
|
154
154
|
}
|
|
155
155
|
if (isOptions(contextSchema)) {
|
|
156
156
|
if (isInteropZodObject(contextSchema.context)) this._configRuntimeSchema = contextSchema.context;
|
|
157
|
+
this._interrupt = contextSchema.interrupt;
|
|
158
|
+
this._writer = contextSchema.writer;
|
|
157
159
|
} else if (isInteropZodObject(contextSchema)) this._configRuntimeSchema = contextSchema;
|
|
158
160
|
}
|
|
159
161
|
get allEdges() {
|
|
@@ -250,6 +252,7 @@ var StateGraph = class extends Graph {
|
|
|
250
252
|
const outputChannels = outputKeys.length === 1 && outputKeys[0] === ROOT ? ROOT : outputKeys;
|
|
251
253
|
const streamKeys = Object.keys(this.channels);
|
|
252
254
|
const streamChannels = streamKeys.length === 1 && streamKeys[0] === ROOT ? ROOT : streamKeys;
|
|
255
|
+
const userInterrupt = this._interrupt;
|
|
253
256
|
const compiled = new CompiledStateGraph({
|
|
254
257
|
builder: this,
|
|
255
258
|
checkpointer,
|
|
@@ -268,7 +271,8 @@ var StateGraph = class extends Graph {
|
|
|
268
271
|
store,
|
|
269
272
|
cache,
|
|
270
273
|
name,
|
|
271
|
-
description
|
|
274
|
+
description,
|
|
275
|
+
userInterrupt
|
|
272
276
|
});
|
|
273
277
|
compiled.attachNode(START);
|
|
274
278
|
for (const [key, node] of Object.entries(this.nodes)) compiled.attachNode(key, node);
|
package/dist/graph/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","names":["args","nodeSpec: StateGraphNodeSpec<S, U>","previousNode: N | undefined","name","channels: Record<string, BaseChannel>","outputKeys: string[]","updates: [string, unknown][]","stateWriteEntries: (ChannelWriteTupleEntry | ChannelWriteEntry)[]","writes: (ChannelWriteEntry | Send)[]","input","schema","destinations: (string | Send)[]"],"sources":["../../src/graph/state.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { _coerceToRunnable, Runnable } from \"@langchain/core/runnables\";\nimport {\n All,\n type BaseCache,\n BaseCheckpointSaver,\n BaseStore,\n} from \"@langchain/langgraph-checkpoint\";\nimport {\n type InteropZodObject,\n interopParse,\n interopZodObjectPartial,\n isInteropZodObject,\n} from \"@langchain/core/utils/types\";\nimport type {\n RunnableLike,\n LangGraphRunnableConfig,\n Runtime,\n} from \"../pregel/runnable_types.js\";\nimport { BaseChannel, isBaseChannel } from \"../channels/base.js\";\nimport {\n CompiledGraph,\n Graph,\n Branch,\n AddNodeOptions,\n NodeSpec,\n} from \"./graph.js\";\nimport {\n ChannelWrite,\n ChannelWriteEntry,\n ChannelWriteTupleEntry,\n PASSTHROUGH,\n} from \"../pregel/write.js\";\nimport { ChannelRead, PregelNode } from \"../pregel/read.js\";\nimport {\n NamedBarrierValue,\n NamedBarrierValueAfterFinish,\n} from \"../channels/named_barrier_value.js\";\nimport { EphemeralValue } from \"../channels/ephemeral_value.js\";\nimport { RunnableCallable } from \"../utils.js\";\nimport {\n isCommand,\n _isSend,\n CHECKPOINT_NAMESPACE_END,\n CHECKPOINT_NAMESPACE_SEPARATOR,\n Command,\n END,\n SELF,\n Send,\n START,\n TAG_HIDDEN,\n CommandInstance,\n isInterrupted,\n Interrupt,\n INTERRUPT,\n} from \"../constants.js\";\nimport { InvalidUpdateError, ParentCommand } from \"../errors.js\";\nimport {\n AnnotationRoot,\n getChannel,\n SingleReducer,\n StateDefinition,\n StateType,\n UpdateType,\n} from \"./annotation.js\";\nimport type { CachePolicy, RetryPolicy } from \"../pregel/utils/index.js\";\nimport { isPregelLike } from \"../pregel/utils/subgraph.js\";\nimport { LastValueAfterFinish } from \"../channels/last_value.js\";\nimport {\n type SchemaMetaRegistry,\n InteropZodToStateDefinition,\n schemaMetaRegistry,\n} from \"./zod/meta.js\";\nimport { interrupt } from \"../interrupt.js\";\nimport { writer } from \"../writer.js\";\n\nconst ROOT = \"__root__\";\n\nexport type ChannelReducers<Channels extends object> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [K in keyof Channels]: SingleReducer<Channels[K], any>;\n};\n\nexport interface StateGraphArgs<Channels extends object | unknown> {\n channels: Channels extends object\n ? Channels extends unknown[]\n ? ChannelReducers<{ __root__: Channels }>\n : ChannelReducers<Channels>\n : ChannelReducers<{ __root__: Channels }>;\n}\n\nexport type StateGraphNodeSpec<RunInput, RunOutput> = NodeSpec<\n RunInput,\n RunOutput\n> & {\n input?: StateDefinition;\n retryPolicy?: RetryPolicy;\n cachePolicy?: CachePolicy;\n};\n\nexport type StateGraphAddNodeOptions<Nodes extends string = string> = {\n retryPolicy?: RetryPolicy;\n cachePolicy?: CachePolicy | boolean;\n // TODO: Fix generic typing for annotations\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n input?: AnnotationRoot<any> | InteropZodObject;\n} & AddNodeOptions<Nodes>;\n\nexport type StateGraphArgsWithStateSchema<\n SD extends StateDefinition,\n I extends StateDefinition,\n O extends StateDefinition\n> = {\n stateSchema: AnnotationRoot<SD>;\n input?: AnnotationRoot<I>;\n output?: AnnotationRoot<O>;\n};\n\nexport type StateGraphArgsWithInputOutputSchemas<\n SD extends StateDefinition,\n O extends StateDefinition = SD\n> = {\n input: AnnotationRoot<SD>;\n output: AnnotationRoot<O>;\n};\n\ntype ZodStateGraphArgsWithStateSchema<\n SD extends InteropZodObject,\n I extends SDZod,\n O extends SDZod\n> = { state: SD; input?: I; output?: O };\n\ntype SDZod = StateDefinition | InteropZodObject;\n\ntype ToStateDefinition<T> = T extends InteropZodObject\n ? InteropZodToStateDefinition<T>\n : T extends StateDefinition\n ? T\n : never;\n\ntype InterruptResumeType<T> = T extends typeof interrupt<unknown, infer R>\n ? R\n : unknown;\n\ntype InterruptInputType<T> = T extends typeof interrupt<infer I, unknown>\n ? I\n : unknown;\n\ntype InferWriterType<T> = T extends typeof writer<infer C> ? C : any; // eslint-disable-line @typescript-eslint/no-explicit-any\n\ntype NodeAction<\n S,\n U,\n C extends SDZod,\n InterruptType,\n WriterType\n> = RunnableLike<\n S,\n U extends object ? U & Record<string, any> : U, // eslint-disable-line @typescript-eslint/no-explicit-any\n Runtime<StateType<ToStateDefinition<C>>, InterruptType, WriterType>\n>;\n\ntype StrictNodeAction<\n S,\n U,\n C extends SDZod,\n Nodes extends string,\n InterruptType,\n WriterType\n> = RunnableLike<\n Prettify<S>,\n | U\n | Command<\n InterruptResumeType<InterruptType>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n U & Record<string, any>,\n Nodes\n >,\n Runtime<StateType<ToStateDefinition<C>>, InterruptType, WriterType>\n>;\n\nconst PartialStateSchema = Symbol.for(\"langgraph.state.partial\");\ntype PartialStateSchema = typeof PartialStateSchema;\n\ntype MergeReturnType<Prev, Curr> = Prev & Curr extends infer T\n ? { [K in keyof T]: T[K] } & unknown\n : never;\n\ntype Prettify<T> = {\n [K in keyof T]: T[K];\n // eslint-disable-next-line @typescript-eslint/ban-types\n} & {};\n\n/**\n * A graph whose nodes communicate by reading and writing to a shared state.\n * Each node takes a defined `State` as input and returns a `Partial<State>`.\n *\n * Each state key can optionally be annotated with a reducer function that\n * will be used to aggregate the values of that key received from multiple nodes.\n * The signature of a reducer function is (left: Value, right: UpdateValue) => Value.\n *\n * See {@link Annotation} for more on defining state.\n *\n * After adding nodes and edges to your graph, you must call `.compile()` on it before\n * you can use it.\n *\n * @example\n * ```ts\n * import {\n * type BaseMessage,\n * AIMessage,\n * HumanMessage,\n * } from \"@langchain/core/messages\";\n * import { StateGraph, Annotation } from \"@langchain/langgraph\";\n *\n * // Define a state with a single key named \"messages\" that will\n * // combine a returned BaseMessage or arrays of BaseMessages\n * const StateAnnotation = Annotation.Root({\n * sentiment: Annotation<string>,\n * messages: Annotation<BaseMessage[]>({\n * reducer: (left: BaseMessage[], right: BaseMessage | BaseMessage[]) => {\n * if (Array.isArray(right)) {\n * return left.concat(right);\n * }\n * return left.concat([right]);\n * },\n * default: () => [],\n * }),\n * });\n *\n * const graphBuilder = new StateGraph(StateAnnotation);\n *\n * // A node in the graph that returns an object with a \"messages\" key\n * // will update the state by combining the existing value with the returned one.\n * const myNode = (state: typeof StateAnnotation.State) => {\n * return {\n * messages: [new AIMessage(\"Some new response\")],\n * sentiment: \"positive\",\n * };\n * };\n *\n * const graph = graphBuilder\n * .addNode(\"myNode\", myNode)\n * .addEdge(\"__start__\", \"myNode\")\n * .addEdge(\"myNode\", \"__end__\")\n * .compile();\n *\n * await graph.invoke({ messages: [new HumanMessage(\"how are you?\")] });\n *\n * // {\n * // messages: [HumanMessage(\"how are you?\"), AIMessage(\"Some new response\")],\n * // sentiment: \"positive\",\n * // }\n * ```\n */\nexport class StateGraph<\n SD extends SDZod | unknown,\n S = SD extends SDZod ? StateType<ToStateDefinition<SD>> : SD,\n U = SD extends SDZod ? UpdateType<ToStateDefinition<SD>> : Partial<S>,\n N extends string = typeof START,\n I extends SDZod = SD extends SDZod ? ToStateDefinition<SD> : StateDefinition,\n O extends SDZod = SD extends SDZod ? ToStateDefinition<SD> : StateDefinition,\n C extends SDZod = StateDefinition,\n NodeReturnType = unknown,\n InterruptType = unknown,\n WriterType = unknown\n> extends Graph<N, S, U, StateGraphNodeSpec<S, U>, ToStateDefinition<C>> {\n channels: Record<string, BaseChannel> = {};\n\n // TODO: this doesn't dedupe edges as in py, so worth fixing at some point\n waitingEdges: Set<[N[], N]> = new Set();\n\n /** @internal */\n _schemaDefinition: StateDefinition;\n\n /** @internal */\n _schemaRuntimeDefinition: InteropZodObject | undefined;\n\n /** @internal */\n _inputDefinition: I;\n\n /** @internal */\n _inputRuntimeDefinition: InteropZodObject | PartialStateSchema | undefined;\n\n /** @internal */\n _outputDefinition: O;\n\n /** @internal */\n _outputRuntimeDefinition: InteropZodObject | undefined;\n\n /**\n * Map schemas to managed values\n * @internal\n */\n _schemaDefinitions = new Map();\n\n /** @internal */\n _metaRegistry: SchemaMetaRegistry = schemaMetaRegistry;\n\n /** @internal Used only for typing. */\n _configSchema: ToStateDefinition<C> | undefined;\n\n /** @internal */\n _configRuntimeSchema: InteropZodObject | undefined;\n\n /** @internal */\n _interrupt: InterruptType;\n\n /** @internal */\n _writer: WriterType;\n\n declare Node: StrictNodeAction<S, U, C, N, InterruptType, WriterType>;\n\n constructor(\n state: SD extends StateDefinition ? AnnotationRoot<SD> : never,\n options?: {\n context?: C | AnnotationRoot<ToStateDefinition<C>>;\n input?: I | AnnotationRoot<ToStateDefinition<I>>;\n output?: O | AnnotationRoot<ToStateDefinition<O>>;\n\n interrupt?: InterruptType;\n writer?: WriterType;\n\n nodes?: N[];\n }\n );\n\n constructor(\n state: SD extends InteropZodObject ? SD : never,\n options?: {\n context?: C | AnnotationRoot<ToStateDefinition<C>>;\n input?: I | AnnotationRoot<ToStateDefinition<I>>;\n output?: O | AnnotationRoot<ToStateDefinition<O>>;\n\n interrupt?: InterruptType;\n writer?: WriterType;\n\n nodes?: N[];\n }\n );\n\n constructor(\n fields: SD extends StateDefinition\n ? StateGraphArgsWithInputOutputSchemas<SD, ToStateDefinition<O>>\n : never,\n contextSchema?: C | AnnotationRoot<ToStateDefinition<C>>\n );\n\n constructor(\n fields: SD extends StateDefinition\n ?\n | AnnotationRoot<SD>\n | StateGraphArgsWithStateSchema<\n SD,\n ToStateDefinition<I>,\n ToStateDefinition<O>\n >\n : never,\n contextSchema?: C | AnnotationRoot<ToStateDefinition<C>>\n );\n\n /** @deprecated Use `Annotation.Root` or `zod` for state definition instead. */\n constructor(\n fields: SD extends StateDefinition\n ? SD | StateGraphArgs<S>\n : StateGraphArgs<S>,\n contextSchema?: C | AnnotationRoot<ToStateDefinition<C>>\n );\n\n constructor(\n fields: SD extends InteropZodObject\n ? SD | ZodStateGraphArgsWithStateSchema<SD, I, O>\n : never,\n contextSchema?: C | AnnotationRoot<ToStateDefinition<C>>\n );\n\n constructor(\n fields: SD extends InteropZodObject\n ? SD | ZodStateGraphArgsWithStateSchema<SD, I, O>\n : SD extends StateDefinition\n ?\n | SD\n | AnnotationRoot<SD>\n | StateGraphArgs<S>\n | StateGraphArgsWithStateSchema<\n SD,\n ToStateDefinition<I>,\n ToStateDefinition<O>\n >\n | StateGraphArgsWithInputOutputSchemas<SD, ToStateDefinition<O>>\n : StateGraphArgs<S>,\n contextSchema?:\n | C\n | AnnotationRoot<ToStateDefinition<C>>\n | {\n input?: I | AnnotationRoot<ToStateDefinition<I>>;\n output?: O | AnnotationRoot<ToStateDefinition<O>>;\n context?: C | AnnotationRoot<ToStateDefinition<C>>;\n interrupt?: InterruptType;\n writer?: WriterType;\n nodes?: N[];\n }\n ) {\n super();\n\n if (isZodStateGraphArgsWithStateSchema(fields)) {\n const stateDef = this._metaRegistry.getChannelsForSchema(fields.state);\n const inputDef =\n fields.input != null\n ? this._metaRegistry.getChannelsForSchema(fields.input)\n : stateDef;\n const outputDef =\n fields.output != null\n ? this._metaRegistry.getChannelsForSchema(fields.output)\n : stateDef;\n\n this._schemaDefinition = stateDef;\n this._schemaRuntimeDefinition = fields.state;\n\n this._inputDefinition = inputDef as I;\n this._inputRuntimeDefinition = fields.input ?? PartialStateSchema;\n\n this._outputDefinition = outputDef as O;\n this._outputRuntimeDefinition = fields.output ?? fields.state;\n } else if (isInteropZodObject(fields)) {\n const stateDef = this._metaRegistry.getChannelsForSchema(fields);\n\n this._schemaDefinition = stateDef;\n this._schemaRuntimeDefinition = fields;\n\n this._inputDefinition = stateDef as I;\n this._inputRuntimeDefinition = PartialStateSchema;\n\n this._outputDefinition = stateDef as O;\n this._outputRuntimeDefinition = fields;\n } else if (\n isStateGraphArgsWithInputOutputSchemas<\n SD extends StateDefinition ? SD : never,\n O extends StateDefinition ? O : never\n >(fields)\n ) {\n this._schemaDefinition = fields.input.spec;\n this._inputDefinition = fields.input.spec as unknown as I;\n this._outputDefinition = fields.output.spec;\n } else if (isStateGraphArgsWithStateSchema(fields)) {\n this._schemaDefinition = fields.stateSchema.spec;\n this._inputDefinition = (fields.input?.spec ??\n this._schemaDefinition) as I;\n this._outputDefinition = (fields.output?.spec ??\n this._schemaDefinition) as O;\n } else if (isStateDefinition(fields) || isAnnotationRoot(fields)) {\n const spec = isAnnotationRoot(fields) ? fields.spec : fields;\n this._schemaDefinition = spec;\n } else if (isStateGraphArgs(fields)) {\n const spec = _getChannels(fields.channels);\n this._schemaDefinition = spec;\n } else {\n throw new Error(\n \"Invalid StateGraph input. Make sure to pass a valid Annotation.Root or Zod schema.\"\n );\n }\n\n this._inputDefinition ??= this._schemaDefinition as I;\n this._outputDefinition ??= this._schemaDefinition as O;\n\n this._addSchema(this._schemaDefinition);\n this._addSchema(this._inputDefinition);\n this._addSchema(this._outputDefinition);\n\n function isOptions(options: unknown): options is {\n context?: C | AnnotationRoot<ToStateDefinition<C>>;\n input?: I | AnnotationRoot<ToStateDefinition<I>>;\n output?: O | AnnotationRoot<ToStateDefinition<O>>;\n interrupt?: InterruptType;\n writer?: WriterType;\n nodes?: N[];\n } {\n return (\n typeof options === \"object\" &&\n options != null &&\n !(\"spec\" in options) &&\n !isInteropZodObject(options)\n );\n }\n\n // Handle runtime config options\n\n if (isOptions(contextSchema)) {\n if (isInteropZodObject(contextSchema.context)) {\n this._configRuntimeSchema = contextSchema.context;\n }\n } else if (isInteropZodObject(contextSchema)) {\n this._configRuntimeSchema = contextSchema;\n }\n }\n\n get allEdges(): Set<[string, string]> {\n return new Set([\n ...this.edges,\n ...Array.from(this.waitingEdges).flatMap(([starts, end]) =>\n starts.map((start) => [start, end] as [string, string])\n ),\n ]);\n }\n\n _addSchema(stateDefinition: SDZod) {\n if (this._schemaDefinitions.has(stateDefinition)) {\n return;\n }\n // TODO: Support managed values\n this._schemaDefinitions.set(stateDefinition, stateDefinition);\n for (const [key, val] of Object.entries(stateDefinition)) {\n let channel;\n if (typeof val === \"function\") {\n channel = val();\n } else {\n channel = val;\n }\n if (this.channels[key] !== undefined) {\n if (this.channels[key] !== channel) {\n if (channel.lc_graph_name !== \"LastValue\") {\n throw new Error(\n `Channel \"${key}\" already exists with a different type.`\n );\n }\n }\n } else {\n this.channels[key] = channel;\n }\n }\n }\n\n override addNode<\n K extends string,\n NodeMap extends Record<K, NodeAction<S, U, C, InterruptType, WriterType>>\n >(\n nodes: NodeMap\n ): StateGraph<\n SD,\n S,\n U,\n N | K,\n I,\n O,\n C,\n MergeReturnType<\n NodeReturnType,\n {\n [key in keyof NodeMap]: NodeMap[key] extends NodeAction<\n S,\n infer U,\n C,\n InterruptType,\n WriterType\n >\n ? U\n : never;\n }\n >\n >;\n\n override addNode<K extends string, NodeInput = S, NodeOutput extends U = U>(\n nodes:\n | [\n key: K,\n action: NodeAction<\n NodeInput,\n NodeOutput,\n C,\n InterruptType,\n WriterType\n >,\n options?: StateGraphAddNodeOptions\n ][]\n ): StateGraph<\n SD,\n S,\n U,\n N | K,\n I,\n O,\n C,\n MergeReturnType<NodeReturnType, { [key in K]: NodeOutput }>\n >;\n\n override addNode<K extends string, NodeInput = S, NodeOutput extends U = U>(\n key: K,\n action: NodeAction<NodeInput, NodeOutput, C, InterruptType, WriterType>,\n options?: StateGraphAddNodeOptions\n ): StateGraph<\n SD,\n S,\n U,\n N | K,\n I,\n O,\n C,\n MergeReturnType<NodeReturnType, { [key in K]: NodeOutput }>\n >;\n\n override addNode<K extends string, NodeInput = S>(\n key: K,\n action: NodeAction<NodeInput, U, C, InterruptType, WriterType>,\n options?: StateGraphAddNodeOptions\n ): StateGraph<SD, S, U, N | K, I, O, C, NodeReturnType>;\n\n override addNode<K extends string, NodeInput = S, NodeOutput extends U = U>(\n ...args:\n | [\n key: K,\n action: NodeAction<\n NodeInput,\n NodeOutput,\n C,\n InterruptType,\n WriterType\n >,\n options?: StateGraphAddNodeOptions\n ]\n | [\n nodes:\n | Record<K, NodeAction<NodeInput, U, C, InterruptType, WriterType>>\n | [\n key: K,\n action: NodeAction<NodeInput, U, C, InterruptType, WriterType>,\n options?: StateGraphAddNodeOptions\n ][]\n ]\n ): StateGraph<SD, S, U, N | K, I, O, C> {\n function isMultipleNodes(\n args: unknown[]\n ): args is [\n nodes:\n | Record<K, NodeAction<NodeInput, U, C, InterruptType, WriterType>>\n | [\n key: K,\n action: NodeAction<NodeInput, U, C, InterruptType, WriterType>,\n options?: AddNodeOptions\n ][]\n ] {\n return args.length >= 1 && typeof args[0] !== \"string\";\n }\n\n const nodes = (\n isMultipleNodes(args) // eslint-disable-line no-nested-ternary\n ? Array.isArray(args[0])\n ? args[0]\n : Object.entries(args[0]).map(([key, action]) => [key, action])\n : [[args[0], args[1], args[2]]]\n ) as [\n K,\n NodeAction<NodeInput, U, C, InterruptType, WriterType>,\n StateGraphAddNodeOptions | undefined\n ][];\n\n if (nodes.length === 0) {\n throw new Error(\"No nodes provided in `addNode`\");\n }\n\n for (const [key, action, options] of nodes) {\n if (key in this.channels) {\n throw new Error(\n `${key} is already being used as a state attribute (a.k.a. a channel), cannot also be used as a node name.`\n );\n }\n\n for (const reservedChar of [\n CHECKPOINT_NAMESPACE_SEPARATOR,\n CHECKPOINT_NAMESPACE_END,\n ]) {\n if (key.includes(reservedChar)) {\n throw new Error(\n `\"${reservedChar}\" is a reserved character and is not allowed in node names.`\n );\n }\n }\n this.warnIfCompiled(\n `Adding a node to a graph that has already been compiled. This will not be reflected in the compiled graph.`\n );\n\n if (key in this.nodes) {\n throw new Error(`Node \\`${key}\\` already present.`);\n }\n if (key === END || key === START) {\n throw new Error(`Node \\`${key}\\` is reserved.`);\n }\n\n let inputSpec = this._schemaDefinition;\n if (options?.input !== undefined) {\n if (isInteropZodObject(options.input)) {\n inputSpec = this._metaRegistry.getChannelsForSchema(options.input);\n } else if (options.input.spec !== undefined) {\n inputSpec = options.input.spec;\n }\n }\n if (inputSpec !== undefined) {\n this._addSchema(inputSpec);\n }\n\n let runnable;\n if (Runnable.isRunnable(action)) {\n runnable = action;\n } else if (typeof action === \"function\") {\n runnable = new RunnableCallable({\n func: action,\n name: key,\n trace: false,\n });\n } else {\n runnable = _coerceToRunnable(action);\n }\n\n let cachePolicy = options?.cachePolicy;\n if (typeof cachePolicy === \"boolean\") {\n cachePolicy = cachePolicy ? {} : undefined;\n }\n\n const nodeSpec: StateGraphNodeSpec<S, U> = {\n runnable: runnable as unknown as Runnable<S, U>,\n retryPolicy: options?.retryPolicy,\n cachePolicy,\n metadata: options?.metadata,\n input: inputSpec ?? this._schemaDefinition,\n subgraphs: isPregelLike(runnable)\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [runnable as any]\n : options?.subgraphs,\n ends: options?.ends,\n defer: options?.defer,\n };\n\n this.nodes[key as unknown as N] = nodeSpec;\n }\n\n return this as StateGraph<SD, S, U, N | K, I, O, C>;\n }\n\n override addEdge(\n startKey: typeof START | N | N[],\n endKey: N | typeof END\n ): this {\n if (typeof startKey === \"string\") {\n return super.addEdge(startKey, endKey);\n }\n\n if (this.compiled) {\n console.warn(\n \"Adding an edge to a graph that has already been compiled. This will \" +\n \"not be reflected in the compiled graph.\"\n );\n }\n\n for (const start of startKey) {\n if (start === END) {\n throw new Error(\"END cannot be a start node\");\n }\n if (!Object.keys(this.nodes).some((node) => node === start)) {\n throw new Error(`Need to add a node named \"${start}\" first`);\n }\n }\n if (endKey === END) {\n throw new Error(\"END cannot be an end node\");\n }\n if (!Object.keys(this.nodes).some((node) => node === endKey)) {\n throw new Error(`Need to add a node named \"${endKey}\" first`);\n }\n\n this.waitingEdges.add([startKey, endKey]);\n\n return this;\n }\n\n addSequence<K extends string, NodeInput = S, NodeOutput extends U = U>(\n nodes: [\n key: K,\n action: NodeAction<NodeInput, NodeOutput, C, InterruptType, WriterType>,\n options?: StateGraphAddNodeOptions\n ][]\n ): StateGraph<\n SD,\n S,\n U,\n N | K,\n I,\n O,\n C,\n MergeReturnType<NodeReturnType, { [key in K]: NodeOutput }>\n >;\n\n addSequence<\n K extends string,\n NodeMap extends Record<K, NodeAction<S, U, C, InterruptType, WriterType>>\n >(\n nodes: NodeMap\n ): StateGraph<\n SD,\n S,\n U,\n N | K,\n I,\n O,\n C,\n MergeReturnType<\n NodeReturnType,\n {\n [key in keyof NodeMap]: NodeMap[key] extends NodeAction<\n S,\n infer U,\n C,\n InterruptType,\n WriterType\n >\n ? U\n : never;\n }\n >\n >;\n\n addSequence<K extends string, NodeInput = S, NodeOutput extends U = U>(\n nodes:\n | [\n key: K,\n action: NodeAction<\n NodeInput,\n NodeOutput,\n C,\n InterruptType,\n WriterType\n >,\n options?: StateGraphAddNodeOptions\n ][]\n | Record<\n K,\n NodeAction<NodeInput, NodeOutput, C, InterruptType, WriterType>\n >\n ): StateGraph<\n SD,\n S,\n U,\n N | K,\n I,\n O,\n C,\n MergeReturnType<NodeReturnType, { [key in K]: NodeOutput }>\n > {\n const parsedNodes = Array.isArray(nodes) ? nodes : Object.entries(nodes);\n\n if (parsedNodes.length === 0) {\n throw new Error(\"Sequence requires at least one node.\");\n }\n\n let previousNode: N | undefined;\n for (const [key, action, options] of parsedNodes) {\n if (key in this.nodes) {\n throw new Error(\n `Node names must be unique: node with the name \"${key}\" already exists.`\n );\n }\n\n const validKey = key as unknown as N;\n this.addNode(\n validKey,\n action as NodeAction<S, U, C, InterruptType, WriterType>,\n options\n );\n if (previousNode != null) {\n this.addEdge(previousNode, validKey);\n }\n\n previousNode = validKey;\n }\n\n return this as StateGraph<\n SD,\n S,\n U,\n N | K,\n I,\n O,\n C,\n MergeReturnType<NodeReturnType, { [key in K]: NodeOutput }>\n >;\n }\n\n override compile({\n checkpointer,\n store,\n cache,\n interruptBefore,\n interruptAfter,\n name,\n description,\n }: {\n checkpointer?: BaseCheckpointSaver | boolean;\n store?: BaseStore;\n cache?: BaseCache;\n interruptBefore?: N[] | All;\n interruptAfter?: N[] | All;\n name?: string;\n description?: string;\n } = {}): CompiledStateGraph<\n Prettify<S>,\n Prettify<U>,\n N,\n I,\n O,\n C,\n NodeReturnType,\n InterruptType,\n WriterType\n > {\n // validate the graph\n this.validate([\n ...(Array.isArray(interruptBefore) ? interruptBefore : []),\n ...(Array.isArray(interruptAfter) ? interruptAfter : []),\n ]);\n\n // prepare output channels\n const outputKeys = Object.keys(\n this._schemaDefinitions.get(this._outputDefinition)\n );\n const outputChannels =\n outputKeys.length === 1 && outputKeys[0] === ROOT ? ROOT : outputKeys;\n\n const streamKeys = Object.keys(this.channels);\n const streamChannels =\n streamKeys.length === 1 && streamKeys[0] === ROOT ? ROOT : streamKeys;\n\n // create empty compiled graph\n const compiled = new CompiledStateGraph<S, U, N, I, O, C, NodeReturnType>({\n builder: this,\n checkpointer,\n interruptAfter,\n interruptBefore,\n autoValidate: false,\n nodes: {} as Record<N | typeof START, PregelNode<S, U>>,\n channels: {\n ...this.channels,\n [START]: new EphemeralValue(),\n } as Record<N | typeof START | typeof END | string, BaseChannel>,\n inputChannels: START,\n outputChannels,\n streamChannels,\n streamMode: \"updates\",\n store,\n cache,\n name,\n description,\n });\n\n // attach nodes, edges and branches\n compiled.attachNode(START);\n for (const [key, node] of Object.entries<StateGraphNodeSpec<S, U>>(\n this.nodes\n )) {\n compiled.attachNode(key as N, node);\n }\n compiled.attachBranch(START, SELF, _getControlBranch() as Branch<S, N>, {\n withReader: false,\n });\n for (const [key] of Object.entries<StateGraphNodeSpec<S, U>>(this.nodes)) {\n compiled.attachBranch(\n key as N,\n SELF,\n _getControlBranch() as Branch<S, N>,\n {\n withReader: false,\n }\n );\n }\n for (const [start, end] of this.edges) {\n compiled.attachEdge(start, end);\n }\n for (const [starts, end] of this.waitingEdges) {\n compiled.attachEdge(starts, end);\n }\n for (const [start, branches] of Object.entries(this.branches)) {\n for (const [name, branch] of Object.entries(branches)) {\n compiled.attachBranch(start as N, name, branch);\n }\n }\n\n return compiled.validate();\n }\n}\n\nfunction _getChannels<Channels extends Record<string, unknown> | unknown>(\n schema: StateGraphArgs<Channels>[\"channels\"]\n): Record<string, BaseChannel> {\n const channels: Record<string, BaseChannel> = {};\n for (const [name, val] of Object.entries(schema)) {\n if (name === ROOT) {\n channels[name] = getChannel<Channels>(val as SingleReducer<Channels>);\n } else {\n const key = name as keyof Channels;\n channels[name] = getChannel<Channels[typeof key]>(\n val as SingleReducer<Channels[typeof key]>\n );\n }\n }\n return channels;\n}\n\n/**\n * Final result from building and compiling a {@link StateGraph}.\n * Should not be instantiated directly, only using the StateGraph `.compile()`\n * instance method.\n */\nexport class CompiledStateGraph<\n S,\n U,\n N extends string = typeof START,\n I extends SDZod = StateDefinition,\n O extends SDZod = StateDefinition,\n C extends SDZod = StateDefinition,\n NodeReturnType = unknown,\n InterruptType = unknown,\n WriterType = unknown\n> extends CompiledGraph<\n N,\n S,\n U,\n StateType<ToStateDefinition<C>>,\n UpdateType<ToStateDefinition<I>>,\n StateType<ToStateDefinition<O>>,\n NodeReturnType,\n CommandInstance<InterruptResumeType<InterruptType>, Prettify<U>, N>,\n InferWriterType<WriterType>\n> {\n declare builder: StateGraph<unknown, S, U, N, I, O, C, NodeReturnType>;\n\n /**\n * The description of the compiled graph.\n * This is used by the supervisor agent to describe the handoff to the agent.\n */\n description?: string;\n\n /** @internal */\n _metaRegistry: SchemaMetaRegistry = schemaMetaRegistry;\n\n constructor({\n description,\n ...rest\n }: { description?: string } & ConstructorParameters<\n typeof CompiledGraph<\n N,\n S,\n U,\n StateType<ToStateDefinition<C>>,\n UpdateType<ToStateDefinition<I>>,\n StateType<ToStateDefinition<O>>,\n NodeReturnType,\n CommandInstance<InterruptResumeType<InterruptType>, Prettify<U>, N>,\n InferWriterType<WriterType>\n >\n >[0]) {\n super(rest);\n this.description = description;\n }\n\n attachNode(key: typeof START, node?: never): void;\n\n attachNode(key: N, node: StateGraphNodeSpec<S, U>): void;\n\n attachNode(key: N | typeof START, node?: StateGraphNodeSpec<S, U>): void {\n let outputKeys: string[];\n if (key === START) {\n // Get input schema keys excluding managed values\n outputKeys = Object.entries(\n this.builder._schemaDefinitions.get(this.builder._inputDefinition)\n ).map(([k]) => k);\n } else {\n outputKeys = Object.keys(this.builder.channels);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _getRoot(input: unknown): [string, any][] | null {\n if (isCommand(input)) {\n if (input.graph === Command.PARENT) {\n return null;\n }\n return input._updateAsTuples();\n } else if (\n Array.isArray(input) &&\n input.length > 0 &&\n input.some((i) => isCommand(i))\n ) {\n const updates: [string, unknown][] = [];\n for (const i of input) {\n if (isCommand(i)) {\n if (i.graph === Command.PARENT) {\n continue;\n }\n updates.push(...i._updateAsTuples());\n } else {\n updates.push([ROOT, i]);\n }\n }\n return updates;\n } else if (input != null) {\n return [[ROOT, input]];\n }\n return null;\n }\n\n // to avoid name collision below\n const nodeKey = key;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _getUpdates(input: U): [string, any][] | null {\n if (!input) {\n return null;\n } else if (isCommand(input)) {\n if (input.graph === Command.PARENT) {\n return null;\n }\n return input._updateAsTuples().filter(([k]) => outputKeys.includes(k));\n } else if (\n Array.isArray(input) &&\n input.length > 0 &&\n input.some(isCommand)\n ) {\n const updates: [string, unknown][] = [];\n for (const item of input) {\n if (isCommand(item)) {\n if (item.graph === Command.PARENT) {\n continue;\n }\n updates.push(\n ...item._updateAsTuples().filter(([k]) => outputKeys.includes(k))\n );\n } else {\n const itemUpdates = _getUpdates(item);\n if (itemUpdates) {\n updates.push(...(itemUpdates ?? []));\n }\n }\n }\n return updates;\n } else if (typeof input === \"object\" && !Array.isArray(input)) {\n return Object.entries(input).filter(([k]) => outputKeys.includes(k));\n } else {\n const typeofInput = Array.isArray(input) ? \"array\" : typeof input;\n throw new InvalidUpdateError(\n `Expected node \"${nodeKey.toString()}\" to return an object or an array containing at least one Command object, received ${typeofInput}`,\n {\n lc_error_code: \"INVALID_GRAPH_NODE_RETURN_VALUE\",\n }\n );\n }\n }\n\n const stateWriteEntries: (ChannelWriteTupleEntry | ChannelWriteEntry)[] = [\n {\n value: PASSTHROUGH,\n mapper: new RunnableCallable({\n func:\n outputKeys.length && outputKeys[0] === ROOT\n ? _getRoot\n : _getUpdates,\n trace: false,\n recurse: false,\n }),\n },\n ];\n\n // add node and output channel\n if (key === START) {\n this.nodes[key] = new PregelNode<S, U>({\n tags: [TAG_HIDDEN],\n triggers: [START],\n channels: [START],\n writers: [new ChannelWrite(stateWriteEntries, [TAG_HIDDEN])],\n });\n } else {\n const inputDefinition = node?.input ?? this.builder._schemaDefinition;\n const inputValues = Object.fromEntries(\n Object.keys(this.builder._schemaDefinitions.get(inputDefinition)).map(\n (k) => [k, k]\n )\n );\n const isSingleInput =\n Object.keys(inputValues).length === 1 && ROOT in inputValues;\n const branchChannel = `branch:to:${key}` as string | N;\n this.channels[branchChannel] = node?.defer\n ? new LastValueAfterFinish()\n : new EphemeralValue(false);\n this.nodes[key] = new PregelNode<S, U>({\n triggers: [branchChannel],\n // read state keys\n channels: isSingleInput ? Object.keys(inputValues) : inputValues,\n // publish to state keys\n writers: [new ChannelWrite(stateWriteEntries, [TAG_HIDDEN])],\n mapper: isSingleInput\n ? undefined\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (input: Record<string, any>) => {\n return Object.fromEntries(\n Object.entries(input).filter(([k]) => k in inputValues)\n );\n },\n bound: node?.runnable,\n metadata: node?.metadata,\n retryPolicy: node?.retryPolicy,\n cachePolicy: node?.cachePolicy,\n subgraphs: node?.subgraphs,\n ends: node?.ends,\n });\n }\n }\n\n attachEdge(starts: N | N[] | \"__start__\", end: N | \"__end__\"): void {\n if (end === END) return;\n if (typeof starts === \"string\") {\n this.nodes[starts].writers.push(\n new ChannelWrite(\n [{ channel: `branch:to:${end}`, value: null }],\n [TAG_HIDDEN]\n )\n );\n } else if (Array.isArray(starts)) {\n const channelName = `join:${starts.join(\"+\")}:${end}`;\n // register channel\n this.channels[channelName as string | N] = this.builder.nodes[end].defer\n ? new NamedBarrierValueAfterFinish(new Set(starts))\n : new NamedBarrierValue(new Set(starts));\n // subscribe to channel\n this.nodes[end].triggers.push(channelName);\n // publish to channel\n for (const start of starts) {\n this.nodes[start].writers.push(\n new ChannelWrite(\n [{ channel: channelName, value: start }],\n [TAG_HIDDEN]\n )\n );\n }\n }\n }\n\n attachBranch(\n start: N | typeof START,\n _: string,\n branch: Branch<S, N>,\n options: { withReader?: boolean } = { withReader: true }\n ): void {\n const branchWriter = async (\n packets: (string | Send)[],\n config: LangGraphRunnableConfig\n ) => {\n const filteredPackets = packets.filter((p) => p !== END);\n if (!filteredPackets.length) return;\n\n const writes: (ChannelWriteEntry | Send)[] = filteredPackets.map((p) => {\n if (_isSend(p)) return p;\n return { channel: p === END ? p : `branch:to:${p}`, value: start };\n });\n await ChannelWrite.doWrite(\n { ...config, tags: (config.tags ?? []).concat([TAG_HIDDEN]) },\n writes\n );\n };\n // attach branch publisher\n this.nodes[start].writers.push(\n branch.run(\n branchWriter,\n // reader\n options.withReader\n ? (config) =>\n ChannelRead.doRead<S>(\n config,\n this.streamChannels ?? this.outputChannels,\n true\n )\n : undefined\n )\n );\n }\n\n protected async _validateInput(\n input: UpdateType<ToStateDefinition<I>>\n ): Promise<UpdateType<ToStateDefinition<I>>> {\n if (input == null) return input;\n\n const schema = (() => {\n const input = this.builder._inputRuntimeDefinition;\n const schema = this.builder._schemaRuntimeDefinition;\n\n const apply = (schema: InteropZodObject | undefined) => {\n if (schema == null) return undefined;\n return this._metaRegistry.getExtendedChannelSchemas(schema, {\n withReducerSchema: true,\n });\n };\n\n if (isInteropZodObject(input)) return apply(input);\n if (input === PartialStateSchema) {\n return interopZodObjectPartial(apply(schema)!);\n }\n return undefined;\n })();\n\n if (isCommand(input)) {\n const parsedInput = input;\n if (input.update && schema != null)\n parsedInput.update = interopParse(schema, input.update);\n return parsedInput;\n }\n if (schema != null) return interopParse(schema, input);\n return input;\n }\n\n public isInterrupted(input: unknown): input is {\n [INTERRUPT]: Interrupt<InterruptInputType<InterruptType>>[];\n } {\n return isInterrupted(input);\n }\n\n protected async _validateContext(\n config: Partial<Record<string, unknown>>\n ): Promise<Partial<Record<string, unknown>>> {\n const configSchema = this.builder._configRuntimeSchema;\n if (isInteropZodObject(configSchema)) interopParse(configSchema, config);\n return config;\n }\n}\n\nfunction isStateDefinition(obj: unknown): obj is StateDefinition {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n !Array.isArray(obj) &&\n Object.keys(obj).length > 0 &&\n Object.values(obj).every((v) => typeof v === \"function\" || isBaseChannel(v))\n );\n}\n\nfunction isAnnotationRoot<SD extends StateDefinition>(\n obj: unknown | AnnotationRoot<SD>\n): obj is AnnotationRoot<SD> {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n \"lc_graph_name\" in obj &&\n obj.lc_graph_name === \"AnnotationRoot\"\n );\n}\n\nfunction isStateGraphArgs<Channels extends object | unknown>(\n obj: unknown | StateGraphArgs<Channels>\n): obj is StateGraphArgs<Channels> {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n (obj as StateGraphArgs<Channels>).channels !== undefined\n );\n}\n\nfunction isStateGraphArgsWithStateSchema<\n SD extends StateDefinition,\n I extends StateDefinition,\n O extends StateDefinition\n>(\n obj: unknown | StateGraphArgsWithStateSchema<SD, I, O>\n): obj is StateGraphArgsWithStateSchema<SD, I, O> {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n (obj as StateGraphArgsWithStateSchema<SD, I, O>).stateSchema !== undefined\n );\n}\n\nfunction isStateGraphArgsWithInputOutputSchemas<\n SD extends StateDefinition,\n O extends StateDefinition\n>(\n obj: unknown | StateGraphArgsWithInputOutputSchemas<SD, O>\n): obj is StateGraphArgsWithInputOutputSchemas<SD, O> {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (obj as any).stateSchema === undefined &&\n (obj as StateGraphArgsWithInputOutputSchemas<SD, O>).input !== undefined &&\n (obj as StateGraphArgsWithInputOutputSchemas<SD, O>).output !== undefined\n );\n}\n\nfunction isZodStateGraphArgsWithStateSchema<\n SD extends InteropZodObject,\n I extends InteropZodObject,\n O extends InteropZodObject\n>(value: unknown): value is ZodStateGraphArgsWithStateSchema<SD, I, O> {\n if (typeof value !== \"object\" || value == null) {\n return false;\n }\n\n if (!(\"state\" in value) || !isInteropZodObject(value.state)) {\n return false;\n }\n\n if (\"input\" in value && !isInteropZodObject(value.input)) {\n return false;\n }\n\n if (\"output\" in value && !isInteropZodObject(value.output)) {\n return false;\n }\n\n return true;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _controlBranch(value: any): (string | Send)[] {\n if (_isSend(value)) {\n return [value];\n }\n const commands = [];\n if (isCommand(value)) {\n commands.push(value);\n } else if (Array.isArray(value)) {\n commands.push(...value.filter(isCommand));\n }\n const destinations: (string | Send)[] = [];\n\n for (const command of commands) {\n if (command.graph === Command.PARENT) {\n throw new ParentCommand(command);\n }\n\n if (_isSend(command.goto)) {\n destinations.push(command.goto);\n } else if (typeof command.goto === \"string\") {\n destinations.push(command.goto);\n } else {\n if (Array.isArray(command.goto)) {\n destinations.push(...command.goto);\n }\n }\n }\n return destinations;\n}\n\nfunction _getControlBranch() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const CONTROL_BRANCH_PATH = new RunnableCallable<any, (string | Send)[]>({\n func: _controlBranch,\n tags: [TAG_HIDDEN],\n trace: false,\n recurse: false,\n name: \"<control_branch>\",\n });\n return new Branch({\n path: CONTROL_BRANCH_PATH,\n });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"state.js","names":["args","nodeSpec: StateGraphNodeSpec<S, U>","previousNode: N | undefined","name","channels: Record<string, BaseChannel>","outputKeys: string[]","updates: [string, unknown][]","stateWriteEntries: (ChannelWriteTupleEntry | ChannelWriteEntry)[]","writes: (ChannelWriteEntry | Send)[]","input","schema","destinations: (string | Send)[]"],"sources":["../../src/graph/state.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { _coerceToRunnable, Runnable } from \"@langchain/core/runnables\";\nimport {\n All,\n type BaseCache,\n BaseCheckpointSaver,\n BaseStore,\n} from \"@langchain/langgraph-checkpoint\";\nimport {\n type InteropZodObject,\n interopParse,\n interopZodObjectPartial,\n isInteropZodObject,\n} from \"@langchain/core/utils/types\";\nimport type {\n RunnableLike,\n LangGraphRunnableConfig,\n Runtime,\n} from \"../pregel/runnable_types.js\";\nimport { BaseChannel, isBaseChannel } from \"../channels/base.js\";\nimport {\n CompiledGraph,\n Graph,\n Branch,\n AddNodeOptions,\n NodeSpec,\n} from \"./graph.js\";\nimport {\n ChannelWrite,\n ChannelWriteEntry,\n ChannelWriteTupleEntry,\n PASSTHROUGH,\n} from \"../pregel/write.js\";\nimport { ChannelRead, PregelNode } from \"../pregel/read.js\";\nimport {\n NamedBarrierValue,\n NamedBarrierValueAfterFinish,\n} from \"../channels/named_barrier_value.js\";\nimport { EphemeralValue } from \"../channels/ephemeral_value.js\";\nimport { RunnableCallable } from \"../utils.js\";\nimport {\n isCommand,\n _isSend,\n CHECKPOINT_NAMESPACE_END,\n CHECKPOINT_NAMESPACE_SEPARATOR,\n Command,\n END,\n SELF,\n Send,\n START,\n TAG_HIDDEN,\n CommandInstance,\n isInterrupted,\n Interrupt,\n INTERRUPT,\n} from \"../constants.js\";\nimport { InvalidUpdateError, ParentCommand } from \"../errors.js\";\nimport {\n AnnotationRoot,\n getChannel,\n SingleReducer,\n StateDefinition,\n StateType,\n UpdateType,\n} from \"./annotation.js\";\nimport type { CachePolicy, RetryPolicy } from \"../pregel/utils/index.js\";\nimport { isPregelLike } from \"../pregel/utils/subgraph.js\";\nimport { LastValueAfterFinish } from \"../channels/last_value.js\";\nimport {\n type SchemaMetaRegistry,\n InteropZodToStateDefinition,\n schemaMetaRegistry,\n} from \"./zod/meta.js\";\nimport type {\n InferInterruptResumeType,\n InferInterruptInputType,\n} from \"../interrupt.js\";\nimport type { InferWriterType } from \"../writer.js\";\n\nconst ROOT = \"__root__\";\n\nexport type ChannelReducers<Channels extends object> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [K in keyof Channels]: SingleReducer<Channels[K], any>;\n};\n\nexport interface StateGraphArgs<Channels extends object | unknown> {\n channels: Channels extends object\n ? Channels extends unknown[]\n ? ChannelReducers<{ __root__: Channels }>\n : ChannelReducers<Channels>\n : ChannelReducers<{ __root__: Channels }>;\n}\n\nexport type StateGraphNodeSpec<RunInput, RunOutput> = NodeSpec<\n RunInput,\n RunOutput\n> & {\n input?: StateDefinition;\n retryPolicy?: RetryPolicy;\n cachePolicy?: CachePolicy;\n};\n\nexport type StateGraphAddNodeOptions<Nodes extends string = string> = {\n retryPolicy?: RetryPolicy;\n cachePolicy?: CachePolicy | boolean;\n // TODO: Fix generic typing for annotations\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n input?: AnnotationRoot<any> | InteropZodObject;\n} & AddNodeOptions<Nodes>;\n\nexport type StateGraphArgsWithStateSchema<\n SD extends StateDefinition,\n I extends StateDefinition,\n O extends StateDefinition\n> = {\n stateSchema: AnnotationRoot<SD>;\n input?: AnnotationRoot<I>;\n output?: AnnotationRoot<O>;\n};\n\nexport type StateGraphArgsWithInputOutputSchemas<\n SD extends StateDefinition,\n O extends StateDefinition = SD\n> = {\n input: AnnotationRoot<SD>;\n output: AnnotationRoot<O>;\n};\n\ntype ZodStateGraphArgsWithStateSchema<\n SD extends InteropZodObject,\n I extends SDZod,\n O extends SDZod\n> = { state: SD; input?: I; output?: O };\n\ntype SDZod = StateDefinition | InteropZodObject;\n\ntype ToStateDefinition<T> = T extends InteropZodObject\n ? InteropZodToStateDefinition<T>\n : T extends StateDefinition\n ? T\n : never;\n\ntype NodeAction<\n S,\n U,\n C extends SDZod,\n InterruptType,\n WriterType\n> = RunnableLike<\n S,\n U extends object ? U & Record<string, any> : U, // eslint-disable-line @typescript-eslint/no-explicit-any\n Runtime<StateType<ToStateDefinition<C>>, InterruptType, WriterType>\n>;\n\ntype StrictNodeAction<\n S,\n U,\n C extends SDZod,\n Nodes extends string,\n InterruptType,\n WriterType\n> = RunnableLike<\n Prettify<S>,\n | U\n | Command<\n InferInterruptResumeType<InterruptType>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n U & Record<string, any>,\n Nodes\n >,\n Runtime<StateType<ToStateDefinition<C>>, InterruptType, WriterType>\n>;\n\nconst PartialStateSchema = Symbol.for(\"langgraph.state.partial\");\ntype PartialStateSchema = typeof PartialStateSchema;\n\ntype MergeReturnType<Prev, Curr> = Prev & Curr extends infer T\n ? { [K in keyof T]: T[K] } & unknown\n : never;\n\ntype Prettify<T> = {\n [K in keyof T]: T[K];\n // eslint-disable-next-line @typescript-eslint/ban-types\n} & {};\n\n/**\n * A graph whose nodes communicate by reading and writing to a shared state.\n * Each node takes a defined `State` as input and returns a `Partial<State>`.\n *\n * Each state key can optionally be annotated with a reducer function that\n * will be used to aggregate the values of that key received from multiple nodes.\n * The signature of a reducer function is (left: Value, right: UpdateValue) => Value.\n *\n * See {@link Annotation} for more on defining state.\n *\n * After adding nodes and edges to your graph, you must call `.compile()` on it before\n * you can use it.\n *\n * @example\n * ```ts\n * import {\n * type BaseMessage,\n * AIMessage,\n * HumanMessage,\n * } from \"@langchain/core/messages\";\n * import { StateGraph, Annotation } from \"@langchain/langgraph\";\n *\n * // Define a state with a single key named \"messages\" that will\n * // combine a returned BaseMessage or arrays of BaseMessages\n * const StateAnnotation = Annotation.Root({\n * sentiment: Annotation<string>,\n * messages: Annotation<BaseMessage[]>({\n * reducer: (left: BaseMessage[], right: BaseMessage | BaseMessage[]) => {\n * if (Array.isArray(right)) {\n * return left.concat(right);\n * }\n * return left.concat([right]);\n * },\n * default: () => [],\n * }),\n * });\n *\n * const graphBuilder = new StateGraph(StateAnnotation);\n *\n * // A node in the graph that returns an object with a \"messages\" key\n * // will update the state by combining the existing value with the returned one.\n * const myNode = (state: typeof StateAnnotation.State) => {\n * return {\n * messages: [new AIMessage(\"Some new response\")],\n * sentiment: \"positive\",\n * };\n * };\n *\n * const graph = graphBuilder\n * .addNode(\"myNode\", myNode)\n * .addEdge(\"__start__\", \"myNode\")\n * .addEdge(\"myNode\", \"__end__\")\n * .compile();\n *\n * await graph.invoke({ messages: [new HumanMessage(\"how are you?\")] });\n *\n * // {\n * // messages: [HumanMessage(\"how are you?\"), AIMessage(\"Some new response\")],\n * // sentiment: \"positive\",\n * // }\n * ```\n */\nexport class StateGraph<\n SD extends SDZod | unknown,\n S = SD extends SDZod ? StateType<ToStateDefinition<SD>> : SD,\n U = SD extends SDZod ? UpdateType<ToStateDefinition<SD>> : Partial<S>,\n N extends string = typeof START,\n I extends SDZod = SD extends SDZod ? ToStateDefinition<SD> : StateDefinition,\n O extends SDZod = SD extends SDZod ? ToStateDefinition<SD> : StateDefinition,\n C extends SDZod = StateDefinition,\n NodeReturnType = unknown,\n InterruptType = unknown,\n WriterType = unknown\n> extends Graph<N, S, U, StateGraphNodeSpec<S, U>, ToStateDefinition<C>> {\n channels: Record<string, BaseChannel> = {};\n\n // TODO: this doesn't dedupe edges as in py, so worth fixing at some point\n waitingEdges: Set<[N[], N]> = new Set();\n\n /** @internal */\n _schemaDefinition: StateDefinition;\n\n /** @internal */\n _schemaRuntimeDefinition: InteropZodObject | undefined;\n\n /** @internal */\n _inputDefinition: I;\n\n /** @internal */\n _inputRuntimeDefinition: InteropZodObject | PartialStateSchema | undefined;\n\n /** @internal */\n _outputDefinition: O;\n\n /** @internal */\n _outputRuntimeDefinition: InteropZodObject | undefined;\n\n /**\n * Map schemas to managed values\n * @internal\n */\n _schemaDefinitions = new Map();\n\n /** @internal */\n _metaRegistry: SchemaMetaRegistry = schemaMetaRegistry;\n\n /** @internal Used only for typing. */\n _configSchema: ToStateDefinition<C> | undefined;\n\n /** @internal */\n _configRuntimeSchema: InteropZodObject | undefined;\n\n /** @internal */\n _interrupt: InterruptType;\n\n /** @internal */\n _writer: WriterType;\n\n declare Node: StrictNodeAction<S, U, C, N, InterruptType, WriterType>;\n\n constructor(\n state: SD extends StateDefinition ? AnnotationRoot<SD> : never,\n options?: {\n context?: C | AnnotationRoot<ToStateDefinition<C>>;\n input?: I | AnnotationRoot<ToStateDefinition<I>>;\n output?: O | AnnotationRoot<ToStateDefinition<O>>;\n\n interrupt?: InterruptType;\n writer?: WriterType;\n\n nodes?: N[];\n }\n );\n\n constructor(\n state: SD extends InteropZodObject ? SD : never,\n options?: {\n context?: C | AnnotationRoot<ToStateDefinition<C>>;\n input?: I | AnnotationRoot<ToStateDefinition<I>>;\n output?: O | AnnotationRoot<ToStateDefinition<O>>;\n\n interrupt?: InterruptType;\n writer?: WriterType;\n\n nodes?: N[];\n }\n );\n\n constructor(\n fields: SD extends StateDefinition\n ? StateGraphArgsWithInputOutputSchemas<SD, ToStateDefinition<O>>\n : never,\n contextSchema?: C | AnnotationRoot<ToStateDefinition<C>>\n );\n\n constructor(\n fields: SD extends StateDefinition\n ?\n | AnnotationRoot<SD>\n | StateGraphArgsWithStateSchema<\n SD,\n ToStateDefinition<I>,\n ToStateDefinition<O>\n >\n : never,\n contextSchema?: C | AnnotationRoot<ToStateDefinition<C>>\n );\n\n /** @deprecated Use `Annotation.Root` or `zod` for state definition instead. */\n constructor(\n fields: SD extends StateDefinition\n ? SD | StateGraphArgs<S>\n : StateGraphArgs<S>,\n contextSchema?: C | AnnotationRoot<ToStateDefinition<C>>\n );\n\n constructor(\n fields: SD extends InteropZodObject\n ? SD | ZodStateGraphArgsWithStateSchema<SD, I, O>\n : never,\n contextSchema?: C | AnnotationRoot<ToStateDefinition<C>>\n );\n\n constructor(\n fields: SD extends InteropZodObject\n ? SD | ZodStateGraphArgsWithStateSchema<SD, I, O>\n : SD extends StateDefinition\n ?\n | SD\n | AnnotationRoot<SD>\n | StateGraphArgs<S>\n | StateGraphArgsWithStateSchema<\n SD,\n ToStateDefinition<I>,\n ToStateDefinition<O>\n >\n | StateGraphArgsWithInputOutputSchemas<SD, ToStateDefinition<O>>\n : StateGraphArgs<S>,\n contextSchema?:\n | C\n | AnnotationRoot<ToStateDefinition<C>>\n | {\n input?: I | AnnotationRoot<ToStateDefinition<I>>;\n output?: O | AnnotationRoot<ToStateDefinition<O>>;\n context?: C | AnnotationRoot<ToStateDefinition<C>>;\n interrupt?: InterruptType;\n writer?: WriterType;\n nodes?: N[];\n }\n ) {\n super();\n\n if (isZodStateGraphArgsWithStateSchema(fields)) {\n const stateDef = this._metaRegistry.getChannelsForSchema(fields.state);\n const inputDef =\n fields.input != null\n ? this._metaRegistry.getChannelsForSchema(fields.input)\n : stateDef;\n const outputDef =\n fields.output != null\n ? this._metaRegistry.getChannelsForSchema(fields.output)\n : stateDef;\n\n this._schemaDefinition = stateDef;\n this._schemaRuntimeDefinition = fields.state;\n\n this._inputDefinition = inputDef as I;\n this._inputRuntimeDefinition = fields.input ?? PartialStateSchema;\n\n this._outputDefinition = outputDef as O;\n this._outputRuntimeDefinition = fields.output ?? fields.state;\n } else if (isInteropZodObject(fields)) {\n const stateDef = this._metaRegistry.getChannelsForSchema(fields);\n\n this._schemaDefinition = stateDef;\n this._schemaRuntimeDefinition = fields;\n\n this._inputDefinition = stateDef as I;\n this._inputRuntimeDefinition = PartialStateSchema;\n\n this._outputDefinition = stateDef as O;\n this._outputRuntimeDefinition = fields;\n } else if (\n isStateGraphArgsWithInputOutputSchemas<\n SD extends StateDefinition ? SD : never,\n O extends StateDefinition ? O : never\n >(fields)\n ) {\n this._schemaDefinition = fields.input.spec;\n this._inputDefinition = fields.input.spec as unknown as I;\n this._outputDefinition = fields.output.spec;\n } else if (isStateGraphArgsWithStateSchema(fields)) {\n this._schemaDefinition = fields.stateSchema.spec;\n this._inputDefinition = (fields.input?.spec ??\n this._schemaDefinition) as I;\n this._outputDefinition = (fields.output?.spec ??\n this._schemaDefinition) as O;\n } else if (isStateDefinition(fields) || isAnnotationRoot(fields)) {\n const spec = isAnnotationRoot(fields) ? fields.spec : fields;\n this._schemaDefinition = spec;\n } else if (isStateGraphArgs(fields)) {\n const spec = _getChannels(fields.channels);\n this._schemaDefinition = spec;\n } else {\n throw new Error(\n \"Invalid StateGraph input. Make sure to pass a valid Annotation.Root or Zod schema.\"\n );\n }\n\n this._inputDefinition ??= this._schemaDefinition as I;\n this._outputDefinition ??= this._schemaDefinition as O;\n\n this._addSchema(this._schemaDefinition);\n this._addSchema(this._inputDefinition);\n this._addSchema(this._outputDefinition);\n\n function isOptions(options: unknown): options is {\n context?: C | AnnotationRoot<ToStateDefinition<C>>;\n input?: I | AnnotationRoot<ToStateDefinition<I>>;\n output?: O | AnnotationRoot<ToStateDefinition<O>>;\n interrupt?: InterruptType;\n writer?: WriterType;\n nodes?: N[];\n } {\n return (\n typeof options === \"object\" &&\n options != null &&\n !(\"spec\" in options) &&\n !isInteropZodObject(options)\n );\n }\n\n // Handle runtime config options\n if (isOptions(contextSchema)) {\n if (isInteropZodObject(contextSchema.context)) {\n this._configRuntimeSchema = contextSchema.context;\n }\n this._interrupt = contextSchema.interrupt as InterruptType;\n this._writer = contextSchema.writer as WriterType;\n } else if (isInteropZodObject(contextSchema)) {\n this._configRuntimeSchema = contextSchema;\n }\n }\n\n get allEdges(): Set<[string, string]> {\n return new Set([\n ...this.edges,\n ...Array.from(this.waitingEdges).flatMap(([starts, end]) =>\n starts.map((start) => [start, end] as [string, string])\n ),\n ]);\n }\n\n _addSchema(stateDefinition: SDZod) {\n if (this._schemaDefinitions.has(stateDefinition)) {\n return;\n }\n // TODO: Support managed values\n this._schemaDefinitions.set(stateDefinition, stateDefinition);\n for (const [key, val] of Object.entries(stateDefinition)) {\n let channel;\n if (typeof val === \"function\") {\n channel = val();\n } else {\n channel = val;\n }\n if (this.channels[key] !== undefined) {\n if (this.channels[key] !== channel) {\n if (channel.lc_graph_name !== \"LastValue\") {\n throw new Error(\n `Channel \"${key}\" already exists with a different type.`\n );\n }\n }\n } else {\n this.channels[key] = channel;\n }\n }\n }\n\n override addNode<\n K extends string,\n NodeMap extends Record<K, NodeAction<S, U, C, InterruptType, WriterType>>\n >(\n nodes: NodeMap\n ): StateGraph<\n SD,\n S,\n U,\n N | K,\n I,\n O,\n C,\n MergeReturnType<\n NodeReturnType,\n {\n [key in keyof NodeMap]: NodeMap[key] extends NodeAction<\n S,\n infer U,\n C,\n InterruptType,\n WriterType\n >\n ? U\n : never;\n }\n >\n >;\n\n override addNode<K extends string, NodeInput = S, NodeOutput extends U = U>(\n nodes:\n | [\n key: K,\n action: NodeAction<\n NodeInput,\n NodeOutput,\n C,\n InterruptType,\n WriterType\n >,\n options?: StateGraphAddNodeOptions\n ][]\n ): StateGraph<\n SD,\n S,\n U,\n N | K,\n I,\n O,\n C,\n MergeReturnType<NodeReturnType, { [key in K]: NodeOutput }>\n >;\n\n override addNode<K extends string, NodeInput = S, NodeOutput extends U = U>(\n key: K,\n action: NodeAction<NodeInput, NodeOutput, C, InterruptType, WriterType>,\n options?: StateGraphAddNodeOptions\n ): StateGraph<\n SD,\n S,\n U,\n N | K,\n I,\n O,\n C,\n MergeReturnType<NodeReturnType, { [key in K]: NodeOutput }>\n >;\n\n override addNode<K extends string, NodeInput = S>(\n key: K,\n action: NodeAction<NodeInput, U, C, InterruptType, WriterType>,\n options?: StateGraphAddNodeOptions\n ): StateGraph<SD, S, U, N | K, I, O, C, NodeReturnType>;\n\n override addNode<K extends string, NodeInput = S, NodeOutput extends U = U>(\n ...args:\n | [\n key: K,\n action: NodeAction<\n NodeInput,\n NodeOutput,\n C,\n InterruptType,\n WriterType\n >,\n options?: StateGraphAddNodeOptions\n ]\n | [\n nodes:\n | Record<K, NodeAction<NodeInput, U, C, InterruptType, WriterType>>\n | [\n key: K,\n action: NodeAction<NodeInput, U, C, InterruptType, WriterType>,\n options?: StateGraphAddNodeOptions\n ][]\n ]\n ): StateGraph<SD, S, U, N | K, I, O, C> {\n function isMultipleNodes(\n args: unknown[]\n ): args is [\n nodes:\n | Record<K, NodeAction<NodeInput, U, C, InterruptType, WriterType>>\n | [\n key: K,\n action: NodeAction<NodeInput, U, C, InterruptType, WriterType>,\n options?: AddNodeOptions\n ][]\n ] {\n return args.length >= 1 && typeof args[0] !== \"string\";\n }\n\n const nodes = (\n isMultipleNodes(args) // eslint-disable-line no-nested-ternary\n ? Array.isArray(args[0])\n ? args[0]\n : Object.entries(args[0]).map(([key, action]) => [key, action])\n : [[args[0], args[1], args[2]]]\n ) as [\n K,\n NodeAction<NodeInput, U, C, InterruptType, WriterType>,\n StateGraphAddNodeOptions | undefined\n ][];\n\n if (nodes.length === 0) {\n throw new Error(\"No nodes provided in `addNode`\");\n }\n\n for (const [key, action, options] of nodes) {\n if (key in this.channels) {\n throw new Error(\n `${key} is already being used as a state attribute (a.k.a. a channel), cannot also be used as a node name.`\n );\n }\n\n for (const reservedChar of [\n CHECKPOINT_NAMESPACE_SEPARATOR,\n CHECKPOINT_NAMESPACE_END,\n ]) {\n if (key.includes(reservedChar)) {\n throw new Error(\n `\"${reservedChar}\" is a reserved character and is not allowed in node names.`\n );\n }\n }\n this.warnIfCompiled(\n `Adding a node to a graph that has already been compiled. This will not be reflected in the compiled graph.`\n );\n\n if (key in this.nodes) {\n throw new Error(`Node \\`${key}\\` already present.`);\n }\n if (key === END || key === START) {\n throw new Error(`Node \\`${key}\\` is reserved.`);\n }\n\n let inputSpec = this._schemaDefinition;\n if (options?.input !== undefined) {\n if (isInteropZodObject(options.input)) {\n inputSpec = this._metaRegistry.getChannelsForSchema(options.input);\n } else if (options.input.spec !== undefined) {\n inputSpec = options.input.spec;\n }\n }\n if (inputSpec !== undefined) {\n this._addSchema(inputSpec);\n }\n\n let runnable;\n if (Runnable.isRunnable(action)) {\n runnable = action;\n } else if (typeof action === \"function\") {\n runnable = new RunnableCallable({\n func: action,\n name: key,\n trace: false,\n });\n } else {\n runnable = _coerceToRunnable(action);\n }\n\n let cachePolicy = options?.cachePolicy;\n if (typeof cachePolicy === \"boolean\") {\n cachePolicy = cachePolicy ? {} : undefined;\n }\n\n const nodeSpec: StateGraphNodeSpec<S, U> = {\n runnable: runnable as unknown as Runnable<S, U>,\n retryPolicy: options?.retryPolicy,\n cachePolicy,\n metadata: options?.metadata,\n input: inputSpec ?? this._schemaDefinition,\n subgraphs: isPregelLike(runnable)\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [runnable as any]\n : options?.subgraphs,\n ends: options?.ends,\n defer: options?.defer,\n };\n\n this.nodes[key as unknown as N] = nodeSpec;\n }\n\n return this as StateGraph<SD, S, U, N | K, I, O, C>;\n }\n\n override addEdge(\n startKey: typeof START | N | N[],\n endKey: N | typeof END\n ): this {\n if (typeof startKey === \"string\") {\n return super.addEdge(startKey, endKey);\n }\n\n if (this.compiled) {\n console.warn(\n \"Adding an edge to a graph that has already been compiled. This will \" +\n \"not be reflected in the compiled graph.\"\n );\n }\n\n for (const start of startKey) {\n if (start === END) {\n throw new Error(\"END cannot be a start node\");\n }\n if (!Object.keys(this.nodes).some((node) => node === start)) {\n throw new Error(`Need to add a node named \"${start}\" first`);\n }\n }\n if (endKey === END) {\n throw new Error(\"END cannot be an end node\");\n }\n if (!Object.keys(this.nodes).some((node) => node === endKey)) {\n throw new Error(`Need to add a node named \"${endKey}\" first`);\n }\n\n this.waitingEdges.add([startKey, endKey]);\n\n return this;\n }\n\n addSequence<K extends string, NodeInput = S, NodeOutput extends U = U>(\n nodes: [\n key: K,\n action: NodeAction<NodeInput, NodeOutput, C, InterruptType, WriterType>,\n options?: StateGraphAddNodeOptions\n ][]\n ): StateGraph<\n SD,\n S,\n U,\n N | K,\n I,\n O,\n C,\n MergeReturnType<NodeReturnType, { [key in K]: NodeOutput }>\n >;\n\n addSequence<\n K extends string,\n NodeMap extends Record<K, NodeAction<S, U, C, InterruptType, WriterType>>\n >(\n nodes: NodeMap\n ): StateGraph<\n SD,\n S,\n U,\n N | K,\n I,\n O,\n C,\n MergeReturnType<\n NodeReturnType,\n {\n [key in keyof NodeMap]: NodeMap[key] extends NodeAction<\n S,\n infer U,\n C,\n InterruptType,\n WriterType\n >\n ? U\n : never;\n }\n >\n >;\n\n addSequence<K extends string, NodeInput = S, NodeOutput extends U = U>(\n nodes:\n | [\n key: K,\n action: NodeAction<\n NodeInput,\n NodeOutput,\n C,\n InterruptType,\n WriterType\n >,\n options?: StateGraphAddNodeOptions\n ][]\n | Record<\n K,\n NodeAction<NodeInput, NodeOutput, C, InterruptType, WriterType>\n >\n ): StateGraph<\n SD,\n S,\n U,\n N | K,\n I,\n O,\n C,\n MergeReturnType<NodeReturnType, { [key in K]: NodeOutput }>\n > {\n const parsedNodes = Array.isArray(nodes) ? nodes : Object.entries(nodes);\n\n if (parsedNodes.length === 0) {\n throw new Error(\"Sequence requires at least one node.\");\n }\n\n let previousNode: N | undefined;\n for (const [key, action, options] of parsedNodes) {\n if (key in this.nodes) {\n throw new Error(\n `Node names must be unique: node with the name \"${key}\" already exists.`\n );\n }\n\n const validKey = key as unknown as N;\n this.addNode(\n validKey,\n action as NodeAction<S, U, C, InterruptType, WriterType>,\n options\n );\n if (previousNode != null) {\n this.addEdge(previousNode, validKey);\n }\n\n previousNode = validKey;\n }\n\n return this as StateGraph<\n SD,\n S,\n U,\n N | K,\n I,\n O,\n C,\n MergeReturnType<NodeReturnType, { [key in K]: NodeOutput }>\n >;\n }\n\n override compile({\n checkpointer,\n store,\n cache,\n interruptBefore,\n interruptAfter,\n name,\n description,\n }: {\n checkpointer?: BaseCheckpointSaver | boolean;\n store?: BaseStore;\n cache?: BaseCache;\n interruptBefore?: N[] | All;\n interruptAfter?: N[] | All;\n name?: string;\n description?: string;\n } = {}): CompiledStateGraph<\n Prettify<S>,\n Prettify<U>,\n N,\n I,\n O,\n C,\n NodeReturnType,\n InterruptType,\n WriterType\n > {\n // validate the graph\n this.validate([\n ...(Array.isArray(interruptBefore) ? interruptBefore : []),\n ...(Array.isArray(interruptAfter) ? interruptAfter : []),\n ]);\n\n // prepare output channels\n const outputKeys = Object.keys(\n this._schemaDefinitions.get(this._outputDefinition)\n );\n const outputChannels =\n outputKeys.length === 1 && outputKeys[0] === ROOT ? ROOT : outputKeys;\n\n const streamKeys = Object.keys(this.channels);\n const streamChannels =\n streamKeys.length === 1 && streamKeys[0] === ROOT ? ROOT : streamKeys;\n\n const userInterrupt = this._interrupt;\n // create empty compiled graph\n const compiled = new CompiledStateGraph<\n S,\n U,\n N,\n I,\n O,\n C,\n NodeReturnType,\n InterruptType,\n WriterType\n >({\n builder: this,\n checkpointer,\n interruptAfter,\n interruptBefore,\n autoValidate: false,\n nodes: {} as Record<N | typeof START, PregelNode<S, U>>,\n channels: {\n ...this.channels,\n [START]: new EphemeralValue(),\n } as Record<N | typeof START | typeof END | string, BaseChannel>,\n inputChannels: START,\n outputChannels,\n streamChannels,\n streamMode: \"updates\",\n store,\n cache,\n name,\n description,\n userInterrupt,\n });\n\n // attach nodes, edges and branches\n compiled.attachNode(START);\n for (const [key, node] of Object.entries<StateGraphNodeSpec<S, U>>(\n this.nodes\n )) {\n compiled.attachNode(key as N, node);\n }\n compiled.attachBranch(START, SELF, _getControlBranch() as Branch<S, N>, {\n withReader: false,\n });\n for (const [key] of Object.entries<StateGraphNodeSpec<S, U>>(this.nodes)) {\n compiled.attachBranch(\n key as N,\n SELF,\n _getControlBranch() as Branch<S, N>,\n {\n withReader: false,\n }\n );\n }\n for (const [start, end] of this.edges) {\n compiled.attachEdge(start, end);\n }\n for (const [starts, end] of this.waitingEdges) {\n compiled.attachEdge(starts, end);\n }\n for (const [start, branches] of Object.entries(this.branches)) {\n for (const [name, branch] of Object.entries(branches)) {\n compiled.attachBranch(start as N, name, branch);\n }\n }\n\n return compiled.validate();\n }\n}\n\nfunction _getChannels<Channels extends Record<string, unknown> | unknown>(\n schema: StateGraphArgs<Channels>[\"channels\"]\n): Record<string, BaseChannel> {\n const channels: Record<string, BaseChannel> = {};\n for (const [name, val] of Object.entries(schema)) {\n if (name === ROOT) {\n channels[name] = getChannel<Channels>(val as SingleReducer<Channels>);\n } else {\n const key = name as keyof Channels;\n channels[name] = getChannel<Channels[typeof key]>(\n val as SingleReducer<Channels[typeof key]>\n );\n }\n }\n return channels;\n}\n\n/**\n * Final result from building and compiling a {@link StateGraph}.\n * Should not be instantiated directly, only using the StateGraph `.compile()`\n * instance method.\n */\nexport class CompiledStateGraph<\n S,\n U,\n N extends string = typeof START,\n I extends SDZod = StateDefinition,\n O extends SDZod = StateDefinition,\n C extends SDZod = StateDefinition,\n NodeReturnType = unknown,\n InterruptType = unknown,\n WriterType = unknown\n> extends CompiledGraph<\n N,\n S,\n U,\n StateType<ToStateDefinition<C>>,\n UpdateType<ToStateDefinition<I>>,\n StateType<ToStateDefinition<O>>,\n NodeReturnType,\n CommandInstance<InferInterruptResumeType<InterruptType>, Prettify<U>, N>,\n InferWriterType<WriterType>\n> {\n declare builder: StateGraph<unknown, S, U, N, I, O, C, NodeReturnType>;\n\n /**\n * The description of the compiled graph.\n * This is used by the supervisor agent to describe the handoff to the agent.\n */\n description?: string;\n\n /** @internal */\n _metaRegistry: SchemaMetaRegistry = schemaMetaRegistry;\n\n constructor({\n description,\n ...rest\n }: { description?: string } & ConstructorParameters<\n typeof CompiledGraph<\n N,\n S,\n U,\n StateType<ToStateDefinition<C>>,\n UpdateType<ToStateDefinition<I>>,\n StateType<ToStateDefinition<O>>,\n NodeReturnType,\n CommandInstance<InferInterruptResumeType<InterruptType>, Prettify<U>, N>,\n InferWriterType<WriterType>\n >\n >[0]) {\n super(rest);\n this.description = description;\n }\n\n attachNode(key: typeof START, node?: never): void;\n\n attachNode(key: N, node: StateGraphNodeSpec<S, U>): void;\n\n attachNode(key: N | typeof START, node?: StateGraphNodeSpec<S, U>): void {\n let outputKeys: string[];\n if (key === START) {\n // Get input schema keys excluding managed values\n outputKeys = Object.entries(\n this.builder._schemaDefinitions.get(this.builder._inputDefinition)\n ).map(([k]) => k);\n } else {\n outputKeys = Object.keys(this.builder.channels);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _getRoot(input: unknown): [string, any][] | null {\n if (isCommand(input)) {\n if (input.graph === Command.PARENT) {\n return null;\n }\n return input._updateAsTuples();\n } else if (\n Array.isArray(input) &&\n input.length > 0 &&\n input.some((i) => isCommand(i))\n ) {\n const updates: [string, unknown][] = [];\n for (const i of input) {\n if (isCommand(i)) {\n if (i.graph === Command.PARENT) {\n continue;\n }\n updates.push(...i._updateAsTuples());\n } else {\n updates.push([ROOT, i]);\n }\n }\n return updates;\n } else if (input != null) {\n return [[ROOT, input]];\n }\n return null;\n }\n\n // to avoid name collision below\n const nodeKey = key;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _getUpdates(input: U): [string, any][] | null {\n if (!input) {\n return null;\n } else if (isCommand(input)) {\n if (input.graph === Command.PARENT) {\n return null;\n }\n return input._updateAsTuples().filter(([k]) => outputKeys.includes(k));\n } else if (\n Array.isArray(input) &&\n input.length > 0 &&\n input.some(isCommand)\n ) {\n const updates: [string, unknown][] = [];\n for (const item of input) {\n if (isCommand(item)) {\n if (item.graph === Command.PARENT) {\n continue;\n }\n updates.push(\n ...item._updateAsTuples().filter(([k]) => outputKeys.includes(k))\n );\n } else {\n const itemUpdates = _getUpdates(item);\n if (itemUpdates) {\n updates.push(...(itemUpdates ?? []));\n }\n }\n }\n return updates;\n } else if (typeof input === \"object\" && !Array.isArray(input)) {\n return Object.entries(input).filter(([k]) => outputKeys.includes(k));\n } else {\n const typeofInput = Array.isArray(input) ? \"array\" : typeof input;\n throw new InvalidUpdateError(\n `Expected node \"${nodeKey.toString()}\" to return an object or an array containing at least one Command object, received ${typeofInput}`,\n {\n lc_error_code: \"INVALID_GRAPH_NODE_RETURN_VALUE\",\n }\n );\n }\n }\n\n const stateWriteEntries: (ChannelWriteTupleEntry | ChannelWriteEntry)[] = [\n {\n value: PASSTHROUGH,\n mapper: new RunnableCallable({\n func:\n outputKeys.length && outputKeys[0] === ROOT\n ? _getRoot\n : _getUpdates,\n trace: false,\n recurse: false,\n }),\n },\n ];\n\n // add node and output channel\n if (key === START) {\n this.nodes[key] = new PregelNode<S, U>({\n tags: [TAG_HIDDEN],\n triggers: [START],\n channels: [START],\n writers: [new ChannelWrite(stateWriteEntries, [TAG_HIDDEN])],\n });\n } else {\n const inputDefinition = node?.input ?? this.builder._schemaDefinition;\n const inputValues = Object.fromEntries(\n Object.keys(this.builder._schemaDefinitions.get(inputDefinition)).map(\n (k) => [k, k]\n )\n );\n const isSingleInput =\n Object.keys(inputValues).length === 1 && ROOT in inputValues;\n const branchChannel = `branch:to:${key}` as string | N;\n this.channels[branchChannel] = node?.defer\n ? new LastValueAfterFinish()\n : new EphemeralValue(false);\n this.nodes[key] = new PregelNode<S, U>({\n triggers: [branchChannel],\n // read state keys\n channels: isSingleInput ? Object.keys(inputValues) : inputValues,\n // publish to state keys\n writers: [new ChannelWrite(stateWriteEntries, [TAG_HIDDEN])],\n mapper: isSingleInput\n ? undefined\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (input: Record<string, any>) => {\n return Object.fromEntries(\n Object.entries(input).filter(([k]) => k in inputValues)\n );\n },\n bound: node?.runnable,\n metadata: node?.metadata,\n retryPolicy: node?.retryPolicy,\n cachePolicy: node?.cachePolicy,\n subgraphs: node?.subgraphs,\n ends: node?.ends,\n });\n }\n }\n\n attachEdge(starts: N | N[] | \"__start__\", end: N | \"__end__\"): void {\n if (end === END) return;\n if (typeof starts === \"string\") {\n this.nodes[starts].writers.push(\n new ChannelWrite(\n [{ channel: `branch:to:${end}`, value: null }],\n [TAG_HIDDEN]\n )\n );\n } else if (Array.isArray(starts)) {\n const channelName = `join:${starts.join(\"+\")}:${end}`;\n // register channel\n this.channels[channelName as string | N] = this.builder.nodes[end].defer\n ? new NamedBarrierValueAfterFinish(new Set(starts))\n : new NamedBarrierValue(new Set(starts));\n // subscribe to channel\n this.nodes[end].triggers.push(channelName);\n // publish to channel\n for (const start of starts) {\n this.nodes[start].writers.push(\n new ChannelWrite(\n [{ channel: channelName, value: start }],\n [TAG_HIDDEN]\n )\n );\n }\n }\n }\n\n attachBranch(\n start: N | typeof START,\n _: string,\n branch: Branch<S, N>,\n options: { withReader?: boolean } = { withReader: true }\n ): void {\n const branchWriter = async (\n packets: (string | Send)[],\n config: LangGraphRunnableConfig\n ) => {\n const filteredPackets = packets.filter((p) => p !== END);\n if (!filteredPackets.length) return;\n\n const writes: (ChannelWriteEntry | Send)[] = filteredPackets.map((p) => {\n if (_isSend(p)) return p;\n return { channel: p === END ? p : `branch:to:${p}`, value: start };\n });\n await ChannelWrite.doWrite(\n { ...config, tags: (config.tags ?? []).concat([TAG_HIDDEN]) },\n writes\n );\n };\n // attach branch publisher\n this.nodes[start].writers.push(\n branch.run(\n branchWriter,\n // reader\n options.withReader\n ? (config) =>\n ChannelRead.doRead<S>(\n config,\n this.streamChannels ?? this.outputChannels,\n true\n )\n : undefined\n )\n );\n }\n\n protected async _validateInput(\n input: UpdateType<ToStateDefinition<I>>\n ): Promise<UpdateType<ToStateDefinition<I>>> {\n if (input == null) return input;\n\n const schema = (() => {\n const input = this.builder._inputRuntimeDefinition;\n const schema = this.builder._schemaRuntimeDefinition;\n\n const apply = (schema: InteropZodObject | undefined) => {\n if (schema == null) return undefined;\n return this._metaRegistry.getExtendedChannelSchemas(schema, {\n withReducerSchema: true,\n });\n };\n\n if (isInteropZodObject(input)) return apply(input);\n if (input === PartialStateSchema) {\n return interopZodObjectPartial(apply(schema)!);\n }\n return undefined;\n })();\n\n if (isCommand(input)) {\n const parsedInput = input;\n if (input.update && schema != null)\n parsedInput.update = interopParse(schema, input.update);\n return parsedInput;\n }\n if (schema != null) return interopParse(schema, input);\n return input;\n }\n\n public isInterrupted(input: unknown): input is {\n [INTERRUPT]: Interrupt<InferInterruptInputType<InterruptType>>[];\n } {\n return isInterrupted(input);\n }\n\n protected async _validateContext(\n config: Partial<Record<string, unknown>>\n ): Promise<Partial<Record<string, unknown>>> {\n const configSchema = this.builder._configRuntimeSchema;\n if (isInteropZodObject(configSchema)) interopParse(configSchema, config);\n return config;\n }\n}\n\nfunction isStateDefinition(obj: unknown): obj is StateDefinition {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n !Array.isArray(obj) &&\n Object.keys(obj).length > 0 &&\n Object.values(obj).every((v) => typeof v === \"function\" || isBaseChannel(v))\n );\n}\n\nfunction isAnnotationRoot<SD extends StateDefinition>(\n obj: unknown | AnnotationRoot<SD>\n): obj is AnnotationRoot<SD> {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n \"lc_graph_name\" in obj &&\n obj.lc_graph_name === \"AnnotationRoot\"\n );\n}\n\nfunction isStateGraphArgs<Channels extends object | unknown>(\n obj: unknown | StateGraphArgs<Channels>\n): obj is StateGraphArgs<Channels> {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n (obj as StateGraphArgs<Channels>).channels !== undefined\n );\n}\n\nfunction isStateGraphArgsWithStateSchema<\n SD extends StateDefinition,\n I extends StateDefinition,\n O extends StateDefinition\n>(\n obj: unknown | StateGraphArgsWithStateSchema<SD, I, O>\n): obj is StateGraphArgsWithStateSchema<SD, I, O> {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n (obj as StateGraphArgsWithStateSchema<SD, I, O>).stateSchema !== undefined\n );\n}\n\nfunction isStateGraphArgsWithInputOutputSchemas<\n SD extends StateDefinition,\n O extends StateDefinition\n>(\n obj: unknown | StateGraphArgsWithInputOutputSchemas<SD, O>\n): obj is StateGraphArgsWithInputOutputSchemas<SD, O> {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (obj as any).stateSchema === undefined &&\n (obj as StateGraphArgsWithInputOutputSchemas<SD, O>).input !== undefined &&\n (obj as StateGraphArgsWithInputOutputSchemas<SD, O>).output !== undefined\n );\n}\n\nfunction isZodStateGraphArgsWithStateSchema<\n SD extends InteropZodObject,\n I extends InteropZodObject,\n O extends InteropZodObject\n>(value: unknown): value is ZodStateGraphArgsWithStateSchema<SD, I, O> {\n if (typeof value !== \"object\" || value == null) {\n return false;\n }\n\n if (!(\"state\" in value) || !isInteropZodObject(value.state)) {\n return false;\n }\n\n if (\"input\" in value && !isInteropZodObject(value.input)) {\n return false;\n }\n\n if (\"output\" in value && !isInteropZodObject(value.output)) {\n return false;\n }\n\n return true;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _controlBranch(value: any): (string | Send)[] {\n if (_isSend(value)) {\n return [value];\n }\n const commands = [];\n if (isCommand(value)) {\n commands.push(value);\n } else if (Array.isArray(value)) {\n commands.push(...value.filter(isCommand));\n }\n const destinations: (string | Send)[] = [];\n\n for (const command of commands) {\n if (command.graph === Command.PARENT) {\n throw new ParentCommand(command);\n }\n\n if (_isSend(command.goto)) {\n destinations.push(command.goto);\n } else if (typeof command.goto === \"string\") {\n destinations.push(command.goto);\n } else {\n if (Array.isArray(command.goto)) {\n destinations.push(...command.goto);\n }\n }\n }\n return destinations;\n}\n\nfunction _getControlBranch() {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const CONTROL_BRANCH_PATH = new RunnableCallable<any, (string | Send)[]>({\n func: _controlBranch,\n tags: [TAG_HIDDEN],\n trace: false,\n recurse: false,\n name: \"<control_branch>\",\n });\n return new Branch({\n path: CONTROL_BRANCH_PATH,\n });\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zod-registry.cjs","names":["$ZodRegistry","parent: SchemaMetaRegistry","schemaMetaRegistry"],"sources":["../../../src/graph/zod/zod-registry.ts"],"sourcesContent":["// @ts-expect-error If zod/v4 is not imported, the module augmentation will fail in build\nimport type { ZodType } from \"zod/v4\"; // eslint-disable-line @typescript-eslint/no-unused-vars\n\n// @ts-expect-error If zod/v4-mini is not imported, the module augmentation will fail in build\nimport type { ZodMiniType } from \"zod/v4-mini\"; // eslint-disable-line @typescript-eslint/no-unused-vars\n\nimport type * as core from \"zod/v4/core\";\nimport { getInteropZodDefaultGetter } from \"@langchain/core/utils/types\";\nimport { $ZodType, $ZodRegistry, $replace } from \"zod/v4/core\";\nimport {\n type ReducedZodChannel,\n type SchemaMeta,\n type SchemaMetaRegistry,\n schemaMetaRegistry,\n} from \"./meta.js\";\n\n/**\n * A Zod v4-compatible meta registry that extends the base registry.\n *\n * This registry allows you to associate and retrieve metadata for Zod schemas,\n * leveraging the base registry for storage. It is compatible with Zod v4 and\n * interoperates with the base registry to ensure consistent metadata management\n * across different Zod versions.\n *\n * @template Meta - The type of metadata associated with each schema.\n * @template Schema - The Zod schema type.\n */\nexport class LanggraphZodMetaRegistry<\n Meta extends SchemaMeta = SchemaMeta,\n Schema extends $ZodType = $ZodType\n> extends $ZodRegistry<Meta & { [key: string]: unknown }, Schema> {\n /**\n * Creates a new LanggraphZodMetaRegistry instance.\n *\n * @param parent - The base SchemaMetaRegistry to use for metadata storage.\n */\n constructor(protected parent: SchemaMetaRegistry) {\n super();\n // Use the parent's map for metadata storage\n this._map = this.parent._map as
|
|
1
|
+
{"version":3,"file":"zod-registry.cjs","names":["$ZodRegistry","parent: SchemaMetaRegistry","schemaMetaRegistry"],"sources":["../../../src/graph/zod/zod-registry.ts"],"sourcesContent":["// @ts-expect-error If zod/v4 is not imported, the module augmentation will fail in build\nimport type { ZodType } from \"zod/v4\"; // eslint-disable-line @typescript-eslint/no-unused-vars\n\n// @ts-expect-error If zod/v4-mini is not imported, the module augmentation will fail in build\nimport type { ZodMiniType } from \"zod/v4-mini\"; // eslint-disable-line @typescript-eslint/no-unused-vars\n\nimport type * as core from \"zod/v4/core\";\nimport { getInteropZodDefaultGetter } from \"@langchain/core/utils/types\";\nimport { $ZodType, $ZodRegistry, $replace } from \"zod/v4/core\";\nimport {\n type ReducedZodChannel,\n type SchemaMeta,\n type SchemaMetaRegistry,\n schemaMetaRegistry,\n} from \"./meta.js\";\n\n/**\n * A Zod v4-compatible meta registry that extends the base registry.\n *\n * This registry allows you to associate and retrieve metadata for Zod schemas,\n * leveraging the base registry for storage. It is compatible with Zod v4 and\n * interoperates with the base registry to ensure consistent metadata management\n * across different Zod versions.\n *\n * @template Meta - The type of metadata associated with each schema.\n * @template Schema - The Zod schema type.\n */\nexport class LanggraphZodMetaRegistry<\n Meta extends SchemaMeta = SchemaMeta,\n Schema extends $ZodType = $ZodType\n> extends $ZodRegistry<Meta & { [key: string]: unknown }, Schema> {\n /**\n * Creates a new LanggraphZodMetaRegistry instance.\n *\n * @param parent - The base SchemaMetaRegistry to use for metadata storage.\n */\n constructor(protected parent: SchemaMetaRegistry) {\n super();\n // Use the parent's map for metadata storage\n this._map = this.parent._map as Map<\n Schema,\n $replace<Meta & { [key: string]: unknown }, Schema>\n >;\n }\n\n add<S extends Schema>(\n schema: S,\n ..._meta: undefined extends Meta & { [key: string]: unknown }\n ? [$replace<Meta & { [key: string]: unknown }, S>?]\n : [$replace<Meta & { [key: string]: unknown }, S>]\n ): this {\n const firstMeta = _meta[0];\n if (firstMeta && !firstMeta?.default) {\n const defaultValueGetter = getInteropZodDefaultGetter(schema);\n if (defaultValueGetter != null) {\n // eslint-disable-next-line no-param-reassign\n firstMeta.default = defaultValueGetter;\n }\n }\n return super.add(schema, ..._meta);\n }\n}\n\n// Augment the zod/v4 module nudging the `register` method\n// to use the user provided input schema if specified.\ndeclare module \"zod/v4\" {\n export interface ZodType<\n out Output = unknown,\n out Input = unknown,\n out Internals extends core.$ZodTypeInternals<\n Output,\n Input\n > = core.$ZodTypeInternals<Output, Input>\n > extends core.$ZodType<Output, Input, Internals> {\n register<\n R extends LanggraphZodMetaRegistry,\n TOutput = core.output<this>,\n TInput = core.input<this>,\n TInternals extends core.$ZodTypeInternals<\n TOutput,\n TInput\n > = core.$ZodTypeInternals<TOutput, TInput>\n >(\n registry: R,\n meta: SchemaMeta<TOutput, TInput>\n ): ReducedZodChannel<this, ZodType<TOutput, TInput, TInternals>>;\n }\n}\n\ndeclare module \"zod/v4-mini\" {\n export interface ZodMiniType<\n out Output = unknown,\n out Input = unknown,\n out Internals extends core.$ZodTypeInternals<\n Output,\n Input\n > = core.$ZodTypeInternals<Output, Input>\n > extends core.$ZodType<Output, Input, Internals> {\n register<\n R extends LanggraphZodMetaRegistry,\n TOutput = core.output<this>,\n TInput = core.input<this>,\n TInternals extends core.$ZodTypeInternals<\n TOutput,\n TInput\n > = core.$ZodTypeInternals<TOutput, TInput>\n >(\n registry: R,\n meta: SchemaMeta<TOutput, TInput>\n ): ReducedZodChannel<this, ZodMiniType<TOutput, TInput, TInternals>>;\n }\n}\n\nexport const registry = new LanggraphZodMetaRegistry(schemaMetaRegistry);\n"],"mappings":";;;;;;;;;;;;;;;;;AA2BA,IAAa,2BAAb,cAGUA,yBAAwD;;;;;;CAMhE,YAAY,AAAUC,QAA4B;AAChD;EADoB;AAGpB,OAAK,OAAO,KAAK,OAAO;;CAM1B,IACE,QACA,GAAG,OAGG;EACN,MAAM,YAAY,MAAM;AACxB,MAAI,aAAa,CAAC,WAAW,SAAS;GACpC,MAAM,kFAAgD;AACtD,OAAI,sBAAsB,KAExB,WAAU,UAAU;;AAGxB,SAAO,MAAM,IAAI,QAAQ,GAAG;;;AAsDhC,MAAa,WAAW,IAAI,yBAAyBC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zod-registry.d.cts","names":["core","$ZodType","$ZodRegistry","$replace","ReducedZodChannel","SchemaMeta","SchemaMetaRegistry","LanggraphZodMetaRegistry","Meta","Schema","S","
|
|
1
|
+
{"version":3,"file":"zod-registry.d.cts","names":["core","$ZodType","$ZodRegistry","$replace","ReducedZodChannel","SchemaMeta","SchemaMetaRegistry","LanggraphZodMetaRegistry","Meta","Schema","S","_0","Output","Input","$ZodTypeInternals","Internals","output","input","TOutput","TInput","R","TInternals","ZodType","sideEffect","ZodMiniType","registry"],"sources":["../../../src/graph/zod/zod-registry.d.ts"],"sourcesContent":["import type * as core from \"zod/v4/core\";\nimport { $ZodType, $ZodRegistry, $replace } from \"zod/v4/core\";\nimport { type ReducedZodChannel, type SchemaMeta, type SchemaMetaRegistry } from \"./meta.js\";\n/**\n * A Zod v4-compatible meta registry that extends the base registry.\n *\n * This registry allows you to associate and retrieve metadata for Zod schemas,\n * leveraging the base registry for storage. It is compatible with Zod v4 and\n * interoperates with the base registry to ensure consistent metadata management\n * across different Zod versions.\n *\n * @template Meta - The type of metadata associated with each schema.\n * @template Schema - The Zod schema type.\n */\nexport declare class LanggraphZodMetaRegistry<Meta extends SchemaMeta = SchemaMeta, Schema extends $ZodType = $ZodType> extends $ZodRegistry<Meta & {\n [key: string]: unknown;\n}, Schema> {\n protected parent: SchemaMetaRegistry;\n /**\n * Creates a new LanggraphZodMetaRegistry instance.\n *\n * @param parent - The base SchemaMetaRegistry to use for metadata storage.\n */\n constructor(parent: SchemaMetaRegistry);\n add<S extends Schema>(schema: S, ..._meta: undefined extends Meta & {\n [key: string]: unknown;\n } ? [$replace<Meta & {\n [key: string]: unknown;\n }, S>?] : [$replace<Meta & {\n [key: string]: unknown;\n }, S>]): this;\n}\n// Augment the zod/v4 module nudging the `register` method\n// to use the user provided input schema if specified.\ndeclare module \"zod/v4\" {\n interface ZodType<out Output = unknown, out Input = unknown, out Internals extends core.$ZodTypeInternals<Output, Input> = core.$ZodTypeInternals<Output, Input>> extends core.$ZodType<Output, Input, Internals> {\n register<R extends LanggraphZodMetaRegistry, TOutput = core.output<this>, TInput = core.input<this>, TInternals extends core.$ZodTypeInternals<TOutput, TInput> = core.$ZodTypeInternals<TOutput, TInput>>(registry: R, meta: SchemaMeta<TOutput, TInput>): ReducedZodChannel<this, ZodType<TOutput, TInput, TInternals>>;\n }\n}\ndeclare module \"zod/v4-mini\" {\n interface ZodMiniType<out Output = unknown, out Input = unknown, out Internals extends core.$ZodTypeInternals<Output, Input> = core.$ZodTypeInternals<Output, Input>> extends core.$ZodType<Output, Input, Internals> {\n register<R extends LanggraphZodMetaRegistry, TOutput = core.output<this>, TInput = core.input<this>, TInternals extends core.$ZodTypeInternals<TOutput, TInput> = core.$ZodTypeInternals<TOutput, TInput>>(registry: R, meta: SchemaMeta<TOutput, TInput>): ReducedZodChannel<this, ZodMiniType<TOutput, TInput, TInternals>>;\n }\n}\nexport declare const registry: LanggraphZodMetaRegistry<SchemaMeta<any, any>, $ZodType<unknown, unknown, core.$ZodTypeInternals<unknown, unknown>>>;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zod-registry.js","names":["parent: SchemaMetaRegistry"],"sources":["../../../src/graph/zod/zod-registry.ts"],"sourcesContent":["// @ts-expect-error If zod/v4 is not imported, the module augmentation will fail in build\nimport type { ZodType } from \"zod/v4\"; // eslint-disable-line @typescript-eslint/no-unused-vars\n\n// @ts-expect-error If zod/v4-mini is not imported, the module augmentation will fail in build\nimport type { ZodMiniType } from \"zod/v4-mini\"; // eslint-disable-line @typescript-eslint/no-unused-vars\n\nimport type * as core from \"zod/v4/core\";\nimport { getInteropZodDefaultGetter } from \"@langchain/core/utils/types\";\nimport { $ZodType, $ZodRegistry, $replace } from \"zod/v4/core\";\nimport {\n type ReducedZodChannel,\n type SchemaMeta,\n type SchemaMetaRegistry,\n schemaMetaRegistry,\n} from \"./meta.js\";\n\n/**\n * A Zod v4-compatible meta registry that extends the base registry.\n *\n * This registry allows you to associate and retrieve metadata for Zod schemas,\n * leveraging the base registry for storage. It is compatible with Zod v4 and\n * interoperates with the base registry to ensure consistent metadata management\n * across different Zod versions.\n *\n * @template Meta - The type of metadata associated with each schema.\n * @template Schema - The Zod schema type.\n */\nexport class LanggraphZodMetaRegistry<\n Meta extends SchemaMeta = SchemaMeta,\n Schema extends $ZodType = $ZodType\n> extends $ZodRegistry<Meta & { [key: string]: unknown }, Schema> {\n /**\n * Creates a new LanggraphZodMetaRegistry instance.\n *\n * @param parent - The base SchemaMetaRegistry to use for metadata storage.\n */\n constructor(protected parent: SchemaMetaRegistry) {\n super();\n // Use the parent's map for metadata storage\n this._map = this.parent._map as
|
|
1
|
+
{"version":3,"file":"zod-registry.js","names":["parent: SchemaMetaRegistry"],"sources":["../../../src/graph/zod/zod-registry.ts"],"sourcesContent":["// @ts-expect-error If zod/v4 is not imported, the module augmentation will fail in build\nimport type { ZodType } from \"zod/v4\"; // eslint-disable-line @typescript-eslint/no-unused-vars\n\n// @ts-expect-error If zod/v4-mini is not imported, the module augmentation will fail in build\nimport type { ZodMiniType } from \"zod/v4-mini\"; // eslint-disable-line @typescript-eslint/no-unused-vars\n\nimport type * as core from \"zod/v4/core\";\nimport { getInteropZodDefaultGetter } from \"@langchain/core/utils/types\";\nimport { $ZodType, $ZodRegistry, $replace } from \"zod/v4/core\";\nimport {\n type ReducedZodChannel,\n type SchemaMeta,\n type SchemaMetaRegistry,\n schemaMetaRegistry,\n} from \"./meta.js\";\n\n/**\n * A Zod v4-compatible meta registry that extends the base registry.\n *\n * This registry allows you to associate and retrieve metadata for Zod schemas,\n * leveraging the base registry for storage. It is compatible with Zod v4 and\n * interoperates with the base registry to ensure consistent metadata management\n * across different Zod versions.\n *\n * @template Meta - The type of metadata associated with each schema.\n * @template Schema - The Zod schema type.\n */\nexport class LanggraphZodMetaRegistry<\n Meta extends SchemaMeta = SchemaMeta,\n Schema extends $ZodType = $ZodType\n> extends $ZodRegistry<Meta & { [key: string]: unknown }, Schema> {\n /**\n * Creates a new LanggraphZodMetaRegistry instance.\n *\n * @param parent - The base SchemaMetaRegistry to use for metadata storage.\n */\n constructor(protected parent: SchemaMetaRegistry) {\n super();\n // Use the parent's map for metadata storage\n this._map = this.parent._map as Map<\n Schema,\n $replace<Meta & { [key: string]: unknown }, Schema>\n >;\n }\n\n add<S extends Schema>(\n schema: S,\n ..._meta: undefined extends Meta & { [key: string]: unknown }\n ? [$replace<Meta & { [key: string]: unknown }, S>?]\n : [$replace<Meta & { [key: string]: unknown }, S>]\n ): this {\n const firstMeta = _meta[0];\n if (firstMeta && !firstMeta?.default) {\n const defaultValueGetter = getInteropZodDefaultGetter(schema);\n if (defaultValueGetter != null) {\n // eslint-disable-next-line no-param-reassign\n firstMeta.default = defaultValueGetter;\n }\n }\n return super.add(schema, ..._meta);\n }\n}\n\n// Augment the zod/v4 module nudging the `register` method\n// to use the user provided input schema if specified.\ndeclare module \"zod/v4\" {\n export interface ZodType<\n out Output = unknown,\n out Input = unknown,\n out Internals extends core.$ZodTypeInternals<\n Output,\n Input\n > = core.$ZodTypeInternals<Output, Input>\n > extends core.$ZodType<Output, Input, Internals> {\n register<\n R extends LanggraphZodMetaRegistry,\n TOutput = core.output<this>,\n TInput = core.input<this>,\n TInternals extends core.$ZodTypeInternals<\n TOutput,\n TInput\n > = core.$ZodTypeInternals<TOutput, TInput>\n >(\n registry: R,\n meta: SchemaMeta<TOutput, TInput>\n ): ReducedZodChannel<this, ZodType<TOutput, TInput, TInternals>>;\n }\n}\n\ndeclare module \"zod/v4-mini\" {\n export interface ZodMiniType<\n out Output = unknown,\n out Input = unknown,\n out Internals extends core.$ZodTypeInternals<\n Output,\n Input\n > = core.$ZodTypeInternals<Output, Input>\n > extends core.$ZodType<Output, Input, Internals> {\n register<\n R extends LanggraphZodMetaRegistry,\n TOutput = core.output<this>,\n TInput = core.input<this>,\n TInternals extends core.$ZodTypeInternals<\n TOutput,\n TInput\n > = core.$ZodTypeInternals<TOutput, TInput>\n >(\n registry: R,\n meta: SchemaMeta<TOutput, TInput>\n ): ReducedZodChannel<this, ZodMiniType<TOutput, TInput, TInternals>>;\n }\n}\n\nexport const registry = new LanggraphZodMetaRegistry(schemaMetaRegistry);\n"],"mappings":";;;;;;;;;;;;;;;;AA2BA,IAAa,2BAAb,cAGU,aAAwD;;;;;;CAMhE,YAAY,AAAUA,QAA4B;AAChD;EADoB;AAGpB,OAAK,OAAO,KAAK,OAAO;;CAM1B,IACE,QACA,GAAG,OAGG;EACN,MAAM,YAAY,MAAM;AACxB,MAAI,aAAa,CAAC,WAAW,SAAS;GACpC,MAAM,qBAAqB,2BAA2B;AACtD,OAAI,sBAAsB,KAExB,WAAU,UAAU;;AAGxB,SAAO,MAAM,IAAI,QAAQ,GAAG;;;AAsDhC,MAAa,WAAW,IAAI,yBAAyB"}
|
package/dist/interrupt.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interrupt.cjs","names":["config: RunnableConfig | undefined","AsyncLocalStorageProviderSingleton","checkpointer: BaseCheckpointSaver","CONFIG_KEY_CHECKPOINTER","GraphValueError","scratchpad: PregelScratchpad","CONFIG_KEY_SCRATCHPAD","CONFIG_KEY_SEND","RESUME","ns: string[] | undefined","CONFIG_KEY_CHECKPOINT_NS","CHECKPOINT_NAMESPACE_SEPARATOR","XXH3","GraphInterrupt"],"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 scratchpad.resume[idx] as R;\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 scratchpad.resume.push(v);\n conf[CONFIG_KEY_SEND]?.([[RESUME, scratchpad.resume] as PendingWrite]);\n return v as R;\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 throw new GraphInterrupt([{ id, value }]);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DA,SAAgB,UAAgC,OAAa;CAC3D,MAAMA,SACJC,+DAAmC;AACrC,KAAI,CAAC,OACH,OAAM,IAAI,MAAM;CAGlB,MAAM,OAAO,OAAO;AACpB,KAAI,CAAC,KACH,OAAM,IAAI,MAAM;CAGlB,MAAMC,eAAoC,KAAKC;AAC/C,KAAI,CAAC,aACH,OAAM,IAAIC,+BAAgB,uBAAuB,EAC/C,eAAe;CAKnB,MAAMC,aAA+B,KAAKC;AAC1C,YAAW,oBAAoB;CAC/B,MAAM,MAAM,WAAW;AAGvB,KAAI,WAAW,OAAO,SAAS,KAAK,MAAM,WAAW,OAAO,QAAQ;AAClE,OAAKC,qCAAmB,CAAC,CAACC,0BAAQ,WAAW;AAC7C,SAAO,WAAW,OAAO;;AAI3B,KAAI,WAAW,eAAe,QAAW;AACvC,MAAI,WAAW,OAAO,WAAW,IAC/B,OAAM,IAAI,MACR,2BAA2B,WAAW,OAAO,OAAO,OAAO;EAG/D,MAAM,IAAI,WAAW;AACrB,aAAW,OAAO,KAAK;AACvB,OAAKD,qCAAmB,CAAC,CAACC,0BAAQ,WAAW;AAC7C,SAAO;;CAIT,MAAMC,KAA2B,KAAKC,6CAA2B,MAC/DC;CAGF,MAAM,KAAK,KAAKC,kBAAK,GAAG,KAAKD,qDAAmC;AAChE,OAAM,IAAIE,8BAAe,CAAC;EAAE;EAAI"}
|
|
1
|
+
{"version":3,"file":"interrupt.cjs","names":["config: RunnableConfig | undefined","AsyncLocalStorageProviderSingleton","checkpointer: BaseCheckpointSaver","CONFIG_KEY_CHECKPOINTER","GraphValueError","scratchpad: PregelScratchpad","CONFIG_KEY_SCRATCHPAD","CONFIG_KEY_SEND","RESUME","ns: string[] | undefined","CONFIG_KEY_CHECKPOINT_NS","CHECKPOINT_NAMESPACE_SEPARATOR","XXH3","GraphInterrupt"],"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 scratchpad.resume[idx] as R;\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 scratchpad.resume.push(v);\n conf[CONFIG_KEY_SEND]?.([[RESUME, scratchpad.resume] as PendingWrite]);\n return v as R;\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 throw new GraphInterrupt([{ id, value }]);\n}\n\ntype FilterAny<X> = (<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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DA,SAAgB,UAAgC,OAAa;CAC3D,MAAMA,SACJC,+DAAmC;AACrC,KAAI,CAAC,OACH,OAAM,IAAI,MAAM;CAGlB,MAAM,OAAO,OAAO;AACpB,KAAI,CAAC,KACH,OAAM,IAAI,MAAM;CAGlB,MAAMC,eAAoC,KAAKC;AAC/C,KAAI,CAAC,aACH,OAAM,IAAIC,+BAAgB,uBAAuB,EAC/C,eAAe;CAKnB,MAAMC,aAA+B,KAAKC;AAC1C,YAAW,oBAAoB;CAC/B,MAAM,MAAM,WAAW;AAGvB,KAAI,WAAW,OAAO,SAAS,KAAK,MAAM,WAAW,OAAO,QAAQ;AAClE,OAAKC,qCAAmB,CAAC,CAACC,0BAAQ,WAAW;AAC7C,SAAO,WAAW,OAAO;;AAI3B,KAAI,WAAW,eAAe,QAAW;AACvC,MAAI,WAAW,OAAO,WAAW,IAC/B,OAAM,IAAI,MACR,2BAA2B,WAAW,OAAO,OAAO,OAAO;EAG/D,MAAM,IAAI,WAAW;AACrB,aAAW,OAAO,KAAK;AACvB,OAAKD,qCAAmB,CAAC,CAACC,0BAAQ,WAAW;AAC7C,SAAO;;CAIT,MAAMC,KAA2B,KAAKC,6CAA2B,MAC/DC;CAGF,MAAM,KAAK,KAAKC,kBAAK,GAAG,KAAKD,qDAAmC;AAChE,OAAM,IAAIE,8BAAe,CAAC;EAAE;EAAI"}
|
package/dist/interrupt.d.cts
CHANGED
|
@@ -44,6 +44,15 @@
|
|
|
44
44
|
*/
|
|
45
45
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
46
46
|
declare function interrupt<I = unknown, R = any>(value: I): R;
|
|
47
|
+
type FilterAny<X> = (<T>() => T extends X ? 1 : 2) extends (<T
|
|
48
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
49
|
+
>() => (T extends any ? 1 : 2)) ? never : X;
|
|
50
|
+
type InferInterruptInputType<T> = T extends typeof interrupt<infer I, unknown> ? I : T extends {
|
|
51
|
+
[key: string]: typeof interrupt<any, any>;
|
|
52
|
+
} ? { [K in keyof T]: InferInterruptInputType<T[K]> }[keyof T] : unknown;
|
|
53
|
+
type InferInterruptResumeType<T, TInner = false> = T extends typeof interrupt<never, infer R> ? TInner extends true ? FilterAny<R> : R : T extends {
|
|
54
|
+
[key: string]: typeof interrupt<any, any>;
|
|
55
|
+
} ? { [K in keyof T]: InferInterruptResumeType<T[K], true> }[keyof T] : unknown;
|
|
47
56
|
//#endregion
|
|
48
|
-
export { interrupt };
|
|
57
|
+
export { InferInterruptInputType, InferInterruptResumeType, interrupt };
|
|
49
58
|
//# sourceMappingURL=interrupt.d.cts.map
|
package/dist/interrupt.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interrupt.d.cts","names":["interrupt","I","R"],"sources":["../src/interrupt.d.ts"],"sourcesContent":["/**\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 declare function interrupt<I = unknown, R = any>(value: I): R;\n"],"mappings":";;AA4CA
|
|
1
|
+
{"version":3,"file":"interrupt.d.cts","names":["interrupt","I","R","FilterAny","T","X","InferInterruptInputType","K","InferInterruptResumeType","TInner"],"sources":["../src/interrupt.d.ts"],"sourcesContent":["/**\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 declare function interrupt<I = unknown, R = any>(value: I): R;\ntype FilterAny<X> = (<T>() => T extends X ? 1 : 2) extends <T\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n>() => (T extends any ? 1 : 2) ? never : X;\nexport type InferInterruptInputType<T> = T extends typeof interrupt<infer I, unknown> ? I : T extends {\n [key: string]: typeof interrupt<any, any>;\n} ? {\n [K in keyof T]: InferInterruptInputType<T[K]>;\n}[keyof T] : unknown;\nexport type InferInterruptResumeType<T, TInner = false> = T extends typeof interrupt<never, infer R> ? TInner extends true ? FilterAny<R> : R : T extends {\n [key: string]: typeof interrupt<any, any>;\n} ? {\n [K in keyof T]: InferInterruptResumeType<T[K], true>;\n}[keyof T] : unknown;\nexport {};\n"],"mappings":";;AA4CA;;;;;AAAqE;;;;;;;AAIrE;;;;;;;;;;;;;AAKA;;;;;;;;;;;;;;;;;;iBATwBA,uCAAuCC,IAAIC;KAC9DC,yBAAyBC,UAAUC;;QAEhCD,kCAAiCC;KAC7BC,6BAA6BF,iBAAiBJ,8BAA8BC,IAAIG;wBAClEJ;kBAEVI,IAAIE,wBAAwBF,EAAEG,YACtCH;KACII,8CAA8CJ,iBAAiBJ,4BAA4BS,sBAAsBN,UAAUD,KAAKA,IAAIE;wBACtHJ;kBAEVI,IAAII,yBAAyBJ,EAAEG,kBACvCH"}
|