use std::collections::HashMap;
use rand::Rng;
use super::super::client::{MockToolCall, random_string};
use crate::agent::completions::ResolvedTool;
pub fn essay_tool_call(
tool_names: &[String],
tool_map: &HashMap<String, ResolvedTool>,
rng: &mut impl Rng,
) -> MockToolCall {
let tool_name = super::pick_invention_tool("oaifi_WriteEssay", tool_names, tool_map, rng);
let arguments = match tool_name {
"oaifi_WriteEssay" => {
let essay = random_string(rng, 200, 800);
serde_json::json!({ "essay": essay }).to_string()
}
"oaifi_ReadSpec" => "{}".to_string(),
_ => "{}".to_string(),
};
MockToolCall {
tool_name: tool_name.to_string(),
call_id: format!("call_mock_{}", rng.random_range(0u64..u64::MAX)),
arguments,
n_deltas: rng.random_range(1u32..=5) as usize,
}
}
pub fn input_schema_tool_call(
tool_names: &[String],
tool_map: &HashMap<String, ResolvedTool>,
rng: &mut impl Rng,
) -> MockToolCall {
let tool_name = super::pick_invention_tool("oaifi_WriteInputSchema", tool_names, tool_map, rng);
let arguments = match tool_name {
"oaifi_WriteInputSchema" => {
let schema_json = super::schema_gen::random_vector_input_schema(rng);
serde_json::json!({"schema": schema_json}).to_string()
}
"oaifi_ReadSpec" | "oaifi_ReadEssay" | "oaifi_ReadInputSchema" => "{}".to_string(),
_ => "{}".to_string(),
};
MockToolCall {
tool_name: tool_name.to_string(),
call_id: format!("call_mock_{}", rng.random_range(0u64..u64::MAX)),
arguments,
n_deltas: rng.random_range(1u32..=5) as usize,
}
}
pub fn essay_tasks_tool_call(
tool_names: &[String],
tool_map: &HashMap<String, ResolvedTool>,
rng: &mut impl Rng,
) -> MockToolCall {
let tool_name = super::pick_invention_tool("oaifi_WriteEssayTasks", tool_names, tool_map, rng);
let arguments = match tool_name {
"oaifi_WriteEssayTasks" => {
let essay_tasks = random_string(rng, 100, 500);
serde_json::json!({ "essay_tasks": essay_tasks }).to_string()
}
"oaifi_ReadSpec" | "oaifi_ReadEssay" | "oaifi_ReadInputSchema" => "{}".to_string(),
_ => "{}".to_string(),
};
MockToolCall {
tool_name: tool_name.to_string(),
call_id: format!("call_mock_{}", rng.random_range(0u64..u64::MAX)),
arguments,
n_deltas: rng.random_range(1u32..=5) as usize,
}
}