proof-of-commitment 1.17.1 → 1.18.1

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 -1
  2. package/index.js +23 -10
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -56,7 +56,7 @@ npx proof-of-commitment --file go.sum # full transitive set
56
56
  # Install once, then use the `poc` alias:
57
57
  npm install -g proof-of-commitment
58
58
 
59
- # Get a free API key at https://getcommit.dev/get-started, then:
59
+ # Get a free API key at https://getcommit.dev/get-started?utm_source=cli, then:
60
60
  poc login sk_commit_your_key_here
61
61
  # ✓ Authenticated — Tier: Free — Usage: 0/200 requests (daily)
62
62
 
package/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * proof-of-commitment CLI v1.17.1
3
+ * proof-of-commitment CLI v1.18.1
4
4
  * Scores npm/PyPI/Cargo/Go packages on behavioral commitment signals.
5
5
  * Usage: npx proof-of-commitment [packages...] [options]
6
6
  */
@@ -279,10 +279,10 @@ function printTable(results, { totalScanned, totalCritical, lockfile } = {}) {
279
279
  }
280
280
  }
281
281
 
282
- // Contextual upsell — show when findings make monitoring relevant
283
- // In TTY mode, inlineSignup() handles the upsell interactively — skip static text
282
+ // Contextual upsell — show when findings make monitoring relevant.
283
+ // In TTY mode, inlineSignup() handles the CRITICAL/risky upsell interactively — skip static text there.
284
+ const hasKey = !!process.env.COMMIT_API_KEY || _cachedHasKey;
284
285
  if (effectiveCritical > 0) {
285
- const hasKey = !!process.env.COMMIT_API_KEY || _cachedHasKey;
286
286
  if (hasKey) {
287
287
  console.log(clr(c.dim, `\n 📊 Monitor ${effectiveCritical === 1 ? 'this package' : 'these packages'}: `) +
288
288
  clr(c.cyan, `poc watch ${results.find(r => hasCritical(r.riskFlags))?.name || results[0]?.name}`));
@@ -293,6 +293,19 @@ function printTable(results, { totalScanned, totalCritical, lockfile } = {}) {
293
293
  console.log(clr(c.dim, ' Then run: ') + clr(c.cyan, 'poc login'));
294
294
  }
295
295
  // else: TTY mode — inlineSignup() will prompt interactively after printTable
296
+ } else if (!hasKey) {
297
+ // HEALTHY case + no saved key: soft watchlist CTA. The all-healthy
298
+ // footer previously surfaced only CI-shaped CTAs (Action, `poc init`)
299
+ // which both require active commitment — workflow change + repo edit.
300
+ // The lowest-friction conversion (email → API key → watchlist) was
301
+ // hidden behind the CRITICAL gate of inlineSignup(). Buyer-journey
302
+ // dogfood 2026-05-24 found 1472 weekly downloads → 0 organic signups;
303
+ // the watchlist value prop ("alert me when these degrade") is real
304
+ // for healthy packages too — that's exactly when monitoring matters.
305
+ // ref=audit-baseline distinguishes this funnel from audit-cli-429
306
+ // (rate-limit rescue) and from the static utm_source=cli help-line.
307
+ console.log(clr(c.dim, '\n 📊 Save this scan as your baseline. Re-run anytime with a free key:'));
308
+ console.log(clr(c.dim, ' ') + clr(c.cyan, 'https://getcommit.dev/get-started?ref=audit-baseline&utm_source=cli') + clr(c.dim, ' (200/day free; push alerts on Developer $15/mo)'));
296
309
  }
297
310
  console.log();
298
311
  }
@@ -314,8 +327,8 @@ async function inlineSignup(results) {
314
327
  if (!shouldPrompt) return;
315
328
 
316
329
  console.log(clr(c.dim, ' ─────────────────────────────────────────────'));
317
- console.log(clr(c.bold, ' 🔔 Get alerts when these scores change?'));
318
- console.log(clr(c.dim, ' Free API key — no credit card, 10 seconds.\n'));
330
+ console.log(clr(c.bold, ' 🔔 Lock in this audit. Get alerts if these packages get worse.'));
331
+ console.log(clr(c.dim, ' Free, no card, 10 seconds. Saves to ~/.commit/config.\n'));
319
332
 
320
333
  const { createInterface } = await import('readline');
321
334
  const rl = createInterface({ input: process.stdin, output: process.stdout });
@@ -371,7 +384,7 @@ async function inlineSignup(results) {
371
384
 
372
385
  function printHelp() {
373
386
  console.log(`
374
- ${clr(c.bold, 'proof-of-commitment')} v1.16.0 — supply chain risk scorer
387
+ ${clr(c.bold, 'proof-of-commitment')} v1.18.1 — supply chain risk scorer
375
388
 
376
389
  ${clr(c.bold, 'Usage:')}
377
390
  npx proof-of-commitment Auto-detect manifest in current dir
@@ -408,7 +421,7 @@ ${clr(c.bold, 'Monitoring (Pro):')}
408
421
  poc watchlist List monitored packages with current scores + risk
409
422
  poc unwatch <pkg> Remove a package from monitoring
410
423
 
411
- Get a free key: https://getcommit.dev/get-started
424
+ Get a free key: https://getcommit.dev/get-started?utm_source=cli
412
425
  Upgrade to Pro: https://getcommit.dev/pricing
413
426
 
414
427
  ${clr(c.bold, 'Options:')}
@@ -930,7 +943,7 @@ async function cmdLogin(keyArg) {
930
943
 
931
944
  if (!key || !key.startsWith('sk_commit_')) {
932
945
  console.error(clr(c.red, '\n Invalid API key format. Keys start with sk_commit_'));
933
- console.error(clr(c.dim, ' Get one at https://getcommit.dev/get-started\n'));
946
+ console.error(clr(c.dim, ' Get one at https://getcommit.dev/get-started?utm_source=cli\n'));
934
947
  process.exit(1);
935
948
  }
936
949
 
@@ -972,7 +985,7 @@ async function cmdStatus() {
972
985
  if (!key) {
973
986
  console.log(clr(c.dim, '\n Not logged in.'));
974
987
  console.log(clr(c.dim, ' Run ') + clr(c.cyan, 'poc login') + clr(c.dim, ' to authenticate.'));
975
- console.log(clr(c.dim, ' Get a free key at https://getcommit.dev/get-started\n'));
988
+ console.log(clr(c.dim, ' Get a free key at https://getcommit.dev/get-started?utm_source=cli\n'));
976
989
  return;
977
990
  }
978
991
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "proof-of-commitment",
3
- "version": "1.17.1",
3
+ "version": "1.18.1",
4
4
  "mcpName": "io.github.piiiico/proof-of-commitment",
5
5
  "description": "Supply chain risk scorer for npm, PyPI, Cargo, and Go packages — behavioral signals that can't be faked",
6
6
  "type": "module",