Skip to content

ccproxy.models.permissions

ccproxy.models.permissions

Pydantic models for permission system.

PermissionStatus

Bases: Enum

Status of a permission request.

EventType

Bases: Enum

Types of permission events.

PermissionInput

Bases: BaseModel

Input parameters for a tool permission request.

PermissionRequest

Bases: BaseModel

Represents a tool permission request.

is_expired

is_expired()

Check if the request has expired.

Source code in ccproxy/models/permissions.py
def is_expired(self) -> bool:
    """Check if the request has expired."""
    if self.status != PermissionStatus.PENDING:
        return False

    now, expires_at = self._normalize_datetimes(datetime.now(UTC), self.expires_at)
    return now > expires_at

time_remaining

time_remaining()

Get time remaining in seconds.

Source code in ccproxy/models/permissions.py
def time_remaining(self) -> int:
    """Get time remaining in seconds."""
    if self.status != PermissionStatus.PENDING:
        return 0

    now, expires_at = self._normalize_datetimes(datetime.now(UTC), self.expires_at)
    remaining = (expires_at - now).total_seconds()
    return max(0, int(remaining))

resolve

resolve(allowed)

Resolve the request.

Source code in ccproxy/models/permissions.py
def resolve(self, allowed: bool) -> None:
    """Resolve the request."""
    if self.status != PermissionStatus.PENDING:
        raise ValueError(f"Cannot resolve request in {self.status} status")

    self.status = PermissionStatus.ALLOWED if allowed else PermissionStatus.DENIED
    self.resolved_at = datetime.now(UTC)
    # Signal waiting coroutines that resolution is complete
    self._resolved_event.set()

PermissionEvent

Bases: BaseModel

Event emitted by the permission service.