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.
- package/dist/admin-portal.d.ts +43 -0
- package/dist/admin-portal.d.ts.map +1 -0
- package/dist/admin-portal.js +166 -0
- package/dist/admin-portal.js.map +1 -0
- package/dist/analysis/entities.d.ts +73 -0
- package/dist/analysis/entities.d.ts.map +1 -0
- package/dist/analysis/entities.js +378 -0
- package/dist/analysis/entities.js.map +1 -0
- package/dist/analysis/index.d.ts +44 -0
- package/dist/analysis/index.d.ts.map +1 -0
- package/dist/analysis/index.js +243 -0
- package/dist/analysis/index.js.map +1 -0
- package/dist/analysis/intent.d.ts +49 -0
- package/dist/analysis/intent.d.ts.map +1 -0
- package/dist/analysis/intent.js +320 -0
- package/dist/analysis/intent.js.map +1 -0
- package/dist/analysis/sentiment.d.ts +57 -0
- package/dist/analysis/sentiment.d.ts.map +1 -0
- package/dist/analysis/sentiment.js +351 -0
- package/dist/analysis/sentiment.js.map +1 -0
- package/dist/brand/compliance.d.ts +122 -0
- package/dist/brand/compliance.d.ts.map +1 -0
- package/dist/brand/compliance.js +378 -0
- package/dist/brand/compliance.js.map +1 -0
- package/dist/brand/forbidden-terms.d.ts +99 -0
- package/dist/brand/forbidden-terms.d.ts.map +1 -0
- package/dist/brand/forbidden-terms.js +265 -0
- package/dist/brand/forbidden-terms.js.map +1 -0
- package/dist/brand/index.d.ts +10 -0
- package/dist/brand/index.d.ts.map +1 -0
- package/dist/brand/index.js +12 -0
- package/dist/brand/index.js.map +1 -0
- package/dist/config.d.ts +325 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +492 -0
- package/dist/config.js.map +1 -0
- package/dist/delivery/index.d.ts +84 -0
- package/dist/delivery/index.d.ts.map +1 -0
- package/dist/delivery/index.js +435 -0
- package/dist/delivery/index.js.map +1 -0
- package/dist/embeddings/cache.d.ts +96 -0
- package/dist/embeddings/cache.d.ts.map +1 -0
- package/dist/embeddings/cache.js +193 -0
- package/dist/embeddings/cache.js.map +1 -0
- package/dist/embeddings/index.d.ts +152 -0
- package/dist/embeddings/index.d.ts.map +1 -0
- package/dist/embeddings/index.js +337 -0
- package/dist/embeddings/index.js.map +1 -0
- package/dist/embeddings/openai-client.d.ts +67 -0
- package/dist/embeddings/openai-client.d.ts.map +1 -0
- package/dist/embeddings/openai-client.js +190 -0
- package/dist/embeddings/openai-client.js.map +1 -0
- package/dist/errors.d.ts +302 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +508 -0
- package/dist/errors.js.map +1 -0
- package/dist/escalation/index.d.ts +93 -0
- package/dist/escalation/index.d.ts.map +1 -0
- package/dist/escalation/index.js +436 -0
- package/dist/escalation/index.js.map +1 -0
- package/dist/extraction/deduplication.d.ts +97 -0
- package/dist/extraction/deduplication.d.ts.map +1 -0
- package/dist/extraction/deduplication.js +271 -0
- package/dist/extraction/deduplication.js.map +1 -0
- package/dist/extraction/gmail-extractor.d.ts +160 -0
- package/dist/extraction/gmail-extractor.d.ts.map +1 -0
- package/dist/extraction/gmail-extractor.js +396 -0
- package/dist/extraction/gmail-extractor.js.map +1 -0
- package/dist/extraction/gmail-token-manager.d.ts +36 -0
- package/dist/extraction/gmail-token-manager.d.ts.map +1 -0
- package/dist/extraction/gmail-token-manager.js +146 -0
- package/dist/extraction/gmail-token-manager.js.map +1 -0
- package/dist/extraction/index.d.ts +13 -0
- package/dist/extraction/index.d.ts.map +1 -0
- package/dist/extraction/index.js +20 -0
- package/dist/extraction/index.js.map +1 -0
- package/dist/extraction/pii-handler.d.ts +100 -0
- package/dist/extraction/pii-handler.d.ts.map +1 -0
- package/dist/extraction/pii-handler.js +295 -0
- package/dist/extraction/pii-handler.js.map +1 -0
- package/dist/extraction/pipeline.d.ts +94 -0
- package/dist/extraction/pipeline.d.ts.map +1 -0
- package/dist/extraction/pipeline.js +380 -0
- package/dist/extraction/pipeline.js.map +1 -0
- package/dist/extraction/quality-filter.d.ts +99 -0
- package/dist/extraction/quality-filter.d.ts.map +1 -0
- package/dist/extraction/quality-filter.js +370 -0
- package/dist/extraction/quality-filter.js.map +1 -0
- package/dist/extraction/rate-limiter.d.ts +90 -0
- package/dist/extraction/rate-limiter.d.ts.map +1 -0
- package/dist/extraction/rate-limiter.js +242 -0
- package/dist/extraction/rate-limiter.js.map +1 -0
- package/dist/extraction/state-manager.d.ts +126 -0
- package/dist/extraction/state-manager.d.ts.map +1 -0
- package/dist/extraction/state-manager.js +344 -0
- package/dist/extraction/state-manager.js.map +1 -0
- package/dist/generation/index.d.ts +75 -0
- package/dist/generation/index.d.ts.map +1 -0
- package/dist/generation/index.js +641 -0
- package/dist/generation/index.js.map +1 -0
- package/dist/index.d.ts +96 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +233 -0
- package/dist/index.js.map +1 -0
- package/dist/intake/index.d.ts +15 -0
- package/dist/intake/index.d.ts.map +1 -0
- package/dist/intake/index.js +19 -0
- package/dist/intake/index.js.map +1 -0
- package/dist/intake/normalizer.d.ts +163 -0
- package/dist/intake/normalizer.d.ts.map +1 -0
- package/dist/intake/normalizer.js +309 -0
- package/dist/intake/normalizer.js.map +1 -0
- package/dist/intake/postmark.d.ts +72 -0
- package/dist/intake/postmark.d.ts.map +1 -0
- package/dist/intake/postmark.js +276 -0
- package/dist/intake/postmark.js.map +1 -0
- package/dist/intake/slack.d.ts +106 -0
- package/dist/intake/slack.d.ts.map +1 -0
- package/dist/intake/slack.js +378 -0
- package/dist/intake/slack.js.map +1 -0
- package/dist/intake/twilio.d.ts +86 -0
- package/dist/intake/twilio.d.ts.map +1 -0
- package/dist/intake/twilio.js +283 -0
- package/dist/intake/twilio.js.map +1 -0
- package/dist/knowledge/index.d.ts +100 -0
- package/dist/knowledge/index.d.ts.map +1 -0
- package/dist/knowledge/index.js +516 -0
- package/dist/knowledge/index.js.map +1 -0
- package/dist/knowledge/invoice-resolver.d.ts +62 -0
- package/dist/knowledge/invoice-resolver.d.ts.map +1 -0
- package/dist/knowledge/invoice-resolver.js +267 -0
- package/dist/knowledge/invoice-resolver.js.map +1 -0
- package/dist/types.d.ts +535 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +48 -0
- package/dist/types.js.map +1 -0
- package/ga-service-account.json +13 -0
- package/gmail-knowledge-migration.sql +149 -0
- package/nul +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State Manager Module
|
|
3
|
+
*
|
|
4
|
+
* Tracks extraction state for incremental Gmail sync.
|
|
5
|
+
* Uses Gmail History API to only process new emails since last extraction.
|
|
6
|
+
*/
|
|
7
|
+
import { createClient } from '@supabase/supabase-js';
|
|
8
|
+
// =============================================================================
|
|
9
|
+
// State Manager
|
|
10
|
+
// =============================================================================
|
|
11
|
+
export class StateManager {
|
|
12
|
+
supabase;
|
|
13
|
+
constructor(config) {
|
|
14
|
+
this.supabase = createClient(config.supabaseUrl, config.supabaseServiceRoleKey);
|
|
15
|
+
}
|
|
16
|
+
// ===========================================================================
|
|
17
|
+
// Extraction State Methods
|
|
18
|
+
// ===========================================================================
|
|
19
|
+
/**
|
|
20
|
+
* Get extraction state for an email account
|
|
21
|
+
*/
|
|
22
|
+
async getState(emailAddress) {
|
|
23
|
+
const { data, error } = await this.supabase
|
|
24
|
+
.from('gmail_extraction_state')
|
|
25
|
+
.select('*')
|
|
26
|
+
.eq('email_address', emailAddress)
|
|
27
|
+
.single();
|
|
28
|
+
if (error || !data) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
return this.mapStateRow(data);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Create or get extraction state
|
|
35
|
+
*/
|
|
36
|
+
async getOrCreateState(emailAddress) {
|
|
37
|
+
let state = await this.getState(emailAddress);
|
|
38
|
+
if (!state) {
|
|
39
|
+
const { data, error } = await this.supabase
|
|
40
|
+
.from('gmail_extraction_state')
|
|
41
|
+
.insert({
|
|
42
|
+
email_address: emailAddress,
|
|
43
|
+
last_history_id: null,
|
|
44
|
+
last_extracted_at: null,
|
|
45
|
+
total_entries_extracted: 0,
|
|
46
|
+
consecutive_errors: 0,
|
|
47
|
+
})
|
|
48
|
+
.select()
|
|
49
|
+
.single();
|
|
50
|
+
if (error) {
|
|
51
|
+
throw new Error(`Failed to create extraction state: ${error.message}`);
|
|
52
|
+
}
|
|
53
|
+
state = this.mapStateRow(data);
|
|
54
|
+
}
|
|
55
|
+
return state;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Update extraction state after successful extraction
|
|
59
|
+
*/
|
|
60
|
+
async updateStateSuccess(emailAddress, updates) {
|
|
61
|
+
const updateData = {
|
|
62
|
+
last_extracted_at: new Date().toISOString(),
|
|
63
|
+
consecutive_errors: 0,
|
|
64
|
+
last_error: null,
|
|
65
|
+
last_error_at: null,
|
|
66
|
+
};
|
|
67
|
+
if (updates.historyId) {
|
|
68
|
+
updateData.last_history_id = updates.historyId;
|
|
69
|
+
}
|
|
70
|
+
if (updates.entriesExtracted !== undefined) {
|
|
71
|
+
// Use raw SQL for increment
|
|
72
|
+
const { data: currentState } = await this.supabase
|
|
73
|
+
.from('gmail_extraction_state')
|
|
74
|
+
.select('total_entries_extracted')
|
|
75
|
+
.eq('email_address', emailAddress)
|
|
76
|
+
.single();
|
|
77
|
+
updateData.total_entries_extracted =
|
|
78
|
+
(currentState?.total_entries_extracted || 0) + updates.entriesExtracted;
|
|
79
|
+
}
|
|
80
|
+
if (updates.batchId) {
|
|
81
|
+
updateData.last_batch_id = updates.batchId;
|
|
82
|
+
}
|
|
83
|
+
const { error } = await this.supabase
|
|
84
|
+
.from('gmail_extraction_state')
|
|
85
|
+
.update(updateData)
|
|
86
|
+
.eq('email_address', emailAddress);
|
|
87
|
+
if (error) {
|
|
88
|
+
throw new Error(`Failed to update extraction state: ${error.message}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Record extraction error
|
|
93
|
+
*/
|
|
94
|
+
async recordError(emailAddress, errorMessage) {
|
|
95
|
+
// Get current state
|
|
96
|
+
const state = await this.getOrCreateState(emailAddress);
|
|
97
|
+
const { error } = await this.supabase
|
|
98
|
+
.from('gmail_extraction_state')
|
|
99
|
+
.update({
|
|
100
|
+
consecutive_errors: state.consecutiveErrors + 1,
|
|
101
|
+
last_error: errorMessage,
|
|
102
|
+
last_error_at: new Date().toISOString(),
|
|
103
|
+
})
|
|
104
|
+
.eq('email_address', emailAddress);
|
|
105
|
+
if (error) {
|
|
106
|
+
throw new Error(`Failed to record error: ${error.message}`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Check if we should back off due to errors
|
|
111
|
+
*/
|
|
112
|
+
async shouldBackOff(emailAddress, maxConsecutiveErrors = 5) {
|
|
113
|
+
const state = await this.getState(emailAddress);
|
|
114
|
+
if (!state) {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
return state.consecutiveErrors >= maxConsecutiveErrors;
|
|
118
|
+
}
|
|
119
|
+
// ===========================================================================
|
|
120
|
+
// Batch Management Methods
|
|
121
|
+
// ===========================================================================
|
|
122
|
+
/**
|
|
123
|
+
* Create a new import batch
|
|
124
|
+
*/
|
|
125
|
+
async createBatch(emailAccount, dateRangeStart, dateRangeEnd, config) {
|
|
126
|
+
const { data, error } = await this.supabase
|
|
127
|
+
.from('gmail_import_batches')
|
|
128
|
+
.insert({
|
|
129
|
+
email_account: emailAccount,
|
|
130
|
+
date_range_start: dateRangeStart.toISOString(),
|
|
131
|
+
date_range_end: dateRangeEnd.toISOString(),
|
|
132
|
+
status: 'pending',
|
|
133
|
+
config_used: config || {},
|
|
134
|
+
})
|
|
135
|
+
.select('id')
|
|
136
|
+
.single();
|
|
137
|
+
if (error) {
|
|
138
|
+
throw new Error(`Failed to create batch: ${error.message}`);
|
|
139
|
+
}
|
|
140
|
+
return data.id;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Start a batch (mark as in_progress)
|
|
144
|
+
*/
|
|
145
|
+
async startBatch(batchId, totalThreads) {
|
|
146
|
+
const { error } = await this.supabase
|
|
147
|
+
.from('gmail_import_batches')
|
|
148
|
+
.update({
|
|
149
|
+
status: 'in_progress',
|
|
150
|
+
started_at: new Date().toISOString(),
|
|
151
|
+
total_threads_found: totalThreads,
|
|
152
|
+
})
|
|
153
|
+
.eq('id', batchId);
|
|
154
|
+
if (error) {
|
|
155
|
+
throw new Error(`Failed to start batch: ${error.message}`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Update batch progress
|
|
160
|
+
*/
|
|
161
|
+
async updateBatchProgress(batchId, progress) {
|
|
162
|
+
const updateData = {};
|
|
163
|
+
if (progress.threadsProcessed !== undefined) {
|
|
164
|
+
updateData.threads_processed = progress.threadsProcessed;
|
|
165
|
+
}
|
|
166
|
+
if (progress.entriesCreated !== undefined) {
|
|
167
|
+
updateData.entries_created = progress.entriesCreated;
|
|
168
|
+
}
|
|
169
|
+
if (progress.entriesSkipped !== undefined) {
|
|
170
|
+
updateData.entries_skipped = progress.entriesSkipped;
|
|
171
|
+
}
|
|
172
|
+
if (progress.errorsEncountered !== undefined) {
|
|
173
|
+
updateData.errors_encountered = progress.errorsEncountered;
|
|
174
|
+
}
|
|
175
|
+
const { error } = await this.supabase
|
|
176
|
+
.from('gmail_import_batches')
|
|
177
|
+
.update(updateData)
|
|
178
|
+
.eq('id', batchId);
|
|
179
|
+
if (error) {
|
|
180
|
+
throw new Error(`Failed to update batch progress: ${error.message}`);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Add error to batch error log
|
|
185
|
+
*/
|
|
186
|
+
async addBatchError(batchId, errorMessage) {
|
|
187
|
+
// Fetch current error log
|
|
188
|
+
const { data: batch } = await this.supabase
|
|
189
|
+
.from('gmail_import_batches')
|
|
190
|
+
.select('error_log, errors_encountered')
|
|
191
|
+
.eq('id', batchId)
|
|
192
|
+
.single();
|
|
193
|
+
const currentLog = batch?.error_log || [];
|
|
194
|
+
const newLog = [
|
|
195
|
+
...currentLog,
|
|
196
|
+
{ timestamp: new Date().toISOString(), error: errorMessage },
|
|
197
|
+
];
|
|
198
|
+
const { error } = await this.supabase
|
|
199
|
+
.from('gmail_import_batches')
|
|
200
|
+
.update({
|
|
201
|
+
error_log: newLog,
|
|
202
|
+
errors_encountered: (batch?.errors_encountered || 0) + 1,
|
|
203
|
+
})
|
|
204
|
+
.eq('id', batchId);
|
|
205
|
+
if (error) {
|
|
206
|
+
throw new Error(`Failed to add batch error: ${error.message}`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Complete a batch
|
|
211
|
+
*/
|
|
212
|
+
async completeBatch(batchId, status = 'completed') {
|
|
213
|
+
const { error } = await this.supabase
|
|
214
|
+
.from('gmail_import_batches')
|
|
215
|
+
.update({
|
|
216
|
+
status,
|
|
217
|
+
completed_at: new Date().toISOString(),
|
|
218
|
+
})
|
|
219
|
+
.eq('id', batchId);
|
|
220
|
+
if (error) {
|
|
221
|
+
throw new Error(`Failed to complete batch: ${error.message}`);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Get batch info
|
|
226
|
+
*/
|
|
227
|
+
async getBatch(batchId) {
|
|
228
|
+
const { data, error } = await this.supabase
|
|
229
|
+
.from('gmail_import_batches')
|
|
230
|
+
.select('*')
|
|
231
|
+
.eq('id', batchId)
|
|
232
|
+
.single();
|
|
233
|
+
if (error || !data) {
|
|
234
|
+
return null;
|
|
235
|
+
}
|
|
236
|
+
return this.mapBatchRow(data);
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Get recent batches for an email account
|
|
240
|
+
*/
|
|
241
|
+
async getRecentBatches(emailAccount, limit = 10) {
|
|
242
|
+
const { data, error } = await this.supabase
|
|
243
|
+
.from('gmail_import_batches')
|
|
244
|
+
.select('*')
|
|
245
|
+
.eq('email_account', emailAccount)
|
|
246
|
+
.order('created_at', { ascending: false })
|
|
247
|
+
.limit(limit);
|
|
248
|
+
if (error || !data) {
|
|
249
|
+
return [];
|
|
250
|
+
}
|
|
251
|
+
return data.map((row) => this.mapBatchRow(row));
|
|
252
|
+
}
|
|
253
|
+
// ===========================================================================
|
|
254
|
+
// Statistics Methods
|
|
255
|
+
// ===========================================================================
|
|
256
|
+
/**
|
|
257
|
+
* Get overall extraction statistics
|
|
258
|
+
*/
|
|
259
|
+
async getStats() {
|
|
260
|
+
const [entriesResult, recentBatches] = await Promise.all([
|
|
261
|
+
this.supabase.rpc('get_gmail_knowledge_stats'),
|
|
262
|
+
this.getRecentBatches('sales@catalistgroup.co', 5),
|
|
263
|
+
]);
|
|
264
|
+
const stats = entriesResult.data?.[0] || {
|
|
265
|
+
total_entries: 0,
|
|
266
|
+
pending_entries: 0,
|
|
267
|
+
approved_entries: 0,
|
|
268
|
+
entries_with_embeddings: 0,
|
|
269
|
+
};
|
|
270
|
+
return {
|
|
271
|
+
totalEntries: stats.total_entries || 0,
|
|
272
|
+
pendingEntries: stats.pending_entries || 0,
|
|
273
|
+
approvedEntries: stats.approved_entries || 0,
|
|
274
|
+
entriesWithEmbeddings: stats.entries_with_embeddings || 0,
|
|
275
|
+
recentBatches,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
// ===========================================================================
|
|
279
|
+
// Helper Methods
|
|
280
|
+
// ===========================================================================
|
|
281
|
+
mapStateRow(row) {
|
|
282
|
+
return {
|
|
283
|
+
id: row.id,
|
|
284
|
+
emailAddress: row.email_address,
|
|
285
|
+
lastHistoryId: row.last_history_id,
|
|
286
|
+
lastExtractedAt: row.last_extracted_at ? new Date(row.last_extracted_at) : null,
|
|
287
|
+
totalEntriesExtracted: row.total_entries_extracted,
|
|
288
|
+
lastBatchId: row.last_batch_id,
|
|
289
|
+
consecutiveErrors: row.consecutive_errors,
|
|
290
|
+
lastError: row.last_error,
|
|
291
|
+
lastErrorAt: row.last_error_at ? new Date(row.last_error_at) : null,
|
|
292
|
+
createdAt: new Date(row.created_at),
|
|
293
|
+
updatedAt: new Date(row.updated_at),
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
mapBatchRow(row) {
|
|
297
|
+
return {
|
|
298
|
+
id: row.id,
|
|
299
|
+
emailAccount: row.email_account,
|
|
300
|
+
dateRangeStart: new Date(row.date_range_start),
|
|
301
|
+
dateRangeEnd: new Date(row.date_range_end),
|
|
302
|
+
status: row.status,
|
|
303
|
+
totalThreadsFound: row.total_threads_found,
|
|
304
|
+
threadsProcessed: row.threads_processed,
|
|
305
|
+
entriesCreated: row.entries_created,
|
|
306
|
+
entriesSkipped: row.entries_skipped,
|
|
307
|
+
errorsEncountered: row.errors_encountered,
|
|
308
|
+
startedAt: row.started_at ? new Date(row.started_at) : null,
|
|
309
|
+
completedAt: row.completed_at ? new Date(row.completed_at) : null,
|
|
310
|
+
errorLog: row.error_log || [],
|
|
311
|
+
configUsed: row.config_used || {},
|
|
312
|
+
createdAt: new Date(row.created_at),
|
|
313
|
+
updatedAt: new Date(row.updated_at),
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
// =============================================================================
|
|
318
|
+
// Singleton Instance
|
|
319
|
+
// =============================================================================
|
|
320
|
+
let stateManagerInstance = null;
|
|
321
|
+
/**
|
|
322
|
+
* Get singleton state manager instance
|
|
323
|
+
*/
|
|
324
|
+
export function getStateManager() {
|
|
325
|
+
if (!stateManagerInstance) {
|
|
326
|
+
const supabaseUrl = process.env.SUPABASE_URL || process.env.NEXT_PUBLIC_SUPABASE_URL;
|
|
327
|
+
const supabaseServiceRoleKey = process.env.SUPABASE_SERVICE_ROLE_KEY;
|
|
328
|
+
if (!supabaseUrl || !supabaseServiceRoleKey) {
|
|
329
|
+
throw new Error('SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY are required');
|
|
330
|
+
}
|
|
331
|
+
stateManagerInstance = new StateManager({
|
|
332
|
+
supabaseUrl,
|
|
333
|
+
supabaseServiceRoleKey,
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
return stateManagerInstance;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Reset the singleton (for testing)
|
|
340
|
+
*/
|
|
341
|
+
export function resetStateManager() {
|
|
342
|
+
stateManagerInstance = null;
|
|
343
|
+
}
|
|
344
|
+
//# sourceMappingURL=state-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-manager.js","sourceRoot":"","sources":["../../src/extraction/state-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAkB,MAAM,uBAAuB,CAAC;AA4CrE,gFAAgF;AAChF,gBAAgB;AAChB,gFAAgF;AAEhF,MAAM,OAAO,YAAY;IACf,QAAQ,CAAiB;IAEjC,YAAY,MAA0B;QACpC,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAClF,CAAC;IAED,8EAA8E;IAC9E,2BAA2B;IAC3B,8EAA8E;IAE9E;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,YAAoB;QACjC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aACxC,IAAI,CAAC,wBAAwB,CAAC;aAC9B,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC;aACjC,MAAM,EAAE,CAAC;QAEZ,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,YAAoB;QACzC,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAE9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;iBACxC,IAAI,CAAC,wBAAwB,CAAC;iBAC9B,MAAM,CAAC;gBACN,aAAa,EAAE,YAAY;gBAC3B,eAAe,EAAE,IAAI;gBACrB,iBAAiB,EAAE,IAAI;gBACvB,uBAAuB,EAAE,CAAC;gBAC1B,kBAAkB,EAAE,CAAC;aACtB,CAAC;iBACD,MAAM,EAAE;iBACR,MAAM,EAAE,CAAC;YAEZ,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,sCAAsC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACzE,CAAC;YAED,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CACtB,YAAoB,EACpB,OAIC;QAED,MAAM,UAAU,GAA4B;YAC1C,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC3C,kBAAkB,EAAE,CAAC;YACrB,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,IAAI;SACpB,CAAC;QAEF,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,UAAU,CAAC,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;QACjD,CAAC;QAED,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YAC3C,4BAA4B;YAC5B,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;iBAC/C,IAAI,CAAC,wBAAwB,CAAC;iBAC9B,MAAM,CAAC,yBAAyB,CAAC;iBACjC,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC;iBACjC,MAAM,EAAE,CAAC;YAEZ,UAAU,CAAC,uBAAuB;gBAChC,CAAC,YAAY,EAAE,uBAAuB,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;QAC5E,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,UAAU,CAAC,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;QAC7C,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aAClC,IAAI,CAAC,wBAAwB,CAAC;aAC9B,MAAM,CAAC,UAAU,CAAC;aAClB,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;QAErC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,sCAAsC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,YAAoB,EAAE,YAAoB;QAC1D,oBAAoB;QACpB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAExD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aAClC,IAAI,CAAC,wBAAwB,CAAC;aAC9B,MAAM,CAAC;YACN,kBAAkB,EAAE,KAAK,CAAC,iBAAiB,GAAG,CAAC;YAC/C,UAAU,EAAE,YAAY;YACxB,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACxC,CAAC;aACD,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;QAErC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,YAAoB,EAAE,uBAA+B,CAAC;QACxE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,KAAK,CAAC,iBAAiB,IAAI,oBAAoB,CAAC;IACzD,CAAC;IAED,8EAA8E;IAC9E,2BAA2B;IAC3B,8EAA8E;IAE9E;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,YAAoB,EACpB,cAAoB,EACpB,YAAkB,EAClB,MAAgC;QAEhC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aACxC,IAAI,CAAC,sBAAsB,CAAC;aAC5B,MAAM,CAAC;YACN,aAAa,EAAE,YAAY;YAC3B,gBAAgB,EAAE,cAAc,CAAC,WAAW,EAAE;YAC9C,cAAc,EAAE,YAAY,CAAC,WAAW,EAAE;YAC1C,MAAM,EAAE,SAAS;YACjB,WAAW,EAAE,MAAM,IAAI,EAAE;SAC1B,CAAC;aACD,MAAM,CAAC,IAAI,CAAC;aACZ,MAAM,EAAE,CAAC;QAEZ,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,OAAe,EAAE,YAAoB;QACpD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aAClC,IAAI,CAAC,sBAAsB,CAAC;aAC5B,MAAM,CAAC;YACN,MAAM,EAAE,aAAa;YACrB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,mBAAmB,EAAE,YAAY;SAClC,CAAC;aACD,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErB,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CACvB,OAAe,EACf,QAKC;QAED,MAAM,UAAU,GAA4B,EAAE,CAAC;QAE/C,IAAI,QAAQ,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YAC5C,UAAU,CAAC,iBAAiB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;QAC3D,CAAC;QACD,IAAI,QAAQ,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YAC1C,UAAU,CAAC,eAAe,GAAG,QAAQ,CAAC,cAAc,CAAC;QACvD,CAAC;QACD,IAAI,QAAQ,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YAC1C,UAAU,CAAC,eAAe,GAAG,QAAQ,CAAC,cAAc,CAAC;QACvD,CAAC;QACD,IAAI,QAAQ,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;YAC7C,UAAU,CAAC,kBAAkB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QAC7D,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aAClC,IAAI,CAAC,sBAAsB,CAAC;aAC5B,MAAM,CAAC,UAAU,CAAC;aAClB,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErB,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,oCAAoC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,OAAe,EAAE,YAAoB;QACvD,0BAA0B;QAC1B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aACxC,IAAI,CAAC,sBAAsB,CAAC;aAC5B,MAAM,CAAC,+BAA+B,CAAC;aACvC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;aACjB,MAAM,EAAE,CAAC;QAEZ,MAAM,UAAU,GAAG,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG;YACb,GAAG,UAAU;YACb,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;SAC7D,CAAC;QAEF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aAClC,IAAI,CAAC,sBAAsB,CAAC;aAC5B,MAAM,CAAC;YACN,SAAS,EAAE,MAAM;YACjB,kBAAkB,EAAE,CAAC,KAAK,EAAE,kBAAkB,IAAI,CAAC,CAAC,GAAG,CAAC;SACzD,CAAC;aACD,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErB,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,OAAe,EACf,SAA6C,WAAW;QAExD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aAClC,IAAI,CAAC,sBAAsB,CAAC;aAC5B,MAAM,CAAC;YACN,MAAM;YACN,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACvC,CAAC;aACD,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErB,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aACxC,IAAI,CAAC,sBAAsB,CAAC;aAC5B,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;aACjB,MAAM,EAAE,CAAC;QAEZ,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,YAAoB,EAAE,QAAgB,EAAE;QAC7D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ;aACxC,IAAI,CAAC,sBAAsB,CAAC;aAC5B,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC;aACjC,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;aACzC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEhB,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,8EAA8E;IAC9E,qBAAqB;IACrB,8EAA8E;IAE9E;;OAEG;IACH,KAAK,CAAC,QAAQ;QAOZ,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACvD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,2BAA2B,CAAC;YAC9C,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,EAAE,CAAC,CAAC;SACnD,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;YACvC,aAAa,EAAE,CAAC;YAChB,eAAe,EAAE,CAAC;YAClB,gBAAgB,EAAE,CAAC;YACnB,uBAAuB,EAAE,CAAC;SAC3B,CAAC;QAEF,OAAO;YACL,YAAY,EAAE,KAAK,CAAC,aAAa,IAAI,CAAC;YACtC,cAAc,EAAE,KAAK,CAAC,eAAe,IAAI,CAAC;YAC1C,eAAe,EAAE,KAAK,CAAC,gBAAgB,IAAI,CAAC;YAC5C,qBAAqB,EAAE,KAAK,CAAC,uBAAuB,IAAI,CAAC;YACzD,aAAa;SACd,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,iBAAiB;IACjB,8EAA8E;IAEtE,WAAW,CAAC,GAA4B;QAC9C,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,YAAY,EAAE,GAAG,CAAC,aAAuB;YACzC,aAAa,EAAE,GAAG,CAAC,eAAgC;YACnD,eAAe,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,iBAA2B,CAAC,CAAC,CAAC,CAAC,IAAI;YACzF,qBAAqB,EAAE,GAAG,CAAC,uBAAiC;YAC5D,WAAW,EAAE,GAAG,CAAC,aAA8B;YAC/C,iBAAiB,EAAE,GAAG,CAAC,kBAA4B;YACnD,SAAS,EAAE,GAAG,CAAC,UAA2B;YAC1C,WAAW,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,aAAuB,CAAC,CAAC,CAAC,CAAC,IAAI;YAC7E,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAoB,CAAC;YAC7C,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAoB,CAAC;SAC9C,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,GAA4B;QAC9C,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAY;YACpB,YAAY,EAAE,GAAG,CAAC,aAAuB;YACzC,cAAc,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,gBAA0B,CAAC;YACxD,YAAY,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,cAAwB,CAAC;YACpD,MAAM,EAAE,GAAG,CAAC,MAA6B;YACzC,iBAAiB,EAAE,GAAG,CAAC,mBAA6B;YACpD,gBAAgB,EAAE,GAAG,CAAC,iBAA2B;YACjD,cAAc,EAAE,GAAG,CAAC,eAAyB;YAC7C,cAAc,EAAE,GAAG,CAAC,eAAyB;YAC7C,iBAAiB,EAAE,GAAG,CAAC,kBAA4B;YACnD,SAAS,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAoB,CAAC,CAAC,CAAC,CAAC,IAAI;YACrE,WAAW,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,YAAsB,CAAC,CAAC,CAAC,CAAC,IAAI;YAC3E,QAAQ,EAAG,GAAG,CAAC,SAAyD,IAAI,EAAE;YAC9E,UAAU,EAAG,GAAG,CAAC,WAAuC,IAAI,EAAE;YAC9D,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAoB,CAAC;YAC7C,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAoB,CAAC;SAC9C,CAAC;IACJ,CAAC;CACF;AAED,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF,IAAI,oBAAoB,GAAwB,IAAI,CAAC;AAErD;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;QACrF,MAAM,sBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;QAErE,IAAI,CAAC,WAAW,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,CAAC;QAED,oBAAoB,GAAG,IAAI,YAAY,CAAC;YACtC,WAAW;YACX,sBAAsB;SACvB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,oBAAoB,GAAG,IAAI,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Response Generation Module
|
|
3
|
+
*
|
|
4
|
+
* Generates brand-compliant responses using Claude:
|
|
5
|
+
* - Assembles context from analysis and knowledge
|
|
6
|
+
* - Applies brand voice guidelines
|
|
7
|
+
* - Enforces forbidden terms rules
|
|
8
|
+
* - Formats for target channel
|
|
9
|
+
* - Validates before sending
|
|
10
|
+
*/
|
|
11
|
+
import { type Config } from '../config.js';
|
|
12
|
+
import type { GeneratedResponse, InboundMessage, AnalysisResult, KnowledgeContext, SupportChannel } from '../types.js';
|
|
13
|
+
export declare class ResponseGenerationService {
|
|
14
|
+
private client;
|
|
15
|
+
private effectiveConfig;
|
|
16
|
+
constructor(configOverride?: Config);
|
|
17
|
+
private getClient;
|
|
18
|
+
/**
|
|
19
|
+
* Generate a response for a message
|
|
20
|
+
*/
|
|
21
|
+
generateResponse(message: InboundMessage, analysis: AnalysisResult, knowledge: KnowledgeContext, options?: {
|
|
22
|
+
targetChannel?: SupportChannel;
|
|
23
|
+
maxAttempts?: number;
|
|
24
|
+
}): Promise<GeneratedResponse>;
|
|
25
|
+
/**
|
|
26
|
+
* Build context prompt for Claude
|
|
27
|
+
*/
|
|
28
|
+
private buildContextPrompt;
|
|
29
|
+
/**
|
|
30
|
+
* Call Claude to generate response
|
|
31
|
+
*/
|
|
32
|
+
private callClaude;
|
|
33
|
+
/**
|
|
34
|
+
* Format response for target channel
|
|
35
|
+
*/
|
|
36
|
+
private formatForChannel;
|
|
37
|
+
/**
|
|
38
|
+
* Format text as HTML for email
|
|
39
|
+
*/
|
|
40
|
+
private formatAsHtml;
|
|
41
|
+
/**
|
|
42
|
+
* Format text for SMS (truncate and simplify)
|
|
43
|
+
*/
|
|
44
|
+
private formatForSms;
|
|
45
|
+
/**
|
|
46
|
+
* Format text as Slack blocks
|
|
47
|
+
*/
|
|
48
|
+
private formatAsSlackBlocks;
|
|
49
|
+
/**
|
|
50
|
+
* Extract citations from response
|
|
51
|
+
*/
|
|
52
|
+
private extractCitations;
|
|
53
|
+
/**
|
|
54
|
+
* Calculate quality score for response
|
|
55
|
+
*/
|
|
56
|
+
private calculateQualityScore;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Remove common AI writing patterns to make responses sound more natural
|
|
60
|
+
* Based on Wikipedia's "Signs of AI writing" guide
|
|
61
|
+
*/
|
|
62
|
+
export declare function humanizeResponse(text: string): string;
|
|
63
|
+
export declare function getResponseGenerationService(configOverride?: Config): ResponseGenerationService;
|
|
64
|
+
/**
|
|
65
|
+
* Generate a response for a message
|
|
66
|
+
*/
|
|
67
|
+
export declare function generateResponse(message: InboundMessage, analysis: AnalysisResult, knowledge: KnowledgeContext, options?: {
|
|
68
|
+
targetChannel?: SupportChannel;
|
|
69
|
+
maxAttempts?: number;
|
|
70
|
+
}): Promise<GeneratedResponse>;
|
|
71
|
+
/**
|
|
72
|
+
* Check if response is ready to send
|
|
73
|
+
*/
|
|
74
|
+
export declare function isResponseReadyToSend(response: GeneratedResponse): boolean;
|
|
75
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generation/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAU,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AASnD,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,gBAAgB,EAIhB,cAAc,EAGf,MAAM,aAAa,CAAC;AAgKrB,qBAAa,yBAAyB;IACpC,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,eAAe,CAAS;gBAEpB,cAAc,CAAC,EAAE,MAAM;IAInC,OAAO,CAAC,SAAS;IAejB;;OAEG;IACG,gBAAgB,CACpB,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,gBAAgB,EAC3B,OAAO,GAAE;QACP,aAAa,CAAC,EAAE,cAAc,CAAC;QAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;KACjB,GACL,OAAO,CAAC,iBAAiB,CAAC;IAiH7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwH1B;;OAEG;YACW,UAAU;IA2BxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAoCxB;;OAEG;IACH,OAAO,CAAC,YAAY;IAkBpB;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+BxB;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAqB9B;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqGrD;AAQD,wBAAgB,4BAA4B,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,yBAAyB,CAU/F;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,gBAAgB,EAC3B,OAAO,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,cAAc,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACjE,OAAO,CAAC,iBAAiB,CAAC,CAE5B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAK1E"}
|