#![allow(
unused_imports,
dead_code,
non_camel_case_types,
unused_variables,
clippy::all
)]
use super::super::conversation::message::Message;
use super::super::agent::prompty::Prompty;
use super::super::conversation::tool_call::ToolCall;
#[async_trait::async_trait]
pub trait Executor: Send + Sync {
async fn execute(
&self,
agent: &Prompty,
messages: &Vec<Message>,
) -> Result<serde_json::Value, Box<dyn std::error::Error + Send + Sync>>;
async fn execute_stream(
&self,
agent: &Prompty,
messages: &Vec<Message>,
) -> Result<serde_json::Value, Box<dyn std::error::Error + Send + Sync>> {
Err("not supported".into())
}
fn format_tool_messages(
&self,
raw_response: &serde_json::Value,
tool_calls: &Vec<ToolCall>,
tool_results: &Vec<String>,
text_content: &Option<String>,
) -> Vec<Message>;
}