api.rs

 1use std::{path::Path, sync::Arc};
 2
 3use serde::{Deserialize, Serialize};
 4
 5#[derive(Debug, Clone, Serialize)]
 6pub struct AutocompleteRequest {
 7    pub debug_info: Arc<str>,
 8    pub repo_name: String,
 9    pub branch: Option<String>,
10    pub file_path: Arc<Path>,
11    pub file_contents: String,
12    pub recent_changes: String,
13    pub cursor_position: usize,
14    pub original_file_contents: String,
15    pub file_chunks: Vec<FileChunk>,
16    pub retrieval_chunks: Vec<RetrievalChunk>,
17    pub recent_user_actions: Vec<UserAction>,
18    pub multiple_suggestions: bool,
19    pub privacy_mode_enabled: bool,
20    pub changes_above_cursor: bool,
21}
22
23#[derive(Debug, Clone, Serialize)]
24pub struct FileChunk {
25    pub file_path: String,
26    pub start_line: usize,
27    pub end_line: usize,
28    pub content: String,
29    pub timestamp: Option<u64>,
30}
31
32#[derive(Debug, Clone, Serialize)]
33pub struct RetrievalChunk {
34    pub file_path: String,
35    pub start_line: usize,
36    pub end_line: usize,
37    pub content: String,
38    pub timestamp: u64,
39}
40
41#[derive(Debug, Clone, Serialize)]
42pub struct UserAction {
43    pub action_type: ActionType,
44    pub line_number: usize,
45    pub offset: usize,
46    pub file_path: String,
47    pub timestamp: u64,
48}
49
50#[allow(dead_code)]
51#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize)]
52#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
53pub enum ActionType {
54    CursorMovement,
55    InsertChar,
56    DeleteChar,
57    InsertSelection,
58    DeleteSelection,
59}
60
61#[derive(Debug, Clone, Deserialize)]
62pub struct AutocompleteResponse {
63    pub autocomplete_id: String,
64    pub start_index: usize,
65    pub end_index: usize,
66    pub completion: String,
67    #[allow(dead_code)]
68    pub confidence: f64,
69    #[allow(dead_code)]
70    pub logprobs: Option<serde_json::Value>,
71    #[allow(dead_code)]
72    pub finish_reason: Option<String>,
73    #[allow(dead_code)]
74    pub elapsed_time_ms: u64,
75    #[allow(dead_code)]
76    #[serde(default, rename = "completions")]
77    pub additional_completions: Vec<AdditionalCompletion>,
78}
79
80#[allow(dead_code)]
81#[derive(Debug, Clone, Deserialize)]
82pub struct AdditionalCompletion {
83    pub start_index: usize,
84    pub end_index: usize,
85    pub completion: String,
86    pub confidence: f64,
87    pub autocomplete_id: String,
88    pub logprobs: Option<serde_json::Value>,
89    pub finish_reason: Option<String>,
90}