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,6 +1,5 @@
1
1
  /**
2
- * Built-in `pack` check (ported from the interim `scripts/check-publish.mjs`
3
- * pack arm).
2
+ * Built-in `pack` check.
4
3
  *
5
4
  * Runs the detected package manager's tarball dry-run (`<pm> pack --dry-run
6
5
  * --json`, lifecycle scripts suppressed) and inspects the file list the way a
@@ -8,15 +7,15 @@
8
7
  *
9
8
  * - every path the manifest promises (`exports`/`main`/`types`/`bin` targets,
10
9
  * plus `README.md`) must be present — a miss means the package resolves to a
11
- * file the tarball never included (D10);
10
+ * file the tarball never included;
12
11
  * - no path may match the fixed deny list (TypeScript source, tests, `src/`,
13
12
  * `docs/`, `scripts/`, `.check/` and kin), with a carve-out for `dist`
14
13
  * declaration files (`*.d.{ts,mts,cts}` and their maps) which are legitimate
15
- * shipped artifacts (Q8).
14
+ * shipped artifacts.
16
15
  *
17
16
  * The pack subprocess is spawned through the orchestrator's registering spawner
18
17
  * (injected as `spawn`), so its child joins `liveChecks` and inherits the
19
- * per-check timeout + SIGTERM→SIGKILL reaping like every other check (D16/C6).
18
+ * per-check timeout + SIGTERM→SIGKILL reaping like every other check.
20
19
  *
21
20
  * Returns a result the orchestrator persists to `.check/pack.json`:
22
21
  * stdout `{ ok: true, files: [...] }` on success (exit 0)
@@ -35,10 +34,10 @@ export type PackSpawn = (command: string, args: string[], cwd: string, timeoutSe
35
34
  /**
36
35
  * The pack invocation for `pm`, or `null` when the PM has no supported
37
36
  * `pack --dry-run --json` form (yarn/bun — unavailable-until-adapter, mirroring
38
- * the pnpm-only `security` slot; D10). Both supported managers emit npm's
39
- * `files[].path` shape (confirmed by the step-5 spike), and both must have
37
+ * the pnpm-only `security` slot). Both supported managers emit npm's
38
+ * `files[].path` shape, and both must have
40
39
  * lifecycle scripts suppressed so a `"prepack": "<build>"` can't rewrite `dist/`
41
- * mid-wave-20 under smoke/snippets-dist (Q7) — npm spells that `--ignore-scripts`,
40
+ * mid-wave-20 under smoke/snippets-dist — npm spells that `--ignore-scripts`,
42
41
  * pnpm rejects that flag and spells it `--config.ignore-scripts=true`.
43
42
  */
44
43
  export declare function packInvocation(pm: PackageManager): {
@@ -46,7 +45,7 @@ export declare function packInvocation(pm: PackageManager): {
46
45
  args: string[];
47
46
  } | null;
48
47
  /**
49
- * The set of paths the tarball must contain, derived from the manifest (D10):
48
+ * The set of paths the tarball must contain, derived from the manifest:
50
49
  * resolved `exports` targets, `main`, `types`/`typings`, `bin` targets — plus
51
50
  * `README.md`, which every publish is expected to ship.
52
51
  */
@@ -1 +1 @@
1
- {"version":3,"file":"pack.d.ts","sourceRoot":"","sources":["../src/pack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,gFAAgF;AAChF,KAAK,SAAS,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,uFAAuF;AACvF,MAAM,MAAM,SAAS,GAAG,CACtB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,MAAM,KAChB,OAAO,CAAC,YAAY,CAAC,CAAC;AAE3B;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,cAAc,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAK7F;AA6BD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAa7E;AA2BD;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,GAC5B;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,SAAS,EAAE,CAAA;CAAE,CAY/C;AAwCD;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,cAAc,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,YAAY,CAAC,CA2DxB"}
1
+ {"version":3,"file":"pack.d.ts","sourceRoot":"","sources":["../src/pack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD,gFAAgF;AAChF,KAAK,SAAS,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,uFAAuF;AACvF,MAAM,MAAM,SAAS,GAAG,CACtB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,MAAM,KAChB,OAAO,CAAC,YAAY,CAAC,CAAC;AAE3B;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,cAAc,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAK7F;AAiED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAa7E;AA2BD;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,GAC5B;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,SAAS,EAAE,CAAA;CAAE,CAY/C;AA6CD;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,cAAc,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,YAAY,CAAC,CA8DxB"}
@@ -1,6 +1,5 @@
1
1
  /**
2
- * Built-in `pack` check (ported from the interim `scripts/check-publish.mjs`
3
- * pack arm).
2
+ * Built-in `pack` check.
4
3
  *
5
4
  * Runs the detected package manager's tarball dry-run (`<pm> pack --dry-run
6
5
  * --json`, lifecycle scripts suppressed) and inspects the file list the way a
@@ -8,30 +7,32 @@
8
7
  *
9
8
  * - every path the manifest promises (`exports`/`main`/`types`/`bin` targets,
10
9
  * plus `README.md`) must be present — a miss means the package resolves to a
11
- * file the tarball never included (D10);
10
+ * file the tarball never included;
12
11
  * - no path may match the fixed deny list (TypeScript source, tests, `src/`,
13
12
  * `docs/`, `scripts/`, `.check/` and kin), with a carve-out for `dist`
14
13
  * declaration files (`*.d.{ts,mts,cts}` and their maps) which are legitimate
15
- * shipped artifacts (Q8).
14
+ * shipped artifacts.
16
15
  *
17
16
  * The pack subprocess is spawned through the orchestrator's registering spawner
18
17
  * (injected as `spawn`), so its child joins `liveChecks` and inherits the
19
- * per-check timeout + SIGTERM→SIGKILL reaping like every other check (D16/C6).
18
+ * per-check timeout + SIGTERM→SIGKILL reaping like every other check.
20
19
  *
21
20
  * Returns a result the orchestrator persists to `.check/pack.json`:
22
21
  * stdout `{ ok: true, files: [...] }` on success (exit 0)
23
22
  * stdout `{ ok: false, missing: [...], forbidden: [...] }` on a content miss (exit 1)
24
23
  * stdout `{ ok: false, error, ... }` when pack itself failed or emitted malformed output (exit 1)
25
24
  */
26
- import { readFile } from 'node:fs/promises';
25
+ import { mkdtemp, readFile, rm } from 'node:fs/promises';
26
+ import { tmpdir } from 'node:os';
27
27
  import { join } from 'node:path';
28
+ import { parseToolJson } from './tool-json.js';
28
29
  /**
29
30
  * The pack invocation for `pm`, or `null` when the PM has no supported
30
31
  * `pack --dry-run --json` form (yarn/bun — unavailable-until-adapter, mirroring
31
- * the pnpm-only `security` slot; D10). Both supported managers emit npm's
32
- * `files[].path` shape (confirmed by the step-5 spike), and both must have
32
+ * the pnpm-only `security` slot). Both supported managers emit npm's
33
+ * `files[].path` shape, and both must have
33
34
  * lifecycle scripts suppressed so a `"prepack": "<build>"` can't rewrite `dist/`
34
- * mid-wave-20 under smoke/snippets-dist (Q7) — npm spells that `--ignore-scripts`,
35
+ * mid-wave-20 under smoke/snippets-dist — npm spells that `--ignore-scripts`,
35
36
  * pnpm rejects that flag and spells it `--config.ignore-scripts=true`.
36
37
  */
37
38
  export function packInvocation(pm) {
@@ -42,6 +43,32 @@ export function packInvocation(pm) {
42
43
  return { command: 'pnpm', args: [...base, '--config.ignore-scripts=true'] };
43
44
  return null;
44
45
  }
46
+ /** True when the PM rejected the `--dry-run` flag itself, not the pack. */
47
+ function rejectedDryRun(outcome) {
48
+ const text = `${outcome.stdout}\n${outcome.stderr}`;
49
+ return text.includes('Unknown option') && text.includes('dry-run');
50
+ }
51
+ /**
52
+ * The fallback for pnpm without `pack --dry-run` — the flag only landed in
53
+ * pnpm 10.26.0, and every earlier pnpm (all of 9.x, 10.x through 10.25)
54
+ * rejects it with `Unknown option: 'dry-run'`, which failed the slot hard on
55
+ * a manager checkride promises to support. A real pack into a temp
56
+ * destination emits the same npm-shaped `files[].path` JSON (verified back to
57
+ * 10.18.1) and honors the same lifecycle-script suppression; the destination
58
+ * lives outside the repo so a tarball can never land in the tree or another
59
+ * check's view, and it is removed with the temp dir afterward, success or
60
+ * not. Capability fallback by design: probing `pnpm --version` would trade
61
+ * one brittle coupling for another.
62
+ */
63
+ async function spawnPackFallback(spawn, cwd, timeoutSec) {
64
+ const dest = await mkdtemp(join(tmpdir(), 'checkride-pack-'));
65
+ try {
66
+ return await spawn('pnpm', ['pack', '--json', '--pack-destination', dest, '--config.ignore-scripts=true'], cwd, timeoutSec);
67
+ }
68
+ finally {
69
+ await rm(dest, { recursive: true, force: true });
70
+ }
71
+ }
45
72
  /** Strip a leading `./` so manifest targets and pack paths compare on equal footing. */
46
73
  function normalize(target) {
47
74
  return target.startsWith('./') ? target.slice(2) : target;
@@ -70,7 +97,7 @@ function addField(value, acc) {
70
97
  acc.add(normalize(value));
71
98
  }
72
99
  /**
73
- * The set of paths the tarball must contain, derived from the manifest (D10):
100
+ * The set of paths the tarball must contain, derived from the manifest:
74
101
  * resolved `exports` targets, `main`, `types`/`typings`, `bin` targets — plus
75
102
  * `README.md`, which every publish is expected to ship.
76
103
  */
@@ -91,8 +118,8 @@ export function deriveRequired(manifest) {
91
118
  return required;
92
119
  }
93
120
  /**
94
- * Fixed deny list (D10): paths that must never ship. A `dist` declaration file
95
- * is exempt (`isDistDeclaration` — the Q8 carve-out is applied before these), so
121
+ * Fixed deny list: paths that must never ship. A `dist` declaration file
122
+ * is exempt (`isDistDeclaration` — the carve-out is applied before these), so
96
123
  * `\.ts$` here only ever bites real `.ts` source outside `dist`.
97
124
  */
98
125
  const DENY = [
@@ -108,7 +135,7 @@ const DENY = [
108
135
  /**
109
136
  * A `dist` declaration artifact — `dist/**​/*.d.{ts,mts,cts}` and their source
110
137
  * maps. These legitimately ship, so they are exempt from the deny list even
111
- * though `dist/index.d.ts` matches `\.ts$` (Q8).
138
+ * though `dist/index.d.ts` matches `\.ts$`.
112
139
  */
113
140
  function isDistDeclaration(path) {
114
141
  return /^dist\/.*\.d\.(ts|mts|cts)(\.map)?$/.test(path);
@@ -140,9 +167,15 @@ function isRecord(value) {
140
167
  function prop(value, key) {
141
168
  return isRecord(value) ? value[key] : undefined;
142
169
  }
143
- /** Parse the `files[].path` array out of a `pack --dry-run --json` payload. */
170
+ /**
171
+ * Parse the `files[].path` array out of a `pack --dry-run --json` payload.
172
+ * Tolerant of a launcher preamble ahead of the JSON — see `parseToolJson`.
173
+ */
144
174
  function parsePackFiles(stdout) {
145
- const parsed = JSON.parse(stdout);
175
+ const json = parseToolJson(stdout);
176
+ if (!json)
177
+ throw new Error('pack output was not JSON');
178
+ const parsed = json.value;
146
179
  const entry = Array.isArray(parsed) ? parsed[0] : parsed;
147
180
  const files = prop(entry, 'files');
148
181
  if (!Array.isArray(files))
@@ -185,10 +218,13 @@ export async function checkPack(opts) {
185
218
  return fail(`${JSON.stringify({ ok: false, error: `could not read package.json: ${read.message}` }, null, 2)}\n`, `check-pack: could not read package.json: ${read.message}\n`);
186
219
  }
187
220
  const manifest = read.manifest;
188
- const outcome = await spawn(invocation.command, invocation.args, cwd, timeoutSec);
221
+ let outcome = await spawn(invocation.command, invocation.args, cwd, timeoutSec);
222
+ if (outcome.exit_code !== 0 && pm === 'pnpm' && rejectedDryRun(outcome)) {
223
+ outcome = await spawnPackFallback(spawn, cwd, timeoutSec);
224
+ }
189
225
  if (outcome.exit_code !== 0) {
190
226
  const detail = outcome.stderr.trim() || outcome.stdout.trim();
191
- return fail(`${JSON.stringify({ ok: false, error: `${invocation.command} pack --dry-run exited ${outcome.exit_code}` }, null, 2)}\n`, `check-pack: ${invocation.command} pack --dry-run exited ${outcome.exit_code}${detail ? `\n${detail}` : ''}\n`);
227
+ return fail(`${JSON.stringify({ ok: false, error: `${invocation.command} pack exited ${outcome.exit_code}` }, null, 2)}\n`, `check-pack: ${invocation.command} pack exited ${outcome.exit_code}${detail ? `\n${detail}` : ''}\n`);
192
228
  }
193
229
  let filePaths;
194
230
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"pack.js","sourceRoot":"","sources":["../src/pack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pack.js","sourceRoot":"","sources":["../src/pack.ts"],"names":[],"mappings":"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"}
@@ -3,11 +3,16 @@
3
3
  *
4
4
  * Resolves which package manager a repo uses so the orchestrator can translate
5
5
  * each adapter's canonical `pnpm exec <tool>` invocation into that PM's form.
6
- * Resolution order (D5): the declared `packageManager` field wins (it is the
6
+ * Resolution order: the declared `packageManager` field wins (it is the
7
7
  * author's explicit intent), then a lockfile, then a `pnpm` default. Every fs
8
8
  * touch is injectable so the logic is unit-testable without a real repo.
9
9
  */
10
10
  export type PackageManager = 'pnpm' | 'npm' | 'yarn' | 'bun';
11
+ /**
12
+ * Every lockfile name, without its package manager — a lockfile is also what
13
+ * marks the top of a repository, which is where a tool search has to stop.
14
+ */
15
+ export declare const LOCKFILE_NAMES: readonly string[];
11
16
  /**
12
17
  * Resolve the package manager for `cwd`: the declared `packageManager` field,
13
18
  * else the first matching lockfile, else `pnpm`. `fileExists` and
@@ -1 +1 @@
1
- {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/pm/detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AAmC7D;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,GAAE;IACL,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CAC3C,GACL,cAAc,CAYhB"}
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/pm/detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AAkB7D;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAAiC,CAAC;AAmB9E;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,GAAE;IACL,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CAC3C,GACL,cAAc,CAYhB"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Resolves which package manager a repo uses so the orchestrator can translate
5
5
  * each adapter's canonical `pnpm exec <tool>` invocation into that PM's form.
6
- * Resolution order (D5): the declared `packageManager` field wins (it is the
6
+ * Resolution order: the declared `packageManager` field wins (it is the
7
7
  * author's explicit intent), then a lockfile, then a `pnpm` default. Every fs
8
8
  * touch is injectable so the logic is unit-testable without a real repo.
9
9
  */
@@ -22,6 +22,11 @@ const LOCKFILES = [
22
22
  { file: 'yarn.lock', pm: 'yarn' },
23
23
  { file: 'package-lock.json', pm: 'npm' },
24
24
  ];
25
+ /**
26
+ * Every lockfile name, without its package manager — a lockfile is also what
27
+ * marks the top of a repository, which is where a tool search has to stop.
28
+ */
29
+ export const LOCKFILE_NAMES = LOCKFILES.map((l) => l.file);
25
30
  /** Parse the `packageManager` field value (`"yarn@3.6.1"` → `'yarn'`), if known. */
26
31
  function parseField(value) {
27
32
  if (!value)
@@ -1 +1 @@
1
- {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/pm/detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,KAAK,GAAwB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAE3E,oDAAoD;AACpD,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,+EAA+E;AAC/E,MAAM,SAAS,GAAoD;IACjE,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,EAAE;IACtC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE;IAC/B,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE;IAChC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE;IACjC,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,KAAK,EAAE;CACzC,CAAC;AAEF,oFAAoF;AACpF,SAAS,UAAU,CAAC,KAAyB;IAC3C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC/C,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED,iFAAiF;AACjF,SAAS,uBAAuB,CAAC,GAAW;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,GAAgC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACrG,OAAO,GAAG,CAAC,cAAc,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAII,EAAE;IAEN,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,SAAS,GAAG,KAAK,CAAC,mBAAmB,IAAI,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC;IAEpF,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;IACzC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,KAAK,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,SAAS,EAAE,CAAC;QACrC,IAAI,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;IAClC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/pm/detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,KAAK,GAAwB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAE3E,oDAAoD;AACpD,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,+EAA+E;AAC/E,MAAM,SAAS,GAAoD;IACjE,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,EAAE;IACtC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE;IAC/B,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE;IAChC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE;IACjC,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,KAAK,EAAE;CACzC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAsB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAE9E,oFAAoF;AACpF,SAAS,UAAU,CAAC,KAAyB;IAC3C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC/C,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED,iFAAiF;AACjF,SAAS,uBAAuB,CAAC,GAAW;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,GAAgC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACrG,OAAO,GAAG,CAAC,cAAc,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAII,EAAE;IAEN,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,SAAS,GAAG,KAAK,CAAC,mBAAmB,IAAI,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC;IAEpF,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;IACzC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,KAAK,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,SAAS,EAAE,CAAC;QACrC,IAAI,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;IAClC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -2,9 +2,13 @@
2
2
  * Package-manager module — the public surface for detecting a repo's package
3
3
  * manager and translating each adapter's canonical `pnpm exec <tool>` prefix
4
4
  * into that PM's form. Detection lives in `detect.ts`, translation in
5
- * `translate.ts`; siblings import only from here.
5
+ * `translate.ts`, where a slot's tool must resolve from in `tools.ts`, and the
6
+ * refusals that mean it never launched at all in `launch.ts`; siblings import
7
+ * only from here.
6
8
  */
7
9
  export type { PackageManager } from './detect.js';
8
10
  export { detectPackageManager } from './detect.js';
9
- export { isAvailableUnder, translateExec } from './translate.js';
11
+ export { launchRefusal, SPAWN_FAILED_MARKER } from './launch.js';
12
+ export { execTool, execUsesGlobalCache, installCommand, isPnPInstall, resolveSlotTool } from './tools.js';
13
+ export { execCommand, isAvailableUnder, runScript, translateExec } from './translate.js';
10
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pm/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pm/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC1G,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
@@ -2,8 +2,12 @@
2
2
  * Package-manager module — the public surface for detecting a repo's package
3
3
  * manager and translating each adapter's canonical `pnpm exec <tool>` prefix
4
4
  * into that PM's form. Detection lives in `detect.ts`, translation in
5
- * `translate.ts`; siblings import only from here.
5
+ * `translate.ts`, where a slot's tool must resolve from in `tools.ts`, and the
6
+ * refusals that mean it never launched at all in `launch.ts`; siblings import
7
+ * only from here.
6
8
  */
7
9
  export { detectPackageManager } from './detect.js';
8
- export { isAvailableUnder, translateExec } from './translate.js';
10
+ export { launchRefusal, SPAWN_FAILED_MARKER } from './launch.js';
11
+ export { execTool, execUsesGlobalCache, installCommand, isPnPInstall, resolveSlotTool } from './tools.js';
12
+ export { execCommand, isAvailableUnder, runScript, translateExec } from './translate.js';
9
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pm/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pm/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC1G,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Launch refusals — the package manager declining to start the script at all.
3
+ *
4
+ * Every caller that runs the repo's `check` script reads a non-zero exit as
5
+ * "the pipeline is red". That reading is wrong for a whole class of exits,
6
+ * because a package manager refuses *before* the script runs and still exits
7
+ * non-zero: pnpm answers an `engines.node` mismatch with
8
+ * `ERR_PNPM_UNSUPPORTED_ENGINE` and exit 1, exactly as it answers a failing
9
+ * test. The difference is invisible in the status code and obvious in the
10
+ * output, so the output is what is read here.
11
+ *
12
+ * The distinction is not cosmetic. A pipeline red is cleared by fixing code and
13
+ * points at `.check/`; a launch refusal cannot be cleared by any code change and
14
+ * points at nothing, because nothing ran and no artifact was written. Reporting
15
+ * the second as the first sends the reader — human or agent — to an artifact
16
+ * that does not describe this run, which is the failure this table exists to
17
+ * prevent.
18
+ *
19
+ * **Every pattern here must be one a check's own output cannot contain.** A
20
+ * false positive is worse than the bug being fixed: it would tell someone their
21
+ * environment is broken while their code is what failed. The patterns are all
22
+ * package-manager error *codes*, and the one caller-supplied sentinel checkride
23
+ * writes itself; callers additionally gate on "this run wrote no summary", so a
24
+ * pipeline that demonstrably ran can never be reclassified by a tool that merely
25
+ * printed one of these strings.
26
+ */
27
+ /** The sentinel a caller writes when the package-manager binary itself never started. */
28
+ export declare const SPAWN_FAILED_MARKER = "checkride: could not start";
29
+ /**
30
+ * A refusal checkride recognizes: the marker to look for, and the cause in the
31
+ * words a reader needs.
32
+ *
33
+ * `cause` completes the sentence "the gate could not run — …", so it names what
34
+ * refused and why, never what to do about it; the fix is the caller's to phrase,
35
+ * because it differs by command.
36
+ */
37
+ export type LaunchRefusal = {
38
+ marker: string;
39
+ cause: string;
40
+ };
41
+ /**
42
+ * Classify `output` — whatever the child printed on either stream — as a launch
43
+ * refusal, or `null` when nothing in it says the script failed to start.
44
+ *
45
+ * `null` is the safe answer and the common one: an unrecognized refusal reads as
46
+ * a pipeline red, which is the behavior that predates this module. A new package
47
+ * manager or a reworded error therefore degrades to today's report rather than
48
+ * to a wrong one.
49
+ */
50
+ export declare function launchRefusal(output: string): LaunchRefusal | null;
51
+ //# sourceMappingURL=launch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../src/pm/launch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,yFAAyF;AACzF,eAAO,MAAM,mBAAmB,+BAA+B,CAAC;AAEhE;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAsD9D;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAElE"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Launch refusals — the package manager declining to start the script at all.
3
+ *
4
+ * Every caller that runs the repo's `check` script reads a non-zero exit as
5
+ * "the pipeline is red". That reading is wrong for a whole class of exits,
6
+ * because a package manager refuses *before* the script runs and still exits
7
+ * non-zero: pnpm answers an `engines.node` mismatch with
8
+ * `ERR_PNPM_UNSUPPORTED_ENGINE` and exit 1, exactly as it answers a failing
9
+ * test. The difference is invisible in the status code and obvious in the
10
+ * output, so the output is what is read here.
11
+ *
12
+ * The distinction is not cosmetic. A pipeline red is cleared by fixing code and
13
+ * points at `.check/`; a launch refusal cannot be cleared by any code change and
14
+ * points at nothing, because nothing ran and no artifact was written. Reporting
15
+ * the second as the first sends the reader — human or agent — to an artifact
16
+ * that does not describe this run, which is the failure this table exists to
17
+ * prevent.
18
+ *
19
+ * **Every pattern here must be one a check's own output cannot contain.** A
20
+ * false positive is worse than the bug being fixed: it would tell someone their
21
+ * environment is broken while their code is what failed. The patterns are all
22
+ * package-manager error *codes*, and the one caller-supplied sentinel checkride
23
+ * writes itself; callers additionally gate on "this run wrote no summary", so a
24
+ * pipeline that demonstrably ran can never be reclassified by a tool that merely
25
+ * printed one of these strings.
26
+ */
27
+ /** The sentinel a caller writes when the package-manager binary itself never started. */
28
+ export const SPAWN_FAILED_MARKER = 'checkride: could not start';
29
+ /**
30
+ * Markers that mean the script never started, most specific first.
31
+ *
32
+ * npm is the delicate one: it prints `EBADENGINE` as a *warning* on a version
33
+ * mismatch and runs the script anyway, and only `engine-strict` turns it into an
34
+ * error. Matching the bare code would reclassify a genuine red in any repo whose
35
+ * dependency tree carries one stale `engines` field — so the two error spellings
36
+ * npm has shipped are matched, and the warning is not.
37
+ *
38
+ * Only pnpm's and npm's spellings are listed, because those are the two the
39
+ * behavior above was verified against. Yarn's and bun's equivalents are
40
+ * deliberately absent rather than guessed: an unmatched refusal degrades to
41
+ * today's report (a red), while a wrong pattern degrades to a false diagnosis.
42
+ * Add one when a real output line is in hand, not before.
43
+ */
44
+ const REFUSALS = [
45
+ {
46
+ marker: 'ERR_PNPM_UNSUPPORTED_ENGINE',
47
+ cause: "the repo's `engines` pin does not match the Node or pnpm running this process, and pnpm refuses to run a script under it",
48
+ },
49
+ {
50
+ marker: 'npm error code EBADENGINE',
51
+ cause: "the repo's `engines` pin does not match the Node running this process, and npm is configured `engine-strict`",
52
+ },
53
+ {
54
+ marker: 'npm ERR! code EBADENGINE',
55
+ cause: "the repo's `engines` pin does not match the Node running this process, and npm is configured `engine-strict`",
56
+ },
57
+ {
58
+ marker: 'ERR_PNPM_NO_SCRIPT',
59
+ cause: 'this repo has no `check` script for the gate to run',
60
+ },
61
+ {
62
+ marker: 'Missing script:',
63
+ cause: 'this repo has no `check` script for the gate to run',
64
+ },
65
+ {
66
+ marker: 'ERR_PNPM_NO_IMPORTER_MANIFEST_FOUND',
67
+ cause: 'there is no package.json here, so the package manager has nothing to run',
68
+ },
69
+ {
70
+ // corepack verifying a `packageManager` field against its bundled signing
71
+ // keys. Common after a corepack upgrade, and total: nothing runs.
72
+ marker: 'Cannot find matching keyid',
73
+ cause: 'corepack could not verify the package manager named in `packageManager`, so it never launched',
74
+ },
75
+ {
76
+ marker: SPAWN_FAILED_MARKER,
77
+ cause: 'the package-manager binary is not on this process’s PATH',
78
+ },
79
+ ];
80
+ /**
81
+ * Classify `output` — whatever the child printed on either stream — as a launch
82
+ * refusal, or `null` when nothing in it says the script failed to start.
83
+ *
84
+ * `null` is the safe answer and the common one: an unrecognized refusal reads as
85
+ * a pipeline red, which is the behavior that predates this module. A new package
86
+ * manager or a reworded error therefore degrades to today's report rather than
87
+ * to a wrong one.
88
+ */
89
+ export function launchRefusal(output) {
90
+ return REFUSALS.find((r) => output.includes(r.marker)) ?? null;
91
+ }
92
+ //# sourceMappingURL=launch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/pm/launch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,yFAAyF;AACzF,MAAM,CAAC,MAAM,mBAAmB,GAAG,4BAA4B,CAAC;AAYhE;;;;;;;;;;;;;;GAcG;AACH,MAAM,QAAQ,GAA6B;IACzC;QACE,MAAM,EAAE,6BAA6B;QACrC,KAAK,EAAE,0HAA0H;KAClI;IACD;QACE,MAAM,EAAE,2BAA2B;QACnC,KAAK,EAAE,8GAA8G;KACtH;IACD;QACE,MAAM,EAAE,0BAA0B;QAClC,KAAK,EAAE,8GAA8G;KACtH;IACD;QACE,MAAM,EAAE,oBAAoB;QAC5B,KAAK,EAAE,qDAAqD;KAC7D;IACD;QACE,MAAM,EAAE,iBAAiB;QACzB,KAAK,EAAE,qDAAqD;KAC7D;IACD;QACE,MAAM,EAAE,qCAAqC;QAC7C,KAAK,EAAE,0EAA0E;KAClF;IACD;QACE,0EAA0E;QAC1E,kEAAkE;QAClE,MAAM,EAAE,4BAA4B;QACpC,KAAK,EAAE,+FAA+F;KACvG;IACD;QACE,MAAM,EAAE,mBAAmB;QAC3B,KAAK,EAAE,0DAA0D;KAClE;CACF,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC;AACjE,CAAC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Slot-tool resolution — where a check's tool has to be for the gate to run it,
3
+ * and how to install it when it isn't.
4
+ *
5
+ * `translate.ts` decides *how* a tool is spawned; this decides *whether it may
6
+ * be*. The two are deliberately separate. `--no-install` bounds the download
7
+ * but not the launcher's per-user cache, so the spawn alone cannot promise the
8
+ * tool came from this repo: a copy an unrelated `npx` left behind months ago
9
+ * satisfies the launcher just as well as a declared dependency. Resolving the
10
+ * binary in the local tree first is what makes a slot's verdict depend on the
11
+ * committed lockfile rather than on one machine's accumulated cache — the
12
+ * property that lets a green run mean the same thing locally and in CI.
13
+ */
14
+ import type { PackageManager } from './detect.js';
15
+ /**
16
+ * The `<tool>` in a canonical `pnpm exec <tool> …` adapter invocation, or `null`
17
+ * for anything else — `pnpm audit`, `pnpm run <script>`, a built-in, or a config
18
+ * custom check's own command. Those either have no tool to resolve or resolve it
19
+ * themselves, so they are never pre-flighted.
20
+ *
21
+ * This is the same prefix test {@link translateExec} keys on, named once so the
22
+ * run path, the fix path and `doctor` cannot drift on what counts as a tool.
23
+ */
24
+ export declare function execTool(command: string, args: readonly string[]): string | null;
25
+ /** The command that would declare `tool` as a dev dependency under `pm`. */
26
+ export declare function installCommand(pm: PackageManager, tool: string): string;
27
+ /**
28
+ * Find `tool`'s binary in the local tree, walking `cwd` upward the way the
29
+ * package managers themselves do — and stopping at the repo root.
30
+ *
31
+ * The walk is what makes this correct in a workspace: pnpm and npm both hoist a
32
+ * shared tool's bin to the workspace root, so a check running in
33
+ * `packages/web` finds it two directories up and a root-only check finds it
34
+ * immediately. Checking `cwd` alone would report every hoisted tool missing in
35
+ * every monorepo — which is most of the repos with a workspace preset.
36
+ *
37
+ * The boundary matters as much as the walk. An unbounded search would accept a
38
+ * `node_modules/.bin/<tool>` sitting in some parent of the checkout — a stray
39
+ * install in a home or projects directory — and that is the same defect as
40
+ * trusting the launcher cache, reached by a different route: the slot passes for
41
+ * whoever happens to have that directory above their clone and fails on the
42
+ * clean checkout. Stopping at the root keeps the verdict a property of the repo.
43
+ * The root itself is searched before the walk ends; a tree with no marker at all
44
+ * (a synthetic one, or a directory outside any repo) walks to the filesystem
45
+ * root as before.
46
+ *
47
+ * `exists` is injected so the walk is testable against a synthetic tree.
48
+ */
49
+ export declare function resolveSlotTool(cwd: string, tool: string, exists?: (p: string) => boolean): string | null;
50
+ /**
51
+ * Whether this project is installed under Yarn PnP, where there is no
52
+ * `node_modules/` tree at all.
53
+ *
54
+ * Every path-based test for "is it installed" is wrong here: a healthy PnP repo
55
+ * has no `node_modules/` and no `node_modules/.bin/<tool>`, so asserting either
56
+ * reports a correctly installed project as broken. Callers use this to pick a
57
+ * different question — the install artifact rather than the directory, and the
58
+ * package manager's own resolution rather than a path — instead of guessing.
59
+ */
60
+ export declare function isPnPInstall(cwd: string, exists?: (p: string) => boolean): boolean;
61
+ /**
62
+ * Whether `pm`'s exec launcher can supply a tool this repo never declared.
63
+ *
64
+ * True for exactly the two launchers that keep a per-user package cache: `npx`
65
+ * and `bunx` will run a cached copy even under `--no-install`. `pnpm exec` and
66
+ * `yarn` resolve from the project tree only, so they already give the stronger
67
+ * guarantee and need no pre-flight — and Yarn PnP has no `node_modules/.bin`
68
+ * to resolve against at all, so pre-flighting it would report every tool
69
+ * missing. Kept in lockstep with `translate.ts`'s `EXEC` table by a test: any
70
+ * PM carrying `--no-install` must be listed here.
71
+ */
72
+ export declare function execUsesGlobalCache(pm: PackageManager): boolean;
73
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/pm/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAGhF;AAaD,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvE;AAcD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAoB,GAAG,MAAM,GAAG,IAAI,CAUrH;AASD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAoB,GAAG,OAAO,CAE9F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAE/D"}