Persönlichkeits Skill v2
This commit is contained in:
@@ -127,6 +127,20 @@ impl SkillExecutor {
|
||||
_ => error!("update_personality: field oder value fehlt"),
|
||||
}
|
||||
}
|
||||
"remove_personality" => {
|
||||
let field = call.params.iter().find(|(k, _)| k == "field").map(|(_, v)| v.as_str());
|
||||
|
||||
match field {
|
||||
Some(f) => {
|
||||
if let Err(e) = self.personality_writer.remove(f) {
|
||||
error!(error = %e, "Persönlichkeits-Entfernung fehlgeschlagen");
|
||||
} else {
|
||||
info!(field = %f, "Persönlichkeits-Abschnitt entfernt");
|
||||
}
|
||||
}
|
||||
None => error!("remove_personality: field fehlt"),
|
||||
}
|
||||
}
|
||||
unknown => error!(skill = %unknown, "Unbekannter Skill"),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,11 +4,14 @@
|
||||
// nazarick-core definiert nur die Schnittstelle,
|
||||
// skills-Crate liefert die konkrete Implementierung.
|
||||
|
||||
/// Schreibt Persönlichkeits-Updates in soul_personality.md.
|
||||
/// Schreibt und verwaltet Persönlichkeits-Updates in soul_personality.md.
|
||||
/// Wird von SkillExecutor genutzt — konkrete Impl in skills-Crate.
|
||||
pub trait PersonalityWriter: Send + Sync {
|
||||
/// Aktualisiert ein Feld in soul_personality.md.
|
||||
/// `field` → Abschnittsname (z.B. "Stil")
|
||||
/// `value` → Neuer Inhalt des Abschnitts
|
||||
/// Abschnitt wird ersetzt wenn vorhanden, sonst angehängt.
|
||||
fn update(&self, field: &str, value: &str) -> anyhow::Result<()>;
|
||||
|
||||
/// Entfernt einen Abschnitt aus soul_personality.md.
|
||||
/// Macht nichts wenn der Abschnitt nicht existiert.
|
||||
fn remove(&self, field: &str) -> anyhow::Result<()>;
|
||||
}
|
||||
Reference in New Issue
Block a user