multimodel-dev-os 2.0.1 → 2.8.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.
- package/.ai/intelligence/README.md +14 -0
- package/.ai/intelligence/apply-log.schema.json +65 -0
- package/.ai/intelligence/feedback-log.example.jsonl +2 -0
- package/.ai/intelligence/feedback.schema.json +47 -0
- package/.ai/intelligence/improvement-proposal.schema.json +70 -0
- package/.ai/intelligence/learning-rules.example.md +18 -0
- package/.ai/intelligence/memory.schema.json +97 -0
- package/.ai/plugins/README.md +30 -0
- package/.ai/plugins/plugin.example.yaml +32 -0
- package/.ai/policies/approval-gates.md +35 -0
- package/.ai/policies/memory-policy.md +30 -0
- package/.ai/policies/self-improvement-policy.md +39 -0
- package/.ai/proposals/README.md +44 -0
- package/.ai/proposals/apply-operation.example.json +22 -0
- package/.ai/registries/capabilities.yaml +73 -0
- package/.ai/registries/tools.yaml +84 -0
- package/.ai/registries/workflows.yaml +217 -0
- package/.ai/schema/plugin.schema.json +56 -0
- package/README.md +116 -138
- 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 +3472 -7
- package/docs/.vitepress/config.js +46 -7
- package/docs/5-day-roadmap.md +9 -9
- package/docs/CLI.md +260 -34
- package/docs/adapter-sync.md +27 -0
- package/docs/adapters.md +16 -0
- package/docs/agent-handoff.md +40 -0
- package/docs/approved-proposal-apply.md +156 -0
- package/docs/architecture.md +31 -7
- package/docs/capability-registry.md +24 -0
- package/docs/comparison.md +72 -25
- package/docs/compatibility.md +2 -2
- package/docs/dashboard.md +105 -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/feedback-learning.md +33 -0
- package/docs/future-proof-architecture.md +22 -0
- package/docs/hash-compressed-memory.md +72 -0
- package/docs/improvement-proposals.md +70 -0
- package/docs/index.md +192 -81
- package/docs/installers.md +18 -4
- package/docs/launch-kit.md +97 -49
- package/docs/learning-rules.md +36 -0
- package/docs/npm-publishing.md +6 -6
- package/docs/plugin-authoring.md +99 -0
- package/docs/plugin-hooks.md +80 -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 +47 -4
- package/docs/public/llms.txt +55 -2
- package/docs/public/sitemap.xml +85 -0
- package/docs/quickstart.md +82 -22
- package/docs/real-repo-onboarding.md +27 -0
- package/docs/repository-command-center.md +68 -0
- package/docs/self-improving-codebase.md +46 -0
- package/docs/template-recommendation.md +22 -0
- package/docs/templates-guide.md +11 -0
- package/docs/tool-registry.md +21 -0
- package/docs/tui-safety.md +59 -0
- package/docs/use-cases.md +21 -0
- package/docs/v2-roadmap.md +78 -71
- package/docs/workflow-orchestration.md +62 -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 +107 -3
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Workflow Orchestration
|
|
2
|
+
|
|
3
|
+
MultiModel Dev OS `v2.5.0` features a built-in **Workflow Runner** designed to orchestrate codebase diagnostic pipelines safely.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. CLI Commands
|
|
8
|
+
|
|
9
|
+
Workflows are registered in [.ai/registries/workflows.yaml](file:///.ai/registries/workflows.yaml) and can be executed via the following subcommands:
|
|
10
|
+
|
|
11
|
+
### List Registered Workflows
|
|
12
|
+
Prints name, risk, and summary of all active workflows:
|
|
13
|
+
```bash
|
|
14
|
+
npx multimodel-dev-os workflow list
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### Show Workflow Specifications
|
|
18
|
+
Displays details, memory write permissions, code modification permissions, and individual logical steps:
|
|
19
|
+
```bash
|
|
20
|
+
npx multimodel-dev-os workflow show repo-health
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Plan Workflow Execution (Dry-Run)
|
|
24
|
+
Prints the execution sequence, command lists, and expected outputs without executing any logic:
|
|
25
|
+
```bash
|
|
26
|
+
npx multimodel-dev-os workflow plan repo-health
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Run Workflow
|
|
30
|
+
Executes the workflow steps sequentially:
|
|
31
|
+
```bash
|
|
32
|
+
npx multimodel-dev-os workflow run repo-health
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
> [!TIP]
|
|
36
|
+
> You can also run, plan, and list workflows interactively through the [TUI Dashboard](file:///f:/multimodel-dev-os/docs/dashboard.md) under the **Quality Gates & Diagnostics** or **Memory & Intelligence** menus.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 2. Standard Built-in Workflows
|
|
41
|
+
|
|
42
|
+
MultiModel Dev OS defines 5 baseline workflows:
|
|
43
|
+
|
|
44
|
+
1. **`repo-health`** (Low Risk): Scans framework signals, performs advisory doctor audits, and verifies file structures.
|
|
45
|
+
2. **`memory-refresh`** (Medium Risk): Assesses memory differences and incremental refreshes.
|
|
46
|
+
3. **`feedback-review`** (Low Risk): Lists active developer logs and compiles rules to `learning-rules.md`.
|
|
47
|
+
4. **`proposal-review`** (Low Risk): Inspects codebase proposals, checks status counts, and displays audit apply logs.
|
|
48
|
+
5. **`release-check`** (Low Risk): Verifies codebase structures, executes release doctors, and runs package pack checks.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 3. Strict Safety Gates
|
|
53
|
+
|
|
54
|
+
The workflow engine enforces strict safety boundaries:
|
|
55
|
+
|
|
56
|
+
* **No File Modifications**: Allowed workflows only execute read-only checkups and incremental metadata updates (memory file compilation, feedback summaries).
|
|
57
|
+
* **No Shell Execution**: Shell command execution from `workflows.yaml` is prohibited. Steps map directly to internal Javascript CLI functions.
|
|
58
|
+
* **No Autonomy**: Any step requiring code changes (e.g. applying proposals) stops and outputs manual next-step instructions for the developer.
|
|
59
|
+
|
|
60
|
+
## 4. Bundled Registry Fallback
|
|
61
|
+
|
|
62
|
+
If the repository does not have a local `.ai/registries/workflows.yaml` registry file initialized yet, the workflow runner will automatically fall back to the bundled registry package templates and output a notice. This allows running read-only diagnostics prior to full project onboarding.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Example: Adapter Sync
|
|
2
|
+
|
|
3
|
+
Sync your AGENTS.md rules to `.cursorrules`, `CLAUDE.md`, `.vscode/settings.json`, and more — automatically.
|
|
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
|
+
# Check which adapters are enabled/disabled
|
|
14
|
+
npx multimodel-dev-os@latest adapter status
|
|
15
|
+
|
|
16
|
+
# Preview diff for a specific adapter
|
|
17
|
+
npx multimodel-dev-os@latest adapter diff cursor
|
|
18
|
+
|
|
19
|
+
# Sync all enabled adapters (requires approval)
|
|
20
|
+
npx multimodel-dev-os@latest adapter sync all --approved
|
|
21
|
+
|
|
22
|
+
# Verify workspace health
|
|
23
|
+
npx multimodel-dev-os@latest validate
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Expected Result
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
🔄 Syncing adapters...
|
|
30
|
+
CREATE .cursorrules
|
|
31
|
+
CREATE CLAUDE.md
|
|
32
|
+
CREATE .vscode/settings.json
|
|
33
|
+
✅ 3 adapters synced.
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Safety
|
|
37
|
+
|
|
38
|
+
- `adapter status` and `adapter diff` are read-only
|
|
39
|
+
- `adapter sync` requires `--approved` flag
|
|
40
|
+
- Existing files need `--force` to overwrite
|
|
41
|
+
- All overwrites create `.bak` backups
|
|
42
|
+
|
|
43
|
+
## Full Demo
|
|
44
|
+
|
|
45
|
+
See the [complete walkthrough](/demos/adapter-sync) for step-by-step instructions.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Example: Command Center
|
|
2
|
+
|
|
3
|
+
Use the repository command center to get a compact operational dashboard and run automated workflows.
|
|
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
|
+
# View compact project dashboard
|
|
14
|
+
npx multimodel-dev-os@latest status
|
|
15
|
+
|
|
16
|
+
# List available workflows
|
|
17
|
+
npx multimodel-dev-os@latest workflow list
|
|
18
|
+
|
|
19
|
+
# Dry-run a workflow to see what would execute
|
|
20
|
+
npx multimodel-dev-os@latest workflow plan repo-health
|
|
21
|
+
|
|
22
|
+
# Run a workflow (read-only, safe execution boundaries)
|
|
23
|
+
npx multimodel-dev-os@latest workflow run repo-health
|
|
24
|
+
|
|
25
|
+
# Build and view session handoff
|
|
26
|
+
npx multimodel-dev-os@latest handoff build
|
|
27
|
+
npx multimodel-dev-os@latest handoff show
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Expected Result
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
📊 Repository Status: my-project
|
|
34
|
+
Version: 1.0.0
|
|
35
|
+
Frameworks: nextjs, typescript
|
|
36
|
+
Memory: fresh (updated 2 min ago)
|
|
37
|
+
Feedback entries: 3
|
|
38
|
+
Proposals: 1 draft, 0 applied
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Available Workflows
|
|
42
|
+
|
|
43
|
+
| Workflow | Purpose |
|
|
44
|
+
|----------|---------|
|
|
45
|
+
| `repo-health` | Run validate, doctor, and scan checks |
|
|
46
|
+
| `memory-refresh` | Update hash-compressed memory index |
|
|
47
|
+
| `feedback-review` | Summarize pending feedback entries |
|
|
48
|
+
| `proposal-review` | Review and display proposal statuses |
|
|
49
|
+
| `release-check` | Pre-flight release verification |
|
|
50
|
+
|
|
51
|
+
## Safety
|
|
52
|
+
|
|
53
|
+
- `status`, `workflow list`, and `workflow plan` are read-only
|
|
54
|
+
- `workflow run` is restricted to safe, non-destructive CLI functions
|
|
55
|
+
- No proposals are applied, no shell commands are executed destructively
|
|
56
|
+
|
|
57
|
+
## Full Demo
|
|
58
|
+
|
|
59
|
+
See the [release check walkthrough](/demos/release-check) for the verification workflow.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Example: Real Repo Onboarding
|
|
2
|
+
|
|
3
|
+
Onboard an existing codebase into MultiModel Dev OS safely — no breaking changes, automatic backups.
|
|
4
|
+
|
|
5
|
+
## Prerequisites
|
|
6
|
+
|
|
7
|
+
- Node.js 18+
|
|
8
|
+
- An existing project directory with source code
|
|
9
|
+
|
|
10
|
+
## Commands
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
# Step 1: Analyze your project (read-only)
|
|
14
|
+
npx multimodel-dev-os@latest onboard analyze
|
|
15
|
+
|
|
16
|
+
# Step 2: Get template recommendations (read-only)
|
|
17
|
+
npx multimodel-dev-os@latest onboard recommend
|
|
18
|
+
|
|
19
|
+
# Step 3: Generate onboarding plan (writes to .ai/intelligence/, gitignored)
|
|
20
|
+
npx multimodel-dev-os@latest onboard plan
|
|
21
|
+
|
|
22
|
+
# Step 4: Apply configs (creates files, requires approval)
|
|
23
|
+
npx multimodel-dev-os@latest onboard apply --approved
|
|
24
|
+
|
|
25
|
+
# Step 5: Verify completeness
|
|
26
|
+
npx multimodel-dev-os@latest onboard status
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Expected Result
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
📊 Onboarding Status
|
|
33
|
+
Completeness: 100%
|
|
34
|
+
Root files: AGENTS.md ✓ MEMORY.md ✓ TASKS.md ✓ RUNBOOK.md ✓
|
|
35
|
+
Config: .ai/config.yaml ✓
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Files Created
|
|
39
|
+
|
|
40
|
+
- `AGENTS.md`, `MEMORY.md`, `TASKS.md`, `RUNBOOK.md`
|
|
41
|
+
- `.ai/config.yaml` and `.ai/context/` directory
|
|
42
|
+
- `.ai/intelligence/onboarding.plan.json` (gitignored)
|
|
43
|
+
- `.ai/intelligence/onboarding.report.md` (gitignored)
|
|
44
|
+
|
|
45
|
+
## Safety
|
|
46
|
+
|
|
47
|
+
- Steps 1-3 are fully read-only
|
|
48
|
+
- Step 4 never overwrites existing files without `--force`
|
|
49
|
+
- All overwrites create `.bak` backups automatically
|
|
50
|
+
|
|
51
|
+
## Full Demo
|
|
52
|
+
|
|
53
|
+
See the [complete walkthrough](/demos/existing-repo-onboarding) for expected terminal output and detailed explanations.
|
|
@@ -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
|
@@ -231,6 +231,21 @@ checkFile('docs/v2-migration.md');
|
|
|
231
231
|
checkFile('docs/v2-release-checklist.md');
|
|
232
232
|
checkFile('docs/package-safety.md');
|
|
233
233
|
|
|
234
|
+
// --- v2.1.0 Intelligence Layer Documentation ---
|
|
235
|
+
console.log('\nIntelligence Layer Documentation:');
|
|
236
|
+
checkFile('docs/future-proof-architecture.md');
|
|
237
|
+
checkFile('docs/self-improving-codebase.md');
|
|
238
|
+
checkFile('docs/feedback-learning.md');
|
|
239
|
+
checkFile('docs/hash-compressed-memory.md');
|
|
240
|
+
checkFile('docs/capability-registry.md');
|
|
241
|
+
checkFile('docs/tool-registry.md');
|
|
242
|
+
checkFile('docs/improvement-proposals.md');
|
|
243
|
+
checkFile('docs/learning-rules.md');
|
|
244
|
+
checkFile('docs/approved-proposal-apply.md');
|
|
245
|
+
checkFile('docs/repository-command-center.md');
|
|
246
|
+
checkFile('docs/workflow-orchestration.md');
|
|
247
|
+
checkFile('docs/agent-handoff.md');
|
|
248
|
+
|
|
234
249
|
// --- Model & Adapter Registries ---
|
|
235
250
|
console.log('\nModel & Adapter Registries:');
|
|
236
251
|
checkFile('.ai/models/registry.yaml');
|
|
@@ -250,6 +265,28 @@ checkFile('.ai/schema/config.schema.json');
|
|
|
250
265
|
checkFile('.ai/schema/template.schema.json');
|
|
251
266
|
checkFile('.ai/schema/adapter.schema.json');
|
|
252
267
|
|
|
268
|
+
// --- v2.1.0 Intelligence Layer (Schemas, Policies, Registries) ---
|
|
269
|
+
console.log('\nIntelligence Layer Schemas:');
|
|
270
|
+
checkFile('.ai/intelligence/memory.schema.json');
|
|
271
|
+
checkFile('.ai/intelligence/feedback.schema.json');
|
|
272
|
+
checkFile('.ai/intelligence/README.md');
|
|
273
|
+
checkFile('.ai/intelligence/feedback-log.example.jsonl');
|
|
274
|
+
checkFile('.ai/intelligence/learning-rules.example.md');
|
|
275
|
+
checkFile('.ai/intelligence/improvement-proposal.schema.json');
|
|
276
|
+
checkFile('.ai/intelligence/apply-log.schema.json');
|
|
277
|
+
checkFile('.ai/proposals/README.md');
|
|
278
|
+
checkFile('.ai/proposals/apply-operation.example.json');
|
|
279
|
+
|
|
280
|
+
console.log('\nIntelligence Layer Policies:');
|
|
281
|
+
checkFile('.ai/policies/self-improvement-policy.md');
|
|
282
|
+
checkFile('.ai/policies/memory-policy.md');
|
|
283
|
+
checkFile('.ai/policies/approval-gates.md');
|
|
284
|
+
|
|
285
|
+
console.log('\nIntelligence Layer Registries:');
|
|
286
|
+
checkFile('.ai/registries/capabilities.yaml');
|
|
287
|
+
checkFile('.ai/registries/tools.yaml');
|
|
288
|
+
checkFile('.ai/registries/workflows.yaml');
|
|
289
|
+
|
|
253
290
|
// --- Test Blueprints ---
|
|
254
291
|
console.log('\nTest Manuals:');
|
|
255
292
|
checkFile('tests/README.md');
|
|
@@ -377,6 +414,9 @@ verifyRegistryParsed('.ai/models/routing-presets.yaml', 'presets');
|
|
|
377
414
|
verifyRegistryParsed('.ai/models/local-models.yaml', 'local_engines');
|
|
378
415
|
verifyRegistryParsed('.ai/adapters/registry.yaml', 'adapters');
|
|
379
416
|
verifyRegistryParsed('.ai/templates/registry.yaml', 'templates');
|
|
417
|
+
verifyRegistryParsed('.ai/registries/capabilities.yaml', 'capabilities');
|
|
418
|
+
verifyRegistryParsed('.ai/registries/tools.yaml', 'tools');
|
|
419
|
+
verifyRegistryParsed('.ai/registries/workflows.yaml', 'workflows');
|
|
380
420
|
|
|
381
421
|
// --- CLI & Packaging Pre-Flight Tests ---
|
|
382
422
|
console.log('\nRunning CLI & Packaging Pre-Flight Tests...');
|
|
@@ -408,11 +448,70 @@ try {
|
|
|
408
448
|
console.log(` ${GREEN}✓${NC} CLI help displays v${expectedVersion}`);
|
|
409
449
|
pass++;
|
|
410
450
|
}
|
|
451
|
+
|
|
452
|
+
if (helpOutput.includes('scan') && helpOutput.includes('memory') && helpOutput.includes('status') && helpOutput.includes('workflow') && helpOutput.includes('handoff')) {
|
|
453
|
+
console.log(` ${GREEN}✓${NC} CLI help includes scan, memory, status, workflow, and handoff commands`);
|
|
454
|
+
pass++;
|
|
455
|
+
} else {
|
|
456
|
+
console.error(` ${RED}✗${NC} CLI help is missing scan, memory, status, workflow, or handoff commands`);
|
|
457
|
+
fail++;
|
|
458
|
+
}
|
|
411
459
|
} catch (e) {
|
|
412
460
|
console.error(` ${RED}✗${NC} node bin/multimodel-dev-os.js --help failed: ${e.message}`);
|
|
413
461
|
fail++;
|
|
414
462
|
}
|
|
415
463
|
|
|
464
|
+
// Verify docs mention memory build
|
|
465
|
+
try {
|
|
466
|
+
const mdContent = readFileSync(join(projectRoot, 'docs', 'hash-compressed-memory.md'), 'utf8');
|
|
467
|
+
if (mdContent.includes('memory build')) {
|
|
468
|
+
console.log(` ${GREEN}✓${NC} docs/hash-compressed-memory.md mentions 'memory build'`);
|
|
469
|
+
pass++;
|
|
470
|
+
} else {
|
|
471
|
+
console.error(` ${RED}✗${NC} docs/hash-compressed-memory.md does not mention 'memory build'`);
|
|
472
|
+
fail++;
|
|
473
|
+
}
|
|
474
|
+
} catch (e) {
|
|
475
|
+
console.error(` ${RED}✗${NC} docs check failed: ${e.message}`);
|
|
476
|
+
fail++;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
// Verify no generated memory or feedback logs or proposals are committed/tracked in git root/intelligence folder
|
|
480
|
+
try {
|
|
481
|
+
const checkUntracked = (relPath) => {
|
|
482
|
+
if (existsSync(join(projectRoot, relPath))) {
|
|
483
|
+
console.error(` ${RED}✗${NC} ${relPath} should not be tracked/committed!`);
|
|
484
|
+
fail++;
|
|
485
|
+
} else {
|
|
486
|
+
console.log(` ${GREEN}✓${NC} ${relPath} is not tracked/committed`);
|
|
487
|
+
pass++;
|
|
488
|
+
}
|
|
489
|
+
};
|
|
490
|
+
checkUntracked('.ai/intelligence/memory.hash.json');
|
|
491
|
+
checkUntracked('.ai/intelligence/memory.summary.md');
|
|
492
|
+
checkUntracked('.ai/intelligence/feedback-log.jsonl');
|
|
493
|
+
checkUntracked('.ai/intelligence/learning-rules.md');
|
|
494
|
+
checkUntracked('.ai/intelligence/handoff.md');
|
|
495
|
+
checkUntracked('.ai/proposals/apply-log.jsonl');
|
|
496
|
+
|
|
497
|
+
// also check if any proposal-*.md file exists directly in projectRoot/proposals (since it shouldn't be tracked)
|
|
498
|
+
const proposalsDir = join(projectRoot, '.ai', 'proposals');
|
|
499
|
+
if (existsSync(proposalsDir)) {
|
|
500
|
+
const files = readdirSync(proposalsDir);
|
|
501
|
+
const hasRuntimeProposals = files.some(f => f.startsWith('proposal-') && f !== 'proposal-template.md' && f.endsWith('.md'));
|
|
502
|
+
if (hasRuntimeProposals) {
|
|
503
|
+
console.error(` ${RED}✗${NC} Runtime proposals should not be committed/tracked!`);
|
|
504
|
+
fail++;
|
|
505
|
+
} else {
|
|
506
|
+
console.log(` ${GREEN}✓${NC} No runtime proposals committed`);
|
|
507
|
+
pass++;
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
} catch (e) {
|
|
511
|
+
console.error(` ${RED}✗${NC} Tracking verification of generated files failed: ${e.message}`);
|
|
512
|
+
fail++;
|
|
513
|
+
}
|
|
514
|
+
|
|
416
515
|
// Verify npm pack dry-run shows current version dynamically
|
|
417
516
|
try {
|
|
418
517
|
const packOutput = execSync('npm pack --dry-run', { cwd: projectRoot, encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'] });
|
|
@@ -447,12 +546,17 @@ try {
|
|
|
447
546
|
|
|
448
547
|
// --- Package Safety & Hygiene Checks ---
|
|
449
548
|
console.log('\nPackage Safety & Hygiene Checks:');
|
|
450
|
-
if (existsSync(join(projectRoot, '.npmrc'))) {
|
|
549
|
+
if (existsSync(join(projectRoot, '.npmrc')) && process.env.MMDO_ALLOW_PUBLISH !== 'true') {
|
|
451
550
|
console.error(` ${RED}✗ .npmrc file exists in package root (security risk)${NC}`);
|
|
452
551
|
fail++;
|
|
453
552
|
} else {
|
|
454
|
-
|
|
455
|
-
|
|
553
|
+
if (existsSync(join(projectRoot, '.npmrc'))) {
|
|
554
|
+
console.log(` ${YELLOW}!${NC} .npmrc file present in package root (allowed via MMDO_ALLOW_PUBLISH)`);
|
|
555
|
+
warn++;
|
|
556
|
+
} else {
|
|
557
|
+
console.log(` ${GREEN}✓${NC} No .npmrc file present in package root`);
|
|
558
|
+
pass++;
|
|
559
|
+
}
|
|
456
560
|
}
|
|
457
561
|
|
|
458
562
|
const checkExamplesHygiene = (dir) => {
|