Agentic_RAG / agentic_rag /runtime /unified_context.py
H022329's picture
Upload folder using huggingface_hub
6b62834 verified
Raw
History Blame Contribute Delete
1.78 kB
"""UnifiedContext — immutable request-scoped context carrying session, user, and service references."""
import uuid
from dataclasses import dataclass, field
@dataclass(frozen=True)
class UnifiedContext:
"""Immutable context object for a single request/turn.
Carries everything the agent needs to know about the current request:
- Session and user identity
- Service container references
- Request metadata
"""
session_id: str = field(default_factory=lambda: uuid.uuid4().hex)
user_id: str = "default"
request_id: str = field(default_factory=lambda: uuid.uuid4().hex[:12])
# Service references (set at runtime)
settings: object = None
session_manager: object = None
memory_manager: object = None
knowledge_service: object = None
tool_registry: object = None
@classmethod
def create(cls, session_id: str = "", user_id: str = "default") -> "UnifiedContext":
"""Create a UnifiedContext with service references resolved."""
from agentic_rag.config.settings import get_settings
from agentic_rag.services.session.manager import get_session_manager
from agentic_rag.services.memory.manager import get_memory_manager
from agentic_rag.services.knowledge.retrieval import get_knowledge_service
from agentic_rag.orchestration.l1_tools.registry import get_tool_registry
return cls(
session_id=session_id or uuid.uuid4().hex,
user_id=user_id,
request_id=uuid.uuid4().hex[:12],
settings=get_settings(),
session_manager=get_session_manager(),
memory_manager=get_memory_manager(),
knowledge_service=get_knowledge_service(),
tool_registry=get_tool_registry(),
)