fix(sdk): forward --ws workstream flag through query dispatch (#2546)

* fix(sdk): forward --ws workstream flag through query dispatch (closes #2524)

- cli.ts: pass args.ws as workstream to registry.dispatch()
- registry.ts: add workstream? param to dispatch(), thread to handler
- utils.ts: add optional workstream? to QueryHandler type signature
- helpers.ts: planningPaths() accepts workstream? and uses relPlanningPath()
- All ~26 query handlers updated to receive and pass workstream to planningPaths()
- Config/commit/intel handlers use _workstream (project-global, not scoped)
- Add failing-then-passing test: tests/bug-2524-sdk-query-ws-flag.test.cjs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(sdk): forward workstream to all downstream query helpers

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(test): rewrite #2524 test as static source assertions — no sdk/dist build in CI

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Tom Boucher
2026-04-21 20:33:24 -04:00
committed by GitHub
parent 7bb6b6452a
commit 5676e2e4ef
31 changed files with 337 additions and 219 deletions

View File

@@ -133,13 +133,13 @@ export const verifyPlanStructure: QueryHandler = async (args, projectDir) => {
* @returns QueryResult with { complete, phase, plan_count, summary_count, incomplete_plans, orphan_summaries, errors, warnings }
* @throws GSDError with Validation classification if phase number missing
*/
export const verifyPhaseCompleteness: QueryHandler = async (args, projectDir) => {
export const verifyPhaseCompleteness: QueryHandler = async (args, projectDir, workstream) => {
const phase = args[0];
if (!phase) {
throw new GSDError('phase required', ErrorClassification.Validation);
}
const phasesDir = planningPaths(projectDir).phases;
const phasesDir = planningPaths(projectDir, workstream).phases;
const normalized = normalizePhaseName(phase);
// Find phase directory (mirror findPhase pattern from phase.ts)
@@ -554,7 +554,7 @@ export const verifyPathExists: QueryHandler = async (args, projectDir) => {
/**
* Detect schema drift for a phase — port of `cmdVerifySchemaDrift` from verify.cjs lines 10131086.
*/
export const verifySchemaDrift: QueryHandler = async (args, projectDir) => {
export const verifySchemaDrift: QueryHandler = async (args, projectDir, workstream) => {
const phaseArg = args[0];
const skipFlag = args.includes('--skip');
@@ -565,7 +565,7 @@ export const verifySchemaDrift: QueryHandler = async (args, projectDir) => {
const { checkSchemaDrift } = await import('./schema-detect.js');
const { execGit } = await import('./commit.js');
const phasesDir = planningPaths(projectDir).phases;
const phasesDir = planningPaths(projectDir, workstream).phases;
if (!existsSync(phasesDir)) {
return {
data: {