from pydantic import BaseModel, Field from openhands.core.config.condenser_config import CondenserConfig, NoOpCondenserConfig class AgentConfig(BaseModel): """Configuration for the agent. Attributes: function_calling: Whether function calling is enabled. Default is True. codeact_enable_browsing: Whether browsing delegate is enabled in the action space. Default is False. Only works with function calling. codeact_enable_llm_editor: Whether LLM editor is enabled in the action space. Default is False. Only works with function calling. codeact_enable_jupyter: Whether Jupyter is enabled in the action space. Default is False. micro_agent_name: The name of the micro agent to use for this agent. memory_enabled: Whether long-term memory (embeddings) is enabled. memory_max_threads: The maximum number of threads indexing at the same time for embeddings. llm_config: The name of the llm config to use. If specified, this will override global llm config. enable_prompt_extensions: Whether to use prompt extensions (e.g., microagents, inject runtime info). Default is True. disabled_microagents: A list of microagents to disable. Default is None. condenser: Configuration for the memory condenser. Default is NoOpCondenserConfig. """ codeact_enable_browsing: bool = Field(default=True) codeact_enable_llm_editor: bool = Field(default=False) codeact_enable_jupyter: bool = Field(default=True) micro_agent_name: str | None = Field(default=None) memory_enabled: bool = Field(default=False) memory_max_threads: int = Field(default=3) llm_config: str | None = Field(default=None) enable_prompt_extensions: bool = Field(default=False) disabled_microagents: list[str] | None = Field(default=None) condenser: CondenserConfig = Field(default_factory=NoOpCondenserConfig)