1use rmcp::schemars::JsonSchema;
4use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Deserialize, JsonSchema)]
8pub struct SemanticSearchRequest {
9 pub query: String,
11
12 pub limit: Option<usize>,
14
15 pub compact: Option<bool>,
20
21 pub filter_path: Option<String>,
23}
24
25#[derive(Debug, Deserialize, JsonSchema)]
27pub struct GetFileChunksRequest {
28 pub path: String,
30
31 pub compact: Option<bool>,
35}
36
37#[derive(Debug, Deserialize, JsonSchema)]
41pub struct FindReferencesRequest {
42 pub symbol: String,
44
45 pub limit: Option<usize>,
47}
48
49#[derive(Debug, Serialize)]
51pub struct SearchResultItem {
52 pub path: String,
53 pub start_line: usize,
54 pub end_line: usize,
55 pub kind: String,
56 pub score: f32,
57 #[serde(skip_serializing_if = "Option::is_none")]
58 pub signature: Option<String>,
59 #[serde(skip_serializing_if = "Option::is_none")]
60 pub content: Option<String>,
61 #[serde(skip_serializing_if = "Option::is_none")]
62 pub context_prev: Option<String>,
63 #[serde(skip_serializing_if = "Option::is_none")]
64 pub context_next: Option<String>,
65}
66
67#[derive(Debug, Serialize)]
69pub struct ReferenceItem {
70 pub path: String,
72 pub line: usize,
74 pub kind: String,
76 #[serde(skip_serializing_if = "Option::is_none")]
78 pub signature: Option<String>,
79 pub score: f32,
81}
82
83#[derive(Debug, Serialize)]
85pub struct IndexStatusResponse {
86 pub indexed: bool,
87 pub total_chunks: usize,
88 pub total_files: usize,
89 pub model: String,
90 pub dimensions: usize,
91 pub max_chunk_id: u32,
92 pub db_path: String,
93 pub project_path: String,
94 #[serde(skip_serializing_if = "Option::is_none")]
95 pub error_message: Option<String>,
96}
97
98#[derive(Debug, Serialize)]
100pub struct DatabaseInfoResponse {
101 pub database_path: String,
102 pub project_path: String,
103 pub is_current_directory: bool,
104 pub depth_from_current: usize,
105 pub total_chunks: usize,
106 pub total_files: usize,
107 pub model: String,
108}
109
110#[derive(Debug, Serialize)]
112pub struct FindDatabasesResponse {
113 pub databases: Vec<DatabaseInfoResponse>,
114 pub message: String,
115 pub current_directory: String,
116}