github / github/copilot-sdk

[v2] Consolidate runtime discovery, acquisition, and embedding

Aperta
#2,524 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub
sdk-v2
Lingua principale
Java
Stelle
10.5k
Fork
1.5k
Merge medio
1g 11h
PR unite (30g)
128

Descrizione

## 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.

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

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.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
github, go, python, rust
Ambito
backend-api-design, build-system, devops, release
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Attiva
Chiarezza
Abbastanza chiara
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.