gsd-pi 2.3.7 → 2.3.9

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 (37) hide show
  1. package/README.md +5 -2
  2. package/dist/cli.js +32 -2
  3. package/dist/logo.d.ts +16 -0
  4. package/dist/logo.js +25 -0
  5. package/dist/onboarding.d.ts +43 -0
  6. package/dist/onboarding.js +425 -0
  7. package/dist/wizard.js +8 -0
  8. package/package.json +1 -1
  9. package/scripts/postinstall.js +38 -9
  10. package/src/resources/GSD-WORKFLOW.md +2 -2
  11. package/src/resources/extensions/google-search/index.ts +1 -1
  12. package/src/resources/extensions/gsd/auto.ts +393 -168
  13. package/src/resources/extensions/gsd/files.ts +9 -7
  14. package/src/resources/extensions/gsd/index.ts +57 -2
  15. package/src/resources/extensions/gsd/metrics.ts +7 -5
  16. package/src/resources/extensions/gsd/migrate/command.ts +4 -1
  17. package/src/resources/extensions/gsd/migrate/validator.ts +5 -3
  18. package/src/resources/extensions/gsd/prompts/system.md +1 -1
  19. package/src/resources/extensions/gsd/tests/migrate-parser.test.ts +5 -5
  20. package/src/resources/extensions/gsd/tests/migrate-validator-parsers.test.ts +3 -3
  21. package/src/resources/extensions/gsd/tests/parsers.test.ts +94 -0
  22. package/src/resources/extensions/gsd/tests/resolve-ts-hooks.mjs +23 -6
  23. package/src/resources/extensions/gsd/tests/worktree-integration.test.ts +253 -0
  24. package/src/resources/extensions/gsd/tests/worktree.test.ts +116 -1
  25. package/src/resources/extensions/gsd/unit-runtime.ts +22 -1
  26. package/src/resources/extensions/gsd/workspace-index.ts +2 -2
  27. package/src/resources/extensions/gsd/worktree-command.ts +147 -41
  28. package/src/resources/extensions/gsd/worktree.ts +105 -8
  29. package/src/resources/extensions/mcporter/index.ts +21 -2
  30. package/src/resources/extensions/search-the-web/command-search-provider.ts +95 -0
  31. package/src/resources/extensions/search-the-web/http.ts +1 -1
  32. package/src/resources/extensions/search-the-web/index.ts +9 -3
  33. package/src/resources/extensions/search-the-web/provider.ts +118 -0
  34. package/src/resources/extensions/search-the-web/tavily.ts +116 -0
  35. package/src/resources/extensions/search-the-web/tool-llm-context.ts +265 -108
  36. package/src/resources/extensions/search-the-web/tool-search.ts +161 -88
  37. package/src/resources/extensions/subagent/index.ts +1 -1
@@ -33,23 +33,52 @@ const banner =
33
33
  ` ${green}✓${reset} Installed successfully\n` +
34
34
  ` ${dim}Run ${reset}${cyan}gsd${reset}${dim} to get started.${reset}\n`
35
35
 
36
+ function run(command, options = {}) {
37
+ return execSync(command, {
38
+ cwd: resolve(__dirname, '..'),
39
+ encoding: 'utf8',
40
+ stdio: ['ignore', 'pipe', 'pipe'],
41
+ ...options,
42
+ })
43
+ }
44
+
45
+ function printCaptured(output) {
46
+ if (output) process.stderr.write(output)
47
+ }
48
+
36
49
  process.stderr.write(banner)
37
50
 
38
51
  // Apply patches to upstream dependencies (non-fatal)
39
52
  try {
40
- execSync('npx patch-package', { stdio: 'inherit', cwd: resolve(__dirname, '..') })
53
+ const output = run('npx patch-package')
54
+ printCaptured(output)
41
55
  process.stderr.write(`\n ${green}✓${reset} Patches applied\n`)
42
- } catch {
56
+ } catch (error) {
57
+ printCaptured(error.stdout)
58
+ printCaptured(error.stderr)
43
59
  process.stderr.write(`\n ${yellow}⚠${reset} Failed to apply patches — run ${cyan}npx patch-package${reset} manually\n`)
44
60
  }
45
61
 
46
- // Install Playwright chromium for browser tools (non-fatal)
62
+ // Install Playwright chromium for browser tools (non-fatal).
63
+ // We intentionally avoid --with-deps here because install scripts should not
64
+ // block on interactive sudo prompts. Playwright validates host requirements
65
+ // after download; if Linux libs are missing, suggest the explicit follow-up.
47
66
  try {
48
- execSync('npx playwright install chromium', { stdio: 'inherit' })
67
+ const output = run('npx playwright install chromium')
68
+ printCaptured(output)
49
69
  process.stderr.write(`\n ${green}✓${reset} Browser tools ready\n\n`)
50
- } catch {
51
- const hint = os.platform() === 'linux'
52
- ? `${cyan}npx playwright install --with-deps chromium${reset}`
53
- : `${cyan}npx playwright install chromium${reset}`
54
- process.stderr.write(`\n ${yellow}⚠${reset} Browser tools unavailable run ${hint} to enable\n\n`)
70
+ } catch (error) {
71
+ const output = `${error.stdout ?? ''}${error.stderr ?? ''}`
72
+ printCaptured(output)
73
+
74
+ if (os.platform() === 'linux' && output.includes('Host system is missing dependencies to run browsers.')) {
75
+ process.stderr.write(
76
+ `\n ${yellow}⚠${reset} Browser downloaded, but Linux system dependencies are missing.\n` +
77
+ ` ${dim}Run ${reset}${cyan}sudo npx playwright install-deps chromium${reset}${dim} to finish setup.${reset}\n\n`
78
+ )
79
+ } else {
80
+ process.stderr.write(
81
+ `\n ${yellow}⚠${reset} Browser tools unavailable — run ${cyan}npx playwright install chromium${reset} to enable\n\n`
82
+ )
83
+ }
55
84
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  > This document teaches you how to operate the GSD planning methodology manually using files on disk.
4
4
  >
5
- > **When to read this:** At the start of any session working on GSD-managed work, or when told `read @GSD-WORKFLOW.md`.
5
+ > **When to read this:** At the start of any session working on GSD-managed work, or when loaded by `/gsd`.
6
6
  >
7
7
  > **After reading this, always read `.gsd/state.md` to find out what's next.**
8
8
  > If the milestone has a `context.md`, read that too — it contains project-specific decisions, reference paths, and implementation guidance that this generic methodology doc does not.
@@ -656,6 +656,6 @@ This methodology doc is generic. Project-specific guidance belongs in the milest
656
656
 
657
657
  If you sense context pressure (many files read, long execution, lots of tool output):
658
658
 
659
- 1. **If mid-task:** Write `continue.md` with exact resume state. Tell the user: "Context is getting full. I've saved progress to continue.md. Start a new session and say `read @GSD-WORKFLOW.md - what's next?`"
659
+ 1. **If mid-task:** Write `continue.md` with exact resume state. Tell the user: "Context is getting full. I've saved progress to continue.md. Start a new session and run `/gsd` to pick up where you left off, or `/gsd auto` to resume in auto-execution mode."
660
660
  2. **If between tasks:** Just update `state.md` with the next action. No continue file needed — the next session will read state.md and pick up the next task cleanly.
661
661
  3. **Don't fight it.** The whole system is designed for this. A fresh session with the right files loaded is better than a stale session with degraded reasoning.
@@ -141,7 +141,7 @@ export default function (pi: ExtensionAPI) {
141
141
  try {
142
142
  const ai = getClient();
143
143
  const response = await ai.models.generateContent({
144
- model: "gemini-3-flash-preview",
144
+ model: process.env.GEMINI_SEARCH_MODEL || "gemini-2.5-flash",
145
145
  contents: params.query,
146
146
  config: {
147
147
  tools: [{ googleSearch: {} }],