wiggum-cli 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EACV,kBAAkB,EAElB,YAAY,EACb,MAAM,YAAY,CAAC;AAMpB;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,UAAU,EACtB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAwFpC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EACV,kBAAkB,EAElB,YAAY,EACb,MAAM,YAAY,CAAC;AAMpB;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,UAAU,EACtB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAyFpC"}
@@ -28,7 +28,7 @@ export async function runMultiAgentAnalysis(model, modelId, scanResult, options
28
28
  if (verbose) {
29
29
  logger.info('Running Codebase Analyst...');
30
30
  }
31
- const codebaseAnalysis = await runCodebaseAnalyst(model, modelId, {
31
+ let codebaseAnalysis = await runCodebaseAnalyst(model, modelId, {
32
32
  scanResult,
33
33
  projectRoot: scanResult.projectRoot,
34
34
  }, verbose);
@@ -36,7 +36,8 @@ export async function runMultiAgentAnalysis(model, modelId, scanResult, options
36
36
  if (verbose) {
37
37
  logger.warn('Codebase Analyst failed, using defaults');
38
38
  }
39
- return null;
39
+ // Use defaults instead of aborting the pipeline
40
+ codebaseAnalysis = getDefaultCodebaseAnalysis(scanResult);
40
41
  }
41
42
  // Run Stack Researcher
42
43
  if (verbose) {
@@ -69,6 +70,41 @@ export async function runMultiAgentAnalysis(model, modelId, scanResult, options
69
70
  }
70
71
  return finalResult;
71
72
  }
73
+ /**
74
+ * Get default codebase analysis when agent fails
75
+ */
76
+ function getDefaultCodebaseAnalysis(scanResult) {
77
+ // Detect project type from scan result
78
+ let projectType = 'Unknown';
79
+ if (scanResult.stack.mcp?.isProject) {
80
+ projectType = 'MCP Server';
81
+ }
82
+ else if (scanResult.stack.framework?.name.includes('Next')) {
83
+ projectType = 'Next.js App';
84
+ }
85
+ else if (scanResult.stack.framework?.name.includes('React')) {
86
+ projectType = 'React SPA';
87
+ }
88
+ else if (scanResult.stack.framework?.name) {
89
+ projectType = `${scanResult.stack.framework.name} Project`;
90
+ }
91
+ return {
92
+ projectContext: {
93
+ entryPoints: ['src/index.ts'],
94
+ keyDirectories: { 'src': 'Source code' },
95
+ namingConventions: 'camelCase',
96
+ projectType,
97
+ },
98
+ commands: {
99
+ test: 'npm test',
100
+ lint: 'npm run lint',
101
+ build: 'npm run build',
102
+ dev: 'npm run dev',
103
+ },
104
+ implementationGuidelines: ['Follow existing patterns', 'Run tests after changes'],
105
+ possibleMissedTechnologies: [],
106
+ };
107
+ }
72
108
  /**
73
109
  * Get default stack research when agent fails
74
110
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/agents/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/agents/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"json-repair.d.ts","sourceRoot":"","sources":["../../src/utils/json-repair.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA2D/C;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAuCvD"}
1
+ {"version":3,"file":"json-repair.d.ts","sourceRoot":"","sources":["../../src/utils/json-repair.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiDH;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA8D/C;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAuCvD"}
@@ -2,6 +2,47 @@
2
2
  * JSON Repair Utility
3
3
  * Fixes common JSON syntax errors from AI responses
4
4
  */
5
+ /**
6
+ * Fix mismatched brackets in JSON
7
+ * AI sometimes writes } instead of ] or vice versa
8
+ */
9
+ function fixMismatchedBrackets(text) {
10
+ const chars = text.split('');
11
+ const stack = [];
12
+ let inString = false;
13
+ let escapeNext = false;
14
+ for (let i = 0; i < chars.length; i++) {
15
+ const char = chars[i];
16
+ if (escapeNext) {
17
+ escapeNext = false;
18
+ continue;
19
+ }
20
+ if (char === '\\' && inString) {
21
+ escapeNext = true;
22
+ continue;
23
+ }
24
+ if (char === '"') {
25
+ inString = !inString;
26
+ continue;
27
+ }
28
+ if (inString)
29
+ continue;
30
+ if (char === '{' || char === '[') {
31
+ stack.push({ char, index: i });
32
+ }
33
+ else if (char === '}' || char === ']') {
34
+ if (stack.length > 0) {
35
+ const last = stack.pop();
36
+ const expected = last.char === '{' ? '}' : ']';
37
+ if (char !== expected) {
38
+ // Mismatch! Fix it
39
+ chars[i] = expected;
40
+ }
41
+ }
42
+ }
43
+ }
44
+ return chars.join('');
45
+ }
5
46
  /**
6
47
  * Attempt to repair malformed JSON from AI responses
7
48
  */
@@ -9,6 +50,8 @@ export function repairJson(text) {
9
50
  let json = text;
10
51
  // Remove any leading/trailing whitespace
11
52
  json = json.trim();
53
+ // Fix mismatched brackets (AI writes } instead of ] or vice versa)
54
+ json = fixMismatchedBrackets(json);
12
55
  // Remove trailing commas before ] or }
13
56
  json = json.replace(/,(\s*[\]}])/g, '$1');
14
57
  // Fix missing commas between array elements or object properties
@@ -1 +1 @@
1
- {"version":3,"file":"json-repair.js","sourceRoot":"","sources":["../../src/utils/json-repair.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"json-repair.js","sourceRoot":"","sources":["../../src/utils/json-repair.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wiggum-cli",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "description": "AI-powered feature development loop CLI",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -61,7 +61,7 @@ export async function runMultiAgentAnalysis(
61
61
  logger.info('Running Codebase Analyst...');
62
62
  }
63
63
 
64
- const codebaseAnalysis = await runCodebaseAnalyst(
64
+ let codebaseAnalysis = await runCodebaseAnalyst(
65
65
  model,
66
66
  modelId,
67
67
  {
@@ -75,7 +75,8 @@ export async function runMultiAgentAnalysis(
75
75
  if (verbose) {
76
76
  logger.warn('Codebase Analyst failed, using defaults');
77
77
  }
78
- return null;
78
+ // Use defaults instead of aborting the pipeline
79
+ codebaseAnalysis = getDefaultCodebaseAnalysis(scanResult);
79
80
  }
80
81
 
81
82
  // Run Stack Researcher
@@ -132,6 +133,40 @@ export async function runMultiAgentAnalysis(
132
133
  return finalResult;
133
134
  }
134
135
 
136
+ /**
137
+ * Get default codebase analysis when agent fails
138
+ */
139
+ function getDefaultCodebaseAnalysis(scanResult: ScanResult) {
140
+ // Detect project type from scan result
141
+ let projectType = 'Unknown';
142
+ if (scanResult.stack.mcp?.isProject) {
143
+ projectType = 'MCP Server';
144
+ } else if (scanResult.stack.framework?.name.includes('Next')) {
145
+ projectType = 'Next.js App';
146
+ } else if (scanResult.stack.framework?.name.includes('React')) {
147
+ projectType = 'React SPA';
148
+ } else if (scanResult.stack.framework?.name) {
149
+ projectType = `${scanResult.stack.framework.name} Project`;
150
+ }
151
+
152
+ return {
153
+ projectContext: {
154
+ entryPoints: ['src/index.ts'],
155
+ keyDirectories: { 'src': 'Source code' },
156
+ namingConventions: 'camelCase',
157
+ projectType,
158
+ },
159
+ commands: {
160
+ test: 'npm test',
161
+ lint: 'npm run lint',
162
+ build: 'npm run build',
163
+ dev: 'npm run dev',
164
+ },
165
+ implementationGuidelines: ['Follow existing patterns', 'Run tests after changes'],
166
+ possibleMissedTechnologies: [],
167
+ };
168
+ }
169
+
135
170
  /**
136
171
  * Get default stack research when agent fails
137
172
  */
@@ -3,6 +3,53 @@
3
3
  * Fixes common JSON syntax errors from AI responses
4
4
  */
5
5
 
6
+ /**
7
+ * Fix mismatched brackets in JSON
8
+ * AI sometimes writes } instead of ] or vice versa
9
+ */
10
+ function fixMismatchedBrackets(text: string): string {
11
+ const chars = text.split('');
12
+ const stack: Array<{ char: string; index: number }> = [];
13
+ let inString = false;
14
+ let escapeNext = false;
15
+
16
+ for (let i = 0; i < chars.length; i++) {
17
+ const char = chars[i];
18
+
19
+ if (escapeNext) {
20
+ escapeNext = false;
21
+ continue;
22
+ }
23
+
24
+ if (char === '\\' && inString) {
25
+ escapeNext = true;
26
+ continue;
27
+ }
28
+
29
+ if (char === '"') {
30
+ inString = !inString;
31
+ continue;
32
+ }
33
+
34
+ if (inString) continue;
35
+
36
+ if (char === '{' || char === '[') {
37
+ stack.push({ char, index: i });
38
+ } else if (char === '}' || char === ']') {
39
+ if (stack.length > 0) {
40
+ const last = stack.pop()!;
41
+ const expected = last.char === '{' ? '}' : ']';
42
+ if (char !== expected) {
43
+ // Mismatch! Fix it
44
+ chars[i] = expected;
45
+ }
46
+ }
47
+ }
48
+ }
49
+
50
+ return chars.join('');
51
+ }
52
+
6
53
  /**
7
54
  * Attempt to repair malformed JSON from AI responses
8
55
  */
@@ -12,6 +59,9 @@ export function repairJson(text: string): string {
12
59
  // Remove any leading/trailing whitespace
13
60
  json = json.trim();
14
61
 
62
+ // Fix mismatched brackets (AI writes } instead of ] or vice versa)
63
+ json = fixMismatchedBrackets(json);
64
+
15
65
  // Remove trailing commas before ] or }
16
66
  json = json.replace(/,(\s*[\]}])/g, '$1');
17
67