feat: initial release of ARTEMIS Android Agent & Automation Platform
ARTEMIS is an autonomous multimodal Android agent and mobile UI automation platform engineered for physical devices and emulators. It combines state-of-the-art multimodal Vision-Language Models (VLMs) with hierarchical closed-loop planning, resilient self-healing, and deep Android subsystem integration. Key Features & Architectural Highlights: - Dual-Engine Orchestration: * Pro Engine: Multi-agent closed-loop (Planner -> Operator -> Validator/Failure Analyzer -> Summarizer) powered by LangGraph. * Flash Engine: Ultra-fast reactive loop for deterministic, low-latency UI execution (<35 steps). - Multimodal Perception & Grounding: * Hybrid visual screenshot grounding, real-time OCR extraction, and XML accessibility hierarchy parsing. * Dynamic-First, Coordinate-Fallback locating strategy for maximum resilience against UI drift. - Autonomous Self-Healing & Diagnostics: * Failure analyzer and safety net for popup dismissal, crash recovery, and auto-retry. * Diagnostic sub-agents for log analysis, video recording inspection, and object detection. - Unified CLI & Python SDK: * Rich CLI with commands: init, doctor, run, trace, batch, bench, server, and mcp. * Fluent Python SDK with Pydantic structured output models and package locking. - Multi-Provider LLM Architecture: * Support for Google Gemini, OpenAI, Anthropic Claude, Vertex AI, OpenRouter, xAI Grok, and local endpoints (Ollama/vLLM). * Centralized configuration in config/artemis.jsonc. - Native MCP & Observability: * Model Context Protocol (MCP) server endpoints for AI IDEs. * Full trace recording with before/after screenshots, action overlays, and execution replays. Change-Id: I430b93ee2b76b54cc5a3c6eeccd15d2cf29830a1
This commit is contained in:
commit
206a9ce921
229 files changed
+49653
No files matched your search
@@ -0,0 +1,253 @@
|
||||
# Copyright 2026 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
"""Unified configuration package and single entry point for ARTEMIS settings, paths, and models."""
|
||||
|
||||
from artemis.config.agent import (
|
||||
AgentGlobalConfig,
|
||||
CheckerConfig,
|
||||
CommitteeConfig,
|
||||
ExplorerConfig,
|
||||
FlashProfileConfig,
|
||||
OutputterConfig,
|
||||
PlannerValidationConfig,
|
||||
ProProfileConfig,
|
||||
StepSummarizerConfig,
|
||||
VideoAnalyzerConfig,
|
||||
load_agent_config,
|
||||
resolve_explorer_version,
|
||||
)
|
||||
from artemis.config.constants import (
|
||||
AGENT_CONFIG_FILENAME,
|
||||
DATA_ENGINE_DB_FILENAME,
|
||||
DEFAULT_ACTION_TIMEOUT,
|
||||
DEFAULT_ADB_HOST,
|
||||
DEFAULT_ADB_PORT,
|
||||
DEFAULT_EDGE_MONITOR_PORT,
|
||||
DEFAULT_EXPLORER_VERSION,
|
||||
DEFAULT_GATEWAY_PORT,
|
||||
DEFAULT_MODEL,
|
||||
DEFAULT_PROFILE,
|
||||
DEFAULT_STREAM_PING_INTERVAL,
|
||||
DOTENV_FILENAME,
|
||||
ENV_ADB_DEVICE_SERIAL,
|
||||
ENV_ADB_HOST,
|
||||
ENV_ADB_PORT,
|
||||
ENV_ADB_SERVER_SOCKET,
|
||||
ENV_ANTHROPIC_API_KEY,
|
||||
ENV_ANTIGRAVITY_APP_DIR,
|
||||
ENV_ANTIGRAVITY_LS_ADDRESS,
|
||||
ENV_DATA_ENGINE_DB_PATH,
|
||||
ENV_EVENTS_OUTPUT_PATH,
|
||||
ENV_GCP_API_KEY,
|
||||
ENV_GEMINI_API_KEY,
|
||||
ENV_GOOGLE_API_KEY,
|
||||
ENV_KEEP_VIDEOS,
|
||||
ENV_ARTEMIS_APP_DIR,
|
||||
ENV_ARTEMIS_CLOUD_GATEWAY_URL,
|
||||
ENV_ARTEMIS_CLOUD_MODE,
|
||||
ENV_ARTEMIS_CLOUD_SESSION_ID,
|
||||
ENV_ARTEMIS_DEBUG,
|
||||
ENV_ARTEMIS_DEFAULT_MODEL,
|
||||
ENV_ARTEMIS_DEFAULT_PROFILE,
|
||||
ENV_ARTEMIS_DEVICE_ID,
|
||||
ENV_ARTEMIS_EDGE_PORT,
|
||||
ENV_ARTEMIS_EXPLORER_VERSION,
|
||||
ENV_ARTEMIS_IPC_PORT,
|
||||
ENV_ARTEMIS_MCP_SERVER,
|
||||
ENV_ARTEMIS_TENANT_ID,
|
||||
ENV_ARTEMIS_TENANT_TOKEN,
|
||||
ENV_ARTEMIS_TRACES_DIR,
|
||||
ENV_ARTEMIS_USE_FILE_API,
|
||||
ENV_ARTEMIS_USE_USER_DIR,
|
||||
ENV_OPEN_ROUTER_API_KEY,
|
||||
ENV_OPENAI_API_KEY,
|
||||
ENV_OPENAI_BASE_URL,
|
||||
ENV_RESULTS_OUTPUT_PATH,
|
||||
ENV_XAI_API_KEY,
|
||||
IPC_PORT_FILENAME,
|
||||
LLM_CONFIG_FILENAME,
|
||||
LLM_CONFIG_OVERRIDE_FILENAME,
|
||||
LS_ADDRESS_FILENAME,
|
||||
AgentNode,
|
||||
AgentNodeWithFallback,
|
||||
ExplorerVersion,
|
||||
LLMProvider,
|
||||
LLMUtilsNode,
|
||||
LLMUtilsNodeWithFallback,
|
||||
)
|
||||
from artemis.config.llm import (
|
||||
CyFunctionDetector,
|
||||
LLM,
|
||||
LLMConfig,
|
||||
LLMConfigUtils,
|
||||
LLMWithFallback,
|
||||
deep_merge_llm_config,
|
||||
get_default_llm_config,
|
||||
initialize_llm_config,
|
||||
load_llm_config_override,
|
||||
parse_llm_config,
|
||||
validate_vertex_ai_credentials,
|
||||
)
|
||||
from artemis.config.output import (
|
||||
OutputConfig,
|
||||
prepare_output_files,
|
||||
record_events,
|
||||
)
|
||||
from artemis.config.paths import (
|
||||
CONFIG_DIR,
|
||||
GLOBAL_APP_DIR,
|
||||
GLOBAL_JETSKI_DIR,
|
||||
ROOT_DIR,
|
||||
get_app_dir,
|
||||
get_config_path,
|
||||
get_data_engine_db_path,
|
||||
get_default_traces_path,
|
||||
get_ipc_port_file,
|
||||
get_ls_address_file,
|
||||
get_temp_dir,
|
||||
get_traces_dir,
|
||||
is_frozen_bundle,
|
||||
)
|
||||
from artemis.config.runtime import (
|
||||
cleanup_temp_dir,
|
||||
clear_ipc_port,
|
||||
clear_ls_address,
|
||||
read_ipc_port,
|
||||
read_ls_address,
|
||||
write_ipc_port,
|
||||
write_ls_address,
|
||||
)
|
||||
from artemis.config.settings import (
|
||||
Settings,
|
||||
settings,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
# Settings & Singleton
|
||||
"Settings",
|
||||
"settings",
|
||||
# Paths & Dirs
|
||||
"ROOT_DIR",
|
||||
"CONFIG_DIR",
|
||||
"GLOBAL_APP_DIR",
|
||||
"GLOBAL_JETSKI_DIR",
|
||||
"get_app_dir",
|
||||
"get_traces_dir",
|
||||
"get_default_traces_path",
|
||||
"get_temp_dir",
|
||||
"get_config_path",
|
||||
"get_data_engine_db_path",
|
||||
"get_ipc_port_file",
|
||||
"get_ls_address_file",
|
||||
"is_frozen_bundle",
|
||||
# LLM Config & Models
|
||||
"CyFunctionDetector",
|
||||
"LLM",
|
||||
"LLMWithFallback",
|
||||
"LLMConfigUtils",
|
||||
"LLMConfig",
|
||||
"parse_llm_config",
|
||||
"initialize_llm_config",
|
||||
"get_default_llm_config",
|
||||
"deep_merge_llm_config",
|
||||
"load_llm_config_override",
|
||||
"validate_vertex_ai_credentials",
|
||||
# Agent & Tool Config
|
||||
"AgentGlobalConfig",
|
||||
"CheckerConfig",
|
||||
"CommitteeConfig",
|
||||
"ExplorerConfig",
|
||||
"FlashProfileConfig",
|
||||
"OutputterConfig",
|
||||
"PlannerValidationConfig",
|
||||
"ProProfileConfig",
|
||||
"StepSummarizerConfig",
|
||||
"VideoAnalyzerConfig",
|
||||
"load_agent_config",
|
||||
"resolve_explorer_version",
|
||||
# Output Config
|
||||
"OutputConfig",
|
||||
"prepare_output_files",
|
||||
"record_events",
|
||||
# Runtime & IPC State
|
||||
"read_ipc_port",
|
||||
"write_ipc_port",
|
||||
"clear_ipc_port",
|
||||
"read_ls_address",
|
||||
"write_ls_address",
|
||||
"clear_ls_address",
|
||||
"cleanup_temp_dir",
|
||||
# Types & Literals
|
||||
"LLMProvider",
|
||||
"ExplorerVersion",
|
||||
"LLMUtilsNode",
|
||||
"LLMUtilsNodeWithFallback",
|
||||
"AgentNode",
|
||||
"AgentNodeWithFallback",
|
||||
# Filenames
|
||||
"LLM_CONFIG_FILENAME",
|
||||
"LLM_CONFIG_OVERRIDE_FILENAME",
|
||||
"AGENT_CONFIG_FILENAME",
|
||||
"DATA_ENGINE_DB_FILENAME",
|
||||
"IPC_PORT_FILENAME",
|
||||
"LS_ADDRESS_FILENAME",
|
||||
"DOTENV_FILENAME",
|
||||
# Defaults
|
||||
"DEFAULT_ADB_HOST",
|
||||
"DEFAULT_ADB_PORT",
|
||||
"DEFAULT_GATEWAY_PORT",
|
||||
"DEFAULT_EDGE_MONITOR_PORT",
|
||||
"DEFAULT_ACTION_TIMEOUT",
|
||||
"DEFAULT_STREAM_PING_INTERVAL",
|
||||
"DEFAULT_PROFILE",
|
||||
"DEFAULT_MODEL",
|
||||
"DEFAULT_EXPLORER_VERSION",
|
||||
# Environment Variables
|
||||
"ENV_ARTEMIS_APP_DIR",
|
||||
"ENV_ANTIGRAVITY_APP_DIR",
|
||||
"ENV_ARTEMIS_USE_USER_DIR",
|
||||
"ENV_ARTEMIS_TRACES_DIR",
|
||||
"ENV_DATA_ENGINE_DB_PATH",
|
||||
"ENV_ARTEMIS_CLOUD_MODE",
|
||||
"ENV_ARTEMIS_CLOUD_SESSION_ID",
|
||||
"ENV_ARTEMIS_CLOUD_GATEWAY_URL",
|
||||
"ENV_ARTEMIS_TENANT_ID",
|
||||
"ENV_ARTEMIS_TENANT_TOKEN",
|
||||
"ENV_ARTEMIS_EDGE_PORT",
|
||||
"ENV_ARTEMIS_IPC_PORT",
|
||||
"ENV_ANTIGRAVITY_LS_ADDRESS",
|
||||
"ENV_ARTEMIS_MCP_SERVER",
|
||||
"ENV_ADB_DEVICE_SERIAL",
|
||||
"ENV_ARTEMIS_DEVICE_ID",
|
||||
"ENV_ADB_HOST",
|
||||
"ENV_ADB_PORT",
|
||||
"ENV_ADB_SERVER_SOCKET",
|
||||
"ENV_GOOGLE_API_KEY",
|
||||
"ENV_GEMINI_API_KEY",
|
||||
"ENV_GCP_API_KEY",
|
||||
"ENV_OPENAI_API_KEY",
|
||||
"ENV_OPENAI_BASE_URL",
|
||||
"ENV_ANTHROPIC_API_KEY",
|
||||
"ENV_OPEN_ROUTER_API_KEY",
|
||||
"ENV_XAI_API_KEY",
|
||||
"ENV_ARTEMIS_EXPLORER_VERSION",
|
||||
"ENV_ARTEMIS_DEFAULT_PROFILE",
|
||||
"ENV_ARTEMIS_DEFAULT_MODEL",
|
||||
"ENV_ARTEMIS_USE_FILE_API",
|
||||
"ENV_KEEP_VIDEOS",
|
||||
"ENV_ARTEMIS_DEBUG",
|
||||
"ENV_EVENTS_OUTPUT_PATH",
|
||||
"ENV_RESULTS_OUTPUT_PATH",
|
||||
]
|
||||
Reference in new issue
Block a user