from __future__ import annotations

from typing import Literal

from pydantic import BaseModel, Field


class IntentDefinition(BaseModel):
    intent_id: str
    plugin_id: str
    domain: str
    risk_level: Literal["low", "medium", "high"] = "low"
    required_slots: list[str] = Field(default_factory=list)
    ask_templates: dict[str, str] = Field(default_factory=dict)
    keywords: list[str] = Field(default_factory=list)
    examples: list[str] = Field(default_factory=list)
