Files
agent_management/config/settings.py
T

56 lines
1.9 KiB
Python

"""Settings for Heicode integration."""
from pydantic_settings import BaseSettings
from typing import Optional
class Settings(BaseSettings):
"""Application settings loaded from environment variables."""
# Service token (Phase 1-4: pre-shared)
HEICODE_SERVICE_TOKEN: str = "dev-token-change-in-production"
# Database
DATABASE_URL: str = "sqlite:///./agent_manager.db"
# Redis (for idempotency)
REDIS_URL: str = "redis://localhost:6379/0"
IDEMPOTENCY_TTL_SECONDS: int = 86400 # 24 hours
# Kubernetes
NAMESPACE_PREFIX: str = "agnet"
# Model gateways
HEICODE_NEWAPI_BASE_URL: str = "https://code.xinghanlab.com/v1"
LITELLM_BASE_URL: str = "https://code.xinghanlab.com/v1"
# Limits
MAX_PAYLOAD_SIZE_MB: int = 1
MAX_CONCURRENT_DEPLOYMENTS_PER_USER: int = 10
MAX_CONCURRENT_DEPLOYMENTS_PER_SCOPE: int = 50
# Runtime artifact storage
RUNTIME_ARTIFACT_DIR: str = "./runtime_artifacts"
RUNTIME_ARTIFACT_BACKEND: str = "azblob"
RUNTIME_ARTIFACT_BLOB_SECRET_NAME: str = "agent-manager-secret"
RUNTIME_ARTIFACT_BLOB_SECRET_NAMESPACE: Optional[str] = None
RUNTIME_ARTIFACT_BLOB_CONTAINER: str = "heicode-artifacts"
RUNTIME_ARTIFACT_BLOB_PREFIX: str = "runtime-artifacts"
RUNTIME_ARTIFACT_BLOB_CONNECTION_STRING_KEY: str = "AZURE_STORAGE_CONNECTION_STRING"
RUNTIME_ARTIFACT_BLOB_ACCOUNT_NAME_KEY: str = "AZURE_STORAGE_ACCOUNT"
RUNTIME_ARTIFACT_BLOB_ACCOUNT_KEY_KEY: str = "AZURE_STORAGE_KEY"
RUNTIME_ARTIFACT_BLOB_CONTAINER_KEY: str = "AZURE_BLOB_CONTAINER"
# Vault (Phase 5)
VAULT_URL: Optional[str] = None
VAULT_TOKEN: Optional[str] = None
VAULT_ADDR: Optional[str] = None
VAULT_ROLE: Optional[str] = None
class Config:
env_file = ".env"
case_sensitive = True
extra = "ignore" # Ignore extra env vars from .env file
settings = Settings()