Skip to main content

codetether_agent/provider/tetherscript_provider/
provider_impl.rs

1//! [`Provider`] trait impl — delegates to focused sub-modules.
2
3use 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}