config: hot-reload via RPC, Arc<Config> for cheap sharing
Config is now stored in RwLock<Arc<Config>> instead of OnceLock<Config>. get() returns Arc<Config> (cheap clone), and reload() re-reads from disk. New RPC: "reload-config" — reloads config.jsonl without restarting the daemon. Logs the change to daemon.log. Useful for switching between API backends and claude accounts without losing in-flight tasks. New CLI: poc-memory agent daemon reload-config Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
0944ecc43f
commit
af3171d6ec
4 changed files with 43 additions and 7 deletions
|
|
@ -1074,6 +1074,18 @@ pub fn run_daemon() -> Result<(), String> {
|
|||
});
|
||||
}
|
||||
|
||||
daemon.add_rpc_handler(|cmd, _ctx| {
|
||||
if cmd != "reload-config" { return None; }
|
||||
let changed = crate::config::reload();
|
||||
let config = crate::config::get();
|
||||
let api = config.api_base_url.as_deref().unwrap_or("(none)");
|
||||
let model = config.api_model.as_deref().unwrap_or("(default)");
|
||||
log_event("daemon", "config-reload",
|
||||
&format!("changed={}, api={}, model={}", changed, api, model));
|
||||
Some(format!("{{\"ok\":true,\"changed\":{},\"api_base_url\":\"{}\",\"api_model\":\"{}\"}}\n",
|
||||
changed, api, model))
|
||||
});
|
||||
|
||||
daemon.add_rpc_handler(|cmd, _ctx| {
|
||||
if !cmd.starts_with("record-hits ") { return None; }
|
||||
let keys: Vec<&str> = cmd.strip_prefix("record-hits ")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue