feat: add tool resolution concern

This commit is contained in:
Shivam Mishra
2025-07-09 17:21:10 +05:30
parent 5cd6996d5e
commit 735979c834
2 changed files with 38 additions and 0 deletions
@@ -25,6 +25,8 @@
# fk_rails_... (assistant_id => captain_assistants.id)
#
class Captain::Scenario < ApplicationRecord
include AgentToolsResolvable
self.table_name = 'captain_scenarios'
belongs_to :assistant, class_name: 'Captain::Assistant'
@@ -0,0 +1,36 @@
module AgentToolsResolvable
extend ActiveSupport::Concern
class_methods do
def available_agent_tools
@available_agent_tools ||= load_agent_tools
end
def resolve_tool_class(tool_id)
class_name = "Captain::Tools::#{tool_id.classify}Tool"
class_name.safe_constantize
end
private
def load_agent_tools
tools_config = YAML.load_file(Rails.root.join('config/agents/tools.yml'))
tools_config.filter_map do |tool_config|
tool_class = resolve_tool_class(tool_config['id'])
if tool_class
{
id: tool_config['id'],
title: tool_config['title'],
description: tool_config['description'],
icon: tool_config['icon']
}
else
Rails.logger.warn "Tool class not found for ID: #{tool_config['id']}"
nil
end
end
end
end
end