@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
@@ -1,3 +1,4 @@
1
+ import { CLI_COMMAND_MATRIX } from '../cli/command-matrix.js';
1
2
  /**
2
3
  * Common flags used across multiple commands
3
4
  */
@@ -26,13 +27,13 @@ const COMMON_FLAGS = {
26
27
  },
27
28
  };
28
29
  /**
29
- * Registry of all OpenSpec CLI commands with their flags and metadata.
30
- * This registry is used to generate shell completion scripts.
30
+ * Curated command metadata overrides for commands that need richer flag or
31
+ * positional completion than the command matrix can provide by itself.
31
32
  */
32
- export const COMMAND_REGISTRY = [
33
+ const COMMAND_METADATA_OVERRIDES = [
33
34
  {
34
35
  name: 'init',
35
- description: 'Initialize OpenSpec in your project',
36
+ description: 'Initialize CodeSDD in your project',
36
37
  acceptsPositional: true,
37
38
  positionalType: 'path',
38
39
  flags: [
@@ -43,12 +44,60 @@ export const COMMAND_REGISTRY = [
43
44
  },
44
45
  ],
45
46
  },
47
+ {
48
+ name: 'reload',
49
+ description: 'Reload CodeSDD project files using the installed CLI version',
50
+ acceptsPositional: true,
51
+ positionalType: 'path',
52
+ flags: [
53
+ {
54
+ name: 'tools',
55
+ description: 'Configure AI tools non-interactively (e.g., "all", "none", or comma-separated tool IDs)',
56
+ takesValue: true,
57
+ },
58
+ {
59
+ name: 'force',
60
+ description: 'Auto-cleanup legacy files without prompting',
61
+ },
62
+ {
63
+ name: 'profile',
64
+ description: 'Override global config profile (core or custom)',
65
+ takesValue: true,
66
+ },
67
+ {
68
+ name: 'lang',
69
+ description: 'SDD language: pt-BR|en-US',
70
+ takesValue: true,
71
+ values: ['pt-BR', 'en-US'],
72
+ },
73
+ {
74
+ name: 'layout',
75
+ description: 'SDD folder layout: en-US|legacy|pt-BR',
76
+ takesValue: true,
77
+ values: ['en-US', 'legacy', 'pt-BR'],
78
+ },
79
+ {
80
+ name: 'no-frontend',
81
+ description: 'Disable frontend module in the SDD bootstrap',
82
+ },
83
+ {
84
+ name: 'no-render',
85
+ description: 'Do not render Markdown views after reload',
86
+ },
87
+ COMMON_FLAGS.json,
88
+ ],
89
+ },
46
90
  {
47
91
  name: 'update',
48
- description: 'Update OpenSpec instruction files',
92
+ description: 'Update CodeSDD instruction files',
49
93
  acceptsPositional: true,
50
94
  positionalType: 'path',
51
- flags: [],
95
+ flags: [
96
+ {
97
+ name: 'force',
98
+ description: 'Force update even when tools are up to date',
99
+ },
100
+ ],
52
101
  },
53
102
  {
54
103
  name: 'list',
@@ -62,6 +111,13 @@ export const COMMAND_REGISTRY = [
62
111
  name: 'changes',
63
112
  description: 'List changes explicitly (default)',
64
113
  },
114
+ {
115
+ name: 'sort',
116
+ description: 'Sort order: recent (default) or name',
117
+ takesValue: true,
118
+ values: ['recent', 'name'],
119
+ },
120
+ COMMON_FLAGS.json,
65
121
  ],
66
122
  },
67
123
  {
@@ -92,7 +148,7 @@ export const COMMAND_REGISTRY = [
92
148
  COMMON_FLAGS.jsonValidation,
93
149
  {
94
150
  name: 'concurrency',
95
- description: 'Max concurrent validations (defaults to env OPENSPEC_CONCURRENCY or 6)',
151
+ description: 'Max concurrent validations (defaults to env CODESDD_CONCURRENCY or 6)',
96
152
  takesValue: true,
97
153
  },
98
154
  COMMON_FLAGS.noInteractive,
@@ -154,7 +210,7 @@ export const COMMAND_REGISTRY = [
154
210
  },
155
211
  {
156
212
  name: 'feedback',
157
- description: 'Submit feedback about OpenSpec',
213
+ description: 'Submit feedback about CodeSDD',
158
214
  acceptsPositional: true,
159
215
  flags: [
160
216
  {
@@ -166,7 +222,7 @@ export const COMMAND_REGISTRY = [
166
222
  },
167
223
  {
168
224
  name: 'change',
169
- description: 'Manage OpenSpec change proposals (deprecated)',
225
+ description: 'Manage legacy change proposals (deprecated)',
170
226
  flags: [],
171
227
  subcommands: [
172
228
  {
@@ -213,7 +269,7 @@ export const COMMAND_REGISTRY = [
213
269
  },
214
270
  {
215
271
  name: 'spec',
216
- description: 'Manage OpenSpec specifications',
272
+ description: 'Manage specifications',
217
273
  flags: [],
218
274
  subcommands: [
219
275
  {
@@ -266,7 +322,7 @@ export const COMMAND_REGISTRY = [
266
322
  },
267
323
  {
268
324
  name: 'completion',
269
- description: 'Manage shell completions for OpenSpec CLI',
325
+ description: 'Manage shell completions for CodeSDD CLI',
270
326
  flags: [],
271
327
  subcommands: [
272
328
  {
@@ -305,7 +361,7 @@ export const COMMAND_REGISTRY = [
305
361
  },
306
362
  {
307
363
  name: 'config',
308
- description: 'View and modify global OpenSpec configuration',
364
+ description: 'View and modify global CodeSDD configuration',
309
365
  flags: [
310
366
  {
311
367
  name: 'scope',
@@ -320,6 +376,20 @@ export const COMMAND_REGISTRY = [
320
376
  description: 'Show config file location',
321
377
  flags: [],
322
378
  },
379
+ {
380
+ name: 'init',
381
+ description: 'Initialize ~/.codesdd runtime files and idempotent shell integration',
382
+ flags: [
383
+ COMMON_FLAGS.json,
384
+ ],
385
+ },
386
+ {
387
+ name: 'doctor',
388
+ description: 'Run operational readiness checks for DeepAgents/Azure, cache, and Redis boundary',
389
+ flags: [
390
+ COMMON_FLAGS.json,
391
+ ],
392
+ },
323
393
  {
324
394
  name: 'list',
325
395
  description: 'Show all current settings',
@@ -379,6 +449,51 @@ export const COMMAND_REGISTRY = [
379
449
  description: 'Configure workflow profile (interactive picker or preset shortcut)',
380
450
  flags: [],
381
451
  },
452
+ {
453
+ name: 'redis',
454
+ description: 'Inspect and operate the optional Redis runtime backend',
455
+ flags: [],
456
+ subcommands: [
457
+ {
458
+ name: 'status',
459
+ description: 'Show Redis runtime status',
460
+ flags: [
461
+ COMMON_FLAGS.json,
462
+ ],
463
+ },
464
+ {
465
+ name: 'ping',
466
+ description: 'Ping Redis using the effective CodeSDD configuration',
467
+ flags: [
468
+ COMMON_FLAGS.json,
469
+ ],
470
+ },
471
+ {
472
+ name: 'bench',
473
+ description: 'Run a short redacted Redis latency benchmark',
474
+ flags: [
475
+ COMMON_FLAGS.json,
476
+ {
477
+ name: 'iterations',
478
+ description: 'Number of benchmark iterations',
479
+ takesValue: true,
480
+ },
481
+ ],
482
+ },
483
+ {
484
+ name: 'flush-namespace',
485
+ description: 'Delete only keys under the effective CodeSDD Redis namespace',
486
+ flags: [
487
+ COMMON_FLAGS.json,
488
+ {
489
+ name: 'yes',
490
+ short: 'y',
491
+ description: 'Confirm namespace-scoped deletion',
492
+ },
493
+ ],
494
+ },
495
+ ],
496
+ },
382
497
  ],
383
498
  },
384
499
  {
@@ -458,4 +573,77 @@ export const COMMAND_REGISTRY = [
458
573
  ],
459
574
  },
460
575
  ];
576
+ const HIDDEN_OR_INTERNAL_COMMAND_PATHS = new Set([
577
+ 'experimental',
578
+ '__complete',
579
+ ]);
580
+ function cloneCommandDefinition(command) {
581
+ return {
582
+ ...command,
583
+ flags: command.flags.map((flag) => ({ ...flag, values: flag.values ? [...flag.values] : undefined })),
584
+ subcommands: command.subcommands?.map(cloneCommandDefinition),
585
+ };
586
+ }
587
+ function collectLeafCommandPaths(commands, prefix = []) {
588
+ const paths = new Set();
589
+ for (const command of commands) {
590
+ const nextPrefix = [...prefix, command.name];
591
+ if (command.subcommands && command.subcommands.length > 0) {
592
+ for (const childPath of collectLeafCommandPaths(command.subcommands, nextPrefix)) {
593
+ paths.add(childPath);
594
+ }
595
+ }
596
+ else {
597
+ paths.add(nextPrefix.join(':'));
598
+ }
599
+ }
600
+ return paths;
601
+ }
602
+ function findOrCreateCommand(commands, name, description) {
603
+ const existing = commands.find((command) => command.name === name);
604
+ if (existing) {
605
+ return existing;
606
+ }
607
+ const created = {
608
+ name,
609
+ description,
610
+ flags: [],
611
+ };
612
+ commands.push(created);
613
+ return created;
614
+ }
615
+ function humanizeCommandPath(commandPath) {
616
+ return `Run ${commandPath.split(':').join(' ')} command`;
617
+ }
618
+ function addCommandPath(commands, commandPath) {
619
+ const segments = commandPath.split(':');
620
+ let currentCommands = commands;
621
+ segments.forEach((segment, index) => {
622
+ const isLeaf = index === segments.length - 1;
623
+ const definition = findOrCreateCommand(currentCommands, segment, isLeaf ? humanizeCommandPath(commandPath) : `Manage ${segments.slice(0, index + 1).join(' ')} commands`);
624
+ if (!isLeaf) {
625
+ definition.subcommands ??= [];
626
+ currentCommands = definition.subcommands;
627
+ }
628
+ });
629
+ }
630
+ function buildCompleteCommandRegistry(baseRegistry) {
631
+ const registry = baseRegistry.map(cloneCommandDefinition);
632
+ const existingLeafPaths = collectLeafCommandPaths(registry);
633
+ for (const entry of CLI_COMMAND_MATRIX) {
634
+ if (HIDDEN_OR_INTERNAL_COMMAND_PATHS.has(entry.commandPath)) {
635
+ continue;
636
+ }
637
+ if (!existingLeafPaths.has(entry.commandPath)) {
638
+ addCommandPath(registry, entry.commandPath);
639
+ existingLeafPaths.add(entry.commandPath);
640
+ }
641
+ }
642
+ return registry;
643
+ }
644
+ /**
645
+ * Registry of all visible CodeSDD CLI commands with their flags and metadata.
646
+ * This registry is used to generate shell completion scripts.
647
+ */
648
+ export const COMMAND_REGISTRY = buildCompleteCommandRegistry(COMMAND_METADATA_OVERRIDES);
461
649
  //# sourceMappingURL=command-registry.js.map
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Provides dynamic completion suggestions for OpenSpec items (changes and specs).
2
+ * Provides dynamic completion suggestions for CodeSDD items (changes and specs).
3
3
  * Implements a 2-second cache to avoid excessive file system operations during
4
4
  * tab completion.
5
5
  */
@@ -7,8 +7,10 @@ export declare class CompletionProvider {
7
7
  private readonly cacheTTLMs;
8
8
  private readonly projectRoot;
9
9
  private readonly cacheTTL;
10
+ private readonly projectFingerprint;
10
11
  private changeCache;
11
12
  private specCache;
13
+ private schemaCache;
12
14
  /**
13
15
  * Creates a new completion provider
14
16
  *
@@ -37,6 +39,12 @@ export declare class CompletionProvider {
37
39
  changeIds: string[];
38
40
  specIds: string[];
39
41
  }>;
42
+ /**
43
+ * Get all workflow schema names for completion
44
+ *
45
+ * @returns Array of schema names
46
+ */
47
+ getSchemaNames(): Promise<string[]>;
40
48
  /**
41
49
  * Clear all cached data
42
50
  */
@@ -47,6 +55,7 @@ export declare class CompletionProvider {
47
55
  * @returns Cache status information
48
56
  */
49
57
  getCacheStats(): {
58
+ projectFingerprint: string;
50
59
  changeCache: {
51
60
  valid: boolean;
52
61
  age?: number;
@@ -55,6 +64,10 @@ export declare class CompletionProvider {
55
64
  valid: boolean;
56
65
  age?: number;
57
66
  };
67
+ schemaCache: {
68
+ valid: boolean;
69
+ age?: number;
70
+ };
58
71
  };
59
72
  }
60
73
  //# sourceMappingURL=completion-provider.d.ts.map
@@ -1,6 +1,8 @@
1
1
  import { getActiveChangeIds, getSpecIds } from '../../utils/item-discovery.js';
2
+ import { listSchemas } from '../artifact-graph/index.js';
3
+ import { createProjectFingerprint } from '../global-config.js';
2
4
  /**
3
- * Provides dynamic completion suggestions for OpenSpec items (changes and specs).
5
+ * Provides dynamic completion suggestions for CodeSDD items (changes and specs).
4
6
  * Implements a 2-second cache to avoid excessive file system operations during
5
7
  * tab completion.
6
8
  */
@@ -8,8 +10,10 @@ export class CompletionProvider {
8
10
  cacheTTLMs;
9
11
  projectRoot;
10
12
  cacheTTL;
13
+ projectFingerprint;
11
14
  changeCache = null;
12
15
  specCache = null;
16
+ schemaCache = null;
13
17
  /**
14
18
  * Creates a new completion provider
15
19
  *
@@ -20,6 +24,7 @@ export class CompletionProvider {
20
24
  this.cacheTTLMs = cacheTTLMs;
21
25
  this.projectRoot = projectRoot;
22
26
  this.cacheTTL = cacheTTLMs;
27
+ this.projectFingerprint = createProjectFingerprint(projectRoot);
23
28
  }
24
29
  /**
25
30
  * Get all active change IDs for completion
@@ -73,12 +78,30 @@ export class CompletionProvider {
73
78
  ]);
74
79
  return { changeIds, specIds };
75
80
  }
81
+ /**
82
+ * Get all workflow schema names for completion
83
+ *
84
+ * @returns Array of schema names
85
+ */
86
+ async getSchemaNames() {
87
+ const now = Date.now();
88
+ if (this.schemaCache && now - this.schemaCache.timestamp < this.cacheTTL) {
89
+ return this.schemaCache.data;
90
+ }
91
+ const schemaNames = listSchemas(this.projectRoot);
92
+ this.schemaCache = {
93
+ data: schemaNames,
94
+ timestamp: now,
95
+ };
96
+ return schemaNames;
97
+ }
76
98
  /**
77
99
  * Clear all cached data
78
100
  */
79
101
  clearCache() {
80
102
  this.changeCache = null;
81
103
  this.specCache = null;
104
+ this.schemaCache = null;
82
105
  }
83
106
  /**
84
107
  * Get cache statistics for debugging
@@ -88,6 +111,7 @@ export class CompletionProvider {
88
111
  getCacheStats() {
89
112
  const now = Date.now();
90
113
  return {
114
+ projectFingerprint: this.projectFingerprint,
91
115
  changeCache: {
92
116
  valid: this.changeCache !== null && now - this.changeCache.timestamp < this.cacheTTL,
93
117
  age: this.changeCache ? now - this.changeCache.timestamp : undefined,
@@ -96,6 +120,10 @@ export class CompletionProvider {
96
120
  valid: this.specCache !== null && now - this.specCache.timestamp < this.cacheTTL,
97
121
  age: this.specCache ? now - this.specCache.timestamp : undefined,
98
122
  },
123
+ schemaCache: {
124
+ valid: this.schemaCache !== null && now - this.schemaCache.timestamp < this.cacheTTL,
125
+ age: this.schemaCache ? now - this.schemaCache.timestamp : undefined,
126
+ },
99
127
  };
100
128
  }
101
129
  }
@@ -1,6 +1,6 @@
1
1
  import { CompletionGenerator, CommandDefinition } from '../types.js';
2
2
  /**
3
- * Generates Bash completion scripts for the OpenSpec CLI.
3
+ * Generates Bash completion scripts for the CodeSDD CLI.
4
4
  * Follows Bash completion conventions using complete builtin and COMPREPLY array.
5
5
  */
6
6
  export declare class BashGenerator implements CompletionGenerator {
@@ -1,6 +1,6 @@
1
1
  import { BASH_DYNAMIC_HELPERS } from '../templates/bash-templates.js';
2
2
  /**
3
- * Generates Bash completion scripts for the OpenSpec CLI.
3
+ * Generates Bash completion scripts for the CodeSDD CLI.
4
4
  * Follows Bash completion conventions using complete builtin and COMPREPLY array.
5
5
  */
6
6
  export class BashGenerator {
@@ -25,10 +25,10 @@ export class BashGenerator {
25
25
  // Dynamic completion helpers from template
26
26
  const helpers = BASH_DYNAMIC_HELPERS;
27
27
  // Assemble final script with template literal
28
- return `# Bash completion script for OpenSpec CLI
28
+ return `# Bash completion script for CodeSDD CLI
29
29
  # Auto-generated - do not edit manually
30
30
 
31
- _openspec_completion() {
31
+ _codesdd_completion() {
32
32
  local cur prev words cword
33
33
 
34
34
  # Use _init_completion if available (from bash-completion package)
@@ -47,7 +47,6 @@ _openspec_completion() {
47
47
  fi
48
48
 
49
49
  local cmd="\${words[1]}"
50
- local subcmd="\${words[2]}"
51
50
 
52
51
  # Top-level commands
53
52
  if [[ $cword -eq 1 ]]; then
@@ -65,13 +64,13 @@ ${commandCases}
65
64
  }
66
65
 
67
66
  ${helpers}
68
- complete -F _openspec_completion openspec
67
+ complete -F _codesdd_completion codesdd
69
68
  `;
70
69
  }
71
70
  /**
72
71
  * Generate completion case logic for a command
73
72
  */
74
- generateCommandCase(cmd, indent) {
73
+ generateCommandCase(cmd, indent, depth = 2) {
75
74
  const lines = [];
76
75
  // Handle subcommands
77
76
  if (cmd.subcommands && cmd.subcommands.length > 0) {
@@ -91,16 +90,22 @@ complete -F _openspec_completion openspec
91
90
  lines.push(`${indent}fi`);
92
91
  lines.push('');
93
92
  }
94
- lines.push(`${indent}if [[ $cword -eq 2 ]]; then`);
93
+ lines.push(`${indent}if [[ $cword -eq ${depth} ]]; then`);
95
94
  lines.push(`${indent} local subcommands="` + cmd.subcommands.map(s => this.escapeCommandName(s.name)).join(' ') + '"');
96
95
  lines.push(`${indent} COMPREPLY=($(compgen -W "$subcommands" -- "$cur"))`);
97
96
  lines.push(`${indent} return 0`);
98
97
  lines.push(`${indent}fi`);
99
98
  lines.push('');
100
- lines.push(`${indent}case "$subcmd" in`);
99
+ lines.push(`${indent}local subcmd_${depth}="\${words[${depth}]}"`);
100
+ lines.push(`${indent}case "$subcmd_${depth}" in`);
101
101
  for (const subcmd of cmd.subcommands) {
102
102
  lines.push(`${indent} ${subcmd.name})`);
103
- lines.push(...this.generateArgumentCompletion(subcmd, indent + ' '));
103
+ if (subcmd.subcommands && subcmd.subcommands.length > 0) {
104
+ lines.push(...this.generateCommandCase(subcmd, indent + ' ', depth + 1));
105
+ }
106
+ else {
107
+ lines.push(...this.generateArgumentCompletion(subcmd, indent + ' '));
108
+ }
104
109
  lines.push(`${indent} ;;`);
105
110
  }
106
111
  lines.push(`${indent}esac`);
@@ -145,13 +150,13 @@ complete -F _openspec_completion openspec
145
150
  const lines = [];
146
151
  switch (positionalType) {
147
152
  case 'change-id':
148
- lines.push(`${indent}_openspec_complete_changes`);
153
+ lines.push(`${indent}_codesdd_complete_changes`);
149
154
  break;
150
155
  case 'spec-id':
151
- lines.push(`${indent}_openspec_complete_specs`);
156
+ lines.push(`${indent}_codesdd_complete_specs`);
152
157
  break;
153
158
  case 'change-or-spec-id':
154
- lines.push(`${indent}_openspec_complete_items`);
159
+ lines.push(`${indent}_codesdd_complete_items`);
155
160
  break;
156
161
  case 'shell':
157
162
  lines.push(`${indent}local shells="zsh bash fish powershell"`);
@@ -160,6 +165,9 @@ complete -F _openspec_completion openspec
160
165
  case 'path':
161
166
  lines.push(`${indent}COMPREPLY=($(compgen -f -- "$cur"))`);
162
167
  break;
168
+ case 'schema-name':
169
+ lines.push(`${indent}_codesdd_complete_schemas`);
170
+ break;
163
171
  }
164
172
  return lines;
165
173
  }
@@ -1,6 +1,6 @@
1
1
  import { CompletionGenerator, CommandDefinition } from '../types.js';
2
2
  /**
3
- * Generates Fish completion scripts for the OpenSpec CLI.
3
+ * Generates Fish completion scripts for the CodeSDD CLI.
4
4
  * Follows Fish completion conventions using the complete command.
5
5
  */
6
6
  export declare class FishGenerator implements CompletionGenerator {
@@ -16,6 +16,14 @@ export declare class FishGenerator implements CompletionGenerator {
16
16
  * Generate completions for a specific command
17
17
  */
18
18
  private generateCommandCompletions;
19
+ /**
20
+ * Generate completions for a command path at any depth.
21
+ */
22
+ private generateNodeCompletions;
23
+ /**
24
+ * Generate a Fish condition that checks every command segment in a path.
25
+ */
26
+ private generatePathCondition;
19
27
  /**
20
28
  * Generate flag completion
21
29
  */