fix(captain/mcp): tools do Construtor — typo _context: → context:

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) <noreply@anthropic.com>
This commit is contained in:
Rodribm10 2026-05-02 11:41:23 -03:00
parent 280d250983
commit 59747e5400
3 changed files with 3 additions and 3 deletions

View File

@ -31,7 +31,7 @@ class Captain::Mcp::Tools::GetAssistantFaqsTool < Captain::Mcp::Tools::BaseTool
end end
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']) assistant = Captain::Assistant.find_by(id: args['assistant_id'])
return error_response("Assistente #{args['assistant_id']} não encontrado.") if assistant.blank? return error_response("Assistente #{args['assistant_id']} não encontrado.") if assistant.blank?

View File

@ -36,7 +36,7 @@ class Captain::Mcp::Tools::GetAssistantPricingTool < Captain::Mcp::Tools::BaseTo
end end
end end
def call(args, _context:) def call(args, context:) # rubocop:disable Lint/UnusedMethodArgument
assistant = Captain::Assistant.find_by(id: args['assistant_id']) assistant = Captain::Assistant.find_by(id: args['assistant_id'])
return error_response("Assistente #{args['assistant_id']} não encontrado.") if assistant.blank? return error_response("Assistente #{args['assistant_id']} não encontrado.") if assistant.blank?

View File

@ -44,7 +44,7 @@ class Captain::Mcp::Tools::SaveAgentSpecTool < Captain::Mcp::Tools::BaseTool
end end
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('_') 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 return error_response('slug inválido (use lowercase, snake_case, só letras/números/underscore).') if slug.blank? || slug.length < 3