# jvagent Environment Configuration Template
# Copy to .env and fill in your values. Never commit .env to version control.
# Overrides app.yaml; env vars take precedence. See app.yaml config section for defaults.

# ============================================================================
# APPLICATION IDENTIFIER
# ============================================================================
# This is the application identifier. Override this in production.
JVAGENT_APP_ID=""

# ============================================================================
# REQUIRED SECRETS (production)
# ============================================================================

# JWT Secret (CHANGE IN PRODUCTION!)
# Generate: openssl rand -hex 32
# Required when auth is enabled (no implicit default). Generate: openssl rand -hex 32
JVSPATIAL_JWT_SECRET_KEY=""
# Admin bootstrap (required to create initial admin user)
JVAGENT_ADMIN_PASSWORD=""
# OpenAI API Key — OpenAI-compatible APIs and PageIndex tree search
OPENAI_API_KEY=""
# Serper API Key (for Serper-based actions)
SERPER_API_KEY=""
# ELEVENLABS API Key (for ElevenLabs-based actions)
ELEVENLABS_API_KEY=""
# Deepgram API Key (for Deepgram-based actions)
DEEPGRAM_API_KEY=""
# Typesense API key (TypesenseVectorStore)
TYPESENSE_API_KEY=""
# Brave Search API (BraveWebSearchAction)
BRAVE_SEARCH_KEY=""
# SerpAPI (SerpAPIWebSearchAction; distinct from Serper)
SERPAPI_API_KEY=""
# Postiz Public API (PostizAction)
POSTIZ_API_KEY=""
# ============================================================================
# ADMIN BOOTSTRAP
# ============================================================================
JVAGENT_ADMIN_USERNAME=admin
JVAGENT_ADMIN_EMAIL=admin@jvagent.example

# ============================================================================
# SERVER
# ============================================================================
# JVAGENT_HOST=127.0.0.1
# JVAGENT_PORT=8000
# JVAGENT_TITLE=jvagent API
# JVAGENT_DESCRIPTION=jvagent Agentive Platform API
# JVAGENT_VERSION=0.0.1

# Public origin (webhooks, OAuth, media URLs — WhatsApp, Messenger, Google)
# Example: https://your-app.example.com or http://localhost:8000
JVAGENT_PUBLIC_BASE_URL=""

# ============================================================================
# DATABASE
# ============================================================================
# JVSPATIAL_DB_TYPE=mongodb
# JVSPATIAL_DB_PATH=./jvagent_db

# MongoDB
# JVSPATIAL_MONGODB_URI=""
# JVSPATIAL_MONGODB_DB_NAME=""
# JVSPATIAL_MONGODB_MAX_POOL_SIZE=10
# JVSPATIAL_MONGODB_MIN_POOL_SIZE=0

# DynamoDB (AWS Lambda / serverless)
# JVSPATIAL_DYNAMODB_TABLE_NAME=jvspatial
# JVSPATIAL_DYNAMODB_REGION=us-east-1
# JVSPATIAL_DYNAMODB_ENDPOINT_URL=
# AWS_ACCESS_KEY_ID=
# AWS_SECRET_ACCESS_KEY=

# ============================================================================
# LOGGING DATABASE (jvspatial: JVSPATIAL_DB_LOGGING_* / JVSPATIAL_LOG_DB_*)
# ============================================================================
# JVSPATIAL_DB_LOGGING_ENABLED=true
# JVSPATIAL_DB_LOGGING_LEVELS=INTERACTION,ERROR,CRITICAL
# JVSPATIAL_LOG_DB_TYPE=""
# JVSPATIAL_LOG_DB_URI=mongodb://localhost:27017
# JVSPATIAL_LOG_RETENTION_DEFAULT_DAYS=60
# JVSPATIAL_LOG_DB_NAME=""
# JVSPATIAL_LOG_DB_PATH=""

# DynamoDB logging (when JVSPATIAL_LOG_DB_TYPE=dynamodb)
# JVSPATIAL_LOG_DB_TABLE_NAME=jvagent_logs
# JVSPATIAL_LOG_DB_REGION=us-east-1
# JVSPATIAL_LOG_DB_ENDPOINT_URL=

# ============================================================================
# AUTHENTICATION
# ============================================================================
# JVAGENT_AUTH_ENABLED=true
# JVSPATIAL_JWT_EXPIRE_MINUTES=60
# JVAGENT_API_KEY_MANAGEMENT_ENABLED=true
# JVAGENT_API_KEY_PREFIX=jv_
# JVAGENT_API_KEY_HEADER=x-api-key

# ============================================================================
# CORS
# ============================================================================
JVSPATIAL_CORS_ENABLED=true
JVSPATIAL_CORS_ORIGINS=http://localhost:3000,http://127.0.0.1:3000,http://localhost:8000,http://127.0.0.1:8000,http://localhost:5173,http://127.0.0.1:5173

# ============================================================================
# FILE STORAGE
# ============================================================================
JVSPATIAL_FILE_STORAGE_ENABLED=true
# JVSPATIAL_FILES_PUBLIC_READ=true
JVSPATIAL_FILE_STORAGE_PROVIDER=local
# JVSPATIAL_FILES_ROOT_PATH=./.files
# JVSPATIAL_FILE_STORAGE_BASE_URL=http://localhost:8000
# JVSPATIAL_FILE_STORAGE_MAX_SIZE=104857600

# ============================================================================
# API
# ============================================================================
JVSPATIAL_GRAPH_ENDPOINT_ENABLED=true

# ============================================================================
# INTERACT ENDPOINT
# ============================================================================
JVAGENT_INTERACT_RATE_LIMIT_PER_MINUTE=60
JVAGENT_INTERACT_MAX_UTTERANCE_LENGTH=2000  # null or empty = unlimited

# ============================================================================
# DEVELOPMENT & LOGGING
# ============================================================================
JVSPATIAL_LOG_LEVEL=info
JVSPATIAL_DEBUG=false
JVSPATIAL_ENVIRONMENT=development

# jvspatial serverless override (optional; Lambda auto-detected). See jvspatial serverless-mode.md
# SERVERLESS_MODE=true

# ============================================================================
# WHATSAPP INTEGRATION
# ============================================================================
# WHATSAPP_API_URL=""
# WHATSAPP_API_KEY=""
# WHATSAPP_SESSION=your-session-id-here
# WHATSAPP_TOKEN=your-token-here
# WHATSAPP_SESSION_REGISTER_TIMEOUT_SECONDS=120
# WHATSAPP_SKIP_STARTUP_REGISTRATION=false

# LWA: direct-invoke / EventBridge → jvspatial POST {API_PREFIX}/_internal/deferred (default /api/_internal/deferred).
# jvspatial may set these when serverless+AWS if unset; mirror in Lambda env for production.
# AWS_LWA_INVOKE_MODE=RESPONSE_STREAM
# AWS_LWA_PASS_THROUGH_PATH=/api/_internal/deferred

# EventBridge: JVSPATIAL_EVENTBRIDGE_SCHEDULER_ENABLED defaults to true on serverless AWS; set false for Lambda invoke only.
# JVSPATIAL_EVENTBRIDGE_ROLE_ARN=arn:aws:iam::...  # required for schedules to succeed
# JVSPATIAL_EVENTBRIDGE_LAMBDA_ARN=arn:aws:lambda:...
# If JVSPATIAL_EVENTBRIDGE_LAMBDA_ARN unset, ARN built from AWS_LAMBDA_FUNCTION_NAME + AWS_REGION + AWS_ACCOUNT_ID:
# AWS_REGION=us-east-1
# AWS_ACCOUNT_ID=123456789012
# JVSPATIAL_EVENTBRIDGE_SCHEDULER_GROUP=default

# ============================================================================
# WEBHOOK (jvspatial)
# ============================================================================
JVSPATIAL_WEBHOOK_HMAC_SECRET=""
# JVSPATIAL_WEBHOOK_HMAC_ALGORITHM=sha256
# JVSPATIAL_WEBHOOK_MAX_PAYLOAD_SIZE=1048576
# JVSPATIAL_WEBHOOK_IDEMPOTENCY_TTL=3600
# JVSPATIAL_WEBHOOK_HTTPS_REQUIRED=true

# ============================================================================
# JVSPATIAL CACHE (entity cache)
# ============================================================================
JVSPATIAL_CACHE_BACKEND=memory
# JVSPATIAL_CACHE_SIZE=1000
# JVSPATIAL_L1_CACHE_SIZE=500
# JVSPATIAL_REDIS_URL=redis://localhost:6379
# JVSPATIAL_REDIS_TTL=3600

# ============================================================================
# PERFORMANCE (jvagent)
# ============================================================================
# JVAGENT_ENABLE_PROFILING=false
JVAGENT_ENABLE_AGENT_CACHE=true
JVAGENT_AGENT_CACHE_TTL=300
JVAGENT_ENABLE_ACTION_CACHE=true
JVAGENT_ACTION_CACHE_TTL=60
JVAGENT_CACHE_CLEANUP_PROBABILITY=0.1

# ============================================================================
# JVSPATIAL PERFORMANCE
# ============================================================================
JVSPATIAL_ENABLE_DEFERRED_SAVES=true

# JVSPATIAL_* invalid keys (do not set): JVSPATIAL_JSONDB_PATH, JVSPATIAL_SQLITE_PATH,
# JVSPATIAL_S3_REGION_NAME, JVSPATIAL_S3_ACCESS_KEY_ID, JVSPATIAL_S3_SECRET_ACCESS_KEY,
# JVSPATIAL_L1_SIZE, JVSPATIAL_JWT_EXPIRATION_HOURS, JVSPATIAL_JWT_REFRESH_EXPIRATION_DAYS.
# See docs/configuration.md.
