class Elelem::Agent

def cleanup

def cleanup
  logger.debug("Cleaning up agent...")
  configuration.cleanup
end

def execute(tool_call)

def execute(tool_call)
  logger.debug("Execute: #{tool_call}")
  configuration.tools.execute(tool_call)
end

def initialize(configuration)

def initialize(configuration)
  @api = configuration.api
  @tui = configuration.tui
  @configuration = configuration
  @model = configuration.model
  @conversation = configuration.conversation
  @logger = configuration.logger
  at_exit { cleanup }
  transition_to(States::Idle.new)
end

def quit

def quit
  logger.debug("Exiting...")
  cleanup
  exit
end

def repl

def repl
  loop do
    current_state.run(self)
  end
end

def transition_to(next_state)

def transition_to(next_state)
  logger.debug("Transition to: #{next_state.class.name}")
  @current_state = next_state
end