from __future__ import annotations

from typing import Literal

from pydantic import BaseModel, Field


class DemoRuntimeConfig(BaseModel):
    matcher_pipeline: Literal["classifier"]
    classifier_backend: Literal["mock", "bert", "remote", "joint_bert"]
    session_backend: Literal["memory", "redis"]
    slot_extractor_backend: str
    planner_backend: str
    planner_model_name: str


class DemoRuntimeUpdateRequest(BaseModel):
    matcher_pipeline: Literal["classifier"] = Field(default="classifier")
    classifier_backend: Literal["mock", "bert", "remote", "joint_bert"]
    session_backend: Literal["memory", "redis"]
