Skip to content

messaging.threading

threading

Helpers for RFC 5322 email threading headers.

Classes

Functions

build_message_id(*, domain)

Build a host-scoped RFC 5322 Message-ID.

Source code in src/codex_platform/messaging/threading.py
def build_message_id(*, domain: str) -> str:
    """Build a host-scoped RFC 5322 Message-ID."""

    normalized_domain = domain.strip().strip("@")
    if not normalized_domain:
        raise ValueError("domain must not be empty")
    return f"<{uuid.uuid4()}@{normalized_domain}>"

build_thread_key()

Build an opaque thread key safe to use in email headers and URLs.

Source code in src/codex_platform/messaging/threading.py
def build_thread_key() -> str:
    """Build an opaque thread key safe to use in email headers and URLs."""

    token = base64.urlsafe_b64encode(uuid.uuid4().bytes).decode("ascii").rstrip("=")
    return f"tk_{token}"

parse_references(header_value)

Parse a References header into individual Message-ID values.

Source code in src/codex_platform/messaging/threading.py
def parse_references(header_value: str) -> list[str]:
    """Parse a References header into individual Message-ID values."""

    return [part for part in header_value.split() if part]

serialize_references(message_ids)

Serialize Message-ID values into a References header.

Source code in src/codex_platform/messaging/threading.py
def serialize_references(message_ids: list[str]) -> str:
    """Serialize Message-ID values into a References header."""

    return " ".join(message_ids)

render_email_headers(dto)

Render thread DTO fields into outbound email headers.

Source code in src/codex_platform/messaging/threading.py
def render_email_headers(dto: ThreadHeadersDTO) -> dict[str, str]:
    """Render thread DTO fields into outbound email headers."""

    headers = {
        "Message-ID": dto.message_id,
        CODEX_THREAD_HEADER: dto.thread_key,
        LEGACY_LILY_THREAD_HEADER: dto.thread_key,
    }
    if dto.in_reply_to:
        headers["In-Reply-To"] = dto.in_reply_to
    if dto.references:
        headers["References"] = serialize_references(dto.references)
    return headers