Files
yaze/src/cli/tui/enhanced_chat_component.h
scawful 673201e4fd feat: Introduce Unified Layout with Enhanced Chat and Status Panels
- Added a new unified layout system that integrates chat and status panels for improved user experience.
- Implemented EnhancedChatComponent and EnhancedStatusPanel to manage chat interactions and display system information.
- Updated CMake configuration to include new source files for the unified layout, ensuring proper build setup.
- Refactored existing TUI components to support the new layout structure, enhancing modularity and maintainability.
2025-10-06 14:30:15 -04:00

85 lines
2.4 KiB
C++

#ifndef YAZE_CLI_TUI_ENHANCED_CHAT_COMPONENT_H
#define YAZE_CLI_TUI_ENHANCED_CHAT_COMPONENT_H
#include <ftxui/component/component.hpp>
#include <ftxui/dom/elements.hpp>
#include <memory>
#include <string>
#include <vector>
#include "app/rom.h"
#include "cli/service/agent/conversational_agent_service.h"
#include "cli/util/autocomplete.h"
namespace yaze {
namespace cli {
// Enhanced chat component that integrates with the unified layout
class EnhancedChatComponent {
public:
explicit EnhancedChatComponent(Rom* rom_context = nullptr);
// Component interface
ftxui::Component GetComponent();
void SetRomContext(Rom* rom_context);
// Chat functionality
void SendMessage(const std::string& message);
void ClearHistory();
void ResetConversation();
// State management
bool IsFocused() const { return focused_; }
void SetFocused(bool focused) { focused_ = focused; }
// Configuration
void SetMaxHistoryLines(int lines) { max_history_lines_ = lines; }
int GetMaxHistoryLines() const { return max_history_lines_; }
private:
// Component creation
ftxui::Component CreateInputComponent();
ftxui::Component CreateHistoryComponent();
ftxui::Component CreateChatContainer();
// Event handling
bool HandleInputEvents(const ftxui::Event& event);
bool HandleHistoryEvents(const ftxui::Event& event);
// Message processing
void ProcessMessage(const std::string& message);
void AddMessageToHistory(const std::string& sender, const std::string& message);
void UpdateHistoryDisplay();
// Rendering
ftxui::Element RenderChatMessage(const std::string& sender, const std::string& message);
ftxui::Element RenderInputArea();
ftxui::Element RenderHistoryArea();
// State
Rom* rom_context_;
agent::ConversationalAgentService agent_service_;
AutocompleteEngine autocomplete_engine_;
// UI State
std::string input_message_;
std::vector<std::pair<std::string, std::string>> chat_history_;
int selected_history_index_ = 0;
bool focused_ = false;
int max_history_lines_ = 20;
// Components
ftxui::Component input_component_;
ftxui::Component history_component_;
ftxui::Component chat_container_;
// Event handlers
std::function<bool(const ftxui::Event&)> input_event_handler_;
std::function<bool(const ftxui::Event&)> history_event_handler_;
};
} // namespace cli
} // namespace yaze
#endif // YAZE_CLI_TUI_ENHANCED_CHAT_COMPONENT_H