Class: RubynCode::Tools::MemorySearch

Inherits:
Base
  • Object
show all
Defined in:
lib/rubyn_code/tools/memory_search.rb

Constant Summary collapse

TOOL_NAME =
'memory_search'
DESCRIPTION =
'Searches project memories using full-text search. ' \
'Returns relevant memories including code patterns, user preferences, ' \
'project conventions, error resolutions, and past decisions.'
PARAMETERS =
{
  query: { type: :string, required: true, description: 'Search query for finding relevant memories' },
  tier: { type: :string, required: false, description: 'Filter by memory tier: short, medium, or long' },
  category: { type: :string, required: false,
              description: 'Filter by category: code_pattern, user_preference, ' \
                           'project_convention, error_resolution, or decision' },
  limit: { type: :integer, required: false, description: 'Maximum number of results to return (default 10)' }
}.freeze
RISK_LEVEL =
:read
REQUIRES_CONFIRMATION =
false

Instance Attribute Summary

Attributes inherited from Base

#project_root

Instance Method Summary collapse

Methods inherited from Base

description, parameters, requires_confirmation?, risk_level, #safe_path, summarize, to_schema, tool_name, #truncate

Constructor Details

#initialize(project_root:, memory_search: nil) ⇒ MemorySearch

Returns a new instance of MemorySearch.

Parameters:

  • project_root (String)
  • memory_search (Memory::Search) (defaults to: nil)

    injected search instance



26
27
28
29
# File 'lib/rubyn_code/tools/memory_search.rb', line 26

def initialize(project_root:, memory_search: nil)
  super(project_root: project_root)
  @memory_search = memory_search
end

Instance Method Details

#execute(query:, tier: nil, category: nil, limit: 10) ⇒ String

Returns formatted search results.

Parameters:

  • query (String)
  • tier (String, nil) (defaults to: nil)
  • category (String, nil) (defaults to: nil)
  • limit (Integer, nil) (defaults to: 10)

Returns:

  • (String)

    formatted search results



36
37
38
39
40
41
42
43
# File 'lib/rubyn_code/tools/memory_search.rb', line 36

def execute(query:, tier: nil, category: nil, limit: 10)
  search = @memory_search || resolve_memory_search
  results = search.search(query, tier: tier, category: category, limit: limit.to_i)

  return "No memories found for query: #{query}" if results.empty?

  format_results(results)
end