@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,356 @@
1
+ /**
2
+ * codebakers_generate_store_contracts
3
+ *
4
+ * Phase 2D: Store Contract Generation
5
+ * Generates TypeScript interfaces for all stores
6
+ *
7
+ * Purpose:
8
+ * - Type-safe store definitions before building
9
+ * - Contract for what each store must implement
10
+ * - Maps from schema + dependency map to TypeScript interfaces
11
+ * - Ensures consistency between database and client state
12
+ */
13
+ import * as fs from 'fs/promises';
14
+ import * as path from 'path';
15
+ export async function generateStoreContracts(args) {
16
+ const cwd = process.cwd();
17
+ const schemaFile = args.schema_file || '.codebakers/SCHEMA.sql';
18
+ const depMapFile = args.dependency_map_file || '.codebakers/DEPENDENCY-MAP.md';
19
+ const schemaPath = path.join(cwd, schemaFile);
20
+ const depMapPath = path.join(cwd, depMapFile);
21
+ console.error('🍞 CodeBakers: Phase 2D — Store Contract Generation');
22
+ try {
23
+ // 1. CHECK IF REQUIRED FILES EXIST
24
+ const schemaExists = await fs.access(schemaPath).then(() => true).catch(() => false);
25
+ const depMapExists = await fs.access(depMapPath).then(() => true).catch(() => false);
26
+ if (!schemaExists) {
27
+ return `🍞 CodeBakers: Phase 2D - Store Contract Generation
28
+
29
+ ❌ BLOCKER: Schema file not found
30
+
31
+ Expected location: ${schemaPath}
32
+
33
+ Phase 2D requires Phase 2B schema to generate store contracts.
34
+
35
+ Next step: Run Phase 2B first (use tool: codebakers_generate_schema)`;
36
+ }
37
+ if (!depMapExists) {
38
+ return `🍞 CodeBakers: Phase 2D - Store Contract Generation
39
+
40
+ ❌ BLOCKER: Dependency map not found
41
+
42
+ Expected location: ${depMapPath}
43
+
44
+ Phase 2D requires Phase 2C dependency map to generate store contracts.
45
+
46
+ Next step: Run Phase 2C first (use tool: codebakers_map_dependencies)`;
47
+ }
48
+ // 2. READ SCHEMA AND DEPENDENCY MAP
49
+ const schemaContent = await fs.readFile(schemaPath, 'utf-8');
50
+ const depMapContent = await fs.readFile(depMapPath, 'utf-8');
51
+ console.error('Files loaded. Generating store contracts...');
52
+ // 3. GENERATE STORE CONTRACTS
53
+ const contracts = generateContracts(schemaContent, depMapContent);
54
+ console.error(`Generated ${contracts.length} store contracts`);
55
+ // 4. GENERATE STORE-CONTRACTS.md
56
+ const contractsDoc = generateContractsDocument(contracts);
57
+ const contractsPath = path.join(cwd, '.codebakers', 'STORE-CONTRACTS.md');
58
+ await fs.writeFile(contractsPath, contractsDoc, 'utf-8');
59
+ // 5. GENERATE TYPESCRIPT INTERFACES
60
+ const typescriptInterfaces = generateTypeScriptInterfaces(contracts);
61
+ const interfacesPath = path.join(cwd, '.codebakers', 'store-contracts.ts');
62
+ await fs.writeFile(interfacesPath, typescriptInterfaces, 'utf-8');
63
+ console.error(`✓ Store contracts written: ${contractsPath}`);
64
+ console.error(`✓ TypeScript interfaces written: ${interfacesPath}`);
65
+ // 6. GENERATE SUMMARY
66
+ const summary = generateContractsSummary(contracts);
67
+ return `🍞 CodeBakers: Phase 2D - Store Contract Generation Complete
68
+
69
+ ${summary}
70
+
71
+ 📄 Documentation: .codebakers/STORE-CONTRACTS.md
72
+ 📄 TypeScript interfaces: .codebakers/store-contracts.ts
73
+
74
+ These contracts define:
75
+ ✓ State shape for each store
76
+ ✓ Required methods (create, update, delete, query)
77
+ ✓ Method signatures with types
78
+ ✓ Dependencies (which stores this store depends on)
79
+
80
+ Next steps:
81
+ 1. Review store contracts to verify completeness
82
+ 2. Phase 2 is now COMPLETE
83
+ 3. Ready for Phase 3: Foundation Build
84
+ 4. When implementing stores, use store-contracts.ts as the interface`;
85
+ }
86
+ catch (error) {
87
+ console.error('Error during store contract generation:', error);
88
+ return `🍞 CodeBakers: Phase 2D - Store Contract Generation Failed
89
+
90
+ Error: ${error instanceof Error ? error.message : String(error)}
91
+
92
+ Please check:
93
+ - Schema file and dependency map exist and are readable
94
+ - Files contain valid content
95
+ - File permissions allow writing
96
+
97
+ If issue persists, log to ERROR-LOG.md and request human assistance.`;
98
+ }
99
+ }
100
+ /**
101
+ * Generate store contracts from schema and dependency map
102
+ */
103
+ function generateContracts(schema, depMap) {
104
+ const contracts = [];
105
+ // Extract tables from schema
106
+ const tables = extractTablesFromSchema(schema);
107
+ // Extract write dependencies from dep map
108
+ const writeDeps = extractWriteDependencies(depMap);
109
+ console.error(`Found ${tables.length} tables`);
110
+ for (const table of tables) {
111
+ const entityName = singularize(table.name);
112
+ const storeName = `${entityName}Store`;
113
+ const contract = {
114
+ name: storeName,
115
+ entity: entityName,
116
+ state_shape: {},
117
+ methods: [],
118
+ dependencies: [],
119
+ };
120
+ // 1. STATE SHAPE
121
+ // Map SQL columns to TypeScript types
122
+ for (const column of table.columns) {
123
+ contract.state_shape[column.name] = mapSQLTypeToTypeScript(column.type);
124
+ }
125
+ // 2. STANDARD CRUD METHODS
126
+ // Create
127
+ contract.methods.push({
128
+ name: `create${capitalize(entityName)}`,
129
+ params: [{ name: 'data', type: `Omit<${capitalize(entityName)}, 'id' | 'created_at' | 'updated_at'>` }],
130
+ return_type: `Promise<${capitalize(entityName)}>`,
131
+ updates: [storeName],
132
+ });
133
+ // Update
134
+ contract.methods.push({
135
+ name: `update${capitalize(entityName)}`,
136
+ params: [
137
+ { name: 'id', type: 'string' },
138
+ { name: 'data', type: `Partial<${capitalize(entityName)}>` },
139
+ ],
140
+ return_type: `Promise<${capitalize(entityName)}>`,
141
+ updates: [storeName],
142
+ });
143
+ // Delete
144
+ contract.methods.push({
145
+ name: `delete${capitalize(entityName)}`,
146
+ params: [{ name: 'id', type: 'string' }],
147
+ return_type: 'Promise<void>',
148
+ updates: [storeName],
149
+ });
150
+ // Get one
151
+ contract.methods.push({
152
+ name: `get${capitalize(entityName)}`,
153
+ params: [{ name: 'id', type: 'string' }],
154
+ return_type: `Promise<${capitalize(entityName)} | null>`,
155
+ updates: [],
156
+ });
157
+ // Get many
158
+ contract.methods.push({
159
+ name: `get${capitalize(entityName)}s`,
160
+ params: [{ name: 'filters', type: `Partial<${capitalize(entityName)}>` }],
161
+ return_type: `Promise<${capitalize(entityName)}[]>`,
162
+ updates: [],
163
+ });
164
+ // 3. EXTRACT CASCADE UPDATES FROM DEPENDENCY MAP
165
+ const cascades = writeDeps.filter(dep => dep.entity === entityName);
166
+ for (const cascade of cascades) {
167
+ if (cascade.cascade_stores.length > 0) {
168
+ contract.dependencies.push(...cascade.cascade_stores);
169
+ }
170
+ }
171
+ contracts.push(contract);
172
+ }
173
+ return contracts;
174
+ }
175
+ /**
176
+ * Extract tables from schema
177
+ */
178
+ function extractTablesFromSchema(schema) {
179
+ const tables = [];
180
+ const tableRegex = /CREATE TABLE (\w+) \(([\s\S]*?)\);/g;
181
+ let match;
182
+ while ((match = tableRegex.exec(schema)) !== null) {
183
+ const tableName = match[1];
184
+ const tableBody = match[2];
185
+ const columns = [];
186
+ const columnRegex = /(\w+)\s+(\w+)/g;
187
+ let colMatch;
188
+ while ((colMatch = columnRegex.exec(tableBody)) !== null) {
189
+ const columnName = colMatch[1];
190
+ const columnType = colMatch[2];
191
+ // Skip constraint keywords
192
+ if (['PRIMARY', 'FOREIGN', 'UNIQUE', 'NOT', 'DEFAULT', 'REFERENCES', 'KEY', 'CHECK'].includes(columnName.toUpperCase())) {
193
+ continue;
194
+ }
195
+ columns.push({
196
+ name: columnName,
197
+ type: columnType,
198
+ });
199
+ }
200
+ tables.push({ name: tableName, columns });
201
+ }
202
+ return tables;
203
+ }
204
+ /**
205
+ * Extract write dependencies from dependency map
206
+ */
207
+ function extractWriteDependencies(depMap) {
208
+ const deps = [];
209
+ // Extract from "Write Dependencies" section
210
+ const writeDepsRegex = /### (create|update|delete)(\w+)\n[\s\S]*?- \*\*Cascade Updates:\*\* ([\w\s,]+)/g;
211
+ let match;
212
+ while ((match = writeDepsRegex.exec(depMap)) !== null) {
213
+ const entity = match[2];
214
+ const cascades = match[3].split(',').map(s => s.trim()).filter(s => s.endsWith('Store'));
215
+ deps.push({
216
+ entity: entity.toLowerCase(),
217
+ cascade_stores: cascades,
218
+ });
219
+ }
220
+ return deps;
221
+ }
222
+ /**
223
+ * Generate STORE-CONTRACTS.md document
224
+ */
225
+ function generateContractsDocument(contracts) {
226
+ let doc = `# Store Contracts\n\n`;
227
+ doc += `**Generated:** ${new Date().toISOString()}\n`;
228
+ doc += `**Phase:** 2D - Store Contract Generation\n`;
229
+ doc += `**Purpose:** Define type-safe contracts for all stores before implementation\n\n`;
230
+ doc += `---\n\n`;
231
+ doc += `## Purpose\n\n`;
232
+ doc += `This document defines the contract for EVERY store in the application.\n\n`;
233
+ doc += `Before implementing a store, check this contract to ensure:\n`;
234
+ doc += `- State shape matches expectations\n`;
235
+ doc += `- All required methods are implemented\n`;
236
+ doc += `- All cascade updates are handled\n\n`;
237
+ doc += `---\n\n`;
238
+ for (const contract of contracts) {
239
+ doc += `## ${contract.name}\n\n`;
240
+ doc += `**Entity:** ${contract.entity}\n\n`;
241
+ // State shape
242
+ doc += `### State Shape\n\n`;
243
+ doc += `\`\`\`typescript\n`;
244
+ doc += `interface ${capitalize(contract.entity)} {\n`;
245
+ for (const [field, type] of Object.entries(contract.state_shape)) {
246
+ doc += ` ${field}: ${type};\n`;
247
+ }
248
+ doc += `}\n`;
249
+ doc += `\`\`\`\n\n`;
250
+ // Methods
251
+ doc += `### Required Methods\n\n`;
252
+ for (const method of contract.methods) {
253
+ doc += `#### ${method.name}\n\n`;
254
+ doc += `\`\`\`typescript\n`;
255
+ const params = method.params.map(p => `${p.name}: ${p.type}`).join(', ');
256
+ doc += `${method.name}(${params}): ${method.return_type}\n`;
257
+ doc += `\`\`\`\n\n`;
258
+ if (method.updates.length > 0) {
259
+ doc += `**Updates:** ${method.updates.join(', ')}\n\n`;
260
+ }
261
+ }
262
+ // Dependencies
263
+ if (contract.dependencies.length > 0) {
264
+ doc += `### Dependencies\n\n`;
265
+ doc += `This store depends on:\n`;
266
+ for (const dep of contract.dependencies) {
267
+ doc += `- ${dep}\n`;
268
+ }
269
+ doc += `\n`;
270
+ }
271
+ doc += `---\n\n`;
272
+ }
273
+ return doc;
274
+ }
275
+ /**
276
+ * Generate TypeScript interfaces
277
+ */
278
+ function generateTypeScriptInterfaces(contracts) {
279
+ let ts = `/**\n`;
280
+ ts += ` * Store Contracts\n`;
281
+ ts += ` * Generated: ${new Date().toISOString()}\n`;
282
+ ts += ` * \n`;
283
+ ts += ` * DO NOT EDIT MANUALLY\n`;
284
+ ts += ` * This file is auto-generated from schema and dependency map\n`;
285
+ ts += ` */\n\n`;
286
+ // Generate entity interfaces
287
+ for (const contract of contracts) {
288
+ ts += `export interface ${capitalize(contract.entity)} {\n`;
289
+ for (const [field, type] of Object.entries(contract.state_shape)) {
290
+ ts += ` ${field}: ${type};\n`;
291
+ }
292
+ ts += `}\n\n`;
293
+ }
294
+ // Generate store interfaces
295
+ for (const contract of contracts) {
296
+ ts += `export interface ${contract.name} {\n`;
297
+ for (const method of contract.methods) {
298
+ const params = method.params.map(p => `${p.name}: ${p.type}`).join(', ');
299
+ ts += ` ${method.name}(${params}): ${method.return_type};\n`;
300
+ }
301
+ ts += `}\n\n`;
302
+ }
303
+ return ts;
304
+ }
305
+ /**
306
+ * Generate summary
307
+ */
308
+ function generateContractsSummary(contracts) {
309
+ const totalMethods = contracts.reduce((sum, c) => sum + c.methods.length, 0);
310
+ const totalDeps = contracts.reduce((sum, c) => sum + c.dependencies.length, 0);
311
+ let summary = `✓ Generated ${contracts.length} store contracts\n`;
312
+ summary += `✓ Defined ${totalMethods} methods across all stores\n`;
313
+ summary += `✓ Mapped ${totalDeps} store dependencies\n`;
314
+ summary += `✓ All contracts type-safe with TypeScript interfaces\n`;
315
+ return summary;
316
+ }
317
+ // HELPER FUNCTIONS
318
+ function singularize(word) {
319
+ if (word.endsWith('ies'))
320
+ return word.slice(0, -3) + 'y';
321
+ if (word.endsWith('ses'))
322
+ return word.slice(0, -2);
323
+ if (word.endsWith('s'))
324
+ return word.slice(0, -1);
325
+ return word;
326
+ }
327
+ function capitalize(str) {
328
+ return str.charAt(0).toUpperCase() + str.slice(1);
329
+ }
330
+ function mapSQLTypeToTypeScript(sqlType) {
331
+ const typeMap = {
332
+ 'uuid': 'string',
333
+ 'text': 'string',
334
+ 'varchar': 'string',
335
+ 'char': 'string',
336
+ 'integer': 'number',
337
+ 'int': 'number',
338
+ 'bigint': 'number',
339
+ 'smallint': 'number',
340
+ 'numeric': 'number',
341
+ 'decimal': 'number',
342
+ 'real': 'number',
343
+ 'double': 'number',
344
+ 'boolean': 'boolean',
345
+ 'bool': 'boolean',
346
+ 'timestamp': 'string',
347
+ 'timestamptz': 'string',
348
+ 'date': 'string',
349
+ 'time': 'string',
350
+ 'json': 'any',
351
+ 'jsonb': 'any',
352
+ };
353
+ const lowerType = sqlType.toLowerCase();
354
+ return typeMap[lowerType] || 'any';
355
+ }
356
+ //# sourceMappingURL=generate-store-contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-store-contracts.js","sourceRoot":"","sources":["../../src/tools/generate-store-contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * codebakers_generate_store
3
+ *
4
+ * Zustand Store Generator
5
+ *
6
+ * Generates stores with DEPENDENCY-MAP.md integration.
7
+ * Ensures all mutations update ALL affected stores.
8
+ */
9
+ interface StoreArgs {
10
+ entity: string;
11
+ operations: string[];
12
+ dependencies?: string[];
13
+ }
14
+ export declare function generateStore(args: StoreArgs): Promise<string>;
15
+ export {};
16
+ //# sourceMappingURL=generate-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-store.d.ts","sourceRoot":"","sources":["../../src/tools/generate-store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,UAAU,SAAS;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAsDpE"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * codebakers_generate_store
3
+ *
4
+ * Zustand Store Generator
5
+ *
6
+ * Generates stores with DEPENDENCY-MAP.md integration.
7
+ * Ensures all mutations update ALL affected stores.
8
+ */
9
+ import * as fs from 'fs/promises';
10
+ import * as path from 'path';
11
+ export async function generateStore(args) {
12
+ const cwd = process.cwd();
13
+ const { entity, operations, dependencies = [] } = args;
14
+ const storeName = `${entity.toLowerCase()}-store`;
15
+ const code = `import { create } from 'zustand';
16
+
17
+ export interface ${entity} {
18
+ id: string;
19
+ user_id: string;
20
+ created_at: string;
21
+ updated_at: string;
22
+ }
23
+
24
+ interface ${entity}Store {
25
+ ${entity.toLowerCase()}s: ${entity}[];
26
+ loading: boolean;
27
+ error: string | null;
28
+
29
+ ${operations.includes('list') ? `fetch${entity}s: () => Promise<void>;` : ''}
30
+ ${operations.includes('create') ? `create${entity}: (data: Partial<${entity}>) => Promise<void>;` : ''}
31
+ ${operations.includes('update') ? `update${entity}: (id: string, data: Partial<${entity}>) => Promise<void>;` : ''}
32
+ ${operations.includes('delete') ? `delete${entity}: (id: string) => Promise<void>;` : ''}
33
+ }
34
+
35
+ export const use${entity}Store = create<${entity}Store>((set, get) => ({
36
+ ${entity.toLowerCase()}s: [],
37
+ loading: false,
38
+ error: null,
39
+
40
+ ${operations.includes('list') ? generateFetchMethod(entity) : ''}
41
+ ${operations.includes('create') ? generateCreateMethod(entity, dependencies) : ''}
42
+ ${operations.includes('update') ? generateUpdateMethod(entity, dependencies) : ''}
43
+ ${operations.includes('delete') ? generateDeleteMethod(entity, dependencies) : ''}
44
+ }));
45
+ `;
46
+ const filePath = path.join(cwd, `src/stores/${storeName}.ts`);
47
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
48
+ await fs.writeFile(filePath, code, 'utf-8');
49
+ return `🍞 CodeBakers: Store Generated
50
+
51
+ **File:** src/stores/${storeName}.ts
52
+ **Entity:** ${entity}
53
+ **Operations:** ${operations.join(', ')}
54
+ ${dependencies.length > 0 ? `**Dependencies:** ${dependencies.join(', ')}` : ''}
55
+
56
+ Includes:
57
+ ✅ TypeScript interfaces
58
+ ✅ Zustand store
59
+ ✅ Loading/error states
60
+ ✅ CRUD operations
61
+ ${dependencies.length > 0 ? '✅ Dependency updates (from DEPENDENCY-MAP.md)' : ''}`;
62
+ }
63
+ function generateFetchMethod(entity) {
64
+ return `fetch${entity}s: async () => {
65
+ set({ loading: true, error: null });
66
+ try {
67
+ const res = await fetch('/api/${entity.toLowerCase()}s');
68
+ if (!res.ok) throw new Error('Fetch failed');
69
+ const { data } = await res.json();
70
+ set({ ${entity.toLowerCase()}s: data, loading: false });
71
+ } catch (error) {
72
+ set({ error: (error as Error).message, loading: false });
73
+ }
74
+ },
75
+ `;
76
+ }
77
+ function generateCreateMethod(entity, deps) {
78
+ let code = `create${entity}: async (data) => {
79
+ set({ loading: true, error: null });
80
+ try {
81
+ const res = await fetch('/api/${entity.toLowerCase()}s', {
82
+ method: 'POST',
83
+ headers: { 'Content-Type': 'application/json' },
84
+ body: JSON.stringify(data),
85
+ });
86
+ if (!res.ok) throw new Error('Create failed');
87
+ const { data: new${entity} } = await res.json();
88
+
89
+ set(state => ({
90
+ ${entity.toLowerCase()}s: [new${entity}, ...state.${entity.toLowerCase()}s],
91
+ loading: false,
92
+ }));
93
+ `;
94
+ if (deps.length > 0) {
95
+ code += `\n // Update dependent stores (from DEPENDENCY-MAP.md)\n`;
96
+ for (const dep of deps) {
97
+ code += ` ${dep}.getState().refresh();\n`;
98
+ }
99
+ }
100
+ code += ` } catch (error) {
101
+ set({ error: (error as Error).message, loading: false });
102
+ }
103
+ },
104
+ `;
105
+ return code;
106
+ }
107
+ function generateUpdateMethod(entity, deps) {
108
+ let code = `update${entity}: async (id, data) => {
109
+ set({ loading: true, error: null });
110
+ try {
111
+ const res = await fetch(\`/api/${entity.toLowerCase()}s/\${id}\`, {
112
+ method: 'PATCH',
113
+ headers: { 'Content-Type': 'application/json' },
114
+ body: JSON.stringify(data),
115
+ });
116
+ if (!res.ok) throw new Error('Update failed');
117
+ const { data: updated } = await res.json();
118
+
119
+ set(state => ({
120
+ ${entity.toLowerCase()}s: state.${entity.toLowerCase()}s.map(item =>
121
+ item.id === id ? updated : item
122
+ ),
123
+ loading: false,
124
+ }));
125
+ `;
126
+ if (deps.length > 0) {
127
+ code += `\n // Update dependent stores\n`;
128
+ for (const dep of deps) {
129
+ code += ` ${dep}.getState().refresh();\n`;
130
+ }
131
+ }
132
+ code += ` } catch (error) {
133
+ set({ error: (error as Error).message, loading: false });
134
+ }
135
+ },
136
+ `;
137
+ return code;
138
+ }
139
+ function generateDeleteMethod(entity, deps) {
140
+ let code = `delete${entity}: async (id) => {
141
+ set({ loading: true, error: null });
142
+ try {
143
+ const res = await fetch(\`/api/${entity.toLowerCase()}s/\${id}\`, {
144
+ method: 'DELETE',
145
+ });
146
+ if (!res.ok) throw new Error('Delete failed');
147
+
148
+ set(state => ({
149
+ ${entity.toLowerCase()}s: state.${entity.toLowerCase()}s.filter(item => item.id !== id),
150
+ loading: false,
151
+ }));
152
+ `;
153
+ if (deps.length > 0) {
154
+ code += `\n // Update ALL dependent stores (CRITICAL - prevents stale UI)\n`;
155
+ for (const dep of deps) {
156
+ code += ` ${dep}.getState().refresh();\n`;
157
+ }
158
+ }
159
+ code += ` } catch (error) {
160
+ set({ error: (error as Error).message, loading: false });
161
+ }
162
+ },
163
+ `;
164
+ return code;
165
+ }
166
+ //# sourceMappingURL=generate-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-store.js","sourceRoot":"","sources":["../../src/tools/generate-store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAQ7B,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAe;IACjD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;IAEvD,MAAM,SAAS,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC;IAClD,MAAM,IAAI,GAAG;;mBAEI,MAAM;;;;;;;YAOb,MAAM;IACd,MAAM,CAAC,WAAW,EAAE,MAAM,MAAM;;;;IAIhC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,MAAM,yBAAyB,CAAC,CAAC,CAAC,EAAE;IAC1E,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,oBAAoB,MAAM,sBAAsB,CAAC,CAAC,CAAC,EAAE;IACpG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,gCAAgC,MAAM,sBAAsB,CAAC,CAAC,CAAC,EAAE;IAChH,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,kCAAkC,CAAC,CAAC,CAAC,EAAE;;;kBAGxE,MAAM,kBAAkB,MAAM;IAC5C,MAAM,CAAC,WAAW,EAAE;;;;IAIpB,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;IAC9D,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;IAC/E,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;IAC/E,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;;CAElF,CAAC;IAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,SAAS,KAAK,CAAC,CAAC;IAC9D,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAE5C,OAAO;;uBAEc,SAAS;cAClB,MAAM;kBACF,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;EACrC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,qBAAqB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;;;EAO7E,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACnF,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc;IACzC,OAAO,QAAQ,MAAM;;;sCAGe,MAAM,CAAC,WAAW,EAAE;;;cAG5C,MAAM,CAAC,WAAW,EAAE;;;;;CAKjC,CAAC;AACF,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAc,EAAE,IAAc;IAC1D,IAAI,IAAI,GAAG,SAAS,MAAM;;;sCAGU,MAAM,CAAC,WAAW,EAAE;;;;;;yBAMjC,MAAM;;;UAGrB,MAAM,CAAC,WAAW,EAAE,UAAU,MAAM,cAAc,MAAM,CAAC,WAAW,EAAE;;;CAG/E,CAAC;IAEA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,IAAI,IAAI,+DAA+D,CAAC;QACxE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,IAAI,SAAS,GAAG,0BAA0B,CAAC;QACjD,CAAC;IACH,CAAC;IAED,IAAI,IAAI;;;;CAIT,CAAC;IAEA,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAc,EAAE,IAAc;IAC1D,IAAI,IAAI,GAAG,SAAS,MAAM;;;uCAGW,MAAM,CAAC,WAAW,EAAE;;;;;;;;;UASjD,MAAM,CAAC,WAAW,EAAE,YAAY,MAAM,CAAC,WAAW,EAAE;;;;;CAK7D,CAAC;IAEA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,IAAI,IAAI,sCAAsC,CAAC;QAC/C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,IAAI,SAAS,GAAG,0BAA0B,CAAC;QACjD,CAAC;IACH,CAAC;IAED,IAAI,IAAI;;;;CAIT,CAAC;IAEA,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAc,EAAE,IAAc;IAC1D,IAAI,IAAI,GAAG,SAAS,MAAM;;;uCAGW,MAAM,CAAC,WAAW,EAAE;;;;;;UAMjD,MAAM,CAAC,WAAW,EAAE,YAAY,MAAM,CAAC,WAAW,EAAE;;;CAG7D,CAAC;IAEA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,IAAI,IAAI,yEAAyE,CAAC;QAClF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,IAAI,SAAS,GAAG,0BAA0B,CAAC;QACjD,CAAC;IACH,CAAC;IAED,IAAI,IAAI;;;;CAIT,CAAC;IAEA,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * codebakers_generate_unit_tests
3
+ *
4
+ * Vitest Unit Test Generator
5
+ *
6
+ * Generates unit tests for components, stores, and API routes
7
+ */
8
+ interface TestArgs {
9
+ file_path: string;
10
+ test_type: 'component' | 'store' | 'api';
11
+ }
12
+ export declare function generateUnitTests(args: TestArgs): Promise<string>;
13
+ export {};
14
+ //# sourceMappingURL=generate-unit-tests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-unit-tests.d.ts","sourceRoot":"","sources":["../../src/tools/generate-unit-tests.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,UAAU,QAAQ;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,WAAW,GAAG,OAAO,GAAG,KAAK,CAAC;CAC1C;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CA4EvE"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * codebakers_generate_unit_tests
3
+ *
4
+ * Vitest Unit Test Generator
5
+ *
6
+ * Generates unit tests for components, stores, and API routes
7
+ */
8
+ import * as fs from 'fs/promises';
9
+ import * as path from 'path';
10
+ export async function generateUnitTests(args) {
11
+ const cwd = process.cwd();
12
+ const { file_path, test_type } = args;
13
+ const testPath = file_path.replace(/\.(tsx?|js)$/, '.test.$1');
14
+ let code = '';
15
+ if (test_type === 'component') {
16
+ code = `import { describe, it, expect, vi } from 'vitest';
17
+ import { render, screen } from '@testing-library/react';
18
+ import { Component } from './component';
19
+
20
+ describe('Component', () => {
21
+ it('renders loading state', () => {
22
+ render(<Component />);
23
+ expect(screen.getByRole('status')).toBeInTheDocument();
24
+ });
25
+
26
+ it('renders error state', () => {
27
+ render(<Component />);
28
+ expect(screen.getByRole('alert')).toBeInTheDocument();
29
+ });
30
+
31
+ it('renders empty state', () => {
32
+ render(<Component />);
33
+ expect(screen.getByText(/No items/)).toBeInTheDocument();
34
+ });
35
+
36
+ it('renders success state', () => {
37
+ render(<Component />);
38
+ expect(screen.getByText('Item')).toBeInTheDocument();
39
+ });
40
+ });
41
+ `;
42
+ }
43
+ else if (test_type === 'store') {
44
+ code = `import { describe, it, expect, beforeEach } from 'vitest';
45
+ import { renderHook, act } from '@testing-library/react';
46
+ import { useStore } from './store';
47
+
48
+ describe('Store', () => {
49
+ beforeEach(() => {
50
+ useStore.setState({ items: [], loading: false, error: null });
51
+ });
52
+
53
+ it('fetches items', async () => {
54
+ const { result } = renderHook(() => useStore());
55
+ await act(async () => {
56
+ await result.current.fetchItems();
57
+ });
58
+ expect(result.current.items).toHaveLength(0);
59
+ });
60
+ });
61
+ `;
62
+ }
63
+ else {
64
+ code = `import { describe, it, expect } from 'vitest';
65
+ import { GET } from './route';
66
+
67
+ describe('API Route', () => {
68
+ it('returns data', async () => {
69
+ const req = new Request('http://localhost/api/test');
70
+ const res = await GET(req);
71
+ expect(res.status).toBe(200);
72
+ });
73
+ });
74
+ `;
75
+ }
76
+ const fullPath = path.join(cwd, testPath);
77
+ await fs.writeFile(fullPath, code, 'utf-8');
78
+ return `🍞 CodeBakers: Unit Tests Generated
79
+
80
+ **File:** ${testPath}
81
+ **Type:** ${test_type}
82
+
83
+ ✅ Test file created (Vitest)`;
84
+ }
85
+ //# sourceMappingURL=generate-unit-tests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-unit-tests.js","sourceRoot":"","sources":["../../src/tools/generate-unit-tests.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAO7B,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAc;IACpD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAEtC,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IAC/D,IAAI,IAAI,GAAG,EAAE,CAAC;IAEd,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;QAC9B,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyBV,CAAC;IACA,CAAC;SAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QACjC,IAAI,GAAG;;;;;;;;;;;;;;;;;CAiBV,CAAC;IACA,CAAC;SAAM,CAAC;QACN,IAAI,GAAG;;;;;;;;;;CAUV,CAAC;IACA,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC1C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAE5C,OAAO;;YAEG,QAAQ;YACR,SAAS;;6BAEQ,CAAC;AAC9B,CAAC"}