File size: 2,632 Bytes
a56de17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
from fastapi import FastAPI, Depends, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
import uvicorn
from typing import Dict, Any
import logging

# Import routers
from .routers import (
    document_router,
    rag_router,
    agent_router,
    prompt_router
)

# Security
security = HTTPBearer()

# Create FastAPI app
app = FastAPI(
    title="Lattice API",
    description="API for Lattice AI Development Platform",
    version="1.0.0"
)

# Add CORS middleware
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

# Authentication dependency
async def verify_token(credentials: HTTPAuthorizationCredentials = Depends(security)):
    try:
        # Add your token verification logic here
        token = credentials.credentials
        # Verify token...
        return token
    except Exception as e:
        raise HTTPException(
            status_code=401,
            detail="Invalid authentication credentials"
        )

# Include routers
app.include_router(
    document_router.router,
    prefix="/api/v1/document",
    tags=["Document Processing"],
    dependencies=[Depends(verify_token)]
)

app.include_router(
    rag_router.router,
    prefix="/api/v1/rag",
    tags=["RAG"],
    dependencies=[Depends(verify_token)]
)

app.include_router(
    agent_router.router,
    prefix="/api/v1/agent",
    tags=["Agents"],
    dependencies=[Depends(verify_token)]
)

app.include_router(
    prompt_router.router,
    prefix="/api/v1/prompt",
    tags=["Prompts"],
    dependencies=[Depends(verify_token)]
)

@app.get("/health")
async def health_check():
    """Health check endpoint"""
    return {
        "status": "healthy",
        "version": "1.0.0"
    }

@app.get("/components")
async def list_components():
    """List available components and their capabilities"""
    return {
        "components": [
            {
                "name": "document",
                "version": "1.0.0",
                "status": "available"
            },
            {
                "name": "rag",
                "version": "1.0.0",
                "status": "available"
            },
            {
                "name": "agent",
                "version": "1.0.0",
                "status": "available"
            },
            {
                "name": "prompt",
                "version": "1.0.0",
                "status": "available"
            }
        ]
    }

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)