tandem-tools 0.4.21

Tooling and integrations for the Tandem engine
Documentation
use serde_json::Value;
use tandem_types::{ToolCapabilities, ToolDomain, ToolEffect, ToolSchema};

pub(crate) fn tool_schema(
    name: &'static str,
    description: impl Into<String>,
    input_schema: Value,
) -> ToolSchema {
    ToolSchema::new(name, description, input_schema)
}

pub(crate) fn tool_schema_with_capabilities(
    name: &'static str,
    description: impl Into<String>,
    input_schema: Value,
    capabilities: ToolCapabilities,
) -> ToolSchema {
    ToolSchema::new(name, description, input_schema).with_capabilities(capabilities)
}

pub(crate) fn workspace_read_capabilities() -> ToolCapabilities {
    ToolCapabilities::new()
        .effect(ToolEffect::Read)
        .domain(ToolDomain::Workspace)
        .reads_workspace()
        .preferred_for_discovery()
}

pub(crate) fn workspace_write_capabilities() -> ToolCapabilities {
    ToolCapabilities::new()
        .effect(ToolEffect::Write)
        .domain(ToolDomain::Workspace)
        .writes_workspace()
        .requires_verification()
}

pub(crate) fn workspace_search_capabilities() -> ToolCapabilities {
    ToolCapabilities::new()
        .effect(ToolEffect::Search)
        .domain(ToolDomain::Workspace)
        .reads_workspace()
        .preferred_for_discovery()
}

pub(crate) fn shell_execution_capabilities() -> ToolCapabilities {
    ToolCapabilities::new()
        .effect(ToolEffect::Execute)
        .domain(ToolDomain::Shell)
        .reads_workspace()
        .writes_workspace()
        .network_access()
        .destructive()
        .requires_verification()
}

pub(crate) fn web_fetch_capabilities() -> ToolCapabilities {
    ToolCapabilities::new()
        .effect(ToolEffect::Fetch)
        .domain(ToolDomain::Web)
        .network_access()
        .preferred_for_discovery()
}

pub(crate) fn apply_patch_capabilities() -> ToolCapabilities {
    ToolCapabilities::new()
        .effect(ToolEffect::Patch)
        .domain(ToolDomain::Workspace)
        .reads_workspace()
        .writes_workspace()
        .requires_verification()
}