Files
hack/tools/scripts/llm-key-hunter/results/_cache/content/arnab2001_optischema-slim.json
T

1 line
51 KiB
JSON

{"repo": "arnab2001/optischema-slim", "files": {"docker-compose.yml": {"a945676bcb516ab611df7a2460217a3cf1d2c9e8": {"t": 1785745234.711854, "n": 768, "h": "6f6faa3c4ccd32ea", "c": "services:\n # All-In-One OptiSchema Slim\n optischema:\n build:\n context: .\n dockerfile: Dockerfile\n container_name: optischema\n environment:\n - OPENAI_API_KEY=${OPENAI_API_KEY}\n - GEMINI_API_KEY=${GEMINI_API_KEY}\n - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\n - LLM_PROVIDER=${LLM_PROVIDER:-gemini}\n - OLLAMA_BASE_URL=${OLLAMA_BASE_URL:-http://host.docker.internal:11434}\n - ENVIRONMENT=production\n - DEBUG=false\n ports:\n - \"8099:8080\"\n volumes:\n - optischema_data:/app/data\n extra_hosts:\n - \"host.docker.internal:host-gateway\"\n networks:\n - optischema-network\n restart: unless-stopped\n\nvolumes:\n optischema_data:\n driver: local\n\nnetworks:\n optischema-network:\n driver: bridge\n"}, "5797dce04a1732f40417f18ec810e2a0377dc35f": {"t": 1785749063.012572, "n": 768, "h": "6f6faa3c4ccd32ea", "c": "services:\n # All-In-One OptiSchema Slim\n optischema:\n build:\n context: .\n dockerfile: Dockerfile\n container_name: optischema\n environment:\n - OPENAI_API_KEY=${OPENAI_API_KEY}\n - GEMINI_API_KEY=${GEMINI_API_KEY}\n - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\n - LLM_PROVIDER=${LLM_PROVIDER:-gemini}\n - OLLAMA_BASE_URL=${OLLAMA_BASE_URL:-http://host.docker.internal:11434}\n - ENVIRONMENT=production\n - DEBUG=false\n ports:\n - \"8099:8080\"\n volumes:\n - optischema_data:/app/data\n extra_hosts:\n - \"host.docker.internal:host-gateway\"\n networks:\n - optischema-network\n restart: unless-stopped\n\nvolumes:\n optischema_data:\n driver: local\n\nnetworks:\n optischema-network:\n driver: bridge\n"}, "974d76607c0a3cd6f648651c1d0fd9a8a4d03ebf": {"t": 1785749064.1578188, "n": 768, "h": "ddad57bfcce12916", "c": "services:\n # All-In-One OptiSchema Slim\n optischema:\n build:\n context: .\n dockerfile: Dockerfile\n container_name: optischema\n environment:\n - OPENAI_API_KEY=${OPENAI_API_KEY}\n - GEMINI_API_KEY=${GEMINI_API_KEY}\n - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\n - LLM_PROVIDER=${LLM_PROVIDER:-gemini}\n - OLLAMA_BASE_URL=${OLLAMA_BASE_URL:-http://host.docker.internal:11434}\n - ENVIRONMENT=production\n - DEBUG=false\n ports:\n - \"8080:8080\"\n volumes:\n - optischema_data:/app/data\n extra_hosts:\n - \"host.docker.internal:host-gateway\"\n networks:\n - optischema-network\n restart: unless-stopped\n\nvolumes:\n optischema_data:\n driver: local\n\nnetworks:\n optischema-network:\n driver: bridge\n"}, "c154cf010970560c8b12a9b000d2671b11dcfacb": {"t": 1785749065.241202, "n": 1827, "h": "3fd30ae840046bf8", "c": "services:\n # FastAPI Backend\n optischema-api:\n build:\n context: .\n dockerfile: docker/backend.Dockerfile\n container_name: optischema-api\n environment:\n - OPENAI_API_KEY=${OPENAI_API_KEY}\n - OPENAI_MODEL=${OPENAI_MODEL:-gpt-4o}\n - GEMINI_API_KEY=${GEMINI_API_KEY}\n - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\n - LLM_PROVIDER=${LLM_PROVIDER:-gemini}\n - BACKEND_HOST=${BACKEND_HOST:-0.0.0.0}\n - BACKEND_PORT=${BACKEND_PORT:-8080}\n - BACKEND_RELOAD=${BACKEND_RELOAD:-true}\n - ENVIRONMENT=${ENVIRONMENT:-development}\n - DEBUG=${DEBUG:-true}\n - LOG_LEVEL=${LOG_LEVEL:-INFO}\n - CACHE_TTL=${CACHE_TTL:-3600}\n - CACHE_SIZE=${CACHE_SIZE:-1000}\n - POLLING_INTERVAL=${POLLING_INTERVAL:-30}\n - TOP_QUERIES_LIMIT=${TOP_QUERIES_LIMIT:-10}\n - ANALYSIS_INTERVAL=${ANALYSIS_INTERVAL:-60}\n - OLLAMA_BASE_URL=${OLLAMA_BASE_URL:-http://host.docker.internal:11434}\n ports:\n - \"8080:8080\"\n volumes:\n - ./backend:/app\n - ./scripts:/scripts\n - ./.env:/app/.env\n - api_cache:/app/cache\n extra_hosts:\n - \"host.docker.internal:host-gateway\"\n networks:\n - optischema-network\n restart: unless-stopped\n\n # Next.js Frontend\n optischema-ui:\n build:\n context: .\n dockerfile: docker/frontend.Dockerfile\n container_name: optischema-ui\n environment:\n - NEXT_PUBLIC_API_URL=http://localhost:8080\n - BACKEND_URL=http://optischema-api:8080\n - NODE_ENV=development\n ports:\n - \"3000:3000\"\n volumes:\n - ./frontend:/app\n - /app/node_modules\n - /app/.next\n depends_on:\n - optischema-api\n networks:\n - optischema-network\n restart: unless-stopped\n\nvolumes:\n api_cache:\n driver: local\n\nnetworks:\n optischema-network:\n driver: bridge\n \n"}, "01362316e01a4aa1d9f5b39079644ac834a18c2f": {"t": 1785749066.4803586, "n": 1813, "h": "5ad3395178de362c", "c": "services:\n # FastAPI Backend\n optischema-api:\n build:\n context: ./backend\n dockerfile: Dockerfile\n container_name: optischema-api\n environment:\n - OPENAI_API_KEY=${OPENAI_API_KEY}\n - OPENAI_MODEL=${OPENAI_MODEL:-gpt-4o}\n - GEMINI_API_KEY=${GEMINI_API_KEY}\n - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\n - LLM_PROVIDER=${LLM_PROVIDER:-gemini}\n - BACKEND_HOST=${BACKEND_HOST:-0.0.0.0}\n - BACKEND_PORT=${BACKEND_PORT:-8080}\n - BACKEND_RELOAD=${BACKEND_RELOAD:-true}\n - ENVIRONMENT=${ENVIRONMENT:-development}\n - DEBUG=${DEBUG:-true}\n - LOG_LEVEL=${LOG_LEVEL:-INFO}\n - CACHE_TTL=${CACHE_TTL:-3600}\n - CACHE_SIZE=${CACHE_SIZE:-1000}\n - POLLING_INTERVAL=${POLLING_INTERVAL:-30}\n - TOP_QUERIES_LIMIT=${TOP_QUERIES_LIMIT:-10}\n - ANALYSIS_INTERVAL=${ANALYSIS_INTERVAL:-60}\n - OLLAMA_BASE_URL=${OLLAMA_BASE_URL:-http://host.docker.internal:11434}\n ports:\n - \"8080:8080\"\n volumes:\n - ./backend:/app\n - ./scripts:/scripts\n - ./.env:/app/.env\n - api_cache:/app/cache\n extra_hosts:\n - \"host.docker.internal:host-gateway\"\n networks:\n - optischema-network\n restart: unless-stopped\n\n # Next.js Frontend\n optischema-ui:\n build:\n context: ./frontend\n dockerfile: Dockerfile\n container_name: optischema-ui\n environment:\n - NEXT_PUBLIC_API_URL=http://localhost:8080\n - BACKEND_URL=http://optischema-api:8080\n - NODE_ENV=development\n ports:\n - \"3000:3000\"\n volumes:\n - ./frontend:/app\n - /app/node_modules\n - /app/.next\n depends_on:\n - optischema-api\n networks:\n - optischema-network\n restart: unless-stopped\n\nvolumes:\n api_cache:\n driver: local\n\nnetworks:\n optischema-network:\n driver: bridge\n \n"}, "33f5191ec3e2ca69997a52a40e86807cd7362463": {"t": 1785749067.5558472, "n": 3579, "h": "b1e1d9e37cc07414", "c": "services:\n # PostgreSQL 14 with pg_stat_statements extension\n postgres:\n image: postgres:14\n container_name: optischema-postgres\n environment:\n POSTGRES_DB: ${POSTGRES_DB:-optischema}\n POSTGRES_USER: ${POSTGRES_USER:-optischema}\n POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-optischema_pass}\n command: postgres -c config_file=/etc/postgresql/postgresql.conf\n ports:\n - \"5434:5432\"\n volumes:\n - pgdata:/var/lib/postgresql/data\n - ./scripts/init.sql:/docker-entrypoint-initdb.d/init.sql\n - ./scripts/postgres/postgresql.conf:/etc/postgresql/postgresql.conf\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -U ${POSTGRES_USER:-optischema}\"]\n interval: 10s\n timeout: 5s\n retries: 5\n networks:\n - optischema-network\n\n # FastAPI Backend\n optischema-api:\n build:\n context: ./backend\n dockerfile: Dockerfile\n container_name: optischema-api\n environment:\n - DATABASE_URL=${DATABASE_URL}\n - REPLICA_DATABASE_URL=${REPLICA_DATABASE_URL}\n - SANDBOX_DATABASE_URL=postgresql://optischema:optischema_pass@postgres:5432/optischema\n - REPLICA_ENABLED=true\n - OPENAI_API_KEY=${OPENAI_API_KEY}\n - OPENAI_MODEL=${OPENAI_MODEL:-gpt-4o}\n - GEMINI_API_KEY=${GEMINI_API_KEY}\n - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\n - LLM_PROVIDER=${LLM_PROVIDER:-gemini}\n - BACKEND_HOST=${BACKEND_HOST:-0.0.0.0}\n - BACKEND_PORT=${BACKEND_PORT:-8000}\n - BACKEND_RELOAD=${BACKEND_RELOAD:-true}\n - ENVIRONMENT=${ENVIRONMENT:-development}\n - DEBUG=${DEBUG:-true}\n - LOG_LEVEL=${LOG_LEVEL:-INFO}\n - CACHE_TTL=${CACHE_TTL:-3600}\n - CACHE_SIZE=${CACHE_SIZE:-1000}\n - POLLING_INTERVAL=${POLLING_INTERVAL:-30}\n - TOP_QUERIES_LIMIT=${TOP_QUERIES_LIMIT:-10}\n - ANALYSIS_INTERVAL=${ANALYSIS_INTERVAL:-60}\n ports:\n - \"8000:8000\"\n volumes:\n - ./backend:/app\n - ./scripts:/scripts\n - ./.env:/app/.env\n - api_cache:/app/cache\n depends_on:\n postgres:\n condition: service_healthy\n networks:\n - optischema-network\n restart: unless-stopped\n\n # Next.js Frontend\n optischema-ui:\n build:\n context: ./frontend\n dockerfile: Dockerfile\n container_name: optischema-ui\n environment:\n - NEXT_PUBLIC_API_URL=http://optischema-api:8000\n - NEXT_PUBLIC_WS_URL=${UI_WS_URL:-ws://optischema-api:8000/ws}\n - BACKEND_URL=http://optischema-api:8000\n - NODE_ENV=development\n ports:\n - \"3000:3000\"\n volumes:\n - ./frontend:/app\n - /app/node_modules\n - /app/.next\n depends_on:\n - optischema-api\n networks:\n - optischema-network\n restart: unless-stopped\n\n # Optional: Sandbox PostgreSQL for testing patches\n postgres_sandbox:\n image: postgres:14\n container_name: optischema-sandbox\n environment:\n POSTGRES_DB: ${SANDBOX_POSTGRES_DB:-sandbox}\n POSTGRES_USER: ${SANDBOX_POSTGRES_USER:-sandbox}\n POSTGRES_PASSWORD: ${SANDBOX_POSTGRES_PASSWORD:-sandbox_pass}\n ports:\n - \"5433:5432\"\n volumes:\n - sandbox_data:/var/lib/postgresql/data\n - ./scripts/sandbox_init.sql:/docker-entrypoint-initdb.d/init.sql\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -U ${SANDBOX_POSTGRES_USER:-sandbox}\"]\n interval: 10s\n timeout: 5s\n retries: 5\n networks:\n - optischema-network\n profiles:\n - sandbox\n\nvolumes:\n pgdata:\n driver: local\n api_cache:\n driver: local\n sandbox_data:\n driver: local\n\nnetworks:\n optischema-network:\n driver: bridge \n"}, "7973d829883e5608436c2ea73d910535d45bac3e": {"t": 1785749068.6523833, "n": 3524, "h": "4d139de58489a716", "c": "services:\n # PostgreSQL 14 with pg_stat_statements extension\n postgres:\n image: postgres:14\n container_name: optischema-postgres\n environment:\n POSTGRES_DB: ${POSTGRES_DB:-optischema}\n POSTGRES_USER: ${POSTGRES_USER:-optischema}\n POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-optischema_pass}\n command: postgres -c config_file=/etc/postgresql/postgresql.conf\n ports:\n - \"5432:5432\"\n volumes:\n - pgdata:/var/lib/postgresql/data\n - ./scripts/init.sql:/docker-entrypoint-initdb.d/init.sql\n - ./scripts/postgres/postgresql.conf:/etc/postgresql/postgresql.conf\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -U ${POSTGRES_USER:-optischema}\"]\n interval: 10s\n timeout: 5s\n retries: 5\n networks:\n - optischema-network\n\n # FastAPI Backend\n optischema-api:\n build:\n context: ./backend\n dockerfile: Dockerfile\n container_name: optischema-api\n environment:\n - DATABASE_URL=${DATABASE_URL}\n - REPLICA_DATABASE_URL=postgresql://sandbox:sandbox_pass@postgres_sandbox:5432/sandbox\n - REPLICA_ENABLED=true\n - OPENAI_API_KEY=${OPENAI_API_KEY}\n - OPENAI_MODEL=${OPENAI_MODEL:-gpt-4o}\n - GEMINI_API_KEY=${GEMINI_API_KEY}\n - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\n - LLM_PROVIDER=${LLM_PROVIDER:-gemini}\n - BACKEND_HOST=${BACKEND_HOST:-0.0.0.0}\n - BACKEND_PORT=${BACKEND_PORT:-8000}\n - BACKEND_RELOAD=${BACKEND_RELOAD:-true}\n - ENVIRONMENT=${ENVIRONMENT:-development}\n - DEBUG=${DEBUG:-true}\n - LOG_LEVEL=${LOG_LEVEL:-INFO}\n - CACHE_TTL=${CACHE_TTL:-3600}\n - CACHE_SIZE=${CACHE_SIZE:-1000}\n - POLLING_INTERVAL=${POLLING_INTERVAL:-30}\n - TOP_QUERIES_LIMIT=${TOP_QUERIES_LIMIT:-10}\n - ANALYSIS_INTERVAL=${ANALYSIS_INTERVAL:-60}\n ports:\n - \"8000:8000\"\n volumes:\n - ./backend:/app\n - ./scripts:/scripts\n - ./.env:/app/.env\n - api_cache:/app/cache\n depends_on:\n postgres:\n condition: service_healthy\n networks:\n - optischema-network\n restart: unless-stopped\n\n # Next.js Frontend\n optischema-ui:\n build:\n context: ./frontend\n dockerfile: Dockerfile\n container_name: optischema-ui\n environment:\n - NEXT_PUBLIC_API_URL=http://optischema-api:8000\n - NEXT_PUBLIC_WS_URL=${UI_WS_URL:-ws://optischema-api:8000/ws}\n - BACKEND_URL=http://optischema-api:8000\n - NODE_ENV=development\n ports:\n - \"3000:3000\"\n volumes:\n - ./frontend:/app\n - /app/node_modules\n - /app/.next\n depends_on:\n - optischema-api\n networks:\n - optischema-network\n restart: unless-stopped\n\n # Optional: Sandbox PostgreSQL for testing patches\n postgres_sandbox:\n image: postgres:14\n container_name: optischema-sandbox\n environment:\n POSTGRES_DB: ${SANDBOX_POSTGRES_DB:-sandbox}\n POSTGRES_USER: ${SANDBOX_POSTGRES_USER:-sandbox}\n POSTGRES_PASSWORD: ${SANDBOX_POSTGRES_PASSWORD:-sandbox_pass}\n ports:\n - \"5433:5432\"\n volumes:\n - sandbox_data:/var/lib/postgresql/data\n - ./scripts/sandbox_init.sql:/docker-entrypoint-initdb.d/init.sql\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -U ${SANDBOX_POSTGRES_USER:-sandbox}\"]\n interval: 10s\n timeout: 5s\n retries: 5\n networks:\n - optischema-network\n profiles:\n - sandbox\n\nvolumes:\n pgdata:\n driver: local\n api_cache:\n driver: local\n sandbox_data:\n driver: local\n\nnetworks:\n optischema-network:\n driver: bridge "}, "579e55387b816df039134f7c872c1ef7b907ed7b": {"t": 1785749069.783535, "n": 3377, "h": "c13b124856a775be", "c": "services:\n # PostgreSQL 14 with pg_stat_statements extension\n postgres:\n image: postgres:14\n container_name: optischema-postgres\n environment:\n POSTGRES_DB: ${POSTGRES_DB:-optischema}\n POSTGRES_USER: ${POSTGRES_USER:-optischema}\n POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-optischema_pass}\n command: postgres -c config_file=/etc/postgresql/postgresql.conf\n ports:\n - \"5432:5432\"\n volumes:\n - pgdata:/var/lib/postgresql/data\n - ./scripts/init.sql:/docker-entrypoint-initdb.d/init.sql\n - ./scripts/postgres/postgresql.conf:/etc/postgresql/postgresql.conf\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -U ${POSTGRES_USER:-optischema}\"]\n interval: 10s\n timeout: 5s\n retries: 5\n networks:\n - optischema-network\n\n # FastAPI Backend\n optischema-api:\n build:\n context: ./backend\n dockerfile: Dockerfile\n container_name: optischema-api\n environment:\n - DATABASE_URL=${DATABASE_URL}\n - OPENAI_API_KEY=${OPENAI_API_KEY}\n - OPENAI_MODEL=${OPENAI_MODEL:-gpt-4o}\n - GEMINI_API_KEY=${GEMINI_API_KEY}\n - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\n - LLM_PROVIDER=${LLM_PROVIDER:-gemini}\n - BACKEND_HOST=${BACKEND_HOST:-0.0.0.0}\n - BACKEND_PORT=${BACKEND_PORT:-8000}\n - BACKEND_RELOAD=${BACKEND_RELOAD:-true}\n - ENVIRONMENT=${ENVIRONMENT:-development}\n - DEBUG=${DEBUG:-true}\n - LOG_LEVEL=${LOG_LEVEL:-INFO}\n - CACHE_TTL=${CACHE_TTL:-3600}\n - CACHE_SIZE=${CACHE_SIZE:-1000}\n - POLLING_INTERVAL=${POLLING_INTERVAL:-30}\n - TOP_QUERIES_LIMIT=${TOP_QUERIES_LIMIT:-10}\n - ANALYSIS_INTERVAL=${ANALYSIS_INTERVAL:-60}\n ports:\n - \"8000:8000\"\n volumes:\n - ./backend:/app\n - ./scripts:/scripts\n - api_cache:/app/cache\n depends_on:\n postgres:\n condition: service_healthy\n networks:\n - optischema-network\n restart: unless-stopped\n\n # Next.js Frontend\n optischema-ui:\n build:\n context: ./frontend\n dockerfile: Dockerfile\n container_name: optischema-ui\n environment:\n - NEXT_PUBLIC_API_URL=http://optischema-api:8000\n - NEXT_PUBLIC_WS_URL=${UI_WS_URL:-ws://optischema-api:8000/ws}\n - BACKEND_URL=http://optischema-api:8000\n - NODE_ENV=development\n ports:\n - \"3000:3000\"\n volumes:\n - ./frontend:/app\n - /app/node_modules\n - /app/.next\n depends_on:\n - optischema-api\n networks:\n - optischema-network\n restart: unless-stopped\n\n # Optional: Sandbox PostgreSQL for testing patches\n postgres_sandbox:\n image: postgres:14\n container_name: optischema-sandbox\n environment:\n POSTGRES_DB: ${SANDBOX_POSTGRES_DB:-sandbox}\n POSTGRES_USER: ${SANDBOX_POSTGRES_USER:-sandbox}\n POSTGRES_PASSWORD: ${SANDBOX_POSTGRES_PASSWORD:-sandbox_pass}\n ports:\n - \"5433:5432\"\n volumes:\n - sandbox_data:/var/lib/postgresql/data\n - ./scripts/sandbox_init.sql:/docker-entrypoint-initdb.d/init.sql\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -U ${SANDBOX_POSTGRES_USER:-sandbox}\"]\n interval: 10s\n timeout: 5s\n retries: 5\n networks:\n - optischema-network\n profiles:\n - sandbox\n\nvolumes:\n pgdata:\n driver: local\n api_cache:\n driver: local\n sandbox_data:\n driver: local\n\nnetworks:\n optischema-network:\n driver: bridge "}, "4e0de72f8bff33b315fe4bb10c228fbd7a78b58f": {"t": 1785749071.0618312, "n": 3393, "h": "1d3b54f779e19070", "c": "version: '3.8'\n\nservices:\n # PostgreSQL 14 with pg_stat_statements extension\n postgres:\n image: postgres:14\n container_name: optischema-postgres\n environment:\n POSTGRES_DB: ${POSTGRES_DB:-optischema}\n POSTGRES_USER: ${POSTGRES_USER:-optischema}\n POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-optischema_pass}\n command: postgres -c config_file=/etc/postgresql/postgresql.conf\n ports:\n - \"5432:5432\"\n volumes:\n - pgdata:/var/lib/postgresql/data\n - ./scripts/init.sql:/docker-entrypoint-initdb.d/init.sql\n - ./scripts/postgres/postgresql.conf:/etc/postgresql/postgresql.conf\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -U ${POSTGRES_USER:-optischema}\"]\n interval: 10s\n timeout: 5s\n retries: 5\n networks:\n - optischema-network\n\n # FastAPI Backend\n optischema-api:\n build:\n context: ./backend\n dockerfile: Dockerfile\n container_name: optischema-api\n environment:\n - DATABASE_URL=${DATABASE_URL}\n - OPENAI_API_KEY=${OPENAI_API_KEY}\n - OPENAI_MODEL=${OPENAI_MODEL:-gpt-4o}\n - GEMINI_API_KEY=${GEMINI_API_KEY}\n - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\n - LLM_PROVIDER=${LLM_PROVIDER:-gemini}\n - BACKEND_HOST=${BACKEND_HOST:-0.0.0.0}\n - BACKEND_PORT=${BACKEND_PORT:-8000}\n - BACKEND_RELOAD=${BACKEND_RELOAD:-true}\n - ENVIRONMENT=${ENVIRONMENT:-development}\n - DEBUG=${DEBUG:-true}\n - LOG_LEVEL=${LOG_LEVEL:-INFO}\n - CACHE_TTL=${CACHE_TTL:-3600}\n - CACHE_SIZE=${CACHE_SIZE:-1000}\n - POLLING_INTERVAL=${POLLING_INTERVAL:-30}\n - TOP_QUERIES_LIMIT=${TOP_QUERIES_LIMIT:-10}\n - ANALYSIS_INTERVAL=${ANALYSIS_INTERVAL:-60}\n ports:\n - \"8000:8000\"\n volumes:\n - ./backend:/app\n - ./scripts:/scripts\n - api_cache:/app/cache\n depends_on:\n postgres:\n condition: service_healthy\n networks:\n - optischema-network\n restart: unless-stopped\n\n # Next.js Frontend\n optischema-ui:\n build:\n context: ./frontend\n dockerfile: Dockerfile\n container_name: optischema-ui\n environment:\n - NEXT_PUBLIC_API_URL=http://optischema-api:8000\n - NEXT_PUBLIC_WS_URL=${UI_WS_URL:-ws://optischema-api:8000/ws}\n - BACKEND_URL=http://optischema-api:8000\n - NODE_ENV=development\n ports:\n - \"3000:3000\"\n volumes:\n - ./frontend:/app\n - /app/node_modules\n - /app/.next\n depends_on:\n - optischema-api\n networks:\n - optischema-network\n restart: unless-stopped\n\n # Optional: Sandbox PostgreSQL for testing patches\n postgres_sandbox:\n image: postgres:14\n container_name: optischema-sandbox\n environment:\n POSTGRES_DB: ${SANDBOX_POSTGRES_DB:-sandbox}\n POSTGRES_USER: ${SANDBOX_POSTGRES_USER:-sandbox}\n POSTGRES_PASSWORD: ${SANDBOX_POSTGRES_PASSWORD:-sandbox_pass}\n ports:\n - \"5433:5432\"\n volumes:\n - sandbox_data:/var/lib/postgresql/data\n - ./scripts/sandbox_init.sql:/docker-entrypoint-initdb.d/init.sql\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -U ${SANDBOX_POSTGRES_USER:-sandbox}\"]\n interval: 10s\n timeout: 5s\n retries: 5\n networks:\n - optischema-network\n profiles:\n - sandbox\n\nvolumes:\n pgdata:\n driver: local\n api_cache:\n driver: local\n sandbox_data:\n driver: local\n\nnetworks:\n optischema-network:\n driver: bridge "}, "1eda9c45164006284cde10f60b9fead9f4c3fa53": {"t": 1785749072.1730514, "n": 3346, "h": "ae93f776486b328c", "c": "version: '3.8'\n\nservices:\n # PostgreSQL 14 with pg_stat_statements extension\n postgres:\n image: postgres:14\n container_name: optischema-postgres\n environment:\n POSTGRES_DB: ${POSTGRES_DB:-optischema}\n POSTGRES_USER: ${POSTGRES_USER:-optischema}\n POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-optischema_pass}\n command: postgres -c config_file=/etc/postgresql/postgresql.conf\n ports:\n - \"5432:5432\"\n volumes:\n - pgdata:/var/lib/postgresql/data\n - ./scripts/init.sql:/docker-entrypoint-initdb.d/init.sql\n - ./scripts/postgres/postgresql.conf:/etc/postgresql/postgresql.conf\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -U ${POSTGRES_USER:-optischema}\"]\n interval: 10s\n timeout: 5s\n retries: 5\n networks:\n - optischema-network\n\n # FastAPI Backend\n optischema-api:\n build:\n context: ./backend\n dockerfile: Dockerfile\n container_name: optischema-api\n environment:\n - DATABASE_URL=${DATABASE_URL}\n - OPENAI_API_KEY=${OPENAI_API_KEY}\n - OPENAI_MODEL=${OPENAI_MODEL:-gpt-4o}\n - GEMINI_API_KEY=${GEMINI_API_KEY}\n - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\n - LLM_PROVIDER=${LLM_PROVIDER:-gemini}\n - BACKEND_HOST=${BACKEND_HOST:-0.0.0.0}\n - BACKEND_PORT=${BACKEND_PORT:-8000}\n - BACKEND_RELOAD=${BACKEND_RELOAD:-true}\n - ENVIRONMENT=${ENVIRONMENT:-development}\n - DEBUG=${DEBUG:-true}\n - LOG_LEVEL=${LOG_LEVEL:-INFO}\n - CACHE_TTL=${CACHE_TTL:-3600}\n - CACHE_SIZE=${CACHE_SIZE:-1000}\n - POLLING_INTERVAL=${POLLING_INTERVAL:-30}\n - TOP_QUERIES_LIMIT=${TOP_QUERIES_LIMIT:-10}\n - ANALYSIS_INTERVAL=${ANALYSIS_INTERVAL:-60}\n ports:\n - \"8000:8000\"\n volumes:\n - ./backend:/app\n - ./scripts:/scripts\n - api_cache:/app/cache\n depends_on:\n postgres:\n condition: service_healthy\n networks:\n - optischema-network\n restart: unless-stopped\n\n # Next.js Frontend\n optischema-ui:\n build:\n context: ./frontend\n dockerfile: Dockerfile\n container_name: optischema-ui\n environment:\n - NEXT_PUBLIC_API_URL=http://optischema-api:8000\n - NEXT_PUBLIC_WS_URL=${UI_WS_URL:-ws://optischema-api:8000/ws}\n - NODE_ENV=development\n ports:\n - \"3000:3000\"\n volumes:\n - ./frontend:/app\n - /app/node_modules\n - /app/.next\n depends_on:\n - optischema-api\n networks:\n - optischema-network\n restart: unless-stopped\n\n # Optional: Sandbox PostgreSQL for testing patches\n postgres_sandbox:\n image: postgres:14\n container_name: optischema-sandbox\n environment:\n POSTGRES_DB: ${SANDBOX_POSTGRES_DB:-sandbox}\n POSTGRES_USER: ${SANDBOX_POSTGRES_USER:-sandbox}\n POSTGRES_PASSWORD: ${SANDBOX_POSTGRES_PASSWORD:-sandbox_pass}\n ports:\n - \"5433:5432\"\n volumes:\n - sandbox_data:/var/lib/postgresql/data\n - ./scripts/sandbox_init.sql:/docker-entrypoint-initdb.d/init.sql\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -U ${SANDBOX_POSTGRES_USER:-sandbox}\"]\n interval: 10s\n timeout: 5s\n retries: 5\n networks:\n - optischema-network\n profiles:\n - sandbox\n\nvolumes:\n pgdata:\n driver: local\n api_cache:\n driver: local\n sandbox_data:\n driver: local\n\nnetworks:\n optischema-network:\n driver: bridge "}, "d43f28df61f9b42ab782dccc57b2a3a3057e488b": {"t": 1785749073.2563536, "n": 3309, "h": "d6315026fc8b7c64", "c": "version: '3.8'\n\nservices:\n # PostgreSQL 14 with pg_stat_statements extension\n postgres:\n image: postgres:14\n container_name: optischema-postgres\n environment:\n POSTGRES_DB: ${POSTGRES_DB:-optischema}\n POSTGRES_USER: ${POSTGRES_USER:-optischema}\n POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-optischema_pass}\n command: postgres -c config_file=/etc/postgresql/postgresql.conf\n ports:\n - \"5432:5432\"\n volumes:\n - pgdata:/var/lib/postgresql/data\n - ./scripts/init.sql:/docker-entrypoint-initdb.d/init.sql\n - ./scripts/postgres/postgresql.conf:/etc/postgresql/postgresql.conf\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -U ${POSTGRES_USER:-optischema}\"]\n interval: 10s\n timeout: 5s\n retries: 5\n networks:\n - optischema-network\n\n # FastAPI Backend\n optischema-api:\n build:\n context: ./backend\n dockerfile: Dockerfile\n container_name: optischema-api\n environment:\n - DATABASE_URL=${DATABASE_URL}\n - OPENAI_API_KEY=${OPENAI_API_KEY}\n - OPENAI_MODEL=${OPENAI_MODEL:-gpt-4o}\n - GEMINI_API_KEY=${GEMINI_API_KEY}\n - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\n - LLM_PROVIDER=${LLM_PROVIDER:-gemini}\n - BACKEND_HOST=${BACKEND_HOST:-0.0.0.0}\n - BACKEND_PORT=${BACKEND_PORT:-8000}\n - BACKEND_RELOAD=${BACKEND_RELOAD:-true}\n - ENVIRONMENT=${ENVIRONMENT:-development}\n - DEBUG=${DEBUG:-true}\n - LOG_LEVEL=${LOG_LEVEL:-INFO}\n - CACHE_TTL=${CACHE_TTL:-3600}\n - CACHE_SIZE=${CACHE_SIZE:-1000}\n - POLLING_INTERVAL=${POLLING_INTERVAL:-30}\n - TOP_QUERIES_LIMIT=${TOP_QUERIES_LIMIT:-10}\n - ANALYSIS_INTERVAL=${ANALYSIS_INTERVAL:-60}\n ports:\n - \"8000:8000\"\n volumes:\n - ./backend:/app\n - api_cache:/app/cache\n depends_on:\n postgres:\n condition: service_healthy\n networks:\n - optischema-network\n restart: unless-stopped\n\n # Next.js Frontend\n optischema-ui:\n build:\n context: ./frontend\n dockerfile: Dockerfile\n container_name: optischema-ui\n environment:\n - NEXT_PUBLIC_API_URL=http://localhost:8000\n - NEXT_PUBLIC_WS_URL=${UI_WS_URL:-ws://localhost:8000/ws}\n - NODE_ENV=development\n ports:\n - \"3000:3000\"\n volumes:\n - ./frontend:/app\n - /app/node_modules\n - /app/.next\n depends_on:\n - optischema-api\n networks:\n - optischema-network\n restart: unless-stopped\n\n # Optional: Sandbox PostgreSQL for testing patches\n postgres_sandbox:\n image: postgres:14\n container_name: optischema-sandbox\n environment:\n POSTGRES_DB: ${SANDBOX_POSTGRES_DB:-sandbox}\n POSTGRES_USER: ${SANDBOX_POSTGRES_USER:-sandbox}\n POSTGRES_PASSWORD: ${SANDBOX_POSTGRES_PASSWORD:-sandbox_pass}\n ports:\n - \"5433:5432\"\n volumes:\n - sandbox_data:/var/lib/postgresql/data\n - ./scripts/sandbox_init.sql:/docker-entrypoint-initdb.d/init.sql\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -U ${SANDBOX_POSTGRES_USER:-sandbox}\"]\n interval: 10s\n timeout: 5s\n retries: 5\n networks:\n - optischema-network\n profiles:\n - sandbox\n\nvolumes:\n pgdata:\n driver: local\n api_cache:\n driver: local\n sandbox_data:\n driver: local\n\nnetworks:\n optischema-network:\n driver: bridge "}, "ce5030d846dc26df992d9a70ffb802e2f7c1c3b6": {"t": 1785749074.3328896, "n": 3349, "h": "b10a4478a8b0e285", "c": "version: '3.8'\n\nservices:\n # PostgreSQL 14 with pg_stat_statements extension\n postgres:\n image: postgres:14\n container_name: optischema-postgres\n environment:\n POSTGRES_DB: ${POSTGRES_DB:-optischema}\n POSTGRES_USER: ${POSTGRES_USER:-optischema}\n POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-optischema_pass}\n command: postgres -c config_file=/etc/postgresql/postgresql.conf\n ports:\n - \"5432:5432\"\n volumes:\n - pgdata:/var/lib/postgresql/data\n - ./scripts/init.sql:/docker-entrypoint-initdb.d/init.sql\n - ./scripts/postgres/postgresql.conf:/etc/postgresql/postgresql.conf\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -U ${POSTGRES_USER:-optischema}\"]\n interval: 10s\n timeout: 5s\n retries: 5\n networks:\n - optischema-network\n\n # FastAPI Backend\n optischema-api:\n build:\n context: ./backend\n dockerfile: Dockerfile\n container_name: optischema-api\n environment:\n - DATABASE_URL=${DATABASE_URL}\n - OPENAI_API_KEY=${OPENAI_API_KEY}\n - OPENAI_MODEL=${OPENAI_MODEL:-gpt-4o}\n - GEMINI_API_KEY=${GEMINI_API_KEY}\n - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\n - LLM_PROVIDER=${LLM_PROVIDER:-gemini}\n - BACKEND_HOST=${BACKEND_HOST:-0.0.0.0}\n - BACKEND_PORT=${BACKEND_PORT:-8000}\n - BACKEND_RELOAD=${BACKEND_RELOAD:-true}\n - ENVIRONMENT=${ENVIRONMENT:-development}\n - DEBUG=${DEBUG:-true}\n - LOG_LEVEL=${LOG_LEVEL:-INFO}\n - CACHE_TTL=${CACHE_TTL:-3600}\n - CACHE_SIZE=${CACHE_SIZE:-1000}\n - POLLING_INTERVAL=${POLLING_INTERVAL:-30}\n - TOP_QUERIES_LIMIT=${TOP_QUERIES_LIMIT:-10}\n - ANALYSIS_INTERVAL=${ANALYSIS_INTERVAL:-60}\n ports:\n - \"8000:8000\"\n volumes:\n - ./backend:/app\n - api_cache:/app/cache\n depends_on:\n postgres:\n condition: service_healthy\n networks:\n - optischema-network\n restart: unless-stopped\n\n # Next.js Frontend\n # optischema-ui:\n # build:\n # context: ./frontend\n # dockerfile: Dockerfile\n # container_name: optischema-ui\n # environment:\n # - NEXT_PUBLIC_API_URL=http://localhost:8000\n # - NEXT_PUBLIC_WS_URL=${UI_WS_URL:-ws://localhost:8000/ws}\n # - NODE_ENV=development\n # ports:\n # - \"3000:3000\"\n # volumes:\n # - ./frontend:/app\n # - /app/node_modules\n # - /app/.next\n # depends_on:\n # - optischema-api\n # networks:\n # - optischema-network\n # restart: unless-stopped\n\n # Optional: Sandbox PostgreSQL for testing patches\n postgres_sandbox:\n image: postgres:14\n container_name: optischema-sandbox\n environment:\n POSTGRES_DB: ${SANDBOX_POSTGRES_DB:-sandbox}\n POSTGRES_USER: ${SANDBOX_POSTGRES_USER:-sandbox}\n POSTGRES_PASSWORD: ${SANDBOX_POSTGRES_PASSWORD:-sandbox_pass}\n ports:\n - \"5433:5432\"\n volumes:\n - sandbox_data:/var/lib/postgresql/data\n - ./scripts/sandbox_init.sql:/docker-entrypoint-initdb.d/init.sql\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -U ${SANDBOX_POSTGRES_USER:-sandbox}\"]\n interval: 10s\n timeout: 5s\n retries: 5\n networks:\n - optischema-network\n profiles:\n - sandbox\n\nvolumes:\n pgdata:\n driver: local\n api_cache:\n driver: local\n sandbox_data:\n driver: local\n\nnetworks:\n optischema-network:\n driver: bridge "}, "ec94081e826d6803e610faf882fcc54739b0d4da": {"t": 1785749075.4006436, "n": 3034, "h": "35471681c0d78d55", "c": "version: '3.8'\n\nservices:\n # PostgreSQL 14 with pg_stat_statements extension\n postgres:\n image: postgres:14\n container_name: optischema-postgres\n environment:\n POSTGRES_DB: ${POSTGRES_DB:-optischema}\n POSTGRES_USER: ${POSTGRES_USER:-optischema}\n POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-optischema_pass}\n ports:\n - \"5432:5432\"\n volumes:\n - pgdata:/var/lib/postgresql/data\n - ./scripts/init.sql:/docker-entrypoint-initdb.d/init.sql\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -U ${POSTGRES_USER:-optischema}\"]\n interval: 10s\n timeout: 5s\n retries: 5\n networks:\n - optischema-network\n\n # FastAPI Backend\n optischema-api:\n build:\n context: ./backend\n dockerfile: Dockerfile\n container_name: optischema-api\n environment:\n - DATABASE_URL=${DATABASE_URL}\n - OPENAI_API_KEY=${OPENAI_API_KEY}\n - OPENAI_MODEL=${OPENAI_MODEL:-gpt-4o}\n - BACKEND_HOST=${BACKEND_HOST:-0.0.0.0}\n - BACKEND_PORT=${BACKEND_PORT:-8000}\n - BACKEND_RELOAD=${BACKEND_RELOAD:-true}\n - ENVIRONMENT=${ENVIRONMENT:-development}\n - DEBUG=${DEBUG:-true}\n - LOG_LEVEL=${LOG_LEVEL:-INFO}\n - CACHE_TTL=${CACHE_TTL:-3600}\n - CACHE_SIZE=${CACHE_SIZE:-1000}\n - POLLING_INTERVAL=${POLLING_INTERVAL:-30}\n - TOP_QUERIES_LIMIT=${TOP_QUERIES_LIMIT:-10}\n - ANALYSIS_INTERVAL=${ANALYSIS_INTERVAL:-60}\n ports:\n - \"8000:8000\"\n volumes:\n - ./backend:/app\n - api_cache:/app/cache\n depends_on:\n postgres:\n condition: service_healthy\n networks:\n - optischema-network\n restart: unless-stopped\n\n # Next.js Frontend\n optischema-ui:\n build:\n context: ./frontend\n dockerfile: Dockerfile\n container_name: optischema-ui\n environment:\n - NEXT_PUBLIC_API_URL=http://localhost:8000\n - NEXT_PUBLIC_WS_URL=${UI_WS_URL:-ws://localhost:8000/ws}\n - NODE_ENV=development\n ports:\n - \"3000:3000\"\n volumes:\n - ./frontend:/app\n - /app/node_modules\n - /app/.next\n depends_on:\n - optischema-api\n networks:\n - optischema-network\n restart: unless-stopped\n\n # Optional: Sandbox PostgreSQL for testing patches\n postgres_sandbox:\n image: postgres:14\n container_name: optischema-sandbox\n environment:\n POSTGRES_DB: ${SANDBOX_POSTGRES_DB:-sandbox}\n POSTGRES_USER: ${SANDBOX_POSTGRES_USER:-sandbox}\n POSTGRES_PASSWORD: ${SANDBOX_POSTGRES_PASSWORD:-sandbox_pass}\n ports:\n - \"5433:5432\"\n volumes:\n - sandbox_data:/var/lib/postgresql/data\n - ./scripts/sandbox_init.sql:/docker-entrypoint-initdb.d/init.sql\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -U ${SANDBOX_POSTGRES_USER:-sandbox}\"]\n interval: 10s\n timeout: 5s\n retries: 5\n networks:\n - optischema-network\n profiles:\n - sandbox\n\nvolumes:\n pgdata:\n driver: local\n api_cache:\n driver: local\n sandbox_data:\n driver: local\n\nnetworks:\n optischema-network:\n driver: bridge "}}, "backend/routers/settings.py": {"a945676bcb516ab611df7a2460217a3cf1d2c9e8": {"t": 1785745442.5974407, "n": 4278, "h": "c9e74adad035f33f", "c": "\"\"\"\nSettings Router for OptiSchema Slim.\nHandles API endpoints for user settings.\n\"\"\"\n\nfrom fastapi import APIRouter\nfrom pydantic import BaseModel\nfrom typing import Optional, Dict, Any\n\nfrom storage import (\n get_all_settings,\n set_all_settings,\n get_saved_optimizations,\n delete_saved_optimization,\n get_setting,\n set_setting,\n get_token_usage_stats,\n reset_token_usage\n)\nfrom models import HealthThresholds\n\nrouter = APIRouter(\n prefix=\"/api\",\n tags=[\"settings\"]\n)\n\nclass SettingsModel(BaseModel):\n llm_provider: Optional[str] = \"ollama\"\n ollama_base_url: Optional[str] = \"http://localhost:11434\"\n ollama_model: Optional[str] = \"sqlcoder\"\n openai_api_key: Optional[str] = None\n openai_model: Optional[str] = \"gpt-4o-mini\"\n gemini_api_key: Optional[str] = None\n deepseek_api_key: Optional[str] = None\n privacy_mode: Optional[bool] = False\n\n@router.get(\"/settings\")\nasync def get_settings():\n \"\"\"Get all user settings.\"\"\"\n settings = await get_all_settings()\n return settings\n\n@router.post(\"/settings\")\nasync def save_settings(data: SettingsModel):\n \"\"\"Save user settings.\"\"\"\n settings_dict = data.model_dump(exclude_none=True)\n await set_all_settings(settings_dict)\n return {\"success\": True}\n\nfrom llm.factory import LLMFactory\n\n@router.post(\"/settings/llm/test\")\nasync def test_llm_connection(data: SettingsModel):\n \"\"\"\n Test connection to an LLM provider with the provided settings.\n Does NOT save the settings.\n \"\"\"\n try:\n provider_name = data.llm_provider.lower()\n provider = None\n \n if provider_name == \"ollama\":\n from llm.ollama_provider import OllamaProvider\n provider = OllamaProvider(base_url=data.ollama_base_url, model=data.ollama_model)\n elif provider_name == \"openai\":\n from llm.openai_provider import OpenAIProvider\n provider = OpenAIProvider(api_key=data.openai_api_key, model=data.openai_model)\n elif provider_name == \"gemini\":\n from llm.gemini_provider import GeminiProvider\n provider = GeminiProvider(api_key=data.gemini_api_key)\n elif provider_name == \"deepseek\":\n from llm.deepseek_provider import DeepSeekProvider\n provider = DeepSeekProvider(api_key=data.deepseek_api_key)\n \n if not provider:\n return {\"success\": False, \"message\": f\"Unknown provider: {provider_name}\"}\n \n # Test with a simple prompt\n test_prompt = \"Say 'OK' if you can read this.\"\n response = await provider.generate(test_prompt, max_tokens=10)\n \n if \"Error\" in response:\n return {\"success\": False, \"message\": response}\n \n return {\"success\": True, \"message\": f\"Successfully connected to {provider_name}!\", \"response\": response}\n \n except Exception as e:\n return {\"success\": False, \"message\": f\"Connection test failed: {str(e)}\"}\n\n@router.get(\"/optimizations/saved\")\nasync def get_saved():\n \"\"\"Get all saved optimizations.\"\"\"\n optimizations = await get_saved_optimizations()\n return optimizations\n\n@router.delete(\"/optimizations/saved/{opt_id}\")\nasync def delete_saved(opt_id: str):\n \"\"\"Delete a saved optimization.\"\"\"\n await delete_saved_optimization(opt_id)\n return {\"success\": True}\n\n@router.get(\"/health-thresholds\", response_model=HealthThresholds)\nasync def get_health_thresholds():\n \"\"\"Get health diagnostic thresholds.\"\"\"\n raw = await get_setting(\"health_thresholds\")\n if not raw:\n return HealthThresholds()\n return HealthThresholds(**raw)\n\n@router.post(\"/health-thresholds\")\nasync def update_health_thresholds(config: HealthThresholds):\n \"\"\"Update health diagnostic thresholds.\"\"\"\n await set_setting(\"health_thresholds\", config.model_dump())\n return {\"success\": True}\n\n@router.get(\"/token-usage\")\nasync def get_token_usage():\n \"\"\"Get cumulative token usage statistics.\"\"\"\n stats = await get_token_usage_stats()\n return {\"success\": True, \"data\": stats}\n\n@router.post(\"/token-usage/reset\")\nasync def reset_token_usage_stats():\n \"\"\"Reset all token usage counters to zero.\"\"\"\n await reset_token_usage()\n return {\"success\": True, \"message\": \"Token usage counters reset\"}\n"}, "974d76607c0a3cd6f648651c1d0fd9a8a4d03ebf": {"t": 1785749064.3448002, "n": 3815, "h": "86e4171180452159", "c": "\"\"\"\nSettings Router for OptiSchema Slim.\nHandles API endpoints for user settings.\n\"\"\"\n\nfrom fastapi import APIRouter\nfrom pydantic import BaseModel\nfrom typing import Optional, Dict, Any\n\nfrom storage import (\n get_all_settings, \n set_all_settings, \n get_saved_optimizations, \n delete_saved_optimization,\n get_setting,\n set_setting\n)\nfrom models import HealthThresholds\n\nrouter = APIRouter(\n prefix=\"/api\",\n tags=[\"settings\"]\n)\n\nclass SettingsModel(BaseModel):\n llm_provider: Optional[str] = \"ollama\"\n ollama_base_url: Optional[str] = \"http://localhost:11434\"\n ollama_model: Optional[str] = \"sqlcoder\"\n openai_api_key: Optional[str] = None\n openai_model: Optional[str] = \"gpt-4o-mini\"\n gemini_api_key: Optional[str] = None\n deepseek_api_key: Optional[str] = None\n privacy_mode: Optional[bool] = False\n\n@router.get(\"/settings\")\nasync def get_settings():\n \"\"\"Get all user settings.\"\"\"\n settings = await get_all_settings()\n return settings\n\n@router.post(\"/settings\")\nasync def save_settings(data: SettingsModel):\n \"\"\"Save user settings.\"\"\"\n settings_dict = data.model_dump(exclude_none=True)\n await set_all_settings(settings_dict)\n return {\"success\": True}\n\nfrom llm.factory import LLMFactory\n\n@router.post(\"/settings/llm/test\")\nasync def test_llm_connection(data: SettingsModel):\n \"\"\"\n Test connection to an LLM provider with the provided settings.\n Does NOT save the settings.\n \"\"\"\n try:\n provider_name = data.llm_provider.lower()\n provider = None\n \n if provider_name == \"ollama\":\n from llm.ollama_provider import OllamaProvider\n provider = OllamaProvider(base_url=data.ollama_base_url, model=data.ollama_model)\n elif provider_name == \"openai\":\n from llm.openai_provider import OpenAIProvider\n provider = OpenAIProvider(api_key=data.openai_api_key, model=data.openai_model)\n elif provider_name == \"gemini\":\n from llm.gemini_provider import GeminiProvider\n provider = GeminiProvider(api_key=data.gemini_api_key)\n elif provider_name == \"deepseek\":\n from llm.deepseek_provider import DeepSeekProvider\n provider = DeepSeekProvider(api_key=data.deepseek_api_key)\n \n if not provider:\n return {\"success\": False, \"message\": f\"Unknown provider: {provider_name}\"}\n \n # Test with a simple prompt\n test_prompt = \"Say 'OK' if you can read this.\"\n response = await provider.generate(test_prompt, max_tokens=10)\n \n if \"Error\" in response:\n return {\"success\": False, \"message\": response}\n \n return {\"success\": True, \"message\": f\"Successfully connected to {provider_name}!\", \"response\": response}\n \n except Exception as e:\n return {\"success\": False, \"message\": f\"Connection test failed: {str(e)}\"}\n\n@router.get(\"/optimizations/saved\")\nasync def get_saved():\n \"\"\"Get all saved optimizations.\"\"\"\n optimizations = await get_saved_optimizations()\n return optimizations\n\n@router.delete(\"/optimizations/saved/{opt_id}\")\nasync def delete_saved(opt_id: str):\n \"\"\"Delete a saved optimization.\"\"\"\n await delete_saved_optimization(opt_id)\n return {\"success\": True}\n\n@router.get(\"/health-thresholds\", response_model=HealthThresholds)\nasync def get_health_thresholds():\n \"\"\"Get health diagnostic thresholds.\"\"\"\n raw = await get_setting(\"health_thresholds\")\n if not raw:\n return HealthThresholds()\n return HealthThresholds(**raw)\n\n@router.post(\"/health-thresholds\")\nasync def update_health_thresholds(config: HealthThresholds):\n \"\"\"Update health diagnostic thresholds.\"\"\"\n await set_setting(\"health_thresholds\", config.model_dump())\n return {\"success\": True}\n"}, "c154cf010970560c8b12a9b000d2671b11dcfacb": {"t": 1785749065.5957193, "n": 3203, "h": "0ea83faead48fa09", "c": "\"\"\"\nSettings Router for OptiSchema Slim.\nHandles API endpoints for user settings.\n\"\"\"\n\nfrom fastapi import APIRouter\nfrom pydantic import BaseModel\nfrom typing import Optional, Dict, Any\n\nfrom storage import get_all_settings, set_all_settings, get_saved_optimizations, delete_saved_optimization\n\nrouter = APIRouter(\n prefix=\"/api\",\n tags=[\"settings\"]\n)\n\nclass SettingsModel(BaseModel):\n llm_provider: Optional[str] = \"ollama\"\n ollama_base_url: Optional[str] = \"http://localhost:11434\"\n ollama_model: Optional[str] = \"sqlcoder\"\n openai_api_key: Optional[str] = None\n openai_model: Optional[str] = \"gpt-4o-mini\"\n gemini_api_key: Optional[str] = None\n deepseek_api_key: Optional[str] = None\n privacy_mode: Optional[bool] = False\n\n@router.get(\"/settings\")\nasync def get_settings():\n \"\"\"Get all user settings.\"\"\"\n settings = await get_all_settings()\n return settings\n\n@router.post(\"/settings\")\nasync def save_settings(data: SettingsModel):\n \"\"\"Save user settings.\"\"\"\n settings_dict = data.model_dump(exclude_none=True)\n await set_all_settings(settings_dict)\n return {\"success\": True}\n\nfrom llm.factory import LLMFactory\n\n@router.post(\"/settings/llm/test\")\nasync def test_llm_connection(data: SettingsModel):\n \"\"\"\n Test connection to an LLM provider with the provided settings.\n Does NOT save the settings.\n \"\"\"\n try:\n provider_name = data.llm_provider.lower()\n provider = None\n \n if provider_name == \"ollama\":\n from llm.ollama_provider import OllamaProvider\n provider = OllamaProvider(base_url=data.ollama_base_url, model=data.ollama_model)\n elif provider_name == \"openai\":\n from llm.openai_provider import OpenAIProvider\n provider = OpenAIProvider(api_key=data.openai_api_key, model=data.openai_model)\n elif provider_name == \"gemini\":\n from llm.gemini_provider import GeminiProvider\n provider = GeminiProvider(api_key=data.gemini_api_key)\n elif provider_name == \"deepseek\":\n from llm.deepseek_provider import DeepSeekProvider\n provider = DeepSeekProvider(api_key=data.deepseek_api_key)\n \n if not provider:\n return {\"success\": False, \"message\": f\"Unknown provider: {provider_name}\"}\n \n # Test with a simple prompt\n test_prompt = \"Say 'OK' if you can read this.\"\n response = await provider.generate(test_prompt, max_tokens=10)\n \n if \"Error\" in response:\n return {\"success\": False, \"message\": response}\n \n return {\"success\": True, \"message\": f\"Successfully connected to {provider_name}!\", \"response\": response}\n \n except Exception as e:\n return {\"success\": False, \"message\": f\"Connection test failed: {str(e)}\"}\n\n@router.get(\"/optimizations/saved\")\nasync def get_saved():\n \"\"\"Get all saved optimizations.\"\"\"\n optimizations = await get_saved_optimizations()\n return optimizations\n\n@router.delete(\"/optimizations/saved/{opt_id}\")\nasync def delete_saved(opt_id: str):\n \"\"\"Delete a saved optimization.\"\"\"\n await delete_saved_optimization(opt_id)\n return {\"success\": True}\n"}, "01362316e01a4aa1d9f5b39079644ac834a18c2f": {"t": 1785749066.6640775, "n": 1504, "h": "9eaa46ffc443527e", "c": "\"\"\"\nSettings Router for OptiSchema Slim.\nHandles API endpoints for user settings.\n\"\"\"\n\nfrom fastapi import APIRouter\nfrom pydantic import BaseModel\nfrom typing import Optional, Dict, Any\n\nfrom storage import get_all_settings, set_all_settings, get_saved_optimizations, delete_saved_optimization\n\nrouter = APIRouter(\n prefix=\"/api\",\n tags=[\"settings\"]\n)\n\nclass SettingsModel(BaseModel):\n llm_provider: Optional[str] = \"ollama\"\n ollama_base_url: Optional[str] = \"http://localhost:11434\"\n ollama_model: Optional[str] = \"sqlcoder\"\n openai_api_key: Optional[str] = None\n openai_model: Optional[str] = \"gpt-4o-mini\"\n gemini_api_key: Optional[str] = None\n deepseek_api_key: Optional[str] = None\n privacy_mode: Optional[bool] = False\n\n@router.get(\"/settings\")\nasync def get_settings():\n \"\"\"Get all user settings.\"\"\"\n settings = await get_all_settings()\n return settings\n\n@router.post(\"/settings\")\nasync def save_settings(data: SettingsModel):\n \"\"\"Save user settings.\"\"\"\n settings_dict = data.model_dump(exclude_none=True)\n await set_all_settings(settings_dict)\n return {\"success\": True}\n\n@router.get(\"/optimizations/saved\")\nasync def get_saved():\n \"\"\"Get all saved optimizations.\"\"\"\n optimizations = await get_saved_optimizations()\n return optimizations\n\n@router.delete(\"/optimizations/saved/{opt_id}\")\nasync def delete_saved(opt_id: str):\n \"\"\"Delete a saved optimization.\"\"\"\n await delete_saved_optimization(opt_id)\n return {\"success\": True}\n"}}, "docker-compose.dev.yml": {"a945676bcb516ab611df7a2460217a3cf1d2c9e8": {"t": 1785746987.8897398, "n": 1188, "h": "83c1f66967901ca4", "c": "services:\n backend:\n build:\n context: .\n dockerfile: docker/backend.Dockerfile\n container_name: optischema-backend-dev\n environment:\n - OPENAI_API_KEY=${OPENAI_API_KEY}\n - GEMINI_API_KEY=${GEMINI_API_KEY}\n - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\n - LLM_PROVIDER=${LLM_PROVIDER:-gemini}\n - ENVIRONMENT=development\n - DEBUG=true\n ports:\n - \"8080:8080\"\n volumes:\n - ./backend:/app\n - optischema_dev_data:/app/data\n extra_hosts:\n - \"host.docker.internal:host-gateway\"\n command: uvicorn main:app --host 0.0.0.0 --port 8080 --reload\n\n frontend:\n image: node:18-alpine\n container_name: optischema-frontend-dev\n working_dir: /app/frontend\n environment:\n - VITE_API_URL=\n - VITE_WS_URL=ws://localhost:8080/ws\n - VITE_PROXY_TARGET=http://backend:8080\n ports:\n - \"5173:5173\"\n volumes:\n - ./frontend:/app/frontend\n - frontend_node_modules:/app/frontend/node_modules\n depends_on:\n - backend\n command: sh -c \"npm install && npm run dev -- --host 0.0.0.0 --port 5173\"\n\nvolumes:\n optischema_dev_data:\n driver: local\n frontend_node_modules:\n driver: local\n"}, "34d1b004c3b38a96e9789a2c24166ac006a44bc9": {"t": 1785749065.0228918, "n": 1188, "h": "83c1f66967901ca4", "c": "services:\n backend:\n build:\n context: .\n dockerfile: docker/backend.Dockerfile\n container_name: optischema-backend-dev\n environment:\n - OPENAI_API_KEY=${OPENAI_API_KEY}\n - GEMINI_API_KEY=${GEMINI_API_KEY}\n - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\n - LLM_PROVIDER=${LLM_PROVIDER:-gemini}\n - ENVIRONMENT=development\n - DEBUG=true\n ports:\n - \"8080:8080\"\n volumes:\n - ./backend:/app\n - optischema_dev_data:/app/data\n extra_hosts:\n - \"host.docker.internal:host-gateway\"\n command: uvicorn main:app --host 0.0.0.0 --port 8080 --reload\n\n frontend:\n image: node:18-alpine\n container_name: optischema-frontend-dev\n working_dir: /app/frontend\n environment:\n - VITE_API_URL=\n - VITE_WS_URL=ws://localhost:8080/ws\n - VITE_PROXY_TARGET=http://backend:8080\n ports:\n - \"5173:5173\"\n volumes:\n - ./frontend:/app/frontend\n - frontend_node_modules:/app/frontend/node_modules\n depends_on:\n - backend\n command: sh -c \"npm install && npm run dev -- --host 0.0.0.0 --port 5173\"\n\nvolumes:\n optischema_dev_data:\n driver: local\n frontend_node_modules:\n driver: local\n"}}}}