multimodel-dev-os 2.8.1 → 2.9.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/catalog/.ai/checks/pre-commit-gate.md +14 -0
- package/.ai/plugins/catalog/.ai/skills/checkout-ops.md +12 -0
- package/.ai/plugins/catalog/.ai/skills/git-operations.md +21 -0
- package/.ai/plugins/catalog/.ai/skills/nextjs-builder.md +12 -0
- package/.ai/plugins/catalog/.ai/skills/release-ops.md +12 -0
- package/.ai/plugins/catalog/.ai/skills/seo-audit-ops.md +14 -0
- package/.ai/plugins/catalog/.ai/skills/wp-helper.md +13 -0
- package/.ai/plugins/catalog/README.md +34 -0
- package/.ai/plugins/catalog/ecommerce-workflows.yaml +14 -0
- package/.ai/plugins/catalog/git-workflows.yaml +22 -0
- package/.ai/plugins/catalog/nextjs-workflows.yaml +14 -0
- package/.ai/plugins/catalog/release-workflows.yaml +14 -0
- package/.ai/plugins/catalog/seo-workflows.yaml +19 -0
- package/.ai/plugins/catalog/wordpress-workflows.yaml +14 -0
- package/.ai/plugins/catalog.yaml +161 -0
- package/.ai/policies/registry-policy.yaml +51 -0
- package/.ai/registries/sources.yaml +15 -0
- package/.ai/registry-cache/README.md +35 -0
- package/.ai/schema/registry-manifest.schema.json +57 -0
- package/.ai/schema/registry-policy.schema.json +66 -0
- package/README.md +6 -5
- package/bin/multimodel-dev-os.js +1309 -30
- package/docs/.vitepress/config.js +16 -2
- package/docs/CLI.md +54 -1
- package/docs/architecture.md +9 -3
- package/docs/catalog-authoring.md +63 -0
- package/docs/catalog.md +72 -0
- package/docs/comparison.md +1 -0
- package/docs/dashboard.md +13 -2
- package/docs/faq.md +19 -0
- package/docs/plugin-authoring.md +6 -0
- package/docs/plugin-catalog.md +35 -0
- package/docs/plugin-hooks.md +6 -0
- package/docs/public/llms-full.txt +18 -1
- package/docs/public/llms.txt +17 -1
- package/docs/public/sitemap.xml +45 -0
- package/docs/quickstart.md +17 -0
- package/docs/registry-policy.md +93 -0
- package/docs/registry-security.md +67 -0
- package/docs/registry-sync.md +106 -0
- package/docs/remote-catalog-authoring.md +139 -0
- package/docs/repository-command-center.md +2 -0
- package/docs/trusted-registries.md +77 -0
- package/docs/v2-roadmap.md +13 -4
- package/docs/workflow-marketplace.md +22 -0
- package/docs/workflow-orchestration.md +6 -0
- package/package.json +1 -1
- package/scripts/install.ps1 +0 -0
- package/scripts/install.sh +0 -0
- package/scripts/verify.js +458 -10
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Registry Security Model
|
|
2
|
+
|
|
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
|
+
|
|
5
|
+
This document describes the threat model, safety boundaries, and mitigation strategies implemented in `v3.0.0`.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Threat Model & Mitigations
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
Threat: Malicious Remote Registry
|
|
13
|
+
|--> Arbitrary Code Execution (Mitigated: Declarative-only YAML)
|
|
14
|
+
|--> Path Traversal / Overwrite (Mitigated: Resolve path bounds + Blacklist)
|
|
15
|
+
|--> Dependency Poisoning (Mitigated: No automated package installation)
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### 1. Arbitrary Code Execution
|
|
19
|
+
* **Threat:** A remote registry delivers a plugin containing malicious scripts (`shell`, `javascript`, etc.) that execute on the developer's machine.
|
|
20
|
+
* **Mitigation:**
|
|
21
|
+
* **Declarative-only manifests:** Plugins are purely declarative YAML manifests defining workflows, skills, and checks.
|
|
22
|
+
* **No runtime scripts:** Plugins cannot contain JavaScript files, shell scripts, or binary assets.
|
|
23
|
+
* **No eval/exec:** The CLI parser reads manifests using a custom regex-based parser, strictly avoiding `eval` or dynamic JS execution.
|
|
24
|
+
|
|
25
|
+
### 2. Path Traversal & Unauthorized Overwrites
|
|
26
|
+
* **Threat:** A plugin manifest contains destination paths like `../../.ssh/authorized_keys` or `/etc/hosts` to write files outside the workspace.
|
|
27
|
+
* **Mitigation:**
|
|
28
|
+
* **Allowed Write Roots:** The policy engine enforces that all destination paths must resolve within whitelisted directories (defaulting to `.ai/` and `adapters/`).
|
|
29
|
+
* **Path Resolution Checks:** The installer uses `path.resolve` and `path.relative` to ensure destinations do not escape the target root or cache root.
|
|
30
|
+
* **Blocked Paths Blacklist:** Sensitive files (e.g. `.env`, `.npmrc`, `.git/`, `package.json`) are blacklisted and cannot be overwritten under any circumstances.
|
|
31
|
+
|
|
32
|
+
### 3. Dependency Poisoning
|
|
33
|
+
* **Threat:** A synced plugin runs `npm install` to inject malicious dependencies into the project.
|
|
34
|
+
* **Mitigation:**
|
|
35
|
+
* **Zero dependency installer:** The installation process does not interact with the npm registry, execute package managers, or modify `node_modules`.
|
|
36
|
+
* **Ignored package files:** The blacklist blocks writes to `package.json`, `package-lock.json`, `pnpm-lock.yaml`, and `yarn.lock`.
|
|
37
|
+
|
|
38
|
+
### 4. Cache Poisoning / Tampering
|
|
39
|
+
* **Threat:** An attacker modifies cached remote files on disk to bypass verification.
|
|
40
|
+
* **Mitigation:**
|
|
41
|
+
* **In-process verification:** The `registry verify` command performs SHA256 checksum checks against the manifest.
|
|
42
|
+
* **ReadOnly Dashboard:** The interactive TUI Dashboard is completely read-only for registry and plugin operations, preventing UI-driven privilege escalation.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Safety Boundaries Matrix
|
|
47
|
+
|
|
48
|
+
The following table summarizes the enforcement gates for different registry types:
|
|
49
|
+
|
|
50
|
+
| Capability | Local Bundled | Verified Remote | Community Remote |
|
|
51
|
+
|---|---|---|---|
|
|
52
|
+
| **Requires Approved Flag** | Yes | Yes | Yes |
|
|
53
|
+
| **Integrity Check** | Yes (Built-in) | Yes (SHA256 Manifest) | Yes (SHA256 Manifest) |
|
|
54
|
+
| **Write Directory Restricted** | Yes (`.ai/`, `adapters/`) | Yes (`.ai/`, `adapters/`) | Yes (`.ai/`, `adapters/`) |
|
|
55
|
+
| **Size Limit Enforced** | No | Yes (max 100KB) | Yes (max 100KB) |
|
|
56
|
+
| **File Limit Enforced** | No | Yes (max 20 files) | Yes (max 20 files) |
|
|
57
|
+
| **Allowed Extensions Only** | Yes | Yes | Yes |
|
|
58
|
+
| **Automatic Activation** | No | No | No |
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Best Practices for Enterprise
|
|
63
|
+
|
|
64
|
+
For teams deploying MultiModel Dev OS in sensitive environments, we recommend:
|
|
65
|
+
1. Keeping `allow_remote_registries: false` (the default) if no third-party plugins are needed.
|
|
66
|
+
2. If remote plugins are required, set `allow_untrusted_install: false` to only permit plugins from official, signed corporate registries.
|
|
67
|
+
3. Commit `.ai/policies/registry-policy.yaml` to version control to enforce uniform governance across all developer machines.
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Registry Synchronization Guide
|
|
2
|
+
|
|
3
|
+
This guide explains how to configure, synchronize, and manage remote registries in MultiModel Dev OS.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
MultiModel Dev OS uses a local-first registry system. By default, all remote capabilities are disabled. When enabled, the sync system allows you to fetch remote catalog indexes and verify their integrity before installing any plugin assets.
|
|
8
|
+
|
|
9
|
+
> [!IMPORTANT]
|
|
10
|
+
> **Zero Trust Security Model**
|
|
11
|
+
> * Remote sync does **not** download or run arbitrary binary code.
|
|
12
|
+
> * Synced assets are placed strictly in the gitignored `.ai/registry-cache/` directory.
|
|
13
|
+
> * Files are verified using SHA256 checksums defined in the publisher's signed manifest.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Commands Reference
|
|
18
|
+
|
|
19
|
+
The `registry` command suite provides the following operations:
|
|
20
|
+
|
|
21
|
+
| Command | Safety Level | Description |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
| `registry list` | Read-only | List all configured registry sources |
|
|
24
|
+
| `registry status` | Read-only | View sync status, timestamps, and cache health |
|
|
25
|
+
| `registry show <name>` | Read-only | View configuration details of a specific source |
|
|
26
|
+
| `registry verify <name>` | Read-only | Audit SHA256 checksums of cached registry files |
|
|
27
|
+
| `registry add <name> <url> --approved` | Write | Add a new remote registry source |
|
|
28
|
+
| `registry sync <name> --approved` | Network + Write | Download and cache remote catalog and manifest |
|
|
29
|
+
| `registry remove <name> --approved` | Write | Remove a registry source and clear its cache |
|
|
30
|
+
| `registry cache clear --approved` | Write | Clear all cached registry files |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Synchronization Workflow
|
|
35
|
+
|
|
36
|
+
To synchronize a remote registry, follow these steps:
|
|
37
|
+
|
|
38
|
+
### 1. Enable Remote Registries in Policy
|
|
39
|
+
|
|
40
|
+
Open `.ai/policies/registry-policy.yaml` and set `allow_remote_registries: true`:
|
|
41
|
+
|
|
42
|
+
```yaml
|
|
43
|
+
allow_remote_registries: true
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 2. Configure a Remote Registry Source
|
|
47
|
+
|
|
48
|
+
Run the `registry add` command with the `--approved` flag to define a new registry source:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
npx multimodel-dev-os registry add partner-registry https://registry.example.com/catalog.yaml --approved
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 3. Synchronize Registry Data
|
|
55
|
+
|
|
56
|
+
To fetch the remote catalog, run `registry sync`. Executing without the approval flag displays a safety audit preview:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npx multimodel-dev-os registry sync partner-registry
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Once reviewed, run with `--approved`:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
npx multimodel-dev-os registry sync partner-registry --approved
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
This performs the following actions:
|
|
69
|
+
1. Downloads `catalog.yaml` and `manifest.json` from the registry source.
|
|
70
|
+
2. Resolves and downloads all individual plugin manifests and assets listed in the manifest's `files_hashes`.
|
|
71
|
+
3. Verifies every file against its expected SHA256 checksum.
|
|
72
|
+
4. Generates a local `checksums.json` index in the cache.
|
|
73
|
+
|
|
74
|
+
### 4. Browse and Install Synced Plugins
|
|
75
|
+
|
|
76
|
+
Browse cached plugins from the registry using:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
npx multimodel-dev-os catalog list --source remote:partner-registry
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Install a cached plugin via:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
npx multimodel-dev-os catalog install <plugin-slug> --approved
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Cache Directory Layout
|
|
91
|
+
|
|
92
|
+
All cached data is written to `.ai/registry-cache/<registry-name>/`:
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
.ai/registry-cache/
|
|
96
|
+
└── partner-registry/
|
|
97
|
+
├── catalog.yaml # Cached plugin index
|
|
98
|
+
├── manifest.json # Provenance metadata
|
|
99
|
+
├── checksums.json # Verified SHA256 local database
|
|
100
|
+
└── catalog/
|
|
101
|
+
└── custom-plugin.yaml # Cached manifest for individual plugin
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
> [!TIP]
|
|
105
|
+
> Clear all cached data at any time without affecting installed plugins:
|
|
106
|
+
> `npx multimodel-dev-os registry cache clear --approved`
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Remote Catalog Authoring Guide
|
|
2
|
+
|
|
3
|
+
This guide explains how to create, package, and publish a remote catalog registry for MultiModel Dev OS.
|
|
4
|
+
|
|
5
|
+
## Registry Directory Structure
|
|
6
|
+
|
|
7
|
+
A registry is a web-accessible directory containing a catalog index, a provenance manifest, and individual plugin manifest files with their assets:
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
my-registry/
|
|
11
|
+
├── catalog.yaml # Registry index file
|
|
12
|
+
├── manifest.json # Integrity manifest containing file hashes
|
|
13
|
+
└── catalog/
|
|
14
|
+
├── nextjs-helper.yaml # Plugin manifest for 'nextjs-helper'
|
|
15
|
+
└── .ai/ # Plugin asset folder
|
|
16
|
+
└── skills/
|
|
17
|
+
└── nextjs-skills.md
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 1. Creating the Catalog Index (`catalog.yaml`)
|
|
23
|
+
|
|
24
|
+
The `catalog.yaml` file lists all available plugins in the registry. It matches the structure of the bundled catalog:
|
|
25
|
+
|
|
26
|
+
```yaml
|
|
27
|
+
# catalog.yaml
|
|
28
|
+
catalog:
|
|
29
|
+
version: "1.0.0"
|
|
30
|
+
description: "Custom team-specific workflows and guidelines"
|
|
31
|
+
plugins:
|
|
32
|
+
- slug: nextjs-helper
|
|
33
|
+
name: "NextJS Component Helper"
|
|
34
|
+
version: "1.2.0"
|
|
35
|
+
description: "Standards-compliant NextJS boilerplates and structure checks."
|
|
36
|
+
category: "nextjs"
|
|
37
|
+
tags:
|
|
38
|
+
- nextjs
|
|
39
|
+
- react
|
|
40
|
+
safety_level: "sandboxed"
|
|
41
|
+
install_scope: "declarative"
|
|
42
|
+
recommended_for: "NextJS React projects"
|
|
43
|
+
files_preview:
|
|
44
|
+
- dest: ".ai/plugins/nextjs-helper.yaml"
|
|
45
|
+
- dest: ".ai/skills/nextjs-skills.md"
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 2. Packaging Plugin Files
|
|
51
|
+
|
|
52
|
+
Create the plugin YAML manifest in `catalog/<slug>.yaml`. This file defines the actual workflows and the files to copy:
|
|
53
|
+
|
|
54
|
+
```yaml
|
|
55
|
+
# catalog/nextjs-helper.yaml
|
|
56
|
+
name: "NextJS Component Helper"
|
|
57
|
+
slug: "nextjs-helper"
|
|
58
|
+
version: "1.2.0"
|
|
59
|
+
description: "Standards-compliant NextJS boilerplates and structure checks."
|
|
60
|
+
allowed_file_patterns:
|
|
61
|
+
- .ai/skills/nextjs-skills.md
|
|
62
|
+
workflows:
|
|
63
|
+
route-check:
|
|
64
|
+
name: "Check App Router Routes"
|
|
65
|
+
steps:
|
|
66
|
+
- run: "npx multimodel-dev-os validate"
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Then create the corresponding asset files (e.g. `catalog/.ai/skills/nextjs-skills.md`) in the correct subdirectories.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 3. Generating the Manifest (`manifest.json`)
|
|
74
|
+
|
|
75
|
+
To make the registry verified, you must generate a `manifest.json` file. This file contains metadata and SHA256 checksums of all files in the registry.
|
|
76
|
+
|
|
77
|
+
Below is an example Node script you can run from your registry's root folder to generate the manifest:
|
|
78
|
+
|
|
79
|
+
```javascript
|
|
80
|
+
// generate-manifest.js
|
|
81
|
+
const fs = require('fs');
|
|
82
|
+
const path = require('path');
|
|
83
|
+
const crypto = require('crypto');
|
|
84
|
+
|
|
85
|
+
const registryName = 'custom-registry';
|
|
86
|
+
const publisher = 'My Team';
|
|
87
|
+
const version = '1.0.0';
|
|
88
|
+
|
|
89
|
+
function computeSHA256(filePath) {
|
|
90
|
+
const content = fs.readFileSync(filePath);
|
|
91
|
+
return 'sha256:' + crypto.createHash('sha256').update(content).digest('hex');
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const filesHashes = {};
|
|
95
|
+
const walk = (dir) => {
|
|
96
|
+
const list = fs.readdirSync(dir);
|
|
97
|
+
list.forEach(file => {
|
|
98
|
+
const fullPath = path.join(dir, file);
|
|
99
|
+
const stat = fs.statSync(fullPath);
|
|
100
|
+
if (stat && stat.isDirectory()) {
|
|
101
|
+
walk(fullPath);
|
|
102
|
+
} else {
|
|
103
|
+
const relPath = path.relative(__dirname, fullPath).replace(/\\/g, '/');
|
|
104
|
+
if (relPath !== 'manifest.json' && relPath !== 'generate-manifest.js') {
|
|
105
|
+
filesHashes[relPath] = computeSHA256(fullPath);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
walk(__dirname);
|
|
112
|
+
|
|
113
|
+
const manifest = {
|
|
114
|
+
registry_name: registryName,
|
|
115
|
+
publisher: publisher,
|
|
116
|
+
version: version,
|
|
117
|
+
generated_at: new Date().toISOString(),
|
|
118
|
+
catalog_hash: filesHashes['catalog.yaml'],
|
|
119
|
+
files_hashes: filesHashes,
|
|
120
|
+
minimum_mmdo_version: "3.0.0",
|
|
121
|
+
safety_policy_version: "1.0",
|
|
122
|
+
signature: null
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
fs.writeFileSync('manifest.json', JSON.stringify(manifest, null, 2), 'utf8');
|
|
126
|
+
console.log('manifest.json generated successfully!');
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## 4. Publishing the Registry
|
|
132
|
+
|
|
133
|
+
1. Upload all files (preserving structure) to any static HTTPS file host (e.g. GitHub Pages, AWS S3, Cloudflare Pages).
|
|
134
|
+
2. Share the URL to `catalog.yaml` with your team.
|
|
135
|
+
3. Users can add and sync the registry via:
|
|
136
|
+
```bash
|
|
137
|
+
npx multimodel-dev-os registry add my-team-registry https://example.com/my-registry/catalog.yaml --approved
|
|
138
|
+
npx multimodel-dev-os registry sync my-team-registry --approved
|
|
139
|
+
```
|
|
@@ -65,4 +65,6 @@ npx multimodel-dev-os dashboard
|
|
|
65
65
|
npx multimodel-dev-os ui
|
|
66
66
|
```
|
|
67
67
|
|
|
68
|
+
* **Workflow Marketplace Catalog Integration**: The dashboard provides a curated marketplace lookup menu under `Workflow Marketplace Catalog...` to list, search, and recommend plugins for the workspace.
|
|
69
|
+
|
|
68
70
|
For detailed controls, menu hierarchies, and automated CI safety fallbacks, refer to the [Interactive TUI Dashboard Guide](file:///f:/multimodel-dev-os/docs/dashboard.md).
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Trusted Registries & Provenance
|
|
2
|
+
|
|
3
|
+
MultiModel Dev OS uses a structured trust model to verify the origin and integrity of third-party plugins before they are permitted to run workflows or write configurations.
|
|
4
|
+
|
|
5
|
+
## The Trust Hierarchy
|
|
6
|
+
|
|
7
|
+
Every registry source defined in `.ai/registries/sources.yaml` is assigned a `trust_level`. This level controls whether plugins from that registry are allowed to install and what security policies apply.
|
|
8
|
+
|
|
9
|
+
```mermaid
|
|
10
|
+
graph TD
|
|
11
|
+
TRUSTED["Trusted (First-Party / Bundled)"] --> VERIFIED["Verified (Official / Partner)"]
|
|
12
|
+
VERIFIED --> COMM["Community (Self-hosted / HTTPS)"]
|
|
13
|
+
COMM --> UNTRUST["Untrusted (Unverified Sources)"]
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### 1. Trusted
|
|
17
|
+
* **Source:** Local filesystem, bundled directly in the npm package.
|
|
18
|
+
* **Verification:** Built-in verification suites.
|
|
19
|
+
* **Safety:** Sandboxed, pre-validated declarative configs.
|
|
20
|
+
* **Installation:** Approved by default.
|
|
21
|
+
|
|
22
|
+
### 2. Verified
|
|
23
|
+
* **Source:** Official MultiModel Dev OS registries or verified enterprise partners.
|
|
24
|
+
* **Verification:** Signed manifests and SHA256 checksum chains.
|
|
25
|
+
* **Safety:** Reviewed schemas with strict write directories.
|
|
26
|
+
* **Installation:** Installs cleanly if remote registries are allowed in policy.
|
|
27
|
+
|
|
28
|
+
### 3. Community
|
|
29
|
+
* **Source:** User-added HTTPS endpoints or public git repositories.
|
|
30
|
+
* **Verification:** Basic SHA256 checksum verification.
|
|
31
|
+
* **Safety:** Sandboxed logic, restricted file paths.
|
|
32
|
+
* **Installation:** Refused unless `allow_untrusted_install: true` is configured in `.ai/policies/registry-policy.yaml`.
|
|
33
|
+
|
|
34
|
+
### 4. Untrusted
|
|
35
|
+
* **Source:** Unknown or flagged endpoints.
|
|
36
|
+
* **Verification:** None.
|
|
37
|
+
* **Safety:** High risk.
|
|
38
|
+
* **Installation:** Blocked in all standard configurations.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Provenance Verification Mechanism
|
|
43
|
+
|
|
44
|
+
To guarantee that remote catalogs have not been tampered with in transit, the registry sync system enforces a cryptographic verification chain.
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
[Registry Provider] [Local Client]
|
|
48
|
+
catalog.yaml ---(SHA256 Hash)---> manifest.json
|
|
49
|
+
manifest.json ---(Signature)-----> registry verify
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
1. **Manifest File (`manifest.json`):** Every verified remote registry publishes a manifest file containing a map of all relative files in the catalog and their expected SHA256 checksums.
|
|
53
|
+
2. **SHA256 Verification:** During `registry sync`, the client downloads the manifest and computes the SHA256 hash of all retrieved assets.
|
|
54
|
+
3. **Local Audit:** The computed hashes are written to `checksums.json` in the cache directory.
|
|
55
|
+
4. **Signature Verification (v3.0.0 Placeholder):** The `signature` field in the manifest provides a placeholder for future asymmetric public-key signature verification.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Integrity Check Command
|
|
60
|
+
|
|
61
|
+
To manually audit the cache integrity and check if any files have been modified or corrupted, run the `registry verify` command:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
npx multimodel-dev-os registry verify partner-registry
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Example Output:
|
|
68
|
+
```
|
|
69
|
+
🔍 Verifying Registry: partner-registry
|
|
70
|
+
==================================================
|
|
71
|
+
✓ catalog.yaml: VERIFIED
|
|
72
|
+
✓ manifest.json: VERIFIED
|
|
73
|
+
✓ catalog/nextjs-workflows.yaml: VERIFIED
|
|
74
|
+
✓ catalog/.ai/skills/nextjs-builder.md: VERIFIED
|
|
75
|
+
|
|
76
|
+
✔ Registry 'partner-registry' verification passed.
|
|
77
|
+
```
|
package/docs/v2-roadmap.md
CHANGED
|
@@ -7,7 +7,7 @@ This document outlines the development path, completed milestones, and future pl
|
|
|
7
7
|
## 1. Current Status
|
|
8
8
|
|
|
9
9
|
> [!IMPORTANT]
|
|
10
|
-
> **v2.
|
|
10
|
+
> **v2.9.0 is the active stable release** on the public npm registry. All features below marked ✅ are shipped and production-ready.
|
|
11
11
|
|
|
12
12
|
---
|
|
13
13
|
|
|
@@ -66,6 +66,13 @@ This document outlines the development path, completed milestones, and future pl
|
|
|
66
66
|
- **Headless Fallback & CI Polish**: Polish dry-run outputs and added `--list-actions` parameter to prevent TUI hangs in CI.
|
|
67
67
|
- **Path Traversal Hardening**: Enforce alphanumeric slug checks (`/^[a-z0-9-_]+$/i`) and pattern validation bounds to block traversal vectors.
|
|
68
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
|
+
|
|
69
76
|
---
|
|
70
77
|
|
|
71
78
|
## 3. Publishing Workflow
|
|
@@ -83,10 +90,12 @@ All releases follow this strict publishing checklist:
|
|
|
83
90
|
|
|
84
91
|
---
|
|
85
92
|
|
|
86
|
-
## 4. Upcoming:
|
|
93
|
+
## 4. Upcoming: v3.0.0 — Unified Autonomous Co-Pilot Ecosystem
|
|
87
94
|
|
|
88
|
-
* **
|
|
89
|
-
* **
|
|
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.
|
|
90
99
|
|
|
91
100
|
---
|
|
92
101
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Workflow Marketplace Guide
|
|
2
|
+
|
|
3
|
+
The local Workflow Marketplace allows you to extend the capabilities of your AI agents by injecting domain-specific coding standards (skills), quality checks, and workflows.
|
|
4
|
+
|
|
5
|
+
## How it Works
|
|
6
|
+
|
|
7
|
+
1. **Discovery:**
|
|
8
|
+
Search or recommend plugins suitable for your project stack:
|
|
9
|
+
```bash
|
|
10
|
+
npx multimodel-dev-os catalog recommend
|
|
11
|
+
```
|
|
12
|
+
2. **Installation:**
|
|
13
|
+
Installing a catalog plugin copies its manifest YAML and declarative files (skills/checks) to the target `.ai/` directory:
|
|
14
|
+
```bash
|
|
15
|
+
npx multimodel-dev-os catalog install nextjs-workflows --approved
|
|
16
|
+
```
|
|
17
|
+
3. **Execution:**
|
|
18
|
+
Once installed, the workflows declared in the plugin become available for execution:
|
|
19
|
+
```bash
|
|
20
|
+
# Run workflow step
|
|
21
|
+
npx multimodel-dev-os workflow run nextjs-action-check
|
|
22
|
+
```
|
|
@@ -60,3 +60,9 @@ The workflow engine enforces strict safety boundaries:
|
|
|
60
60
|
## 4. Bundled Registry Fallback
|
|
61
61
|
|
|
62
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.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Curated Workflow Packs
|
|
67
|
+
|
|
68
|
+
You can extend the available workflows in your repository by installing specialized plugin packs from the [Workflow Marketplace Catalog](/workflow-marketplace) (e.g. `npx multimodel-dev-os catalog install git-workflows --approved`).
|
package/package.json
CHANGED
package/scripts/install.ps1
CHANGED
|
Binary file
|
package/scripts/install.sh
CHANGED
|
Binary file
|