@signaliz/cli 1.0.45 → 1.0.46

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 +6 -13
  2. package/dist/bin.js +22 -13
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -24,17 +24,12 @@ signaliz verify-email jane@example.com --dry-run --json
24
24
  signaliz verify-email jane@example.com --skip-cache --no-wait --json
25
25
  signaliz verify-email --verification-run-id run_... --json
26
26
  signaliz company-signals --domain example.com --research-prompt "expansion priorities"
27
- # Resume a queued run in a later agent/process without duplicate spend
28
- signaliz company-signals --signal-run-id run_...
29
27
  signaliz signal-to-copy \
30
28
  --company-domain example.com \
31
29
  --person-name "Jane Doe" \
32
30
  --title "VP Sales" \
33
31
  --campaign-offer "pipeline intelligence"
34
32
 
35
- # Resume a queued copy request with the returned ID only
36
- signaliz signal-to-copy --signal-run-id copy_... --json
37
-
38
33
  # Force fresh signals or opt into slower deep research only when needed
39
34
  signaliz signal-to-copy --company-domain example.com --person-name "Jane Doe" \
40
35
  --title "VP Sales" --campaign-offer "pipeline intelligence" --skip-cache --deep-search
@@ -73,7 +68,7 @@ Failed result lines preserve `errorCode`, `retryEligible`, and
73
68
  `retryAfterSeconds` when the API supplies recovery guidance.
74
69
 
75
70
  If a single request or batch submission response is lost, rerun the same
76
- command with `--idempotency-key <key>` to recover the original request or job
71
+ command with `--idempotency-key <key>` to recover the original request or supported email job
77
72
  without duplicate work. Add `--dry-run` to any product command, including one
78
73
  using `--input`, to receive a conservative credit ceiling without provider
79
74
  calls, jobs, writes, or spend.
@@ -82,13 +77,11 @@ Batch input is capped at 5,000 records, concurrency is bounded to `1-50`, input
82
77
  order is preserved, and a failed item does not abort successful items.
83
78
  Exact duplicate tasks are single-flighted across the full input before
84
79
  transport. Find Email and Verify Email inputs larger than 25 use one cache-aware
85
- recoverable REST job with 500-row result pages. Uniform Company Signal
86
- Enrichment inputs larger than 25 use one cache-aware recoverable REST job with
87
- 25-row result pages; heterogeneous, no-wait, and per-run recovery inputs keep
88
- the 25-row request path. Signal to Copy inputs larger than 25 use one
89
- recoverable REST job when they can reuse available signal data; fresh or
90
- deep-search requests keep the 25-row path. Signal to Copy also shares company
91
- research across recipients.
80
+ recoverable REST job with 500-row result pages. Company Signal Enrichment and
81
+ Signal to Copy inputs larger than 25 are chunked client-side into synchronous
82
+ requests of at most 25; the CLI waits for every chunk and emits only complete
83
+ results or terminal per-row errors. Signal to Copy also shares company research
84
+ across recipients.
92
85
 
93
86
  Connection commands are limited to access infrastructure:
94
87
 
package/dist/bin.js CHANGED
@@ -14,12 +14,12 @@ var HELP = `Signaliz CLI
14
14
  Four product commands:
15
15
  signaliz find-email --company-domain example.com --full-name "Jane Doe" [--skip-cache]
16
16
  signaliz verify-email [jane@example.com] [--verification-run-id run_...] [--no-wait] [--max-wait-ms 600000]
17
- signaliz company-signals --domain example.com [--research-prompt "..."] [--no-summary] [--max-wait-ms 1200000]
18
- signaliz company-signals --signal-run-id run_... Resume without duplicate spend
17
+ signaliz company-signals --domain example.com [--research-prompt "..."] [--search-mode fast|balanced|coverage] [--no-summary] [--max-wait-ms 120000]
18
+ signaliz company-signals --signal-run-id run_... Read a completed run without duplicate spend
19
19
  signaliz signal-to-copy --company-domain example.com --person-name "Jane Doe" \\
20
20
  --title "VP Sales" --campaign-offer "pipeline intelligence" [--signal-run-id run_...] \\
21
- [--skip-cache] [--deep-search] [--max-wait-ms 1200000]
22
- signaliz signal-to-copy --signal-run-id copy_... Resume with the returned ID only
21
+ [--skip-cache] [--deep-search] [--max-wait-ms 120000]
22
+ signaliz signal-to-copy --signal-run-id copy_... Reuse a completed signal run
23
23
 
24
24
  Access and connection:
25
25
  signaliz auth login
@@ -41,6 +41,8 @@ Common flags:
41
41
  --concurrency <1-50> Simultaneous API requests for batch input (default: 10)
42
42
  --idempotency-key <key> Reuse after an ambiguous response to recover the same request or job
43
43
  --dry-run Return a no-spend plan without provider calls, jobs, or writes
44
+
45
+ Company Signals and Signal to Copy always wait for complete results or terminal errors.
44
46
  `;
45
47
  function loadConfig() {
46
48
  if (!(0, import_node_fs.existsSync)(CONFIG_FILE)) return {};
@@ -85,6 +87,11 @@ function csvFlag(name) {
85
87
  const value = flag(name);
86
88
  return value?.split(",").map((item) => item.trim()).filter(Boolean);
87
89
  }
90
+ function companySignalSearchMode(value) {
91
+ if (value === void 0 || value === null || value === "") return void 0;
92
+ if (value === "fast" || value === "balanced" || value === "coverage") return value;
93
+ fail("--search-mode must be fast, balanced, or coverage");
94
+ }
88
95
  function readBatchInput() {
89
96
  const path = flag("input");
90
97
  if (!path) return null;
@@ -122,6 +129,11 @@ function batchOptions() {
122
129
  compactDuplicates: !hasFlag("expand-duplicates")
123
130
  };
124
131
  }
132
+ function rejectAsyncSignalFlags() {
133
+ if (hasFlag("no-wait") || hasFlag("poll-interval-ms")) {
134
+ fail("Company Signals and Signal to Copy are always synchronous; --no-wait and --poll-interval-ms are not supported.");
135
+ }
136
+ }
125
137
  function batchOutput(value) {
126
138
  if (hasFlag("jsonl")) {
127
139
  for (const result of value.results) {
@@ -358,6 +370,7 @@ Catch-all: ${result.isCatchAll}
358
370
  });
359
371
  }
360
372
  async function companySignals() {
373
+ rejectAsyncSignalFlags();
361
374
  const rows = readBatchInput();
362
375
  if (rows) {
363
376
  const requests = rows.map((value) => {
@@ -373,13 +386,12 @@ async function companySignals() {
373
386
  lookbackDays: row.lookbackDays || row.lookback_days || numberFlag("lookback-days"),
374
387
  online,
375
388
  enableDeepSearch: row.enableDeepSearch ?? row.enable_deep_search ?? (online && !hasFlag("shallow")),
389
+ searchMode: companySignalSearchMode(row.searchMode ?? row.search_mode ?? flag("search-mode")),
376
390
  includeSummary: row.includeSummary ?? row.include_summary ?? !hasFlag("no-summary"),
377
391
  enableOutreachIntelligence: row.enableOutreachIntelligence ?? row.enable_outreach_intelligence,
378
392
  enablePredictiveIntelligence: row.enablePredictiveIntelligence ?? row.enable_predictive_intelligence,
379
393
  skipCache: row.skipCache ?? row.skip_cache ?? hasFlag("skip-cache"),
380
- waitForResult: row.waitForResult ?? row.wait_for_result ?? !hasFlag("no-wait"),
381
- maxWaitMs: row.maxWaitMs || row.max_wait_ms || numberFlag("max-wait-ms"),
382
- pollIntervalMs: row.pollIntervalMs || row.poll_interval_ms || numberFlag("poll-interval-ms")
394
+ maxWaitMs: row.maxWaitMs || row.max_wait_ms || numberFlag("max-wait-ms")
383
395
  };
384
396
  });
385
397
  if (hasFlag("dry-run")) {
@@ -405,13 +417,12 @@ async function companySignals() {
405
417
  lookbackDays: numberFlag("lookback-days"),
406
418
  online: !hasFlag("offline"),
407
419
  enableDeepSearch: !hasFlag("offline") && !hasFlag("shallow"),
420
+ searchMode: companySignalSearchMode(flag("search-mode")),
408
421
  includeSummary: !hasFlag("no-summary"),
409
422
  enableOutreachIntelligence: hasFlag("outreach-intelligence") || void 0,
410
423
  enablePredictiveIntelligence: hasFlag("predictive-intelligence") || void 0,
411
424
  skipCache: hasFlag("skip-cache"),
412
- waitForResult: !hasFlag("no-wait"),
413
425
  maxWaitMs: numberFlag("max-wait-ms"),
414
- pollIntervalMs: numberFlag("poll-interval-ms"),
415
426
  idempotencyKey: flag("idempotency-key")
416
427
  };
417
428
  if (hasFlag("dry-run")) {
@@ -431,6 +442,7 @@ Signals: ${result.signalCount}
431
442
  });
432
443
  }
433
444
  async function signalToCopy() {
445
+ rejectAsyncSignalFlags();
434
446
  const rows = readBatchInput();
435
447
  if (rows) {
436
448
  const requests = rows.map((value) => {
@@ -444,9 +456,7 @@ async function signalToCopy() {
444
456
  signalRunId: row.signalRunId || row.signal_run_id,
445
457
  skipCache: row.skipCache ?? row.skip_cache ?? hasFlag("skip-cache"),
446
458
  enableDeepSearch: row.enableDeepSearch ?? row.enable_deep_search ?? hasFlag("deep-search"),
447
- waitForResult: row.waitForResult ?? row.wait_for_result ?? !hasFlag("no-wait"),
448
- maxWaitMs: row.maxWaitMs || row.max_wait_ms || numberFlag("max-wait-ms"),
449
- pollIntervalMs: row.pollIntervalMs || row.poll_interval_ms || numberFlag("poll-interval-ms")
459
+ maxWaitMs: row.maxWaitMs || row.max_wait_ms || numberFlag("max-wait-ms")
450
460
  };
451
461
  });
452
462
  if (hasFlag("dry-run")) {
@@ -476,7 +486,6 @@ async function signalToCopy() {
476
486
  skipCache: hasFlag("skip-cache"),
477
487
  enableDeepSearch: hasFlag("deep-search"),
478
488
  maxWaitMs: numberFlag("max-wait-ms"),
479
- pollIntervalMs: numberFlag("poll-interval-ms"),
480
489
  idempotencyKey: flag("idempotency-key")
481
490
  };
482
491
  if (hasFlag("dry-run")) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@signaliz/cli",
3
- "version": "1.0.45",
3
+ "version": "1.0.46",
4
4
  "description": "Signaliz CLI for Find Email, Verify Email, Company Signal Enrichment, and Signal to Copy AI.",
5
5
  "bin": {
6
6
  "signaliz": "dist/bin.js"