MCPcopy Create free account
hub / github.com/Action-State-Labs/android-action-kernel / Config

Class Config

config.py:23–67  ·  view source on GitHub ↗

Application configuration loaded from environment.

Source from the content-addressed store, hash-verified

21
22
23class Config:
24 """Application configuration loaded from environment."""
25
26 # ADB Configuration
27 ADB_PATH: str = os.environ.get("ADB_PATH", "adb")
28 SCREEN_DUMP_PATH: str = DEVICE_DUMP_PATH
29 LOCAL_DUMP_PATH: str = LOCAL_DUMP_PATH
30
31 # Agent Configuration
32 MAX_STEPS: int = int(os.environ.get("MAX_STEPS", str(DEFAULT_MAX_STEPS)))
33 STEP_DELAY: float = float(os.environ.get("STEP_DELAY", str(DEFAULT_STEP_DELAY)))
34
35 # LLM Provider: "groq", "openai", or "bedrock"
36 LLM_PROVIDER: str = os.environ.get("LLM_PROVIDER", "groq")
37
38 # Groq Configuration
39 GROQ_API_KEY: str = os.environ.get("GROQ_API_KEY", "")
40 GROQ_MODEL: str = os.environ.get("GROQ_MODEL", DEFAULT_GROQ_MODEL)
41
42 # OpenAI Configuration
43 OPENAI_API_KEY: str = os.environ.get("OPENAI_API_KEY", "")
44 OPENAI_MODEL: str = os.environ.get("OPENAI_MODEL", DEFAULT_OPENAI_MODEL)
45
46 # AWS Bedrock Configuration
47 AWS_REGION: str = os.environ.get("AWS_REGION", "us-east-1")
48 BEDROCK_MODEL: str = os.environ.get("BEDROCK_MODEL", DEFAULT_BEDROCK_MODEL)
49
50 @classmethod
51 def get_model(cls) -> str:
52 """Get the model name based on the selected provider."""
53 if cls.LLM_PROVIDER == "groq":
54 return cls.GROQ_MODEL
55 elif cls.LLM_PROVIDER == "bedrock":
56 return cls.BEDROCK_MODEL
57 else:
58 return cls.OPENAI_MODEL
59
60 @classmethod
61 def validate(cls) -> None:
62 """Validate that required configuration is present."""
63 if cls.LLM_PROVIDER == "groq" and not cls.GROQ_API_KEY:
64 raise ValueError("GROQ_API_KEY is required when using Groq provider")
65 elif cls.LLM_PROVIDER == "openai" and not cls.OPENAI_API_KEY:
66 raise ValueError("OPENAI_API_KEY is required when using OpenAI provider")
67 # Bedrock uses AWS credential chain, no explicit validation needed

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected