Commit graph

208 commits

Author SHA1 Message Date
Lex Christopherson
4e92a49d45 docs(M002): context, requirements, and roadmap 2026-03-12 14:01:07 -06:00
Lex Christopherson
ad2931a521 2.5.0 2026-03-12 13:24:24 -06:00
Lex Christopherson
57e118c144 docs: update changelog for v2.5.0 2026-03-12 13:24:20 -06:00
Lex Christopherson
b17ab25aaa chore: remove .gsd/ from tracking (already in .gitignore) 2026-03-12 13:21:18 -06:00
Lex Christopherson
cd01a47461 feat(M001/S06): Cleanup and archive 2026-03-12 13:21:18 -06:00
Lex Christopherson
d43322c45d feat(M001/S05): Enhanced features — merge guards, snapshots, auto-push, rich commits 2026-03-12 13:21:18 -06:00
Lex Christopherson
d9d773e44e feat(M001/S04): Remove git commands from prompts 2026-03-12 13:21:05 -06:00
Lex Christopherson
b2e7dbdc25 feat(M001/S03): Bug fixes and doc corrections 2026-03-12 13:21:05 -06:00
Lex Christopherson
dfe9527641 feat(M001/S02): Wire GitService into codebase 2026-03-12 13:21:05 -06:00
Lex Christopherson
91cf23a634 fix(auto): prevent state machine deadlock when units fail to produce artifacts
Three fixes to the dispatch loop:

1. Don't mark a unit complete when the next dispatch is the same unit
   (retry scenario) — let the retry mechanism handle it instead of
   persisting a false completion.

2. Verify expected artifact exists on disk before marking a unit
   complete. Uses resolveExpectedArtifactPath + existsSync to gate
   persistCompletedKey calls.

3. Cross-validate idempotency: when skipping a "completed" unit, verify
   the artifact actually exists. If missing, remove the stale record
   from completed-units.json and re-run the unit.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 13:21:05 -06:00
TÂCHES
108f6b4f1d Merge pull request #79 from FacuVCanale/feat/native-web-search
feat: native Anthropic web search via before_provider_request hook
2026-03-12 11:56:00 -06:00
Lex Christopherson
428865a149 chore: auto-commit before switching to gsd/M001/S02 2026-03-12 11:31:04 -06:00
Lex Christopherson
ebacc5ad88 chore(M001/S02): auto-commit after complete-slice 2026-03-12 11:19:31 -06:00
Lex Christopherson
71984a8f0f 2.4.0 2026-03-12 11:16:20 -06:00
Lex Christopherson
f8c33aeea9 docs: update changelog for v2.4.0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 11:16:12 -06:00
Lex Christopherson
631b2e0b86 docs: mention Pi credential migration in first launch section
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 11:14:16 -06:00
TÂCHES
352c55b70d Merge pull request #123 from gsd-build/fix/122-pi-provider-migration
feat: migrate provider credentials from existing Pi install
2026-03-12 11:10:19 -06:00
Lex Christopherson
b72d852771 feat: migrate provider credentials from existing Pi install
Closes #122

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 11:08:34 -06:00
Lex Christopherson
54f79b7a31 Merge feat/lean-system-prompt: 48% system prompt compression 2026-03-12 11:07:33 -06:00
Lex Christopherson
574acae114 refactor(prompts): compress system prompt from 360 to 187 lines
Cut 48% of system prompt token cost while preserving all load-bearing content:
- Remove Activity Logs section (agent never interacts with these)
- Remove Investigation escalation ladder (redundant with tool-routing)
- Remove Context economy section (obvious/redundant)
- Remove Web research vs browser execution (compressed into playbooks)
- Compress tool-routing to non-obvious entries only (scout, bg_shell, Context7)
- Compress Ask vs infer to core rule
- Compress Code structure to 5 key principles
- Compress Verification to inline task-type table
- Compress Agent-First Observability (character block carries the why)
- Compress Background processes playbook from 30 to 5 lines
- Compress Web behavior playbook from 25 to 6 lines
- Compress Libraries and Current facts into single section
- Remove BRAVE_API_KEY config (user-facing, not agent-facing)
2026-03-12 11:07:26 -06:00
Lex Christopherson
fa6d085eb7 Merge feat/gsd-craft-standards: security, completeness, observability 2026-03-12 10:58:43 -06:00
Lex Christopherson
4855d0a37b feat(prompts): add craft standards, completeness, and self-debugging awareness
Three additions to the GSD character block:
- Security/performance/elegance as craft instinct, not checkbox compliance
- Anti-laziness: finish what you start, no stubs, no 80% features, no skipped error handling
- Self-debugging awareness: you write code you will debug later with no memory of writing it
2026-03-12 10:58:38 -06:00
Lex Christopherson
f6dfffb61e feat(M001/S01): GitService core implementation 2026-03-12 10:56:10 -06:00
Lex Christopherson
454f104747 Merge feat/gsd-character: craftsman-engineer identity for GSD 2026-03-12 10:53:29 -06:00
Lex Christopherson
d8612ab15e feat(prompts): define GSD character and consolidate communication style
Replace the generic agent intro with a craftsman-engineer character
definition: curious about problems, warm but terse, co-owner during
planning, committed executor during auto-mode. Consolidate the
scattered Communication and Writing Style + Work Narration sections
into a single focused Communication section that preserves all
calibration signals (pushback triggers, narration examples, uncertainty
handling).
2026-03-12 10:53:23 -06:00
Facu_Viñas
a595b9e28e fix: prevent duplicate tools on provider toggle, suppress restore notifications, fix Windows test globs
- Prevent duplicate Brave tool entries when toggling providers repeatedly
  by filtering already-active tools before re-adding (BUG-1)
- Remove single quotes from test glob patterns in package.json so Windows
  shell expands them correctly (BUG-2)
- Fix test mock fire() to call all handlers instead of short-circuiting
  on first match, matching real framework behavior (BUG-3)
- Suppress "Native Anthropic web search active" notification on session
  restore (source: "restore") to reduce UX noise (BUG-4)
- Add regression tests for all 4 bugs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 13:50:03 -03:00
Facu_Viñas
e22a2f7622 fix: remove Brave search tools from API payload when no BRAVE_API_KEY
The model_select event doesn't reliably fire on startup, so Brave tools
remained visible to Claude even without a key. Now before_provider_request
filters search-the-web and search_and_read from the payload directly,
ensuring Claude only sees the native web_search tool.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 13:50:03 -03:00
Facu_Viñas
2252a6dfca fix: strip thinking blocks from history to fix conversation replay error
The Pi SDK's streaming parser drops server_tool_use and
web_search_tool_result content blocks. When the conversation is replayed,
assistant messages are incomplete, causing the Anthropic API to reject
requests with "thinking blocks cannot be modified."

Fix: stripThinkingFromHistory() removes thinking/redacted_thinking blocks
from all assistant messages before sending, since they're all from stored
history. The model generates fresh thinking for each new turn.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 13:50:03 -03:00
Facu_Viñas
4ba7930240 test: add tests for native Anthropic web search hook logic
12 tests covering: tool injection for claude models, non-claude passthrough,
double-injection prevention, tool deactivation/reactivation on model switch,
and session_start diagnostics.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 13:50:02 -03:00
Facu_Viñas
2a89b3f56c feat: add native Anthropic web search via before_provider_request hook
Inject the web_search_20250305 server-side tool into Anthropic API
requests, eliminating the BRAVE_API_KEY requirement for Anthropic models.
When Anthropic + no Brave key, custom search tools are disabled to avoid
confusing the LLM with broken tools. fetch_page (Jina) is unaffected.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 13:49:03 -03:00
Lex Christopherson
e438f775e3 Merge branch 'worktree-agent-aca4a27a' 2026-03-12 10:47:17 -06:00
Lex Christopherson
f4b1d888d6 fix(extension): guard ctx.ui.theme access for RPC mode (#121)
Theme proxy throws when accessed in RPC mode since initTheme() is
never called without a TUI. Wrap header rendering in try/catch so
the GSD extension loads cleanly in both TUI and RPC modes.

Closes #121

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 10:44:55 -06:00
Lex Christopherson
b3f18401c4 Merge feat/work-narration: add work narration to prompts 2026-03-12 10:37:41 -06:00
Lex Christopherson
e9e22b4007 feat(prompts): add work narration instructions to system and phase prompts
Adds a Work Narration section to system.md and per-phase hints to
research, plan, and execute prompts. Instructs the LLM to emit brief
status messages between tool calls covering decisions, discoveries,
phase transitions, and verification results — without narrating
routine reads or trivial commands.
2026-03-12 10:37:37 -06:00
Lex Christopherson
077542994c chore: auto-commit before switching to gsd/M001/S01 2026-03-12 10:27:39 -06:00
Lex Christopherson
f18a547e05 docs(M001): context, requirements, and roadmap 2026-03-12 10:27:34 -06:00
Lex Christopherson
2a5c270bb0 2.3.11 2026-03-12 10:06:22 -06:00
Lex Christopherson
c6b3019504 docs: update changelog for v2.3.11 2026-03-12 10:06:13 -06:00
Lex Christopherson
19fe2c2a50 docs: update README for onboarding wizard and gsd config 2026-03-12 10:03:20 -06:00
TÂCHES
e93a44d967 feat: add clack-based onboarding wizard and gsd config command (#118)
Replace the plain-text API-key-only wizard with a branded, clack-based
onboarding experience that guides first-launch users through LLM provider
authentication (OAuth or API key), optional tool API keys, and a summary.

- Create src/logo.ts as single source of truth for ASCII logo
- Create src/onboarding.ts with shouldRunOnboarding() and runOnboarding()
- Trim src/wizard.ts to env hydration only (loadStoredEnvKeys)
- Wire onboarding into src/cli.ts, add `gsd config` subcommand
- Remove duplicate first-launch banner from src/loader.ts

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 10:02:00 -06:00
Lex Christopherson
56f079009b fix: remove 200-char truncation on parallel subagent results
Parallel mode was slicing each agent's output to 200 characters before
returning to the parent agent, destroying researcher/scout findings.
Single and chain modes already return full output — this aligns parallel.

Closes #116

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 09:43:37 -06:00
Lex Christopherson
e554490de1 chore: remove failing npm publish workflow
Publishing handled manually via /publish-version command.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 09:23:22 -06:00
Lex Christopherson
17a409f8cb 2.3.10 2026-03-12 09:21:38 -06:00
Lex Christopherson
f9c0c23c08 docs: update changelog for v2.3.10
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 09:21:33 -06:00
Lex Christopherson
0dc0ccbacb fix: show slash-command fallback when terminal lacks Ctrl+Alt support
Terminals like macOS Terminal.app and JetBrains IDEs don't support
the Kitty keyboard protocol, so Ctrl+Alt shortcuts silently fail.
Shortcut descriptions now detect unsupported terminals and surface
the equivalent slash command (e.g. /gsd status, /bg, /voice).

Closes #100, closes #104

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 09:20:10 -06:00
TÂCHES
46c88e6494 feat: branded postinstall with @clack/prompts (#115)
* feat: branded postinstall with @clack/prompts

Replace raw ANSI ASCII art dump with structured, branded installer
flow using @clack/prompts and picocolors:

- Branded intro header with product name and version
- Animated spinners during patch and Playwright install steps
- Subprocess output captured (no more raw npm/Playwright noise)
- Boxed summary note with status indicators (✓/⚠)
- Clean outro with next-step instructions
- Graceful fallback to minimal output if clack unavailable
- All output routed to stderr for npm lifecycle visibility
- Async subprocess execution (not execSync) so spinners animate

* fix: restore ASCII banner alongside clack postinstall UI

The branded ASCII art banner is a key differentiator. Keep it as the
first thing users see, then follow with clack spinner steps for the
setup progress. Fallback path also simplified since the banner already
shows the version.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 09:18:13 -06:00
Lex Christopherson
2a292e1981 2.3.9 2026-03-12 09:08:46 -06:00
Lex Christopherson
934a55463c docs: update changelog for v2.3.9
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 09:08:40 -06:00
Lex Christopherson
98d9b63894 docs: update README for v2.3.9 — add Tavily search provider
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 09:06:08 -06:00
Lex Christopherson
19bfcd797c fix: address review nits from #113 merge
- Fix misleading "atomically" comment on persistCompletedKey
- Consolidate duplicate "(attempt N)" strings in recovery notifications
- Add setImmediate yield in idempotency skip to prevent tight recursion

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 09:03:00 -06:00