pub mod code;
pub mod code_releationship;
pub mod original_document;
pub mod project_structure;
use std::path::PathBuf;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct FileInfo {
pub path: PathBuf,
pub name: String,
pub size: u64,
pub extension: Option<String>,
pub is_core: bool,
pub importance_score: f64,
pub complexity_score: f64,
pub last_modified: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct DirectoryInfo {
pub path: PathBuf,
pub name: String,
pub file_count: usize,
pub subdirectory_count: usize,
pub total_size: u64,
pub importance_score: f64,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
#[serde(rename_all = "lowercase")]
pub enum DirectoryPurpose {
Core, Config, Api, Database, Frontend, Test, Tool, Docs, Other,
}
impl Default for DirectoryPurpose {
fn default() -> Self {
DirectoryPurpose::Other
}
}
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
#[serde(default)]
pub struct DirectoryDossier {
pub path: PathBuf,
pub name: String,
pub purpose: DirectoryPurpose,
pub file_count: usize,
pub subdirectory_count: usize,
pub importance_score: f64,
pub summary: String,
pub key_files: Vec<String>,
pub file_insights: Vec<FileInsight>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
#[serde(default)]
pub struct FileInsight {
pub name: String,
pub file_path: PathBuf,
pub summary: String,
#[serde(default)]
pub code_purpose: crate::types::code::CodePurpose,
#[serde(default)]
pub source_summary: String,
#[serde(default)]
pub detailed_description: String,
#[serde(default)]
pub responsibilities: Vec<String>,
#[serde(default)]
pub interfaces: Vec<crate::types::code::InterfaceInfo>,
#[serde(default)]
pub dependencies: Vec<crate::types::code::Dependency>,
#[serde(default)]
pub importance_score: f64,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
#[serde(default)]
pub struct CodeAndDirectoryInsights {
pub file_insights: Vec<crate::types::code::CodeInsight>,
pub directory_insights: Vec<DirectoryDossier>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, JsonSchema)]
#[serde(default)]
pub struct DirectorySelection {
pub selected_directories: Vec<PathBuf>,
pub selected_files: Vec<SelectedFilesForDirectory>,
}
#[derive(Debug, Serialize, Deserialize, Clone, Default, JsonSchema)]
#[serde(default)]
pub struct SelectedFilesForDirectory {
pub dir_path: PathBuf,
pub file_names: Vec<String>,
}