Module: AIA

Defined in:
lib/aia.rb,
lib/aia/config.rb,
lib/aia/errors.rb,
lib/aia/logger.rb,
lib/aia/session.rb,
lib/aia/utility.rb,
lib/aia/version.rb,
lib/aia/chat_loop.rb,
lib/aia/directive.rb,
lib/aia/skill_utils.rb,
lib/aia/ui_presenter.rb,
lib/aia/prompt_handler.rb,
lib/aia/history_manager.rb,
lib/aia/input_collector.rb,
lib/aia/prompt_pipeline.rb,
lib/aia/config/validator.rb,
lib/aia/ruby_llm_adapter.rb,
lib/aia/config/cli_parser.rb,
lib/aia/config/mcp_parser.rb,
lib/aia/config/model_spec.rb,
lib/aia/adapter/tool_filter.rb,
lib/aia/adapter/tool_loader.rb,
lib/aia/directive_processor.rb,
lib/aia/adapter/error_handler.rb,
lib/aia/adapter/gem_activator.rb,
lib/aia/adapter/mcp_connector.rb,
lib/aia/adapter/chat_execution.rb,
lib/aia/adapter/model_registry.rb,
lib/aia/chat_processor_service.rb,
lib/aia/adapter/multi_model_chat.rb,
lib/aia/adapter/modality_handlers.rb,
lib/aia/directives/model_directives.rb,
lib/aia/adapter/provider_configurator.rb,
lib/aia/directives/context_directives.rb,
lib/aia/directives/utility_directives.rb,
lib/aia/directives/execution_directives.rb,
lib/aia/directives/web_and_file_directives.rb,
lib/aia/directives/configuration_directives.rb

Overview

lib/aia/directives/configuration_directives.rb

Defined Under Namespace

Modules: Adapter, CLIParser, ConfigValidator, LoggerManager, McpParser, SkillUtils Classes: AdapterError, ChatLoop, ChatProcessorService, Config, ConfigurationDirectives, ConfigurationError, ContextDirectives, Directive, DirectiveError, DirectiveProcessor, Error, ExecutionDirectives, Fzf, HistoryManager, InputCollector, MCPError, ModelDirectives, ModelSpec, PromptError, PromptHandler, PromptPipeline, RubyLLMAdapter, Session, ToolError, UIPresenter, Utility, UtilityDirectives, WebAndFileDirectives

Constant Summary collapse

ConfigSection =

Backward compatibility alias — existing code and tests reference AIA::ConfigSection

MywayConfig::ConfigSection
VERSION =

The VERSION constant defines the current version of the AIA application, which is read from the .version file in the project root.

File.read(File.join(File.dirname(__FILE__), '..', '..', '.version')).strip

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.clientObject

Returns the value of attribute client.



62
63
64
# File 'lib/aia.rb', line 62

def client
  @client
end

.configObject

Returns the value of attribute config.



62
63
64
# File 'lib/aia.rb', line 62

def config
  @config
end

Class Method Details

.append?Boolean

Returns:

  • (Boolean)


102
103
104
# File 'lib/aia.rb', line 102

def append?
  @config&.output&.append == true
end

.bad_file?(filename) ⇒ Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/aia.rb', line 71

def bad_file?(filename)
  !good_file?(filename)
end

.chat?Boolean

Convenience flag accessors (delegate to config.flags section)

Returns:

  • (Boolean)


77
78
79
# File 'lib/aia.rb', line 77

def chat?
  @config&.flags&.chat == true
end

.debug?Boolean

Returns:

  • (Boolean)


82
83
84
# File 'lib/aia.rb', line 82

def debug?
  @config&.flags&.debug == true
end

.fuzzy?Boolean

Returns:

  • (Boolean)


92
93
94
# File 'lib/aia.rb', line 92

def fuzzy?
  @config&.flags&.fuzzy == true
end

.good_file?(filename) ⇒ Boolean

Returns:

  • (Boolean)


64
65
66
67
68
# File 'lib/aia.rb', line 64

def good_file?(filename)
  File.exist?(filename) &&
    File.readable?(filename) &&
    !File.directory?(filename)
end

.runObject



107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# File 'lib/aia.rb', line 107

def run
  # Parse CLI arguments
  cli_overrides = CLIParser.parse

  # Create config with CLI overrides
  @config = Config.setup(cli_overrides)

  # Validate and tailor configuration (handles --dump early exit)
  ConfigValidator.tailor(@config)

  # Load Fzf if fuzzy search is enabled and fzf is installed
  if @config.flags.fuzzy
    begin
      if system('which fzf >/dev/null 2>&1')
        require_relative 'aia/fzf'
      else
        warn 'Warning: Fuzzy search enabled but fzf not found. Install fzf for enhanced search capabilities.'
      end
    rescue StandardError => e
      warn "Warning: Failed to load fzf: #{e.message}"
    end
  end

  prompt_handler = PromptHandler.new

  @client = RubyLLMAdapter.new

  # There are two kinds of sessions: batch and chat
  # A chat session is started when the --chat CLI option is used
  # BUT its also possible to start a chat session with an initial prompt AND
  # within that initial prompt there can be a workflow (aka pipeline)
  # defined.  If that is the case, then the chat session will not start
  # until the initial prompt has completed its workflow.

  session = Session.new(prompt_handler)
  session.start
end

.speak?Boolean

Returns:

  • (Boolean)


97
98
99
# File 'lib/aia.rb', line 97

def speak?
  @config&.flags&.speak == true
end

.verbose?Boolean

Returns:

  • (Boolean)


87
88
89
# File 'lib/aia.rb', line 87

def verbose?
  @config&.flags&.verbose == true
end