use std::path::Path; use core_test_support::responses; use serde_json::json; pub fn create_shell_command_sse_response( command: Vec, workdir: Option<&Path>, timeout_ms: Option, call_id: &str, ) -> anyhow::Result { let command_str = shlex::try_join(command.iter().map(String::as_str))?; let arguments = serde_json::to_string(&json!({ "command": command_str, "workdir": workdir.map(|w| w.to_string_lossy()), "timeout_ms": timeout_ms, }))?; let response_id = format!("resp-{call_id}"); Ok(responses::sse(vec![ responses::ev_response_created(&response_id), responses::ev_function_call(call_id, "shell_command", &arguments), responses::ev_completed(&response_id), ])) } pub fn create_final_assistant_message_sse_response(message: &str) -> anyhow::Result { let response_id = "resp-final"; Ok(responses::sse(vec![ responses::ev_response_created(response_id), responses::ev_assistant_message("msg-final", message), responses::ev_completed(response_id), ])) } pub fn create_apply_patch_sse_response( patch_content: &str, call_id: &str, ) -> anyhow::Result { let command = format!("apply_patch <<'EOF'\n{patch_content}\nEOF"); let arguments = serde_json::to_string(&json!({ "command": command }))?; let response_id = format!("resp-{call_id}"); Ok(responses::sse(vec![ responses::ev_response_created(&response_id), responses::ev_function_call(call_id, "shell_command", &arguments), responses::ev_completed(&response_id), ])) }