|
1 | 1 | (ns eca.handlers |
2 | 2 | (:require |
| 3 | + [clojure.string :as string] |
3 | 4 | [eca.config :as config] |
4 | 5 | [eca.db :as db] |
5 | 6 | [eca.features.chat :as f.chat] |
|
8 | 9 | [eca.features.tools.mcp :as f.mcp] |
9 | 10 | [eca.llm-api :as llm-api] |
10 | 11 | [eca.logger :as logger] |
11 | | - [eca.models :as models])) |
| 12 | + [eca.models :as models] |
| 13 | + [eca.shared :as shared])) |
12 | 14 |
|
13 | 15 | (set! *warn-on-reflection* true) |
14 | 16 |
|
15 | 17 | (defn ^:private initialize-models! [db* config] |
16 | 18 | (let [all-models (models/all) |
17 | 19 | eca-models (filter |
18 | | - (fn [[model _config]] |
19 | | - (get-in config [:models model])) |
| 20 | + (fn [[full-model _config]] |
| 21 | + (let [[provider model] (string/split full-model #"/" 2)] |
| 22 | + (get-in config [:providers provider :models model]))) |
20 | 23 | all-models)] |
21 | 24 | (swap! db* update :models merge eca-models) |
22 | 25 | (when-let [custom-providers (seq (:customProviders config))] |
|
48 | 51 | ollama-models)] |
49 | 52 | (swap! db* update :models merge models)))) |
50 | 53 |
|
51 | | -(defn initialize [{:keys [db* config]} params] |
| 54 | +(defn initialize [{:keys [db*]} params] |
52 | 55 | (logger/logging-task |
53 | 56 | :eca/initialize |
54 | | - (swap! db* assoc |
55 | | - :client-info (:client-info params) |
56 | | - :workspace-folders (:workspace-folders params) |
57 | | - :client-capabilities (:capabilities params) |
58 | | - :chat-default-behavior (or (-> params :initialization-options :chat-behavior) (:chat-default-behavior @db*))) |
59 | | - (initialize-models! db* config) |
60 | | - (db/load-db-from-cache! db*) |
61 | | - {:models (sort (keys (:models @db*))) |
62 | | - :chat-default-model (f.chat/default-model @db* config) |
63 | | - :chat-behaviors (:chat-behaviors @db*) |
64 | | - :chat-default-behavior (:chat-default-behavior @db*) |
65 | | - :chat-welcome-message (:welcomeMessage (:chat config))})) |
| 57 | + (reset! config/initialization-config* (shared/map->camel-cased-map (:initialization-options params))) |
| 58 | + (let [config (config/all @db*)] |
| 59 | + (logger/info "--->" config) |
| 60 | + (swap! db* assoc |
| 61 | + :client-info (:client-info params) |
| 62 | + :workspace-folders (:workspace-folders params) |
| 63 | + :client-capabilities (:capabilities params) |
| 64 | + :chat-default-behavior (or (-> params :initialization-options :chat-behavior) (:chat-default-behavior @db*))) |
| 65 | + (initialize-models! db* config) |
| 66 | + (db/load-db-from-cache! db*) |
| 67 | + {:models (sort (keys (:models @db*))) |
| 68 | + :chat-default-model (f.chat/default-model @db* config) |
| 69 | + :chat-behaviors (:chat-behaviors @db*) |
| 70 | + :chat-default-behavior (:chat-default-behavior @db*) |
| 71 | + :chat-welcome-message (:welcomeMessage (:chat config))}))) |
66 | 72 |
|
67 | 73 | (defn initialized [{:keys [db* messenger config]}] |
68 | 74 | (future |
|
0 commit comments