@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.
Files changed (140) hide show
  1. package/INSTALL.md +221 -0
  2. package/LICENSE +21 -0
  3. package/README.md +412 -0
  4. package/dist/cli.d.ts +9 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +236 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/index.d.ts +12 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +526 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/tools/analyze-mockups.d.ts +18 -0
  13. package/dist/tools/analyze-mockups.d.ts.map +1 -0
  14. package/dist/tools/analyze-mockups.js +497 -0
  15. package/dist/tools/analyze-mockups.js.map +1 -0
  16. package/dist/tools/autonomous-build.d.ts +19 -0
  17. package/dist/tools/autonomous-build.d.ts.map +1 -0
  18. package/dist/tools/autonomous-build.js +287 -0
  19. package/dist/tools/autonomous-build.js.map +1 -0
  20. package/dist/tools/check-gate.d.ts +21 -0
  21. package/dist/tools/check-gate.d.ts.map +1 -0
  22. package/dist/tools/check-gate.js +446 -0
  23. package/dist/tools/check-gate.js.map +1 -0
  24. package/dist/tools/check-scope.d.ts +22 -0
  25. package/dist/tools/check-scope.d.ts.map +1 -0
  26. package/dist/tools/check-scope.js +251 -0
  27. package/dist/tools/check-scope.js.map +1 -0
  28. package/dist/tools/deploy-vercel.d.ts +18 -0
  29. package/dist/tools/deploy-vercel.d.ts.map +1 -0
  30. package/dist/tools/deploy-vercel.js +178 -0
  31. package/dist/tools/deploy-vercel.js.map +1 -0
  32. package/dist/tools/diagnose-error.d.ts +20 -0
  33. package/dist/tools/diagnose-error.d.ts.map +1 -0
  34. package/dist/tools/diagnose-error.js +351 -0
  35. package/dist/tools/diagnose-error.js.map +1 -0
  36. package/dist/tools/enforce-feature.d.ts +25 -0
  37. package/dist/tools/enforce-feature.d.ts.map +1 -0
  38. package/dist/tools/enforce-feature.js +387 -0
  39. package/dist/tools/enforce-feature.js.map +1 -0
  40. package/dist/tools/execute-atomic-unit.d.ts +23 -0
  41. package/dist/tools/execute-atomic-unit.d.ts.map +1 -0
  42. package/dist/tools/execute-atomic-unit.js +107 -0
  43. package/dist/tools/execute-atomic-unit.js.map +1 -0
  44. package/dist/tools/fix-commit.d.ts +23 -0
  45. package/dist/tools/fix-commit.d.ts.map +1 -0
  46. package/dist/tools/fix-commit.js +213 -0
  47. package/dist/tools/fix-commit.js.map +1 -0
  48. package/dist/tools/fix-mockups.d.ts +21 -0
  49. package/dist/tools/fix-mockups.d.ts.map +1 -0
  50. package/dist/tools/fix-mockups.js +595 -0
  51. package/dist/tools/fix-mockups.js.map +1 -0
  52. package/dist/tools/generate-api-route.d.ts +18 -0
  53. package/dist/tools/generate-api-route.d.ts.map +1 -0
  54. package/dist/tools/generate-api-route.js +212 -0
  55. package/dist/tools/generate-api-route.js.map +1 -0
  56. package/dist/tools/generate-chatbot.d.ts +20 -0
  57. package/dist/tools/generate-chatbot.d.ts.map +1 -0
  58. package/dist/tools/generate-chatbot.js +555 -0
  59. package/dist/tools/generate-chatbot.js.map +1 -0
  60. package/dist/tools/generate-component.d.ts +18 -0
  61. package/dist/tools/generate-component.d.ts.map +1 -0
  62. package/dist/tools/generate-component.js +159 -0
  63. package/dist/tools/generate-component.js.map +1 -0
  64. package/dist/tools/generate-docs.d.ts +21 -0
  65. package/dist/tools/generate-docs.d.ts.map +1 -0
  66. package/dist/tools/generate-docs.js +782 -0
  67. package/dist/tools/generate-docs.js.map +1 -0
  68. package/dist/tools/generate-e2e-tests.d.ts +12 -0
  69. package/dist/tools/generate-e2e-tests.d.ts.map +1 -0
  70. package/dist/tools/generate-e2e-tests.js +37 -0
  71. package/dist/tools/generate-e2e-tests.js.map +1 -0
  72. package/dist/tools/generate-migration.d.ts +21 -0
  73. package/dist/tools/generate-migration.d.ts.map +1 -0
  74. package/dist/tools/generate-migration.js +94 -0
  75. package/dist/tools/generate-migration.js.map +1 -0
  76. package/dist/tools/generate-schema.d.ts +18 -0
  77. package/dist/tools/generate-schema.d.ts.map +1 -0
  78. package/dist/tools/generate-schema.js +422 -0
  79. package/dist/tools/generate-schema.js.map +1 -0
  80. package/dist/tools/generate-spec.d.ts +18 -0
  81. package/dist/tools/generate-spec.d.ts.map +1 -0
  82. package/dist/tools/generate-spec.js +446 -0
  83. package/dist/tools/generate-spec.js.map +1 -0
  84. package/dist/tools/generate-store-contracts.d.ts +17 -0
  85. package/dist/tools/generate-store-contracts.d.ts.map +1 -0
  86. package/dist/tools/generate-store-contracts.js +356 -0
  87. package/dist/tools/generate-store-contracts.js.map +1 -0
  88. package/dist/tools/generate-store.d.ts +16 -0
  89. package/dist/tools/generate-store.d.ts.map +1 -0
  90. package/dist/tools/generate-store.js +166 -0
  91. package/dist/tools/generate-store.js.map +1 -0
  92. package/dist/tools/generate-unit-tests.d.ts +14 -0
  93. package/dist/tools/generate-unit-tests.d.ts.map +1 -0
  94. package/dist/tools/generate-unit-tests.js +85 -0
  95. package/dist/tools/generate-unit-tests.js.map +1 -0
  96. package/dist/tools/get-context.d.ts +35 -0
  97. package/dist/tools/get-context.d.ts.map +1 -0
  98. package/dist/tools/get-context.js +367 -0
  99. package/dist/tools/get-context.js.map +1 -0
  100. package/dist/tools/init-session.d.ts +22 -0
  101. package/dist/tools/init-session.d.ts.map +1 -0
  102. package/dist/tools/init-session.js +232 -0
  103. package/dist/tools/init-session.js.map +1 -0
  104. package/dist/tools/map-dependencies.d.ts +25 -0
  105. package/dist/tools/map-dependencies.d.ts.map +1 -0
  106. package/dist/tools/map-dependencies.js +480 -0
  107. package/dist/tools/map-dependencies.js.map +1 -0
  108. package/dist/tools/optimize-performance.d.ts +18 -0
  109. package/dist/tools/optimize-performance.d.ts.map +1 -0
  110. package/dist/tools/optimize-performance.js +285 -0
  111. package/dist/tools/optimize-performance.js.map +1 -0
  112. package/dist/tools/run-interview.d.ts +23 -0
  113. package/dist/tools/run-interview.d.ts.map +1 -0
  114. package/dist/tools/run-interview.js +371 -0
  115. package/dist/tools/run-interview.js.map +1 -0
  116. package/dist/tools/run-tests.d.ts +12 -0
  117. package/dist/tools/run-tests.d.ts.map +1 -0
  118. package/dist/tools/run-tests.js +30 -0
  119. package/dist/tools/run-tests.js.map +1 -0
  120. package/dist/tools/scan-security.d.ts +19 -0
  121. package/dist/tools/scan-security.d.ts.map +1 -0
  122. package/dist/tools/scan-security.js +358 -0
  123. package/dist/tools/scan-security.js.map +1 -0
  124. package/dist/tools/validate-accessibility.d.ts +18 -0
  125. package/dist/tools/validate-accessibility.d.ts.map +1 -0
  126. package/dist/tools/validate-accessibility.js +251 -0
  127. package/dist/tools/validate-accessibility.js.map +1 -0
  128. package/dist/tools/validate-mockups.d.ts +21 -0
  129. package/dist/tools/validate-mockups.d.ts.map +1 -0
  130. package/dist/tools/validate-mockups.js +433 -0
  131. package/dist/tools/validate-mockups.js.map +1 -0
  132. package/dist/tools/verify-completeness.d.ts +13 -0
  133. package/dist/tools/verify-completeness.d.ts.map +1 -0
  134. package/dist/tools/verify-completeness.js +68 -0
  135. package/dist/tools/verify-completeness.js.map +1 -0
  136. package/dist/tools/verify-mockups.d.ts +14 -0
  137. package/dist/tools/verify-mockups.d.ts.map +1 -0
  138. package/dist/tools/verify-mockups.js +85 -0
  139. package/dist/tools/verify-mockups.js.map +1 -0
  140. 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"}