provider::github-copilot::abort
Cancel the in-flight upstream stream for a request_id (router::abort fan-out), stopping billed generation immediately.
- request_idstringrequired
- abortedbooleanrequired
GitHub Copilot subscription provider worker; sign in with GitHub once and the models the plan grants appear in the picker. Implements provider::github-copilot::stream, refresh_models, and a device-flow login surface behind llm-router.
exact versions are immutable; binary and bundle artifacts are digest-pinned.
Cancel the in-flight upstream stream for a request_id (router::abort fan-out), stopping billed generation immediately.
Complete the device-flow sign-in: exchanges the device_code once the operator has entered the user_code; on success the GitHub credential is stored and discovery runs. Returns ok | pending | expired | denied.
The `device_code` from `login::start`.
Seconds to add to the poll interval; set when `status` is `slow_down`.
Outcome of one poll. `SlowDown` is kept distinct from `Pending` because GitHub asks callers to lengthen their interval when it appears; the requested wait rides along in `retry_after_seconds`.
Begin the GitHub device-flow sign-in: returns the user_code to enter at the verification URL plus the device_code for login::poll. Operator-only.
Opaque device code to pass to `login::poll`.
Seconds until the device code expires.
Seconds to wait between polls (GitHub's requested cadence).
Code the operator types at `verification_uri`.
Where to type it (github.com/login/device).
Internal: router::ready subscriber that re-declares this provider and refreshes its catalog.
Refresh the Copilot catalog slice from GET /models — ids, windows, and capability flags come from the live listing the subscription enables — and reconcile it through the router; returns the model count written.
Stream a GitHub Copilot chat completion: exchange the GitHub credential for a Copilot bearer, call the Chat Completions API, and relay AssistantMessageEvent frames to writer_ref.
Optional link to the stored original in the session-manager attachment store. Transcript bookkeeping for lazy readers only: the harness clears it before `router::chat`, and no provider mapping reads it. Tolerated here so a block that still carries it deserializes instead of failing the request; omitted on the wire when absent.
Optional link to the stored original in the session-manager attachment store. Transcript bookkeeping for lazy readers only: the harness clears it before `router::chat`, and no provider mapping reads it. Tolerated here so a block that still carries it deserializes instead of failing the request; omitted on the wire when absent.
Optional link to the stored original in the session-manager attachment store. Transcript bookkeeping for lazy readers only: the harness clears it before `router::chat`, and no provider mapping reads it. Tolerated here so a block that still carries it deserializes instead of failing the request; omitted on the wire when absent.
Optional link to the stored original in the session-manager attachment store. Transcript bookkeeping for lazy readers only: the harness clears it before `router::chat`, and no provider mapping reads it. Tolerated here so a block that still carries it deserializes instead of failing the request; omitted on the wire when absent.
Single-variant role tags: exact-match on deserialize, correct wire string on serialize, and they let `AgentMessage` be an untagged union.
Set on speech models only; see [`SpeechModel`].
BCP-47 tags of the languages the model handles; empty when the provider does not say.
What a speech model does. Chat models carry no `speech` block.
Realtime input (stt) or streamed audio output (tts) is available.
Stable conversation identity for provider cache affinity.
Ordered sections behind `system_prompt` (always forwarded alongside the flat string, which equals the sections joined with "\n\n").