@minded-ai/mindedjs 1.0.100 → 1.0.101-beta.3

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 (45) hide show
  1. package/dist/browserTask/executeBrowserTask.d.ts +11 -1
  2. package/dist/browserTask/executeBrowserTask.d.ts.map +1 -1
  3. package/dist/browserTask/executeBrowserTask.js +170 -32
  4. package/dist/browserTask/executeBrowserTask.js.map +1 -1
  5. package/dist/cli/index.js +0 -0
  6. package/dist/edges/edgeFactory.d.ts.map +1 -1
  7. package/dist/edges/edgeFactory.js +5 -0
  8. package/dist/edges/edgeFactory.js.map +1 -1
  9. package/dist/guidelines/guidelinesManager.d.ts +37 -0
  10. package/dist/guidelines/guidelinesManager.d.ts.map +1 -0
  11. package/dist/guidelines/guidelinesManager.js +172 -0
  12. package/dist/guidelines/guidelinesManager.js.map +1 -0
  13. package/dist/nodes/addBrowserTaskNode.d.ts +3 -1
  14. package/dist/nodes/addBrowserTaskNode.d.ts.map +1 -1
  15. package/dist/nodes/addBrowserTaskNode.js +183 -54
  16. package/dist/nodes/addBrowserTaskNode.js.map +1 -1
  17. package/dist/nodes/addBrowserTaskRunNode.d.ts +13 -0
  18. package/dist/nodes/addBrowserTaskRunNode.d.ts.map +1 -0
  19. package/dist/nodes/addBrowserTaskRunNode.js +126 -0
  20. package/dist/nodes/addBrowserTaskRunNode.js.map +1 -0
  21. package/dist/nodes/nodeFactory.js +1 -1
  22. package/dist/nodes/nodeFactory.js.map +1 -1
  23. package/dist/platform/mindedChatOpenAI.d.ts +5 -0
  24. package/dist/platform/mindedChatOpenAI.d.ts.map +1 -0
  25. package/dist/platform/mindedChatOpenAI.js +23 -0
  26. package/dist/platform/mindedChatOpenAI.js.map +1 -0
  27. package/dist/types/Flows.types.d.ts +8 -1
  28. package/dist/types/Flows.types.d.ts.map +1 -1
  29. package/dist/types/Flows.types.js +1 -0
  30. package/dist/types/Flows.types.js.map +1 -1
  31. package/dist/types/LangGraph.types.d.ts.map +1 -1
  32. package/dist/types/LangGraph.types.js +1 -0
  33. package/dist/types/LangGraph.types.js.map +1 -1
  34. package/dist/utils/extractToolMemoryResponse.d.ts +4 -0
  35. package/dist/utils/extractToolMemoryResponse.d.ts.map +1 -0
  36. package/dist/utils/extractToolMemoryResponse.js +16 -0
  37. package/dist/utils/extractToolMemoryResponse.js.map +1 -0
  38. package/package.json +1 -1
  39. package/src/browserTask/executeBrowserTask.ts +200 -31
  40. package/src/edges/edgeFactory.ts +17 -1
  41. package/src/nodes/addBrowserTaskNode.ts +176 -59
  42. package/src/nodes/addBrowserTaskRunNode.ts +142 -0
  43. package/src/nodes/nodeFactory.ts +2 -2
  44. package/src/types/Flows.types.ts +7 -0
  45. package/src/types/LangGraph.types.ts +1 -0
@@ -1,2 +1,12 @@
1
- export declare const executeBrowserTask: (prompt: string, model?: string) => Promise<string>;
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":"AAGA,eAAO,MAAM,kBAAkB,GAAU,QAAQ,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CAwCvF,CAAC"}
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,43 +1,181 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.executeBrowserTask = void 0;
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
- const executeBrowserTask = async (prompt, model) => {
7
- return new Promise((resolve, reject) => {
8
- const args = ['-p', prompt];
9
- // Add model flag if provided
10
- if (model) {
11
- args.push('--model', model);
12
- }
13
- const child = (0, child_process_1.spawn)('browser-use', args, {
14
- env: {
15
- ...process.env,
16
- }
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,
17
74
  });
18
- let output = '';
19
- // Stream stdout to console and collect it
20
- child.stdout.on('data', (data) => {
21
- const chunk = data.toString();
22
- logger_1.logger.trace({ message: 'Browser task output', output: chunk });
23
- output += chunk;
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,
24
101
  });
25
- // Stream stderr to console
26
- child.stderr.on('data', (data) => {
27
- logger_1.logger.error({ message: 'Browser task error', error: data.toString() });
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,
28
129
  });
29
- child.on('error', (error) => {
30
- reject(error);
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,
31
138
  });
32
- child.on('close', (code) => {
33
- if (code !== 0) {
34
- reject(new Error(`browser-use exited with code ${code}`));
35
- }
36
- else {
37
- resolve(output);
38
- }
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,
39
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,
40
177
  });
178
+ throw new Error('Timeout waiting for task completion');
41
179
  };
42
- exports.executeBrowserTask = executeBrowserTask;
180
+ exports.waitForCompletion = waitForCompletion;
43
181
  //# sourceMappingURL=executeBrowserTask.js.map
@@ -1 +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,EAAE,KAAc,EAAmB,EAAE;IAE1F,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5B,6BAA6B;QAC7B,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,aAAa,EAAE,IAAI,EAAE;YACvC,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;AAxCW,QAAA,kBAAkB,sBAwC7B"}
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,EAAE,IAAI,EAAY,IAAI,EAAkF,MAAM,sBAAsB,CAAC;AAC5I,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAMzE,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,SA4FA,CAAC"}
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":"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"}
1
+ {"version":3,"file":"edgeFactory.js","sourceRoot":"","sources":["../../src/edges/edgeFactory.ts"],"names":[],"mappings":"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"}
@@ -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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"}
@@ -1,11 +1,13 @@
1
1
  import { BrowserTaskNode } from '../types/Flows.types';
2
2
  import { PreCompiledGraph } from '../types/LangGraph.types';
3
3
  import { Agent } from '../agent';
4
+ import { LLMProviders } from '../types/LLM.types';
4
5
  type AddBrowserTaskNodeParams = {
5
6
  graph: PreCompiledGraph;
6
7
  node: BrowserTaskNode;
7
8
  agent: Agent;
9
+ llm: (typeof LLMProviders)[keyof typeof LLMProviders];
8
10
  };
9
- export declare const addBrowserTaskNode: ({ graph, node, agent }: AddBrowserTaskNodeParams) => Promise<void>;
11
+ export declare const addBrowserTaskNode: ({ graph, node, agent, llm }: AddBrowserTaskNodeParams) => Promise<void>;
10
12
  export {};
11
13
  //# sourceMappingURL=addBrowserTaskNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"addBrowserTaskNode.d.ts","sourceRoot":"","sources":["../../src/nodes/addBrowserTaskNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAY,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAmB,MAAM,0BAA0B,CAAC;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,kBA8FxF,CAAC"}
1
+ {"version":3,"file":"addBrowserTaskNode.d.ts","sourceRoot":"","sources":["../../src/nodes/addBrowserTaskNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAY,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAmB,MAAM,0BAA0B,CAAC;AAM7E,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAIjC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA0ClD,KAAK,wBAAwB,GAAG;IAC9B,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;CACvD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAU,6BAA6B,wBAAwB,kBAuK7F,CAAC"}