mindforge-cc 1.0.4 → 1.0.5
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/CHANGELOG.md +5 -0
- package/README.md +5 -0
- package/bin/install.js +3 -2
- package/bin/installer-core.js +44 -6
- package/bin/wizard/setup-wizard.js +2 -1
- package/docs/user-guide.md +5 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,11 @@
|
|
|
3
3
|
All notable changes to MindForge are documented here.
|
|
4
4
|
Format follows [Keep a Changelog](https://keepachangelog.com).
|
|
5
5
|
|
|
6
|
+
## [1.0.5] — v1.0.5 Minimal Install Option — 2026-03-22
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
- `--minimal` flag to install only essential project scaffolding.
|
|
10
|
+
|
|
6
11
|
## [1.0.4] — v1.0.4 Antigravity Install Fix — 2026-03-22
|
|
7
12
|
|
|
8
13
|
### Fixed
|
package/README.md
CHANGED
|
@@ -47,6 +47,11 @@ Optional: add bin utilities on local install
|
|
|
47
47
|
npx mindforge-cc@latest --claude --local --with-utils
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
+
Optional: minimal project scaffolding
|
|
51
|
+
```bash
|
|
52
|
+
npx mindforge-cc@latest --claude --local --minimal
|
|
53
|
+
```
|
|
54
|
+
|
|
50
55
|
### Both runtimes
|
|
51
56
|
```bash
|
|
52
57
|
npx mindforge-cc@latest --all --global
|
package/bin/install.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* Runtime flags: --claude | --antigravity | --all
|
|
16
16
|
* Scope flags: --global (-g) | --local (-l)
|
|
17
17
|
* Action flags: --install (default) | --update | --uninstall | --check
|
|
18
|
-
* Control flags: --skip-wizard | --dry-run | --verbose | --force | --with-utils
|
|
18
|
+
* Control flags: --skip-wizard | --dry-run | --verbose | --force | --with-utils | --minimal
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
21
|
'use strict';
|
|
@@ -53,7 +53,7 @@ const NON_INTERACTIVE_FLAGS = [
|
|
|
53
53
|
'--claude', '--antigravity', '--all',
|
|
54
54
|
'--global', '-g', '--local', '-l',
|
|
55
55
|
'--uninstall', '--update', '--check',
|
|
56
|
-
'--skip-wizard', '--dry-run', '--with-utils',
|
|
56
|
+
'--skip-wizard', '--dry-run', '--with-utils', '--minimal',
|
|
57
57
|
];
|
|
58
58
|
|
|
59
59
|
const IS_NON_INTERACTIVE =
|
|
@@ -103,6 +103,7 @@ function printHelp() {
|
|
|
103
103
|
--force Override existing installation without backup
|
|
104
104
|
--skip-wizard Skip interactive wizard even in TTY
|
|
105
105
|
--with-utils Install local bin/ utilities (optional)
|
|
106
|
+
--minimal Install only essential project scaffolding
|
|
106
107
|
--verbose Detailed output
|
|
107
108
|
--version, -v Print version
|
|
108
109
|
--help, -h Print this help
|
package/bin/installer-core.js
CHANGED
|
@@ -147,7 +147,13 @@ function verifyInstall(baseDir, cmdsDir, runtime, scope) {
|
|
|
147
147
|
|
|
148
148
|
// ── Install single runtime ────────────────────────────────────────────────────
|
|
149
149
|
async function install(runtime, scope, options = {}) {
|
|
150
|
-
const {
|
|
150
|
+
const {
|
|
151
|
+
dryRun = false,
|
|
152
|
+
force = false,
|
|
153
|
+
verbose = false,
|
|
154
|
+
withUtils = false,
|
|
155
|
+
minimal = false,
|
|
156
|
+
} = options;
|
|
151
157
|
const cfg = RUNTIMES[runtime];
|
|
152
158
|
const baseDir = resolveBaseDir(runtime, scope);
|
|
153
159
|
const cmdsDir = norm(path.join(baseDir, cfg.commandsSubdir));
|
|
@@ -193,8 +199,29 @@ async function install(runtime, scope, options = {}) {
|
|
|
193
199
|
const forgeSrc = src('.mindforge');
|
|
194
200
|
const forgeDst = path.join(process.cwd(), '.mindforge');
|
|
195
201
|
if (fsu.exists(forgeSrc)) {
|
|
196
|
-
|
|
197
|
-
|
|
202
|
+
if (minimal) {
|
|
203
|
+
const minimalEntries = new Set([
|
|
204
|
+
'MINDFORGE-SCHEMA.json',
|
|
205
|
+
'engine',
|
|
206
|
+
'org',
|
|
207
|
+
'governance',
|
|
208
|
+
'integrations',
|
|
209
|
+
'personas',
|
|
210
|
+
'skills',
|
|
211
|
+
'team',
|
|
212
|
+
]);
|
|
213
|
+
fsu.ensureDir(forgeDst);
|
|
214
|
+
for (const entry of fs.readdirSync(forgeSrc, { withFileTypes: true })) {
|
|
215
|
+
if (!minimalEntries.has(entry.name)) continue;
|
|
216
|
+
const s = path.join(forgeSrc, entry.name);
|
|
217
|
+
const d = path.join(forgeDst, entry.name);
|
|
218
|
+
entry.isDirectory() ? fsu.copyDir(s, d, { excludePatterns: SENSITIVE_EXCLUDE }) : fsu.copy(s, d);
|
|
219
|
+
}
|
|
220
|
+
console.log(` ✅ .mindforge/ (minimal core)`);
|
|
221
|
+
} else {
|
|
222
|
+
fsu.copyDir(forgeSrc, forgeDst, { excludePatterns: SENSITIVE_EXCLUDE });
|
|
223
|
+
console.log(` ✅ .mindforge/ (framework engine)`);
|
|
224
|
+
}
|
|
198
225
|
}
|
|
199
226
|
|
|
200
227
|
// .planning/ — create only if it doesn't already exist (preserve project state)
|
|
@@ -202,8 +229,18 @@ async function install(runtime, scope, options = {}) {
|
|
|
202
229
|
if (!fsu.exists(planningDst)) {
|
|
203
230
|
const planningSrc = src('.planning');
|
|
204
231
|
if (fsu.exists(planningSrc)) {
|
|
205
|
-
|
|
206
|
-
|
|
232
|
+
if (minimal) {
|
|
233
|
+
fsu.ensureDir(planningDst);
|
|
234
|
+
['STATE.md', 'HANDOFF.json', 'PROJECT.md'].forEach((name) => {
|
|
235
|
+
const s = path.join(planningSrc, name);
|
|
236
|
+
const d = path.join(planningDst, name);
|
|
237
|
+
if (fsu.exists(s)) fsu.copy(s, d);
|
|
238
|
+
});
|
|
239
|
+
console.log(` ✅ .planning/ (minimal state)`);
|
|
240
|
+
} else {
|
|
241
|
+
fsu.copyDir(planningSrc, planningDst, { excludePatterns: SENSITIVE_EXCLUDE });
|
|
242
|
+
console.log(` ✅ .planning/ (state templates)`);
|
|
243
|
+
}
|
|
207
244
|
}
|
|
208
245
|
} else {
|
|
209
246
|
console.log(` ⏭️ .planning/ already exists — preserved (run /mindforge:health to verify)`);
|
|
@@ -279,10 +316,11 @@ async function run(args) {
|
|
|
279
316
|
const force = args.includes('--force');
|
|
280
317
|
const verbose = args.includes('--verbose');
|
|
281
318
|
const withUtils = args.includes('--with-utils');
|
|
319
|
+
const minimal = args.includes('--minimal');
|
|
282
320
|
const isUninstall = args.includes('--uninstall');
|
|
283
321
|
const isUpdate = args.includes('--update');
|
|
284
322
|
const isCheck = args.includes('--check');
|
|
285
|
-
const options = { dryRun, force, verbose, withUtils };
|
|
323
|
+
const options = { dryRun, force, verbose, withUtils, minimal };
|
|
286
324
|
|
|
287
325
|
console.log(`\n⚡ MindForge v${VERSION} — Enterprise Agentic Framework\n`);
|
|
288
326
|
|
|
@@ -232,10 +232,11 @@ async function main() {
|
|
|
232
232
|
const runtimes = await selectRuntime(rl, env.runtimes);
|
|
233
233
|
const scope = await selectScope(rl);
|
|
234
234
|
const { config, credGuidance } = await configureFeatures(rl);
|
|
235
|
+
const minimal = await askYesNo(rl, 'Install minimal project scaffolding?', false);
|
|
235
236
|
const withUtils = await askYesNo(rl, 'Install optional bin/ utilities?', false);
|
|
236
237
|
rl.close();
|
|
237
238
|
|
|
238
|
-
await install(runtimes, scope, { withUtils });
|
|
239
|
+
await install(runtimes, scope, { withUtils, minimal });
|
|
239
240
|
await generator.writeIntegrationsConfig(config);
|
|
240
241
|
printNextSteps(runtimes, scope, credGuidance);
|
|
241
242
|
} catch (err) {
|
package/docs/user-guide.md
CHANGED
|
@@ -20,6 +20,11 @@ Optional utilities:
|
|
|
20
20
|
npx mindforge-cc@latest --claude --local --with-utils
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
+
Minimal scaffolding:
|
|
24
|
+
```bash
|
|
25
|
+
npx mindforge-cc@latest --claude --local --minimal
|
|
26
|
+
```
|
|
27
|
+
|
|
23
28
|
### Antigravity
|
|
24
29
|
```bash
|
|
25
30
|
npx mindforge-cc@latest --antigravity --global
|