wiggum-cli 0.4.0 → 0.4.2
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 +37 -17
- 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 +77 -14
- package/dist/ai/agents/evaluator-optimizer.js.map +1 -1
- package/dist/ai/agents/index.d.ts +1 -1
- package/dist/ai/agents/index.d.ts.map +1 -1
- package/dist/ai/agents/index.js +25 -32
- package/dist/ai/agents/index.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.js +1 -1
- 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/agents/types.d.ts +6 -0
- package/dist/ai/agents/types.d.ts.map +1 -1
- package/dist/ai/enhancer.d.ts +4 -0
- package/dist/ai/enhancer.d.ts.map +1 -1
- package/dist/ai/enhancer.js +3 -0
- 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/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +11 -2
- package/dist/commands/init.js.map +1 -1
- package/package.json +2 -1
- package/src/ai/agents/context-enricher.ts +38 -18
- package/src/ai/agents/evaluator-optimizer.ts +81 -14
- package/src/ai/agents/index.ts +27 -33
- 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 +1 -1
- package/src/ai/agents/tech-researcher.ts +30 -11
- package/src/ai/agents/types.ts +7 -0
- package/src/ai/enhancer.ts +6 -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
- package/src/commands/init.ts +10 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-enricher.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/context-enricher.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,IAAI,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"context-enricher.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/context-enricher.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,IAAI,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAwExE;;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"}
|
|
@@ -12,7 +12,7 @@ import { detectProjectType } from './stack-utils.js';
|
|
|
12
12
|
/**
|
|
13
13
|
* System prompt for the Context Enricher worker
|
|
14
14
|
*/
|
|
15
|
-
const CONTEXT_ENRICHER_SYSTEM_PROMPT = `You are a Context Enricher worker. Your job is to explore specific areas of a codebase and
|
|
15
|
+
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
16
|
|
|
17
17
|
## Your Mission
|
|
18
18
|
Based on the analysis plan, explore the codebase to:
|
|
@@ -29,28 +29,48 @@ Based on the analysis plan, explore the codebase to:
|
|
|
29
29
|
- getPackageInfo: Get package.json info
|
|
30
30
|
|
|
31
31
|
## Exploration Strategy
|
|
32
|
-
1.
|
|
33
|
-
2.
|
|
34
|
-
3.
|
|
35
|
-
4.
|
|
32
|
+
1. Read package.json FIRST for main/bin entries - these are authoritative entry points
|
|
33
|
+
2. List root directory to discover actual structure (src/, app/, pages/, lib/, cmd/, etc.)
|
|
34
|
+
3. Explore discovered directories to understand their purpose
|
|
35
|
+
4. Search for patterns to answer specific questions
|
|
36
36
|
|
|
37
|
-
## Project Types
|
|
38
|
-
- MCP Server: Has @modelcontextprotocol
|
|
39
|
-
- REST API: Express/Fastify/Hono
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
37
|
+
## Project Types & Entry Point Patterns
|
|
38
|
+
- MCP Server: Has @modelcontextprotocol deps → main field or src/index.ts
|
|
39
|
+
- REST API: Express/Fastify/Hono → main field, app.ts, server.ts, or src/
|
|
40
|
+
- Next.js App: next in deps → app/page.tsx, pages/index.tsx, or pages/_app.tsx
|
|
41
|
+
- CLI Tool: Has bin entry in package.json → use the bin paths directly
|
|
42
|
+
- Library: main/module fields → use those paths
|
|
43
|
+
- Python: main.py, app.py, or __main__.py at root
|
|
44
|
+
- Go: main.go or cmd/*/main.go
|
|
45
|
+
|
|
46
|
+
## CRITICAL: Output Requirements
|
|
47
|
+
- entryPoints: ONLY actual file paths you discovered
|
|
48
|
+
- NEVER output instructions like "Check package.json..."
|
|
49
|
+
- NEVER output suggestions like "If exists, use..."
|
|
50
|
+
- Priority order for discovery:
|
|
51
|
+
1. package.json "bin" field paths (for CLI tools)
|
|
52
|
+
2. package.json "main" or "module" field paths
|
|
53
|
+
3. Framework conventions (app/page.tsx, pages/index.tsx)
|
|
54
|
+
4. Common patterns you find (index.ts, main.ts, app.ts)
|
|
55
|
+
- If truly nothing found, use empty array [] - don't guess
|
|
56
|
+
- keyDirectories: ONLY directories that actually exist with their discovered purpose
|
|
57
|
+
- First list root to find actual directories (don't assume src/ exists)
|
|
58
|
+
- Map each real directory to its purpose based on file contents
|
|
59
|
+
- Example: {"src/commands": "CLI commands", "app": "Next.js app router"}
|
|
44
60
|
|
|
45
61
|
## Output Format
|
|
46
|
-
|
|
62
|
+
Output ONLY valid JSON with discovered facts, not exploration instructions:
|
|
47
63
|
{
|
|
48
|
-
"entryPoints": ["
|
|
49
|
-
"keyDirectories": {
|
|
64
|
+
"entryPoints": ["bin/cli.js", "dist/index.js"],
|
|
65
|
+
"keyDirectories": {
|
|
66
|
+
"src": "TypeScript source code",
|
|
67
|
+
"bin": "CLI entry scripts",
|
|
68
|
+
"lib": "Compiled output"
|
|
69
|
+
},
|
|
50
70
|
"namingConventions": "camelCase files, PascalCase components",
|
|
51
71
|
"commands": {"test": "npm test", "build": "npm run build"},
|
|
52
72
|
"answeredQuestions": {"What is the auth strategy?": "NextAuth with JWT"},
|
|
53
|
-
"projectType": "
|
|
73
|
+
"projectType": "CLI Tool"
|
|
54
74
|
}`;
|
|
55
75
|
/**
|
|
56
76
|
* Run the Context Enricher worker
|
|
@@ -75,7 +95,7 @@ Start by exploring the specified areas, then answer the questions and produce yo
|
|
|
75
95
|
system: CONTEXT_ENRICHER_SYSTEM_PROMPT,
|
|
76
96
|
prompt,
|
|
77
97
|
tools,
|
|
78
|
-
stopWhen: stepCountIs(
|
|
98
|
+
stopWhen: stepCountIs(8), // Increased from 5 to allow proper directory exploration
|
|
79
99
|
maxOutputTokens: 3000,
|
|
80
100
|
...(isReasoningModel(modelId) ? {} : { temperature: 0.3 }),
|
|
81
101
|
experimental_telemetry: {
|
|
@@ -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;AAwIvE;;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"}
|
|
@@ -28,9 +28,54 @@ const evaluationSchema = z.object({
|
|
|
28
28
|
*/
|
|
29
29
|
const optimizerOutputSchema = z.object({
|
|
30
30
|
improvedGuidelines: z.array(z.string()).describe('Improved implementation guidelines'),
|
|
31
|
-
additionalEntryPoints: z.array(z.string()).
|
|
32
|
-
additionalMcpServers: z.array(z.string()).
|
|
31
|
+
additionalEntryPoints: z.array(z.string()).describe('Additional entry points to add (empty array if none)'),
|
|
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
|
+
// Must look like a file path
|
|
54
|
+
const looksLikePath = ep.includes('/') || ep.includes('.') || ep.startsWith('src') || ep.startsWith('app') || ep.startsWith('pages');
|
|
55
|
+
// Must not start with instruction words
|
|
56
|
+
const isNotInstruction = !INVALID_ENTRY_POINT_PATTERNS.some(pattern => pattern.test(ep));
|
|
57
|
+
return looksLikePath && isNotInstruction;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Check if entry points look like actual file paths (not instructions)
|
|
61
|
+
*/
|
|
62
|
+
function hasValidEntryPoints(entryPoints) {
|
|
63
|
+
if (entryPoints.length === 0)
|
|
64
|
+
return false;
|
|
65
|
+
return entryPoints.every(isValidEntryPoint);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Filter entry points to only include valid file paths
|
|
69
|
+
*/
|
|
70
|
+
function filterValidEntryPoints(entryPoints) {
|
|
71
|
+
return entryPoints.filter(isValidEntryPoint);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Normalize MCP names (strip parenthetical explanations)
|
|
75
|
+
*/
|
|
76
|
+
function normalizeMcpName(name) {
|
|
77
|
+
return name.split('(')[0].trim().toLowerCase();
|
|
78
|
+
}
|
|
34
79
|
/**
|
|
35
80
|
* System prompt for the Evaluator
|
|
36
81
|
*/
|
|
@@ -50,10 +95,16 @@ Evaluate the analysis result for:
|
|
|
50
95
|
- 3-4: Incomplete, vague, or partially incorrect
|
|
51
96
|
- 1-2: Poor, missing critical information
|
|
52
97
|
|
|
53
|
-
## Quality Checks
|
|
54
|
-
- Entry points
|
|
55
|
-
-
|
|
56
|
-
-
|
|
98
|
+
## Quality Checks - IMPORTANT
|
|
99
|
+
- Entry points MUST be actual file paths (e.g., "src/index.ts", "src/cli.ts")
|
|
100
|
+
- FAIL if they contain instructions like "Check", "If", "Open", "Look"
|
|
101
|
+
- FAIL if they don't look like file paths (no / or . characters)
|
|
102
|
+
- Key directories MUST map actual directories to their purposes
|
|
103
|
+
- FAIL if only generic entries like {"src": "Source code"}
|
|
104
|
+
- Guidelines MUST be actionable commands, not exploration tasks
|
|
105
|
+
- Good: "Run npm test", "Check API routes in src/routes"
|
|
106
|
+
- Bad: "Investigate the codebase", "Look for patterns"
|
|
107
|
+
- MCP servers MUST be single-word identifiers only (no parenthetical explanations)
|
|
57
108
|
|
|
58
109
|
Be constructive but honest. If it's good, say so. If it needs work, explain why.`;
|
|
59
110
|
/**
|
|
@@ -71,7 +122,13 @@ Based on the evaluation feedback, improve:
|
|
|
71
122
|
- Keep guidelines to 5-10 words
|
|
72
123
|
- Start with action verbs
|
|
73
124
|
- Be specific to the detected stack
|
|
74
|
-
- Don't remove good content, only add or improve
|
|
125
|
+
- Don't remove good content, only add or improve
|
|
126
|
+
|
|
127
|
+
## MCP Server Names
|
|
128
|
+
- Use ONLY single-word identifiers: "playwright", "supabase", "postgres"
|
|
129
|
+
- NEVER add explanations in parentheses
|
|
130
|
+
- NEVER add descriptions after the name
|
|
131
|
+
- If unsure, omit rather than guess`;
|
|
75
132
|
/**
|
|
76
133
|
* Run the Evaluator-Optimizer QA loop
|
|
77
134
|
*/
|
|
@@ -87,9 +144,10 @@ export async function runEvaluatorOptimizer(model, modelId, result, scanResult,
|
|
|
87
144
|
logger.info(`Issues: ${evaluation.specificIssues.join(', ')}`);
|
|
88
145
|
}
|
|
89
146
|
}
|
|
90
|
-
// Check if quality meets threshold
|
|
147
|
+
// Check if quality meets threshold (including valid entry point paths)
|
|
91
148
|
if (evaluation.qualityScore >= QUALITY_THRESHOLD &&
|
|
92
149
|
evaluation.hasEntryPoints &&
|
|
150
|
+
hasValidEntryPoints(currentResult.codebaseAnalysis.projectContext.entryPoints) &&
|
|
93
151
|
evaluation.hasImplementationGuidelines) {
|
|
94
152
|
if (verbose) {
|
|
95
153
|
logger.info('Evaluator: Quality threshold met, skipping optimization');
|
|
@@ -203,16 +261,21 @@ Provide improved guidelines and any additional entry points or MCP servers.`;
|
|
|
203
261
|
: result.codebaseAnalysis.implementationGuidelines,
|
|
204
262
|
projectContext: {
|
|
205
263
|
...result.codebaseAnalysis.projectContext,
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
264
|
+
// Filter invalid entry points (instructions) and merge with new ones
|
|
265
|
+
entryPoints: filterValidEntryPoints([
|
|
266
|
+
...result.codebaseAnalysis.projectContext.entryPoints,
|
|
267
|
+
...improvements.additionalEntryPoints,
|
|
268
|
+
]).filter((ep, i, arr) => arr.indexOf(ep) === i), // dedupe
|
|
209
269
|
},
|
|
210
270
|
},
|
|
211
271
|
mcpServers: {
|
|
212
272
|
...result.mcpServers,
|
|
213
|
-
recommended: improvements.additionalMcpServers
|
|
214
|
-
? [...new Set([
|
|
215
|
-
|
|
273
|
+
recommended: improvements.additionalMcpServers.length > 0
|
|
274
|
+
? [...new Set([
|
|
275
|
+
...result.mcpServers.recommended.map(normalizeMcpName),
|
|
276
|
+
...improvements.additionalMcpServers.map(normalizeMcpName)
|
|
277
|
+
])]
|
|
278
|
+
: result.mcpServers.recommended.map(normalizeMcpName),
|
|
216
279
|
},
|
|
217
280
|
};
|
|
218
281
|
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,EAAE,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"evaluator-optimizer.js","sourceRoot":"","sources":["../../../src/ai/agents/evaluator-optimizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* Phase 3: Synthesis (merge results + MCP detection)
|
|
9
9
|
* Phase 4: Evaluator-Optimizer (QA loop)
|
|
10
10
|
*/
|
|
11
|
-
export type { AnalysisPlan, EnrichedContext, TechResearchResult, RalphMcpServers, EvaluationResult, ContextEnricherInput, TechResearcherInput, SynthesisInput, CodebaseAnalysis, StackResearch, McpRecommendations, MultiAgentAnalysis, AgentCapabilities, AgentOptions, CodebaseAnalystInput, StackResearcherInput, OrchestratorInput, } from './types.js';
|
|
11
|
+
export type { AnalysisPlan, EnrichedContext, TechResearchResult, RalphMcpServers, EvaluationResult, ContextEnricherInput, TechResearcherInput, SynthesisInput, ProgressCallback, CodebaseAnalysis, StackResearch, McpRecommendations, MultiAgentAnalysis, AgentCapabilities, AgentOptions, CodebaseAnalystInput, StackResearcherInput, OrchestratorInput, } from './types.js';
|
|
12
12
|
export { runPlanningOrchestrator } from './planning-orchestrator.js';
|
|
13
13
|
export { runContextEnricher } from './context-enricher.js';
|
|
14
14
|
export { runTechResearcher, runTechResearchPool } from './tech-researcher.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,YAAY,EAEV,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,YAAY,EAEV,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAEhB,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,iCAAiC,EAAE,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EACV,kBAAkB,EAElB,YAAY,EAEb,MAAM,YAAY,CAAC;AAUpB;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,UAAU,EACtB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CA8HpC"}
|
package/dist/ai/agents/index.js
CHANGED
|
@@ -37,13 +37,22 @@ import { logger } from '../../utils/logger.js';
|
|
|
37
37
|
* Phase 4: Evaluator-Optimizer - QA loop (max 2 iterations)
|
|
38
38
|
*/
|
|
39
39
|
export async function runMultiAgentAnalysis(model, modelId, scanResult, options = {}) {
|
|
40
|
-
const { tavilyApiKey, context7ApiKey, verbose = false } = options;
|
|
40
|
+
const { tavilyApiKey, context7ApiKey, verbose = false, onProgress } = options;
|
|
41
|
+
// Helper to report progress (uses callback or falls back to logger)
|
|
42
|
+
const report = (phase, detail) => {
|
|
43
|
+
if (onProgress) {
|
|
44
|
+
onProgress(phase, detail);
|
|
45
|
+
}
|
|
46
|
+
else if (verbose) {
|
|
47
|
+
logger.info(detail ? `${phase}: ${detail}` : phase);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
41
50
|
// Determine capabilities
|
|
42
51
|
const capabilities = {
|
|
43
52
|
hasTavily: !!tavilyApiKey,
|
|
44
53
|
hasContext7: !!context7ApiKey,
|
|
45
54
|
};
|
|
46
|
-
if (verbose) {
|
|
55
|
+
if (verbose && !onProgress) {
|
|
47
56
|
logger.info('Starting multi-agent analysis (4-phase architecture)...');
|
|
48
57
|
logger.info(`Capabilities: Tavily=${capabilities.hasTavily}, Context7=${capabilities.hasContext7}`);
|
|
49
58
|
}
|
|
@@ -51,27 +60,22 @@ export async function runMultiAgentAnalysis(model, modelId, scanResult, options
|
|
|
51
60
|
// ═══════════════════════════════════════════════════════════════
|
|
52
61
|
// PHASE 1: Planning Orchestrator
|
|
53
62
|
// ═══════════════════════════════════════════════════════════════
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
const plan = await runPlanningOrchestrator(model, modelId, scanResult, verbose);
|
|
58
|
-
if (verbose) {
|
|
59
|
-
logger.info(`Plan: ${plan.areasToExplore.length} areas, ${plan.technologiesToResearch.length} techs, complexity=${plan.estimatedComplexity}`);
|
|
60
|
-
}
|
|
63
|
+
report('Phase 1/4: Planning');
|
|
64
|
+
const plan = await runPlanningOrchestrator(model, modelId, scanResult, verbose && !onProgress);
|
|
65
|
+
report('Phase 1/4: Planning', `${plan.areasToExplore.length} areas, ${plan.technologiesToResearch.length} technologies`);
|
|
61
66
|
// ═══════════════════════════════════════════════════════════════
|
|
62
67
|
// PHASE 2: Parallel Workers
|
|
63
68
|
// ═══════════════════════════════════════════════════════════════
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
69
|
+
const workerCount = plan.technologiesToResearch.length + 1; // tech researchers + context enricher
|
|
70
|
+
report('Phase 2/4: Analyzing', `${workerCount} parallel workers`);
|
|
67
71
|
// Run context enricher and tech researchers in parallel with error recovery
|
|
68
72
|
const [contextResult, researchResult] = await Promise.allSettled([
|
|
69
73
|
runContextEnricher(model, modelId, {
|
|
70
74
|
scanResult,
|
|
71
75
|
areasToExplore: plan.areasToExplore,
|
|
72
76
|
questionsToAnswer: plan.questionsToAnswer,
|
|
73
|
-
}, verbose),
|
|
74
|
-
runTechResearchPool(model, modelId, plan.technologiesToResearch, { tavilyApiKey, context7ApiKey }, verbose),
|
|
77
|
+
}, verbose && !onProgress),
|
|
78
|
+
runTechResearchPool(model, modelId, plan.technologiesToResearch, { tavilyApiKey, context7ApiKey }, verbose && !onProgress),
|
|
75
79
|
]);
|
|
76
80
|
// Extract results with fallbacks for failed workers
|
|
77
81
|
const enrichedContext = contextResult.status === 'fulfilled'
|
|
@@ -87,21 +91,13 @@ export async function runMultiAgentAnalysis(model, modelId, scanResult, options
|
|
|
87
91
|
if (researchResult.status === 'rejected') {
|
|
88
92
|
logger.warn(`Tech Research Pool failed: ${researchResult.reason instanceof Error ? researchResult.reason.message : String(researchResult.reason)}`);
|
|
89
93
|
}
|
|
90
|
-
|
|
91
|
-
logger.info(`Context: ${enrichedContext.entryPoints.length} entry points, type=${enrichedContext.projectType}`);
|
|
92
|
-
logger.info(`Research: ${techResearch.length} technologies researched`);
|
|
93
|
-
}
|
|
94
|
+
report('Phase 2/4: Analyzing', 'complete');
|
|
94
95
|
// ═══════════════════════════════════════════════════════════════
|
|
95
96
|
// PHASE 3: Synthesis + MCP Detection
|
|
96
97
|
// ═══════════════════════════════════════════════════════════════
|
|
97
|
-
|
|
98
|
-
logger.info('Phase 3: Synthesizing results...');
|
|
99
|
-
}
|
|
98
|
+
report('Phase 3/4: Synthesizing');
|
|
100
99
|
// Detect MCPs (pure function, no LLM)
|
|
101
100
|
const mcpServers = detectRalphMcpServers(scanResult.stack);
|
|
102
|
-
if (verbose) {
|
|
103
|
-
logger.info(`MCPs: e2e=${mcpServers.e2eTesting}, db=${mcpServers.database || 'none'}, additional=${mcpServers.additional.length}`);
|
|
104
|
-
}
|
|
105
101
|
// Run synthesis agent
|
|
106
102
|
const synthesizedResult = await runSynthesisAgent(model, modelId, {
|
|
107
103
|
enrichedContext,
|
|
@@ -109,18 +105,15 @@ export async function runMultiAgentAnalysis(model, modelId, scanResult, options
|
|
|
109
105
|
mcpServers,
|
|
110
106
|
plan,
|
|
111
107
|
stack: scanResult.stack,
|
|
112
|
-
}, verbose);
|
|
108
|
+
}, verbose && !onProgress);
|
|
109
|
+
report('Phase 3/4: Synthesizing', 'complete');
|
|
113
110
|
// ═══════════════════════════════════════════════════════════════
|
|
114
111
|
// PHASE 4: Evaluator-Optimizer QA Loop
|
|
115
112
|
// ═══════════════════════════════════════════════════════════════
|
|
116
|
-
|
|
117
|
-
logger.info('Phase 4: Running QA evaluation...');
|
|
118
|
-
}
|
|
113
|
+
report('Phase 4/4: Quality check');
|
|
119
114
|
const finalResult = await runEvaluatorOptimizer(model, modelId, synthesizedResult, scanResult, 2, // Max 2 iterations
|
|
120
|
-
verbose);
|
|
121
|
-
|
|
122
|
-
logger.info('Multi-agent analysis complete (4-phase architecture)');
|
|
123
|
-
}
|
|
115
|
+
verbose && !onProgress);
|
|
116
|
+
report('Phase 4/4: Quality check', 'complete');
|
|
124
117
|
return finalResult;
|
|
125
118
|
}
|
|
126
119
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/agents/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/agents/index.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 {
|