@signaliz/sdk 1.0.52 → 1.0.54
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/README.md +30 -6
- package/dist/{chunk-IFHOCPIP.mjs → chunk-W4JH6JJA.mjs} +160 -64
- package/dist/index.d.mts +83 -21
- package/dist/index.d.ts +83 -21
- package/dist/index.js +160 -64
- package/dist/index.mjs +1 -1
- package/dist/mcp-config.js +160 -64
- package/dist/mcp-config.mjs +1 -1
- package/package.json +4 -3
package/dist/mcp-config.js
CHANGED
|
@@ -70,7 +70,11 @@ function publicRetryDetails(body) {
|
|
|
70
70
|
const details = {
|
|
71
71
|
...body?.retry_eligible !== void 0 ? { retry_eligible: body.retry_eligible } : {},
|
|
72
72
|
...body?.retry_after !== void 0 ? { retry_after: body.retry_after } : {},
|
|
73
|
-
...body?.retry_after_seconds !== void 0 ? { retry_after_seconds: body.retry_after_seconds } : {}
|
|
73
|
+
...body?.retry_after_seconds !== void 0 ? { retry_after_seconds: body.retry_after_seconds } : {},
|
|
74
|
+
...body?.run_id !== void 0 ? { run_id: body.run_id } : {},
|
|
75
|
+
...body?.signal_run_id !== void 0 ? { signal_run_id: body.signal_run_id } : {},
|
|
76
|
+
...body?.company_signal_run_id !== void 0 ? { company_signal_run_id: body.company_signal_run_id } : {},
|
|
77
|
+
...body?.resume_context_persisted !== void 0 ? { resume_context_persisted: body.resume_context_persisted } : {}
|
|
74
78
|
};
|
|
75
79
|
return Object.keys(details).length > 0 ? details : void 0;
|
|
76
80
|
}
|
|
@@ -495,6 +499,14 @@ var Signaliz = class {
|
|
|
495
499
|
assertTerminalSignalResponse(data, "Company Signals");
|
|
496
500
|
return normalizeCompanySignalResult(params, data);
|
|
497
501
|
}
|
|
502
|
+
async discoverSignals(params) {
|
|
503
|
+
validateSignalDiscoveryParams(params);
|
|
504
|
+
const data = await this.client.post(
|
|
505
|
+
"api/v1/signals",
|
|
506
|
+
signalDiscoveryRequestBody(params)
|
|
507
|
+
);
|
|
508
|
+
return normalizeSignalDiscoveryResult(params, data);
|
|
509
|
+
}
|
|
498
510
|
async enrichCompanies(companies, options) {
|
|
499
511
|
validateBatchSize(companies);
|
|
500
512
|
companies.forEach((params) => validateCoreProductMaxWaitMs(params.maxWaitMs));
|
|
@@ -555,10 +567,7 @@ var Signaliz = class {
|
|
|
555
567
|
request: signalToCopyRequestBody(params)
|
|
556
568
|
}));
|
|
557
569
|
const uniqueRequests = deduplicated.uniqueItems;
|
|
558
|
-
const
|
|
559
|
-
(request) => request.skipCache === true || request.enableDeepSearch === true
|
|
560
|
-
);
|
|
561
|
-
const uniqueResults = uniqueRequests.length > 25 && !requiresFreshResearch ? await this.runRecoverableSignalCopyBatch(uniqueRequests, options) : await this.runSignalCopyBatchChunks(uniqueRequests, options);
|
|
570
|
+
const uniqueResults = await this.runSignalCopyBatchChunks(uniqueRequests, options);
|
|
562
571
|
const results = requests.map((_, index) => ({
|
|
563
572
|
...uniqueResults[deduplicated.sourceIndexByInput[index]],
|
|
564
573
|
index
|
|
@@ -589,7 +598,7 @@ var Signaliz = class {
|
|
|
589
598
|
for (let offset = 0; offset < uniqueRequests.length; offset += 25) {
|
|
590
599
|
chunks.push({ offset, requests: uniqueRequests.slice(offset, offset + 25) });
|
|
591
600
|
}
|
|
592
|
-
const { serverConcurrency, chunkConcurrency } = batchConcurrencyPlan(options);
|
|
601
|
+
const { serverConcurrency, chunkConcurrency } = batchConcurrencyPlan(options, 25, 25);
|
|
593
602
|
const chunkBatch = await runBatch(
|
|
594
603
|
chunks,
|
|
595
604
|
(chunk) => this.runSignalCopyBatchChunk(chunk.requests, serverConcurrency),
|
|
@@ -684,35 +693,6 @@ var Signaliz = class {
|
|
|
684
693
|
if (seen.size !== requests.length) throw new Error(`${label} batch returned incomplete indexed results`);
|
|
685
694
|
return rows;
|
|
686
695
|
}
|
|
687
|
-
async runRecoverableSignalCopyBatch(requests, options) {
|
|
688
|
-
const rows = await this.runRecoverableCoreBatchJob(
|
|
689
|
-
"api/v1/signal-to-copy",
|
|
690
|
-
requests.map(signalToCopyRequestBody),
|
|
691
|
-
"Signal to Copy",
|
|
692
|
-
100,
|
|
693
|
-
20 * 6e4,
|
|
694
|
-
options?.idempotencyKey
|
|
695
|
-
);
|
|
696
|
-
const results = new Array(requests.length);
|
|
697
|
-
for (const row of rows) {
|
|
698
|
-
const index = Number(row.index);
|
|
699
|
-
if (recoverableJobRowFailed(row)) {
|
|
700
|
-
results[index] = batchItemFailure(
|
|
701
|
-
index,
|
|
702
|
-
row.error || row._error || row.message || row.failure_reason || "Signal to Copy item failed",
|
|
703
|
-
row
|
|
704
|
-
);
|
|
705
|
-
continue;
|
|
706
|
-
}
|
|
707
|
-
try {
|
|
708
|
-
assertTerminalSignalResponse(row, "Signal to Copy");
|
|
709
|
-
results[index] = { index, success: true, data: normalizeSignalToCopyResult(row) };
|
|
710
|
-
} catch (error) {
|
|
711
|
-
results[index] = batchItemFailure(index, error instanceof Error ? error.message : String(error), row);
|
|
712
|
-
}
|
|
713
|
-
}
|
|
714
|
-
return results;
|
|
715
|
-
}
|
|
716
696
|
async runSignalCopyBatchChunk(requests, concurrency, rowRateLimitAttempt = 0) {
|
|
717
697
|
const results = new Array(requests.length);
|
|
718
698
|
const rateLimited = [];
|
|
@@ -762,12 +742,11 @@ var Signaliz = class {
|
|
|
762
742
|
return results;
|
|
763
743
|
}
|
|
764
744
|
async runCoreBatchRound(path2, tasks, options, rowRateLimitAttempt = 0) {
|
|
765
|
-
const { serverConcurrency, chunkConcurrency } = batchConcurrencyPlan(options);
|
|
745
|
+
const { serverConcurrency, chunkConcurrency } = path2 === "api/v1/company-signals" ? batchConcurrencyPlan(options, 25, 25) : batchConcurrencyPlan(options);
|
|
766
746
|
const deduplicated = dedupeExactBatchItems(tasks, (task) => JSON.stringify(task.request));
|
|
767
747
|
const uniqueTasks = deduplicated.uniqueItems;
|
|
768
|
-
const recoverableBatch = path2 === "api/v1/find-email" ? { label: "Find Email", pageSize: 500, maxWaitMs: 20 * 6e4 } : path2 === "api/v1/verify-email" ? { label: "Verify Email", pageSize: 500, maxWaitMs: 20 * 6e4 } :
|
|
769
|
-
|
|
770
|
-
if (recoverableBatch && uniqueTasks.length > 25 && !containsSignalRunRecovery) {
|
|
748
|
+
const recoverableBatch = path2 === "api/v1/find-email" ? { label: "Find Email", pageSize: 500, maxWaitMs: 20 * 6e4 } : path2 === "api/v1/verify-email" ? { label: "Verify Email", pageSize: 500, maxWaitMs: 20 * 6e4 } : void 0;
|
|
749
|
+
if (path2 !== "api/v1/company-signals" && recoverableBatch && uniqueTasks.length > 25) {
|
|
771
750
|
const rows = await this.runRecoverableCoreBatchJob(
|
|
772
751
|
path2,
|
|
773
752
|
uniqueTasks.map((task) => task.request),
|
|
@@ -1032,6 +1011,7 @@ function companySignalRequestBody(params) {
|
|
|
1032
1011
|
enable_outreach_intelligence: params.enableOutreachIntelligence,
|
|
1033
1012
|
enable_predictive_intelligence: params.enablePredictiveIntelligence,
|
|
1034
1013
|
skip_cache: params.skipCache,
|
|
1014
|
+
include_candidate_evidence: params.includeCandidateEvidence,
|
|
1035
1015
|
wait_for_result: true,
|
|
1036
1016
|
max_wait_ms: params.maxWaitMs,
|
|
1037
1017
|
dry_run: params.dryRun,
|
|
@@ -1049,7 +1029,6 @@ function normalizeCompanySignalResult(params, data) {
|
|
|
1049
1029
|
domain: data.company?.domain ?? params.companyDomain ?? null
|
|
1050
1030
|
},
|
|
1051
1031
|
signals: rawSignals.map((signal) => {
|
|
1052
|
-
const metadata = signal.metadata && typeof signal.metadata === "object" && !Array.isArray(signal.metadata) ? signal.metadata : void 0;
|
|
1053
1032
|
return {
|
|
1054
1033
|
id: signal.id,
|
|
1055
1034
|
title: signal.title ?? "",
|
|
@@ -1058,43 +1037,160 @@ function normalizeCompanySignalResult(params, data) {
|
|
|
1058
1037
|
date: signal.date ?? null,
|
|
1059
1038
|
detectedAt: signal.detected_at ?? null,
|
|
1060
1039
|
datePrecision: signal.date_precision,
|
|
1061
|
-
hasSpecificDate: signal.has_specific_date ?? metadata?.has_specific_date,
|
|
1062
1040
|
sourceUrl: signal.source_url ?? signal.url ?? null,
|
|
1063
1041
|
sourceType: signal.source_type,
|
|
1064
|
-
sourceProvenance: signal.source_provenance,
|
|
1065
1042
|
confidence: signal.confidence ?? signal.confidence_score ?? null,
|
|
1066
|
-
entityConfidence: signal.entity_confidence ?? metadata?.entity_confidence ?? null,
|
|
1067
1043
|
signalFamily: signal.signal_family,
|
|
1068
1044
|
eventType: signal.signal_event_type,
|
|
1069
1045
|
eventLabel: signal.signal_event_label,
|
|
1070
|
-
classification: signal.signal_classification ?? null
|
|
1071
|
-
derived: signal.derived === true,
|
|
1072
|
-
evidencePublishedDate: signal.evidence_published_date ?? metadata?.evidence_published_date ?? null,
|
|
1073
|
-
signalFeedSource: signal.signal_feed_source ?? metadata?.signal_feed_source,
|
|
1074
|
-
metadata
|
|
1046
|
+
classification: signal.signal_classification ?? null
|
|
1075
1047
|
};
|
|
1076
1048
|
}),
|
|
1077
1049
|
signalCount: data.signal_count ?? data.total_signals ?? rawSignals.length,
|
|
1078
1050
|
signalSummary: data.signal_summary ?? null,
|
|
1079
|
-
signalSummarySource: data.signal_summary_source,
|
|
1080
1051
|
intelligence: data.intelligence ?? null,
|
|
1081
1052
|
copyFuel: data.copy_fuel ?? null,
|
|
1082
1053
|
evidenceValidation: data.evidence_validation,
|
|
1083
|
-
evidenceSources: data.evidence_sources,
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
resultReturnedFrom: data.result_returned_from,
|
|
1089
|
-
cacheHit: data.cache_hit,
|
|
1090
|
-
freshEnrichmentUsed: data.fresh_enrichment_used,
|
|
1091
|
-
liveProviderCalled: data.live_provider_called,
|
|
1092
|
-
aiProviderCalled: data.ai_provider_called,
|
|
1093
|
-
byoAiUsed: data.byo_ai_used,
|
|
1094
|
-
metadata: data.metadata,
|
|
1054
|
+
evidenceSources: data.metadata?.evidence_sources ?? data.evidence_sources,
|
|
1055
|
+
evidenceCount: data.evidence_count,
|
|
1056
|
+
evidenceCountTotal: data.evidence_count_total,
|
|
1057
|
+
evidenceSourcesOmitted: data.evidence_sources_omitted,
|
|
1058
|
+
evidenceScope: data.evidence_scope,
|
|
1095
1059
|
raw: data
|
|
1096
1060
|
};
|
|
1097
1061
|
}
|
|
1062
|
+
var SIGNAL_DISCOVERY_SOURCES = /* @__PURE__ */ new Set(["web", "news"]);
|
|
1063
|
+
var SIGNAL_DISCOVERY_STATUSES = /* @__PURE__ */ new Set([
|
|
1064
|
+
"planned",
|
|
1065
|
+
"queued",
|
|
1066
|
+
"processing",
|
|
1067
|
+
"completed",
|
|
1068
|
+
"completed_with_warnings",
|
|
1069
|
+
"failed"
|
|
1070
|
+
]);
|
|
1071
|
+
function validateSignalDiscoveryParams(params) {
|
|
1072
|
+
const runId = typeof params.signalSearchRunId === "string" ? params.signalSearchRunId.trim() : "";
|
|
1073
|
+
const query = typeof params.query === "string" ? params.query.trim() : "";
|
|
1074
|
+
if (!runId && !query) {
|
|
1075
|
+
throw new TypeError("Signals Everything requires query or signalSearchRunId");
|
|
1076
|
+
}
|
|
1077
|
+
if (query && (query.length < 2 || query.length > 2e3)) {
|
|
1078
|
+
throw new RangeError("query must contain between 2 and 2000 characters");
|
|
1079
|
+
}
|
|
1080
|
+
if (params.limit !== void 0 && (!Number.isInteger(params.limit) || params.limit < 1 || params.limit > 1e3)) {
|
|
1081
|
+
throw new RangeError("limit must be an integer between 1 and 1000");
|
|
1082
|
+
}
|
|
1083
|
+
if (params.lookbackDays !== void 0 && (!Number.isInteger(params.lookbackDays) || params.lookbackDays < 1 || params.lookbackDays > 365)) {
|
|
1084
|
+
throw new RangeError("lookbackDays must be an integer between 1 and 365");
|
|
1085
|
+
}
|
|
1086
|
+
if (params.sources !== void 0 && (!Array.isArray(params.sources) || params.sources.length < 1 || params.sources.length > 2 || params.sources.some((source) => !SIGNAL_DISCOVERY_SOURCES.has(source)))) {
|
|
1087
|
+
throw new TypeError("sources must contain only web or news");
|
|
1088
|
+
}
|
|
1089
|
+
}
|
|
1090
|
+
function signalDiscoveryRequestBody(params) {
|
|
1091
|
+
const runId = typeof params.signalSearchRunId === "string" ? params.signalSearchRunId.trim() : "";
|
|
1092
|
+
if (runId) {
|
|
1093
|
+
return compact({
|
|
1094
|
+
signal_search_run_id: runId,
|
|
1095
|
+
dry_run: params.dryRun,
|
|
1096
|
+
idempotency_key: params.idempotencyKey
|
|
1097
|
+
});
|
|
1098
|
+
}
|
|
1099
|
+
return compact({
|
|
1100
|
+
query: params.query?.trim(),
|
|
1101
|
+
limit: params.limit ?? 100,
|
|
1102
|
+
sources: params.sources,
|
|
1103
|
+
lookback_days: params.lookbackDays,
|
|
1104
|
+
dry_run: params.dryRun,
|
|
1105
|
+
idempotency_key: params.idempotencyKey
|
|
1106
|
+
});
|
|
1107
|
+
}
|
|
1108
|
+
function normalizeSignalDiscoveryResult(params, data) {
|
|
1109
|
+
const rawSignals = Array.isArray(data.signals) ? data.signals : [];
|
|
1110
|
+
const rawStatus = String(data.status || "").toLowerCase();
|
|
1111
|
+
const status = SIGNAL_DISCOVERY_STATUSES.has(rawStatus) ? rawStatus : rawSignals.length > 0 ? "completed" : "failed";
|
|
1112
|
+
const signals = rawSignals.map(normalizeSignalDiscoverySignal);
|
|
1113
|
+
return {
|
|
1114
|
+
success: data.success !== false,
|
|
1115
|
+
status,
|
|
1116
|
+
capability: "signals_everything",
|
|
1117
|
+
signalSearchRunId: String(data.signal_search_run_id ?? params.signalSearchRunId ?? ""),
|
|
1118
|
+
query: String(data.query ?? params.query ?? ""),
|
|
1119
|
+
requestedCount: Number(data.requested_count ?? params.limit ?? 100),
|
|
1120
|
+
nextPollAfterSeconds: typeof data.next_poll_after_seconds === "number" ? data.next_poll_after_seconds : void 0,
|
|
1121
|
+
signals,
|
|
1122
|
+
signalCount: signals.length,
|
|
1123
|
+
sourceLanes: Array.isArray(data.source_lanes) ? data.source_lanes.filter((lane) => typeof lane === "string") : void 0,
|
|
1124
|
+
evidenceValidation: data.evidence_validation && typeof data.evidence_validation === "object" ? data.evidence_validation : void 0,
|
|
1125
|
+
costGuardrail: normalizeSignalDiscoveryCostGuardrail(data.cost_guardrail),
|
|
1126
|
+
warnings: Array.isArray(data.warnings) ? data.warnings.filter((warning) => typeof warning === "string") : void 0,
|
|
1127
|
+
raw: data
|
|
1128
|
+
};
|
|
1129
|
+
}
|
|
1130
|
+
function normalizeSignalDiscoveryCostGuardrail(value) {
|
|
1131
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return void 0;
|
|
1132
|
+
const guardrail = value;
|
|
1133
|
+
const maxCost = Number(guardrail.max_cost_per_qualified_signal_usd);
|
|
1134
|
+
const withinLimit = guardrail.within_limit === true;
|
|
1135
|
+
if (!Number.isFinite(maxCost)) return void 0;
|
|
1136
|
+
const numberOrNullable = (candidate) => {
|
|
1137
|
+
if (candidate === null) return null;
|
|
1138
|
+
const numeric = Number(candidate);
|
|
1139
|
+
return Number.isFinite(numeric) ? numeric : void 0;
|
|
1140
|
+
};
|
|
1141
|
+
const numberOrUndefined = (candidate) => {
|
|
1142
|
+
const numeric = Number(candidate);
|
|
1143
|
+
return Number.isFinite(numeric) ? numeric : void 0;
|
|
1144
|
+
};
|
|
1145
|
+
return {
|
|
1146
|
+
maxCostPerQualifiedSignalUsd: maxCost,
|
|
1147
|
+
projectedSourceCostUsd: numberOrNullable(guardrail.projected_source_cost_usd),
|
|
1148
|
+
maxSourceCostUsd: numberOrNullable(guardrail.max_source_cost_usd),
|
|
1149
|
+
projectedCostPerRequestedCompanySignalUsd: numberOrNullable(
|
|
1150
|
+
guardrail.projected_cost_per_requested_company_signal_usd
|
|
1151
|
+
),
|
|
1152
|
+
sourceCostUsd: numberOrNullable(guardrail.source_cost_usd),
|
|
1153
|
+
costSource: ["observed", "catalog_bounded", "mixed", "unavailable"].includes(String(guardrail.cost_source)) ? String(guardrail.cost_source) : void 0,
|
|
1154
|
+
qualifiedCompanySignalCount: numberOrUndefined(guardrail.qualified_company_signal_count),
|
|
1155
|
+
returnedCompanySignalCount: numberOrUndefined(guardrail.returned_company_signal_count),
|
|
1156
|
+
costPerQualifiedSignalUsd: numberOrNullable(guardrail.cost_per_qualified_signal_usd),
|
|
1157
|
+
withinLimit
|
|
1158
|
+
};
|
|
1159
|
+
}
|
|
1160
|
+
function normalizeSignalDiscoverySignal(value) {
|
|
1161
|
+
const signal = value && typeof value === "object" && !Array.isArray(value) ? value : {};
|
|
1162
|
+
const company = signal.company && typeof signal.company === "object" && !Array.isArray(signal.company) ? signal.company : {};
|
|
1163
|
+
const companyName = String(company.name ?? signal.company_name ?? "").trim();
|
|
1164
|
+
const companyDomain = String(company.domain ?? signal.company_domain ?? "").trim();
|
|
1165
|
+
if (!companyName || !companyDomain) {
|
|
1166
|
+
throw new Error("Signals Everything response violated the company attribution contract.");
|
|
1167
|
+
}
|
|
1168
|
+
return {
|
|
1169
|
+
id: signal.id,
|
|
1170
|
+
company: {
|
|
1171
|
+
name: companyName,
|
|
1172
|
+
domain: companyDomain,
|
|
1173
|
+
linkedinUrl: company.linkedin_url ?? signal.company_linkedin_url ?? void 0
|
|
1174
|
+
},
|
|
1175
|
+
title: signal.title ?? "",
|
|
1176
|
+
type: signal.type ?? signal.signal_type ?? "unknown",
|
|
1177
|
+
summary: signal.summary ?? signal.content ?? signal.description ?? "",
|
|
1178
|
+
eventDate: signal.event_date ?? signal.date ?? signal.signal_date ?? null,
|
|
1179
|
+
evidence: Array.isArray(signal.evidence) ? signal.evidence.map((item) => ({
|
|
1180
|
+
url: String(item?.url ?? ""),
|
|
1181
|
+
publishedAt: String(item?.published_at ?? item?.publishedAt ?? ""),
|
|
1182
|
+
source: String(item?.source ?? "")
|
|
1183
|
+
})).filter((item) => Boolean(item.url)) : [],
|
|
1184
|
+
content: signal.summary ?? signal.content ?? signal.description ?? "",
|
|
1185
|
+
date: signal.event_date ?? signal.date ?? signal.signal_date ?? null,
|
|
1186
|
+
detectedAt: signal.event_date ?? signal.detected_at ?? null,
|
|
1187
|
+
sourceUrl: signal.source_url ?? signal.url ?? null,
|
|
1188
|
+
sourceType: signal.source_type ?? null,
|
|
1189
|
+
confidence: signal.confidence ?? signal.confidence_score ?? null,
|
|
1190
|
+
classification: signal.signal_classification ?? signal.classification ?? null,
|
|
1191
|
+
raw: signal
|
|
1192
|
+
};
|
|
1193
|
+
}
|
|
1098
1194
|
function validateBatchSize(items) {
|
|
1099
1195
|
if (!Array.isArray(items) || items.length === 0) {
|
|
1100
1196
|
throw new Error("Signaliz batch requests require at least one item");
|
|
@@ -1110,9 +1206,9 @@ function validatedBatchConcurrency(options) {
|
|
|
1110
1206
|
}
|
|
1111
1207
|
return concurrency;
|
|
1112
1208
|
}
|
|
1113
|
-
function batchConcurrencyPlan(options) {
|
|
1114
|
-
const concurrency = validatedBatchConcurrency(options);
|
|
1115
|
-
const serverConcurrency = Math.min(
|
|
1209
|
+
function batchConcurrencyPlan(options, defaultConcurrency = 10, maximumServerConcurrency = 10) {
|
|
1210
|
+
const concurrency = options?.concurrency === void 0 ? defaultConcurrency : validatedBatchConcurrency(options);
|
|
1211
|
+
const serverConcurrency = Math.min(maximumServerConcurrency, concurrency);
|
|
1116
1212
|
return {
|
|
1117
1213
|
serverConcurrency,
|
|
1118
1214
|
chunkConcurrency: Math.max(1, Math.floor(concurrency / serverConcurrency))
|
package/dist/mcp-config.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@signaliz/sdk",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "Signaliz SDK for Find Email, Verify Email, Company Signal Enrichment, and Signal to Copy AI.",
|
|
3
|
+
"version": "1.0.54",
|
|
4
|
+
"description": "Signaliz SDK for Signals Everything, Find Email, Verify Email, Company Signal Enrichment, and Signal to Copy AI.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -24,7 +24,8 @@
|
|
|
24
24
|
"email-finder",
|
|
25
25
|
"email-verification",
|
|
26
26
|
"company-signals",
|
|
27
|
-
"signal-to-copy"
|
|
27
|
+
"signal-to-copy",
|
|
28
|
+
"signals-everything"
|
|
28
29
|
],
|
|
29
30
|
"license": "MIT",
|
|
30
31
|
"repository": {
|