Persönlichkeits Skill v2

This commit is contained in:
Sithies
2026-03-17 13:13:48 +01:00
parent 750fe1f5f6
commit 0190089c90
8 changed files with 104 additions and 43 deletions
@@ -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"),
}
}
+6 -3
View File
@@ -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<()>;
}