@cossistant/core 0.1.0 → 0.1.1

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 (43) hide show
  1. package/client.d.ts +14 -2
  2. package/client.d.ts.map +1 -1
  3. package/client.js +25 -4
  4. package/client.js.map +1 -1
  5. package/env.d.ts +1 -0
  6. package/index.d.ts +7 -4
  7. package/index.js +6 -3
  8. package/package.json +1 -1
  9. package/realtime-client.d.ts +85 -0
  10. package/realtime-client.d.ts.map +1 -0
  11. package/realtime-client.js +463 -0
  12. package/realtime-client.js.map +1 -0
  13. package/realtime-event-filter.d.ts +15 -0
  14. package/realtime-event-filter.d.ts.map +1 -0
  15. package/realtime-event-filter.js +40 -0
  16. package/realtime-event-filter.js.map +1 -0
  17. package/resolve-public-key.d.ts +31 -0
  18. package/resolve-public-key.d.ts.map +1 -0
  19. package/resolve-public-key.js +52 -0
  20. package/resolve-public-key.js.map +1 -0
  21. package/rest-client.d.ts.map +1 -1
  22. package/rest-client.js +3 -2
  23. package/rest-client.js.map +1 -1
  24. package/store/seen-store.d.ts +1 -1
  25. package/store/timeline-items-store.d.ts.map +1 -1
  26. package/store/timeline-items-store.js +1 -1
  27. package/store/typing-store.d.ts +1 -1
  28. package/types/src/api/contact.js +297 -0
  29. package/types/src/api/contact.js.map +1 -0
  30. package/types/src/api/timeline-item.js +1 -1
  31. package/types/src/api/visitor.js +301 -0
  32. package/types/src/api/visitor.js.map +1 -0
  33. package/types/src/enums.js +12 -1
  34. package/types/src/enums.js.map +1 -1
  35. package/types/src/realtime-events.d.ts +2 -1
  36. package/types/src/realtime-events.d.ts.map +1 -1
  37. package/types/src/realtime-events.js +349 -0
  38. package/types/src/realtime-events.js.map +1 -0
  39. package/types/src/schemas.js +49 -0
  40. package/types/src/schemas.js.map +1 -0
  41. package/types/src/trpc/conversation.js +124 -0
  42. package/types/src/trpc/conversation.js.map +1 -0
  43. package/utils.d.ts.map +1 -1
@@ -0,0 +1,349 @@
1
+ import { ConversationEventType, ConversationStatus, ConversationTimelineType, TimelineItemVisibility } from "./enums.js";
2
+ import { visitorResponseSchema } from "./api/visitor.js";
3
+ import { conversationSchema } from "./schemas.js";
4
+ import { conversationHeaderSchema } from "./trpc/conversation.js";
5
+ import { z } from "zod";
6
+
7
+ //#region ../types/src/realtime-events.ts
8
+ const baseRealtimeEvent = z.object({
9
+ websiteId: z.string(),
10
+ organizationId: z.string(),
11
+ visitorId: z.string().nullable(),
12
+ userId: z.string().nullable()
13
+ });
14
+ /**
15
+ * Central event system for real-time communication
16
+ * All WebSocket and Redis Pub/Sub events are defined here
17
+ */
18
+ const realtimeSchema = {
19
+ userConnected: baseRealtimeEvent.extend({ connectionId: z.string() }),
20
+ userDisconnected: baseRealtimeEvent.extend({ connectionId: z.string() }),
21
+ visitorConnected: baseRealtimeEvent.extend({
22
+ visitorId: z.string(),
23
+ connectionId: z.string()
24
+ }),
25
+ visitorDisconnected: baseRealtimeEvent.extend({
26
+ visitorId: z.string(),
27
+ connectionId: z.string()
28
+ }),
29
+ userPresenceUpdate: baseRealtimeEvent.extend({
30
+ userId: z.string(),
31
+ status: z.enum([
32
+ "online",
33
+ "away",
34
+ "offline"
35
+ ]),
36
+ lastSeen: z.string()
37
+ }),
38
+ conversationSeen: baseRealtimeEvent.extend({
39
+ conversationId: z.string(),
40
+ aiAgentId: z.string().nullable(),
41
+ lastSeenAt: z.string(),
42
+ actorType: z.enum([
43
+ "visitor",
44
+ "user",
45
+ "ai_agent"
46
+ ]),
47
+ actorId: z.string()
48
+ }),
49
+ conversationTyping: baseRealtimeEvent.extend({
50
+ conversationId: z.string(),
51
+ aiAgentId: z.string().nullable(),
52
+ isTyping: z.boolean(),
53
+ visitorPreview: z.string().max(2e3).nullable().optional()
54
+ }),
55
+ timelineItemCreated: baseRealtimeEvent.extend({
56
+ conversationId: z.string(),
57
+ item: z.object({
58
+ id: z.string(),
59
+ conversationId: z.string(),
60
+ organizationId: z.string(),
61
+ visibility: z.enum([TimelineItemVisibility.PUBLIC, TimelineItemVisibility.PRIVATE]),
62
+ type: z.enum([
63
+ ConversationTimelineType.MESSAGE,
64
+ ConversationTimelineType.EVENT,
65
+ ConversationTimelineType.IDENTIFICATION,
66
+ ConversationTimelineType.TOOL
67
+ ]),
68
+ text: z.string().nullable(),
69
+ parts: z.array(z.unknown()),
70
+ userId: z.string().nullable(),
71
+ visitorId: z.string().nullable(),
72
+ aiAgentId: z.string().nullable(),
73
+ createdAt: z.string(),
74
+ deletedAt: z.string().nullable(),
75
+ tool: z.string().nullable().optional()
76
+ })
77
+ }),
78
+ conversationCreated: baseRealtimeEvent.extend({
79
+ conversationId: z.string(),
80
+ conversation: conversationSchema,
81
+ header: conversationHeaderSchema
82
+ }),
83
+ visitorIdentified: baseRealtimeEvent.extend({
84
+ visitorId: z.string(),
85
+ visitor: visitorResponseSchema
86
+ }),
87
+ conversationEventCreated: baseRealtimeEvent.extend({
88
+ conversationId: z.string(),
89
+ aiAgentId: z.string().nullable(),
90
+ event: z.object({
91
+ id: z.string(),
92
+ conversationId: z.string(),
93
+ organizationId: z.string(),
94
+ type: z.enum([
95
+ ConversationEventType.ASSIGNED,
96
+ ConversationEventType.UNASSIGNED,
97
+ ConversationEventType.PARTICIPANT_REQUESTED,
98
+ ConversationEventType.PARTICIPANT_JOINED,
99
+ ConversationEventType.PARTICIPANT_LEFT,
100
+ ConversationEventType.STATUS_CHANGED,
101
+ ConversationEventType.PRIORITY_CHANGED,
102
+ ConversationEventType.TAG_ADDED,
103
+ ConversationEventType.TAG_REMOVED,
104
+ ConversationEventType.RESOLVED,
105
+ ConversationEventType.REOPENED,
106
+ ConversationEventType.VISITOR_BLOCKED,
107
+ ConversationEventType.VISITOR_UNBLOCKED,
108
+ ConversationEventType.VISITOR_IDENTIFIED
109
+ ]),
110
+ actorUserId: z.string().nullable(),
111
+ actorAiAgentId: z.string().nullable(),
112
+ targetUserId: z.string().nullable(),
113
+ targetAiAgentId: z.string().nullable(),
114
+ message: z.string().nullable(),
115
+ metadata: z.record(z.string(), z.unknown()).nullable(),
116
+ createdAt: z.string(),
117
+ updatedAt: z.string(),
118
+ deletedAt: z.string().nullable()
119
+ })
120
+ }),
121
+ conversationUpdated: baseRealtimeEvent.extend({
122
+ conversationId: z.string(),
123
+ updates: z.object({
124
+ title: z.string().nullable().optional(),
125
+ sentiment: z.enum([
126
+ "positive",
127
+ "negative",
128
+ "neutral"
129
+ ]).nullable().optional(),
130
+ sentimentConfidence: z.number().nullable().optional(),
131
+ escalatedAt: z.string().nullable().optional(),
132
+ escalationReason: z.string().nullable().optional(),
133
+ status: z.enum([
134
+ ConversationStatus.OPEN,
135
+ ConversationStatus.RESOLVED,
136
+ ConversationStatus.SPAM
137
+ ]).optional(),
138
+ priority: z.enum([
139
+ "low",
140
+ "normal",
141
+ "high",
142
+ "urgent"
143
+ ]).optional(),
144
+ resolvedAt: z.string().nullable().optional(),
145
+ resolvedByUserId: z.string().nullable().optional(),
146
+ resolvedByAiAgentId: z.string().nullable().optional(),
147
+ resolutionTime: z.number().nullable().optional(),
148
+ deletedAt: z.string().nullable().optional()
149
+ }),
150
+ aiAgentId: z.string().nullable()
151
+ }),
152
+ aiAgentProcessingStarted: baseRealtimeEvent.extend({
153
+ conversationId: z.string(),
154
+ aiAgentId: z.string(),
155
+ workflowRunId: z.string(),
156
+ triggerMessageId: z.string(),
157
+ phase: z.string().optional(),
158
+ audience: z.enum(["all", "dashboard"]).default("dashboard")
159
+ }),
160
+ aiAgentDecisionMade: baseRealtimeEvent.extend({
161
+ conversationId: z.string(),
162
+ aiAgentId: z.string(),
163
+ workflowRunId: z.string(),
164
+ shouldAct: z.boolean(),
165
+ reason: z.string(),
166
+ mode: z.enum([
167
+ "respond_to_visitor",
168
+ "respond_to_command",
169
+ "background_only"
170
+ ]),
171
+ audience: z.enum(["all", "dashboard"])
172
+ }),
173
+ aiAgentProcessingProgress: baseRealtimeEvent.extend({
174
+ conversationId: z.string(),
175
+ aiAgentId: z.string(),
176
+ workflowRunId: z.string(),
177
+ phase: z.string(),
178
+ message: z.string().nullable(),
179
+ tool: z.object({
180
+ toolCallId: z.string(),
181
+ toolName: z.string(),
182
+ state: z.enum([
183
+ "partial",
184
+ "result",
185
+ "error"
186
+ ])
187
+ }).optional(),
188
+ audience: z.enum(["all", "dashboard"]).default("all")
189
+ }),
190
+ aiAgentProcessingCompleted: baseRealtimeEvent.extend({
191
+ conversationId: z.string(),
192
+ aiAgentId: z.string(),
193
+ workflowRunId: z.string(),
194
+ status: z.enum([
195
+ "success",
196
+ "skipped",
197
+ "cancelled",
198
+ "error"
199
+ ]),
200
+ action: z.string().nullable().optional(),
201
+ reason: z.string().nullable().optional(),
202
+ audience: z.enum(["all", "dashboard"]).default("all")
203
+ }),
204
+ timelineItemUpdated: baseRealtimeEvent.extend({
205
+ conversationId: z.string(),
206
+ item: z.object({
207
+ id: z.string(),
208
+ conversationId: z.string(),
209
+ organizationId: z.string(),
210
+ visibility: z.enum([TimelineItemVisibility.PUBLIC, TimelineItemVisibility.PRIVATE]),
211
+ type: z.enum([
212
+ ConversationTimelineType.MESSAGE,
213
+ ConversationTimelineType.EVENT,
214
+ ConversationTimelineType.IDENTIFICATION,
215
+ ConversationTimelineType.TOOL
216
+ ]),
217
+ text: z.string().nullable(),
218
+ parts: z.array(z.unknown()),
219
+ userId: z.string().nullable(),
220
+ visitorId: z.string().nullable(),
221
+ aiAgentId: z.string().nullable(),
222
+ createdAt: z.string(),
223
+ deletedAt: z.string().nullable(),
224
+ tool: z.string().nullable().optional()
225
+ })
226
+ }),
227
+ timelineItemPartUpdated: baseRealtimeEvent.extend({
228
+ conversationId: z.string(),
229
+ timelineItemId: z.string(),
230
+ partIndex: z.number(),
231
+ part: z.unknown()
232
+ }),
233
+ crawlStarted: baseRealtimeEvent.extend({
234
+ linkSourceId: z.string(),
235
+ url: z.string(),
236
+ discoveredPages: z.array(z.object({
237
+ url: z.string(),
238
+ title: z.string().nullable(),
239
+ depth: z.number()
240
+ })),
241
+ totalPagesCount: z.number()
242
+ }),
243
+ crawlProgress: baseRealtimeEvent.extend({
244
+ linkSourceId: z.string(),
245
+ url: z.string(),
246
+ page: z.object({
247
+ url: z.string(),
248
+ title: z.string().nullable(),
249
+ status: z.enum([
250
+ "pending",
251
+ "crawling",
252
+ "completed",
253
+ "failed"
254
+ ]),
255
+ sizeBytes: z.number().optional(),
256
+ error: z.string().nullable().optional()
257
+ }),
258
+ completedCount: z.number(),
259
+ totalCount: z.number()
260
+ }),
261
+ crawlCompleted: baseRealtimeEvent.extend({
262
+ linkSourceId: z.string(),
263
+ url: z.string(),
264
+ crawledPagesCount: z.number(),
265
+ totalSizeBytes: z.number(),
266
+ failedPagesCount: z.number()
267
+ }),
268
+ crawlFailed: baseRealtimeEvent.extend({
269
+ linkSourceId: z.string(),
270
+ url: z.string(),
271
+ error: z.string()
272
+ }),
273
+ linkSourceUpdated: baseRealtimeEvent.extend({
274
+ linkSourceId: z.string(),
275
+ status: z.enum([
276
+ "pending",
277
+ "mapping",
278
+ "crawling",
279
+ "completed",
280
+ "failed"
281
+ ]),
282
+ discoveredPagesCount: z.number().optional(),
283
+ crawledPagesCount: z.number().optional(),
284
+ totalSizeBytes: z.number().optional(),
285
+ errorMessage: z.string().nullable().optional()
286
+ }),
287
+ crawlPagesDiscovered: baseRealtimeEvent.extend({
288
+ linkSourceId: z.string(),
289
+ pages: z.array(z.object({
290
+ url: z.string(),
291
+ path: z.string(),
292
+ depth: z.number()
293
+ }))
294
+ }),
295
+ crawlPageCompleted: baseRealtimeEvent.extend({
296
+ linkSourceId: z.string(),
297
+ page: z.object({
298
+ url: z.string(),
299
+ title: z.string().nullable(),
300
+ sizeBytes: z.number(),
301
+ knowledgeId: z.string()
302
+ })
303
+ }),
304
+ trainingStarted: baseRealtimeEvent.extend({
305
+ aiAgentId: z.string(),
306
+ totalItems: z.number()
307
+ }),
308
+ trainingProgress: baseRealtimeEvent.extend({
309
+ aiAgentId: z.string(),
310
+ processedItems: z.number(),
311
+ totalItems: z.number(),
312
+ currentItem: z.object({
313
+ id: z.string(),
314
+ title: z.string().nullable(),
315
+ type: z.enum([
316
+ "url",
317
+ "faq",
318
+ "article"
319
+ ])
320
+ }).optional(),
321
+ percentage: z.number()
322
+ }),
323
+ trainingCompleted: baseRealtimeEvent.extend({
324
+ aiAgentId: z.string(),
325
+ totalItems: z.number(),
326
+ totalChunks: z.number(),
327
+ duration: z.number()
328
+ }),
329
+ trainingFailed: baseRealtimeEvent.extend({
330
+ aiAgentId: z.string(),
331
+ error: z.string()
332
+ })
333
+ };
334
+ /**
335
+ * Validates an event against its schema
336
+ */
337
+ function validateRealtimeEvent(type, data) {
338
+ return realtimeSchema[type].parse(data);
339
+ }
340
+ /**
341
+ * Type guard to check if a string is a valid event type
342
+ */
343
+ function isValidEventType(type) {
344
+ return typeof type === "string" && type in realtimeSchema;
345
+ }
346
+
347
+ //#endregion
348
+ export { isValidEventType, validateRealtimeEvent };
349
+ //# sourceMappingURL=realtime-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realtime-events.js","names":[],"sources":["../../../../types/src/realtime-events.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { visitorResponseSchema } from \"./api/visitor\";\nimport {\n\tConversationEventType,\n\tConversationStatus,\n\tConversationTimelineType,\n\tTimelineItemVisibility,\n} from \"./enums\";\nimport { conversationSchema } from \"./schemas\";\nimport { conversationHeaderSchema } from \"./trpc/conversation\";\n\nexport const baseRealtimeEvent = z.object({\n\twebsiteId: z.string(),\n\torganizationId: z.string(),\n\tvisitorId: z.string().nullable(),\n\tuserId: z.string().nullable(),\n});\n\n/**\n * Central event system for real-time communication\n * All WebSocket and Redis Pub/Sub events are defined here\n */\nexport const realtimeSchema = {\n\tuserConnected: baseRealtimeEvent.extend({\n\t\tconnectionId: z.string(),\n\t}),\n\tuserDisconnected: baseRealtimeEvent.extend({\n\t\tconnectionId: z.string(),\n\t}),\n\tvisitorConnected: baseRealtimeEvent.extend({\n\t\tvisitorId: z.string(),\n\t\tconnectionId: z.string(),\n\t}),\n\tvisitorDisconnected: baseRealtimeEvent.extend({\n\t\tvisitorId: z.string(),\n\t\tconnectionId: z.string(),\n\t}),\n\tuserPresenceUpdate: baseRealtimeEvent.extend({\n\t\tuserId: z.string(),\n\t\tstatus: z.enum([\"online\", \"away\", \"offline\"]),\n\t\tlastSeen: z.string(),\n\t}),\n\tconversationSeen: baseRealtimeEvent.extend({\n\t\tconversationId: z.string(),\n\t\taiAgentId: z.string().nullable(),\n\t\tlastSeenAt: z.string(),\n\t\t/** The type of actor who marked the conversation as seen */\n\t\tactorType: z.enum([\"visitor\", \"user\", \"ai_agent\"]),\n\t\t/** The actor's ID (matches one of userId, visitorId, or aiAgentId based on actorType) */\n\t\tactorId: z.string(),\n\t}),\n\tconversationTyping: baseRealtimeEvent.extend({\n\t\tconversationId: z.string(),\n\t\taiAgentId: z.string().nullable(),\n\t\tisTyping: z.boolean(),\n\t\tvisitorPreview: z.string().max(2000).nullable().optional(),\n\t}),\n\ttimelineItemCreated: baseRealtimeEvent.extend({\n\t\tconversationId: z.string(),\n\t\titem: z.object({\n\t\t\tid: z.string(),\n\t\t\tconversationId: z.string(),\n\t\t\torganizationId: z.string(),\n\t\t\tvisibility: z.enum([\n\t\t\t\tTimelineItemVisibility.PUBLIC,\n\t\t\t\tTimelineItemVisibility.PRIVATE,\n\t\t\t]),\n\t\t\ttype: z.enum([\n\t\t\t\tConversationTimelineType.MESSAGE,\n\t\t\t\tConversationTimelineType.EVENT,\n\t\t\t\tConversationTimelineType.IDENTIFICATION,\n\t\t\t\tConversationTimelineType.TOOL,\n\t\t\t]),\n\t\t\ttext: z.string().nullable(),\n\t\t\tparts: z.array(z.unknown()),\n\t\t\tuserId: z.string().nullable(),\n\t\t\tvisitorId: z.string().nullable(),\n\t\t\taiAgentId: z.string().nullable(),\n\t\t\tcreatedAt: z.string(),\n\t\t\tdeletedAt: z.string().nullable(),\n\t\t\ttool: z.string().nullable().optional(),\n\t\t}),\n\t}),\n\tconversationCreated: baseRealtimeEvent.extend({\n\t\tconversationId: z.string(),\n\t\tconversation: conversationSchema,\n\t\theader: conversationHeaderSchema,\n\t}),\n\tvisitorIdentified: baseRealtimeEvent.extend({\n\t\tvisitorId: z.string(),\n\t\tvisitor: visitorResponseSchema,\n\t}),\n\tconversationEventCreated: baseRealtimeEvent.extend({\n\t\tconversationId: z.string(),\n\t\taiAgentId: z.string().nullable(),\n\t\tevent: z.object({\n\t\t\tid: z.string(),\n\t\t\tconversationId: z.string(),\n\t\t\torganizationId: z.string(),\n\t\t\ttype: z.enum([\n\t\t\t\tConversationEventType.ASSIGNED,\n\t\t\t\tConversationEventType.UNASSIGNED,\n\t\t\t\tConversationEventType.PARTICIPANT_REQUESTED,\n\t\t\t\tConversationEventType.PARTICIPANT_JOINED,\n\t\t\t\tConversationEventType.PARTICIPANT_LEFT,\n\t\t\t\tConversationEventType.STATUS_CHANGED,\n\t\t\t\tConversationEventType.PRIORITY_CHANGED,\n\t\t\t\tConversationEventType.TAG_ADDED,\n\t\t\t\tConversationEventType.TAG_REMOVED,\n\t\t\t\tConversationEventType.RESOLVED,\n\t\t\t\tConversationEventType.REOPENED,\n\t\t\t\tConversationEventType.VISITOR_BLOCKED,\n\t\t\t\tConversationEventType.VISITOR_UNBLOCKED,\n\t\t\t\tConversationEventType.VISITOR_IDENTIFIED,\n\t\t\t]),\n\t\t\tactorUserId: z.string().nullable(),\n\t\t\tactorAiAgentId: z.string().nullable(),\n\t\t\ttargetUserId: z.string().nullable(),\n\t\t\ttargetAiAgentId: z.string().nullable(),\n\t\t\tmessage: z.string().nullable(),\n\t\t\tmetadata: z.record(z.string(), z.unknown()).nullable(),\n\t\t\tcreatedAt: z.string(),\n\t\t\tupdatedAt: z.string(),\n\t\t\tdeletedAt: z.string().nullable(),\n\t\t}),\n\t}),\n\t// Conversation updated (title, sentiment, escalation status changes, status changes)\n\tconversationUpdated: baseRealtimeEvent.extend({\n\t\tconversationId: z.string(),\n\t\tupdates: z.object({\n\t\t\ttitle: z.string().nullable().optional(),\n\t\t\tsentiment: z\n\t\t\t\t.enum([\"positive\", \"negative\", \"neutral\"])\n\t\t\t\t.nullable()\n\t\t\t\t.optional(),\n\t\t\tsentimentConfidence: z.number().nullable().optional(),\n\t\t\tescalatedAt: z.string().nullable().optional(),\n\t\t\tescalationReason: z.string().nullable().optional(),\n\t\t\tstatus: z\n\t\t\t\t.enum([\n\t\t\t\t\tConversationStatus.OPEN,\n\t\t\t\t\tConversationStatus.RESOLVED,\n\t\t\t\t\tConversationStatus.SPAM,\n\t\t\t\t])\n\t\t\t\t.optional(),\n\t\t\tpriority: z.enum([\"low\", \"normal\", \"high\", \"urgent\"]).optional(),\n\t\t\tresolvedAt: z.string().nullable().optional(),\n\t\t\tresolvedByUserId: z.string().nullable().optional(),\n\t\t\tresolvedByAiAgentId: z.string().nullable().optional(),\n\t\t\tresolutionTime: z.number().nullable().optional(),\n\t\t\tdeletedAt: z.string().nullable().optional(),\n\t\t}),\n\t\taiAgentId: z.string().nullable(),\n\t}),\n\n\t// =========================================================================\n\t// AI AGENT PROCESSING EVENTS\n\t// For progressive UI updates during AI agent responses\n\t//\n\t// AUDIENCE FIELD:\n\t// - 'all': Send to both dashboard and widget\n\t// - 'dashboard': Send only to dashboard (human agents)\n\t//\n\t// Widget (visitor) connections only receive events with audience='all'\n\t// =========================================================================\n\n\t// Emitted when AI agent starts processing a message\n\taiAgentProcessingStarted: baseRealtimeEvent.extend({\n\t\tconversationId: z.string(),\n\t\taiAgentId: z.string(),\n\t\tworkflowRunId: z.string(),\n\t\t/** ID of the trigger message that started this workflow */\n\t\ttriggerMessageId: z.string(),\n\t\t/** Initial phase of processing */\n\t\tphase: z.string().optional(),\n\t\t/** Audience: 'all' = everyone, 'dashboard' = team only */\n\t\taudience: z.enum([\"all\", \"dashboard\"]).default(\"dashboard\"),\n\t}),\n\n\t// Emitted when AI agent makes a decision about whether to act\n\taiAgentDecisionMade: baseRealtimeEvent.extend({\n\t\tconversationId: z.string(),\n\t\taiAgentId: z.string(),\n\t\tworkflowRunId: z.string(),\n\t\t/** Whether the AI decided to take action */\n\t\tshouldAct: z.boolean(),\n\t\t/** Human-readable reason for the decision */\n\t\treason: z.string(),\n\t\t/** Response mode: how the AI is responding */\n\t\tmode: z.enum([\n\t\t\t\"respond_to_visitor\",\n\t\t\t\"respond_to_command\",\n\t\t\t\"background_only\",\n\t\t]),\n\t\t/** Audience: 'all' = everyone, 'dashboard' = team only */\n\t\taudience: z.enum([\"all\", \"dashboard\"]),\n\t}),\n\n\t// Emitted for progress updates during AI agent processing\n\taiAgentProcessingProgress: baseRealtimeEvent.extend({\n\t\tconversationId: z.string(),\n\t\taiAgentId: z.string(),\n\t\tworkflowRunId: z.string(),\n\t\t/** Current phase: 'thinking', 'searching', 'tool-executing', 'generating', etc. */\n\t\tphase: z.string(),\n\t\t/** Human-readable message for display (widget sees this) */\n\t\tmessage: z.string().nullable(),\n\t\t/** Tool information when phase is tool-related */\n\t\ttool: z\n\t\t\t.object({\n\t\t\t\ttoolCallId: z.string(),\n\t\t\t\ttoolName: z.string(),\n\t\t\t\t/** Tool state: partial (executing), result (success), error (failed) */\n\t\t\t\tstate: z.enum([\"partial\", \"result\", \"error\"]),\n\t\t\t})\n\t\t\t.optional(),\n\t\t/** Audience: 'all' = everyone, 'dashboard' = team only */\n\t\taudience: z.enum([\"all\", \"dashboard\"]).default(\"all\"),\n\t}),\n\n\t// Emitted when AI agent finishes processing\n\taiAgentProcessingCompleted: baseRealtimeEvent.extend({\n\t\tconversationId: z.string(),\n\t\taiAgentId: z.string(),\n\t\tworkflowRunId: z.string(),\n\t\t/** Whether processing completed successfully, was skipped, cancelled, or errored */\n\t\tstatus: z.enum([\"success\", \"skipped\", \"cancelled\", \"error\"]),\n\t\t/** Action taken (if status is 'success') */\n\t\taction: z.string().nullable().optional(),\n\t\t/** Reason for skip/cancel/error */\n\t\treason: z.string().nullable().optional(),\n\t\t/** Audience: 'all' = everyone, 'dashboard' = team only */\n\t\taudience: z.enum([\"all\", \"dashboard\"]).default(\"all\"),\n\t}),\n\n\t// =========================================================================\n\t// TIMELINE ITEM UPDATE EVENTS\n\t// For updating timeline items with new parts or state changes\n\t// =========================================================================\n\n\t// Emitted when an entire timeline item is updated (e.g., parts added)\n\ttimelineItemUpdated: baseRealtimeEvent.extend({\n\t\tconversationId: z.string(),\n\t\titem: z.object({\n\t\t\tid: z.string(),\n\t\t\tconversationId: z.string(),\n\t\t\torganizationId: z.string(),\n\t\t\tvisibility: z.enum([\n\t\t\t\tTimelineItemVisibility.PUBLIC,\n\t\t\t\tTimelineItemVisibility.PRIVATE,\n\t\t\t]),\n\t\t\ttype: z.enum([\n\t\t\t\tConversationTimelineType.MESSAGE,\n\t\t\t\tConversationTimelineType.EVENT,\n\t\t\t\tConversationTimelineType.IDENTIFICATION,\n\t\t\t\tConversationTimelineType.TOOL,\n\t\t\t]),\n\t\t\ttext: z.string().nullable(),\n\t\t\tparts: z.array(z.unknown()),\n\t\t\tuserId: z.string().nullable(),\n\t\t\tvisitorId: z.string().nullable(),\n\t\t\taiAgentId: z.string().nullable(),\n\t\t\tcreatedAt: z.string(),\n\t\t\tdeletedAt: z.string().nullable(),\n\t\t\ttool: z.string().nullable().optional(),\n\t\t}),\n\t}),\n\n\t// Emitted for granular part updates (e.g., tool state changes)\n\ttimelineItemPartUpdated: baseRealtimeEvent.extend({\n\t\tconversationId: z.string(),\n\t\ttimelineItemId: z.string(),\n\t\t/** Index of the part in the parts array */\n\t\tpartIndex: z.number(),\n\t\t/** The updated part data */\n\t\tpart: z.unknown(),\n\t}),\n\t// Web crawling events\n\tcrawlStarted: baseRealtimeEvent.extend({\n\t\tlinkSourceId: z.string(),\n\t\turl: z.string(),\n\t\tdiscoveredPages: z.array(\n\t\t\tz.object({\n\t\t\t\turl: z.string(),\n\t\t\t\ttitle: z.string().nullable(),\n\t\t\t\tdepth: z.number(),\n\t\t\t})\n\t\t),\n\t\ttotalPagesCount: z.number(),\n\t}),\n\tcrawlProgress: baseRealtimeEvent.extend({\n\t\tlinkSourceId: z.string(),\n\t\turl: z.string(),\n\t\tpage: z.object({\n\t\t\turl: z.string(),\n\t\t\ttitle: z.string().nullable(),\n\t\t\tstatus: z.enum([\"pending\", \"crawling\", \"completed\", \"failed\"]),\n\t\t\tsizeBytes: z.number().optional(),\n\t\t\terror: z.string().nullable().optional(),\n\t\t}),\n\t\tcompletedCount: z.number(),\n\t\ttotalCount: z.number(),\n\t}),\n\tcrawlCompleted: baseRealtimeEvent.extend({\n\t\tlinkSourceId: z.string(),\n\t\turl: z.string(),\n\t\tcrawledPagesCount: z.number(),\n\t\ttotalSizeBytes: z.number(),\n\t\tfailedPagesCount: z.number(),\n\t}),\n\tcrawlFailed: baseRealtimeEvent.extend({\n\t\tlinkSourceId: z.string(),\n\t\turl: z.string(),\n\t\terror: z.string(),\n\t}),\n\t// Link source updated (for status changes, etc.)\n\tlinkSourceUpdated: baseRealtimeEvent.extend({\n\t\tlinkSourceId: z.string(),\n\t\tstatus: z.enum([\"pending\", \"mapping\", \"crawling\", \"completed\", \"failed\"]),\n\t\tdiscoveredPagesCount: z.number().optional(),\n\t\tcrawledPagesCount: z.number().optional(),\n\t\ttotalSizeBytes: z.number().optional(),\n\t\terrorMessage: z.string().nullable().optional(),\n\t}),\n\t// Emitted after map phase with all discovered URLs (for real-time tree display)\n\tcrawlPagesDiscovered: baseRealtimeEvent.extend({\n\t\tlinkSourceId: z.string(),\n\t\tpages: z.array(\n\t\t\tz.object({\n\t\t\t\turl: z.string(),\n\t\t\t\tpath: z.string(),\n\t\t\t\tdepth: z.number(),\n\t\t\t})\n\t\t),\n\t}),\n\t// Emitted when each page completes scraping (for real-time updates)\n\tcrawlPageCompleted: baseRealtimeEvent.extend({\n\t\tlinkSourceId: z.string(),\n\t\tpage: z.object({\n\t\t\turl: z.string(),\n\t\t\ttitle: z.string().nullable(),\n\t\t\tsizeBytes: z.number(),\n\t\t\tknowledgeId: z.string(),\n\t\t}),\n\t}),\n\n\t// =========================================================================\n\t// AI TRAINING EVENTS\n\t// For knowledge base embedding generation and progress tracking\n\t// =========================================================================\n\n\t// Emitted when AI training starts\n\ttrainingStarted: baseRealtimeEvent.extend({\n\t\taiAgentId: z.string(),\n\t\ttotalItems: z.number(),\n\t}),\n\n\t// Emitted for progress updates during AI training\n\ttrainingProgress: baseRealtimeEvent.extend({\n\t\taiAgentId: z.string(),\n\t\tprocessedItems: z.number(),\n\t\ttotalItems: z.number(),\n\t\tcurrentItem: z\n\t\t\t.object({\n\t\t\t\tid: z.string(),\n\t\t\t\ttitle: z.string().nullable(),\n\t\t\t\ttype: z.enum([\"url\", \"faq\", \"article\"]),\n\t\t\t})\n\t\t\t.optional(),\n\t\tpercentage: z.number(),\n\t}),\n\n\t// Emitted when AI training completes successfully\n\ttrainingCompleted: baseRealtimeEvent.extend({\n\t\taiAgentId: z.string(),\n\t\ttotalItems: z.number(),\n\t\ttotalChunks: z.number(),\n\t\tduration: z.number(), // milliseconds\n\t}),\n\n\t// Emitted when AI training fails\n\ttrainingFailed: baseRealtimeEvent.extend({\n\t\taiAgentId: z.string(),\n\t\terror: z.string(),\n\t}),\n} as const;\n\nexport type RealtimeEventType = keyof typeof realtimeSchema;\n\nexport type RealtimeEventPayload<T extends RealtimeEventType> = z.infer<\n\t(typeof realtimeSchema)[T]\n>;\n\nexport type RealtimeEvent<T extends RealtimeEventType> = {\n\ttype: T;\n\tpayload: RealtimeEventPayload<T>;\n};\n\nexport type AnyRealtimeEvent = {\n\t[K in RealtimeEventType]: RealtimeEvent<K>;\n}[RealtimeEventType];\n\nexport type RealtimeEventData<T extends RealtimeEventType> =\n\tRealtimeEventPayload<T>;\n\n/**\n * Validates an event against its schema\n */\nexport function validateRealtimeEvent<T extends RealtimeEventType>(\n\ttype: T,\n\tdata: unknown\n): RealtimeEventPayload<T> {\n\tconst schema = realtimeSchema[type];\n\treturn schema.parse(data) as RealtimeEventPayload<T>;\n}\n\n/**\n * Type guard to check if a string is a valid event type\n */\nexport function isValidEventType(type: unknown): type is RealtimeEventType {\n\treturn typeof type === \"string\" && type in realtimeSchema;\n}\n\nexport function getEventPayload<T extends RealtimeEventType>(\n\tevent: RealtimeEvent<T>\n): RealtimeEventPayload<T> {\n\treturn event.payload;\n}\n"],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { ConversationStatus } from "./enums.js";
2
+ import { timelineItemSchema } from "./api/timeline-item.js";
3
+ import { z } from "zod";
4
+
5
+ //#region ../types/src/schemas.ts
6
+ const viewSchema = z.object({
7
+ id: z.string(),
8
+ name: z.string(),
9
+ description: z.string().nullable(),
10
+ prompt: z.string().nullable(),
11
+ organizationId: z.string(),
12
+ websiteId: z.string(),
13
+ createdAt: z.string(),
14
+ updatedAt: z.string(),
15
+ deletedAt: z.string().nullable()
16
+ });
17
+ const conversationSchema = z.object({
18
+ id: z.string(),
19
+ title: z.string().optional(),
20
+ createdAt: z.string(),
21
+ updatedAt: z.string(),
22
+ visitorId: z.string(),
23
+ websiteId: z.string(),
24
+ status: z.enum([
25
+ ConversationStatus.OPEN,
26
+ ConversationStatus.RESOLVED,
27
+ ConversationStatus.SPAM
28
+ ]).default(ConversationStatus.OPEN),
29
+ visitorRating: z.number().int().min(1).max(5).nullable().optional(),
30
+ visitorRatingAt: z.string().nullable().optional(),
31
+ deletedAt: z.string().nullable().default(null),
32
+ visitorLastSeenAt: z.string().nullable().optional(),
33
+ lastTimelineItem: timelineItemSchema.optional()
34
+ });
35
+ const conversationSeenSchema = z.object({
36
+ id: z.string(),
37
+ conversationId: z.string(),
38
+ userId: z.string().nullable(),
39
+ visitorId: z.string().nullable(),
40
+ aiAgentId: z.string().nullable(),
41
+ lastSeenAt: z.string(),
42
+ createdAt: z.string(),
43
+ updatedAt: z.string(),
44
+ deletedAt: z.string().nullable()
45
+ });
46
+
47
+ //#endregion
48
+ export { conversationSchema, conversationSeenSchema };
49
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","names":[],"sources":["../../../../types/src/schemas.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { timelineItemSchema } from \"./api/timeline-item\";\nimport { ConversationEventType, ConversationStatus } from \"./enums\";\n\nexport const viewSchema = z.object({\n\tid: z.string(),\n\tname: z.string(),\n\tdescription: z.string().nullable(),\n\tprompt: z.string().nullable(),\n\torganizationId: z.string(),\n\twebsiteId: z.string(),\n\tcreatedAt: z.string(),\n\tupdatedAt: z.string(),\n\tdeletedAt: z.string().nullable(),\n});\n\nexport type InboxView = z.infer<typeof viewSchema>;\n\nexport const conversationSchema = z.object({\n\tid: z.string(),\n\ttitle: z.string().optional(),\n\tcreatedAt: z.string(),\n\tupdatedAt: z.string(),\n\tvisitorId: z.string(),\n\twebsiteId: z.string(),\n\tstatus: z\n\t\t.enum([\n\t\t\tConversationStatus.OPEN,\n\t\t\tConversationStatus.RESOLVED,\n\t\t\tConversationStatus.SPAM,\n\t\t])\n\t\t.default(ConversationStatus.OPEN),\n\tvisitorRating: z.number().int().min(1).max(5).nullable().optional(),\n\tvisitorRatingAt: z.string().nullable().optional(),\n\tdeletedAt: z.string().nullable().default(null),\n\tvisitorLastSeenAt: z.string().nullable().optional(),\n\tlastTimelineItem: timelineItemSchema.optional(),\n});\n\nexport type Conversation = z.infer<typeof conversationSchema>;\n\nexport const conversationSeenSchema = z.object({\n\tid: z.string(),\n\tconversationId: z.string(),\n\tuserId: z.string().nullable(),\n\tvisitorId: z.string().nullable(),\n\taiAgentId: z.string().nullable(),\n\tlastSeenAt: z.string(),\n\tcreatedAt: z.string(),\n\tupdatedAt: z.string(),\n\tdeletedAt: z.string().nullable(),\n});\n\nexport type ConversationSeen = z.infer<typeof conversationSeenSchema>;\n"],"mappings":";;;;;AAIA,MAAa,aAAa,EAAE,OAAO;CAClC,IAAI,EAAE,QAAQ;CACd,MAAM,EAAE,QAAQ;CAChB,aAAa,EAAE,QAAQ,CAAC,UAAU;CAClC,QAAQ,EAAE,QAAQ,CAAC,UAAU;CAC7B,gBAAgB,EAAE,QAAQ;CAC1B,WAAW,EAAE,QAAQ;CACrB,WAAW,EAAE,QAAQ;CACrB,WAAW,EAAE,QAAQ;CACrB,WAAW,EAAE,QAAQ,CAAC,UAAU;CAChC,CAAC;AAIF,MAAa,qBAAqB,EAAE,OAAO;CAC1C,IAAI,EAAE,QAAQ;CACd,OAAO,EAAE,QAAQ,CAAC,UAAU;CAC5B,WAAW,EAAE,QAAQ;CACrB,WAAW,EAAE,QAAQ;CACrB,WAAW,EAAE,QAAQ;CACrB,WAAW,EAAE,QAAQ;CACrB,QAAQ,EACN,KAAK;EACL,mBAAmB;EACnB,mBAAmB;EACnB,mBAAmB;EACnB,CAAC,CACD,QAAQ,mBAAmB,KAAK;CAClC,eAAe,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU;CACnE,iBAAiB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU;CACjD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ,KAAK;CAC9C,mBAAmB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU;CACnD,kBAAkB,mBAAmB,UAAU;CAC/C,CAAC;AAIF,MAAa,yBAAyB,EAAE,OAAO;CAC9C,IAAI,EAAE,QAAQ;CACd,gBAAgB,EAAE,QAAQ;CAC1B,QAAQ,EAAE,QAAQ,CAAC,UAAU;CAC7B,WAAW,EAAE,QAAQ,CAAC,UAAU;CAChC,WAAW,EAAE,QAAQ,CAAC,UAAU;CAChC,YAAY,EAAE,QAAQ;CACtB,WAAW,EAAE,QAAQ;CACrB,WAAW,EAAE,QAAQ;CACrB,WAAW,EAAE,QAAQ,CAAC,UAAU;CAChC,CAAC"}
@@ -0,0 +1,124 @@
1
+ import { ConversationPriority, ConversationSentiment, ConversationStatus } from "../enums.js";
2
+ import { visitorProfileSchema } from "../api/visitor.js";
3
+ import { timelineItemSchema } from "../api/timeline-item.js";
4
+ import { conversationSeenSchema } from "../schemas.js";
5
+ import { z } from "zod";
6
+
7
+ //#region ../types/src/trpc/conversation.ts
8
+ const conversationStatusSchema = z.enum([
9
+ ConversationStatus.OPEN,
10
+ ConversationStatus.RESOLVED,
11
+ ConversationStatus.SPAM
12
+ ]);
13
+ const conversationPrioritySchema = z.enum([
14
+ ConversationPriority.LOW,
15
+ ConversationPriority.NORMAL,
16
+ ConversationPriority.HIGH,
17
+ ConversationPriority.URGENT
18
+ ]);
19
+ const conversationSentimentSchema = z.enum([
20
+ ConversationSentiment.POSITIVE,
21
+ ConversationSentiment.NEGATIVE,
22
+ ConversationSentiment.NEUTRAL
23
+ ]).nullable();
24
+ const conversationRecordSchema = z.object({
25
+ id: z.string(),
26
+ organizationId: z.string(),
27
+ visitorId: z.string(),
28
+ websiteId: z.string(),
29
+ status: conversationStatusSchema,
30
+ priority: conversationPrioritySchema,
31
+ sentiment: conversationSentimentSchema,
32
+ sentimentConfidence: z.number().nullable(),
33
+ channel: z.string(),
34
+ title: z.string().nullable(),
35
+ resolutionTime: z.number().nullable(),
36
+ visitorRating: z.number().int().min(1).max(5).nullable(),
37
+ visitorRatingAt: z.string().nullable(),
38
+ startedAt: z.string().nullable(),
39
+ firstResponseAt: z.string().nullable(),
40
+ resolvedAt: z.string().nullable(),
41
+ lastMessageAt: z.string().nullable(),
42
+ lastMessageBy: z.string().nullable(),
43
+ resolvedByUserId: z.string().nullable(),
44
+ resolvedByAiAgentId: z.string().nullable(),
45
+ escalatedAt: z.string().nullable(),
46
+ escalatedByAiAgentId: z.string().nullable(),
47
+ escalationReason: z.string().nullable(),
48
+ escalationHandledAt: z.string().nullable(),
49
+ escalationHandledByUserId: z.string().nullable(),
50
+ aiPausedUntil: z.string().nullable(),
51
+ createdAt: z.string(),
52
+ updatedAt: z.string(),
53
+ deletedAt: z.string().nullable()
54
+ });
55
+ const conversationMutationResponseSchema = z.object({ conversation: conversationRecordSchema });
56
+ const conversationHeaderSchema = z.object({
57
+ id: z.string(),
58
+ status: conversationStatusSchema,
59
+ priority: conversationPrioritySchema,
60
+ organizationId: z.string(),
61
+ visitorId: z.string(),
62
+ visitor: visitorProfileSchema,
63
+ websiteId: z.string(),
64
+ channel: z.string(),
65
+ title: z.string().nullable(),
66
+ resolutionTime: z.number().nullable(),
67
+ visitorRating: z.number().int().min(1).max(5).nullable(),
68
+ visitorRatingAt: z.string().nullable(),
69
+ startedAt: z.string().nullable(),
70
+ firstResponseAt: z.string().nullable(),
71
+ resolvedAt: z.string().nullable(),
72
+ resolvedByUserId: z.string().nullable(),
73
+ resolvedByAiAgentId: z.string().nullable(),
74
+ escalatedAt: z.string().nullable(),
75
+ escalatedByAiAgentId: z.string().nullable(),
76
+ escalationReason: z.string().nullable(),
77
+ escalationHandledAt: z.string().nullable(),
78
+ escalationHandledByUserId: z.string().nullable(),
79
+ aiPausedUntil: z.string().nullable(),
80
+ createdAt: z.string(),
81
+ updatedAt: z.string(),
82
+ deletedAt: z.string().nullable(),
83
+ lastMessageAt: z.string().nullable(),
84
+ lastSeenAt: z.string().nullable(),
85
+ lastMessageTimelineItem: timelineItemSchema.nullable(),
86
+ lastTimelineItem: timelineItemSchema.nullable(),
87
+ viewIds: z.array(z.string()),
88
+ seenData: z.array(conversationSeenSchema)
89
+ });
90
+ const listConversationHeadersResponseSchema = z.object({
91
+ items: z.array(conversationHeaderSchema),
92
+ nextCursor: z.string().nullable()
93
+ });
94
+ const inboxAnalyticsRangeSchema = z.union([
95
+ z.literal(7),
96
+ z.literal(14),
97
+ z.literal(30)
98
+ ]);
99
+ const inboxAnalyticsRequestSchema = z.object({
100
+ websiteSlug: z.string(),
101
+ rangeDays: inboxAnalyticsRangeSchema.optional().default(7)
102
+ });
103
+ const inboxAnalyticsMetricsSchema = z.object({
104
+ medianResponseTimeSeconds: z.number().nullable(),
105
+ medianResolutionTimeSeconds: z.number().nullable(),
106
+ aiHandledRate: z.number().nullable(),
107
+ satisfactionIndex: z.number().nullable(),
108
+ uniqueVisitors: z.number()
109
+ });
110
+ const inboxAnalyticsResponseSchema = z.object({
111
+ range: z.object({
112
+ rangeDays: inboxAnalyticsRangeSchema,
113
+ currentStart: z.string(),
114
+ currentEnd: z.string(),
115
+ previousStart: z.string(),
116
+ previousEnd: z.string()
117
+ }),
118
+ current: inboxAnalyticsMetricsSchema,
119
+ previous: inboxAnalyticsMetricsSchema
120
+ });
121
+
122
+ //#endregion
123
+ export { conversationHeaderSchema };
124
+ //# sourceMappingURL=conversation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation.js","names":[],"sources":["../../../../../types/src/trpc/conversation.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { timelineItemSchema } from \"../api/timeline-item\";\nimport { visitorProfileSchema } from \"../api/visitor\";\nimport {\n\tConversationPriority,\n\tConversationSentiment,\n\tConversationStatus,\n} from \"../enums\";\nimport { conversationSeenSchema } from \"../schemas\";\n\nexport const conversationStatusSchema = z.enum([\n\tConversationStatus.OPEN,\n\tConversationStatus.RESOLVED,\n\tConversationStatus.SPAM,\n]);\n\nexport const conversationPrioritySchema = z.enum([\n\tConversationPriority.LOW,\n\tConversationPriority.NORMAL,\n\tConversationPriority.HIGH,\n\tConversationPriority.URGENT,\n]);\n\nexport const conversationSentimentSchema = z\n\t.enum([\n\t\tConversationSentiment.POSITIVE,\n\t\tConversationSentiment.NEGATIVE,\n\t\tConversationSentiment.NEUTRAL,\n\t])\n\t.nullable();\n\nexport const conversationRecordSchema = z.object({\n\tid: z.string(),\n\torganizationId: z.string(),\n\tvisitorId: z.string(),\n\twebsiteId: z.string(),\n\tstatus: conversationStatusSchema,\n\tpriority: conversationPrioritySchema,\n\tsentiment: conversationSentimentSchema,\n\tsentimentConfidence: z.number().nullable(),\n\tchannel: z.string(),\n\ttitle: z.string().nullable(),\n\tresolutionTime: z.number().nullable(),\n\tvisitorRating: z.number().int().min(1).max(5).nullable(),\n\tvisitorRatingAt: z.string().nullable(),\n\tstartedAt: z.string().nullable(),\n\tfirstResponseAt: z.string().nullable(),\n\tresolvedAt: z.string().nullable(),\n\tlastMessageAt: z.string().nullable(),\n\tlastMessageBy: z.string().nullable(),\n\tresolvedByUserId: z.string().nullable(),\n\tresolvedByAiAgentId: z.string().nullable(),\n\t// Escalation tracking\n\tescalatedAt: z.string().nullable(),\n\tescalatedByAiAgentId: z.string().nullable(),\n\tescalationReason: z.string().nullable(),\n\tescalationHandledAt: z.string().nullable(),\n\tescalationHandledByUserId: z.string().nullable(),\n\t// AI pause control\n\taiPausedUntil: z.string().nullable(),\n\tcreatedAt: z.string(),\n\tupdatedAt: z.string(),\n\tdeletedAt: z.string().nullable(),\n});\n\nexport type ConversationRecordResponse = z.infer<\n\ttypeof conversationRecordSchema\n>;\n\nexport const conversationMutationResponseSchema = z.object({\n\tconversation: conversationRecordSchema,\n});\n\nexport const conversationHeaderSchema = z.object({\n\tid: z.string(),\n\tstatus: conversationStatusSchema,\n\tpriority: conversationPrioritySchema,\n\torganizationId: z.string(),\n\tvisitorId: z.string(),\n\tvisitor: visitorProfileSchema,\n\twebsiteId: z.string(),\n\tchannel: z.string(),\n\ttitle: z.string().nullable(),\n\tresolutionTime: z.number().nullable(),\n\tvisitorRating: z.number().int().min(1).max(5).nullable(),\n\tvisitorRatingAt: z.string().nullable(),\n\tstartedAt: z.string().nullable(),\n\tfirstResponseAt: z.string().nullable(),\n\tresolvedAt: z.string().nullable(),\n\tresolvedByUserId: z.string().nullable(),\n\tresolvedByAiAgentId: z.string().nullable(),\n\t// Escalation tracking\n\tescalatedAt: z.string().nullable(),\n\tescalatedByAiAgentId: z.string().nullable(),\n\tescalationReason: z.string().nullable(),\n\tescalationHandledAt: z.string().nullable(),\n\tescalationHandledByUserId: z.string().nullable(),\n\t// AI pause control\n\taiPausedUntil: z.string().nullable(),\n\tcreatedAt: z.string(),\n\tupdatedAt: z.string(),\n\tdeletedAt: z.string().nullable(),\n\tlastMessageAt: z.string().nullable(),\n\tlastSeenAt: z.string().nullable(),\n\tlastMessageTimelineItem: timelineItemSchema.nullable(),\n\tlastTimelineItem: timelineItemSchema.nullable(),\n\tviewIds: z.array(z.string()),\n\tseenData: z.array(conversationSeenSchema),\n});\n\nexport const listConversationHeadersResponseSchema = z.object({\n\titems: z.array(conversationHeaderSchema),\n\tnextCursor: z.string().nullable(),\n});\n\nexport const inboxAnalyticsRangeSchema = z.union([\n\tz.literal(7),\n\tz.literal(14),\n\tz.literal(30),\n]);\n\nexport const inboxAnalyticsRequestSchema = z.object({\n\twebsiteSlug: z.string(),\n\trangeDays: inboxAnalyticsRangeSchema.optional().default(7),\n});\n\nexport const inboxAnalyticsMetricsSchema = z.object({\n\tmedianResponseTimeSeconds: z.number().nullable(),\n\tmedianResolutionTimeSeconds: z.number().nullable(),\n\taiHandledRate: z.number().nullable(),\n\tsatisfactionIndex: z.number().nullable(),\n\tuniqueVisitors: z.number(),\n});\n\nexport const inboxAnalyticsResponseSchema = z.object({\n\trange: z.object({\n\t\trangeDays: inboxAnalyticsRangeSchema,\n\t\tcurrentStart: z.string(),\n\t\tcurrentEnd: z.string(),\n\t\tpreviousStart: z.string(),\n\t\tpreviousEnd: z.string(),\n\t}),\n\tcurrent: inboxAnalyticsMetricsSchema,\n\tprevious: inboxAnalyticsMetricsSchema,\n});\n\nexport type ConversationMutationResponse = z.infer<\n\ttypeof conversationMutationResponseSchema\n>;\n\nexport type ConversationHeader = z.infer<typeof conversationHeaderSchema>;\n\nexport type InboxAnalyticsRequest = z.infer<typeof inboxAnalyticsRequestSchema>;\nexport type InboxAnalyticsResponse = z.infer<\n\ttypeof inboxAnalyticsResponseSchema\n>;\n"],"mappings":"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"}
package/utils.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","names":[],"sources":["../src/utils.ts"],"sourcesContent":[],"mappings":";cAGa,YAAU;AAAV,iBAEG,WAAA,CAFO,IAA6B,EAAA,MAAA,CAAA,EAAA,OAAA;AAEpC,cAOH,sBAPc,EAAA,GAAA,GAAA,MAAA;AAOd,cAKA,iBAFZ,EAAA,GAAA,GAAA,MAAA"}
1
+ {"version":3,"file":"utils.d.ts","names":[],"sources":["../src/utils.ts"],"sourcesContent":[],"mappings":";cAGa,YAAU;AAAV,iBAEG,WAAA,CAFoC,IAAA,EAAA,MAAA,CAAA,EAAA,OAAA;AAEpC,cAOH,sBAPc,EAAA,GAAA,GAAA,MAAA;AAOd,cAKA,iBAFZ,EAAA,GAAA,GAAA,MAAA"}