lash-plugin-tool-discovery 0.1.0-alpha.39

Tool-discovery plugin for the lash agent runtime.
Documentation
#[cfg(feature = "semantic-tool-search")]
use crate::catalog::CatalogTool;

#[cfg(feature = "semantic-tool-search")]
pub(crate) fn semantic_index_text(tool: &CatalogTool) -> String {
    let mut parts = vec![
        tool.contract.name.clone(),
        tool.contract.render_signature(),
        tool.contract.description.clone(),
    ];
    let return_details = tool.contract.render_returns();
    if !return_details.is_empty() {
        parts.push(return_details);
    }
    parts.extend(tool.contract.examples.clone());
    parts
        .into_iter()
        .map(|part| part.trim().to_string())
        .filter(|part| !part.is_empty())
        .collect::<Vec<_>>()
        .join("\n")
}