use anyhow::Result;
use futures::stream::BoxStream;
use super::runner::TetherScriptProvider;
use crate::provider::{CompletionRequest, StreamChunk};
pub async fn complete_stream(
provider: &TetherScriptProvider,
req: CompletionRequest,
) -> Result<BoxStream<'static, StreamChunk>> {
let resp = super::complete::complete(provider, req).await?;
let text = resp
.message
.content
.iter()
.filter_map(|p| match p {
crate::provider::ContentPart::Text { text } => Some(text.clone()),
_ => None,
})
.collect::<Vec<_>>()
.join("");
let chunks = vec![
StreamChunk::Text(text),
StreamChunk::Done {
usage: Some(resp.usage),
},
];
Ok(Box::pin(futures::stream::iter(chunks)))
}