Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
4fca6f0
feat(core): let plugin backends start runs and debug sessions
xiaoyumuxi Nov 4, 2026
12f4ffe
docs(contract): document plugin run/debug start, tool references and …
xiaoyumuxi Nov 4, 2026
c6e1c88
fix(core): require rerun data of a plugin run to be a JSON object
xiaoyumuxi Nov 4, 2026
183b068
feat(macos): add the toolUnresolved plugin host error code
xiaoyumuxi Nov 4, 2026
dd1ab7f
feat(macos): expose the installation home of a resolved tool and shar…
xiaoyumuxi Nov 4, 2026
7c5f07e
feat(macos): expand a tool definition's launch template for a selecte…
xiaoyumuxi Nov 4, 2026
1e19dfe
feat(macos): decode plugin run starts, debug starts and output links …
xiaoyumuxi Nov 4, 2026
a413a23
feat(macos): run a process a plugin asked for in the primary console
xiaoyumuxi Nov 4, 2026
f5e3848
feat(macos): host the run/start, run/stop and debug/start plugin requ…
xiaoyumuxi Nov 4, 2026
838a2af
feat(macos): show plugin runs, attached debuggers and debug sessions …
xiaoyumuxi Nov 4, 2026
1358f6d
feat(macos): forward declared debug adapter features and defaults to …
xiaoyumuxi Nov 4, 2026
f8d77f2
feat(macos): offer applying code changes to adapters that declared ho…
xiaoyumuxi Nov 4, 2026
9e4bd9e
feat(macos): declare an output links module for plugin matchers
xiaoyumuxi Nov 4, 2026
28108dc
feat(macos): link Run and test console text through plugin output lin…
xiaoyumuxi Nov 4, 2026
4d378a4
feat(macos): add the interface text of plugin runs, debug starts and …
xiaoyumuxi Nov 4, 2026
0b0c0c2
test(macos): cover the plugin run, stop and debug start host service
xiaoyumuxi Nov 4, 2026
85088ac
docs(matrix): record plugin run/debug start, adapter features and out…
xiaoyumuxi Nov 4, 2026
e5c195c
fix(macos): mark the expected non-failures in plugin run and output l…
xiaoyumuxi Nov 4, 2026
98a5e26
fix(macos): spell out the Sendable main-actor closures of the plugin …
xiaoyumuxi Nov 5, 2026
4cc0c8b
fix(plugins): accept plugins that declare only output link matchers
xiaoyumuxi Nov 5, 2026
4610f88
Merge origin/preview: pass the host language gate (#1727)
xiaoyumuxi Nov 5, 2026
0f2783d
Merge remote-tracking branch 'origin/preview' into feat/1495-plugin-r…
xiaoyumuxi Nov 5, 2026
b221b80
Merge remote-tracking branch 'origin/preview' into feat/1495-plugin-r…
xiaoyumuxi Nov 5, 2026
b157420
Merge commit 'c5c68126b' into feat/1495-plugin-run-debug-api
xiaoyumuxi Nov 5, 2026
7d8e17a
Merge preview 017e9450f into feat/1495-plugin-run-debug-api
xiaoyumuxi Nov 5, 2026
2c9a60b
Merge preview cd79e71d7 into feat/1495-plugin-run-debug-api
xiaoyumuxi Nov 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions docs/development/macos-plugin-api-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,15 +44,15 @@ Windows 不在本轮,平台矩阵的 partial/pending 保持真实。
| API-19 | 部分完成 | 已有声明式设置 1/2;通用 settings.get/inspect/update/events 未做;Java 拆分计划(M1、D1):Maven 插件按真实配置读取、回显、写回 settings |
| API-20 | 部分完成 | global/backend/workspace 可写目录与网页状态;语言服务器的按工作区状态目录按 `state.retention` 后台回收(Core 决定,仅 macOS,无用户可见重置入口);统一 KV/配额/session API 未做 |
| API-21 | 既有能力 | 协议 2 credentials/get/set/delete;权限与插件隔离不变 |
| API-22 | 部分完成 | 既有函数进度与取消;语言服务器准备状态 `languageServer/setStatus`(仅百分比,无 actions,仅 macOS);独立 output channel、通用 log/progress API 未做;Java 拆分计划(C-RUN):输出链接匹配器 |
| API-23 | 部分完成 | 已有进程声明与运行时解析;通用 toolchains/process 服务未开放;Java 拆分计划(C-RUN):run/start、run/stop、工具 ID 引用与 requiresTools |
| API-22 | 部分完成 | 既有函数进度与取消;语言服务器准备状态 `languageServer/setStatus`(仅百分比,无 actions,仅 macOS);新增 `outputLinkMatchers:1`,插件声明的匹配器让 Run 与测试控制台出现链接(macOS);独立 output channel、通用 log/progress API 未做 |
| API-23 | 部分完成 | 已有进程声明与运行时解析;新增 `serverProcess:4` 的工具 ID 引用(清单 `requiresTools`)与后端发起的 `run/start`、`run/stop`、`run/didExit`(macOS,工具 ID 未找到或不可用时返回 -32025);通用 toolchains/process 服务未开放 |
| API-24 | 部分完成 | 已公开插件自有原生终端 create/show/close/reopen/dispose/onExit(macOS、本机);不开放 sendText/输出读取,Windows 待接入 |
| API-25 | 部分完成 | 既有语言/LSP 贡献;`languages:2` 的清单与包内 JSON 语法/编辑配置,仅支持 Monarch;新增 `languageServers:3` 与 `serverProcess:3`:后端经 `languageServer/request\|notify\|setStatus` 使用自己的服务器、后端启动(`launch.kind:"backend"`),会话策略由 Core 执行(仅 macOS,远程后端启动未支持,见 Agent Note 2026-11-04-plugin-owned-language-server-sessions);新增宿主方法 `lithe/host/editor/registerProviders`(权限 `editor.providers`,macOS,待运行验收)把 definition/hover/completion/codeLens/foldingRange/semanticTokens/documentLink 绑定到普通插件函数,语言服务器优先、插件只补充;符号、格式化、重命名、Code Action、签名帮助、内联提示和运行期传入 JSON 动态注册高亮未做,详见下方范围说明;Java 拆分计划(C-EDIT):Spring、MyBatis 只补上游缺失的 Provider |
| API-26 | 未做 | 公共诊断 collection/events API 未开放;既有 LSP 诊断不等于该 API;`registerProviders` 不接受 `diagnostics` 类型(返回 unsupportedOption),推送式诊断集合另行设计;Java 拆分计划(C-EDIT):推送式 collection,带文档版本 |
| API-27 | 部分完成 | 独立 `editor/registerActions` 绑定普通函数与文档范围,不依赖 LSP/Build/Run;版本 2 增加行首多图标(run/run-all/debug/test 与 test-passed/test-failed/test-skipped 结果态、navigate-super/navigate-implementations 导航)、同一标记的 `alternatives`(至多 4 个)和点击结果的 `reveal`(宿主展示位置);通用主题、片段、其他装饰未做;Java 拆分计划(C-EDIT):图标、alternatives、reveal、CodeLens、运行与测试标记 |
| API-28 | 未做 | 公共 custom editor 文档 owner/保存/撤销/恢复未开放 |
| API-29 | 部分完成 | #1517 BuildProvider 1–6/model inputs;普通编辑器动作不属于本领域项;新指南未齐全;Java 拆分不改协议:测试发现与运行沿用 #1517,由 Maven、Gradle 插件提供 |
| API-30 | 既有能力 | 已有 debugAdapters 1/2 与 DAP 宿主;本 PR 不重建调试协议;Java 拆分计划(C-RUN):debug/start、debugAdapters 3 的 features 与 defaults |
| API-30 | 部分完成 | 已有 debugAdapters 1/2 与 DAP 宿主;新增 `debugAdapters:3` 的 features/defaults(热代码替换、步进过滤器)与后端发起的 `debug/start`(macOS);不重建调试协议 |
| API-31 | 既有能力 | 已有 vcsProviders:1;不包含内置 Git 公共读取面 |
| API-32 | 未做 | 通用 ServiceProvider 仍为提案 |
| API-33 | 部分完成 | projectGenerators 2 增加通用工具字段(`type:"tool"`,工具来自 `toolDefinitions`,选择写入项目的工具 pin),即 Java 拆分计划(C-PROJ)所需的版本;项目生成器与工具定义插件免重启生效;新 hooks 不在本轮 |
Expand Down Expand Up @@ -227,8 +227,8 @@ Mac 当前声明的能力版本为:`backend:1`、`buildModelInputs:1`、`build
| API-19 H/C/E | `settings.get/inspect/update/onDidChange`;已有 settings 1/2 和注册表 [S10] | 只读/写入分权;区分 Lithe 偏好与工具真实配置,显示来源/作用域/有效值。工具配置显式 Apply、冲突保护、写后重读,不建立无效影子设置 | M3;Java 拆分(M1、D1):Maven 插件内实现 |
| API-20 H | `storage.global/workspace/session`、包内只读资源;已有平台 state store [S2/S4] | 插件命名空间和配额;状态放平台可写位置,迁移/卸载策略明确。工作区状态不是 v1 应用级 `${stateDir}` 的别名,不写插件包/bundle | M0:作用域;M3:扩展接口;Java 拆分(C-LS):仅新增 temporaryDirectory |
| API-21 H | `secrets.get/set/delete`;已有函数协议 v2 credentials 服务 [S2] | 保持本插件隔离和现有凭据授权;不得读取 IDE/Agent/其他插件密钥,不将 secret 放日志、普通配置或状态。先补 SDK/文档一致性,不另造密码库 | M1 |
| API-22 H/E | `output.createChannel/append/dispose`、`log`、`progress.withCancellation`;已有函数进度与输出生命周期 [S2/S11] | 插件/操作归属、日志脱敏与字节预算;取消/超时后不再更新 UI。只复用已有进度状态机,不把 stdout 协议流与业务日志混用 | M1:命令结果/进度;M3:独立输出;Java 拆分(C-LS、C-RUN):setStatus、输出链接匹配器 |
| API-23 H | `toolchains.resolve/list`、受管 `process.run/cancel`;已有 executable/runtime 解析与进程链路 [S1/S11] | 显式执行授权,executable/argv 分离,cwd/环境白名单、输出和超时上限、进程树清理;不提供任意 shell 字符串,也不自动下载运行时 | M4;Java 拆分(C-RUN):run/start、run/stop、工具 ID 引用;Run 会话比受管进程多一层宿主展示 |
| API-22 H/E | `output.createChannel/append/dispose`、`log`、`progress.withCancellation`;已有函数进度与输出生命周期 [S2/S11] | 插件/操作归属、日志脱敏与字节预算;取消/超时后不再更新 UI。只复用已有进度状态机,不把 stdout 协议流与业务日志混用。输出链接由 Core 匹配、宿主只上样式和转发点击,`resolve` 函数在点击时才调用 | M1:命令结果/进度;M3:独立输出;Java 拆分(C-LS):setStatus |
| API-23 H | `toolchains.resolve/list`、受管 `process.run/cancel`;已有 executable/runtime 解析与进程链路 [S1/S11] | 显式执行授权,executable/argv 分离,cwd/环境白名单、输出和超时上限、进程树清理;不提供任意 shell 字符串,也不自动下载运行时。`run/start` 的可执行文件只能是工具定义 ID 或插件包内文件,工作目录限工作区内,由 Run 窗口展示 | M4 |
| API-24 H/E | `terminal.create/show/close/reopen/dispose/onExit` 已复用原生终端模块 [S12];函数协议 3 宿主服务 | `terminal.create` 权限、创建逐操作确认;只控制本 backend session/context 的终端,禁用/关闭工作区清理。无 sendText 或输出读取;本机 macOS,Windows 与远程未实现 | 首版接线,原生验收见功能矩阵 |
| API-25 C/P | 语言/语法/LSP、补全/悬浮/定义/符号/格式化/重命名/Code Action;已有语言服务器贡献 [S1/S13] | 优先接成熟 LSP 的完整能力;自定义 Provider 仅补上游确实缺失项,按文档版本取消旧请求。避免让 SDK 成为第二套语言/工程引擎 | M4:已支持能力文档;`languages:2` 声明式语法已实现;`editor/registerProviders` 已接线 macOS(Core 校验注册与结果形状,宿主按类型预算并发询问,合并规则见 Agent Note 2026-10-31-plugin-editor-extension-apis);后续:符号/格式化/重命名/Code Action、Windows;Java 拆分(C-LS、C-EDIT):后端启动解析器与向自有语言服务器的请求;Spring、MyBatis 属于上游缺失项 |
| API-26 H/P/E | `diagnostics.createCollection/set/delete/onDidChange`;已有 Problems/诊断 owner [S13] | 只能写本插件 collection,带文档版本和稳定范围;编辑/卸载后旧诊断可撤回。不能覆盖其他 LSP 结果或伪造宿主诊断身份 | M4;Java 拆分(C-EDIT):推送式 collection |
Expand All @@ -242,7 +242,7 @@ Mac 当前声明的能力版本为:`backend:1`、`buildModelInputs:1`、`build
| ID / 方向 | 候选能力与现状/所有者 | 权限、作用域与验收 | 阶段 |
| --- | --- | --- | --- |
| API-29 P/C | Build/Task/Test/Run Preparation、只读工程模型输入;#1517 已合并,Mac 已声明 `buildProviders:1–6`、`buildModelInputs:1`、`debugAdapters:2` [S1/S11] | 本项只补文档、SDK 对齐和真实项目端到端验收,不重复定义协议。原生 Build/Test/Run 展示、准备、取消共用宿主;快照带源/版本,不能成为第二份 classpath/工程真相;远程工作区下的 Provider 启动限制见 API-40。编辑器动作是独立扩展点,不计入领域执行。 | M4;Java 拆分不改协议 |
| API-30 P/C/E | Debug Adapter 注册、配置和会话事件;已有 DAP 宿主 [S14] | 进程/连接授权、launch 与 attach 所有权、终止和断开区别;复用断点/调试 UI。高级内存/反汇编按独立提案,不阻塞基础 API | M4;Java 拆分(C-RUN):debug/start、features 与 defaults |
| API-30 P/C/E | Debug Adapter 注册、配置和会话事件;已有 DAP 宿主 [S14] | 进程/连接授权、launch 与 attach 所有权、终止和断开区别;复用断点/调试 UI。后端发起的 `debug/start` 只能用自己声明的适配器,`run/start` 的 `debug.target` 目前只支持 connection。高级内存/反汇编按独立提案,不阻塞基础 API | M4 |
| API-31 P/C | VCS 仓库/状态/diff/提交等领域能力;已有 vcsProviders 1 [S14],只覆盖插件提供的 VCS,内置 Git 见 API-42 | 读取与修改仓库分权;危险操作有明确确认,结果有仓库/操作身份。插件私有函数不能代替宿主可理解的 VCS 协议 | M4 |
| API-32 P/C/E | Services 的实例/状态/动作/日志;数据库已有自身路径,通用 ServiceProvider 仍为提案 [S17] | 插件拥有的连接/进程与用户外部服务分开;停用只清理前者,不默认停用户数据库/容器。服务接入现有 Services,不再画一套工作台 | 后续 |
| API-33 P/C | 项目生成器发现、参数、预览与生成;已有 projectGenerators 1,projectGenerators 2 增加通用工具字段 [S14] | 写目标目录需确认,禁止路径逃逸/无提示覆盖;只生成选择的项目,不下载未声明程序。工具字段只通过工具定义的通用解析列出候选,选择写入项目已有的工具 pin,生成器不能自带工具发现。版本 1 的 `runtime` 字段保持不变,待 Java 逻辑迁出后再移除。先补现有文档,再评估新增 hooks | M4;Java 拆分(C-PROJ):projectGenerators 2 |
Expand Down
Loading
Loading