LordXido commited on
Commit
ec89b57
·
verified ·
1 Parent(s): 85e23d2

Update api_gateway.py

Browse files
Files changed (1) hide show
  1. api_gateway.py +66 -34
api_gateway.py CHANGED
@@ -1,34 +1,66 @@
1
- from fastapi import FastAPI
2
- from pydantic import BaseModel
3
- from codex_logic import assess_work_description, validate_use_case
4
- from fastapi.responses import HTMLResponse, RedirectResponse
5
-
6
- app = FastAPI()
7
-
8
- class EvaluationRequest(BaseModel):
9
- work_description: str
10
-
11
- @app.get("/", response_class=HTMLResponse)
12
- def root():
13
- return """
14
- <html>
15
- <head><title>CodexHF API Gateway</title></head>
16
- <body style='font-family:monospace; background:#111; color:#0f0; text-align:center; padding:2em;'>
17
- <h1>🧠 CodexHF Sovereign API Gateway</h1>
18
- <p>✅ Status: <b>Running</b></p>
19
- <p>Use <code>/evaluate</code> endpoint via POST</p>
20
- <p><a href='/docs' style='color:#0f0;'>View API Documentation</a></p>
21
- </body>
22
- </html>
23
- """
24
-
25
- @app.get("/docs_redirect")
26
- def docs_redirect():
27
- return RedirectResponse(url="/docs")
28
-
29
- @app.post("/evaluate")
30
- def evaluate_work(req: EvaluationRequest):
31
- if not validate_use_case(req.work_description):
32
- return {"codex_response": "⚠ Rejected: Use case violates CodexΛ constraint."}
33
- response = assess_work_description(req.work_description)
34
- return {"codex_response": response}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI, HTTPException
2
+ from datetime import datetime
3
+ import uuid
4
+
5
+ from codex_logic import (
6
+ list_capabilities,
7
+ invoke_capability,
8
+ wake_module
9
+ )
10
+
11
+ app = FastAPI(
12
+ title="CodexHF API Gateway",
13
+ version="1.0.0",
14
+ description="Sovereign orchestration gateway for Codex Spaces",
15
+ )
16
+
17
+ @app.get("/health")
18
+ async def health():
19
+ return {
20
+ "status": "ok",
21
+ "timestamp": datetime.utcnow().isoformat()
22
+ }
23
+
24
+ @app.get("/capabilities")
25
+ async def capabilities():
26
+ return {
27
+ "capabilities": list_capabilities()
28
+ }
29
+
30
+ @app.post("/invoke")
31
+ async def invoke(request: dict):
32
+ trace_id = request.get("trace_id", str(uuid.uuid4()))
33
+ capability = request.get("capability")
34
+ payload = request.get("payload", {})
35
+ mode = request.get("execution_mode", "sync")
36
+
37
+ if not capability:
38
+ raise HTTPException(status_code=400, detail="Missing capability")
39
+
40
+ if mode == "async":
41
+ return {
42
+ "trace_id": trace_id,
43
+ "status": "accepted"
44
+ }
45
+
46
+ try:
47
+ result, duration = await invoke_capability(capability, payload)
48
+ return {
49
+ "trace_id": trace_id,
50
+ "result": result,
51
+ "duration_ms": duration
52
+ }
53
+ except ValueError as e:
54
+ raise HTTPException(status_code=404, detail=str(e))
55
+
56
+ @app.post("/wake")
57
+ async def wake(request: dict):
58
+ module = request.get("module")
59
+ if not module:
60
+ raise HTTPException(status_code=400, detail="Missing module")
61
+
62
+ await wake_module(module)
63
+ return {
64
+ "status": "awakened",
65
+ "module": module
66
+ }