Spaces:
Sleeping
Sleeping
File size: 1,139 Bytes
2e818da | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | """Hard request-scoped access policy for optional research context."""
from __future__ import annotations
import logging
import os
from dataclasses import dataclass
logger = logging.getLogger(__name__)
@dataclass(frozen=True)
class ContextAccessPolicy:
project_context_enabled: bool
explicit_context_available: bool = False
@property
def web_available(self) -> bool:
return bool(os.getenv("TAVILY_API_KEY"))
@property
def allow_project_retrieval(self) -> bool:
return self.project_context_enabled
@property
def allow_project_memory(self) -> bool:
return self.project_context_enabled
def log(self, *, request_id: str, event_type: str) -> None:
logger.info(
"Context policy request=%s event=%s project=%s explicit_context=%s web=%s",
request_id,
event_type,
self.project_context_enabled,
self.explicit_context_available,
self.web_available,
)
if not self.project_context_enabled:
logger.info("Project retrieval skipped request=%s reason=user_disabled", request_id)
|