Repository navigation
feat(plugins): 统一可执行文件候选与宿主注入解析 - #1420
Conversation
Lithe Review结论: ✅ 通过 未发现需要阻塞合并的问题。 Scope Check
Suggestions
Summary显式路径从插件设置经 Rust Core 传入 macOS resolver,并用于模型 Provider、构建和测试执行;指定路径不可用或版本不满足时不会静默回退,空值仍保留自动发现。共享契约、能力版本、平台矩阵和 Agent Note 同步更新,未见明确回归。 Verification
|
请求调整本 PR 的 API 设计:统一可执行文件候选入口,替代
|
|
@lithe review |
Lithe Review结论: 未发现需要阻塞合并的问题。以下两项为 P2 非阻塞问题。 Findings
Scope Check
Suggestions
Summary共享机制和平台适配边界清晰,契约、fixture、测试及架构记录同步较完整。现有新增测试主要分别覆盖工具 setting、Runtime setting 和模拟 terminal 错误,尚未覆盖上述依赖顺序与探测环境组合。 Verification
|
xiaoyumuxi
left a comment
There was a problem hiding this comment.
跨 PR 复审(head d06d5bf9)
结论:新版本已回应此前的 API 架构调整要求;仍建议修复 2 项 P2 后合并。
当前 diff 已将配置候选纳入 invocation.executables,加入 kind: "setting"、排序/插入规则与宿主解析抽象。此前要求移除独立 executableSetting 旁路的意见,不再当作未处理问题。
请继续处理本 head 现有自动审查 指出的两个组合边界:
- [P2] Runtime 前置解析失败时,不应丢掉显式工具路径约束。
BuildSystemService.swift:1291在 Runtime 报非 terminal 错误时返回 nil,后续 Provider 可能用自己的工具发现路径,违背指定非空 setting 不回退的语义。建议把“显式候选约束”传到 Provider/Runtime 失败处理,增加实际 resolver + Provider 组合测试。 - [P2] 自定义 Runtime 探测前应构造与运行一致的 PATH。
MacBuildToolResolver.swift:143对 setting 指定的脚本先运行版本探测、后追加脚本目录;依赖同目录 helper 的合法 Runtime 会被误判。请将所选目录提前加入探测环境,并复用相同环境到执行阶段。
本轮未独立运行 Swift/Rust 测试;Windows 下复用新机制仍属后续集成范围。
Block Provider discovery after prerequisite runtime failure when tool or runtime settings are explicit. Probe each runtime with the same candidate environment used for execution. Add real Core/resolver/service regressions and native layout comparisons.
Keep the shared action button style and flexible path controls. Preserve both plugin detail layout regressions and implement the new window-close confirmation method in the fullscreen test session double. Validated 107 Swift tests and repository contract/matrix gates.
|
@xiaoyumuxi 看看可以合并了没 |
插件可以通过同一个可执行文件候选列表选择用户指定的工具,模型 Provider、构建和测试遵守相同的选择与失败规则。缺失或清空设置继续自动发现;指定非空路径后不能静默换用另一安装。PR 同时保留两个独立提交中的插件详情布局修复。
invocation.executables保留 projectFile/environment/command/runtime,增加引用全局 file 设置的kind: "setting"(reload/nextRun)。默认从前到后;可选 priority(大值优先、同分原序)或 insertBefore/insertAfter(同集合稳定 id)。Core 先确定性拓扑排序,再过滤平台;拒绝重复 ID、未知锚点、自环/循环和冲突元数据,不允许跨插件或跨集合插入。plugins::executables持有源类型和排序;ExecutableCandidateResolver注入文件系统、环境、Runtime 和工具发现,区分 skip/resolved/terminalFailure。Build Systems 与自定义 Runtime Dependencies 接入;Build Provider 通过已有 ServerProcess 和tool.executable提示复用。文档说明 Language Server、Execution Provider 后续适配入口与各自包内边界、信任、自动启动和生命周期约束,未提前开放未实现的语法。executableResolution: 1,纯自动发现插件继续使用 buildSystems 1。已发布 Cargo 0.1.1 的 buildSystems 2 /executableSetting只保留输入适配,转换为首位 setting 候选;不返回configuredExecutable,禁止与新候选元数据混写,旧 ZIP 不覆盖。配套 Cargo PR #3 已合并,0.1.2 源码使用新语法但尚未发布。fc653d5c0、589906520保留选择按钮自然宽度、可压缩输入框/标题、详情分栏边界、窄表单横向滚动与顶部对齐。本轮未修改布局实现;补充了相同原生视图在 PR 基线与当前布局下的深浅主题、480pt 路径控件、700pt 窄分栏前后对比图和复现说明。验证(macOS,Swift 6.3.3):
.artifacts/test-stability/review-runtime-final.*;新增组合回归 6 例共 945ms,同目录 helper 回归 554ms,均低于计时警戒线。d06d5bf9f的通过结果,本轮未改 Rust/插件代码:Core 1106 项、构建契约额外逐项计时 32 项,完整verify-rust-core.sh(含宿主 crates、Node/Java SDK、Core 集成、C ABI/Swift 桥接)通过;Cargo 独立仓库 11 项、真实双包 workspace 的 metadata 与全部任务、带空格的显式工具路径及包字节不变验证通过,0.1.2 打包校验通过。Windows 宿主尚未接入构建插件的新解析机制,不声明 executableResolution;Language Server/Execution Provider 的新候选语法也留待后续集成。截图是受控原生视图回放,未作为完整发行程序的手工验收。远端 CI 以本次 head 的检查区为准。
2026-10-23 合并最新 preview
bad347e2e,冲突处理提交1443f2a05:路径选择按钮同时保留共享LitheActionButtonStyle和防压缩布局;合并双方同名详情布局测试,保留窄面板缩放/滚动与中英文长版本号操作按钮回归;补齐 preview 全屏测试会话替身的新confirmRunServicesBeforeClose协议方法。合并后 107 项 Swift 测试(12 个 suite)通过,逐测试计时、HTML/JUnit 为.artifacts/test-stability/pr1420-conflict-resolution.*;共享契约、服务边界、Agent Notes、Rust 注释、Windows 边界、bundle 只读及精确 base/head 平台矩阵门禁通过。