Athena1621's picture
feat: Introduce new backend architecture with notebooks, sources, chat, and CLaRa models, alongside database schema and updated deployment scripts, while removing old frontend, deployment files, and previous backend components.
88f8604
"""
Antigravity Notebook - Configuration Management
Handles all environment variables and application settings.
"""
from pydantic_settings import BaseSettings
from pydantic import Field
import os
class Settings(BaseSettings):
"""Application settings loaded from environment variables"""
# Database Configuration
POSTGRES_USER: str = Field(default="antigravity", env="POSTGRES_USER")
POSTGRES_PASSWORD: str = Field(default="antigravity123", env="POSTGRES_PASSWORD")
POSTGRES_DB: str = Field(default="antigravity_db", env="POSTGRES_DB")
POSTGRES_HOST: str = Field(default="localhost", env="POSTGRES_HOST")
POSTGRES_PORT: int = Field(default=5432, env="POSTGRES_PORT")
@property
def DATABASE_URL(self) -> str:
"""Construct database URL from components"""
return (
f"postgresql://{self.POSTGRES_USER}:{self.POSTGRES_PASSWORD}"
f"@{self.POSTGRES_HOST}:{self.POSTGRES_PORT}/{self.POSTGRES_DB}"
)
@property
def ASYNC_DATABASE_URL(self) -> str:
"""Construct async database URL from components"""
return (
f"postgresql+asyncpg://{self.POSTGRES_USER}:{self.POSTGRES_PASSWORD}"
f"@{self.POSTGRES_HOST}:{self.POSTGRES_PORT}/{self.POSTGRES_DB}"
)
# CLaRa Model Configuration
MODEL_NAME: str = Field(default="apple/CLaRa-7B-Instruct", env="MODEL_NAME")
MODEL_CACHE_DIR: str = Field(default="./model_cache", env="MODEL_CACHE_DIR")
DEVICE: str = Field(default="cuda", env="DEVICE")
MAX_CONTEXT_TOKENS: int = Field(default=32768, env="MAX_CONTEXT_TOKENS")
COMPRESSION_RATIO: int = Field(default=16, env="COMPRESSION_RATIO")
# Storage Configuration
LATENT_TENSOR_DIR: str = Field(default="./data/latent_tensors", env="LATENT_TENSOR_DIR")
# API Configuration
API_HOST: str = Field(default="0.0.0.0", env="API_HOST")
API_PORT: int = Field(default=8000, env="API_PORT")
# Security
SECRET_KEY: str = Field(default="your-secret-key-here-change-in-production", env="SECRET_KEY")
ALGORITHM: str = Field(default="HS256", env="ALGORITHM")
ACCESS_TOKEN_EXPIRE_MINUTES: int = Field(default=30, env="ACCESS_TOKEN_EXPIRE_MINUTES")
class Config:
env_file = ".env"
case_sensitive = True
extra = "ignore" # Allow extra fields in .env file
# Global settings instance
settings = Settings()
# Ensure required directories exist
os.makedirs(settings.LATENT_TENSOR_DIR, exist_ok=True)
os.makedirs(settings.MODEL_CACHE_DIR, exist_ok=True)