[v2] Consolidate runtime discovery, acquisition, and embedding
- Vorherrschende Sprache
- Java
- Sterne
- 10.5k
- Forks
- 1.5k
- Ø Merge
- 1 T. 11 Std.
- Gemergte PRs (30 T.)
- 128
Beschreibung
## 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.
Beitragsleitfaden
Rechercherichtung
Start by reviewing #1934 and determining what #2395, #2463, and #2505 already cover, along with the referenced commit 05dd60e. Trace the runtime acquisition, packaging, and embedding paths across the affected SDKs and identify any required github/copilot-cli release assets. Done means the documented artifact contract and platform, offline, override, checksum, and cache behavior are implemented without duplicating completed work.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- github, go, python, rust
- Bereich
- backend-api-design, build-system, devops, release
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Aktiv
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 25/100