brainforge-ai 1.2.0 → 1.2.2
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/README.md +193 -570
- package/dist/cli.js +47 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/defensePack.d.ts +2 -0
- package/dist/commands/defensePack.d.ts.map +1 -0
- package/dist/commands/defensePack.js +269 -0
- package/dist/commands/defensePack.js.map +1 -0
- package/dist/commands/difficulty.d.ts +2 -0
- package/dist/commands/difficulty.d.ts.map +1 -0
- package/dist/commands/difficulty.js +177 -0
- package/dist/commands/difficulty.js.map +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +53 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +24 -1
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/init.d.ts +6 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +64 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/professorCheck.d.ts +2 -0
- package/dist/commands/professorCheck.d.ts.map +1 -0
- package/dist/commands/professorCheck.js +203 -0
- package/dist/commands/professorCheck.js.map +1 -0
- package/dist/commands/simplify.d.ts +2 -0
- package/dist/commands/simplify.d.ts.map +1 -0
- package/dist/commands/simplify.js +174 -0
- package/dist/commands/simplify.js.map +1 -0
- package/dist/commands/status.d.ts +2 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +105 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/study.d.ts +2 -0
- package/dist/commands/study.d.ts.map +1 -0
- package/dist/commands/study.js +193 -0
- package/dist/commands/study.js.map +1 -0
- package/dist/commands/update.js +2 -2
- package/dist/commands/update.js.map +1 -1
- package/dist/core/dashboard.d.ts +41 -0
- package/dist/core/dashboard.d.ts.map +1 -1
- package/dist/core/dashboard.js +121 -0
- package/dist/core/dashboard.js.map +1 -1
- package/dist/core/dashboardTemplate.d.ts.map +1 -1
- package/dist/core/dashboardTemplate.js +523 -92
- package/dist/core/dashboardTemplate.js.map +1 -1
- package/dist/core/fileSystem.d.ts.map +1 -1
- package/dist/core/fileSystem.js +175 -0
- package/dist/core/fileSystem.js.map +1 -1
- package/dist/core/templates.d.ts.map +1 -1
- package/dist/core/templates.js +652 -233
- package/dist/core/templates.js.map +1 -1
- package/package.json +5 -1
package/dist/commands/help.js
CHANGED
|
@@ -9,6 +9,12 @@ const config_1 = require("../core/config");
|
|
|
9
9
|
const logger_1 = require("../utils/logger");
|
|
10
10
|
const CLI_COMMANDS = [
|
|
11
11
|
{ cmd: 'brainforge init', desc: 'Initialize BrainForge in the current directory' },
|
|
12
|
+
{ cmd: 'brainforge status', desc: 'Show compact project summary' },
|
|
13
|
+
{ cmd: 'brainforge study', desc: 'Initialize Study Mode files for understanding the project' },
|
|
14
|
+
{ cmd: 'brainforge difficulty', desc: 'Generate difficulty analysis workflow' },
|
|
15
|
+
{ cmd: 'brainforge defense-pack', desc: 'Generate oral defense preparation workflow' },
|
|
16
|
+
{ cmd: 'brainforge simplify', desc: 'Generate prompt to simplify code to your level' },
|
|
17
|
+
{ cmd: 'brainforge professor-check', desc: 'Generate prompt to detect AI-generated code' },
|
|
12
18
|
{ cmd: 'brainforge serve', desc: 'Live dashboard on localhost:3000 (auto-reloads)' },
|
|
13
19
|
{ cmd: 'brainforge dashboard', desc: 'Open the HTML dashboard in the browser' },
|
|
14
20
|
{ cmd: 'brainforge update-dashboard', desc: 'Refresh dashboard data from project state' },
|
|
@@ -43,8 +49,12 @@ const SLASH_COMMANDS = [
|
|
|
43
49
|
],
|
|
44
50
|
},
|
|
45
51
|
{
|
|
46
|
-
group: '
|
|
52
|
+
group: 'Study & Defense',
|
|
47
53
|
commands: [
|
|
54
|
+
{ cmd: '/router', desc: 'Choose the best next command or workflow' },
|
|
55
|
+
{ cmd: '/study-phase N', desc: 'Generate study material for a phase' },
|
|
56
|
+
{ cmd: '/analyze-difficulty', desc: 'Score file complexity and create study plan' },
|
|
57
|
+
{ cmd: '/defense-pack', desc: 'Generate full oral defense preparation' },
|
|
48
58
|
{ cmd: '/explain-my-code', desc: 'Generate an explanation for your professor or team' },
|
|
49
59
|
{ cmd: '/professor-check', desc: 'Detect code that looks suspiciously AI-generated' },
|
|
50
60
|
{ cmd: '/generate-report', desc: 'Generate an academic report template' },
|
|
@@ -117,6 +127,19 @@ function helpCommand() {
|
|
|
117
127
|
];
|
|
118
128
|
console.log(' ' + steps.map((s) => chalk_1.default.cyan(s)).join(chalk_1.default.gray(' → ')));
|
|
119
129
|
console.log();
|
|
130
|
+
// Student workflow
|
|
131
|
+
logger_1.logger.divider();
|
|
132
|
+
console.log(chalk_1.default.bold.white(' For Students\n'));
|
|
133
|
+
const studentSteps = [
|
|
134
|
+
'brainforge study',
|
|
135
|
+
'/study-phase 1',
|
|
136
|
+
'brainforge difficulty',
|
|
137
|
+
'/analyze-difficulty',
|
|
138
|
+
'brainforge defense-pack',
|
|
139
|
+
'/defense-pack',
|
|
140
|
+
];
|
|
141
|
+
console.log(' ' + studentSteps.map((s) => chalk_1.default.yellow(s)).join(chalk_1.default.gray(' → ')));
|
|
142
|
+
console.log();
|
|
120
143
|
// Docs link
|
|
121
144
|
console.log(chalk_1.default.gray(' Docs: ') +
|
|
122
145
|
chalk_1.default.underline('https://github.com/MEHDImp4/brainforge-ai'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AASA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AASA,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAiBD,wBAAsB,WAAW,CAAC,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqPvE"}
|
package/dist/commands/init.js
CHANGED
|
@@ -12,11 +12,26 @@ const config_1 = require("../core/config");
|
|
|
12
12
|
const fileSystem_1 = require("../core/fileSystem");
|
|
13
13
|
const git_1 = require("../core/git");
|
|
14
14
|
const logger_1 = require("../utils/logger");
|
|
15
|
-
|
|
15
|
+
const STUDENT_DEFAULTS = {
|
|
16
|
+
projectName: path_1.default.basename(process.cwd()),
|
|
17
|
+
description: '',
|
|
18
|
+
projectType: 'web-app',
|
|
19
|
+
stack: ['TypeScript', 'Node.js'],
|
|
20
|
+
userLevel: 'intermediate',
|
|
21
|
+
codeLevel: 'academic-realistic',
|
|
22
|
+
isAcademic: true,
|
|
23
|
+
useDocker: false,
|
|
24
|
+
useDatabase: false,
|
|
25
|
+
useAuth: false,
|
|
26
|
+
useAdminDashboard: false,
|
|
27
|
+
useResponsive: true,
|
|
28
|
+
};
|
|
29
|
+
async function initCommand(opts = {}) {
|
|
16
30
|
const cwd = process.cwd();
|
|
31
|
+
const nonInteractive = opts.yes === true;
|
|
17
32
|
logger_1.logger.title('⚡ BrainForge — Project Initialization');
|
|
18
33
|
logger_1.logger.divider();
|
|
19
|
-
if ((0, config_1.configExists)(cwd)) {
|
|
34
|
+
if ((0, config_1.configExists)(cwd) && !nonInteractive) {
|
|
20
35
|
logger_1.logger.warn('BrainForge is already initialized in this directory.');
|
|
21
36
|
const { overwrite } = await inquirer_1.default.prompt([
|
|
22
37
|
{
|
|
@@ -31,6 +46,53 @@ async function initCommand() {
|
|
|
31
46
|
return;
|
|
32
47
|
}
|
|
33
48
|
}
|
|
49
|
+
if (nonInteractive) {
|
|
50
|
+
const defaults = { ...STUDENT_DEFAULTS };
|
|
51
|
+
defaults.projectName = path_1.default.basename(cwd) || 'BrainForge Project';
|
|
52
|
+
logger_1.logger.info(`Non-interactive mode — using ${opts.preset === 'student' ? 'student' : 'default'} preset.`);
|
|
53
|
+
const config = {
|
|
54
|
+
...config_1.DEFAULT_CONFIG,
|
|
55
|
+
...defaults,
|
|
56
|
+
createdAt: new Date().toISOString(),
|
|
57
|
+
updatedAt: new Date().toISOString(),
|
|
58
|
+
currentPhase: 0,
|
|
59
|
+
totalPhases: 2,
|
|
60
|
+
};
|
|
61
|
+
console.log();
|
|
62
|
+
const spinner = (0, ora_1.default)('Creating BrainForge structure...').start();
|
|
63
|
+
try {
|
|
64
|
+
await (0, fileSystem_1.createBrainforgeStructure)(config, cwd);
|
|
65
|
+
spinner.succeed('Project structure created.');
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
spinner.fail('Failed to create project structure.');
|
|
69
|
+
logger_1.logger.error(err instanceof Error ? err.message : String(err));
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const hasGit = await (0, git_1.isGitRepo)(cwd);
|
|
73
|
+
if (!hasGit) {
|
|
74
|
+
const gitSpinner = (0, ora_1.default)('Initializing Git repository...').start();
|
|
75
|
+
try {
|
|
76
|
+
await (0, git_1.initGit)(cwd);
|
|
77
|
+
gitSpinner.succeed('Git initialized.');
|
|
78
|
+
const committed = await (0, git_1.commitCheckpoint)('chore: initialize BrainForge project structure', cwd);
|
|
79
|
+
if (committed)
|
|
80
|
+
logger_1.logger.success('First checkpoint committed.');
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
gitSpinner.warn('Git init skipped — not available or failed.');
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
console.log();
|
|
87
|
+
logger_1.logger.divider();
|
|
88
|
+
logger_1.logger.title('✅ BrainForge Initialized!');
|
|
89
|
+
console.log();
|
|
90
|
+
console.log(chalk_1.default.bold('Project:'), config.projectName);
|
|
91
|
+
console.log(chalk_1.default.bold('Stack: '), config.stack.join(', '));
|
|
92
|
+
console.log(chalk_1.default.bold('Level: '), config.codeLevel);
|
|
93
|
+
logger_1.logger.divider();
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
34
96
|
console.log();
|
|
35
97
|
logger_1.logger.info('Answer a few questions to set up your project.\n');
|
|
36
98
|
const answers = await inquirer_1.default.prompt([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"professorCheck.d.ts","sourceRoot":"","sources":["../../src/commands/professorCheck.ts"],"names":[],"mappings":"AAMA,wBAAgB,qBAAqB,IAAI,IAAI,CAmE5C"}
|
|
@@ -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.professorCheckCommand = professorCheckCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const config_1 = require("../core/config");
|
|
11
|
+
const logger_1 = require("../utils/logger");
|
|
12
|
+
function professorCheckCommand() {
|
|
13
|
+
const cwd = process.cwd();
|
|
14
|
+
if (!(0, config_1.configExists)(cwd)) {
|
|
15
|
+
logger_1.logger.error('BrainForge not initialized. Run: brainforge init');
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const config = (0, config_1.readConfig)(cwd);
|
|
19
|
+
const brainDir = (0, config_1.getBrainforgeDir)(cwd);
|
|
20
|
+
logger_1.logger.title('⚡ BrainForge — Professor Check');
|
|
21
|
+
logger_1.logger.divider();
|
|
22
|
+
console.log();
|
|
23
|
+
logger_1.logger.info(`Project: ${chalk_1.default.white(config.projectName)}`);
|
|
24
|
+
logger_1.logger.info(`Code level: ${chalk_1.default.cyan(config.codeLevel)}`);
|
|
25
|
+
logger_1.logger.info(`User level: ${chalk_1.default.cyan(config.userLevel)}`);
|
|
26
|
+
logger_1.logger.info(`Academic: ${chalk_1.default.cyan(config.isAcademic ? 'Yes' : 'No')}`);
|
|
27
|
+
console.log();
|
|
28
|
+
console.log(chalk_1.default.bold('What Professor Check does'));
|
|
29
|
+
console.log(chalk_1.default.gray(' Paste the prompt below into your AI tool to detect code patterns\n' +
|
|
30
|
+
' that look suspiciously AI-generated or too advanced for your level.\n'));
|
|
31
|
+
// Write workflow files
|
|
32
|
+
const commandsDir = path_1.default.join(brainDir, 'commands');
|
|
33
|
+
const reportsDir = path_1.default.join(brainDir, 'reports');
|
|
34
|
+
fs_extra_1.default.ensureDirSync(commandsDir);
|
|
35
|
+
fs_extra_1.default.ensureDirSync(reportsDir);
|
|
36
|
+
fs_extra_1.default.writeFileSync(path_1.default.join(commandsDir, 'professor-check.md'), buildProfessorCheckCmdFile(config.projectName, config.codeLevel, config.isAcademic));
|
|
37
|
+
fs_extra_1.default.writeFileSync(path_1.default.join(reportsDir, 'professor-check.md'), buildProfessorCheckReportTemplate(config.projectName, config.codeLevel, config.isAcademic));
|
|
38
|
+
logger_1.logger.divider();
|
|
39
|
+
console.log(chalk_1.default.bold.yellow('\n 📋 Prompt — paste into Claude / Codex / Gemini:\n'));
|
|
40
|
+
const prompt = buildProfessorCheckPrompt(config.projectName, config.codeLevel, config.stack, config.userLevel, config.isAcademic);
|
|
41
|
+
console.log(chalk_1.default.white(prompt));
|
|
42
|
+
console.log();
|
|
43
|
+
logger_1.logger.divider();
|
|
44
|
+
logger_1.logger.success('Professor check workflow created.');
|
|
45
|
+
console.log();
|
|
46
|
+
console.log(chalk_1.default.bold('Next step:'));
|
|
47
|
+
console.log(chalk_1.default.gray('Paste this command into your AI tool:\n'));
|
|
48
|
+
console.log(chalk_1.default.cyan(' /professor-check'));
|
|
49
|
+
console.log();
|
|
50
|
+
logger_1.logger.info('Files created:');
|
|
51
|
+
logger_1.logger.info(' .brainforge/commands/professor-check.md');
|
|
52
|
+
logger_1.logger.info(' .brainforge/reports/professor-check.md');
|
|
53
|
+
console.log();
|
|
54
|
+
}
|
|
55
|
+
function buildProfessorCheckCmdFile(projectName, codeLevel, isAcademic) {
|
|
56
|
+
return `# /professor-check
|
|
57
|
+
|
|
58
|
+
## Goal
|
|
59
|
+
|
|
60
|
+
Review the project for academic explainability and level appropriateness.
|
|
61
|
+
|
|
62
|
+
Project: ${projectName}
|
|
63
|
+
Code level: ${codeLevel}
|
|
64
|
+
Academic: ${isAcademic ? 'Yes' : 'No'}
|
|
65
|
+
|
|
66
|
+
This command checks whether the code is understandable, defensible, and realistic for the declared BrainForge code level.
|
|
67
|
+
|
|
68
|
+
## What to check
|
|
69
|
+
|
|
70
|
+
- Code that is too advanced for the selected level
|
|
71
|
+
- Over-engineered architecture
|
|
72
|
+
- Too many abstractions
|
|
73
|
+
- Suspiciously perfect structure
|
|
74
|
+
- Comments that sound AI-generated
|
|
75
|
+
- Functions the student may not be able to explain
|
|
76
|
+
- Dependencies that may be hard to justify
|
|
77
|
+
- Patterns not covered in the student's course
|
|
78
|
+
- Large files that need explanation
|
|
79
|
+
- Missing explanations for important logic
|
|
80
|
+
|
|
81
|
+
## Important
|
|
82
|
+
|
|
83
|
+
Do not make the code worse.
|
|
84
|
+
Do not hide plagiarism.
|
|
85
|
+
Do not remove necessary quality.
|
|
86
|
+
The goal is to make the project easier to understand and defend.
|
|
87
|
+
|
|
88
|
+
## Output
|
|
89
|
+
|
|
90
|
+
Create or update:
|
|
91
|
+
|
|
92
|
+
\`.brainforge/reports/professor-check.md\`
|
|
93
|
+
|
|
94
|
+
The report must include:
|
|
95
|
+
|
|
96
|
+
1. Overall academic realism score from 1 to 10
|
|
97
|
+
2. Files that may be hard to explain
|
|
98
|
+
3. Suspicious complexity
|
|
99
|
+
4. Over-engineered patterns
|
|
100
|
+
5. Comments that should be rewritten or removed
|
|
101
|
+
6. Dependencies to justify
|
|
102
|
+
7. Suggested simplifications
|
|
103
|
+
8. Oral defense questions the professor may ask
|
|
104
|
+
9. Suggested answers in simple language
|
|
105
|
+
`;
|
|
106
|
+
}
|
|
107
|
+
function buildProfessorCheckReportTemplate(projectName, codeLevel, isAcademic) {
|
|
108
|
+
return `# Professor Check Report
|
|
109
|
+
|
|
110
|
+
Generated by BrainForge.
|
|
111
|
+
|
|
112
|
+
## Project
|
|
113
|
+
|
|
114
|
+
- Name: ${projectName}
|
|
115
|
+
- Code level: ${codeLevel}
|
|
116
|
+
- Academic project: ${isAcademic ? 'Yes' : 'No'}
|
|
117
|
+
|
|
118
|
+
## Academic Realism Score
|
|
119
|
+
|
|
120
|
+
Pending review.
|
|
121
|
+
|
|
122
|
+
## Files That May Be Hard To Explain
|
|
123
|
+
|
|
124
|
+
_To be filled by the AI assistant._
|
|
125
|
+
|
|
126
|
+
## Suspicious Complexity
|
|
127
|
+
|
|
128
|
+
_To be filled by the AI assistant._
|
|
129
|
+
|
|
130
|
+
## Over-Engineered Patterns
|
|
131
|
+
|
|
132
|
+
_To be filled by the AI assistant._
|
|
133
|
+
|
|
134
|
+
## Comments Review
|
|
135
|
+
|
|
136
|
+
_To be filled by the AI assistant._
|
|
137
|
+
|
|
138
|
+
## Dependencies To Justify
|
|
139
|
+
|
|
140
|
+
_To be filled by the AI assistant._
|
|
141
|
+
|
|
142
|
+
## Suggested Simplifications
|
|
143
|
+
|
|
144
|
+
_To be filled by the AI assistant._
|
|
145
|
+
|
|
146
|
+
## Possible Professor Questions
|
|
147
|
+
|
|
148
|
+
_To be filled by the AI assistant._
|
|
149
|
+
|
|
150
|
+
## Suggested Answers
|
|
151
|
+
|
|
152
|
+
_To be filled by the AI assistant._
|
|
153
|
+
`;
|
|
154
|
+
}
|
|
155
|
+
function buildProfessorCheckPrompt(projectName, codeLevel, stack, userLevel, isAcademic) {
|
|
156
|
+
const suspiciousPatterns = {
|
|
157
|
+
beginner: [
|
|
158
|
+
'Advanced design patterns (Factory, Observer, Strategy, etc.)',
|
|
159
|
+
'Overly generic abstractions or excessive use of interfaces',
|
|
160
|
+
'Perfect error handling everywhere (try/catch on every function)',
|
|
161
|
+
'Sophisticated type gymnastics or generics',
|
|
162
|
+
'Zero comments while having complex logic',
|
|
163
|
+
'File organization that looks too professional for the level',
|
|
164
|
+
],
|
|
165
|
+
intermediate: [
|
|
166
|
+
'Enterprise-level patterns without justification',
|
|
167
|
+
'Extremely uniform code style across all files (no natural variation)',
|
|
168
|
+
'Overly complex abstractions for simple problems',
|
|
169
|
+
'Documentation that reads like it was auto-generated',
|
|
170
|
+
],
|
|
171
|
+
'academic-realistic': [
|
|
172
|
+
'Enterprise patterns hard to justify to a professor (DI containers, CQRS, etc.)',
|
|
173
|
+
'Perfectly structured code with zero natural "student" inconsistencies',
|
|
174
|
+
'Every function with JSDoc while being described as a student project',
|
|
175
|
+
'Overly generic variable names like "data", "result", "item" everywhere',
|
|
176
|
+
'Zero TODO/FIXME comments despite being a work-in-progress',
|
|
177
|
+
'Uniform indentation and spacing with no natural editing traces',
|
|
178
|
+
],
|
|
179
|
+
professional: [
|
|
180
|
+
'Missing type safety that a professional would always include',
|
|
181
|
+
'Inconsistent patterns that suggest mixed authorship',
|
|
182
|
+
'Security holes that a professional would never leave open',
|
|
183
|
+
],
|
|
184
|
+
};
|
|
185
|
+
const patterns = suspiciousPatterns[codeLevel] || suspiciousPatterns['academic-realistic'];
|
|
186
|
+
const academicNote = isAcademic
|
|
187
|
+
? '\nThis is an academic/school project. The check is especially important — ' +
|
|
188
|
+
'professors are trained to spot AI-generated code. Be thorough.\n'
|
|
189
|
+
: '';
|
|
190
|
+
return (`Perform a professor-check on the codebase for project "${projectName}".\n` +
|
|
191
|
+
`Stack: ${stack.join(', ')} | Developer level: ${userLevel} | Code level: ${codeLevel}\n` +
|
|
192
|
+
academicNote +
|
|
193
|
+
`\nScan every source file and flag patterns that would look suspicious to a professor:\n` +
|
|
194
|
+
patterns.map((p) => `- ${p}`).join('\n') +
|
|
195
|
+
`\n\nFor each flagged section:\n` +
|
|
196
|
+
`1. Show the file and line number\n` +
|
|
197
|
+
`2. Explain why it looks suspicious\n` +
|
|
198
|
+
`3. Suggest a simpler, more natural version appropriate for ${userLevel} level\n` +
|
|
199
|
+
`\nAfter listing issues, give an overall risk score: LOW / MEDIUM / HIGH\n` +
|
|
200
|
+
`and a short recommendation on what to fix before submission.\n` +
|
|
201
|
+
`\nIf no issues are found, say: "✔ Code looks natural for the declared level."`);
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=professorCheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"professorCheck.js","sourceRoot":"","sources":["../../src/commands/professorCheck.ts"],"names":[],"mappings":";;;;;AAMA,sDAmEC;AAzED,kDAA0B;AAC1B,wDAA0B;AAC1B,gDAAwB;AACxB,2CAA4E;AAC5E,4CAAyC;AAEzC,SAAgB,qBAAqB;IACnC,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,MAAM,GAAG,IAAA,mBAAU,EAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,IAAA,yBAAgB,EAAC,GAAG,CAAC,CAAC;IAEvC,eAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAC/C,eAAM,CAAC,OAAO,EAAE,CAAC;IACjB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,eAAM,CAAC,IAAI,CAAC,YAAY,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC3D,eAAM,CAAC,IAAI,CAAC,eAAe,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC3D,eAAM,CAAC,IAAI,CAAC,eAAe,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC3D,eAAM,CAAC,IAAI,CAAC,eAAe,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CACR,sEAAsE;QACpE,yEAAyE,CAC5E,CACF,CAAC;IAEF,uBAAuB;IACvB,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAClD,kBAAE,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC9B,kBAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAE7B,kBAAE,CAAC,aAAa,CACd,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,EAC5C,0BAA0B,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,CACpF,CAAC;IACF,kBAAE,CAAC,aAAa,CACd,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,EAC3C,iCAAiC,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,CAC3F,CAAC;IAEF,eAAM,CAAC,OAAO,EAAE,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,uDAAuD,CAAC,CAAC,CAAC;IAExF,MAAM,MAAM,GAAG,yBAAyB,CACtC,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,UAAU,CAClB,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAEjC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,eAAM,CAAC,OAAO,EAAE,CAAC;IACjB,eAAM,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,eAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC9B,eAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IACzD,eAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,SAAS,0BAA0B,CAAC,WAAmB,EAAE,SAAiB,EAAE,UAAmB;IAC7F,OAAO;;;;;;WAME,WAAW;cACR,SAAS;YACX,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCpC,CAAC;AACF,CAAC;AAED,SAAS,iCAAiC,CAAC,WAAmB,EAAE,SAAiB,EAAE,UAAmB;IACpG,OAAO;;;;;;UAMC,WAAW;gBACL,SAAS;sBACH,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqC9C,CAAC;AACF,CAAC;AAED,SAAS,yBAAyB,CAChC,WAAmB,EACnB,SAAiB,EACjB,KAAe,EACf,SAAiB,EACjB,UAAmB;IAEnB,MAAM,kBAAkB,GAA6B;QACnD,QAAQ,EAAE;YACR,8DAA8D;YAC9D,4DAA4D;YAC5D,iEAAiE;YACjE,2CAA2C;YAC3C,0CAA0C;YAC1C,6DAA6D;SAC9D;QACD,YAAY,EAAE;YACZ,iDAAiD;YACjD,sEAAsE;YACtE,iDAAiD;YACjD,qDAAqD;SACtD;QACD,oBAAoB,EAAE;YACpB,gFAAgF;YAChF,uEAAuE;YACvE,sEAAsE;YACtE,wEAAwE;YACxE,2DAA2D;YAC3D,gEAAgE;SACjE;QACD,YAAY,EAAE;YACZ,8DAA8D;YAC9D,qDAAqD;YACrD,2DAA2D;SAC5D;KACF,CAAC;IAEF,MAAM,QAAQ,GAAG,kBAAkB,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;IAE3F,MAAM,YAAY,GAAG,UAAU;QAC7B,CAAC,CAAC,4EAA4E;YAC5E,kEAAkE;QACpE,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,CACL,0DAA0D,WAAW,MAAM;QAC3E,UAAU,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,SAAS,kBAAkB,SAAS,IAAI;QACzF,YAAY;QACZ,yFAAyF;QACzF,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACxC,iCAAiC;QACjC,oCAAoC;QACpC,sCAAsC;QACtC,8DAA8D,SAAS,UAAU;QACjF,2EAA2E;QAC3E,gEAAgE;QAChE,+EAA+E,CAChF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simplify.d.ts","sourceRoot":"","sources":["../../src/commands/simplify.ts"],"names":[],"mappings":"AAMA,wBAAgB,eAAe,IAAI,IAAI,CAgEtC"}
|
|
@@ -0,0 +1,174 @@
|
|
|
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.simplifyCommand = simplifyCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const config_1 = require("../core/config");
|
|
11
|
+
const logger_1 = require("../utils/logger");
|
|
12
|
+
function simplifyCommand() {
|
|
13
|
+
const cwd = process.cwd();
|
|
14
|
+
if (!(0, config_1.configExists)(cwd)) {
|
|
15
|
+
logger_1.logger.error('BrainForge not initialized. Run: brainforge init');
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const config = (0, config_1.readConfig)(cwd);
|
|
19
|
+
const brainDir = (0, config_1.getBrainforgeDir)(cwd);
|
|
20
|
+
logger_1.logger.title('⚡ BrainForge — Simplify');
|
|
21
|
+
logger_1.logger.divider();
|
|
22
|
+
console.log();
|
|
23
|
+
logger_1.logger.info(`Project: ${chalk_1.default.white(config.projectName)}`);
|
|
24
|
+
logger_1.logger.info(`Current code level: ${chalk_1.default.cyan(config.codeLevel)}`);
|
|
25
|
+
console.log();
|
|
26
|
+
console.log(chalk_1.default.bold('What Simplify does'));
|
|
27
|
+
console.log(chalk_1.default.gray(' Paste the prompt below into your AI tool to make your code\n' +
|
|
28
|
+
' more natural, readable, and appropriate for your level.\n'));
|
|
29
|
+
// Write workflow files
|
|
30
|
+
const commandsDir = path_1.default.join(brainDir, 'commands');
|
|
31
|
+
const reportsDir = path_1.default.join(brainDir, 'reports');
|
|
32
|
+
fs_extra_1.default.ensureDirSync(commandsDir);
|
|
33
|
+
fs_extra_1.default.ensureDirSync(reportsDir);
|
|
34
|
+
fs_extra_1.default.writeFileSync(path_1.default.join(commandsDir, 'simplify-codebase.md'), buildSimplifyCmdFile(config.projectName, config.codeLevel, config.isAcademic));
|
|
35
|
+
fs_extra_1.default.writeFileSync(path_1.default.join(reportsDir, 'simplify-plan.md'), buildSimplifyPlanTemplate(config.projectName, config.codeLevel, config.isAcademic));
|
|
36
|
+
logger_1.logger.divider();
|
|
37
|
+
console.log(chalk_1.default.bold.yellow('\n 📋 Prompt — paste into Claude / Codex / Gemini:\n'));
|
|
38
|
+
const prompt = buildSimplifyPrompt(config.projectName, config.codeLevel, config.stack, config.userLevel);
|
|
39
|
+
console.log(chalk_1.default.white(prompt));
|
|
40
|
+
console.log();
|
|
41
|
+
logger_1.logger.divider();
|
|
42
|
+
logger_1.logger.success('Simplification workflow created.');
|
|
43
|
+
console.log();
|
|
44
|
+
console.log(chalk_1.default.bold('Next step:'));
|
|
45
|
+
console.log(chalk_1.default.gray('Paste this command into your AI tool:\n'));
|
|
46
|
+
console.log(chalk_1.default.cyan(' /simplify-codebase'));
|
|
47
|
+
console.log();
|
|
48
|
+
logger_1.logger.info('Files created:');
|
|
49
|
+
logger_1.logger.info(' .brainforge/commands/simplify-codebase.md');
|
|
50
|
+
logger_1.logger.info(' .brainforge/reports/simplify-plan.md');
|
|
51
|
+
console.log();
|
|
52
|
+
}
|
|
53
|
+
function buildSimplifyCmdFile(projectName, codeLevel, isAcademic) {
|
|
54
|
+
const academicNote = isAcademic
|
|
55
|
+
? '\n- For academic projects, keep code realistic and explainable\n- Avoid patterns not covered in the student\'s course\n'
|
|
56
|
+
: '';
|
|
57
|
+
return `# /simplify-codebase
|
|
58
|
+
|
|
59
|
+
## Goal
|
|
60
|
+
|
|
61
|
+
Simplify the current codebase without changing behavior.
|
|
62
|
+
|
|
63
|
+
## Instructions
|
|
64
|
+
|
|
65
|
+
Scan the project and simplify code so it matches the configured BrainForge code level.
|
|
66
|
+
|
|
67
|
+
Project: ${projectName}
|
|
68
|
+
Code level: ${codeLevel}
|
|
69
|
+
|
|
70
|
+
Focus on:
|
|
71
|
+
- removing unnecessary abstractions
|
|
72
|
+
- reducing over-engineering
|
|
73
|
+
- simplifying folder structure where safe
|
|
74
|
+
- reducing deeply nested logic
|
|
75
|
+
- removing unused code
|
|
76
|
+
- removing AI-looking comments
|
|
77
|
+
- keeping only useful comments
|
|
78
|
+
- making code easier to explain
|
|
79
|
+
- preserving all existing behavior
|
|
80
|
+
${academicNote}
|
|
81
|
+
## Rules
|
|
82
|
+
|
|
83
|
+
- Do not delete working features.
|
|
84
|
+
- Do not change public API behavior unless explicitly requested.
|
|
85
|
+
- Do not rewrite the whole app.
|
|
86
|
+
- Work file by file.
|
|
87
|
+
- Keep changes small and reviewable.
|
|
88
|
+
- Prefer simple functions over complex patterns.
|
|
89
|
+
|
|
90
|
+
## Output
|
|
91
|
+
|
|
92
|
+
Create or update:
|
|
93
|
+
|
|
94
|
+
\`.brainforge/reports/simplify-plan.md\`
|
|
95
|
+
|
|
96
|
+
The report must contain:
|
|
97
|
+
- files inspected
|
|
98
|
+
- complexity problems found
|
|
99
|
+
- proposed simplifications
|
|
100
|
+
- risk level per change
|
|
101
|
+
- recommended order of changes
|
|
102
|
+
`;
|
|
103
|
+
}
|
|
104
|
+
function buildSimplifyPlanTemplate(projectName, codeLevel, isAcademic) {
|
|
105
|
+
return `# Simplify Plan
|
|
106
|
+
|
|
107
|
+
Generated by BrainForge.
|
|
108
|
+
|
|
109
|
+
## Project
|
|
110
|
+
|
|
111
|
+
- Name: ${projectName}
|
|
112
|
+
- Code level: ${codeLevel}
|
|
113
|
+
- Academic project: ${isAcademic ? 'Yes' : 'No'}
|
|
114
|
+
|
|
115
|
+
## Files to inspect first
|
|
116
|
+
|
|
117
|
+
- src/
|
|
118
|
+
- package.json
|
|
119
|
+
- README.md
|
|
120
|
+
- configuration files
|
|
121
|
+
|
|
122
|
+
## Simplification Goals
|
|
123
|
+
|
|
124
|
+
- Make code easier to understand
|
|
125
|
+
- Remove unnecessary complexity
|
|
126
|
+
- Keep behavior unchanged
|
|
127
|
+
- Match the selected code level
|
|
128
|
+
|
|
129
|
+
## Findings
|
|
130
|
+
|
|
131
|
+
_To be filled by the AI assistant._
|
|
132
|
+
|
|
133
|
+
## Proposed Changes
|
|
134
|
+
|
|
135
|
+
_To be filled by the AI assistant._
|
|
136
|
+
|
|
137
|
+
## Risk Notes
|
|
138
|
+
|
|
139
|
+
_To be filled by the AI assistant._
|
|
140
|
+
`;
|
|
141
|
+
}
|
|
142
|
+
function buildSimplifyPrompt(projectName, codeLevel, stack, userLevel) {
|
|
143
|
+
const levelGuide = {
|
|
144
|
+
beginner: '- Remove unnecessary abstractions and design patterns\n' +
|
|
145
|
+
'- Use direct, flat code instead of nested helpers\n' +
|
|
146
|
+
'- Rename variables to plain, readable names\n' +
|
|
147
|
+
'- Add short comments where logic is non-obvious\n' +
|
|
148
|
+
'- Keep each file under 100 lines',
|
|
149
|
+
intermediate: '- Reduce over-engineering to clean, modular code\n' +
|
|
150
|
+
'- Remove unused helpers and unnecessary indirection\n' +
|
|
151
|
+
'- Ensure naming is clear and consistent\n' +
|
|
152
|
+
'- Keep separation of concerns without going overboard\n' +
|
|
153
|
+
'- Aim for files under 200 lines',
|
|
154
|
+
'academic-realistic': '- Code should be clean but not enterprise-perfect\n' +
|
|
155
|
+
'- Remove any design patterns that are hard to explain line by line\n' +
|
|
156
|
+
'- Prefer readable over clever — simplify any tricky logic\n' +
|
|
157
|
+
'- Avoid abstractions that a professor would question\n' +
|
|
158
|
+
'- Naming should be clear but natural, not overly perfect',
|
|
159
|
+
professional: '- Refactor for clarity while preserving strict typing\n' +
|
|
160
|
+
'- Remove dead code and unused abstractions\n' +
|
|
161
|
+
'- Ensure every function has a single clear responsibility\n' +
|
|
162
|
+
'- Validate inputs at all boundaries\n' +
|
|
163
|
+
'- Keep test coverage for any refactored paths',
|
|
164
|
+
};
|
|
165
|
+
const rules = levelGuide[codeLevel] || levelGuide['intermediate'];
|
|
166
|
+
return (`Review the codebase for project "${projectName}" (stack: ${stack.join(', ')}).\n` +
|
|
167
|
+
`The target code level is: ${codeLevel}. The developer is: ${userLevel}.\n\n` +
|
|
168
|
+
`Simplify the code according to these rules:\n${rules}\n\n` +
|
|
169
|
+
`Go through each source file and apply the simplification rules.\n` +
|
|
170
|
+
`Preserve all functionality — do not remove features.\n` +
|
|
171
|
+
`After simplification, run the existing tests to confirm nothing broke.\n` +
|
|
172
|
+
`Commit with: /checkpoint — "refactor: simplify code to ${codeLevel} level"`);
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=simplify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simplify.js","sourceRoot":"","sources":["../../src/commands/simplify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAOA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CA6FnD"}
|