@coldiq/mcp 0.1.19 → 0.2.4
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/client.d.ts +2 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +7 -1
- package/dist/client.js.map +1 -1
- package/dist/executor.d.ts +11 -0
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +72 -11
- package/dist/executor.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/registry.d.ts +1 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +34 -8
- package/dist/registry.js.map +1 -1
- package/dist/tools/find-emails.d.ts +2 -7
- package/dist/tools/find-emails.d.ts.map +1 -1
- package/dist/tools/find-emails.js +193 -67
- package/dist/tools/find-emails.js.map +1 -1
- package/dist/tools/find-people.d.ts +3 -2
- package/dist/tools/find-people.d.ts.map +1 -1
- package/dist/tools/find-people.js +65 -7
- package/dist/tools/find-people.js.map +1 -1
- package/dist/tools/get-credit-balance.d.ts +17 -0
- package/dist/tools/get-credit-balance.d.ts.map +1 -0
- package/dist/tools/get-credit-balance.js +20 -0
- package/dist/tools/get-credit-balance.js.map +1 -0
- package/dist/utils/compact-people.d.ts +24 -0
- package/dist/utils/compact-people.d.ts.map +1 -0
- package/dist/utils/compact-people.js +306 -0
- package/dist/utils/compact-people.js.map +1 -0
- package/dist/utils/provider-resolver.d.ts.map +1 -1
- package/dist/utils/provider-resolver.js +12 -1
- package/dist/utils/provider-resolver.js.map +1 -1
- package/package.json +1 -1
- package/src/client.ts +9 -1
- package/src/executor.ts +89 -17
- package/src/index.ts +8 -0
- package/src/registry.ts +40 -8
- package/src/tools/find-emails.ts +251 -80
- package/src/tools/find-people.ts +70 -7
- package/src/tools/get-credit-balance.ts +24 -0
- package/src/utils/compact-people.ts +318 -0
- package/src/utils/provider-resolver.ts +12 -1
- package/tests/executor.test.ts +165 -0
- package/tests/registry-find-people.test.ts +31 -3
- package/tests/registry-search-companies.test.ts +46 -7
- package/tests/tools/find-emails.test.ts +267 -1
- package/tests/tools/find-people.test.ts +269 -5
- package/tests/tools/get-credit-balance.test.ts +56 -0
- package/tests/utils/compact-people.test.ts +462 -0
|
@@ -5,6 +5,12 @@ import { resolvePreferredProviders, buildAllFailedError, FIND_EMAILS_PROVIDERS }
|
|
|
5
5
|
// Single-find_email registry providers that the bulk pipeline does NOT already cover.
|
|
6
6
|
// Used as a fallback waterfall for residual misses after Prospeo + FullEnrich + Findymail + Icypeas.
|
|
7
7
|
const SINGLE_ONLY_FIND_EMAIL_PROVIDERS = ['limadata-work-email', 'blitzapi', 'limadata-work-email-linkedin', 'linkupapi'];
|
|
8
|
+
// Chunk inputs of >10 people into independent waterfalls. Empirically, Prospeo bulk on 25-50
|
|
9
|
+
// names regularly exceeds the 30s client timeout; 10 keeps each Prospeo call well under it.
|
|
10
|
+
export const FIND_EMAILS_CHUNK_SIZE = 10;
|
|
11
|
+
// Concurrency cap keeps peak in-flight calls (per-chunk fan-out × concurrent chunks) under
|
|
12
|
+
// the undici Agent's 32-connection budget (client.ts).
|
|
13
|
+
const CHUNK_CONCURRENCY = 3;
|
|
8
14
|
// Pulls a string email from any of the provider-specific response shapes used in the
|
|
9
15
|
// find_email registry (registry.ts:1228-1413). Keep in sync with the providers covered there.
|
|
10
16
|
function extractEmail(data) {
|
|
@@ -37,11 +43,14 @@ export const findEmailsName = 'find_emails';
|
|
|
37
43
|
export const findEmailsDescription = 'Find professional emails for multiple people in one batch. ' +
|
|
38
44
|
'Uses Prospeo bulk first; for any misses, runs FullEnrich and FindyMail/IcyPeas in parallel — ' +
|
|
39
45
|
'whichever provider returns an email first wins. ' +
|
|
40
|
-
'Much faster than calling find_email one-by-one. Max 50 people per call
|
|
46
|
+
'Much faster than calling find_email one-by-one. Max 50 people per call — ' +
|
|
47
|
+
`inputs are split into chunks of ${FIND_EMAILS_CHUNK_SIZE} internally for reliability, so larger batches work transparently. ` +
|
|
41
48
|
'Each person needs a unique id to match results back. ' +
|
|
42
49
|
'Always pass first_name, last_name, and domain — they are the primary enrichment signal. ' +
|
|
43
50
|
'Also pass linkedin_url when available, but never rely on it alone as some providers cannot resolve vanity URLs. ' +
|
|
44
|
-
'ColdIQ automatically picks the best waterfall — pass use_providers only if you need specific tools.'
|
|
51
|
+
'ColdIQ automatically picks the best waterfall — pass use_providers only if you need specific tools. ' +
|
|
52
|
+
'Response includes `_meta.batch_status` (complete|partial|failed) and per-provider call stats so callers can ' +
|
|
53
|
+
'tell a real "no coverage" result apart from a provider-level failure.';
|
|
45
54
|
export const findEmailsSchema = {
|
|
46
55
|
people: z
|
|
47
56
|
.array(z.object({
|
|
@@ -56,13 +65,88 @@ export const findEmailsSchema = {
|
|
|
56
65
|
.describe('People to find emails for (max 50)'),
|
|
57
66
|
use_providers: z.array(z.string()).optional().describe(`Optional ordered list of providers to use. Leave empty to let ColdIQ automatically run the best waterfall — recommended for most use cases. Available providers: ${FIND_EMAILS_PROVIDERS.join(', ')}. Provider names are matched fuzzily, so minor typos are tolerated.`),
|
|
58
67
|
};
|
|
68
|
+
function newBatchStats() {
|
|
69
|
+
return {
|
|
70
|
+
prospeo: { attempted: 0, failed: 0 },
|
|
71
|
+
fullenrich: { attempted: 0, failed: 0 },
|
|
72
|
+
findymail: { attempted: 0, failed: 0 },
|
|
73
|
+
icypeas: { attempted: 0, failed: 0 },
|
|
74
|
+
single_fallback: { attempted: 0, failed: 0 },
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
function mergeStats(into, from) {
|
|
78
|
+
for (const key of Object.keys(into)) {
|
|
79
|
+
into[key].attempted += from[key].attempted;
|
|
80
|
+
into[key].failed += from[key].failed;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function totalFailures(s) {
|
|
84
|
+
let n = 0;
|
|
85
|
+
for (const key of Object.keys(s))
|
|
86
|
+
n += s[key].failed;
|
|
87
|
+
return n;
|
|
88
|
+
}
|
|
89
|
+
// A call counts as a "failure" when callApi never received a usable response: network error,
|
|
90
|
+
// abort/timeout (status === 0), or upstream 5xx. Upstream 4xx is a data-shape problem, not a
|
|
91
|
+
// provider outage — we don't surface it as a batch-level failure.
|
|
92
|
+
function isCallFailure(res) {
|
|
93
|
+
return !res.ok && (res.status === 0 || res.status >= 500);
|
|
94
|
+
}
|
|
59
95
|
function sleep(ms) {
|
|
60
96
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
61
97
|
}
|
|
62
98
|
function missesOf(people, results) {
|
|
63
99
|
return people.filter((p) => !results.find((r) => r.id === p.id)?.email);
|
|
64
100
|
}
|
|
65
|
-
|
|
101
|
+
function chunkArray(arr, size) {
|
|
102
|
+
if (arr.length <= size)
|
|
103
|
+
return [arr];
|
|
104
|
+
const out = [];
|
|
105
|
+
for (let i = 0; i < arr.length; i += size)
|
|
106
|
+
out.push(arr.slice(i, i + size));
|
|
107
|
+
return out;
|
|
108
|
+
}
|
|
109
|
+
async function withConcurrency(items, concurrency, fn) {
|
|
110
|
+
const results = new Array(items.length);
|
|
111
|
+
let cursor = 0;
|
|
112
|
+
const workerCount = Math.min(concurrency, items.length);
|
|
113
|
+
const workers = Array.from({ length: workerCount }, async () => {
|
|
114
|
+
while (true) {
|
|
115
|
+
const i = cursor++;
|
|
116
|
+
if (i >= items.length)
|
|
117
|
+
return;
|
|
118
|
+
results[i] = await fn(items[i], i);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
await Promise.all(workers);
|
|
122
|
+
return results;
|
|
123
|
+
}
|
|
124
|
+
async function prospeoBulkStep(chunk, results, stats) {
|
|
125
|
+
const bulkBody = {
|
|
126
|
+
data: chunk.map((p) => p.linkedin_url
|
|
127
|
+
? { identifier: p.id, linkedin_url: p.linkedin_url }
|
|
128
|
+
: { identifier: p.id, first_name: p.first_name, last_name: p.last_name, company_name: p.domain }),
|
|
129
|
+
};
|
|
130
|
+
stats.prospeo.attempted += 1;
|
|
131
|
+
const bulkRes = await callApi('POST', '/prospeo/bulk-enrich-person', bulkBody);
|
|
132
|
+
if (isCallFailure(bulkRes))
|
|
133
|
+
stats.prospeo.failed += 1;
|
|
134
|
+
if (!bulkRes.ok)
|
|
135
|
+
return;
|
|
136
|
+
const data = bulkRes.data;
|
|
137
|
+
for (const item of data.results ?? []) {
|
|
138
|
+
const email = item.person?.email?.email;
|
|
139
|
+
if (typeof email === 'string' && email.includes('@')) {
|
|
140
|
+
const hit = results.find((r) => r.id === item.identifier);
|
|
141
|
+
if (hit) {
|
|
142
|
+
hit.email = email;
|
|
143
|
+
hit.provider = 'prospeo';
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
async function fullEnrichStep(misses, results, stats) {
|
|
149
|
+
stats.fullenrich.attempted += 1;
|
|
66
150
|
const feBody = {
|
|
67
151
|
name: 'mcp-enrich-batch',
|
|
68
152
|
data: misses.map((p) => ({
|
|
@@ -75,11 +159,16 @@ async function fullEnrichStep(misses, results) {
|
|
|
75
159
|
})),
|
|
76
160
|
};
|
|
77
161
|
const feCreateRes = await callApi('POST', '/fullenrich/contact/enrich/bulk', feBody);
|
|
78
|
-
if (!feCreateRes.ok)
|
|
162
|
+
if (!feCreateRes.ok) {
|
|
163
|
+
if (isCallFailure(feCreateRes))
|
|
164
|
+
stats.fullenrich.failed += 1;
|
|
79
165
|
return;
|
|
166
|
+
}
|
|
80
167
|
const enrichmentId = feCreateRes.data.enrichment_id;
|
|
81
|
-
if (!enrichmentId)
|
|
168
|
+
if (!enrichmentId) {
|
|
169
|
+
// No id returned but POST 2xx — treat as a soft skip, not a network failure.
|
|
82
170
|
return;
|
|
171
|
+
}
|
|
83
172
|
// Tightened from 90s → 45s: Step 3 runs in parallel and typically fills misses
|
|
84
173
|
// faster, so FullEnrich's marginal value decays past this point.
|
|
85
174
|
const deadline = Date.now() + 45_000;
|
|
@@ -110,8 +199,11 @@ async function fullEnrichStep(misses, results) {
|
|
|
110
199
|
}
|
|
111
200
|
return;
|
|
112
201
|
}
|
|
202
|
+
// Polling deadline reached without DONE/FAILED — count as a failure so the caller
|
|
203
|
+
// sees fullenrich didn't actually finish.
|
|
204
|
+
stats.fullenrich.failed += 1;
|
|
113
205
|
}
|
|
114
|
-
async function findymailIcypeasStep(misses, results, allowedProviders) {
|
|
206
|
+
async function findymailIcypeasStep(misses, results, stats, allowedProviders) {
|
|
115
207
|
const useFindymail = !allowedProviders || allowedProviders.includes('findymail');
|
|
116
208
|
const useIcypeas = !allowedProviders || allowedProviders.includes('icypeas');
|
|
117
209
|
await Promise.all(misses.map(async (person) => {
|
|
@@ -123,10 +215,13 @@ async function findymailIcypeasStep(misses, results, allowedProviders) {
|
|
|
123
215
|
return;
|
|
124
216
|
if (useFindymail) {
|
|
125
217
|
const fullName = [person.first_name, person.last_name].filter(Boolean).join(' ');
|
|
218
|
+
stats.findymail.attempted += 1;
|
|
126
219
|
const fmRes = await callApi('POST', '/findymail/search/name', {
|
|
127
220
|
name: fullName,
|
|
128
221
|
domain: person.domain,
|
|
129
222
|
});
|
|
223
|
+
if (isCallFailure(fmRes))
|
|
224
|
+
stats.findymail.failed += 1;
|
|
130
225
|
if (!hit.email && fmRes.ok) {
|
|
131
226
|
const d = fmRes.data;
|
|
132
227
|
if (typeof d.email === 'string' && d.email.includes('@')) {
|
|
@@ -138,11 +233,14 @@ async function findymailIcypeasStep(misses, results, allowedProviders) {
|
|
|
138
233
|
}
|
|
139
234
|
if (hit.email || !useIcypeas)
|
|
140
235
|
return;
|
|
236
|
+
stats.icypeas.attempted += 1;
|
|
141
237
|
const icyRes = await callApi('POST', '/icypeas/email-search', {
|
|
142
238
|
firstname: person.first_name,
|
|
143
239
|
lastname: person.last_name,
|
|
144
240
|
domainOrCompany: person.domain,
|
|
145
241
|
});
|
|
242
|
+
if (isCallFailure(icyRes))
|
|
243
|
+
stats.icypeas.failed += 1;
|
|
146
244
|
if (!hit.email && icyRes.ok) {
|
|
147
245
|
const d = icyRes.data;
|
|
148
246
|
const email = typeof d.email === 'string' && d.email.includes('@')
|
|
@@ -157,37 +255,51 @@ async function findymailIcypeasStep(misses, results, allowedProviders) {
|
|
|
157
255
|
}
|
|
158
256
|
}));
|
|
159
257
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
const bulkBody = {
|
|
173
|
-
data: people.map((p) => p.linkedin_url
|
|
174
|
-
? { identifier: p.id, linkedin_url: p.linkedin_url }
|
|
175
|
-
: { identifier: p.id, first_name: p.first_name, last_name: p.last_name, company_name: p.domain }),
|
|
258
|
+
async function singleFallbackStep(stragglers, results, stats, fallbackProviders) {
|
|
259
|
+
if (fallbackProviders.length === 0 || stragglers.length === 0)
|
|
260
|
+
return;
|
|
261
|
+
await Promise.all(stragglers.map(async (person) => {
|
|
262
|
+
const hit = results.find((r) => r.id === person.id);
|
|
263
|
+
if (!hit || hit.email)
|
|
264
|
+
return;
|
|
265
|
+
const singleInput = {
|
|
266
|
+
first_name: person.first_name,
|
|
267
|
+
last_name: person.last_name,
|
|
268
|
+
domain: person.domain,
|
|
269
|
+
linkedin_url: person.linkedin_url,
|
|
176
270
|
};
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
271
|
+
stats.single_fallback.attempted += 1;
|
|
272
|
+
// Per-person 30s ceiling so one slow provider doesn't block the rest.
|
|
273
|
+
const exec = executeWithFallback('find_email', singleInput, { providers: fallbackProviders });
|
|
274
|
+
const timeout = new Promise((resolve) => setTimeout(() => resolve(null), 30_000));
|
|
275
|
+
const raced = await Promise.race([exec, timeout]);
|
|
276
|
+
if (!raced) {
|
|
277
|
+
// Race timed out — none of the fallback providers returned in time.
|
|
278
|
+
stats.single_fallback.failed += 1;
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
if (isExecutionError(raced)) {
|
|
282
|
+
// Every fallback provider returned an error. Only count as `failed` when at least
|
|
283
|
+
// one of them looked like a real network/upstream failure — providers that responded
|
|
284
|
+
// 200 with no result are legitimate "no coverage", not a batch failure.
|
|
285
|
+
const hadRealFailure = raced.providers_tried.some((p) => p.status === 0 || p.status >= 500);
|
|
286
|
+
if (hadRealFailure)
|
|
287
|
+
stats.single_fallback.failed += 1;
|
|
288
|
+
return;
|
|
190
289
|
}
|
|
290
|
+
const email = extractEmail(raced.data);
|
|
291
|
+
if (email && !hit.email) {
|
|
292
|
+
hit.email = email;
|
|
293
|
+
hit.provider = raced._meta.provider;
|
|
294
|
+
}
|
|
295
|
+
}));
|
|
296
|
+
}
|
|
297
|
+
async function processChunk(chunk, allowedProviders, isConstrained) {
|
|
298
|
+
const results = chunk.map((p) => ({ id: p.id, email: null, provider: null }));
|
|
299
|
+
const stats = newBatchStats();
|
|
300
|
+
// Step 1: Prospeo bulk — 1 call for everyone in this chunk.
|
|
301
|
+
if (!isConstrained || allowedProviders.includes('prospeo')) {
|
|
302
|
+
await prospeoBulkStep(chunk, results, stats);
|
|
191
303
|
}
|
|
192
304
|
// Steps 2 & 3 run concurrently for misses.
|
|
193
305
|
// Step 2: FullEnrich bulk async (slow tail, better European coverage)
|
|
@@ -195,14 +307,14 @@ export async function findEmailsHandler(input) {
|
|
|
195
307
|
// Both branches write to the shared `results` array; every write site checks
|
|
196
308
|
// `if (hit.email)` first so whichever provider arrives first wins and the
|
|
197
309
|
// other does not overwrite.
|
|
198
|
-
const misses = missesOf(
|
|
310
|
+
const misses = missesOf(chunk, results);
|
|
199
311
|
if (misses.length > 0) {
|
|
200
312
|
const steps = [];
|
|
201
313
|
if (!isConstrained || allowedProviders.includes('fullenrich')) {
|
|
202
|
-
steps.push(fullEnrichStep(misses, results));
|
|
314
|
+
steps.push(fullEnrichStep(misses, results, stats));
|
|
203
315
|
}
|
|
204
316
|
if (!isConstrained || allowedProviders.includes('findymail') || allowedProviders.includes('icypeas')) {
|
|
205
|
-
steps.push(findymailIcypeasStep(misses, results, isConstrained ? allowedProviders : undefined));
|
|
317
|
+
steps.push(findymailIcypeasStep(misses, results, stats, isConstrained ? allowedProviders : undefined));
|
|
206
318
|
}
|
|
207
319
|
if (steps.length > 0)
|
|
208
320
|
await Promise.allSettled(steps);
|
|
@@ -211,51 +323,65 @@ export async function findEmailsHandler(input) {
|
|
|
211
323
|
// Bulk covers Prospeo + FullEnrich + FindyMail + IcyPeas. The single-find_email registry
|
|
212
324
|
// (registry.ts:1228-1413) additionally covers LimaData, BlitzAPI, LimaData-LinkedIn, LinkupAPI.
|
|
213
325
|
// Without this step, agents would observe bulk return 0 and fall back to N+1 single calls.
|
|
214
|
-
const stragglers = missesOf(
|
|
326
|
+
const stragglers = missesOf(chunk, results);
|
|
215
327
|
if (stragglers.length > 0) {
|
|
216
328
|
const fallbackProviders = isConstrained
|
|
217
329
|
? allowedProviders.filter((p) => SINGLE_ONLY_FIND_EMAIL_PROVIDERS.includes(p))
|
|
218
330
|
: [...SINGLE_ONLY_FIND_EMAIL_PROVIDERS];
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
if (email && !hit.email) {
|
|
238
|
-
hit.email = email;
|
|
239
|
-
hit.provider = raced._meta.provider;
|
|
240
|
-
}
|
|
241
|
-
}));
|
|
242
|
-
}
|
|
331
|
+
await singleFallbackStep(stragglers, results, stats, fallbackProviders);
|
|
332
|
+
}
|
|
333
|
+
return { results, stats };
|
|
334
|
+
}
|
|
335
|
+
function computeBatchStatus(found, total, stats) {
|
|
336
|
+
const failures = totalFailures(stats);
|
|
337
|
+
if (failures === 0)
|
|
338
|
+
return 'complete';
|
|
339
|
+
if (found === 0 && total > 0)
|
|
340
|
+
return 'failed';
|
|
341
|
+
return 'partial';
|
|
342
|
+
}
|
|
343
|
+
export async function findEmailsHandler(input) {
|
|
344
|
+
const { use_providers: rawUseProviders, ...restInput } = input;
|
|
345
|
+
const people = restInput.people;
|
|
346
|
+
const resolved = resolvePreferredProviders('find_emails', restInput, rawUseProviders);
|
|
347
|
+
if (!resolved.ok) {
|
|
348
|
+
return { content: [{ type: 'text', text: JSON.stringify(resolved.error) }], isError: true };
|
|
243
349
|
}
|
|
350
|
+
const allowedProviders = resolved.providers;
|
|
351
|
+
const isConstrained = allowedProviders.length > 0;
|
|
352
|
+
const chunks = chunkArray(people, FIND_EMAILS_CHUNK_SIZE);
|
|
353
|
+
const chunkOutputs = await withConcurrency(chunks, CHUNK_CONCURRENCY, (chunk) => processChunk(chunk, allowedProviders, isConstrained));
|
|
354
|
+
const results = chunkOutputs.flatMap((c) => c.results);
|
|
355
|
+
const aggregateStats = newBatchStats();
|
|
356
|
+
for (const c of chunkOutputs)
|
|
357
|
+
mergeStats(aggregateStats, c.stats);
|
|
244
358
|
const found = results.filter((r) => r.email !== null).length;
|
|
359
|
+
const batchStatus = computeBatchStatus(found, people.length, aggregateStats);
|
|
360
|
+
// Constrained-mode behaviour preserved: if the caller pinned providers and got zero, push back.
|
|
245
361
|
if (isConstrained && found === 0) {
|
|
246
362
|
const err = buildAllFailedError(allowedProviders, 'find_emails', FIND_EMAILS_PROVIDERS);
|
|
247
363
|
return { content: [{ type: 'text', text: JSON.stringify(err) }], isError: true };
|
|
248
364
|
}
|
|
249
|
-
const meta =
|
|
250
|
-
|
|
251
|
-
:
|
|
365
|
+
const meta = {
|
|
366
|
+
providers: aggregateStats,
|
|
367
|
+
batch_status: batchStatus,
|
|
368
|
+
chunk_size: FIND_EMAILS_CHUNK_SIZE,
|
|
369
|
+
chunk_count: chunks.length,
|
|
370
|
+
};
|
|
371
|
+
if (resolved.matchedFrom && Object.keys(resolved.matchedFrom).length > 0) {
|
|
372
|
+
meta.matchedFrom = resolved.matchedFrom;
|
|
373
|
+
}
|
|
374
|
+
// Surface the silent-failure case the user reported: 200 OK with all-nulls is misleading
|
|
375
|
+
// when the nulls were caused by provider failures rather than legitimate no-coverage.
|
|
376
|
+
const isError = batchStatus === 'failed';
|
|
252
377
|
return {
|
|
253
378
|
content: [
|
|
254
379
|
{
|
|
255
380
|
type: 'text',
|
|
256
|
-
text: JSON.stringify({ data: { results, found, total: people.length },
|
|
381
|
+
text: JSON.stringify({ data: { results, found, total: people.length }, _meta: meta }),
|
|
257
382
|
},
|
|
258
383
|
],
|
|
384
|
+
...(isError ? { isError: true } : {}),
|
|
259
385
|
};
|
|
260
386
|
}
|
|
261
387
|
//# sourceMappingURL=find-emails.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-emails.js","sourceRoot":"","sources":["../../src/tools/find-emails.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACtE,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAErH,sFAAsF;AACtF,qGAAqG;AACrG,MAAM,gCAAgC,GAAG,CAAC,qBAAqB,EAAE,UAAU,EAAE,8BAA8B,EAAE,WAAW,CAAU,CAAA;AAElI,qFAAqF;AACrF,8FAA8F;AAC9F,SAAS,YAAY,CAAC,IAAa;IACjC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IAClD,MAAM,CAAC,GAAG,IAA+B,CAAA;IACzC,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC,KAAK,CAAA;IACxE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAW,CAAA;IACrI,MAAM,MAAM,GAAG,CAAC,CAAC,MAA6C,CAAA;IAC9D,MAAM,WAAW,GAAG,MAAM,EAAE,KAA4C,CAAA;IACxE,IAAI,OAAO,WAAW,EAAE,KAAK,KAAK,QAAQ,IAAK,WAAW,CAAC,KAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,WAAW,CAAC,KAAe,CAAA;IAC7H,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAA;IACrB,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,MAAM,KAAK,GAAI,MAAkC,CAAC,KAAK,CAAA;QACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAA;IACpE,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACxE,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAA4B,CAAA;QAClD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACpH,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAW,CAAA;QAClC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAA;AAE3C,MAAM,CAAC,MAAM,qBAAqB,GAChC,6DAA6D;IAC7D,+FAA+F;IAC/F,kDAAkD;IAClD,0EAA0E;IAC1E,uDAAuD;IACvD,0FAA0F;IAC1F,kHAAkH;IAClH,qGAAqG,CAAA;AAEvG,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,MAAM,EAAE,CAAC;SACN,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wEAAwE,CAAC;QACjG,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACxD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QACtD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAC5E,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+EAA+E,CAAC;KAC9H,CAAC,CACH;SACA,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,CAAC,oCAAoC,CAAC;IACjD,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oKAAoK,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,qEAAqE,CAAC;CAClU,CAAA;AAgBD,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AAC1D,CAAC;AAED,SAAS,QAAQ,CAAC,MAAqB,EAAE,OAAsB;IAC7D,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;AACzE,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,MAAqB,EAAE,OAAsB;IACzE,MAAM,MAAM,GAAG;QACb,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvB,SAAS,EAAE,CAAC,CAAC,EAAE;YACf,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,aAAa,EAAE,CAAC,gBAAgB,CAAC;SAClC,CAAC,CAAC;KACJ,CAAA;IAED,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,iCAAiC,EAAE,MAAM,CAAC,CAAA;IACpF,IAAI,CAAC,WAAW,CAAC,EAAE;QAAE,OAAM;IAE3B,MAAM,YAAY,GAAI,WAAW,CAAC,IAAgC,CAAC,aAAmC,CAAA;IACtG,IAAI,CAAC,YAAY;QAAE,OAAM;IAEzB,+EAA+E;IAC/E,iEAAiE;IACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAA;IACpC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,KAAK,CAAC,IAAI,CAAC,CAAA;QACjB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,mCAAmC,YAAY,EAAE,CAAC,CAAA;QACvF,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,SAAQ;QAEzB,MAAM,EAAE,GAAG,OAAO,CAAC,IAA+B,CAAA;QAClD,MAAM,MAAM,GAAG,EAAE,CAAC,MAA4B,CAAA;QAC9C,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ;YAAE,SAAQ;QAEtD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,EAAE,CAAC,IAAkD,CAAA;YACrE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;oBAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAA+B,CAAA;oBACrD,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;oBACzE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK;wBAAE,SAAQ;oBAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAA8B,CAAA;oBAClD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC3G,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;wBACrB,GAAG,CAAC,QAAQ,GAAG,YAAY,CAAA;oBAC7B,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAM;IACR,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,MAAqB,EAAE,OAAsB,EAAE,gBAA2B;IAC5G,MAAM,YAAY,GAAG,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IAChF,MAAM,UAAU,GAAG,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IAE5E,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAA;QACnD,IAAI,CAAC,GAAG;YAAE,OAAM;QAEhB,qEAAqE;QACrE,IAAI,GAAG,CAAC,KAAK;YAAE,OAAM;QAErB,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAEhF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,wBAAwB,EAAE;gBAC5D,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC,CAAA;YACF,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;gBAC3B,MAAM,CAAC,GAAG,KAAK,CAAC,IAA+B,CAAA;gBAC/C,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACzD,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAA;oBACnB,GAAG,CAAC,QAAQ,GAAG,WAAW,CAAA;oBAC1B,OAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,UAAU;YAAE,OAAM;QAEpC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,uBAAuB,EAAE;YAC5D,SAAS,EAAE,MAAM,CAAC,UAAU;YAC5B,QAAQ,EAAE,MAAM,CAAC,SAAS;YAC1B,eAAe,EAAE,MAAM,CAAC,MAAM;SAC/B,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,IAA+B,CAAA;YAChD,MAAM,KAAK,GACT,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAClD,CAAC,CAAC,CAAC,CAAC,KAAK;gBACT,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;oBACvF,CAAC,CAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAY;oBACzB,CAAC,CAAC,IAAI,CAAA;YACZ,IAAI,KAAK,EAAE,CAAC;gBACV,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;gBACjB,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAA;YAC1B,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CACH,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAA8B;IACpE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAA;IAC9D,MAAM,MAAM,GAAG,SAAS,CAAC,MAAuB,CAAA;IAEhD,MAAM,QAAQ,GAAG,yBAAyB,CAAC,aAAa,EAAE,SAAS,EAAE,eAAe,CAAC,CAAA;IACrF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IACtG,CAAC;IAED,MAAM,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAA;IAC3C,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAA;IAEjD,MAAM,OAAO,GAAkB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAE7F,+CAA+C;IAC/C,IAAI,CAAC,aAAa,IAAI,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3D,MAAM,QAAQ,GAAG;YACf,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACrB,CAAC,CAAC,YAAY;gBACZ,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE;gBACpD,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CACnG;SACF,CAAA;QAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,6BAA6B,EAAE,QAAQ,CAAC,CAAA;QAE9E,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,OAAO,CAAC,IAKpB,CAAA;YACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;gBACtC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAA;gBACvC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC,CAAA;oBACzD,IAAI,GAAG,EAAE,CAAC;wBACR,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;wBACjB,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAA;oBAC1B,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,wEAAwE;IACxE,qDAAqD;IACrD,6EAA6E;IAC7E,0EAA0E;IAC1E,4BAA4B;IAC5B,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAExC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,KAAK,GAAoB,EAAE,CAAA;QACjC,IAAI,CAAC,aAAa,IAAI,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;QAC7C,CAAC;QACD,IAAI,CAAC,aAAa,IAAI,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACrG,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;QACjG,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IACvD,CAAC;IAED,sDAAsD;IACtD,yFAAyF;IACzF,gGAAgG;IAChG,2FAA2F;IAC3F,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,iBAAiB,GAAG,aAAa;YACrC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,gCAAsD,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACrG,CAAC,CAAC,CAAC,GAAG,gCAAgC,CAAC,CAAA;QACzC,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,OAAO,CAAC,GAAG,CACf,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;gBAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAA;gBACnD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK;oBAAE,OAAM;gBAC7B,MAAM,WAAW,GAA4B;oBAC3C,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,YAAY,EAAE,MAAM,CAAC,YAAY;iBAClC,CAAA;gBACD,sEAAsE;gBACtE,MAAM,IAAI,GAAG,mBAAmB,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAA;gBAC7F,MAAM,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;gBACvF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;gBACjD,IAAI,CAAC,KAAK,IAAI,gBAAgB,CAAC,KAAK,CAAC;oBAAE,OAAM;gBAC7C,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBACtC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;oBACxB,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;oBACjB,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAA;gBACrC,CAAC;YACH,CAAC,CAAC,CACH,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,CAAA;IAE5D,IAAI,aAAa,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,mBAAmB,CAAC,gBAAgB,EAAE,aAAa,EAAE,qBAAqB,CAAC,CAAA;QACvF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC3F,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC;QAC/E,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE;QACvC,CAAC,CAAC,SAAS,CAAA;IAEb,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;aAC3G;SACF;KACF,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"find-emails.js","sourceRoot":"","sources":["../../src/tools/find-emails.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,8 @@ export declare const findPeopleSchema: {
|
|
|
9
9
|
locations: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
10
10
|
keywords: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
11
11
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
12
|
+
fields: z.ZodDefault<z.ZodEnum<["compact", "verbose"]>>;
|
|
13
|
+
reveal: z.ZodOptional<z.ZodBoolean>;
|
|
12
14
|
use_providers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
13
15
|
};
|
|
14
16
|
export declare function findPeopleHandler(input: Record<string, unknown>): Promise<{
|
|
@@ -16,12 +18,11 @@ export declare function findPeopleHandler(input: Record<string, unknown>): Promi
|
|
|
16
18
|
type: "text";
|
|
17
19
|
text: string;
|
|
18
20
|
}[];
|
|
19
|
-
isError: boolean;
|
|
20
21
|
} | {
|
|
21
22
|
content: {
|
|
22
23
|
type: "text";
|
|
23
24
|
text: string;
|
|
24
25
|
}[];
|
|
25
|
-
isError
|
|
26
|
+
isError: boolean;
|
|
26
27
|
}>;
|
|
27
28
|
//# sourceMappingURL=find-people.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-people.d.ts","sourceRoot":"","sources":["../../src/tools/find-people.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"find-people.d.ts","sourceRoot":"","sources":["../../src/tools/find-people.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAOvB,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAE3C,eAAO,MAAM,qBAAqB,QAWiJ,CAAA;AAEnL,eAAO,MAAM,gBAAgB;;;;;;;;;;;CAW5B,CAAA;AAYD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;GA6FrE"}
|
|
@@ -3,6 +3,7 @@ import { executeWithFallback, isExecutionError } from '../executor.js';
|
|
|
3
3
|
import { callApi } from '../client.js';
|
|
4
4
|
import { getProviders } from '../registry.js';
|
|
5
5
|
import { resolvePreferredProviders, getProvidersForCapability } from '../utils/provider-resolver.js';
|
|
6
|
+
import { compactPayload } from '../utils/compact-people.js';
|
|
6
7
|
export const findPeopleName = 'find_people';
|
|
7
8
|
export const findPeopleDescription = 'Find people at specific companies by job title. ' +
|
|
8
9
|
'Use this — never search_web — to find contacts, executives, or LinkedIn profiles at known companies. ' +
|
|
@@ -12,7 +13,9 @@ export const findPeopleDescription = 'Find people at specific companies by job t
|
|
|
12
13
|
'Prefer company_linkedin_urls when available — they make the search faster. Only pass company_domains when you have no LinkedIn URLs. ' +
|
|
13
14
|
'Pass job_titles EXACTLY as stated — never expand or generate variants (e.g. do NOT turn "CEO" into ["CEO", "Chief Executive Officer", "Founder"]). LeadsFactory handles fuzzy title matching internally; adding variants wastes personas and degrades results. ' +
|
|
14
15
|
'Do NOT pass seniorities unless explicitly asked — job titles alone produce better results. ' +
|
|
15
|
-
'Returns names, titles, LinkedIn URLs. Default limit: 25.'
|
|
16
|
+
'Returns names, titles, LinkedIn URLs, plus company name/domain/linkedin/headcount when available. Default limit: 25. ' +
|
|
17
|
+
'Response is compact by default (~99% smaller than the raw provider payload). Set fields="verbose" only when you specifically need employment history, skills, languages, or company descriptions. ' +
|
|
18
|
+
'When the matched provider is Apollo, last names are partially obfuscated and emails/LinkedIn URLs are omitted unless reveal=true is passed (adds 1 credit per revealed person).';
|
|
16
19
|
export const findPeopleSchema = {
|
|
17
20
|
company_linkedin_urls: z.array(z.string()).optional().describe('Company LinkedIn URLs (preferred over domains when available, e.g. ["https://linkedin.com/company/microsoft"])'),
|
|
18
21
|
company_domains: z.array(z.string()).optional().describe('Company domains to search (e.g. ["microsoft.com", "google.com"]). Use only when LinkedIn URLs are not available.'),
|
|
@@ -20,11 +23,21 @@ export const findPeopleSchema = {
|
|
|
20
23
|
seniorities: z.array(z.string()).optional().describe('Seniority levels (e.g. ["c_suite", "vp", "director"])'),
|
|
21
24
|
locations: z.array(z.string()).optional().describe('Person locations as either ISO-2 country codes ("BR") or English country names ("Brazil") — both are accepted and normalized internally. LeadsFactory uses these to scope contacts to the country; other providers fall back to free-text matching.'),
|
|
22
25
|
keywords: z.array(z.string()).optional().describe('Free-text keyword search terms (e.g. ["growth", "AI"])'),
|
|
23
|
-
limit: z.number().min(1).max(500).default(25).describe('Max results across all companies combined (default: 25, max: 500). For multiple companies multiply: e.g. 10 companies × 5 each = 50.'),
|
|
26
|
+
limit: z.number().min(1).max(500).default(25).describe('Max results across all companies combined (default: 25, max: 500). For multiple companies multiply: e.g. 10 companies × 5 each = 50. Note: when the matched provider is Apollo, results are capped at 100 per call (Apollo upstream limit).'),
|
|
27
|
+
fields: z.enum(['compact', 'verbose']).default('compact').describe('Response shape. "compact" (default) returns a small, predictable per-person record: name, title, linkedin_url, company {name, domain, linkedin_url, headcount}, plus seniority/email/location when the upstream provider includes them. "verbose" returns the raw provider passthrough (~30KB+ per record from FullEnrich: employment history, every company office, descriptions, skills, languages) — only use when you specifically need those fields.'),
|
|
28
|
+
reveal: z.boolean().optional().describe('Apollo-only: when true, follow the obfuscated Apollo people-search results with /apollo/people/bulk-match to reveal full names, emails, and LinkedIn URLs. Costs 1 extra credit per revealed person on top of the search credit. Has no effect for other providers (their data is already unobfuscated). Default false to protect credits.'),
|
|
24
29
|
use_providers: z.array(z.string()).optional().describe(`Optional ordered list of providers to use. Leave empty to let ColdIQ automatically pick the best tool for your inputs — recommended for most use cases. Available providers: ${getProvidersForCapability('find_people').join(', ')}. Provider names are matched fuzzily, so minor typos are tolerated.`),
|
|
25
30
|
};
|
|
31
|
+
function buildSuccess(result, fields) {
|
|
32
|
+
const payload = fields === 'compact'
|
|
33
|
+
? { ...result, data: compactPayload(result.data, result._meta.provider) }
|
|
34
|
+
: result;
|
|
35
|
+
return { content: [{ type: 'text', text: JSON.stringify(payload) }] };
|
|
36
|
+
}
|
|
26
37
|
export async function findPeopleHandler(input) {
|
|
27
|
-
const { use_providers: rawUseProviders, ...restInput } = input;
|
|
38
|
+
const { use_providers: rawUseProviders, reveal: rawReveal, fields: rawFields, ...restInput } = input;
|
|
39
|
+
const reveal = rawReveal === true;
|
|
40
|
+
const fields = rawFields === 'verbose' ? 'verbose' : 'compact';
|
|
28
41
|
const resolved = resolvePreferredProviders('find_people', restInput, rawUseProviders);
|
|
29
42
|
if (!resolved.ok) {
|
|
30
43
|
return { content: [{ type: 'text', text: JSON.stringify(resolved.error) }], isError: true };
|
|
@@ -33,6 +46,53 @@ export async function findPeopleHandler(input) {
|
|
|
33
46
|
if (isExecutionError(result)) {
|
|
34
47
|
return { content: [{ type: 'text', text: JSON.stringify(result) }], isError: true };
|
|
35
48
|
}
|
|
49
|
+
// Apollo's /people/search returns obfuscated data (last names like "Ar***t",
|
|
50
|
+
// no emails). When the caller opts in with reveal=true, follow up with
|
|
51
|
+
// /apollo/people/bulk-match (10 IDs per call, Apollo's bulk cap) to swap each
|
|
52
|
+
// person object for its fully-revealed counterpart. Costs 1 extra credit per
|
|
53
|
+
// revealed person on top of the original search credit.
|
|
54
|
+
if (reveal && result._meta.provider === 'apollo') {
|
|
55
|
+
const data = result.data;
|
|
56
|
+
const people = data.people ?? [];
|
|
57
|
+
const ids = people
|
|
58
|
+
.map((p) => p.id)
|
|
59
|
+
.filter((id) => typeof id === 'string' && id.length > 0);
|
|
60
|
+
if (ids.length > 0) {
|
|
61
|
+
const matches = [];
|
|
62
|
+
for (let i = 0; i < ids.length; i += 10) {
|
|
63
|
+
const chunk = ids.slice(i, i + 10);
|
|
64
|
+
const res = await callApi('POST', '/apollo/people/bulk-match', {
|
|
65
|
+
details: chunk.map((id) => ({ id })),
|
|
66
|
+
reveal_personal_emails: true,
|
|
67
|
+
});
|
|
68
|
+
if (res.ok && res.data && typeof res.data === 'object') {
|
|
69
|
+
const body = res.data;
|
|
70
|
+
const chunkMatches = body.matches ?? [];
|
|
71
|
+
matches.push(...chunkMatches);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (matches.length > 0) {
|
|
75
|
+
const matchById = new Map();
|
|
76
|
+
for (const m of matches) {
|
|
77
|
+
const id = m.id;
|
|
78
|
+
if (typeof id === 'string')
|
|
79
|
+
matchById.set(id, m);
|
|
80
|
+
}
|
|
81
|
+
const revealedPeople = people.map((p) => {
|
|
82
|
+
const id = p.id;
|
|
83
|
+
if (typeof id === 'string' && matchById.has(id))
|
|
84
|
+
return matchById.get(id);
|
|
85
|
+
return p;
|
|
86
|
+
});
|
|
87
|
+
// Only claim `revealed: true` when bulk-match returned a result for every ID.
|
|
88
|
+
// Partial reveals (some entries remain obfuscated) would otherwise mislead
|
|
89
|
+
// callers into trusting `last_name` / `email` that aren't actually filled.
|
|
90
|
+
const fullyRevealed = matchById.size >= ids.length;
|
|
91
|
+
const merged = { ...data, people: revealedPeople, revealed: fullyRevealed };
|
|
92
|
+
return buildSuccess({ ...result, data: merged }, fields);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
36
96
|
// Gap-fill: if LeadsFactory missed some domains, try Apollo for those.
|
|
37
97
|
// Only runs when domains were the input — if we sent LinkedIn URLs, no_results_domains
|
|
38
98
|
// is unreliable (LF may resolve arbitrary domains from URLs, e.g. linkedin.com itself).
|
|
@@ -56,13 +116,11 @@ export async function findPeopleHandler(input) {
|
|
|
56
116
|
...apolloRes.data,
|
|
57
117
|
},
|
|
58
118
|
};
|
|
59
|
-
return {
|
|
60
|
-
content: [{ type: 'text', text: JSON.stringify({ ...result, data: merged }) }],
|
|
61
|
-
};
|
|
119
|
+
return buildSuccess({ ...result, data: merged }, fields);
|
|
62
120
|
}
|
|
63
121
|
}
|
|
64
122
|
}
|
|
65
123
|
}
|
|
66
|
-
return
|
|
124
|
+
return buildSuccess(result, fields);
|
|
67
125
|
}
|
|
68
126
|
//# sourceMappingURL=find-people.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-people.js","sourceRoot":"","sources":["../../src/tools/find-people.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"find-people.js","sourceRoot":"","sources":["../../src/tools/find-people.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const getCreditBalanceName = "get_credit_balance";
|
|
2
|
+
export declare const getCreditBalanceDescription = "Get the current ColdIQ credit balance and month-to-date usage for the authenticated account. Use before bulk or fan-out operations (e.g. find_emails over many people) to project cost and avoid mid-run insufficient-credit failures. Returns { balance, usedThisMonth }.";
|
|
3
|
+
export declare const getCreditBalanceSchema: {};
|
|
4
|
+
export declare function getCreditBalanceHandler(_input: Record<string, unknown>): Promise<{
|
|
5
|
+
content: {
|
|
6
|
+
type: "text";
|
|
7
|
+
text: string;
|
|
8
|
+
}[];
|
|
9
|
+
isError: boolean;
|
|
10
|
+
} | {
|
|
11
|
+
content: {
|
|
12
|
+
type: "text";
|
|
13
|
+
text: string;
|
|
14
|
+
}[];
|
|
15
|
+
isError?: undefined;
|
|
16
|
+
}>;
|
|
17
|
+
//# sourceMappingURL=get-credit-balance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-credit-balance.d.ts","sourceRoot":"","sources":["../../src/tools/get-credit-balance.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB,uBAAuB,CAAA;AAExD,eAAO,MAAM,2BAA2B,+QACsO,CAAA;AAE9Q,eAAO,MAAM,sBAAsB,IAAK,CAAA;AAExC,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;GAc5E"}
|