@seanmars/tospec 0.19.0-beta.0 → 0.19.0-beta.13

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 (431) hide show
  1. package/CHANGELOG.md +578 -0
  2. package/README.md +71 -77
  3. package/assets/dashboard/app.js +14 -3
  4. package/assets/dashboard/style.css +7 -0
  5. package/assets/metrics/app.js +22 -0
  6. package/assets/metrics/style.css +8 -0
  7. package/assets/rules/tospec/decision.md +3 -0
  8. package/assets/rules/tospec/single-source-of-truth.md +19 -0
  9. package/dist/cli/index.d.ts.map +1 -1
  10. package/dist/cli/index.js +266 -82
  11. package/dist/cli/index.js.map +1 -1
  12. package/dist/commands/config.d.ts +9 -17
  13. package/dist/commands/config.d.ts.map +1 -1
  14. package/dist/commands/config.js +374 -95
  15. package/dist/commands/config.js.map +1 -1
  16. package/dist/commands/dashboard.d.ts +64 -81
  17. package/dist/commands/dashboard.d.ts.map +1 -1
  18. package/dist/commands/dashboard.js +350 -218
  19. package/dist/commands/dashboard.js.map +1 -1
  20. package/dist/commands/decision.d.ts +41 -19
  21. package/dist/commands/decision.d.ts.map +1 -1
  22. package/dist/commands/decision.js +400 -70
  23. package/dist/commands/decision.js.map +1 -1
  24. package/dist/commands/metrics.d.ts +34 -48
  25. package/dist/commands/metrics.d.ts.map +1 -1
  26. package/dist/commands/metrics.js +74 -84
  27. package/dist/commands/metrics.js.map +1 -1
  28. package/dist/commands/shared-output.d.ts +24 -10
  29. package/dist/commands/shared-output.d.ts.map +1 -1
  30. package/dist/commands/shared-output.js +62 -11
  31. package/dist/commands/shared-output.js.map +1 -1
  32. package/dist/commands/show.d.ts +7 -0
  33. package/dist/commands/show.d.ts.map +1 -1
  34. package/dist/commands/show.js +39 -8
  35. package/dist/commands/show.js.map +1 -1
  36. package/dist/commands/validate.d.ts +47 -30
  37. package/dist/commands/validate.d.ts.map +1 -1
  38. package/dist/commands/validate.js +282 -108
  39. package/dist/commands/validate.js.map +1 -1
  40. package/dist/commands/workflow/index.d.ts +6 -10
  41. package/dist/commands/workflow/index.d.ts.map +1 -1
  42. package/dist/commands/workflow/index.js +6 -10
  43. package/dist/commands/workflow/index.js.map +1 -1
  44. package/dist/commands/workflow/instructions.d.ts +21 -8
  45. package/dist/commands/workflow/instructions.d.ts.map +1 -1
  46. package/dist/commands/workflow/instructions.js +254 -95
  47. package/dist/commands/workflow/instructions.js.map +1 -1
  48. package/dist/commands/workflow/new-change.d.ts +4 -5
  49. package/dist/commands/workflow/new-change.d.ts.map +1 -1
  50. package/dist/commands/workflow/new-change.js +90 -25
  51. package/dist/commands/workflow/new-change.js.map +1 -1
  52. package/dist/commands/workflow/schemas.d.ts +3 -5
  53. package/dist/commands/workflow/schemas.d.ts.map +1 -1
  54. package/dist/commands/workflow/schemas.js +37 -11
  55. package/dist/commands/workflow/schemas.js.map +1 -1
  56. package/dist/commands/workflow/shared.d.ts +48 -21
  57. package/dist/commands/workflow/shared.d.ts.map +1 -1
  58. package/dist/commands/workflow/shared.js +36 -33
  59. package/dist/commands/workflow/shared.js.map +1 -1
  60. package/dist/commands/workflow/status.d.ts +10 -6
  61. package/dist/commands/workflow/status.d.ts.map +1 -1
  62. package/dist/commands/workflow/status.js +84 -42
  63. package/dist/commands/workflow/status.js.map +1 -1
  64. package/dist/commands/workflow/templates.d.ts +10 -3
  65. package/dist/commands/workflow/templates.d.ts.map +1 -1
  66. package/dist/commands/workflow/templates.js +39 -40
  67. package/dist/commands/workflow/templates.js.map +1 -1
  68. package/dist/core/archive.d.ts +26 -21
  69. package/dist/core/archive.d.ts.map +1 -1
  70. package/dist/core/archive.js +415 -201
  71. package/dist/core/archive.js.map +1 -1
  72. package/dist/core/artifact-graph/graph.d.ts +29 -36
  73. package/dist/core/artifact-graph/graph.d.ts.map +1 -1
  74. package/dist/core/artifact-graph/graph.js +50 -58
  75. package/dist/core/artifact-graph/graph.js.map +1 -1
  76. package/dist/core/artifact-graph/index.d.ts +2 -2
  77. package/dist/core/artifact-graph/index.d.ts.map +1 -1
  78. package/dist/core/artifact-graph/index.js +2 -2
  79. package/dist/core/artifact-graph/index.js.map +1 -1
  80. package/dist/core/artifact-graph/instruction-loader.d.ts +105 -100
  81. package/dist/core/artifact-graph/instruction-loader.d.ts.map +1 -1
  82. package/dist/core/artifact-graph/instruction-loader.js +176 -110
  83. package/dist/core/artifact-graph/instruction-loader.js.map +1 -1
  84. package/dist/core/artifact-graph/outputs.d.ts +13 -6
  85. package/dist/core/artifact-graph/outputs.d.ts.map +1 -1
  86. package/dist/core/artifact-graph/outputs.js +146 -8
  87. package/dist/core/artifact-graph/outputs.js.map +1 -1
  88. package/dist/core/artifact-graph/resolver.d.ts +44 -63
  89. package/dist/core/artifact-graph/resolver.d.ts.map +1 -1
  90. package/dist/core/artifact-graph/resolver.js +85 -86
  91. package/dist/core/artifact-graph/resolver.js.map +1 -1
  92. package/dist/core/artifact-graph/schema.d.ts +0 -6
  93. package/dist/core/artifact-graph/schema.d.ts.map +1 -1
  94. package/dist/core/artifact-graph/schema.js +7 -32
  95. package/dist/core/artifact-graph/schema.js.map +1 -1
  96. package/dist/core/artifact-graph/state.d.ts +1 -8
  97. package/dist/core/artifact-graph/state.d.ts.map +1 -1
  98. package/dist/core/artifact-graph/state.js +2 -17
  99. package/dist/core/artifact-graph/state.js.map +1 -1
  100. package/dist/core/artifact-graph/stub-detection.d.ts +12 -0
  101. package/dist/core/artifact-graph/stub-detection.d.ts.map +1 -0
  102. package/dist/core/artifact-graph/stub-detection.js +39 -0
  103. package/dist/core/artifact-graph/stub-detection.js.map +1 -0
  104. package/dist/core/artifact-graph/types.d.ts +4 -0
  105. package/dist/core/artifact-graph/types.d.ts.map +1 -1
  106. package/dist/core/artifact-graph/types.js +30 -10
  107. package/dist/core/artifact-graph/types.js.map +1 -1
  108. package/dist/core/available-tools.d.ts +3 -12
  109. package/dist/core/available-tools.d.ts.map +1 -1
  110. package/dist/core/available-tools.js +4 -13
  111. package/dist/core/available-tools.js.map +1 -1
  112. package/dist/core/change-metadata/schema.d.ts +1 -1
  113. package/dist/core/change-metadata/schema.d.ts.map +1 -1
  114. package/dist/core/change-metadata/schema.js +10 -7
  115. package/dist/core/change-metadata/schema.js.map +1 -1
  116. package/dist/core/change-presenter.d.ts +23 -18
  117. package/dist/core/change-presenter.d.ts.map +1 -1
  118. package/dist/core/change-presenter.js +102 -43
  119. package/dist/core/change-presenter.js.map +1 -1
  120. package/dist/core/change-status-policy.d.ts +8 -1
  121. package/dist/core/change-status-policy.d.ts.map +1 -1
  122. package/dist/core/change-status-policy.js +25 -1
  123. package/dist/core/change-status-policy.js.map +1 -1
  124. package/dist/core/codex-metrics.d.ts +25 -45
  125. package/dist/core/codex-metrics.d.ts.map +1 -1
  126. package/dist/core/codex-metrics.js +44 -88
  127. package/dist/core/codex-metrics.js.map +1 -1
  128. package/dist/core/codex-residue.d.ts +22 -0
  129. package/dist/core/codex-residue.d.ts.map +1 -0
  130. package/dist/core/codex-residue.js +61 -0
  131. package/dist/core/codex-residue.js.map +1 -0
  132. package/dist/core/command-generation/adapters/claude.d.ts +2 -9
  133. package/dist/core/command-generation/adapters/claude.d.ts.map +1 -1
  134. package/dist/core/command-generation/adapters/claude.js +2 -12
  135. package/dist/core/command-generation/adapters/claude.js.map +1 -1
  136. package/dist/core/command-generation/adapters/index.d.ts +1 -9
  137. package/dist/core/command-generation/adapters/index.d.ts.map +1 -1
  138. package/dist/core/command-generation/adapters/index.js +1 -9
  139. package/dist/core/command-generation/adapters/index.js.map +1 -1
  140. package/dist/core/command-generation/generator.d.ts +0 -17
  141. package/dist/core/command-generation/generator.d.ts.map +1 -1
  142. package/dist/core/command-generation/generator.js +0 -17
  143. package/dist/core/command-generation/generator.js.map +1 -1
  144. package/dist/core/command-generation/index.d.ts +2 -5
  145. package/dist/core/command-generation/index.d.ts.map +1 -1
  146. package/dist/core/command-generation/index.js +0 -9
  147. package/dist/core/command-generation/index.js.map +1 -1
  148. package/dist/core/command-generation/types.d.ts +10 -36
  149. package/dist/core/command-generation/types.d.ts.map +1 -1
  150. package/dist/core/command-generation/types.js +0 -6
  151. package/dist/core/command-generation/types.js.map +1 -1
  152. package/dist/core/command-generation/yaml.d.ts +3 -18
  153. package/dist/core/command-generation/yaml.d.ts.map +1 -1
  154. package/dist/core/command-generation/yaml.js +5 -23
  155. package/dist/core/command-generation/yaml.js.map +1 -1
  156. package/dist/core/config-prompts.d.ts +2 -4
  157. package/dist/core/config-prompts.d.ts.map +1 -1
  158. package/dist/core/config-prompts.js +2 -7
  159. package/dist/core/config-prompts.js.map +1 -1
  160. package/dist/core/config-schema.d.ts +8 -53
  161. package/dist/core/config-schema.d.ts.map +1 -1
  162. package/dist/core/config-schema.js +49 -62
  163. package/dist/core/config-schema.js.map +1 -1
  164. package/dist/core/config.d.ts +56 -0
  165. package/dist/core/config.d.ts.map +1 -1
  166. package/dist/core/config.js +73 -2
  167. package/dist/core/config.js.map +1 -1
  168. package/dist/core/converters/json-converter.d.ts.map +1 -1
  169. package/dist/core/dashboard-activity.d.ts +7 -9
  170. package/dist/core/dashboard-activity.d.ts.map +1 -1
  171. package/dist/core/dashboard-activity.js +26 -24
  172. package/dist/core/dashboard-activity.js.map +1 -1
  173. package/dist/core/dashboard-data.d.ts +40 -22
  174. package/dist/core/dashboard-data.d.ts.map +1 -1
  175. package/dist/core/dashboard-data.js +84 -68
  176. package/dist/core/dashboard-data.js.map +1 -1
  177. package/dist/core/global-config.d.ts +24 -53
  178. package/dist/core/global-config.d.ts.map +1 -1
  179. package/dist/core/global-config.js +43 -62
  180. package/dist/core/global-config.js.map +1 -1
  181. package/dist/core/init.d.ts +29 -11
  182. package/dist/core/init.d.ts.map +1 -1
  183. package/dist/core/init.js +232 -164
  184. package/dist/core/init.js.map +1 -1
  185. package/dist/core/list.d.ts +1 -1
  186. package/dist/core/list.d.ts.map +1 -1
  187. package/dist/core/list.js +121 -28
  188. package/dist/core/list.js.map +1 -1
  189. package/dist/core/local-server.d.ts +63 -39
  190. package/dist/core/local-server.d.ts.map +1 -1
  191. package/dist/core/local-server.js +99 -53
  192. package/dist/core/local-server.js.map +1 -1
  193. package/dist/core/markdown-render.d.ts +25 -0
  194. package/dist/core/markdown-render.d.ts.map +1 -0
  195. package/dist/core/markdown-render.js +94 -0
  196. package/dist/core/markdown-render.js.map +1 -0
  197. package/dist/core/migrate.d.ts +32 -15
  198. package/dist/core/migrate.d.ts.map +1 -1
  199. package/dist/core/migrate.js +220 -108
  200. package/dist/core/migrate.js.map +1 -1
  201. package/dist/core/parsers/change-parser.d.ts +7 -10
  202. package/dist/core/parsers/change-parser.d.ts.map +1 -1
  203. package/dist/core/parsers/change-parser.js +48 -56
  204. package/dist/core/parsers/change-parser.js.map +1 -1
  205. package/dist/core/parsers/markdown-parser.d.ts +8 -9
  206. package/dist/core/parsers/markdown-parser.d.ts.map +1 -1
  207. package/dist/core/parsers/markdown-parser.js +31 -22
  208. package/dist/core/parsers/markdown-parser.js.map +1 -1
  209. package/dist/core/parsers/requirement-blocks.d.ts +53 -11
  210. package/dist/core/parsers/requirement-blocks.d.ts.map +1 -1
  211. package/dist/core/parsers/requirement-blocks.js +200 -60
  212. package/dist/core/parsers/requirement-blocks.js.map +1 -1
  213. package/dist/core/parsers/requirement-text.d.ts +73 -79
  214. package/dist/core/parsers/requirement-text.d.ts.map +1 -1
  215. package/dist/core/parsers/requirement-text.js +137 -79
  216. package/dist/core/parsers/requirement-text.js.map +1 -1
  217. package/dist/core/parsers/spec-structure.d.ts +1 -1
  218. package/dist/core/parsers/spec-structure.d.ts.map +1 -1
  219. package/dist/core/parsers/spec-structure.js +30 -3
  220. package/dist/core/parsers/spec-structure.js.map +1 -1
  221. package/dist/core/planning-home.js.map +1 -1
  222. package/dist/core/profiles.d.ts +3 -10
  223. package/dist/core/profiles.d.ts.map +1 -1
  224. package/dist/core/profiles.js +5 -12
  225. package/dist/core/profiles.js.map +1 -1
  226. package/dist/core/project-config.d.ts +43 -44
  227. package/dist/core/project-config.d.ts.map +1 -1
  228. package/dist/core/project-config.js +107 -82
  229. package/dist/core/project-config.js.map +1 -1
  230. package/dist/core/project-layout.d.ts +10 -18
  231. package/dist/core/project-layout.d.ts.map +1 -1
  232. package/dist/core/project-layout.js +16 -26
  233. package/dist/core/project-layout.js.map +1 -1
  234. package/dist/core/root-selection.d.ts +11 -7
  235. package/dist/core/root-selection.d.ts.map +1 -1
  236. package/dist/core/root-selection.js +7 -8
  237. package/dist/core/root-selection.js.map +1 -1
  238. package/dist/core/rules.d.ts +10 -0
  239. package/dist/core/rules.d.ts.map +1 -0
  240. package/dist/core/rules.js +43 -0
  241. package/dist/core/rules.js.map +1 -0
  242. package/dist/core/schema-names.d.ts +16 -0
  243. package/dist/core/schema-names.d.ts.map +1 -0
  244. package/dist/core/schema-names.js +16 -0
  245. package/dist/core/schema-names.js.map +1 -0
  246. package/dist/core/schemas/base.schema.d.ts +3 -0
  247. package/dist/core/schemas/base.schema.d.ts.map +1 -1
  248. package/dist/core/schemas/base.schema.js +22 -6
  249. package/dist/core/schemas/base.schema.js.map +1 -1
  250. package/dist/core/schemas/change.schema.d.ts +16 -0
  251. package/dist/core/schemas/change.schema.d.ts.map +1 -1
  252. package/dist/core/schemas/change.schema.js +41 -10
  253. package/dist/core/schemas/change.schema.js.map +1 -1
  254. package/dist/core/schemas/spec.schema.d.ts +2 -0
  255. package/dist/core/schemas/spec.schema.d.ts.map +1 -1
  256. package/dist/core/shared/index.d.ts +3 -8
  257. package/dist/core/shared/index.d.ts.map +1 -1
  258. package/dist/core/shared/index.js +3 -8
  259. package/dist/core/shared/index.js.map +1 -1
  260. package/dist/core/shared/rules-generation.d.ts +27 -8
  261. package/dist/core/shared/rules-generation.d.ts.map +1 -1
  262. package/dist/core/shared/rules-generation.js +151 -16
  263. package/dist/core/shared/rules-generation.js.map +1 -1
  264. package/dist/core/shared/skill-generation.d.ts +38 -53
  265. package/dist/core/shared/skill-generation.d.ts.map +1 -1
  266. package/dist/core/shared/skill-generation.js +82 -51
  267. package/dist/core/shared/skill-generation.js.map +1 -1
  268. package/dist/core/shared/tool-detection.d.ts +40 -62
  269. package/dist/core/shared/tool-detection.d.ts.map +1 -1
  270. package/dist/core/shared/tool-detection.js +88 -80
  271. package/dist/core/shared/tool-detection.js.map +1 -1
  272. package/dist/core/skill-metrics.d.ts +36 -63
  273. package/dist/core/skill-metrics.d.ts.map +1 -1
  274. package/dist/core/skill-metrics.js +34 -73
  275. package/dist/core/skill-metrics.js.map +1 -1
  276. package/dist/core/spec-presenter.d.ts.map +1 -1
  277. package/dist/core/spec-presenter.js +6 -6
  278. package/dist/core/spec-presenter.js.map +1 -1
  279. package/dist/core/specs-apply.d.ts +24 -23
  280. package/dist/core/specs-apply.d.ts.map +1 -1
  281. package/dist/core/specs-apply.js +188 -173
  282. package/dist/core/specs-apply.js.map +1 -1
  283. package/dist/core/templates/fragments/interview.d.ts +2 -6
  284. package/dist/core/templates/fragments/interview.d.ts.map +1 -1
  285. package/dist/core/templates/fragments/interview.js +2 -6
  286. package/dist/core/templates/fragments/interview.js.map +1 -1
  287. package/dist/core/templates/fragments/next-step.d.ts +4 -8
  288. package/dist/core/templates/fragments/next-step.d.ts.map +1 -1
  289. package/dist/core/templates/fragments/next-step.js +4 -8
  290. package/dist/core/templates/fragments/next-step.js.map +1 -1
  291. package/dist/core/templates/fragments/verify.d.ts +9 -12
  292. package/dist/core/templates/fragments/verify.d.ts.map +1 -1
  293. package/dist/core/templates/fragments/verify.js +9 -12
  294. package/dist/core/templates/fragments/verify.js.map +1 -1
  295. package/dist/core/templates/index.d.ts +0 -6
  296. package/dist/core/templates/index.d.ts.map +1 -1
  297. package/dist/core/templates/index.js +0 -7
  298. package/dist/core/templates/index.js.map +1 -1
  299. package/dist/core/templates/skill-templates.d.ts +1 -5
  300. package/dist/core/templates/skill-templates.d.ts.map +1 -1
  301. package/dist/core/templates/skill-templates.js +0 -5
  302. package/dist/core/templates/skill-templates.js.map +1 -1
  303. package/dist/core/templates/types.d.ts +3 -7
  304. package/dist/core/templates/types.d.ts.map +1 -1
  305. package/dist/core/templates/types.js +0 -3
  306. package/dist/core/templates/types.js.map +1 -1
  307. package/dist/core/templates/workflows/apply.d.ts +3 -9
  308. package/dist/core/templates/workflows/apply.d.ts.map +1 -1
  309. package/dist/core/templates/workflows/apply.js +9 -12
  310. package/dist/core/templates/workflows/apply.js.map +1 -1
  311. package/dist/core/templates/workflows/archive.d.ts +0 -6
  312. package/dist/core/templates/workflows/archive.d.ts.map +1 -1
  313. package/dist/core/templates/workflows/archive.js +7 -5
  314. package/dist/core/templates/workflows/archive.js.map +1 -1
  315. package/dist/core/templates/workflows/decision.js +4 -4
  316. package/dist/core/templates/workflows/decision.js.map +1 -1
  317. package/dist/core/templates/workflows/explore.js +1 -1
  318. package/dist/core/templates/workflows/grill.d.ts.map +1 -1
  319. package/dist/core/templates/workflows/grill.js +0 -2
  320. package/dist/core/templates/workflows/grill.js.map +1 -1
  321. package/dist/core/templates/workflows/issue.d.ts +0 -6
  322. package/dist/core/templates/workflows/issue.d.ts.map +1 -1
  323. package/dist/core/templates/workflows/issue.js +3 -0
  324. package/dist/core/templates/workflows/issue.js.map +1 -1
  325. package/dist/core/templates/workflows/propose.d.ts +0 -6
  326. package/dist/core/templates/workflows/propose.d.ts.map +1 -1
  327. package/dist/core/templates/workflows/propose.js +0 -1
  328. package/dist/core/templates/workflows/propose.js.map +1 -1
  329. package/dist/core/templates/workflows/sync.d.ts +2 -8
  330. package/dist/core/templates/workflows/sync.d.ts.map +1 -1
  331. package/dist/core/templates/workflows/sync.js +2 -2
  332. package/dist/core/templates/workflows/sync.js.map +1 -1
  333. package/dist/core/templates/workflows/update.d.ts +0 -6
  334. package/dist/core/templates/workflows/update.d.ts.map +1 -1
  335. package/dist/core/templates/workflows/update.js.map +1 -1
  336. package/dist/core/update.d.ts +26 -21
  337. package/dist/core/update.d.ts.map +1 -1
  338. package/dist/core/update.js +165 -116
  339. package/dist/core/update.js.map +1 -1
  340. package/dist/core/user-state-migration.d.ts +13 -15
  341. package/dist/core/user-state-migration.d.ts.map +1 -1
  342. package/dist/core/user-state-migration.js +16 -20
  343. package/dist/core/user-state-migration.js.map +1 -1
  344. package/dist/core/validation/constants.d.ts +19 -25
  345. package/dist/core/validation/constants.d.ts.map +1 -1
  346. package/dist/core/validation/constants.js +25 -20
  347. package/dist/core/validation/constants.js.map +1 -1
  348. package/dist/core/validation/prose-length.d.ts +15 -0
  349. package/dist/core/validation/prose-length.d.ts.map +1 -0
  350. package/dist/core/validation/prose-length.js +29 -0
  351. package/dist/core/validation/prose-length.js.map +1 -0
  352. package/dist/core/validation/purpose-placeholder.d.ts +9 -16
  353. package/dist/core/validation/purpose-placeholder.d.ts.map +1 -1
  354. package/dist/core/validation/purpose-placeholder.js +30 -44
  355. package/dist/core/validation/purpose-placeholder.js.map +1 -1
  356. package/dist/core/validation/section-validator.d.ts +4 -4
  357. package/dist/core/validation/section-validator.d.ts.map +1 -1
  358. package/dist/core/validation/section-validator.js +43 -7
  359. package/dist/core/validation/section-validator.js.map +1 -1
  360. package/dist/core/validation/task-numbering.d.ts +6 -3
  361. package/dist/core/validation/task-numbering.d.ts.map +1 -1
  362. package/dist/core/validation/task-numbering.js +23 -11
  363. package/dist/core/validation/task-numbering.js.map +1 -1
  364. package/dist/core/validation/types.d.ts +18 -0
  365. package/dist/core/validation/types.d.ts.map +1 -1
  366. package/dist/core/validation/types.js +12 -1
  367. package/dist/core/validation/types.js.map +1 -1
  368. package/dist/core/validation/validator.d.ts +50 -51
  369. package/dist/core/validation/validator.d.ts.map +1 -1
  370. package/dist/core/validation/validator.js +486 -263
  371. package/dist/core/validation/validator.js.map +1 -1
  372. package/dist/prompts/searchable-multi-select.d.ts +3 -8
  373. package/dist/prompts/searchable-multi-select.d.ts.map +1 -1
  374. package/dist/prompts/searchable-multi-select.js +16 -39
  375. package/dist/prompts/searchable-multi-select.js.map +1 -1
  376. package/dist/utils/change-metadata.d.ts +11 -50
  377. package/dist/utils/change-metadata.d.ts.map +1 -1
  378. package/dist/utils/change-metadata.js +48 -67
  379. package/dist/utils/change-metadata.js.map +1 -1
  380. package/dist/utils/change-utils.d.ts +31 -54
  381. package/dist/utils/change-utils.d.ts.map +1 -1
  382. package/dist/utils/change-utils.js +143 -100
  383. package/dist/utils/change-utils.js.map +1 -1
  384. package/dist/utils/file-lock.d.ts +39 -0
  385. package/dist/utils/file-lock.d.ts.map +1 -0
  386. package/dist/utils/file-lock.js +149 -0
  387. package/dist/utils/file-lock.js.map +1 -0
  388. package/dist/utils/file-system.d.ts +12 -32
  389. package/dist/utils/file-system.d.ts.map +1 -1
  390. package/dist/utils/file-system.js +16 -40
  391. package/dist/utils/file-system.js.map +1 -1
  392. package/dist/utils/frontmatter.d.ts +7 -11
  393. package/dist/utils/frontmatter.d.ts.map +1 -1
  394. package/dist/utils/frontmatter.js +11 -11
  395. package/dist/utils/frontmatter.js.map +1 -1
  396. package/dist/utils/interactive.d.ts +4 -9
  397. package/dist/utils/interactive.d.ts.map +1 -1
  398. package/dist/utils/interactive.js +2 -4
  399. package/dist/utils/interactive.js.map +1 -1
  400. package/dist/utils/item-discovery.d.ts +15 -10
  401. package/dist/utils/item-discovery.d.ts.map +1 -1
  402. package/dist/utils/item-discovery.js +42 -47
  403. package/dist/utils/item-discovery.js.map +1 -1
  404. package/dist/utils/link.d.ts +13 -4
  405. package/dist/utils/link.d.ts.map +1 -1
  406. package/dist/utils/link.js +13 -4
  407. package/dist/utils/link.js.map +1 -1
  408. package/dist/utils/match.js.map +1 -1
  409. package/dist/utils/requirement-diff.d.ts +13 -23
  410. package/dist/utils/requirement-diff.d.ts.map +1 -1
  411. package/dist/utils/requirement-diff.js +13 -23
  412. package/dist/utils/requirement-diff.js.map +1 -1
  413. package/dist/utils/spec-files.d.ts +10 -11
  414. package/dist/utils/spec-files.d.ts.map +1 -1
  415. package/dist/utils/spec-files.js +31 -22
  416. package/dist/utils/spec-files.js.map +1 -1
  417. package/dist/utils/task-progress.d.ts +11 -9
  418. package/dist/utils/task-progress.d.ts.map +1 -1
  419. package/dist/utils/task-progress.js +53 -32
  420. package/dist/utils/task-progress.js.map +1 -1
  421. package/dist/utils/timestamp.d.ts +5 -8
  422. package/dist/utils/timestamp.d.ts.map +1 -1
  423. package/dist/utils/timestamp.js +5 -8
  424. package/dist/utils/timestamp.js.map +1 -1
  425. package/package.json +9 -10
  426. package/schemas/decision/templates/decision.md +3 -1
  427. package/schemas/decision/templates/index.md +2 -2
  428. package/schemas/issue/schema.yaml +11 -2
  429. package/schemas/issue/templates/spec.md +37 -3
  430. package/schemas/sdd/schema.yaml +24 -1
  431. package/schemas/sdd/templates/spec.md +37 -3
@@ -1,65 +1,161 @@
1
1
  /**
2
- * Instructions Command
3
- *
4
- * Generates enriched instructions for creating artifacts or applying tasks.
5
- * Includes both artifact instructions and apply instructions.
2
+ * `tospec instructions` — enriched briefs for creating an artifact, or for the
3
+ * apply phase.
6
4
  */
7
5
  import path from 'path';
8
6
  import * as fs from 'fs';
9
7
  import { loadChangeContext, generateInstructions, resolveSchema, resolveArtifactOutputs, } from '../../core/artifact-graph/index.js';
10
8
  import { getChangeDir, resolveCurrentPlanningHomeSync, } from '../../core/planning-home.js';
11
9
  import { resolveRootForCommand, toPlanningHome, toRootOutput, } from '../../core/root-selection.js';
12
- import { readProjectConfig } from '../../core/project-config.js';
13
- import { parseTasksFromContent } from '../../utils/task-progress.js';
14
- import { validateChangeExists, validateSchemaExists, } from './shared.js';
10
+ import { APPLY_RULES_KEY, readProjectConfigWithDiagnostics } from '../../core/project-config.js';
11
+ import { parseTasksFromContent, resolveTaskFiles } from '../../utils/task-progress.js';
12
+ import { validateChangeExists, validateSchemaExists, assertChangeSchema, } from './shared.js';
15
13
  import { emitSuccess } from '../shared-output.js';
16
- // -----------------------------------------------------------------------------
17
- // Artifact Instructions Command
18
- // -----------------------------------------------------------------------------
19
- export async function instructionsCommand(artifactId, options) {
20
- const root = await resolveRootForCommand(options, { json: options.json });
14
+ /**
15
+ * The `--json` null-shape. This command's success payload is flat, so there is
16
+ * no wrapper key to null; `instruction` is the one key both success shapes
17
+ * (artifact and apply) carry.
18
+ *
19
+ * Exported so the commander-level shape table and this command's catch block
20
+ * cannot drift apart.
21
+ */
22
+ export const INSTRUCTIONS_FAILURE_PAYLOAD = {
23
+ instruction: null,
24
+ root: null,
25
+ };
26
+ /**
27
+ * The one argument this command accepts that is not a schema artifact. Exported
28
+ * so the CLI's dispatch and the "valid arguments" list read one value.
29
+ */
30
+ export const APPLY_ARGUMENT = 'apply';
31
+ async function resolveInstructionsTarget(options) {
32
+ // No implicit root, as `status`: "Change 'x' not found. No changes exist."
33
+ // about a directory that is no project sends the agent to `new change`
34
+ // instead of `init`.
35
+ const root = await resolveRootForCommand(options, {
36
+ json: options.json,
37
+ allowImplicitRoot: false,
38
+ failurePayload: INSTRUCTIONS_FAILURE_PAYLOAD,
39
+ });
21
40
  if (!root) {
22
- return;
41
+ return null;
23
42
  }
24
- const planningHome = toPlanningHome(root);
25
43
  const projectRoot = root.path;
26
- const changeName = await validateChangeExists(options.change, projectRoot, root.changesDir, { newChangeHint: 'tospec new change <name>' });
27
- // Validate schema if explicitly provided
28
44
  if (options.schema) {
29
45
  validateSchemaExists(options.schema, projectRoot);
46
+ assertChangeSchema(options.schema);
30
47
  }
31
- // loadChangeContext will auto-detect schema from metadata if not provided
48
+ const changeName = await validateChangeExists(options.change, projectRoot, root.changesDir, {
49
+ newChangeHint: 'tospec new change <name>',
50
+ });
51
+ return { root, planningHome: toPlanningHome(root), projectRoot, changeName };
52
+ }
53
+ export async function instructionsCommand(artifactId, options) {
54
+ const target = await resolveInstructionsTarget(options);
55
+ if (!target) {
56
+ return;
57
+ }
58
+ const { root, planningHome, projectRoot, changeName } = target;
59
+ // The schema comes from the change's metadata when not given.
32
60
  const context = loadChangeContext(projectRoot, changeName, options.schema, {
33
61
  changeDir: getChangeDir(planningHome, changeName),
34
62
  planningHome,
35
63
  });
64
+ // Includes `apply`: the schema's artifacts alone omit the one valid argument
65
+ // that is not an artifact.
66
+ const validArgumentList = () => [...context.graph.getAllArtifacts().map((a) => a.id), APPLY_ARGUMENT].join('\n ');
36
67
  if (!artifactId) {
37
- const validIds = context.graph.getAllArtifacts().map((a) => a.id);
38
- throw new Error(`Missing required argument <artifact>. Valid artifacts:\n ${validIds.join('\n ')}`);
68
+ throw new Error(`Missing required argument <artifact>. Valid arguments:\n ${validArgumentList()}`);
39
69
  }
40
70
  const artifact = context.graph.getArtifact(artifactId);
41
71
  if (!artifact) {
42
- const validIds = context.graph.getAllArtifacts().map((a) => a.id);
43
- throw new Error(`Artifact '${artifactId}' not found in schema '${context.schemaName}'. Valid artifacts:\n ${validIds.join('\n ')}`);
72
+ throw new Error(`Artifact '${artifactId}' not found in schema '${context.schemaName}'. Valid arguments:\n ${validArgumentList()}`);
44
73
  }
45
- // readProjectConfig never throws: missing/unparseable configs are null.
46
- const projectConfig = readProjectConfig(root.path);
74
+ // Never throws: a missing or unparseable config comes back null with the
75
+ // reason in `diagnostics`.
76
+ const { config: projectConfig, diagnostics: configDiagnostics } = readProjectConfigWithDiagnostics(root.path);
47
77
  const instructions = generateInstructions(context, artifactId, projectRoot, {
48
78
  projectConfig,
79
+ configDiagnostics,
49
80
  });
50
81
  const isBlocked = instructions.dependencies.some((d) => !d.done);
82
+ // `status` says "skipped" for this artifact, so a brief that reads as a
83
+ // plain "write it" sends an agent into the contradiction `validate` rejects
84
+ // (marker set, spec files present). Said first, in both output modes.
85
+ const isSkipped = context.skippedArtifacts?.has(artifactId) ?? false;
51
86
  if (options.json) {
52
- emitSuccess({ ...instructions }, toRootOutput(root));
87
+ // `configWarnings` becomes `status[]`, the envelope field every command
88
+ // reports non-fatal trouble in.
89
+ const { configWarnings, ...payload } = instructions;
90
+ // First, ahead of any config warning: it is the one entry telling an agent
91
+ // not to write the artifact yet. The alternative is inferring it from
92
+ // `dependencies[].done`.
93
+ const status = [
94
+ ...skippedDiagnostics(instructions, changeName, isSkipped),
95
+ ...blockedDiagnostics(instructions, changeName),
96
+ ...(configWarnings ?? []).map(({ code, message }) => ({
97
+ severity: 'warning',
98
+ code,
99
+ message,
100
+ })),
101
+ ];
102
+ emitSuccess({
103
+ ...payload,
104
+ ...(status.length ? { status } : {}),
105
+ }, toRootOutput(root));
53
106
  return;
54
107
  }
55
- printInstructionsText(instructions, isBlocked);
108
+ printInstructionsText(instructions, isBlocked, { skipped: isSkipped });
109
+ }
110
+ /**
111
+ * The "declared away" warning, as a `status[]` entry — the JSON half of the
112
+ * `<warning>` block the human output prints. Empty unless the change's
113
+ * metadata skips this artifact.
114
+ */
115
+ function skippedDiagnostics(instructions, changeName, skipped) {
116
+ if (!skipped)
117
+ return [];
118
+ return [
119
+ {
120
+ severity: 'warning',
121
+ code: 'artifact_skipped',
122
+ message: skippedArtifactMessage(instructions.artifactId, changeName),
123
+ fix: `Remove skip_specs from the change's .tospec.yaml before writing ${instructions.artifactId}.`,
124
+ },
125
+ ];
126
+ }
127
+ function skippedArtifactMessage(artifactId, changeName) {
128
+ return `Change '${changeName}' declared '${artifactId}' away (skip_specs: true in .tospec.yaml). Writing it now leaves the marker contradicting the files, which validation rejects.`;
129
+ }
130
+ /**
131
+ * The unmet-dependency warning, as a `status[]` entry — the JSON half of the
132
+ * `<warning>` block the human output prints. Empty when nothing is missing, so
133
+ * the caller can concatenate it unconditionally.
134
+ */
135
+ function blockedDiagnostics(instructions, changeName) {
136
+ const missing = instructions.dependencies.filter((d) => !d.done).map((d) => d.id);
137
+ if (missing.length === 0)
138
+ return [];
139
+ return [
140
+ {
141
+ severity: 'warning',
142
+ code: 'artifact_blocked',
143
+ message: `Artifact '${instructions.artifactId}' has unmet dependencies: ${missing.join(', ')}. Complete them first or proceed with caution.`,
144
+ fix: `Run: tospec instructions ${missing[0]} --change ${changeName}`,
145
+ },
146
+ ];
56
147
  }
57
- export function printInstructionsText(instructions, isBlocked) {
58
- const { artifactId, changeName, schemaName, changeDir, resolvedOutputPath, description, instruction, context, rules, template, dependencies, unlocks, } = instructions;
59
- // Opening tag
148
+ export function printInstructionsText(instructions, isBlocked, flags = {}) {
149
+ const { artifactId, changeName, schemaName, changeDir, resolvedOutputPath, description, instruction, context, rules, template, validation, dependencies, unlocks, changeMetadata, } = instructions;
60
150
  console.log(`<artifact id="${artifactId}" change="${changeName}" schema="${schemaName}">`);
61
151
  console.log();
62
- // Warning for blocked artifacts
152
+ if (flags.skipped) {
153
+ console.log('<warning>');
154
+ console.log(skippedArtifactMessage(artifactId, changeName));
155
+ console.log(`Remove skip_specs from the change's .tospec.yaml before writing ${artifactId}.`);
156
+ console.log('</warning>');
157
+ console.log();
158
+ }
63
159
  if (isBlocked) {
64
160
  const missing = dependencies.filter((d) => !d.done).map((d) => d.id);
65
161
  console.log('<warning>');
@@ -68,13 +164,29 @@ export function printInstructionsText(instructions, isBlocked) {
68
164
  console.log('</warning>');
69
165
  console.log();
70
166
  }
71
- // Task directive
72
167
  console.log('<task>');
73
168
  console.log(`Create the ${artifactId} artifact for change "${changeName}".`);
74
169
  console.log(description);
75
170
  console.log('</task>');
76
171
  console.log();
77
- // Project context (AI constraint - do not include in output)
172
+ // What `tospec new change` recorded, same as the JSON payload's
173
+ // `changeMetadata`: without it the text reader never learns the goal or which
174
+ // ADRs drove the change.
175
+ const decisions = changeMetadata.decisions ?? [];
176
+ if (changeMetadata.goal || decisions.length > 0) {
177
+ console.log('<change_context>');
178
+ if (changeMetadata.goal) {
179
+ console.log(`Goal: ${changeMetadata.goal}`);
180
+ }
181
+ if (decisions.length > 0) {
182
+ console.log('Decisions driving this change (read them under tospec/decisions/):');
183
+ for (const file of decisions) {
184
+ console.log(`- ${file}`);
185
+ }
186
+ }
187
+ console.log('</change_context>');
188
+ console.log();
189
+ }
78
190
  if (context) {
79
191
  console.log('<project_context>');
80
192
  console.log('<!-- This is background information for you. Do NOT include this in your output. -->');
@@ -82,7 +194,6 @@ export function printInstructionsText(instructions, isBlocked) {
82
194
  console.log('</project_context>');
83
195
  console.log();
84
196
  }
85
- // Rules (AI constraint - do not include in output)
86
197
  if (rules && rules.length > 0) {
87
198
  console.log('<rules>');
88
199
  console.log('<!-- These are constraints for you to follow. Do NOT include this in your output. -->');
@@ -92,7 +203,6 @@ export function printInstructionsText(instructions, isBlocked) {
92
203
  console.log('</rules>');
93
204
  console.log();
94
205
  }
95
- // Dependencies (files to read for context)
96
206
  if (dependencies.length > 0) {
97
207
  console.log('<dependencies>');
98
208
  console.log('Read the current contents of these files before creating this artifact (re-read them from disk even if you saw them earlier - they may have been edited since):');
@@ -108,46 +218,48 @@ export function printInstructionsText(instructions, isBlocked) {
108
218
  console.log('</dependencies>');
109
219
  console.log();
110
220
  }
111
- // Output location
112
221
  console.log('<output>');
113
222
  console.log(`Write to: ${resolvedOutputPath}`);
114
223
  console.log('</output>');
115
224
  console.log();
116
- // Instruction (guidance)
117
225
  if (instruction) {
118
226
  console.log('<instruction>');
119
227
  console.log(instruction.trim());
120
228
  console.log('</instruction>');
121
229
  console.log();
122
230
  }
123
- // Template
124
231
  console.log('<template>');
125
232
  console.log('<!-- Use this as the structure for your output file. Fill in the sections. -->');
126
233
  console.log(template.trim());
127
234
  console.log('</template>');
128
235
  console.log();
129
- // Success criteria placeholder
130
- console.log('<success_criteria>');
131
- console.log('<!-- To be defined in schema validation rules -->');
132
- console.log('</success_criteria>');
133
- console.log();
134
- // Unlocks
236
+ // The schema's own acceptance criteria, present only when it declares some:
237
+ // an empty block would claim there are none.
238
+ if (validation) {
239
+ console.log('<success_criteria>');
240
+ if (validation.requiredSections.length > 0) {
241
+ console.log(`Required sections: ${validation.requiredSections.map((s) => `## ${s}`).join(', ')}`);
242
+ }
243
+ for (const [section, minLength] of Object.entries(validation.minSectionLength)) {
244
+ console.log(`Section "${section}" must be at least ${minLength} characters.`);
245
+ }
246
+ for (const [section, maxLength] of Object.entries(validation.maxSectionLength ?? {})) {
247
+ console.log(`Section "${section}" should stay under ${maxLength} characters.`);
248
+ }
249
+ console.log('</success_criteria>');
250
+ console.log();
251
+ }
135
252
  if (unlocks.length > 0) {
136
253
  console.log('<unlocks>');
137
254
  console.log(`Completing this artifact enables: ${unlocks.join(', ')}`);
138
255
  console.log('</unlocks>');
139
256
  console.log();
140
257
  }
141
- // Closing tag
142
258
  console.log('</artifact>');
143
259
  }
144
- // -----------------------------------------------------------------------------
145
- // Apply Instructions Command
146
- // -----------------------------------------------------------------------------
147
260
  /**
148
- * Maps a change's schema to the planning skill that produces its artifacts,
149
- * so blocked-state instructions point at a skill that actually exists
150
- * (see skill-generation.ts for the generated list).
261
+ * The planning skill that produces a schema's artifacts, so blocked-state
262
+ * instructions point at a skill that exists.
151
263
  */
152
264
  function planningSkillFor(schemaName) {
153
265
  if (schemaName === 'issue')
@@ -157,39 +269,50 @@ function planningSkillFor(schemaName) {
157
269
  return 'tospec-propose (sdd) or tospec-issue (issue)';
158
270
  }
159
271
  /**
160
- * Parses tasks.md content and extracts task items with their completion status.
272
+ * How to name the tracked task file in a message to the user. `path.basename`
273
+ * alone turns a glob (`tasks/*.md`) into a bare `*.md`, which names no file, so
274
+ * a glob keeps the `tracks` value as the schema authored it.
275
+ */
276
+ function describeTracksFile(tracksFile) {
277
+ return /[*?[\]]/.test(tracksFile) ? tracksFile : path.basename(tracksFile);
278
+ }
279
+ /**
161
280
  * Shares `parseTasksFromContent` with task progress so the apply instructions
162
281
  * and the reported `x/y` can never disagree about what counts as a task.
163
282
  */
164
283
  function parseTasksFile(content) {
165
- return parseTasksFromContent(content).map((task, i) => ({
166
- id: `${i + 1}`,
167
- description: task.text,
168
- done: task.done,
169
- }));
284
+ return parseTasksFromContent(content).map((task, i) => {
285
+ // The number the file gives the task, not this array's index: they diverge
286
+ // the moment a slice starts at 2.1 or a task is deleted, and the id is what
287
+ // a caller quotes back. Falls back to the ordinal when there is none.
288
+ const numbered = /^(\d+(?:\.\d+)*)\s+(.*)$/.exec(task.text);
289
+ return {
290
+ id: numbered?.[1] ?? `${i + 1}`,
291
+ // Without that number, since `id` carries it and a consumer joining the
292
+ // two would render "1.1 1.1 Write a failing test".
293
+ description: numbered?.[2] ?? task.text,
294
+ done: task.done,
295
+ };
296
+ });
170
297
  }
171
298
  /**
172
- * Generates apply instructions for implementing tasks from a change.
173
- * Schema-aware: reads apply phase configuration from schema to determine
174
- * required artifacts, tracking file, and instruction.
299
+ * Apply instructions for a change, from the schema's `apply` block: required
300
+ * artifacts, tracking file, and instruction.
175
301
  */
176
302
  export async function generateApplyInstructions(projectRoot, changeName, schemaName, options = {}) {
177
303
  const planningHome = options.planningHome ?? resolveCurrentPlanningHomeSync({ startPath: projectRoot });
178
- // loadChangeContext will auto-detect schema from metadata if not provided
304
+ // The schema comes from the change's metadata when not given.
179
305
  const context = loadChangeContext(projectRoot, changeName, schemaName, {
180
306
  changeDir: getChangeDir(planningHome, changeName),
181
307
  planningHome,
182
308
  });
183
309
  const changeDir = context.changeDir;
184
- // Get the full schema to access the apply phase configuration
185
310
  const schema = resolveSchema(context.schemaName, projectRoot);
186
311
  const applyConfig = schema.apply;
187
- // Determine required artifacts and tracking file from schema
188
- // Fallback: if no apply block, require all artifacts
312
+ // No apply block: require every artifact.
189
313
  const requiredArtifactIds = applyConfig?.requires ?? schema.artifacts.map((a) => a.id);
190
314
  const tracksFile = applyConfig?.tracks ?? null;
191
315
  const schemaInstruction = applyConfig?.instruction ?? null;
192
- // Check which required artifacts are missing
193
316
  const missingArtifacts = [];
194
317
  for (const artifactId of requiredArtifactIds) {
195
318
  const artifact = schema.artifacts.find((a) => a.id === artifactId);
@@ -197,7 +320,6 @@ export async function generateApplyInstructions(projectRoot, changeName, schemaN
197
320
  missingArtifacts.push(artifactId);
198
321
  }
199
322
  }
200
- // Build context files from all existing artifacts in schema
201
323
  const contextFiles = {};
202
324
  for (const artifact of schema.artifacts) {
203
325
  const outputs = resolveArtifactOutputs(changeDir, artifact.generates);
@@ -205,22 +327,22 @@ export async function generateApplyInstructions(projectRoot, changeName, schemaN
205
327
  contextFiles[artifact.id] = outputs;
206
328
  }
207
329
  }
208
- // Parse tasks if tracking file exists
330
+ // Through `resolveTaskFiles`, the resolver `list`, the dashboard and archive's
331
+ // completeness gate share: `apply.tracks` names an artifact by its `generates`
332
+ // value, which may be a glob (`tasks/*.md`). Treated as a literal path it
333
+ // finds no file, so a multi-file schema reports `blocked` and `0/0`.
209
334
  let tasks = [];
210
335
  let tracksFileExists = false;
211
336
  if (tracksFile) {
212
- const tracksPath = path.join(changeDir, tracksFile);
213
- tracksFileExists = fs.existsSync(tracksPath);
214
- if (tracksFileExists) {
215
- const tasksContent = await fs.promises.readFile(tracksPath, 'utf-8');
216
- tasks = parseTasksFile(tasksContent);
337
+ const trackedFiles = resolveTaskFiles(changeDir, projectRoot).filter((file) => fs.existsSync(file));
338
+ tracksFileExists = trackedFiles.length > 0;
339
+ for (const file of trackedFiles) {
340
+ tasks.push(...parseTasksFile(await fs.promises.readFile(file, 'utf-8')));
217
341
  }
218
342
  }
219
- // Calculate progress
220
343
  const total = tasks.length;
221
344
  const complete = tasks.filter((t) => t.done).length;
222
345
  const remaining = total - complete;
223
- // Determine state and instruction
224
346
  let state;
225
347
  let instruction;
226
348
  const planningSkill = planningSkillFor(context.schemaName);
@@ -229,14 +351,12 @@ export async function generateApplyInstructions(projectRoot, changeName, schemaN
229
351
  instruction = `Cannot apply this change yet. Missing artifacts: ${missingArtifacts.join(', ')}.\nStop and send the user back to ${planningSkill} to create the missing artifacts first.`;
230
352
  }
231
353
  else if (tracksFile && !tracksFileExists) {
232
- // Tracking file configured but doesn't exist yet
233
- const tracksFilename = path.basename(tracksFile);
354
+ const tracksFilename = describeTracksFile(tracksFile);
234
355
  state = 'blocked';
235
356
  instruction = `The ${tracksFilename} file is missing and must be created.\nStop and send the user back to ${planningSkill} to generate the tracking file.`;
236
357
  }
237
358
  else if (tracksFile && tracksFileExists && total === 0) {
238
- // Tracking file exists but contains no tasks
239
- const tracksFilename = path.basename(tracksFile);
359
+ const tracksFilename = describeTracksFile(tracksFile);
240
360
  state = 'blocked';
241
361
  instruction = `The ${tracksFilename} file exists but contains no tasks.\nAdd tasks to ${tracksFilename} or stop and send the user back to ${planningSkill} to regenerate it.`;
242
362
  }
@@ -245,7 +365,6 @@ export async function generateApplyInstructions(projectRoot, changeName, schemaN
245
365
  instruction = 'All tasks are complete! This change is ready to be archived.\nConsider running tests and reviewing the changes before archiving.';
246
366
  }
247
367
  else if (!tracksFile) {
248
- // No tracking file configured in schema - ready to apply
249
368
  state = 'ready';
250
369
  instruction = schemaInstruction?.trim() ?? 'All required artifacts complete. Proceed with implementation.';
251
370
  }
@@ -253,6 +372,22 @@ export async function generateApplyInstructions(projectRoot, changeName, schemaN
253
372
  state = 'ready';
254
373
  instruction = schemaInstruction?.trim() ?? 'Read context files, work through pending tasks, mark complete as you go.\nPause if you hit blockers or need clarification.';
255
374
  }
375
+ // Absent artifacts `apply.requires` does not insist on: reported, not
376
+ // blocking. sdd's apply requires only `tasks`, so a change missing
377
+ // proposal/design/specs reaches `ready` while its instruction still refers
378
+ // to them.
379
+ const missingContext = schema.artifacts
380
+ .filter((artifact) => !contextFiles[artifact.id] && !missingArtifacts.includes(artifact.id))
381
+ .map((artifact) => artifact.id);
382
+ if (missingContext.length > 0 && state !== 'blocked') {
383
+ instruction += `
384
+
385
+ Not present in this change: ${missingContext.join(', ')}. Ignore any part of the above that refers to them.`;
386
+ }
387
+ // The project's own context and rules, as every artifact's instructions carry.
388
+ const { config: projectConfig, diagnostics: configWarnings } = readProjectConfigWithDiagnostics(projectRoot);
389
+ const configContext = projectConfig?.context?.trim() || undefined;
390
+ const applyRules = projectConfig?.rules?.[APPLY_RULES_KEY];
256
391
  return {
257
392
  changeName,
258
393
  changeDir,
@@ -262,37 +397,63 @@ export async function generateApplyInstructions(projectRoot, changeName, schemaN
262
397
  tasks,
263
398
  state,
264
399
  missingArtifacts: missingArtifacts.length > 0 ? missingArtifacts : undefined,
400
+ missingContext: missingContext.length > 0 ? missingContext : undefined,
265
401
  instruction,
402
+ ...(configContext ? { context: configContext } : {}),
403
+ ...(applyRules?.length ? { rules: applyRules } : {}),
404
+ ...(configWarnings.length ? { configWarnings } : {}),
266
405
  };
267
406
  }
268
407
  export async function applyInstructionsCommand(options) {
269
- const root = await resolveRootForCommand(options, { json: options.json });
270
- if (!root) {
408
+ const target = await resolveInstructionsTarget(options);
409
+ if (!target) {
271
410
  return;
272
411
  }
273
- const planningHome = toPlanningHome(root);
274
- const projectRoot = root.path;
275
- const changeName = await validateChangeExists(options.change, projectRoot, root.changesDir, { newChangeHint: 'tospec new change <name>' });
276
- // Validate schema if explicitly provided
277
- if (options.schema) {
278
- validateSchemaExists(options.schema, projectRoot);
279
- }
280
- // generateApplyInstructions uses loadChangeContext which auto-detects schema
412
+ const { root, planningHome, projectRoot, changeName } = target;
281
413
  const instructions = await generateApplyInstructions(projectRoot, changeName, options.schema, {
282
414
  planningHome,
283
415
  });
284
416
  if (options.json) {
285
- emitSuccess({ ...instructions }, toRootOutput(root));
417
+ // As in the artifact payload: `configWarnings` becomes the envelope's
418
+ // `status[]`, not a field of its own.
419
+ const { configWarnings, ...payload } = instructions;
420
+ emitSuccess({
421
+ ...payload,
422
+ ...(configWarnings?.length
423
+ ? {
424
+ status: configWarnings.map(({ code, message }) => ({
425
+ severity: 'warning',
426
+ code,
427
+ message,
428
+ })),
429
+ }
430
+ : {}),
431
+ }, toRootOutput(root));
286
432
  return;
287
433
  }
288
434
  printApplyInstructionsText(instructions);
289
435
  }
290
436
  export function printApplyInstructionsText(instructions) {
291
- const { changeName, schemaName, contextFiles, progress, tasks, state, missingArtifacts, instruction } = instructions;
437
+ const { changeName, schemaName, contextFiles, progress, tasks, state, missingArtifacts, instruction, context, rules, } = instructions;
292
438
  console.log(`## Apply: ${changeName}`);
293
439
  console.log(`Schema: ${schemaName}`);
294
440
  console.log();
295
- // Warning for blocked state
441
+ // The same tags the artifact instructions use, so an agent reading either
442
+ // treats project constraints the same way.
443
+ if (context) {
444
+ console.log('<project_context>');
445
+ console.log(context);
446
+ console.log('</project_context>');
447
+ console.log();
448
+ }
449
+ if (rules && rules.length > 0) {
450
+ console.log('<rules>');
451
+ for (const rule of rules) {
452
+ console.log(`- ${rule}`);
453
+ }
454
+ console.log('</rules>');
455
+ console.log();
456
+ }
296
457
  if (state === 'blocked' && missingArtifacts) {
297
458
  console.log('### ⚠️ Blocked');
298
459
  console.log();
@@ -300,7 +461,6 @@ export function printApplyInstructionsText(instructions) {
300
461
  console.log(`Use the ${planningSkillFor(schemaName)} skill to create these first.`);
301
462
  console.log();
302
463
  }
303
- // Context files (dynamically from schema)
304
464
  const contextFileEntries = Object.entries(contextFiles);
305
465
  if (contextFileEntries.length > 0) {
306
466
  console.log('### Context Files');
@@ -311,7 +471,6 @@ export function printApplyInstructionsText(instructions) {
311
471
  }
312
472
  console.log();
313
473
  }
314
- // Progress (only show if we have tracking)
315
474
  if (progress.total > 0 || tasks.length > 0) {
316
475
  console.log('### Progress');
317
476
  if (state === 'all_done') {
@@ -322,16 +481,16 @@ export function printApplyInstructionsText(instructions) {
322
481
  }
323
482
  console.log();
324
483
  }
325
- // Tasks
326
484
  if (tasks.length > 0) {
327
485
  console.log('### Tasks');
328
486
  for (const task of tasks) {
329
487
  const checkbox = task.done ? '[x]' : '[ ]';
330
- console.log(`- ${checkbox} ${task.description}`);
488
+ // Joined again here: the number is stored apart only so a caller can
489
+ // address a task by it.
490
+ console.log(`- ${checkbox} ${task.id} ${task.description}`);
331
491
  }
332
492
  console.log();
333
493
  }
334
- // Instruction
335
494
  console.log('### Instruction');
336
495
  console.log(instruction);
337
496
  }
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../../src/commands/workflow/instructions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../../src/commands/workflow/instructions.ts"],"names":[],"mappings":"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"}