feat: add controlled plugin marketplace lifecycle
This commit is contained in:
@@ -74,12 +74,16 @@ POST /logout
|
||||
GET /api/me
|
||||
GET /api/plugins
|
||||
GET /api/plugins/{id}
|
||||
GET /api/marketplace
|
||||
POST /api/marketplace/install
|
||||
POST /api/plugins/install
|
||||
POST /api/plugins/{id}/install
|
||||
POST /api/plugins/{id}/enable
|
||||
POST /api/plugins/{id}/disable
|
||||
POST /api/plugins/{id}/upgrade
|
||||
POST /api/plugins/{id}/rollback
|
||||
POST /api/plugins/{id}/uninstall
|
||||
DELETE /api/plugins/{id}
|
||||
GET /api/plugins/{id}/config
|
||||
PUT /api/plugins/{id}/config
|
||||
GET /api/audit
|
||||
@@ -92,10 +96,10 @@ POST /api/menu-items/apply
|
||||
## 6. 插件生命周期
|
||||
|
||||
```text
|
||||
discovered -> verified -> installed -> disabled -> starting -> healthy
|
||||
│ │
|
||||
│ └── error
|
||||
└── incompatible
|
||||
discovered -> verified -> staged/disabled -> starting -> healthy
|
||||
│ │
|
||||
│ └── error
|
||||
└── incompatible
|
||||
|
||||
healthy -> draining -> disabled
|
||||
healthy -> upgrading -> healthy
|
||||
@@ -104,8 +108,7 @@ healthy -> rollback_pending -> healthy
|
||||
|
||||
- `discovered`:目录或清单被发现,尚未验签。
|
||||
- `verified`:清单、签名、哈希和兼容性通过。
|
||||
- `installed`:版本包已安全写入 staging 并原子切换。
|
||||
- `disabled`:已安装但不接收业务请求,菜单默认隐藏。
|
||||
- `staged/disabled`:版本包已安全写入 staging 并原子切换,但仍是“已入库、待启用”;不接收业务请求,菜单默认隐藏。
|
||||
- `starting`:进程启动、端口和健康检查进行中。
|
||||
- `healthy`:健康端点、就绪端点和(若响应提供)版本检查通过。
|
||||
- `draining`:菜单已撤销,托管进程正在执行有界终止;在途请求由插件进程或反向代理按部署约定处理。
|
||||
@@ -132,7 +135,7 @@ ui/assets/...
|
||||
|
||||
控制面必须拒绝绝对路径、父目录跳转、重复条目、符号链接、未声明文件、超大文件和不匹配哈希。签名使用 Ed25519,签名覆盖 `manifest.json` 原始字节;清单中的 SHA-256 覆盖服务文件和 UI。发布者私钥不进入仓库、包、服务器或日志。
|
||||
|
||||
安装使用临时目录和原子 rename;失败不得破坏 active revision。包来源默认是管理员上传或受控本地目录,V1 不自动从互联网下载任意包。
|
||||
安装使用临时目录和原子 rename;失败不得破坏 active revision。包来源默认是管理员上传或受控本地目录。插件市场只允许服务端读取 schema v1 索引,并对 HTTPS 主机做精确 allowlist;浏览器只能提交索引中的 plugin ID/version,不能指定任意下载 URL。市场下载完成后仍只进入 `staged/disabled`,必须由管理员显式启用并通过健康检查。
|
||||
|
||||
## 8. Core API Adapter
|
||||
|
||||
|
||||
Reference in New Issue
Block a user