gsd-pi 0.1.1 → 0.1.3

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.
package/README.md CHANGED
@@ -15,10 +15,7 @@ This version is different. GSD is now a standalone CLI built on the [Pi SDK](htt
15
15
 
16
16
  One command. Walk away. Come back to a built project with clean git history.
17
17
 
18
- ```bash
19
- npm install -g gsd-pi
20
- gsd
21
- ```
18
+ <pre><code>npm install -g gsd-pi</code></pre>
22
19
 
23
20
  </div>
24
21
 
@@ -124,43 +121,55 @@ The wizard is the on-ramp. Auto mode is the highway.
124
121
  npm install -g gsd-pi
125
122
  ```
126
123
 
127
- Requires Node.js ≥ 20.6.0. Installs Chromium via Playwright for browser-based verification (non-fatal if it fails).
124
+ ### Use it
128
125
 
129
- ### First Run
126
+ Open a terminal in your project and run:
130
127
 
131
128
  ```bash
132
- cd your-project
133
129
  gsd
134
130
  ```
135
131
 
136
- On first launch, GSD prompts for optional API keys:
137
- - **Brave Search** — for web research during planning
138
- - **Context7** — for up-to-date library documentation
139
- - **Jina** — for web page content extraction
132
+ GSD opens an interactive agent session. From there, you have two ways to work:
140
133
 
141
- All optional. Press Enter to skip any. Keys are stored in `~/.gsd/agent/auth.json` and loaded automatically on subsequent launches.
134
+ **`/gsd` — guided mode.** Type `/gsd` and GSD reads your project state and walks you through whatever's next. No project yet? It helps you describe what you want to build. Roadmap exists? It plans the next slice. Mid-task? It resumes. This is the hands-on mode where you work *with* the agent step by step.
142
135
 
143
- ### Start Building
136
+ **`/gsd auto` — autonomous mode.** Type `/gsd auto` and walk away. GSD researches, plans, executes, verifies, commits, and advances through every slice until the milestone is complete. Fresh context window per task. No babysitting.
144
137
 
145
- The wizard walks you through describing what you want to build. Once you approve the roadmap:
138
+ ### Two terminals, one project
146
139
 
147
- ```
140
+ The real workflow: run auto mode in one terminal, steer from another.
141
+
142
+ **Terminal 1 — let it build**
143
+ ```bash
144
+ gsd
148
145
  /gsd auto
149
146
  ```
150
147
 
151
- Walk away. GSD will research, plan, execute, verify, commit, and advance through every slice until the milestone is complete.
148
+ **Terminal 2 steer while it works**
149
+ ```bash
150
+ gsd
151
+ /gsd discuss # talk through architecture decisions
152
+ /gsd status # check progress
153
+ /gsd queue # queue the next milestone
154
+ ```
155
+
156
+ Both terminals read and write the same `.gsd/` files on disk. Your decisions in terminal 2 are picked up automatically at the next phase boundary — no need to stop auto mode.
157
+
158
+ ### First launch
159
+
160
+ On first run, GSD prompts for optional API keys (Brave Search, Context7, Jina) for web research and documentation tools. All optional — press Enter to skip any.
152
161
 
153
162
  ### Commands
154
163
 
155
164
  | Command | What it does |
156
165
  |---------|-------------|
157
- | `/gsd` | Contextual wizard — reads state, shows what's next |
158
- | `/gsd auto` | Start auto mode (fresh session per unit, loops until done) |
166
+ | `/gsd` | Guided mode — reads project state, walks you through what's next |
167
+ | `/gsd auto` | Autonomous mode researches, plans, executes, commits, repeats |
159
168
  | `/gsd stop` | Stop auto mode gracefully |
160
- | `/gsd status` | Progress dashboard overlay |
169
+ | `/gsd discuss` | Discuss architecture and decisions (works alongside auto mode) |
170
+ | `/gsd status` | Progress dashboard |
161
171
  | `/gsd queue` | Queue future milestones (safe during auto mode) |
162
- | `/gsd discuss` | Discuss implementation decisions before planning |
163
- | `/gsd prefs` | Manage skill preferences (global/project) |
172
+ | `/gsd prefs` | Model selection, timeouts, budget ceiling |
164
173
  | `/gsd doctor` | Validate `.gsd/` integrity, find and fix issues |
165
174
  | `Ctrl+Alt+G` | Toggle dashboard overlay |
166
175
 
package/dist/wizard.js CHANGED
@@ -61,6 +61,7 @@ async function promptMasked(question) {
61
61
  export function loadStoredEnvKeys(authStorage) {
62
62
  const providers = [
63
63
  ['brave', 'BRAVE_API_KEY'],
64
+ ['brave_answers', 'BRAVE_ANSWERS_KEY'],
64
65
  ['context7', 'CONTEXT7_API_KEY'],
65
66
  ['jina', 'JINA_API_KEY'],
66
67
  ];
@@ -87,13 +88,15 @@ export function loadStoredEnvKeys(authStorage) {
87
88
  */
88
89
  export async function runWizardIfNeeded(authStorage) {
89
90
  const needsBrave = !authStorage.has('brave') && !process.env.BRAVE_API_KEY;
91
+ const needsBraveAnswers = !authStorage.has('brave_answers') && !process.env.BRAVE_ANSWERS_KEY;
90
92
  const needsContext7 = !authStorage.has('context7') && !process.env.CONTEXT7_API_KEY;
91
93
  const needsJina = !authStorage.has('jina') && !process.env.JINA_API_KEY;
92
- if (!needsBrave && !needsContext7 && !needsJina) {
94
+ if (!needsBrave && !needsBraveAnswers && !needsContext7 && !needsJina) {
93
95
  return;
94
96
  }
95
97
  const missing = [
96
98
  needsBrave && 'Brave Search',
99
+ needsBraveAnswers && 'Brave Answers',
97
100
  needsContext7 && 'Context7',
98
101
  needsJina && 'Jina',
99
102
  ]
@@ -108,12 +111,19 @@ export async function runWizardIfNeeded(authStorage) {
108
111
  process.stdout.write(`\n[gsd] Some optional tool API keys are not configured: ${missing}\n`);
109
112
  process.stdout.write('[gsd] Press Enter to skip any key you want to set up later.\n\n');
110
113
  if (needsBrave) {
111
- const key = await promptMasked('Brave Search API key (optional): ');
114
+ const key = await promptMasked('Brave Search API key (optional, for web search + LLM context): ');
112
115
  if (key) {
113
116
  authStorage.set('brave', { type: 'api_key', key });
114
117
  process.env.BRAVE_API_KEY = key;
115
118
  }
116
119
  }
120
+ if (needsBraveAnswers) {
121
+ const key = await promptMasked('Brave Answers API key (optional, for AI-generated answers): ');
122
+ if (key) {
123
+ authStorage.set('brave_answers', { type: 'api_key', key });
124
+ process.env.BRAVE_ANSWERS_KEY = key;
125
+ }
126
+ }
117
127
  if (needsContext7) {
118
128
  const key = await promptMasked('Context7 API key (optional): ');
119
129
  if (key) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gsd-pi",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "GSD — Get Stuff Done coding agent",
5
5
  "license": "BUSL-1.1",
6
6
  "repository": {
@@ -49,16 +49,18 @@ export default function (pi: ExtensionAPI) {
49
49
  pi.on("session_start", async (_event, ctx) => {
50
50
  const hasBrave = !!process.env.BRAVE_API_KEY;
51
51
  const hasJina = !!process.env.JINA_API_KEY;
52
+ const hasAnswers = !!process.env.BRAVE_ANSWERS_KEY;
52
53
 
53
54
  if (!hasBrave) {
54
55
  ctx.ui.notify(
55
- "Web search: Set BRAVE_API_KEY for web search capability",
56
+ "Web search: Set BRAVE_API_KEY for web search + LLM context capability",
56
57
  "warning"
57
58
  );
58
59
  }
59
60
 
60
61
  const parts: string[] = ["Web search v3 loaded"];
61
- if (hasBrave) parts.push("Brave ✓");
62
+ if (hasBrave) parts.push("Search ✓");
63
+ if (hasAnswers) parts.push("Answers ✓");
62
64
  if (hasJina) parts.push("Jina ✓");
63
65
 
64
66
  ctx.ui.notify(parts.join(" · "), "info");