@minded-ai/mindedjs 1.0.91 → 1.0.92-beta-3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent.d.ts +4 -1
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +96 -15
- package/dist/agent.js.map +1 -1
- package/dist/cli/index.js +12 -12
- package/dist/cli/index.js.map +1 -1
- package/dist/edges/createDirectEdge.js +1 -1
- package/dist/edges/createDirectEdge.js.map +1 -1
- package/dist/edges/createLogicalRouter.d.ts.map +1 -1
- package/dist/edges/createLogicalRouter.js +7 -7
- package/dist/edges/createLogicalRouter.js.map +1 -1
- package/dist/edges/createPromptRouter.d.ts.map +1 -1
- package/dist/edges/createPromptRouter.js +4 -3
- package/dist/edges/createPromptRouter.js.map +1 -1
- package/dist/edges/edgeFactory.js +2 -2
- package/dist/edges/edgeFactory.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- 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 +51 -0
- package/dist/interrupts/MemoryInterruptSessionManager.js.map +1 -0
- package/dist/interrupts/MindedInterruptSessionManager.d.ts +15 -0
- package/dist/interrupts/MindedInterruptSessionManager.d.ts.map +1 -0
- package/dist/interrupts/MindedInterruptSessionManager.js +121 -0
- package/dist/interrupts/MindedInterruptSessionManager.js.map +1 -0
- package/dist/interrupts/interruptSessionManagerFactory.d.ts +4 -0
- package/dist/interrupts/interruptSessionManagerFactory.d.ts.map +1 -0
- package/dist/interrupts/interruptSessionManagerFactory.js +22 -0
- package/dist/interrupts/interruptSessionManagerFactory.js.map +1 -0
- package/dist/nodes/addAppToolNode.d.ts.map +1 -1
- package/dist/nodes/addAppToolNode.js +3 -3
- 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 +3 -3
- package/dist/nodes/addJumpToNode.js.map +1 -1
- package/dist/nodes/addJunctionNode.d.ts +7 -0
- package/dist/nodes/addJunctionNode.d.ts.map +1 -0
- package/dist/nodes/addJunctionNode.js +20 -0
- package/dist/nodes/addJunctionNode.js.map +1 -0
- package/dist/nodes/addPromptNode.d.ts.map +1 -1
- package/dist/nodes/addPromptNode.js +48 -3
- package/dist/nodes/addPromptNode.js.map +1 -1
- package/dist/nodes/addToolNode.d.ts.map +1 -1
- package/dist/nodes/addToolNode.js +3 -3
- package/dist/nodes/addToolNode.js.map +1 -1
- package/dist/nodes/addToolRunNode.d.ts.map +1 -1
- package/dist/nodes/addToolRunNode.js +1 -2
- package/dist/nodes/addToolRunNode.js.map +1 -1
- package/dist/nodes/addTriggerNode.d.ts.map +1 -1
- package/dist/nodes/addTriggerNode.js +2 -3
- package/dist/nodes/addTriggerNode.js.map +1 -1
- package/dist/nodes/nodeFactory.d.ts.map +1 -1
- package/dist/nodes/nodeFactory.js +2 -5
- package/dist/nodes/nodeFactory.js.map +1 -1
- package/dist/platform/mindedConnection.d.ts.map +1 -1
- package/dist/platform/mindedConnection.js +13 -13
- package/dist/platform/mindedConnection.js.map +1 -1
- package/dist/platform/mindedConnectionTypes.d.ts +82 -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 +11 -13
- package/dist/types/Agent.types.d.ts.map +1 -1
- package/dist/types/Agent.types.js +1 -10
- package/dist/types/Agent.types.js.map +1 -1
- package/dist/types/LangGraph.types.d.ts +2 -2
- package/dist/types/LangGraph.types.d.ts.map +1 -1
- package/dist/types/LangGraph.types.js +3 -1
- package/dist/types/LangGraph.types.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +1 -0
- package/dist/utils/logger.js.map +1 -1
- package/dist/voice/voiceSession.d.ts.map +1 -1
- package/dist/voice/voiceSession.js +10 -2
- package/dist/voice/voiceSession.js.map +1 -1
- package/package.json +2 -2
- package/src/agent.ts +122 -24
- package/src/cli/index.ts +12 -12
- package/src/edges/createDirectEdge.ts +1 -1
- package/src/edges/createLogicalRouter.ts +7 -8
- package/src/edges/createPromptRouter.ts +4 -3
- package/src/edges/edgeFactory.ts +2 -2
- package/src/index.ts +0 -1
- package/src/interrupts/InterruptSessionManager.types.ts +80 -0
- package/src/interrupts/MemoryInterruptSessionManager.ts +56 -0
- package/src/interrupts/MindedInterruptSessionManager.ts +157 -0
- package/src/interrupts/interruptSessionManagerFactory.ts +20 -0
- package/src/nodes/addAppToolNode.ts +4 -4
- package/src/nodes/addHumanInTheLoopNode.ts +3 -2
- package/src/nodes/addJumpToNode.ts +4 -4
- package/src/nodes/addJunctionNode.ts +19 -0
- package/src/nodes/addPromptNode.ts +54 -8
- package/src/nodes/addToolNode.ts +3 -4
- package/src/nodes/addToolRunNode.ts +2 -3
- package/src/nodes/addTriggerNode.ts +4 -4
- package/src/nodes/nodeFactory.ts +2 -7
- package/src/platform/mindedConnection.ts +13 -13
- package/src/platform/mindedConnectionTypes.ts +100 -0
- package/src/playbooks/playbooks.ts +4 -4
- package/src/types/Agent.types.ts +12 -15
- package/src/types/LangGraph.types.ts +3 -1
- package/src/utils/logger.ts +1 -0
- package/src/voice/voiceSession.ts +14 -6
package/src/nodes/addToolNode.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ToolNode } from '../types/Flows.types';
|
|
1
|
+
import { NodeType, ToolNode } from '../types/Flows.types';
|
|
2
2
|
import { Tool } from '../types/Tools.types';
|
|
3
3
|
import { tool as langchainTool } from '@langchain/core/tools';
|
|
4
4
|
import { PreCompiledGraph, stateAnnotation } from '../types/LangGraph.types';
|
|
@@ -10,7 +10,6 @@ import { Agent } from '../agent';
|
|
|
10
10
|
import { compilePlaybooks } from '../playbooks/playbooks';
|
|
11
11
|
import { createHistoryStep } from '../utils/history';
|
|
12
12
|
import { HistoryStep } from '../types/Agent.types';
|
|
13
|
-
import { HistoryStepType } from '../types/Agent.types';
|
|
14
13
|
|
|
15
14
|
export const addToolNode = async ({
|
|
16
15
|
graph,
|
|
@@ -31,7 +30,7 @@ export const addToolNode = async ({
|
|
|
31
30
|
throw new Error(`Tool not found: ${toolNode.toolName} in node ${node.name}`);
|
|
32
31
|
}
|
|
33
32
|
const callback: RunnableLike = async (state: typeof stateAnnotation.State) => {
|
|
34
|
-
logger.info(`Executing tool node ${toolNode.displayName}`);
|
|
33
|
+
logger.info({ message: `Executing tool node ${toolNode.displayName}` });
|
|
35
34
|
|
|
36
35
|
const tool = langchainTool(() => {}, {
|
|
37
36
|
name: matchedTool.name,
|
|
@@ -60,7 +59,7 @@ export const addToolNode = async ({
|
|
|
60
59
|
return {
|
|
61
60
|
messages: [AIToolCallMessage],
|
|
62
61
|
history: createHistoryStep<HistoryStep>(state.history, {
|
|
63
|
-
type:
|
|
62
|
+
type: NodeType.TOOL,
|
|
64
63
|
nodeId: node.name,
|
|
65
64
|
nodeDisplayName: node.displayName,
|
|
66
65
|
raw: AIToolCallMessage.tool_calls?.[0] || '',
|
|
@@ -2,7 +2,7 @@ import { PreCompiledGraph, stateAnnotation } from '../types/LangGraph.types';
|
|
|
2
2
|
import { RunnableLike } from '@langchain/core/runnables';
|
|
3
3
|
import { Tool } from '../types/Tools.types';
|
|
4
4
|
import { LLMProviders } from '../types/LLM.types';
|
|
5
|
-
import { internalNodesSuffix, ToolNode } from '../types/Flows.types';
|
|
5
|
+
import { internalNodesSuffix, NodeType, ToolNode } from '../types/Flows.types';
|
|
6
6
|
import { tool as langchainTool } from '@langchain/core/tools';
|
|
7
7
|
import { ToolMessage } from '@langchain/core/messages';
|
|
8
8
|
import { z } from 'zod';
|
|
@@ -11,7 +11,6 @@ import { Agent } from '../agent';
|
|
|
11
11
|
import { logger } from '../utils/logger';
|
|
12
12
|
import { createHistoryStep } from '../utils/history';
|
|
13
13
|
import { HistoryStep } from '../types/Agent.types';
|
|
14
|
-
import { HistoryStepType } from '../types/Agent.types';
|
|
15
14
|
|
|
16
15
|
type AddToolRunNodeParams = {
|
|
17
16
|
graph: PreCompiledGraph;
|
|
@@ -61,7 +60,7 @@ export const addToolRunNode = async ({ graph, tools, toolNode, attachedToNodeNam
|
|
|
61
60
|
...toolStateUpdate,
|
|
62
61
|
messages: updatedMessages,
|
|
63
62
|
history: createHistoryStep<HistoryStep>(state.history, {
|
|
64
|
-
type:
|
|
63
|
+
type: NodeType.TOOL,
|
|
65
64
|
nodeId: toolNode.name,
|
|
66
65
|
nodeDisplayName: toolNode.displayName,
|
|
67
66
|
raw: toolCallMessage,
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { RunnableLike } from '@langchain/core/runnables';
|
|
2
|
-
import { TriggerNode, TriggerType } from '../types/Flows.types';
|
|
2
|
+
import { NodeType, TriggerNode, TriggerType } from '../types/Flows.types';
|
|
3
3
|
import { PreCompiledGraph, stateAnnotation } from '../types/LangGraph.types';
|
|
4
4
|
import { logger } from '../utils/logger';
|
|
5
|
-
import { HistoryStep
|
|
5
|
+
import { HistoryStep } from '../types/Agent.types';
|
|
6
6
|
import { createHistoryStep } from '../utils/history';
|
|
7
7
|
|
|
8
8
|
export const addTriggerNode = async ({ graph, node }: { graph: PreCompiledGraph; node: TriggerNode }) => {
|
|
9
9
|
const callback: RunnableLike = async (state: typeof stateAnnotation.State) => {
|
|
10
|
-
logger.info(`Executing trigger node ${node.displayName}`);
|
|
10
|
+
logger.info({ message: `Executing trigger node ${node.displayName}` });
|
|
11
11
|
if (node.triggerType === TriggerType.MANUAL) {
|
|
12
12
|
return {
|
|
13
13
|
history: createHistoryStep<HistoryStep>(state.history, {
|
|
14
|
-
type:
|
|
14
|
+
type: NodeType.TRIGGER,
|
|
15
15
|
nodeId: node.name,
|
|
16
16
|
nodeDisplayName: node.displayName,
|
|
17
17
|
raw: '',
|
package/src/nodes/nodeFactory.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { JunctionNode, Node, NodeType } from '../types/Flows.types';
|
|
1
|
+
import { Node, NodeType } from '../types/Flows.types';
|
|
3
2
|
import { PreCompiledGraph } from '../types/LangGraph.types';
|
|
4
3
|
import { Tool } from '../types/Tools.types';
|
|
5
4
|
import { addToolNode } from './addToolNode';
|
|
@@ -11,11 +10,7 @@ import { addTriggerNode } from './addTriggerNode';
|
|
|
11
10
|
import { LLMProviders } from '../types/LLM.types';
|
|
12
11
|
import { Agent } from '../agent';
|
|
13
12
|
import { addJumpToNode } from './addJumpToNode';
|
|
14
|
-
|
|
15
|
-
const addJunctionNode = ({ graph, node }: { graph: PreCompiledGraph; node: JunctionNode }) => {
|
|
16
|
-
const callback: RunnableLike = async () => { };
|
|
17
|
-
graph.addNode(node.name, callback);
|
|
18
|
-
};
|
|
13
|
+
import { addJunctionNode } from './addJunctionNode';
|
|
19
14
|
|
|
20
15
|
export const nodeFactory = ({
|
|
21
16
|
graph,
|
|
@@ -34,7 +34,7 @@ export class MindedConnection {
|
|
|
34
34
|
}
|
|
35
35
|
};
|
|
36
36
|
|
|
37
|
-
public awaitEmit = async <T, R>(event: MindedConnectionSocketMessageType, message: T, timeoutMs: number =
|
|
37
|
+
public awaitEmit = async <T, R>(event: MindedConnectionSocketMessageType, message: T, timeoutMs: number = 10000): Promise<R> => {
|
|
38
38
|
if (!this.socket) {
|
|
39
39
|
throw new Error('Socket is not connected');
|
|
40
40
|
}
|
|
@@ -75,43 +75,43 @@ export class MindedConnection {
|
|
|
75
75
|
|
|
76
76
|
const checkReady = () => {
|
|
77
77
|
if (connected && ready) {
|
|
78
|
-
logger.info('\x1b[32mConnection with Minded platform is ready!\x1b[0m');
|
|
79
|
-
logger.info('\x1b[32mPress Ctrl+C to exit...');
|
|
78
|
+
logger.info({ message: '\x1b[32mConnection with Minded platform is ready!\x1b[0m' });
|
|
79
|
+
logger.info({ message: '\x1b[32mPress Ctrl+C to exit...' });
|
|
80
80
|
resolve();
|
|
81
81
|
}
|
|
82
82
|
};
|
|
83
83
|
|
|
84
84
|
// Connection event handlers
|
|
85
85
|
this.socket.on('connect', () => {
|
|
86
|
-
logger.info('Socket connected, waiting for server setup...');
|
|
86
|
+
logger.info({ message: 'Socket connected, waiting for server setup...' });
|
|
87
87
|
connected = true;
|
|
88
88
|
checkReady();
|
|
89
89
|
});
|
|
90
90
|
|
|
91
91
|
// Listen for ready event from server
|
|
92
92
|
this.socket.on('sdk-socket-ready', (data: { agentId: string; orgName: string }) => {
|
|
93
|
-
logger.info('Server ready signal received', data);
|
|
93
|
+
logger.info({ message: 'Server ready signal received', data });
|
|
94
94
|
ready = true;
|
|
95
95
|
checkReady();
|
|
96
96
|
});
|
|
97
97
|
|
|
98
98
|
this.socket.on('connect_error', () => {
|
|
99
|
-
logger.error('Failed to connect to minded platform');
|
|
99
|
+
logger.error({ message: 'Failed to connect to minded platform' });
|
|
100
100
|
reject(new Error('Failed to connect to minded platform'));
|
|
101
101
|
});
|
|
102
102
|
|
|
103
103
|
this.socket.on('disconnect', () => {
|
|
104
|
-
logger.info('Disconnected from local debugging socket');
|
|
104
|
+
logger.info({ message: 'Disconnected from local debugging socket' });
|
|
105
105
|
connected = false;
|
|
106
106
|
ready = false;
|
|
107
107
|
});
|
|
108
108
|
|
|
109
109
|
// Listen for error messages from the server
|
|
110
110
|
this.socket.on('error', async (error: { message: string }) => {
|
|
111
|
-
logger.error({
|
|
111
|
+
logger.error({ message: 'Server error:', error });
|
|
112
112
|
|
|
113
113
|
if (error.message.includes('Invalid token')) {
|
|
114
|
-
logger.info('Invalid token');
|
|
114
|
+
logger.info({ message: 'Invalid token' });
|
|
115
115
|
|
|
116
116
|
// Disconnect current socket
|
|
117
117
|
if (this.socket?.connected) {
|
|
@@ -137,7 +137,7 @@ export class MindedConnection {
|
|
|
137
137
|
// Handle process termination
|
|
138
138
|
process.on('SIGINT', () => {
|
|
139
139
|
if (this.socket?.connected) {
|
|
140
|
-
logger.info('\nDisconnecting...');
|
|
140
|
+
logger.info({ message: '\nDisconnecting...' });
|
|
141
141
|
this.socket.disconnect();
|
|
142
142
|
}
|
|
143
143
|
process.exit(0);
|
|
@@ -155,16 +155,16 @@ export class MindedConnection {
|
|
|
155
155
|
|
|
156
156
|
public disconnect() {
|
|
157
157
|
if (!this.socket) {
|
|
158
|
-
logger.warn('No socket connection to disconnect');
|
|
158
|
+
logger.warn({ message: 'No socket connection to disconnect' });
|
|
159
159
|
return;
|
|
160
160
|
}
|
|
161
161
|
|
|
162
162
|
if (this.socket.connected) {
|
|
163
|
-
logger.info('Disconnecting from Minded platform...');
|
|
163
|
+
logger.info({ message: 'Disconnecting from Minded platform...' });
|
|
164
164
|
this.socket.disconnect();
|
|
165
165
|
return;
|
|
166
166
|
}
|
|
167
167
|
|
|
168
|
-
logger.warn('Socket is already disconnected');
|
|
168
|
+
logger.warn({ message: 'Socket is already disconnected' });
|
|
169
169
|
}
|
|
170
170
|
}
|
|
@@ -32,6 +32,15 @@ export enum MindedConnectionSocketMessageType {
|
|
|
32
32
|
TIMER_RESET = 'timer-reset',
|
|
33
33
|
TIMER_CANCEL = 'timer-cancel',
|
|
34
34
|
TIMER_TRIGGER = 'timer-trigger',
|
|
35
|
+
// Interrupt Session Management
|
|
36
|
+
INTERRUPT_SESSION_IS_PROCESSED = 'interrupt-session-is-processed',
|
|
37
|
+
INTERRUPT_SESSION_LOCK = 'interrupt-session-lock',
|
|
38
|
+
INTERRUPT_SESSION_RELEASE = 'interrupt-session-release',
|
|
39
|
+
INTERRUPT_SESSION_ENQUEUE = 'interrupt-session-enqueue',
|
|
40
|
+
INTERRUPT_SESSION_DEQUEUE_ALL = 'interrupt-session-dequeue-all',
|
|
41
|
+
INTERRUPT_SESSION_DEQUEUE = 'interrupt-session-dequeue',
|
|
42
|
+
INTERRUPT_SESSION_HAS_MESSAGES = 'interrupt-session-has-messages',
|
|
43
|
+
INTERRUPT_SESSION_GET_MESSAGES = 'interrupt-session-get-messages',
|
|
35
44
|
}
|
|
36
45
|
|
|
37
46
|
export type MindedConnectionSocketMessageTypeMap = {
|
|
@@ -55,6 +64,15 @@ export type MindedConnectionSocketMessageTypeMap = {
|
|
|
55
64
|
[MindedConnectionSocketMessageType.TIMER_RESET]: TimerResetRequest;
|
|
56
65
|
[MindedConnectionSocketMessageType.TIMER_CANCEL]: TimerCancelRequest;
|
|
57
66
|
[MindedConnectionSocketMessageType.TIMER_TRIGGER]: TimerTriggerRequest;
|
|
67
|
+
// Interrupt Session Management
|
|
68
|
+
[MindedConnectionSocketMessageType.INTERRUPT_SESSION_IS_PROCESSED]: InterruptSessionIsProcessedRequest;
|
|
69
|
+
[MindedConnectionSocketMessageType.INTERRUPT_SESSION_LOCK]: InterruptSessionLockRequest;
|
|
70
|
+
[MindedConnectionSocketMessageType.INTERRUPT_SESSION_RELEASE]: InterruptSessionReleaseRequest;
|
|
71
|
+
[MindedConnectionSocketMessageType.INTERRUPT_SESSION_ENQUEUE]: InterruptSessionEnqueueRequest;
|
|
72
|
+
[MindedConnectionSocketMessageType.INTERRUPT_SESSION_DEQUEUE_ALL]: InterruptSessionDequeueAllRequest;
|
|
73
|
+
[MindedConnectionSocketMessageType.INTERRUPT_SESSION_DEQUEUE]: InterruptSessionDequeueRequest;
|
|
74
|
+
[MindedConnectionSocketMessageType.INTERRUPT_SESSION_HAS_MESSAGES]: InterruptSessionHasMessagesRequest;
|
|
75
|
+
[MindedConnectionSocketMessageType.INTERRUPT_SESSION_GET_MESSAGES]: InterruptSessionGetMessagesRequest;
|
|
58
76
|
};
|
|
59
77
|
|
|
60
78
|
export interface BaseMindedConnectionSocketMessage {
|
|
@@ -178,3 +196,85 @@ export interface TimerTriggerRequest extends BaseMindedConnectionSocketMessage {
|
|
|
178
196
|
timerName: string;
|
|
179
197
|
eventArgs: Record<string, any>;
|
|
180
198
|
}
|
|
199
|
+
|
|
200
|
+
// Interrupt Session Management Interfaces
|
|
201
|
+
export interface InterruptSessionIsProcessedRequest extends BaseMindedConnectionSocketMessage {
|
|
202
|
+
sessionId: string;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
export interface InterruptSessionIsProcessedResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
206
|
+
isProcessed?: boolean;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
export interface InterruptSessionLockRequest extends BaseMindedConnectionSocketMessage {
|
|
210
|
+
sessionId: string;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
export interface InterruptSessionLockResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
214
|
+
success?: boolean;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
export interface InterruptSessionReleaseRequest extends BaseMindedConnectionSocketMessage {
|
|
218
|
+
sessionId: string;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
export interface InterruptSessionReleaseResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
222
|
+
success?: boolean;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
export interface InterruptSessionEnqueueRequest extends BaseMindedConnectionSocketMessage {
|
|
226
|
+
sessionId: string;
|
|
227
|
+
message: {
|
|
228
|
+
triggerBody: any;
|
|
229
|
+
triggerName: string;
|
|
230
|
+
appName?: string;
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
export interface InterruptSessionEnqueueResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
235
|
+
success?: boolean;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
export interface InterruptSessionDequeueAllRequest extends BaseMindedConnectionSocketMessage {
|
|
239
|
+
sessionId: string;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
export interface InterruptSessionDequeueAllResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
243
|
+
messages?: Array<{
|
|
244
|
+
triggerBody: any;
|
|
245
|
+
triggerName: string;
|
|
246
|
+
appName?: string;
|
|
247
|
+
}>;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
export interface InterruptSessionDequeueRequest extends BaseMindedConnectionSocketMessage {
|
|
251
|
+
sessionId: string;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
export interface InterruptSessionDequeueResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
255
|
+
message?: {
|
|
256
|
+
triggerBody: any;
|
|
257
|
+
triggerName: string;
|
|
258
|
+
appName?: string;
|
|
259
|
+
} | null;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
export interface InterruptSessionHasMessagesRequest extends BaseMindedConnectionSocketMessage {
|
|
263
|
+
sessionId: string;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
export interface InterruptSessionHasMessagesResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
267
|
+
hasMessages?: boolean;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
export interface InterruptSessionGetMessagesRequest extends BaseMindedConnectionSocketMessage {
|
|
271
|
+
sessionId: string;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
export interface InterruptSessionGetMessagesResponse extends BaseSdkConnectionSocketMessageResponseCallbackAck {
|
|
275
|
+
messages?: Array<{
|
|
276
|
+
triggerBody: any;
|
|
277
|
+
triggerName: string;
|
|
278
|
+
appName?: string;
|
|
279
|
+
}>;
|
|
280
|
+
}
|
|
@@ -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
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { AgentEventRequestPayloads, AgentEventResponsePayloads } from '../events/AgentEvents';
|
|
2
2
|
import { LLMConfig } from './LLM.types';
|
|
3
|
+
import { NodeType } from './Flows.types';
|
|
3
4
|
|
|
4
5
|
export type EmitSignature<Memory, E extends keyof AgentEventRequestPayloads<Memory>> = (
|
|
5
6
|
event: E,
|
|
@@ -28,19 +29,11 @@ export interface AgentInvokeParams {
|
|
|
28
29
|
sessionId?: string;
|
|
29
30
|
/** Optional name of the application triggering the agent in case of an app trigger */
|
|
30
31
|
appName?: string;
|
|
32
|
+
/** Internal flag to bypass session processing check for recursive calls */
|
|
33
|
+
bypassSessionCheck?: boolean;
|
|
31
34
|
}
|
|
32
|
-
|
|
33
|
-
export enum HistoryStepType {
|
|
34
|
-
APP_TRIGGER_NODE = 'appTriggerNode',
|
|
35
|
-
TRIGGER_NODE = 'triggerNode',
|
|
36
|
-
APP_ACTION_NODE = 'appActionNode',
|
|
37
|
-
CUSTOM_ACTION_NODE = 'customActionNode',
|
|
38
|
-
PROMPT_NODE = 'promptNode',
|
|
39
|
-
JUMP_TO_NODE = 'jumpToNode',
|
|
40
|
-
}
|
|
41
|
-
|
|
42
35
|
export interface HistoryStep {
|
|
43
|
-
type:
|
|
36
|
+
type: NodeType;
|
|
44
37
|
step: number;
|
|
45
38
|
raw: any;
|
|
46
39
|
nodeId: string;
|
|
@@ -49,21 +42,25 @@ export interface HistoryStep {
|
|
|
49
42
|
}
|
|
50
43
|
|
|
51
44
|
export interface AppTriggerHistoryStep extends HistoryStep {
|
|
52
|
-
type:
|
|
45
|
+
type: NodeType.TRIGGER;
|
|
53
46
|
appName: string;
|
|
54
47
|
}
|
|
55
48
|
|
|
56
49
|
export interface TriggerHistoryStep extends HistoryStep {
|
|
57
|
-
type:
|
|
50
|
+
type: NodeType.TRIGGER;
|
|
58
51
|
}
|
|
59
52
|
|
|
60
53
|
export interface AppActionInvocationHistoryStep extends HistoryStep {
|
|
61
|
-
type:
|
|
54
|
+
type: NodeType.APP_TOOL;
|
|
62
55
|
appName: string;
|
|
63
56
|
}
|
|
64
57
|
|
|
65
58
|
export interface CustomActionInvocationHistoryStep extends HistoryStep {
|
|
66
|
-
type:
|
|
59
|
+
type: NodeType.TOOL;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export interface JunctionHistoryStep extends HistoryStep {
|
|
63
|
+
type: NodeType.JUNCTION;
|
|
67
64
|
}
|
|
68
65
|
|
|
69
66
|
export enum SessionType {
|
|
@@ -29,7 +29,9 @@ export const createStateAnnotation = <Memory = any>() =>
|
|
|
29
29
|
default: () => [],
|
|
30
30
|
reducer: (a, b) => a.concat(b),
|
|
31
31
|
}),
|
|
32
|
-
sessionId: Annotation<string>(
|
|
32
|
+
sessionId: Annotation<string>({
|
|
33
|
+
reducer: (a, b) => b || a,
|
|
34
|
+
}),
|
|
33
35
|
sessionType: Annotation<SessionType>({
|
|
34
36
|
default: () => SessionType.TEXT,
|
|
35
37
|
reducer: (a, b) => b || a,
|
package/src/utils/logger.ts
CHANGED
|
@@ -99,10 +99,10 @@ export class VoiceSession {
|
|
|
99
99
|
},
|
|
100
100
|
...(this.voiceId
|
|
101
101
|
? {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
102
|
+
tts: {
|
|
103
|
+
voice_id: this.voiceId,
|
|
104
|
+
},
|
|
105
|
+
}
|
|
106
106
|
: {}),
|
|
107
107
|
} as ConversationInitiationClientData['conversation_config_override'],
|
|
108
108
|
};
|
|
@@ -134,7 +134,11 @@ export class VoiceSession {
|
|
|
134
134
|
}, data.ping_event.ping_ms);
|
|
135
135
|
break;
|
|
136
136
|
case 'user_transcript':
|
|
137
|
-
logger.debug({
|
|
137
|
+
logger.debug({
|
|
138
|
+
message: 'User transcript received',
|
|
139
|
+
sessionId: this.sessionId,
|
|
140
|
+
data: data.user_transcription_event.user_transcript,
|
|
141
|
+
});
|
|
138
142
|
if (this.onMessageCallback) {
|
|
139
143
|
this.onMessageCallback(
|
|
140
144
|
data.user_transcription_event.user_transcript,
|
|
@@ -189,7 +193,11 @@ export class VoiceSession {
|
|
|
189
193
|
break;
|
|
190
194
|
case 'agent_response_correction':
|
|
191
195
|
try {
|
|
192
|
-
logger.debug({
|
|
196
|
+
logger.debug({
|
|
197
|
+
message: 'Agent response correction received',
|
|
198
|
+
sessionId: this.sessionId,
|
|
199
|
+
data: data.agent_response_correction_event,
|
|
200
|
+
});
|
|
193
201
|
await this.updateAgentResponse(
|
|
194
202
|
data.agent_response_correction_event.original_agent_response,
|
|
195
203
|
data.agent_response_correction_event.corrected_agent_response,
|