56 lines
1.9 KiB
Python
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()
|