Class: RailsAgents::ToolBridgeController

Inherits:
ApplicationController show all
Defined in:
app/controllers/rails_agents/tool_bridge_controller.rb

Constant Summary collapse

RESERVED_SQL_TOOLS =
%w[sql_query query_database].freeze
RESERVED_MONGO_TOOLS =
%w[mongo_query].freeze

Instance Method Summary collapse

Instance Method Details

#createObject



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'app/controllers/rails_agents/tool_bridge_controller.rb', line 15

def create
  return render json: { error: "Unauthorized" }, status: :unauthorized unless authorized_runtime?

  tool_name = params[:tool].to_s
  if RESERVED_SQL_TOOLS.include?(tool_name)
    return render_sql_query
  end
  if RESERVED_MONGO_TOOLS.include?(tool_name)
    return render_mongo_query
  end

  klass = load_agent_class(params[:agent])
  tool = klass&.tool_definitions&.fetch(tool_name.to_sym, nil)
  return render json: { error: "Tool not found" }, status: :not_found unless tool

  arguments = request.request_parameters.presence || {}
  result = tool.call(**arguments.deep_symbolize_keys)
  render json: { ok: true, result: result }
rescue ArgumentError => e
  render json: { error: e.message }, status: :unprocessable_entity
rescue StandardError => e
  Rails.logger.error("[RailsAgents::ToolBridge] #{e.class}: #{e.message}")
  render json: { error: "Tool execution failed" }, status: :internal_server_error
end