@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 @@
1
+ {"version":3,"file":"generate-docs.js","sourceRoot":"","sources":["../../src/tools/generate-docs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * codebakers_generate_e2e_tests
3
+ *
4
+ * Playwright E2E Test Generator
5
+ */
6
+ interface E2EArgs {
7
+ flow_name: string;
8
+ steps: string[];
9
+ }
10
+ export declare function generateE2ETests(args: E2EArgs): Promise<string>;
11
+ export {};
12
+ //# sourceMappingURL=generate-e2e-tests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-e2e-tests.d.ts","sourceRoot":"","sources":["../../src/tools/generate-e2e-tests.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,UAAU,OAAO;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA+BrE"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * codebakers_generate_e2e_tests
3
+ *
4
+ * Playwright E2E Test Generator
5
+ */
6
+ import * as fs from 'fs/promises';
7
+ import * as path from 'path';
8
+ export async function generateE2ETests(args) {
9
+ const cwd = process.cwd();
10
+ const { flow_name, steps } = args;
11
+ const fileName = flow_name.toLowerCase().replace(/\s+/g, '-');
12
+ const code = `import { test, expect } from '@playwright/test';
13
+
14
+ test.describe('${flow_name}', () => {
15
+ test.beforeEach(async ({ page }) => {
16
+ await page.goto('/');
17
+ });
18
+
19
+ test('${flow_name} flow', async ({ page }) => {
20
+ ${steps.map((step, i) => `// Step ${i + 1}: ${step}`).join('\n ')}
21
+
22
+ await expect(page).toHaveURL('/');
23
+ });
24
+ });
25
+ `;
26
+ const filePath = path.join(cwd, `e2e/${fileName}.spec.ts`);
27
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
28
+ await fs.writeFile(filePath, code, 'utf-8');
29
+ return `🍞 CodeBakers: E2E Tests Generated
30
+
31
+ **File:** e2e/${fileName}.spec.ts
32
+ **Flow:** ${flow_name}
33
+ **Steps:** ${steps.length}
34
+
35
+ ✅ Playwright test created`;
36
+ }
37
+ //# sourceMappingURL=generate-e2e-tests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-e2e-tests.js","sourceRoot":"","sources":["../../src/tools/generate-e2e-tests.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAO7B,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAa;IAClD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAElC,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG;;iBAEE,SAAS;;;;;UAKhB,SAAS;MACb,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;;;;;CAKvE,CAAC;IAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,QAAQ,UAAU,CAAC,CAAC;IAC3D,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;;gBAEO,QAAQ;YACZ,SAAS;aACR,KAAK,CAAC,MAAM;;0BAEC,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * codebakers_generate_migration
3
+ *
4
+ * Database Migration Generator
5
+ *
6
+ * Generates Supabase/PostgreSQL migration files from entity definitions.
7
+ * Includes: tables, columns, foreign keys, indexes, RLS policies
8
+ */
9
+ interface MigrationArgs {
10
+ entity: string;
11
+ fields: {
12
+ name: string;
13
+ type: string;
14
+ required?: boolean;
15
+ references?: string;
16
+ }[];
17
+ add_rls?: boolean;
18
+ }
19
+ export declare function generateMigration(args: MigrationArgs): Promise<string>;
20
+ export {};
21
+ //# sourceMappingURL=generate-migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-migration.d.ts","sourceRoot":"","sources":["../../src/tools/generate-migration.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAClF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CA4E5E"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * codebakers_generate_migration
3
+ *
4
+ * Database Migration Generator
5
+ *
6
+ * Generates Supabase/PostgreSQL migration files from entity definitions.
7
+ * Includes: tables, columns, foreign keys, indexes, RLS policies
8
+ */
9
+ import * as fs from 'fs/promises';
10
+ import * as path from 'path';
11
+ export async function generateMigration(args) {
12
+ const cwd = process.cwd();
13
+ const { entity, fields, add_rls = true } = args;
14
+ console.error(`🍞 CodeBakers: Generating migration for ${entity}`);
15
+ try {
16
+ const tableName = entity.toLowerCase() + 's';
17
+ const timestamp = new Date().toISOString().replace(/[-:]/g, '').split('.')[0];
18
+ const filename = `${timestamp}_create_${tableName}.sql`;
19
+ let sql = `-- Create ${entity} table\n-- Generated by CodeBakers\n\n`;
20
+ // Extension
21
+ sql += `CREATE EXTENSION IF NOT EXISTS "uuid-ossp";\n\n`;
22
+ // Create table
23
+ sql += `CREATE TABLE ${tableName} (\n`;
24
+ sql += ` id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),\n`;
25
+ sql += ` user_id UUID REFERENCES auth.users NOT NULL,\n`;
26
+ for (const field of fields) {
27
+ const type = mapType(field.type);
28
+ const nullable = field.required ? ' NOT NULL' : '';
29
+ sql += ` ${field.name} ${type}${nullable},\n`;
30
+ }
31
+ sql += ` created_at TIMESTAMPTZ DEFAULT NOW(),\n`;
32
+ sql += ` updated_at TIMESTAMPTZ DEFAULT NOW()\n`;
33
+ sql += `);\n\n`;
34
+ // Indexes
35
+ sql += `CREATE INDEX idx_${tableName}_user_id ON ${tableName}(user_id);\n`;
36
+ sql += `CREATE INDEX idx_${tableName}_created_at ON ${tableName}(created_at DESC);\n\n`;
37
+ // RLS
38
+ if (add_rls) {
39
+ sql += `ALTER TABLE ${tableName} ENABLE ROW LEVEL SECURITY;\n\n`;
40
+ sql += `CREATE POLICY "Users see own ${tableName}"\nON ${tableName} FOR SELECT\nUSING (auth.uid() = user_id);\n\n`;
41
+ sql += `CREATE POLICY "Users insert own ${tableName}"\nON ${tableName} FOR INSERT\nWITH CHECK (auth.uid() = user_id);\n\n`;
42
+ sql += `CREATE POLICY "Users update own ${tableName}"\nON ${tableName} FOR UPDATE\nUSING (auth.uid() = user_id);\n\n`;
43
+ sql += `CREATE POLICY "Users delete own ${tableName}"\nON ${tableName} FOR DELETE\nUSING (auth.uid() = user_id);\n`;
44
+ }
45
+ // Write file
46
+ const migrationDir = path.join(cwd, 'supabase', 'migrations');
47
+ await fs.mkdir(migrationDir, { recursive: true });
48
+ const migrationPath = path.join(migrationDir, filename);
49
+ await fs.writeFile(migrationPath, sql, 'utf-8');
50
+ return `🍞 CodeBakers: Migration Generated
51
+
52
+ **File:** supabase/migrations/${filename}
53
+ **Table:** ${tableName}
54
+ **Fields:** ${fields.length}
55
+ **RLS:** ${add_rls ? 'Enabled' : 'Disabled'}
56
+
57
+ Migration includes:
58
+ ✅ Table creation with UUID primary key
59
+ ✅ user_id foreign key (security)
60
+ ✅ Timestamps (created_at, updated_at)
61
+ ✅ Indexes (user_id, created_at)
62
+ ${add_rls ? '✅ RLS policies (user isolation)' : ''}
63
+
64
+ **Apply migration:**
65
+ \`\`\`bash
66
+ supabase db push
67
+ \`\`\`
68
+
69
+ Or manually:
70
+ \`\`\`bash
71
+ psql -f supabase/migrations/${filename}
72
+ \`\`\``;
73
+ }
74
+ catch (error) {
75
+ return `🍞 CodeBakers: Migration Failed\n\nError: ${error instanceof Error ? error.message : String(error)}`;
76
+ }
77
+ }
78
+ function mapType(type) {
79
+ const lower = type.toLowerCase();
80
+ if (lower === 'string')
81
+ return 'TEXT';
82
+ if (lower === 'number')
83
+ return 'INTEGER';
84
+ if (lower === 'boolean')
85
+ return 'BOOLEAN';
86
+ if (lower === 'date')
87
+ return 'TIMESTAMPTZ';
88
+ if (lower === 'uuid')
89
+ return 'UUID';
90
+ if (lower === 'json')
91
+ return 'JSONB';
92
+ return 'TEXT';
93
+ }
94
+ //# sourceMappingURL=generate-migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-migration.js","sourceRoot":"","sources":["../../src/tools/generate-migration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * codebakers_generate_schema
3
+ *
4
+ * Phase 2B: Schema Generation
5
+ * Generates complete database schema from mockup analysis
6
+ *
7
+ * Based on CodeBakers Method Phase 2B requirements:
8
+ * - All tables with full column definitions (name, type, nullable, default, constraints)
9
+ * - All foreign key relationships and join tables
10
+ * - All indexes required for the query patterns revealed by mockups
11
+ * - All enum types and value sets
12
+ * - Row-level security policies where applicable
13
+ * - Seed data requirements for development
14
+ */
15
+ export declare function generateSchema(args: {
16
+ analysis_file?: string;
17
+ }): Promise<string>;
18
+ //# sourceMappingURL=generate-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-schema.d.ts","sourceRoot":"","sources":["../../src/tools/generate-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA6BH,wBAAsB,cAAc,CAAC,IAAI,EAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAkFtF"}
@@ -0,0 +1,422 @@
1
+ /**
2
+ * codebakers_generate_schema
3
+ *
4
+ * Phase 2B: Schema Generation
5
+ * Generates complete database schema from mockup analysis
6
+ *
7
+ * Based on CodeBakers Method Phase 2B requirements:
8
+ * - All tables with full column definitions (name, type, nullable, default, constraints)
9
+ * - All foreign key relationships and join tables
10
+ * - All indexes required for the query patterns revealed by mockups
11
+ * - All enum types and value sets
12
+ * - Row-level security policies where applicable
13
+ * - Seed data requirements for development
14
+ */
15
+ import * as fs from 'fs/promises';
16
+ import * as path from 'path';
17
+ export async function generateSchema(args) {
18
+ const cwd = process.cwd();
19
+ const analysisFile = args.analysis_file || '.codebakers/MOCK-ANALYSIS.md';
20
+ const analysisPath = path.join(cwd, analysisFile);
21
+ console.error('🍞 CodeBakers: Phase 2B — Schema Generation');
22
+ console.error(`Reading analysis from: ${analysisPath}`);
23
+ try {
24
+ // 1. CHECK IF ANALYSIS FILE EXISTS
25
+ const exists = await fs.access(analysisPath).then(() => true).catch(() => false);
26
+ if (!exists) {
27
+ return `🍞 CodeBakers: Phase 2B - Schema Generation
28
+
29
+ ❌ BLOCKER: Mock analysis file not found
30
+
31
+ Expected location: ${analysisPath}
32
+
33
+ Phase 2B cannot proceed without Phase 2A analysis.
34
+
35
+ Next step: Run Phase 2A first (use tool: codebakers_analyze_mockups_deep)`;
36
+ }
37
+ // 2. READ MOCK-ANALYSIS.md
38
+ const analysisContent = await fs.readFile(analysisPath, 'utf-8');
39
+ // 3. PARSE ANALYSIS FILE TO EXTRACT SCHEMA REQUIREMENTS
40
+ const { tables, enums } = parseAnalysisForSchema(analysisContent);
41
+ if (tables.length === 0) {
42
+ return `🍞 CodeBakers: Phase 2B - Schema Generation
43
+
44
+ ⚠️ WARNING: No entities found in analysis file
45
+
46
+ The mock analysis appears incomplete or empty.
47
+
48
+ Please verify Phase 2A analysis contains data fields and entities.`;
49
+ }
50
+ console.error(`Extracted ${tables.length} tables and ${enums.length} enum types`);
51
+ // 4. GENERATE SQL SCHEMA
52
+ const schema = generateSQLSchema(tables, enums);
53
+ // 5. WRITE SCHEMA.sql
54
+ const schemaPath = path.join(cwd, '.codebakers', 'SCHEMA.sql');
55
+ await fs.writeFile(schemaPath, schema, 'utf-8');
56
+ console.error(`✓ Schema generated: ${schemaPath}`);
57
+ // 6. GENERATE SUMMARY
58
+ const summary = generateSchemaSummary(tables, enums);
59
+ return `🍞 CodeBakers: Phase 2B - Schema Generation Complete
60
+
61
+ ${summary}
62
+
63
+ 📄 Schema written to: .codebakers/SCHEMA.sql
64
+
65
+ Next steps:
66
+ 1. Review SCHEMA.sql to verify all tables and relationships
67
+ 2. Proceed to Phase 2C: Dependency Mapping (use tool: codebakers_map_dependencies)
68
+ 3. Run verification gate before Phase 3
69
+
70
+ Verification gate requirement:
71
+ → Every data field in mockups has corresponding database column
72
+ → All entity relationships captured in foreign keys
73
+ → No unresolved dependencies`;
74
+ }
75
+ catch (error) {
76
+ console.error('Error during schema generation:', error);
77
+ return `🍞 CodeBakers: Phase 2B - Schema Generation Failed
78
+
79
+ Error: ${error instanceof Error ? error.message : String(error)}
80
+
81
+ Please check:
82
+ - Mock analysis file exists and is readable
83
+ - Analysis file contains entity and field data
84
+ - File permissions allow writing
85
+
86
+ If issue persists, log to ERROR-LOG.md and request human assistance.`;
87
+ }
88
+ }
89
+ /**
90
+ * Parse MOCK-ANALYSIS.md to extract schema requirements
91
+ */
92
+ function parseAnalysisForSchema(analysisContent) {
93
+ const tables = [];
94
+ const enums = [];
95
+ const entityFields = new Map();
96
+ const entityTypes = new Map();
97
+ const stateValues = new Map();
98
+ const relationships = [];
99
+ // PARSE DATA FIELDS FROM ANALYSIS
100
+ // Look for markdown tables with field information
101
+ const fieldTableRegex = /\| Field Name \| Data Type \| Source Entity[^\n]*\n\|[-\s|]+\n((?:\|[^\n]+\n)+)/g;
102
+ let match;
103
+ while ((match = fieldTableRegex.exec(analysisContent)) !== null) {
104
+ const tableContent = match[1];
105
+ const rows = tableContent.trim().split('\n');
106
+ for (const row of rows) {
107
+ const cols = row.split('|').map(c => c.trim()).filter(c => c);
108
+ if (cols.length >= 3) {
109
+ const fieldName = cols[0];
110
+ const dataType = cols[1];
111
+ const sourceEntity = cols[2];
112
+ if (!entityFields.has(sourceEntity)) {
113
+ entityFields.set(sourceEntity, new Set());
114
+ entityTypes.set(sourceEntity, new Map());
115
+ }
116
+ entityFields.get(sourceEntity).add(fieldName);
117
+ entityTypes.get(sourceEntity).set(fieldName, dataType);
118
+ }
119
+ }
120
+ }
121
+ // PARSE FORM INPUTS
122
+ const inputTableRegex = /\| Input Name \| Type \| Target Entity[^\n]*\n\|[-\s|]+\n((?:\|[^\n]+\n)+)/g;
123
+ while ((match = inputTableRegex.exec(analysisContent)) !== null) {
124
+ const tableContent = match[1];
125
+ const rows = tableContent.trim().split('\n');
126
+ for (const row of rows) {
127
+ const cols = row.split('|').map(c => c.trim()).filter(c => c);
128
+ if (cols.length >= 3) {
129
+ const inputName = cols[0];
130
+ const inputType = cols[1];
131
+ const targetEntity = cols[2];
132
+ if (!entityFields.has(targetEntity)) {
133
+ entityFields.set(targetEntity, new Set());
134
+ entityTypes.set(targetEntity, new Map());
135
+ }
136
+ entityFields.get(targetEntity).add(inputName);
137
+ entityTypes.get(targetEntity).set(inputName, mapInputTypeToSQLType(inputType));
138
+ }
139
+ }
140
+ }
141
+ // PARSE RELATIONSHIPS
142
+ const relTableRegex = /\| From Entity \| To Entity \| Type[^\n]*\n\|[-\s|]+\n((?:\|[^\n]+\n)+)/g;
143
+ while ((match = relTableRegex.exec(analysisContent)) !== null) {
144
+ const tableContent = match[1];
145
+ const rows = tableContent.trim().split('\n');
146
+ for (const row of rows) {
147
+ const cols = row.split('|').map(c => c.trim()).filter(c => c);
148
+ if (cols.length >= 3) {
149
+ relationships.push({
150
+ from: cols[0],
151
+ to: cols[1],
152
+ type: cols[2],
153
+ });
154
+ }
155
+ }
156
+ }
157
+ // PARSE STATE VALUES (for enums)
158
+ const stateTableRegex = /\| Entity \| State Field \| Possible Values[^\n]*\n\|[-\s|]+\n((?:\|[^\n]+\n)+)/g;
159
+ while ((match = stateTableRegex.exec(analysisContent)) !== null) {
160
+ const tableContent = match[1];
161
+ const rows = tableContent.trim().split('\n');
162
+ for (const row of rows) {
163
+ const cols = row.split('|').map(c => c.trim()).filter(c => c);
164
+ if (cols.length >= 3) {
165
+ const entity = cols[0];
166
+ const stateField = cols[1];
167
+ const values = cols[2].split(',').map(v => v.trim());
168
+ const enumName = `${entity}_${stateField}`;
169
+ stateValues.set(enumName, values);
170
+ }
171
+ }
172
+ }
173
+ // GENERATE TABLES FROM ENTITIES
174
+ for (const [entityName, fields] of entityFields.entries()) {
175
+ if (entityName === 'unknown')
176
+ continue;
177
+ const table = {
178
+ name: pluralize(entityName),
179
+ columns: [],
180
+ indexes: [],
181
+ relationships: [],
182
+ row_level_security: true,
183
+ };
184
+ // Add standard columns
185
+ table.columns.push({
186
+ name: 'id',
187
+ type: 'uuid',
188
+ nullable: false,
189
+ default_value: 'gen_random_uuid()',
190
+ is_primary_key: true,
191
+ is_foreign_key: false,
192
+ unique: true,
193
+ });
194
+ // Add extracted fields
195
+ const types = entityTypes.get(entityName);
196
+ for (const field of Array.from(fields).sort()) {
197
+ if (field === 'id')
198
+ continue; // Already added
199
+ const dataType = types.get(field) || 'text';
200
+ table.columns.push({
201
+ name: field,
202
+ type: mapToPostgreSQLType(dataType),
203
+ nullable: !isRequiredField(field),
204
+ is_primary_key: false,
205
+ is_foreign_key: field.endsWith('_id'),
206
+ unique: field.includes('email') || field.includes('username'),
207
+ });
208
+ }
209
+ // Add foreign key relationships
210
+ for (const rel of relationships) {
211
+ if (rel.from === entityName) {
212
+ const fkColumn = `${rel.to}_id`;
213
+ if (!fields.has(fkColumn)) {
214
+ table.columns.push({
215
+ name: fkColumn,
216
+ type: 'uuid',
217
+ nullable: true,
218
+ is_primary_key: false,
219
+ is_foreign_key: true,
220
+ references: { table: pluralize(rel.to), column: 'id' },
221
+ unique: false,
222
+ });
223
+ }
224
+ table.relationships.push(`${rel.type} relationship to ${pluralize(rel.to)}`);
225
+ }
226
+ }
227
+ // Add user_id for multi-tenant RLS
228
+ if (!fields.has('user_id')) {
229
+ table.columns.push({
230
+ name: 'user_id',
231
+ type: 'uuid',
232
+ nullable: false,
233
+ is_primary_key: false,
234
+ is_foreign_key: true,
235
+ references: { table: 'users', column: 'id' },
236
+ unique: false,
237
+ });
238
+ }
239
+ // Add timestamps
240
+ table.columns.push({
241
+ name: 'created_at',
242
+ type: 'timestamptz',
243
+ nullable: false,
244
+ default_value: 'now()',
245
+ is_primary_key: false,
246
+ is_foreign_key: false,
247
+ unique: false,
248
+ });
249
+ table.columns.push({
250
+ name: 'updated_at',
251
+ type: 'timestamptz',
252
+ nullable: false,
253
+ default_value: 'now()',
254
+ is_primary_key: false,
255
+ is_foreign_key: false,
256
+ unique: false,
257
+ });
258
+ // Add indexes
259
+ table.indexes.push(`CREATE INDEX idx_${table.name}_user_id ON ${table.name}(user_id);`);
260
+ table.indexes.push(`CREATE INDEX idx_${table.name}_created_at ON ${table.name}(created_at);`);
261
+ // Add index for foreign keys
262
+ for (const col of table.columns) {
263
+ if (col.is_foreign_key && col.name !== 'user_id') {
264
+ table.indexes.push(`CREATE INDEX idx_${table.name}_${col.name} ON ${table.name}(${col.name});`);
265
+ }
266
+ }
267
+ tables.push(table);
268
+ }
269
+ // GENERATE ENUMS
270
+ for (const [enumName, values] of stateValues.entries()) {
271
+ enums.push({ name: enumName, values });
272
+ }
273
+ return { tables, enums };
274
+ }
275
+ /**
276
+ * Generate complete SQL schema
277
+ */
278
+ function generateSQLSchema(tables, enums) {
279
+ let sql = `-- CodeBakers Generated Schema\n`;
280
+ sql += `-- Generated: ${new Date().toISOString()}\n`;
281
+ sql += `-- Phase: 2B - Schema Generation\n`;
282
+ sql += `-- Stack: Supabase + PostgreSQL\n\n`;
283
+ sql += `-- This schema is derived from UI mockup analysis\n`;
284
+ sql += `-- Every table and column maps to actual UI requirements\n\n`;
285
+ // Enable UUID extension
286
+ sql += `-- Enable UUID extension\n`;
287
+ sql += `CREATE EXTENSION IF NOT EXISTS "uuid-ossp";\n\n`;
288
+ // Generate enums
289
+ if (enums.length > 0) {
290
+ sql += `-- ENUM TYPES\n\n`;
291
+ for (const enumType of enums) {
292
+ sql += `CREATE TYPE ${enumType.name} AS ENUM (\n`;
293
+ sql += enumType.values.map(v => ` '${v}'`).join(',\n');
294
+ sql += `\n);\n\n`;
295
+ }
296
+ }
297
+ // Generate tables
298
+ sql += `-- TABLES\n\n`;
299
+ for (const table of tables) {
300
+ sql += `CREATE TABLE ${table.name} (\n`;
301
+ // Columns
302
+ const columnDefs = [];
303
+ for (const col of table.columns) {
304
+ let def = ` ${col.name} ${col.type}`;
305
+ if (!col.nullable)
306
+ def += ' NOT NULL';
307
+ if (col.default_value)
308
+ def += ` DEFAULT ${col.default_value}`;
309
+ if (col.unique && !col.is_primary_key)
310
+ def += ' UNIQUE';
311
+ columnDefs.push(def);
312
+ }
313
+ // Primary key
314
+ const pkCols = table.columns.filter(c => c.is_primary_key).map(c => c.name);
315
+ if (pkCols.length > 0) {
316
+ columnDefs.push(` PRIMARY KEY (${pkCols.join(', ')})`);
317
+ }
318
+ // Foreign keys
319
+ for (const col of table.columns) {
320
+ if (col.is_foreign_key && col.references) {
321
+ columnDefs.push(` FOREIGN KEY (${col.name}) REFERENCES ${col.references.table}(${col.references.column}) ON DELETE CASCADE`);
322
+ }
323
+ }
324
+ sql += columnDefs.join(',\n');
325
+ sql += `\n);\n\n`;
326
+ // Indexes
327
+ if (table.indexes.length > 0) {
328
+ sql += `-- Indexes for ${table.name}\n`;
329
+ for (const idx of table.indexes) {
330
+ sql += `${idx}\n`;
331
+ }
332
+ sql += `\n`;
333
+ }
334
+ // Row-level security
335
+ if (table.row_level_security) {
336
+ sql += `-- Row-level security for ${table.name}\n`;
337
+ sql += `ALTER TABLE ${table.name} ENABLE ROW LEVEL SECURITY;\n\n`;
338
+ sql += `CREATE POLICY "Users can view their own ${table.name}"\n`;
339
+ sql += ` ON ${table.name}\n`;
340
+ sql += ` FOR SELECT\n`;
341
+ sql += ` USING (auth.uid() = user_id);\n\n`;
342
+ sql += `CREATE POLICY "Users can insert their own ${table.name}"\n`;
343
+ sql += ` ON ${table.name}\n`;
344
+ sql += ` FOR INSERT\n`;
345
+ sql += ` WITH CHECK (auth.uid() = user_id);\n\n`;
346
+ sql += `CREATE POLICY "Users can update their own ${table.name}"\n`;
347
+ sql += ` ON ${table.name}\n`;
348
+ sql += ` FOR UPDATE\n`;
349
+ sql += ` USING (auth.uid() = user_id);\n\n`;
350
+ sql += `CREATE POLICY "Users can delete their own ${table.name}"\n`;
351
+ sql += ` ON ${table.name}\n`;
352
+ sql += ` FOR DELETE\n`;
353
+ sql += ` USING (auth.uid() = user_id);\n\n`;
354
+ }
355
+ sql += `---\n\n`;
356
+ }
357
+ // Seed data section
358
+ sql += `-- SEED DATA\n`;
359
+ sql += `-- Add development seed data below\n\n`;
360
+ return sql;
361
+ }
362
+ /**
363
+ * Generate summary for tool response
364
+ */
365
+ function generateSchemaSummary(tables, enums) {
366
+ const totalColumns = tables.reduce((sum, t) => sum + t.columns.length, 0);
367
+ const totalIndexes = tables.reduce((sum, t) => sum + t.indexes.length, 0);
368
+ const totalRelationships = tables.reduce((sum, t) => sum + t.relationships.length, 0);
369
+ let summary = `✓ Generated ${tables.length} tables\n`;
370
+ summary += `✓ Generated ${totalColumns} columns\n`;
371
+ summary += `✓ Generated ${enums.length} enum types\n`;
372
+ summary += `✓ Generated ${totalIndexes} indexes\n`;
373
+ summary += `✓ Generated ${totalRelationships} relationships\n`;
374
+ summary += `✓ Row-level security enabled on all tables\n`;
375
+ return summary;
376
+ }
377
+ // HELPER FUNCTIONS
378
+ function pluralize(word) {
379
+ // Simple pluralization rules
380
+ if (word.endsWith('y'))
381
+ return word.slice(0, -1) + 'ies';
382
+ if (word.endsWith('s'))
383
+ return word + 'es';
384
+ return word + 's';
385
+ }
386
+ function mapToPostgreSQLType(dataType) {
387
+ const typeMap = {
388
+ 'text': 'text',
389
+ 'email': 'text',
390
+ 'phone': 'text',
391
+ 'url': 'text',
392
+ 'uuid': 'uuid',
393
+ 'number': 'integer',
394
+ 'decimal': 'numeric',
395
+ 'boolean': 'boolean',
396
+ 'timestamp': 'timestamptz',
397
+ 'date': 'date',
398
+ 'json': 'jsonb',
399
+ };
400
+ return typeMap[dataType.toLowerCase()] || 'text';
401
+ }
402
+ function mapInputTypeToSQLType(inputType) {
403
+ const typeMap = {
404
+ 'text': 'text',
405
+ 'email': 'email',
406
+ 'password': 'text',
407
+ 'number': 'number',
408
+ 'tel': 'phone',
409
+ 'url': 'url',
410
+ 'date': 'date',
411
+ 'datetime-local': 'timestamp',
412
+ 'checkbox': 'boolean',
413
+ 'textarea': 'text',
414
+ 'select': 'text',
415
+ };
416
+ return typeMap[inputType.toLowerCase()] || 'text';
417
+ }
418
+ function isRequiredField(fieldName) {
419
+ const requiredFields = ['id', 'user_id', 'created_at', 'updated_at', 'name', 'title'];
420
+ return requiredFields.includes(fieldName);
421
+ }
422
+ //# sourceMappingURL=generate-schema.js.map