@minded-ai/mindedjs 2.0.6 → 2.0.7-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.
- package/dist/browserTask/README.md +419 -0
- package/dist/browserTask/browserAgent.py +632 -0
- package/dist/browserTask/captcha_isolated.png +0 -0
- package/dist/browserTask/executeBrowserTask.ts +79 -0
- package/dist/browserTask/requirements.txt +8 -0
- package/dist/browserTask/setup.sh +144 -0
- package/dist/cli/index.js +0 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internalTools/retell.d.ts +12 -0
- package/dist/internalTools/retell.d.ts.map +1 -0
- package/dist/internalTools/retell.js +54 -0
- package/dist/internalTools/retell.js.map +1 -0
- package/dist/internalTools/sendPlaceholderMessage.d.ts +14 -0
- package/dist/internalTools/sendPlaceholderMessage.d.ts.map +1 -0
- package/dist/internalTools/sendPlaceholderMessage.js +61 -0
- package/dist/internalTools/sendPlaceholderMessage.js.map +1 -0
- package/dist/nodes/addRpaNode.d.ts +16 -0
- package/dist/nodes/addRpaNode.d.ts.map +1 -0
- package/dist/nodes/addRpaNode.js +177 -0
- package/dist/nodes/addRpaNode.js.map +1 -0
- package/dist/nodes/nodeFactory.d.ts.map +1 -1
- package/dist/nodes/nodeFactory.js +4 -0
- package/dist/nodes/nodeFactory.js.map +1 -1
- package/dist/platform/config.js +1 -1
- package/dist/platform/config.js.map +1 -1
- package/dist/types/Flows.types.d.ts +35 -2
- package/dist/types/Flows.types.d.ts.map +1 -1
- package/dist/types/Flows.types.js +13 -1
- package/dist/types/Flows.types.js.map +1 -1
- package/dist/utils/extractStateMemoryResponse.d.ts +5 -0
- package/dist/utils/extractStateMemoryResponse.d.ts.map +1 -0
- package/dist/utils/extractStateMemoryResponse.js +91 -0
- package/dist/utils/extractStateMemoryResponse.js.map +1 -0
- package/package.json +2 -1
- package/src/index.ts +3 -0
- package/src/nodes/addRpaNode.ts +205 -0
- package/src/nodes/nodeFactory.ts +4 -0
- package/src/platform/config.ts +1 -1
- package/src/types/Flows.types.ts +37 -1
|
@@ -9,6 +9,7 @@ const addTriggerNode_1 = require("./addTriggerNode");
|
|
|
9
9
|
const addJumpToNode_1 = require("./addJumpToNode");
|
|
10
10
|
const addJunctionNode_1 = require("./addJunctionNode");
|
|
11
11
|
const addBrowserTaskNode_1 = require("./addBrowserTaskNode");
|
|
12
|
+
const addRpaNode_1 = require("./addRpaNode");
|
|
12
13
|
const nodeFactory = ({ graph, node, tools, llm, emit, agent, }) => {
|
|
13
14
|
const nodeType = node.type;
|
|
14
15
|
switch (nodeType) {
|
|
@@ -33,6 +34,9 @@ const nodeFactory = ({ graph, node, tools, llm, emit, agent, }) => {
|
|
|
33
34
|
case Flows_types_1.NodeType.BROWSER_TASK:
|
|
34
35
|
(0, addBrowserTaskNode_1.addBrowserTaskNode)({ graph, node, agent, llm });
|
|
35
36
|
break;
|
|
37
|
+
case Flows_types_1.NodeType.RPA:
|
|
38
|
+
(0, addRpaNode_1.addRpaNode)({ graph, node, tools, emit, agent });
|
|
39
|
+
break;
|
|
36
40
|
default:
|
|
37
41
|
throw new Error(`Unsupported node type: ${nodeType}`);
|
|
38
42
|
}
|
|
@@ -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;AACpD,6DAA0D;
|
|
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;AAC1D,6CAA0C;AAEnC,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,KAAK,EAAE,CAAC,CAAC;YACnD,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,GAAG,EAAE,CAAC,CAAC;YAChD,MAAM;QACR,KAAK,sBAAQ,CAAC,GAAG;YACf,IAAA,uBAAU,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAChD,MAAM;QACR;YACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC,CAAC;AA5CW,QAAA,WAAW,eA4CtB"}
|
package/dist/platform/config.js
CHANGED
|
@@ -25,7 +25,7 @@ const getConfig = () => {
|
|
|
25
25
|
baseUrl: process.env.MINDED_DASHBOARD_API_URL || 'https://dashboard-api.minded.com',
|
|
26
26
|
env: Platform_types_1.Environment.DEVELOPMENT,
|
|
27
27
|
token: process.env.MINDED_CONNECTION_TOKEN || '',
|
|
28
|
-
runLocally:
|
|
28
|
+
runLocally: process.env.RUN_LOCALLY === 'true',
|
|
29
29
|
isDeployed: process.env.MINDED_CLOUD === 'true',
|
|
30
30
|
elevenLabsKey: process.env.ELEVEN_LABS_API_KEY || null,
|
|
31
31
|
dashboardConnected: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/platform/config.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,mCAAgC;AAChC,4DAAsD;AACtD,MAAM,IAAI,GAAG,IAAA,cAAO,EAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAC9C,IAAA,eAAM,EAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAaV,MAAM,SAAS,GAAG,GAAiB,EAAE;IAC1C,MAAM,WAAW,GAAI,OAAO,CAAC,GAAG,CAAC,QAAwB,IAAI,4BAAW,CAAC,WAAW,CAAC;IACrF,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,4BAAW,CAAC,IAAI;YACnB,OAAO;gBACL,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,uBAAuB;gBACtG,GAAG,EAAE,4BAAW,CAAC,IAAI;gBACrB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE;gBAChD,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,OAAO;gBAC/C,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,MAAM;gBAC/C,kBAAkB,EAAE,KAAK;gBACzB,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,IAAI;gBACtD,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,IAAI;aAC5D,CAAC;QACJ,KAAK,4BAAW,CAAC,WAAW;YAC1B,OAAO;gBACL,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,kCAAkC;gBACnF,GAAG,EAAE,4BAAW,CAAC,WAAW;gBAC5B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE;gBAChD,UAAU,EAAE,KAAK;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/platform/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -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",
|
|
@@ -110,6 +111,38 @@ export interface BrowserTaskNode extends BaseNode {
|
|
|
110
111
|
}[];
|
|
111
112
|
onPrem?: boolean;
|
|
112
113
|
}
|
|
114
|
+
export declare enum RpaActionType {
|
|
115
|
+
CLICK = "click",
|
|
116
|
+
TYPE = "type",
|
|
117
|
+
WAIT = "wait",
|
|
118
|
+
SCREENSHOT = "screenshot",
|
|
119
|
+
SELECT = "select",
|
|
120
|
+
HOVER = "hover",
|
|
121
|
+
PRESS = "press",
|
|
122
|
+
GOTO = "goto"
|
|
123
|
+
}
|
|
124
|
+
export interface RpaStep {
|
|
125
|
+
id: string;
|
|
126
|
+
type: RpaActionType;
|
|
127
|
+
xpath?: string;
|
|
128
|
+
selector?: string;
|
|
129
|
+
text?: string;
|
|
130
|
+
value?: string;
|
|
131
|
+
key?: string;
|
|
132
|
+
url?: string;
|
|
133
|
+
shouldReplaceExistingText?: boolean;
|
|
134
|
+
waitTime?: number;
|
|
135
|
+
description?: string;
|
|
136
|
+
}
|
|
137
|
+
export interface RpaNode extends BaseNode {
|
|
138
|
+
type: NodeType.RPA;
|
|
139
|
+
steps: RpaStep[];
|
|
140
|
+
timeout?: number;
|
|
141
|
+
viewport?: {
|
|
142
|
+
width: number;
|
|
143
|
+
height: number;
|
|
144
|
+
};
|
|
145
|
+
}
|
|
113
146
|
export type TriggerNode = AppTriggerNode | WebhookTriggerNode | ManualTriggerNode | VoiceTriggerNode | InterfaceTriggerNode;
|
|
114
147
|
export interface JunctionNode extends BaseNode {
|
|
115
148
|
type: NodeType.JUNCTION;
|
|
@@ -128,7 +161,7 @@ export interface AppToolNode extends BaseNode, BaseAppNode {
|
|
|
128
161
|
metadata: AppNodeMetadata;
|
|
129
162
|
actionKey: string;
|
|
130
163
|
}
|
|
131
|
-
export type Node = TriggerNode | JunctionNode | ToolNode | AppToolNode | PromptNode | JumpToNode | BrowserTaskNode;
|
|
164
|
+
export type Node = TriggerNode | JunctionNode | ToolNode | AppToolNode | PromptNode | JumpToNode | BrowserTaskNode | RpaNode;
|
|
132
165
|
export interface BaseEdge {
|
|
133
166
|
source: string;
|
|
134
167
|
target: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Flows.types.d.ts","sourceRoot":"","sources":["../../src/types/Flows.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,oBAAY,QAAQ;IAClB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,QAAQ,YAAY;IACpB,WAAW,eAAe;IAC1B,YAAY,eAAe;IAC3B,YAAY,gBAAgB;
|
|
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["HOVER"] = "hover";
|
|
37
|
+
RpaActionType["PRESS"] = "press";
|
|
38
|
+
RpaActionType["GOTO"] = "goto";
|
|
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,
|
|
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;AAwFD,IAAY,aASX;AATD,WAAY,aAAa;IACvB,gCAAe,CAAA;IACf,8BAAa,CAAA;IACb,8BAAa,CAAA;IACb,0CAAyB,CAAA;IACzB,kCAAiB,CAAA;IACjB,gCAAe,CAAA;IACf,gCAAe,CAAA;IACf,8BAAa,CAAA;AACf,CAAC,EATW,aAAa,6BAAb,aAAa,QASxB;AAwED,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.
|
|
3
|
+
"version": "2.0.7-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",
|
|
@@ -61,6 +61,7 @@
|
|
|
61
61
|
"langchain": "^0.3.25",
|
|
62
62
|
"pino": "^9.7.0",
|
|
63
63
|
"pino-pretty": "^13.0.0",
|
|
64
|
+
"playwright": "^1.40.0",
|
|
64
65
|
"socket.io-client": "^4.8.1",
|
|
65
66
|
"uuid": "^11.1.0",
|
|
66
67
|
"ws": "^8.15.1",
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { RunnableLike } from '@langchain/core/runnables';
|
|
2
|
+
import { NodeType, RpaNode, RpaActionType } from '../types/Flows.types';
|
|
3
|
+
import { PreCompiledGraph, stateAnnotation } from '../types/LangGraph.types';
|
|
4
|
+
import { Tool } from '../types/Tools.types';
|
|
5
|
+
import { AgentEventRequestPayloads } from '../events/AgentEvents';
|
|
6
|
+
import { EmitSignature, HistoryStep } from '../types/Agent.types';
|
|
7
|
+
import { Agent } from '../agent';
|
|
8
|
+
import { logger } from '../utils/logger';
|
|
9
|
+
import { createHistoryStep } from '../utils/history';
|
|
10
|
+
import { chromium, Browser, Page } from 'playwright';
|
|
11
|
+
|
|
12
|
+
type AddRpaNodeParams = {
|
|
13
|
+
graph: PreCompiledGraph;
|
|
14
|
+
node: RpaNode;
|
|
15
|
+
tools: Tool<any, any>[];
|
|
16
|
+
emit: EmitSignature<any, keyof AgentEventRequestPayloads<any>>;
|
|
17
|
+
agent: Agent;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export const addRpaNode = async ({ graph, node, tools, emit, agent }: AddRpaNodeParams) => {
|
|
21
|
+
const callback: RunnableLike = async (state: typeof stateAnnotation.State) => {
|
|
22
|
+
await agent.interruptSessionManager.checkQueueAndInterrupt(state.sessionId);
|
|
23
|
+
logger.info({ msg: `[Node] Executing RPA node`, node: node.displayName, sessionId: state.sessionId });
|
|
24
|
+
|
|
25
|
+
let browser: Browser | null = null;
|
|
26
|
+
let page: Page | null = null;
|
|
27
|
+
|
|
28
|
+
try {
|
|
29
|
+
// Get CDP URL from state
|
|
30
|
+
const cdpUrl = state.cdpUrl;
|
|
31
|
+
if (!cdpUrl) {
|
|
32
|
+
throw new Error('CDP URL not found in state. Make sure a browser session is available.');
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
logger.debug({
|
|
36
|
+
msg: '[RPA] Connecting to browser via CDP',
|
|
37
|
+
cdpUrl,
|
|
38
|
+
sessionId: state.sessionId,
|
|
39
|
+
node: node.displayName,
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// Connect to existing browser via CDP
|
|
43
|
+
browser = await chromium.connectOverCDP(cdpUrl);
|
|
44
|
+
const contexts = browser.contexts();
|
|
45
|
+
if (contexts.length === 0) {
|
|
46
|
+
throw new Error('No browser contexts found');
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Get the first page or create a new one
|
|
50
|
+
const pages = contexts[0].pages();
|
|
51
|
+
page = pages.length > 0 ? pages[0] : await contexts[0].newPage();
|
|
52
|
+
|
|
53
|
+
// Set viewport if specified
|
|
54
|
+
if (node.viewport) {
|
|
55
|
+
await page.setViewportSize(node.viewport);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Execute each step
|
|
59
|
+
const results = [];
|
|
60
|
+
for (const [index, step] of node.steps.entries()) {
|
|
61
|
+
logger.debug({
|
|
62
|
+
msg: '[RPA] Executing step',
|
|
63
|
+
stepIndex: index + 1,
|
|
64
|
+
stepType: step.type,
|
|
65
|
+
sessionId: state.sessionId,
|
|
66
|
+
node: node.displayName,
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
try {
|
|
70
|
+
const result = await executeRpaStep(page, step);
|
|
71
|
+
results.push({
|
|
72
|
+
stepIndex: index + 1,
|
|
73
|
+
type: step.type,
|
|
74
|
+
success: true,
|
|
75
|
+
result,
|
|
76
|
+
});
|
|
77
|
+
} catch (stepError) {
|
|
78
|
+
logger.error({
|
|
79
|
+
msg: '[RPA] Step execution failed',
|
|
80
|
+
stepIndex: index + 1,
|
|
81
|
+
stepType: step.type,
|
|
82
|
+
error: stepError instanceof Error ? stepError.message : 'Unknown error',
|
|
83
|
+
sessionId: state.sessionId,
|
|
84
|
+
node: node.displayName,
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
results.push({
|
|
88
|
+
stepIndex: index + 1,
|
|
89
|
+
type: step.type,
|
|
90
|
+
success: false,
|
|
91
|
+
error: stepError instanceof Error ? stepError.message : 'Unknown error',
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
// Stop execution on error unless configured otherwise
|
|
95
|
+
throw stepError;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// Update history with RPA execution results
|
|
100
|
+
state.history.push(
|
|
101
|
+
createHistoryStep<HistoryStep>(state.history, {
|
|
102
|
+
type: NodeType.RPA,
|
|
103
|
+
nodeId: node.name,
|
|
104
|
+
nodeDisplayName: node.displayName,
|
|
105
|
+
raw: {
|
|
106
|
+
steps: node.steps,
|
|
107
|
+
results,
|
|
108
|
+
viewport: node.viewport,
|
|
109
|
+
},
|
|
110
|
+
messageIds: [],
|
|
111
|
+
}),
|
|
112
|
+
);
|
|
113
|
+
|
|
114
|
+
// Clear goto to allow natural flow progression
|
|
115
|
+
state.goto = null;
|
|
116
|
+
|
|
117
|
+
// Check for interrupts after RPA execution
|
|
118
|
+
await agent.interruptSessionManager.checkQueueAndInterrupt(state.sessionId, state);
|
|
119
|
+
|
|
120
|
+
return state;
|
|
121
|
+
} catch (error) {
|
|
122
|
+
logger.error({
|
|
123
|
+
msg: '[RPA] Error executing RPA node',
|
|
124
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
125
|
+
sessionId: state.sessionId,
|
|
126
|
+
node: node.displayName,
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
throw error;
|
|
130
|
+
} finally {
|
|
131
|
+
// Note: We don't close the browser as it's connected via CDP
|
|
132
|
+
// The browser session should remain active for other operations
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
graph.addNode(node.name, callback);
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
// Helper function to execute individual RPA steps
|
|
140
|
+
async function executeRpaStep(page: Page, step: any): Promise<any> {
|
|
141
|
+
switch (step.type) {
|
|
142
|
+
case RpaActionType.CLICK:
|
|
143
|
+
if (step.xpath) {
|
|
144
|
+
await page.locator(`xpath=${step.xpath}`).click({ timeout: 30000 });
|
|
145
|
+
} else if (step.selector) {
|
|
146
|
+
await page.click(step.selector, { timeout: 30000 });
|
|
147
|
+
}
|
|
148
|
+
return { action: 'clicked' };
|
|
149
|
+
|
|
150
|
+
case RpaActionType.TYPE:
|
|
151
|
+
if (step.shouldReplaceExistingText) {
|
|
152
|
+
if (step.xpath) {
|
|
153
|
+
await page.locator(`xpath=${step.xpath}`).fill(step.text || '');
|
|
154
|
+
} else if (step.selector) {
|
|
155
|
+
await page.fill(step.selector, step.text || '');
|
|
156
|
+
}
|
|
157
|
+
} else {
|
|
158
|
+
if (step.xpath) {
|
|
159
|
+
await page.locator(`xpath=${step.xpath}`).type(step.text || '');
|
|
160
|
+
} else if (step.selector) {
|
|
161
|
+
await page.type(step.selector, step.text || '');
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return { action: 'typed', text: step.text };
|
|
165
|
+
|
|
166
|
+
case RpaActionType.WAIT:
|
|
167
|
+
await page.waitForTimeout(step.waitTime || 1000);
|
|
168
|
+
return { action: 'waited', duration: step.waitTime };
|
|
169
|
+
|
|
170
|
+
case RpaActionType.GOTO:
|
|
171
|
+
await page.goto(step.url || '', { waitUntil: 'networkidle' });
|
|
172
|
+
return { action: 'navigated', url: step.url };
|
|
173
|
+
|
|
174
|
+
case RpaActionType.PRESS:
|
|
175
|
+
await page.keyboard.press(step.key || 'Enter');
|
|
176
|
+
return { action: 'pressed', key: step.key };
|
|
177
|
+
|
|
178
|
+
case RpaActionType.SELECT:
|
|
179
|
+
if (step.xpath) {
|
|
180
|
+
await page.locator(`xpath=${step.xpath}`).selectOption(step.value || '');
|
|
181
|
+
} else if (step.selector) {
|
|
182
|
+
await page.selectOption(step.selector, step.value || '');
|
|
183
|
+
}
|
|
184
|
+
return { action: 'selected', value: step.value };
|
|
185
|
+
|
|
186
|
+
case RpaActionType.HOVER:
|
|
187
|
+
if (step.xpath) {
|
|
188
|
+
await page.locator(`xpath=${step.xpath}`).hover();
|
|
189
|
+
} else if (step.selector) {
|
|
190
|
+
await page.hover(step.selector);
|
|
191
|
+
}
|
|
192
|
+
return { action: 'hovered' };
|
|
193
|
+
|
|
194
|
+
case RpaActionType.SCREENSHOT:
|
|
195
|
+
const screenshot = await page.screenshot({ type: 'png' });
|
|
196
|
+
return {
|
|
197
|
+
action: 'screenshot',
|
|
198
|
+
description: step.description,
|
|
199
|
+
data: screenshot.toString('base64'),
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
default:
|
|
203
|
+
throw new Error(`Unknown RPA action type: ${step.type}`);
|
|
204
|
+
}
|
|
205
|
+
}
|
package/src/nodes/nodeFactory.ts
CHANGED
|
@@ -12,6 +12,7 @@ import { Agent } from '../agent';
|
|
|
12
12
|
import { addJumpToNode } from './addJumpToNode';
|
|
13
13
|
import { addJunctionNode } from './addJunctionNode';
|
|
14
14
|
import { addBrowserTaskNode } from './addBrowserTaskNode';
|
|
15
|
+
import { addRpaNode } from './addRpaNode';
|
|
15
16
|
|
|
16
17
|
export const nodeFactory = ({
|
|
17
18
|
graph,
|
|
@@ -51,6 +52,9 @@ export const nodeFactory = ({
|
|
|
51
52
|
case NodeType.BROWSER_TASK:
|
|
52
53
|
addBrowserTaskNode({ graph, node, agent, llm });
|
|
53
54
|
break;
|
|
55
|
+
case NodeType.RPA:
|
|
56
|
+
addRpaNode({ graph, node, tools, emit, agent });
|
|
57
|
+
break;
|
|
54
58
|
default:
|
|
55
59
|
throw new Error(`Unsupported node type: ${nodeType}`);
|
|
56
60
|
}
|
package/src/platform/config.ts
CHANGED
|
@@ -34,7 +34,7 @@ export const getConfig = (): MindedConfig => {
|
|
|
34
34
|
baseUrl: process.env.MINDED_DASHBOARD_API_URL || 'https://dashboard-api.minded.com',
|
|
35
35
|
env: Environment.DEVELOPMENT,
|
|
36
36
|
token: process.env.MINDED_CONNECTION_TOKEN || '',
|
|
37
|
-
runLocally:
|
|
37
|
+
runLocally: process.env.RUN_LOCALLY === 'true',
|
|
38
38
|
isDeployed: process.env.MINDED_CLOUD === 'true',
|
|
39
39
|
elevenLabsKey: process.env.ELEVEN_LABS_API_KEY || null,
|
|
40
40
|
dashboardConnected: true,
|
package/src/types/Flows.types.ts
CHANGED
|
@@ -12,6 +12,7 @@ export enum NodeType {
|
|
|
12
12
|
PROMPT_NODE = 'promptNode',
|
|
13
13
|
JUMP_TO_NODE = 'jumpToNode',
|
|
14
14
|
BROWSER_TASK = 'browserTask',
|
|
15
|
+
RPA = 'rpa',
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
export enum EdgeType {
|
|
@@ -123,6 +124,41 @@ export interface BrowserTaskNode extends BaseNode {
|
|
|
123
124
|
onPrem?: boolean;
|
|
124
125
|
}
|
|
125
126
|
|
|
127
|
+
export enum RpaActionType {
|
|
128
|
+
CLICK = 'click',
|
|
129
|
+
TYPE = 'type',
|
|
130
|
+
WAIT = 'wait',
|
|
131
|
+
SCREENSHOT = 'screenshot',
|
|
132
|
+
SELECT = 'select',
|
|
133
|
+
HOVER = 'hover',
|
|
134
|
+
PRESS = 'press',
|
|
135
|
+
GOTO = 'goto',
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export interface RpaStep {
|
|
139
|
+
id: string;
|
|
140
|
+
type: RpaActionType;
|
|
141
|
+
xpath?: string;
|
|
142
|
+
selector?: string;
|
|
143
|
+
text?: string;
|
|
144
|
+
value?: string;
|
|
145
|
+
key?: string;
|
|
146
|
+
url?: string;
|
|
147
|
+
shouldReplaceExistingText?: boolean;
|
|
148
|
+
waitTime?: number;
|
|
149
|
+
description?: string;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export interface RpaNode extends BaseNode {
|
|
153
|
+
type: NodeType.RPA;
|
|
154
|
+
steps: RpaStep[];
|
|
155
|
+
timeout?: number;
|
|
156
|
+
viewport?: {
|
|
157
|
+
width: number;
|
|
158
|
+
height: number;
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
|
|
126
162
|
export type TriggerNode = AppTriggerNode | WebhookTriggerNode | ManualTriggerNode | VoiceTriggerNode | InterfaceTriggerNode;
|
|
127
163
|
|
|
128
164
|
export interface JunctionNode extends BaseNode {
|
|
@@ -145,7 +181,7 @@ export interface AppToolNode extends BaseNode, BaseAppNode {
|
|
|
145
181
|
actionKey: string;
|
|
146
182
|
}
|
|
147
183
|
|
|
148
|
-
export type Node = TriggerNode | JunctionNode | ToolNode | AppToolNode | PromptNode | JumpToNode | BrowserTaskNode;
|
|
184
|
+
export type Node = TriggerNode | JunctionNode | ToolNode | AppToolNode | PromptNode | JumpToNode | BrowserTaskNode | RpaNode;
|
|
149
185
|
|
|
150
186
|
export interface BaseEdge {
|
|
151
187
|
source: string;
|