@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.
Files changed (115) hide show
  1. package/dist/agent.d.ts +4 -1
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +96 -15
  4. package/dist/agent.js.map +1 -1
  5. package/dist/cli/index.js +12 -12
  6. package/dist/cli/index.js.map +1 -1
  7. package/dist/edges/createDirectEdge.js +1 -1
  8. package/dist/edges/createDirectEdge.js.map +1 -1
  9. package/dist/edges/createLogicalRouter.d.ts.map +1 -1
  10. package/dist/edges/createLogicalRouter.js +7 -7
  11. package/dist/edges/createLogicalRouter.js.map +1 -1
  12. package/dist/edges/createPromptRouter.d.ts.map +1 -1
  13. package/dist/edges/createPromptRouter.js +4 -3
  14. package/dist/edges/createPromptRouter.js.map +1 -1
  15. package/dist/edges/edgeFactory.js +2 -2
  16. package/dist/edges/edgeFactory.js.map +1 -1
  17. package/dist/index.d.ts +1 -1
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +1 -2
  20. package/dist/index.js.map +1 -1
  21. package/dist/interrupts/InterruptSessionManager.types.d.ts +36 -0
  22. package/dist/interrupts/InterruptSessionManager.types.d.ts.map +1 -0
  23. package/dist/interrupts/InterruptSessionManager.types.js +40 -0
  24. package/dist/interrupts/InterruptSessionManager.types.js.map +1 -0
  25. package/dist/interrupts/MemoryInterruptSessionManager.d.ts +14 -0
  26. package/dist/interrupts/MemoryInterruptSessionManager.d.ts.map +1 -0
  27. package/dist/interrupts/MemoryInterruptSessionManager.js +51 -0
  28. package/dist/interrupts/MemoryInterruptSessionManager.js.map +1 -0
  29. package/dist/interrupts/MindedInterruptSessionManager.d.ts +15 -0
  30. package/dist/interrupts/MindedInterruptSessionManager.d.ts.map +1 -0
  31. package/dist/interrupts/MindedInterruptSessionManager.js +121 -0
  32. package/dist/interrupts/MindedInterruptSessionManager.js.map +1 -0
  33. package/dist/interrupts/interruptSessionManagerFactory.d.ts +4 -0
  34. package/dist/interrupts/interruptSessionManagerFactory.d.ts.map +1 -0
  35. package/dist/interrupts/interruptSessionManagerFactory.js +22 -0
  36. package/dist/interrupts/interruptSessionManagerFactory.js.map +1 -0
  37. package/dist/nodes/addAppToolNode.d.ts.map +1 -1
  38. package/dist/nodes/addAppToolNode.js +3 -3
  39. package/dist/nodes/addAppToolNode.js.map +1 -1
  40. package/dist/nodes/addHumanInTheLoopNode.d.ts.map +1 -1
  41. package/dist/nodes/addHumanInTheLoopNode.js +3 -2
  42. package/dist/nodes/addHumanInTheLoopNode.js.map +1 -1
  43. package/dist/nodes/addJumpToNode.d.ts.map +1 -1
  44. package/dist/nodes/addJumpToNode.js +3 -3
  45. package/dist/nodes/addJumpToNode.js.map +1 -1
  46. package/dist/nodes/addJunctionNode.d.ts +7 -0
  47. package/dist/nodes/addJunctionNode.d.ts.map +1 -0
  48. package/dist/nodes/addJunctionNode.js +20 -0
  49. package/dist/nodes/addJunctionNode.js.map +1 -0
  50. package/dist/nodes/addPromptNode.d.ts.map +1 -1
  51. package/dist/nodes/addPromptNode.js +48 -3
  52. package/dist/nodes/addPromptNode.js.map +1 -1
  53. package/dist/nodes/addToolNode.d.ts.map +1 -1
  54. package/dist/nodes/addToolNode.js +3 -3
  55. package/dist/nodes/addToolNode.js.map +1 -1
  56. package/dist/nodes/addToolRunNode.d.ts.map +1 -1
  57. package/dist/nodes/addToolRunNode.js +1 -2
  58. package/dist/nodes/addToolRunNode.js.map +1 -1
  59. package/dist/nodes/addTriggerNode.d.ts.map +1 -1
  60. package/dist/nodes/addTriggerNode.js +2 -3
  61. package/dist/nodes/addTriggerNode.js.map +1 -1
  62. package/dist/nodes/nodeFactory.d.ts.map +1 -1
  63. package/dist/nodes/nodeFactory.js +2 -5
  64. package/dist/nodes/nodeFactory.js.map +1 -1
  65. package/dist/platform/mindedConnection.d.ts.map +1 -1
  66. package/dist/platform/mindedConnection.js +13 -13
  67. package/dist/platform/mindedConnection.js.map +1 -1
  68. package/dist/platform/mindedConnectionTypes.d.ts +82 -1
  69. package/dist/platform/mindedConnectionTypes.d.ts.map +1 -1
  70. package/dist/platform/mindedConnectionTypes.js +9 -0
  71. package/dist/platform/mindedConnectionTypes.js.map +1 -1
  72. package/dist/playbooks/playbooks.js +4 -4
  73. package/dist/playbooks/playbooks.js.map +1 -1
  74. package/dist/types/Agent.types.d.ts +11 -13
  75. package/dist/types/Agent.types.d.ts.map +1 -1
  76. package/dist/types/Agent.types.js +1 -10
  77. package/dist/types/Agent.types.js.map +1 -1
  78. package/dist/types/LangGraph.types.d.ts +2 -2
  79. package/dist/types/LangGraph.types.d.ts.map +1 -1
  80. package/dist/types/LangGraph.types.js +3 -1
  81. package/dist/types/LangGraph.types.js.map +1 -1
  82. package/dist/utils/logger.d.ts.map +1 -1
  83. package/dist/utils/logger.js +1 -0
  84. package/dist/utils/logger.js.map +1 -1
  85. package/dist/voice/voiceSession.d.ts.map +1 -1
  86. package/dist/voice/voiceSession.js +10 -2
  87. package/dist/voice/voiceSession.js.map +1 -1
  88. package/package.json +2 -2
  89. package/src/agent.ts +122 -24
  90. package/src/cli/index.ts +12 -12
  91. package/src/edges/createDirectEdge.ts +1 -1
  92. package/src/edges/createLogicalRouter.ts +7 -8
  93. package/src/edges/createPromptRouter.ts +4 -3
  94. package/src/edges/edgeFactory.ts +2 -2
  95. package/src/index.ts +0 -1
  96. package/src/interrupts/InterruptSessionManager.types.ts +80 -0
  97. package/src/interrupts/MemoryInterruptSessionManager.ts +56 -0
  98. package/src/interrupts/MindedInterruptSessionManager.ts +157 -0
  99. package/src/interrupts/interruptSessionManagerFactory.ts +20 -0
  100. package/src/nodes/addAppToolNode.ts +4 -4
  101. package/src/nodes/addHumanInTheLoopNode.ts +3 -2
  102. package/src/nodes/addJumpToNode.ts +4 -4
  103. package/src/nodes/addJunctionNode.ts +19 -0
  104. package/src/nodes/addPromptNode.ts +54 -8
  105. package/src/nodes/addToolNode.ts +3 -4
  106. package/src/nodes/addToolRunNode.ts +2 -3
  107. package/src/nodes/addTriggerNode.ts +4 -4
  108. package/src/nodes/nodeFactory.ts +2 -7
  109. package/src/platform/mindedConnection.ts +13 -13
  110. package/src/platform/mindedConnectionTypes.ts +100 -0
  111. package/src/playbooks/playbooks.ts +4 -4
  112. package/src/types/Agent.types.ts +12 -15
  113. package/src/types/LangGraph.types.ts +3 -1
  114. package/src/utils/logger.ts +1 -0
  115. package/src/voice/voiceSession.ts +14 -6
@@ -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: HistoryStepType.CUSTOM_ACTION_NODE,
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: HistoryStepType.CUSTOM_ACTION_NODE,
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, HistoryStepType } from '../types/Agent.types';
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: HistoryStepType.TRIGGER_NODE,
14
+ type: NodeType.TRIGGER,
15
15
  nodeId: node.name,
16
16
  nodeDisplayName: node.displayName,
17
17
  raw: '',
@@ -1,5 +1,4 @@
1
- import { RunnableLike } from '@langchain/core/runnables';
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 = 5000): Promise<R> => {
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({ msg: 'Server error:', 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
  }
@@ -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: HistoryStepType;
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: HistoryStepType.APP_TRIGGER_NODE;
45
+ type: NodeType.TRIGGER;
53
46
  appName: string;
54
47
  }
55
48
 
56
49
  export interface TriggerHistoryStep extends HistoryStep {
57
- type: HistoryStepType.TRIGGER_NODE;
50
+ type: NodeType.TRIGGER;
58
51
  }
59
52
 
60
53
  export interface AppActionInvocationHistoryStep extends HistoryStep {
61
- type: HistoryStepType.APP_ACTION_NODE;
54
+ type: NodeType.APP_TOOL;
62
55
  appName: string;
63
56
  }
64
57
 
65
58
  export interface CustomActionInvocationHistoryStep extends HistoryStep {
66
- type: HistoryStepType.CUSTOM_ACTION_NODE;
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,
@@ -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: {
@@ -99,10 +99,10 @@ export class VoiceSession {
99
99
  },
100
100
  ...(this.voiceId
101
101
  ? {
102
- tts: {
103
- voice_id: this.voiceId,
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({ message: 'User transcript received', sessionId: this.sessionId, data: data.user_transcription_event.user_transcript });
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({ message: 'Agent response correction received', sessionId: this.sessionId, data: data.agent_response_correction_event });
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,