@coldiq/mcp 0.3.10 → 0.3.12

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.
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,OAAO,CAAA;IACb,oFAAoF;IACpF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC,CAAA;AAMD,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAqBjE;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,KAAK,GAAG,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,OAAO,CAAC,WAAW,CAAC,CA0DtB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,OAAO,CAAA;IACb,oFAAoF;IACpF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC,CAAA;AAMD,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAqBjE;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,KAAK,GAAG,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,OAAO,CAAC,WAAW,CAAC,CA6DtB"}
package/dist/client.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { Agent, setGlobalDispatcher } from 'undici';
2
+ import { recordChargeFromHeaders } from './session-usage.js';
2
3
  let _apiUrl;
3
4
  let _apiKey;
4
5
  let _httpTimeoutMs;
@@ -54,6 +55,9 @@ export async function callApi(method, path, body, queryParams) {
54
55
  res.headers.forEach((value, key) => {
55
56
  headers[key.toLowerCase()] = value;
56
57
  });
58
+ // Tally this call's credit charge for the per-session usage report. No-op
59
+ // unless the response carries a charge header, so polls/errors are skipped.
60
+ recordChargeFromHeaders(path, headers);
57
61
  return { ok: res.ok, status: res.status, data, headers };
58
62
  }
59
63
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAA;AAUnD,IAAI,OAAe,CAAA;AACnB,IAAI,OAAe,CAAA;AACnB,IAAI,cAAsB,CAAA;AAE1B,MAAM,UAAU,UAAU,CAAC,MAAe,EAAE,MAAe;IACzD,OAAO,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,wBAAwB,CAAA;IAC1E,OAAO,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAA;IACpD,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,OAAO,EAAE,EAAE,CAAC,CAAA;IAC5E,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAA;IACvG,CAAC;IACD,uBAAuB;IACvB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAErC,mEAAmE;IACnE,uFAAuF;IACvF,qFAAqF;IACrF,mBAAmB,CACjB,IAAI,KAAK,CAAC;QACR,gBAAgB,EAAE,MAAM;QACxB,mBAAmB,EAAE,MAAM;QAC3B,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,CAAC;KACd,CAAC,CACH,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAsB,EACtB,IAAY,EACZ,IAAc,EACd,WAAoC;IAEpC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,OAAO,MAAM,IAAI,EAAE,CAAC,CAAA;IAC3C,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE;gBAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC7D,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAA2B;QACtC,aAAa,EAAE,UAAU,OAAO,EAAE;KACnC,CAAA;IAED,MAAM,IAAI,GAAgB;QACxB,MAAM;QACN,OAAO;QACP,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC;KAC5C,CAAA;IAED,IAAI,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5C,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAA;QAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAA;QAC7C,IAAI,IAAa,CAAA;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,GAAG,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAA;QAChD,CAAC;QACD,MAAM,OAAO,GAA2B,EAAE,CAAA;QAC1C,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACjC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAA;QACpC,CAAC,CAAC,CAAA;QACF,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;IAC1D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,SAAS,GACb,GAAG,YAAY,KAAK;YACpB,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC,CAAA;QAC5D,IAAI,SAAS,EAAE,CAAC;YACd,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,CAAC;gBACT,IAAI,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE;gBACpC,OAAO,EAAE,EAAE;aACZ,CAAA;QACH,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,iCAAiC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACpG,CAAC;QACD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE;YAChC,OAAO,EAAE,EAAE;SACZ,CAAA;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -20,6 +20,7 @@ import { searchSeoName, searchSeoDescription, searchSeoSchema, searchSeoHandler,
20
20
  import { findSignalsName, findSignalsDescription, findSignalsSchema, findSignalsHandler, } from './tools/find-signals.js';
21
21
  import { fetchPageContentName, fetchPageContentDescription, fetchPageContentSchema, fetchPageContentHandler, } from './tools/fetch-page-content.js';
22
22
  import { getCreditBalanceName, getCreditBalanceDescription, getCreditBalanceSchema, getCreditBalanceHandler, } from './tools/get-credit-balance.js';
23
+ import { getSessionUsageName, getSessionUsageDescription, getSessionUsageSchema, getSessionUsageHandler, } from './tools/get-session-usage.js';
23
24
  import { extractPostEngagementName, extractPostEngagementDescription, extractPostEngagementSchema, extractPostEngagementHandler, } from './tools/extract-post-engagement.js';
24
25
  import { getPlaceReviewsName, getPlaceReviewsDescription, getPlaceReviewsSchema, getPlaceReviewsHandler, } from './tools/get-place-reviews.js';
25
26
  import { listDataSourcesName, listDataSourcesDescription, listDataSourcesSchema, listDataSourcesHandler, } from './tools/list-data-sources.js';
@@ -28,6 +29,17 @@ initClient();
28
29
  const server = new McpServer({
29
30
  name: 'coldiq',
30
31
  version: '0.1.0',
32
+ }, {
33
+ // Surfaced to the model at init. Enforces batching on the multi-company
34
+ // prospecting flow — the dominant latency driver. Looping these tools
35
+ // per-item multiplies wall-clock with zero quality gain: find_people runs a
36
+ // ~90s async job per call, so N looped calls cost ~N×90s vs ~90s batched.
37
+ instructions: [
38
+ 'ColdIQ prospecting tools. Always BATCH, never loop, to keep multi-step prospecting fast:',
39
+ '1. To find people across several companies, make ONE find_people call passing every company in company_linkedin_urls (preferred) or company_domains — never one call per company. Set limit = (results wanted per company) × (number of companies).',
40
+ '2. To find emails for several people, make ONE find_emails call with all of them — never loop find_email per person. find_emails runs providers in parallel and is several times faster.',
41
+ '3. Typical flow: search_companies → find_people (one batched call) → find_emails (one batched call).',
42
+ ].join('\n'),
31
43
  });
32
44
  // Register all tools
33
45
  server.tool(searchCompaniesName, searchCompaniesDescription, searchCompaniesSchema, searchCompaniesHandler);
@@ -48,6 +60,7 @@ server.tool(searchSeoName, searchSeoDescription, searchSeoSchema, searchSeoHandl
48
60
  server.tool(findSignalsName, findSignalsDescription, findSignalsSchema, findSignalsHandler);
49
61
  server.tool(fetchPageContentName, fetchPageContentDescription, fetchPageContentSchema, fetchPageContentHandler);
50
62
  server.tool(getCreditBalanceName, getCreditBalanceDescription, getCreditBalanceSchema, getCreditBalanceHandler);
63
+ server.tool(getSessionUsageName, getSessionUsageDescription, getSessionUsageSchema, getSessionUsageHandler);
51
64
  server.tool(listDataSourcesName, listDataSourcesDescription, listDataSourcesSchema, listDataSourcesHandler);
52
65
  server.tool(extractPostEngagementName, extractPostEngagementDescription, extractPostEngagementSchema, extractPostEngagementHandler);
53
66
  server.tool(getPlaceReviewsName, getPlaceReviewsDescription, getPlaceReviewsSchema, getPlaceReviewsHandler);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * In-process ColdIQ credit accumulator for one MCP session ("campaign").
3
+ *
4
+ * The ColdIQ MCP server runs as a stdio subprocess spawned per client
5
+ * conversation, so a module-level singleton here is naturally scoped to a
6
+ * single campaign: it starts empty when the process boots and is discarded
7
+ * when the conversation's server exits. We tally the per-call charges the API
8
+ * already reports via the `X-ColdIQ-Credits-Charged` / `-Remaining` response
9
+ * headers (the same signal the executor surfaces in `_meta`), so reporting
10
+ * session spend never issues an extra billable call.
11
+ *
12
+ * Caveats this module deliberately accepts (and the tool surfaces to the user):
13
+ * - It only counts calls made during the current process lifetime; resuming or
14
+ * restarting the conversation starts a fresh tally.
15
+ * - `charged` reflects what the API billed at call time. For async jobs that is
16
+ * the submit-time reservation; later webhook settlement is not visible here.
17
+ */
18
+ export interface EndpointUsage {
19
+ /** Number of billed calls to this endpoint this session. */
20
+ calls: number;
21
+ /** Total net ColdIQ credits charged across those calls. */
22
+ credits: number;
23
+ }
24
+ export interface SessionUsageSnapshot {
25
+ /** ISO 8601 timestamp of when this MCP session (process) started. */
26
+ startedAt: string;
27
+ /** Milliseconds elapsed since the session started. */
28
+ durationMs: number;
29
+ /** Count of calls that charged credits this session. */
30
+ billedCalls: number;
31
+ /** Sum of net credits charged across all billed calls this session. */
32
+ totalCreditsCharged: number;
33
+ /** Balance the API reported after the most recent billed call, if any. */
34
+ balanceAfterLastCharge?: number;
35
+ /** Per-endpoint breakdown, highest spend first. */
36
+ byEndpoint: Array<{
37
+ endpoint: string;
38
+ calls: number;
39
+ credits: number;
40
+ }>;
41
+ }
42
+ /**
43
+ * Record a single billed call. `charged` is the net credits for this call;
44
+ * `remaining`, when present, is the authoritative balance afterwards.
45
+ * Non-finite or negative charges are ignored so a malformed header can't
46
+ * corrupt the running total.
47
+ */
48
+ export declare function recordCharge(endpoint: string, charged: number, remaining?: number): void;
49
+ /**
50
+ * Record a charge from a response's (lowercased) header map. A no-op when the
51
+ * response carries no charge header — polls, errors, and unbilled routes are
52
+ * silently skipped, so this is safe to call after every request.
53
+ */
54
+ export declare function recordChargeFromHeaders(endpoint: string, headers: Record<string, string>): void;
55
+ /** Build a snapshot of session spend so far. `now` is injectable for tests. */
56
+ export declare function getSessionUsage(now?: number): SessionUsageSnapshot;
57
+ /** Test-only: reset the accumulator to a known clean state. */
58
+ export declare function resetSessionUsage(startedAt?: number): void;
59
+ //# sourceMappingURL=session-usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-usage.d.ts","sourceRoot":"","sources":["../src/session-usage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAA;IACb,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAA;IACjB,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAA;IAClB,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAA;IACnB,uEAAuE;IACvE,mBAAmB,EAAE,MAAM,CAAA;IAC3B,0EAA0E;IAC1E,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,mDAAmD;IACnD,UAAU,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACxE;AA6BD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAcxF;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAI/F;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAmB,GAAG,oBAAoB,CAgB9E;AAED,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAAC,SAAS,GAAE,MAAmB,GAAG,IAAI,CAMtE"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * In-process ColdIQ credit accumulator for one MCP session ("campaign").
3
+ *
4
+ * The ColdIQ MCP server runs as a stdio subprocess spawned per client
5
+ * conversation, so a module-level singleton here is naturally scoped to a
6
+ * single campaign: it starts empty when the process boots and is discarded
7
+ * when the conversation's server exits. We tally the per-call charges the API
8
+ * already reports via the `X-ColdIQ-Credits-Charged` / `-Remaining` response
9
+ * headers (the same signal the executor surfaces in `_meta`), so reporting
10
+ * session spend never issues an extra billable call.
11
+ *
12
+ * Caveats this module deliberately accepts (and the tool surfaces to the user):
13
+ * - It only counts calls made during the current process lifetime; resuming or
14
+ * restarting the conversation starts a fresh tally.
15
+ * - `charged` reflects what the API billed at call time. For async jobs that is
16
+ * the submit-time reservation; later webhook settlement is not visible here.
17
+ */
18
+ const CHARGED_HEADER = 'x-coldiq-credits-charged';
19
+ const REMAINING_HEADER = 'x-coldiq-credits-remaining';
20
+ const state = {
21
+ startedAt: Date.now(),
22
+ billedCalls: 0,
23
+ totalCreditsCharged: 0,
24
+ byEndpoint: new Map(),
25
+ };
26
+ function parseHeaderNumber(raw) {
27
+ if (raw === undefined)
28
+ return undefined;
29
+ const n = Number(raw);
30
+ return Number.isFinite(n) ? n : undefined;
31
+ }
32
+ // Credits can be fractional (settlement refunds). Round to 4 dp so summed
33
+ // floating-point noise never leaks into the reported totals.
34
+ function round(n) {
35
+ return Math.round(n * 10000) / 10000;
36
+ }
37
+ /**
38
+ * Record a single billed call. `charged` is the net credits for this call;
39
+ * `remaining`, when present, is the authoritative balance afterwards.
40
+ * Non-finite or negative charges are ignored so a malformed header can't
41
+ * corrupt the running total.
42
+ */
43
+ export function recordCharge(endpoint, charged, remaining) {
44
+ if (!Number.isFinite(charged) || charged < 0)
45
+ return;
46
+ state.billedCalls += 1;
47
+ state.totalCreditsCharged += charged;
48
+ if (remaining !== undefined && Number.isFinite(remaining)) {
49
+ state.balanceAfterLastCharge = remaining;
50
+ }
51
+ const existing = state.byEndpoint.get(endpoint);
52
+ if (existing) {
53
+ existing.calls += 1;
54
+ existing.credits += charged;
55
+ }
56
+ else {
57
+ state.byEndpoint.set(endpoint, { calls: 1, credits: charged });
58
+ }
59
+ }
60
+ /**
61
+ * Record a charge from a response's (lowercased) header map. A no-op when the
62
+ * response carries no charge header — polls, errors, and unbilled routes are
63
+ * silently skipped, so this is safe to call after every request.
64
+ */
65
+ export function recordChargeFromHeaders(endpoint, headers) {
66
+ const charged = parseHeaderNumber(headers[CHARGED_HEADER]);
67
+ if (charged === undefined)
68
+ return;
69
+ recordCharge(endpoint, charged, parseHeaderNumber(headers[REMAINING_HEADER]));
70
+ }
71
+ /** Build a snapshot of session spend so far. `now` is injectable for tests. */
72
+ export function getSessionUsage(now = Date.now()) {
73
+ const byEndpoint = Array.from(state.byEndpoint.entries())
74
+ .map(([endpoint, u]) => ({ endpoint, calls: u.calls, credits: round(u.credits) }))
75
+ .sort((a, b) => b.credits - a.credits);
76
+ const snap = {
77
+ startedAt: new Date(state.startedAt).toISOString(),
78
+ durationMs: now - state.startedAt,
79
+ billedCalls: state.billedCalls,
80
+ totalCreditsCharged: round(state.totalCreditsCharged),
81
+ byEndpoint,
82
+ };
83
+ if (state.balanceAfterLastCharge !== undefined) {
84
+ snap.balanceAfterLastCharge = state.balanceAfterLastCharge;
85
+ }
86
+ return snap;
87
+ }
88
+ /** Test-only: reset the accumulator to a known clean state. */
89
+ export function resetSessionUsage(startedAt = Date.now()) {
90
+ state.startedAt = startedAt;
91
+ state.billedCalls = 0;
92
+ state.totalCreditsCharged = 0;
93
+ state.balanceAfterLastCharge = undefined;
94
+ state.byEndpoint.clear();
95
+ }
96
+ //# sourceMappingURL=session-usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-usage.js","sourceRoot":"","sources":["../src/session-usage.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"find-emails.d.ts","sourceRoot":"","sources":["../../src/tools/find-emails.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAavB,eAAO,MAAM,sBAAsB,KAAK,CAAA;AA6BxC,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAE3C,eAAO,MAAM,qBAAqB,QAWuC,CAAA;AAEzE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;CAe5B,CAAA;AAkWD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;GA6FrE"}
1
+ {"version":3,"file":"find-emails.d.ts","sourceRoot":"","sources":["../../src/tools/find-emails.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAavB,eAAO,MAAM,sBAAsB,KAAK,CAAA;AA6BxC,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAE3C,eAAO,MAAM,qBAAqB,QAWuC,CAAA;AAEzE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;CAe5B,CAAA;AAiXD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;GA6FrE"}
@@ -174,11 +174,25 @@ async function fullEnrichStep(misses, results, stats) {
174
174
  // Tightened from 90s → 45s: Step 3 runs in parallel and typically fills misses
175
175
  // faster, so FullEnrich's marginal value decays past this point.
176
176
  const deadline = Date.now() + 45_000;
177
+ // Bail out once the poll endpoint fails repeatedly (e.g. upstream 502s) instead
178
+ // of hammering it for the full 45s. A poll that keeps erroring will never return
179
+ // data, and this branch gates the chunk's critical path (Promise.allSettled in
180
+ // processChunk), so polling to the deadline added ~30s of pure latency with zero
181
+ // emails. Mirrors the executor's COLDIQ_MAX_POLL_ERRORS guard (executor.ts).
182
+ const maxPollErrors = parseInt(process.env.COLDIQ_MAX_POLL_ERRORS ?? '3', 10);
183
+ let consecutivePollErrors = 0;
177
184
  while (Date.now() < deadline) {
178
185
  await sleep(2000);
179
186
  const pollRes = await callApi('GET', `/fullenrich/contact/enrich/bulk/${enrichmentId}`);
180
- if (!pollRes.ok)
187
+ if (!pollRes.ok) {
188
+ consecutivePollErrors += 1;
189
+ if (consecutivePollErrors >= maxPollErrors) {
190
+ stats.fullenrich.failed += 1;
191
+ return;
192
+ }
181
193
  continue;
194
+ }
195
+ consecutivePollErrors = 0;
182
196
  const pd = pollRes.data;
183
197
  const status = pd.status;
184
198
  if (status !== 'DONE' && status !== 'FAILED')
@@ -1 +1 @@
1
- {"version":3,"file":"find-emails.js","sourceRoot":"","sources":["../../src/tools/find-emails.ts"],"names":[],"mappings":"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"}
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,EAAoB,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACtE,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AACrH,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAErE,sFAAsF;AACtF,qGAAqG;AACrG,MAAM,gCAAgC,GAAG,CAAC,qBAAqB,EAAE,UAAU,EAAE,8BAA8B,EAAE,WAAW,CAAU,CAAA;AAElI,6FAA6F;AAC7F,4FAA4F;AAC5F,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAA;AACxC,2FAA2F;AAC3F,uDAAuD;AACvD,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAE3B,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,2EAA2E;IAC3E,mCAAmC,sBAAsB,qEAAqE;IAC9H,uDAAuD;IACvD,0FAA0F;IAC1F,kHAAkH;IAClH,sGAAsG;IACtG,8GAA8G;IAC9G,uEAAuE,CAAA;AAEzE,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;AA6BD,SAAS,aAAa;IACpB,OAAO;QACL,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QACpC,UAAU,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QACvC,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QACtC,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QACpC,eAAe,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;KAC7C,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAgB,EAAE,IAAgB;IACpD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAyB,EAAE,CAAC;QAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAA;QAC1C,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAA;IACtC,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,CAAa;IAClC,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAyB;QAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAA;IAC5E,OAAO,CAAC,CAAA;AACV,CAAC;AAED,6FAA6F;AAC7F,6FAA6F;AAC7F,kEAAkE;AAClE,SAAS,aAAa,CAAC,GAAgB;IACrC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAA;AAC3D,CAAC;AAED,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,SAAS,UAAU,CAAI,GAAQ,EAAE,IAAY;IAC3C,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI;QAAE,OAAO,CAAC,GAAG,CAAC,CAAA;IACpC,MAAM,GAAG,GAAU,EAAE,CAAA;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI;QAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IAC3E,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,KAAU,EACV,WAAmB,EACnB,EAAwC;IAExC,MAAM,OAAO,GAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC5C,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACvD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,KAAK,IAAI,EAAE;QAC7D,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,CAAC,GAAG,MAAM,EAAE,CAAA;YAClB,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM;gBAAE,OAAM;YAC7B,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAA;QACrC,CAAC;IACH,CAAC,CAAC,CAAA;IACF,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC1B,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,KAAoB,EACpB,OAAsB,EACtB,KAAiB;IAEjB,MAAM,QAAQ,GAAG;QACf,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACpB,CAAC,CAAC,YAAY;YACZ,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE;YACpD,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;KACF,CAAA;IAED,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAA;IAC5B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,6BAA6B,EAAE,QAAQ,CAAC,CAAA;IAC9E,IAAI,aAAa,CAAC,OAAO,CAAC;QAAE,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAA;IACrD,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAM;IAEvB,MAAM,IAAI,GAAG,OAAO,CAAC,IAKpB,CAAA;IACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAA;QACvC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACrD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC,CAAA;YACzD,IAAI,GAAG,EAAE,CAAC;gBACR,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;gBACjB,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAA;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,MAAqB,EACrB,OAAsB,EACtB,KAAiB;IAEjB,KAAK,CAAC,UAAU,CAAC,SAAS,IAAI,CAAC,CAAA;IAE/B,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,EAAE,CAAC;QACpB,IAAI,aAAa,CAAC,WAAW,CAAC;YAAE,KAAK,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,CAAA;QAC5D,OAAM;IACR,CAAC;IAED,MAAM,YAAY,GAAI,WAAW,CAAC,IAAgC,CAAC,aAAmC,CAAA;IACtG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,6EAA6E;QAC7E,OAAM;IACR,CAAC;IAED,+EAA+E;IAC/E,iEAAiE;IACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAA;IACpC,gFAAgF;IAChF,iFAAiF;IACjF,+EAA+E;IAC/E,iFAAiF;IACjF,6EAA6E;IAC7E,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,GAAG,EAAE,EAAE,CAAC,CAAA;IAC7E,IAAI,qBAAqB,GAAG,CAAC,CAAA;IAC7B,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,EAAE,CAAC;YAChB,qBAAqB,IAAI,CAAC,CAAA;YAC1B,IAAI,qBAAqB,IAAI,aAAa,EAAE,CAAC;gBAC3C,KAAK,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,CAAA;gBAC5B,OAAM;YACR,CAAC;YACD,SAAQ;QACV,CAAC;QACD,qBAAqB,GAAG,CAAC,CAAA;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;IACD,kFAAkF;IAClF,0CAA0C;IAC1C,KAAK,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,CAAA;AAC9B,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,MAAqB,EACrB,OAAsB,EACtB,KAAiB,EACjB,gBAA2B;IAE3B,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,KAAK,CAAC,SAAS,CAAC,SAAS,IAAI,CAAC,CAAA;YAC9B,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,aAAa,CAAC,KAAK,CAAC;gBAAE,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAA;YACrD,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,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAA;QAC5B,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,aAAa,CAAC,MAAM,CAAC;YAAE,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAA;QACpD,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,KAAK,UAAU,kBAAkB,CAC/B,UAAyB,EACzB,OAAsB,EACtB,KAAiB,EACjB,iBAA2B;IAE3B,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAErE,MAAM,OAAO,CAAC,GAAG,CACf,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAC9B,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,IAAI,GAAG,CAAC,KAAK;YAAE,OAAM;QAC7B,MAAM,WAAW,GAA4B;YAC3C,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAA;QACD,KAAK,CAAC,eAAe,CAAC,SAAS,IAAI,CAAC,CAAA;QACpC,sEAAsE;QACtE,MAAM,IAAI,GAAG,mBAAmB,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAA;QAC7F,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;QACvF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;QACjD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,oEAAoE;YACpE,KAAK,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,CAAA;YACjC,OAAM;QACR,CAAC;QACD,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,kFAAkF;YAClF,qFAAqF;YACrF,wEAAwE;YACxE,MAAM,cAAc,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAA;YAC3F,IAAI,cAAc;gBAAE,KAAK,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,CAAA;YACrD,OAAM;QACR,CAAC;QACD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACxB,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;YACjB,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAA;QACrC,CAAC;IACH,CAAC,CAAC,CACH,CAAA;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,KAAoB,EACpB,gBAA0B,EAC1B,aAAsB;IAEtB,MAAM,OAAO,GAAkB,KAAK,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;IAC5F,MAAM,KAAK,GAAG,aAAa,EAAE,CAAA;IAE7B,4DAA4D;IAC5D,IAAI,CAAC,aAAa,IAAI,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3D,MAAM,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;IAC9C,CAAC;IAED,2CAA2C;IAC3C,wEAAwE;IACxE,qDAAqD;IACrD,6EAA6E;IAC7E,0EAA0E;IAC1E,4BAA4B;IAC5B,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACvC,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,EAAE,KAAK,CAAC,CAAC,CAAA;QACpD,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,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;QACxG,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,KAAK,EAAE,OAAO,CAAC,CAAA;IAC3C,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,MAAM,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAA;IACzE,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;AAC3B,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,KAAa,EAAE,KAAiB;IACzE,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;IACrC,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,UAAU,CAAA;IACrC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAA;IAC7C,OAAO,SAAS,CAAA;AAClB,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,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAA;IACzD,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAC9E,YAAY,CAAC,KAAK,EAAE,gBAAgB,EAAE,aAAa,CAAC,CACrD,CAAA;IAED,MAAM,OAAO,GAAkB,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IACrE,MAAM,cAAc,GAAG,aAAa,EAAE,CAAA;IACtC,KAAK,MAAM,CAAC,IAAI,YAAY;QAAE,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA;IAEjE,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,CAAA;IAC5D,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IAE5E,gGAAgG;IAChG,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,GAA4B;QACpC,SAAS,EAAE,cAAc;QACzB,YAAY,EAAE,WAAW;QACzB,UAAU,EAAE,sBAAsB;QAClC,WAAW,EAAE,MAAM,CAAC,MAAM;KAC3B,CAAA;IACD,IAAI,QAAQ,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzE,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAA;IACzC,CAAC;IAED,iFAAiF;IACjF,gFAAgF;IAChF,gFAAgF;IAChF,wCAAwC;IACxC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAA;QAC3C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ;gBAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAC5F,CAAC;QACD,+EAA+E;QAC/E,gFAAgF;QAChF,4EAA4E;QAC5E,uDAAuD;QACvD,IAAI,QAA4B,CAAA;QAChC,IAAI,IAAI,GAAG,CAAC,CAAA;QACZ,KAAK,MAAM,EAAE,IAAI,qBAAqB,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;YACpC,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC;gBAAC,IAAI,GAAG,KAAK,CAAC;gBAAC,QAAQ,GAAG,EAAE,CAAA;YAAC,CAAC;QACnD,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,qBAAqB,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE;gBACxE,uEAAuE;gBACvE,8EAA8E;gBAC9E,oEAAoE;gBACpE,WAAW,EAAE,QAAQ,KAAK,SAAS,IAAI,CAAC,aAAa;gBACrD,YAAY,EAAE,aAAa;aAC5B,CAAC,CAAA;YACF,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAA;gBACxC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;oBAAE,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAA;YAC1E,CAAC;QACH,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzC,GAAG,CAAC;QACJ,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;KACnE,CAAC,CAAC,CAAA;IAEH,yFAAyF;IACzF,sFAAsF;IACtF,MAAM,OAAO,GAAG,WAAW,KAAK,QAAQ,CAAA;IAExC,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;aACtG;SACF;QACD,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtC,CAAA;AACH,CAAC"}
@@ -6,10 +6,10 @@ import { resolvePreferredProviders, getProvidersForCapability } from '../utils/p
6
6
  import { compactPayload } from '../utils/compact-people.js';
7
7
  export const findPeopleName = 'find_people';
8
8
  export const findPeopleDescription = 'Find people at specific companies by job title. ' +
9
+ 'CRITICAL: pass ALL companies in ONE call — never loop one call per company. Each call runs a ~90s async job, so looping N companies costs ~N×90s while one batched call stays ~90s total for the same data. ' +
10
+ 'Set limit = (desired results per company) × (number of companies). ' +
9
11
  'Use this — never search_web — to find contacts, executives, or LinkedIn profiles at known companies. ' +
10
12
  'Do not fall back to search_web when results look uncertain or LinkedIn URLs seem wrong — trust what this tool returns. ' +
11
- 'ALWAYS pass all companies in a single call — never loop and call once per company. ' +
12
- 'Set limit = (desired results per company) × (number of companies). ' +
13
13
  'Prefer company_linkedin_urls when available — they make the search faster. Only pass company_domains when you have no LinkedIn URLs. ' +
14
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. ' +
15
15
  'Do NOT pass seniorities unless explicitly asked — job titles alone produce better results. ' +
@@ -1 +1 @@
1
- {"version":3,"file":"find-people.js","sourceRoot":"","sources":["../../src/tools/find-people.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"find-people.js","sourceRoot":"","sources":["../../src/tools/find-people.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare const getSessionUsageName = "get_session_usage";
2
+ export declare const getSessionUsageDescription: string;
3
+ export declare const getSessionUsageSchema: {};
4
+ export declare function getSessionUsageHandler(_input: Record<string, unknown>): Promise<{
5
+ content: {
6
+ type: "text";
7
+ text: string;
8
+ }[];
9
+ }>;
10
+ //# sourceMappingURL=get-session-usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-session-usage.d.ts","sourceRoot":"","sources":["../../src/tools/get-session-usage.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,sBAAsB,CAAA;AAEtD,eAAO,MAAM,0BAA0B,QAMuB,CAAA;AAE9D,eAAO,MAAM,qBAAqB,IAAK,CAAA;AAEvC,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;GAG3E"}
@@ -0,0 +1,14 @@
1
+ import { getSessionUsage } from '../session-usage.js';
2
+ export const getSessionUsageName = 'get_session_usage';
3
+ export const getSessionUsageDescription = 'Report the ColdIQ credits spent so far in THIS conversation (the current MCP session). ' +
4
+ 'Returns the total credits charged, the number of billed calls, a per-endpoint breakdown of where ' +
5
+ 'credits went (highest spend first), and the account balance reported after the most recent billed call. ' +
6
+ 'Use this to answer "how many credits has this chat used" or "what did I spend credits on here". ' +
7
+ 'Note: it counts only calls made during the current session and resets if the conversation restarts; ' +
8
+ 'for the authoritative live balance use get_credit_balance.';
9
+ export const getSessionUsageSchema = {};
10
+ export async function getSessionUsageHandler(_input) {
11
+ const usage = getSessionUsage();
12
+ return { content: [{ type: 'text', text: JSON.stringify({ data: usage }) }] };
13
+ }
14
+ //# sourceMappingURL=get-session-usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-session-usage.js","sourceRoot":"","sources":["../../src/tools/get-session-usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAA;AAEtD,MAAM,CAAC,MAAM,0BAA0B,GACrC,yFAAyF;IACzF,mGAAmG;IACnG,0GAA0G;IAC1G,kGAAkG;IAClG,sGAAsG;IACtG,4DAA4D,CAAA;AAE9D,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAA;AAEvC,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,MAA+B;IAC1E,MAAM,KAAK,GAAG,eAAe,EAAE,CAAA;IAC/B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;AACxF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coldiq/mcp",
3
- "version": "0.3.10",
3
+ "version": "0.3.12",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
package/src/client.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { Agent, setGlobalDispatcher } from 'undici'
2
+ import { recordChargeFromHeaders } from './session-usage.js'
2
3
 
3
4
  export type ApiResponse = {
4
5
  ok: boolean
@@ -75,6 +76,9 @@ export async function callApi(
75
76
  res.headers.forEach((value, key) => {
76
77
  headers[key.toLowerCase()] = value
77
78
  })
79
+ // Tally this call's credit charge for the per-session usage report. No-op
80
+ // unless the response carries a charge header, so polls/errors are skipped.
81
+ recordChargeFromHeaders(path, headers)
78
82
  return { ok: res.ok, status: res.status, data, headers }
79
83
  } catch (err) {
80
84
  const isTimeout =
package/src/index.ts CHANGED
@@ -130,6 +130,13 @@ import {
130
130
  getCreditBalanceHandler,
131
131
  } from './tools/get-credit-balance.js'
132
132
 
133
+ import {
134
+ getSessionUsageName,
135
+ getSessionUsageDescription,
136
+ getSessionUsageSchema,
137
+ getSessionUsageHandler,
138
+ } from './tools/get-session-usage.js'
139
+
133
140
  import {
134
141
  extractPostEngagementName,
135
142
  extractPostEngagementDescription,
@@ -154,10 +161,24 @@ import {
154
161
  // Initialize HTTP client (reads env vars)
155
162
  initClient()
156
163
 
157
- const server = new McpServer({
158
- name: 'coldiq',
159
- version: '0.1.0',
160
- })
164
+ const server = new McpServer(
165
+ {
166
+ name: 'coldiq',
167
+ version: '0.1.0',
168
+ },
169
+ {
170
+ // Surfaced to the model at init. Enforces batching on the multi-company
171
+ // prospecting flow — the dominant latency driver. Looping these tools
172
+ // per-item multiplies wall-clock with zero quality gain: find_people runs a
173
+ // ~90s async job per call, so N looped calls cost ~N×90s vs ~90s batched.
174
+ instructions: [
175
+ 'ColdIQ prospecting tools. Always BATCH, never loop, to keep multi-step prospecting fast:',
176
+ '1. To find people across several companies, make ONE find_people call passing every company in company_linkedin_urls (preferred) or company_domains — never one call per company. Set limit = (results wanted per company) × (number of companies).',
177
+ '2. To find emails for several people, make ONE find_emails call with all of them — never loop find_email per person. find_emails runs providers in parallel and is several times faster.',
178
+ '3. Typical flow: search_companies → find_people (one batched call) → find_emails (one batched call).',
179
+ ].join('\n'),
180
+ },
181
+ )
161
182
 
162
183
  // Register all tools
163
184
  server.tool(searchCompaniesName, searchCompaniesDescription, searchCompaniesSchema, searchCompaniesHandler)
@@ -178,6 +199,7 @@ server.tool(searchSeoName, searchSeoDescription, searchSeoSchema, searchSeoHandl
178
199
  server.tool(findSignalsName, findSignalsDescription, findSignalsSchema, findSignalsHandler)
179
200
  server.tool(fetchPageContentName, fetchPageContentDescription, fetchPageContentSchema, fetchPageContentHandler)
180
201
  server.tool(getCreditBalanceName, getCreditBalanceDescription, getCreditBalanceSchema, getCreditBalanceHandler)
202
+ server.tool(getSessionUsageName, getSessionUsageDescription, getSessionUsageSchema, getSessionUsageHandler)
181
203
  server.tool(listDataSourcesName, listDataSourcesDescription, listDataSourcesSchema, listDataSourcesHandler)
182
204
  server.tool(extractPostEngagementName, extractPostEngagementDescription, extractPostEngagementSchema, extractPostEngagementHandler)
183
205
  server.tool(getPlaceReviewsName, getPlaceReviewsDescription, getPlaceReviewsSchema, getPlaceReviewsHandler)
@@ -0,0 +1,130 @@
1
+ /**
2
+ * In-process ColdIQ credit accumulator for one MCP session ("campaign").
3
+ *
4
+ * The ColdIQ MCP server runs as a stdio subprocess spawned per client
5
+ * conversation, so a module-level singleton here is naturally scoped to a
6
+ * single campaign: it starts empty when the process boots and is discarded
7
+ * when the conversation's server exits. We tally the per-call charges the API
8
+ * already reports via the `X-ColdIQ-Credits-Charged` / `-Remaining` response
9
+ * headers (the same signal the executor surfaces in `_meta`), so reporting
10
+ * session spend never issues an extra billable call.
11
+ *
12
+ * Caveats this module deliberately accepts (and the tool surfaces to the user):
13
+ * - It only counts calls made during the current process lifetime; resuming or
14
+ * restarting the conversation starts a fresh tally.
15
+ * - `charged` reflects what the API billed at call time. For async jobs that is
16
+ * the submit-time reservation; later webhook settlement is not visible here.
17
+ */
18
+
19
+ const CHARGED_HEADER = 'x-coldiq-credits-charged'
20
+ const REMAINING_HEADER = 'x-coldiq-credits-remaining'
21
+
22
+ export interface EndpointUsage {
23
+ /** Number of billed calls to this endpoint this session. */
24
+ calls: number
25
+ /** Total net ColdIQ credits charged across those calls. */
26
+ credits: number
27
+ }
28
+
29
+ export interface SessionUsageSnapshot {
30
+ /** ISO 8601 timestamp of when this MCP session (process) started. */
31
+ startedAt: string
32
+ /** Milliseconds elapsed since the session started. */
33
+ durationMs: number
34
+ /** Count of calls that charged credits this session. */
35
+ billedCalls: number
36
+ /** Sum of net credits charged across all billed calls this session. */
37
+ totalCreditsCharged: number
38
+ /** Balance the API reported after the most recent billed call, if any. */
39
+ balanceAfterLastCharge?: number
40
+ /** Per-endpoint breakdown, highest spend first. */
41
+ byEndpoint: Array<{ endpoint: string; calls: number; credits: number }>
42
+ }
43
+
44
+ interface MutableState {
45
+ startedAt: number
46
+ billedCalls: number
47
+ totalCreditsCharged: number
48
+ balanceAfterLastCharge?: number
49
+ byEndpoint: Map<string, EndpointUsage>
50
+ }
51
+
52
+ const state: MutableState = {
53
+ startedAt: Date.now(),
54
+ billedCalls: 0,
55
+ totalCreditsCharged: 0,
56
+ byEndpoint: new Map(),
57
+ }
58
+
59
+ function parseHeaderNumber(raw: string | undefined): number | undefined {
60
+ if (raw === undefined) return undefined
61
+ const n = Number(raw)
62
+ return Number.isFinite(n) ? n : undefined
63
+ }
64
+
65
+ // Credits can be fractional (settlement refunds). Round to 4 dp so summed
66
+ // floating-point noise never leaks into the reported totals.
67
+ function round(n: number): number {
68
+ return Math.round(n * 10000) / 10000
69
+ }
70
+
71
+ /**
72
+ * Record a single billed call. `charged` is the net credits for this call;
73
+ * `remaining`, when present, is the authoritative balance afterwards.
74
+ * Non-finite or negative charges are ignored so a malformed header can't
75
+ * corrupt the running total.
76
+ */
77
+ export function recordCharge(endpoint: string, charged: number, remaining?: number): void {
78
+ if (!Number.isFinite(charged) || charged < 0) return
79
+ state.billedCalls += 1
80
+ state.totalCreditsCharged += charged
81
+ if (remaining !== undefined && Number.isFinite(remaining)) {
82
+ state.balanceAfterLastCharge = remaining
83
+ }
84
+ const existing = state.byEndpoint.get(endpoint)
85
+ if (existing) {
86
+ existing.calls += 1
87
+ existing.credits += charged
88
+ } else {
89
+ state.byEndpoint.set(endpoint, { calls: 1, credits: charged })
90
+ }
91
+ }
92
+
93
+ /**
94
+ * Record a charge from a response's (lowercased) header map. A no-op when the
95
+ * response carries no charge header — polls, errors, and unbilled routes are
96
+ * silently skipped, so this is safe to call after every request.
97
+ */
98
+ export function recordChargeFromHeaders(endpoint: string, headers: Record<string, string>): void {
99
+ const charged = parseHeaderNumber(headers[CHARGED_HEADER])
100
+ if (charged === undefined) return
101
+ recordCharge(endpoint, charged, parseHeaderNumber(headers[REMAINING_HEADER]))
102
+ }
103
+
104
+ /** Build a snapshot of session spend so far. `now` is injectable for tests. */
105
+ export function getSessionUsage(now: number = Date.now()): SessionUsageSnapshot {
106
+ const byEndpoint = Array.from(state.byEndpoint.entries())
107
+ .map(([endpoint, u]) => ({ endpoint, calls: u.calls, credits: round(u.credits) }))
108
+ .sort((a, b) => b.credits - a.credits)
109
+
110
+ const snap: SessionUsageSnapshot = {
111
+ startedAt: new Date(state.startedAt).toISOString(),
112
+ durationMs: now - state.startedAt,
113
+ billedCalls: state.billedCalls,
114
+ totalCreditsCharged: round(state.totalCreditsCharged),
115
+ byEndpoint,
116
+ }
117
+ if (state.balanceAfterLastCharge !== undefined) {
118
+ snap.balanceAfterLastCharge = state.balanceAfterLastCharge
119
+ }
120
+ return snap
121
+ }
122
+
123
+ /** Test-only: reset the accumulator to a known clean state. */
124
+ export function resetSessionUsage(startedAt: number = Date.now()): void {
125
+ state.startedAt = startedAt
126
+ state.billedCalls = 0
127
+ state.totalCreditsCharged = 0
128
+ state.balanceAfterLastCharge = undefined
129
+ state.byEndpoint.clear()
130
+ }
@@ -233,10 +233,25 @@ async function fullEnrichStep(
233
233
  // Tightened from 90s → 45s: Step 3 runs in parallel and typically fills misses
234
234
  // faster, so FullEnrich's marginal value decays past this point.
235
235
  const deadline = Date.now() + 45_000
236
+ // Bail out once the poll endpoint fails repeatedly (e.g. upstream 502s) instead
237
+ // of hammering it for the full 45s. A poll that keeps erroring will never return
238
+ // data, and this branch gates the chunk's critical path (Promise.allSettled in
239
+ // processChunk), so polling to the deadline added ~30s of pure latency with zero
240
+ // emails. Mirrors the executor's COLDIQ_MAX_POLL_ERRORS guard (executor.ts).
241
+ const maxPollErrors = parseInt(process.env.COLDIQ_MAX_POLL_ERRORS ?? '3', 10)
242
+ let consecutivePollErrors = 0
236
243
  while (Date.now() < deadline) {
237
244
  await sleep(2000)
238
245
  const pollRes = await callApi('GET', `/fullenrich/contact/enrich/bulk/${enrichmentId}`)
239
- if (!pollRes.ok) continue
246
+ if (!pollRes.ok) {
247
+ consecutivePollErrors += 1
248
+ if (consecutivePollErrors >= maxPollErrors) {
249
+ stats.fullenrich.failed += 1
250
+ return
251
+ }
252
+ continue
253
+ }
254
+ consecutivePollErrors = 0
240
255
 
241
256
  const pd = pollRes.data as Record<string, unknown>
242
257
  const status = pd.status as string | undefined
@@ -9,10 +9,10 @@ export const findPeopleName = 'find_people'
9
9
 
10
10
  export const findPeopleDescription =
11
11
  'Find people at specific companies by job title. ' +
12
+ 'CRITICAL: pass ALL companies in ONE call — never loop one call per company. Each call runs a ~90s async job, so looping N companies costs ~N×90s while one batched call stays ~90s total for the same data. ' +
13
+ 'Set limit = (desired results per company) × (number of companies). ' +
12
14
  'Use this — never search_web — to find contacts, executives, or LinkedIn profiles at known companies. ' +
13
15
  'Do not fall back to search_web when results look uncertain or LinkedIn URLs seem wrong — trust what this tool returns. ' +
14
- 'ALWAYS pass all companies in a single call — never loop and call once per company. ' +
15
- 'Set limit = (desired results per company) × (number of companies). ' +
16
16
  'Prefer company_linkedin_urls when available — they make the search faster. Only pass company_domains when you have no LinkedIn URLs. ' +
17
17
  '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. ' +
18
18
  'Do NOT pass seniorities unless explicitly asked — job titles alone produce better results. ' +
@@ -0,0 +1,18 @@
1
+ import { getSessionUsage } from '../session-usage.js'
2
+
3
+ export const getSessionUsageName = 'get_session_usage'
4
+
5
+ export const getSessionUsageDescription =
6
+ 'Report the ColdIQ credits spent so far in THIS conversation (the current MCP session). ' +
7
+ 'Returns the total credits charged, the number of billed calls, a per-endpoint breakdown of where ' +
8
+ 'credits went (highest spend first), and the account balance reported after the most recent billed call. ' +
9
+ 'Use this to answer "how many credits has this chat used" or "what did I spend credits on here". ' +
10
+ 'Note: it counts only calls made during the current session and resets if the conversation restarts; ' +
11
+ 'for the authoritative live balance use get_credit_balance.'
12
+
13
+ export const getSessionUsageSchema = {}
14
+
15
+ export async function getSessionUsageHandler(_input: Record<string, unknown>) {
16
+ const usage = getSessionUsage()
17
+ return { content: [{ type: 'text' as const, text: JSON.stringify({ data: usage }) }] }
18
+ }
@@ -1,6 +1,7 @@
1
1
  import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'
2
2
  import { initClient } from '../src/client.js'
3
3
  import { executeWithFallback } from '../src/executor.js'
4
+ import { getSessionUsage, resetSessionUsage } from '../src/session-usage.js'
4
5
  import * as registry from '../src/registry.js'
5
6
  import type { ProviderEntry } from '../src/registry.js'
6
7
 
@@ -225,6 +226,74 @@ describe('executor exception safety', () => {
225
226
  })
226
227
  })
227
228
 
229
+ // ---------------------------------------------------------------------------
230
+ // Session-usage integration — the async create/poll path must record a charge
231
+ // exactly once. Locks in the "no double count" guarantee against future
232
+ // refactors of executeAsync's header merging.
233
+ // ---------------------------------------------------------------------------
234
+
235
+ describe('executor records session credit usage exactly once on the async path', () => {
236
+ const originalFetch = globalThis.fetch
237
+
238
+ beforeEach(() => {
239
+ initClient('http://test-api.local', 'test-key-123')
240
+ resetSessionUsage(0)
241
+ })
242
+
243
+ afterEach(() => {
244
+ globalThis.fetch = originalFetch
245
+ vi.restoreAllMocks()
246
+ })
247
+
248
+ it('charge header on the create response is counted once; polls add nothing', async () => {
249
+ stubProviders([
250
+ makeProvider({
251
+ id: 'async-charged',
252
+ endpoint: '/async-charged',
253
+ hasResult: (data) => (data as Record<string, unknown>).done === true,
254
+ async: {
255
+ extractId: () => 'job-1',
256
+ pollEndpoint: (id) => `/poll/${id}`,
257
+ pollIntervalMs: 5,
258
+ timeoutMs: 500,
259
+ // Complete only once the poll body says so, forcing ≥1 poll round.
260
+ isComplete: (data) => (data as Record<string, unknown>).done === true,
261
+ },
262
+ }),
263
+ ])
264
+
265
+ let pollCount = 0
266
+ globalThis.fetch = vi.fn(async (url: string | URL | Request) => {
267
+ const u = url.toString()
268
+ if (u.includes('/poll/')) {
269
+ pollCount++
270
+ // First poll still processing (no charge header), second completes.
271
+ const body = pollCount >= 2 ? { done: true } : { status: 'processing' }
272
+ return new Response(JSON.stringify(body), { status: 200 })
273
+ }
274
+ // Create response — carries the billing headers, like the real API.
275
+ return new Response(JSON.stringify({ job_id: 'job-1' }), {
276
+ status: 200,
277
+ headers: {
278
+ 'X-ColdIQ-Credits-Charged': '5',
279
+ 'X-ColdIQ-Credits-Remaining': '120',
280
+ },
281
+ })
282
+ }) as typeof fetch
283
+
284
+ const result = await executeWithFallback('find_people', { domain: 'coldiq.com' })
285
+
286
+ expect('data' in result).toBe(true)
287
+ expect(pollCount).toBeGreaterThanOrEqual(2)
288
+
289
+ const usage = getSessionUsage()
290
+ expect(usage.billedCalls).toBe(1)
291
+ expect(usage.totalCreditsCharged).toBe(5)
292
+ expect(usage.balanceAfterLastCharge).toBe(120)
293
+ expect(usage.byEndpoint).toEqual([{ endpoint: '/async-charged', calls: 1, credits: 5 }])
294
+ })
295
+ })
296
+
228
297
  // ---------------------------------------------------------------------------
229
298
  // postFilter integration (existing tests)
230
299
  // ---------------------------------------------------------------------------
@@ -0,0 +1,130 @@
1
+ import { describe, it, expect, beforeEach, vi, afterEach } from 'vitest'
2
+ import {
3
+ recordCharge,
4
+ recordChargeFromHeaders,
5
+ getSessionUsage,
6
+ resetSessionUsage,
7
+ } from '../src/session-usage.js'
8
+ import { initClient, callApi } from '../src/client.js'
9
+
10
+ describe('session-usage accumulator', () => {
11
+ beforeEach(() => {
12
+ resetSessionUsage(1_000)
13
+ })
14
+
15
+ it('starts empty', () => {
16
+ const usage = getSessionUsage(1_000)
17
+ expect(usage.billedCalls).toBe(0)
18
+ expect(usage.totalCreditsCharged).toBe(0)
19
+ expect(usage.byEndpoint).toEqual([])
20
+ expect(usage.balanceAfterLastCharge).toBeUndefined()
21
+ expect(usage.startedAt).toBe(new Date(1_000).toISOString())
22
+ })
23
+
24
+ it('accumulates charges and tracks the last reported balance', () => {
25
+ recordCharge('/prospeo/find-email', 1, 99)
26
+ recordCharge('/prospeo/find-email', 1, 98)
27
+ recordCharge('/companyenrich/companies/search', 3, 95)
28
+
29
+ const usage = getSessionUsage(2_000)
30
+ expect(usage.billedCalls).toBe(3)
31
+ expect(usage.totalCreditsCharged).toBe(5)
32
+ expect(usage.balanceAfterLastCharge).toBe(95)
33
+ expect(usage.durationMs).toBe(1_000)
34
+ })
35
+
36
+ it('breaks down per endpoint sorted by credits descending', () => {
37
+ recordCharge('/cheap', 1)
38
+ recordCharge('/expensive', 10)
39
+ recordCharge('/cheap', 1)
40
+
41
+ const { byEndpoint } = getSessionUsage()
42
+ expect(byEndpoint).toEqual([
43
+ { endpoint: '/expensive', calls: 1, credits: 10 },
44
+ { endpoint: '/cheap', calls: 2, credits: 2 },
45
+ ])
46
+ })
47
+
48
+ it('rounds fractional credit sums to avoid float noise', () => {
49
+ recordCharge('/x', 0.1)
50
+ recordCharge('/x', 0.2)
51
+ expect(getSessionUsage().totalCreditsCharged).toBe(0.3)
52
+ })
53
+
54
+ it('ignores malformed and negative charges', () => {
55
+ recordCharge('/x', Number.NaN)
56
+ recordCharge('/x', -5)
57
+ recordCharge('/x', Infinity)
58
+ const usage = getSessionUsage()
59
+ expect(usage.billedCalls).toBe(0)
60
+ expect(usage.totalCreditsCharged).toBe(0)
61
+ })
62
+
63
+ describe('recordChargeFromHeaders', () => {
64
+ it('records when the charge header is present', () => {
65
+ recordChargeFromHeaders('/find-email', {
66
+ 'x-coldiq-credits-charged': '2',
67
+ 'x-coldiq-credits-remaining': '198',
68
+ })
69
+ const usage = getSessionUsage()
70
+ expect(usage.billedCalls).toBe(1)
71
+ expect(usage.totalCreditsCharged).toBe(2)
72
+ expect(usage.balanceAfterLastCharge).toBe(198)
73
+ })
74
+
75
+ it('is a no-op when no charge header is present (e.g. a poll response)', () => {
76
+ recordChargeFromHeaders('/poll', { 'content-type': 'application/json' })
77
+ expect(getSessionUsage().billedCalls).toBe(0)
78
+ })
79
+
80
+ it('records the charge even when the remaining header is absent', () => {
81
+ recordChargeFromHeaders('/x', { 'x-coldiq-credits-charged': '4' })
82
+ const usage = getSessionUsage()
83
+ expect(usage.totalCreditsCharged).toBe(4)
84
+ expect(usage.balanceAfterLastCharge).toBeUndefined()
85
+ })
86
+ })
87
+ })
88
+
89
+ describe('callApi records credit charges into session usage', () => {
90
+ const originalFetch = globalThis.fetch
91
+
92
+ beforeEach(() => {
93
+ initClient('http://test-api.local', 'test-key')
94
+ resetSessionUsage(0)
95
+ })
96
+
97
+ afterEach(() => {
98
+ globalThis.fetch = originalFetch
99
+ })
100
+
101
+ it('tallies a charge surfaced in response headers', async () => {
102
+ globalThis.fetch = vi.fn(async () =>
103
+ new Response(JSON.stringify({ email: 'michel@coldiq.com' }), {
104
+ status: 200,
105
+ headers: {
106
+ 'X-ColdIQ-Credits-Charged': '1',
107
+ 'X-ColdIQ-Credits-Remaining': '249',
108
+ },
109
+ }),
110
+ ) as typeof fetch
111
+
112
+ await callApi('POST', '/prospeo/find-email', { domain: 'coldiq.com' })
113
+
114
+ const usage = getSessionUsage()
115
+ expect(usage.billedCalls).toBe(1)
116
+ expect(usage.totalCreditsCharged).toBe(1)
117
+ expect(usage.balanceAfterLastCharge).toBe(249)
118
+ expect(usage.byEndpoint).toEqual([{ endpoint: '/prospeo/find-email', calls: 1, credits: 1 }])
119
+ })
120
+
121
+ it('does not tally calls that return no charge header', async () => {
122
+ globalThis.fetch = vi.fn(async () =>
123
+ new Response(JSON.stringify({ status: 'processing' }), { status: 200 }),
124
+ ) as typeof fetch
125
+
126
+ await callApi('GET', '/jobs/abc123')
127
+
128
+ expect(getSessionUsage().billedCalls).toBe(0)
129
+ })
130
+ })
@@ -522,6 +522,48 @@ describe('find_emails handler — resilience', () => {
522
522
  expect(parsed.data.results[0]).toMatchObject({ id: 'p1', email: 'alice@example.com', provider: 'findymail' })
523
523
  })
524
524
 
525
+ it('FullEnrich poll bails after 3 consecutive errors instead of polling to the 45s deadline', async () => {
526
+ // Regression: a 502-ing FullEnrich poll used to `continue` every 2s for the full
527
+ // 45s deadline (~22 polls) — pure latency on the chunk's critical path with zero
528
+ // emails. It must now stop after COLDIQ_MAX_POLL_ERRORS (default 3) consecutive errors.
529
+ vi.useFakeTimers()
530
+
531
+ let fePollCount = 0
532
+ globalThis.fetch = vi.fn(async (url: string | URL | Request) => {
533
+ const u = url.toString()
534
+ if (u.includes('/prospeo/bulk-enrich-person')) {
535
+ return new Response(
536
+ JSON.stringify({ error: false, results: [{ identifier: 'p1', error: true, person: null }], total_cost: 0 }),
537
+ { status: 200 },
538
+ )
539
+ }
540
+ // FullEnrich poll (has the id segment) — always 502.
541
+ if (u.includes('/fullenrich/contact/enrich/bulk/abc-fe-err')) {
542
+ fePollCount++
543
+ return new Response(JSON.stringify({ error: 'bad gateway' }), { status: 502 })
544
+ }
545
+ // FullEnrich create.
546
+ if (u.includes('/fullenrich/contact/enrich/bulk')) {
547
+ return new Response(JSON.stringify({ enrichment_id: 'abc-fe-err' }), { status: 200 })
548
+ }
549
+ // FindyMail / IcyPeas / single-fallback all miss cleanly (no email, no failure).
550
+ return new Response(JSON.stringify({ email: null }), { status: 200 })
551
+ }) as typeof fetch
552
+
553
+ const handlerPromise = findEmailsHandler({
554
+ people: [{ id: 'p1', first_name: 'Alice', last_name: 'Smith', domain: 'example.com' }],
555
+ })
556
+
557
+ await vi.runAllTimersAsync()
558
+ const result = await handlerPromise
559
+ vi.useRealTimers()
560
+
561
+ // Bailed at the 3-error cap, not the ~22 polls that 45000/2000 would have produced.
562
+ expect(fePollCount).toBe(3)
563
+ const parsed = JSON.parse(result.content[0].text)
564
+ expect(parsed._meta.providers.fullenrich).toEqual({ attempted: 1, failed: 1 })
565
+ })
566
+
525
567
  it('falls back to single find_email waterfall when bulk providers all miss (covers limadata/blitzapi/linkupapi gap)', async () => {
526
568
  // Bulk path: Prospeo + FullEnrich + Findymail + Icypeas all miss.
527
569
  // Single-only providers (limadata-work-email, blitzapi, limadata-work-email-linkedin, linkupapi)
@@ -0,0 +1,44 @@
1
+ import { describe, it, expect, beforeEach } from 'vitest'
2
+ import {
3
+ getSessionUsageHandler,
4
+ getSessionUsageName,
5
+ getSessionUsageSchema,
6
+ } from '../../src/tools/get-session-usage.js'
7
+ import { recordCharge, resetSessionUsage } from '../../src/session-usage.js'
8
+
9
+ describe('get_session_usage handler', () => {
10
+ beforeEach(() => {
11
+ resetSessionUsage()
12
+ })
13
+
14
+ it('is registered as a zero-arg tool', () => {
15
+ expect(getSessionUsageName).toBe('get_session_usage')
16
+ expect(getSessionUsageSchema).toEqual({})
17
+ })
18
+
19
+ it('returns an empty snapshot before any billed call', async () => {
20
+ const result = await getSessionUsageHandler({})
21
+ expect(result.isError).toBeFalsy()
22
+ const parsed = JSON.parse(result.content[0].text)
23
+ expect(parsed.data.billedCalls).toBe(0)
24
+ expect(parsed.data.totalCreditsCharged).toBe(0)
25
+ expect(parsed.data.byEndpoint).toEqual([])
26
+ })
27
+
28
+ it('reflects recorded charges with a per-endpoint breakdown', async () => {
29
+ recordCharge('/prospeo/find-email', 1, 99)
30
+ recordCharge('/companyenrich/companies/search', 3, 96)
31
+
32
+ const result = await getSessionUsageHandler({})
33
+ const parsed = JSON.parse(result.content[0].text)
34
+
35
+ expect(parsed.data.billedCalls).toBe(2)
36
+ expect(parsed.data.totalCreditsCharged).toBe(4)
37
+ expect(parsed.data.balanceAfterLastCharge).toBe(96)
38
+ expect(parsed.data.byEndpoint[0]).toEqual({
39
+ endpoint: '/companyenrich/companies/search',
40
+ calls: 1,
41
+ credits: 3,
42
+ })
43
+ })
44
+ })