@dedesfr/prompter 0.6.15 → 0.7.1

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 (384) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cli/index.js +144 -12
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/commands/archive.d.ts +11 -0
  5. package/dist/commands/archive.d.ts.map +1 -0
  6. package/dist/commands/archive.js +280 -0
  7. package/dist/commands/archive.js.map +1 -0
  8. package/dist/commands/change.d.ts +35 -0
  9. package/dist/commands/change.d.ts.map +1 -0
  10. package/dist/commands/change.js +277 -0
  11. package/dist/commands/change.js.map +1 -0
  12. package/dist/commands/config.d.ts +8 -0
  13. package/dist/commands/config.d.ts.map +1 -0
  14. package/dist/commands/config.js +198 -0
  15. package/dist/commands/config.js.map +1 -0
  16. package/dist/commands/init.d.ts.map +1 -1
  17. package/dist/commands/init.js +21 -5
  18. package/dist/commands/init.js.map +1 -1
  19. package/dist/commands/list.d.ts +2 -2
  20. package/dist/commands/list.d.ts.map +1 -1
  21. package/dist/commands/list.js +153 -47
  22. package/dist/commands/list.js.map +1 -1
  23. package/dist/commands/show.d.ts +14 -0
  24. package/dist/commands/show.d.ts.map +1 -0
  25. package/dist/commands/show.js +132 -0
  26. package/dist/commands/show.js.map +1 -0
  27. package/dist/commands/spec.d.ts +15 -0
  28. package/dist/commands/spec.d.ts.map +1 -0
  29. package/dist/commands/spec.js +225 -0
  30. package/dist/commands/spec.js.map +1 -0
  31. package/dist/commands/validate.d.ts +24 -0
  32. package/dist/commands/validate.d.ts.map +1 -0
  33. package/dist/commands/validate.js +294 -0
  34. package/dist/commands/validate.js.map +1 -0
  35. package/dist/core/artifact-graph/graph.d.ts +56 -0
  36. package/dist/core/artifact-graph/graph.d.ts.map +1 -0
  37. package/dist/core/artifact-graph/graph.js +141 -0
  38. package/dist/core/artifact-graph/graph.js.map +1 -0
  39. package/dist/core/artifact-graph/index.d.ts +7 -0
  40. package/dist/core/artifact-graph/index.d.ts.map +1 -0
  41. package/dist/core/artifact-graph/index.js +13 -0
  42. package/dist/core/artifact-graph/index.js.map +1 -0
  43. package/dist/core/artifact-graph/instruction-loader.d.ts +130 -0
  44. package/dist/core/artifact-graph/instruction-loader.d.ts.map +1 -0
  45. package/dist/core/artifact-graph/instruction-loader.js +173 -0
  46. package/dist/core/artifact-graph/instruction-loader.js.map +1 -0
  47. package/dist/core/artifact-graph/resolver.d.ts +61 -0
  48. package/dist/core/artifact-graph/resolver.d.ts.map +1 -0
  49. package/dist/core/artifact-graph/resolver.js +187 -0
  50. package/dist/core/artifact-graph/resolver.js.map +1 -0
  51. package/dist/core/artifact-graph/schema.d.ts +13 -0
  52. package/dist/core/artifact-graph/schema.d.ts.map +1 -0
  53. package/dist/core/artifact-graph/schema.js +108 -0
  54. package/dist/core/artifact-graph/schema.js.map +1 -0
  55. package/dist/core/artifact-graph/state.d.ts +12 -0
  56. package/dist/core/artifact-graph/state.d.ts.map +1 -0
  57. package/dist/core/artifact-graph/state.js +54 -0
  58. package/dist/core/artifact-graph/state.js.map +1 -0
  59. package/dist/core/artifact-graph/types.d.ts +45 -0
  60. package/dist/core/artifact-graph/types.d.ts.map +1 -0
  61. package/dist/core/artifact-graph/types.js +43 -0
  62. package/dist/core/artifact-graph/types.js.map +1 -0
  63. package/dist/core/completions/command-registry.d.ts +7 -0
  64. package/dist/core/completions/command-registry.d.ts.map +1 -0
  65. package/dist/core/completions/command-registry.js +380 -0
  66. package/dist/core/completions/command-registry.js.map +1 -0
  67. package/dist/core/completions/completion-provider.d.ts +60 -0
  68. package/dist/core/completions/completion-provider.d.ts.map +1 -0
  69. package/dist/core/completions/completion-provider.js +102 -0
  70. package/dist/core/completions/completion-provider.js.map +1 -0
  71. package/dist/core/completions/generators/bash-generator.d.ts +32 -0
  72. package/dist/core/completions/generators/bash-generator.d.ts.map +1 -0
  73. package/dist/core/completions/generators/bash-generator.js +174 -0
  74. package/dist/core/completions/generators/bash-generator.js.map +1 -0
  75. package/dist/core/completions/generators/fish-generator.d.ts +32 -0
  76. package/dist/core/completions/generators/fish-generator.d.ts.map +1 -0
  77. package/dist/core/completions/generators/fish-generator.js +157 -0
  78. package/dist/core/completions/generators/fish-generator.js.map +1 -0
  79. package/dist/core/completions/generators/powershell-generator.d.ts +33 -0
  80. package/dist/core/completions/generators/powershell-generator.d.ts.map +1 -0
  81. package/dist/core/completions/generators/powershell-generator.js +207 -0
  82. package/dist/core/completions/generators/powershell-generator.js.map +1 -0
  83. package/dist/core/completions/generators/zsh-generator.d.ts +44 -0
  84. package/dist/core/completions/generators/zsh-generator.d.ts.map +1 -0
  85. package/dist/core/completions/generators/zsh-generator.js +250 -0
  86. package/dist/core/completions/generators/zsh-generator.js.map +1 -0
  87. package/dist/core/completions/templates/bash-templates.d.ts +6 -0
  88. package/dist/core/completions/templates/bash-templates.d.ts.map +1 -0
  89. package/dist/core/completions/templates/bash-templates.js +24 -0
  90. package/dist/core/completions/templates/bash-templates.js.map +1 -0
  91. package/dist/core/completions/templates/fish-templates.d.ts +7 -0
  92. package/dist/core/completions/templates/fish-templates.d.ts.map +1 -0
  93. package/dist/core/completions/templates/fish-templates.js +39 -0
  94. package/dist/core/completions/templates/fish-templates.js.map +1 -0
  95. package/dist/core/completions/templates/powershell-templates.d.ts +6 -0
  96. package/dist/core/completions/templates/powershell-templates.d.ts.map +1 -0
  97. package/dist/core/completions/templates/powershell-templates.js +25 -0
  98. package/dist/core/completions/templates/powershell-templates.js.map +1 -0
  99. package/dist/core/completions/templates/zsh-templates.d.ts +6 -0
  100. package/dist/core/completions/templates/zsh-templates.d.ts.map +1 -0
  101. package/dist/core/completions/templates/zsh-templates.js +36 -0
  102. package/dist/core/completions/templates/zsh-templates.js.map +1 -0
  103. package/dist/core/completions/types.d.ts +78 -0
  104. package/dist/core/completions/types.d.ts.map +1 -0
  105. package/dist/core/completions/types.js +2 -0
  106. package/dist/core/completions/types.js.map +1 -0
  107. package/dist/core/config-schema.d.ts +76 -0
  108. package/dist/core/config-schema.d.ts.map +1 -0
  109. package/dist/core/config-schema.js +200 -0
  110. package/dist/core/config-schema.js.map +1 -0
  111. package/dist/core/config.d.ts.map +1 -1
  112. package/dist/core/config.js +18 -0
  113. package/dist/core/config.js.map +1 -1
  114. package/dist/core/configurators/slash/antigravity.d.ts.map +1 -1
  115. package/dist/core/configurators/slash/antigravity.js +6 -0
  116. package/dist/core/configurators/slash/antigravity.js.map +1 -1
  117. package/dist/core/configurators/slash/base.js +1 -1
  118. package/dist/core/configurators/slash/base.js.map +1 -1
  119. package/dist/core/configurators/slash/claude.d.ts.map +1 -1
  120. package/dist/core/configurators/slash/claude.js +6 -0
  121. package/dist/core/configurators/slash/claude.js.map +1 -1
  122. package/dist/core/configurators/slash/codex.d.ts.map +1 -1
  123. package/dist/core/configurators/slash/codex.js +6 -0
  124. package/dist/core/configurators/slash/codex.js.map +1 -1
  125. package/dist/core/configurators/slash/github-copilot.d.ts.map +1 -1
  126. package/dist/core/configurators/slash/github-copilot.js +6 -0
  127. package/dist/core/configurators/slash/github-copilot.js.map +1 -1
  128. package/dist/core/configurators/slash/kilocode.d.ts.map +1 -1
  129. package/dist/core/configurators/slash/kilocode.js +6 -0
  130. package/dist/core/configurators/slash/kilocode.js.map +1 -1
  131. package/dist/core/configurators/slash/opencode.d.ts.map +1 -1
  132. package/dist/core/configurators/slash/opencode.js +6 -0
  133. package/dist/core/configurators/slash/opencode.js.map +1 -1
  134. package/dist/core/converters/json-converter.d.ts +6 -0
  135. package/dist/core/converters/json-converter.d.ts.map +1 -0
  136. package/dist/core/converters/json-converter.js +51 -0
  137. package/dist/core/converters/json-converter.js.map +1 -0
  138. package/dist/core/global-config.d.ts +39 -0
  139. package/dist/core/global-config.d.ts.map +1 -0
  140. package/dist/core/global-config.js +115 -0
  141. package/dist/core/global-config.js.map +1 -0
  142. package/dist/core/parsers/change-parser.d.ts +13 -0
  143. package/dist/core/parsers/change-parser.d.ts.map +1 -0
  144. package/dist/core/parsers/change-parser.js +193 -0
  145. package/dist/core/parsers/change-parser.js.map +1 -0
  146. package/dist/core/parsers/markdown-parser.d.ts +22 -0
  147. package/dist/core/parsers/markdown-parser.d.ts.map +1 -0
  148. package/dist/core/parsers/markdown-parser.js +187 -0
  149. package/dist/core/parsers/markdown-parser.js.map +1 -0
  150. package/dist/core/parsers/requirement-blocks.d.ts +37 -0
  151. package/dist/core/parsers/requirement-blocks.d.ts.map +1 -0
  152. package/dist/core/parsers/requirement-blocks.js +201 -0
  153. package/dist/core/parsers/requirement-blocks.js.map +1 -0
  154. package/dist/core/prompt-templates.d.ts +3 -0
  155. package/dist/core/prompt-templates.d.ts.map +1 -1
  156. package/dist/core/prompt-templates.js +66 -0
  157. package/dist/core/prompt-templates.js.map +1 -1
  158. package/dist/core/schemas/base.schema.d.ts +13 -0
  159. package/dist/core/schemas/base.schema.d.ts.map +1 -0
  160. package/dist/core/schemas/base.schema.js +13 -0
  161. package/dist/core/schemas/base.schema.js.map +1 -0
  162. package/dist/core/schemas/change.schema.d.ts +73 -0
  163. package/dist/core/schemas/change.schema.d.ts.map +1 -0
  164. package/dist/core/schemas/change.schema.js +31 -0
  165. package/dist/core/schemas/change.schema.js.map +1 -0
  166. package/dist/core/schemas/index.d.ts +4 -0
  167. package/dist/core/schemas/index.d.ts.map +1 -0
  168. package/dist/core/schemas/index.js +4 -0
  169. package/dist/core/schemas/index.js.map +1 -0
  170. package/dist/core/schemas/spec.schema.d.ts +18 -0
  171. package/dist/core/schemas/spec.schema.d.ts.map +1 -0
  172. package/dist/core/schemas/spec.schema.js +15 -0
  173. package/dist/core/schemas/spec.schema.js.map +1 -0
  174. package/dist/core/specs-apply.d.ts +73 -0
  175. package/dist/core/specs-apply.d.ts.map +1 -0
  176. package/dist/core/specs-apply.js +384 -0
  177. package/dist/core/specs-apply.js.map +1 -0
  178. package/dist/core/styles/palette.d.ts +7 -0
  179. package/dist/core/styles/palette.d.ts.map +1 -0
  180. package/dist/core/styles/palette.js +8 -0
  181. package/dist/core/styles/palette.js.map +1 -0
  182. package/dist/core/templates/agents-template.d.ts +1 -1
  183. package/dist/core/templates/agents-template.d.ts.map +1 -1
  184. package/dist/core/templates/agents-template.js +443 -19
  185. package/dist/core/templates/agents-template.js.map +1 -1
  186. package/dist/core/templates/slash-command-templates.d.ts +1 -1
  187. package/dist/core/templates/slash-command-templates.d.ts.map +1 -1
  188. package/dist/core/templates/slash-command-templates.js +4 -1
  189. package/dist/core/templates/slash-command-templates.js.map +1 -1
  190. package/dist/core/validation/constants.d.ts +34 -0
  191. package/dist/core/validation/constants.d.ts.map +1 -0
  192. package/dist/core/validation/constants.js +40 -0
  193. package/dist/core/validation/constants.js.map +1 -0
  194. package/dist/core/validation/types.d.ts +18 -0
  195. package/dist/core/validation/types.d.ts.map +1 -0
  196. package/dist/core/validation/types.js +2 -0
  197. package/dist/core/validation/types.js.map +1 -0
  198. package/dist/core/validation/validator.d.ts +33 -0
  199. package/dist/core/validation/validator.d.ts.map +1 -0
  200. package/dist/core/validation/validator.js +409 -0
  201. package/dist/core/validation/validator.js.map +1 -0
  202. package/dist/core/view.d.ts +8 -0
  203. package/dist/core/view.d.ts.map +1 -0
  204. package/dist/core/view.js +168 -0
  205. package/dist/core/view.js.map +1 -0
  206. package/dist/utils/change-metadata.d.ts +47 -0
  207. package/dist/utils/change-metadata.d.ts.map +1 -0
  208. package/dist/utils/change-metadata.js +130 -0
  209. package/dist/utils/change-metadata.js.map +1 -0
  210. package/dist/utils/change-utils.d.ts +51 -0
  211. package/dist/utils/change-utils.d.ts.map +1 -0
  212. package/dist/utils/change-utils.js +100 -0
  213. package/dist/utils/change-utils.js.map +1 -0
  214. package/dist/utils/file-system.d.ts +25 -0
  215. package/dist/utils/file-system.d.ts.map +1 -0
  216. package/dist/utils/file-system.js +218 -0
  217. package/dist/utils/file-system.js.map +1 -0
  218. package/dist/utils/index.d.ts +4 -0
  219. package/dist/utils/index.d.ts.map +1 -0
  220. package/dist/utils/index.js +5 -0
  221. package/dist/utils/index.js.map +1 -0
  222. package/dist/utils/interactive.d.ts +18 -0
  223. package/dist/utils/interactive.d.ts.map +1 -0
  224. package/dist/utils/interactive.js +21 -0
  225. package/dist/utils/interactive.js.map +1 -0
  226. package/dist/utils/item-discovery.d.ts +4 -0
  227. package/dist/utils/item-discovery.d.ts.map +1 -0
  228. package/dist/utils/item-discovery.js +72 -0
  229. package/dist/utils/item-discovery.js.map +1 -0
  230. package/dist/utils/match.d.ts +3 -0
  231. package/dist/utils/match.d.ts.map +1 -0
  232. package/dist/utils/match.js +22 -0
  233. package/dist/utils/match.js.map +1 -0
  234. package/dist/utils/shell-detection.d.ts +20 -0
  235. package/dist/utils/shell-detection.d.ts.map +1 -0
  236. package/dist/utils/shell-detection.js +41 -0
  237. package/dist/utils/shell-detection.js.map +1 -0
  238. package/dist/utils/task-progress.d.ts +8 -0
  239. package/dist/utils/task-progress.d.ts.map +1 -0
  240. package/dist/utils/task-progress.js +36 -0
  241. package/dist/utils/task-progress.js.map +1 -0
  242. package/docs/tasks.md +1 -1
  243. package/package.json +6 -2
  244. package/prompt/apply.md +17 -0
  245. package/prompt/archive.md +21 -0
  246. package/prompt/proposal.md +22 -0
  247. package/src/cli/index.ts +151 -16
  248. package/src/commands/archive.ts +302 -0
  249. package/src/commands/change.ts +292 -0
  250. package/src/commands/config.ts +233 -0
  251. package/src/commands/init.ts +19 -5
  252. package/src/commands/list.ts +176 -66
  253. package/src/commands/show.ts +138 -0
  254. package/src/commands/spec.ts +251 -0
  255. package/src/commands/validate.ts +326 -0
  256. package/src/core/artifact-graph/graph.ts +167 -0
  257. package/src/core/artifact-graph/index.ts +44 -0
  258. package/src/core/artifact-graph/instruction-loader.ts +302 -0
  259. package/src/core/artifact-graph/resolver.ts +226 -0
  260. package/src/core/artifact-graph/schema.ts +124 -0
  261. package/src/core/artifact-graph/state.ts +64 -0
  262. package/src/core/artifact-graph/types.ts +65 -0
  263. package/src/core/completions/command-registry.ts +382 -0
  264. package/src/core/completions/completion-provider.ts +128 -0
  265. package/src/core/completions/generators/bash-generator.ts +191 -0
  266. package/src/core/completions/generators/fish-generator.ts +188 -0
  267. package/src/core/completions/generators/powershell-generator.ts +223 -0
  268. package/src/core/completions/generators/zsh-generator.ts +281 -0
  269. package/src/core/completions/templates/bash-templates.ts +24 -0
  270. package/src/core/completions/templates/fish-templates.ts +40 -0
  271. package/src/core/completions/templates/powershell-templates.ts +25 -0
  272. package/src/core/completions/templates/zsh-templates.ts +36 -0
  273. package/src/core/completions/types.ts +90 -0
  274. package/src/core/config-schema.ts +230 -0
  275. package/src/core/config.ts +18 -0
  276. package/src/core/configurators/slash/antigravity.ts +6 -0
  277. package/src/core/configurators/slash/base.ts +1 -1
  278. package/src/core/configurators/slash/claude.ts +6 -0
  279. package/src/core/configurators/slash/codex.ts +6 -0
  280. package/src/core/configurators/slash/github-copilot.ts +6 -0
  281. package/src/core/configurators/slash/kilocode.ts +6 -0
  282. package/src/core/configurators/slash/opencode.ts +6 -0
  283. package/src/core/converters/json-converter.ts +62 -0
  284. package/src/core/global-config.ts +136 -0
  285. package/src/core/parsers/change-parser.ts +234 -0
  286. package/src/core/parsers/markdown-parser.ts +237 -0
  287. package/src/core/parsers/requirement-blocks.ts +234 -0
  288. package/src/core/prompt-templates.ts +69 -0
  289. package/src/core/schemas/base.schema.ts +20 -0
  290. package/src/core/schemas/change.schema.ts +42 -0
  291. package/src/core/schemas/index.ts +20 -0
  292. package/src/core/schemas/spec.schema.ts +17 -0
  293. package/src/core/specs-apply.ts +483 -0
  294. package/src/core/styles/palette.ts +8 -0
  295. package/src/core/templates/agents-template.ts +443 -19
  296. package/src/core/templates/slash-command-templates.ts +7 -1
  297. package/src/core/validation/constants.ts +48 -0
  298. package/src/core/validation/types.ts +19 -0
  299. package/src/core/validation/validator.ts +449 -0
  300. package/src/core/view.ts +219 -0
  301. package/src/utils/change-metadata.ts +171 -0
  302. package/src/utils/change-utils.ts +131 -0
  303. package/src/utils/file-system.ts +252 -0
  304. package/src/utils/index.ts +12 -0
  305. package/src/utils/interactive.ts +29 -0
  306. package/src/utils/item-discovery.ts +66 -0
  307. package/src/utils/match.ts +26 -0
  308. package/src/utils/shell-detection.ts +62 -0
  309. package/src/utils/task-progress.ts +43 -0
  310. package/dist/commands/ai-humanizer.d.ts +0 -11
  311. package/dist/commands/ai-humanizer.d.ts.map +0 -1
  312. package/dist/commands/ai-humanizer.js +0 -97
  313. package/dist/commands/ai-humanizer.js.map +0 -1
  314. package/dist/commands/api-contract-generator.d.ts +0 -11
  315. package/dist/commands/api-contract-generator.d.ts.map +0 -1
  316. package/dist/commands/api-contract-generator.js +0 -97
  317. package/dist/commands/api-contract-generator.js.map +0 -1
  318. package/dist/commands/design-system.d.ts +0 -11
  319. package/dist/commands/design-system.d.ts.map +0 -1
  320. package/dist/commands/design-system.js +0 -97
  321. package/dist/commands/design-system.js.map +0 -1
  322. package/dist/commands/document-explainer.d.ts +0 -11
  323. package/dist/commands/document-explainer.d.ts.map +0 -1
  324. package/dist/commands/document-explainer.js +0 -97
  325. package/dist/commands/document-explainer.js.map +0 -1
  326. package/dist/commands/epic-generator.d.ts +0 -11
  327. package/dist/commands/epic-generator.d.ts.map +0 -1
  328. package/dist/commands/epic-generator.js +0 -97
  329. package/dist/commands/epic-generator.js.map +0 -1
  330. package/dist/commands/erd-generator.d.ts +0 -11
  331. package/dist/commands/erd-generator.d.ts.map +0 -1
  332. package/dist/commands/erd-generator.js +0 -97
  333. package/dist/commands/erd-generator.js.map +0 -1
  334. package/dist/commands/fsd-generator.d.ts +0 -11
  335. package/dist/commands/fsd-generator.d.ts.map +0 -1
  336. package/dist/commands/fsd-generator.js +0 -97
  337. package/dist/commands/fsd-generator.js.map +0 -1
  338. package/dist/commands/prd-agent-generator.d.ts +0 -11
  339. package/dist/commands/prd-agent-generator.d.ts.map +0 -1
  340. package/dist/commands/prd-agent-generator.js +0 -95
  341. package/dist/commands/prd-agent-generator.js.map +0 -1
  342. package/dist/commands/prd-generator.d.ts +0 -11
  343. package/dist/commands/prd-generator.d.ts.map +0 -1
  344. package/dist/commands/prd-generator.js +0 -97
  345. package/dist/commands/prd-generator.js.map +0 -1
  346. package/dist/commands/product-brief.d.ts +0 -11
  347. package/dist/commands/product-brief.d.ts.map +0 -1
  348. package/dist/commands/product-brief.js +0 -97
  349. package/dist/commands/product-brief.js.map +0 -1
  350. package/dist/commands/skill-creator.d.ts +0 -11
  351. package/dist/commands/skill-creator.d.ts.map +0 -1
  352. package/dist/commands/skill-creator.js +0 -101
  353. package/dist/commands/skill-creator.js.map +0 -1
  354. package/dist/commands/story-generator.d.ts +0 -11
  355. package/dist/commands/story-generator.d.ts.map +0 -1
  356. package/dist/commands/story-generator.js +0 -97
  357. package/dist/commands/story-generator.js.map +0 -1
  358. package/dist/commands/tdd-generator.d.ts +0 -11
  359. package/dist/commands/tdd-generator.d.ts.map +0 -1
  360. package/dist/commands/tdd-generator.js +0 -97
  361. package/dist/commands/tdd-generator.js.map +0 -1
  362. package/dist/commands/tdd-lite-generator.d.ts +0 -11
  363. package/dist/commands/tdd-lite-generator.d.ts.map +0 -1
  364. package/dist/commands/tdd-lite-generator.js +0 -97
  365. package/dist/commands/tdd-lite-generator.js.map +0 -1
  366. package/dist/commands/wireframe-generator.d.ts +0 -11
  367. package/dist/commands/wireframe-generator.d.ts.map +0 -1
  368. package/dist/commands/wireframe-generator.js +0 -97
  369. package/dist/commands/wireframe-generator.js.map +0 -1
  370. package/src/commands/ai-humanizer.ts +0 -118
  371. package/src/commands/api-contract-generator.ts +0 -118
  372. package/src/commands/design-system.ts +0 -118
  373. package/src/commands/document-explainer.ts +0 -118
  374. package/src/commands/epic-generator.ts +0 -118
  375. package/src/commands/erd-generator.ts +0 -118
  376. package/src/commands/fsd-generator.ts +0 -118
  377. package/src/commands/prd-agent-generator.ts +0 -115
  378. package/src/commands/prd-generator.ts +0 -118
  379. package/src/commands/product-brief.ts +0 -118
  380. package/src/commands/skill-creator.ts +0 -123
  381. package/src/commands/story-generator.ts +0 -118
  382. package/src/commands/tdd-generator.ts +0 -118
  383. package/src/commands/tdd-lite-generator.ts +0 -118
  384. package/src/commands/wireframe-generator.ts +0 -118
@@ -0,0 +1,187 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { getGlobalDataDir } from '../global-config.js';
5
+ import { parseSchema, SchemaValidationError } from './schema.js';
6
+ /**
7
+ * Error thrown when loading a schema fails.
8
+ */
9
+ export class SchemaLoadError extends Error {
10
+ schemaPath;
11
+ cause;
12
+ constructor(message, schemaPath, cause) {
13
+ super(message);
14
+ this.schemaPath = schemaPath;
15
+ this.cause = cause;
16
+ this.name = 'SchemaLoadError';
17
+ }
18
+ }
19
+ /**
20
+ * Gets the package's built-in schemas directory path.
21
+ * Uses import.meta.url to resolve relative to the current module.
22
+ */
23
+ export function getPackageSchemasDir() {
24
+ const currentFile = fileURLToPath(import.meta.url);
25
+ // Navigate from dist/core/artifact-graph/ to package root's schemas/
26
+ return path.join(path.dirname(currentFile), '..', '..', '..', 'schemas');
27
+ }
28
+ /**
29
+ * Gets the user's schema override directory path.
30
+ */
31
+ export function getUserSchemasDir() {
32
+ return path.join(getGlobalDataDir(), 'schemas');
33
+ }
34
+ /**
35
+ * Resolves a schema name to its directory path.
36
+ *
37
+ * Resolution order:
38
+ * 1. User override: ${XDG_DATA_HOME}/prompter/schemas/<name>/schema.yaml
39
+ * 2. Package built-in: <package>/schemas/<name>/schema.yaml
40
+ *
41
+ * @param name - Schema name (e.g., "spec-driven")
42
+ * @returns The path to the schema directory, or null if not found
43
+ */
44
+ export function getSchemaDir(name) {
45
+ // 1. Check user override directory
46
+ const userDir = path.join(getUserSchemasDir(), name);
47
+ const userSchemaPath = path.join(userDir, 'schema.yaml');
48
+ if (fs.existsSync(userSchemaPath)) {
49
+ return userDir;
50
+ }
51
+ // 2. Check package built-in directory
52
+ const packageDir = path.join(getPackageSchemasDir(), name);
53
+ const packageSchemaPath = path.join(packageDir, 'schema.yaml');
54
+ if (fs.existsSync(packageSchemaPath)) {
55
+ return packageDir;
56
+ }
57
+ return null;
58
+ }
59
+ /**
60
+ * Resolves a schema name to a SchemaYaml object.
61
+ *
62
+ * Resolution order:
63
+ * 1. User override: ${XDG_DATA_HOME}/prompter/schemas/<name>/schema.yaml
64
+ * 2. Package built-in: <package>/schemas/<name>/schema.yaml
65
+ *
66
+ * @param name - Schema name (e.g., "spec-driven")
67
+ * @returns The resolved schema object
68
+ * @throws Error if schema is not found in any location
69
+ */
70
+ export function resolveSchema(name) {
71
+ // Normalize name (remove .yaml extension if provided)
72
+ const normalizedName = name.replace(/\.ya?ml$/, '');
73
+ const schemaDir = getSchemaDir(normalizedName);
74
+ if (!schemaDir) {
75
+ const availableSchemas = listSchemas();
76
+ throw new Error(`Schema '${normalizedName}' not found. Available schemas: ${availableSchemas.join(', ')}`);
77
+ }
78
+ const schemaPath = path.join(schemaDir, 'schema.yaml');
79
+ // Load and parse the schema
80
+ let content;
81
+ try {
82
+ content = fs.readFileSync(schemaPath, 'utf-8');
83
+ }
84
+ catch (err) {
85
+ const ioError = err instanceof Error ? err : new Error(String(err));
86
+ throw new SchemaLoadError(`Failed to read schema at '${schemaPath}': ${ioError.message}`, schemaPath, ioError);
87
+ }
88
+ try {
89
+ return parseSchema(content);
90
+ }
91
+ catch (err) {
92
+ if (err instanceof SchemaValidationError) {
93
+ throw new SchemaLoadError(`Invalid schema at '${schemaPath}': ${err.message}`, schemaPath, err);
94
+ }
95
+ const parseError = err instanceof Error ? err : new Error(String(err));
96
+ throw new SchemaLoadError(`Failed to parse schema at '${schemaPath}': ${parseError.message}`, schemaPath, parseError);
97
+ }
98
+ }
99
+ /**
100
+ * Lists all available schema names.
101
+ * Combines user override and package built-in schemas.
102
+ */
103
+ export function listSchemas() {
104
+ const schemas = new Set();
105
+ // Add package built-in schemas
106
+ const packageDir = getPackageSchemasDir();
107
+ if (fs.existsSync(packageDir)) {
108
+ for (const entry of fs.readdirSync(packageDir, { withFileTypes: true })) {
109
+ if (entry.isDirectory()) {
110
+ const schemaPath = path.join(packageDir, entry.name, 'schema.yaml');
111
+ if (fs.existsSync(schemaPath)) {
112
+ schemas.add(entry.name);
113
+ }
114
+ }
115
+ }
116
+ }
117
+ // Add user override schemas (may override package schemas)
118
+ const userDir = getUserSchemasDir();
119
+ if (fs.existsSync(userDir)) {
120
+ for (const entry of fs.readdirSync(userDir, { withFileTypes: true })) {
121
+ if (entry.isDirectory()) {
122
+ const schemaPath = path.join(userDir, entry.name, 'schema.yaml');
123
+ if (fs.existsSync(schemaPath)) {
124
+ schemas.add(entry.name);
125
+ }
126
+ }
127
+ }
128
+ }
129
+ return Array.from(schemas).sort();
130
+ }
131
+ /**
132
+ * Lists all available schemas with their descriptions and artifact lists.
133
+ * Useful for agent skills to present schema selection to users.
134
+ */
135
+ export function listSchemasWithInfo() {
136
+ const schemas = [];
137
+ const seenNames = new Set();
138
+ // Add user override schemas first (they take precedence)
139
+ const userDir = getUserSchemasDir();
140
+ if (fs.existsSync(userDir)) {
141
+ for (const entry of fs.readdirSync(userDir, { withFileTypes: true })) {
142
+ if (entry.isDirectory()) {
143
+ const schemaPath = path.join(userDir, entry.name, 'schema.yaml');
144
+ if (fs.existsSync(schemaPath)) {
145
+ try {
146
+ const schema = parseSchema(fs.readFileSync(schemaPath, 'utf-8'));
147
+ schemas.push({
148
+ name: entry.name,
149
+ description: schema.description || '',
150
+ artifacts: schema.artifacts.map((a) => a.id),
151
+ source: 'user',
152
+ });
153
+ seenNames.add(entry.name);
154
+ }
155
+ catch {
156
+ // Skip invalid schemas
157
+ }
158
+ }
159
+ }
160
+ }
161
+ }
162
+ // Add package built-in schemas (if not overridden)
163
+ const packageDir = getPackageSchemasDir();
164
+ if (fs.existsSync(packageDir)) {
165
+ for (const entry of fs.readdirSync(packageDir, { withFileTypes: true })) {
166
+ if (entry.isDirectory() && !seenNames.has(entry.name)) {
167
+ const schemaPath = path.join(packageDir, entry.name, 'schema.yaml');
168
+ if (fs.existsSync(schemaPath)) {
169
+ try {
170
+ const schema = parseSchema(fs.readFileSync(schemaPath, 'utf-8'));
171
+ schemas.push({
172
+ name: entry.name,
173
+ description: schema.description || '',
174
+ artifacts: schema.artifacts.map((a) => a.id),
175
+ source: 'package',
176
+ });
177
+ }
178
+ catch {
179
+ // Skip invalid schemas
180
+ }
181
+ }
182
+ }
183
+ }
184
+ }
185
+ return schemas.sort((a, b) => a.name.localeCompare(b.name));
186
+ }
187
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/core/artifact-graph/resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { type SchemaYaml } from './types.js';
2
+ export declare class SchemaValidationError extends Error {
3
+ constructor(message: string);
4
+ }
5
+ /**
6
+ * Loads and validates an artifact schema from a YAML file.
7
+ */
8
+ export declare function loadSchema(filePath: string): SchemaYaml;
9
+ /**
10
+ * Parses and validates an artifact schema from YAML content.
11
+ */
12
+ export declare function parseSchema(yamlContent: string): SchemaYaml;
13
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/core/artifact-graph/schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,UAAU,EAAiB,MAAM,YAAY,CAAC;AAE9E,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAGvD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,CAsB3D"}
@@ -0,0 +1,108 @@
1
+ import * as fs from 'node:fs';
2
+ import { parse as parseYaml } from 'yaml';
3
+ import { SchemaYamlSchema } from './types.js';
4
+ export class SchemaValidationError extends Error {
5
+ constructor(message) {
6
+ super(message);
7
+ this.name = 'SchemaValidationError';
8
+ }
9
+ }
10
+ /**
11
+ * Loads and validates an artifact schema from a YAML file.
12
+ */
13
+ export function loadSchema(filePath) {
14
+ const content = fs.readFileSync(filePath, 'utf-8');
15
+ return parseSchema(content);
16
+ }
17
+ /**
18
+ * Parses and validates an artifact schema from YAML content.
19
+ */
20
+ export function parseSchema(yamlContent) {
21
+ const parsed = parseYaml(yamlContent);
22
+ // Validate with Zod
23
+ const result = SchemaYamlSchema.safeParse(parsed);
24
+ if (!result.success) {
25
+ const errors = result.error.issues.map(e => `${e.path.join('.')}: ${e.message}`).join(', ');
26
+ throw new SchemaValidationError(`Invalid schema: ${errors}`);
27
+ }
28
+ const schema = result.data;
29
+ // Check for duplicate artifact IDs
30
+ validateNoDuplicateIds(schema.artifacts);
31
+ // Check that all requires references are valid
32
+ validateRequiresReferences(schema.artifacts);
33
+ // Check for cycles
34
+ validateNoCycles(schema.artifacts);
35
+ return schema;
36
+ }
37
+ /**
38
+ * Validates that there are no duplicate artifact IDs.
39
+ */
40
+ function validateNoDuplicateIds(artifacts) {
41
+ const seen = new Set();
42
+ for (const artifact of artifacts) {
43
+ if (seen.has(artifact.id)) {
44
+ throw new SchemaValidationError(`Duplicate artifact ID: ${artifact.id}`);
45
+ }
46
+ seen.add(artifact.id);
47
+ }
48
+ }
49
+ /**
50
+ * Validates that all `requires` references point to valid artifact IDs.
51
+ */
52
+ function validateRequiresReferences(artifacts) {
53
+ const validIds = new Set(artifacts.map(a => a.id));
54
+ for (const artifact of artifacts) {
55
+ for (const req of artifact.requires) {
56
+ if (!validIds.has(req)) {
57
+ throw new SchemaValidationError(`Invalid dependency reference in artifact '${artifact.id}': '${req}' does not exist`);
58
+ }
59
+ }
60
+ }
61
+ }
62
+ /**
63
+ * Validates that there are no cyclic dependencies.
64
+ * Uses DFS to detect cycles and reports the full cycle path.
65
+ */
66
+ function validateNoCycles(artifacts) {
67
+ const artifactMap = new Map(artifacts.map(a => [a.id, a]));
68
+ const visited = new Set();
69
+ const inStack = new Set();
70
+ const parent = new Map();
71
+ function dfs(id) {
72
+ visited.add(id);
73
+ inStack.add(id);
74
+ const artifact = artifactMap.get(id);
75
+ if (!artifact)
76
+ return null;
77
+ for (const dep of artifact.requires) {
78
+ if (!visited.has(dep)) {
79
+ parent.set(dep, id);
80
+ const cycle = dfs(dep);
81
+ if (cycle)
82
+ return cycle;
83
+ }
84
+ else if (inStack.has(dep)) {
85
+ // Found a cycle - reconstruct the path
86
+ const cyclePath = [dep];
87
+ let current = id;
88
+ while (current !== dep) {
89
+ cyclePath.unshift(current);
90
+ current = parent.get(current);
91
+ }
92
+ cyclePath.unshift(dep);
93
+ return cyclePath.join(' → ');
94
+ }
95
+ }
96
+ inStack.delete(id);
97
+ return null;
98
+ }
99
+ for (const artifact of artifacts) {
100
+ if (!visited.has(artifact.id)) {
101
+ const cycle = dfs(artifact.id);
102
+ if (cycle) {
103
+ throw new SchemaValidationError(`Cyclic dependency detected: ${cycle}`);
104
+ }
105
+ }
106
+ }
107
+ }
108
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/core/artifact-graph/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { CompletedSet } from './types.js';
2
+ import type { ArtifactGraph } from './graph.js';
3
+ /**
4
+ * Detects which artifacts are completed by checking file existence in the change directory.
5
+ * Returns a Set of completed artifact IDs.
6
+ *
7
+ * @param graph - The artifact graph to check
8
+ * @param changeDir - The change directory to scan for files
9
+ * @returns Set of artifact IDs whose generated files exist
10
+ */
11
+ export declare function detectCompleted(graph: ArtifactGraph, changeDir: string): CompletedSet;
12
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/core/artifact-graph/state.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,CAerF"}
@@ -0,0 +1,54 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ import fg from 'fast-glob';
4
+ import { FileSystemUtils } from '../../utils/file-system.js';
5
+ /**
6
+ * Detects which artifacts are completed by checking file existence in the change directory.
7
+ * Returns a Set of completed artifact IDs.
8
+ *
9
+ * @param graph - The artifact graph to check
10
+ * @param changeDir - The change directory to scan for files
11
+ * @returns Set of artifact IDs whose generated files exist
12
+ */
13
+ export function detectCompleted(graph, changeDir) {
14
+ const completed = new Set();
15
+ // Handle missing change directory gracefully
16
+ if (!fs.existsSync(changeDir)) {
17
+ return completed;
18
+ }
19
+ for (const artifact of graph.getAllArtifacts()) {
20
+ if (isArtifactComplete(artifact.generates, changeDir)) {
21
+ completed.add(artifact.id);
22
+ }
23
+ }
24
+ return completed;
25
+ }
26
+ /**
27
+ * Checks if an artifact is complete by checking if its generated file(s) exist.
28
+ * Supports both simple paths and glob patterns.
29
+ */
30
+ function isArtifactComplete(generates, changeDir) {
31
+ const fullPattern = path.join(changeDir, generates);
32
+ // Check if it's a glob pattern
33
+ if (isGlobPattern(generates)) {
34
+ return hasGlobMatches(fullPattern);
35
+ }
36
+ // Simple file path - check if file exists
37
+ return fs.existsSync(fullPattern);
38
+ }
39
+ /**
40
+ * Checks if a path contains glob pattern characters.
41
+ */
42
+ function isGlobPattern(pattern) {
43
+ return pattern.includes('*') || pattern.includes('?') || pattern.includes('[');
44
+ }
45
+ /**
46
+ * Checks if a glob pattern has any matches.
47
+ * Normalizes Windows backslashes to forward slashes for cross-platform glob compatibility.
48
+ */
49
+ function hasGlobMatches(pattern) {
50
+ const normalizedPattern = FileSystemUtils.toPosixPath(pattern);
51
+ const matches = fg.sync(normalizedPattern, { onlyFiles: true });
52
+ return matches.length > 0;
53
+ }
54
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/core/artifact-graph/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,WAAW,CAAC;AAG3B,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,KAAoB,EAAE,SAAiB;IACrE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAEpC,6CAA6C;IAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC;QAC/C,IAAI,kBAAkB,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;YACtD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,SAAiB,EAAE,SAAiB;IAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAEpD,+BAA+B;IAC/B,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAO,cAAc,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAED,0CAA0C;IAC1C,OAAO,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,OAAe;IACpC,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACjF,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAC,OAAe;IACrC,MAAM,iBAAiB,GAAG,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { z } from 'zod';
2
+ export declare const ArtifactSchema: z.ZodObject<{
3
+ id: z.ZodString;
4
+ generates: z.ZodString;
5
+ description: z.ZodString;
6
+ template: z.ZodString;
7
+ instruction: z.ZodOptional<z.ZodString>;
8
+ requires: z.ZodDefault<z.ZodArray<z.ZodString>>;
9
+ }, z.core.$strip>;
10
+ export declare const ApplyPhaseSchema: z.ZodObject<{
11
+ requires: z.ZodArray<z.ZodString>;
12
+ tracks: z.ZodOptional<z.ZodNullable<z.ZodString>>;
13
+ instruction: z.ZodOptional<z.ZodString>;
14
+ }, z.core.$strip>;
15
+ export declare const SchemaYamlSchema: z.ZodObject<{
16
+ name: z.ZodString;
17
+ version: z.ZodNumber;
18
+ description: z.ZodOptional<z.ZodString>;
19
+ artifacts: z.ZodArray<z.ZodObject<{
20
+ id: z.ZodString;
21
+ generates: z.ZodString;
22
+ description: z.ZodString;
23
+ template: z.ZodString;
24
+ instruction: z.ZodOptional<z.ZodString>;
25
+ requires: z.ZodDefault<z.ZodArray<z.ZodString>>;
26
+ }, z.core.$strip>>;
27
+ apply: z.ZodOptional<z.ZodObject<{
28
+ requires: z.ZodArray<z.ZodString>;
29
+ tracks: z.ZodOptional<z.ZodNullable<z.ZodString>>;
30
+ instruction: z.ZodOptional<z.ZodString>;
31
+ }, z.core.$strip>>;
32
+ }, z.core.$strip>;
33
+ export type Artifact = z.infer<typeof ArtifactSchema>;
34
+ export type ApplyPhase = z.infer<typeof ApplyPhaseSchema>;
35
+ export type SchemaYaml = z.infer<typeof SchemaYamlSchema>;
36
+ export declare const ChangeMetadataSchema: z.ZodObject<{
37
+ schema: z.ZodString;
38
+ created: z.ZodOptional<z.ZodString>;
39
+ }, z.core.$strip>;
40
+ export type ChangeMetadata = z.infer<typeof ChangeMetadataSchema>;
41
+ export type CompletedSet = Set<string>;
42
+ export interface BlockedArtifacts {
43
+ [artifactId: string]: string[];
44
+ }
45
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/artifact-graph/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,cAAc;;;;;;;iBAOzB,CAAC;AAGH,eAAO,MAAM,gBAAgB;;;;iBAO3B,CAAC;AAGH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;iBAO3B,CAAC;AAGH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAK1D,eAAO,MAAM,oBAAoB;;;iBAW/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAKlE,MAAM,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;AAGvC,MAAM,WAAW,gBAAgB;IAC/B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAChC"}
@@ -0,0 +1,43 @@
1
+ import { z } from 'zod';
2
+ // Artifact definition schema
3
+ export const ArtifactSchema = z.object({
4
+ id: z.string().min(1, { error: 'Artifact ID is required' }),
5
+ generates: z.string().min(1, { error: 'generates field is required' }),
6
+ description: z.string(),
7
+ template: z.string().min(1, { error: 'template field is required' }),
8
+ instruction: z.string().optional(),
9
+ requires: z.array(z.string()).default([]),
10
+ });
11
+ // Apply phase configuration for schema-aware apply instructions
12
+ export const ApplyPhaseSchema = z.object({
13
+ // Artifact IDs that must exist before apply is available
14
+ requires: z.array(z.string()).min(1, { error: 'At least one required artifact' }),
15
+ // Path to file with checkboxes for progress (relative to change dir), or null if no tracking
16
+ tracks: z.string().nullable().optional(),
17
+ // Custom guidance for the apply phase
18
+ instruction: z.string().optional(),
19
+ });
20
+ // Full schema YAML structure
21
+ export const SchemaYamlSchema = z.object({
22
+ name: z.string().min(1, { error: 'Schema name is required' }),
23
+ version: z.number().int().positive({ error: 'Version must be a positive integer' }),
24
+ description: z.string().optional(),
25
+ artifacts: z.array(ArtifactSchema).min(1, { error: 'At least one artifact required' }),
26
+ // Optional apply phase configuration (for schema-aware apply instructions)
27
+ apply: ApplyPhaseSchema.optional(),
28
+ });
29
+ // Per-change metadata schema
30
+ // Note: schema field is validated at parse time against available schemas
31
+ // using a lazy import to avoid circular dependencies
32
+ export const ChangeMetadataSchema = z.object({
33
+ // Required: which workflow schema this change uses
34
+ schema: z.string().min(1, { message: 'schema is required' }),
35
+ // Optional: creation timestamp (ISO date string)
36
+ created: z
37
+ .string()
38
+ .regex(/^\d{4}-\d{2}-\d{2}$/, {
39
+ message: 'created must be YYYY-MM-DD format',
40
+ })
41
+ .optional(),
42
+ });
43
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/artifact-graph/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,6BAA6B;AAC7B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;IAC3D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC;IACtE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;IACpE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC1C,CAAC,CAAC;AAEH,gEAAgE;AAChE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,yDAAyD;IACzD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC;IACjF,6FAA6F;IAC7F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACxC,sCAAsC;IACtC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAEH,6BAA6B;AAC7B,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;IAC7D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC;IACnF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC;IACtF,2EAA2E;IAC3E,KAAK,EAAE,gBAAgB,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAOH,6BAA6B;AAC7B,0EAA0E;AAC1E,qDAAqD;AACrD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,mDAAmD;IACnD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAE5D,iDAAiD;IACjD,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,KAAK,CAAC,qBAAqB,EAAE;QAC5B,OAAO,EAAE,mCAAmC;KAC7C,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { CommandDefinition } from './types.js';
2
+ /**
3
+ * Registry of all Prompter CLI commands with their flags and metadata.
4
+ * This registry is used to generate shell completion scripts.
5
+ */
6
+ export declare const COMMAND_REGISTRY: CommandDefinition[];
7
+ //# sourceMappingURL=command-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-registry.d.ts","sourceRoot":"","sources":["../../../src/core/completions/command-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAkB,MAAM,YAAY,CAAC;AA8B/D;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,iBAAiB,EA2V/C,CAAC"}