@opencx/widget 2.1.0 → 2.3.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 (69) hide show
  1. package/README.md +30 -105
  2. package/dist/basic.cjs +4 -4
  3. package/dist/basic.cjs.map +1 -1
  4. package/dist/basic.js +790 -785
  5. package/dist/basic.js.map +1 -1
  6. package/dist/core/client/api.d.ts +21 -7
  7. package/dist/core/client/chat.d.ts +62 -0
  8. package/dist/core/client/chat.test.d.ts +1 -0
  9. package/dist/core/client/client.d.ts +6 -36
  10. package/dist/core/client/config.d.ts +35 -0
  11. package/dist/core/client/config.test.d.ts +1 -0
  12. package/dist/core/client/contact.d.ts +32 -0
  13. package/dist/core/client/contact.test.d.ts +1 -0
  14. package/dist/core/client/index.d.ts +3 -1
  15. package/dist/core/index.d.ts +6 -1
  16. package/dist/core/platform/index.d.ts +1 -10
  17. package/dist/core/types/index.d.ts +24 -2
  18. package/dist/core/types/pub-sub.d.ts +19 -82
  19. package/dist/core/types/schemas-v2.d.ts +687 -0
  20. package/dist/core/utils/create-fetch.d.ts +24 -0
  21. package/dist/index-B7LNpE9i.cjs +18 -0
  22. package/dist/index-B7LNpE9i.cjs.map +1 -0
  23. package/dist/{index-zWyDrord.js → index-BQfnx4Er.js} +1182 -1310
  24. package/dist/index-BQfnx4Er.js.map +1 -0
  25. package/dist/index.cjs +1 -1
  26. package/dist/index.cjs.map +1 -1
  27. package/dist/index.js +376 -370
  28. package/dist/index.js.map +1 -1
  29. package/dist/react-bindings/context/ChatContext.d.ts +130 -0
  30. package/dist/react-bindings/hooks/useContact.d.ts +9 -0
  31. package/dist/react-bindings/hooks/usePubsub.d.ts +3 -0
  32. package/dist/react-bindings/hooks/useSendMessage.d.ts +6 -0
  33. package/dist/react-bindings/index.d.ts +3 -0
  34. package/dist/react-lib/hooks/useAbstractChat.d.ts +42 -45
  35. package/dist/react-lib/hooks/useAxiosInstance.d.ts +37 -0
  36. package/dist/react-lib/hooks/useUploadFiles.d.ts +1 -1
  37. package/dist/react-lib/providers/ChatProvider.d.ts +54 -46
  38. package/dist/react-lib/types/index.d.ts +1 -0
  39. package/dist/react.cjs +1 -1
  40. package/dist/react.cjs.map +1 -1
  41. package/dist/react.js +2 -2
  42. package/dist/react.js.map +1 -1
  43. package/dist/schemas-BBAV6Sd_.js +122 -0
  44. package/dist/schemas-BBAV6Sd_.js.map +1 -0
  45. package/dist/schemas-wky4fpbc.cjs +2 -0
  46. package/dist/schemas-wky4fpbc.cjs.map +1 -0
  47. package/dist/src/components/dialog.d.ts +2 -2
  48. package/dist/src/designs/basic/index.d.ts +5 -2
  49. package/dist/style.css +1 -1
  50. package/dist-embed/script.js +106 -106
  51. package/dist-embed/script.js.map +1 -1
  52. package/package.json +1 -3
  53. package/dist/core/managers/chathistory-manager.d.ts +0 -61
  54. package/dist/core/managers/session-manager.d.ts +0 -35
  55. package/dist/core/transport/http.transport.d.ts +0 -17
  56. package/dist/core/transport/transport.d.ts +0 -25
  57. package/dist/core/types/transport.d.ts +0 -31
  58. package/dist/history-to-widget-messages-CP0hKjhv.js +0 -195
  59. package/dist/history-to-widget-messages-CP0hKjhv.js.map +0 -1
  60. package/dist/history-to-widget-messages-CdbZolRN.cjs +0 -2
  61. package/dist/history-to-widget-messages-CdbZolRN.cjs.map +0 -1
  62. package/dist/index-BGDwCf6r.cjs +0 -18
  63. package/dist/index-BGDwCf6r.cjs.map +0 -1
  64. package/dist/index-zWyDrord.js.map +0 -1
  65. package/dist/react-lib/hooks/handle-socket-messages.d.ts +0 -27
  66. package/dist/react-lib/hooks/socket.d.ts +0 -11
  67. package/dist/react-lib/hooks/socketState.d.ts +0 -2
  68. package/dist/react-lib/hooks/useBaseClient.d.ts +0 -2
  69. package/dist/react-lib/providers/ClientProvider.d.ts +0 -7
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@opencx/widget",
3
3
  "private": false,
4
- "version": "2.1.0",
4
+ "version": "2.3.0",
5
5
  "type": "module",
6
6
  "publishConfig": {
7
7
  "access": "public"
@@ -18,7 +18,6 @@
18
18
  },
19
19
  "optionalDependencies": {
20
20
  "axios": "^1.7.5",
21
- "socket.io-client": "^4.7.5",
22
21
  "zod": "^3.23.8"
23
22
  },
24
23
  "dependencies": {
@@ -122,7 +121,6 @@
122
121
  "react-use": "^17.5.1",
123
122
  "rehype-raw": "^7.0.0",
124
123
  "remark-gfm": "^4.0.0",
125
- "socket.io-client": "^4.7.5",
126
124
  "swr": "^2.2.5",
127
125
  "tailwind-merge": "^2.4.0",
128
126
  "tailwindcss": "^3.4.6",
@@ -1,61 +0,0 @@
1
- import { ChatHistoryMessageType, MessageType, UserMessageType } from '../types';
2
- import { EventMap, PubSub } from '../types/pub-sub';
3
- /**
4
- * Events emitted by the ChatHistoryManager
5
- */
6
- export interface ChatHistoryEvents extends EventMap {
7
- "history:message:added": MessageType;
8
- "history:message:updated": MessageType;
9
- "history:updated": MessageType[];
10
- "history:cleared": void;
11
- }
12
- /**
13
- * Manages chat history and message operations.
14
- * Uses a strongly typed event system for history-related events.
15
- *
16
- * @example
17
- * ```typescript
18
- * const history = new ChatHistoryManager();
19
- *
20
- * // Subscribe to events
21
- * history.on('history:message:added', (message) => {
22
- * console.log('New message:', message);
23
- * });
24
- *
25
- * // Add messages
26
- * history.appendUserMessage({
27
- * id: '123',
28
- * type: 'FROM_USER',
29
- * content: 'Hello'
30
- * });
31
- * ```
32
- */
33
- export declare class ChatHistoryManager extends PubSub<ChatHistoryEvents> {
34
- private messages;
35
- private lastUpdated;
36
- constructor();
37
- /**
38
- * Subscribe to history events
39
- * @param event Event name to subscribe to
40
- * @param callback Callback function to handle the event
41
- * @returns Unsubscribe function
42
- */
43
- on<K extends keyof ChatHistoryEvents>(event: K, callback: (data: ChatHistoryEvents[K]) => void): () => void;
44
- private handleNewMessage;
45
- private handleHistoryUpdate;
46
- private notifyHistoryUpdate;
47
- addResponseMessage(message: MessageType): void;
48
- appendUserMessage(message: UserMessageType): void;
49
- prependHistory(historyMessages: MessageType[]): void;
50
- setDeliveredAt(clientMessageId: string, deliveredAt: string): void;
51
- setMessages(messages: MessageType[]): void;
52
- appendMessages(newMessages: MessageType[]): void;
53
- reset(): void;
54
- getMessages(): readonly MessageType[];
55
- getLastUpdated(): number | null;
56
- getLastMessageTimestamp(): string | undefined;
57
- isEmpty(): boolean;
58
- mapHistoryMessages(historyMessages: ChatHistoryMessageType[]): MessageType[];
59
- private updateTimestamp;
60
- protected cleanup(): void;
61
- }
@@ -1,35 +0,0 @@
1
- import { EventMap, PubSub } from '../types/pub-sub';
2
- import { ChatSessionType } from '../types/schemas';
3
- import { ApiCaller } from '../client/api';
4
- export type ChatSessionWithStatus = ChatSessionType & {
5
- isSessionClosed: boolean;
6
- isAssignedToAi: boolean;
7
- isAssignedToHuman: boolean;
8
- isPendingHuman: boolean;
9
- };
10
- /**
11
- * Events emitted by the SessionManager
12
- */
13
- interface SessionEvents extends EventMap {
14
- "session:updated": ChatSessionType;
15
- "session:created": ChatSessionType;
16
- "session:closed": {
17
- sessionId: string;
18
- };
19
- "session:error": {
20
- error: Error;
21
- };
22
- }
23
- export declare class SessionManager extends PubSub<SessionEvents> {
24
- #private;
25
- private readonly httpClient;
26
- constructor(httpClient: ApiCaller, initialSession?: ChatSessionType);
27
- get currentSession(): ChatSessionWithStatus | null;
28
- setSession(session: ChatSessionType): void;
29
- clearSession: () => void;
30
- createSession(): Promise<ChatSessionType>;
31
- getOrCreateSession(): Promise<ChatSessionType>;
32
- refreshSession(sessionId: string): Promise<ChatSessionType | null>;
33
- protected cleanup(): void;
34
- }
35
- export {};
@@ -1,17 +0,0 @@
1
- import { Platform } from '../platform';
2
- import { MessageData, TransportOptions } from '../types/transport';
3
- import { MessagingTransport } from './transport';
4
- interface HttpTransportOptions extends TransportOptions {
5
- pollingInterval: number;
6
- }
7
- export declare class HttpTransport extends MessagingTransport {
8
- private readonly httpOptions;
9
- private readonly platform;
10
- private pollingInterval?;
11
- constructor(httpOptions: HttpTransportOptions, platform?: Platform);
12
- connect(): Promise<void>;
13
- disconnect(): void;
14
- sendMessage(message: MessageData): Promise<void>;
15
- private startPolling;
16
- }
17
- export {};
@@ -1,25 +0,0 @@
1
- import { MessageData, TransportOptions } from '../types/transport';
2
- import { PubSub } from '../types/pub-sub';
3
- export interface TransportEvents extends Record<string, any> {
4
- "transport:message:received": MessageData;
5
- "transport:error": {
6
- error: Error;
7
- };
8
- "transport:status": {
9
- status: "connected" | "disconnected";
10
- };
11
- }
12
- export interface TransportState {
13
- connected: boolean;
14
- }
15
- export declare abstract class MessagingTransport extends PubSub<TransportEvents> {
16
- #private;
17
- protected readonly options: TransportOptions;
18
- constructor(options: TransportOptions);
19
- abstract connect(): Promise<void>;
20
- abstract disconnect(): void;
21
- abstract sendMessage(message: MessageData): Promise<void>;
22
- protected setState(newState: Partial<TransportState>): void;
23
- isConnected(): boolean;
24
- getState(): TransportState;
25
- }
@@ -1,31 +0,0 @@
1
- import { CoreOptions } from './index';
2
- import { ApiCaller } from '../client/api';
3
- import { SessionManager } from '../managers/session-manager';
4
- import { ChatAttachmentType } from './schemas';
5
- export type TransportOptions = {
6
- api: ApiCaller;
7
- sessionManager: SessionManager;
8
- coreOptions: CoreOptions;
9
- };
10
- export interface MessageData {
11
- id: string;
12
- content: {
13
- text: string;
14
- };
15
- timestamp: string;
16
- bot_token: string;
17
- session_id: string;
18
- headers?: Record<string, string>;
19
- attachments?: ChatAttachmentType[];
20
- pathParams?: Record<string, string>;
21
- queryParams?: Record<string, string>;
22
- user?: {
23
- external_id?: string;
24
- name?: string;
25
- email?: string;
26
- phone?: string;
27
- customData?: Record<string, string>;
28
- avatarUrl?: string;
29
- };
30
- language?: string;
31
- }
@@ -1,195 +0,0 @@
1
- import e from "zod";
2
- const r = (t = 20) => {
3
- const n = "abcdefghijklmnopqrstuvwxyz0123456789";
4
- let s = "";
5
- for (let i = 0; i < t; i++)
6
- s += n[Math.floor(Math.random() * n.length)];
7
- return s;
8
- };
9
- var _ = /* @__PURE__ */ ((t) => (t[t.OPEN = 0] = "OPEN", t[t.CLOSED_RESOLVED = 1] = "CLOSED_RESOLVED", t[t.CLOSED_UNRESOLVED = 2] = "CLOSED_UNRESOLVED", t))(_ || {}), g = /* @__PURE__ */ ((t) => (t.WEB = "web", t.WEB_VOICE = "web_voice", t.PHONE_VOICE = "phone_voice", t.EMAIL = "email", t.SMS = "sms", t.WHATSAPP = "whatsapp", t.API = "api", t))(g || {}), c = /* @__PURE__ */ ((t) => (t.resolved = "resolved", t.assumed_resolved = "assumed_resolved", t.handed_off = "handed_off", t))(c || {}), m = /* @__PURE__ */ ((t) => (t.happy = "happy", t.neutral = "neutral", t.angry = "angry", t))(m || {}), d = /* @__PURE__ */ ((t) => (t.MESSAGE = "message", t.HANDOFF = "handoff", t.HANDOFF_TO_ZENDESK = "handoff_to_zendesk", t.AGENT_MESSAGE = "agent_message", t.AGENT_JOINED = "agent_joined", t.AGENT_TOOK_SESSION_FROM_AI = "agent_took_session_from_ai", t.AI_DECIDED_TO_RESOLVE_THE_ISSUE = "ai_decided_to_resolve_the_issue", t.EMAIL_DRAFT_MESSAGE = "email_draft_message", t.FOLLOWUP = "followup", t))(d || {});
10
- const p = e.object({
11
- id: e.string(),
12
- ai_closure_type: e.nativeEnum(c).nullable(),
13
- assignee_id: e.number().nullable(),
14
- channel: e.nativeEnum(g),
15
- summary: e.string().nullable(),
16
- status: e.nativeEnum(_),
17
- language: e.string().nullable(),
18
- last_message: e.string().nullable(),
19
- last_message_at: e.date().nullable(),
20
- assignee: e.object({
21
- name: e.string(),
22
- email: e.string(),
23
- avatar_url: e.string().optional()
24
- }).nullable().optional(),
25
- sentiment: e.nativeEnum(m).nullable()
26
- }), u = e.object({
27
- id: e.string(),
28
- name: e.string(),
29
- size: e.number(),
30
- type: e.string(),
31
- url: e.string()
32
- });
33
- e.object({
34
- publicId: e.string().uuid(),
35
- message: e.string().nullable(),
36
- type: e.string().nullable(),
37
- agent_avatar: e.string().nullable(),
38
- agent_id: e.number().nullable(),
39
- agent_name: e.string().nullable(),
40
- created_at: e.string(),
41
- from_user: e.boolean().nullable(),
42
- handoff_happened_during_office_hours: e.boolean().nullable(),
43
- session_id: e.string(),
44
- updated_at: e.string().nullable(),
45
- attachments: e.array(u).optional()
46
- });
47
- const b = e.object({
48
- name: e.string(),
49
- is_ai: e.boolean(),
50
- profile_picture: e.string().optional().nullable(),
51
- id: e.string().nullable()
52
- }), h = e.object({
53
- type: e.literal("message"),
54
- value: e.string(),
55
- attachments: e.array(u).optional(),
56
- is_stream_chunk: e.boolean().optional(),
57
- server_session_id: e.string(),
58
- client_message_id: e.string().optional(),
59
- server_message_id: e.string()
60
- }), E = e.object({
61
- type: e.literal("info"),
62
- value: e.string()
63
- }), v = e.object({
64
- type: e.literal("ui"),
65
- value: e.object({
66
- type: e.string(),
67
- request_response: e.any(),
68
- name: e.string(),
69
- content: e.string(),
70
- message_id: e.string().optional()
71
- }),
72
- client_message_id: e.string().optional(),
73
- server_session_id: e.string()
74
- }), f = e.object({
75
- type: e.literal("chat_event"),
76
- value: e.object({
77
- event: e.nativeEnum(d),
78
- message: e.string()
79
- })
80
- }), O = e.object({
81
- type: e.literal("options"),
82
- value: e.object({
83
- options: e.array(e.string())
84
- }),
85
- server_session_id: e.string()
86
- }), S = e.object({
87
- type: e.literal("session_update"),
88
- value: e.object({
89
- session: p
90
- }),
91
- server_session_id: e.string()
92
- });
93
- e.discriminatedUnion("type", [
94
- h,
95
- E,
96
- v,
97
- f,
98
- O,
99
- S
100
- ]).and(
101
- e.object({
102
- timestamp: e.string(),
103
- agent: b
104
- })
105
- );
106
- e.object({
107
- id: e.string(),
108
- name: e.string().nullable(),
109
- created_at: e.string(),
110
- avatar_url: e.string().nullable(),
111
- email: e.string().nullable()
112
- });
113
- function y(t) {
114
- var s, i, o;
115
- const n = [];
116
- for (let l = 0; l < t.length; l++) {
117
- const a = t[l];
118
- if (a.from_user === !0)
119
- a.message && a.message.length > 0 && n.push({
120
- type: "FROM_USER",
121
- content: a.message,
122
- id: a.publicId || r(),
123
- deliveredAt: a.created_at || "",
124
- attachments: a.attachments
125
- });
126
- else
127
- switch (a.type) {
128
- case "message":
129
- n.push({
130
- type: "FROM_BOT",
131
- component: "TEXT",
132
- data: {
133
- message: a.message ?? ""
134
- },
135
- id: a.publicId || r(),
136
- timestamp: a.created_at || "",
137
- original: a,
138
- attachments: a.attachments,
139
- agent: {
140
- id: ((s = a.agent_id) == null ? void 0 : s.toString()) ?? null,
141
- is_ai: !0,
142
- profile_picture: a.agent_avatar || "",
143
- name: a.agent_name || ""
144
- }
145
- });
146
- break;
147
- case "agent_message":
148
- n.push({
149
- type: "FROM_BOT",
150
- component: "TEXT",
151
- data: {
152
- message: a.message ?? ""
153
- },
154
- id: a.publicId || r(),
155
- timestamp: a.created_at || "",
156
- original: a,
157
- attachments: a.attachments,
158
- agent: {
159
- id: ((i = a.agent_id) == null ? void 0 : i.toString()) ?? null,
160
- is_ai: !1,
161
- name: a.agent_name || "",
162
- profile_picture: a.agent_avatar || ""
163
- }
164
- });
165
- break;
166
- default:
167
- n.push({
168
- type: "FROM_BOT",
169
- component: "CHAT_EVENT",
170
- data: {
171
- event: a.type,
172
- message: a.message ?? ""
173
- },
174
- id: a.publicId || r(),
175
- original: a,
176
- attachments: a.attachments,
177
- timestamp: a.created_at || "",
178
- agent: {
179
- is_ai: !0,
180
- id: ((o = a.agent_id) == null ? void 0 : o.toString()) ?? null,
181
- name: a.agent_name || "",
182
- profile_picture: a.agent_avatar || ""
183
- }
184
- });
185
- }
186
- }
187
- return n;
188
- }
189
- export {
190
- c as A,
191
- _ as S,
192
- r as g,
193
- y as m
194
- };
195
- //# sourceMappingURL=history-to-widget-messages-CP0hKjhv.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"history-to-widget-messages-CP0hKjhv.js","sources":["../core/utils/genId.ts","../core/types/schemas.ts","../core/utils/history-to-widget-messages.ts"],"sourcesContent":["const genId = (len = 20) => {\n const chars = \"abcdefghijklmnopqrstuvwxyz0123456789\";\n let id = \"\";\n for (let i = 0; i < len; i++) {\n id += chars[Math.floor(Math.random() * chars.length)];\n }\n return id;\n};\n\nexport { genId };\n","import z from \"zod\";\n\nexport enum SessionStatus {\n OPEN = 0,\n CLOSED_RESOLVED = 1,\n CLOSED_UNRESOLVED = 2,\n}\n\nexport enum SessionChannel {\n WEB = \"web\",\n WEB_VOICE = \"web_voice\",\n PHONE_VOICE = \"phone_voice\",\n EMAIL = \"email\",\n SMS = \"sms\",\n WHATSAPP = \"whatsapp\",\n API = \"api\",\n}\n\nexport enum AIClosureType {\n resolved = \"resolved\",\n assumed_resolved = \"assumed_resolved\",\n handed_off = \"handed_off\",\n}\n\nexport enum SentimentEnum {\n happy = \"happy\",\n neutral = \"neutral\",\n angry = \"angry\",\n}\n\nexport enum MessageTypeEnum {\n MESSAGE = \"message\",\n HANDOFF = \"handoff\",\n HANDOFF_TO_ZENDESK = \"handoff_to_zendesk\",\n AGENT_MESSAGE = \"agent_message\",\n AGENT_JOINED = \"agent_joined\",\n AGENT_TOOK_SESSION_FROM_AI = \"agent_took_session_from_ai\",\n AI_DECIDED_TO_RESOLVE_THE_ISSUE = \"ai_decided_to_resolve_the_issue\",\n EMAIL_DRAFT_MESSAGE = \"email_draft_message\",\n FOLLOWUP = \"followup\",\n}\n\nexport const chatSessionSchema = z.object({\n id: z.string(),\n ai_closure_type: z.nativeEnum(AIClosureType).nullable(),\n assignee_id: z.number().nullable(),\n channel: z.nativeEnum(SessionChannel),\n summary: z.string().nullable(),\n status: z.nativeEnum(SessionStatus),\n language: z.string().nullable(),\n last_message: z.string().nullable(),\n last_message_at: z.date().nullable(),\n assignee: z\n .object({\n name: z.string(),\n email: z.string(),\n avatar_url: z.string().optional(),\n })\n .nullable()\n .optional(),\n sentiment: z.nativeEnum(SentimentEnum).nullable(),\n});\n\nexport type ChatAttachmentType = {\n id: string;\n name: string;\n size: number;\n type: string;\n url: string;\n};\n\nexport const chatAttachmentSchema = z.object({\n id: z.string(),\n name: z.string(),\n size: z.number(),\n type: z.string(),\n url: z.string(),\n}) as z.ZodType<ChatAttachmentType>;\n\nexport const chatHistoryMessageSchema = z.object({\n publicId: z.string().uuid(),\n message: z.string().nullable(),\n type: z.string().nullable(),\n agent_avatar: z.string().nullable(),\n agent_id: z.number().nullable(),\n agent_name: z.string().nullable(),\n created_at: z.string(),\n from_user: z.boolean().nullable(),\n handoff_happened_during_office_hours: z.boolean().nullable(),\n session_id: z.string(),\n updated_at: z.string().nullable(),\n attachments: z.array(chatAttachmentSchema).optional(),\n});\n// ---------- socket responses ----------\n\nconst agentSchema = z.object({\n name: z.string(),\n is_ai: z.boolean(),\n profile_picture: z.string().optional().nullable(),\n id: z.string().nullable(),\n});\n\nconst messageSchema = z.object({\n type: z.literal(\"message\"),\n value: z.string(),\n attachments: z.array(chatAttachmentSchema).optional(),\n is_stream_chunk: z.boolean().optional(),\n server_session_id: z.string(),\n client_message_id: z.string().optional(),\n server_message_id: z.string(),\n});\n\nconst infoSchema = z.object({\n type: z.literal(\"info\"),\n value: z.string(),\n});\n\nconst uiSchema = z.object({\n type: z.literal(\"ui\"),\n value: z.object({\n type: z.string(),\n request_response: z.any(),\n name: z.string(),\n content: z.string(),\n message_id: z.string().optional(),\n }),\n client_message_id: z.string().optional(),\n server_session_id: z.string(),\n});\n\nconst chatEventSchema = z.object({\n type: z.literal(\"chat_event\"),\n value: z.object({\n event: z.nativeEnum(MessageTypeEnum),\n message: z.string(),\n }),\n});\n\nconst optionsSchema = z.object({\n type: z.literal(\"options\"),\n value: z.object({\n options: z.array(z.string()),\n }),\n server_session_id: z.string(),\n});\n\nconst sessionUpdateSchema = z.object({\n type: z.literal(\"session_update\"),\n value: z.object({\n session: chatSessionSchema,\n }),\n server_session_id: z.string(),\n});\n\nexport const structuredSocketMessageSchema = z\n .discriminatedUnion(\"type\", [\n messageSchema,\n infoSchema,\n uiSchema,\n chatEventSchema,\n optionsSchema,\n sessionUpdateSchema,\n ])\n .and(\n z.object({\n timestamp: z.string(),\n agent: agentSchema,\n }),\n );\n\nexport const consumerSchema = z.object({\n id: z.string(),\n name: z.string().nullable(),\n created_at: z.string(),\n avatar_url: z.string().nullable(),\n email: z.string().nullable(),\n});\n\ntype AgentType = z.infer<typeof agentSchema>;\ntype ConsumerType = z.infer<typeof consumerSchema>;\ntype ChatSessionType = z.infer<typeof chatSessionSchema>;\ntype ChatSessionWithStatus = ChatSessionType & {\n isSessionClosed: boolean;\n isAssignedToAi: boolean;\n isAssignedToHuman: boolean;\n isPendingHuman: boolean;\n};\ntype StructuredSocketMessageType = z.infer<\n typeof structuredSocketMessageSchema\n>;\ntype ChatHistoryMessageType = z.infer<typeof chatHistoryMessageSchema>;\nexport type {\n AgentType,\n ConsumerType,\n ChatSessionType,\n StructuredSocketMessageType,\n ChatHistoryMessageType,\n ChatSessionWithStatus,\n};\n","import { MessageType } from \"../types/messages\";\nimport { ChatHistoryMessageType } from \"../types/schemas\";\nimport { genId } from \"./genId\";\n\nfunction mapChatHistoryToMessage(value: ChatHistoryMessageType[]) {\n const messages: MessageType[] = [];\n for (let i = 0; i < value.length; i++) {\n const msg = value[i];\n\n if (msg.from_user === true) {\n if (msg.message && msg.message.length > 0) {\n messages.push({\n type: \"FROM_USER\",\n content: msg.message,\n id: msg.publicId || genId(),\n deliveredAt: msg.created_at || \"\",\n attachments: msg.attachments,\n });\n }\n } else {\n switch (msg.type) {\n case \"message\":\n messages.push({\n type: \"FROM_BOT\",\n component: \"TEXT\",\n data: {\n message: msg.message ?? \"\",\n },\n id: msg.publicId || genId(),\n timestamp: msg.created_at || \"\",\n original: msg,\n attachments: msg.attachments,\n agent: {\n id: msg.agent_id?.toString() ?? null,\n is_ai: true,\n profile_picture: msg.agent_avatar || \"\",\n name: msg.agent_name || \"\",\n },\n });\n break;\n case \"agent_message\":\n messages.push({\n type: \"FROM_BOT\",\n component: \"TEXT\",\n data: {\n message: msg.message ?? \"\",\n },\n id: msg.publicId || genId(),\n timestamp: msg.created_at || \"\",\n original: msg,\n attachments: msg.attachments,\n agent: {\n id: msg.agent_id?.toString() ?? null,\n is_ai: false,\n name: msg.agent_name || \"\",\n profile_picture: msg.agent_avatar || \"\",\n },\n });\n break;\n default:\n messages.push({\n type: \"FROM_BOT\",\n component: \"CHAT_EVENT\",\n data: {\n event: msg.type,\n message: msg.message ?? \"\",\n },\n id: msg.publicId || genId(),\n original: msg,\n attachments: msg.attachments,\n timestamp: msg.created_at || \"\",\n agent: {\n is_ai: true,\n id: msg.agent_id?.toString() ?? null,\n name: msg.agent_name || \"\",\n profile_picture: msg.agent_avatar || \"\",\n },\n });\n }\n }\n }\n return messages;\n}\n\nexport { mapChatHistoryToMessage };\n"],"names":["genId","len","chars","id","SessionStatus","SessionChannel","AIClosureType","SentimentEnum","MessageTypeEnum","chatSessionSchema","z","chatAttachmentSchema","agentSchema","messageSchema","infoSchema","uiSchema","chatEventSchema","optionsSchema","sessionUpdateSchema","mapChatHistoryToMessage","value","messages","i","msg","_a","_b","_c"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- "use strict";const e=require("zod"),r=(t=20)=>{const n="abcdefghijklmnopqrstuvwxyz0123456789";let s="";for(let i=0;i<t;i++)s+=n[Math.floor(Math.random()*n.length)];return s};var o=(t=>(t[t.OPEN=0]="OPEN",t[t.CLOSED_RESOLVED=1]="CLOSED_RESOLVED",t[t.CLOSED_UNRESOLVED=2]="CLOSED_UNRESOLVED",t))(o||{}),c=(t=>(t.WEB="web",t.WEB_VOICE="web_voice",t.PHONE_VOICE="phone_voice",t.EMAIL="email",t.SMS="sms",t.WHATSAPP="whatsapp",t.API="api",t))(c||{}),_=(t=>(t.resolved="resolved",t.assumed_resolved="assumed_resolved",t.handed_off="handed_off",t))(_||{}),m=(t=>(t.happy="happy",t.neutral="neutral",t.angry="angry",t))(m||{}),d=(t=>(t.MESSAGE="message",t.HANDOFF="handoff",t.HANDOFF_TO_ZENDESK="handoff_to_zendesk",t.AGENT_MESSAGE="agent_message",t.AGENT_JOINED="agent_joined",t.AGENT_TOOK_SESSION_FROM_AI="agent_took_session_from_ai",t.AI_DECIDED_TO_RESOLVE_THE_ISSUE="ai_decided_to_resolve_the_issue",t.EMAIL_DRAFT_MESSAGE="email_draft_message",t.FOLLOWUP="followup",t))(d||{});const p=e.object({id:e.string(),ai_closure_type:e.nativeEnum(_).nullable(),assignee_id:e.number().nullable(),channel:e.nativeEnum(c),summary:e.string().nullable(),status:e.nativeEnum(o),language:e.string().nullable(),last_message:e.string().nullable(),last_message_at:e.date().nullable(),assignee:e.object({name:e.string(),email:e.string(),avatar_url:e.string().optional()}).nullable().optional(),sentiment:e.nativeEnum(m).nullable()}),u=e.object({id:e.string(),name:e.string(),size:e.number(),type:e.string(),url:e.string()});e.object({publicId:e.string().uuid(),message:e.string().nullable(),type:e.string().nullable(),agent_avatar:e.string().nullable(),agent_id:e.number().nullable(),agent_name:e.string().nullable(),created_at:e.string(),from_user:e.boolean().nullable(),handoff_happened_during_office_hours:e.boolean().nullable(),session_id:e.string(),updated_at:e.string().nullable(),attachments:e.array(u).optional()});const b=e.object({name:e.string(),is_ai:e.boolean(),profile_picture:e.string().optional().nullable(),id:e.string().nullable()}),h=e.object({type:e.literal("message"),value:e.string(),attachments:e.array(u).optional(),is_stream_chunk:e.boolean().optional(),server_session_id:e.string(),client_message_id:e.string().optional(),server_message_id:e.string()}),E=e.object({type:e.literal("info"),value:e.string()}),v=e.object({type:e.literal("ui"),value:e.object({type:e.string(),request_response:e.any(),name:e.string(),content:e.string(),message_id:e.string().optional()}),client_message_id:e.string().optional(),server_session_id:e.string()}),f=e.object({type:e.literal("chat_event"),value:e.object({event:e.nativeEnum(d),message:e.string()})}),O=e.object({type:e.literal("options"),value:e.object({options:e.array(e.string())}),server_session_id:e.string()}),S=e.object({type:e.literal("session_update"),value:e.object({session:p}),server_session_id:e.string()});e.discriminatedUnion("type",[h,E,v,f,O,S]).and(e.object({timestamp:e.string(),agent:b}));e.object({id:e.string(),name:e.string().nullable(),created_at:e.string(),avatar_url:e.string().nullable(),email:e.string().nullable()});function y(t){var s,i,g;const n=[];for(let l=0;l<t.length;l++){const a=t[l];if(a.from_user===!0)a.message&&a.message.length>0&&n.push({type:"FROM_USER",content:a.message,id:a.publicId||r(),deliveredAt:a.created_at||"",attachments:a.attachments});else switch(a.type){case"message":n.push({type:"FROM_BOT",component:"TEXT",data:{message:a.message??""},id:a.publicId||r(),timestamp:a.created_at||"",original:a,attachments:a.attachments,agent:{id:((s=a.agent_id)==null?void 0:s.toString())??null,is_ai:!0,profile_picture:a.agent_avatar||"",name:a.agent_name||""}});break;case"agent_message":n.push({type:"FROM_BOT",component:"TEXT",data:{message:a.message??""},id:a.publicId||r(),timestamp:a.created_at||"",original:a,attachments:a.attachments,agent:{id:((i=a.agent_id)==null?void 0:i.toString())??null,is_ai:!1,name:a.agent_name||"",profile_picture:a.agent_avatar||""}});break;default:n.push({type:"FROM_BOT",component:"CHAT_EVENT",data:{event:a.type,message:a.message??""},id:a.publicId||r(),original:a,attachments:a.attachments,timestamp:a.created_at||"",agent:{is_ai:!0,id:((g=a.agent_id)==null?void 0:g.toString())??null,name:a.agent_name||"",profile_picture:a.agent_avatar||""}})}}return n}exports.AIClosureType=_;exports.SessionStatus=o;exports.genId=r;exports.mapChatHistoryToMessage=y;
2
- //# sourceMappingURL=history-to-widget-messages-CdbZolRN.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"history-to-widget-messages-CdbZolRN.cjs","sources":["../core/utils/genId.ts","../core/types/schemas.ts","../core/utils/history-to-widget-messages.ts"],"sourcesContent":["const genId = (len = 20) => {\n const chars = \"abcdefghijklmnopqrstuvwxyz0123456789\";\n let id = \"\";\n for (let i = 0; i < len; i++) {\n id += chars[Math.floor(Math.random() * chars.length)];\n }\n return id;\n};\n\nexport { genId };\n","import z from \"zod\";\n\nexport enum SessionStatus {\n OPEN = 0,\n CLOSED_RESOLVED = 1,\n CLOSED_UNRESOLVED = 2,\n}\n\nexport enum SessionChannel {\n WEB = \"web\",\n WEB_VOICE = \"web_voice\",\n PHONE_VOICE = \"phone_voice\",\n EMAIL = \"email\",\n SMS = \"sms\",\n WHATSAPP = \"whatsapp\",\n API = \"api\",\n}\n\nexport enum AIClosureType {\n resolved = \"resolved\",\n assumed_resolved = \"assumed_resolved\",\n handed_off = \"handed_off\",\n}\n\nexport enum SentimentEnum {\n happy = \"happy\",\n neutral = \"neutral\",\n angry = \"angry\",\n}\n\nexport enum MessageTypeEnum {\n MESSAGE = \"message\",\n HANDOFF = \"handoff\",\n HANDOFF_TO_ZENDESK = \"handoff_to_zendesk\",\n AGENT_MESSAGE = \"agent_message\",\n AGENT_JOINED = \"agent_joined\",\n AGENT_TOOK_SESSION_FROM_AI = \"agent_took_session_from_ai\",\n AI_DECIDED_TO_RESOLVE_THE_ISSUE = \"ai_decided_to_resolve_the_issue\",\n EMAIL_DRAFT_MESSAGE = \"email_draft_message\",\n FOLLOWUP = \"followup\",\n}\n\nexport const chatSessionSchema = z.object({\n id: z.string(),\n ai_closure_type: z.nativeEnum(AIClosureType).nullable(),\n assignee_id: z.number().nullable(),\n channel: z.nativeEnum(SessionChannel),\n summary: z.string().nullable(),\n status: z.nativeEnum(SessionStatus),\n language: z.string().nullable(),\n last_message: z.string().nullable(),\n last_message_at: z.date().nullable(),\n assignee: z\n .object({\n name: z.string(),\n email: z.string(),\n avatar_url: z.string().optional(),\n })\n .nullable()\n .optional(),\n sentiment: z.nativeEnum(SentimentEnum).nullable(),\n});\n\nexport type ChatAttachmentType = {\n id: string;\n name: string;\n size: number;\n type: string;\n url: string;\n};\n\nexport const chatAttachmentSchema = z.object({\n id: z.string(),\n name: z.string(),\n size: z.number(),\n type: z.string(),\n url: z.string(),\n}) as z.ZodType<ChatAttachmentType>;\n\nexport const chatHistoryMessageSchema = z.object({\n publicId: z.string().uuid(),\n message: z.string().nullable(),\n type: z.string().nullable(),\n agent_avatar: z.string().nullable(),\n agent_id: z.number().nullable(),\n agent_name: z.string().nullable(),\n created_at: z.string(),\n from_user: z.boolean().nullable(),\n handoff_happened_during_office_hours: z.boolean().nullable(),\n session_id: z.string(),\n updated_at: z.string().nullable(),\n attachments: z.array(chatAttachmentSchema).optional(),\n});\n// ---------- socket responses ----------\n\nconst agentSchema = z.object({\n name: z.string(),\n is_ai: z.boolean(),\n profile_picture: z.string().optional().nullable(),\n id: z.string().nullable(),\n});\n\nconst messageSchema = z.object({\n type: z.literal(\"message\"),\n value: z.string(),\n attachments: z.array(chatAttachmentSchema).optional(),\n is_stream_chunk: z.boolean().optional(),\n server_session_id: z.string(),\n client_message_id: z.string().optional(),\n server_message_id: z.string(),\n});\n\nconst infoSchema = z.object({\n type: z.literal(\"info\"),\n value: z.string(),\n});\n\nconst uiSchema = z.object({\n type: z.literal(\"ui\"),\n value: z.object({\n type: z.string(),\n request_response: z.any(),\n name: z.string(),\n content: z.string(),\n message_id: z.string().optional(),\n }),\n client_message_id: z.string().optional(),\n server_session_id: z.string(),\n});\n\nconst chatEventSchema = z.object({\n type: z.literal(\"chat_event\"),\n value: z.object({\n event: z.nativeEnum(MessageTypeEnum),\n message: z.string(),\n }),\n});\n\nconst optionsSchema = z.object({\n type: z.literal(\"options\"),\n value: z.object({\n options: z.array(z.string()),\n }),\n server_session_id: z.string(),\n});\n\nconst sessionUpdateSchema = z.object({\n type: z.literal(\"session_update\"),\n value: z.object({\n session: chatSessionSchema,\n }),\n server_session_id: z.string(),\n});\n\nexport const structuredSocketMessageSchema = z\n .discriminatedUnion(\"type\", [\n messageSchema,\n infoSchema,\n uiSchema,\n chatEventSchema,\n optionsSchema,\n sessionUpdateSchema,\n ])\n .and(\n z.object({\n timestamp: z.string(),\n agent: agentSchema,\n }),\n );\n\nexport const consumerSchema = z.object({\n id: z.string(),\n name: z.string().nullable(),\n created_at: z.string(),\n avatar_url: z.string().nullable(),\n email: z.string().nullable(),\n});\n\ntype AgentType = z.infer<typeof agentSchema>;\ntype ConsumerType = z.infer<typeof consumerSchema>;\ntype ChatSessionType = z.infer<typeof chatSessionSchema>;\ntype ChatSessionWithStatus = ChatSessionType & {\n isSessionClosed: boolean;\n isAssignedToAi: boolean;\n isAssignedToHuman: boolean;\n isPendingHuman: boolean;\n};\ntype StructuredSocketMessageType = z.infer<\n typeof structuredSocketMessageSchema\n>;\ntype ChatHistoryMessageType = z.infer<typeof chatHistoryMessageSchema>;\nexport type {\n AgentType,\n ConsumerType,\n ChatSessionType,\n StructuredSocketMessageType,\n ChatHistoryMessageType,\n ChatSessionWithStatus,\n};\n","import { MessageType } from \"../types/messages\";\nimport { ChatHistoryMessageType } from \"../types/schemas\";\nimport { genId } from \"./genId\";\n\nfunction mapChatHistoryToMessage(value: ChatHistoryMessageType[]) {\n const messages: MessageType[] = [];\n for (let i = 0; i < value.length; i++) {\n const msg = value[i];\n\n if (msg.from_user === true) {\n if (msg.message && msg.message.length > 0) {\n messages.push({\n type: \"FROM_USER\",\n content: msg.message,\n id: msg.publicId || genId(),\n deliveredAt: msg.created_at || \"\",\n attachments: msg.attachments,\n });\n }\n } else {\n switch (msg.type) {\n case \"message\":\n messages.push({\n type: \"FROM_BOT\",\n component: \"TEXT\",\n data: {\n message: msg.message ?? \"\",\n },\n id: msg.publicId || genId(),\n timestamp: msg.created_at || \"\",\n original: msg,\n attachments: msg.attachments,\n agent: {\n id: msg.agent_id?.toString() ?? null,\n is_ai: true,\n profile_picture: msg.agent_avatar || \"\",\n name: msg.agent_name || \"\",\n },\n });\n break;\n case \"agent_message\":\n messages.push({\n type: \"FROM_BOT\",\n component: \"TEXT\",\n data: {\n message: msg.message ?? \"\",\n },\n id: msg.publicId || genId(),\n timestamp: msg.created_at || \"\",\n original: msg,\n attachments: msg.attachments,\n agent: {\n id: msg.agent_id?.toString() ?? null,\n is_ai: false,\n name: msg.agent_name || \"\",\n profile_picture: msg.agent_avatar || \"\",\n },\n });\n break;\n default:\n messages.push({\n type: \"FROM_BOT\",\n component: \"CHAT_EVENT\",\n data: {\n event: msg.type,\n message: msg.message ?? \"\",\n },\n id: msg.publicId || genId(),\n original: msg,\n attachments: msg.attachments,\n timestamp: msg.created_at || \"\",\n agent: {\n is_ai: true,\n id: msg.agent_id?.toString() ?? null,\n name: msg.agent_name || \"\",\n profile_picture: msg.agent_avatar || \"\",\n },\n });\n }\n }\n }\n return messages;\n}\n\nexport { mapChatHistoryToMessage };\n"],"names":["genId","len","chars","id","SessionStatus","SessionChannel","AIClosureType","SentimentEnum","MessageTypeEnum","chatSessionSchema","z","chatAttachmentSchema","agentSchema","messageSchema","infoSchema","uiSchema","chatEventSchema","optionsSchema","sessionUpdateSchema","mapChatHistoryToMessage","value","messages","i","msg","_a","_b","_c"],"mappings":"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"}