@minded-ai/mindedjs 1.0.101 → 1.0.103-beta-1

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 (170) hide show
  1. package/dist/agent.d.ts +4 -1
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +76 -30
  4. package/dist/agent.js.map +1 -1
  5. package/dist/checkpointer/checkpointSaverFactory.js +1 -1
  6. package/dist/checkpointer/checkpointSaverFactory.js.map +1 -1
  7. package/dist/cli/index.js +12 -12
  8. package/dist/cli/index.js.map +1 -1
  9. package/dist/edges/createDirectEdge.d.ts +1 -2
  10. package/dist/edges/createDirectEdge.d.ts.map +1 -1
  11. package/dist/edges/createDirectEdge.js +2 -6
  12. package/dist/edges/createDirectEdge.js.map +1 -1
  13. package/dist/edges/createLogicalRouter.d.ts.map +1 -1
  14. package/dist/edges/createLogicalRouter.js +6 -23
  15. package/dist/edges/createLogicalRouter.js.map +1 -1
  16. package/dist/edges/createPromptRouter.d.ts.map +1 -1
  17. package/dist/edges/createPromptRouter.js +6 -12
  18. package/dist/edges/createPromptRouter.js.map +1 -1
  19. package/dist/edges/edgeFactory.d.ts.map +1 -1
  20. package/dist/edges/edgeFactory.js +3 -8
  21. package/dist/edges/edgeFactory.js.map +1 -1
  22. package/dist/index.d.ts +0 -4
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +1 -6
  25. package/dist/index.js.map +1 -1
  26. package/dist/interrupts/BaseInterruptSessionManager.d.ts +51 -0
  27. package/dist/interrupts/BaseInterruptSessionManager.d.ts.map +1 -0
  28. package/dist/interrupts/BaseInterruptSessionManager.js +39 -0
  29. package/dist/interrupts/BaseInterruptSessionManager.js.map +1 -0
  30. package/dist/interrupts/InterruptSessionManager.types.d.ts +36 -0
  31. package/dist/interrupts/InterruptSessionManager.types.d.ts.map +1 -0
  32. package/dist/interrupts/InterruptSessionManager.types.js +40 -0
  33. package/dist/interrupts/InterruptSessionManager.types.js.map +1 -0
  34. package/dist/interrupts/MemoryInterruptSessionManager.d.ts +14 -0
  35. package/dist/interrupts/MemoryInterruptSessionManager.d.ts.map +1 -0
  36. package/dist/interrupts/MemoryInterruptSessionManager.js +56 -0
  37. package/dist/interrupts/MemoryInterruptSessionManager.js.map +1 -0
  38. package/dist/interrupts/MindedInterruptSessionManager.d.ts +13 -0
  39. package/dist/interrupts/MindedInterruptSessionManager.d.ts.map +1 -0
  40. package/dist/interrupts/MindedInterruptSessionManager.js +156 -0
  41. package/dist/interrupts/MindedInterruptSessionManager.js.map +1 -0
  42. package/dist/interrupts/interruptSessionManagerFactory.d.ts +3 -0
  43. package/dist/interrupts/interruptSessionManagerFactory.d.ts.map +1 -0
  44. package/dist/interrupts/interruptSessionManagerFactory.js +56 -0
  45. package/dist/interrupts/interruptSessionManagerFactory.js.map +1 -0
  46. package/dist/llm/createLlmInstance.d.ts +1 -1
  47. package/dist/llm/createLlmInstance.d.ts.map +1 -1
  48. package/dist/llm/createLlmInstance.js +1 -18
  49. package/dist/llm/createLlmInstance.js.map +1 -1
  50. package/dist/nodes/addAppToolNode.d.ts.map +1 -1
  51. package/dist/nodes/addAppToolNode.js +4 -5
  52. package/dist/nodes/addAppToolNode.js.map +1 -1
  53. package/dist/nodes/addHumanInTheLoopNode.d.ts.map +1 -1
  54. package/dist/nodes/addHumanInTheLoopNode.js +3 -2
  55. package/dist/nodes/addHumanInTheLoopNode.js.map +1 -1
  56. package/dist/nodes/addJumpToNode.d.ts.map +1 -1
  57. package/dist/nodes/addJumpToNode.js +1 -2
  58. package/dist/nodes/addJumpToNode.js.map +1 -1
  59. package/dist/nodes/addJunctionNode.d.ts.map +1 -1
  60. package/dist/nodes/addJunctionNode.js +0 -1
  61. package/dist/nodes/addJunctionNode.js.map +1 -1
  62. package/dist/nodes/addPromptNode.d.ts.map +1 -1
  63. package/dist/nodes/addPromptNode.js +61 -7
  64. package/dist/nodes/addPromptNode.js.map +1 -1
  65. package/dist/nodes/addToolNode.js +4 -2
  66. package/dist/nodes/addToolNode.js.map +1 -1
  67. package/dist/nodes/addToolRunNode.d.ts.map +1 -1
  68. package/dist/nodes/addToolRunNode.js +2 -2
  69. package/dist/nodes/addToolRunNode.js.map +1 -1
  70. package/dist/nodes/addTriggerNode.d.ts.map +1 -1
  71. package/dist/nodes/addTriggerNode.js +1 -2
  72. package/dist/nodes/addTriggerNode.js.map +1 -1
  73. package/dist/nodes/nodeFactory.d.ts.map +1 -1
  74. package/dist/nodes/nodeFactory.js +0 -4
  75. package/dist/nodes/nodeFactory.js.map +1 -1
  76. package/dist/platform/mindedChatOpenAI.d.ts +5 -0
  77. package/dist/platform/mindedChatOpenAI.d.ts.map +1 -0
  78. package/dist/platform/{models/mindedChatOpenAI.js → mindedChatOpenAI.js} +1 -10
  79. package/dist/platform/mindedChatOpenAI.js.map +1 -0
  80. package/dist/platform/mindedConnection.d.ts.map +1 -1
  81. package/dist/platform/mindedConnection.js +12 -12
  82. package/dist/platform/mindedConnection.js.map +1 -1
  83. package/dist/platform/mindedConnectionTypes.d.ts +151 -1
  84. package/dist/platform/mindedConnectionTypes.d.ts.map +1 -1
  85. package/dist/platform/mindedConnectionTypes.js +9 -0
  86. package/dist/platform/mindedConnectionTypes.js.map +1 -1
  87. package/dist/playbooks/playbooks.js +4 -4
  88. package/dist/playbooks/playbooks.js.map +1 -1
  89. package/dist/types/Agent.types.d.ts +2 -0
  90. package/dist/types/Agent.types.d.ts.map +1 -1
  91. package/dist/types/Agent.types.js.map +1 -1
  92. package/dist/types/Flows.types.d.ts +3 -12
  93. package/dist/types/Flows.types.d.ts.map +1 -1
  94. package/dist/types/Flows.types.js +0 -2
  95. package/dist/types/Flows.types.js.map +1 -1
  96. package/dist/types/LLM.types.d.ts.map +1 -1
  97. package/dist/types/LLM.types.js +1 -1
  98. package/dist/types/LLM.types.js.map +1 -1
  99. package/dist/types/LangGraph.types.d.ts +2 -4
  100. package/dist/types/LangGraph.types.d.ts.map +1 -1
  101. package/dist/types/LangGraph.types.js +2 -5
  102. package/dist/types/LangGraph.types.js.map +1 -1
  103. package/dist/utils/logger.d.ts.map +1 -1
  104. package/dist/utils/logger.js +2 -1
  105. package/dist/utils/logger.js.map +1 -1
  106. package/dist/voice/voiceSession.d.ts.map +1 -1
  107. package/dist/voice/voiceSession.js +17 -16
  108. package/dist/voice/voiceSession.js.map +1 -1
  109. package/docs/SUMMARY.md +0 -1
  110. package/docs/getting-started/installation.md +0 -42
  111. package/docs/low-code-editor/nodes.md +0 -27
  112. package/docs/low-code-editor/tools.md +0 -32
  113. package/package.json +1 -2
  114. package/src/agent.ts +93 -32
  115. package/src/checkpointer/checkpointSaverFactory.ts +1 -1
  116. package/src/cli/index.ts +12 -12
  117. package/src/edges/createDirectEdge.ts +2 -7
  118. package/src/edges/createLogicalRouter.ts +6 -23
  119. package/src/edges/createPromptRouter.ts +6 -13
  120. package/src/edges/edgeFactory.ts +4 -20
  121. package/src/index.ts +0 -6
  122. package/src/interrupts/BaseInterruptSessionManager.ts +94 -0
  123. package/src/interrupts/MemoryInterruptSessionManager.ts +57 -0
  124. package/src/interrupts/MindedInterruptSessionManager.ts +155 -0
  125. package/src/interrupts/interruptSessionManagerFactory.ts +20 -0
  126. package/src/llm/createLlmInstance.ts +2 -25
  127. package/src/nodes/addAppToolNode.ts +4 -5
  128. package/src/nodes/addHumanInTheLoopNode.ts +3 -3
  129. package/src/nodes/addJumpToNode.ts +1 -2
  130. package/src/nodes/addJunctionNode.ts +0 -1
  131. package/src/nodes/addPromptNode.ts +65 -10
  132. package/src/nodes/addToolNode.ts +4 -4
  133. package/src/nodes/addToolRunNode.ts +2 -4
  134. package/src/nodes/addTriggerNode.ts +1 -2
  135. package/src/nodes/nodeFactory.ts +0 -4
  136. package/src/platform/mindedChatOpenAI.ts +19 -0
  137. package/src/platform/mindedConnection.ts +15 -25
  138. package/src/platform/mindedConnectionTypes.ts +188 -1
  139. package/src/playbooks/playbooks.ts +4 -4
  140. package/src/types/Agent.types.ts +2 -0
  141. package/src/types/Flows.types.ts +1 -11
  142. package/src/types/LLM.types.ts +5 -5
  143. package/src/types/LangGraph.types.ts +2 -5
  144. package/src/utils/logger.ts +2 -1
  145. package/src/voice/voiceSession.ts +17 -16
  146. package/dist/browserTask/executeBrowserTask.d.ts +0 -12
  147. package/dist/browserTask/executeBrowserTask.d.ts.map +0 -1
  148. package/dist/browserTask/executeBrowserTask.js +0 -181
  149. package/dist/browserTask/executeBrowserTask.js.map +0 -1
  150. package/dist/nodes/addBrowserTaskNode.d.ts +0 -11
  151. package/dist/nodes/addBrowserTaskNode.d.ts.map +0 -1
  152. package/dist/nodes/addBrowserTaskNode.js +0 -98
  153. package/dist/nodes/addBrowserTaskNode.js.map +0 -1
  154. package/dist/nodes/addBrowserTaskRunNode.d.ts +0 -13
  155. package/dist/nodes/addBrowserTaskRunNode.d.ts.map +0 -1
  156. package/dist/nodes/addBrowserTaskRunNode.js +0 -122
  157. package/dist/nodes/addBrowserTaskRunNode.js.map +0 -1
  158. package/dist/platform/models/mindedChatOpenAI.d.ts +0 -20
  159. package/dist/platform/models/mindedChatOpenAI.d.ts.map +0 -1
  160. package/dist/platform/models/mindedChatOpenAI.js.map +0 -1
  161. package/dist/platform/models/parallelWrapper.d.ts +0 -17
  162. package/dist/platform/models/parallelWrapper.d.ts.map +0 -1
  163. package/dist/platform/models/parallelWrapper.js +0 -105
  164. package/dist/platform/models/parallelWrapper.js.map +0 -1
  165. package/docs/platform/parallel-llm.md +0 -242
  166. package/src/browserTask/executeBrowserTask.ts +0 -213
  167. package/src/nodes/addBrowserTaskNode.ts +0 -114
  168. package/src/nodes/addBrowserTaskRunNode.ts +0 -138
  169. package/src/platform/models/mindedChatOpenAI.ts +0 -49
  170. package/src/platform/models/parallelWrapper.ts +0 -141
@@ -1,181 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.waitForCompletion = exports.waitForLiveUrl = exports.getTaskDetails = exports.createCloudTask = void 0;
4
- const logger_1 = require("../utils/logger");
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,
74
- });
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,
101
- });
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,
129
- });
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,
138
- });
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,
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,
177
- });
178
- throw new Error('Timeout waiting for task completion');
179
- };
180
- exports.waitForCompletion = waitForCompletion;
181
- //# sourceMappingURL=executeBrowserTask.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"executeBrowserTask.js","sourceRoot":"","sources":["../../src/browserTask/executeBrowserTask.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
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 }: AddBrowserTaskNodeParams) => Promise<void>;
10
- export {};
11
- //# sourceMappingURL=addBrowserTaskNode.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"addBrowserTaskNode.d.ts","sourceRoot":"","sources":["../../src/nodes/addBrowserTaskNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAY,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAmB,MAAM,0BAA0B,CAAC;AAM7E,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGjC,KAAK,wBAAwB,GAAG;IAC9B,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAU,iBAAiB,wBAAwB,kBAgGjF,CAAC"}
@@ -1,98 +0,0 @@
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 uuid_1 = require("uuid");
9
- const executeBrowserTask_1 = require("../browserTask/executeBrowserTask");
10
- const addBrowserTaskNode = async ({ graph, node }) => {
11
- const callback = async (state) => {
12
- logger_1.logger.info({ msg: `Executing browser task node ${node.displayName}`, prompt: node.prompt });
13
- logger_1.logger.info({ msg: `Executing browser task node ${node.displayName}`, prompt: node.prompt });
14
- const prompt = `
15
- Follow the instructions. Any retrieved data should be printed as string and not saved to a file
16
- # Task instructions:\n${node.prompt}\n\n
17
- ${state.memory ? `# Task context:\n${JSON.stringify(state.memory)}\n\n` : ''}
18
- # Conversation history:\n${state.messages.map((m) => `${m.getType()}: ${m.content}`).join('\n')}
19
- `;
20
- const toolCallId = (0, uuid_1.v4)();
21
- const toolCallingMessageId = (0, uuid_1.v4)();
22
- try {
23
- // Create the browser task in the cloud
24
- const taskId = await (0, executeBrowserTask_1.createCloudTask)(`Follow the instructions. Any retrieved data should be printed as string and not saved to a file.\n${node.prompt}`, node.model);
25
- logger_1.logger.debug({ msg: 'Browser task created', taskId });
26
- // Wait for live_url to become available
27
- const taskDetails = await (0, executeBrowserTask_1.waitForLiveUrl)(taskId);
28
- logger_1.logger.debug({ msg: 'Live URL available', taskId, liveUrl: taskDetails.live_url });
29
- const toolCallingMessage = new messages_1.AIMessage({
30
- id: toolCallingMessageId,
31
- content: '',
32
- tool_calls: [
33
- {
34
- id: toolCallId,
35
- name: 'browser-task',
36
- args: {
37
- prompt,
38
- taskId,
39
- },
40
- },
41
- ],
42
- additional_kwargs: {
43
- mindedMetadata: {
44
- nodeType: Flows_types_1.NodeType.BROWSER_TASK,
45
- taskId,
46
- liveUrl: taskDetails.live_url,
47
- },
48
- },
49
- });
50
- return {
51
- history: (0, history_1.createHistoryStep)(state.history, {
52
- type: Flows_types_1.NodeType.BROWSER_TASK,
53
- nodeId: node.name,
54
- nodeDisplayName: node.displayName,
55
- raw: { taskId, liveUrl: taskDetails.live_url },
56
- messageIds: [toolCallingMessageId],
57
- }),
58
- messages: [toolCallingMessage],
59
- };
60
- }
61
- catch (error) {
62
- logger_1.logger.error(`Error creating browser task node ${node.displayName}: ${error}`);
63
- const toolCallingMessage = new messages_1.AIMessage({
64
- id: toolCallingMessageId,
65
- content: '',
66
- tool_calls: [
67
- {
68
- id: toolCallId,
69
- name: 'browser-task',
70
- args: {
71
- prompt,
72
- error: error.message,
73
- },
74
- },
75
- ],
76
- additional_kwargs: {
77
- mindedMetadata: {
78
- nodeType: Flows_types_1.NodeType.BROWSER_TASK,
79
- error: error.message,
80
- },
81
- },
82
- });
83
- return {
84
- history: (0, history_1.createHistoryStep)(state.history, {
85
- type: Flows_types_1.NodeType.BROWSER_TASK,
86
- nodeId: node.name,
87
- nodeDisplayName: node.displayName,
88
- raw: error,
89
- messageIds: [toolCallingMessageId],
90
- }),
91
- messages: [toolCallingMessage],
92
- };
93
- }
94
- };
95
- graph.addNode(node.name, callback);
96
- };
97
- exports.addBrowserTaskNode = addBrowserTaskNode;
98
- //# sourceMappingURL=addBrowserTaskNode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"addBrowserTaskNode.js","sourceRoot":"","sources":["../../src/nodes/addBrowserTaskNode.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import { PreCompiledGraph } from '../types/LangGraph.types';
2
- import { BrowserTaskNode } from '../types/Flows.types';
3
- import { Agent } from '../agent';
4
- type AddBrowserTaskRunNodeParams = {
5
- graph: PreCompiledGraph;
6
- browserTaskNode: BrowserTaskNode;
7
- attachedToNodeName: string;
8
- agent: Agent;
9
- };
10
- export declare const buildBrowserTaskRunNodeName: (nodeName: string) => string;
11
- export declare const addBrowserTaskRunNode: ({ graph, browserTaskNode, attachedToNodeName }: AddBrowserTaskRunNodeParams) => Promise<void>;
12
- export {};
13
- //# sourceMappingURL=addBrowserTaskRunNode.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"addBrowserTaskRunNode.d.ts","sourceRoot":"","sources":["../../src/nodes/addBrowserTaskRunNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAmB,MAAM,0BAA0B,CAAC;AAE7E,OAAO,EAAiC,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEtF,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAOjC,KAAK,2BAA2B,GAAG;IACjC,KAAK,EAAE,gBAAgB,CAAC;IACxB,eAAe,EAAE,eAAe,CAAC;IACjC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,UAAU,MAAM,WAAyD,CAAC;AAEtH,eAAO,MAAM,qBAAqB,GAAU,gDAAgD,2BAA2B,kBAqHtH,CAAC"}
@@ -1,122 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.addBrowserTaskRunNode = exports.buildBrowserTaskRunNodeName = void 0;
4
- const Flows_types_1 = require("../types/Flows.types");
5
- const messages_1 = require("@langchain/core/messages");
6
- const logger_1 = require("../utils/logger");
7
- const history_1 = require("../utils/history");
8
- const uuid_1 = require("uuid");
9
- const executeBrowserTask_1 = require("../browserTask/executeBrowserTask");
10
- const buildBrowserTaskRunNodeName = (nodeName) => `${nodeName}${Flows_types_1.internalNodesSuffix.BROWSER_TASK_RUN}`;
11
- exports.buildBrowserTaskRunNodeName = buildBrowserTaskRunNodeName;
12
- const addBrowserTaskRunNode = async ({ graph, browserTaskNode, attachedToNodeName }) => {
13
- const callback = async (state) => {
14
- var _a, _b;
15
- logger_1.logger.info(`Executing browser task run node for ${browserTaskNode.displayName}`);
16
- const toolCallObj = state.messages[state.messages.length - 1];
17
- if (!toolCallObj.tool_calls) {
18
- throw new Error('Tool call not found');
19
- }
20
- const toolCall = toolCallObj.tool_calls[0];
21
- const taskId = toolCall.args.taskId;
22
- if (!taskId) {
23
- throw new Error('Task ID not found in tool call arguments');
24
- }
25
- try {
26
- // Wait for task completion
27
- const completedTask = await (0, executeBrowserTask_1.waitForCompletion)(taskId);
28
- logger_1.logger.debug({ msg: 'Browser task completed', taskId, output: completedTask.output });
29
- // Create tool message with the result
30
- const toolMessage = new messages_1.ToolMessage({
31
- id: (0, uuid_1.v4)(),
32
- content: JSON.stringify({
33
- result: completedTask.output || 'Task completed successfully',
34
- steps: completedTask.steps || [],
35
- }),
36
- name: 'browser-task',
37
- tool_call_id: toolCall.id,
38
- status: 'success',
39
- additional_kwargs: {
40
- mindedMetadata: {
41
- nodeType: Flows_types_1.NodeType.BROWSER_TASK,
42
- taskId,
43
- steps: completedTask.steps,
44
- },
45
- },
46
- });
47
- // Update the AI message with steps using the message reducer pattern
48
- const updatedAIMessage = new messages_1.AIMessage({
49
- id: toolCallObj.id,
50
- content: toolCallObj.content,
51
- tool_calls: toolCallObj.tool_calls,
52
- additional_kwargs: {
53
- ...toolCallObj.additional_kwargs,
54
- mindedMetadata: {
55
- ...(_a = toolCallObj.additional_kwargs) === null || _a === void 0 ? void 0 : _a.mindedMetadata,
56
- steps: completedTask.steps,
57
- status: 'completed',
58
- },
59
- update: true, // This triggers the message reducer to update the existing message
60
- },
61
- });
62
- return {
63
- messages: [toolMessage, updatedAIMessage],
64
- history: (0, history_1.createHistoryStep)(state.history, {
65
- type: Flows_types_1.NodeType.BROWSER_TASK,
66
- nodeId: browserTaskNode.name,
67
- nodeDisplayName: browserTaskNode.displayName,
68
- raw: completedTask,
69
- messageIds: [],
70
- }),
71
- };
72
- }
73
- catch (error) {
74
- logger_1.logger.error({ msg: 'Error executing browser task run node', error });
75
- const errorToolMessage = new messages_1.ToolMessage({
76
- id: (0, uuid_1.v4)(),
77
- content: JSON.stringify({
78
- error: error instanceof Error ? error.message : error.toString(),
79
- }),
80
- status: 'error',
81
- name: 'browser-task',
82
- tool_call_id: toolCall.id,
83
- additional_kwargs: {
84
- mindedMetadata: {
85
- nodeType: Flows_types_1.NodeType.BROWSER_TASK,
86
- taskId,
87
- error: error.message,
88
- },
89
- },
90
- });
91
- // Update the AI message with error status
92
- const updatedAIMessage = new messages_1.AIMessage({
93
- id: toolCallObj.id,
94
- content: toolCallObj.content,
95
- tool_calls: toolCallObj.tool_calls,
96
- additional_kwargs: {
97
- ...toolCallObj.additional_kwargs,
98
- mindedMetadata: {
99
- ...(_b = toolCallObj.additional_kwargs) === null || _b === void 0 ? void 0 : _b.mindedMetadata,
100
- status: 'failed',
101
- error: error.message,
102
- },
103
- update: true,
104
- },
105
- });
106
- return {
107
- messages: [errorToolMessage, updatedAIMessage],
108
- history: (0, history_1.createHistoryStep)(state.history, {
109
- type: Flows_types_1.NodeType.BROWSER_TASK,
110
- nodeId: browserTaskNode.name,
111
- nodeDisplayName: browserTaskNode.displayName,
112
- raw: error,
113
- messageIds: [],
114
- }),
115
- };
116
- }
117
- };
118
- graph.addNode((0, exports.buildBrowserTaskRunNodeName)(attachedToNodeName), callback);
119
- graph.addEdge(attachedToNodeName, (0, exports.buildBrowserTaskRunNodeName)(attachedToNodeName));
120
- };
121
- exports.addBrowserTaskRunNode = addBrowserTaskRunNode;
122
- //# sourceMappingURL=addBrowserTaskRunNode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"addBrowserTaskRunNode.js","sourceRoot":"","sources":["../../src/nodes/addBrowserTaskRunNode.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import { ChatOpenAI, ChatOpenAIFields } from '@langchain/openai';
2
- export interface BaseParallelChatFields {
3
- /**
4
- * Number of parallel requests to make. Defaults to 1 (no parallelization).
5
- * When > 1, multiple identical requests are sent and the fastest response is used.
6
- */
7
- numParallelRequests?: number;
8
- /**
9
- * Whether to log timing information for parallel requests
10
- */
11
- logTimings?: boolean;
12
- }
13
- export interface MindedChatOpenAIFields extends ChatOpenAIFields, BaseParallelChatFields {
14
- }
15
- export declare class MindedChatOpenAI extends ChatOpenAI {
16
- private numParallelRequests;
17
- private logTimings;
18
- constructor(fields?: MindedChatOpenAIFields);
19
- }
20
- //# sourceMappingURL=mindedChatOpenAI.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mindedChatOpenAI.d.ts","sourceRoot":"","sources":["../../../src/platform/models/mindedChatOpenAI.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGjE,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB,EAAE,sBAAsB;CAAG;AAE3F,qBAAa,gBAAiB,SAAQ,UAAU;IAC9C,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,UAAU,CAAU;gBAEhB,MAAM,CAAC,EAAE,sBAAsB;CA0B5C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mindedChatOpenAI.js","sourceRoot":"","sources":["../../../src/platform/models/mindedChatOpenAI.ts"],"names":[],"mappings":";;;AAAA,8CAAiE;AACjE,sCAAsC;AAiBtC,MAAa,gBAAiB,SAAQ,mBAAU;IAI9C,YAAY,MAA+B;QACzC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAA,kBAAS,GAAE,CAAC;QACvC,MAAM,aAAa,GAAG,GAAG,OAAO,4BAA4B,CAAC;QAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,+BAA+B;QAC/B,MAAM,mBAAmB,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,mBAAmB,KAAI,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,KAAI,KAAK,CAAC;QAE/C,KAAK,CAAC;YACJ,GAAG,MAAM;YACT,MAAM,EAAE,KAAK;YACb,aAAa,EAAE;gBACb,OAAO,EAAE,aAAa;gBACtB,cAAc,EAAE;oBACd,qBAAqB,EAAE,mBAAmB,CAAC,QAAQ,EAAE;oBACrD,eAAe,EAAE,UAAU,CAAC,QAAQ,EAAE;iBACvC;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AA9BD,4CA8BC"}
@@ -1,17 +0,0 @@
1
- import { BaseChatModel } from '@langchain/core/language_models/chat_models';
2
- export interface BaseParallelChatFields {
3
- /**
4
- * Number of parallel requests to make. Defaults to 1 (no parallelization).
5
- * When > 1, multiple identical requests are sent and the fastest response is used.
6
- */
7
- numParallelRequests?: number;
8
- /**
9
- * Whether to log timing information for parallel requests
10
- */
11
- logTimings?: boolean;
12
- }
13
- /**
14
- * Creates a wrapped version of a chat model with parallel request capabilities
15
- */
16
- export declare function createParallelWrapper<T extends BaseChatModel>(model: T, fields?: BaseParallelChatFields): T;
17
- //# sourceMappingURL=parallelWrapper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parallelWrapper.d.ts","sourceRoot":"","sources":["../../../src/platform/models/parallelWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAM5E,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,sBAAsB,GAAG,CAAC,CAsH3G"}
@@ -1,105 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createParallelWrapper = createParallelWrapper;
4
- const logger_1 = require("../../utils/logger");
5
- /**
6
- * Creates a wrapped version of a chat model with parallel request capabilities
7
- */
8
- function createParallelWrapper(model, fields) {
9
- const numParallelRequests = (fields === null || fields === void 0 ? void 0 : fields.numParallelRequests) || 1;
10
- const logTimings = (fields === null || fields === void 0 ? void 0 : fields.logTimings) || false;
11
- // If parallel requests are disabled, return the original model
12
- if (numParallelRequests <= 1) {
13
- return model;
14
- }
15
- // Helper function that returns a promise that resolves with the second fulfilled promise
16
- const promiseSecondFulfillment = (promises) => {
17
- return new Promise((resolve) => {
18
- let fulfillCount = 0;
19
- for (const p of promises) {
20
- Promise.resolve(p)
21
- .then((value) => {
22
- fulfillCount++;
23
- if (fulfillCount === 2) {
24
- resolve(value);
25
- }
26
- })
27
- .catch(() => {
28
- // Ignoring rejections for second fulfillment tracking
29
- });
30
- }
31
- });
32
- };
33
- // Store original methods
34
- const originalGenerate = model._generate.bind(model);
35
- const originalStream = model._streamResponseChunks.bind(model);
36
- // Override _generate
37
- model._generate = async function (messages, options, runManager) {
38
- const startTime = Date.now();
39
- // Create array of identical requests
40
- const requests = Array.from({ length: numParallelRequests }, () => originalGenerate(messages, options, runManager));
41
- let fastestRequestTime = 0;
42
- let secondFastestRequestTime = 0;
43
- // Race all requests and return the fastest
44
- const racePromise = Promise.race(requests).then((result) => {
45
- fastestRequestTime = (Date.now() - startTime) / 1000.0;
46
- if (logTimings) {
47
- logger_1.logger.debug({
48
- msg: '[Model] Fastest request completed',
49
- requestTime: fastestRequestTime,
50
- numParallelRequests: numParallelRequests,
51
- });
52
- }
53
- return result;
54
- });
55
- // Track second fastest if we have 3+ requests
56
- if (requests.length >= 3) {
57
- promiseSecondFulfillment(requests)
58
- .then(() => {
59
- secondFastestRequestTime = (Date.now() - startTime) / 1000.0;
60
- })
61
- .catch(() => {
62
- // Ignore errors in timing tracking
63
- });
64
- }
65
- // Track all completion times if we have 2+ requests
66
- if (requests.length >= 2 && logTimings) {
67
- Promise.all(requests)
68
- .then(() => {
69
- const allFinishTime = (Date.now() - startTime) / 1000.0;
70
- const timeSaved = allFinishTime - fastestRequestTime;
71
- const timeSavedFromSecond = secondFastestRequestTime > 0 ? secondFastestRequestTime - fastestRequestTime : 0;
72
- logger_1.logger.debug({
73
- msg: '[Model] Time saved using parallel requests',
74
- fastestRequestTime,
75
- secondFastestRequestTime: secondFastestRequestTime || 'N/A',
76
- allFinishTime,
77
- timeSaved,
78
- timeSavedFromSecond,
79
- numParallelRequests: numParallelRequests,
80
- });
81
- })
82
- .catch(() => {
83
- // Ignore errors in timing tracking
84
- });
85
- }
86
- return racePromise;
87
- };
88
- // Override _streamResponseChunks
89
- model._streamResponseChunks = async function* (messages, options, runManager) {
90
- // For streaming, we'll use the original implementation
91
- // Parallel streaming is more complex and may not provide the same benefits
92
- if (numParallelRequests > 1 && logTimings) {
93
- logger_1.logger.debug({
94
- msg: '[Model] Streaming mode - using single request',
95
- reason: 'Parallel streaming not implemented',
96
- });
97
- }
98
- yield* originalStream(messages, options, runManager);
99
- };
100
- // Add properties for testing
101
- model.numParallelRequests = numParallelRequests;
102
- model.logTimings = logTimings;
103
- return model;
104
- }
105
- //# sourceMappingURL=parallelWrapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parallelWrapper.js","sourceRoot":"","sources":["../../../src/platform/models/parallelWrapper.ts"],"names":[],"mappings":"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"}