pqcheck 0.7.9 → 0.12.0

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 +96 -27
  2. package/bin/pqcheck.js +1659 -56
  3. package/package.json +5 -5
package/README.md CHANGED
@@ -8,10 +8,67 @@ npx pqcheck stripe.com
8
8
 
9
9
  Zero install. Works in any terminal with Node 18+. Free, no signup, no API key.
10
10
 
11
- The same scanner that powers [quantapact.com](https://quantapact.com), the browser extension, and the GitHub Action.
11
+ The same scanner that powers [cipherwake.io](https://cipherwake.io), the browser extension, and the GitHub Action.
12
12
 
13
13
  ---
14
14
 
15
+ ## Get started in 60 seconds
16
+
17
+ Wire Cipherwake into your CI so every PR gets a Trust Diff comment when your domain's public trust posture changes.
18
+
19
+ **One command does almost everything:**
20
+
21
+ ```bash
22
+ npx pqcheck onboard cipherwake.io
23
+ ```
24
+
25
+ That runs in sequence: scan your domain → write the GitHub Action workflow → capture a vendor lockfile → generate a release checklist → open your browser to the API-key page. You finish by adding the API key as a repo secret + committing.
26
+
27
+ **Or step-by-step if you prefer:**
28
+
29
+ ```bash
30
+ # 1. Scaffold a GitHub Actions workflow (interactive prompts)
31
+ npx pqcheck init
32
+
33
+ # 2. Generate a free API key at https://cipherwake.io/account#api-keys
34
+ # (Free tier: 30 Trust Diff calls/month)
35
+
36
+ # 3. Add the key as a repo secret:
37
+ # GitHub → Settings → Secrets → Actions → New secret
38
+ # Name: CIPHERWAKE_API_KEY Value: qpk_...
39
+
40
+ # 4. Commit + push
41
+ git add .github/workflows/cipherwake.yml
42
+ git commit -m "ci: add Cipherwake Trust Diff gate"
43
+ git push
44
+ ```
45
+
46
+ That's it. Open a PR and Cipherwake comments inline when cert / SPKI / HSTS / CSP / DMARC / vendor scripts drift since your baseline.
47
+
48
+ **Want more?**
49
+ - Pre-commit hook: `npx pqcheck deploy-check <domain>` before every deploy
50
+ - Release ritual: `npx pqcheck release-checklist <domain>` for your release notes
51
+ - Vendor lockfile: `npx pqcheck vendors export <domain>` to commit `cipherwake.vendors.json` and fail PRs introducing new third-party scripts
52
+
53
+ ---
54
+
55
+ ## What's new in 0.12.0
56
+
57
+ **Developer habit-loop bundle (locked 2026-05-16).** Five new subcommands that put Cipherwake where developers already work: PRs, CI, release notes, vendor allowlists. Free tier covers all of them within the 30 Trust Diff calls/month quota.
58
+
59
+ - `pqcheck init` — interactive scaffold for `.github/workflows/cipherwake.yml`. Prompts for domain, fail-on severity, baseline. No copy-paste from docs required.
60
+ - `pqcheck deploy-check <domain>` — pre-deploy Trust Diff gate with deploy-friendly framing. Uses last-scan as default baseline. Same exit semantics as `trust-diff`.
61
+ - `pqcheck release-checklist [domain]` — markdown checklist for release notes. Offline, no API call.
62
+ - `pqcheck vendors export <domain>` — write `cipherwake.vendors.json` from currently observed third-party origins. Like `package-lock.json` for vendor scripts.
63
+ - `pqcheck vendors check <domain>` — CI gate; exits **4** when new origins appear that aren't in the lockfile.
64
+ - `pqcheck vendors sync <domain>` — Starter+ only; pulls your dashboard-managed approved-vendor allowlist into the lockfile.
65
+
66
+ Plus: the GitHub Action v3.1 now posts a **sticky PR comment** with Trust Diff results when `comment-on-pr: true` is set, and `/r/<domain>` has a "Copy as GitHub issue" button on every finding.
67
+
68
+ ## What's new in 0.11.0
69
+
70
+ **Trust Diff subcommand** — `npx pqcheck trust-diff <domain>` calls `/api/trust-diff` and gates CI on regression severity vs a configured baseline. SARIF output uploads to GitHub's Code Scanning. Pair with `cipherwakelabs/pqcheck@v3` action `mode: trust-diff` for one-line CI integration.
71
+
15
72
  ## What's new in 0.7.9
16
73
 
17
74
  **CSP verdict + vendor labels on `pqcheck deps`.** The supply-chain table now shows a friendly vendor label (`New Relic · errors` / `Cloudflare · cdn` / `Adobe Fonts · fonts`) per host instead of raw `bam.nr-data.net`-style hostnames, plus a one-line site-wide CSP verdict above the table (`✗ No CSP enforcement` / `⚠ CSP is permissive` / `✓ Strict CSP enforced`). Same data shape ships on `/r/<domain>` and in the browser extension — cross-surface parity for the supply-chain story. See [CHANGELOG.md](./CHANGELOG.md).
@@ -42,11 +99,21 @@ Plus a full ASM check suite for credibility:
42
99
 
43
100
  ```
44
101
  npx pqcheck <domain> Scan + print human-readable report
45
- npx pqcheck lock <domain> Generate quantapact.lock (QXM) committable manifest
102
+ npx pqcheck lock <domain> Generate cipherwake.lock (QXM) committable manifest
46
103
  npx pqcheck deps <domain> Scan all third-party origins on the page (supply-chain HNDL)
47
104
  npx pqcheck diff <old.lock> <new.lock> Compare two QXM lockfiles; exit 2 on regression
48
105
  npx pqcheck history <domain> Show 90-day score history (sparkline + samples)
106
+ npx pqcheck changes <domain> Summarize public attack-surface changes in last 14 days
49
107
  npx pqcheck cert <file.pem> Analyze a local PEM/CRT cert file (offline, no network)
108
+ npx pqcheck trust-diff <domain> Trust Diff vs configured baseline; CI gate (Free: 30/mo)
109
+ npx pqcheck deploy-check <domain> Pre-deploy gate (Trust Diff alias with last-scan baseline)
110
+ npx pqcheck onboard <domain> One-command setup wizard (scan + init + vendors + checklist)
111
+ npx pqcheck init Interactive scaffold for .github/workflows/cipherwake.yml
112
+ npx pqcheck release-checklist [domain] Pre-release trust checklist (markdown, offline)
113
+ npx pqcheck vendors export <domain> Write cipherwake.vendors.json from observed third-party scripts
114
+ npx pqcheck vendors check <domain> CI gate; exit 4 on new origins not in lockfile
115
+ npx pqcheck vendors sync <domain> Pull dashboard allowlist into lockfile (Starter+, needs API key)
116
+ npx pqcheck watch <domain> Add domain to your watched list (needs CIPHERWAKE_API_KEY)
50
117
  ```
51
118
 
52
119
  ### Multi-domain
@@ -81,7 +148,7 @@ npx pqcheck --file domains.txt Bulk scan from a newline-separated
81
148
  ### Subcommand-specific flags
82
149
 
83
150
  **`pqcheck deps`:**
84
- - `--lock` — Also write `quantapact-deps.lock` + `.md`
151
+ - `--lock` — Also write `cipherwake-deps.lock` + `.md`
85
152
  - `-o <dir>` — Output directory for `--lock` files
86
153
  - `--max=<N>` — Max third parties to scan (default 20)
87
154
  - `--allowlist <file>` — Exit **3** if any third-party not in allowlist (CI vendor-risk gate)
@@ -160,13 +227,15 @@ Like SBOM, `package-lock.json`, or `cargo audit` outputs — track quantum expos
160
227
  ```bash
161
228
  npx pqcheck lock yourcompany.com
162
229
  # Writes:
163
- # quantapact.lock — stable JSON manifest
164
- # quantapact-report.md — human-readable summary (renders on GitHub)
230
+ # cipherwake.lock — stable JSON manifest
231
+ # cipherwake-report.md — human-readable summary (renders on GitHub)
165
232
  ```
166
233
 
167
234
  Commit both files. Use `npx pqcheck diff old.lock new.lock` in CI to surface regressions in PR comments.
168
235
 
169
- Schema documented at [quantapact.com/schemas/qxm/v1](https://quantapact.com/methodology/qxm).
236
+ > **Filename history.** This tool was previously named Quantapact and earlier versions wrote `quantapact.lock` + `quantapact-report.md`. Both names work forever — `pqcheck lock` auto-detects an existing legacy lockfile and overwrites it in place rather than silently creating a second file in your repo. New repos get the new `cipherwake.lock` default. No migration required.
237
+
238
+ Schema documented at [cipherwake.io/schemas/qxm/v1](https://cipherwake.io/methodology/qxm).
170
239
 
171
240
  ### Supply-chain dependency scanning
172
241
 
@@ -175,41 +244,41 @@ npx pqcheck deps stripe.com
175
244
  # Output: every third-party origin on stripe.com (analytics, CDN, fonts, etc.) graded for quantum risk
176
245
  ```
177
246
 
178
- Add `--lock` to write `quantapact-deps.lock` + `.md` for committing or PR comparison. Add `--allowlist file.txt` to gate CI on vendor approval.
247
+ Add `--lock` to write `cipherwake-deps.lock` + `.md` for committing or PR comparison. Add `--allowlist file.txt` to gate CI on vendor approval.
179
248
 
180
249
  ## Companion surfaces
181
250
 
182
- This CLI is one of four ways to consume the [Decryption Blast Radius API](https://quantapact.com/api):
251
+ This CLI is one of four ways to consume the [Decryption Blast Radius API](https://cipherwake.io/api):
183
252
 
184
253
  | Surface | Where |
185
254
  |---|---|
186
255
  | **CLI** (this package) | `npx pqcheck` |
187
256
  | **Browser extension** | Chrome Web Store / Firefox AMO / Edge — toolbar badge per tab + dependency analysis |
188
- | **GitHub Action** | [`quantapact/pqcheck/action@main`](https://github.com/quantapact/pqcheck/tree/main/action) — PR comments, SARIF upload, lockfile generation |
189
- | **Slack `/pqcheck`** | [Install on workspace](https://quantapact.com/install-slack) |
190
- | **Web** | [quantapact.com](https://quantapact.com) — share-friendly URLs at `/r/<domain>` |
257
+ | **GitHub Action** | [`cipherwake-io/pqcheck/action@main`](https://github.com/cipherwake-io/pqcheck/tree/main/action) — PR comments, SARIF upload, lockfile generation |
258
+ | **Slack `/pqcheck`** | [Install on workspace](https://cipherwake.io/install-slack) |
259
+ | **Web** | [cipherwake.io](https://cipherwake.io) — share-friendly URLs at `/r/<domain>` |
191
260
 
192
261
  ## Public API
193
262
 
194
- `pqcheck` is a wrapper around the public Quantapact API. You can also call the API directly:
263
+ `pqcheck` is a wrapper around the public Cipherwake API. You can also call the API directly:
195
264
 
196
265
  ```bash
197
- curl -s "https://www.quantapact.com/api/scan?domain=stripe.com" | jq '.grade, .score'
266
+ curl -s "https://www.cipherwake.io/api/scan?domain=stripe.com" | jq '.grade, .score'
198
267
  ```
199
268
 
200
- Full API reference at [quantapact.com/api](https://quantapact.com/api).
269
+ Full API reference at [cipherwake.io/api](https://cipherwake.io/api).
201
270
 
202
- **Rate limits:** 300 scans per hour per IP, 20 `--fresh` (force-refresh) scans per hour per IP. No API key required. Returns HTTP 429 if exceeded — back off and retry, or [let us know via the feedback form](https://quantapact.com/feedback) if you need higher limits (we're prioritizing the API tier based on real demand).
271
+ **Rate limits:** 300 scans per hour per IP, 20 `--fresh` (force-refresh) scans per hour per IP. No API key required. Returns HTTP 429 if exceeded — back off and retry, or [let us know via the feedback form](https://cipherwake.io/feedback) if you need higher limits (we're prioritizing the API tier based on real demand).
203
272
 
204
273
  ## Methodology
205
274
 
206
275
  Decryption Blast Radius scoring methodology is fully open. Component weights, PQC discount math, the "what we DON'T claim" sections, edge cases — all documented:
207
276
 
208
- - [Decryption Blast Radius](https://quantapact.com/methodology/decryption-blast-radius) — core methodology
209
- - [Score components](https://quantapact.com/methodology/score-components) — the 4-bar weighted breakdown + PQC discount
210
- - [QXM lockfile schema](https://quantapact.com/methodology/qxm) — committable manifest format
211
- - [Browser extension methodology](https://quantapact.com/methodology/browser-extension) — supply-chain HNDL detection logic
212
- - [Methodology library](https://quantapact.com/methodology) — full index
277
+ - [Decryption Blast Radius](https://cipherwake.io/methodology/decryption-blast-radius) — core methodology
278
+ - [Score components](https://cipherwake.io/methodology/score-components) — the 4-bar weighted breakdown + PQC discount
279
+ - [QXM lockfile schema](https://cipherwake.io/methodology/qxm) — committable manifest format
280
+ - [Browser extension methodology](https://cipherwake.io/methodology/browser-extension) — supply-chain HNDL detection logic
281
+ - [Methodology library](https://cipherwake.io/methodology) — full index
213
282
 
214
283
  ## Versioning + stability
215
284
 
@@ -219,20 +288,20 @@ The CLI follows the same policy — output formats are stable across minor versi
219
288
 
220
289
  ## Privacy
221
290
 
222
- `pqcheck` sends the domain you scan to `quantapact.com/api/scan` (so the TLS handshake can be performed from the public internet). No other data is sent — no email, no client-side identifier. The server logs anonymized analytics: domain, hashed IP (for rate limiting), user-agent. We don't track individual users across scans. See [quantapact.com/privacy](https://quantapact.com/privacy).
291
+ `pqcheck` sends the domain you scan to `cipherwake.io/api/scan` (so the TLS handshake can be performed from the public internet). No other data is sent — no email, no client-side identifier. The server logs anonymized analytics: domain, hashed IP (for rate limiting), user-agent. We don't track individual users across scans. See [cipherwake.io/privacy](https://cipherwake.io/privacy).
223
292
 
224
293
  ## CI integration
225
294
 
226
295
  ```yaml
227
296
  # .github/workflows/quantum-risk-gate.yml
228
- - name: Quantapact public-surface gate
297
+ - name: Cipherwake public-surface gate
229
298
  run: npx pqcheck@latest mycompany.com --threshold 7
230
299
  ```
231
300
 
232
- For richer integration (sticky PR comments, SARIF upload to Code Scanning, lockfile diff on regression), use the [GitHub Action](https://github.com/quantapact/pqcheck/tree/main/action):
301
+ For richer integration (sticky PR comments, SARIF upload to Code Scanning, lockfile diff on regression), use the [GitHub Action](https://github.com/cipherwake-io/pqcheck/tree/main/action):
233
302
 
234
303
  ```yaml
235
- - uses: quantapact/pqcheck/action@main
304
+ - uses: cipherwake-io/pqcheck/action@main
236
305
  with:
237
306
  domain: mycompany.com
238
307
  threshold: '7'
@@ -249,12 +318,12 @@ For richer integration (sticky PR comments, SARIF upload to Code Scanning, lockf
249
318
 
250
319
  ## License
251
320
 
252
- MIT. © 2026 Quantapact.
321
+ MIT. © 2026 Cipherwake.
253
322
 
254
323
  ---
255
324
 
256
- **Source:** [github.com/quantapact/pqcheck](https://github.com/quantapact/pqcheck)
325
+ **Source:** [github.com/cipherwake-io/pqcheck](https://github.com/cipherwake-io/pqcheck)
257
326
 
258
327
  **Changelog:** [CHANGELOG.md](./CHANGELOG.md) for version-by-version release notes.
259
328
 
260
- **Issues / feedback:** [quantapact.com/feedback](https://quantapact.com/feedback) or open an issue on the repo.
329
+ **Issues / feedback:** [cipherwake.io/feedback](https://cipherwake.io/feedback) or open an issue on the repo.