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:
parent
280d250983
commit
59747e5400
@ -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?
|
||||
|
||||
|
||||
@ -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?
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user