Spaces:
Sleeping
Sleeping
| """ | |
| Unified Context | |
| =============== | |
| A single data object that flows through the orchestrator into every | |
| tool / capability / plugin invocation. | |
| """ | |
| from __future__ import annotations | |
| from dataclasses import dataclass, field | |
| from typing import Any | |
| class Attachment: | |
| """A file or image attached to the user message.""" | |
| type: str # "image" | "file" | "pdf" | |
| url: str = "" | |
| base64: str = "" | |
| filename: str = "" | |
| mime_type: str = "" | |
| class UnifiedContext: | |
| """ | |
| Everything a capability or tool needs to process a single user turn. | |
| Attributes: | |
| session_id: Persistent conversation identifier. | |
| user_message: The current user input. | |
| conversation_history: Previous messages in OpenAI format. | |
| enabled_tools: Tool names the user has toggled on (Level 1). | |
| ``None`` means "not specified", while ``[]`` means | |
| "explicitly disable all optional tools". | |
| active_capability: Capability name selected by the user, or None for plain chat. | |
| knowledge_bases: KB names to use for RAG. | |
| attachments: Images / files sent with the message. | |
| config_overrides: Per-request config tweaks (e.g. temperature). | |
| language: UI / response language ("en" | "zh"). | |
| metadata: Catch-all for capability-specific extras. | |
| """ | |
| session_id: str = "" | |
| user_message: str = "" | |
| conversation_history: list[dict[str, Any]] = field(default_factory=list) | |
| enabled_tools: list[str] | None = None | |
| active_capability: str | None = None | |
| knowledge_bases: list[str] = field(default_factory=list) | |
| attachments: list[Attachment] = field(default_factory=list) | |
| config_overrides: dict[str, Any] = field(default_factory=dict) | |
| language: str = "en" | |
| notebook_context: str = "" | |
| history_context: str = "" | |
| memory_context: str = "" | |
| metadata: dict[str, Any] = field(default_factory=dict) | |