-
Notifications
You must be signed in to change notification settings - Fork 3.4k
feat(providers): add GitHub Copilot community provider (builtIn: false) #1351
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from 11 commits
Commits
Show all changes
21 commits
Select commit
Hold shift + click to select a range
9546ea7
feat(providers): add GitHub Copilot community provider
popemkt f412b83
feat(providers/copilot): wire tool restrictions
popemkt 94b7f47
feat(providers/copilot): wire MCP servers
popemkt a198290
feat(providers/copilot): wire skills
popemkt d7719bb
feat(providers/copilot): wire best-effort structured output
popemkt 8a3504d
fix(providers/copilot): address PR review findings
popemkt 31d94d4
feat(providers/copilot): wire sub-agents
popemkt e0b57a8
fix(providers/copilot): make vendor-path binary-resolver test hermetic
e50e649
Merge upstream/dev into emdash/add-copilot-2er
efd838e
fix(merge): remove stray <<<<<<< HEAD marker left in package.json
bf8734b
fix(copilot): address CodeRabbit review on PR #1351
popemkt 06c3f9e
Merge upstream/dev into emdash/add-copilot-2er
popemkt 454dbcb
test(copilot): cover MCP, skills, agents in e2e-copilot-all-features
popemkt f9bad03
test(copilot): harden skill + agent assertions with unguessable tokens
popemkt ef16bac
docs(copilot): clarify single-auth-model + drop redundant outer quote…
popemkt 784444a
Merge remote-tracking branch 'upstream/dev' into emdash/add-copilot-2er
popemkt d3fc706
Merge remote-tracking branch 'upstream/dev' into emdash/add-copilot-2er
popemkt 4f666c7
refactor(providers/copilot): drop isModelCompatible per #1463
popemkt 2c65569
fix(providers/copilot): lazy-load @github/copilot-sdk to protect comp…
popemkt 8ebacbf
fix(providers/copilot): explicit useLoggedInUser config wins over env…
popemkt 34302e0
Merge upstream/dev into emdash/add-copilot-2er
popemkt File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,32 @@ | ||
| # E2E smoke test — GitHub Copilot community provider | ||
| # Verifies: provider registration, SDK session start, simple prompt response. | ||
| # Auth: run `copilot login`, or provide COPILOT_GITHUB_TOKEN / GH_TOKEN / GITHUB_TOKEN. | ||
| name: e2e-copilot-smoke | ||
| description: 'Smoke test for the GitHub Copilot community provider.' | ||
| provider: copilot | ||
| model: gpt-5-mini | ||
|
|
||
| nodes: | ||
| - id: simple | ||
| prompt: 'Reply with exactly COPILOT_OK' | ||
| idle_timeout: 30000 | ||
|
|
||
| - id: assert | ||
| bash: | | ||
| # The workflow engine substitutes $simple.output as a literal string | ||
| # before bash runs. Wrap in single quotes so command substitution | ||
| # (`$(...)`, backticks) inside a model response is treated as data, | ||
| # not executed. A literal `'` in the value would cause a syntax | ||
| # error, which fails the test loudly rather than running arbitrary | ||
| # shell — strict improvement over double-quoted interpolation. | ||
| output_raw='$simple.output' | ||
| if [ -z "$output_raw" ]; then | ||
| echo "FAIL: simple node returned empty output" | ||
| exit 1 | ||
| fi | ||
| printf '%s\n' "$output_raw" | grep -F -q -- 'COPILOT_OK' || { | ||
| printf 'FAIL: expected COPILOT_OK, got: %s\n' "$output_raw" | ||
| exit 1 | ||
| } | ||
| printf 'PASS: simple=%s\n' "$output_raw" | ||
| depends_on: [simple] |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🌐 Web query:
@github/copilot-sdk changelog breaking changes 0.2.x💡 Result:
The GitHub Copilot SDK (github/copilot-sdk) 0.2.x series, starting with v0.2.0 (2026-03-20), v0.2.1 (2026-04-03), and v0.2.2 (2026-04-10), includes the following breaking changes documented in the official CHANGELOG.md and release notes: All SDKs: - autoRestart option deprecated and removed from client options (no effect now, remove references) [1,2,3] Node.js-specific (v0.2.1): - onElicitationRequest handler signature changed from (request, invocation) to single ElicitationContext argument. Access via context.sessionId and context.message [1,15] Python-specific (major API overhaul in v0.2.0): - CopilotClient constructor: CopilotClientOptions TypedDict replaced by dataclasses like ExternalServerConfig(url=...) or SubprocessConfig(cli_path=..., log_level=...) [1,2,3,16] - create_session and resume_session: SessionConfig/ResumeSessionConfig TypedDicts removed; use keyword arguments directly (e.g., on_permission_request=..., model=...). on_permission_request now required [1,2,3,16] - send and send_and_wait: MessageOptions TypedDict removed; first positional arg is prompt str, attachments/mode as kwargs [1,2,3,16] - MessageOptions, SessionConfig, ResumeSessionConfig no longer exported publicly [1,2,3] - Internal modules renamed: copilot.jsonrpc -> copilot._jsonrpc, etc. [1,2,3] - copilot.types module removed; import types from copilot, copilot.generated.session_events, copilot.session, copilot.tools, etc. [16,18] - PermissionRequest is now a dataclass (.kind attribute, not dict access) [16] Go-specific (v0.2.0): - Client.Start context cancel no longer kills CLI process; use client.Stop explicitly [1,2,3] - LogOptions.Ephemeral changed from bool to *bool; use copilot.Bool(true) [1,2,3] Other notes: - v0.2.0 described as "big update with broad API refinements" [1,2] - No comprehensive migration guide found; changes detailed in CHANGELOG with before/after code examples for Python [1,13,16]. - Issues mention additional compatibility notes, e.g., ModelCapabilities for BYOK in later previews [9].
Citations:
🏁 Script executed:
Repository: coleam00/Archon
Length of output: 1792
🏁 Script executed:
# Find recent changes to packages/providers/package.json related to copilot-sdk git log --oneline -n 50 -- packages/providers/package.jsonRepository: coleam00/Archon
Length of output: 138
🏁 Script executed:
# Get the PR description and context for the most recent change git show e0b57a8f --statRepository: coleam00/Archon
Length of output: 50371
🏁 Script executed:
Repository: coleam00/Archon
Length of output: 485
Confirm intent for
^0.2.2version range on a public-preview SDK.@github/copilot-sdkis in public preview with documented breaking changes across the 0.2.x series (v0.2.0, v0.2.1, v0.2.2): autoRestart removal, Node.js onElicitationRequest handler signature change, major Python API overhaul, and Go Client.Start behavior change. The caret range allows upgrades within>=0.2.2 <0.3.0, so future 0.2.x patches and their breaking changes will be auto-pulled, while 0.3.0 will remain excluded. If strict pinning was intended, consider~0.2.2or exact0.2.2. Otherwise, this is fine—just confirm the range matches your intent.🤖 Prompt for AI Agents
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Acknowledged but skipping — for
0.x.y, npm semver makes^0.2.2and~0.2.2resolve to the same range (>=0.2.2 <0.3.0). And sincebun.lockis committed, the installed version is exact regardless of the spec. The only meaningful tightening would be exact pin"0.2.2", which I don't think is worth losing patch fixes for. Will pin if0.3.xlands with a known regression.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Only users with a collaborator, contributor, member, or owner role can interact with CodeRabbit.