wiggum-cli 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,52 +5,50 @@
5
5
  import type { ScanResult } from '../scanner/types.js';
6
6
  import { type AIProvider } from './providers.js';
7
7
  /**
8
- * Framework insights from AI analysis
8
+ * Project context from AI analysis - key structure information
9
9
  */
10
- export interface FrameworkInsights {
11
- variant?: string;
12
- confidence: 'high' | 'medium' | 'low';
13
- notes?: string;
10
+ export interface ProjectContext {
11
+ /** Key entry point files */
12
+ entryPoints?: string[];
13
+ /** Important directories and their purposes */
14
+ keyDirectories?: Record<string, string>;
15
+ /** Naming conventions used in the project */
16
+ namingConventions?: string;
14
17
  }
15
18
  /**
16
- * Architectural pattern detected by AI
19
+ * Detected commands from package.json scripts or common patterns
17
20
  */
18
- export interface ArchitecturalPattern {
19
- pattern: string;
20
- confidence: 'high' | 'medium' | 'low';
21
- evidence: string;
21
+ export interface DetectedCommands {
22
+ test?: string;
23
+ lint?: string;
24
+ typecheck?: string;
25
+ build?: string;
26
+ dev?: string;
27
+ format?: string;
22
28
  }
23
29
  /**
24
- * Coding convention detected by AI
30
+ * MCP server recommendations (categorized)
25
31
  */
26
- export interface CodingConvention {
27
- convention: string;
28
- suggestion: string;
32
+ export interface McpRecommendations {
33
+ /** Essential MCP servers for this stack */
34
+ essential?: string[];
35
+ /** Recommended but optional MCP servers */
36
+ recommended?: string[];
29
37
  }
30
38
  /**
31
- * MCP server recommendation
32
- */
33
- export interface McpRecommendation {
34
- name: string;
35
- reason: string;
36
- }
37
- /**
38
- * Additional detection suggestions
39
- */
40
- export interface AdditionalDetections {
41
- possibleMissed?: string[];
42
- refinements?: string[];
43
- }
44
- /**
45
- * AI analysis result
39
+ * AI analysis result - focused on actionable outputs
46
40
  */
47
41
  export interface AIAnalysisResult {
48
- frameworkInsights?: FrameworkInsights;
49
- architecturalPatterns?: ArchitecturalPattern[];
50
- codingConventions?: CodingConvention[];
51
- recommendedMcpServers?: McpRecommendation[];
52
- customPromptSuggestions?: string[];
53
- additionalDetections?: AdditionalDetections;
42
+ /** Project structure and context */
43
+ projectContext?: ProjectContext;
44
+ /** Detected commands from package.json */
45
+ commands?: DetectedCommands;
46
+ /** Short, actionable implementation guidelines */
47
+ implementationGuidelines?: string[];
48
+ /** MCP server recommendations */
49
+ mcpServers?: McpRecommendations;
50
+ /** Additional technologies that may have been missed */
51
+ possibleMissedTechnologies?: string[];
54
52
  }
55
53
  /**
56
54
  * Enhanced scan result with AI insights
@@ -68,6 +66,8 @@ export interface EnhancerOptions {
68
66
  provider?: AIProvider;
69
67
  model?: string;
70
68
  verbose?: boolean;
69
+ /** Use agentic mode with tools for deeper codebase exploration */
70
+ agentic?: boolean;
71
71
  }
72
72
  /**
73
73
  * AI Enhancer class
@@ -77,6 +77,7 @@ export declare class AIEnhancer {
77
77
  private provider;
78
78
  private model?;
79
79
  private verbose;
80
+ private agentic;
80
81
  constructor(options?: EnhancerOptions);
81
82
  /**
82
83
  * Check if AI enhancement is available
@@ -90,6 +91,14 @@ export declare class AIEnhancer {
90
91
  * Enhance scan results with AI analysis
91
92
  */
92
93
  enhance(scanResult: ScanResult): Promise<EnhancedScanResult>;
94
+ /**
95
+ * Simple enhancement mode - analyze detected stack without tools
96
+ */
97
+ private enhanceSimple;
98
+ /**
99
+ * Agentic enhancement mode - use tools to explore codebase
100
+ */
101
+ private enhanceAgentic;
93
102
  }
94
103
  /**
95
104
  * Convenience function to enhance scan results with AI
@@ -1 +1 @@
1
- {"version":3,"file":"enhancer.d.ts","sourceRoot":"","sources":["../../src/ai/enhancer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAkC,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAY,KAAK,UAAU,EAA8B,MAAM,gBAAgB,CAAC;AAIvF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,qBAAqB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC/C,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,qBAAqB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC5C,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAyED;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,OAAO,CAAU;gBAEb,OAAO,GAAE,eAAoB;IAMzC;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;OAEG;IACG,OAAO,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAiEnE;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAG7B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAoFnE"}
1
+ {"version":3,"file":"enhancer.d.ts","sourceRoot":"","sources":["../../src/ai/enhancer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAkC,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAY,KAAK,UAAU,EAA8B,MAAM,gBAAgB,CAAC;AAKvF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,6CAA6C;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,kDAAkD;IAClD,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC;IACpC,iCAAiC;IACjC,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,wDAAwD;IACxD,0BAA0B,CAAC,EAAE,MAAM,EAAE,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA4DD;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAAU;gBAEb,OAAO,GAAE,eAAoB;IAOzC;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;OAEG;IACG,OAAO,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgElE;;OAEG;YACW,aAAa;IAiB3B;;OAEG;YACW,cAAc;CAkD7B;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAG7B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAwEnE"}
@@ -2,9 +2,10 @@
2
2
  * AI Enhancer Module
3
3
  * Uses AI to analyze the codebase for deeper insights
4
4
  */
5
- import { generateText } from 'ai';
5
+ import { generateText, stepCountIs } from 'ai';
6
6
  import { getModel, hasApiKey, getApiKeyEnvVar } from './providers.js';
7
- import { SYSTEM_PROMPT, createAnalysisPrompt } from './prompts.js';
7
+ import { SYSTEM_PROMPT, SYSTEM_PROMPT_AGENTIC, createAnalysisPrompt } from './prompts.js';
8
+ import { createExplorationTools } from './tools.js';
8
9
  import { logger } from '../utils/logger.js';
9
10
  /**
10
11
  * Parse AI response JSON safely
@@ -36,32 +37,22 @@ function parseAIResponse(text) {
36
37
  */
37
38
  function applyEnhancements(stack, analysis) {
38
39
  const enhanced = { ...stack };
39
- // Enhance framework detection with AI insights
40
- if (analysis.frameworkInsights && enhanced.framework) {
41
- // If AI detected a more specific variant with high confidence
42
- if (analysis.frameworkInsights.variant &&
43
- analysis.frameworkInsights.confidence === 'high') {
44
- enhanced.framework = {
45
- ...enhanced.framework,
46
- variant: analysis.frameworkInsights.variant,
47
- evidence: [
48
- ...enhanced.framework.evidence,
49
- `AI: ${analysis.frameworkInsights.notes || 'variant detected'}`,
40
+ // Enhance MCP recommendations from AI analysis
41
+ if (analysis.mcpServers) {
42
+ const aiRecommended = [
43
+ ...(analysis.mcpServers.essential || []),
44
+ ...(analysis.mcpServers.recommended || []),
45
+ ];
46
+ if (aiRecommended.length > 0) {
47
+ enhanced.mcp = {
48
+ ...enhanced.mcp,
49
+ recommended: [
50
+ ...(enhanced.mcp?.recommended || []),
51
+ ...aiRecommended.filter(r => !enhanced.mcp?.recommended?.includes(r)),
50
52
  ],
51
53
  };
52
54
  }
53
55
  }
54
- // Enhance MCP recommendations
55
- if (analysis.recommendedMcpServers && analysis.recommendedMcpServers.length > 0) {
56
- const aiRecommended = analysis.recommendedMcpServers.map(r => r.name);
57
- enhanced.mcp = {
58
- ...enhanced.mcp,
59
- recommended: [
60
- ...(enhanced.mcp?.recommended || []),
61
- ...aiRecommended.filter(r => !enhanced.mcp?.recommended?.includes(r)),
62
- ],
63
- };
64
- }
65
56
  return enhanced;
66
57
  }
67
58
  /**
@@ -72,10 +63,12 @@ export class AIEnhancer {
72
63
  provider;
73
64
  model;
74
65
  verbose;
66
+ agentic;
75
67
  constructor(options = {}) {
76
68
  this.provider = options.provider || 'anthropic';
77
69
  this.model = options.model;
78
70
  this.verbose = options.verbose || false;
71
+ this.agentic = options.agentic || false;
79
72
  }
80
73
  /**
81
74
  * Check if AI enhancement is available
@@ -107,19 +100,19 @@ export class AIEnhancer {
107
100
  const { model, provider, modelId } = getModel(this.provider, this.model);
108
101
  if (this.verbose) {
109
102
  logger.info(`Using AI provider: ${provider} (${modelId})`);
103
+ if (this.agentic) {
104
+ logger.info('Agentic mode enabled - AI will explore the codebase with tools');
105
+ }
106
+ }
107
+ let analysis;
108
+ if (this.agentic) {
109
+ // Agentic mode: use tools to explore codebase
110
+ analysis = await this.enhanceAgentic(model, scanResult);
111
+ }
112
+ else {
113
+ // Simple mode: just analyze detected stack
114
+ analysis = await this.enhanceSimple(model, scanResult);
110
115
  }
111
- // Create the analysis prompt
112
- const prompt = createAnalysisPrompt(scanResult);
113
- // Call the AI model
114
- const { text } = await generateText({
115
- model,
116
- system: SYSTEM_PROMPT,
117
- prompt,
118
- maxOutputTokens: 2000,
119
- temperature: 0.3, // Lower temperature for more consistent output
120
- });
121
- // Parse the response
122
- const analysis = parseAIResponse(text);
123
116
  if (!analysis) {
124
117
  return {
125
118
  ...scanResult,
@@ -149,6 +142,67 @@ export class AIEnhancer {
149
142
  };
150
143
  }
151
144
  }
145
+ /**
146
+ * Simple enhancement mode - analyze detected stack without tools
147
+ */
148
+ async enhanceSimple(model, scanResult) {
149
+ const prompt = createAnalysisPrompt(scanResult);
150
+ const { text } = await generateText({
151
+ model,
152
+ system: SYSTEM_PROMPT,
153
+ prompt,
154
+ maxOutputTokens: 2000,
155
+ temperature: 0.3,
156
+ });
157
+ return parseAIResponse(text);
158
+ }
159
+ /**
160
+ * Agentic enhancement mode - use tools to explore codebase
161
+ */
162
+ async enhanceAgentic(model, scanResult) {
163
+ const tools = createExplorationTools(scanResult.projectRoot);
164
+ const prompt = `Analyze this codebase and produce configuration for AI-assisted development.
165
+
166
+ Project: ${scanResult.projectRoot}
167
+
168
+ Start by exploring the codebase structure, then produce your analysis.
169
+ When done exploring, output your final analysis as valid JSON matching this structure:
170
+
171
+ {
172
+ "projectContext": {
173
+ "entryPoints": ["src/index.ts"],
174
+ "keyDirectories": {"src/routes": "API routes"},
175
+ "namingConventions": "camelCase files, PascalCase components"
176
+ },
177
+ "commands": {
178
+ "test": "npm test",
179
+ "lint": "npm run lint",
180
+ "build": "npm run build",
181
+ "dev": "npm run dev"
182
+ },
183
+ "implementationGuidelines": [
184
+ "Run npm test after changes",
185
+ "Use Zod for validation"
186
+ ],
187
+ "mcpServers": {
188
+ "essential": ["filesystem", "git"],
189
+ "recommended": ["docker"]
190
+ },
191
+ "possibleMissedTechnologies": ["Redis"]
192
+ }`;
193
+ // Use agentic loop - AI will call tools until it has enough info
194
+ // stopWhen: stepCountIs(10) allows up to 10 tool-calling steps
195
+ const { text } = await generateText({
196
+ model,
197
+ system: SYSTEM_PROMPT_AGENTIC,
198
+ prompt,
199
+ tools,
200
+ stopWhen: stepCountIs(10),
201
+ maxOutputTokens: 4000,
202
+ temperature: 0.3,
203
+ });
204
+ return parseAIResponse(text);
205
+ }
152
206
  }
153
207
  /**
154
208
  * Convenience function to enhance scan results with AI
@@ -162,74 +216,65 @@ export async function enhanceWithAI(scanResult, options) {
162
216
  */
163
217
  export function formatAIAnalysis(analysis) {
164
218
  const lines = [];
165
- lines.push('=== AI Analysis ===');
166
- lines.push('');
167
- // Framework insights
168
- if (analysis.frameworkInsights) {
169
- lines.push('Framework Insights:');
170
- if (analysis.frameworkInsights.variant) {
171
- lines.push(` Variant: ${analysis.frameworkInsights.variant}`);
219
+ // Project context
220
+ if (analysis.projectContext) {
221
+ const ctx = analysis.projectContext;
222
+ if (ctx.entryPoints && ctx.entryPoints.length > 0) {
223
+ lines.push('Entry Points:');
224
+ for (const entry of ctx.entryPoints) {
225
+ lines.push(` ${entry}`);
226
+ }
227
+ lines.push('');
172
228
  }
173
- lines.push(` Confidence: ${analysis.frameworkInsights.confidence}`);
174
- if (analysis.frameworkInsights.notes) {
175
- lines.push(` Notes: ${analysis.frameworkInsights.notes}`);
229
+ if (ctx.keyDirectories && Object.keys(ctx.keyDirectories).length > 0) {
230
+ lines.push('Key Directories:');
231
+ for (const [dir, purpose] of Object.entries(ctx.keyDirectories)) {
232
+ lines.push(` ${dir} → ${purpose}`);
233
+ }
234
+ lines.push('');
176
235
  }
177
- lines.push('');
178
- }
179
- // Architectural patterns
180
- if (analysis.architecturalPatterns && analysis.architecturalPatterns.length > 0) {
181
- lines.push('Architectural Patterns:');
182
- for (const pattern of analysis.architecturalPatterns) {
183
- lines.push(` - ${pattern.pattern} [${pattern.confidence}]`);
184
- lines.push(` Evidence: ${pattern.evidence}`);
236
+ if (ctx.namingConventions) {
237
+ lines.push(`Naming: ${ctx.namingConventions}`);
238
+ lines.push('');
185
239
  }
186
- lines.push('');
187
240
  }
188
- // Coding conventions
189
- if (analysis.codingConventions && analysis.codingConventions.length > 0) {
190
- lines.push('Coding Conventions:');
191
- for (const convention of analysis.codingConventions) {
192
- lines.push(` - ${convention.convention}`);
193
- lines.push(` Suggestion: ${convention.suggestion}`);
241
+ // Detected commands
242
+ if (analysis.commands) {
243
+ const cmds = analysis.commands;
244
+ const cmdList = Object.entries(cmds).filter(([_, v]) => v);
245
+ if (cmdList.length > 0) {
246
+ lines.push('Commands:');
247
+ for (const [name, cmd] of cmdList) {
248
+ lines.push(` ${name}: ${cmd}`);
249
+ }
250
+ lines.push('');
194
251
  }
195
- lines.push('');
196
252
  }
197
- // MCP recommendations
198
- if (analysis.recommendedMcpServers && analysis.recommendedMcpServers.length > 0) {
199
- lines.push('Recommended MCP Servers:');
200
- for (const server of analysis.recommendedMcpServers) {
201
- lines.push(` - ${server.name}`);
202
- lines.push(` Reason: ${server.reason}`);
253
+ // Implementation guidelines (the most important part)
254
+ if (analysis.implementationGuidelines && analysis.implementationGuidelines.length > 0) {
255
+ lines.push('Implementation Guidelines:');
256
+ for (const guideline of analysis.implementationGuidelines) {
257
+ lines.push(` ${guideline}`);
203
258
  }
204
259
  lines.push('');
205
260
  }
206
- // Custom prompt suggestions
207
- if (analysis.customPromptSuggestions && analysis.customPromptSuggestions.length > 0) {
208
- lines.push('Custom Prompt Suggestions:');
209
- for (const suggestion of analysis.customPromptSuggestions) {
210
- lines.push(` - ${suggestion}`);
261
+ // MCP servers
262
+ if (analysis.mcpServers) {
263
+ if (analysis.mcpServers.essential && analysis.mcpServers.essential.length > 0) {
264
+ lines.push(`MCP (essential): ${analysis.mcpServers.essential.join(', ')}`);
211
265
  }
212
- lines.push('');
213
- }
214
- // Additional detections
215
- if (analysis.additionalDetections) {
216
- if (analysis.additionalDetections.possibleMissed &&
217
- analysis.additionalDetections.possibleMissed.length > 0) {
218
- lines.push('Possibly Missed Technologies:');
219
- for (const tech of analysis.additionalDetections.possibleMissed) {
220
- lines.push(` - ${tech}`);
221
- }
222
- lines.push('');
266
+ if (analysis.mcpServers.recommended && analysis.mcpServers.recommended.length > 0) {
267
+ lines.push(`MCP (optional): ${analysis.mcpServers.recommended.join(', ')}`);
223
268
  }
224
- if (analysis.additionalDetections.refinements &&
225
- analysis.additionalDetections.refinements.length > 0) {
226
- lines.push('Detection Refinements:');
227
- for (const refinement of analysis.additionalDetections.refinements) {
228
- lines.push(` - ${refinement}`);
229
- }
269
+ if (analysis.mcpServers.essential?.length || analysis.mcpServers.recommended?.length) {
230
270
  lines.push('');
231
271
  }
232
272
  }
273
+ // Possibly missed technologies (brief)
274
+ if (analysis.possibleMissedTechnologies && analysis.possibleMissedTechnologies.length > 0) {
275
+ lines.push(`May also use: ${analysis.possibleMissedTechnologies.join(', ')}`);
276
+ lines.push('');
277
+ }
233
278
  return lines.join('\n');
234
279
  }
235
280
  //# sourceMappingURL=enhancer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"enhancer.js","sourceRoot":"","sources":["../../src/ai/enhancer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"enhancer.js","sourceRoot":"","sources":["../../src/ai/enhancer.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  * Main export for AI-enhanced analysis functionality
4
4
  */
5
5
  export { type AIProvider, type ProviderConfig, getModel, hasApiKey, getAvailableProvider, getApiKeyEnvVar, } from './providers.js';
6
- export { formatStackForPrompt, SYSTEM_PROMPT, createAnalysisPrompt, createValidationPrompt, createRecommendationsPrompt, } from './prompts.js';
7
- export { type FrameworkInsights, type ArchitecturalPattern, type CodingConvention, type McpRecommendation, type AdditionalDetections, type AIAnalysisResult, type EnhancedScanResult, type EnhancerOptions, AIEnhancer, enhanceWithAI, formatAIAnalysis, } from './enhancer.js';
6
+ export { formatStackForPrompt, SYSTEM_PROMPT, SYSTEM_PROMPT_AGENTIC, createAnalysisPrompt, createValidationPrompt, createRecommendationsPrompt, } from './prompts.js';
7
+ export { createExplorationTools, RIPGREP_SKILL, } from './tools.js';
8
+ export { type ProjectContext, type DetectedCommands, type McpRecommendations, type AIAnalysisResult, type EnhancedScanResult, type EnhancerOptions, AIEnhancer, enhanceWithAI, formatAIAnalysis, } from './enhancer.js';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,QAAQ,EACR,SAAS,EACT,oBAAoB,EACpB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,UAAU,EACV,aAAa,EACb,gBAAgB,GACjB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,QAAQ,EACR,SAAS,EACT,oBAAoB,EACpB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,sBAAsB,EACtB,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,UAAU,EACV,aAAa,EACb,gBAAgB,GACjB,MAAM,eAAe,CAAC"}
package/dist/ai/index.js CHANGED
@@ -5,7 +5,9 @@
5
5
  // Provider configuration
6
6
  export { getModel, hasApiKey, getAvailableProvider, getApiKeyEnvVar, } from './providers.js';
7
7
  // Analysis prompts
8
- export { formatStackForPrompt, SYSTEM_PROMPT, createAnalysisPrompt, createValidationPrompt, createRecommendationsPrompt, } from './prompts.js';
8
+ export { formatStackForPrompt, SYSTEM_PROMPT, SYSTEM_PROMPT_AGENTIC, createAnalysisPrompt, createValidationPrompt, createRecommendationsPrompt, } from './prompts.js';
9
+ // Tools for agentic exploration
10
+ export { createExplorationTools, RIPGREP_SKILL, } from './tools.js';
9
11
  // AI enhancer
10
12
  export { AIEnhancer, enhanceWithAI, formatAIAnalysis, } from './enhancer.js';
11
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,yBAAyB;AACzB,OAAO,EAGL,QAAQ,EACR,SAAS,EACT,oBAAoB,EACpB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,mBAAmB;AACnB,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AAEtB,cAAc;AACd,OAAO,EASL,UAAU,EACV,aAAa,EACb,gBAAgB,GACjB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,yBAAyB;AACzB,OAAO,EAGL,QAAQ,EACR,SAAS,EACT,oBAAoB,EACpB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,mBAAmB;AACnB,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AAEtB,gCAAgC;AAChC,OAAO,EACL,sBAAsB,EACtB,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,cAAc;AACd,OAAO,EAOL,UAAU,EACV,aAAa,EACb,gBAAgB,GACjB,MAAM,eAAe,CAAC"}
@@ -8,9 +8,13 @@ import type { ScanResult, DetectedStack } from '../scanner/types.js';
8
8
  */
9
9
  export declare function formatStackForPrompt(stack: DetectedStack): string;
10
10
  /**
11
- * System prompt for codebase analysis
11
+ * System prompt for codebase analysis (agentic mode)
12
12
  */
13
- export declare const SYSTEM_PROMPT = "You are an expert software architect analyzing a codebase to provide insights for AI-assisted development.\n\nYour role is to:\n1. Analyze the detected tech stack and provide deeper insights\n2. Identify architectural patterns and coding conventions\n3. Suggest improvements to the detection results\n4. Recommend MCP servers that would benefit this project\n5. Generate custom prompt suggestions for AI coding assistants\n\nBe concise and actionable. Focus on practical insights that help developers work more effectively with AI tools.\n\nRespond in valid JSON format only.";
13
+ export declare const SYSTEM_PROMPT_AGENTIC = "You are an expert codebase analyst with tools to explore the project.\n\nYour goal is to thoroughly understand the codebase structure and produce actionable configuration for AI-assisted development.\n\n## Exploration Strategy\n1. First, list the root directory to understand project structure\n2. Read package.json to understand scripts and dependencies\n3. Search for key patterns: entry points, routes, components, tests\n4. Identify naming conventions by examining existing files\n5. Look for existing documentation (.md files, README)\n\n## Tools Available\nYou have these tools to explore the codebase:\n- searchCode: Search using ripgrep patterns\n- readFile: Read file contents\n- listDirectory: List directory structure\n- getPackageInfo: Get package.json info\n\n\n## ripgrep Code Search Skill\n\n### Essential Patterns\n\n**Find definitions:**\n- Python functions: pattern=\"^def \\w+\\(\", fileType=\"py\"\n- JS/TS functions: pattern=\"^(export )?(function|const) \\w+\", fileType=\"ts\"\n- Classes: pattern=\"^class \\w+\", fileType=\"py\"\n\n**Find symbol usage (CRITICAL: use word boundaries):**\n- Exact word: pattern=\"\\bSymbolName\\b\"\n- Literal string: pattern=\"exact.string\", literal=true\n\n**Find imports:**\n- ES imports: pattern=\"^import.*from\", fileType=\"ts\"\n- CommonJS: pattern=\"require\\(\", fileType=\"js\"\n\n**File type options:**\n- py (Python)\n- js (JavaScript)\n- ts (TypeScript)\n- rust (Rust)\n- go (Go)\n\n**Performance tips:**\n1. Always use fileType when possible\n2. Use literal=true for exact strings\n3. Use \\b for word boundaries (prevents partial matches)\n4. Keep maxResults reasonable\n\n**Word boundaries are critical:**\n- WITHOUT: pattern=\"log\" matches \"logger\", \"blogger\", \"catalog\"\n- WITH: pattern=\"\\blog\\b\" matches only \"log\"\n\n\n## Output Requirements\nAfter exploration, output valid JSON with:\n- projectContext: entry points, key directories, naming conventions\n- commands: test, lint, build, dev commands from package.json\n- implementationGuidelines: short actionable rules (5-10 words each, max 7)\n- mcpServers: essential and recommended servers\n- possibleMissedTechnologies: technologies that might be in use\n\nBe concise. Focus on WHAT TO DO, not what exists.";
14
+ /**
15
+ * System prompt for codebase analysis (simple mode - no tools)
16
+ */
17
+ export declare const SYSTEM_PROMPT = "You are analyzing a codebase to help configure AI-assisted development tools.\n\nYour goal is to produce SHORT, ACTIONABLE output that helps AI coding assistants work effectively on this codebase.\n\nRules:\n- Output valid JSON only\n- Be extremely concise (5-10 words per item max)\n- Focus on WHAT TO DO, not what exists\n- Include specific file paths and commands\n- Max 5-7 items per array\n- No explanations, just actionable rules";
14
18
  /**
15
19
  * Create the codebase analysis prompt
16
20
  */
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/ai/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAErE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CA4EjE;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,okBAWS,CAAC;AAEpC;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CA8CnE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CA2BrE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CA0B1E"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/ai/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGrE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CA4EjE;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,gtEA4BgB,CAAC;AAEnD;;GAEG;AACH,eAAO,MAAM,aAAa,wbAUe,CAAC;AAE1C;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CA6CnE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CA2BrE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CA0B1E"}