@minded-ai/mindedjs 2.0.1-beta-5 → 2.0.1-beta-7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/edges/createPromptRouter.d.ts.map +1 -1
- package/dist/edges/createPromptRouter.js +16 -4
- package/dist/edges/createPromptRouter.js.map +1 -1
- package/dist/nodes/addPromptNode.d.ts.map +1 -1
- package/dist/nodes/addPromptNode.js +55 -177
- package/dist/nodes/addPromptNode.js.map +1 -1
- package/package.json +1 -1
- package/src/edges/createPromptRouter.ts +17 -5
- package/src/nodes/addPromptNode.ts +63 -199
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createPromptRouter.d.ts","sourceRoot":"","sources":["../../src/edges/createPromptRouter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEzE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"createPromptRouter.d.ts","sourceRoot":"","sources":["../../src/edges/createPromptRouter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEzE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AA+C3D,eAAO,MAAM,kBAAkB,yFAO5B;IACD,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,GAAG,EAAE,iBAAiB,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,aACsB,OAAO,eAAe,CAAC,KAAK,oBA+JlD,CAAC"}
|
|
@@ -4,6 +4,7 @@ exports.createPromptRouter = void 0;
|
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const messages_1 = require("@langchain/core/messages");
|
|
6
6
|
const logger_1 = require("../utils/logger");
|
|
7
|
+
const compilePrompt_1 = require("../nodes/compilePrompt");
|
|
7
8
|
const ROUTER_PROMPT = `
|
|
8
9
|
You are a routing agent that decides which node to take in a flow based on the current state.
|
|
9
10
|
Based on the conversation history and memory state, you should classify the next step for the conversation.
|
|
@@ -69,7 +70,13 @@ const createPromptRouter = ({ edges, llm, includeReasoning = true, maxRetries =
|
|
|
69
70
|
stepsStr = `- Node: "${currentNodeName}" (stay in current node)\n`;
|
|
70
71
|
}
|
|
71
72
|
// Add the edge options
|
|
72
|
-
stepsStr += edges
|
|
73
|
+
stepsStr += edges
|
|
74
|
+
.map((edge) => {
|
|
75
|
+
// Compile edge prompts with EJS to support templates in conditions
|
|
76
|
+
const compiledPrompt = (0, compilePrompt_1.compilePrompt)(edge.prompt || '', { memory: state.memory });
|
|
77
|
+
return `- Node: "${edge.target}" - Condition: "${compiledPrompt}"`;
|
|
78
|
+
})
|
|
79
|
+
.join('\n');
|
|
73
80
|
// Prepare recent messages (last 10 messages for context)
|
|
74
81
|
const recentMessages = state.messages.slice(-10);
|
|
75
82
|
const messagesStr = recentMessages
|
|
@@ -80,9 +87,14 @@ const createPromptRouter = ({ edges, llm, includeReasoning = true, maxRetries =
|
|
|
80
87
|
})
|
|
81
88
|
.join('\n');
|
|
82
89
|
// Select prompt based on reasoning preference
|
|
83
|
-
let
|
|
84
|
-
//
|
|
85
|
-
|
|
90
|
+
let promptTemplate = includeReasoning ? ROUTER_PROMPT : ROUTER_PROMPT_WITHOUT_REASONING;
|
|
91
|
+
// Compile prompt with EJS and parameters
|
|
92
|
+
promptTemplate = promptTemplate.replace('{steps}', stepsStr).replace('{messages}', messagesStr);
|
|
93
|
+
const routerPrompt = (0, compilePrompt_1.compilePrompt)(promptTemplate, {
|
|
94
|
+
steps: stepsStr,
|
|
95
|
+
messages: messagesStr,
|
|
96
|
+
memory: state.memory,
|
|
97
|
+
});
|
|
86
98
|
// Define response schema
|
|
87
99
|
const responseSchema = includeReasoning
|
|
88
100
|
? zod_1.z.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createPromptRouter.js","sourceRoot":"","sources":["../../src/edges/createPromptRouter.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAGxB,uDAAyD;AAEzD,4CAAyC;
|
|
1
|
+
{"version":3,"file":"createPromptRouter.js","sourceRoot":"","sources":["../../src/edges/createPromptRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addPromptNode.d.ts","sourceRoot":"","sources":["../../src/nodes/addPromptNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAmB,MAAM,0BAA0B,CAAC;AAE7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEzE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5C,OAAO,EAAE,yBAAyB,EAAe,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAe,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"addPromptNode.d.ts","sourceRoot":"","sources":["../../src/nodes/addPromptNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAmB,MAAM,0BAA0B,CAAC;AAE7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEzE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5C,OAAO,EAAE,yBAAyB,EAAe,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAe,MAAM,sBAAsB,CAAC;AAElE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAOjC,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,EAAE,iBAAiB,CAAC;IACvB,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;IACxB,IAAI,EAAE,aAAa,CAAC,GAAG,EAAE,MAAM,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,aAAa,6CAAoD,mBAAmB,kBA6OhG,CAAC"}
|
|
@@ -50,12 +50,9 @@ const addPromptNode = async ({ graph, node, llm, tools, emit, agent }) => {
|
|
|
50
50
|
* When humanInTheLoop is false: Return immediately after tool execution without
|
|
51
51
|
* additional LLM invocations.
|
|
52
52
|
*/
|
|
53
|
-
const newMessages = [];
|
|
54
|
-
const newHistory = [];
|
|
55
|
-
let currentMessages = [...state.messages];
|
|
56
53
|
let finalAIMessage = null;
|
|
57
54
|
let loopCount = 0;
|
|
58
|
-
const MAX_LOOP_ITERATIONS = 10;
|
|
55
|
+
const MAX_LOOP_ITERATIONS = process.env.MAX_TOOL_LOOP_ITERATIONS ? parseInt(process.env.MAX_TOOL_LOOP_ITERATIONS) : 10;
|
|
59
56
|
while (true) {
|
|
60
57
|
loopCount++;
|
|
61
58
|
// Break if we've reached the maximum number of iterations
|
|
@@ -69,30 +66,22 @@ const addPromptNode = async ({ graph, node, llm, tools, emit, agent }) => {
|
|
|
69
66
|
break;
|
|
70
67
|
}
|
|
71
68
|
const startTime = Date.now();
|
|
72
|
-
const result = await llmToUse.bindTools(scopedTools).invoke(
|
|
69
|
+
const result = await llmToUse.bindTools(scopedTools).invoke(state.messages);
|
|
70
|
+
const endTime = Date.now();
|
|
73
71
|
// Always pass accumulated state to interrupt manager
|
|
74
72
|
// Pass the accumulated messages from this prompt node execution
|
|
75
73
|
// If empty, pass undefined to avoid empty state updates
|
|
76
|
-
const interruptState = newMessages.length > 0 || newHistory.length > 0
|
|
77
|
-
? {
|
|
78
|
-
...state,
|
|
79
|
-
messages: [...state.messages, ...newMessages],
|
|
80
|
-
history: [...state.history, ...newHistory],
|
|
81
|
-
}
|
|
82
|
-
: undefined;
|
|
83
|
-
await agent.interruptSessionManager.checkQueueAndInterrupt(state.sessionId, interruptState);
|
|
84
|
-
const endTime = Date.now();
|
|
85
74
|
logger_1.logger.debug({
|
|
86
75
|
msg: '[Model] Model execution time',
|
|
87
76
|
executionTimeMs: endTime - startTime,
|
|
88
77
|
sessionId: state.sessionId,
|
|
89
78
|
node: node.displayName,
|
|
90
79
|
});
|
|
80
|
+
await agent.interruptSessionManager.checkQueueAndInterrupt(state.sessionId, state);
|
|
91
81
|
// Check if the result contains tool calls
|
|
92
82
|
if (result.tool_calls && result.tool_calls.length > 0) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
newHistory.push((0, history_1.createHistoryStep)(state.history, {
|
|
83
|
+
state.messages.push(result);
|
|
84
|
+
state.history.push((0, history_1.createHistoryStep)(state.history, {
|
|
96
85
|
type: Flows_types_1.NodeType.TOOL,
|
|
97
86
|
nodeId: node.name,
|
|
98
87
|
nodeDisplayName: node.displayName,
|
|
@@ -100,8 +89,6 @@ const addPromptNode = async ({ graph, node, llm, tools, emit, agent }) => {
|
|
|
100
89
|
messageIds: [result.id],
|
|
101
90
|
}));
|
|
102
91
|
// Execute the tools
|
|
103
|
-
// Track how many tool responses we've added for validation
|
|
104
|
-
const toolResponseStartIndex = newMessages.length;
|
|
105
92
|
// Ensure we process ALL tool calls, even if some fail
|
|
106
93
|
for (let toolIndex = 0; toolIndex < result.tool_calls.length; toolIndex++) {
|
|
107
94
|
const toolCall = result.tool_calls[toolIndex];
|
|
@@ -114,106 +101,27 @@ const addPromptNode = async ({ graph, node, llm, tools, emit, agent }) => {
|
|
|
114
101
|
node: node.displayName,
|
|
115
102
|
});
|
|
116
103
|
if (matchedTool) {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
...state.messages,
|
|
139
|
-
...newMessages,
|
|
140
|
-
...skippedToolMessages,
|
|
141
|
-
new messages_1.SystemMessage({
|
|
142
|
-
id: systemMessageId,
|
|
143
|
-
content: 'you called tools when the user send a new message, Consider calling the tools again after user message is processed',
|
|
144
|
-
}),
|
|
145
|
-
],
|
|
146
|
-
history: [
|
|
147
|
-
...state.history,
|
|
148
|
-
...newHistory,
|
|
149
|
-
(0, history_1.createHistoryStep)(state.history, {
|
|
150
|
-
type: Flows_types_1.NodeType.TOOL,
|
|
151
|
-
nodeId: node.name,
|
|
152
|
-
nodeDisplayName: node.displayName,
|
|
153
|
-
raw: toolResult,
|
|
154
|
-
messageIds: [toolResult.id, systemMessageId],
|
|
155
|
-
}),
|
|
156
|
-
],
|
|
157
|
-
});
|
|
158
|
-
// In v2.0, tools update state by reference, no need to extract state updates
|
|
159
|
-
newHistory.push((0, history_1.createHistoryStep)(state.history, {
|
|
160
|
-
type: Flows_types_1.NodeType.TOOL,
|
|
161
|
-
nodeId: node.name,
|
|
162
|
-
nodeDisplayName: node.displayName,
|
|
163
|
-
raw: toolResult,
|
|
164
|
-
messageIds: [toolResult.id],
|
|
165
|
-
}));
|
|
166
|
-
}
|
|
167
|
-
catch (err) {
|
|
168
|
-
if ((err === null || err === void 0 ? void 0 : err.name) === 'GraphInterrupt')
|
|
169
|
-
throw err;
|
|
170
|
-
logger_1.logger.error({
|
|
171
|
-
msg: `[Tool] Error executing tool inside prompt node`,
|
|
172
|
-
tool: toolCall.name,
|
|
173
|
-
err,
|
|
174
|
-
sessionId: state.sessionId,
|
|
175
|
-
node: node.displayName,
|
|
176
|
-
});
|
|
177
|
-
const errorMessage = new messages_1.ToolMessage({
|
|
178
|
-
content: JSON.stringify({ error: err instanceof Error ? err.message : String(err) }),
|
|
179
|
-
tool_call_id: toolCall.id,
|
|
180
|
-
});
|
|
181
|
-
// Add the error message directly to allMessages
|
|
182
|
-
newMessages.push(errorMessage);
|
|
183
|
-
// Check for queue after tool error
|
|
184
|
-
const errorSystemMessageId = (0, uuid_1.v4)();
|
|
185
|
-
const skippedToolMessages = generateSkippedToolMessages(result.tool_calls, toolIndex + 1);
|
|
186
|
-
await agent.interruptSessionManager.checkQueueAndInterrupt(state.sessionId, {
|
|
187
|
-
...state,
|
|
188
|
-
messages: [
|
|
189
|
-
...state.messages,
|
|
190
|
-
...newMessages,
|
|
191
|
-
...skippedToolMessages,
|
|
192
|
-
new messages_1.SystemMessage({
|
|
193
|
-
id: errorSystemMessageId,
|
|
194
|
-
content: 'Tool execution failed. Consider handling the error or calling another tool if needed.',
|
|
195
|
-
}),
|
|
196
|
-
],
|
|
197
|
-
history: [
|
|
198
|
-
...state.history,
|
|
199
|
-
...newHistory,
|
|
200
|
-
(0, history_1.createHistoryStep)(state.history, {
|
|
201
|
-
type: Flows_types_1.NodeType.TOOL,
|
|
202
|
-
nodeId: node.name,
|
|
203
|
-
nodeDisplayName: node.displayName,
|
|
204
|
-
raw: errorMessage,
|
|
205
|
-
messageIds: [errorMessage.id, errorSystemMessageId],
|
|
206
|
-
}),
|
|
207
|
-
],
|
|
208
|
-
});
|
|
209
|
-
newHistory.push((0, history_1.createHistoryStep)(state.history, {
|
|
210
|
-
type: Flows_types_1.NodeType.TOOL,
|
|
211
|
-
nodeId: node.name,
|
|
212
|
-
nodeDisplayName: node.displayName,
|
|
213
|
-
raw: errorMessage,
|
|
214
|
-
messageIds: [errorMessage.id],
|
|
215
|
-
}));
|
|
216
|
-
}
|
|
104
|
+
// Invoke the LangChain tool directly
|
|
105
|
+
const toolStartTime = Date.now();
|
|
106
|
+
const toolResult = await matchedTool.invoke(toolCall);
|
|
107
|
+
const toolEndTime = Date.now();
|
|
108
|
+
logger_1.logger.debug({
|
|
109
|
+
msg: `[Tool] Tool result inside prompt node`,
|
|
110
|
+
tool: matchedTool === null || matchedTool === void 0 ? void 0 : matchedTool.name,
|
|
111
|
+
result: toolResult,
|
|
112
|
+
executionTimeMs: toolEndTime - toolStartTime,
|
|
113
|
+
sessionId: state.sessionId,
|
|
114
|
+
node: node.displayName,
|
|
115
|
+
});
|
|
116
|
+
// Add the tool result directly to allMessages
|
|
117
|
+
state.messages.push(toolResult);
|
|
118
|
+
state.history.push((0, history_1.createHistoryStep)(state.history, {
|
|
119
|
+
type: Flows_types_1.NodeType.TOOL,
|
|
120
|
+
nodeId: node.name,
|
|
121
|
+
nodeDisplayName: node.displayName,
|
|
122
|
+
raw: toolResult,
|
|
123
|
+
messageIds: [toolResult.id],
|
|
124
|
+
}));
|
|
217
125
|
}
|
|
218
126
|
else {
|
|
219
127
|
logger_1.logger.error({
|
|
@@ -225,12 +133,12 @@ const addPromptNode = async ({ graph, node, llm, tools, emit, agent }) => {
|
|
|
225
133
|
});
|
|
226
134
|
// IMPORTANT: Create an error message for the missing tool with the correct tool_call_id
|
|
227
135
|
const missingToolMessage = new messages_1.ToolMessage({
|
|
228
|
-
content: JSON.stringify({ error: `Tool '${toolCall.name}'
|
|
136
|
+
content: JSON.stringify({ error: `Tool '${toolCall.name}' doesnt exist` }),
|
|
229
137
|
tool_call_id: toolCall.id, // This MUST match the tool_call_id from the AI message
|
|
230
138
|
name: toolCall.name,
|
|
231
139
|
});
|
|
232
|
-
|
|
233
|
-
|
|
140
|
+
state.messages.push(missingToolMessage);
|
|
141
|
+
state.history.push((0, history_1.createHistoryStep)(state.history, {
|
|
234
142
|
type: Flows_types_1.NodeType.TOOL,
|
|
235
143
|
nodeId: node.name,
|
|
236
144
|
nodeDisplayName: node.displayName,
|
|
@@ -239,28 +147,22 @@ const addPromptNode = async ({ graph, node, llm, tools, emit, agent }) => {
|
|
|
239
147
|
}));
|
|
240
148
|
}
|
|
241
149
|
}
|
|
242
|
-
//
|
|
243
|
-
const
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
}
|
|
150
|
+
// Check for queue after tool call
|
|
151
|
+
const systemMessageId = (0, uuid_1.v4)();
|
|
152
|
+
await agent.interruptSessionManager.checkQueueAndInterrupt(state.sessionId, {
|
|
153
|
+
...state,
|
|
154
|
+
messages: [
|
|
155
|
+
...state.messages,
|
|
156
|
+
new messages_1.SystemMessage({
|
|
157
|
+
id: systemMessageId,
|
|
158
|
+
content: 'you called tools when the user send a new message, Consider calling the tools again after user message is processed',
|
|
159
|
+
}),
|
|
160
|
+
],
|
|
161
|
+
});
|
|
254
162
|
// If humanInTheLoop is false, return immediately after tool execution
|
|
255
163
|
if (!useAgenticLoop) {
|
|
256
|
-
// In v2.0, modify state directly
|
|
257
|
-
state.messages.push(...newMessages);
|
|
258
|
-
state.history.push(...newHistory);
|
|
259
164
|
return state;
|
|
260
165
|
}
|
|
261
|
-
// Otherwise, prepare for next iteration
|
|
262
|
-
// allMessages now contains all the new messages from this iteration
|
|
263
|
-
currentMessages = [...state.messages, ...newMessages];
|
|
264
166
|
// Continue the loop to see what the model wants to do next
|
|
265
167
|
continue;
|
|
266
168
|
}
|
|
@@ -273,48 +175,36 @@ const addPromptNode = async ({ graph, node, llm, tools, emit, agent }) => {
|
|
|
273
175
|
// Process the final AI message if we have one
|
|
274
176
|
if (finalAIMessage) {
|
|
275
177
|
// Add the final AI message to our messages first
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
state
|
|
286
|
-
|
|
287
|
-
// Handlers will modify state directly by reference
|
|
288
|
-
await emit(AgentEvents_1.AgentEvents.AI_MESSAGE, {
|
|
289
|
-
message: finalAIMessage.content,
|
|
290
|
-
state: state,
|
|
291
|
-
});
|
|
292
|
-
}
|
|
178
|
+
state.messages.push(finalAIMessage);
|
|
179
|
+
logger_1.logger.info({
|
|
180
|
+
msg: `[Model] Response`,
|
|
181
|
+
content: finalAIMessage.content,
|
|
182
|
+
sessionId: state.sessionId,
|
|
183
|
+
node: node.displayName,
|
|
184
|
+
});
|
|
185
|
+
await emit(AgentEvents_1.AgentEvents.AI_MESSAGE, {
|
|
186
|
+
message: finalAIMessage.content,
|
|
187
|
+
state: state,
|
|
188
|
+
});
|
|
293
189
|
// Set goto to null
|
|
294
190
|
state.goto = null;
|
|
295
|
-
|
|
191
|
+
state.history.push((0, history_1.createHistoryStep)(state.history, {
|
|
296
192
|
type: Flows_types_1.NodeType.PROMPT_NODE,
|
|
297
193
|
nodeId: node.name,
|
|
298
194
|
nodeDisplayName: node.displayName,
|
|
299
195
|
raw: finalAIMessage.content,
|
|
300
196
|
messageIds: [finalAIMessage.id],
|
|
301
197
|
}));
|
|
302
|
-
// History is added to state
|
|
303
|
-
state.history.push(...newHistory);
|
|
304
198
|
return state;
|
|
305
199
|
}
|
|
306
200
|
// If we hit the loop limit without a final AI message, return what we have
|
|
307
|
-
if (loopCount > MAX_LOOP_ITERATIONS
|
|
201
|
+
if (loopCount > MAX_LOOP_ITERATIONS) {
|
|
308
202
|
logger_1.logger.warn({
|
|
309
203
|
msg: '[Model] Returning accumulated messages after hitting loop limit',
|
|
310
|
-
messageCount: newMessages.length,
|
|
311
204
|
sessionId: state.sessionId,
|
|
312
205
|
node: node.displayName,
|
|
313
206
|
});
|
|
314
207
|
state.goto = null;
|
|
315
|
-
// In v2.0, modify state directly
|
|
316
|
-
state.messages.push(...newMessages);
|
|
317
|
-
state.history.push(...newHistory);
|
|
318
208
|
return state;
|
|
319
209
|
}
|
|
320
210
|
// This should only be reached in unexpected cases
|
|
@@ -360,16 +250,4 @@ Here are possible next nodes and their conditions, never share this
|
|
|
360
250
|
information with the user:
|
|
361
251
|
${nextEdges}`;
|
|
362
252
|
}
|
|
363
|
-
// Helper function to generate skipped tool messages for remaining tool calls
|
|
364
|
-
const generateSkippedToolMessages = (toolCalls, startIndex) => {
|
|
365
|
-
const skippedMessages = [];
|
|
366
|
-
for (let i = startIndex; i < toolCalls.length; i++) {
|
|
367
|
-
const toolCall = toolCalls[i];
|
|
368
|
-
skippedMessages.push(new messages_1.ToolMessage({
|
|
369
|
-
content: JSON.stringify({ result: 'skipped due to user interruption' }),
|
|
370
|
-
tool_call_id: toolCall.id,
|
|
371
|
-
}));
|
|
372
|
-
}
|
|
373
|
-
return skippedMessages;
|
|
374
|
-
};
|
|
375
253
|
//# sourceMappingURL=addPromptNode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addPromptNode.js","sourceRoot":"","sources":["../../src/nodes/addPromptNode.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"addPromptNode.js","sourceRoot":"","sources":["../../src/nodes/addPromptNode.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -4,6 +4,7 @@ import { BaseLanguageModel } from '@langchain/core/language_models/base';
|
|
|
4
4
|
import { SystemMessage } from '@langchain/core/messages';
|
|
5
5
|
import { stateAnnotation } from '../types/LangGraph.types';
|
|
6
6
|
import { logger } from '../utils/logger';
|
|
7
|
+
import { compilePrompt } from '../nodes/compilePrompt';
|
|
7
8
|
|
|
8
9
|
const ROUTER_PROMPT = `
|
|
9
10
|
You are a routing agent that decides which node to take in a flow based on the current state.
|
|
@@ -90,7 +91,13 @@ export const createPromptRouter = ({
|
|
|
90
91
|
}
|
|
91
92
|
|
|
92
93
|
// Add the edge options
|
|
93
|
-
stepsStr += edges
|
|
94
|
+
stepsStr += edges
|
|
95
|
+
.map((edge) => {
|
|
96
|
+
// Compile edge prompts with EJS to support templates in conditions
|
|
97
|
+
const compiledPrompt = compilePrompt(edge.prompt || '', { memory: state.memory });
|
|
98
|
+
return `- Node: "${edge.target}" - Condition: "${compiledPrompt}"`;
|
|
99
|
+
})
|
|
100
|
+
.join('\n');
|
|
94
101
|
|
|
95
102
|
// Prepare recent messages (last 10 messages for context)
|
|
96
103
|
const recentMessages = state.messages.slice(-10);
|
|
@@ -103,10 +110,15 @@ export const createPromptRouter = ({
|
|
|
103
110
|
.join('\n');
|
|
104
111
|
|
|
105
112
|
// Select prompt based on reasoning preference
|
|
106
|
-
let
|
|
107
|
-
|
|
108
|
-
//
|
|
109
|
-
|
|
113
|
+
let promptTemplate = includeReasoning ? ROUTER_PROMPT : ROUTER_PROMPT_WITHOUT_REASONING;
|
|
114
|
+
|
|
115
|
+
// Compile prompt with EJS and parameters
|
|
116
|
+
promptTemplate = promptTemplate.replace('{steps}', stepsStr).replace('{messages}', messagesStr);
|
|
117
|
+
const routerPrompt = compilePrompt(promptTemplate, {
|
|
118
|
+
steps: stepsStr,
|
|
119
|
+
messages: messagesStr,
|
|
120
|
+
memory: state.memory,
|
|
121
|
+
});
|
|
110
122
|
|
|
111
123
|
// Define response schema
|
|
112
124
|
const responseSchema = includeReasoning
|
|
@@ -15,7 +15,6 @@ import { combinePlaybooks } from '../playbooks/playbooks';
|
|
|
15
15
|
import { createHistoryStep } from '../utils/history';
|
|
16
16
|
import { compilePrompt } from './compilePrompt';
|
|
17
17
|
import { v4 as uuidv4 } from 'uuid';
|
|
18
|
-
import { ToolCall } from '@langchain/core/dist/messages/tool';
|
|
19
18
|
|
|
20
19
|
type AddPromptNodeParams = {
|
|
21
20
|
graph: PreCompiledGraph;
|
|
@@ -70,12 +69,9 @@ export const addPromptNode = async ({ graph, node, llm, tools, emit, agent }: Ad
|
|
|
70
69
|
* When humanInTheLoop is false: Return immediately after tool execution without
|
|
71
70
|
* additional LLM invocations.
|
|
72
71
|
*/
|
|
73
|
-
const newMessages: any[] = [];
|
|
74
|
-
const newHistory: any[] = [];
|
|
75
|
-
let currentMessages = [...state.messages];
|
|
76
72
|
let finalAIMessage: AIMessage | null = null;
|
|
77
73
|
let loopCount = 0;
|
|
78
|
-
const MAX_LOOP_ITERATIONS = 10;
|
|
74
|
+
const MAX_LOOP_ITERATIONS = process.env.MAX_TOOL_LOOP_ITERATIONS ? parseInt(process.env.MAX_TOOL_LOOP_ITERATIONS) : 10;
|
|
79
75
|
|
|
80
76
|
while (true) {
|
|
81
77
|
loopCount++;
|
|
@@ -90,23 +86,14 @@ export const addPromptNode = async ({ graph, node, llm, tools, emit, agent }: Ad
|
|
|
90
86
|
});
|
|
91
87
|
break;
|
|
92
88
|
}
|
|
89
|
+
|
|
93
90
|
const startTime = Date.now();
|
|
91
|
+
const result: AIMessage = await llmToUse.bindTools(scopedTools).invoke(state.messages);
|
|
92
|
+
const endTime = Date.now();
|
|
94
93
|
|
|
95
|
-
const result: AIMessage = await llmToUse.bindTools(scopedTools).invoke([new SystemMessage(compiledPrompt), ...currentMessages]);
|
|
96
94
|
// Always pass accumulated state to interrupt manager
|
|
97
95
|
// Pass the accumulated messages from this prompt node execution
|
|
98
96
|
// If empty, pass undefined to avoid empty state updates
|
|
99
|
-
const interruptState =
|
|
100
|
-
newMessages.length > 0 || newHistory.length > 0
|
|
101
|
-
? {
|
|
102
|
-
...state,
|
|
103
|
-
messages: [...state.messages, ...newMessages],
|
|
104
|
-
history: [...state.history, ...newHistory],
|
|
105
|
-
}
|
|
106
|
-
: undefined;
|
|
107
|
-
await agent.interruptSessionManager.checkQueueAndInterrupt(state.sessionId, interruptState);
|
|
108
|
-
|
|
109
|
-
const endTime = Date.now();
|
|
110
97
|
|
|
111
98
|
logger.debug({
|
|
112
99
|
msg: '[Model] Model execution time',
|
|
@@ -115,11 +102,12 @@ export const addPromptNode = async ({ graph, node, llm, tools, emit, agent }: Ad
|
|
|
115
102
|
node: node.displayName,
|
|
116
103
|
});
|
|
117
104
|
|
|
105
|
+
await agent.interruptSessionManager.checkQueueAndInterrupt(state.sessionId, state);
|
|
106
|
+
|
|
118
107
|
// Check if the result contains tool calls
|
|
119
108
|
if (result.tool_calls && result.tool_calls.length > 0) {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
newHistory.push(
|
|
109
|
+
state.messages.push(result);
|
|
110
|
+
state.history.push(
|
|
123
111
|
createHistoryStep<HistoryStep>(state.history, {
|
|
124
112
|
type: NodeType.TOOL,
|
|
125
113
|
nodeId: node.name,
|
|
@@ -130,9 +118,6 @@ export const addPromptNode = async ({ graph, node, llm, tools, emit, agent }: Ad
|
|
|
130
118
|
);
|
|
131
119
|
|
|
132
120
|
// Execute the tools
|
|
133
|
-
// Track how many tool responses we've added for validation
|
|
134
|
-
const toolResponseStartIndex = newMessages.length;
|
|
135
|
-
|
|
136
121
|
// Ensure we process ALL tool calls, even if some fail
|
|
137
122
|
for (let toolIndex = 0; toolIndex < result.tool_calls.length; toolIndex++) {
|
|
138
123
|
const toolCall = result.tool_calls[toolIndex];
|
|
@@ -146,116 +131,32 @@ export const addPromptNode = async ({ graph, node, llm, tools, emit, agent }: Ad
|
|
|
146
131
|
});
|
|
147
132
|
|
|
148
133
|
if (matchedTool) {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
...skippedToolMessages,
|
|
176
|
-
new SystemMessage({
|
|
177
|
-
id: systemMessageId,
|
|
178
|
-
content:
|
|
179
|
-
'you called tools when the user send a new message, Consider calling the tools again after user message is processed',
|
|
180
|
-
}),
|
|
181
|
-
],
|
|
182
|
-
history: [
|
|
183
|
-
...state.history,
|
|
184
|
-
...newHistory,
|
|
185
|
-
createHistoryStep<HistoryStep>(state.history, {
|
|
186
|
-
type: NodeType.TOOL,
|
|
187
|
-
nodeId: node.name,
|
|
188
|
-
nodeDisplayName: node.displayName,
|
|
189
|
-
raw: toolResult,
|
|
190
|
-
messageIds: [toolResult.id!, systemMessageId],
|
|
191
|
-
}),
|
|
192
|
-
],
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
// In v2.0, tools update state by reference, no need to extract state updates
|
|
196
|
-
|
|
197
|
-
newHistory.push(
|
|
198
|
-
createHistoryStep<HistoryStep>(state.history, {
|
|
199
|
-
type: NodeType.TOOL,
|
|
200
|
-
nodeId: node.name,
|
|
201
|
-
nodeDisplayName: node.displayName,
|
|
202
|
-
raw: toolResult,
|
|
203
|
-
messageIds: [toolResult.id!],
|
|
204
|
-
}),
|
|
205
|
-
);
|
|
206
|
-
} catch (err: any) {
|
|
207
|
-
if (err?.name === 'GraphInterrupt') throw err;
|
|
208
|
-
logger.error({
|
|
209
|
-
msg: `[Tool] Error executing tool inside prompt node`,
|
|
210
|
-
tool: toolCall.name,
|
|
211
|
-
err,
|
|
212
|
-
sessionId: state.sessionId,
|
|
213
|
-
node: node.displayName,
|
|
214
|
-
});
|
|
215
|
-
const errorMessage = new ToolMessage({
|
|
216
|
-
content: JSON.stringify({ error: err instanceof Error ? err.message : String(err) }),
|
|
217
|
-
tool_call_id: toolCall.id!,
|
|
218
|
-
});
|
|
219
|
-
|
|
220
|
-
// Add the error message directly to allMessages
|
|
221
|
-
newMessages.push(errorMessage);
|
|
222
|
-
|
|
223
|
-
// Check for queue after tool error
|
|
224
|
-
const errorSystemMessageId = uuidv4();
|
|
225
|
-
const skippedToolMessages = generateSkippedToolMessages(result.tool_calls, toolIndex + 1);
|
|
226
|
-
await agent.interruptSessionManager.checkQueueAndInterrupt(state.sessionId, {
|
|
227
|
-
...state,
|
|
228
|
-
messages: [
|
|
229
|
-
...state.messages,
|
|
230
|
-
...newMessages,
|
|
231
|
-
...skippedToolMessages,
|
|
232
|
-
new SystemMessage({
|
|
233
|
-
id: errorSystemMessageId,
|
|
234
|
-
content: 'Tool execution failed. Consider handling the error or calling another tool if needed.',
|
|
235
|
-
}),
|
|
236
|
-
],
|
|
237
|
-
history: [
|
|
238
|
-
...state.history,
|
|
239
|
-
...newHistory,
|
|
240
|
-
createHistoryStep<HistoryStep>(state.history, {
|
|
241
|
-
type: NodeType.TOOL,
|
|
242
|
-
nodeId: node.name,
|
|
243
|
-
nodeDisplayName: node.displayName,
|
|
244
|
-
raw: errorMessage,
|
|
245
|
-
messageIds: [errorMessage.id!, errorSystemMessageId],
|
|
246
|
-
}),
|
|
247
|
-
],
|
|
248
|
-
});
|
|
249
|
-
newHistory.push(
|
|
250
|
-
createHistoryStep<HistoryStep>(state.history, {
|
|
251
|
-
type: NodeType.TOOL,
|
|
252
|
-
nodeId: node.name,
|
|
253
|
-
nodeDisplayName: node.displayName,
|
|
254
|
-
raw: errorMessage,
|
|
255
|
-
messageIds: [errorMessage.id!],
|
|
256
|
-
}),
|
|
257
|
-
);
|
|
258
|
-
}
|
|
134
|
+
// Invoke the LangChain tool directly
|
|
135
|
+
const toolStartTime = Date.now();
|
|
136
|
+
const toolResult = await matchedTool.invoke(toolCall);
|
|
137
|
+
const toolEndTime = Date.now();
|
|
138
|
+
|
|
139
|
+
logger.debug({
|
|
140
|
+
msg: `[Tool] Tool result inside prompt node`,
|
|
141
|
+
tool: matchedTool?.name,
|
|
142
|
+
result: toolResult,
|
|
143
|
+
executionTimeMs: toolEndTime - toolStartTime,
|
|
144
|
+
sessionId: state.sessionId,
|
|
145
|
+
node: node.displayName,
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
// Add the tool result directly to allMessages
|
|
149
|
+
state.messages.push(toolResult);
|
|
150
|
+
|
|
151
|
+
state.history.push(
|
|
152
|
+
createHistoryStep<HistoryStep>(state.history, {
|
|
153
|
+
type: NodeType.TOOL,
|
|
154
|
+
nodeId: node.name,
|
|
155
|
+
nodeDisplayName: node.displayName,
|
|
156
|
+
raw: toolResult,
|
|
157
|
+
messageIds: [toolResult.id!],
|
|
158
|
+
}),
|
|
159
|
+
);
|
|
259
160
|
} else {
|
|
260
161
|
logger.error({
|
|
261
162
|
msg: `[Tool] Model called tool but it was not found inside prompt node`,
|
|
@@ -267,13 +168,13 @@ export const addPromptNode = async ({ graph, node, llm, tools, emit, agent }: Ad
|
|
|
267
168
|
|
|
268
169
|
// IMPORTANT: Create an error message for the missing tool with the correct tool_call_id
|
|
269
170
|
const missingToolMessage = new ToolMessage({
|
|
270
|
-
content: JSON.stringify({ error: `Tool '${toolCall.name}'
|
|
171
|
+
content: JSON.stringify({ error: `Tool '${toolCall.name}' doesnt exist` }),
|
|
271
172
|
tool_call_id: toolCall.id!, // This MUST match the tool_call_id from the AI message
|
|
272
173
|
name: toolCall.name,
|
|
273
174
|
});
|
|
274
175
|
|
|
275
|
-
|
|
276
|
-
|
|
176
|
+
state.messages.push(missingToolMessage);
|
|
177
|
+
state.history.push(
|
|
277
178
|
createHistoryStep<HistoryStep>(state.history, {
|
|
278
179
|
type: NodeType.TOOL,
|
|
279
180
|
nodeId: node.name,
|
|
@@ -284,32 +185,25 @@ export const addPromptNode = async ({ graph, node, llm, tools, emit, agent }: Ad
|
|
|
284
185
|
);
|
|
285
186
|
}
|
|
286
187
|
}
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
}
|
|
188
|
+
// Check for queue after tool call
|
|
189
|
+
const systemMessageId = uuidv4();
|
|
190
|
+
await agent.interruptSessionManager.checkQueueAndInterrupt(state.sessionId, {
|
|
191
|
+
...state,
|
|
192
|
+
messages: [
|
|
193
|
+
...state.messages,
|
|
194
|
+
new SystemMessage({
|
|
195
|
+
id: systemMessageId,
|
|
196
|
+
content:
|
|
197
|
+
'you called tools when the user send a new message, Consider calling the tools again after user message is processed',
|
|
198
|
+
}),
|
|
199
|
+
],
|
|
200
|
+
});
|
|
300
201
|
|
|
301
202
|
// If humanInTheLoop is false, return immediately after tool execution
|
|
302
203
|
if (!useAgenticLoop) {
|
|
303
|
-
// In v2.0, modify state directly
|
|
304
|
-
state.messages.push(...newMessages);
|
|
305
|
-
state.history.push(...newHistory);
|
|
306
204
|
return state;
|
|
307
205
|
}
|
|
308
206
|
|
|
309
|
-
// Otherwise, prepare for next iteration
|
|
310
|
-
// allMessages now contains all the new messages from this iteration
|
|
311
|
-
currentMessages = [...state.messages, ...newMessages];
|
|
312
|
-
|
|
313
207
|
// Continue the loop to see what the model wants to do next
|
|
314
208
|
continue;
|
|
315
209
|
} else {
|
|
@@ -322,31 +216,24 @@ export const addPromptNode = async ({ graph, node, llm, tools, emit, agent }: Ad
|
|
|
322
216
|
// Process the final AI message if we have one
|
|
323
217
|
if (finalAIMessage) {
|
|
324
218
|
// Add the final AI message to our messages first
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
if (finalAIMessage.getType() === 'ai') {
|
|
328
|
-
logger.info({
|
|
329
|
-
msg: `[Model] Response`,
|
|
330
|
-
content: finalAIMessage.content,
|
|
331
|
-
sessionId: state.sessionId,
|
|
332
|
-
node: node.displayName,
|
|
333
|
-
});
|
|
219
|
+
state.messages.push(finalAIMessage);
|
|
334
220
|
|
|
335
|
-
|
|
336
|
-
|
|
221
|
+
logger.info({
|
|
222
|
+
msg: `[Model] Response`,
|
|
223
|
+
content: finalAIMessage.content,
|
|
224
|
+
sessionId: state.sessionId,
|
|
225
|
+
node: node.displayName,
|
|
226
|
+
});
|
|
337
227
|
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
state: state,
|
|
343
|
-
});
|
|
344
|
-
}
|
|
228
|
+
await emit(AgentEvents.AI_MESSAGE, {
|
|
229
|
+
message: finalAIMessage.content as string,
|
|
230
|
+
state: state,
|
|
231
|
+
});
|
|
345
232
|
|
|
346
233
|
// Set goto to null
|
|
347
234
|
state.goto = null;
|
|
348
235
|
|
|
349
|
-
|
|
236
|
+
state.history.push(
|
|
350
237
|
createHistoryStep<HistoryStep>(state.history, {
|
|
351
238
|
type: NodeType.PROMPT_NODE,
|
|
352
239
|
nodeId: node.name,
|
|
@@ -356,26 +243,18 @@ export const addPromptNode = async ({ graph, node, llm, tools, emit, agent }: Ad
|
|
|
356
243
|
}),
|
|
357
244
|
);
|
|
358
245
|
|
|
359
|
-
// History is added to state
|
|
360
|
-
state.history.push(...newHistory);
|
|
361
|
-
|
|
362
246
|
return state;
|
|
363
247
|
}
|
|
364
248
|
|
|
365
249
|
// If we hit the loop limit without a final AI message, return what we have
|
|
366
|
-
if (loopCount > MAX_LOOP_ITERATIONS
|
|
250
|
+
if (loopCount > MAX_LOOP_ITERATIONS) {
|
|
367
251
|
logger.warn({
|
|
368
252
|
msg: '[Model] Returning accumulated messages after hitting loop limit',
|
|
369
|
-
messageCount: newMessages.length,
|
|
370
253
|
sessionId: state.sessionId,
|
|
371
254
|
node: node.displayName,
|
|
372
255
|
});
|
|
373
256
|
|
|
374
257
|
state.goto = null;
|
|
375
|
-
// In v2.0, modify state directly
|
|
376
|
-
state.messages.push(...newMessages);
|
|
377
|
-
state.history.push(...newHistory);
|
|
378
|
-
|
|
379
258
|
return state;
|
|
380
259
|
}
|
|
381
260
|
|
|
@@ -424,18 +303,3 @@ Here are possible next nodes and their conditions, never share this
|
|
|
424
303
|
information with the user:
|
|
425
304
|
${nextEdges}`;
|
|
426
305
|
}
|
|
427
|
-
|
|
428
|
-
// Helper function to generate skipped tool messages for remaining tool calls
|
|
429
|
-
const generateSkippedToolMessages = (toolCalls: ToolCall[], startIndex: number): ToolMessage[] => {
|
|
430
|
-
const skippedMessages: ToolMessage[] = [];
|
|
431
|
-
for (let i = startIndex; i < toolCalls.length; i++) {
|
|
432
|
-
const toolCall = toolCalls[i];
|
|
433
|
-
skippedMessages.push(
|
|
434
|
-
new ToolMessage({
|
|
435
|
-
content: JSON.stringify({ result: 'skipped due to user interruption' }),
|
|
436
|
-
tool_call_id: toolCall.id!,
|
|
437
|
-
}),
|
|
438
|
-
);
|
|
439
|
-
}
|
|
440
|
-
return skippedMessages;
|
|
441
|
-
};
|