plumbbob 0.9.3 → 0.10.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/.claude-plugin/plugin.json +1 -1
- package/README.md +92 -89
- package/dist/cli-core.js +25 -8
- package/dist/cli.js +1 -1
- package/dist/lib/agents.js +26 -26
- package/dist/lib/buildlog.js +11 -11
- package/dist/lib/buildlogsync.js +8 -8
- package/dist/lib/check.js +55 -22
- package/dist/lib/commitbody.js +72 -0
- package/dist/lib/commitmsg.js +7 -7
- package/dist/lib/git.js +44 -15
- package/dist/lib/intent.js +21 -20
- package/dist/lib/latch.js +19 -19
- package/dist/lib/orient.js +36 -17
- package/dist/lib/reentry.js +70 -0
- package/dist/lib/settings.js +16 -16
- package/dist/lib/sidecar.js +54 -54
- package/dist/lib/templates.js +1 -1
- package/dist/verbs/agent.js +27 -27
- package/dist/verbs/build.js +9 -9
- package/dist/verbs/check.js +6 -6
- package/dist/verbs/checkpoint.js +48 -47
- package/dist/verbs/doctor.js +31 -30
- package/dist/verbs/finish.js +28 -41
- package/dist/verbs/handoff.js +9 -8
- package/dist/verbs/init.js +9 -9
- package/dist/verbs/park.js +3 -3
- package/dist/verbs/recover.js +297 -0
- package/dist/verbs/revert.js +13 -13
- package/dist/verbs/spike.js +25 -19
- package/dist/verbs/start.js +49 -19
- package/dist/verbs/status.js +8 -8
- package/dist/verbs/turn.js +16 -16
- package/dist/verbs/use.js +4 -4
- package/hooks/post-edit.sh +4 -4
- package/hooks/pre-bash-commit.sh +3 -3
- package/node_modules/checkride/.claude-plugin/plugin.json +11 -0
- package/node_modules/checkride/CHANGELOG.md +1404 -0
- package/node_modules/checkride/LICENSE +201 -21
- package/node_modules/checkride/README.md +197 -38
- package/node_modules/checkride/dist/__tests__/fixtures/released-stanzas.d.ts +15 -0
- package/node_modules/checkride/dist/__tests__/fixtures/released-stanzas.d.ts.map +1 -0
- package/node_modules/checkride/dist/__tests__/fixtures/released-stanzas.js +17 -0
- package/node_modules/checkride/dist/__tests__/fixtures/released-stanzas.js.map +1 -0
- package/node_modules/checkride/dist/adapters.d.ts +30 -10
- package/node_modules/checkride/dist/adapters.d.ts.map +1 -1
- package/node_modules/checkride/dist/adapters.js +62 -23
- package/node_modules/checkride/dist/adapters.js.map +1 -1
- package/node_modules/checkride/dist/agent-setup/claude.d.ts +88 -0
- package/node_modules/checkride/dist/agent-setup/claude.d.ts.map +1 -0
- package/node_modules/checkride/dist/agent-setup/claude.js +305 -0
- package/node_modules/checkride/dist/agent-setup/claude.js.map +1 -0
- package/node_modules/checkride/dist/agent-setup/command.d.ts +43 -0
- package/node_modules/checkride/dist/agent-setup/command.d.ts.map +1 -0
- package/node_modules/checkride/dist/agent-setup/command.js +77 -0
- package/node_modules/checkride/dist/agent-setup/command.js.map +1 -0
- package/node_modules/checkride/dist/agent-setup/cursor.d.ts +69 -0
- package/node_modules/checkride/dist/agent-setup/cursor.d.ts.map +1 -0
- package/node_modules/checkride/dist/agent-setup/cursor.js +247 -0
- package/node_modules/checkride/dist/agent-setup/cursor.js.map +1 -0
- package/node_modules/checkride/dist/agent-setup/files.d.ts +50 -0
- package/node_modules/checkride/dist/agent-setup/files.d.ts.map +1 -0
- package/node_modules/checkride/dist/agent-setup/files.js +80 -0
- package/node_modules/checkride/dist/agent-setup/files.js.map +1 -0
- package/node_modules/checkride/dist/agent-setup/harness.d.ts +101 -0
- package/node_modules/checkride/dist/agent-setup/harness.d.ts.map +1 -0
- package/node_modules/checkride/dist/agent-setup/harness.js +93 -0
- package/node_modules/checkride/dist/agent-setup/harness.js.map +1 -0
- package/node_modules/checkride/dist/agent-setup/hook.d.ts +45 -52
- package/node_modules/checkride/dist/agent-setup/hook.d.ts.map +1 -1
- package/node_modules/checkride/dist/agent-setup/hook.js +64 -95
- package/node_modules/checkride/dist/agent-setup/hook.js.map +1 -1
- package/node_modules/checkride/dist/agent-setup/index.d.ts +10 -4
- package/node_modules/checkride/dist/agent-setup/index.d.ts.map +1 -1
- package/node_modules/checkride/dist/agent-setup/index.js +9 -4
- package/node_modules/checkride/dist/agent-setup/index.js.map +1 -1
- package/node_modules/checkride/dist/agent-setup/scripts.d.ts +81 -0
- package/node_modules/checkride/dist/agent-setup/scripts.d.ts.map +1 -0
- package/node_modules/checkride/dist/agent-setup/scripts.js +604 -0
- package/node_modules/checkride/dist/agent-setup/scripts.js.map +1 -0
- package/node_modules/checkride/dist/agent-setup/skills.d.ts +31 -0
- package/node_modules/checkride/dist/agent-setup/skills.d.ts.map +1 -0
- package/node_modules/checkride/dist/agent-setup/skills.js +56 -0
- package/node_modules/checkride/dist/agent-setup/skills.js.map +1 -0
- package/node_modules/checkride/dist/artifacts/configured.d.ts +30 -0
- package/node_modules/checkride/dist/artifacts/configured.d.ts.map +1 -0
- package/node_modules/checkride/dist/artifacts/configured.js +45 -0
- package/node_modules/checkride/dist/artifacts/configured.js.map +1 -0
- package/node_modules/checkride/dist/artifacts/format.d.ts +33 -0
- package/node_modules/checkride/dist/artifacts/format.d.ts.map +1 -0
- package/node_modules/checkride/dist/artifacts/format.js +56 -0
- package/node_modules/checkride/dist/artifacts/format.js.map +1 -0
- package/node_modules/checkride/dist/artifacts/freshness.d.ts +32 -0
- package/node_modules/checkride/dist/artifacts/freshness.d.ts.map +1 -0
- package/node_modules/checkride/dist/artifacts/freshness.js +37 -0
- package/node_modules/checkride/dist/artifacts/freshness.js.map +1 -0
- package/node_modules/checkride/dist/artifacts/index.d.ts +22 -0
- package/node_modules/checkride/dist/artifacts/index.d.ts.map +1 -0
- package/node_modules/checkride/dist/artifacts/index.js +19 -0
- package/node_modules/checkride/dist/artifacts/index.js.map +1 -0
- package/node_modules/checkride/dist/artifacts/json.d.ts +31 -0
- package/node_modules/checkride/dist/artifacts/json.d.ts.map +1 -0
- package/node_modules/checkride/dist/artifacts/json.js +47 -0
- package/node_modules/checkride/dist/artifacts/json.js.map +1 -0
- package/node_modules/checkride/dist/artifacts/raw.d.ts +60 -0
- package/node_modules/checkride/dist/artifacts/raw.d.ts.map +1 -0
- package/node_modules/checkride/dist/artifacts/raw.js +91 -0
- package/node_modules/checkride/dist/artifacts/raw.js.map +1 -0
- package/node_modules/checkride/dist/artifacts/summary.d.ts +69 -0
- package/node_modules/checkride/dist/artifacts/summary.d.ts.map +1 -0
- package/node_modules/checkride/dist/artifacts/summary.js +108 -0
- package/node_modules/checkride/dist/artifacts/summary.js.map +1 -0
- package/node_modules/checkride/dist/atomic.d.ts +16 -1
- package/node_modules/checkride/dist/atomic.d.ts.map +1 -1
- package/node_modules/checkride/dist/atomic.js +25 -3
- package/node_modules/checkride/dist/atomic.js.map +1 -1
- package/node_modules/checkride/dist/baseline/fallow.d.ts +9 -5
- package/node_modules/checkride/dist/baseline/fallow.d.ts.map +1 -1
- package/node_modules/checkride/dist/baseline/fallow.js +163 -60
- package/node_modules/checkride/dist/baseline/fallow.js.map +1 -1
- package/node_modules/checkride/dist/baseline/fingerprint.d.ts +20 -11
- package/node_modules/checkride/dist/baseline/fingerprint.d.ts.map +1 -1
- package/node_modules/checkride/dist/baseline/fingerprint.js +73 -23
- package/node_modules/checkride/dist/baseline/fingerprint.js.map +1 -1
- package/node_modules/checkride/dist/baseline/history.d.ts +98 -0
- package/node_modules/checkride/dist/baseline/history.d.ts.map +1 -0
- package/node_modules/checkride/dist/baseline/history.js +232 -0
- package/node_modules/checkride/dist/baseline/history.js.map +1 -0
- package/node_modules/checkride/dist/baseline/index.d.ts +7 -5
- package/node_modules/checkride/dist/baseline/index.d.ts.map +1 -1
- package/node_modules/checkride/dist/baseline/index.js +5 -4
- package/node_modules/checkride/dist/baseline/index.js.map +1 -1
- package/node_modules/checkride/dist/baseline/store.d.ts +41 -10
- package/node_modules/checkride/dist/baseline/store.d.ts.map +1 -1
- package/node_modules/checkride/dist/baseline/store.js +65 -24
- package/node_modules/checkride/dist/baseline/store.js.map +1 -1
- package/node_modules/checkride/dist/baseline-command.d.ts +5 -5
- package/node_modules/checkride/dist/baseline-command.js +7 -7
- package/node_modules/checkride/dist/baseline-command.js.map +1 -1
- package/node_modules/checkride/dist/cli.d.ts +21 -4
- package/node_modules/checkride/dist/cli.d.ts.map +1 -1
- package/node_modules/checkride/dist/cli.js +350 -36
- package/node_modules/checkride/dist/cli.js.map +1 -1
- package/node_modules/checkride/dist/config.d.ts +114 -9
- package/node_modules/checkride/dist/config.d.ts.map +1 -1
- package/node_modules/checkride/dist/config.js +142 -23
- package/node_modules/checkride/dist/config.js.map +1 -1
- package/node_modules/checkride/dist/digest/digest.d.ts +5 -5
- package/node_modules/checkride/dist/digest/digest.js +6 -6
- package/node_modules/checkride/dist/digest/index.d.ts +2 -2
- package/node_modules/checkride/dist/digest/index.js +2 -2
- package/node_modules/checkride/dist/doctor.d.ts +27 -6
- package/node_modules/checkride/dist/doctor.d.ts.map +1 -1
- package/node_modules/checkride/dist/doctor.js +231 -27
- package/node_modules/checkride/dist/doctor.js.map +1 -1
- package/node_modules/checkride/dist/gate.d.ts +180 -0
- package/node_modules/checkride/dist/gate.d.ts.map +1 -0
- package/node_modules/checkride/dist/gate.js +617 -0
- package/node_modules/checkride/dist/gate.js.map +1 -0
- package/node_modules/checkride/dist/init.d.ts +79 -12
- package/node_modules/checkride/dist/init.d.ts.map +1 -1
- package/node_modules/checkride/dist/init.js +385 -81
- package/node_modules/checkride/dist/init.js.map +1 -1
- package/node_modules/checkride/dist/json.d.ts +21 -0
- package/node_modules/checkride/dist/json.d.ts.map +1 -0
- package/node_modules/checkride/dist/json.js +21 -0
- package/node_modules/checkride/dist/json.js.map +1 -0
- package/node_modules/checkride/dist/links.d.ts +31 -5
- package/node_modules/checkride/dist/links.d.ts.map +1 -1
- package/node_modules/checkride/dist/links.js +141 -32
- package/node_modules/checkride/dist/links.js.map +1 -1
- package/node_modules/checkride/dist/node-pin.d.ts +129 -0
- package/node_modules/checkride/dist/node-pin.d.ts.map +1 -0
- package/node_modules/checkride/dist/node-pin.js +211 -0
- package/node_modules/checkride/dist/node-pin.js.map +1 -0
- package/node_modules/checkride/dist/orchestrator.d.ts +53 -10
- package/node_modules/checkride/dist/orchestrator.d.ts.map +1 -1
- package/node_modules/checkride/dist/orchestrator.js +312 -113
- package/node_modules/checkride/dist/orchestrator.js.map +1 -1
- package/node_modules/checkride/dist/pack.d.ts +8 -9
- package/node_modules/checkride/dist/pack.d.ts.map +1 -1
- package/node_modules/checkride/dist/pack.js +53 -17
- package/node_modules/checkride/dist/pack.js.map +1 -1
- package/node_modules/checkride/dist/pm/detect.d.ts +6 -1
- package/node_modules/checkride/dist/pm/detect.d.ts.map +1 -1
- package/node_modules/checkride/dist/pm/detect.js +6 -1
- package/node_modules/checkride/dist/pm/detect.js.map +1 -1
- package/node_modules/checkride/dist/pm/index.d.ts +7 -2
- package/node_modules/checkride/dist/pm/index.d.ts.map +1 -1
- package/node_modules/checkride/dist/pm/index.js +6 -2
- package/node_modules/checkride/dist/pm/index.js.map +1 -1
- package/node_modules/checkride/dist/pm/launch.d.ts +72 -0
- package/node_modules/checkride/dist/pm/launch.d.ts.map +1 -0
- package/node_modules/checkride/dist/pm/launch.js +108 -0
- package/node_modules/checkride/dist/pm/launch.js.map +1 -0
- package/node_modules/checkride/dist/pm/tools.d.ts +73 -0
- package/node_modules/checkride/dist/pm/tools.d.ts.map +1 -0
- package/node_modules/checkride/dist/pm/tools.js +124 -0
- package/node_modules/checkride/dist/pm/tools.js.map +1 -0
- package/node_modules/checkride/dist/pm/translate.d.ts +35 -9
- package/node_modules/checkride/dist/pm/translate.d.ts.map +1 -1
- package/node_modules/checkride/dist/pm/translate.js +78 -18
- package/node_modules/checkride/dist/pm/translate.js.map +1 -1
- package/node_modules/checkride/dist/proc.d.ts +30 -0
- package/node_modules/checkride/dist/proc.d.ts.map +1 -0
- package/node_modules/checkride/dist/proc.js +42 -0
- package/node_modules/checkride/dist/proc.js.map +1 -0
- package/node_modules/checkride/dist/qa/cli.d.ts +20 -0
- package/node_modules/checkride/dist/qa/cli.d.ts.map +1 -0
- package/node_modules/checkride/dist/qa/cli.js +24 -0
- package/node_modules/checkride/dist/qa/cli.js.map +1 -0
- package/node_modules/checkride/dist/qa/dead.d.ts +39 -0
- package/node_modules/checkride/dist/qa/dead.d.ts.map +1 -0
- package/node_modules/checkride/dist/qa/dead.js +88 -0
- package/node_modules/checkride/dist/qa/dead.js.map +1 -0
- package/node_modules/checkride/dist/qa/dupes.d.ts +45 -0
- package/node_modules/checkride/dist/qa/dupes.d.ts.map +1 -0
- package/node_modules/checkride/dist/qa/dupes.js +62 -0
- package/node_modules/checkride/dist/qa/dupes.js.map +1 -0
- package/node_modules/checkride/dist/qa/health.d.ts +85 -0
- package/node_modules/checkride/dist/qa/health.d.ts.map +1 -0
- package/node_modules/checkride/dist/qa/health.js +109 -0
- package/node_modules/checkride/dist/qa/health.js.map +1 -0
- package/node_modules/checkride/dist/qa/index.d.ts +23 -0
- package/node_modules/checkride/dist/qa/index.d.ts.map +1 -0
- package/node_modules/checkride/dist/qa/index.js +22 -0
- package/node_modules/checkride/dist/qa/index.js.map +1 -0
- package/node_modules/checkride/dist/qa/mutation.d.ts +80 -0
- package/node_modules/checkride/dist/qa/mutation.d.ts.map +1 -0
- package/node_modules/checkride/dist/qa/mutation.js +195 -0
- package/node_modules/checkride/dist/qa/mutation.js.map +1 -0
- package/node_modules/checkride/dist/qa/qa.d.ts +71 -0
- package/node_modules/checkride/dist/qa/qa.d.ts.map +1 -0
- package/node_modules/checkride/dist/qa/qa.js +158 -0
- package/node_modules/checkride/dist/qa/qa.js.map +1 -0
- package/node_modules/checkride/dist/qa/read.d.ts +40 -0
- package/node_modules/checkride/dist/qa/read.d.ts.map +1 -0
- package/node_modules/checkride/dist/qa/read.js +47 -0
- package/node_modules/checkride/dist/qa/read.js.map +1 -0
- package/node_modules/checkride/dist/qa/render.d.ts +26 -0
- package/node_modules/checkride/dist/qa/render.d.ts.map +1 -0
- package/node_modules/checkride/dist/qa/render.js +310 -0
- package/node_modules/checkride/dist/qa/render.js.map +1 -0
- package/node_modules/checkride/dist/recover.d.ts +48 -0
- package/node_modules/checkride/dist/recover.d.ts.map +1 -0
- package/node_modules/checkride/dist/recover.js +220 -0
- package/node_modules/checkride/dist/recover.js.map +1 -0
- package/node_modules/checkride/dist/security.d.ts +45 -0
- package/node_modules/checkride/dist/security.d.ts.map +1 -0
- package/node_modules/checkride/dist/security.js +86 -0
- package/node_modules/checkride/dist/security.js.map +1 -0
- package/node_modules/checkride/dist/smoke.d.ts +6 -6
- package/node_modules/checkride/dist/smoke.js +6 -6
- package/node_modules/checkride/dist/snippets.d.ts +27 -30
- package/node_modules/checkride/dist/snippets.d.ts.map +1 -1
- package/node_modules/checkride/dist/snippets.js +26 -30
- package/node_modules/checkride/dist/snippets.js.map +1 -1
- package/node_modules/checkride/dist/tool-json.d.ts +33 -0
- package/node_modules/checkride/dist/tool-json.d.ts.map +1 -0
- package/node_modules/checkride/dist/tool-json.js +58 -0
- package/node_modules/checkride/dist/tool-json.js.map +1 -0
- package/node_modules/checkride/dist/triage/cli.d.ts +21 -0
- package/node_modules/checkride/dist/triage/cli.d.ts.map +1 -0
- package/node_modules/checkride/dist/triage/cli.js +26 -0
- package/node_modules/checkride/dist/triage/cli.js.map +1 -0
- package/node_modules/checkride/dist/triage/doctor-fold.d.ts +51 -0
- package/node_modules/checkride/dist/triage/doctor-fold.d.ts.map +1 -0
- package/node_modules/checkride/dist/triage/doctor-fold.js +88 -0
- package/node_modules/checkride/dist/triage/doctor-fold.js.map +1 -0
- package/node_modules/checkride/dist/triage/env.d.ts +54 -0
- package/node_modules/checkride/dist/triage/env.d.ts.map +1 -0
- package/node_modules/checkride/dist/triage/env.js +81 -0
- package/node_modules/checkride/dist/triage/env.js.map +1 -0
- package/node_modules/checkride/dist/triage/gate.d.ts +61 -0
- package/node_modules/checkride/dist/triage/gate.d.ts.map +1 -0
- package/node_modules/checkride/dist/triage/gate.js +121 -0
- package/node_modules/checkride/dist/triage/gate.js.map +1 -0
- package/node_modules/checkride/dist/triage/index.d.ts +22 -0
- package/node_modules/checkride/dist/triage/index.d.ts.map +1 -0
- package/node_modules/checkride/dist/triage/index.js +20 -0
- package/node_modules/checkride/dist/triage/index.js.map +1 -0
- package/node_modules/checkride/dist/triage/render.d.ts +19 -0
- package/node_modules/checkride/dist/triage/render.d.ts.map +1 -0
- package/node_modules/checkride/dist/triage/render.js +419 -0
- package/node_modules/checkride/dist/triage/render.js.map +1 -0
- package/node_modules/checkride/dist/triage/triage.d.ts +83 -0
- package/node_modules/checkride/dist/triage/triage.d.ts.map +1 -0
- package/node_modules/checkride/dist/triage/triage.js +131 -0
- package/node_modules/checkride/dist/triage/triage.js.map +1 -0
- package/node_modules/checkride/package.json +18 -15
- package/node_modules/checkride/schema/checkride.config.schema.json +70 -5
- package/node_modules/checkride/schema/checkride.summary.schema.json +1 -1
- package/node_modules/checkride/skills/check/SKILL.md +265 -0
- package/node_modules/checkride/skills/qa/SKILL.md +231 -0
- package/node_modules/checkride/templates/shared/cspell.json +1 -0
- package/node_modules/checkride/templates/shared/oxlintrc.json +1 -1
- package/node_modules/checkride/templates/shared/styles/Repo/Drift.yml +41 -0
- package/node_modules/checkride/templates/shared/styles/Repo/Latin.yml +14 -0
- package/node_modules/checkride/templates/shared/styles/Repo/LyHyphen.yml +28 -0
- package/node_modules/checkride/templates/shared/styles/Repo/Minted.yml +33 -0
- package/node_modules/checkride/templates/shared/styles/Repo/ThereIs.yml +16 -0
- package/node_modules/checkride/templates/shared/styles/Repo/Weasel.yml +26 -0
- package/node_modules/checkride/templates/shared/vale.ini +34 -0
- package/package.json +10 -9
- package/skills/build/SKILL.md +85 -76
- package/skills/doctor/SKILL.md +11 -11
- package/skills/finish/SKILL.md +21 -18
- package/skills/harvest/SKILL.md +13 -11
- package/skills/park/SKILL.md +10 -10
- package/skills/plan/SKILL.md +69 -59
- package/skills/recover/SKILL.md +28 -0
- package/skills/refine/SKILL.md +21 -18
- package/skills/revert/SKILL.md +6 -6
- package/skills/spike/SKILL.md +9 -9
- package/skills/status/SKILL.md +5 -5
- package/skills/step/SKILL.md +20 -15
- package/skills/verify/SKILL.md +56 -46
- package/templates/build-log.md +7 -7
- package/templates/intent.md +52 -41
- package/templates/spike-report.md +10 -10
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Digest module — the token-bounded failure excerpt
|
|
3
|
-
* the module's only public surface
|
|
2
|
+
* Digest module — the token-bounded failure excerpt. This barrel is
|
|
3
|
+
* the module's only public surface: siblings import from `../digest`, never
|
|
4
4
|
* from `./digest.js` directly.
|
|
5
5
|
*/
|
|
6
6
|
export { buildDigest, DIGEST_FILE, writeDigest } from './digest.js';
|
|
@@ -1,20 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `checkride doctor` — read-only environment + tooling verification.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* is writable. It then enumerates *every* catalogue slot — not just the ones the
|
|
4
|
+
* Verifies node/pnpm/git are present at the required versions, the project has
|
|
5
|
+
* been installed, and `.check/` is writable. It then enumerates *every* catalogue slot — not just the ones the
|
|
7
6
|
* default run executes — and reports each slot's enablement (default / opt-in /
|
|
8
7
|
* disabled / unavailable) alongside its tool presence, so off and opt-in slots
|
|
9
8
|
* are visible instead of silently dropped. Renders a human table (or `--json`)
|
|
10
9
|
* and exits 0 when everything required is present, 1 otherwise. Only slots that
|
|
11
10
|
* run by default are required; opt-in/disabled/unavailable slots never fail it.
|
|
12
11
|
*
|
|
12
|
+
* One row deliberately describes a shell this process is not in. `doctor` runs
|
|
13
|
+
* in the user's terminal; the gate runs in a hook, which agent harnesses launch
|
|
14
|
+
* from a non-login shell with a different Node. Reporting only what is true here
|
|
15
|
+
* is how `doctor` said `environment ok` about a repo whose gate could not start
|
|
16
|
+
* — see {@link checkNodePin}.
|
|
17
|
+
*
|
|
13
18
|
* Every environment touch (PATH, fs, package.json) goes through an injectable
|
|
14
19
|
* {@link DoctorEnv}, so the logic is unit-testable without a real toolchain.
|
|
15
20
|
*/
|
|
16
21
|
import type { Adapter, Slot } from './adapters.js';
|
|
17
22
|
import type { CheckrideConfig } from './config.js';
|
|
23
|
+
import type { PinEnv } from './node-pin.js';
|
|
18
24
|
import type { Out } from './orchestrator.js';
|
|
19
25
|
import type { PackageManager } from './pm/index.js';
|
|
20
26
|
export type DoctorStatus = 'ok' | 'outdated' | 'missing' | 'unknown' | 'n/a';
|
|
@@ -55,14 +61,27 @@ export type DoctorResult = {
|
|
|
55
61
|
* kept distinct from `null` (the probe ran but its output could not be parsed) so
|
|
56
62
|
* `doctor` reports "timed out" rather than misdiagnosing a hung tool as a parse failure.
|
|
57
63
|
*/
|
|
58
|
-
export declare const
|
|
59
|
-
/** Result of a `<cmd> --version` probe: raw output, `null` if it failed or could not be parsed, or {@link
|
|
60
|
-
export type VersionProbe = string | typeof
|
|
64
|
+
export declare const PROBE_TIMED_OUT: unique symbol;
|
|
65
|
+
/** Result of a `<cmd> --version` probe: raw output, `null` if it failed or could not be parsed, or {@link PROBE_TIMED_OUT}. */
|
|
66
|
+
export type VersionProbe = string | typeof PROBE_TIMED_OUT | null;
|
|
67
|
+
/**
|
|
68
|
+
* Result of a `<pm> bin <tool>` probe: the resolved path, `null` when the tool
|
|
69
|
+
* is not a dependency, or {@link PROBE_TIMED_OUT}.
|
|
70
|
+
*
|
|
71
|
+
* The timeout is a distinct answer on purpose. Collapsing it into `null` would
|
|
72
|
+
* report a tool the probe never got an answer about as *missing* and tell the
|
|
73
|
+
* reader to install something they already have.
|
|
74
|
+
*/
|
|
75
|
+
export type BinProbe = string | typeof PROBE_TIMED_OUT | null;
|
|
61
76
|
/** Every environment touch, injectable for tests. */
|
|
62
77
|
export type DoctorEnv = {
|
|
63
78
|
which: (cmd: string) => Promise<string | null>;
|
|
64
79
|
version: (cmd: string, args: string[]) => Promise<VersionProbe>;
|
|
80
|
+
/** `<pm> bin <tool>` — the tool's resolved path, `null` if it does not resolve, or {@link PROBE_TIMED_OUT}. */
|
|
81
|
+
binPath: (pm: PackageManager, tool: string, cwd: string) => Promise<BinProbe>;
|
|
65
82
|
exists: (path: string) => boolean;
|
|
83
|
+
/** Read a UTF-8 file; `null` when unreadable. */
|
|
84
|
+
readText: (path: string) => string | null;
|
|
66
85
|
canWrite: (dir: string) => Promise<boolean>;
|
|
67
86
|
readEngines: (cwd: string) => {
|
|
68
87
|
node?: string;
|
|
@@ -82,6 +101,8 @@ export type DoctorOptions = {
|
|
|
82
101
|
adapters?: readonly Adapter[];
|
|
83
102
|
config?: CheckrideConfig | null;
|
|
84
103
|
env?: DoctorEnv;
|
|
104
|
+
/** The Node-pin surface; injectable so the hook-context row is testable. */
|
|
105
|
+
pinEnv?: PinEnv;
|
|
85
106
|
};
|
|
86
107
|
/**
|
|
87
108
|
* A `<cmd> --version` probe that exceeded its timeout: promisified `execFile` rejects
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `checkride doctor` — read-only environment + tooling verification.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* is writable. It then enumerates *every* catalogue slot — not just the ones the
|
|
4
|
+
* Verifies node/pnpm/git are present at the required versions, the project has
|
|
5
|
+
* been installed, and `.check/` is writable. It then enumerates *every* catalogue slot — not just the ones the
|
|
7
6
|
* default run executes — and reports each slot's enablement (default / opt-in /
|
|
8
7
|
* disabled / unavailable) alongside its tool presence, so off and opt-in slots
|
|
9
8
|
* are visible instead of silently dropped. Renders a human table (or `--json`)
|
|
10
9
|
* and exits 0 when everything required is present, 1 otherwise. Only slots that
|
|
11
10
|
* run by default are required; opt-in/disabled/unavailable slots never fail it.
|
|
12
11
|
*
|
|
12
|
+
* One row deliberately describes a shell this process is not in. `doctor` runs
|
|
13
|
+
* in the user's terminal; the gate runs in a hook, which agent harnesses launch
|
|
14
|
+
* from a non-login shell with a different Node. Reporting only what is true here
|
|
15
|
+
* is how `doctor` said `environment ok` about a repo whose gate could not start
|
|
16
|
+
* — see {@link checkNodePin}.
|
|
17
|
+
*
|
|
13
18
|
* Every environment touch (PATH, fs, package.json) goes through an injectable
|
|
14
19
|
* {@link DoctorEnv}, so the logic is unit-testable without a real toolchain.
|
|
15
20
|
*/
|
|
@@ -19,9 +24,11 @@ import { mkdir, rm, writeFile } from 'node:fs/promises';
|
|
|
19
24
|
import { arch as osArch, platform as osPlatform } from 'node:os';
|
|
20
25
|
import { join } from 'node:path';
|
|
21
26
|
import { promisify } from 'node:util';
|
|
27
|
+
import { BASELINE_FILE, countBaselineKeys, parseBaseline } from './baseline/index.js';
|
|
22
28
|
import { resolveChecks } from './config.js';
|
|
29
|
+
import { findPinnedNode, NODE_BIN_VAR, readNodePin, realPinEnv } from './node-pin.js';
|
|
23
30
|
import { resolveCommonOptions, selectChecks } from './orchestrator.js';
|
|
24
|
-
import { detectPackageManager, isAvailableUnder } from './pm/index.js';
|
|
31
|
+
import { detectPackageManager, execTool, installCommand, isAvailableUnder, isPnPInstall, resolveSlotTool, } from './pm/index.js';
|
|
25
32
|
/**
|
|
26
33
|
* Version probes get a generous budget: Node-CLI startup alone can exceed several
|
|
27
34
|
* seconds on a slow-spawn machine (CI under load, cold caches), and a diagnostic
|
|
@@ -34,7 +41,7 @@ const VERSION_TIMEOUT_S = VERSION_TIMEOUT_MS / 1000;
|
|
|
34
41
|
* kept distinct from `null` (the probe ran but its output could not be parsed) so
|
|
35
42
|
* `doctor` reports "timed out" rather than misdiagnosing a hung tool as a parse failure.
|
|
36
43
|
*/
|
|
37
|
-
export const
|
|
44
|
+
export const PROBE_TIMED_OUT = Symbol('checkride.probe.timed-out');
|
|
38
45
|
const execFileP = promisify(execFile);
|
|
39
46
|
const INSTALL_HINTS = {
|
|
40
47
|
node: 'Install Node >=22.18: https://nodejs.org/ or `nvm install 22 && nvm use 22`',
|
|
@@ -64,7 +71,31 @@ async function versionReal(cmd, args) {
|
|
|
64
71
|
return stdout.trim();
|
|
65
72
|
}
|
|
66
73
|
catch (err) {
|
|
67
|
-
return isProbeTimeout(err) ?
|
|
74
|
+
return isProbeTimeout(err) ? PROBE_TIMED_OUT : null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Ask the package manager where a tool's binary is — the only way to answer that
|
|
79
|
+
* under Yarn PnP, where no `node_modules/.bin` exists to stat.
|
|
80
|
+
*
|
|
81
|
+
* `yarn bin <tool>` prints the resolved path and exits 0, or exits 1 when the
|
|
82
|
+
* tool is not a dependency, so the exit code carries the whole answer. Shares
|
|
83
|
+
* the version probe's timeout: this spawns a package manager, and a doctor that
|
|
84
|
+
* hangs is worse than one that reports a tool unresolved.
|
|
85
|
+
*
|
|
86
|
+
* A timeout is reported as {@link PROBE_TIMED_OUT} rather than folded into
|
|
87
|
+
* `null`, for the same reason the version probe distinguishes it: "the probe
|
|
88
|
+
* never answered" is not "the tool is absent", and the remediation for the
|
|
89
|
+
* second is wrong advice for the first.
|
|
90
|
+
*/
|
|
91
|
+
async function binPathReal(pm, tool, cwd) {
|
|
92
|
+
try {
|
|
93
|
+
const { stdout } = await execFileP(pm, ['bin', tool], { cwd, timeout: VERSION_TIMEOUT_MS });
|
|
94
|
+
const path = stdout.trim();
|
|
95
|
+
return path.length > 0 ? path : null;
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
return isProbeTimeout(err) ? PROBE_TIMED_OUT : null;
|
|
68
99
|
}
|
|
69
100
|
}
|
|
70
101
|
async function canWriteReal(dir) {
|
|
@@ -89,10 +120,20 @@ function readEnginesReal(cwd) {
|
|
|
89
120
|
return {};
|
|
90
121
|
}
|
|
91
122
|
}
|
|
123
|
+
function readTextReal(path) {
|
|
124
|
+
try {
|
|
125
|
+
return readFileSync(path, 'utf8');
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
92
131
|
const realEnv = {
|
|
93
132
|
which: whichReal,
|
|
94
133
|
version: versionReal,
|
|
134
|
+
binPath: binPathReal,
|
|
95
135
|
exists: existsSync,
|
|
136
|
+
readText: readTextReal,
|
|
96
137
|
canWrite: canWriteReal,
|
|
97
138
|
readEngines: readEnginesReal,
|
|
98
139
|
platform: () => ({ os: osPlatform(), arch: osArch() }),
|
|
@@ -123,7 +164,7 @@ async function checkVersioned(name, cmd, min, env) {
|
|
|
123
164
|
return { name, category: 'env', required: true, status: 'missing', found: null, expected, hint: INSTALL_HINTS[name] ?? `Install \`${cmd}\`.` };
|
|
124
165
|
}
|
|
125
166
|
const raw = await env.version(cmd, ['--version']);
|
|
126
|
-
if (raw ===
|
|
167
|
+
if (raw === PROBE_TIMED_OUT) {
|
|
127
168
|
return { name, category: 'env', required: true, status: 'unknown', found: null, expected, hint: `\`${cmd} --version\` timed out (>${VERSION_TIMEOUT_S}s). Is ${cmd} responsive?` };
|
|
128
169
|
}
|
|
129
170
|
const found = parseSemver(raw);
|
|
@@ -151,36 +192,87 @@ const PM_LOCKFILES = {
|
|
|
151
192
|
bun: ['bun.lock', 'bun.lockb'],
|
|
152
193
|
};
|
|
153
194
|
/**
|
|
154
|
-
* pnpm
|
|
155
|
-
*
|
|
195
|
+
* pnpm has a documented `>=9` floor; npm, yarn, and bun are presence-only
|
|
196
|
+
* (no per-PM minimums pinned).
|
|
156
197
|
*/
|
|
157
198
|
function checkPackageManager(pm, pnpmMin, env) {
|
|
158
199
|
return pm === 'pnpm' ? checkVersioned('pnpm', 'pnpm', pnpmMin, env) : checkPresent(pm, pm, env);
|
|
159
200
|
}
|
|
201
|
+
/**
|
|
202
|
+
* Is the project installed? Lockfile plus the linker's own install artifact.
|
|
203
|
+
*
|
|
204
|
+
* Under Yarn PnP that artifact is `.pnp.cjs`, not a `node_modules/` directory —
|
|
205
|
+
* a PnP repo never has one, so asserting the directory reported every correctly
|
|
206
|
+
* installed PnP project as "lockfile only" and made `doctor` exit 1 on a repo
|
|
207
|
+
* whose checks all pass.
|
|
208
|
+
*/
|
|
160
209
|
function checkInstall(cwd, pm, env) {
|
|
161
210
|
const locks = PM_LOCKFILES[pm];
|
|
162
211
|
const hint = `Run \`${pm} install\` from the repo root.`;
|
|
212
|
+
const base = { name: 'install', category: 'install', required: true };
|
|
163
213
|
if (!locks.some((lock) => env.exists(join(cwd, lock)))) {
|
|
164
|
-
return {
|
|
214
|
+
return { ...base, status: 'missing', found: null, expected: `${locks.join(' or ')} present`, hint };
|
|
215
|
+
}
|
|
216
|
+
// PnP is a Yarn feature; gating on the manager keeps a stale `.pnp.cjs` left
|
|
217
|
+
// behind by a migration off Yarn from rerouting an npm or pnpm repo.
|
|
218
|
+
if (pm === 'yarn' && isPnPInstall(cwd, env.exists)) {
|
|
219
|
+
return { ...base, status: 'ok', found: '.pnp.cjs + lockfile (Yarn PnP)', expected: null, hint: null };
|
|
165
220
|
}
|
|
166
221
|
if (!env.exists(join(cwd, 'node_modules'))) {
|
|
167
|
-
return {
|
|
222
|
+
return { ...base, status: 'missing', found: 'lockfile only', expected: 'node_modules/ populated', hint };
|
|
223
|
+
}
|
|
224
|
+
return { ...base, status: 'ok', found: 'node_modules + lockfile', expected: null, hint: null };
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Where a slot's tool has to be, and whether it is there.
|
|
228
|
+
*
|
|
229
|
+
* Two layouts, two questions. Under a `node_modules` install the lookup walks
|
|
230
|
+
* `cwd` upward via {@link resolveSlotTool}, so a workspace tool hoisted to the
|
|
231
|
+
* repo root reports `ok` from a package subdirectory instead of a false
|
|
232
|
+
* `missing`. Under Yarn PnP there is no `node_modules/.bin` to stat at all, so
|
|
233
|
+
* the question goes to the resolver that owns the answer: `<pm> bin <tool>`
|
|
234
|
+
* prints the path and exits 0, or exits 1. Gated on yarn for the same reason as
|
|
235
|
+
* {@link checkInstall} — a `.pnp.cjs` left by a migration off Yarn must not
|
|
236
|
+
* reroute an npm or pnpm repo.
|
|
237
|
+
*
|
|
238
|
+
* Either way a tool that does not resolve reports `missing`: the PnP path asks a
|
|
239
|
+
* looser question, not a softer one.
|
|
240
|
+
*/
|
|
241
|
+
async function probeExecTool(tool, cwd, pm, env) {
|
|
242
|
+
// The hint names the detected manager's own install command — the row a reader
|
|
243
|
+
// lands on when a slot is red is the wrong place to be told to run another PM.
|
|
244
|
+
const missing = (expected) => ({
|
|
245
|
+
status: 'missing',
|
|
246
|
+
found: null,
|
|
247
|
+
expected,
|
|
248
|
+
hint: `Run \`${pm} install\`, or declare it: \`${installCommand(pm, tool)}\`.`,
|
|
249
|
+
});
|
|
250
|
+
if (pm === 'yarn' && isPnPInstall(cwd, env.exists)) {
|
|
251
|
+
const expected = `resolvable via \`${pm} bin ${tool}\``;
|
|
252
|
+
const resolved = await env.binPath(pm, tool, cwd);
|
|
253
|
+
// A probe that never answered is `unknown`, not `missing` — the same
|
|
254
|
+
// treatment `checkVersioned` gives a timed-out `--version`. Reporting it as
|
|
255
|
+
// missing would advise installing a tool that may well be right there.
|
|
256
|
+
if (resolved === PROBE_TIMED_OUT) {
|
|
257
|
+
return { status: 'unknown', found: null, expected, hint: `\`${pm} bin ${tool}\` timed out (>${VERSION_TIMEOUT_S}s). Is ${pm} responsive?` };
|
|
258
|
+
}
|
|
259
|
+
return resolved ? { status: 'ok', found: resolved, expected, hint: null } : missing(expected);
|
|
168
260
|
}
|
|
169
|
-
|
|
261
|
+
const bin = resolveSlotTool(cwd, tool, env.exists);
|
|
262
|
+
return bin
|
|
263
|
+
? { status: 'ok', found: bin, expected: `node_modules/.bin/${tool}`, hint: null }
|
|
264
|
+
: missing(`node_modules/.bin/${tool}`);
|
|
170
265
|
}
|
|
171
|
-
/** Presence-only probe: does the adapter's tool
|
|
172
|
-
async function probeTool(adapter, cwd, env) {
|
|
266
|
+
/** Presence-only probe: does the adapter's tool resolve? Dispatch by adapter shape. */
|
|
267
|
+
async function probeTool(adapter, cwd, pm, env) {
|
|
173
268
|
if (adapter.builtin) {
|
|
174
269
|
return { status: 'ok', found: 'built-in', expected: null, hint: null };
|
|
175
270
|
}
|
|
176
271
|
if (adapter.command === 'pnpm' && adapter.args[0] === 'exec') {
|
|
177
|
-
const tool = adapter.args
|
|
272
|
+
const tool = execTool(adapter.command, adapter.args);
|
|
178
273
|
if (!tool)
|
|
179
274
|
return { status: 'unknown', found: null, expected: null, hint: null };
|
|
180
|
-
|
|
181
|
-
return env.exists(bin)
|
|
182
|
-
? { status: 'ok', found: bin, expected: `node_modules/.bin/${tool}`, hint: null }
|
|
183
|
-
: { status: 'missing', found: null, expected: `node_modules/.bin/${tool}`, hint: `Run \`pnpm install\` (or add ${tool}).` };
|
|
275
|
+
return probeExecTool(tool, cwd, pm, env);
|
|
184
276
|
}
|
|
185
277
|
const path = await env.which(adapter.command);
|
|
186
278
|
return path
|
|
@@ -215,7 +307,7 @@ function offRow(base, r, adapter, config, pm) {
|
|
|
215
307
|
if (config?.checks?.[r.slot] === false) {
|
|
216
308
|
return { ...base, name: r.slot, required: false, status: 'n/a', enablement: 'disabled', found: r.skip ?? 'disabled in checkride.config.json', expected: null, hint: null };
|
|
217
309
|
}
|
|
218
|
-
// Adapter is PM-specific and can't run here —
|
|
310
|
+
// Adapter is PM-specific and can't run here — for example `pnpm audit` off pnpm.
|
|
219
311
|
if (adapter && !isAvailableUnder(adapter.command, adapter.args, pm)) {
|
|
220
312
|
return { ...base, name: r.slot, required: false, status: 'n/a', enablement: 'unavailable', found: `unavailable under ${pm}`, expected: null, hint: `\`${adapter.command} ${adapter.args[0]}\` is pnpm-specific; the ${r.slot} slot needs pnpm for now.` };
|
|
221
313
|
}
|
|
@@ -227,7 +319,7 @@ function detectedClause(r) {
|
|
|
227
319
|
}
|
|
228
320
|
/**
|
|
229
321
|
* What each publish built-in slot inspects — surfaced as a doctor note so an
|
|
230
|
-
* always-available opt-in slot explains what it would check
|
|
322
|
+
* always-available opt-in slot explains what it would check.
|
|
231
323
|
* `build`'s signal (`scripts.build`) already rides its `detectScript` detection,
|
|
232
324
|
* so it isn't repeated here.
|
|
233
325
|
*/
|
|
@@ -268,9 +360,99 @@ async function classifySlot(r, defaultActive, adapters, config, cwd, env, pm) {
|
|
|
268
360
|
return { ...base, name: r.slot, required: false, status: 'n/a', enablement: 'unavailable', found: r.skip ?? 'no tool detected', expected: null, hint: possibilitiesHint(r.slot, adapters) };
|
|
269
361
|
}
|
|
270
362
|
// Adapter resolved: probe the tool, classify by default-run membership.
|
|
271
|
-
const probe = await probeTool(adapter, cwd, env);
|
|
363
|
+
const probe = await probeTool(adapter, cwd, pm, env);
|
|
272
364
|
return toolRow(base, r, adapter, defaultActive, probe);
|
|
273
365
|
}
|
|
366
|
+
/**
|
|
367
|
+
* The one thing `doctor` cannot see by looking at itself: what a hook would get.
|
|
368
|
+
*
|
|
369
|
+
* Every other row here describes the shell `doctor` was typed into. An agent
|
|
370
|
+
* harness runs its hooks in a **non-login shell**, which never sources the rc
|
|
371
|
+
* file a version manager puts its shims in, so the hook gets the machine's
|
|
372
|
+
* default Node instead. In a repo pinning `engines.node` that is enough for the
|
|
373
|
+
* package manager to refuse to run anything — and `doctor`, running on the right
|
|
374
|
+
* Node, reported `environment ok` throughout. This bug was invisible to every
|
|
375
|
+
* read-only command checkride had.
|
|
376
|
+
*
|
|
377
|
+
* So the row does not ask "is the Node here correct" — it is, that is the whole
|
|
378
|
+
* problem. It asks the question that *is* answerable from any shell: **if a hook
|
|
379
|
+
* arrives on a different Node, can checkride put the pinned one back?** That
|
|
380
|
+
* depends only on the pin and on what is installed, both of which are the same
|
|
381
|
+
* from either shell.
|
|
382
|
+
*
|
|
383
|
+
* Never required. A repo whose contributors always work in the right shell is
|
|
384
|
+
* not broken, and flipping `doctor` red for it would be the false alarm this
|
|
385
|
+
* whole change is about removing.
|
|
386
|
+
*/
|
|
387
|
+
function checkNodePin(cwd, engines, env) {
|
|
388
|
+
const base = { name: 'node pin', category: 'env', required: false };
|
|
389
|
+
const pin = readNodePin(cwd, env);
|
|
390
|
+
if (pin === null)
|
|
391
|
+
return engines.node === undefined ? null : unpinnedRow(base, engines);
|
|
392
|
+
const install = findPinnedNode(pin, env);
|
|
393
|
+
const expected = `${pin.file} ${pin.version}`;
|
|
394
|
+
if (install === null) {
|
|
395
|
+
return {
|
|
396
|
+
...base,
|
|
397
|
+
status: 'outdated',
|
|
398
|
+
found: 'no matching install found',
|
|
399
|
+
expected,
|
|
400
|
+
hint: `Agent hooks run in a non-login shell and get this machine's default Node, not this shell's ` +
|
|
401
|
+
`(${env.running()}). No Node satisfying ${pin.version} is installed in a layout checkride knows ` +
|
|
402
|
+
`(nvm, fnm, nodenv, asdf, volta, n), so it cannot align a hook that arrives on the wrong one — ` +
|
|
403
|
+
`the gate will report "could not run" rather than a misleading red. Install it, or set ` +
|
|
404
|
+
`${NODE_BIN_VAR} to its bin directory.`,
|
|
405
|
+
};
|
|
406
|
+
}
|
|
407
|
+
return {
|
|
408
|
+
...base,
|
|
409
|
+
status: 'ok',
|
|
410
|
+
found: install.bin,
|
|
411
|
+
expected,
|
|
412
|
+
hint: "Agent hooks run in a non-login shell; the gate aligns to this when the hook's Node differs.",
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* The row for a repo with `engines.node` and no `.nvmrc`/`.node-version` — a
|
|
417
|
+
* repo whose package manager can refuse a hook, with no exact version for
|
|
418
|
+
* checkride to align to when it does.
|
|
419
|
+
*/
|
|
420
|
+
function unpinnedRow(base, engines) {
|
|
421
|
+
return {
|
|
422
|
+
...base,
|
|
423
|
+
status: 'outdated',
|
|
424
|
+
found: 'no .nvmrc or .node-version',
|
|
425
|
+
expected: engines.node ?? null,
|
|
426
|
+
hint: `This repo pins \`engines.node\` ${engines.node} but names no exact version. Agent hooks run in ` +
|
|
427
|
+
`a non-login shell and get this machine's default Node, which a package manager may then refuse ` +
|
|
428
|
+
`to run under. Add a \`.nvmrc\` so checkride can align the gate to it, or set ${NODE_BIN_VAR}.`,
|
|
429
|
+
};
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* The committed baseline's health. No row when the repo has none — an absent
|
|
433
|
+
* optional file is not a finding. Never required: a broken baseline degrades a
|
|
434
|
+
* run (grandfathered findings report red), it does not break checkride. The
|
|
435
|
+
* unparseable state is worth a row because the run-time warning only prints
|
|
436
|
+
* during a run — doctor is where someone checks the environment *between* runs.
|
|
437
|
+
*/
|
|
438
|
+
function checkBaseline(cwd, env) {
|
|
439
|
+
const path = join(cwd, BASELINE_FILE);
|
|
440
|
+
if (!env.exists(path))
|
|
441
|
+
return null;
|
|
442
|
+
const raw = env.readText(path);
|
|
443
|
+
const baseline = raw === null ? null : parseBaseline(raw);
|
|
444
|
+
const base = { name: 'baseline', category: 'workspace', required: false };
|
|
445
|
+
if (baseline === null) {
|
|
446
|
+
return {
|
|
447
|
+
...base,
|
|
448
|
+
status: 'outdated',
|
|
449
|
+
found: `${BASELINE_FILE} present but unparseable`,
|
|
450
|
+
expected: 'valid baseline JSON',
|
|
451
|
+
hint: 'A merge likely mangled it; grandfathered findings report red until it is restored. Run `checkride recover` to rebuild it from git history.',
|
|
452
|
+
};
|
|
453
|
+
}
|
|
454
|
+
return { ...base, status: 'ok', found: `${countBaselineKeys(baseline)} grandfathered diagnostic(s)`, expected: null, hint: null };
|
|
455
|
+
}
|
|
274
456
|
async function checkWritable(cwd, env) {
|
|
275
457
|
const dir = join(cwd, '.check');
|
|
276
458
|
const ok = await env.canWrite(dir);
|
|
@@ -313,10 +495,26 @@ const GROUPS = [
|
|
|
313
495
|
{ key: 'tool', label: 'CHECKS' },
|
|
314
496
|
{ key: 'workspace', label: 'WORKSPACE' },
|
|
315
497
|
];
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
498
|
+
/**
|
|
499
|
+
* Size each column to its widest row, never below the historical minimum.
|
|
500
|
+
* Fixed widths were sized for catalogue slot names and a config custom check
|
|
501
|
+
* blows straight past them — `typecheck-tests` (15) against a 10-wide column,
|
|
502
|
+
* `custom:typecheck-tests` (22) against 18 — which shunts every following
|
|
503
|
+
* column right on that row alone and makes the table unreadable at exactly the
|
|
504
|
+
* moment someone is reading it to debug their config.
|
|
505
|
+
*/
|
|
506
|
+
function toolWidths(items) {
|
|
507
|
+
const widest = (pick, min) => items.reduce((n, c) => Math.max(n, pick(c).length), min);
|
|
508
|
+
return {
|
|
509
|
+
slot: widest((c) => c.slot ?? c.name, 10),
|
|
510
|
+
adapter: widest((c) => c.adapter ?? '—', 18),
|
|
511
|
+
enablement: widest((c) => c.enablement ?? '', 12),
|
|
512
|
+
};
|
|
513
|
+
}
|
|
514
|
+
function renderToolRow(c, w, out) {
|
|
515
|
+
const slot = (c.slot ?? c.name).padEnd(w.slot);
|
|
516
|
+
const adapter = (c.adapter ?? '—').padEnd(w.adapter);
|
|
517
|
+
const enablement = (c.enablement ?? '').padEnd(w.enablement);
|
|
320
518
|
out.write(` ${slotMark(c)} ${slot} ${adapter} ${enablement} ${slotNote(c)}\n`);
|
|
321
519
|
if (c.hint)
|
|
322
520
|
out.write(` -> ${c.hint}\n`);
|
|
@@ -341,8 +539,9 @@ function renderGroup(group, report, out) {
|
|
|
341
539
|
return;
|
|
342
540
|
out.write(` ${group.label}\n`);
|
|
343
541
|
if (group.key === 'tool') {
|
|
542
|
+
const widths = toolWidths(items);
|
|
344
543
|
for (const c of items)
|
|
345
|
-
renderToolRow(c, out);
|
|
544
|
+
renderToolRow(c, widths, out);
|
|
346
545
|
renderSlotSummary(items, out);
|
|
347
546
|
return;
|
|
348
547
|
}
|
|
@@ -365,8 +564,10 @@ export async function runDoctor(options) {
|
|
|
365
564
|
const nodeMin = parseSemver(engines.node) ?? { major: 22, minor: 18, patch: 0, raw: '22.18.0' };
|
|
366
565
|
const pnpmMin = parseSemver(engines.pnpm) ?? { major: 9, minor: 0, patch: 0, raw: '9.0.0' };
|
|
367
566
|
const pm = env.packageManager(cwd);
|
|
567
|
+
const nodePin = checkNodePin(cwd, engines, options.pinEnv ?? realPinEnv);
|
|
368
568
|
const checks = [
|
|
369
569
|
await checkVersioned('node', 'node', nodeMin, env),
|
|
570
|
+
...(nodePin === null ? [] : [nodePin]),
|
|
370
571
|
await checkPackageManager(pm, pnpmMin, env),
|
|
371
572
|
await checkPresent('git', 'git', env),
|
|
372
573
|
checkInstall(cwd, pm, env),
|
|
@@ -378,6 +579,9 @@ export async function runDoctor(options) {
|
|
|
378
579
|
// Independent per-slot probes: run them concurrently, `map` preserves order.
|
|
379
580
|
checks.push(...(await Promise.all(resolved.map((r) => classifySlot(r, defaultActive, adapters, config, cwd, env, pm)))));
|
|
380
581
|
checks.push(await checkWritable(cwd, env));
|
|
582
|
+
const baselineRow = checkBaseline(cwd, env);
|
|
583
|
+
if (baselineRow !== null)
|
|
584
|
+
checks.push(baselineRow);
|
|
381
585
|
const ok = checks.every((c) => !c.required || c.status === 'ok');
|
|
382
586
|
const report = { ok, platform: env.platform(), packageManager: pm, checks };
|
|
383
587
|
if (json) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
|