apikey / main.py
triflix's picture
Create main.py
34f53f9 verified
from fastapi import FastAPI, Body
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
from typing import Optional
import asyncio
app = FastAPI()
# Allow Tampermonkey local fetches
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_methods=["*"],
allow_headers=["*"]
)
# In-memory store
task_queue = asyncio.Queue()
latest_response: Optional[str] = None
class TaskRequest(BaseModel):
text: str
class ResponsePayload(BaseModel):
text: str
@app.post("/task")
async def add_task(task: TaskRequest):
"""Receive new task text."""
await task_queue.put(task.text)
return {"status": "queued", "text": task.text}
@app.get("/task/latest")
async def get_latest_task():
"""Provide next text for Tampermonkey when available."""
if task_queue.empty():
return {"textToInput": None}
text = await task_queue.get()
return {"textToInput": text}
@app.post("/task/response")
async def receive_response(data: ResponsePayload):
"""Receive AI output text from Tampermonkey."""
global latest_response
latest_response = data.text
return {"status": "received", "length": len(data.text)}
@app.get("/task/response/latest")
async def get_latest_response():
"""Retrieve last AI response for monitoring."""
return {"latest_response": latest_response}
# Run via: uvicorn main:app --reload --port 8000