multimodel-dev-os 2.6.0 → 2.8.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/.ai/plugins/README.md +30 -0
- package/.ai/plugins/plugin.example.yaml +32 -0
- package/.ai/schema/plugin.schema.json +56 -0
- package/README.md +76 -219
- package/assets/adapter-sync-flow.svg +84 -0
- package/assets/architecture-preview.svg +46 -31
- package/assets/onboarding-flow.svg +79 -0
- package/assets/social-preview.svg +1 -1
- package/assets/terminal-demo.svg +22 -23
- package/bin/multimodel-dev-os.js +683 -2
- package/docs/.vitepress/config.js +25 -8
- package/docs/5-day-roadmap.md +9 -9
- package/docs/CLI.md +250 -111
- package/docs/architecture.md +31 -7
- package/docs/comparison.md +72 -25
- package/docs/compatibility.md +2 -2
- package/docs/dashboard.md +107 -0
- package/docs/demo.md +23 -60
- package/docs/demos/adapter-sync.md +103 -0
- package/docs/demos/existing-repo-onboarding.md +125 -0
- package/docs/demos/index.md +91 -0
- package/docs/demos/multi-agent-handoff.md +88 -0
- package/docs/demos/release-check.md +109 -0
- package/docs/demos/safe-improvement-loop.md +119 -0
- package/docs/distribution.md +195 -0
- package/docs/faq.md +91 -24
- package/docs/index.md +192 -81
- package/docs/installers.md +18 -4
- package/docs/launch-kit.md +97 -49
- package/docs/npm-publishing.md +6 -6
- package/docs/plugin-authoring.md +99 -0
- package/docs/plugin-hooks.md +89 -0
- package/docs/public/assets/adapter-sync-flow.svg +84 -0
- package/docs/public/assets/onboarding-flow.svg +79 -0
- package/docs/public/llms-full.txt +16 -3
- package/docs/public/llms.txt +13 -1
- package/docs/public/sitemap.xml +55 -0
- package/docs/quickstart.md +80 -26
- package/docs/repository-command-center.md +16 -0
- package/docs/tui-safety.md +59 -0
- package/docs/use-cases.md +21 -0
- package/docs/v2-roadmap.md +80 -88
- package/docs/workflow-orchestration.md +3 -0
- package/examples/adapter-sync/README.md +45 -0
- package/examples/command-center/README.md +59 -0
- package/examples/real-repo-onboarding/README.md +53 -0
- package/examples/safe-improvement-loop/README.md +48 -0
- package/package.json +1 -1
- package/scripts/install.ps1 +1 -1
- package/scripts/install.sh +1 -1
- package/scripts/verify.js +88 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Example: Safe Improvement Loop
|
|
2
|
+
|
|
3
|
+
Capture developer corrections, propose improvements, validate safety gates, and apply changes with full audit trails.
|
|
4
|
+
|
|
5
|
+
## Prerequisites
|
|
6
|
+
|
|
7
|
+
- Node.js 18+
|
|
8
|
+
- A MultiModel Dev OS workspace (`npx multimodel-dev-os@latest init`)
|
|
9
|
+
|
|
10
|
+
## Commands
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
# Record developer feedback
|
|
14
|
+
npx multimodel-dev-os@latest feedback add "Always use TypeScript strict mode" --type preference
|
|
15
|
+
|
|
16
|
+
# Compile feedback into learning rules
|
|
17
|
+
npx multimodel-dev-os@latest feedback summarize
|
|
18
|
+
|
|
19
|
+
# Draft an improvement proposal
|
|
20
|
+
npx multimodel-dev-os@latest improve propose --title "Add strict mode config"
|
|
21
|
+
|
|
22
|
+
# Review all proposals
|
|
23
|
+
npx multimodel-dev-os@latest improve review
|
|
24
|
+
|
|
25
|
+
# Validate a proposal's safety gates (12 checks)
|
|
26
|
+
npx multimodel-dev-os@latest improve validate .ai/proposals/proposal-XXXX.md
|
|
27
|
+
|
|
28
|
+
# Preview changes without modifying files
|
|
29
|
+
npx multimodel-dev-os@latest improve diff .ai/proposals/proposal-XXXX.md
|
|
30
|
+
|
|
31
|
+
# Apply approved proposal with audit logging
|
|
32
|
+
npx multimodel-dev-os@latest improve apply .ai/proposals/proposal-XXXX.md --approved
|
|
33
|
+
|
|
34
|
+
# View the audit log
|
|
35
|
+
npx multimodel-dev-os@latest improve log
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Safety
|
|
39
|
+
|
|
40
|
+
- Feedback logging, proposal drafting, review, and diff are non-destructive
|
|
41
|
+
- `improve apply` requires explicit `--approved` flag
|
|
42
|
+
- 12 safety gates validated before any apply
|
|
43
|
+
- Protected paths blocked: `.git/`, `.env`, `node_modules/`, `apply-log.jsonl`
|
|
44
|
+
- All operations audited with SHA-256 pre/post file hashes
|
|
45
|
+
|
|
46
|
+
## Full Demo
|
|
47
|
+
|
|
48
|
+
See the [complete walkthrough](/demos/safe-improvement-loop) for detailed explanations and expected output.
|
package/package.json
CHANGED
package/scripts/install.ps1
CHANGED
package/scripts/install.sh
CHANGED
package/scripts/verify.js
CHANGED
|
@@ -456,11 +456,99 @@ try {
|
|
|
456
456
|
console.error(` ${RED}✗${NC} CLI help is missing scan, memory, status, workflow, or handoff commands`);
|
|
457
457
|
fail++;
|
|
458
458
|
}
|
|
459
|
+
|
|
460
|
+
if (helpOutput.includes('dashboard') && helpOutput.includes('ui') && helpOutput.includes('plugin')) {
|
|
461
|
+
console.log(` ${GREEN}✓${NC} CLI help includes dashboard, ui, and plugin commands`);
|
|
462
|
+
pass++;
|
|
463
|
+
} else {
|
|
464
|
+
console.error(` ${RED}✗${NC} CLI help is missing dashboard, ui, or plugin commands`);
|
|
465
|
+
fail++;
|
|
466
|
+
}
|
|
459
467
|
} catch (e) {
|
|
460
468
|
console.error(` ${RED}✗${NC} node bin/multimodel-dev-os.js --help failed: ${e.message}`);
|
|
461
469
|
fail++;
|
|
462
470
|
}
|
|
463
471
|
|
|
472
|
+
// --- v2.8.0 / v2.8.1 Dashboard & Plugin Tests ---
|
|
473
|
+
console.log('\nRunning TUI Dashboard & Plugin Pre-Flight Tests...');
|
|
474
|
+
|
|
475
|
+
// 1. Dashboard dry-run check
|
|
476
|
+
try {
|
|
477
|
+
const output = execSync('node bin/multimodel-dev-os.js dashboard --dry-run', { cwd: projectRoot, encoding: 'utf8' });
|
|
478
|
+
if (output.includes('Headless/CI Preview') && output.includes('npx multimodel-dev-os')) {
|
|
479
|
+
console.log(` ${GREEN}✓${NC} dashboard --dry-run executes successfully and displays headless preview`);
|
|
480
|
+
pass++;
|
|
481
|
+
} else {
|
|
482
|
+
console.error(` ${RED}✗${NC} dashboard --dry-run output is missing preview strings`);
|
|
483
|
+
fail++;
|
|
484
|
+
}
|
|
485
|
+
} catch (e) {
|
|
486
|
+
console.error(` ${RED}✗${NC} dashboard --dry-run execution failed: ${e.message}`);
|
|
487
|
+
fail++;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
// 2. Dashboard list-actions check
|
|
491
|
+
try {
|
|
492
|
+
const output = execSync('node bin/multimodel-dev-os.js dashboard --list-actions', { cwd: projectRoot, encoding: 'utf8' });
|
|
493
|
+
if (output.includes('Headless/CI Preview') && output.includes('npx multimodel-dev-os')) {
|
|
494
|
+
console.log(` ${GREEN}✓${NC} dashboard --list-actions executes successfully and displays headless preview`);
|
|
495
|
+
pass++;
|
|
496
|
+
} else {
|
|
497
|
+
console.error(` ${RED}✗${NC} dashboard --list-actions output is missing preview strings`);
|
|
498
|
+
fail++;
|
|
499
|
+
}
|
|
500
|
+
} catch (e) {
|
|
501
|
+
console.error(` ${RED}✗${NC} dashboard --list-actions execution failed: ${e.message}`);
|
|
502
|
+
fail++;
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
// 3. Plugin validation check
|
|
506
|
+
try {
|
|
507
|
+
const output = execSync('node bin/multimodel-dev-os.js plugin validate .ai/plugins/plugin.example.yaml', { cwd: projectRoot, encoding: 'utf8' });
|
|
508
|
+
if (output.includes('fully valid and compliant')) {
|
|
509
|
+
console.log(` ${GREEN}✓${NC} plugin validate on example manifest passes successfully`);
|
|
510
|
+
pass++;
|
|
511
|
+
} else {
|
|
512
|
+
console.error(` ${RED}✗${NC} plugin validate on example manifest failed to report compliance`);
|
|
513
|
+
fail++;
|
|
514
|
+
}
|
|
515
|
+
} catch (e) {
|
|
516
|
+
console.error(` ${RED}✗${NC} plugin validate execution failed: ${e.message}`);
|
|
517
|
+
fail++;
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
// 4. Plugin install refusal check (no --approved, should exit with code 1)
|
|
521
|
+
try {
|
|
522
|
+
execSync('node bin/multimodel-dev-os.js plugin install .ai/plugins/plugin.example.yaml', { cwd: projectRoot, stdio: 'pipe' });
|
|
523
|
+
console.error(` ${RED}✗${NC} plugin install without --approved should have exited with code 1, but exited with 0`);
|
|
524
|
+
fail++;
|
|
525
|
+
} catch (e) {
|
|
526
|
+
if (e.status === 1) {
|
|
527
|
+
const stdErrOut = e.stderr ? e.stderr.toString() : '';
|
|
528
|
+
const stdOutOut = e.stdout ? e.stdout.toString() : '';
|
|
529
|
+
if (stdErrOut.includes('Installation refused') || stdOutOut.includes('Installation refused')) {
|
|
530
|
+
console.log(` ${GREEN}✓${NC} plugin install without --approved correctly refuses and exits with code 1`);
|
|
531
|
+
pass++;
|
|
532
|
+
} else {
|
|
533
|
+
console.error(` ${RED}✗${NC} plugin install without --approved exited with 1 but missing refusal message`);
|
|
534
|
+
fail++;
|
|
535
|
+
}
|
|
536
|
+
} else {
|
|
537
|
+
console.error(` ${RED}✗${NC} plugin install without --approved failed with unexpected code ${e.status}: ${e.message}`);
|
|
538
|
+
fail++;
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
// 5. Plugin status check
|
|
543
|
+
try {
|
|
544
|
+
execSync('node bin/multimodel-dev-os.js plugin status', { cwd: projectRoot, stdio: 'ignore' });
|
|
545
|
+
console.log(` ${GREEN}✓${NC} plugin status executes without crashing`);
|
|
546
|
+
pass++;
|
|
547
|
+
} catch (e) {
|
|
548
|
+
console.error(` ${RED}✗${NC} plugin status execution failed: ${e.message}`);
|
|
549
|
+
fail++;
|
|
550
|
+
}
|
|
551
|
+
|
|
464
552
|
// Verify docs mention memory build
|
|
465
553
|
try {
|
|
466
554
|
const mdContent = readFileSync(join(projectRoot, 'docs', 'hash-compressed-memory.md'), 'utf8');
|