Commit 078138b

mo khan <mo@mokhan.ca>
2026-01-15 02:10:18
refactor: rename search_engine to web_search
1 parent 2dc443f
Changed files (2)
lib
spec
lib/elelem/toolbox.rb
@@ -42,7 +42,7 @@ module Elelem
       { status: response.code.to_i, body: response.body }
     end
 
-    WEB_SEARCH_TOOL = Tool.build("search_engine", "Search the web using DuckDuckGo. Returns raw API response.", { query: { type: "string", description: "The search query" } }, ["query"]) do |args|
+    WEB_SEARCH_TOOL = Tool.build("web_search", "Search the web using DuckDuckGo. Returns raw API response.", { query: { type: "string", description: "The search query" } }, ["query"]) do |args|
       query = CGI.escape(args["query"])
       url = "https://api.duckduckgo.com/?q=#{query}&format=json&no_html=1"
       client = Net::Hippie::Client.new
@@ -52,8 +52,9 @@ module Elelem
 
     TOOL_ALIASES = {
       "bash" => "exec",
-      "duckduckgo" => "search_engine",
-      "ddg" => "search_engine",
+      "duckduckgo" => "web_search",
+      "ddg" => "web_search",
+      "search_engine" => "web_search",
       "execute" => "exec",
       "get" => "fetch",
       "open" => "read",
spec/elelem/toolbox_spec.rb
@@ -9,7 +9,7 @@ RSpec.describe Elelem::Toolbox do
       tools = subject.tools_for(mode)
 
       tool_names = tools.map { |t| t.dig(:function, :name) }
-      expect(tool_names).to include("grep", "list", "read", "fetch", "search_engine")
+      expect(tool_names).to include("grep", "list", "read", "fetch", "web_search")
       expect(tool_names).not_to include("write", "patch", "exec")
     end
 
@@ -36,7 +36,7 @@ RSpec.describe Elelem::Toolbox do
       tools = subject.tools_for(mode)
 
       tool_names = tools.map { |t| t.dig(:function, :name) }
-      expect(tool_names).to include("grep", "list", "read", "patch", "write", "exec", "fetch", "search_engine")
+      expect(tool_names).to include("grep", "list", "read", "patch", "write", "exec", "fetch", "web_search")
     end
 
     it "returns combined tools for build mode" do
@@ -44,16 +44,16 @@ RSpec.describe Elelem::Toolbox do
       tools = subject.tools_for(mode)
 
       tool_names = tools.map { |t| t.dig(:function, :name) }
-      expect(tool_names).to include("grep", "read", "write", "patch", "fetch", "search_engine")
+      expect(tool_names).to include("grep", "read", "write", "patch", "fetch", "web_search")
       expect(tool_names).not_to include("exec")
     end
   end
 
   describe "web tools" do
-    it "includes fetch and search_engine in read permissions" do
+    it "includes fetch and web_search in read permissions" do
       tools = subject.tools_for([:read])
       names = tools.map { |t| t.dig(:function, :name) }
-      expect(names).to include("fetch", "search_engine")
+      expect(names).to include("fetch", "web_search")
     end
 
     it "resolves web and get aliases to fetch" do
@@ -61,8 +61,8 @@ RSpec.describe Elelem::Toolbox do
       expect(Elelem::Toolbox::TOOL_ALIASES["get"]).to eq("fetch")
     end
 
-    it "resolves duckduckgo alias to search_engine" do
-      expect(Elelem::Toolbox::TOOL_ALIASES["duckduckgo"]).to eq("search_engine")
+    it "resolves duckduckgo alias to web_search" do
+      expect(Elelem::Toolbox::TOOL_ALIASES["duckduckgo"]).to eq("web_search")
     end
   end