@minded-ai/mindedjs 2.0.7 → 2.0.8-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 (59) hide show
  1. package/dist/browserTask/README.md +419 -0
  2. package/dist/browserTask/browserAgent.py +632 -0
  3. package/dist/browserTask/captcha_isolated.png +0 -0
  4. package/dist/browserTask/executeBrowserTask.d.ts +12 -3
  5. package/dist/browserTask/executeBrowserTask.d.ts.map +1 -1
  6. package/dist/browserTask/executeBrowserTask.js +35 -3
  7. package/dist/browserTask/executeBrowserTask.js.map +1 -1
  8. package/dist/browserTask/executeBrowserTask.py +42 -0
  9. package/dist/browserTask/executeBrowserTask.ts +79 -0
  10. package/dist/browserTask/localBrowserTask.d.ts +21 -0
  11. package/dist/browserTask/localBrowserTask.d.ts.map +1 -0
  12. package/dist/browserTask/localBrowserTask.js +229 -0
  13. package/dist/browserTask/localBrowserTask.js.map +1 -0
  14. package/dist/browserTask/requirements.txt +8 -0
  15. package/dist/browserTask/setup.sh +144 -0
  16. package/dist/cli/index.js +0 -0
  17. package/dist/index.d.ts +2 -2
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +2 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/internalTools/retell.d.ts +12 -0
  22. package/dist/internalTools/retell.d.ts.map +1 -0
  23. package/dist/internalTools/retell.js +54 -0
  24. package/dist/internalTools/retell.js.map +1 -0
  25. package/dist/internalTools/sendPlaceholderMessage.d.ts +14 -0
  26. package/dist/internalTools/sendPlaceholderMessage.d.ts.map +1 -0
  27. package/dist/internalTools/sendPlaceholderMessage.js +61 -0
  28. package/dist/internalTools/sendPlaceholderMessage.js.map +1 -0
  29. package/dist/nodes/addBrowserTaskNode.d.ts.map +1 -1
  30. package/dist/nodes/addBrowserTaskNode.js +6 -1
  31. package/dist/nodes/addBrowserTaskNode.js.map +1 -1
  32. package/dist/nodes/addBrowserTaskRunNode.d.ts.map +1 -1
  33. package/dist/nodes/addBrowserTaskRunNode.js +1 -1
  34. package/dist/nodes/addBrowserTaskRunNode.js.map +1 -1
  35. package/dist/nodes/addRpaNode.d.ts +18 -0
  36. package/dist/nodes/addRpaNode.d.ts.map +1 -0
  37. package/dist/nodes/addRpaNode.js +251 -0
  38. package/dist/nodes/addRpaNode.js.map +1 -0
  39. package/dist/nodes/nodeFactory.d.ts.map +1 -1
  40. package/dist/nodes/nodeFactory.js +4 -0
  41. package/dist/nodes/nodeFactory.js.map +1 -1
  42. package/dist/types/Flows.types.d.ts +47 -2
  43. package/dist/types/Flows.types.d.ts.map +1 -1
  44. package/dist/types/Flows.types.js +13 -1
  45. package/dist/types/Flows.types.js.map +1 -1
  46. package/dist/utils/extractStateMemoryResponse.d.ts +5 -0
  47. package/dist/utils/extractStateMemoryResponse.d.ts.map +1 -0
  48. package/dist/utils/extractStateMemoryResponse.js +91 -0
  49. package/dist/utils/extractStateMemoryResponse.js.map +1 -0
  50. package/package.json +5 -2
  51. package/src/browserTask/executeBrowserTask.py +42 -0
  52. package/src/browserTask/executeBrowserTask.ts +36 -2
  53. package/src/browserTask/localBrowserTask.ts +250 -0
  54. package/src/index.ts +3 -0
  55. package/src/nodes/addBrowserTaskNode.ts +7 -2
  56. package/src/nodes/addBrowserTaskRunNode.ts +1 -0
  57. package/src/nodes/addRpaNode.ts +289 -0
  58. package/src/nodes/nodeFactory.ts +4 -0
  59. package/src/types/Flows.types.ts +49 -1
@@ -10,7 +10,8 @@ export declare enum NodeType {
10
10
  APP_TOOL = "appTool",
11
11
  PROMPT_NODE = "promptNode",
12
12
  JUMP_TO_NODE = "jumpToNode",
13
- BROWSER_TASK = "browserTask"
13
+ BROWSER_TASK = "browserTask",
14
+ RPA = "rpa"
14
15
  }
15
16
  export declare enum EdgeType {
16
17
  LOGICAL_CONDITION = "logicalCondition",
@@ -109,6 +110,50 @@ export interface BrowserTaskNode extends BaseNode {
109
110
  name: string;
110
111
  }[];
111
112
  onPrem?: boolean;
113
+ localRun?: boolean;
114
+ }
115
+ export declare enum RpaActionType {
116
+ CLICK = "click",
117
+ TYPE = "type",
118
+ WAIT = "wait",
119
+ SCREENSHOT = "screenshot",
120
+ SELECT = "select",
121
+ PRESS = "press",
122
+ GOTO = "goto",
123
+ EXTRACT_DATA = "extract_data"
124
+ }
125
+ export interface RpaStep {
126
+ id: string;
127
+ type: RpaActionType;
128
+ xpath?: string;
129
+ selector?: string;
130
+ text?: string;
131
+ value?: string;
132
+ key?: string;
133
+ url?: string;
134
+ shouldReplaceExistingText?: boolean;
135
+ waitTime?: number;
136
+ description?: string;
137
+ outputSchema?: {
138
+ name: string;
139
+ type: 'string' | 'number' | 'boolean' | 'array' | 'object';
140
+ description?: string;
141
+ required?: boolean;
142
+ items?: {
143
+ type: 'string' | 'number' | 'boolean' | 'object';
144
+ properties?: any;
145
+ };
146
+ properties?: any;
147
+ }[];
148
+ }
149
+ export interface RpaNode extends BaseNode {
150
+ type: NodeType.RPA;
151
+ steps: RpaStep[];
152
+ timeout?: number;
153
+ viewport?: {
154
+ width: number;
155
+ height: number;
156
+ };
112
157
  }
113
158
  export type TriggerNode = AppTriggerNode | WebhookTriggerNode | ManualTriggerNode | VoiceTriggerNode | InterfaceTriggerNode;
114
159
  export interface JunctionNode extends BaseNode {
@@ -128,7 +173,7 @@ export interface AppToolNode extends BaseNode, BaseAppNode {
128
173
  metadata: AppNodeMetadata;
129
174
  actionKey: string;
130
175
  }
131
- export type Node = TriggerNode | JunctionNode | ToolNode | AppToolNode | PromptNode | JumpToNode | BrowserTaskNode;
176
+ export type Node = TriggerNode | JunctionNode | ToolNode | AppToolNode | PromptNode | JumpToNode | BrowserTaskNode | RpaNode;
132
177
  export interface BaseEdge {
133
178
  source: string;
134
179
  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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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.internalNodesSuffix = exports.KnownTriggerNames = exports.ActionInputParamType = exports.AppNodeMetadataType = exports.TriggerType = exports.EdgeType = exports.NodeType = void 0;
3
+ exports.internalNodesSuffix = exports.KnownTriggerNames = exports.ActionInputParamType = exports.AppNodeMetadataType = exports.RpaActionType = exports.TriggerType = exports.EdgeType = exports.NodeType = void 0;
4
4
  var NodeType;
5
5
  (function (NodeType) {
6
6
  NodeType["TRIGGER"] = "trigger";
@@ -10,6 +10,7 @@ var NodeType;
10
10
  NodeType["PROMPT_NODE"] = "promptNode";
11
11
  NodeType["JUMP_TO_NODE"] = "jumpToNode";
12
12
  NodeType["BROWSER_TASK"] = "browserTask";
13
+ NodeType["RPA"] = "rpa";
13
14
  })(NodeType || (exports.NodeType = NodeType = {}));
14
15
  var EdgeType;
15
16
  (function (EdgeType) {
@@ -25,6 +26,17 @@ var TriggerType;
25
26
  TriggerType["VOICE"] = "voice";
26
27
  TriggerType["INTERFACE"] = "interface";
27
28
  })(TriggerType || (exports.TriggerType = TriggerType = {}));
29
+ var RpaActionType;
30
+ (function (RpaActionType) {
31
+ RpaActionType["CLICK"] = "click";
32
+ RpaActionType["TYPE"] = "type";
33
+ RpaActionType["WAIT"] = "wait";
34
+ RpaActionType["SCREENSHOT"] = "screenshot";
35
+ RpaActionType["SELECT"] = "select";
36
+ RpaActionType["PRESS"] = "press";
37
+ RpaActionType["GOTO"] = "goto";
38
+ RpaActionType["EXTRACT_DATA"] = "extract_data";
39
+ })(RpaActionType || (exports.RpaActionType = RpaActionType = {}));
28
40
  var AppNodeMetadataType;
29
41
  (function (AppNodeMetadataType) {
30
42
  AppNodeMetadataType["APP_TOOL"] = "appTool";
@@ -1 +1 @@
1
- {"version":3,"file":"Flows.types.js","sourceRoot":"","sources":["../../src/types/Flows.types.ts"],"names":[],"mappings":";;;AAMA,IAAY,QAQX;AARD,WAAY,QAAQ;IAClB,+BAAmB,CAAA;IACnB,iCAAqB,CAAA;IACrB,yBAAa,CAAA;IACb,gCAAoB,CAAA;IACpB,sCAA0B,CAAA;IAC1B,uCAA2B,CAAA;IAC3B,wCAA4B,CAAA;AAC9B,CAAC,EARW,QAAQ,wBAAR,QAAQ,QAQnB;AAED,IAAY,QAIX;AAJD,WAAY,QAAQ;IAClB,kDAAsC,CAAA;IACtC,gDAAoC,CAAA;IACpC,wCAA4B,CAAA;AAC9B,CAAC,EAJW,QAAQ,wBAAR,QAAQ,QAInB;AAWD,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,0BAAW,CAAA;IACX,kCAAmB,CAAA;IACnB,gCAAiB,CAAA;IACjB,8BAAe,CAAA;IACf,sCAAuB,CAAA;AACzB,CAAC,EANW,WAAW,2BAAX,WAAW,QAMtB;AAsID,IAAY,mBAEX;AAFD,WAAY,mBAAmB;IAC7B,2CAAoB,CAAA;AACtB,CAAC,EAFW,mBAAmB,mCAAnB,mBAAmB,QAE9B;AAsBD,IAAY,oBAOX;AAPD,WAAY,oBAAoB;IAC9B,yCAAiB,CAAA;IACjB,yCAAiB,CAAA;IACjB,2CAAmB,CAAA;IACnB,uCAAe,CAAA;IACf,yCAAiB,CAAA;IACjB,mCAAW,CAAA;AACb,CAAC,EAPW,oBAAoB,oCAApB,oBAAoB,QAO/B;AAQD,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,wCAAmB,CAAA;IACnB,4DAAuC,CAAA;IACvC,oDAA+B,CAAA;AACjC,CAAC,EAJW,iBAAiB,iCAAjB,iBAAiB,QAI5B;AAED,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,4DAAqC,CAAA;IACrC,4CAAqB,CAAA;IACrB,2DAAoC,CAAA;AACtC,CAAC,EAJW,mBAAmB,mCAAnB,mBAAmB,QAI9B"}
1
+ {"version":3,"file":"Flows.types.js","sourceRoot":"","sources":["../../src/types/Flows.types.ts"],"names":[],"mappings":";;;AAMA,IAAY,QASX;AATD,WAAY,QAAQ;IAClB,+BAAmB,CAAA;IACnB,iCAAqB,CAAA;IACrB,yBAAa,CAAA;IACb,gCAAoB,CAAA;IACpB,sCAA0B,CAAA;IAC1B,uCAA2B,CAAA;IAC3B,wCAA4B,CAAA;IAC5B,uBAAW,CAAA;AACb,CAAC,EATW,QAAQ,wBAAR,QAAQ,QASnB;AAED,IAAY,QAIX;AAJD,WAAY,QAAQ;IAClB,kDAAsC,CAAA;IACtC,gDAAoC,CAAA;IACpC,wCAA4B,CAAA;AAC9B,CAAC,EAJW,QAAQ,wBAAR,QAAQ,QAInB;AAWD,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,0BAAW,CAAA;IACX,kCAAmB,CAAA;IACnB,gCAAiB,CAAA;IACjB,8BAAe,CAAA;IACf,sCAAuB,CAAA;AACzB,CAAC,EANW,WAAW,2BAAX,WAAW,QAMtB;AAyFD,IAAY,aASX;AATD,WAAY,aAAa;IACvB,gCAAe,CAAA;IACf,8BAAa,CAAA;IACb,8BAAa,CAAA;IACb,0CAAyB,CAAA;IACzB,kCAAiB,CAAA;IACjB,gCAAe,CAAA;IACf,8BAAa,CAAA;IACb,8CAA6B,CAAA;AAC/B,CAAC,EATW,aAAa,6BAAb,aAAa,QASxB;AAmFD,IAAY,mBAEX;AAFD,WAAY,mBAAmB;IAC7B,2CAAoB,CAAA;AACtB,CAAC,EAFW,mBAAmB,mCAAnB,mBAAmB,QAE9B;AAsBD,IAAY,oBAOX;AAPD,WAAY,oBAAoB;IAC9B,yCAAiB,CAAA;IACjB,yCAAiB,CAAA;IACjB,2CAAmB,CAAA;IACnB,uCAAe,CAAA;IACf,yCAAiB,CAAA;IACjB,mCAAW,CAAA;AACb,CAAC,EAPW,oBAAoB,oCAApB,oBAAoB,QAO/B;AAQD,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,wCAAmB,CAAA;IACnB,4DAAuC,CAAA;IACvC,oDAA+B,CAAA;AACjC,CAAC,EAJW,iBAAiB,iCAAjB,iBAAiB,QAI5B;AAED,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,4DAAqC,CAAA;IACrC,4CAAqB,CAAA;IACrB,2DAAoC,CAAA;AACtC,CAAC,EAJW,mBAAmB,mCAAnB,mBAAmB,QAI9B"}
@@ -0,0 +1,5 @@
1
+ import { ToolMessage } from '@langchain/core/messages';
2
+ import { State } from '../types/LangGraph.types';
3
+ declare const extractToolStateResponse: (toolMessage: ToolMessage) => Partial<State>;
4
+ export default extractToolStateResponse;
5
+ //# sourceMappingURL=extractStateMemoryResponse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractStateMemoryResponse.d.ts","sourceRoot":"","sources":["../../src/utils/extractStateMemoryResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,WAAW,EAA0C,MAAM,0BAA0B,CAAC;AAE5G,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEjD,QAAA,MAAM,wBAAwB,gBAAiB,WAAW,KAAG,OAAO,CAAC,KAAK,CAazE,CAAC;AA4EF,eAAe,wBAAwB,CAAC"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const messages_1 = require("@langchain/core/messages");
4
+ const logger_1 = require("./logger");
5
+ const extractToolStateResponse = (toolMessage) => {
6
+ try {
7
+ const parsed = JSON.parse(toolMessage.content);
8
+ if (typeof parsed === 'object' && parsed !== null && 'state' in parsed) {
9
+ if (parsed.state.messages) {
10
+ parsed.state.messages = constructMessagesFromToolMessage(parsed.state.messages);
11
+ }
12
+ return parsed.state;
13
+ }
14
+ }
15
+ catch (err) {
16
+ logger_1.logger.error({ message: 'Error parsing tool state response', err });
17
+ }
18
+ return {};
19
+ };
20
+ const constructMessagesFromToolMessage = (messages) => {
21
+ if (!Array.isArray(messages)) {
22
+ logger_1.logger.error({ msg: 'Expected messages to be an array', messages });
23
+ return [];
24
+ }
25
+ return messages
26
+ .map((messageObj) => {
27
+ try {
28
+ // Handle case where message is already a BaseMessage instance
29
+ if (messageObj instanceof messages_1.BaseMessage) {
30
+ return messageObj;
31
+ }
32
+ // Handle case where message is a plain object that needs reconstruction
33
+ const messageType = messageObj.id[2];
34
+ const content = messageObj.kwargs.content || '';
35
+ const id = messageObj.kwargs.id;
36
+ const additionalKwargs = messageObj.additional_kwargs || {};
37
+ switch (messageType) {
38
+ case 'AIMessage':
39
+ return new messages_1.AIMessage({
40
+ content,
41
+ id,
42
+ additional_kwargs: additionalKwargs,
43
+ tool_calls: messageObj.tool_calls || [],
44
+ invalid_tool_calls: messageObj.invalid_tool_calls || [],
45
+ });
46
+ case 'HumanMessage':
47
+ return new messages_1.HumanMessage({
48
+ content,
49
+ id,
50
+ additional_kwargs: additionalKwargs,
51
+ });
52
+ case 'SystemMessage':
53
+ return new messages_1.SystemMessage({
54
+ content,
55
+ id,
56
+ additional_kwargs: additionalKwargs,
57
+ });
58
+ case 'ToolMessage':
59
+ return new messages_1.ToolMessage({
60
+ content,
61
+ id,
62
+ additional_kwargs: additionalKwargs,
63
+ tool_call_id: messageObj.tool_call_id || '',
64
+ });
65
+ default:
66
+ // Default to HumanMessage for unknown types
67
+ logger_1.logger.warn({
68
+ msg: 'Unknown message type, defaulting to HumanMessage',
69
+ messageType,
70
+ messageObj,
71
+ });
72
+ return null;
73
+ }
74
+ }
75
+ catch (err) {
76
+ logger_1.logger.error({
77
+ msg: 'Error reconstructing message',
78
+ err,
79
+ messageObj,
80
+ });
81
+ // Return a fallback HumanMessage in case of error
82
+ return new messages_1.HumanMessage({
83
+ content: messageObj.content || 'Error reconstructing message',
84
+ id: messageObj.id,
85
+ });
86
+ }
87
+ })
88
+ .filter(Boolean);
89
+ };
90
+ exports.default = extractToolStateResponse;
91
+ //# sourceMappingURL=extractStateMemoryResponse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractStateMemoryResponse.js","sourceRoot":"","sources":["../../src/utils/extractStateMemoryResponse.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@minded-ai/mindedjs",
3
- "version": "2.0.7",
3
+ "version": "2.0.8-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",
@@ -13,7 +13,7 @@
13
13
  "docs"
14
14
  ],
15
15
  "scripts": {
16
- "build": "tsc && npm run copy-templates",
16
+ "build": "tsc && npm run copy-templates && rsync -a --include='*/' --include='*.py' --exclude='*' src/ dist/",
17
17
  "copy-templates": "cp -r src/cli/lambdaHandlerTemplate.ts dist/cli/",
18
18
  "watch": "tsc -w",
19
19
  "test": "NODE_ENV=test mocha --parallel --jobs auto --retries 1 -r ts-node/register -r ./test/setup.ts \"test/**/*.test.ts\"",
@@ -66,5 +66,8 @@
66
66
  "ws": "^8.15.1",
67
67
  "zod": "^3.25.74",
68
68
  "zod-to-json-schema": "^3.24.6"
69
+ },
70
+ "peerDependencies": {
71
+ "playwright": "^1.55.0"
69
72
  }
70
73
  }
@@ -0,0 +1,42 @@
1
+ import asyncio
2
+ from browser_use import Agent, BrowserSession, BrowserProfile
3
+ from browser_use.llm import ChatOpenAI
4
+ import os
5
+ import sys
6
+ from dotenv import load_dotenv
7
+
8
+ load_dotenv()
9
+
10
+ async def main(session_id: str, cdp_url: str, task: str):
11
+ llm = ChatOpenAI(
12
+ model="gpt-4.1",
13
+ api_key=os.getenv("OPENAI_API_KEY"),
14
+ )
15
+ folder_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'downloads')
16
+
17
+ # Create folder if it doesn't exist
18
+ os.makedirs(folder_path, exist_ok=True)
19
+
20
+ available_files = [os.path.join(folder_path, file) for file in os.listdir(folder_path)]
21
+
22
+ # Set downloads_path to the local tools/files directory
23
+ browser_session = BrowserSession(
24
+ browser_profile=BrowserProfile(downloads_path=folder_path),
25
+ cdp_url=cdp_url
26
+ )
27
+ agent = Agent(
28
+ task=task,
29
+ llm=llm,
30
+ available_file_paths=available_files,
31
+ browser=browser_session,
32
+ )
33
+ history = await agent.run()
34
+ print(history.final_result())
35
+
36
+ if __name__ == '__main__':
37
+ if len(sys.argv) < 3:
38
+ raise SystemExit("Usage: uv run uploadG2n.py <session_id> <cdp_url> <task>")
39
+ session_id = sys.argv[1]
40
+ cdp_url = sys.argv[2]
41
+ task = sys.argv[3]
42
+ asyncio.run(main(session_id, cdp_url, task))
@@ -1,5 +1,7 @@
1
+ import { exec as execCb } from 'node:child_process';
1
2
  import { logger } from '../utils/logger';
2
3
  import { mindedConnection } from '../platform/mindedConnection';
4
+ import path from 'path';
3
5
  import {
4
6
  mindedConnectionSocketMessageType,
5
7
  CreateBrowserSessionResponse,
@@ -9,11 +11,22 @@ import {
9
11
  DestroyBrowserSessionRequest,
10
12
  DestroyBrowserSessionResponse,
11
13
  } from '../platform/mindedConnectionTypes';
14
+ import { promisify } from 'node:util';
15
+ import { kill, getOrStartLocalCDP } from './localBrowserTask';
16
+ const exec = promisify(execCb);
12
17
 
13
18
  // Socket-based browser task functions
14
- export const createBrowserSession = async (proxy?: string, onPrem?: boolean): Promise<CreateBrowserSessionResponse> => {
19
+ export const createBrowserSession = async ({ sessionId, proxy, onPrem, localRun }: { sessionId: string, proxy?: string, onPrem?: boolean, localRun?: boolean }): Promise<CreateBrowserSessionResponse> => {
15
20
  logger.debug({ msg: 'Creating browser session via socket', proxy });
16
21
 
22
+ if (localRun) {
23
+ const { cdpUrl } = await getOrStartLocalCDP({ headless: false });
24
+ return {
25
+ sessionId,
26
+ cdpUrl
27
+ }
28
+ }
29
+
17
30
  const response = await mindedConnection.awaitEmit<CreateBrowserSessionRequest, CreateBrowserSessionResponse>(
18
31
  mindedConnectionSocketMessageType.CREATE_BROWSER_SESSION,
19
32
  {
@@ -38,9 +51,16 @@ export const createBrowserSession = async (proxy?: string, onPrem?: boolean): Pr
38
51
  return response;
39
52
  };
40
53
 
41
- export const destroyBrowserSession = async (sessionId: string, onPrem?: boolean): Promise<DestroyBrowserSessionResponse> => {
54
+ export const destroyBrowserSession = async ({ sessionId, onPrem, localRun }: { sessionId: string, onPrem?: boolean, localRun?: boolean }): Promise<DestroyBrowserSessionResponse> => {
42
55
  logger.debug({ msg: 'Destroying browser session via socket', sessionId, onPrem });
43
56
 
57
+ if (localRun) {
58
+ await kill();
59
+ return {
60
+ success: true,
61
+ };
62
+ }
63
+
44
64
  const response = await mindedConnection.awaitEmit<DestroyBrowserSessionRequest, DestroyBrowserSessionResponse>(
45
65
  mindedConnectionSocketMessageType.DESTROY_BROWSER_SESSION,
46
66
  {
@@ -67,6 +87,7 @@ export const invokeBrowserTask = async (
67
87
  keepAlive?: boolean,
68
88
  hooks?: { name: string }[],
69
89
  onPrem?: boolean,
90
+ localRun?: boolean,
70
91
  toolSchemas?: any[],
71
92
  outputSchema?: {
72
93
  name: string;
@@ -86,6 +107,19 @@ export const invokeBrowserTask = async (
86
107
  });
87
108
 
88
109
  try {
110
+
111
+ if (localRun) {
112
+ const pythonScriptPath = path.resolve(__dirname, 'executeBrowserTask.py');
113
+ const command = `uv run ${pythonScriptPath} "${sessionId}" "${cdpUrl}" "${task.replace(/"/g, '\\"')}"`;
114
+ const { stdout, stderr } = await exec(command);
115
+ logger.info({ message: 'Operator finished', stdout, stderr });
116
+ return {
117
+ result: stdout,
118
+ steps: [],
119
+ recordings: [],
120
+ };
121
+ }
122
+
89
123
  const response = await mindedConnection.awaitEmit<InvokeBrowserTaskRequest, InvokeBrowserTaskResponse>(
90
124
  mindedConnectionSocketMessageType.INVOKE_BROWSER_TASK,
91
125
  {
@@ -0,0 +1,250 @@
1
+ // getOrStartLocalCDP.ts
2
+ import { spawn, ChildProcess } from "child_process";
3
+ import * as fs from "fs/promises";
4
+ import * as fscb from "fs";
5
+ import * as path from "path";
6
+ import * as http from "http";
7
+ import { chromium } from "playwright";
8
+ import { logger } from "../utils/logger";
9
+
10
+ let localBrowserTask: {
11
+ cdpUrl: string;
12
+ proc: ChildProcess;
13
+ } | null = null;
14
+
15
+ export type StartChromiumOptions = {
16
+ /** Headless by default. Set to false to see a window. */
17
+ headless?: boolean;
18
+ /** Extra CLI flags to pass to Chromium. */
19
+ extraArgs?: string[];
20
+ /** Provide your own user-data-dir. If omitted, a temp dir is created and later removable via `kill()`. */
21
+ userDataDir?: string;
22
+ /** Extra env vars. */
23
+ env?: NodeJS.ProcessEnv;
24
+ /** How long to wait for the DevTools port to come up (ms). Default: 10000 */
25
+ timeoutMs?: number;
26
+ };
27
+
28
+ /**
29
+ * Launch Chromium with --remote-debugging-port=0 and return the CDP ws URL.
30
+ * Works with Chrome/Chromium/Chrome for Testing.
31
+ */
32
+ export async function getOrStartLocalCDP(
33
+ opts: StartChromiumOptions
34
+ ): Promise<{ cdpUrl: string }> {
35
+
36
+ if (localBrowserTask) {
37
+ return {
38
+ cdpUrl: localBrowserTask.cdpUrl,
39
+ };
40
+ }
41
+
42
+ const {
43
+ env,
44
+ timeoutMs = 10_000,
45
+ } = opts;
46
+
47
+ const executablePath = chromium.executablePath();
48
+
49
+ const profileDir = path.join(__dirname, "profile");
50
+ await fs.mkdir(profileDir, { recursive: true });
51
+
52
+ const userDataDir = opts.userDataDir ?? profileDir;
53
+
54
+ const args = [
55
+ "--new-window",
56
+ `--user-data-dir=${userDataDir}`,
57
+ // "--headless",
58
+ "--disable-component-extensions-with-background-pages",
59
+ "--disable-background-networking",
60
+ "--disable-back-forward-cache",
61
+ "--disable-popup-blocking",
62
+ "--simulate-outdated-no-au=\"Tue, 31 Dec 2099 23:59:59 GMT\"",
63
+ "--disable-renderer-backgrounding",
64
+ "--no-service-autorun",
65
+ "--disable-background-timer-throttling",
66
+ "--allow-legacy-extension-manifests",
67
+ "--allow-pre-commit-input",
68
+ "--log-level=2",
69
+ "--unsafely-disable-devtools-self-xss-warnings",
70
+ "--metrics-recording-only",
71
+ "--disable-window-activation",
72
+ "--disable-dev-shm-usage",
73
+ "--disable-backgrounding-occluded-windows",
74
+ "--disable-search-engine-choice-screen",
75
+ "--disable-print-preview",
76
+ "--disable-external-intent-requests",
77
+ "--disable-desktop-notifications",
78
+ "--disable-component-update",
79
+ "--generate-pdf-document-outline",
80
+ "--disable-focus-on-load",
81
+ "--disable-speech-api",
82
+ "--silent-debugger-extension-api",
83
+ "--suppress-message-center-popups",
84
+ "--disable-default-apps",
85
+ "--enable-network-information-downlink-max",
86
+ "--use-mock-keychain",
87
+ "--disable-ipc-flooding-protection",
88
+ "--safebrowsing-disable-auto-update",
89
+ "--install-autogenerated-theme=0,0,0",
90
+ "--disable-blink-features=AutomationControlled",
91
+ "--no-first-run",
92
+ "--extensions-on-chrome-urls",
93
+ "--ash-no-nudges",
94
+ "--no-pings",
95
+ "--test-type=gpu",
96
+ "--disable-client-side-phishing-detection",
97
+ "--password-store=basic",
98
+ "--enable-features=NetworkService,NetworkServiceInProcess",
99
+ "--disable-extensions-http-throttling",
100
+ "--disable-speech-synthesis-api",
101
+ "--no-default-browser-check",
102
+ "--disable-hang-monitor",
103
+ "--hide-crash-restore-bubble",
104
+ "--disable-domain-reliability",
105
+ "--export-tagged-pdf",
106
+ "--disable-sync",
107
+ "--disable-features=AcceptCHFrame,AutoExpandDetailsElement,AvoidUnnecessaryBeforeUnloadCheckSync,CertificateTransparencyComponentUpdater,DestroyProfileOnBrowserClose,DialMediaRouteProvider,ExtensionManifestV2Disabled,GlobalMediaControls,HttpsUpgrades,ImprovedCookieControls,LazyFrameLoading,LensOverlay,MediaRouter,PaintHolding,ThirdPartyStoragePartitioning,Translate,AutomationControlled,BackForwardCache,OptimizationHints,ProcessPerSiteUpToMainFrameThreshold,InterestFeedContentSuggestions,CalculateNativeWinOcclusion,HeavyAdPrivacyMitigations,PrivacySandboxSettings4,AutofillServerCommunication,CrashReporting,OverscrollHistoryNavigation,InfiniteSessionRestore,ExtensionDisableUnsupportedDeveloper",
108
+ "--disable-prompt-on-repost",
109
+ "--disable-infobars",
110
+ "--disable-datasaver-prompt",
111
+ "--noerrdialogs",
112
+ "--disable-breakpad",
113
+ "--disable-field-trial-config",
114
+ "--window-size=1920,1080",
115
+ "--window-position=0,0",
116
+ "--enable-extensions",
117
+ "--disable-extensions-file-access-check",
118
+ "--enable-extension-activity-logging",
119
+ `--remote-debugging-port=0`,
120
+ "--remote-debugging-address=0.0.0.0",
121
+ "about:blank",
122
+ ];
123
+
124
+ const proc = spawn(executablePath, args, {
125
+ stdio: ["ignore", "ignore", "pipe"], // stderr is useful for debugging
126
+ env: { ...process.env, ...env },
127
+ });
128
+
129
+ // If Chromium dies early, surface the error.
130
+ const earlyExit = new Promise<never>((_, reject) => {
131
+ proc.once("exit", (code, signal) => {
132
+ reject(
133
+ new Error(`Chromium exited prematurely (code=${code}, signal=${signal}).`)
134
+ );
135
+ });
136
+ });
137
+
138
+ const devtoolsPortFile = path.join(userDataDir, "DevToolsActivePort");
139
+
140
+ // Wait for DevToolsActivePort file to appear, then read it for port + browserId.
141
+ const whenReady = (async () => {
142
+ const startedAt = Date.now();
143
+ while (Date.now() - startedAt < timeoutMs) {
144
+ try {
145
+ // Access succeeds once the file is written.
146
+ await fs.access(devtoolsPortFile, fscb.constants.F_OK);
147
+ break;
148
+ } catch {
149
+ await delay(50);
150
+ }
151
+ }
152
+ // If still not there, bail.
153
+ await fs.access(devtoolsPortFile, fscb.constants.F_OK).catch(() => {
154
+ throw new Error(
155
+ `Timed out after ${timeoutMs}ms waiting for DevToolsActivePort at ${devtoolsPortFile}`
156
+ );
157
+ });
158
+
159
+ const raw = await fs.readFile(devtoolsPortFile, "utf8");
160
+ const [portLine] = raw.trim().split(/\r?\n/);
161
+ const port = Number(portLine);
162
+ if (!Number.isFinite(port)) {
163
+ throw new Error(`Invalid DevTools port read from file: "${portLine}"`);
164
+ }
165
+
166
+ // Optional: ping /json/version to ensure the endpoint is responsive.
167
+ await waitForHttpOk(`http://127.0.0.1:${port}/json/version`, timeoutMs);
168
+
169
+ const cdpUrl = await fetchWsFromVersionEndpoint(port, timeoutMs);
170
+
171
+ localBrowserTask = {
172
+ cdpUrl,
173
+ proc,
174
+ };
175
+
176
+ return { cdpUrl };
177
+ })();
178
+
179
+ const { cdpUrl } = await Promise.race([whenReady, earlyExit]);
180
+
181
+ logger.info({ message: 'Local browser task started', cdpUrl });
182
+
183
+ return { cdpUrl };
184
+ }
185
+
186
+ // ---- helpers ----
187
+ function delay(ms: number) {
188
+ return new Promise<void>((r) => setTimeout(r, ms));
189
+ }
190
+
191
+ async function waitForHttpOk(url: string, timeoutMs: number) {
192
+ const startedAt = Date.now();
193
+ while (Date.now() - startedAt < timeoutMs) {
194
+ const ok = await httpGetOk(url).catch(() => false);
195
+ if (ok) return;
196
+ await delay(50);
197
+ }
198
+ throw new Error(`Timed out after ${timeoutMs}ms waiting for ${url}`);
199
+ }
200
+
201
+ function httpGetOk(urlStr: string): Promise<boolean> {
202
+ return new Promise((resolve, reject) => {
203
+ const req = http.get(urlStr, (res) => {
204
+ // Drain data to allow socket reuse.
205
+ res.resume();
206
+ resolve(res.statusCode === 200);
207
+ });
208
+ req.on("error", reject);
209
+ req.setTimeout(3000, () => {
210
+ req.destroy(new Error("HTTP timeout"));
211
+ });
212
+ });
213
+ }
214
+
215
+ async function fetchWsFromVersionEndpoint(
216
+ port: number,
217
+ timeoutMs: number
218
+ ): Promise<string> {
219
+ const urlStr = `http://127.0.0.1:${port}/json/version`;
220
+ const body = await httpGetBody(urlStr, timeoutMs);
221
+ const parsed = JSON.parse(body);
222
+ if (!parsed.webSocketDebuggerUrl) {
223
+ throw new Error(`No webSocketDebuggerUrl in ${urlStr} response`);
224
+ }
225
+ return parsed.webSocketDebuggerUrl as string;
226
+ }
227
+
228
+ function httpGetBody(urlStr: string, timeoutMs: number): Promise<string> {
229
+ return new Promise((resolve, reject) => {
230
+ const req = http.get(urlStr, (res) => {
231
+ let data = "";
232
+ res.setEncoding("utf8");
233
+ res.on("data", (chunk) => (data += chunk));
234
+ res.on("end", () => {
235
+ if (res.statusCode === 200) resolve(data);
236
+ else reject(new Error(`HTTP ${res.statusCode}: ${data}`));
237
+ });
238
+ });
239
+ req.on("error", reject);
240
+ req.setTimeout(timeoutMs, () => req.destroy(new Error("HTTP timeout")));
241
+ });
242
+ }
243
+
244
+ export async function kill() {
245
+ if (localBrowserTask) {
246
+ localBrowserTask.proc.kill("SIGTERM");
247
+ await delay(300);
248
+ localBrowserTask.proc.kill("SIGKILL");
249
+ }
250
+ }
package/src/index.ts CHANGED
@@ -48,6 +48,8 @@ export type {
48
48
  VoiceTriggerNode,
49
49
  WebhookTriggerNode,
50
50
  InterfaceTriggerNode,
51
+ RpaNode,
52
+ RpaStep,
51
53
  } from './types/Flows.types';
52
54
  export {
53
55
  NodeType,
@@ -57,6 +59,7 @@ export {
57
59
  AppNodeMetadataType,
58
60
  NodeMetadata,
59
61
  KnownTriggerNames,
62
+ RpaActionType,
60
63
  } from './types/Flows.types';
61
64
  export type { Tool, ToolExecuteInput } from './types/Tools.types';
62
65