26 lines
577 B
Python
26 lines
577 B
Python
from contextlib import contextmanager
|
|
from contextvars import ContextVar
|
|
from dataclasses import dataclass
|
|
|
|
SYSTEM_BACKEND = "system"
|
|
SYSTEM_SENDER = "-"
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class Origin:
|
|
backend: str = SYSTEM_BACKEND
|
|
sender: str = SYSTEM_SENDER
|
|
command: str | None = None
|
|
|
|
|
|
ORIGIN: ContextVar[Origin] = ContextVar("agent_origin", default=Origin())
|
|
|
|
|
|
@contextmanager
|
|
def use_origin(backend: str, sender: str, command: str | None = None):
|
|
token = ORIGIN.set(Origin(backend, sender, command))
|
|
try:
|
|
yield
|
|
finally:
|
|
ORIGIN.reset(token)
|