@elqnt/chat 1.0.2 → 1.0.4

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 (42) hide show
  1. package/dist/hooks/use-websocket-chat-admin.d.mts +3 -2
  2. package/dist/hooks/use-websocket-chat-admin.d.ts +3 -2
  3. package/dist/hooks/use-websocket-chat-admin.js +829 -4
  4. package/dist/hooks/use-websocket-chat-admin.js.map +1 -1
  5. package/dist/hooks/use-websocket-chat-admin.mjs +805 -4
  6. package/dist/hooks/use-websocket-chat-admin.mjs.map +1 -1
  7. package/dist/hooks/use-websocket-chat-base.d.mts +68 -2
  8. package/dist/hooks/use-websocket-chat-base.d.ts +68 -2
  9. package/dist/hooks/use-websocket-chat-base.js +661 -6
  10. package/dist/hooks/use-websocket-chat-base.js.map +1 -1
  11. package/dist/hooks/use-websocket-chat-base.mjs +634 -3
  12. package/dist/hooks/use-websocket-chat-base.mjs.map +1 -1
  13. package/dist/hooks/use-websocket-chat-customer.d.mts +3 -2
  14. package/dist/hooks/use-websocket-chat-customer.d.ts +3 -2
  15. package/dist/hooks/use-websocket-chat-customer.js +726 -5
  16. package/dist/hooks/use-websocket-chat-customer.js.map +1 -1
  17. package/dist/hooks/use-websocket-chat-customer.mjs +701 -4
  18. package/dist/hooks/use-websocket-chat-customer.mjs.map +1 -1
  19. package/dist/index.d.mts +3 -2
  20. package/dist/index.d.ts +3 -2
  21. package/dist/index.js +1685 -590
  22. package/dist/index.js.map +1 -1
  23. package/dist/index.mjs +1064 -197
  24. package/dist/index.mjs.map +1 -1
  25. package/dist/{use-websocket-chat-base-CZDONnTz.d.ts → models/index.d.mts} +2 -66
  26. package/dist/{use-websocket-chat-base-CZDONnTz.d.mts → models/index.d.ts} +2 -66
  27. package/dist/models/index.js +555 -0
  28. package/dist/models/index.js.map +1 -0
  29. package/dist/{chunk-AC5J5LX5.mjs → models/index.mjs} +146 -318
  30. package/dist/models/index.mjs.map +1 -0
  31. package/package.json +6 -1
  32. package/dist/chunk-3PXNBY7J.js +0 -73
  33. package/dist/chunk-3PXNBY7J.js.map +0 -1
  34. package/dist/chunk-AC5J5LX5.mjs.map +0 -1
  35. package/dist/chunk-DTFTLFSY.js +0 -637
  36. package/dist/chunk-DTFTLFSY.js.map +0 -1
  37. package/dist/chunk-E2FJX52R.js +0 -529
  38. package/dist/chunk-E2FJX52R.js.map +0 -1
  39. package/dist/chunk-F6OOS4ZM.mjs +0 -637
  40. package/dist/chunk-F6OOS4ZM.mjs.map +0 -1
  41. package/dist/chunk-XVYABY2Z.mjs +0 -73
  42. package/dist/chunk-XVYABY2Z.mjs.map +0 -1
@@ -1,9 +1,4 @@
1
- import {
2
- useWebSocketChatBase
3
- } from "./chunk-F6OOS4ZM.mjs";
4
-
5
- // hooks/use-websocket-chat-admin.ts
6
- import { useCallback, useState } from "react";
1
+ "use client";
7
2
 
8
3
  // models/chat-models.ts
9
4
  var ChatStatusActive = "active";
@@ -184,346 +179,179 @@ var UpdateUserStatusSubject = "chat.user.status.update";
184
179
  var GetOnlineUsersSubject = "chat.users.online.get";
185
180
  var TriggerAnalyticsScanSubject = "chat.analytics.trigger-scan";
186
181
  var SetupOrgSubject = "chat.org.setup";
187
-
188
- // hooks/use-websocket-chat-admin.ts
189
- var useWebSocketChatAdmin = ({
190
- serverBaseUrl,
191
- orgId,
192
- product
193
- }) => {
194
- const [chats, setChats] = useState(/* @__PURE__ */ new Map());
195
- const [selectedChat, setSelectedChat] = useState(void 0);
196
- const handleMessage = useCallback(
197
- (chatEvent) => {
198
- switch (chatEvent.type) {
199
- case "message":
200
- if (!selectedChat || !chatEvent.message) return;
201
- setChats((prev) => {
202
- const newMap = new Map(prev);
203
- newMap.set(selectedChat.key, {
204
- ...selectedChat,
205
- messages: [...selectedChat.messages, chatEvent.message]
206
- });
207
- return newMap;
208
- });
209
- setSelectedChat((prev) => {
210
- if (!prev) return prev;
211
- return {
212
- ...prev,
213
- messages: [...prev.messages, chatEvent.message]
214
- };
215
- });
216
- break;
217
- case "list_chats":
218
- const chatList = chatEvent.data?.chats;
219
- if (!chatList) return;
220
- setChats(new Map(chatList.map((chat) => [chat.key, chat])));
221
- break;
222
- case "chat_updated":
223
- const updatedChat = chatEvent.data?.chat?.value;
224
- if (updatedChat) {
225
- setChats((prev) => new Map(prev).set(updatedChat.key, updatedChat));
226
- }
227
- break;
228
- case "chat_removed":
229
- const chatKey = chatEvent.data?.chatKey?.value;
230
- if (chatKey) {
231
- setChats((prev) => {
232
- const newMap = new Map(prev);
233
- newMap.delete(chatKey);
234
- return newMap;
235
- });
236
- }
237
- break;
238
- case "load_chat":
239
- const history = chatEvent.data?.chat?.value;
240
- if (history) {
241
- setChats((prev) => {
242
- const existingChat = prev.get(history.key);
243
- if (!existingChat) return prev;
244
- return new Map(prev).set(history.key, {
245
- ...existingChat,
246
- messages: history.messages
247
- });
248
- });
249
- }
250
- break;
251
- }
252
- },
253
- [selectedChat]
254
- );
255
- const base = useWebSocketChatBase({
256
- serverBaseUrl,
257
- orgId,
258
- clientType: "humanAgent",
259
- onMessage: handleMessage,
260
- product
261
- });
262
- const selectChat = useCallback(
263
- (chatKey) => {
264
- const chat = chats.get(chatKey);
265
- if (!chat) {
266
- console.error("Unable to select chat", chatKey);
267
- return;
268
- }
269
- setSelectedChat(chat);
270
- },
271
- [chats, orgId, base.sendMessage]
272
- );
273
- const addUserToChat = useCallback(
274
- (orgId2, chatKey, user) => {
275
- base.sendMessage({
276
- type: "human_agent_joined",
277
- orgId: orgId2,
278
- chatKey,
279
- userId: user.email,
280
- data: { user }
281
- });
282
- setChats((prev) => {
283
- const newMap = new Map(prev);
284
- const chat = newMap.get(chatKey);
285
- if (!chat) return prev;
286
- newMap.set(chatKey, {
287
- ...chat,
288
- humanAgentEngaged: user.role === ChatRoleHumanAgent,
289
- users: [...chat?.users ?? [], user]
290
- });
291
- return newMap;
292
- });
293
- setSelectedChat((prev) => {
294
- if (!prev) return prev;
295
- return {
296
- ...prev,
297
- humanAgentEngaged: user.role === ChatRoleHumanAgent,
298
- users: [...prev.users ?? [], user]
299
- };
300
- });
301
- },
302
- [base.sendMessage]
303
- );
304
- const removeUserFromChat = useCallback(
305
- (orgId2, chatKey, userId) => {
306
- const chat = chats.get(chatKey);
307
- if (!chat) return;
308
- const user = chat.users?.find((u) => u.id === userId);
309
- if (!user) return;
310
- base.sendMessage({
311
- type: "human_agent_left",
312
- orgId: orgId2,
313
- chatKey,
314
- userId,
315
- data: { user }
316
- });
317
- setChats((prev) => {
318
- const newMap = new Map(prev);
319
- const chat2 = newMap.get(chatKey);
320
- if (!chat2) return prev;
321
- newMap.set(chatKey, {
322
- ...chat2,
323
- humanAgentEngaged: false,
324
- users: chat2.users?.filter((u) => u.id !== userId)
325
- });
326
- return newMap;
327
- });
328
- },
329
- [chats, base.sendMessage]
330
- );
331
- const blockUser = useCallback(
332
- (orgId2, chatKey, userId) => {
333
- base.sendMessage({
334
- type: "block_user",
335
- orgId: orgId2,
336
- chatKey,
337
- userId
338
- });
339
- },
340
- [base.sendMessage]
341
- );
342
- return {
343
- ...base,
344
- chats,
345
- selectedChat,
346
- selectChat,
347
- addUserToChat,
348
- removeUserFromChat,
349
- blockUser
350
- };
351
- };
352
-
353
182
  export {
354
- ChatStatusActive,
355
- ChatStatusDisconnected,
356
- ChatStatusAbandoned,
357
- ChatStatusClosed,
358
- ChatStatusArchived,
359
- ChatTypeCustomerSupport,
360
- ChatTypePublicRoom,
361
- ChatTypePrivateRoom,
362
- ChatTypeDirect,
363
- ChatTypeGroup,
364
- ChatRoleUser,
365
- ChatRoleAI,
366
- ChatRoleEvent,
367
- ChatRoleHumanAgent,
368
- ChatRoleObserver,
369
- ChatRoleDataQuery,
370
- ChatRoleSystem,
371
- ChatRoleTool,
372
- AgentStatusOnline,
373
183
  AgentStatusAway,
374
184
  AgentStatusBusy,
375
185
  AgentStatusOffline,
376
- ChatEventTypeUserJoined,
377
- ChatEventTypeUserLeft,
378
- ChatEventTypeTyping,
379
- ChatEventTypeStoppedTyping,
380
- ChatEventTypeRead,
186
+ AgentStatusOnline,
187
+ AssignChatToAgentSubject,
188
+ AttachmentTypeActions,
189
+ AttachmentTypeArticles,
190
+ AttachmentTypeAudio,
191
+ AttachmentTypeBullets,
192
+ AttachmentTypeData,
193
+ AttachmentTypeDocument,
194
+ AttachmentTypeDocumentAnalysis,
195
+ AttachmentTypeDocumentSources,
196
+ AttachmentTypeImage,
197
+ AttachmentTypeKGNodes,
198
+ AttachmentTypeLocation,
199
+ AttachmentTypeRecords,
200
+ AttachmentTypeReferences,
201
+ AttachmentTypeSticker,
202
+ AttachmentTypeSubsections,
203
+ AttachmentTypeVideo,
204
+ ChatArchiveSubjectPattern,
205
+ ChatEventTypeAgentActivityPing,
206
+ ChatEventTypeAgentChatAssigned,
207
+ ChatEventTypeAgentChatCompleted,
208
+ ChatEventTypeAgentContextUpdate,
209
+ ChatEventTypeAgentExecutionEnded,
210
+ ChatEventTypeAgentExecutionStarted,
211
+ ChatEventTypeAgentSessionEnd,
212
+ ChatEventTypeAgentSessionStart,
213
+ ChatEventTypeAgentStatusChange,
214
+ ChatEventTypeBlockUser,
215
+ ChatEventTypeCSATRequest,
216
+ ChatEventTypeCSATResponse,
217
+ ChatEventTypeCSATSurvey,
218
+ ChatEventTypeChatEnded,
219
+ ChatEventTypeChatRemoved,
220
+ ChatEventTypeChatUpdated,
221
+ ChatEventTypeClientAction,
222
+ ChatEventTypeClientActionCallback,
223
+ ChatEventTypeCreateRoom,
224
+ ChatEventTypeDeleteRoom,
381
225
  ChatEventTypeDelivered,
382
- ChatEventTypeReconnected,
226
+ ChatEventTypeEndChat,
383
227
  ChatEventTypeError,
384
- ChatEventTypeWaiting,
228
+ ChatEventTypeGetAgents,
229
+ ChatEventTypeGetAgentsResponse,
230
+ ChatEventTypeGetOnlineUsers,
231
+ ChatEventTypeHumanAgentJoined,
232
+ ChatEventTypeHumanAgentLeft,
233
+ ChatEventTypeInviteUser,
234
+ ChatEventTypeJoinRoom,
235
+ ChatEventTypeLeaveRoom,
236
+ ChatEventTypeListChats,
237
+ ChatEventTypeListRooms,
238
+ ChatEventTypeLoadAgentContext,
239
+ ChatEventTypeLoadAgentContextResponse,
385
240
  ChatEventTypeLoadChat,
386
241
  ChatEventTypeLoadChatResponse,
242
+ ChatEventTypeMentionUser,
387
243
  ChatEventTypeMessage,
388
- ChatEventTypeWaitingForAgent,
244
+ ChatEventTypeMessageDeleted,
245
+ ChatEventTypeMessageDeletedResponse,
246
+ ChatEventTypeMessageEdited,
247
+ ChatEventTypeMessageEditedResponse,
248
+ ChatEventTypeMessageReaction,
249
+ ChatEventTypeMessageReactionResponse,
250
+ ChatEventTypeMessageReply,
389
251
  ChatEventTypeMessageStatusUpdate,
390
- ChatEventTypeHumanAgentJoined,
391
- ChatEventTypeHumanAgentLeft,
252
+ ChatEventTypeNewChat,
253
+ ChatEventTypeNewChatCreated,
392
254
  ChatEventTypeObserverJoined,
393
255
  ChatEventTypeObserverLeft,
394
- ChatEventTypeListChats,
395
- ChatEventTypeChatUpdated,
396
- ChatEventTypeChatRemoved,
397
- ChatEventTypeSyncMetadata,
398
- ChatEventTypeSyncMetadataResponse,
399
- ChatEventTypeSyncUserSession,
400
- ChatEventTypeSyncUserSessionResponse,
401
- ChatEventTypeClientAction,
402
- ChatEventTypeClientActionCallback,
403
- ChatEventTypeBlockUser,
404
- ChatEventTypeCreateRoom,
256
+ ChatEventTypeOnlineUsersResponse,
257
+ ChatEventTypePing,
258
+ ChatEventTypePlanApproved,
259
+ ChatEventTypePlanCompleted,
260
+ ChatEventTypePlanPendingApproval,
261
+ ChatEventTypePlanRejected,
262
+ ChatEventTypePong,
263
+ ChatEventTypeRead,
264
+ ChatEventTypeReconnected,
405
265
  ChatEventTypeRoomCreated,
406
- ChatEventTypeJoinRoom,
407
- ChatEventTypeLeaveRoom,
408
- ChatEventTypeDeleteRoom,
409
266
  ChatEventTypeRoomDeleted,
410
- ChatEventTypeUpdateRoom,
411
267
  ChatEventTypeRoomUpdated,
412
- ChatEventTypeInviteUser,
413
- ChatEventTypeUserInvited,
414
268
  ChatEventTypeRoomUserJoined,
415
269
  ChatEventTypeRoomUserLeft,
416
- ChatEventTypeUserRemoved,
417
- ChatEventTypeListRooms,
418
270
  ChatEventTypeRoomsResponse,
419
- ChatEventTypeMessageEdited,
420
- ChatEventTypeMessageDeleted,
421
- ChatEventTypeMessageReaction,
422
- ChatEventTypeMessageReply,
423
- ChatEventTypeMentionUser,
424
- ChatEventTypeMessageEditedResponse,
425
- ChatEventTypeMessageDeletedResponse,
426
- ChatEventTypeMessageReactionResponse,
427
- ChatEventTypeUserPresenceStart,
428
- ChatEventTypeUserPresenceEnd,
429
- ChatEventTypeUserStatusChange,
271
+ ChatEventTypeStepCompleted,
272
+ ChatEventTypeStepFailed,
273
+ ChatEventTypeStepStarted,
274
+ ChatEventTypeStoppedTyping,
275
+ ChatEventTypeSummaryUpdate,
276
+ ChatEventTypeSyncMetadata,
277
+ ChatEventTypeSyncMetadataResponse,
278
+ ChatEventTypeSyncUserSession,
279
+ ChatEventTypeSyncUserSessionResponse,
280
+ ChatEventTypeTyping,
281
+ ChatEventTypeUpdateRoom,
430
282
  ChatEventTypeUserActivity,
431
- ChatEventTypeUserPresenceChanged,
432
283
  ChatEventTypeUserActivityUpdate,
433
- ChatEventTypeGetOnlineUsers,
434
- ChatEventTypeOnlineUsersResponse,
435
- ChatEventTypeEndChat,
436
- ChatEventTypeChatEnded,
437
- ChatEventTypeAgentSessionStart,
438
- ChatEventTypeAgentSessionEnd,
439
- ChatEventTypeAgentStatusChange,
440
- ChatEventTypeAgentActivityPing,
441
- ChatEventTypeAgentChatAssigned,
442
- ChatEventTypeAgentChatCompleted,
443
- ChatEventTypeGetAgents,
444
- ChatEventTypeGetAgentsResponse,
445
- ChatEventTypeCSATRequest,
446
- ChatEventTypeCSATSurvey,
447
- ChatEventTypeCSATResponse,
448
- ChatEventTypeUserSuggestedActions,
284
+ ChatEventTypeUserInvited,
285
+ ChatEventTypeUserJoined,
286
+ ChatEventTypeUserLeft,
287
+ ChatEventTypeUserPresenceChanged,
288
+ ChatEventTypeUserPresenceEnd,
289
+ ChatEventTypeUserPresenceStart,
290
+ ChatEventTypeUserRemoved,
291
+ ChatEventTypeUserStatusChange,
449
292
  ChatEventTypeUserSuggestedActionSelected,
450
- ChatEventTypeSummaryUpdate,
451
- ChatEventTypeAgentContextUpdate,
452
- ChatEventTypeAgentExecutionStarted,
453
- ChatEventTypeAgentExecutionEnded,
454
- ChatEventTypeLoadAgentContext,
455
- ChatEventTypeLoadAgentContextResponse,
456
- ChatEventTypePlanPendingApproval,
457
- ChatEventTypePlanApproved,
458
- ChatEventTypePlanRejected,
459
- ChatEventTypePlanCompleted,
460
- ChatEventTypeStepStarted,
461
- ChatEventTypeStepCompleted,
462
- ChatEventTypeStepFailed,
463
- ChatEventTypeNewChat,
464
- ChatEventTypeNewChatCreated,
465
- ChatEventTypePing,
466
- ChatEventTypePong,
467
- MessageStatusSending,
468
- MessageStatusSent,
469
- MessageStatusDelivered,
470
- MessageStatusRead,
471
- MessageStatusFailed,
472
- AttachmentTypeDocument,
473
- AttachmentTypeDocumentAnalysis,
474
- AttachmentTypeImage,
475
- AttachmentTypeAudio,
476
- AttachmentTypeVideo,
477
- AttachmentTypeLocation,
478
- AttachmentTypeReferences,
479
- AttachmentTypeSubsections,
480
- AttachmentTypeArticles,
481
- AttachmentTypeRecords,
482
- AttachmentTypeActions,
483
- AttachmentTypeBullets,
484
- AttachmentTypeSticker,
485
- AttachmentTypeData,
486
- AttachmentTypeKGNodes,
487
- AttachmentTypeDocumentSources,
293
+ ChatEventTypeUserSuggestedActions,
294
+ ChatEventTypeWaiting,
295
+ ChatEventTypeWaitingForAgent,
296
+ ChatRoleAI,
297
+ ChatRoleDataQuery,
298
+ ChatRoleEvent,
299
+ ChatRoleHumanAgent,
300
+ ChatRoleObserver,
301
+ ChatRoleSystem,
302
+ ChatRoleTool,
303
+ ChatRoleUser,
488
304
  ChatSessionStatusActive,
489
- ChatSessionStatusIdle,
490
305
  ChatSessionStatusExpired,
491
- UserStatusOnline,
492
- UserStatusAway,
493
- UserStatusBusy,
494
- UserStatusOffline,
495
- QueueTypes,
496
- QueueTypeSkill,
497
- QueueTypePriority,
498
- QueueTypeDepartment,
499
- QueueTypeComplexity,
500
- GetWaitingForAgentChatCountSubject,
306
+ ChatSessionStatusIdle,
307
+ ChatStatusAbandoned,
308
+ ChatStatusActive,
309
+ ChatStatusArchived,
310
+ ChatStatusClosed,
311
+ ChatStatusDisconnected,
312
+ ChatTypeCustomerSupport,
313
+ ChatTypeDirect,
314
+ ChatTypeGroup,
315
+ ChatTypePrivateRoom,
316
+ ChatTypePublicRoom,
317
+ CompleteChatByAgentSubject,
318
+ CreateAgentQueueSubject,
319
+ DeleteAgentQueueSubject,
320
+ EndAgentSessionSubject,
501
321
  GetActiveChatCountSubject,
502
- GetWaitingForAgentChatsSubject,
503
322
  GetActiveChatsSubject,
504
- GetUserChatsSubject,
323
+ GetAgentQueuesSubject,
324
+ GetAgentSessionSubject,
505
325
  GetChatSubject,
506
- ChatArchiveSubjectPattern,
326
+ GetDailyChatCountSubject,
327
+ GetOnlineAgentCountSubject,
328
+ GetOnlineAgentsSubject,
329
+ GetOnlineUsersSubject,
330
+ GetQueueChatCountSubject,
331
+ GetQueueChatsSubject,
332
+ GetUserChatsSubject,
333
+ GetWaitingForAgentChatCountSubject,
334
+ GetWaitingForAgentChatsSubject,
335
+ MessageStatusDelivered,
336
+ MessageStatusFailed,
337
+ MessageStatusRead,
338
+ MessageStatusSending,
339
+ MessageStatusSent,
340
+ QueueTypeComplexity,
341
+ QueueTypeDepartment,
342
+ QueueTypePriority,
343
+ QueueTypeSkill,
344
+ QueueTypes,
345
+ SetupOrgSubject,
507
346
  StartAgentSessionSubject,
508
- EndAgentSessionSubject,
509
- UpdateAgentStatusSubject,
347
+ TriggerAnalyticsScanSubject,
510
348
  UpdateAgentLastActivitySubject,
511
- AssignChatToAgentSubject,
512
- CompleteChatByAgentSubject,
513
- GetAgentSessionSubject,
514
- GetOnlineAgentsSubject,
515
- GetOnlineAgentCountSubject,
516
- CreateAgentQueueSubject,
517
- GetAgentQueuesSubject,
518
349
  UpdateAgentQueueSubject,
519
- DeleteAgentQueueSubject,
520
- GetQueueChatsSubject,
521
- GetQueueChatCountSubject,
522
- GetDailyChatCountSubject,
350
+ UpdateAgentStatusSubject,
523
351
  UpdateUserStatusSubject,
524
- GetOnlineUsersSubject,
525
- TriggerAnalyticsScanSubject,
526
- SetupOrgSubject,
527
- useWebSocketChatAdmin
352
+ UserStatusAway,
353
+ UserStatusBusy,
354
+ UserStatusOffline,
355
+ UserStatusOnline
528
356
  };
529
- //# sourceMappingURL=chunk-AC5J5LX5.mjs.map
357
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../models/chat-models.ts"],"sourcesContent":["// Code generated by tygo. DO NOT EDIT.\nimport { KGNode } from \"@elqnt/kg\";\nimport { Variable } from \"@elqnt/types\";\nimport { ResponseMetadata, ProductNameTS } from \"@elqnt/types\";\nimport { DocumentAnalysisResult, BoundingRegion, PageInfo } from \"@elqnt/docs\";\n\n//////////\n// source: chat-models.go\n\nexport type ChatStatusTS = 'active' | 'disconnected' | 'abandoned' | 'closed' | 'archived';\nexport type ChatStatus = string;\nexport const ChatStatusActive: ChatStatus = \"active\";\nexport const ChatStatusDisconnected: ChatStatus = \"disconnected\";\nexport const ChatStatusAbandoned: ChatStatus = \"abandoned\";\nexport const ChatStatusClosed: ChatStatus = \"closed\";\nexport const ChatStatusArchived: ChatStatus = \"archived\";\nexport type ChatTypeTS = 'customer_support' | 'public_room' | 'private_room' | 'direct' | 'group';\nexport type ChatType = string;\nexport const ChatTypeCustomerSupport: ChatType = \"customer_support\"; // Existing customer support chats\nexport const ChatTypePublicRoom: ChatType = \"public_room\"; // Public collaboration room\nexport const ChatTypePrivateRoom: ChatType = \"private_room\"; // Private collaboration room\nexport const ChatTypeDirect: ChatType = \"direct\"; // 1-on-1 direct message\nexport const ChatTypeGroup: ChatType = \"group\"; // Group chat/room\nexport interface Chat {\n orgId: string;\n key: string;\n title: string;\n messages: ChatMessage[];\n lastUpdated: number /* int64 */;\n startTime: number /* int64 */;\n users: ChatUser[];\n status: ChatStatusTS;\n aiEngaged: boolean;\n humanAgentEngaged: boolean;\n isWaiting: boolean;\n isWaitingForAgent: boolean;\n callRequested?: boolean;\n callStarted?: boolean;\n userRating?: number /* int */;\n metadata?: { [key: string]: any};\n grading?: ChatGrading;\n flow?: ChatFlow;\n context?: ChatContext;\n csatSent?: boolean;\n csatSentTime?: number /* int64 */;\n csatResponse?: any /* agents.CSATResponse */;\n /**\n * OpenAI Responses API - stores the last response ID for conversation continuity\n */\n lastResponseId?: string;\n /**\n * AgentContext - reference to structured context stored in separate NATS KV bucket\n * Key format: {agentId}:{chatKey} in bucket agent-contexts-org-{orgId}\n */\n agentContextKey?: string;\n /**\n * Collab-specific fields\n */\n chatType?: ChatTypeTS;\n description?: string;\n}\nexport interface ChatContext {\n memory: { [key: string]: any};\n turnCount: number /* int */;\n lastIntent: string;\n activeTopic: string;\n}\nexport interface ChatFlow {\n flowDefinitionId: string;\n flowInstanceId?: string;\n flowInstanceLastUpdated?: number /* int64 */;\n tools?: ChatTool[];\n}\nexport interface ChatTool {\n name: string;\n description: string;\n type: string; // function, action, data_query etc\n parameters?: { [key: string]: any};\n}\nexport type ChatRoleTS = 'user' | 'ai' | 'event' | 'humanAgent' | 'observer' | 'dataQuery' | 'system' | 'tool';\nexport type ChatRole = string;\nexport const ChatRoleUser: ChatRole = \"user\";\nexport const ChatRoleAI: ChatRole = \"ai\";\nexport const ChatRoleEvent: ChatRole = \"event\";\nexport const ChatRoleHumanAgent: ChatRole = \"humanAgent\";\nexport const ChatRoleObserver: ChatRole = \"observer\";\nexport const ChatRoleDataQuery: ChatRole = \"dataQuery\";\nexport const ChatRoleSystem: ChatRole = \"system\";\nexport const ChatRoleTool: ChatRole = \"tool\";\nexport interface ChatUser {\n id: string;\n role: ChatRoleTS;\n name: string;\n email: string;\n phone?: string;\n authProvider: string;\n authToken: string;\n metadata?: { [key: string]: any};\n}\nexport type AgentStatusTS = 'online' | 'away' | 'busy' | 'offline';\nexport type AgentStatus = string;\nexport const AgentStatusOnline: AgentStatus = \"online\";\nexport const AgentStatusAway: AgentStatus = \"away\";\nexport const AgentStatusBusy: AgentStatus = \"busy\";\nexport const AgentStatusOffline: AgentStatus = \"offline\";\n/**\n * AgentSession represents an active agent session stored in Redis\n */\nexport interface AgentSession {\n agentId: string;\n orgId: string;\n onlineSince: number /* int64 */; // Unix timestamp\n lastActivity: number /* int64 */; // Unix timestamp\n status: AgentStatusTS;\n chatsHandled: number /* int */;\n activeChats: string[]; // Chat keys currently handling\n userAgent?: string;\n ipAddress?: string;\n metadata?: { [key: string]: any};\n}\nexport type ChatEventType = string;\n/**\n * ** user events\n */\nexport const ChatEventTypeUserJoined: ChatEventType = \"user_joined\";\nexport const ChatEventTypeUserLeft: ChatEventType = \"user_left\";\nexport const ChatEventTypeTyping: ChatEventType = \"typing\";\nexport const ChatEventTypeStoppedTyping: ChatEventType = \"stopped_typing\";\nexport const ChatEventTypeRead: ChatEventType = \"read\";\nexport const ChatEventTypeDelivered: ChatEventType = \"delivered\";\nexport const ChatEventTypeReconnected: ChatEventType = \"reconnected\";\nexport const ChatEventTypeError: ChatEventType = \"error\";\nexport const ChatEventTypeWaiting: ChatEventType = \"waiting\";\nexport const ChatEventTypeLoadChat: ChatEventType = \"load_chat\";\nexport const ChatEventTypeLoadChatResponse: ChatEventType = \"load_chat_response\";\nexport const ChatEventTypeMessage: ChatEventType = \"message\";\nexport const ChatEventTypeWaitingForAgent: ChatEventType = \"waiting_for_agent\";\nexport const ChatEventTypeMessageStatusUpdate: ChatEventType = \"message_status_update\";\nexport const ChatEventTypeHumanAgentJoined: ChatEventType = \"human_agent_joined\";\nexport const ChatEventTypeHumanAgentLeft: ChatEventType = \"human_agent_left\";\nexport const ChatEventTypeObserverJoined: ChatEventType = \"observer_joined\";\nexport const ChatEventTypeObserverLeft: ChatEventType = \"observer_left\";\nexport const ChatEventTypeListChats: ChatEventType = \"list_chats\";\nexport const ChatEventTypeChatUpdated: ChatEventType = \"chat_updated\";\nexport const ChatEventTypeChatRemoved: ChatEventType = \"chat_removed\";\nexport const ChatEventTypeSyncMetadata: ChatEventType = \"sync_metadata\";\nexport const ChatEventTypeSyncMetadataResponse: ChatEventType = \"sync_metadata_response\";\nexport const ChatEventTypeSyncUserSession: ChatEventType = \"sync_user_session\";\nexport const ChatEventTypeSyncUserSessionResponse: ChatEventType = \"sync_user_session_response\";\nexport const ChatEventTypeClientAction: ChatEventType = \"client_action\";\nexport const ChatEventTypeClientActionCallback: ChatEventType = \"client_action_callback\";\nexport const ChatEventTypeBlockUser: ChatEventType = \"block_user\";\n/**\n * ** collab room management events\n */\nexport const ChatEventTypeCreateRoom: ChatEventType = \"create_room\";\nexport const ChatEventTypeRoomCreated: ChatEventType = \"room_created\";\nexport const ChatEventTypeJoinRoom: ChatEventType = \"join_room\";\nexport const ChatEventTypeLeaveRoom: ChatEventType = \"leave_room\";\nexport const ChatEventTypeDeleteRoom: ChatEventType = \"delete_room\";\nexport const ChatEventTypeRoomDeleted: ChatEventType = \"room_deleted\";\nexport const ChatEventTypeUpdateRoom: ChatEventType = \"update_room\";\nexport const ChatEventTypeRoomUpdated: ChatEventType = \"room_updated\";\nexport const ChatEventTypeInviteUser: ChatEventType = \"invite_user\";\nexport const ChatEventTypeUserInvited: ChatEventType = \"user_invited\";\nexport const ChatEventTypeRoomUserJoined: ChatEventType = \"room_user_joined\";\nexport const ChatEventTypeRoomUserLeft: ChatEventType = \"room_user_left\";\nexport const ChatEventTypeUserRemoved: ChatEventType = \"user_removed\";\nexport const ChatEventTypeListRooms: ChatEventType = \"list_rooms\";\nexport const ChatEventTypeRoomsResponse: ChatEventType = \"rooms_response\";\n/**\n * ** collab message events\n */\nexport const ChatEventTypeMessageEdited: ChatEventType = \"message_edited\";\nexport const ChatEventTypeMessageDeleted: ChatEventType = \"message_deleted\";\nexport const ChatEventTypeMessageReaction: ChatEventType = \"message_reaction\";\nexport const ChatEventTypeMessageReply: ChatEventType = \"message_reply\";\nexport const ChatEventTypeMentionUser: ChatEventType = \"mention_user\";\nexport const ChatEventTypeMessageEditedResponse: ChatEventType = \"message_edited_response\";\nexport const ChatEventTypeMessageDeletedResponse: ChatEventType = \"message_deleted_response\";\nexport const ChatEventTypeMessageReactionResponse: ChatEventType = \"message_reaction_response\";\n/**\n * ** collab user presence events\n */\nexport const ChatEventTypeUserPresenceStart: ChatEventType = \"user_presence_start\";\nexport const ChatEventTypeUserPresenceEnd: ChatEventType = \"user_presence_end\";\nexport const ChatEventTypeUserStatusChange: ChatEventType = \"user_status_change\";\nexport const ChatEventTypeUserActivity: ChatEventType = \"user_activity\";\nexport const ChatEventTypeUserPresenceChanged: ChatEventType = \"user_presence_changed\";\nexport const ChatEventTypeUserActivityUpdate: ChatEventType = \"user_activity_update\";\nexport const ChatEventTypeGetOnlineUsers: ChatEventType = \"get_online_users\";\nexport const ChatEventTypeOnlineUsersResponse: ChatEventType = \"online_users\";\n/**\n * ** shop assist events\n */\nexport const ChatEventTypeEndChat: ChatEventType = \"end_chat\";\nexport const ChatEventTypeChatEnded: ChatEventType = \"chat_ended\";\n/**\n * ** agent session events\n */\nexport const ChatEventTypeAgentSessionStart: ChatEventType = \"agent_session_start\";\nexport const ChatEventTypeAgentSessionEnd: ChatEventType = \"agent_session_end\";\nexport const ChatEventTypeAgentStatusChange: ChatEventType = \"agent_status_change\";\nexport const ChatEventTypeAgentActivityPing: ChatEventType = \"agent_activity_ping\";\nexport const ChatEventTypeAgentChatAssigned: ChatEventType = \"agent_chat_assigned\";\nexport const ChatEventTypeAgentChatCompleted: ChatEventType = \"agent_chat_completed\";\n/**\n * ** AI agents retrieval events\n */\nexport const ChatEventTypeGetAgents: ChatEventType = \"get_agents\";\nexport const ChatEventTypeGetAgentsResponse: ChatEventType = \"get_agents_response\";\n/**\n * ** CSAT events\n */\nexport const ChatEventTypeCSATRequest: ChatEventType = \"csat_request\"; // Internal: scheduler requests chat to send CSAT\nexport const ChatEventTypeCSATSurvey: ChatEventType = \"show_csat_survey\";\nexport const ChatEventTypeCSATResponse: ChatEventType = \"csat_response\";\n/**\n * ** User Suggested Actions events\n */\nexport const ChatEventTypeUserSuggestedActions: ChatEventType = \"user_suggested_actions\";\nexport const ChatEventTypeUserSuggestedActionSelected: ChatEventType = \"user_suggested_action_selected\";\n/**\n * ** Summary events\n */\nexport const ChatEventTypeSummaryUpdate: ChatEventType = \"summary_update\";\n/**\n * ** Agent Context events\n */\nexport const ChatEventTypeAgentContextUpdate: ChatEventType = \"agent_context_update\";\nexport const ChatEventTypeAgentExecutionStarted: ChatEventType = \"agent_execution_started\";\nexport const ChatEventTypeAgentExecutionEnded: ChatEventType = \"agent_execution_ended\";\nexport const ChatEventTypeLoadAgentContext: ChatEventType = \"load_agent_context\";\nexport const ChatEventTypeLoadAgentContextResponse: ChatEventType = \"load_agent_context_response\";\n/**\n * ** Plan → Approve → Execute events\n */\nexport const ChatEventTypePlanPendingApproval: ChatEventType = \"plan_pending_approval\";\nexport const ChatEventTypePlanApproved: ChatEventType = \"plan_approved\";\nexport const ChatEventTypePlanRejected: ChatEventType = \"plan_rejected\";\nexport const ChatEventTypePlanCompleted: ChatEventType = \"plan_completed\";\nexport const ChatEventTypeStepStarted: ChatEventType = \"step_started\";\nexport const ChatEventTypeStepCompleted: ChatEventType = \"step_completed\";\nexport const ChatEventTypeStepFailed: ChatEventType = \"step_failed\";\n/**\n * ** New Chat events\n */\nexport const ChatEventTypeNewChat: ChatEventType = \"new_chat\";\nexport const ChatEventTypeNewChatCreated: ChatEventType = \"new_chat_created\";\n/**\n * ** Heartbeat events\n */\nexport const ChatEventTypePing: ChatEventType = \"ping\";\nexport const ChatEventTypePong: ChatEventType = \"pong\";\nexport type ChatEventTypeTS =\n | \"message\"\n | \"user_joined\"\n | \"user_left\"\n | \"typing\"\n | \"stopped_typing\"\n | \"read\"\n | \"delivered\"\n | \"reconnected\"\n | \"error\"\n | \"message_status_update\"\n | \"load_chat\"\n | \"load_chat_response\"\n | \"waiting\"\n | \"waiting_for_agent\"\n | \"human_agent_joined\"\n | \"end_chat\"\n | \"chat_ended\"\n | \"human_agent_left\"\n | \"observer_joined\"\n | \"observer_left\"\n | \"list_chats\"\n | \"chat_updated\"\n | \"chat_removed\"\n | \"sync_metadata\"\n | \"sync_metadata_response\"\n | \"sync_user_session\"\n | \"sync_user_session_response\"\n | \"agent_session_start\"\n | \"agent_session_end\"\n | \"agent_status_change\"\n | \"agent_activity_ping\"\n | \"agent_chat_assigned\"\n | \"agent_chat_completed\"\n | \"client_action\"\n | \"client_action_callback\"\n | \"show_csat_survey\"\n | \"csat_response\"\n | \"user_suggested_actions\"\n | \"user_suggested_action_selected\"\n | \"summary_update\"\n | \"agent_context_update\"\n | \"agent_execution_started\"\n | \"agent_execution_ended\"\n | \"load_agent_context\"\n | \"load_agent_context_response\"\n | \"plan_pending_approval\"\n | \"plan_approved\"\n | \"plan_rejected\"\n | \"plan_completed\"\n | \"step_started\"\n | \"step_completed\"\n | \"step_failed\"\n | \"new_chat\"\n | \"new_chat_created\"\n | \"block_user\"\n | \"ping\"\n | \"pong\"\n | \"create_room\"\n | \"room_created\"\n | \"join_room\"\n | \"leave_room\"\n | \"delete_room\"\n | \"room_deleted\"\n | \"update_room\"\n | \"room_updated\"\n | \"invite_user\"\n | \"user_invited\"\n | \"room_user_joined\"\n | \"room_user_left\"\n | \"user_removed\"\n | \"list_rooms\"\n | \"rooms_response\"\n | \"message_edited\"\n | \"message_deleted\"\n | \"message_reaction\"\n | \"message_reply\"\n | \"mention_user\"\n | \"message_edited_response\"\n | \"message_deleted_response\"\n | \"message_reaction_response\"\n | \"user_presence_start\"\n | \"user_presence_end\"\n | \"user_status_change\"\n | \"user_activity\"\n | \"user_presence_changed\"\n | \"user_activity_update\"\n | \"get_online_users\"\n | \"online_users\"\n | \"get_agents\"\n | \"get_agents_response\";\nexport type MessageStatus = string;\nexport const MessageStatusSending: MessageStatus = \"sending\";\nexport const MessageStatusSent: MessageStatus = \"sent\";\nexport const MessageStatusDelivered: MessageStatus = \"delivered\";\nexport const MessageStatusRead: MessageStatus = \"read\";\nexport const MessageStatusFailed: MessageStatus = \"failed\";\nexport type MessageStatusTS =\n | \"sending\"\n | \"sent\"\n | \"delivered\"\n | \"read\"\n | \"failed\";\n/**\n * EmojiReaction represents an emoji reaction to a message\n */\nexport interface EmojiReaction {\n emoji: string;\n count: number /* int */;\n users?: string[]; // List of user IDs who reacted\n}\n/**\n * Location represents geographical coordinates\n */\nexport interface Location {\n latitude: number /* float64 */;\n longitude: number /* float64 */;\n address?: string;\n}\n/**\n * AttachmentFile represents a file within an attachment\n */\nexport interface AttachmentFile {\n type: string;\n url: string;\n thumbnailUrl?: string;\n name?: string;\n size?: number /* int64 */;\n}\nexport type AttachmentType = string;\n/**\n * Attachment types for both user and system attachments\n */\nexport const AttachmentTypeDocument: AttachmentType = \"document\";\nexport const AttachmentTypeDocumentAnalysis: AttachmentType = \"document_analysis\";\nexport const AttachmentTypeImage: AttachmentType = \"image\";\nexport const AttachmentTypeAudio: AttachmentType = \"audio\";\nexport const AttachmentTypeVideo: AttachmentType = \"video\";\nexport const AttachmentTypeLocation: AttachmentType = \"location\";\nexport const AttachmentTypeReferences: AttachmentType = \"references\";\nexport const AttachmentTypeSubsections: AttachmentType = \"subsections\";\nexport const AttachmentTypeArticles: AttachmentType = \"articles\";\nexport const AttachmentTypeRecords: AttachmentType = \"records\";\nexport const AttachmentTypeActions: AttachmentType = \"actions\";\nexport const AttachmentTypeBullets: AttachmentType = \"bullets\";\nexport const AttachmentTypeSticker: AttachmentType = \"sticker\";\nexport const AttachmentTypeData: AttachmentType = \"data\";\nexport const AttachmentTypeKGNodes: AttachmentType = \"kgNodes\";\nexport const AttachmentTypeDocumentSources: AttachmentType = \"document_sources\";\n\nexport type AttachmentTypeTS =\n | \"document\"\n | \"document_analysis\"\n | \"document_sources\"\n | \"image\"\n | \"audio\"\n | \"video\"\n | \"location\"\n | \"references\"\n | \"subsections\"\n | \"articles\"\n | \"records\"\n | \"actions\"\n | \"bullets\"\n | \"sticker\"\n | \"data\"\n | \"kgNodes\";\n\n/**\n * DocumentSource represents an aggregated document source with page references\n */\nexport interface DocumentSource {\n doc_id: string;\n title: string;\n url: string;\n page_numbers: number[];\n reference_count: number;\n bounding_regions?: BoundingRegion[];\n page_infos?: PageInfo[];\n}\n\n/**\n * Attachment represents any type of attachment to a message\n */\nexport interface Attachment {\n type: AttachmentTypeTS;\n documentAnalysis?: DocumentAnalysisResult;\n documentSources?: DocumentSource[];\n title?: string;\n url: string;\n files?: AttachmentFile[]; // Associated files\n location?: Location; // Location data if applicable\n data?: { [key: string]: Variable};\n kgNodes?: KGNode[];\n actions?: Action[];\n}\nexport interface Action {\n id: string;\n title: string;\n icon?: string;\n description?: string;\n onAction?: () => void;\n}\n/**\n * ChatMessage represents the core message structure\n */\nexport interface ChatMessage {\n /**\n * Core fields\n */\n id: string;\n role: ChatRoleTS;\n content: string;\n time: number /* int64 */;\n status: MessageStatusTS;\n /**\n * Sender information\n */\n senderId: string;\n senderName?: string;\n /**\n * Timing\n */\n createdAt: number /* int64 */;\n updatedAt?: number /* int64 */;\n /**\n * Message relations\n */\n replyTo?: string;\n threadId?: string;\n mentions?: string[];\n /**\n * Attachments and reactions\n */\n attachments?: Attachment[];\n reactions?: EmojiReaction[];\n /**\n * Additional data\n */\n variables?: { [key: string]: Variable};\n /**\n * Tool call\n */\n name?: string;\n toolCallId?: string;\n toolCalls?: ToolCall[];\n /**\n * LLM usage\n */\n llmUsage?: LLMUsage;\n}\nexport interface ChatEvent {\n type: ChatEventTypeTS;\n orgId: string;\n chatKey: string;\n userId: string;\n timestamp: number /* int64 */;\n data?: { [key: string]: any};\n message?: ChatMessage;\n}\nexport interface ChatGrading {\n chatKey: string;\n grade: number /* int */;\n topic: string;\n summary: string;\n}\nexport interface ChatSession {\n id: string;\n status: ChatSessionStatus;\n user?: ChatUser;\n activeChatKey?: string;\n preferences?: ChatSessionPreferences;\n lastActivity: number /* int64 */;\n expiresAt: number /* int64 */;\n metadata?: { [key: string]: any};\n}\nexport type ChatSessionStatus = string;\nexport const ChatSessionStatusActive: ChatSessionStatus = \"active\";\nexport const ChatSessionStatusIdle: ChatSessionStatus = \"idle\";\nexport const ChatSessionStatusExpired: ChatSessionStatus = \"expired\";\nexport interface ChatSessionPreferences {\n language: string;\n theme: string;\n notifications: boolean;\n timeZone: string;\n messageDisplay: string; // compact/expanded\n autoTranslate: boolean;\n rateLimits?: ChatRateLimits;\n}\nexport interface ChatRateLimits {\n maxMessagesPerMinute: number /* int */;\n maxTokensPerDay: number /* int */;\n cooldownPeriod: number /* int */; // seconds\n}\n/**\n * ==========================\n * todo: move to common/llm\n */\nexport interface LLMConfig {\n Provider: string;\n Model: string;\n Temperature: number /* float64 */;\n MaxTokens: number /* int */;\n SystemPrompt: string;\n Tools: LLMTool[];\n Memory?: LLMMemoryConfig;\n}\nexport interface LLMMemoryConfig {\n MaxMessages: number /* int */;\n IncludeSystem: boolean;\n WindowSize: number /* int */; // Token window size\n Strategy: string; // e.g., \"sliding\", \"summarize\"\n}\nexport interface LLMTool {\n Name: string;\n Type: string;\n Function: LLMFunction;\n}\nexport interface LLMFunction {\n Name: string;\n Description: string;\n Parameters: any /* types.JSONSchema */;\n}\nexport interface ToolCall {\n Name: string;\n Arguments: { [key: string]: any};\n ID: string;\n Description: string;\n}\nexport interface LLMResponse {\n Content: string;\n ToolCalls: ToolCall[];\n Usage?: LLMUsage;\n ResponseId: string; // OpenAI Responses API - the response ID for conversation continuity\n}\nexport interface LLMUsage {\n inputTokens: number /* int64 */;\n outputTokens: number /* int64 */;\n totalTokens: number /* int64 */;\n}\n/**\n * ChatSummary represents lightweight chat information for caching and listing\n */\nexport interface ChatSummary {\n chatKey: string;\n title: string;\n userId?: string;\n status: ChatStatus;\n lastUpdated: number /* int64 */;\n waitingSince?: number /* int64 */; // Only populated for waiting chats\n metadata?: { [key: string]: any};\n}\nexport interface GetChatRequest {\n orgId: string;\n chatKey: string;\n}\nexport interface GetChatResponse {\n chat?: Chat;\n metadata: ResponseMetadata;\n}\nexport interface ChatProductReference {\n id: string;\n title: string;\n price: number /* float64 */;\n image?: string;\n url?: string;\n}\n/**\n * Chat Archival Models\n */\nexport interface ChatArchivalRequest {\n orgId: string;\n chatKey: string;\n chat: Chat;\n}\nexport interface ChatArchivalResponse {\n success: boolean;\n error?: string;\n message?: string;\n}\n/**\n * Agent Session Request/Response Models\n */\nexport interface StartAgentSessionRequest {\n orgId: string;\n agentId: string;\n userAgent?: string;\n ipAddress?: string;\n}\nexport interface StartAgentSessionResponse {\n metadata: ResponseMetadata;\n}\nexport interface EndAgentSessionRequest {\n orgId: string;\n agentId: string;\n}\nexport interface EndAgentSessionResponse {\n metadata: ResponseMetadata;\n}\nexport interface UpdateAgentStatusRequest {\n orgId: string;\n agentId: string;\n status: AgentStatusTS;\n}\nexport interface UpdateAgentStatusResponse {\n metadata: ResponseMetadata;\n}\nexport interface UpdateAgentLastActivityRequest {\n orgId: string;\n agentId: string;\n}\nexport interface UpdateAgentLastActivityResponse {\n metadata: ResponseMetadata;\n}\nexport interface AssignChatToAgentRequest {\n orgId: string;\n agentId: string;\n chatKey: string;\n}\nexport interface AssignChatToAgentResponse {\n metadata: ResponseMetadata;\n}\nexport interface CompleteChatByAgentRequest {\n orgId: string;\n agentId: string;\n chatKey: string;\n}\nexport interface CompleteChatByAgentResponse {\n metadata: ResponseMetadata;\n}\nexport interface GetAgentSessionRequest {\n orgId: string;\n agentId: string;\n}\nexport interface GetAgentSessionResponse {\n session?: AgentSession;\n metadata: ResponseMetadata;\n}\nexport interface GetOnlineAgentsRequest {\n orgId: string;\n}\nexport interface GetOnlineAgentsResponse {\n sessions: AgentSession[];\n metadata: ResponseMetadata;\n}\nexport interface GetOnlineAgentCountRequest {\n orgId: string;\n}\nexport interface GetOnlineAgentCountResponse {\n count: number /* int */;\n metadata: ResponseMetadata;\n}\n/**\n * Queue-specific chat request/response types\n */\nexport interface GetQueueChatsRequest {\n orgId: string;\n queueId: string;\n}\nexport interface GetQueueChatsResponse {\n chats: ChatSummary[];\n metadata: ResponseMetadata;\n}\nexport interface GetQueueChatCountRequest {\n orgId: string;\n queueId: string;\n}\nexport interface GetQueueChatCountResponse {\n count: number /* int */;\n metadata: ResponseMetadata;\n}\nexport type UserStatusTS = 'online' | 'away' | 'busy' | 'offline';\nexport type UserStatus = string;\nexport const UserStatusOnline: UserStatus = \"online\";\nexport const UserStatusAway: UserStatus = \"away\";\nexport const UserStatusBusy: UserStatus = \"busy\";\nexport const UserStatusOffline: UserStatus = \"offline\";\n/**\n * UserSession for tracking online users\n */\nexport interface UserSession {\n orgId: string;\n userId: string;\n userName: string;\n status: UserStatusTS;\n onlineSince: number /* int64 */;\n lastActivity: number /* int64 */;\n}\n/**\n * User status update requests\n */\nexport interface UpdateUserStatusRequest {\n orgId: string;\n userId: string;\n status: UserStatusTS;\n}\nexport interface UpdateUserStatusResponse {\n metadata: ResponseMetadata;\n}\n/**\n * Get online users\n */\nexport interface GetOnlineUsersRequest {\n orgId: string;\n}\nexport interface GetOnlineUsersResponse {\n metadata: ResponseMetadata;\n users: UserSession[];\n}\n/**\n * Analytics Trigger Models\n */\nexport interface TriggerAnalyticsScanRequest {\n org_id?: string; // Optional: if empty, scans all orgs\n}\nexport interface TriggerAnalyticsScanResponse {\n metadata: ResponseMetadata;\n chats_archived: number /* int */;\n}\n\n//////////\n// source: chat-stats-models.go\n\n/**\n * Active chat requests/responses\n */\nexport interface GetActiveChatCountRequest {\n orgId: string;\n}\nexport interface GetActiveChatCountResponse {\n count: number /* int */;\n metadata: ResponseMetadata;\n}\nexport interface GetActiveChatsRequest {\n orgId: string;\n pastHours?: number /* float64 */; // 0 means all, 0.5 means past 30 min, 1 means past hour, etc.\n}\nexport interface GetActiveChatsResponse {\n chats: ChatSummary[];\n metadata: ResponseMetadata;\n}\n/**\n * Waiting for agent requests/responses\n */\nexport interface GetWaitingForAgentChatCountRequest {\n orgId: string;\n}\nexport interface GetWaitingForAgentChatCountResponse {\n count: number /* int */;\n metadata: ResponseMetadata;\n}\nexport interface GetWaitingForAgentChatsRequest {\n orgId: string;\n}\nexport interface GetWaitingForAgentChatsResponse {\n chats: ChatSummary[];\n metadata: ResponseMetadata;\n}\n/**\n * User chats requests/responses\n */\nexport interface GetUserChatsRequest {\n orgId: string;\n userId: string;\n}\nexport interface GetUserChatsResponse {\n chats: ChatSummary[];\n metadata: ResponseMetadata;\n}\n/**\n * Daily counter requests/responses\n */\nexport interface GetDailyChatCountRequest {\n orgId: string;\n date: string /* RFC3339 */;\n timezone: string;\n}\nexport interface GetDailyChatCountResponse {\n count: number /* int64 */;\n date: string;\n timezone: string;\n metadata: any /* types.ResponseMetadata */;\n}\n\n//////////\n// source: queue-models.go\n\n\n// Queue types\nexport const QueueTypes = {\n skill: { value: 'skill', label: 'Skill-based', description: 'Route by agent expertise and skills' },\n priority: { value: 'priority', label: 'Priority-based', description: 'Route by customer tier and urgency level' },\n department: { value: 'department', label: 'Department-based', description: 'Route by business function alignment' },\n complexity: { value: 'complexity', label: 'Complexity-based', description: 'Route by issue difficulty assessment' },\n} as const;\n\nexport type QueueTypeTS = keyof typeof QueueTypes;\nexport type QueueTypeOptionTS = typeof QueueTypes[QueueTypeTS];\n\n/**\n * QueueType represents the routing algorithm type\n */\nexport type QueueType = string;\n/**\n * Queue Type Constants - These are hardcoded routing algorithms, not admin-configurable\n */\nexport const QueueTypeSkill: QueueType = \"skill\";\n/**\n * Queue Type Constants - These are hardcoded routing algorithms, not admin-configurable\n */\nexport const QueueTypePriority: QueueType = \"priority\";\n/**\n * Queue Type Constants - These are hardcoded routing algorithms, not admin-configurable\n */\nexport const QueueTypeDepartment: QueueType = \"department\";\n/**\n * Queue Type Constants - These are hardcoded routing algorithms, not admin-configurable\n */\nexport const QueueTypeComplexity: QueueType = \"complexity\";\n/**\n * AgentQueue represents an individual queue within a queue type\n */\nexport interface AgentQueue {\n id: string /* uuid */;\n orgId: string;\n type: QueueTypeTS; // \"skill\", \"priority\", etc.\n name: string; // 'technical_support', 'sales', etc. (snake_case for metadata matching)\n title: string; // 'Technical Support', 'Sales', etc. (human-readable display name)\n description: string;\n agentIds: string[]; // Agents assigned to this queue\n config: { [key: string]: any}; // Extensible configuration\n isActive: boolean;\n isDefault: boolean; // Default queue for unmatched chats\n createdAt: string /* RFC3339 */;\n updatedAt: string /* RFC3339 */;\n createdBy?: string;\n updatedBy?: string;\n}\n/**\n * GetAgentQueuesFilter represents filtering options for agent queues\n */\nexport interface GetAgentQueuesFilter {\n type?: QueueType;\n isActive?: boolean;\n}\n/**\n * Agent Queue Operations\n */\nexport interface CreateAgentQueueRequest {\n orgId: string;\n type: QueueType; // QueueTypeSkill, QueueTypePriority, etc.\n name: string; // 'technical_support', 'sales', etc. (snake_case)\n title: string; // 'Technical Support', 'Sales', etc. (human-readable)\n description: string;\n agentIds?: string[];\n config?: { [key: string]: any};\n isDefault?: boolean;\n createdBy?: string;\n updatedBy?: string;\n}\nexport interface CreateAgentQueueResponse {\n queue?: AgentQueue;\n metadata: any /* types.ResponseMetadata */;\n}\nexport interface GetAgentQueuesRequest {\n orgId: string;\n type?: QueueType; // Filter by queue type\n isActive?: boolean; // Filter by active status\n}\nexport interface GetAgentQueuesResponse {\n queues: (AgentQueue | undefined)[];\n metadata: any /* types.ResponseMetadata */;\n}\nexport interface UpdateAgentQueueRequest {\n orgId: string;\n id: string;\n type: QueueType; // QueueTypeSkill, QueueTypePriority, etc.\n name: string; // 'technical_support', 'sales', etc. (snake_case)\n title: string; // 'Technical Support', 'Sales', etc. (human-readable)\n description: string;\n agentIds?: string[];\n config?: { [key: string]: any};\n isDefault?: boolean;\n updatedBy?: string;\n}\nexport interface UpdateAgentQueueResponse {\n queue?: AgentQueue;\n metadata: any /* types.ResponseMetadata */;\n}\nexport interface DeleteAgentQueueRequest {\n orgId: string;\n id: string;\n}\nexport interface DeleteAgentQueueResponse {\n metadata: any /* types.ResponseMetadata */;\n}\n/**\n * ChatQueueInfo extends Chat with queue routing information\n */\nexport interface ChatQueueInfo {\n recommendedQueueId?: string /* uuid */;\n recommendedQueueName?: string;\n assignedQueueId?: string /* uuid */;\n assignedQueueName?: string;\n}\n\n//////////\n// source: subjects.go\n\nexport const GetWaitingForAgentChatCountSubject = \"chat.get_waiting_for_agent_chat_count\";\nexport const GetActiveChatCountSubject = \"chat.get_active_chat_count\";\nexport const GetWaitingForAgentChatsSubject = \"chat.get_waiting_for_agent_chats\";\nexport const GetActiveChatsSubject = \"chat.get_active_chats\";\nexport const GetUserChatsSubject = \"chat.get_user_chats\";\nexport const GetChatSubject = \"chat.get_chat\";\n/**\n * Chat Archival Subjects\n */\nexport const ChatArchiveSubjectPattern = \"chat.archive.%s.server\"; // %s = channel/product (e.g., shop-assist, gov-services)\n/**\n * Agent Session Subjects\n */\nexport const StartAgentSessionSubject = \"chat.agent_session.start\";\nexport const EndAgentSessionSubject = \"chat.agent_session.end\";\nexport const UpdateAgentStatusSubject = \"chat.agent_session.update_status\";\nexport const UpdateAgentLastActivitySubject = \"chat.agent_session.update_last_activity\";\nexport const AssignChatToAgentSubject = \"chat.agent_session.assign_chat\";\nexport const CompleteChatByAgentSubject = \"chat.agent_session.complete_chat\";\nexport const GetAgentSessionSubject = \"chat.agent_session.get\";\nexport const GetOnlineAgentsSubject = \"chat.agent_session.get_online_agents\";\nexport const GetOnlineAgentCountSubject = \"chat.agent_session.get_online_agent_count\";\n/**\n * Queue Management Subjects\n */\nexport const CreateAgentQueueSubject = \"chat.agent_queue.create\";\nexport const GetAgentQueuesSubject = \"chat.agent_queue.get\";\nexport const UpdateAgentQueueSubject = \"chat.agent_queue.update\";\nexport const DeleteAgentQueueSubject = \"chat.agent_queue.delete\";\n/**\n * Queue-specific Chat Subjects\n */\nexport const GetQueueChatsSubject = \"chat.queue.get_chats\";\nexport const GetQueueChatCountSubject = \"chat.queue.get_chat_count\";\n/**\n * Daily Counter Subjects\n */\nexport const GetDailyChatCountSubject = \"chat.get_daily_chat_count\";\n/**\n * User Status Subjects\n */\nexport const UpdateUserStatusSubject = \"chat.user.status.update\";\nexport const GetOnlineUsersSubject = \"chat.users.online.get\";\n/**\n * Analytics Trigger Subjects\n */\nexport const TriggerAnalyticsScanSubject = \"chat.analytics.trigger-scan\";\n/**\n * Org Setup Subject\n */\nexport const SetupOrgSubject = \"chat.org.setup\";\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elqnt/chat",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "Real-time chat functionality for Eloquent platform",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -25,6 +25,11 @@
25
25
  "import": "./dist/hooks/use-websocket-chat-customer.mjs",
26
26
  "require": "./dist/hooks/use-websocket-chat-customer.js",
27
27
  "types": "./dist/hooks/use-websocket-chat-customer.d.ts"
28
+ },
29
+ "./models": {
30
+ "import": "./dist/models/index.mjs",
31
+ "require": "./dist/models/index.js",
32
+ "types": "./dist/models/index.d.ts"
28
33
  }
29
34
  },
30
35
  "files": ["dist"],