weavatrix-rust 2.16.4

Protocol-independent Rust repository intelligence: typed evidence graphs for impact, architecture, APIs, Git, n8n, Dify, Agent catalogs, Mermaid, and Web3 ABI
Documentation
use crate::engine::RepositoryState;
use crate::operations::domain_walk::{self, WalkSpec};
use blazingly_json::Value;

const RELATIONS: &[&str] = &["declared_architecture"];

pub(super) fn trace(state: &RepositoryState, args: &Value) -> Result<Value, String> {
    let request = domain_walk::parse_trace("diagram_trace", args, 100)?;
    let revision = state.snapshot().revision.as_str();
    let offset = domain_walk::page_offset_for(args, revision)?;
    let incoming = domain_walk::incoming_arg(args)?;
    let start = state.resolve_node(&request.label)?;
    let start_id = state.node(start)?.id.clone();
    let mut report = domain_walk::trace(
        state,
        &WalkSpec {
            start: start_id.as_str(),
            depth: request.depth,
            max_nodes: request.max_nodes,
            offset,
            relations: RELATIONS,
            port_kind: "mermaid.group",
            owner_kinds: &["mermaid.element", "mermaid.diagram"],
            incoming,
            revision,
        },
    );
    if let Some(object) = report.as_object_mut() {
        object.insert(
            "plane".to_owned(),
            blazingly_json::json!("declared_architecture"),
        );
        object.insert("label".to_owned(), blazingly_json::json!(request.label));
    }
    Ok(report)
}