The HTTP allowlist (agentAllowedFields) was missing three fields that
the web UI sends when saving agent settings: is_default,
budget_monthly_cents, and subagents_config. These fields were silently
filtered out by filterAllowedKeys(), so saves appeared successful but
values never persisted to the database.
Also adds exclusive-default logic: when setting is_default=true on an
agent, any previously-default agent is automatically unset first.
Co-authored-by: Luvu182 <208665161+Luvu182@users.noreply.github.com>