Module: Legion::LLM::Pipeline::Steps::ToolDiscovery

Includes:
Legion::Logging::Helper
Included in:
Executor
Defined in:
lib/legion/llm/pipeline/steps/tool_discovery.rb

Instance Method Summary collapse

Instance Method Details

#step_tool_discoveryObject Also known as: step_mcp_discovery



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/legion/llm/pipeline/steps/tool_discovery.rb', line 12

def step_tool_discovery
  @discovered_tools ||= []
  start_time = Time.now

  discover_registry_tools
  discover_client_tools

  total = @discovered_tools.size
  if total.positive?
    sources = @discovered_tools.filter_map { |t| t.dig(:source, :server) || t.dig(:source, :type) }.uniq
    @enrichments['tool:discovery'] = {
      content:   "#{total} tools from #{sources.length} sources",
      data:      { tool_count: total, sources: sources },
      timestamp: Time.now
    }
  end

  record_tool_discovery_timeline(total, start_time)
rescue StandardError => e
  @warnings << "Tool discovery error: #{e.message}"
  handle_exception(e, level: :warn, operation: 'llm.pipeline.steps.tool_discovery')
  record_tool_discovery_timeline(0)
end