feat(providers): migrate GitHub Copilot provider to @github/copilot-sdk, enable thinking + skills#1602
Conversation
…pilot-sdk Migrates from @github/copilot ^1.0.25 to @github/copilot-sdk ^0.3.0 and wires up the new SDK capabilities: skills via skillDirectories, thinking via assistant.reasoning_delta / assistant.reasoning events, streaming:true for delta delivery, and lazy-load safety for compiled binary mode. - Replace dep @github/copilot → @github/copilot-sdk in providers package.json - Add CopilotSdkProvider with full IAgentProvider interface implementation - AsyncQueue + bridgeCopilotSession bridge session events to MessageChunks - capabilities.ts: thinkingControl:true, skills:true - provider.ts: streaming:true, skillDirectories from nodeConfig.skills - event-bridge.ts: map assistant.reasoning_delta and assistant.reasoning → thinking chunks - binary-resolver.ts: lazy-load safe CLI path resolution for compiled binaries - Add CopilotProviderDefaults to types.ts (model, cliPath, githubToken) - Wire registerCopilotProvider() into registry.ts registerCommunityProviders() - Full test coverage: 62 tests across event-bridge, provider, provider-lazy-load
Restore copilot community provider exports from @archon/providers index (consistent with Pi provider pattern; was removed as unintentional side-effect of the @github/copilot-sdk migration commit). Restore defaultAssistant config.yaml fallback in getOrCreateConversation; the loadGlobalConfig removal dropped support for users who set defaultAssistant directly in ~/.archon/config.yaml rather than via the DEFAULT_AI_ASSISTANT env var. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Tip 💬 Introducing Slack Agent: The best way for teams to turn conversations into code.Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.
Built for teams:
One agent for your entire SDLC. Right inside Slack. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Hi — quick heads-up since you put work into a GitHub Copilot community provider for Archon. The Copilot work is continuing at #1505 (@danielscholl) — that PR landed the If you'd like to contribute reviews, suggestions, or test work, you're very welcome there. No pressure — just wanted you to know your earlier work isn't being forgotten and there's still a path to help land Copilot if you're interested. |
Summary
@github/copilotv1.0.25 whose import path (@github/copilot/copilot-sdk) was incompatible with the new SDK layout, and the provider lacked support for extended thinking (reasoning) and skills.@github/copilot-sdkpackage (v0.3.0) exposesskillDirectories,streaming, andassistant.reasoning_delta/assistant.reasoningevents — unlocking capabilities that Archon already handles for Claude (thinking chunks, skills).streaming: true, mappednodeConfig.skills → sessionConfig.skillDirectories, and mapped reasoning events to{ type: 'thinking' }chunks.hooks,agents,structuredOutput,fallbackModel,sandbox) remain false.UX Journey
Before
After
Architecture Diagram
Before
After
Connection inventory:
provider.ts@github/copilot-sdkevent-bridge.ts@github/copilot-sdkcapabilities.tsLabel Snapshot
risk: lowsize: Sprovidersproviders:copilotChange Metadata
featureprovidersLinked Issue
Validation Evidence (required)
bun run validate # ✅ check:bundled, check:bundled-skill, type-check, lint, format:check, tests — all passSecurity Impact (required)
Compatibility / Migration
COPILOT_CAPABILITIESadditions are additive; existing sessions unaffectedHuman Verification (required)
bun run validateSide Effects / Blast Radius (required)
@archon/providerspackage onlystreaming: truemay cause the SDK to emit both delta and completeassistant.messageevents — existingdefault:branch inmapCopilotEventreturns[]for unknown events, so extra events are silently droppedRollback Plan (required)
package.jsonand runbun installskillDirectories/streamingfields (would surface as provider error in logs)Risks and Mitigations
@github/copilot-sdkSessionConfigfield names differ from what was assumed