more fixes
This commit is contained in:
@@ -49,7 +49,7 @@ For deep implementation details when planning or implementing tracks, consult `d
|
|||||||
- **Multi-Server Lifecycle Management:** Orchestrates multiple concurrent MCP server sessions (Stdio for local subprocesses and SSE for remote servers).
|
- **Multi-Server Lifecycle Management:** Orchestrates multiple concurrent MCP server sessions (Stdio for local subprocesses and SSE for remote servers).
|
||||||
- **Flexible Configuration:** Supports global (`config.toml`) and project-specific (`manual_slop.toml`) paths for `mcp_config.json` (standard MCP configuration format).
|
- **Flexible Configuration:** Supports global (`config.toml`) and project-specific (`manual_slop.toml`) paths for `mcp_config.json` (standard MCP configuration format).
|
||||||
- **Auto-Start & Discovery:** Automatically initializes configured servers on project load and dynamically aggregates their tools into the agent's capability declarations.
|
- **Auto-Start & Discovery:** Automatically initializes configured servers on project load and dynamically aggregates their tools into the agent's capability declarations.
|
||||||
- **Dedicated Operations UI:** Features a new **External Tools** section within the Operations Hub for monitoring server status (idle, starting, running, error) and browsing discovered tool schemas.
|
- **Dedicated Operations UI:** Features a new **External Tools** section within the Operations Hub for monitoring server status (idle, starting, running, error) and browsing discovered tool schemas. Supports **Pop-Out Panel functionality**, allowing the External Tools interface to be detached into a standalone window for optimized multi-monitor workflows.
|
||||||
- **Strict HITL Safety:** All external tool calls are intercepted and require explicit human-in-the-loop approval via the standard confirmation dialog before execution.
|
- **Strict HITL Safety:** All external tool calls are intercepted and require explicit human-in-the-loop approval via the standard confirmation dialog before execution.
|
||||||
- **High-Fidelity Selectable UI:** Most read-only labels and logs across the interface (including discussion history, comms payloads, tool outputs, and telemetry metrics) are now implemented as selectable text fields. This enables standard OS-level text selection and copying (Ctrl+C) while maintaining a high-density, non-editable aesthetic.
|
- **High-Fidelity Selectable UI:** Most read-only labels and logs across the interface (including discussion history, comms payloads, tool outputs, and telemetry metrics) are now implemented as selectable text fields. This enables standard OS-level text selection and copying (Ctrl+C) while maintaining a high-density, non-editable aesthetic.
|
||||||
- **High-Fidelity UI Rendering:** Employs advanced 3x font oversampling and sub-pixel positioning to ensure crisp, high-clarity text rendering across all resolutions, enhancing readability for dense logs and complex code fragments.
|
- **High-Fidelity UI Rendering:** Employs advanced 3x font oversampling and sub-pixel positioning to ensure crisp, high-clarity text rendering across all resolutions, enhancing readability for dense logs and complex code fragments.
|
||||||
|
|||||||
@@ -851,6 +851,7 @@ class AppController:
|
|||||||
self.ui_separate_tier2 = False
|
self.ui_separate_tier2 = False
|
||||||
self.ui_separate_tier3 = False
|
self.ui_separate_tier3 = False
|
||||||
self.ui_separate_tier4 = False
|
self.ui_separate_tier4 = False
|
||||||
|
self.ui_separate_external_tools = False
|
||||||
self.config = models.load_config()
|
self.config = models.load_config()
|
||||||
path_info = paths.get_full_path_info()
|
path_info = paths.get_full_path_info()
|
||||||
self.ui_logs_dir = str(path_info['logs_dir']['path'])
|
self.ui_logs_dir = str(path_info['logs_dir']['path'])
|
||||||
@@ -2346,6 +2347,7 @@ class AppController:
|
|||||||
"separate_message_panel": getattr(self, "ui_separate_message_panel", False),
|
"separate_message_panel": getattr(self, "ui_separate_message_panel", False),
|
||||||
"separate_response_panel": getattr(self, "ui_separate_response_panel", False),
|
"separate_response_panel": getattr(self, "ui_separate_response_panel", False),
|
||||||
"separate_tool_calls_panel": getattr(self, "ui_separate_tool_calls_panel", False),
|
"separate_tool_calls_panel": getattr(self, "ui_separate_tool_calls_panel", False),
|
||||||
|
"separate_external_tools": getattr(self, "ui_separate_external_tools", False),
|
||||||
"separate_task_dag": self.ui_separate_task_dag,
|
"separate_task_dag": self.ui_separate_task_dag,
|
||||||
"separate_usage_analytics": self.ui_separate_usage_analytics,
|
"separate_usage_analytics": self.ui_separate_usage_analytics,
|
||||||
"separate_tier1": self.ui_separate_tier1,
|
"separate_tier1": self.ui_separate_tier1,
|
||||||
|
|||||||
19
src/gui_2.py
19
src/gui_2.py
@@ -178,11 +178,13 @@ class App:
|
|||||||
self.ui_separate_tier2 = gui_cfg.get("separate_tier2", False)
|
self.ui_separate_tier2 = gui_cfg.get("separate_tier2", False)
|
||||||
self.ui_separate_tier3 = gui_cfg.get("separate_tier3", False)
|
self.ui_separate_tier3 = gui_cfg.get("separate_tier3", False)
|
||||||
self.ui_separate_tier4 = gui_cfg.get("separate_tier4", False)
|
self.ui_separate_tier4 = gui_cfg.get("separate_tier4", False)
|
||||||
|
self.ui_separate_external_tools = gui_cfg.get('separate_external_tools', False)
|
||||||
self.show_windows.setdefault("Usage Analytics", False)
|
self.show_windows.setdefault("Usage Analytics", False)
|
||||||
self.show_windows.setdefault("Tier 1: Strategy", False)
|
self.show_windows.setdefault("Tier 1: Strategy", False)
|
||||||
self.show_windows.setdefault("Tier 2: Tech Lead", False)
|
self.show_windows.setdefault("Tier 2: Tech Lead", False)
|
||||||
self.show_windows.setdefault("Tier 3: Workers", False)
|
self.show_windows.setdefault("Tier 3: Workers", False)
|
||||||
self.show_windows.setdefault("Tier 4: QA", False)
|
self.show_windows.setdefault("Tier 4: QA", False)
|
||||||
|
self.show_windows.setdefault('External Tools', False)
|
||||||
self.ui_multi_viewport = gui_cfg.get("multi_viewport", False)
|
self.ui_multi_viewport = gui_cfg.get("multi_viewport", False)
|
||||||
self.layout_presets = self.config.get("layout_presets", {})
|
self.layout_presets = self.config.get("layout_presets", {})
|
||||||
self._new_preset_name = ""
|
self._new_preset_name = ""
|
||||||
@@ -597,6 +599,9 @@ class App:
|
|||||||
imgui.same_line()
|
imgui.same_line()
|
||||||
ch2, self.ui_separate_usage_analytics = imgui.checkbox("Pop Out Usage Analytics", self.ui_separate_usage_analytics)
|
ch2, self.ui_separate_usage_analytics = imgui.checkbox("Pop Out Usage Analytics", self.ui_separate_usage_analytics)
|
||||||
if ch2: self.show_windows["Usage Analytics"] = self.ui_separate_usage_analytics
|
if ch2: self.show_windows["Usage Analytics"] = self.ui_separate_usage_analytics
|
||||||
|
imgui.same_line()
|
||||||
|
ch3, self.ui_separate_external_tools = imgui.checkbox('Pop Out External Tools', self.ui_separate_external_tools)
|
||||||
|
if ch3: self.show_windows['External Tools'] = self.ui_separate_external_tools
|
||||||
imgui.pop_style_var()
|
imgui.pop_style_var()
|
||||||
|
|
||||||
show_tc_tab = not self.ui_separate_tool_calls_panel
|
show_tc_tab = not self.ui_separate_tool_calls_panel
|
||||||
@@ -614,9 +619,10 @@ class App:
|
|||||||
if imgui.begin_tab_item("Usage Analytics")[0]:
|
if imgui.begin_tab_item("Usage Analytics")[0]:
|
||||||
self._render_usage_analytics_panel()
|
self._render_usage_analytics_panel()
|
||||||
imgui.end_tab_item()
|
imgui.end_tab_item()
|
||||||
if imgui.begin_tab_item("External Tools")[0]:
|
if not self.ui_separate_external_tools:
|
||||||
self._render_external_tools_panel()
|
if imgui.begin_tab_item("External Tools")[0]:
|
||||||
imgui.end_tab_item()
|
self._render_external_tools_panel()
|
||||||
|
imgui.end_tab_item()
|
||||||
imgui.end_tab_bar()
|
imgui.end_tab_bar()
|
||||||
imgui.end()
|
imgui.end()
|
||||||
|
|
||||||
@@ -641,6 +647,13 @@ class App:
|
|||||||
self._render_tool_calls_panel()
|
self._render_tool_calls_panel()
|
||||||
imgui.end()
|
imgui.end()
|
||||||
|
|
||||||
|
if self.ui_separate_external_tools and self.show_windows.get('External Tools', False):
|
||||||
|
exp, opened = imgui.begin('External Tools', self.show_windows['External Tools'])
|
||||||
|
self.show_windows['External Tools'] = bool(opened)
|
||||||
|
if exp:
|
||||||
|
self._render_external_tools_panel()
|
||||||
|
imgui.end()
|
||||||
|
|
||||||
if self.show_windows.get("Log Management", False):
|
if self.show_windows.get("Log Management", False):
|
||||||
if self.perf_profiling_enabled: self.perf_monitor.start_component("_render_log_management")
|
if self.perf_profiling_enabled: self.perf_monitor.start_component("_render_log_management")
|
||||||
self._render_log_management()
|
self._render_log_management()
|
||||||
|
|||||||
Reference in New Issue
Block a user