Class: RailsAiBridge::Tools::GetStimulus

Inherits:
BaseTool
  • Object
show all
Defined in:
lib/rails_ai_bridge/tools/get_stimulus.rb

Overview

Exposes Stimulus controller metadata through MCP so assistants can inspect Hotwire wiring without reading every JavaScript controller file.

Class Method Summary collapse

Methods inherited from BaseTool

cached_context, cached_section, config, rails_app, reset_cache!, text_response

Class Method Details

.call(controller: nil, detail: 'standard', _server_context: nil) ⇒ MCP::Tool::Response

Returns summarized or controller-specific Stimulus metadata.

Parameters:

  • controller (String, nil) (defaults to: nil)

    specific Stimulus controller name

  • detail (String) (defaults to: 'standard')

    one of summary, standard, or full

  • _server_context (Object, nil) (defaults to: nil)

    MCP server context (unused)

Returns:

  • (MCP::Tool::Response)

    formatted Stimulus controller information



35
36
37
38
39
40
41
42
43
44
# File 'lib/rails_ai_bridge/tools/get_stimulus.rb', line 35

def self.call(controller: nil, detail: 'standard', _server_context: nil)
  data = cached_section(:stimulus)
  return text_response('Stimulus introspection not available. Add :stimulus to introspectors.') unless data
  return text_response("Stimulus introspection failed: #{data[:error]}") if data[:error]

  formatter = ResponseFormatter.new(Array(data[:controllers]), controller: controller, detail: detail)
  return text_response(formatter.controller_not_found_message) if formatter.controller_not_found?

  text_response(formatter.format)
end