plumbbob 0.9.2 → 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 (279) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/README.md +15 -13
  3. package/dist/cli-core.js +298 -24
  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 +5 -4
  9. package/dist/verbs/check.js +6 -2
  10. package/dist/verbs/doctor.js +4 -4
  11. package/dist/verbs/finish.js +1 -1
  12. package/dist/verbs/recover.js +297 -0
  13. package/dist/verbs/revert.js +2 -2
  14. package/dist/verbs/spike.js +8 -2
  15. package/hooks/post-edit.sh +4 -4
  16. package/hooks/pre-bash-commit.sh +3 -3
  17. package/node_modules/checkride/.claude-plugin/plugin.json +11 -0
  18. package/node_modules/checkride/CHANGELOG.md +1003 -0
  19. package/node_modules/checkride/LICENSE +201 -21
  20. package/node_modules/checkride/README.md +171 -30
  21. package/node_modules/checkride/dist/__tests__/fixtures/released-stanzas.d.ts +15 -0
  22. package/node_modules/checkride/dist/__tests__/fixtures/released-stanzas.d.ts.map +1 -0
  23. package/node_modules/checkride/dist/__tests__/fixtures/released-stanzas.js +17 -0
  24. package/node_modules/checkride/dist/__tests__/fixtures/released-stanzas.js.map +1 -0
  25. package/node_modules/checkride/dist/adapters.d.ts +18 -6
  26. package/node_modules/checkride/dist/adapters.d.ts.map +1 -1
  27. package/node_modules/checkride/dist/adapters.js +42 -23
  28. package/node_modules/checkride/dist/adapters.js.map +1 -1
  29. package/node_modules/checkride/dist/agent-setup/claude.d.ts +88 -0
  30. package/node_modules/checkride/dist/agent-setup/claude.d.ts.map +1 -0
  31. package/node_modules/checkride/dist/agent-setup/claude.js +305 -0
  32. package/node_modules/checkride/dist/agent-setup/claude.js.map +1 -0
  33. package/node_modules/checkride/dist/agent-setup/command.d.ts +43 -0
  34. package/node_modules/checkride/dist/agent-setup/command.d.ts.map +1 -0
  35. package/node_modules/checkride/dist/agent-setup/command.js +77 -0
  36. package/node_modules/checkride/dist/agent-setup/command.js.map +1 -0
  37. package/node_modules/checkride/dist/agent-setup/cursor.d.ts +61 -0
  38. package/node_modules/checkride/dist/agent-setup/cursor.d.ts.map +1 -0
  39. package/node_modules/checkride/dist/agent-setup/cursor.js +189 -0
  40. package/node_modules/checkride/dist/agent-setup/cursor.js.map +1 -0
  41. package/node_modules/checkride/dist/agent-setup/files.d.ts +50 -0
  42. package/node_modules/checkride/dist/agent-setup/files.d.ts.map +1 -0
  43. package/node_modules/checkride/dist/agent-setup/files.js +80 -0
  44. package/node_modules/checkride/dist/agent-setup/files.js.map +1 -0
  45. package/node_modules/checkride/dist/agent-setup/harness.d.ts +101 -0
  46. package/node_modules/checkride/dist/agent-setup/harness.d.ts.map +1 -0
  47. package/node_modules/checkride/dist/agent-setup/harness.js +84 -0
  48. package/node_modules/checkride/dist/agent-setup/harness.js.map +1 -0
  49. package/node_modules/checkride/dist/agent-setup/hook.d.ts +45 -52
  50. package/node_modules/checkride/dist/agent-setup/hook.d.ts.map +1 -1
  51. package/node_modules/checkride/dist/agent-setup/hook.js +64 -95
  52. package/node_modules/checkride/dist/agent-setup/hook.js.map +1 -1
  53. package/node_modules/checkride/dist/agent-setup/index.d.ts +10 -4
  54. package/node_modules/checkride/dist/agent-setup/index.d.ts.map +1 -1
  55. package/node_modules/checkride/dist/agent-setup/index.js +9 -4
  56. package/node_modules/checkride/dist/agent-setup/index.js.map +1 -1
  57. package/node_modules/checkride/dist/agent-setup/scripts.d.ts +58 -0
  58. package/node_modules/checkride/dist/agent-setup/scripts.d.ts.map +1 -0
  59. package/node_modules/checkride/dist/agent-setup/scripts.js +299 -0
  60. package/node_modules/checkride/dist/agent-setup/scripts.js.map +1 -0
  61. package/node_modules/checkride/dist/agent-setup/skills.d.ts +31 -0
  62. package/node_modules/checkride/dist/agent-setup/skills.d.ts.map +1 -0
  63. package/node_modules/checkride/dist/agent-setup/skills.js +56 -0
  64. package/node_modules/checkride/dist/agent-setup/skills.js.map +1 -0
  65. package/node_modules/checkride/dist/artifacts/configured.d.ts +30 -0
  66. package/node_modules/checkride/dist/artifacts/configured.d.ts.map +1 -0
  67. package/node_modules/checkride/dist/artifacts/configured.js +45 -0
  68. package/node_modules/checkride/dist/artifacts/configured.js.map +1 -0
  69. package/node_modules/checkride/dist/artifacts/format.d.ts +33 -0
  70. package/node_modules/checkride/dist/artifacts/format.d.ts.map +1 -0
  71. package/node_modules/checkride/dist/artifacts/format.js +56 -0
  72. package/node_modules/checkride/dist/artifacts/format.js.map +1 -0
  73. package/node_modules/checkride/dist/artifacts/freshness.d.ts +32 -0
  74. package/node_modules/checkride/dist/artifacts/freshness.d.ts.map +1 -0
  75. package/node_modules/checkride/dist/artifacts/freshness.js +37 -0
  76. package/node_modules/checkride/dist/artifacts/freshness.js.map +1 -0
  77. package/node_modules/checkride/dist/artifacts/index.d.ts +22 -0
  78. package/node_modules/checkride/dist/artifacts/index.d.ts.map +1 -0
  79. package/node_modules/checkride/dist/artifacts/index.js +19 -0
  80. package/node_modules/checkride/dist/artifacts/index.js.map +1 -0
  81. package/node_modules/checkride/dist/artifacts/json.d.ts +31 -0
  82. package/node_modules/checkride/dist/artifacts/json.d.ts.map +1 -0
  83. package/node_modules/checkride/dist/artifacts/json.js +47 -0
  84. package/node_modules/checkride/dist/artifacts/json.js.map +1 -0
  85. package/node_modules/checkride/dist/artifacts/raw.d.ts +60 -0
  86. package/node_modules/checkride/dist/artifacts/raw.d.ts.map +1 -0
  87. package/node_modules/checkride/dist/artifacts/raw.js +91 -0
  88. package/node_modules/checkride/dist/artifacts/raw.js.map +1 -0
  89. package/node_modules/checkride/dist/artifacts/summary.d.ts +69 -0
  90. package/node_modules/checkride/dist/artifacts/summary.d.ts.map +1 -0
  91. package/node_modules/checkride/dist/artifacts/summary.js +108 -0
  92. package/node_modules/checkride/dist/artifacts/summary.js.map +1 -0
  93. package/node_modules/checkride/dist/atomic.d.ts +16 -1
  94. package/node_modules/checkride/dist/atomic.d.ts.map +1 -1
  95. package/node_modules/checkride/dist/atomic.js +25 -3
  96. package/node_modules/checkride/dist/atomic.js.map +1 -1
  97. package/node_modules/checkride/dist/baseline/fallow.d.ts +9 -5
  98. package/node_modules/checkride/dist/baseline/fallow.d.ts.map +1 -1
  99. package/node_modules/checkride/dist/baseline/fallow.js +161 -58
  100. package/node_modules/checkride/dist/baseline/fallow.js.map +1 -1
  101. package/node_modules/checkride/dist/baseline/fingerprint.d.ts +7 -7
  102. package/node_modules/checkride/dist/baseline/fingerprint.d.ts.map +1 -1
  103. package/node_modules/checkride/dist/baseline/fingerprint.js +16 -19
  104. package/node_modules/checkride/dist/baseline/fingerprint.js.map +1 -1
  105. package/node_modules/checkride/dist/baseline/index.d.ts +4 -4
  106. package/node_modules/checkride/dist/baseline/index.d.ts.map +1 -1
  107. package/node_modules/checkride/dist/baseline/index.js +4 -4
  108. package/node_modules/checkride/dist/baseline/index.js.map +1 -1
  109. package/node_modules/checkride/dist/baseline/store.d.ts +12 -4
  110. package/node_modules/checkride/dist/baseline/store.d.ts.map +1 -1
  111. package/node_modules/checkride/dist/baseline/store.js +16 -9
  112. package/node_modules/checkride/dist/baseline/store.js.map +1 -1
  113. package/node_modules/checkride/dist/baseline-command.d.ts +5 -5
  114. package/node_modules/checkride/dist/baseline-command.js +7 -7
  115. package/node_modules/checkride/dist/baseline-command.js.map +1 -1
  116. package/node_modules/checkride/dist/cli.d.ts +17 -4
  117. package/node_modules/checkride/dist/cli.d.ts.map +1 -1
  118. package/node_modules/checkride/dist/cli.js +259 -18
  119. package/node_modules/checkride/dist/cli.js.map +1 -1
  120. package/node_modules/checkride/dist/config.d.ts +84 -8
  121. package/node_modules/checkride/dist/config.d.ts.map +1 -1
  122. package/node_modules/checkride/dist/config.js +122 -18
  123. package/node_modules/checkride/dist/config.js.map +1 -1
  124. package/node_modules/checkride/dist/digest/digest.d.ts +5 -5
  125. package/node_modules/checkride/dist/digest/digest.js +5 -5
  126. package/node_modules/checkride/dist/digest/index.d.ts +2 -2
  127. package/node_modules/checkride/dist/digest/index.js +2 -2
  128. package/node_modules/checkride/dist/doctor.d.ts +25 -6
  129. package/node_modules/checkride/dist/doctor.d.ts.map +1 -1
  130. package/node_modules/checkride/dist/doctor.js +193 -27
  131. package/node_modules/checkride/dist/doctor.js.map +1 -1
  132. package/node_modules/checkride/dist/gate.d.ts +135 -0
  133. package/node_modules/checkride/dist/gate.d.ts.map +1 -0
  134. package/node_modules/checkride/dist/gate.js +490 -0
  135. package/node_modules/checkride/dist/gate.js.map +1 -0
  136. package/node_modules/checkride/dist/init.d.ts +72 -12
  137. package/node_modules/checkride/dist/init.d.ts.map +1 -1
  138. package/node_modules/checkride/dist/init.js +324 -81
  139. package/node_modules/checkride/dist/init.js.map +1 -1
  140. package/node_modules/checkride/dist/json.d.ts +21 -0
  141. package/node_modules/checkride/dist/json.d.ts.map +1 -0
  142. package/node_modules/checkride/dist/json.js +21 -0
  143. package/node_modules/checkride/dist/json.js.map +1 -0
  144. package/node_modules/checkride/dist/links.d.ts +31 -5
  145. package/node_modules/checkride/dist/links.d.ts.map +1 -1
  146. package/node_modules/checkride/dist/links.js +141 -32
  147. package/node_modules/checkride/dist/links.js.map +1 -1
  148. package/node_modules/checkride/dist/node-pin.d.ts +129 -0
  149. package/node_modules/checkride/dist/node-pin.d.ts.map +1 -0
  150. package/node_modules/checkride/dist/node-pin.js +211 -0
  151. package/node_modules/checkride/dist/node-pin.js.map +1 -0
  152. package/node_modules/checkride/dist/orchestrator.d.ts +40 -10
  153. package/node_modules/checkride/dist/orchestrator.d.ts.map +1 -1
  154. package/node_modules/checkride/dist/orchestrator.js +196 -102
  155. package/node_modules/checkride/dist/orchestrator.js.map +1 -1
  156. package/node_modules/checkride/dist/pack.d.ts +8 -9
  157. package/node_modules/checkride/dist/pack.d.ts.map +1 -1
  158. package/node_modules/checkride/dist/pack.js +53 -17
  159. package/node_modules/checkride/dist/pack.js.map +1 -1
  160. package/node_modules/checkride/dist/pm/detect.d.ts +6 -1
  161. package/node_modules/checkride/dist/pm/detect.d.ts.map +1 -1
  162. package/node_modules/checkride/dist/pm/detect.js +6 -1
  163. package/node_modules/checkride/dist/pm/detect.js.map +1 -1
  164. package/node_modules/checkride/dist/pm/index.d.ts +6 -2
  165. package/node_modules/checkride/dist/pm/index.d.ts.map +1 -1
  166. package/node_modules/checkride/dist/pm/index.js +6 -2
  167. package/node_modules/checkride/dist/pm/index.js.map +1 -1
  168. package/node_modules/checkride/dist/pm/launch.d.ts +51 -0
  169. package/node_modules/checkride/dist/pm/launch.d.ts.map +1 -0
  170. package/node_modules/checkride/dist/pm/launch.js +92 -0
  171. package/node_modules/checkride/dist/pm/launch.js.map +1 -0
  172. package/node_modules/checkride/dist/pm/tools.d.ts +73 -0
  173. package/node_modules/checkride/dist/pm/tools.d.ts.map +1 -0
  174. package/node_modules/checkride/dist/pm/tools.js +124 -0
  175. package/node_modules/checkride/dist/pm/tools.js.map +1 -0
  176. package/node_modules/checkride/dist/pm/translate.d.ts +35 -9
  177. package/node_modules/checkride/dist/pm/translate.d.ts.map +1 -1
  178. package/node_modules/checkride/dist/pm/translate.js +78 -18
  179. package/node_modules/checkride/dist/pm/translate.js.map +1 -1
  180. package/node_modules/checkride/dist/proc.d.ts +30 -0
  181. package/node_modules/checkride/dist/proc.d.ts.map +1 -0
  182. package/node_modules/checkride/dist/proc.js +42 -0
  183. package/node_modules/checkride/dist/proc.js.map +1 -0
  184. package/node_modules/checkride/dist/qa/cli.d.ts +20 -0
  185. package/node_modules/checkride/dist/qa/cli.d.ts.map +1 -0
  186. package/node_modules/checkride/dist/qa/cli.js +24 -0
  187. package/node_modules/checkride/dist/qa/cli.js.map +1 -0
  188. package/node_modules/checkride/dist/qa/dead.d.ts +39 -0
  189. package/node_modules/checkride/dist/qa/dead.d.ts.map +1 -0
  190. package/node_modules/checkride/dist/qa/dead.js +88 -0
  191. package/node_modules/checkride/dist/qa/dead.js.map +1 -0
  192. package/node_modules/checkride/dist/qa/dupes.d.ts +45 -0
  193. package/node_modules/checkride/dist/qa/dupes.d.ts.map +1 -0
  194. package/node_modules/checkride/dist/qa/dupes.js +62 -0
  195. package/node_modules/checkride/dist/qa/dupes.js.map +1 -0
  196. package/node_modules/checkride/dist/qa/health.d.ts +85 -0
  197. package/node_modules/checkride/dist/qa/health.d.ts.map +1 -0
  198. package/node_modules/checkride/dist/qa/health.js +109 -0
  199. package/node_modules/checkride/dist/qa/health.js.map +1 -0
  200. package/node_modules/checkride/dist/qa/index.d.ts +23 -0
  201. package/node_modules/checkride/dist/qa/index.d.ts.map +1 -0
  202. package/node_modules/checkride/dist/qa/index.js +22 -0
  203. package/node_modules/checkride/dist/qa/index.js.map +1 -0
  204. package/node_modules/checkride/dist/qa/mutation.d.ts +80 -0
  205. package/node_modules/checkride/dist/qa/mutation.d.ts.map +1 -0
  206. package/node_modules/checkride/dist/qa/mutation.js +195 -0
  207. package/node_modules/checkride/dist/qa/mutation.js.map +1 -0
  208. package/node_modules/checkride/dist/qa/qa.d.ts +71 -0
  209. package/node_modules/checkride/dist/qa/qa.d.ts.map +1 -0
  210. package/node_modules/checkride/dist/qa/qa.js +158 -0
  211. package/node_modules/checkride/dist/qa/qa.js.map +1 -0
  212. package/node_modules/checkride/dist/qa/read.d.ts +40 -0
  213. package/node_modules/checkride/dist/qa/read.d.ts.map +1 -0
  214. package/node_modules/checkride/dist/qa/read.js +47 -0
  215. package/node_modules/checkride/dist/qa/read.js.map +1 -0
  216. package/node_modules/checkride/dist/qa/render.d.ts +26 -0
  217. package/node_modules/checkride/dist/qa/render.d.ts.map +1 -0
  218. package/node_modules/checkride/dist/qa/render.js +310 -0
  219. package/node_modules/checkride/dist/qa/render.js.map +1 -0
  220. package/node_modules/checkride/dist/security.d.ts +45 -0
  221. package/node_modules/checkride/dist/security.d.ts.map +1 -0
  222. package/node_modules/checkride/dist/security.js +86 -0
  223. package/node_modules/checkride/dist/security.js.map +1 -0
  224. package/node_modules/checkride/dist/smoke.d.ts +5 -5
  225. package/node_modules/checkride/dist/smoke.js +5 -5
  226. package/node_modules/checkride/dist/snippets.d.ts +26 -29
  227. package/node_modules/checkride/dist/snippets.d.ts.map +1 -1
  228. package/node_modules/checkride/dist/snippets.js +26 -30
  229. package/node_modules/checkride/dist/snippets.js.map +1 -1
  230. package/node_modules/checkride/dist/tool-json.d.ts +33 -0
  231. package/node_modules/checkride/dist/tool-json.d.ts.map +1 -0
  232. package/node_modules/checkride/dist/tool-json.js +58 -0
  233. package/node_modules/checkride/dist/tool-json.js.map +1 -0
  234. package/node_modules/checkride/dist/triage/cli.d.ts +21 -0
  235. package/node_modules/checkride/dist/triage/cli.d.ts.map +1 -0
  236. package/node_modules/checkride/dist/triage/cli.js +26 -0
  237. package/node_modules/checkride/dist/triage/cli.js.map +1 -0
  238. package/node_modules/checkride/dist/triage/doctor-fold.d.ts +51 -0
  239. package/node_modules/checkride/dist/triage/doctor-fold.d.ts.map +1 -0
  240. package/node_modules/checkride/dist/triage/doctor-fold.js +88 -0
  241. package/node_modules/checkride/dist/triage/doctor-fold.js.map +1 -0
  242. package/node_modules/checkride/dist/triage/env.d.ts +54 -0
  243. package/node_modules/checkride/dist/triage/env.d.ts.map +1 -0
  244. package/node_modules/checkride/dist/triage/env.js +81 -0
  245. package/node_modules/checkride/dist/triage/env.js.map +1 -0
  246. package/node_modules/checkride/dist/triage/gate.d.ts +61 -0
  247. package/node_modules/checkride/dist/triage/gate.d.ts.map +1 -0
  248. package/node_modules/checkride/dist/triage/gate.js +121 -0
  249. package/node_modules/checkride/dist/triage/gate.js.map +1 -0
  250. package/node_modules/checkride/dist/triage/index.d.ts +22 -0
  251. package/node_modules/checkride/dist/triage/index.d.ts.map +1 -0
  252. package/node_modules/checkride/dist/triage/index.js +20 -0
  253. package/node_modules/checkride/dist/triage/index.js.map +1 -0
  254. package/node_modules/checkride/dist/triage/render.d.ts +19 -0
  255. package/node_modules/checkride/dist/triage/render.d.ts.map +1 -0
  256. package/node_modules/checkride/dist/triage/render.js +419 -0
  257. package/node_modules/checkride/dist/triage/render.js.map +1 -0
  258. package/node_modules/checkride/dist/triage/triage.d.ts +83 -0
  259. package/node_modules/checkride/dist/triage/triage.d.ts.map +1 -0
  260. package/node_modules/checkride/dist/triage/triage.js +131 -0
  261. package/node_modules/checkride/dist/triage/triage.js.map +1 -0
  262. package/node_modules/checkride/package.json +17 -15
  263. package/node_modules/checkride/schema/checkride.config.schema.json +62 -5
  264. package/node_modules/checkride/schema/checkride.summary.schema.json +1 -1
  265. package/node_modules/checkride/skills/check/SKILL.md +257 -0
  266. package/node_modules/checkride/skills/qa/SKILL.md +231 -0
  267. package/node_modules/checkride/templates/shared/cspell.json +1 -0
  268. package/node_modules/checkride/templates/shared/oxlintrc.json +1 -1
  269. package/package.json +2 -2
  270. package/skills/build/SKILL.md +23 -19
  271. package/skills/finish/SKILL.md +3 -1
  272. package/skills/harvest/SKILL.md +2 -1
  273. package/skills/plan/SKILL.md +8 -7
  274. package/skills/recover/SKILL.md +28 -0
  275. package/skills/refine/SKILL.md +5 -4
  276. package/skills/spike/SKILL.md +1 -1
  277. package/skills/step/SKILL.md +4 -4
  278. package/skills/verify/SKILL.md +19 -14
  279. package/templates/intent.md +8 -7
@@ -1,8 +1,7 @@
1
1
  /**
2
2
  * Built-in `snippets` check.
3
3
  *
4
- * A doc snippet typecheck ported to match fascicle's `check-doc-snippets.mjs`
5
- * byte-for-byte so the origin repo can adopt the slot verbatim (D11). It pulls
4
+ * A doc snippet typecheck. It pulls
6
5
  * fenced ```ts / ```typescript blocks out of `README.md` and the non-recursive
7
6
  * `docs/*.md`, and typechecks only the ones explicitly opted in with an HTML
8
7
  * comment on the line immediately above the fence:
@@ -14,7 +13,7 @@
14
13
  * A tagged snippet that fails to compile is documentation that lies — this
15
14
  * turns that into a build failure. Opting the slot in but tagging *nothing* is
16
15
  * a misconfiguration, not a vacuous pass, so zero tagged snippets is a hard
17
- * error ({@link vacuousOptInError}; fascicle exits 2).
16
+ * error ({@link vacuousOptInError}).
18
17
  *
19
18
  * The pure machinery — no filesystem, no spawning:
20
19
  *
@@ -30,7 +29,7 @@
30
29
  * fields a `tsc --build` project carries, embeds the caller's mode-specific
31
30
  * `paths`).
32
31
  *
33
- * Execution (D12/Q1), consuming the primitives above:
32
+ * Execution, consuming the primitives above:
34
33
  *
35
34
  * - {@link deriveSrcPaths} resolves **src mode**'s `paths` mapping: the repo's
36
35
  * own tsconfig `paths` when present, else the `src/index.ts` convention,
@@ -46,17 +45,16 @@ import type { CheckOutcome } from './links.js';
46
45
  import type { PackageManager } from './pm/index.js';
47
46
  /**
48
47
  * The opt-in marker: an HTML comment `<!-- snippet: check -->` that must sit on
49
- * the line immediately above a fence for its snippet to be typechecked. Exact
50
- * fascicle regex (D11).
48
+ * the line immediately above a fence for its snippet to be typechecked.
51
49
  */
52
50
  export declare const CHECK_MARKER_RE: RegExp;
53
- /** An opening fence — `ts` or `typescript` only, nothing else on the line (D11). */
51
+ /** An opening fence — `ts` or `typescript` only, nothing else on the line. */
54
52
  export declare const FENCE_OPEN_RE: RegExp;
55
53
  /** A closing fence: three backticks alone on the line. */
56
54
  export declare const FENCE_CLOSE_RE: RegExp;
57
55
  /**
58
56
  * One `ts`/`typescript` fenced block extracted from a doc. `code` is the fence
59
- * body verbatim (no trailing newline — step 8 appends one on write); `startLine`
57
+ * body verbatim (no trailing newline — {@link checkSnippets} appends one on write); `startLine`
60
58
  * is the 1-based line of the opening fence; `checked` is true when a
61
59
  * {@link CHECK_MARKER_RE} marker sits on the immediately-preceding line.
62
60
  */
@@ -73,7 +71,7 @@ export type DocInput = {
73
71
  /**
74
72
  * One checked snippet in the emission plan: the scratch file to write
75
73
  * (`<slug>__<n>.ts`), and the source doc + line it maps back to (the
76
- * `snippet -> source map:` legend step 8 renders on failure).
74
+ * `snippet -> source map:` legend rendered on failure).
77
75
  */
78
76
  export type SnippetPlanEntry = {
79
77
  name: string;
@@ -87,7 +85,7 @@ export type SnippetsPlan = {
87
85
  checked: number;
88
86
  skipped: number;
89
87
  };
90
- /** The two modes `snippets` runs in (D12): fast against `src`, or against built `dist/*.d.ts`. */
88
+ /** The two modes `snippets` runs in: fast against `src`, or against built `dist/*.d.ts`. */
91
89
  export type SnippetMode = 'src' | 'dist';
92
90
  /** The generated tsconfig object (serialized to `.check/doc-snippets/tsconfig.json`). */
93
91
  export type SnippetTsconfig = {
@@ -108,59 +106,58 @@ export type SnippetTsconfig = {
108
106
  exclude: string[];
109
107
  };
110
108
  /**
111
- * Select the doc files to check from a `docs/` directory listing (D11): always
109
+ * Select the doc files to check from a `docs/` directory listing: always
112
110
  * `README.md`, then every non-recursive `docs/*.md` entry, README first and the
113
111
  * `docs/` entries in the order given. Pure — the caller does the (non-recursive)
114
112
  * `readdir` and passes its entries; a plain entry list means a nested
115
- * `docs/sub/x.md` never appears (its listing entry `sub` fails `.md`), matching
116
- * fascicle's non-recursive `doc_files`.
113
+ * `docs/sub/x.md` never appears (its listing entry `sub` fails `.md`) —
114
+ * discovery is deliberately non-recursive.
117
115
  */
118
116
  export declare function selectDocFiles(docsEntries: readonly string[]): string[];
119
117
  /**
120
- * Parse a doc's markdown into its `ts`/`typescript` fenced blocks (D11). A block
118
+ * Parse a doc's markdown into its `ts`/`typescript` fenced blocks. A block
121
119
  * is `checked` when a {@link CHECK_MARKER_RE} marker sits on the line immediately
122
120
  * above its opening fence — a marker anywhere else does not count. Untagged
123
- * blocks are still returned (the caller counts them as skipped). Semantics match
124
- * fascicle's `extract_blocks` exactly.
121
+ * blocks are still returned (the caller counts them as skipped).
125
122
  */
126
123
  export declare function extractSnippets(text: string): Snippet[];
127
124
  /**
128
125
  * The scratch-file slug for a doc's repo-relative path: every non-alphanumeric
129
126
  * run collapses to a single `_`, with leading/trailing `_` trimmed
130
- * (`README.md` → `README_md`, `docs/guide.md` → `docs_guide_md`). Exact fascicle
131
- * algorithm. Distinct docs in the discovered namespace (`README.md` plus the
127
+ * (`README.md` → `README_md`, `docs/guide.md` → `docs_guide_md`).
128
+ * Distinct docs in the discovered namespace (`README.md` plus the
132
129
  * flat `docs/*.md`) map to distinct slugs, so their emitted files never collide.
133
130
  */
134
131
  export declare function slugForDoc(relPath: string): string;
135
132
  /**
136
133
  * The scratch-file name for a block: `<slug>__<n>.ts`, where `n` is the block's
137
134
  * 1-based position among *all* ts/typescript fences in its doc (checked or not) —
138
- * so a skipped fence still advances the number, matching fascicle.
135
+ * so a skipped fence still advances the number.
139
136
  */
140
137
  export declare function snippetFileName(relPath: string, blockIndex: number): string;
141
138
  /**
142
139
  * Fold a set of docs into the emission plan: every checked block becomes a
143
140
  * {@link SnippetPlanEntry} (named, mapped back to `<doc>:<line>`), untagged
144
141
  * blocks bump `skipped`. The block index for naming counts all fences in a doc,
145
- * so a checked block keeps its position even after skipped ones (fascicle
146
- * parity). Pure — the caller reads the docs and writes the files.
142
+ * so a checked block keeps its position even after skipped ones. Pure — the
143
+ * caller reads the docs and writes the files.
147
144
  */
148
145
  export declare function planSnippets(docs: readonly DocInput[]): SnippetsPlan;
149
146
  /**
150
- * The vacuous-opt-in guard (D11): a plan with no checked snippets is a hard
147
+ * The vacuous-opt-in guard: a plan with no checked snippets is a hard
151
148
  * error, not a vacuous green — opting the slot in obligates at least one tagged
152
- * fence. Returns the error message for step 8 to surface (fascicle exits 2), or
149
+ * fence. Returns the error message for {@link checkSnippets} to surface, or
153
150
  * null when the plan has something to check.
154
151
  */
155
152
  export declare function vacuousOptInError(plan: SnippetsPlan): string | null;
156
153
  /**
157
- * Build the generated tsconfig (D11): extend the repo's own config so the
154
+ * Build the generated tsconfig: extend the repo's own config so the
158
155
  * snippets inherit its strictness, then relax exactly the three flags that
159
156
  * false-positive on illustrative snippets (`verbatimModuleSyntax`,
160
157
  * `isolatedModules`, `noPropertyAccessFromIndexSignature`) while keeping the
161
158
  * type-correctness flags that catch real API drift. `include` clears the parent's
162
159
  * `.check` exclusion so the emitted `./*.ts` are seen; `paths` is the caller's
163
- * mode-specific module resolution (src vs dist — Q1).
160
+ * mode-specific module resolution (src vs dist).
164
161
  *
165
162
  * A `tsc --build` project (composite, `rootDir`/`outDir` pinned to `src`/`dist`
166
163
  * for project-reference emit) fails TS6059 on any *source* file outside its
@@ -181,7 +178,7 @@ export declare function generateSnippetTsconfig(opts: {
181
178
  export type SnippetSpawn = (command: string, args: string[], cwd: string, timeoutSec?: number) => Promise<CheckOutcome>;
182
179
  /**
183
180
  * Derive the `paths` mapping **src mode** needs so `import { x } from
184
- * '<pkg-name>'` resolves against source (Q1): the repo's own tsconfig `paths`
181
+ * '<pkg-name>'` resolves against source: the repo's own tsconfig `paths`
185
182
  * when present (remapped two directories deeper, to where the generated
186
183
  * tsconfig lives), else the `src/index.ts` convention (`<pkg-name>` maps to its
187
184
  * root `src/index.ts`) when the manifest names the package and that file
@@ -195,15 +192,15 @@ export declare function deriveSrcPaths(opts: {
195
192
  hasSrcIndex: boolean;
196
193
  }): Record<string, string[]> | null;
197
194
  /**
198
- * Run the `snippets` check against `cwd` in `mode` (D12: the `snippets` src
199
- * adapter passes `'src'`, `snippets-dist` passes `'dist'`). Discovers the doc
195
+ * Run the `snippets` check against `cwd` in `mode` (the `snippets` adapter
196
+ * passes `'src'`, `snippets-dist` passes `'dist'`). Discovers the doc
200
197
  * set, plans the checked snippets ({@link vacuousOptInError} applies first —
201
198
  * zero tagged snippets is a hard error before anything is written), derives
202
199
  * the mode's `paths` mapping, emits the scratch files plus a generated
203
200
  * tsconfig under `.check/doc-snippets/`, and typechecks them through the
204
201
  * injected `spawn`. A compile failure's `stderr` carries tsc's raw output plus
205
202
  * the `snippet -> source map:` legend mapping each generated file back to
206
- * `<doc>:<line>` (D11).
203
+ * `<doc>:<line>`.
207
204
  */
208
205
  export declare function checkSnippets(opts: {
209
206
  cwd: string;
@@ -1 +1 @@
1
- {"version":3,"file":"snippets.d.ts","sourceRoot":"","sources":["../src/snippets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snippets.d.ts","sourceRoot":"","sources":["../src/snippets.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,7 @@
1
1
  /**
2
2
  * Built-in `snippets` check.
3
3
  *
4
- * A doc snippet typecheck ported to match fascicle's `check-doc-snippets.mjs`
5
- * byte-for-byte so the origin repo can adopt the slot verbatim (D11). It pulls
4
+ * A doc snippet typecheck. It pulls
6
5
  * fenced ```ts / ```typescript blocks out of `README.md` and the non-recursive
7
6
  * `docs/*.md`, and typechecks only the ones explicitly opted in with an HTML
8
7
  * comment on the line immediately above the fence:
@@ -14,7 +13,7 @@
14
13
  * A tagged snippet that fails to compile is documentation that lies — this
15
14
  * turns that into a build failure. Opting the slot in but tagging *nothing* is
16
15
  * a misconfiguration, not a vacuous pass, so zero tagged snippets is a hard
17
- * error ({@link vacuousOptInError}; fascicle exits 2).
16
+ * error ({@link vacuousOptInError}).
18
17
  *
19
18
  * The pure machinery — no filesystem, no spawning:
20
19
  *
@@ -30,7 +29,7 @@
30
29
  * fields a `tsc --build` project carries, embeds the caller's mode-specific
31
30
  * `paths`).
32
31
  *
33
- * Execution (D12/Q1), consuming the primitives above:
32
+ * Execution, consuming the primitives above:
34
33
  *
35
34
  * - {@link deriveSrcPaths} resolves **src mode**'s `paths` mapping: the repo's
36
35
  * own tsconfig `paths` when present, else the `src/index.ts` convention,
@@ -48,21 +47,20 @@ import { join } from 'node:path';
48
47
  import { translateExec } from './pm/index.js';
49
48
  /**
50
49
  * The opt-in marker: an HTML comment `<!-- snippet: check -->` that must sit on
51
- * the line immediately above a fence for its snippet to be typechecked. Exact
52
- * fascicle regex (D11).
50
+ * the line immediately above a fence for its snippet to be typechecked.
53
51
  */
54
52
  export const CHECK_MARKER_RE = /<!--\s*snippet:\s*check\s*-->/;
55
- /** An opening fence — `ts` or `typescript` only, nothing else on the line (D11). */
53
+ /** An opening fence — `ts` or `typescript` only, nothing else on the line. */
56
54
  export const FENCE_OPEN_RE = /^```(ts|typescript)\s*$/;
57
55
  /** A closing fence: three backticks alone on the line. */
58
56
  export const FENCE_CLOSE_RE = /^```\s*$/;
59
57
  /**
60
- * Select the doc files to check from a `docs/` directory listing (D11): always
58
+ * Select the doc files to check from a `docs/` directory listing: always
61
59
  * `README.md`, then every non-recursive `docs/*.md` entry, README first and the
62
60
  * `docs/` entries in the order given. Pure — the caller does the (non-recursive)
63
61
  * `readdir` and passes its entries; a plain entry list means a nested
64
- * `docs/sub/x.md` never appears (its listing entry `sub` fails `.md`), matching
65
- * fascicle's non-recursive `doc_files`.
62
+ * `docs/sub/x.md` never appears (its listing entry `sub` fails `.md`) —
63
+ * discovery is deliberately non-recursive.
66
64
  */
67
65
  export function selectDocFiles(docsEntries) {
68
66
  const files = ['README.md'];
@@ -73,11 +71,10 @@ export function selectDocFiles(docsEntries) {
73
71
  return files;
74
72
  }
75
73
  /**
76
- * Parse a doc's markdown into its `ts`/`typescript` fenced blocks (D11). A block
74
+ * Parse a doc's markdown into its `ts`/`typescript` fenced blocks. A block
77
75
  * is `checked` when a {@link CHECK_MARKER_RE} marker sits on the line immediately
78
76
  * above its opening fence — a marker anywhere else does not count. Untagged
79
- * blocks are still returned (the caller counts them as skipped). Semantics match
80
- * fascicle's `extract_blocks` exactly.
77
+ * blocks are still returned (the caller counts them as skipped).
81
78
  */
82
79
  export function extractSnippets(text) {
83
80
  const lines = text.split('\n');
@@ -102,8 +99,8 @@ export function extractSnippets(text) {
102
99
  /**
103
100
  * The scratch-file slug for a doc's repo-relative path: every non-alphanumeric
104
101
  * run collapses to a single `_`, with leading/trailing `_` trimmed
105
- * (`README.md` → `README_md`, `docs/guide.md` → `docs_guide_md`). Exact fascicle
106
- * algorithm. Distinct docs in the discovered namespace (`README.md` plus the
102
+ * (`README.md` → `README_md`, `docs/guide.md` → `docs_guide_md`).
103
+ * Distinct docs in the discovered namespace (`README.md` plus the
107
104
  * flat `docs/*.md`) map to distinct slugs, so their emitted files never collide.
108
105
  */
109
106
  export function slugForDoc(relPath) {
@@ -112,7 +109,7 @@ export function slugForDoc(relPath) {
112
109
  /**
113
110
  * The scratch-file name for a block: `<slug>__<n>.ts`, where `n` is the block's
114
111
  * 1-based position among *all* ts/typescript fences in its doc (checked or not) —
115
- * so a skipped fence still advances the number, matching fascicle.
112
+ * so a skipped fence still advances the number.
116
113
  */
117
114
  export function snippetFileName(relPath, blockIndex) {
118
115
  return `${slugForDoc(relPath)}__${blockIndex}.ts`;
@@ -121,8 +118,8 @@ export function snippetFileName(relPath, blockIndex) {
121
118
  * Fold a set of docs into the emission plan: every checked block becomes a
122
119
  * {@link SnippetPlanEntry} (named, mapped back to `<doc>:<line>`), untagged
123
120
  * blocks bump `skipped`. The block index for naming counts all fences in a doc,
124
- * so a checked block keeps its position even after skipped ones (fascicle
125
- * parity). Pure — the caller reads the docs and writes the files.
121
+ * so a checked block keeps its position even after skipped ones. Pure — the
122
+ * caller reads the docs and writes the files.
126
123
  */
127
124
  export function planSnippets(docs) {
128
125
  const entries = [];
@@ -146,9 +143,9 @@ export function planSnippets(docs) {
146
143
  return { entries, checked, skipped };
147
144
  }
148
145
  /**
149
- * The vacuous-opt-in guard (D11): a plan with no checked snippets is a hard
146
+ * The vacuous-opt-in guard: a plan with no checked snippets is a hard
150
147
  * error, not a vacuous green — opting the slot in obligates at least one tagged
151
- * fence. Returns the error message for step 8 to surface (fascicle exits 2), or
148
+ * fence. Returns the error message for {@link checkSnippets} to surface, or
152
149
  * null when the plan has something to check.
153
150
  */
154
151
  export function vacuousOptInError(plan) {
@@ -157,13 +154,13 @@ export function vacuousOptInError(plan) {
157
154
  return 'no tagged snippets found — refusing to pass vacuously (add a `<!-- snippet: check -->` marker above a ts/typescript fence)';
158
155
  }
159
156
  /**
160
- * Build the generated tsconfig (D11): extend the repo's own config so the
157
+ * Build the generated tsconfig: extend the repo's own config so the
161
158
  * snippets inherit its strictness, then relax exactly the three flags that
162
159
  * false-positive on illustrative snippets (`verbatimModuleSyntax`,
163
160
  * `isolatedModules`, `noPropertyAccessFromIndexSignature`) while keeping the
164
161
  * type-correctness flags that catch real API drift. `include` clears the parent's
165
162
  * `.check` exclusion so the emitted `./*.ts` are seen; `paths` is the caller's
166
- * mode-specific module resolution (src vs dist — Q1).
163
+ * mode-specific module resolution (src vs dist).
167
164
  *
168
165
  * A `tsc --build` project (composite, `rootDir`/`outDir` pinned to `src`/`dist`
169
166
  * for project-reference emit) fails TS6059 on any *source* file outside its
@@ -201,7 +198,7 @@ function isRecord(value) {
201
198
  return typeof value === 'object' && value !== null && !Array.isArray(value);
202
199
  }
203
200
  /**
204
- * Read the doc set (D11): `README.md` plus non-recursive `docs/*.md`, skipping
201
+ * Read the doc set: `README.md` plus non-recursive `docs/*.md`, skipping
205
202
  * any that don't exist — a repo with no `docs/` directory (or no `README.md`)
206
203
  * still runs on what it has; an empty result is caught by
207
204
  * {@link vacuousOptInError}.
@@ -237,9 +234,8 @@ async function readManifestName(cwd) {
237
234
  }
238
235
  /**
239
236
  * The repo's own `tsconfig.json`'s **own** `compilerOptions.paths` (not resolved
240
- * through its `extends` chain — a repo that hand-declares self-referencing
241
- * paths, as fascicle does, puts them directly on the root file), or null when
242
- * absent, unreadable, or empty.
237
+ * through its `extends` chain — self-referencing paths are expected directly on
238
+ * the root file), or null when absent, unreadable, or empty.
243
239
  */
244
240
  async function readOwnTsconfigPaths(cwd) {
245
241
  try {
@@ -266,7 +262,7 @@ function remapRootRelative(target) {
266
262
  }
267
263
  /**
268
264
  * Derive the `paths` mapping **src mode** needs so `import { x } from
269
- * '<pkg-name>'` resolves against source (Q1): the repo's own tsconfig `paths`
265
+ * '<pkg-name>'` resolves against source: the repo's own tsconfig `paths`
270
266
  * when present (remapped two directories deeper, to where the generated
271
267
  * tsconfig lives), else the `src/index.ts` convention (`<pkg-name>` maps to its
272
268
  * root `src/index.ts`) when the manifest names the package and that file
@@ -301,15 +297,15 @@ function runTsc(cwd, tsconfigRelPath, pm, spawn, timeoutSec) {
301
297
  return spawn(command, args, cwd, timeoutSec);
302
298
  }
303
299
  /**
304
- * Run the `snippets` check against `cwd` in `mode` (D12: the `snippets` src
305
- * adapter passes `'src'`, `snippets-dist` passes `'dist'`). Discovers the doc
300
+ * Run the `snippets` check against `cwd` in `mode` (the `snippets` adapter
301
+ * passes `'src'`, `snippets-dist` passes `'dist'`). Discovers the doc
306
302
  * set, plans the checked snippets ({@link vacuousOptInError} applies first —
307
303
  * zero tagged snippets is a hard error before anything is written), derives
308
304
  * the mode's `paths` mapping, emits the scratch files plus a generated
309
305
  * tsconfig under `.check/doc-snippets/`, and typechecks them through the
310
306
  * injected `spawn`. A compile failure's `stderr` carries tsc's raw output plus
311
307
  * the `snippet -> source map:` legend mapping each generated file back to
312
- * `<doc>:<line>` (D11).
308
+ * `<doc>:<line>`.
313
309
  */
314
310
  export async function checkSnippets(opts) {
315
311
  const { cwd, mode, pm, spawn, timeoutSec } = opts;
@@ -1 +1 @@
1
- {"version":3,"file":"snippets.js","sourceRoot":"","sources":["../src/snippets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,+BAA+B,CAAC;AAE/D,oFAAoF;AACpF,MAAM,CAAC,MAAM,aAAa,GAAG,yBAAyB,CAAC;AAEvD,0DAA0D;AAC1D,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC;AA6DzC;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,WAA8B;IAC3D,MAAM,KAAK,GAAG,CAAC,WAAW,CAAC,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACvC,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAClE,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,CAAC,IAAI,CAAC,CAAC;YACP,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBAChE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC1B,CAAC,IAAI,CAAC,CAAC;YACT,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,CAAC,IAAI,CAAC,CAAC;IACT,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,OAAO,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,UAAkB;IACjE,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,UAAU,KAAK,CAAC;AACpD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,IAAyB;IACpD,MAAM,OAAO,GAAuB,EAAE,CAAC;IACvC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACjD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,IAAI,CAAC,CAAC;gBACb,OAAO;YACT,CAAC;YACD,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC;gBAC7C,IAAI,EAAE,GAAG,CAAC,OAAO;gBACjB,IAAI,EAAE,KAAK,CAAC,SAAS;gBACrB,IAAI,EAAE,KAAK,CAAC,IAAI;aACjB,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAkB;IAClD,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,OAAO,4HAA4H,CAAC;AACtI,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAGvC;IACC,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,WAAW;QACzB,eAAe,EAAE;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI;YACZ,oBAAoB,EAAE,KAAK;YAC3B,eAAe,EAAE,KAAK;YACtB,kCAAkC,EAAE,KAAK;YACzC,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,KAAK;YAChB,WAAW,EAAE,KAAK;YAClB,cAAc,EAAE,KAAK;YACrB,WAAW,EAAE,KAAK;SACnB;QACD,OAAO,EAAE,CAAC,QAAQ,CAAC;QACnB,OAAO,EAAE,EAAE;KACZ,CAAC;AACJ,CAAC;AAeD,4EAA4E;AAC5E,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AAEnD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,YAAY,CAAC,GAAW;IACrC,IAAI,WAAW,GAAa,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,WAAW,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,2DAA2D;IAC7D,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,cAAc,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAA4B,EAAE;QAC1E,IAAI,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;QACvE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IACF,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAiB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,mGAAmG;AACnG,KAAK,UAAU,gBAAgB,CAAC,GAAW;IACzC,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACtF,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3D,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,oBAAoB,CAAC,GAAW;IAC7C,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACvF,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjF,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/E,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAClC,MAAM,GAAG,GAA6B,EAAE,CAAC;QACzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC1F,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,mHAAmH;AACnH,SAAS,iBAAiB,CAAC,MAAc;IACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACpE,OAAO,SAAS,QAAQ,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,IAI9B;IACC,IAAI,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrE,MAAM,QAAQ,GAA6B,EAAE,CAAC;QAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YAChE,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACnD,OAAO,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC;IACzD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,OAAe;IAClC,OAAO;QACL,EAAE,EAAE,KAAK;QACT,SAAS,EAAE,CAAC;QACZ,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;QACrE,MAAM,EAAE,mBAAmB,OAAO,IAAI;KACvC,CAAC;AACJ,CAAC;AAED,gGAAgG;AAChG,SAAS,MAAM,CACb,GAAW,EACX,eAAuB,EACvB,EAAkB,EAClB,KAAmB,EACnB,UAA8B;IAE9B,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC;IACxG,OAAO,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAMnC;IACC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAElD,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,OAAO;QAAE,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;IAEzC,IAAI,KAAK,GAA6B,EAAE,CAAC;IACzC,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5G,MAAM,OAAO,GAAG,cAAc,CAAC;YAC7B,YAAY;YACZ,aAAa;YACb,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;SACtD,CAAC,CAAC;QACH,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,WAAW,CAChB,sGAAsG;gBACpG,mGAAmG;gBACnG,sCAAsC,CACzC,CAAC;QACJ,CAAC;QACD,KAAK,GAAG,OAAO,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAEnG,MAAM,QAAQ,GAAG,uBAAuB,CAAC,EAAE,WAAW,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC,CAAC;IACxF,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAEjG,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IAC7F,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;IAEtE,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;QACf,OAAO;YACL,EAAE,EAAE,IAAI;YACR,SAAS,EAAE,CAAC;YACZ,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;YAC/D,MAAM,EAAE,mBAAmB,IAAI,CAAC,OAAO,+BAA+B,IAAI,KAAK,IAAI,CAAC,OAAO,aAAa;SACzG,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1F,MAAM,SAAS,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAC9D,OAAO;QACL,EAAE,EAAE,KAAK;QACT,SAAS,EAAE,CAAC;QACZ,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;QAChE,MAAM,EAAE,oDAAoD,SAAS,+BAA+B,MAAM,IAAI;KAC/G,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"snippets.js","sourceRoot":"","sources":["../src/snippets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Tolerant parsing of a tool's stdout as JSON.
3
+ *
4
+ * A tool that emits JSON does not always get stdout to itself: any launcher,
5
+ * wrapper or shell profile can print before it does. checkride suppresses the
6
+ * one case it controls at the invocation (pnpm's dependency-check narration —
7
+ * see `translateExec` and `docs/tools.md` §Launcher quirks), but a consumer's
8
+ * launcher is not checkride's to pin, so the read tolerates a preamble too.
9
+ *
10
+ * **Skipping a preamble is not normalizing.** The tool's own bytes are returned
11
+ * verbatim from the first character of the JSON onward — nothing inside them is
12
+ * rewritten, reordered or reformatted, and what gets dropped was never the
13
+ * tool's output to begin with. That is what keeps this compatible with "the raw
14
+ * file is the truth" (`docs/contract.md`), which is a promise, not a detail.
15
+ */
16
+ /** A tool's stdout parsed as JSON: the value, and the exact text it came from. */
17
+ export type ToolJson = {
18
+ /** The parsed value. */
19
+ value: unknown;
20
+ /**
21
+ * The JSON text with any preamble removed — what belongs in
22
+ * `.check/<slot>.json`, so the artifact a consumer opens actually parses.
23
+ */
24
+ text: string;
25
+ };
26
+ /**
27
+ * Parse `raw` as JSON, tolerating up to {@link MAX_PREAMBLE_LINES} lines of
28
+ * non-JSON ahead of it. Clean output takes the fast path and is returned byte
29
+ * for byte. Returns `null` when nothing parses — every caller treats that as a
30
+ * loud failure, never as "clean".
31
+ */
32
+ export declare function parseToolJson(raw: string): ToolJson | null;
33
+ //# sourceMappingURL=tool-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-json.d.ts","sourceRoot":"","sources":["../src/tool-json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AASH,kFAAkF;AAClF,MAAM,MAAM,QAAQ,GAAG;IACrB,wBAAwB;IACxB,KAAK,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAYF;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAgB1D"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Tolerant parsing of a tool's stdout as JSON.
3
+ *
4
+ * A tool that emits JSON does not always get stdout to itself: any launcher,
5
+ * wrapper or shell profile can print before it does. checkride suppresses the
6
+ * one case it controls at the invocation (pnpm's dependency-check narration —
7
+ * see `translateExec` and `docs/tools.md` §Launcher quirks), but a consumer's
8
+ * launcher is not checkride's to pin, so the read tolerates a preamble too.
9
+ *
10
+ * **Skipping a preamble is not normalizing.** The tool's own bytes are returned
11
+ * verbatim from the first character of the JSON onward — nothing inside them is
12
+ * rewritten, reordered or reformatted, and what gets dropped was never the
13
+ * tool's output to begin with. That is what keeps this compatible with "the raw
14
+ * file is the truth" (`docs/contract.md`), which is a promise, not a detail.
15
+ */
16
+ /**
17
+ * How many leading lines may precede the JSON before parsing gives up. Real
18
+ * preambles are one or two lines; the cap keeps a large non-JSON payload (a 650
19
+ * kB test log, say) from costing one parse attempt per line.
20
+ */
21
+ const MAX_PREAMBLE_LINES = 10;
22
+ /** Parse `text` as JSON, or `undefined` when it is not JSON at all. */
23
+ function tryParse(text) {
24
+ if (text.trim() === '')
25
+ return undefined;
26
+ try {
27
+ return JSON.parse(text);
28
+ }
29
+ catch {
30
+ return undefined;
31
+ }
32
+ }
33
+ /**
34
+ * Parse `raw` as JSON, tolerating up to {@link MAX_PREAMBLE_LINES} lines of
35
+ * non-JSON ahead of it. Clean output takes the fast path and is returned byte
36
+ * for byte. Returns `null` when nothing parses — every caller treats that as a
37
+ * loud failure, never as "clean".
38
+ */
39
+ export function parseToolJson(raw) {
40
+ const whole = tryParse(raw);
41
+ if (whole !== undefined)
42
+ return { value: whole, text: raw };
43
+ // Retry from each subsequent line start. The tool's JSON begins at a line
44
+ // boundary because the preamble that precedes it ended with a newline.
45
+ let offset = 0;
46
+ for (let line = 0; line < MAX_PREAMBLE_LINES; line++) {
47
+ const newline = raw.indexOf('\n', offset);
48
+ if (newline === -1)
49
+ break;
50
+ offset = newline + 1;
51
+ const rest = raw.slice(offset);
52
+ const value = tryParse(rest);
53
+ if (value !== undefined)
54
+ return { value, text: rest };
55
+ }
56
+ return null;
57
+ }
58
+ //# sourceMappingURL=tool-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-json.js","sourceRoot":"","sources":["../src/tool-json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAa9B,uEAAuE;AACvE,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACzC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAE5D,0EAA0E;IAC1E,uEAAuE;IACvE,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,kBAAkB,EAAE,IAAI,EAAE,EAAE,CAAC;QACrD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,OAAO,KAAK,CAAC,CAAC;YAAE,MAAM;QAC1B,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC;QACrB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Executable form of the triage reader — what the bundled `/checkride:check`
4
+ * skill invokes:
5
+ *
6
+ * ```
7
+ * node <plugin-root>/dist/triage/cli.js [cwd]
8
+ * ```
9
+ *
10
+ * It ships in the package's existing `dist/`, so both the published tarball and
11
+ * an installed plugin cache already carry it and no consumer build step exists.
12
+ * It adds no CLI command, flag or config to checkride itself: `dist/cli.js`
13
+ * knows nothing about this file.
14
+ *
15
+ * Exit code 0 means *a report was rendered*, however the gate came back — the
16
+ * gate's verdict is in the Markdown, not in this process's status, so a red repo
17
+ * does not look to the caller like a broken reader. Only a failure to produce a
18
+ * report at all exits non-zero.
19
+ */
20
+ export {};
21
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/triage/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG"}
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Executable form of the triage reader — what the bundled `/checkride:check`
4
+ * skill invokes:
5
+ *
6
+ * ```
7
+ * node <plugin-root>/dist/triage/cli.js [cwd]
8
+ * ```
9
+ *
10
+ * It ships in the package's existing `dist/`, so both the published tarball and
11
+ * an installed plugin cache already carry it and no consumer build step exists.
12
+ * It adds no CLI command, flag or config to checkride itself: `dist/cli.js`
13
+ * knows nothing about this file.
14
+ *
15
+ * Exit code 0 means *a report was rendered*, however the gate came back — the
16
+ * gate's verdict is in the Markdown, not in this process's status, so a red repo
17
+ * does not look to the caller like a broken reader. Only a failure to produce a
18
+ * report at all exits non-zero.
19
+ */
20
+ import { realEnv } from './env.js';
21
+ import { renderTriage } from './render.js';
22
+ import { triage } from './triage.js';
23
+ const [, , cwdArg] = process.argv;
24
+ const report = await triage(cwdArg ?? process.cwd(), realEnv);
25
+ process.stdout.write(`${renderTriage(report)}\n`);
26
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/triage/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,CAAC,EAAE,AAAD,EAAG,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AAClC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;AAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Folding `checkride doctor` into the broken-harness branch.
3
+ *
4
+ * Exit 2 means the harness broke or was misused, and every check result from
5
+ * that run is untrustworthy. "Broken harness" on its own costs a round-trip:
6
+ * the agent has to go ask what broke. `doctor` already answers that — it is
7
+ * read-only, runs no checks, and splits 0/1 the same way — so triage runs it at
8
+ * the one moment it is the right answer and arrives with the diagnosis attached.
9
+ *
10
+ * It is spawned as `node <repo's checkride>/dist/cli.js doctor --json`, not
11
+ * through the package manager: `<pm> exec` can print its own noise onto stdout,
12
+ * and the JSON report is the thing being parsed. It is also deliberately the
13
+ * *repo's* installed checkride rather than the one this reader ships inside —
14
+ * diagnosing an environment with a different version's doctor is how a reader
15
+ * reports a problem the repo does not have.
16
+ */
17
+ import type { TriageEnv } from './env.js';
18
+ /** One required doctor row that is not ok — an environment problem to fix. */
19
+ export type DoctorFinding = {
20
+ name: string;
21
+ status: string;
22
+ found: string | null;
23
+ expected: string | null;
24
+ hint: string | null;
25
+ };
26
+ /** What the fold-in produced. Every state is reportable; none is an error. */
27
+ export type DoctorFold = {
28
+ state: 'ran';
29
+ ok: boolean;
30
+ exitCode: number | null;
31
+ findings: DoctorFinding[];
32
+ } | {
33
+ state: 'unavailable';
34
+ reason: string;
35
+ } | {
36
+ state: 'unreadable';
37
+ reason: string;
38
+ };
39
+ /**
40
+ * The checkride CLI this repo would run: its installed copy, or its own build
41
+ * when `cwd` *is* the checkride package (the dogfooding case). Never some other
42
+ * repo's `dist/cli.js` — the package name has to say so.
43
+ */
44
+ export declare function resolveCheckrideCli(cwd: string): string | null;
45
+ /**
46
+ * Run the repo's `checkride doctor --json` and extract what is broken. Never
47
+ * throws; an absent or unparseable doctor is reported as such so the report can
48
+ * say "the harness broke and I could not ask why" instead of inventing a cause.
49
+ */
50
+ export declare function foldDoctor(cwd: string, env: TriageEnv): Promise<DoctorFold>;
51
+ //# sourceMappingURL=doctor-fold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-fold.d.ts","sourceRoot":"","sources":["../../src/triage/doctor-fold.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,8EAA8E;AAC9E,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB,CAAC;AAEF,8EAA8E;AAC9E,MAAM,MAAM,UAAU,GAClB;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,aAAa,EAAE,CAAA;CAAE,GACjF;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAe5C;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM9D;AAwBD;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAUjF"}