router / deeptutor /core /context.py
Piyush1225's picture
push
5df8a73
"""
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
@dataclass
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 = ""
@dataclass
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)