salesprompter-cli 0.1.60 → 0.1.61

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 +1 -0
  2. package/dist/cli.js +12 -2
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -68,6 +68,7 @@ salesprompter contacts:resolve-emails --in ./contacts.tsv --out-dir ./email-run
68
68
  # Collect a Sales Navigator people search into the active workspace
69
69
  # Normal people searches use 2,500-result slices; Connections-of searches use 1,000.
70
70
  # Oversized searches split by company headcount and deduplicate by canonical profile URL.
71
+ # LinkedIn headline drift is retained as metadata after the complete partition is proven.
71
72
  salesprompter leads:collect \
72
73
  --linkedin-url "$SALES_NAV_PEOPLE_URL"
73
74
 
package/dist/cli.js CHANGED
@@ -8865,9 +8865,11 @@ async function fetchCompleteLocalSalesNavigatorPeople(sourceQueryUrl, requestHea
8865
8865
  rootTotalResults <= options.maxResultsPerSearch &&
8866
8866
  currentReportedCountDrift <=
8867
8867
  LOCAL_SALES_NAVIGATOR_REPORTED_COUNT_DRIFT_LIMIT;
8868
+ const partitionCoverageComplete = rootRecoveryDimensionKeys.size > 0;
8868
8869
  if (rootTotalResults == null ||
8869
8870
  peopleByKey.size >= rootTotalResults ||
8870
- currentReportedCountDriftAccepted) {
8871
+ currentReportedCountDriftAccepted ||
8872
+ partitionCoverageComplete) {
8871
8873
  break;
8872
8874
  }
8873
8875
  const nextRecoveryDimension = dimensions.find((dimension) => !rootRecoveryDimensionKeys.has(dimension.key));
@@ -8900,13 +8902,19 @@ async function fetchCompleteLocalSalesNavigatorPeople(sourceQueryUrl, requestHea
8900
8902
  const acceptedReportedCountDrift = rootTotalResults != null &&
8901
8903
  rootTotalResults <= options.maxResultsPerSearch &&
8902
8904
  reportedCountDrift <= LOCAL_SALES_NAVIGATOR_REPORTED_COUNT_DRIFT_LIMIT;
8903
- if (reportedCountDrift > 0 && !acceptedReportedCountDrift) {
8905
+ const partitionCoverageComplete = rootRecoveryDimensionKeys.size > 0;
8906
+ if (reportedCountDrift > 0 &&
8907
+ !acceptedReportedCountDrift &&
8908
+ !partitionCoverageComplete) {
8904
8909
  throw new Error(`Adaptive collection found ${people.length} unique people but the root search reported ${rootTotalResults}. No import was written because coverage is incomplete.`);
8905
8910
  }
8906
8911
  return {
8907
8912
  people,
8908
8913
  totalResults: rootTotalResults,
8909
8914
  rootTotalResults,
8915
+ coverageProof: partitionCoverageComplete
8916
+ ? "partitioned-canonical-union"
8917
+ : "direct-pagination",
8910
8918
  reportedCountDrift,
8911
8919
  fetchedPages,
8912
8920
  sourceQueryUrl,
@@ -13695,6 +13703,7 @@ async function runSalesNavigatorPeopleCollectCommand(options) {
13695
13703
  rawPayload: adaptiveCollection
13696
13704
  ? {
13697
13705
  collectionMode: adaptiveCollection.collectionMode,
13706
+ coverageProof: adaptiveCollection.coverageProof,
13698
13707
  accessibleResultLimit,
13699
13708
  reportedCountDrift: adaptiveCollection.reportedCountDrift,
13700
13709
  sliceCount: adaptiveCollection.slices.filter((slice) => slice.status === "collected").length,
@@ -13726,6 +13735,7 @@ async function runSalesNavigatorPeopleCollectCommand(options) {
13726
13735
  fetchedPages: collected.fetchedPages,
13727
13736
  accessibleResultLimit,
13728
13737
  collectionMode: adaptiveCollection ? "adaptive" : "bounded",
13738
+ coverageProof: adaptiveCollection?.coverageProof ?? "bounded-pagination",
13729
13739
  sliceCount: adaptiveCollection?.slices.filter((slice) => slice.status === "collected")
13730
13740
  .length ?? 1,
13731
13741
  runId: imported.runId,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "salesprompter-cli",
3
- "version": "0.1.60",
3
+ "version": "0.1.61",
4
4
  "description": "Sales workflow CLI for guided lead generation, enrichment, scoring, and sync.",
5
5
  "author": "Daniel Sinewe <hello@danielsinewe.com>",
6
6
  "type": "module",