@codewalla_india/openspec 1.0.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 (356) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +225 -0
  3. package/bin/openspec.js +5 -0
  4. package/dist/cli/index.d.ts +10 -0
  5. package/dist/cli/index.js +548 -0
  6. package/dist/commands/change.d.ts +39 -0
  7. package/dist/commands/change.js +279 -0
  8. package/dist/commands/completion.d.ts +72 -0
  9. package/dist/commands/completion.js +264 -0
  10. package/dist/commands/config.d.ts +36 -0
  11. package/dist/commands/config.js +552 -0
  12. package/dist/commands/context.d.ts +3 -0
  13. package/dist/commands/context.js +155 -0
  14. package/dist/commands/doctor.d.ts +8 -0
  15. package/dist/commands/doctor.js +163 -0
  16. package/dist/commands/feedback.d.ts +9 -0
  17. package/dist/commands/feedback.js +183 -0
  18. package/dist/commands/schema.d.ts +6 -0
  19. package/dist/commands/schema.js +869 -0
  20. package/dist/commands/shared-gather.d.ts +14 -0
  21. package/dist/commands/shared-gather.js +31 -0
  22. package/dist/commands/shared-output.d.ts +18 -0
  23. package/dist/commands/shared-output.js +61 -0
  24. package/dist/commands/show.d.ts +19 -0
  25. package/dist/commands/show.js +177 -0
  26. package/dist/commands/spec.d.ts +19 -0
  27. package/dist/commands/spec.js +236 -0
  28. package/dist/commands/store.d.ts +3 -0
  29. package/dist/commands/store.js +547 -0
  30. package/dist/commands/validate.d.ts +26 -0
  31. package/dist/commands/validate.js +330 -0
  32. package/dist/commands/workflow/index.d.ts +17 -0
  33. package/dist/commands/workflow/index.js +12 -0
  34. package/dist/commands/workflow/instructions.d.ts +45 -0
  35. package/dist/commands/workflow/instructions.js +500 -0
  36. package/dist/commands/workflow/new-change.d.ts +20 -0
  37. package/dist/commands/workflow/new-change.js +106 -0
  38. package/dist/commands/workflow/schemas.d.ts +10 -0
  39. package/dist/commands/workflow/schemas.js +34 -0
  40. package/dist/commands/workflow/shared.d.ts +84 -0
  41. package/dist/commands/workflow/shared.js +133 -0
  42. package/dist/commands/workflow/status.d.ts +16 -0
  43. package/dist/commands/workflow/status.js +92 -0
  44. package/dist/commands/workflow/templates.d.ts +16 -0
  45. package/dist/commands/workflow/templates.js +69 -0
  46. package/dist/commands/workset-input.d.ts +19 -0
  47. package/dist/commands/workset-input.js +112 -0
  48. package/dist/commands/workset-prompts.d.ts +12 -0
  49. package/dist/commands/workset-prompts.js +143 -0
  50. package/dist/commands/workset.d.ts +25 -0
  51. package/dist/commands/workset.js +446 -0
  52. package/dist/core/archive.d.ts +22 -0
  53. package/dist/core/archive.js +471 -0
  54. package/dist/core/artifact-graph/graph.d.ts +56 -0
  55. package/dist/core/artifact-graph/graph.js +141 -0
  56. package/dist/core/artifact-graph/index.d.ts +9 -0
  57. package/dist/core/artifact-graph/index.js +14 -0
  58. package/dist/core/artifact-graph/instruction-loader.d.ts +188 -0
  59. package/dist/core/artifact-graph/instruction-loader.js +233 -0
  60. package/dist/core/artifact-graph/outputs.d.ts +14 -0
  61. package/dist/core/artifact-graph/outputs.js +39 -0
  62. package/dist/core/artifact-graph/resolver.d.ts +81 -0
  63. package/dist/core/artifact-graph/resolver.js +257 -0
  64. package/dist/core/artifact-graph/schema.d.ts +13 -0
  65. package/dist/core/artifact-graph/schema.js +108 -0
  66. package/dist/core/artifact-graph/state.d.ts +12 -0
  67. package/dist/core/artifact-graph/state.js +31 -0
  68. package/dist/core/artifact-graph/types.d.ts +40 -0
  69. package/dist/core/artifact-graph/types.js +29 -0
  70. package/dist/core/available-tools.d.ts +17 -0
  71. package/dist/core/available-tools.js +43 -0
  72. package/dist/core/change-metadata/index.d.ts +2 -0
  73. package/dist/core/change-metadata/index.js +2 -0
  74. package/dist/core/change-metadata/schema.d.ts +19 -0
  75. package/dist/core/change-metadata/schema.js +30 -0
  76. package/dist/core/change-status-policy.d.ts +37 -0
  77. package/dist/core/change-status-policy.js +35 -0
  78. package/dist/core/command-generation/adapters/amazon-q.d.ts +13 -0
  79. package/dist/core/command-generation/adapters/amazon-q.js +26 -0
  80. package/dist/core/command-generation/adapters/antigravity.d.ts +13 -0
  81. package/dist/core/command-generation/adapters/antigravity.js +26 -0
  82. package/dist/core/command-generation/adapters/auggie.d.ts +13 -0
  83. package/dist/core/command-generation/adapters/auggie.js +27 -0
  84. package/dist/core/command-generation/adapters/bob.d.ts +14 -0
  85. package/dist/core/command-generation/adapters/bob.js +32 -0
  86. package/dist/core/command-generation/adapters/claude.d.ts +13 -0
  87. package/dist/core/command-generation/adapters/claude.js +37 -0
  88. package/dist/core/command-generation/adapters/cline.d.ts +14 -0
  89. package/dist/core/command-generation/adapters/cline.js +27 -0
  90. package/dist/core/command-generation/adapters/codebuddy.d.ts +13 -0
  91. package/dist/core/command-generation/adapters/codebuddy.js +28 -0
  92. package/dist/core/command-generation/adapters/codex.d.ts +16 -0
  93. package/dist/core/command-generation/adapters/codex.js +39 -0
  94. package/dist/core/command-generation/adapters/continue.d.ts +13 -0
  95. package/dist/core/command-generation/adapters/continue.js +28 -0
  96. package/dist/core/command-generation/adapters/costrict.d.ts +13 -0
  97. package/dist/core/command-generation/adapters/costrict.js +27 -0
  98. package/dist/core/command-generation/adapters/crush.d.ts +13 -0
  99. package/dist/core/command-generation/adapters/crush.js +30 -0
  100. package/dist/core/command-generation/adapters/cursor.d.ts +14 -0
  101. package/dist/core/command-generation/adapters/cursor.js +31 -0
  102. package/dist/core/command-generation/adapters/factory.d.ts +13 -0
  103. package/dist/core/command-generation/adapters/factory.js +27 -0
  104. package/dist/core/command-generation/adapters/gemini.d.ts +13 -0
  105. package/dist/core/command-generation/adapters/gemini.js +26 -0
  106. package/dist/core/command-generation/adapters/github-copilot.d.ts +13 -0
  107. package/dist/core/command-generation/adapters/github-copilot.js +26 -0
  108. package/dist/core/command-generation/adapters/iflow.d.ts +13 -0
  109. package/dist/core/command-generation/adapters/iflow.js +29 -0
  110. package/dist/core/command-generation/adapters/index.d.ts +32 -0
  111. package/dist/core/command-generation/adapters/index.js +32 -0
  112. package/dist/core/command-generation/adapters/junie.d.ts +13 -0
  113. package/dist/core/command-generation/adapters/junie.js +26 -0
  114. package/dist/core/command-generation/adapters/kilocode.d.ts +14 -0
  115. package/dist/core/command-generation/adapters/kilocode.js +23 -0
  116. package/dist/core/command-generation/adapters/kiro.d.ts +13 -0
  117. package/dist/core/command-generation/adapters/kiro.js +26 -0
  118. package/dist/core/command-generation/adapters/lingma.d.ts +13 -0
  119. package/dist/core/command-generation/adapters/lingma.js +30 -0
  120. package/dist/core/command-generation/adapters/opencode.d.ts +13 -0
  121. package/dist/core/command-generation/adapters/opencode.js +29 -0
  122. package/dist/core/command-generation/adapters/pi.d.ts +18 -0
  123. package/dist/core/command-generation/adapters/pi.js +42 -0
  124. package/dist/core/command-generation/adapters/qoder.d.ts +13 -0
  125. package/dist/core/command-generation/adapters/qoder.js +30 -0
  126. package/dist/core/command-generation/adapters/qwen.d.ts +13 -0
  127. package/dist/core/command-generation/adapters/qwen.js +26 -0
  128. package/dist/core/command-generation/adapters/roocode.d.ts +14 -0
  129. package/dist/core/command-generation/adapters/roocode.js +27 -0
  130. package/dist/core/command-generation/adapters/windsurf.d.ts +14 -0
  131. package/dist/core/command-generation/adapters/windsurf.js +38 -0
  132. package/dist/core/command-generation/generator.d.ts +21 -0
  133. package/dist/core/command-generation/generator.js +27 -0
  134. package/dist/core/command-generation/index.d.ts +22 -0
  135. package/dist/core/command-generation/index.js +24 -0
  136. package/dist/core/command-generation/registry.d.ts +36 -0
  137. package/dist/core/command-generation/registry.js +98 -0
  138. package/dist/core/command-generation/types.d.ts +56 -0
  139. package/dist/core/command-generation/types.js +8 -0
  140. package/dist/core/command-generation/yaml.d.ts +22 -0
  141. package/dist/core/command-generation/yaml.js +38 -0
  142. package/dist/core/completions/command-registry.d.ts +3 -0
  143. package/dist/core/completions/command-registry.js +778 -0
  144. package/dist/core/completions/completion-provider.d.ts +71 -0
  145. package/dist/core/completions/completion-provider.js +129 -0
  146. package/dist/core/completions/factory.d.ts +64 -0
  147. package/dist/core/completions/factory.js +75 -0
  148. package/dist/core/completions/generators/bash-generator.d.ts +35 -0
  149. package/dist/core/completions/generators/bash-generator.js +230 -0
  150. package/dist/core/completions/generators/fish-generator.d.ts +32 -0
  151. package/dist/core/completions/generators/fish-generator.js +160 -0
  152. package/dist/core/completions/generators/powershell-generator.d.ts +36 -0
  153. package/dist/core/completions/generators/powershell-generator.js +266 -0
  154. package/dist/core/completions/generators/zsh-generator.d.ts +47 -0
  155. package/dist/core/completions/generators/zsh-generator.js +276 -0
  156. package/dist/core/completions/installers/bash-installer.d.ts +87 -0
  157. package/dist/core/completions/installers/bash-installer.js +321 -0
  158. package/dist/core/completions/installers/fish-installer.d.ts +43 -0
  159. package/dist/core/completions/installers/fish-installer.js +151 -0
  160. package/dist/core/completions/installers/powershell-installer.d.ts +102 -0
  161. package/dist/core/completions/installers/powershell-installer.js +415 -0
  162. package/dist/core/completions/installers/zsh-installer.d.ts +117 -0
  163. package/dist/core/completions/installers/zsh-installer.js +424 -0
  164. package/dist/core/completions/shared-flags.d.ts +13 -0
  165. package/dist/core/completions/shared-flags.js +33 -0
  166. package/dist/core/completions/templates/bash-templates.d.ts +6 -0
  167. package/dist/core/completions/templates/bash-templates.js +30 -0
  168. package/dist/core/completions/templates/fish-templates.d.ts +7 -0
  169. package/dist/core/completions/templates/fish-templates.js +45 -0
  170. package/dist/core/completions/templates/powershell-templates.d.ts +6 -0
  171. package/dist/core/completions/templates/powershell-templates.js +34 -0
  172. package/dist/core/completions/templates/zsh-templates.d.ts +6 -0
  173. package/dist/core/completions/templates/zsh-templates.js +45 -0
  174. package/dist/core/completions/types.d.ts +101 -0
  175. package/dist/core/completions/types.js +2 -0
  176. package/dist/core/comprehension/config.d.ts +20 -0
  177. package/dist/core/comprehension/config.js +23 -0
  178. package/dist/core/comprehension/fingerprint.d.ts +5 -0
  179. package/dist/core/comprehension/fingerprint.js +25 -0
  180. package/dist/core/comprehension/index.d.ts +49 -0
  181. package/dist/core/comprehension/index.js +78 -0
  182. package/dist/core/comprehension/pass-record.d.ts +29 -0
  183. package/dist/core/comprehension/pass-record.js +64 -0
  184. package/dist/core/comprehension/stats.d.ts +18 -0
  185. package/dist/core/comprehension/stats.js +41 -0
  186. package/dist/core/config-prompts.d.ts +9 -0
  187. package/dist/core/config-prompts.js +34 -0
  188. package/dist/core/config-schema.d.ts +87 -0
  189. package/dist/core/config-schema.js +239 -0
  190. package/dist/core/config.d.ts +18 -0
  191. package/dist/core/config.js +39 -0
  192. package/dist/core/converters/json-converter.d.ts +6 -0
  193. package/dist/core/converters/json-converter.js +51 -0
  194. package/dist/core/file-state.d.ts +36 -0
  195. package/dist/core/file-state.js +112 -0
  196. package/dist/core/global-config.d.ts +51 -0
  197. package/dist/core/global-config.js +124 -0
  198. package/dist/core/id.d.ts +17 -0
  199. package/dist/core/id.js +30 -0
  200. package/dist/core/index.d.ts +6 -0
  201. package/dist/core/index.js +7 -0
  202. package/dist/core/init.d.ts +37 -0
  203. package/dist/core/init.js +613 -0
  204. package/dist/core/legacy-cleanup.d.ts +162 -0
  205. package/dist/core/legacy-cleanup.js +514 -0
  206. package/dist/core/list.d.ts +11 -0
  207. package/dist/core/list.js +185 -0
  208. package/dist/core/migration.d.ts +23 -0
  209. package/dist/core/migration.js +108 -0
  210. package/dist/core/openers.d.ts +77 -0
  211. package/dist/core/openers.js +251 -0
  212. package/dist/core/openspec-root.d.ts +45 -0
  213. package/dist/core/openspec-root.js +192 -0
  214. package/dist/core/parsers/change-parser.d.ts +13 -0
  215. package/dist/core/parsers/change-parser.js +197 -0
  216. package/dist/core/parsers/markdown-parser.d.ts +26 -0
  217. package/dist/core/parsers/markdown-parser.js +227 -0
  218. package/dist/core/parsers/requirement-blocks.d.ts +37 -0
  219. package/dist/core/parsers/requirement-blocks.js +201 -0
  220. package/dist/core/parsers/spec-structure.d.ts +9 -0
  221. package/dist/core/parsers/spec-structure.js +88 -0
  222. package/dist/core/planning-home.d.ts +16 -0
  223. package/dist/core/planning-home.js +67 -0
  224. package/dist/core/profile-sync-drift.d.ts +38 -0
  225. package/dist/core/profile-sync-drift.js +200 -0
  226. package/dist/core/profiles.d.ts +26 -0
  227. package/dist/core/profiles.js +40 -0
  228. package/dist/core/project-config.d.ts +120 -0
  229. package/dist/core/project-config.js +406 -0
  230. package/dist/core/references.d.ts +63 -0
  231. package/dist/core/references.js +310 -0
  232. package/dist/core/relationship-health.d.ts +65 -0
  233. package/dist/core/relationship-health.js +64 -0
  234. package/dist/core/root-selection.d.ts +122 -0
  235. package/dist/core/root-selection.js +337 -0
  236. package/dist/core/schemas/base.schema.d.ts +13 -0
  237. package/dist/core/schemas/base.schema.js +13 -0
  238. package/dist/core/schemas/change.schema.d.ts +73 -0
  239. package/dist/core/schemas/change.schema.js +31 -0
  240. package/dist/core/schemas/index.d.ts +4 -0
  241. package/dist/core/schemas/index.js +4 -0
  242. package/dist/core/schemas/spec.schema.d.ts +18 -0
  243. package/dist/core/schemas/spec.schema.js +15 -0
  244. package/dist/core/shared/index.d.ts +8 -0
  245. package/dist/core/shared/index.js +8 -0
  246. package/dist/core/shared/skill-generation.d.ts +49 -0
  247. package/dist/core/shared/skill-generation.js +96 -0
  248. package/dist/core/shared/tool-detection.d.ts +71 -0
  249. package/dist/core/shared/tool-detection.js +158 -0
  250. package/dist/core/specs-apply.d.ts +78 -0
  251. package/dist/core/specs-apply.js +394 -0
  252. package/dist/core/store/errors.d.ts +20 -0
  253. package/dist/core/store/errors.js +22 -0
  254. package/dist/core/store/foundation.d.ts +56 -0
  255. package/dist/core/store/foundation.js +251 -0
  256. package/dist/core/store/git.d.ts +23 -0
  257. package/dist/core/store/git.js +137 -0
  258. package/dist/core/store/index.d.ts +5 -0
  259. package/dist/core/store/index.js +5 -0
  260. package/dist/core/store/operations.d.ts +114 -0
  261. package/dist/core/store/operations.js +783 -0
  262. package/dist/core/store/registry.d.ts +58 -0
  263. package/dist/core/store/registry.js +275 -0
  264. package/dist/core/styles/palette.d.ts +7 -0
  265. package/dist/core/styles/palette.js +8 -0
  266. package/dist/core/templates/index.d.ts +8 -0
  267. package/dist/core/templates/index.js +9 -0
  268. package/dist/core/templates/skill-templates.d.ts +19 -0
  269. package/dist/core/templates/skill-templates.js +18 -0
  270. package/dist/core/templates/types.d.ts +19 -0
  271. package/dist/core/templates/types.js +5 -0
  272. package/dist/core/templates/workflows/apply-change.d.ts +10 -0
  273. package/dist/core/templates/workflows/apply-change.js +337 -0
  274. package/dist/core/templates/workflows/archive-change.d.ts +10 -0
  275. package/dist/core/templates/workflows/archive-change.js +278 -0
  276. package/dist/core/templates/workflows/bulk-archive-change.d.ts +10 -0
  277. package/dist/core/templates/workflows/bulk-archive-change.js +493 -0
  278. package/dist/core/templates/workflows/comprehension-guidance.d.ts +9 -0
  279. package/dist/core/templates/workflows/comprehension-guidance.js +58 -0
  280. package/dist/core/templates/workflows/continue-change.d.ts +10 -0
  281. package/dist/core/templates/workflows/continue-change.js +239 -0
  282. package/dist/core/templates/workflows/explore.d.ts +10 -0
  283. package/dist/core/templates/workflows/explore.js +464 -0
  284. package/dist/core/templates/workflows/feedback.d.ts +9 -0
  285. package/dist/core/templates/workflows/feedback.js +108 -0
  286. package/dist/core/templates/workflows/ff-change.d.ts +10 -0
  287. package/dist/core/templates/workflows/ff-change.js +205 -0
  288. package/dist/core/templates/workflows/mcp-guidance.d.ts +13 -0
  289. package/dist/core/templates/workflows/mcp-guidance.js +116 -0
  290. package/dist/core/templates/workflows/new-change.d.ts +10 -0
  291. package/dist/core/templates/workflows/new-change.js +148 -0
  292. package/dist/core/templates/workflows/onboard.d.ts +10 -0
  293. package/dist/core/templates/workflows/onboard.js +566 -0
  294. package/dist/core/templates/workflows/propose.d.ts +10 -0
  295. package/dist/core/templates/workflows/propose.js +228 -0
  296. package/dist/core/templates/workflows/store-selection.d.ts +8 -0
  297. package/dist/core/templates/workflows/store-selection.js +8 -0
  298. package/dist/core/templates/workflows/sync-specs.d.ts +10 -0
  299. package/dist/core/templates/workflows/sync-specs.js +291 -0
  300. package/dist/core/templates/workflows/verify-change.d.ts +10 -0
  301. package/dist/core/templates/workflows/verify-change.js +346 -0
  302. package/dist/core/update.d.ts +82 -0
  303. package/dist/core/update.js +557 -0
  304. package/dist/core/validation/constants.d.ts +34 -0
  305. package/dist/core/validation/constants.js +40 -0
  306. package/dist/core/validation/types.d.ts +18 -0
  307. package/dist/core/validation/types.js +2 -0
  308. package/dist/core/validation/validator.d.ts +44 -0
  309. package/dist/core/validation/validator.js +435 -0
  310. package/dist/core/view.d.ts +8 -0
  311. package/dist/core/view.js +168 -0
  312. package/dist/core/working-set.d.ts +47 -0
  313. package/dist/core/working-set.js +43 -0
  314. package/dist/core/worksets.d.ts +75 -0
  315. package/dist/core/worksets.js +245 -0
  316. package/dist/core/zod-issues.d.ts +4 -0
  317. package/dist/core/zod-issues.js +10 -0
  318. package/dist/index.d.ts +3 -0
  319. package/dist/index.js +3 -0
  320. package/dist/prompts/searchable-multi-select.d.ts +28 -0
  321. package/dist/prompts/searchable-multi-select.js +159 -0
  322. package/dist/telemetry/config.d.ts +38 -0
  323. package/dist/telemetry/config.js +136 -0
  324. package/dist/telemetry/index.d.ts +31 -0
  325. package/dist/telemetry/index.js +164 -0
  326. package/dist/ui/ascii-patterns.d.ts +16 -0
  327. package/dist/ui/ascii-patterns.js +133 -0
  328. package/dist/ui/welcome-screen.d.ts +10 -0
  329. package/dist/ui/welcome-screen.js +146 -0
  330. package/dist/utils/change-metadata.d.ts +55 -0
  331. package/dist/utils/change-metadata.js +141 -0
  332. package/dist/utils/change-utils.d.ts +71 -0
  333. package/dist/utils/change-utils.js +138 -0
  334. package/dist/utils/command-references.d.ts +18 -0
  335. package/dist/utils/command-references.js +20 -0
  336. package/dist/utils/file-system.d.ts +41 -0
  337. package/dist/utils/file-system.js +320 -0
  338. package/dist/utils/index.d.ts +6 -0
  339. package/dist/utils/index.js +9 -0
  340. package/dist/utils/interactive.d.ts +18 -0
  341. package/dist/utils/interactive.js +21 -0
  342. package/dist/utils/item-discovery.d.ts +4 -0
  343. package/dist/utils/item-discovery.js +72 -0
  344. package/dist/utils/match.d.ts +3 -0
  345. package/dist/utils/match.js +22 -0
  346. package/dist/utils/shell-detection.d.ts +20 -0
  347. package/dist/utils/shell-detection.js +41 -0
  348. package/dist/utils/task-progress.d.ts +8 -0
  349. package/dist/utils/task-progress.js +36 -0
  350. package/package.json +84 -0
  351. package/schemas/spec-driven/schema.yaml +153 -0
  352. package/schemas/spec-driven/templates/design.md +19 -0
  353. package/schemas/spec-driven/templates/proposal.md +23 -0
  354. package/schemas/spec-driven/templates/spec.md +8 -0
  355. package/schemas/spec-driven/templates/tasks.md +9 -0
  356. package/scripts/postinstall.js +83 -0
@@ -0,0 +1,778 @@
1
+ import { COMMON_FLAGS } from './shared-flags.js';
2
+ export const COMMAND_REGISTRY = [
3
+ {
4
+ name: 'init',
5
+ description: 'Initialize OpenSpec in your project',
6
+ acceptsPositional: true,
7
+ positionalType: 'path',
8
+ positionals: [{ name: 'path', type: 'path', optional: true }],
9
+ flags: [
10
+ {
11
+ name: 'tools',
12
+ description: 'Configure AI tools non-interactively (e.g., "all", "none", or comma-separated tool IDs)',
13
+ takesValue: true,
14
+ },
15
+ {
16
+ name: 'force',
17
+ description: 'Auto-cleanup legacy files without prompting',
18
+ },
19
+ {
20
+ name: 'profile',
21
+ description: 'Override global config profile (core or custom)',
22
+ takesValue: true,
23
+ values: ['core', 'custom'],
24
+ },
25
+ ],
26
+ },
27
+ {
28
+ name: 'update',
29
+ description: 'Update OpenSpec instruction files',
30
+ acceptsPositional: true,
31
+ positionalType: 'path',
32
+ positionals: [{ name: 'path', type: 'path', optional: true }],
33
+ flags: [
34
+ {
35
+ name: 'force',
36
+ description: 'Force update even when tools are up to date',
37
+ },
38
+ ],
39
+ },
40
+ {
41
+ name: 'list',
42
+ description: 'List items (changes by default, or specs with --specs)',
43
+ flags: [
44
+ {
45
+ name: 'specs',
46
+ description: 'List specs instead of changes',
47
+ },
48
+ {
49
+ name: 'changes',
50
+ description: 'List changes explicitly (default)',
51
+ },
52
+ {
53
+ name: 'sort',
54
+ description: 'Sort order: "recent" (default) or "name"',
55
+ takesValue: true,
56
+ values: ['recent', 'name'],
57
+ },
58
+ COMMON_FLAGS.json,
59
+ COMMON_FLAGS.store,
60
+ ],
61
+ },
62
+ {
63
+ name: 'view',
64
+ description: 'Display an interactive dashboard of specs and changes',
65
+ flags: [],
66
+ },
67
+ {
68
+ name: 'validate',
69
+ description: 'Validate changes and specs',
70
+ acceptsPositional: true,
71
+ positionalType: 'change-or-spec-id',
72
+ positionals: [{ name: 'item-name', type: 'change-or-spec-id', optional: true }],
73
+ flags: [
74
+ {
75
+ name: 'all',
76
+ description: 'Validate all changes and specs',
77
+ },
78
+ {
79
+ name: 'changes',
80
+ description: 'Validate all changes',
81
+ },
82
+ {
83
+ name: 'specs',
84
+ description: 'Validate all specs',
85
+ },
86
+ COMMON_FLAGS.type,
87
+ COMMON_FLAGS.strict,
88
+ COMMON_FLAGS.jsonValidation,
89
+ {
90
+ name: 'concurrency',
91
+ description: 'Max concurrent validations (defaults to env OPENSPEC_CONCURRENCY or 6)',
92
+ takesValue: true,
93
+ },
94
+ COMMON_FLAGS.noInteractive,
95
+ COMMON_FLAGS.store,
96
+ ],
97
+ },
98
+ {
99
+ name: 'show',
100
+ description: 'Show a change or spec',
101
+ acceptsPositional: true,
102
+ positionalType: 'change-or-spec-id',
103
+ positionals: [{ name: 'item-name', type: 'change-or-spec-id', optional: true }],
104
+ flags: [
105
+ COMMON_FLAGS.json,
106
+ COMMON_FLAGS.type,
107
+ COMMON_FLAGS.noInteractive,
108
+ {
109
+ name: 'deltas-only',
110
+ description: 'Show only deltas (JSON only, change-specific)',
111
+ },
112
+ {
113
+ name: 'requirements-only',
114
+ description: 'Alias for --deltas-only (deprecated, change-specific)',
115
+ },
116
+ {
117
+ name: 'requirements',
118
+ description: 'Show only requirements, exclude scenarios (JSON only, spec-specific)',
119
+ },
120
+ {
121
+ name: 'no-scenarios',
122
+ description: 'Exclude scenario content (JSON only, spec-specific)',
123
+ },
124
+ {
125
+ name: 'requirement',
126
+ short: 'r',
127
+ description: 'Show specific requirement by ID (JSON only, spec-specific)',
128
+ takesValue: true,
129
+ },
130
+ COMMON_FLAGS.store,
131
+ ],
132
+ },
133
+ {
134
+ name: 'archive',
135
+ description: 'Archive a completed change and update main specs',
136
+ acceptsPositional: true,
137
+ positionalType: 'change-id',
138
+ positionals: [{ name: 'change-name', type: 'change-id', optional: true }],
139
+ flags: [
140
+ {
141
+ name: 'yes',
142
+ short: 'y',
143
+ description: 'Skip confirmation prompts',
144
+ },
145
+ {
146
+ name: 'skip-specs',
147
+ description: 'Skip spec update operations',
148
+ },
149
+ {
150
+ name: 'no-validate',
151
+ description: 'Skip validation (not recommended)',
152
+ },
153
+ {
154
+ name: 'json',
155
+ description: 'Output as JSON (non-interactive)',
156
+ },
157
+ COMMON_FLAGS.store,
158
+ ],
159
+ },
160
+ {
161
+ name: 'status',
162
+ description: 'Display artifact completion status for a change',
163
+ flags: [
164
+ {
165
+ name: 'change',
166
+ description: 'Change name to show status for',
167
+ takesValue: true,
168
+ },
169
+ {
170
+ name: 'schema',
171
+ description: 'Schema override',
172
+ takesValue: true,
173
+ },
174
+ COMMON_FLAGS.json,
175
+ COMMON_FLAGS.store,
176
+ ],
177
+ },
178
+ {
179
+ name: 'instructions',
180
+ description: 'Output enriched instructions for creating an artifact or applying tasks',
181
+ acceptsPositional: true,
182
+ positionals: [{ name: 'artifact', optional: true }],
183
+ flags: [
184
+ {
185
+ name: 'change',
186
+ description: 'Change name',
187
+ takesValue: true,
188
+ },
189
+ {
190
+ name: 'schema',
191
+ description: 'Schema override',
192
+ takesValue: true,
193
+ },
194
+ COMMON_FLAGS.json,
195
+ {
196
+ name: 'record-comprehension-pass',
197
+ description: 'Record a successful comprehension quiz pass (use with instructions apply)',
198
+ },
199
+ {
200
+ name: 'score',
201
+ description: 'Quiz score 0-100 (required with --record-comprehension-pass)',
202
+ takesValue: true,
203
+ },
204
+ {
205
+ name: 'attempt',
206
+ description: 'Quiz attempt number',
207
+ takesValue: true,
208
+ },
209
+ {
210
+ name: 'question-count',
211
+ description: 'Number of quiz questions taken',
212
+ takesValue: true,
213
+ },
214
+ COMMON_FLAGS.store,
215
+ ],
216
+ },
217
+ {
218
+ name: 'templates',
219
+ description: 'Show resolved template paths for all artifacts in a schema',
220
+ flags: [
221
+ {
222
+ name: 'schema',
223
+ description: 'Schema to use',
224
+ takesValue: true,
225
+ },
226
+ COMMON_FLAGS.json,
227
+ ],
228
+ },
229
+ {
230
+ name: 'schemas',
231
+ description: 'List available workflow schemas with descriptions',
232
+ flags: [
233
+ COMMON_FLAGS.json,
234
+ ],
235
+ },
236
+ {
237
+ name: 'new',
238
+ description: 'Create new items',
239
+ flags: [],
240
+ subcommands: [
241
+ {
242
+ name: 'change',
243
+ description: 'Create a new change directory',
244
+ acceptsPositional: true,
245
+ positionals: [{ name: 'name' }],
246
+ flags: [
247
+ {
248
+ name: 'description',
249
+ description: 'Description to add to README.md',
250
+ takesValue: true,
251
+ },
252
+ {
253
+ name: 'goal',
254
+ description: 'Optional goal metadata to store with the change',
255
+ takesValue: true,
256
+ },
257
+ {
258
+ name: 'schema',
259
+ description: 'Workflow schema to use',
260
+ takesValue: true,
261
+ },
262
+ COMMON_FLAGS.json,
263
+ COMMON_FLAGS.store,
264
+ ],
265
+ },
266
+ ],
267
+ },
268
+ {
269
+ name: 'store',
270
+ description: 'Create and manage stores - standalone OpenSpec repos you register on this machine',
271
+ flags: [],
272
+ subcommands: [
273
+ {
274
+ name: 'setup',
275
+ description: 'Create or register a local store',
276
+ acceptsPositional: true,
277
+ positionals: [{ name: 'id', optional: true }],
278
+ flags: [
279
+ {
280
+ name: 'path',
281
+ description: 'Directory to use for the store',
282
+ takesValue: true,
283
+ },
284
+ {
285
+ name: 'init-git',
286
+ description: 'Initialize a Git repository in the store',
287
+ },
288
+ {
289
+ name: 'no-init-git',
290
+ description: 'Skip Git repository initialization',
291
+ },
292
+ {
293
+ name: 'remote',
294
+ description: 'Canonical clone source recorded in store.yaml',
295
+ takesValue: true,
296
+ },
297
+ COMMON_FLAGS.json,
298
+ ],
299
+ },
300
+ {
301
+ name: 'register',
302
+ description: 'Register an existing store directory',
303
+ acceptsPositional: true,
304
+ positionals: [{ name: 'path', type: 'path', optional: true }],
305
+ flags: [
306
+ {
307
+ name: 'id',
308
+ description: 'Store id',
309
+ takesValue: true,
310
+ },
311
+ {
312
+ name: 'yes',
313
+ description: 'Confirm creating store identity metadata',
314
+ },
315
+ COMMON_FLAGS.json,
316
+ ],
317
+ },
318
+ {
319
+ name: 'unregister',
320
+ description: 'Forget a local store registration without deleting files',
321
+ acceptsPositional: true,
322
+ positionals: [{ name: 'id' }],
323
+ flags: [
324
+ COMMON_FLAGS.json,
325
+ ],
326
+ },
327
+ {
328
+ name: 'remove',
329
+ description: 'Forget a local store registration and delete its local folder',
330
+ acceptsPositional: true,
331
+ positionals: [{ name: 'id' }],
332
+ flags: [
333
+ {
334
+ name: 'yes',
335
+ description: 'Confirm local store folder deletion',
336
+ },
337
+ COMMON_FLAGS.json,
338
+ ],
339
+ },
340
+ {
341
+ name: 'list',
342
+ description: 'List registered stores',
343
+ flags: [
344
+ COMMON_FLAGS.json,
345
+ ],
346
+ },
347
+ {
348
+ name: 'ls',
349
+ description: 'List registered stores',
350
+ flags: [
351
+ COMMON_FLAGS.json,
352
+ ],
353
+ },
354
+ {
355
+ name: 'doctor',
356
+ description: 'Check local store registration and metadata',
357
+ acceptsPositional: true,
358
+ positionals: [{ name: 'id', optional: true }],
359
+ flags: [
360
+ COMMON_FLAGS.json,
361
+ ],
362
+ },
363
+ ],
364
+ },
365
+ {
366
+ name: 'context',
367
+ description: 'Print the working context for the resolved OpenSpec root',
368
+ flags: [
369
+ COMMON_FLAGS.json,
370
+ COMMON_FLAGS.store,
371
+ {
372
+ name: 'code-workspace',
373
+ description: 'Also write a VS Code workspace file for the set',
374
+ takesValue: true,
375
+ },
376
+ {
377
+ name: 'force',
378
+ description: 'Overwrite an existing --code-workspace file',
379
+ },
380
+ ],
381
+ },
382
+ {
383
+ name: 'doctor',
384
+ description: 'Report relationship health for the resolved OpenSpec root',
385
+ flags: [
386
+ COMMON_FLAGS.json,
387
+ COMMON_FLAGS.store,
388
+ ],
389
+ },
390
+ {
391
+ name: 'workset',
392
+ description: 'Compose, keep, and open personal working views (purely local)',
393
+ flags: [],
394
+ subcommands: [
395
+ {
396
+ name: 'create',
397
+ description: 'Compose and save a named working view of folders you choose',
398
+ acceptsPositional: true,
399
+ positionals: [{ name: 'name', optional: true }],
400
+ flags: [
401
+ {
402
+ name: 'member',
403
+ description: 'Member folder as <path> or <name>=<path>; repeatable, first is the primary',
404
+ takesValue: true,
405
+ },
406
+ {
407
+ name: 'tool',
408
+ description: 'Preferred tool to open this workset with',
409
+ takesValue: true,
410
+ },
411
+ COMMON_FLAGS.json,
412
+ ],
413
+ },
414
+ {
415
+ name: 'list',
416
+ description: 'Show saved worksets with their members',
417
+ flags: [COMMON_FLAGS.json],
418
+ },
419
+ {
420
+ name: 'ls',
421
+ description: 'Show saved worksets with their members',
422
+ flags: [COMMON_FLAGS.json],
423
+ },
424
+ {
425
+ name: 'open',
426
+ description: 'Open a saved workset in your tool (editor window or agent session)',
427
+ acceptsPositional: true,
428
+ positionals: [{ name: 'name' }],
429
+ flags: [
430
+ {
431
+ name: 'tool',
432
+ description: 'Open with this tool just this once',
433
+ takesValue: true,
434
+ },
435
+ ],
436
+ },
437
+ {
438
+ name: 'remove',
439
+ description: 'Delete a saved workset (member folders are never touched)',
440
+ acceptsPositional: true,
441
+ positionals: [{ name: 'name' }],
442
+ flags: [
443
+ {
444
+ name: 'yes',
445
+ description: 'Confirm removal non-interactively',
446
+ },
447
+ COMMON_FLAGS.json,
448
+ ],
449
+ },
450
+ ],
451
+ },
452
+ {
453
+ name: 'feedback',
454
+ description: 'Submit feedback about OpenSpec',
455
+ acceptsPositional: true,
456
+ positionals: [{ name: 'message' }],
457
+ flags: [
458
+ {
459
+ name: 'body',
460
+ description: 'Detailed description for the feedback',
461
+ takesValue: true,
462
+ },
463
+ ],
464
+ },
465
+ {
466
+ name: 'change',
467
+ description: 'Manage OpenSpec change proposals (deprecated)',
468
+ flags: [],
469
+ subcommands: [
470
+ {
471
+ name: 'show',
472
+ description: 'Show a change proposal',
473
+ acceptsPositional: true,
474
+ positionalType: 'change-id',
475
+ positionals: [{ name: 'change-name', type: 'change-id', optional: true }],
476
+ flags: [
477
+ COMMON_FLAGS.json,
478
+ {
479
+ name: 'deltas-only',
480
+ description: 'Show only deltas (JSON only)',
481
+ },
482
+ {
483
+ name: 'requirements-only',
484
+ description: 'Alias for --deltas-only (deprecated)',
485
+ },
486
+ COMMON_FLAGS.noInteractive,
487
+ ],
488
+ },
489
+ {
490
+ name: 'list',
491
+ description: 'List all active changes (deprecated)',
492
+ flags: [
493
+ COMMON_FLAGS.json,
494
+ {
495
+ name: 'long',
496
+ description: 'Show id and title with counts',
497
+ },
498
+ ],
499
+ },
500
+ {
501
+ name: 'validate',
502
+ description: 'Validate a change proposal',
503
+ acceptsPositional: true,
504
+ positionalType: 'change-id',
505
+ positionals: [{ name: 'change-name', type: 'change-id', optional: true }],
506
+ flags: [
507
+ COMMON_FLAGS.strict,
508
+ COMMON_FLAGS.jsonValidation,
509
+ COMMON_FLAGS.noInteractive,
510
+ ],
511
+ },
512
+ ],
513
+ },
514
+ {
515
+ name: 'spec',
516
+ description: 'Manage OpenSpec specifications',
517
+ flags: [],
518
+ subcommands: [
519
+ {
520
+ name: 'show',
521
+ description: 'Show a specification',
522
+ acceptsPositional: true,
523
+ positionalType: 'spec-id',
524
+ positionals: [{ name: 'spec-id', type: 'spec-id', optional: true }],
525
+ flags: [
526
+ COMMON_FLAGS.json,
527
+ {
528
+ name: 'requirements',
529
+ description: 'Show only requirements, exclude scenarios (JSON only)',
530
+ },
531
+ {
532
+ name: 'no-scenarios',
533
+ description: 'Exclude scenario content (JSON only)',
534
+ },
535
+ {
536
+ name: 'requirement',
537
+ short: 'r',
538
+ description: 'Show specific requirement by ID (JSON only)',
539
+ takesValue: true,
540
+ },
541
+ COMMON_FLAGS.noInteractive,
542
+ ],
543
+ },
544
+ {
545
+ name: 'list',
546
+ description: 'List all specifications',
547
+ flags: [
548
+ COMMON_FLAGS.json,
549
+ {
550
+ name: 'long',
551
+ description: 'Show id and title with counts',
552
+ },
553
+ ],
554
+ },
555
+ {
556
+ name: 'validate',
557
+ description: 'Validate a specification',
558
+ acceptsPositional: true,
559
+ positionalType: 'spec-id',
560
+ positionals: [{ name: 'spec-id', type: 'spec-id', optional: true }],
561
+ flags: [
562
+ COMMON_FLAGS.strict,
563
+ COMMON_FLAGS.jsonValidation,
564
+ COMMON_FLAGS.noInteractive,
565
+ ],
566
+ },
567
+ ],
568
+ },
569
+ {
570
+ name: 'completion',
571
+ description: 'Manage shell completions for OpenSpec CLI',
572
+ flags: [],
573
+ subcommands: [
574
+ {
575
+ name: 'generate',
576
+ description: 'Generate completion script for a shell (outputs to stdout)',
577
+ acceptsPositional: true,
578
+ positionalType: 'shell',
579
+ positionals: [{ name: 'shell', type: 'shell', optional: true }],
580
+ flags: [],
581
+ },
582
+ {
583
+ name: 'install',
584
+ description: 'Install completion script for a shell',
585
+ acceptsPositional: true,
586
+ positionalType: 'shell',
587
+ positionals: [{ name: 'shell', type: 'shell', optional: true }],
588
+ flags: [
589
+ {
590
+ name: 'verbose',
591
+ description: 'Show detailed installation output',
592
+ },
593
+ ],
594
+ },
595
+ {
596
+ name: 'uninstall',
597
+ description: 'Uninstall completion script for a shell',
598
+ acceptsPositional: true,
599
+ positionalType: 'shell',
600
+ positionals: [{ name: 'shell', type: 'shell', optional: true }],
601
+ flags: [
602
+ {
603
+ name: 'yes',
604
+ short: 'y',
605
+ description: 'Skip confirmation prompts',
606
+ },
607
+ ],
608
+ },
609
+ ],
610
+ },
611
+ {
612
+ name: 'config',
613
+ description: 'View and modify global OpenSpec configuration',
614
+ flags: [
615
+ {
616
+ name: 'scope',
617
+ description: 'Config scope (only "global" supported currently)',
618
+ takesValue: true,
619
+ values: ['global'],
620
+ },
621
+ ],
622
+ subcommands: [
623
+ {
624
+ name: 'path',
625
+ description: 'Show config file location',
626
+ flags: [],
627
+ },
628
+ {
629
+ name: 'list',
630
+ description: 'Show all current settings',
631
+ flags: [
632
+ COMMON_FLAGS.json,
633
+ ],
634
+ },
635
+ {
636
+ name: 'get',
637
+ description: 'Get a specific value (raw, scriptable)',
638
+ acceptsPositional: true,
639
+ positionals: [{ name: 'key' }],
640
+ flags: [],
641
+ },
642
+ {
643
+ name: 'set',
644
+ description: 'Set a value (auto-coerce types)',
645
+ acceptsPositional: true,
646
+ positionals: [{ name: 'key' }, { name: 'value' }],
647
+ flags: [
648
+ {
649
+ name: 'string',
650
+ description: 'Force value to be stored as string',
651
+ },
652
+ {
653
+ name: 'allow-unknown',
654
+ description: 'Allow setting unknown keys',
655
+ },
656
+ ],
657
+ },
658
+ {
659
+ name: 'unset',
660
+ description: 'Remove a key (revert to default)',
661
+ acceptsPositional: true,
662
+ positionals: [{ name: 'key' }],
663
+ flags: [],
664
+ },
665
+ {
666
+ name: 'reset',
667
+ description: 'Reset configuration to defaults',
668
+ flags: [
669
+ {
670
+ name: 'all',
671
+ description: 'Reset all configuration (required)',
672
+ },
673
+ {
674
+ name: 'yes',
675
+ short: 'y',
676
+ description: 'Skip confirmation prompts',
677
+ },
678
+ ],
679
+ },
680
+ {
681
+ name: 'edit',
682
+ description: 'Open config in $EDITOR',
683
+ flags: [],
684
+ },
685
+ {
686
+ name: 'profile',
687
+ description: 'Configure workflow profile (interactive picker or preset shortcut)',
688
+ acceptsPositional: true,
689
+ positionals: [{ name: 'preset', optional: true }],
690
+ flags: [],
691
+ },
692
+ ],
693
+ },
694
+ {
695
+ name: 'schema',
696
+ description: 'Manage workflow schemas',
697
+ flags: [],
698
+ subcommands: [
699
+ {
700
+ name: 'which',
701
+ description: 'Show where a schema resolves from',
702
+ acceptsPositional: true,
703
+ positionalType: 'schema-name',
704
+ positionals: [{ name: 'name', type: 'schema-name', optional: true }],
705
+ flags: [
706
+ COMMON_FLAGS.json,
707
+ {
708
+ name: 'all',
709
+ description: 'List all schemas with their resolution sources',
710
+ },
711
+ ],
712
+ },
713
+ {
714
+ name: 'validate',
715
+ description: 'Validate a schema structure and templates',
716
+ acceptsPositional: true,
717
+ positionalType: 'schema-name',
718
+ positionals: [{ name: 'name', type: 'schema-name', optional: true }],
719
+ flags: [
720
+ COMMON_FLAGS.json,
721
+ {
722
+ name: 'verbose',
723
+ description: 'Show detailed validation steps',
724
+ },
725
+ ],
726
+ },
727
+ {
728
+ name: 'fork',
729
+ description: 'Copy an existing schema to project for customization',
730
+ acceptsPositional: true,
731
+ positionalType: 'schema-name',
732
+ positionals: [
733
+ { name: 'source', type: 'schema-name' },
734
+ { name: 'name', optional: true },
735
+ ],
736
+ flags: [
737
+ COMMON_FLAGS.json,
738
+ {
739
+ name: 'force',
740
+ description: 'Overwrite existing destination',
741
+ },
742
+ ],
743
+ },
744
+ {
745
+ name: 'init',
746
+ description: 'Create a new project-local schema',
747
+ acceptsPositional: true,
748
+ positionals: [{ name: 'name' }],
749
+ flags: [
750
+ COMMON_FLAGS.json,
751
+ {
752
+ name: 'description',
753
+ description: 'Schema description',
754
+ takesValue: true,
755
+ },
756
+ {
757
+ name: 'artifacts',
758
+ description: 'Comma-separated artifact IDs',
759
+ takesValue: true,
760
+ },
761
+ {
762
+ name: 'default',
763
+ description: 'Set as project default schema',
764
+ },
765
+ {
766
+ name: 'no-default',
767
+ description: 'Do not prompt to set as default',
768
+ },
769
+ {
770
+ name: 'force',
771
+ description: 'Overwrite existing schema',
772
+ },
773
+ ],
774
+ },
775
+ ],
776
+ },
777
+ ];
778
+ //# sourceMappingURL=command-registry.js.map