@minded-ai/mindedjs 1.0.101 → 1.0.102
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 +161 -29
- package/dist/nodes/addBrowserTaskNode.js.map +1 -1
- package/dist/nodes/addBrowserTaskRunNode.d.ts.map +1 -1
- package/dist/nodes/addBrowserTaskRunNode.js +5 -1
- 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 +2 -2
- package/src/nodes/addBrowserTaskNode.ts +148 -33
- package/src/nodes/addBrowserTaskRunNode.ts +5 -1
- 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,kBAuK7F,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,38 +40,136 @@ 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,
|
|
@@ -52,23 +183,24 @@ const addBrowserTaskNode = async ({ graph, node }) => {
|
|
|
52
183
|
type: Flows_types_1.NodeType.BROWSER_TASK,
|
|
53
184
|
nodeId: node.name,
|
|
54
185
|
nodeDisplayName: node.displayName,
|
|
55
|
-
raw: { taskId, liveUrl: taskDetails.live_url },
|
|
56
|
-
messageIds: [
|
|
186
|
+
raw: { taskId, liveUrl: taskDetails.live_url, inputParams },
|
|
187
|
+
messageIds: [toolCallingMessage.id],
|
|
57
188
|
}),
|
|
58
189
|
messages: [toolCallingMessage],
|
|
59
190
|
};
|
|
60
191
|
}
|
|
61
192
|
catch (error) {
|
|
62
193
|
logger_1.logger.error(`Error creating browser task node ${node.displayName}: ${error}`);
|
|
194
|
+
const errorMessageId = (0, uuid_1.v4)();
|
|
195
|
+
const errorToolCallId = (0, uuid_1.v4)();
|
|
63
196
|
const toolCallingMessage = new messages_1.AIMessage({
|
|
64
|
-
id:
|
|
197
|
+
id: errorMessageId,
|
|
65
198
|
content: '',
|
|
66
199
|
tool_calls: [
|
|
67
200
|
{
|
|
68
|
-
id:
|
|
201
|
+
id: errorToolCallId,
|
|
69
202
|
name: 'browser-task',
|
|
70
203
|
args: {
|
|
71
|
-
prompt,
|
|
72
204
|
error: error.message,
|
|
73
205
|
},
|
|
74
206
|
},
|
|
@@ -86,7 +218,7 @@ const addBrowserTaskNode = async ({ graph, node }) => {
|
|
|
86
218
|
nodeId: node.name,
|
|
87
219
|
nodeDisplayName: node.displayName,
|
|
88
220
|
raw: error,
|
|
89
|
-
messageIds: [
|
|
221
|
+
messageIds: [errorMessageId],
|
|
90
222
|
}),
|
|
91
223
|
messages: [toolCallingMessage],
|
|
92
224
|
};
|
|
@@ -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,kBAyHtH,CAAC"}
|
|
@@ -18,7 +18,7 @@ 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
|
|
21
|
+
const { taskId, ...inputParams } = toolCall.args;
|
|
22
22
|
if (!taskId) {
|
|
23
23
|
throw new Error('Task ID not found in tool call arguments');
|
|
24
24
|
}
|
|
@@ -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,
|
|
@@ -41,6 +42,7 @@ const addBrowserTaskRunNode = async ({ graph, browserTaskNode, attachedToNodeNam
|
|
|
41
42
|
nodeType: Flows_types_1.NodeType.BROWSER_TASK,
|
|
42
43
|
taskId,
|
|
43
44
|
steps: completedTask.steps,
|
|
45
|
+
inputParams: inputParams,
|
|
44
46
|
},
|
|
45
47
|
},
|
|
46
48
|
});
|
|
@@ -76,6 +78,7 @@ const addBrowserTaskRunNode = async ({ graph, browserTaskNode, attachedToNodeNam
|
|
|
76
78
|
id: (0, uuid_1.v4)(),
|
|
77
79
|
content: JSON.stringify({
|
|
78
80
|
error: error instanceof Error ? error.message : error.toString(),
|
|
81
|
+
inputParams: inputParams,
|
|
79
82
|
}),
|
|
80
83
|
status: 'error',
|
|
81
84
|
name: 'browser-task',
|
|
@@ -85,6 +88,7 @@ const addBrowserTaskRunNode = async ({ graph, browserTaskNode, attachedToNodeNam
|
|
|
85
88
|
nodeType: Flows_types_1.NodeType.BROWSER_TASK,
|
|
86
89
|
taskId,
|
|
87
90
|
error: error.message,
|
|
91
|
+
inputParams: inputParams,
|
|
88
92
|
},
|
|
89
93
|
},
|
|
90
94
|
});
|
|
@@ -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;QAED,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@minded-ai/mindedjs",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.102",
|
|
4
4
|
"description": "MindedJS is a TypeScript library for building agents.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -66,4 +66,4 @@
|
|
|
66
66
|
"uuid": "^11.1.0",
|
|
67
67
|
"ws": "^8.15.1"
|
|
68
68
|
}
|
|
69
|
-
}
|
|
69
|
+
}
|
|
@@ -4,57 +4,170 @@ 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,
|
|
@@ -69,23 +182,25 @@ export const addBrowserTaskNode = async ({ graph, node }: AddBrowserTaskNodePara
|
|
|
69
182
|
type: NodeType.BROWSER_TASK,
|
|
70
183
|
nodeId: node.name,
|
|
71
184
|
nodeDisplayName: node.displayName,
|
|
72
|
-
raw: { taskId, liveUrl: taskDetails.live_url },
|
|
73
|
-
messageIds: [
|
|
185
|
+
raw: { taskId, liveUrl: taskDetails.live_url, inputParams },
|
|
186
|
+
messageIds: [toolCallingMessage.id!],
|
|
74
187
|
}),
|
|
75
188
|
messages: [toolCallingMessage],
|
|
76
189
|
};
|
|
77
190
|
} catch (error: any) {
|
|
78
191
|
logger.error(`Error creating browser task node ${node.displayName}: ${error}`);
|
|
79
192
|
|
|
193
|
+
const errorMessageId = uuidv4();
|
|
194
|
+
const errorToolCallId = uuidv4();
|
|
195
|
+
|
|
80
196
|
const toolCallingMessage = new AIMessage({
|
|
81
|
-
id:
|
|
197
|
+
id: errorMessageId,
|
|
82
198
|
content: '',
|
|
83
199
|
tool_calls: [
|
|
84
200
|
{
|
|
85
|
-
id:
|
|
201
|
+
id: errorToolCallId,
|
|
86
202
|
name: 'browser-task',
|
|
87
203
|
args: {
|
|
88
|
-
prompt,
|
|
89
204
|
error: error.message,
|
|
90
205
|
},
|
|
91
206
|
},
|
|
@@ -104,7 +219,7 @@ export const addBrowserTaskNode = async ({ graph, node }: AddBrowserTaskNodePara
|
|
|
104
219
|
nodeId: node.name,
|
|
105
220
|
nodeDisplayName: node.displayName,
|
|
106
221
|
raw: error,
|
|
107
|
-
messageIds: [
|
|
222
|
+
messageIds: [errorMessageId],
|
|
108
223
|
}),
|
|
109
224
|
messages: [toolCallingMessage],
|
|
110
225
|
};
|
|
@@ -28,7 +28,7 @@ export const addBrowserTaskRunNode = async ({ graph, browserTaskNode, attachedTo
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
const toolCall = toolCallObj.tool_calls[0];
|
|
31
|
-
const taskId = toolCall.args
|
|
31
|
+
const { taskId, ...inputParams } = toolCall.args;
|
|
32
32
|
|
|
33
33
|
if (!taskId) {
|
|
34
34
|
throw new Error('Task ID not found in tool call arguments');
|
|
@@ -45,6 +45,7 @@ export const addBrowserTaskRunNode = async ({ graph, browserTaskNode, attachedTo
|
|
|
45
45
|
content: JSON.stringify({
|
|
46
46
|
result: completedTask.output || 'Task completed successfully',
|
|
47
47
|
steps: completedTask.steps || [],
|
|
48
|
+
inputParams: inputParams,
|
|
48
49
|
}),
|
|
49
50
|
name: 'browser-task',
|
|
50
51
|
tool_call_id: toolCall.id,
|
|
@@ -54,6 +55,7 @@ export const addBrowserTaskRunNode = async ({ graph, browserTaskNode, attachedTo
|
|
|
54
55
|
nodeType: NodeType.BROWSER_TASK,
|
|
55
56
|
taskId,
|
|
56
57
|
steps: completedTask.steps,
|
|
58
|
+
inputParams: inputParams,
|
|
57
59
|
},
|
|
58
60
|
},
|
|
59
61
|
});
|
|
@@ -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',
|
|
@@ -100,6 +103,7 @@ export const addBrowserTaskRunNode = async ({ graph, browserTaskNode, attachedTo
|
|
|
100
103
|
nodeType: NodeType.BROWSER_TASK,
|
|
101
104
|
taskId,
|
|
102
105
|
error: error.message,
|
|
106
|
+
inputParams: inputParams,
|
|
103
107
|
},
|
|
104
108
|
},
|
|
105
109
|
});
|
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;
|