发布到插件市场
Jarvis 插件市场托管在 https://jarvis.xcos.dev/plugins。当前公开 registry 支持两种来源:
- 静态 seed:由 Jarvis 仓库维护,用于保留历史版本和固定示例。
- 动态发布:受保护 publication API 接收官方插件 artifact,校验后提升为 Jarvis-signed dynamic version。
面向所有第三方开发者的自助发布门户尚未开放;动态发布当前用于官方/canonical 插件。
发布输入
标题为“发布输入”的章节准备以下材料:
| 材料 | 要求 |
|---|---|
| Pack 目录 | 包含 jarvis-pack.yaml、README、profiles、workflows |
.jarvispack |
由 extensions package 生成,不手工压缩 |
| Artifact metadata | 文件名、大小、sha256、media type |
| Signature | Ed25519 签名和 keyId |
| Catalog metadata | 展示名、摘要、分类、权限、资源链接、安装状态 |
| 审核记录 | review state、trust tier、reviewedAt |
| Publication manifest | 插件 identity、artifact metadata、capabilities、native dependencies |
发布前本地命令
标题为“发布前本地命令”的章节.venv/bin/jarvis extensions validate PACK_DIR.venv/bin/jarvis extensions package PACK_DIR --out dist/PACK_ID-VERSION.jarvispackshasum -a 256 dist/PACK_ID-VERSION.jarvispack如果扩展依赖原生二进制,先读 原生依赖,不要把下载脚本放进 pack。
Catalog 数据
标题为“Catalog 数据”的章节公开 catalog 是 Cloudflare Worker 返回的 JSON:
GET https://jarvis.xcos.dev/plugins/api/v1/catalog每个条目必须如实描述:
id、publisher、name、latestVersion;categories和securitySignals;resources.documentation、resources.privacy、resources.support;requirements.nativeDependencies和hostCapabilities;installability.state、按钮文案和禁用原因。
如果当前 Jarvis 不能直接安装该扩展,installability 必须禁用主按钮并说明原因。
官方动态发布流程
标题为“官方动态发布流程”的章节动态发布不经 GitHub artifact 作为中转。发布方直接调用 jarvis.xcos.dev 的 publication API:
POST /plugins/api/v1/publications/initiatePUT /plugins/api/v1/publications/{publication_id}/artifacts/packPOST /plugins/api/v1/publications/{publication_id}/completeGET /plugins/api/v1/publications/{publication_id}请求必须使用 registry 侧配置的 publisher bearer token。initiate 接收 publication manifest,返回 artifact upload URL、complete URL 和 status URL;upload 必须提交与 manifest 中 size/sha256 完全匹配的 .jarvispack;complete 会重新读取 artifact、校验 zip/manifest、拒绝降级版本,然后由 Jarvis registry runtime key 签名并写入 dynamic catalog。
发布成功后:
- catalog latest 指向新版本;
- resolve API 返回 Jarvis-signed envelope;
- download API 从 registry artifact storage 返回 pack bytes;
- native dependency metadata 与 pack metadata 一起进入 envelope。
仓库维护流程
标题为“仓库维护流程”的章节静态 seed 或 registry 代码变更仍走 Jarvis 仓库 PR:
- 在 Jarvis 仓库里新增或更新 approved/canonical catalog entry、扩展包 artifact 和文档;仓库内 local examples 不会自动进入公共插件市场。
- 跑 plugin-registry 测试和 typecheck。
- 跑 docs/site 构建和站点测试。
- 创建 PR,附上 artifact hash、审核结论和安装验收。
- 合入后由 Cloudflare Pages/Worker workflow 发布到
jarvis.xcos.dev/plugins。 - 用 插件目录安装 从本机 Jarvis 做回归验证。
第三方自助发布还缺什么
标题为“第三方自助发布还缺什么”的章节- publisher 账号、命名空间认领和转让;
- 对第三方开放的上传 API、artifact 存储和异步扫描队列;
- 签名密钥管理和吊销;
- 审核 UI、申诉、yank、block;
- 自动更新策略和用户侧变更确认的通用 UX。
这些缺口关闭前,插件市场页面可以浏览和展示 installability,但不能承诺完整的第三方自助发布。