Skip to content

Commit 129bcfa

Browse files
committed
Fix remote.enabled in project-local .eca/config.json being ignored when a global config also exists.
1 parent 46efba1 commit 129bcfa

3 files changed

Lines changed: 20 additions & 18 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
- Fix auto-continue clobbering new prompt status and losing the stop button.
77
- Add configurable shell for `shell_command` tool via `toolCall.shellCommand.path` and `toolCall.shellCommand.args`. #370
88
- Fix providers disappearing from `/login` after saving an API key. eca-emacs#196
9+
- Fix `remote.enabled` in project-local `.eca/config.json` being ignored when a global config also exists.
910

1011
## 0.116.5
1112

src/eca/handlers.clj

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262

6363
{:chat-welcome-message (welcome-message config)})))
6464

65-
(defn initialized [{:keys [db* messenger config metrics]}]
65+
(defn initialized [{:keys [db* messenger config metrics start-remote-server!] :as components}]
6666
(metrics/task metrics :eca/initialized
6767
(let [sync-models-and-notify!
6868
(fn [config]
@@ -98,6 +98,8 @@
9898
db*)))))))]
9999
(swap! db* assoc-in [:config-updated-fns :sync-models] #(sync-models-and-notify! %))
100100
(shared/future* config (sync-models-and-notify! config))))
101+
(when (get-in config [:remote :enabled])
102+
(start-remote-server! components))
101103
(future
102104
(Thread/sleep 1000) ;; wait chat window is open in some editors.
103105
(when-let [error (config/validation-error)]

src/eca/server.clj

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -177,28 +177,27 @@
177177
(let [db* (atom (assoc db/initial-db :started-at (System/currentTimeMillis)))
178178
metrics (->Metrics db*)
179179
stdio-messenger (->ServerMessenger server db*)
180-
;; Read remote config from file-based sources (global/env/custom).
181-
;; Workspace-level config is not available yet (initialize hasn't been called).
182-
remote-config (:remote (config/read-file-configs))
183-
sse-connections* (when (:enabled remote-config)
184-
(atom #{}))
185-
messenger (if sse-connections*
186-
(remote.messenger/->BroadcastMessenger stdio-messenger sse-connections*)
187-
stdio-messenger)
180+
;; Always create SSE connections and BroadcastMessenger so the remote
181+
;; HTTP server can be started later (e.g. when local project config
182+
;; enables it after initialize). Broadcasting to an empty set is a no-op.
183+
sse-connections* (atom #{})
184+
messenger (remote.messenger/->BroadcastMessenger stdio-messenger sse-connections*)
185+
start-remote-server!
186+
(fn [components]
187+
(when-let [rs (remote.server/start! components sse-connections*)]
188+
(reset! remote-server* rs)
189+
(swap! db* assoc
190+
:remote-connect-url (:connect-url rs)
191+
:remote-host (:host rs)
192+
:remote-token (:token rs)
193+
:remote-private-host? (:private-host? rs))))
188194
components {:db* db*
189195
:messenger messenger
190196
:metrics metrics
191-
:server server}]
197+
:server server
198+
:start-remote-server! start-remote-server!}]
192199
(logger/info "[server]" "Starting server...")
193200
(metrics/start! metrics)
194-
(when sse-connections*
195-
(when-let [rs (remote.server/start! components sse-connections*)]
196-
(reset! remote-server* rs)
197-
(swap! db* assoc
198-
:remote-connect-url (:connect-url rs)
199-
:remote-host (:host rs)
200-
:remote-token (:token rs)
201-
:remote-private-host? (:private-host? rs))))
202201
(monitor-server-logs (:log-ch server))
203202
(setup-dev-environment db* components)
204203
(jsonrpc.server/start server components)))

0 commit comments

Comments
 (0)