@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,20 +1,169 @@
1
1
  import chalk from 'chalk';
2
- import { loadProjectSddConfig, resolveSddPaths } from '../../core/sdd/state.js';
2
+ import { loadProjectSddConfig, loadStateSnapshot, resolveSddPaths } from '../../core/sdd/state.js';
3
3
  import { createSddStores } from '../../core/sdd/store/sdd-stores.js';
4
4
  import { StartService } from '../../core/sdd/services/start.service.js';
5
5
  import { FrontendImpactService } from '../../core/sdd/services/frontend-impact.service.js';
6
6
  import { FinalizeService } from '../../core/sdd/services/finalize.service.js';
7
- import { ContextService } from '../../core/sdd/services/context.service.js';
7
+ import { ContextService, CONTEXT_PACK_BUDGET_MODES } from '../../core/sdd/services/context.service.js';
8
8
  import { OnboardService } from '../../core/sdd/services/onboard.service.js';
9
9
  import { ApproveService } from '../../core/sdd/services/approve.service.js';
10
10
  import { NextService } from '../../core/sdd/services/next.service.js';
11
11
  import { AuditService } from '../../core/sdd/services/audit.service.js';
12
12
  import { McpRuntimeService } from '../../core/sdd/services/mcp-runtime.service.js';
13
+ import { DeepAgentsRunService, } from '../../core/sdd/services/agent-run.service.js';
14
+ import { evaluateReleaseReadiness, formatReleaseReadinessReport } from '../../core/sdd/release-readiness.js';
13
15
  import { ensureMandatorySddMigration, parseCsvOption, parseFlowModeOption, resolveRoot } from './shared.js';
16
+ const PREFLIGHT_MUTATING_PLUGIN_FLOW = [
17
+ 'plugin-inspect',
18
+ 'plugin-plan',
19
+ 'plugin-dry-run',
20
+ 'policy-evaluation',
21
+ 'artifact-manifest',
22
+ 'evidence-manifest',
23
+ 'validation-manifest',
24
+ 'rollback-manifest',
25
+ ];
26
+ function parseJsonObjectOption(value, optionName = '--input') {
27
+ if (!value)
28
+ return {};
29
+ const parsed = JSON.parse(value);
30
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
31
+ throw new Error(`${optionName} must be a JSON object.`);
32
+ }
33
+ return parsed;
34
+ }
35
+ function parseGovernedOverrideOption(value) {
36
+ if (!value)
37
+ return undefined;
38
+ return parseJsonObjectOption(value, '--governed-override');
39
+ }
40
+ function buildChangeSafetyFromOptions(options) {
41
+ return {
42
+ explicit_modification_intent: {
43
+ operation: options.intentOperation,
44
+ },
45
+ context_lock: {
46
+ allowed_paths: parseCsvOption(options.allowedPaths ?? options.writeScope),
47
+ forbidden_paths: parseCsvOption(options.forbiddenPaths),
48
+ protected_core: parseCsvOption(options.protectedCore),
49
+ },
50
+ change_budget: {
51
+ max_files_changed: parseNonNegativeNumberOption(options.maxFilesChanged, '--max-files-changed'),
52
+ max_new_files: parseNonNegativeNumberOption(options.maxNewFiles, '--max-new-files'),
53
+ max_deleted_files: parseNonNegativeNumberOption(options.maxDeletedFiles, '--max-deleted-files'),
54
+ },
55
+ governed_override: parseGovernedOverrideOption(options.governedOverride),
56
+ };
57
+ }
58
+ function resolvePreflightMode(lifecycle) {
59
+ return lifecycle === 'finalize' ? 'apply-approved' : 'apply-sandbox';
60
+ }
61
+ function buildPreflightRequest(options) {
62
+ const mode = resolvePreflightMode(options.lifecycle ?? 'custom');
63
+ return {
64
+ provider: 'deepagents',
65
+ mode,
66
+ objective: options.objective,
67
+ plugin_execution_path: 'broker',
68
+ plugin_flow: [...PREFLIGHT_MUTATING_PLUGIN_FLOW, mode],
69
+ operations: ['read', 'write', 'execute', 'plugin-apply'],
70
+ write_scope: parseCsvOption(options.writeScope),
71
+ planned_writes: parseCsvOption(options.plannedWrites),
72
+ change_safety: buildChangeSafetyFromOptions(options),
73
+ approval_grants: ['all'],
74
+ };
75
+ }
76
+ function resolveContextBudgetModeOption(options) {
77
+ const requested = options?.compact
78
+ ? 'compact'
79
+ : options?.full
80
+ ? 'full'
81
+ : options?.budget ?? 'standard';
82
+ if (!CONTEXT_PACK_BUDGET_MODES.includes(requested)) {
83
+ throw new Error(`Modo de budget invalido: ${requested}. Use compact, standard ou full.`);
84
+ }
85
+ return requested;
86
+ }
87
+ function parsePositiveNumberOption(value, name) {
88
+ if (!value)
89
+ return undefined;
90
+ const parsed = Number(value);
91
+ if (!Number.isFinite(parsed) || parsed <= 0) {
92
+ throw new Error(`Valor invalido em ${name}. Use um numero positivo.`);
93
+ }
94
+ return parsed;
95
+ }
96
+ function parseNonNegativeNumberOption(value, name) {
97
+ if (!value)
98
+ return undefined;
99
+ const parsed = Number(value);
100
+ if (!Number.isFinite(parsed) || parsed < 0) {
101
+ throw new Error(`Valor invalido em ${name}. Use um numero nao negativo.`);
102
+ }
103
+ return parsed;
104
+ }
105
+ async function buildPlanStatus(root, stores, options) {
106
+ const config = await loadProjectSddConfig(root);
107
+ const paths = resolveSddPaths(root, config);
108
+ const snapshot = await loadStateSnapshot(paths, config);
109
+ const next = await new NextService(stores).execute(root, {
110
+ rank: options?.rank,
111
+ limit: parsePositiveNumberOption(options?.limit, '--limit'),
112
+ maxAgents: parsePositiveNumberOption(options?.maxAgents, '--max-agents'),
113
+ });
114
+ const active = snapshot.backlog.items
115
+ .filter((item) => item.status === 'IN_PROGRESS')
116
+ .map((item) => ({
117
+ id: item.id,
118
+ title: item.title,
119
+ current_stage: item.current_stage,
120
+ frontend_impact_status: item.frontend_impact_status,
121
+ next_action: `codesdd sdd finalize --ref ${item.id}`,
122
+ }))
123
+ .sort((a, b) => a.id.localeCompare(b.id));
124
+ const counts = snapshot.backlog.items.reduce((acc, item) => {
125
+ acc.total += 1;
126
+ acc.by_status[item.status] = (acc.by_status[item.status] ?? 0) + 1;
127
+ return acc;
128
+ }, { total: 0, by_status: {} });
129
+ return {
130
+ schema_version: 1,
131
+ generated_at: new Date().toISOString(),
132
+ active,
133
+ next,
134
+ counts,
135
+ recommended_action: active.length > 0
136
+ ? `Finalize active feature ${active[0].id} before starting more work.`
137
+ : next.ready.length > 0
138
+ ? `Run codesdd sdd execute-next to start ${next.ready[0].id}.`
139
+ : 'No ready feature is available.',
140
+ };
141
+ }
14
142
  export function registerExecutionCommands(sddCmd) {
143
+ sddCmd
144
+ .command('release-readiness')
145
+ .description('Report non-mutating release readiness gates and CI parity commands')
146
+ .alias('prontidao-release')
147
+ .option('--strict', 'Return exit code 1 when readiness is blocked')
148
+ .option('--json', 'JSON output')
149
+ .action(async (options) => {
150
+ const root = resolveRoot();
151
+ await ensureMandatorySddMigration(root);
152
+ const report = await evaluateReleaseReadiness(root);
153
+ if (options?.json) {
154
+ console.log(JSON.stringify(report, null, 2));
155
+ }
156
+ else {
157
+ const color = report.status === 'ready' ? chalk.green : report.status === 'warning' ? chalk.yellow : chalk.red;
158
+ console.log(color(formatReleaseReadinessReport(report)));
159
+ }
160
+ if (options?.strict && report.status === 'blocked') {
161
+ process.exitCode = 1;
162
+ }
163
+ });
15
164
  sddCmd
16
165
  .command('mcp-manifest')
17
- .description('Render a provider-agnostic MCP manifest for OpenSDD execution tools')
166
+ .description('Render a provider-agnostic MCP manifest for CodeSDD execution tools')
18
167
  .option('--provider <provider>', 'Client profile: codex|claude-code|kimmy-code|kilo-code|open-code|generic')
19
168
  .option('--json', 'JSON output')
20
169
  .action(async (options) => {
@@ -28,22 +177,46 @@ export function registerExecutionCommands(sddCmd) {
28
177
  console.log(JSON.stringify(manifest, null, 2));
29
178
  return;
30
179
  }
31
- console.log(chalk.green(`OpenSDD MCP manifest for ${manifest.provider.label}`));
180
+ console.log(chalk.green(`CodeSDD MCP manifest for ${manifest.provider.label}`));
32
181
  console.log(`Protocol: ${manifest.protocol}`);
33
182
  console.log(`Transport: ${manifest.provider.transport}`);
34
183
  console.log(`Tools: ${manifest.tools.map((tool) => tool.name).join(', ')}`);
35
184
  });
36
185
  sddCmd
37
186
  .command('mcp-call <tool>')
38
- .description('Invoke the provider-agnostic MCP bridge for next/context/finalize')
187
+ .description('Invoke governed CodeSDD MCP tools for DeepAgents')
39
188
  .option('--provider <provider>', 'Client profile: codex|claude-code|kimmy-code|kilo-code|open-code|generic')
40
- .option('--ref <ref>', 'Reference for opensdd.context or opensdd.finalize')
41
- .option('--rank <rank>', 'Ranking for opensdd.next: impact|criticality|fifo')
42
- .option('--limit <n>', 'Limit for opensdd.next')
43
- .option('--max-agents <n>', 'Max agents for opensdd.next wave simulation')
44
- .option('--all-ready', 'Apply to all ready items for opensdd.finalize')
45
- .option('--force-frontend', 'Force frontend finalize guardrail bypass')
46
- .option('--force-transition', 'Force transition guardrail bypass')
189
+ .option('--ref <ref>', 'Reference for context/read/query/quality tools')
190
+ .option('--ref-or-text <value>', 'Reference or free text for codesdd.start intent')
191
+ .option('--feature-id <id>', 'Feature id for codesdd.finalize_intent or codesdd.frontend_impact')
192
+ .option('--status <status>', 'Status for codesdd.frontend_impact: unknown|none|required')
193
+ .option('--reason <text>', 'Reason for codesdd.frontend_impact when applicable')
194
+ .option('--routes <list>', 'CSV routes for codesdd.frontend_impact')
195
+ .option('--surfaces <list>', 'CSV surfaces for codesdd.frontend_impact')
196
+ .option('--manifest-path <path>', 'Plugin manifest path for plugin tools')
197
+ .option('--feature-ref <ref>', 'Feature ref for plugin plan/apply_sandbox')
198
+ .option('--capability <name>', 'Plugin capability for plugin plan/apply_sandbox')
199
+ .option('--skill-ref <ref>', 'Skill reference for plugin plan/apply_sandbox')
200
+ .option('--input <json>', 'JSON object input for plugin plan/apply_sandbox')
201
+ .option('--write-scope <list>', 'CSV write scope for plugin plan/apply_sandbox')
202
+ .option('--approval-grants <list>', 'CSV approvals for plugin plan/apply_sandbox')
203
+ .option('--planned-writes <list>', 'CSV planned writes for plugin plan/apply_sandbox')
204
+ .option('--requested-env <list>', 'CSV env vars for plugin plan/apply_sandbox')
205
+ .option('--network-domains <list>', 'CSV domains for plugin plan/apply_sandbox')
206
+ .option('--process-spawn-requested', 'Whether plugin plan/apply_sandbox requests process spawn')
207
+ .option('--strict', 'Strict mode for codesdd.check and codesdd.diagnose')
208
+ .option('--doc <doc>', 'Workspace doc for codesdd.read: spec|plan|tasks|changelog|quality|all')
209
+ .option('--query <query>', 'Search expression for codesdd.query')
210
+ .option('--scope <scope>', 'Search scope for codesdd.query: backlog|discovery|all')
211
+ .option('--rank <rank>', 'Ranking for codesdd.next: impact|criticality|fifo')
212
+ .option('--limit <n>', 'Limit for codesdd.next')
213
+ .option('--max-agents <n>', 'Max agents for codesdd.next wave simulation')
214
+ .option('--ids <list>', 'CSV skill IDs for codesdd.skill_prompt')
215
+ .option('--phase <phase>', 'Phase for codesdd.skill_prompt')
216
+ .option('--domains <list>', 'CSV domains for codesdd.skill_prompt')
217
+ .option('--bundles <list>', 'CSV bundles for codesdd.skill_prompt')
218
+ .option('--max <n>', 'Max suggested skills for codesdd.skill_prompt')
219
+ .option('--objective <text>', 'Objective text for codesdd.skill_prompt')
47
220
  .option('--json', 'JSON output')
48
221
  .action(async (tool, options) => {
49
222
  const root = resolveRoot();
@@ -57,30 +230,185 @@ export function registerExecutionCommands(sddCmd) {
57
230
  tool: tool,
58
231
  args: {
59
232
  ref: options?.ref,
233
+ refOrText: options?.refOrText,
234
+ featureId: options?.featureId,
235
+ status: options?.status,
236
+ reason: options?.reason,
237
+ routes: parseCsvOption(options?.routes),
238
+ surfaces: parseCsvOption(options?.surfaces),
239
+ manifestPath: options?.manifestPath,
240
+ featureRef: options?.featureRef,
241
+ capability: options?.capability,
242
+ skillRef: options?.skillRef,
243
+ inputs: parseJsonObjectOption(options?.input),
244
+ writeScope: parseCsvOption(options?.writeScope),
245
+ approvalGrants: parseCsvOption(options?.approvalGrants),
246
+ plannedWrites: parseCsvOption(options?.plannedWrites),
247
+ requestedEnv: parseCsvOption(options?.requestedEnv),
248
+ networkDomains: parseCsvOption(options?.networkDomains),
249
+ processSpawnRequested: options?.processSpawnRequested,
250
+ strict: options?.strict,
251
+ doc: options?.doc,
252
+ query: options?.query,
253
+ scope: options?.scope,
60
254
  rank: options?.rank,
61
255
  limit: options?.limit ? Number.parseInt(options.limit, 10) : undefined,
62
256
  maxAgents: options?.maxAgents ? Number.parseInt(options.maxAgents, 10) : undefined,
63
- allReady: options?.allReady,
64
- forceFrontend: options?.forceFrontend,
65
- forceTransition: options?.forceTransition,
66
- cwd: process.cwd(),
257
+ ids: parseCsvOption(options?.ids),
258
+ phase: options?.phase,
259
+ domains: parseCsvOption(options?.domains),
260
+ bundles: parseCsvOption(options?.bundles),
261
+ max: options?.max ? Number.parseInt(options.max, 10) : undefined,
262
+ objective: options?.objective,
67
263
  },
68
264
  });
69
265
  if (options?.json) {
70
266
  console.log(JSON.stringify(response, null, 2));
71
267
  return;
72
268
  }
73
- console.log(chalk.green(`OpenSDD MCP call completed: ${response.tool}`));
269
+ console.log(chalk.green(`CodeSDD MCP call completed: ${response.tool}`));
74
270
  console.log(`Provider: ${response.provider}`);
75
271
  console.log(`Invoked at: ${response.invoked_at}`);
76
272
  console.log(JSON.stringify(response.result, null, 2));
77
273
  });
274
+ sddCmd
275
+ .command('preflight <featureId>')
276
+ .description('Run governed mutation preflight without invoking an agent runtime')
277
+ .option('--objective <text>', 'Natural-language objective for semantic intent checks')
278
+ .option('--intent-operation <operation>', 'Explicit modification intent: add|modify|remove|replace|refactor|optimize')
279
+ .option('--write-scope <list>', 'CSV project-relative write scopes allowed for the runtime')
280
+ .option('--planned-writes <list>', 'CSV project-relative files the runtime plans to write')
281
+ .option('--allowed-paths <list>', 'CSV context-lock allowed project paths')
282
+ .option('--forbidden-paths <list>', 'CSV context-lock forbidden project paths')
283
+ .option('--protected-core <list>', 'CSV protected project paths requiring explicit override')
284
+ .option('--max-files-changed <count>', 'Change budget limit for changed paths')
285
+ .option('--max-new-files <count>', 'Change budget limit for new files')
286
+ .option('--max-deleted-files <count>', 'Change budget limit for deleted files')
287
+ .option('--governed-override <json>', 'JSON governed override contract for protected or replacement changes')
288
+ .option('--lifecycle <name>', 'Lifecycle context: start|finalize|execute-next|custom', 'custom')
289
+ .option('--json', 'JSON output')
290
+ .action(async (featureId, options) => {
291
+ const root = resolveRoot();
292
+ const __config = await loadProjectSddConfig(root);
293
+ const __paths = resolveSddPaths(root, __config);
294
+ const stores = createSddStores(__paths);
295
+ await ensureMandatorySddMigration(root);
296
+ if (options.lifecycle && !['start', 'finalize', 'execute-next', 'custom'].includes(options.lifecycle)) {
297
+ throw new Error('Valor invalido em --lifecycle. Use start, finalize, execute-next ou custom.');
298
+ }
299
+ const result = await new DeepAgentsRunService().execute(featureId, buildPreflightRequest(options), { projectRoot: root, stores, skipRuntime: true });
300
+ if (options.json) {
301
+ console.log(JSON.stringify(result, null, 2));
302
+ if (result.status === 'blocked') {
303
+ process.exitCode = 1;
304
+ }
305
+ return;
306
+ }
307
+ if (result.status === 'allowed') {
308
+ console.log(chalk.green(`CodeSDD preflight: ${result.status}`));
309
+ }
310
+ else {
311
+ console.log(chalk.red(`CodeSDD preflight: ${result.status}`));
312
+ }
313
+ console.log(`Feature: ${result.feature_id}`);
314
+ console.log(`Mode: ${result.mode}`);
315
+ console.log(`Runtime skipped: ${result.evidence.runtime_skipped ? 'yes' : 'no'}`);
316
+ console.log(`Evidence run id: ${result.evidence.run_id}`);
317
+ if (result.reasons.length > 0) {
318
+ console.log(`Reasons: ${result.reasons.join(' | ')}`);
319
+ }
320
+ if (result.status === 'blocked') {
321
+ process.exitCode = 1;
322
+ }
323
+ });
324
+ const agentCmd = sddCmd
325
+ .command('agent')
326
+ .description('Governed agent execution commands for external providers');
327
+ agentCmd
328
+ .command('run <featureId>')
329
+ .description('Run DeepAgents mode policy gate with fail-closed enforcement')
330
+ .requiredOption('--provider <provider>', 'Execution provider (FEAT-0243 accepts only deepagents)')
331
+ .option('--mode <mode>', 'Execution mode: read-only|plan|validate|apply-sandbox|apply-approved')
332
+ .option('--objective <text>', 'Natural-language objective for semantic intent checks')
333
+ .option('--plugin-execution-path <path>', 'Plugin execution path: broker|direct', 'broker')
334
+ .option('--plugin-flow <list>', 'CSV plugin broker/evidence checkpoints for mutation modes')
335
+ .option('--operations <list>', 'CSV runtime operations requested by this run: read|write|execute|network|plugin-apply|finalize|dependency-change|process-spawn')
336
+ .option('--write-scope <list>', 'CSV project-relative write scopes allowed for the runtime')
337
+ .option('--planned-writes <list>', 'CSV project-relative files the runtime plans to write')
338
+ .option('--intent-operation <operation>', 'Explicit modification intent: add|modify|remove|replace|refactor|optimize')
339
+ .option('--allowed-paths <list>', 'CSV context-lock allowed project paths')
340
+ .option('--forbidden-paths <list>', 'CSV context-lock forbidden project paths')
341
+ .option('--protected-core <list>', 'CSV protected project paths requiring explicit override')
342
+ .option('--max-files-changed <count>', 'Change budget limit for changed paths')
343
+ .option('--max-new-files <count>', 'Change budget limit for new files')
344
+ .option('--max-deleted-files <count>', 'Change budget limit for deleted files')
345
+ .option('--governed-override <json>', 'JSON governed override contract for protected or replacement changes')
346
+ .option('--requested-env <list>', 'CSV environment variables requested for runtime passthrough')
347
+ .option('--network-domains <list>', 'CSV network domains requested by this run')
348
+ .option('--approval-grants <list>', 'CSV HITL approval grants: operation names or all')
349
+ .option('--json', 'JSON output')
350
+ .action(async (featureId, options) => {
351
+ const root = resolveRoot();
352
+ const __config = await loadProjectSddConfig(root);
353
+ const __paths = resolveSddPaths(root, __config);
354
+ const stores = createSddStores(__paths);
355
+ void stores;
356
+ await ensureMandatorySddMigration(root);
357
+ const command = new DeepAgentsRunService();
358
+ const result = await command.execute(featureId, {
359
+ provider: options.provider,
360
+ mode: options.mode,
361
+ objective: options.objective,
362
+ plugin_execution_path: options.pluginExecutionPath,
363
+ plugin_flow: parseCsvOption(options.pluginFlow),
364
+ operations: parseCsvOption(options.operations),
365
+ write_scope: parseCsvOption(options.writeScope),
366
+ planned_writes: parseCsvOption(options.plannedWrites),
367
+ change_safety: buildChangeSafetyFromOptions(options),
368
+ requested_env: parseCsvOption(options.requestedEnv),
369
+ network_domains: parseCsvOption(options.networkDomains),
370
+ approval_grants: parseCsvOption(options.approvalGrants),
371
+ }, { projectRoot: root, stores });
372
+ if (options.json) {
373
+ console.log(JSON.stringify(result, null, 2));
374
+ if (result.status === 'blocked') {
375
+ process.exitCode = 1;
376
+ }
377
+ return;
378
+ }
379
+ if (result.status === 'allowed') {
380
+ console.log(chalk.green(`DeepAgents run policy: ${result.status}`));
381
+ }
382
+ else {
383
+ console.log(chalk.red(`DeepAgents run policy: ${result.status}`));
384
+ }
385
+ console.log(`Feature: ${result.feature_id}`);
386
+ console.log(`Provider: ${result.provider}`);
387
+ console.log(`Mode: ${result.mode}`);
388
+ console.log(`Fail-closed: ${result.fail_closed ? 'yes' : 'no'}`);
389
+ console.log(`Direct .sdd/state writes: ${result.evidence.direct_state_write_allowed ? 'allowed' : 'blocked'}`);
390
+ console.log(`Plugin execution path: ${result.evidence.plugin_execution.requested_path}`);
391
+ if (result.evidence.runtime) {
392
+ console.log(`Runtime: ${result.evidence.runtime.adapter.runtime}`);
393
+ console.log(`Runtime status: ${result.evidence.runtime.adapter.status}`);
394
+ }
395
+ if (result.evidence.plugin_execution.missing_flow.length > 0) {
396
+ console.log(`Missing plugin flow: ${result.evidence.plugin_execution.missing_flow.join(', ')}`);
397
+ }
398
+ console.log(`Evidence run id: ${result.evidence.run_id}`);
399
+ if (result.reasons.length > 0) {
400
+ console.log(`Reasons: ${result.reasons.join(' | ')}`);
401
+ }
402
+ if (result.status === 'blocked') {
403
+ process.exitCode = 1;
404
+ }
405
+ });
78
406
  sddCmd
79
407
  .command('start <refOrText>')
80
408
  .description('Starts FEAT/EPIC/FGAP/TD execution or creates a direct FEAT')
81
409
  .alias('iniciar-execucao')
82
410
  .option('--scale <scale>', 'Escala QUICK|STANDARD|LARGE')
83
- .option('--schema <schema>', 'Schema para criar change em openspec/changes')
411
+ .option('--schema <schema>', 'Schema para criar change de compatibilidade em legacy-spec/changes')
84
412
  .option('--force', 'Bypass de bloqueios e conflitos de lock')
85
413
  .option('--force-transition', 'Bypass das restrições e violações das lentes estruturais')
86
414
  .option('--flow-mode <flowMode>', 'Flow: direct|standard|rigorous')
@@ -192,6 +520,12 @@ export function registerExecutionCommands(sddCmd) {
192
520
  }
193
521
  console.log(`Liberadas: ${result.unblocked.join(', ') || '-'}`);
194
522
  console.log(`Pendentes na fila: ${result.pending}`);
523
+ if (result.post_finalize_replan?.ready?.length) {
524
+ console.log(`Proximas FEATs: ${result.post_finalize_replan.ready
525
+ .slice(0, 5)
526
+ .map((entry) => entry.id)
527
+ .join(', ')}`);
528
+ }
195
529
  console.log(`Docs core atualizados: ${result.updated_core_docs?.join(', ') || '-'}`);
196
530
  console.log(`README sincronizado: ${result.updated_readme ? 'sim' : 'nao'}`);
197
531
  console.log(`Guia do agente sincronizado: ${result.updated_agent_guide ? 'sim' : 'nao'}`);
@@ -211,6 +545,9 @@ export function registerExecutionCommands(sddCmd) {
211
545
  .command('context <ref>')
212
546
  .description('Gera contexto objetivo para FEAT/EPIC/FGAP/TD (RAD legado ainda aceito)')
213
547
  .alias('contexto')
548
+ .option('--budget <mode>', 'Modo de orcamento do pacote de contexto: compact, standard ou full', 'standard')
549
+ .option('--compact', 'Atalho para --budget compact')
550
+ .option('--full', 'Atalho para --budget full')
214
551
  .option('--json', 'Saida em JSON')
215
552
  .action(async (ref, options) => {
216
553
  const root = resolveRoot();
@@ -219,28 +556,47 @@ export function registerExecutionCommands(sddCmd) {
219
556
  const stores = createSddStores(__paths);
220
557
  await ensureMandatorySddMigration(root);
221
558
  const command = new ContextService(stores);
222
- const context = await command.execute(root, ref);
559
+ const budgetMode = resolveContextBudgetModeOption(options);
560
+ const context = await command.execute(root, ref, { budgetMode });
223
561
  if (options?.json) {
224
562
  console.log(JSON.stringify(context, null, 2));
225
563
  return;
226
564
  }
565
+ const contextRecord = context;
227
566
  console.log(`Contexto de ${context.target_id} (${context.target_type})`);
228
567
  console.log(`Resumo: ${context.summary}`);
229
- console.log(`Core docs: ${context.core_docs.join(', ')}`);
230
- if (context.origin) {
231
- const origin = context.origin;
568
+ console.log(`Budget: ${context.context_budget.mode} (${context.context_budget.estimated_chars_after_budget} chars)`);
569
+ if (context.context_budget.deduped_fields?.length) {
570
+ const removed = context.context_budget.deduped_fields.reduce((sum, field) => sum + field.removed, 0);
571
+ console.log(`Dedupe: ${removed} entradas removidas`);
572
+ }
573
+ if (contextRecord.progressive_disclosure) {
574
+ const disclosure = contextRecord.progressive_disclosure;
575
+ const omitted = disclosure.omitted_fields
576
+ .map((field) => `${field.field}:${field.omitted_count}`)
577
+ .join(', ');
578
+ console.log(`Disclosure: ${omitted || '-'} | ${disclosure.reveal_command}`);
579
+ }
580
+ if (contextRecord.context_cache) {
581
+ const cache = contextRecord.context_cache;
582
+ console.log(`Cache: ${cache.hit ? 'hit' : 'miss'} (${cache.key})`);
583
+ }
584
+ const coreDocs = Array.isArray(contextRecord.core_docs) ? contextRecord.core_docs : [];
585
+ console.log(`Core docs: ${coreDocs.join(', ')}`);
586
+ if (contextRecord.origin) {
587
+ const origin = contextRecord.origin;
232
588
  console.log(`Origem: ${origin.type}${origin.ref ? ` (${origin.ref})` : ''}`);
233
589
  }
234
- if (context.related_features) {
235
- const refs = context.related_features;
590
+ if (contextRecord.related_features) {
591
+ const refs = contextRecord.related_features;
236
592
  console.log(`Features relacionadas: ${refs.join(', ') || '-'}`);
237
593
  }
238
- if (context.recommended_skills) {
239
- const skills = context.recommended_skills;
594
+ if (contextRecord.recommended_skills) {
595
+ const skills = contextRecord.recommended_skills;
240
596
  console.log(`Skills sugeridas: ${skills.join(', ') || '-'}`);
241
597
  }
242
- if (context.skill_execution_contract) {
243
- const skillContract = context.skill_execution_contract;
598
+ if (contextRecord.skill_execution_contract) {
599
+ const skillContract = contextRecord.skill_execution_contract;
244
600
  if (skillContract.required) {
245
601
  console.log(`Evidencia de skill: ${skillContract.required_skill_ids.join(', ')} -> ${skillContract.verification_location}`);
246
602
  }
@@ -262,6 +618,9 @@ export function registerExecutionCommands(sddCmd) {
262
618
  .option('--compact', 'Retorna payload resumido')
263
619
  .option('--full', 'Retorna payload completo em JSON (desativa modo compacto automatico)')
264
620
  .action(async (target = 'system', options) => {
621
+ if (options?.compact && options?.full) {
622
+ throw new Error("Options '--compact' and '--full' are mutually exclusive. Choose one.");
623
+ }
265
624
  const root = resolveRoot();
266
625
  const __config = await loadProjectSddConfig(root);
267
626
  const __paths = resolveSddPaths(root, __config);
@@ -373,6 +732,108 @@ export function registerExecutionCommands(sddCmd) {
373
732
  }
374
733
  }
375
734
  });
735
+ sddCmd
736
+ .command('plan-status [path]')
737
+ .description('Mostra status operacional do plano CodeSDD e a proxima acao recomendada')
738
+ .alias('status-plano')
739
+ .option('--rank <mode>', 'Ranking: impact|criticality|fifo (padrao: impact)')
740
+ .option('--limit <n>', 'Limite de itens prontos (padrao: 10)')
741
+ .option('--max-agents <n>', 'Limite de itens por onda (padrao: sem limite)')
742
+ .option('--json', 'Saida em JSON')
743
+ .action(async (targetPath = '.', options) => {
744
+ const root = resolveRoot(targetPath);
745
+ const __config = await loadProjectSddConfig(root);
746
+ const __paths = resolveSddPaths(root, __config);
747
+ const stores = createSddStores(__paths);
748
+ await ensureMandatorySddMigration(root);
749
+ if (options?.rank && !['impact', 'criticality', 'fifo'].includes(options.rank)) {
750
+ throw new Error('Valor invalido em --rank. Use impact, criticality ou fifo.');
751
+ }
752
+ const result = await buildPlanStatus(root, stores, options);
753
+ if (options?.json) {
754
+ console.log(JSON.stringify(result, null, 2));
755
+ return;
756
+ }
757
+ console.log(chalk.green('Status do plano CodeSDD'));
758
+ console.log(`Ativas: ${result.active.length}`);
759
+ for (const item of result.active) {
760
+ console.log(`- ${item.id}: ${item.title} | etapa=${item.current_stage} | frontend=${item.frontend_impact_status}`);
761
+ }
762
+ console.log(`Prontas: ${result.next.ready.length}`);
763
+ if (result.next.ready[0]) {
764
+ const first = result.next.ready[0];
765
+ console.log(`Proxima recomendada: ${first.id}: ${first.title}`);
766
+ }
767
+ console.log(`Bloqueadas: ${result.next.blocked.length}`);
768
+ console.log(`Conflitos de lock: ${result.next.conflicts.length}`);
769
+ console.log(`Acao recomendada: ${result.recommended_action}`);
770
+ });
771
+ sddCmd
772
+ .command('execute-next [path]')
773
+ .description('Inicia a proxima FEAT pronta pelo ranking CodeSDD')
774
+ .alias('executar-proxima')
775
+ .option('--rank <mode>', 'Ranking: impact|criticality|fifo (padrao: impact)')
776
+ .option('--limit <n>', 'Limite de itens prontos avaliados (padrao: 10)')
777
+ .option('--max-agents <n>', 'Limite de itens por onda (padrao: sem limite)')
778
+ .option('--dry-run', 'Mostra qual FEAT seria iniciada sem alterar estado')
779
+ .option('--force', 'Bypass de bloqueios e conflitos de lock no start')
780
+ .option('--force-transition', 'Bypass das restrições e violações das lentes estruturais')
781
+ .option('--flow-mode <flowMode>', 'Flow: direct|standard|rigorous')
782
+ .option('--fluxo <flowMode>', 'Legacy Portuguese alias for --flow-mode')
783
+ .option('--json', 'Saida em JSON')
784
+ .option('--no-render', 'Nao gera views apos atualizar estado')
785
+ .action(async (targetPath = '.', options) => {
786
+ const root = resolveRoot(targetPath);
787
+ const __config = await loadProjectSddConfig(root);
788
+ const __paths = resolveSddPaths(root, __config);
789
+ const stores = createSddStores(__paths);
790
+ await ensureMandatorySddMigration(root);
791
+ if (options?.rank && !['impact', 'criticality', 'fifo'].includes(options.rank)) {
792
+ throw new Error('Valor invalido em --rank. Use impact, criticality ou fifo.');
793
+ }
794
+ const next = await new NextService(stores).execute(root, {
795
+ rank: options?.rank,
796
+ limit: parsePositiveNumberOption(options?.limit, '--limit'),
797
+ maxAgents: parsePositiveNumberOption(options?.maxAgents, '--max-agents'),
798
+ });
799
+ const selected = next.ready[0];
800
+ if (!selected) {
801
+ const result = { schema_version: 1, started: false, dry_run: !!options?.dryRun, selected: null, next };
802
+ if (options?.json) {
803
+ console.log(JSON.stringify(result, null, 2));
804
+ }
805
+ else {
806
+ console.log('Nenhuma FEAT pronta para iniciar.');
807
+ }
808
+ return;
809
+ }
810
+ if (options?.dryRun) {
811
+ const result = { schema_version: 1, started: false, dry_run: true, selected, next };
812
+ if (options?.json) {
813
+ console.log(JSON.stringify(result, null, 2));
814
+ return;
815
+ }
816
+ console.log(`Proxima FEAT: ${selected.id}: ${selected.title}`);
817
+ console.log(`Comando: codesdd sdd start ${selected.id}`);
818
+ return;
819
+ }
820
+ const flow = parseFlowModeOption(options?.flowMode || options?.fluxo);
821
+ const startResult = await new StartService(stores).execute(root, selected.id, {
822
+ force: options?.force,
823
+ forceTransition: options?.forceTransition,
824
+ flowMode: flow,
825
+ render: options?.render,
826
+ });
827
+ const result = { schema_version: 1, started: true, dry_run: false, selected, start: startResult, next };
828
+ if (options?.json) {
829
+ console.log(JSON.stringify(result, null, 2));
830
+ return;
831
+ }
832
+ console.log(chalk.green(`Proxima FEAT iniciada: ${startResult.featureId}`));
833
+ console.log(`Titulo: ${selected.title}`);
834
+ console.log(`Workspace ativo: ${startResult.active_path}`);
835
+ console.log(`Proximo passo: codesdd sdd context ${startResult.featureId} --compact`);
836
+ });
376
837
  sddCmd
377
838
  .command('audit [path]')
378
839
  .description('Audita a saude de meta-evolucao do SDD (placeholders, deliberacao, ADR e forced transition)')
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerPluginCommands(sddCmd: Command): void;
3
+ //# sourceMappingURL=plugin.d.ts.map