diff --git a/backend/main.py b/backend/main.py index cc538e6..96a9418 100644 --- a/backend/main.py +++ b/backend/main.py @@ -40,10 +40,10 @@ async def chat(request: Request): async def stream(): async for token in stream_response(agent, messages): - chunk = json.dumps({"type": "text", "delta": token}) + chunk = json.dumps({"type": "text-delta", "textDelta": token}) yield f"data: {chunk}\n\n" yield "data: [DONE]\n\n" - + return StreamingResponse( stream(), media_type="text/event-stream", diff --git a/backend/mcp_server/__init__.py b/backend/mcp_server/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/backend/mcp_server/tools/judges.py b/backend/mcp_server/tools/judges.py index d5ad172..0ecf6ad 100644 --- a/backend/mcp_server/tools/judges.py +++ b/backend/mcp_server/tools/judges.py @@ -3,7 +3,6 @@ import httpx import json from fastmcp import FastMCP from typing import Optional -from pydantic import Field JUSTICE_API = "https://obcan.justice.sk/pilot/api/ress-isu-service" HEADERS = { @@ -29,7 +28,7 @@ def register_judge_tools(mcp: FastMCP): async def judge_autocomplete( query: str, court_id: Optional[str] = None, - limit: int = Field(default=10, description="Maximálny počet výsledkov"), + limit: int = 10, ) -> str: """ Autocomplete pre mená sudcov — použiť AKO PRVÝ krok @@ -48,8 +47,8 @@ def register_judge_tools(mcp: FastMCP): kraj: Optional[str] = None, court_id: Optional[str] = None, status: Optional[str] = None, - page: int = Field(default=0, description="Číslo stránky (začína od 0)"), - size: int = Field(default=20, description="Počet výsledkov na stránku"), + page: int = 0, + size: int = 20, ) -> str: """ Vyhľadávanie sudcov s filtrami. diff --git a/compose.yaml b/compose.yaml index 2f5e22e..1fc00b8 100644 --- a/compose.yaml +++ b/compose.yaml @@ -16,7 +16,7 @@ services: backend: build: context: . - dockerfile: /backend/Dockerfile + dockerfile: backend/Dockerfile restart: unless-stopped ports: - "8000:8000" @@ -40,9 +40,6 @@ services: - "4000:4000" env_file: - backend/.env - environment: - - GROQ_API_KEY=${GROQ_API_KEY} - - GEMINI_API_KEY=${GEMINI_API_KEY} volumes: - ./backend/config.yaml:/app/config.yaml:ro command: ['--config', '/app/config.yaml', '--port', '4000'] @@ -50,7 +47,7 @@ services: mcp: build: context: . - dockerfile: /backend/mcp_server/Dockerfile + dockerfile: backend/mcp_server/Dockerfile restart: unless-stopped ports: - "8001:8001" diff --git a/frontend/app/api/chat/route.ts b/frontend/app/api/chat/route.ts deleted file mode 100644 index 578c895..0000000 --- a/frontend/app/api/chat/route.ts +++ /dev/null @@ -1,19 +0,0 @@ -export async function POST(req: Request) { - const body = await req.json(); - - const response = await fetch("http://backend:8000/api/chat", { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify(body), - }); - - return new Response(response.body, { - headers: { - "Content-Type": "text/event-stream", - "Cache-Control": "no-cache", - "X-Accel-Buffering": "no", - }, - }); -} \ No newline at end of file diff --git a/frontend/app/globals.css b/frontend/app/globals.css index 04c459a..d053cc2 100644 --- a/frontend/app/globals.css +++ b/frontend/app/globals.css @@ -67,31 +67,7 @@ --ring: oklch(0.5 0.15 240); } -.dark { - --background: oklch(0.12 0.04 240); - --foreground: oklch(0.95 0.01 240); - --card: oklch(0.17 0.05 240); - --card-foreground: oklch(0.95 0.01 240); - --popover: oklch(0.17 0.05 240); - --popover-foreground: oklch(0.95 0.01 240); - --primary: oklch(0.6 0.18 240); - --primary-foreground: oklch(0.98 0 0); - --secondary: oklch(0.2 0.05 240); - --secondary-foreground: oklch(0.95 0.01 240); - --muted: oklch(0.2 0.05 240); - --muted-foreground: oklch(0.65 0.05 240); - --accent: oklch(0.22 0.06 240); - --accent-foreground: oklch(0.95 0.01 240); - --destructive: oklch(0.704 0.191 22.216); - --border: oklch(1 0 0 / 8%); - --input: oklch(1 0 0 / 12%); - --ring: oklch(0.5 0.15 240); - --chart-1: oklch(0.488 0.243 264.376); - --chart-2: oklch(0.696 0.17 162.48); - --chart-3: oklch(0.769 0.188 70.08); - --chart-4: oklch(0.627 0.265 303.9); - --chart-5: oklch(0.645 0.246 16.439); -} + @layer base { * { diff --git a/frontend/app/layout.tsx b/frontend/app/layout.tsx index 3813dcc..e73c9c4 100644 --- a/frontend/app/layout.tsx +++ b/frontend/app/layout.tsx @@ -14,8 +14,7 @@ const geistMono = Geist_Mono({ }); export const metadata: Metadata = { - title: "assistant-ui starter app", - description: "Generated by create-assistant-ui", + title: "Legal AI Assistant", }; export default function RootLayout({ @@ -24,7 +23,7 @@ export default function RootLayout({ children: React.ReactNode; }>) { return ( - +
diff --git a/frontend/components/assistant-ui/header.tsx b/frontend/components/assistant-ui/header.tsx index c20d319..a514b15 100644 --- a/frontend/components/assistant-ui/header.tsx +++ b/frontend/components/assistant-ui/header.tsx @@ -16,10 +16,6 @@ export const ThreadHeader: FC = () => {- Právny AI Asistent môže robiť chyby. Overte dôležité informácie. -
{
- e.currentTarget.style.display = "none";
- e.currentTarget.parentElement!.innerHTML = `