wiggum-cli 0.3.2 → 0.4.0

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 (79) 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 +151 -82
  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 +121 -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/index.d.ts +1 -1
  51. package/dist/ai/index.d.ts.map +1 -1
  52. package/dist/ai/index.js +14 -2
  53. package/dist/ai/index.js.map +1 -1
  54. package/dist/commands/init.d.ts.map +1 -1
  55. package/dist/commands/init.js +9 -2
  56. package/dist/commands/init.js.map +1 -1
  57. package/dist/utils/tracing.d.ts +5 -0
  58. package/dist/utils/tracing.d.ts.map +1 -1
  59. package/dist/utils/tracing.js +40 -1
  60. package/dist/utils/tracing.js.map +1 -1
  61. package/package.json +5 -2
  62. package/src/ai/agents/codebase-analyst.ts +3 -0
  63. package/src/ai/agents/context-enricher.ts +189 -0
  64. package/src/ai/agents/evaluator-optimizer.ts +277 -0
  65. package/src/ai/agents/index.ts +197 -104
  66. package/src/ai/agents/mcp-detector.test.ts +290 -0
  67. package/src/ai/agents/mcp-detector.ts +210 -0
  68. package/src/ai/agents/orchestrator.ts +3 -0
  69. package/src/ai/agents/planning-orchestrator.ts +140 -0
  70. package/src/ai/agents/stack-researcher.ts +3 -0
  71. package/src/ai/agents/stack-utils.ts +34 -0
  72. package/src/ai/agents/synthesis-agent.ts +240 -0
  73. package/src/ai/agents/tech-researcher.ts +262 -0
  74. package/src/ai/agents/types.ts +153 -0
  75. package/src/ai/index.ts +26 -5
  76. package/src/commands/init.ts +10 -2
  77. package/src/utils/tracing.ts +44 -1
  78. package/tsconfig.json +1 -1
  79. package/vitest.config.ts +7 -0
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Planning Orchestrator Agent (Phase 1)
3
+ * Creates an analysis plan that guides the parallel workers
4
+ */
5
+ import { z } from 'zod';
6
+ import { isReasoningModel } from '../providers.js';
7
+ import { logger } from '../../utils/logger.js';
8
+ import { getTracedAI } from '../../utils/tracing.js';
9
+ /**
10
+ * Schema for the analysis plan output
11
+ */
12
+ const analysisPlanSchema = z.object({
13
+ areasToExplore: z.array(z.string()).describe('Key directories and files to explore'),
14
+ technologiesToResearch: z.array(z.string()).describe('Technologies to research in depth'),
15
+ questionsToAnswer: z.array(z.string()).describe('Specific questions that need answers'),
16
+ estimatedComplexity: z.enum(['low', 'medium', 'high']).describe('Estimated project complexity'),
17
+ });
18
+ /**
19
+ * System prompt for the Planning Orchestrator
20
+ */
21
+ const PLANNING_ORCHESTRATOR_SYSTEM_PROMPT = `You are a senior software architect analyzing a codebase to create an analysis plan.
22
+
23
+ Based on the scan result, create a focused analysis plan that identifies:
24
+ 1. Key areas to explore (directories, config files, entry points)
25
+ 2. Technologies that need in-depth research (frameworks, libraries, tools)
26
+ 3. Specific questions that need answers for implementation guidance
27
+
28
+ ## Guidelines
29
+ - Focus on areas that would benefit from deeper exploration
30
+ - Identify technologies where best practices would be valuable
31
+ - Ask questions that would help an AI developer implement features correctly
32
+ - Keep lists focused (3-7 items each)
33
+ - Consider the project type when prioritizing areas
34
+
35
+ ## Example Output
36
+ {
37
+ "areasToExplore": ["src/", "config/", "lib/auth/"],
38
+ "technologiesToResearch": ["Next.js 14", "Prisma", "NextAuth"],
39
+ "questionsToAnswer": ["What is the authentication strategy?", "How is state managed?", "What testing patterns are used?"],
40
+ "estimatedComplexity": "medium"
41
+ }`;
42
+ /**
43
+ * Run the Planning Orchestrator to create an analysis plan
44
+ */
45
+ export async function runPlanningOrchestrator(model, modelId, scanResult, verbose = false) {
46
+ // Build technology summary from scan result
47
+ const technologies = [];
48
+ const stack = scanResult.stack;
49
+ if (stack.framework)
50
+ technologies.push(stack.framework.name);
51
+ if (stack.database)
52
+ technologies.push(stack.database.name);
53
+ if (stack.orm)
54
+ technologies.push(stack.orm.name);
55
+ if (stack.testing?.unit)
56
+ technologies.push(stack.testing.unit.name);
57
+ if (stack.testing?.e2e)
58
+ technologies.push(stack.testing.e2e.name);
59
+ if (stack.stateManagement)
60
+ technologies.push(stack.stateManagement.name);
61
+ if (stack.auth)
62
+ technologies.push(stack.auth.name);
63
+ if (stack.styling)
64
+ technologies.push(stack.styling.name);
65
+ if (stack.mcp?.isProject)
66
+ technologies.push('MCP Server');
67
+ const prompt = `Analyze this scan result and create an analysis plan:
68
+
69
+ Project: ${scanResult.projectRoot}
70
+ Framework: ${stack.framework?.name || 'Unknown'}
71
+ Database: ${stack.database?.name || 'None detected'}
72
+ Testing: ${stack.testing?.unit?.name || 'None detected'}
73
+ Package Manager: ${stack.packageManager?.name || 'npm'}
74
+ Detected Technologies: ${technologies.join(', ') || 'None'}
75
+ ${stack.mcp?.isProject ? 'This is an MCP Server project.' : ''}
76
+
77
+ Create a focused analysis plan that will help understand this codebase.`;
78
+ try {
79
+ const { generateObject } = getTracedAI();
80
+ const { object: plan } = await generateObject({
81
+ model,
82
+ schema: analysisPlanSchema,
83
+ system: PLANNING_ORCHESTRATOR_SYSTEM_PROMPT,
84
+ prompt,
85
+ ...(isReasoningModel(modelId) ? {} : { temperature: 0.3 }),
86
+ experimental_telemetry: {
87
+ isEnabled: true,
88
+ metadata: {
89
+ agent: 'planning-orchestrator',
90
+ projectRoot: scanResult.projectRoot,
91
+ framework: stack.framework?.name || 'unknown',
92
+ },
93
+ },
94
+ });
95
+ if (verbose) {
96
+ logger.info(`Planning Orchestrator: ${plan.areasToExplore.length} areas, ${plan.technologiesToResearch.length} techs, ${plan.questionsToAnswer.length} questions`);
97
+ }
98
+ return plan;
99
+ }
100
+ catch (error) {
101
+ if (verbose) {
102
+ logger.error(`Planning Orchestrator error: ${error instanceof Error ? error.message : String(error)}`);
103
+ }
104
+ // Return a sensible default plan
105
+ return getDefaultPlan(scanResult);
106
+ }
107
+ }
108
+ /**
109
+ * Get a default analysis plan when the orchestrator fails
110
+ */
111
+ function getDefaultPlan(scanResult) {
112
+ const stack = scanResult.stack;
113
+ const technologies = [];
114
+ if (stack.framework)
115
+ technologies.push(stack.framework.name);
116
+ if (stack.database)
117
+ technologies.push(stack.database.name);
118
+ if (stack.orm)
119
+ technologies.push(stack.orm.name);
120
+ if (stack.testing?.unit)
121
+ technologies.push(stack.testing.unit.name);
122
+ return {
123
+ areasToExplore: ['src/', 'package.json'],
124
+ technologiesToResearch: technologies.length > 0 ? technologies : ['TypeScript'],
125
+ questionsToAnswer: [
126
+ 'What is the project structure?',
127
+ 'What are the main entry points?',
128
+ 'How are tests organized?',
129
+ ],
130
+ estimatedComplexity: 'medium',
131
+ };
132
+ }
133
+ //# sourceMappingURL=planning-orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning-orchestrator.js","sourceRoot":"","sources":["../../../src/ai/agents/planning-orchestrator.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,9 @@
2
2
  * Stack Researcher Agent
3
3
  * Researches best practices and tools for the detected stack
4
4
  * Gracefully degrades when optional services are unavailable
5
+ *
6
+ * @deprecated Use runTechResearcher/runTechResearchPool from tech-researcher.ts instead.
7
+ * This agent is kept for backward compatibility.
5
8
  */
6
9
  import { type LanguageModel } from 'ai';
7
10
  import type { StackResearch, StackResearcherInput } from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"stack-researcher.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/stack-researcher.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAe,KAAK,aAAa,EAAa,MAAM,IAAI,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAqB,MAAM,YAAY,CAAC;AAmKzF;;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,CAiD/B"}
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;AAmKzF;;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,CAiD/B"}
@@ -2,6 +2,9 @@
2
2
  * Stack Researcher Agent
3
3
  * Researches best practices and tools for the detected stack
4
4
  * Gracefully degrades when optional services are unavailable
5
+ *
6
+ * @deprecated Use runTechResearcher/runTechResearchPool from tech-researcher.ts instead.
7
+ * This agent is kept for backward compatibility.
5
8
  */
6
9
  import { stepCountIs } from 'ai';
7
10
  import { createTavilySearchTool } from '../tools/tavily.js';
@@ -1 +1 @@
1
- {"version":3,"file":"stack-researcher.js","sourceRoot":"","sources":["../../../src/ai/agents/stack-researcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stack-researcher.js","sourceRoot":"","sources":["../../../src/ai/agents/stack-researcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Stack Utilities
3
+ * Shared helper functions for working with DetectedStack
4
+ */
5
+ import type { DetectedStack } from '../../scanner/types.js';
6
+ /**
7
+ * Detect project type from the stack
8
+ * Returns a human-readable project type string
9
+ */
10
+ export declare function detectProjectType(stack: DetectedStack | undefined): string;
11
+ //# sourceMappingURL=stack-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-utils.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/stack-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,CAsB1E"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Stack Utilities
3
+ * Shared helper functions for working with DetectedStack
4
+ */
5
+ /**
6
+ * Detect project type from the stack
7
+ * Returns a human-readable project type string
8
+ */
9
+ export function detectProjectType(stack) {
10
+ if (!stack) {
11
+ return 'Unknown';
12
+ }
13
+ if (stack.mcp?.isProject) {
14
+ return 'MCP Server';
15
+ }
16
+ if (stack.framework?.name?.includes('Next')) {
17
+ return 'Next.js App';
18
+ }
19
+ if (stack.framework?.name?.includes('React')) {
20
+ return 'React SPA';
21
+ }
22
+ if (stack.framework?.name) {
23
+ return `${stack.framework.name} Project`;
24
+ }
25
+ return 'Unknown';
26
+ }
27
+ //# sourceMappingURL=stack-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-utils.js","sourceRoot":"","sources":["../../../src/ai/agents/stack-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAgC;IAChE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC;QACzB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;QAC1B,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC;IAC3C,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Synthesis Agent (Phase 3)
3
+ * Merges results from parallel workers and generates implementation guidelines
4
+ */
5
+ import { type LanguageModel } from 'ai';
6
+ import type { SynthesisInput, MultiAgentAnalysis } from './types.js';
7
+ /**
8
+ * Run the Synthesis Agent to merge results and generate guidelines
9
+ */
10
+ export declare function runSynthesisAgent(model: LanguageModel, modelId: string, input: SynthesisInput, verbose?: boolean): Promise<MultiAgentAnalysis>;
11
+ //# sourceMappingURL=synthesis-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthesis-agent.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/synthesis-agent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,IAAI,CAAC;AAExC,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAInB,MAAM,YAAY,CAAC;AA4CpB;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,cAAc,EACrB,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,kBAAkB,CAAC,CA8D7B"}
@@ -0,0 +1,202 @@
1
+ /**
2
+ * Synthesis Agent (Phase 3)
3
+ * Merges results from parallel workers and generates implementation guidelines
4
+ */
5
+ import { z } from 'zod';
6
+ import { convertToLegacyMcpRecommendations } from './mcp-detector.js';
7
+ import { isReasoningModel } from '../providers.js';
8
+ import { logger } from '../../utils/logger.js';
9
+ import { getTracedAI } from '../../utils/tracing.js';
10
+ /**
11
+ * Schema for synthesis output (implementation guidelines)
12
+ */
13
+ const synthesisOutputSchema = z.object({
14
+ implementationGuidelines: z.array(z.string()).describe('Short, actionable implementation guidelines'),
15
+ possibleMissedTechnologies: z.array(z.string()).optional().describe('Technologies that may have been missed'),
16
+ });
17
+ /**
18
+ * System prompt for the Synthesis Agent
19
+ */
20
+ const SYNTHESIS_AGENT_SYSTEM_PROMPT = `You are a Synthesis Agent that merges analysis results into actionable implementation guidelines.
21
+
22
+ ## Your Mission
23
+ Based on the enriched context and technology research, generate:
24
+ 1. Short, actionable implementation guidelines (5-10 words each)
25
+ 2. List any technologies that may have been missed
26
+
27
+ ## Guidelines Style
28
+ - Start with action verbs: "Run", "Use", "Follow", "Avoid"
29
+ - Be specific to the detected stack
30
+ - Include testing commands
31
+ - Mention key patterns from the research
32
+ - Max 7 guidelines, prioritize the most important
33
+
34
+ ## Example Output
35
+ {
36
+ "implementationGuidelines": [
37
+ "Run npm test after changes",
38
+ "Use App Router for new pages",
39
+ "Follow existing component patterns in src/components",
40
+ "Use Zod for API validation",
41
+ "Run npx playwright test for E2E"
42
+ ],
43
+ "possibleMissedTechnologies": ["Redis caching"]
44
+ }`;
45
+ /**
46
+ * Run the Synthesis Agent to merge results and generate guidelines
47
+ */
48
+ export async function runSynthesisAgent(model, modelId, input, verbose = false) {
49
+ // Build context summary for the LLM
50
+ const techSummary = input.techResearch
51
+ .map(r => `### ${r.technology}\nBest practices: ${r.bestPractices.slice(0, 3).join(', ')}\nAnti-patterns: ${r.antiPatterns.slice(0, 2).join(', ')}`)
52
+ .join('\n\n');
53
+ const prompt = `Synthesize these analysis results into implementation guidelines.
54
+
55
+ ## Project Context
56
+ - Type: ${input.enrichedContext.projectType}
57
+ - Entry Points: ${input.enrichedContext.entryPoints.join(', ')}
58
+ - Key Directories: ${Object.entries(input.enrichedContext.keyDirectories).map(([k, v]) => `${k} (${v})`).join(', ')}
59
+
60
+ ## Commands Available
61
+ ${Object.entries(input.enrichedContext.commands).map(([k, v]) => `- ${k}: ${v}`).join('\n')}
62
+
63
+ ## Technology Research
64
+ ${techSummary || 'No specific technology research available.'}
65
+
66
+ ## MCP Servers
67
+ - E2E Testing: ${input.mcpServers.e2eTesting}
68
+ - Database: ${input.mcpServers.database || 'None detected'}
69
+ - Additional: ${input.mcpServers.additional.join(', ') || 'None'}
70
+
71
+ ## Analysis Plan Questions & Answers
72
+ ${Object.entries(input.enrichedContext.answeredQuestions).map(([q, a]) => `Q: ${q}\nA: ${a}`).join('\n\n') || 'No questions answered.'}
73
+
74
+ Generate concise, actionable implementation guidelines based on this analysis.`;
75
+ try {
76
+ const { generateObject } = getTracedAI();
77
+ const { object: synthesis } = await generateObject({
78
+ model,
79
+ schema: synthesisOutputSchema,
80
+ system: SYNTHESIS_AGENT_SYSTEM_PROMPT,
81
+ prompt,
82
+ ...(isReasoningModel(modelId) ? {} : { temperature: 0.3 }),
83
+ experimental_telemetry: {
84
+ isEnabled: true,
85
+ metadata: {
86
+ agent: 'synthesis-agent',
87
+ projectType: input.enrichedContext.projectType,
88
+ techCount: input.techResearch.length,
89
+ },
90
+ },
91
+ });
92
+ if (verbose) {
93
+ logger.info(`Synthesis Agent: Generated ${synthesis.implementationGuidelines.length} guidelines`);
94
+ }
95
+ // Convert to MultiAgentAnalysis format for backward compatibility
96
+ return buildMultiAgentAnalysis(input, synthesis.implementationGuidelines, synthesis.possibleMissedTechnologies);
97
+ }
98
+ catch (error) {
99
+ if (verbose) {
100
+ logger.error(`Synthesis Agent error: ${error instanceof Error ? error.message : String(error)}`);
101
+ }
102
+ // Return with default guidelines
103
+ return buildMultiAgentAnalysis(input, getDefaultGuidelines(input), []);
104
+ }
105
+ }
106
+ /**
107
+ * Build MultiAgentAnalysis from synthesis input and generated guidelines
108
+ */
109
+ function buildMultiAgentAnalysis(input, implementationGuidelines, possibleMissedTechnologies) {
110
+ // Convert EnrichedContext to CodebaseAnalysis format
111
+ const codebaseAnalysis = {
112
+ projectContext: {
113
+ entryPoints: input.enrichedContext.entryPoints,
114
+ keyDirectories: input.enrichedContext.keyDirectories,
115
+ namingConventions: input.enrichedContext.namingConventions,
116
+ projectType: input.enrichedContext.projectType,
117
+ },
118
+ commands: {
119
+ test: input.enrichedContext.commands.test,
120
+ lint: input.enrichedContext.commands.lint,
121
+ typecheck: input.enrichedContext.commands.typecheck,
122
+ build: input.enrichedContext.commands.build,
123
+ dev: input.enrichedContext.commands.dev,
124
+ format: input.enrichedContext.commands.format,
125
+ },
126
+ implementationGuidelines,
127
+ possibleMissedTechnologies,
128
+ };
129
+ // Merge tech research into StackResearch format
130
+ const stackResearch = mergeTechResearch(input.techResearch);
131
+ // Convert MCP servers to legacy format
132
+ const mcpServers = convertToLegacyMcpRecommendations(input.mcpServers);
133
+ return {
134
+ codebaseAnalysis,
135
+ stackResearch,
136
+ mcpServers,
137
+ };
138
+ }
139
+ /**
140
+ * Merge multiple TechResearchResult into a single StackResearch
141
+ */
142
+ function mergeTechResearch(techResearch) {
143
+ if (techResearch.length === 0) {
144
+ return {
145
+ bestPractices: ['Follow project conventions'],
146
+ antiPatterns: ['Avoid skipping tests'],
147
+ testingTools: ['npm test'],
148
+ debuggingTools: ['console.log'],
149
+ documentationHints: ['Check official docs'],
150
+ researchMode: 'knowledge-only',
151
+ };
152
+ }
153
+ // Merge all research results
154
+ const bestPractices = [];
155
+ const antiPatterns = [];
156
+ const testingTips = [];
157
+ const documentationHints = [];
158
+ let researchMode = 'knowledge-only';
159
+ for (const research of techResearch) {
160
+ bestPractices.push(...research.bestPractices);
161
+ antiPatterns.push(...research.antiPatterns);
162
+ testingTips.push(...research.testingTips);
163
+ documentationHints.push(...research.documentationHints);
164
+ // Use the most complete research mode
165
+ if (research.researchMode === 'full')
166
+ researchMode = 'full';
167
+ else if (research.researchMode === 'web-only' && researchMode !== 'full')
168
+ researchMode = 'web-only';
169
+ else if (research.researchMode === 'docs-only' && researchMode === 'knowledge-only')
170
+ researchMode = 'docs-only';
171
+ }
172
+ // Deduplicate and limit
173
+ return {
174
+ bestPractices: [...new Set(bestPractices)].slice(0, 10),
175
+ antiPatterns: [...new Set(antiPatterns)].slice(0, 10),
176
+ testingTools: [...new Set(testingTips)].slice(0, 5),
177
+ debuggingTools: [], // Not collected in new format
178
+ documentationHints: [...new Set(documentationHints)].slice(0, 5),
179
+ researchMode,
180
+ };
181
+ }
182
+ /**
183
+ * Get default implementation guidelines when synthesis fails
184
+ */
185
+ function getDefaultGuidelines(input) {
186
+ const guidelines = [];
187
+ // Add test command if available
188
+ if (input.enrichedContext.commands.test) {
189
+ guidelines.push(`Run ${input.enrichedContext.commands.test} after changes`);
190
+ }
191
+ // Add build command if available
192
+ if (input.enrichedContext.commands.build) {
193
+ guidelines.push(`Run ${input.enrichedContext.commands.build} before committing`);
194
+ }
195
+ // Add E2E testing
196
+ guidelines.push(`Run npx playwright test for E2E testing`);
197
+ // Add generic guidelines
198
+ guidelines.push('Follow existing code patterns');
199
+ guidelines.push('Use TypeScript strict mode');
200
+ return guidelines.slice(0, 7);
201
+ }
202
+ //# sourceMappingURL=synthesis-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthesis-agent.js","sourceRoot":"","sources":["../../../src/ai/agents/synthesis-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Tech Researcher Worker (Phase 2)
3
+ * Researches best practices for a specific technology
4
+ * Multiple instances run in parallel via runTechResearchPool
5
+ */
6
+ import { type LanguageModel } from 'ai';
7
+ import type { TechResearcherInput, TechResearchResult, AgentOptions } from './types.js';
8
+ /**
9
+ * Run a single Tech Researcher worker for one technology
10
+ */
11
+ export declare function runTechResearcher(model: LanguageModel, modelId: string, input: TechResearcherInput, options: AgentOptions, verbose?: boolean): Promise<TechResearchResult>;
12
+ /**
13
+ * Run multiple Tech Researchers in parallel for a list of technologies
14
+ */
15
+ export declare function runTechResearchPool(model: LanguageModel, modelId: string, technologies: string[], options: AgentOptions, verbose?: boolean): Promise<TechResearchResult[]>;
16
+ //# sourceMappingURL=tech-researcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tech-researcher.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/tech-researcher.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAe,KAAK,aAAa,EAAa,MAAM,IAAI,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAqB,YAAY,EAAE,MAAM,YAAY,CAAC;AA6E3G;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,YAAY,EACrB,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,kBAAkB,CAAC,CAwD7B;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,EAAE,YAAY,EACrB,OAAO,GAAE,OAAe,GACvB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAiC/B"}