wiggum-cli 0.3.2 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/README.md +6 -4
  2. package/dist/ai/agents/codebase-analyst.d.ts +3 -0
  3. package/dist/ai/agents/codebase-analyst.d.ts.map +1 -1
  4. package/dist/ai/agents/codebase-analyst.js +3 -0
  5. package/dist/ai/agents/codebase-analyst.js.map +1 -1
  6. package/dist/ai/agents/context-enricher.d.ts +11 -0
  7. package/dist/ai/agents/context-enricher.d.ts.map +1 -0
  8. package/dist/ai/agents/context-enricher.js +163 -0
  9. package/dist/ai/agents/context-enricher.js.map +1 -0
  10. package/dist/ai/agents/evaluator-optimizer.d.ts +13 -0
  11. package/dist/ai/agents/evaluator-optimizer.d.ts.map +1 -0
  12. package/dist/ai/agents/evaluator-optimizer.js +231 -0
  13. package/dist/ai/agents/evaluator-optimizer.js.map +1 -0
  14. package/dist/ai/agents/index.d.ts +21 -3
  15. package/dist/ai/agents/index.d.ts.map +1 -1
  16. package/dist/ai/agents/index.js +148 -86
  17. package/dist/ai/agents/index.js.map +1 -1
  18. package/dist/ai/agents/mcp-detector.d.ts +26 -0
  19. package/dist/ai/agents/mcp-detector.d.ts.map +1 -0
  20. package/dist/ai/agents/mcp-detector.js +186 -0
  21. package/dist/ai/agents/mcp-detector.js.map +1 -0
  22. package/dist/ai/agents/orchestrator.d.ts +3 -0
  23. package/dist/ai/agents/orchestrator.d.ts.map +1 -1
  24. package/dist/ai/agents/orchestrator.js +3 -0
  25. package/dist/ai/agents/orchestrator.js.map +1 -1
  26. package/dist/ai/agents/planning-orchestrator.d.ts +12 -0
  27. package/dist/ai/agents/planning-orchestrator.d.ts.map +1 -0
  28. package/dist/ai/agents/planning-orchestrator.js +133 -0
  29. package/dist/ai/agents/planning-orchestrator.js.map +1 -0
  30. package/dist/ai/agents/stack-researcher.d.ts +3 -0
  31. package/dist/ai/agents/stack-researcher.d.ts.map +1 -1
  32. package/dist/ai/agents/stack-researcher.js +3 -0
  33. package/dist/ai/agents/stack-researcher.js.map +1 -1
  34. package/dist/ai/agents/stack-utils.d.ts +11 -0
  35. package/dist/ai/agents/stack-utils.d.ts.map +1 -0
  36. package/dist/ai/agents/stack-utils.js +27 -0
  37. package/dist/ai/agents/stack-utils.js.map +1 -0
  38. package/dist/ai/agents/synthesis-agent.d.ts +11 -0
  39. package/dist/ai/agents/synthesis-agent.d.ts.map +1 -0
  40. package/dist/ai/agents/synthesis-agent.js +202 -0
  41. package/dist/ai/agents/synthesis-agent.js.map +1 -0
  42. package/dist/ai/agents/tech-researcher.d.ts +16 -0
  43. package/dist/ai/agents/tech-researcher.d.ts.map +1 -0
  44. package/dist/ai/agents/tech-researcher.js +208 -0
  45. package/dist/ai/agents/tech-researcher.js.map +1 -0
  46. package/dist/ai/agents/types.d.ts +127 -0
  47. package/dist/ai/agents/types.d.ts.map +1 -1
  48. package/dist/ai/agents/types.js +6 -0
  49. package/dist/ai/agents/types.js.map +1 -1
  50. package/dist/ai/enhancer.d.ts +4 -0
  51. package/dist/ai/enhancer.d.ts.map +1 -1
  52. package/dist/ai/enhancer.js +3 -0
  53. package/dist/ai/enhancer.js.map +1 -1
  54. package/dist/ai/index.d.ts +1 -1
  55. package/dist/ai/index.d.ts.map +1 -1
  56. package/dist/ai/index.js +14 -2
  57. package/dist/ai/index.js.map +1 -1
  58. package/dist/commands/init.d.ts.map +1 -1
  59. package/dist/commands/init.js +20 -4
  60. package/dist/commands/init.js.map +1 -1
  61. package/dist/utils/tracing.d.ts +5 -0
  62. package/dist/utils/tracing.d.ts.map +1 -1
  63. package/dist/utils/tracing.js +40 -1
  64. package/dist/utils/tracing.js.map +1 -1
  65. package/package.json +5 -2
  66. package/src/ai/agents/codebase-analyst.ts +3 -0
  67. package/src/ai/agents/context-enricher.ts +189 -0
  68. package/src/ai/agents/evaluator-optimizer.ts +277 -0
  69. package/src/ai/agents/index.ts +198 -111
  70. package/src/ai/agents/mcp-detector.test.ts +290 -0
  71. package/src/ai/agents/mcp-detector.ts +210 -0
  72. package/src/ai/agents/orchestrator.ts +3 -0
  73. package/src/ai/agents/planning-orchestrator.ts +140 -0
  74. package/src/ai/agents/stack-researcher.ts +3 -0
  75. package/src/ai/agents/stack-utils.ts +34 -0
  76. package/src/ai/agents/synthesis-agent.ts +240 -0
  77. package/src/ai/agents/tech-researcher.ts +262 -0
  78. package/src/ai/agents/types.ts +160 -0
  79. package/src/ai/enhancer.ts +6 -1
  80. package/src/ai/index.ts +26 -5
  81. package/src/commands/init.ts +20 -4
  82. package/src/utils/tracing.ts +44 -1
  83. package/tsconfig.json +1 -1
  84. package/vitest.config.ts +7 -0
@@ -12,6 +12,7 @@ import pc from 'picocolors';
12
12
  import fs from 'fs';
13
13
  import path from 'path';
14
14
  import { simpson } from '../utils/colors.js';
15
+ import { flushTracing } from '../utils/tracing.js';
15
16
  /**
16
17
  * Save API keys to .env.local file
17
18
  */
@@ -71,8 +72,8 @@ async function collectApiKeys(projectRoot, options) {
71
72
  const providerChoice = await prompts.select({
72
73
  message: 'Select your AI provider:',
73
74
  options: [
74
- { value: 'anthropic', label: 'Anthropic (Claude)', hint: 'recommended' },
75
- { value: 'openai', label: 'OpenAI (GPT-4/5)' },
75
+ { value: 'anthropic', label: 'Anthropic', hint: 'recommended' },
76
+ { value: 'openai', label: 'OpenAI' },
76
77
  { value: 'openrouter', label: 'OpenRouter', hint: 'multiple providers' },
77
78
  ],
78
79
  });
@@ -202,6 +203,7 @@ export async function initCommand(options) {
202
203
  if (!apiKeys) {
203
204
  // In --yes mode, null means missing API key (hard failure)
204
205
  // In interactive mode, null means user cancelled
206
+ await flushTracing();
205
207
  if (options.yes) {
206
208
  process.exit(1);
207
209
  }
@@ -220,6 +222,7 @@ export async function initCommand(options) {
220
222
  catch (error) {
221
223
  spinner.stop('Scan failed');
222
224
  logger.error(`Failed to scan project: ${error instanceof Error ? error.message : String(error)}`);
225
+ await flushTracing();
223
226
  process.exit(1);
224
227
  }
225
228
  // Step 3: Run multi-agent AI analysis
@@ -234,14 +237,23 @@ export async function initCommand(options) {
234
237
  console.log(simpson.yellow(`─── AI Analysis (${apiKeys.provider} / ${modelLabel}) ───`));
235
238
  console.log(pc.dim(`Capabilities: ${capabilities.join(' • ')}`));
236
239
  console.log('');
237
- spinner.start('Running AI analysis...');
240
+ spinner.start('Starting AI analysis...');
238
241
  const aiEnhancer = new AIEnhancer({
239
242
  provider: apiKeys.provider,
240
243
  model: apiKeys.model,
241
- verbose: true,
244
+ verbose: false, // Disable verbose logging when using progress callback
242
245
  agentic: true, // Always use agentic mode for deeper analysis
243
246
  tavilyApiKey: apiKeys.tavilyKey,
244
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
+ },
245
257
  });
246
258
  let enhancedResult;
247
259
  try {
@@ -273,6 +285,7 @@ export async function initCommand(options) {
273
285
  initialValue: true,
274
286
  });
275
287
  if (prompts.isCancel(shouldContinue) || !shouldContinue) {
288
+ await flushTracing();
276
289
  logger.info('Initialization cancelled');
277
290
  return;
278
291
  }
@@ -291,6 +304,8 @@ export async function initCommand(options) {
291
304
  console.log('');
292
305
  console.log(simpson.yellow('─── Generation Results ───'));
293
306
  console.log(formatGenerationResult(generationResult));
307
+ // Flush tracing spans before completing
308
+ await flushTracing();
294
309
  if (generationResult.success) {
295
310
  console.log('');
296
311
  logger.success('Ralph initialized successfully!');
@@ -308,6 +323,7 @@ export async function initCommand(options) {
308
323
  catch (error) {
309
324
  spinner.stop('Generation failed');
310
325
  logger.error(`Failed to generate files: ${error instanceof Error ? error.message : String(error)}`);
326
+ await flushTracing();
311
327
  process.exit(1);
312
328
  }
313
329
  }
@@ -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":"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"}
@@ -5,6 +5,11 @@
5
5
  import * as ai from 'ai';
6
6
  export { traced, currentSpan, wrapTraced } from 'braintrust';
7
7
  export declare function initTracing(): void;
8
+ /**
9
+ * Flush all pending tracing spans to Braintrust
10
+ * Call this before process exit to ensure all spans are recorded
11
+ */
12
+ export declare function flushTracing(): Promise<void>;
8
13
  /**
9
14
  * Check if tracing is enabled
10
15
  */
@@ -1 +1 @@
1
- {"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../src/utils/tracing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAGzB,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAO7D,wBAAgB,WAAW,IAAI,IAAI,CAkBlC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAED;;;GAGG;AACH,wBAAgB,WAAW,cAS1B;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EACnE,EAAE,EAAE,CAAC,EACL,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7C,CAAC,CAUH"}
1
+ {"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../src/utils/tracing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAGzB,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAQ7D,wBAAgB,WAAW,IAAI,IAAI,CAqBlC;AA2BD;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAQlD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAED;;;GAGG;AACH,wBAAgB,WAAW,cAS1B;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EACnE,EAAE,EAAE,CAAC,EACL,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7C,CAAC,CAUH"}
@@ -2,7 +2,7 @@
2
2
  * Braintrust Tracing Utility
3
3
  * Provides AI call tracing for debugging and analysis
4
4
  */
5
- import { initLogger, wrapAISDK } from 'braintrust';
5
+ import { initLogger, wrapAISDK, flush as braintrustFlush } from 'braintrust';
6
6
  import * as ai from 'ai';
7
7
  // Re-export traced utilities
8
8
  export { traced, currentSpan, wrapTraced } from 'braintrust';
@@ -10,6 +10,7 @@ export { traced, currentSpan, wrapTraced } from 'braintrust';
10
10
  * Initialize Braintrust logger if API key is available
11
11
  */
12
12
  let loggerInitialized = false;
13
+ let exitHandlersRegistered = false;
13
14
  export function initTracing() {
14
15
  if (loggerInitialized)
15
16
  return;
@@ -24,11 +25,49 @@ export function initTracing() {
24
25
  projectName: process.env.BRAINTRUST_PROJECT_NAME || 'wiggum-cli',
25
26
  });
26
27
  loggerInitialized = true;
28
+ // Register exit handlers to flush spans before process exits
29
+ registerExitHandlers();
27
30
  }
28
31
  catch {
29
32
  // Silently fail if tracing can't be initialized
30
33
  }
31
34
  }
35
+ /**
36
+ * Register process exit handlers to flush tracing spans
37
+ */
38
+ function registerExitHandlers() {
39
+ if (exitHandlersRegistered)
40
+ return;
41
+ exitHandlersRegistered = true;
42
+ // Flush on normal exit
43
+ process.on('beforeExit', async () => {
44
+ await flushTracing();
45
+ });
46
+ // Flush on SIGINT (Ctrl+C)
47
+ process.on('SIGINT', async () => {
48
+ await flushTracing();
49
+ process.exit(0);
50
+ });
51
+ // Flush on SIGTERM
52
+ process.on('SIGTERM', async () => {
53
+ await flushTracing();
54
+ process.exit(0);
55
+ });
56
+ }
57
+ /**
58
+ * Flush all pending tracing spans to Braintrust
59
+ * Call this before process exit to ensure all spans are recorded
60
+ */
61
+ export async function flushTracing() {
62
+ if (!loggerInitialized)
63
+ return;
64
+ try {
65
+ await braintrustFlush();
66
+ }
67
+ catch {
68
+ // Silently fail if flush fails
69
+ }
70
+ }
32
71
  /**
33
72
  * Check if tracing is enabled
34
73
  */
@@ -1 +1 @@
1
- {"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../src/utils/tracing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,6BAA6B;AAC7B,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7D;;GAEG;AACH,IAAI,iBAAiB,GAAG,KAAK,CAAC;AAE9B,MAAM,UAAU,WAAW;IACzB,IAAI,iBAAiB;QAAE,OAAO;IAE9B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,sCAAsC;QACtC,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,UAAU,CAAC;YACT,MAAM;YACN,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,YAAY;SACjE,CAAC,CAAC;QACH,iBAAiB,GAAG,IAAI,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,gDAAgD;IAClD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,WAAW,EAAE,CAAC;IAEd,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;IAED,0DAA0D;IAC1D,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,EAAK,EACL,UAA4C,EAAE;IAE9C,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7C,OAAO,UAAU,CAAC,EAAE,EAAE;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,UAAU;QAChC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,WAAW;KAC7C,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../src/utils/tracing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,IAAI,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,6BAA6B;AAC7B,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7D;;GAEG;AACH,IAAI,iBAAiB,GAAG,KAAK,CAAC;AAC9B,IAAI,sBAAsB,GAAG,KAAK,CAAC;AAEnC,MAAM,UAAU,WAAW;IACzB,IAAI,iBAAiB;QAAE,OAAO;IAE9B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,sCAAsC;QACtC,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,UAAU,CAAC;YACT,MAAM;YACN,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,YAAY;SACjE,CAAC,CAAC;QACH,iBAAiB,GAAG,IAAI,CAAC;QAEzB,6DAA6D;QAC7D,oBAAoB,EAAE,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,gDAAgD;IAClD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB;IAC3B,IAAI,sBAAsB;QAAE,OAAO;IACnC,sBAAsB,GAAG,IAAI,CAAC;IAE9B,uBAAuB;IACvB,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;QAClC,MAAM,YAAY,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,2BAA2B;IAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,YAAY,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,mBAAmB;IACnB,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,YAAY,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC,iBAAiB;QAAE,OAAO;IAE/B,IAAI,CAAC;QACH,MAAM,eAAe,EAAE,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,+BAA+B;IACjC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,WAAW,EAAE,CAAC;IAEd,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;IAED,0DAA0D;IAC1D,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,EAAK,EACL,UAA4C,EAAE;IAE9C,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7C,OAAO,UAAU,CAAC,EAAE,EAAE;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,UAAU;QAChC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,WAAW;KAC7C,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wiggum-cli",
3
- "version": "0.3.2",
3
+ "version": "0.4.1",
4
4
  "description": "AI-powered feature development loop CLI",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -12,6 +12,8 @@
12
12
  "copy-templates": "cp -r src/templates dist/",
13
13
  "dev": "tsc --watch",
14
14
  "start": "node bin/ralph.js",
15
+ "test": "vitest run",
16
+ "test:watch": "vitest",
15
17
  "prepublishOnly": "npm run build"
16
18
  },
17
19
  "keywords": [
@@ -39,7 +41,8 @@
39
41
  },
40
42
  "devDependencies": {
41
43
  "@types/node": "^20.10.0",
42
- "typescript": "^5.3.0"
44
+ "typescript": "^5.3.0",
45
+ "vitest": "^4.0.17"
43
46
  },
44
47
  "engines": {
45
48
  "node": ">=18.0.0"
@@ -1,6 +1,9 @@
1
1
  /**
2
2
  * Codebase Analyst Agent
3
3
  * Explores the codebase to understand its structure and patterns
4
+ *
5
+ * @deprecated Use runContextEnricher from context-enricher.ts instead.
6
+ * This agent is kept for backward compatibility.
4
7
  */
5
8
 
6
9
  import { stepCountIs, type LanguageModel } from 'ai';
@@ -0,0 +1,189 @@
1
+ /**
2
+ * Context Enricher Worker (Phase 2)
3
+ * Explores the codebase to gather enriched context based on the analysis plan
4
+ */
5
+
6
+ import { stepCountIs, type LanguageModel } from 'ai';
7
+ import type { ContextEnricherInput, EnrichedContext } from './types.js';
8
+ import { createExplorationTools } from '../tools.js';
9
+ import { isReasoningModel } from '../providers.js';
10
+ import { logger } from '../../utils/logger.js';
11
+ import { parseJsonSafe } from '../../utils/json-repair.js';
12
+ import { getTracedAI } from '../../utils/tracing.js';
13
+ import { detectProjectType } from './stack-utils.js';
14
+
15
+ /**
16
+ * System prompt for the Context Enricher worker
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.
19
+
20
+ ## Your Mission
21
+ Based on the analysis plan, explore the codebase to:
22
+ 1. Identify entry points and key files
23
+ 2. Understand directory structure and purposes
24
+ 3. Detect naming conventions
25
+ 4. Find available commands (from package.json)
26
+ 5. Answer the specific questions provided
27
+
28
+ ## Tools Available
29
+ - searchCode: Search using ripgrep patterns
30
+ - readFile: Read file contents
31
+ - listDirectory: List directory structure
32
+ - getPackageInfo: Get package.json info
33
+
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
47
+
48
+ ## Output Format
49
+ After exploration, output ONLY valid JSON:
50
+ {
51
+ "entryPoints": ["src/index.ts"],
52
+ "keyDirectories": {"src/routes": "API routes", "src/components": "UI components"},
53
+ "namingConventions": "camelCase files, PascalCase components",
54
+ "commands": {"test": "npm test", "build": "npm run build"},
55
+ "answeredQuestions": {"What is the auth strategy?": "NextAuth with JWT"},
56
+ "projectType": "Next.js App"
57
+ }`;
58
+
59
+ /**
60
+ * Run the Context Enricher worker
61
+ */
62
+ export async function runContextEnricher(
63
+ model: LanguageModel,
64
+ modelId: string,
65
+ input: ContextEnricherInput,
66
+ verbose: boolean = false
67
+ ): Promise<EnrichedContext> {
68
+ const tools = createExplorationTools(input.scanResult.projectRoot);
69
+
70
+ const prompt = `Explore this codebase and gather enriched context.
71
+
72
+ Project: ${input.scanResult.projectRoot}
73
+
74
+ ## Areas to Explore
75
+ ${input.areasToExplore.map(a => `- ${a}`).join('\n')}
76
+
77
+ ## Questions to Answer
78
+ ${input.questionsToAnswer.map(q => `- ${q}`).join('\n')}
79
+
80
+ Start by exploring the specified areas, then answer the questions and produce your analysis as JSON.`;
81
+
82
+ try {
83
+ const { generateText } = getTracedAI();
84
+
85
+ const result = await generateText({
86
+ model,
87
+ system: CONTEXT_ENRICHER_SYSTEM_PROMPT,
88
+ prompt,
89
+ tools,
90
+ stopWhen: stepCountIs(5),
91
+ maxOutputTokens: 3000,
92
+ ...(isReasoningModel(modelId) ? {} : { temperature: 0.3 }),
93
+ experimental_telemetry: {
94
+ isEnabled: true,
95
+ metadata: {
96
+ agent: 'context-enricher',
97
+ projectRoot: input.scanResult.projectRoot,
98
+ areasCount: input.areasToExplore.length,
99
+ questionsCount: input.questionsToAnswer.length,
100
+ },
101
+ },
102
+ });
103
+
104
+ // Parse the response
105
+ const context = parseEnrichedContext(result.text, result.steps, verbose);
106
+
107
+ if (verbose) {
108
+ logger.info(`Context Enricher: Found ${context.entryPoints.length} entry points, answered ${Object.keys(context.answeredQuestions).length} questions`);
109
+ }
110
+
111
+ return context;
112
+ } catch (error) {
113
+ if (verbose) {
114
+ logger.error(`Context Enricher error: ${error instanceof Error ? error.message : String(error)}`);
115
+ }
116
+
117
+ return getDefaultEnrichedContext(input);
118
+ }
119
+ }
120
+
121
+ /**
122
+ * Parse the enriched context from agent response
123
+ */
124
+ function parseEnrichedContext(
125
+ text: string,
126
+ steps: Array<{ text?: string }> | undefined,
127
+ verbose: boolean
128
+ ): EnrichedContext {
129
+ // Try to get text from the result or steps
130
+ let textToParse = text;
131
+
132
+ if (!textToParse || textToParse.trim() === '') {
133
+ const stepsList = steps || [];
134
+ for (let i = stepsList.length - 1; i >= 0; i--) {
135
+ const step = stepsList[i];
136
+ if (step.text && step.text.trim() !== '') {
137
+ textToParse = step.text;
138
+ break;
139
+ }
140
+ }
141
+ }
142
+
143
+ if (!textToParse || textToParse.trim() === '') {
144
+ if (verbose) {
145
+ logger.warn('Context Enricher: No text output found');
146
+ }
147
+ return getDefaultEnrichedContext();
148
+ }
149
+
150
+ // Use safe JSON parser with repair capabilities
151
+ const parsed = parseJsonSafe<Partial<EnrichedContext>>(textToParse);
152
+
153
+ if (!parsed) {
154
+ if (verbose) {
155
+ logger.warn('Context Enricher: Failed to parse JSON response');
156
+ }
157
+ return getDefaultEnrichedContext();
158
+ }
159
+
160
+ // Build result with defaults for missing fields
161
+ return {
162
+ entryPoints: parsed.entryPoints || ['src/index.ts'],
163
+ keyDirectories: parsed.keyDirectories || { src: 'Source code' },
164
+ namingConventions: parsed.namingConventions || 'camelCase',
165
+ commands: parsed.commands || { build: 'npm run build' },
166
+ answeredQuestions: parsed.answeredQuestions || {},
167
+ projectType: parsed.projectType || 'Unknown',
168
+ };
169
+ }
170
+
171
+ /**
172
+ * Get default enriched context when parsing fails
173
+ */
174
+ function getDefaultEnrichedContext(input?: ContextEnricherInput): EnrichedContext {
175
+ const projectType = detectProjectType(input?.scanResult.stack);
176
+
177
+ return {
178
+ entryPoints: ['src/index.ts'],
179
+ keyDirectories: { src: 'Source code' },
180
+ namingConventions: 'camelCase',
181
+ commands: {
182
+ test: 'npm test',
183
+ build: 'npm run build',
184
+ dev: 'npm run dev',
185
+ },
186
+ answeredQuestions: {},
187
+ projectType,
188
+ };
189
+ }