--- title: Pydantic v2 Models type: package updated: 2026-05-04 --- # Pydantic v2 Models meeting-room uses Pydantic v2 for typed configuration, messages, and session data. All models are in `meeting_room/models.py`. ## Config models | Model | Purpose | extra | |-------|---------|-------| | `ProviderConfig` | API provider (base_url, api_key) | forbid | | `RoleConfig` | Discussion role (name, provider, model, temperature, tools, system_prompt) | forbid | | `DefaultsConfig` | Default settings (max_rounds, language, framework, workdir) | ignore | | `DiscussionConfig` | Top-level config — direct counterpart of config.yaml | ignore | Key: `DiscussionConfig(**yaml_config)` works unchanged — feeds parsed YAML directly into the model. ## Scenario model | Model | Purpose | extra | |-------|---------|-------| | `ScenarioConfig` | Loaded from .md/.yaml (name, participants, max_rounds, problem) | ignore | ## Runtime models | Model | Purpose | extra | |-------|---------|-------| | `Message` | Single discussion message (role_id, name, content) | forbid | | `ToolCallRecord` | Tool call (id, name, arguments, result) | forbid | | `Session` | Full session (scenario, messages, tool_calls, created_at, updated_at) | ignore | ## Tools field `RoleConfig.tools` accepts both `str` ("all", "readonly", etc.) and `list[str]` (["read_file", "web_search"]). A field validator coerces list items to strings.