From 8cf9383fada882c1f830f899ed5cccdc2baf881e Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 11 Feb 2026 16:34:25 +1100 Subject: [PATCH] DEV: gracefully handle missing parameters (#37705) Avoid a 500 error when params are missing --- .../controllers/discourse_ai/admin/ai_tools_controller.rb | 2 +- .../spec/requests/admin/ai_tools_controller_spec.rb | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/plugins/discourse-ai/app/controllers/discourse_ai/admin/ai_tools_controller.rb b/plugins/discourse-ai/app/controllers/discourse_ai/admin/ai_tools_controller.rb index 47d7c55e4a1..4e2e5487122 100644 --- a/plugins/discourse-ai/app/controllers/discourse_ai/admin/ai_tools_controller.rb +++ b/plugins/discourse-ai/app/controllers/discourse_ai/admin/ai_tools_controller.rb @@ -101,7 +101,7 @@ module DiscourseAi def test @ai_tool.assign_attributes(ai_tool_params) if params[:ai_tool] - parameters = params[:parameters].to_unsafe_h + parameters = params[:parameters]&.to_unsafe_h || {} # we need an llm so we have a tokenizer # but will do without if none is available diff --git a/plugins/discourse-ai/spec/requests/admin/ai_tools_controller_spec.rb b/plugins/discourse-ai/spec/requests/admin/ai_tools_controller_spec.rb index 618435c235a..9c81438517e 100644 --- a/plugins/discourse-ai/spec/requests/admin/ai_tools_controller_spec.rb +++ b/plugins/discourse-ai/spec/requests/admin/ai_tools_controller_spec.rb @@ -385,6 +385,13 @@ RSpec.describe DiscourseAi::Admin::AiToolsController do expect(response.status).to eq(404) end + it "handles missing parameters gracefully" do + post "/admin/plugins/discourse-ai/ai-tools/#{ai_tool.id}/test.json", params: {} + + expect(response.status).to eq(200) + expect(response.parsed_body["output"]).to eq({}) + end + it "handles exceptions during tool execution" do ai_tool.update!(script: "function invoke(params) { throw new Error('Test error'); }")