pqcheck 0.12.0 → 0.13.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.
package/README.md CHANGED
@@ -254,7 +254,7 @@ This CLI is one of four ways to consume the [Decryption Blast Radius API](https:
254
254
  |---|---|
255
255
  | **CLI** (this package) | `npx pqcheck` |
256
256
  | **Browser extension** | Chrome Web Store / Firefox AMO / Edge — toolbar badge per tab + dependency analysis |
257
- | **GitHub Action** | [`cipherwake-io/pqcheck/action@main`](https://github.com/cipherwake-io/pqcheck/tree/main/action) — PR comments, SARIF upload, lockfile generation |
257
+ | **GitHub Action** | [`cipherwakelabs/pqcheck/action@main`](https://github.com/cipherwakelabs/pqcheck/tree/main/action) — PR comments, SARIF upload, lockfile generation |
258
258
  | **Slack `/pqcheck`** | [Install on workspace](https://cipherwake.io/install-slack) |
259
259
  | **Web** | [cipherwake.io](https://cipherwake.io) — share-friendly URLs at `/r/<domain>` |
260
260
 
@@ -298,10 +298,10 @@ The CLI follows the same policy — output formats are stable across minor versi
298
298
  run: npx pqcheck@latest mycompany.com --threshold 7
299
299
  ```
300
300
 
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):
301
+ For richer integration (sticky PR comments, SARIF upload to Code Scanning, lockfile diff on regression), use the [GitHub Action](https://github.com/cipherwakelabs/pqcheck/tree/main/action):
302
302
 
303
303
  ```yaml
304
- - uses: cipherwake-io/pqcheck/action@main
304
+ - uses: cipherwakelabs/pqcheck/action@main
305
305
  with:
306
306
  domain: mycompany.com
307
307
  threshold: '7'
@@ -322,7 +322,7 @@ MIT. © 2026 Cipherwake.
322
322
 
323
323
  ---
324
324
 
325
- **Source:** [github.com/cipherwake-io/pqcheck](https://github.com/cipherwake-io/pqcheck)
325
+ **Source:** [github.com/cipherwakelabs/pqcheck](https://github.com/cipherwakelabs/pqcheck)
326
326
 
327
327
  **Changelog:** [CHANGELOG.md](./CHANGELOG.md) for version-by-version release notes.
328
328
 
package/bin/pqcheck.js CHANGED
@@ -2715,6 +2715,7 @@ on:
2715
2715
 
2716
2716
  permissions:
2717
2717
  contents: read
2718
+ id-token: write # required for OIDC-based metering (Free=30 calls/repo/mo, no API key needed)
2718
2719
  security-events: write # required for SARIF upload to Code Scanning
2719
2720
  pull-requests: write # required for sticky PR comment (Action v3.1+)
2720
2721
 
@@ -2729,8 +2730,11 @@ jobs:
2729
2730
  domain: ${domain}
2730
2731
  baseline: ${baseline}
2731
2732
  fail-on: ${failOn}
2732
- env:
2733
- CIPHERWAKE_API_KEY: \${{ secrets.CIPHERWAKE_API_KEY }}
2733
+ # No env/secrets needed for Free tier — the action uses the
2734
+ # workflow's id-token: write permission to fetch a GitHub-signed
2735
+ # OIDC token and meters per repo (30 calls/mo, no setup).
2736
+ # If you want higher limits, link this repo to a paid Cipherwake
2737
+ # account at https://cipherwake.io/account → Linked repos.
2734
2738
  `;
2735
2739
  }
2736
2740
 
@@ -3300,33 +3304,19 @@ async function runOnboardCommand(args) {
3300
3304
  }
3301
3305
 
3302
3306
  // -------------------------------------------------------------------------
3303
- // Browser open + final next-steps
3307
+ // Final next-steps (v0.13 OIDC path — no API key needed for Free tier)
3304
3308
  // -------------------------------------------------------------------------
3305
- // Query MUST come before fragment per RFC 3986. The previous order
3306
- // `#api-keys?utm_source=onboard` made utm_source part of the fragment
3307
- // (which never reaches the server), so attribution analytics never fired.
3308
- const apiKeyUrl = `${API_BASE}/account?utm_source=onboard#api-keys`;
3309
- console.log(color("bold", " ✓ Setup files written. Three steps remain:"));
3310
- console.log("");
3311
- console.log(` ${color("dim", "1.")} ${color("bold", "Get a free API key")} (30 Trust Diff calls/month)`);
3312
- console.log(` ${color("violet", apiKeyUrl)}`);
3313
- if (!noOpen) {
3314
- const opened = await tryOpenBrowser(apiKeyUrl);
3315
- if (opened) {
3316
- console.log(` ${color("dim", "(opened in your browser — sign in / sign up there)")}`);
3317
- } else {
3318
- console.log(` ${color("dim", "(copy the URL above; --no-open suppresses this hint)")}`);
3319
- }
3320
- }
3321
- console.log("");
3322
- console.log(` ${color("dim", "2.")} ${color("bold", "Add the key as a GitHub repo secret")}`);
3323
- console.log(` ${color("dim", "GitHub → Settings → Secrets and variables → Actions → New repository secret")}`);
3324
- console.log(` ${color("dim", "Name: CIPHERWAKE_API_KEY Value: qpk_... (from step 1)")}`);
3325
- console.log("");
3326
- console.log(` ${color("dim", "3.")} ${color("bold", "Commit + push")}`);
3327
- // R41 Q1.15 (locked 2026-05-16): build the git-add file list as an array
3328
- // and join, so we don't print trailing-space args when --skip flags are
3329
- // used. Harmless bash semantics either way; cleaner output.
3309
+ // Pre-v0.13 this step opened a browser to the API-key page + asked the user
3310
+ // to paste the key as a GitHub repo secret. With Action v3.2 + OIDC repo
3311
+ // metering, the scaffolded workflow has `permissions: { id-token: write }`
3312
+ // and the action fetches a GitHub-signed token automatically — no key, no
3313
+ // secret, no browser hop. Free tier is 30 calls/repo/mo, enforced server-
3314
+ // side via the `meter_gh_action_call` RPC against `gh_action_repo_quota`.
3315
+ // For higher limits, the user links this repo to a paid account at /account
3316
+ // (one-time OAuth) — still no API key in CI.
3317
+ console.log(color("bold", " ✓ Setup files written. Two steps remain:"));
3318
+ console.log("");
3319
+ console.log(` ${color("dim", "1.")} ${color("bold", "Commit + push")} (no API key, no secrets needed for the Free tier)`);
3330
3320
  const filesToAdd = [".github/workflows/cipherwake.yml"];
3331
3321
  if (!skipVendors) filesToAdd.push("cipherwake.vendors.json");
3332
3322
  if (!skipChecklist) filesToAdd.push("CIPHERWAKE_CHECKLIST.md");
@@ -3334,8 +3324,21 @@ async function runOnboardCommand(args) {
3334
3324
  console.log(` ${color("dim", "$")} git commit -m "ci: add Cipherwake Trust Diff gate"`);
3335
3325
  console.log(` ${color("dim", "$")} git push`);
3336
3326
  console.log("");
3337
- console.log(` ${color("dim", "Open a PR after pushing and Cipherwake will comment inline within ~60s of the workflow firing.")}`);
3338
- console.log("");
3327
+ console.log(` ${color("dim", "2.")} ${color("bold", "Open a PR")}`);
3328
+ console.log(` ${color("dim", "Cipherwake will comment inline within ~60s of the workflow firing. The action uses GitHub OIDC to meter usage per repo (Free = 30 calls/mo).")}`);
3329
+ console.log("");
3330
+ // R48 (post-R47 review MAJOR #6): the /account → "Linked repos" UI is
3331
+ // not yet shipped (out of R47 scope). Pointing users to a nonexistent
3332
+ // page-hash would create a broken growth path at the moment of intent.
3333
+ // Route through the feedback form until the linking UI lands.
3334
+ console.log(` ${color("dim", "Want higher limits (1K/10K/50K Trust Diff calls/mo)?")}`);
3335
+ console.log(` ${color("violet", `${API_BASE}/feedback?topic=linked-repos`)}`);
3336
+ console.log(` ${color("dim", "Repo-linking UI is rolling out — request early access via the form.")}`);
3337
+ console.log("");
3338
+ // R41 fix #4 carried forward: --strict gates exit code on step failures.
3339
+ // noOpen flag is now a no-op since we don't open a browser, but we keep it
3340
+ // accepted for backward compat with users who already pass --no-open.
3341
+ void noOpen;
3339
3342
  // R41 fix #4: --strict makes onboard exit non-zero if any step failed.
3340
3343
  // Default (best-effort) exit 0 keeps the wizard friendly for first-time
3341
3344
  // human setup — the visible yellow warnings tell them what to retry.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pqcheck",
3
- "version": "0.12.0",
4
- "description": "Decryption Blast Radius scanner find out how much of your data unlocks when quantum decryption arrives.",
3
+ "version": "0.13.0",
4
+ "description": "HTTPS posture scanner with Trust Diff for CI, vendor lockfile + drift alerts, cross-tenant key map, and HNDL/quantum-decryption risk scoring. Free, no signup.",
5
5
  "keywords": [
6
6
  "post-quantum",
7
7
  "cryptography",
@@ -21,7 +21,7 @@
21
21
  "bugs": "https://cipherwake.io",
22
22
  "repository": {
23
23
  "type": "git",
24
- "url": "https://github.com/cipherwake-io/pqcheck.git",
24
+ "url": "https://github.com/cipherwakelabs/pqcheck.git",
25
25
  "directory": "cli"
26
26
  },
27
27
  "license": "MIT",