//! AI Tool support for cross-language agent integration.

use serde::{Deserialize, Serialize};

/// Marker struct indicating a node can be used as an AI tool.
///
/// Nodes with this marker will be exposed to LLM agents and can be
/// called programmatically.
///
/// # Example
/// ```ignore
/// #[derive(Node)]
/// #[node(id = "MyPackage.MyTool", name = "My Tool")]
/// #[tool(name = "my_tool", description = "Does something useful")]
/// struct MyTool {
///     node: NodeBase,
///     // ...
/// }
/// ```
#[derive(Debug, Clone, Default)]
pub struct Tool;

/// Tool specification for spec generation.
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ToolSpec {
    pub name: String,
    pub description: String,
}
