diff --git a/lib/hermes/server.ex b/lib/hermes/server.ex index 0354815..374efa0 100644 --- a/lib/hermes/server.ex +++ b/lib/hermes/server.ex @@ -467,7 +467,7 @@ defmodule Hermes.Server do # Register with auto-derived name component MyServer.Tools.Calculator - + # Register with custom name component MyServer.Tools.FileManager, name: "files" """ @@ -591,6 +591,7 @@ defmodule Hermes.Server do %Resource{ uri: mod.uri(), name: name, + title: Component.get_title(mod), description: Component.get_description(mod), mime_type: mod.mime_type(), handler: mod @@ -830,7 +831,7 @@ defmodule Hermes.Server do ] model_preferences = %{"costPriority" => 1.0, "speedPriority" => 0.1, "hints" => [%{"name" => "claude"}]} - + :ok = Hermes.Server.send_sampling_request(frame, messages, model_preferences: model_preferences, system_prompt: "You are a helpful assistant", diff --git a/lib/hermes/server/component.ex b/lib/hermes/server/component.ex index 991a6c2..160bfea 100644 --- a/lib/hermes/server/component.ex +++ b/lib/hermes/server/component.ex @@ -164,7 +164,7 @@ defmodule Hermes.Server.Component do # Simple field field :email, {:required, :string}, format: "email", description: "User's email address" field :age, :integer, description: "Age in years" - + # Nested field field :user do field :name, {:required, :string} @@ -315,6 +315,14 @@ defmodule Hermes.Server.Component do end end + def get_title(module) when is_atom(module) do + if function_exported?(module, :__title__, 0) do + module.__title__() + else + "" + end + end + @doc """ Gets the component type (:tool, :prompt, or :resource). diff --git a/lib/hermes/server/transport/stdio.ex b/lib/hermes/server/transport/stdio.ex index 0b794fa..3b72fec 100644 --- a/lib/hermes/server/transport/stdio.ex +++ b/lib/hermes/server/transport/stdio.ex @@ -240,7 +240,7 @@ defmodule Hermes.Server.Transport.STDIO do case Message.decode(data) do {:ok, messages} -> - process_message(messages, state) + Enum.each(messages, &process_message(&1, state)) {:error, reason} -> Logging.transport_event("parse_error", %{reason: reason}, level: :error)