@minded-ai/mindedjs 1.0.96 → 1.0.97-beta.2

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.
Files changed (36) hide show
  1. package/dist/browserTask/executeBrowserTask.d.ts +2 -0
  2. package/dist/browserTask/executeBrowserTask.d.ts.map +1 -0
  3. package/dist/browserTask/executeBrowserTask.js +38 -0
  4. package/dist/browserTask/executeBrowserTask.js.map +1 -0
  5. package/dist/cli/index.js +0 -0
  6. package/dist/guidelines/guidelinesManager.d.ts +37 -0
  7. package/dist/guidelines/guidelinesManager.d.ts.map +1 -0
  8. package/dist/guidelines/guidelinesManager.js +172 -0
  9. package/dist/guidelines/guidelinesManager.js.map +1 -0
  10. package/dist/nodes/addAppToolNode.js +2 -2
  11. package/dist/nodes/addAppToolNode.js.map +1 -1
  12. package/dist/nodes/addBrowserTaskNode.d.ts +11 -0
  13. package/dist/nodes/addBrowserTaskNode.d.ts.map +1 -0
  14. package/dist/nodes/addBrowserTaskNode.js +101 -0
  15. package/dist/nodes/addBrowserTaskNode.js.map +1 -0
  16. package/dist/nodes/nodeFactory.d.ts.map +1 -1
  17. package/dist/nodes/nodeFactory.js +4 -0
  18. package/dist/nodes/nodeFactory.js.map +1 -1
  19. package/dist/types/Flows.types.d.ts +9 -2
  20. package/dist/types/Flows.types.d.ts.map +1 -1
  21. package/dist/types/Flows.types.js +1 -0
  22. package/dist/types/Flows.types.js.map +1 -1
  23. package/dist/utils/extractToolMemoryResponse.d.ts +4 -0
  24. package/dist/utils/extractToolMemoryResponse.d.ts.map +1 -0
  25. package/dist/utils/extractToolMemoryResponse.js +16 -0
  26. package/dist/utils/extractToolMemoryResponse.js.map +1 -0
  27. package/dist/utils/logger.js +1 -1
  28. package/dist/utils/logger.js.map +1 -1
  29. package/docs/getting-started/installation.md +42 -0
  30. package/package.json +2 -1
  31. package/src/browserTask/executeBrowserTask.ts +38 -0
  32. package/src/nodes/addAppToolNode.ts +2 -2
  33. package/src/nodes/addBrowserTaskNode.ts +108 -0
  34. package/src/nodes/nodeFactory.ts +4 -0
  35. package/src/types/Flows.types.ts +9 -1
  36. package/src/utils/logger.ts +1 -1
@@ -0,0 +1,2 @@
1
+ export declare const executeBrowserTask: (prompt: string) => Promise<string>;
2
+ //# sourceMappingURL=executeBrowserTask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executeBrowserTask.d.ts","sourceRoot":"","sources":["../../src/browserTask/executeBrowserTask.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CAkCvE,CAAC"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.executeBrowserTask = void 0;
4
+ const child_process_1 = require("child_process");
5
+ const logger_1 = require("../utils/logger");
6
+ const executeBrowserTask = async (prompt) => {
7
+ return new Promise((resolve, reject) => {
8
+ const child = (0, child_process_1.spawn)('browser-use', ['-p', prompt], {
9
+ env: {
10
+ ...process.env,
11
+ }
12
+ });
13
+ let output = '';
14
+ // Stream stdout to console and collect it
15
+ child.stdout.on('data', (data) => {
16
+ const chunk = data.toString();
17
+ logger_1.logger.trace({ message: 'Browser task output', output: chunk });
18
+ output += chunk;
19
+ });
20
+ // Stream stderr to console
21
+ child.stderr.on('data', (data) => {
22
+ logger_1.logger.error({ message: 'Browser task error', error: data.toString() });
23
+ });
24
+ child.on('error', (error) => {
25
+ reject(error);
26
+ });
27
+ child.on('close', (code) => {
28
+ if (code !== 0) {
29
+ reject(new Error(`browser-use exited with code ${code}`));
30
+ }
31
+ else {
32
+ resolve(output);
33
+ }
34
+ });
35
+ });
36
+ };
37
+ exports.executeBrowserTask = executeBrowserTask;
38
+ //# sourceMappingURL=executeBrowserTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executeBrowserTask.js","sourceRoot":"","sources":["../../src/browserTask/executeBrowserTask.ts"],"names":[],"mappings":";;;AAAA,iDAAsC;AACtC,4CAAyC;AAElC,MAAM,kBAAkB,GAAG,KAAK,EAAE,MAAc,EAAmB,EAAE;IAE1E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;YACjD,GAAG,EAAE;gBACH,GAAG,OAAO,CAAC,GAAG;aACf;SACF,CAAC,CAAC;QACH,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,0CAA0C;QAC1C,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,eAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,2BAA2B;QAC3B,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,eAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAlCW,QAAA,kBAAkB,sBAkC7B"}
package/dist/cli/index.js CHANGED
File without changes
@@ -0,0 +1,37 @@
1
+ import { MindedConnection } from '../platform/mindedConnection';
2
+ export interface Guideline {
3
+ id: string;
4
+ name: string;
5
+ content: string;
6
+ index?: number;
7
+ }
8
+ export declare class GuidelinesManager {
9
+ private guidelines;
10
+ private mindedConnection;
11
+ constructor(mindedConnection: MindedConnection | null);
12
+ /**
13
+ * Load guidelines from directories or platform
14
+ */
15
+ loadGuidelines(guidelinesDirectories?: string[]): Promise<Guideline[]>;
16
+ /**
17
+ * Load guidelines from local directories
18
+ */
19
+ private loadGuidelinesFromDirectories;
20
+ /**
21
+ * Recursively get all YAML files in a directory
22
+ */
23
+ private getAllYamlFiles;
24
+ /**
25
+ * Compile guidelines into a single string with EJS and placeholders
26
+ */
27
+ compileGuidelines(params?: Record<string, any>): string;
28
+ /**
29
+ * Replace placeholders in {key} format
30
+ */
31
+ private replacePlaceholders;
32
+ /**
33
+ * Get raw guidelines without compilation
34
+ */
35
+ getGuidelines(): Guideline[];
36
+ }
37
+ //# sourceMappingURL=guidelinesManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guidelinesManager.d.ts","sourceRoot":"","sources":["../../src/guidelines/guidelinesManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAKhE,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,gBAAgB,CAA0B;gBAEtC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI;IAIrD;;OAEG;IACU,cAAc,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA+BnF;;OAEG;IACH,OAAO,CAAC,6BAA6B;IA+BrC;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB;;OAEG;IACI,iBAAiB,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,MAAM;IA0BlE;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACI,aAAa,IAAI,SAAS,EAAE;CAGpC"}
@@ -0,0 +1,172 @@
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
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.GuidelinesManager = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const yaml = __importStar(require("js-yaml"));
40
+ const ejs = __importStar(require("ejs"));
41
+ const mindedConnectionTypes_1 = require("../platform/mindedConnectionTypes");
42
+ const config_1 = require("../platform/config");
43
+ const logger_1 = require("../utils/logger");
44
+ class GuidelinesManager {
45
+ constructor(mindedConnection) {
46
+ this.guidelines = [];
47
+ this.mindedConnection = mindedConnection;
48
+ }
49
+ /**
50
+ * Load guidelines from directories or platform
51
+ */
52
+ async loadGuidelines(guidelinesDirectories) {
53
+ const { env, isDeployed } = (0, config_1.getConfig)();
54
+ if (['sandbox-staging', 'sandbox'].includes(env) && isDeployed && this.mindedConnection) {
55
+ // Load from platform
56
+ const response = await this.mindedConnection.awaitEmit(mindedConnectionTypes_1.MindedConnectionSocketMessageType.GET_GUIDELINES, {});
57
+ if (response === null || response === void 0 ? void 0 : response.error) {
58
+ throw new Error(`Failed to load guidelines from platform: ${response.error}`);
59
+ }
60
+ this.guidelines = (response === null || response === void 0 ? void 0 : response.guidelines) || [];
61
+ }
62
+ else if (guidelinesDirectories) {
63
+ // Load from directories
64
+ this.guidelines = this.loadGuidelinesFromDirectories(guidelinesDirectories);
65
+ }
66
+ // Sort guidelines by index if available
67
+ this.guidelines.sort((a, b) => {
68
+ if (a.index !== undefined && b.index !== undefined) {
69
+ return a.index - b.index;
70
+ }
71
+ return 0;
72
+ });
73
+ return this.guidelines;
74
+ }
75
+ /**
76
+ * Load guidelines from local directories
77
+ */
78
+ loadGuidelinesFromDirectories(directories) {
79
+ const guidelines = [];
80
+ for (const directory of directories) {
81
+ if (!fs.existsSync(directory)) {
82
+ logger_1.logger.info(`Guidelines directory does not exist: ${directory}`);
83
+ continue;
84
+ }
85
+ const files = this.getAllYamlFiles(directory);
86
+ for (const file of files) {
87
+ try {
88
+ const fileContent = fs.readFileSync(file, 'utf8');
89
+ const guideline = yaml.load(fileContent);
90
+ if (guideline && guideline.name && guideline.content) {
91
+ guidelines.push(guideline);
92
+ logger_1.logger.info(`Loaded guideline: ${guideline.name} from ${file}`);
93
+ }
94
+ else {
95
+ logger_1.logger.warn(`Invalid guideline structure in ${file}`);
96
+ }
97
+ }
98
+ catch (error) {
99
+ logger_1.logger.error(`Failed to load guideline file ${file}: ${error}`);
100
+ }
101
+ }
102
+ }
103
+ return guidelines;
104
+ }
105
+ /**
106
+ * Recursively get all YAML files in a directory
107
+ */
108
+ getAllYamlFiles(dir) {
109
+ const files = [];
110
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
111
+ for (const entry of entries) {
112
+ const fullPath = path.join(dir, entry.name);
113
+ if (entry.isDirectory()) {
114
+ files.push(...this.getAllYamlFiles(fullPath));
115
+ }
116
+ else if (entry.name.endsWith('.yaml') || entry.name.endsWith('.yml')) {
117
+ files.push(fullPath);
118
+ }
119
+ }
120
+ return files;
121
+ }
122
+ /**
123
+ * Compile guidelines into a single string with EJS and placeholders
124
+ */
125
+ compileGuidelines(params = {}) {
126
+ if (this.guidelines.length === 0) {
127
+ return '';
128
+ }
129
+ // Combine all guidelines into sections
130
+ const sections = this.guidelines.map((guideline) => {
131
+ return `# ${guideline.name}\n${guideline.content}`;
132
+ });
133
+ const combinedGuidelines = sections.join('\n\n');
134
+ try {
135
+ // First, render with EJS
136
+ let compiledGuidelines = ejs.render(combinedGuidelines, params);
137
+ // Then, replace placeholders in {} format
138
+ compiledGuidelines = this.replacePlaceholders(compiledGuidelines, params);
139
+ return compiledGuidelines;
140
+ }
141
+ catch (error) {
142
+ logger_1.logger.error({ message: 'Error compiling guidelines', error });
143
+ return combinedGuidelines; // Return uncompiled if there's an error
144
+ }
145
+ }
146
+ /**
147
+ * Replace placeholders in {key} format
148
+ */
149
+ replacePlaceholders(text, params) {
150
+ return text.replace(/\{([^}]+)\}/g, (match, key) => {
151
+ const keys = key.split('.');
152
+ let value = params;
153
+ for (const k of keys) {
154
+ if (value && typeof value === 'object' && k in value) {
155
+ value = value[k];
156
+ }
157
+ else {
158
+ return match; // Return original if key not found
159
+ }
160
+ }
161
+ return String(value);
162
+ });
163
+ }
164
+ /**
165
+ * Get raw guidelines without compilation
166
+ */
167
+ getGuidelines() {
168
+ return this.guidelines;
169
+ }
170
+ }
171
+ exports.GuidelinesManager = GuidelinesManager;
172
+ //# sourceMappingURL=guidelinesManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guidelinesManager.js","sourceRoot":"","sources":["../../src/guidelines/guidelinesManager.ts"],"names":[],"mappings":"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"}
@@ -60,8 +60,8 @@ const addAppToolNode = async ({ graph, node, llm, agent, }) => {
60
60
  };
61
61
  const toolCallMessage = await tool.invoke(AIToolCallMessage.tool_calls[0]);
62
62
  AIToolCallMessage.additional_kwargs = {
63
- appActionInvocation: {
64
- nodeTitle: node.name,
63
+ mindedMetadata: {
64
+ nodeType: Flows_types_1.NodeType.APP_TOOL
65
65
  },
66
66
  };
67
67
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"addAppToolNode.js","sourceRoot":"","sources":["../../src/nodes/addAppToolNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"addAppToolNode.js","sourceRoot":"","sources":["../../src/nodes/addAppToolNode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { BrowserTaskNode } from '../types/Flows.types';
2
+ import { PreCompiledGraph } from '../types/LangGraph.types';
3
+ import { Agent } from '../agent';
4
+ type AddBrowserTaskNodeParams = {
5
+ graph: PreCompiledGraph;
6
+ node: BrowserTaskNode;
7
+ agent: Agent;
8
+ };
9
+ export declare const addBrowserTaskNode: ({ graph, node, agent }: AddBrowserTaskNodeParams) => Promise<void>;
10
+ export {};
11
+ //# sourceMappingURL=addBrowserTaskNode.d.ts.map
@@ -0,0 +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;AAO7E,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,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,wBAAwB,wBAAwB,kBA0FxF,CAAC"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addBrowserTaskNode = void 0;
4
+ const Flows_types_1 = require("../types/Flows.types");
5
+ const logger_1 = require("../utils/logger");
6
+ const history_1 = require("../utils/history");
7
+ const messages_1 = require("@langchain/core/messages");
8
+ const executeBrowserTask_1 = require("../browserTask/executeBrowserTask");
9
+ const uuid_1 = require("uuid");
10
+ const addBrowserTaskNode = async ({ graph, node, agent }) => {
11
+ const callback = async (state) => {
12
+ logger_1.logger.info({ message: `Executing browser task node ${node.displayName}`, prompt: node.prompt });
13
+ const prompt = `
14
+ Follow the instructions. Any retrieved data should be printed as string and not saved to a file
15
+ # Task instructions:\n${node.prompt}\n\n
16
+ ${state.memory ? `# Task context:\n${JSON.stringify(state.memory)}\n\n` : ''}
17
+ # Conversation history:\n${state.messages.map((m) => `${m.getType()}: ${m.content}`).join('\n')}
18
+ `;
19
+ const toolCallId = (0, uuid_1.v4)();
20
+ const toolCallingMessageId = (0, uuid_1.v4)();
21
+ const toolCallingMessage = new messages_1.AIMessage({
22
+ id: toolCallingMessageId,
23
+ content: '',
24
+ tool_calls: [
25
+ {
26
+ id: toolCallId,
27
+ name: 'browser-task',
28
+ args: {
29
+ prompt,
30
+ },
31
+ },
32
+ ],
33
+ additional_kwargs: {
34
+ mindedMetadata: {
35
+ nodeType: Flows_types_1.NodeType.BROWSER_TASK,
36
+ }
37
+ },
38
+ });
39
+ try {
40
+ const result = await (0, executeBrowserTask_1.executeBrowserTask)(node.prompt);
41
+ await agent.compiledGraph.updateState(agent.getLangraphConfig(state.sessionId), {
42
+ messages: [toolCallingMessage],
43
+ }, node.name);
44
+ logger_1.logger.debug({ message: 'Browser task result', result });
45
+ const toolCall = new messages_1.ToolMessage({
46
+ id: (0, uuid_1.v4)(),
47
+ content: JSON.stringify({
48
+ result: result.split(` Result: `)[1],
49
+ }),
50
+ name: 'browser-task',
51
+ tool_call_id: toolCallId,
52
+ status: 'success',
53
+ additional_kwargs: {
54
+ mindedMetadata: {
55
+ nodeType: Flows_types_1.NodeType.BROWSER_TASK,
56
+ }
57
+ },
58
+ });
59
+ return {
60
+ history: (0, history_1.createHistoryStep)(state.history, {
61
+ type: Flows_types_1.NodeType.BROWSER_TASK,
62
+ nodeId: node.name,
63
+ nodeDisplayName: node.displayName,
64
+ raw: result,
65
+ messageIds: [toolCallingMessageId],
66
+ }),
67
+ messages: [toolCallingMessage, toolCall],
68
+ };
69
+ }
70
+ catch (error) {
71
+ logger_1.logger.error(`Error executing browser task node ${node.displayName}: ${error}`);
72
+ const toolCall = new messages_1.ToolMessage({
73
+ id: (0, uuid_1.v4)(),
74
+ content: JSON.stringify({
75
+ error: error instanceof Error ? error.message : error.toString()
76
+ }),
77
+ status: 'error',
78
+ name: 'browser-task',
79
+ tool_call_id: toolCallId,
80
+ additional_kwargs: {
81
+ mindedMetadata: {
82
+ nodeType: Flows_types_1.NodeType.BROWSER_TASK,
83
+ }
84
+ },
85
+ });
86
+ return {
87
+ history: (0, history_1.createHistoryStep)(state.history, {
88
+ type: Flows_types_1.NodeType.BROWSER_TASK,
89
+ nodeId: node.name,
90
+ nodeDisplayName: node.displayName,
91
+ raw: error,
92
+ messageIds: [toolCallingMessageId],
93
+ }),
94
+ messages: [toolCallingMessage, toolCall],
95
+ };
96
+ }
97
+ };
98
+ graph.addNode(node.name, callback);
99
+ };
100
+ exports.addBrowserTaskNode = addBrowserTaskNode;
101
+ //# sourceMappingURL=addBrowserTaskNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addBrowserTaskNode.js","sourceRoot":"","sources":["../../src/nodes/addBrowserTaskNode.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"nodeFactory.d.ts","sourceRoot":"","sources":["../../src/nodes/nodeFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAY,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAG5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAIjC,eAAO,MAAM,WAAW,GAAI,2CAOzB;IACD,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;IACxB,GAAG,EAAE,CAAC,OAAO,YAAY,EAAE,MAAM,OAAO,YAAY,CAAC,CAAC;IACtD,IAAI,EAAE,aAAa,CAAC,GAAG,EAAE,MAAM,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,KAAK,EAAE,KAAK,CAAC;CACd,SAwBA,CAAC"}
1
+ {"version":3,"file":"nodeFactory.d.ts","sourceRoot":"","sources":["../../src/nodes/nodeFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAY,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAG5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAKjC,eAAO,MAAM,WAAW,GAAI,2CAOzB;IACD,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;IACxB,GAAG,EAAE,CAAC,OAAO,YAAY,EAAE,MAAM,OAAO,YAAY,CAAC,CAAC;IACtD,IAAI,EAAE,aAAa,CAAC,GAAG,EAAE,MAAM,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,KAAK,EAAE,KAAK,CAAC;CACd,SA2BA,CAAC"}
@@ -8,6 +8,7 @@ const addAppToolNode_1 = require("./addAppToolNode");
8
8
  const addTriggerNode_1 = require("./addTriggerNode");
9
9
  const addJumpToNode_1 = require("./addJumpToNode");
10
10
  const addJunctionNode_1 = require("./addJunctionNode");
11
+ const addBrowserTaskNode_1 = require("./addBrowserTaskNode");
11
12
  const nodeFactory = ({ graph, node, tools, llm, emit, agent, }) => {
12
13
  const nodeType = node.type;
13
14
  switch (nodeType) {
@@ -29,6 +30,9 @@ const nodeFactory = ({ graph, node, tools, llm, emit, agent, }) => {
29
30
  case Flows_types_1.NodeType.JUMP_TO_NODE:
30
31
  (0, addJumpToNode_1.addJumpToNode)({ graph, node });
31
32
  break;
33
+ case Flows_types_1.NodeType.BROWSER_TASK:
34
+ (0, addBrowserTaskNode_1.addBrowserTaskNode)({ graph, node, agent });
35
+ break;
32
36
  default:
33
37
  throw new Error(`Unsupported node type: ${nodeType}`);
34
38
  }
@@ -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;AAE7C,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;YACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC,CAAC;AAtCW,QAAA,WAAW,eAsCtB"}
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;YAC3C,MAAM;QACR;YACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC,CAAC;AAzCW,QAAA,WAAW,eAyCtB"}
@@ -9,7 +9,8 @@ export declare enum NodeType {
9
9
  TOOL = "tool",
10
10
  APP_TOOL = "appTool",
11
11
  PROMPT_NODE = "promptNode",
12
- JUMP_TO_NODE = "jumpToNode"
12
+ JUMP_TO_NODE = "jumpToNode",
13
+ BROWSER_TASK = "browserTask"
13
14
  }
14
15
  export declare enum EdgeType {
15
16
  LOGICAL_CONDITION = "logicalCondition",
@@ -50,6 +51,8 @@ export interface AppTriggerNode extends BaseTriggerNode, BaseAppNode {
50
51
  }
51
52
  export interface WebhookTriggerNode extends BaseTriggerNode {
52
53
  triggerType: TriggerType.WEBHOOK;
54
+ autoTrigger?: boolean;
55
+ defaultPayload?: string;
53
56
  }
54
57
  export interface VoiceTriggerNode extends BaseTriggerNode {
55
58
  triggerType: TriggerType.VOICE;
@@ -74,6 +77,10 @@ export interface JumpToNode extends BaseNode {
74
77
  type: NodeType.JUMP_TO_NODE;
75
78
  targetNodeId: string;
76
79
  }
80
+ export interface BrowserTaskNode extends BaseNode {
81
+ type: NodeType.BROWSER_TASK;
82
+ prompt: string;
83
+ }
77
84
  export type TriggerNode = AppTriggerNode | WebhookTriggerNode | ManualTriggerNode | VoiceTriggerNode;
78
85
  export interface JunctionNode extends BaseNode {
79
86
  type: NodeType.JUNCTION;
@@ -92,7 +99,7 @@ export interface AppToolNode extends BaseNode, BaseAppNode {
92
99
  metadata: AppNodeMetadata;
93
100
  actionKey: string;
94
101
  }
95
- export type Node = TriggerNode | JunctionNode | ToolNode | AppToolNode | PromptNode | JumpToNode;
102
+ export type Node = TriggerNode | JunctionNode | ToolNode | AppToolNode | PromptNode | JumpToNode | BrowserTaskNode;
96
103
  export interface BaseEdge {
97
104
  source: string;
98
105
  target: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Flows.types.d.ts","sourceRoot":"","sources":["../../src/types/Flows.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Flows.types.d.ts","sourceRoot":"","sources":["../../src/types/Flows.types.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ var NodeType;
9
9
  NodeType["APP_TOOL"] = "appTool";
10
10
  NodeType["PROMPT_NODE"] = "promptNode";
11
11
  NodeType["JUMP_TO_NODE"] = "jumpToNode";
12
+ NodeType["BROWSER_TASK"] = "browserTask";
12
13
  })(NodeType || (exports.NodeType = NodeType = {}));
13
14
  var EdgeType;
14
15
  (function (EdgeType) {
@@ -1 +1 @@
1
- {"version":3,"file":"Flows.types.js","sourceRoot":"","sources":["../../src/types/Flows.types.ts"],"names":[],"mappings":";;;AAMA,IAAY,QAOX;AAPD,WAAY,QAAQ;IAClB,+BAAmB,CAAA;IACnB,iCAAqB,CAAA;IACrB,yBAAa,CAAA;IACb,gCAAoB,CAAA;IACpB,sCAA0B,CAAA;IAC1B,uCAA2B,CAAA;AAC7B,CAAC,EAPW,QAAQ,wBAAR,QAAQ,QAOnB;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;AAoGD,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,mBAGX;AAHD,WAAY,mBAAmB;IAC7B,4DAAqC,CAAA;IACrC,4CAAqB,CAAA;AACvB,CAAC,EAHW,mBAAmB,mCAAnB,mBAAmB,QAG9B"}
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;AA2GD,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,mBAGX;AAHD,WAAY,mBAAmB;IAC7B,4DAAqC,CAAA;IACrC,4CAAqB,CAAA;AACvB,CAAC,EAHW,mBAAmB,mCAAnB,mBAAmB,QAG9B"}
@@ -0,0 +1,4 @@
1
+ import { ToolMessage } from '@langchain/core/messages';
2
+ declare const extractToolMemoryResponse: <Memory>(toolMessage: ToolMessage) => Partial<Memory>;
3
+ export default extractToolMemoryResponse;
4
+ //# sourceMappingURL=extractToolMemoryResponse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractToolMemoryResponse.d.ts","sourceRoot":"","sources":["../../src/utils/extractToolMemoryResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,QAAA,MAAM,yBAAyB,GAAI,MAAM,EAAE,aAAa,WAAW,KAAG,OAAO,CAAC,MAAM,CAUnF,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const extractToolMemoryResponse = (toolMessage) => {
4
+ try {
5
+ const parsed = JSON.parse(toolMessage.content);
6
+ if (typeof parsed === 'object' && parsed !== null && 'memory' in parsed) {
7
+ return parsed.memory;
8
+ }
9
+ }
10
+ catch (error) {
11
+ console.error('Error parsing tool memory response', error);
12
+ }
13
+ return {};
14
+ };
15
+ exports.default = extractToolMemoryResponse;
16
+ //# sourceMappingURL=extractToolMemoryResponse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractToolMemoryResponse.js","sourceRoot":"","sources":["../../src/utils/extractToolMemoryResponse.ts"],"names":[],"mappings":";;AAEA,MAAM,yBAAyB,GAAG,CAAS,WAAwB,EAAmB,EAAE;IACtF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAiB,CAAC,CAAC;QACzD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;YACxE,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF,kBAAe,yBAAyB,CAAC"}
@@ -9,7 +9,7 @@ const dotenv_1 = __importDefault(require("dotenv"));
9
9
  dotenv_1.default.config();
10
10
  // Create a Pino logger with a custom log format
11
11
  exports.logger = (0, pino_1.default)({
12
- level: process.env.LOG_LEVEL || 'info',
12
+ level: process.env.LOG_LEVEL || 'trace',
13
13
  base: null,
14
14
  transport: {
15
15
  target: 'pino-pretty',
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,oDAA4B;AAC5B,gBAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,gDAAgD;AACnC,QAAA,MAAM,GAAG,IAAA,cAAI,EAAC;IACzB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM;IACtC,IAAI,EAAE,IAAI;IACV,SAAS,EAAE;QACT,MAAM,EAAE,aAAa;QACrB,OAAO,EAAE;YACP,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,IAAI;YACV,aAAa,EAAE,cAAc;SAC9B;KACF;IACD,UAAU,EAAE;QACV,KAAK,CAAC,KAAK;YACT,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC1B,CAAC;KACF;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,oDAA4B;AAC5B,gBAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,gDAAgD;AACnC,QAAA,MAAM,GAAG,IAAA,cAAI,EAAC;IACzB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO;IACvC,IAAI,EAAE,IAAI;IACV,SAAS,EAAE;QACT,MAAM,EAAE,aAAa;QACrB,OAAO,EAAE;YACP,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,IAAI;YACV,aAAa,EAAE,cAAc;SAC9B;KACF;IACD,UAAU,EAAE;QACV,KAAK,CAAC,KAAK;YACT,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC1B,CAAC;KACF;CACF,CAAC,CAAC"}
@@ -35,6 +35,48 @@ pnpm add @minded-ai/mindedjs langchain
35
35
  {% endtab %}
36
36
  {% endtabs %}
37
37
 
38
+ ## Python dependencies
39
+
40
+
41
+ ### 1. Install uv
42
+
43
+ First, install `uv` which includes the `uvx` command:
44
+
45
+ ```bash
46
+ curl -LsSf https://astral.sh/uv/install.sh | sh
47
+ ```
48
+
49
+ ### 2. Install browser-use cli with uv
50
+
51
+ ```bash
52
+ uv tool install 'browser-use[cli]'
53
+ ```
54
+
55
+ ### 3. Install Playwright Chromium browser
56
+
57
+ After installing browser-use, you need to install the Chromium browser for Playwright:
58
+
59
+ ```bash
60
+ playwright install chromium
61
+ ```
62
+
63
+ This downloads the Chromium browser that browser-use uses to automate web interactions.
64
+
65
+ ### 4. Add uv to PATH
66
+
67
+ After installation, add uv to your PATH:
68
+
69
+ ```bash
70
+ # For immediate use
71
+ source $HOME/.local/bin/env
72
+
73
+ # For permanent access, add to your shell config:
74
+ echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc # or ~/.bashrc
75
+ ```
76
+
77
+ {% endtab %}
78
+ {% endtabs %}
79
+
38
80
  ## Next Steps
39
81
 
40
82
  Now that MindedJS is installed:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@minded-ai/mindedjs",
3
- "version": "1.0.96",
3
+ "version": "1.0.97-beta.2",
4
4
  "description": "MindedJS is a TypeScript library for building agents.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -21,6 +21,7 @@
21
21
  "order-refund": "cd examples/orderRefundAgent && nodemon --watch '**/*.ts' --exec 'ts-node' orderRefundAgent.ts",
22
22
  "zendesk": "cd examples/zendesk && nodemon --watch '**/*.ts' --exec 'ts-node' zendeskAgent.ts",
23
23
  "example-voice": "cd examples/voice && nodemon --watch '**/*.ts' --exec 'ts-node' voiceAgent.ts",
24
+ "example-browser": "cd examples/browserUsingAgent && nodemon --watch '**/*.ts' --exec 'ts-node' browserUsingAgent.ts",
24
25
  "lint": "eslint .",
25
26
  "lintFix": "eslint --fix .",
26
27
  "generateApiDocs": "typedoc src --out docs/api-reference ./src"
@@ -0,0 +1,38 @@
1
+ import { spawn } from "child_process";
2
+ import { logger } from "../utils/logger";
3
+
4
+ export const executeBrowserTask = async (prompt: string): Promise<string> => {
5
+
6
+ return new Promise((resolve, reject) => {
7
+ const child = spawn('browser-use', ['-p', prompt], {
8
+ env: {
9
+ ...process.env,
10
+ }
11
+ });
12
+ let output = '';
13
+
14
+ // Stream stdout to console and collect it
15
+ child.stdout.on('data', (data) => {
16
+ const chunk = data.toString();
17
+ logger.trace({ message: 'Browser task output', output: chunk });
18
+ output += chunk;
19
+ });
20
+
21
+ // Stream stderr to console
22
+ child.stderr.on('data', (data) => {
23
+ logger.error({ message: 'Browser task error', error: data.toString() });
24
+ });
25
+
26
+ child.on('error', (error) => {
27
+ reject(error);
28
+ });
29
+
30
+ child.on('close', (code) => {
31
+ if (code !== 0) {
32
+ reject(new Error(`browser-use exited with code ${code}`));
33
+ } else {
34
+ resolve(output);
35
+ }
36
+ });
37
+ });
38
+ };
@@ -75,8 +75,8 @@ export const addAppToolNode = async ({
75
75
  };
76
76
  const toolCallMessage = await tool.invoke(AIToolCallMessage.tool_calls[0]);
77
77
  AIToolCallMessage.additional_kwargs = {
78
- appActionInvocation: {
79
- nodeTitle: node.name,
78
+ mindedMetadata: {
79
+ nodeType: NodeType.APP_TOOL
80
80
  },
81
81
  };
82
82
  return {
@@ -0,0 +1,108 @@
1
+ import { RunnableLike } from '@langchain/core/runnables';
2
+ import { BrowserTaskNode, NodeType } from '../types/Flows.types';
3
+ import { PreCompiledGraph, stateAnnotation } from '../types/LangGraph.types';
4
+ import { HistoryStep } from '../types/Agent.types';
5
+ import { logger } from '../utils/logger';
6
+ import { createHistoryStep } from '../utils/history';
7
+ import { AIMessage, ToolMessage } from '@langchain/core/messages';
8
+ import { executeBrowserTask } from '../browserTask/executeBrowserTask';
9
+ import { v4 as uuidv4 } from 'uuid';
10
+ import { Agent } from '../agent';
11
+
12
+ type AddBrowserTaskNodeParams = {
13
+ graph: PreCompiledGraph;
14
+ node: BrowserTaskNode;
15
+ agent: Agent;
16
+ };
17
+
18
+ export const addBrowserTaskNode = async ({ graph, node, agent }: AddBrowserTaskNodeParams) => {
19
+ const callback: RunnableLike = async (state: typeof stateAnnotation.State) => {
20
+ logger.info({ message: `Executing browser task node ${node.displayName}`, prompt: node.prompt });
21
+
22
+ const prompt = `
23
+ Follow the instructions. Any retrieved data should be printed as string and not saved to a file
24
+ # Task instructions:\n${node.prompt}\n\n
25
+ ${state.memory ? `# Task context:\n${JSON.stringify(state.memory)}\n\n` : ''}
26
+ # Conversation history:\n${state.messages.map((m) => `${m.getType()}: ${m.content}`).join('\n')}
27
+ `;
28
+
29
+ const toolCallId = uuidv4();
30
+ const toolCallingMessageId = uuidv4();
31
+ const toolCallingMessage = new AIMessage({
32
+ id: toolCallingMessageId,
33
+ content: '',
34
+ tool_calls: [
35
+ {
36
+ id: toolCallId,
37
+ name: 'browser-task',
38
+ args: {
39
+ prompt,
40
+ },
41
+ },
42
+ ],
43
+ additional_kwargs: {
44
+ mindedMetadata: {
45
+ nodeType: NodeType.BROWSER_TASK,
46
+ }
47
+ },
48
+ });
49
+ try {
50
+ const result = await executeBrowserTask(node.prompt);
51
+ await agent.compiledGraph.updateState(agent.getLangraphConfig(state.sessionId), {
52
+ messages: [toolCallingMessage],
53
+ }, node.name);
54
+ logger.debug({ message: 'Browser task result', result });
55
+ const toolCall = new ToolMessage({
56
+ id: uuidv4(),
57
+ content: JSON.stringify({
58
+ result: result.split(` Result: `)[1],
59
+ }),
60
+ name: 'browser-task',
61
+ tool_call_id: toolCallId,
62
+ status: 'success',
63
+ additional_kwargs: {
64
+ mindedMetadata: {
65
+ nodeType: NodeType.BROWSER_TASK,
66
+ }
67
+ },
68
+ });
69
+ return {
70
+ history: createHistoryStep<HistoryStep>(state.history, {
71
+ type: NodeType.BROWSER_TASK,
72
+ nodeId: node.name,
73
+ nodeDisplayName: node.displayName,
74
+ raw: result,
75
+ messageIds: [toolCallingMessageId],
76
+ }),
77
+ messages: [toolCallingMessage, toolCall],
78
+ };
79
+ } catch (error: any) {
80
+ logger.error(`Error executing browser task node ${node.displayName}: ${error}`);
81
+ const toolCall = new ToolMessage({
82
+ id: uuidv4(),
83
+ content: JSON.stringify({
84
+ error: error instanceof Error ? error.message : error.toString()
85
+ }),
86
+ status: 'error',
87
+ name: 'browser-task',
88
+ tool_call_id: toolCallId,
89
+ additional_kwargs: {
90
+ mindedMetadata: {
91
+ nodeType: NodeType.BROWSER_TASK,
92
+ }
93
+ },
94
+ });
95
+ return {
96
+ history: createHistoryStep<HistoryStep>(state.history, {
97
+ type: NodeType.BROWSER_TASK,
98
+ nodeId: node.name,
99
+ nodeDisplayName: node.displayName,
100
+ raw: error,
101
+ messageIds: [toolCallingMessageId],
102
+ }),
103
+ messages: [toolCallingMessage, toolCall],
104
+ }
105
+ }
106
+ };
107
+ graph.addNode(node.name, callback);
108
+ };
@@ -11,6 +11,7 @@ import { LLMProviders } from '../types/LLM.types';
11
11
  import { Agent } from '../agent';
12
12
  import { addJumpToNode } from './addJumpToNode';
13
13
  import { addJunctionNode } from './addJunctionNode';
14
+ import { addBrowserTaskNode } from './addBrowserTaskNode';
14
15
 
15
16
  export const nodeFactory = ({
16
17
  graph,
@@ -47,6 +48,9 @@ export const nodeFactory = ({
47
48
  case NodeType.JUMP_TO_NODE:
48
49
  addJumpToNode({ graph, node });
49
50
  break;
51
+ case NodeType.BROWSER_TASK:
52
+ addBrowserTaskNode({ graph, node, agent });
53
+ break;
50
54
  default:
51
55
  throw new Error(`Unsupported node type: ${nodeType}`);
52
56
  }
@@ -11,6 +11,7 @@ export enum NodeType {
11
11
  APP_TOOL = 'appTool',
12
12
  PROMPT_NODE = 'promptNode',
13
13
  JUMP_TO_NODE = 'jumpToNode',
14
+ BROWSER_TASK = 'browserTask',
14
15
  }
15
16
 
16
17
  export enum EdgeType {
@@ -58,6 +59,8 @@ export interface AppTriggerNode extends BaseTriggerNode, BaseAppNode {
58
59
 
59
60
  export interface WebhookTriggerNode extends BaseTriggerNode {
60
61
  triggerType: TriggerType.WEBHOOK;
62
+ autoTrigger?: boolean;
63
+ defaultPayload?: string;
61
64
  }
62
65
 
63
66
  export interface VoiceTriggerNode extends BaseTriggerNode {
@@ -87,6 +90,11 @@ export interface JumpToNode extends BaseNode {
87
90
  targetNodeId: string;
88
91
  }
89
92
 
93
+ export interface BrowserTaskNode extends BaseNode {
94
+ type: NodeType.BROWSER_TASK;
95
+ prompt: string;
96
+ }
97
+
90
98
  export type TriggerNode = AppTriggerNode | WebhookTriggerNode | ManualTriggerNode | VoiceTriggerNode;
91
99
 
92
100
  export interface JunctionNode extends BaseNode {
@@ -109,7 +117,7 @@ export interface AppToolNode extends BaseNode, BaseAppNode {
109
117
  actionKey: string;
110
118
  }
111
119
 
112
- export type Node = TriggerNode | JunctionNode | ToolNode | AppToolNode | PromptNode | JumpToNode;
120
+ export type Node = TriggerNode | JunctionNode | ToolNode | AppToolNode | PromptNode | JumpToNode | BrowserTaskNode;
113
121
 
114
122
  export interface BaseEdge {
115
123
  source: string;
@@ -4,7 +4,7 @@ dotenv.config();
4
4
 
5
5
  // Create a Pino logger with a custom log format
6
6
  export const logger = pino({
7
- level: process.env.LOG_LEVEL || 'info',
7
+ level: process.env.LOG_LEVEL || 'trace',
8
8
  base: null,
9
9
  transport: {
10
10
  target: 'pino-pretty',