Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

## Unreleased

- Fix plugin primary agents being dropped from the selector when model sync finishes after plugin resolution.

## 0.135.2

- Bugfix: occasional `NoSuchFileException` when persisting the DB cache; each save now uses a unique temp file and concurrent writers to the same file are serialized in-process.
Expand Down
21 changes: 12 additions & 9 deletions src/eca/handlers.clj
Original file line number Diff line number Diff line change
Expand Up @@ -79,27 +79,30 @@
(swap! db* assoc :providers-config-hash new-providers-hash)
(models/sync-models! db* config (fn [models]
(let [db @db*
default-model (f.chat/default-model db config)
;; Plugin resolution can finish while model sync is running;
;; re-read config so agent notifications don't use stale data.
fresh-config (config/all db)
default-model (f.chat/default-model db fresh-config)
default-agent-name (config/validate-agent-name
(or (:defaultAgent (:chat config))
(:defaultAgent config))
config)
default-agent-config (get-in config [:agent default-agent-name])
variants (model-variants config default-model)]
(or (:defaultAgent (:chat fresh-config))
(:defaultAgent fresh-config))
fresh-config)
default-agent-config (get-in fresh-config [:agent default-agent-name])
variants (model-variants fresh-config default-model)]
(config/notify-fields-changed-only!
{:chat
{:models (sort (keys models))
:agents (config/primary-agent-names config)
:agents (config/primary-agent-names fresh-config)
:select-model default-model
:select-agent default-agent-name
:variants (or variants [])
:select-variant (select-variant default-agent-config variants)
:welcome-message (welcome-message config)
:welcome-message (welcome-message fresh-config)
;; Deprecated, remove after changing emacs, vscode and intellij.
:default-model default-model
:default-agent default-agent-name
;; Legacy: backward compat for clients using old key names
:behaviors (distinct (keys (:agent config)))
:behaviors (distinct (keys (:agent fresh-config)))
:select-behavior default-agent-name
:default-behavior default-agent-name}}
messenger
Expand Down
Loading