Patrick Clery
f9c1f01971
fix: extend fix-slash-commands SEARCH_DIRS to agents/, sdk/src/, .clinerules
...
scripts/fix-slash-commands.cjs SEARCH_DIRS did not cover agents/, sdk/src/,
or top-level files, so 9 colon-form references survived in 6 files. The hit
at agents/gsd-codebase-mapper.md:105 propagated into ~/.claude/agents/ at
install time (the fixer is not wired into install) and produced unrunnable
/gsd:<cmd> suggestions in agent output on non-Gemini runtimes.
This commit includes Pass 1 (the 9 line edits) AND Pass 2 (extending the
fixer's SEARCH_DIRS so future regressions are auto-rewritten and caught by
the bug-2543 guard, which mirrors that list). The standalone bug-3100 test
added in the prior revision is removed in favor of the bug-2543 guard's
extended scan, per CONTRIBUTING.md test standards (no source-grep tests on
non-.md files).
Refs #3100
2026-05-05 13:19:10 -04:00
Tom Boucher
0f8f7537da
fix( #2652 ): layer ~/.gsd/defaults.json over built-ins in SDK loadConfig ( #2663 )
...
* fix(#2652 ): layer ~/.gsd/defaults.json over built-ins in SDK loadConfig
SDK loadConfig only merged built-in CONFIG_DEFAULTS, so pre-project init
queries (e.g. resolveModel in Codex installs) ignored user-level knobs like
resolve_model_ids: "omit" and emitted Claude model aliases from MODEL_PROFILES.
Port the user-defaults layer from get-shit-done/bin/lib/config.cjs:65 to the
TS loader. CJS parity: user defaults only apply when no .planning/config.json
exists (buildNewProjectConfig already bakes them in at /gsd:new-project time).
Fixes #2652
* fix(#2652 ): isolate GSD_HOME in test, refresh loadConfig JSDoc (CodeRabbit)
2026-04-24 18:08:07 -04:00
TÂCHES
596ce2d252
feat: GSD SDK — headless CLI with init + auto commands ( #1407 )
...
* test: Bootstrapped sdk/ as TypeScript ESM package with full GSD-1 PLAN.…
- "sdk/package.json"
- "sdk/tsconfig.json"
- "sdk/vitest.config.ts"
- "sdk/src/types.ts"
- "sdk/src/plan-parser.ts"
- "sdk/src/plan-parser.test.ts"
GSD-Task: S01/T01
* test: Implemented config reader and gsd-tools bridge with 25 unit tests…
- "sdk/src/config.ts"
- "sdk/src/config.test.ts"
- "sdk/src/gsd-tools.ts"
- "sdk/src/gsd-tools.test.ts"
GSD-Task: S01/T02
* test: Built prompt-builder, session-runner, and GSD class — 85 total un…
- "sdk/src/prompt-builder.ts"
- "sdk/src/prompt-builder.test.ts"
- "sdk/src/session-runner.ts"
- "sdk/src/index.ts"
- "sdk/src/types.ts"
GSD-Task: S01/T03
* test: Created E2E integration test with fixtures proving full SDK pipel…
- "sdk/src/e2e.integration.test.ts"
- "sdk/test-fixtures/sample-plan.md"
- "sdk/test-fixtures/.planning/config.json"
- "sdk/test-fixtures/.planning/STATE.md"
- "vitest.config.ts"
- "tsconfig.json"
GSD-Task: S01/T04
* test: Added PhaseType/GSDEventType enums, 16-variant GSDEvent union, GS…
- "sdk/src/types.ts"
- "sdk/src/event-stream.ts"
- "sdk/src/logger.ts"
- "sdk/src/event-stream.test.ts"
- "sdk/src/logger.test.ts"
GSD-Task: S02/T01
* test: Built ContextEngine for phase-aware context file resolution, getT…
- "sdk/src/context-engine.ts"
- "sdk/src/tool-scoping.ts"
- "sdk/src/phase-prompt.ts"
- "sdk/src/context-engine.test.ts"
- "sdk/src/tool-scoping.test.ts"
- "sdk/src/phase-prompt.test.ts"
GSD-Task: S02/T02
* test: Wired event stream into session runner, added onEvent()/addTransp…
- "sdk/src/session-runner.ts"
- "sdk/src/index.ts"
- "sdk/src/e2e.integration.test.ts"
GSD-Task: S02/T03
* feat: Added PhaseStepType enum, PhaseOpInfo interface, phase lifecycle…
- "sdk/src/types.ts"
- "sdk/src/gsd-tools.ts"
- "sdk/src/session-runner.ts"
- "sdk/src/index.ts"
- "sdk/src/phase-runner-types.test.ts"
GSD-Task: S03/T01
* test: Implemented PhaseRunner state machine with 39 unit tests covering…
- "sdk/src/phase-runner.ts"
- "sdk/src/phase-runner.test.ts"
GSD-Task: S03/T02
* test: Wired PhaseRunner into GSD.runPhase() public API with full re-exp…
- "sdk/src/index.ts"
- "sdk/src/phase-runner.integration.test.ts"
- "sdk/src/phase-runner.ts"
GSD-Task: S03/T03
* test: Expanded runVerifyStep with full gap closure cycle (plan → execut…
- "sdk/src/types.ts"
- "sdk/src/phase-runner.ts"
- "sdk/src/phase-runner.test.ts"
GSD-Task: S04/T02
* fix: Added 3 integration tests proving phasePlanIndex returns correct t…
- "sdk/src/phase-runner.integration.test.ts"
- "sdk/src/index.ts"
GSD-Task: S04/T03
* test: Add milestone-level types, typed roadmapAnalyze(), GSD.run() orch…
- "sdk/src/types.ts"
- "sdk/src/gsd-tools.ts"
- "sdk/src/index.ts"
- "sdk/src/milestone-runner.test.ts"
GSD-Task: S05/T01
* test: Added CLITransport (structured stdout log lines) and WSTransport…
- "sdk/src/cli-transport.ts"
- "sdk/src/cli-transport.test.ts"
- "sdk/src/ws-transport.ts"
- "sdk/src/ws-transport.test.ts"
- "sdk/src/index.ts"
- "sdk/package.json"
GSD-Task: S05/T02
* test: Added gsd-sdk CLI entry point with argument parsing, bin field, p…
- "sdk/src/cli.ts"
- "sdk/src/cli.test.ts"
- "sdk/package.json"
GSD-Task: S05/T03
* feat: Add InitNewProjectInfo type, initNewProject()/configSet() GSDTool…
- "sdk/src/types.ts"
- "sdk/src/gsd-tools.ts"
- "sdk/src/cli.ts"
- "sdk/src/cli.test.ts"
- "sdk/src/gsd-tools.test.ts"
GSD-Task: S01/T01
* chore: Created InitRunner orchestrator with setup → config → PROJECT.md…
- "sdk/src/init-runner.ts"
- "sdk/src/types.ts"
- "sdk/src/index.ts"
GSD-Task: S01/T02
* test: Wired InitRunner into CLI main() for full gsd-sdk init dispatch a…
- "sdk/src/cli.ts"
- "sdk/src/init-runner.test.ts"
- "sdk/src/cli.test.ts"
GSD-Task: S01/T03
* test: Add PlanCheck step, AI self-discuss, and retryOnce wrapper to Pha…
- "sdk/src/types.ts"
- "sdk/src/phase-runner.ts"
- "sdk/src/session-runner.ts"
- "sdk/src/phase-runner.test.ts"
- "sdk/src/phase-runner-types.test.ts"
GSD-Task: S02/T01
* feat: Rewrite CLITransport with ANSI colors, phase banners, spawn indic…
- "sdk/src/cli-transport.ts"
- "sdk/src/cli-transport.test.ts"
GSD-Task: S02/T02
* test: Add `gsd-sdk auto` command with autoMode config override, USAGE t…
- "sdk/src/cli.ts"
- "sdk/src/cli.test.ts"
- "sdk/src/index.ts"
- "sdk/src/types.ts"
GSD-Task: S02/T03
* fix: CLI shebang + gsd-tools non-JSON output handling
Three bugs found during first real gsd-sdk run:
1. cli.ts shebang was commented out — shell executed JS as bash,
triggering ImageMagick's import command instead of Node
2. configSet() called exec() which JSON.parse()d the output, but
gsd-tools config-set returns 'key=value' text, not JSON.
Added execRaw() method for commands that return plain text.
3. Same JSON parse bug affected commit() (returns git SHA),
stateLoad(), verifySummary(), initExecutePhase(), stateBeginPhase(),
and phaseComplete(). All switched to execRaw().
Tests updated to match real gsd-tools output format (plain text
instead of mocked JSON). 376/376 tests pass.
2026-03-26 20:27:51 -06:00