diff --git a/src/app_controller.py b/src/app_controller.py index 255f1c6e..5a454304 100644 --- a/src/app_controller.py +++ b/src/app_controller.py @@ -1855,10 +1855,13 @@ class AppController: from src.personas import PersonaManager self.persona_manager = PersonaManager(Path(self.active_project_path).parent if self.active_project_path else None) - self.personas = self.persona_manager.load_all() - - self._fetch_models(self.current_provider) - + from src.vendor_capabilities import get_capabilities + try: + caps = get_capabilities(self.current_provider, self.current_model) + except KeyError: + caps = None + if caps is None or caps.model_discovery: + self._fetch_models(self.current_provider) self.ui_active_tool_preset = os.environ.get('SLOP_TOOL_PRESET') or ai_cfg.get("active_tool_preset") self.ui_active_bias_profile = ai_cfg.get("active_bias_profile") ai_client.set_tool_preset(self.ui_active_tool_preset) @@ -3700,10 +3703,13 @@ class AppController: rag_engine=None # Already handled above ) self.event_queue.put("response", {"text": resp, "status": "done", "role": "AI"}) + self._ai_status = "done" except ai_client.ProviderError as e: self.event_queue.put("response", {"text": e.ui_message(), "status": "error", "role": "Vendor API"}) + self._ai_status = f"error: {e.ui_message()}" except Exception as e: self.event_queue.put("response", {"text": f"ERROR: {e}", "status": "error", "role": "System"}) + self._ai_status = f"error: {e}" def _on_tool_log(self, script: str, result: str) -> None: """ @@ -3747,7 +3753,14 @@ class AppController: def _on_ai_stream(self, text: str) -> None: """Handles streaming text from the AI.""" self.event_queue.put("response", {"text": text, "status": "streaming...", "role": "AI"}) - + from src.vendor_capabilities import get_capabilities + try: + caps = get_capabilities(self.current_provider, self.current_model) + except KeyError: + caps = None + if caps is None or caps.streaming: + if self._ai_status not in ("sending...", "streaming..."): + self._ai_status = "streaming..." def _on_comms_entry(self, entry: Dict[str, Any]) -> None: """ [C: tests/test_app_controller_offloading.py:test_on_comms_entry_tool_result_offloading]