brainforge-ai 1.1.0 → 1.1.1
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/dist/cli.js +13 -4
- package/dist/cli.js.map +1 -1
- package/dist/commands/dashboard.d.ts +1 -1
- package/dist/commands/dashboard.d.ts.map +1 -1
- package/dist/commands/dashboard.js +34 -14
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +2 -1
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/update.d.ts +2 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +90 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/core/dashboardTemplate.d.ts.map +1 -1
- package/dist/core/dashboardTemplate.js +6 -2
- package/dist/core/dashboardTemplate.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -8,11 +8,14 @@ const dashboard_1 = require("./commands/dashboard");
|
|
|
8
8
|
const updateDashboard_1 = require("./commands/updateDashboard");
|
|
9
9
|
const serve_1 = require("./commands/serve");
|
|
10
10
|
const help_1 = require("./commands/help");
|
|
11
|
+
const update_1 = require("./commands/update");
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
13
|
+
const pkg = require('../package.json');
|
|
11
14
|
const program = new commander_1.Command();
|
|
12
15
|
program
|
|
13
16
|
.name('brainforge')
|
|
14
17
|
.description('Transform any idea into a structured, AI-assisted project with agents, phases, memory, and a dashboard.')
|
|
15
|
-
.version(
|
|
18
|
+
.version(pkg.version);
|
|
16
19
|
program
|
|
17
20
|
.command('init')
|
|
18
21
|
.description('Initialize BrainForge in the current directory')
|
|
@@ -28,8 +31,8 @@ program
|
|
|
28
31
|
program
|
|
29
32
|
.command('dashboard')
|
|
30
33
|
.description('Open the project dashboard in the browser')
|
|
31
|
-
.action(() => {
|
|
32
|
-
(0, dashboard_1.dashboardCommand)();
|
|
34
|
+
.action(async () => {
|
|
35
|
+
await (0, dashboard_1.dashboardCommand)();
|
|
33
36
|
});
|
|
34
37
|
program
|
|
35
38
|
.command('update-dashboard')
|
|
@@ -44,6 +47,12 @@ program
|
|
|
44
47
|
.action(async (opts) => {
|
|
45
48
|
await (0, serve_1.serveCommand)(parseInt(opts.port, 10));
|
|
46
49
|
});
|
|
50
|
+
program
|
|
51
|
+
.command('update')
|
|
52
|
+
.description('Update agents, commands, and dashboard to latest templates (preserves your project data)')
|
|
53
|
+
.action(async () => {
|
|
54
|
+
await (0, update_1.updateCommand)();
|
|
55
|
+
});
|
|
47
56
|
program
|
|
48
57
|
.command('guide')
|
|
49
58
|
.description('Show all CLI and slash commands with project status')
|
|
@@ -54,7 +63,7 @@ program
|
|
|
54
63
|
.command('version')
|
|
55
64
|
.description('Show version information')
|
|
56
65
|
.action(() => {
|
|
57
|
-
console.log(
|
|
66
|
+
console.log(`brainforge-ai v${pkg.version}`);
|
|
58
67
|
console.log('Node:', process.version);
|
|
59
68
|
console.log('Platform:', process.platform);
|
|
60
69
|
});
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,0CAA8C;AAC9C,8CAAkD;AAClD,oDAAwD;AACxD,gEAAoE;AACpE,4CAAgD;AAChD,0CAA8C;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,0CAA8C;AAC9C,8CAAkD;AAClD,oDAAwD;AACxD,gEAAoE;AACpE,4CAAgD;AAChD,0CAA8C;AAC9C,8CAAkD;AAClD,8DAA8D;AAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAE9D,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CACV,yGAAyG,CAC1G;KACA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,kBAAW,GAAE,CAAC;AACtB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,4CAA4C,CAAC;KACzD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,sBAAa,GAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,4BAAgB,GAAE,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,mDAAmD,CAAC;KAChE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,wCAAsB,GAAE,CAAC;AACjC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,yDAAyD,CAAC;KACtE,MAAM,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,CAAC;KAC1D,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,IAAA,oBAAY,EAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0FAA0F,CAAC;KACvG,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,sBAAa,GAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,qDAAqD,CAAC;KAClE,MAAM,CAAC,GAAG,EAAE;IACX,IAAA,kBAAW,GAAE,CAAC;AAChB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function dashboardCommand(): void
|
|
1
|
+
export declare function dashboardCommand(): Promise<void>;
|
|
2
2
|
//# sourceMappingURL=dashboard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAQA,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CA6DtD"}
|
|
@@ -5,42 +5,62 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.dashboardCommand = dashboardCommand;
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
9
|
+
const os_1 = __importDefault(require("os"));
|
|
8
10
|
const child_process_1 = require("child_process");
|
|
9
11
|
const config_1 = require("../core/config");
|
|
12
|
+
const dashboard_1 = require("../core/dashboard");
|
|
10
13
|
const logger_1 = require("../utils/logger");
|
|
11
|
-
function dashboardCommand() {
|
|
14
|
+
async function dashboardCommand() {
|
|
12
15
|
const cwd = process.cwd();
|
|
13
16
|
if (!(0, config_1.configExists)(cwd)) {
|
|
14
17
|
logger_1.logger.error('BrainForge not initialized. Run: brainforge init');
|
|
15
18
|
return;
|
|
16
19
|
}
|
|
17
|
-
const
|
|
18
|
-
const
|
|
20
|
+
const brainDir = (0, config_1.getBrainforgeDir)(cwd);
|
|
21
|
+
const htmlSource = path_1.default.join(brainDir, 'dashboard', 'index.html');
|
|
22
|
+
const cssSource = path_1.default.join(brainDir, 'dashboard', 'style.css');
|
|
23
|
+
if (!fs_extra_1.default.existsSync(htmlSource)) {
|
|
24
|
+
logger_1.logger.error('Dashboard files not found. Run: brainforge init');
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
// Generate fresh data
|
|
28
|
+
const config = (0, config_1.readConfig)(cwd);
|
|
29
|
+
const data = await (0, dashboard_1.generateDashboardData)(config, cwd);
|
|
30
|
+
// Read HTML and CSS
|
|
31
|
+
let html = fs_extra_1.default.readFileSync(htmlSource, 'utf-8');
|
|
32
|
+
const css = fs_extra_1.default.existsSync(cssSource) ? fs_extra_1.default.readFileSync(cssSource, 'utf-8') : '';
|
|
33
|
+
// Inline CSS so the file is fully self-contained
|
|
34
|
+
html = html.replace('<link rel="stylesheet" href="style.css" />', `<style>\n${css}\n</style>`);
|
|
35
|
+
// Inject data as a global variable before </head>
|
|
36
|
+
const dataScript = `<script>window.__BRAINFORGE_DATA__ = ${JSON.stringify(data)};</script>`;
|
|
37
|
+
html = html.replace('</head>', dataScript + '\n</head>');
|
|
38
|
+
// Write to a temp file so it works on file:// without CORS issues
|
|
39
|
+
const tmpFile = path_1.default.join(os_1.default.tmpdir(), 'brainforge-dashboard.html');
|
|
40
|
+
fs_extra_1.default.writeFileSync(tmpFile, html, 'utf-8');
|
|
19
41
|
logger_1.logger.title('⚡ BrainForge Dashboard');
|
|
20
42
|
logger_1.logger.divider();
|
|
21
|
-
logger_1.logger.info(`
|
|
43
|
+
logger_1.logger.info(`Project: ${config.projectName}`);
|
|
44
|
+
logger_1.logger.info(`Phases: ${config.currentPhase}/${config.totalPhases}`);
|
|
22
45
|
console.log();
|
|
23
|
-
logger_1.logger.info('
|
|
46
|
+
logger_1.logger.info('Tip: run brainforge serve for a live-reload version.');
|
|
24
47
|
console.log();
|
|
25
|
-
// Try to open in default browser (best-effort)
|
|
26
48
|
try {
|
|
27
49
|
const platform = process.platform;
|
|
28
50
|
if (platform === 'win32') {
|
|
29
|
-
(0, child_process_1.execSync)(`start "" "${
|
|
30
|
-
logger_1.logger.success('Dashboard opened in browser.');
|
|
51
|
+
(0, child_process_1.execSync)(`start "" "${tmpFile}"`, { stdio: 'ignore' });
|
|
31
52
|
}
|
|
32
53
|
else if (platform === 'darwin') {
|
|
33
|
-
(0, child_process_1.execSync)(`open "${
|
|
34
|
-
logger_1.logger.success('Dashboard opened in browser.');
|
|
54
|
+
(0, child_process_1.execSync)(`open "${tmpFile}"`, { stdio: 'ignore' });
|
|
35
55
|
}
|
|
36
56
|
else {
|
|
37
|
-
(0, child_process_1.execSync)(`xdg-open "${
|
|
38
|
-
logger_1.logger.success('Dashboard opened in browser.');
|
|
57
|
+
(0, child_process_1.execSync)(`xdg-open "${tmpFile}"`, { stdio: 'ignore' });
|
|
39
58
|
}
|
|
59
|
+
logger_1.logger.success('Dashboard opened in browser.');
|
|
40
60
|
}
|
|
41
61
|
catch {
|
|
42
|
-
logger_1.logger.warn('Could not auto-open
|
|
43
|
-
console.log(` file://${
|
|
62
|
+
logger_1.logger.warn('Could not auto-open. Open manually:');
|
|
63
|
+
console.log(` file://${tmpFile.replace(/\\/g, '/')}`);
|
|
44
64
|
}
|
|
45
65
|
}
|
|
46
66
|
//# sourceMappingURL=dashboard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AA0DA,wBAAgB,WAAW,IAAI,IAAI,CAmFlC"}
|
package/dist/commands/help.js
CHANGED
|
@@ -12,8 +12,9 @@ const CLI_COMMANDS = [
|
|
|
12
12
|
{ cmd: 'brainforge serve', desc: 'Live dashboard on localhost:3000 (auto-reloads)' },
|
|
13
13
|
{ cmd: 'brainforge dashboard', desc: 'Open the HTML dashboard in the browser' },
|
|
14
14
|
{ cmd: 'brainforge update-dashboard', desc: 'Refresh dashboard data from project state' },
|
|
15
|
+
{ cmd: 'brainforge update', desc: 'Update templates without touching your project data' },
|
|
15
16
|
{ cmd: 'brainforge doctor', desc: 'Health check — verify setup and files' },
|
|
16
|
-
{ cmd: 'brainforge
|
|
17
|
+
{ cmd: 'brainforge guide', desc: 'Show this help screen' },
|
|
17
18
|
{ cmd: 'brainforge version', desc: 'Show version info' },
|
|
18
19
|
];
|
|
19
20
|
const SLASH_COMMANDS = [
|
|
@@ -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":";;;;;AA0DA,kCAmFC;AA7ID,kDAA0B;AAC1B,2CAA0D;AAC1D,4CAAyC;AAEzC,MAAM,YAAY,GAAG;IACnB,EAAE,GAAG,EAAE,iBAAiB,EAAc,IAAI,EAAE,gDAAgD,EAAE;IAC9F,EAAE,GAAG,EAAE,kBAAkB,EAAa,IAAI,EAAE,iDAAiD,EAAE;IAC/F,EAAE,GAAG,EAAE,sBAAsB,EAAS,IAAI,EAAE,wCAAwC,EAAE;IACtF,EAAE,GAAG,EAAE,6BAA6B,EAAE,IAAI,EAAE,2CAA2C,EAAE;IACzF,EAAE,GAAG,EAAE,mBAAmB,EAAY,IAAI,EAAE,qDAAqD,EAAE;IACnG,EAAE,GAAG,EAAE,mBAAmB,EAAY,IAAI,EAAE,uCAAuC,EAAE;IACrF,EAAE,GAAG,EAAE,kBAAkB,EAAa,IAAI,EAAE,uBAAuB,EAAE;IACrE,EAAE,GAAG,EAAE,oBAAoB,EAAW,IAAI,EAAE,mBAAmB,EAAE;CAClE,CAAC;AAEF,MAAM,cAAc,GAAG;IACrB;QACE,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE;YACR,EAAE,GAAG,EAAE,gBAAgB,EAAI,IAAI,EAAE,4CAA4C,EAAE;YAC/E,EAAE,GAAG,EAAE,iBAAiB,EAAG,IAAI,EAAE,mDAAmD,EAAE;SACvF;KACF;IACD;QACE,KAAK,EAAE,gBAAgB;QACvB,QAAQ,EAAE;YACR,EAAE,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,2CAA2C,EAAE;YAC/E,EAAE,GAAG,EAAE,kBAAkB,EAAG,IAAI,EAAE,yCAAyC,EAAE;YAC7E,EAAE,GAAG,EAAE,iBAAiB,EAAI,IAAI,EAAE,oDAAoD,EAAE;YACxF,EAAE,GAAG,EAAE,aAAa,EAAQ,IAAI,EAAE,+CAA+C,EAAE;SACpF;KACF;IACD;QACE,KAAK,EAAE,cAAc;QACrB,QAAQ,EAAE;YACR,EAAE,GAAG,EAAE,cAAc,EAAO,IAAI,EAAE,+CAA+C,EAAE;YACnF,EAAE,GAAG,EAAE,gBAAgB,EAAK,IAAI,EAAE,4CAA4C,EAAE;YAChF,EAAE,GAAG,EAAE,cAAc,EAAO,IAAI,EAAE,iCAAiC,EAAE;SACtE;KACF;IACD;QACE,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE;YACR,EAAE,GAAG,EAAE,kBAAkB,EAAG,IAAI,EAAE,oDAAoD,EAAE;YACxF,EAAE,GAAG,EAAE,kBAAkB,EAAG,IAAI,EAAE,kDAAkD,EAAE;YACtF,EAAE,GAAG,EAAE,kBAAkB,EAAG,IAAI,EAAE,sCAAsC,EAAE;SAC3E;KACF;IACD;QACE,KAAK,EAAE,oBAAoB;QAC3B,QAAQ,EAAE;YACR,EAAE,GAAG,EAAE,gBAAgB,EAAK,IAAI,EAAE,oCAAoC,EAAE;YACxE,EAAE,GAAG,EAAE,gBAAgB,EAAK,IAAI,EAAE,kCAAkC,EAAE;YACtE,EAAE,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,iCAAiC,EAAE;SACtE;KACF;CACF,CAAC;AAEF,SAAgB,WAAW;IACzB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,WAAW,GAAG,IAAA,qBAAY,EAAC,GAAG,CAAC,CAAC;IAEtC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAC/F,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,wBAAwB;IACxB,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAC7D,CAAC;YACF,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;gBACzD,eAAK,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CACjE,CAAC;YACF,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,GAAG;gBAChC,eAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,WAAW,SAAS,CAAC,CACnE,CAAC;YACF,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACP,4BAA4B;QAC9B,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC;YACrC,eAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CACtD,CAAC;QACF,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,eAAe;IACf,eAAM,CAAC,OAAO,EAAE,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAClD,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,YAAY,EAAE,CAAC;QACzC,OAAO,CAAC,GAAG,CACT,IAAI,GAAG,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CACtD,CAAC;IACJ,CAAC;IAED,iBAAiB;IACjB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,eAAM,CAAC,OAAO,EAAE,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;IAEhG,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACnD,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CACT,MAAM,GAAG,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CACvD,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,oBAAoB;IACpB,eAAM,CAAC,OAAO,EAAE,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG;QACZ,gBAAgB;QAChB,iBAAiB;QACjB,mBAAmB;QACnB,kBAAkB;QAClB,cAAc;QACd,iBAAiB;QACjB,aAAa;KACd,CAAC;IACF,OAAO,CAAC,GAAG,CACT,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAC/D,CAAC;IACF,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,YAAY;IACZ,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CAAC,UAAU,CAAC;QACtB,eAAK,CAAC,SAAS,CAAC,2CAA2C,CAAC,CAC7D,CAAC;IACF,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,KAAa;IACjD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,eAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;IACzD,OAAO,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACtE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAmBA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CA6EnD"}
|
|
@@ -0,0 +1,90 @@
|
|
|
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.updateCommand = updateCommand;
|
|
7
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const ora_1 = __importDefault(require("ora"));
|
|
10
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
+
const config_1 = require("../core/config");
|
|
12
|
+
const templates_1 = require("../core/templates");
|
|
13
|
+
const dashboardTemplate_1 = require("../core/dashboardTemplate");
|
|
14
|
+
const logger_1 = require("../utils/logger");
|
|
15
|
+
// Files managed by BrainForge — safe to overwrite on update
|
|
16
|
+
// User data (project.md, phases/, memory/, decisions.md…) is never touched
|
|
17
|
+
const PROTECTED = new Set([
|
|
18
|
+
'config.json',
|
|
19
|
+
'project.md',
|
|
20
|
+
'questions.md',
|
|
21
|
+
'decisions.md',
|
|
22
|
+
'roadmap.md',
|
|
23
|
+
]);
|
|
24
|
+
async function updateCommand() {
|
|
25
|
+
const cwd = process.cwd();
|
|
26
|
+
if (!(0, config_1.configExists)(cwd)) {
|
|
27
|
+
logger_1.logger.error('BrainForge not initialized. Run: brainforge init');
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const config = (0, config_1.readConfig)(cwd);
|
|
31
|
+
const brainDir = (0, config_1.getBrainforgeDir)(cwd);
|
|
32
|
+
logger_1.logger.title('⚡ BrainForge Update');
|
|
33
|
+
logger_1.logger.divider();
|
|
34
|
+
logger_1.logger.info(`Project: ${chalk_1.default.white(config.projectName)}`);
|
|
35
|
+
console.log();
|
|
36
|
+
const spinner = (0, ora_1.default)('Updating templates…').start();
|
|
37
|
+
const updated = [];
|
|
38
|
+
const skipped = [];
|
|
39
|
+
// ── Agents ────────────────────────────────────────────────────────────────
|
|
40
|
+
const agents = (0, templates_1.getAgentTemplates)(config);
|
|
41
|
+
for (const [filename, content] of Object.entries(agents)) {
|
|
42
|
+
const dest = path_1.default.join(brainDir, 'agents', filename);
|
|
43
|
+
await fs_extra_1.default.ensureDir(path_1.default.dirname(dest));
|
|
44
|
+
await fs_extra_1.default.writeFile(dest, content);
|
|
45
|
+
updated.push(`agents/${filename}`);
|
|
46
|
+
}
|
|
47
|
+
// ── Slash commands ─────────────────────────────────────────────────────────
|
|
48
|
+
const commands = (0, templates_1.getCommandTemplates)(config);
|
|
49
|
+
for (const [filename, content] of Object.entries(commands)) {
|
|
50
|
+
const dest = path_1.default.join(brainDir, 'commands', filename);
|
|
51
|
+
await fs_extra_1.default.ensureDir(path_1.default.dirname(dest));
|
|
52
|
+
await fs_extra_1.default.writeFile(dest, content);
|
|
53
|
+
updated.push(`commands/${filename}`);
|
|
54
|
+
}
|
|
55
|
+
// ── Dashboard HTML + CSS ──────────────────────────────────────────────────
|
|
56
|
+
await fs_extra_1.default.ensureDir(path_1.default.join(brainDir, 'dashboard'));
|
|
57
|
+
await fs_extra_1.default.writeFile(path_1.default.join(brainDir, 'dashboard', 'index.html'), (0, dashboardTemplate_1.getDashboardHtml)());
|
|
58
|
+
await fs_extra_1.default.writeFile(path_1.default.join(brainDir, 'dashboard', 'style.css'), (0, dashboardTemplate_1.getDashboardCss)());
|
|
59
|
+
updated.push('dashboard/index.html', 'dashboard/style.css');
|
|
60
|
+
// ── Root files (AGENTS.md, CLAUDE.md, GEMINI.md, OPENAI.md) ──────────────
|
|
61
|
+
const rootFiles = (0, templates_1.getRootFileTemplates)(config);
|
|
62
|
+
for (const [filename, content] of Object.entries(rootFiles)) {
|
|
63
|
+
const dest = path_1.default.join(cwd, filename);
|
|
64
|
+
await fs_extra_1.default.writeFile(dest, content);
|
|
65
|
+
updated.push(filename);
|
|
66
|
+
}
|
|
67
|
+
// ── User data — never touched ──────────────────────────────────────────────
|
|
68
|
+
for (const f of PROTECTED) {
|
|
69
|
+
skipped.push(f);
|
|
70
|
+
}
|
|
71
|
+
// phases/ and memory/ are always preserved
|
|
72
|
+
skipped.push('phases/', 'memory/');
|
|
73
|
+
spinner.succeed('Update complete.');
|
|
74
|
+
console.log();
|
|
75
|
+
// Summary
|
|
76
|
+
logger_1.logger.success(`${updated.length} files updated:`);
|
|
77
|
+
for (const f of updated) {
|
|
78
|
+
console.log(chalk_1.default.gray(' ✔ .brainforge/') + f);
|
|
79
|
+
}
|
|
80
|
+
console.log();
|
|
81
|
+
logger_1.logger.info(`${skipped.length} user files preserved (untouched):`);
|
|
82
|
+
for (const f of skipped) {
|
|
83
|
+
console.log(chalk_1.default.gray(' ○ .brainforge/') + f);
|
|
84
|
+
}
|
|
85
|
+
console.log();
|
|
86
|
+
logger_1.logger.divider();
|
|
87
|
+
logger_1.logger.info('All agent prompts and slash commands are up to date.');
|
|
88
|
+
logger_1.logger.info('Run brainforge serve to see the refreshed dashboard.');
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboardTemplate.d.ts","sourceRoot":"","sources":["../../src/core/dashboardTemplate.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"dashboardTemplate.d.ts","sourceRoot":"","sources":["../../src/core/dashboardTemplate.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,IAAI,MAAM,CAuHzC;AAED,wBAAgB,eAAe,IAAI,MAAM,CA0MxC"}
|
|
@@ -66,8 +66,12 @@ function getDashboardHtml() {
|
|
|
66
66
|
<script>
|
|
67
67
|
async function loadData() {
|
|
68
68
|
try {
|
|
69
|
-
|
|
70
|
-
|
|
69
|
+
// Use inlined data (file:// mode) or fetch (http:// mode via brainforge serve)
|
|
70
|
+
let d = window.__BRAINFORGE_DATA__;
|
|
71
|
+
if (!d) {
|
|
72
|
+
const res = await fetch('data.json?t=' + Date.now());
|
|
73
|
+
d = await res.json();
|
|
74
|
+
}
|
|
71
75
|
|
|
72
76
|
document.title = 'BrainForge — ' + d.projectName;
|
|
73
77
|
document.getElementById('project-name').textContent = d.projectName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboardTemplate.js","sourceRoot":"","sources":["../../src/core/dashboardTemplate.ts"],"names":[],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"file":"dashboardTemplate.js","sourceRoot":"","sources":["../../src/core/dashboardTemplate.ts"],"names":[],"mappings":";;AAAA,4CAuHC;AAED,0CA0MC;AAnUD,SAAgB,gBAAgB;IAC9B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAqHD,CAAC;AACT,CAAC;AAED,SAAgB,eAAe;IAC7B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwMR,CAAC;AACF,CAAC"}
|
package/package.json
CHANGED