@bhargavvc/sdd-cc 1.30.1 → 1.42.3

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 (1392) hide show
  1. package/README.ja-JP.md +165 -129
  2. package/README.ko-KR.md +161 -123
  3. package/README.md +103 -679
  4. package/README.pt-BR.md +92 -52
  5. package/README.zh-CN.md +145 -103
  6. package/agents/sdd-advisor-researcher.md +23 -0
  7. package/agents/sdd-ai-researcher.md +133 -0
  8. package/agents/sdd-code-fixer.md +668 -0
  9. package/agents/sdd-code-reviewer.md +387 -0
  10. package/agents/sdd-codebase-mapper.md +86 -3
  11. package/agents/sdd-debug-session-manager.md +314 -0
  12. package/agents/sdd-debugger.md +157 -78
  13. package/agents/sdd-doc-classifier.md +168 -0
  14. package/agents/sdd-doc-synthesizer.md +204 -0
  15. package/agents/sdd-doc-verifier.md +217 -0
  16. package/agents/sdd-doc-writer.md +615 -0
  17. package/agents/sdd-domain-researcher.md +153 -0
  18. package/agents/sdd-eval-auditor.md +191 -0
  19. package/agents/sdd-eval-planner.md +154 -0
  20. package/agents/sdd-executor.md +283 -40
  21. package/agents/sdd-framework-selector.md +160 -0
  22. package/agents/sdd-integration-checker.md +30 -3
  23. package/agents/sdd-intel-updater.md +342 -0
  24. package/agents/sdd-nyquist-auditor.md +31 -4
  25. package/agents/sdd-pattern-mapper.md +335 -0
  26. package/agents/sdd-phase-researcher.md +254 -24
  27. package/agents/sdd-plan-checker.md +223 -18
  28. package/agents/sdd-planner.md +286 -362
  29. package/agents/sdd-project-researcher.md +28 -5
  30. package/agents/sdd-research-synthesizer.md +4 -4
  31. package/agents/sdd-roadmapper.md +14 -5
  32. package/agents/sdd-security-auditor.md +155 -0
  33. package/agents/sdd-ui-auditor.md +60 -4
  34. package/agents/sdd-ui-checker.md +11 -2
  35. package/agents/sdd-ui-researcher.md +27 -4
  36. package/agents/sdd-user-profiler.md +2 -2
  37. package/agents/sdd-verifier.md +258 -41
  38. package/bin/install.js +6862 -618
  39. package/bin/sdd-sdk.js +37 -0
  40. package/commands/sdd/add-tests.md +3 -2
  41. package/commands/sdd/ai-integration-phase.md +37 -0
  42. package/commands/sdd/audit-fix.md +34 -0
  43. package/commands/sdd/audit-milestone.md +3 -2
  44. package/commands/sdd/autonomous.md +10 -5
  45. package/commands/sdd/capture.md +62 -0
  46. package/commands/sdd/cleanup.md +7 -1
  47. package/commands/sdd/code-review.md +59 -0
  48. package/commands/sdd/complete-milestone.md +11 -4
  49. package/commands/sdd/config.md +58 -0
  50. package/commands/sdd/debug.md +23 -144
  51. package/commands/sdd/discuss-phase.md +22 -10
  52. package/commands/sdd/docs-update.md +49 -0
  53. package/commands/sdd/eval-review.md +33 -0
  54. package/commands/sdd/execute-phase.md +9 -4
  55. package/commands/sdd/explore.md +27 -0
  56. package/commands/sdd/extract-learnings.md +23 -0
  57. package/commands/sdd/fast.md +2 -1
  58. package/commands/sdd/forensics.md +3 -2
  59. package/commands/sdd/graphify.md +199 -0
  60. package/commands/sdd/health.md +12 -3
  61. package/commands/sdd/help.md +3 -1
  62. package/commands/sdd/import.md +41 -0
  63. package/commands/sdd/inbox.md +39 -0
  64. package/commands/sdd/ingest-docs.md +42 -0
  65. package/commands/sdd/manager.md +9 -3
  66. package/commands/sdd/map-codebase.md +15 -3
  67. package/commands/sdd/milestone-summary.md +1 -1
  68. package/commands/sdd/mvp-phase.md +45 -0
  69. package/commands/sdd/new-milestone.md +3 -2
  70. package/commands/sdd/new-project.md +7 -2
  71. package/commands/sdd/ns-context.md +23 -0
  72. package/commands/sdd/ns-ideate.md +24 -0
  73. package/commands/sdd/ns-manage.md +29 -0
  74. package/commands/sdd/ns-project.md +22 -0
  75. package/commands/sdd/ns-review.md +26 -0
  76. package/commands/sdd/ns-workflow.md +28 -0
  77. package/commands/sdd/pause-work.md +6 -1
  78. package/commands/sdd/phase.md +56 -0
  79. package/commands/sdd/plan-phase.md +19 -4
  80. package/commands/sdd/plan-review-convergence.md +59 -0
  81. package/commands/sdd/pr-branch.md +2 -1
  82. package/commands/sdd/profile-user.md +2 -2
  83. package/commands/sdd/progress.md +27 -5
  84. package/commands/sdd/quick.md +132 -5
  85. package/commands/sdd/resume-work.md +2 -12
  86. package/commands/sdd/review-backlog.md +4 -2
  87. package/commands/sdd/review.md +7 -3
  88. package/commands/sdd/secure-phase.md +36 -0
  89. package/commands/sdd/settings.md +2 -9
  90. package/commands/sdd/ship.md +1 -0
  91. package/commands/sdd/sketch.md +60 -0
  92. package/commands/sdd/spec-phase.md +63 -0
  93. package/commands/sdd/spike.md +57 -0
  94. package/commands/sdd/stats.md +2 -1
  95. package/commands/sdd/surface.md +129 -0
  96. package/commands/sdd/thread.md +8 -111
  97. package/commands/sdd/ui-phase.md +3 -2
  98. package/commands/sdd/ui-review.md +3 -2
  99. package/commands/sdd/ultraplan-phase.md +34 -0
  100. package/commands/sdd/undo.md +35 -0
  101. package/commands/sdd/update.md +21 -10
  102. package/commands/sdd/validate-phase.md +3 -2
  103. package/commands/sdd/verify-work.md +4 -3
  104. package/commands/sdd/workspace.md +52 -0
  105. package/commands/sdd/workstreams.md +15 -8
  106. package/hooks/dist/sdd-check-update-worker.js +116 -0
  107. package/hooks/dist/sdd-check-update.js +19 -69
  108. package/hooks/dist/sdd-context-monitor.js +43 -7
  109. package/hooks/dist/sdd-phase-boundary.sh +47 -0
  110. package/hooks/dist/sdd-prompt-guard.js +1 -0
  111. package/hooks/dist/sdd-read-guard.js +101 -0
  112. package/hooks/dist/sdd-read-injection-scanner.js +152 -0
  113. package/hooks/dist/sdd-session-state.sh +59 -0
  114. package/hooks/dist/sdd-statusline.js +439 -21
  115. package/hooks/dist/sdd-update-banner.js +134 -0
  116. package/hooks/dist/sdd-validate-commit.sh +57 -0
  117. package/hooks/dist/sdd-workflow-guard.js +2 -2
  118. package/hooks/lib/git-cmd.js +150 -0
  119. package/hooks/sdd-check-update-worker.js +116 -0
  120. package/hooks/sdd-check-update.js +64 -0
  121. package/hooks/sdd-context-monitor.js +192 -0
  122. package/hooks/sdd-phase-boundary.sh +47 -0
  123. package/hooks/sdd-prompt-guard.js +97 -0
  124. package/hooks/sdd-read-guard.js +101 -0
  125. package/hooks/sdd-read-injection-scanner.js +152 -0
  126. package/hooks/sdd-session-state.sh +59 -0
  127. package/hooks/sdd-statusline.js +537 -0
  128. package/hooks/sdd-update-banner.js +134 -0
  129. package/hooks/sdd-validate-commit.sh +57 -0
  130. package/hooks/sdd-workflow-guard.js +94 -0
  131. package/package.json +34 -9
  132. package/scripts/audit-workflow-script-paths.cjs +73 -0
  133. package/scripts/build-hooks.js +114 -9
  134. package/scripts/changeset/cli.cjs +269 -0
  135. package/scripts/changeset/github-release-notes.cjs +198 -0
  136. package/scripts/changeset/lint.cjs +110 -0
  137. package/scripts/changeset/new.cjs +137 -0
  138. package/scripts/changeset/parse.cjs +60 -0
  139. package/scripts/changeset/render.cjs +34 -0
  140. package/scripts/changeset/serialize.cjs +74 -0
  141. package/scripts/command-contract-helpers.cjs +61 -0
  142. package/scripts/diff-touches-shipped-paths.cjs +147 -0
  143. package/scripts/fix-slash-commands.cjs +106 -0
  144. package/scripts/gen-inventory-manifest.cjs +109 -0
  145. package/scripts/lint-command-contract.cjs +108 -0
  146. package/scripts/lint-descriptions.cjs +83 -0
  147. package/scripts/lint-no-source-grep-extras.cjs +81 -0
  148. package/scripts/lint-no-source-grep.cjs +174 -0
  149. package/scripts/lint-shell-command-projection-drift.cjs +57 -0
  150. package/scripts/lint-skill-deps.cjs +180 -0
  151. package/scripts/pr-template-policy.cjs +169 -0
  152. package/scripts/prompt-injection-scan.sh +3 -0
  153. package/scripts/rebrand-gsd-to-sdd.sh +222 -220
  154. package/scripts/run-tests.cjs +5 -1
  155. package/scripts/strip-prose-atrefs.cjs +106 -0
  156. package/scripts/verify-tarball-sdk-dist.sh +69 -0
  157. package/sdd/bin/check-latest-version.cjs +104 -0
  158. package/sdd/bin/lib/active-workstream-store.cjs +85 -0
  159. package/sdd/bin/lib/adr-parser.cjs +394 -0
  160. package/sdd/bin/lib/artifacts.cjs +53 -0
  161. package/sdd/bin/lib/audit.cjs +755 -0
  162. package/sdd/bin/lib/cjs-command-router-adapter.cjs +39 -0
  163. package/sdd/bin/lib/clusters.cjs +135 -0
  164. package/sdd/bin/lib/command-aliases.generated.cjs +838 -0
  165. package/sdd/bin/lib/commands.cjs +179 -107
  166. package/sdd/bin/lib/config-schema.cjs +135 -0
  167. package/sdd/bin/lib/config.cjs +313 -86
  168. package/sdd/bin/lib/context-utilization.cjs +47 -0
  169. package/sdd/bin/lib/core.cjs +1146 -391
  170. package/sdd/bin/lib/decisions.cjs +48 -0
  171. package/sdd/bin/lib/docs.cjs +270 -0
  172. package/sdd/bin/lib/drift.cjs +379 -0
  173. package/sdd/bin/lib/fallow-runner.cjs +109 -0
  174. package/sdd/bin/lib/frontmatter.cjs +389 -336
  175. package/sdd/bin/lib/gap-checker.cjs +197 -0
  176. package/sdd/bin/lib/graphify.cjs +577 -0
  177. package/sdd/bin/lib/init-command-router.cjs +70 -0
  178. package/sdd/bin/lib/init.cjs +692 -97
  179. package/sdd/bin/lib/install-profiles.cjs +572 -0
  180. package/sdd/bin/lib/installer-migration-authoring.cjs +117 -0
  181. package/sdd/bin/lib/installer-migration-report.cjs +328 -0
  182. package/sdd/bin/lib/installer-migrations/000-first-time-baseline.cjs +220 -0
  183. package/sdd/bin/lib/installer-migrations/001-legacy-orphan-files.cjs +41 -0
  184. package/sdd/bin/lib/installer-migrations/002-codex-legacy-hooks-json.cjs +80 -0
  185. package/sdd/bin/lib/installer-migrations.cjs +703 -0
  186. package/sdd/bin/lib/intel.cjs +643 -0
  187. package/sdd/bin/lib/learnings.cjs +379 -0
  188. package/sdd/bin/lib/milestone.cjs +313 -252
  189. package/sdd/bin/lib/model-catalog.cjs +136 -0
  190. package/sdd/bin/lib/model-profiles.cjs +25 -68
  191. package/sdd/bin/lib/phase-command-router.cjs +96 -0
  192. package/sdd/bin/lib/phase.cjs +868 -335
  193. package/sdd/bin/lib/phases-command-router.cjs +39 -0
  194. package/sdd/bin/lib/plan-scan.cjs +138 -0
  195. package/sdd/bin/lib/planning-workspace.cjs +361 -0
  196. package/sdd/bin/lib/profile-output.cjs +197 -35
  197. package/sdd/bin/lib/profile-pipeline.cjs +1 -1
  198. package/sdd/bin/lib/review-reviewer-selection.cjs +125 -0
  199. package/sdd/bin/lib/roadmap-command-router.cjs +23 -0
  200. package/sdd/bin/lib/roadmap.cjs +416 -124
  201. package/sdd/bin/lib/runtime-homes.cjs +178 -0
  202. package/sdd/bin/lib/schema-detect.cjs +238 -0
  203. package/sdd/bin/lib/sdd2-import.cjs +511 -0
  204. package/sdd/bin/lib/secrets.cjs +33 -0
  205. package/sdd/bin/lib/security.cjs +131 -9
  206. package/sdd/bin/lib/shell-command-projection.cjs +548 -0
  207. package/sdd/bin/lib/state-command-router.cjs +100 -0
  208. package/sdd/bin/lib/state-document.cjs +12 -0
  209. package/sdd/bin/lib/state-document.generated.cjs +127 -0
  210. package/sdd/bin/lib/state.cjs +1253 -367
  211. package/sdd/bin/lib/surface.cjs +398 -0
  212. package/sdd/bin/lib/template.cjs +11 -5
  213. package/sdd/bin/lib/uat.cjs +9 -2
  214. package/sdd/bin/lib/validate-command-router.cjs +55 -0
  215. package/sdd/bin/lib/verify-command-router.cjs +34 -0
  216. package/sdd/bin/lib/verify.cjs +648 -140
  217. package/sdd/bin/lib/workstream-inventory.cjs +159 -0
  218. package/sdd/bin/lib/workstream-name-policy.cjs +33 -0
  219. package/sdd/bin/lib/workstream.cjs +78 -196
  220. package/sdd/bin/lib/worktree-safety.cjs +563 -0
  221. package/sdd/bin/sdd-tools.cjs +528 -222
  222. package/sdd/bin/verify-reapply-patches.cjs +247 -0
  223. package/sdd/contexts/dev.md +21 -0
  224. package/sdd/contexts/research.md +22 -0
  225. package/sdd/contexts/review.md +23 -0
  226. package/sdd/references/agent-contracts.md +79 -0
  227. package/sdd/references/ai-evals.md +156 -0
  228. package/sdd/references/ai-frameworks.md +186 -0
  229. package/sdd/references/artifact-types.md +131 -0
  230. package/sdd/references/autonomous-smart-discuss.md +277 -0
  231. package/sdd/references/checkpoints.md +36 -0
  232. package/sdd/references/common-bug-patterns.md +114 -0
  233. package/sdd/references/context-budget.md +85 -0
  234. package/sdd/references/continuation-format.md +30 -26
  235. package/sdd/references/debugger-philosophy.md +76 -0
  236. package/sdd/references/decimal-phase-calculation.md +5 -5
  237. package/sdd/references/doc-conflict-engine.md +91 -0
  238. package/sdd/references/domain-probes.md +125 -0
  239. package/sdd/references/execute-mvp-tdd.md +81 -0
  240. package/sdd/references/executor-examples.md +110 -0
  241. package/sdd/references/few-shot-examples/plan-checker.md +73 -0
  242. package/sdd/references/few-shot-examples/verifier.md +109 -0
  243. package/sdd/references/gate-prompts.md +100 -0
  244. package/sdd/references/gates.md +70 -0
  245. package/sdd/references/git-integration.md +9 -6
  246. package/sdd/references/git-planning-commit.md +6 -4
  247. package/sdd/references/ios-scaffold.md +123 -0
  248. package/sdd/references/mandatory-initial-read.md +2 -0
  249. package/sdd/references/model-profile-resolution.md +2 -0
  250. package/sdd/references/model-profiles.md +128 -22
  251. package/sdd/references/mvp-concepts.md +49 -0
  252. package/sdd/references/phase-argument-parsing.md +3 -3
  253. package/sdd/references/planner-antipatterns.md +89 -0
  254. package/sdd/references/planner-chunked.md +49 -0
  255. package/sdd/references/planner-gap-closure.md +62 -0
  256. package/sdd/references/planner-human-verify-mode.md +57 -0
  257. package/sdd/references/planner-mvp-mode.md +53 -0
  258. package/sdd/references/planner-reviews.md +39 -0
  259. package/sdd/references/planner-revision.md +87 -0
  260. package/sdd/references/planner-source-audit.md +73 -0
  261. package/sdd/references/planning-config.md +276 -7
  262. package/sdd/references/project-skills-discovery.md +19 -0
  263. package/sdd/references/revision-loop.md +97 -0
  264. package/sdd/references/scout-codebase.md +51 -0
  265. package/sdd/references/skeleton-template.md +48 -0
  266. package/sdd/references/sketch-interactivity.md +41 -0
  267. package/sdd/references/sketch-theme-system.md +94 -0
  268. package/sdd/references/sketch-tooling.md +45 -0
  269. package/sdd/references/sketch-variant-patterns.md +81 -0
  270. package/sdd/references/spidr-splitting.md +69 -0
  271. package/sdd/references/tdd.md +67 -0
  272. package/sdd/references/thinking-models-debug.md +44 -0
  273. package/sdd/references/thinking-models-execution.md +50 -0
  274. package/sdd/references/thinking-models-planning.md +62 -0
  275. package/sdd/references/thinking-models-research.md +50 -0
  276. package/sdd/references/thinking-models-verification.md +55 -0
  277. package/sdd/references/thinking-partner.md +96 -0
  278. package/sdd/references/ui-brand.md +4 -4
  279. package/sdd/references/universal-anti-patterns.md +63 -0
  280. package/sdd/references/user-story-template.md +58 -0
  281. package/sdd/references/verification-overrides.md +227 -0
  282. package/sdd/references/verify-mvp-mode.md +85 -0
  283. package/sdd/references/workstream-flag.md +63 -10
  284. package/sdd/references/worktree-path-safety.md +89 -0
  285. package/sdd/templates/AI-SPEC.md +246 -0
  286. package/sdd/templates/DEBUG.md +7 -2
  287. package/sdd/templates/README.md +77 -0
  288. package/sdd/templates/SECURITY.md +61 -0
  289. package/sdd/templates/VALIDATION.md +3 -3
  290. package/sdd/templates/claude-md.md +27 -4
  291. package/sdd/templates/config.json +20 -2
  292. package/sdd/templates/discovery.md +2 -2
  293. package/sdd/templates/research.md +40 -0
  294. package/sdd/templates/spec.md +307 -0
  295. package/sdd/templates/state.md +10 -2
  296. package/sdd/workflows/add-backlog.md +90 -0
  297. package/sdd/workflows/add-phase.md +12 -12
  298. package/sdd/workflows/add-tests.md +6 -3
  299. package/sdd/workflows/add-todo.md +8 -6
  300. package/sdd/workflows/ai-integration-phase.md +294 -0
  301. package/sdd/workflows/analyze-dependencies.md +96 -0
  302. package/sdd/workflows/audit-fix.md +177 -0
  303. package/sdd/workflows/audit-milestone.md +35 -18
  304. package/sdd/workflows/audit-uat.md +1 -1
  305. package/sdd/workflows/autonomous.md +202 -304
  306. package/sdd/workflows/check-todos.md +12 -10
  307. package/sdd/workflows/cleanup.md +3 -1
  308. package/sdd/workflows/code-review-fix.md +501 -0
  309. package/sdd/workflows/code-review.md +613 -0
  310. package/sdd/workflows/complete-milestone.md +115 -28
  311. package/sdd/workflows/debug.md +231 -0
  312. package/sdd/workflows/diagnose-issues.md +14 -5
  313. package/sdd/workflows/discovery-phase.md +3 -1
  314. package/sdd/workflows/discuss-phase/modes/advisor.md +175 -0
  315. package/sdd/workflows/discuss-phase/modes/all.md +28 -0
  316. package/sdd/workflows/discuss-phase/modes/analyze.md +44 -0
  317. package/sdd/workflows/discuss-phase/modes/auto.md +56 -0
  318. package/sdd/workflows/discuss-phase/modes/batch.md +52 -0
  319. package/sdd/workflows/discuss-phase/modes/chain.md +97 -0
  320. package/sdd/workflows/discuss-phase/modes/default.md +141 -0
  321. package/sdd/workflows/discuss-phase/modes/power.md +44 -0
  322. package/sdd/workflows/discuss-phase/modes/text.md +55 -0
  323. package/sdd/workflows/discuss-phase/templates/checkpoint.json +18 -0
  324. package/sdd/workflows/discuss-phase/templates/context.md +136 -0
  325. package/sdd/workflows/discuss-phase/templates/discussion-log.md +50 -0
  326. package/sdd/workflows/discuss-phase-assumptions.md +41 -20
  327. package/sdd/workflows/discuss-phase-power.md +291 -0
  328. package/sdd/workflows/discuss-phase.md +242 -792
  329. package/sdd/workflows/do.md +13 -7
  330. package/sdd/workflows/docs-update.md +1161 -0
  331. package/sdd/workflows/edit-phase.md +294 -0
  332. package/sdd/workflows/eval-review.md +155 -0
  333. package/sdd/workflows/execute-phase/steps/codebase-drift-gate.md +81 -0
  334. package/sdd/workflows/execute-phase/steps/per-plan-worktree-gate.md +94 -0
  335. package/sdd/workflows/execute-phase/steps/post-merge-gate.md +116 -0
  336. package/sdd/workflows/execute-phase.md +1062 -108
  337. package/sdd/workflows/execute-plan.md +118 -107
  338. package/sdd/workflows/explore.md +143 -0
  339. package/sdd/workflows/extract-learnings.md +242 -0
  340. package/sdd/workflows/forensics.md +17 -4
  341. package/sdd/workflows/graduation.md +195 -0
  342. package/sdd/workflows/health.md +45 -3
  343. package/sdd/workflows/help.md +265 -88
  344. package/sdd/workflows/import.md +253 -0
  345. package/sdd/workflows/inbox.md +387 -0
  346. package/sdd/workflows/ingest-docs.md +339 -0
  347. package/sdd/workflows/insert-phase.md +37 -16
  348. package/sdd/workflows/list-phase-assumptions.md +2 -2
  349. package/sdd/workflows/list-workspaces.md +3 -3
  350. package/sdd/workflows/manager.md +62 -32
  351. package/sdd/workflows/map-codebase.md +90 -24
  352. package/sdd/workflows/milestone-summary.md +6 -6
  353. package/sdd/workflows/mvp-phase.md +221 -0
  354. package/sdd/workflows/new-milestone.md +168 -20
  355. package/sdd/workflows/new-project.md +273 -47
  356. package/sdd/workflows/new-workspace.md +8 -6
  357. package/sdd/workflows/next.md +127 -4
  358. package/sdd/workflows/note.md +7 -5
  359. package/sdd/workflows/pause-work.md +79 -12
  360. package/sdd/workflows/plan-milestone-gaps.md +14 -7
  361. package/sdd/workflows/plan-phase.md +987 -62
  362. package/sdd/workflows/plan-review-convergence.md +329 -0
  363. package/sdd/workflows/plant-seed.md +145 -85
  364. package/sdd/workflows/pr-branch.md +41 -13
  365. package/sdd/workflows/profile-user.md +20 -18
  366. package/sdd/workflows/progress.md +186 -44
  367. package/sdd/workflows/quick.md +470 -58
  368. package/sdd/workflows/reapply-patches.md +390 -0
  369. package/sdd/workflows/remove-phase.md +12 -12
  370. package/sdd/workflows/remove-workspace.md +24 -7
  371. package/sdd/workflows/resume-project.md +18 -15
  372. package/sdd/workflows/review.md +242 -11
  373. package/sdd/workflows/scan.md +104 -0
  374. package/sdd/workflows/secure-phase.md +179 -0
  375. package/sdd/workflows/session-report.md +2 -2
  376. package/sdd/workflows/settings-advanced.md +579 -0
  377. package/sdd/workflows/settings-integrations.md +281 -0
  378. package/sdd/workflows/settings.md +221 -16
  379. package/sdd/workflows/ship.md +140 -13
  380. package/sdd/workflows/sketch-wrap-up.md +285 -0
  381. package/sdd/workflows/sketch.md +360 -0
  382. package/sdd/workflows/spec-phase.md +262 -0
  383. package/sdd/workflows/spike-wrap-up.md +306 -0
  384. package/sdd/workflows/spike.md +452 -0
  385. package/sdd/workflows/stats.md +20 -1
  386. package/sdd/workflows/sync-skills.md +182 -0
  387. package/sdd/workflows/thread.md +221 -0
  388. package/sdd/workflows/transition.md +44 -22
  389. package/sdd/workflows/ui-phase.md +39 -14
  390. package/sdd/workflows/ui-review.md +33 -6
  391. package/sdd/workflows/ultraplan-phase.md +198 -0
  392. package/sdd/workflows/undo.md +314 -0
  393. package/sdd/workflows/update.md +350 -29
  394. package/sdd/workflows/validate-phase.md +10 -6
  395. package/sdd/workflows/verify-phase.md +307 -18
  396. package/sdd/workflows/verify-work.md +153 -10
  397. package/sdk/dist/cli-transport.d.ts +19 -0
  398. package/sdk/dist/cli-transport.d.ts.map +1 -0
  399. package/sdk/dist/cli-transport.js +104 -0
  400. package/sdk/dist/cli-transport.js.map +1 -0
  401. package/sdk/dist/cli.d.ts +46 -0
  402. package/sdk/dist/cli.d.ts.map +1 -0
  403. package/sdk/dist/cli.js +511 -0
  404. package/sdk/dist/cli.js.map +1 -0
  405. package/sdk/dist/config.d.ts +84 -0
  406. package/sdk/dist/config.d.ts.map +1 -0
  407. package/sdk/dist/config.js +135 -0
  408. package/sdk/dist/config.js.map +1 -0
  409. package/sdk/dist/context-engine.d.ts +49 -0
  410. package/sdk/dist/context-engine.d.ts.map +1 -0
  411. package/sdk/dist/context-engine.js +142 -0
  412. package/sdk/dist/context-engine.js.map +1 -0
  413. package/sdk/dist/context-truncation.d.ts +33 -0
  414. package/sdk/dist/context-truncation.d.ts.map +1 -0
  415. package/sdk/dist/context-truncation.js +197 -0
  416. package/sdk/dist/context-truncation.js.map +1 -0
  417. package/sdk/dist/errors.d.ts +46 -0
  418. package/sdk/dist/errors.d.ts.map +1 -0
  419. package/sdk/dist/errors.js +64 -0
  420. package/sdk/dist/errors.js.map +1 -0
  421. package/sdk/dist/event-stream.d.ts +53 -0
  422. package/sdk/dist/event-stream.d.ts.map +1 -0
  423. package/sdk/dist/event-stream.js +321 -0
  424. package/sdk/dist/event-stream.js.map +1 -0
  425. package/sdk/dist/golden/capture.d.ts +15 -0
  426. package/sdk/dist/golden/capture.d.ts.map +1 -0
  427. package/sdk/dist/golden/capture.js +67 -0
  428. package/sdk/dist/golden/capture.js.map +1 -0
  429. package/sdk/dist/golden/golden-integration-covered.d.ts +6 -0
  430. package/sdk/dist/golden/golden-integration-covered.d.ts.map +1 -0
  431. package/sdk/dist/golden/golden-integration-covered.js +30 -0
  432. package/sdk/dist/golden/golden-integration-covered.js.map +1 -0
  433. package/sdk/dist/golden/golden-mutation-covered.d.ts +7 -0
  434. package/sdk/dist/golden/golden-mutation-covered.d.ts.map +1 -0
  435. package/sdk/dist/golden/golden-mutation-covered.js +17 -0
  436. package/sdk/dist/golden/golden-mutation-covered.js.map +1 -0
  437. package/sdk/dist/golden/golden-policy.d.ts +10 -0
  438. package/sdk/dist/golden/golden-policy.d.ts.map +1 -0
  439. package/sdk/dist/golden/golden-policy.js +98 -0
  440. package/sdk/dist/golden/golden-policy.js.map +1 -0
  441. package/sdk/dist/golden/init-golden-normalize.d.ts +8 -0
  442. package/sdk/dist/golden/init-golden-normalize.d.ts.map +1 -0
  443. package/sdk/dist/golden/init-golden-normalize.js +14 -0
  444. package/sdk/dist/golden/init-golden-normalize.js.map +1 -0
  445. package/sdk/dist/golden/read-only-golden-rows.d.ts +20 -0
  446. package/sdk/dist/golden/read-only-golden-rows.d.ts.map +1 -0
  447. package/sdk/dist/golden/read-only-golden-rows.js +67 -0
  448. package/sdk/dist/golden/read-only-golden-rows.js.map +1 -0
  449. package/sdk/dist/golden/registry-canonical-commands.d.ts +6 -0
  450. package/sdk/dist/golden/registry-canonical-commands.d.ts.map +1 -0
  451. package/sdk/dist/golden/registry-canonical-commands.js +30 -0
  452. package/sdk/dist/golden/registry-canonical-commands.js.map +1 -0
  453. package/sdk/dist/index.d.ts +125 -0
  454. package/sdk/dist/index.d.ts.map +1 -0
  455. package/sdk/dist/index.js +298 -0
  456. package/sdk/dist/index.js.map +1 -0
  457. package/sdk/dist/init-runner.d.ts +90 -0
  458. package/sdk/dist/init-runner.d.ts.map +1 -0
  459. package/sdk/dist/init-runner.js +613 -0
  460. package/sdk/dist/init-runner.js.map +1 -0
  461. package/sdk/dist/logger.d.ts +50 -0
  462. package/sdk/dist/logger.d.ts.map +1 -0
  463. package/sdk/dist/logger.js +70 -0
  464. package/sdk/dist/logger.js.map +1 -0
  465. package/sdk/dist/model-catalog.d.ts +31 -0
  466. package/sdk/dist/model-catalog.d.ts.map +1 -0
  467. package/sdk/dist/model-catalog.js +31 -0
  468. package/sdk/dist/model-catalog.js.map +1 -0
  469. package/sdk/dist/phase-prompt.d.ts +72 -0
  470. package/sdk/dist/phase-prompt.d.ts.map +1 -0
  471. package/sdk/dist/phase-prompt.js +213 -0
  472. package/sdk/dist/phase-prompt.js.map +1 -0
  473. package/sdk/dist/phase-runner.d.ts +145 -0
  474. package/sdk/dist/phase-runner.d.ts.map +1 -0
  475. package/sdk/dist/phase-runner.js +1206 -0
  476. package/sdk/dist/phase-runner.js.map +1 -0
  477. package/sdk/dist/plan-parser.d.ts +55 -0
  478. package/sdk/dist/plan-parser.d.ts.map +1 -0
  479. package/sdk/dist/plan-parser.js +389 -0
  480. package/sdk/dist/plan-parser.js.map +1 -0
  481. package/sdk/dist/planning-journal.d.ts +64 -0
  482. package/sdk/dist/planning-journal.d.ts.map +1 -0
  483. package/sdk/dist/planning-journal.js +88 -0
  484. package/sdk/dist/planning-journal.js.map +1 -0
  485. package/sdk/dist/planning-runtime.d.ts +67 -0
  486. package/sdk/dist/planning-runtime.d.ts.map +1 -0
  487. package/sdk/dist/planning-runtime.js +58 -0
  488. package/sdk/dist/planning-runtime.js.map +1 -0
  489. package/sdk/dist/prompt-builder.d.ts +44 -0
  490. package/sdk/dist/prompt-builder.d.ts.map +1 -0
  491. package/sdk/dist/prompt-builder.js +180 -0
  492. package/sdk/dist/prompt-builder.js.map +1 -0
  493. package/sdk/dist/prompt-sanitizer.d.ts +35 -0
  494. package/sdk/dist/prompt-sanitizer.d.ts.map +1 -0
  495. package/sdk/dist/prompt-sanitizer.js +101 -0
  496. package/sdk/dist/prompt-sanitizer.js.map +1 -0
  497. package/sdk/dist/query/active-workstream-store.d.ts +7 -0
  498. package/sdk/dist/query/active-workstream-store.d.ts.map +1 -0
  499. package/sdk/dist/query/active-workstream-store.js +56 -0
  500. package/sdk/dist/query/active-workstream-store.js.map +1 -0
  501. package/sdk/dist/query/agent-failure-classifier.d.ts +38 -0
  502. package/sdk/dist/query/agent-failure-classifier.d.ts.map +1 -0
  503. package/sdk/dist/query/agent-failure-classifier.js +83 -0
  504. package/sdk/dist/query/agent-failure-classifier.js.map +1 -0
  505. package/sdk/dist/query/audit-open.d.ts +46 -0
  506. package/sdk/dist/query/audit-open.d.ts.map +1 -0
  507. package/sdk/dist/query/audit-open.js +662 -0
  508. package/sdk/dist/query/audit-open.js.map +1 -0
  509. package/sdk/dist/query/check-auto-mode.d.ts +13 -0
  510. package/sdk/dist/query/check-auto-mode.d.ts.map +1 -0
  511. package/sdk/dist/query/check-auto-mode.js +40 -0
  512. package/sdk/dist/query/check-auto-mode.js.map +1 -0
  513. package/sdk/dist/query/check-completion.d.ts +10 -0
  514. package/sdk/dist/query/check-completion.d.ts.map +1 -0
  515. package/sdk/dist/query/check-completion.js +157 -0
  516. package/sdk/dist/query/check-completion.js.map +1 -0
  517. package/sdk/dist/query/check-decision-coverage.d.ts +33 -0
  518. package/sdk/dist/query/check-decision-coverage.d.ts.map +1 -0
  519. package/sdk/dist/query/check-decision-coverage.js +472 -0
  520. package/sdk/dist/query/check-decision-coverage.js.map +1 -0
  521. package/sdk/dist/query/check-gates.d.ts +10 -0
  522. package/sdk/dist/query/check-gates.d.ts.map +1 -0
  523. package/sdk/dist/query/check-gates.js +89 -0
  524. package/sdk/dist/query/check-gates.js.map +1 -0
  525. package/sdk/dist/query/check-ship-ready.d.ts +10 -0
  526. package/sdk/dist/query/check-ship-ready.d.ts.map +1 -0
  527. package/sdk/dist/query/check-ship-ready.js +93 -0
  528. package/sdk/dist/query/check-ship-ready.js.map +1 -0
  529. package/sdk/dist/query/check-verification-status.d.ts +10 -0
  530. package/sdk/dist/query/check-verification-status.d.ts.map +1 -0
  531. package/sdk/dist/query/check-verification-status.js +142 -0
  532. package/sdk/dist/query/check-verification-status.js.map +1 -0
  533. package/sdk/dist/query/command-aliases.generated.d.ts +31 -0
  534. package/sdk/dist/query/command-aliases.generated.d.ts.map +1 -0
  535. package/sdk/dist/query/command-aliases.generated.js +135 -0
  536. package/sdk/dist/query/command-aliases.generated.js.map +1 -0
  537. package/sdk/dist/query/command-catalog.d.ts +9 -0
  538. package/sdk/dist/query/command-catalog.d.ts.map +1 -0
  539. package/sdk/dist/query/command-catalog.js +17 -0
  540. package/sdk/dist/query/command-catalog.js.map +1 -0
  541. package/sdk/dist/query/command-definition.d.ts +19 -0
  542. package/sdk/dist/query/command-definition.d.ts.map +1 -0
  543. package/sdk/dist/query/command-definition.js +44 -0
  544. package/sdk/dist/query/command-definition.js.map +1 -0
  545. package/sdk/dist/query/command-family-handlers.d.ts +3 -0
  546. package/sdk/dist/query/command-family-handlers.d.ts.map +1 -0
  547. package/sdk/dist/query/command-family-handlers.js +94 -0
  548. package/sdk/dist/query/command-family-handlers.js.map +1 -0
  549. package/sdk/dist/query/command-manifest.d.ts +2 -0
  550. package/sdk/dist/query/command-manifest.d.ts.map +1 -0
  551. package/sdk/dist/query/command-manifest.init.d.ts +6 -0
  552. package/sdk/dist/query/command-manifest.init.d.ts.map +1 -0
  553. package/sdk/dist/query/command-manifest.init.js +23 -0
  554. package/sdk/dist/query/command-manifest.init.js.map +1 -0
  555. package/sdk/dist/query/command-manifest.js +17 -0
  556. package/sdk/dist/query/command-manifest.js.map +1 -0
  557. package/sdk/dist/query/command-manifest.non-family.d.ts +9 -0
  558. package/sdk/dist/query/command-manifest.non-family.d.ts.map +1 -0
  559. package/sdk/dist/query/command-manifest.non-family.js +59 -0
  560. package/sdk/dist/query/command-manifest.non-family.js.map +1 -0
  561. package/sdk/dist/query/command-manifest.phase.d.ts +6 -0
  562. package/sdk/dist/query/command-manifest.phase.d.ts.map +1 -0
  563. package/sdk/dist/query/command-manifest.phase.js +15 -0
  564. package/sdk/dist/query/command-manifest.phase.js.map +1 -0
  565. package/sdk/dist/query/command-manifest.phases.d.ts +7 -0
  566. package/sdk/dist/query/command-manifest.phases.d.ts.map +1 -0
  567. package/sdk/dist/query/command-manifest.phases.js +10 -0
  568. package/sdk/dist/query/command-manifest.phases.js.map +1 -0
  569. package/sdk/dist/query/command-manifest.roadmap.d.ts +6 -0
  570. package/sdk/dist/query/command-manifest.roadmap.d.ts.map +1 -0
  571. package/sdk/dist/query/command-manifest.roadmap.js +10 -0
  572. package/sdk/dist/query/command-manifest.roadmap.js.map +1 -0
  573. package/sdk/dist/query/command-manifest.state.d.ts +9 -0
  574. package/sdk/dist/query/command-manifest.state.d.ts.map +1 -0
  575. package/sdk/dist/query/command-manifest.state.js +30 -0
  576. package/sdk/dist/query/command-manifest.state.js.map +1 -0
  577. package/sdk/dist/query/command-manifest.types.d.ts +12 -0
  578. package/sdk/dist/query/command-manifest.types.d.ts.map +1 -0
  579. package/sdk/dist/query/command-manifest.types.js +2 -0
  580. package/sdk/dist/query/command-manifest.types.js.map +1 -0
  581. package/sdk/dist/query/command-manifest.validate.d.ts +6 -0
  582. package/sdk/dist/query/command-manifest.validate.d.ts.map +1 -0
  583. package/sdk/dist/query/command-manifest.validate.js +10 -0
  584. package/sdk/dist/query/command-manifest.validate.js.map +1 -0
  585. package/sdk/dist/query/command-manifest.verify.d.ts +6 -0
  586. package/sdk/dist/query/command-manifest.verify.d.ts.map +1 -0
  587. package/sdk/dist/query/command-manifest.verify.js +14 -0
  588. package/sdk/dist/query/command-manifest.verify.js.map +1 -0
  589. package/sdk/dist/query/command-static-catalog-domain.d.ts +3 -0
  590. package/sdk/dist/query/command-static-catalog-domain.d.ts.map +1 -0
  591. package/sdk/dist/query/command-static-catalog-domain.js +116 -0
  592. package/sdk/dist/query/command-static-catalog-domain.js.map +1 -0
  593. package/sdk/dist/query/command-static-catalog-foundation.d.ts +7 -0
  594. package/sdk/dist/query/command-static-catalog-foundation.d.ts.map +1 -0
  595. package/sdk/dist/query/command-static-catalog-foundation.js +98 -0
  596. package/sdk/dist/query/command-static-catalog-foundation.js.map +1 -0
  597. package/sdk/dist/query/command-topology.d.ts +32 -0
  598. package/sdk/dist/query/command-topology.d.ts.map +1 -0
  599. package/sdk/dist/query/command-topology.js +66 -0
  600. package/sdk/dist/query/command-topology.js.map +1 -0
  601. package/sdk/dist/query/commands-list.d.ts +14 -0
  602. package/sdk/dist/query/commands-list.d.ts.map +1 -0
  603. package/sdk/dist/query/commands-list.js +18 -0
  604. package/sdk/dist/query/commands-list.js.map +1 -0
  605. package/sdk/dist/query/commit.d.ts +79 -0
  606. package/sdk/dist/query/commit.d.ts.map +1 -0
  607. package/sdk/dist/query/commit.js +340 -0
  608. package/sdk/dist/query/commit.js.map +1 -0
  609. package/sdk/dist/query/config-gates.d.ts +12 -0
  610. package/sdk/dist/query/config-gates.d.ts.map +1 -0
  611. package/sdk/dist/query/config-gates.js +66 -0
  612. package/sdk/dist/query/config-gates.js.map +1 -0
  613. package/sdk/dist/query/config-mutation.d.ts +86 -0
  614. package/sdk/dist/query/config-mutation.d.ts.map +1 -0
  615. package/sdk/dist/query/config-mutation.js +518 -0
  616. package/sdk/dist/query/config-mutation.js.map +1 -0
  617. package/sdk/dist/query/config-query.d.ts +57 -0
  618. package/sdk/dist/query/config-query.d.ts.map +1 -0
  619. package/sdk/dist/query/config-query.js +208 -0
  620. package/sdk/dist/query/config-query.js.map +1 -0
  621. package/sdk/dist/query/config-schema.d.ts +36 -0
  622. package/sdk/dist/query/config-schema.d.ts.map +1 -0
  623. package/sdk/dist/query/config-schema.js +147 -0
  624. package/sdk/dist/query/config-schema.js.map +1 -0
  625. package/sdk/dist/query/decisions.d.ts +58 -0
  626. package/sdk/dist/query/decisions.d.ts.map +1 -0
  627. package/sdk/dist/query/decisions.js +161 -0
  628. package/sdk/dist/query/decisions.js.map +1 -0
  629. package/sdk/dist/query/detect-custom-files.d.ts +11 -0
  630. package/sdk/dist/query/detect-custom-files.d.ts.map +1 -0
  631. package/sdk/dist/query/detect-custom-files.js +89 -0
  632. package/sdk/dist/query/detect-custom-files.js.map +1 -0
  633. package/sdk/dist/query/detect-phase-type.d.ts +9 -0
  634. package/sdk/dist/query/detect-phase-type.d.ts.map +1 -0
  635. package/sdk/dist/query/detect-phase-type.js +124 -0
  636. package/sdk/dist/query/detect-phase-type.js.map +1 -0
  637. package/sdk/dist/query/docs-init.d.ts +26 -0
  638. package/sdk/dist/query/docs-init.d.ts.map +1 -0
  639. package/sdk/dist/query/docs-init.js +231 -0
  640. package/sdk/dist/query/docs-init.js.map +1 -0
  641. package/sdk/dist/query/fallow-audit.d.ts +44 -0
  642. package/sdk/dist/query/fallow-audit.d.ts.map +1 -0
  643. package/sdk/dist/query/fallow-audit.js +44 -0
  644. package/sdk/dist/query/fallow-audit.js.map +1 -0
  645. package/sdk/dist/query/frontmatter-mutation.d.ts +77 -0
  646. package/sdk/dist/query/frontmatter-mutation.d.ts.map +1 -0
  647. package/sdk/dist/query/frontmatter-mutation.js +317 -0
  648. package/sdk/dist/query/frontmatter-mutation.js.map +1 -0
  649. package/sdk/dist/query/frontmatter.d.ts +93 -0
  650. package/sdk/dist/query/frontmatter.d.ts.map +1 -0
  651. package/sdk/dist/query/frontmatter.js +365 -0
  652. package/sdk/dist/query/frontmatter.js.map +1 -0
  653. package/sdk/dist/query/helpers.d.ts +191 -0
  654. package/sdk/dist/query/helpers.d.ts.map +1 -0
  655. package/sdk/dist/query/helpers.js +613 -0
  656. package/sdk/dist/query/helpers.js.map +1 -0
  657. package/sdk/dist/query/index.d.ts +8 -0
  658. package/sdk/dist/query/index.d.ts.map +1 -0
  659. package/sdk/dist/query/index.js +6 -0
  660. package/sdk/dist/query/index.js.map +1 -0
  661. package/sdk/dist/query/init-complex.d.ts +47 -0
  662. package/sdk/dist/query/init-complex.d.ts.map +1 -0
  663. package/sdk/dist/query/init-complex.js +718 -0
  664. package/sdk/dist/query/init-complex.js.map +1 -0
  665. package/sdk/dist/query/init.d.ts +106 -0
  666. package/sdk/dist/query/init.d.ts.map +1 -0
  667. package/sdk/dist/query/init.js +1159 -0
  668. package/sdk/dist/query/init.js.map +1 -0
  669. package/sdk/dist/query/intel.d.ts +43 -0
  670. package/sdk/dist/query/intel.d.ts.map +1 -0
  671. package/sdk/dist/query/intel.js +416 -0
  672. package/sdk/dist/query/intel.js.map +1 -0
  673. package/sdk/dist/query/mutation-event-decorator.d.ts +5 -0
  674. package/sdk/dist/query/mutation-event-decorator.d.ts.map +1 -0
  675. package/sdk/dist/query/mutation-event-decorator.js +28 -0
  676. package/sdk/dist/query/mutation-event-decorator.js.map +1 -0
  677. package/sdk/dist/query/mutation-event-mapper.d.ts +4 -0
  678. package/sdk/dist/query/mutation-event-mapper.d.ts.map +1 -0
  679. package/sdk/dist/query/mutation-event-mapper.js +70 -0
  680. package/sdk/dist/query/mutation-event-mapper.js.map +1 -0
  681. package/sdk/dist/query/mvp.d.ts +113 -0
  682. package/sdk/dist/query/mvp.d.ts.map +1 -0
  683. package/sdk/dist/query/mvp.js +225 -0
  684. package/sdk/dist/query/mvp.js.map +1 -0
  685. package/sdk/dist/query/phase-filesystem-adapter.d.ts +4 -0
  686. package/sdk/dist/query/phase-filesystem-adapter.d.ts.map +1 -0
  687. package/sdk/dist/query/phase-filesystem-adapter.js +33 -0
  688. package/sdk/dist/query/phase-filesystem-adapter.js.map +1 -0
  689. package/sdk/dist/query/phase-lifecycle-policy.d.ts +34 -0
  690. package/sdk/dist/query/phase-lifecycle-policy.d.ts.map +1 -0
  691. package/sdk/dist/query/phase-lifecycle-policy.js +138 -0
  692. package/sdk/dist/query/phase-lifecycle-policy.js.map +1 -0
  693. package/sdk/dist/query/phase-lifecycle.d.ts +116 -0
  694. package/sdk/dist/query/phase-lifecycle.d.ts.map +1 -0
  695. package/sdk/dist/query/phase-lifecycle.js +1486 -0
  696. package/sdk/dist/query/phase-lifecycle.js.map +1 -0
  697. package/sdk/dist/query/phase-list-queries.d.ts +18 -0
  698. package/sdk/dist/query/phase-list-queries.d.ts.map +1 -0
  699. package/sdk/dist/query/phase-list-queries.js +129 -0
  700. package/sdk/dist/query/phase-list-queries.js.map +1 -0
  701. package/sdk/dist/query/phase-ready.d.ts +9 -0
  702. package/sdk/dist/query/phase-ready.d.ts.map +1 -0
  703. package/sdk/dist/query/phase-ready.js +132 -0
  704. package/sdk/dist/query/phase-ready.js.map +1 -0
  705. package/sdk/dist/query/phase-roadmap-mutation.d.ts +13 -0
  706. package/sdk/dist/query/phase-roadmap-mutation.d.ts.map +1 -0
  707. package/sdk/dist/query/phase-roadmap-mutation.js +65 -0
  708. package/sdk/dist/query/phase-roadmap-mutation.js.map +1 -0
  709. package/sdk/dist/query/phase.d.ts +48 -0
  710. package/sdk/dist/query/phase.d.ts.map +1 -0
  711. package/sdk/dist/query/phase.js +451 -0
  712. package/sdk/dist/query/phase.js.map +1 -0
  713. package/sdk/dist/query/pipeline.d.ts +53 -0
  714. package/sdk/dist/query/pipeline.d.ts.map +1 -0
  715. package/sdk/dist/query/pipeline.js +198 -0
  716. package/sdk/dist/query/pipeline.js.map +1 -0
  717. package/sdk/dist/query/plan-scan.d.ts +14 -0
  718. package/sdk/dist/query/plan-scan.d.ts.map +1 -0
  719. package/sdk/dist/query/plan-scan.js +70 -0
  720. package/sdk/dist/query/plan-scan.js.map +1 -0
  721. package/sdk/dist/query/plan-task-structure.d.ts +9 -0
  722. package/sdk/dist/query/plan-task-structure.d.ts.map +1 -0
  723. package/sdk/dist/query/plan-task-structure.js +59 -0
  724. package/sdk/dist/query/plan-task-structure.js.map +1 -0
  725. package/sdk/dist/query/profile-extract-messages.d.ts +40 -0
  726. package/sdk/dist/query/profile-extract-messages.d.ts.map +1 -0
  727. package/sdk/dist/query/profile-extract-messages.js +195 -0
  728. package/sdk/dist/query/profile-extract-messages.js.map +1 -0
  729. package/sdk/dist/query/profile-output.d.ts +11 -0
  730. package/sdk/dist/query/profile-output.d.ts.map +1 -0
  731. package/sdk/dist/query/profile-output.js +873 -0
  732. package/sdk/dist/query/profile-output.js.map +1 -0
  733. package/sdk/dist/query/profile-questionnaire-data.d.ts +21 -0
  734. package/sdk/dist/query/profile-questionnaire-data.d.ts.map +1 -0
  735. package/sdk/dist/query/profile-questionnaire-data.js +171 -0
  736. package/sdk/dist/query/profile-questionnaire-data.js.map +1 -0
  737. package/sdk/dist/query/profile-sample.d.ts +22 -0
  738. package/sdk/dist/query/profile-sample.d.ts.map +1 -0
  739. package/sdk/dist/query/profile-sample.js +136 -0
  740. package/sdk/dist/query/profile-sample.js.map +1 -0
  741. package/sdk/dist/query/profile-scan-sessions.d.ts +49 -0
  742. package/sdk/dist/query/profile-scan-sessions.d.ts.map +1 -0
  743. package/sdk/dist/query/profile-scan-sessions.js +137 -0
  744. package/sdk/dist/query/profile-scan-sessions.js.map +1 -0
  745. package/sdk/dist/query/profile.d.ts +61 -0
  746. package/sdk/dist/query/profile.d.ts.map +1 -0
  747. package/sdk/dist/query/profile.js +307 -0
  748. package/sdk/dist/query/profile.js.map +1 -0
  749. package/sdk/dist/query/progress.d.ts +77 -0
  750. package/sdk/dist/query/progress.d.ts.map +1 -0
  751. package/sdk/dist/query/progress.js +481 -0
  752. package/sdk/dist/query/progress.js.map +1 -0
  753. package/sdk/dist/query/query-cli-adapter.d.ts +8 -0
  754. package/sdk/dist/query/query-cli-adapter.d.ts.map +1 -0
  755. package/sdk/dist/query/query-cli-adapter.js +32 -0
  756. package/sdk/dist/query/query-cli-adapter.js.map +1 -0
  757. package/sdk/dist/query/query-cli-output.d.ts +9 -0
  758. package/sdk/dist/query/query-cli-output.d.ts.map +1 -0
  759. package/sdk/dist/query/query-cli-output.js +28 -0
  760. package/sdk/dist/query/query-cli-output.js.map +1 -0
  761. package/sdk/dist/query/query-command-diagnosis.d.ts +6 -0
  762. package/sdk/dist/query/query-command-diagnosis.d.ts.map +1 -0
  763. package/sdk/dist/query/query-command-diagnosis.js +6 -0
  764. package/sdk/dist/query/query-command-diagnosis.js.map +1 -0
  765. package/sdk/dist/query/query-command-resolution-strategy.d.ts +29 -0
  766. package/sdk/dist/query/query-command-resolution-strategy.d.ts.map +1 -0
  767. package/sdk/dist/query/query-command-resolution-strategy.js +103 -0
  768. package/sdk/dist/query/query-command-resolution-strategy.js.map +1 -0
  769. package/sdk/dist/query/query-command-semantics.d.ts +7 -0
  770. package/sdk/dist/query/query-command-semantics.d.ts.map +1 -0
  771. package/sdk/dist/query/query-command-semantics.js +7 -0
  772. package/sdk/dist/query/query-command-semantics.js.map +1 -0
  773. package/sdk/dist/query/query-dispatch-contract.d.ts +21 -0
  774. package/sdk/dist/query/query-dispatch-contract.d.ts.map +1 -0
  775. package/sdk/dist/query/query-dispatch-contract.js +2 -0
  776. package/sdk/dist/query/query-dispatch-contract.js.map +1 -0
  777. package/sdk/dist/query/query-dispatch-error-mapper.d.ts +6 -0
  778. package/sdk/dist/query/query-dispatch-error-mapper.d.ts.map +1 -0
  779. package/sdk/dist/query/query-dispatch-error-mapper.js +6 -0
  780. package/sdk/dist/query/query-dispatch-error-mapper.js.map +1 -0
  781. package/sdk/dist/query/query-dispatch-formatting.d.ts +6 -0
  782. package/sdk/dist/query/query-dispatch-formatting.d.ts.map +1 -0
  783. package/sdk/dist/query/query-dispatch-formatting.js +6 -0
  784. package/sdk/dist/query/query-dispatch-formatting.js.map +1 -0
  785. package/sdk/dist/query/query-dispatch-input-validation.d.ts +6 -0
  786. package/sdk/dist/query/query-dispatch-input-validation.d.ts.map +1 -0
  787. package/sdk/dist/query/query-dispatch-input-validation.js +6 -0
  788. package/sdk/dist/query/query-dispatch-input-validation.js.map +1 -0
  789. package/sdk/dist/query/query-dispatch-observability.d.ts +2 -0
  790. package/sdk/dist/query/query-dispatch-observability.d.ts.map +1 -0
  791. package/sdk/dist/query/query-dispatch-observability.js +7 -0
  792. package/sdk/dist/query/query-dispatch-observability.js.map +1 -0
  793. package/sdk/dist/query/query-dispatch-plan.d.ts +6 -0
  794. package/sdk/dist/query/query-dispatch-plan.d.ts.map +1 -0
  795. package/sdk/dist/query/query-dispatch-plan.js +6 -0
  796. package/sdk/dist/query/query-dispatch-plan.js.map +1 -0
  797. package/sdk/dist/query/query-dispatch-result-builder.d.ts +6 -0
  798. package/sdk/dist/query/query-dispatch-result-builder.d.ts.map +1 -0
  799. package/sdk/dist/query/query-dispatch-result-builder.js +6 -0
  800. package/sdk/dist/query/query-dispatch-result-builder.js.map +1 -0
  801. package/sdk/dist/query/query-dispatch.d.ts +48 -0
  802. package/sdk/dist/query/query-dispatch.d.ts.map +1 -0
  803. package/sdk/dist/query/query-dispatch.js +175 -0
  804. package/sdk/dist/query/query-dispatch.js.map +1 -0
  805. package/sdk/dist/query/query-error-details-schema.d.ts +19 -0
  806. package/sdk/dist/query/query-error-details-schema.d.ts.map +1 -0
  807. package/sdk/dist/query/query-error-details-schema.js +10 -0
  808. package/sdk/dist/query/query-error-details-schema.js.map +1 -0
  809. package/sdk/dist/query/query-error-taxonomy.d.ts +38 -0
  810. package/sdk/dist/query/query-error-taxonomy.d.ts.map +1 -0
  811. package/sdk/dist/query/query-error-taxonomy.js +74 -0
  812. package/sdk/dist/query/query-error-taxonomy.js.map +1 -0
  813. package/sdk/dist/query/query-fallback-bridge-adapter.d.ts +14 -0
  814. package/sdk/dist/query/query-fallback-bridge-adapter.d.ts.map +1 -0
  815. package/sdk/dist/query/query-fallback-bridge-adapter.js +33 -0
  816. package/sdk/dist/query/query-fallback-bridge-adapter.js.map +1 -0
  817. package/sdk/dist/query/query-fallback-executor.d.ts +11 -0
  818. package/sdk/dist/query/query-fallback-executor.d.ts.map +1 -0
  819. package/sdk/dist/query/query-fallback-executor.js +31 -0
  820. package/sdk/dist/query/query-fallback-executor.js.map +1 -0
  821. package/sdk/dist/query/query-fallback-output-classifier.d.ts +6 -0
  822. package/sdk/dist/query/query-fallback-output-classifier.d.ts.map +1 -0
  823. package/sdk/dist/query/query-fallback-output-classifier.js +27 -0
  824. package/sdk/dist/query/query-fallback-output-classifier.js.map +1 -0
  825. package/sdk/dist/query/query-fallback-policy.d.ts +6 -0
  826. package/sdk/dist/query/query-fallback-policy.d.ts.map +1 -0
  827. package/sdk/dist/query/query-fallback-policy.js +7 -0
  828. package/sdk/dist/query/query-fallback-policy.js.map +1 -0
  829. package/sdk/dist/query/query-native-dispatch-adapter.d.ts +7 -0
  830. package/sdk/dist/query/query-native-dispatch-adapter.d.ts.map +1 -0
  831. package/sdk/dist/query/query-native-dispatch-adapter.js +6 -0
  832. package/sdk/dist/query/query-native-dispatch-adapter.js.map +1 -0
  833. package/sdk/dist/query/query-policy-capability.d.ts +10 -0
  834. package/sdk/dist/query/query-policy-capability.d.ts.map +1 -0
  835. package/sdk/dist/query/query-policy-capability.js +17 -0
  836. package/sdk/dist/query/query-policy-capability.js.map +1 -0
  837. package/sdk/dist/query/query-runtime-context.d.ts +19 -0
  838. package/sdk/dist/query/query-runtime-context.d.ts.map +1 -0
  839. package/sdk/dist/query/query-runtime-context.js +31 -0
  840. package/sdk/dist/query/query-runtime-context.js.map +1 -0
  841. package/sdk/dist/query/query-unknown-command-hints.d.ts +2 -0
  842. package/sdk/dist/query/query-unknown-command-hints.d.ts.map +1 -0
  843. package/sdk/dist/query/query-unknown-command-hints.js +6 -0
  844. package/sdk/dist/query/query-unknown-command-hints.js.map +1 -0
  845. package/sdk/dist/query/registry-assembly-descriptor.d.ts +12 -0
  846. package/sdk/dist/query/registry-assembly-descriptor.d.ts.map +1 -0
  847. package/sdk/dist/query/registry-assembly-descriptor.js +61 -0
  848. package/sdk/dist/query/registry-assembly-descriptor.js.map +1 -0
  849. package/sdk/dist/query/registry-assembly-invariants.d.ts +30 -0
  850. package/sdk/dist/query/registry-assembly-invariants.d.ts.map +1 -0
  851. package/sdk/dist/query/registry-assembly-invariants.js +77 -0
  852. package/sdk/dist/query/registry-assembly-invariants.js.map +1 -0
  853. package/sdk/dist/query/registry-assembly.d.ts +10 -0
  854. package/sdk/dist/query/registry-assembly.d.ts.map +1 -0
  855. package/sdk/dist/query/registry-assembly.js +53 -0
  856. package/sdk/dist/query/registry-assembly.js.map +1 -0
  857. package/sdk/dist/query/registry.d.ts +90 -0
  858. package/sdk/dist/query/registry.d.ts.map +1 -0
  859. package/sdk/dist/query/registry.js +129 -0
  860. package/sdk/dist/query/registry.js.map +1 -0
  861. package/sdk/dist/query/requirements-extract-from-plans.d.ts +9 -0
  862. package/sdk/dist/query/requirements-extract-from-plans.d.ts.map +1 -0
  863. package/sdk/dist/query/requirements-extract-from-plans.js +76 -0
  864. package/sdk/dist/query/requirements-extract-from-plans.js.map +1 -0
  865. package/sdk/dist/query/roadmap-update-plan-progress.d.ts +11 -0
  866. package/sdk/dist/query/roadmap-update-plan-progress.d.ts.map +1 -0
  867. package/sdk/dist/query/roadmap-update-plan-progress.js +124 -0
  868. package/sdk/dist/query/roadmap-update-plan-progress.js.map +1 -0
  869. package/sdk/dist/query/roadmap.d.ts +137 -0
  870. package/sdk/dist/query/roadmap.d.ts.map +1 -0
  871. package/sdk/dist/query/roadmap.js +753 -0
  872. package/sdk/dist/query/roadmap.js.map +1 -0
  873. package/sdk/dist/query/route-next-action.d.ts +9 -0
  874. package/sdk/dist/query/route-next-action.d.ts.map +1 -0
  875. package/sdk/dist/query/route-next-action.js +318 -0
  876. package/sdk/dist/query/route-next-action.js.map +1 -0
  877. package/sdk/dist/query/schema-detect.d.ts +21 -0
  878. package/sdk/dist/query/schema-detect.d.ts.map +1 -0
  879. package/sdk/dist/query/schema-detect.js +146 -0
  880. package/sdk/dist/query/schema-detect.js.map +1 -0
  881. package/sdk/dist/query/secrets.d.ts +27 -0
  882. package/sdk/dist/query/secrets.d.ts.map +1 -0
  883. package/sdk/dist/query/secrets.js +42 -0
  884. package/sdk/dist/query/secrets.js.map +1 -0
  885. package/sdk/dist/query/skill-manifest.d.ts +50 -0
  886. package/sdk/dist/query/skill-manifest.d.ts.map +1 -0
  887. package/sdk/dist/query/skill-manifest.js +171 -0
  888. package/sdk/dist/query/skill-manifest.js.map +1 -0
  889. package/sdk/dist/query/skills.d.ts +27 -0
  890. package/sdk/dist/query/skills.d.ts.map +1 -0
  891. package/sdk/dist/query/skills.js +137 -0
  892. package/sdk/dist/query/skills.js.map +1 -0
  893. package/sdk/dist/query/state-document.d.ts +14 -0
  894. package/sdk/dist/query/state-document.d.ts.map +1 -0
  895. package/sdk/dist/query/state-document.js +110 -0
  896. package/sdk/dist/query/state-document.js.map +1 -0
  897. package/sdk/dist/query/state-mutation.d.ts +224 -0
  898. package/sdk/dist/query/state-mutation.d.ts.map +1 -0
  899. package/sdk/dist/query/state-mutation.js +1539 -0
  900. package/sdk/dist/query/state-mutation.js.map +1 -0
  901. package/sdk/dist/query/state-project-load.d.ts +23 -0
  902. package/sdk/dist/query/state-project-load.d.ts.map +1 -0
  903. package/sdk/dist/query/state-project-load.js +75 -0
  904. package/sdk/dist/query/state-project-load.js.map +1 -0
  905. package/sdk/dist/query/state.d.ts +78 -0
  906. package/sdk/dist/query/state.d.ts.map +1 -0
  907. package/sdk/dist/query/state.js +430 -0
  908. package/sdk/dist/query/state.js.map +1 -0
  909. package/sdk/dist/query/summary.d.ts +18 -0
  910. package/sdk/dist/query/summary.d.ts.map +1 -0
  911. package/sdk/dist/query/summary.js +249 -0
  912. package/sdk/dist/query/summary.js.map +1 -0
  913. package/sdk/dist/query/template.d.ts +46 -0
  914. package/sdk/dist/query/template.d.ts.map +1 -0
  915. package/sdk/dist/query/template.js +210 -0
  916. package/sdk/dist/query/template.js.map +1 -0
  917. package/sdk/dist/query/uat.d.ts +34 -0
  918. package/sdk/dist/query/uat.d.ts.map +1 -0
  919. package/sdk/dist/query/uat.js +339 -0
  920. package/sdk/dist/query/uat.js.map +1 -0
  921. package/sdk/dist/query/utils.d.ts +59 -0
  922. package/sdk/dist/query/utils.d.ts.map +1 -0
  923. package/sdk/dist/query/utils.js +74 -0
  924. package/sdk/dist/query/utils.js.map +1 -0
  925. package/sdk/dist/query/validate.d.ts +67 -0
  926. package/sdk/dist/query/validate.d.ts.map +1 -0
  927. package/sdk/dist/query/validate.js +908 -0
  928. package/sdk/dist/query/validate.js.map +1 -0
  929. package/sdk/dist/query/verify.d.ts +110 -0
  930. package/sdk/dist/query/verify.d.ts.map +1 -0
  931. package/sdk/dist/query/verify.js +631 -0
  932. package/sdk/dist/query/verify.js.map +1 -0
  933. package/sdk/dist/query/websearch.d.ts +24 -0
  934. package/sdk/dist/query/websearch.d.ts.map +1 -0
  935. package/sdk/dist/query/websearch.js +68 -0
  936. package/sdk/dist/query/websearch.js.map +1 -0
  937. package/sdk/dist/query/workspace.d.ts +62 -0
  938. package/sdk/dist/query/workspace.d.ts.map +1 -0
  939. package/sdk/dist/query/workspace.js +104 -0
  940. package/sdk/dist/query/workspace.js.map +1 -0
  941. package/sdk/dist/query/workstream-inventory.d.ts +52 -0
  942. package/sdk/dist/query/workstream-inventory.d.ts.map +1 -0
  943. package/sdk/dist/query/workstream-inventory.js +141 -0
  944. package/sdk/dist/query/workstream-inventory.js.map +1 -0
  945. package/sdk/dist/query/workstream.d.ts +35 -0
  946. package/sdk/dist/query/workstream.d.ts.map +1 -0
  947. package/sdk/dist/query/workstream.js +298 -0
  948. package/sdk/dist/query/workstream.js.map +1 -0
  949. package/sdk/dist/query/worktree.d.ts +3 -0
  950. package/sdk/dist/query/worktree.d.ts.map +1 -0
  951. package/sdk/dist/query/worktree.js +36 -0
  952. package/sdk/dist/query/worktree.js.map +1 -0
  953. package/sdk/dist/query-command-executor.d.ts +22 -0
  954. package/sdk/dist/query-command-executor.d.ts.map +1 -0
  955. package/sdk/dist/query-command-executor.js +22 -0
  956. package/sdk/dist/query-command-executor.js.map +1 -0
  957. package/sdk/dist/query-execution-policy.d.ts +24 -0
  958. package/sdk/dist/query-execution-policy.d.ts.map +1 -0
  959. package/sdk/dist/query-execution-policy.js +27 -0
  960. package/sdk/dist/query-execution-policy.js.map +1 -0
  961. package/sdk/dist/query-failure-classification.d.ts +9 -0
  962. package/sdk/dist/query-failure-classification.d.ts.map +1 -0
  963. package/sdk/dist/query-failure-classification.js +32 -0
  964. package/sdk/dist/query-failure-classification.js.map +1 -0
  965. package/sdk/dist/query-hotpath-methods.d.ts +19 -0
  966. package/sdk/dist/query-hotpath-methods.d.ts.map +1 -0
  967. package/sdk/dist/query-hotpath-methods.js +34 -0
  968. package/sdk/dist/query-hotpath-methods.js.map +1 -0
  969. package/sdk/dist/query-native-direct-adapter.d.ts +20 -0
  970. package/sdk/dist/query-native-direct-adapter.d.ts.map +1 -0
  971. package/sdk/dist/query-native-direct-adapter.js +52 -0
  972. package/sdk/dist/query-native-direct-adapter.js.map +1 -0
  973. package/sdk/dist/query-native-hotpath-adapter.d.ts +15 -0
  974. package/sdk/dist/query-native-hotpath-adapter.d.ts.map +1 -0
  975. package/sdk/dist/query-native-hotpath-adapter.js +32 -0
  976. package/sdk/dist/query-native-hotpath-adapter.js.map +1 -0
  977. package/sdk/dist/query-raw-output-projection.d.ts +6 -0
  978. package/sdk/dist/query-raw-output-projection.d.ts.map +1 -0
  979. package/sdk/dist/query-raw-output-projection.js +67 -0
  980. package/sdk/dist/query-raw-output-projection.js.map +1 -0
  981. package/sdk/dist/query-runtime-bridge.d.ts +61 -0
  982. package/sdk/dist/query-runtime-bridge.d.ts.map +1 -0
  983. package/sdk/dist/query-runtime-bridge.js +144 -0
  984. package/sdk/dist/query-runtime-bridge.js.map +1 -0
  985. package/sdk/dist/query-sdd-tools-path.d.ts +2 -0
  986. package/sdk/dist/query-sdd-tools-path.d.ts.map +1 -0
  987. package/sdk/dist/query-sdd-tools-path.js +2 -0
  988. package/sdk/dist/query-sdd-tools-path.js.map +1 -0
  989. package/sdk/dist/query-sdd-tools-runtime.d.ts +20 -0
  990. package/sdk/dist/query-sdd-tools-runtime.d.ts.map +1 -0
  991. package/sdk/dist/query-sdd-tools-runtime.js +47 -0
  992. package/sdk/dist/query-sdd-tools-runtime.js.map +1 -0
  993. package/sdk/dist/query-subprocess-adapter.d.ts +18 -0
  994. package/sdk/dist/query-subprocess-adapter.d.ts.map +1 -0
  995. package/sdk/dist/query-subprocess-adapter.js +92 -0
  996. package/sdk/dist/query-subprocess-adapter.js.map +1 -0
  997. package/sdk/dist/query-tools-error-factory.d.ts +16 -0
  998. package/sdk/dist/query-tools-error-factory.d.ts.map +1 -0
  999. package/sdk/dist/query-tools-error-factory.js +33 -0
  1000. package/sdk/dist/query-tools-error-factory.js.map +1 -0
  1001. package/sdk/dist/research-gate.d.ts +24 -0
  1002. package/sdk/dist/research-gate.d.ts.map +1 -0
  1003. package/sdk/dist/research-gate.js +70 -0
  1004. package/sdk/dist/research-gate.js.map +1 -0
  1005. package/sdk/dist/runtime-gate.d.ts +14 -0
  1006. package/sdk/dist/runtime-gate.d.ts.map +1 -0
  1007. package/sdk/dist/runtime-gate.js +48 -0
  1008. package/sdk/dist/runtime-gate.js.map +1 -0
  1009. package/sdk/dist/sdd-tools-error.d.ts +23 -0
  1010. package/sdk/dist/sdd-tools-error.d.ts.map +1 -0
  1011. package/sdk/dist/sdd-tools-error.js +29 -0
  1012. package/sdk/dist/sdd-tools-error.js.map +1 -0
  1013. package/sdk/dist/sdd-tools.d.ts +97 -0
  1014. package/sdk/dist/sdd-tools.d.ts.map +1 -0
  1015. package/sdk/dist/sdd-tools.js +168 -0
  1016. package/sdk/dist/sdd-tools.js.map +1 -0
  1017. package/sdk/dist/sdd-transport-policy.d.ts +10 -0
  1018. package/sdk/dist/sdd-transport-policy.d.ts.map +1 -0
  1019. package/sdk/dist/sdd-transport-policy.js +32 -0
  1020. package/sdk/dist/sdd-transport-policy.js.map +1 -0
  1021. package/sdk/dist/sdd-transport.d.ts +39 -0
  1022. package/sdk/dist/sdd-transport.d.ts.map +1 -0
  1023. package/sdk/dist/sdd-transport.js +78 -0
  1024. package/sdk/dist/sdd-transport.js.map +1 -0
  1025. package/sdk/dist/sdk-package-compatibility.d.ts +38 -0
  1026. package/sdk/dist/sdk-package-compatibility.d.ts.map +1 -0
  1027. package/sdk/dist/sdk-package-compatibility.js +90 -0
  1028. package/sdk/dist/sdk-package-compatibility.js.map +1 -0
  1029. package/sdk/dist/session-runner.d.ts +40 -0
  1030. package/sdk/dist/session-runner.d.ts.map +1 -0
  1031. package/sdk/dist/session-runner.js +274 -0
  1032. package/sdk/dist/session-runner.js.map +1 -0
  1033. package/sdk/dist/tool-scoping.d.ts +31 -0
  1034. package/sdk/dist/tool-scoping.d.ts.map +1 -0
  1035. package/sdk/dist/tool-scoping.js +54 -0
  1036. package/sdk/dist/tool-scoping.js.map +1 -0
  1037. package/sdk/dist/types.d.ts +794 -0
  1038. package/sdk/dist/types.d.ts.map +1 -0
  1039. package/sdk/dist/types.js +77 -0
  1040. package/sdk/dist/types.js.map +1 -0
  1041. package/sdk/dist/workstream-name-policy.d.ts +13 -0
  1042. package/sdk/dist/workstream-name-policy.d.ts.map +1 -0
  1043. package/sdk/dist/workstream-name-policy.js +24 -0
  1044. package/sdk/dist/workstream-name-policy.js.map +1 -0
  1045. package/sdk/dist/workstream-utils.d.ts +15 -0
  1046. package/sdk/dist/workstream-utils.d.ts.map +1 -0
  1047. package/sdk/dist/workstream-utils.js +21 -0
  1048. package/sdk/dist/workstream-utils.js.map +1 -0
  1049. package/sdk/dist/ws-transport.d.ts +32 -0
  1050. package/sdk/dist/ws-transport.d.ts.map +1 -0
  1051. package/sdk/dist/ws-transport.js +84 -0
  1052. package/sdk/dist/ws-transport.js.map +1 -0
  1053. package/sdk/package-lock.json +2502 -0
  1054. package/sdk/package.json +57 -0
  1055. package/sdk/prompts/templates/project.md +186 -0
  1056. package/sdk/prompts/templates/requirements.md +231 -0
  1057. package/sdk/prompts/templates/research-project/ARCHITECTURE.md +204 -0
  1058. package/sdk/prompts/templates/research-project/FEATURES.md +147 -0
  1059. package/sdk/prompts/templates/research-project/PITFALLS.md +200 -0
  1060. package/sdk/prompts/templates/research-project/STACK.md +120 -0
  1061. package/sdk/prompts/templates/research-project/SUMMARY.md +170 -0
  1062. package/sdk/prompts/templates/roadmap.md +202 -0
  1063. package/sdk/prompts/templates/state.md +175 -0
  1064. package/sdk/shared/model-catalog.json +122 -0
  1065. package/sdk/src/assembled-prompts.test.ts +349 -0
  1066. package/sdk/src/bug-3591-sddtools-runtime-workstream.test.ts +179 -0
  1067. package/sdk/src/cli-transport.test.ts +388 -0
  1068. package/sdk/src/cli-transport.ts +130 -0
  1069. package/sdk/src/cli.test.ts +426 -0
  1070. package/sdk/src/cli.ts +589 -0
  1071. package/sdk/src/config.test.ts +271 -0
  1072. package/sdk/src/config.ts +218 -0
  1073. package/sdk/src/context-engine.test.ts +295 -0
  1074. package/sdk/src/context-engine.ts +170 -0
  1075. package/sdk/src/context-truncation.test.ts +163 -0
  1076. package/sdk/src/context-truncation.ts +233 -0
  1077. package/sdk/src/e2e.integration.test.ts +181 -0
  1078. package/sdk/src/errors.ts +72 -0
  1079. package/sdk/src/event-stream.test.ts +661 -0
  1080. package/sdk/src/event-stream.ts +441 -0
  1081. package/sdk/src/golden/capture.ts +95 -0
  1082. package/sdk/src/golden/fixtures/generate-slug.golden.json +1 -0
  1083. package/sdk/src/golden/fixtures/profile-sample-sessions/demo-project/sample.jsonl +3 -0
  1084. package/sdk/src/golden/fixtures/summary-extract-sample.md +26 -0
  1085. package/sdk/src/golden/fixtures/uat-render-checkpoint-sample.md +15 -0
  1086. package/sdk/src/golden/golden-integration-covered.ts +30 -0
  1087. package/sdk/src/golden/golden-mutation-covered.ts +17 -0
  1088. package/sdk/src/golden/golden-policy.test.ts +8 -0
  1089. package/sdk/src/golden/golden-policy.ts +120 -0
  1090. package/sdk/src/golden/golden.integration.test.ts +677 -0
  1091. package/sdk/src/golden/init-golden-normalize.ts +15 -0
  1092. package/sdk/src/golden/read-only-golden-rows.ts +77 -0
  1093. package/sdk/src/golden/read-only-parity.integration.test.ts +133 -0
  1094. package/sdk/src/golden/registry-canonical-commands.ts +31 -0
  1095. package/sdk/src/index.ts +352 -0
  1096. package/sdk/src/init-e2e.integration.test.ts +138 -0
  1097. package/sdk/src/init-runner.test.ts +740 -0
  1098. package/sdk/src/init-runner.ts +734 -0
  1099. package/sdk/src/lifecycle-e2e.integration.test.ts +258 -0
  1100. package/sdk/src/logger.test.ts +149 -0
  1101. package/sdk/src/logger.ts +113 -0
  1102. package/sdk/src/milestone-runner.test.ts +421 -0
  1103. package/sdk/src/model-catalog.ts +70 -0
  1104. package/sdk/src/phase-prompt.test.ts +535 -0
  1105. package/sdk/src/phase-prompt.ts +259 -0
  1106. package/sdk/src/phase-runner-types.test.ts +421 -0
  1107. package/sdk/src/phase-runner.integration.test.ts +377 -0
  1108. package/sdk/src/phase-runner.test.ts +2720 -0
  1109. package/sdk/src/phase-runner.ts +1442 -0
  1110. package/sdk/src/plan-parser.test.ts +579 -0
  1111. package/sdk/src/plan-parser.ts +431 -0
  1112. package/sdk/src/planning-journal.test.ts +70 -0
  1113. package/sdk/src/planning-journal.ts +153 -0
  1114. package/sdk/src/planning-runtime.test.ts +29 -0
  1115. package/sdk/src/planning-runtime.ts +100 -0
  1116. package/sdk/src/prompt-builder.test.ts +318 -0
  1117. package/sdk/src/prompt-builder.ts +218 -0
  1118. package/sdk/src/prompt-sanitizer.test.ts +260 -0
  1119. package/sdk/src/prompt-sanitizer.ts +116 -0
  1120. package/sdk/src/query/QUERY-HANDLERS.md +349 -0
  1121. package/sdk/src/query/active-workstream-store.ts +50 -0
  1122. package/sdk/src/query/agent-failure-classifier.test.ts +157 -0
  1123. package/sdk/src/query/agent-failure-classifier.ts +105 -0
  1124. package/sdk/src/query/audit-open.ts +722 -0
  1125. package/sdk/src/query/check-auto-mode.test.ts +77 -0
  1126. package/sdk/src/query/check-auto-mode.ts +49 -0
  1127. package/sdk/src/query/check-completion.test.ts +113 -0
  1128. package/sdk/src/query/check-completion.ts +182 -0
  1129. package/sdk/src/query/check-decision-coverage.test.ts +519 -0
  1130. package/sdk/src/query/check-decision-coverage.ts +554 -0
  1131. package/sdk/src/query/check-gates.test.ts +103 -0
  1132. package/sdk/src/query/check-gates.ts +112 -0
  1133. package/sdk/src/query/check-ship-ready.test.ts +111 -0
  1134. package/sdk/src/query/check-ship-ready.ts +104 -0
  1135. package/sdk/src/query/check-verification-status.test.ts +143 -0
  1136. package/sdk/src/query/check-verification-status.ts +160 -0
  1137. package/sdk/src/query/command-aliases.generated.ts +156 -0
  1138. package/sdk/src/query/command-catalog.ts +31 -0
  1139. package/sdk/src/query/command-definition.test.ts +47 -0
  1140. package/sdk/src/query/command-definition.ts +70 -0
  1141. package/sdk/src/query/command-family-handlers.ts +117 -0
  1142. package/sdk/src/query/command-manifest.init.ts +24 -0
  1143. package/sdk/src/query/command-manifest.non-family.ts +85 -0
  1144. package/sdk/src/query/command-manifest.phase.ts +16 -0
  1145. package/sdk/src/query/command-manifest.phases.ts +11 -0
  1146. package/sdk/src/query/command-manifest.roadmap.ts +11 -0
  1147. package/sdk/src/query/command-manifest.state.ts +31 -0
  1148. package/sdk/src/query/command-manifest.ts +17 -0
  1149. package/sdk/src/query/command-manifest.types.ts +13 -0
  1150. package/sdk/src/query/command-manifest.validate.ts +11 -0
  1151. package/sdk/src/query/command-manifest.verify.ts +15 -0
  1152. package/sdk/src/query/command-resolution.test.ts +70 -0
  1153. package/sdk/src/query/command-seam-coverage.test.ts +118 -0
  1154. package/sdk/src/query/command-static-catalog-domain.ts +117 -0
  1155. package/sdk/src/query/command-static-catalog-foundation.ts +103 -0
  1156. package/sdk/src/query/command-topology.test.ts +28 -0
  1157. package/sdk/src/query/command-topology.ts +114 -0
  1158. package/sdk/src/query/commands-list.test.ts +36 -0
  1159. package/sdk/src/query/commands-list.ts +19 -0
  1160. package/sdk/src/query/commit.test.ts +485 -0
  1161. package/sdk/src/query/commit.ts +383 -0
  1162. package/sdk/src/query/config-gates.test.ts +89 -0
  1163. package/sdk/src/query/config-gates.ts +69 -0
  1164. package/sdk/src/query/config-mutation.test.ts +598 -0
  1165. package/sdk/src/query/config-mutation.ts +575 -0
  1166. package/sdk/src/query/config-query.test.ts +367 -0
  1167. package/sdk/src/query/config-query.ts +244 -0
  1168. package/sdk/src/query/config-schema.ts +159 -0
  1169. package/sdk/src/query/decisions.test.ts +215 -0
  1170. package/sdk/src/query/decisions.ts +192 -0
  1171. package/sdk/src/query/decomposed-handlers.test.ts +431 -0
  1172. package/sdk/src/query/detect-custom-files.test.ts +115 -0
  1173. package/sdk/src/query/detect-custom-files.ts +96 -0
  1174. package/sdk/src/query/detect-phase-type.test.ts +105 -0
  1175. package/sdk/src/query/detect-phase-type.ts +141 -0
  1176. package/sdk/src/query/docs-init.ts +258 -0
  1177. package/sdk/src/query/fallow-audit.ts +88 -0
  1178. package/sdk/src/query/frontmatter-array.test.ts +14 -0
  1179. package/sdk/src/query/frontmatter-mutation.test.ts +259 -0
  1180. package/sdk/src/query/frontmatter-mutation.ts +343 -0
  1181. package/sdk/src/query/frontmatter.test.ts +326 -0
  1182. package/sdk/src/query/frontmatter.ts +395 -0
  1183. package/sdk/src/query/helpers.test.ts +615 -0
  1184. package/sdk/src/query/helpers.ts +646 -0
  1185. package/sdk/src/query/index-thin-seam.test.ts +16 -0
  1186. package/sdk/src/query/index.ts +9 -0
  1187. package/sdk/src/query/init-complex.test.ts +616 -0
  1188. package/sdk/src/query/init-complex.ts +799 -0
  1189. package/sdk/src/query/init-progress-precedence.test.ts +177 -0
  1190. package/sdk/src/query/init-workstream-milestone-op.test.ts +321 -0
  1191. package/sdk/src/query/init.test.ts +792 -0
  1192. package/sdk/src/query/init.ts +1262 -0
  1193. package/sdk/src/query/intel.test.ts +90 -0
  1194. package/sdk/src/query/intel.ts +404 -0
  1195. package/sdk/src/query/mutation-event-decorator.test.ts +45 -0
  1196. package/sdk/src/query/mutation-event-decorator.ts +37 -0
  1197. package/sdk/src/query/mutation-event-mapper.test.ts +33 -0
  1198. package/sdk/src/query/mutation-event-mapper.ts +102 -0
  1199. package/sdk/src/query/mvp.test.ts +335 -0
  1200. package/sdk/src/query/mvp.ts +292 -0
  1201. package/sdk/src/query/normalize-query-command.test.ts +102 -0
  1202. package/sdk/src/query/phase-filesystem-adapter.ts +35 -0
  1203. package/sdk/src/query/phase-lifecycle-policy.ts +171 -0
  1204. package/sdk/src/query/phase-lifecycle.test.ts +1750 -0
  1205. package/sdk/src/query/phase-lifecycle.ts +1833 -0
  1206. package/sdk/src/query/phase-list-queries.test.ts +88 -0
  1207. package/sdk/src/query/phase-list-queries.ts +152 -0
  1208. package/sdk/src/query/phase-ready.test.ts +65 -0
  1209. package/sdk/src/query/phase-ready.ts +159 -0
  1210. package/sdk/src/query/phase-roadmap-mutation.ts +77 -0
  1211. package/sdk/src/query/phase.test.ts +651 -0
  1212. package/sdk/src/query/phase.ts +550 -0
  1213. package/sdk/src/query/pipeline.test.ts +169 -0
  1214. package/sdk/src/query/pipeline.ts +243 -0
  1215. package/sdk/src/query/plan-scan.test.ts +35 -0
  1216. package/sdk/src/query/plan-scan.ts +82 -0
  1217. package/sdk/src/query/plan-task-structure.test.ts +65 -0
  1218. package/sdk/src/query/plan-task-structure.ts +63 -0
  1219. package/sdk/src/query/policy-convergence.test.ts +28 -0
  1220. package/sdk/src/query/profile-extract-messages.ts +247 -0
  1221. package/sdk/src/query/profile-output.ts +929 -0
  1222. package/sdk/src/query/profile-questionnaire-data.ts +181 -0
  1223. package/sdk/src/query/profile-sample.ts +184 -0
  1224. package/sdk/src/query/profile-scan-sessions.ts +174 -0
  1225. package/sdk/src/query/profile.test.ts +136 -0
  1226. package/sdk/src/query/profile.ts +337 -0
  1227. package/sdk/src/query/progress.test.ts +156 -0
  1228. package/sdk/src/query/progress.ts +566 -0
  1229. package/sdk/src/query/query-cli-adapter.test.ts +79 -0
  1230. package/sdk/src/query/query-cli-adapter.ts +39 -0
  1231. package/sdk/src/query/query-cli-output.test.ts +33 -0
  1232. package/sdk/src/query/query-cli-output.ts +35 -0
  1233. package/sdk/src/query/query-command-diagnosis.test.ts +22 -0
  1234. package/sdk/src/query/query-command-diagnosis.ts +5 -0
  1235. package/sdk/src/query/query-command-resolution-strategy.test.ts +34 -0
  1236. package/sdk/src/query/query-command-resolution-strategy.ts +121 -0
  1237. package/sdk/src/query/query-command-semantics.test.ts +22 -0
  1238. package/sdk/src/query/query-command-semantics.ts +22 -0
  1239. package/sdk/src/query/query-dispatch-contract.ts +30 -0
  1240. package/sdk/src/query/query-dispatch-error-mapper.test.ts +62 -0
  1241. package/sdk/src/query/query-dispatch-error-mapper.ts +5 -0
  1242. package/sdk/src/query/query-dispatch-formatting.test.ts +28 -0
  1243. package/sdk/src/query/query-dispatch-formatting.ts +5 -0
  1244. package/sdk/src/query/query-dispatch-input-validation.test.ts +23 -0
  1245. package/sdk/src/query/query-dispatch-input-validation.ts +5 -0
  1246. package/sdk/src/query/query-dispatch-observability.test.ts +10 -0
  1247. package/sdk/src/query/query-dispatch-observability.ts +6 -0
  1248. package/sdk/src/query/query-dispatch-plan.test.ts +25 -0
  1249. package/sdk/src/query/query-dispatch-plan.ts +5 -0
  1250. package/sdk/src/query/query-dispatch-result-builder.test.ts +16 -0
  1251. package/sdk/src/query/query-dispatch-result-builder.ts +5 -0
  1252. package/sdk/src/query/query-dispatch.test.ts +399 -0
  1253. package/sdk/src/query/query-dispatch.ts +243 -0
  1254. package/sdk/src/query/query-error-details-schema.ts +29 -0
  1255. package/sdk/src/query/query-error-taxonomy.test.ts +39 -0
  1256. package/sdk/src/query/query-error-taxonomy.ts +117 -0
  1257. package/sdk/src/query/query-fallback-bridge-adapter.test.ts +32 -0
  1258. package/sdk/src/query/query-fallback-bridge-adapter.ts +54 -0
  1259. package/sdk/src/query/query-fallback-executor.test.ts +82 -0
  1260. package/sdk/src/query/query-fallback-executor.ts +44 -0
  1261. package/sdk/src/query/query-fallback-output-classifier.test.ts +36 -0
  1262. package/sdk/src/query/query-fallback-output-classifier.ts +31 -0
  1263. package/sdk/src/query/query-fallback-policy.test.ts +13 -0
  1264. package/sdk/src/query/query-fallback-policy.ts +11 -0
  1265. package/sdk/src/query/query-native-dispatch-adapter.ts +16 -0
  1266. package/sdk/src/query/query-policy-capability.test.ts +10 -0
  1267. package/sdk/src/query/query-policy-capability.ts +26 -0
  1268. package/sdk/src/query/query-policy-snapshot.test.ts +9 -0
  1269. package/sdk/src/query/query-registry-capability.test.ts +14 -0
  1270. package/sdk/src/query/query-runtime-context.ts +44 -0
  1271. package/sdk/src/query/query-unknown-command-hints.test.ts +9 -0
  1272. package/sdk/src/query/query-unknown-command-hints.ts +5 -0
  1273. package/sdk/src/query/registry-assembly-descriptor.ts +87 -0
  1274. package/sdk/src/query/registry-assembly-invariants.ts +127 -0
  1275. package/sdk/src/query/registry-assembly.test.ts +138 -0
  1276. package/sdk/src/query/registry-assembly.ts +78 -0
  1277. package/sdk/src/query/registry.test.ts +208 -0
  1278. package/sdk/src/query/registry.ts +142 -0
  1279. package/sdk/src/query/requirements-extract-from-plans.test.ts +58 -0
  1280. package/sdk/src/query/requirements-extract-from-plans.ts +86 -0
  1281. package/sdk/src/query/roadmap-update-plan-progress.test.ts +233 -0
  1282. package/sdk/src/query/roadmap-update-plan-progress.ts +159 -0
  1283. package/sdk/src/query/roadmap.test.ts +1181 -0
  1284. package/sdk/src/query/roadmap.ts +894 -0
  1285. package/sdk/src/query/route-next-action.test.ts +61 -0
  1286. package/sdk/src/query/route-next-action.ts +345 -0
  1287. package/sdk/src/query/schema-detect.ts +189 -0
  1288. package/sdk/src/query/secrets.test.ts +66 -0
  1289. package/sdk/src/query/secrets.ts +43 -0
  1290. package/sdk/src/query/skill-manifest.test.ts +62 -0
  1291. package/sdk/src/query/skill-manifest.ts +216 -0
  1292. package/sdk/src/query/skills.test.ts +234 -0
  1293. package/sdk/src/query/skills.ts +143 -0
  1294. package/sdk/src/query/state-document.test.ts +197 -0
  1295. package/sdk/src/query/state-document.ts +129 -0
  1296. package/sdk/src/query/state-mutation.test.ts +1198 -0
  1297. package/sdk/src/query/state-mutation.ts +1718 -0
  1298. package/sdk/src/query/state-project-load.ts +80 -0
  1299. package/sdk/src/query/state.test.ts +616 -0
  1300. package/sdk/src/query/state.ts +463 -0
  1301. package/sdk/src/query/sub-repos-root.integration.test.ts +79 -0
  1302. package/sdk/src/query/summary.test.ts +95 -0
  1303. package/sdk/src/query/summary.ts +296 -0
  1304. package/sdk/src/query/template.test.ts +180 -0
  1305. package/sdk/src/query/template.ts +242 -0
  1306. package/sdk/src/query/uat.test.ts +77 -0
  1307. package/sdk/src/query/uat.ts +365 -0
  1308. package/sdk/src/query/utils.test.ts +82 -0
  1309. package/sdk/src/query/utils.ts +106 -0
  1310. package/sdk/src/query/validate.test.ts +831 -0
  1311. package/sdk/src/query/validate.ts +952 -0
  1312. package/sdk/src/query/verify.test.ts +414 -0
  1313. package/sdk/src/query/verify.ts +692 -0
  1314. package/sdk/src/query/websearch.test.ts +31 -0
  1315. package/sdk/src/query/websearch.ts +82 -0
  1316. package/sdk/src/query/workspace.test.ts +120 -0
  1317. package/sdk/src/query/workspace.ts +145 -0
  1318. package/sdk/src/query/workstream-inventory.ts +195 -0
  1319. package/sdk/src/query/workstream.test.ts +153 -0
  1320. package/sdk/src/query/workstream.ts +324 -0
  1321. package/sdk/src/query/worktree.ts +39 -0
  1322. package/sdk/src/query-command-executor.ts +31 -0
  1323. package/sdk/src/query-execution-policy.test.ts +52 -0
  1324. package/sdk/src/query-execution-policy.ts +46 -0
  1325. package/sdk/src/query-failure-classification.test.ts +23 -0
  1326. package/sdk/src/query-failure-classification.ts +42 -0
  1327. package/sdk/src/query-hotpath-methods.ts +48 -0
  1328. package/sdk/src/query-native-direct-adapter.test.ts +35 -0
  1329. package/sdk/src/query-native-direct-adapter.ts +70 -0
  1330. package/sdk/src/query-native-hotpath-adapter.test.ts +43 -0
  1331. package/sdk/src/query-native-hotpath-adapter.ts +45 -0
  1332. package/sdk/src/query-raw-output-projection.test.ts +39 -0
  1333. package/sdk/src/query-raw-output-projection.ts +74 -0
  1334. package/sdk/src/query-runtime-bridge.test.ts +150 -0
  1335. package/sdk/src/query-runtime-bridge.ts +215 -0
  1336. package/sdk/src/query-runtime-seam-coverage.test.ts +20 -0
  1337. package/sdk/src/query-sdd-tools-path.ts +1 -0
  1338. package/sdk/src/query-sdd-tools-runtime.ts +89 -0
  1339. package/sdk/src/query-subprocess-adapter.test.ts +84 -0
  1340. package/sdk/src/query-subprocess-adapter.ts +146 -0
  1341. package/sdk/src/query-tools-error-factory.test.ts +35 -0
  1342. package/sdk/src/query-tools-error-factory.ts +76 -0
  1343. package/sdk/src/research-gate.test.ts +190 -0
  1344. package/sdk/src/research-gate.ts +94 -0
  1345. package/sdk/src/runtime-bridge-options.test.ts +33 -0
  1346. package/sdk/src/runtime-gate.test.ts +84 -0
  1347. package/sdk/src/runtime-gate.ts +52 -0
  1348. package/sdk/src/sdd-tools-error.test.ts +21 -0
  1349. package/sdk/src/sdd-tools-error.ts +65 -0
  1350. package/sdk/src/sdd-tools.test.ts +472 -0
  1351. package/sdk/src/sdd-tools.ts +237 -0
  1352. package/sdk/src/sdd-transport-policy.test.ts +34 -0
  1353. package/sdk/src/sdd-transport-policy.ts +48 -0
  1354. package/sdk/src/sdd-transport.test.ts +292 -0
  1355. package/sdk/src/sdd-transport.ts +117 -0
  1356. package/sdk/src/sdk-package-compatibility.test.ts +97 -0
  1357. package/sdk/src/sdk-package-compatibility.ts +141 -0
  1358. package/sdk/src/session-runner.test.ts +164 -0
  1359. package/sdk/src/session-runner.ts +327 -0
  1360. package/sdk/src/tool-scoping.test.ts +160 -0
  1361. package/sdk/src/tool-scoping.ts +61 -0
  1362. package/sdk/src/types.ts +927 -0
  1363. package/sdk/src/workflow-agent-skills-consistency.test.ts +98 -0
  1364. package/sdk/src/workstream-name-policy.ts +24 -0
  1365. package/sdk/src/workstream-utils.ts +21 -0
  1366. package/sdk/src/ws-flag.test.ts +285 -0
  1367. package/sdk/src/ws-transport.test.ts +161 -0
  1368. package/sdk/src/ws-transport.ts +93 -0
  1369. package/sdk/tsconfig.json +20 -0
  1370. package/commands/sdd/add-backlog.md +0 -76
  1371. package/commands/sdd/add-phase.md +0 -43
  1372. package/commands/sdd/add-todo.md +0 -47
  1373. package/commands/sdd/check-todos.md +0 -45
  1374. package/commands/sdd/do.md +0 -30
  1375. package/commands/sdd/insert-phase.md +0 -32
  1376. package/commands/sdd/join-discord.md +0 -18
  1377. package/commands/sdd/list-phase-assumptions.md +0 -46
  1378. package/commands/sdd/list-workspaces.md +0 -19
  1379. package/commands/sdd/new-workspace.md +0 -44
  1380. package/commands/sdd/next.md +0 -24
  1381. package/commands/sdd/note.md +0 -34
  1382. package/commands/sdd/plan-milestone-gaps.md +0 -34
  1383. package/commands/sdd/plant-seed.md +0 -28
  1384. package/commands/sdd/reapply-patches.md +0 -123
  1385. package/commands/sdd/remove-phase.md +0 -31
  1386. package/commands/sdd/remove-workspace.md +0 -26
  1387. package/commands/sdd/research-phase.md +0 -195
  1388. package/commands/sdd/session-report.md +0 -19
  1389. package/commands/sdd/set-profile.md +0 -12
  1390. package/scripts/sync-upstream.sh +0 -56
  1391. package/sdd/commands/sdd/workstreams.md +0 -63
  1392. package/sdd/workflows/research-phase.md +0 -82
@@ -1,6 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  /**
4
+ * @deprecated The supported programmatic surface is `sdd-sdk query` (SDK query registry)
5
+ * and the `@bhargavvc/sdk` package. This Node CLI remains the compatibility implementation
6
+ * for shell scripts and older workflows; prefer calling the SDK from agents and automation.
7
+ *
4
8
  * SDD Tools — CLI utility for SDD workflow operations
5
9
  *
6
10
  * Replaces repetitive inline bash patterns across ~50 SDD command/workflow/agent files.
@@ -45,6 +49,7 @@
45
49
  * roadmap get-phase <phase> Extract phase section from ROADMAP.md
46
50
  * roadmap analyze Full roadmap parse with disk status
47
51
  * roadmap update-plan-progress <N> Update progress table row from disk (PLAN vs SUMMARY counts)
52
+ * roadmap annotate-dependencies <N> Add wave dependency notes + cross-cutting constraints to ROADMAP.md
48
53
  *
49
54
  * Requirements Operations:
50
55
  * requirements mark-complete <ids> Mark requirement IDs as complete in REQUIREMENTS.md
@@ -70,6 +75,19 @@
70
75
  * audit-uat Scan all phases for unresolved UAT/verification items
71
76
  * uat render-checkpoint --file <path> Render the current UAT checkpoint block
72
77
  *
78
+ * Open Artifact Audit:
79
+ * audit-open [--json] Scan all .planning/ artifact types for unresolved items
80
+ *
81
+ * Intel:
82
+ * intel query <term> Query intel files for a term
83
+ * intel status Show intel file freshness
84
+ * intel update Trigger intel refresh (returns agent spawn hint)
85
+ * intel diff Show changed intel entries since last snapshot
86
+ * intel snapshot Save current intel state as diff baseline
87
+ * intel patch-meta <file> Update _meta.updated_at in an intel file
88
+ * intel validate Validate intel file structure
89
+ * intel extract-exports <file> Extract exported symbols from a source file
90
+ *
73
91
  * Scaffolding:
74
92
  * scaffold context --phase <N> Create CONTEXT.md template
75
93
  * scaffold uat --phase <N> Create UAT.md template
@@ -93,6 +111,8 @@
93
111
  * verify commits <h1> [h2] ... Batch verify commit hashes
94
112
  * verify artifacts <plan-file> Check must_haves.artifacts
95
113
  * verify key-links <plan-file> Check must_haves.key_links
114
+ * verify schema-drift <phase> [--skip] Detect schema file changes without push
115
+ * verify codebase-drift Detect structural drift since last codebase map (#2003)
96
116
  *
97
117
  * Template Fill:
98
118
  * template fill summary --phase N Create pre-filled SUMMARY.md
@@ -133,12 +153,28 @@
133
153
  * init milestone-op All context for milestone operations
134
154
  * init map-codebase All context for map-codebase workflow
135
155
  * init progress All context for progress workflow
156
+ *
157
+ * Documentation:
158
+ * docs-init Project context for docs-update workflow
159
+ *
160
+ * Learnings:
161
+ * learnings list List all global learnings (JSON)
162
+ * learnings query --tag <tag> Query learnings by tag
163
+ * learnings copy Copy from current project's LEARNINGS.md
164
+ * learnings prune --older-than <dur> Remove entries older than duration (e.g. 90d)
165
+ * learnings delete <id> Delete a learning by ID
166
+ *
167
+ * SDD-2 Migration:
168
+ * from-sdd2 [--path <dir>] [--force] [--dry-run]
169
+ * Import a SDD-2 (.sdd/) project back to SDD v1 (.planning/) format
136
170
  */
137
171
 
138
172
  const fs = require('fs');
139
173
  const path = require('path');
140
174
  const core = require('./lib/core.cjs');
141
- const { error, findProjectRoot, getActiveWorkstream } = core;
175
+ const { error, findProjectRoot, ERROR_REASON } = core;
176
+ const { getActiveWorkstream } = require('./lib/planning-workspace.cjs');
177
+ const { resolveActiveWorkstream, applyResolvedWorkstreamEnv } = require('./lib/active-workstream-store.cjs');
142
178
  const state = require('./lib/state.cjs');
143
179
  const phase = require('./lib/phase.cjs');
144
180
  const roadmap = require('./lib/roadmap.cjs');
@@ -152,6 +188,16 @@ const frontmatter = require('./lib/frontmatter.cjs');
152
188
  const profilePipeline = require('./lib/profile-pipeline.cjs');
153
189
  const profileOutput = require('./lib/profile-output.cjs');
154
190
  const workstream = require('./lib/workstream.cjs');
191
+ const docs = require('./lib/docs.cjs');
192
+ const learnings = require('./lib/learnings.cjs');
193
+ const gapChecker = require('./lib/gap-checker.cjs');
194
+ const { routeStateCommand } = require('./lib/state-command-router.cjs');
195
+ const { routeVerifyCommand } = require('./lib/verify-command-router.cjs');
196
+ const { routeInitCommand } = require('./lib/init-command-router.cjs');
197
+ const { routePhaseCommand } = require('./lib/phase-command-router.cjs');
198
+ const { routePhasesCommand } = require('./lib/phases-command-router.cjs');
199
+ const { routeValidateCommand } = require('./lib/validate-command-router.cjs');
200
+ const { routeRoadmapCommand } = require('./lib/roadmap-command-router.cjs');
155
201
 
156
202
  // ─── Arg parsing helpers ──────────────────────────────────────────────────────
157
203
 
@@ -196,7 +242,25 @@ function parseMultiwordArg(args, flag) {
196
242
  // ─── CLI Router ───────────────────────────────────────────────────────────────
197
243
 
198
244
  async function main() {
199
- const args = process.argv.slice(2);
245
+ let args = process.argv.slice(2);
246
+
247
+ // --json-errors / SDD_JSON_ERRORS=1: when active, error() emits structured
248
+ // JSON ({ ok: false, reason: <ERROR_REASON code>, message }) to stderr
249
+ // instead of "Error: <text>". Lets test suites assert on typed reason codes
250
+ // per CONTRIBUTING.md "Prohibited: Raw Text Matching" (#2974).
251
+ //
252
+ // Detect early — before any flag parsing that can fire error() — so even
253
+ // --cwd and workstream-resolution failures emit structured stderr (#3310).
254
+ // The argv splice must happen here too, otherwise the dispatcher below sees
255
+ // "--json-errors" as an unknown command. Default off — human operators keep
256
+ // their plain-text diagnostic.
257
+ const jsonErrorsIdx = args.indexOf('--json-errors');
258
+ if (jsonErrorsIdx !== -1) {
259
+ core.setJsonErrorMode(true);
260
+ args.splice(jsonErrorsIdx, 1);
261
+ } else if (process.env.SDD_JSON_ERRORS === '1') {
262
+ core.setJsonErrorMode(true);
263
+ }
200
264
 
201
265
  // Optional cwd override for sandboxed subagents running outside project root.
202
266
  let cwd = process.cwd();
@@ -204,18 +268,18 @@ async function main() {
204
268
  const cwdIdx = args.indexOf('--cwd');
205
269
  if (cwdEqArg) {
206
270
  const value = cwdEqArg.slice('--cwd='.length).trim();
207
- if (!value) error('Missing value for --cwd');
271
+ if (!value) error('Missing value for --cwd', ERROR_REASON.USAGE);
208
272
  args.splice(args.indexOf(cwdEqArg), 1);
209
273
  cwd = path.resolve(value);
210
274
  } else if (cwdIdx !== -1) {
211
275
  const value = args[cwdIdx + 1];
212
- if (!value || value.startsWith('--')) error('Missing value for --cwd');
276
+ if (!value || value.startsWith('--')) error('Missing value for --cwd', ERROR_REASON.USAGE);
213
277
  args.splice(cwdIdx, 2);
214
278
  cwd = path.resolve(value);
215
279
  }
216
280
 
217
281
  if (!fs.existsSync(cwd) || !fs.statSync(cwd).isDirectory()) {
218
- error(`Invalid --cwd: ${cwd}`);
282
+ error(`Invalid --cwd: ${cwd}`, ERROR_REASON.USAGE);
219
283
  }
220
284
 
221
285
  // Resolve worktree root: in a linked worktree, .planning/ lives in the main worktree.
@@ -230,30 +294,18 @@ async function main() {
230
294
  }
231
295
 
232
296
  // Optional workstream override for parallel milestone work.
233
- // Priority: --ws flag > SDD_WORKSTREAM env var > active-workstream file > null (flat mode)
234
- const wsEqArg = args.find(arg => arg.startsWith('--ws='));
235
- const wsIdx = args.indexOf('--ws');
297
+ // Priority: --ws flag > SDD_WORKSTREAM env var > session/shared pointer > null.
236
298
  let ws = null;
237
- if (wsEqArg) {
238
- ws = wsEqArg.slice('--ws='.length).trim();
239
- if (!ws) error('Missing value for --ws');
240
- args.splice(args.indexOf(wsEqArg), 1);
241
- } else if (wsIdx !== -1) {
242
- ws = args[wsIdx + 1];
243
- if (!ws || ws.startsWith('--')) error('Missing value for --ws');
244
- args.splice(wsIdx, 2);
245
- } else if (process.env.SDD_WORKSTREAM) {
246
- ws = process.env.SDD_WORKSTREAM.trim();
247
- } else {
248
- ws = getActiveWorkstream(cwd);
249
- }
250
- // Validate workstream name to prevent path traversal attacks.
251
- if (ws && !/^[a-zA-Z0-9_-]+$/.test(ws)) {
252
- error('Invalid workstream name: must be alphanumeric, hyphens, and underscores only');
253
- }
254
- // Set env var so all modules (planningDir, planningPaths) auto-resolve workstream paths
255
- if (ws) {
256
- process.env.SDD_WORKSTREAM = ws;
299
+ try {
300
+ const wsResolution = resolveActiveWorkstream(cwd, args, process.env, {
301
+ getStored: getActiveWorkstream,
302
+ });
303
+ ws = wsResolution.ws;
304
+ args = wsResolution.args;
305
+ // Set env var so all modules (planningDir, planningPaths) auto-resolve workstream paths.
306
+ applyResolvedWorkstreamEnv(wsResolution, process.env);
307
+ } catch (err) {
308
+ error(err.message || String(err));
257
309
  }
258
310
 
259
311
  const rawIndex = args.indexOf('--raw');
@@ -267,14 +319,97 @@ async function main() {
267
319
  let pickField = null;
268
320
  if (pickIdx !== -1) {
269
321
  pickField = args[pickIdx + 1];
270
- if (!pickField || pickField.startsWith('--')) error('Missing value for --pick');
322
+ if (!pickField || pickField.startsWith('--')) error('Missing value for --pick', ERROR_REASON.USAGE);
271
323
  args.splice(pickIdx, 2);
272
324
  }
273
325
 
274
- const command = args[0];
326
+ // --default <value>: for config-get, return this value instead of erroring
327
+ // when the key is absent. Allows workflows to express optional config reads
328
+ // without defensive `2>/dev/null || true` boilerplate (#1893).
329
+ const defaultIdx = args.indexOf('--default');
330
+ let defaultValue = undefined;
331
+ if (defaultIdx !== -1) {
332
+ defaultValue = args[defaultIdx + 1];
333
+ if (defaultValue === undefined) defaultValue = '';
334
+ args.splice(defaultIdx, 2);
335
+ }
336
+
337
+ let command = args[0];
338
+
339
+ // #3243: accept dotted canonical form (e.g. `state.update`) as well as the
340
+ // spaced form (`state update`). Workflow files and stale SDK binaries pass
341
+ // the dotted canonical form directly; any caller that bypasses the SDK
342
+ // client-side split hit "Unknown command" before this shim.
343
+ //
344
+ // Split on the FIRST dot only — `check.decision-coverage-plan` becomes
345
+ // command='check', args=['check','decision-coverage-plan',...rest].
346
+ // Parallel to dottedCommandToCjsArgv in sdk/src/query/query-fallback-bridge-adapter.ts;
347
+ // kept separate here to avoid SDK coupling (see TODO: extract to shared helper).
348
+ //
349
+ // Guard: head and rest must both be non-empty (rejects leading-dot args like
350
+ // ".hidden" and bare-dot ".").
351
+ const originalCommand = command; // preserved for "Unknown command" suggestion
352
+ if (typeof command === 'string' && command.includes('.')) {
353
+ const dotIdx = command.indexOf('.');
354
+ const head = command.slice(0, dotIdx);
355
+ const rest = command.slice(dotIdx + 1);
356
+ if (head && rest) {
357
+ command = head;
358
+ args = [head, rest, ...args.slice(1)];
359
+ }
360
+ }
361
+
362
+ // Top-level usage string — emitted by `sdd-tools` (no args) and by
363
+ // `sdd-tools --help` / any `--help` request below.
364
+ // CR feedback: the command list must enumerate every top-level command
365
+ // supported by the dispatcher so `--help` is actually useful for
366
+ // discovery; previously it was a partial subset that didn't include
367
+ // phase / roadmap / milestone / progress / etc.
368
+ const TOP_LEVEL_USAGE = 'Usage: sdd-tools <command> [args] [--raw] [--pick <field>] [--cwd <path>] [--ws <name>] [--json-errors]\n' +
369
+ 'Commands: agent-skills, audit-open, audit-uat, check-commit, commit, commit-to-subrepo, ' +
370
+ 'config-ensure-section, config-get, config-new-project, config-path, config-set, ' +
371
+ 'current-timestamp, detect-custom-files, docs-init, extract-messages, find-phase, ' +
372
+ 'from-sdd2, frontmatter, gap-analysis, generate-claude-md, generate-claude-profile, ' +
373
+ 'generate-dev-preferences, generate-slug, graphify, history-digest, init, intel, ' +
374
+ 'learnings, list-todos, milestone, phase, phase-plan-index, phases, profile-questionnaire, ' +
375
+ 'profile-sample, progress, requirements, resolve-model, roadmap, scaffold, state, ' +
376
+ 'template, validate, verify, verify-path-exists, verify-summary, workstream, worktree\n\n' +
377
+ 'Global flags:\n' +
378
+ ' --raw Emit raw output without post-processing\n' +
379
+ ' --pick <field> Extract a single field from JSON output (dot/bracket notation)\n' +
380
+ ' --cwd <path> Override working directory for project-root resolution\n' +
381
+ ' --ws <name> Override active workstream (or set SDD_WORKSTREAM)\n' +
382
+ ' --json-errors Emit structured JSON error objects on stderr (or set SDD_JSON_ERRORS=1)\n\n' +
383
+ 'For command-specific argument requirements, invoke the command without args ' +
384
+ '(e.g. `sdd-tools phase add`) — the resulting error lists what is required.';
275
385
 
276
386
  if (!command) {
277
- error('Usage: sdd-tools <command> [args] [--raw] [--pick <field>] [--cwd <path>] [--ws <name>]\nCommands: state, resolve-model, find-phase, commit, verify-summary, verify, frontmatter, template, generate-slug, current-timestamp, list-todos, verify-path-exists, config-ensure-section, config-new-project, init, workstream');
387
+ error(TOP_LEVEL_USAGE);
388
+ }
389
+
390
+ // #3019: a `--help` / `-h` flag in argv must render the top-level usage
391
+ // and exit 0 — not error out with "Unknown flag". The previous shape
392
+ // erred on agent-hallucinated flags, but it also blocked humans from
393
+ // discovering the command surface via subcommand help requests routed
394
+ // here from the SDK CLI's query dispatcher (after the cli.ts fix that
395
+ // stops harvesting --help as a global flag). Rendering top-level usage
396
+ // on --help is strictly better UX than the old short-circuit, which
397
+ // printed the SDK-level usage that doesn't mention any of these
398
+ // subcommands.
399
+ const HELP_FLAGS = new Set(['-h', '--help', '-?', '--h', '--usage']);
400
+ if (args.some((a) => HELP_FLAGS.has(a))) {
401
+ process.stdout.write(TOP_LEVEL_USAGE + '\n');
402
+ return;
403
+ }
404
+
405
+ // Reject version flags. AI agents sometimes hallucinate --version on tool
406
+ // invocations; silently ignoring it can cause destructive operations to
407
+ // proceed unchecked. (Help flags are handled above.)
408
+ const NEVER_VALID_FLAGS = new Set(['--version', '-v']);
409
+ for (const arg of args) {
410
+ if (NEVER_VALID_FLAGS.has(arg)) {
411
+ error(`Unknown flag: ${arg}\nsdd-tools does not accept version flags. Run "sdd-tools" with no arguments for usage.`, ERROR_REASON.USAGE);
412
+ }
278
413
  }
279
414
 
280
415
  // Multi-repo guard: resolve project root for commands that read/write .planning/.
@@ -282,7 +417,8 @@ async function main() {
282
417
  // filesystem traversal on every invocation.
283
418
  const SKIP_ROOT_RESOLUTION = new Set([
284
419
  'generate-slug', 'current-timestamp', 'verify-path-exists',
285
- 'verify-summary', 'template', 'frontmatter',
420
+ 'verify-summary', 'template', 'frontmatter', 'detect-custom-files',
421
+ 'worktree',
286
422
  ]);
287
423
  if (!SKIP_ROOT_RESOLUTION.has(command)) {
288
424
  cwd = findProjectRoot(cwd);
@@ -313,7 +449,7 @@ async function main() {
313
449
  }
314
450
  };
315
451
  try {
316
- await runCommand(command, args, cwd, raw);
452
+ await runCommand(command, args, cwd, raw, defaultValue, originalCommand);
317
453
  cleanup();
318
454
  } catch (e) {
319
455
  fs.writeSync = origWriteSync;
@@ -322,7 +458,27 @@ async function main() {
322
458
  return;
323
459
  }
324
460
 
325
- await runCommand(command, args, cwd, raw);
461
+ // Intercept stdout to transparently resolve @file: references (#1891).
462
+ // core.cjs output() writes @file:<path> when JSON > 50KB. The --pick path
463
+ // already resolves this, but the normal path wrote @file: to stdout, forcing
464
+ // every workflow to have a bash-specific `if [[ "$INIT" == @file:* ]]` check
465
+ // that breaks on PowerShell and other non-bash shells.
466
+ const origWriteSync2 = fs.writeSync;
467
+ const outChunks = [];
468
+ fs.writeSync = function (fd, data, ...rest) {
469
+ if (fd === 1) { outChunks.push(String(data)); return; }
470
+ return origWriteSync2.call(fs, fd, data, ...rest);
471
+ };
472
+ try {
473
+ await runCommand(command, args, cwd, raw, defaultValue, originalCommand);
474
+ } finally {
475
+ fs.writeSync = origWriteSync2;
476
+ }
477
+ let captured = outChunks.join('');
478
+ if (captured.startsWith('@file:')) {
479
+ captured = fs.readFileSync(captured.slice(6), 'utf-8');
480
+ }
481
+ origWriteSync2.call(fs, 1, captured);
326
482
  }
327
483
 
328
484
  /**
@@ -348,55 +504,17 @@ function extractField(obj, fieldPath) {
348
504
  return current;
349
505
  }
350
506
 
351
- async function runCommand(command, args, cwd, raw) {
507
+ async function runCommand(command, args, cwd, raw, defaultValue, originalCommand) {
352
508
  switch (command) {
353
509
  case 'state': {
354
- const subcommand = args[1];
355
- if (subcommand === 'json') {
356
- state.cmdStateJson(cwd, raw);
357
- } else if (subcommand === 'update') {
358
- state.cmdStateUpdate(cwd, args[2], args[3]);
359
- } else if (subcommand === 'get') {
360
- state.cmdStateGet(cwd, args[2], raw);
361
- } else if (subcommand === 'patch') {
362
- const patches = {};
363
- for (let i = 2; i < args.length; i += 2) {
364
- const key = args[i].replace(/^--/, '');
365
- const value = args[i + 1];
366
- if (key && value !== undefined) {
367
- patches[key] = value;
368
- }
369
- }
370
- state.cmdStatePatch(cwd, patches, raw);
371
- } else if (subcommand === 'advance-plan') {
372
- state.cmdStateAdvancePlan(cwd, raw);
373
- } else if (subcommand === 'record-metric') {
374
- const { phase: p, plan, duration, tasks, files } = parseNamedArgs(args, ['phase', 'plan', 'duration', 'tasks', 'files']);
375
- state.cmdStateRecordMetric(cwd, { phase: p, plan, duration, tasks, files }, raw);
376
- } else if (subcommand === 'update-progress') {
377
- state.cmdStateUpdateProgress(cwd, raw);
378
- } else if (subcommand === 'add-decision') {
379
- const { phase: p, summary, 'summary-file': summary_file, rationale, 'rationale-file': rationale_file } = parseNamedArgs(args, ['phase', 'summary', 'summary-file', 'rationale', 'rationale-file']);
380
- state.cmdStateAddDecision(cwd, { phase: p, summary, summary_file, rationale: rationale || '', rationale_file }, raw);
381
- } else if (subcommand === 'add-blocker') {
382
- const { text, 'text-file': text_file } = parseNamedArgs(args, ['text', 'text-file']);
383
- state.cmdStateAddBlocker(cwd, { text, text_file }, raw);
384
- } else if (subcommand === 'resolve-blocker') {
385
- state.cmdStateResolveBlocker(cwd, parseNamedArgs(args, ['text']).text, raw);
386
- } else if (subcommand === 'record-session') {
387
- const { 'stopped-at': stopped_at, 'resume-file': resume_file } = parseNamedArgs(args, ['stopped-at', 'resume-file']);
388
- state.cmdStateRecordSession(cwd, { stopped_at, resume_file: resume_file || 'None' }, raw);
389
- } else if (subcommand === 'begin-phase') {
390
- const { phase: p, name, plans } = parseNamedArgs(args, ['phase', 'name', 'plans']);
391
- state.cmdStateBeginPhase(cwd, p, name, plans !== null ? parseInt(plans, 10) : null, raw);
392
- } else if (subcommand === 'signal-waiting') {
393
- const { type, question, options, phase: p } = parseNamedArgs(args, ['type', 'question', 'options', 'phase']);
394
- state.cmdSignalWaiting(cwd, type, question, options, p, raw);
395
- } else if (subcommand === 'signal-resume') {
396
- state.cmdSignalResume(cwd, raw);
397
- } else {
398
- state.cmdStateLoad(cwd, raw);
399
- }
510
+ routeStateCommand({
511
+ state,
512
+ args,
513
+ cwd,
514
+ raw,
515
+ parseNamedArgs,
516
+ error,
517
+ });
400
518
  break;
401
519
  }
402
520
 
@@ -425,6 +543,11 @@ async function runCommand(command, args, cwd, raw) {
425
543
  break;
426
544
  }
427
545
 
546
+ case 'check-commit': {
547
+ commands.cmdCheckCommit(cwd, raw);
548
+ break;
549
+ }
550
+
428
551
  case 'commit-to-subrepo': {
429
552
  const message = args[1];
430
553
  const filesIndex = args.indexOf('--files');
@@ -461,7 +584,7 @@ async function runCommand(command, args, cwd, raw) {
461
584
  wave: wave || '1',
462
585
  }, raw);
463
586
  } else {
464
- error('Unknown template subcommand. Available: select, fill');
587
+ error('Unknown template subcommand. Available: select, fill', ERROR_REASON.SDK_UNKNOWN_COMMAND);
465
588
  }
466
589
  break;
467
590
  }
@@ -479,28 +602,19 @@ async function runCommand(command, args, cwd, raw) {
479
602
  } else if (subcommand === 'validate') {
480
603
  frontmatter.cmdFrontmatterValidate(cwd, file, parseNamedArgs(args, ['schema']).schema, raw);
481
604
  } else {
482
- error('Unknown frontmatter subcommand. Available: get, set, merge, validate');
605
+ error('Unknown frontmatter subcommand. Available: get, set, merge, validate', ERROR_REASON.SDK_UNKNOWN_COMMAND);
483
606
  }
484
607
  break;
485
608
  }
486
609
 
487
610
  case 'verify': {
488
- const subcommand = args[1];
489
- if (subcommand === 'plan-structure') {
490
- verify.cmdVerifyPlanStructure(cwd, args[2], raw);
491
- } else if (subcommand === 'phase-completeness') {
492
- verify.cmdVerifyPhaseCompleteness(cwd, args[2], raw);
493
- } else if (subcommand === 'references') {
494
- verify.cmdVerifyReferences(cwd, args[2], raw);
495
- } else if (subcommand === 'commits') {
496
- verify.cmdVerifyCommits(cwd, args.slice(2), raw);
497
- } else if (subcommand === 'artifacts') {
498
- verify.cmdVerifyArtifacts(cwd, args[2], raw);
499
- } else if (subcommand === 'key-links') {
500
- verify.cmdVerifyKeyLinks(cwd, args[2], raw);
501
- } else {
502
- error('Unknown verify subcommand. Available: plan-structure, phase-completeness, references, commits, artifacts, key-links');
503
- }
611
+ routeVerifyCommand({
612
+ verify,
613
+ args,
614
+ cwd,
615
+ raw,
616
+ error,
617
+ });
504
618
  break;
505
619
  }
506
620
 
@@ -540,7 +654,7 @@ async function runCommand(command, args, cwd, raw) {
540
654
  }
541
655
 
542
656
  case 'config-get': {
543
- config.cmdConfigGet(cwd, args[1], raw);
657
+ config.cmdConfigGet(cwd, args[1], raw, defaultValue);
544
658
  break;
545
659
  }
546
660
 
@@ -549,44 +663,46 @@ async function runCommand(command, args, cwd, raw) {
549
663
  break;
550
664
  }
551
665
 
666
+ case 'config-path': {
667
+ config.cmdConfigPath(cwd, raw);
668
+ break;
669
+ }
670
+
552
671
  case 'agent-skills': {
553
672
  init.cmdAgentSkills(cwd, args[1], raw);
554
673
  break;
555
674
  }
556
675
 
676
+ case 'skill-manifest': {
677
+ init.cmdSkillManifest(cwd, args, raw);
678
+ break;
679
+ }
680
+
557
681
  case 'history-digest': {
558
682
  commands.cmdHistoryDigest(cwd, raw);
559
683
  break;
560
684
  }
561
685
 
562
686
  case 'phases': {
563
- const subcommand = args[1];
564
- if (subcommand === 'list') {
565
- const typeIndex = args.indexOf('--type');
566
- const phaseIndex = args.indexOf('--phase');
567
- const options = {
568
- type: typeIndex !== -1 ? args[typeIndex + 1] : null,
569
- phase: phaseIndex !== -1 ? args[phaseIndex + 1] : null,
570
- includeArchived: args.includes('--include-archived'),
571
- };
572
- phase.cmdPhasesList(cwd, options, raw);
573
- } else {
574
- error('Unknown phases subcommand. Available: list');
575
- }
687
+ routePhasesCommand({
688
+ phase,
689
+ milestone,
690
+ args,
691
+ cwd,
692
+ raw,
693
+ error,
694
+ });
576
695
  break;
577
696
  }
578
697
 
579
698
  case 'roadmap': {
580
- const subcommand = args[1];
581
- if (subcommand === 'get-phase') {
582
- roadmap.cmdRoadmapGetPhase(cwd, args[2], raw);
583
- } else if (subcommand === 'analyze') {
584
- roadmap.cmdRoadmapAnalyze(cwd, raw);
585
- } else if (subcommand === 'update-plan-progress') {
586
- roadmap.cmdRoadmapUpdatePlanProgress(cwd, args[2], raw);
587
- } else {
588
- error('Unknown roadmap subcommand. Available: get-phase, analyze, update-plan-progress');
589
- }
699
+ routeRoadmapCommand({
700
+ roadmap,
701
+ args,
702
+ cwd,
703
+ raw,
704
+ error,
705
+ });
590
706
  break;
591
707
  }
592
708
 
@@ -595,38 +711,26 @@ async function runCommand(command, args, cwd, raw) {
595
711
  if (subcommand === 'mark-complete') {
596
712
  milestone.cmdRequirementsMarkComplete(cwd, args.slice(2), raw);
597
713
  } else {
598
- error('Unknown requirements subcommand. Available: mark-complete');
714
+ error('Unknown requirements subcommand. Available: mark-complete', ERROR_REASON.SDK_UNKNOWN_COMMAND);
599
715
  }
600
716
  break;
601
717
  }
602
718
 
719
+ case 'gap-analysis': {
720
+ // Post-planning gap checker (#2493) — unified REQUIREMENTS.md +
721
+ // CONTEXT.md <decisions> coverage report against PLAN.md files.
722
+ gapChecker.cmdGapAnalysis(cwd, args.slice(1), raw);
723
+ break;
724
+ }
725
+
603
726
  case 'phase': {
604
- const subcommand = args[1];
605
- if (subcommand === 'next-decimal') {
606
- phase.cmdPhaseNextDecimal(cwd, args[2], raw);
607
- } else if (subcommand === 'add') {
608
- const idIdx = args.indexOf('--id');
609
- let customId = null;
610
- const descArgs = [];
611
- for (let i = 2; i < args.length; i++) {
612
- if (args[i] === '--id' && i + 1 < args.length) {
613
- customId = args[i + 1];
614
- i++; // skip value
615
- } else {
616
- descArgs.push(args[i]);
617
- }
618
- }
619
- phase.cmdPhaseAdd(cwd, descArgs.join(' '), raw, customId);
620
- } else if (subcommand === 'insert') {
621
- phase.cmdPhaseInsert(cwd, args[2], args.slice(3).join(' '), raw);
622
- } else if (subcommand === 'remove') {
623
- const forceFlag = args.includes('--force');
624
- phase.cmdPhaseRemove(cwd, args[2], { force: forceFlag }, raw);
625
- } else if (subcommand === 'complete') {
626
- phase.cmdPhaseComplete(cwd, args[2], raw);
627
- } else {
628
- error('Unknown phase subcommand. Available: next-decimal, add, insert, remove, complete');
629
- }
727
+ routePhaseCommand({
728
+ phase,
729
+ args,
730
+ cwd,
731
+ raw,
732
+ error,
733
+ });
630
734
  break;
631
735
  }
632
736
 
@@ -637,23 +741,21 @@ async function runCommand(command, args, cwd, raw) {
637
741
  const archivePhases = args.includes('--archive-phases');
638
742
  milestone.cmdMilestoneComplete(cwd, args[2], { name: milestoneName, archivePhases }, raw);
639
743
  } else {
640
- error('Unknown milestone subcommand. Available: complete');
744
+ error('Unknown milestone subcommand. Available: complete', ERROR_REASON.SDK_UNKNOWN_COMMAND);
641
745
  }
642
746
  break;
643
747
  }
644
748
 
645
749
  case 'validate': {
646
- const subcommand = args[1];
647
- if (subcommand === 'consistency') {
648
- verify.cmdValidateConsistency(cwd, raw);
649
- } else if (subcommand === 'health') {
650
- const repairFlag = args.includes('--repair');
651
- verify.cmdValidateHealth(cwd, { repair: repairFlag }, raw);
652
- } else if (subcommand === 'agents') {
653
- verify.cmdValidateAgents(cwd, raw);
654
- } else {
655
- error('Unknown validate subcommand. Available: consistency, health, agents');
656
- }
750
+ routeValidateCommand({
751
+ verify,
752
+ args,
753
+ cwd,
754
+ raw,
755
+ parseNamedArgs,
756
+ output: core.output,
757
+ error,
758
+ });
657
759
  break;
658
760
  }
659
761
 
@@ -669,6 +771,21 @@ async function runCommand(command, args, cwd, raw) {
669
771
  break;
670
772
  }
671
773
 
774
+ case 'audit-open': {
775
+ const { auditOpenArtifacts, formatAuditReport } = require('./lib/audit.cjs');
776
+ const wantJson = args.includes('--json');
777
+ const result = auditOpenArtifacts(cwd);
778
+ if (wantJson) {
779
+ // core.output JSON-stringifies its first arg; pass the object directly.
780
+ core.output(result, raw);
781
+ } else {
782
+ // Human-readable report must bypass JSON encoding — use the rawValue
783
+ // form (third arg) which core.output emits verbatim.
784
+ core.output(null, true, formatAuditReport(result));
785
+ }
786
+ break;
787
+ }
788
+
672
789
  case 'uat': {
673
790
  const subcommand = args[1];
674
791
  const uat = require('./lib/uat.cjs');
@@ -676,7 +793,7 @@ async function runCommand(command, args, cwd, raw) {
676
793
  const options = parseNamedArgs(args, ['file']);
677
794
  uat.cmdRenderCheckpoint(cwd, options, raw);
678
795
  } else {
679
- error('Unknown uat subcommand. Available: render-checkpoint');
796
+ error('Unknown uat subcommand. Available: render-checkpoint', ERROR_REASON.SDK_UNKNOWN_COMMAND);
680
797
  }
681
798
  break;
682
799
  }
@@ -694,7 +811,7 @@ async function runCommand(command, args, cwd, raw) {
694
811
  } else if (subcommand === 'match-phase') {
695
812
  commands.cmdTodoMatchPhase(cwd, args[2], raw);
696
813
  } else {
697
- error('Unknown todo subcommand. Available: complete, match-phase');
814
+ error('Unknown todo subcommand. Available: complete, match-phase', ERROR_REASON.SDK_UNKNOWN_COMMAND);
698
815
  }
699
816
  break;
700
817
  }
@@ -710,59 +827,14 @@ async function runCommand(command, args, cwd, raw) {
710
827
  }
711
828
 
712
829
  case 'init': {
713
- const workflow = args[1];
714
- switch (workflow) {
715
- case 'execute-phase':
716
- init.cmdInitExecutePhase(cwd, args[2], raw);
717
- break;
718
- case 'plan-phase':
719
- init.cmdInitPlanPhase(cwd, args[2], raw);
720
- break;
721
- case 'new-project':
722
- init.cmdInitNewProject(cwd, raw);
723
- break;
724
- case 'new-milestone':
725
- init.cmdInitNewMilestone(cwd, raw);
726
- break;
727
- case 'quick':
728
- init.cmdInitQuick(cwd, args.slice(2).join(' '), raw);
729
- break;
730
- case 'resume':
731
- init.cmdInitResume(cwd, raw);
732
- break;
733
- case 'verify-work':
734
- init.cmdInitVerifyWork(cwd, args[2], raw);
735
- break;
736
- case 'phase-op':
737
- init.cmdInitPhaseOp(cwd, args[2], raw);
738
- break;
739
- case 'todos':
740
- init.cmdInitTodos(cwd, args[2], raw);
741
- break;
742
- case 'milestone-op':
743
- init.cmdInitMilestoneOp(cwd, raw);
744
- break;
745
- case 'map-codebase':
746
- init.cmdInitMapCodebase(cwd, raw);
747
- break;
748
- case 'progress':
749
- init.cmdInitProgress(cwd, raw);
750
- break;
751
- case 'manager':
752
- init.cmdInitManager(cwd, raw);
753
- break;
754
- case 'new-workspace':
755
- init.cmdInitNewWorkspace(cwd, raw);
756
- break;
757
- case 'list-workspaces':
758
- init.cmdInitListWorkspaces(cwd, raw);
759
- break;
760
- case 'remove-workspace':
761
- init.cmdInitRemoveWorkspace(cwd, args[2], raw);
762
- break;
763
- default:
764
- error(`Unknown init workflow: ${workflow}\nAvailable: execute-phase, plan-phase, new-project, new-milestone, quick, resume, verify-work, phase-op, todos, milestone-op, map-codebase, progress, manager, new-workspace, list-workspaces, remove-workspace`);
765
- }
830
+ routeInitCommand({
831
+ init,
832
+ args,
833
+ cwd,
834
+ raw,
835
+ parseNamedArgs,
836
+ error,
837
+ });
766
838
  break;
767
839
  }
768
840
 
@@ -815,7 +887,7 @@ async function runCommand(command, args, cwd, raw) {
815
887
  const sessionsPath = pathIdx !== -1 ? args[pathIdx + 1] : null;
816
888
  const projectArg = args[1];
817
889
  if (!projectArg || projectArg.startsWith('--')) {
818
- error('Usage: sdd-tools extract-messages <project> [--session <id>] [--limit N] [--path <dir>]\nRun scan-sessions first to see available projects.');
890
+ error('Usage: sdd-tools extract-messages <project> [--session <id>] [--limit N] [--path <dir>]\nRun scan-sessions first to see available projects.', ERROR_REASON.USAGE);
819
891
  }
820
892
  await profilePipeline.cmdExtractMessages(projectArg, { sessionId, limit }, raw, sessionsPath);
821
893
  break;
@@ -839,7 +911,7 @@ async function runCommand(command, args, cwd, raw) {
839
911
  case 'write-profile': {
840
912
  const inputIdx = args.indexOf('--input');
841
913
  const inputPath = inputIdx !== -1 ? args[inputIdx + 1] : null;
842
- if (!inputPath) error('--input <analysis-json-path> is required');
914
+ if (!inputPath) error('--input <analysis-json-path> is required', ERROR_REASON.USAGE);
843
915
  const outputIdx = args.indexOf('--output');
844
916
  const outputPath = outputIdx !== -1 ? args[outputIdx + 1] : null;
845
917
  profileOutput.cmdWriteProfile(cwd, { input: inputPath, output: outputPath }, raw);
@@ -905,13 +977,247 @@ async function runCommand(command, args, cwd, raw) {
905
977
  } else if (subcommand === 'progress') {
906
978
  workstream.cmdWorkstreamProgress(cwd, raw);
907
979
  } else {
908
- error('Unknown workstream subcommand. Available: create, list, status, complete, set, get, progress');
980
+ error('Unknown workstream subcommand. Available: create, list, status, complete, set, get, progress', ERROR_REASON.SDK_UNKNOWN_COMMAND);
909
981
  }
910
982
  break;
911
983
  }
912
984
 
913
- default:
914
- error(`Unknown command: ${command}`);
985
+ case 'worktree': {
986
+ const subcommand = args[1];
987
+ const worktreeSafety = require('./lib/worktree-safety.cjs');
988
+ if (subcommand === 'cleanup-wave') {
989
+ worktreeSafety.cmdWorktreeCleanupWave(cwd, args.slice(2));
990
+ } else {
991
+ error('Unknown worktree subcommand. Available: cleanup-wave', ERROR_REASON.SDK_UNKNOWN_COMMAND);
992
+ }
993
+ break;
994
+ }
995
+
996
+ // ─── Intel ────────────────────────────────────────────────────────────
997
+
998
+ case 'intel': {
999
+ const intel = require('./lib/intel.cjs');
1000
+ const subcommand = args[1];
1001
+ if (subcommand === 'query') {
1002
+ const term = args[2];
1003
+ if (!term) error('Usage: sdd-tools intel query <term>', ERROR_REASON.USAGE);
1004
+ const planningDir = path.join(cwd, '.planning');
1005
+ core.output(intel.intelQuery(term, planningDir), raw);
1006
+ } else if (subcommand === 'status') {
1007
+ const planningDir = path.join(cwd, '.planning');
1008
+ const status = intel.intelStatus(planningDir);
1009
+ if (!raw && status.files) {
1010
+ for (const file of Object.values(status.files)) {
1011
+ if (file.updated_at) {
1012
+ file.updated_at = core.timeAgo(new Date(file.updated_at));
1013
+ }
1014
+ }
1015
+ }
1016
+ core.output(status, raw);
1017
+ } else if (subcommand === 'diff') {
1018
+ const planningDir = path.join(cwd, '.planning');
1019
+ core.output(intel.intelDiff(planningDir), raw);
1020
+ } else if (subcommand === 'snapshot') {
1021
+ const planningDir = path.join(cwd, '.planning');
1022
+ core.output(intel.intelSnapshot(planningDir), raw);
1023
+ } else if (subcommand === 'patch-meta') {
1024
+ const filePath = args[2];
1025
+ if (!filePath) error('Usage: sdd-tools intel patch-meta <file-path>', ERROR_REASON.USAGE);
1026
+ core.output(intel.intelPatchMeta(path.resolve(cwd, filePath)), raw);
1027
+ } else if (subcommand === 'validate') {
1028
+ const planningDir = path.join(cwd, '.planning');
1029
+ core.output(intel.intelValidate(planningDir), raw);
1030
+ } else if (subcommand === 'extract-exports') {
1031
+ const filePath = args[2];
1032
+ if (!filePath) error('Usage: sdd-tools intel extract-exports <file-path>', ERROR_REASON.USAGE);
1033
+ core.output(intel.intelExtractExports(path.resolve(cwd, filePath)), raw);
1034
+ } else if (subcommand === 'update') {
1035
+ const planningDir = path.join(cwd, '.planning');
1036
+ core.output(intel.intelUpdate(planningDir), raw);
1037
+ } else {
1038
+ error('Unknown intel subcommand. Available: query, status, update, diff, snapshot, patch-meta, validate, extract-exports', ERROR_REASON.SDK_UNKNOWN_COMMAND);
1039
+ }
1040
+ break;
1041
+ }
1042
+
1043
+ // ─── Graphify ──────────────────────────────────────────────────────────
1044
+
1045
+ case 'graphify': {
1046
+ const graphify = require('./lib/graphify.cjs');
1047
+ const subcommand = args[1];
1048
+ if (subcommand === 'query') {
1049
+ const term = args[2];
1050
+ if (!term) error('Usage: sdd-tools graphify query <term>', ERROR_REASON.USAGE);
1051
+ const budgetIdx = args.indexOf('--budget');
1052
+ const budget = budgetIdx !== -1 ? parseInt(args[budgetIdx + 1], 10) : null;
1053
+ core.output(graphify.graphifyQuery(cwd, term, { budget }), raw);
1054
+ } else if (subcommand === 'status') {
1055
+ core.output(graphify.graphifyStatus(cwd), raw);
1056
+ } else if (subcommand === 'diff') {
1057
+ core.output(graphify.graphifyDiff(cwd), raw);
1058
+ } else if (subcommand === 'build') {
1059
+ if (args[2] === 'snapshot') {
1060
+ core.output(graphify.writeSnapshot(cwd), raw);
1061
+ } else {
1062
+ core.output(graphify.graphifyBuild(cwd), raw);
1063
+ }
1064
+ } else {
1065
+ error('Unknown graphify subcommand. Available: build, query, status, diff', ERROR_REASON.SDK_UNKNOWN_COMMAND);
1066
+ }
1067
+ break;
1068
+ }
1069
+
1070
+ // ─── Documentation ────────────────────────────────────────────────────
1071
+
1072
+ case 'docs-init': {
1073
+ docs.cmdDocsInit(cwd, raw);
1074
+ break;
1075
+ }
1076
+
1077
+ // ─── Learnings ─────────────────────────────────────────────────────────
1078
+
1079
+ case 'learnings': {
1080
+ const subcommand = args[1];
1081
+ if (subcommand === 'list') {
1082
+ learnings.cmdLearningsList(raw);
1083
+ } else if (subcommand === 'query') {
1084
+ const tagIdx = args.indexOf('--tag');
1085
+ const tag = tagIdx !== -1 ? args[tagIdx + 1] : null;
1086
+ if (!tag) error('Usage: sdd-tools learnings query --tag <tag>', ERROR_REASON.USAGE);
1087
+ learnings.cmdLearningsQuery(tag, raw);
1088
+ } else if (subcommand === 'copy') {
1089
+ learnings.cmdLearningsCopy(cwd, raw);
1090
+ } else if (subcommand === 'prune') {
1091
+ const olderIdx = args.indexOf('--older-than');
1092
+ const olderThan = olderIdx !== -1 ? args[olderIdx + 1] : null;
1093
+ if (!olderThan) error('Usage: sdd-tools learnings prune --older-than <duration>', ERROR_REASON.USAGE);
1094
+ learnings.cmdLearningsPrune(olderThan, raw);
1095
+ } else if (subcommand === 'delete') {
1096
+ const id = args[2];
1097
+ if (!id) error('Usage: sdd-tools learnings delete <id>', ERROR_REASON.USAGE);
1098
+ learnings.cmdLearningsDelete(id, raw);
1099
+ } else {
1100
+ error('Unknown learnings subcommand. Available: list, query, copy, prune, delete', ERROR_REASON.SDK_UNKNOWN_COMMAND);
1101
+ }
1102
+ break;
1103
+ }
1104
+
1105
+ // ─── detect-custom-files ───────────────────────────────────────────────
1106
+ // Detect user-added files inside SDD-managed directories that are not
1107
+ // tracked in sdd-file-manifest.json. Used by the update workflow to back
1108
+ // up custom files before the installer wipes those directories.
1109
+ //
1110
+ // This replaces the fragile bash pattern:
1111
+ // MANIFEST_FILES=$(node -e "require('$RUNTIME_DIR/...')" 2>/dev/null)
1112
+ // ${filepath#$RUNTIME_DIR/} # unreliable path stripping
1113
+ // which silently returns CUSTOM_COUNT=0 when $RUNTIME_DIR is unset or
1114
+ // when the stripped path does not match the manifest key format (#1997).
1115
+
1116
+ case 'detect-custom-files': {
1117
+ const configDirIdx = args.indexOf('--config-dir');
1118
+ const configDir = configDirIdx !== -1 ? args[configDirIdx + 1] : null;
1119
+ if (!configDir) {
1120
+ error('Usage: sdd-tools detect-custom-files --config-dir <path>', ERROR_REASON.USAGE);
1121
+ }
1122
+ const resolvedConfigDir = path.resolve(configDir);
1123
+ if (!fs.existsSync(resolvedConfigDir)) {
1124
+ error(`Config directory not found: ${resolvedConfigDir}`, ERROR_REASON.USAGE);
1125
+ }
1126
+
1127
+ const manifestPath = path.join(resolvedConfigDir, 'sdd-file-manifest.json');
1128
+ if (!fs.existsSync(manifestPath)) {
1129
+ // No manifest — cannot determine what is custom. Return empty list
1130
+ // (same behaviour as saveLocalPatches in install.js when no manifest).
1131
+ const out = { custom_files: [], custom_count: 0, manifest_found: false };
1132
+ process.stdout.write(JSON.stringify(out, null, 2));
1133
+ break;
1134
+ }
1135
+
1136
+ let manifest;
1137
+ try {
1138
+ manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));
1139
+ } catch {
1140
+ const out = { custom_files: [], custom_count: 0, manifest_found: false, error: 'manifest parse error' };
1141
+ process.stdout.write(JSON.stringify(out, null, 2));
1142
+ break;
1143
+ }
1144
+
1145
+ const manifestKeys = new Set(Object.keys(manifest.files || {}));
1146
+
1147
+ // SDD-managed directories to scan for user-added files.
1148
+ // These are the directories the installer wipes on update.
1149
+ const SDD_MANAGED_DIRS = [
1150
+ 'sdd',
1151
+ 'agents',
1152
+ path.join('commands', 'sdd'),
1153
+ 'hooks',
1154
+ 'skills',
1155
+ ];
1156
+
1157
+ function walkDir(dir, baseDir) {
1158
+ const results = [];
1159
+ if (!fs.existsSync(dir)) return results;
1160
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
1161
+ const fullPath = path.join(dir, entry.name);
1162
+ if (entry.isDirectory()) {
1163
+ results.push(...walkDir(fullPath, baseDir));
1164
+ } else {
1165
+ // Use forward slashes for cross-platform manifest key compatibility
1166
+ const relPath = path.relative(baseDir, fullPath).replace(/\\/g, '/');
1167
+ results.push(relPath);
1168
+ }
1169
+ }
1170
+ return results;
1171
+ }
1172
+
1173
+ const customFiles = [];
1174
+ for (const managedDir of SDD_MANAGED_DIRS) {
1175
+ const absDir = path.join(resolvedConfigDir, managedDir);
1176
+ if (!fs.existsSync(absDir)) continue;
1177
+ for (const relPath of walkDir(absDir, resolvedConfigDir)) {
1178
+ if (!manifestKeys.has(relPath)) {
1179
+ customFiles.push(relPath);
1180
+ }
1181
+ }
1182
+ }
1183
+
1184
+ const out = {
1185
+ custom_files: customFiles,
1186
+ custom_count: customFiles.length,
1187
+ manifest_found: true,
1188
+ manifest_version: manifest.version || null,
1189
+ };
1190
+ process.stdout.write(JSON.stringify(out, null, 2));
1191
+ break;
1192
+ }
1193
+
1194
+ // ─── SDD-2 Reverse Migration ───────────────────────────────────────────
1195
+
1196
+ case 'from-sdd2': {
1197
+ const sdd2Import = require('./lib/sdd2-import.cjs');
1198
+ sdd2Import.cmdFromSdd2(args.slice(1), cwd, raw);
1199
+ break;
1200
+ }
1201
+
1202
+ default: {
1203
+ // #3243: if the caller passed a dotted form (e.g. "foo.bar"), the shim
1204
+ // above split it so `command` here is the head ("foo"). Use
1205
+ // originalCommand to reconstruct the original dotted form and suggest
1206
+ // the spaced equivalent — surfacing a useful diagnostic instead of just
1207
+ // "Unknown command: foo".
1208
+ const wasDotted =
1209
+ typeof originalCommand === 'string' &&
1210
+ originalCommand !== command &&
1211
+ originalCommand.includes('.');
1212
+ let suggestion = '';
1213
+ if (wasDotted) {
1214
+ const dotIdx = originalCommand.indexOf('.');
1215
+ const head = originalCommand.slice(0, dotIdx);
1216
+ const rest = originalCommand.slice(dotIdx + 1);
1217
+ suggestion = ` — did you mean: "${head} ${rest}"?`;
1218
+ }
1219
+ error(`Unknown command: ${command}${suggestion}`, ERROR_REASON.SDK_UNKNOWN_COMMAND);
1220
+ }
915
1221
  }
916
1222
  }
917
1223