@egain/ai-agent-sdk 0.1.0

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 (164) hide show
  1. package/README.md +295 -0
  2. package/dist/browser.js +22739 -0
  3. package/dist/core/AiAgent.d.ts +1126 -0
  4. package/dist/core/AiAgent.d.ts.map +1 -0
  5. package/dist/core/AiAgent.js +2037 -0
  6. package/dist/core/AiAgent.js.map +1 -0
  7. package/dist/core/api/ApiHelper.d.ts +433 -0
  8. package/dist/core/api/ApiHelper.d.ts.map +1 -0
  9. package/dist/core/api/ApiHelper.js +689 -0
  10. package/dist/core/api/ApiHelper.js.map +1 -0
  11. package/dist/core/api/CacheAdapter.d.ts +295 -0
  12. package/dist/core/api/CacheAdapter.d.ts.map +1 -0
  13. package/dist/core/api/CacheAdapter.js +298 -0
  14. package/dist/core/api/CacheAdapter.js.map +1 -0
  15. package/dist/core/auth/AnonymousAuthStrategy.d.ts +87 -0
  16. package/dist/core/auth/AnonymousAuthStrategy.d.ts.map +1 -0
  17. package/dist/core/auth/AnonymousAuthStrategy.js +257 -0
  18. package/dist/core/auth/AnonymousAuthStrategy.js.map +1 -0
  19. package/dist/core/auth/AuthProvider.d.ts +13 -0
  20. package/dist/core/auth/AuthProvider.d.ts.map +1 -0
  21. package/dist/core/auth/AuthProvider.js +2 -0
  22. package/dist/core/auth/AuthProvider.js.map +1 -0
  23. package/dist/core/auth/AuthStrategy.d.ts +74 -0
  24. package/dist/core/auth/AuthStrategy.d.ts.map +1 -0
  25. package/dist/core/auth/AuthStrategy.js +2 -0
  26. package/dist/core/auth/AuthStrategy.js.map +1 -0
  27. package/dist/core/auth/AuthenticationService.d.ts +226 -0
  28. package/dist/core/auth/AuthenticationService.d.ts.map +1 -0
  29. package/dist/core/auth/AuthenticationService.js +344 -0
  30. package/dist/core/auth/AuthenticationService.js.map +1 -0
  31. package/dist/core/auth/ClientCredentialsAuthStrategy.d.ts +62 -0
  32. package/dist/core/auth/ClientCredentialsAuthStrategy.d.ts.map +1 -0
  33. package/dist/core/auth/ClientCredentialsAuthStrategy.js +78 -0
  34. package/dist/core/auth/ClientCredentialsAuthStrategy.js.map +1 -0
  35. package/dist/core/auth/PKCEAuthStrategy.d.ts +136 -0
  36. package/dist/core/auth/PKCEAuthStrategy.d.ts.map +1 -0
  37. package/dist/core/auth/PKCEAuthStrategy.js +409 -0
  38. package/dist/core/auth/PKCEAuthStrategy.js.map +1 -0
  39. package/dist/core/auth/PreAuthStrategy.d.ts +101 -0
  40. package/dist/core/auth/PreAuthStrategy.d.ts.map +1 -0
  41. package/dist/core/auth/PreAuthStrategy.js +216 -0
  42. package/dist/core/auth/PreAuthStrategy.js.map +1 -0
  43. package/dist/core/auth/msal-browser.js +19683 -0
  44. package/dist/core/auth/msal-loader.d.ts +14 -0
  45. package/dist/core/auth/msal-loader.d.ts.map +1 -0
  46. package/dist/core/auth/msal-loader.js +43 -0
  47. package/dist/core/auth/msal-loader.js.map +1 -0
  48. package/dist/core/connection/Connection.d.ts +168 -0
  49. package/dist/core/connection/Connection.d.ts.map +1 -0
  50. package/dist/core/connection/Connection.js +290 -0
  51. package/dist/core/connection/Connection.js.map +1 -0
  52. package/dist/core/connection/ConnectionState.d.ts +11 -0
  53. package/dist/core/connection/ConnectionState.d.ts.map +1 -0
  54. package/dist/core/connection/ConnectionState.js +12 -0
  55. package/dist/core/connection/ConnectionState.js.map +1 -0
  56. package/dist/core/connection/Transport.d.ts +98 -0
  57. package/dist/core/connection/Transport.d.ts.map +1 -0
  58. package/dist/core/connection/Transport.js +27 -0
  59. package/dist/core/connection/Transport.js.map +1 -0
  60. package/dist/core/connection/WebSocketTransport.d.ts +65 -0
  61. package/dist/core/connection/WebSocketTransport.d.ts.map +1 -0
  62. package/dist/core/connection/WebSocketTransport.js +177 -0
  63. package/dist/core/connection/WebSocketTransport.js.map +1 -0
  64. package/dist/core/errors/SDKError.d.ts +27 -0
  65. package/dist/core/errors/SDKError.d.ts.map +1 -0
  66. package/dist/core/errors/SDKError.js +43 -0
  67. package/dist/core/errors/SDKError.js.map +1 -0
  68. package/dist/core/events/EventEmitter.d.ts +120 -0
  69. package/dist/core/events/EventEmitter.d.ts.map +1 -0
  70. package/dist/core/events/EventEmitter.js +183 -0
  71. package/dist/core/events/EventEmitter.js.map +1 -0
  72. package/dist/core/logging/LogLevel.d.ts +33 -0
  73. package/dist/core/logging/LogLevel.d.ts.map +1 -0
  74. package/dist/core/logging/LogLevel.js +40 -0
  75. package/dist/core/logging/LogLevel.js.map +1 -0
  76. package/dist/core/logging/Logger.d.ts +120 -0
  77. package/dist/core/logging/Logger.d.ts.map +1 -0
  78. package/dist/core/logging/Logger.js +204 -0
  79. package/dist/core/logging/Logger.js.map +1 -0
  80. package/dist/core/logging/globalLogger.d.ts +8 -0
  81. package/dist/core/logging/globalLogger.d.ts.map +1 -0
  82. package/dist/core/logging/globalLogger.js +12 -0
  83. package/dist/core/logging/globalLogger.js.map +1 -0
  84. package/dist/core/logging/types.d.ts +45 -0
  85. package/dist/core/logging/types.d.ts.map +1 -0
  86. package/dist/core/logging/types.js +2 -0
  87. package/dist/core/logging/types.js.map +1 -0
  88. package/dist/core/message/BaseMessageHandler.d.ts +208 -0
  89. package/dist/core/message/BaseMessageHandler.d.ts.map +1 -0
  90. package/dist/core/message/BaseMessageHandler.js +155 -0
  91. package/dist/core/message/BaseMessageHandler.js.map +1 -0
  92. package/dist/core/message/Message.d.ts +69 -0
  93. package/dist/core/message/Message.d.ts.map +1 -0
  94. package/dist/core/message/Message.js +131 -0
  95. package/dist/core/message/Message.js.map +1 -0
  96. package/dist/core/message/MessageProcessor.d.ts +51 -0
  97. package/dist/core/message/MessageProcessor.d.ts.map +1 -0
  98. package/dist/core/message/MessageProcessor.js +123 -0
  99. package/dist/core/message/MessageProcessor.js.map +1 -0
  100. package/dist/core/message/MessageTypes.d.ts +123 -0
  101. package/dist/core/message/MessageTypes.d.ts.map +1 -0
  102. package/dist/core/message/MessageTypes.js +106 -0
  103. package/dist/core/message/MessageTypes.js.map +1 -0
  104. package/dist/core/message/Transcript.d.ts +373 -0
  105. package/dist/core/message/Transcript.d.ts.map +1 -0
  106. package/dist/core/message/Transcript.js +355 -0
  107. package/dist/core/message/Transcript.js.map +1 -0
  108. package/dist/core/message/handlers/AgentMessageHandler.d.ts +26 -0
  109. package/dist/core/message/handlers/AgentMessageHandler.d.ts.map +1 -0
  110. package/dist/core/message/handlers/AgentMessageHandler.js +130 -0
  111. package/dist/core/message/handlers/AgentMessageHandler.js.map +1 -0
  112. package/dist/core/message/handlers/ChatHistoryHandler.d.ts +12 -0
  113. package/dist/core/message/handlers/ChatHistoryHandler.d.ts.map +1 -0
  114. package/dist/core/message/handlers/ChatHistoryHandler.js +49 -0
  115. package/dist/core/message/handlers/ChatHistoryHandler.js.map +1 -0
  116. package/dist/core/message/handlers/ErrorMessageHandler.d.ts +12 -0
  117. package/dist/core/message/handlers/ErrorMessageHandler.d.ts.map +1 -0
  118. package/dist/core/message/handlers/ErrorMessageHandler.js +49 -0
  119. package/dist/core/message/handlers/ErrorMessageHandler.js.map +1 -0
  120. package/dist/core/message/handlers/HeartbeatHandler.d.ts +12 -0
  121. package/dist/core/message/handlers/HeartbeatHandler.d.ts.map +1 -0
  122. package/dist/core/message/handlers/HeartbeatHandler.js +46 -0
  123. package/dist/core/message/handlers/HeartbeatHandler.js.map +1 -0
  124. package/dist/core/message/handlers/TokenRefreshHandler.d.ts +30 -0
  125. package/dist/core/message/handlers/TokenRefreshHandler.d.ts.map +1 -0
  126. package/dist/core/message/handlers/TokenRefreshHandler.js +84 -0
  127. package/dist/core/message/handlers/TokenRefreshHandler.js.map +1 -0
  128. package/dist/core/message/types.d.ts +107 -0
  129. package/dist/core/message/types.d.ts.map +1 -0
  130. package/dist/core/message/types.js +30 -0
  131. package/dist/core/message/types.js.map +1 -0
  132. package/dist/core/platform/HookContract.d.ts +112 -0
  133. package/dist/core/platform/HookContract.d.ts.map +1 -0
  134. package/dist/core/platform/HookContract.js +13 -0
  135. package/dist/core/platform/HookContract.js.map +1 -0
  136. package/dist/core/platform/PlatformComponentService.d.ts +40 -0
  137. package/dist/core/platform/PlatformComponentService.d.ts.map +1 -0
  138. package/dist/core/platform/PlatformComponentService.js +12 -0
  139. package/dist/core/platform/PlatformComponentService.js.map +1 -0
  140. package/dist/core/platform/PlatformScriptLoader.d.ts +41 -0
  141. package/dist/core/platform/PlatformScriptLoader.d.ts.map +1 -0
  142. package/dist/core/platform/PlatformScriptLoader.js +110 -0
  143. package/dist/core/platform/PlatformScriptLoader.js.map +1 -0
  144. package/dist/core/polyfills.d.ts +16 -0
  145. package/dist/core/polyfills.d.ts.map +1 -0
  146. package/dist/core/polyfills.js +168 -0
  147. package/dist/core/polyfills.js.map +1 -0
  148. package/dist/core/portal-initializer/PortalInitializer.d.ts +234 -0
  149. package/dist/core/portal-initializer/PortalInitializer.d.ts.map +1 -0
  150. package/dist/core/portal-initializer/PortalInitializer.js +636 -0
  151. package/dist/core/portal-initializer/PortalInitializer.js.map +1 -0
  152. package/dist/core/queue/MessageQueue.d.ts +277 -0
  153. package/dist/core/queue/MessageQueue.d.ts.map +1 -0
  154. package/dist/core/queue/MessageQueue.js +291 -0
  155. package/dist/core/queue/MessageQueue.js.map +1 -0
  156. package/dist/core/types/PortalTypes.d.ts +51 -0
  157. package/dist/core/types/PortalTypes.d.ts.map +1 -0
  158. package/dist/core/types/PortalTypes.js +8 -0
  159. package/dist/core/types/PortalTypes.js.map +1 -0
  160. package/dist/index.d.ts +91 -0
  161. package/dist/index.d.ts.map +1 -0
  162. package/dist/index.js +82 -0
  163. package/dist/index.js.map +1 -0
  164. package/package.json +84 -0
@@ -0,0 +1,355 @@
1
+ /**
2
+ * # Transcript
3
+ *
4
+ * The Transcript feature automatically records all messages sent and received
5
+ * during a conversation, providing a complete history for display, debugging,
6
+ * or analytics.
7
+ *
8
+ * ## Overview
9
+ *
10
+ * Transcript is enabled by default and automatically captures:
11
+ * - Customer messages (sent)
12
+ * - Agent responses (received)
13
+ * - System messages
14
+ * - Context messages
15
+ *
16
+ * ## Quick Start
17
+ *
18
+ * Access the transcript through the agent instance:
19
+ *
20
+ * ```typescript
21
+ * // Get all transcript entries
22
+ * const entries = agent.getTranscript();
23
+ *
24
+ * // Get as JSON (for display or storage)
25
+ * const json = agent.getTranscriptAsJSON();
26
+ *
27
+ * // Get transcript size
28
+ * const count = agent.getTranscriptSize();
29
+ *
30
+ * // Clear transcript
31
+ * agent.clearTranscript();
32
+ * ```
33
+ *
34
+ * ## Configuration
35
+ *
36
+ * Configure transcript behavior when creating the agent:
37
+ *
38
+ * ```typescript
39
+ * const agent = new AiAgent({
40
+ * id: "agent-id",
41
+ * endpoint: "https://your-endpoint.com",
42
+ * transcriptConfig: {
43
+ * enabled: true, // Enable/disable transcript
44
+ * excludeRoles: ["heartbeat"], // Exclude heartbeat messages
45
+ * excludePersonas: ["system"] // Exclude system messages
46
+ * }
47
+ * });
48
+ * ```
49
+ *
50
+ * ## Filtering Entries
51
+ *
52
+ * Retrieve filtered transcript entries:
53
+ *
54
+ * ```typescript
55
+ * // Get only received messages
56
+ * const received = agent.getTranscript({ direction: 'received' });
57
+ *
58
+ * // Get messages from a specific time range
59
+ * const recent = agent.getTranscript({
60
+ * fromTimestamp: Date.now() - 3600000 // Last hour
61
+ * });
62
+ *
63
+ * // Get only agent messages
64
+ * const agentMessages = agent.getTranscript({ persona: 'agent' });
65
+ * ```
66
+ *
67
+ * ## Transcript Events
68
+ *
69
+ * Listen for transcript updates in real-time:
70
+ *
71
+ * ```typescript
72
+ * agent.on('transcriptUpdate', (event) => {
73
+ * const { entry } = event.payload;
74
+ * console.log(`${entry.direction}: ${entry.message.content}`);
75
+ * });
76
+ * ```
77
+ *
78
+ * ## Use Cases
79
+ *
80
+ * - **Chat UI**: Display conversation history
81
+ * - **Analytics**: Track conversation patterns
82
+ * - **Debugging**: Review message flow
83
+ * - **Persistence**: Save conversations to database
84
+ *
85
+ * @module Transcript
86
+ * @category Features
87
+ */
88
+ /**
89
+ * Transcript storage class for managing conversation history.
90
+ *
91
+ * The Transcript class provides a complete record of all messages
92
+ * exchanged during a conversation. It supports filtering, JSON export,
93
+ * and real-time updates.
94
+ *
95
+ * @example Basic usage
96
+ * ```typescript
97
+ * const transcript = new Transcript();
98
+ *
99
+ * // Add a message
100
+ * transcript.add(message, 'sent', sessionId, agentId);
101
+ *
102
+ * // Get all entries
103
+ * const entries = transcript.getEntries();
104
+ *
105
+ * // Get as JSON for storage
106
+ * const json = transcript.getEntriesAsJSON();
107
+ *
108
+ * // Get entry count
109
+ * console.log(`${transcript.size()} messages`);
110
+ *
111
+ * // Clear all entries
112
+ * transcript.clear();
113
+ * ```
114
+ *
115
+ * @example With configuration
116
+ * ```typescript
117
+ * const transcript = new Transcript({
118
+ * enabled: true,
119
+ * excludeRoles: ['heartbeat'], // Don't record heartbeats
120
+ * });
121
+ * ```
122
+ *
123
+ * @example Filtering entries
124
+ * ```typescript
125
+ * // Get only agent responses
126
+ * const agentResponses = transcript.getEntries({
127
+ * direction: 'received',
128
+ * persona: 'agent'
129
+ * });
130
+ *
131
+ * // Get messages from the last 5 minutes
132
+ * const recentMessages = transcript.getEntries({
133
+ * fromTimestamp: Date.now() - 300000
134
+ * });
135
+ * ```
136
+ *
137
+ * @category Features
138
+ * @group Transcript
139
+ */
140
+ export class Transcript {
141
+ /**
142
+ * Create a new Transcript instance
143
+ * @param config - Optional configuration for filtering
144
+ */
145
+ constructor(config = {}) {
146
+ this.entries = [];
147
+ this.config = {
148
+ enabled: config.enabled ?? true,
149
+ includeMessageTypes: config.includeMessageTypes ?? [],
150
+ excludeRoles: config.excludeRoles ?? [],
151
+ excludePersonas: config.excludePersonas ?? [],
152
+ };
153
+ }
154
+ /**
155
+ * Add a message to the transcript.
156
+ *
157
+ * Messages are automatically filtered based on configuration.
158
+ * If the transcript is disabled or the message matches an exclude filter,
159
+ * it will not be recorded.
160
+ *
161
+ * @param message - The message to add
162
+ * @param direction - Whether the message was 'sent' or 'received'
163
+ * @param sessionId - Optional session ID for context
164
+ * @param agentId - Optional agent ID for context
165
+ *
166
+ * @example
167
+ * ```typescript
168
+ * transcript.add(
169
+ * new Message('customer', 'human', 'Hello!'),
170
+ * 'sent',
171
+ * 'session-123',
172
+ * 'agent-456'
173
+ * );
174
+ * ```
175
+ */
176
+ add(message, direction, sessionId, agentId) {
177
+ if (!this.config.enabled) {
178
+ return;
179
+ }
180
+ // Check if message should be filtered out
181
+ if (!this.shouldInclude(message)) {
182
+ return;
183
+ }
184
+ const entry = {
185
+ message,
186
+ direction,
187
+ timestamp: message.timestamp || Date.now(),
188
+ sessionId,
189
+ agentId,
190
+ };
191
+ this.entries.push(entry);
192
+ }
193
+ /**
194
+ * Get transcript entries, optionally filtered.
195
+ *
196
+ * @param options - Optional filtering options
197
+ * @returns Array of transcript entries matching the filter
198
+ *
199
+ * @example
200
+ * ```typescript
201
+ * // Get all entries
202
+ * const all = transcript.getEntries();
203
+ *
204
+ * // Get only sent messages
205
+ * const sent = transcript.getEntries({ direction: 'sent' });
206
+ *
207
+ * // Get messages from last hour
208
+ * const recent = transcript.getEntries({
209
+ * fromTimestamp: Date.now() - 3600000
210
+ * });
211
+ * ```
212
+ */
213
+ getEntries(options) {
214
+ let filtered = [...this.entries];
215
+ if (options) {
216
+ // Filter by timestamp range
217
+ if (options.fromTimestamp !== undefined) {
218
+ filtered = filtered.filter((entry) => entry.timestamp >= options.fromTimestamp);
219
+ }
220
+ if (options.toTimestamp !== undefined) {
221
+ filtered = filtered.filter((entry) => entry.timestamp <= options.toTimestamp);
222
+ }
223
+ // Filter by direction
224
+ if (options.direction && options.direction !== 'both') {
225
+ filtered = filtered.filter((entry) => entry.direction === options.direction);
226
+ }
227
+ // Filter by persona
228
+ if (options.persona) {
229
+ filtered = filtered.filter((entry) => entry.message.persona === options.persona);
230
+ }
231
+ // Filter by role
232
+ if (options.role) {
233
+ filtered = filtered.filter((entry) => entry.message.role === options.role);
234
+ }
235
+ }
236
+ return filtered;
237
+ }
238
+ /**
239
+ * Get transcript entries as plain JSON-serializable objects.
240
+ *
241
+ * Useful for storing transcripts in databases, sending to APIs,
242
+ * or displaying in UI components.
243
+ *
244
+ * @param options - Optional filtering options
245
+ * @returns Array of plain objects representing transcript entries
246
+ *
247
+ * @example
248
+ * ```typescript
249
+ * const json = transcript.getEntriesAsJSON();
250
+ *
251
+ * // Each entry includes:
252
+ * // {
253
+ * // messageId, persona, role, content, messageData,
254
+ * // timestamp, from, to, agentId, sessionId,
255
+ * // direction, entryTimestamp
256
+ * // }
257
+ *
258
+ * // Save to database
259
+ * await db.saveTranscript(json);
260
+ * ```
261
+ */
262
+ getEntriesAsJSON(options) {
263
+ const entries = this.getEntries(options);
264
+ return entries.map((entry) => ({
265
+ messageId: entry.message.messageId,
266
+ persona: entry.message.persona,
267
+ role: entry.message.role,
268
+ content: entry.message.content,
269
+ messageData: entry.message.messageData,
270
+ timestamp: entry.message.timestamp,
271
+ from: entry.message.from,
272
+ to: entry.message.to,
273
+ agentId: entry.agentId ?? entry.message.agentId,
274
+ sessionId: entry.sessionId ?? entry.message.sessionId,
275
+ direction: entry.direction,
276
+ entryTimestamp: entry.timestamp,
277
+ }));
278
+ }
279
+ /**
280
+ * Get the number of entries in the transcript.
281
+ * @returns Number of recorded messages
282
+ */
283
+ size() {
284
+ return this.entries.length;
285
+ }
286
+ /**
287
+ * Clear all transcript entries.
288
+ *
289
+ * This removes all recorded messages. Use with caution as
290
+ * this action cannot be undone.
291
+ */
292
+ clear() {
293
+ this.entries = [];
294
+ }
295
+ /**
296
+ * Check if a message should be included based on configuration filters
297
+ * @param message - The message to check
298
+ * @returns True if message should be included
299
+ */
300
+ shouldInclude(message) {
301
+ // Check exclude roles
302
+ if (this.config.excludeRoles.length > 0) {
303
+ if (this.config.excludeRoles.includes(message.role)) {
304
+ return false;
305
+ }
306
+ }
307
+ // Check exclude personas
308
+ if (this.config.excludePersonas.length > 0) {
309
+ if (this.config.excludePersonas.includes(message.persona)) {
310
+ return false;
311
+ }
312
+ }
313
+ // If includeMessageTypes is specified, check if message type matches
314
+ // Note: This is a simplified check. In a real implementation, you might
315
+ // want to map message persona/role combinations to message types
316
+ if (this.config.includeMessageTypes.length > 0) {
317
+ // For now, we'll include all messages if includeMessageTypes is specified
318
+ // This can be enhanced to map persona/role to message types
319
+ // For example: agent + human = 'agent_message', customer + human = 'customer_message'
320
+ }
321
+ return true;
322
+ }
323
+ /**
324
+ * Update transcript configuration at runtime.
325
+ *
326
+ * @param config - New configuration options (partial update)
327
+ *
328
+ * @example
329
+ * ```typescript
330
+ * // Disable transcript temporarily
331
+ * transcript.updateConfig({ enabled: false });
332
+ *
333
+ * // Re-enable with new exclusions
334
+ * transcript.updateConfig({
335
+ * enabled: true,
336
+ * excludeRoles: ['heartbeat', 'token']
337
+ * });
338
+ * ```
339
+ */
340
+ updateConfig(config) {
341
+ if (config.enabled !== undefined) {
342
+ this.config.enabled = config.enabled;
343
+ }
344
+ if (config.includeMessageTypes !== undefined) {
345
+ this.config.includeMessageTypes = config.includeMessageTypes;
346
+ }
347
+ if (config.excludeRoles !== undefined) {
348
+ this.config.excludeRoles = config.excludeRoles;
349
+ }
350
+ if (config.excludePersonas !== undefined) {
351
+ this.config.excludePersonas = config.excludePersonas;
352
+ }
353
+ }
354
+ }
355
+ //# sourceMappingURL=Transcript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Transcript.js","sourceRoot":"","sources":["../../../src/core/message/Transcript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { BaseMessageHandler } from '../BaseMessageHandler.js';
2
+ import { Message } from '../Message.js';
3
+ import { MessageHandlerResult } from '../types.js';
4
+ /**
5
+ * Handler for agent messages (main chat responses)
6
+ * Processes agent messages and extracts follow-up options, escalation data, sources, and reasoning
7
+ */
8
+ export declare class AgentMessageHandler extends BaseMessageHandler {
9
+ canHandle(message: Message): boolean;
10
+ handle(message: Message): MessageHandlerResult;
11
+ /**
12
+ * Checks if message has follow-up question options
13
+ * Only processes messages with role "follow up question agent"
14
+ */
15
+ private hasFollowUpOptions;
16
+ /**
17
+ * Processes escalation data from an agent message
18
+ * Handles both live escalations (transfer to human agent) and alternate engagement options
19
+ */
20
+ private processEscalation;
21
+ /**
22
+ * Builds an array of alternate engagement options based on escalation configuration
23
+ */
24
+ private buildEscalationOptions;
25
+ }
26
+ //# sourceMappingURL=AgentMessageHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentMessageHandler.d.ts","sourceRoot":"","sources":["../../../../src/core/message/handlers/AgentMessageHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,kBAAkB;IACzD,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAIpC,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB;IAqD9C;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAqCzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;CAyC/B"}
@@ -0,0 +1,130 @@
1
+ import { BaseMessageHandler } from '../BaseMessageHandler.js';
2
+ import { PERSONA, ROLE } from '../types.js';
3
+ /**
4
+ * Handler for agent messages (main chat responses)
5
+ * Processes agent messages and extracts follow-up options, escalation data, sources, and reasoning
6
+ */
7
+ export class AgentMessageHandler extends BaseMessageHandler {
8
+ canHandle(message) {
9
+ return message.persona === PERSONA.AGENT;
10
+ }
11
+ handle(message) {
12
+ // Extract sessionId and agentId from messageData if available
13
+ const sessionId = message.sessionId;
14
+ const agentId = message.agentId;
15
+ // Build from object - agent is the sender
16
+ const from = {
17
+ name: message.from || 'AI Agent',
18
+ isAi: true,
19
+ };
20
+ // Build to object - customer is the recipient
21
+ const to = {
22
+ name: message.to || 'Customer',
23
+ isAi: false,
24
+ };
25
+ // Process escalation scenarios
26
+ const escalationResult = this.processEscalation(message);
27
+ // Check if there are follow-up options
28
+ const hasFollowUpOptions = this.hasFollowUpOptions(message);
29
+ // Build message object with persona, role, content, raw data, and additional fields
30
+ const messageObj = {
31
+ persona: message.persona,
32
+ role: message.role,
33
+ content: message.content,
34
+ raw: message.messageData || {},
35
+ ...(escalationResult.escalationType && { escalationType: escalationResult.escalationType }),
36
+ ...(escalationResult.escalationData && { escalationData: escalationResult.escalationData }),
37
+ ...(message.messageData?.sources && { sources: message.messageData.sources }),
38
+ ...(message.messageData?.reasoning && { reasoning: message.messageData.reasoning }),
39
+ ...(escalationResult.isEscalation !== undefined && { showReasoning: escalationResult.isEscalation }),
40
+ ...(message.role === ROLE.CUSTOMER_SUPPORT && { showFeedback: true }),
41
+ ...(hasFollowUpOptions && { showOptions: true }),
42
+ };
43
+ // Build result in the required format
44
+ const result = {
45
+ type: 'agent_message',
46
+ messageId: message.messageId,
47
+ timestamp: message.timestamp || Date.now(),
48
+ sessionId: sessionId,
49
+ agentId: agentId,
50
+ from: from,
51
+ to: to,
52
+ message: messageObj,
53
+ };
54
+ return result;
55
+ }
56
+ /**
57
+ * Checks if message has follow-up question options
58
+ * Only processes messages with role "follow up question agent"
59
+ */
60
+ hasFollowUpOptions(message) {
61
+ if (message.role !== ROLE.FOLLOW_UP_QUESTION) {
62
+ return false;
63
+ }
64
+ const options = message.messageData?.options;
65
+ return !!(options && Array.isArray(options) && options.length > 0);
66
+ }
67
+ /**
68
+ * Processes escalation data from an agent message
69
+ * Handles both live escalations (transfer to human agent) and alternate engagement options
70
+ */
71
+ processEscalation(message) {
72
+ const isEscalation = !!message.messageData?.escalation;
73
+ const escalationData = message.messageData?.escalationData;
74
+ const result = {
75
+ isEscalation,
76
+ escalationType: null,
77
+ escalationData: undefined,
78
+ };
79
+ if (!isEscalation || !escalationData) {
80
+ return result;
81
+ }
82
+ // Check for live escalation
83
+ if (escalationData.live) {
84
+ result.escalationType = 'live';
85
+ result.escalationData = escalationData;
86
+ return result;
87
+ }
88
+ // Build alternate engagement options
89
+ const escalationOptions = this.buildEscalationOptions(escalationData);
90
+ if (escalationOptions.length > 0) {
91
+ result.escalationType = 'alternate';
92
+ result.escalationData = {
93
+ ...escalationData,
94
+ options: escalationOptions,
95
+ };
96
+ }
97
+ return result;
98
+ }
99
+ /**
100
+ * Builds an array of alternate engagement options based on escalation configuration
101
+ */
102
+ buildEscalationOptions(escalationData) {
103
+ const options = [];
104
+ if (escalationData.phone) {
105
+ options.push({
106
+ label: 'EG_CALL',
107
+ type: 'phone',
108
+ value: escalationData.phoneNumber,
109
+ icon: 'icon_phone_call_svg',
110
+ });
111
+ }
112
+ if (escalationData.sms) {
113
+ options.push({
114
+ label: 'EG_ALT_CONTACT_SMS',
115
+ type: 'sms',
116
+ value: escalationData.smsNumber,
117
+ icon: 'icon_messaging',
118
+ });
119
+ }
120
+ if (escalationData.email) {
121
+ options.push({
122
+ label: 'EG_EMAIL',
123
+ type: 'email',
124
+ icon: 'icon_email_svg',
125
+ });
126
+ }
127
+ return options;
128
+ }
129
+ }
130
+ //# sourceMappingURL=AgentMessageHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentMessageHandler.js","sourceRoot":"","sources":["../../../../src/core/message/handlers/AgentMessageHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { BaseMessageHandler } from '../BaseMessageHandler.js';
2
+ import { Message } from '../Message.js';
3
+ import { MessageHandlerResult } from '../types.js';
4
+ /**
5
+ * Handler for chat history messages
6
+ * Processes system messages containing chat history data
7
+ */
8
+ export declare class ChatHistoryHandler extends BaseMessageHandler {
9
+ canHandle(message: Message): boolean;
10
+ handle(message: Message): MessageHandlerResult;
11
+ }
12
+ //# sourceMappingURL=ChatHistoryHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatHistoryHandler.d.ts","sourceRoot":"","sources":["../../../../src/core/message/handlers/ChatHistoryHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,kBAAkB;IACxD,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAOpC,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB;CAyC/C"}
@@ -0,0 +1,49 @@
1
+ import { BaseMessageHandler } from '../BaseMessageHandler.js';
2
+ import { PERSONA, ROLE } from '../types.js';
3
+ /**
4
+ * Handler for chat history messages
5
+ * Processes system messages containing chat history data
6
+ */
7
+ export class ChatHistoryHandler extends BaseMessageHandler {
8
+ canHandle(message) {
9
+ return (message.persona === PERSONA.SYSTEM &&
10
+ message.role === ROLE.CHAT_HISTORY);
11
+ }
12
+ handle(message) {
13
+ const sessionId = message.sessionId;
14
+ const agentId = message.agentId;
15
+ const chatHistory = message.messageData?.chat_history;
16
+ // Build from object - system is the sender
17
+ const from = {
18
+ name: message.from || 'System',
19
+ isAi: false,
20
+ };
21
+ // Build to object - customer is the recipient
22
+ const to = {
23
+ name: message.to || 'Customer',
24
+ isAi: false,
25
+ };
26
+ // Build message object with persona, role, content, raw data, and chat history
27
+ const messageObj = {
28
+ persona: message.persona,
29
+ role: message.role,
30
+ content: message.content,
31
+ raw: message.messageData || {},
32
+ ...(chatHistory && { chatHistory }),
33
+ };
34
+ // Build result in the required format
35
+ const result = {
36
+ type: 'chat_history_processed',
37
+ messageId: message.messageId,
38
+ timestamp: message.timestamp || Date.now(),
39
+ sessionId: sessionId,
40
+ agentId: agentId,
41
+ from: from,
42
+ to: to,
43
+ message: messageObj,
44
+ hasHistory: !!chatHistory,
45
+ };
46
+ return result;
47
+ }
48
+ }
49
+ //# sourceMappingURL=ChatHistoryHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatHistoryHandler.js","sourceRoot":"","sources":["../../../../src/core/message/handlers/ChatHistoryHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAE5C;;;GAGG;AACH,MAAM,OAAO,kBAAmB,SAAQ,kBAAkB;IACxD,SAAS,CAAC,OAAgB;QACxB,OAAO,CACL,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM;YAClC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CACnC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,OAAgB;QACrB,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACpC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC;QAEtD,2CAA2C;QAC3C,MAAM,IAAI,GAAG;YACX,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,QAAQ;YAC9B,IAAI,EAAE,KAAK;SACZ,CAAC;QAEF,8CAA8C;QAC9C,MAAM,EAAE,GAAG;YACT,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,UAAU;YAC9B,IAAI,EAAE,KAAK;SACZ,CAAC;QAEF,+EAA+E;QAC/E,MAAM,UAAU,GAAG;YACjB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,GAAG,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;YAC9B,GAAG,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,CAAC;SACpC,CAAC;QAEF,sCAAsC;QACtC,MAAM,MAAM,GAAyB;YACnC,IAAI,EAAE,wBAAwB;YAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE;YAC1C,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,IAAI;YACV,EAAE,EAAE,EAAE;YACN,OAAO,EAAE,UAAU;YACnB,UAAU,EAAE,CAAC,CAAC,WAAW;SAC1B,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import { BaseMessageHandler } from '../BaseMessageHandler.js';
2
+ import { Message } from '../Message.js';
3
+ import { MessageHandlerResult } from '../types.js';
4
+ /**
5
+ * Handler for error messages
6
+ * Processes metadata error messages indicating an error occurred
7
+ */
8
+ export declare class ErrorMessageHandler extends BaseMessageHandler {
9
+ canHandle(message: Message): boolean;
10
+ handle(message: Message): MessageHandlerResult;
11
+ }
12
+ //# sourceMappingURL=ErrorMessageHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorMessageHandler.d.ts","sourceRoot":"","sources":["../../../../src/core/message/handlers/ErrorMessageHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,kBAAkB;IACzD,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAOpC,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB;CAyC/C"}
@@ -0,0 +1,49 @@
1
+ import { BaseMessageHandler } from '../BaseMessageHandler.js';
2
+ import { PERSONA, ROLE } from '../types.js';
3
+ /**
4
+ * Handler for error messages
5
+ * Processes metadata error messages indicating an error occurred
6
+ */
7
+ export class ErrorMessageHandler extends BaseMessageHandler {
8
+ canHandle(message) {
9
+ return (message.persona === PERSONA.METADATA &&
10
+ message.role === ROLE.ERROR);
11
+ }
12
+ handle(message) {
13
+ const sessionId = message.sessionId;
14
+ const agentId = message.agentId;
15
+ const errorCode = message.messageData?.error_code;
16
+ // Build from object - metadata/system is the sender
17
+ const from = {
18
+ name: message.from || 'System',
19
+ isAi: false,
20
+ };
21
+ // Build to object - customer/client is the recipient
22
+ const to = {
23
+ name: message.to || 'Client',
24
+ isAi: false,
25
+ };
26
+ // Build message object with persona, role, content, and raw data
27
+ const messageObj = {
28
+ persona: message.persona,
29
+ role: message.role,
30
+ content: message.content,
31
+ raw: message.messageData || {},
32
+ ...(errorCode && { errorCode }),
33
+ };
34
+ // Build result in the required format
35
+ const result = {
36
+ type: 'error_message',
37
+ messageId: message.messageId,
38
+ timestamp: message.timestamp || Date.now(),
39
+ sessionId: sessionId,
40
+ agentId: agentId,
41
+ from: from,
42
+ to: to,
43
+ message: messageObj,
44
+ errorCode,
45
+ };
46
+ return result;
47
+ }
48
+ }
49
+ //# sourceMappingURL=ErrorMessageHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorMessageHandler.js","sourceRoot":"","sources":["../../../../src/core/message/handlers/ErrorMessageHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAE5C;;;GAGG;AACH,MAAM,OAAO,mBAAoB,SAAQ,kBAAkB;IACzD,SAAS,CAAC,OAAgB;QACxB,OAAO,CACL,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,QAAQ;YACpC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAC5B,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,OAAgB;QACrB,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACpC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC;QAElD,oDAAoD;QACpD,MAAM,IAAI,GAAG;YACX,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,QAAQ;YAC9B,IAAI,EAAE,KAAK;SACZ,CAAC;QAEF,qDAAqD;QACrD,MAAM,EAAE,GAAG;YACT,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,QAAQ;YAC5B,IAAI,EAAE,KAAK;SACZ,CAAC;QAEF,iEAAiE;QACjE,MAAM,UAAU,GAAG;YACjB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,GAAG,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;YAC9B,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;SAChC,CAAC;QAEF,sCAAsC;QACtC,MAAM,MAAM,GAAyB;YACnC,IAAI,EAAE,eAAe;YACrB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE;YAC1C,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,IAAI;YACV,EAAE,EAAE,EAAE;YACN,OAAO,EAAE,UAAU;YACnB,SAAS;SACV,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}