catalist-support-agent 1.0.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 (140) hide show
  1. package/dist/admin-portal.d.ts +43 -0
  2. package/dist/admin-portal.d.ts.map +1 -0
  3. package/dist/admin-portal.js +166 -0
  4. package/dist/admin-portal.js.map +1 -0
  5. package/dist/analysis/entities.d.ts +73 -0
  6. package/dist/analysis/entities.d.ts.map +1 -0
  7. package/dist/analysis/entities.js +378 -0
  8. package/dist/analysis/entities.js.map +1 -0
  9. package/dist/analysis/index.d.ts +44 -0
  10. package/dist/analysis/index.d.ts.map +1 -0
  11. package/dist/analysis/index.js +243 -0
  12. package/dist/analysis/index.js.map +1 -0
  13. package/dist/analysis/intent.d.ts +49 -0
  14. package/dist/analysis/intent.d.ts.map +1 -0
  15. package/dist/analysis/intent.js +320 -0
  16. package/dist/analysis/intent.js.map +1 -0
  17. package/dist/analysis/sentiment.d.ts +57 -0
  18. package/dist/analysis/sentiment.d.ts.map +1 -0
  19. package/dist/analysis/sentiment.js +351 -0
  20. package/dist/analysis/sentiment.js.map +1 -0
  21. package/dist/brand/compliance.d.ts +122 -0
  22. package/dist/brand/compliance.d.ts.map +1 -0
  23. package/dist/brand/compliance.js +378 -0
  24. package/dist/brand/compliance.js.map +1 -0
  25. package/dist/brand/forbidden-terms.d.ts +99 -0
  26. package/dist/brand/forbidden-terms.d.ts.map +1 -0
  27. package/dist/brand/forbidden-terms.js +265 -0
  28. package/dist/brand/forbidden-terms.js.map +1 -0
  29. package/dist/brand/index.d.ts +10 -0
  30. package/dist/brand/index.d.ts.map +1 -0
  31. package/dist/brand/index.js +12 -0
  32. package/dist/brand/index.js.map +1 -0
  33. package/dist/config.d.ts +325 -0
  34. package/dist/config.d.ts.map +1 -0
  35. package/dist/config.js +492 -0
  36. package/dist/config.js.map +1 -0
  37. package/dist/delivery/index.d.ts +84 -0
  38. package/dist/delivery/index.d.ts.map +1 -0
  39. package/dist/delivery/index.js +435 -0
  40. package/dist/delivery/index.js.map +1 -0
  41. package/dist/embeddings/cache.d.ts +96 -0
  42. package/dist/embeddings/cache.d.ts.map +1 -0
  43. package/dist/embeddings/cache.js +193 -0
  44. package/dist/embeddings/cache.js.map +1 -0
  45. package/dist/embeddings/index.d.ts +152 -0
  46. package/dist/embeddings/index.d.ts.map +1 -0
  47. package/dist/embeddings/index.js +337 -0
  48. package/dist/embeddings/index.js.map +1 -0
  49. package/dist/embeddings/openai-client.d.ts +67 -0
  50. package/dist/embeddings/openai-client.d.ts.map +1 -0
  51. package/dist/embeddings/openai-client.js +190 -0
  52. package/dist/embeddings/openai-client.js.map +1 -0
  53. package/dist/errors.d.ts +302 -0
  54. package/dist/errors.d.ts.map +1 -0
  55. package/dist/errors.js +508 -0
  56. package/dist/errors.js.map +1 -0
  57. package/dist/escalation/index.d.ts +93 -0
  58. package/dist/escalation/index.d.ts.map +1 -0
  59. package/dist/escalation/index.js +436 -0
  60. package/dist/escalation/index.js.map +1 -0
  61. package/dist/extraction/deduplication.d.ts +97 -0
  62. package/dist/extraction/deduplication.d.ts.map +1 -0
  63. package/dist/extraction/deduplication.js +271 -0
  64. package/dist/extraction/deduplication.js.map +1 -0
  65. package/dist/extraction/gmail-extractor.d.ts +160 -0
  66. package/dist/extraction/gmail-extractor.d.ts.map +1 -0
  67. package/dist/extraction/gmail-extractor.js +396 -0
  68. package/dist/extraction/gmail-extractor.js.map +1 -0
  69. package/dist/extraction/gmail-token-manager.d.ts +36 -0
  70. package/dist/extraction/gmail-token-manager.d.ts.map +1 -0
  71. package/dist/extraction/gmail-token-manager.js +146 -0
  72. package/dist/extraction/gmail-token-manager.js.map +1 -0
  73. package/dist/extraction/index.d.ts +13 -0
  74. package/dist/extraction/index.d.ts.map +1 -0
  75. package/dist/extraction/index.js +20 -0
  76. package/dist/extraction/index.js.map +1 -0
  77. package/dist/extraction/pii-handler.d.ts +100 -0
  78. package/dist/extraction/pii-handler.d.ts.map +1 -0
  79. package/dist/extraction/pii-handler.js +295 -0
  80. package/dist/extraction/pii-handler.js.map +1 -0
  81. package/dist/extraction/pipeline.d.ts +94 -0
  82. package/dist/extraction/pipeline.d.ts.map +1 -0
  83. package/dist/extraction/pipeline.js +380 -0
  84. package/dist/extraction/pipeline.js.map +1 -0
  85. package/dist/extraction/quality-filter.d.ts +99 -0
  86. package/dist/extraction/quality-filter.d.ts.map +1 -0
  87. package/dist/extraction/quality-filter.js +370 -0
  88. package/dist/extraction/quality-filter.js.map +1 -0
  89. package/dist/extraction/rate-limiter.d.ts +90 -0
  90. package/dist/extraction/rate-limiter.d.ts.map +1 -0
  91. package/dist/extraction/rate-limiter.js +242 -0
  92. package/dist/extraction/rate-limiter.js.map +1 -0
  93. package/dist/extraction/state-manager.d.ts +126 -0
  94. package/dist/extraction/state-manager.d.ts.map +1 -0
  95. package/dist/extraction/state-manager.js +344 -0
  96. package/dist/extraction/state-manager.js.map +1 -0
  97. package/dist/generation/index.d.ts +75 -0
  98. package/dist/generation/index.d.ts.map +1 -0
  99. package/dist/generation/index.js +641 -0
  100. package/dist/generation/index.js.map +1 -0
  101. package/dist/index.d.ts +96 -0
  102. package/dist/index.d.ts.map +1 -0
  103. package/dist/index.js +233 -0
  104. package/dist/index.js.map +1 -0
  105. package/dist/intake/index.d.ts +15 -0
  106. package/dist/intake/index.d.ts.map +1 -0
  107. package/dist/intake/index.js +19 -0
  108. package/dist/intake/index.js.map +1 -0
  109. package/dist/intake/normalizer.d.ts +163 -0
  110. package/dist/intake/normalizer.d.ts.map +1 -0
  111. package/dist/intake/normalizer.js +309 -0
  112. package/dist/intake/normalizer.js.map +1 -0
  113. package/dist/intake/postmark.d.ts +72 -0
  114. package/dist/intake/postmark.d.ts.map +1 -0
  115. package/dist/intake/postmark.js +276 -0
  116. package/dist/intake/postmark.js.map +1 -0
  117. package/dist/intake/slack.d.ts +106 -0
  118. package/dist/intake/slack.d.ts.map +1 -0
  119. package/dist/intake/slack.js +378 -0
  120. package/dist/intake/slack.js.map +1 -0
  121. package/dist/intake/twilio.d.ts +86 -0
  122. package/dist/intake/twilio.d.ts.map +1 -0
  123. package/dist/intake/twilio.js +283 -0
  124. package/dist/intake/twilio.js.map +1 -0
  125. package/dist/knowledge/index.d.ts +100 -0
  126. package/dist/knowledge/index.d.ts.map +1 -0
  127. package/dist/knowledge/index.js +516 -0
  128. package/dist/knowledge/index.js.map +1 -0
  129. package/dist/knowledge/invoice-resolver.d.ts +62 -0
  130. package/dist/knowledge/invoice-resolver.d.ts.map +1 -0
  131. package/dist/knowledge/invoice-resolver.js +267 -0
  132. package/dist/knowledge/invoice-resolver.js.map +1 -0
  133. package/dist/types.d.ts +535 -0
  134. package/dist/types.d.ts.map +1 -0
  135. package/dist/types.js +48 -0
  136. package/dist/types.js.map +1 -0
  137. package/ga-service-account.json +13 -0
  138. package/gmail-knowledge-migration.sql +149 -0
  139. package/nul +1 -0
  140. package/package.json +55 -0
@@ -0,0 +1,535 @@
1
+ /**
2
+ * Support Agent Type Definitions
3
+ *
4
+ * Branded types for type-safe identifiers and discriminated unions
5
+ * for state management across the support agent system.
6
+ */
7
+ /**
8
+ * Create a branded type for type-safe identifiers
9
+ * Prevents accidental mixing of different ID types
10
+ */
11
+ declare const __brand: unique symbol;
12
+ type Brand<T, B> = T & {
13
+ readonly [__brand]: B;
14
+ };
15
+ /**
16
+ * Conversation identifier - unique across all conversations
17
+ */
18
+ export type ConversationId = Brand<string, 'ConversationId'>;
19
+ /**
20
+ * Message identifier - unique across all messages
21
+ */
22
+ export type MessageId = Brand<string, 'MessageId'>;
23
+ /**
24
+ * Customer identifier - references client_id from clients table
25
+ */
26
+ export type CustomerId = Brand<string, 'CustomerId'>;
27
+ /**
28
+ * Escalation identifier - unique across all escalations
29
+ */
30
+ export type EscalationId = Brand<number, 'EscalationId'>;
31
+ /**
32
+ * Response identifier - unique across all generated responses
33
+ */
34
+ export type ResponseId = Brand<string, 'ResponseId'>;
35
+ /**
36
+ * Delivery identifier - unique across all delivery attempts
37
+ */
38
+ export type DeliveryId = Brand<string, 'DeliveryId'>;
39
+ export declare function createConversationId(id: string): ConversationId;
40
+ export declare function createMessageId(id: string): MessageId;
41
+ export declare function createCustomerId(id: string): CustomerId;
42
+ export declare function createEscalationId(id: number): EscalationId;
43
+ export declare function createResponseId(id: string): ResponseId;
44
+ export declare function createDeliveryId(id: string): DeliveryId;
45
+ export type SupportChannel = 'email' | 'sms' | 'slack';
46
+ export type MessageDirection = 'inbound' | 'outbound';
47
+ export type ConversationState = {
48
+ status: 'intake';
49
+ receivedAt: string;
50
+ } | {
51
+ status: 'analyzing';
52
+ startedAt: string;
53
+ } | {
54
+ status: 'responding';
55
+ analysisCompletedAt: string;
56
+ } | {
57
+ status: 'awaiting_reply';
58
+ lastResponseAt: string;
59
+ } | {
60
+ status: 'escalated';
61
+ escalatedAt: string;
62
+ escalationId: EscalationId;
63
+ reason: string;
64
+ } | {
65
+ status: 'resolved';
66
+ resolvedAt: string;
67
+ resolution: ResolutionType;
68
+ };
69
+ export type ResolutionType = 'customer_satisfied' | 'issue_resolved' | 'escalation_resolved' | 'no_response_needed' | 'auto_closed' | 'human_closed';
70
+ export declare function getConversationStatus(state: ConversationState): 'intake' | 'analyzing' | 'responding' | 'awaiting_reply' | 'escalated' | 'resolved';
71
+ export type DeliveryStatus = {
72
+ status: 'pending';
73
+ queuedAt: string;
74
+ } | {
75
+ status: 'sending';
76
+ startedAt: string;
77
+ } | {
78
+ status: 'sent';
79
+ sentAt: string;
80
+ messageId: string;
81
+ } | {
82
+ status: 'delivered';
83
+ deliveredAt: string;
84
+ messageId: string;
85
+ } | {
86
+ status: 'failed';
87
+ failedAt: string;
88
+ error: string;
89
+ retryable: boolean;
90
+ } | {
91
+ status: 'bounced';
92
+ bouncedAt: string;
93
+ bounceType: BounceType;
94
+ };
95
+ export type BounceType = 'hard_bounce' | 'soft_bounce' | 'spam_complaint' | 'unsubscribe';
96
+ export declare function isDeliverySuccessful(status: DeliveryStatus): boolean;
97
+ export declare function canRetryDelivery(status: DeliveryStatus): boolean;
98
+ export type BrandComplianceStatus = {
99
+ status: 'compliant';
100
+ score: number;
101
+ checkedAt: string;
102
+ } | {
103
+ status: 'flagged';
104
+ score: number;
105
+ issues: string[];
106
+ checkedAt: string;
107
+ } | {
108
+ status: 'blocked';
109
+ detectedTerms: string[];
110
+ blockedAt: string;
111
+ };
112
+ export declare function isBrandCompliant(status: BrandComplianceStatus): boolean;
113
+ export type IntentCategory = 'order_status' | 'pricing_inquiry' | 'availability_check' | 'documentation_request' | 'returns_damages' | 'account_inquiry' | 'product_sourcing' | 'onboarding_help' | 'complaint' | 'feedback' | 'general_question' | 'other';
114
+ export interface IntentClassification {
115
+ primary: IntentCategory;
116
+ secondary?: IntentCategory;
117
+ confidence: number;
118
+ reasoning?: string;
119
+ }
120
+ export type SentimentCategory = 'positive' | 'neutral' | 'negative';
121
+ export interface SentimentAnalysis {
122
+ category: SentimentCategory;
123
+ score: number;
124
+ urgency: UrgencyLevel;
125
+ urgencySignals: string[];
126
+ }
127
+ export type UrgencyLevel = 'critical' | 'high' | 'medium' | 'low';
128
+ export interface ExtractedEntities {
129
+ orderNumbers?: string[];
130
+ productNames?: string[];
131
+ productSkus?: string[];
132
+ dates?: ExtractedDate[];
133
+ monetaryAmounts?: MonetaryAmount[];
134
+ customerReferences?: string[];
135
+ companyNames?: string[];
136
+ personNames?: string[];
137
+ phoneNumbers?: string[];
138
+ emails?: string[];
139
+ }
140
+ export interface ExtractedDate {
141
+ raw: string;
142
+ parsed?: Date;
143
+ type: 'order_date' | 'delivery_date' | 'request_date' | 'general';
144
+ }
145
+ export interface MonetaryAmount {
146
+ raw: string;
147
+ amount: number;
148
+ currency: string;
149
+ context?: string;
150
+ }
151
+ /**
152
+ * Normalized inbound message from any channel
153
+ */
154
+ export interface InboundMessage {
155
+ id: MessageId;
156
+ conversationId?: ConversationId;
157
+ channel: SupportChannel;
158
+ direction: 'inbound';
159
+ content: {
160
+ text: string;
161
+ html?: string;
162
+ subject?: string;
163
+ };
164
+ sender: SenderInfo;
165
+ receivedAt: string;
166
+ metadata: ChannelMetadata;
167
+ attachments?: Attachment[];
168
+ replyToMessageId?: MessageId;
169
+ }
170
+ export interface SenderInfo {
171
+ email?: string;
172
+ phone?: string;
173
+ slackUserId?: string;
174
+ slackUsername?: string;
175
+ name?: string;
176
+ customerId?: CustomerId;
177
+ }
178
+ export type ChannelMetadata = EmailMetadata | SmsMetadata | SlackMetadata;
179
+ export interface EmailMetadata {
180
+ type: 'email';
181
+ messageId: string;
182
+ inReplyTo?: string;
183
+ references?: string[];
184
+ headers?: Record<string, string>;
185
+ fromAddress: string;
186
+ toAddresses: string[];
187
+ ccAddresses?: string[];
188
+ }
189
+ export interface SmsMetadata {
190
+ type: 'sms';
191
+ messageSid: string;
192
+ fromNumber: string;
193
+ toNumber: string;
194
+ numSegments?: number;
195
+ }
196
+ export interface SlackMetadata {
197
+ type: 'slack';
198
+ teamId: string;
199
+ channelId: string;
200
+ userId: string;
201
+ threadTs?: string;
202
+ eventTs: string;
203
+ }
204
+ export interface Attachment {
205
+ id: string;
206
+ filename: string;
207
+ contentType: string;
208
+ size: number;
209
+ url?: string;
210
+ storagePath?: string;
211
+ }
212
+ export interface GeneratedResponse {
213
+ id: ResponseId;
214
+ conversationId: ConversationId;
215
+ messageId: MessageId;
216
+ content: {
217
+ text: string;
218
+ html?: string;
219
+ subject?: string;
220
+ };
221
+ formatting: ChannelFormatting;
222
+ citations?: Citation[];
223
+ brandCompliance: BrandComplianceStatus;
224
+ qualityScore: number;
225
+ generatedAt: string;
226
+ metadata: {
227
+ templateUsed?: string;
228
+ modelUsed: string;
229
+ tokensUsed: number;
230
+ latencyMs: number;
231
+ };
232
+ }
233
+ export interface ChannelFormatting {
234
+ email?: {
235
+ subject: string;
236
+ htmlBody: string;
237
+ textBody: string;
238
+ };
239
+ sms?: {
240
+ body: string;
241
+ segments: number;
242
+ };
243
+ slack?: {
244
+ blocks: unknown[];
245
+ text: string;
246
+ };
247
+ }
248
+ export interface Citation {
249
+ type: 'order' | 'invoice' | 'policy' | 'product';
250
+ reference: string;
251
+ context?: string;
252
+ }
253
+ export interface AnalysisResult {
254
+ messageId: MessageId;
255
+ conversationId: ConversationId;
256
+ intent: IntentClassification;
257
+ sentiment: SentimentAnalysis;
258
+ entities: ExtractedEntities;
259
+ brandCompliance: BrandComplianceStatus;
260
+ urgencyScore: number;
261
+ overallConfidence: number;
262
+ escalationRequired: boolean;
263
+ escalationReasons?: string[];
264
+ analyzedAt: string;
265
+ }
266
+ export interface KnowledgeContext {
267
+ customer?: CustomerContext;
268
+ products?: ProductContext[];
269
+ orders?: OrderContext[];
270
+ policies?: PolicyContext[];
271
+ similarConversations?: SimilarConversation[];
272
+ templates?: ResponseTemplate[];
273
+ /** Resolved invoice when customer is asking about a specific invoice */
274
+ resolvedInvoice?: ResolvedInvoice;
275
+ assembledAt: string;
276
+ confidenceScores: {
277
+ customerData: number;
278
+ productData: number;
279
+ policyData: number;
280
+ similarConversations: number;
281
+ };
282
+ }
283
+ export interface CustomerContext {
284
+ id: CustomerId;
285
+ companyName: string;
286
+ contactName?: string;
287
+ email?: string;
288
+ phone?: string;
289
+ tier?: string;
290
+ accountStatus: 'active' | 'inactive' | 'pending' | 'suspended';
291
+ totalOrders?: number;
292
+ totalSpend?: number;
293
+ lastOrderDate?: string;
294
+ notes?: string;
295
+ }
296
+ export interface ProductContext {
297
+ sku: string;
298
+ name: string;
299
+ brand?: string;
300
+ category?: string;
301
+ price?: number;
302
+ availability: 'in_stock' | 'low_stock' | 'out_of_stock' | 'discontinued';
303
+ leadTime?: string;
304
+ }
305
+ export interface OrderContext {
306
+ orderNumber: string;
307
+ status: string;
308
+ createdAt: string;
309
+ totalAmount: number;
310
+ invoiceNumber?: string;
311
+ invoiceStatus?: string;
312
+ invoice?: InvoiceContext;
313
+ items?: Array<{
314
+ sku: string;
315
+ name: string;
316
+ quantity: number;
317
+ price: number;
318
+ }>;
319
+ tracking?: {
320
+ carrier: string;
321
+ trackingNumber: string;
322
+ estimatedDelivery?: string;
323
+ };
324
+ }
325
+ export interface InvoiceContext {
326
+ invoiceId: number;
327
+ invoiceNumber?: string;
328
+ status: string;
329
+ total: number;
330
+ subtotal: number;
331
+ feesTotal: number;
332
+ taxTotal: number;
333
+ shippingTotal: number;
334
+ discountTotal: number;
335
+ issuedAt?: string;
336
+ dueAt?: string;
337
+ paidAt?: string;
338
+ pdfUrl?: string;
339
+ notes?: string;
340
+ }
341
+ /**
342
+ * Resolved invoice from the InvoiceResolver
343
+ * Includes the invoice data plus metadata about how it was resolved
344
+ */
345
+ export interface ResolvedInvoice {
346
+ invoice: InvoiceContext;
347
+ /** How confident we are in the resolution */
348
+ confidence: 'explicit' | 'high' | 'medium';
349
+ /** How the invoice was resolved */
350
+ source: 'extracted_number' | 'single_unpaid' | 'most_recent';
351
+ }
352
+ export interface PolicyContext {
353
+ id: string;
354
+ title: string;
355
+ category: string;
356
+ content: string;
357
+ relevanceScore: number;
358
+ }
359
+ export interface SimilarConversation {
360
+ conversationId: ConversationId;
361
+ similarity: number;
362
+ resolution: ResolutionType;
363
+ summary: string;
364
+ successfulResponse?: string;
365
+ }
366
+ export interface ResponseTemplate {
367
+ id: string;
368
+ name: string;
369
+ intent: IntentCategory;
370
+ content: string;
371
+ variables: string[];
372
+ applicabilityScore: number;
373
+ }
374
+ export type EscalationTrigger = 'low_confidence' | 'forbidden_terms' | 'customer_request' | 'negative_sentiment' | 'max_attempts_exceeded' | 'brand_compliance_violation' | 'high_urgency' | 'complex_inquiry' | 'complaint' | 'human_takeover';
375
+ export type EscalationSeverity = 'critical' | 'high' | 'medium' | 'low';
376
+ export interface EscalationContext {
377
+ conversationId: ConversationId;
378
+ messageId: MessageId;
379
+ customerId?: CustomerId;
380
+ trigger: EscalationTrigger;
381
+ severity: EscalationSeverity;
382
+ reason: string;
383
+ analysisResult?: AnalysisResult;
384
+ attemptedResponses?: GeneratedResponse[];
385
+ conversationHistory?: InboundMessage[];
386
+ knowledgeContext?: KnowledgeContext;
387
+ }
388
+ export interface EscalationResult {
389
+ escalationId: EscalationId;
390
+ conversationId: ConversationId;
391
+ deliveries: EscalationDelivery[];
392
+ allSucceeded: boolean;
393
+ adminUrl: string;
394
+ createdAt: string;
395
+ }
396
+ export interface EscalationDelivery {
397
+ channel: SupportChannel;
398
+ success: boolean;
399
+ messageId?: string;
400
+ error?: string;
401
+ timestamp: string;
402
+ }
403
+ export interface Conversation {
404
+ id: ConversationId;
405
+ customerId?: CustomerId;
406
+ channel: SupportChannel;
407
+ state: ConversationState;
408
+ brandComplianceStatus: BrandComplianceStatus;
409
+ isHandledByAi: boolean;
410
+ messageCount: number;
411
+ firstMessageAt: string;
412
+ lastMessageAt: string;
413
+ assignedTo?: string;
414
+ tags?: string[];
415
+ metadata?: Record<string, unknown>;
416
+ }
417
+ export interface ConversationRecord {
418
+ id: string;
419
+ client_id: string | null;
420
+ channel: SupportChannel;
421
+ status: string;
422
+ state_data: Record<string, unknown>;
423
+ brand_compliance_status: string;
424
+ brand_compliance_data: Record<string, unknown>;
425
+ is_handled_by_ai: boolean;
426
+ message_count: number;
427
+ first_message_at: string;
428
+ last_message_at: string;
429
+ assigned_to: string | null;
430
+ tags: string[] | null;
431
+ metadata: Record<string, unknown> | null;
432
+ created_at: string;
433
+ updated_at: string;
434
+ }
435
+ export interface MessageRecord {
436
+ id: string;
437
+ conversation_id: string;
438
+ direction: MessageDirection;
439
+ channel: SupportChannel;
440
+ content_text: string;
441
+ content_html: string | null;
442
+ content_subject: string | null;
443
+ sender_email: string | null;
444
+ sender_phone: string | null;
445
+ sender_slack_id: string | null;
446
+ sender_name: string | null;
447
+ sender_customer_id: string | null;
448
+ received_at: string;
449
+ channel_metadata: Record<string, unknown>;
450
+ attachments: Record<string, unknown>[] | null;
451
+ reply_to_message_id: string | null;
452
+ processing_status: string;
453
+ contains_forbidden_terms: boolean;
454
+ forbidden_terms_detected: string[] | null;
455
+ created_at: string;
456
+ }
457
+ export interface AnalysisRecord {
458
+ id: string;
459
+ message_id: string;
460
+ conversation_id: string;
461
+ intent_primary: IntentCategory;
462
+ intent_secondary: IntentCategory | null;
463
+ intent_confidence: number;
464
+ intent_reasoning: string | null;
465
+ sentiment_category: SentimentCategory;
466
+ sentiment_score: number;
467
+ urgency_level: UrgencyLevel;
468
+ urgency_signals: string[] | null;
469
+ extracted_entities: Record<string, unknown>;
470
+ brand_compliance_status: string;
471
+ brand_compliance_score: number | null;
472
+ brand_compliance_issues: string[] | null;
473
+ brand_detected_terms: string[] | null;
474
+ urgency_score: number;
475
+ overall_confidence: number;
476
+ escalation_required: boolean;
477
+ escalation_reasons: string[] | null;
478
+ analyzed_at: string;
479
+ created_at: string;
480
+ }
481
+ export interface ResponseRecord {
482
+ id: string;
483
+ conversation_id: string;
484
+ message_id: string;
485
+ content_text: string;
486
+ content_html: string | null;
487
+ content_subject: string | null;
488
+ channel_formatting: Record<string, unknown>;
489
+ citations: Record<string, unknown>[] | null;
490
+ brand_test_passed: boolean;
491
+ brand_compliance_data: Record<string, unknown>;
492
+ quality_score: number;
493
+ is_selected: boolean;
494
+ template_source: string | null;
495
+ model_used: string;
496
+ tokens_used: number;
497
+ latency_ms: number;
498
+ generated_at: string;
499
+ created_at: string;
500
+ }
501
+ export interface EscalationRecord {
502
+ id: number;
503
+ conversation_id: string;
504
+ message_id: string | null;
505
+ customer_id: string | null;
506
+ trigger: EscalationTrigger;
507
+ severity: EscalationSeverity;
508
+ reason: string;
509
+ context_data: Record<string, unknown>;
510
+ notification_channels: Record<string, unknown>[];
511
+ assigned_to: string | null;
512
+ response_received_at: string | null;
513
+ response_action: string | null;
514
+ resolution_notes: string | null;
515
+ sla_target_at: string;
516
+ sla_breached: boolean;
517
+ created_at: string;
518
+ updated_at: string;
519
+ }
520
+ export interface DeliveryRecord {
521
+ id: string;
522
+ response_id: string;
523
+ conversation_id: string;
524
+ channel: SupportChannel;
525
+ status: string;
526
+ status_data: Record<string, unknown>;
527
+ external_message_id: string | null;
528
+ retry_count: number;
529
+ retry_history: Record<string, unknown>[] | null;
530
+ engagement_data: Record<string, unknown> | null;
531
+ created_at: string;
532
+ updated_at: string;
533
+ }
534
+ export {};
535
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Support Agent Type Definitions
3
+ *
4
+ * Branded types for type-safe identifiers and discriminated unions
5
+ * for state management across the support agent system.
6
+ */
7
+ // Brand creation functions
8
+ export function createConversationId(id) {
9
+ return id;
10
+ }
11
+ export function createMessageId(id) {
12
+ return id;
13
+ }
14
+ export function createCustomerId(id) {
15
+ return id;
16
+ }
17
+ export function createEscalationId(id) {
18
+ return id;
19
+ }
20
+ export function createResponseId(id) {
21
+ return id;
22
+ }
23
+ export function createDeliveryId(id) {
24
+ return id;
25
+ }
26
+ // Helper to get status string from state
27
+ export function getConversationStatus(state) {
28
+ return state.status;
29
+ }
30
+ // Helper to check if delivery was successful
31
+ export function isDeliverySuccessful(status) {
32
+ return status.status === 'delivered' || status.status === 'sent';
33
+ }
34
+ // Helper to check if delivery can be retried
35
+ export function canRetryDelivery(status) {
36
+ if (status.status === 'failed') {
37
+ return status.retryable;
38
+ }
39
+ if (status.status === 'bounced') {
40
+ return status.bounceType === 'soft_bounce';
41
+ }
42
+ return false;
43
+ }
44
+ // Helper to check if compliant
45
+ export function isBrandCompliant(status) {
46
+ return status.status === 'compliant';
47
+ }
48
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2CH,2BAA2B;AAC3B,MAAM,UAAU,oBAAoB,CAAC,EAAU;IAC7C,OAAO,EAAoB,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,OAAO,EAAe,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,OAAO,EAAgB,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EAAU;IAC3C,OAAO,EAAkB,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,OAAO,EAAgB,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,OAAO,EAAgB,CAAC;AAC1B,CAAC;AA8BD,yCAAyC;AACzC,MAAM,UAAU,qBAAqB,CACnC,KAAwB;IAExB,OAAO,KAAK,CAAC,MAAM,CAAC;AACtB,CAAC;AAgBD,6CAA6C;AAC7C,MAAM,UAAU,oBAAoB,CAAC,MAAsB;IACzD,OAAO,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC;AACnE,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,gBAAgB,CAAC,MAAsB;IACrD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,SAAS,CAAC;IAC1B,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC,UAAU,KAAK,aAAa,CAAC;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAWD,+BAA+B;AAC/B,MAAM,UAAU,gBAAgB,CAAC,MAA6B;IAC5D,OAAO,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC;AACvC,CAAC"}
@@ -0,0 +1,13 @@
1
+ {
2
+ "type": "service_account",
3
+ "project_id": "catalist-gmail-agent",
4
+ "private_key_id": "db802de422708b1c3f47c2707a4fecd39b64ca39",
5
+ "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDOGnkcYVR7kc3p\nNMRow3/z+S0nfaQPs4Iz0eViWYNVvwlOOSPAX0qQyfspSYeAiHa4CizJ9PV2xTry\nk8FAkjQPbxiLfh1JGIoiIAx/mHXh/Gaux4baYm58nbPI3dS0zZ/xnUCKhhx12pkt\nQHl7gFejNbA2YcW5eB4WCUR32WtpEVJ3nAxzctR7Zf+ZavUcDdA7cXMJy/ACIiJa\n9EUhgeaUUg48T32vFkxKsrgzFWGA4el+IOTIUw45WhE/N5AGZAGxRsug5uICfgvm\nlri1XAsMWSji0T5t4qOhKTJJmNNVn3eFrmwh9dxinuKkqUzHd89+1vAUaQL0pBbY\neEtB6shJAgMBAAECggEAP5xWEtdLXtQSbE6X7AmivScDs7OIZjwuDFZU6LTd3yIV\n+imSijYe6m8ccJK8GoSDt6uURUSwWdbnqaTGuWomXTkZpzvmSAAl6gBgOyVQBM6E\n1p7IVTCaDyYRLgahNqhcHBM/r0FTGWC9dAT5OY/T/JB+cVpdzy9ugbichCz7hLKB\nJ/tfJUqtrCoLdQVL/FBD372gajiGHr6Wbra1paFNjPGLWprwpZm7ZVK3r+LJXlon\n8hux8umhKtXsbOHdnXuyl2rEgGOngzMI+quLQot3SvVifNYeL+vla4bYbUIFvPz/\nihCew7sCqAPu53MnWOQccFEnTpGV4n6olN1UsPwfjQKBgQDoSYcqGFP11cYfQL6v\nC8iY8u2Sw2iqP+fjR+DRCrLc30UDU1oJcGrDq7f44D/Y5P87ikogLRlWMRcF/XZ8\nyivvmBRQPLZ+bm4idmQnnSBXRTv9igVqW3+1FWdAlqJaTJRHjPWod48UDX3sBSPy\nozuYNaF23n/vSkLwp7eN0dGrUwKBgQDjJKvVuqpkzmgnvXIn2Fn4UV5Fp3zyqpbT\nSgpsyDaj+Oz+M30DV+OtYxNWqRtBFgzyrFKL33YQN0D3DA/xdrM3ToBOkr/wRKl0\n2gk06taeN/mF/STXGJ/+kEKIgsY9T1Pncyt/DRX9/sEeK1w1ebxYPNlKFPRmBPd+\nNW/VZHGmcwKBgQC3Dzs2MXX5hz9b4epkiSTNZKVVxCn4AeT9eOfz1jqfVlVNCaMr\nTSzWh720pQWsKMv8YD+KnAAbrRQ35Eg8kBeP+ooHsdEgUmb5QdQsY+fY3vcoGF2s\nM++xBe0ZOZ05DKDOwofW/GIFq5xRJLvvvDR6/8j/pNmt+xhGD+bYHULfgQKBgH5j\n4mXcJ4JORDCQvtujDHUbObzCdMlG2QQa9/AN/DGDisPr/I0Gs77AGXuoP20ZCv1h\nm9EO99AQHssY4Co5JYIJ4WVXTQwx+KT3yhWy8tc5SFQhRwWVQznQJeV19z8YTBTG\nxhY9PtaFkgnqkLWE1qO2wCXzwQafjuOgcmkoKgE3AoGAc7vLPsXVrWpyXs0x4z/6\npN8CNk2zG0PHtFER01Bl/rNd9W3w4uyYXKhrXcMn8RbzRudqGHcnGMve6zou8Ut/\n9k/rKTuTLrK4PjgskAylhdfNNNwtg+br0Xo7HHORXZZKmcL3CdgL2V2apB09w9pO\nbhfX1g5NXSxeeUwibQxm86s=\n-----END PRIVATE KEY-----\n",
6
+ "client_email": "ga4-api-access@catalist-gmail-agent.iam.gserviceaccount.com",
7
+ "client_id": "115755539456131901596",
8
+ "auth_uri": "https://accounts.google.com/o/oauth2/auth",
9
+ "token_uri": "https://oauth2.googleapis.com/token",
10
+ "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
11
+ "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/ga4-api-access%40catalist-gmail-agent.iam.gserviceaccount.com",
12
+ "universe_domain": "googleapis.com"
13
+ }