@minded-ai/mindedjs 1.0.101 → 1.0.103
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/nodes/addBrowserTaskNode.d.ts +3 -1
- package/dist/nodes/addBrowserTaskNode.d.ts.map +1 -1
- package/dist/nodes/addBrowserTaskNode.js +163 -29
- package/dist/nodes/addBrowserTaskNode.js.map +1 -1
- package/dist/nodes/addBrowserTaskRunNode.d.ts.map +1 -1
- package/dist/nodes/addBrowserTaskRunNode.js +12 -4
- package/dist/nodes/addBrowserTaskRunNode.js.map +1 -1
- package/dist/nodes/nodeFactory.js +1 -1
- package/dist/nodes/nodeFactory.js.map +1 -1
- package/dist/types/Flows.types.d.ts +6 -0
- package/dist/types/Flows.types.d.ts.map +1 -1
- package/dist/types/Flows.types.js.map +1 -1
- package/package.json +1 -1
- package/src/nodes/addBrowserTaskNode.ts +150 -33
- package/src/nodes/addBrowserTaskRunNode.ts +13 -7
- package/src/nodes/nodeFactory.ts +2 -2
- package/src/types/Flows.types.ts +6 -0
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { BrowserTaskNode } from '../types/Flows.types';
|
|
2
2
|
import { PreCompiledGraph } from '../types/LangGraph.types';
|
|
3
3
|
import { Agent } from '../agent';
|
|
4
|
+
import { LLMProviders } from '../types/LLM.types';
|
|
4
5
|
type AddBrowserTaskNodeParams = {
|
|
5
6
|
graph: PreCompiledGraph;
|
|
6
7
|
node: BrowserTaskNode;
|
|
7
8
|
agent: Agent;
|
|
9
|
+
llm: (typeof LLMProviders)[keyof typeof LLMProviders];
|
|
8
10
|
};
|
|
9
|
-
export declare const addBrowserTaskNode: ({ graph, node }: AddBrowserTaskNodeParams) => Promise<void>;
|
|
11
|
+
export declare const addBrowserTaskNode: ({ graph, node, agent, llm }: AddBrowserTaskNodeParams) => Promise<void>;
|
|
10
12
|
export {};
|
|
11
13
|
//# sourceMappingURL=addBrowserTaskNode.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addBrowserTaskNode.d.ts","sourceRoot":"","sources":["../../src/nodes/addBrowserTaskNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAY,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAmB,MAAM,0BAA0B,CAAC;AAM7E,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"addBrowserTaskNode.d.ts","sourceRoot":"","sources":["../../src/nodes/addBrowserTaskNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAY,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAmB,MAAM,0BAA0B,CAAC;AAM7E,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAIjC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA0ClD,KAAK,wBAAwB,GAAG;IAC9B,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;CACvD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAU,6BAA6B,wBAAwB,kBAyK7F,CAAC"}
|
|
@@ -1,4 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.addBrowserTaskNode = void 0;
|
|
4
37
|
const Flows_types_1 = require("../types/Flows.types");
|
|
@@ -7,41 +40,140 @@ const history_1 = require("../utils/history");
|
|
|
7
40
|
const messages_1 = require("@langchain/core/messages");
|
|
8
41
|
const uuid_1 = require("uuid");
|
|
9
42
|
const executeBrowserTask_1 = require("../browserTask/executeBrowserTask");
|
|
10
|
-
const
|
|
43
|
+
const tools_1 = require("@langchain/core/tools");
|
|
44
|
+
const zod_1 = require("zod");
|
|
45
|
+
const playbooks_1 = require("../playbooks/playbooks");
|
|
46
|
+
const ejs = __importStar(require("ejs"));
|
|
47
|
+
/**
|
|
48
|
+
* Compile prompt with parameters using EJS and placeholder replacement
|
|
49
|
+
*/
|
|
50
|
+
function compilePrompt(prompt, params = {}) {
|
|
51
|
+
try {
|
|
52
|
+
// First, render with EJS
|
|
53
|
+
let compiledPrompt = ejs.render(prompt, params);
|
|
54
|
+
// Then, replace placeholders in {} format
|
|
55
|
+
compiledPrompt = replacePlaceholders(compiledPrompt, params);
|
|
56
|
+
return compiledPrompt;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
logger_1.logger.error({ message: 'Error compiling prompt', error });
|
|
60
|
+
return prompt; // Return uncompiled if there's an error
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Replace placeholders in {key} format
|
|
65
|
+
*/
|
|
66
|
+
function replacePlaceholders(text, params) {
|
|
67
|
+
return text.replace(/\{([^}]+)\}/g, (match, key) => {
|
|
68
|
+
const keys = key.split('.');
|
|
69
|
+
let value = params;
|
|
70
|
+
for (const k of keys) {
|
|
71
|
+
if (value && typeof value === 'object' && k in value) {
|
|
72
|
+
value = value[k];
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
return match; // Return original if key not found
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return String(value);
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
const addBrowserTaskNode = async ({ graph, node, agent, llm }) => {
|
|
11
82
|
const callback = async (state) => {
|
|
12
83
|
logger_1.logger.info({ msg: `Executing browser task node ${node.displayName}`, prompt: node.prompt });
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
84
|
+
// Create Zod schema from inputSchema
|
|
85
|
+
const schemaFields = {};
|
|
86
|
+
if (node.inputSchema) {
|
|
87
|
+
for (const field of node.inputSchema) {
|
|
88
|
+
let fieldSchema;
|
|
89
|
+
if (field.type === 'string') {
|
|
90
|
+
fieldSchema = zod_1.z.string();
|
|
91
|
+
}
|
|
92
|
+
else if (field.type === 'number') {
|
|
93
|
+
fieldSchema = zod_1.z.number();
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
fieldSchema = zod_1.z.string(); // Default to string
|
|
97
|
+
}
|
|
98
|
+
if (field.description) {
|
|
99
|
+
fieldSchema = fieldSchema.describe(field.description);
|
|
100
|
+
}
|
|
101
|
+
if (field.required === false) {
|
|
102
|
+
fieldSchema = fieldSchema.optional();
|
|
103
|
+
}
|
|
104
|
+
schemaFields[field.name] = fieldSchema;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
const zodSchema = zod_1.z.object(schemaFields);
|
|
108
|
+
// Create langchain tool
|
|
109
|
+
const tool = (0, tools_1.tool)(() => { }, {
|
|
110
|
+
name: 'browser-task',
|
|
111
|
+
description: node.prompt,
|
|
112
|
+
schema: zodSchema,
|
|
113
|
+
});
|
|
114
|
+
// Get compiled playbooks
|
|
115
|
+
const playbookParams = {
|
|
116
|
+
...state.memory,
|
|
117
|
+
state,
|
|
118
|
+
currentTime: new Date().toISOString(),
|
|
119
|
+
};
|
|
120
|
+
const compiledPlaybooks = (0, playbooks_1.compilePlaybooks)(agent.playbooks, playbookParams) || '';
|
|
121
|
+
const systemPrompt = `${compiledPlaybooks ? compiledPlaybooks + '\n\n' : ''}
|
|
122
|
+
Additional context:
|
|
123
|
+
- workflow memory: ${JSON.stringify(state.memory)}`;
|
|
22
124
|
try {
|
|
125
|
+
// Use LLM to generate tool call
|
|
126
|
+
const AIToolCallMessage = await llm
|
|
127
|
+
.bindTools([tool], {
|
|
128
|
+
tool_choice: tool.name,
|
|
129
|
+
})
|
|
130
|
+
.invoke([...state.messages, new messages_1.SystemMessage(systemPrompt)]);
|
|
131
|
+
if (!AIToolCallMessage.tool_calls || AIToolCallMessage.tool_calls.length === 0) {
|
|
132
|
+
throw new Error('No tool calls generated by LLM');
|
|
133
|
+
}
|
|
134
|
+
const toolCall = AIToolCallMessage.tool_calls[0];
|
|
135
|
+
const inputParams = toolCall.args || {};
|
|
136
|
+
// Prepare parameters for prompt compilation
|
|
137
|
+
const promptParams = {
|
|
138
|
+
input: inputParams,
|
|
139
|
+
state,
|
|
140
|
+
currentTime: new Date().toISOString(),
|
|
141
|
+
};
|
|
142
|
+
// Compile the prompt with parameters
|
|
143
|
+
const compiledPrompt = compilePrompt(node.prompt, promptParams);
|
|
144
|
+
// Build the full prompt with compiled content
|
|
145
|
+
const fullPrompt = `
|
|
146
|
+
Follow the instructions. Any retrieved data should be printed as string and not saved to a file.
|
|
147
|
+
|
|
148
|
+
# Task instructions:
|
|
149
|
+
${compiledPrompt}
|
|
150
|
+
|
|
151
|
+
${Object.keys(inputParams).length > 0 ? `# Input parameters:\n${JSON.stringify(inputParams, null, 2)}\n\n` : ''}
|
|
152
|
+
${state.memory ? `# Task context:\n${JSON.stringify(state.memory)}\n\n` : ''}
|
|
153
|
+
`;
|
|
23
154
|
// Create the browser task in the cloud
|
|
24
|
-
const taskId = await (0, executeBrowserTask_1.createCloudTask)(
|
|
155
|
+
const taskId = await (0, executeBrowserTask_1.createCloudTask)(fullPrompt, node.model);
|
|
25
156
|
logger_1.logger.debug({ msg: 'Browser task created', taskId });
|
|
26
157
|
// Wait for live_url to become available
|
|
27
158
|
const taskDetails = await (0, executeBrowserTask_1.waitForLiveUrl)(taskId);
|
|
28
159
|
logger_1.logger.debug({ msg: 'Live URL available', taskId, liveUrl: taskDetails.live_url });
|
|
160
|
+
// Update the tool call with taskId and other metadata
|
|
161
|
+
const updatedToolCall = {
|
|
162
|
+
...toolCall,
|
|
163
|
+
args: {
|
|
164
|
+
...inputParams,
|
|
165
|
+
taskId,
|
|
166
|
+
prompt: fullPrompt,
|
|
167
|
+
},
|
|
168
|
+
};
|
|
29
169
|
const toolCallingMessage = new messages_1.AIMessage({
|
|
30
|
-
id:
|
|
31
|
-
content:
|
|
32
|
-
tool_calls: [
|
|
33
|
-
{
|
|
34
|
-
id: toolCallId,
|
|
35
|
-
name: 'browser-task',
|
|
36
|
-
args: {
|
|
37
|
-
prompt,
|
|
38
|
-
taskId,
|
|
39
|
-
},
|
|
40
|
-
},
|
|
41
|
-
],
|
|
170
|
+
id: AIToolCallMessage.id,
|
|
171
|
+
content: AIToolCallMessage.content,
|
|
172
|
+
tool_calls: [updatedToolCall],
|
|
42
173
|
additional_kwargs: {
|
|
43
174
|
mindedMetadata: {
|
|
44
175
|
nodeType: Flows_types_1.NodeType.BROWSER_TASK,
|
|
176
|
+
nodeDisplayName: node.displayName,
|
|
45
177
|
taskId,
|
|
46
178
|
liveUrl: taskDetails.live_url,
|
|
47
179
|
},
|
|
@@ -52,23 +184,24 @@ const addBrowserTaskNode = async ({ graph, node }) => {
|
|
|
52
184
|
type: Flows_types_1.NodeType.BROWSER_TASK,
|
|
53
185
|
nodeId: node.name,
|
|
54
186
|
nodeDisplayName: node.displayName,
|
|
55
|
-
raw: { taskId, liveUrl: taskDetails.live_url },
|
|
56
|
-
messageIds: [
|
|
187
|
+
raw: { taskId, liveUrl: taskDetails.live_url, inputParams },
|
|
188
|
+
messageIds: [toolCallingMessage.id],
|
|
57
189
|
}),
|
|
58
190
|
messages: [toolCallingMessage],
|
|
59
191
|
};
|
|
60
192
|
}
|
|
61
193
|
catch (error) {
|
|
62
194
|
logger_1.logger.error(`Error creating browser task node ${node.displayName}: ${error}`);
|
|
195
|
+
const errorMessageId = (0, uuid_1.v4)();
|
|
196
|
+
const errorToolCallId = (0, uuid_1.v4)();
|
|
63
197
|
const toolCallingMessage = new messages_1.AIMessage({
|
|
64
|
-
id:
|
|
198
|
+
id: errorMessageId,
|
|
65
199
|
content: '',
|
|
66
200
|
tool_calls: [
|
|
67
201
|
{
|
|
68
|
-
id:
|
|
202
|
+
id: errorToolCallId,
|
|
69
203
|
name: 'browser-task',
|
|
70
204
|
args: {
|
|
71
|
-
prompt,
|
|
72
205
|
error: error.message,
|
|
73
206
|
},
|
|
74
207
|
},
|
|
@@ -76,6 +209,7 @@ const addBrowserTaskNode = async ({ graph, node }) => {
|
|
|
76
209
|
additional_kwargs: {
|
|
77
210
|
mindedMetadata: {
|
|
78
211
|
nodeType: Flows_types_1.NodeType.BROWSER_TASK,
|
|
212
|
+
nodeDisplayName: node.displayName,
|
|
79
213
|
error: error.message,
|
|
80
214
|
},
|
|
81
215
|
},
|
|
@@ -86,7 +220,7 @@ const addBrowserTaskNode = async ({ graph, node }) => {
|
|
|
86
220
|
nodeId: node.name,
|
|
87
221
|
nodeDisplayName: node.displayName,
|
|
88
222
|
raw: error,
|
|
89
|
-
messageIds: [
|
|
223
|
+
messageIds: [errorMessageId],
|
|
90
224
|
}),
|
|
91
225
|
messages: [toolCallingMessage],
|
|
92
226
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addBrowserTaskNode.js","sourceRoot":"","sources":["../../src/nodes/addBrowserTaskNode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"addBrowserTaskNode.js","sourceRoot":"","sources":["../../src/nodes/addBrowserTaskNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addBrowserTaskRunNode.d.ts","sourceRoot":"","sources":["../../src/nodes/addBrowserTaskRunNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAmB,MAAM,0BAA0B,CAAC;AAE7E,OAAO,EAAiC,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEtF,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAOjC,KAAK,2BAA2B,GAAG;IACjC,KAAK,EAAE,gBAAgB,CAAC;IACxB,eAAe,EAAE,eAAe,CAAC;IACjC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,UAAU,MAAM,WAAyD,CAAC;AAEtH,eAAO,MAAM,qBAAqB,GAAU,gDAAgD,2BAA2B,
|
|
1
|
+
{"version":3,"file":"addBrowserTaskRunNode.d.ts","sourceRoot":"","sources":["../../src/nodes/addBrowserTaskRunNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAmB,MAAM,0BAA0B,CAAC;AAE7E,OAAO,EAAiC,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEtF,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAOjC,KAAK,2BAA2B,GAAG;IACjC,KAAK,EAAE,gBAAgB,CAAC;IACxB,eAAe,EAAE,eAAe,CAAC;IACjC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,UAAU,MAAM,WAAyD,CAAC;AAEtH,eAAO,MAAM,qBAAqB,GAAU,gDAAgD,2BAA2B,kBA2HtH,CAAC"}
|
|
@@ -18,11 +18,11 @@ const addBrowserTaskRunNode = async ({ graph, browserTaskNode, attachedToNodeNam
|
|
|
18
18
|
throw new Error('Tool call not found');
|
|
19
19
|
}
|
|
20
20
|
const toolCall = toolCallObj.tool_calls[0];
|
|
21
|
-
const taskId = toolCall.args
|
|
22
|
-
if (!taskId) {
|
|
23
|
-
throw new Error('Task ID not found in tool call arguments');
|
|
24
|
-
}
|
|
21
|
+
const { taskId, ...inputParams } = toolCall.args;
|
|
25
22
|
try {
|
|
23
|
+
if (!taskId) {
|
|
24
|
+
throw new Error('Task ID not found in tool call arguments');
|
|
25
|
+
}
|
|
26
26
|
// Wait for task completion
|
|
27
27
|
const completedTask = await (0, executeBrowserTask_1.waitForCompletion)(taskId);
|
|
28
28
|
logger_1.logger.debug({ msg: 'Browser task completed', taskId, output: completedTask.output });
|
|
@@ -32,6 +32,7 @@ const addBrowserTaskRunNode = async ({ graph, browserTaskNode, attachedToNodeNam
|
|
|
32
32
|
content: JSON.stringify({
|
|
33
33
|
result: completedTask.output || 'Task completed successfully',
|
|
34
34
|
steps: completedTask.steps || [],
|
|
35
|
+
inputParams: inputParams,
|
|
35
36
|
}),
|
|
36
37
|
name: 'browser-task',
|
|
37
38
|
tool_call_id: toolCall.id,
|
|
@@ -39,8 +40,10 @@ const addBrowserTaskRunNode = async ({ graph, browserTaskNode, attachedToNodeNam
|
|
|
39
40
|
additional_kwargs: {
|
|
40
41
|
mindedMetadata: {
|
|
41
42
|
nodeType: Flows_types_1.NodeType.BROWSER_TASK,
|
|
43
|
+
nodeDisplayName: browserTaskNode.displayName,
|
|
42
44
|
taskId,
|
|
43
45
|
steps: completedTask.steps,
|
|
46
|
+
inputParams: inputParams,
|
|
44
47
|
},
|
|
45
48
|
},
|
|
46
49
|
});
|
|
@@ -53,6 +56,7 @@ const addBrowserTaskRunNode = async ({ graph, browserTaskNode, attachedToNodeNam
|
|
|
53
56
|
...toolCallObj.additional_kwargs,
|
|
54
57
|
mindedMetadata: {
|
|
55
58
|
...(_a = toolCallObj.additional_kwargs) === null || _a === void 0 ? void 0 : _a.mindedMetadata,
|
|
59
|
+
nodeDisplayName: browserTaskNode.displayName,
|
|
56
60
|
steps: completedTask.steps,
|
|
57
61
|
status: 'completed',
|
|
58
62
|
},
|
|
@@ -76,6 +80,7 @@ const addBrowserTaskRunNode = async ({ graph, browserTaskNode, attachedToNodeNam
|
|
|
76
80
|
id: (0, uuid_1.v4)(),
|
|
77
81
|
content: JSON.stringify({
|
|
78
82
|
error: error instanceof Error ? error.message : error.toString(),
|
|
83
|
+
inputParams: inputParams,
|
|
79
84
|
}),
|
|
80
85
|
status: 'error',
|
|
81
86
|
name: 'browser-task',
|
|
@@ -83,8 +88,10 @@ const addBrowserTaskRunNode = async ({ graph, browserTaskNode, attachedToNodeNam
|
|
|
83
88
|
additional_kwargs: {
|
|
84
89
|
mindedMetadata: {
|
|
85
90
|
nodeType: Flows_types_1.NodeType.BROWSER_TASK,
|
|
91
|
+
nodeDisplayName: browserTaskNode.displayName,
|
|
86
92
|
taskId,
|
|
87
93
|
error: error.message,
|
|
94
|
+
inputParams: inputParams,
|
|
88
95
|
},
|
|
89
96
|
},
|
|
90
97
|
});
|
|
@@ -97,6 +104,7 @@ const addBrowserTaskRunNode = async ({ graph, browserTaskNode, attachedToNodeNam
|
|
|
97
104
|
...toolCallObj.additional_kwargs,
|
|
98
105
|
mindedMetadata: {
|
|
99
106
|
...(_b = toolCallObj.additional_kwargs) === null || _b === void 0 ? void 0 : _b.mindedMetadata,
|
|
107
|
+
nodeDisplayName: browserTaskNode.displayName,
|
|
100
108
|
status: 'failed',
|
|
101
109
|
error: error.message,
|
|
102
110
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addBrowserTaskRunNode.js","sourceRoot":"","sources":["../../src/nodes/addBrowserTaskRunNode.ts"],"names":[],"mappings":";;;AAEA,sDAAsF;AACtF,uDAAkE;AAElE,4CAAyC;AACzC,8CAAqD;AAErD,+BAAoC;AACpC,0EAAsE;AAS/D,MAAM,2BAA2B,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,GAAG,QAAQ,GAAG,iCAAmB,CAAC,gBAAgB,EAAE,CAAC;AAAzG,QAAA,2BAA2B,+BAA8E;AAE/G,MAAM,qBAAqB,GAAG,KAAK,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAA+B,EAAE,EAAE;IACzH,MAAM,QAAQ,GAAiB,KAAK,EAAE,KAAmC,EAAE,EAAE;;QAC3E,eAAM,CAAC,IAAI,CAAC,uCAAuC,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC;QAElF,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAQ,CAAC;QACrE,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;
|
|
1
|
+
{"version":3,"file":"addBrowserTaskRunNode.js","sourceRoot":"","sources":["../../src/nodes/addBrowserTaskRunNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,7 +31,7 @@ const nodeFactory = ({ graph, node, tools, llm, emit, agent, }) => {
|
|
|
31
31
|
(0, addJumpToNode_1.addJumpToNode)({ graph, node });
|
|
32
32
|
break;
|
|
33
33
|
case Flows_types_1.NodeType.BROWSER_TASK:
|
|
34
|
-
(0, addBrowserTaskNode_1.addBrowserTaskNode)({ graph, node, agent });
|
|
34
|
+
(0, addBrowserTaskNode_1.addBrowserTaskNode)({ graph, node, agent, llm });
|
|
35
35
|
break;
|
|
36
36
|
default:
|
|
37
37
|
throw new Error(`Unsupported node type: ${nodeType}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeFactory.js","sourceRoot":"","sources":["../../src/nodes/nodeFactory.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AAGtD,+CAA4C;AAC5C,mDAAgD;AAGhD,qDAAkD;AAClD,qDAAkD;AAGlD,mDAAgD;AAChD,uDAAoD;AACpD,6DAA0D;AAEnD,MAAM,WAAW,GAAG,CAAC,EAC1B,KAAK,EACL,IAAI,EACJ,KAAK,EACL,GAAG,EACH,IAAI,EACJ,KAAK,GAQN,EAAE,EAAE;IACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;IAC3B,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,sBAAQ,CAAC,OAAO;YACnB,IAAA,+BAAc,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAChC,MAAM;QACR,KAAK,sBAAQ,CAAC,IAAI;YAChB,IAAA,yBAAW,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YAChD,MAAM;QACR,KAAK,sBAAQ,CAAC,QAAQ;YACpB,IAAA,iCAAe,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACjC,MAAM;QACR,KAAK,sBAAQ,CAAC,QAAQ;YACpB,IAAA,+BAAc,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YAC5C,MAAM;QACR,KAAK,sBAAQ,CAAC,WAAW;YACvB,IAAA,6BAAa,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACxD,MAAM;QACR,KAAK,sBAAQ,CAAC,YAAY;YACxB,IAAA,6BAAa,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/B,MAAM;QACR,KAAK,sBAAQ,CAAC,YAAY;YACxB,IAAA,uCAAkB,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"nodeFactory.js","sourceRoot":"","sources":["../../src/nodes/nodeFactory.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AAGtD,+CAA4C;AAC5C,mDAAgD;AAGhD,qDAAkD;AAClD,qDAAkD;AAGlD,mDAAgD;AAChD,uDAAoD;AACpD,6DAA0D;AAEnD,MAAM,WAAW,GAAG,CAAC,EAC1B,KAAK,EACL,IAAI,EACJ,KAAK,EACL,GAAG,EACH,IAAI,EACJ,KAAK,GAQN,EAAE,EAAE;IACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;IAC3B,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,sBAAQ,CAAC,OAAO;YACnB,IAAA,+BAAc,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAChC,MAAM;QACR,KAAK,sBAAQ,CAAC,IAAI;YAChB,IAAA,yBAAW,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YAChD,MAAM;QACR,KAAK,sBAAQ,CAAC,QAAQ;YACpB,IAAA,iCAAe,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACjC,MAAM;QACR,KAAK,sBAAQ,CAAC,QAAQ;YACpB,IAAA,+BAAc,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YAC5C,MAAM;QACR,KAAK,sBAAQ,CAAC,WAAW;YACvB,IAAA,6BAAa,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACxD,MAAM;QACR,KAAK,sBAAQ,CAAC,YAAY;YACxB,IAAA,6BAAa,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/B,MAAM;QACR,KAAK,sBAAQ,CAAC,YAAY;YACxB,IAAA,uCAAkB,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAChD,MAAM;QACR;YACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC,CAAC;AAzCW,QAAA,WAAW,eAyCtB"}
|
|
@@ -81,6 +81,12 @@ export interface BrowserTaskNode extends BaseNode {
|
|
|
81
81
|
type: NodeType.BROWSER_TASK;
|
|
82
82
|
prompt: string;
|
|
83
83
|
model?: string;
|
|
84
|
+
inputSchema?: {
|
|
85
|
+
name: string;
|
|
86
|
+
type: 'string' | 'number';
|
|
87
|
+
description?: string;
|
|
88
|
+
required?: boolean;
|
|
89
|
+
}[];
|
|
84
90
|
}
|
|
85
91
|
export type TriggerNode = AppTriggerNode | WebhookTriggerNode | ManualTriggerNode | VoiceTriggerNode;
|
|
86
92
|
export interface JunctionNode extends BaseNode {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Flows.types.d.ts","sourceRoot":"","sources":["../../src/types/Flows.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,oBAAY,QAAQ;IAClB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,QAAQ,YAAY;IACpB,WAAW,eAAe;IAC1B,YAAY,eAAe;IAC3B,YAAY,gBAAgB;CAC7B;AAED,oBAAY,QAAQ;IAClB,iBAAiB,qBAAqB;IACtC,gBAAgB,oBAAoB;IACpC,YAAY,gBAAgB;CAC7B;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,oBAAY,WAAW;IACrB,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,eAAgB,SAAQ,QAAQ;IAC/C,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,cAAe,SAAQ,eAAe,EAAE,WAAW;IAClE,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC;IAC/B;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,UAAW,SAAQ,QAAQ;IAC1C,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,UAAW,SAAQ,QAAQ;IAC1C,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAgB,SAAQ,QAAQ;IAC/C,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"Flows.types.d.ts","sourceRoot":"","sources":["../../src/types/Flows.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Flows.types.js","sourceRoot":"","sources":["../../src/types/Flows.types.ts"],"names":[],"mappings":";;;AAMA,IAAY,QAQX;AARD,WAAY,QAAQ;IAClB,+BAAmB,CAAA;IACnB,iCAAqB,CAAA;IACrB,yBAAa,CAAA;IACb,gCAAoB,CAAA;IACpB,sCAA0B,CAAA;IAC1B,uCAA2B,CAAA;IAC3B,wCAA4B,CAAA;AAC9B,CAAC,EARW,QAAQ,wBAAR,QAAQ,QAQnB;AAED,IAAY,QAIX;AAJD,WAAY,QAAQ;IAClB,kDAAsC,CAAA;IACtC,gDAAoC,CAAA;IACpC,wCAA4B,CAAA;AAC9B,CAAC,EAJW,QAAQ,wBAAR,QAAQ,QAInB;AAWD,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,0BAAW,CAAA;IACX,kCAAmB,CAAA;IACnB,gCAAiB,CAAA;IACjB,8BAAe,CAAA;AACjB,CAAC,EALW,WAAW,2BAAX,WAAW,QAKtB;
|
|
1
|
+
{"version":3,"file":"Flows.types.js","sourceRoot":"","sources":["../../src/types/Flows.types.ts"],"names":[],"mappings":";;;AAMA,IAAY,QAQX;AARD,WAAY,QAAQ;IAClB,+BAAmB,CAAA;IACnB,iCAAqB,CAAA;IACrB,yBAAa,CAAA;IACb,gCAAoB,CAAA;IACpB,sCAA0B,CAAA;IAC1B,uCAA2B,CAAA;IAC3B,wCAA4B,CAAA;AAC9B,CAAC,EARW,QAAQ,wBAAR,QAAQ,QAQnB;AAED,IAAY,QAIX;AAJD,WAAY,QAAQ;IAClB,kDAAsC,CAAA;IACtC,gDAAoC,CAAA;IACpC,wCAA4B,CAAA;AAC9B,CAAC,EAJW,QAAQ,wBAAR,QAAQ,QAInB;AAWD,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,0BAAW,CAAA;IACX,kCAAmB,CAAA;IACnB,gCAAiB,CAAA;IACjB,8BAAe,CAAA;AACjB,CAAC,EALW,WAAW,2BAAX,WAAW,QAKtB;AAkHD,IAAY,mBAEX;AAFD,WAAY,mBAAmB;IAC7B,2CAAoB,CAAA;AACtB,CAAC,EAFW,mBAAmB,mCAAnB,mBAAmB,QAE9B;AAsBD,IAAY,oBAOX;AAPD,WAAY,oBAAoB;IAC9B,yCAAiB,CAAA;IACjB,yCAAiB,CAAA;IACjB,2CAAmB,CAAA;IACnB,uCAAe,CAAA;IACf,yCAAiB,CAAA;IACjB,mCAAW,CAAA;AACb,CAAC,EAPW,oBAAoB,oCAApB,oBAAoB,QAO/B;AAQD,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,wCAAmB,CAAA;IACnB,4DAAuC,CAAA;IACvC,oDAA+B,CAAA;AACjC,CAAC,EAJW,iBAAiB,iCAAjB,iBAAiB,QAI5B;AAED,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,4DAAqC,CAAA;IACrC,4CAAqB,CAAA;IACrB,2DAAoC,CAAA;AACtC,CAAC,EAJW,mBAAmB,mCAAnB,mBAAmB,QAI9B"}
|
package/package.json
CHANGED
|
@@ -4,60 +4,174 @@ import { PreCompiledGraph, stateAnnotation } from '../types/LangGraph.types';
|
|
|
4
4
|
import { HistoryStep } from '../types/Agent.types';
|
|
5
5
|
import { logger } from '../utils/logger';
|
|
6
6
|
import { createHistoryStep } from '../utils/history';
|
|
7
|
-
import { AIMessage } from '@langchain/core/messages';
|
|
7
|
+
import { AIMessage, SystemMessage } from '@langchain/core/messages';
|
|
8
8
|
import { v4 as uuidv4 } from 'uuid';
|
|
9
9
|
import { Agent } from '../agent';
|
|
10
10
|
import { createCloudTask, waitForLiveUrl } from '../browserTask/executeBrowserTask';
|
|
11
|
+
import { tool as langchainTool } from '@langchain/core/tools';
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
import { LLMProviders } from '../types/LLM.types';
|
|
14
|
+
import { compilePlaybooks } from '../playbooks/playbooks';
|
|
15
|
+
import * as ejs from 'ejs';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Compile prompt with parameters using EJS and placeholder replacement
|
|
19
|
+
*/
|
|
20
|
+
function compilePrompt(prompt: string, params: Record<string, any> = {}): string {
|
|
21
|
+
try {
|
|
22
|
+
// First, render with EJS
|
|
23
|
+
let compiledPrompt = ejs.render(prompt, params);
|
|
24
|
+
|
|
25
|
+
// Then, replace placeholders in {} format
|
|
26
|
+
compiledPrompt = replacePlaceholders(compiledPrompt, params);
|
|
27
|
+
|
|
28
|
+
return compiledPrompt;
|
|
29
|
+
} catch (error) {
|
|
30
|
+
logger.error({ message: 'Error compiling prompt', error });
|
|
31
|
+
return prompt; // Return uncompiled if there's an error
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Replace placeholders in {key} format
|
|
37
|
+
*/
|
|
38
|
+
function replacePlaceholders(text: string, params: Record<string, any>): string {
|
|
39
|
+
return text.replace(/\{([^}]+)\}/g, (match, key) => {
|
|
40
|
+
const keys = key.split('.');
|
|
41
|
+
let value: any = params;
|
|
42
|
+
|
|
43
|
+
for (const k of keys) {
|
|
44
|
+
if (value && typeof value === 'object' && k in value) {
|
|
45
|
+
value = value[k];
|
|
46
|
+
} else {
|
|
47
|
+
return match; // Return original if key not found
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return String(value);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
11
54
|
|
|
12
55
|
type AddBrowserTaskNodeParams = {
|
|
13
56
|
graph: PreCompiledGraph;
|
|
14
57
|
node: BrowserTaskNode;
|
|
15
58
|
agent: Agent;
|
|
59
|
+
llm: (typeof LLMProviders)[keyof typeof LLMProviders];
|
|
16
60
|
};
|
|
17
61
|
|
|
18
|
-
export const addBrowserTaskNode = async ({ graph, node }: AddBrowserTaskNodeParams) => {
|
|
62
|
+
export const addBrowserTaskNode = async ({ graph, node, agent, llm }: AddBrowserTaskNodeParams) => {
|
|
19
63
|
const callback: RunnableLike = async (state: typeof stateAnnotation.State) => {
|
|
20
64
|
logger.info({ msg: `Executing browser task node ${node.displayName}`, prompt: node.prompt });
|
|
21
|
-
logger.info({ msg: `Executing browser task node ${node.displayName}`, prompt: node.prompt });
|
|
22
65
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
66
|
+
// Create Zod schema from inputSchema
|
|
67
|
+
const schemaFields: Record<string, z.ZodTypeAny> = {};
|
|
68
|
+
if (node.inputSchema) {
|
|
69
|
+
for (const field of node.inputSchema) {
|
|
70
|
+
let fieldSchema: z.ZodTypeAny;
|
|
71
|
+
|
|
72
|
+
if (field.type === 'string') {
|
|
73
|
+
fieldSchema = z.string();
|
|
74
|
+
} else if (field.type === 'number') {
|
|
75
|
+
fieldSchema = z.number();
|
|
76
|
+
} else {
|
|
77
|
+
fieldSchema = z.string(); // Default to string
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (field.description) {
|
|
81
|
+
fieldSchema = fieldSchema.describe(field.description);
|
|
82
|
+
}
|
|
29
83
|
|
|
30
|
-
|
|
31
|
-
|
|
84
|
+
if (field.required === false) {
|
|
85
|
+
fieldSchema = fieldSchema.optional();
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
schemaFields[field.name] = fieldSchema;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const zodSchema = z.object(schemaFields);
|
|
93
|
+
|
|
94
|
+
// Create langchain tool
|
|
95
|
+
const tool = langchainTool(() => {}, {
|
|
96
|
+
name: 'browser-task',
|
|
97
|
+
description: node.prompt,
|
|
98
|
+
schema: zodSchema,
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
// Get compiled playbooks
|
|
102
|
+
const playbookParams = {
|
|
103
|
+
...state.memory,
|
|
104
|
+
state,
|
|
105
|
+
currentTime: new Date().toISOString(),
|
|
106
|
+
};
|
|
107
|
+
const compiledPlaybooks = compilePlaybooks(agent.playbooks, playbookParams) || '';
|
|
108
|
+
|
|
109
|
+
const systemPrompt = `${compiledPlaybooks ? compiledPlaybooks + '\n\n' : ''}
|
|
110
|
+
Additional context:
|
|
111
|
+
- workflow memory: ${JSON.stringify(state.memory)}`;
|
|
32
112
|
|
|
33
113
|
try {
|
|
114
|
+
// Use LLM to generate tool call
|
|
115
|
+
const AIToolCallMessage: AIMessage = await llm
|
|
116
|
+
.bindTools([tool], {
|
|
117
|
+
tool_choice: tool.name,
|
|
118
|
+
})
|
|
119
|
+
.invoke([...state.messages, new SystemMessage(systemPrompt)]);
|
|
120
|
+
|
|
121
|
+
if (!AIToolCallMessage.tool_calls || AIToolCallMessage.tool_calls.length === 0) {
|
|
122
|
+
throw new Error('No tool calls generated by LLM');
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const toolCall = AIToolCallMessage.tool_calls[0];
|
|
126
|
+
const inputParams = toolCall.args || {};
|
|
127
|
+
|
|
128
|
+
// Prepare parameters for prompt compilation
|
|
129
|
+
const promptParams = {
|
|
130
|
+
input: inputParams,
|
|
131
|
+
state,
|
|
132
|
+
currentTime: new Date().toISOString(),
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
// Compile the prompt with parameters
|
|
136
|
+
const compiledPrompt = compilePrompt(node.prompt, promptParams);
|
|
137
|
+
|
|
138
|
+
// Build the full prompt with compiled content
|
|
139
|
+
const fullPrompt = `
|
|
140
|
+
Follow the instructions. Any retrieved data should be printed as string and not saved to a file.
|
|
141
|
+
|
|
142
|
+
# Task instructions:
|
|
143
|
+
${compiledPrompt}
|
|
144
|
+
|
|
145
|
+
${Object.keys(inputParams).length > 0 ? `# Input parameters:\n${JSON.stringify(inputParams, null, 2)}\n\n` : ''}
|
|
146
|
+
${state.memory ? `# Task context:\n${JSON.stringify(state.memory)}\n\n` : ''}
|
|
147
|
+
`;
|
|
148
|
+
|
|
34
149
|
// Create the browser task in the cloud
|
|
35
|
-
const taskId = await createCloudTask(
|
|
36
|
-
`Follow the instructions. Any retrieved data should be printed as string and not saved to a file.\n${node.prompt}`,
|
|
37
|
-
node.model,
|
|
38
|
-
);
|
|
150
|
+
const taskId = await createCloudTask(fullPrompt, node.model);
|
|
39
151
|
logger.debug({ msg: 'Browser task created', taskId });
|
|
40
152
|
|
|
41
153
|
// Wait for live_url to become available
|
|
42
154
|
const taskDetails = await waitForLiveUrl(taskId);
|
|
43
155
|
logger.debug({ msg: 'Live URL available', taskId, liveUrl: taskDetails.live_url });
|
|
44
156
|
|
|
157
|
+
// Update the tool call with taskId and other metadata
|
|
158
|
+
const updatedToolCall = {
|
|
159
|
+
...toolCall,
|
|
160
|
+
args: {
|
|
161
|
+
...inputParams,
|
|
162
|
+
taskId,
|
|
163
|
+
prompt: fullPrompt,
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
|
|
45
167
|
const toolCallingMessage = new AIMessage({
|
|
46
|
-
id:
|
|
47
|
-
content:
|
|
48
|
-
tool_calls: [
|
|
49
|
-
{
|
|
50
|
-
id: toolCallId,
|
|
51
|
-
name: 'browser-task',
|
|
52
|
-
args: {
|
|
53
|
-
prompt,
|
|
54
|
-
taskId,
|
|
55
|
-
},
|
|
56
|
-
},
|
|
57
|
-
],
|
|
168
|
+
id: AIToolCallMessage.id,
|
|
169
|
+
content: AIToolCallMessage.content,
|
|
170
|
+
tool_calls: [updatedToolCall],
|
|
58
171
|
additional_kwargs: {
|
|
59
172
|
mindedMetadata: {
|
|
60
173
|
nodeType: NodeType.BROWSER_TASK,
|
|
174
|
+
nodeDisplayName: node.displayName,
|
|
61
175
|
taskId,
|
|
62
176
|
liveUrl: taskDetails.live_url,
|
|
63
177
|
},
|
|
@@ -69,23 +183,25 @@ export const addBrowserTaskNode = async ({ graph, node }: AddBrowserTaskNodePara
|
|
|
69
183
|
type: NodeType.BROWSER_TASK,
|
|
70
184
|
nodeId: node.name,
|
|
71
185
|
nodeDisplayName: node.displayName,
|
|
72
|
-
raw: { taskId, liveUrl: taskDetails.live_url },
|
|
73
|
-
messageIds: [
|
|
186
|
+
raw: { taskId, liveUrl: taskDetails.live_url, inputParams },
|
|
187
|
+
messageIds: [toolCallingMessage.id!],
|
|
74
188
|
}),
|
|
75
189
|
messages: [toolCallingMessage],
|
|
76
190
|
};
|
|
77
191
|
} catch (error: any) {
|
|
78
192
|
logger.error(`Error creating browser task node ${node.displayName}: ${error}`);
|
|
79
193
|
|
|
194
|
+
const errorMessageId = uuidv4();
|
|
195
|
+
const errorToolCallId = uuidv4();
|
|
196
|
+
|
|
80
197
|
const toolCallingMessage = new AIMessage({
|
|
81
|
-
id:
|
|
198
|
+
id: errorMessageId,
|
|
82
199
|
content: '',
|
|
83
200
|
tool_calls: [
|
|
84
201
|
{
|
|
85
|
-
id:
|
|
202
|
+
id: errorToolCallId,
|
|
86
203
|
name: 'browser-task',
|
|
87
204
|
args: {
|
|
88
|
-
prompt,
|
|
89
205
|
error: error.message,
|
|
90
206
|
},
|
|
91
207
|
},
|
|
@@ -93,6 +209,7 @@ export const addBrowserTaskNode = async ({ graph, node }: AddBrowserTaskNodePara
|
|
|
93
209
|
additional_kwargs: {
|
|
94
210
|
mindedMetadata: {
|
|
95
211
|
nodeType: NodeType.BROWSER_TASK,
|
|
212
|
+
nodeDisplayName: node.displayName,
|
|
96
213
|
error: error.message,
|
|
97
214
|
},
|
|
98
215
|
},
|
|
@@ -104,7 +221,7 @@ export const addBrowserTaskNode = async ({ graph, node }: AddBrowserTaskNodePara
|
|
|
104
221
|
nodeId: node.name,
|
|
105
222
|
nodeDisplayName: node.displayName,
|
|
106
223
|
raw: error,
|
|
107
|
-
messageIds: [
|
|
224
|
+
messageIds: [errorMessageId],
|
|
108
225
|
}),
|
|
109
226
|
messages: [toolCallingMessage],
|
|
110
227
|
};
|
|
@@ -26,15 +26,13 @@ export const addBrowserTaskRunNode = async ({ graph, browserTaskNode, attachedTo
|
|
|
26
26
|
if (!toolCallObj.tool_calls) {
|
|
27
27
|
throw new Error('Tool call not found');
|
|
28
28
|
}
|
|
29
|
-
|
|
30
29
|
const toolCall = toolCallObj.tool_calls[0];
|
|
31
|
-
const taskId = toolCall.args
|
|
32
|
-
|
|
33
|
-
if (!taskId) {
|
|
34
|
-
throw new Error('Task ID not found in tool call arguments');
|
|
35
|
-
}
|
|
36
|
-
|
|
30
|
+
const { taskId, ...inputParams } = toolCall.args;
|
|
37
31
|
try {
|
|
32
|
+
if (!taskId) {
|
|
33
|
+
throw new Error('Task ID not found in tool call arguments');
|
|
34
|
+
}
|
|
35
|
+
|
|
38
36
|
// Wait for task completion
|
|
39
37
|
const completedTask = await waitForCompletion(taskId);
|
|
40
38
|
logger.debug({ msg: 'Browser task completed', taskId, output: completedTask.output });
|
|
@@ -45,6 +43,7 @@ export const addBrowserTaskRunNode = async ({ graph, browserTaskNode, attachedTo
|
|
|
45
43
|
content: JSON.stringify({
|
|
46
44
|
result: completedTask.output || 'Task completed successfully',
|
|
47
45
|
steps: completedTask.steps || [],
|
|
46
|
+
inputParams: inputParams,
|
|
48
47
|
}),
|
|
49
48
|
name: 'browser-task',
|
|
50
49
|
tool_call_id: toolCall.id,
|
|
@@ -52,8 +51,10 @@ export const addBrowserTaskRunNode = async ({ graph, browserTaskNode, attachedTo
|
|
|
52
51
|
additional_kwargs: {
|
|
53
52
|
mindedMetadata: {
|
|
54
53
|
nodeType: NodeType.BROWSER_TASK,
|
|
54
|
+
nodeDisplayName: browserTaskNode.displayName,
|
|
55
55
|
taskId,
|
|
56
56
|
steps: completedTask.steps,
|
|
57
|
+
inputParams: inputParams,
|
|
57
58
|
},
|
|
58
59
|
},
|
|
59
60
|
});
|
|
@@ -67,6 +68,7 @@ export const addBrowserTaskRunNode = async ({ graph, browserTaskNode, attachedTo
|
|
|
67
68
|
...toolCallObj.additional_kwargs,
|
|
68
69
|
mindedMetadata: {
|
|
69
70
|
...toolCallObj.additional_kwargs?.mindedMetadata,
|
|
71
|
+
nodeDisplayName: browserTaskNode.displayName,
|
|
70
72
|
steps: completedTask.steps,
|
|
71
73
|
status: 'completed',
|
|
72
74
|
},
|
|
@@ -91,6 +93,7 @@ export const addBrowserTaskRunNode = async ({ graph, browserTaskNode, attachedTo
|
|
|
91
93
|
id: uuidv4(),
|
|
92
94
|
content: JSON.stringify({
|
|
93
95
|
error: error instanceof Error ? error.message : error.toString(),
|
|
96
|
+
inputParams: inputParams,
|
|
94
97
|
}),
|
|
95
98
|
status: 'error',
|
|
96
99
|
name: 'browser-task',
|
|
@@ -98,8 +101,10 @@ export const addBrowserTaskRunNode = async ({ graph, browserTaskNode, attachedTo
|
|
|
98
101
|
additional_kwargs: {
|
|
99
102
|
mindedMetadata: {
|
|
100
103
|
nodeType: NodeType.BROWSER_TASK,
|
|
104
|
+
nodeDisplayName: browserTaskNode.displayName,
|
|
101
105
|
taskId,
|
|
102
106
|
error: error.message,
|
|
107
|
+
inputParams: inputParams,
|
|
103
108
|
},
|
|
104
109
|
},
|
|
105
110
|
});
|
|
@@ -113,6 +118,7 @@ export const addBrowserTaskRunNode = async ({ graph, browserTaskNode, attachedTo
|
|
|
113
118
|
...toolCallObj.additional_kwargs,
|
|
114
119
|
mindedMetadata: {
|
|
115
120
|
...toolCallObj.additional_kwargs?.mindedMetadata,
|
|
121
|
+
nodeDisplayName: browserTaskNode.displayName,
|
|
116
122
|
status: 'failed',
|
|
117
123
|
error: error.message,
|
|
118
124
|
},
|
package/src/nodes/nodeFactory.ts
CHANGED
|
@@ -49,9 +49,9 @@ export const nodeFactory = ({
|
|
|
49
49
|
addJumpToNode({ graph, node });
|
|
50
50
|
break;
|
|
51
51
|
case NodeType.BROWSER_TASK:
|
|
52
|
-
addBrowserTaskNode({ graph, node, agent });
|
|
52
|
+
addBrowserTaskNode({ graph, node, agent, llm });
|
|
53
53
|
break;
|
|
54
54
|
default:
|
|
55
55
|
throw new Error(`Unsupported node type: ${nodeType}`);
|
|
56
56
|
}
|
|
57
|
-
};
|
|
57
|
+
};
|
package/src/types/Flows.types.ts
CHANGED
|
@@ -94,6 +94,12 @@ export interface BrowserTaskNode extends BaseNode {
|
|
|
94
94
|
type: NodeType.BROWSER_TASK;
|
|
95
95
|
prompt: string;
|
|
96
96
|
model?: string;
|
|
97
|
+
inputSchema?: {
|
|
98
|
+
name: string;
|
|
99
|
+
type: 'string' | 'number';
|
|
100
|
+
description?: string;
|
|
101
|
+
required?: boolean;
|
|
102
|
+
}[];
|
|
97
103
|
}
|
|
98
104
|
|
|
99
105
|
export type TriggerNode = AppTriggerNode | WebhookTriggerNode | ManualTriggerNode | VoiceTriggerNode;
|