brainforge-ai 1.0.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/LICENSE +21 -0
- package/README.md +254 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +47 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/dashboard.d.ts +2 -0
- package/dist/commands/dashboard.d.ts.map +1 -0
- package/dist/commands/dashboard.js +46 -0
- package/dist/commands/dashboard.js.map +1 -0
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +90 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +203 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/updateDashboard.d.ts +2 -0
- package/dist/commands/updateDashboard.d.ts.map +1 -0
- package/dist/commands/updateDashboard.js +31 -0
- package/dist/commands/updateDashboard.js.map +1 -0
- package/dist/core/config.d.ts +25 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +52 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/dashboard.d.ts +25 -0
- package/dist/core/dashboard.d.ts.map +1 -0
- package/dist/core/dashboard.js +76 -0
- package/dist/core/dashboard.js.map +1 -0
- package/dist/core/dashboardTemplate.d.ts +3 -0
- package/dist/core/dashboardTemplate.d.ts.map +1 -0
- package/dist/core/dashboardTemplate.js +324 -0
- package/dist/core/dashboardTemplate.js.map +1 -0
- package/dist/core/fileSystem.d.ts +3 -0
- package/dist/core/fileSystem.d.ts.map +1 -0
- package/dist/core/fileSystem.js +468 -0
- package/dist/core/fileSystem.js.map +1 -0
- package/dist/core/git.d.ts +6 -0
- package/dist/core/git.d.ts.map +1 -0
- package/dist/core/git.js +63 -0
- package/dist/core/git.js.map +1 -0
- package/dist/core/templates.d.ts +5 -0
- package/dist/core/templates.d.ts.map +1 -0
- package/dist/core/templates.js +1065 -0
- package/dist/core/templates.js.map +1 -0
- package/dist/utils/logger.d.ts +10 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +17 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,468 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createBrainforgeStructure = createBrainforgeStructure;
|
|
7
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const config_1 = require("./config");
|
|
10
|
+
const templates_1 = require("./templates");
|
|
11
|
+
const dashboardTemplate_1 = require("./dashboardTemplate");
|
|
12
|
+
async function createBrainforgeStructure(config, cwd = process.cwd()) {
|
|
13
|
+
const brainDir = (0, config_1.getBrainforgeDir)(cwd);
|
|
14
|
+
// Create directory structure
|
|
15
|
+
const dirs = [
|
|
16
|
+
brainDir,
|
|
17
|
+
path_1.default.join(brainDir, 'memory'),
|
|
18
|
+
path_1.default.join(brainDir, 'phases'),
|
|
19
|
+
path_1.default.join(brainDir, 'agents'),
|
|
20
|
+
path_1.default.join(brainDir, 'commands'),
|
|
21
|
+
path_1.default.join(brainDir, 'dashboard'),
|
|
22
|
+
];
|
|
23
|
+
for (const dir of dirs) {
|
|
24
|
+
await fs_extra_1.default.ensureDir(dir);
|
|
25
|
+
}
|
|
26
|
+
// Write config
|
|
27
|
+
await fs_extra_1.default.writeJson(path_1.default.join(brainDir, 'config.json'), config, { spaces: 2 });
|
|
28
|
+
// Write project.md
|
|
29
|
+
await fs_extra_1.default.writeFile(path_1.default.join(brainDir, 'project.md'), generateProjectMd(config));
|
|
30
|
+
// Write questions.md
|
|
31
|
+
await fs_extra_1.default.writeFile(path_1.default.join(brainDir, 'questions.md'), generateQuestionsMd(config));
|
|
32
|
+
// Write decisions.md
|
|
33
|
+
await fs_extra_1.default.writeFile(path_1.default.join(brainDir, 'decisions.md'), generateDecisionsMd());
|
|
34
|
+
// Write roadmap.md placeholder
|
|
35
|
+
await fs_extra_1.default.writeFile(path_1.default.join(brainDir, 'roadmap.md'), generateRoadmapMd(config));
|
|
36
|
+
// Write memory files
|
|
37
|
+
const memoryFiles = {
|
|
38
|
+
'architecture.md': generateArchitectureMd(config),
|
|
39
|
+
'coding-style.md': generateCodingStyleMd(config),
|
|
40
|
+
'known-bugs.md': generateKnownBugsMd(),
|
|
41
|
+
'glossary.md': generateGlossaryMd(),
|
|
42
|
+
'design-system.md': generateDesignSystemMd(config),
|
|
43
|
+
};
|
|
44
|
+
for (const [filename, content] of Object.entries(memoryFiles)) {
|
|
45
|
+
await fs_extra_1.default.writeFile(path_1.default.join(brainDir, 'memory', filename), content);
|
|
46
|
+
}
|
|
47
|
+
// Write phase templates
|
|
48
|
+
await fs_extra_1.default.writeFile(path_1.default.join(brainDir, 'phases', 'phase-01.md'), generatePhaseMd(1, 'Project Setup & Foundation', config));
|
|
49
|
+
await fs_extra_1.default.writeFile(path_1.default.join(brainDir, 'phases', 'phase-02.md'), generatePhaseMd(2, 'Core Features', config));
|
|
50
|
+
// Write agent files
|
|
51
|
+
const agents = (0, templates_1.getAgentTemplates)(config);
|
|
52
|
+
for (const [filename, content] of Object.entries(agents)) {
|
|
53
|
+
await fs_extra_1.default.writeFile(path_1.default.join(brainDir, 'agents', filename), content);
|
|
54
|
+
}
|
|
55
|
+
// Write command files
|
|
56
|
+
const commands = (0, templates_1.getCommandTemplates)(config);
|
|
57
|
+
for (const [filename, content] of Object.entries(commands)) {
|
|
58
|
+
await fs_extra_1.default.writeFile(path_1.default.join(brainDir, 'commands', filename), content);
|
|
59
|
+
}
|
|
60
|
+
// Write dashboard files
|
|
61
|
+
await fs_extra_1.default.writeFile(path_1.default.join(brainDir, 'dashboard', 'index.html'), (0, dashboardTemplate_1.getDashboardHtml)());
|
|
62
|
+
await fs_extra_1.default.writeFile(path_1.default.join(brainDir, 'dashboard', 'style.css'), (0, dashboardTemplate_1.getDashboardCss)());
|
|
63
|
+
await fs_extra_1.default.writeJson(path_1.default.join(brainDir, 'dashboard', 'data.json'), {
|
|
64
|
+
projectName: config.projectName,
|
|
65
|
+
description: config.description,
|
|
66
|
+
stack: config.stack,
|
|
67
|
+
userLevel: config.userLevel,
|
|
68
|
+
codeLevel: config.codeLevel,
|
|
69
|
+
projectType: config.projectType,
|
|
70
|
+
currentPhase: 0,
|
|
71
|
+
totalPhases: 2,
|
|
72
|
+
phases: [
|
|
73
|
+
{ id: 1, title: 'Project Setup & Foundation', status: 'pending' },
|
|
74
|
+
{ id: 2, title: 'Core Features', status: 'pending' },
|
|
75
|
+
],
|
|
76
|
+
recentCommits: [],
|
|
77
|
+
gitStatus: 'clean',
|
|
78
|
+
knownBugs: [],
|
|
79
|
+
decisions: [],
|
|
80
|
+
updatedAt: new Date().toISOString(),
|
|
81
|
+
}, { spaces: 2 });
|
|
82
|
+
// Write root files (AGENTS.md, CLAUDE.md, GEMINI.md, OPENAI.md, README.md)
|
|
83
|
+
const rootFiles = (0, templates_1.getRootFileTemplates)(config);
|
|
84
|
+
for (const [filename, content] of Object.entries(rootFiles)) {
|
|
85
|
+
const filePath = path_1.default.join(cwd, filename);
|
|
86
|
+
if (!fs_extra_1.default.existsSync(filePath)) {
|
|
87
|
+
await fs_extra_1.default.writeFile(filePath, content);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function generateProjectMd(config) {
|
|
92
|
+
return `# Project: ${config.projectName}
|
|
93
|
+
|
|
94
|
+
**Description:** ${config.description || '_To be filled_'}
|
|
95
|
+
**Type:** ${config.projectType}
|
|
96
|
+
**Stack:** ${config.stack.join(', ')}
|
|
97
|
+
**User Level:** ${config.userLevel}
|
|
98
|
+
**Code Level:** ${config.codeLevel}
|
|
99
|
+
**Academic:** ${config.isAcademic ? 'Yes' : 'No'}
|
|
100
|
+
**Created:** ${config.createdAt}
|
|
101
|
+
|
|
102
|
+
## Features
|
|
103
|
+
|
|
104
|
+
- Docker: ${config.useDocker ? 'Yes' : 'No'}
|
|
105
|
+
- Database: ${config.useDatabase ? 'Yes' : 'No'}
|
|
106
|
+
- Authentication: ${config.useAuth ? 'Yes' : 'No'}
|
|
107
|
+
- Admin Dashboard: ${config.useAdminDashboard ? 'Yes' : 'No'}
|
|
108
|
+
- Responsive: ${config.useResponsive ? 'Yes' : 'No'}
|
|
109
|
+
|
|
110
|
+
## Goal
|
|
111
|
+
|
|
112
|
+
_Describe the main goal of the project here._
|
|
113
|
+
|
|
114
|
+
## Scope
|
|
115
|
+
|
|
116
|
+
_Define what is in scope and what is out of scope._
|
|
117
|
+
|
|
118
|
+
## Success Criteria
|
|
119
|
+
|
|
120
|
+
- [ ] Core features working
|
|
121
|
+
- [ ] Tested and reviewed
|
|
122
|
+
- [ ] Documented
|
|
123
|
+
`;
|
|
124
|
+
}
|
|
125
|
+
function generateQuestionsMd(config) {
|
|
126
|
+
return `# Project Questions
|
|
127
|
+
|
|
128
|
+
_Answered during init_
|
|
129
|
+
|
|
130
|
+
| Question | Answer |
|
|
131
|
+
|----------|--------|
|
|
132
|
+
| Project type | ${config.projectType} |
|
|
133
|
+
| Stack | ${config.stack.join(', ')} |
|
|
134
|
+
| User level | ${config.userLevel} |
|
|
135
|
+
| Code level | ${config.codeLevel} |
|
|
136
|
+
| Docker | ${config.useDocker ? 'Yes' : 'No'} |
|
|
137
|
+
| Database | ${config.useDatabase ? 'Yes' : 'No'} |
|
|
138
|
+
| Authentication | ${config.useAuth ? 'Yes' : 'No'} |
|
|
139
|
+
| Admin dashboard | ${config.useAdminDashboard ? 'Yes' : 'No'} |
|
|
140
|
+
| Responsive | ${config.useResponsive ? 'Yes' : 'No'} |
|
|
141
|
+
| Academic project | ${config.isAcademic ? 'Yes' : 'No'} |
|
|
142
|
+
|
|
143
|
+
## Open Questions
|
|
144
|
+
|
|
145
|
+
_Add questions that need clarification here._
|
|
146
|
+
|
|
147
|
+
- [ ] ?
|
|
148
|
+
`;
|
|
149
|
+
}
|
|
150
|
+
function generateDecisionsMd() {
|
|
151
|
+
return `# Architecture Decisions
|
|
152
|
+
|
|
153
|
+
_Decisions taken during the project_
|
|
154
|
+
|
|
155
|
+
## Format
|
|
156
|
+
|
|
157
|
+
\`\`\`
|
|
158
|
+
- [YYYY-MM-DD] Decision title
|
|
159
|
+
Context: why this decision was needed
|
|
160
|
+
Choice: what was decided
|
|
161
|
+
Reason: why this option
|
|
162
|
+
\`\`\`
|
|
163
|
+
|
|
164
|
+
## Decisions
|
|
165
|
+
|
|
166
|
+
- [${new Date().toISOString().slice(0, 10)}] Project initialized with BrainForge
|
|
167
|
+
Context: Starting a new project
|
|
168
|
+
Choice: Using BrainForge CLI
|
|
169
|
+
Reason: Structured, AI-assisted development workflow
|
|
170
|
+
`;
|
|
171
|
+
}
|
|
172
|
+
function generateRoadmapMd(config) {
|
|
173
|
+
return `# Project Roadmap: ${config.projectName}
|
|
174
|
+
|
|
175
|
+
_Generated by BrainForge. Run /create-roadmap to generate a detailed roadmap._
|
|
176
|
+
|
|
177
|
+
## Epic 1: Foundation
|
|
178
|
+
|
|
179
|
+
### Feature 1.1: Project Setup
|
|
180
|
+
- Task: Initialize project structure
|
|
181
|
+
- Subtask: Create folder structure
|
|
182
|
+
- Subtask: Configure environment
|
|
183
|
+
- Task: Setup stack
|
|
184
|
+
- Subtask: Install dependencies
|
|
185
|
+
- Subtask: Configure tools
|
|
186
|
+
|
|
187
|
+
### Feature 1.2: Core Architecture
|
|
188
|
+
- Task: Define data models
|
|
189
|
+
- Task: Setup routing/navigation
|
|
190
|
+
|
|
191
|
+
## Epic 2: Core Features
|
|
192
|
+
|
|
193
|
+
### Feature 2.1: Main Functionality
|
|
194
|
+
- Task: Implement primary feature
|
|
195
|
+
- Task: Connect to data source
|
|
196
|
+
|
|
197
|
+
### Feature 2.2: UI/UX
|
|
198
|
+
- Task: Build main screens
|
|
199
|
+
- Task: Make responsive
|
|
200
|
+
|
|
201
|
+
## Epic 3: Quality & Delivery
|
|
202
|
+
|
|
203
|
+
### Feature 3.1: Testing
|
|
204
|
+
- Task: Unit tests
|
|
205
|
+
- Task: Integration tests
|
|
206
|
+
|
|
207
|
+
### Feature 3.2: Documentation
|
|
208
|
+
- Task: Write README
|
|
209
|
+
- Task: Prepare presentation
|
|
210
|
+
|
|
211
|
+
## Phase Summary
|
|
212
|
+
|
|
213
|
+
| Phase | Epic | Status |
|
|
214
|
+
|-------|------|--------|
|
|
215
|
+
| Phase 01 | Foundation | pending |
|
|
216
|
+
| Phase 02 | Core Features | pending |
|
|
217
|
+
`;
|
|
218
|
+
}
|
|
219
|
+
function generateArchitectureMd(config) {
|
|
220
|
+
return `# Architecture Memory
|
|
221
|
+
|
|
222
|
+
**Stack:** ${config.stack.join(', ')}
|
|
223
|
+
**Pattern:** _To be defined_
|
|
224
|
+
|
|
225
|
+
## Folder Structure
|
|
226
|
+
|
|
227
|
+
\`\`\`
|
|
228
|
+
project/
|
|
229
|
+
_Update this as you build_
|
|
230
|
+
\`\`\`
|
|
231
|
+
|
|
232
|
+
## Key Decisions
|
|
233
|
+
|
|
234
|
+
_Add architecture decisions here as the project evolves._
|
|
235
|
+
|
|
236
|
+
## Data Flow
|
|
237
|
+
|
|
238
|
+
_Describe how data flows through your application._
|
|
239
|
+
|
|
240
|
+
## External Services
|
|
241
|
+
|
|
242
|
+
_List any external APIs, databases, or services._
|
|
243
|
+
`;
|
|
244
|
+
}
|
|
245
|
+
function generateCodingStyleMd(config) {
|
|
246
|
+
const rules = {
|
|
247
|
+
beginner: [
|
|
248
|
+
'Write simple, direct code — no unnecessary abstractions',
|
|
249
|
+
'Use clear variable names (no abbreviations)',
|
|
250
|
+
'Add comments in French for important functions',
|
|
251
|
+
'Keep each file under 100 lines',
|
|
252
|
+
'Avoid design patterns unless absolutely needed',
|
|
253
|
+
'Use console.log for debugging — remove before delivery',
|
|
254
|
+
],
|
|
255
|
+
intermediate: [
|
|
256
|
+
'Clean structure with reasonable separation of concerns',
|
|
257
|
+
'Reusable components/functions where it makes sense',
|
|
258
|
+
'Simple validation on user inputs',
|
|
259
|
+
'Follow naming conventions of the chosen framework',
|
|
260
|
+
'Keep files under 200 lines',
|
|
261
|
+
'Avoid over-engineering',
|
|
262
|
+
],
|
|
263
|
+
professional: [
|
|
264
|
+
'Strict typing (TypeScript strict mode)',
|
|
265
|
+
'Separation of concerns, DDD-lite',
|
|
266
|
+
'Input validation at all boundaries',
|
|
267
|
+
'Error handling and logging',
|
|
268
|
+
'Unit tests for critical paths',
|
|
269
|
+
'Environment-based config',
|
|
270
|
+
],
|
|
271
|
+
'academic-realistic': [
|
|
272
|
+
'Code clean but not enterprise-perfect',
|
|
273
|
+
'No unnecessary design patterns',
|
|
274
|
+
'Easy to explain line by line',
|
|
275
|
+
'Simple folder structure',
|
|
276
|
+
'Comments where logic is non-obvious',
|
|
277
|
+
'Avoid abstractions that are hard to justify to a professor',
|
|
278
|
+
'Prefer readable over clever',
|
|
279
|
+
'Naming should be clear but natural (not overly perfect)',
|
|
280
|
+
],
|
|
281
|
+
};
|
|
282
|
+
const levelRules = rules[config.codeLevel] || rules['intermediate'];
|
|
283
|
+
return `# Coding Style Guide
|
|
284
|
+
|
|
285
|
+
**Level:** ${config.codeLevel}
|
|
286
|
+
**User Level:** ${config.userLevel}
|
|
287
|
+
|
|
288
|
+
## Rules
|
|
289
|
+
|
|
290
|
+
${levelRules.map((r) => `- ${r}`).join('\n')}
|
|
291
|
+
|
|
292
|
+
## Stack Conventions
|
|
293
|
+
|
|
294
|
+
**Stack:** ${config.stack.join(', ')}
|
|
295
|
+
|
|
296
|
+
_Update this section with conventions specific to your stack._
|
|
297
|
+
|
|
298
|
+
## What to Avoid
|
|
299
|
+
|
|
300
|
+
- Over-engineered abstractions
|
|
301
|
+
- Premature optimization
|
|
302
|
+
- Unnecessary dependencies
|
|
303
|
+
- Magic strings/numbers without constants
|
|
304
|
+
- Dead code
|
|
305
|
+
|
|
306
|
+
## Code Level Engine
|
|
307
|
+
|
|
308
|
+
\`\`\`
|
|
309
|
+
beginner → simple, direct, few files, FR comments
|
|
310
|
+
intermediate → clean, modular, good practices
|
|
311
|
+
professional → strict, tested, secure, scalable
|
|
312
|
+
academic-realistic → clean but natural, explainable, no enterprise patterns
|
|
313
|
+
\`\`\`
|
|
314
|
+
`;
|
|
315
|
+
}
|
|
316
|
+
function generateKnownBugsMd() {
|
|
317
|
+
return `# Known Bugs
|
|
318
|
+
|
|
319
|
+
_Updated automatically during /debug-issue and /review-phase_
|
|
320
|
+
|
|
321
|
+
## Active
|
|
322
|
+
|
|
323
|
+
_No bugs tracked yet._
|
|
324
|
+
|
|
325
|
+
## Resolved
|
|
326
|
+
|
|
327
|
+
_No resolved bugs yet._
|
|
328
|
+
|
|
329
|
+
## Format
|
|
330
|
+
|
|
331
|
+
\`\`\`
|
|
332
|
+
- [YYYY-MM-DD] Bug title
|
|
333
|
+
File: path/to/file.ts
|
|
334
|
+
Description: what happens
|
|
335
|
+
Status: active | resolved
|
|
336
|
+
Fix: how it was fixed (if resolved)
|
|
337
|
+
\`\`\`
|
|
338
|
+
`;
|
|
339
|
+
}
|
|
340
|
+
function generateGlossaryMd() {
|
|
341
|
+
return `# Project Glossary
|
|
342
|
+
|
|
343
|
+
_Define domain terms and technical jargon here._
|
|
344
|
+
|
|
345
|
+
| Term | Definition |
|
|
346
|
+
|------|------------|
|
|
347
|
+
| BrainForge | The CLI tool managing this project |
|
|
348
|
+
| Phase | A structured development step with a clear goal |
|
|
349
|
+
| Checkpoint | A git commit marking a stable state |
|
|
350
|
+
| Code Level | The complexity target for generated/written code |
|
|
351
|
+
|
|
352
|
+
_Add more terms as your project grows._
|
|
353
|
+
`;
|
|
354
|
+
}
|
|
355
|
+
function generateDesignSystemMd(config) {
|
|
356
|
+
return `# Design System
|
|
357
|
+
|
|
358
|
+
**Project:** ${config.projectName}
|
|
359
|
+
**Style:** Modern, clean, minimal
|
|
360
|
+
|
|
361
|
+
## Colors
|
|
362
|
+
|
|
363
|
+
\`\`\`css
|
|
364
|
+
--color-primary: #6366f1;
|
|
365
|
+
--color-secondary: #8b5cf6;
|
|
366
|
+
--color-success: #22c55e;
|
|
367
|
+
--color-warning: #f59e0b;
|
|
368
|
+
--color-error: #ef4444;
|
|
369
|
+
--color-bg: #0f172a;
|
|
370
|
+
--color-surface: #1e293b;
|
|
371
|
+
--color-text: #f1f5f9;
|
|
372
|
+
--color-muted: #94a3b8;
|
|
373
|
+
\`\`\`
|
|
374
|
+
|
|
375
|
+
## Typography
|
|
376
|
+
|
|
377
|
+
- Headings: Inter, system-ui
|
|
378
|
+
- Body: Inter, system-ui
|
|
379
|
+
- Code: JetBrains Mono, monospace
|
|
380
|
+
- Base size: 16px
|
|
381
|
+
|
|
382
|
+
## Spacing
|
|
383
|
+
|
|
384
|
+
Use multiples of 4px: 4, 8, 12, 16, 24, 32, 48, 64
|
|
385
|
+
|
|
386
|
+
## Components
|
|
387
|
+
|
|
388
|
+
- Buttons: rounded-md, padding 8px 16px
|
|
389
|
+
- Cards: rounded-lg, shadow-md, bg surface
|
|
390
|
+
- Inputs: border, rounded-md, focus ring primary
|
|
391
|
+
- Badges: small, rounded-full
|
|
392
|
+
|
|
393
|
+
## Responsive Rules
|
|
394
|
+
|
|
395
|
+
- Mobile first
|
|
396
|
+
- Breakpoints: 640px (sm), 768px (md), 1024px (lg), 1280px (xl)
|
|
397
|
+
- Max container width: 1280px
|
|
398
|
+
|
|
399
|
+
## Dark Mode
|
|
400
|
+
|
|
401
|
+
Default dark. Light mode optional via class toggle.
|
|
402
|
+
|
|
403
|
+
## Animations
|
|
404
|
+
|
|
405
|
+
- Transitions: 150ms ease
|
|
406
|
+
- Hover effects: subtle scale or color shift
|
|
407
|
+
- No flashy animations — keep it professional
|
|
408
|
+
`;
|
|
409
|
+
}
|
|
410
|
+
function generatePhaseMd(phaseNum, title, config) {
|
|
411
|
+
const padded = String(phaseNum).padStart(2, '0');
|
|
412
|
+
return `# Phase ${padded}: ${title}
|
|
413
|
+
|
|
414
|
+
**Status:** pending
|
|
415
|
+
**Project:** ${config.projectName}
|
|
416
|
+
**Stack:** ${config.stack.join(', ')}
|
|
417
|
+
**Code Level:** ${config.codeLevel}
|
|
418
|
+
|
|
419
|
+
## Objective
|
|
420
|
+
|
|
421
|
+
_Describe what this phase must accomplish._
|
|
422
|
+
|
|
423
|
+
## Context
|
|
424
|
+
|
|
425
|
+
_What should be already done before this phase starts?_
|
|
426
|
+
|
|
427
|
+
## Files Likely Involved
|
|
428
|
+
|
|
429
|
+
_List the files that will be created or modified._
|
|
430
|
+
|
|
431
|
+
\`\`\`
|
|
432
|
+
_To be filled during /initiate-phase_
|
|
433
|
+
\`\`\`
|
|
434
|
+
|
|
435
|
+
## Dependencies
|
|
436
|
+
|
|
437
|
+
- Depends on: Phase ${phaseNum === 1 ? 'none' : '0' + (phaseNum - 1)}
|
|
438
|
+
- Blocking: Phase ${String(phaseNum + 1).padStart(2, '0')}
|
|
439
|
+
|
|
440
|
+
## Execution Plan
|
|
441
|
+
|
|
442
|
+
_Generated by /initiate-phase_
|
|
443
|
+
|
|
444
|
+
- [ ] Step 1
|
|
445
|
+
- [ ] Step 2
|
|
446
|
+
- [ ] Step 3
|
|
447
|
+
|
|
448
|
+
## Validation Criteria
|
|
449
|
+
|
|
450
|
+
- [ ] Feature works as expected
|
|
451
|
+
- [ ] No obvious bugs
|
|
452
|
+
- [ ] Code matches level: ${config.codeLevel}
|
|
453
|
+
- [ ] Committed with checkpoint
|
|
454
|
+
|
|
455
|
+
## Risks
|
|
456
|
+
|
|
457
|
+
- _Add risks here_
|
|
458
|
+
|
|
459
|
+
## Difficulty
|
|
460
|
+
|
|
461
|
+
**Level:** medium
|
|
462
|
+
|
|
463
|
+
## Notes
|
|
464
|
+
|
|
465
|
+
_Add notes during execution_
|
|
466
|
+
`;
|
|
467
|
+
}
|
|
468
|
+
//# sourceMappingURL=fileSystem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileSystem.js","sourceRoot":"","sources":["../../src/core/fileSystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function isGitRepo(cwd?: string): Promise<boolean>;
|
|
2
|
+
export declare function initGit(cwd?: string): Promise<void>;
|
|
3
|
+
export declare function commitCheckpoint(message: string, cwd?: string): Promise<boolean>;
|
|
4
|
+
export declare function getRecentCommits(limit?: number, cwd?: string): Promise<string[]>;
|
|
5
|
+
export declare function getGitStatus(cwd?: string): Promise<string>;
|
|
6
|
+
//# sourceMappingURL=git.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":"AAKA,wBAAsB,SAAS,CAAC,GAAG,SAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAErE;AAED,wBAAsB,OAAO,CAAC,GAAG,SAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhE;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,GAAG,SAAgB,GAClB,OAAO,CAAC,OAAO,CAAC,CAmBlB;AAED,wBAAsB,gBAAgB,CACpC,KAAK,SAAI,EACT,GAAG,SAAgB,GAClB,OAAO,CAAC,MAAM,EAAE,CAAC,CAQnB;AAED,wBAAsB,YAAY,CAAC,GAAG,SAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CASvE"}
|
package/dist/core/git.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.isGitRepo = isGitRepo;
|
|
7
|
+
exports.initGit = initGit;
|
|
8
|
+
exports.commitCheckpoint = commitCheckpoint;
|
|
9
|
+
exports.getRecentCommits = getRecentCommits;
|
|
10
|
+
exports.getGitStatus = getGitStatus;
|
|
11
|
+
const simple_git_1 = __importDefault(require("simple-git"));
|
|
12
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
13
|
+
const path_1 = __importDefault(require("path"));
|
|
14
|
+
const logger_1 = require("../utils/logger");
|
|
15
|
+
async function isGitRepo(cwd = process.cwd()) {
|
|
16
|
+
return fs_extra_1.default.existsSync(path_1.default.join(cwd, '.git'));
|
|
17
|
+
}
|
|
18
|
+
async function initGit(cwd = process.cwd()) {
|
|
19
|
+
const git = (0, simple_git_1.default)(cwd);
|
|
20
|
+
await git.init();
|
|
21
|
+
logger_1.logger.success('Git repository initialized.');
|
|
22
|
+
}
|
|
23
|
+
async function commitCheckpoint(message, cwd = process.cwd()) {
|
|
24
|
+
try {
|
|
25
|
+
const git = (0, simple_git_1.default)(cwd);
|
|
26
|
+
const status = await git.status();
|
|
27
|
+
if (status.files.length === 0) {
|
|
28
|
+
logger_1.logger.warn('Nothing to commit — working tree clean.');
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
await git.add('.');
|
|
32
|
+
await git.commit(message);
|
|
33
|
+
logger_1.logger.success(`Committed: "${message}"`);
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
38
|
+
logger_1.logger.warn(`Git commit skipped: ${msg}`);
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async function getRecentCommits(limit = 5, cwd = process.cwd()) {
|
|
43
|
+
try {
|
|
44
|
+
const git = (0, simple_git_1.default)(cwd);
|
|
45
|
+
const log = await git.log({ maxCount: limit });
|
|
46
|
+
return log.all.map((c) => `${c.date.slice(0, 10)} — ${c.message}`);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return [];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
async function getGitStatus(cwd = process.cwd()) {
|
|
53
|
+
try {
|
|
54
|
+
const git = (0, simple_git_1.default)(cwd);
|
|
55
|
+
const status = await git.status();
|
|
56
|
+
const changed = status.files.length;
|
|
57
|
+
return changed === 0 ? 'clean' : `${changed} file(s) modified`;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return 'no git';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/core/git.ts"],"names":[],"mappings":";;;;;AAKA,8BAEC;AAED,0BAIC;AAED,4CAsBC;AAED,4CAWC;AAED,oCASC;AA7DD,4DAAkD;AAClD,wDAA0B;AAC1B,gDAAwB;AACxB,4CAAyC;AAElC,KAAK,UAAU,SAAS,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACjD,OAAO,kBAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;AAC/C,CAAC;AAEM,KAAK,UAAU,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC/C,MAAM,GAAG,GAAc,IAAA,oBAAS,EAAC,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IACjB,eAAM,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;AAChD,CAAC;AAEM,KAAK,UAAU,gBAAgB,CACpC,OAAe,EACf,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAEnB,IAAI,CAAC;QACH,MAAM,GAAG,GAAc,IAAA,oBAAS,EAAC,GAAG,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;QAElC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,eAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;YACvD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnB,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1B,eAAM,CAAC,OAAO,CAAC,eAAe,OAAO,GAAG,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,eAAM,CAAC,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,gBAAgB,CACpC,KAAK,GAAG,CAAC,EACT,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAEnB,IAAI,CAAC;QACH,MAAM,GAAG,GAAc,IAAA,oBAAS,EAAC,GAAG,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/C,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,YAAY,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACpD,IAAI,CAAC;QACH,MAAM,GAAG,GAAc,IAAA,oBAAS,EAAC,GAAG,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QACpC,OAAO,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,mBAAmB,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { BrainForgeConfig } from './config';
|
|
2
|
+
export declare function getAgentTemplates(config: BrainForgeConfig): Record<string, string>;
|
|
3
|
+
export declare function getCommandTemplates(config: BrainForgeConfig): Record<string, string>;
|
|
4
|
+
export declare function getRootFileTemplates(config: BrainForgeConfig): Record<string, string>;
|
|
5
|
+
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/core/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqTlF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAonBpF;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgJrF"}
|