Class: Ace::Review::CLI::Commands::FeedbackSubcommands::Create

Inherits:
Support::Cli::Command
  • Object
show all
Includes:
SessionDiscovery, Support::Cli::Base
Defined in:
lib/ace/review/cli/commands/feedback/create.rb

Overview

ace-support-cli Command class for feedback create

Creates feedback items from review reports in a session directory. Uses LLM to synthesize multiple review reports into unique, deduplicated feedback items with reviewer attribution.

Instance Method Summary collapse

Methods included from SessionDiscovery

#find_all_sessions, #find_latest_session, #resolve_feedback_path, #resolve_session_dir

Instance Method Details

#call(**options) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/ace/review/cli/commands/feedback/create.rb', line 47

def call(**options)
  # Resolve session directory
  session_dir = resolve_session_dir(options)

  unless session_dir
    raise Ace::Support::Cli::Error.new(
      "No session found. Run a review first or use --session to specify path."
    )
  end

  puts "Using session: #{session_dir}" unless quiet?(options)

  unless Dir.exist?(session_dir)
    raise Ace::Support::Cli::Error.new("Session directory not found: #{session_dir}")
  end

  debug_log("Session directory: #{session_dir}", options)

  # Find review report files
  report_paths = find_review_reports(session_dir)

  if report_paths.empty?
    raise Ace::Support::Cli::Error.new(
      "No review reports found in #{session_dir}. " \
      "Expected files like review-report-*.md or review-*.md"
    )
  end

  puts "Found #{report_paths.length} review report(s)" unless quiet?(options)
  report_paths.each { |p| debug_log("  - #{File.basename(p)}", options) }

  # Create feedback items
  manager = Organisms::FeedbackManager.new
  result = manager.extract_and_save(
    report_paths: report_paths,
    base_path: session_dir,
    model: options[:model],
    session_dir: session_dir
  )

  if result[:success]
    display_success(result, session_dir, options)
  else
    raise Ace::Support::Cli::Error.new(result[:error])
  end
end