Add graph explorer components, API handlers, and dependency updates
Adds code inspector, file tree components, graph visualization JS, graph API handlers, sidebar navigation updates, and misc improvements. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -31,7 +31,7 @@ petgraph = "0.7"
|
||||
tantivy = "0.22"
|
||||
|
||||
# Serialization
|
||||
bson = "2"
|
||||
bson = { version = "2", features = ["chrono-0_4"] }
|
||||
|
||||
# Async streams
|
||||
futures-util = "0.3"
|
||||
|
||||
@@ -102,13 +102,22 @@ impl GraphEngine {
|
||||
node_map.insert(node.qualified_name.clone(), idx);
|
||||
}
|
||||
|
||||
// Resolve and add edges
|
||||
// Resolve and add edges — rewrite target to the resolved qualified name
|
||||
// so the persisted edge references match node qualified_names.
|
||||
let mut resolved_edges = Vec::new();
|
||||
for edge in parse_output.edges {
|
||||
for mut edge in parse_output.edges {
|
||||
let source_idx = node_map.get(&edge.source);
|
||||
let target_idx = self.resolve_edge_target(&edge.target, &node_map);
|
||||
let resolved = self.resolve_edge_target(&edge.target, &node_map);
|
||||
|
||||
if let (Some(&src), Some(tgt)) = (source_idx, target_idx) {
|
||||
if let (Some(&src), Some(tgt)) = (source_idx, resolved) {
|
||||
// Update target to the resolved qualified name
|
||||
let resolved_name = node_map
|
||||
.iter()
|
||||
.find(|(_, &idx)| idx == tgt)
|
||||
.map(|(name, _)| name.clone());
|
||||
if let Some(name) = resolved_name {
|
||||
edge.target = name;
|
||||
}
|
||||
graph.add_edge(src, tgt, edge.kind.clone());
|
||||
resolved_edges.push(edge);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user