@bhargavvc/sdd-cc 1.35.0 → 1.42.4

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