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.
Files changed (51) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +254 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +47 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/dashboard.d.ts +2 -0
  8. package/dist/commands/dashboard.d.ts.map +1 -0
  9. package/dist/commands/dashboard.js +46 -0
  10. package/dist/commands/dashboard.js.map +1 -0
  11. package/dist/commands/doctor.d.ts +2 -0
  12. package/dist/commands/doctor.d.ts.map +1 -0
  13. package/dist/commands/doctor.js +90 -0
  14. package/dist/commands/doctor.js.map +1 -0
  15. package/dist/commands/init.d.ts +2 -0
  16. package/dist/commands/init.d.ts.map +1 -0
  17. package/dist/commands/init.js +203 -0
  18. package/dist/commands/init.js.map +1 -0
  19. package/dist/commands/updateDashboard.d.ts +2 -0
  20. package/dist/commands/updateDashboard.d.ts.map +1 -0
  21. package/dist/commands/updateDashboard.js +31 -0
  22. package/dist/commands/updateDashboard.js.map +1 -0
  23. package/dist/core/config.d.ts +25 -0
  24. package/dist/core/config.d.ts.map +1 -0
  25. package/dist/core/config.js +52 -0
  26. package/dist/core/config.js.map +1 -0
  27. package/dist/core/dashboard.d.ts +25 -0
  28. package/dist/core/dashboard.d.ts.map +1 -0
  29. package/dist/core/dashboard.js +76 -0
  30. package/dist/core/dashboard.js.map +1 -0
  31. package/dist/core/dashboardTemplate.d.ts +3 -0
  32. package/dist/core/dashboardTemplate.d.ts.map +1 -0
  33. package/dist/core/dashboardTemplate.js +324 -0
  34. package/dist/core/dashboardTemplate.js.map +1 -0
  35. package/dist/core/fileSystem.d.ts +3 -0
  36. package/dist/core/fileSystem.d.ts.map +1 -0
  37. package/dist/core/fileSystem.js +468 -0
  38. package/dist/core/fileSystem.js.map +1 -0
  39. package/dist/core/git.d.ts +6 -0
  40. package/dist/core/git.d.ts.map +1 -0
  41. package/dist/core/git.js +63 -0
  42. package/dist/core/git.js.map +1 -0
  43. package/dist/core/templates.d.ts +5 -0
  44. package/dist/core/templates.d.ts.map +1 -0
  45. package/dist/core/templates.js +1065 -0
  46. package/dist/core/templates.js.map +1 -0
  47. package/dist/utils/logger.d.ts +10 -0
  48. package/dist/utils/logger.d.ts.map +1 -0
  49. package/dist/utils/logger.js +17 -0
  50. package/dist/utils/logger.js.map +1 -0
  51. package/package.json +54 -0
@@ -0,0 +1,203 @@
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.initCommand = initCommand;
7
+ const inquirer_1 = __importDefault(require("inquirer"));
8
+ const ora_1 = __importDefault(require("ora"));
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const path_1 = __importDefault(require("path"));
11
+ const config_1 = require("../core/config");
12
+ const fileSystem_1 = require("../core/fileSystem");
13
+ const git_1 = require("../core/git");
14
+ const logger_1 = require("../utils/logger");
15
+ async function initCommand() {
16
+ const cwd = process.cwd();
17
+ logger_1.logger.title('⚡ BrainForge — Project Initialization');
18
+ logger_1.logger.divider();
19
+ if ((0, config_1.configExists)(cwd)) {
20
+ logger_1.logger.warn('BrainForge is already initialized in this directory.');
21
+ const { overwrite } = await inquirer_1.default.prompt([
22
+ {
23
+ type: 'confirm',
24
+ name: 'overwrite',
25
+ message: 'Re-initialize? This will overwrite .brainforge/ files.',
26
+ default: false,
27
+ },
28
+ ]);
29
+ if (!overwrite) {
30
+ logger_1.logger.info('Aborted. Your project is unchanged.');
31
+ return;
32
+ }
33
+ }
34
+ console.log();
35
+ logger_1.logger.info('Answer a few questions to set up your project.\n');
36
+ const answers = await inquirer_1.default.prompt([
37
+ {
38
+ type: 'input',
39
+ name: 'projectName',
40
+ message: 'Project name:',
41
+ default: path_1.default.basename(cwd),
42
+ validate: (v) => v.trim().length > 0 || 'Project name cannot be empty',
43
+ },
44
+ {
45
+ type: 'input',
46
+ name: 'description',
47
+ message: 'Short description:',
48
+ default: '',
49
+ },
50
+ {
51
+ type: 'list',
52
+ name: 'projectType',
53
+ message: 'Project type:',
54
+ choices: [
55
+ { name: 'Web Application', value: 'web-app' },
56
+ { name: 'REST API / Backend', value: 'api' },
57
+ { name: 'Full-Stack (Frontend + API)', value: 'fullstack' },
58
+ { name: 'Mobile App (React Native)', value: 'mobile' },
59
+ { name: 'CLI Tool', value: 'cli' },
60
+ { name: 'Dashboard / Admin Panel', value: 'dashboard' },
61
+ { name: 'Other', value: 'other' },
62
+ ],
63
+ },
64
+ {
65
+ type: 'checkbox',
66
+ name: 'stack',
67
+ message: 'Select your stack (space to select, enter to confirm):',
68
+ choices: [
69
+ 'Node.js',
70
+ 'TypeScript',
71
+ 'React',
72
+ 'Next.js',
73
+ 'Vue.js',
74
+ 'Express',
75
+ 'FastAPI (Python)',
76
+ 'Django',
77
+ 'Laravel (PHP)',
78
+ 'PostgreSQL',
79
+ 'MongoDB',
80
+ 'MySQL',
81
+ 'TailwindCSS',
82
+ 'Docker',
83
+ ],
84
+ validate: (v) => v.length > 0 || 'Select at least one technology',
85
+ },
86
+ {
87
+ type: 'list',
88
+ name: 'userLevel',
89
+ message: 'Your actual coding level:',
90
+ choices: [
91
+ { name: 'Beginner (< 1 year)', value: 'beginner' },
92
+ { name: 'Intermediate (1-3 years)', value: 'intermediate' },
93
+ { name: 'Advanced (3+ years)', value: 'professional' },
94
+ ],
95
+ },
96
+ {
97
+ type: 'list',
98
+ name: 'codeLevel',
99
+ message: 'Target code level for this project:',
100
+ choices: [
101
+ { name: 'Beginner — simple, direct, few abstractions', value: 'beginner' },
102
+ { name: 'Intermediate — clean, structured, good practices', value: 'intermediate' },
103
+ { name: 'Academic-Realistic — credible student code (recommended for school)', value: 'academic-realistic' },
104
+ { name: 'Professional — strict, tested, scalable', value: 'professional' },
105
+ ],
106
+ },
107
+ {
108
+ type: 'confirm',
109
+ name: 'isAcademic',
110
+ message: 'Is this a school/academic project?',
111
+ default: false,
112
+ },
113
+ {
114
+ type: 'confirm',
115
+ name: 'useDocker',
116
+ message: 'Will you use Docker?',
117
+ default: false,
118
+ },
119
+ {
120
+ type: 'confirm',
121
+ name: 'useDatabase',
122
+ message: 'Will you use a database?',
123
+ default: false,
124
+ },
125
+ {
126
+ type: 'confirm',
127
+ name: 'useAuth',
128
+ message: 'Will you need authentication?',
129
+ default: false,
130
+ },
131
+ {
132
+ type: 'confirm',
133
+ name: 'useAdminDashboard',
134
+ message: 'Will you need an admin dashboard?',
135
+ default: false,
136
+ },
137
+ {
138
+ type: 'confirm',
139
+ name: 'useResponsive',
140
+ message: 'Should the UI be responsive / mobile-friendly?',
141
+ default: true,
142
+ },
143
+ ]);
144
+ const config = {
145
+ ...config_1.DEFAULT_CONFIG,
146
+ ...answers,
147
+ createdAt: new Date().toISOString(),
148
+ updatedAt: new Date().toISOString(),
149
+ currentPhase: 0,
150
+ totalPhases: 2,
151
+ };
152
+ console.log();
153
+ const spinner = (0, ora_1.default)('Creating BrainForge structure...').start();
154
+ try {
155
+ await (0, fileSystem_1.createBrainforgeStructure)(config, cwd);
156
+ spinner.succeed('Project structure created.');
157
+ }
158
+ catch (err) {
159
+ spinner.fail('Failed to create project structure.');
160
+ const msg = err instanceof Error ? err.message : String(err);
161
+ logger_1.logger.error(msg);
162
+ return;
163
+ }
164
+ // Git setup
165
+ const hasGit = await (0, git_1.isGitRepo)(cwd);
166
+ if (!hasGit) {
167
+ const gitSpinner = (0, ora_1.default)('Initializing Git repository...').start();
168
+ try {
169
+ await (0, git_1.initGit)(cwd);
170
+ gitSpinner.succeed('Git initialized.');
171
+ const committed = await (0, git_1.commitCheckpoint)('chore: initialize BrainForge project structure', cwd);
172
+ if (committed)
173
+ logger_1.logger.success('First checkpoint committed.');
174
+ }
175
+ catch {
176
+ gitSpinner.warn('Git init skipped — not available or failed.');
177
+ }
178
+ }
179
+ else {
180
+ logger_1.logger.info('Git repository detected. Run /checkpoint to commit.');
181
+ }
182
+ // Final summary
183
+ console.log();
184
+ logger_1.logger.divider();
185
+ logger_1.logger.title('✅ BrainForge Initialized!');
186
+ console.log();
187
+ console.log(chalk_1.default.bold('Project:'), config.projectName);
188
+ console.log(chalk_1.default.bold('Stack: '), config.stack.join(', '));
189
+ console.log(chalk_1.default.bold('Level: '), config.codeLevel);
190
+ console.log();
191
+ console.log(chalk_1.default.cyan('Next steps:'));
192
+ console.log(' 1. Open your AI tool (Claude Code, Codex, Gemini CLI…)');
193
+ console.log(' 2. Type:', chalk_1.default.bold('/start-project'));
194
+ console.log(' to document your idea and answer the project questions');
195
+ console.log(' 3. Then:', chalk_1.default.bold('/create-roadmap'));
196
+ console.log(' to break your project into phases');
197
+ console.log();
198
+ console.log(chalk_1.default.gray('Dashboard: .brainforge/dashboard/index.html'));
199
+ console.log(chalk_1.default.gray('Commands: .brainforge/commands/'));
200
+ console.log(chalk_1.default.gray('Agents: .brainforge/agents/'));
201
+ logger_1.logger.divider();
202
+ }
203
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function updateDashboardCommand(): Promise<void>;
2
+ //# sourceMappingURL=updateDashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateDashboard.d.ts","sourceRoot":"","sources":["../../src/commands/updateDashboard.ts"],"names":[],"mappings":"AAKA,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAqB5D"}
@@ -0,0 +1,31 @@
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.updateDashboardCommand = updateDashboardCommand;
7
+ const ora_1 = __importDefault(require("ora"));
8
+ const config_1 = require("../core/config");
9
+ const dashboard_1 = require("../core/dashboard");
10
+ const logger_1 = require("../utils/logger");
11
+ async function updateDashboardCommand() {
12
+ const cwd = process.cwd();
13
+ if (!(0, config_1.configExists)(cwd)) {
14
+ logger_1.logger.error('BrainForge not initialized. Run: brainforge init');
15
+ return;
16
+ }
17
+ const spinner = (0, ora_1.default)('Refreshing dashboard data...').start();
18
+ try {
19
+ const config = (0, config_1.readConfig)(cwd);
20
+ const data = await (0, dashboard_1.generateDashboardData)(config, cwd);
21
+ await (0, dashboard_1.writeDashboardData)(data, cwd);
22
+ spinner.succeed('Dashboard updated.');
23
+ logger_1.logger.info('Open: .brainforge/dashboard/index.html');
24
+ }
25
+ catch (err) {
26
+ spinner.fail('Failed to update dashboard.');
27
+ const msg = err instanceof Error ? err.message : String(err);
28
+ logger_1.logger.error(msg);
29
+ }
30
+ }
31
+ //# sourceMappingURL=updateDashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateDashboard.js","sourceRoot":"","sources":["../../src/commands/updateDashboard.ts"],"names":[],"mappings":";;;;;AAKA,wDAqBC;AA1BD,8CAAsB;AACtB,2CAA0D;AAC1D,iDAA8E;AAC9E,4CAAyC;AAElC,KAAK,UAAU,sBAAsB;IAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,IAAI,CAAC,IAAA,qBAAY,EAAC,GAAG,CAAC,EAAE,CAAC;QACvB,eAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,8BAA8B,CAAC,CAAC,KAAK,EAAE,CAAC;IAE5D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,MAAM,IAAA,iCAAqB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACtD,MAAM,IAAA,8BAAkB,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACpC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACtC,eAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,eAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;AACH,CAAC"}
@@ -0,0 +1,25 @@
1
+ export interface BrainForgeConfig {
2
+ projectName: string;
3
+ description: string;
4
+ projectType: string;
5
+ stack: string[];
6
+ userLevel: string;
7
+ codeLevel: string;
8
+ useDocker: boolean;
9
+ useDatabase: boolean;
10
+ useAuth: boolean;
11
+ useAdminDashboard: boolean;
12
+ useResponsive: boolean;
13
+ isAcademic: boolean;
14
+ currentPhase: number;
15
+ totalPhases: number;
16
+ createdAt: string;
17
+ updatedAt: string;
18
+ }
19
+ export declare const DEFAULT_CONFIG: BrainForgeConfig;
20
+ export declare function getBrainforgeDir(cwd?: string): string;
21
+ export declare function getConfigPath(cwd?: string): string;
22
+ export declare function configExists(cwd?: string): boolean;
23
+ export declare function readConfig(cwd?: string): BrainForgeConfig;
24
+ export declare function writeConfig(config: BrainForgeConfig, cwd?: string): void;
25
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,cAAc,EAAE,gBAiB5B,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,GAAG,SAAgB,GAAG,MAAM,CAE5D;AAED,wBAAgB,aAAa,CAAC,GAAG,SAAgB,GAAG,MAAM,CAEzD;AAED,wBAAgB,YAAY,CAAC,GAAG,SAAgB,GAAG,OAAO,CAEzD;AAED,wBAAgB,UAAU,CAAC,GAAG,SAAgB,GAAG,gBAAgB,CAMhE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,SAAgB,GAAG,IAAI,CAG/E"}
@@ -0,0 +1,52 @@
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.DEFAULT_CONFIG = void 0;
7
+ exports.getBrainforgeDir = getBrainforgeDir;
8
+ exports.getConfigPath = getConfigPath;
9
+ exports.configExists = configExists;
10
+ exports.readConfig = readConfig;
11
+ exports.writeConfig = writeConfig;
12
+ const fs_extra_1 = __importDefault(require("fs-extra"));
13
+ const path_1 = __importDefault(require("path"));
14
+ exports.DEFAULT_CONFIG = {
15
+ projectName: 'My BrainForge Project',
16
+ description: '',
17
+ projectType: 'web-app',
18
+ stack: ['Node.js'],
19
+ userLevel: 'intermediate',
20
+ codeLevel: 'academic-realistic',
21
+ useDocker: false,
22
+ useDatabase: false,
23
+ useAuth: false,
24
+ useAdminDashboard: false,
25
+ useResponsive: true,
26
+ isAcademic: false,
27
+ currentPhase: 0,
28
+ totalPhases: 0,
29
+ createdAt: new Date().toISOString(),
30
+ updatedAt: new Date().toISOString(),
31
+ };
32
+ function getBrainforgeDir(cwd = process.cwd()) {
33
+ return path_1.default.join(cwd, '.brainforge');
34
+ }
35
+ function getConfigPath(cwd = process.cwd()) {
36
+ return path_1.default.join(getBrainforgeDir(cwd), 'config.json');
37
+ }
38
+ function configExists(cwd = process.cwd()) {
39
+ return fs_extra_1.default.existsSync(getConfigPath(cwd));
40
+ }
41
+ function readConfig(cwd = process.cwd()) {
42
+ const configPath = getConfigPath(cwd);
43
+ if (!fs_extra_1.default.existsSync(configPath)) {
44
+ throw new Error('BrainForge not initialized. Run: brainforge init');
45
+ }
46
+ return fs_extra_1.default.readJsonSync(configPath);
47
+ }
48
+ function writeConfig(config, cwd = process.cwd()) {
49
+ config.updatedAt = new Date().toISOString();
50
+ fs_extra_1.default.writeJsonSync(getConfigPath(cwd), config, { spaces: 2 });
51
+ }
52
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":";;;;;;AAyCA,4CAEC;AAED,sCAEC;AAED,oCAEC;AAED,gCAMC;AAED,kCAGC;AAhED,wDAA0B;AAC1B,gDAAwB;AAqBX,QAAA,cAAc,GAAqB;IAC9C,WAAW,EAAE,uBAAuB;IACpC,WAAW,EAAE,EAAE;IACf,WAAW,EAAE,SAAS;IACtB,KAAK,EAAE,CAAC,SAAS,CAAC;IAClB,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,oBAAoB;IAC/B,SAAS,EAAE,KAAK;IAChB,WAAW,EAAE,KAAK;IAClB,OAAO,EAAE,KAAK;IACd,iBAAiB,EAAE,KAAK;IACxB,aAAa,EAAE,IAAI;IACnB,UAAU,EAAE,KAAK;IACjB,YAAY,EAAE,CAAC;IACf,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;IACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;CACpC,CAAC;AAEF,SAAgB,gBAAgB,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAClD,OAAO,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,aAAa,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC/C,OAAO,cAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC;AACzD,CAAC;AAED,SAAgB,YAAY,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC9C,OAAO,kBAAE,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAgB,UAAU,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC5C,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,kBAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,kBAAE,CAAC,YAAY,CAAC,UAAU,CAAqB,CAAC;AACzD,CAAC;AAED,SAAgB,WAAW,CAAC,MAAwB,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACvE,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,kBAAE,CAAC,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { BrainForgeConfig } from './config';
2
+ export interface DashboardData {
3
+ projectName: string;
4
+ description: string;
5
+ stack: string[];
6
+ userLevel: string;
7
+ codeLevel: string;
8
+ projectType: string;
9
+ currentPhase: number;
10
+ totalPhases: number;
11
+ phases: PhaseEntry[];
12
+ recentCommits: string[];
13
+ gitStatus: string;
14
+ knownBugs: string[];
15
+ decisions: string[];
16
+ updatedAt: string;
17
+ }
18
+ export interface PhaseEntry {
19
+ id: number;
20
+ title: string;
21
+ status: 'pending' | 'in-progress' | 'done';
22
+ }
23
+ export declare function generateDashboardData(config: BrainForgeConfig, cwd?: string): Promise<DashboardData>;
24
+ export declare function writeDashboardData(data: DashboardData, cwd?: string): Promise<void>;
25
+ //# sourceMappingURL=dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/core/dashboard.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAoB,MAAM,UAAU,CAAC;AAG9D,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,MAAM,CAAC;CAC5C;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,gBAAgB,EACxB,GAAG,SAAgB,GAClB,OAAO,CAAC,aAAa,CAAC,CAiExB;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,aAAa,EACnB,GAAG,SAAgB,GAClB,OAAO,CAAC,IAAI,CAAC,CAIf"}
@@ -0,0 +1,76 @@
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.generateDashboardData = generateDashboardData;
7
+ exports.writeDashboardData = writeDashboardData;
8
+ const fs_extra_1 = __importDefault(require("fs-extra"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const config_1 = require("./config");
11
+ const git_1 = require("./git");
12
+ async function generateDashboardData(config, cwd = process.cwd()) {
13
+ const brainDir = (0, config_1.getBrainforgeDir)(cwd);
14
+ const phasesDir = path_1.default.join(brainDir, 'phases');
15
+ const phases = [];
16
+ if (fs_extra_1.default.existsSync(phasesDir)) {
17
+ const files = fs_extra_1.default
18
+ .readdirSync(phasesDir)
19
+ .filter((f) => f.endsWith('.md'))
20
+ .sort();
21
+ for (const file of files) {
22
+ const content = fs_extra_1.default.readFileSync(path_1.default.join(phasesDir, file), 'utf-8');
23
+ const titleMatch = content.match(/^#\s+(.+)/m);
24
+ const title = titleMatch ? titleMatch[1] : file.replace('.md', '');
25
+ const statusMatch = content.match(/\*\*Status\*\*:\s*(.+)/i);
26
+ const rawStatus = statusMatch ? statusMatch[1].trim().toLowerCase() : 'pending';
27
+ const status = rawStatus === 'done' ? 'done' : rawStatus === 'in-progress' ? 'in-progress' : 'pending';
28
+ const idMatch = file.match(/(\d+)/);
29
+ phases.push({ id: idMatch ? parseInt(idMatch[1]) : phases.length + 1, title, status });
30
+ }
31
+ }
32
+ const knownBugsPath = path_1.default.join(brainDir, 'memory', 'known-bugs.md');
33
+ let knownBugs = [];
34
+ if (fs_extra_1.default.existsSync(knownBugsPath)) {
35
+ const content = fs_extra_1.default.readFileSync(knownBugsPath, 'utf-8');
36
+ knownBugs = content
37
+ .split('\n')
38
+ .filter((l) => l.startsWith('- '))
39
+ .slice(0, 5)
40
+ .map((l) => l.slice(2));
41
+ }
42
+ const decisionsPath = path_1.default.join(brainDir, 'decisions.md');
43
+ let decisions = [];
44
+ if (fs_extra_1.default.existsSync(decisionsPath)) {
45
+ const content = fs_extra_1.default.readFileSync(decisionsPath, 'utf-8');
46
+ decisions = content
47
+ .split('\n')
48
+ .filter((l) => l.startsWith('- '))
49
+ .slice(0, 5)
50
+ .map((l) => l.slice(2));
51
+ }
52
+ const recentCommits = await (0, git_1.getRecentCommits)(5, cwd);
53
+ const gitStatus = await (0, git_1.getGitStatus)(cwd);
54
+ return {
55
+ projectName: config.projectName,
56
+ description: config.description,
57
+ stack: config.stack,
58
+ userLevel: config.userLevel,
59
+ codeLevel: config.codeLevel,
60
+ projectType: config.projectType,
61
+ currentPhase: config.currentPhase,
62
+ totalPhases: config.totalPhases,
63
+ phases,
64
+ recentCommits,
65
+ gitStatus,
66
+ knownBugs,
67
+ decisions,
68
+ updatedAt: new Date().toISOString(),
69
+ };
70
+ }
71
+ async function writeDashboardData(data, cwd = process.cwd()) {
72
+ const dashDir = path_1.default.join((0, config_1.getBrainforgeDir)(cwd), 'dashboard');
73
+ await fs_extra_1.default.ensureDir(dashDir);
74
+ await fs_extra_1.default.writeJson(path_1.default.join(dashDir, 'data.json'), data, { spaces: 2 });
75
+ }
76
+ //# sourceMappingURL=dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/core/dashboard.ts"],"names":[],"mappings":";;;;;AA4BA,sDAoEC;AAED,gDAOC;AAzGD,wDAA0B;AAC1B,gDAAwB;AACxB,qCAA8D;AAC9D,+BAAuD;AAyBhD,KAAK,UAAU,qBAAqB,CACzC,MAAwB,EACxB,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAEnB,MAAM,QAAQ,GAAG,IAAA,yBAAgB,EAAC,GAAG,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,MAAM,GAAiB,EAAE,CAAC;IAEhC,IAAI,kBAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,kBAAE;aACb,WAAW,CAAC,SAAS,CAAC;aACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aAChC,IAAI,EAAE,CAAC;QAEV,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,kBAAE,CAAC,YAAY,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;YACrE,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC/C,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACnE,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7D,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YAChF,MAAM,MAAM,GACV,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1F,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;IACrE,IAAI,SAAS,GAAa,EAAE,CAAC;IAC7B,IAAI,kBAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,kBAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACxD,SAAS,GAAG,OAAO;aAChB,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aACjC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC1D,IAAI,SAAS,GAAa,EAAE,CAAC;IAC7B,IAAI,kBAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,kBAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACxD,SAAS,GAAG,OAAO;aAChB,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aACjC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,IAAA,sBAAgB,EAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,MAAM,IAAA,kBAAY,EAAC,GAAG,CAAC,CAAC;IAE1C,OAAO;QACL,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,MAAM;QACN,aAAa;QACb,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,kBAAkB,CACtC,IAAmB,EACnB,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAEnB,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,IAAA,yBAAgB,EAAC,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC;IAC9D,MAAM,kBAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function getDashboardHtml(): string;
2
+ export declare function getDashboardCss(): string;
3
+ //# sourceMappingURL=dashboardTemplate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboardTemplate.d.ts","sourceRoot":"","sources":["../../src/core/dashboardTemplate.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,IAAI,MAAM,CAmHzC;AAED,wBAAgB,eAAe,IAAI,MAAM,CA0MxC"}