Skip to main content

relay_knowledge/domain/code/repository/
retrieval_results.rs

1use serde::{Deserialize, Serialize};
2
3use super::super::staleness::StalenessHint;
4use super::{CodeRetrievalLayer, RepositoryCodeRange};
5
6/// Diff paths split by the effective repository selector.
7#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
8pub struct CodeImpactPathGroups {
9    pub in_scope_changed_paths: Vec<String>,
10    pub out_of_scope_changed_paths: Vec<String>,
11}
12
13/// Code retrieval hit with source location, layers, and freshness metadata.
14#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
15pub struct CodeRetrievalHit {
16    pub repository_id: String,
17    pub scope_id: String,
18    pub resolved_commit_sha: String,
19    pub tree_hash: String,
20    pub path: String,
21    pub language_id: String,
22    pub byte_range: RepositoryCodeRange,
23    pub line_range: RepositoryCodeRange,
24    pub symbol_snapshot_id: Option<String>,
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub canonical_symbol_id: Option<String>,
27    pub file_id: Option<String>,
28    pub retrieval_layers: Vec<CodeRetrievalLayer>,
29    pub index_versions: Vec<String>,
30    pub stale: bool,
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub staleness_hint: Option<StalenessHint>,
33    #[serde(skip_serializing_if = "Option::is_none")]
34    pub degraded_reason: Option<String>,
35    #[serde(skip_serializing_if = "Option::is_none")]
36    pub edge_kind: Option<String>,
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub edge_resolution_state: Option<String>,
39    #[serde(skip_serializing_if = "Option::is_none")]
40    pub edge_target_hint: Option<String>,
41    #[serde(skip_serializing_if = "Option::is_none")]
42    pub edge_confidence_basis_points: Option<u16>,
43    #[serde(skip_serializing_if = "Option::is_none")]
44    pub edge_confidence_tier: Option<String>,
45    pub score: f64,
46    pub excerpt: String,
47}
48
49/// One code location where a feature flag is defined, read, or guards code.
50#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
51pub struct CodeFeatureFlagUsage {
52    pub usage_id: String,
53    pub path: String,
54    pub language_id: String,
55    pub file_id: String,
56    pub byte_range: RepositoryCodeRange,
57    pub line_range: RepositoryCodeRange,
58    pub edge_kind: String,
59    #[serde(skip_serializing_if = "Option::is_none")]
60    pub related_symbol_snapshot_id: Option<String>,
61    #[serde(skip_serializing_if = "Option::is_none")]
62    pub related_symbol_name: Option<String>,
63    pub confidence_basis_points: u16,
64    pub confidence_tier: String,
65    pub excerpt: String,
66}
67
68/// Feature flag graph grouped by stable configuration source.
69#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
70pub struct CodeFeatureFlagGraph {
71    pub feature_flag_id: String,
72    pub name: String,
73    pub source_kind: String,
74    pub source_key: String,
75    pub score: f64,
76    pub usages: Vec<CodeFeatureFlagUsage>,
77}