File size: 2,541 Bytes
88f8604
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
"""
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)