Class: Legion::CLI::Chat::Tools::SearchTraces
- Inherits:
-
RubyLLM::Tool
- Object
- RubyLLM::Tool
- Legion::CLI::Chat::Tools::SearchTraces
- 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
-
#execute(query:, person: nil, domain: nil, trace_type: nil, limit: nil) ⇒ Object
rubocop:disable Metrics/ParameterLists.
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.}") if defined?(Legion::Logging) "Error searching traces: #{e.}" end |