multimodel-dev-os 3.0.0 → 3.0.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/README.md CHANGED
@@ -48,7 +48,7 @@ Your workspace now has a **single source of truth** that every AI coding tool re
48
48
  | 🧠 | **Intelligence Engine** | Hash-compressed memory, feedback learning, self-improvement proposals with HITL safety gates |
49
49
  | 📁 | **Repo Onboarding** | Analyze existing projects, recommend templates, and bootstrap configs without breaking anything |
50
50
  | 🔧 | **Zero Dependencies** | Pure Node.js CLI — no runtime, no build step, no package manager lock-in |
51
- | 🛡️ | **214+ Quality Gates** | Built-in `validate`, `doctor`, and `verify` commands with strict structural assertions |
51
+ | 🛡️ | **248+ Quality Gates** | Built-in `validate`, `doctor`, and `verify` commands with strict structural assertions |
52
52
 
53
53
  ---
54
54
 
@@ -158,8 +158,9 @@ npx multimodel-dev-os@latest handoff build
158
158
  | **v2.8.0 / v2.8.1** | Interactive TUI Dashboard & Plugin Hooks | ✅ Released |
159
159
  | **v2.9.0** | Local Workflow Marketplace & Plugin Catalog | ✅ Released |
160
160
  | **v3.0.0** | Trusted Remote Catalog & Registry Governance Layer | ✅ Released |
161
+ | **v3.0.1** | Registry UX & Policy Safety Patch | ✅ Released |
161
162
 
162
- **[Full Roadmap →](https://rizvee.github.io/multimodel-dev-os/v2-roadmap)**
163
+ **[Full Roadmap →](https://rizvee.github.io/multimodel-dev-os/v3-roadmap)**
163
164
 
164
165
  ---
165
166
 
@@ -5672,22 +5672,24 @@ function handleRegistryList(options) {
5672
5672
 
5673
5673
  console.log(`\n🗂️ \x1b[36mRegistry Sources [v${version}]\x1b[0m`);
5674
5674
  console.log('==================================================');
5675
- console.log(`Policy: allow_remote_registries = \x1b[${policy.allow_remote_registries ? '32mtrue' : '33mfalse'}\x1b[0m\n`);
5675
+ console.log(`Policy Status: allow_remote_registries = \x1b[${policy.allow_remote_registries ? '32mtrue' : '33mfalse'}\x1b[0m (Remote registries are disabled by default for safety)\n`);
5676
5676
 
5677
5677
  sources.forEach(s => {
5678
5678
  const status = s.enabled ? '\x1b[32m● enabled\x1b[0m' : '\x1b[90m○ disabled\x1b[0m';
5679
- console.log(` \x1b[32m${s.name}\x1b[0m ${status}`);
5679
+ const label = s.name === 'bundled' ? 'bundled' : s.type === 'local' ? `local:${s.name}` : `remote:${s.name}`;
5680
+ console.log(` \x1b[32m${s.name}\x1b[0m [${label}] ${status}`);
5680
5681
  console.log(` type: ${s.type}`);
5681
5682
  console.log(` url: ${s.url}`);
5682
5683
  console.log(` trust_level: ${s.trust_level}`);
5683
5684
  console.log(` safety_policy: ${s.safety_policy}`);
5684
- console.log(` checksum: ${s.checksum_required ? 'required' : 'not required'}`);
5685
- console.log(` signature: ${s.signature_required ? 'required' : 'not required'}`);
5685
+ console.log(` checksum: ${s.checksum_required ? 'required (SHA-256 integrity)' : 'not required'}`);
5686
+ console.log(` signature: ${s.signature_required ? 'required' : 'not required (v3.0.1)'}`);
5686
5687
  if (s.last_synced_at) console.log(` last_synced: ${s.last_synced_at}`);
5687
5688
  });
5688
5689
 
5689
- console.log('\nUse \x1b[36mregistry show <name>\x1b[0m to view detailed source metadata.');
5690
- console.log('Use \x1b[36mregistry status\x1b[0m to see cache health and sync timestamps.\n');
5690
+ console.log('\nUse \x1b[36mregistry show <name>\x1b[0m to view detailed source configuration.');
5691
+ console.log('Use \x1b[36mregistry status\x1b[0m to see policy states and cache health.');
5692
+ console.log('Use \x1b[36mregistry verify <name>\x1b[0m to perform integrity checks.\n');
5691
5693
  }
5692
5694
 
5693
5695
  function handleRegistryAdd(name, url, options) {
@@ -5706,7 +5708,7 @@ function handleRegistryAdd(name, url, options) {
5706
5708
  console.log(` URL: ${url}`);
5707
5709
  console.log(` Type: https`);
5708
5710
  console.log(` Trust Level: community`);
5709
- console.log(` Checksum: required`);
5711
+ console.log(` Checksum: required (SHA-256)`);
5710
5712
  console.log(`\nRun with --approved to apply:\n npx multimodel-dev-os registry add ${name} ${url} --approved\n`);
5711
5713
  process.exit(1);
5712
5714
  }
@@ -5796,8 +5798,10 @@ function handleRegistrySync(name, options) {
5796
5798
  const source = sources.find(s => s.name === name);
5797
5799
 
5798
5800
  if (!source) {
5799
- console.error(`\x1b[31mError: Registry '${name}' not found in sources.\x1b[0m`);
5800
- console.log('Use \x1b[36mregistry list\x1b[0m to view configured sources.');
5801
+ console.error(`\x1b[31mError: Registry '${name}' not found in configured sources.\x1b[0m`);
5802
+ console.log('Available configured sources:');
5803
+ sources.forEach(s => console.log(` - ${s.name} (${s.type})`));
5804
+ console.log('\nUse \x1b[36mregistry list\x1b[0m to view configured sources.');
5801
5805
  process.exit(1);
5802
5806
  }
5803
5807
 
@@ -5814,25 +5818,25 @@ function handleRegistrySync(name, options) {
5814
5818
  }
5815
5819
 
5816
5820
  if (!options.approved) {
5817
- console.log(`\n⚠️ \x1b[33mRegistry Sync Refused — Approval Required\x1b[0m`);
5821
+ console.log(`\n⚠️ \x1b[33mRegistry Sync Refused — Explicit Approval Required\x1b[0m`);
5818
5822
  console.log('==================================================');
5823
+ console.log(`Syncing remote registries requires the explicit \x1b[33m--approved\x1b[0m flag to download metadata and files.`);
5819
5824
  console.log(`Registry: \x1b[32m${name}\x1b[0m`);
5820
5825
  console.log(`URL: ${source.url}`);
5821
5826
  console.log(`Trust Level: ${source.trust_level}`);
5822
- console.log(`Checksum: ${source.checksum_required ? 'Required (SHA256)' : 'Not required'}`);
5823
- console.log(`Signature: ${source.signature_required ? 'Required' : 'Not required (v3.0.0)'}`);
5827
+ console.log(`Checksums: ${source.checksum_required ? 'Enforced (SHA-256)' : 'Not enforced'}`);
5828
+ console.log(`Signatures: ${source.signature_required ? 'Required' : 'Disabled (SHA-256 fallback)'}`);
5824
5829
  console.log(`\n\x1b[33mPlanned Actions:\x1b[0m`);
5825
5830
  console.log(` [DOWNLOAD] catalog.yaml → .ai/registry-cache/${name}/catalog.yaml`);
5826
5831
  console.log(` [DOWNLOAD] manifest.json → .ai/registry-cache/${name}/manifest.json`);
5827
5832
  console.log(` [COMPUTE] checksums.json → .ai/registry-cache/${name}/checksums.json`);
5828
- console.log(`\n\x1b[33mPost-Sync:\x1b[0m`);
5829
- console.log(` • No files are installed automatically.`);
5830
- console.log(` • No plugins are activated automatically.`);
5831
- console.log(` • Use 'catalog list --source remote:${name}' to browse cached entries.`);
5832
- console.log(` • Use 'catalog install <slug> --approved' to install individual plugins.`);
5833
- console.log(`\nPolicy Status: allow_remote_registries=${policy.allow_remote_registries}, require_checksum=${policy.require_checksum}`);
5834
- console.log(`\nRun with --approved to proceed:`);
5835
- console.log(` npx multimodel-dev-os registry sync ${name} --approved\n`);
5833
+ console.log(`\n\x1b[33mSecurity & Safety Boundaries:\x1b[0m`);
5834
+ console.log(` • \x1b[32mNo automated installs:\x1b[0m Syncing only updates the local cache. No plugins are installed or run.`);
5835
+ console.log(` • \x1b[32mNo arbitrary code execution:\x1b[0m Registries cannot run shell scripts, commands, or packages.`);
5836
+ console.log(` • \x1b[32mSandboxed write paths:\x1b[0m Cache files are written strictly to .ai/registry-cache/${name}/.`);
5837
+ console.log(` • \x1b[32mTo install afterwards:\x1b[0m Use 'catalog install <slug> --approved' to deploy a plugin.`);
5838
+ console.log(`\nTo execute this sync operation, run:`);
5839
+ console.log(` \x1b[36mnpx multimodel-dev-os registry sync ${name} --approved\x1b[0m\n`);
5836
5840
  process.exit(1);
5837
5841
  }
5838
5842
 
@@ -6015,23 +6019,24 @@ function handleRegistryStatus(options) {
6015
6019
 
6016
6020
  console.log(`\n📊 \x1b[36mRegistry Status [v${version}]\x1b[0m`);
6017
6021
  console.log('==================================================');
6018
- console.log(`\x1b[33mPolicy:\x1b[0m`);
6019
- console.log(` allow_remote_registries: \x1b[${policy.allow_remote_registries ? '32mtrue' : '33mfalse'}\x1b[0m`);
6020
- console.log(` require_checksum: ${policy.require_checksum}`);
6021
- console.log(` require_signature: ${policy.require_signature}`);
6022
- console.log(` allow_untrusted_install: ${policy.allow_untrusted_install}`);
6022
+ console.log(`\x1b[33mPolicy State:\x1b[0m`);
6023
+ console.log(` allow_remote_registries: \x1b[${policy.allow_remote_registries ? '32mtrue' : '33mfalse'}\x1b[0m (Disabled by default)`);
6024
+ console.log(` require_checksum: ${policy.require_checksum ? '\x1b[32mtrue\x1b[0m (SHA256 integrity enforced)' : '\x1b[33mfalse\x1b[0m'}`);
6025
+ console.log(` require_signature: ${policy.require_signature ? '\x1b[32mtrue\x1b[0m' : '\x1b[90mfalse (not enforced in v3.0)\x1b[0m'}`);
6026
+ console.log(` allow_untrusted_install: ${policy.allow_untrusted_install ? '\x1b[33mtrue\x1b[0m' : '\x1b[32mfalse\x1b[0m (secured)'}`);
6023
6027
  console.log(` max_plugin_files: ${policy.max_plugin_files}`);
6024
- console.log(` max_plugin_size_kb: ${policy.max_plugin_size_kb}`);
6028
+ console.log(` max_plugin_size_kb: ${policy.max_plugin_size_kb}KB`);
6025
6029
  console.log(` max_registry_cache_size: ${policy.max_registry_cache_size_kb}KB`);
6026
6030
 
6027
6031
  console.log(`\n\x1b[33mSources:\x1b[0m`);
6028
6032
  sources.forEach(s => {
6029
6033
  const status = s.enabled ? '\x1b[32m● enabled\x1b[0m' : '\x1b[90m○ disabled\x1b[0m';
6034
+ const label = s.name === 'bundled' ? 'bundled' : s.type === 'local' ? `local:${s.name}` : `remote:${s.name}`;
6030
6035
  const synced = s.last_synced_at ? `synced: ${s.last_synced_at}` : 'never synced';
6031
6036
  const cacheDir = join(sourceRoot, '.ai', 'registry-cache', s.name);
6032
6037
  const hasCache = s.type !== 'local' && existsSync(cacheDir);
6033
6038
 
6034
- console.log(` ${s.name} ${status} (${s.type}, ${s.trust_level})`);
6039
+ console.log(` ${s.name} ${status} [${label}] (${s.type}, ${s.trust_level})`);
6035
6040
  if (s.type !== 'local') {
6036
6041
  console.log(` URL: ${s.url}`);
6037
6042
  console.log(` Cache: ${hasCache ? '\x1b[32mcached\x1b[0m' : '\x1b[90mnot cached\x1b[0m'}`);
@@ -6039,7 +6044,8 @@ function handleRegistryStatus(options) {
6039
6044
  }
6040
6045
  });
6041
6046
 
6042
- console.log('\nUse \x1b[36mregistry verify <name>\x1b[0m to check cache integrity.');
6047
+ console.log('\nUse \x1b[36mregistry list\x1b[0m to view configured registry sources.');
6048
+ console.log('Use \x1b[36mregistry verify <name>\x1b[0m to check cache integrity offline.');
6043
6049
  console.log('Use \x1b[36mregistry sync <name> --approved\x1b[0m to refresh a remote cache.\n');
6044
6050
  }
6045
6051
 
@@ -6055,16 +6061,17 @@ function handleRegistryVerify(name, options) {
6055
6061
  }
6056
6062
  const content = readFileSync(catalogPath, 'utf8');
6057
6063
  const hash = computeSHA256(content);
6058
- console.log(` File: .ai/plugins/catalog.yaml`);
6059
- console.log(` SHA256: ${hash}`);
6060
- console.log(` Status: \x1b[32m✓ Present and readable\x1b[0m`);
6064
+ console.log(` Verification Type: Local verification (no network required)`);
6065
+ console.log(` File: .ai/plugins/catalog.yaml`);
6066
+ console.log(` SHA256 Checksum: ${hash}`);
6067
+ console.log(` Status: \x1b[32m✓ Present and readable (Integrity Verified)\x1b[0m`);
6061
6068
 
6062
6069
  // Verify it parses
6063
6070
  try {
6064
6071
  const parsed = parseYaml(content);
6065
6072
  const pluginCount = ((parsed.catalog || {}).plugins || []).length;
6066
- console.log(` Plugins: ${pluginCount} entries parsed successfully`);
6067
- console.log(`\n\x1b[32m✔ Bundled registry verification passed.\x1b[0m\n`);
6073
+ console.log(` Plugins: ${pluginCount} entries parsed successfully`);
6074
+ console.log(`\n\x1b[32m✔ Bundled registry verification passed. (Offline & Secure)\x1b[0m\n`);
6068
6075
  } catch (e) {
6069
6076
  console.error(`\n\x1b[31m✗ Bundled registry verification failed: ${e.message}\x1b[0m\n`);
6070
6077
  process.exit(1);
@@ -6099,7 +6106,7 @@ function handleRegistryVerify(name, options) {
6099
6106
  const content = readFileSync(filePath, 'utf8');
6100
6107
  const actualHash = `sha256:${computeSHA256(content)}`;
6101
6108
  if (actualHash === expectedHash) {
6102
- console.log(` \x1b[32m✓ ${file}: VERIFIED\x1b[0m`);
6109
+ console.log(` \x1b[32m✓ ${file}: VERIFIED (Integrity check matched via SHA-256)\x1b[0m`);
6103
6110
  } else {
6104
6111
  console.log(` \x1b[31m✗ ${file}: MISMATCH\x1b[0m`);
6105
6112
  console.log(` Expected: ${expectedHash}`);
@@ -6125,7 +6132,11 @@ function handleRegistryShow(name, options) {
6125
6132
  const source = sources.find(s => s.name === name);
6126
6133
 
6127
6134
  if (!source) {
6128
- console.error(`\x1b[31mError: Registry '${name}' not found.\x1b[0m`);
6135
+ console.error(`\x1b[31mError: Registry source '${name}' is not configured.\x1b[0m`);
6136
+ console.log('Available configured sources:');
6137
+ sources.forEach(s => console.log(` - ${s.name} (${s.type})`));
6138
+ console.log('\nTo add a remote source, run:');
6139
+ console.log(` npx multimodel-dev-os registry add <name> <url> --approved`);
6129
6140
  process.exit(1);
6130
6141
  }
6131
6142
 
@@ -6134,16 +6145,19 @@ function handleRegistryShow(name, options) {
6134
6145
  return;
6135
6146
  }
6136
6147
 
6148
+ const label = source.name === 'bundled' ? 'bundled' : source.type === 'local' ? `local:${source.name}` : `remote:${source.name}`;
6149
+
6137
6150
  console.log(`\n🔍 \x1b[36mRegistry Source: ${name}\x1b[0m`);
6138
6151
  console.log('==================================================');
6139
6152
  console.log(`\x1b[33mName:\x1b[0m ${source.name}`);
6153
+ console.log(`\x1b[33mSource Label:\x1b[0m ${label}`);
6140
6154
  console.log(`\x1b[33mType:\x1b[0m ${source.type}`);
6141
6155
  console.log(`\x1b[33mURL:\x1b[0m ${source.url}`);
6142
6156
  console.log(`\x1b[33mEnabled:\x1b[0m ${source.enabled}`);
6143
6157
  console.log(`\x1b[33mTrust Level:\x1b[0m ${source.trust_level}`);
6144
6158
  console.log(`\x1b[33mSafety Policy:\x1b[0m ${source.safety_policy}`);
6145
- console.log(`\x1b[33mChecksum:\x1b[0m ${source.checksum_required ? 'Required' : 'Not required'}`);
6146
- console.log(`\x1b[33mSignature:\x1b[0m ${source.signature_required ? 'Required' : 'Not required'}`);
6159
+ console.log(`\x1b[33mChecksum:\x1b[0m ${source.checksum_required ? 'Required (SHA-256 integrity)' : 'Not required'}`);
6160
+ console.log(`\x1b[33mSignature:\x1b[0m ${source.signature_required ? 'Required' : 'Not required (v3.0.1)'}`);
6147
6161
 
6148
6162
  if (source.last_synced_at) {
6149
6163
  console.log(`\x1b[33mLast Synced:\x1b[0m ${source.last_synced_at}`);
@@ -6173,6 +6187,14 @@ function handleRegistryShow(name, options) {
6173
6187
  }
6174
6188
  }
6175
6189
 
6190
+ console.log('\nNext steps:');
6191
+ console.log(` Verify: npx multimodel-dev-os registry verify ${name}`);
6192
+ if (source.type !== 'local') {
6193
+ console.log(` Sync: npx multimodel-dev-os registry sync ${name} --approved`);
6194
+ console.log(` Browse: npx multimodel-dev-os catalog list --source remote:${name}`);
6195
+ } else {
6196
+ console.log(` Browse: npx multimodel-dev-os catalog list --source ${name}`);
6197
+ }
6176
6198
  console.log('');
6177
6199
  }
6178
6200
 
@@ -32,7 +32,7 @@ export default {
32
32
  'license': 'https://opensource.org/licenses/MIT',
33
33
  'url': 'https://github.com/rizvee/multimodel-dev-os',
34
34
  'downloadUrl': 'https://www.npmjs.com/package/multimodel-dev-os',
35
- 'softwareVersion': '3.0.0',
35
+ 'softwareVersion': '3.0.1',
36
36
  'description': 'Portable, vendor-neutral AI Developer OS for multi-agent coding workflows.'
37
37
  })
38
38
  ]
@@ -196,7 +196,7 @@ export default {
196
196
  { text: 'Public Launch Checklist', link: '/launch-checklist' },
197
197
  { text: 'Launch & Sharing Kit', link: '/launch-kit' },
198
198
  { text: 'CLI Roadmap', link: '/cli-roadmap' },
199
- { text: 'v2 Roadmap', link: '/v2-roadmap' },
199
+ { text: 'v3 Roadmap', link: '/v3-roadmap' },
200
200
  { text: 'Release Policy', link: '/release-policy' },
201
201
  { text: 'Support Policy', link: '/support-policy' },
202
202
  { text: 'Pre-flight Release Testing', link: '/testing-v0.2' },
package/docs/catalog.md CHANGED
@@ -52,7 +52,7 @@ npx multimodel-dev-os catalog status
52
52
 
53
53
  ## Source Filtering
54
54
 
55
- By default, catalog commands query the bundled first-party catalog. In `v3.0.0`, you can filter queries by source or merge all enabled registry sources:
55
+ By default, catalog commands query the bundled first-party catalog. In `v3.0.0+`, you can filter queries by source or merge all enabled registry sources:
56
56
 
57
57
  * **Filter by a specific source:**
58
58
  ```bash
@@ -12,13 +12,13 @@ Before publishing, always test the built package locally by compiling a compress
12
12
  ```bash
13
13
  npm pack
14
14
  ```
15
- This creates a file named like `multimodel-dev-os-2.6.0.tgz` in your directory root.
15
+ This creates a file named like `multimodel-dev-os-3.0.1.tgz` in your directory root.
16
16
 
17
17
  2. **Verify bundle contents:**
18
18
  Create an empty temporary workspace, extract the tarball, and confirm that only required scaffold folders are included (no `.github/`, test configurations, or local system files):
19
19
  ```bash
20
20
  mkdir -p /tmp/package-test && cd /tmp/package-test
21
- tar -xzf /path/to/multimodel-dev-os-2.6.0.tgz
21
+ tar -xzf /path/to/multimodel-dev-os-3.0.1.tgz
22
22
  ls -la package/
23
23
  ```
24
24
 
@@ -34,7 +34,7 @@ Before publishing, always test the built package locally by compiling a compress
34
34
  Execute these validation actions strictly in sequence before triggering a release:
35
35
 
36
36
  1. **Verify structural health:**
37
- Ensure all 214+ assertions in our verification script pass successfully:
37
+ Ensure all 248+ assertions in our verification script pass successfully:
38
38
  ```bash
39
39
  npm run verify
40
40
  ```
@@ -78,17 +78,17 @@ Execute these validation actions strictly in sequence before triggering a releas
78
78
  ## 4. Prepublish Safety Guard
79
79
 
80
80
  > [!IMPORTANT]
81
- > **v2.6.0 is the active stable release.** NPM publishing is live.
81
+ > **v3.0.1 is the active stable release.** NPM publishing is live.
82
82
 
83
83
  ### Source vs. Registry Strategy
84
- * **GitHub main branch (Source)**: Contains the current stable `v2.6.0` codebase.
84
+ * **GitHub main branch (Source)**: Contains the current stable `v3.0.1` codebase.
85
85
  * **npm latest (Registry)**: Pulled and installed globally or via npx.
86
86
 
87
87
  ### Prepublish Safety Guard
88
88
  To prevent accidental `npm publish` executions on developer environments, a local validation script has been added to package hooks. If you run `npm publish`, it is blocked by default.
89
89
 
90
90
  To bypass this check during approved release windows:
91
- 1. Ensure the version in `package.json` starts with `2.` (e.g. `2.0.1`).
91
+ 1. Ensure the version in `package.json` is a valid stable major version >= 2 (e.g., v3.0.1).
92
92
  2. Run publication with the override env variable:
93
93
  ```powershell
94
94
  # PowerShell
@@ -1,4 +1,4 @@
1
- # MultiModel Dev OS — Comprehensive AI Assistant Discoverability Guide (v3.0.0 Stable Release)
1
+ # MultiModel Dev OS — Comprehensive AI Assistant Discoverability Guide (v3.0.1 Stable Release)
2
2
 
3
3
  MultiModel Dev OS is a repository-level porting specification designed to align context and instructions across diverse developer tools and AI models.
4
4
 
@@ -136,7 +136,7 @@ npx multimodel-dev-os@latest init --caveman
136
136
  - **Documentation site**: https://rizvee.github.io/multimodel-dev-os/
137
137
  - **Guided Demo Workflows**: https://rizvee.github.io/multimodel-dev-os/demos/
138
138
  - **GitHub Codebase**: https://github.com/rizvee/multimodel-dev-os
139
- - **v2.0.0 Roadmap**: https://rizvee.github.io/multimodel-dev-os/v2-roadmap
139
+ - **v3.0.0 Roadmap**: https://rizvee.github.io/multimodel-dev-os/v3-roadmap
140
140
  - **Release Policies**: https://rizvee.github.io/multimodel-dev-os/release-policy
141
141
  - **Upgrade Playbook**: https://rizvee.github.io/multimodel-dev-os/migration-guide
142
142
  - **Model Compatibility**: https://rizvee.github.io/multimodel-dev-os/model-compatibility
@@ -1,4 +1,4 @@
1
- # MultiModel Dev OS (v3.0.0 Stable Release)
1
+ # MultiModel Dev OS (v3.0.1 Stable Release)
2
2
 
3
3
  Portable, vendor-neutral workspace configuration standard for multi-agent AI pair-programming workflows.
4
4
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  MultiModel Dev OS is designed with a **zero-trust architecture** for remote registries and plugins. Because plugins configure coding guidelines, workflows, and prompts for AI coding agents, securing the distribution channel is critical.
4
4
 
5
- This document describes the threat model, safety boundaries, and mitigation strategies implemented in `v3.0.0`.
5
+ This document describes the threat model, safety boundaries, and mitigation strategies implemented in `v3.0.0+`.
6
6
 
7
7
  ---
8
8
 
@@ -0,0 +1,85 @@
1
+ # MultiModel Dev OS — Roadmap: v3.x
2
+
3
+ This document outlines the development path, completed milestones, and future plans for MultiModel Dev OS.
4
+
5
+ ---
6
+
7
+ ## 1. Current Status
8
+
9
+ > [!IMPORTANT]
10
+ > **v3.0.1 is the active stable release** on the public npm registry. All features below marked ✅ are shipped and production-ready.
11
+
12
+ ---
13
+
14
+ ## 2. Completed Milestones
15
+
16
+ ### v3.0.1 — Registry UX & Policy Safety Patch ✅
17
+ - **Registry Command UX**: Improved formatting and next-step actions for `registry status`, `registry list`, `registry show`, `registry verify`, and `registry sync`.
18
+ - **Policy Safety Messaging**: Clarified sandboxing, offline verification capabilities, checksum verification, and approval gates.
19
+ - **Safety Hardening**: Explicitly documented remote registry sync boundaries (offline verify, no automated installs, path sandboxing, zero shell/code execution from catalogs).
20
+ - **Cleanup**: Purged local build artifacts, logs, and unused stubs.
21
+
22
+ ### v3.0.0 — Trusted Remote Catalog & Registry Governance ✅
23
+ - **Trusted Remote Registry Sync**: Introduced the `registry` CLI command suite allowing users to optionally sync remote catalogs (`list`, `add`, `remove`, `sync`, `status`, `verify`, `show`, `cache clear`).
24
+ - **Declarative Security Policy Engine**: Implemented `.ai/policies/registry-policy.yaml` governing remote registries, with opt-in defaults, permitted write directories, blocked file paths, size limits, allowed extensions, and registry trust levels.
25
+ - **SHA256 Integrity Verification**: Standardized SHA256 integrity verification inside registry manifest files, verified on sync and installation, using Node's native `crypto` module.
26
+ - **Source-Aware Catalog Loading**: Extended `loadCatalog` and existing `catalog` commands with `--source` and `--all-sources` flags, ensuring seamless prioritization across bundled, local, and synced remote registries.
27
+ - **TUI Dashboard Integration**: Added a read-only "Registry Sources & Cache" submenu to the dashboard.
28
+ - **Zero-Dependency Core**: Deployed the remote integration layer natively using Node's built-in modules (`https`, `crypto`, `fs`, `path`).
29
+
30
+ ### v2.9.0 — Local Workflow Marketplace & Plugin Catalog ✅
31
+ - **Workflow Marketplace**: Curated index catalog packaging 6 first-party plugins for Git, SEO, WordPress, Next.js, E-commerce, and releases.
32
+ - **Catalog CLI Commands**: Added `catalog list`, `catalog search`, `catalog show`, `catalog categories`, `catalog recommend`, `catalog install`, and `catalog status` to the zero-dependency CLI.
33
+ - **Recommendation Engine**: Automatically ranks and recommends marketplace plugins using package scripts, frameworks, languages, and repo type heuristics.
34
+ - **TUI Dashboard Integration**: Integrated read-only catalog actions (list, search, recommend, status) directly into the interactive command center.
35
+
36
+ ### v2.8.0 / v2.8.1 — Interactive TUI Dashboard & Plugin Hooks ✅
37
+ - **Interactive TUI Dashboard**: Added `dashboard`/`ui` command launching a zero-dependency keyboard-interactive command center built with Node's native `readline` module.
38
+ - **Declarative Plugin Hooks**: Added `plugin` command suite (`list`, `show`, `validate`, `install`, `status`) and JSON schema to securely extend workspace templates, workflows, and skills.
39
+ - **Secure Plugin Installer**: Supports `--approved` execution gate, path whitelisting to `.ai/` and `adapters/` directories, and automatic conflict `.bak` backups.
40
+ - **Path Traversal Hardening**: Enforce alphanumeric slug checks (`/^[a-z0-9-_]+$/i`) and pattern validation bounds to block traversal vectors.
41
+
42
+ ### v2.0.0 → v2.7.0 — Core Foundation ✅
43
+ - Unified autonomous co-pilot adapters and root contracts.
44
+ - Codebase scanner (`scan`) and hash-compressed memory engine (`memory build`).
45
+ - Feedback learning (`feedback add`) and proposal engine (`improve propose` / `apply`).
46
+ - Interactive demo workflow pages and website distribution system.
47
+
48
+ ---
49
+
50
+ ## 3. Publishing Workflow
51
+
52
+ All releases follow this strict publishing checklist:
53
+
54
+ 1. Bump version in `package.json`
55
+ 2. Run `npm run verify` (248+ assertions must pass)
56
+ 3. Run `npm run docs:build` to verify documentation
57
+ 4. Run `npm pack --dry-run` to review package hygiene
58
+ 5. Set `MMDO_ALLOW_PUBLISH=true` and publish manually:
59
+ ```bash
60
+ MMDO_ALLOW_PUBLISH=true npm publish --access public
61
+ ```
62
+
63
+ ---
64
+
65
+ ## 4. Upcoming: v3.1.0 — Cryptographic Catalog Signing
66
+
67
+ * **Asymmetric Key Signatures**: Cryptographic signature validation for remote registries using public/private key pairs.
68
+ * **Decentralized Trust Anchors**: Trust anchors configuration allowing teams to pin public keys of verified catalog authors.
69
+ * **Tamper-Proof Audit Chain**: Signed change logs and history verification.
70
+
71
+ ---
72
+
73
+ ## 5. Future Plan: v4.0.0 — Unified Autonomous Co-Pilot Ecosystem
74
+
75
+ * **Full Multi-Agent Orchestration**: Dynamic task handoffs between specialized agents.
76
+ * **Real-Time Collaboration**: Live workspace state sharing between agents and developers.
77
+ * **Cloud-Native Intelligence**: Optional cloud-backed memory and feedback aggregation.
78
+
79
+ ---
80
+
81
+ ## 6. Migration Notes
82
+
83
+ * **From any v3.x or v2.x**: Run `npx multimodel-dev-os@latest init --force` to pull the latest configuration files. Existing files are backed up automatically as `.bak`.
84
+ * **From v1.x**: See the [Migration Guide](/migration-guide) for the upgrade path.
85
+ * **Fresh install**: Simply run `npx multimodel-dev-os@latest init` — no prior setup required.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "multimodel-dev-os",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
4
4
  "bin": {
5
5
  "multimodel-dev-os": "bin/multimodel-dev-os.js"
6
6
  },
@@ -11,7 +11,7 @@ param(
11
11
  [switch]$Help
12
12
  )
13
13
 
14
- $Version = "3.0.0"
14
+ $Version = "3.0.1"
15
15
  $RepoUrl = "https://raw.githubusercontent.com/rizvee/multimodel-dev-os/main"
16
16
 
17
17
  if ($Help) {
@@ -7,7 +7,7 @@ set -euo pipefail
7
7
  # --all (install all adapters)
8
8
  # --dry-run (show what would be created without creating)
9
9
 
10
- VERSION="3.0.0"
10
+ VERSION="3.0.1"
11
11
  REPO_URL="https://raw.githubusercontent.com/rizvee/multimodel-dev-os/main"
12
12
  CAVEMAN=false
13
13
  DRY_RUN=false
package/scripts/verify.js CHANGED
@@ -224,7 +224,7 @@ checkFile('docs/agent-compatibility.md');
224
224
  checkFile('docs/adapter-authoring.md');
225
225
  checkFile('docs/token-optimization.md');
226
226
  checkFile('docs/mobile-android.md');
227
- checkFile('docs/v2-roadmap.md');
227
+ checkFile('docs/v3-roadmap.md');
228
228
  checkFile('docs/template-authoring.md');
229
229
  checkFile('docs/skill-authoring.md');
230
230
  checkFile('docs/registry-contribution.md');
@@ -549,7 +549,7 @@ try {
549
549
  }
550
550
  }
551
551
 
552
- // Test 2: Allows version 3.0.0 with MMDO_ALLOW_PUBLISH=true
552
+ // Test 2: Allows version 3.0.1 with MMDO_ALLOW_PUBLISH=true
553
553
  try {
554
554
  const output = execSync('node scripts/prepublish-guard.js', {
555
555
  cwd: projectRoot,
@@ -557,7 +557,7 @@ try {
557
557
  encoding: 'utf8'
558
558
  });
559
559
  if (output.includes('Prepublish guard passed')) {
560
- console.log(` ${GREEN}✓${NC} prepublish guard allows version 3.0.0 when MMDO_ALLOW_PUBLISH=true`);
560
+ console.log(` ${GREEN}✓${NC} prepublish guard allows version 3.0.1 when MMDO_ALLOW_PUBLISH=true`);
561
561
  pass++;
562
562
  } else {
563
563
  console.error(` ${RED}✗${NC} prepublish guard passed but stdout missing success indicator`);
@@ -565,7 +565,7 @@ try {
565
565
  }
566
566
  } catch (err) {
567
567
  const errText = err.stderr ? err.stderr.toString() : '';
568
- console.error(` ${RED}✗${NC} prepublish guard blocked version 3.0.0: ${errText || err.message}`);
568
+ console.error(` ${RED}✗${NC} prepublish guard blocked version 3.0.1: ${errText || err.message}`);
569
569
  fail++;
570
570
  }
571
571
 
@@ -579,12 +579,12 @@ try {
579
579
  pass++;
580
580
  }
581
581
 
582
- // Test 4: Package.json version is exactly 3.0.0
583
- if (expectedVersion === '3.0.0') {
584
- console.log(` ${GREEN}✓${NC} package.json version is exactly 3.0.0`);
582
+ // Test 4: Package.json version is exactly 3.0.1
583
+ if (expectedVersion === '3.0.1') {
584
+ console.log(` ${GREEN}✓${NC} package.json version is exactly 3.0.1`);
585
585
  pass++;
586
586
  } else {
587
- console.error(` ${RED}✗${NC} package.json version is not 3.0.0 (found ${expectedVersion})`);
587
+ console.error(` ${RED}✗${NC} package.json version is not 3.0.1 (found ${expectedVersion})`);
588
588
  fail++;
589
589
  }
590
590
  } catch (e) {
@@ -1,116 +0,0 @@
1
- # MultiModel Dev OS — Roadmap: v2.x → v3.0
2
-
3
- This document outlines the development path, completed milestones, and future plans for MultiModel Dev OS.
4
-
5
- ---
6
-
7
- ## 1. Current Status
8
-
9
- > [!IMPORTANT]
10
- > **v2.9.0 is the active stable release** on the public npm registry. All features below marked ✅ are shipped and production-ready.
11
-
12
- ---
13
-
14
- ## 2. Completed Milestones
15
-
16
- ### v2.0.0 — Template Galaxy & Model Registry ✅
17
- - Standardized model registries under `.ai/models/` (registry, providers, routing presets, local models)
18
- - Adapter registry expansion under `.ai/adapters/registry.yaml`
19
- - Android Expo mobile template (`examples/expo-react-native-android/`)
20
- - CLI registry subcommands: `models`, `show-model`, `providers`, `route-model`, `adapters`, `show-adapter`, `skills`, `show-skill`
21
- - Stable npm publication resumed
22
-
23
- ### v2.2.0 — Codebase Scanner & Memory Engine ✅
24
- - `scan` command to inspect frameworks, package managers, and AI Dev OS files
25
- - `memory build`, `memory refresh`, and `memory diff` commands
26
- - Hash-compressed memory indexing to `.ai/intelligence/memory.hash.json`
27
- - Secret-safety exclusions for `.env`, `.npmrc`, `.keystore` files
28
-
29
- ### v2.3.0 — Feedback Learning & Proposal Engine ✅
30
- - `feedback add`, `feedback list`, `feedback summarize` commands
31
- - `improve propose`, `improve review`, `improve status` commands
32
- - Read-only proposal drafting with safety gates
33
- - Feedback logs and learning rules compilation
34
-
35
- ### v2.4.0 — Approved Proposal Application Engine ✅
36
- - `improve validate`, `improve diff`, `improve apply` subcommands
37
- - 12 strict safety gates including path boundary, protected paths, idempotency
38
- - Applied Proposals Audit Log (`apply-log.jsonl`) with SHA-256 hashing
39
- - Deterministic operations: `create_file`, `append_line`, `replace_text`
40
-
41
- ### v2.5.0 — Repository Intelligence Command Center ✅
42
- - `status` command — compact operational dashboard
43
- - `workflow list`, `show`, `plan`, `run` — multi-agent workflow orchestration
44
- - `handoff build`, `handoff show` — token-compressed session context
45
- - Safe execution boundaries — no destructive operations from workflows
46
-
47
- ### v2.6.0 — Real-Repo Onboarding & Adapter Sync ✅
48
- - `onboard analyze`, `recommend`, `plan`, `apply`, `status` — existing repo onboarding
49
- - `adapter status`, `diff`, `sync` — IDE adapter rule file synchronization
50
- - Template recommendation heuristics with confidence scores
51
- - Safety overwrites with automatic `.bak` backups
52
- - `doctor --onboarding` diagnostics
53
-
54
- ### v2.7.0 — Website, Demo & Distribution System ✅
55
- - Restructured homepage as a product conversion funnel
56
- - Created 5 structured, copy-paste interactive demo workflow pages
57
- - Documented comprehensive distribution and release workflows
58
- - Added new SVG visual assets for onboarding and adapter sync flows
59
- - Created docs-first examples for key developer workflows
60
- - Updated sitemaps, model registries, and search indices
61
-
62
- ### v2.8.0 / v2.8.1 — Interactive TUI Dashboard & Plugin Hooks ✅
63
- - **Interactive TUI Dashboard**: Added `dashboard`/`ui` command launching a zero-dependency keyboard-interactive command center built with Node's native `readline` module.
64
- - **Declarative Plugin Hooks**: Added `plugin` command suite (`list`, `show`, `validate`, `install`, `status`) and JSON schema to securely extend workspace templates, workflows, and skills.
65
- - **Secure Plugin Installer**: Supports `--approved` execution gate, path whitelisting to `.ai/` and `adapters/` directories, and automatic conflict `.bak` backups.
66
- - **Headless Fallback & CI Polish**: Polish dry-run outputs and added `--list-actions` parameter to prevent TUI hangs in CI.
67
- - **Path Traversal Hardening**: Enforce alphanumeric slug checks (`/^[a-z0-9-_]+$/i`) and pattern validation bounds to block traversal vectors.
68
-
69
- ### v2.9.0 — Local Workflow Marketplace & Plugin Catalog ✅
70
- - **Workflow Marketplace**: Curated index catalog (`catalog.yaml` and `.ai/plugins/catalog/`) packaging 6 first-party plugins for Git, SEO, WordPress, Next.js, E-commerce, and releases.
71
- - **Catalog CLI Commands**: Added `catalog list`, `catalog search`, `catalog show`, `catalog categories`, `catalog recommend`, `catalog install`, and `catalog status` to the zero-dependency CLI.
72
- - **Recommendation Engine**: Automatically ranks and recommends marketplace plugins using package scripts, frameworks, languages, and repo type heuristics.
73
- - **TUI Dashboard Integration**: Integrated read-only catalog actions (list, search, recommend, status) directly into the interactive command center.
74
- - **Robust Safety Boundaries**: Reuses the plugin installer validations (traversal protection, whitelist directories, backup overwrites, and exit code 1 gates).
75
-
76
- ---
77
-
78
- ## 3. Publishing Workflow
79
-
80
- All releases follow this strict publishing checklist:
81
-
82
- 1. Bump version in `package.json`
83
- 2. Run `npm run verify` (220+ assertions must pass)
84
- 3. Run `npm run docs:build` to verify documentation
85
- 4. Run `npm publish --dry-run` to review package hygiene
86
- 5. Set `MMDO_ALLOW_PUBLISH=true` and publish:
87
- ```bash
88
- MMDO_ALLOW_PUBLISH=true npm publish --access public
89
- ```
90
-
91
- ---
92
-
93
- ## 4. Upcoming: v3.0.0 — Unified Autonomous Co-Pilot Ecosystem
94
-
95
- * **Full Multi-Agent Orchestration**: Dynamic task handoffs between specialized agents.
96
- * **Distributed Registry Syncing**: Team-wide configuration synchronization.
97
- * **Cryptographic Proposal Signing**: Tamper-proof improvement proposals.
98
- * **Real-Time Collaboration**: Live workspace state sharing between agents and developers.
99
-
100
- ---
101
-
102
- ## 5. Future: v3.0.0 — Unified Autonomous Co-Pilot Ecosystem
103
-
104
- * **Full Multi-Agent Orchestration**: Dynamic task handoffs between specialized agents
105
- * **Distributed Registry Syncing**: Team-wide configuration synchronization
106
- * **Cryptographic Proposal Signing**: Tamper-proof improvement proposals
107
- * **Real-Time Collaboration**: Live workspace state sharing between agents and developers
108
- * **Cloud-Native Intelligence**: Optional cloud-backed memory and feedback aggregation
109
-
110
- ---
111
-
112
- ## 6. Migration Notes
113
-
114
- * **From any v2.x**: Run `npx multimodel-dev-os@latest init --force` to pull latest configuration files. Existing files are backed up automatically.
115
- * **From v1.x**: See the [Migration Guide](/migration-guide) for the upgrade path.
116
- * **Fresh install**: Simply run `npx multimodel-dev-os@latest init` — no prior setup required.