@shawnfroos/gong-lite 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/LICENSE +21 -0
- package/README.md +73 -0
- package/dist/csv-utils.d.ts +37 -0
- package/dist/csv-utils.d.ts.map +1 -0
- package/dist/csv-utils.js +113 -0
- package/dist/csv-utils.js.map +1 -0
- package/dist/gong-client.d.ts +309 -0
- package/dist/gong-client.d.ts.map +1 -0
- package/dist/gong-client.js +415 -0
- package/dist/gong-client.js.map +1 -0
- package/dist/handlers.d.ts +20 -0
- package/dist/handlers.d.ts.map +1 -0
- package/dist/handlers.js +231 -0
- package/dist/handlers.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +251 -0
- package/dist/index.js.map +1 -0
- package/dist/tools.d.ts +292 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +233 -0
- package/dist/tools.js.map +1 -0
- package/dist/transcript-formatter.d.ts +64 -0
- package/dist/transcript-formatter.d.ts.map +1 -0
- package/dist/transcript-formatter.js +295 -0
- package/dist/transcript-formatter.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
// Gong API client with authentication, pagination, and rate limiting
|
|
2
|
+
const BASE_URL = 'https://us-78768.api.gong.io';
|
|
3
|
+
const RATE_LIMIT_DELAY_MS = 350; // ~3 calls/second
|
|
4
|
+
const MAX_RETRIES = 3;
|
|
5
|
+
const RETRY_DELAY_MS = 1000;
|
|
6
|
+
const DEFAULT_MAX_RECORDS = 1000; // Prevent unbounded memory usage
|
|
7
|
+
export class GongApiError extends Error {
|
|
8
|
+
statusCode;
|
|
9
|
+
requestId;
|
|
10
|
+
constructor(message, statusCode, requestId) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.statusCode = statusCode;
|
|
13
|
+
this.requestId = requestId;
|
|
14
|
+
this.name = 'GongApiError';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export class GongRateLimitError extends GongApiError {
|
|
18
|
+
retryAfter;
|
|
19
|
+
constructor(message, retryAfter, requestId) {
|
|
20
|
+
super(message, 429, requestId);
|
|
21
|
+
this.retryAfter = retryAfter;
|
|
22
|
+
this.name = 'GongRateLimitError';
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function createAuthHeader(accessKey, secretKey) {
|
|
26
|
+
const credentials = `${accessKey}:${secretKey}`;
|
|
27
|
+
const encoded = Buffer.from(credentials).toString('base64');
|
|
28
|
+
return `Basic ${encoded}`;
|
|
29
|
+
}
|
|
30
|
+
async function sleep(ms) {
|
|
31
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
32
|
+
}
|
|
33
|
+
export function createGongClient(config) {
|
|
34
|
+
const { accessKey, secretKey, baseUrl = BASE_URL } = config;
|
|
35
|
+
const authHeader = createAuthHeader(accessKey, secretKey);
|
|
36
|
+
let lastRequestTime = 0;
|
|
37
|
+
async function request(method, path, body) {
|
|
38
|
+
// Rate limiting: ensure minimum delay between requests
|
|
39
|
+
const now = Date.now();
|
|
40
|
+
const timeSinceLastRequest = now - lastRequestTime;
|
|
41
|
+
if (timeSinceLastRequest < RATE_LIMIT_DELAY_MS) {
|
|
42
|
+
await sleep(RATE_LIMIT_DELAY_MS - timeSinceLastRequest);
|
|
43
|
+
}
|
|
44
|
+
let lastError = null;
|
|
45
|
+
for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
|
|
46
|
+
try {
|
|
47
|
+
lastRequestTime = Date.now();
|
|
48
|
+
const fetchOptions = {
|
|
49
|
+
method,
|
|
50
|
+
headers: {
|
|
51
|
+
Authorization: authHeader,
|
|
52
|
+
'Content-Type': 'application/json',
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
if (body) {
|
|
56
|
+
fetchOptions.body = JSON.stringify(body);
|
|
57
|
+
}
|
|
58
|
+
const response = await fetch(`${baseUrl}${path}`, fetchOptions);
|
|
59
|
+
const requestId = response.headers.get('request-id') ?? undefined;
|
|
60
|
+
if (response.status === 429) {
|
|
61
|
+
const retryAfter = parseInt(response.headers.get('retry-after') ?? '1', 10);
|
|
62
|
+
throw new GongRateLimitError('Rate limit exceeded', retryAfter, requestId);
|
|
63
|
+
}
|
|
64
|
+
if (!response.ok) {
|
|
65
|
+
const errorText = await response.text();
|
|
66
|
+
throw new GongApiError(`Gong API error: ${response.status} - ${errorText}`, response.status, requestId);
|
|
67
|
+
}
|
|
68
|
+
return (await response.json());
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
lastError = error;
|
|
72
|
+
if (error instanceof GongRateLimitError) {
|
|
73
|
+
const waitTime = (error.retryAfter ?? 1) * 1000;
|
|
74
|
+
await sleep(waitTime);
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
if (error instanceof GongApiError && error.statusCode >= 500) {
|
|
78
|
+
await sleep(RETRY_DELAY_MS * (attempt + 1));
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
throw error;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
throw lastError ?? new Error('Request failed after retries');
|
|
85
|
+
}
|
|
86
|
+
async function listCalls(options = {}) {
|
|
87
|
+
const allCalls = [];
|
|
88
|
+
const maxRecords = options.maxRecords ?? DEFAULT_MAX_RECORDS;
|
|
89
|
+
let cursor = options.cursor;
|
|
90
|
+
let truncated = false;
|
|
91
|
+
do {
|
|
92
|
+
const body = {};
|
|
93
|
+
if (options.fromDateTime) {
|
|
94
|
+
body.filter = {
|
|
95
|
+
...(body.filter ?? {}),
|
|
96
|
+
fromDateTime: options.fromDateTime,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
if (options.toDateTime) {
|
|
100
|
+
body.filter = {
|
|
101
|
+
...(body.filter ?? {}),
|
|
102
|
+
toDateTime: options.toDateTime,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
if (options.workspaceId) {
|
|
106
|
+
body.filter = {
|
|
107
|
+
...(body.filter ?? {}),
|
|
108
|
+
workspaceId: options.workspaceId,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
if (options.participantEmails && options.participantEmails.length > 0) {
|
|
112
|
+
body.filter = {
|
|
113
|
+
...(body.filter ?? {}),
|
|
114
|
+
callParticipant: { emails: options.participantEmails },
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
if (cursor) {
|
|
118
|
+
body.cursor = cursor;
|
|
119
|
+
}
|
|
120
|
+
const response = await request('POST', '/v2/calls', Object.keys(body).length > 0 ? body : undefined);
|
|
121
|
+
const remainingCapacity = maxRecords - allCalls.length;
|
|
122
|
+
if (response.calls.length <= remainingCapacity) {
|
|
123
|
+
allCalls.push(...response.calls);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
allCalls.push(...response.calls.slice(0, remainingCapacity));
|
|
127
|
+
truncated = true;
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
cursor = response.records.cursor;
|
|
131
|
+
} while (cursor && allCalls.length < maxRecords);
|
|
132
|
+
if (cursor && allCalls.length >= maxRecords) {
|
|
133
|
+
truncated = true;
|
|
134
|
+
}
|
|
135
|
+
return { records: allCalls, truncated, totalFetched: allCalls.length };
|
|
136
|
+
}
|
|
137
|
+
async function getCall(callId) {
|
|
138
|
+
const response = await request('POST', '/v2/calls/extensive', {
|
|
139
|
+
filter: { callIds: [callId] },
|
|
140
|
+
contentSelector: {
|
|
141
|
+
exposedFields: {
|
|
142
|
+
parties: true,
|
|
143
|
+
content: {
|
|
144
|
+
topics: true,
|
|
145
|
+
trackers: true,
|
|
146
|
+
pointsOfInterest: true,
|
|
147
|
+
brief: true,
|
|
148
|
+
outline: true,
|
|
149
|
+
highlights: true,
|
|
150
|
+
callOutcome: true,
|
|
151
|
+
keyPoints: true,
|
|
152
|
+
},
|
|
153
|
+
interaction: {
|
|
154
|
+
speakers: true,
|
|
155
|
+
interactionStats: true,
|
|
156
|
+
video: true,
|
|
157
|
+
},
|
|
158
|
+
collaboration: {
|
|
159
|
+
publicComments: true,
|
|
160
|
+
},
|
|
161
|
+
media: true,
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
});
|
|
165
|
+
return response.calls[0] ?? null;
|
|
166
|
+
}
|
|
167
|
+
async function getTranscripts(callIds) {
|
|
168
|
+
const allTranscripts = [];
|
|
169
|
+
let cursor;
|
|
170
|
+
do {
|
|
171
|
+
const body = {
|
|
172
|
+
filter: { callIds },
|
|
173
|
+
};
|
|
174
|
+
if (cursor) {
|
|
175
|
+
body.cursor = cursor;
|
|
176
|
+
}
|
|
177
|
+
const response = await request('POST', '/v2/calls/transcript', body);
|
|
178
|
+
allTranscripts.push(...response.callTranscripts);
|
|
179
|
+
cursor = response.records.cursor;
|
|
180
|
+
} while (cursor);
|
|
181
|
+
return allTranscripts;
|
|
182
|
+
}
|
|
183
|
+
async function listUsers(options = {}) {
|
|
184
|
+
const allUsers = [];
|
|
185
|
+
const maxRecords = options.maxRecords ?? DEFAULT_MAX_RECORDS;
|
|
186
|
+
let cursor = options.cursor;
|
|
187
|
+
let truncated = false;
|
|
188
|
+
do {
|
|
189
|
+
const body = {};
|
|
190
|
+
if (cursor) {
|
|
191
|
+
body.cursor = cursor;
|
|
192
|
+
}
|
|
193
|
+
const response = await request('POST', '/v2/users', Object.keys(body).length > 0 ? body : undefined);
|
|
194
|
+
const remainingCapacity = maxRecords - allUsers.length;
|
|
195
|
+
if (response.users.length <= remainingCapacity) {
|
|
196
|
+
allUsers.push(...response.users);
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
allUsers.push(...response.users.slice(0, remainingCapacity));
|
|
200
|
+
truncated = true;
|
|
201
|
+
break;
|
|
202
|
+
}
|
|
203
|
+
cursor = response.records.cursor;
|
|
204
|
+
} while (cursor && allUsers.length < maxRecords);
|
|
205
|
+
if (cursor && allUsers.length >= maxRecords) {
|
|
206
|
+
truncated = true;
|
|
207
|
+
}
|
|
208
|
+
return { records: allUsers, truncated, totalFetched: allUsers.length };
|
|
209
|
+
}
|
|
210
|
+
async function searchCalls(options) {
|
|
211
|
+
const { query, fromDateTime, toDateTime, maxRecords = 100 } = options;
|
|
212
|
+
const queryLower = query.toLowerCase();
|
|
213
|
+
const results = [];
|
|
214
|
+
// Fetch calls within date range
|
|
215
|
+
const listOptions = {
|
|
216
|
+
maxRecords: maxRecords * 10, // Fetch more to account for filtering
|
|
217
|
+
};
|
|
218
|
+
if (fromDateTime)
|
|
219
|
+
listOptions.fromDateTime = fromDateTime;
|
|
220
|
+
if (toDateTime)
|
|
221
|
+
listOptions.toDateTime = toDateTime;
|
|
222
|
+
const callsResult = await listCalls(listOptions);
|
|
223
|
+
// Process calls in batches to search transcripts
|
|
224
|
+
const batchSize = 20;
|
|
225
|
+
for (let i = 0; i < callsResult.records.length && results.length < maxRecords; i += batchSize) {
|
|
226
|
+
const batch = callsResult.records.slice(i, i + batchSize);
|
|
227
|
+
const callIds = batch.map(c => c.id);
|
|
228
|
+
const transcripts = await getTranscripts(callIds);
|
|
229
|
+
for (const transcript of transcripts) {
|
|
230
|
+
if (results.length >= maxRecords)
|
|
231
|
+
break;
|
|
232
|
+
const matches = [];
|
|
233
|
+
for (const entry of transcript.transcript) {
|
|
234
|
+
for (const sentence of entry.sentences) {
|
|
235
|
+
if (sentence.text.toLowerCase().includes(queryLower)) {
|
|
236
|
+
matches.push({
|
|
237
|
+
speakerId: entry.speakerId,
|
|
238
|
+
text: sentence.text,
|
|
239
|
+
startTime: sentence.start,
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
if (matches.length > 0) {
|
|
245
|
+
const call = batch.find(c => c.id === transcript.callId);
|
|
246
|
+
if (call) {
|
|
247
|
+
results.push({ call, matches });
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
return {
|
|
253
|
+
records: results,
|
|
254
|
+
truncated: results.length >= maxRecords,
|
|
255
|
+
totalFetched: results.length,
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
async function getCallSummary(callId) {
|
|
259
|
+
const response = await request('POST', '/v2/calls/extensive', {
|
|
260
|
+
filter: { callIds: [callId] },
|
|
261
|
+
contentSelector: {
|
|
262
|
+
exposedFields: {
|
|
263
|
+
content: {
|
|
264
|
+
topics: true,
|
|
265
|
+
brief: true,
|
|
266
|
+
outline: true,
|
|
267
|
+
highlights: true,
|
|
268
|
+
callOutcome: true,
|
|
269
|
+
keyPoints: true,
|
|
270
|
+
},
|
|
271
|
+
},
|
|
272
|
+
},
|
|
273
|
+
});
|
|
274
|
+
const call = response.calls[0];
|
|
275
|
+
if (!call)
|
|
276
|
+
return null;
|
|
277
|
+
const summary = { callId: call.id };
|
|
278
|
+
if (call.title)
|
|
279
|
+
summary.title = call.title;
|
|
280
|
+
if (call.content?.brief)
|
|
281
|
+
summary.brief = call.content.brief;
|
|
282
|
+
if (call.content?.keyPoints)
|
|
283
|
+
summary.keyPoints = call.content.keyPoints;
|
|
284
|
+
if (call.content?.highlights)
|
|
285
|
+
summary.highlights = call.content.highlights;
|
|
286
|
+
if (call.content?.outline)
|
|
287
|
+
summary.outline = call.content.outline;
|
|
288
|
+
if (call.content?.callOutcome)
|
|
289
|
+
summary.callOutcome = call.content.callOutcome;
|
|
290
|
+
if (call.content?.topics)
|
|
291
|
+
summary.topics = call.content.topics;
|
|
292
|
+
return summary;
|
|
293
|
+
}
|
|
294
|
+
async function getCallAnalytics(callId) {
|
|
295
|
+
const response = await request('POST', '/v2/calls/extensive', {
|
|
296
|
+
filter: { callIds: [callId] },
|
|
297
|
+
contentSelector: {
|
|
298
|
+
exposedFields: {
|
|
299
|
+
parties: true,
|
|
300
|
+
content: {
|
|
301
|
+
topics: true,
|
|
302
|
+
},
|
|
303
|
+
interaction: {
|
|
304
|
+
speakers: true,
|
|
305
|
+
interactionStats: true,
|
|
306
|
+
},
|
|
307
|
+
},
|
|
308
|
+
},
|
|
309
|
+
});
|
|
310
|
+
const call = response.calls[0];
|
|
311
|
+
if (!call)
|
|
312
|
+
return null;
|
|
313
|
+
// Build speaker lookup from parties
|
|
314
|
+
const partyMap = new Map();
|
|
315
|
+
for (const party of call.parties ?? []) {
|
|
316
|
+
if (party.speakerId) {
|
|
317
|
+
partyMap.set(party.speakerId, party);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
// Calculate total talk time for ratio calculation
|
|
321
|
+
const totalTalkTime = (call.interaction?.speakers ?? []).reduce((sum, s) => sum + (s.talkTime ?? 0), 0);
|
|
322
|
+
// Build speaker analytics with names and ratios
|
|
323
|
+
const speakers = (call.interaction?.speakers ?? []).map(speaker => {
|
|
324
|
+
const party = partyMap.get(speaker.id);
|
|
325
|
+
const talkRatio = totalTalkTime > 0 && speaker.talkTime
|
|
326
|
+
? Math.round((speaker.talkTime / totalTalkTime) * 100) / 100
|
|
327
|
+
: undefined;
|
|
328
|
+
const speakerData = { id: speaker.id };
|
|
329
|
+
if (party?.name)
|
|
330
|
+
speakerData.name = party.name;
|
|
331
|
+
if (speaker.talkTime !== undefined)
|
|
332
|
+
speakerData.talkTime = speaker.talkTime;
|
|
333
|
+
if (talkRatio !== undefined)
|
|
334
|
+
speakerData.talkRatio = talkRatio;
|
|
335
|
+
return speakerData;
|
|
336
|
+
});
|
|
337
|
+
const analytics = {
|
|
338
|
+
callId: call.id,
|
|
339
|
+
speakers,
|
|
340
|
+
interactionStats: call.interaction?.interactionStats ?? [],
|
|
341
|
+
};
|
|
342
|
+
if (call.duration !== undefined)
|
|
343
|
+
analytics.duration = call.duration;
|
|
344
|
+
if (call.content?.topics)
|
|
345
|
+
analytics.topics = call.content.topics;
|
|
346
|
+
return analytics;
|
|
347
|
+
}
|
|
348
|
+
async function searchSummaries(options) {
|
|
349
|
+
const { query, fromDateTime, toDateTime, maxRecords = 50 } = options;
|
|
350
|
+
const queryLower = query.toLowerCase();
|
|
351
|
+
const results = [];
|
|
352
|
+
// Fetch calls within date range
|
|
353
|
+
const listOptions = {
|
|
354
|
+
maxRecords: maxRecords * 5, // Fetch more to account for filtering
|
|
355
|
+
};
|
|
356
|
+
if (fromDateTime)
|
|
357
|
+
listOptions.fromDateTime = fromDateTime;
|
|
358
|
+
if (toDateTime)
|
|
359
|
+
listOptions.toDateTime = toDateTime;
|
|
360
|
+
const callsResult = await listCalls(listOptions);
|
|
361
|
+
// Get summaries for each call and filter by query
|
|
362
|
+
for (const call of callsResult.records) {
|
|
363
|
+
if (results.length >= maxRecords)
|
|
364
|
+
break;
|
|
365
|
+
const summary = await getCallSummary(call.id);
|
|
366
|
+
if (!summary)
|
|
367
|
+
continue;
|
|
368
|
+
const matchedIn = [];
|
|
369
|
+
// Search in title
|
|
370
|
+
if (summary.title?.toLowerCase().includes(queryLower)) {
|
|
371
|
+
matchedIn.push('title');
|
|
372
|
+
}
|
|
373
|
+
// Search in brief
|
|
374
|
+
if (summary.brief?.toLowerCase().includes(queryLower)) {
|
|
375
|
+
matchedIn.push('brief');
|
|
376
|
+
}
|
|
377
|
+
// Search in topics
|
|
378
|
+
if (summary.topics?.some(t => t.name.toLowerCase().includes(queryLower))) {
|
|
379
|
+
matchedIn.push('topics');
|
|
380
|
+
}
|
|
381
|
+
// Search in key points
|
|
382
|
+
if (summary.keyPoints?.some(kp => kp.text.toLowerCase().includes(queryLower))) {
|
|
383
|
+
matchedIn.push('keyPoints');
|
|
384
|
+
}
|
|
385
|
+
// Search in highlights
|
|
386
|
+
if (summary.highlights?.some(h => h.text.toLowerCase().includes(queryLower))) {
|
|
387
|
+
matchedIn.push('highlights');
|
|
388
|
+
}
|
|
389
|
+
// Search in outline sections
|
|
390
|
+
if (summary.outline?.some(o => o.section.toLowerCase().includes(queryLower) ||
|
|
391
|
+
o.items?.some(item => item.toLowerCase().includes(queryLower)))) {
|
|
392
|
+
matchedIn.push('outline');
|
|
393
|
+
}
|
|
394
|
+
if (matchedIn.length > 0) {
|
|
395
|
+
results.push({ call, summary, matchedIn });
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
return {
|
|
399
|
+
records: results,
|
|
400
|
+
truncated: results.length >= maxRecords,
|
|
401
|
+
totalFetched: results.length,
|
|
402
|
+
};
|
|
403
|
+
}
|
|
404
|
+
return {
|
|
405
|
+
listCalls,
|
|
406
|
+
getCall,
|
|
407
|
+
getCallSummary,
|
|
408
|
+
getCallAnalytics,
|
|
409
|
+
getTranscripts,
|
|
410
|
+
listUsers,
|
|
411
|
+
searchCalls,
|
|
412
|
+
searchSummaries,
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
//# sourceMappingURL=gong-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gong-client.js","sourceRoot":"","sources":["../src/gong-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { GongClient } from './gong-client.js';
|
|
2
|
+
export interface ToolCallResponse {
|
|
3
|
+
content: Array<{
|
|
4
|
+
type: 'text';
|
|
5
|
+
text: string;
|
|
6
|
+
}>;
|
|
7
|
+
isError?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function handleListCalls(client: GongClient, args: unknown): Promise<ToolCallResponse>;
|
|
10
|
+
export declare function handleGetCall(client: GongClient, args: unknown): Promise<ToolCallResponse>;
|
|
11
|
+
export declare function handleGetTranscript(client: GongClient, args: unknown): Promise<ToolCallResponse>;
|
|
12
|
+
export declare function handleListUsers(client: GongClient): Promise<ToolCallResponse>;
|
|
13
|
+
export declare function handleSearchCalls(client: GongClient, args: unknown): Promise<ToolCallResponse>;
|
|
14
|
+
export declare function handleGetCallSummary(client: GongClient, args: unknown): Promise<ToolCallResponse>;
|
|
15
|
+
export declare function handleGetCallAnalytics(client: GongClient, args: unknown): Promise<ToolCallResponse>;
|
|
16
|
+
export declare function handleExportCallMarkdown(client: GongClient, args: unknown): Promise<ToolCallResponse>;
|
|
17
|
+
export declare function handleExportSummariesCsv(client: GongClient, args: unknown): Promise<ToolCallResponse>;
|
|
18
|
+
export declare function handleSearchSummaries(client: GongClient, args: unknown): Promise<ToolCallResponse>;
|
|
19
|
+
export declare function handleToolCall(client: GongClient, name: string, args: unknown): Promise<ToolCallResponse>;
|
|
20
|
+
//# sourceMappingURL=handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,gBAAgB,CAAC,CAgB3B;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,gBAAgB,CAAC,CAY3B;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,gBAAgB,CAAC,CAa3B;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,gBAAgB,CAAC,CAU3B;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,gBAAgB,CAAC,CAiB3B;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,gBAAgB,CAAC,CAY3B;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,gBAAgB,CAAC,CAY3B;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,gBAAgB,CAAC,CAiC3B;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,gBAAgB,CAAC,CAmC3B;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,gBAAgB,CAAC,CAiB3B;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,gBAAgB,CAAC,CAmC3B"}
|