@codebakers/mcp 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/INSTALL.md +221 -0
- package/LICENSE +21 -0
- package/README.md +412 -0
- package/dist/cli.d.ts +9 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +236 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +526 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/analyze-mockups.d.ts +18 -0
- package/dist/tools/analyze-mockups.d.ts.map +1 -0
- package/dist/tools/analyze-mockups.js +497 -0
- package/dist/tools/analyze-mockups.js.map +1 -0
- package/dist/tools/autonomous-build.d.ts +19 -0
- package/dist/tools/autonomous-build.d.ts.map +1 -0
- package/dist/tools/autonomous-build.js +287 -0
- package/dist/tools/autonomous-build.js.map +1 -0
- package/dist/tools/check-gate.d.ts +21 -0
- package/dist/tools/check-gate.d.ts.map +1 -0
- package/dist/tools/check-gate.js +446 -0
- package/dist/tools/check-gate.js.map +1 -0
- package/dist/tools/check-scope.d.ts +22 -0
- package/dist/tools/check-scope.d.ts.map +1 -0
- package/dist/tools/check-scope.js +251 -0
- package/dist/tools/check-scope.js.map +1 -0
- package/dist/tools/deploy-vercel.d.ts +18 -0
- package/dist/tools/deploy-vercel.d.ts.map +1 -0
- package/dist/tools/deploy-vercel.js +178 -0
- package/dist/tools/deploy-vercel.js.map +1 -0
- package/dist/tools/diagnose-error.d.ts +20 -0
- package/dist/tools/diagnose-error.d.ts.map +1 -0
- package/dist/tools/diagnose-error.js +351 -0
- package/dist/tools/diagnose-error.js.map +1 -0
- package/dist/tools/enforce-feature.d.ts +25 -0
- package/dist/tools/enforce-feature.d.ts.map +1 -0
- package/dist/tools/enforce-feature.js +387 -0
- package/dist/tools/enforce-feature.js.map +1 -0
- package/dist/tools/execute-atomic-unit.d.ts +23 -0
- package/dist/tools/execute-atomic-unit.d.ts.map +1 -0
- package/dist/tools/execute-atomic-unit.js +107 -0
- package/dist/tools/execute-atomic-unit.js.map +1 -0
- package/dist/tools/fix-commit.d.ts +23 -0
- package/dist/tools/fix-commit.d.ts.map +1 -0
- package/dist/tools/fix-commit.js +213 -0
- package/dist/tools/fix-commit.js.map +1 -0
- package/dist/tools/fix-mockups.d.ts +21 -0
- package/dist/tools/fix-mockups.d.ts.map +1 -0
- package/dist/tools/fix-mockups.js +595 -0
- package/dist/tools/fix-mockups.js.map +1 -0
- package/dist/tools/generate-api-route.d.ts +18 -0
- package/dist/tools/generate-api-route.d.ts.map +1 -0
- package/dist/tools/generate-api-route.js +212 -0
- package/dist/tools/generate-api-route.js.map +1 -0
- package/dist/tools/generate-chatbot.d.ts +20 -0
- package/dist/tools/generate-chatbot.d.ts.map +1 -0
- package/dist/tools/generate-chatbot.js +555 -0
- package/dist/tools/generate-chatbot.js.map +1 -0
- package/dist/tools/generate-component.d.ts +18 -0
- package/dist/tools/generate-component.d.ts.map +1 -0
- package/dist/tools/generate-component.js +159 -0
- package/dist/tools/generate-component.js.map +1 -0
- package/dist/tools/generate-docs.d.ts +21 -0
- package/dist/tools/generate-docs.d.ts.map +1 -0
- package/dist/tools/generate-docs.js +782 -0
- package/dist/tools/generate-docs.js.map +1 -0
- package/dist/tools/generate-e2e-tests.d.ts +12 -0
- package/dist/tools/generate-e2e-tests.d.ts.map +1 -0
- package/dist/tools/generate-e2e-tests.js +37 -0
- package/dist/tools/generate-e2e-tests.js.map +1 -0
- package/dist/tools/generate-migration.d.ts +21 -0
- package/dist/tools/generate-migration.d.ts.map +1 -0
- package/dist/tools/generate-migration.js +94 -0
- package/dist/tools/generate-migration.js.map +1 -0
- package/dist/tools/generate-schema.d.ts +18 -0
- package/dist/tools/generate-schema.d.ts.map +1 -0
- package/dist/tools/generate-schema.js +422 -0
- package/dist/tools/generate-schema.js.map +1 -0
- package/dist/tools/generate-spec.d.ts +18 -0
- package/dist/tools/generate-spec.d.ts.map +1 -0
- package/dist/tools/generate-spec.js +446 -0
- package/dist/tools/generate-spec.js.map +1 -0
- package/dist/tools/generate-store-contracts.d.ts +17 -0
- package/dist/tools/generate-store-contracts.d.ts.map +1 -0
- package/dist/tools/generate-store-contracts.js +356 -0
- package/dist/tools/generate-store-contracts.js.map +1 -0
- package/dist/tools/generate-store.d.ts +16 -0
- package/dist/tools/generate-store.d.ts.map +1 -0
- package/dist/tools/generate-store.js +166 -0
- package/dist/tools/generate-store.js.map +1 -0
- package/dist/tools/generate-unit-tests.d.ts +14 -0
- package/dist/tools/generate-unit-tests.d.ts.map +1 -0
- package/dist/tools/generate-unit-tests.js +85 -0
- package/dist/tools/generate-unit-tests.js.map +1 -0
- package/dist/tools/get-context.d.ts +35 -0
- package/dist/tools/get-context.d.ts.map +1 -0
- package/dist/tools/get-context.js +367 -0
- package/dist/tools/get-context.js.map +1 -0
- package/dist/tools/init-session.d.ts +22 -0
- package/dist/tools/init-session.d.ts.map +1 -0
- package/dist/tools/init-session.js +232 -0
- package/dist/tools/init-session.js.map +1 -0
- package/dist/tools/map-dependencies.d.ts +25 -0
- package/dist/tools/map-dependencies.d.ts.map +1 -0
- package/dist/tools/map-dependencies.js +480 -0
- package/dist/tools/map-dependencies.js.map +1 -0
- package/dist/tools/optimize-performance.d.ts +18 -0
- package/dist/tools/optimize-performance.d.ts.map +1 -0
- package/dist/tools/optimize-performance.js +285 -0
- package/dist/tools/optimize-performance.js.map +1 -0
- package/dist/tools/run-interview.d.ts +23 -0
- package/dist/tools/run-interview.d.ts.map +1 -0
- package/dist/tools/run-interview.js +371 -0
- package/dist/tools/run-interview.js.map +1 -0
- package/dist/tools/run-tests.d.ts +12 -0
- package/dist/tools/run-tests.d.ts.map +1 -0
- package/dist/tools/run-tests.js +30 -0
- package/dist/tools/run-tests.js.map +1 -0
- package/dist/tools/scan-security.d.ts +19 -0
- package/dist/tools/scan-security.d.ts.map +1 -0
- package/dist/tools/scan-security.js +358 -0
- package/dist/tools/scan-security.js.map +1 -0
- package/dist/tools/validate-accessibility.d.ts +18 -0
- package/dist/tools/validate-accessibility.d.ts.map +1 -0
- package/dist/tools/validate-accessibility.js +251 -0
- package/dist/tools/validate-accessibility.js.map +1 -0
- package/dist/tools/validate-mockups.d.ts +21 -0
- package/dist/tools/validate-mockups.d.ts.map +1 -0
- package/dist/tools/validate-mockups.js +433 -0
- package/dist/tools/validate-mockups.js.map +1 -0
- package/dist/tools/verify-completeness.d.ts +13 -0
- package/dist/tools/verify-completeness.d.ts.map +1 -0
- package/dist/tools/verify-completeness.js +68 -0
- package/dist/tools/verify-completeness.js.map +1 -0
- package/dist/tools/verify-mockups.d.ts +14 -0
- package/dist/tools/verify-mockups.d.ts.map +1 -0
- package/dist/tools/verify-mockups.js +85 -0
- package/dist/tools/verify-mockups.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* codebakers_check_gate
|
|
3
|
+
*
|
|
4
|
+
* Phase Verification Gate Checks
|
|
5
|
+
*
|
|
6
|
+
* Verifies all requirements are met before proceeding to next phase.
|
|
7
|
+
* Based on CodeBakers Method verification gates for each phase.
|
|
8
|
+
*
|
|
9
|
+
* Phase Gates:
|
|
10
|
+
* - Phase 0: PROJECT-SPEC.md complete (Gates 0-5), human approved
|
|
11
|
+
* - Phase 1: All mockups created, design system documented
|
|
12
|
+
* - Phase 2: MOCK-ANALYSIS.md, SCHEMA.sql, DEPENDENCY-MAP.md complete
|
|
13
|
+
* - Phase 3: Foundation built, auth working, all routes resolve
|
|
14
|
+
* - Phase 4: All features implemented, all screens match mockups
|
|
15
|
+
* - Phase 5: All tests passing, Lighthouse >90, no critical vulnerabilities
|
|
16
|
+
* - Phase 6: Deployed, monitoring active, runbook complete
|
|
17
|
+
*/
|
|
18
|
+
import * as fs from 'fs/promises';
|
|
19
|
+
import * as path from 'path';
|
|
20
|
+
export async function checkGate(args) {
|
|
21
|
+
const phase = args.phase ?? 0;
|
|
22
|
+
const cwd = process.cwd();
|
|
23
|
+
console.error(`🍞 CodeBakers: Phase ${phase} Gate Check`);
|
|
24
|
+
try {
|
|
25
|
+
// Determine which gate check to run
|
|
26
|
+
let result;
|
|
27
|
+
switch (phase) {
|
|
28
|
+
case 0:
|
|
29
|
+
result = await checkPhase0Gate(cwd);
|
|
30
|
+
break;
|
|
31
|
+
case 1:
|
|
32
|
+
result = await checkPhase1Gate(cwd);
|
|
33
|
+
break;
|
|
34
|
+
case 2:
|
|
35
|
+
result = await checkPhase2Gate(cwd);
|
|
36
|
+
break;
|
|
37
|
+
case 3:
|
|
38
|
+
result = await checkPhase3Gate(cwd);
|
|
39
|
+
break;
|
|
40
|
+
case 4:
|
|
41
|
+
result = await checkPhase4Gate(cwd);
|
|
42
|
+
break;
|
|
43
|
+
case 5:
|
|
44
|
+
result = await checkPhase5Gate(cwd);
|
|
45
|
+
break;
|
|
46
|
+
case 6:
|
|
47
|
+
result = await checkPhase6Gate(cwd);
|
|
48
|
+
break;
|
|
49
|
+
default:
|
|
50
|
+
return `🍞 CodeBakers: Invalid Phase
|
|
51
|
+
|
|
52
|
+
Phase ${phase} is not valid. Valid phases: 0-6.`;
|
|
53
|
+
}
|
|
54
|
+
// Generate report
|
|
55
|
+
const report = generateGateReport(result);
|
|
56
|
+
return report;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
console.error('Error during gate check:', error);
|
|
60
|
+
return `🍞 CodeBakers: Gate Check Failed
|
|
61
|
+
|
|
62
|
+
Error: ${error instanceof Error ? error.message : String(error)}
|
|
63
|
+
|
|
64
|
+
Please verify project directory and file permissions.`;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Phase 0 Gate Check: Specification
|
|
69
|
+
*/
|
|
70
|
+
async function checkPhase0Gate(cwd) {
|
|
71
|
+
const checks = [];
|
|
72
|
+
// 1. Check PROJECT-SPEC.md exists
|
|
73
|
+
const specPath = path.join(cwd, '.codebakers', 'PROJECT-SPEC.md');
|
|
74
|
+
const specExists = await fs.access(specPath).then(() => true).catch(() => false);
|
|
75
|
+
if (!specExists) {
|
|
76
|
+
checks.push({
|
|
77
|
+
requirement: 'PROJECT-SPEC.md exists',
|
|
78
|
+
status: 'fail',
|
|
79
|
+
message: 'File not found. Run codebakers_generate_spec first.',
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
const specContent = await fs.readFile(specPath, 'utf-8');
|
|
84
|
+
// 2. Check Gates 0-5 present
|
|
85
|
+
const hasGate0 = specContent.includes('## Gate 0: Identity');
|
|
86
|
+
const hasGate1 = specContent.includes('## Gate 1: Entities');
|
|
87
|
+
const hasGate2 = specContent.includes('## Gate 2: State Changes');
|
|
88
|
+
const hasGate3 = specContent.includes('## Gate 3: Permissions');
|
|
89
|
+
const hasGate4 = specContent.includes('## Gate 4: Dependencies');
|
|
90
|
+
const hasGate5 = specContent.includes('## Gate 5: Integrations');
|
|
91
|
+
if (hasGate0 && hasGate1 && hasGate2 && hasGate3 && hasGate4) {
|
|
92
|
+
checks.push({
|
|
93
|
+
requirement: 'All Gates 0-5 present',
|
|
94
|
+
status: 'pass',
|
|
95
|
+
message: 'PROJECT-SPEC.md contains all required gates.',
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
checks.push({
|
|
100
|
+
requirement: 'All Gates 0-5 present',
|
|
101
|
+
status: 'fail',
|
|
102
|
+
message: `Missing gates. Found: Gate0=${hasGate0}, Gate1=${hasGate1}, Gate2=${hasGate2}, Gate3=${hasGate3}, Gate4=${hasGate4}, Gate5=${hasGate5}`,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
// 3. Check for entities
|
|
106
|
+
const entityCount = (specContent.match(/### \w+\n\n[\w\s]+\n\n\*\*Core Fields:/g) || []).length;
|
|
107
|
+
if (entityCount > 0) {
|
|
108
|
+
checks.push({
|
|
109
|
+
requirement: 'At least one entity defined',
|
|
110
|
+
status: 'pass',
|
|
111
|
+
message: `Found ${entityCount} entities.`,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
checks.push({
|
|
116
|
+
requirement: 'At least one entity defined',
|
|
117
|
+
status: 'fail',
|
|
118
|
+
message: 'No entities found in Gate 1.',
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// 4. Check BUILD-STATE.md exists
|
|
123
|
+
const buildStatePath = path.join(cwd, '.codebakers', 'BUILD-STATE.md');
|
|
124
|
+
const buildStateExists = await fs.access(buildStatePath).then(() => true).catch(() => false);
|
|
125
|
+
checks.push({
|
|
126
|
+
requirement: 'BUILD-STATE.md exists',
|
|
127
|
+
status: buildStateExists ? 'pass' : 'warning',
|
|
128
|
+
message: buildStateExists ? 'Build state initialized.' : 'BUILD-STATE.md not found (optional for Phase 0).',
|
|
129
|
+
});
|
|
130
|
+
const overallStatus = checks.some(c => c.status === 'fail') ? 'fail' : 'pass';
|
|
131
|
+
return {
|
|
132
|
+
phase: 0,
|
|
133
|
+
phase_name: 'Specification',
|
|
134
|
+
overall_status: overallStatus,
|
|
135
|
+
checks: checks,
|
|
136
|
+
can_proceed: overallStatus === 'pass',
|
|
137
|
+
next_phase: 'Phase 1: UI Mockup & Design',
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Phase 1 Gate Check: UI Mockup & Design
|
|
142
|
+
*/
|
|
143
|
+
async function checkPhase1Gate(cwd) {
|
|
144
|
+
const checks = [];
|
|
145
|
+
// 1. Check refs/design/ folder exists
|
|
146
|
+
const designPath = path.join(cwd, 'refs', 'design');
|
|
147
|
+
const designExists = await fs.access(designPath).then(() => true).catch(() => false);
|
|
148
|
+
if (!designExists) {
|
|
149
|
+
checks.push({
|
|
150
|
+
requirement: 'refs/design/ folder exists',
|
|
151
|
+
status: 'fail',
|
|
152
|
+
message: 'Design folder not found. Create mockups in refs/design/ first.',
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
// 2. Check for mockup files
|
|
157
|
+
const files = await fs.readdir(designPath);
|
|
158
|
+
const mockupFiles = files.filter(f => f.endsWith('.html') || f.endsWith('.jsx') || f.endsWith('.tsx') || f.endsWith('.md'));
|
|
159
|
+
if (mockupFiles.length > 0) {
|
|
160
|
+
checks.push({
|
|
161
|
+
requirement: 'Mockup files present',
|
|
162
|
+
status: 'pass',
|
|
163
|
+
message: `Found ${mockupFiles.length} mockup files.`,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
checks.push({
|
|
168
|
+
requirement: 'Mockup files present',
|
|
169
|
+
status: 'fail',
|
|
170
|
+
message: 'No mockup files found in refs/design/.',
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// 3. Check DESIGN-SYSTEM.md (optional but recommended)
|
|
175
|
+
const designSystemPath = path.join(cwd, '.codebakers', 'DESIGN-SYSTEM.md');
|
|
176
|
+
const designSystemExists = await fs.access(designSystemPath).then(() => true).catch(() => false);
|
|
177
|
+
checks.push({
|
|
178
|
+
requirement: 'DESIGN-SYSTEM.md exists',
|
|
179
|
+
status: designSystemExists ? 'pass' : 'warning',
|
|
180
|
+
message: designSystemExists ? 'Design system documented.' : 'Design system not documented (recommended).',
|
|
181
|
+
});
|
|
182
|
+
const overallStatus = checks.some(c => c.status === 'fail') ? 'fail' : 'pass';
|
|
183
|
+
return {
|
|
184
|
+
phase: 1,
|
|
185
|
+
phase_name: 'UI Mockup & Design',
|
|
186
|
+
overall_status: overallStatus,
|
|
187
|
+
checks: checks,
|
|
188
|
+
can_proceed: overallStatus === 'pass',
|
|
189
|
+
next_phase: 'Phase 2: Mock Analysis & Schema',
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Phase 2 Gate Check: Mock Analysis & Schema
|
|
194
|
+
*/
|
|
195
|
+
async function checkPhase2Gate(cwd) {
|
|
196
|
+
const checks = [];
|
|
197
|
+
// 1. Check MOCK-ANALYSIS.md
|
|
198
|
+
const analysisPath = path.join(cwd, '.codebakers', 'MOCK-ANALYSIS.md');
|
|
199
|
+
const analysisExists = await fs.access(analysisPath).then(() => true).catch(() => false);
|
|
200
|
+
if (analysisExists) {
|
|
201
|
+
const analysisContent = await fs.readFile(analysisPath, 'utf-8');
|
|
202
|
+
const hasEntities = analysisContent.includes('## Extracted Entities');
|
|
203
|
+
checks.push({
|
|
204
|
+
requirement: 'MOCK-ANALYSIS.md complete',
|
|
205
|
+
status: hasEntities ? 'pass' : 'warning',
|
|
206
|
+
message: hasEntities ? 'Mockup analysis complete.' : 'Analysis exists but may be incomplete.',
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
checks.push({
|
|
211
|
+
requirement: 'MOCK-ANALYSIS.md complete',
|
|
212
|
+
status: 'fail',
|
|
213
|
+
message: 'Not found. Run codebakers_analyze_mockups_deep first.',
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
// 2. Check SCHEMA.sql
|
|
217
|
+
const schemaPath = path.join(cwd, '.codebakers', 'SCHEMA.sql');
|
|
218
|
+
const schemaExists = await fs.access(schemaPath).then(() => true).catch(() => false);
|
|
219
|
+
if (schemaExists) {
|
|
220
|
+
const schemaContent = await fs.readFile(schemaPath, 'utf-8');
|
|
221
|
+
const hasTables = schemaContent.includes('CREATE TABLE');
|
|
222
|
+
checks.push({
|
|
223
|
+
requirement: 'SCHEMA.sql complete',
|
|
224
|
+
status: hasTables ? 'pass' : 'warning',
|
|
225
|
+
message: hasTables ? 'Database schema generated.' : 'Schema file exists but contains no tables.',
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
checks.push({
|
|
230
|
+
requirement: 'SCHEMA.sql complete',
|
|
231
|
+
status: 'fail',
|
|
232
|
+
message: 'Not found. Run codebakers_generate_schema first.',
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
// 3. Check DEPENDENCY-MAP.md
|
|
236
|
+
const depMapPath = path.join(cwd, '.codebakers', 'DEPENDENCY-MAP.md');
|
|
237
|
+
const depMapExists = await fs.access(depMapPath).then(() => true).catch(() => false);
|
|
238
|
+
if (depMapExists) {
|
|
239
|
+
const depMapContent = await fs.readFile(depMapPath, 'utf-8');
|
|
240
|
+
const hasDeps = depMapContent.includes('## Write Dependencies');
|
|
241
|
+
checks.push({
|
|
242
|
+
requirement: 'DEPENDENCY-MAP.md complete',
|
|
243
|
+
status: hasDeps ? 'pass' : 'warning',
|
|
244
|
+
message: hasDeps ? 'Dependency map complete.' : 'Dependency map exists but may be incomplete.',
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
checks.push({
|
|
249
|
+
requirement: 'DEPENDENCY-MAP.md complete',
|
|
250
|
+
status: 'fail',
|
|
251
|
+
message: 'Not found. Run codebakers_map_dependencies first.',
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
// 4. Check STORE-CONTRACTS.md
|
|
255
|
+
const contractsPath = path.join(cwd, '.codebakers', 'STORE-CONTRACTS.md');
|
|
256
|
+
const contractsExists = await fs.access(contractsPath).then(() => true).catch(() => false);
|
|
257
|
+
checks.push({
|
|
258
|
+
requirement: 'STORE-CONTRACTS.md complete',
|
|
259
|
+
status: contractsExists ? 'pass' : 'warning',
|
|
260
|
+
message: contractsExists ? 'Store contracts generated.' : 'Store contracts not generated (recommended).',
|
|
261
|
+
});
|
|
262
|
+
const overallStatus = checks.some(c => c.status === 'fail') ? 'fail' : 'pass';
|
|
263
|
+
return {
|
|
264
|
+
phase: 2,
|
|
265
|
+
phase_name: 'Mock Analysis & Schema',
|
|
266
|
+
overall_status: overallStatus,
|
|
267
|
+
checks: checks,
|
|
268
|
+
can_proceed: overallStatus === 'pass',
|
|
269
|
+
next_phase: 'Phase 3: Foundation Build',
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Phase 3 Gate Check: Foundation Build
|
|
274
|
+
*/
|
|
275
|
+
async function checkPhase3Gate(cwd) {
|
|
276
|
+
const checks = [];
|
|
277
|
+
// 1. Check package.json exists
|
|
278
|
+
const packagePath = path.join(cwd, 'package.json');
|
|
279
|
+
const packageExists = await fs.access(packagePath).then(() => true).catch(() => false);
|
|
280
|
+
if (packageExists) {
|
|
281
|
+
const packageContent = await fs.readFile(packagePath, 'utf-8');
|
|
282
|
+
const pkg = JSON.parse(packageContent);
|
|
283
|
+
const hasNext = pkg.dependencies && pkg.dependencies['next'];
|
|
284
|
+
const hasSupabase = pkg.dependencies && pkg.dependencies['@supabase/supabase-js'];
|
|
285
|
+
checks.push({
|
|
286
|
+
requirement: 'Next.js and Supabase installed',
|
|
287
|
+
status: (hasNext && hasSupabase) ? 'pass' : 'fail',
|
|
288
|
+
message: (hasNext && hasSupabase) ? 'Stack dependencies installed.' : 'Missing Next.js or Supabase packages.',
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
checks.push({
|
|
293
|
+
requirement: 'package.json exists',
|
|
294
|
+
status: 'fail',
|
|
295
|
+
message: 'Project not initialized. Run: pnpm create next-app',
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
// 2. Check for app/ or pages/ directory (Next.js structure)
|
|
299
|
+
const appPath = path.join(cwd, 'app');
|
|
300
|
+
const pagesPath = path.join(cwd, 'pages');
|
|
301
|
+
const appExists = await fs.access(appPath).then(() => true).catch(() => false);
|
|
302
|
+
const pagesExists = await fs.access(pagesPath).then(() => true).catch(() => false);
|
|
303
|
+
checks.push({
|
|
304
|
+
requirement: 'Next.js structure present',
|
|
305
|
+
status: (appExists || pagesExists) ? 'pass' : 'fail',
|
|
306
|
+
message: (appExists || pagesExists) ? 'Next.js directory structure found.' : 'Missing app/ or pages/ directory.',
|
|
307
|
+
});
|
|
308
|
+
const overallStatus = checks.some(c => c.status === 'fail') ? 'fail' : checks.every(c => c.status === 'pass') ? 'pass' : 'warning';
|
|
309
|
+
return {
|
|
310
|
+
phase: 3,
|
|
311
|
+
phase_name: 'Foundation Build',
|
|
312
|
+
overall_status: overallStatus,
|
|
313
|
+
checks: checks,
|
|
314
|
+
can_proceed: overallStatus !== 'fail',
|
|
315
|
+
next_phase: 'Phase 4: Feature Build',
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Phase 4 Gate Check: Feature Build
|
|
320
|
+
*/
|
|
321
|
+
async function checkPhase4Gate(cwd) {
|
|
322
|
+
const checks = [];
|
|
323
|
+
// Note: Full feature verification would require running the app
|
|
324
|
+
// For now, check for basic completeness indicators
|
|
325
|
+
// 1. Check TypeScript compiles
|
|
326
|
+
checks.push({
|
|
327
|
+
requirement: 'TypeScript compiles (manual check required)',
|
|
328
|
+
status: 'warning',
|
|
329
|
+
message: 'Run: tsc --noEmit to verify no TypeScript errors.',
|
|
330
|
+
});
|
|
331
|
+
// 2. Check for test files
|
|
332
|
+
const testPatterns = ['**/*.test.ts', '**/*.test.tsx', '**/*.spec.ts'];
|
|
333
|
+
checks.push({
|
|
334
|
+
requirement: 'Tests present',
|
|
335
|
+
status: 'warning',
|
|
336
|
+
message: 'Verify test files exist and cover critical paths.',
|
|
337
|
+
});
|
|
338
|
+
const overallStatus = 'warning'; // Phase 4 requires manual verification
|
|
339
|
+
return {
|
|
340
|
+
phase: 4,
|
|
341
|
+
phase_name: 'Feature Build',
|
|
342
|
+
overall_status: overallStatus,
|
|
343
|
+
checks: checks,
|
|
344
|
+
can_proceed: true, // Allow proceeding with warnings
|
|
345
|
+
next_phase: 'Phase 5: Testing & Verification',
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Phase 5 Gate Check: Testing & Verification
|
|
350
|
+
*/
|
|
351
|
+
async function checkPhase5Gate(cwd) {
|
|
352
|
+
const checks = [];
|
|
353
|
+
// Manual checks for Phase 5
|
|
354
|
+
checks.push({
|
|
355
|
+
requirement: 'All tests passing',
|
|
356
|
+
status: 'warning',
|
|
357
|
+
message: 'Run tests and verify all pass. Command: pnpm test',
|
|
358
|
+
});
|
|
359
|
+
checks.push({
|
|
360
|
+
requirement: 'Lighthouse score >90',
|
|
361
|
+
status: 'warning',
|
|
362
|
+
message: 'Run Lighthouse audit on deployed preview.',
|
|
363
|
+
});
|
|
364
|
+
checks.push({
|
|
365
|
+
requirement: 'No critical vulnerabilities',
|
|
366
|
+
status: 'warning',
|
|
367
|
+
message: 'Run: pnpm audit and resolve critical/high issues.',
|
|
368
|
+
});
|
|
369
|
+
const overallStatus = 'warning';
|
|
370
|
+
return {
|
|
371
|
+
phase: 5,
|
|
372
|
+
phase_name: 'Testing & Verification',
|
|
373
|
+
overall_status: overallStatus,
|
|
374
|
+
checks: checks,
|
|
375
|
+
can_proceed: true,
|
|
376
|
+
next_phase: 'Phase 6: Deployment & Ops',
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Phase 6 Gate Check: Deployment & Ops
|
|
381
|
+
*/
|
|
382
|
+
async function checkPhase6Gate(cwd) {
|
|
383
|
+
const checks = [];
|
|
384
|
+
// Check for RUNBOOK.md
|
|
385
|
+
const runbookPath = path.join(cwd, '.codebakers', 'RUNBOOK.md');
|
|
386
|
+
const runbookExists = await fs.access(runbookPath).then(() => true).catch(() => false);
|
|
387
|
+
checks.push({
|
|
388
|
+
requirement: 'RUNBOOK.md exists',
|
|
389
|
+
status: runbookExists ? 'pass' : 'warning',
|
|
390
|
+
message: runbookExists ? 'Operations runbook documented.' : 'Create RUNBOOK.md with deployment and rollback procedures.',
|
|
391
|
+
});
|
|
392
|
+
// Manual deployment checks
|
|
393
|
+
checks.push({
|
|
394
|
+
requirement: 'Application deployed',
|
|
395
|
+
status: 'warning',
|
|
396
|
+
message: 'Verify application is live and accessible.',
|
|
397
|
+
});
|
|
398
|
+
checks.push({
|
|
399
|
+
requirement: 'Monitoring configured',
|
|
400
|
+
status: 'warning',
|
|
401
|
+
message: 'Verify error monitoring (Sentry) and alerting configured.',
|
|
402
|
+
});
|
|
403
|
+
const overallStatus = checks.some(c => c.status === 'fail') ? 'fail' : 'warning';
|
|
404
|
+
return {
|
|
405
|
+
phase: 6,
|
|
406
|
+
phase_name: 'Deployment & Ops',
|
|
407
|
+
overall_status: overallStatus,
|
|
408
|
+
checks: checks,
|
|
409
|
+
can_proceed: true,
|
|
410
|
+
next_phase: 'Project Complete',
|
|
411
|
+
};
|
|
412
|
+
}
|
|
413
|
+
/**
|
|
414
|
+
* Generate gate check report
|
|
415
|
+
*/
|
|
416
|
+
function generateGateReport(result) {
|
|
417
|
+
let report = `🍞 CodeBakers: Phase ${result.phase} - ${result.phase_name}\n\n`;
|
|
418
|
+
report += `**Gate Check Status:** ${result.overall_status.toUpperCase()}\n\n`;
|
|
419
|
+
report += `---\n\n`;
|
|
420
|
+
// Check results
|
|
421
|
+
report += `## Verification Checks\n\n`;
|
|
422
|
+
for (const check of result.checks) {
|
|
423
|
+
const icon = check.status === 'pass' ? '✅' : check.status === 'fail' ? '❌' : '⚠️';
|
|
424
|
+
report += `${icon} **${check.requirement}**\n`;
|
|
425
|
+
report += ` ${check.message}\n\n`;
|
|
426
|
+
}
|
|
427
|
+
report += `---\n\n`;
|
|
428
|
+
// Overall result
|
|
429
|
+
if (result.overall_status === 'pass') {
|
|
430
|
+
report += `## ✅ GATE PASSED\n\n`;
|
|
431
|
+
report += `All requirements met. You can proceed to:\n`;
|
|
432
|
+
report += `**${result.next_phase}**\n\n`;
|
|
433
|
+
}
|
|
434
|
+
else if (result.overall_status === 'fail') {
|
|
435
|
+
report += `## ❌ GATE FAILED\n\n`;
|
|
436
|
+
report += `Requirements not met. Address failures above before proceeding.\n\n`;
|
|
437
|
+
}
|
|
438
|
+
else {
|
|
439
|
+
report += `## ⚠️ WARNINGS PRESENT\n\n`;
|
|
440
|
+
report += `Some checks require manual verification.\n`;
|
|
441
|
+
report += `Review warnings above before proceeding to:\n`;
|
|
442
|
+
report += `**${result.next_phase}**\n\n`;
|
|
443
|
+
}
|
|
444
|
+
return report;
|
|
445
|
+
}
|
|
446
|
+
//# sourceMappingURL=check-gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-gate.js","sourceRoot":"","sources":["../../src/tools/check-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* codebakers_check_scope
|
|
3
|
+
*
|
|
4
|
+
* Scope Verification
|
|
5
|
+
*
|
|
6
|
+
* Verifies that a feature request is defined in PROJECT-SPEC.md.
|
|
7
|
+
* Prevents scope creep by enforcing spec boundaries.
|
|
8
|
+
*
|
|
9
|
+
* Rules:
|
|
10
|
+
* - Feature must be in Gate 1 (Entities) or Gate 2 (State Changes)
|
|
11
|
+
* - If not found, must either:
|
|
12
|
+
* 1. Add to spec (formal amendment)
|
|
13
|
+
* 2. Descope (remove from request)
|
|
14
|
+
* 3. Flag for future iteration
|
|
15
|
+
* - Never silently expand scope
|
|
16
|
+
*
|
|
17
|
+
* Based on CodeBakers Method Principle #7: Fixed Appetite, Not Open Scope
|
|
18
|
+
*/
|
|
19
|
+
export declare function checkScope(args: {
|
|
20
|
+
feature_description?: string;
|
|
21
|
+
}): Promise<string>;
|
|
22
|
+
//# sourceMappingURL=check-scope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-scope.d.ts","sourceRoot":"","sources":["../../src/tools/check-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAcH,wBAAsB,UAAU,CAAC,IAAI,EAAE;IAAE,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAgDxF"}
|