File size: 1,706 Bytes
a39b25f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | """Serializable records produced by the CodeRAG indexers."""
from dataclasses import asdict, dataclass, field
@dataclass
class FunctionRecord:
function_id: str
name: str
qualified_name: str
symbol_type: str
file_path: str
start_line: int
end_line: int
signature: str
docstring: str | None
raw_code: str
own_sketch: str
own_summary: str
direct_callees: list[str] = field(default_factory=list)
unresolved_calls: list[str] = field(default_factory=list)
callee_context: str = ""
propagated_text: str = ""
code_domain_scores: dict[str, float] = field(default_factory=dict)
top_code_domains: list[str] = field(default_factory=list)
structural_signals: dict = field(default_factory=dict)
data_flow_signals: dict = field(default_factory=dict)
semantic_signals: dict = field(default_factory=dict)
def to_dict(self) -> dict:
return asdict(self)
@dataclass
class FileIndex:
schema_version: str
file_path: str
function_count: int
call_edges: list[dict[str, str]]
indexing_order: list[str]
functions: list[FunctionRecord]
def to_dict(self) -> dict:
result = asdict(self)
result["functions"] = [record.to_dict() for record in self.functions]
return result
@dataclass
class RepositoryIndex:
schema_version: str
root_path: str
file_count: int
function_count: int
call_edges: list[dict[str, str]]
indexing_order: list[str]
functions: list[FunctionRecord]
files: list[str]
def to_dict(self) -> dict:
result = asdict(self)
result["functions"] = [record.to_dict() for record in self.functions]
return result
|