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:
somew1nd committed 2026-08-26 15:53:14 -07:00
1 parent a36a66ce6d
commit c2c90a6378
84 files changed
+5612 -645

No files matched your search

+2 -1
View File
@@ -123,12 +123,13 @@ class AgentConfig(BaseModel):
flash: FlashProfileConfig = Field(default_factory=FlashProfileConfig)
pro: ProProfileConfig = Field(default_factory=ProProfileConfig)
explorer: ExplorerConfig = Field(default_factory=ExplorerConfig)
explorer_versions: dict[str, Literal["flash", "pro", "ultra"]]
denylisted_tools: dict[str, list[str]]
enable_video_ledger: bool = True
video_analyzer: VideoAnalyzerConfig = Field(default_factory=VideoAnalyzerConfig)
concurrency_mode: Literal["global", "per_device"] = "per_device"
max_concurrency: int | None = None
model_config = {"arbitrary_types_allowed": True}
+1 -1
View File
@@ -96,7 +96,7 @@ class TaskRequestBase(BaseModel):
model_config = {"ignored_types": (CyFunctionDetector,)}
max_steps: int = RECURSION_LIMIT
record_trace: bool = True
trace_path: Path = Path("artemis-traces")
trace_path: Path = Path("traces")
llm_output_path: Path | None = None