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// FTXUI is not available on WASM builds
5#ifndef __EMSCRIPTEN__
6
7#include <atomic>
8#include <chrono>
9#include <future>
10#include <mutex>
11#include <optional>
12#include <thread>
13#include <vector>
14
18#include "ftxui/component/component.hpp"
19#include "ftxui/component/screen_interactive.hpp"
20
21namespace yaze {
22
23class Rom;
24
25namespace cli {
26namespace tui {
27
28class ChatTUI {
29 public:
30 explicit ChatTUI(Rom* rom_context = nullptr);
31 ~ChatTUI();
32 void Run();
33 void SetRomContext(Rom* rom_context);
34
35 private:
36 void OnSubmit(const std::string& message);
37 void LaunchAgentPrompt(const std::string& prompt);
38 void CleanupWorkers();
39 void StopSpinner();
41
43
44 // Popup state
45 void ToggleTodoPopup();
46 ftxui::Component CreateTodoPopup();
47 ftxui::Component BuildShortcutPalette();
48 bool IsPopupOpen() const;
50
51 ftxui::ScreenInteractive screen_ = ftxui::ScreenInteractive::Fullscreen();
54 Rom* rom_context_ = nullptr;
55 std::optional<std::string> last_error_;
57 std::string rom_header_;
58
59 std::atomic<bool> agent_busy_{false};
60 std::atomic<bool> spinner_running_{false};
61 std::atomic<int> spinner_index_{0};
62
63 std::vector<std::future<void>> worker_futures_;
64 mutable std::mutex worker_mutex_;
65 std::chrono::steady_clock::time_point last_send_time_{};
67 std::vector<double> latency_history_;
68
69 std::vector<std::string> quick_actions_;
70
71 std::thread spinner_thread_;
72
73 // Popup state
74 bool todo_popup_visible_ = false;
75 ftxui::Component todo_popup_component_;
78 bool todo_manager_ready_ = false;
79};
80
81} // namespace tui
82} // namespace cli
83} // namespace yaze
84
85#endif // __EMSCRIPTEN__
86
87#endif // YAZE_SRC_CLI_TUI_CHAT_TUI_H_
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Definition rom.h:24
Manages TODO lists for z3ed agent task execution.
std::string rom_header_
Definition chat_tui.h:57
ChatTUI(Rom *rom_context=nullptr)
Definition chat_tui.cc:62
void LaunchAgentPrompt(const std::string &prompt)
Definition chat_tui.cc:432
ftxui::Component todo_popup_component_
Definition chat_tui.h:75
std::atomic< bool > agent_busy_
Definition chat_tui.h:59
ftxui::Component shortcut_palette_component_
Definition chat_tui.h:76
ftxui::ScreenInteractive screen_
Definition chat_tui.h:51
agent::ConversationalAgentService agent_service_
Definition chat_tui.h:52
std::chrono::steady_clock::time_point last_send_time_
Definition chat_tui.h:65
std::vector< double > latency_history_
Definition chat_tui.h:67
void OnSubmit(const std::string &message)
Definition chat_tui.cc:369
std::mutex worker_mutex_
Definition chat_tui.h:64
ftxui::Component CreateTodoPopup()
Definition chat_tui.cc:522
std::thread spinner_thread_
Definition chat_tui.h:71
bool IsPopupOpen() const
Definition chat_tui.cc:600
std::vector< std::future< void > > worker_futures_
Definition chat_tui.h:63
AutocompleteEngine autocomplete_engine_
Definition chat_tui.h:56
std::vector< std::string > quick_actions_
Definition chat_tui.h:69
void SetRomContext(Rom *rom_context)
Definition chat_tui.cc:88
std::atomic< bool > spinner_running_
Definition chat_tui.h:60
agent::TodoManager todo_manager_
Definition chat_tui.h:53
std::optional< std::string > last_error_
Definition chat_tui.h:55
agent::ChatMessage::SessionMetrics CurrentMetrics() const
Definition chat_tui.cc:491
double last_response_seconds_
Definition chat_tui.h:66
std::atomic< int > spinner_index_
Definition chat_tui.h:61
ftxui::Component BuildShortcutPalette()
Definition chat_tui.cc:568