"""Default values shared across configuration models."""

from pathlib import Path


_DEFAULTS: dict[str, object] = {
    "CHECKPOINT_BACKEND": "sqlite",
    "SQLITE_PATH": "~/.orcheo/checkpoints.sqlite",
    "GRAPH_STORE_BACKEND": "sqlite",
    "GRAPH_STORE_SQLITE_PATH": str(Path.home() / ".orcheo" / "graph_store.sqlite"),
    "REPOSITORY_BACKEND": "sqlite",
    "REPOSITORY_SQLITE_PATH": "~/.orcheo/workflows.sqlite",
    "CHATKIT_BACKEND": "sqlite",
    "CHATKIT_SQLITE_PATH": "~/.orcheo/chatkit.sqlite",
    "CHATKIT_STORAGE_PATH": "~/.orcheo/chatkit",
    "CHATKIT_PUBLIC_BASE_URL": None,
    "CHATKIT_MAX_UPLOAD_SIZE_BYTES": 5_000_000,
    "CHATKIT_RETENTION_DAYS": 30,
    "POSTGRES_DSN": None,
    "POSTGRES_POOL_MIN_SIZE": 1,
    "POSTGRES_POOL_MAX_SIZE": 10,
    "POSTGRES_POOL_TIMEOUT": 30.0,
    "POSTGRES_POOL_MAX_IDLE": 300.0,
    "HOST": "0.0.0.0",
    "PORT": 8000,
    "VAULT_BACKEND": "file",
    "VAULT_ENCRYPTION_KEY": None,
    "VAULT_LOCAL_PATH": "~/.orcheo/vault.sqlite",
    "VAULT_AWS_REGION": None,
    "VAULT_AWS_KMS_KEY_ID": None,
    "VAULT_TOKEN_TTL_SECONDS": 3600,
    "CHATKIT_RATE_LIMIT_IP_LIMIT": 120,
    "CHATKIT_RATE_LIMIT_IP_INTERVAL": 60,
    "CHATKIT_RATE_LIMIT_JWT_LIMIT": 120,
    "CHATKIT_RATE_LIMIT_JWT_INTERVAL": 60,
    "CHATKIT_RATE_LIMIT_PUBLISH_LIMIT": 60,
    "CHATKIT_RATE_LIMIT_PUBLISH_INTERVAL": 60,
    "CHATKIT_RATE_LIMIT_SESSION_LIMIT": 60,
    "CHATKIT_RATE_LIMIT_SESSION_INTERVAL": 60,
    "CHATKIT_WIDGET_TYPES": ["Card", "ListView"],
    "CHATKIT_WIDGET_ACTION_TYPES": ["submit"],
    "TRACING_EXPORTER": "none",
    "TRACING_ENDPOINT": None,
    "TRACING_SERVICE_NAME": "orcheo-backend",
    "TRACING_SAMPLE_RATIO": 1.0,
    "TRACING_INSECURE": False,
    "TRACING_HIGH_TOKEN_THRESHOLD": 1000,
    "TRACING_PREVIEW_MAX_LENGTH": 512,
}

__all__ = ["_DEFAULTS"]
