yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
chat_tui.h
Go to the documentation of this file.
1#ifndef YAZE_SRC_CLI_TUI_CHAT_TUI_H_
2#define YAZE_SRC_CLI_TUI_CHAT_TUI_H_
3
4#include <atomic>
5#include <chrono>
6#include <future>
7#include <mutex>
8#include <optional>
9#include <thread>
10#include <vector>
11
12#include "ftxui/component/component.hpp"
13#include "ftxui/component/screen_interactive.hpp"
16
18
19namespace yaze {
20
21class Rom;
22
23namespace cli {
24namespace tui {
25
26class ChatTUI {
27 public:
28 explicit ChatTUI(Rom* rom_context = nullptr);
29 ~ChatTUI();
30 void Run();
31 void SetRomContext(Rom* rom_context);
32
33 private:
34 void OnSubmit(const std::string& message);
35 void LaunchAgentPrompt(const std::string& prompt);
36 void CleanupWorkers();
37 void StopSpinner();
39
41
42 // Popup state
43 void ToggleTodoPopup();
44 ftxui::Component CreateTodoPopup();
45 ftxui::Component BuildShortcutPalette();
46 bool IsPopupOpen() const;
48
49 ftxui::ScreenInteractive screen_ = ftxui::ScreenInteractive::Fullscreen();
52 Rom* rom_context_ = nullptr;
53 std::optional<std::string> last_error_;
55 std::string rom_header_;
56
57 std::atomic<bool> agent_busy_{false};
58 std::atomic<bool> spinner_running_{false};
59 std::atomic<int> spinner_index_{0};
60
61 std::vector<std::future<void>> worker_futures_;
62 mutable std::mutex worker_mutex_;
63 std::chrono::steady_clock::time_point last_send_time_{};
65 std::vector<double> latency_history_;
66
67 std::vector<std::string> quick_actions_;
68
69 std::thread spinner_thread_;
70
71 // Popup state
72 bool todo_popup_visible_ = false;
73 ftxui::Component todo_popup_component_;
76 bool todo_manager_ready_ = false;
77};
78
79} // namespace tui
80} // namespace cli
81} // namespace yaze
82
83#endif // YAZE_SRC_CLI_TUI_CHAT_TUI_H_
The Rom class is used to load, save, and modify Rom data.
Definition rom.h:71
Manages TODO lists for z3ed agent task execution.
std::string rom_header_
Definition chat_tui.h:55
void LaunchAgentPrompt(const std::string &prompt)
Definition chat_tui.cc:421
ftxui::Component todo_popup_component_
Definition chat_tui.h:73
std::atomic< bool > agent_busy_
Definition chat_tui.h:57
ftxui::Component shortcut_palette_component_
Definition chat_tui.h:74
ftxui::ScreenInteractive screen_
Definition chat_tui.h:49
agent::ConversationalAgentService agent_service_
Definition chat_tui.h:50
std::chrono::steady_clock::time_point last_send_time_
Definition chat_tui.h:63
std::vector< double > latency_history_
Definition chat_tui.h:65
void OnSubmit(const std::string &message)
Definition chat_tui.cc:354
std::mutex worker_mutex_
Definition chat_tui.h:62
ftxui::Component CreateTodoPopup()
Definition chat_tui.cc:510
std::thread spinner_thread_
Definition chat_tui.h:69
bool IsPopupOpen() const
Definition chat_tui.cc:591
std::vector< std::future< void > > worker_futures_
Definition chat_tui.h:61
AutocompleteEngine autocomplete_engine_
Definition chat_tui.h:54
std::vector< std::string > quick_actions_
Definition chat_tui.h:67
void SetRomContext(Rom *rom_context)
Definition chat_tui.cc:87
std::atomic< bool > spinner_running_
Definition chat_tui.h:58
agent::TodoManager todo_manager_
Definition chat_tui.h:51
std::optional< std::string > last_error_
Definition chat_tui.h:53
agent::ChatMessage::SessionMetrics CurrentMetrics() const
Definition chat_tui.cc:479
double last_response_seconds_
Definition chat_tui.h:64
std::atomic< int > spinner_index_
Definition chat_tui.h:59
ftxui::Component BuildShortcutPalette()
Definition chat_tui.cc:553
Main namespace for the application.