docs(notes): add an optional homepage to market index plugins

This commit is contained in:
turtle1999 committed 2026-10-03 12:02:13 +08:00
1 parent a042d53289
commit 5535f0bcf7
3 files changed
+14 -10

No files matched your search

@@ -18,8 +18,8 @@
en: 4fac5a9b8261342d
zh: f9168a8a4209feab
/agent-note-plugin-market-index-format/proposal/plugin-fields:
en: aa544c156b4592b4
zh: 69970e21ccb9eebd
en: f728927a89754892
zh: 3bc3b18cac60cdc1
/agent-note-plugin-market-index-format/proposal/version-fields:
en: d82d84e9f15f0a8c
zh: fa65770cd7607c15
@@ -30,14 +30,14 @@
en: 323c997bccd7cf4a
zh: fd588d37925d3732
/agent-note-plugin-market-index-format/proposal/generator-obligations:
en: bd44312d55afce0c
zh: 8d341a2ae095dbca
en: 2355bd40a77e615c
zh: a83fa20f47b49e44
/agent-note-plugin-market-index-format/proposal/reader-rules:
en: 40613286c82370b2
zh: f6b2452c75e9fc71
/agent-note-plugin-market-index-format/alternatives-considered:
en: ef519b0d5da71645
zh: 428dbcd6502bbfb5
en: d102d17d4203c592
zh: b98f970545e3e07f
/agent-note-plugin-market-index-format/acceptance-criteria:
en: f364af5c0343a23e
zh: 8b8c2a3ec3f6a57f
@@ -42,6 +42,7 @@ Separate the **index** from the **index generator**. DSH defines and reads one J
"description": { "en": "Per-tool LLM authorization review", "zh": "逐工具 LLM 授权审查" },
"icon": "icons/auto-review.svg",
"author": "Example Labs",
"homepage": "https://example.com/dsh-auto-review",
"metadata": {
"category": "productivity",
"labels": ["official"],
@@ -109,6 +110,7 @@ Category, label, and sort-key ids are non-empty strings. Readers look ids up as
| `description` | no | `LocalizedText`. |
| `icon` | no | Either `data:<type>;base64,<payload>`, where `<type>` is `image/svg+xml`, `image/png`, `image/jpeg`, or `image/webp`, `<payload>` is canonically padded base64, and the decoded payload is at most 256 KiB; or a URL reference whose resolution against the index URL is an `https:` URL or has the index URL's origin. |
| `author` | no | String with at least one non-whitespace character. |
| `homepage` | no | Absolute `https:` or `http:` URL of a page about the plugin. |
| `metadata` | no | Object holding the three values below. |
| `metadata.category` | no | One declared category id. |
| `metadata.labels` | no | Array of distinct declared label ids. |
@@ -153,7 +155,7 @@ A reader cannot verify these rules; a generator that violates them publishes a m
- `publishTimestamp` is the registry publish time of `version` for npm sources and the committer time of `commit` for Git sources.
- `engines.dsh` copies the manifest's `engines.dsh`. Without one, it is the conjunction, as defined in DSH compatibility, of the manifest's DSH peer ranges after publication rewriting, omitting `workspace:*`, `workspace:^`, and `workspace:~`, because installation treats them as the running DSH version; with no remaining range, `engines.dsh` is absent. Installation finds any other `workspace:` range incompatible with every DSH version, so generators do not list such a version.
- Each listed version declares `dsh.bundle`. Installation independently refuses a package without a bundle patch.
- `title`, `description`, `icon`, and `author` come from the highest listed version's locale `meta` fields, manifest fields, and icon, using the rules for installed plugin display metadata.
- `title`, `description`, `icon`, and `author` come from the highest listed version's locale `meta` fields, manifest fields, and icon, using the rules for installed plugin display metadata. `homepage` copies that version's manifest `homepage` and is absent without one.
### Reader rules
@@ -177,7 +179,7 @@ A reader evaluates each version's compatibility from `engines.dsh` with the rule
**One `source` per plugin, with only the pin per version.** A plugin that moves to another repository, directory, or registry between releases could not list its older versions.
**Display fields per version.** A list shows one row per plugin, so older display text would cost index size without a reader that shows it.
**Display fields per version.** A list shows one row per plugin, so older display text, icons, authors, and homepages would cost index size without a reader that shows them.
**Inline icons only.** A list without extra requests needs inline icons, but 256 KiB of raw bytes is about 341 KiB as base64, so a 100-plugin index could reach about 35 MB. URL icons trade extra requests, and disclosure of the user's IP address to the image host, for a small index.
@@ -42,6 +42,7 @@ DSH 只能从用户已知的 spec 安装第三方组合包(bundle):npm 包
"description": { "en": "Per-tool LLM authorization review", "zh": "逐工具 LLM 授权审查" },
"icon": "icons/auto-review.svg",
"author": "Example Labs",
"homepage": "https://example.com/dsh-auto-review",
"metadata": {
"category": "productivity",
"labels": ["official"],
@@ -109,6 +110,7 @@ DSH 只能从用户已知的 spec 安装第三方组合包(bundle):npm 包
| `description` | 否 | `LocalizedText`。 |
| `icon` | 否 | 以下两种形式之一:`data:<type>;base64,<payload>`,其中 `<type>` 为 `image/svg+xml`、`image/png`、`image/jpeg` 或 `image/webp`,`<payload>` 是按规范填充的 base64,解码后的载荷不超过 256 KiB;或者 URL 引用,它相对于索引 URL 解析的结果是 `https:` URL,或与索引 URL 同源。 |
| `author` | 否 | 至少包含一个非空白字符的字符串。 |
| `homepage` | 否 | 介绍该插件的页面的绝对 `https:` 或 `http:` URL。 |
| `metadata` | 否 | 包含下列三个值的对象。 |
| `metadata.category` | 否 | 一个已声明的分类 id。 |
| `metadata.labels` | 否 | 由互不相同的已声明标签 id 组成的数组。 |
@@ -153,7 +155,7 @@ DSH 安装检查读取包 manifest 中的 `engines.dsh`。存在该字段时,
- 对于 npm 来源,`publishTimestamp` 是 `version` 在 registry 中的发布时间;对于 Git 来源,它是 `commit` 的提交者时间。
- `engines.dsh` 复制 manifest 中的 `engines.dsh`。manifest 没有该字段时,它是 manifest 中经发布改写后的 DSH peer 范围按 DSH 兼容性一节定义的合取,并省略 `workspace:*`、`workspace:^` 和 `workspace:~`,因为安装时会将它们视为当前运行的 DSH 版本;没有剩余范围时省略 `engines.dsh`。安装检查认为其他任何 `workspace:` 范围与所有 DSH 版本都不兼容,因此生成器不列出此类版本。
- 列出的每个版本都声明了 `dsh.bundle`。安装时也会独立拒绝没有组合包 patch 的包。
- `title`、`description`、`icon` 和 `author` 来自所列最高版本的语言文件 `meta` 字段、manifest 字段和图标,并采用已安装插件显示元数据的规则。
- `title`、`description`、`icon` 和 `author` 来自所列最高版本的语言文件 `meta` 字段、manifest 字段和图标,并采用已安装插件显示元数据的规则。`homepage` 复制该版本 manifest 的 `homepage`,manifest 没有该字段时省略。
### 读取器规则
@@ -177,7 +179,7 @@ DSH 安装检查读取包 manifest 中的 `engines.dsh`。存在该字段时,
**每个插件一个 `source`,每个版本只记录固定点。** 在两次发布之间换了仓库、目录或 registry 的插件将无法列出旧版本。
**每个版本各有显示字段。** 列表每个插件只显示一行,旧的显示文本会增加索引大小,却没有读取器显示它。
**每个版本各有显示字段。** 列表每个插件只显示一行,旧的显示文本、图标、作者和主页会增加索引大小,却没有读取器显示它们。
**只允许内联图标。** 不发额外请求的列表需要内联图标,但 256 KiB 原始字节编码为 base64 后约为 341 KiB,因此 100 个插件的索引可能达到约 35 MB。URL 图标以额外请求和向图片主机暴露用户 IP 地址为代价,换取较小的索引。