@seanmars/tospec 0.19.0-beta.8 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (421) hide show
  1. package/CHANGELOG.md +60 -310
  2. package/README.md +69 -82
  3. package/assets/dashboard/app.js +11 -0
  4. package/assets/dashboard/style.css +7 -0
  5. package/dist/cli/index.d.ts.map +1 -1
  6. package/dist/cli/index.js +89 -106
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/commands/config.d.ts +9 -17
  9. package/dist/commands/config.d.ts.map +1 -1
  10. package/dist/commands/config.js +293 -145
  11. package/dist/commands/config.js.map +1 -1
  12. package/dist/commands/dashboard.d.ts +57 -99
  13. package/dist/commands/dashboard.d.ts.map +1 -1
  14. package/dist/commands/dashboard.js +190 -313
  15. package/dist/commands/dashboard.js.map +1 -1
  16. package/dist/commands/decision.d.ts +38 -27
  17. package/dist/commands/decision.d.ts.map +1 -1
  18. package/dist/commands/decision.js +296 -128
  19. package/dist/commands/decision.js.map +1 -1
  20. package/dist/commands/metrics.d.ts +28 -51
  21. package/dist/commands/metrics.d.ts.map +1 -1
  22. package/dist/commands/metrics.js +62 -93
  23. package/dist/commands/metrics.js.map +1 -1
  24. package/dist/commands/shared-output.d.ts +12 -27
  25. package/dist/commands/shared-output.d.ts.map +1 -1
  26. package/dist/commands/shared-output.js +22 -45
  27. package/dist/commands/shared-output.js.map +1 -1
  28. package/dist/commands/show.d.ts +4 -7
  29. package/dist/commands/show.d.ts.map +1 -1
  30. package/dist/commands/show.js +23 -11
  31. package/dist/commands/show.js.map +1 -1
  32. package/dist/commands/validate.d.ts +34 -58
  33. package/dist/commands/validate.d.ts.map +1 -1
  34. package/dist/commands/validate.js +225 -141
  35. package/dist/commands/validate.js.map +1 -1
  36. package/dist/commands/workflow/index.d.ts +1 -5
  37. package/dist/commands/workflow/index.d.ts.map +1 -1
  38. package/dist/commands/workflow/index.js +1 -5
  39. package/dist/commands/workflow/index.js.map +1 -1
  40. package/dist/commands/workflow/instructions.d.ts +14 -24
  41. package/dist/commands/workflow/instructions.d.ts.map +1 -1
  42. package/dist/commands/workflow/instructions.js +219 -128
  43. package/dist/commands/workflow/instructions.js.map +1 -1
  44. package/dist/commands/workflow/new-change.d.ts +2 -5
  45. package/dist/commands/workflow/new-change.d.ts.map +1 -1
  46. package/dist/commands/workflow/new-change.js +69 -32
  47. package/dist/commands/workflow/new-change.js.map +1 -1
  48. package/dist/commands/workflow/schemas.d.ts +1 -5
  49. package/dist/commands/workflow/schemas.d.ts.map +1 -1
  50. package/dist/commands/workflow/schemas.js +6 -17
  51. package/dist/commands/workflow/schemas.js.map +1 -1
  52. package/dist/commands/workflow/shared.d.ts +37 -42
  53. package/dist/commands/workflow/shared.d.ts.map +1 -1
  54. package/dist/commands/workflow/shared.js +23 -54
  55. package/dist/commands/workflow/shared.js.map +1 -1
  56. package/dist/commands/workflow/status.d.ts +7 -17
  57. package/dist/commands/workflow/status.d.ts.map +1 -1
  58. package/dist/commands/workflow/status.js +57 -72
  59. package/dist/commands/workflow/status.js.map +1 -1
  60. package/dist/commands/workflow/templates.d.ts +8 -8
  61. package/dist/commands/workflow/templates.d.ts.map +1 -1
  62. package/dist/commands/workflow/templates.js +32 -46
  63. package/dist/commands/workflow/templates.js.map +1 -1
  64. package/dist/core/archive.d.ts +22 -31
  65. package/dist/core/archive.d.ts.map +1 -1
  66. package/dist/core/archive.js +296 -283
  67. package/dist/core/archive.js.map +1 -1
  68. package/dist/core/artifact-graph/graph.d.ts +25 -42
  69. package/dist/core/artifact-graph/graph.d.ts.map +1 -1
  70. package/dist/core/artifact-graph/graph.js +45 -63
  71. package/dist/core/artifact-graph/graph.js.map +1 -1
  72. package/dist/core/artifact-graph/index.d.ts +1 -1
  73. package/dist/core/artifact-graph/index.d.ts.map +1 -1
  74. package/dist/core/artifact-graph/index.js +1 -1
  75. package/dist/core/artifact-graph/index.js.map +1 -1
  76. package/dist/core/artifact-graph/instruction-loader.d.ts +54 -120
  77. package/dist/core/artifact-graph/instruction-loader.d.ts.map +1 -1
  78. package/dist/core/artifact-graph/instruction-loader.js +129 -111
  79. package/dist/core/artifact-graph/instruction-loader.js.map +1 -1
  80. package/dist/core/artifact-graph/outputs.d.ts +9 -23
  81. package/dist/core/artifact-graph/outputs.d.ts.map +1 -1
  82. package/dist/core/artifact-graph/outputs.js +45 -38
  83. package/dist/core/artifact-graph/outputs.js.map +1 -1
  84. package/dist/core/artifact-graph/resolver.d.ts +36 -81
  85. package/dist/core/artifact-graph/resolver.d.ts.map +1 -1
  86. package/dist/core/artifact-graph/resolver.js +60 -101
  87. package/dist/core/artifact-graph/resolver.js.map +1 -1
  88. package/dist/core/artifact-graph/schema.d.ts +0 -6
  89. package/dist/core/artifact-graph/schema.d.ts.map +1 -1
  90. package/dist/core/artifact-graph/schema.js +7 -32
  91. package/dist/core/artifact-graph/schema.js.map +1 -1
  92. package/dist/core/artifact-graph/state.d.ts +1 -8
  93. package/dist/core/artifact-graph/state.d.ts.map +1 -1
  94. package/dist/core/artifact-graph/state.js +2 -17
  95. package/dist/core/artifact-graph/state.js.map +1 -1
  96. package/dist/core/artifact-graph/stub-detection.d.ts +6 -14
  97. package/dist/core/artifact-graph/stub-detection.d.ts.map +1 -1
  98. package/dist/core/artifact-graph/stub-detection.js +13 -16
  99. package/dist/core/artifact-graph/stub-detection.js.map +1 -1
  100. package/dist/core/artifact-graph/types.d.ts +4 -0
  101. package/dist/core/artifact-graph/types.d.ts.map +1 -1
  102. package/dist/core/artifact-graph/types.js +30 -10
  103. package/dist/core/artifact-graph/types.js.map +1 -1
  104. package/dist/core/available-tools.d.ts +3 -12
  105. package/dist/core/available-tools.d.ts.map +1 -1
  106. package/dist/core/available-tools.js +4 -13
  107. package/dist/core/available-tools.js.map +1 -1
  108. package/dist/core/change-metadata/schema.d.ts +1 -1
  109. package/dist/core/change-metadata/schema.d.ts.map +1 -1
  110. package/dist/core/change-metadata/schema.js +10 -7
  111. package/dist/core/change-metadata/schema.js.map +1 -1
  112. package/dist/core/change-presenter.d.ts +16 -27
  113. package/dist/core/change-presenter.d.ts.map +1 -1
  114. package/dist/core/change-presenter.js +53 -53
  115. package/dist/core/change-presenter.js.map +1 -1
  116. package/dist/core/change-status-policy.d.ts +4 -8
  117. package/dist/core/change-status-policy.d.ts.map +1 -1
  118. package/dist/core/change-status-policy.js +9 -17
  119. package/dist/core/change-status-policy.js.map +1 -1
  120. package/dist/core/codex-metrics.d.ts +25 -45
  121. package/dist/core/codex-metrics.d.ts.map +1 -1
  122. package/dist/core/codex-metrics.js +44 -88
  123. package/dist/core/codex-metrics.js.map +1 -1
  124. package/dist/core/codex-residue.d.ts +14 -15
  125. package/dist/core/codex-residue.d.ts.map +1 -1
  126. package/dist/core/codex-residue.js +18 -22
  127. package/dist/core/codex-residue.js.map +1 -1
  128. package/dist/core/command-generation/adapters/claude.d.ts +2 -9
  129. package/dist/core/command-generation/adapters/claude.d.ts.map +1 -1
  130. package/dist/core/command-generation/adapters/claude.js +2 -12
  131. package/dist/core/command-generation/adapters/claude.js.map +1 -1
  132. package/dist/core/command-generation/adapters/index.d.ts +1 -9
  133. package/dist/core/command-generation/adapters/index.d.ts.map +1 -1
  134. package/dist/core/command-generation/adapters/index.js +1 -9
  135. package/dist/core/command-generation/adapters/index.js.map +1 -1
  136. package/dist/core/command-generation/generator.d.ts +0 -17
  137. package/dist/core/command-generation/generator.d.ts.map +1 -1
  138. package/dist/core/command-generation/generator.js +0 -17
  139. package/dist/core/command-generation/generator.js.map +1 -1
  140. package/dist/core/command-generation/index.d.ts +2 -5
  141. package/dist/core/command-generation/index.d.ts.map +1 -1
  142. package/dist/core/command-generation/index.js +0 -9
  143. package/dist/core/command-generation/index.js.map +1 -1
  144. package/dist/core/command-generation/types.d.ts +10 -36
  145. package/dist/core/command-generation/types.d.ts.map +1 -1
  146. package/dist/core/command-generation/types.js +0 -6
  147. package/dist/core/command-generation/types.js.map +1 -1
  148. package/dist/core/command-generation/yaml.d.ts +3 -18
  149. package/dist/core/command-generation/yaml.d.ts.map +1 -1
  150. package/dist/core/command-generation/yaml.js +5 -23
  151. package/dist/core/command-generation/yaml.js.map +1 -1
  152. package/dist/core/config-prompts.d.ts +2 -4
  153. package/dist/core/config-prompts.d.ts.map +1 -1
  154. package/dist/core/config-prompts.js +2 -7
  155. package/dist/core/config-prompts.js.map +1 -1
  156. package/dist/core/config-schema.d.ts +7 -41
  157. package/dist/core/config-schema.d.ts.map +1 -1
  158. package/dist/core/config-schema.js +35 -74
  159. package/dist/core/config-schema.js.map +1 -1
  160. package/dist/core/config.d.ts +25 -49
  161. package/dist/core/config.d.ts.map +1 -1
  162. package/dist/core/config.js +22 -45
  163. package/dist/core/config.js.map +1 -1
  164. package/dist/core/dashboard-activity.d.ts +7 -9
  165. package/dist/core/dashboard-activity.d.ts.map +1 -1
  166. package/dist/core/dashboard-activity.js +26 -24
  167. package/dist/core/dashboard-activity.js.map +1 -1
  168. package/dist/core/dashboard-data.d.ts +35 -22
  169. package/dist/core/dashboard-data.d.ts.map +1 -1
  170. package/dist/core/dashboard-data.js +57 -72
  171. package/dist/core/dashboard-data.js.map +1 -1
  172. package/dist/core/global-config.d.ts +24 -53
  173. package/dist/core/global-config.d.ts.map +1 -1
  174. package/dist/core/global-config.js +38 -67
  175. package/dist/core/global-config.js.map +1 -1
  176. package/dist/core/init.d.ts +12 -28
  177. package/dist/core/init.d.ts.map +1 -1
  178. package/dist/core/init.js +90 -168
  179. package/dist/core/init.js.map +1 -1
  180. package/dist/core/list.d.ts.map +1 -1
  181. package/dist/core/list.js +80 -38
  182. package/dist/core/list.js.map +1 -1
  183. package/dist/core/local-server.d.ts +41 -83
  184. package/dist/core/local-server.d.ts.map +1 -1
  185. package/dist/core/local-server.js +53 -98
  186. package/dist/core/local-server.js.map +1 -1
  187. package/dist/core/markdown-render.d.ts +15 -23
  188. package/dist/core/markdown-render.d.ts.map +1 -1
  189. package/dist/core/markdown-render.js +25 -34
  190. package/dist/core/markdown-render.js.map +1 -1
  191. package/dist/core/migrate.d.ts +19 -16
  192. package/dist/core/migrate.d.ts.map +1 -1
  193. package/dist/core/migrate.js +151 -135
  194. package/dist/core/migrate.js.map +1 -1
  195. package/dist/core/parsers/change-parser.d.ts +7 -10
  196. package/dist/core/parsers/change-parser.d.ts.map +1 -1
  197. package/dist/core/parsers/change-parser.js +48 -56
  198. package/dist/core/parsers/change-parser.js.map +1 -1
  199. package/dist/core/parsers/markdown-parser.d.ts +8 -9
  200. package/dist/core/parsers/markdown-parser.d.ts.map +1 -1
  201. package/dist/core/parsers/markdown-parser.js +23 -30
  202. package/dist/core/parsers/markdown-parser.js.map +1 -1
  203. package/dist/core/parsers/requirement-blocks.d.ts +43 -15
  204. package/dist/core/parsers/requirement-blocks.d.ts.map +1 -1
  205. package/dist/core/parsers/requirement-blocks.js +142 -70
  206. package/dist/core/parsers/requirement-blocks.js.map +1 -1
  207. package/dist/core/parsers/requirement-text.d.ts +73 -79
  208. package/dist/core/parsers/requirement-text.d.ts.map +1 -1
  209. package/dist/core/parsers/requirement-text.js +137 -79
  210. package/dist/core/parsers/requirement-text.js.map +1 -1
  211. package/dist/core/parsers/spec-structure.d.ts.map +1 -1
  212. package/dist/core/parsers/spec-structure.js +10 -6
  213. package/dist/core/parsers/spec-structure.js.map +1 -1
  214. package/dist/core/profiles.d.ts +3 -10
  215. package/dist/core/profiles.d.ts.map +1 -1
  216. package/dist/core/profiles.js +5 -12
  217. package/dist/core/profiles.js.map +1 -1
  218. package/dist/core/project-config.d.ts +43 -44
  219. package/dist/core/project-config.d.ts.map +1 -1
  220. package/dist/core/project-config.js +107 -82
  221. package/dist/core/project-config.js.map +1 -1
  222. package/dist/core/project-layout.d.ts +9 -17
  223. package/dist/core/project-layout.d.ts.map +1 -1
  224. package/dist/core/project-layout.js +16 -26
  225. package/dist/core/project-layout.js.map +1 -1
  226. package/dist/core/root-selection.d.ts +8 -14
  227. package/dist/core/root-selection.d.ts.map +1 -1
  228. package/dist/core/root-selection.js +3 -6
  229. package/dist/core/root-selection.js.map +1 -1
  230. package/dist/core/rules.d.ts.map +1 -1
  231. package/dist/core/rules.js +2 -3
  232. package/dist/core/rules.js.map +1 -1
  233. package/dist/core/schema-names.d.ts +16 -0
  234. package/dist/core/schema-names.d.ts.map +1 -0
  235. package/dist/core/schema-names.js +16 -0
  236. package/dist/core/schema-names.js.map +1 -0
  237. package/dist/core/schemas/base.schema.d.ts.map +1 -1
  238. package/dist/core/schemas/base.schema.js +6 -12
  239. package/dist/core/schemas/base.schema.js.map +1 -1
  240. package/dist/core/schemas/change.schema.d.ts +8 -0
  241. package/dist/core/schemas/change.schema.d.ts.map +1 -1
  242. package/dist/core/schemas/change.schema.js +41 -10
  243. package/dist/core/schemas/change.schema.js.map +1 -1
  244. package/dist/core/shared/index.d.ts +2 -7
  245. package/dist/core/shared/index.d.ts.map +1 -1
  246. package/dist/core/shared/index.js +2 -7
  247. package/dist/core/shared/index.js.map +1 -1
  248. package/dist/core/shared/rules-generation.d.ts +5 -15
  249. package/dist/core/shared/rules-generation.d.ts.map +1 -1
  250. package/dist/core/shared/rules-generation.js +33 -37
  251. package/dist/core/shared/rules-generation.js.map +1 -1
  252. package/dist/core/shared/skill-generation.d.ts +28 -43
  253. package/dist/core/shared/skill-generation.d.ts.map +1 -1
  254. package/dist/core/shared/skill-generation.js +82 -51
  255. package/dist/core/shared/skill-generation.js.map +1 -1
  256. package/dist/core/shared/tool-detection.d.ts +35 -76
  257. package/dist/core/shared/tool-detection.d.ts.map +1 -1
  258. package/dist/core/shared/tool-detection.js +73 -93
  259. package/dist/core/shared/tool-detection.js.map +1 -1
  260. package/dist/core/skill-metrics.d.ts +36 -63
  261. package/dist/core/skill-metrics.d.ts.map +1 -1
  262. package/dist/core/skill-metrics.js +34 -73
  263. package/dist/core/skill-metrics.js.map +1 -1
  264. package/dist/core/spec-presenter.d.ts.map +1 -1
  265. package/dist/core/spec-presenter.js +5 -10
  266. package/dist/core/spec-presenter.js.map +1 -1
  267. package/dist/core/specs-apply.d.ts +16 -31
  268. package/dist/core/specs-apply.d.ts.map +1 -1
  269. package/dist/core/specs-apply.js +146 -195
  270. package/dist/core/specs-apply.js.map +1 -1
  271. package/dist/core/templates/fragments/interview.d.ts +2 -6
  272. package/dist/core/templates/fragments/interview.d.ts.map +1 -1
  273. package/dist/core/templates/fragments/interview.js +2 -6
  274. package/dist/core/templates/fragments/interview.js.map +1 -1
  275. package/dist/core/templates/fragments/next-step.d.ts +4 -8
  276. package/dist/core/templates/fragments/next-step.d.ts.map +1 -1
  277. package/dist/core/templates/fragments/next-step.js +4 -8
  278. package/dist/core/templates/fragments/next-step.js.map +1 -1
  279. package/dist/core/templates/fragments/validate.d.ts +13 -0
  280. package/dist/core/templates/fragments/validate.d.ts.map +1 -0
  281. package/dist/core/templates/fragments/validate.js +13 -0
  282. package/dist/core/templates/fragments/validate.js.map +1 -0
  283. package/dist/core/templates/fragments/verify.d.ts +9 -12
  284. package/dist/core/templates/fragments/verify.d.ts.map +1 -1
  285. package/dist/core/templates/fragments/verify.js +9 -12
  286. package/dist/core/templates/fragments/verify.js.map +1 -1
  287. package/dist/core/templates/index.d.ts +0 -6
  288. package/dist/core/templates/index.d.ts.map +1 -1
  289. package/dist/core/templates/index.js +0 -7
  290. package/dist/core/templates/index.js.map +1 -1
  291. package/dist/core/templates/skill-templates.d.ts +1 -5
  292. package/dist/core/templates/skill-templates.d.ts.map +1 -1
  293. package/dist/core/templates/skill-templates.js +0 -5
  294. package/dist/core/templates/skill-templates.js.map +1 -1
  295. package/dist/core/templates/types.d.ts +3 -7
  296. package/dist/core/templates/types.d.ts.map +1 -1
  297. package/dist/core/templates/types.js +0 -3
  298. package/dist/core/templates/types.js.map +1 -1
  299. package/dist/core/templates/workflows/apply.d.ts +3 -9
  300. package/dist/core/templates/workflows/apply.d.ts.map +1 -1
  301. package/dist/core/templates/workflows/apply.js +11 -13
  302. package/dist/core/templates/workflows/apply.js.map +1 -1
  303. package/dist/core/templates/workflows/archive.d.ts +0 -6
  304. package/dist/core/templates/workflows/archive.d.ts.map +1 -1
  305. package/dist/core/templates/workflows/archive.js +16 -5
  306. package/dist/core/templates/workflows/archive.js.map +1 -1
  307. package/dist/core/templates/workflows/decision.js +3 -3
  308. package/dist/core/templates/workflows/decision.js.map +1 -1
  309. package/dist/core/templates/workflows/explore.js +1 -1
  310. package/dist/core/templates/workflows/grill.d.ts.map +1 -1
  311. package/dist/core/templates/workflows/grill.js +0 -2
  312. package/dist/core/templates/workflows/grill.js.map +1 -1
  313. package/dist/core/templates/workflows/issue.d.ts +0 -6
  314. package/dist/core/templates/workflows/issue.d.ts.map +1 -1
  315. package/dist/core/templates/workflows/issue.js +3 -2
  316. package/dist/core/templates/workflows/issue.js.map +1 -1
  317. package/dist/core/templates/workflows/propose.d.ts +0 -6
  318. package/dist/core/templates/workflows/propose.d.ts.map +1 -1
  319. package/dist/core/templates/workflows/propose.js +2 -2
  320. package/dist/core/templates/workflows/propose.js.map +1 -1
  321. package/dist/core/templates/workflows/sync.d.ts +2 -8
  322. package/dist/core/templates/workflows/sync.d.ts.map +1 -1
  323. package/dist/core/templates/workflows/sync.js +4 -3
  324. package/dist/core/templates/workflows/sync.js.map +1 -1
  325. package/dist/core/templates/workflows/update.d.ts +0 -6
  326. package/dist/core/templates/workflows/update.d.ts.map +1 -1
  327. package/dist/core/templates/workflows/update.js +9 -2
  328. package/dist/core/templates/workflows/update.js.map +1 -1
  329. package/dist/core/update.d.ts +10 -36
  330. package/dist/core/update.d.ts.map +1 -1
  331. package/dist/core/update.js +59 -126
  332. package/dist/core/update.js.map +1 -1
  333. package/dist/core/user-state-migration.d.ts +13 -15
  334. package/dist/core/user-state-migration.d.ts.map +1 -1
  335. package/dist/core/user-state-migration.js +16 -20
  336. package/dist/core/user-state-migration.js.map +1 -1
  337. package/dist/core/validation/constants.d.ts +4 -10
  338. package/dist/core/validation/constants.d.ts.map +1 -1
  339. package/dist/core/validation/constants.js +25 -25
  340. package/dist/core/validation/constants.js.map +1 -1
  341. package/dist/core/validation/prose-length.d.ts +15 -0
  342. package/dist/core/validation/prose-length.d.ts.map +1 -0
  343. package/dist/core/validation/prose-length.js +29 -0
  344. package/dist/core/validation/prose-length.js.map +1 -0
  345. package/dist/core/validation/purpose-placeholder.d.ts +9 -16
  346. package/dist/core/validation/purpose-placeholder.d.ts.map +1 -1
  347. package/dist/core/validation/purpose-placeholder.js +30 -44
  348. package/dist/core/validation/purpose-placeholder.js.map +1 -1
  349. package/dist/core/validation/section-validator.d.ts +4 -4
  350. package/dist/core/validation/section-validator.d.ts.map +1 -1
  351. package/dist/core/validation/section-validator.js +30 -12
  352. package/dist/core/validation/section-validator.js.map +1 -1
  353. package/dist/core/validation/task-numbering.d.ts +6 -3
  354. package/dist/core/validation/task-numbering.d.ts.map +1 -1
  355. package/dist/core/validation/task-numbering.js +23 -11
  356. package/dist/core/validation/task-numbering.js.map +1 -1
  357. package/dist/core/validation/types.d.ts +18 -0
  358. package/dist/core/validation/types.d.ts.map +1 -1
  359. package/dist/core/validation/types.js +12 -1
  360. package/dist/core/validation/types.js.map +1 -1
  361. package/dist/core/validation/validator.d.ts +42 -68
  362. package/dist/core/validation/validator.d.ts.map +1 -1
  363. package/dist/core/validation/validator.js +468 -285
  364. package/dist/core/validation/validator.js.map +1 -1
  365. package/dist/prompts/searchable-multi-select.d.ts +3 -8
  366. package/dist/prompts/searchable-multi-select.d.ts.map +1 -1
  367. package/dist/prompts/searchable-multi-select.js +16 -39
  368. package/dist/prompts/searchable-multi-select.js.map +1 -1
  369. package/dist/utils/change-metadata.d.ts +11 -50
  370. package/dist/utils/change-metadata.d.ts.map +1 -1
  371. package/dist/utils/change-metadata.js +48 -67
  372. package/dist/utils/change-metadata.js.map +1 -1
  373. package/dist/utils/change-utils.d.ts +24 -76
  374. package/dist/utils/change-utils.d.ts.map +1 -1
  375. package/dist/utils/change-utils.js +95 -142
  376. package/dist/utils/change-utils.js.map +1 -1
  377. package/dist/utils/file-lock.d.ts +39 -0
  378. package/dist/utils/file-lock.d.ts.map +1 -0
  379. package/dist/utils/file-lock.js +149 -0
  380. package/dist/utils/file-lock.js.map +1 -0
  381. package/dist/utils/file-system.d.ts +12 -32
  382. package/dist/utils/file-system.d.ts.map +1 -1
  383. package/dist/utils/file-system.js +16 -40
  384. package/dist/utils/file-system.js.map +1 -1
  385. package/dist/utils/frontmatter.d.ts +7 -11
  386. package/dist/utils/frontmatter.d.ts.map +1 -1
  387. package/dist/utils/frontmatter.js +11 -11
  388. package/dist/utils/frontmatter.js.map +1 -1
  389. package/dist/utils/interactive.d.ts +4 -9
  390. package/dist/utils/interactive.d.ts.map +1 -1
  391. package/dist/utils/interactive.js +2 -4
  392. package/dist/utils/interactive.js.map +1 -1
  393. package/dist/utils/item-discovery.d.ts +10 -20
  394. package/dist/utils/item-discovery.d.ts.map +1 -1
  395. package/dist/utils/item-discovery.js +31 -55
  396. package/dist/utils/item-discovery.js.map +1 -1
  397. package/dist/utils/link.d.ts +9 -18
  398. package/dist/utils/link.d.ts.map +1 -1
  399. package/dist/utils/link.js +9 -18
  400. package/dist/utils/link.js.map +1 -1
  401. package/dist/utils/requirement-diff.d.ts +13 -23
  402. package/dist/utils/requirement-diff.d.ts.map +1 -1
  403. package/dist/utils/requirement-diff.js +13 -23
  404. package/dist/utils/requirement-diff.js.map +1 -1
  405. package/dist/utils/spec-files.d.ts +7 -20
  406. package/dist/utils/spec-files.d.ts.map +1 -1
  407. package/dist/utils/spec-files.js +26 -51
  408. package/dist/utils/spec-files.js.map +1 -1
  409. package/dist/utils/task-progress.d.ts +11 -9
  410. package/dist/utils/task-progress.d.ts.map +1 -1
  411. package/dist/utils/task-progress.js +53 -32
  412. package/dist/utils/task-progress.js.map +1 -1
  413. package/dist/utils/timestamp.d.ts +5 -8
  414. package/dist/utils/timestamp.d.ts.map +1 -1
  415. package/dist/utils/timestamp.js +5 -8
  416. package/dist/utils/timestamp.js.map +1 -1
  417. package/package.json +2 -3
  418. package/schemas/issue/schema.yaml +8 -1
  419. package/schemas/issue/templates/spec.md +20 -3
  420. package/schemas/sdd/schema.yaml +20 -1
  421. package/schemas/sdd/templates/spec.md +20 -3
@@ -1,14 +1,12 @@
1
1
  /**
2
- * Shared JSON/failure output plumbing — the ONE definition of the CLI's
3
- * agent-facing JSON envelope:
2
+ * The one definition of the CLI's agent-facing JSON envelope:
4
3
  *
5
4
  * success: { version, root?, <data...> }
6
5
  * failure: { version, root?, <dataKey>: null, status: [{severity, code, message, fix?}] }
7
6
  *
8
- * Every command's `--json` output carries `version`; `root` is included
9
- * whenever a Tospec root was resolved before the output point. Human-mode
10
- * errors are `Error:` / `Fix:` lines on stderr with exit code 1
11
- * (Ctrl-C in a prompt → `Cancelled.` + 130).
7
+ * `root` is included whenever one was resolved before the output point. Human
8
+ * mode instead prints `Error:` / `Fix:` on stderr with exit code 1 (Ctrl-C in a
9
+ * prompt → `Cancelled.` + 130).
12
10
  */
13
11
  export interface CommandDiagnostic {
14
12
  severity: 'error' | 'warning' | 'info';
@@ -30,23 +28,14 @@ export declare function recordResolvedRoot(root: unknown): void;
30
28
  /** Test seam: forget the recorded root so one case cannot leak into the next. */
31
29
  export declare function clearResolvedRoot(): void;
32
30
  export declare function asErrorMessage(error: unknown): string;
33
- /**
34
- * @inquirer prompts reject with ExitPromptError on Ctrl-C; commands
35
- * translate that to `Cancelled.` + exit 130 (third caller extracted
36
- * this here in slice 7.1).
37
- */
31
+ /** @inquirer rejects with ExitPromptError on Ctrl-C → `Cancelled.` + exit 130. */
38
32
  export declare function isPromptCancellationError(error: unknown): boolean;
39
33
  /**
40
- * Aborts the CLI from a place that cannot simply return.
41
- *
42
- * Commander's `preAction` hooks run before the action, and returning from one
43
- * does not stop the action — which is why the one non-conforming exit point in
44
- * the codebase reached for `process.exit(1)`. `process.exit` terminates before
45
- * pending stdout/stderr writes have necessarily flushed (a documented
46
- * truncation source on Windows pipes), in a CLI whose `--json` contract
47
- * requires exactly one whole JSON document to reach stdout. `runCli` catches
48
- * this, sets `process.exitCode`, and returns, so the process ends the way every
49
- * other failure path ends.
34
+ * Aborts the CLI from a place that cannot simply return — returning from a
35
+ * commander `preAction` hook does not stop the action. `process.exit` is not an
36
+ * option: it terminates before pending stdout writes have necessarily flushed
37
+ * (a documented truncation source on Windows pipes), and `--json` requires one
38
+ * whole document. `runCli` catches this and sets `process.exitCode` instead.
50
39
  */
51
40
  export declare class CliAbortError extends Error {
52
41
  readonly isCliAbort = true;
@@ -55,12 +44,8 @@ export declare class CliAbortError extends Error {
55
44
  export declare function isCliAbort(error: unknown): boolean;
56
45
  export declare function asStatus(error: unknown, fallbackCode: string): CommandDiagnostic;
57
46
  /**
58
- * Turns a commander error code into the CLI's own code convention.
59
- *
60
- * Commander namespaces and camel-cases its codes (`commander.invalidArgument`);
61
- * every code this CLI emits is lower_snake. An agent matching on
62
- * `status[].code` should not have to learn a second spelling just because the
63
- * failure happened during argument parsing rather than inside the command.
47
+ * `commander.invalidArgument` -> `invalid_argument`, so an agent matching on
48
+ * `status[].code` needs no second spelling for a parse-time failure.
64
49
  */
65
50
  export declare function normalizeCommanderCode(code: string | undefined): string;
66
51
  export declare function emitFailure(json: boolean | undefined, payload: Record<string, unknown>, error: unknown, fallbackCode: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"shared-output.d.ts","sourceRoot":"","sources":["../../src/commands/shared-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AAEtC,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEhD;AAED,6DAA6D;AAC7D,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAElF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,EAAE,iBAAiB,GACxB,IAAI,CAKN;AAuBD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAEtD;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAErD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMjE;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,UAAU,QAAQ;IAE3B,YAAY,OAAO,SAAgB,EAGlC;CACF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAElD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,iBAAiB,CAehF;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAMvE;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,OAAO,GAAG,SAAS,EACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,MAAM,GACnB,IAAI,CA0BN"}
1
+ {"version":3,"file":"shared-output.d.ts","sourceRoot":"","sources":["../../src/commands/shared-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,gBAAgB,QAAQ,CAAC;AAEtC,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEhD;AAED,6DAA6D;AAC7D,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAElF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,EAAE,iBAAiB,GACxB,IAAI,CAKN;AAgBD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAEtD;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAErD;AAED,kFAAkF;AAClF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMjE;AAED;;;;;;GAMG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,UAAU,QAAQ;IAE3B,YAAY,OAAO,SAAgB,EAGlC;CACF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAElD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,iBAAiB,CAchF;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAMvE;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,OAAO,GAAG,SAAS,EACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,MAAM,GACnB,IAAI,CAwBN"}
@@ -19,21 +19,14 @@ export function emitFailureStatus(payload, status) {
19
19
  /**
20
20
  * The root the current command resolved, if it got that far.
21
21
  *
22
- * Every null-shape spells `root: null`, which is right for a run that never
23
- * resolved one — and wrong for the far commoner failure, where resolution
24
- * succeeded and the command then failed at something else. `status --change
25
- * nope` listed the available changes *under that root* and still reported
26
- * `root: null`, so a caller could not tell "this is not a project" from "the
27
- * project is fine, the change is not".
22
+ * Null-shapes spell `root: null`, which is wrong for the commoner failure where
23
+ * resolution succeeded and the command then failed at something else — a caller
24
+ * could not tell "not a project" from "no such change".
28
25
  *
29
- * Held beside the failure sink that reads it rather than in root-selection,
30
- * which already imports this module. Set by `resolveRootForCommand`, the one
31
- * place every command resolves a root; read only by `emitFailure`, the runtime
32
- * sink. `emitFailureStatus` deliberately does not consult it: its other two
33
- * callers are root resolution itself and the commander layer, and neither has
34
- * resolved a root for the run being reported.
35
- *
36
- * Module-level state is safe here: a CLI process runs one command.
26
+ * Set by `resolveRootForCommand`, read only by `emitFailure`.
27
+ * `emitFailureStatus` does not consult it: its other callers are root resolution
28
+ * itself and the commander layer, neither of which has resolved a root for the
29
+ * run being reported. Module state is safe: one command per process.
37
30
  */
38
31
  let lastResolvedRoot = null;
39
32
  export function recordResolvedRoot(root) {
@@ -46,27 +39,18 @@ export function clearResolvedRoot() {
46
39
  export function asErrorMessage(error) {
47
40
  return error instanceof Error ? error.message : String(error);
48
41
  }
49
- /**
50
- * @inquirer prompts reject with ExitPromptError on Ctrl-C; commands
51
- * translate that to `Cancelled.` + exit 130 (third caller extracted
52
- * this here in slice 7.1).
53
- */
42
+ /** @inquirer rejects with ExitPromptError on Ctrl-C → `Cancelled.` + exit 130. */
54
43
  export function isPromptCancellationError(error) {
55
44
  return (error instanceof Error &&
56
45
  (error.name === 'ExitPromptError' ||
57
46
  error.message.includes('force closed the prompt with SIGINT')));
58
47
  }
59
48
  /**
60
- * Aborts the CLI from a place that cannot simply return.
61
- *
62
- * Commander's `preAction` hooks run before the action, and returning from one
63
- * does not stop the action — which is why the one non-conforming exit point in
64
- * the codebase reached for `process.exit(1)`. `process.exit` terminates before
65
- * pending stdout/stderr writes have necessarily flushed (a documented
66
- * truncation source on Windows pipes), in a CLI whose `--json` contract
67
- * requires exactly one whole JSON document to reach stdout. `runCli` catches
68
- * this, sets `process.exitCode`, and returns, so the process ends the way every
69
- * other failure path ends.
49
+ * Aborts the CLI from a place that cannot simply return — returning from a
50
+ * commander `preAction` hook does not stop the action. `process.exit` is not an
51
+ * option: it terminates before pending stdout writes have necessarily flushed
52
+ * (a documented truncation source on Windows pipes), and `--json` requires one
53
+ * whole document. `runCli` catches this and sets `process.exitCode` instead.
70
54
  */
71
55
  export class CliAbortError extends Error {
72
56
  isCliAbort = true;
@@ -79,11 +63,10 @@ export function isCliAbort(error) {
79
63
  return Boolean(error?.isCliAbort);
80
64
  }
81
65
  export function asStatus(error, fallbackCode) {
82
- // RootSelectionError (and siblings) carry the same envelope without
83
- // sharing a class hierarchy; duck-type the diagnostic once, here. Optional
84
- // chaining because this runs *on the failure path*: a `throw null` or a bare
85
- // `Promise.reject()` would make the property access itself throw, replacing
86
- // the real cause with a TypeError and suppressing the JSON envelope entirely.
66
+ // RootSelectionError and siblings carry the same envelope without sharing a
67
+ // class hierarchy, so duck-type it once here. Optional chaining because a
68
+ // `throw null` would make the property access itself throw, replacing the
69
+ // real cause.
87
70
  const diagnostic = error?.diagnostic;
88
71
  if (diagnostic && typeof diagnostic.code === 'string') {
89
72
  return diagnostic;
@@ -95,12 +78,8 @@ export function asStatus(error, fallbackCode) {
95
78
  };
96
79
  }
97
80
  /**
98
- * Turns a commander error code into the CLI's own code convention.
99
- *
100
- * Commander namespaces and camel-cases its codes (`commander.invalidArgument`);
101
- * every code this CLI emits is lower_snake. An agent matching on
102
- * `status[].code` should not have to learn a second spelling just because the
103
- * failure happened during argument parsing rather than inside the command.
81
+ * `commander.invalidArgument` -> `invalid_argument`, so an agent matching on
82
+ * `status[].code` needs no second spelling for a parse-time failure.
104
83
  */
105
84
  export function normalizeCommanderCode(code) {
106
85
  if (!code)
@@ -111,8 +90,7 @@ export function normalizeCommanderCode(code) {
111
90
  .toLowerCase();
112
91
  }
113
92
  export function emitFailure(json, payload, error, fallbackCode) {
114
- // Ctrl-C in a prompt is the user's choice, not an error: every
115
- // command group gets the Cancelled./130 convention through here.
93
+ // Ctrl-C in a prompt is the user's choice, not an error.
116
94
  if (!json && isPromptCancellationError(error)) {
117
95
  console.error('Cancelled.');
118
96
  process.exitCode = 130;
@@ -120,9 +98,8 @@ export function emitFailure(json, payload, error, fallbackCode) {
120
98
  }
121
99
  const status = asStatus(error, fallbackCode);
122
100
  if (json) {
123
- // A runtime failure of a command that did resolve a root reports that root,
124
- // not the null-shape's placeholder. Only when the payload declares `root`
125
- // at all — a command with no root in its contract keeps the shape it has.
101
+ // Report the root a failing command did resolve, not the null-shape's
102
+ // placeholder — only when the payload declares `root` at all.
126
103
  const withRoot = 'root' in payload && payload.root === null && lastResolvedRoot !== null
127
104
  ? { ...payload, root: lastResolvedRoot }
128
105
  : payload;
@@ -1 +1 @@
1
- {"version":3,"file":"shared-output.js","sourceRoot":"","sources":["../../src/commands/shared-output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared-output.js","sourceRoot":"","sources":["../../src/commands/shared-output.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,8 @@
1
1
  /**
2
- * The `--json` null-shape.
3
- *
4
- * Like `instructions`, this command's success payload is flat: a change emits
5
- * `id`/`title`/`deltaCount`/`deltas` and a spec emits `id`/`title`/`overview`/
6
- * `requirements`, both at the top level. `id` is the key both carry, so it is
7
- * the one a failure can null. The previous `item: null` named a key neither
8
- * success shape has, which left the mirroring rule unverifiable.
2
+ * The `--json` null-shape. Like `instructions`, the success payload is flat and
3
+ * differs between a change and a spec; `id` is the key both carry, so it is the
4
+ * one a failure can null. The previous `item: null` named a key neither success
5
+ * shape has, which left the mirroring rule unverifiable.
9
6
  */
10
7
  export declare const SHOW_FAILURE_PAYLOAD: Record<string, unknown>;
11
8
  interface ShowExecuteOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"AAkBA;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAA4B,CAAC;AAEtF,UAAU,kBAAkB;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,qBAAa,WAAW;IAChB,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BhF;IAED,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,eAAe;YAOT,oBAAoB;YA8BpB,UAAU;IAsExB,OAAO,CAAC,uBAAuB;IAoB/B,OAAO,CAAC,mBAAmB;CAa5B"}
1
+ {"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"AAkBA;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAA4B,CAAC;AAEtF,UAAU,kBAAkB;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,qBAAa,WAAW;IAChB,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkChF;IAED,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,eAAe;YAOT,oBAAoB;YA8BpB,UAAU;IA6ExB,OAAO,CAAC,uBAAuB;IAoB/B,OAAO,CAAC,mBAAmB;CAa5B"}
@@ -8,18 +8,21 @@ import { emitFailureStatus } from './shared-output.js';
8
8
  const CHANGE_FLAG_KEYS = new Set(['deltasOnly', 'requirementsOnly', 'diff']);
9
9
  const SPEC_FLAG_KEYS = new Set(['requirements', 'scenarios', 'requirement']);
10
10
  /**
11
- * The `--json` null-shape.
12
- *
13
- * Like `instructions`, this command's success payload is flat: a change emits
14
- * `id`/`title`/`deltaCount`/`deltas` and a spec emits `id`/`title`/`overview`/
15
- * `requirements`, both at the top level. `id` is the key both carry, so it is
16
- * the one a failure can null. The previous `item: null` named a key neither
17
- * success shape has, which left the mirroring rule unverifiable.
11
+ * The `--json` null-shape. Like `instructions`, the success payload is flat and
12
+ * differs between a change and a spec; `id` is the key both carry, so it is the
13
+ * one a failure can null. The previous `item: null` named a key neither success
14
+ * shape has, which left the mirroring rule unverifiable.
18
15
  */
19
16
  export const SHOW_FAILURE_PAYLOAD = { id: null, root: null };
20
17
  export class ShowCommand {
21
18
  async execute(itemName, options = {}) {
22
- const root = await resolveRootForCommand(options, { json: options.json });
19
+ // No implicit root, as `list` and `status`: on the fallback, an unknown item
20
+ // reads as a typo when the real problem is that this directory is no project.
21
+ const root = await resolveRootForCommand(options, {
22
+ json: options.json,
23
+ allowImplicitRoot: false,
24
+ failurePayload: SHOW_FAILURE_PAYLOAD,
25
+ });
23
26
  if (!root) {
24
27
  return;
25
28
  }
@@ -84,7 +87,8 @@ export class ShowCommand {
84
87
  }
85
88
  async showDirect(itemName, params) {
86
89
  const root = params.root;
87
- // Optimize lookups when type is pre-specified
90
+ // A known type needs only its own listing; without one, both are needed
91
+ // anyway, so they are fetched together.
88
92
  let isChange = false;
89
93
  let isSpec = false;
90
94
  let changes = [];
@@ -102,9 +106,17 @@ export class ShowCommand {
102
106
  isChange = changes.includes(itemName);
103
107
  isSpec = specs.includes(itemName);
104
108
  }
105
- const resolvedType = params.typeOverride ?? (isChange ? 'change' : isSpec ? 'spec' : undefined);
109
+ let resolvedType = params.typeOverride;
106
110
  if (!resolvedType) {
107
- const suggestions = nearestMatches(itemName, [...changes, ...specs]);
111
+ if (isChange)
112
+ resolvedType = 'change';
113
+ else if (isSpec)
114
+ resolvedType = 'spec';
115
+ }
116
+ if (!resolvedType) {
117
+ // Deduplicated: a name that is both a change and a spec would otherwise
118
+ // be suggested twice, reading as a typo in the suggestion itself.
119
+ const suggestions = nearestMatches(itemName, [...new Set([...changes, ...specs])]);
108
120
  const message = suggestions.length
109
121
  ? `Unknown item '${itemName}'. Did you mean: ${suggestions.join(', ')}?`
110
122
  : `Unknown item '${itemName}'.`;
@@ -1 +1 @@
1
- {"version":3,"file":"show.js","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"show.js","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ValidationIssue, ValidationReport } from '../core/validation/types.js';
1
+ import { type ValidationIssue, type ValidationReport } from '../core/validation/types.js';
2
2
  interface ExecuteOptions {
3
3
  all?: boolean;
4
4
  changes?: boolean;
@@ -7,82 +7,66 @@ interface ExecuteOptions {
7
7
  strict?: boolean;
8
8
  json?: boolean;
9
9
  noInteractive?: boolean;
10
+ /** Commander sets this to false for --no-interactive. */
10
11
  interactive?: boolean;
11
12
  concurrency?: string;
12
13
  }
13
14
  /**
14
- * The one null-shape every `validate --json` failure carries.
15
- *
16
- * `items` and `summary` are both keys of the success payload, so both have to
17
- * appear nulled on every failure path. Spelled once because they did not:
18
- * `validate nope` omitted `summary`, the no-root path omitted `root`, and an
19
- * agent reading `result.summary.totals` got `undefined` from one failure and
20
- * `null` from another.
15
+ * The one null-shape every `validate --json` failure carries, so a caller
16
+ * reading `result.summary.totals` never gets `undefined` from one failure path
17
+ * and `null` from another.
18
+ */
19
+ /**
20
+ * The `--json` null-shape, `root` included: a root-resolution failure has none,
21
+ * and the sites that do resolve one spread their own over it.
21
22
  */
22
23
  export declare const VALIDATE_FAILURE_PAYLOAD: {
23
24
  readonly items: null;
24
25
  readonly summary: null;
26
+ readonly root: null;
25
27
  };
26
28
  export declare class ValidateCommand {
27
29
  execute(itemName: string | undefined, options?: ExecuteOptions): Promise<void>;
28
30
  private normalizeType;
29
31
  /**
30
- * Resolve change IDs by directory existence within the resolved root — the
31
- * same rule `tospec status`/`instructions` use (`getAvailableChanges`) —
32
- * rather than requiring `proposal.md`. This lets `validate` resolve a
33
- * scaffolded or still-authoring change that the sibling commands already
34
- * resolve (#1182). Sorted to preserve the prior `getActiveChangeIds` ordering.
32
+ * Change IDs by directory existence — the same rule `status` and
33
+ * `instructions` use — rather than by `proposal.md`, so a scaffolded change
34
+ * resolves here too.
35
35
  */
36
36
  private listChangeIds;
37
37
  private runInteractiveSelector;
38
38
  /**
39
- * Nothing named and no terminal to ask in.
40
- *
41
- * The JSON branch exists because this path used to print prose and exit 1,
42
- * leaving stdout empty for a caller that passed `--json` — the one thing the
43
- * envelope contract forbids. `show` already answered the identical situation
44
- * with a `no_item_specified` document; this is the same answer, so an agent
45
- * handling one handles the other.
39
+ * Nothing named and no terminal to ask in. `no_item_specified` is the code
40
+ * `show` uses for the same situation.
46
41
  */
47
42
  private reportNothingToValidate;
48
43
  private validateDirectItem;
49
44
  private validateByType;
50
45
  private printReport;
51
46
  /**
52
- * Derives hints from what actually failed rather than the item type alone —
53
- * every failing change used to get the same three delta hints, so a change
54
- * whose only problem was e.g. a missing design.md section was told to check
55
- * its delta headers instead.
47
+ * Hints derived from what actually failed, not from the item type, so a
48
+ * change whose only problem is a missing design.md section is not told to
49
+ * check delta headers.
56
50
  *
57
- * These three hints are about delta *content* (headers, scenarios, parsing),
58
- * so they apply to an issue reported against a delta file itself: the delta
59
- * validator reports those under `<capability>/spec.md`, relative to the
60
- * change's specs/ dir. Three neighbouring shapes deliberately do not qualify,
61
- * and the leading slash is what excludes the first two:
62
- * - a misnamed file in a capability folder (`auth/extra.md`) and a delta at
63
- * the specs/ root (`spec.md`) are placement errors; each message already
64
- * names the exact path to rename to, so the generic bullets would be
65
- * advice for a different failure;
66
- * - the whole-change `file` sentinel ("No deltas found") already embeds
67
- * these same three tips via `enrichTopLevelError`.
51
+ * The delta hints are about delta *content*, so they match only an issue
52
+ * reported under `<capability>/spec.md`. The leading slash excludes a misnamed
53
+ * file and a delta at the specs/ root — placement errors whose messages
54
+ * already name the path to rename to — and the whole-change `file` sentinel,
55
+ * which `enrichTopLevelError` already covers.
68
56
  */
69
57
  private printNextSteps;
70
58
  private runBulkValidation;
71
59
  }
72
60
  /**
73
- * Validates schema-declared `requiredSections` for ticket/design/task-style
74
- * artifacts that have no Requirement grammar of their own. Only artifacts
75
- * that (a) declare a `validation` block and (b) already have an output file
76
- * on disk are checked — artifacts not yet produced are `status`'s concern,
77
- * not validate's.
61
+ * Validates schema-declared `requiredSections` for artifacts with no Requirement
62
+ * grammar of their own. Only artifacts that declare a `validation` block and
63
+ * already have an output file are checked — one not yet produced is `status`'s
64
+ * concern, not validate's.
78
65
  */
79
66
  export declare function validateArtifactSections(projectRoot: string, changeDir: string): Promise<ValidationIssue[]>;
80
67
  /**
81
- * The single validation pipeline for a change — used verbatim by both
82
- * `tospec validate` and `tospec archive`, so their rule sets and severities
83
- * can never disagree ("validate green but archive blocked" is structurally
84
- * impossible). Runs delta-spec validation (when the schema requires deltas
85
- * or the change produced any) plus schema-declared section validation.
68
+ * The single validation pipeline for a change, used verbatim by `validate` and
69
+ * `archive`, so "validate green but archive blocked" is structurally impossible.
86
70
  */
87
71
  export declare function validateChangeArtifacts(projectRoot: string, changeDir: string, options?: {
88
72
  strict?: boolean;
@@ -90,23 +74,15 @@ export declare function validateChangeArtifacts(projectRoot: string, changeDir:
90
74
  }): Promise<ValidationReport>;
91
75
  /**
92
76
  * Whether a change's schema requires at least one delta spec — a property of the
93
- * schema, not of the change.
94
- *
95
- * False when the schema declares no `specs` artifact, and when it declares one as
96
- * `optional` and this change produced none. A pure fix with no behavioral change
97
- * (e.g. an issue schema change) is a legitimate, complete change, not a
98
- * validation failure. Falls back to requiring deltas (the stricter, pre-existing
99
- * behavior) when the schema can't be resolved.
77
+ * schema, not of the change. False when the schema declares no `specs` artifact,
78
+ * or declares it `optional` and this change produced none: a pure fix with no
79
+ * behavioral change is a complete change, not a validation failure.
100
80
  */
101
81
  export declare function deltaSpecsRequired(projectRoot: string, changeDir: string): Promise<boolean>;
102
82
  export declare function mergeSectionIssues(report: ValidationReport, extra: ValidationIssue[], strict: boolean): ValidationReport;
103
83
  /**
104
- * One rendering of a finding for every human surface.
105
- *
106
- * The named-item and bulk paths print the same three fields and differ only by
107
- * indentation. This change exists because two renderings of the same data were
108
- * allowed to disagree; leaving the line format duplicated would reproduce that
109
- * the next time a field is added.
84
+ * One rendering of a finding for every human surface. The named-item and bulk
85
+ * paths print the same three fields and differ only by indentation.
110
86
  */
111
87
  export declare function formatIssueLine(issue: ValidationIssue, indent?: string): string;
112
88
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AA8BrF,UAAU,cAAc;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB;aAAK,KAAK;aAAQ,OAAO;CAAiB,CAAC;AAUhF,qBAAa,eAAe;IACpB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0CvF;IAED,OAAO,CAAC,aAAa;IAOrB;;;;;;OAMG;YACW,aAAa;YAKb,sBAAsB;IA8BpC;;;;;;;;OAQG;IACH,OAAO,CAAC,uBAAuB;YAyBjB,kBAAkB;YA8ClB,cAAc;IAoB5B,OAAO,CAAC,WAAW;IAoCnB;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,cAAc;YAyBR,iBAAiB;CA8IhC;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CA2DjH;AAiCD;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7D,OAAO,CAAC,gBAAgB,CAAC,CA2B3B;AAuCD;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAsBjG;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAQxH;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,SAAK,GAAG,MAAM,CAG3E"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AA8BvG,UAAU,cAAc;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,yDAAyD;IACzD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH;;;GAGG;AACH,eAAO,MAAM,wBAAwB;aAAK,KAAK;aAAQ,OAAO;aAAQ,IAAI;CAAiB,CAAC;AAY5F,qBAAa,eAAe;IACpB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCvF;IAED,OAAO,CAAC,aAAa;IAOrB;;;;OAIG;YACW,aAAa;YAKb,sBAAsB;IA6BpC;;;OAGG;IACH,OAAO,CAAC,uBAAuB;YAyBjB,kBAAkB;YA2ElB,cAAc;IAmB5B,OAAO,CAAC,WAAW;IA2CnB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,cAAc;YAiDR,iBAAiB;CAwJhC;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAqDjH;AAiCD;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7D,OAAO,CAAC,gBAAgB,CAAC,CAwC3B;AAsED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBjG;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAQxH;AAgBD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,SAAK,GAAG,MAAM,CAG3E"}