2026-06-17 01:48:56 +02:00
|
|
|
from typing import Literal
|
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class EndpointCapabilities(BaseModel):
|
|
|
|
|
id: str
|
|
|
|
|
kind: str
|
|
|
|
|
direction: Literal["input", "output"]
|
|
|
|
|
sample_rate: int = 16000
|
|
|
|
|
channels: int = 1
|
|
|
|
|
latency_class: Literal["low", "medium", "high"] = "medium"
|
|
|
|
|
supports_aec: bool = False
|
|
|
|
|
supports_barge_in: bool = False
|
|
|
|
|
networked: bool = False
|
|
|
|
|
bluetooth: bool = False
|
|
|
|
|
mobile: bool = False
|
|
|
|
|
default: bool = False
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AudioChunk(BaseModel):
|
|
|
|
|
data: bytes
|
|
|
|
|
sample_rate: int = 16000
|
|
|
|
|
channels: int = 1
|
|
|
|
|
format: str = "wav"
|
|
|
|
|
timestamp_ms: int = 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class PipelineTrace(BaseModel):
|
|
|
|
|
raw_transcript: str | None = None
|
|
|
|
|
cleaned_transcript: str | None = None
|
|
|
|
|
semantic_response: str | None = None
|
|
|
|
|
spoken_response: str | None = None
|
|
|
|
|
tts_ready_text: str | None = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class SpeakRequest(BaseModel):
|
|
|
|
|
text: str = Field(min_length=1)
|
|
|
|
|
voice: str | None = None
|
|
|
|
|
language: str | None = None
|
|
|
|
|
output_endpoint: str | None = None
|
|
|
|
|
tts_provider: str | None = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ChatRequest(BaseModel):
|
|
|
|
|
text: str = Field(min_length=1)
|
|
|
|
|
input_endpoint: str | None = None
|
|
|
|
|
output_endpoint: str | None = None
|
|
|
|
|
language: str | None = None
|
|
|
|
|
voice: str | None = None
|
|
|
|
|
stt_provider: str | None = None
|
|
|
|
|
llm_provider: str | None = None
|
|
|
|
|
tts_provider: str | None = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class SessionRouteRequest(BaseModel):
|
|
|
|
|
input_endpoint: str | None = None
|
|
|
|
|
output_endpoint: str | None = None
|
|
|
|
|
stt_provider: str | None = None
|
|
|
|
|
llm_provider: str | None = None
|
|
|
|
|
tts_provider: str | None = None
|
|
|
|
|
language: str | None = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class RouteInfo(BaseModel):
|
|
|
|
|
input_endpoint: str
|
|
|
|
|
output_endpoint: str
|
|
|
|
|
stt_provider: str
|
|
|
|
|
llm_provider: str
|
|
|
|
|
tts_provider: str
|
|
|
|
|
language: str
|
|
|
|
|
|
2026-06-17 02:14:25 +02:00
|
|
|
|
|
|
|
|
class UserCreate(BaseModel):
|
|
|
|
|
display_name: str = Field(min_length=1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UserCreated(BaseModel):
|
|
|
|
|
user_id: str
|
|
|
|
|
display_name: str
|
|
|
|
|
token: str # nur bei Erstellung sichtbar
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UserPrefs(BaseModel):
|
|
|
|
|
input_endpoint: str | None = None
|
|
|
|
|
output_endpoint: str | None = None
|
|
|
|
|
stt_provider: str | None = None
|
|
|
|
|
llm_provider: str | None = None
|
|
|
|
|
tts_provider: str | None = None
|
|
|
|
|
language: str | None = None
|
|
|
|
|
|
2026-06-17 04:26:55 +02:00
|
|
|
|
|
|
|
|
class MemoryCreate(BaseModel):
|
|
|
|
|
content: str = Field(min_length=1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class MemoryOut(BaseModel):
|
|
|
|
|
id: int
|
|
|
|
|
content: str
|
|
|
|
|
created_at: str
|
|
|
|
|
|