CodeGraph/docs
Section 2.6

Relationship Extraction

The second AST traversal pass that links symbols and files into directed graph edges by resolving function calls, class inheritance, constructor instantiations, and module imports.

Source: server/src/parser/extractors/RelationshipExtractor.ts

Supported Relationship Kinds

RelationshipExtractor generates 7 distinct directed edge kinds:

Relationship KindSource KindTarget KindEdge Direction Semantics
"calls"symbolsymbol(callerFunction) --[calls]--> (targetFunction)
"extends"symbolsymbol(subClass) --[extends]--> (superClass)
"implements"symbolsymbol(class) --[implements]--> (interface/type)
"instantiates"symbolsymbol(sourceFunction/var) --[instantiates]--> (class)
"imports"filefile / symbol / dep / module(file) --[imports]--> (target)
"exports"filesymbol(file) --[exports]--> (symbol)
"references"symbolsymbol(symbol) --[references]--> (targetSymbol)

The `ParsedRelationship` Model

server/src/parser/models/ParsedRelationship.ts
1
2
3
4
5
6
7
8
export interface ParsedRelationship { id: string; // Deterministic ID: ${sourceId}:${relationshipKind}:${targetId} sourceId: string; // Source entity ID (file path or symbol ID) sourceKind: RelationshipEntityKind; // "file" | "symbol" | "module" | "dependency" targetId: string; // Target entity ID targetKind: RelationshipEntityKind; // "file" | "symbol" | "module" | "dependency" relationshipKind: RelationshipKind; // "calls" | "imports" | "extends" | ... }

Detailed Subtopics

Explore the in-depth resolution algorithms for every relationship kind: