|
117 | 117 | (logger/info "prompts/get " name) |
118 | 118 | (let [{:keys [prompt-function description] :as m} |
119 | 119 | (get |
120 | | - (->> @db* |
121 | | - :mcp.prompts/registry |
122 | | - vals |
123 | | - (mapcat :mcp/prompt-registry) |
124 | | - (into {})) |
125 | | - name)] |
| 120 | + (->> @db* |
| 121 | + :mcp.prompts/registry |
| 122 | + vals |
| 123 | + (mapcat :mcp/prompt-registry) |
| 124 | + (into {})) |
| 125 | + name)] |
126 | 126 | {:description description |
127 | 127 | :messages (prompt-function (or arguments {}))})) |
128 | 128 |
|
|
377 | 377 | :server server}] |
378 | 378 | (swap! db* merge {:log-path log-path} (dissoc opts :in)) |
379 | 379 | ;; register static prompts |
| 380 | + (doseq [[s content] (->> (fs/list-dir "/Users/slim/docker/labs-ai-tools-for-devs/prompts") |
| 381 | + (filter (fn [f] (= "md" (fs/extension f)))) |
| 382 | + (map (fn [f] [(string/replace (fs/file-name (fs/file f)) #"\.md" "") (slurp (fs/file f))])))] |
| 383 | + (db/update-prompt opts s content)) |
380 | 384 | (db/add-refs |
381 | 385 | (concat |
382 | 386 | (->> (:register opts) |
|
392 | 396 | :volumes ["docker-prompts:/prompts"] |
393 | 397 | :command ["-e" "create" "-e" "modify" "-e" "delete" "-q" "-m" "/prompts"]} |
394 | 398 | (fn [line] |
395 | | - (logger/info "registry changed" line) |
| 399 | + (logger/info "change event" line) |
396 | 400 | (let [[_dir _event f] (string/split line #"\s+")] |
397 | 401 | (when (= f "registry.yaml") |
398 | 402 | (try |
399 | 403 | (db/add-refs (logger/trace (into [] (db/registry-refs registry)))) |
400 | 404 | (producer/publish-tool-list-changed producer {}) |
401 | 405 | (producer/publish-prompt-list-changed producer {}) |
402 | 406 | (catch Throwable t |
403 | | - (logger/error t "unable to parse registry.yaml")))))))] |
| 407 | + (logger/error t "unable to parse registry.yaml")))) |
| 408 | + (when (string/ends-with? f ".md") |
| 409 | + (try |
| 410 | + (db/update-prompt opts (string/replace f #"\.md" "") (slurp (str "/prompts/" f))) |
| 411 | + (producer/publish-tool-list-changed producer {}) |
| 412 | + (producer/publish-prompt-list-changed producer {}) |
| 413 | + (catch Throwable t |
| 414 | + (logger/error t "unable to parse " f)))))))] |
404 | 415 | (shutdown/schedule-container-shutdown |
405 | 416 | (fn [] |
406 | 417 | (logger/info "inotifywait shutting down") |
|
0 commit comments