Class: Ace::TestRunner::Organisms::AgentReporter

Inherits:
Object
  • Object
show all
Defined in:
lib/ace/test_runner/organisms/agent_reporter.rb

Overview

Specialized reporter for AI agent consumption (recreating lost functionality) This was originally a 242-line component that provided AI-friendly output

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ AgentReporter

Returns a new instance of AgentReporter.



9
10
11
12
13
# File 'lib/ace/test_runner/organisms/agent_reporter.rb', line 9

def initialize(options = {})
  @verbose = options[:verbose] || false
  @format = options[:format] || "structured"
  @include_raw = options[:include_raw] || false
end

Instance Method Details

#format_for_agent(result) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/ace/test_runner/organisms/agent_reporter.rb', line 27

def format_for_agent(result)
  lines = []

  # Status indicator
  lines << "TEST_EXECUTION_STATUS: #{result.success? ? "SUCCESS" : "FAILURE"}"
  lines << "TEST_METRICS: passed=#{result.passed} failed=#{result.failed} errors=#{result.errors} skipped=#{result.skipped}"

  # Actionable failures
  if result.has_failures?
    lines << "\nACTIONABLE_FAILURES:"
    result.failures_detail.each_with_index do |failure, idx|
      lines << "  FAILURE_#{idx + 1}:"
      lines << "    TYPE: #{failure.type}"
      lines << "    TEST: #{failure.full_test_name}"
      lines << "    FILE: #{failure.file_path}"
      lines << "    LINE: #{failure.line_number}"
      lines << "    FIX_SUGGESTION: #{failure.fix_suggestion || "Review test logic"}"
    end
  end

  # Deprecations that need fixing
  if result.has_deprecations?
    lines << "\nDEPRECATIONS_TO_FIX:"
    result.deprecations.each_with_index do |dep, idx|
      lines << "  DEPRECATION_#{idx + 1}: #{dep}"
    end
  end

  # Next steps
  lines << "\nNEXT_STEPS:"
  generate_next_steps(result).each do |step|
    lines << "  - #{step}"
  end

  lines.join("\n")
end

#generate_agent_report(result, report) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/ace/test_runner/organisms/agent_reporter.rb', line 15

def generate_agent_report(result, report)
  {
    execution_summary: generate_execution_summary(result),
    actionable_items: generate_actionable_items(result),
    context_for_ai: generate_ai_context(result, report),
    suggested_actions: generate_suggested_actions(result),
    structured_failures: generate_structured_failures(result),
    code_quality_insights: generate_quality_insights(result),
    fix_commands: generate_fix_commands(result)
  }
end

#generate_fix_script(result) ⇒ Object



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
# File 'lib/ace/test_runner/organisms/agent_reporter.rb', line 64

def generate_fix_script(result)
  return nil unless result.has_failures? || result.has_deprecations?

  script_lines = ["#!/usr/bin/env ruby", "# Auto-generated fix script", ""]

  # Add deprecation fixes
  if result.has_deprecations?
    script_lines << "# Fix deprecations"
    script_lines << "puts 'Fixing deprecations...'"
    script_lines << "system('ace-test --fix-deprecations')"
    script_lines << ""
  end

  # Add failure fixes based on patterns
  if result.has_failures?
    script_lines << "# Suggested fixes for failures"
    result.failures_detail.each do |failure|
      if failure.fix_suggestion
        script_lines << "# #{failure.full_test_name}"
        script_lines << "# Suggestion: #{failure.fix_suggestion}"
        script_lines << "# TODO: Implement fix for #{failure.location}"
        script_lines << ""
      end
    end
  end

  script_lines.join("\n")
end