Module: Ace::Review::CLI::Commands::FeedbackSubcommands::SessionDiscovery

Included in:
Create, List, Resolve, Show, Skip, Verify
Defined in:
lib/ace/review/cli/commands/feedback/session_discovery.rb

Overview

Shared session discovery logic for feedback CLI commands

This module provides common methods for resolving review sessions from options or finding the latest session in the cache.

Instance Method Summary collapse

Instance Method Details

#find_all_sessionsArray<String>

Find all session directories

Returns:

  • (Array<String>)

    All session directory paths, sorted by mtime (newest first)



55
56
57
58
59
60
61
62
63
64
# File 'lib/ace/review/cli/commands/feedback/session_discovery.rb', line 55

def find_all_sessions
  root = Ace::Support::Fs::Molecules::ProjectRootFinder.find_or_current
  cache_dir = File.join(root, ".ace-local", "review", "sessions")
  cache_dir = File.join(root, ".cache", "ace-review", "sessions") unless Dir.exist?(cache_dir)
  return [] unless Dir.exist?(cache_dir)

  Dir.glob(File.join(cache_dir, "review-*"))
    .select { |p| File.directory?(p) }
    .sort_by { |p| -File.mtime(p).to_i }
end

#find_latest_sessionString?

Find the most recent session directory

Returns:

  • (String, nil)

    Path to latest session or nil



47
48
49
50
# File 'lib/ace/review/cli/commands/feedback/session_discovery.rb', line 47

def find_latest_session
  sessions = find_all_sessions
  sessions.first
end

#resolve_feedback_path(options) ⇒ String?

Resolve feedback path from session context

Priority:

  1. –session flag (explicit session directory)

  2. Most recent session in cache directory (default)

Parameters:

  • options (Hash)

    Command options

Returns:

  • (String, nil)

    Base path for feedback directory



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/ace/review/cli/commands/feedback/session_discovery.rb', line 23

def resolve_feedback_path(options)
  # Check explicit session flag first
  if options[:session]
    session_path = File.expand_path(options[:session])
    return session_path if Dir.exist?(session_path)

    raise Ace::Support::Cli::Error.new("Session not found: #{session_path}")
  end

  # Default: use most recent session
  find_latest_session
end

#resolve_session_dir(options) ⇒ String?

Resolve session directory from options

Parameters:

  • options (Hash)

    Command options

Returns:

  • (String, nil)

    Session directory path



40
41
42
# File 'lib/ace/review/cli/commands/feedback/session_discovery.rb', line 40

def resolve_session_dir(options)
  resolve_feedback_path(options)
end