Source code for framework.data_management.request
"""
Data Source Request Abstraction
Provides structured request information for data source providers.
"""
from typing import Optional, Dict, Any, TYPE_CHECKING
from dataclasses import dataclass, field
if TYPE_CHECKING:
from framework.state import AgentState
[docs]
@dataclass
class DataSourceRequester:
"""
Information about the component requesting data from a data source.
Enables data sources to make decisions about whether to respond
based on the requesting component and execution context.
"""
component_type: str # "task_extraction", "capability", "orchestrator"
component_name: str # specific name like "task_extraction", "performance_analysis"
[docs]
@dataclass
class DataSourceRequest:
"""
Generic data source request with query and metadata support.
Provides flexible interface for data source providers to receive
specific queries and contextual metadata for intelligent retrieval.
"""
user_id: Optional[str]
requester: DataSourceRequester
query: Optional[str] = None
metadata: Dict[str, Any] = field(default_factory=dict)
[docs]
def create_data_source_request(
state: 'AgentState',
requester: DataSourceRequester,
query: Optional[str] = None,
metadata: Optional[Dict[str, Any]] = None
) -> DataSourceRequest:
"""
Create a data source request from AgentState and requester information.
Args:
state: AgentState instance (TypedDict)
requester: Information about the requesting component
query: Optional specific query for the data source
metadata: Optional metadata for provider-specific context
Returns:
DataSourceRequest with user context and query information
"""
# Extract user ID from session context
user_id = None
session_context = state.get('session_context', {})
if session_context and hasattr(session_context, 'user_id'):
user_id = session_context.user_id
return DataSourceRequest(
user_id=user_id,
requester=requester,
query=query,
metadata=metadata or {}
)