@iservu-inc/adf-cli 0.4.36 → 0.5.1
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/.project/chats/current/2025-10-05_INTELLIGENT-ANSWER-ANALYSIS.md +649 -0
- package/.project/chats/current/2025-10-05_MULTI-IDE-IMPROVEMENTS.md +415 -0
- package/.project/chats/current/SESSION-STATUS.md +166 -71
- package/.project/docs/ROADMAP.md +150 -17
- package/CHANGELOG.md +243 -0
- package/lib/analysis/answer-analyzer.js +304 -0
- package/lib/analysis/dynamic-pipeline.js +262 -0
- package/lib/analysis/knowledge-graph.js +227 -0
- package/lib/analysis/question-mapper.js +293 -0
- package/lib/commands/init.js +137 -8
- package/lib/frameworks/interviewer.js +59 -0
- package/package.json +1 -1
- package/tests/answer-analyzer.test.js +262 -0
- package/tests/dynamic-pipeline.test.js +332 -0
- package/tests/knowledge-graph.test.js +322 -0
- package/tests/question-mapper.test.js +342 -0
- /package/.project/chats/{current → complete}/2025-10-04_CRITICAL-MODEL-FETCHING-BUG.md +0 -0
- /package/.project/chats/{current → complete}/2025-10-04_PHASE-4-2-COMPLETION-AND-ROADMAP.md +0 -0
- /package/.project/chats/{current → complete}/2025-10-04_PHASE-4-2-LEARNING-SYSTEM.md +0 -0
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
# Multi-IDE Improvements & Configuration Enhancements
|
|
2
|
+
|
|
3
|
+
**Date:** 2025-10-05
|
|
4
|
+
**Versions:** v0.4.30 - v0.4.36
|
|
5
|
+
**Status:** Completed
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Session Overview
|
|
10
|
+
|
|
11
|
+
Major improvements to IDE configuration generation and the `adf config` command, spanning 7 versions with critical fixes and enhancements.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Published Versions
|
|
16
|
+
|
|
17
|
+
### v0.4.30 - Auto .gitignore Protection
|
|
18
|
+
**Problem:** API keys could be accidentally committed to git
|
|
19
|
+
**Solution:** Automatic .gitignore creation/update to protect `.adf/.env`
|
|
20
|
+
|
|
21
|
+
**Implementation:**
|
|
22
|
+
- New `ensureGitignore()` function in ai-config.js
|
|
23
|
+
- Automatically called after saving API keys
|
|
24
|
+
- Creates root-level `.gitignore` with `.adf/.env` entry
|
|
25
|
+
- Non-destructive: only adds if missing
|
|
26
|
+
|
|
27
|
+
### v0.4.31 - o-series Model Support
|
|
28
|
+
**Problem:** o3 models failed with parameter error
|
|
29
|
+
**Solution:** Updated regex to detect ALL o-series models
|
|
30
|
+
|
|
31
|
+
**Changes:**
|
|
32
|
+
```javascript
|
|
33
|
+
// Before (broken)
|
|
34
|
+
const isO1Model = this.model.startsWith('o1');
|
|
35
|
+
|
|
36
|
+
// After (fixed)
|
|
37
|
+
const isOSeriesModel = /^o\d/.test(this.model);
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**Impact:** o1, o1-mini, o1-preview, o3, o3-mini, o3-pro now work
|
|
41
|
+
|
|
42
|
+
### v0.4.32 - Smarter .adf Directory Detection
|
|
43
|
+
**Problem:** `adf init` prompted to overwrite when `.adf` only had `.env`
|
|
44
|
+
**Solution:** Content-based detection
|
|
45
|
+
|
|
46
|
+
**New Behavior:**
|
|
47
|
+
- `.adf` with only `.env` → Continues silently ✓
|
|
48
|
+
- `.adf` with sessions → Prompts to overwrite ⚠️
|
|
49
|
+
- Empty `.adf` → Creates structure ✓
|
|
50
|
+
|
|
51
|
+
### v0.4.33 - Show Active Provider and Model
|
|
52
|
+
**Problem:** All configured providers showed ✓, impossible to know which is active
|
|
53
|
+
**Solution:** Track and display active config
|
|
54
|
+
|
|
55
|
+
**Display:**
|
|
56
|
+
```
|
|
57
|
+
★ Currently Active: OpenAI GPT - o3
|
|
58
|
+
|
|
59
|
+
? Select AI provider:
|
|
60
|
+
> Anthropic Claude
|
|
61
|
+
OpenAI GPT ✓ Configured ★ Active
|
|
62
|
+
Google Gemini ✓ Configured
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Implementation:**
|
|
66
|
+
- New env vars: `ADF_CURRENT_PROVIDER`, `ADF_CURRENT_MODEL`
|
|
67
|
+
- Auto-saved after successful configuration
|
|
68
|
+
- Enhanced .env file formatting with sections
|
|
69
|
+
|
|
70
|
+
### v0.4.34 - Multi-Tool Deployment Selection
|
|
71
|
+
**Problem:** Could only deploy to one IDE at a time
|
|
72
|
+
**Solution:** Checkbox multi-select
|
|
73
|
+
|
|
74
|
+
**New Interface:**
|
|
75
|
+
```
|
|
76
|
+
? Select tools (space to select, enter to confirm):
|
|
77
|
+
❯◉ Windsurf
|
|
78
|
+
◉ Cursor
|
|
79
|
+
◯ VSCode/Copilot
|
|
80
|
+
◯ Claude Code
|
|
81
|
+
◯ Gemini CLI
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**Features:**
|
|
85
|
+
- Spacebar to select/deselect
|
|
86
|
+
- Multiple tools at once
|
|
87
|
+
- Validation: must select at least one
|
|
88
|
+
- Deploys sequentially to all selected
|
|
89
|
+
|
|
90
|
+
### v0.4.35 - MAJOR FIX: Windsurf Configuration
|
|
91
|
+
**Problem:** Generated Windsurf files were useless
|
|
92
|
+
|
|
93
|
+
**Issues:**
|
|
94
|
+
1. Rules had `Manual` activation (never active)
|
|
95
|
+
2. Workflows had no activation frontmatter
|
|
96
|
+
3. Content showed "Not provided" everywhere
|
|
97
|
+
4. Not reading actual session answers
|
|
98
|
+
|
|
99
|
+
**Solution:**
|
|
100
|
+
|
|
101
|
+
**1. Proper Frontmatter:**
|
|
102
|
+
```yaml
|
|
103
|
+
---
|
|
104
|
+
trigger: always_on # For rules
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
trigger: manual # For workflows
|
|
109
|
+
description: Review project requirements...
|
|
110
|
+
---
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
**2. Session Answer Extraction:**
|
|
114
|
+
- New `loadSessionAnswers()` - reads `_progress.json`
|
|
115
|
+
- New `parseImplementationBlueprint()` - extracts sections
|
|
116
|
+
- New `extractSubsection()` - keyword matching
|
|
117
|
+
- New `extractTechStackFromAnswers()` - tech detection
|
|
118
|
+
- New `extractWhatBuildingFromAnswers()` - goal extraction
|
|
119
|
+
|
|
120
|
+
**Before/After:**
|
|
121
|
+
```markdown
|
|
122
|
+
# Before (useless)
|
|
123
|
+
## Implementation Blueprint
|
|
124
|
+
Not provided
|
|
125
|
+
|
|
126
|
+
# After (useful)
|
|
127
|
+
---
|
|
128
|
+
trigger: always_on
|
|
129
|
+
---
|
|
130
|
+
## Implementation Blueprint
|
|
131
|
+
### Technical Approach
|
|
132
|
+
**Tech Stack:** Next.js, PostgreSQL...
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**Activation Modes:**
|
|
136
|
+
- **Always On:** Rules (default, always active)
|
|
137
|
+
- **Manual:** Workflows (user activates)
|
|
138
|
+
- **Glob:** File matching (future)
|
|
139
|
+
- **Model Decide:** AI chooses (requires description)
|
|
140
|
+
|
|
141
|
+
### v0.4.36 - Multi-IDE Improvements + Config Enhancement
|
|
142
|
+
|
|
143
|
+
**1. IDE Deployment in `adf config`:**
|
|
144
|
+
|
|
145
|
+
New category added to config command:
|
|
146
|
+
|
|
147
|
+
**Config Menu:**
|
|
148
|
+
```
|
|
149
|
+
⚙️ ADF Configuration
|
|
150
|
+
|
|
151
|
+
? Select configuration category:
|
|
152
|
+
> AI Provider Setup - ✓ Configured (Openai)
|
|
153
|
+
IDE Deployment - ✓ Deployed (Windsurf, Cursor)
|
|
154
|
+
Learning System - ✓ Active (5 sessions, 12 patterns)
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**Features:**
|
|
158
|
+
- Deploy to multiple IDEs without re-running `adf init`
|
|
159
|
+
- Shows which IDEs already deployed
|
|
160
|
+
- Pre-selects deployed IDEs in checkbox
|
|
161
|
+
- Quick re-deployment or add new IDEs
|
|
162
|
+
|
|
163
|
+
**Usage:**
|
|
164
|
+
```bash
|
|
165
|
+
adf config
|
|
166
|
+
# Select "IDE Deployment"
|
|
167
|
+
# Choose IDEs
|
|
168
|
+
# Done!
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**2. Improved Cursor Generator:**
|
|
172
|
+
- Added `loadSessionAnswers()` - reads session data
|
|
173
|
+
- Added `extractTechStackFromAnswers()` - detects tech
|
|
174
|
+
- Added `extractWhatBuildingFromAnswers()` - finds goals
|
|
175
|
+
- Falls back to answers when PRP sections empty
|
|
176
|
+
- Real content instead of "See PRP for details"
|
|
177
|
+
|
|
178
|
+
**3. Improved VSCode/Copilot Generator:**
|
|
179
|
+
- Same answer extraction as Cursor
|
|
180
|
+
- Better Copilot instructions
|
|
181
|
+
- Falls back to session answers
|
|
182
|
+
- Tech stack detection
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Key Files Modified
|
|
187
|
+
|
|
188
|
+
### AI Configuration
|
|
189
|
+
- `lib/ai/ai-config.js` - Auto .gitignore, current provider tracking
|
|
190
|
+
- `lib/ai/ai-client.js` - o-series model support
|
|
191
|
+
|
|
192
|
+
### Commands
|
|
193
|
+
- `lib/commands/init.js` - Multi-tool selection, smarter .adf detection
|
|
194
|
+
- `lib/commands/config.js` - IDE deployment category
|
|
195
|
+
|
|
196
|
+
### Generators
|
|
197
|
+
- `lib/generators/windsurf-generator.js` - Frontmatter, answer extraction
|
|
198
|
+
- `lib/generators/cursor-generator.js` - Answer extraction
|
|
199
|
+
- `lib/generators/vscode-generator.js` - Answer extraction
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Technical Deep Dive
|
|
204
|
+
|
|
205
|
+
### Session Answer Extraction
|
|
206
|
+
|
|
207
|
+
**Problem:** Generators relied on AI-generated PRP sections that might be incomplete or missing.
|
|
208
|
+
|
|
209
|
+
**Solution:** Direct answer extraction from `_progress.json`
|
|
210
|
+
|
|
211
|
+
```javascript
|
|
212
|
+
// Load actual session answers
|
|
213
|
+
async loadSessionAnswers() {
|
|
214
|
+
const progressPath = path.join(this.sessionPath, '_progress.json');
|
|
215
|
+
if (await fs.pathExists(progressPath)) {
|
|
216
|
+
const progress = await fs.readJson(progressPath);
|
|
217
|
+
return progress.answers || {};
|
|
218
|
+
}
|
|
219
|
+
return {};
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// Extract tech stack from any answer
|
|
223
|
+
extractTechStackFromAnswers(answers) {
|
|
224
|
+
for (const [questionId, answer] of Object.entries(answers)) {
|
|
225
|
+
if (typeof answer === 'string') {
|
|
226
|
+
const lower = answer.toLowerCase();
|
|
227
|
+
if (lower.includes('react') || lower.includes('vue') ||
|
|
228
|
+
lower.includes('next') || lower.includes('postgres')) {
|
|
229
|
+
return answer;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
return null;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
// Extract project goal from any answer
|
|
237
|
+
extractWhatBuildingFromAnswers(answers) {
|
|
238
|
+
for (const [questionId, answer] of Object.entries(answers)) {
|
|
239
|
+
if (questionId.toLowerCase().includes('goal') ||
|
|
240
|
+
questionId.toLowerCase().includes('building')) {
|
|
241
|
+
if (typeof answer === 'string' && answer.length > 20) {
|
|
242
|
+
return answer;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return null;
|
|
247
|
+
}
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
**Benefits:**
|
|
251
|
+
- Works even if AI-generated sections are incomplete
|
|
252
|
+
- Captures information from ANY question where user mentioned tech or goals
|
|
253
|
+
- More resilient to changes in AI output format
|
|
254
|
+
- Better content in IDE configurations
|
|
255
|
+
|
|
256
|
+
### Windsurf Activation Modes
|
|
257
|
+
|
|
258
|
+
**Research from Windsurf docs:**
|
|
259
|
+
|
|
260
|
+
| Mode | When Active | Use Case | Requirements |
|
|
261
|
+
|------|-------------|----------|--------------|
|
|
262
|
+
| `always_on` | Always | Rules that should always apply | None |
|
|
263
|
+
| `glob` | File pattern match | Apply to specific files | Glob pattern |
|
|
264
|
+
| `manual` | User activates | Workflows user runs manually | None |
|
|
265
|
+
| `model_decide` | AI decides | Context-dependent rules | Description |
|
|
266
|
+
|
|
267
|
+
**Implementation:**
|
|
268
|
+
```yaml
|
|
269
|
+
---
|
|
270
|
+
trigger: always_on
|
|
271
|
+
---
|
|
272
|
+
# Rule content...
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
trigger: manual
|
|
276
|
+
description: Review project requirements before implementing
|
|
277
|
+
---
|
|
278
|
+
# Workflow content...
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### IDE Deployment Detection
|
|
282
|
+
|
|
283
|
+
**Markers used to detect deployed IDEs:**
|
|
284
|
+
|
|
285
|
+
```javascript
|
|
286
|
+
const ideMarkers = [
|
|
287
|
+
{ name: 'Windsurf', path: '.windsurf/rules' },
|
|
288
|
+
{ name: 'Cursor', path: '.cursor/rules' },
|
|
289
|
+
{ name: 'VSCode', path: '.github/copilot-instructions.md' },
|
|
290
|
+
{ name: 'Claude Code', path: '.claude/commands' }
|
|
291
|
+
];
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
**Status Display:**
|
|
295
|
+
- `✓ Deployed (Windsurf, Cursor)` - Multiple IDEs deployed
|
|
296
|
+
- `○ Session exists, not deployed` - Has session but not deployed
|
|
297
|
+
- `○ No sessions yet` - No ADF sessions
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## User Benefits
|
|
302
|
+
|
|
303
|
+
### Before These Updates:
|
|
304
|
+
❌ API keys could be committed to git
|
|
305
|
+
❌ o3 models didn't work
|
|
306
|
+
❌ Annoying .adf overwrite prompts
|
|
307
|
+
❌ Couldn't see which AI provider was active
|
|
308
|
+
❌ Could only deploy to one IDE at a time
|
|
309
|
+
❌ Windsurf rules didn't work (wrong activation)
|
|
310
|
+
❌ IDE files had placeholder text
|
|
311
|
+
|
|
312
|
+
### After These Updates:
|
|
313
|
+
✅ API keys automatically protected
|
|
314
|
+
✅ All o-series models work (o1, o3, future)
|
|
315
|
+
✅ Smart .adf detection (no unnecessary prompts)
|
|
316
|
+
✅ Active provider/model clearly shown
|
|
317
|
+
✅ Deploy to multiple IDEs at once
|
|
318
|
+
✅ Windsurf rules work properly (always_on)
|
|
319
|
+
✅ IDE files have real project content
|
|
320
|
+
✅ `adf config` can deploy to IDEs
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
## Testing
|
|
325
|
+
|
|
326
|
+
All versions tested with:
|
|
327
|
+
- ✅ 120 tests passing
|
|
328
|
+
- ✅ Manual testing with real API keys
|
|
329
|
+
- ✅ Multi-IDE deployment verification
|
|
330
|
+
- ✅ Windsurf activation mode testing
|
|
331
|
+
|
|
332
|
+
---
|
|
333
|
+
|
|
334
|
+
## Lessons Learned
|
|
335
|
+
|
|
336
|
+
### 1. Don't Trust AI-Generated Sections Alone
|
|
337
|
+
**Issue:** PRP sections from AI could be incomplete
|
|
338
|
+
**Solution:** Fall back to raw session answers
|
|
339
|
+
**Result:** More robust content generation
|
|
340
|
+
|
|
341
|
+
### 2. Research IDE-Specific Requirements
|
|
342
|
+
**Issue:** Windsurf rules had wrong activation mode
|
|
343
|
+
**Solution:** Consulted Windsurf docs for proper frontmatter
|
|
344
|
+
**Result:** Rules actually work now
|
|
345
|
+
|
|
346
|
+
### 3. User Experience Matters
|
|
347
|
+
**Issue:** Multiple small annoyances (prompts, unclear status)
|
|
348
|
+
**Solution:** Address each one systematically
|
|
349
|
+
**Result:** Smoother workflow, clearer communication
|
|
350
|
+
|
|
351
|
+
### 4. Context Is Everything
|
|
352
|
+
**Issue:** Trying to extract specific data from specific sections
|
|
353
|
+
**Solution:** Search ALL answers for relevant information
|
|
354
|
+
**Result:** Better content extraction, more resilient
|
|
355
|
+
|
|
356
|
+
---
|
|
357
|
+
|
|
358
|
+
## Future Improvements
|
|
359
|
+
|
|
360
|
+
### Intelligent Question Parsing
|
|
361
|
+
**Goal:** Avoid redundant questions by parsing answers for multiple pieces of information
|
|
362
|
+
|
|
363
|
+
**Example:**
|
|
364
|
+
- Question: "What are you building?"
|
|
365
|
+
- Answer: "A performance website with Next.js frontend, PostgreSQL database, and separate backend"
|
|
366
|
+
|
|
367
|
+
**Current:** Still asks "What tech stack?"
|
|
368
|
+
**Desired:** Skip tech stack question, already have that info
|
|
369
|
+
|
|
370
|
+
**Implementation Ideas:**
|
|
371
|
+
- Parse answers for multiple question patterns
|
|
372
|
+
- Build a knowledge graph of extracted information
|
|
373
|
+
- Skip questions where we already have answers
|
|
374
|
+
- Confidence scoring for extracted information
|
|
375
|
+
|
|
376
|
+
### Claude Code Configuration
|
|
377
|
+
**Status:** Not yet researched
|
|
378
|
+
**TODO:**
|
|
379
|
+
- Research Claude Code configuration format
|
|
380
|
+
- Implement generator with proper structure
|
|
381
|
+
- Apply same answer extraction techniques
|
|
382
|
+
|
|
383
|
+
### Gemini CLI Configuration
|
|
384
|
+
**Status:** Basic support exists
|
|
385
|
+
**TODO:**
|
|
386
|
+
- Research latest Gemini CLI features
|
|
387
|
+
- Enhance generator with answer extraction
|
|
388
|
+
- Test with real Gemini integration
|
|
389
|
+
|
|
390
|
+
---
|
|
391
|
+
|
|
392
|
+
## Documentation Updates Needed
|
|
393
|
+
|
|
394
|
+
1. ✅ This chat file created
|
|
395
|
+
2. ⏳ Update ROADMAP.md with completed items
|
|
396
|
+
3. ⏳ Update SESSION-STATUS.md
|
|
397
|
+
4. ⏳ Move completed chats to complete folder
|
|
398
|
+
|
|
399
|
+
---
|
|
400
|
+
|
|
401
|
+
## Version Summary Table
|
|
402
|
+
|
|
403
|
+
| Version | Focus | Key Feature |
|
|
404
|
+
|---------|-------|-------------|
|
|
405
|
+
| v0.4.30 | Security | Auto .gitignore protection |
|
|
406
|
+
| v0.4.31 | Models | o-series model support |
|
|
407
|
+
| v0.4.32 | UX | Smart .adf detection |
|
|
408
|
+
| v0.4.33 | Clarity | Show active provider/model |
|
|
409
|
+
| v0.4.34 | Deploy | Multi-tool selection |
|
|
410
|
+
| v0.4.35 | Critical Fix | Windsurf activation & content |
|
|
411
|
+
| v0.4.36 | Enhancement | IDE deployment in config |
|
|
412
|
+
|
|
413
|
+
---
|
|
414
|
+
|
|
415
|
+
*Session completed successfully with 7 versions published*
|