plumbbob 0.9.3 → 0.9.5

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 (278) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/README.md +15 -13
  3. package/dist/cli-core.js +19 -2
  4. package/dist/lib/check.js +46 -13
  5. package/dist/lib/intent.js +1 -1
  6. package/dist/lib/latch.js +3 -3
  7. package/dist/lib/reentry.js +70 -0
  8. package/dist/verbs/agent.js +2 -2
  9. package/dist/verbs/doctor.js +4 -4
  10. package/dist/verbs/finish.js +1 -1
  11. package/dist/verbs/recover.js +297 -0
  12. package/dist/verbs/revert.js +2 -2
  13. package/dist/verbs/spike.js +8 -2
  14. package/hooks/post-edit.sh +4 -4
  15. package/hooks/pre-bash-commit.sh +3 -3
  16. package/node_modules/checkride/.claude-plugin/plugin.json +11 -0
  17. package/node_modules/checkride/CHANGELOG.md +1003 -0
  18. package/node_modules/checkride/LICENSE +201 -21
  19. package/node_modules/checkride/README.md +171 -30
  20. package/node_modules/checkride/dist/__tests__/fixtures/released-stanzas.d.ts +15 -0
  21. package/node_modules/checkride/dist/__tests__/fixtures/released-stanzas.d.ts.map +1 -0
  22. package/node_modules/checkride/dist/__tests__/fixtures/released-stanzas.js +17 -0
  23. package/node_modules/checkride/dist/__tests__/fixtures/released-stanzas.js.map +1 -0
  24. package/node_modules/checkride/dist/adapters.d.ts +18 -6
  25. package/node_modules/checkride/dist/adapters.d.ts.map +1 -1
  26. package/node_modules/checkride/dist/adapters.js +42 -23
  27. package/node_modules/checkride/dist/adapters.js.map +1 -1
  28. package/node_modules/checkride/dist/agent-setup/claude.d.ts +88 -0
  29. package/node_modules/checkride/dist/agent-setup/claude.d.ts.map +1 -0
  30. package/node_modules/checkride/dist/agent-setup/claude.js +305 -0
  31. package/node_modules/checkride/dist/agent-setup/claude.js.map +1 -0
  32. package/node_modules/checkride/dist/agent-setup/command.d.ts +43 -0
  33. package/node_modules/checkride/dist/agent-setup/command.d.ts.map +1 -0
  34. package/node_modules/checkride/dist/agent-setup/command.js +77 -0
  35. package/node_modules/checkride/dist/agent-setup/command.js.map +1 -0
  36. package/node_modules/checkride/dist/agent-setup/cursor.d.ts +61 -0
  37. package/node_modules/checkride/dist/agent-setup/cursor.d.ts.map +1 -0
  38. package/node_modules/checkride/dist/agent-setup/cursor.js +189 -0
  39. package/node_modules/checkride/dist/agent-setup/cursor.js.map +1 -0
  40. package/node_modules/checkride/dist/agent-setup/files.d.ts +50 -0
  41. package/node_modules/checkride/dist/agent-setup/files.d.ts.map +1 -0
  42. package/node_modules/checkride/dist/agent-setup/files.js +80 -0
  43. package/node_modules/checkride/dist/agent-setup/files.js.map +1 -0
  44. package/node_modules/checkride/dist/agent-setup/harness.d.ts +101 -0
  45. package/node_modules/checkride/dist/agent-setup/harness.d.ts.map +1 -0
  46. package/node_modules/checkride/dist/agent-setup/harness.js +84 -0
  47. package/node_modules/checkride/dist/agent-setup/harness.js.map +1 -0
  48. package/node_modules/checkride/dist/agent-setup/hook.d.ts +45 -52
  49. package/node_modules/checkride/dist/agent-setup/hook.d.ts.map +1 -1
  50. package/node_modules/checkride/dist/agent-setup/hook.js +64 -95
  51. package/node_modules/checkride/dist/agent-setup/hook.js.map +1 -1
  52. package/node_modules/checkride/dist/agent-setup/index.d.ts +10 -4
  53. package/node_modules/checkride/dist/agent-setup/index.d.ts.map +1 -1
  54. package/node_modules/checkride/dist/agent-setup/index.js +9 -4
  55. package/node_modules/checkride/dist/agent-setup/index.js.map +1 -1
  56. package/node_modules/checkride/dist/agent-setup/scripts.d.ts +58 -0
  57. package/node_modules/checkride/dist/agent-setup/scripts.d.ts.map +1 -0
  58. package/node_modules/checkride/dist/agent-setup/scripts.js +299 -0
  59. package/node_modules/checkride/dist/agent-setup/scripts.js.map +1 -0
  60. package/node_modules/checkride/dist/agent-setup/skills.d.ts +31 -0
  61. package/node_modules/checkride/dist/agent-setup/skills.d.ts.map +1 -0
  62. package/node_modules/checkride/dist/agent-setup/skills.js +56 -0
  63. package/node_modules/checkride/dist/agent-setup/skills.js.map +1 -0
  64. package/node_modules/checkride/dist/artifacts/configured.d.ts +30 -0
  65. package/node_modules/checkride/dist/artifacts/configured.d.ts.map +1 -0
  66. package/node_modules/checkride/dist/artifacts/configured.js +45 -0
  67. package/node_modules/checkride/dist/artifacts/configured.js.map +1 -0
  68. package/node_modules/checkride/dist/artifacts/format.d.ts +33 -0
  69. package/node_modules/checkride/dist/artifacts/format.d.ts.map +1 -0
  70. package/node_modules/checkride/dist/artifacts/format.js +56 -0
  71. package/node_modules/checkride/dist/artifacts/format.js.map +1 -0
  72. package/node_modules/checkride/dist/artifacts/freshness.d.ts +32 -0
  73. package/node_modules/checkride/dist/artifacts/freshness.d.ts.map +1 -0
  74. package/node_modules/checkride/dist/artifacts/freshness.js +37 -0
  75. package/node_modules/checkride/dist/artifacts/freshness.js.map +1 -0
  76. package/node_modules/checkride/dist/artifacts/index.d.ts +22 -0
  77. package/node_modules/checkride/dist/artifacts/index.d.ts.map +1 -0
  78. package/node_modules/checkride/dist/artifacts/index.js +19 -0
  79. package/node_modules/checkride/dist/artifacts/index.js.map +1 -0
  80. package/node_modules/checkride/dist/artifacts/json.d.ts +31 -0
  81. package/node_modules/checkride/dist/artifacts/json.d.ts.map +1 -0
  82. package/node_modules/checkride/dist/artifacts/json.js +47 -0
  83. package/node_modules/checkride/dist/artifacts/json.js.map +1 -0
  84. package/node_modules/checkride/dist/artifacts/raw.d.ts +60 -0
  85. package/node_modules/checkride/dist/artifacts/raw.d.ts.map +1 -0
  86. package/node_modules/checkride/dist/artifacts/raw.js +91 -0
  87. package/node_modules/checkride/dist/artifacts/raw.js.map +1 -0
  88. package/node_modules/checkride/dist/artifacts/summary.d.ts +69 -0
  89. package/node_modules/checkride/dist/artifacts/summary.d.ts.map +1 -0
  90. package/node_modules/checkride/dist/artifacts/summary.js +108 -0
  91. package/node_modules/checkride/dist/artifacts/summary.js.map +1 -0
  92. package/node_modules/checkride/dist/atomic.d.ts +16 -1
  93. package/node_modules/checkride/dist/atomic.d.ts.map +1 -1
  94. package/node_modules/checkride/dist/atomic.js +25 -3
  95. package/node_modules/checkride/dist/atomic.js.map +1 -1
  96. package/node_modules/checkride/dist/baseline/fallow.d.ts +9 -5
  97. package/node_modules/checkride/dist/baseline/fallow.d.ts.map +1 -1
  98. package/node_modules/checkride/dist/baseline/fallow.js +161 -58
  99. package/node_modules/checkride/dist/baseline/fallow.js.map +1 -1
  100. package/node_modules/checkride/dist/baseline/fingerprint.d.ts +7 -7
  101. package/node_modules/checkride/dist/baseline/fingerprint.d.ts.map +1 -1
  102. package/node_modules/checkride/dist/baseline/fingerprint.js +16 -19
  103. package/node_modules/checkride/dist/baseline/fingerprint.js.map +1 -1
  104. package/node_modules/checkride/dist/baseline/index.d.ts +4 -4
  105. package/node_modules/checkride/dist/baseline/index.d.ts.map +1 -1
  106. package/node_modules/checkride/dist/baseline/index.js +4 -4
  107. package/node_modules/checkride/dist/baseline/index.js.map +1 -1
  108. package/node_modules/checkride/dist/baseline/store.d.ts +12 -4
  109. package/node_modules/checkride/dist/baseline/store.d.ts.map +1 -1
  110. package/node_modules/checkride/dist/baseline/store.js +16 -9
  111. package/node_modules/checkride/dist/baseline/store.js.map +1 -1
  112. package/node_modules/checkride/dist/baseline-command.d.ts +5 -5
  113. package/node_modules/checkride/dist/baseline-command.js +7 -7
  114. package/node_modules/checkride/dist/baseline-command.js.map +1 -1
  115. package/node_modules/checkride/dist/cli.d.ts +17 -4
  116. package/node_modules/checkride/dist/cli.d.ts.map +1 -1
  117. package/node_modules/checkride/dist/cli.js +259 -18
  118. package/node_modules/checkride/dist/cli.js.map +1 -1
  119. package/node_modules/checkride/dist/config.d.ts +84 -8
  120. package/node_modules/checkride/dist/config.d.ts.map +1 -1
  121. package/node_modules/checkride/dist/config.js +122 -18
  122. package/node_modules/checkride/dist/config.js.map +1 -1
  123. package/node_modules/checkride/dist/digest/digest.d.ts +5 -5
  124. package/node_modules/checkride/dist/digest/digest.js +5 -5
  125. package/node_modules/checkride/dist/digest/index.d.ts +2 -2
  126. package/node_modules/checkride/dist/digest/index.js +2 -2
  127. package/node_modules/checkride/dist/doctor.d.ts +25 -6
  128. package/node_modules/checkride/dist/doctor.d.ts.map +1 -1
  129. package/node_modules/checkride/dist/doctor.js +193 -27
  130. package/node_modules/checkride/dist/doctor.js.map +1 -1
  131. package/node_modules/checkride/dist/gate.d.ts +135 -0
  132. package/node_modules/checkride/dist/gate.d.ts.map +1 -0
  133. package/node_modules/checkride/dist/gate.js +490 -0
  134. package/node_modules/checkride/dist/gate.js.map +1 -0
  135. package/node_modules/checkride/dist/init.d.ts +72 -12
  136. package/node_modules/checkride/dist/init.d.ts.map +1 -1
  137. package/node_modules/checkride/dist/init.js +324 -81
  138. package/node_modules/checkride/dist/init.js.map +1 -1
  139. package/node_modules/checkride/dist/json.d.ts +21 -0
  140. package/node_modules/checkride/dist/json.d.ts.map +1 -0
  141. package/node_modules/checkride/dist/json.js +21 -0
  142. package/node_modules/checkride/dist/json.js.map +1 -0
  143. package/node_modules/checkride/dist/links.d.ts +31 -5
  144. package/node_modules/checkride/dist/links.d.ts.map +1 -1
  145. package/node_modules/checkride/dist/links.js +141 -32
  146. package/node_modules/checkride/dist/links.js.map +1 -1
  147. package/node_modules/checkride/dist/node-pin.d.ts +129 -0
  148. package/node_modules/checkride/dist/node-pin.d.ts.map +1 -0
  149. package/node_modules/checkride/dist/node-pin.js +211 -0
  150. package/node_modules/checkride/dist/node-pin.js.map +1 -0
  151. package/node_modules/checkride/dist/orchestrator.d.ts +40 -10
  152. package/node_modules/checkride/dist/orchestrator.d.ts.map +1 -1
  153. package/node_modules/checkride/dist/orchestrator.js +196 -102
  154. package/node_modules/checkride/dist/orchestrator.js.map +1 -1
  155. package/node_modules/checkride/dist/pack.d.ts +8 -9
  156. package/node_modules/checkride/dist/pack.d.ts.map +1 -1
  157. package/node_modules/checkride/dist/pack.js +53 -17
  158. package/node_modules/checkride/dist/pack.js.map +1 -1
  159. package/node_modules/checkride/dist/pm/detect.d.ts +6 -1
  160. package/node_modules/checkride/dist/pm/detect.d.ts.map +1 -1
  161. package/node_modules/checkride/dist/pm/detect.js +6 -1
  162. package/node_modules/checkride/dist/pm/detect.js.map +1 -1
  163. package/node_modules/checkride/dist/pm/index.d.ts +6 -2
  164. package/node_modules/checkride/dist/pm/index.d.ts.map +1 -1
  165. package/node_modules/checkride/dist/pm/index.js +6 -2
  166. package/node_modules/checkride/dist/pm/index.js.map +1 -1
  167. package/node_modules/checkride/dist/pm/launch.d.ts +51 -0
  168. package/node_modules/checkride/dist/pm/launch.d.ts.map +1 -0
  169. package/node_modules/checkride/dist/pm/launch.js +92 -0
  170. package/node_modules/checkride/dist/pm/launch.js.map +1 -0
  171. package/node_modules/checkride/dist/pm/tools.d.ts +73 -0
  172. package/node_modules/checkride/dist/pm/tools.d.ts.map +1 -0
  173. package/node_modules/checkride/dist/pm/tools.js +124 -0
  174. package/node_modules/checkride/dist/pm/tools.js.map +1 -0
  175. package/node_modules/checkride/dist/pm/translate.d.ts +35 -9
  176. package/node_modules/checkride/dist/pm/translate.d.ts.map +1 -1
  177. package/node_modules/checkride/dist/pm/translate.js +78 -18
  178. package/node_modules/checkride/dist/pm/translate.js.map +1 -1
  179. package/node_modules/checkride/dist/proc.d.ts +30 -0
  180. package/node_modules/checkride/dist/proc.d.ts.map +1 -0
  181. package/node_modules/checkride/dist/proc.js +42 -0
  182. package/node_modules/checkride/dist/proc.js.map +1 -0
  183. package/node_modules/checkride/dist/qa/cli.d.ts +20 -0
  184. package/node_modules/checkride/dist/qa/cli.d.ts.map +1 -0
  185. package/node_modules/checkride/dist/qa/cli.js +24 -0
  186. package/node_modules/checkride/dist/qa/cli.js.map +1 -0
  187. package/node_modules/checkride/dist/qa/dead.d.ts +39 -0
  188. package/node_modules/checkride/dist/qa/dead.d.ts.map +1 -0
  189. package/node_modules/checkride/dist/qa/dead.js +88 -0
  190. package/node_modules/checkride/dist/qa/dead.js.map +1 -0
  191. package/node_modules/checkride/dist/qa/dupes.d.ts +45 -0
  192. package/node_modules/checkride/dist/qa/dupes.d.ts.map +1 -0
  193. package/node_modules/checkride/dist/qa/dupes.js +62 -0
  194. package/node_modules/checkride/dist/qa/dupes.js.map +1 -0
  195. package/node_modules/checkride/dist/qa/health.d.ts +85 -0
  196. package/node_modules/checkride/dist/qa/health.d.ts.map +1 -0
  197. package/node_modules/checkride/dist/qa/health.js +109 -0
  198. package/node_modules/checkride/dist/qa/health.js.map +1 -0
  199. package/node_modules/checkride/dist/qa/index.d.ts +23 -0
  200. package/node_modules/checkride/dist/qa/index.d.ts.map +1 -0
  201. package/node_modules/checkride/dist/qa/index.js +22 -0
  202. package/node_modules/checkride/dist/qa/index.js.map +1 -0
  203. package/node_modules/checkride/dist/qa/mutation.d.ts +80 -0
  204. package/node_modules/checkride/dist/qa/mutation.d.ts.map +1 -0
  205. package/node_modules/checkride/dist/qa/mutation.js +195 -0
  206. package/node_modules/checkride/dist/qa/mutation.js.map +1 -0
  207. package/node_modules/checkride/dist/qa/qa.d.ts +71 -0
  208. package/node_modules/checkride/dist/qa/qa.d.ts.map +1 -0
  209. package/node_modules/checkride/dist/qa/qa.js +158 -0
  210. package/node_modules/checkride/dist/qa/qa.js.map +1 -0
  211. package/node_modules/checkride/dist/qa/read.d.ts +40 -0
  212. package/node_modules/checkride/dist/qa/read.d.ts.map +1 -0
  213. package/node_modules/checkride/dist/qa/read.js +47 -0
  214. package/node_modules/checkride/dist/qa/read.js.map +1 -0
  215. package/node_modules/checkride/dist/qa/render.d.ts +26 -0
  216. package/node_modules/checkride/dist/qa/render.d.ts.map +1 -0
  217. package/node_modules/checkride/dist/qa/render.js +310 -0
  218. package/node_modules/checkride/dist/qa/render.js.map +1 -0
  219. package/node_modules/checkride/dist/security.d.ts +45 -0
  220. package/node_modules/checkride/dist/security.d.ts.map +1 -0
  221. package/node_modules/checkride/dist/security.js +86 -0
  222. package/node_modules/checkride/dist/security.js.map +1 -0
  223. package/node_modules/checkride/dist/smoke.d.ts +5 -5
  224. package/node_modules/checkride/dist/smoke.js +5 -5
  225. package/node_modules/checkride/dist/snippets.d.ts +26 -29
  226. package/node_modules/checkride/dist/snippets.d.ts.map +1 -1
  227. package/node_modules/checkride/dist/snippets.js +26 -30
  228. package/node_modules/checkride/dist/snippets.js.map +1 -1
  229. package/node_modules/checkride/dist/tool-json.d.ts +33 -0
  230. package/node_modules/checkride/dist/tool-json.d.ts.map +1 -0
  231. package/node_modules/checkride/dist/tool-json.js +58 -0
  232. package/node_modules/checkride/dist/tool-json.js.map +1 -0
  233. package/node_modules/checkride/dist/triage/cli.d.ts +21 -0
  234. package/node_modules/checkride/dist/triage/cli.d.ts.map +1 -0
  235. package/node_modules/checkride/dist/triage/cli.js +26 -0
  236. package/node_modules/checkride/dist/triage/cli.js.map +1 -0
  237. package/node_modules/checkride/dist/triage/doctor-fold.d.ts +51 -0
  238. package/node_modules/checkride/dist/triage/doctor-fold.d.ts.map +1 -0
  239. package/node_modules/checkride/dist/triage/doctor-fold.js +88 -0
  240. package/node_modules/checkride/dist/triage/doctor-fold.js.map +1 -0
  241. package/node_modules/checkride/dist/triage/env.d.ts +54 -0
  242. package/node_modules/checkride/dist/triage/env.d.ts.map +1 -0
  243. package/node_modules/checkride/dist/triage/env.js +81 -0
  244. package/node_modules/checkride/dist/triage/env.js.map +1 -0
  245. package/node_modules/checkride/dist/triage/gate.d.ts +61 -0
  246. package/node_modules/checkride/dist/triage/gate.d.ts.map +1 -0
  247. package/node_modules/checkride/dist/triage/gate.js +121 -0
  248. package/node_modules/checkride/dist/triage/gate.js.map +1 -0
  249. package/node_modules/checkride/dist/triage/index.d.ts +22 -0
  250. package/node_modules/checkride/dist/triage/index.d.ts.map +1 -0
  251. package/node_modules/checkride/dist/triage/index.js +20 -0
  252. package/node_modules/checkride/dist/triage/index.js.map +1 -0
  253. package/node_modules/checkride/dist/triage/render.d.ts +19 -0
  254. package/node_modules/checkride/dist/triage/render.d.ts.map +1 -0
  255. package/node_modules/checkride/dist/triage/render.js +419 -0
  256. package/node_modules/checkride/dist/triage/render.js.map +1 -0
  257. package/node_modules/checkride/dist/triage/triage.d.ts +83 -0
  258. package/node_modules/checkride/dist/triage/triage.d.ts.map +1 -0
  259. package/node_modules/checkride/dist/triage/triage.js +131 -0
  260. package/node_modules/checkride/dist/triage/triage.js.map +1 -0
  261. package/node_modules/checkride/package.json +17 -15
  262. package/node_modules/checkride/schema/checkride.config.schema.json +62 -5
  263. package/node_modules/checkride/schema/checkride.summary.schema.json +1 -1
  264. package/node_modules/checkride/skills/check/SKILL.md +257 -0
  265. package/node_modules/checkride/skills/qa/SKILL.md +231 -0
  266. package/node_modules/checkride/templates/shared/cspell.json +1 -0
  267. package/node_modules/checkride/templates/shared/oxlintrc.json +1 -1
  268. package/package.json +2 -2
  269. package/skills/build/SKILL.md +23 -19
  270. package/skills/finish/SKILL.md +3 -1
  271. package/skills/harvest/SKILL.md +2 -1
  272. package/skills/plan/SKILL.md +8 -7
  273. package/skills/recover/SKILL.md +28 -0
  274. package/skills/refine/SKILL.md +5 -4
  275. package/skills/spike/SKILL.md +1 -1
  276. package/skills/step/SKILL.md +4 -4
  277. package/skills/verify/SKILL.md +19 -14
  278. package/templates/intent.md +8 -7
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
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
- * Ported from the reference `scaffold-check.mjs`. Verifies node/pnpm/git are
5
- * present at the required versions, the project has been installed, and `.check/`
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
  */
@@ -20,8 +25,9 @@ import { arch as osArch, platform as osPlatform } from 'node:os';
20
25
  import { join } from 'node:path';
21
26
  import { promisify } from 'node:util';
22
27
  import { resolveChecks } from './config.js';
28
+ import { findPinnedNode, NODE_BIN_VAR, readNodePin, realPinEnv } from './node-pin.js';
23
29
  import { resolveCommonOptions, selectChecks } from './orchestrator.js';
24
- import { detectPackageManager, isAvailableUnder } from './pm/index.js';
30
+ import { detectPackageManager, execTool, installCommand, isAvailableUnder, isPnPInstall, resolveSlotTool, } from './pm/index.js';
25
31
  /**
26
32
  * Version probes get a generous budget: Node-CLI startup alone can exceed several
27
33
  * seconds on a slow-spawn machine (CI under load, cold caches), and a diagnostic
@@ -34,7 +40,7 @@ const VERSION_TIMEOUT_S = VERSION_TIMEOUT_MS / 1000;
34
40
  * kept distinct from `null` (the probe ran but its output could not be parsed) so
35
41
  * `doctor` reports "timed out" rather than misdiagnosing a hung tool as a parse failure.
36
42
  */
37
- export const VERSION_TIMED_OUT = Symbol('checkride.version.timed-out');
43
+ export const PROBE_TIMED_OUT = Symbol('checkride.probe.timed-out');
38
44
  const execFileP = promisify(execFile);
39
45
  const INSTALL_HINTS = {
40
46
  node: 'Install Node >=22.18: https://nodejs.org/ or `nvm install 22 && nvm use 22`',
@@ -64,7 +70,31 @@ async function versionReal(cmd, args) {
64
70
  return stdout.trim();
65
71
  }
66
72
  catch (err) {
67
- return isProbeTimeout(err) ? VERSION_TIMED_OUT : null;
73
+ return isProbeTimeout(err) ? PROBE_TIMED_OUT : null;
74
+ }
75
+ }
76
+ /**
77
+ * Ask the package manager where a tool's binary is — the only way to answer that
78
+ * under Yarn PnP, where no `node_modules/.bin` exists to stat.
79
+ *
80
+ * `yarn bin <tool>` prints the resolved path and exits 0, or exits 1 when the
81
+ * tool is not a dependency, so the exit code carries the whole answer. Shares
82
+ * the version probe's timeout: this spawns a package manager, and a doctor that
83
+ * hangs is worse than one that reports a tool unresolved.
84
+ *
85
+ * A timeout is reported as {@link PROBE_TIMED_OUT} rather than folded into
86
+ * `null`, for the same reason the version probe distinguishes it: "the probe
87
+ * never answered" is not "the tool is absent", and the remediation for the
88
+ * second is wrong advice for the first.
89
+ */
90
+ async function binPathReal(pm, tool, cwd) {
91
+ try {
92
+ const { stdout } = await execFileP(pm, ['bin', tool], { cwd, timeout: VERSION_TIMEOUT_MS });
93
+ const path = stdout.trim();
94
+ return path.length > 0 ? path : null;
95
+ }
96
+ catch (err) {
97
+ return isProbeTimeout(err) ? PROBE_TIMED_OUT : null;
68
98
  }
69
99
  }
70
100
  async function canWriteReal(dir) {
@@ -92,6 +122,7 @@ function readEnginesReal(cwd) {
92
122
  const realEnv = {
93
123
  which: whichReal,
94
124
  version: versionReal,
125
+ binPath: binPathReal,
95
126
  exists: existsSync,
96
127
  canWrite: canWriteReal,
97
128
  readEngines: readEnginesReal,
@@ -123,7 +154,7 @@ async function checkVersioned(name, cmd, min, env) {
123
154
  return { name, category: 'env', required: true, status: 'missing', found: null, expected, hint: INSTALL_HINTS[name] ?? `Install \`${cmd}\`.` };
124
155
  }
125
156
  const raw = await env.version(cmd, ['--version']);
126
- if (raw === VERSION_TIMED_OUT) {
157
+ if (raw === PROBE_TIMED_OUT) {
127
158
  return { name, category: 'env', required: true, status: 'unknown', found: null, expected, hint: `\`${cmd} --version\` timed out (>${VERSION_TIMEOUT_S}s). Is ${cmd} responsive?` };
128
159
  }
129
160
  const found = parseSemver(raw);
@@ -151,36 +182,87 @@ const PM_LOCKFILES = {
151
182
  bun: ['bun.lock', 'bun.lockb'],
152
183
  };
153
184
  /**
154
- * pnpm keeps its documented `>=9` floor (byte-identical to today); npm, yarn,
155
- * and bun are presence-only until we pin per-PM minimums.
185
+ * pnpm has a documented `>=9` floor; npm, yarn, and bun are presence-only
186
+ * (no per-PM minimums pinned).
156
187
  */
157
188
  function checkPackageManager(pm, pnpmMin, env) {
158
189
  return pm === 'pnpm' ? checkVersioned('pnpm', 'pnpm', pnpmMin, env) : checkPresent(pm, pm, env);
159
190
  }
191
+ /**
192
+ * Is the project installed? Lockfile plus the linker's own install artifact.
193
+ *
194
+ * Under Yarn PnP that artifact is `.pnp.cjs`, not a `node_modules/` directory —
195
+ * a PnP repo never has one, so asserting the directory reported every correctly
196
+ * installed PnP project as "lockfile only" and made `doctor` exit 1 on a repo
197
+ * whose checks all pass.
198
+ */
160
199
  function checkInstall(cwd, pm, env) {
161
200
  const locks = PM_LOCKFILES[pm];
162
201
  const hint = `Run \`${pm} install\` from the repo root.`;
202
+ const base = { name: 'install', category: 'install', required: true };
163
203
  if (!locks.some((lock) => env.exists(join(cwd, lock)))) {
164
- return { name: 'install', category: 'install', required: true, status: 'missing', found: null, expected: `${locks.join(' or ')} present`, hint };
204
+ return { ...base, status: 'missing', found: null, expected: `${locks.join(' or ')} present`, hint };
205
+ }
206
+ // PnP is a Yarn feature; gating on the manager keeps a stale `.pnp.cjs` left
207
+ // behind by a migration off Yarn from rerouting an npm or pnpm repo.
208
+ if (pm === 'yarn' && isPnPInstall(cwd, env.exists)) {
209
+ return { ...base, status: 'ok', found: '.pnp.cjs + lockfile (Yarn PnP)', expected: null, hint: null };
165
210
  }
166
211
  if (!env.exists(join(cwd, 'node_modules'))) {
167
- return { name: 'install', category: 'install', required: true, status: 'missing', found: 'lockfile only', expected: 'node_modules/ populated', hint };
212
+ return { ...base, status: 'missing', found: 'lockfile only', expected: 'node_modules/ populated', hint };
168
213
  }
169
- return { name: 'install', category: 'install', required: true, status: 'ok', found: 'node_modules + lockfile', expected: null, hint: null };
214
+ return { ...base, status: 'ok', found: 'node_modules + lockfile', expected: null, hint: null };
170
215
  }
171
- /** Presence-only probe: does the adapter's tool binary resolve? */
172
- async function probeTool(adapter, cwd, env) {
216
+ /**
217
+ * Where a slot's tool has to be, and whether it is there.
218
+ *
219
+ * Two layouts, two questions. Under a `node_modules` install the lookup walks
220
+ * `cwd` upward via {@link resolveSlotTool}, so a workspace tool hoisted to the
221
+ * repo root reports `ok` from a package subdirectory instead of a false
222
+ * `missing`. Under Yarn PnP there is no `node_modules/.bin` to stat at all, so
223
+ * the question goes to the resolver that owns the answer: `<pm> bin <tool>`
224
+ * prints the path and exits 0, or exits 1. Gated on yarn for the same reason as
225
+ * {@link checkInstall} — a `.pnp.cjs` left by a migration off Yarn must not
226
+ * reroute an npm or pnpm repo.
227
+ *
228
+ * Either way a tool that does not resolve reports `missing`: the PnP path asks a
229
+ * looser question, not a softer one.
230
+ */
231
+ async function probeExecTool(tool, cwd, pm, env) {
232
+ // The hint names the detected manager's own install command — the row a reader
233
+ // lands on when a slot is red is the wrong place to be told to run another PM.
234
+ const missing = (expected) => ({
235
+ status: 'missing',
236
+ found: null,
237
+ expected,
238
+ hint: `Run \`${pm} install\`, or declare it: \`${installCommand(pm, tool)}\`.`,
239
+ });
240
+ if (pm === 'yarn' && isPnPInstall(cwd, env.exists)) {
241
+ const expected = `resolvable via \`${pm} bin ${tool}\``;
242
+ const resolved = await env.binPath(pm, tool, cwd);
243
+ // A probe that never answered is `unknown`, not `missing` — the same
244
+ // treatment `checkVersioned` gives a timed-out `--version`. Reporting it as
245
+ // missing would advise installing a tool that may well be right there.
246
+ if (resolved === PROBE_TIMED_OUT) {
247
+ return { status: 'unknown', found: null, expected, hint: `\`${pm} bin ${tool}\` timed out (>${VERSION_TIMEOUT_S}s). Is ${pm} responsive?` };
248
+ }
249
+ return resolved ? { status: 'ok', found: resolved, expected, hint: null } : missing(expected);
250
+ }
251
+ const bin = resolveSlotTool(cwd, tool, env.exists);
252
+ return bin
253
+ ? { status: 'ok', found: bin, expected: `node_modules/.bin/${tool}`, hint: null }
254
+ : missing(`node_modules/.bin/${tool}`);
255
+ }
256
+ /** Presence-only probe: does the adapter's tool resolve? Dispatch by adapter shape. */
257
+ async function probeTool(adapter, cwd, pm, env) {
173
258
  if (adapter.builtin) {
174
259
  return { status: 'ok', found: 'built-in', expected: null, hint: null };
175
260
  }
176
261
  if (adapter.command === 'pnpm' && adapter.args[0] === 'exec') {
177
- const tool = adapter.args[1];
262
+ const tool = execTool(adapter.command, adapter.args);
178
263
  if (!tool)
179
264
  return { status: 'unknown', found: null, expected: null, hint: null };
180
- const bin = join(cwd, 'node_modules', '.bin', tool);
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}).` };
265
+ return probeExecTool(tool, cwd, pm, env);
184
266
  }
185
267
  const path = await env.which(adapter.command);
186
268
  return path
@@ -215,7 +297,7 @@ function offRow(base, r, adapter, config, pm) {
215
297
  if (config?.checks?.[r.slot] === false) {
216
298
  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
299
  }
218
- // Adapter is PM-specific and can't run here — e.g. `pnpm audit` off pnpm (b5).
300
+ // Adapter is PM-specific and can't run here — e.g. `pnpm audit` off pnpm.
219
301
  if (adapter && !isAvailableUnder(adapter.command, adapter.args, pm)) {
220
302
  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
303
  }
@@ -227,7 +309,7 @@ function detectedClause(r) {
227
309
  }
228
310
  /**
229
311
  * 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 (D9/D10/D11).
312
+ * always-available opt-in slot explains what it would check.
231
313
  * `build`'s signal (`scripts.build`) already rides its `detectScript` detection,
232
314
  * so it isn't repeated here.
233
315
  */
@@ -268,9 +350,74 @@ async function classifySlot(r, defaultActive, adapters, config, cwd, env, pm) {
268
350
  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
351
  }
270
352
  // Adapter resolved: probe the tool, classify by default-run membership.
271
- const probe = await probeTool(adapter, cwd, env);
353
+ const probe = await probeTool(adapter, cwd, pm, env);
272
354
  return toolRow(base, r, adapter, defaultActive, probe);
273
355
  }
356
+ /**
357
+ * The one thing `doctor` cannot see by looking at itself: what a hook would get.
358
+ *
359
+ * Every other row here describes the shell `doctor` was typed into. An agent
360
+ * harness runs its hooks in a **non-login shell**, which never sources the rc
361
+ * file a version manager puts its shims in, so the hook gets the machine's
362
+ * default Node instead. In a repo pinning `engines.node` that is enough for the
363
+ * package manager to refuse to run anything — and `doctor`, running on the right
364
+ * Node, reported `environment ok` throughout. This bug was invisible to every
365
+ * read-only command checkride had.
366
+ *
367
+ * So the row does not ask "is the Node here correct" — it is, that is the whole
368
+ * problem. It asks the question that *is* answerable from any shell: **if a hook
369
+ * arrives on a different Node, can checkride put the pinned one back?** That
370
+ * depends only on the pin and on what is installed, both of which are the same
371
+ * from either shell.
372
+ *
373
+ * Never required. A repo whose contributors always work in the right shell is
374
+ * not broken, and flipping `doctor` red for it would be the false alarm this
375
+ * whole change is about removing.
376
+ */
377
+ function checkNodePin(cwd, engines, env) {
378
+ const base = { name: 'node pin', category: 'env', required: false };
379
+ const pin = readNodePin(cwd, env);
380
+ if (pin === null)
381
+ return engines.node === undefined ? null : unpinnedRow(base, engines);
382
+ const install = findPinnedNode(pin, env);
383
+ const expected = `${pin.file} ${pin.version}`;
384
+ if (install === null) {
385
+ return {
386
+ ...base,
387
+ status: 'outdated',
388
+ found: 'no matching install found',
389
+ expected,
390
+ hint: `Agent hooks run in a non-login shell and get this machine's default Node, not this shell's ` +
391
+ `(${env.running()}). No Node satisfying ${pin.version} is installed in a layout checkride knows ` +
392
+ `(nvm, fnm, nodenv, asdf, volta, n), so it cannot align a hook that arrives on the wrong one — ` +
393
+ `the gate will report "could not run" rather than a misleading red. Install it, or set ` +
394
+ `${NODE_BIN_VAR} to its bin directory.`,
395
+ };
396
+ }
397
+ return {
398
+ ...base,
399
+ status: 'ok',
400
+ found: install.bin,
401
+ expected,
402
+ hint: "Agent hooks run in a non-login shell; the gate aligns to this when the hook's Node differs.",
403
+ };
404
+ }
405
+ /**
406
+ * The row for a repo with `engines.node` and no `.nvmrc`/`.node-version` — a
407
+ * repo whose package manager can refuse a hook, with no exact version for
408
+ * checkride to align to when it does.
409
+ */
410
+ function unpinnedRow(base, engines) {
411
+ return {
412
+ ...base,
413
+ status: 'outdated',
414
+ found: 'no .nvmrc or .node-version',
415
+ expected: engines.node ?? null,
416
+ hint: `This repo pins \`engines.node\` ${engines.node} but names no exact version. Agent hooks run in ` +
417
+ `a non-login shell and get this machine's default Node, which a package manager may then refuse ` +
418
+ `to run under. Add a \`.nvmrc\` so checkride can align the gate to it, or set ${NODE_BIN_VAR}.`,
419
+ };
420
+ }
274
421
  async function checkWritable(cwd, env) {
275
422
  const dir = join(cwd, '.check');
276
423
  const ok = await env.canWrite(dir);
@@ -313,10 +460,26 @@ const GROUPS = [
313
460
  { key: 'tool', label: 'CHECKS' },
314
461
  { key: 'workspace', label: 'WORKSPACE' },
315
462
  ];
316
- function renderToolRow(c, out) {
317
- const slot = (c.slot ?? c.name).padEnd(10);
318
- const adapter = (c.adapter ?? '—').padEnd(18);
319
- const enablement = (c.enablement ?? '').padEnd(12);
463
+ /**
464
+ * Size each column to its widest row, never below the historical minimum.
465
+ * Fixed widths were sized for catalogue slot names and a config custom check
466
+ * blows straight past them — `typecheck-tests` (15) against a 10-wide column,
467
+ * `custom:typecheck-tests` (22) against 18 — which shunts every following
468
+ * column right on that row alone and makes the table unreadable at exactly the
469
+ * moment someone is reading it to debug their config.
470
+ */
471
+ function toolWidths(items) {
472
+ const widest = (pick, min) => items.reduce((n, c) => Math.max(n, pick(c).length), min);
473
+ return {
474
+ slot: widest((c) => c.slot ?? c.name, 10),
475
+ adapter: widest((c) => c.adapter ?? '—', 18),
476
+ enablement: widest((c) => c.enablement ?? '', 12),
477
+ };
478
+ }
479
+ function renderToolRow(c, w, out) {
480
+ const slot = (c.slot ?? c.name).padEnd(w.slot);
481
+ const adapter = (c.adapter ?? '—').padEnd(w.adapter);
482
+ const enablement = (c.enablement ?? '').padEnd(w.enablement);
320
483
  out.write(` ${slotMark(c)} ${slot} ${adapter} ${enablement} ${slotNote(c)}\n`);
321
484
  if (c.hint)
322
485
  out.write(` -> ${c.hint}\n`);
@@ -341,8 +504,9 @@ function renderGroup(group, report, out) {
341
504
  return;
342
505
  out.write(` ${group.label}\n`);
343
506
  if (group.key === 'tool') {
507
+ const widths = toolWidths(items);
344
508
  for (const c of items)
345
- renderToolRow(c, out);
509
+ renderToolRow(c, widths, out);
346
510
  renderSlotSummary(items, out);
347
511
  return;
348
512
  }
@@ -365,8 +529,10 @@ export async function runDoctor(options) {
365
529
  const nodeMin = parseSemver(engines.node) ?? { major: 22, minor: 18, patch: 0, raw: '22.18.0' };
366
530
  const pnpmMin = parseSemver(engines.pnpm) ?? { major: 9, minor: 0, patch: 0, raw: '9.0.0' };
367
531
  const pm = env.packageManager(cwd);
532
+ const nodePin = checkNodePin(cwd, engines, options.pinEnv ?? realPinEnv);
368
533
  const checks = [
369
534
  await checkVersioned('node', 'node', nodeMin, env),
535
+ ...(nodePin === null ? [] : [nodePin]),
370
536
  await checkPackageManager(pm, pnpmMin, env),
371
537
  await checkPresent('git', 'git', env),
372
538
  checkInstall(cwd, pm, env),
@@ -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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"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * `checkride gate` — the stop-gate verdict, harness-neutral.
3
+ *
4
+ * Every agent harness offers some "the turn is ending" hook, and checkride's
5
+ * gate hangs off it: run the repo's `check` script, and while it is red, refuse
6
+ * to let the turn finish. What differs between harnesses is only the *wire
7
+ * format* of that refusal — Claude Code reads stderr and blocks on exit 2,
8
+ * Cursor reads a `followup_message` on stdout and submits it as the next turn.
9
+ * The decision itself (is it dirty, is it green, which artifact should the agent
10
+ * read) is identical, so it lives here once and the generated hook scripts
11
+ * become two-line adapters that name their harness.
12
+ *
13
+ * That split is the point. Before this command, the whole body was duplicated
14
+ * shell inside `.claude/hooks/checkride-gate.sh`, untestable outside an e2e run
15
+ * and impossible to share with a second harness.
16
+ *
17
+ * The gate answers three verdicts, not two. Green and red are the pipeline's;
18
+ * the third is **could not run**, for a package manager that refused to start
19
+ * the check script at all — an `engines.node` pin the hook's Node does not
20
+ * satisfy is the common cause, and it exits non-zero exactly like a failing
21
+ * test. Reading that as red produced a permanent red no code change could clear,
22
+ * pointing at a `.check/summary.json` no run had written. It still blocks, for
23
+ * the same reason every unrunnable gate does; what changes is that it names the
24
+ * cause instead of naming an artifact. See `./pm/launch.ts` for the
25
+ * classification and `./node-pin.ts` for the alignment that avoids it.
26
+ *
27
+ * Not to be confused with `../triage/gate.ts`, which also runs the `check`
28
+ * script: that one runs it *verbatim* as a reader's preflight and classifies the
29
+ * result for a report. This one appends `--strict --digest` because it IS the
30
+ * gate, and its output is a verdict for the harness, not prose for a human.
31
+ */
32
+ import type { CheckrideConfig, GateProfile } from './config.js';
33
+ import type { PinEnv } from './node-pin.js';
34
+ import type { Out } from './orchestrator.js';
35
+ import { type PackageManager } from './pm/index.js';
36
+ /**
37
+ * The edit marker: touched by the harness's "a file changed" hook, checked here
38
+ * under `--if-dirty`, and cleared by a green gate. Dot-named so it can never
39
+ * collide with a slot's `<slot>.json`/`<slot>.stdout.txt` artifacts, which the
40
+ * orchestrator deletes per slot before a re-run — the marker must survive every
41
+ * run.
42
+ *
43
+ * It lives here, not in `agent-setup`, because the gate is what reads and clears
44
+ * it; the hook writers import it from this module to build the touch command.
45
+ */
46
+ export declare const DIRTY_MARKER = ".check/.dirty";
47
+ /**
48
+ * Cursor's own hook config. It lives here rather than in `agent-setup/cursor.ts`
49
+ * for the same reason {@link DIRTY_MARKER} does: the gate *reads* it (see
50
+ * {@link deferredToCursor}), and the writer importing from the gate is the
51
+ * direction that has no cycle. `agent-setup/cursor.ts` re-exports it.
52
+ */
53
+ export declare const CURSOR_HOOKS_FILE = ".cursor/hooks.json";
54
+ /** Every harness whose stop-hook protocol the gate can speak. */
55
+ export declare const HARNESS_NAMES: readonly ["claude", "cursor"];
56
+ export type HarnessName = (typeof HARNESS_NAMES)[number];
57
+ /**
58
+ * Spawn the check script and forward its output. Injectable so the command's
59
+ * branches are testable without a real toolchain.
60
+ *
61
+ * Both child streams are forwarded to **stderr**, never stdout: under
62
+ * `--harness cursor` this process's stdout must contain the hook's JSON and
63
+ * nothing else, and in a hook context the check's output is human-facing
64
+ * progress either way. Returns the exit code; a signal death is `null` and the
65
+ * caller reads it as red, because "not cleanly green" is the only distinction a
66
+ * gate needs.
67
+ */
68
+ export type GateSpawn = (command: string, args: readonly string[], opts: {
69
+ cwd: string;
70
+ stderr: Out;
71
+ env: Record<string, string | undefined>;
72
+ }) => Promise<number | null>;
73
+ export type GateOptions = {
74
+ cwd?: string;
75
+ /** Skip the run entirely when the edit marker is absent (`--if-dirty`). */
76
+ ifDirty?: boolean;
77
+ /** Which harness's stop-hook protocol to answer in. Defaults to `claude`. */
78
+ harness?: HarnessName;
79
+ pm?: PackageManager;
80
+ stdout?: Out;
81
+ stderr?: Out;
82
+ spawn?: GateSpawn;
83
+ /** Process environment; injectable so {@link deferredToCursor} is testable. */
84
+ env?: Record<string, string | undefined>;
85
+ /** The Node-pin surface; injectable so alignment is testable without a version manager. */
86
+ pinEnv?: PinEnv;
87
+ /**
88
+ * The gate profile. Read from `checkride.config.json` when absent; pass `null`
89
+ * to run the full check whatever the config says.
90
+ */
91
+ profile?: GateProfile | null;
92
+ /** Wall-clock source for the elapsed time the gate reports; injectable for tests. */
93
+ now?: () => number;
94
+ };
95
+ export type GateResult = {
96
+ exitCode: number;
97
+ /** False when `--if-dirty` or the Cursor deferral short-circuited the run. */
98
+ ran: boolean;
99
+ green: boolean;
100
+ /**
101
+ * Why the package manager never started the check script, or `null` when it
102
+ * did. A refusal is not a red: it blocks the turn all the same, but nothing
103
+ * was checked and nothing was written, so no artifact describes this run.
104
+ */
105
+ refusal: string | null;
106
+ };
107
+ /**
108
+ * The gate's `check`-script invocation for `pm` (the alias `agent-setup`
109
+ * ensures exists). The hook IS a gate, so it runs `--strict` (zero checks
110
+ * running is exit 2, not a pass — docs/contract.md) and `--digest` (the
111
+ * token-bounded failure excerpt is a far better landing spot for an agent than
112
+ * raw summary.json). npm alone needs `--` to reach the script with flags;
113
+ * pnpm/yarn/bun forward them directly.
114
+ */
115
+ export declare function checkArgs(pm: PackageManager, profile?: GateProfile | null): string[];
116
+ /**
117
+ * The repo's gate profile, or `null` when it configures none and the gate should
118
+ * run the whole check.
119
+ *
120
+ * A profile with nothing in it is `null` too: `"gate": {}` narrows nothing, and
121
+ * carrying it forward would put "not the full check" on a verdict that *was* the
122
+ * full check.
123
+ */
124
+ export declare function gateProfile(cwd: string, config?: CheckrideConfig | null): GateProfile | null;
125
+ /**
126
+ * Run the gate and answer in `harness`'s protocol.
127
+ *
128
+ * The exit code is unchanged and stays as `docs/contract.md` promises it: 2 while
129
+ * blocked under `--harness claude`, always 0 under `--harness cursor`. What each
130
+ * harness *displays* is carried by the JSON body on stdout — see
131
+ * {@link reportGreen} and {@link reportRed} — because that is the only channel
132
+ * either harness renders for a human.
133
+ */
134
+ export declare function runGate(options?: GateOptions): Promise<GateResult>;
135
+ //# sourceMappingURL=gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../src/gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAOH,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGhE,OAAO,KAAK,EAAiB,MAAM,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,KAAK,EAAE,GAAG,EAAgB,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAGL,KAAK,cAAc,EAGpB,MAAM,eAAe,CAAC;AAEvB;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAK5C;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,uBAAuB,CAAC;AAStD,iEAAiE;AACjE,eAAO,MAAM,aAAa,+BAAgC,CAAC;AAC3D,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAKzD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,SAAS,GAAG,CACtB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;CAAE,KACxE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AA8C5B,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,EAAE,CAAC,EAAE,cAAc,CAAC;IACpB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,+EAA+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,2FAA2F;IAC3F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7B,qFAAqF;IACrF,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf;;;;OAIG;IACH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CAAC;AA+BF;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,GAAE,WAAW,GAAG,IAAW,GAAG,MAAM,EAAE,CAS1F;AAkBD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,eAAe,GAAG,IAAsB,GAAG,WAAW,GAAG,IAAI,CAI7G;AAuTD;;;;;;;;GAQG;AACH,wBAAsB,OAAO,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAiD5E"}