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
@@ -222,19 +222,31 @@ class DataEngine:
|
||||
|
||||
self._send_ipc_event(event_type, data)
|
||||
|
||||
def start_session(self, goal: str, device_info: dict[str, Any] | None = None) -> UUID:
|
||||
def start_session(
|
||||
self,
|
||||
goal: str,
|
||||
device_info: dict[str, Any] | None = None,
|
||||
session_id: UUID | str | None = None,
|
||||
) -> UUID:
|
||||
"""Start a new session."""
|
||||
global _CURRENT_DATA_ENGINE
|
||||
_CURRENT_DATA_ENGINE = self
|
||||
|
||||
env_session_id = os.getenv("ARTEMIS_CLOUD_SESSION_ID") or os.getenv("ARTEMIS_SESSION_ID")
|
||||
if env_session_id:
|
||||
try:
|
||||
session_id = UUID(env_session_id)
|
||||
except ValueError:
|
||||
session_id = env_session_id
|
||||
if session_id is not None:
|
||||
if isinstance(session_id, str):
|
||||
try:
|
||||
session_id = UUID(session_id)
|
||||
except ValueError:
|
||||
pass
|
||||
else:
|
||||
session_id = uuid4()
|
||||
env_session_id = os.getenv("ARTEMIS_CLOUD_SESSION_ID") or os.getenv("ARTEMIS_SESSION_ID")
|
||||
if env_session_id:
|
||||
try:
|
||||
session_id = UUID(env_session_id)
|
||||
except ValueError:
|
||||
session_id = env_session_id
|
||||
else:
|
||||
session_id = uuid4()
|
||||
self.current_session_id = session_id
|
||||
self.session_start_time = time.time()
|
||||
|
||||
|
||||
Reference in new issue
Block a user