From 7fe87babe64308ddfbf836972e55108bc0fb0b16 Mon Sep 17 00:00:00 2001 From: jaberjaber23 Date: Wed, 29 Apr 2026 15:08:44 +0300 Subject: [PATCH] preserve workspace --- crates/openfang-kernel/src/kernel.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/crates/openfang-kernel/src/kernel.rs b/crates/openfang-kernel/src/kernel.rs index b07d7ee0..83bef0f8 100644 --- a/crates/openfang-kernel/src/kernel.rs +++ b/crates/openfang-kernel/src/kernel.rs @@ -1241,7 +1241,25 @@ impl OpenFangKernel { agent = %name, "Agent TOML on disk differs from DB, updating" ); - entry.manifest = disk_manifest; + // Merge: take disk values but preserve kernel-assigned + // defaults the user didn't set in TOML. Without this, + // editing any field (e.g. description) would silently + // wipe the auto-assigned workspace path / inherited + // exec_policy. + let mut new_manifest = disk_manifest; + if new_manifest.workspace.is_none() + && entry.manifest.workspace.is_some() + { + new_manifest.workspace = + entry.manifest.workspace.clone(); + } + if new_manifest.exec_policy.is_none() + && entry.manifest.exec_policy.is_some() + { + new_manifest.exec_policy = + entry.manifest.exec_policy.clone(); + } + entry.manifest = new_manifest; // Persist the update back to DB if let Err(e) = kernel.memory.save_agent(&entry) { warn!(