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:
@@ -7,7 +7,10 @@ use std::process::Stdio;
|
||||
use tokio::io::{AsyncBufReadExt, BufReader};
|
||||
use tokio::process::Command;
|
||||
|
||||
use super::base::{ConfigKey, Provider, ProviderDef, ProviderMetadata, ProviderUsage, Usage};
|
||||
use super::base::{
|
||||
stream_from_single_message, ConfigKey, MessageStream, Provider, ProviderDef, ProviderMetadata,
|
||||
ProviderUsage, Usage,
|
||||
};
|
||||
use super::errors::ProviderError;
|
||||
use super::utils::{filter_extensions_from_system_prompt, RequestLog};
|
||||
use crate::config::base::CursorAgentCommand;
|
||||
@@ -171,7 +174,6 @@ impl CursorAgentProvider {
|
||||
message_content,
|
||||
);
|
||||
let usage = Usage::default();
|
||||
|
||||
Ok((response_message, usage))
|
||||
}
|
||||
|
||||
@@ -325,19 +327,20 @@ impl Provider for CursorAgentProvider {
|
||||
skip(self, model_config, system, messages, tools),
|
||||
fields(model_config, input, output, input_tokens, output_tokens, total_tokens)
|
||||
)]
|
||||
async fn complete_with_model(
|
||||
async fn stream(
|
||||
&self,
|
||||
_session_id: Option<&str>, // CLI has no external session-id flag to propagate.
|
||||
model_config: &ModelConfig,
|
||||
_session_id: &str, // CLI has no external session-id flag to propagate.
|
||||
system: &str,
|
||||
messages: &[Message],
|
||||
tools: &[Tool],
|
||||
) -> Result<(Message, ProviderUsage), ProviderError> {
|
||||
) -> Result<MessageStream, ProviderError> {
|
||||
if super::cli_common::is_session_description_request(system) {
|
||||
return super::cli_common::generate_simple_session_description(
|
||||
let (message, provider_usage) = super::cli_common::generate_simple_session_description(
|
||||
&model_config.model_name,
|
||||
messages,
|
||||
);
|
||||
)?;
|
||||
return Ok(stream_from_single_message(message, provider_usage));
|
||||
}
|
||||
|
||||
let lines = self.execute_command(system, messages, tools).await?;
|
||||
@@ -360,9 +363,7 @@ impl Provider for CursorAgentProvider {
|
||||
let mut log = RequestLog::start(&self.model, &payload)?;
|
||||
log.write(&response, Some(&usage))?;
|
||||
|
||||
Ok((
|
||||
message,
|
||||
ProviderUsage::new(model_config.model_name.clone(), usage),
|
||||
))
|
||||
let provider_usage = ProviderUsage::new(model_config.model_name.clone(), usage);
|
||||
Ok(stream_from_single_message(message, provider_usage))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user