@minded-ai/mindedjs 1.0.100-beta.5 → 1.0.101
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/cli/index.js +0 -0
- 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 +1 -3
- package/dist/nodes/addBrowserTaskNode.d.ts.map +1 -1
- package/dist/nodes/addBrowserTaskNode.js +56 -99
- 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 +122 -0
- package/dist/nodes/addBrowserTaskRunNode.js.map +1 -0
- package/dist/nodes/nodeFactory.js +1 -1
- package/dist/nodes/nodeFactory.js.map +1 -1
- package/dist/types/Flows.types.d.ts +2 -7
- 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 +2 -2
- package/src/browserTask/executeBrowserTask.ts +200 -32
- package/src/edges/edgeFactory.ts +17 -1
- package/src/nodes/addBrowserTaskNode.ts +63 -115
- package/src/nodes/addBrowserTaskRunNode.ts +138 -0
- package/src/nodes/nodeFactory.ts +2 -2
- package/src/types/Flows.types.ts +1 -6
- package/src/types/LangGraph.types.ts +1 -0
- package/dist/guidelines/guidelinesManager.d.ts +0 -37
- package/dist/guidelines/guidelinesManager.d.ts.map +0 -1
- package/dist/guidelines/guidelinesManager.js +0 -172
- package/dist/guidelines/guidelinesManager.js.map +0 -1
- package/dist/platform/mindedChatOpenAI.d.ts +0 -5
- package/dist/platform/mindedChatOpenAI.d.ts.map +0 -1
- package/dist/platform/mindedChatOpenAI.js +0 -23
- package/dist/platform/mindedChatOpenAI.js.map +0 -1
- package/dist/utils/extractToolMemoryResponse.d.ts +0 -4
- package/dist/utils/extractToolMemoryResponse.d.ts.map +0 -1
- package/dist/utils/extractToolMemoryResponse.js +0 -16
- package/dist/utils/extractToolMemoryResponse.js.map +0 -1
|
@@ -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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"}
|
package/dist/cli/index.js
CHANGED
|
File without changes
|
|
@@ -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":";;;AAAA,sDAU8B;AAG9B,6DAA0D;AAC1D,+DAA4D;AAC5D,yDAAsD;AACtD,0EAAoG;AACpG,4DAA+E;AAC/E,0EAAoG;AAGpG,4CAAyC;AAQlC,MAAM,WAAW,GAAG,CAAC,EAC1B,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,GAAG,EACH,KAAK,GAQN,EAAE,EAAE;IACH;;OAEG;IACH,MAAM,oBAAoB,GAAG,CAAC,UAAkB,EAAE,aAA4B,EAAE,YAAkB,EAAE,EAAE;QACpG,OAAO,KAAK,EAAE,KAAU,EAAE,EAAE;YAC1B,wCAAwC;YACxC,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC;gBAC9B,MAAM,YAAY,GAAG,IAAA,mCAAgB,EAAC,aAAa,CAAC,WAAW,CAAC,CAAC;gBACjE,OAAO,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;YAED,sCAAsC;YACtC,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrC,MAAM,aAAa,GAAG,IAAA,yCAAmB,EAAC,EAAE,KAAK,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC5E,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO,MAAM,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACN,eAAM,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;gBACjF,CAAC;YACH,CAAC;YAED,qCAAqC;YACrC,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,wDAAwD;gBACxD,MAAM,oBAAoB,GAAG,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,aAAa,MAAK,IAAI,CAAC;gBAElE,MAAM,YAAY,GAAG,IAAA,uCAAkB,EAAC;oBACtC,KAAK,EAAE,aAAa,CAAC,MAAM;oBAC3B,GAAG;oBACH,oBAAoB;oBACpB,eAAe,EAAE,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,KAAI,UAAU;iBAClD,CAAC,CAAC;gBACH,OAAO,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;YAED,wCAAwC;YACxC,MAAM,MAAM,GAAG,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,KAAI,UAAU,CAAC;YAChD,eAAM,CAAC,IAAI,CAAC,+CAA+C,MAAM,EAAE,CAAC,CAAC;YACrE,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF;;OAEG;IACH,MAAM,mBAAmB,GAAG,CAAC,MAAc,EAAE,aAA4B,EAAQ,EAAE;QACjF,IAAI,eAAe,GAAG,MAAM,CAAC;QAC7B,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAEnC,uCAAuC;QACvC,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,cAAc,EAAE,CAAC;YACjC,IAAA,6CAAqB,EAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,CAAC;YAC7D,eAAe,GAAG,IAAA,mDAA2B,EAAC,MAAM,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,MAAK,sBAAQ,CAAC,IAAI,EAAE,CAAC;YACzC,IAAA,+BAAc,EAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAwB,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7G,eAAe,GAAG,IAAA,qCAAoB,EAAC,MAAM,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,MAAK,sBAAQ,CAAC,YAAY,EAAE,CAAC;YACjD,IAAA,6CAAqB,EAAC,EAAE,KAAK,EAAE,eAAe,EAAE,YAA+B,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YACtH,eAAe,GAAG,IAAA,mDAA2B,EAAC,MAAM,CAAC,CAAC;QACxD,CAAC;QAED,4EAA4E;QAC5E,MAAM,cAAc,GAAG,oBAAoB,CAAC,eAAe,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;QAC1F,KAAK,CAAC,mBAAmB,CAAC,eAAsB,EAAE,cAAc,CAAC,CAAC;IACpE,CAAC,CAAC;IAEF,0EAA0E;IAC1E,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QAC/C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;gBACjB,WAAW,EAAE,SAAS;gBACtB,OAAO,EAAE,EAAE;gBACX,MAAM,EAAE,EAAE;aACX,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAQ,CAAC,YAAY,EAAE,CAAC;YACxC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,GAAG,IAAuB,CAAC;QACzD,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAQ,CAAC,iBAAiB,EAAE,CAAC;YACpD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAA4B,CAAC,CAAC;QAC9D,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAQ,CAAC,gBAAgB,EAAE,CAAC;YACnD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAA2B,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAmC,CAAC,CAAC;IAExC,qCAAqC;IACrC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,EAAE;QACnE,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AA/GW,QAAA,WAAW,eA+GtB"}
|
|
@@ -1,13 +1,11 @@
|
|
|
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';
|
|
5
4
|
type AddBrowserTaskNodeParams = {
|
|
6
5
|
graph: PreCompiledGraph;
|
|
7
6
|
node: BrowserTaskNode;
|
|
8
7
|
agent: Agent;
|
|
9
|
-
llm: (typeof LLMProviders)[keyof typeof LLMProviders];
|
|
10
8
|
};
|
|
11
|
-
export declare const addBrowserTaskNode: ({ graph, node
|
|
9
|
+
export declare const addBrowserTaskNode: ({ graph, node }: AddBrowserTaskNodeParams) => Promise<void>;
|
|
12
10
|
export {};
|
|
13
11
|
//# 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;
|
|
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;AAGjC,KAAK,wBAAwB,GAAG;IAC9B,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAU,iBAAiB,wBAAwB,kBAgGjF,CAAC"}
|
|
@@ -5,101 +5,45 @@ 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
|
|
11
|
-
const
|
|
12
|
-
const playbooks_1 = require("../playbooks/playbooks");
|
|
13
|
-
const addBrowserTaskNode = async ({ graph, node, agent, llm }) => {
|
|
9
|
+
const executeBrowserTask_1 = require("../browserTask/executeBrowserTask");
|
|
10
|
+
const addBrowserTaskNode = async ({ graph, node }) => {
|
|
14
11
|
const callback = async (state) => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
let toolCallingMessageId;
|
|
18
|
-
let toolCallingMessage;
|
|
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 = {};
|
|
23
|
-
for (const field of node.inputSchema) {
|
|
24
|
-
const baseType = field.type === 'string' ? zod_1.z.string() : zod_1.z.number();
|
|
25
|
-
zodSchemaFields[field.name] = field.required ? baseType : baseType.optional();
|
|
26
|
-
}
|
|
27
|
-
const zodSchema = zod_1.z.object(zodSchemaFields);
|
|
28
|
-
// Create tool definition
|
|
29
|
-
const browserTaskTool = (0, tools_1.tool)(() => { }, {
|
|
30
|
-
name: node.displayName,
|
|
31
|
-
description: node.prompt,
|
|
32
|
-
schema: zodSchema,
|
|
33
|
-
});
|
|
34
|
-
// Get compiled playbooks
|
|
35
|
-
const playbookParams = {
|
|
36
|
-
...state.memory,
|
|
37
|
-
state,
|
|
38
|
-
currentTime: new Date().toISOString(),
|
|
39
|
-
};
|
|
40
|
-
const compiledPlaybooks = (0, playbooks_1.compilePlaybooks)(agent.playbooks, playbookParams) || '';
|
|
41
|
-
// Create prompt for LLM
|
|
42
|
-
const toolPrompt = `${compiledPlaybooks ? compiledPlaybooks + '\n\n' : ''}
|
|
43
|
-
Additional context:
|
|
44
|
-
workflow memory: ${JSON.stringify(state.memory)}
|
|
45
|
-
`;
|
|
46
|
-
// Get tool call from LLM
|
|
47
|
-
const aiMessage = await llm
|
|
48
|
-
.bindTools([browserTaskTool], {
|
|
49
|
-
tool_choice: browserTaskTool.name,
|
|
50
|
-
})
|
|
51
|
-
.invoke([...state.messages, new messages_1.SystemMessage(toolPrompt)]);
|
|
52
|
-
if (!aiMessage.tool_calls || aiMessage.tool_calls.length === 0) {
|
|
53
|
-
throw new Error('Failed to generate tool call for browser task input');
|
|
54
|
-
}
|
|
55
|
-
// Extract input arguments
|
|
56
|
-
inputArgs = aiMessage.tool_calls[0].args;
|
|
57
|
-
toolCallId = aiMessage.tool_calls[0].id;
|
|
58
|
-
toolCallingMessageId = aiMessage.id;
|
|
59
|
-
toolCallingMessage = aiMessage;
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
// No input schema - create a minimal AI message with tool calls
|
|
63
|
-
toolCallId = (0, uuid_1.v4)();
|
|
64
|
-
toolCallingMessageId = (0, uuid_1.v4)();
|
|
65
|
-
// Create an AI message with tool_calls to satisfy the API requirement
|
|
66
|
-
toolCallingMessage = new messages_1.AIMessage({
|
|
67
|
-
content: '',
|
|
68
|
-
id: toolCallingMessageId,
|
|
69
|
-
tool_calls: [{
|
|
70
|
-
id: toolCallId,
|
|
71
|
-
name: 'browser-task',
|
|
72
|
-
args: {},
|
|
73
|
-
}],
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
// Update state with the tool calling message
|
|
77
|
-
await agent.compiledGraph.updateState(agent.getLangraphConfig(state.sessionId), {
|
|
78
|
-
messages: [toolCallingMessage],
|
|
79
|
-
}, node.name);
|
|
80
|
-
// Build the prompt with input arguments
|
|
12
|
+
logger_1.logger.info({ msg: `Executing browser task node ${node.displayName}`, prompt: node.prompt });
|
|
13
|
+
logger_1.logger.info({ msg: `Executing browser task node ${node.displayName}`, prompt: node.prompt });
|
|
81
14
|
const prompt = `
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
${
|
|
85
|
-
|
|
15
|
+
Follow the instructions. Any retrieved data should be printed as string and not saved to a file
|
|
16
|
+
# Task instructions:\n${node.prompt}\n\n
|
|
17
|
+
${state.memory ? `# Task context:\n${JSON.stringify(state.memory)}\n\n` : ''}
|
|
18
|
+
# Conversation history:\n${state.messages.map((m) => `${m.getType()}: ${m.content}`).join('\n')}
|
|
86
19
|
`;
|
|
87
|
-
|
|
20
|
+
const toolCallId = (0, uuid_1.v4)();
|
|
21
|
+
const toolCallingMessageId = (0, uuid_1.v4)();
|
|
88
22
|
try {
|
|
89
|
-
|
|
90
|
-
const
|
|
91
|
-
logger_1.logger.debug({
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
23
|
+
// Create the browser task in the cloud
|
|
24
|
+
const taskId = await (0, executeBrowserTask_1.createCloudTask)(`Follow the instructions. Any retrieved data should be printed as string and not saved to a file.\n${node.prompt}`, node.model);
|
|
25
|
+
logger_1.logger.debug({ msg: 'Browser task created', taskId });
|
|
26
|
+
// Wait for live_url to become available
|
|
27
|
+
const taskDetails = await (0, executeBrowserTask_1.waitForLiveUrl)(taskId);
|
|
28
|
+
logger_1.logger.debug({ msg: 'Live URL available', taskId, liveUrl: taskDetails.live_url });
|
|
29
|
+
const toolCallingMessage = new messages_1.AIMessage({
|
|
30
|
+
id: toolCallingMessageId,
|
|
31
|
+
content: '',
|
|
32
|
+
tool_calls: [
|
|
33
|
+
{
|
|
34
|
+
id: toolCallId,
|
|
35
|
+
name: 'browser-task',
|
|
36
|
+
args: {
|
|
37
|
+
prompt,
|
|
38
|
+
taskId,
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
],
|
|
100
42
|
additional_kwargs: {
|
|
101
43
|
mindedMetadata: {
|
|
102
44
|
nodeType: Flows_types_1.NodeType.BROWSER_TASK,
|
|
45
|
+
taskId,
|
|
46
|
+
liveUrl: taskDetails.live_url,
|
|
103
47
|
},
|
|
104
48
|
},
|
|
105
49
|
});
|
|
@@ -108,30 +52,43 @@ Additional context:
|
|
|
108
52
|
type: Flows_types_1.NodeType.BROWSER_TASK,
|
|
109
53
|
nodeId: node.name,
|
|
110
54
|
nodeDisplayName: node.displayName,
|
|
111
|
-
raw:
|
|
55
|
+
raw: { taskId, liveUrl: taskDetails.live_url },
|
|
112
56
|
messageIds: [toolCallingMessageId],
|
|
113
57
|
}),
|
|
114
|
-
messages: [toolCallingMessage
|
|
58
|
+
messages: [toolCallingMessage],
|
|
115
59
|
};
|
|
116
60
|
}
|
|
117
61
|
catch (error) {
|
|
118
|
-
logger_1.logger.error(`Error
|
|
119
|
-
const
|
|
120
|
-
id:
|
|
121
|
-
content:
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
62
|
+
logger_1.logger.error(`Error creating browser task node ${node.displayName}: ${error}`);
|
|
63
|
+
const toolCallingMessage = new messages_1.AIMessage({
|
|
64
|
+
id: toolCallingMessageId,
|
|
65
|
+
content: '',
|
|
66
|
+
tool_calls: [
|
|
67
|
+
{
|
|
68
|
+
id: toolCallId,
|
|
69
|
+
name: 'browser-task',
|
|
70
|
+
args: {
|
|
71
|
+
prompt,
|
|
72
|
+
error: error.message,
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
],
|
|
127
76
|
additional_kwargs: {
|
|
128
77
|
mindedMetadata: {
|
|
129
78
|
nodeType: Flows_types_1.NodeType.BROWSER_TASK,
|
|
79
|
+
error: error.message,
|
|
130
80
|
},
|
|
131
81
|
},
|
|
132
82
|
});
|
|
133
83
|
return {
|
|
134
|
-
|
|
84
|
+
history: (0, history_1.createHistoryStep)(state.history, {
|
|
85
|
+
type: Flows_types_1.NodeType.BROWSER_TASK,
|
|
86
|
+
nodeId: node.name,
|
|
87
|
+
nodeDisplayName: node.displayName,
|
|
88
|
+
raw: error,
|
|
89
|
+
messageIds: [toolCallingMessageId],
|
|
90
|
+
}),
|
|
91
|
+
messages: [toolCallingMessage],
|
|
135
92
|
};
|
|
136
93
|
}
|
|
137
94
|
};
|
|
@@ -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,kBAqHtH,CAAC"}
|