From 2d4ce132723d38ce3362242785f9b628730fee76 Mon Sep 17 00:00:00 2001 From: Levi Neely Date: Wed, 29 Jul 2026 11:04:01 +0200 Subject: [PATCH] dbus: emit ConfigChanged on agent switch, fix agent default override - Add agent watcher goroutine that emits ConfigChanged(session, key, value) D-Bus signal when the per-session agent name changes - Add ConfigChanged to introspection XML - Fix CreateSession: only apply OLLIE_DEFAULT_AGENT when no agent arg was explicitly provided. Previously, passing agent=default would trigger the env override, making it impossible to select a specific agent from the GUI. --- dbus.go | 14 ++++++++++++++ session/session.go | 6 ++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/dbus.go b/dbus.go index 901f8a8..3069d80 100644 --- a/dbus.go +++ b/dbus.go @@ -151,6 +151,19 @@ func (a *DBusAdapter) startWatcher(id string, sess *session.Session) { } }() + // Agent watcher — emits ConfigChanged when the agent name changes + go func() { + current := sess.Core.AgentName() + for { + next, ok := sess.Core.WaitChange(ctx, agent.WatchAgent, current) + if !ok { + return + } + current = next + a.conn.Emit(busPath, busIface+".ConfigChanged", id, "agent", current) + } + }() + // Chat watcher (polls log version) go func() { var lastLen int @@ -751,5 +764,6 @@ var introspectXML = ` + ` diff --git a/session/session.go b/session/session.go index 7e28d56..82d0100 100644 --- a/session/session.go +++ b/session/session.go @@ -1060,7 +1060,7 @@ func (s *Manager) CreateSession(args []string) (string, error) { name := "" backendOverride := "" modelOverride := "" - agentName := "default" + agentName := "" cwd := "" remoteTarget := "" systemPromptOverride := "" @@ -1091,9 +1091,11 @@ func (s *Manager) CreateSession(args []string) (string, error) { return "", fmt.Errorf("unknown option %q (valid: name, backend, model, agent, cwd, remote, system_prompt)", k) } } - if agentName == "default" { + if agentName == "" { if v := os.Getenv("OLLIE_DEFAULT_AGENT"); v != "" { agentName = v + } else { + agentName = "default" } }