Some checks failed
CI / ci (pull_request) Failing after 12s
- Refactor FirestoreNotificationBackend to use time-gated window (window_hours) instead of notified_by_agent status filtering; mark_as_notified is now a no-op (agent is awareness-only). - Update agent.py to instantiate FirestoreNotificationBackend using the shared firestore_db client instead of RedisNotificationBackend. - Remove redis_host/redis_port settings from config.py; add notifications_collection_path, max_to_notify, and window_hours. - Move redis/json imports inside RedisNotificationBackend methods so redis is only required if that backend is explicitly instantiated. - Add utility scripts for checking and registering notifications. - Add google-cloud-firestore dependency to pyproject.toml.
63 lines
1.6 KiB
Python
63 lines
1.6 KiB
Python
"""Configuration helper for ADK agent."""
|
|
|
|
import os
|
|
|
|
from pydantic_settings import (
|
|
BaseSettings,
|
|
PydanticBaseSettingsSource,
|
|
SettingsConfigDict,
|
|
YamlConfigSettingsSource,
|
|
)
|
|
|
|
CONFIG_FILE_PATH = os.getenv("CONFIG_YAML", "config.yaml")
|
|
|
|
|
|
class AgentSettings(BaseSettings):
|
|
"""Settings for ADK agent with vector search."""
|
|
|
|
google_cloud_project: str
|
|
google_cloud_location: str
|
|
|
|
# Agent configuration
|
|
agent_name: str
|
|
agent_instructions: str
|
|
agent_model: str
|
|
|
|
# Firestore configuration
|
|
firestore_db: str
|
|
|
|
# Notifications configuration
|
|
notifications_collection_path: str = (
|
|
"artifacts/bnt-orquestador-cognitivo-dev/notifications"
|
|
)
|
|
notifications_max_to_notify: int = 5
|
|
notifications_window_hours: float = 48
|
|
|
|
# MCP configuration
|
|
mcp_audience: str
|
|
mcp_remote_url: str
|
|
|
|
model_config = SettingsConfigDict(
|
|
yaml_file=CONFIG_FILE_PATH,
|
|
extra="ignore", # Ignore extra fields from config.yaml
|
|
env_file=".env",
|
|
)
|
|
|
|
@classmethod
|
|
def settings_customise_sources(
|
|
cls,
|
|
settings_cls: type[BaseSettings],
|
|
init_settings: PydanticBaseSettingsSource, # noqa: ARG003
|
|
env_settings: PydanticBaseSettingsSource,
|
|
dotenv_settings: PydanticBaseSettingsSource, # noqa: ARG003
|
|
file_secret_settings: PydanticBaseSettingsSource, # noqa: ARG003
|
|
) -> tuple[PydanticBaseSettingsSource, ...]:
|
|
"""Use env vars and YAML as settings sources."""
|
|
return (
|
|
env_settings,
|
|
YamlConfigSettingsSource(settings_cls),
|
|
)
|
|
|
|
|
|
settings = AgentSettings.model_validate({})
|