Everything is streaming (#7247)

Co-authored-by: Douwe Osinga <douwe@squareup.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Douwe Osinga
2026-02-17 19:53:38 +01:00
committed by GitHub
parent 65d3a1550f
commit 9a91fccfb5
42 changed files with 801 additions and 1718 deletions
+6 -18
View File
@@ -343,7 +343,8 @@ mod tests {
use goose::conversation::message::{Message, MessageContent};
use goose::model::ModelConfig;
use goose::providers::base::{
Provider, ProviderDef, ProviderMetadata, ProviderUsage, Usage,
stream_from_single_message, MessageStream, Provider, ProviderDef, ProviderMetadata,
ProviderUsage, Usage,
};
use goose::providers::errors::ProviderError;
use goose::session::session_manager::SessionType;
@@ -385,13 +386,14 @@ mod tests {
#[async_trait]
impl Provider for MockToolProvider {
async fn complete(
async fn stream(
&self,
_model_config: &ModelConfig,
_session_id: &str,
_system_prompt: &str,
_messages: &[Message],
_tools: &[Tool],
) -> Result<(Message, ProviderUsage), ProviderError> {
) -> Result<MessageStream, ProviderError> {
let tool_call = CallToolRequestParams {
meta: None,
task: None,
@@ -405,21 +407,7 @@ mod tests {
Usage::new(Some(10), Some(5), Some(15)),
);
Ok((message, usage))
}
async fn complete_with_model(
&self,
session_id: Option<&str>,
_model_config: &ModelConfig,
system_prompt: &str,
messages: &[Message],
tools: &[Tool],
) -> anyhow::Result<(Message, ProviderUsage), ProviderError> {
// Test-only: coerce missing session_id to empty so complete() can be reused.
let session_id = session_id.unwrap_or("");
self.complete(session_id, system_prompt, messages, tools)
.await
Ok(stream_from_single_message(message, usage))
}
fn get_model_config(&self) -> ModelConfig {