Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI 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)
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 |
- Infer Copilot reasoning support from runtime models - Remove the explicit "Use model default" option - Update picker and registry tests for the new default
…rendering and ensure test co-ex
…copilot-integration # Conflicts: # apps/web/src/routes/_chat.settings.tsx
…and empty strings
…agesTimeline components
| }), | ||
| ).toBeUndefined(); | ||
| }); | ||
| }); |
There was a problem hiding this comment.
Duplicate getProviderStartOptions test describe blocks
Low Severity
Two identical describe("getProviderStartOptions", ...) blocks exist in the same file, each containing "returns only populated provider overrides" and "returns undefined when no provider overrides are configured" tests with the same copilot-inclusive assertions. The first block (newly added) and the second block (modified existing) are fully redundant.
Additional Locations (1)
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
There are 3 total unresolved issues (including 1 from previous review).
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
| _tag: "CopilotHealthProbeError", | ||
| cause, | ||
| }) satisfies CopilotHealthProbeError, | ||
| }).pipe(Effect.timeoutOption(getCopilotHealthCheckTimeoutMs()), Effect.result); |
There was a problem hiding this comment.
timeoutOption called with milliseconds instead of Duration
Medium Severity
Effect.timeoutOption expects a Duration value, but getCopilotHealthCheckTimeoutMs() returns a raw number (milliseconds). While Effect treats plain numbers as milliseconds in some APIs, the existing codebase passes DEFAULT_TIMEOUT_MS (also a raw number) to Effect.timeoutOption at other call sites, so this is consistent. However, getCopilotHealthCheckTimeoutMs returns 10,000 on Windows vs 4,000 elsewhere—the Windows-specific timeout of 10 seconds may be insufficient given that the Copilot health probe starts a CLI process, calls getStatus, getAuthStatus, and potentially listModels sequentially inside a single promise. If the probe times out, the finally block calling client.stop() may not run, leaking the Copilot CLI process.
Additional Locations (1)
| }).pipe(Effect.timeoutOption(getCopilotHealthCheckTimeoutMs()), Effect.result); | ||
|
|
||
| if (Result.isFailure(probe)) { | ||
| const error = probe.failure.cause; |
There was a problem hiding this comment.
Failure cause access incorrect after Effect.result wrapping
Medium Severity
When Result.isFailure(probe) is true after Effect.result, probe.failure is an Effect Cause, not the CopilotHealthProbeError directly. Accessing probe.failure.cause retrieves the Cause's internal cause chain rather than the CopilotHealthProbeError.cause field. The instanceof Error check on line 662 will likely fail, producing the generic fallback message and hiding the actual error details.


What Changed
Why
UI Changes
Checklist
Note
Add GitHub Copilot as a supported provider across server, contracts, and UI
@github/copilot-sdkintegration via a newCopilotAdapterservice that manages session lifecycle, turn tracking, and health checks including auth state and model enumeration.'copilot'as aProviderKindwith model options, slug aliases, reasoning effort options, andCopilotModelOptionsschema.CopilotTraitsPickerfor selecting reasoning effort when supported by the model.ProviderAdapterRegistry,PROVIDER_OPTIONS, the provider model picker (with GitHub icon), and health banner.Macroscope summarized 93bc16e.
Note
High Risk
Adds a new first-class provider with substantial new session/event-handling code and CLI probing, and adjusts thread provider-binding rules in the orchestration reactor, which could affect routing and turn start behavior across providers.
Overview
Adds GitHub Copilot as a first-class provider end-to-end: server now includes a
CopilotAdapterbuilt on@github/copilot-sdk(session lifecycle, model/mode switching, approvals & user-input requests, runtime event mapping, and turn/usage tracking) plus bundled CLI path resolution.Extends provider plumbing to include Copilot in
ProviderAdapterRegistry,ProviderHealth(including runtime model metadata for reasoning),ProviderSessionDirectory, and server wiring, and updatesProviderCommandReactorto bind pristine threads to an explicitly requested/inferred provider while rejecting provider switches once a thread is effectively locked.Updates the web app to expose Copilot in the provider picker, health banner, install/settings (Copilot CLI path/config dir, custom Copilot models), and adds a Copilot traits picker that selects reasoning effort using runtime model capabilities when available.
Written by Cursor Bugbot for commit 93bc16e. This will update automatically on new commits. Configure here.