Commit graph

3141 commits

Author SHA1 Message Date
Lex Christopherson
d3173d6512 2.43.0-next.4 2026-03-24 06:17:53 -06:00
Lex Christopherson
c722442bb3 fix(gsd): keep params as any in db-tools executors (CI tsconfig is stricter)
Local tsconfig excludes src/resources/ but CI compiles everything.
Record<string, unknown> for params broke handler calls since handlers
expect typed params (validated at runtime). Keep params: any with
eslint-disable annotation, type all other executor params properly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 06:17:20 -06:00
Lex Christopherson
ea77a04851 2.43.0-next.3 2026-03-24 06:07:50 -06:00
Lex Christopherson
dc3fe88369 fix(gsd): replace any types in db-tools executor signatures
Tool executor lambdas now use proper types (string, Record<string, unknown>,
AbortSignal | undefined) instead of any for all parameters.
registerAlias toolDef param also properly typed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 06:06:51 -06:00
Lex Christopherson
2f7208150a fix(gsd): resolve 4 TS compilation errors from parser migration
- github-sync/sync.ts: import parseRoadmap/parsePlan from parsers-legacy
- auto-worktree.ts: replace dangling roadmap.title with getMilestone() DB query
- markdown-renderer.ts: add explicit type annotations on lazy-loaded parser callbacks

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 06:04:29 -06:00
Lex Christopherson
6c1c31b91e 2.43.0-next.2 2026-03-24 05:49:23 -06:00
TÂCHES
e9e36f9568 feat(gsd): Tool-driven write-side state transitions — replace markdown mutation with atomic SQLite tool calls (#2141) 2026-03-23 14:16:32 -06:00
Lex Christopherson
1194548d61 fix(gsd): wrap plan-task DB writes in transaction + untrack .gsd/ artifacts
plan-task.ts was the only planning tool handler not wrapping its
insertTask/upsertTaskPlanning calls in a transaction(), risking partial
DB state if the upsert failed after insert. Matches the pattern used by
plan-slice, replan-slice, reassess-roadmap, and plan-milestone.

Also removes 80 .gsd/ working artifacts that were force-added despite
being in .gitignore.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 13:42:38 -06:00
TÂCHES
108845dd4b chore(M001): auto-commit after complete-milestone 2026-03-23 13:32:31 -06:00
Jeremy McSpadden
47bedc5540 feat: add contextual tips system for TUI and web terminal
Add a session-scoped contextual tips system that shows non-intrusive
hints when user behavior suggests they'd benefit from knowing a feature.

Tips:
- Shell command prefix: nudge when bare ls/git/npm typed without !
- Large paste: warn when >2000 char input sent to agent
- Thinking level: hint when short question with high/xhigh thinking
- Double-bang reminder: after 3+ single-! commands, suggest !!
- Compaction nudge: when context >= 70% full

Each tip fires at most N times per session, resets on /new.
Wired into both TUI (dim inline text) and web terminal (system line).
31 unit tests covering all tips, suppression, reset, and priority.
2026-03-23 14:28:50 -05:00
TÂCHES
dff941b1dc chore(M001): auto-commit after validate-milestone 2026-03-23 13:19:14 -06:00
TÂCHES
6f156ed053 chore(M001/S06): auto-commit after complete-slice 2026-03-23 13:14:14 -06:00
TÂCHES
f76fe8ec1e feat(S06/T02): Strip all 16 lazy createRequire fallback paths from migr…
- src/resources/extensions/gsd/dispatch-guard.ts
- src/resources/extensions/gsd/auto-dispatch.ts
- src/resources/extensions/gsd/auto-verification.ts
- src/resources/extensions/gsd/parallel-eligibility.ts
- src/resources/extensions/gsd/doctor.ts
- src/resources/extensions/gsd/doctor-checks.ts
- src/resources/extensions/gsd/visualizer-data.ts
- src/resources/extensions/gsd/workspace-index.ts
2026-03-23 13:09:37 -06:00
TÂCHES
56efa72886 test(S06/T01): Extract parseRoadmap/parsePlan into parsers-legacy.ts, u…
- src/resources/extensions/gsd/parsers-legacy.ts
- src/resources/extensions/gsd/files.ts
- src/resources/extensions/gsd/state.ts
- src/resources/extensions/gsd/md-importer.ts
- src/resources/extensions/gsd/commands-maintenance.ts
- src/resources/extensions/gsd/markdown-renderer.ts
- src/resources/extensions/gsd/auto-recovery.ts
- src/resources/extensions/gsd/tests/parsers.test.ts
2026-03-23 12:53:49 -06:00
github-actions[bot]
b67ba7c086 release: v2.43.0 2026-03-23 18:50:53 +00:00
TÂCHES
3af95e601b chore(M001/S06): auto-commit after plan-slice 2026-03-23 12:35:52 -06:00
TÂCHES
aabd34fdd3 chore(M001/S06): auto-commit after research-slice 2026-03-23 12:27:45 -06:00
TÂCHES
f9c4d6bedc chore(M001/S05): auto-commit after complete-slice 2026-03-23 12:23:04 -06:00
TÂCHES
460f6f3933 feat(S05/T04): Migrate remaining 6 callers (auto-prompts, auto-recovery…
- src/resources/extensions/gsd/auto-prompts.ts
- src/resources/extensions/gsd/auto-recovery.ts
- src/resources/extensions/gsd/auto-direct-dispatch.ts
- src/resources/extensions/gsd/auto-worktree.ts
- src/resources/extensions/gsd/reactive-graph.ts
- src/resources/extensions/gsd/markdown-renderer.ts
2026-03-23 12:17:23 -06:00
TÂCHES
06a876676a feat(S05/T03): Migrate 7 warm/cold callers (doctor, doctor-checks, visu…
- src/resources/extensions/gsd/doctor.ts
- src/resources/extensions/gsd/doctor-checks.ts
- src/resources/extensions/gsd/visualizer-data.ts
- src/resources/extensions/gsd/workspace-index.ts
- src/resources/extensions/gsd/dashboard-overlay.ts
- src/resources/extensions/gsd/auto-dashboard.ts
- src/resources/extensions/gsd/guided-flow.ts
2026-03-23 12:07:01 -06:00
TÂCHES
4d3ccb5b08 feat(S05/T02): Extend migrateHierarchyToDb to populate v8 planning colu…
- src/resources/extensions/gsd/md-importer.ts
- src/resources/extensions/gsd/tests/gsd-recover.test.ts
2026-03-23 11:52:46 -06:00
mastertyko
b3d12628f9 fix: prevent banner from printing twice on first run (#2251)
On first launch (before ~/.gsd/ exists), loader.ts prints a branded
ASCII logo and welcome message. Later, cli.ts unconditionally calls
printWelcomeScreen(), resulting in a duplicate banner.

Set GSD_FIRST_RUN_BANNER env flag in loader.ts after printing the
first-run banner. cli.ts now checks for this flag and skips the
welcome screen when it is already set.

The session-restart banner in register-hooks.ts is unaffected because
it only fires on non-first sessions (isFirstSession guard).

Closes #2245
2026-03-23 11:51:08 -06:00
TÂCHES
012f1cf06a fix(test): Windows CI — use double quotes in git commit message (#2252)
The symlink test used single quotes in a commit message
(`-m 'add gitignore'`) inside a `&&`-chained shell command. On Windows,
`cmd.exe` doesn't treat single quotes as string delimiters, so git
received a mangled pathspec `gitignore'`. Split into two separate `run()`
calls with double-quoted commit message, matching every other test in
the file.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 11:49:50 -06:00
TÂCHES
64908fc822 feat(S05/T01): Schema v10 adds replan_triggered_at column; deriveStateF…
- src/resources/extensions/gsd/gsd-db.ts
- src/resources/extensions/gsd/state.ts
- src/resources/extensions/gsd/triage-resolution.ts
- src/resources/extensions/gsd/tests/flag-file-db.test.ts
- src/resources/extensions/gsd/tests/derive-state-db.test.ts
2026-03-23 11:46:28 -06:00
TÂCHES
b8aaded95e chore(M001/S05): auto-commit after plan-slice 2026-03-23 11:37:37 -06:00
TÂCHES
4f829131f6 chore(M001/S05): auto-commit after research-slice 2026-03-23 11:29:45 -06:00
TÂCHES
953598524d fix(async-jobs): suppress duplicate follow-up for awaited job results (#2248) (#2250)
When await_job consumed async job results, onJobComplete still fired
follow-up messages for each job. Each follow-up triggered a wasteful
LLM turn where the agent could only say "Already captured...".

Add an `awaited` flag to Job. await_job sets it on all watched jobs
before waiting (avoiding a race with the promise .then() callback).
onJobComplete skips follow-up delivery for awaited jobs. Fire-and-forget
jobs still get follow-up messages as before.

Closes #2248

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 11:28:53 -06:00
TÂCHES
6e94a5693d chore(M001/S04): auto-commit after complete-slice 2026-03-23 11:22:11 -06:00
TÂCHES
d7994a1538 fix(S04/T04): Add planning-crossval tests proving DB↔rendered↔parsed pa…
- src/resources/extensions/gsd/tests/planning-crossval.test.ts
- src/resources/extensions/gsd/markdown-renderer.ts
- .gsd/milestones/M001/slices/S04/tasks/T04-PLAN.md
2026-03-23 11:16:24 -06:00
TÂCHES
93e46c3712 feat(S04/T03): Migrate auto-dispatch.ts (3 rules), auto-verification.ts…
- src/resources/extensions/gsd/auto-dispatch.ts
- src/resources/extensions/gsd/auto-verification.ts
- src/resources/extensions/gsd/parallel-eligibility.ts
- .gsd/milestones/M001/slices/S04/tasks/T03-PLAN.md
2026-03-23 11:09:38 -06:00
TÂCHES
08c3fcc57c feat(S04/T02): Migrate dispatch-guard.ts to DB queries with isDbAvailab…
- src/resources/extensions/gsd/dispatch-guard.ts
- src/resources/extensions/gsd/tests/dispatch-guard.test.ts
- .gsd/milestones/M001/slices/S04/tasks/T02-PLAN.md
2026-03-23 11:03:42 -06:00
TÂCHES
61c9e62d37 fix(gsd): remove force-staging of .gsd/milestones/ through symlinks (#2247) (#2249)
smartStage() was using git hash-object + update-index to bypass .gitignore
and force-stage .gsd/milestones/ files when .gsd is a symlink. This
contradicts the external state design (symlink = state lives outside repo)
and the documented deprecation of commit_docs.

Remove the force-add block, finish the commit_docs deprecation in
auto-prompts (always emit "do not commit"), and clean up the commitDocs
parameter from all call sites. The deprecation warning in
preferences-validation remains so users are told to remove the setting.

Closes #2247

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 11:00:02 -06:00
TÂCHES
f86882bde5 fix(S04/T01): Add schema v9 migration with sequence column on slices/ta…
- src/resources/extensions/gsd/gsd-db.ts
- src/resources/extensions/gsd/tests/schema-v9-sequence.test.ts
- .gsd/milestones/M001/slices/S04/S04-PLAN.md
- .gsd/milestones/M001/slices/S04/tasks/T01-PLAN.md
2026-03-23 10:57:27 -06:00
TÂCHES
b73f525834 docs(S04): add slice plan 2026-03-23 10:52:22 -06:00
TÂCHES
5d93a71374 chore(M001/S04): auto-commit after research-slice 2026-03-23 10:45:24 -06:00
TÂCHES
50cc29f93b chore(M001/S03): auto-commit after complete-slice 2026-03-23 10:41:21 -06:00
TÂCHES
356d54431e test(S03/T03): Register gsd_replan_slice and gsd_reassess_roadmap tools…
- src/resources/extensions/gsd/bootstrap/db-tools.ts
- src/resources/extensions/gsd/prompts/replan-slice.md
- src/resources/extensions/gsd/prompts/reassess-roadmap.md
- src/resources/extensions/gsd/tests/prompt-contracts.test.ts
2026-03-23 10:37:08 -06:00
TÂCHES
46c5d37a8d test(S03/T02): Implement reassess_roadmap handler with structural enfor…
- src/resources/extensions/gsd/tools/reassess-roadmap.ts
- src/resources/extensions/gsd/tests/reassess-handler.test.ts
- src/resources/extensions/gsd/gsd-db.ts
2026-03-23 10:33:13 -06:00
TÂCHES
b8b441fce4 fix: remove .gsd/ milestone artifacts from git index
These files were being force-staged through the symlink by
_forceAddMilestoneArtifacts() bypassing .gitignore. External state
projects should not have .gsd/ in version control.
2026-03-23 10:29:22 -06:00
TÂCHES
1acf1a6f57 test(S03/T01): Implement replan_slice handler with structural enforceme…
- src/resources/extensions/gsd/gsd-db.ts
- src/resources/extensions/gsd/markdown-renderer.ts
- src/resources/extensions/gsd/tools/replan-slice.ts
- src/resources/extensions/gsd/tests/replan-handler.test.ts
- .gsd/milestones/M001/slices/S03/S03-PLAN.md
2026-03-23 10:28:33 -06:00
TÂCHES
6ffa069f2f chore(M001/S03): auto-commit after plan-slice 2026-03-23 10:24:49 -06:00
TÂCHES
e7e22d5eca fix(gsd): remove over-broad skill activation heuristic (#2239) (#2244)
Remove the blanket loop that auto-activated every visible skill whose
name/description substring-matched tokens from extraContext and
taskPlanContent. This caused 32+ irrelevant skills (xcode-build,
ableton-lom, etc.) to load every auto-mode turn.

Skill activation now uses only explicit preference sources:
always_use_skills, skill_rules, prefer_skills, and skills_used from
task plan frontmatter.

Closes #2239

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 10:19:28 -06:00
TÂCHES
c5305805b5 chore(M001/S03): auto-commit after research-slice 2026-03-23 10:17:47 -06:00
TÂCHES
8e946013f3 chore(M001/S02): auto-commit after complete-slice 2026-03-23 10:14:16 -06:00
TÂCHES
d53bf56bae test(S02/T03): Update plan-slice prompt to explicitly name gsd_plan_sli…
- src/resources/extensions/gsd/prompts/plan-slice.md
- src/resources/extensions/gsd/tests/prompt-contracts.test.ts
- src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts
- .gsd/milestones/M001/slices/S02/tasks/T03-PLAN.md
2026-03-23 10:08:44 -06:00
TÂCHES
a380b8ed77 test(S02/T02): Implement DB-backed gsd_plan_slice and gsd_plan_task han…
- .gsd/milestones/M001/slices/S02/S02-PLAN.md
- src/resources/extensions/gsd/tools/plan-slice.ts
- src/resources/extensions/gsd/tools/plan-task.ts
- src/resources/extensions/gsd/bootstrap/db-tools.ts
- src/resources/extensions/gsd/gsd-db.ts
- src/resources/extensions/gsd/tests/plan-slice.test.ts
- src/resources/extensions/gsd/tests/plan-task.test.ts
2026-03-23 10:05:11 -06:00
Tom Boucher
e0c203c3e4 docs: update documentation for v2.42.0 release (#2093)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 10:03:32 -06:00
Tom Boucher
297845f10c fix(auth): fall through to env/fallback when OAuth credential has no registered provider (#2097)
Fixes #2083

When an OpenRouter API key is stored in auth.json as type:"oauth" (instead
of type:"api_key"), getApiKey() calls getOAuthProvider("openrouter") which
returns undefined — OpenRouter is not a registered OAuth provider. Previously,
resolveCredentialApiKey returned undefined and getApiKey returned that directly,
never reaching the env-var or fallback-resolver paths.

Now, when resolveCredentialApiKey returns undefined, getApiKey falls through
to OPENROUTER_API_KEY env var and the fallback resolver instead of silently
failing with "Authentication failed."

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 10:03:05 -06:00
Tom Boucher
f4ee51017a perf: startup optimizations — pre-compiled extensions, compile cache, batch discovery (#2125)
Skip jiti JIT compilation for bundled extensions that have pre-compiled .js
siblings, enable V8 bytecode caching on Node 22+, and batch directory
discovery to reduce syscalls during resource loading.

Fixes #2108

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 10:02:30 -06:00
TÂCHES
752b26d542 test(S02/T01): Add DB-backed slice and task plan renderers with compati…
- src/resources/extensions/gsd/markdown-renderer.ts
- src/resources/extensions/gsd/tests/markdown-renderer.test.ts
- src/resources/extensions/gsd/tests/auto-recovery.test.ts
- .gsd/KNOWLEDGE.md
2026-03-23 09:58:52 -06:00