@signaliz/cli 1.0.58 → 1.0.60

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.
Files changed (3) hide show
  1. package/README.md +7 -4
  2. package/dist/bin.js +20 -10
  3. package/package.json +2 -2
package/README.md CHANGED
@@ -115,7 +115,8 @@ REST, MCP, SDK, and CLI recovery. The four row-oriented core products use one
115
115
  recoverable REST job for inputs larger than 25; the CLI waits by default or
116
116
  returns `job_id`, `idempotency_key`, and an exact resume command with
117
117
  `--no-wait`. Find Email, Verify Email, and Company Signal Enrichment use 25-row
118
- pages; Signal to Copy uses 100-row pages. Durable Signal to Copy jobs use
118
+ pages; Signal to Copy uses 100-row pages. Large Find Email and Verify Email
119
+ batches honor `--max-wait-ms` and `--poll-interval-ms`. Durable Signal to Copy jobs use
119
120
  persisted, eligible company-signal data only and never start live providers or
120
121
  deep research. Large Copy inputs with fresh, deep, skip-cache, per-row
121
122
  idempotency, or synchronous-only controls fail locally before HTTP; split those
@@ -127,9 +128,11 @@ diagnostics; use `--include-candidate-evidence` only with batches of at most 25.
127
128
  Every command uses the authenticated workspace. Find Email and Verify Email
128
129
  honor that workspace's configured cache window; eligible hits cost 0 credits,
129
130
  while fresh discovery or verification is charged on every plan. Builder, Team,
130
- Agency, and Pay-As-You-Go include fresh Company Signals and Signal to Copy. Those plans
131
- still check eligible workspace signal data first even when Company Signals is
132
- set to No cache. `--lookback-days` remains a hard evidence-age bound for both
131
+ Agency, and Pay-As-You-Go include fresh Company Signals. Team and Agency also
132
+ include Unlimited Signal to Copy AI; Signal to Copy remains callable on other
133
+ plans under the standard product contract. These plans still check eligible
134
+ workspace signal data first even when Company Signals is set to No cache.
135
+ `--lookback-days` remains a hard evidence-age bound for both
133
136
  cached and fresh Company Signals and Signal to Copy results.
134
137
 
135
138
  Signals Everything is a query-first company discovery command rather than a
package/dist/bin.js CHANGED
@@ -95,6 +95,12 @@ function numberFlag(name) {
95
95
  if (!Number.isFinite(parsed)) fail(`--${name} must be a number`);
96
96
  return parsed;
97
97
  }
98
+ function requireIntegerInRange(value, name, minimum, maximum) {
99
+ if (value === void 0) return;
100
+ if (!Number.isInteger(value) || value < minimum || value > maximum) {
101
+ throw new RangeError(`${name} must be an integer between ${minimum} and ${maximum}`);
102
+ }
103
+ }
98
104
  function csvFlag(name) {
99
105
  const value = flag(name);
100
106
  return value?.split(",").map((item) => item.trim()).filter(Boolean);
@@ -693,8 +699,7 @@ async function findEmail() {
693
699
  "linkedin-url",
694
700
  "company-name",
695
701
  "run-id",
696
- "skip-cache",
697
- "idempotency-key"
702
+ "skip-cache"
698
703
  ].filter(hasFlag);
699
704
  if (conflicts.length > 0) {
700
705
  fail(`Find Email --job-id cannot be combined with ${conflicts.map((name) => `--${name}`).join(", ")}.`);
@@ -703,7 +708,8 @@ async function findEmail() {
703
708
  pageSize: numberFlag("page-size"),
704
709
  maxWaitMs: numberFlag("max-wait-ms"),
705
710
  pollIntervalMs: numberFlag("poll-interval-ms"),
706
- compactDuplicates: !hasFlag("expand-duplicates")
711
+ compactDuplicates: !hasFlag("expand-duplicates"),
712
+ idempotencyKey: flag("idempotency-key")
707
713
  });
708
714
  batchOutput(customerEmailBatch(result2, "find"));
709
715
  return;
@@ -792,7 +798,6 @@ async function verifyEmail(args) {
792
798
  "email",
793
799
  "verification-run-id",
794
800
  "skip-cache",
795
- "idempotency-key",
796
801
  "no-wait"
797
802
  ].filter(hasFlag);
798
803
  if (positionalEmail || conflicts.length > 0) {
@@ -806,7 +811,8 @@ async function verifyEmail(args) {
806
811
  pageSize: numberFlag("page-size"),
807
812
  maxWaitMs: numberFlag("max-wait-ms"),
808
813
  pollIntervalMs: numberFlag("poll-interval-ms"),
809
- compactDuplicates: !hasFlag("expand-duplicates")
814
+ compactDuplicates: !hasFlag("expand-duplicates"),
815
+ idempotencyKey: flag("idempotency-key")
810
816
  });
811
817
  batchOutput(customerEmailBatch(result2, "verify"));
812
818
  return;
@@ -937,8 +943,8 @@ async function companySignals() {
937
943
  companyName: row.companyName || row.company_name || row.name,
938
944
  researchPrompt: row.researchPrompt || row.research_prompt || flag("research-prompt") || flag("prompt"),
939
945
  signalTypes: row.signalTypes || row.signal_types || csvFlag("signal-types"),
940
- targetSignalCount: row.targetSignalCount || row.target_signal_count || numberFlag("target-signal-count"),
941
- lookbackDays: row.lookbackDays || row.lookback_days || numberFlag("lookback-days"),
946
+ targetSignalCount: row.targetSignalCount ?? row.target_signal_count ?? numberFlag("target-signal-count"),
947
+ lookbackDays: row.lookbackDays ?? row.lookback_days ?? numberFlag("lookback-days"),
942
948
  online,
943
949
  enableDeepSearch: row.enableDeepSearch ?? row.enable_deep_search ?? (online && !hasFlag("shallow")),
944
950
  searchMode: companySignalSearchMode(row.searchMode ?? row.search_mode ?? flag("search-mode")),
@@ -947,10 +953,14 @@ async function companySignals() {
947
953
  enablePredictiveIntelligence: row.enablePredictiveIntelligence ?? row.enable_predictive_intelligence,
948
954
  skipCache: row.skipCache ?? row.skip_cache ?? hasFlag("skip-cache"),
949
955
  includeCandidateEvidence: row.includeCandidateEvidence ?? row.include_candidate_evidence ?? hasFlag("include-candidate-evidence"),
950
- maxWaitMs: row.maxWaitMs || row.max_wait_ms || (durableBatch ? void 0 : numberFlag("max-wait-ms")),
956
+ maxWaitMs: row.maxWaitMs ?? row.max_wait_ms ?? (durableBatch ? void 0 : numberFlag("max-wait-ms")),
951
957
  idempotencyKey: row.idempotencyKey || row.idempotency_key
952
958
  };
953
959
  });
960
+ for (const request2 of requests) {
961
+ requireIntegerInRange(request2.targetSignalCount, "targetSignalCount", 1, 15);
962
+ requireIntegerInRange(request2.lookbackDays, "lookbackDays", 1, 365);
963
+ }
954
964
  if (hasFlag("dry-run")) {
955
965
  if (hasFlag("no-wait")) fail("Company Signals --no-wait cannot be combined with --dry-run.");
956
966
  const result3 = await createClient().enrichCompanies(requests, { ...batchOptions(), dryRun: true });
@@ -1181,11 +1191,11 @@ async function signalToCopy() {
1181
1191
  title: row.title,
1182
1192
  campaignOffer: row.campaignOffer || row.campaign_offer || row.offer,
1183
1193
  researchPrompt: row.researchPrompt || row.research_prompt || flag("research-prompt") || flag("prompt"),
1184
- lookbackDays: row.lookbackDays || row.lookback_days || numberFlag("lookback-days"),
1194
+ lookbackDays: row.lookbackDays ?? row.lookback_days ?? numberFlag("lookback-days"),
1185
1195
  signalRunId: row.signalRunId || row.signal_run_id,
1186
1196
  skipCache: row.skipCache ?? row.skip_cache ?? hasFlag("skip-cache"),
1187
1197
  enableDeepSearch: row.enableDeepSearch ?? row.enable_deep_search ?? hasFlag("deep-search"),
1188
- maxWaitMs: row.maxWaitMs || row.max_wait_ms || (durableBatch ? void 0 : numberFlag("max-wait-ms")),
1198
+ maxWaitMs: row.maxWaitMs ?? row.max_wait_ms ?? (durableBatch ? void 0 : numberFlag("max-wait-ms")),
1189
1199
  idempotencyKey: row.idempotencyKey || row.idempotency_key
1190
1200
  };
1191
1201
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@signaliz/cli",
3
- "version": "1.0.58",
3
+ "version": "1.0.60",
4
4
  "description": "Signaliz CLI for Signals Everything, Find Email, Verify Email, Company Signal Enrichment, and Signal to Copy AI.",
5
5
  "bin": {
6
6
  "signaliz": "dist/bin.js"
@@ -29,7 +29,7 @@
29
29
  "node": ">=18"
30
30
  },
31
31
  "dependencies": {
32
- "@signaliz/sdk": "^1.0.62"
32
+ "@signaliz/sdk": "^1.0.63"
33
33
  },
34
34
  "devDependencies": {
35
35
  "tsup": "^8.0.0",