use rmcp::schemars;
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, schemars::JsonSchema)]
pub struct LinkParams {
pub namespace: Option<String>,
pub source_id: String,
pub target_id: String,
#[schemars(
description = "One of: contains | part_of | instance_of | extends | variant_of | introduced_by | supersedes | depends_on | enables | implements | competes_with | composed_with | annotates"
)]
pub relation: String,
pub weight: Option<f64>,
}
#[derive(Debug, Serialize, Deserialize, schemars::JsonSchema)]
pub struct NeighborsParams {
pub namespace: Option<String>,
pub node_id: String,
#[schemars(description = "out | in | both (default: out)")]
pub direction: Option<String>,
pub limit: Option<u32>,
pub relations: Option<Vec<String>>,
}
#[derive(Debug, Serialize, Deserialize, schemars::JsonSchema)]
pub struct TraverseParams {
pub namespace: Option<String>,
pub roots: Vec<String>,
pub max_depth: Option<usize>,
#[schemars(description = "out | in | both (default: out)")]
pub direction: Option<String>,
pub relations: Option<Vec<String>>,
pub include_roots: Option<bool>,
}