diff --git a/src/gui_2.py b/src/gui_2.py index 6793184..4132a62 100644 --- a/src/gui_2.py +++ b/src/gui_2.py @@ -2483,9 +2483,7 @@ def hello(): if self.current_provider != "gemini": if self.perf_profiling_enabled: self.perf_monitor.end_component("_render_cache_panel") return - if not imgui.collapsing_header("Cache Analytics"): - if self.perf_profiling_enabled: self.perf_monitor.end_component("_render_cache_panel") - return + imgui.text_colored(C_LBL, 'Cache Analytics') stats = getattr(self.controller, '_cached_cache_stats', {}) if not stats.get("cache_exists"): imgui.text_disabled("No active cache") @@ -3664,58 +3662,70 @@ def hello(): def _render_agent_tools_panel(self) -> None: if imgui.collapsing_header("Active Tool Presets & Biases", imgui.TreeNodeFlags_.default_open): imgui.text("Tool Preset") - presets = self.controller.tool_presets - preset_names = [""] + sorted(list(presets.keys())) - - # Gracefully handle None or missing preset - active = getattr(self, "ui_active_tool_preset", "") - if active is None: active = "" - try: - idx = preset_names.index(active) - except ValueError: - idx = 0 - - ch, new_idx = imgui.combo("##tool_preset_select", idx, preset_names) - if ch: - self.ui_active_tool_preset = preset_names[new_idx] - - imgui.same_line() - if imgui.button("Manage Presets##tools"): - self.show_tool_preset_manager_window = True - if imgui.is_item_hovered(): - imgui.set_tooltip("Configure tool availability and default modes.") - - imgui.dummy(imgui.ImVec2(0, 8)) - active_name = self.ui_active_tool_preset - if active_name and active_name in presets: - preset = presets[active_name] - for cat_name, tools in preset.categories.items(): - if imgui.tree_node(cat_name): - for tool in tools: - if tool.weight >= 5: - imgui.text_colored(vec4(255, 100, 100), "[HIGH]") + presets = self.controller.tool_presets + preset_names = [""] + sorted(list(presets.keys())) + + active = getattr(self, "ui_active_tool_preset", "") + if active is None: active = "" + try: + idx = preset_names.index(active) + except ValueError: + idx = 0 + + ch, new_idx = imgui.combo("##tool_preset_select", idx, preset_names) + if ch: + self.ui_active_tool_preset = preset_names[new_idx] + + imgui.same_line() + if imgui.button("Manage Presets##tools"): + self.show_tool_preset_manager_window = True + if imgui.is_item_hovered(): + imgui.set_tooltip("Configure tool availability and default modes.") + + imgui.dummy(imgui.ImVec2(0, 4)) + imgui.text("Bias Profile") + if imgui.begin_combo("##bias", getattr(self, 'ui_active_bias_profile', "") or "None"): + if imgui.selectable("None", not getattr(self, 'ui_active_bias_profile', ""))[0]: + self.ui_active_bias_profile = "" + from src import ai_client + ai_client.set_bias_profile(None) + for bname in sorted(self.controller.bias_profiles.keys()): + if imgui.selectable(bname, bname == getattr(self, 'ui_active_bias_profile', ""))[0]: + self.ui_active_bias_profile = bname + from src import ai_client + ai_client.set_bias_profile(bname) + imgui.end_combo() + + imgui.dummy(imgui.ImVec2(0, 8)) + active_name = self.ui_active_tool_preset + if active_name and active_name in presets: + preset = presets[active_name] + for cat_name, tools in preset.categories.items(): + if imgui.tree_node(cat_name): + for tool in tools: + if tool.weight >= 5: + imgui.text_colored(vec4(255, 100, 100), "[HIGH]") + imgui.same_line() + elif tool.weight == 4: + imgui.text_colored(vec4(255, 255, 100), "[PREF]") + imgui.same_line() + elif tool.weight == 2: + imgui.text_colored(vec4(255, 150, 50), "[REJECT]") + imgui.same_line() + elif tool.weight <= 1: + imgui.text_colored(vec4(180, 180, 180), "[LOW]") + imgui.same_line() + + imgui.text(tool.name) + imgui.same_line(180) + + mode = tool.approval + if imgui.radio_button(f"Auto##{cat_name}_{tool.name}", mode == "auto"): + tool.approval = "auto" imgui.same_line() - elif tool.weight == 4: - imgui.text_colored(vec4(255, 255, 100), "[PREF]") - imgui.same_line() - elif tool.weight == 2: - imgui.text_colored(vec4(255, 150, 50), "[REJECT]") - imgui.same_line() - elif tool.weight <= 1: - imgui.text_colored(vec4(180, 180, 180), "[LOW]") - imgui.same_line() - - imgui.text(tool.name) - imgui.same_line(180) - - mode = tool.approval - if imgui.radio_button(f"Auto##{cat_name}_{tool.name}", mode == "auto"): - tool.approval = "auto" - imgui.same_line() - if imgui.radio_button(f"Ask##{cat_name}_{tool.name}", mode == "ask"): - tool.approval = "ask" - imgui.tree_pop() - + if imgui.radio_button(f"Ask##{cat_name}_{tool.name}", mode == "ask"): + tool.approval = "ask" + imgui.tree_pop() def _render_theme_panel(self) -> None: if self.perf_profiling_enabled: self.perf_monitor.start_component("_render_theme_panel") exp, opened = imgui.begin("Theme", self.show_windows["Theme"])