fix(runtime): release 2.7.1 with consistent ADB and failure diagnostics

This commit is contained in:
chenmingxuan committed 2026-11-05 11:40:49 +08:00
1 parent b2316ca249
commit 8bf59897bb
24 files changed
+792 -45

No files matched your search

+5 -7
View File
@@ -18,7 +18,7 @@ from langchain_core.messages import ToolMessage
from langchain_core.tools import BaseTool
from pydantic import BaseModel, Field
from artemis.agents.hopper.hopper import HopperOutput, hopper
from artemis.agents.hopper.hopper import HopperError, HopperOutput, hopper
from artemis.context import ArtemisContext
from artemis.controllers.platform_specific_commands_controller import (
list_packages_async,
@@ -53,7 +53,7 @@ LAUNCH_APP_DOCSTRING = (
async def find_package(ctx: ArtemisContext, app_name: str, use_fallback: bool = True) -> str | None:
"""Finds the package name for a given application name.
Returns None if package not found or on error.
Returns None if no installed package matches. Model failures raise HopperError.
"""
package_cache = getattr(ctx, "package_cache", None)
if package_cache is None or not isinstance(package_cache, dict):
@@ -63,7 +63,7 @@ async def find_package(ctx: ArtemisContext, app_name: str, use_fallback: bool =
except Exception: # pylint: disable=broad-exception-caught
package_cache = {}
if isinstance(package_cache, dict) and app_name in package_cache:
if isinstance(package_cache, dict) and package_cache.get(app_name):
logger.info(f"Cache hit for app '{app_name}': {package_cache[app_name]}")
return package_cache[app_name]
@@ -84,8 +84,6 @@ async def find_package(ctx: ArtemisContext, app_name: str, use_fallback: bool =
use_fallback=use_fallback,
)
if not hopper_output.found or not hopper_output.output:
if isinstance(package_cache, dict):
package_cache[app_name] = None
return None
package_name = hopper_output.output.strip()
@@ -94,13 +92,13 @@ async def find_package(ctx: ArtemisContext, app_name: str, use_fallback: bool =
f"Hopper returned package '{package_name}' for '{app_name}', "
"but it is NOT physically installed on the device!"
)
if isinstance(package_cache, dict):
package_cache[app_name] = None
return None
if isinstance(package_cache, dict):
package_cache[app_name] = package_name
return package_name
except HopperError:
raise
except Exception as e: # pylint: disable=broad-exception-caught
logger.error(f"Failed to find package for '{app_name}': {e}")
return None