diff --git a/api/oss/src/utils/env.py b/api/oss/src/utils/env.py index 77d872033d..d935bc9607 100644 --- a/api/oss/src/utils/env.py +++ b/api/oss/src/utils/env.py @@ -9,110 +9,112 @@ class EnvironSettings(BaseModel): # AGENTA-SPECIFIC (REQUIRED) AGENTA_LICENSE: str = "ee" if os.getenv("AGENTA_LICENSE") == "ee" else "oss" - AGENTA_API_URL: str = os.getenv("AGENTA_API_URL", "http://localhost/api") - AGENTA_WEB_URL: str = os.getenv("AGENTA_WEB_URL", "") - AGENTA_SERVICES_URL: str = os.getenv("AGENTA_SERVICES_URL", "") - AGENTA_AUTH_KEY: str = os.getenv("AGENTA_AUTH_KEY", "") - AGENTA_CRYPT_KEY: str = os.getenv("AGENTA_CRYPT_KEY", "") + AGENTA_API_URL: str = os.getenv("AGENTA_API_URL") or "http://localhost/api" + AGENTA_WEB_URL: str = os.getenv("AGENTA_WEB_URL") or "" + AGENTA_SERVICES_URL: str = os.getenv("AGENTA_SERVICES_URL") or "" + AGENTA_AUTH_KEY: str = os.getenv("AGENTA_AUTH_KEY") or "" + AGENTA_CRYPT_KEY: str = os.getenv("AGENTA_CRYPT_KEY") or "" # AGENTA-SPECIFIC (OPTIONAL) AGENTA_AUTO_MIGRATIONS: bool = ( - os.getenv("AGENTA_AUTO_MIGRATIONS", "true").lower() in _TRUTHY - ) - AGENTA_PRICING: str = os.getenv("AGENTA_PRICING", "{}") - AGENTA_DEMOS: str = os.getenv("AGENTA_DEMOS", "") - AGENTA_RUNTIME_PREFIX: str = os.getenv("AGENTA_RUNTIME_PREFIX", "") + os.getenv("AGENTA_AUTO_MIGRATIONS") or "true" + ).lower() in _TRUTHY + AGENTA_PRICING: str = os.getenv("AGENTA_PRICING") or "{}" + AGENTA_DEMOS: str = os.getenv("AGENTA_DEMOS") or "" + AGENTA_RUNTIME_PREFIX: str = os.getenv("AGENTA_RUNTIME_PREFIX") or "" # SUPERTOKENS (REQUIRED) - SUPERTOKENS_CONNECTION_URI: str = os.getenv("SUPERTOKENS_CONNECTION_URI", "") - SUPERTOKENS_API_KEY: str = os.getenv("SUPERTOKENS_API_KEY", "") + SUPERTOKENS_CONNECTION_URI: str = os.getenv("SUPERTOKENS_CONNECTION_URI") or "" + SUPERTOKENS_API_KEY: str = os.getenv("SUPERTOKENS_API_KEY") or "" # DATABASE (REQUIRED) - POSTGRES_URI_CORE: str = os.getenv("POSTGRES_URI_CORE", "") - POSTGRES_URI_TRACING: str = os.getenv("POSTGRES_URI_TRACING", "") - POSTGRES_URI_SUPERTOKENS: str = os.getenv("POSTGRES_URI_SUPERTOKENS", "") - ALEMBIC_CFG_PATH_CORE: str = os.getenv("ALEMBIC_CFG_PATH_CORE", "") - ALEMBIC_CFG_PATH_TRACING: str = os.getenv("ALEMBIC_CFG_PATH_TRACING", "") + POSTGRES_URI_CORE: str = os.getenv("POSTGRES_URI_CORE") or "" + POSTGRES_URI_TRACING: str = os.getenv("POSTGRES_URI_TRACING") or "" + POSTGRES_URI_SUPERTOKENS: str = os.getenv("POSTGRES_URI_SUPERTOKENS") or "" + ALEMBIC_CFG_PATH_CORE: str = os.getenv("ALEMBIC_CFG_PATH_CORE") or "" + ALEMBIC_CFG_PATH_TRACING: str = os.getenv("ALEMBIC_CFG_PATH_TRACING") or "" # TASK QUEUE / BROKER (REQUIRED) - REDIS_URL: str = os.getenv("REDIS_URL", "") - RABBITMQ_DEFAULT_USER: str = os.getenv("RABBITMQ_DEFAULT_USER", "guest") - RABBITMQ_DEFAULT_PASS: str = os.getenv("RABBITMQ_DEFAULT_PASS", "guest") - CELERY_BROKER_URL: str = os.getenv("CELERY_BROKER_URL", "") - CELERY_RESULT_BACKEND: str = os.getenv("CELERY_RESULT_BACKEND", "") + REDIS_URL: str = os.getenv("REDIS_URL") or "" + RABBITMQ_DEFAULT_USER: str = os.getenv("RABBITMQ_DEFAULT_USER") or "guest" + RABBITMQ_DEFAULT_PASS: str = os.getenv("RABBITMQ_DEFAULT_PASS") or "guest" + CELERY_BROKER_URL: str = os.getenv("CELERY_BROKER_URL") or "" + CELERY_RESULT_BACKEND: str = os.getenv("CELERY_RESULT_BACKEND") or "" # CACHE (REQUIRED) - REDIS_CACHE_HOST: str = os.getenv("REDIS_CACHE_HOST", "cache") - REDIS_CACHE_PORT: int = int(os.getenv("REDIS_CACHE_PORT", "6378")) + REDIS_CACHE_HOST: str = os.getenv("REDIS_CACHE_HOST") or "cache" + REDIS_CACHE_PORT: int = int(os.getenv("REDIS_CACHE_PORT") or "6378") # Mail - SENDGRID_API_KEY: str = os.getenv("SENDGRID_API_KEY", "") - AGENTA_SEND_EMAIL_FROM_ADDRESS: str = os.getenv( - "AGENTA_SEND_EMAIL_FROM_ADDRESS", "" + SENDGRID_API_KEY: str = os.getenv("SENDGRID_API_KEY") or "" + AGENTA_SEND_EMAIL_FROM_ADDRESS: str = ( + os.getenv("AGENTA_SEND_EMAIL_FROM_ADDRESS") or "" ) # Optional integrations - POSTHOG_API_KEY: str = os.getenv("POSTHOG_API_KEY") - POSTHOG_HOST: str = os.getenv("POSTHOG_HOST", "https://app.posthog.com") - GOOGLE_OAUTH_CLIENT_ID: str = os.getenv("GOOGLE_OAUTH_CLIENT_ID", "") - GOOGLE_OAUTH_CLIENT_SECRET: str = os.getenv("GOOGLE_OAUTH_CLIENT_SECRET", "") - GITHUB_OAUTH_CLIENT_ID: str = os.getenv("GITHUB_OAUTH_CLIENT_ID", "") - GITHUB_OAUTH_CLIENT_SECRET: str = os.getenv("GITHUB_OAUTH_CLIENT_SECRET", "") - NEW_RELIC_LICENSE_KEY: str = os.getenv("NEW_RELIC_LICENSE_KEY", "") - NRIA_LICENSE_KEY: str = os.getenv("NRIA_LICENSE_KEY", "") - LOOPS_API_KEY: str = os.getenv("LOOPS_API_KEY", "") - CRISP_WEBSITE_ID: str = os.getenv("CRISP_WEBSITE_ID", "") - STRIPE_API_KEY: str = os.getenv("STRIPE_API_KEY", "") - STRIPE_WEBHOOK_SECRET: str = os.getenv("STRIPE_WEBHOOK_SECRET", "") + POSTHOG_API_KEY: str = os.getenv("POSTHOG_API_KEY") or "" + POSTHOG_HOST: str = os.getenv("POSTHOG_HOST", "https://app.posthog.com") or "" + GOOGLE_OAUTH_CLIENT_ID: str = os.getenv("GOOGLE_OAUTH_CLIENT_ID", "") or "" + GOOGLE_OAUTH_CLIENT_SECRET: str = os.getenv("GOOGLE_OAUTH_CLIENT_SECRET", "") or "" + GITHUB_OAUTH_CLIENT_ID: str = os.getenv("GITHUB_OAUTH_CLIENT_ID", "") or "" + GITHUB_OAUTH_CLIENT_SECRET: str = os.getenv("GITHUB_OAUTH_CLIENT_SECRET", "") or "" + NEW_RELIC_LICENSE_KEY: str = os.getenv("NEW_RELIC_LICENSE_KEY", "") or "" + NRIA_LICENSE_KEY: str = os.getenv("NRIA_LICENSE_KEY", "") or "" + LOOPS_API_KEY: str = os.getenv("LOOPS_API_KEY", "") or "" + CRISP_WEBSITE_ID: str = os.getenv("CRISP_WEBSITE_ID", "") or "" + STRIPE_API_KEY: str = os.getenv("STRIPE_API_KEY", "") or "" + STRIPE_WEBHOOK_SECRET: str = os.getenv("STRIPE_WEBHOOK_SECRET", "") or "" # LLM Providers (optional) - ALEPHALPHA_API_KEY: str = os.getenv("ALEPHALPHA_API_KEY", "") - ANTHROPIC_API_KEY: str = os.getenv("ANTHROPIC_API_KEY", "") - ANYSCALE_API_KEY: str = os.getenv("ANYSCALE_API_KEY", "") - COHERE_API_KEY: str = os.getenv("COHERE_API_KEY", "") - DEEPINFRA_API_KEY: str = os.getenv("DEEPINFRA_API_KEY", "") - GEMINI_API_KEY: str = os.getenv("GEMINI_API_KEY", "") - GROQ_API_KEY: str = os.getenv("GROQ_API_KEY", "") - MISTRAL_API_KEY: str = os.getenv("MISTRAL_API_KEY", "") - OPENAI_API_KEY: str = os.getenv("OPENAI_API_KEY", "") - OPENROUTER_API_KEY: str = os.getenv("OPENROUTER_API_KEY", "") - PERPLEXITYAI_API_KEY: str = os.getenv("PERPLEXITYAI_API_KEY", "") - TOGETHERAI_API_KEY: str = os.getenv("TOGETHERAI_API_KEY", "") + ALEPHALPHA_API_KEY: str = os.getenv("ALEPHALPHA_API_KEY", "") or "" + ANTHROPIC_API_KEY: str = os.getenv("ANTHROPIC_API_KEY", "") or "" + ANYSCALE_API_KEY: str = os.getenv("ANYSCALE_API_KEY", "") or "" + COHERE_API_KEY: str = os.getenv("COHERE_API_KEY", "") or "" + DEEPINFRA_API_KEY: str = os.getenv("DEEPINFRA_API_KEY", "") or "" + GEMINI_API_KEY: str = os.getenv("GEMINI_API_KEY", "") or "" + GROQ_API_KEY: str = os.getenv("GROQ_API_KEY", "") or "" + MISTRAL_API_KEY: str = os.getenv("MISTRAL_API_KEY", "") or "" + OPENAI_API_KEY: str = os.getenv("OPENAI_API_KEY", "") or "" + OPENROUTER_API_KEY: str = os.getenv("OPENROUTER_API_KEY", "") or "" + PERPLEXITYAI_API_KEY: str = os.getenv("PERPLEXITYAI_API_KEY", "") or "" + TOGETHERAI_API_KEY: str = os.getenv("TOGETHERAI_API_KEY", "") or "" AGENTA_BLOCKED_EMAILS: set = { e.strip().lower() - for e in os.getenv("AGENTA_BLOCKED_EMAILS", "").split(",") + for e in (os.getenv("AGENTA_BLOCKED_EMAILS") or "").split(",") if e.strip() } AGENTA_BLOCKED_DOMAINS: set = { e.strip().lower() - for e in os.getenv("AGENTA_BLOCKED_DOMAINS", "").split(",") + for e in (os.getenv("AGENTA_BLOCKED_DOMAINS") or "").split(",") if e.strip() } # AGENTA-SPECIFIC (INTERNAL INFRA) - DOCKER_NETWORK_MODE: str = os.getenv("DOCKER_NETWORK_MODE", "bridge") + DOCKER_NETWORK_MODE: str = os.getenv("DOCKER_NETWORK_MODE") or "bridge" # AGENTA-SPECIFIC (INTERNAL LOGGING) AGENTA_LOG_CONSOLE_ENABLED: bool = ( - os.getenv("AGENTA_LOG_CONSOLE_ENABLED", "true") in _TRUTHY - ) - AGENTA_LOG_CONSOLE_LEVEL: str = os.getenv( - "AGENTA_LOG_CONSOLE_LEVEL", "TRACE" + os.getenv("AGENTA_LOG_CONSOLE_ENABLED") or "true" + ) in _TRUTHY + AGENTA_LOG_CONSOLE_LEVEL: str = ( + os.getenv("AGENTA_LOG_CONSOLE_LEVEL") or "TRACE" ).upper() AGENTA_LOG_OTLP_ENABLED: bool = ( - os.getenv("AGENTA_LOG_OTLP_ENABLED", "false") in _TRUTHY - ) - AGENTA_LOG_OTLP_LEVEL: str = os.getenv("AGENTA_LOG_OTLP_LEVEL", "INFO").upper() + os.getenv("AGENTA_LOG_OTLP_ENABLED") or "false" + ) in _TRUTHY + AGENTA_LOG_OTLP_LEVEL: str = (os.getenv("AGENTA_LOG_OTLP_LEVEL") or "INFO").upper() AGENTA_LOG_FILE_ENABLED: bool = ( - os.getenv("AGENTA_LOG_FILE_ENABLED", "true") in _TRUTHY - ) - AGENTA_LOG_FILE_LEVEL: str = os.getenv("AGENTA_LOG_FILE_LEVEL", "WARNING").upper() - AGENTA_LOG_FILE_BASE: str = os.getenv("AGENTA_LOG_FILE_PATH", "error") + os.getenv("AGENTA_LOG_FILE_ENABLED") or "true" + ) in _TRUTHY + AGENTA_LOG_FILE_LEVEL: str = ( + os.getenv("AGENTA_LOG_FILE_LEVEL") or "WARNING" + ).upper() + AGENTA_LOG_FILE_BASE: str = os.getenv("AGENTA_LOG_FILE_PATH") or "error" # AGENTA-SPECIFIC (OTLP) AGENTA_OTLP_MAX_BATCH_BYTES: int = int( - os.getenv("AGENTA_OTLP_MAX_BATCH_BYTES", str(10 * 1024 * 1024)) + os.getenv("AGENTA_OTLP_MAX_BATCH_BYTES") or str(10 * 1024 * 1024) ) diff --git a/api/pyproject.toml b/api/pyproject.toml index 024944f631..72829ceeeb 100644 --- a/api/pyproject.toml +++ b/api/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "api" -version = "0.59.4" +version = "0.59.5" description = "Agenta API" authors = [ { name = "Mahmoud Mabrouk", email = "mahmoud@agenta.ai" }, diff --git a/hosting/docker-compose/oss/env.oss.dev.example b/hosting/docker-compose/oss/env.oss.dev.example index 31ad594f83..05e16eda8a 100644 --- a/hosting/docker-compose/oss/env.oss.dev.example +++ b/hosting/docker-compose/oss/env.oss.dev.example @@ -36,8 +36,6 @@ RABBITMQ_DEFAULT_PASS=guest CELERY_BROKER_URL=amqp://guest@rabbitmq// CELERY_RESULT_BACKEND=redis://redis:6379/0 -REDIS_CACHE_HOST=cache -REDIS_CACHE_PORT=6378 POSTGRES_URI_SUPERTOKENS=postgresql://username:password@postgres:5432/agenta_oss_supertokens POSTGRES_URI_CORE=postgresql+asyncpg://username:password@postgres:5432/agenta_oss_core @@ -58,6 +56,7 @@ NGINX_PORT=80 SUPERTOKENS_API_KEY= RABBITMQ_PORT= RABBITMQ_UI_PORT= +REDIS_CACHE_HOST= REDIS_CACHE_PORT= POSTGRES_PORT= SUPERTOKENS_PORT= diff --git a/hosting/docker-compose/oss/env.oss.gh.example b/hosting/docker-compose/oss/env.oss.gh.example index 31ad594f83..05e16eda8a 100644 --- a/hosting/docker-compose/oss/env.oss.gh.example +++ b/hosting/docker-compose/oss/env.oss.gh.example @@ -36,8 +36,6 @@ RABBITMQ_DEFAULT_PASS=guest CELERY_BROKER_URL=amqp://guest@rabbitmq// CELERY_RESULT_BACKEND=redis://redis:6379/0 -REDIS_CACHE_HOST=cache -REDIS_CACHE_PORT=6378 POSTGRES_URI_SUPERTOKENS=postgresql://username:password@postgres:5432/agenta_oss_supertokens POSTGRES_URI_CORE=postgresql+asyncpg://username:password@postgres:5432/agenta_oss_core @@ -58,6 +56,7 @@ NGINX_PORT=80 SUPERTOKENS_API_KEY= RABBITMQ_PORT= RABBITMQ_UI_PORT= +REDIS_CACHE_HOST= REDIS_CACHE_PORT= POSTGRES_PORT= SUPERTOKENS_PORT= diff --git a/sdk/pyproject.toml b/sdk/pyproject.toml index 8d90fb82ce..dea78ed39c 100644 --- a/sdk/pyproject.toml +++ b/sdk/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "agenta" -version = "0.59.4" +version = "0.59.5" description = "The SDK for agenta is an open-source LLMOps platform." readme = "README.md" authors = [ diff --git a/web/ee/package.json b/web/ee/package.json index 24065cd219..90040a99ec 100644 --- a/web/ee/package.json +++ b/web/ee/package.json @@ -1,6 +1,6 @@ { "name": "@agenta/ee", - "version": "0.59.4", + "version": "0.59.5", "private": true, "engines": { "node": ">=18" diff --git a/web/oss/package.json b/web/oss/package.json index aba1172dbc..c695a2bba8 100644 --- a/web/oss/package.json +++ b/web/oss/package.json @@ -1,6 +1,6 @@ { "name": "@agenta/oss", - "version": "0.59.4", + "version": "0.59.5", "private": true, "engines": { "node": ">=18" diff --git a/web/package.json b/web/package.json index 282c47a75e..33dd60c13b 100644 --- a/web/package.json +++ b/web/package.json @@ -1,6 +1,6 @@ { "name": "agenta-web", - "version": "0.59.4", + "version": "0.59.5", "workspaces": [ "ee", "oss",