Files
gcp_solution_architecture_a…/app/config.py
Jonathan Boniface a24a44e28c
Some checks failed
validation / verify (push) Failing after 10s
refactored: to utilise the google adk and production grade agent
2026-09-02 21:42:10 +01:00

78 lines
2.4 KiB
Python

"""Typed settings for GCP Solution Architecture Agent."""
import os
from pathlib import Path
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
"""Application Settings."""
model_config = SettingsConfigDict(
env_file=".env",
env_file_encoding="utf-8",
extra="ignore",
)
# Agent Identity
AGENT_NAME: str = "gcp_solution_architecture_agent"
AGENT_VERSION: str = "1.0.0"
LOG_LEVEL: str = "INFO"
# Server Configuration
HOST: str = "0.0.0.0"
PORT: int = 8080
# LLM Settings
OPENAI_API_KEY: str | None = None
AZURE_OPENAI_API_KEY: str | None = None
AZURE_OPENAI_ENDPOINT: str | None = None
AZURE_OPENAI_DEPLOYMENT: str = "gpt-4o"
AZURE_OPENAI_API_VERSION: str = "2024-02-15-preview"
LLM_TEMPERATURE: float = 0.2
# Google Cloud Environment & Scanner Credentials
GOOGLE_APPLICATION_CREDENTIALS: str | None = None
GCP_PROJECT_ID: str | None = None
GCP_REGION: str = "us-central1"
# Database & Storage Settings (External PostgreSQL)
POSTGRES_HOST: str = "localhost"
POSTGRES_PORT: int = 5432
POSTGRES_DB: str = "gcp_agent_db"
POSTGRES_USER: str = "postgres"
POSTGRES_PASSWORD: str = "postgres"
DATABASE_URL: str | None = None
SQLITE_FALLBACK_DB: str = "gcp_agent_local.db"
# ADK Multi-Agent Orchestrator Settings
ADK_MAX_LOOP_ITERATIONS: int = 5
ADK_ENABLE_ARTIFACT_STORE: bool = True
# Google Developer Knowledge MCP Server Settings
DEVELOPER_KNOWLEDGE_MCP_URL: str = "https://developerknowledge.googleapis.com/mcp"
DEVELOPER_KNOWLEDGE_MCP_ENABLED: bool = True
# Paths
BASE_DIR: Path = Path(__file__).resolve().parent.parent
SKILLS_DIR: Path = Path(__file__).resolve().parent / "skills"
EVAL_DATASET_PATH: Path = Path(__file__).resolve().parent.parent / "eval" / "datasets" / "benchmark_cases.json"
def get_database_url(self) -> str:
"""Construct database connection URL (PostgreSQL or SQLite fallback)."""
if self.DATABASE_URL:
return self.DATABASE_URL
return f"postgresql://{self.POSTGRES_USER}:{self.POSTGRES_PASSWORD}@{self.POSTGRES_HOST}:{self.POSTGRES_PORT}/{self.POSTGRES_DB}"
_settings: Settings | None = None
def get_settings() -> Settings:
"""Get singleton Settings instance."""
global _settings
if _settings is None:
_settings = Settings()
return _settings