study-buddy / app /services /context_access_policy.py
GitHub Actions
deploy d092bea3608b7a29952f16357fda39b7a29e399b
2e818da
Raw
History Blame Contribute Delete
1.14 kB
"""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)