gsd-pi 0.1.2 → 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
 
@@ -118,27 +115,31 @@ The wizard is the on-ramp. Auto mode is the highway.
118
115
 
119
116
  ## Getting Started
120
117
 
121
- ### Install and run
118
+ ### Install
122
119
 
123
120
  ```bash
124
121
  npm install -g gsd-pi
125
- cd your-project
126
- gsd
127
122
  ```
128
123
 
129
- That's it. GSD walks you through describing what you want to build, creates a roadmap, and starts working. When you're ready to let it run autonomously:
124
+ ### Use it
130
125
 
126
+ Open a terminal in your project and run:
127
+
128
+ ```bash
129
+ gsd
131
130
  ```
132
- /gsd auto
133
- ```
134
131
 
135
- Walk away. Come back to a built project with clean git history.
132
+ GSD opens an interactive agent session. From there, you have two ways to work:
133
+
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.
135
+
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.
136
137
 
137
- ### The two-terminal workflow
138
+ ### Two terminals, one project
138
139
 
139
- GSD is designed for you to keep working while it builds. Open two terminals in the same project:
140
+ The real workflow: run auto mode in one terminal, steer from another.
140
141
 
141
- **Terminal 1 — auto mode (let it run)**
142
+ **Terminal 1 — let it build**
142
143
  ```bash
143
144
  gsd
144
145
  /gsd auto
@@ -152,17 +153,17 @@ gsd
152
153
  /gsd queue # queue the next milestone
153
154
  ```
154
155
 
155
- Auto mode reads state from `.gsd/` files on disk. Your discussions and decisions in terminal 2 are picked up automatically at the next phase boundary. You don't need to stop auto mode to influence what it does next.
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.
156
157
 
157
158
  ### First launch
158
159
 
159
- 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. Keys are stored in `~/.gsd/agent/auth.json`.
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.
160
161
 
161
162
  ### Commands
162
163
 
163
164
  | Command | What it does |
164
165
  |---------|-------------|
165
- | `/gsd` | Contextual wizard — reads state, shows what's next |
166
+ | `/gsd` | Guided mode — reads project state, walks you through what's next |
166
167
  | `/gsd auto` | Autonomous mode — researches, plans, executes, commits, repeats |
167
168
  | `/gsd stop` | Stop auto mode gracefully |
168
169
  | `/gsd discuss` | Discuss architecture and decisions (works alongside auto mode) |
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.2",
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");