feat: first cut at dev brain
This commit is contained in:
@@ -15,6 +15,7 @@ pub struct Config {
|
||||
pub model: ModelChoice,
|
||||
pub idle_timeout_minutes: i32,
|
||||
pub a2ui_enabled: bool,
|
||||
pub dev_brain: DevBrainConfig,
|
||||
pub endpoint: EndpointConfig,
|
||||
pub generation: GenerationPreferences,
|
||||
pub runtime: RuntimePreferences,
|
||||
@@ -27,6 +28,7 @@ impl Default for Config {
|
||||
model: ModelChoice::default(),
|
||||
idle_timeout_minutes: 10,
|
||||
a2ui_enabled: true,
|
||||
dev_brain: DevBrainConfig::default(),
|
||||
endpoint: EndpointConfig::default(),
|
||||
generation: GenerationPreferences::default(),
|
||||
runtime: RuntimePreferences::default(),
|
||||
@@ -35,6 +37,35 @@ impl Default for Config {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
|
||||
#[serde(default, deny_unknown_fields)]
|
||||
pub struct DevBrainConfig {
|
||||
pub enabled: bool,
|
||||
pub vault_path: Option<String>,
|
||||
}
|
||||
|
||||
impl DevBrainConfig {
|
||||
pub fn vault(&self) -> Result<std::path::PathBuf, String> {
|
||||
if !self.enabled {
|
||||
return Err("Dev Brain is disabled.".into());
|
||||
}
|
||||
let path = self
|
||||
.vault_path
|
||||
.as_deref()
|
||||
.filter(|path| !path.trim().is_empty())
|
||||
.ok_or_else(|| "Choose an Obsidian vault before enabling Dev Brain.".to_owned())?;
|
||||
crate::dev_brain::validate_vault(Path::new(path))
|
||||
}
|
||||
|
||||
fn validate(&self) -> Result<(), String> {
|
||||
if self.enabled {
|
||||
self.vault().map(|_| ())
|
||||
} else {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
|
||||
#[serde(default, deny_unknown_fields)]
|
||||
pub struct EndpointConfig {
|
||||
@@ -113,7 +144,8 @@ impl Config {
|
||||
return Err("Endpoint port must be between 1 and 65535.".into());
|
||||
}
|
||||
self.generation.validate()?;
|
||||
self.runtime.validate(self.model)
|
||||
self.runtime.validate(self.model)?;
|
||||
self.dev_brain.validate()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user