|
259 | 259 | (fn [arguments]
|
260 | 260 | (logger/trace
|
261 | 261 | (-> arguments
|
262 |
| - (merge |
263 |
| - (db/parameter-values (:name params)) |
264 |
| - (select-keys (-> @db* :servers (get server-id)) [:roots])) |
| 262 | + (merge |
| 263 | + (db/parameter-values (:name params)) |
| 264 | + (select-keys (-> @db* :servers (get server-id)) [:roots])) |
265 | 265 | (json/generate-string)))))
|
266 | 266 | :id "1"}])
|
267 | 267 | (async/reduce conj [])
|
|
307 | 307 | (when (= f "registry.yaml")
|
308 | 308 | (try
|
309 | 309 | (db/add-refs (db/registry-refs registry))
|
310 |
| - (doseq [producer @jsonrpc.state/producers] |
| 310 | + (doseq [producer (vals @jsonrpc.state/producers)] |
311 | 311 | (try
|
312 | 312 | (producer/publish-tool-list-changed producer {})
|
313 | 313 | (producer/publish-prompt-list-changed producer {})
|
|
317 | 317 | (when (string/ends-with? f ".md")
|
318 | 318 | (try
|
319 | 319 | (db/update-prompt opts (string/replace f #"\.md" "") (slurp (str "/prompts/" f)))
|
320 |
| - (doseq [producer @jsonrpc.state/producers] |
| 320 | + (doseq [producer (vals @jsonrpc.state/producers)] |
321 | 321 | (try
|
322 | 322 | (producer/publish-tool-list-changed producer {})
|
323 | 323 | (producer/publish-prompt-list-changed producer {})
|
|
375 | 375 | :trace-level trace-level
|
376 | 376 | :keyword-function keyword
|
377 | 377 | :server-context-factory
|
378 |
| - (fn [server] |
| 378 | + (fn [server state-id] |
379 | 379 | (let [producer (producer/->McpProducer server db*)]
|
380 |
| - (swap! jsonrpc.state/producers conj producer) |
| 380 | + (swap! jsonrpc.state/producers assoc state-id producer) |
381 | 381 | {:db* db*
|
382 | 382 | :logger timbre-logger
|
383 | 383 | :producer producer
|
|
399 | 399 | :out System/out}))]
|
400 | 400 | (logger/info "Starting server...")
|
401 | 401 | ;; only on lsp.server/start will the stdio channels start being used
|
402 |
| - (let [{:keys [producer] :as context} |
403 |
| - (assoc |
404 |
| - ((:server-context-factory server-opts) server) |
405 |
| - :server-id (swap! jsonrpc.state/server-counter inc))] |
| 402 | + (let [server-id (swap! jsonrpc.state/server-counter inc) |
| 403 | + {:keys [producer] :as context} |
| 404 | + ((:server-context-factory server-opts) server server-id)] |
406 | 405 | [producer (lsp.server/start server context)]))))
|
407 | 406 |
|
0 commit comments