codetether_agent/provider/tetherscript_provider/
provider_impl.rs1use anyhow::Result;
4use async_trait::async_trait;
5use futures::stream::BoxStream;
6
7use super::runner::TetherScriptProvider;
8use crate::provider::{CompletionRequest, CompletionResponse, ModelInfo, Provider, StreamChunk};
9
10#[async_trait]
11impl Provider for TetherScriptProvider {
12 fn name(&self) -> &str {
13 self.name_str()
14 }
15
16 async fn list_models(&self) -> Result<Vec<ModelInfo>> {
17 let this = self.clone();
18 tokio::task::spawn_blocking(move || this.call_list_models()).await?
19 }
20
21 async fn complete(&self, req: CompletionRequest) -> Result<CompletionResponse> {
22 super::complete::complete(self, req).await
23 }
24
25 async fn complete_stream(
26 &self,
27 req: CompletionRequest,
28 ) -> Result<BoxStream<'static, StreamChunk>> {
29 super::stream::complete_stream(self, req).await
30 }
31}