@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,371 @@
1
+ /**
2
+ * codebakers_run_interview
3
+ *
4
+ * Automated Interview Agent (Phase 1)
5
+ *
6
+ * Automates project interview to generate:
7
+ * - project-profile.md (intent, external services, constraints)
8
+ * - FLOWS.md (all user flows with status)
9
+ * - CREDENTIALS-NEEDED.md (external actions needed)
10
+ * - BRAIN.md initialization
11
+ *
12
+ * Reads from (if exist):
13
+ * - refs/prd/ (requirements)
14
+ * - refs/design/ (mockups - uses DESIGN-CONTRACT.md if exists)
15
+ * - refs/api/ (API docs)
16
+ * - INTEGRATION-CONFIG.md (if integrations tested)
17
+ *
18
+ * Output: Complete Phase 1 artifacts ready for Phase 2
19
+ */
20
+ import * as fs from 'fs/promises';
21
+ import * as path from 'path';
22
+ export async function runInterview(args) {
23
+ const cwd = process.cwd();
24
+ const description = args.project_description || '';
25
+ console.error('šŸž CodeBakers: Automated Interview (Phase 1)');
26
+ try {
27
+ // Gather context from refs/
28
+ const context = await gatherContext(cwd);
29
+ // Generate interview result
30
+ const result = await generateInterviewResult(description, context);
31
+ // Write artifacts
32
+ await writeProjectProfile(cwd, result);
33
+ await writeFlows(cwd, result);
34
+ await writeCredentialsNeeded(cwd, result);
35
+ await initializeBrain(cwd, result);
36
+ // Generate report
37
+ const report = generateInterviewReport(result);
38
+ return report;
39
+ }
40
+ catch (error) {
41
+ console.error('Error during interview:', error);
42
+ return `šŸž CodeBakers: Interview Failed
43
+
44
+ Error: ${error instanceof Error ? error.message : String(error)}`;
45
+ }
46
+ }
47
+ async function gatherContext(cwd) {
48
+ const context = {
49
+ has_prd: false,
50
+ has_mockups: false,
51
+ has_design_contract: false,
52
+ has_integration_config: false,
53
+ prd_content: '',
54
+ mockup_count: 0,
55
+ integrations: [],
56
+ };
57
+ // Check refs/prd/
58
+ const prdPath = path.join(cwd, 'refs', 'prd');
59
+ const prdExists = await fs.access(prdPath).then(() => true).catch(() => false);
60
+ if (prdExists) {
61
+ const files = await fs.readdir(prdPath);
62
+ if (files.length > 0) {
63
+ context.has_prd = true;
64
+ const firstFile = files[0];
65
+ context.prd_content = await fs.readFile(path.join(prdPath, firstFile), 'utf-8');
66
+ }
67
+ }
68
+ // Check refs/design/
69
+ const designPath = path.join(cwd, 'refs', 'design');
70
+ const designExists = await fs.access(designPath).then(() => true).catch(() => false);
71
+ if (designExists) {
72
+ const files = await fs.readdir(designPath);
73
+ context.mockup_count = files.filter(f => f.endsWith('.html') || f.endsWith('.png')).length;
74
+ context.has_mockups = context.mockup_count > 0;
75
+ }
76
+ // Check DESIGN-CONTRACT.md
77
+ const designContractPath = path.join(cwd, 'DESIGN-CONTRACT.md');
78
+ context.has_design_contract = await fs.access(designContractPath).then(() => true).catch(() => false);
79
+ // Check INTEGRATION-CONFIG.md
80
+ const integrationPath = path.join(cwd, 'INTEGRATION-CONFIG.md');
81
+ context.has_integration_config = await fs.access(integrationPath).then(() => true).catch(() => false);
82
+ if (context.has_integration_config) {
83
+ const content = await fs.readFile(integrationPath, 'utf-8');
84
+ // Simple parse: extract integration names
85
+ const matches = content.matchAll(/## Integration: (.+)/g);
86
+ for (const match of matches) {
87
+ context.integrations.push(match[1]);
88
+ }
89
+ }
90
+ return context;
91
+ }
92
+ async function generateInterviewResult(description, context) {
93
+ // Infer project type
94
+ let projectType = 'webapp';
95
+ let projectName = 'MyApp';
96
+ if (description.toLowerCase().includes('email')) {
97
+ projectType = 'email';
98
+ projectName = 'EmailApp';
99
+ }
100
+ else if (description.toLowerCase().includes('crm')) {
101
+ projectType = 'crm';
102
+ projectName = 'CRM';
103
+ }
104
+ else if (description.toLowerCase().includes('dashboard')) {
105
+ projectType = 'dashboard';
106
+ projectName = 'Dashboard';
107
+ }
108
+ // Extract entities from description
109
+ const coreEntities = [];
110
+ if (projectType === 'email') {
111
+ coreEntities.push('Message', 'Folder', 'Label', 'User');
112
+ }
113
+ else if (projectType === 'crm') {
114
+ coreEntities.push('Contact', 'Deal', 'Activity', 'User');
115
+ }
116
+ else if (projectType === 'dashboard') {
117
+ coreEntities.push('Metric', 'Chart', 'Report', 'User');
118
+ }
119
+ else {
120
+ coreEntities.push('User', 'Item');
121
+ }
122
+ // Generate user flows
123
+ const userFlows = [];
124
+ if (projectType === 'email') {
125
+ userFlows.push({ name: 'View inbox', description: 'User sees list of messages', steps: ['Load messages', 'Display list', 'Show unread count'], priority: 'P0', status: 'pending' }, { name: 'Read message', description: 'User opens and reads message', steps: ['Click message', 'Load content', 'Mark as read'], priority: 'P0', status: 'pending' }, { name: 'Send message', description: 'User composes and sends message', steps: ['Open composer', 'Enter recipients', 'Write message', 'Send'], priority: 'P0', status: 'pending' }, { name: 'Delete message', description: 'User deletes message', steps: ['Select message', 'Click delete', 'Confirm', 'Update UI'], priority: 'P1', status: 'pending' }, { name: 'Search messages', description: 'User searches for messages', steps: ['Enter query', 'Execute search', 'Display results'], priority: 'P1', status: 'pending' });
126
+ }
127
+ else {
128
+ userFlows.push({ name: 'User login', description: 'User authenticates', steps: ['Enter credentials', 'Submit', 'Redirect to app'], priority: 'P0', status: 'pending' }, { name: 'View list', description: 'User sees list of items', steps: ['Load items', 'Display list'], priority: 'P0', status: 'pending' }, { name: 'Create item', description: 'User creates new item', steps: ['Open form', 'Fill fields', 'Submit', 'Update list'], priority: 'P0', status: 'pending' });
129
+ }
130
+ // External services
131
+ const externalServices = [];
132
+ if (context.has_integration_config) {
133
+ for (const integration of context.integrations) {
134
+ externalServices.push({
135
+ name: integration,
136
+ purpose: 'External integration',
137
+ auth_method: 'OAuth 2.0',
138
+ credentials_needed: ['CLIENT_ID', 'CLIENT_SECRET'],
139
+ });
140
+ }
141
+ }
142
+ // Tech stack (CodeBakers standard)
143
+ const techStack = {
144
+ database: 'PostgreSQL (Supabase)',
145
+ backend: 'Next.js Server Actions',
146
+ frontend: 'Next.js 14 App Router + React',
147
+ auth: 'Supabase Auth',
148
+ };
149
+ return {
150
+ project_name: projectName,
151
+ project_type: projectType,
152
+ core_entities: coreEntities,
153
+ user_flows: userFlows,
154
+ external_services: externalServices,
155
+ tech_stack: techStack,
156
+ };
157
+ }
158
+ async function writeProjectProfile(cwd, result) {
159
+ const content = `# Project Profile
160
+
161
+ **Project:** ${result.project_name}
162
+ **Type:** ${result.project_type}
163
+ **Generated:** ${new Date().toISOString()}
164
+
165
+ ## Core Entities
166
+
167
+ ${result.core_entities.map(e => `- ${e}`).join('\n')}
168
+
169
+ ## Tech Stack
170
+
171
+ - **Database:** ${result.tech_stack.database}
172
+ - **Backend:** ${result.tech_stack.backend}
173
+ - **Frontend:** ${result.tech_stack.frontend}
174
+ - **Auth:** ${result.tech_stack.auth}
175
+
176
+ ## External Services
177
+
178
+ ${result.external_services.length > 0 ? result.external_services.map(s => `- ${s.name} (${s.purpose})`).join('\n') : 'None'}
179
+
180
+ ## Domain Context
181
+
182
+ Domain: ${result.project_type}
183
+
184
+ Auto-loaded domain file: agents/domains/${result.project_type}.md (if exists)
185
+
186
+ This provides domain-specific expectations:
187
+ - Feature defaults
188
+ - Field display logic
189
+ - UX patterns
190
+ - Mutation patterns
191
+ `;
192
+ await fs.writeFile(path.join(cwd, 'project-profile.md'), content, 'utf-8');
193
+ }
194
+ async function writeFlows(cwd, result) {
195
+ const content = `# User Flows
196
+
197
+ **Project:** ${result.project_name}
198
+ **Total flows:** ${result.user_flows.length}
199
+
200
+ ${result.user_flows.map((flow, i) => `
201
+ ## ${i + 1}. ${flow.name} (${flow.priority})
202
+
203
+ **Description:** ${flow.description}
204
+
205
+ **Steps:**
206
+ ${flow.steps.map((s, j) => `${j + 1}. ${s}`).join('\n')}
207
+
208
+ **Status:** ${flow.status}
209
+ `).join('\n')}
210
+
211
+ ## Flow Status Summary
212
+
213
+ - **P0 (Critical):** ${result.user_flows.filter(f => f.priority === 'P0').length} flows
214
+ - **P1 (Important):** ${result.user_flows.filter(f => f.priority === 'P1').length} flows
215
+ - **P2 (Nice to have):** ${result.user_flows.filter(f => f.priority === 'P2').length} flows
216
+
217
+ **Pending:** ${result.user_flows.filter(f => f.status === 'pending').length}
218
+ **In progress:** ${result.user_flows.filter(f => f.status === 'in_progress').length}
219
+ **Complete:** ${result.user_flows.filter(f => f.status === 'complete').length}
220
+ `;
221
+ await fs.writeFile(path.join(cwd, 'FLOWS.md'), content, 'utf-8');
222
+ }
223
+ async function writeCredentialsNeeded(cwd, result) {
224
+ if (result.external_services.length === 0) {
225
+ return; // No credentials needed
226
+ }
227
+ const content = `# Credentials Needed
228
+
229
+ **Project:** ${result.project_name}
230
+
231
+ ${result.external_services.map(service => `
232
+ ## ${service.name}
233
+
234
+ **Purpose:** ${service.purpose}
235
+ **Auth method:** ${service.auth_method}
236
+
237
+ **Environment variables needed:**
238
+
239
+ ${service.credentials_needed.map(cred => `\`\`\`bash
240
+ ${cred}=[your-${cred.toLowerCase()}]
241
+ \`\`\``).join('\n\n')}
242
+
243
+ Add to \`.env.local\`:
244
+ \`\`\`
245
+ ${service.credentials_needed.map(cred => `${cred}=`).join('\n')}
246
+ \`\`\`
247
+
248
+ **Setup instructions:** See INTEGRATION-CONFIG.md for ${service.name}
249
+ `).join('\n')}
250
+ `;
251
+ const credsPath = path.join(cwd, '.codebakers', 'CREDENTIALS-NEEDED.md');
252
+ await fs.mkdir(path.dirname(credsPath), { recursive: true });
253
+ await fs.writeFile(credsPath, content, 'utf-8');
254
+ }
255
+ async function initializeBrain(cwd, result) {
256
+ const content = `# BRAIN.md
257
+
258
+ **Project:** ${result.project_name}
259
+ **Type:** ${result.project_type}
260
+ **Initialized:** ${new Date().toISOString()}
261
+
262
+ ## Project Intent
263
+
264
+ Building: ${result.project_name} (${result.project_type})
265
+
266
+ Core entities: ${result.core_entities.join(', ')}
267
+
268
+ ## Tech Stack (CodeBakers Standard)
269
+
270
+ - Database: ${result.tech_stack.database}
271
+ - Backend: ${result.tech_stack.backend}
272
+ - Frontend: ${result.tech_stack.frontend}
273
+ - Auth: ${result.tech_stack.auth}
274
+
275
+ ## Current Phase
276
+
277
+ **Phase:** 1 (Interview complete)
278
+
279
+ **Next:** Phase 2 (Deep Analysis)
280
+
281
+ Recommended next steps:
282
+ 1. codebakers_validate_mockups (if mockups provided)
283
+ 2. codebakers_analyze_mockups (after validation)
284
+ 3. codebakers_generate_schema
285
+ 4. codebakers_map_dependencies
286
+
287
+ ## Architectural Decisions
288
+
289
+ 1. **Stack:** Supabase + Next.js 14 (CodeBakers standard - not negotiable)
290
+ 2. **Auth:** Supabase Auth only (no NextAuth, Auth0, Clerk)
291
+ 3. **State:** Zustand stores (mapped with codebakers_map_dependencies)
292
+ 4. **Testing:** Vitest (unit) + Playwright (E2E)
293
+ 5. **Versioning:** Exact versions only (no ^ or ~)
294
+
295
+ ## External Services
296
+
297
+ ${result.external_services.length > 0 ? result.external_services.map(s => `- ${s.name}`).join('\n') : 'None'}
298
+
299
+ ${result.external_services.length > 0 ? '\n**Action required:** Add credentials to .env.local (see CREDENTIALS-NEEDED.md)' : ''}
300
+
301
+ ## Flows
302
+
303
+ Total: ${result.user_flows.length} user flows
304
+
305
+ See FLOWS.md for complete list.
306
+
307
+ ## Memory Files
308
+
309
+ - āœ… project-profile.md (created)
310
+ - āœ… FLOWS.md (created)
311
+ - āœ… BRAIN.md (this file)
312
+ ${result.external_services.length > 0 ? '- āœ… CREDENTIALS-NEEDED.md (created)' : ''}
313
+ - ā³ DEPENDENCY-MAP.md (pending - run after schema)
314
+ - ā³ BUILD-LOG.md (pending - starts with first build)
315
+ - ā³ ERROR-LOG.md (pending - starts with first error)
316
+ `;
317
+ const brainPath = path.join(cwd, '.codebakers', 'BRAIN.md');
318
+ await fs.mkdir(path.dirname(brainPath), { recursive: true });
319
+ await fs.writeFile(brainPath, content, 'utf-8');
320
+ }
321
+ function generateInterviewReport(result) {
322
+ let report = `šŸž CodeBakers: Interview Complete\n\n`;
323
+ report += `**Project:** ${result.project_name}\n`;
324
+ report += `**Type:** ${result.project_type}\n\n`;
325
+ report += `---\n\n`;
326
+ report += `## āœ… Artifacts Generated\n\n`;
327
+ report += `- **project-profile.md** - Project overview, entities, tech stack\n`;
328
+ report += `- **FLOWS.md** - ${result.user_flows.length} user flows (${result.user_flows.filter(f => f.priority === 'P0').length} P0, ${result.user_flows.filter(f => f.priority === 'P1').length} P1)\n`;
329
+ report += `- **.codebakers/BRAIN.md** - Master project state\n`;
330
+ if (result.external_services.length > 0) {
331
+ report += `- **.codebakers/CREDENTIALS-NEEDED.md** - ${result.external_services.length} external service(s)\n`;
332
+ }
333
+ report += `\n---\n\n`;
334
+ report += `## šŸ“‹ Project Summary\n\n`;
335
+ report += `**Core entities:** ${result.core_entities.join(', ')}\n`;
336
+ report += `**User flows:** ${result.user_flows.length}\n`;
337
+ report += `**External services:** ${result.external_services.length}\n\n`;
338
+ report += `**Tech stack:**\n`;
339
+ report += `- ${result.tech_stack.database}\n`;
340
+ report += `- ${result.tech_stack.backend}\n`;
341
+ report += `- ${result.tech_stack.frontend}\n`;
342
+ report += `- ${result.tech_stack.auth}\n\n`;
343
+ report += `---\n\n`;
344
+ if (result.external_services.length > 0) {
345
+ report += `## āš ļø Action Required\n\n`;
346
+ report += `External services detected. Add credentials to \`.env.local\`:\n\n`;
347
+ for (const service of result.external_services) {
348
+ report += `**${service.name}:**\n`;
349
+ for (const cred of service.credentials_needed) {
350
+ report += `- ${cred}=[your-value]\n`;
351
+ }
352
+ report += `\n`;
353
+ }
354
+ report += `See: .codebakers/CREDENTIALS-NEEDED.md\n\n`;
355
+ report += `---\n\n`;
356
+ }
357
+ report += `## Next Steps\n\n`;
358
+ report += `**Phase 1 complete** → Moving to Phase 2 (Deep Analysis)\n\n`;
359
+ report += `Recommended sequence:\n`;
360
+ report += `1. **codebakers_validate_mockups** (if mockups in refs/design/)\n`;
361
+ report += `2. **codebakers_fix_mockups** (auto-fix quality issues)\n`;
362
+ report += `3. **codebakers_verify_mockups** (100% quality check)\n`;
363
+ report += `4. **codebakers_analyze_mockups** (extract data from perfect mockups)\n`;
364
+ report += `5. **codebakers_generate_schema** (database from mockups)\n`;
365
+ report += `6. **codebakers_map_dependencies** (dependency graph)\n`;
366
+ report += `7. **codebakers_check_gate { phase: 2 }** (verify Phase 2 complete)\n\n`;
367
+ report += `Then: Ready for autonomous build\n`;
368
+ report += `→ **codebakers_autonomous_build { mode: "full" }**\n`;
369
+ return report;
370
+ }
371
+ //# sourceMappingURL=run-interview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-interview.js","sourceRoot":"","sources":["../../src/tools/run-interview.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * codebakers_run_tests
3
+ *
4
+ * Test Orchestrator - Runs Vitest and Playwright tests
5
+ */
6
+ interface TestArgs {
7
+ test_type: 'unit' | 'e2e' | 'all';
8
+ mode?: 'fast' | 'full';
9
+ }
10
+ export declare function runTests(args: TestArgs): Promise<string>;
11
+ export {};
12
+ //# sourceMappingURL=run-tests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-tests.d.ts","sourceRoot":"","sources":["../../src/tools/run-tests.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,UAAU,QAAQ;IAChB,SAAS,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAwB9D"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * codebakers_run_tests
3
+ *
4
+ * Test Orchestrator - Runs Vitest and Playwright tests
5
+ */
6
+ import { exec } from 'child_process';
7
+ import { promisify } from 'util';
8
+ const execAsync = promisify(exec);
9
+ export async function runTests(args) {
10
+ const { test_type, mode = 'full' } = args;
11
+ console.error('šŸž CodeBakers: Running Tests');
12
+ let results = '';
13
+ try {
14
+ if (test_type === 'unit' || test_type === 'all') {
15
+ console.error('Running unit tests (Vitest)...');
16
+ const { stdout } = await execAsync('vitest run', { cwd: process.cwd() });
17
+ results += `## Unit Tests (Vitest)\n\n${stdout}\n\n`;
18
+ }
19
+ if (test_type === 'e2e' || test_type === 'all') {
20
+ console.error('Running E2E tests (Playwright)...');
21
+ const { stdout } = await execAsync('playwright test', { cwd: process.cwd() });
22
+ results += `## E2E Tests (Playwright)\n\n${stdout}\n\n`;
23
+ }
24
+ return `šŸž CodeBakers: Test Results\n\n${results}\nāœ… All tests passed`;
25
+ }
26
+ catch (error) {
27
+ return `šŸž CodeBakers: Tests Failed\n\n${results}\n\nāŒ Error: ${error instanceof Error ? error.message : String(error)}`;
28
+ }
29
+ }
30
+ //# sourceMappingURL=run-tests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-tests.js","sourceRoot":"","sources":["../../src/tools/run-tests.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAOlC,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAc;IAC3C,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IAE1C,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAE9C,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,IAAI,CAAC;QACH,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YAChD,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAChD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACzE,OAAO,IAAI,6BAA6B,MAAM,MAAM,CAAC;QACvD,CAAC;QAED,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YAC/C,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACnD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,iBAAiB,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC9E,OAAO,IAAI,gCAAgC,MAAM,MAAM,CAAC;QAC1D,CAAC;QAED,OAAO,kCAAkC,OAAO,sBAAsB,CAAC;IACzE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,kCAAkC,OAAO,gBAAgB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IAC3H,CAAC;AACH,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * codebakers_scan_security
3
+ *
4
+ * Security Vulnerability Scanner
5
+ *
6
+ * Scans for:
7
+ * - Dependency vulnerabilities (npm audit)
8
+ * - XSS vulnerabilities
9
+ * - SQL injection risks
10
+ * - Exposed secrets
11
+ * - Insecure authentication patterns
12
+ * - Missing security headers
13
+ */
14
+ interface SecurityArgs {
15
+ block_on_critical?: boolean;
16
+ }
17
+ export declare function scanSecurity(args?: SecurityArgs): Promise<string>;
18
+ export {};
19
+ //# sourceMappingURL=scan-security.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan-security.d.ts","sourceRoot":"","sources":["../../src/tools/scan-security.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,UAAU,YAAY;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAYD,wBAAsB,YAAY,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyC3E"}