Skip to main content

relay_knowledge/api/contracts/
codebase_views.rs

1use serde::{Deserialize, Serialize};
2
3use crate::domain::{
4    CodebaseViewBudget, CodebaseViewEdge, CodebaseViewEvidence, CodebaseViewNode,
5    CodebaseViewRequest, CodebaseViewSection,
6};
7
8use super::{ApiMetadata, CodeRepositoryFreshnessDiagnostics, CodeRepositoryScopeMetadata};
9
10/// Repository understanding view derived from indexed code graph facts.
11#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
12pub struct CodebaseViewResponse {
13    pub metadata: ApiMetadata,
14    pub scope: CodeRepositoryScopeMetadata,
15    #[serde(default = "CodeRepositoryFreshnessDiagnostics::legacy_unknown")]
16    pub freshness: CodeRepositoryFreshnessDiagnostics,
17    pub request: CodebaseViewRequest,
18    pub graph_version: u64,
19    pub nodes: Vec<CodebaseViewNode>,
20    pub edges: Vec<CodebaseViewEdge>,
21    pub sections: Vec<CodebaseViewSection>,
22    pub evidence: Vec<CodebaseViewEvidence>,
23    pub budget: CodebaseViewBudget,
24    #[serde(default, skip_serializing_if = "Vec::is_empty")]
25    pub diagnostics: Vec<String>,
26    #[serde(skip_serializing_if = "Option::is_none")]
27    pub degraded_reason: Option<String>,
28}