limit-cli 0.0.46

AI-powered terminal coding assistant with TUI. Multi-provider LLM support, session persistence, and built-in tools.
Documentation
use super::super::args::ArgsExt;
use super::super::client::BrowserClient;
use super::super::client_ext::StorageExt;
use super::super::response::ok_msg;
use limit_agent::error::AgentError;
use serde_json::Value;

pub async fn cookies(client: &BrowserClient, _args: &Value) -> Result<Value, AgentError> {
    let cookies = client.cookies().await?;

    let cookies_json: Vec<Value> = cookies
        .iter()
        .map(|c| {
            serde_json::json!({
                "name": c.name,
                "value": c.value
            })
        })
        .collect();

    Ok(serde_json::json!({
        "success": true,
        "cookies": cookies_json,
        "count": cookies.len()
    }))
}

pub async fn cookies_set(client: &BrowserClient, args: &Value) -> Result<Value, AgentError> {
    let name = args.get_str("name", "cookies_set")?;
    let value = args.get_str("value", "cookies_set")?;
    client.cookies_set(name, value).await?;
    Ok(ok_msg(format!("Set cookie: {}={}", name, value)))
}

pub async fn storage_get(client: &BrowserClient, args: &Value) -> Result<Value, AgentError> {
    let storage_type = args.get_str("storage_type", "storage_get")?;
    let key = args.get_opt_str("key");
    let value = client.storage_get(storage_type, key).await?;
    Ok(serde_json::json!({
        "success": true,
        "value": value
    }))
}

pub async fn storage_set(client: &BrowserClient, args: &Value) -> Result<Value, AgentError> {
    let storage_type = args.get_str("storage_type", "storage_set")?;
    let key = args.get_str("key", "storage_set")?;
    let value = args.get_str("value", "storage_set")?;
    client.storage_set(storage_type, key, value).await?;
    Ok(ok_msg(format!(
        "Set {} storage: {}={}",
        storage_type, key, value
    )))
}

pub async fn network_requests(client: &BrowserClient, args: &Value) -> Result<Value, AgentError> {
    let filter = args.get_opt_str("filter");
    let requests = client.network_requests(filter).await?;

    let requests_json: Vec<Value> = requests
        .iter()
        .map(|r| {
            serde_json::json!({
                "method": r.method,
                "url": r.url
            })
        })
        .collect();

    Ok(serde_json::json!({
        "success": true,
        "requests": requests_json,
        "count": requests.len()
    }))
}