3#if defined(YAZE_BUILD_AGENT_UI)
17 ProposalDrawer* proposal_drawer,
18 RightPanelManager* right_panel_manager,
19 PanelManager* panel_manager) {
20 toast_manager_ = toast_manager;
21 right_panel_manager_ = right_panel_manager;
24 session_manager_.CreateSession(
"Agent 1");
28 EditorDependencies deps;
29 deps.panel_manager = panel_manager;
30 deps.toast_manager = toast_manager;
31 agent_editor_.SetDependencies(deps);
35 agent_editor_.Initialize();
36 agent_editor_.InitializeWithDependencies(toast_manager, proposal_drawer,
40 if (right_panel_manager_) {
41 right_panel_manager_->SetAgentChat(agent_editor_.GetAgentChat());
42 right_panel_manager_->SetProposalDrawer(proposal_drawer);
43 right_panel_manager_->SetToastManager(toast_manager);
48 InitializeKnowledge();
51 agent_editor_.SetKnowledgePanelCallback([
this, toast_manager]() {
52 AgentKnowledgePanel::Callbacks callbacks;
53 callbacks.set_preference = [
this](
const std::string&
key,
54 const std::string& value) {
55 if (knowledge_initialized_) {
56 learned_knowledge_.SetPreference(key, value);
57 learned_knowledge_.SaveAll();
58 SyncKnowledgeToContext();
61 callbacks.remove_preference = [
this](
const std::string&
key) {
62 if (knowledge_initialized_) {
63 learned_knowledge_.RemovePreference(key);
64 learned_knowledge_.SaveAll();
65 SyncKnowledgeToContext();
68 callbacks.clear_all_knowledge = [
this]() {
69 if (knowledge_initialized_) {
70 learned_knowledge_.ClearAll();
71 SyncKnowledgeToContext();
74 callbacks.export_knowledge = [
this, toast_manager]() {
75 if (knowledge_initialized_) {
76 auto json_or = learned_knowledge_.ExportToJSON();
85 callbacks.refresh_knowledge = [
this]() { SyncKnowledgeToContext(); };
87 knowledge_panel_.Draw(GetContext(), GetKnowledgeService(), callbacks,
93 SyncStateFromEditor();
97 agent_editor_.SetRomContext(rom);
98 agent_ui_context_.SetRom(rom);
102 agent_ui_context_.SetProject(project);
105 if (AgentSession* session = session_manager_.GetActiveSession()) {
106 session->context.SetProject(project);
111 agent_ui_context_.SetAsarWrapper(asar_wrapper);
114 if (AgentSession* session = session_manager_.GetActiveSession()) {
115 session->context.SetAsarWrapper(asar_wrapper);
121 SyncStateFromEditor();
124 auto status = agent_editor_.Update();
129void AgentUiController::SyncStateFromEditor() {
131 const auto& profile = agent_editor_.GetCurrentProfile();
132 auto& ctx_config = agent_ui_context_.agent_config();
135 bool changed =
false;
136 if (ctx_config.ai_provider != profile.provider) changed =
true;
137 if (ctx_config.ai_model != profile.model) changed =
true;
141 ctx_config.ai_provider = profile.provider;
142 ctx_config.ai_model = profile.model;
143 ctx_config.ollama_host = profile.ollama_host;
144 ctx_config.gemini_api_key = profile.gemini_api_key;
147 last_synced_config_ = ctx_config;
149 SyncStateToComponents();
153void AgentUiController::SyncStateToComponents() {
156 if (
auto* chat = agent_editor_.GetAgentChat()) {
157 chat->SetContext(&agent_ui_context_);
162 agent_editor_.set_active(
true);
179 return &agent_editor_;
182AgentUIContext* AgentUiController::GetContext() {
184 if (AgentSession* session = session_manager_.GetActiveSession()) {
188 return &agent_ui_context_;
191const AgentUIContext* AgentUiController::GetContext()
const {
193 if (
const AgentSession* session = session_manager_.GetActiveSession()) {
194 return &session->context;
197 return &agent_ui_context_;
201cli::agent::LearnedKnowledgeService* AgentUiController::GetKnowledgeService() {
202 if (!knowledge_initialized_) {
205 return &learned_knowledge_;
208bool AgentUiController::IsKnowledgeServiceAvailable()
const {
209 return knowledge_initialized_;
212void AgentUiController::InitializeKnowledge() {
213 if (knowledge_initialized_) {
217 auto status = learned_knowledge_.Initialize();
219 knowledge_initialized_ =
true;
220 SyncKnowledgeToContext();
221 LOG_INFO(
"AgentUiController",
"LearnedKnowledgeService initialized successfully");
223 LOG_ERROR(
"AgentUiController",
"Failed to initialize LearnedKnowledgeService: %s", status.message().data());
227void AgentUiController::SyncKnowledgeToContext() {
228 if (!knowledge_initialized_) {
233 auto stats = learned_knowledge_.GetStats();
234 auto& knowledge_state = agent_ui_context_.knowledge_state();
236 knowledge_state.initialized =
true;
237 knowledge_state.preference_count = stats.preference_count;
238 knowledge_state.pattern_count = stats.pattern_count;
239 knowledge_state.project_count = stats.project_count;
240 knowledge_state.memory_count = stats.memory_count;
241 knowledge_state.last_refresh = absl::Now();
244 if (AgentSession* session = session_manager_.GetActiveSession()) {
245 session->context.knowledge_state() = knowledge_state;
void SetRomContext(Rom *rom)
void SetProjectContext(project::YazeProject *project)
AgentEditor * GetAgentEditor()
void SetAsarWrapperContext(core::AsarWrapper *asar_wrapper)
void Initialize(ToastManager *toast_manager, ProposalDrawer *proposal_drawer, RightPanelManager *right_panel_manager, PanelManager *panel_manager)
EditorContext context() const
#define LOG_ERROR(category, format,...)
#define LOG_INFO(category, format,...)