feat: add multi-device concurrency, server lifecycle CLI, and unified execution stream
- Implement DevicePool and DeviceExecutionLock concurrency modes (per-device FIFO vs global serialization) - Extend ArtemisClient SDK and CLI with explicit device targeting and concurrency strategy configuration - Add server lifecycle management (artemis restart, stop, status) with cross-platform PID discovery - Update MCP server tools to support multi-device dispatch, trace tagging, and per-device execution - Enhance Showcase UI with step-by-step visual replay, playback speed controls, and device serial badges - Add comprehensive unit test coverage and edge-case verification scripts
This commit is contained in:
1 parent
a36a66ce6d
commit
c2c90a6378
84 files changed
+5612
-645
No files matched your search
@@ -44,7 +44,17 @@ def get_adb_device(ctx: ArtemisContext) -> Any:
|
||||
def get_first_device(
|
||||
logger: ArtemisLogger | None = None,
|
||||
) -> tuple[str | None, DevicePlatform | None, None]:
|
||||
"""Gets the first available device."""
|
||||
"""Gets the first available device, prioritizing idle and unassigned devices."""
|
||||
try:
|
||||
from artemis.runtime import device_pool
|
||||
|
||||
chosen = device_pool.select_device()
|
||||
if chosen:
|
||||
return chosen, DevicePlatform.ANDROID, None
|
||||
except Exception as exc:
|
||||
if logger:
|
||||
logger.debug(f"Device pool selection fallback: {exc}")
|
||||
|
||||
if which("adb"):
|
||||
try:
|
||||
android_output = run_shell_command_on_host("adb devices")
|
||||
|
||||
Reference in new issue
Block a user