@langchain/langgraph 0.2.62 → 0.2.63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -0
- package/dist/prebuilt/react_agent_executor.cjs +34 -13
- package/dist/prebuilt/react_agent_executor.d.ts +3 -0
- package/dist/prebuilt/react_agent_executor.js +34 -15
- package/dist/prebuilt/react_agent_executor.js.map +1 -1
- package/dist/prebuilt/tool_node.cjs +26 -4
- package/dist/prebuilt/tool_node.js +27 -5
- package/dist/prebuilt/tool_node.js.map +1 -1
- package/dist/pregel/debug.cjs +9 -7
- package/dist/pregel/debug.d.ts +10 -0
- package/dist/pregel/debug.js +2 -2
- package/dist/pregel/debug.js.map +1 -1
- package/dist/pregel/debug.test.cjs +189 -0
- package/dist/pregel/debug.test.d.ts +1 -0
- package/dist/pregel/debug.test.js +187 -0
- package/dist/pregel/debug.test.js.map +1 -0
- package/dist/pregel/io.mapCommand.test.cjs +151 -0
- package/dist/pregel/io.mapCommand.test.d.ts +1 -0
- package/dist/pregel/io.mapCommand.test.js +149 -0
- package/dist/pregel/io.mapCommand.test.js.map +1 -0
- package/dist/pregel/messages.test.cjs +351 -0
- package/dist/pregel/messages.test.d.ts +1 -0
- package/dist/pregel/messages.test.js +349 -0
- package/dist/pregel/messages.test.js.map +1 -0
- package/dist/pregel/read.cjs +1 -1
- package/dist/pregel/read.js +1 -1
- package/dist/pregel/read.js.map +1 -1
- package/dist/pregel/read.test.cjs +194 -0
- package/dist/pregel/read.test.d.ts +1 -0
- package/dist/pregel/read.test.js +192 -0
- package/dist/pregel/read.test.js.map +1 -0
- package/dist/pregel/runner.test.cjs +66 -0
- package/dist/pregel/runner.test.d.ts +1 -0
- package/dist/pregel/runner.test.js +64 -0
- package/dist/pregel/runner.test.js.map +1 -0
- package/dist/pregel/utils/config.test.cjs +214 -0
- package/dist/pregel/utils/config.test.d.ts +1 -0
- package/dist/pregel/utils/config.test.js +212 -0
- package/dist/pregel/utils/config.test.js.map +1 -0
- package/dist/pregel/utils/subgraph.test.cjs +83 -0
- package/dist/pregel/utils/subgraph.test.d.ts +1 -0
- package/dist/pregel/utils/subgraph.test.js +81 -0
- package/dist/pregel/utils/subgraph.test.js.map +1 -0
- package/dist/pregel/validate.test.cjs +220 -0
- package/dist/pregel/validate.test.d.ts +1 -0
- package/dist/pregel/validate.test.js +218 -0
- package/dist/pregel/validate.test.js.map +1 -0
- package/dist/pregel/write.test.cjs +181 -0
- package/dist/pregel/write.test.d.ts +1 -0
- package/dist/pregel/write.test.js +179 -0
- package/dist/pregel/write.test.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -56,6 +56,20 @@ const result = await agent.invoke(
|
|
|
56
56
|
);
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
+
## Full-stack Quickstart
|
|
60
|
+
|
|
61
|
+
Get started quickly by building a full-stack LangGraph application using the [`create-agent-chat-app`](https://www.npmjs.com/package/create-agent-chat-app) CLI:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
npx create-agent-chat-app@latest
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
The CLI sets up a chat interface and helps you configure your application, including:
|
|
68
|
+
|
|
69
|
+
- 🧠 Choice of 4 prebuilt agents (ReAct, Memory, Research, Retrieval)
|
|
70
|
+
- 🌐 Frontend framework (Next.js or Vite)
|
|
71
|
+
- 📦 Package manager (`npm`, `yarn`, or `pnpm`)
|
|
72
|
+
|
|
59
73
|
## Why use LangGraph?
|
|
60
74
|
|
|
61
75
|
LangGraph is built for developers who want to build powerful, adaptable AI agents. Developers choose LangGraph for:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createReactAgent = exports.createReactAgentAnnotation = void 0;
|
|
3
|
+
exports.createReactAgent = exports.createReactAgentAnnotation = exports._getModel = exports._shouldBindTools = void 0;
|
|
4
4
|
const messages_1 = require("@langchain/core/messages");
|
|
5
5
|
const runnables_1 = require("@langchain/core/runnables");
|
|
6
6
|
const index_js_1 = require("../graph/index.cjs");
|
|
@@ -67,20 +67,34 @@ function _getPrompt(prompt, stateModifier, messageModifier) {
|
|
|
67
67
|
}
|
|
68
68
|
return _getPromptRunnable(finalPrompt);
|
|
69
69
|
}
|
|
70
|
+
function _isBaseChatModel(model) {
|
|
71
|
+
return ("invoke" in model &&
|
|
72
|
+
typeof model.invoke === "function" &&
|
|
73
|
+
"_modelType" in model);
|
|
74
|
+
}
|
|
70
75
|
function _shouldBindTools(llm, tools) {
|
|
71
|
-
|
|
76
|
+
// If model is a RunnableSequence, find a RunnableBinding or BaseChatModel in its steps
|
|
77
|
+
let model = llm;
|
|
78
|
+
if (runnables_1.RunnableSequence.isRunnableSequence(model)) {
|
|
79
|
+
model =
|
|
80
|
+
model.steps.find((step) => runnables_1.RunnableBinding.isRunnableBinding(step) || _isBaseChatModel(step)) || model;
|
|
81
|
+
}
|
|
82
|
+
// If not a RunnableBinding, we should bind tools
|
|
83
|
+
if (!runnables_1.RunnableBinding.isRunnableBinding(model)) {
|
|
72
84
|
return true;
|
|
73
85
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
86
|
+
// If no tools in kwargs, we should bind tools
|
|
87
|
+
if (!model.kwargs ||
|
|
88
|
+
typeof model.kwargs !== "object" ||
|
|
89
|
+
!("tools" in model.kwargs)) {
|
|
77
90
|
return true;
|
|
78
91
|
}
|
|
79
|
-
let boundTools =
|
|
92
|
+
let boundTools = model.kwargs.tools;
|
|
80
93
|
// google-style
|
|
81
94
|
if (boundTools.length === 1 && "functionDeclarations" in boundTools[0]) {
|
|
82
95
|
boundTools = boundTools[0].functionDeclarations;
|
|
83
96
|
}
|
|
97
|
+
// Check if tools count matches
|
|
84
98
|
if (tools.length !== boundTools.length) {
|
|
85
99
|
throw new Error("Number of tools in the model.bindTools() and tools passed to createReactAgent must match");
|
|
86
100
|
}
|
|
@@ -104,7 +118,9 @@ function _shouldBindTools(llm, tools) {
|
|
|
104
118
|
else {
|
|
105
119
|
continue;
|
|
106
120
|
}
|
|
107
|
-
|
|
121
|
+
if (boundToolName) {
|
|
122
|
+
boundToolNames.add(boundToolName);
|
|
123
|
+
}
|
|
108
124
|
}
|
|
109
125
|
const missingTools = [...toolNames].filter((x) => !boundToolNames.has(x));
|
|
110
126
|
if (missingTools.length > 0) {
|
|
@@ -113,19 +129,24 @@ function _shouldBindTools(llm, tools) {
|
|
|
113
129
|
}
|
|
114
130
|
return false;
|
|
115
131
|
}
|
|
132
|
+
exports._shouldBindTools = _shouldBindTools;
|
|
116
133
|
function _getModel(llm) {
|
|
117
|
-
//
|
|
134
|
+
// If model is a RunnableSequence, find a RunnableBinding or BaseChatModel in its steps
|
|
118
135
|
let model = llm;
|
|
119
|
-
if (runnables_1.
|
|
120
|
-
model =
|
|
136
|
+
if (runnables_1.RunnableSequence.isRunnableSequence(model)) {
|
|
137
|
+
model =
|
|
138
|
+
model.steps.find((step) => runnables_1.RunnableBinding.isRunnableBinding(step) || _isBaseChatModel(step)) || model;
|
|
121
139
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
140
|
+
// Get the underlying model from a RunnableBinding
|
|
141
|
+
if (runnables_1.RunnableBinding.isRunnableBinding(model)) {
|
|
142
|
+
model = model.bound;
|
|
143
|
+
}
|
|
144
|
+
if (!_isBaseChatModel(model)) {
|
|
125
145
|
throw new Error(`Expected \`llm\` to be a ChatModel or RunnableBinding (e.g. llm.bind_tools(...)) with invoke() and generate() methods, got ${model.constructor.name}`);
|
|
126
146
|
}
|
|
127
147
|
return model;
|
|
128
148
|
}
|
|
149
|
+
exports._getModel = _getModel;
|
|
129
150
|
const createReactAgentAnnotation = () => annotation_js_1.Annotation.Root({
|
|
130
151
|
messages: (0, annotation_js_1.Annotation)({
|
|
131
152
|
reducer: message_js_1.messagesStateReducer,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { BaseChatModel } from "@langchain/core/language_models/chat_models";
|
|
1
2
|
import { LanguageModelLike } from "@langchain/core/language_models/base";
|
|
2
3
|
import { BaseMessage, BaseMessageLike, SystemMessage } from "@langchain/core/messages";
|
|
3
4
|
import { Runnable, RunnableToolLike } from "@langchain/core/runnables";
|
|
@@ -19,6 +20,8 @@ export type StructuredResponseSchemaAndPrompt<StructuredResponseType> = {
|
|
|
19
20
|
prompt: string;
|
|
20
21
|
schema: z.ZodType<StructuredResponseType> | Record<string, any>;
|
|
21
22
|
};
|
|
23
|
+
export declare function _shouldBindTools(llm: LanguageModelLike, tools: (StructuredToolInterface | DynamicTool | RunnableToolLike)[]): boolean;
|
|
24
|
+
export declare function _getModel(llm: LanguageModelLike): BaseChatModel;
|
|
22
25
|
export type Prompt = SystemMessage | string | ((state: typeof MessagesAnnotation.State, config: LangGraphRunnableConfig) => BaseMessageLike[]) | ((state: typeof MessagesAnnotation.State, config: LangGraphRunnableConfig) => Promise<BaseMessageLike[]>) | Runnable;
|
|
23
26
|
/** @deprecated Use Prompt instead. */
|
|
24
27
|
export type StateModifier = Prompt;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isAIMessage, isBaseMessage, isToolMessage, SystemMessage, } from "@langchain/core/messages";
|
|
2
|
-
import { Runnable, RunnableLambda, } from "@langchain/core/runnables";
|
|
2
|
+
import { Runnable, RunnableLambda, RunnableSequence, RunnableBinding, } from "@langchain/core/runnables";
|
|
3
3
|
import { StateGraph, } from "../graph/index.js";
|
|
4
4
|
import { ToolNode } from "./tool_node.js";
|
|
5
5
|
import { Annotation } from "../graph/annotation.js";
|
|
@@ -64,20 +64,34 @@ function _getPrompt(prompt, stateModifier, messageModifier) {
|
|
|
64
64
|
}
|
|
65
65
|
return _getPromptRunnable(finalPrompt);
|
|
66
66
|
}
|
|
67
|
-
function
|
|
68
|
-
|
|
67
|
+
function _isBaseChatModel(model) {
|
|
68
|
+
return ("invoke" in model &&
|
|
69
|
+
typeof model.invoke === "function" &&
|
|
70
|
+
"_modelType" in model);
|
|
71
|
+
}
|
|
72
|
+
export function _shouldBindTools(llm, tools) {
|
|
73
|
+
// If model is a RunnableSequence, find a RunnableBinding or BaseChatModel in its steps
|
|
74
|
+
let model = llm;
|
|
75
|
+
if (RunnableSequence.isRunnableSequence(model)) {
|
|
76
|
+
model =
|
|
77
|
+
model.steps.find((step) => RunnableBinding.isRunnableBinding(step) || _isBaseChatModel(step)) || model;
|
|
78
|
+
}
|
|
79
|
+
// If not a RunnableBinding, we should bind tools
|
|
80
|
+
if (!RunnableBinding.isRunnableBinding(model)) {
|
|
69
81
|
return true;
|
|
70
82
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
83
|
+
// If no tools in kwargs, we should bind tools
|
|
84
|
+
if (!model.kwargs ||
|
|
85
|
+
typeof model.kwargs !== "object" ||
|
|
86
|
+
!("tools" in model.kwargs)) {
|
|
74
87
|
return true;
|
|
75
88
|
}
|
|
76
|
-
let boundTools =
|
|
89
|
+
let boundTools = model.kwargs.tools;
|
|
77
90
|
// google-style
|
|
78
91
|
if (boundTools.length === 1 && "functionDeclarations" in boundTools[0]) {
|
|
79
92
|
boundTools = boundTools[0].functionDeclarations;
|
|
80
93
|
}
|
|
94
|
+
// Check if tools count matches
|
|
81
95
|
if (tools.length !== boundTools.length) {
|
|
82
96
|
throw new Error("Number of tools in the model.bindTools() and tools passed to createReactAgent must match");
|
|
83
97
|
}
|
|
@@ -101,7 +115,9 @@ function _shouldBindTools(llm, tools) {
|
|
|
101
115
|
else {
|
|
102
116
|
continue;
|
|
103
117
|
}
|
|
104
|
-
|
|
118
|
+
if (boundToolName) {
|
|
119
|
+
boundToolNames.add(boundToolName);
|
|
120
|
+
}
|
|
105
121
|
}
|
|
106
122
|
const missingTools = [...toolNames].filter((x) => !boundToolNames.has(x));
|
|
107
123
|
if (missingTools.length > 0) {
|
|
@@ -110,15 +126,18 @@ function _shouldBindTools(llm, tools) {
|
|
|
110
126
|
}
|
|
111
127
|
return false;
|
|
112
128
|
}
|
|
113
|
-
function _getModel(llm) {
|
|
114
|
-
//
|
|
129
|
+
export function _getModel(llm) {
|
|
130
|
+
// If model is a RunnableSequence, find a RunnableBinding or BaseChatModel in its steps
|
|
115
131
|
let model = llm;
|
|
116
|
-
if (
|
|
117
|
-
model =
|
|
132
|
+
if (RunnableSequence.isRunnableSequence(model)) {
|
|
133
|
+
model =
|
|
134
|
+
model.steps.find((step) => RunnableBinding.isRunnableBinding(step) || _isBaseChatModel(step)) || model;
|
|
118
135
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
136
|
+
// Get the underlying model from a RunnableBinding
|
|
137
|
+
if (RunnableBinding.isRunnableBinding(model)) {
|
|
138
|
+
model = model.bound;
|
|
139
|
+
}
|
|
140
|
+
if (!_isBaseChatModel(model)) {
|
|
122
141
|
throw new Error(`Expected \`llm\` to be a ChatModel or RunnableBinding (e.g. llm.bind_tools(...)) with invoke() and generate() methods, got ${model.constructor.name}`);
|
|
123
142
|
}
|
|
124
143
|
return model;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react_agent_executor.js","sourceRoot":"","sources":["../../src/prebuilt/react_agent_executor.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,QAAQ,EAGR,cAAc,
|
|
1
|
+
{"version":3,"file":"react_agent_executor.js","sourceRoot":"","sources":["../../src/prebuilt/react_agent_executor.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,QAAQ,EAGR,cAAc,EAEd,gBAAgB,EAChB,eAAe,GAChB,MAAM,2BAA2B,CAAC;AASnC,OAAO,EACL,UAAU,GAGX,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAY,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAuB7C,SAAS,+BAA+B,CACtC,eAAgC;IAEhC,iCAAiC;IACjC,IACE,OAAO,eAAe,KAAK,QAAQ;QACnC,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC,QAAQ,EAAE,KAAK,QAAQ,CAAC,EAC3E;QACA,OAAO,eAAe,CAAC;KACxB;IAED,2BAA2B;IAC3B,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE;QACzC,OAAO,KAAK,EAAE,KAAsC,EAAE,EAAE,CACtD,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;KACnC;IAED,kBAAkB;IAClB,IAAI,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;QACxC,OAAO,cAAc,CAAC,IAAI,CACxB,CAAC,KAAsC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAC3D,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KACzB;IAED,MAAM,IAAI,KAAK,CACb,wCAAwC,OAAO,eAAe,EAAE,CACjE,CAAC;AACJ,CAAC;AAED,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAEtC,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,cAAiC,CAAC;IAEtC,IAAI,MAAM,IAAI,IAAI,EAAE;QAClB,cAAc,GAAG,cAAc,CAAC,IAAI,CAClC,CAAC,KAAsC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAC3D,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;KACjD;SAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QACrC,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QAChD,cAAc,GAAG,cAAc,CAAC,IAAI,CAClC,CAAC,KAAsC,EAAE,EAAE;YACzC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC,CACF,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;KACjD;SAAM,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,QAAQ,EAAE;QAClE,cAAc,GAAG,cAAc,CAAC,IAAI,CAClC,CAAC,KAAsC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CACxE,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;KACjD;SAAM,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;QACvC,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC;YACtD,OAAO,EAAE,oBAAoB;SAC9B,CAAC,CAAC;KACJ;SAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QACtC,cAAc,GAAG,MAAM,CAAC;KACzB;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,qCAAqC,OAAO,MAAM,EAAE,CAAC,CAAC;KACvE;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,UAAU,CACjB,MAAe,EACf,aAAuD,EACvD,eAA2D;IAE3D,oCAAoC;IACpC,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC,MAAM,CAClE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CACjB,CAAC,MAAM,CAAC;IACT,IAAI,YAAY,GAAG,CAAC,EAAE;QACpB,MAAM,IAAI,KAAK,CACb,qFAAqF,CACtF,CAAC;KACH;IAED,IAAI,WAAW,GAAG,MAAM,CAAC;IACzB,IAAI,aAAa,IAAI,IAAI,EAAE;QACzB,WAAW,GAAG,aAAa,CAAC;KAC7B;SAAM,IAAI,eAAe,IAAI,IAAI,EAAE;QAClC,WAAW,GAAG,+BAA+B,CAAC,eAAe,CAAC,CAAC;KAChE;IAED,OAAO,kBAAkB,CAAC,WAAW,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAwB;IAChD,OAAO,CACL,QAAQ,IAAI,KAAK;QACjB,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU;QAClC,YAAY,IAAI,KAAK,CACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,GAAsB,EACtB,KAAmE;IAEnE,uFAAuF;IACvF,IAAI,KAAK,GAAG,GAAG,CAAC;IAChB,IAAI,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;QAC9C,KAAK;YACH,KAAK,CAAC,KAAK,CAAC,IAAI,CACd,CAAC,IAAI,EAAE,EAAE,CACP,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,CACpE,IAAI,KAAK,CAAC;KACd;IAED,iDAAiD;IACjD,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;QAC7C,OAAO,IAAI,CAAC;KACb;IAED,8CAA8C;IAC9C,IACE,CAAC,KAAK,CAAC,MAAM;QACb,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;QAChC,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,EAC1B;QACA,OAAO,IAAI,CAAC;KACb;IAED,IAAI,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAyB,CAAC;IACxD,eAAe;IACf,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,sBAAsB,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;QACtE,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC;KACjD;IAED,+BAA+B;IAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE;QACtC,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAC;KACH;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IAEzC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;QAClC,IAAI,aAAiC,CAAC;QAEtC,oBAAoB;QACpB,IAAI,MAAM,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU,EAAE;YACxD,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;SACzC;QACD,kCAAkC;aAC7B,IAAI,MAAM,IAAI,SAAS,EAAE;YAC5B,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC;SAChC;QACD,qBAAqB;aAChB,IAAI,UAAU,IAAI,SAAS,IAAI,MAAM,IAAI,SAAS,CAAC,QAAQ,EAAE;YAChE,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;SACzC;QACD,uCAAuC;aAClC;YACH,SAAS;SACV;QAED,IAAI,aAAa,EAAE;YACjB,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;SACnC;KACF;IAED,MAAM,YAAY,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3B,MAAM,IAAI,KAAK,CACb,kBAAkB,YAAY,6BAA6B;YACzD,iFAAiF,CACpF,CAAC;KACH;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAsB;IAC9C,uFAAuF;IACvF,IAAI,KAAK,GAAG,GAAG,CAAC;IAChB,IAAI,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;QAC9C,KAAK;YACH,KAAK,CAAC,KAAK,CAAC,IAAI,CACd,CAAC,IAAI,EAAE,EAAE,CACP,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,CACpE,IAAI,KAAK,CAAC;KACd;IAED,kDAAkD;IAClD,IAAI,eAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;QAC5C,KAAK,GAAG,KAAK,CAAC,KAAsB,CAAC;KACtC;IAED,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;QAC5B,MAAM,IAAI,KAAK,CACb,8HAA8H,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CACvJ,CAAC;KACH;IAED,OAAO,KAAsB,CAAC;AAChC,CAAC;AA0BD,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAGtC,EAAE,CACJ,UAAU,CAAC,IAAI,CAAC;IACd,QAAQ,EAAE,UAAU,CAA0B;QAC5C,OAAO,EAAE,oBAAoB;QAC7B,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;KAClB,CAAC;IACF,kBAAkB,EAAE,CAAA,UAAa,CAAA;CAClC,CAAC,CAAC;AAmEL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,MAAM,UAAU,gBAAgB,CAM9B,MAA2D;IAY3D,MAAM,EACJ,GAAG,EACH,KAAK,EACL,eAAe,EACf,aAAa,EACb,MAAM,EACN,WAAW,EACX,eAAe,EACf,YAAY,EACZ,eAAe,EACf,cAAc,EACd,KAAK,EACL,cAAc,EACd,IAAI,GACL,GAAG,MAAM,CAAC;IAEX,IAAI,WAAyE,CAAC;IAC9E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACzB,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC;KAC3B;SAAM;QACL,WAAW,GAAG,KAAK,CAAC;KACrB;IAED,IAAI,cAAiC,CAAC;IACtC,IAAI,gBAAgB,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE;QACtC,IAAI,CAAC,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,UAAU,EAAE;YAChE,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,gCAAgC,CAAC,CAAC;SAC7D;QACD,cAAc,GAAG,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;KAC7C;SAAM;QACL,cAAc,GAAG,GAAG,CAAC;KACtB;IAED,MAAM,aAAa,GACjB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,eAAe,CAClD,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAEvB,uEAAuE;IACvE,gDAAgD;IAChD,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAChC,WAAW;SACR,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC;SAC7D,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAC5B,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,KAA2C,EAAE,EAAE;QACrE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;QAC3B,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAClD,IACE,WAAW,CAAC,WAAW,CAAC;YACxB,CAAC,CAAC,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,EAChE;YACA,OAAO,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,GAAG,CAAC;SACtE;aAAM;YACL,OAAO,UAAU,CAAC;SACnB;IACH,CAAC,CAAC;IAEF,MAAM,0BAA0B,GAAG,KAAK,EACtC,KAA2C,EAC3C,MAAuB,EACvB,EAAE;QACF,IAAI,cAAc,IAAI,IAAI,EAAE;YAC1B,MAAM,IAAI,KAAK,CACb,qGAAqG,CACtG,CAAC;SACH;QACD,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,yBAAyB,CAAC;QAE9B,IACE,OAAO,cAAc,KAAK,QAAQ;YAClC,QAAQ,IAAI,cAAc;YAC1B,QAAQ,IAAI,cAAc,EAC1B;YACA,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC;YAC1C,yBAAyB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;YACxE,QAAQ,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;SAC1D;aAAM;YACL,yBAAyB;gBACvB,SAAS,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;SACvD;QAED,MAAM,QAAQ,GAAG,MAAM,yBAAyB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1E,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC;IAC1C,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,EACrB,KAA2C,EAC3C,MAAuB,EACvB,EAAE;QACF,gCAAgC;QAChC,MAAM,QAAQ,GAAG,CAAC,MAAM,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAgB,CAAC;QAC5E,kCAAkC;QAClC,iEAAiE;QACjE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;QAC/B,OAAO,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;IAClC,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,UAAU,CAC7B,WAAW,IAAI,0BAA0B,EAA4B,CACtE;SACE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC;SAC3B,OAAO,CAAC,OAAO,EAAE,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC;SAC3C,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAE3B,IAAI,cAAc,KAAK,SAAS,EAAE;QAChC,QAAQ;aACL,OAAO,CAAC,8BAA8B,EAAE,0BAA0B,CAAC;aACnE,OAAO,CAAC,8BAA8B,EAAE,GAAG,CAAC;aAC5C,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE;YAC5C,QAAQ,EAAE,OAAO;YACjB,CAAC,GAAG,CAAC,EAAE,GAAG;YACV,4BAA4B,EAAE,8BAA8B;SAC7D,CAAC,CAAC;KACN;SAAM;QACL,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE;YACpD,QAAQ,EAAE,OAAO;YACjB,CAAC,GAAG,CAAC,EAAE,GAAG;SACX,CAAC,CAAC;KACJ;IAED,MAAM,kBAAkB,GAAG,CAAC,KAA2C,EAAE,EAAE;QACzE,wCAAwC;QACxC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;YACtD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;gBAC3B,MAAM;aACP;YACD,sDAAsD;YACtD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACtE,OAAO,GAAG,CAAC;aACZ;SACF;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,IAAI,kBAAkB,CAAC,IAAI,GAAG,CAAC,EAAE;QAC/B,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;KAC3E;SAAM;QACL,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KACpC;IAED,OAAO,QAAQ,CAAC,OAAO,CAAC;QACtB,YAAY,EAAE,YAAY,IAAI,eAAe;QAC7C,eAAe;QACf,cAAc;QACd,KAAK;QACL,IAAI;KACL,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -198,12 +198,34 @@ class ToolNode extends utils_js_1.RunnableCallable {
|
|
|
198
198
|
return (Array.isArray(input) ? outputs : { messages: outputs });
|
|
199
199
|
}
|
|
200
200
|
// Handle mixed Command and non-Command outputs
|
|
201
|
-
const combinedOutputs =
|
|
201
|
+
const combinedOutputs = [];
|
|
202
|
+
let parentCommand = null;
|
|
203
|
+
for (const output of outputs) {
|
|
202
204
|
if ((0, constants_js_1.isCommand)(output)) {
|
|
203
|
-
|
|
205
|
+
if (output.graph === constants_js_1.Command.PARENT &&
|
|
206
|
+
Array.isArray(output.goto) &&
|
|
207
|
+
output.goto.every((send) => (0, constants_js_1._isSend)(send))) {
|
|
208
|
+
if (parentCommand) {
|
|
209
|
+
parentCommand.goto.push(...output.goto);
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
parentCommand = new constants_js_1.Command({
|
|
213
|
+
graph: constants_js_1.Command.PARENT,
|
|
214
|
+
goto: output.goto,
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
combinedOutputs.push(output);
|
|
220
|
+
}
|
|
204
221
|
}
|
|
205
|
-
|
|
206
|
-
|
|
222
|
+
else {
|
|
223
|
+
combinedOutputs.push(Array.isArray(input) ? [output] : { messages: [output] });
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
if (parentCommand) {
|
|
227
|
+
combinedOutputs.push(parentCommand);
|
|
228
|
+
}
|
|
207
229
|
return combinedOutputs;
|
|
208
230
|
}
|
|
209
231
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ToolMessage, isBaseMessage, } from "@langchain/core/messages";
|
|
2
2
|
import { RunnableCallable } from "../utils.js";
|
|
3
3
|
import { isGraphInterrupt } from "../errors.js";
|
|
4
|
-
import { END, isCommand } from "../constants.js";
|
|
4
|
+
import { END, isCommand, Command, _isSend } from "../constants.js";
|
|
5
5
|
/**
|
|
6
6
|
* A node that runs the tools requested in the last AIMessage. It can be used
|
|
7
7
|
* either in StateGraph with a "messages" key or in MessageGraph. If multiple
|
|
@@ -195,12 +195,34 @@ export class ToolNode extends RunnableCallable {
|
|
|
195
195
|
return (Array.isArray(input) ? outputs : { messages: outputs });
|
|
196
196
|
}
|
|
197
197
|
// Handle mixed Command and non-Command outputs
|
|
198
|
-
const combinedOutputs =
|
|
198
|
+
const combinedOutputs = [];
|
|
199
|
+
let parentCommand = null;
|
|
200
|
+
for (const output of outputs) {
|
|
199
201
|
if (isCommand(output)) {
|
|
200
|
-
|
|
202
|
+
if (output.graph === Command.PARENT &&
|
|
203
|
+
Array.isArray(output.goto) &&
|
|
204
|
+
output.goto.every((send) => _isSend(send))) {
|
|
205
|
+
if (parentCommand) {
|
|
206
|
+
parentCommand.goto.push(...output.goto);
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
parentCommand = new Command({
|
|
210
|
+
graph: Command.PARENT,
|
|
211
|
+
goto: output.goto,
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
combinedOutputs.push(output);
|
|
217
|
+
}
|
|
201
218
|
}
|
|
202
|
-
|
|
203
|
-
|
|
219
|
+
else {
|
|
220
|
+
combinedOutputs.push(Array.isArray(input) ? [output] : { messages: [output] });
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
if (parentCommand) {
|
|
224
|
+
combinedOutputs.push(parentCommand);
|
|
225
|
+
}
|
|
204
226
|
return combinedOutputs;
|
|
205
227
|
}
|
|
206
228
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool_node.js","sourceRoot":"","sources":["../../src/prebuilt/tool_node.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAEX,aAAa,GACd,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool_node.js","sourceRoot":"","sources":["../../src/prebuilt/tool_node.ts"],"names":[],"mappings":"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"}
|
package/dist/pregel/debug.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.printStepWrites = exports.printStepTasks = exports.printStepCheckpoint = exports.tasksWithWrites = exports.mapDebugCheckpoint = exports.mapDebugTaskResults = exports.mapDebugTasks = exports.printCheckpoint = void 0;
|
|
3
|
+
exports.printStepWrites = exports.printStepTasks = exports.printStepCheckpoint = exports.tasksWithWrites = exports.mapDebugCheckpoint = exports.mapDebugTaskResults = exports.mapDebugTasks = exports._readChannels = exports.printCheckpoint = exports.wrap = void 0;
|
|
4
4
|
const constants_js_1 = require("../constants.cjs");
|
|
5
5
|
const errors_js_1 = require("../errors.cjs");
|
|
6
6
|
const io_js_1 = require("./io.cjs");
|
|
@@ -23,9 +23,10 @@ const COLORS_MAP = {
|
|
|
23
23
|
* Wrap some text in a color for printing to the console.
|
|
24
24
|
*/
|
|
25
25
|
const wrap = (color, text) => `${color.start}${text}${color.end}`;
|
|
26
|
+
exports.wrap = wrap;
|
|
26
27
|
function printCheckpoint(step, channels) {
|
|
27
28
|
console.log([
|
|
28
|
-
`${wrap(COLORS_MAP.blue, "[langgraph/checkpoint]")}`,
|
|
29
|
+
`${(0, exports.wrap)(COLORS_MAP.blue, "[langgraph/checkpoint]")}`,
|
|
29
30
|
`Finishing step ${step}. Channel values:\n`,
|
|
30
31
|
`\n${JSON.stringify(Object.fromEntries(_readChannels(channels)), null, 2)}`,
|
|
31
32
|
].join(""));
|
|
@@ -50,6 +51,7 @@ function* _readChannels(channels
|
|
|
50
51
|
}
|
|
51
52
|
}
|
|
52
53
|
}
|
|
54
|
+
exports._readChannels = _readChannels;
|
|
53
55
|
function* mapDebugTasks(step, tasks) {
|
|
54
56
|
const ts = new Date().toISOString();
|
|
55
57
|
for (const { id, name, input, config, triggers, writes } of tasks) {
|
|
@@ -186,7 +188,7 @@ function tasksWithWrites(tasks, pendingWrites, states) {
|
|
|
186
188
|
exports.tasksWithWrites = tasksWithWrites;
|
|
187
189
|
function printStepCheckpoint(step, channels, whitelist) {
|
|
188
190
|
console.log([
|
|
189
|
-
`${wrap(COLORS_MAP.blue, `[${step}:checkpoint]`)}`,
|
|
191
|
+
`${(0, exports.wrap)(COLORS_MAP.blue, `[${step}:checkpoint]`)}`,
|
|
190
192
|
`\x1b[1m State at the end of step ${step}:\x1b[0m\n`,
|
|
191
193
|
JSON.stringify((0, io_js_1.readChannels)(channels, whitelist), null, 2),
|
|
192
194
|
].join(""));
|
|
@@ -195,10 +197,10 @@ exports.printStepCheckpoint = printStepCheckpoint;
|
|
|
195
197
|
function printStepTasks(step, nextTasks) {
|
|
196
198
|
const nTasks = nextTasks.length;
|
|
197
199
|
console.log([
|
|
198
|
-
`${wrap(COLORS_MAP.blue, `[${step}:tasks]`)}`,
|
|
200
|
+
`${(0, exports.wrap)(COLORS_MAP.blue, `[${step}:tasks]`)}`,
|
|
199
201
|
`\x1b[1m Starting step ${step} with ${nTasks} task${nTasks === 1 ? "" : "s"}:\x1b[0m\n`,
|
|
200
202
|
nextTasks
|
|
201
|
-
.map((task) => `- ${wrap(COLORS_MAP.green, String(task.name))} -> ${JSON.stringify(task.input, null, 2)}`)
|
|
203
|
+
.map((task) => `- ${(0, exports.wrap)(COLORS_MAP.green, String(task.name))} -> ${JSON.stringify(task.input, null, 2)}`)
|
|
202
204
|
.join("\n"),
|
|
203
205
|
].join(""));
|
|
204
206
|
}
|
|
@@ -215,10 +217,10 @@ function printStepWrites(step, writes, whitelist) {
|
|
|
215
217
|
}
|
|
216
218
|
}
|
|
217
219
|
console.log([
|
|
218
|
-
`${wrap(COLORS_MAP.blue, `[${step}:writes]`)}`,
|
|
220
|
+
`${(0, exports.wrap)(COLORS_MAP.blue, `[${step}:writes]`)}`,
|
|
219
221
|
`\x1b[1m Finished step ${step} with writes to ${Object.keys(byChannel).length} channel${Object.keys(byChannel).length !== 1 ? "s" : ""}:\x1b[0m\n`,
|
|
220
222
|
Object.entries(byChannel)
|
|
221
|
-
.map(([name, vals]) => `- ${wrap(COLORS_MAP.yellow, name)} -> ${vals
|
|
223
|
+
.map(([name, vals]) => `- ${(0, exports.wrap)(COLORS_MAP.yellow, name)} -> ${vals
|
|
222
224
|
.map((v) => JSON.stringify(v))
|
|
223
225
|
.join(", ")}`)
|
|
224
226
|
.join("\n"),
|
package/dist/pregel/debug.d.ts
CHANGED
|
@@ -2,7 +2,16 @@ import { RunnableConfig } from "@langchain/core/runnables";
|
|
|
2
2
|
import { CheckpointMetadata, CheckpointPendingWrite, PendingWrite } from "@langchain/langgraph-checkpoint";
|
|
3
3
|
import { BaseChannel } from "../channels/base.js";
|
|
4
4
|
import { PregelExecutableTask, PregelTaskDescription, StateSnapshot } from "./types.js";
|
|
5
|
+
type ConsoleColors = {
|
|
6
|
+
start: string;
|
|
7
|
+
end: string;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Wrap some text in a color for printing to the console.
|
|
11
|
+
*/
|
|
12
|
+
export declare const wrap: (color: ConsoleColors, text: string) => string;
|
|
5
13
|
export declare function printCheckpoint<Value>(step: number, channels: Record<string, BaseChannel<Value>>): void;
|
|
14
|
+
export declare function _readChannels<Value>(channels: Record<string, BaseChannel<Value>>): IterableIterator<[string, any]>;
|
|
6
15
|
export declare function mapDebugTasks<N extends PropertyKey, C extends PropertyKey>(step: number, tasks: readonly PregelExecutableTask<N, C>[]): Generator<{
|
|
7
16
|
type: string;
|
|
8
17
|
timestamp: string;
|
|
@@ -43,3 +52,4 @@ export declare function tasksWithWrites<N extends PropertyKey, C extends Propert
|
|
|
43
52
|
export declare function printStepCheckpoint(step: number, channels: Record<string, BaseChannel<unknown>>, whitelist: string[]): void;
|
|
44
53
|
export declare function printStepTasks<N extends PropertyKey, C extends PropertyKey>(step: number, nextTasks: readonly PregelExecutableTask<N, C>[]): void;
|
|
45
54
|
export declare function printStepWrites(step: number, writes: PendingWrite[], whitelist: string[]): void;
|
|
55
|
+
export {};
|
package/dist/pregel/debug.js
CHANGED
|
@@ -19,7 +19,7 @@ const COLORS_MAP = {
|
|
|
19
19
|
/**
|
|
20
20
|
* Wrap some text in a color for printing to the console.
|
|
21
21
|
*/
|
|
22
|
-
const wrap = (color, text) => `${color.start}${text}${color.end}`;
|
|
22
|
+
export const wrap = (color, text) => `${color.start}${text}${color.end}`;
|
|
23
23
|
export function printCheckpoint(step, channels) {
|
|
24
24
|
console.log([
|
|
25
25
|
`${wrap(COLORS_MAP.blue, "[langgraph/checkpoint]")}`,
|
|
@@ -27,7 +27,7 @@ export function printCheckpoint(step, channels) {
|
|
|
27
27
|
`\n${JSON.stringify(Object.fromEntries(_readChannels(channels)), null, 2)}`,
|
|
28
28
|
].join(""));
|
|
29
29
|
}
|
|
30
|
-
function* _readChannels(channels
|
|
30
|
+
export function* _readChannels(channels
|
|
31
31
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
32
32
|
) {
|
|
33
33
|
for (const [name, channel] of Object.entries(channels)) {
|
package/dist/pregel/debug.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/pregel/debug.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAa,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAMjD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAWzD,MAAM,UAAU,GAAoB;IAClC,IAAI,EAAE;QACJ,KAAK,EAAE,UAAU;QACjB,GAAG,EAAE,SAAS;KACf;IACD,KAAK,EAAE;QACL,KAAK,EAAE,UAAU;QACjB,GAAG,EAAE,SAAS;KACf;IACD,MAAM,EAAE;QACN,KAAK,EAAE,YAAY;QACnB,GAAG,EAAE,SAAS;KACf;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,IAAI,GAAG,CAAC,KAAoB,EAAE,IAAY,EAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/pregel/debug.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAa,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAMjD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAWzD,MAAM,UAAU,GAAoB;IAClC,IAAI,EAAE;QACJ,KAAK,EAAE,UAAU;QACjB,GAAG,EAAE,SAAS;KACf;IACD,KAAK,EAAE;QACL,KAAK,EAAE,UAAU;QACjB,GAAG,EAAE,SAAS;KACf;IACD,MAAM,EAAE;QACN,KAAK,EAAE,YAAY;QACnB,GAAG,EAAE,SAAS;KACf;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAoB,EAAE,IAAY,EAAU,EAAE,CACjE,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;AAEtC,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,QAA4C;IAE5C,OAAO,CAAC,GAAG,CACT;QACE,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,wBAAwB,CAAC,EAAE;QACpD,kBAAkB,IAAI,qBAAqB;QAC3C,KAAK,IAAI,CAAC,SAAS,CACjB,MAAM,CAAC,WAAW,CAAC,aAAa,CAAQ,QAAQ,CAAC,CAAC,EAClD,IAAI,EACJ,CAAC,CACF,EAAE;KACJ,CAAC,IAAI,CAAC,EAAE,CAAC,CACX,CAAC;AACJ,CAAC;AAED,MAAM,SAAS,CAAC,CAAC,aAAa,CAC5B,QAA4C;AAC5C,8DAA8D;;IAE9D,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QACtD,IAAI;YACF,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAC5B,8DAA8D;SAC/D;QAAC,OAAO,KAAU,EAAE;YACnB,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,iBAAiB,EAAE;gBACtD,iCAAiC;gBACjC,SAAS;aACV;iBAAM;gBACL,MAAM,KAAK,CAAC,CAAC,sDAAsD;aACpE;SACF;KACF;AACH,CAAC;AAED,MAAM,SAAS,CAAC,CAAC,aAAa,CAC5B,IAAY,EACZ,KAA4C;IAE5C,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpC,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,KAAK,EAAE;QACjE,IAAI,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC;YAAE,SAAS;QAEjD,MAAM,UAAU,GAAG,MAAM;aACtB,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACvB,OAAO,OAAO,KAAK,EAAE,IAAI,CAAC,KAAK,SAAS,CAAC;QAC3C,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;YACb,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QACL,MAAM;YACJ,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,EAAE;YACb,IAAI;YACJ,OAAO,EAAE;gBACP,EAAE;gBACF,IAAI;gBACJ,KAAK;gBACL,QAAQ;gBACR,UAAU;aACX;SACF,CAAC;KACH;AACH,CAAC;AAED,MAAM,SAAS,CAAC,CAAC,mBAAmB,CAIlC,IAAY,EACZ,KAAiE,EACjE,cAAgD;IAEhD,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,KAAK,EAAE;QAClD,IAAI,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC;YAAE,SAAS;QACjD,MAAM;YACJ,IAAI,EAAE,aAAa;YACnB,SAAS,EAAE,EAAE;YACb,IAAI;YACJ,OAAO,EAAE;gBACP,EAAE;gBACF,IAAI;gBACJ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE;oBAClC,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;wBAClC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC;wBAClC,CAAC,CAAC,OAAO,KAAK,cAAc,CAAC;gBACjC,CAAC,CAAC;gBACF,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACtE;SACF,CAAC;KACH;AACH,CAAC;AAED,MAAM,SAAS,CAAC,CAAC,kBAAkB,CAIjC,IAAY,EACZ,MAAsB,EACtB,QAAqC,EACrC,cAAiC,EACjC,QAA4B,EAC5B,KAA4C,EAC5C,aAAuC,EACvC,YAAwC;IAExC,SAAS,YAAY,CAAC,MAAsB;QAY1C,iDAAiD;QACjD,MAAM,QAAQ,GAEV,EAAE,CAAC;QAEP,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI;YAAE,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACpE,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI;YAC7B,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QAC9C,IAAI,MAAM,CAAC,cAAc,IAAI,IAAI;YAC/B,QAAQ,CAAC,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;QAEnD,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI;YAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjE,IAAI,MAAM,CAAC,cAAc,IAAI,IAAI;YAC/B,QAAQ,CAAC,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC;QACnD,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI;YAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;QACzD,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI;YAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/D,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI;YAAE,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAErD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC;IACpD,MAAM,UAAU,GAAmD,EAAE,CAAC;IAEtE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC;YAAE,SAAS;QAEnD,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,IAAc,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;QACjD,IAAI,QAAQ;YAAE,MAAM,GAAG,GAAG,QAAQ,IAAI,MAAM,EAAE,CAAC;QAE/C,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;YACpB,YAAY,EAAE;gBACZ,SAAS,EAAE,MAAM,CAAC,YAAY,EAAE,SAAS;gBACzC,aAAa,EAAE,MAAM;aACtB;SACF,CAAC;KACH;IAED,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM;QACJ,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE,EAAE;QACb,IAAI;QACJ,OAAO,EAAE;YACP,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC;YAC5B,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE,cAAc,CAAC;YAC9C,QAAQ;YACR,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,CAAC;YACxD,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;SACpE;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,KAAsE,EACtE,aAAuC,EACvC,MAAuD;IAEvD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAyB,EAAE;QAC/C,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,KAAK,CAC3C,EAAE,CAAC,CAAC,CAAC,CAAC;QAEP,MAAM,UAAU,GAAG,aAAa;aAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE;YAClB,OAAO,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,SAAS,CAAC;QAC3C,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,CAAC,EAAE,AAAD,EAAG,CAAC,CAAC,EAAE,EAAE;YACf,OAAO,CAAC,CAAC;QACX,CAAC,CAAgB,CAAC;QACpB,IAAI,KAAK,EAAE;YACT,OAAO;gBACL,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,IAAI,CAAC,IAAc;gBACzB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK;gBACL,UAAU;aACX,CAAC;SACH;QACD,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpC,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAc;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,UAAU;YACV,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,IAAY,EACZ,QAA8C,EAC9C,SAAmB;IAEnB,OAAO,CAAC,GAAG,CACT;QACE,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,IAAI,cAAc,CAAC,EAAE;QAClD,oCAAoC,IAAI,YAAY;QACpD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KAC3D,CAAC,IAAI,CAAC,EAAE,CAAC,CACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,SAAgD;IAEhD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAChC,OAAO,CAAC,GAAG,CACT;QACE,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS,CAAC,EAAE;QAC7C,yBAAyB,IAAI,SAAS,MAAM,QAC1C,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GACtB,YAAY;QACZ,SAAS;aACN,GAAG,CACF,CAAC,IAAI,EAAE,EAAE,CACP,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CACjE,IAAI,CAAC,KAAK,EACV,IAAI,EACJ,CAAC,CACF,EAAE,CACN;aACA,IAAI,CAAC,IAAI,CAAC;KACd,CAAC,IAAI,CAAC,EAAE,CAAC,CACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,MAAsB,EACtB,SAAmB;IAEnB,8DAA8D;IAC9D,MAAM,SAAS,GAA0B,EAAE,CAAC;IAE5C,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE;QACrC,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAC/B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBACvB,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;aACzB;YACD,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAChC;KACF;IAED,OAAO,CAAC,GAAG,CACT;QACE,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,IAAI,UAAU,CAAC,EAAE;QAC9C,yBAAyB,IAAI,mBAC3B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MACzB,WAAW,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY;QACrE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;aACtB,GAAG,CACF,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CACf,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,IAAI;aAC1C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aAC7B,IAAI,CAAC,IAAI,CAAC,EAAE,CAClB;aACA,IAAI,CAAC,IAAI,CAAC;KACd,CAAC,IAAI,CAAC,EAAE,CAAC,CACX,CAAC;AACJ,CAAC"}
|