Class: Ace::LLM::Providers::CLI::Atoms::SessionFinders::GeminiSessionFinder
- Inherits:
-
Object
- Object
- Ace::LLM::Providers::CLI::Atoms::SessionFinders::GeminiSessionFinder
- Defined in:
- lib/ace/llm/providers/cli/atoms/session_finders/gemini_session_finder.rb
Overview
Constant Summary collapse
- DEFAULT_BASE =
File.("~/.gemini/tmp").freeze
Class Method Summary collapse
-
.call(working_dir:, prompt:, base_path: DEFAULT_BASE, max_candidates: 5) ⇒ Hash?
{ session_id:, session_path: } or nil.
Class Method Details
.call(working_dir:, prompt:, base_path: DEFAULT_BASE, max_candidates: 5) ⇒ Hash?
Returns { session_id:, session_path: } or nil.
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/ace/llm/providers/cli/atoms/session_finders/gemini_session_finder.rb', line 26 def self.call(working_dir:, prompt:, base_path: DEFAULT_BASE, max_candidates: 5) dir_hash = Digest::SHA256.hexdigest(File.(working_dir)) chats_dir = File.join(base_path, dir_hash, "chats") return nil unless File.directory?(chats_dir) candidates = Dir.glob(File.join(chats_dir, "*.json")) .sort_by { |f| -File.mtime(f).to_f } .first(max_candidates) candidates.each do |path| result = scan_file(path, prompt) return result if result end nil rescue nil end |