Skip to main content

VsCodeCopilotProvider

Struct VsCodeCopilotProvider 

Source
pub struct VsCodeCopilotProvider { /* private fields */ }
Expand description

VSCode Copilot LLM provider (proxy-based).

Connects to copilot-api proxy for GitHub Copilot access.

Implementations§

Source§

impl VsCodeCopilotProvider

Source

pub fn new() -> VsCodeCopilotProviderBuilder

Create a new provider builder with default settings.

Source

pub fn with_proxy(proxy_url: impl Into<String>) -> VsCodeCopilotProviderBuilder

Create a provider builder with custom proxy URL.

Source

pub fn get_client(&self) -> &VsCodeCopilotClient

Get a reference to the HTTP client for advanced operations.

Source

pub async fn list_models(&self) -> Result<ModelsResponse>

List available models from the Copilot API.

§OODA-79: Dynamic Model Discovery

Delegates to the underlying client to fetch available models. Returns models that are available for the authenticated user.

Trait Implementations§

Source§

impl Clone for VsCodeCopilotProvider

Source§

fn clone(&self) -> VsCodeCopilotProvider

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for VsCodeCopilotProvider

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl EmbeddingProvider for VsCodeCopilotProvider

Source§

fn name(&self) -> &str

Get the name of this provider.
Source§

fn model(&self) -> &str

Get the embedding model.
Source§

fn dimension(&self) -> usize

Get the dimension of the embeddings.
Source§

fn max_tokens(&self) -> usize

Get the maximum number of tokens per input.
Source§

fn embed<'life0, 'life1, 'async_trait>( &'life0 self, texts: &'life1 [String], ) -> Pin<Box<dyn Future<Output = LlmResult<Vec<Vec<f32>>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Generate embeddings for a batch of texts.
Source§

fn embed_one<'life0, 'life1, 'async_trait>( &'life0 self, text: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<Vec<f32>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Generate embedding for a single text.
Source§

impl LLMProvider for VsCodeCopilotProvider

Source§

fn supports_tool_streaming(&self) -> bool

OODA-05: Enable streaming with tool calls for real-time token display.

Source§

fn chat_with_tools_stream<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, messages: &'life1 [ChatMessage], tools: &'life2 [ToolDefinition], tool_choice: Option<ToolChoice>, options: Option<&'life3 CompletionOptions>, ) -> Pin<Box<dyn Future<Output = LlmResult<BoxStream<'static, LlmResult<StreamChunk>>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait,

Stream LLM response with tool calls (OODA-05).

Returns a stream of StreamChunk events for real-time:

  • Content display
  • Tool call progress
  • Token counting and rate display

This enables the React agent to use StreamingProgress instead of SpinnerGuard, providing ⚡ N tokens (M t/s) display.

Source§

fn name(&self) -> &str

Get the name of this provider.
Source§

fn model(&self) -> &str

Get the current model.
Source§

fn max_context_length(&self) -> usize

Get the maximum context length for the model.
Source§

fn complete<'life0, 'life1, 'async_trait>( &'life0 self, prompt: &'life1 str, ) -> Pin<Box<dyn Future<Output = LlmResult<LLMResponse>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Generate a completion for the given prompt.
Source§

fn complete_with_options<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, prompt: &'life1 str, options: &'life2 CompletionOptions, ) -> Pin<Box<dyn Future<Output = LlmResult<LLMResponse>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Generate a completion with custom options.
Source§

fn chat<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, messages: &'life1 [ChatMessage], options: Option<&'life2 CompletionOptions>, ) -> Pin<Box<dyn Future<Output = LlmResult<LLMResponse>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Generate a chat completion with messages.
Source§

fn chat_with_tools<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, messages: &'life1 [ChatMessage], tools: &'life2 [ToolDefinition], tool_choice: Option<ToolChoice>, options: Option<&'life3 CompletionOptions>, ) -> Pin<Box<dyn Future<Output = LlmResult<LLMResponse>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait,

Generate a chat completion with tool/function calling support. Read more
Source§

fn stream<'life0, 'life1, 'async_trait>( &'life0 self, prompt: &'life1 str, ) -> Pin<Box<dyn Future<Output = LlmResult<BoxStream<'static, LlmResult<String>>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Generate a streaming completion.
Source§

fn supports_streaming(&self) -> bool

Check if the model supports streaming.
Source§

fn supports_json_mode(&self) -> bool

Check if the model supports JSON mode.
Source§

fn supports_function_calling(&self) -> bool

Check if the model supports function/tool calling.
Source§

fn model_name(&self) -> Option<String>

Get the model name as an Option<String>. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more