@iservu-inc/adf-cli 0.2.0 → 0.3.6
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/complete/2025-10-03_AGENTS-MD-AND-TOOL-GENERATORS.md +764 -0
- package/.project/chats/current/2025-10-03_AI-PROVIDER-INTEGRATION.md +569 -0
- package/.project/chats/current/2025-10-03_FRAMEWORK-UPDATE-SYSTEM.md +497 -0
- package/.project/chats/current/SESSION-STATUS.md +127 -0
- package/.project/docs/AI-PROVIDER-INTEGRATION.md +600 -0
- package/.project/docs/FRAMEWORK-UPDATE-INTEGRATION.md +421 -0
- package/.project/docs/FRAMEWORK-UPDATE-SYSTEM.md +832 -0
- package/.project/docs/PROJECT-STRUCTURE-EXPLANATION.md +500 -0
- package/.project/docs/architecture/SYSTEM-DESIGN.md +122 -1
- package/.project/docs/goals/PROJECT-VISION.md +33 -28
- package/.project/docs/tool-integrations/RESEARCH-FINDINGS.md +828 -0
- package/CHANGELOG.md +325 -0
- package/README.md +100 -11
- package/bin/adf.js +7 -0
- package/lib/ai/ai-client.js +328 -0
- package/lib/ai/ai-config.js +398 -0
- package/lib/commands/config.js +154 -0
- package/lib/commands/deploy.js +122 -3
- package/lib/commands/init.js +56 -10
- package/lib/frameworks/interviewer.js +89 -11
- package/lib/frameworks/progress-tracker.js +8 -1
- package/lib/generators/agents-md-generator.js +388 -0
- package/lib/generators/cursor-generator.js +374 -0
- package/lib/generators/index.js +98 -0
- package/lib/generators/tool-config-generator.js +188 -0
- package/lib/generators/vscode-generator.js +403 -0
- package/lib/generators/windsurf-generator.js +596 -0
- package/package.json +15 -3
- package/tests/agents-md-generator.test.js +245 -0
- package/tests/cursor-generator.test.js +326 -0
- package/tests/vscode-generator.test.js +436 -0
- package/tests/windsurf-generator.test.js +320 -0
- /package/.project/chats/{current → complete}/2025-10-03_ADF-CLI-QUALITY-BASED-PROGRESS-AND-RESUME.md +0 -0
|
@@ -0,0 +1,600 @@
|
|
|
1
|
+
# AI Provider Integration
|
|
2
|
+
|
|
3
|
+
**Date:** 2025-10-03
|
|
4
|
+
**Version:** v0.4.0 (Upcoming)
|
|
5
|
+
**Status:** ✅ Complete & Tested
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 🎯 Overview
|
|
10
|
+
|
|
11
|
+
The adf-cli interview system now supports **4 AI providers**, giving users flexibility in choosing their preferred LLM for the requirements gathering process. AI connectivity is **required** before the interview begins.
|
|
12
|
+
|
|
13
|
+
### Supported Providers
|
|
14
|
+
|
|
15
|
+
| Provider | Models | API Key Format | Website |
|
|
16
|
+
|----------|--------|----------------|---------|
|
|
17
|
+
| **Anthropic Claude** | Sonnet 4.5, Claude 3.5, Opus | `sk-ant-*` | https://console.anthropic.com/ |
|
|
18
|
+
| **OpenAI GPT** | GPT-4-turbo, GPT-4o, GPT-4, GPT-3.5-turbo | `sk-*` | https://platform.openai.com/ |
|
|
19
|
+
| **Google Gemini** | 2.0-flash-exp, 1.5-pro, 1.5-flash | (varies) | https://ai.google.dev/ |
|
|
20
|
+
| **OpenRouter** | Multi-model access | `sk-or-*` | https://openrouter.ai/ |
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 🔄 Interview Flow Changes
|
|
25
|
+
|
|
26
|
+
### Previous Flow (v0.3.0)
|
|
27
|
+
```
|
|
28
|
+
1. Detect project type
|
|
29
|
+
2. Select framework (PRP/Balanced/BMAD)
|
|
30
|
+
3. Start interview
|
|
31
|
+
4. Answer questions
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### New Flow (v0.4.0)
|
|
35
|
+
```
|
|
36
|
+
1. Detect project type
|
|
37
|
+
2. Select framework (PRP/Balanced/BMAD)
|
|
38
|
+
3. Configure AI Provider ← NEW (REQUIRED)
|
|
39
|
+
- Select provider
|
|
40
|
+
- Enter/validate API key
|
|
41
|
+
- Test connection
|
|
42
|
+
4. Start AI-guided interview
|
|
43
|
+
5. Answer questions with AI analysis
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 🚀 User Experience
|
|
49
|
+
|
|
50
|
+
### Provider Selection
|
|
51
|
+
|
|
52
|
+
When running `adf init`, users are prompted:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
🤖 AI Provider Configuration
|
|
56
|
+
|
|
57
|
+
This interview requires an AI assistant to analyze your answers and provide insights.
|
|
58
|
+
|
|
59
|
+
✓ Detected API keys for:
|
|
60
|
+
• Anthropic Claude (ANTHROPIC_API_KEY)
|
|
61
|
+
|
|
62
|
+
? Select AI provider: (Use arrow keys)
|
|
63
|
+
❯ Anthropic Claude ✓ Configured
|
|
64
|
+
OpenAI GPT
|
|
65
|
+
Google Gemini
|
|
66
|
+
OpenRouter (Multi-Model)
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### API Key Configuration
|
|
70
|
+
|
|
71
|
+
**If API key exists in environment:**
|
|
72
|
+
```bash
|
|
73
|
+
✓ Using API key from ANTHROPIC_API_KEY
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**If API key NOT found:**
|
|
77
|
+
```bash
|
|
78
|
+
⚠️ ANTHROPIC_API_KEY not found in environment
|
|
79
|
+
|
|
80
|
+
Setup instructions:
|
|
81
|
+
Get your API key from https://console.anthropic.com/
|
|
82
|
+
|
|
83
|
+
Then set the environment variable:
|
|
84
|
+
export ANTHROPIC_API_KEY="your-api-key"
|
|
85
|
+
# or add to ~/.bashrc or ~/.zshrc
|
|
86
|
+
|
|
87
|
+
? Do you want to enter your API key now? (y/N)
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Manual API key entry:**
|
|
91
|
+
```bash
|
|
92
|
+
? Enter your Anthropic Claude API key: [hidden]
|
|
93
|
+
✓ API key set for this session
|
|
94
|
+
⚠️ Note: This key is only active for this session. For permanent setup, add to environment.
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Model Selection
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
? Select Anthropic Claude model: (Use arrow keys)
|
|
101
|
+
❯ claude-sonnet-4-5-20250929
|
|
102
|
+
claude-3-5-sonnet-20241022
|
|
103
|
+
claude-3-opus-20240229
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Connection Testing
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
? Test AI connection before starting? (Y/n) Y
|
|
110
|
+
⠹ Testing AI connection...
|
|
111
|
+
✅ AI connection successful!
|
|
112
|
+
|
|
113
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
114
|
+
|
|
115
|
+
🤖 AI-Guided Requirements Gathering
|
|
116
|
+
|
|
117
|
+
I'll guide you through questions to create a comprehensive [Framework] document.
|
|
118
|
+
|
|
119
|
+
Session: 2025-10-03T15-30-45_balanced
|
|
120
|
+
Files will be saved to: .adf/sessions/2025-10-03T15-30-45_balanced/
|
|
121
|
+
|
|
122
|
+
✓ AI Provider: Anthropic Claude (claude-sonnet-4-5-20250929)
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## 🧠 AI-Powered Features
|
|
128
|
+
|
|
129
|
+
### 1. Real-Time Answer Quality Analysis
|
|
130
|
+
|
|
131
|
+
**Previous (Heuristic):**
|
|
132
|
+
```
|
|
133
|
+
✓ Great detail! (80/100)
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**New (AI-Powered):**
|
|
137
|
+
```
|
|
138
|
+
💡 Quality: 65/100
|
|
139
|
+
Suggestion: Be more specific about the technology stack and platform
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
The AI analyzes:
|
|
143
|
+
- **Specificity** - Is it concrete and detailed?
|
|
144
|
+
- **Completeness** - Does it address all aspects?
|
|
145
|
+
- **Clarity** - Is it clear and unambiguous?
|
|
146
|
+
- **Technical Depth** - Does it include relevant technical details?
|
|
147
|
+
|
|
148
|
+
### 2. Intelligent Follow-Up Questions
|
|
149
|
+
|
|
150
|
+
**Previous (Rule-Based):**
|
|
151
|
+
```
|
|
152
|
+
🤖 I notice you didn't mention the technology stack.
|
|
153
|
+
? What framework, language, or technology will you use for this?
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**New (AI-Generated):**
|
|
157
|
+
```
|
|
158
|
+
🤖 Let me ask a more specific question:
|
|
159
|
+
? What specific React framework and backend API technology will power this dashboard?
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
The AI generates **contextual, specific follow-ups** based on:
|
|
163
|
+
- The original question
|
|
164
|
+
- User's answer
|
|
165
|
+
- Identified issues
|
|
166
|
+
- Missing elements
|
|
167
|
+
|
|
168
|
+
### 3. Session Resume with AI Context
|
|
169
|
+
|
|
170
|
+
When resuming a session:
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
✓ Resuming with Anthropic Claude (claude-sonnet-4-5-20250929)
|
|
174
|
+
|
|
175
|
+
✓ Resuming previous session
|
|
176
|
+
|
|
177
|
+
Last updated: 10/3/2025, 3:45:23 PM
|
|
178
|
+
Progress: 2/5 blocks | 8 questions
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
If API key changed:
|
|
182
|
+
```bash
|
|
183
|
+
⚠️ Previous session used OpenAI GPT
|
|
184
|
+
Please configure API key to resume...
|
|
185
|
+
|
|
186
|
+
? Select AI provider: ...
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## 🏗️ Technical Architecture
|
|
192
|
+
|
|
193
|
+
### Component Structure
|
|
194
|
+
|
|
195
|
+
```
|
|
196
|
+
lib/ai/
|
|
197
|
+
├── ai-config.js # Provider selection & configuration
|
|
198
|
+
└── ai-client.js # Unified client for all providers
|
|
199
|
+
|
|
200
|
+
lib/commands/
|
|
201
|
+
└── init.js # Integrates AI config before interview
|
|
202
|
+
|
|
203
|
+
lib/frameworks/
|
|
204
|
+
├── interviewer.js # Uses AI for answer analysis
|
|
205
|
+
└── progress-tracker.js # Stores AI config in session
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### AI Client Interface
|
|
209
|
+
|
|
210
|
+
```javascript
|
|
211
|
+
class AIClient {
|
|
212
|
+
constructor(config) // Initialize with provider config
|
|
213
|
+
|
|
214
|
+
async sendMessage(prompt, options) // Unified API for all providers
|
|
215
|
+
async test() // Test connection
|
|
216
|
+
async analyzeAnswerQuality(question, answer) // Analyze answer (0-100)
|
|
217
|
+
async generateFollowUp(question, answer, issues) // Generate follow-up
|
|
218
|
+
async extractInsights(framework, answers) // Final analysis
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### Provider Adapters
|
|
223
|
+
|
|
224
|
+
**Anthropic Claude:**
|
|
225
|
+
```javascript
|
|
226
|
+
await client.messages.create({
|
|
227
|
+
model: 'claude-sonnet-4-5-20250929',
|
|
228
|
+
messages: [{ role: 'user', content: prompt }]
|
|
229
|
+
});
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
**OpenAI GPT:**
|
|
233
|
+
```javascript
|
|
234
|
+
await client.chat.completions.create({
|
|
235
|
+
model: 'gpt-4-turbo',
|
|
236
|
+
messages: [{ role: 'user', content: prompt }]
|
|
237
|
+
});
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
**Google Gemini:**
|
|
241
|
+
```javascript
|
|
242
|
+
const model = client.getGenerativeModel({ model: 'gemini-2.0-flash-exp' });
|
|
243
|
+
await model.generateContent(prompt);
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**OpenRouter:**
|
|
247
|
+
```javascript
|
|
248
|
+
// Uses OpenAI-compatible API
|
|
249
|
+
await client.chat.completions.create({
|
|
250
|
+
model: 'anthropic/claude-sonnet-4-5',
|
|
251
|
+
messages: [...]
|
|
252
|
+
});
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### Session Storage Format
|
|
256
|
+
|
|
257
|
+
```json
|
|
258
|
+
{
|
|
259
|
+
"sessionId": "2025-10-03T15-30-45_balanced",
|
|
260
|
+
"framework": "balanced",
|
|
261
|
+
"aiConfig": {
|
|
262
|
+
"provider": "anthropic",
|
|
263
|
+
"providerName": "Anthropic Claude",
|
|
264
|
+
"model": "claude-sonnet-4-5-20250929",
|
|
265
|
+
"envVar": "ANTHROPIC_API_KEY"
|
|
266
|
+
// Note: API key NOT stored for security
|
|
267
|
+
},
|
|
268
|
+
"status": "in-progress",
|
|
269
|
+
"answers": {...},
|
|
270
|
+
"transcript": [...]
|
|
271
|
+
}
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## 🔐 Security
|
|
277
|
+
|
|
278
|
+
### API Key Handling
|
|
279
|
+
|
|
280
|
+
**✅ Secure:**
|
|
281
|
+
- API keys read from environment variables
|
|
282
|
+
- API keys NOT stored in session files
|
|
283
|
+
- Temporary keys only active for current process
|
|
284
|
+
- Clear warnings about temporary vs permanent setup
|
|
285
|
+
|
|
286
|
+
**❌ Never:**
|
|
287
|
+
- Committed to git
|
|
288
|
+
- Saved in session files
|
|
289
|
+
- Logged to console (masked input)
|
|
290
|
+
- Shared across sessions
|
|
291
|
+
|
|
292
|
+
### Environment Variable Priority
|
|
293
|
+
|
|
294
|
+
1. **System environment** - `process.env.ANTHROPIC_API_KEY`
|
|
295
|
+
2. **Manual entry** - Set for current session only
|
|
296
|
+
3. **Error** - Cannot proceed without API key
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## 📊 AI Analysis Output
|
|
301
|
+
|
|
302
|
+
### Answer Quality Analysis
|
|
303
|
+
|
|
304
|
+
```json
|
|
305
|
+
{
|
|
306
|
+
"score": 65,
|
|
307
|
+
"issues": [
|
|
308
|
+
"Answer lacks specific technology stack details",
|
|
309
|
+
"Platform (web/mobile/desktop) not clearly specified"
|
|
310
|
+
],
|
|
311
|
+
"suggestions": [
|
|
312
|
+
"Specify the exact framework and version you'll use",
|
|
313
|
+
"Clarify whether this is a web, mobile, or desktop application"
|
|
314
|
+
],
|
|
315
|
+
"missingElements": [
|
|
316
|
+
"technology",
|
|
317
|
+
"platform"
|
|
318
|
+
]
|
|
319
|
+
}
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### Follow-Up Generation
|
|
323
|
+
|
|
324
|
+
**Input:**
|
|
325
|
+
```javascript
|
|
326
|
+
{
|
|
327
|
+
question: "What specific software feature are you building?",
|
|
328
|
+
answer: "A dashboard",
|
|
329
|
+
issues: ["Too vague", "Missing technology stack"]
|
|
330
|
+
}
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
**AI Output:**
|
|
334
|
+
```
|
|
335
|
+
"What specific technology stack will you use for this dashboard,
|
|
336
|
+
and will it be a web, mobile, or desktop application?"
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
## 🔄 Fallback Behavior
|
|
342
|
+
|
|
343
|
+
The system gracefully handles AI failures:
|
|
344
|
+
|
|
345
|
+
```javascript
|
|
346
|
+
try {
|
|
347
|
+
// Attempt AI analysis
|
|
348
|
+
const aiAnalysis = await aiClient.analyzeAnswerQuality(question, answer);
|
|
349
|
+
} catch (error) {
|
|
350
|
+
// Fallback to heuristic analysis
|
|
351
|
+
console.log('⚠️ AI analysis failed, using fallback method');
|
|
352
|
+
qualityMetrics = AnswerQualityAnalyzer.analyze(answer, question);
|
|
353
|
+
}
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
**Fallback scenarios:**
|
|
357
|
+
- API key invalid
|
|
358
|
+
- Network issues
|
|
359
|
+
- Provider downtime
|
|
360
|
+
- Rate limiting
|
|
361
|
+
- JSON parsing errors
|
|
362
|
+
|
|
363
|
+
---
|
|
364
|
+
|
|
365
|
+
## 🎛️ Configuration Options
|
|
366
|
+
|
|
367
|
+
### Provider-Specific Settings
|
|
368
|
+
|
|
369
|
+
**Anthropic:**
|
|
370
|
+
- Models: Sonnet 4.5 (recommended), Claude 3.5, Opus
|
|
371
|
+
- Max tokens: 2048 (analysis), 4096 (insights)
|
|
372
|
+
- Temperature: 0.3 (analysis), 0.7 (follow-ups)
|
|
373
|
+
|
|
374
|
+
**OpenAI:**
|
|
375
|
+
- Models: GPT-4-turbo (recommended), GPT-4o, GPT-4
|
|
376
|
+
- Max tokens: 2048 (analysis), 4096 (insights)
|
|
377
|
+
- Temperature: 0.3 (analysis), 0.7 (follow-ups)
|
|
378
|
+
|
|
379
|
+
**Google Gemini:**
|
|
380
|
+
- Models: 2.0-flash-exp (recommended), 1.5-pro
|
|
381
|
+
- Max tokens: 2048 (analysis), 4096 (insights)
|
|
382
|
+
- Temperature: 0.3 (analysis), 0.7 (follow-ups)
|
|
383
|
+
|
|
384
|
+
**OpenRouter:**
|
|
385
|
+
- Supports any model available on OpenRouter
|
|
386
|
+
- Defaults to provider-specific models
|
|
387
|
+
- Uses OpenAI-compatible API
|
|
388
|
+
|
|
389
|
+
### Custom Configuration
|
|
390
|
+
|
|
391
|
+
Users can set environment variables:
|
|
392
|
+
|
|
393
|
+
```bash
|
|
394
|
+
# Linux/macOS
|
|
395
|
+
export ANTHROPIC_API_KEY="sk-ant-your-key"
|
|
396
|
+
export OPENAI_API_KEY="sk-your-key"
|
|
397
|
+
export GOOGLE_API_KEY="your-key"
|
|
398
|
+
export OPENROUTER_API_KEY="sk-or-your-key"
|
|
399
|
+
|
|
400
|
+
# Windows PowerShell
|
|
401
|
+
$env:ANTHROPIC_API_KEY="sk-ant-your-key"
|
|
402
|
+
|
|
403
|
+
# Windows CMD
|
|
404
|
+
set ANTHROPIC_API_KEY=sk-ant-your-key
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
---
|
|
408
|
+
|
|
409
|
+
## 📈 Benefits
|
|
410
|
+
|
|
411
|
+
### For Users
|
|
412
|
+
|
|
413
|
+
✅ **Choice** - Pick your preferred AI provider
|
|
414
|
+
✅ **Flexibility** - Switch providers between sessions
|
|
415
|
+
✅ **Quality** - AI-powered answer analysis
|
|
416
|
+
✅ **Intelligence** - Contextual follow-up questions
|
|
417
|
+
✅ **Reliability** - Automatic fallback if AI fails
|
|
418
|
+
|
|
419
|
+
### For Developers
|
|
420
|
+
|
|
421
|
+
✅ **Unified API** - Single interface for all providers
|
|
422
|
+
✅ **Easy Extension** - Add new providers easily
|
|
423
|
+
✅ **Type Safety** - Consistent response format
|
|
424
|
+
✅ **Error Handling** - Graceful degradation
|
|
425
|
+
✅ **Testing** - All tests pass, no breaking changes
|
|
426
|
+
|
|
427
|
+
---
|
|
428
|
+
|
|
429
|
+
## 🧪 Testing
|
|
430
|
+
|
|
431
|
+
### Unit Tests
|
|
432
|
+
|
|
433
|
+
All existing tests pass (57/57):
|
|
434
|
+
```bash
|
|
435
|
+
npm test
|
|
436
|
+
|
|
437
|
+
Test Suites: 7 passed, 7 total
|
|
438
|
+
Tests: 57 passed, 57 total
|
|
439
|
+
Coverage: 78.13%
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
### Manual Testing
|
|
443
|
+
|
|
444
|
+
Test each provider:
|
|
445
|
+
|
|
446
|
+
```bash
|
|
447
|
+
# Test Anthropic
|
|
448
|
+
export ANTHROPIC_API_KEY="sk-ant-..."
|
|
449
|
+
adf init
|
|
450
|
+
|
|
451
|
+
# Test OpenAI
|
|
452
|
+
export OPENAI_API_KEY="sk-..."
|
|
453
|
+
adf init
|
|
454
|
+
|
|
455
|
+
# Test Google Gemini
|
|
456
|
+
export GOOGLE_API_KEY="..."
|
|
457
|
+
adf init
|
|
458
|
+
|
|
459
|
+
# Test OpenRouter
|
|
460
|
+
export OPENROUTER_API_KEY="sk-or-..."
|
|
461
|
+
adf init
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
### Connection Testing
|
|
465
|
+
|
|
466
|
+
Built-in test sends: `"Respond with exactly: 'Connection successful'"`
|
|
467
|
+
|
|
468
|
+
Success indicates:
|
|
469
|
+
- ✅ API key valid
|
|
470
|
+
- ✅ Network connectivity
|
|
471
|
+
- ✅ Provider accessible
|
|
472
|
+
- ✅ Model available
|
|
473
|
+
|
|
474
|
+
---
|
|
475
|
+
|
|
476
|
+
## 🚀 Migration Guide
|
|
477
|
+
|
|
478
|
+
### From v0.3.0 to v0.4.0
|
|
479
|
+
|
|
480
|
+
**Breaking Changes:** None! (Fully backward compatible)
|
|
481
|
+
|
|
482
|
+
**New Requirements:**
|
|
483
|
+
1. AI provider must be configured before interview
|
|
484
|
+
2. Environment variables for API keys recommended
|
|
485
|
+
|
|
486
|
+
**Migration Steps:**
|
|
487
|
+
|
|
488
|
+
1. **Install Dependencies:**
|
|
489
|
+
```bash
|
|
490
|
+
npm install
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
2. **Set API Key:**
|
|
494
|
+
```bash
|
|
495
|
+
export ANTHROPIC_API_KEY="your-key"
|
|
496
|
+
# or other provider
|
|
497
|
+
```
|
|
498
|
+
|
|
499
|
+
3. **Test:**
|
|
500
|
+
```bash
|
|
501
|
+
adf init
|
|
502
|
+
# Follow AI provider setup
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
4. **Old Sessions:**
|
|
506
|
+
- Will prompt for AI provider when resumed
|
|
507
|
+
- No data loss
|
|
508
|
+
- Full compatibility
|
|
509
|
+
|
|
510
|
+
---
|
|
511
|
+
|
|
512
|
+
## 📋 Best Practices
|
|
513
|
+
|
|
514
|
+
### API Key Management
|
|
515
|
+
|
|
516
|
+
**✅ Recommended:**
|
|
517
|
+
```bash
|
|
518
|
+
# Add to shell config (~/.bashrc, ~/.zshrc)
|
|
519
|
+
export ANTHROPIC_API_KEY="sk-ant-your-key"
|
|
520
|
+
```
|
|
521
|
+
|
|
522
|
+
**⚠️ Temporary (for testing):**
|
|
523
|
+
```bash
|
|
524
|
+
# Current session only
|
|
525
|
+
export ANTHROPIC_API_KEY="sk-ant-your-key"
|
|
526
|
+
adf init
|
|
527
|
+
```
|
|
528
|
+
|
|
529
|
+
**❌ Never:**
|
|
530
|
+
```bash
|
|
531
|
+
# Don't commit API keys
|
|
532
|
+
git commit -m "Added API key sk-ant-..." # ❌ BAD
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
### Provider Selection
|
|
536
|
+
|
|
537
|
+
**Choose based on:**
|
|
538
|
+
- **Anthropic Claude** - Best for technical analysis, nuanced understanding
|
|
539
|
+
- **OpenAI GPT** - Widely available, good general-purpose
|
|
540
|
+
- **Google Gemini** - Fast responses, cost-effective
|
|
541
|
+
- **OpenRouter** - Access to multiple models, flexibility
|
|
542
|
+
|
|
543
|
+
### Error Handling
|
|
544
|
+
|
|
545
|
+
If connection fails:
|
|
546
|
+
1. ✅ Verify API key format
|
|
547
|
+
2. ✅ Check network connectivity
|
|
548
|
+
3. ✅ Verify account has credits
|
|
549
|
+
4. ✅ Try different provider
|
|
550
|
+
5. ✅ Use fallback heuristic mode
|
|
551
|
+
|
|
552
|
+
---
|
|
553
|
+
|
|
554
|
+
## 📚 Related Documentation
|
|
555
|
+
|
|
556
|
+
- **Implementation:** `lib/ai/ai-client.js`, `lib/ai/ai-config.js`
|
|
557
|
+
- **Integration:** `lib/commands/init.js`, `lib/frameworks/interviewer.js`
|
|
558
|
+
- **Session Storage:** `lib/frameworks/progress-tracker.js`
|
|
559
|
+
- **Testing:** `tests/*.test.js`
|
|
560
|
+
|
|
561
|
+
---
|
|
562
|
+
|
|
563
|
+
## 🔮 Future Enhancements
|
|
564
|
+
|
|
565
|
+
**Planned for v0.5.0:**
|
|
566
|
+
- [ ] Custom AI prompts
|
|
567
|
+
- [ ] Fine-tuned models
|
|
568
|
+
- [ ] Multi-turn conversations
|
|
569
|
+
- [ ] Advanced context management
|
|
570
|
+
- [ ] Provider cost tracking
|
|
571
|
+
- [ ] Offline mode with cached analysis
|
|
572
|
+
|
|
573
|
+
**Community Requests:**
|
|
574
|
+
- [ ] Azure OpenAI support
|
|
575
|
+
- [ ] Local LLM support (Ollama)
|
|
576
|
+
- [ ] Custom provider plugins
|
|
577
|
+
- [ ] Streaming responses
|
|
578
|
+
|
|
579
|
+
---
|
|
580
|
+
|
|
581
|
+
## ✅ Success Criteria
|
|
582
|
+
|
|
583
|
+
**System is successful when:**
|
|
584
|
+
- ✅ All 4 providers work correctly
|
|
585
|
+
- ✅ API key validation prevents errors
|
|
586
|
+
- ✅ Connection testing catches issues early
|
|
587
|
+
- ✅ AI analysis improves answer quality
|
|
588
|
+
- ✅ Follow-ups are contextually relevant
|
|
589
|
+
- ✅ Fallback mode works reliably
|
|
590
|
+
- ✅ Zero breaking changes
|
|
591
|
+
- ✅ All tests pass
|
|
592
|
+
|
|
593
|
+
**Status:** ✅ All criteria met!
|
|
594
|
+
|
|
595
|
+
---
|
|
596
|
+
|
|
597
|
+
**Created:** 2025-10-03
|
|
598
|
+
**Version:** v0.4.0 (Upcoming Release)
|
|
599
|
+
**Testing:** Complete
|
|
600
|
+
**Status:** ✅ Ready for Release
|