use std::path::PathBuf;
#[derive(Debug, Clone)]
pub struct PromptContext {
pub workspace: Option<PathBuf>,
pub languages: Vec<String>,
pub project_type: Option<String>,
pub available_tools: Vec<String>,
pub user_preferences: Option<UserPreferences>,
}
impl Default for PromptContext {
fn default() -> Self {
Self {
workspace: None,
languages: Vec::new(),
project_type: None,
available_tools: Vec::new(),
user_preferences: None,
}
}
}
#[derive(Debug, Clone)]
pub struct UserPreferences {
pub preferred_languages: Vec<String>,
pub coding_style: Option<String>,
pub preferred_frameworks: Vec<String>,
}
impl PromptContext {
pub fn from_workspace(workspace: PathBuf) -> Self {
Self {
workspace: Some(workspace),
..Default::default()
}
}
pub fn add_language(&mut self, language: String) {
if !self.languages.contains(&language) {
self.languages.push(language);
}
}
pub fn set_project_type(&mut self, project_type: String) {
self.project_type = Some(project_type);
}
pub fn add_tool(&mut self, tool: String) {
if !self.available_tools.contains(&tool) {
self.available_tools.push(tool);
}
}
}