pub trait Provider: Send + Sync {
// Required methods
fn name(&self) -> &str;
fn complete(
&self,
request: &ProviderRequest,
) -> Result<ModelTurn, CoreError>;
// Provided methods
fn supports_streaming(&self) -> bool { ... }
fn complete_streaming(
&self,
request: &ProviderRequest,
_on_delta: &dyn Fn(StreamEvent<'_>),
) -> Result<ModelTurn, CoreError> { ... }
fn context_window(&self) -> Option<u32> { ... }
}Required Methods§
fn name(&self) -> &str
fn complete(&self, request: &ProviderRequest) -> Result<ModelTurn, CoreError>
Provided Methods§
Sourcefn supports_streaming(&self) -> bool
fn supports_streaming(&self) -> bool
Whether this provider supports streaming completions.
Sourcefn complete_streaming(
&self,
request: &ProviderRequest,
_on_delta: &dyn Fn(StreamEvent<'_>),
) -> Result<ModelTurn, CoreError>
fn complete_streaming( &self, request: &ProviderRequest, _on_delta: &dyn Fn(StreamEvent<'_>), ) -> Result<ModelTurn, CoreError>
Stream a completion, calling on_delta for each content delta as it arrives.
Returns the final assembled ModelTurn. Default falls back to complete().
Sourcefn context_window(&self) -> Option<u32>
fn context_window(&self) -> Option<u32>
Context window size in tokens, if known.
Used by the shell for auto-compaction thresholds. Returns None when
the provider doesn’t know its context window (conservative defaults apply).