Class: Legion::CLI::Chat::Tools::SearchTraces

Inherits:
RubyLLM::Tool
  • Object
show all
Defined in:
lib/legion/cli/chat/tools/search_traces.rb

Constant Summary collapse

STRUCTURED_FIELDS =
[
  ['Person', 'displayName', :displayName, 'peer', :peer],
  ['Summary', 'summary', :summary],
  ['Subject', 'subject', :subject],
  ['Team', 'team', :team],
  ['Job', 'jobTitle', :jobTitle]
].freeze

Instance Method Summary collapse

Instance Method Details

#execute(query:, person: nil, domain: nil, trace_type: nil, limit: nil) ⇒ Object

rubocop:disable Metrics/ParameterLists



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/legion/cli/chat/tools/search_traces.rb', line 34

def execute(query:, person: nil, domain: nil, trace_type: nil, limit: nil, **) # rubocop:disable Metrics/ParameterLists
  return 'Memory trace system not available (lex-agentic-memory not loaded).' unless trace_store_available?

  limit = (limit || 20).clamp(1, 50)
  traces = collect_traces(person: person, domain: domain, trace_type: trace_type, limit: limit * 3)
  return 'No memory traces found matching those filters.' if traces.empty?

  ranked = rank_by_query(traces: traces, query: query)
  results = ranked.first(limit)
  return 'No traces matched your query.' if results.empty?

  format_results(results)
rescue StandardError => e
  Legion::Logging.warn("SearchTraces#execute failed: #{e.message}") if defined?(Legion::Logging)
  "Error searching traces: #{e.message}"
end