@codebakers/mcp 5.2.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.
- package/INSTALL.md +221 -0
- package/LICENSE +21 -0
- package/README.md +412 -0
- package/dist/cli.d.ts +9 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +236 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +526 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/analyze-mockups.d.ts +18 -0
- package/dist/tools/analyze-mockups.d.ts.map +1 -0
- package/dist/tools/analyze-mockups.js +497 -0
- package/dist/tools/analyze-mockups.js.map +1 -0
- package/dist/tools/autonomous-build.d.ts +19 -0
- package/dist/tools/autonomous-build.d.ts.map +1 -0
- package/dist/tools/autonomous-build.js +287 -0
- package/dist/tools/autonomous-build.js.map +1 -0
- package/dist/tools/check-gate.d.ts +21 -0
- package/dist/tools/check-gate.d.ts.map +1 -0
- package/dist/tools/check-gate.js +446 -0
- package/dist/tools/check-gate.js.map +1 -0
- package/dist/tools/check-scope.d.ts +22 -0
- package/dist/tools/check-scope.d.ts.map +1 -0
- package/dist/tools/check-scope.js +251 -0
- package/dist/tools/check-scope.js.map +1 -0
- package/dist/tools/deploy-vercel.d.ts +18 -0
- package/dist/tools/deploy-vercel.d.ts.map +1 -0
- package/dist/tools/deploy-vercel.js +178 -0
- package/dist/tools/deploy-vercel.js.map +1 -0
- package/dist/tools/diagnose-error.d.ts +20 -0
- package/dist/tools/diagnose-error.d.ts.map +1 -0
- package/dist/tools/diagnose-error.js +351 -0
- package/dist/tools/diagnose-error.js.map +1 -0
- package/dist/tools/enforce-feature.d.ts +25 -0
- package/dist/tools/enforce-feature.d.ts.map +1 -0
- package/dist/tools/enforce-feature.js +387 -0
- package/dist/tools/enforce-feature.js.map +1 -0
- package/dist/tools/execute-atomic-unit.d.ts +23 -0
- package/dist/tools/execute-atomic-unit.d.ts.map +1 -0
- package/dist/tools/execute-atomic-unit.js +107 -0
- package/dist/tools/execute-atomic-unit.js.map +1 -0
- package/dist/tools/fix-commit.d.ts +23 -0
- package/dist/tools/fix-commit.d.ts.map +1 -0
- package/dist/tools/fix-commit.js +213 -0
- package/dist/tools/fix-commit.js.map +1 -0
- package/dist/tools/fix-mockups.d.ts +21 -0
- package/dist/tools/fix-mockups.d.ts.map +1 -0
- package/dist/tools/fix-mockups.js +595 -0
- package/dist/tools/fix-mockups.js.map +1 -0
- package/dist/tools/generate-api-route.d.ts +18 -0
- package/dist/tools/generate-api-route.d.ts.map +1 -0
- package/dist/tools/generate-api-route.js +212 -0
- package/dist/tools/generate-api-route.js.map +1 -0
- package/dist/tools/generate-chatbot.d.ts +20 -0
- package/dist/tools/generate-chatbot.d.ts.map +1 -0
- package/dist/tools/generate-chatbot.js +555 -0
- package/dist/tools/generate-chatbot.js.map +1 -0
- package/dist/tools/generate-component.d.ts +18 -0
- package/dist/tools/generate-component.d.ts.map +1 -0
- package/dist/tools/generate-component.js +159 -0
- package/dist/tools/generate-component.js.map +1 -0
- package/dist/tools/generate-docs.d.ts +21 -0
- package/dist/tools/generate-docs.d.ts.map +1 -0
- package/dist/tools/generate-docs.js +782 -0
- package/dist/tools/generate-docs.js.map +1 -0
- package/dist/tools/generate-e2e-tests.d.ts +12 -0
- package/dist/tools/generate-e2e-tests.d.ts.map +1 -0
- package/dist/tools/generate-e2e-tests.js +37 -0
- package/dist/tools/generate-e2e-tests.js.map +1 -0
- package/dist/tools/generate-migration.d.ts +21 -0
- package/dist/tools/generate-migration.d.ts.map +1 -0
- package/dist/tools/generate-migration.js +94 -0
- package/dist/tools/generate-migration.js.map +1 -0
- package/dist/tools/generate-schema.d.ts +18 -0
- package/dist/tools/generate-schema.d.ts.map +1 -0
- package/dist/tools/generate-schema.js +422 -0
- package/dist/tools/generate-schema.js.map +1 -0
- package/dist/tools/generate-spec.d.ts +18 -0
- package/dist/tools/generate-spec.d.ts.map +1 -0
- package/dist/tools/generate-spec.js +446 -0
- package/dist/tools/generate-spec.js.map +1 -0
- package/dist/tools/generate-store-contracts.d.ts +17 -0
- package/dist/tools/generate-store-contracts.d.ts.map +1 -0
- package/dist/tools/generate-store-contracts.js +356 -0
- package/dist/tools/generate-store-contracts.js.map +1 -0
- package/dist/tools/generate-store.d.ts +16 -0
- package/dist/tools/generate-store.d.ts.map +1 -0
- package/dist/tools/generate-store.js +166 -0
- package/dist/tools/generate-store.js.map +1 -0
- package/dist/tools/generate-unit-tests.d.ts +14 -0
- package/dist/tools/generate-unit-tests.d.ts.map +1 -0
- package/dist/tools/generate-unit-tests.js +85 -0
- package/dist/tools/generate-unit-tests.js.map +1 -0
- package/dist/tools/get-context.d.ts +35 -0
- package/dist/tools/get-context.d.ts.map +1 -0
- package/dist/tools/get-context.js +367 -0
- package/dist/tools/get-context.js.map +1 -0
- package/dist/tools/init-session.d.ts +22 -0
- package/dist/tools/init-session.d.ts.map +1 -0
- package/dist/tools/init-session.js +232 -0
- package/dist/tools/init-session.js.map +1 -0
- package/dist/tools/map-dependencies.d.ts +25 -0
- package/dist/tools/map-dependencies.d.ts.map +1 -0
- package/dist/tools/map-dependencies.js +480 -0
- package/dist/tools/map-dependencies.js.map +1 -0
- package/dist/tools/optimize-performance.d.ts +18 -0
- package/dist/tools/optimize-performance.d.ts.map +1 -0
- package/dist/tools/optimize-performance.js +285 -0
- package/dist/tools/optimize-performance.js.map +1 -0
- package/dist/tools/run-interview.d.ts +23 -0
- package/dist/tools/run-interview.d.ts.map +1 -0
- package/dist/tools/run-interview.js +371 -0
- package/dist/tools/run-interview.js.map +1 -0
- package/dist/tools/run-tests.d.ts +12 -0
- package/dist/tools/run-tests.d.ts.map +1 -0
- package/dist/tools/run-tests.js +30 -0
- package/dist/tools/run-tests.js.map +1 -0
- package/dist/tools/scan-security.d.ts +19 -0
- package/dist/tools/scan-security.d.ts.map +1 -0
- package/dist/tools/scan-security.js +358 -0
- package/dist/tools/scan-security.js.map +1 -0
- package/dist/tools/validate-accessibility.d.ts +18 -0
- package/dist/tools/validate-accessibility.d.ts.map +1 -0
- package/dist/tools/validate-accessibility.js +251 -0
- package/dist/tools/validate-accessibility.js.map +1 -0
- package/dist/tools/validate-mockups.d.ts +21 -0
- package/dist/tools/validate-mockups.d.ts.map +1 -0
- package/dist/tools/validate-mockups.js +433 -0
- package/dist/tools/validate-mockups.js.map +1 -0
- package/dist/tools/verify-completeness.d.ts +13 -0
- package/dist/tools/verify-completeness.d.ts.map +1 -0
- package/dist/tools/verify-completeness.js +68 -0
- package/dist/tools/verify-completeness.js.map +1 -0
- package/dist/tools/verify-mockups.d.ts +14 -0
- package/dist/tools/verify-mockups.d.ts.map +1 -0
- package/dist/tools/verify-mockups.js +85 -0
- package/dist/tools/verify-mockups.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* codebakers_diagnose_error
|
|
3
|
+
*
|
|
4
|
+
* AI-Powered Error Diagnosis
|
|
5
|
+
*
|
|
6
|
+
* Analyzes errors and provides:
|
|
7
|
+
* - Root cause analysis
|
|
8
|
+
* - Affected files
|
|
9
|
+
* - Multiple fix approaches
|
|
10
|
+
* - Confidence scores
|
|
11
|
+
* - Related patterns from ERROR-LOG.md
|
|
12
|
+
*/
|
|
13
|
+
import * as fs from 'fs/promises';
|
|
14
|
+
import * as path from 'path';
|
|
15
|
+
export async function diagnoseError(args) {
|
|
16
|
+
const cwd = process.cwd();
|
|
17
|
+
const { error_message, stack_trace, context } = args;
|
|
18
|
+
console.error('🍞 CodeBakers: Diagnosing Error');
|
|
19
|
+
try {
|
|
20
|
+
// Step 1: Check ERROR-LOG.md for similar errors
|
|
21
|
+
const relatedErrors = await findRelatedErrors(cwd, error_message);
|
|
22
|
+
// Step 2: Analyze stack trace to find affected files
|
|
23
|
+
const affectedFiles = extractAffectedFiles(stack_trace || '');
|
|
24
|
+
// Step 3: Determine root cause
|
|
25
|
+
const rootCause = analyzeRootCause(error_message, stack_trace || '', context);
|
|
26
|
+
// Step 4: Generate fix approaches
|
|
27
|
+
const fixApproaches = generateFixApproaches(error_message, rootCause, affectedFiles);
|
|
28
|
+
// Step 5: Generate diagnosis report
|
|
29
|
+
const diagnosis = {
|
|
30
|
+
root_cause: rootCause.cause,
|
|
31
|
+
confidence: rootCause.confidence,
|
|
32
|
+
affected_files: affectedFiles,
|
|
33
|
+
fix_approaches: fixApproaches,
|
|
34
|
+
related_errors: relatedErrors
|
|
35
|
+
};
|
|
36
|
+
// Step 6: Log to ERROR-LOG.md
|
|
37
|
+
await logError(cwd, error_message, stack_trace || '', diagnosis);
|
|
38
|
+
return generateDiagnosisReport(diagnosis, error_message);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
return `🍞 CodeBakers: Error Diagnosis Failed\n\nError: ${error instanceof Error ? error.message : String(error)}`;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async function findRelatedErrors(cwd, errorMessage) {
|
|
45
|
+
const errorLogPath = path.join(cwd, '.codebakers', 'ERROR-LOG.md');
|
|
46
|
+
const related = [];
|
|
47
|
+
try {
|
|
48
|
+
const content = await fs.readFile(errorLogPath, 'utf-8');
|
|
49
|
+
const entries = content.split('## Error:').slice(1);
|
|
50
|
+
// Extract key terms from current error
|
|
51
|
+
const keyTerms = extractKeyTerms(errorMessage);
|
|
52
|
+
for (const entry of entries) {
|
|
53
|
+
// Check if entry contains any key terms
|
|
54
|
+
for (const term of keyTerms) {
|
|
55
|
+
if (entry.toLowerCase().includes(term.toLowerCase())) {
|
|
56
|
+
const title = entry.split('\n')[0].trim();
|
|
57
|
+
if (!related.includes(title)) {
|
|
58
|
+
related.push(title);
|
|
59
|
+
}
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// ERROR-LOG.md doesn't exist
|
|
67
|
+
}
|
|
68
|
+
return related.slice(0, 3); // Top 3 related errors
|
|
69
|
+
}
|
|
70
|
+
function extractKeyTerms(error) {
|
|
71
|
+
const terms = [];
|
|
72
|
+
// Extract error type (e.g., "TypeError", "ReferenceError")
|
|
73
|
+
const typeMatch = error.match(/([A-Z][a-z]+Error)/);
|
|
74
|
+
if (typeMatch) {
|
|
75
|
+
terms.push(typeMatch[1]);
|
|
76
|
+
}
|
|
77
|
+
// Extract quoted identifiers (e.g., 'undefined', "null")
|
|
78
|
+
const quotedMatches = error.matchAll(/['"]([a-zA-Z_$][a-zA-Z0-9_$]*)['"]/g);
|
|
79
|
+
for (const match of quotedMatches) {
|
|
80
|
+
terms.push(match[1]);
|
|
81
|
+
}
|
|
82
|
+
// Extract file extensions
|
|
83
|
+
if (error.includes('.tsx'))
|
|
84
|
+
terms.push('tsx');
|
|
85
|
+
if (error.includes('.ts'))
|
|
86
|
+
terms.push('typescript');
|
|
87
|
+
if (error.includes('.jsx'))
|
|
88
|
+
terms.push('jsx');
|
|
89
|
+
return terms;
|
|
90
|
+
}
|
|
91
|
+
function extractAffectedFiles(stackTrace) {
|
|
92
|
+
const files = [];
|
|
93
|
+
const lines = stackTrace.split('\n');
|
|
94
|
+
for (const line of lines) {
|
|
95
|
+
// Match file paths in stack trace
|
|
96
|
+
const match = line.match(/(?:at|in)\s+(?:.*?\s+)?\(?([^\s()]+\.(?:tsx?|jsx?|mjs)):(\d+)/);
|
|
97
|
+
if (match) {
|
|
98
|
+
const file = match[1];
|
|
99
|
+
if (!files.includes(file)) {
|
|
100
|
+
files.push(file);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return files.slice(0, 5); // Top 5 affected files
|
|
105
|
+
}
|
|
106
|
+
function analyzeRootCause(error, stackTrace, context) {
|
|
107
|
+
// Pattern matching for common error types
|
|
108
|
+
// TypeScript errors
|
|
109
|
+
if (error.includes('Property') && error.includes('does not exist on type')) {
|
|
110
|
+
return {
|
|
111
|
+
cause: 'Attempting to access a property that TypeScript doesn\'t recognize on the type',
|
|
112
|
+
confidence: 'high'
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
if (error.includes('Cannot read property') || error.includes('Cannot read properties of undefined')) {
|
|
116
|
+
return {
|
|
117
|
+
cause: 'Accessing a property on undefined or null value (data not loaded or wrong type)',
|
|
118
|
+
confidence: 'high'
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
if (error.includes('window is not defined') || error.includes('document is not defined')) {
|
|
122
|
+
return {
|
|
123
|
+
cause: 'Server-side rendering (SSR) code trying to access browser-only APIs',
|
|
124
|
+
confidence: 'high'
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
if (error.includes('Hydration') || error.includes('Text content does not match')) {
|
|
128
|
+
return {
|
|
129
|
+
cause: 'Server-rendered HTML doesn\'t match client-rendered output (hydration mismatch)',
|
|
130
|
+
confidence: 'high'
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
if (error.includes('.maybeSingle() expected 0 or 1 rows')) {
|
|
134
|
+
return {
|
|
135
|
+
cause: 'Database query returned multiple rows when expecting single row',
|
|
136
|
+
confidence: 'high'
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
if (error.includes('Class') && error.includes('not found')) {
|
|
140
|
+
return {
|
|
141
|
+
cause: 'Tailwind CSS class not defined (missing from tailwind.config or not compiled)',
|
|
142
|
+
confidence: 'high'
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
if (error.includes('Module not found') || error.includes('Cannot find module')) {
|
|
146
|
+
return {
|
|
147
|
+
cause: 'Import path incorrect or dependency not installed',
|
|
148
|
+
confidence: 'high'
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
if (error.includes('401') || error.includes('Unauthorized')) {
|
|
152
|
+
return {
|
|
153
|
+
cause: 'Authentication failure (user not logged in or token expired)',
|
|
154
|
+
confidence: 'high'
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
if (error.includes('403') || error.includes('Forbidden')) {
|
|
158
|
+
return {
|
|
159
|
+
cause: 'Authorization failure (user lacks permission for this resource)',
|
|
160
|
+
confidence: 'high'
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
if (error.includes('404') || error.includes('Not Found')) {
|
|
164
|
+
return {
|
|
165
|
+
cause: 'Resource not found (wrong URL, deleted record, or route not defined)',
|
|
166
|
+
confidence: 'high'
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
if (error.includes('500') || error.includes('Internal Server Error')) {
|
|
170
|
+
return {
|
|
171
|
+
cause: 'Server-side error (check API route, database connection, or server logs)',
|
|
172
|
+
confidence: 'medium'
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
// Generic analysis
|
|
176
|
+
if (stackTrace.length > 0) {
|
|
177
|
+
return {
|
|
178
|
+
cause: 'Runtime error during execution (check stack trace for file location)',
|
|
179
|
+
confidence: 'medium'
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
cause: 'Unknown error - manual investigation needed',
|
|
184
|
+
confidence: 'low'
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
function generateFixApproaches(error, rootCause, affectedFiles) {
|
|
188
|
+
const approaches = [];
|
|
189
|
+
// Generate approaches based on error type
|
|
190
|
+
if (rootCause.cause.includes('undefined or null')) {
|
|
191
|
+
approaches.push({
|
|
192
|
+
approach: 'Add null check',
|
|
193
|
+
steps: [
|
|
194
|
+
'Identify the variable being accessed',
|
|
195
|
+
'Add optional chaining: `obj?.property` instead of `obj.property`',
|
|
196
|
+
'Or add explicit check: `if (obj) { ... }`',
|
|
197
|
+
'Consider why value is undefined (data not loaded, wrong type, etc.)'
|
|
198
|
+
],
|
|
199
|
+
confidence: 90,
|
|
200
|
+
risk: 'low'
|
|
201
|
+
});
|
|
202
|
+
approaches.push({
|
|
203
|
+
approach: 'Ensure data is loaded first',
|
|
204
|
+
steps: [
|
|
205
|
+
'Check if data is being fetched asynchronously',
|
|
206
|
+
'Add loading state check before accessing data',
|
|
207
|
+
'Use conditional rendering: `{data && <Component data={data} />}`'
|
|
208
|
+
],
|
|
209
|
+
confidence: 85,
|
|
210
|
+
risk: 'low'
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
if (rootCause.cause.includes('SSR')) {
|
|
214
|
+
approaches.push({
|
|
215
|
+
approach: 'Use client-side only',
|
|
216
|
+
steps: [
|
|
217
|
+
'Add "use client" directive at top of file',
|
|
218
|
+
'Or use dynamic import with { ssr: false }',
|
|
219
|
+
'Or check if window exists: `if (typeof window !== "undefined")`'
|
|
220
|
+
],
|
|
221
|
+
confidence: 95,
|
|
222
|
+
risk: 'low'
|
|
223
|
+
});
|
|
224
|
+
approaches.push({
|
|
225
|
+
approach: 'Use useEffect for browser APIs',
|
|
226
|
+
steps: [
|
|
227
|
+
'Move browser API calls into useEffect hook',
|
|
228
|
+
'useEffect only runs on client side',
|
|
229
|
+
'Store result in state if needed'
|
|
230
|
+
],
|
|
231
|
+
confidence: 90,
|
|
232
|
+
risk: 'low'
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
if (rootCause.cause.includes('Hydration')) {
|
|
236
|
+
approaches.push({
|
|
237
|
+
approach: 'Fix server/client mismatch',
|
|
238
|
+
steps: [
|
|
239
|
+
'Ensure server and client render the same HTML',
|
|
240
|
+
'Avoid random values, timestamps, or client-only data during SSR',
|
|
241
|
+
'Use suppressHydrationWarning if intentional mismatch',
|
|
242
|
+
'Check for browser extensions injecting HTML'
|
|
243
|
+
],
|
|
244
|
+
confidence: 80,
|
|
245
|
+
risk: 'medium'
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
if (rootCause.cause.includes('TypeScript')) {
|
|
249
|
+
approaches.push({
|
|
250
|
+
approach: 'Fix type definition',
|
|
251
|
+
steps: [
|
|
252
|
+
'Add property to type/interface definition',
|
|
253
|
+
'Or use type assertion if you know type is correct',
|
|
254
|
+
'Or check if property name is spelled correctly'
|
|
255
|
+
],
|
|
256
|
+
confidence: 95,
|
|
257
|
+
risk: 'low'
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
if (rootCause.cause.includes('Module not found')) {
|
|
261
|
+
approaches.push({
|
|
262
|
+
approach: 'Install missing dependency',
|
|
263
|
+
steps: [
|
|
264
|
+
'Check import path is correct',
|
|
265
|
+
'If external package: Run `pnpm add [package-name]`',
|
|
266
|
+
'If local file: Check file exists and path is correct',
|
|
267
|
+
'Restart dev server after installing'
|
|
268
|
+
],
|
|
269
|
+
confidence: 95,
|
|
270
|
+
risk: 'low'
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
if (rootCause.cause.includes('Tailwind')) {
|
|
274
|
+
approaches.push({
|
|
275
|
+
approach: 'Define CSS variable',
|
|
276
|
+
steps: [
|
|
277
|
+
'Check if using custom color (e.g., "border-border")',
|
|
278
|
+
'Add to globals.css: `--border: ...`',
|
|
279
|
+
'Add to tailwind.config.ts: extend theme with CSS variables',
|
|
280
|
+
'See: agents/patterns/tailwind-css-variables.md'
|
|
281
|
+
],
|
|
282
|
+
confidence: 90,
|
|
283
|
+
risk: 'low'
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
if (approaches.length === 0) {
|
|
287
|
+
// Generic approach
|
|
288
|
+
approaches.push({
|
|
289
|
+
approach: 'Investigate affected files',
|
|
290
|
+
steps: affectedFiles.length > 0
|
|
291
|
+
? affectedFiles.map(f => `Check file: ${f}`)
|
|
292
|
+
: ['Review stack trace for file locations', 'Add console.log to trace execution'],
|
|
293
|
+
confidence: 50,
|
|
294
|
+
risk: 'medium'
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
return approaches;
|
|
298
|
+
}
|
|
299
|
+
async function logError(cwd, error, stackTrace, diagnosis) {
|
|
300
|
+
const errorLogPath = path.join(cwd, '.codebakers', 'ERROR-LOG.md');
|
|
301
|
+
const entry = `\n## Error: ${error.split('\n')[0].slice(0, 100)}\n\n`;
|
|
302
|
+
const details = `**Date:** ${new Date().toISOString()}\n`;
|
|
303
|
+
const cause = `**Root Cause:** ${diagnosis.root_cause}\n`;
|
|
304
|
+
const fixes = `**Fix Approaches:** ${diagnosis.fix_approaches.length}\n`;
|
|
305
|
+
const fullEntry = entry + details + cause + fixes + '\n---\n';
|
|
306
|
+
try {
|
|
307
|
+
const existing = await fs.readFile(errorLogPath, 'utf-8');
|
|
308
|
+
await fs.writeFile(errorLogPath, existing + fullEntry, 'utf-8');
|
|
309
|
+
}
|
|
310
|
+
catch {
|
|
311
|
+
// ERROR-LOG.md doesn't exist
|
|
312
|
+
await fs.mkdir(path.dirname(errorLogPath), { recursive: true });
|
|
313
|
+
await fs.writeFile(errorLogPath, `# Error Log\n\n${fullEntry}`, 'utf-8');
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
function generateDiagnosisReport(diagnosis, error) {
|
|
317
|
+
let report = `🍞 CodeBakers: Error Diagnosis\n\n`;
|
|
318
|
+
report += `**Error:** ${error.split('\n')[0]}\n\n`;
|
|
319
|
+
report += `## Root Cause\n\n`;
|
|
320
|
+
report += `${diagnosis.root_cause}\n\n`;
|
|
321
|
+
report += `**Confidence:** ${diagnosis.confidence === 'high' ? '✅ High' : diagnosis.confidence === 'medium' ? '⚠️ Medium' : '❓ Low'}\n\n`;
|
|
322
|
+
if (diagnosis.affected_files.length > 0) {
|
|
323
|
+
report += `## Affected Files\n\n`;
|
|
324
|
+
for (const file of diagnosis.affected_files) {
|
|
325
|
+
report += `- ${file}\n`;
|
|
326
|
+
}
|
|
327
|
+
report += `\n`;
|
|
328
|
+
}
|
|
329
|
+
if (diagnosis.related_errors.length > 0) {
|
|
330
|
+
report += `## Related Past Errors\n\n`;
|
|
331
|
+
for (const related of diagnosis.related_errors) {
|
|
332
|
+
report += `- ${related}\n`;
|
|
333
|
+
}
|
|
334
|
+
report += `\nCheck .codebakers/ERROR-LOG.md for solutions.\n\n`;
|
|
335
|
+
}
|
|
336
|
+
report += `## Fix Approaches (${diagnosis.fix_approaches.length})\n\n`;
|
|
337
|
+
for (let i = 0; i < diagnosis.fix_approaches.length; i++) {
|
|
338
|
+
const approach = diagnosis.fix_approaches[i];
|
|
339
|
+
report += `### Approach ${i + 1}: ${approach.approach}\n\n`;
|
|
340
|
+
report += `**Confidence:** ${approach.confidence}%\n`;
|
|
341
|
+
report += `**Risk:** ${approach.risk}\n\n`;
|
|
342
|
+
report += `**Steps:**\n`;
|
|
343
|
+
for (const step of approach.steps) {
|
|
344
|
+
report += `${i + 1}. ${step}\n`;
|
|
345
|
+
}
|
|
346
|
+
report += `\n`;
|
|
347
|
+
}
|
|
348
|
+
report += `**Logged to:** .codebakers/ERROR-LOG.md\n`;
|
|
349
|
+
return report;
|
|
350
|
+
}
|
|
351
|
+
//# sourceMappingURL=diagnose-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnose-error.js","sourceRoot":"","sources":["../../src/tools/diagnose-error.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* codebakers_enforce_feature
|
|
3
|
+
*
|
|
4
|
+
* Feature Build Enforcement
|
|
5
|
+
*
|
|
6
|
+
* Enforces FULL atomic unit protocol (no shortcuts allowed).
|
|
7
|
+
* Use when: @feature [description] or // [description]
|
|
8
|
+
*
|
|
9
|
+
* MANDATORY steps (cannot be skipped):
|
|
10
|
+
* 1. Context loading (BRAIN.md, DEPENDENCY-MAP.md, ERROR-LOG.md)
|
|
11
|
+
* 2. Error Sniffer scan (all patterns checked)
|
|
12
|
+
* 3. Atomic unit declaration (in FIX-QUEUE.md BEFORE code)
|
|
13
|
+
* 4. UNIT-PROGRESS.md creation (crash recovery)
|
|
14
|
+
* 5. All 8 steps (schema → API → store → UI → states → tests → gate)
|
|
15
|
+
* 6. BUILD-LOG.md update after every step
|
|
16
|
+
* 7. Gate check (all items must pass)
|
|
17
|
+
* 8. Atomic commit format: feat(atomic): [name] — gate passed [N/N checks]
|
|
18
|
+
*
|
|
19
|
+
* Result: Feature guaranteed complete, tested, and atomic.
|
|
20
|
+
*/
|
|
21
|
+
export declare function enforceFeature(args: {
|
|
22
|
+
feature_name?: string;
|
|
23
|
+
description?: string;
|
|
24
|
+
}): Promise<string>;
|
|
25
|
+
//# sourceMappingURL=enforce-feature.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enforce-feature.d.ts","sourceRoot":"","sources":["../../src/tools/enforce-feature.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAmBH,wBAAsB,cAAc,CAAC,IAAI,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAwD3G"}
|