Class: RailsMcpCodeSearch::Tools::ReindexTool

Inherits:
BaseTool
  • Object
show all
Defined in:
lib/rails_mcp_code_search/tools/reindex_tool.rb

Class Method Summary collapse

Class Method Details

.call(server_context:, full: nil) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/rails_mcp_code_search/tools/reindex_tool.rb', line 22

def self.call(server_context:, full: nil)
  runtime = runtime_for(server_context:)
  full = full == true

  if full
    runtime.worker.enqueue(:full_index)
    runtime.worker.increment_reindex_count
    estimated = runtime.indexer.discover_files.size rescue 0

    text_response({
      status: "reindex_started",
      mode: "full",
      estimated_files: estimated
    })
  else
    changed = runtime.indexer.changed_files
    if changed.empty?
      text_response({ status: "no_changes", mode: "incremental", changed_files: 0 })
    else
      runtime.worker.enqueue(:index_files, payload: changed)
      runtime.worker.increment_reindex_count
      text_response({ status: "reindex_started", mode: "incremental", changed_files: changed.size })
    end
  end
rescue => e
  error_response(error: "reindex_error", message: e.message, recoverable: true)
end