From 59747e5400045dc9f2a571700b208ca90e8c26df Mon Sep 17 00:00:00 2001 From: Rodribm10 Date: Sat, 2 May 2026 11:41:23 -0300 Subject: [PATCH] =?UTF-8?q?fix(captain/mcp):=20tools=20do=20Construtor=20?= =?UTF-8?q?=E2=80=94=20typo=20=5Fcontext:=20=E2=86=92=20context:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tool registry chama tool.call(args, context: foo) mas as 3 tools read-only do Construtor (get_assistant_faqs, get_assistant_pricing, save_agent_spec) estavam declaradas como def call(args, _context:), com underscore. No Ruby isso muda o nome do parâmetro keyword — ArgumentError: 'missing keyword: :_context' quando o Construtor tentava copiar FAQs/ pricing de um assistant existente. Corrigido pra context: (sem underscore) com rubocop disable de Lint/UnusedMethodArgument já que essas tools não usam o context. Hot-patched via docker cp + Puma USR1 antes do deploy pro Rodrigo seguir testando o Construtor sem esperar build. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../app/services/captain/mcp/tools/get_assistant_faqs_tool.rb | 2 +- .../services/captain/mcp/tools/get_assistant_pricing_tool.rb | 2 +- .../app/services/captain/mcp/tools/save_agent_spec_tool.rb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/enterprise/app/services/captain/mcp/tools/get_assistant_faqs_tool.rb b/enterprise/app/services/captain/mcp/tools/get_assistant_faqs_tool.rb index d7b45f448..552a63f11 100644 --- a/enterprise/app/services/captain/mcp/tools/get_assistant_faqs_tool.rb +++ b/enterprise/app/services/captain/mcp/tools/get_assistant_faqs_tool.rb @@ -31,7 +31,7 @@ class Captain::Mcp::Tools::GetAssistantFaqsTool < Captain::Mcp::Tools::BaseTool end end - def call(args, _context:) # rubocop:disable Metrics/AbcSize + def call(args, context:) # rubocop:disable Metrics/AbcSize, Lint/UnusedMethodArgument assistant = Captain::Assistant.find_by(id: args['assistant_id']) return error_response("Assistente #{args['assistant_id']} não encontrado.") if assistant.blank? diff --git a/enterprise/app/services/captain/mcp/tools/get_assistant_pricing_tool.rb b/enterprise/app/services/captain/mcp/tools/get_assistant_pricing_tool.rb index 3b8e7ffb4..1aed0c1d8 100644 --- a/enterprise/app/services/captain/mcp/tools/get_assistant_pricing_tool.rb +++ b/enterprise/app/services/captain/mcp/tools/get_assistant_pricing_tool.rb @@ -36,7 +36,7 @@ class Captain::Mcp::Tools::GetAssistantPricingTool < Captain::Mcp::Tools::BaseTo end end - def call(args, _context:) + def call(args, context:) # rubocop:disable Lint/UnusedMethodArgument assistant = Captain::Assistant.find_by(id: args['assistant_id']) return error_response("Assistente #{args['assistant_id']} não encontrado.") if assistant.blank? diff --git a/enterprise/app/services/captain/mcp/tools/save_agent_spec_tool.rb b/enterprise/app/services/captain/mcp/tools/save_agent_spec_tool.rb index 5a84b2ed2..05b9d34e0 100644 --- a/enterprise/app/services/captain/mcp/tools/save_agent_spec_tool.rb +++ b/enterprise/app/services/captain/mcp/tools/save_agent_spec_tool.rb @@ -44,7 +44,7 @@ class Captain::Mcp::Tools::SaveAgentSpecTool < Captain::Mcp::Tools::BaseTool end end - def call(args, _context:) # rubocop:disable Metrics/AbcSize + def call(args, context:) # rubocop:disable Metrics/AbcSize, Lint/UnusedMethodArgument slug = args['slug'].to_s.strip.downcase.gsub(/[^a-z0-9_]/, '_').squeeze('_') return error_response('slug inválido (use lowercase, snake_case, só letras/números/underscore).') if slug.blank? || slug.length < 3