relay_knowledge/api/contracts/
codebase_views.rs1use serde::{Deserialize, Serialize};
2
3use crate::domain::{
4 CodebaseViewBudget, CodebaseViewEdge, CodebaseViewEvidence, CodebaseViewNode,
5 CodebaseViewRequest, CodebaseViewSection,
6};
7
8use super::{ApiMetadata, CodeRepositoryFreshnessDiagnostics, CodeRepositoryScopeMetadata};
9
10#[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}