Skip to content

sync: 契约同步到 preview 22c14a96b,登记 #1730、#1742、#1745、#1746、#1763 - #23

Merged
xiaoyumuxi merged 4 commits into
mainfrom
sync/1730-merged-preview
Nov 5, 2026
Merged

xiaoyumuxi merged 4 commits into
mainfrom
sync/1730-merged-preview

Conversation

@xiaoyumuxi

@xiaoyumuxi xiaoyumuxi commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

这个 PR 做了什么

把 contract/v1/ 同步到主仓库 preview 的 5cc06d5f4(#1764),并在更新记录、API 总表和功能页登记 6 个 PR。上一次同步(#22)记录到 5d38352a1(#1752)。

PR 合入 协议 / API
#1730 c5c68126b 2026-11-05 编辑器语言功能 Provider(API-25)、编辑器动作第 2 版(API-27)
#1742 017e9450f 2026-11-05 pluginFunctions 1、函数协议 4:跨插件调用经 Core 中转(API-35)
#1745 cd79e71d7 2026-11-05 languageServers 3、serverProcess 3:插件自有语言服务器会话、后端决定启动方式、内容 Provider、状态回收(API-12/20/22/25)
#1746 69bc354e3 2026-11-05 serverProcess 4、debugAdapters 3、outputLinkMatchers 1:后端发起运行与调试、适配器行为、输出链接(API-22/23/30)
#1763 22c14a96b 2026-11-05 语言服务器 hostIntegration 对所有插件开放、短工具 ID 冲突时不归属(无新版本号)
#1764 5cc06d5f4 2026-11-05 schema 里 requiresTools 的描述改为与 #1763 一致(只改描述)

契约副本(node scripts/contract.mjs sync --revision 5cc06d5f4…)

  • contract/v1/README.md:
    • 新章节:Editor language-feature providers (protocol version 3)、Cross-plugin calls (protocol version 4)、Run and debug sessions (protocol version 3)、Language server host methods、Content providers、Output link matchers (outputLinkMatchers 1)、Adapter features and defaults (debugAdapters 3)、Plugin-owned sessions (languageServers 3)、Backend-resolved launch (serverProcess 3)、Tool references (serverProcess 4);
    • 编辑器动作第 2 版(行首多图标、alternatives、点击结果 reveal)、services.editor.options 与 limits.editorActionSourceBytes;
    • 权限表加 editor.providers、run.start、debug.start、languageServer.request、documents.contentProvider;
    • 宿主方法表加 10 个方法和 3 个通知;
    • 新错误码:plugin.function.* 9 个(notDeclared、providerDisabled、notExported、versionMismatch、callCycle、depthExceeded、tooManyCalls、payloadTooLarge、providerUnavailable),以及 plugin.host.languageServerUnavailable、languageServerError、methodNotDeclared、foreignContribution、toolUnresolved;
    • hostIntegration 与 plugin.integration.unsupported 的说明按 #1763 改写。
  • plugin-manifest.schema.json:pluginFunctions、outputLinkMatchers 段,serverProcess 3 的 launch.kind: "backend"、languageServers 3 会话字段、requiresTools、debugAdapters 3 的 features / defaults,以及上面 5 个新权限;requiresTools 的描述按 #1764 改为短 ID 冲突时不归属。
  • fixtures/backend/function-protocol.json:协议 4 的协商、caller、operationID、parentOperationID 和中转错误。
  • toolchains/README.md:短 ID 冲突规则;toolchains.registry 输入去掉 verifiedOfficial,输出加 conflicts。
  • fixtures/manifest/invalid-manifests.json:183 条变为 225 条。删除 1 条(官方命名空间以外请求宿主集成);新增 43 条拒绝用例,其中 1 条来自 #1730(声明 editor.providers 但缺 documents.read),其余 42 条覆盖 requiresTools、debugAdapters 3、outputLinkMatchers、run.start / debug.start、languageServers 3 会话字段、documents.contentProvider 和 pluginFunctions。
  • 新 fixtures:
    • 编辑器:editor/editor-providers.plugin.json、editor/editor-providers.json、editor/editor-actions-v2.json;
    • 后端:backend/plugin-functions-caller.plugin.json、backend/plugin-functions-exporter.plugin.json;
    • 语言:languages/language-server-backend-launch.plugin.json、languages/language-server-launch-resolution.json;
    • 调试:debug-adapters/debug-adapter-features.plugin.json、debug-adapters/debug-start.json;
    • 运行:run/run-start.json、run/output-link-matchers.json、run/tool-reference-launch.plugin.json。
  • contract.lock.json 指向 5cc06d5f4。

参考页(中英两部分同步修改)

  • reference/protocol-changelog.md:
    • “记录到”改为 5cc06d5f4(#1764);
    • 2026-11-05 时间线加 #1730、#1742、#1745、#1746、#1763、#1764 六行;
    • “按协议查首次出现”加 languageServers 3、serverProcess 3 和 4、debugAdapters 3、outputLinkMatchers 1、pluginFunctions 1、litheFunctions 4;
    • “宿主方法(按 API 编号)”加 10 个方法和 3 个通知,说明 functions/* 只对协商到协议 4 的后端开放。
  • reference/api-catalog.md:
    • API-12 从计划中移到“现在能用”,状态“部分完成”(内容提供者);
    • API-35 从计划中移到“现在能用”,状态“部分完成”(第一阶段中转);
    • API-20、22、23、25、27、30 的现状补上本批内容;API-30 由“既有能力”改为“部分完成”;
    • 宿主方法表加 10 个方法;通知表加 3 个通知;
    • “协议”“权限”两列的说明补上不带 context 的方法和 functions/* 的授权方式;
    • 限制表加编辑器动作、编辑器 Provider、languageServer/*、run/start、内容提供者和 functions/invoke 的上限。
  • reference/capabilities-and-versions.md:
    • 能力表加上面 6 个新版本,并标出各平台是否支持;
    • 协议表加 litheFunctions 4;
    • 平台列按 preview 5cc06d5f4 核对;写明 macOS 只声明 serverProcess 1 和 3,Windows 不声明本批新增版本;
    • 写明三个 SDK 只协商 1–3。
  • reference/README.md:功能页索引的范围、API 编号和能力列补上新增内容;计划中的 API 去掉 API-12、API-35。
  • reference/domains/backend.md:
    • 概览表改为函数协议 1–4、加 pluginFunctions;
    • 新增“跨插件调用(协议 4)”一节,含清单声明、宿主方法、被调方收到的请求、信任不传递、错误码;
    • 新增“Run 与调试会话(协议 3)”一节;
    • 契约章节和 fixture 表补齐。
  • reference/domains/editor.md:
    • API 编号加 12、25;权限加 editor.providers、documents.contentProvider;
    • 方法表加 editor/registerProviders,editor/registerActions 补第 2 版;
    • 新增“内容 Provider(API-12)”一节;
    • 说明除 documents/registerContentProvider 外,方法遇到远程工作区上下文返回 plugin.host.authorityUnsupported。
  • reference/domains/languages.md:
    • 新增“宿主集成(API 2)”“后端决定启动方式(serverProcess 3)”“插件自有会话(languageServers 3)”“宿主方法与通知”“输出链接(outputLinkMatchers 1)”五节;
    • 写明 hostIntegration 对所有插件开放;
    • 加 languageServer/* 的错误码表。
  • reference/domains/toolchains.md:
    • 新增“工具 ID 与冲突”“按工具定义 ID 启动进程(serverProcess 4)”两节;
    • toolchains.registry 的输入输出改为 {plugins: [{manifest}]} 和 conflicts;
    • 加 toolchains.instantiateLaunch、plugin.host.toolUnresolved。
  • reference/domains/manifest.md:
    • 字段表加 requiresTools、outputLinkMatchers、pluginFunctions;
    • languageServers[].hostIntegration 改为所有插件都可以声明;
    • 权限表加 5 个新权限;
    • 拒绝用例数改为 225。
  • reference/domains/debug-adapters.md:
    • 加 debugAdapters 3;
    • 新增“适配器行为(debugAdapters 3)”“由插件后端发起调试会话”两节。

指南

  • guides/lsp-plugin-lifecycle.md:新增“由插件后端驱动的语言服务器(serverProcess 3 与 languageServers 3)”,包括启动方式的选择、会话字段、宿主方法与通知、内容提供者。
  • guides/debug-adapter-plugin.md:新增第 6 节“适配器行为声明与由后端发起调试(debugAdapters 3)”,原第 6–9 节顺延为第 7–10 节。
  • guides/plugin-backend-workspace.md:协议版本说明加 4;新增“协议 4:跨插件调用”;补上编辑器语言功能 Provider。
  • guides/build-tool-integration.md:Java 项目的运行/测试/调试改为任何插件都可以声明 hostIntegration: jdt。

需要核对

@xiaoyumuxi:请核对 reference/protocol-changelog.md 时间线里 #1730、#1742、#1745、#1746、#1763、#1764 六行,以及“宿主方法(按 API 编号)”里新加的 10 个方法和 3 个通知。

SDK

本 PR 的新 fixture 增加了函数协议 4、宿主错误码 -32022 至 -32026 和新的宿主通知,所以 Java、Node、Rust 三个 SDK 测试会失败。修复在 #24:三个 SDK 协商到协议 4,封装跨插件调用(functions/providers、functions/invoke、caller、parentOperationID),版本为 Node 0.4.0、Java 0.4.0、Rust 0.3.0。

合并顺序:

  1. feat(sdk): 三个官方 SDK 支持插件函数协议 4(跨插件调用,Node/Java 0.4.0、Rust 0.3.0) #24 合入本分支 sync/1730-merged-preview,SDK 测试变绿;
  2. 本 PR 合入 main;
  3. 推 tag sdk-node-v0.4.0、sdk-java-v0.4.0、sdk-rust-v0.3.0。

协议 3 新增的 run/*、debug/start、languageServer/*、documents/registerContentProvider 仍没有 SDK 封装,插件可以先用通用宿主请求调用。

验证

  • node scripts/contract.mjs verify 与 verify --upstream:92 个文件与 5cc06d5f4 一致。
  • node scripts/contract.mjs drift:没有漂移。
  • node --test scripts/contract.test.mjs scripts/sdk-e2e.test.mjs:16 个通过。
  • 改动的参考页和指南:相对链接、锚点、表格列数和中英表格行数检查通过。
  • sdk-e2e:本分支单独跑会因 SDK 未升级失败;feat(sdk): 三个官方 SDK 支持插件函数协议 4(跨插件调用,Node/Java 0.4.0、Rust 0.3.0) #24 的 CI 已在合入后的状态下通过(含 SDK end-to-end with Rust Core)。

- contract/v1 同步到 preview c5c68126b(#1730):新增权限 editor.providers、
  宿主方法 editor/registerProviders、编辑器动作第 2 版(图标、alternatives、reveal)、
  limits.editorActionSourceBytes,以及三个 editor fixtures 和一条清单拒绝用例。
- protocol-changelog:记录到 c5c68126b,2026-11-05 时间线加 #1730。
- api-catalog:API-25、API-27 现状,新增宿主方法 editor/registerProviders,
  限制表补编辑器动作源文本上限、Provider 注册数量和调用时限。
- 编辑器、语言领域页,版本对照、reference 索引、后端工作区指南同步提及 Provider。
契约副本跟到 22c14a96b:插件函数协议 4 与跨插件中转(pluginFunctions 1)、languageServers 3 会话、serverProcess 3 后端决定启动方式、serverProcess 4 工具定义 ID、debugAdapters 3、outputLinkMatchers 1、Run/调试会话、内容提供者,以及普通插件可声明的 hostIntegration 与短工具 ID 冲突规则。

参考页与指南按新契约更新:更新记录与 API 总表登记新协议、能力版本和宿主方法;后端、编辑器、语言、工具链、调试适配器、清单各功能页补充对应章节和用例;LSP、调试适配器、插件后端、构建工具指南补充开发者用法。
@xiaoyumuxi xiaoyumuxi changed the title docs(contract): 同步 preview c5c68126b,登记 #1730 编辑器 Provider 与编辑器动作第 2 版 sync: 契约同步到 preview 22c14a96b,登记 #1730、#1742、#1745、#1746、#1763 Nov 5, 2026
requiresTools 的 schema 描述改为短 ID 冲突时不归属,与 #1763 一致。更新记录加 #1764 一行,“记录到”和能力对照页的核对基准改为 5cc06d5f4。
@xiaoyumuxi
xiaoyumuxi marked this pull request as ready for review November 5, 2026 10:08
@xiaoyumuxi
xiaoyumuxi merged commit 3547c27 into main Nov 5, 2026
2 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant