Skip to content

Commit 2610168

Browse files
authored
chore(sdk-pin): promote github-copilot-sdk to 1.0.0 (GA) (#71)
Move the SDK pin from 1.0.0b10 (shipped in provider v2.3.0) to the 1.0.0 final release. GA is the first published, non-prerelease build of the 1.0.0 line; pinning to it removes the prerelease-resolution footgun for downstream installs (no --pre needed) and gives the provider a supported, stable pin of record. The import-time SDK floor stays at >=1.0.0b10, the minimum where the MinimalMode kwargs first exist; only the exact pin and the user-facing version strings move to ==1.0.0. The MinimalMode wire shape is unchanged. Two items follow from adopting the GA surface: - Classify session.extensions.attachments_pushed as no-emit. The GA surface adds this extension event; MinimalMode disables the extension surface, so it is unreachable and carries no kernel-domain mapping. This matches the disposition the block already records for sibling extension events, kept explicit rather than left to the implicit drop. - Broaden the live malformed-token test to also accept AuthenticationError. Under GA a malformed token is rejected server-side as a 401 and surfaces as AuthenticationError; the test still asserts no files leak to default paths. Quality: ruff: 0 errors | pyright: 0 errors | pytest (linux/py3.14): 1372 passed | pytest (win32/py3.13): 1369 passed | total coverage: 98% Co-authored-by: HDMowri <HDMowri@users.noreply.github.com>
1 parent 2f86895 commit 2610168

7 files changed

Lines changed: 36 additions & 19 deletions

File tree

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ amplifier provider models github-copilot
127127

128128
## Supported Models
129129

130-
Models are discovered dynamically from the SDK at runtime — the list reflects your GitHub Copilot plan. The tables below show the current public set as of SDK 1.0.0b10; run `amplifier provider models github-copilot` for the live list.
130+
Models are discovered dynamically from the SDK at runtime — the list reflects your GitHub Copilot plan. The tables below show the current public set as of SDK 1.0.0; run `amplifier provider models github-copilot` for the live list.
131131

132132
**Routing:**
133133

@@ -509,7 +509,7 @@ Running `amplifier init` before authentication:
509509
## Dependencies
510510

511511
- `amplifier-core` (provided by Amplifier runtime, not installed separately)
512-
- `github-copilot-sdk==1.0.0b10`
512+
- `github-copilot-sdk==1.0.0`
513513
- `pyyaml>=6.0`
514514

515515
> **Note:** `github-copilot-sdk` is installed automatically when you install or initialize

amplifier_module_provider_github_copilot/__init__.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ def _check_sdk_version(version_str: str) -> None:
6262
reinstall message instead of a deferred ``TypeError``.
6363
6464
The floor is the symbol-availability minimum (``>=1.0.0b10``); the
65-
exact pyproject pin (``==1.0.0b10``) is enforced separately by
65+
exact pyproject pin (``==1.0.0``) is enforced separately by
6666
``tests/_sdk_version_gate.py``. Earlier 1.x betas lack required
6767
MinimalMode kwargs and are rejected here at import time.
6868
@@ -76,8 +76,8 @@ def _check_sdk_version(version_str: str) -> None:
7676
raise ImportError(
7777
f"github-copilot-sdk=={version_str} is below the symbol-availability "
7878
"floor (>=1.0.0b10 required; MinimalMode MUST:7-15 kwargs added at b10). "
79-
"Pinned target: ==1.0.0b10 (pyproject.toml). "
80-
"Reinstall with: pip install 'github-copilot-sdk==1.0.0b10' "
79+
"Pinned target: ==1.0.0 (pyproject.toml). "
80+
"Reinstall with: pip install 'github-copilot-sdk==1.0.0' "
8181
f"or: amplifier provider install --force {PROVIDER_ID}"
8282
)
8383

@@ -106,7 +106,7 @@ def _parse_sdk_version(version_str: str) -> _Version:
106106
# SDK required; tests only run with SDK installed
107107
raise ImportError(
108108
"Required dependency 'github-copilot-sdk' is not installed. "
109-
"Install with: pip install 'github-copilot-sdk==1.0.0b10'"
109+
"Install with: pip install 'github-copilot-sdk==1.0.0'"
110110
) from _e
111111
# Contract: sdk-boundary:Membrane:MUST:5 — fail at import time on wrong version.
112112
_check_sdk_version(_sdk_version)

amplifier_module_provider_github_copilot/config/data/events.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,11 @@ event_classifications:
156156
# tool.execution_complete bridge; forwarding this would double-emit
157157
# under a different schema.
158158
- mcp_app.tool_call_complete
159+
# SDK v1.0.0b12 — extension-SDK attachment push. MinimalMode disables the
160+
# extension surface (enable_skills=False and no extension_sdk_path is ever
161+
# passed), so this is unreachable; and it carries no domain value. Same
162+
# disposition as session.extensions_loaded above.
163+
- session.extensions.attachments_pushed
159164

160165
finish_reason_map:
161166
# Values MUST be lowercase to match amplifier-core proto:

pyproject.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,11 @@ dependencies = [
2727
# - v1.0.0b9: on_list_models + mode kwargs (additive)
2828
# - v1.0.0b10: 8 new create_session kwargs + telemetry consolidation
2929
# (MinimalMode:MUST:7-15)
30-
"github-copilot-sdk==1.0.0b10",
30+
# - v1.0.0b12: bundled CLI 1.0.57; copilot.rpc stable public shim;
31+
# one new SessionEventType (session.extensions.attachments_pushed)
32+
# - v1.0.0 (GA): byte-identical Python source to b12 (bundled CLI 1.0.57);
33+
# stable release stamp — no API or behavior change vs b12
34+
"github-copilot-sdk==1.0.0",
3135
# PyYAML for config loading
3236
"pyyaml>=6.0",
3337
# PEP 440 version parser used by the import-time SDK floor check

tests/test_behaviors.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,7 @@ def test_message_format_invariants_preserved(self) -> None:
480480
_check_sdk_version("1.0.0b6")
481481
msg = str(exc_info.value)
482482
assert "github-copilot-sdk" in msg
483-
assert "pip install 'github-copilot-sdk==1.0.0b10'" in msg
483+
assert "pip install 'github-copilot-sdk==1.0.0'" in msg
484484
assert "amplifier provider install" in msg
485485

486486

tests/test_filesystem_acceptance_live.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,11 @@ async def test_live_malformed_token_does_not_leak_files_to_default_paths(
267267
pre_amplifier = _relative_set(Path.home() / ".amplifier")
268268
pre_provider_home = _relative_set(isolated_home) if isolated_home.exists() else set()
269269

270-
from amplifier_core.llm_errors import ConfigurationError, ProviderUnavailableError
270+
from amplifier_core.llm_errors import (
271+
AuthenticationError,
272+
ConfigurationError,
273+
ProviderUnavailableError,
274+
)
271275

272276
from amplifier_module_provider_github_copilot.provider import GitHubCopilotProvider as Provider
273277
from amplifier_module_provider_github_copilot.sdk_adapter import client as _client_mod
@@ -278,8 +282,12 @@ async def test_live_malformed_token_does_not_leak_files_to_default_paths(
278282

279283
# A4: complete() drives SDK subprocess startup where token validation occurs.
280284
# list_models() routes through fetch_and_map_models (patchable) and never
281-
# reaches the SDK auth layer.
282-
with pytest.raises((ProviderUnavailableError, ConfigurationError)):
285+
# reaches the SDK auth layer. The bundled CLI validates the token against
286+
# GitHub server-side, so a malformed token surfaces as a 401 that the error
287+
# contract maps to AuthenticationError (errors.yaml: "401"/unauthorized);
288+
# ProviderUnavailableError/ConfigurationError remain accepted for non-auth
289+
# subprocess-startup failures.
290+
with pytest.raises((AuthenticationError, ProviderUnavailableError, ConfigurationError)):
283291
await p.complete( # type: ignore[arg-type]
284292
{"messages": [{"role": "user", "content": "ping"}], "model": "claude-opus-4.5"}, # pyright: ignore[reportArgumentType]
285293
model="claude-opus-4.5",

uv.lock

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)