diff --git a/internal/app/app.go b/internal/app/app.go index 9d0e6f176b14df0b15fd90f4b3651cdefafd6826..4054287fd721a4e169faaff4bc224a8dec13e106 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -279,6 +279,9 @@ func (app *App) Subscribe(program *tea.Program) { // Shutdown performs a clean shutdown of the application func (app *App) Shutdown() { + if app.CoderAgent != nil { + app.CoderAgent.CancelAll() + } app.cancelFuncsMutex.Lock() for _, cancel := range app.watcherCancelFuncs { cancel() @@ -298,9 +301,6 @@ func (app *App) Shutdown() { } cancel() } - if app.CoderAgent != nil { - app.CoderAgent.CancelAll() - } for _, cleanup := range app.cleanupFuncs { if cleanup != nil { diff --git a/internal/llm/agent/agent.go b/internal/llm/agent/agent.go index fbb5b4fd8c6390ff0dfad0e072af35342355ba41..2ea3f23423cb4f620d5a58eda63dd71fb991ea46 100644 --- a/internal/llm/agent/agent.go +++ b/internal/llm/agent/agent.go @@ -801,6 +801,13 @@ func (a *agent) CancelAll() { a.Cancel(key.(string)) // key is sessionID return true }) + for { + if a.IsBusy() { + time.Sleep(200 * time.Millisecond) + } else { + break + } + } } func (a *agent) UpdateModel() error {