@minded-ai/mindedjs 1.0.100-beta.6 → 1.0.101-beta.1
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/browserTask/executeBrowserTask.d.ts +11 -1
- package/dist/browserTask/executeBrowserTask.d.ts.map +1 -1
- package/dist/browserTask/executeBrowserTask.js +170 -33
- package/dist/browserTask/executeBrowserTask.js.map +1 -1
- package/dist/edges/edgeFactory.d.ts.map +1 -1
- package/dist/edges/edgeFactory.js +5 -0
- package/dist/edges/edgeFactory.js.map +1 -1
- package/dist/nodes/addBrowserTaskNode.d.ts.map +1 -1
- package/dist/nodes/addBrowserTaskNode.js +108 -95
- package/dist/nodes/addBrowserTaskNode.js.map +1 -1
- package/dist/nodes/addBrowserTaskRunNode.d.ts +13 -0
- package/dist/nodes/addBrowserTaskRunNode.d.ts.map +1 -0
- package/dist/nodes/addBrowserTaskRunNode.js +126 -0
- package/dist/nodes/addBrowserTaskRunNode.js.map +1 -0
- package/dist/types/Flows.types.d.ts +2 -1
- package/dist/types/Flows.types.d.ts.map +1 -1
- package/dist/types/Flows.types.js +1 -0
- package/dist/types/Flows.types.js.map +1 -1
- package/dist/types/LangGraph.types.d.ts.map +1 -1
- package/dist/types/LangGraph.types.js +1 -0
- package/dist/types/LangGraph.types.js.map +1 -1
- package/package.json +1 -1
- package/src/browserTask/executeBrowserTask.ts +200 -32
- package/src/edges/edgeFactory.ts +17 -1
- package/src/nodes/addBrowserTaskNode.ts +116 -102
- package/src/nodes/addBrowserTaskRunNode.ts +142 -0
- package/src/types/Flows.types.ts +1 -0
- package/src/types/LangGraph.types.ts +1 -0
|
@@ -1,2 +1,12 @@
|
|
|
1
|
-
export
|
|
1
|
+
export interface CloudTaskResponse {
|
|
2
|
+
id: string;
|
|
3
|
+
status: string;
|
|
4
|
+
live_url?: string;
|
|
5
|
+
steps?: any[];
|
|
6
|
+
output?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const createCloudTask: (prompt: string, model?: string) => Promise<string>;
|
|
9
|
+
export declare const getTaskDetails: (taskId: string) => Promise<CloudTaskResponse>;
|
|
10
|
+
export declare const waitForLiveUrl: (taskId: string, maxWaitTime?: number) => Promise<CloudTaskResponse>;
|
|
11
|
+
export declare const waitForCompletion: (taskId: string, maxWaitTime?: number) => Promise<CloudTaskResponse>;
|
|
2
12
|
//# sourceMappingURL=executeBrowserTask.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executeBrowserTask.d.ts","sourceRoot":"","sources":["../../src/browserTask/executeBrowserTask.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"executeBrowserTask.d.ts","sourceRoot":"","sources":["../../src/browserTask/executeBrowserTask.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAGD,eAAO,MAAM,eAAe,GAAU,QAAQ,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CA6BpF,CAAC;AAEF,eAAO,MAAM,cAAc,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,iBAAiB,CAkB9E,CAAC;AAEF,eAAO,MAAM,cAAc,GAAU,QAAQ,MAAM,EAAE,cAAa,MAAc,KAAG,OAAO,CAAC,iBAAiB,CAsE3G,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAU,QAAQ,MAAM,EAAE,cAAa,MAAe,KAAG,OAAO,CAAC,iBAAiB,CA0E/G,CAAC"}
|
|
@@ -1,44 +1,181 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const child_process_1 = require("child_process");
|
|
3
|
+
exports.waitForCompletion = exports.waitForLiveUrl = exports.getTaskDetails = exports.createCloudTask = void 0;
|
|
5
4
|
const logger_1 = require("../utils/logger");
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
5
|
+
// Browser Use Cloud API configuration
|
|
6
|
+
const BROWSER_USE_API_BASE_URL = 'https://api.browser-use.com/api/v1';
|
|
7
|
+
// Browser Use Cloud API methods
|
|
8
|
+
const createCloudTask = async (prompt, model) => {
|
|
9
|
+
const apiKey = process.env.BROWSER_USE_API_KEY;
|
|
10
|
+
if (!apiKey) {
|
|
11
|
+
throw new Error('BROWSER_USE_API_KEY environment variable is required');
|
|
12
|
+
}
|
|
13
|
+
logger_1.logger.debug({ msg: 'Creating cloud browser task', prompt: prompt.substring(0, 100) + '...' });
|
|
14
|
+
const response = await fetch(`${BROWSER_USE_API_BASE_URL}/run-task`, {
|
|
15
|
+
method: 'POST',
|
|
16
|
+
headers: {
|
|
17
|
+
Authorization: `Bearer ${apiKey}`,
|
|
18
|
+
'Content-Type': 'application/json',
|
|
19
|
+
},
|
|
20
|
+
body: JSON.stringify({
|
|
21
|
+
task: prompt,
|
|
22
|
+
use_proxy: false,
|
|
23
|
+
llm_model: model || 'gpt-4o',
|
|
24
|
+
}),
|
|
25
|
+
});
|
|
26
|
+
if (!response.ok) {
|
|
27
|
+
logger_1.logger.error({ msg: 'Failed to create cloud browser task', status: response.status, statusText: response.statusText });
|
|
28
|
+
throw new Error(`Failed to create browser task: ${response.statusText}`);
|
|
29
|
+
}
|
|
30
|
+
const data = await response.json();
|
|
31
|
+
logger_1.logger.debug({ msg: 'Cloud browser task created', taskId: data.id });
|
|
32
|
+
return data.id;
|
|
33
|
+
};
|
|
34
|
+
exports.createCloudTask = createCloudTask;
|
|
35
|
+
const getTaskDetails = async (taskId) => {
|
|
36
|
+
const apiKey = process.env.BROWSER_USE_API_KEY;
|
|
37
|
+
if (!apiKey) {
|
|
38
|
+
throw new Error('BROWSER_USE_API_KEY environment variable is required');
|
|
39
|
+
}
|
|
40
|
+
const response = await fetch(`${BROWSER_USE_API_BASE_URL}/task/${taskId}`, {
|
|
41
|
+
headers: {
|
|
42
|
+
Authorization: `Bearer ${apiKey}`,
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
if (!response.ok) {
|
|
46
|
+
logger_1.logger.error({ msg: 'Failed to get task details', taskId, status: response.status, statusText: response.statusText });
|
|
47
|
+
throw new Error(`Failed to get task details: ${response.statusText}`);
|
|
48
|
+
}
|
|
49
|
+
return response.json();
|
|
50
|
+
};
|
|
51
|
+
exports.getTaskDetails = getTaskDetails;
|
|
52
|
+
const waitForLiveUrl = async (taskId, maxWaitTime = 30000) => {
|
|
53
|
+
const startTime = Date.now();
|
|
54
|
+
const pollInterval = 2000; // 2 seconds
|
|
55
|
+
let pollCount = 0;
|
|
56
|
+
logger_1.logger.debug({ msg: 'Starting to poll for live_url', taskId, maxWaitTime, pollInterval });
|
|
57
|
+
while (Date.now() - startTime < maxWaitTime) {
|
|
58
|
+
pollCount++;
|
|
59
|
+
const elapsedTime = Date.now() - startTime;
|
|
60
|
+
logger_1.logger.trace({
|
|
61
|
+
msg: 'Polling for live_url',
|
|
62
|
+
taskId,
|
|
63
|
+
pollCount,
|
|
64
|
+
elapsedTime,
|
|
65
|
+
remainingTime: maxWaitTime - elapsedTime,
|
|
66
|
+
});
|
|
67
|
+
const taskDetails = await (0, exports.getTaskDetails)(taskId);
|
|
68
|
+
logger_1.logger.trace({
|
|
69
|
+
msg: 'Task details received',
|
|
70
|
+
taskId,
|
|
71
|
+
status: taskDetails.status,
|
|
72
|
+
hasLiveUrl: !!taskDetails.live_url,
|
|
73
|
+
pollCount,
|
|
18
74
|
});
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
75
|
+
if (taskDetails.live_url) {
|
|
76
|
+
logger_1.logger.debug({
|
|
77
|
+
msg: 'Live URL available',
|
|
78
|
+
taskId,
|
|
79
|
+
liveUrl: taskDetails.live_url,
|
|
80
|
+
pollCount,
|
|
81
|
+
totalTime: elapsedTime,
|
|
82
|
+
});
|
|
83
|
+
return taskDetails;
|
|
84
|
+
}
|
|
85
|
+
if (taskDetails.status === 'failed' || taskDetails.status === 'stopped') {
|
|
86
|
+
logger_1.logger.error({
|
|
87
|
+
msg: 'Task failed while waiting for live_url',
|
|
88
|
+
taskId,
|
|
89
|
+
status: taskDetails.status,
|
|
90
|
+
pollCount,
|
|
91
|
+
elapsedTime,
|
|
92
|
+
});
|
|
93
|
+
throw new Error(`Task failed with status: ${taskDetails.status}`);
|
|
94
|
+
}
|
|
95
|
+
logger_1.logger.trace({
|
|
96
|
+
msg: 'Live URL not yet available, continuing to poll',
|
|
97
|
+
taskId,
|
|
98
|
+
status: taskDetails.status,
|
|
99
|
+
pollCount,
|
|
100
|
+
nextPollIn: pollInterval,
|
|
25
101
|
});
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
102
|
+
await new Promise((resolve) => setTimeout(resolve, pollInterval));
|
|
103
|
+
}
|
|
104
|
+
logger_1.logger.error({
|
|
105
|
+
msg: 'Timeout waiting for live_url',
|
|
106
|
+
taskId,
|
|
107
|
+
pollCount,
|
|
108
|
+
totalTime: Date.now() - startTime,
|
|
109
|
+
maxWaitTime,
|
|
110
|
+
});
|
|
111
|
+
throw new Error('Timeout waiting for live_url to become available');
|
|
112
|
+
};
|
|
113
|
+
exports.waitForLiveUrl = waitForLiveUrl;
|
|
114
|
+
const waitForCompletion = async (taskId, maxWaitTime = 300000) => {
|
|
115
|
+
var _a, _b, _c, _d;
|
|
116
|
+
const startTime = Date.now();
|
|
117
|
+
const pollInterval = 3000; // 3 seconds for completion polling
|
|
118
|
+
let pollCount = 0;
|
|
119
|
+
logger_1.logger.debug({ msg: 'Starting to poll for task completion', taskId, maxWaitTime, pollInterval });
|
|
120
|
+
while (Date.now() - startTime < maxWaitTime) {
|
|
121
|
+
pollCount++;
|
|
122
|
+
const elapsedTime = Date.now() - startTime;
|
|
123
|
+
logger_1.logger.trace({
|
|
124
|
+
msg: 'Polling for task completion',
|
|
125
|
+
taskId,
|
|
126
|
+
pollCount,
|
|
127
|
+
elapsedTime,
|
|
128
|
+
remainingTime: maxWaitTime - elapsedTime,
|
|
29
129
|
});
|
|
30
|
-
|
|
31
|
-
|
|
130
|
+
const taskDetails = await (0, exports.getTaskDetails)(taskId);
|
|
131
|
+
logger_1.logger.trace({
|
|
132
|
+
msg: 'Task completion status received',
|
|
133
|
+
taskId,
|
|
134
|
+
status: taskDetails.status,
|
|
135
|
+
pollCount,
|
|
136
|
+
hasOutput: !!taskDetails.output,
|
|
137
|
+
stepCount: ((_a = taskDetails.steps) === null || _a === void 0 ? void 0 : _a.length) || 0,
|
|
32
138
|
});
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
139
|
+
if (taskDetails.status === 'finished') {
|
|
140
|
+
logger_1.logger.debug({
|
|
141
|
+
msg: 'Task completed successfully',
|
|
142
|
+
taskId,
|
|
143
|
+
pollCount,
|
|
144
|
+
totalTime: elapsedTime,
|
|
145
|
+
stepCount: ((_b = taskDetails.steps) === null || _b === void 0 ? void 0 : _b.length) || 0,
|
|
146
|
+
hasOutput: !!taskDetails.output,
|
|
147
|
+
});
|
|
148
|
+
return taskDetails;
|
|
149
|
+
}
|
|
150
|
+
if (taskDetails.status === 'failed' || taskDetails.status === 'stopped') {
|
|
151
|
+
logger_1.logger.error({
|
|
152
|
+
msg: 'Task failed during completion polling',
|
|
153
|
+
taskId,
|
|
154
|
+
status: taskDetails.status,
|
|
155
|
+
pollCount,
|
|
156
|
+
elapsedTime,
|
|
157
|
+
stepCount: ((_c = taskDetails.steps) === null || _c === void 0 ? void 0 : _c.length) || 0,
|
|
158
|
+
});
|
|
159
|
+
throw new Error(`Task failed with status: ${taskDetails.status}`);
|
|
160
|
+
}
|
|
161
|
+
logger_1.logger.trace({
|
|
162
|
+
msg: 'Task still in progress, continuing to poll',
|
|
163
|
+
taskId,
|
|
164
|
+
status: taskDetails.status,
|
|
165
|
+
pollCount,
|
|
166
|
+
stepCount: ((_d = taskDetails.steps) === null || _d === void 0 ? void 0 : _d.length) || 0,
|
|
167
|
+
nextPollIn: pollInterval,
|
|
40
168
|
});
|
|
169
|
+
await new Promise((resolve) => setTimeout(resolve, pollInterval));
|
|
170
|
+
}
|
|
171
|
+
logger_1.logger.error({
|
|
172
|
+
msg: 'Timeout waiting for task completion',
|
|
173
|
+
taskId,
|
|
174
|
+
pollCount,
|
|
175
|
+
totalTime: Date.now() - startTime,
|
|
176
|
+
maxWaitTime,
|
|
41
177
|
});
|
|
178
|
+
throw new Error('Timeout waiting for task completion');
|
|
42
179
|
};
|
|
43
|
-
exports.
|
|
180
|
+
exports.waitForCompletion = waitForCompletion;
|
|
44
181
|
//# sourceMappingURL=executeBrowserTask.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executeBrowserTask.js","sourceRoot":"","sources":["../../src/browserTask/executeBrowserTask.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"executeBrowserTask.js","sourceRoot":"","sources":["../../src/browserTask/executeBrowserTask.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edgeFactory.d.ts","sourceRoot":"","sources":["../../src/edges/edgeFactory.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"edgeFactory.d.ts","sourceRoot":"","sources":["../../src/edges/edgeFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EAEJ,IAAI,EAOL,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAOzE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AASjC,eAAO,MAAM,WAAW,GAAI,6CAOzB;IACD,KAAK,EAAE,gBAAgB,CAAC;IACxB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5B,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;IACxB,GAAG,EAAE,iBAAiB,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC;CACd,SAiGA,CAAC"}
|
|
@@ -7,6 +7,7 @@ const createLogicalRouter_1 = require("./createLogicalRouter");
|
|
|
7
7
|
const createDirectEdge_1 = require("./createDirectEdge");
|
|
8
8
|
const addHumanInTheLoopNode_1 = require("../nodes/addHumanInTheLoopNode");
|
|
9
9
|
const addToolRunNode_1 = require("../nodes/addToolRunNode");
|
|
10
|
+
const addBrowserTaskRunNode_1 = require("../nodes/addBrowserTaskRunNode");
|
|
10
11
|
const logger_1 = require("../utils/logger");
|
|
11
12
|
const edgeFactory = ({ graph, edges, nodes, tools, llm, agent, }) => {
|
|
12
13
|
/**
|
|
@@ -63,6 +64,10 @@ const edgeFactory = ({ graph, edges, nodes, tools, llm, agent, }) => {
|
|
|
63
64
|
(0, addToolRunNode_1.addToolRunNode)({ graph, tools, llm, toolNode: originalNode, attachedToNodeName: source, agent });
|
|
64
65
|
effectiveSource = (0, addToolRunNode_1.buildToolRunNodeName)(source);
|
|
65
66
|
}
|
|
67
|
+
if ((originalNode === null || originalNode === void 0 ? void 0 : originalNode.type) === Flows_types_1.NodeType.BROWSER_TASK) {
|
|
68
|
+
(0, addBrowserTaskRunNode_1.addBrowserTaskRunNode)({ graph, browserTaskNode: originalNode, attachedToNodeName: source, agent });
|
|
69
|
+
effectiveSource = (0, addBrowserTaskRunNode_1.buildBrowserTaskRunNodeName)(source);
|
|
70
|
+
}
|
|
66
71
|
// Create and add the combined conditional edge with original node reference
|
|
67
72
|
const combinedRouter = createCombinedRouter(effectiveSource, edgesBySource, originalNode);
|
|
68
73
|
graph.addConditionalEdges(effectiveSource, combinedRouter);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edgeFactory.js","sourceRoot":"","sources":["../../src/edges/edgeFactory.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"edgeFactory.js","sourceRoot":"","sources":["../../src/edges/edgeFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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;AAGlD,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,kBA6J7F,CAAC"}
|
|
@@ -5,101 +5,100 @@ const Flows_types_1 = require("../types/Flows.types");
|
|
|
5
5
|
const logger_1 = require("../utils/logger");
|
|
6
6
|
const history_1 = require("../utils/history");
|
|
7
7
|
const messages_1 = require("@langchain/core/messages");
|
|
8
|
-
const executeBrowserTask_1 = require("../browserTask/executeBrowserTask");
|
|
9
8
|
const uuid_1 = require("uuid");
|
|
10
|
-
const
|
|
9
|
+
const executeBrowserTask_1 = require("../browserTask/executeBrowserTask");
|
|
11
10
|
const tools_1 = require("@langchain/core/tools");
|
|
11
|
+
const zod_1 = require("zod");
|
|
12
12
|
const playbooks_1 = require("../playbooks/playbooks");
|
|
13
13
|
const addBrowserTaskNode = async ({ graph, node, agent, llm }) => {
|
|
14
14
|
const callback = async (state) => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
// Check if inputSchema exists and has fields
|
|
20
|
-
if (node.inputSchema && node.inputSchema.length > 0) {
|
|
21
|
-
// Convert inputSchema to Zod schema
|
|
22
|
-
const zodSchemaFields = {};
|
|
15
|
+
logger_1.logger.info({ msg: `Executing browser task node ${node.displayName}`, prompt: node.prompt });
|
|
16
|
+
// Create Zod schema from inputSchema
|
|
17
|
+
const schemaFields = {};
|
|
18
|
+
if (node.inputSchema) {
|
|
23
19
|
for (const field of node.inputSchema) {
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
let fieldSchema;
|
|
21
|
+
if (field.type === 'string') {
|
|
22
|
+
fieldSchema = zod_1.z.string();
|
|
23
|
+
}
|
|
24
|
+
else if (field.type === 'number') {
|
|
25
|
+
fieldSchema = zod_1.z.number();
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
fieldSchema = zod_1.z.string(); // Default to string
|
|
29
|
+
}
|
|
30
|
+
if (field.description) {
|
|
31
|
+
fieldSchema = fieldSchema.describe(field.description);
|
|
32
|
+
}
|
|
33
|
+
if (field.required === false) {
|
|
34
|
+
fieldSchema = fieldSchema.optional();
|
|
35
|
+
}
|
|
36
|
+
schemaFields[field.name] = fieldSchema;
|
|
26
37
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
}
|
|
39
|
+
const zodSchema = zod_1.z.object(schemaFields);
|
|
40
|
+
// Create langchain tool
|
|
41
|
+
const tool = (0, tools_1.tool)(() => { }, {
|
|
42
|
+
name: 'browser-task',
|
|
43
|
+
description: node.prompt,
|
|
44
|
+
schema: zodSchema,
|
|
45
|
+
});
|
|
46
|
+
// Get compiled playbooks
|
|
47
|
+
const playbookParams = {
|
|
48
|
+
...state.memory,
|
|
49
|
+
state,
|
|
50
|
+
currentTime: new Date().toISOString(),
|
|
51
|
+
};
|
|
52
|
+
const compiledPlaybooks = (0, playbooks_1.compilePlaybooks)(agent.playbooks, playbookParams) || '';
|
|
53
|
+
const systemPrompt = `${compiledPlaybooks ? compiledPlaybooks + '\n\n' : ''}
|
|
43
54
|
Additional context:
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
//
|
|
47
|
-
const
|
|
48
|
-
.bindTools([
|
|
49
|
-
tool_choice:
|
|
55
|
+
- workflow memory: ${JSON.stringify(state.memory)}`;
|
|
56
|
+
try {
|
|
57
|
+
// Use LLM to generate tool call
|
|
58
|
+
const AIToolCallMessage = await llm
|
|
59
|
+
.bindTools([tool], {
|
|
60
|
+
tool_choice: tool.name,
|
|
50
61
|
})
|
|
51
|
-
.invoke([...state.messages, new messages_1.SystemMessage(
|
|
52
|
-
if (!
|
|
53
|
-
throw new Error('
|
|
62
|
+
.invoke([...state.messages, new messages_1.SystemMessage(systemPrompt)]);
|
|
63
|
+
if (!AIToolCallMessage.tool_calls || AIToolCallMessage.tool_calls.length === 0) {
|
|
64
|
+
throw new Error('No tool calls generated by LLM');
|
|
54
65
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
`;
|
|
87
|
-
logger_1.logger.info({ msg: `Executing browser task node ${node.displayName}`, prompt, model: node.model, inputArgs });
|
|
88
|
-
try {
|
|
89
|
-
const output = await (0, executeBrowserTask_1.executeBrowserTask)(prompt, node.model);
|
|
90
|
-
const result = output.split(` Result: `)[1] || output;
|
|
91
|
-
logger_1.logger.debug({ message: 'Browser task result', result });
|
|
92
|
-
const toolCall = new messages_1.ToolMessage({
|
|
93
|
-
id: (0, uuid_1.v4)(),
|
|
94
|
-
content: JSON.stringify({
|
|
95
|
-
result,
|
|
96
|
-
}),
|
|
97
|
-
name: 'browser-task',
|
|
98
|
-
tool_call_id: toolCallId,
|
|
99
|
-
status: 'success',
|
|
66
|
+
const toolCall = AIToolCallMessage.tool_calls[0];
|
|
67
|
+
const inputParams = toolCall.args || {};
|
|
68
|
+
// Build the full prompt with input parameters
|
|
69
|
+
const fullPrompt = `
|
|
70
|
+
Follow the instructions. Any retrieved data should be printed as string and not saved to a file.
|
|
71
|
+
|
|
72
|
+
# Task instructions:
|
|
73
|
+
${node.prompt}
|
|
74
|
+
|
|
75
|
+
${Object.keys(inputParams).length > 0 ? `# Input parameters:\n${JSON.stringify(inputParams, null, 2)}\n\n` : ''}
|
|
76
|
+
${state.memory ? `# Task context:\n${JSON.stringify(state.memory)}\n\n` : ''}
|
|
77
|
+
`;
|
|
78
|
+
// Create the browser task in the cloud
|
|
79
|
+
const taskId = await (0, executeBrowserTask_1.createCloudTask)(fullPrompt, node.model);
|
|
80
|
+
logger_1.logger.debug({ msg: 'Browser task created', taskId });
|
|
81
|
+
// Wait for live_url to become available
|
|
82
|
+
const taskDetails = await (0, executeBrowserTask_1.waitForLiveUrl)(taskId);
|
|
83
|
+
logger_1.logger.debug({ msg: 'Live URL available', taskId, liveUrl: taskDetails.live_url });
|
|
84
|
+
// Update the tool call with taskId and other metadata
|
|
85
|
+
const updatedToolCall = {
|
|
86
|
+
...toolCall,
|
|
87
|
+
args: {
|
|
88
|
+
...inputParams,
|
|
89
|
+
taskId,
|
|
90
|
+
prompt: fullPrompt,
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
const toolCallingMessage = new messages_1.AIMessage({
|
|
94
|
+
id: AIToolCallMessage.id,
|
|
95
|
+
content: AIToolCallMessage.content,
|
|
96
|
+
tool_calls: [updatedToolCall],
|
|
100
97
|
additional_kwargs: {
|
|
101
98
|
mindedMetadata: {
|
|
102
99
|
nodeType: Flows_types_1.NodeType.BROWSER_TASK,
|
|
100
|
+
taskId,
|
|
101
|
+
liveUrl: taskDetails.live_url,
|
|
103
102
|
},
|
|
104
103
|
},
|
|
105
104
|
});
|
|
@@ -108,30 +107,44 @@ Additional context:
|
|
|
108
107
|
type: Flows_types_1.NodeType.BROWSER_TASK,
|
|
109
108
|
nodeId: node.name,
|
|
110
109
|
nodeDisplayName: node.displayName,
|
|
111
|
-
raw:
|
|
112
|
-
messageIds: [
|
|
110
|
+
raw: { taskId, liveUrl: taskDetails.live_url, inputParams },
|
|
111
|
+
messageIds: [toolCallingMessage.id],
|
|
113
112
|
}),
|
|
114
|
-
messages: [toolCallingMessage
|
|
113
|
+
messages: [toolCallingMessage],
|
|
115
114
|
};
|
|
116
115
|
}
|
|
117
116
|
catch (error) {
|
|
118
|
-
logger_1.logger.error(`Error
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
117
|
+
logger_1.logger.error(`Error creating browser task node ${node.displayName}: ${error}`);
|
|
118
|
+
const errorMessageId = (0, uuid_1.v4)();
|
|
119
|
+
const errorToolCallId = (0, uuid_1.v4)();
|
|
120
|
+
const toolCallingMessage = new messages_1.AIMessage({
|
|
121
|
+
id: errorMessageId,
|
|
122
|
+
content: '',
|
|
123
|
+
tool_calls: [
|
|
124
|
+
{
|
|
125
|
+
id: errorToolCallId,
|
|
126
|
+
name: 'browser-task',
|
|
127
|
+
args: {
|
|
128
|
+
error: error.message,
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
],
|
|
127
132
|
additional_kwargs: {
|
|
128
133
|
mindedMetadata: {
|
|
129
134
|
nodeType: Flows_types_1.NodeType.BROWSER_TASK,
|
|
135
|
+
error: error.message,
|
|
130
136
|
},
|
|
131
137
|
},
|
|
132
138
|
});
|
|
133
139
|
return {
|
|
134
|
-
|
|
140
|
+
history: (0, history_1.createHistoryStep)(state.history, {
|
|
141
|
+
type: Flows_types_1.NodeType.BROWSER_TASK,
|
|
142
|
+
nodeId: node.name,
|
|
143
|
+
nodeDisplayName: node.displayName,
|
|
144
|
+
raw: error,
|
|
145
|
+
messageIds: [errorMessageId],
|
|
146
|
+
}),
|
|
147
|
+
messages: [toolCallingMessage],
|
|
135
148
|
};
|
|
136
149
|
}
|
|
137
150
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addBrowserTaskNode.js","sourceRoot":"","sources":["../../src/nodes/addBrowserTaskNode.ts"],"names":[],"mappings":";;;AACA,sDAAiE;AAGjE,4CAAyC;AACzC,8CAAqD;AACrD,
|
|
1
|
+
{"version":3,"file":"addBrowserTaskNode.js","sourceRoot":"","sources":["../../src/nodes/addBrowserTaskNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { PreCompiledGraph } from '../types/LangGraph.types';
|
|
2
|
+
import { BrowserTaskNode } from '../types/Flows.types';
|
|
3
|
+
import { Agent } from '../agent';
|
|
4
|
+
type AddBrowserTaskRunNodeParams = {
|
|
5
|
+
graph: PreCompiledGraph;
|
|
6
|
+
browserTaskNode: BrowserTaskNode;
|
|
7
|
+
attachedToNodeName: string;
|
|
8
|
+
agent: Agent;
|
|
9
|
+
};
|
|
10
|
+
export declare const buildBrowserTaskRunNodeName: (nodeName: string) => string;
|
|
11
|
+
export declare const addBrowserTaskRunNode: ({ graph, browserTaskNode, attachedToNodeName }: AddBrowserTaskRunNodeParams) => Promise<void>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=addBrowserTaskRunNode.d.ts.map
|
|
@@ -0,0 +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,kBAyHtH,CAAC"}
|