Class: RailsAiBridge::Tools::GetContext::Resolver
- Inherits:
-
Object
- Object
- RailsAiBridge::Tools::GetContext::Resolver
- Defined in:
- lib/rails_ai_bridge/tools/get_context/resolver.rb
Overview
Resolves model, controller, table, and route keys from tool arguments.
Feature names are inflection-normalized (underscore, singularize/pluralize,
classify, Controller suffix) and matched case-insensitively against
cached snapshot keys. Explicit model / controller win over feature.
Instance Method Summary collapse
-
#call ⇒ Hash
Resolved names, payloads, and error/setup messages.
-
#initialize(model:, controller:, feature:, snapshots:, config:) ⇒ Resolver
constructor
A new instance of Resolver.
Constructor Details
#initialize(model:, controller:, feature:, snapshots:, config:) ⇒ Resolver
Returns a new instance of Resolver.
17 18 19 20 21 22 23 |
# File 'lib/rails_ai_bridge/tools/get_context/resolver.rb', line 17 def initialize(model:, controller:, feature:, snapshots:, config:) @model = model.to_s.strip.presence @controller = controller.to_s.strip.presence @feature = feature.to_s.strip.presence @snapshots = snapshots @config = config end |
Instance Method Details
#call ⇒ Hash
Returns resolved names, payloads, and error/setup messages.
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/rails_ai_bridge/tools/get_context/resolver.rb', line 26 def call return explicit_model_error if explicit_model_blocked? resolved_model = match_model(@model) || match_model(@feature) || infer_model_from_controller(seed_controller) resolved_controller = match_controller(@controller) || match_controller(@feature) || infer_controller_from_model(resolved_model) resolved_model ||= infer_model_from_controller(resolved_controller) domain_blocked = (resolved_model || resolved_controller || @feature || @controller) table_name, table_data = domain_blocked ? [nil, nil] : resolve_table(resolved_model) routes = if domain_blocked || excluded_table?(table_name) {} else matching_routes(resolved_controller, resolved_model, table_name) end { requested_model: @model, requested_controller: @controller, requested_feature: @feature, model_name: resolved_model, model_data: model_payload(resolved_model), table_name: table_name, table_data: table_data, schema_source: schema_source, controller_name: resolved_controller, controller_data: controller_payload(resolved_controller), routes: routes, setup_messages: , error: nothing_resolved_error(resolved_model, resolved_controller, table_name) } end |