@minded-ai/mindedjs 1.0.102 → 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.
- package/dist/agent.d.ts +4 -1
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +76 -30
- package/dist/agent.js.map +1 -1
- package/dist/checkpointer/checkpointSaverFactory.js +1 -1
- package/dist/checkpointer/checkpointSaverFactory.js.map +1 -1
- package/dist/cli/index.js +12 -12
- package/dist/cli/index.js.map +1 -1
- package/dist/edges/createDirectEdge.d.ts +1 -2
- package/dist/edges/createDirectEdge.d.ts.map +1 -1
- package/dist/edges/createDirectEdge.js +2 -6
- package/dist/edges/createDirectEdge.js.map +1 -1
- package/dist/edges/createLogicalRouter.d.ts.map +1 -1
- package/dist/edges/createLogicalRouter.js +6 -23
- package/dist/edges/createLogicalRouter.js.map +1 -1
- package/dist/edges/createPromptRouter.d.ts.map +1 -1
- package/dist/edges/createPromptRouter.js +6 -12
- package/dist/edges/createPromptRouter.js.map +1 -1
- package/dist/edges/edgeFactory.d.ts.map +1 -1
- package/dist/edges/edgeFactory.js +3 -8
- package/dist/edges/edgeFactory.js.map +1 -1
- package/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -6
- package/dist/index.js.map +1 -1
- package/dist/interrupts/BaseInterruptSessionManager.d.ts +51 -0
- package/dist/interrupts/BaseInterruptSessionManager.d.ts.map +1 -0
- package/dist/interrupts/BaseInterruptSessionManager.js +39 -0
- package/dist/interrupts/BaseInterruptSessionManager.js.map +1 -0
- package/dist/interrupts/InterruptSessionManager.types.d.ts +36 -0
- package/dist/interrupts/InterruptSessionManager.types.d.ts.map +1 -0
- package/dist/interrupts/InterruptSessionManager.types.js +40 -0
- package/dist/interrupts/InterruptSessionManager.types.js.map +1 -0
- package/dist/interrupts/MemoryInterruptSessionManager.d.ts +14 -0
- package/dist/interrupts/MemoryInterruptSessionManager.d.ts.map +1 -0
- package/dist/interrupts/MemoryInterruptSessionManager.js +56 -0
- package/dist/interrupts/MemoryInterruptSessionManager.js.map +1 -0
- package/dist/interrupts/MindedInterruptSessionManager.d.ts +13 -0
- package/dist/interrupts/MindedInterruptSessionManager.d.ts.map +1 -0
- package/dist/interrupts/MindedInterruptSessionManager.js +156 -0
- package/dist/interrupts/MindedInterruptSessionManager.js.map +1 -0
- package/dist/interrupts/interruptSessionManagerFactory.d.ts +3 -0
- package/dist/interrupts/interruptSessionManagerFactory.d.ts.map +1 -0
- package/dist/interrupts/interruptSessionManagerFactory.js +56 -0
- package/dist/interrupts/interruptSessionManagerFactory.js.map +1 -0
- package/dist/llm/createLlmInstance.d.ts +1 -1
- package/dist/llm/createLlmInstance.d.ts.map +1 -1
- package/dist/llm/createLlmInstance.js +1 -18
- package/dist/llm/createLlmInstance.js.map +1 -1
- package/dist/nodes/addAppToolNode.d.ts.map +1 -1
- package/dist/nodes/addAppToolNode.js +4 -5
- package/dist/nodes/addAppToolNode.js.map +1 -1
- package/dist/nodes/addHumanInTheLoopNode.d.ts.map +1 -1
- package/dist/nodes/addHumanInTheLoopNode.js +3 -2
- package/dist/nodes/addHumanInTheLoopNode.js.map +1 -1
- package/dist/nodes/addJumpToNode.d.ts.map +1 -1
- package/dist/nodes/addJumpToNode.js +1 -2
- package/dist/nodes/addJumpToNode.js.map +1 -1
- package/dist/nodes/addJunctionNode.d.ts.map +1 -1
- package/dist/nodes/addJunctionNode.js +0 -1
- package/dist/nodes/addJunctionNode.js.map +1 -1
- package/dist/nodes/addPromptNode.d.ts.map +1 -1
- package/dist/nodes/addPromptNode.js +61 -7
- package/dist/nodes/addPromptNode.js.map +1 -1
- package/dist/nodes/addToolNode.js +4 -2
- package/dist/nodes/addToolNode.js.map +1 -1
- package/dist/nodes/addToolRunNode.d.ts.map +1 -1
- package/dist/nodes/addToolRunNode.js +2 -2
- package/dist/nodes/addToolRunNode.js.map +1 -1
- package/dist/nodes/addTriggerNode.d.ts.map +1 -1
- package/dist/nodes/addTriggerNode.js +1 -2
- package/dist/nodes/addTriggerNode.js.map +1 -1
- package/dist/nodes/nodeFactory.d.ts.map +1 -1
- package/dist/nodes/nodeFactory.js +0 -4
- package/dist/nodes/nodeFactory.js.map +1 -1
- package/dist/platform/mindedChatOpenAI.d.ts +5 -0
- package/dist/platform/mindedChatOpenAI.d.ts.map +1 -0
- package/dist/platform/{models/mindedChatOpenAI.js → mindedChatOpenAI.js} +1 -10
- package/dist/platform/mindedChatOpenAI.js.map +1 -0
- package/dist/platform/mindedConnection.d.ts.map +1 -1
- package/dist/platform/mindedConnection.js +12 -12
- package/dist/platform/mindedConnection.js.map +1 -1
- package/dist/platform/mindedConnectionTypes.d.ts +151 -1
- package/dist/platform/mindedConnectionTypes.d.ts.map +1 -1
- package/dist/platform/mindedConnectionTypes.js +9 -0
- package/dist/platform/mindedConnectionTypes.js.map +1 -1
- package/dist/playbooks/playbooks.js +4 -4
- package/dist/playbooks/playbooks.js.map +1 -1
- package/dist/types/Agent.types.d.ts +2 -0
- package/dist/types/Agent.types.d.ts.map +1 -1
- package/dist/types/Agent.types.js.map +1 -1
- package/dist/types/Flows.types.d.ts +3 -18
- package/dist/types/Flows.types.d.ts.map +1 -1
- package/dist/types/Flows.types.js +0 -2
- package/dist/types/Flows.types.js.map +1 -1
- package/dist/types/LLM.types.d.ts.map +1 -1
- package/dist/types/LLM.types.js +1 -1
- package/dist/types/LLM.types.js.map +1 -1
- package/dist/types/LangGraph.types.d.ts +2 -4
- package/dist/types/LangGraph.types.d.ts.map +1 -1
- package/dist/types/LangGraph.types.js +2 -5
- package/dist/types/LangGraph.types.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +2 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/voice/voiceSession.d.ts.map +1 -1
- package/dist/voice/voiceSession.js +17 -16
- package/dist/voice/voiceSession.js.map +1 -1
- package/docs/SUMMARY.md +0 -1
- package/docs/getting-started/installation.md +0 -42
- package/docs/low-code-editor/nodes.md +0 -27
- package/docs/low-code-editor/tools.md +0 -32
- package/package.json +2 -3
- package/src/agent.ts +93 -32
- package/src/checkpointer/checkpointSaverFactory.ts +1 -1
- package/src/cli/index.ts +12 -12
- package/src/edges/createDirectEdge.ts +2 -7
- package/src/edges/createLogicalRouter.ts +6 -23
- package/src/edges/createPromptRouter.ts +6 -13
- package/src/edges/edgeFactory.ts +4 -20
- package/src/index.ts +0 -6
- package/src/interrupts/BaseInterruptSessionManager.ts +94 -0
- package/src/interrupts/MemoryInterruptSessionManager.ts +57 -0
- package/src/interrupts/MindedInterruptSessionManager.ts +155 -0
- package/src/interrupts/interruptSessionManagerFactory.ts +20 -0
- package/src/llm/createLlmInstance.ts +2 -25
- package/src/nodes/addAppToolNode.ts +4 -5
- package/src/nodes/addHumanInTheLoopNode.ts +3 -3
- package/src/nodes/addJumpToNode.ts +1 -2
- package/src/nodes/addJunctionNode.ts +0 -1
- package/src/nodes/addPromptNode.ts +65 -10
- package/src/nodes/addToolNode.ts +4 -4
- package/src/nodes/addToolRunNode.ts +2 -4
- package/src/nodes/addTriggerNode.ts +1 -2
- package/src/nodes/nodeFactory.ts +1 -5
- package/src/platform/mindedChatOpenAI.ts +19 -0
- package/src/platform/mindedConnection.ts +15 -25
- package/src/platform/mindedConnectionTypes.ts +188 -1
- package/src/playbooks/playbooks.ts +4 -4
- package/src/types/Agent.types.ts +2 -0
- package/src/types/Flows.types.ts +1 -17
- package/src/types/LLM.types.ts +5 -5
- package/src/types/LangGraph.types.ts +2 -5
- package/src/utils/logger.ts +2 -1
- package/src/voice/voiceSession.ts +17 -16
- package/dist/browserTask/executeBrowserTask.d.ts +0 -12
- package/dist/browserTask/executeBrowserTask.d.ts.map +0 -1
- package/dist/browserTask/executeBrowserTask.js +0 -181
- package/dist/browserTask/executeBrowserTask.js.map +0 -1
- package/dist/nodes/addBrowserTaskNode.d.ts +0 -13
- package/dist/nodes/addBrowserTaskNode.d.ts.map +0 -1
- package/dist/nodes/addBrowserTaskNode.js +0 -230
- package/dist/nodes/addBrowserTaskNode.js.map +0 -1
- package/dist/nodes/addBrowserTaskRunNode.d.ts +0 -13
- package/dist/nodes/addBrowserTaskRunNode.d.ts.map +0 -1
- package/dist/nodes/addBrowserTaskRunNode.js +0 -126
- package/dist/nodes/addBrowserTaskRunNode.js.map +0 -1
- package/dist/platform/models/mindedChatOpenAI.d.ts +0 -20
- package/dist/platform/models/mindedChatOpenAI.d.ts.map +0 -1
- package/dist/platform/models/mindedChatOpenAI.js.map +0 -1
- package/dist/platform/models/parallelWrapper.d.ts +0 -17
- package/dist/platform/models/parallelWrapper.d.ts.map +0 -1
- package/dist/platform/models/parallelWrapper.js +0 -105
- package/dist/platform/models/parallelWrapper.js.map +0 -1
- package/docs/platform/parallel-llm.md +0 -242
- package/src/browserTask/executeBrowserTask.ts +0 -213
- package/src/nodes/addBrowserTaskNode.ts +0 -229
- package/src/nodes/addBrowserTaskRunNode.ts +0 -142
- package/src/platform/models/mindedChatOpenAI.ts +0 -49
- package/src/platform/models/parallelWrapper.ts +0 -141
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ChatOpenAI, ChatOpenAIFields } from "@langchain/openai";
|
|
2
|
+
import { getConfig } from "./config";
|
|
3
|
+
|
|
4
|
+
export class MindedChatOpenAI extends ChatOpenAI {
|
|
5
|
+
constructor(fields?: ChatOpenAIFields) {
|
|
6
|
+
const { token, baseUrl } = getConfig();
|
|
7
|
+
const mindedBaseUrl = `${baseUrl}/sdk/llmGateway/chatOpenAI`;
|
|
8
|
+
if (!token) {
|
|
9
|
+
throw new Error('Minded token not found');
|
|
10
|
+
}
|
|
11
|
+
super({
|
|
12
|
+
...fields,
|
|
13
|
+
apiKey: token,
|
|
14
|
+
configuration: {
|
|
15
|
+
baseURL: mindedBaseUrl,
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import { io, Socket } from 'socket.io-client';
|
|
2
|
-
import {
|
|
3
|
-
mindedConnectionSocketMessageType,
|
|
4
|
-
mindedConnectionSocketMessageTypeMap,
|
|
5
|
-
} from './mindedConnectionTypes';
|
|
2
|
+
import { mindedConnectionSocketMessageType, mindedConnectionSocketMessageTypeMap } from './mindedConnectionTypes';
|
|
6
3
|
import { stringify } from 'flatted';
|
|
7
4
|
import { getConfig } from './config';
|
|
8
5
|
import { logger } from '../utils/logger';
|
|
@@ -28,20 +25,13 @@ export const on = <E extends keyof mindedConnectionSocketMessageTypeMap>(
|
|
|
28
25
|
listeners[event].push(callback);
|
|
29
26
|
};
|
|
30
27
|
|
|
31
|
-
export const emit = <E extends keyof mindedConnectionSocketMessageTypeMap>(
|
|
32
|
-
event: E,
|
|
33
|
-
message: mindedConnectionSocketMessageTypeMap[E]
|
|
34
|
-
) => {
|
|
28
|
+
export const emit = <E extends keyof mindedConnectionSocketMessageTypeMap>(event: E, message: mindedConnectionSocketMessageTypeMap[E]) => {
|
|
35
29
|
if (socket) {
|
|
36
30
|
socket.emit(event, message);
|
|
37
31
|
}
|
|
38
32
|
};
|
|
39
33
|
|
|
40
|
-
export const awaitEmit = async <T, R>(
|
|
41
|
-
event: mindedConnectionSocketMessageType,
|
|
42
|
-
message: T,
|
|
43
|
-
timeoutMs: number = 5000
|
|
44
|
-
): Promise<R> => {
|
|
34
|
+
export const awaitEmit = async <T, R>(event: mindedConnectionSocketMessageType, message: T, timeoutMs: number = 5000): Promise<R> => {
|
|
45
35
|
if (!socket) {
|
|
46
36
|
throw new Error('Socket is not connected');
|
|
47
37
|
}
|
|
@@ -97,43 +87,43 @@ const connect = async (token: string): Promise<void> => {
|
|
|
97
87
|
|
|
98
88
|
const checkReady = () => {
|
|
99
89
|
if (connected && ready) {
|
|
100
|
-
logger.info('\x1b[32mConnection with Minded platform is ready!\x1b[0m');
|
|
101
|
-
logger.info('\x1b[32mPress Ctrl+C to exit...');
|
|
90
|
+
logger.info({ message: '\x1b[32mConnection with Minded platform is ready!\x1b[0m' });
|
|
91
|
+
logger.info({ message: '\x1b[32mPress Ctrl+C to exit...' });
|
|
102
92
|
resolve();
|
|
103
93
|
}
|
|
104
94
|
};
|
|
105
95
|
|
|
106
96
|
// Connection event handlers
|
|
107
97
|
socket.on('connect', () => {
|
|
108
|
-
logger.info('Socket connected, waiting for server setup...');
|
|
98
|
+
logger.info({ message: 'Socket connected, waiting for server setup...' });
|
|
109
99
|
connected = true;
|
|
110
100
|
checkReady();
|
|
111
101
|
});
|
|
112
102
|
|
|
113
103
|
// Listen for ready event from server
|
|
114
104
|
socket.on('sdk-socket-ready', (data: { agentId: string; orgName: string }) => {
|
|
115
|
-
logger.info('Server ready signal received', data);
|
|
105
|
+
logger.info({ message: 'Server ready signal received', data });
|
|
116
106
|
ready = true;
|
|
117
107
|
checkReady();
|
|
118
108
|
});
|
|
119
109
|
|
|
120
110
|
socket.on('connect_error', () => {
|
|
121
|
-
logger.error('Failed to connect to minded platform');
|
|
111
|
+
logger.error({ message: 'Failed to connect to minded platform' });
|
|
122
112
|
reject(new Error('Failed to connect to minded platform'));
|
|
123
113
|
});
|
|
124
114
|
|
|
125
115
|
socket.on('disconnect', () => {
|
|
126
|
-
logger.info('Disconnected from local debugging socket');
|
|
116
|
+
logger.info({ message: 'Disconnected from local debugging socket' });
|
|
127
117
|
connected = false;
|
|
128
118
|
ready = false;
|
|
129
119
|
});
|
|
130
120
|
|
|
131
121
|
// Listen for error messages from the server
|
|
132
122
|
socket.on('error', async (error: { message: string }) => {
|
|
133
|
-
logger.error({
|
|
123
|
+
logger.error({ message: 'Server error:', error });
|
|
134
124
|
|
|
135
125
|
if (error.message.includes('Invalid token')) {
|
|
136
|
-
logger.info('Invalid token');
|
|
126
|
+
logger.info({ message: 'Invalid token' });
|
|
137
127
|
|
|
138
128
|
// Disconnect current socket
|
|
139
129
|
if (socket?.connected) {
|
|
@@ -159,7 +149,7 @@ const connect = async (token: string): Promise<void> => {
|
|
|
159
149
|
// Handle process termination
|
|
160
150
|
process.on('SIGINT', () => {
|
|
161
151
|
if (socket?.connected) {
|
|
162
|
-
logger.info('\nDisconnecting...');
|
|
152
|
+
logger.info({ message: '\nDisconnecting...' });
|
|
163
153
|
socket.disconnect();
|
|
164
154
|
}
|
|
165
155
|
process.exit(0);
|
|
@@ -177,17 +167,17 @@ export const start = async (): Promise<void> => {
|
|
|
177
167
|
|
|
178
168
|
export const disconnect = () => {
|
|
179
169
|
if (!socket) {
|
|
180
|
-
logger.warn('No socket connection to disconnect');
|
|
170
|
+
logger.warn({ message: 'No socket connection to disconnect' });
|
|
181
171
|
return;
|
|
182
172
|
}
|
|
183
173
|
|
|
184
174
|
if (socket.connected) {
|
|
185
|
-
logger.info('Disconnecting from Minded platform...');
|
|
175
|
+
logger.info({ message: 'Disconnecting from Minded platform...' });
|
|
186
176
|
socket.disconnect();
|
|
187
177
|
return;
|
|
188
178
|
}
|
|
189
179
|
|
|
190
|
-
logger.warn('Socket is already disconnected');
|
|
180
|
+
logger.warn({ message: 'Socket is already disconnected' });
|
|
191
181
|
};
|
|
192
182
|
|
|
193
183
|
export const mindedConnection = {
|
|
@@ -33,6 +33,15 @@ export enum mindedConnectionSocketMessageType {
|
|
|
33
33
|
TIMER_RESET = 'timer-reset',
|
|
34
34
|
TIMER_CANCEL = 'timer-cancel',
|
|
35
35
|
TIMER_TRIGGER = 'timer-trigger',
|
|
36
|
+
// Interrupt Session Management
|
|
37
|
+
INTERRUPT_SESSION_IS_PROCESSED = 'interrupt-session-is-processed',
|
|
38
|
+
INTERRUPT_SESSION_LOCK = 'interrupt-session-lock',
|
|
39
|
+
INTERRUPT_SESSION_RELEASE = 'interrupt-session-release',
|
|
40
|
+
INTERRUPT_SESSION_ENQUEUE = 'interrupt-session-enqueue',
|
|
41
|
+
INTERRUPT_SESSION_DEQUEUE_ALL = 'interrupt-session-dequeue-all',
|
|
42
|
+
INTERRUPT_SESSION_DEQUEUE = 'interrupt-session-dequeue',
|
|
43
|
+
INTERRUPT_SESSION_HAS_MESSAGES = 'interrupt-session-has-messages',
|
|
44
|
+
INTERRUPT_SESSION_GET_MESSAGES = 'interrupt-session-get-messages',
|
|
36
45
|
}
|
|
37
46
|
|
|
38
47
|
export type mindedConnectionSocketMessageTypeMap = {
|
|
@@ -57,6 +66,15 @@ export type mindedConnectionSocketMessageTypeMap = {
|
|
|
57
66
|
[mindedConnectionSocketMessageType.TIMER_CANCEL]: TimerCancelRequest;
|
|
58
67
|
[mindedConnectionSocketMessageType.TIMER_TRIGGER]: TimerTriggerRequest;
|
|
59
68
|
[mindedConnectionSocketMessageType.RESTORE_CHECKPOINT]: RestoreCheckpointRequest;
|
|
69
|
+
// Interrupt Session Management
|
|
70
|
+
[mindedConnectionSocketMessageType.INTERRUPT_SESSION_IS_PROCESSED]: InterruptSessionIsProcessedRequest;
|
|
71
|
+
[mindedConnectionSocketMessageType.INTERRUPT_SESSION_LOCK]: InterruptSessionLockRequest;
|
|
72
|
+
[mindedConnectionSocketMessageType.INTERRUPT_SESSION_RELEASE]: InterruptSessionReleaseRequest;
|
|
73
|
+
[mindedConnectionSocketMessageType.INTERRUPT_SESSION_ENQUEUE]: InterruptSessionEnqueueRequest;
|
|
74
|
+
[mindedConnectionSocketMessageType.INTERRUPT_SESSION_DEQUEUE_ALL]: InterruptSessionDequeueAllRequest;
|
|
75
|
+
[mindedConnectionSocketMessageType.INTERRUPT_SESSION_DEQUEUE]: InterruptSessionDequeueRequest;
|
|
76
|
+
[mindedConnectionSocketMessageType.INTERRUPT_SESSION_HAS_MESSAGES]: InterruptSessionHasMessagesRequest;
|
|
77
|
+
[mindedConnectionSocketMessageType.INTERRUPT_SESSION_GET_MESSAGES]: InterruptSessionGetMessagesRequest;
|
|
60
78
|
};
|
|
61
79
|
|
|
62
80
|
export interface BasemindedConnectionSocketMessage {
|
|
@@ -181,6 +199,166 @@ export interface TimerTriggerRequest extends BasemindedConnectionSocketMessage {
|
|
|
181
199
|
eventArgs: Record<string, any>;
|
|
182
200
|
}
|
|
183
201
|
|
|
202
|
+
// Interrupt Session Management Interfaces
|
|
203
|
+
export interface InterruptSessionIsProcessedRequest extends BasemindedConnectionSocketMessage {
|
|
204
|
+
sessionId: string;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
export interface InterruptSessionIsProcessedResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
208
|
+
isProcessed?: boolean;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
export interface InterruptSessionLockRequest extends BasemindedConnectionSocketMessage {
|
|
212
|
+
sessionId: string;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
export interface InterruptSessionLockResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
216
|
+
lockAcquired?: boolean;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
export interface InterruptSessionReleaseRequest extends BasemindedConnectionSocketMessage {
|
|
220
|
+
sessionId: string;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
export interface InterruptSessionReleaseResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
224
|
+
success?: boolean;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
export interface InterruptSessionEnqueueRequest extends BasemindedConnectionSocketMessage {
|
|
228
|
+
sessionId: string;
|
|
229
|
+
message: {
|
|
230
|
+
triggerBody: any;
|
|
231
|
+
triggerName: string;
|
|
232
|
+
appName?: string;
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
export interface InterruptSessionEnqueueResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
237
|
+
success?: boolean;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
export interface InterruptSessionDequeueAllRequest extends BasemindedConnectionSocketMessage {
|
|
241
|
+
sessionId: string;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
export interface InterruptSessionDequeueAllResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
245
|
+
messages?: Array<{
|
|
246
|
+
triggerBody: any;
|
|
247
|
+
triggerName: string;
|
|
248
|
+
appName?: string;
|
|
249
|
+
}>;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
export interface InterruptSessionDequeueRequest extends BasemindedConnectionSocketMessage {
|
|
253
|
+
sessionId: string;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
export interface InterruptSessionDequeueResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
257
|
+
message?: {
|
|
258
|
+
triggerBody: any;
|
|
259
|
+
triggerName: string;
|
|
260
|
+
appName?: string;
|
|
261
|
+
} | null;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
export interface InterruptSessionHasMessagesRequest extends BasemindedConnectionSocketMessage {
|
|
265
|
+
sessionId: string;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
export interface InterruptSessionHasMessagesResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
269
|
+
hasMessages?: boolean;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
export interface InterruptSessionGetMessagesRequest extends BasemindedConnectionSocketMessage {
|
|
273
|
+
sessionId: string;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
export interface InterruptSessionGetMessagesResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
277
|
+
messages?: Array<{
|
|
278
|
+
triggerBody: any;
|
|
279
|
+
triggerName: string;
|
|
280
|
+
appName?: string;
|
|
281
|
+
}>;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
// Interrupt Session Management Interfaces
|
|
285
|
+
export interface InterruptSessionIsProcessedRequest extends BasemindedConnectionSocketMessage {
|
|
286
|
+
sessionId: string;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
export interface InterruptSessionIsProcessedResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
290
|
+
isProcessed?: boolean;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
export interface InterruptSessionLockRequest extends BasemindedConnectionSocketMessage {
|
|
294
|
+
sessionId: string;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
export interface InterruptSessionReleaseRequest extends BasemindedConnectionSocketMessage {
|
|
298
|
+
sessionId: string;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
export interface InterruptSessionReleaseResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
302
|
+
success?: boolean;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
export interface InterruptSessionEnqueueRequest extends BasemindedConnectionSocketMessage {
|
|
306
|
+
sessionId: string;
|
|
307
|
+
message: {
|
|
308
|
+
triggerBody: any;
|
|
309
|
+
triggerName: string;
|
|
310
|
+
appName?: string;
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
export interface InterruptSessionEnqueueResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
315
|
+
success?: boolean;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
export interface InterruptSessionDequeueAllRequest extends BasemindedConnectionSocketMessage {
|
|
319
|
+
sessionId: string;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
export interface InterruptSessionDequeueAllResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
323
|
+
messages?: Array<{
|
|
324
|
+
triggerBody: any;
|
|
325
|
+
triggerName: string;
|
|
326
|
+
appName?: string;
|
|
327
|
+
}>;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
export interface InterruptSessionDequeueRequest extends BasemindedConnectionSocketMessage {
|
|
331
|
+
sessionId: string;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
export interface InterruptSessionDequeueResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
335
|
+
message?: {
|
|
336
|
+
triggerBody: any;
|
|
337
|
+
triggerName: string;
|
|
338
|
+
appName?: string;
|
|
339
|
+
} | null;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
export interface InterruptSessionHasMessagesRequest extends BasemindedConnectionSocketMessage {
|
|
343
|
+
sessionId: string;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
export interface InterruptSessionHasMessagesResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
347
|
+
hasMessages?: boolean;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
export interface InterruptSessionGetMessagesRequest extends BasemindedConnectionSocketMessage {
|
|
351
|
+
sessionId: string;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
export interface InterruptSessionGetMessagesResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
355
|
+
messages?: Array<{
|
|
356
|
+
triggerBody: any;
|
|
357
|
+
triggerName: string;
|
|
358
|
+
appName?: string;
|
|
359
|
+
}>;
|
|
360
|
+
}
|
|
361
|
+
|
|
184
362
|
export interface RestoreCheckpointRequest extends BasemindedConnectionSocketMessage {
|
|
185
363
|
sessionId: string;
|
|
186
364
|
checkpointId: string;
|
|
@@ -188,4 +366,13 @@ export interface RestoreCheckpointRequest extends BasemindedConnectionSocketMess
|
|
|
188
366
|
|
|
189
367
|
export interface RestoreCheckpointResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
190
368
|
success?: boolean;
|
|
191
|
-
}
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
export interface RestoreCheckpointRequest extends BasemindedConnectionSocketMessage {
|
|
372
|
+
sessionId: string;
|
|
373
|
+
checkpointId: string;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
export interface RestoreCheckpointResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
377
|
+
success?: boolean;
|
|
378
|
+
}
|
|
@@ -113,7 +113,7 @@ function loadPlaybooksFromDirectories(directories: string[]): Playbook[] {
|
|
|
113
113
|
|
|
114
114
|
for (const directory of directories) {
|
|
115
115
|
if (!fs.existsSync(directory)) {
|
|
116
|
-
logger.info(`Playbooks directory does not exist: ${directory}`);
|
|
116
|
+
logger.info({ message: `Playbooks directory does not exist: ${directory}` });
|
|
117
117
|
continue;
|
|
118
118
|
}
|
|
119
119
|
|
|
@@ -126,12 +126,12 @@ function loadPlaybooksFromDirectories(directories: string[]): Playbook[] {
|
|
|
126
126
|
|
|
127
127
|
if (playbook && playbook.name && playbook.blocks) {
|
|
128
128
|
playbooks.push(playbook);
|
|
129
|
-
logger.info(`Loaded playbook: ${playbook.name} from ${file}`);
|
|
129
|
+
logger.info({ message: `Loaded playbook: ${playbook.name} from ${file}` });
|
|
130
130
|
} else {
|
|
131
|
-
logger.warn(`Invalid playbook structure in ${file}`);
|
|
131
|
+
logger.warn({ message: `Invalid playbook structure in ${file}` });
|
|
132
132
|
}
|
|
133
133
|
} catch (error) {
|
|
134
|
-
logger.error(`Failed to load playbook file ${file}: ${error}`);
|
|
134
|
+
logger.error({ message: `Failed to load playbook file ${file}: ${error}` });
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
137
|
}
|
package/src/types/Agent.types.ts
CHANGED
|
@@ -29,6 +29,8 @@ export interface AgentInvokeParams {
|
|
|
29
29
|
sessionId?: string;
|
|
30
30
|
/** Optional name of the application triggering the agent in case of an app trigger */
|
|
31
31
|
appName?: string;
|
|
32
|
+
/** Internal flag to bypass session processing check for recursive calls */
|
|
33
|
+
bypassSessionCheck?: boolean;
|
|
32
34
|
}
|
|
33
35
|
export interface HistoryStep {
|
|
34
36
|
type: NodeType;
|
package/src/types/Flows.types.ts
CHANGED
|
@@ -11,7 +11,6 @@ export enum NodeType {
|
|
|
11
11
|
APP_TOOL = 'appTool',
|
|
12
12
|
PROMPT_NODE = 'promptNode',
|
|
13
13
|
JUMP_TO_NODE = 'jumpToNode',
|
|
14
|
-
BROWSER_TASK = 'browserTask',
|
|
15
14
|
}
|
|
16
15
|
|
|
17
16
|
export enum EdgeType {
|
|
@@ -59,8 +58,6 @@ export interface AppTriggerNode extends BaseTriggerNode, BaseAppNode {
|
|
|
59
58
|
|
|
60
59
|
export interface WebhookTriggerNode extends BaseTriggerNode {
|
|
61
60
|
triggerType: TriggerType.WEBHOOK;
|
|
62
|
-
autoTrigger?: boolean;
|
|
63
|
-
defaultPayload?: string;
|
|
64
61
|
}
|
|
65
62
|
|
|
66
63
|
export interface VoiceTriggerNode extends BaseTriggerNode {
|
|
@@ -90,18 +87,6 @@ export interface JumpToNode extends BaseNode {
|
|
|
90
87
|
targetNodeId: string;
|
|
91
88
|
}
|
|
92
89
|
|
|
93
|
-
export interface BrowserTaskNode extends BaseNode {
|
|
94
|
-
type: NodeType.BROWSER_TASK;
|
|
95
|
-
prompt: string;
|
|
96
|
-
model?: string;
|
|
97
|
-
inputSchema?: {
|
|
98
|
-
name: string;
|
|
99
|
-
type: 'string' | 'number';
|
|
100
|
-
description?: string;
|
|
101
|
-
required?: boolean;
|
|
102
|
-
}[];
|
|
103
|
-
}
|
|
104
|
-
|
|
105
90
|
export type TriggerNode = AppTriggerNode | WebhookTriggerNode | ManualTriggerNode | VoiceTriggerNode;
|
|
106
91
|
|
|
107
92
|
export interface JunctionNode extends BaseNode {
|
|
@@ -124,7 +109,7 @@ export interface AppToolNode extends BaseNode, BaseAppNode {
|
|
|
124
109
|
actionKey: string;
|
|
125
110
|
}
|
|
126
111
|
|
|
127
|
-
export type Node = TriggerNode | JunctionNode | ToolNode | AppToolNode | PromptNode | JumpToNode
|
|
112
|
+
export type Node = TriggerNode | JunctionNode | ToolNode | AppToolNode | PromptNode | JumpToNode;
|
|
128
113
|
|
|
129
114
|
export interface BaseEdge {
|
|
130
115
|
source: string;
|
|
@@ -196,5 +181,4 @@ export enum KnownTriggerNames {
|
|
|
196
181
|
export enum internalNodesSuffix {
|
|
197
182
|
HUMAN_IN_THE_LOOP = '_humanInTheLoop',
|
|
198
183
|
TOOL_RUN = '_toolRun',
|
|
199
|
-
BROWSER_TASK_RUN = '_browserTaskRun',
|
|
200
184
|
}
|
package/src/types/LLM.types.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { AzureChatOpenAI, ChatOpenAI } from '@langchain/openai';
|
|
2
|
-
import { MindedChatOpenAI } from '../platform/
|
|
2
|
+
import { MindedChatOpenAI } from '../platform/mindedChatOpenAI';
|
|
3
3
|
|
|
4
4
|
export type LLMConfig = {
|
|
5
|
-
name: string
|
|
6
|
-
properties: Record<string, any
|
|
7
|
-
}
|
|
5
|
+
name: string,
|
|
6
|
+
properties: Record<string, any>
|
|
7
|
+
}
|
|
8
8
|
|
|
9
9
|
export type LLMProvider = 'ChatOpenAI' | 'AzureChatOpenAI' | 'MindedChatOpenAI';
|
|
10
10
|
|
|
@@ -12,4 +12,4 @@ export const LLMProviders: Record<LLMProvider, any> = {
|
|
|
12
12
|
ChatOpenAI: ChatOpenAI,
|
|
13
13
|
AzureChatOpenAI: AzureChatOpenAI,
|
|
14
14
|
MindedChatOpenAI,
|
|
15
|
-
}
|
|
15
|
+
}
|
|
@@ -13,7 +13,6 @@ export const createStateAnnotation = <Memory = any>() =>
|
|
|
13
13
|
const index = res.findIndex((m) => m.id && m.id === message.id);
|
|
14
14
|
if (index !== -1) {
|
|
15
15
|
res[index].content = message.content;
|
|
16
|
-
res[index].additional_kwargs = { ...res[index].additional_kwargs, ...message.additional_kwargs };
|
|
17
16
|
}
|
|
18
17
|
} else {
|
|
19
18
|
res.push(message);
|
|
@@ -30,10 +29,8 @@ export const createStateAnnotation = <Memory = any>() =>
|
|
|
30
29
|
default: () => [],
|
|
31
30
|
reducer: (a, b) => a.concat(b),
|
|
32
31
|
}),
|
|
33
|
-
sessionId: Annotation<string>(
|
|
34
|
-
|
|
35
|
-
default: () => null,
|
|
36
|
-
reducer: (a, b) => b,
|
|
32
|
+
sessionId: Annotation<string>({
|
|
33
|
+
reducer: (a, b) => b || a,
|
|
37
34
|
}),
|
|
38
35
|
sessionType: Annotation<SessionType>({
|
|
39
36
|
default: () => SessionType.TEXT,
|
package/src/utils/logger.ts
CHANGED
|
@@ -4,7 +4,7 @@ dotenv.config();
|
|
|
4
4
|
|
|
5
5
|
// Create a Pino logger with a custom log format
|
|
6
6
|
export const logger = pino({
|
|
7
|
-
level: process.env.LOG_LEVEL || '
|
|
7
|
+
level: process.env.LOG_LEVEL || 'info',
|
|
8
8
|
base: null,
|
|
9
9
|
transport: {
|
|
10
10
|
target: 'pino-pretty',
|
|
@@ -12,6 +12,7 @@ export const logger = pino({
|
|
|
12
12
|
colorize: true,
|
|
13
13
|
crlf: true,
|
|
14
14
|
translateTime: 'SYS:standard',
|
|
15
|
+
messageKey: 'message', // Use 'message' instead of default 'msg'
|
|
15
16
|
},
|
|
16
17
|
},
|
|
17
18
|
formatters: {
|
|
@@ -25,7 +25,7 @@ export class VoiceSession {
|
|
|
25
25
|
private onDisconnectCallback?: () => void;
|
|
26
26
|
|
|
27
27
|
constructor({ agent, sessionId, firstMessage, voiceId }: { agent: Agent; sessionId: string; firstMessage: string; voiceId?: string }) {
|
|
28
|
-
logger.debug({
|
|
28
|
+
logger.debug({ message: 'Starting voice session', sessionId, firstMessage, voiceId });
|
|
29
29
|
this.agent = agent;
|
|
30
30
|
this.sessionId = sessionId;
|
|
31
31
|
this.firstMessage = firstMessage;
|
|
@@ -51,6 +51,7 @@ export class VoiceSession {
|
|
|
51
51
|
apiKey: elevenLabsKey,
|
|
52
52
|
});
|
|
53
53
|
|
|
54
|
+
logger.debug({ message: 'Connecting to ElevenLabs', sessionId: this.sessionId });
|
|
54
55
|
this.elevenLabsSocket = new WebSocket(signedUrl);
|
|
55
56
|
this.setupSocketHandlers();
|
|
56
57
|
}
|
|
@@ -89,7 +90,7 @@ export class VoiceSession {
|
|
|
89
90
|
const socket = this.elevenLabsSocket!; // non-null assertion once, we ensured it's assigned in init()
|
|
90
91
|
|
|
91
92
|
socket.onopen = () => {
|
|
92
|
-
logger.debug({
|
|
93
|
+
logger.debug({ message: 'Connected to ElevenLabs', sessionId: this.sessionId });
|
|
93
94
|
const initiationData: ConversationInitiationClientData = {
|
|
94
95
|
type: 'conversation_initiation_client_data',
|
|
95
96
|
conversation_config_override: {
|
|
@@ -115,13 +116,13 @@ export class VoiceSession {
|
|
|
115
116
|
};
|
|
116
117
|
|
|
117
118
|
socket.onclose = () => {
|
|
118
|
-
logger.debug({
|
|
119
|
+
logger.debug({ message: 'Disconnected from ElevenLabs, removing voice session', sessionId: this.sessionId });
|
|
119
120
|
this.onDisconnectCallback?.();
|
|
120
121
|
this.agent.voiceSessions.delete(this.sessionId);
|
|
121
122
|
};
|
|
122
123
|
|
|
123
124
|
socket.onerror = (err: unknown) => {
|
|
124
|
-
logger.error({
|
|
125
|
+
logger.error({ message: '[ElevenLabsVoice] socket error', sessionId: this.sessionId, error: err });
|
|
125
126
|
};
|
|
126
127
|
|
|
127
128
|
socket.onmessage = async (event: any) => {
|
|
@@ -135,7 +136,7 @@ export class VoiceSession {
|
|
|
135
136
|
break;
|
|
136
137
|
case 'user_transcript':
|
|
137
138
|
logger.debug({
|
|
138
|
-
|
|
139
|
+
message: 'User transcript received',
|
|
139
140
|
sessionId: this.sessionId,
|
|
140
141
|
data: data.user_transcription_event.user_transcript,
|
|
141
142
|
});
|
|
@@ -147,7 +148,6 @@ export class VoiceSession {
|
|
|
147
148
|
}
|
|
148
149
|
break;
|
|
149
150
|
case 'agent_response':
|
|
150
|
-
logger.debug({ msg: '[Voice] Received agent response' });
|
|
151
151
|
if (this.onMessageCallback) {
|
|
152
152
|
this.onMessageCallback(
|
|
153
153
|
data.agent_response_event.agent_response,
|
|
@@ -156,7 +156,7 @@ export class VoiceSession {
|
|
|
156
156
|
}
|
|
157
157
|
break;
|
|
158
158
|
case 'interruption':
|
|
159
|
-
logger.debug(
|
|
159
|
+
logger.debug('Interruption received');
|
|
160
160
|
this.onInterruptionCallback?.();
|
|
161
161
|
// Send interruption event to dashboard if connected
|
|
162
162
|
if (getConfig().dashboardConnected) {
|
|
@@ -167,12 +167,12 @@ export class VoiceSession {
|
|
|
167
167
|
timestamp: Date.now(),
|
|
168
168
|
});
|
|
169
169
|
} catch (error) {
|
|
170
|
-
logger.error({
|
|
170
|
+
logger.error({ message: '[ElevenLabsVoice] Error sending interruption to dashboard', sessionId: this.sessionId, error });
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
173
|
break;
|
|
174
174
|
case 'audio':
|
|
175
|
-
logger.debug({
|
|
175
|
+
logger.debug({ message: 'Agent audio received', sessionId: this.sessionId });
|
|
176
176
|
if (this.onAudioCallback) {
|
|
177
177
|
this.onAudioCallback(data.audio_event.audio_base_64);
|
|
178
178
|
}
|
|
@@ -185,17 +185,17 @@ export class VoiceSession {
|
|
|
185
185
|
type: mindedConnectionSocketMessageType.DASHBOARD_VOICE_AGENT_AUDIO,
|
|
186
186
|
});
|
|
187
187
|
} catch (error) {
|
|
188
|
-
logger.error(
|
|
188
|
+
logger.error(`[ElevenLabsVoice] Error sending audio to dashboard: ${error}`);
|
|
189
189
|
}
|
|
190
190
|
}
|
|
191
191
|
break;
|
|
192
192
|
case 'conversation_initiation_metadata':
|
|
193
|
-
logger.
|
|
193
|
+
logger.debug({ message: 'ElevenLabs conversation initiation metadata', sessionId: this.sessionId, data });
|
|
194
194
|
break;
|
|
195
195
|
case 'agent_response_correction':
|
|
196
196
|
try {
|
|
197
197
|
logger.debug({
|
|
198
|
-
|
|
198
|
+
message: 'Agent response correction received',
|
|
199
199
|
sessionId: this.sessionId,
|
|
200
200
|
data: data.agent_response_correction_event,
|
|
201
201
|
});
|
|
@@ -204,17 +204,18 @@ export class VoiceSession {
|
|
|
204
204
|
data.agent_response_correction_event.corrected_agent_response,
|
|
205
205
|
);
|
|
206
206
|
} catch (error) {
|
|
207
|
-
logger.error({
|
|
207
|
+
logger.error({ message: '[ElevenLabsVoice] Error updating agent response', sessionId: this.sessionId, error });
|
|
208
208
|
}
|
|
209
209
|
break;
|
|
210
210
|
default:
|
|
211
|
-
logger.debug({
|
|
211
|
+
logger.debug({ message: 'Received unknown message from ElevenLabs', sessionId: this.sessionId, data });
|
|
212
212
|
break;
|
|
213
213
|
}
|
|
214
214
|
};
|
|
215
215
|
}
|
|
216
216
|
|
|
217
217
|
private async addFirstMessageToState(): Promise<void> {
|
|
218
|
+
logger.debug({ message: 'Adding first message to state', sessionId: this.sessionId, firstMessage: this.firstMessage });
|
|
218
219
|
const graphState = await this.agent.compiledGraph.getState(this.agent.getLangraphConfig(this.sessionId));
|
|
219
220
|
if (!graphState.values.messages?.length) {
|
|
220
221
|
await this.agent.compiledGraph.updateState(this.agent.getLangraphConfig(this.sessionId), {
|
|
@@ -239,12 +240,12 @@ export class VoiceSession {
|
|
|
239
240
|
overrideStartFromNodeId: currentNodeId,
|
|
240
241
|
});
|
|
241
242
|
} else {
|
|
242
|
-
logger.warn({
|
|
243
|
+
logger.warn({ message: 'Agent message not found for correction', sessionId: this.sessionId, originalAgentResponse });
|
|
243
244
|
}
|
|
244
245
|
}
|
|
245
246
|
|
|
246
247
|
public hangup(): void {
|
|
247
|
-
logger.info({
|
|
248
|
+
logger.info({ message: 'Hanging up voice session', sessionId: this.sessionId });
|
|
248
249
|
this.onDisconnectCallback?.();
|
|
249
250
|
this.elevenLabsSocket?.close();
|
|
250
251
|
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export interface CloudTaskResponse {
|
|
2
|
-
id: string;
|
|
3
|
-
status: string;
|
|
4
|
-
live_url?: string;
|
|
5
|
-
steps?: any[];
|
|
6
|
-
output?: string;
|
|
7
|
-
}
|
|
8
|
-
export declare const createCloudTask: (prompt: string, model?: string) => Promise<string>;
|
|
9
|
-
export declare const getTaskDetails: (taskId: string) => Promise<CloudTaskResponse>;
|
|
10
|
-
export declare const waitForLiveUrl: (taskId: string, maxWaitTime?: number) => Promise<CloudTaskResponse>;
|
|
11
|
-
export declare const waitForCompletion: (taskId: string, maxWaitTime?: number) => Promise<CloudTaskResponse>;
|
|
12
|
-
//# sourceMappingURL=executeBrowserTask.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"executeBrowserTask.d.ts","sourceRoot":"","sources":["../../src/browserTask/executeBrowserTask.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAGD,eAAO,MAAM,eAAe,GAAU,QAAQ,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CA6BpF,CAAC;AAEF,eAAO,MAAM,cAAc,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,iBAAiB,CAkB9E,CAAC;AAEF,eAAO,MAAM,cAAc,GAAU,QAAQ,MAAM,EAAE,cAAa,MAAc,KAAG,OAAO,CAAC,iBAAiB,CAsE3G,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAU,QAAQ,MAAM,EAAE,cAAa,MAAe,KAAG,OAAO,CAAC,iBAAiB,CA0E/G,CAAC"}
|