@devtrack-solution/codesdd 1.2.2 → 1.2.4-rc3

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 (413) hide show
  1. package/.sdd/skills/curated/api-clean-flask-langgraph/SKILL.md +17 -17
  2. package/.sdd/skills/curated/devtrack-api/SKILL.md +170 -31
  3. package/.sdd/skills/curated/devtrack-api/agents/claude-code.yaml +8 -0
  4. package/.sdd/skills/curated/devtrack-api/agents/codex.yaml +8 -0
  5. package/.sdd/skills/curated/devtrack-api/agents/cursor.yaml +8 -0
  6. package/.sdd/skills/curated/devtrack-api/agents/gemini.yaml +8 -0
  7. package/.sdd/skills/curated/devtrack-api/agents/kimi.yaml +8 -0
  8. package/.sdd/skills/curated/devtrack-api/agents/openai.yaml +4 -2
  9. package/.sdd/skills/curated/devtrack-api/agents/opencode.yaml +10 -0
  10. package/.sdd/skills/curated/devtrack-api/references/application-presentation.md +2 -2
  11. package/.sdd/skills/curated/devtrack-api/references/architecture-governance.md +8 -7
  12. package/.sdd/skills/curated/devtrack-api/references/consumer-sync-policy.md +93 -0
  13. package/.sdd/skills/curated/devtrack-api/references/contract-pack.yaml +372 -0
  14. package/.sdd/skills/curated/devtrack-api/references/domain-modeling.md +13 -13
  15. package/.sdd/skills/curated/devtrack-api/references/field-validation-protocol.md +95 -0
  16. package/.sdd/skills/curated/devtrack-api/references/foundation-layout.md +294 -0
  17. package/.sdd/skills/curated/devtrack-api/references/implementation-checklist.md +5 -5
  18. package/.sdd/skills/curated/devtrack-api/references/imports-lint.md +4 -0
  19. package/.sdd/skills/curated/devtrack-api/references/portable-agent-contract.md +41 -0
  20. package/.sdd/skills/curated/devtrack-api/references/testing-validation.md +2 -2
  21. package/.sdd/skills/curated/devtrack-api/references/typeorm-infrastructure.md +7 -9
  22. package/LICENSE +1 -1
  23. package/README.md +399 -53
  24. package/bin/codesdd.js +3 -2
  25. package/dist/applications/sdd/index.d.ts +16 -0
  26. package/dist/applications/sdd/index.js +16 -0
  27. package/dist/cli/index.d.ts +2 -2
  28. package/dist/cli/index.js +11 -558
  29. package/dist/cli/program.d.ts +14 -0
  30. package/dist/cli/program.js +645 -0
  31. package/dist/commands/change.js +5 -5
  32. package/dist/commands/completion.d.ts +1 -1
  33. package/dist/commands/completion.js +9 -2
  34. package/dist/commands/config.js +320 -20
  35. package/dist/commands/feedback.js +1 -1
  36. package/dist/commands/schema.d.ts +63 -0
  37. package/dist/commands/schema.js +12 -12
  38. package/dist/commands/sdd/backlog.d.ts +3 -0
  39. package/dist/commands/sdd/backlog.js +54 -0
  40. package/dist/commands/sdd/execution.js +489 -28
  41. package/dist/commands/sdd/plugin.d.ts +3 -0
  42. package/dist/commands/sdd/plugin.js +158 -0
  43. package/dist/commands/sdd/shared.d.ts +1 -0
  44. package/dist/commands/sdd/shared.js +11 -22
  45. package/dist/commands/sdd/skills.js +7 -0
  46. package/dist/commands/sdd.js +107 -15
  47. package/dist/commands/spec.js +9 -9
  48. package/dist/commands/validate.js +6 -6
  49. package/dist/commands/workflow/instructions.js +6 -6
  50. package/dist/commands/workflow/new-change.js +3 -3
  51. package/dist/commands/workflow/shared.d.ts +1 -1
  52. package/dist/commands/workflow/shared.js +4 -4
  53. package/dist/core/archive.js +15 -5
  54. package/dist/core/artifact-graph/instruction-loader.d.ts +1 -1
  55. package/dist/core/artifact-graph/instruction-loader.js +3 -3
  56. package/dist/core/artifact-graph/resolver.d.ts +4 -4
  57. package/dist/core/artifact-graph/resolver.js +6 -6
  58. package/dist/core/branding.js +3 -3
  59. package/dist/core/cli/command-matrix.js +19 -1
  60. package/dist/core/cli-command-quality.d.ts +27 -0
  61. package/dist/core/cli-command-quality.js +180 -0
  62. package/dist/core/command-generation/adapters/costrict.d.ts +1 -1
  63. package/dist/core/command-generation/adapters/costrict.js +2 -2
  64. package/dist/core/command-generation/types.d.ts +1 -1
  65. package/dist/core/completions/command-registry.d.ts +1 -1
  66. package/dist/core/completions/command-registry.js +200 -12
  67. package/dist/core/completions/completion-provider.d.ts +14 -1
  68. package/dist/core/completions/completion-provider.js +29 -1
  69. package/dist/core/completions/generators/bash-generator.d.ts +1 -1
  70. package/dist/core/completions/generators/bash-generator.js +20 -12
  71. package/dist/core/completions/generators/fish-generator.d.ts +9 -1
  72. package/dist/core/completions/generators/fish-generator.js +39 -25
  73. package/dist/core/completions/generators/powershell-generator.d.ts +1 -1
  74. package/dist/core/completions/generators/powershell-generator.js +21 -11
  75. package/dist/core/completions/generators/zsh-generator.d.ts +3 -6
  76. package/dist/core/completions/generators/zsh-generator.js +21 -42
  77. package/dist/core/completions/installers/bash-installer.js +6 -6
  78. package/dist/core/completions/installers/fish-installer.js +1 -1
  79. package/dist/core/completions/installers/powershell-installer.js +14 -14
  80. package/dist/core/completions/installers/zsh-installer.d.ts +7 -1
  81. package/dist/core/completions/installers/zsh-installer.js +36 -8
  82. package/dist/core/completions/templates/bash-templates.d.ts +1 -1
  83. package/dist/core/completions/templates/bash-templates.js +12 -6
  84. package/dist/core/completions/templates/fish-templates.d.ts +2 -2
  85. package/dist/core/completions/templates/fish-templates.js +20 -9
  86. package/dist/core/completions/templates/powershell-templates.d.ts +1 -1
  87. package/dist/core/completions/templates/powershell-templates.js +13 -4
  88. package/dist/core/completions/templates/zsh-templates.d.ts +1 -1
  89. package/dist/core/completions/templates/zsh-templates.js +18 -9
  90. package/dist/core/config-schema.d.ts +20 -1
  91. package/dist/core/config-schema.js +70 -2
  92. package/dist/core/config.d.ts +3 -3
  93. package/dist/core/config.js +4 -4
  94. package/dist/core/global-config.d.ts +57 -12
  95. package/dist/core/global-config.js +344 -27
  96. package/dist/core/index.d.ts +1 -1
  97. package/dist/core/index.js +2 -2
  98. package/dist/core/init.d.ts +6 -1
  99. package/dist/core/init.js +99 -77
  100. package/dist/core/legacy-cleanup.d.ts +17 -17
  101. package/dist/core/legacy-cleanup.js +96 -79
  102. package/dist/core/list.js +18 -4
  103. package/dist/core/migration.d.ts +3 -1
  104. package/dist/core/migration.js +7 -8
  105. package/dist/core/parsers/change-parser.js +1 -1
  106. package/dist/core/parsers/markdown-parser.js +2 -2
  107. package/dist/core/profile-sync-drift.d.ts +1 -1
  108. package/dist/core/profile-sync-drift.js +13 -13
  109. package/dist/core/project-config.d.ts +4 -4
  110. package/dist/core/project-config.js +11 -11
  111. package/dist/core/schemas/change.schema.d.ts +1 -1
  112. package/dist/core/schemas/change.schema.js +1 -1
  113. package/dist/core/schemas/spec.schema.d.ts +1 -1
  114. package/dist/core/schemas/spec.schema.js +1 -1
  115. package/dist/core/sdd/adr.js +23 -1
  116. package/dist/core/sdd/agent-binding.d.ts +346 -0
  117. package/dist/core/sdd/agent-binding.js +343 -0
  118. package/dist/core/sdd/agent-runtime-contract.d.ts +204 -0
  119. package/dist/core/sdd/agent-runtime-contract.js +200 -0
  120. package/dist/core/sdd/backlog-cli.d.ts +16 -0
  121. package/dist/core/sdd/backlog-cli.js +146 -0
  122. package/dist/core/sdd/backlog-conflict-policy.d.ts +58 -0
  123. package/dist/core/sdd/backlog-conflict-policy.js +230 -0
  124. package/dist/core/sdd/backlog-projection.d.ts +8 -0
  125. package/dist/core/sdd/backlog-projection.js +89 -0
  126. package/dist/core/sdd/backlog-provider-contract.d.ts +252 -0
  127. package/dist/core/sdd/backlog-provider-contract.js +158 -0
  128. package/dist/core/sdd/bootstrap.js +2 -2
  129. package/dist/core/sdd/check.d.ts +44 -0
  130. package/dist/core/sdd/check.js +62 -24
  131. package/dist/core/sdd/contract.d.ts +13 -0
  132. package/dist/core/sdd/contract.js +36 -0
  133. package/dist/core/sdd/coordination/coordination-adapters.d.ts +53 -8
  134. package/dist/core/sdd/coordination/coordination-adapters.js +182 -16
  135. package/dist/core/sdd/coordination/index.d.ts +1 -0
  136. package/dist/core/sdd/coordination/index.js +1 -0
  137. package/dist/core/sdd/coordination/redis-runtime.d.ts +131 -0
  138. package/dist/core/sdd/coordination/redis-runtime.js +698 -0
  139. package/dist/core/sdd/deepagent-contracts.d.ts +370 -0
  140. package/dist/core/sdd/deepagent-contracts.js +235 -0
  141. package/dist/core/sdd/deepagents/adr-governor.d.ts +2 -0
  142. package/dist/core/sdd/deepagents/adr-governor.js +30 -0
  143. package/dist/core/sdd/deepagents/backend.d.ts +63 -0
  144. package/dist/core/sdd/deepagents/backend.js +174 -0
  145. package/dist/core/sdd/deepagents/codesdd-tools.d.ts +39 -0
  146. package/dist/core/sdd/deepagents/codesdd-tools.js +83 -0
  147. package/dist/core/sdd/deepagents/evidence-mapper.d.ts +86 -0
  148. package/dist/core/sdd/deepagents/evidence-mapper.js +178 -0
  149. package/dist/core/sdd/deepagents/model-provider.d.ts +53 -0
  150. package/dist/core/sdd/deepagents/model-provider.js +379 -0
  151. package/dist/core/sdd/deepagents/policy-enforcement.d.ts +30 -0
  152. package/dist/core/sdd/deepagents/policy-enforcement.js +90 -0
  153. package/dist/core/sdd/deepagents/policy.d.ts +75 -0
  154. package/dist/core/sdd/deepagents/policy.js +358 -0
  155. package/dist/core/sdd/deepagents/quality-witness.d.ts +3 -0
  156. package/dist/core/sdd/deepagents/quality-witness.js +77 -0
  157. package/dist/core/sdd/deepagents/reversa-subagents.d.ts +75 -0
  158. package/dist/core/sdd/deepagents/reversa-subagents.js +182 -0
  159. package/dist/core/sdd/deepagents/runtime-factory.d.ts +90 -0
  160. package/dist/core/sdd/deepagents/runtime-factory.js +231 -0
  161. package/dist/core/sdd/deepagents/runtime-loader.d.ts +16 -0
  162. package/dist/core/sdd/deepagents/runtime-loader.js +65 -0
  163. package/dist/core/sdd/default-bootstrap-files.d.ts +3 -3
  164. package/dist/core/sdd/default-bootstrap-files.js +50 -10
  165. package/dist/core/sdd/default-skills.d.ts +30 -0
  166. package/dist/core/sdd/default-skills.js +288 -8
  167. package/dist/core/sdd/devtrack-api-appliance.d.ts +91 -0
  168. package/dist/core/sdd/devtrack-api-appliance.js +280 -0
  169. package/dist/core/sdd/devtrack-api-architecture.d.ts +31 -0
  170. package/dist/core/sdd/devtrack-api-architecture.js +608 -0
  171. package/dist/core/sdd/devtrack-api-import-boundary.d.ts +19 -0
  172. package/dist/core/sdd/devtrack-api-import-boundary.js +32 -0
  173. package/dist/core/sdd/diagnose.d.ts +59 -0
  174. package/dist/core/sdd/diagnose.js +37 -37
  175. package/dist/core/sdd/docs-sync.js +54 -20
  176. package/dist/core/sdd/domain/capability-diff.d.ts +63 -0
  177. package/dist/core/sdd/domain/capability-diff.js +200 -0
  178. package/dist/core/sdd/domain/change-safety-guardrails.d.ts +74 -0
  179. package/dist/core/sdd/domain/change-safety-guardrails.js +333 -0
  180. package/dist/core/sdd/domain/post-active-validation.d.ts +7 -0
  181. package/dist/core/sdd/domain/post-active-validation.js +61 -0
  182. package/dist/core/sdd/domain/semantic-intent-classifier.d.ts +29 -0
  183. package/dist/core/sdd/domain/semantic-intent-classifier.js +117 -0
  184. package/dist/core/sdd/domain/transition-engine.js +1 -0
  185. package/dist/core/sdd/entity-reference.d.ts +5 -0
  186. package/dist/core/sdd/entity-reference.js +22 -0
  187. package/dist/core/sdd/foundation-artifact-map-validator.d.ts +16 -0
  188. package/dist/core/sdd/foundation-artifact-map-validator.js +71 -0
  189. package/dist/core/sdd/foundation-layer-manifest.d.ts +24 -0
  190. package/dist/core/sdd/foundation-layer-manifest.js +117 -0
  191. package/dist/core/sdd/governance-backfill.d.ts +31 -0
  192. package/dist/core/sdd/governance-backfill.js +359 -0
  193. package/dist/core/sdd/governance-parser.d.ts +21 -0
  194. package/dist/core/sdd/governance-parser.js +91 -0
  195. package/dist/core/sdd/governance-schemas.d.ts +245 -0
  196. package/dist/core/sdd/governance-schemas.js +143 -0
  197. package/dist/core/sdd/{import-openspec.d.ts → import-legacy-spec.d.ts} +7 -7
  198. package/dist/core/sdd/{import-openspec.js → import-legacy-spec.js} +21 -29
  199. package/dist/core/sdd/init.d.ts +3 -0
  200. package/dist/core/sdd/init.js +6 -3
  201. package/dist/core/sdd/intent-guard.d.ts +22 -0
  202. package/dist/core/sdd/intent-guard.js +67 -0
  203. package/dist/core/sdd/json-schema.js +108 -6
  204. package/dist/core/sdd/knowledge-graph.d.ts +45 -0
  205. package/dist/core/sdd/knowledge-graph.js +288 -0
  206. package/dist/core/sdd/legacy-operations.js +507 -44
  207. package/dist/core/sdd/lenses.d.ts +1 -0
  208. package/dist/core/sdd/lenses.js +29 -1
  209. package/dist/core/sdd/migrate-workspace.js +95 -2
  210. package/dist/core/sdd/migrate.d.ts +1 -1
  211. package/dist/core/sdd/migrate.js +36 -2
  212. package/dist/core/sdd/package-security-gates.d.ts +21 -0
  213. package/dist/core/sdd/package-security-gates.js +119 -0
  214. package/dist/core/sdd/package-structure-gate.d.ts +83 -0
  215. package/dist/core/sdd/package-structure-gate.js +357 -0
  216. package/dist/core/sdd/parallel-feat-automation.d.ts +330 -0
  217. package/dist/core/sdd/parallel-feat-automation.js +424 -0
  218. package/dist/core/sdd/plugin-broker.d.ts +777 -0
  219. package/dist/core/sdd/plugin-broker.js +492 -0
  220. package/dist/core/sdd/plugin-certification.d.ts +79 -0
  221. package/dist/core/sdd/plugin-certification.js +453 -0
  222. package/dist/core/sdd/plugin-cli.d.ts +139 -0
  223. package/dist/core/sdd/plugin-cli.js +265 -0
  224. package/dist/core/sdd/plugin-evidence.d.ts +348 -0
  225. package/dist/core/sdd/plugin-evidence.js +307 -0
  226. package/dist/core/sdd/plugin-manifest.d.ts +232 -0
  227. package/dist/core/sdd/plugin-manifest.js +225 -0
  228. package/dist/core/sdd/plugin-policy-pack.d.ts +88 -0
  229. package/dist/core/sdd/plugin-policy-pack.js +236 -0
  230. package/dist/core/sdd/plugin-policy.d.ts +68 -0
  231. package/dist/core/sdd/plugin-policy.js +212 -0
  232. package/dist/core/sdd/plugin-registry.d.ts +447 -0
  233. package/dist/core/sdd/plugin-registry.js +138 -0
  234. package/dist/core/sdd/plugin-sdk-contract.d.ts +363 -0
  235. package/dist/core/sdd/plugin-sdk-contract.js +268 -0
  236. package/dist/core/sdd/plugin-skill-binding.d.ts +151 -0
  237. package/dist/core/sdd/plugin-skill-binding.js +339 -0
  238. package/dist/core/sdd/quality-artifact-manifest-validator.d.ts +28 -0
  239. package/dist/core/sdd/quality-artifact-manifest-validator.js +167 -0
  240. package/dist/core/sdd/quality-evidence-renderer.d.ts +65 -0
  241. package/dist/core/sdd/quality-evidence-renderer.js +218 -0
  242. package/dist/core/sdd/quality-scenario-runner.d.ts +42 -0
  243. package/dist/core/sdd/quality-scenario-runner.js +613 -0
  244. package/dist/core/sdd/quality-validation.d.ts +620 -0
  245. package/dist/core/sdd/quality-validation.js +239 -0
  246. package/dist/core/sdd/release-readiness.d.ts +19 -0
  247. package/dist/core/sdd/release-readiness.js +472 -0
  248. package/dist/core/sdd/resolve-project-root.d.ts +2 -2
  249. package/dist/core/sdd/resolve-project-root.js +11 -5
  250. package/dist/core/sdd/runtime-boundary-contract.d.ts +45 -0
  251. package/dist/core/sdd/runtime-boundary-contract.js +90 -0
  252. package/dist/core/sdd/sanitize.d.ts +30 -1
  253. package/dist/core/sdd/sanitize.js +23 -23
  254. package/dist/core/sdd/sdk-agent-plugin-quality-gates.d.ts +150 -0
  255. package/dist/core/sdd/sdk-agent-plugin-quality-gates.js +258 -0
  256. package/dist/core/sdd/services/agent-run.service.d.ts +97 -0
  257. package/dist/core/sdd/services/agent-run.service.js +261 -0
  258. package/dist/core/sdd/services/breakdown.service.js +2 -1
  259. package/dist/core/sdd/services/capability-diff.service.d.ts +18 -0
  260. package/dist/core/sdd/services/capability-diff.service.js +26 -0
  261. package/dist/core/sdd/services/change-safety-preflight.service.d.ts +17 -0
  262. package/dist/core/sdd/services/change-safety-preflight.service.js +17 -0
  263. package/dist/core/sdd/services/context.service.d.ts +43 -340
  264. package/dist/core/sdd/services/context.service.js +341 -25
  265. package/dist/core/sdd/services/debate.service.js +15 -2
  266. package/dist/core/sdd/services/feature-lint.service.d.ts +22 -0
  267. package/dist/core/sdd/services/feature-lint.service.js +105 -5
  268. package/dist/core/sdd/services/finalize.service.d.ts +105 -0
  269. package/dist/core/sdd/services/finalize.service.js +499 -38
  270. package/dist/core/sdd/services/frontend-gap.service.js +22 -7
  271. package/dist/core/sdd/services/frontend-impact.service.d.ts +1 -1
  272. package/dist/core/sdd/services/governance-control-plane-runtime-adapters.d.ts +17 -0
  273. package/dist/core/sdd/services/governance-control-plane-runtime-adapters.js +38 -0
  274. package/dist/core/sdd/services/governance-control-plane.service.d.ts +66 -0
  275. package/dist/core/sdd/services/governance-control-plane.service.js +134 -0
  276. package/dist/core/sdd/services/ingest-deposito.service.js +1 -1
  277. package/dist/core/sdd/services/legacy-capability.service.d.ts +10 -7
  278. package/dist/core/sdd/services/legacy-capability.service.js +38 -21
  279. package/dist/core/sdd/services/mcp-runtime.service.d.ts +123 -8
  280. package/dist/core/sdd/services/mcp-runtime.service.js +1085 -33
  281. package/dist/core/sdd/services/onboard.service.js +2 -1
  282. package/dist/core/sdd/services/rebuild.service.js +6 -1
  283. package/dist/core/sdd/services/semantic-intent-classifier.service.d.ts +6 -0
  284. package/dist/core/sdd/services/semantic-intent-classifier.service.js +7 -0
  285. package/dist/core/sdd/services/skills-sync.service.d.ts +17 -5
  286. package/dist/core/sdd/services/skills-sync.service.js +55 -2
  287. package/dist/core/sdd/services/start.service.js +6 -4
  288. package/dist/core/sdd/skill-bundles-curation-schema.d.ts +66 -0
  289. package/dist/core/sdd/skill-bundles-curation-schema.js +52 -0
  290. package/dist/core/sdd/skill-evidence.d.ts +19 -0
  291. package/dist/core/sdd/skill-evidence.js +38 -0
  292. package/dist/core/sdd/skill-policy-pool.d.ts +46 -0
  293. package/dist/core/sdd/skill-policy-pool.js +185 -0
  294. package/dist/core/sdd/state.d.ts +23 -0
  295. package/dist/core/sdd/state.js +313 -66
  296. package/dist/core/sdd/store/sdd-stores.js +2 -2
  297. package/dist/core/sdd/structural-health.d.ts +55 -55
  298. package/dist/core/sdd/types.d.ts +60 -19
  299. package/dist/core/sdd/types.js +21 -0
  300. package/dist/core/sdd/upgrade-to-codesdd.d.ts +45 -0
  301. package/dist/core/sdd/upgrade-to-codesdd.js +179 -0
  302. package/dist/core/sdd/views.js +17 -0
  303. package/dist/core/sdd/workspace-schemas.d.ts +670 -19
  304. package/dist/core/sdd/workspace-schemas.js +285 -5
  305. package/dist/core/sdd/write-manifest.js +22 -4
  306. package/dist/core/shared/skill-generation.d.ts +1 -1
  307. package/dist/core/shared/skill-generation.js +15 -15
  308. package/dist/core/shared/tool-detection.d.ts +3 -3
  309. package/dist/core/shared/tool-detection.js +14 -14
  310. package/dist/core/specs-apply.js +6 -6
  311. package/dist/core/templates/index.d.ts +1 -1
  312. package/dist/core/templates/index.js +1 -1
  313. package/dist/core/templates/workflows/apply-change.js +14 -14
  314. package/dist/core/templates/workflows/archive-change.js +32 -32
  315. package/dist/core/templates/workflows/bulk-archive-change.js +25 -25
  316. package/dist/core/templates/workflows/continue-change.js +12 -12
  317. package/dist/core/templates/workflows/explore.js +29 -29
  318. package/dist/core/templates/workflows/feedback.js +6 -6
  319. package/dist/core/templates/workflows/ff-change.js +24 -24
  320. package/dist/core/templates/workflows/new-change.js +20 -20
  321. package/dist/core/templates/workflows/onboard.js +33 -33
  322. package/dist/core/templates/workflows/propose.js +23 -23
  323. package/dist/core/templates/workflows/sdd.js +8 -8
  324. package/dist/core/templates/workflows/sync-specs.js +19 -19
  325. package/dist/core/templates/workflows/verify-change.js +17 -17
  326. package/dist/core/update.d.ts +2 -2
  327. package/dist/core/update.js +16 -15
  328. package/dist/core/validation/constants.d.ts +1 -1
  329. package/dist/core/validation/constants.js +1 -1
  330. package/dist/core/view.js +11 -11
  331. package/dist/domains/sdd/index.d.ts +6 -0
  332. package/dist/domains/sdd/index.js +6 -0
  333. package/dist/infrastructures/sdd/index.d.ts +7 -0
  334. package/dist/infrastructures/sdd/index.js +6 -0
  335. package/dist/presentations/cli/sdd/index.d.ts +3 -0
  336. package/dist/presentations/cli/sdd/index.js +3 -0
  337. package/dist/shared/sdd/index.d.ts +3 -0
  338. package/dist/shared/sdd/index.js +2 -0
  339. package/dist/telemetry/config.d.ts +2 -1
  340. package/dist/telemetry/config.js +17 -8
  341. package/dist/telemetry/index.d.ts +10 -2
  342. package/dist/telemetry/index.js +40 -7
  343. package/dist/ui/ascii-patterns.d.ts +2 -2
  344. package/dist/ui/ascii-patterns.js +2 -2
  345. package/dist/ui/welcome-screen.js +2 -2
  346. package/dist/utils/change-metadata.d.ts +4 -4
  347. package/dist/utils/change-metadata.js +6 -6
  348. package/dist/utils/change-utils.d.ts +3 -3
  349. package/dist/utils/change-utils.js +5 -5
  350. package/dist/utils/file-system.js +1 -1
  351. package/dist/utils/interactive.js +1 -1
  352. package/dist/utils/item-discovery.js +4 -4
  353. package/dist/utils/legacy-spec-compat.d.ts +2 -0
  354. package/dist/utils/legacy-spec-compat.js +2 -0
  355. package/dist/utils/shell-detection.d.ts +1 -0
  356. package/dist/utils/shell-detection.js +16 -0
  357. package/package.json +34 -21
  358. package/schemas/sdd/1-spec.schema.json +1 -1
  359. package/schemas/sdd/2-plan.schema.json +280 -3
  360. package/schemas/sdd/3-tasks.schema.json +73 -1
  361. package/schemas/sdd/4-changelog.schema.json +1 -1
  362. package/schemas/sdd/5-quality.schema.json +701 -5
  363. package/schemas/sdd/adr.schema.json +148 -0
  364. package/schemas/sdd/agent-binding-adapter.schema.json +210 -0
  365. package/schemas/sdd/agent-binding-resolution.schema.json +338 -0
  366. package/schemas/sdd/agent-runtime-command-plan.schema.json +212 -0
  367. package/schemas/sdd/agent-runtime-opencode-run-evidence.schema.json +270 -0
  368. package/schemas/sdd/backlog-projection-plan.schema.json +180 -0
  369. package/schemas/sdd/backlog-provider-contract.schema.json +260 -0
  370. package/schemas/sdd/codesdd-plugin.schema.json +645 -0
  371. package/schemas/sdd/debate.schema.json +244 -0
  372. package/schemas/sdd/deepagent-decision-evidence.schema.json +58 -0
  373. package/schemas/sdd/deepagent-env-contract.schema.json +143 -0
  374. package/schemas/sdd/deepagent-quality-evidence.schema.json +108 -0
  375. package/schemas/sdd/deepagent-run-evidence.schema.json +192 -0
  376. package/schemas/sdd/deepagent-run-plan.schema.json +197 -0
  377. package/schemas/sdd/deepagent-run-request.schema.json +637 -0
  378. package/schemas/sdd/deepagent-subagent-evidence.schema.json +110 -0
  379. package/schemas/sdd/deepagent-tool-call-evidence.schema.json +78 -0
  380. package/schemas/sdd/discarded.schema.json +127 -0
  381. package/schemas/sdd/epic.schema.json +147 -0
  382. package/schemas/sdd/insight.schema.json +136 -0
  383. package/schemas/sdd/parallel-feat-automation-plan.schema.json +304 -0
  384. package/schemas/sdd/parallel-feat-automation-request.schema.json +109 -0
  385. package/schemas/sdd/parallel-feat-scheduler-request.schema.json +116 -0
  386. package/schemas/sdd/parallel-feat-scheduler-result.schema.json +404 -0
  387. package/schemas/sdd/plugin-artifact-manifest.schema.json +259 -0
  388. package/schemas/sdd/plugin-artifact-map.schema.json +223 -0
  389. package/schemas/sdd/plugin-compliance-index.schema.json +136 -0
  390. package/schemas/sdd/plugin-dry-run-plan.schema.json +260 -0
  391. package/schemas/sdd/plugin-evidence-manifest.schema.json +678 -0
  392. package/schemas/sdd/plugin-language-runtime.schema.json +103 -0
  393. package/schemas/sdd/plugin-package-governance.schema.json +74 -0
  394. package/schemas/sdd/plugin-policy-evaluation.schema.json +92 -0
  395. package/schemas/sdd/plugin-policy-pack-evaluation.schema.json +94 -0
  396. package/schemas/sdd/plugin-policy-pack.schema.json +196 -0
  397. package/schemas/sdd/plugin-registry.schema.json +729 -0
  398. package/schemas/sdd/plugin-rollback-manifest.schema.json +87 -0
  399. package/schemas/sdd/plugin-runtime-invocation-plan.schema.json +954 -0
  400. package/schemas/sdd/plugin-skill-binding-resolution.schema.json +305 -0
  401. package/schemas/sdd/plugin-skill-binding.schema.json +88 -0
  402. package/schemas/sdd/plugin-validation-manifest.schema.json +123 -0
  403. package/schemas/sdd/quality-architecture-schema.schema.json +216 -0
  404. package/schemas/sdd/quality-evidence-bundle.schema.json +1337 -0
  405. package/schemas/sdd/quality-run.schema.json +197 -0
  406. package/schemas/sdd/quality-scenario.schema.json +252 -0
  407. package/schemas/sdd/sdk-agent-plugin-quality-gate-input.schema.json +168 -0
  408. package/schemas/sdd/sdk-agent-plugin-quality-gate-report.schema.json +160 -0
  409. package/schemas/sdd/workspace-catalog.schema.json +13232 -35
  410. package/schemas/spec-driven/schema.yaml +4 -4
  411. package/schemas/spec-driven/templates/proposal.md +1 -1
  412. package/dist/utils/openspec-compat.d.ts +0 -2
  413. package/dist/utils/openspec-compat.js +0 -2
package/dist/core/init.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Init Command
3
3
  *
4
- * Sets up OpenSpec with Agent Skills and /opsx:* slash commands.
4
+ * Sets up CodeSDD with Agent Skills and /opsx:* slash commands.
5
5
  * This is the unified setup command that replaces both the old init and experimental commands.
6
6
  */
7
7
  import path from 'path';
@@ -11,7 +11,7 @@ import * as fs from 'fs';
11
11
  import { createRequire } from 'module';
12
12
  import { FileSystemUtils } from '../utils/file-system.js';
13
13
  import { transformToHyphenCommands } from '../utils/command-references.js';
14
- import { AI_TOOLS, OPENSPEC_DIR_NAME, } from './config.js';
14
+ import { AI_TOOLS, LEGACY_SPEC_DIR_NAME, } from './config.js';
15
15
  import { isInteractive } from '../utils/interactive.js';
16
16
  import { generateCommands, CommandAdapterRegistry, } from './command-generation/index.js';
17
17
  import { CLI_ISSUES_URL, CLI_NAME, CLI_PRODUCT_NAME, CLI_REPOSITORY_URL } from './branding.js';
@@ -21,24 +21,25 @@ import { getGlobalConfig } from './global-config.js';
21
21
  import { getProfileWorkflows, ALL_WORKFLOWS } from './profiles.js';
22
22
  import { getAvailableTools } from './available-tools.js';
23
23
  import { migrateIfNeeded } from './migration.js';
24
+ import { resolveLegacySpecLiveRoot } from './sdd/services/legacy-capability.service.js';
24
25
  const require = createRequire(import.meta.url);
25
- const { version: OPENSPEC_VERSION } = require('../../package.json');
26
+ const { version: CODESDD_VERSION } = require('../../package.json');
26
27
  // -----------------------------------------------------------------------------
27
28
  // Constants
28
29
  // -----------------------------------------------------------------------------
29
30
  const WORKFLOW_TO_SKILL_DIR = {
30
- 'explore': 'openspec-explore',
31
- 'new': 'openspec-new-change',
32
- 'continue': 'openspec-continue-change',
33
- 'apply': 'openspec-apply-change',
34
- 'ff': 'openspec-ff-change',
35
- 'sync': 'openspec-sync-specs',
36
- 'archive': 'openspec-archive-change',
37
- 'bulk-archive': 'openspec-bulk-archive-change',
38
- 'verify': 'openspec-verify-change',
39
- 'onboard': 'openspec-onboard',
40
- 'propose': 'openspec-propose',
41
- 'sdd': 'openspec-sdd',
31
+ 'explore': 'codesdd-explore',
32
+ 'new': 'codesdd-new-change',
33
+ 'continue': 'codesdd-continue-change',
34
+ 'apply': 'codesdd-apply-change',
35
+ 'ff': 'codesdd-ff-change',
36
+ 'sync': 'codesdd-sync-specs',
37
+ 'archive': 'codesdd-archive-change',
38
+ 'bulk-archive': 'codesdd-bulk-archive-change',
39
+ 'verify': 'codesdd-verify-change',
40
+ 'onboard': 'codesdd-onboard',
41
+ 'propose': 'codesdd-propose',
42
+ 'sdd': 'codesdd-sdd',
42
43
  };
43
44
  // -----------------------------------------------------------------------------
44
45
  // Init Command Class
@@ -48,25 +49,28 @@ export class InitCommand {
48
49
  force;
49
50
  interactiveOption;
50
51
  profileOverride;
52
+ allowNoToolsFallback;
53
+ silent;
51
54
  constructor(options = {}) {
52
55
  this.toolsArg = options.tools;
53
56
  this.force = options.force ?? false;
54
57
  this.interactiveOption = options.interactive;
55
58
  this.profileOverride = options.profile;
59
+ this.allowNoToolsFallback = options.allowNoToolsFallback ?? false;
60
+ this.silent = options.silent ?? false;
56
61
  }
57
62
  async execute(targetPath) {
58
63
  const projectPath = path.resolve(targetPath);
59
- const openspecDir = OPENSPEC_DIR_NAME;
60
- const openspecPath = path.join(projectPath, openspecDir);
64
+ const codesddPath = resolveLegacySpecLiveRoot(projectPath);
61
65
  // Validation happens silently in the background
62
- const extendMode = await this.validate(projectPath, openspecPath);
66
+ const extendMode = await this.validate(projectPath, codesddPath);
63
67
  // Check for legacy artifacts and handle cleanup
64
68
  await this.handleLegacyCleanup(projectPath, extendMode);
65
69
  // Detect available tools in the project (task 7.1)
66
70
  const detectedTools = getAvailableTools(projectPath);
67
71
  // Migration check: migrate existing projects to profile system (task 7.3)
68
72
  if (extendMode) {
69
- migrateIfNeeded(projectPath, detectedTools);
73
+ migrateIfNeeded(projectPath, detectedTools, { silent: this.silent });
70
74
  }
71
75
  // Show animated welcome screen (interactive mode only)
72
76
  const canPrompt = this.canPromptInteractively();
@@ -84,19 +88,19 @@ export class InitCommand {
84
88
  // Validate selected tools
85
89
  const validatedTools = this.validateTools(selectedToolIds, toolStates);
86
90
  // Create directory structure
87
- await this.createDirectoryStructure(openspecPath, extendMode);
91
+ await this.createDirectoryStructure(codesddPath, extendMode);
88
92
  // Generate skills and commands for each tool
89
93
  const results = await this.generateSkillsAndCommands(projectPath, validatedTools);
90
- // Preserve an existing legacy OpenSpec config, but do not create one for new OpenSDD projects.
91
- const configStatus = await this.createConfig(openspecPath, extendMode);
94
+ // Preserve an existing legacy CodeSDD config, but do not create one for new CodeSDD projects.
95
+ const configStatus = await this.createConfig(codesddPath, extendMode);
92
96
  // Display success message
93
97
  this.displaySuccessMessage(projectPath, validatedTools, results, configStatus);
94
98
  }
95
99
  // ═══════════════════════════════════════════════════════════
96
100
  // VALIDATION & SETUP
97
101
  // ═══════════════════════════════════════════════════════════
98
- async validate(projectPath, openspecPath) {
99
- const extendMode = await FileSystemUtils.directoryExists(openspecPath);
102
+ async validate(projectPath, codesddPath) {
103
+ const extendMode = await FileSystemUtils.directoryExists(codesddPath);
100
104
  // Check write permissions
101
105
  if (!(await FileSystemUtils.ensureWritePermissions(projectPath))) {
102
106
  throw new Error(`Insufficient permissions to write to ${projectPath}`);
@@ -110,6 +114,16 @@ export class InitCommand {
110
114
  return false;
111
115
  return isInteractive({ interactive: this.interactiveOption });
112
116
  }
117
+ log(message) {
118
+ if (!this.silent) {
119
+ if (typeof message === 'undefined') {
120
+ console.log();
121
+ }
122
+ else {
123
+ console.log(message);
124
+ }
125
+ }
126
+ }
113
127
  resolveProfileOverride() {
114
128
  if (this.profileOverride === undefined) {
115
129
  return undefined;
@@ -129,13 +143,13 @@ export class InitCommand {
129
143
  return; // No legacy artifacts found
130
144
  }
131
145
  // Show what was detected
132
- console.log();
133
- console.log(formatDetectionSummary(detection));
134
- console.log();
146
+ this.log();
147
+ this.log(formatDetectionSummary(detection));
148
+ this.log();
135
149
  const canPrompt = this.canPromptInteractively();
136
150
  if (this.force || !canPrompt) {
137
151
  // --force flag or non-interactive mode: proceed with cleanup automatically.
138
- // Legacy slash commands are 100% OpenSpec-managed, and config file cleanup
152
+ // Legacy slash commands are 100% CodeSDD-managed, and config file cleanup
139
153
  // only removes markers (never deletes files), so auto-cleanup is safe.
140
154
  await this.performLegacyCleanup(projectPath, detection);
141
155
  return;
@@ -147,22 +161,22 @@ export class InitCommand {
147
161
  default: true,
148
162
  });
149
163
  if (!shouldCleanup) {
150
- console.log(chalk.dim('Initialization cancelled.'));
151
- console.log(chalk.dim('Run with --force to skip this prompt, or manually remove legacy files.'));
164
+ this.log(chalk.dim('Initialization cancelled.'));
165
+ this.log(chalk.dim('Run with --force to skip this prompt, or manually remove legacy files.'));
152
166
  process.exit(0);
153
167
  }
154
168
  await this.performLegacyCleanup(projectPath, detection);
155
169
  }
156
170
  async performLegacyCleanup(projectPath, detection) {
157
- const spinner = ora('Cleaning up legacy files...').start();
171
+ const spinner = this.silent ? null : ora('Cleaning up legacy files...').start();
158
172
  const result = await cleanupLegacyArtifacts(projectPath, detection);
159
- spinner.succeed('Legacy files cleaned up');
173
+ spinner?.succeed('Legacy files cleaned up');
160
174
  const summary = formatCleanupSummary(result);
161
- if (summary) {
162
- console.log();
163
- console.log(summary);
175
+ if (summary && !this.silent) {
176
+ this.log();
177
+ this.log(summary);
164
178
  }
165
- console.log();
179
+ this.log();
166
180
  }
167
181
  // ═══════════════════════════════════════════════════════════
168
182
  // TOOL SELECTION
@@ -185,6 +199,9 @@ export class InitCommand {
185
199
  if (detectedToolIds.size > 0) {
186
200
  return [...detectedToolIds];
187
201
  }
202
+ if (this.allowNoToolsFallback) {
203
+ return [];
204
+ }
188
205
  throw new Error(`No tools detected and no --tools flag provided. Valid tools:\n ${validTools.join('\n ')}\n\nUse --tools all, --tools none, or --tools claude,cursor,...`);
189
206
  }
190
207
  if (validTools.length === 0) {
@@ -223,7 +240,7 @@ export class InitCommand {
223
240
  .filter((toolId) => configuredToolIds.has(toolId))
224
241
  .map((toolId) => AI_TOOLS.find((t) => t.value === toolId)?.name || toolId);
225
242
  if (configuredNames.length > 0) {
226
- console.log(`OpenSpec configured: ${configuredNames.join(', ')} (pre-selected)`);
243
+ this.log(`CodeSDD configured: ${configuredNames.join(', ')} (pre-selected)`);
227
244
  }
228
245
  const detectedOnlyNames = detectedTools
229
246
  .filter((tool) => !configuredToolIds.has(tool.value))
@@ -232,7 +249,7 @@ export class InitCommand {
232
249
  const detectionLabel = shouldPreselectDetected
233
250
  ? 'pre-selected for first-time setup'
234
251
  : 'not pre-selected';
235
- console.log(`Detected tool directories: ${detectedOnlyNames.join(', ')} (${detectionLabel})`);
252
+ this.log(`Detected tool directories: ${detectedOnlyNames.join(', ')} (${detectionLabel})`);
236
253
  }
237
254
  const selectedTools = await searchableMultiSelect({
238
255
  message: `Select tools to set up (${validTools.length} available)`,
@@ -312,18 +329,18 @@ export class InitCommand {
312
329
  // ═══════════════════════════════════════════════════════════
313
330
  // DIRECTORY STRUCTURE
314
331
  // ═══════════════════════════════════════════════════════════
315
- async createDirectoryStructure(openspecPath, extendMode) {
332
+ async createDirectoryStructure(codesddPath, extendMode) {
316
333
  if (!extendMode) {
317
- // New OpenSDD installs are .sdd-native. Keep openspec/ only as a legacy
334
+ // New CodeSDD installs are .sdd-native. Keep legacy-spec/ only as a legacy
318
335
  // compatibility surface when it already exists in the target project.
319
336
  return;
320
337
  }
321
338
  // In extend mode, just ensure legacy directories exist without spinner.
322
339
  const directories = [
323
- openspecPath,
324
- path.join(openspecPath, 'specs'),
325
- path.join(openspecPath, 'changes'),
326
- path.join(openspecPath, 'changes', 'archive'),
340
+ codesddPath,
341
+ path.join(codesddPath, 'specs'),
342
+ path.join(codesddPath, 'changes'),
343
+ path.join(codesddPath, 'changes', 'archive'),
327
344
  ];
328
345
  for (const dir of directories) {
329
346
  await FileSystemUtils.createDirectory(dir);
@@ -349,7 +366,7 @@ export class InitCommand {
349
366
  const shouldGenerateCommands = delivery !== 'skills';
350
367
  const skillTemplates = shouldGenerateSkills ? getSkillTemplates(workflows) : [];
351
368
  const commandContents = shouldGenerateCommands ? getCommandContents(workflows) : [];
352
- const useSpinner = tools.length === 1;
369
+ const useSpinner = !this.silent && tools.length === 1;
353
370
  const toolResults = await Promise.all(tools.map(async (tool) => {
354
371
  const spinner = useSpinner ? ora(`Setting up ${tool.name}...`).start() : null;
355
372
  try {
@@ -359,7 +376,7 @@ export class InitCommand {
359
376
  const skillDir = path.join(skillsDir, dirName);
360
377
  const skillFile = path.join(skillDir, 'SKILL.md');
361
378
  const transformer = tool.value === 'opencode' ? transformToHyphenCommands : undefined;
362
- const skillContent = generateSkillContent(template, OPENSPEC_VERSION, transformer);
379
+ const skillContent = generateSkillContent(template, CODESDD_VERSION, transformer);
363
380
  await FileSystemUtils.writeFile(skillFile, skillContent);
364
381
  }));
365
382
  }
@@ -437,9 +454,9 @@ export class InitCommand {
437
454
  // ═══════════════════════════════════════════════════════════
438
455
  // CONFIG FILE
439
456
  // ═══════════════════════════════════════════════════════════
440
- async createConfig(openspecPath, _extendMode) {
441
- const configPath = path.join(openspecPath, 'config.yaml');
442
- const configYmlPath = path.join(openspecPath, 'config.yml');
457
+ async createConfig(codesddPath, _extendMode) {
458
+ const configPath = path.join(codesddPath, 'config.yaml');
459
+ const configYmlPath = path.join(codesddPath, 'config.yml');
443
460
  const configYamlExists = fs.existsSync(configPath);
444
461
  const configYmlExists = fs.existsSync(configYmlPath);
445
462
  if (configYamlExists || configYmlExists) {
@@ -451,15 +468,18 @@ export class InitCommand {
451
468
  // UI & OUTPUT
452
469
  // ═══════════════════════════════════════════════════════════
453
470
  displaySuccessMessage(projectPath, tools, results, configStatus) {
454
- console.log();
455
- console.log(chalk.bold(`${CLI_PRODUCT_NAME} Setup Complete`));
456
- console.log();
471
+ if (this.silent) {
472
+ return;
473
+ }
474
+ this.log();
475
+ this.log(chalk.bold(`${CLI_PRODUCT_NAME} Setup Complete`));
476
+ this.log();
457
477
  // Show created vs refreshed tools
458
478
  if (results.createdTools.length > 0) {
459
- console.log(`Created: ${results.createdTools.map((t) => t.name).join(', ')}`);
479
+ this.log(`Created: ${results.createdTools.map((t) => t.name).join(', ')}`);
460
480
  }
461
481
  if (results.refreshedTools.length > 0) {
462
- console.log(`Refreshed: ${results.refreshedTools.map((t) => t.name).join(', ')}`);
482
+ this.log(`Refreshed: ${results.refreshedTools.map((t) => t.name).join(', ')}`);
463
483
  }
464
484
  // Show counts (respecting profile filter)
465
485
  const successfulTools = [...results.createdTools, ...results.refreshedTools];
@@ -472,66 +492,68 @@ export class InitCommand {
472
492
  const skillCount = delivery !== 'commands' ? getSkillTemplates(workflows).length : 0;
473
493
  const commandCount = delivery !== 'skills' ? getCommandContents(workflows).length : 0;
474
494
  if (skillCount > 0 && commandCount > 0) {
475
- console.log(`${skillCount} skills and ${commandCount} commands in ${toolDirs}/`);
495
+ this.log(`${skillCount} skills and ${commandCount} commands in ${toolDirs}/`);
476
496
  }
477
497
  else if (skillCount > 0) {
478
- console.log(`${skillCount} skills in ${toolDirs}/`);
498
+ this.log(`${skillCount} skills in ${toolDirs}/`);
479
499
  }
480
500
  else if (commandCount > 0) {
481
- console.log(`${commandCount} commands in ${toolDirs}/`);
501
+ this.log(`${commandCount} commands in ${toolDirs}/`);
482
502
  }
483
503
  }
484
504
  // Show failures
485
505
  if (results.failedTools.length > 0) {
486
- console.log(chalk.red(`Failed: ${results.failedTools.map((f) => `${f.name} (${f.error.message})`).join(', ')}`));
506
+ this.log(chalk.red(`Failed: ${results.failedTools.map((f) => `${f.name} (${f.error.message})`).join(', ')}`));
487
507
  }
488
508
  // Show skipped commands
489
509
  if (results.commandsSkipped.length > 0) {
490
- console.log(chalk.dim(`Commands skipped for: ${results.commandsSkipped.join(', ')} (no adapter)`));
510
+ this.log(chalk.dim(`Commands skipped for: ${results.commandsSkipped.join(', ')} (no adapter)`));
491
511
  }
492
512
  if (results.removedCommandCount > 0) {
493
- console.log(chalk.dim(`Removed: ${results.removedCommandCount} command files (delivery: skills)`));
513
+ this.log(chalk.dim(`Removed: ${results.removedCommandCount} command files (delivery: skills)`));
494
514
  }
495
515
  if (results.removedSkillCount > 0) {
496
- console.log(chalk.dim(`Removed: ${results.removedSkillCount} skill directories (delivery: commands)`));
516
+ this.log(chalk.dim(`Removed: ${results.removedSkillCount} skill directories (delivery: commands)`));
497
517
  }
498
518
  // Config status
499
519
  if (configStatus === 'exists') {
500
520
  // Show actual filename (config.yaml or config.yml)
501
- const configYaml = path.join(projectPath, OPENSPEC_DIR_NAME, 'config.yaml');
502
- const configYml = path.join(projectPath, OPENSPEC_DIR_NAME, 'config.yml');
521
+ const configRoot = resolveLegacySpecLiveRoot(projectPath);
522
+ const configRootDisplay = path.relative(projectPath, configRoot) || LEGACY_SPEC_DIR_NAME;
523
+ const configYaml = path.join(configRoot, 'config.yaml');
524
+ const configYml = path.join(configRoot, 'config.yml');
503
525
  const configName = fs.existsSync(configYaml) ? 'config.yaml' : fs.existsSync(configYml) ? 'config.yml' : 'config.yaml';
504
- console.log(`Legacy config: openspec/${configName} (exists)`);
526
+ this.log(`Legacy config: ${configRootDisplay}/${configName} (exists)`);
505
527
  }
506
528
  else {
507
- console.log(chalk.dim(`Project config: not created (SDD uses .sdd/config.yaml)`));
529
+ this.log(chalk.dim(`Project config: not created (SDD uses .sdd/config.yaml)`));
508
530
  }
509
531
  // Getting started (task 7.6: show propose if in profile)
510
532
  const globalCfg = getGlobalConfig();
511
533
  const activeProfile = this.profileOverride ?? globalCfg.profile ?? 'core';
512
534
  const activeWorkflows = [...getProfileWorkflows(activeProfile, globalCfg.workflows)];
513
- console.log();
535
+ this.log();
514
536
  if (activeWorkflows.includes('propose')) {
515
- console.log(chalk.bold('Getting started:'));
516
- console.log(' Start your first change: /opsx:propose "your idea"');
537
+ this.log(chalk.bold('Getting started:'));
538
+ this.log(' Start your first change: /opsx:propose "your idea"');
517
539
  }
518
540
  else if (activeWorkflows.includes('new')) {
519
- console.log(chalk.bold('Getting started:'));
520
- console.log(' Start your first change: /opsx:new "your idea"');
541
+ this.log(chalk.bold('Getting started:'));
542
+ this.log(' Start your first change: /opsx:new "your idea"');
521
543
  }
522
544
  else {
523
- console.log(`Done. Run '${CLI_NAME} config profile' to configure your workflows.`);
545
+ this.log(`Done. Run '${CLI_NAME} config profile' to configure your workflows.`);
524
546
  }
525
547
  // Links
526
- console.log();
527
- console.log(`Learn more: ${chalk.cyan(CLI_REPOSITORY_URL)}`);
528
- console.log(`Feedback: ${chalk.cyan(CLI_ISSUES_URL)}`);
548
+ this.log();
549
+ this.log(`Learn more: ${chalk.cyan(CLI_REPOSITORY_URL)}`);
550
+ this.log(`Feedback: ${chalk.cyan(CLI_ISSUES_URL)}`);
529
551
  // Restart instruction if any tools were configured
530
552
  if (results.createdTools.length > 0 || results.refreshedTools.length > 0) {
531
- console.log();
532
- console.log(chalk.white('Restart your IDE for slash commands to take effect.'));
553
+ this.log();
554
+ this.log(chalk.white('Restart your IDE for slash commands to take effect.'));
533
555
  }
534
- console.log();
556
+ this.log();
535
557
  }
536
558
  async removeSkillDirs(skillsDir) {
537
559
  let removed = 0;
@@ -1,10 +1,10 @@
1
1
  /**
2
- * Legacy cleanup module for detecting and removing OpenSpec artifacts
2
+ * Legacy cleanup module for detecting and removing CodeSDD artifacts
3
3
  * from previous init versions during the migration to the skill-based workflow.
4
4
  */
5
5
  /**
6
6
  * Legacy config file names from the old ToolRegistry.
7
- * These were config files created at project root with OpenSpec markers.
7
+ * These were config files created at project root with CodeSDD markers.
8
8
  */
9
9
  export declare const LEGACY_CONFIG_FILES: readonly ["CLAUDE.md", "CLINE.md", "CODEBUDDY.md", "COSTRICT.md", "QODER.md", "IFLOW.md", "AGENTS.md", "QWEN.md"];
10
10
  /**
@@ -25,7 +25,7 @@ export interface LegacySlashCommandPattern {
25
25
  * Result of legacy artifact detection
26
26
  */
27
27
  export interface LegacyDetectionResult {
28
- /** Config files with OpenSpec markers detected */
28
+ /** Config files with CodeSDD markers detected */
29
29
  configFiles: string[];
30
30
  /** Config files to update (remove markers only, never delete) */
31
31
  configFilesToUpdate: string[];
@@ -33,24 +33,24 @@ export interface LegacyDetectionResult {
33
33
  slashCommandDirs: string[];
34
34
  /** Legacy slash command files found (for file-based tools) */
35
35
  slashCommandFiles: string[];
36
- /** Whether openspec/AGENTS.md exists */
36
+ /** Whether legacy-spec/AGENTS.md exists */
37
37
  hasOpenspecAgents: boolean;
38
- /** Whether openspec/project.md exists (preserved, migration hint only) */
38
+ /** Whether legacy-spec/project.md exists (preserved, migration hint only) */
39
39
  hasProjectMd: boolean;
40
- /** Whether root AGENTS.md has OpenSpec markers */
40
+ /** Whether root AGENTS.md has CodeSDD markers */
41
41
  hasRootAgentsWithMarkers: boolean;
42
42
  /** Whether any legacy artifacts were found */
43
43
  hasLegacyArtifacts: boolean;
44
44
  }
45
45
  /**
46
- * Detects all legacy OpenSpec artifacts in a project.
46
+ * Detects all legacy CodeSDD artifacts in a project.
47
47
  *
48
48
  * @param projectPath - The root path of the project
49
49
  * @returns Detection result with all found legacy artifacts
50
50
  */
51
51
  export declare function detectLegacyArtifacts(projectPath: string): Promise<LegacyDetectionResult>;
52
52
  /**
53
- * Detects legacy config files with OpenSpec markers.
53
+ * Detects legacy config files with CodeSDD markers.
54
54
  * All config files with markers are candidates for update (marker removal only).
55
55
  * Config files are NEVER deleted - they belong to the user's project root.
56
56
  *
@@ -72,7 +72,7 @@ export declare function detectLegacySlashCommands(projectPath: string): Promise<
72
72
  files: string[];
73
73
  }>;
74
74
  /**
75
- * Detects legacy OpenSpec structure files (AGENTS.md and project.md).
75
+ * Detects legacy CodeSDD structure files (AGENTS.md and project.md).
76
76
  *
77
77
  * @param projectPath - The root path of the project
78
78
  * @returns Object with detection results for structure files
@@ -83,25 +83,25 @@ export declare function detectLegacyStructureFiles(projectPath: string): Promise
83
83
  hasRootAgentsWithMarkers: boolean;
84
84
  }>;
85
85
  /**
86
- * Checks if content contains OpenSpec markers.
86
+ * Checks if content contains CodeSDD markers.
87
87
  *
88
88
  * @param content - File content to check
89
89
  * @returns True if both start and end markers are present
90
90
  */
91
- export declare function hasOpenSpecMarkers(content: string): boolean;
91
+ export declare function hasCodeSDDMarkers(content: string): boolean;
92
92
  /**
93
- * Checks if file content is 100% OpenSpec content (only markers and whitespace outside).
93
+ * Checks if file content is 100% CodeSDD content (only markers and whitespace outside).
94
94
  *
95
95
  * @param content - File content to check
96
96
  * @returns True if content outside markers is only whitespace
97
97
  */
98
- export declare function isOnlyOpenSpecContent(content: string): boolean;
98
+ export declare function isOnlyCodeSDDContent(content: string): boolean;
99
99
  /**
100
- * Removes the OpenSpec marker block from file content.
100
+ * Removes the CodeSDD marker block from file content.
101
101
  * Only removes markers that are on their own lines (ignores inline mentions).
102
102
  * Cleans up double blank lines that may result from removal.
103
103
  *
104
- * @param content - File content with OpenSpec markers
104
+ * @param content - File content with CodeSDD markers
105
105
  * @returns Content with marker block removed
106
106
  */
107
107
  export declare function removeMarkerBlock(content: string): string;
@@ -121,8 +121,8 @@ export interface CleanupResult {
121
121
  errors: string[];
122
122
  }
123
123
  /**
124
- * Cleans up legacy OpenSpec artifacts from a project.
125
- * Preserves openspec/project.md (shows migration hint instead of deleting).
124
+ * Cleans up legacy CodeSDD artifacts from a project.
125
+ * Preserves legacy-spec/project.md (shows migration hint instead of deleting).
126
126
  *
127
127
  * @param projectPath - The root path of the project
128
128
  * @param detection - Detection result from detectLegacyArtifacts