proof-of-commitment 1.30.0 → 1.31.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 +18 -0
  2. package/index.js +34 -2
  3. package/package.json +8 -1
package/README.md CHANGED
@@ -6,6 +6,24 @@
6
6
 
7
7
  An MCP server and web tool that scores npm packages, PyPI packages, Rust crates, Go modules, and GitHub repos on **behavioral commitment** — signals that are harder to fake than stars, READMEs, or download counts.
8
8
 
9
+ ```text
10
+ $ npx proof-of-commitment axios zod chalk lodash minimatch
11
+ Scoring 5 npm packages... done in 3.0s
12
+
13
+ Package Risk Score Publishers Downloads Age Provenance
14
+ chalk šŸ”“ CRITICAL 72 1 432.9M/wk 14.6y —
15
+ minimatch šŸ”“ CRITICAL 78 1 634.1M/wk 14.9y —
16
+ lodash šŸ”“ CRITICAL 80 1 158.9M/wk 14.1y —
17
+ zod šŸ”“ CRITICAL 83 1 161.2M/wk 6.3y šŸ” verified
18
+ axios šŸ”“ CRITICAL 88 1 115.7M/wk 11.8y šŸ” verified
19
+ ⚠ COMPROMISED — axios token theft (2026-03-30)
20
+
21
+ ⚠ 5 CRITICAL packages found.
22
+ CRITICAL = sole npm publisher + >10M weekly downloads (publish-access concentration risk)
23
+ ```
24
+
25
+ `npm audit` flags none of these. They're not vulnerabilities — they're attack-surface concentration. One stolen npm token, one phished maintainer, and a single push reaches the whole ecosystem (axios, March 30 2026 — happened).
26
+
9
27
  ## The supply chain security problem
10
28
 
11
29
  26 of the 91 npm packages with >10M weekly downloads have a **single npm publisher**. Together they account for over 3 billion downloads per week. `npm audit` doesn't surface this. Stars don't either.
package/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * proof-of-commitment CLI v1.30.0
3
+ * proof-of-commitment CLI v1.31.0
4
4
  * Scores npm/PyPI/Cargo/Go packages on behavioral commitment signals.
5
5
  * Usage: npx proof-of-commitment [packages...] [options]
6
6
  */
@@ -162,6 +162,24 @@ async function handle429(res) {
162
162
  }
163
163
  console.error('');
164
164
 
165
+ // GitHub Actions: surface rate-limit as a workflow annotation so the human
166
+ // reviewer sees it in the PR checks tab, not buried in raw CI logs.
167
+ // Must fire BEFORE the path-specific branches — keyUpgrade and overshoot
168
+ // both exit early with process.exit(1) and would skip a late annotation.
169
+ if (process.env.GITHUB_ACTIONS === 'true') {
170
+ const fixUrl = keyUpgrade
171
+ ? (data.upgrade?.url || 'https://getcommit.dev/pricing?ref=ci-annotation')
172
+ : overshoot
173
+ ? (instantKeyUrl || 'https://getcommit.dev/pricing?ref=ci-annotation')
174
+ : (instantKeyUrl || 'https://getcommit.dev/get-started?ref=ci-annotation');
175
+ const fixLabel = keyUpgrade
176
+ ? 'Upgrade your API key for higher limits'
177
+ : overshoot
178
+ ? 'Get a Developer key ($15/mo, 1000/day)'
179
+ : 'Get a free API key (200/day, no card)';
180
+ console.error(`::warning title=Commit supply chain audit rate-limited::${fixLabel}. Add COMMIT_API_KEY to repo secrets. ${fixUrl}`);
181
+ }
182
+
165
183
  // Authenticated-key quota path: user already has a key, hit their daily
166
184
  // allowance. Free-key inline prompt is the wrong tool — surface upgrade.
167
185
  // (Diagnosis: 2026-06-10 idle-mode dogfood — see comment block above.)
@@ -585,6 +603,20 @@ function printTable(results, { totalScanned, totalCritical, lockfile } = {}) {
585
603
  console.log('\n' + clr(c.green, `āœ“ No CRITICAL packages found${suffix}.`));
586
604
  }
587
605
 
606
+ // GitHub Actions: emit annotations so CRITICAL findings surface in the PR
607
+ // checks tab and workflow summary — not buried in raw log output. This is
608
+ // the same visibility commit-action gives, but for direct CLI users.
609
+ if (process.env.GITHUB_ACTIONS === 'true') {
610
+ if (effectiveCritical > 0) {
611
+ const critNames = results.filter(r => hasCritical(r.riskFlags)).slice(0, 5).map(r => r.name).join(', ');
612
+ console.error(`::warning title=Commit: ${effectiveCritical} CRITICAL package${effectiveCritical > 1 ? 's' : ''}::Sole npm publisher + >10M downloads/week: ${critNames}. Details: getcommit.dev/audit?packages=${encodeURIComponent(critNames)}&utm_source=cli&utm_medium=ci-annotation`);
613
+ }
614
+ if (compromisedCount > 0) {
615
+ const compNames = results.filter(r => r.compromised).slice(0, 5).map(r => r.name).join(', ');
616
+ console.error(`::error title=Commit: ${compromisedCount} compromised package${compromisedCount > 1 ? 's' : ''}::Recently attacked in supply chain incidents: ${compNames}. Verify you are on clean versions.`);
617
+ }
618
+ }
619
+
588
620
  if (compromisedCount > 0) {
589
621
  console.log(clr(c.red + c.bold, `\n⚠ ${compromisedCount} package${compromisedCount > 1 ? 's' : ''} recently compromised in supply chain attacks.`));
590
622
  console.log(clr(c.dim, ' Verify you are on clean versions. See URLs above for incident details.'));
@@ -846,7 +878,7 @@ async function inlineSignup(results, opts = {}) {
846
878
 
847
879
  function printHelp() {
848
880
  console.log(`
849
- ${clr(c.bold, 'proof-of-commitment')} v1.30.0 — supply chain risk scorer
881
+ ${clr(c.bold, 'proof-of-commitment')} v1.31.0 — supply chain risk scorer
850
882
 
851
883
  ${clr(c.bold, 'Usage:')}
852
884
  npx proof-of-commitment Auto-detect manifest in current dir
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "proof-of-commitment",
3
- "version": "1.30.0",
3
+ "version": "1.31.1",
4
4
  "mcpName": "io.github.piiiico/proof-of-commitment",
5
5
  "description": "Supply chain security risk scorer for npm, PyPI, Cargo, and Go packages — behavioral signals that can't be faked",
6
6
  "type": "module",
@@ -53,6 +53,13 @@
53
53
  "url": "https://github.com/piiiico/proof-of-commitment"
54
54
  },
55
55
  "homepage": "https://getcommit.dev/audit",
56
+ "bugs": {
57
+ "url": "https://github.com/piiiico/proof-of-commitment/issues"
58
+ },
59
+ "funding": {
60
+ "type": "individual",
61
+ "url": "https://getcommit.dev/pricing?utm_source=npm-fund&utm_medium=package-meta"
62
+ },
56
63
  "engines": {
57
64
  "node": ">=18"
58
65
  }