Class: Aidp::Harness::OutputFilter
- Inherits:
-
Object
- Object
- Aidp::Harness::OutputFilter
- Defined in:
- lib/aidp/harness/output_filter.rb
Overview
Filters test and linter output to reduce token consumption Uses framework-specific strategies to extract relevant information
Constant Summary collapse
- MODES =
Output modes
{ full: :full, # No filtering (default for first run) failures_only: :failures_only, # Only failure information minimal: :minimal # Minimal failure info + summary }.freeze
Instance Attribute Summary collapse
-
#context_lines ⇒ Object
readonly
Accessors for strategy use.
-
#include_context ⇒ Object
readonly
Accessors for strategy use.
-
#max_lines ⇒ Object
readonly
Accessors for strategy use.
-
#mode ⇒ Object
readonly
Accessors for strategy use.
Instance Method Summary collapse
-
#filter(output, framework: :unknown) ⇒ String
Filter output based on framework and mode.
-
#initialize(config = {}) ⇒ OutputFilter
constructor
A new instance of OutputFilter.
Constructor Details
#initialize(config = {}) ⇒ OutputFilter
Returns a new instance of OutputFilter.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/aidp/harness/output_filter.rb', line 20 def initialize(config = {}) @mode = config[:mode] || :full @include_context = config.fetch(:include_context, true) @context_lines = config.fetch(:context_lines, 3) @max_lines = config.fetch(:max_lines, 500) validate_mode! Aidp.log_debug("output_filter", "initialized", mode: @mode, include_context: @include_context, max_lines: @max_lines) rescue NameError # Logging infrastructure not available in some tests end |
Instance Attribute Details
#context_lines ⇒ Object (readonly)
Accessors for strategy use
83 84 85 |
# File 'lib/aidp/harness/output_filter.rb', line 83 def context_lines @context_lines end |
#include_context ⇒ Object (readonly)
Accessors for strategy use
83 84 85 |
# File 'lib/aidp/harness/output_filter.rb', line 83 def include_context @include_context end |
#max_lines ⇒ Object (readonly)
Accessors for strategy use
83 84 85 |
# File 'lib/aidp/harness/output_filter.rb', line 83 def max_lines @max_lines end |
#mode ⇒ Object (readonly)
Accessors for strategy use
83 84 85 |
# File 'lib/aidp/harness/output_filter.rb', line 83 def mode @mode end |
Instance Method Details
#filter(output, framework: :unknown) ⇒ String
Filter output based on framework and mode
40 41 42 43 44 45 46 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 |
# File 'lib/aidp/harness/output_filter.rb', line 40 def filter(output, framework: :unknown) return output if @mode == :full return "" if output.nil? || output.empty? Aidp.log_debug("output_filter", "filtering_start", framework: framework, input_lines: output.lines.count) strategy = strategy_for_framework(framework) filtered = strategy.filter(output, self) truncated = truncate_if_needed(filtered) Aidp.log_debug("output_filter", "filtering_complete", output_lines: truncated.lines.count, reduction: reduction_stats(output, truncated)) truncated rescue NameError # Logging infrastructure not available return output if @mode == :full return "" if output.nil? || output.empty? strategy = strategy_for_framework(framework) filtered = strategy.filter(output, self) truncate_if_needed(filtered) rescue => e # External failure - graceful degradation begin Aidp.log_error("output_filter", "filtering_failed", framework: framework, mode: @mode, error: e., error_class: e.class.name) rescue NameError # Logging not available end # Return original output as fallback output end |