@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
@@ -0,0 +1,7 @@
1
+ export { FileSystemLockAdapter, InMemoryCoordinationCache, InMemoryCoordinationEventBus, InMemoryCoordinationQueue, MultiTierCoordinationCache, createFilesystemFirstCoordinationAdapters, type CoordinationCacheAdapter, type CoordinationEvent, type CoordinationEventBusAdapter, type CoordinationLockAdapter, type CoordinationQueueAdapter, type SddCoordinationAdapters, } from '../../core/sdd/coordination/coordination-adapters.js';
2
+ export { RedisClientFactory, RedisCoordinationCache, RedisEventBusAdapter, RedisLockAdapter, RedisQueueAdapter, RedisWorkDeduper, buildRedisKey, hashRedisKey, redactRedisUrl, resolveRedisBoundaryConfig, resolveRedisRuntimeConfig, sanitizeRedisError, type RedisOperationalReport, type RedisRuntimeConfig, type RedisRuntimeStatus, } from '../../core/sdd/coordination/redis-runtime.js';
3
+ export { InMemoryAdapter } from '../../core/sdd/store/in-memory-adapter.js';
4
+ export { YamlFileAdapter } from '../../core/sdd/store/yaml-file-adapter.js';
5
+ export { createInMemorySddStores, createSddStores, type SddStores } from '../../core/sdd/store/sdd-stores.js';
6
+ export type { StateStore } from '../../core/sdd/store/state-store.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,6 @@
1
+ export { FileSystemLockAdapter, InMemoryCoordinationCache, InMemoryCoordinationEventBus, InMemoryCoordinationQueue, MultiTierCoordinationCache, createFilesystemFirstCoordinationAdapters, } from '../../core/sdd/coordination/coordination-adapters.js';
2
+ export { RedisClientFactory, RedisCoordinationCache, RedisEventBusAdapter, RedisLockAdapter, RedisQueueAdapter, RedisWorkDeduper, buildRedisKey, hashRedisKey, redactRedisUrl, resolveRedisBoundaryConfig, resolveRedisRuntimeConfig, sanitizeRedisError, } from '../../core/sdd/coordination/redis-runtime.js';
3
+ export { InMemoryAdapter } from '../../core/sdd/store/in-memory-adapter.js';
4
+ export { YamlFileAdapter } from '../../core/sdd/store/yaml-file-adapter.js';
5
+ export { createInMemorySddStores, createSddStores } from '../../core/sdd/store/sdd-stores.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,3 @@
1
+ export { registerSddCommand } from '../../../commands/sdd.js';
2
+ export { registerPluginCommands } from '../../../commands/sdd/plugin.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,3 @@
1
+ export { registerSddCommand } from '../../../commands/sdd.js';
2
+ export { registerPluginCommands } from '../../../commands/sdd/plugin.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,3 @@
1
+ export type { BacklogItem, BacklogState, DiscoveryIndexState, DiscoveryRecord, FinalizeQueueState, FrontendGapsState, FrontendMapState, RepoMapState, ServiceCatalogState, TransitionLogState, } from '../../core/sdd/types.js';
2
+ export { stringifyWorkspaceYamlDocument, workspaceDocumentSchemas, workspaceSchemaForFile, type WorkspaceChangelogDocument, type WorkspaceDocumentFileName, type WorkspacePlanDocument, type WorkspaceQualityDocument, type WorkspaceSpecDocument, type WorkspaceTasksDocument, } from '../../core/sdd/workspace-schemas.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { stringifyWorkspaceYamlDocument, workspaceDocumentSchemas, workspaceSchemaForFile, } from '../../core/sdd/workspace-schemas.js';
2
+ //# sourceMappingURL=index.js.map
@@ -8,9 +8,10 @@ export interface GlobalConfig {
8
8
  }
9
9
  /**
10
10
  * Get the path to the global config file.
11
- * Uses ~/.config/openspec/config.json on all platforms.
11
+ * Uses ~/.codesdd/config.toml.
12
12
  */
13
13
  export declare function getConfigPath(): string;
14
+ export declare function getLegacyConfigPath(): string;
14
15
  /**
15
16
  * Read the global config file.
16
17
  * Returns an empty object if the file doesn't exist.
@@ -1,17 +1,20 @@
1
1
  /**
2
2
  * Global configuration for telemetry state.
3
- * Stores anonymous ID and notice-seen flag in ~/.config/openspec/config.json
3
+ * Stores anonymous ID and notice-seen flag in ~/.codesdd/config.toml.
4
+ * The legacy XDG JSON path remains a read-only compatibility fallback.
4
5
  */
5
6
  import { promises as fs } from 'fs';
6
7
  import path from 'path';
7
- import os from 'os';
8
+ import { getGlobalConfigPath, getLegacyGlobalConfigPath, parseTomlContent, stringifyTomlContent, } from '../core/global-config.js';
8
9
  /**
9
10
  * Get the path to the global config file.
10
- * Uses ~/.config/openspec/config.json on all platforms.
11
+ * Uses ~/.codesdd/config.toml.
11
12
  */
12
13
  export function getConfigPath() {
13
- const configDir = path.join(os.homedir(), '.config', 'openspec');
14
- return path.join(configDir, 'config.json');
14
+ return getGlobalConfigPath();
15
+ }
16
+ export function getLegacyConfigPath() {
17
+ return getLegacyGlobalConfigPath();
15
18
  }
16
19
  /**
17
20
  * Read the global config file.
@@ -21,11 +24,17 @@ export async function readConfig() {
21
24
  const configPath = getConfigPath();
22
25
  try {
23
26
  const content = await fs.readFile(configPath, 'utf-8');
24
- return JSON.parse(content);
27
+ return parseTomlContent(content);
25
28
  }
26
29
  catch (error) {
27
30
  if (error.code === 'ENOENT') {
28
- return {};
31
+ try {
32
+ const legacyContent = await fs.readFile(getLegacyConfigPath(), 'utf-8');
33
+ return JSON.parse(legacyContent);
34
+ }
35
+ catch {
36
+ return {};
37
+ }
29
38
  }
30
39
  // If parse fails or other error, return empty config
31
40
  return {};
@@ -47,7 +56,7 @@ export async function writeConfig(updates) {
47
56
  if (updates.telemetry && existing.telemetry) {
48
57
  merged.telemetry = { ...existing.telemetry, ...updates.telemetry };
49
58
  }
50
- await fs.writeFile(configPath, JSON.stringify(merged, null, 2) + '\n');
59
+ await fs.writeFile(configPath, stringifyTomlContent(merged));
51
60
  }
52
61
  /**
53
62
  * Get the telemetry config section.
@@ -1,8 +1,16 @@
1
+ /**
2
+ * PostHog hardcodes `console.error('Error while flushing PostHog', err)` in
3
+ * its core flush path (see @posthog/core posthog-core-stateless.mjs L38).
4
+ * The library exposes no option to disable it, so we filter those specific
5
+ * lines at the console.error layer. Non-PostHog calls pass through unchanged.
6
+ */
7
+ export declare function __installPosthogErrorSilencer(): void;
1
8
  /**
2
9
  * Check if telemetry is enabled.
3
10
  *
4
11
  * Disabled when:
5
- * - OPENSPEC_TELEMETRY=0
12
+ * - CODESDD_TELEMETRY=0
13
+ * - CODESDD_TELEMETRY=0 (legacy alias)
6
14
  * - DO_NOT_TRACK=1
7
15
  * - CI=true (any CI environment)
8
16
  */
@@ -16,7 +24,7 @@ export declare function getOrCreateAnonymousId(): Promise<string>;
16
24
  * Track a command execution.
17
25
  *
18
26
  * @param commandName - The command name (e.g., 'init', 'change:apply')
19
- * @param version - The OpenSpec version
27
+ * @param version - The CodeSDD version
20
28
  */
21
29
  export declare function trackCommand(commandName: string, version: string): Promise<void>;
22
30
  export declare function trackCommandCompleted(commandName: string, version: string, durationMs: number, status?: 'success' | 'error'): Promise<void>;
@@ -4,7 +4,7 @@
4
4
  * Privacy-first design:
5
5
  * - Only tracks command name and version
6
6
  * - No arguments, file paths, or content
7
- * - Opt-out via OPENSPEC_TELEMETRY=0 or DO_NOT_TRACK=1
7
+ * - Opt-out via CODESDD_TELEMETRY=0, legacy CODESDD_TELEMETRY=0, or DO_NOT_TRACK=1
8
8
  * - Auto-disabled in CI environments
9
9
  * - Anonymous ID is a random UUID with no relation to the user
10
10
  */
@@ -14,22 +14,49 @@ import { getTelemetryConfig, updateTelemetryConfig } from './config.js';
14
14
  // PostHog API key - public key for client-side analytics
15
15
  // This is safe to embed as it only allows sending events, not reading data
16
16
  const POSTHOG_API_KEY = 'phc_Hthu8YvaIJ9QaFKyTG4TbVwkbd5ktcAFzVTKeMmoW2g';
17
- // Using reverse proxy to avoid ad blockers and keep traffic on our domain
18
- const POSTHOG_HOST = 'https://edge.openspec.dev';
17
+ // Legacy reverse proxy retained until the telemetry endpoint is renamed.
18
+ const POSTHOG_HOST = 'https://edge.sdd.dev';
19
19
  let posthogClient = null;
20
20
  let anonymousId = null;
21
21
  const SHUTDOWN_TIMEOUT_MS = 200;
22
+ let consoleErrorPatched = false;
23
+ /**
24
+ * PostHog hardcodes `console.error('Error while flushing PostHog', err)` in
25
+ * its core flush path (see @posthog/core posthog-core-stateless.mjs L38).
26
+ * The library exposes no option to disable it, so we filter those specific
27
+ * lines at the console.error layer. Non-PostHog calls pass through unchanged.
28
+ */
29
+ export function __installPosthogErrorSilencer() {
30
+ installPosthogErrorSilencer();
31
+ }
32
+ function installPosthogErrorSilencer() {
33
+ if (consoleErrorPatched)
34
+ return;
35
+ consoleErrorPatched = true;
36
+ const originalError = console.error.bind(console);
37
+ console.error = (...args) => {
38
+ const first = args[0];
39
+ if (typeof first === 'string' && first.startsWith('Error while flushing PostHog')) {
40
+ return;
41
+ }
42
+ originalError(...args);
43
+ };
44
+ }
22
45
  /**
23
46
  * Check if telemetry is enabled.
24
47
  *
25
48
  * Disabled when:
26
- * - OPENSPEC_TELEMETRY=0
49
+ * - CODESDD_TELEMETRY=0
50
+ * - CODESDD_TELEMETRY=0 (legacy alias)
27
51
  * - DO_NOT_TRACK=1
28
52
  * - CI=true (any CI environment)
29
53
  */
30
54
  export function isTelemetryEnabled() {
31
55
  // Check explicit opt-out
32
- if (process.env.OPENSPEC_TELEMETRY === '0') {
56
+ if (process.env.CODESDD_TELEMETRY === '0') {
57
+ return false;
58
+ }
59
+ if (process.env.CODESDD_TELEMETRY === '0') {
33
60
  return false;
34
61
  }
35
62
  // Respect DO_NOT_TRACK standard
@@ -72,11 +99,17 @@ export async function getOrCreateAnonymousId() {
72
99
  */
73
100
  function getClient() {
74
101
  if (!posthogClient) {
102
+ installPosthogErrorSilencer();
75
103
  posthogClient = new PostHog(POSTHOG_API_KEY, {
76
104
  host: POSTHOG_HOST,
77
105
  flushAt: 1, // Send immediately, don't batch
78
106
  flushInterval: 0, // No timer-based flushing
79
107
  });
108
+ if (typeof posthogClient.on === 'function') {
109
+ posthogClient.on('error', () => {
110
+ // Swallow emitted errors; PostHog logs them via console.error which is filtered.
111
+ });
112
+ }
80
113
  }
81
114
  return posthogClient;
82
115
  }
@@ -84,7 +117,7 @@ function getClient() {
84
117
  * Track a command execution.
85
118
  *
86
119
  * @param commandName - The command name (e.g., 'init', 'change:apply')
87
- * @param version - The OpenSpec version
120
+ * @param version - The CodeSDD version
88
121
  */
89
122
  export async function trackCommand(commandName, version) {
90
123
  if (!isTelemetryEnabled()) {
@@ -173,7 +206,7 @@ export async function maybeShowTelemetryNotice() {
173
206
  return;
174
207
  }
175
208
  // Display notice
176
- console.log('Note: OpenSpec collects anonymous usage stats. Opt out: OPENSPEC_TELEMETRY=0');
209
+ console.log('Note: CodeSDD collects anonymous usage stats. Opt out: CODESDD_TELEMETRY=0');
177
210
  // Mark as seen
178
211
  await updateTelemetryConfig({ noticeSeen: true });
179
212
  }
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * ASCII art animation patterns for the welcome screen.
3
- * OpenSpec logo animation - diamond/rhombus shape with hollow center "O".
3
+ * CodeSDD logo animation - diamond/rhombus shape with hollow center "O".
4
4
  */
5
5
  /**
6
- * Welcome animation frames - OpenSpec logo building from center
6
+ * Welcome animation frames - CodeSDD logo building from center
7
7
  * 7 rows × 6 columns diamond with hollow center "O"
8
8
  * Center bar is 2 cols × 3 rows (rows 3,4,5 cols 3,4)
9
9
  * Each frame is an array of strings (lines of ASCII art)
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * ASCII art animation patterns for the welcome screen.
3
- * OpenSpec logo animation - diamond/rhombus shape with hollow center "O".
3
+ * CodeSDD logo animation - diamond/rhombus shape with hollow center "O".
4
4
  */
5
5
  // Detect if full Unicode is supported
6
6
  const supportsUnicode = process.platform !== 'win32' ||
@@ -15,7 +15,7 @@ const _ = CHARS.empty;
15
15
  const F = CHARS.full;
16
16
  const D = CHARS.dim;
17
17
  /**
18
- * Welcome animation frames - OpenSpec logo building from center
18
+ * Welcome animation frames - CodeSDD logo building from center
19
19
  * 7 rows × 6 columns diamond with hollow center "O"
20
20
  * Center bar is 2 cols × 3 rows (rows 3,4,5 cols 3,4)
21
21
  * Each frame is an array of strings (lines of ASCII art)
@@ -13,8 +13,8 @@ const ART_COLUMN_WIDTH = 24;
13
13
  */
14
14
  function getWelcomeText() {
15
15
  return [
16
- chalk.white.bold('Welcome to OpenSpec'),
17
- chalk.dim('A lightweight spec-driven framework'),
16
+ chalk.white.bold('Welcome to CodeSDD'),
17
+ chalk.dim('An AI-native spec-driven framework'),
18
18
  '',
19
19
  chalk.white('This setup will configure:'),
20
20
  chalk.dim(' • Agent Skills for AI tools'),
@@ -17,7 +17,7 @@ export declare class ChangeMetadataError extends Error {
17
17
  */
18
18
  export declare function validateSchemaName(schemaName: string, projectRoot?: string): string;
19
19
  /**
20
- * Writes change metadata to .openspec.yaml in the change directory.
20
+ * Writes change metadata to .sdd.yaml in the change directory.
21
21
  *
22
22
  * @param changeDir - The path to the change directory
23
23
  * @param metadata - The metadata to write
@@ -26,7 +26,7 @@ export declare function validateSchemaName(schemaName: string, projectRoot?: str
26
26
  */
27
27
  export declare function writeChangeMetadata(changeDir: string, metadata: ChangeMetadata, projectRoot?: string): void;
28
28
  /**
29
- * Reads change metadata from .openspec.yaml in the change directory.
29
+ * Reads change metadata from .sdd.yaml in the change directory.
30
30
  *
31
31
  * @param changeDir - The path to the change directory
32
32
  * @param projectRoot - Optional project root for project-local schema resolution
@@ -39,8 +39,8 @@ export declare function readChangeMetadata(changeDir: string, projectRoot?: stri
39
39
  *
40
40
  * Resolution order:
41
41
  * 1. Explicit schema (if provided)
42
- * 2. Schema from .openspec.yaml metadata (if exists)
43
- * 3. Schema from openspec/config.yaml (if exists)
42
+ * 2. Schema from .sdd.yaml metadata (if exists)
43
+ * 3. Schema from legacy-spec/config.yaml (if exists)
44
44
  * 4. Default 'spec-driven'
45
45
  *
46
46
  * @param changeDir - The path to the change directory
@@ -4,7 +4,7 @@ import * as yaml from 'yaml';
4
4
  import { ChangeMetadataSchema } from '../core/artifact-graph/types.js';
5
5
  import { listSchemas } from '../core/artifact-graph/resolver.js';
6
6
  import { readProjectConfig } from '../core/project-config.js';
7
- const METADATA_FILENAME = '.openspec.yaml';
7
+ const METADATA_FILENAME = '.sdd.yaml';
8
8
  /**
9
9
  * Error thrown when change metadata validation fails.
10
10
  */
@@ -34,7 +34,7 @@ export function validateSchemaName(schemaName, projectRoot) {
34
34
  return schemaName;
35
35
  }
36
36
  /**
37
- * Writes change metadata to .openspec.yaml in the change directory.
37
+ * Writes change metadata to .sdd.yaml in the change directory.
38
38
  *
39
39
  * @param changeDir - The path to the change directory
40
40
  * @param metadata - The metadata to write
@@ -61,7 +61,7 @@ export function writeChangeMetadata(changeDir, metadata, projectRoot) {
61
61
  }
62
62
  }
63
63
  /**
64
- * Reads change metadata from .openspec.yaml in the change directory.
64
+ * Reads change metadata from .sdd.yaml in the change directory.
65
65
  *
66
66
  * @param changeDir - The path to the change directory
67
67
  * @param projectRoot - Optional project root for project-local schema resolution
@@ -106,8 +106,8 @@ export function readChangeMetadata(changeDir, projectRoot) {
106
106
  *
107
107
  * Resolution order:
108
108
  * 1. Explicit schema (if provided)
109
- * 2. Schema from .openspec.yaml metadata (if exists)
110
- * 3. Schema from openspec/config.yaml (if exists)
109
+ * 2. Schema from .sdd.yaml metadata (if exists)
110
+ * 3. Schema from legacy-spec/config.yaml (if exists)
111
111
  * 4. Default 'spec-driven'
112
112
  *
113
113
  * @param changeDir - The path to the change directory
@@ -115,7 +115,7 @@ export function readChangeMetadata(changeDir, projectRoot) {
115
115
  * @returns The resolved schema name
116
116
  */
117
117
  export function resolveSchemaForChange(changeDir, explicitSchema) {
118
- // Derive project root from changeDir (changeDir is typically projectRoot/openspec/changes/change-name)
118
+ // Derive project root from changeDir (changeDir is typically projectRoot/legacy-spec/changes/change-name)
119
119
  const projectRoot = path.resolve(changeDir, '../../..');
120
120
  // 1. Explicit override wins
121
121
  if (explicitSchema) {
@@ -39,7 +39,7 @@ export declare function validateChangeName(name: string): ValidationResult;
39
39
  /**
40
40
  * Creates a new change directory with metadata file.
41
41
  *
42
- * @param projectRoot - The root directory of the project (where `openspec/` lives)
42
+ * @param projectRoot - The root directory of a project with compatibility `legacy-spec/` artifacts
43
43
  * @param name - The change name (must be valid kebab-case)
44
44
  * @param options - Optional settings for the change
45
45
  * @throws Error if the change name is invalid
@@ -49,12 +49,12 @@ export declare function validateChangeName(name: string): ValidationResult;
49
49
  * @returns Result containing the resolved schema name
50
50
  *
51
51
  * @example
52
- * // Creates openspec/changes/add-auth/ with default schema
52
+ * // Creates compatibility legacy-spec/changes/add-auth/ with default schema
53
53
  * const result = await createChange('/path/to/project', 'add-auth')
54
54
  * console.log(result.schema) // 'spec-driven' or value from config
55
55
  *
56
56
  * @example
57
- * // Creates openspec/changes/add-auth/ with custom schema
57
+ * // Creates compatibility legacy-spec/changes/add-auth/ with custom schema
58
58
  * const result = await createChange('/path/to/project', 'add-auth', { schema: 'my-workflow' })
59
59
  * console.log(result.schema) // 'my-workflow'
60
60
  */
@@ -1,7 +1,7 @@
1
1
  import { FileSystemUtils } from './file-system.js';
2
2
  import { writeChangeMetadata, validateSchemaName } from './change-metadata.js';
3
3
  import { readProjectConfig } from '../core/project-config.js';
4
- import { resolveOpenSpecLiveSubpath } from '../core/sdd/services/legacy-capability.service.js';
4
+ import { resolveLegacySpecLiveSubpath } from '../core/sdd/services/legacy-capability.service.js';
5
5
  const DEFAULT_SCHEMA = 'spec-driven';
6
6
  /**
7
7
  * Validates that a change name follows kebab-case conventions.
@@ -59,7 +59,7 @@ export function validateChangeName(name) {
59
59
  /**
60
60
  * Creates a new change directory with metadata file.
61
61
  *
62
- * @param projectRoot - The root directory of the project (where `openspec/` lives)
62
+ * @param projectRoot - The root directory of a project with compatibility `legacy-spec/` artifacts
63
63
  * @param name - The change name (must be valid kebab-case)
64
64
  * @param options - Optional settings for the change
65
65
  * @throws Error if the change name is invalid
@@ -69,12 +69,12 @@ export function validateChangeName(name) {
69
69
  * @returns Result containing the resolved schema name
70
70
  *
71
71
  * @example
72
- * // Creates openspec/changes/add-auth/ with default schema
72
+ * // Creates compatibility legacy-spec/changes/add-auth/ with default schema
73
73
  * const result = await createChange('/path/to/project', 'add-auth')
74
74
  * console.log(result.schema) // 'spec-driven' or value from config
75
75
  *
76
76
  * @example
77
- * // Creates openspec/changes/add-auth/ with custom schema
77
+ * // Creates compatibility legacy-spec/changes/add-auth/ with custom schema
78
78
  * const result = await createChange('/path/to/project', 'add-auth', { schema: 'my-workflow' })
79
79
  * console.log(result.schema) // 'my-workflow'
80
80
  */
@@ -103,7 +103,7 @@ export async function createChange(projectRoot, name, options = {}) {
103
103
  // Validate the resolved schema
104
104
  validateSchemaName(schemaName, projectRoot);
105
105
  // Build the change directory path
106
- const changeDir = resolveOpenSpecLiveSubpath(projectRoot, 'changes', name);
106
+ const changeDir = resolveLegacySpecLiveSubpath(projectRoot, 'changes', name);
107
107
  // Check if change already exists
108
108
  if (await FileSystemUtils.directoryExists(changeDir)) {
109
109
  throw new Error(`Change '${name}' already exists at ${changeDir}`);
@@ -204,7 +204,7 @@ export class FileSystemUtils {
204
204
  }
205
205
  return await this.ensureWritePermissions(parentDir);
206
206
  }
207
- const testFile = path.join(dirPath, '.openspec-test-' + Date.now() + '-' + Math.random().toString(36).slice(2));
207
+ const testFile = path.join(dirPath, '.sdd-test-' + Date.now() + '-' + Math.random().toString(36).slice(2));
208
208
  await fs.writeFile(testFile, '');
209
209
  // On Windows, file may be temporarily locked by antivirus or indexing services.
210
210
  // Retry unlink with a small delay if it fails.
@@ -11,7 +11,7 @@ export function resolveNoInteractive(value) {
11
11
  export function isInteractive(value) {
12
12
  if (resolveNoInteractive(value))
13
13
  return false;
14
- if (process.env.OPEN_SPEC_INTERACTIVE === '0')
14
+ if (process.env.CODESDD_INTERACTIVE === '0')
15
15
  return false;
16
16
  // Respect the standard CI environment variable (set by GitHub Actions, GitLab CI, Travis, etc.)
17
17
  if ('CI' in process.env)
@@ -1,8 +1,8 @@
1
1
  import { promises as fs } from 'fs';
2
2
  import path from 'path';
3
- import { resolveOpenSpecSubpath } from '../core/sdd/services/legacy-capability.service.js';
3
+ import { resolveLegacySpecSubpath } from '../core/sdd/services/legacy-capability.service.js';
4
4
  export async function getActiveChangeIds(root = process.cwd()) {
5
- const changesPath = resolveOpenSpecSubpath(root, 'changes');
5
+ const changesPath = resolveLegacySpecSubpath(root, 'changes');
6
6
  try {
7
7
  const entries = await fs.readdir(changesPath, { withFileTypes: true });
8
8
  const result = [];
@@ -25,7 +25,7 @@ export async function getActiveChangeIds(root = process.cwd()) {
25
25
  }
26
26
  }
27
27
  export async function getSpecIds(root = process.cwd()) {
28
- const specsPath = resolveOpenSpecSubpath(root, 'specs');
28
+ const specsPath = resolveLegacySpecSubpath(root, 'specs');
29
29
  const result = [];
30
30
  try {
31
31
  const entries = await fs.readdir(specsPath, { withFileTypes: true });
@@ -48,7 +48,7 @@ export async function getSpecIds(root = process.cwd()) {
48
48
  return result.sort();
49
49
  }
50
50
  export async function getArchivedChangeIds(root = process.cwd()) {
51
- const archivePath = resolveOpenSpecSubpath(root, 'changes', 'archive');
51
+ const archivePath = resolveLegacySpecSubpath(root, 'changes', 'archive');
52
52
  try {
53
53
  const entries = await fs.readdir(archivePath, { withFileTypes: true });
54
54
  const result = [];
@@ -0,0 +1,2 @@
1
+ export { IMPORTED_LEGACY_SPEC_DIR, LEGACY_SPEC_DIR, LEGACY_SPEC_CAPABILITY, displayLegacyCapabilityPath, displayLegacySpecPath, resolveLegacyCapabilityDeprecatedLiveRoots, resolveLegacyCapabilityImportedRoot, resolveLegacyCapabilityDeprecatedImportedRoots, resolveLegacyCapabilityImportedDepositoRoot, resolveLegacyCapabilityLiveSubpath, resolveLegacyCapabilityLiveRoot, resolveLegacyCapabilityRoot, resolveLegacyCapabilitySubpath, resolveLegacySpecLiveSubpath, resolveLegacySpecLiveRoot, resolveLegacySpecRoot, resolveLegacySpecSubpath, type LegacyCapabilityDefinition, } from '../core/sdd/services/legacy-capability.service.js';
2
+ //# sourceMappingURL=legacy-spec-compat.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { IMPORTED_LEGACY_SPEC_DIR, LEGACY_SPEC_DIR, LEGACY_SPEC_CAPABILITY, displayLegacyCapabilityPath, displayLegacySpecPath, resolveLegacyCapabilityDeprecatedLiveRoots, resolveLegacyCapabilityImportedRoot, resolveLegacyCapabilityDeprecatedImportedRoots, resolveLegacyCapabilityImportedDepositoRoot, resolveLegacyCapabilityLiveSubpath, resolveLegacyCapabilityLiveRoot, resolveLegacyCapabilityRoot, resolveLegacyCapabilitySubpath, resolveLegacySpecLiveSubpath, resolveLegacySpecLiveRoot, resolveLegacySpecRoot, resolveLegacySpecSubpath, } from '../core/sdd/services/legacy-capability.service.js';
2
+ //# sourceMappingURL=legacy-spec-compat.js.map
@@ -17,4 +17,5 @@ export interface ShellDetectionResult {
17
17
  * @returns Detection result with supported shell and raw detected name
18
18
  */
19
19
  export declare function detectShell(): ShellDetectionResult;
20
+ export declare function resolveShellProfilePath(shell: SupportedShell, homeDir?: string): string | undefined;
20
21
  //# sourceMappingURL=shell-detection.d.ts.map
@@ -1,3 +1,5 @@
1
+ import path from 'path';
2
+ import os from 'os';
1
3
  /**
2
4
  * Detects the current user's shell based on environment variables
3
5
  *
@@ -38,4 +40,18 @@ export function detectShell() {
38
40
  }
39
41
  return { shell: undefined, detected: undefined };
40
42
  }
43
+ export function resolveShellProfilePath(shell, homeDir = os.homedir()) {
44
+ switch (shell) {
45
+ case 'zsh':
46
+ return path.join(homeDir, '.zshrc');
47
+ case 'bash':
48
+ return path.join(homeDir, '.bashrc');
49
+ case 'fish':
50
+ return path.join(homeDir, '.config', 'fish', 'config.fish');
51
+ case 'powershell':
52
+ return undefined;
53
+ default:
54
+ return undefined;
55
+ }
56
+ }
41
57
  //# sourceMappingURL=shell-detection.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devtrack-solution/codesdd",
3
- "version": "1.2.2",
3
+ "version": "1.2.4-rc3",
4
4
  "description": "AI-native system for spec-driven development",
5
5
  "keywords": [
6
6
  "codesdd",
@@ -9,23 +9,27 @@
9
9
  "ai",
10
10
  "development"
11
11
  ],
12
- "homepage": "https://github.com/devtrack-solution/opensdd-cli",
12
+ "homepage": "https://github.com/devtrack-solution/codesdd",
13
13
  "repository": {
14
14
  "type": "git",
15
- "url": "git+https://github.com/devtrack-solution/opensdd-cli.git"
15
+ "url": "git+https://github.com/devtrack-solution/codesdd.git"
16
16
  },
17
17
  "bugs": {
18
- "url": "https://github.com/devtrack-solution/opensdd-cli/issues"
18
+ "url": "https://github.com/devtrack-solution/codesdd/issues"
19
19
  },
20
20
  "license": "MIT",
21
21
  "author": "CodeSDD Contributors",
22
22
  "type": "module",
23
+ "packageManager": "pnpm@10.33.2",
23
24
  "publishConfig": {
24
- "access": "public"
25
+ "access": "public",
26
+ "provenance": true
25
27
  },
26
28
  "pnpm": {
27
29
  "overrides": {
28
30
  "basic-ftp": "5.3.1",
31
+ "@vitest/coverage-v8>test-exclude": "8.0.0",
32
+ "minimatch@10>brace-expansion": "5.0.6",
29
33
  "ip-address": "10.1.1",
30
34
  "mermaid": "11.15.0",
31
35
  "uuid": "^14.0.0"
@@ -48,6 +52,7 @@
48
52
  ".sdd/skills/curated/devtrack-api/SKILL.md",
49
53
  ".sdd/skills/curated/devtrack-api/agents/*.yaml",
50
54
  ".sdd/skills/curated/devtrack-api/references/*.md",
55
+ ".sdd/skills/curated/devtrack-api/references/*.yaml",
51
56
  "!dist/**/*.test.js",
52
57
  "!dist/**/__tests__",
53
58
  "!dist/**/*.map"
@@ -60,13 +65,15 @@
60
65
  "build": "node build.js",
61
66
  "dev": "tsc --watch",
62
67
  "dev:cli": "pnpm build && node bin/codesdd.js",
63
- "test": "vitest run",
68
+ "test": "vitest run --silent=passed-only",
64
69
  "test:watch": "vitest",
65
- "test:e2e": "vitest run test/e2e",
70
+ "test:e2e": "vitest run test/e2e test/cli-e2e --silent=passed-only",
71
+ "test:deepagents-smoke": "vitest run test/e2e/deepagents-agent-run-smoke.test.ts",
66
72
  "test:ui": "vitest --ui",
67
- "test:coverage": "vitest run --coverage",
68
- "coverage": "vitest run --coverage",
73
+ "test:coverage": "vitest run --coverage --silent=passed-only",
74
+ "coverage": "vitest run --coverage --silent=passed-only",
69
75
  "quality": "pnpm run cleanup:install && pnpm run build && pnpm run lint && pnpm run test && pnpm run test:e2e && pnpm run coverage",
76
+ "quality:review": "pnpm run build && pnpm run lint && pnpm run test && pnpm run test:e2e && pnpm run coverage && pnpm run sdd:validate && pnpm run check:pack-version",
70
77
  "prepublishOnly": "node build.js",
71
78
  "prepare": "node scripts/install-git-hooks.mjs",
72
79
  "check:pack-version": "node scripts/pack-version-check.mjs",
@@ -79,33 +86,39 @@
79
86
  "sdd:validate": "pnpm run build && pnpm run sdd:schema:check && pnpm run sdd:validate:no-build",
80
87
  "release": "pnpm run release:ci",
81
88
  "release:ci": "pnpm run check:pack-version && pnpm exec changeset publish",
89
+ "release:sbom": "npm sbom --sbom-format cyclonedx",
82
90
  "changeset": "changeset"
83
91
  },
84
92
  "engines": {
85
93
  "node": ">=20.19.0"
86
94
  },
87
95
  "devDependencies": {
88
- "@changesets/changelog-github": "^0.6.0",
89
- "@changesets/cli": "^2.30.0",
96
+ "@changesets/changelog-github": "^0.7.0",
97
+ "@changesets/cli": "^2.31.0",
90
98
  "@mermaid-js/mermaid-cli": "^11.15.0",
91
99
  "@vitest/coverage-v8": "^3.2.4",
92
100
  "@vitest/ui": "^3.2.4",
93
- "eslint": "^9.39.2",
101
+ "eslint": "^10.4.0",
102
+ "puppeteer": "24.43.1",
94
103
  "ts-morph": "^28.0.0",
95
- "typescript-eslint": "^8.58.2",
104
+ "typescript-eslint": "^8.59.4",
96
105
  "vitest": "^3.2.4"
97
106
  },
98
107
  "dependencies": {
99
- "@inquirer/core": "^11.1.8",
100
- "@inquirer/prompts": "^8.4.1",
101
- "@types/node": "^25.6.0",
108
+ "@inquirer/core": "^11.1.10",
109
+ "@inquirer/prompts": "^8.4.3",
110
+ "@langchain/core": "^1.1.48",
111
+ "@langchain/openai": "^1.4.7",
112
+ "@types/node": "^25.9.1",
102
113
  "chalk": "^5.6.2",
103
114
  "commander": "^14.0.3",
115
+ "deepagents": "^1.10.2",
104
116
  "fast-glob": "^3.3.3",
105
- "ora": "^9.3.0",
106
- "posthog-node": "^5.29.2",
107
- "typescript": "^6.0.2",
108
- "yaml": "^2.8.3",
109
- "zod": "^4.3.6"
117
+ "ora": "^9.4.0",
118
+ "posthog-node": "^5.35.1",
119
+ "redis": "^6.0.0",
120
+ "typescript": "^6.0.3",
121
+ "yaml": "^2.9.0",
122
+ "zod": "^4.4.3"
110
123
  }
111
124
  }
@@ -216,6 +216,6 @@
216
216
  "updated_at"
217
217
  ],
218
218
  "additionalProperties": false,
219
- "title": "OpenSDD Workspace Spec",
219
+ "title": "CodeSDD Workspace Spec",
220
220
  "description": "Machine-readable contract for the active/planned/archived FEAT spec workspace document."
221
221
  }