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.
Files changed (62) hide show
  1. package/dist/ai/agents/context-enricher.d.ts.map +1 -1
  2. package/dist/ai/agents/context-enricher.js +37 -17
  3. package/dist/ai/agents/context-enricher.js.map +1 -1
  4. package/dist/ai/agents/evaluator-optimizer.d.ts.map +1 -1
  5. package/dist/ai/agents/evaluator-optimizer.js +77 -14
  6. package/dist/ai/agents/evaluator-optimizer.js.map +1 -1
  7. package/dist/ai/agents/index.d.ts +1 -1
  8. package/dist/ai/agents/index.d.ts.map +1 -1
  9. package/dist/ai/agents/index.js +25 -32
  10. package/dist/ai/agents/index.js.map +1 -1
  11. package/dist/ai/agents/mcp-detector.d.ts +6 -0
  12. package/dist/ai/agents/mcp-detector.d.ts.map +1 -1
  13. package/dist/ai/agents/mcp-detector.js +11 -4
  14. package/dist/ai/agents/mcp-detector.js.map +1 -1
  15. package/dist/ai/agents/stack-researcher.d.ts.map +1 -1
  16. package/dist/ai/agents/stack-researcher.js +29 -12
  17. package/dist/ai/agents/stack-researcher.js.map +1 -1
  18. package/dist/ai/agents/synthesis-agent.js +1 -1
  19. package/dist/ai/agents/synthesis-agent.js.map +1 -1
  20. package/dist/ai/agents/tech-researcher.d.ts.map +1 -1
  21. package/dist/ai/agents/tech-researcher.js +29 -11
  22. package/dist/ai/agents/tech-researcher.js.map +1 -1
  23. package/dist/ai/agents/types.d.ts +6 -0
  24. package/dist/ai/agents/types.d.ts.map +1 -1
  25. package/dist/ai/enhancer.d.ts +4 -0
  26. package/dist/ai/enhancer.d.ts.map +1 -1
  27. package/dist/ai/enhancer.js +3 -0
  28. package/dist/ai/enhancer.js.map +1 -1
  29. package/dist/ai/index.d.ts +1 -1
  30. package/dist/ai/index.d.ts.map +1 -1
  31. package/dist/ai/index.js +1 -1
  32. package/dist/ai/index.js.map +1 -1
  33. package/dist/ai/tools/context7.d.ts +18 -24
  34. package/dist/ai/tools/context7.d.ts.map +1 -1
  35. package/dist/ai/tools/context7.js +14 -122
  36. package/dist/ai/tools/context7.js.map +1 -1
  37. package/dist/ai/tools/index.d.ts +1 -1
  38. package/dist/ai/tools/index.d.ts.map +1 -1
  39. package/dist/ai/tools/index.js +1 -1
  40. package/dist/ai/tools/index.js.map +1 -1
  41. package/dist/ai/tools/tavily.d.ts +1 -0
  42. package/dist/ai/tools/tavily.d.ts.map +1 -1
  43. package/dist/ai/tools/tavily.js +13 -8
  44. package/dist/ai/tools/tavily.js.map +1 -1
  45. package/dist/commands/init.d.ts.map +1 -1
  46. package/dist/commands/init.js +11 -2
  47. package/dist/commands/init.js.map +1 -1
  48. package/package.json +2 -1
  49. package/src/ai/agents/context-enricher.ts +38 -18
  50. package/src/ai/agents/evaluator-optimizer.ts +81 -14
  51. package/src/ai/agents/index.ts +27 -33
  52. package/src/ai/agents/mcp-detector.ts +11 -4
  53. package/src/ai/agents/stack-researcher.ts +30 -12
  54. package/src/ai/agents/synthesis-agent.ts +1 -1
  55. package/src/ai/agents/tech-researcher.ts +30 -11
  56. package/src/ai/agents/types.ts +7 -0
  57. package/src/ai/enhancer.ts +6 -1
  58. package/src/ai/index.ts +1 -1
  59. package/src/ai/tools/context7.ts +17 -152
  60. package/src/ai/tools/index.ts +1 -3
  61. package/src/ai/tools/tavily.ts +13 -8
  62. package/src/commands/init.ts +10 -2
@@ -3,5 +3,5 @@
3
3
  * Exports all tools for agent use
4
4
  */
5
5
  export { createTavilySearchTool, canUseTavily, } from './tavily.js';
6
- export { createContext7Tool, canUseContext7, } from './context7.js';
6
+ export { createContext7Tools, canUseContext7, } from './context7.js';
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/tools/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,sBAAsB,EACtB,YAAY,GAEb,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,kBAAkB,EAClB,cAAc,GAGf,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/tools/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,sBAAsB,EACtB,YAAY,GAEb,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,mBAAmB,EACnB,cAAc,GACf,MAAM,eAAe,CAAC"}
@@ -19,6 +19,7 @@ export declare function createTavilySearchTool(apiKey: string): import("ai").Too
19
19
  query: string;
20
20
  searchDepth?: "basic" | "advanced" | undefined;
21
21
  maxResults?: number | undefined;
22
+ timeRange?: "day" | "week" | "month" | "year" | undefined;
22
23
  }, string>;
23
24
  /**
24
25
  * Create a function that checks if Tavily search can be performed
@@ -1 +1 @@
1
- {"version":3,"file":"tavily.d.ts","sourceRoot":"","sources":["../../../src/ai/tools/tavily.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAWD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM;;;;WA8DpD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAErD"}
1
+ {"version":3,"file":"tavily.d.ts","sourceRoot":"","sources":["../../../src/ai/tools/tavily.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAWD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM;;;;;WAmEpD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAErD"}
@@ -10,20 +10,24 @@ import { z } from 'zod';
10
10
  */
11
11
  export function createTavilySearchTool(apiKey) {
12
12
  return tool({
13
- description: `Search the web for current best practices, documentation, and recent information.
14
- Use this to find:
15
- - Current best practices for technologies
16
- - Testing patterns and tools
17
- - Library documentation and examples
18
- - Recent updates and changes`,
13
+ description: `Search the web for current information.
14
+
15
+ USAGE TIPS:
16
+ - Keep queries concise and specific (not conversational)
17
+ - Use timeRange: "year" for recent best practices
18
+ - Break complex research into focused individual searches
19
+ - Good: "Express middleware error handling patterns"
20
+ - Bad: "best practices production 2024 testing documentation"`,
19
21
  inputSchema: zodSchema(z.object({
20
- query: z.string().describe('Search query - be specific about what you want to find'),
22
+ query: z.string().describe('Search query - be specific and concise'),
21
23
  searchDepth: z.enum(['basic', 'advanced']).optional()
22
24
  .describe('Search depth - use "advanced" for comprehensive results'),
23
25
  maxResults: z.number().min(1).max(10).optional()
24
26
  .describe('Maximum number of results (default 5)'),
27
+ timeRange: z.enum(['day', 'week', 'month', 'year']).optional()
28
+ .describe('Time filter for results. Use "year" for recent best practices'),
25
29
  })),
26
- execute: async ({ query, searchDepth, maxResults }) => {
30
+ execute: async ({ query, searchDepth, maxResults, timeRange }) => {
27
31
  try {
28
32
  const response = await fetch('https://api.tavily.com/search', {
29
33
  method: 'POST',
@@ -35,6 +39,7 @@ Use this to find:
35
39
  query,
36
40
  search_depth: searchDepth || 'basic',
37
41
  max_results: maxResults || 5,
42
+ ...(timeRange && { time_range: timeRange }),
38
43
  include_answer: true,
39
44
  include_raw_content: false,
40
45
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"tavily.js","sourceRoot":"","sources":["../../../src/ai/tools/tavily.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tavily.js","sourceRoot":"","sources":["../../../src/ai/tools/tavily.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAGL,KAAK,UAAU,EAEhB,MAAM,gBAAgB,CAAC;AAiBxB,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAsND;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA6IrE"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAGL,KAAK,UAAU,EAEhB,MAAM,gBAAgB,CAAC;AAiBxB,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAsND;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqJrE"}
@@ -237,14 +237,23 @@ export async function initCommand(options) {
237
237
  console.log(simpson.yellow(`─── AI Analysis (${apiKeys.provider} / ${modelLabel}) ───`));
238
238
  console.log(pc.dim(`Capabilities: ${capabilities.join(' • ')}`));
239
239
  console.log('');
240
- spinner.start('Running AI analysis...');
240
+ spinner.start('Starting AI analysis...');
241
241
  const aiEnhancer = new AIEnhancer({
242
242
  provider: apiKeys.provider,
243
243
  model: apiKeys.model,
244
- verbose: true,
244
+ verbose: false, // Disable verbose logging when using progress callback
245
245
  agentic: true, // Always use agentic mode for deeper analysis
246
246
  tavilyApiKey: apiKeys.tavilyKey,
247
247
  context7ApiKey: apiKeys.context7Key,
248
+ onProgress: (phase, detail) => {
249
+ // Update spinner with current phase
250
+ if (detail) {
251
+ spinner.message(`${phase} - ${detail}`);
252
+ }
253
+ else {
254
+ spinner.message(phase);
255
+ }
256
+ },
248
257
  });
249
258
  let enhancedResult;
250
259
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAmB,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EACL,UAAU,EACV,gBAAgB,GAGjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,yBAAyB,EACzB,YAAY,EACZ,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,OAAO,EAA2B,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAOnD;;GAEG;AACH,SAAS,kBAAkB,CACzB,WAAmB,EACnB,IAA4B;IAE5B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC1D,IAAI,UAAU,GAAG,EAAE,CAAC;IAEpB,uCAAuC;IACvC,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,yBAAyB;IACzB,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,IAAI,MAAM,MAAM,EAAE,GAAG,CAAC,CAAC;QACnD,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,uBAAuB;YACvB,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,iBAAiB;YACjB,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,IAAI,KAAK,IAAI,CAAC;QACxF,CAAC;IACH,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,QAAoB;IAC3C,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACtE,OAAO,WAAW,EAAE,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAC3B,WAAmB,EACnB,OAAoB;IAOpB,sCAAsC;IACtC,IAAI,QAAQ,GAAe,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC;IAC3D,MAAM,gBAAgB,GAAG,oBAAoB,EAAE,CAAC;IAChD,IAAI,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAC1F,IAAI,wBAAwB,GAAG,KAAK,CAAC;IAErC,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,iDAAiD;QACjD,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;YAChG,OAAO,IAAI,CAAC;QACd,CAAC;QAED,4CAA4C;QAC5C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,kBAAkB;QAClB,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;YAC1C,OAAO,EAAE,0BAA0B;YACnC,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE;gBAC/D,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;gBACpC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,oBAAoB,EAAE;aACzE;SACF,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,QAAQ,GAAG,cAA4B,CAAC;QACxC,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAEzC,cAAc;QACd,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC;YACzC,OAAO,EAAE,cAAc,MAAM,GAAG;SACjC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAClD,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;QAClC,wBAAwB,GAAG,IAAI,CAAC;IAClC,CAAC;SAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC7B,6BAA6B;QAC7B,QAAQ,GAAG,gBAAgB,IAAI,WAAW,CAAC;IAC7C,CAAC;IAED,iDAAiD;IACjD,IAAI,aAAqB,CAAC;IAE1B,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,aAAa,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,MAAM,YAAY,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;YACvC,OAAO,EAAE,eAAe;YACxB,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC9B,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,IAAI,EAAE,CAAC,CAAC,IAAI;aACb,CAAC,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,aAAa,GAAG,WAAqB,CAAC;IACxC,CAAC;IAED,uDAAuD;IACvD,IAAI,SAA6B,CAAC;IAClC,IAAI,2BAA2B,GAAG,KAAK,CAAC;IAExC,IAAI,YAAY,EAAE,EAAE,CAAC;QACnB,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC;SAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC,CAAC;QAEvF,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC;YACzC,OAAO,EAAE,SAAS,yBAAyB,CAAC,MAAM,yBAAyB;SAC5E,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,EAAE,CAAC;YAClD,SAAS,GAAG,WAAW,CAAC;YACxB,2BAA2B,GAAG,IAAI,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,IAAI,WAA+B,CAAC;IACpC,IAAI,6BAA6B,GAAG,KAAK,CAAC;IAE1C,IAAI,cAAc,EAAE,EAAE,CAAC;QACrB,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAChE,CAAC;SAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC,CAAC;QAEvF,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC;YAC3C,OAAO,EAAE,SAAS,yBAAyB,CAAC,QAAQ,yBAAyB;SAC9E,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,aAAa,EAAE,CAAC;YACtD,WAAW,GAAG,aAAa,CAAC;YAC5B,6BAA6B,GAAG,IAAI,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC;QAClE,CAAC;IACH,CAAC;IAED,+CAA+C;IAC/C,MAAM,UAAU,GAA2B,EAAE,CAAC;IAE9C,IAAI,wBAAwB,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC5C,UAAU,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IAClD,CAAC;IACD,IAAI,2BAA2B,IAAI,SAAS,EAAE,CAAC;QAC7C,UAAU,CAAC,yBAAyB,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC3D,CAAC;IACD,IAAI,6BAA6B,IAAI,WAAW,EAAE,CAAC;QACjD,UAAU,CAAC,yBAAyB,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC;IAC/D,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,gCAAgC;QAChC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,kBAAkB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAC5C,MAAM,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACrC,OAAO,EAAE,8BAA8B;gBACvC,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,EAAE,CAAC;gBAC5C,kBAAkB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;gBAC5C,MAAM,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ;QACR,KAAK,EAAE,aAAa;QACpB,SAAS;QACT,WAAW;KACZ,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB;IACpD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACrC,MAAM,CAAC,IAAI,CAAC,YAAY,WAAW,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,kCAAkC;IAClC,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAE3D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,2DAA2D;QAC3D,iDAAiD;QACjD,MAAM,YAAY,EAAE,CAAC;QACrB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IAED,wCAAwC;IACxC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAClC,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAErC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,IAAI,UAAsB,CAAC;IAE3B,IAAI,CAAC;QACH,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClG,MAAM,YAAY,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;IAEnH,2BAA2B;IAC3B,MAAM,YAAY,GAAa,CAAC,mBAAmB,CAAC,CAAC;IACrD,IAAI,OAAO,CAAC,SAAS;QAAE,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACzD,IAAI,OAAO,CAAC,WAAW;QAAE,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAEzD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,oBAAoB,OAAO,CAAC,QAAQ,MAAM,UAAU,OAAO,CAAC,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAEzC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC;QAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO,EAAE,KAAK,EAAE,uDAAuD;QACvE,OAAO,EAAE,IAAI,EAAE,8CAA8C;QAC7D,YAAY,EAAE,OAAO,CAAC,SAAS;QAC/B,cAAc,EAAE,OAAO,CAAC,WAAW;QACnC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAC5B,oCAAoC;YACpC,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,MAAM,MAAM,EAAE,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,IAAI,cAAkC,CAAC;IAEvC,IAAI,CAAC;QACH,cAAc,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAEtD,IAAI,cAAc,CAAC,UAAU,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3D,CAAC;aAAM,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,aAAa,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,iCAAiC;YACjC,cAAc,GAAG,EAAE,GAAG,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QACxD,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,aAAa,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,iCAAiC;QACjC,cAAc,GAAG,EAAE,GAAG,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACxD,CAAC;IAED,2CAA2C;IAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;YAC3C,OAAO,EAAE,qCAAqC;YAC9C,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACxD,MAAM,YAAY,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAEnD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC;QAC9B,aAAa,EAAE,QAAQ;QACvB,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,gBAAgB,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAE9C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAEtD,wCAAwC;QACxC,MAAM,YAAY,EAAE,CAAC;QAErB,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,MAAM,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;YACvE,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpG,MAAM,YAAY,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wiggum-cli",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "description": "AI-powered feature development loop CLI",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -32,6 +32,7 @@
32
32
  "@ai-sdk/openai": "^3.0.12",
33
33
  "@braintrust/otel": "^0.2.0",
34
34
  "@clack/prompts": "^0.7.0",
35
+ "@upstash/context7-tools-ai-sdk": "^0.2.1",
35
36
  "ai": "^6.0.41",
36
37
  "braintrust": "^2.0.2",
37
38
  "cfonts": "^3.2.0",
@@ -15,7 +15,7 @@ import { detectProjectType } from './stack-utils.js';
15
15
  /**
16
16
  * System prompt for the Context Enricher worker
17
17
  */
18
- const CONTEXT_ENRICHER_SYSTEM_PROMPT = `You are a Context Enricher worker. Your job is to explore specific areas of a codebase and answer specific questions.
18
+ 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.
19
19
 
20
20
  ## Your Mission
21
21
  Based on the analysis plan, explore the codebase to:
@@ -32,28 +32,48 @@ Based on the analysis plan, explore the codebase to:
32
32
  - getPackageInfo: Get package.json info
33
33
 
34
34
  ## Exploration Strategy
35
- 1. List the areas specified in the plan
36
- 2. Read package.json to understand scripts and dependencies
37
- 3. Search for patterns to answer the specific questions
38
- 4. Identify the project type based on structure
39
-
40
- ## Project Types
41
- - MCP Server: Has @modelcontextprotocol dependencies
42
- - REST API: Express/Fastify/Hono with route handlers
43
- - React SPA: React with components, no server-side rendering
44
- - Next.js App: Next.js with app or pages directory
45
- - CLI Tool: Has bin entry in package.json
46
- - Library: Published package without app entry
35
+ 1. Read package.json FIRST for main/bin entries - these are authoritative entry points
36
+ 2. List root directory to discover actual structure (src/, app/, pages/, lib/, cmd/, etc.)
37
+ 3. Explore discovered directories to understand their purpose
38
+ 4. Search for patterns to answer specific questions
39
+
40
+ ## Project Types & Entry Point Patterns
41
+ - MCP Server: Has @modelcontextprotocol deps → main field or src/index.ts
42
+ - REST API: Express/Fastify/Hono main field, app.ts, server.ts, or src/
43
+ - Next.js App: next in deps → app/page.tsx, pages/index.tsx, or pages/_app.tsx
44
+ - CLI Tool: Has bin entry in package.json use the bin paths directly
45
+ - Library: main/module fields use those paths
46
+ - Python: main.py, app.py, or __main__.py at root
47
+ - Go: main.go or cmd/*/main.go
48
+
49
+ ## CRITICAL: Output Requirements
50
+ - entryPoints: ONLY actual file paths you discovered
51
+ - NEVER output instructions like "Check package.json..."
52
+ - NEVER output suggestions like "If exists, use..."
53
+ - Priority order for discovery:
54
+ 1. package.json "bin" field paths (for CLI tools)
55
+ 2. package.json "main" or "module" field paths
56
+ 3. Framework conventions (app/page.tsx, pages/index.tsx)
57
+ 4. Common patterns you find (index.ts, main.ts, app.ts)
58
+ - If truly nothing found, use empty array [] - don't guess
59
+ - keyDirectories: ONLY directories that actually exist with their discovered purpose
60
+ - First list root to find actual directories (don't assume src/ exists)
61
+ - Map each real directory to its purpose based on file contents
62
+ - Example: {"src/commands": "CLI commands", "app": "Next.js app router"}
47
63
 
48
64
  ## Output Format
49
- After exploration, output ONLY valid JSON:
65
+ Output ONLY valid JSON with discovered facts, not exploration instructions:
50
66
  {
51
- "entryPoints": ["src/index.ts"],
52
- "keyDirectories": {"src/routes": "API routes", "src/components": "UI components"},
67
+ "entryPoints": ["bin/cli.js", "dist/index.js"],
68
+ "keyDirectories": {
69
+ "src": "TypeScript source code",
70
+ "bin": "CLI entry scripts",
71
+ "lib": "Compiled output"
72
+ },
53
73
  "namingConventions": "camelCase files, PascalCase components",
54
74
  "commands": {"test": "npm test", "build": "npm run build"},
55
75
  "answeredQuestions": {"What is the auth strategy?": "NextAuth with JWT"},
56
- "projectType": "Next.js App"
76
+ "projectType": "CLI Tool"
57
77
  }`;
58
78
 
59
79
  /**
@@ -87,7 +107,7 @@ Start by exploring the specified areas, then answer the questions and produce yo
87
107
  system: CONTEXT_ENRICHER_SYSTEM_PROMPT,
88
108
  prompt,
89
109
  tools,
90
- stopWhen: stepCountIs(5),
110
+ stopWhen: stepCountIs(8), // Increased from 5 to allow proper directory exploration
91
111
  maxOutputTokens: 3000,
92
112
  ...(isReasoningModel(modelId) ? {} : { temperature: 0.3 }),
93
113
  experimental_telemetry: {
@@ -35,10 +35,59 @@ const evaluationSchema = z.object({
35
35
  */
36
36
  const optimizerOutputSchema = z.object({
37
37
  improvedGuidelines: z.array(z.string()).describe('Improved implementation guidelines'),
38
- additionalEntryPoints: z.array(z.string()).optional().describe('Additional entry points to add'),
39
- additionalMcpServers: z.array(z.string()).optional().describe('Additional MCP servers to recommend'),
38
+ additionalEntryPoints: z.array(z.string()).describe('Additional entry points to add (empty array if none)'),
39
+ additionalMcpServers: z.array(z.string()).describe('Additional MCP servers to recommend (empty array if none)'),
40
40
  });
41
41
 
42
+ /**
43
+ * Patterns that indicate an entry point is an instruction, not a real path
44
+ */
45
+ const INVALID_ENTRY_POINT_PATTERNS = [
46
+ /^check /i,
47
+ /^if /i,
48
+ /^open /i,
49
+ /^look /i,
50
+ /^search /i,
51
+ /^find /i,
52
+ /^inspect /i,
53
+ /^run /i,
54
+ /^see /i,
55
+ /^review /i,
56
+ ];
57
+
58
+ /**
59
+ * Check if a single entry point looks like an actual file path (not an instruction)
60
+ */
61
+ function isValidEntryPoint(ep: string): boolean {
62
+ // Must look like a file path
63
+ const looksLikePath = ep.includes('/') || ep.includes('.') || ep.startsWith('src') || ep.startsWith('app') || ep.startsWith('pages');
64
+ // Must not start with instruction words
65
+ const isNotInstruction = !INVALID_ENTRY_POINT_PATTERNS.some(pattern => pattern.test(ep));
66
+ return looksLikePath && isNotInstruction;
67
+ }
68
+
69
+ /**
70
+ * Check if entry points look like actual file paths (not instructions)
71
+ */
72
+ function hasValidEntryPoints(entryPoints: string[]): boolean {
73
+ if (entryPoints.length === 0) return false;
74
+ return entryPoints.every(isValidEntryPoint);
75
+ }
76
+
77
+ /**
78
+ * Filter entry points to only include valid file paths
79
+ */
80
+ function filterValidEntryPoints(entryPoints: string[]): string[] {
81
+ return entryPoints.filter(isValidEntryPoint);
82
+ }
83
+
84
+ /**
85
+ * Normalize MCP names (strip parenthetical explanations)
86
+ */
87
+ function normalizeMcpName(name: string): string {
88
+ return name.split('(')[0].trim().toLowerCase();
89
+ }
90
+
42
91
  /**
43
92
  * System prompt for the Evaluator
44
93
  */
@@ -58,10 +107,16 @@ Evaluate the analysis result for:
58
107
  - 3-4: Incomplete, vague, or partially incorrect
59
108
  - 1-2: Poor, missing critical information
60
109
 
61
- ## Quality Checks
62
- - Entry points should identify actual files, not just "src/"
63
- - Guidelines should be specific (e.g., "Run npm test" not "Test your code")
64
- - MCP servers should match the detected database and deployment
110
+ ## Quality Checks - IMPORTANT
111
+ - Entry points MUST be actual file paths (e.g., "src/index.ts", "src/cli.ts")
112
+ - FAIL if they contain instructions like "Check", "If", "Open", "Look"
113
+ - FAIL if they don't look like file paths (no / or . characters)
114
+ - Key directories MUST map actual directories to their purposes
115
+ - FAIL if only generic entries like {"src": "Source code"}
116
+ - Guidelines MUST be actionable commands, not exploration tasks
117
+ - Good: "Run npm test", "Check API routes in src/routes"
118
+ - Bad: "Investigate the codebase", "Look for patterns"
119
+ - MCP servers MUST be single-word identifiers only (no parenthetical explanations)
65
120
 
66
121
  Be constructive but honest. If it's good, say so. If it needs work, explain why.`;
67
122
 
@@ -80,7 +135,13 @@ Based on the evaluation feedback, improve:
80
135
  - Keep guidelines to 5-10 words
81
136
  - Start with action verbs
82
137
  - Be specific to the detected stack
83
- - Don't remove good content, only add or improve`;
138
+ - Don't remove good content, only add or improve
139
+
140
+ ## MCP Server Names
141
+ - Use ONLY single-word identifiers: "playwright", "supabase", "postgres"
142
+ - NEVER add explanations in parentheses
143
+ - NEVER add descriptions after the name
144
+ - If unsure, omit rather than guess`;
84
145
 
85
146
  /**
86
147
  * Run the Evaluator-Optimizer QA loop
@@ -107,10 +168,11 @@ export async function runEvaluatorOptimizer(
107
168
  }
108
169
  }
109
170
 
110
- // Check if quality meets threshold
171
+ // Check if quality meets threshold (including valid entry point paths)
111
172
  if (
112
173
  evaluation.qualityScore >= QUALITY_THRESHOLD &&
113
174
  evaluation.hasEntryPoints &&
175
+ hasValidEntryPoints(currentResult.codebaseAnalysis.projectContext.entryPoints) &&
114
176
  evaluation.hasImplementationGuidelines
115
177
  ) {
116
178
  if (verbose) {
@@ -248,16 +310,21 @@ Provide improved guidelines and any additional entry points or MCP servers.`;
248
310
  : result.codebaseAnalysis.implementationGuidelines,
249
311
  projectContext: {
250
312
  ...result.codebaseAnalysis.projectContext,
251
- entryPoints: improvements.additionalEntryPoints
252
- ? [...new Set([...result.codebaseAnalysis.projectContext.entryPoints, ...improvements.additionalEntryPoints])]
253
- : result.codebaseAnalysis.projectContext.entryPoints,
313
+ // Filter invalid entry points (instructions) and merge with new ones
314
+ entryPoints: filterValidEntryPoints([
315
+ ...result.codebaseAnalysis.projectContext.entryPoints,
316
+ ...improvements.additionalEntryPoints,
317
+ ]).filter((ep, i, arr) => arr.indexOf(ep) === i), // dedupe
254
318
  },
255
319
  },
256
320
  mcpServers: {
257
321
  ...result.mcpServers,
258
- recommended: improvements.additionalMcpServers
259
- ? [...new Set([...result.mcpServers.recommended, ...improvements.additionalMcpServers])]
260
- : result.mcpServers.recommended,
322
+ recommended: improvements.additionalMcpServers.length > 0
323
+ ? [...new Set([
324
+ ...result.mcpServers.recommended.map(normalizeMcpName),
325
+ ...improvements.additionalMcpServers.map(normalizeMcpName)
326
+ ])]
327
+ : result.mcpServers.recommended.map(normalizeMcpName),
261
328
  },
262
329
  };
263
330
 
@@ -20,6 +20,7 @@ export type {
20
20
  ContextEnricherInput,
21
21
  TechResearcherInput,
22
22
  SynthesisInput,
23
+ ProgressCallback,
23
24
  // Legacy types (backward compatibility)
24
25
  CodebaseAnalysis,
25
26
  StackResearch,
@@ -78,7 +79,16 @@ export async function runMultiAgentAnalysis(
78
79
  scanResult: ScanResult,
79
80
  options: AgentOptions = {}
80
81
  ): Promise<MultiAgentAnalysis | null> {
81
- const { tavilyApiKey, context7ApiKey, verbose = false } = options;
82
+ const { tavilyApiKey, context7ApiKey, verbose = false, onProgress } = options;
83
+
84
+ // Helper to report progress (uses callback or falls back to logger)
85
+ const report = (phase: string, detail?: string) => {
86
+ if (onProgress) {
87
+ onProgress(phase, detail);
88
+ } else if (verbose) {
89
+ logger.info(detail ? `${phase}: ${detail}` : phase);
90
+ }
91
+ };
82
92
 
83
93
  // Determine capabilities
84
94
  const capabilities: AgentCapabilities = {
@@ -86,7 +96,7 @@ export async function runMultiAgentAnalysis(
86
96
  hasContext7: !!context7ApiKey,
87
97
  };
88
98
 
89
- if (verbose) {
99
+ if (verbose && !onProgress) {
90
100
  logger.info('Starting multi-agent analysis (4-phase architecture)...');
91
101
  logger.info(`Capabilities: Tavily=${capabilities.hasTavily}, Context7=${capabilities.hasContext7}`);
92
102
  }
@@ -95,22 +105,17 @@ export async function runMultiAgentAnalysis(
95
105
  // ═══════════════════════════════════════════════════════════════
96
106
  // PHASE 1: Planning Orchestrator
97
107
  // ═══════════════════════════════════════════════════════════════
98
- if (verbose) {
99
- logger.info('Phase 1: Creating analysis plan...');
100
- }
108
+ report('Phase 1/4: Planning');
101
109
 
102
- const plan = await runPlanningOrchestrator(model, modelId, scanResult, verbose);
110
+ const plan = await runPlanningOrchestrator(model, modelId, scanResult, verbose && !onProgress);
103
111
 
104
- if (verbose) {
105
- logger.info(`Plan: ${plan.areasToExplore.length} areas, ${plan.technologiesToResearch.length} techs, complexity=${plan.estimatedComplexity}`);
106
- }
112
+ report('Phase 1/4: Planning', `${plan.areasToExplore.length} areas, ${plan.technologiesToResearch.length} technologies`);
107
113
 
108
114
  // ═══════════════════════════════════════════════════════════════
109
115
  // PHASE 2: Parallel Workers
110
116
  // ═══════════════════════════════════════════════════════════════
111
- if (verbose) {
112
- logger.info('Phase 2: Running parallel workers...');
113
- }
117
+ const workerCount = plan.technologiesToResearch.length + 1; // tech researchers + context enricher
118
+ report('Phase 2/4: Analyzing', `${workerCount} parallel workers`);
114
119
 
115
120
  // Run context enricher and tech researchers in parallel with error recovery
116
121
  const [contextResult, researchResult] = await Promise.allSettled([
@@ -122,14 +127,14 @@ export async function runMultiAgentAnalysis(
122
127
  areasToExplore: plan.areasToExplore,
123
128
  questionsToAnswer: plan.questionsToAnswer,
124
129
  },
125
- verbose
130
+ verbose && !onProgress
126
131
  ),
127
132
  runTechResearchPool(
128
133
  model,
129
134
  modelId,
130
135
  plan.technologiesToResearch,
131
136
  { tavilyApiKey, context7ApiKey },
132
- verbose
137
+ verbose && !onProgress
133
138
  ),
134
139
  ]);
135
140
 
@@ -150,25 +155,16 @@ export async function runMultiAgentAnalysis(
150
155
  logger.warn(`Tech Research Pool failed: ${researchResult.reason instanceof Error ? researchResult.reason.message : String(researchResult.reason)}`);
151
156
  }
152
157
 
153
- if (verbose) {
154
- logger.info(`Context: ${enrichedContext.entryPoints.length} entry points, type=${enrichedContext.projectType}`);
155
- logger.info(`Research: ${techResearch.length} technologies researched`);
156
- }
158
+ report('Phase 2/4: Analyzing', 'complete');
157
159
 
158
160
  // ═══════════════════════════════════════════════════════════════
159
161
  // PHASE 3: Synthesis + MCP Detection
160
162
  // ═══════════════════════════════════════════════════════════════
161
- if (verbose) {
162
- logger.info('Phase 3: Synthesizing results...');
163
- }
163
+ report('Phase 3/4: Synthesizing');
164
164
 
165
165
  // Detect MCPs (pure function, no LLM)
166
166
  const mcpServers = detectRalphMcpServers(scanResult.stack);
167
167
 
168
- if (verbose) {
169
- logger.info(`MCPs: e2e=${mcpServers.e2eTesting}, db=${mcpServers.database || 'none'}, additional=${mcpServers.additional.length}`);
170
- }
171
-
172
168
  // Run synthesis agent
173
169
  const synthesizedResult = await runSynthesisAgent(
174
170
  model,
@@ -180,15 +176,15 @@ export async function runMultiAgentAnalysis(
180
176
  plan,
181
177
  stack: scanResult.stack,
182
178
  },
183
- verbose
179
+ verbose && !onProgress
184
180
  );
185
181
 
182
+ report('Phase 3/4: Synthesizing', 'complete');
183
+
186
184
  // ═══════════════════════════════════════════════════════════════
187
185
  // PHASE 4: Evaluator-Optimizer QA Loop
188
186
  // ═══════════════════════════════════════════════════════════════
189
- if (verbose) {
190
- logger.info('Phase 4: Running QA evaluation...');
191
- }
187
+ report('Phase 4/4: Quality check');
192
188
 
193
189
  const finalResult = await runEvaluatorOptimizer(
194
190
  model,
@@ -196,12 +192,10 @@ export async function runMultiAgentAnalysis(
196
192
  synthesizedResult,
197
193
  scanResult,
198
194
  2, // Max 2 iterations
199
- verbose
195
+ verbose && !onProgress
200
196
  );
201
197
 
202
- if (verbose) {
203
- logger.info('Multi-agent analysis complete (4-phase architecture)');
204
- }
198
+ report('Phase 4/4: Quality check', 'complete');
205
199
 
206
200
  return finalResult;
207
201
  } catch (error) {
@@ -177,26 +177,33 @@ export function detectRalphMcpServers(stack: DetectedStack): RalphMcpServers {
177
177
  /**
178
178
  * Convert RalphMcpServers to the legacy McpRecommendations format
179
179
  * for backward compatibility with existing code
180
+ *
181
+ * Ralph loop essentials only:
182
+ * - Playwright for E2E testing (always)
183
+ * - Database MCP if detected (Supabase, Convex, Postgres, etc.)
184
+ *
185
+ * Note: filesystem and git are assumed available in Claude Code
180
186
  */
181
187
  export function convertToLegacyMcpRecommendations(ralphMcp: RalphMcpServers): {
182
188
  essential: string[];
183
189
  recommended: string[];
184
190
  } {
185
- const essential: string[] = ['filesystem', 'git'];
191
+ const essential: string[] = [];
186
192
 
187
- // Add E2E testing as essential for ralph
193
+ // Ralph loop essentials only
194
+ // 1. Playwright for E2E testing (always)
188
195
  if (ralphMcp.e2eTesting) {
189
196
  essential.push(ralphMcp.e2eTesting);
190
197
  }
191
198
 
192
- // Add database as essential if detected
199
+ // 2. Database MCP if detected (Supabase, Convex, Postgres, etc.)
193
200
  if (ralphMcp.database) {
194
201
  essential.push(ralphMcp.database);
195
202
  }
196
203
 
197
204
  return {
198
205
  essential,
199
- recommended: ralphMcp.additional,
206
+ recommended: [], // No optional MCPs - keep focused on Ralph loop
200
207
  };
201
208
  }
202
209