wiggum-cli 0.2.3 → 0.2.6

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.
@@ -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;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"}
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,EAAgD,MAAM,gBAAgB,CAAC;AAKzG;;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;AAqFD;;;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;IAmB3B;;OAEG;YACW,cAAc;CA+E7B;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"}
@@ -3,14 +3,20 @@
3
3
  * Uses AI to analyze the codebase for deeper insights
4
4
  */
5
5
  import { generateText, stepCountIs } from 'ai';
6
- import { getModel, hasApiKey, getApiKeyEnvVar } from './providers.js';
6
+ import { getModel, hasApiKey, getApiKeyEnvVar, isReasoningModel } from './providers.js';
7
7
  import { SYSTEM_PROMPT, SYSTEM_PROMPT_AGENTIC, createAnalysisPrompt } from './prompts.js';
8
8
  import { createExplorationTools } from './tools.js';
9
9
  import { logger } from '../utils/logger.js';
10
10
  /**
11
11
  * Parse AI response JSON safely
12
12
  */
13
- function parseAIResponse(text) {
13
+ function parseAIResponse(text, verbose = false) {
14
+ if (!text || text.trim() === '') {
15
+ if (verbose) {
16
+ logger.warn('AI response text is empty');
17
+ }
18
+ return null;
19
+ }
14
20
  try {
15
21
  // Try to extract JSON from the response
16
22
  // The AI might wrap it in markdown code blocks
@@ -20,15 +26,32 @@ function parseAIResponse(text) {
20
26
  if (jsonMatch) {
21
27
  jsonText = jsonMatch[1];
22
28
  }
23
- // Try to find JSON object
29
+ // Try to find JSON object - use greedy match for the outermost braces
30
+ // This handles cases where there's text before/after the JSON
24
31
  const objectMatch = jsonText.match(/\{[\s\S]*\}/);
25
32
  if (objectMatch) {
26
33
  jsonText = objectMatch[0];
27
34
  }
28
- return JSON.parse(jsonText);
35
+ // Try to parse JSON
36
+ const result = JSON.parse(jsonText);
37
+ // Validate that we got the expected structure
38
+ if (!result || typeof result !== 'object') {
39
+ if (verbose) {
40
+ logger.warn('AI response parsed but is not an object');
41
+ }
42
+ return null;
43
+ }
44
+ return result;
29
45
  }
30
46
  catch (error) {
31
- logger.warn('Failed to parse AI response as JSON');
47
+ if (verbose) {
48
+ logger.warn(`Failed to parse AI response as JSON: ${error instanceof Error ? error.message : String(error)}`);
49
+ // Log first 500 chars of response for debugging
50
+ logger.warn(`Response preview: ${text.substring(0, 500)}...`);
51
+ }
52
+ else {
53
+ logger.warn('Failed to parse AI response as JSON');
54
+ }
32
55
  return null;
33
56
  }
34
57
  }
@@ -107,11 +130,11 @@ export class AIEnhancer {
107
130
  let analysis;
108
131
  if (this.agentic) {
109
132
  // Agentic mode: use tools to explore codebase
110
- analysis = await this.enhanceAgentic(model, scanResult);
133
+ analysis = await this.enhanceAgentic(model, modelId, scanResult);
111
134
  }
112
135
  else {
113
136
  // Simple mode: just analyze detected stack
114
- analysis = await this.enhanceSimple(model, scanResult);
137
+ analysis = await this.enhanceSimple(model, modelId, scanResult);
115
138
  }
116
139
  if (!analysis) {
117
140
  return {
@@ -145,21 +168,22 @@ export class AIEnhancer {
145
168
  /**
146
169
  * Simple enhancement mode - analyze detected stack without tools
147
170
  */
148
- async enhanceSimple(model, scanResult) {
171
+ async enhanceSimple(model, modelId, scanResult) {
149
172
  const prompt = createAnalysisPrompt(scanResult);
150
173
  const { text } = await generateText({
151
174
  model,
152
175
  system: SYSTEM_PROMPT,
153
176
  prompt,
154
177
  maxOutputTokens: 2000,
155
- temperature: 0.3,
178
+ // Reasoning models don't support temperature
179
+ ...(isReasoningModel(modelId) ? {} : { temperature: 0.3 }),
156
180
  });
157
181
  return parseAIResponse(text);
158
182
  }
159
183
  /**
160
184
  * Agentic enhancement mode - use tools to explore codebase
161
185
  */
162
- async enhanceAgentic(model, scanResult) {
186
+ async enhanceAgentic(model, modelId, scanResult) {
163
187
  const tools = createExplorationTools(scanResult.projectRoot);
164
188
  const prompt = `Analyze this codebase and produce configuration for AI-assisted development.
165
189
 
@@ -192,16 +216,40 @@ When done exploring, output your final analysis as valid JSON matching this stru
192
216
  }`;
193
217
  // Use agentic loop - AI will call tools until it has enough info
194
218
  // stopWhen: stepCountIs(10) allows up to 10 tool-calling steps
195
- const { text } = await generateText({
219
+ const result = await generateText({
196
220
  model,
197
221
  system: SYSTEM_PROMPT_AGENTIC,
198
222
  prompt,
199
223
  tools,
200
224
  stopWhen: stepCountIs(10),
201
225
  maxOutputTokens: 4000,
202
- temperature: 0.3,
226
+ // Reasoning models don't support temperature
227
+ ...(isReasoningModel(modelId) ? {} : { temperature: 0.3 }),
203
228
  });
204
- return parseAIResponse(text);
229
+ // Try to get text from the result
230
+ let textToParse = result.text;
231
+ // If text is empty, try to extract from steps
232
+ if (!textToParse || textToParse.trim() === '') {
233
+ if (this.verbose) {
234
+ logger.info(`No direct text output, checking ${result.steps?.length || 0} steps...`);
235
+ }
236
+ // Look through steps for text content (from last to first)
237
+ const steps = result.steps || [];
238
+ for (let i = steps.length - 1; i >= 0; i--) {
239
+ const step = steps[i];
240
+ if (step.text && step.text.trim() !== '') {
241
+ textToParse = step.text;
242
+ if (this.verbose) {
243
+ logger.info(`Found text in step ${i + 1}`);
244
+ }
245
+ break;
246
+ }
247
+ }
248
+ }
249
+ if (this.verbose && (!textToParse || textToParse.trim() === '')) {
250
+ logger.warn('No text output found in response or steps');
251
+ }
252
+ return parseAIResponse(textToParse, this.verbose);
205
253
  }
206
254
  }
207
255
  /**
@@ -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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"}
@@ -44,4 +44,8 @@ export declare function getAvailableProvider(): AIProvider | null;
44
44
  * Get the environment variable name for a provider's API key
45
45
  */
46
46
  export declare function getApiKeyEnvVar(provider: AIProvider): string;
47
+ /**
48
+ * Check if a model is a reasoning model that doesn't support temperature
49
+ */
50
+ export declare function isReasoningModel(modelId: string): boolean;
47
51
  //# sourceMappingURL=providers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/ai/providers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAExC;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,UAAU,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAWD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,CAkB9D,CAAC;AAYF;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAGvD;AAmBD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,GAAE,UAAwB,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,cAAc,CA0CnG;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,UAAU,GAAG,IAAI,CAUxD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAE5D"}
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/ai/providers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAExC;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,UAAU,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAWD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,CAkB9D,CAAC;AAYF;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAGvD;AAmBD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,GAAE,UAAwB,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,cAAc,CA0CnG;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,UAAU,GAAG,IAAI,CAUxD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAE5D;AAaD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD"}
@@ -123,4 +123,20 @@ export function getAvailableProvider() {
123
123
  export function getApiKeyEnvVar(provider) {
124
124
  return API_KEY_ENV_VARS[provider];
125
125
  }
126
+ /**
127
+ * Models that don't support temperature parameter (reasoning models)
128
+ */
129
+ const REASONING_MODELS = [
130
+ // OpenAI reasoning models
131
+ 'o1', 'o1-mini', 'o1-preview',
132
+ 'o3', 'o3-mini',
133
+ 'gpt-5', 'gpt-5.1', 'gpt-5-mini',
134
+ 'gpt-5.1-codex', 'gpt-5.1-codex-max',
135
+ ];
136
+ /**
137
+ * Check if a model is a reasoning model that doesn't support temperature
138
+ */
139
+ export function isReasoningModel(modelId) {
140
+ return REASONING_MODELS.some(m => modelId.startsWith(m));
141
+ }
126
142
  //# sourceMappingURL=providers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/ai/providers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/ai/providers.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,14 @@ export interface TemplateVariables {
28
28
  typecheckCommand: string;
29
29
  formatCommand: string;
30
30
  appDir: string;
31
+ aiEntryPoints: string;
32
+ aiKeyDirectories: string;
33
+ aiNamingConventions: string;
34
+ aiImplementationGuidelines: string;
35
+ aiMcpEssential: string;
36
+ aiMcpRecommended: string;
37
+ aiMissedTechnologies: string;
38
+ hasAiAnalysis: string;
31
39
  [key: string]: string;
32
40
  }
33
41
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/generator/templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,qBAAqB,CAAC;AAKrE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAEhC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IAGpB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAG9B,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IAGvB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IAGvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IAGtB,MAAM,EAAE,MAAM,CAAC;IAGf,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAyCD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,iBAAiB,CAmDnH;AAsKD;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,MAAM,CAWtF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAG7G;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAKxC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA2BrF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAU9B"}
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/generator/templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,qBAAqB,CAAC;AAKrE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAEhC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IAGpB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAG9B,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IAGvB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IAGvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IAGtB,MAAM,EAAE,MAAM,CAAC;IAGf,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,0BAA0B,EAAE,MAAM,CAAC;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IAGtB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAsJD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,iBAAiB,CAiEnH;AAsKD;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,MAAM,CAWtF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAG7G;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAKxC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA2BrF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAU9B"}
@@ -40,6 +40,78 @@ function deriveCommands(packageManager) {
40
40
  formatCommand: pm === 'npm' ? 'npx prettier --write .' : `${pm} prettier --write .`,
41
41
  };
42
42
  }
43
+ /**
44
+ * Format AI analysis data for templates
45
+ */
46
+ function formatAiAnalysisForTemplates(scanResult) {
47
+ // Check if this is an EnhancedScanResult with aiAnalysis
48
+ const aiAnalysis = scanResult.aiAnalysis;
49
+ if (!aiAnalysis) {
50
+ return {
51
+ hasAiAnalysis: '',
52
+ aiEntryPoints: '',
53
+ aiKeyDirectories: '',
54
+ aiNamingConventions: '',
55
+ aiImplementationGuidelines: '',
56
+ aiMcpEssential: '',
57
+ aiMcpRecommended: '',
58
+ aiMissedTechnologies: '',
59
+ };
60
+ }
61
+ // Format entry points as bullet list
62
+ const entryPoints = aiAnalysis.projectContext?.entryPoints || [];
63
+ const aiEntryPoints = entryPoints.length > 0
64
+ ? entryPoints.map(e => `- \`${e}\``).join('\n')
65
+ : '';
66
+ // Format key directories as table rows
67
+ const keyDirs = aiAnalysis.projectContext?.keyDirectories || {};
68
+ const aiKeyDirectories = Object.keys(keyDirs).length > 0
69
+ ? Object.entries(keyDirs).map(([dir, purpose]) => `| \`${dir}/\` | ${purpose} |`).join('\n')
70
+ : '';
71
+ // Naming conventions
72
+ const aiNamingConventions = aiAnalysis.projectContext?.namingConventions || '';
73
+ // Implementation guidelines as bullet list
74
+ const guidelines = aiAnalysis.implementationGuidelines || [];
75
+ const aiImplementationGuidelines = guidelines.length > 0
76
+ ? guidelines.map(g => `- ${g}`).join('\n')
77
+ : '';
78
+ // MCP servers
79
+ const aiMcpEssential = (aiAnalysis.mcpServers?.essential || []).join(', ');
80
+ const aiMcpRecommended = (aiAnalysis.mcpServers?.recommended || []).join(', ');
81
+ // Missed technologies
82
+ const aiMissedTechnologies = (aiAnalysis.possibleMissedTechnologies || []).join(', ');
83
+ return {
84
+ hasAiAnalysis: 'true',
85
+ aiEntryPoints,
86
+ aiKeyDirectories,
87
+ aiNamingConventions,
88
+ aiImplementationGuidelines,
89
+ aiMcpEssential,
90
+ aiMcpRecommended,
91
+ aiMissedTechnologies,
92
+ };
93
+ }
94
+ /**
95
+ * Extract AI-detected commands or fall back to derived commands
96
+ */
97
+ function getCommands(scanResult, packageManager) {
98
+ // Check for AI-detected commands
99
+ const aiCommands = scanResult.aiAnalysis?.commands;
100
+ // Derive default commands from package manager
101
+ const derived = deriveCommands(packageManager);
102
+ if (!aiCommands) {
103
+ return derived;
104
+ }
105
+ // Use AI-detected commands where available, fall back to derived
106
+ return {
107
+ devCommand: aiCommands.dev || derived.devCommand,
108
+ buildCommand: aiCommands.build || derived.buildCommand,
109
+ testCommand: aiCommands.test || derived.testCommand,
110
+ lintCommand: aiCommands.lint || derived.lintCommand,
111
+ typecheckCommand: aiCommands.typecheck || derived.typecheckCommand,
112
+ formatCommand: aiCommands.format || derived.formatCommand,
113
+ };
114
+ }
43
115
  /**
44
116
  * Extract template variables from scan result
45
117
  */
@@ -63,10 +135,23 @@ export function extractVariables(scanResult, customVars = {}) {
63
135
  const styling = stack.styling?.name || DEFAULT_VARIABLES.styling;
64
136
  const stylingVersion = stack.styling?.version || DEFAULT_VARIABLES.stylingVersion;
65
137
  const stylingVariant = stack.styling?.variant || DEFAULT_VARIABLES.stylingVariant;
66
- // Derive commands
67
- const commands = deriveCommands(packageManager);
68
- // Determine app directory
69
- const appDir = frameworkVariant === 'app-router' || framework.toLowerCase().includes('next') ? 'app' : 'src';
138
+ // Get commands (AI-detected or derived)
139
+ const commands = getCommands(scanResult, packageManager);
140
+ // Extract AI analysis data
141
+ const aiData = formatAiAnalysisForTemplates(scanResult);
142
+ // Determine app directory - use AI entry points if available
143
+ let appDir = 'src';
144
+ if (frameworkVariant === 'app-router' || framework.toLowerCase().includes('next')) {
145
+ appDir = 'app';
146
+ }
147
+ else if (aiData.aiEntryPoints) {
148
+ // Try to extract common directory from entry points
149
+ const entryPoints = scanResult
150
+ .aiAnalysis?.projectContext?.entryPoints || [];
151
+ if (entryPoints.length > 0 && entryPoints[0].startsWith('src/')) {
152
+ appDir = 'src';
153
+ }
154
+ }
70
155
  return {
71
156
  projectName,
72
157
  projectRoot,
@@ -84,6 +169,7 @@ export function extractVariables(scanResult, customVars = {}) {
84
169
  stylingVariant,
85
170
  appDir,
86
171
  ...commands,
172
+ ...aiData,
87
173
  ...customVars,
88
174
  };
89
175
  }
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/generator/templates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/generator/templates.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,20 @@
3
3
  ## Stack
4
4
  {{framework}}{{#if frameworkVersion}} {{frameworkVersion}}{{/if}}{{#if frameworkVariant}} ({{frameworkVariant}}){{/if}}, TypeScript, {{styling || css}}{{#if unitTest}}, {{unitTest}}{{/if}}{{#if e2eTest}}, {{e2eTest}}{{/if}}
5
5
 
6
+ {{#if aiEntryPoints}}## Entry Points
7
+ {{aiEntryPoints}}
8
+
9
+ {{/if}}
6
10
  ## Commands
11
+ {{#if hasAiAnalysis}}
12
+ | Action | Command |
13
+ |--------|---------|
14
+ | Dev | `{{devCommand}}` |
15
+ | Build | `{{buildCommand}}` |
16
+ | Test | `{{testCommand}}` |
17
+ | Lint | `{{lintCommand}}` |
18
+ | Typecheck | `{{typecheckCommand}}` |
19
+ {{else}}
7
20
  All commands run from `{{appDir}}/` directory:
8
21
 
9
22
  | Action | Command |
@@ -16,19 +29,20 @@ All commands run from `{{appDir}}/` directory:
16
29
  | Typecheck | `cd {{appDir}} && {{typecheckCommand}}` |
17
30
  {{#if unitTest}}| Test | `cd {{appDir}} && {{testCommand}}` |
18
31
  | Test watch | `cd {{appDir}} && {{testCommand}} -- --watch` |{{/if}}
32
+ {{/if}}
19
33
 
20
34
  ## Validation (run before commit)
21
35
  ```bash
22
- cd {{appDir}} && {{lintCommand}} -- --fix && {{typecheckCommand}}{{#if unitTest}} && {{testCommand}}{{/if}} && {{buildCommand}}
36
+ {{lintCommand}} && {{typecheckCommand}}{{#if unitTest}} && {{testCommand}}{{/if}} && {{buildCommand}}
23
37
  ```
24
38
 
25
- ## Security Review (run before commit)
26
- ```bash
27
- cd {{appDir}} && {{packageManager}} audit # Check vulnerable dependencies
28
- ```
29
- Then review changes against @.ralph/guides/SECURITY.md checklist.
30
- Use `mcp__supabase__get_advisors` with type "security" to check RLS policies.
39
+ {{#if aiKeyDirectories}}## Project Structure
31
40
 
41
+ | Directory | Purpose |
42
+ |-----------|---------|
43
+ {{aiKeyDirectories}}
44
+
45
+ {{else}}
32
46
  ## Patterns
33
47
  - Pages: `{{appDir}}/app/` - Next.js App Router
34
48
  - Components: `{{appDir}}/components/` - see ui/, ai-elements/, survey-editor/
@@ -36,27 +50,30 @@ Use `mcp__supabase__get_advisors` with type "security" to check RLS policies.
36
50
  - Store: `{{appDir}}/store/` - State management
37
51
  - Server Actions: `{{appDir}}/app/actions.ts` and `{{appDir}}/app/actions/`
38
52
  - Libs: `{{appDir}}/lib/` - utilities and integrations
53
+ {{/if}}
54
+
55
+ {{#if aiImplementationGuidelines}}## Implementation Guidelines
56
+ {{aiImplementationGuidelines}}
39
57
 
58
+ {{/if}}
40
59
  ## Search Tools
41
60
  - **Codebase search**: Use `mgrep "query"` (preferred over Grep/Glob)
42
61
  - **Documentation lookup**: Use Context7 MCP for library/framework docs
43
62
  - **Web search**: Use `mgrep --web "query"` for general web lookups
44
63
 
45
64
  ## Code Rules
46
- - Explicit return types on functions
65
+ {{#if aiNamingConventions}}- Naming: {{aiNamingConventions}}
66
+ {{/if}}- Explicit return types on functions
47
67
  - No `any` - use `unknown` if truly unknown
48
68
  - Early returns over nested conditionals
49
69
  - Named exports, not default exports
50
70
  - Path alias `@/` maps to `{{appDir}}/` root
51
- - Follow patterns in existing components
71
+ - Follow patterns in existing code
52
72
  - 2-space indentation, single quotes
53
- - PascalCase for components, `use` prefix for hooks
54
- - kebab-case for folder names (e.g., `survey-editor`)
55
73
 
56
74
  {{#if unitTest}}## Testing
57
75
  - Framework: {{unitTest}}{{#if unitTestVersion}} {{unitTestVersion}}{{/if}}
58
- - Test location: next to component as `*.test.tsx` or in `__tests__/`
59
- - Run: `cd {{appDir}} && {{testCommand}}`
76
+ - Run: `{{testCommand}}`
60
77
  - Each feature task should include tests
61
78
  - Validation fails if tests fail
62
79
  {{/if}}
@@ -71,30 +88,30 @@ Use `mcp__supabase__get_advisors` with type "security" to check RLS policies.
71
88
  - After changes: validate, commit, push
72
89
 
73
90
  ## MCP Servers Available
74
- - **Supabase**: Query DB, manage migrations, generate types
91
+ {{#if aiMcpEssential}}- **Essential**: {{aiMcpEssential}}
92
+ {{/if}}{{#if aiMcpRecommended}}- **Recommended**: {{aiMcpRecommended}}
93
+ {{/if}}- **Supabase**: Query DB, manage migrations, generate types
75
94
  - **PostHog**: Analytics, feature flags, experiments
76
95
  - **Playwright**: Browser automation for E2E testing
77
96
  - Navigate: `browser_navigate`, `browser_snapshot`
78
97
  - Interact: `browser_click`, `browser_type`, `browser_fill_form`
79
98
  - Verify: `browser_wait_for`, `browser_console_messages`
80
99
  - Debug: `browser_take_screenshot`
81
- - **Codex CLI** (shell command, not MCP): PR review
82
- - Command: `echo "prompt" | codex exec --full-auto -`
83
- - For reviews: `codex review --base main` (interactive mode)
84
- - Location: `/opt/homebrew/bin/codex`
85
- - Use for: code review, PR feedback before merge
86
100
  - **Context7**: Documentation lookup for libraries/frameworks
87
101
 
102
+ {{#if aiMissedTechnologies}}## May Also Use
103
+ {{aiMissedTechnologies}}
104
+
105
+ {{/if}}
88
106
  ## Quick Triggers
89
107
  | Keywords | Action |
90
108
  |----------|--------|
91
109
  | type error, ts | Run typecheck |
92
- | lint, format | Run lint --fix and prettier |
110
+ | lint, format | Run lint --fix |
93
111
  | deploy, build | Run full build |
94
- | error, debug | Check PostHog logs or console |
112
+ | error, debug | Check logs or console |
95
113
  | database, table | Use Supabase MCP |
96
114
  | e2e, browser test | Use Playwright MCP |
97
115
 
98
116
  ## Detailed Docs
99
- - Architecture: `{{appDir}}/.claude/CLAUDE.md` - comprehensive codebase details
100
117
  - Frontend: `.ralph/guides/FRONTEND.md` - design patterns, component usage, quality checklist
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wiggum-cli",
3
- "version": "0.2.3",
3
+ "version": "0.2.6",
4
4
  "description": "AI-powered feature development loop CLI",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -5,7 +5,7 @@
5
5
 
6
6
  import { generateText, stepCountIs } from 'ai';
7
7
  import type { ScanResult, DetectedStack, DetectionResult } from '../scanner/types.js';
8
- import { getModel, type AIProvider, hasApiKey, getApiKeyEnvVar } from './providers.js';
8
+ import { getModel, type AIProvider, hasApiKey, getApiKeyEnvVar, isReasoningModel } from './providers.js';
9
9
  import { SYSTEM_PROMPT, SYSTEM_PROMPT_AGENTIC, createAnalysisPrompt } from './prompts.js';
10
10
  import { createExplorationTools } from './tools.js';
11
11
  import { logger } from '../utils/logger.js';
@@ -84,7 +84,14 @@ export interface EnhancerOptions {
84
84
  /**
85
85
  * Parse AI response JSON safely
86
86
  */
87
- function parseAIResponse(text: string): AIAnalysisResult | null {
87
+ function parseAIResponse(text: string, verbose: boolean = false): AIAnalysisResult | null {
88
+ if (!text || text.trim() === '') {
89
+ if (verbose) {
90
+ logger.warn('AI response text is empty');
91
+ }
92
+ return null;
93
+ }
94
+
88
95
  try {
89
96
  // Try to extract JSON from the response
90
97
  // The AI might wrap it in markdown code blocks
@@ -96,15 +103,33 @@ function parseAIResponse(text: string): AIAnalysisResult | null {
96
103
  jsonText = jsonMatch[1];
97
104
  }
98
105
 
99
- // Try to find JSON object
106
+ // Try to find JSON object - use greedy match for the outermost braces
107
+ // This handles cases where there's text before/after the JSON
100
108
  const objectMatch = jsonText.match(/\{[\s\S]*\}/);
101
109
  if (objectMatch) {
102
110
  jsonText = objectMatch[0];
103
111
  }
104
112
 
105
- return JSON.parse(jsonText) as AIAnalysisResult;
113
+ // Try to parse JSON
114
+ const result = JSON.parse(jsonText) as AIAnalysisResult;
115
+
116
+ // Validate that we got the expected structure
117
+ if (!result || typeof result !== 'object') {
118
+ if (verbose) {
119
+ logger.warn('AI response parsed but is not an object');
120
+ }
121
+ return null;
122
+ }
123
+
124
+ return result;
106
125
  } catch (error) {
107
- logger.warn('Failed to parse AI response as JSON');
126
+ if (verbose) {
127
+ logger.warn(`Failed to parse AI response as JSON: ${error instanceof Error ? error.message : String(error)}`);
128
+ // Log first 500 chars of response for debugging
129
+ logger.warn(`Response preview: ${text.substring(0, 500)}...`);
130
+ } else {
131
+ logger.warn('Failed to parse AI response as JSON');
132
+ }
108
133
  return null;
109
134
  }
110
135
  }
@@ -199,10 +224,10 @@ export class AIEnhancer {
199
224
 
200
225
  if (this.agentic) {
201
226
  // Agentic mode: use tools to explore codebase
202
- analysis = await this.enhanceAgentic(model, scanResult);
227
+ analysis = await this.enhanceAgentic(model, modelId, scanResult);
203
228
  } else {
204
229
  // Simple mode: just analyze detected stack
205
- analysis = await this.enhanceSimple(model, scanResult);
230
+ analysis = await this.enhanceSimple(model, modelId, scanResult);
206
231
  }
207
232
 
208
233
  if (!analysis) {
@@ -242,6 +267,7 @@ export class AIEnhancer {
242
267
  */
243
268
  private async enhanceSimple(
244
269
  model: ReturnType<typeof getModel>['model'],
270
+ modelId: string,
245
271
  scanResult: ScanResult
246
272
  ): Promise<AIAnalysisResult | null> {
247
273
  const prompt = createAnalysisPrompt(scanResult);
@@ -251,7 +277,8 @@ export class AIEnhancer {
251
277
  system: SYSTEM_PROMPT,
252
278
  prompt,
253
279
  maxOutputTokens: 2000,
254
- temperature: 0.3,
280
+ // Reasoning models don't support temperature
281
+ ...(isReasoningModel(modelId) ? {} : { temperature: 0.3 }),
255
282
  });
256
283
 
257
284
  return parseAIResponse(text);
@@ -262,6 +289,7 @@ export class AIEnhancer {
262
289
  */
263
290
  private async enhanceAgentic(
264
291
  model: ReturnType<typeof getModel>['model'],
292
+ modelId: string,
265
293
  scanResult: ScanResult
266
294
  ): Promise<AIAnalysisResult | null> {
267
295
  const tools = createExplorationTools(scanResult.projectRoot);
@@ -298,17 +326,45 @@ When done exploring, output your final analysis as valid JSON matching this stru
298
326
 
299
327
  // Use agentic loop - AI will call tools until it has enough info
300
328
  // stopWhen: stepCountIs(10) allows up to 10 tool-calling steps
301
- const { text } = await generateText({
329
+ const result = await generateText({
302
330
  model,
303
331
  system: SYSTEM_PROMPT_AGENTIC,
304
332
  prompt,
305
333
  tools,
306
334
  stopWhen: stepCountIs(10),
307
335
  maxOutputTokens: 4000,
308
- temperature: 0.3,
336
+ // Reasoning models don't support temperature
337
+ ...(isReasoningModel(modelId) ? {} : { temperature: 0.3 }),
309
338
  });
310
339
 
311
- return parseAIResponse(text);
340
+ // Try to get text from the result
341
+ let textToParse = result.text;
342
+
343
+ // If text is empty, try to extract from steps
344
+ if (!textToParse || textToParse.trim() === '') {
345
+ if (this.verbose) {
346
+ logger.info(`No direct text output, checking ${result.steps?.length || 0} steps...`);
347
+ }
348
+
349
+ // Look through steps for text content (from last to first)
350
+ const steps = result.steps || [];
351
+ for (let i = steps.length - 1; i >= 0; i--) {
352
+ const step = steps[i];
353
+ if (step.text && step.text.trim() !== '') {
354
+ textToParse = step.text;
355
+ if (this.verbose) {
356
+ logger.info(`Found text in step ${i + 1}`);
357
+ }
358
+ break;
359
+ }
360
+ }
361
+ }
362
+
363
+ if (this.verbose && (!textToParse || textToParse.trim() === '')) {
364
+ logger.warn('No text output found in response or steps');
365
+ }
366
+
367
+ return parseAIResponse(textToParse, this.verbose);
312
368
  }
313
369
  }
314
370
 
@@ -166,3 +166,21 @@ export function getAvailableProvider(): AIProvider | null {
166
166
  export function getApiKeyEnvVar(provider: AIProvider): string {
167
167
  return API_KEY_ENV_VARS[provider];
168
168
  }
169
+
170
+ /**
171
+ * Models that don't support temperature parameter (reasoning models)
172
+ */
173
+ const REASONING_MODELS = [
174
+ // OpenAI reasoning models
175
+ 'o1', 'o1-mini', 'o1-preview',
176
+ 'o3', 'o3-mini',
177
+ 'gpt-5', 'gpt-5.1', 'gpt-5-mini',
178
+ 'gpt-5.1-codex', 'gpt-5.1-codex-max',
179
+ ];
180
+
181
+ /**
182
+ * Check if a model is a reasoning model that doesn't support temperature
183
+ */
184
+ export function isReasoningModel(modelId: string): boolean {
185
+ return REASONING_MODELS.some(m => modelId.startsWith(m));
186
+ }
@@ -39,7 +39,7 @@ export interface TemplateVariables {
39
39
  stylingVersion: string;
40
40
  stylingVariant: string;
41
41
 
42
- // Commands (derived from package manager)
42
+ // Commands (derived from package manager or AI detected)
43
43
  devCommand: string;
44
44
  buildCommand: string;
45
45
  testCommand: string;
@@ -50,6 +50,16 @@ export interface TemplateVariables {
50
50
  // Paths
51
51
  appDir: string;
52
52
 
53
+ // AI Analysis (optional - populated when AI enhancement is used)
54
+ aiEntryPoints: string;
55
+ aiKeyDirectories: string;
56
+ aiNamingConventions: string;
57
+ aiImplementationGuidelines: string;
58
+ aiMcpEssential: string;
59
+ aiMcpRecommended: string;
60
+ aiMissedTechnologies: string;
61
+ hasAiAnalysis: string;
62
+
53
63
  // Custom variables
54
64
  [key: string]: string;
55
65
  }
@@ -93,6 +103,115 @@ function deriveCommands(packageManager: string): Pick<
93
103
  };
94
104
  }
95
105
 
106
+ /**
107
+ * AI analysis template variables
108
+ */
109
+ type AiTemplateVars = Pick<TemplateVariables,
110
+ 'hasAiAnalysis' | 'aiEntryPoints' | 'aiKeyDirectories' | 'aiNamingConventions' |
111
+ 'aiImplementationGuidelines' | 'aiMcpEssential' | 'aiMcpRecommended' | 'aiMissedTechnologies'
112
+ >;
113
+
114
+ /**
115
+ * Format AI analysis data for templates
116
+ */
117
+ function formatAiAnalysisForTemplates(scanResult: ScanResult): AiTemplateVars {
118
+ // Check if this is an EnhancedScanResult with aiAnalysis
119
+ const aiAnalysis = (scanResult as { aiAnalysis?: {
120
+ projectContext?: {
121
+ entryPoints?: string[];
122
+ keyDirectories?: Record<string, string>;
123
+ namingConventions?: string;
124
+ };
125
+ commands?: Record<string, string>;
126
+ implementationGuidelines?: string[];
127
+ mcpServers?: {
128
+ essential?: string[];
129
+ recommended?: string[];
130
+ };
131
+ possibleMissedTechnologies?: string[];
132
+ } }).aiAnalysis;
133
+
134
+ if (!aiAnalysis) {
135
+ return {
136
+ hasAiAnalysis: '',
137
+ aiEntryPoints: '',
138
+ aiKeyDirectories: '',
139
+ aiNamingConventions: '',
140
+ aiImplementationGuidelines: '',
141
+ aiMcpEssential: '',
142
+ aiMcpRecommended: '',
143
+ aiMissedTechnologies: '',
144
+ };
145
+ }
146
+
147
+ // Format entry points as bullet list
148
+ const entryPoints = aiAnalysis.projectContext?.entryPoints || [];
149
+ const aiEntryPoints = entryPoints.length > 0
150
+ ? entryPoints.map(e => `- \`${e}\``).join('\n')
151
+ : '';
152
+
153
+ // Format key directories as table rows
154
+ const keyDirs = aiAnalysis.projectContext?.keyDirectories || {};
155
+ const aiKeyDirectories = Object.keys(keyDirs).length > 0
156
+ ? Object.entries(keyDirs).map(([dir, purpose]) => `| \`${dir}/\` | ${purpose} |`).join('\n')
157
+ : '';
158
+
159
+ // Naming conventions
160
+ const aiNamingConventions = aiAnalysis.projectContext?.namingConventions || '';
161
+
162
+ // Implementation guidelines as bullet list
163
+ const guidelines = aiAnalysis.implementationGuidelines || [];
164
+ const aiImplementationGuidelines = guidelines.length > 0
165
+ ? guidelines.map(g => `- ${g}`).join('\n')
166
+ : '';
167
+
168
+ // MCP servers
169
+ const aiMcpEssential = (aiAnalysis.mcpServers?.essential || []).join(', ');
170
+ const aiMcpRecommended = (aiAnalysis.mcpServers?.recommended || []).join(', ');
171
+
172
+ // Missed technologies
173
+ const aiMissedTechnologies = (aiAnalysis.possibleMissedTechnologies || []).join(', ');
174
+
175
+ return {
176
+ hasAiAnalysis: 'true',
177
+ aiEntryPoints,
178
+ aiKeyDirectories,
179
+ aiNamingConventions,
180
+ aiImplementationGuidelines,
181
+ aiMcpEssential,
182
+ aiMcpRecommended,
183
+ aiMissedTechnologies,
184
+ };
185
+ }
186
+
187
+ /**
188
+ * Extract AI-detected commands or fall back to derived commands
189
+ */
190
+ function getCommands(
191
+ scanResult: ScanResult,
192
+ packageManager: string
193
+ ): Pick<TemplateVariables, 'devCommand' | 'buildCommand' | 'testCommand' | 'lintCommand' | 'typecheckCommand' | 'formatCommand'> {
194
+ // Check for AI-detected commands
195
+ const aiCommands = (scanResult as { aiAnalysis?: { commands?: Record<string, string> } }).aiAnalysis?.commands;
196
+
197
+ // Derive default commands from package manager
198
+ const derived = deriveCommands(packageManager);
199
+
200
+ if (!aiCommands) {
201
+ return derived;
202
+ }
203
+
204
+ // Use AI-detected commands where available, fall back to derived
205
+ return {
206
+ devCommand: aiCommands.dev || derived.devCommand,
207
+ buildCommand: aiCommands.build || derived.buildCommand,
208
+ testCommand: aiCommands.test || derived.testCommand,
209
+ lintCommand: aiCommands.lint || derived.lintCommand,
210
+ typecheckCommand: aiCommands.typecheck || derived.typecheckCommand,
211
+ formatCommand: aiCommands.format || derived.formatCommand,
212
+ };
213
+ }
214
+
96
215
  /**
97
216
  * Extract template variables from scan result
98
217
  */
@@ -122,11 +241,24 @@ export function extractVariables(scanResult: ScanResult, customVars: Record<stri
122
241
  const stylingVersion = stack.styling?.version || DEFAULT_VARIABLES.stylingVersion!;
123
242
  const stylingVariant = stack.styling?.variant || DEFAULT_VARIABLES.stylingVariant!;
124
243
 
125
- // Derive commands
126
- const commands = deriveCommands(packageManager);
127
-
128
- // Determine app directory
129
- const appDir = frameworkVariant === 'app-router' || framework.toLowerCase().includes('next') ? 'app' : 'src';
244
+ // Get commands (AI-detected or derived)
245
+ const commands = getCommands(scanResult, packageManager);
246
+
247
+ // Extract AI analysis data
248
+ const aiData = formatAiAnalysisForTemplates(scanResult);
249
+
250
+ // Determine app directory - use AI entry points if available
251
+ let appDir = 'src';
252
+ if (frameworkVariant === 'app-router' || framework.toLowerCase().includes('next')) {
253
+ appDir = 'app';
254
+ } else if (aiData.aiEntryPoints) {
255
+ // Try to extract common directory from entry points
256
+ const entryPoints = (scanResult as { aiAnalysis?: { projectContext?: { entryPoints?: string[] } } })
257
+ .aiAnalysis?.projectContext?.entryPoints || [];
258
+ if (entryPoints.length > 0 && entryPoints[0].startsWith('src/')) {
259
+ appDir = 'src';
260
+ }
261
+ }
130
262
 
131
263
  return {
132
264
  projectName,
@@ -145,6 +277,7 @@ export function extractVariables(scanResult: ScanResult, customVars: Record<stri
145
277
  stylingVariant,
146
278
  appDir,
147
279
  ...commands,
280
+ ...aiData,
148
281
  ...customVars,
149
282
  };
150
283
  }
@@ -3,7 +3,20 @@
3
3
  ## Stack
4
4
  {{framework}}{{#if frameworkVersion}} {{frameworkVersion}}{{/if}}{{#if frameworkVariant}} ({{frameworkVariant}}){{/if}}, TypeScript, {{styling || css}}{{#if unitTest}}, {{unitTest}}{{/if}}{{#if e2eTest}}, {{e2eTest}}{{/if}}
5
5
 
6
+ {{#if aiEntryPoints}}## Entry Points
7
+ {{aiEntryPoints}}
8
+
9
+ {{/if}}
6
10
  ## Commands
11
+ {{#if hasAiAnalysis}}
12
+ | Action | Command |
13
+ |--------|---------|
14
+ | Dev | `{{devCommand}}` |
15
+ | Build | `{{buildCommand}}` |
16
+ | Test | `{{testCommand}}` |
17
+ | Lint | `{{lintCommand}}` |
18
+ | Typecheck | `{{typecheckCommand}}` |
19
+ {{else}}
7
20
  All commands run from `{{appDir}}/` directory:
8
21
 
9
22
  | Action | Command |
@@ -16,19 +29,20 @@ All commands run from `{{appDir}}/` directory:
16
29
  | Typecheck | `cd {{appDir}} && {{typecheckCommand}}` |
17
30
  {{#if unitTest}}| Test | `cd {{appDir}} && {{testCommand}}` |
18
31
  | Test watch | `cd {{appDir}} && {{testCommand}} -- --watch` |{{/if}}
32
+ {{/if}}
19
33
 
20
34
  ## Validation (run before commit)
21
35
  ```bash
22
- cd {{appDir}} && {{lintCommand}} -- --fix && {{typecheckCommand}}{{#if unitTest}} && {{testCommand}}{{/if}} && {{buildCommand}}
36
+ {{lintCommand}} && {{typecheckCommand}}{{#if unitTest}} && {{testCommand}}{{/if}} && {{buildCommand}}
23
37
  ```
24
38
 
25
- ## Security Review (run before commit)
26
- ```bash
27
- cd {{appDir}} && {{packageManager}} audit # Check vulnerable dependencies
28
- ```
29
- Then review changes against @.ralph/guides/SECURITY.md checklist.
30
- Use `mcp__supabase__get_advisors` with type "security" to check RLS policies.
39
+ {{#if aiKeyDirectories}}## Project Structure
31
40
 
41
+ | Directory | Purpose |
42
+ |-----------|---------|
43
+ {{aiKeyDirectories}}
44
+
45
+ {{else}}
32
46
  ## Patterns
33
47
  - Pages: `{{appDir}}/app/` - Next.js App Router
34
48
  - Components: `{{appDir}}/components/` - see ui/, ai-elements/, survey-editor/
@@ -36,27 +50,30 @@ Use `mcp__supabase__get_advisors` with type "security" to check RLS policies.
36
50
  - Store: `{{appDir}}/store/` - State management
37
51
  - Server Actions: `{{appDir}}/app/actions.ts` and `{{appDir}}/app/actions/`
38
52
  - Libs: `{{appDir}}/lib/` - utilities and integrations
53
+ {{/if}}
54
+
55
+ {{#if aiImplementationGuidelines}}## Implementation Guidelines
56
+ {{aiImplementationGuidelines}}
39
57
 
58
+ {{/if}}
40
59
  ## Search Tools
41
60
  - **Codebase search**: Use `mgrep "query"` (preferred over Grep/Glob)
42
61
  - **Documentation lookup**: Use Context7 MCP for library/framework docs
43
62
  - **Web search**: Use `mgrep --web "query"` for general web lookups
44
63
 
45
64
  ## Code Rules
46
- - Explicit return types on functions
65
+ {{#if aiNamingConventions}}- Naming: {{aiNamingConventions}}
66
+ {{/if}}- Explicit return types on functions
47
67
  - No `any` - use `unknown` if truly unknown
48
68
  - Early returns over nested conditionals
49
69
  - Named exports, not default exports
50
70
  - Path alias `@/` maps to `{{appDir}}/` root
51
- - Follow patterns in existing components
71
+ - Follow patterns in existing code
52
72
  - 2-space indentation, single quotes
53
- - PascalCase for components, `use` prefix for hooks
54
- - kebab-case for folder names (e.g., `survey-editor`)
55
73
 
56
74
  {{#if unitTest}}## Testing
57
75
  - Framework: {{unitTest}}{{#if unitTestVersion}} {{unitTestVersion}}{{/if}}
58
- - Test location: next to component as `*.test.tsx` or in `__tests__/`
59
- - Run: `cd {{appDir}} && {{testCommand}}`
76
+ - Run: `{{testCommand}}`
60
77
  - Each feature task should include tests
61
78
  - Validation fails if tests fail
62
79
  {{/if}}
@@ -71,30 +88,30 @@ Use `mcp__supabase__get_advisors` with type "security" to check RLS policies.
71
88
  - After changes: validate, commit, push
72
89
 
73
90
  ## MCP Servers Available
74
- - **Supabase**: Query DB, manage migrations, generate types
91
+ {{#if aiMcpEssential}}- **Essential**: {{aiMcpEssential}}
92
+ {{/if}}{{#if aiMcpRecommended}}- **Recommended**: {{aiMcpRecommended}}
93
+ {{/if}}- **Supabase**: Query DB, manage migrations, generate types
75
94
  - **PostHog**: Analytics, feature flags, experiments
76
95
  - **Playwright**: Browser automation for E2E testing
77
96
  - Navigate: `browser_navigate`, `browser_snapshot`
78
97
  - Interact: `browser_click`, `browser_type`, `browser_fill_form`
79
98
  - Verify: `browser_wait_for`, `browser_console_messages`
80
99
  - Debug: `browser_take_screenshot`
81
- - **Codex CLI** (shell command, not MCP): PR review
82
- - Command: `echo "prompt" | codex exec --full-auto -`
83
- - For reviews: `codex review --base main` (interactive mode)
84
- - Location: `/opt/homebrew/bin/codex`
85
- - Use for: code review, PR feedback before merge
86
100
  - **Context7**: Documentation lookup for libraries/frameworks
87
101
 
102
+ {{#if aiMissedTechnologies}}## May Also Use
103
+ {{aiMissedTechnologies}}
104
+
105
+ {{/if}}
88
106
  ## Quick Triggers
89
107
  | Keywords | Action |
90
108
  |----------|--------|
91
109
  | type error, ts | Run typecheck |
92
- | lint, format | Run lint --fix and prettier |
110
+ | lint, format | Run lint --fix |
93
111
  | deploy, build | Run full build |
94
- | error, debug | Check PostHog logs or console |
112
+ | error, debug | Check logs or console |
95
113
  | database, table | Use Supabase MCP |
96
114
  | e2e, browser test | Use Playwright MCP |
97
115
 
98
116
  ## Detailed Docs
99
- - Architecture: `{{appDir}}/.claude/CLAUDE.md` - comprehensive codebase details
100
117
  - Frontend: `.ralph/guides/FRONTEND.md` - design patterns, component usage, quality checklist