跳转到内容

发布到插件市场

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.jarvispack
shasum -a 256 dist/PACK_ID-VERSION.jarvispack

如果扩展依赖原生二进制,先读 原生依赖,不要把下载脚本放进 pack。

公开 catalog 是 Cloudflare Worker 返回的 JSON:

GET https://jarvis.xcos.dev/plugins/api/v1/catalog

每个条目必须如实描述:

  • idpublishernamelatestVersion
  • categoriessecuritySignals
  • resources.documentationresources.privacyresources.support
  • requirements.nativeDependencieshostCapabilities
  • installability.state、按钮文案和禁用原因。

如果当前 Jarvis 不能直接安装该扩展,installability 必须禁用主按钮并说明原因。

动态发布不经 GitHub artifact 作为中转。发布方直接调用 jarvis.xcos.dev 的 publication API:

POST /plugins/api/v1/publications/initiate
PUT /plugins/api/v1/publications/{publication_id}/artifacts/pack
POST /plugins/api/v1/publications/{publication_id}/complete
GET /plugins/api/v1/publications/{publication_id}

请求必须使用 registry 侧配置的 publisher bearer token。initiate 接收 publication manifest,返回 artifact upload URL、complete URL 和 status URL;upload 必须提交与 manifest 中 size/sha256 完全匹配的 .jarvispackcomplete 会重新读取 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:

  1. 在 Jarvis 仓库里新增或更新 approved/canonical catalog entry、扩展包 artifact 和文档;仓库内 local examples 不会自动进入公共插件市场。
  2. 跑 plugin-registry 测试和 typecheck。
  3. 跑 docs/site 构建和站点测试。
  4. 创建 PR,附上 artifact hash、审核结论和安装验收。
  5. 合入后由 Cloudflare Pages/Worker workflow 发布到 jarvis.xcos.dev/plugins
  6. 插件目录安装 从本机 Jarvis 做回归验证。
  • publisher 账号、命名空间认领和转让;
  • 对第三方开放的上传 API、artifact 存储和异步扫描队列;
  • 签名密钥管理和吊销;
  • 审核 UI、申诉、yank、block;
  • 自动更新策略和用户侧变更确认的通用 UX。

这些缺口关闭前,插件市场页面可以浏览和展示 installability,但不能承诺完整的第三方自助发布。