wiggum-cli 0.4.1 → 0.4.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/dist/ai/agents/context-enricher.d.ts.map +1 -1
- package/dist/ai/agents/context-enricher.js +97 -36
- package/dist/ai/agents/context-enricher.js.map +1 -1
- package/dist/ai/agents/evaluator-optimizer.d.ts.map +1 -1
- package/dist/ai/agents/evaluator-optimizer.js +78 -11
- package/dist/ai/agents/evaluator-optimizer.js.map +1 -1
- package/dist/ai/agents/mcp-detector.d.ts +6 -0
- package/dist/ai/agents/mcp-detector.d.ts.map +1 -1
- package/dist/ai/agents/mcp-detector.js +11 -4
- package/dist/ai/agents/mcp-detector.js.map +1 -1
- package/dist/ai/agents/stack-researcher.d.ts.map +1 -1
- package/dist/ai/agents/stack-researcher.js +29 -12
- package/dist/ai/agents/stack-researcher.js.map +1 -1
- package/dist/ai/agents/synthesis-agent.d.ts.map +1 -1
- package/dist/ai/agents/synthesis-agent.js +17 -12
- package/dist/ai/agents/synthesis-agent.js.map +1 -1
- package/dist/ai/agents/tech-researcher.d.ts.map +1 -1
- package/dist/ai/agents/tech-researcher.js +29 -11
- package/dist/ai/agents/tech-researcher.js.map +1 -1
- package/dist/ai/enhancer.d.ts.map +1 -1
- package/dist/ai/enhancer.js +11 -1
- package/dist/ai/enhancer.js.map +1 -1
- package/dist/ai/index.d.ts +1 -1
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +1 -1
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/tools/context7.d.ts +18 -24
- package/dist/ai/tools/context7.d.ts.map +1 -1
- package/dist/ai/tools/context7.js +14 -122
- package/dist/ai/tools/context7.js.map +1 -1
- package/dist/ai/tools/index.d.ts +1 -1
- package/dist/ai/tools/index.d.ts.map +1 -1
- package/dist/ai/tools/index.js +1 -1
- package/dist/ai/tools/index.js.map +1 -1
- package/dist/ai/tools/tavily.d.ts +1 -0
- package/dist/ai/tools/tavily.d.ts.map +1 -1
- package/dist/ai/tools/tavily.js +13 -8
- package/dist/ai/tools/tavily.js.map +1 -1
- package/package.json +2 -1
- package/src/ai/agents/context-enricher.ts +103 -37
- package/src/ai/agents/evaluator-optimizer.ts +83 -11
- package/src/ai/agents/mcp-detector.ts +11 -4
- package/src/ai/agents/stack-researcher.ts +30 -12
- package/src/ai/agents/synthesis-agent.ts +17 -12
- package/src/ai/agents/tech-researcher.ts +30 -11
- package/src/ai/enhancer.ts +9 -1
- package/src/ai/index.ts +1 -1
- package/src/ai/tools/context7.ts +17 -152
- package/src/ai/tools/index.ts +1 -3
- package/src/ai/tools/tavily.ts +13 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-enricher.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/context-enricher.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"context-enricher.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/context-enricher.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,IAAI,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA8ExE;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,oBAAoB,EAC3B,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,eAAe,CAAC,CAoD1B"}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* Context Enricher Worker (Phase 2)
|
|
3
3
|
* Explores the codebase to gather enriched context based on the analysis plan
|
|
4
4
|
*/
|
|
5
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
6
|
+
import { join } from 'node:path';
|
|
5
7
|
import { stepCountIs } from 'ai';
|
|
6
8
|
import { createExplorationTools } from '../tools.js';
|
|
7
9
|
import { isReasoningModel } from '../providers.js';
|
|
@@ -12,7 +14,7 @@ import { detectProjectType } from './stack-utils.js';
|
|
|
12
14
|
/**
|
|
13
15
|
* System prompt for the Context Enricher worker
|
|
14
16
|
*/
|
|
15
|
-
const CONTEXT_ENRICHER_SYSTEM_PROMPT = `You are a Context Enricher worker. Your job is to explore specific areas of a codebase and
|
|
17
|
+
const CONTEXT_ENRICHER_SYSTEM_PROMPT = `You are a Context Enricher worker. Your job is to explore specific areas of a codebase and discover ACTUAL file paths and structures.
|
|
16
18
|
|
|
17
19
|
## Your Mission
|
|
18
20
|
Based on the analysis plan, explore the codebase to:
|
|
@@ -22,35 +24,61 @@ Based on the analysis plan, explore the codebase to:
|
|
|
22
24
|
4. Find available commands (from package.json)
|
|
23
25
|
5. Answer the specific questions provided
|
|
24
26
|
|
|
27
|
+
## IMPORTANT: Token Efficiency
|
|
28
|
+
- Make at most 4-5 tool calls total, then produce output
|
|
29
|
+
- Priority: package.json → root listing → one key directory
|
|
30
|
+
- Don't explore every subdirectory - sample enough to understand structure
|
|
31
|
+
- ALWAYS produce JSON output even with partial information
|
|
32
|
+
|
|
25
33
|
## Tools Available
|
|
26
34
|
- searchCode: Search using ripgrep patterns
|
|
27
35
|
- readFile: Read file contents
|
|
28
36
|
- listDirectory: List directory structure
|
|
29
|
-
- getPackageInfo: Get package.json info
|
|
37
|
+
- getPackageInfo: Get package.json info (use specific fields like "bin", "main", "scripts")
|
|
30
38
|
|
|
31
39
|
## Exploration Strategy
|
|
32
|
-
1.
|
|
33
|
-
2.
|
|
34
|
-
3.
|
|
35
|
-
4.
|
|
40
|
+
1. Read package.json FIRST for main/bin entries - these are authoritative entry points
|
|
41
|
+
2. List root directory to discover actual structure (src/, app/, pages/, lib/, cmd/, etc.)
|
|
42
|
+
3. Explore ONE key directory to understand its purpose
|
|
43
|
+
4. Produce output - don't exhaustively explore
|
|
44
|
+
|
|
45
|
+
## Project Types & Entry Point Patterns
|
|
46
|
+
- MCP Server: Has @modelcontextprotocol deps → main field or src/index.ts
|
|
47
|
+
- REST API: Express/Fastify/Hono → main field, app.ts, server.ts, or src/
|
|
48
|
+
- Next.js App: next in deps → app/page.tsx, pages/index.tsx, or pages/_app.tsx
|
|
49
|
+
- CLI Tool: Has bin entry in package.json → use the bin paths directly
|
|
50
|
+
- Library: main/module fields → use those paths
|
|
51
|
+
- Python: main.py, app.py, or __main__.py at root
|
|
52
|
+
- Go: main.go or cmd/*/main.go
|
|
36
53
|
|
|
37
|
-
##
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
|
|
43
|
-
|
|
54
|
+
## CRITICAL: Output Requirements
|
|
55
|
+
- entryPoints: ONLY actual file paths you discovered
|
|
56
|
+
- NEVER output instructions like "Check package.json..."
|
|
57
|
+
- NEVER output suggestions like "If exists, use..."
|
|
58
|
+
- Priority order for discovery:
|
|
59
|
+
1. package.json "bin" field paths (for CLI tools)
|
|
60
|
+
2. package.json "main" or "module" field paths
|
|
61
|
+
3. Framework conventions (app/page.tsx, pages/index.tsx)
|
|
62
|
+
4. Common patterns you find (index.ts, main.ts, app.ts)
|
|
63
|
+
- If truly nothing found, use empty array [] - don't guess
|
|
64
|
+
- keyDirectories: ONLY directories that actually exist with their discovered purpose
|
|
65
|
+
- First list root to find actual directories (don't assume src/ exists)
|
|
66
|
+
- Map each real directory to its purpose based on file contents
|
|
67
|
+
- Example: {"src/commands": "CLI commands", "app": "Next.js app router"}
|
|
44
68
|
|
|
45
69
|
## Output Format
|
|
46
|
-
|
|
70
|
+
Output ONLY valid JSON with discovered facts, not exploration instructions:
|
|
47
71
|
{
|
|
48
|
-
"entryPoints": ["
|
|
49
|
-
"keyDirectories": {
|
|
72
|
+
"entryPoints": ["bin/cli.js", "dist/index.js"],
|
|
73
|
+
"keyDirectories": {
|
|
74
|
+
"src": "TypeScript source code",
|
|
75
|
+
"bin": "CLI entry scripts",
|
|
76
|
+
"lib": "Compiled output"
|
|
77
|
+
},
|
|
50
78
|
"namingConventions": "camelCase files, PascalCase components",
|
|
51
79
|
"commands": {"test": "npm test", "build": "npm run build"},
|
|
52
80
|
"answeredQuestions": {"What is the auth strategy?": "NextAuth with JWT"},
|
|
53
|
-
"projectType": "
|
|
81
|
+
"projectType": "CLI Tool"
|
|
54
82
|
}`;
|
|
55
83
|
/**
|
|
56
84
|
* Run the Context Enricher worker
|
|
@@ -75,7 +103,7 @@ Start by exploring the specified areas, then answer the questions and produce yo
|
|
|
75
103
|
system: CONTEXT_ENRICHER_SYSTEM_PROMPT,
|
|
76
104
|
prompt,
|
|
77
105
|
tools,
|
|
78
|
-
stopWhen: stepCountIs(5),
|
|
106
|
+
stopWhen: stepCountIs(5), // Reduced from 8 to leave tokens for JSON output
|
|
79
107
|
maxOutputTokens: 3000,
|
|
80
108
|
...(isReasoningModel(modelId) ? {} : { temperature: 0.3 }),
|
|
81
109
|
experimental_telemetry: {
|
|
@@ -88,8 +116,8 @@ Start by exploring the specified areas, then answer the questions and produce yo
|
|
|
88
116
|
},
|
|
89
117
|
},
|
|
90
118
|
});
|
|
91
|
-
// Parse the response
|
|
92
|
-
const context = parseEnrichedContext(result.text, result.steps, verbose);
|
|
119
|
+
// Parse the response (pass input for fallback derivation)
|
|
120
|
+
const context = parseEnrichedContext(result.text, result.steps, verbose, input);
|
|
93
121
|
if (verbose) {
|
|
94
122
|
logger.info(`Context Enricher: Found ${context.entryPoints.length} entry points, answered ${Object.keys(context.answeredQuestions).length} questions`);
|
|
95
123
|
}
|
|
@@ -105,7 +133,7 @@ Start by exploring the specified areas, then answer the questions and produce yo
|
|
|
105
133
|
/**
|
|
106
134
|
* Parse the enriched context from agent response
|
|
107
135
|
*/
|
|
108
|
-
function parseEnrichedContext(text, steps, verbose) {
|
|
136
|
+
function parseEnrichedContext(text, steps, verbose, input) {
|
|
109
137
|
// Try to get text from the result or steps
|
|
110
138
|
let textToParse = text;
|
|
111
139
|
if (!textToParse || textToParse.trim() === '') {
|
|
@@ -122,7 +150,7 @@ function parseEnrichedContext(text, steps, verbose) {
|
|
|
122
150
|
if (verbose) {
|
|
123
151
|
logger.warn('Context Enricher: No text output found');
|
|
124
152
|
}
|
|
125
|
-
return getDefaultEnrichedContext();
|
|
153
|
+
return getDefaultEnrichedContext(input);
|
|
126
154
|
}
|
|
127
155
|
// Use safe JSON parser with repair capabilities
|
|
128
156
|
const parsed = parseJsonSafe(textToParse);
|
|
@@ -130,32 +158,65 @@ function parseEnrichedContext(text, steps, verbose) {
|
|
|
130
158
|
if (verbose) {
|
|
131
159
|
logger.warn('Context Enricher: Failed to parse JSON response');
|
|
132
160
|
}
|
|
133
|
-
return getDefaultEnrichedContext();
|
|
161
|
+
return getDefaultEnrichedContext(input);
|
|
134
162
|
}
|
|
135
|
-
// Build result with defaults for missing fields
|
|
163
|
+
// Build result with empty defaults for missing fields (don't guess)
|
|
136
164
|
return {
|
|
137
|
-
entryPoints: parsed.entryPoints || [
|
|
138
|
-
keyDirectories: parsed.keyDirectories || {
|
|
139
|
-
namingConventions: parsed.namingConventions || '
|
|
140
|
-
commands: parsed.commands || {
|
|
165
|
+
entryPoints: parsed.entryPoints || [], // Empty = not found, not guessed
|
|
166
|
+
keyDirectories: parsed.keyDirectories || {}, // Empty = not found
|
|
167
|
+
namingConventions: parsed.namingConventions || 'unknown',
|
|
168
|
+
commands: parsed.commands || {},
|
|
141
169
|
answeredQuestions: parsed.answeredQuestions || {},
|
|
142
170
|
projectType: parsed.projectType || 'Unknown',
|
|
143
171
|
};
|
|
144
172
|
}
|
|
173
|
+
/**
|
|
174
|
+
* Derive entry points from package.json when AI fails to discover them
|
|
175
|
+
*/
|
|
176
|
+
function deriveEntryPointsFromPackageJson(projectRoot) {
|
|
177
|
+
const entryPoints = [];
|
|
178
|
+
const packageJsonPath = join(projectRoot, 'package.json');
|
|
179
|
+
if (!existsSync(packageJsonPath)) {
|
|
180
|
+
return entryPoints;
|
|
181
|
+
}
|
|
182
|
+
try {
|
|
183
|
+
const content = readFileSync(packageJsonPath, 'utf-8');
|
|
184
|
+
const pkg = JSON.parse(content);
|
|
185
|
+
// CLI tools: use bin field
|
|
186
|
+
if (pkg.bin) {
|
|
187
|
+
if (typeof pkg.bin === 'string') {
|
|
188
|
+
entryPoints.push(pkg.bin);
|
|
189
|
+
}
|
|
190
|
+
else if (typeof pkg.bin === 'object' && pkg.bin !== null) {
|
|
191
|
+
entryPoints.push(...Object.values(pkg.bin));
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
// Libraries: use main/module fields
|
|
195
|
+
if (typeof pkg.main === 'string') {
|
|
196
|
+
entryPoints.push(pkg.main);
|
|
197
|
+
}
|
|
198
|
+
if (typeof pkg.module === 'string') {
|
|
199
|
+
entryPoints.push(pkg.module);
|
|
200
|
+
}
|
|
201
|
+
// Filter out compiled output (dist/) and dedupe
|
|
202
|
+
return [...new Set(entryPoints.filter(ep => ep && !ep.startsWith('dist/')))];
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
return entryPoints;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
145
208
|
/**
|
|
146
209
|
* Get default enriched context when parsing fails
|
|
210
|
+
* Returns empty arrays instead of guesses, but derives entry points from package.json
|
|
147
211
|
*/
|
|
148
212
|
function getDefaultEnrichedContext(input) {
|
|
149
213
|
const projectType = detectProjectType(input?.scanResult.stack);
|
|
214
|
+
const entryPoints = input ? deriveEntryPointsFromPackageJson(input.scanResult.projectRoot) : [];
|
|
150
215
|
return {
|
|
151
|
-
entryPoints
|
|
152
|
-
keyDirectories: {
|
|
153
|
-
namingConventions: '
|
|
154
|
-
commands: {
|
|
155
|
-
test: 'npm test',
|
|
156
|
-
build: 'npm run build',
|
|
157
|
-
dev: 'npm run dev',
|
|
158
|
-
},
|
|
216
|
+
entryPoints, // Derived from package.json, not guessed
|
|
217
|
+
keyDirectories: {}, // Empty = not discovered
|
|
218
|
+
namingConventions: 'unknown',
|
|
219
|
+
commands: {}, // Empty = not discovered
|
|
159
220
|
answeredQuestions: {},
|
|
160
221
|
projectType,
|
|
161
222
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-enricher.js","sourceRoot":"","sources":["../../../src/ai/agents/context-enricher.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAsB,MAAM,IAAI,CAAC;AAErD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD;;GAEG;AACH,MAAM,8BAA8B,GAAG
|
|
1
|
+
{"version":3,"file":"context-enricher.js","sourceRoot":"","sources":["../../../src/ai/agents/context-enricher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluator-optimizer.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/evaluator-optimizer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,IAAI,CAAC;AAExC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAoB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"evaluator-optimizer.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/evaluator-optimizer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,IAAI,CAAC;AAExC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAoB,MAAM,YAAY,CAAC;AA6IvE;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,kBAAkB,EAC1B,UAAU,EAAE,UAAU,EACtB,aAAa,GAAE,MAAU,EACzB,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,kBAAkB,CAAC,CAsC7B"}
|
|
@@ -31,6 +31,55 @@ const optimizerOutputSchema = z.object({
|
|
|
31
31
|
additionalEntryPoints: z.array(z.string()).describe('Additional entry points to add (empty array if none)'),
|
|
32
32
|
additionalMcpServers: z.array(z.string()).describe('Additional MCP servers to recommend (empty array if none)'),
|
|
33
33
|
});
|
|
34
|
+
/**
|
|
35
|
+
* Patterns that indicate an entry point is an instruction, not a real path
|
|
36
|
+
*/
|
|
37
|
+
const INVALID_ENTRY_POINT_PATTERNS = [
|
|
38
|
+
/^check /i,
|
|
39
|
+
/^if /i,
|
|
40
|
+
/^open /i,
|
|
41
|
+
/^look /i,
|
|
42
|
+
/^search /i,
|
|
43
|
+
/^find /i,
|
|
44
|
+
/^inspect /i,
|
|
45
|
+
/^run /i,
|
|
46
|
+
/^see /i,
|
|
47
|
+
/^review /i,
|
|
48
|
+
];
|
|
49
|
+
/**
|
|
50
|
+
* Check if a single entry point looks like an actual file path (not an instruction)
|
|
51
|
+
*/
|
|
52
|
+
function isValidEntryPoint(ep) {
|
|
53
|
+
// Has a known file extension (ts, js, tsx, jsx, mjs, cjs, py, go, rs)
|
|
54
|
+
const hasExtension = /\.(ts|js|tsx|jsx|mjs|cjs|py|go|rs)$/.test(ep);
|
|
55
|
+
// Looks like a path with directory separator (e.g., bin/cli, src/index)
|
|
56
|
+
const hasPathSeparator = ep.includes('/');
|
|
57
|
+
// Must not start with instruction words
|
|
58
|
+
const isNotInstruction = !INVALID_ENTRY_POINT_PATTERNS.some(pattern => pattern.test(ep));
|
|
59
|
+
// Valid if: (has extension) OR (has path separator for extensionless like bin/wiggum)
|
|
60
|
+
// AND doesn't look like an instruction
|
|
61
|
+
return (hasExtension || hasPathSeparator) && isNotInstruction;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Check if entry points look like actual file paths (not instructions)
|
|
65
|
+
*/
|
|
66
|
+
function hasValidEntryPoints(entryPoints) {
|
|
67
|
+
if (entryPoints.length === 0)
|
|
68
|
+
return false;
|
|
69
|
+
return entryPoints.every(isValidEntryPoint);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Filter entry points to only include valid file paths
|
|
73
|
+
*/
|
|
74
|
+
function filterValidEntryPoints(entryPoints) {
|
|
75
|
+
return entryPoints.filter(isValidEntryPoint);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Normalize MCP names (strip parenthetical explanations)
|
|
79
|
+
*/
|
|
80
|
+
function normalizeMcpName(name) {
|
|
81
|
+
return name.split('(')[0].trim().toLowerCase();
|
|
82
|
+
}
|
|
34
83
|
/**
|
|
35
84
|
* System prompt for the Evaluator
|
|
36
85
|
*/
|
|
@@ -50,10 +99,16 @@ Evaluate the analysis result for:
|
|
|
50
99
|
- 3-4: Incomplete, vague, or partially incorrect
|
|
51
100
|
- 1-2: Poor, missing critical information
|
|
52
101
|
|
|
53
|
-
## Quality Checks
|
|
54
|
-
- Entry points
|
|
55
|
-
-
|
|
56
|
-
-
|
|
102
|
+
## Quality Checks - IMPORTANT
|
|
103
|
+
- Entry points MUST be actual file paths (e.g., "src/index.ts", "src/cli.ts")
|
|
104
|
+
- FAIL if they contain instructions like "Check", "If", "Open", "Look"
|
|
105
|
+
- FAIL if they don't look like file paths (no / or . characters)
|
|
106
|
+
- Key directories MUST map actual directories to their purposes
|
|
107
|
+
- FAIL if only generic entries like {"src": "Source code"}
|
|
108
|
+
- Guidelines MUST be actionable commands, not exploration tasks
|
|
109
|
+
- Good: "Run npm test", "Check API routes in src/routes"
|
|
110
|
+
- Bad: "Investigate the codebase", "Look for patterns"
|
|
111
|
+
- MCP servers MUST be single-word identifiers only (no parenthetical explanations)
|
|
57
112
|
|
|
58
113
|
Be constructive but honest. If it's good, say so. If it needs work, explain why.`;
|
|
59
114
|
/**
|
|
@@ -71,7 +126,13 @@ Based on the evaluation feedback, improve:
|
|
|
71
126
|
- Keep guidelines to 5-10 words
|
|
72
127
|
- Start with action verbs
|
|
73
128
|
- Be specific to the detected stack
|
|
74
|
-
- Don't remove good content, only add or improve
|
|
129
|
+
- Don't remove good content, only add or improve
|
|
130
|
+
|
|
131
|
+
## MCP Server Names
|
|
132
|
+
- Use ONLY single-word identifiers: "playwright", "supabase", "postgres"
|
|
133
|
+
- NEVER add explanations in parentheses
|
|
134
|
+
- NEVER add descriptions after the name
|
|
135
|
+
- If unsure, omit rather than guess`;
|
|
75
136
|
/**
|
|
76
137
|
* Run the Evaluator-Optimizer QA loop
|
|
77
138
|
*/
|
|
@@ -87,9 +148,10 @@ export async function runEvaluatorOptimizer(model, modelId, result, scanResult,
|
|
|
87
148
|
logger.info(`Issues: ${evaluation.specificIssues.join(', ')}`);
|
|
88
149
|
}
|
|
89
150
|
}
|
|
90
|
-
// Check if quality meets threshold
|
|
151
|
+
// Check if quality meets threshold (including valid entry point paths)
|
|
91
152
|
if (evaluation.qualityScore >= QUALITY_THRESHOLD &&
|
|
92
153
|
evaluation.hasEntryPoints &&
|
|
154
|
+
hasValidEntryPoints(currentResult.codebaseAnalysis.projectContext.entryPoints) &&
|
|
93
155
|
evaluation.hasImplementationGuidelines) {
|
|
94
156
|
if (verbose) {
|
|
95
157
|
logger.info('Evaluator: Quality threshold met, skipping optimization');
|
|
@@ -203,16 +265,21 @@ Provide improved guidelines and any additional entry points or MCP servers.`;
|
|
|
203
265
|
: result.codebaseAnalysis.implementationGuidelines,
|
|
204
266
|
projectContext: {
|
|
205
267
|
...result.codebaseAnalysis.projectContext,
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
268
|
+
// Filter invalid entry points (instructions) and merge with new ones
|
|
269
|
+
entryPoints: filterValidEntryPoints([
|
|
270
|
+
...result.codebaseAnalysis.projectContext.entryPoints,
|
|
271
|
+
...improvements.additionalEntryPoints,
|
|
272
|
+
]).filter((ep, i, arr) => arr.indexOf(ep) === i), // dedupe
|
|
209
273
|
},
|
|
210
274
|
},
|
|
211
275
|
mcpServers: {
|
|
212
276
|
...result.mcpServers,
|
|
213
277
|
recommended: improvements.additionalMcpServers.length > 0
|
|
214
|
-
? [...new Set([
|
|
215
|
-
|
|
278
|
+
? [...new Set([
|
|
279
|
+
...result.mcpServers.recommended.map(normalizeMcpName),
|
|
280
|
+
...improvements.additionalMcpServers.map(normalizeMcpName)
|
|
281
|
+
])]
|
|
282
|
+
: result.mcpServers.recommended.map(normalizeMcpName),
|
|
216
283
|
},
|
|
217
284
|
};
|
|
218
285
|
if (verbose) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluator-optimizer.js","sourceRoot":"","sources":["../../../src/ai/agents/evaluator-optimizer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD;;;GAGG;AACH,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B;;GAEG;AACH,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACnF,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAC3E,2BAA2B,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;IACnG,qBAAqB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;IAC3F,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACrF,sBAAsB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,wCAAwC,CAAC;CAC/F,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IACtF,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,sDAAsD,CAAC;IAC3G,oBAAoB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,2DAA2D,CAAC;CAChH,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,uBAAuB,GAAG
|
|
1
|
+
{"version":3,"file":"evaluator-optimizer.js","sourceRoot":"","sources":["../../../src/ai/agents/evaluator-optimizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,12 @@ export declare function detectRalphMcpServers(stack: DetectedStack): RalphMcpSer
|
|
|
18
18
|
/**
|
|
19
19
|
* Convert RalphMcpServers to the legacy McpRecommendations format
|
|
20
20
|
* for backward compatibility with existing code
|
|
21
|
+
*
|
|
22
|
+
* Ralph loop essentials only:
|
|
23
|
+
* - Playwright for E2E testing (always)
|
|
24
|
+
* - Database MCP if detected (Supabase, Convex, Postgres, etc.)
|
|
25
|
+
*
|
|
26
|
+
* Note: filesystem and git are assumed available in Claude Code
|
|
21
27
|
*/
|
|
22
28
|
export declare function convertToLegacyMcpRecommendations(ralphMcp: RalphMcpServers): {
|
|
23
29
|
essential: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-detector.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/mcp-detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAwDlD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,eAAe,CAsG3E;AAED
|
|
1
|
+
{"version":3,"file":"mcp-detector.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/mcp-detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAwDlD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,eAAe,CAsG3E;AAED;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,eAAe,GAAG;IAC5E,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAkBA"}
|
|
@@ -159,20 +159,27 @@ export function detectRalphMcpServers(stack) {
|
|
|
159
159
|
/**
|
|
160
160
|
* Convert RalphMcpServers to the legacy McpRecommendations format
|
|
161
161
|
* for backward compatibility with existing code
|
|
162
|
+
*
|
|
163
|
+
* Ralph loop essentials only:
|
|
164
|
+
* - Playwright for E2E testing (always)
|
|
165
|
+
* - Database MCP if detected (Supabase, Convex, Postgres, etc.)
|
|
166
|
+
*
|
|
167
|
+
* Note: filesystem and git are assumed available in Claude Code
|
|
162
168
|
*/
|
|
163
169
|
export function convertToLegacyMcpRecommendations(ralphMcp) {
|
|
164
|
-
const essential = [
|
|
165
|
-
//
|
|
170
|
+
const essential = [];
|
|
171
|
+
// Ralph loop essentials only
|
|
172
|
+
// 1. Playwright for E2E testing (always)
|
|
166
173
|
if (ralphMcp.e2eTesting) {
|
|
167
174
|
essential.push(ralphMcp.e2eTesting);
|
|
168
175
|
}
|
|
169
|
-
//
|
|
176
|
+
// 2. Database MCP if detected (Supabase, Convex, Postgres, etc.)
|
|
170
177
|
if (ralphMcp.database) {
|
|
171
178
|
essential.push(ralphMcp.database);
|
|
172
179
|
}
|
|
173
180
|
return {
|
|
174
181
|
essential,
|
|
175
|
-
recommended:
|
|
182
|
+
recommended: [], // No optional MCPs - keep focused on Ralph loop
|
|
176
183
|
};
|
|
177
184
|
}
|
|
178
185
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-detector.js","sourceRoot":"","sources":["../../../src/ai/agents/mcp-detector.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"mcp-detector.js","sourceRoot":"","sources":["../../../src/ai/agents/mcp-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack-researcher.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/stack-researcher.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAe,KAAK,aAAa,EAAa,MAAM,IAAI,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAqB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"stack-researcher.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/stack-researcher.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAe,KAAK,aAAa,EAAa,MAAM,IAAI,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAqB,MAAM,YAAY,CAAC;AAmLzF;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,oBAAoB,EAC3B,OAAO,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3D,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAmD/B"}
|
|
@@ -8,33 +8,47 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { stepCountIs } from 'ai';
|
|
10
10
|
import { createTavilySearchTool } from '../tools/tavily.js';
|
|
11
|
-
import {
|
|
11
|
+
import { createContext7Tools } from '../tools/context7.js';
|
|
12
12
|
import { isReasoningModel } from '../providers.js';
|
|
13
13
|
import { logger } from '../../utils/logger.js';
|
|
14
14
|
import { parseJsonSafe } from '../../utils/json-repair.js';
|
|
15
15
|
import { getTracedAI } from '../../utils/tracing.js';
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* Get the current year for dynamic prompt generation
|
|
18
18
|
*/
|
|
19
|
-
|
|
19
|
+
function getCurrentYear() {
|
|
20
|
+
return new Date().getFullYear();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Generate system prompt for Stack Researcher with tools
|
|
24
|
+
*/
|
|
25
|
+
function getStackResearcherWithToolsPrompt() {
|
|
26
|
+
const year = getCurrentYear();
|
|
27
|
+
return `You are a Stack Researcher agent with access to web search and documentation lookup tools.
|
|
20
28
|
|
|
21
29
|
## Your Mission
|
|
22
30
|
Research the detected technology stack to find:
|
|
23
|
-
1. Current best practices
|
|
31
|
+
1. Current best practices (${year}+)
|
|
24
32
|
2. Common anti-patterns to avoid
|
|
25
33
|
3. Testing tools and patterns
|
|
26
34
|
4. Debugging approaches
|
|
27
35
|
5. Useful documentation links
|
|
28
36
|
|
|
29
37
|
## Tools Available
|
|
30
|
-
- tavilySearch: Search the web
|
|
31
|
-
-
|
|
38
|
+
- tavilySearch: Search the web (use timeRange for recent results)
|
|
39
|
+
- resolveLibraryId: Find the Context7 library ID for a package
|
|
40
|
+
- queryDocs: Query documentation using the resolved library ID
|
|
32
41
|
|
|
33
42
|
## Research Strategy
|
|
34
|
-
1.
|
|
35
|
-
2.
|
|
36
|
-
3.
|
|
37
|
-
|
|
43
|
+
1. Use tavilySearch with timeRange: "year" for current practices
|
|
44
|
+
2. For library docs: First call resolveLibraryId, then queryDocs with SPECIFIC queries
|
|
45
|
+
3. Break research into focused queries, not broad searches
|
|
46
|
+
|
|
47
|
+
## Good vs Bad Queries
|
|
48
|
+
- Tavily Good: "React testing patterns vitest"
|
|
49
|
+
- Tavily Bad: "React Vitest Playwright best practices ${year}"
|
|
50
|
+
- Context7 Good: resolveLibraryId("vitest") → queryDocs("test setup configuration")
|
|
51
|
+
- Context7 Bad: queryDocs("best practices production testing documentation")
|
|
38
52
|
|
|
39
53
|
## Output Format
|
|
40
54
|
After research, output ONLY valid JSON with this structure:
|
|
@@ -63,6 +77,7 @@ After research, output ONLY valid JSON with this structure:
|
|
|
63
77
|
}
|
|
64
78
|
|
|
65
79
|
Keep each item concise (5-15 words max). Max 5 items per array.`;
|
|
80
|
+
}
|
|
66
81
|
/**
|
|
67
82
|
* System prompt for Stack Researcher without tools (knowledge-only)
|
|
68
83
|
*/
|
|
@@ -180,7 +195,9 @@ export async function runStackResearcher(model, modelId, input, options, verbose
|
|
|
180
195
|
tools.tavilySearch = createTavilySearchTool(options.tavilyApiKey);
|
|
181
196
|
}
|
|
182
197
|
if (options.context7ApiKey) {
|
|
183
|
-
|
|
198
|
+
const c7Tools = createContext7Tools(options.context7ApiKey);
|
|
199
|
+
tools.resolveLibraryId = c7Tools.resolveLibraryId;
|
|
200
|
+
tools.queryDocs = c7Tools.queryDocs;
|
|
184
201
|
}
|
|
185
202
|
const hasTools = Object.keys(tools).length > 0;
|
|
186
203
|
const researchMode = getResearchMode(input.capabilities);
|
|
@@ -188,7 +205,7 @@ export async function runStackResearcher(model, modelId, input, options, verbose
|
|
|
188
205
|
logger.info(`Stack Researcher running in ${researchMode} mode`);
|
|
189
206
|
}
|
|
190
207
|
const systemPrompt = hasTools
|
|
191
|
-
?
|
|
208
|
+
? getStackResearcherWithToolsPrompt()
|
|
192
209
|
: STACK_RESEARCHER_KNOWLEDGE_ONLY_PROMPT;
|
|
193
210
|
const prompt = createResearchPrompt(input.stack, input.projectType, hasTools);
|
|
194
211
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack-researcher.js","sourceRoot":"","sources":["../../../src/ai/agents/stack-researcher.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAiC,MAAM,IAAI,CAAC;AAGhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"stack-researcher.js","sourceRoot":"","sources":["../../../src/ai/agents/stack-researcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"synthesis-agent.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/synthesis-agent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,IAAI,CAAC;AAExC,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAInB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"synthesis-agent.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/synthesis-agent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,IAAI,CAAC;AAExC,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAInB,MAAM,YAAY,CAAC;AAiDpB;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,cAAc,EACrB,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,kBAAkB,CAAC,CA8D7B"}
|