This commit is contained in:
2025-08-19 10:25:11 +02:00
parent 69a947fa0b
commit d3440ccb1b
52 changed files with 113 additions and 113 deletions

View File

@@ -1,7 +1,7 @@
""" """
Confidential Empire - Modular AI Gateway Platform Enclava - Modular AI Platform
""" """
__version__ = "1.0.0" __version__ = "1.0.0"
__author__ = "Confidential Empire Team" __author__ = "Enclava Team"
__description__ = "Modular AI Gateway Platform with confidential AI processing" __description__ = "Enclava - Modular AI Platform with confidential processing"

View File

@@ -12,7 +12,7 @@ class Settings(BaseSettings):
"""Application settings""" """Application settings"""
# Application # Application
APP_NAME: str = "Shifra" APP_NAME: str = "Enclava"
APP_DEBUG: bool = False APP_DEBUG: bool = False
APP_LOG_LEVEL: str = "INFO" APP_LOG_LEVEL: str = "INFO"
APP_HOST: str = "0.0.0.0" APP_HOST: str = "0.0.0.0"
@@ -33,7 +33,7 @@ class Settings(BaseSettings):
ACCESS_TOKEN_EXPIRE_MINUTES: int = 30 ACCESS_TOKEN_EXPIRE_MINUTES: int = 30
REFRESH_TOKEN_EXPIRE_MINUTES: int = 60 * 24 * 7 # 7 days REFRESH_TOKEN_EXPIRE_MINUTES: int = 60 * 24 * 7 # 7 days
SESSION_EXPIRE_MINUTES: int = 60 * 24 # 24 hours SESSION_EXPIRE_MINUTES: int = 60 * 24 # 24 hours
API_KEY_PREFIX: str = "ce_" API_KEY_PREFIX: str = "en_"
# Admin user provisioning # Admin user provisioning
ADMIN_USER: str = "admin" ADMIN_USER: str = "admin"
@@ -45,7 +45,7 @@ class Settings(BaseSettings):
# LiteLLM # LiteLLM
LITELLM_BASE_URL: str = "http://localhost:4000" LITELLM_BASE_URL: str = "http://localhost:4000"
LITELLM_MASTER_KEY: str = "empire-master-key" LITELLM_MASTER_KEY: str = "enclava-master-key"
# API Keys for LLM providers # API Keys for LLM providers
OPENAI_API_KEY: Optional[str] = None OPENAI_API_KEY: Optional[str] = None

View File

@@ -26,7 +26,7 @@ engine = create_async_engine(
connect_args={ connect_args={
"command_timeout": 5, "command_timeout": 5,
"server_settings": { "server_settings": {
"application_name": "shifra_backend", "application_name": "enclava_backend",
}, },
}, },
) )
@@ -49,7 +49,7 @@ sync_engine = create_engine(
pool_recycle=3600, # Recycle connections every hour pool_recycle=3600, # Recycle connections every hour
pool_timeout=30, # Max time to get connection from pool pool_timeout=30, # Max time to get connection from pool
connect_args={ connect_args={
"application_name": "shifra_backend_sync", "application_name": "enclava_backend_sync",
}, },
) )

View File

@@ -36,7 +36,7 @@ async def lifespan(app: FastAPI):
""" """
Application lifespan handler Application lifespan handler
""" """
logger.info("Starting Confidential Empire platform...") logger.info("Starting Enclava platform...")
# Initialize database # Initialize database
await init_db() await init_db()
@@ -85,7 +85,7 @@ async def lifespan(app: FastAPI):
# Create FastAPI application # Create FastAPI application
app = FastAPI( app = FastAPI(
title=settings.APP_NAME, title=settings.APP_NAME,
description="Modular AI Gateway Platform with confidential AI processing", description="Enclava - Modular AI Platform with confidential processing",
version="1.0.0", version="1.0.0",
openapi_url="/api/v1/openapi.json", openapi_url="/api/v1/openapi.json",
docs_url="/api/v1/docs", docs_url="/api/v1/docs",
@@ -201,7 +201,7 @@ async def health_check():
async def root(): async def root():
"""Root endpoint""" """Root endpoint"""
return { return {
"message": "Confidential Empire - Modular AI Gateway Platform", "message": "Enclava - Modular AI Platform",
"version": "1.0.0", "version": "1.0.0",
"docs": "/api/v1/docs", "docs": "/api/v1/docs",
} }

View File

@@ -12,7 +12,7 @@ This module provides AI chatbot capabilities with:
from .main import ChatbotModule, create_module from .main import ChatbotModule, create_module
__version__ = "1.0.0" __version__ = "1.0.0"
__author__ = "AI Gateway Team" __author__ = "Enclava Team"
# Export main classes for easy importing # Export main classes for easy importing
__all__ = [ __all__ = [

View File

@@ -803,7 +803,7 @@ class ChatbotModule(BaseModule):
try: try:
# Try to verify the collection exists in Qdrant # Try to verify the collection exists in Qdrant
from qdrant_client import QdrantClient from qdrant_client import QdrantClient
qdrant_client = QdrantClient(host="shifra-qdrant", port=6333) qdrant_client = QdrantClient(host="enclava-qdrant", port=6333)
collections = qdrant_client.get_collections() collections = qdrant_client.get_collections()
collection_names = [c.name for c in collections.collections] collection_names = [c.name for c in collections.collections]

View File

@@ -1,7 +1,7 @@
name: chatbot name: chatbot
version: 1.0.0 version: 1.0.0
description: "AI Chatbot with RAG integration and customizable prompts" description: "AI Chatbot with RAG integration and customizable prompts"
author: "AI Gateway Team" author: "Enclava Team"
category: "conversation" category: "conversation"
# Module lifecycle # Module lifecycle

View File

@@ -13,8 +13,8 @@ from typing import Dict, List, Tuple
# Test configuration # Test configuration
PLATFORM_URL = "http://localhost:58000/api/v1/llm/chat/completions" PLATFORM_URL = "http://localhost:58000/api/v1/llm/chat/completions"
LITELLM_URL = "http://localhost:54000/chat/completions" LITELLM_URL = "http://localhost:54000/chat/completions"
API_KEY = "ce_mMJNyEznKHJRvvNyyuwuQotuWJ2BvdD8" API_KEY = "en_mMJNyEznKHJRvvNyyuwuQotuWJ2BvdD8"
LITELLM_KEY = "shifra-master-key" # From docker-compose.yml LITELLM_KEY = "enclava-master-key" # From docker-compose.yml
TEST_PROMPT = "What is the capital of France? Give a brief answer." TEST_PROMPT = "What is the capital of France? Give a brief answer."
MODEL = "ollama-deepseek-r1" MODEL = "ollama-deepseek-r1"

View File

@@ -8,8 +8,8 @@ import requests
import json import json
# Configuration # Configuration
API_KEY = "ce_mMJNyEznKHJRvvNyyuwuQotuWJ2BvdD8" API_KEY = "en_mMJNyEznKHJRvvNyyuwuQotuWJ2BvdD8"
LITELLM_KEY = "shifra-master-key" LITELLM_KEY = "enclava-master-key"
TEST_PROMPT = "What is 2+2? Answer briefly." TEST_PROMPT = "What is 2+2? Answer briefly."
MODEL = "ollama-deepseek-r1" MODEL = "ollama-deepseek-r1"

View File

@@ -1,26 +1,26 @@
name: shifra name: enclava
services: services:
# Main application backend # Main application backend
shifra-backend: enclava-backend:
build: build:
context: ./backend context: ./backend
dockerfile: Dockerfile dockerfile: Dockerfile
environment: environment:
- DATABASE_URL=postgresql://shifra_user:shifra_pass@shifra-postgres:5432/shifra_db - DATABASE_URL=postgresql://enclava_user:enclava_pass@enclava-postgres:5432/enclava_db
- REDIS_URL=redis://shifra-redis:6379 - REDIS_URL=redis://enclava-redis:6379
- QDRANT_HOST=shifra-qdrant - QDRANT_HOST=enclava-qdrant
- LITELLM_BASE_URL=http://litellm-proxy:4000 - LITELLM_BASE_URL=http://litellm-proxy:4000
- LITELLM_MASTER_KEY=${LITELLM_MASTER_KEY:-shifra-master-key} - LITELLM_MASTER_KEY=${LITELLM_MASTER_KEY:-enclava-master-key}
- JWT_SECRET=${JWT_SECRET:-your-jwt-secret-here} - JWT_SECRET=${JWT_SECRET:-your-jwt-secret-here}
- PRIVATEMODE_API_KEY=${PRIVATEMODE_API_KEY:-} - PRIVATEMODE_API_KEY=${PRIVATEMODE_API_KEY:-}
- ADMIN_USER=${ADMIN_USER:-admin} - ADMIN_USER=${ADMIN_USER:-admin}
- ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin123} - ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin123}
- LOG_LLM_PROMPTS=${LOG_LLM_PROMPTS:-false} - LOG_LLM_PROMPTS=${LOG_LLM_PROMPTS:-false}
depends_on: depends_on:
- shifra-postgres - enclava-postgres
- shifra-redis - enclava-redis
- shifra-qdrant - enclava-qdrant
- litellm-proxy - litellm-proxy
ports: ports:
- "58000:8000" - "58000:8000"
@@ -28,51 +28,51 @@ services:
- ./backend:/app - ./backend:/app
- ./logs:/app/logs - ./logs:/app/logs
networks: networks:
- conf-ai-net - enclava-net
restart: unless-stopped restart: unless-stopped
# Next.js frontend # Next.js frontend
shifra-frontend: enclava-frontend:
image: node:18-alpine image: node:18-alpine
working_dir: /app working_dir: /app
command: sh -c "npm install && npm run dev" command: sh -c "npm install && npm run dev"
environment: environment:
- NEXT_PUBLIC_API_URL=http://localhost:58000 - NEXT_PUBLIC_API_URL=http://localhost:58000
- NEXT_PUBLIC_WS_URL=ws://localhost:58000 - NEXT_PUBLIC_WS_URL=ws://localhost:58000
- INTERNAL_API_URL=http://shifra-backend:8000 - INTERNAL_API_URL=http://enclava-backend:8000
depends_on: depends_on:
- shifra-backend - enclava-backend
ports: ports:
- "53000:3000" - "53000:3000"
volumes: volumes:
- ./frontend:/app - ./frontend:/app
- /app/node_modules - /app/node_modules
networks: networks:
- conf-ai-net - enclava-net
restart: unless-stopped restart: unless-stopped
# PostgreSQL database # PostgreSQL database
shifra-postgres: enclava-postgres:
image: postgres:16 image: postgres:16
environment: environment:
- POSTGRES_DB=shifra_db - POSTGRES_DB=enclava_db
- POSTGRES_USER=shifra_user - POSTGRES_USER=enclava_user
- POSTGRES_PASSWORD=shifra_pass - POSTGRES_PASSWORD=enclava_pass
volumes: volumes:
- shifra-postgres-data:/var/lib/postgresql/data - enclava-postgres-data:/var/lib/postgresql/data
- ./backend/migrations:/docker-entrypoint-initdb.d - ./backend/migrations:/docker-entrypoint-initdb.d
networks: networks:
- conf-ai-net - enclava-net
restart: unless-stopped restart: unless-stopped
# Redis for caching and message queue # Redis for caching and message queue
shifra-redis: enclava-redis:
image: redis:7-alpine image: redis:7-alpine
command: redis-server --appendonly yes command: redis-server --appendonly yes
volumes: volumes:
- shifra-redis-data:/data - enclava-redis-data:/data
networks: networks:
- conf-ai-net - enclava-net
restart: unless-stopped restart: unless-stopped
# LiteLLM proxy for unified LLM API # LiteLLM proxy for unified LLM API
@@ -81,9 +81,9 @@ services:
environment: environment:
- UI_USERNAME=admin - UI_USERNAME=admin
- UI_PASSWORD=${LITELLM_UI_PASSWORD:-admin123} - UI_PASSWORD=${LITELLM_UI_PASSWORD:-admin123}
- DATABASE_URL=postgresql://shifra_user:shifra_pass@shifra-postgres:5432/shifra_db - DATABASE_URL=postgresql://enclava_user:enclava_pass@enclava-postgres:5432/enclava_db
- OPENROUTER_API_KEY=${OPENROUTER_API_KEY} - OPENROUTER_API_KEY=${OPENROUTER_API_KEY}
#- OLLAMA_BASE_URL=http://shifra-ollama-proxy:11434/v1 #- OLLAMA_BASE_URL=http://enclava-ollama-proxy:11434/v1
#- OLLAMA_API_KEY=ollama #- OLLAMA_API_KEY=ollama
- PRIVATEMODE_API_KEY=${PRIVATEMODE_API_KEY:-} - PRIVATEMODE_API_KEY=${PRIVATEMODE_API_KEY:-}
- LITELLM_MASTER_KEY=${LITELLM_MASTER_KEY} - LITELLM_MASTER_KEY=${LITELLM_MASTER_KEY}
@@ -92,15 +92,15 @@ services:
- ./litellm_config.yaml:/app/config.yaml - ./litellm_config.yaml:/app/config.yaml
command: --config /app/config.yaml --port 4000 --num_workers 1 command: --config /app/config.yaml --port 4000 --num_workers 1
depends_on: depends_on:
- shifra-postgres - enclava-postgres
ports: ports:
- "54000:4000" - "54000:4000"
networks: networks:
- conf-ai-net - enclava-net
restart: unless-stopped restart: unless-stopped
# Ollama Free Model Proxy # Ollama Free Model Proxy
#shifra-ollama-proxy: #enclava-ollama-proxy:
# build: # build:
# context: /home/lio/cloud/code/ollama-free-model-proxy # context: /home/lio/cloud/code/ollama-free-model-proxy
# dockerfile: Dockerfile # dockerfile: Dockerfile
@@ -109,10 +109,10 @@ services:
# - FREE_MODE=true # - FREE_MODE=true
# - TOOL_USE_ONLY=false # - TOOL_USE_ONLY=false
# volumes: # volumes:
# - shifra-ollama-data:/data # - enclava-ollama-data:/data
# working_dir: /data # working_dir: /data
# networks: # networks:
# - conf-ai-net # - enclava-net
# restart: unless-stopped # restart: unless-stopped
#healthcheck: #healthcheck:
# test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:11434/"] # test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:11434/"]
@@ -122,7 +122,7 @@ services:
# start_period: 40s # start_period: 40s
# Qdrant vector database # Qdrant vector database
shifra-qdrant: enclava-qdrant:
image: qdrant/qdrant:latest image: qdrant/qdrant:latest
environment: environment:
- QDRANT__SERVICE__HTTP_PORT=6333 - QDRANT__SERVICE__HTTP_PORT=6333
@@ -131,9 +131,9 @@ services:
- "56333:6333" # HTTP API and Web Interface - "56333:6333" # HTTP API and Web Interface
- "56334:6334" # GRPC API (optional) - "56334:6334" # GRPC API (optional)
volumes: volumes:
- shifra-qdrant-data:/qdrant/storage - enclava-qdrant-data:/qdrant/storage
networks: networks:
- conf-ai-net - enclava-net
restart: unless-stopped restart: unless-stopped
# Privatemode.ai service (optional - for confidential models) # Privatemode.ai service (optional - for confidential models)
@@ -151,15 +151,15 @@ services:
ports: ports:
- "58080:8080" - "58080:8080"
networks: networks:
- conf-ai-net - enclava-net
restart: unless-stopped restart: unless-stopped
volumes: volumes:
shifra-postgres-data: enclava-postgres-data:
shifra-redis-data: enclava-redis-data:
shifra-qdrant-data: enclava-qdrant-data:
# shifra-ollama-data: # enclava-ollama-data:
networks: networks:
conf-ai-net: enclava-net:
driver: bridge driver: bridge

View File

@@ -6,7 +6,7 @@ const nextConfig = {
}, },
env: { env: {
NEXT_PUBLIC_API_URL: process.env.NEXT_PUBLIC_API_URL || 'http://localhost:8000', NEXT_PUBLIC_API_URL: process.env.NEXT_PUBLIC_API_URL || 'http://localhost:8000',
NEXT_PUBLIC_APP_NAME: process.env.NEXT_PUBLIC_APP_NAME || 'AI Gateway', NEXT_PUBLIC_APP_NAME: process.env.NEXT_PUBLIC_APP_NAME || 'Enclava',
}, },
async headers() { async headers() {
return [ return [

View File

@@ -1,11 +1,11 @@
{ {
"name": "ai-gateway-frontend", "name": "enclava-frontend",
"version": "0.1.0", "version": "0.1.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "ai-gateway-frontend", "name": "enclava-frontend",
"version": "0.1.0", "version": "0.1.0",
"dependencies": { "dependencies": {
"@hookform/resolvers": "^3.3.2", "@hookform/resolvers": "^3.3.2",

View File

@@ -1,5 +1,5 @@
{ {
"name": "ai-gateway-frontend", "name": "enclava-frontend",
"version": "0.1.0", "version": "0.1.0",
"private": true, "private": true,
"scripts": { "scripts": {

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function POST( export async function POST(
request: NextRequest, request: NextRequest,

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
const REQUEST_TIMEOUT = 30000 // 30 seconds const REQUEST_TIMEOUT = 30000 // 30 seconds
interface ChatRequestBody { interface ChatRequestBody {

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function POST(request: NextRequest) { export async function POST(request: NextRequest) {
try { try {

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function DELETE( export async function DELETE(
request: NextRequest, request: NextRequest,

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function GET(request: NextRequest) { export async function GET(request: NextRequest) {
try { try {

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function GET(request: NextRequest) { export async function GET(request: NextRequest) {
try { try {

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function PUT( export async function PUT(
request: NextRequest, request: NextRequest,

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function POST( export async function POST(
request: NextRequest, request: NextRequest,

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function DELETE( export async function DELETE(
request: NextRequest, request: NextRequest,

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function GET(request: NextRequest) { export async function GET(request: NextRequest) {
try { try {

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function GET(request: NextRequest) { export async function GET(request: NextRequest) {
try { try {

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from "next/server" import { NextRequest, NextResponse } from "next/server"
const BACKEND_URL = process.env.INTERNAL_API_URL || "http://shifra-backend:8000" const BACKEND_URL = process.env.INTERNAL_API_URL || "http://enclava-backend:8000"
export async function GET(request: NextRequest) { export async function GET(request: NextRequest) {
try { try {

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function POST(request: NextRequest) { export async function POST(request: NextRequest) {
try { try {

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function POST(request: NextRequest) { export async function POST(request: NextRequest) {
try { try {

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function POST( export async function POST(
request: NextRequest, request: NextRequest,

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function PUT( export async function PUT(
request: NextRequest, request: NextRequest,

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function GET(request: NextRequest) { export async function GET(request: NextRequest) {
try { try {

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function GET(request: NextRequest) { export async function GET(request: NextRequest) {
try { try {

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.BACKEND_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.BACKEND_URL || 'http://enclava-backend:8000'
export async function DELETE( export async function DELETE(
request: NextRequest, request: NextRequest,

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.BACKEND_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.BACKEND_URL || 'http://enclava-backend:8000'
export async function GET(request: NextRequest) { export async function GET(request: NextRequest) {
try { try {

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.BACKEND_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.BACKEND_URL || 'http://enclava-backend:8000'
export async function GET( export async function GET(
request: NextRequest, request: NextRequest,

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.BACKEND_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.BACKEND_URL || 'http://enclava-backend:8000'
export async function DELETE( export async function DELETE(
request: NextRequest, request: NextRequest,

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.BACKEND_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.BACKEND_URL || 'http://enclava-backend:8000'
export async function GET(request: NextRequest) { export async function GET(request: NextRequest) {
try { try {

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.BACKEND_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.BACKEND_URL || 'http://enclava-backend:8000'
export async function GET(request: NextRequest) { export async function GET(request: NextRequest) {
try { try {

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function GET( export async function GET(
request: NextRequest, request: NextRequest,

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function POST(request: NextRequest) { export async function POST(request: NextRequest) {
try { try {

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function POST( export async function POST(
request: NextRequest, request: NextRequest,

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function GET(request: NextRequest) { export async function GET(request: NextRequest) {
try { try {

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function POST(request: NextRequest) { export async function POST(request: NextRequest) {
try { try {

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function GET(request: NextRequest) { export async function GET(request: NextRequest) {
try { try {

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function GET( export async function GET(
request: NextRequest, request: NextRequest,

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function GET(request: NextRequest) { export async function GET(request: NextRequest) {
try { try {

View File

@@ -1,6 +1,6 @@
import { NextRequest, NextResponse } from 'next/server' import { NextRequest, NextResponse } from 'next/server'
const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://shifra-backend:8000' const BACKEND_URL = process.env.INTERNAL_API_URL || 'http://enclava-backend:8000'
export async function POST(request: NextRequest) { export async function POST(request: NextRequest) {
try { try {

View File

@@ -205,7 +205,7 @@ function DashboardContent() {
Welcome back, {user.name} Welcome back, {user.name}
</h1> </h1>
<p className="text-empire-gold/60 mt-1"> <p className="text-empire-gold/60 mt-1">
Manage your AI gateway and modules Manage your Enclava platform and modules
</p> </p>
</div> </div>
<Button className="bg-empire-gold hover:bg-empire-gold/90 text-empire-dark"> <Button className="bg-empire-gold hover:bg-empire-gold/90 text-empire-dark">

View File

@@ -17,22 +17,22 @@ export const viewport: Viewport = {
export const metadata: Metadata = { export const metadata: Metadata = {
metadataBase: new URL('http://localhost:3000'), metadataBase: new URL('http://localhost:3000'),
title: 'AI Gateway Platform', title: 'Enclava Platform',
description: 'Secure AI processing platform with plugin-based architecture and confidential computing', description: 'Secure AI processing platform with plugin-based architecture and confidential computing',
keywords: ['AI', 'Gateway', 'Confidential Computing', 'LLM', 'TEE'], keywords: ['AI', 'Enclava', 'Confidential Computing', 'LLM', 'TEE'],
authors: [{ name: 'AI Gateway Team' }], authors: [{ name: 'Enclava Team' }],
robots: 'index, follow', robots: 'index, follow',
openGraph: { openGraph: {
type: 'website', type: 'website',
locale: 'en_US', locale: 'en_US',
url: 'http://localhost:3000', url: 'http://localhost:3000',
title: 'AI Gateway Platform', title: 'Enclava Platform',
description: 'Secure AI processing platform with plugin-based architecture and confidential computing', description: 'Secure AI processing platform with plugin-based architecture and confidential computing',
siteName: 'AI Gateway', siteName: 'Enclava',
}, },
twitter: { twitter: {
card: 'summary_large_image', card: 'summary_large_image',
title: 'AI Gateway Platform', title: 'Enclava Platform',
description: 'Secure AI processing platform with plugin-based architecture and confidential computing', description: 'Secure AI processing platform with plugin-based architecture and confidential computing',
}, },
} }

View File

@@ -675,7 +675,7 @@ function LLMPageContent() {
<CardHeader> <CardHeader>
<CardTitle>Available Models</CardTitle> <CardTitle>Available Models</CardTitle>
<CardDescription> <CardDescription>
Models available through your LLM gateway. Models available through your LLM platform.
</CardDescription> </CardDescription>
</CardHeader> </CardHeader>
<CardContent> <CardContent>
@@ -691,7 +691,7 @@ function LLMPageContent() {
))} ))}
{models.length === 0 && ( {models.length === 0 && (
<div className="col-span-full text-center py-8 text-muted-foreground"> <div className="col-span-full text-center py-8 text-muted-foreground">
No models available. Check your LLM gateway configuration. No models available. Check your LLM platform configuration.
</div> </div>
)} )}
</div> </div>

View File

@@ -30,7 +30,7 @@ export default function LoginPage() {
await login(email, password) await login(email, password)
toast({ toast({
title: "Login successful", title: "Login successful",
description: "Welcome to Confidential Empire", description: "Welcome to Enclava",
}) })
router.push("/dashboard") router.push("/dashboard")
} catch (error) { } catch (error) {
@@ -54,10 +54,10 @@ export default function LoginPage() {
</div> </div>
</div> </div>
<CardTitle className="text-2xl font-bold text-empire-gold"> <CardTitle className="text-2xl font-bold text-empire-gold">
Confidential Empire Enclava
</CardTitle> </CardTitle>
<CardDescription> <CardDescription>
Sign in to your secure AI gateway Sign in to your secure AI platform
</CardDescription> </CardDescription>
</CardHeader> </CardHeader>
<CardContent> <CardContent>

View File

@@ -43,7 +43,7 @@ export default function HomePage() {
<div className="w-8 h-8 bg-empire-gold rounded-lg flex items-center justify-center"> <div className="w-8 h-8 bg-empire-gold rounded-lg flex items-center justify-center">
<Shield className="w-5 h-5 text-empire-dark" /> <Shield className="w-5 h-5 text-empire-dark" />
</div> </div>
<span className="text-xl font-bold text-empire-gold">AI Gateway</span> <span className="text-xl font-bold text-empire-gold">Enclava</span>
</div> </div>
<nav className="hidden md:flex items-center space-x-6"> <nav className="hidden md:flex items-center space-x-6">
<a href="#features" className="text-empire-gold/60 hover:text-empire-gold"> <a href="#features" className="text-empire-gold/60 hover:text-empire-gold">
@@ -78,9 +78,9 @@ export default function HomePage() {
AI Processing Platform AI Processing Platform
</Badge> </Badge>
<h1 className="text-4xl md:text-6xl font-bold mb-6 text-empire-gold"> <h1 className="text-4xl md:text-6xl font-bold mb-6 text-empire-gold">
Secure AI Gateway with{' '} Secure AI Platform with{' '}
<span className="bg-gradient-to-r from-empire-gold to-empire-gold/80 bg-clip-text text-transparent"> <span className="bg-gradient-to-r from-empire-gold to-empire-gold/80 bg-clip-text text-transparent">
Secure Computing Confidential Computing
</span> </span>
</h1> </h1>
<p className="text-xl text-empire-gold/60 mb-8"> <p className="text-xl text-empire-gold/60 mb-8">
@@ -206,7 +206,7 @@ export default function HomePage() {
<div className="text-center mb-16"> <div className="text-center mb-16">
<h2 className="text-3xl font-bold mb-4 text-empire-gold">Available Modules</h2> <h2 className="text-3xl font-bold mb-4 text-empire-gold">Available Modules</h2>
<p className="text-empire-gold/60 max-w-2xl mx-auto"> <p className="text-empire-gold/60 max-w-2xl mx-auto">
Extend your AI gateway with powerful modules for enhanced functionality Extend your Enclava platform with powerful modules for enhanced functionality
</p> </p>
</div> </div>
<div className="grid md:grid-cols-2 lg:grid-cols-3 gap-6"> <div className="grid md:grid-cols-2 lg:grid-cols-3 gap-6">
@@ -278,7 +278,7 @@ export default function HomePage() {
<div className="w-6 h-6 bg-empire-gold rounded flex items-center justify-center"> <div className="w-6 h-6 bg-empire-gold rounded flex items-center justify-center">
<Shield className="w-4 h-4 text-empire-dark" /> <Shield className="w-4 h-4 text-empire-dark" />
</div> </div>
<span className="font-semibold text-empire-gold">AI Gateway</span> <span className="font-semibold text-empire-gold">Enclava</span>
</div> </div>
<div className="flex items-center space-x-6 text-sm text-empire-gold/60"> <div className="flex items-center space-x-6 text-sm text-empire-gold/60">
<a href="/docs" className="hover:text-empire-gold">Documentation</a> <a href="/docs" className="hover:text-empire-gold">Documentation</a>
@@ -288,7 +288,7 @@ export default function HomePage() {
</div> </div>
</div> </div>
<div className="mt-8 pt-8 border-t border-empire-gold/20 text-center text-sm text-empire-gold/60"> <div className="mt-8 pt-8 border-t border-empire-gold/20 text-center text-sm text-empire-gold/60">
<p>&copy; 2024 AI Gateway. All rights reserved.</p> <p>&copy; 2024 Enclava. All rights reserved.</p>
</div> </div>
</div> </div>
</footer> </footer>

View File

@@ -69,7 +69,7 @@ const Navigation = () => {
<Link href={user ? "/dashboard" : "/"} className="mr-6 flex items-center space-x-2"> <Link href={user ? "/dashboard" : "/"} className="mr-6 flex items-center space-x-2">
<div className="h-6 w-6 rounded bg-gradient-to-br from-empire-600 to-empire-800" /> <div className="h-6 w-6 rounded bg-gradient-to-br from-empire-600 to-empire-800" />
<span className="hidden font-bold sm:inline-block"> <span className="hidden font-bold sm:inline-block">
AI Gateway Enclava
</span> </span>
</Link> </Link>
{user && ( {user && (