vv-agent 0.4.8

VectorVein agent runtime, SDK, CLI, tools, and workspace backends
Documentation
mod error;
mod execution;
mod fallback;
mod format;
mod local_rg;
mod request;
mod response;

use std::sync::Arc;

use crate::tools::base::{ToolContext, ToolSpec};
use crate::types::{ToolArguments, ToolExecutionResult};

use error::grep_error;
use execution::execute_workspace_grep;
use request::parse_workspace_grep_request;

pub fn workspace_grep(context: &mut ToolContext, arguments: &ToolArguments) -> ToolExecutionResult {
    let spec = workspace_grep_tool();
    (spec.handler)(context, arguments)
}

pub(crate) fn workspace_grep_tool() -> ToolSpec {
    let mut spec = ToolSpec::new(
        "workspace_grep",
        "Search workspace files with grep-style semantics.",
        Arc::new(|context, arguments| {
            let request = match parse_workspace_grep_request(arguments) {
                Ok(request) => request,
                Err(error) => return grep_error(error),
            };
            execute_workspace_grep(context, request)
        }),
    );
    if let Some(schema) = crate::tools::schemas::schema_for("workspace_grep") {
        spec.schema = schema;
    }
    spec
}