Class: RailsAiBridge::Tools::GetContext
- Defined in:
- lib/rails_ai_bridge/tools/get_context.rb,
lib/rails_ai_bridge/tools/get_context/composer.rb,
lib/rails_ai_bridge/tools/get_context/resolver.rb,
lib/rails_ai_bridge/tools/get_context/related_tests.rb
Overview
In-process composite MCP tool: table + model + routes + controller + related tests.
Resolves a single model, controller, or feature name against cached introspector snapshots. Does not perform HTTP or call external providers.
Defined Under Namespace
Classes: Composer, RelatedTests, Resolver
Constant Summary collapse
- MISSING_INPUT_MESSAGE =
Returned when
model,controller, andfeatureare all blank. 'Provide at least one of `model`, `controller`, or `feature`.'
Class Method Summary collapse
-
.app_root ⇒ Pathname, ...
Host application root used for cheap related-test path checks.
-
.call(model: nil, controller: nil, feature: nil, detail: 'summary', _server_context: nil) ⇒ MCP::Tool::Response
Returns a single markdown payload for the resolved model/controller/feature.
Methods inherited from BaseTool
cached_context, cached_section, config, rails_app, reset_cache!, text_response
Class Method Details
.app_root ⇒ Pathname, ...
Host application root used for cheap related-test path checks.
99 100 101 |
# File 'lib/rails_ai_bridge/tools/get_context.rb', line 99 def self.app_root rails_app&.root end |
.call(model: nil, controller: nil, feature: nil, detail: 'summary', _server_context: nil) ⇒ MCP::Tool::Response
Returns a single markdown payload for the resolved model/controller/feature.
53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/rails_ai_bridge/tools/get_context.rb', line 53 def self.call(model: nil, controller: nil, feature: nil, detail: 'summary', _server_context: nil) return text_response(MISSING_INPUT_MESSAGE) if blank_name?(model) && blank_name?(controller) && blank_name?(feature) snapshots = build_snapshots resolution = Resolver.new( model: model, controller: controller, feature: feature, snapshots: snapshots, config: config ).call text_response(render(resolution:, snapshots:, detail: detail.to_s)) end |