[v2] Consolidate runtime discovery, acquisition, and embedding
- 主要语言
- Java
- 星标
- 10.5k
- 派生
- 1.5k
- 平均合并
- 1 天 14 小时
- 30 天内合并 PR
- 129
描述
## Summary
Complete a coherent model for locating, acquiring, packaging, and embedding the Copilot runtime across all SDKs.
These items are planned work carried forward from #1934. Existing work may satisfy part of the required outcome; verify and build on it rather than reopening completed implementation. Do not omit remaining work without concrete new evidence and maintainer agreement.
## Why this work exists
The original Rust `build.rs` was forked between in-process and out-of-process modes for backward compatibility. In-process operation needed the `.node` native binary, which was available from `@github/copilot` on npm but was not included in the GitHub CLI release. Depending on npm for that binary was not considered viable long term.
Rust and Go also used build-time flags to choose whether the in-process binary was embedded because it duplicated the Copilot SEA executable already embedded in the application bundle.
Python independently performed executable resolution through `PATH` (introduced by commit `05dd60e`), which could select an arbitrary system installation rather than the runtime expected by the SDK.
## Required outcomes
- Python does not implicitly select an executable through `PATH`; it uses the SDK-managed runtime or an explicitly configured path.
- The underlying runtime build and publishing process publishes the required raw native binaries as separate GitHub Release assets.
- SDKs acquire pinned, checksum-verified runtime artifacts from `github/copilot-cli` GitHub Releases rather than depending on `@github/copilot` npm artifacts.
- Obsolete Rust and Go compile-time choices for embedding the in-process native library versus the executable runtime are removed.
- Packaging converges on a minimal bootstrap executable plus the required native dynamic library without duplicating the full SEA/native runtime payload.
- All supported platforms, offline/development scenarios, explicit overrides, checksums, and cache replacement behavior are covered.
## Implementation preparation
- Determine exactly which outcomes #2395, #2463, and #2505 already satisfy.
- Complete rather than duplicate applicable in-progress work.
- Identify and link any missing release assets or changes required from `github/copilot-cli`.
- If a remaining change is compatible with v1, it may land there as groundwork while remaining part of this tracked outcome.
- Preserve backward compatibility where it does not conflict with the intended v2 cleanup, and document any runtime-version requirements.
## Historical context
- #1934
- Commit `05dd60e`
- #2395
- #2463
- #2505
## Completion
Deliver the required outcomes across affected SDKs with a documented artifact contract and platform coverage. Any outcome considered obsolete or infeasible requires concrete evidence and explicit maintainer agreement before it is removed from scope.
贡献指南
调研方向
首先审查 #1934,并确定 #2395、#2463 和 #2505 已经覆盖的内容,以及被引用的 commit 05dd60e。跟踪受影响 SDK 中 runtime 获取、打包和嵌入的路径,并确定所需的 github/copilot-cli release assets。完成意味着:在不重复已完成工作的情况下,实现文档化的 artifact contract,以及平台、offline、override、checksum 和 cache 行为。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- github, go, python, rust
- 领域
- backend-api-design, build-system, devops, release
- Issue 类型
- 功能
- 难度
- 5/5
- 预计耗时
- 一周以上
- 活跃度
- 活跃
- 描述清晰度
- 基本清楚
- 新手友好度
- 25/100