Class: RubyCoded::Tools::Registry

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_coded/tools/registry.rb

Overview

Builds and manages the set of tools available to the LLM in agentic mode.

Constant Summary collapse

READONLY_TOOL_CLASSES =
[
  ReadFileTool,
  ListDirectoryTool
].freeze
TOOL_CLASSES =
[
  *READONLY_TOOL_CLASSES,
  WriteFileTool,
  EditFileTool,
  CreateDirectoryTool,
  DeletePathTool,
  RunCommandTool
].freeze

Instance Method Summary collapse

Constructor Details

#initialize(project_root:) ⇒ Registry

Returns a new instance of Registry.



29
30
31
# File 'lib/ruby_coded/tools/registry.rb', line 29

def initialize(project_root:)
  @project_root = project_root
end

Instance Method Details

#build_readonly_toolsObject



37
38
39
# File 'lib/ruby_coded/tools/registry.rb', line 37

def build_readonly_tools
  @build_readonly_tools ||= READONLY_TOOL_CLASSES.map { |klass| klass.new(project_root: @project_root) }
end

#build_toolsObject



33
34
35
# File 'lib/ruby_coded/tools/registry.rb', line 33

def build_tools
  @build_tools ||= TOOL_CLASSES.map { |klass| klass.new(project_root: @project_root) }
end

#risk_level_for(tool_call_name) ⇒ Object



46
47
48
49
# File 'lib/ruby_coded/tools/registry.rb', line 46

def risk_level_for(tool_call_name)
  klass = find_tool_class(tool_call_name)
  klass&.risk_level || BaseTool::DANGEROUS_RISK
end

#safe_tool?(tool_call_name) ⇒ Boolean

Returns:

  • (Boolean)


41
42
43
44
# File 'lib/ruby_coded/tools/registry.rb', line 41

def safe_tool?(tool_call_name)
  klass = find_tool_class(tool_call_name)
  klass && klass.risk_level == BaseTool::SAFE_RISK
end