diff --git a/apps/admin_console/routers/system.py b/apps/admin_console/routers/system.py
index 875dfd7..1859f7f 100644
--- a/apps/admin_console/routers/system.py
+++ b/apps/admin_console/routers/system.py
@@ -63,6 +63,17 @@ async def restart_adb_server():
}
+@router.post("/adb/heal-keys")
+async def heal_adb_keys():
+ """Auto-heal corrupted ADB authentication RSA keys and return updated readiness."""
+ heal_result = await readiness_engine.heal_adb_keys()
+ updated_report = await readiness_engine.run_all()
+ return {
+ "heal_result": heal_result,
+ "report": updated_report,
+ }
+
+
class ConnectAdbRequest(BaseModel):
"""Payload to connect to an Android device over Wi-Fi."""
diff --git a/apps/admin_console/services/model_service.py b/apps/admin_console/services/model_service.py
index b4d462f..41f30d5 100644
--- a/apps/admin_console/services/model_service.py
+++ b/apps/admin_console/services/model_service.py
@@ -17,26 +17,12 @@ from typing import Any
class ModelService:
- """Service handling model profile detection and metadata formatting."""
+ """Service handling agent architecture profile detection and metadata formatting."""
@staticmethod
def get_active_model_info(profile: str | None = None) -> dict[str, str]:
- if profile:
- p_lower = str(profile).lower()
- if "pro" in p_lower:
- return {
- "name": "Pro",
- "id": "gemini-3.7-pro",
- "provider": "google",
- }
- elif "flash" in p_lower:
- return {
- "name": "Flash",
- "id": "gemini-3.7-flash",
- "provider": "google",
- }
-
- model_name = "Flash"
+ """Return active architecture and underlying LLM model configuration."""
+ # 1. Determine underlying LLM model and provider from config
model_id = "gemini-3.7-flash"
provider = "google"
try:
@@ -44,18 +30,31 @@ class ModelService:
llm_cfg = parse_llm_config()
if llm_cfg and llm_cfg.operator:
- op_model = str(llm_cfg.operator.model).lower()
provider = str(llm_cfg.operator.provider)
- model_id = llm_cfg.operator.model
- if "pro" in op_model:
- model_name = "Pro"
- elif "flash" in op_model:
- model_name = "Flash"
- else:
- model_name = llm_cfg.operator.model.capitalize()
+ model_id = str(llm_cfg.operator.model)
+ elif llm_cfg and llm_cfg.default:
+ provider = str(llm_cfg.default.provider)
+ model_id = str(llm_cfg.default.model)
except Exception:
pass
- return {"name": model_name, "id": model_id, "provider": provider}
+
+ # 2. Determine agent architecture name (Flash vs Pro)
+ arch_name = "Flash"
+ if profile:
+ p_lower = str(profile).lower()
+ if "pro" in p_lower:
+ arch_name = "Pro"
+ elif "flash" in p_lower:
+ arch_name = "Flash"
+ else:
+ arch_name = str(profile).capitalize()
+
+ return {
+ "name": arch_name,
+ "id": model_id,
+ "provider": provider,
+ "architecture": f"ARTEMIS {arch_name}",
+ }
@staticmethod
def resolve_session_profile(
@@ -64,6 +63,7 @@ class ModelService:
running_profile: str | None = None,
agent_names: list[str] | None = None,
) -> str | None:
+ """Resolve the Artemis agent architecture profile ('flash' or 'pro') for a session."""
sess_profile = None
d_info_raw = row_dict.get("device_info")
if d_info_raw:
@@ -98,7 +98,7 @@ class ModelService:
if any("flashrunner" in name for name in agent_names_lower):
return "flash"
- # Check LLM traces for agent name or model overrides
+ # Check LLM traces for agent name
if llm_trace_payloads:
for tr_payload in llm_trace_payloads:
if tr_payload:
@@ -115,16 +115,6 @@ class ModelService:
for x in ("planner", "validator", "operator", "checker")
):
return "pro"
-
- m_str = str(p_obj.get("model") or p_obj.get("model_name") or "").lower()
- if (
- "gemini-3.7-pro" in m_str
- or "gemini-3.6-pro" in m_str
- or "gemini-1.5-pro" in m_str
- or "gpt-4" in m_str
- or "claude" in m_str
- ):
- return "pro"
except Exception:
pass
diff --git a/apps/showcase_ui/src/app/components/agent-stream/agent-stream.component.html b/apps/showcase_ui/src/app/components/agent-stream/agent-stream.component.html
index 0a818ab..b2dc864 100644
--- a/apps/showcase_ui/src/app/components/agent-stream/agent-stream.component.html
+++ b/apps/showcase_ui/src/app/components/agent-stream/agent-stream.component.html
@@ -244,15 +244,15 @@