use github_mcp::auth::auth_manager::AuthManager;
use github_mcp::core::config_manager::load_config;
use github_mcp::core::errors::McpifyError;
use github_mcp::data::store::{cached_store_connection, get_endpoint};
use github_mcp::tools::call_tool::call_operation;
pub async fn run(operation_id: &str, args_json: &str) -> anyhow::Result<()> {
let config = load_config(serde_json::Map::new())?;
let mut auth_manager = AuthManager::new(config.auth_method);
let args: serde_json::Value = serde_json::from_str(args_json)?;
let endpoint = {
let conn = cached_store_connection(&config.api_version)?
.lock()
.unwrap();
get_endpoint(&conn, operation_id)?
.ok_or_else(|| McpifyError::NotFound(format!("unknown operationId '{operation_id}'")))?
};
let result = call_operation(
&endpoint,
&config,
&mut auth_manager,
operation_id,
args,
None,
)
.await?;
println!("{}", serde_json::to_string_pretty(&result)?);
Ok(())
}