Module: Aidp::MessageDisplay

Overview

Mixin providing a consistent display_message helper across classes. Usage:

include Aidp::MessageDisplay
display_message("Hello", type: :success)

Supports color types: :error, :success, :warning, :info, :highlight, :muted

Quiet mode:

When quiet mode is enabled (via CLI --quiet flag or setting quiet=true on instance),
only :error, :warning, and :success messages are displayed. Info, highlight, and muted
messages are suppressed to reduce output noise.

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

COLOR_MAP =
{
  error: :red,
  success: :green,
  warning: :yellow,
  warn: :yellow,
  info: :blue,
  highlight: :cyan,
  muted: :bright_black
}.freeze
CRITICAL_TYPES =

Message types that are always shown even in quiet mode

i[error warning warn success].freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



30
31
32
# File 'lib/aidp/message_display.rb', line 30

def self.included(base)
  base.extend(ClassMethods)
end

Instance Method Details

#display_message(message, type: :info) ⇒ Object

Instance helper for displaying a colored message via TTY::Prompt



45
46
47
48
49
50
51
52
53
54
55
# File 'lib/aidp/message_display.rb', line 45

def display_message(message, type: :info)
  # In quiet mode, suppress non-critical messages
  return if quiet_mode? && !CRITICAL_TYPES.include?(type)

  # Ensure message is UTF-8 encoded to handle emoji and special characters
  message_str = message.to_s
  message_str = message_str.force_encoding("UTF-8") if message_str.encoding.name == "ASCII-8BIT"
  message_str = message_str.encode("UTF-8", invalid: :replace, undef: :replace)
  prompt = message_display_prompt
  prompt.say(message_str, color: COLOR_MAP.fetch(type, :white))
end

#message_display_promptObject

Provide a memoized prompt per including instance (if it defines @prompt)



58
59
60
61
62
63
64
# File 'lib/aidp/message_display.rb', line 58

def message_display_prompt
  if instance_variable_defined?(:@prompt) && @prompt
    @prompt
  else
    @__message_display_prompt ||= TTY::Prompt.new
  end
end

#quiet_mode?Boolean

Check if quiet mode is enabled Priority: instance @quiet variable > CLI.last_options



36
37
38
39
40
41
42
# File 'lib/aidp/message_display.rb', line 36

def quiet_mode?
  return @quiet if instance_variable_defined?(:@quiet) && !@quiet.nil?

  Aidp::CLI.last_options&.dig(:quiet) || false
rescue
  false
end