Class: AIA::Session
- Inherits:
-
Object
- Object
- AIA::Session
- Defined in:
- lib/aia/session.rb
Constant Summary collapse
- KW_HISTORY_MAX =
Maximum number of history entries per keyword
5- TERSE_PROMPT =
"\nKeep your response short and to the point.\n"
Instance Method Summary collapse
-
#initialize(prompt_handler) ⇒ Session
constructor
A new instance of Session.
- #initialize_components ⇒ Object
- #setup_output_file ⇒ Object
- #setup_prompt_and_history_manager ⇒ Object
-
#start ⇒ Object
Starts the session, processing all prompts in the pipeline and then optionally starting an interactive chat session.
Constructor Details
#initialize(prompt_handler) ⇒ Session
Returns a new instance of Session.
22 23 24 25 26 27 28 29 30 |
# File 'lib/aia/session.rb', line 22 def initialize(prompt_handler) @prompt_handler = prompt_handler @chat_prompt_id = nil @include_context_flag = true setup_prompt_and_history_manager initialize_components setup_output_file end |
Instance Method Details
#initialize_components ⇒ Object
46 47 48 49 50 51 52 53 |
# File 'lib/aia/session.rb', line 46 def initialize_components # RubyLLM's Chat instances maintain conversation history internally # via @messages array. No separate context manager needed. # Checkpoint/restore directives access Chat.@messages directly via AIA.client.chats @ui_presenter = UIPresenter.new @directive_processor = DirectiveProcessor.new @chat_processor = ChatProcessorService.new(@ui_presenter, @directive_processor) end |
#setup_output_file ⇒ Object
55 56 57 58 59 |
# File 'lib/aia/session.rb', line 55 def setup_output_file if AIA.config.out_file && !AIA.config.out_file.nil? && !AIA.append? && File.exist?(AIA.config.out_file) File.open(AIA.config.out_file, "w") { } # Truncate the file end end |
#setup_prompt_and_history_manager ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/aia/session.rb', line 32 def setup_prompt_and_history_manager # Special handling for chat mode with context files but no prompt ID if AIA.chat? && (AIA.config.prompt_id.nil? || AIA.config.prompt_id.empty?) && AIA.config.context_files && !AIA.config.context_files.empty? prompt_instance = nil @history_manager = nil elsif AIA.chat? && (AIA.config.prompt_id.nil? || AIA.config.prompt_id.empty?) prompt_instance = nil @history_manager = nil else prompt_instance = @prompt_handler.get_prompt(AIA.config.prompt_id) @history_manager = HistoryManager.new(prompt: prompt_instance) end end |
#start ⇒ Object
Starts the session, processing all prompts in the pipeline and then optionally starting an interactive chat session.
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/aia/session.rb', line 63 def start # Handle special chat-only cases first if should_start_chat_immediately? AIA::Utility.robot start_chat return end # Process all prompts in the pipeline process_all_prompts # Start chat mode after all prompts are processed if AIA.chat? AIA::Utility.robot @ui_presenter.display_separator start_chat(skip_context_files: true) end end |