Commit 4bd1a68

mo khan <mo@mokhan.ca>
2026-09-12 04:26:59
fix: adapt to elelem core's Tool/Schema split
Tool#params and Tool#required were removed in favor of a Schema object; read parameters via Tool#to_h instead.
1 parent 2536215
Changed files (2)
lib
elelem
builtins
spec
elelem
lib/elelem/builtins/tools.rb
@@ -8,9 +8,10 @@ module Elelem
       end
 
       def self.to_markdown(tool)
+        parameters = tool.to_h[:function][:parameters]
         lines = ["## #{tool.name}", "", tool.description, "", "### Parameters", ""]
-        tool.params.each do |param, spec|
-          req = tool.required.include?(param.to_s) ? ", required" : ""
+        parameters[:properties].each do |param, spec|
+          req = parameters[:required].include?(param.to_s) ? ", required" : ""
           desc = spec[:description] ? " - #{spec[:description]}" : ""
           lines << "- `#{param}` (#{spec[:type]}#{req})#{desc}"
         end
spec/elelem/builtins/tool_markdown_spec.rb
@@ -4,8 +4,10 @@ RSpec.describe Elelem::Builtins::ToolMarkdown do
   subject(:tool) do
     Elelem::Tool.new("greet",
       description: "Greets someone.\nMore detail.",
-      params: { name: { type: "string", description: "who to greet" } },
-      required: ["name"],
+      schema: Elelem::Schema.new(
+        params: { name: { type: "string", description: "who to greet" } },
+        required: ["name"]
+      ),
       aliases: ["hi"]
     ) { |args| { greeting: "hi #{args["name"]}" } }
   end