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)