From 3566a0a0041ae7c0d17d1a83d1e7eb5349225248 Mon Sep 17 00:00:00 2001 From: banteg <4562643+banteg@users.noreply.github.com> Date: Mon, 29 Dec 2025 13:53:10 +0400 Subject: [PATCH] feat: require resume line for session ids --- .../src/codex_telegram_bridge/exec_bridge.py | 11 +++++++---- codex_telegram_bridge/tests/test_exec_bridge.py | 9 ++++++++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/codex_telegram_bridge/src/codex_telegram_bridge/exec_bridge.py b/codex_telegram_bridge/src/codex_telegram_bridge/exec_bridge.py index 19b4a5a..88379d9 100644 --- a/codex_telegram_bridge/src/codex_telegram_bridge/exec_bridge.py +++ b/codex_telegram_bridge/src/codex_telegram_bridge/exec_bridge.py @@ -24,16 +24,19 @@ from .rendering import render_markdown from .telegram_client import TelegramClient logger = logging.getLogger(__name__) -UUID_PATTERN = re.compile( - r"(?i)\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b" +UUID_PATTERN_TEXT = r"\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b" +UUID_PATTERN = re.compile(UUID_PATTERN_TEXT, re.IGNORECASE) +RESUME_LINE = re.compile( + rf"^\s*resume\s*:\s*`?(?P{UUID_PATTERN_TEXT})`?\s*$", + re.IGNORECASE | re.MULTILINE, ) def extract_session_id(text: str | None) -> str | None: if not text: return None - if m := UUID_PATTERN.search(text): - return m.group(0) + if m := RESUME_LINE.search(text): + return m.group("id") return None diff --git a/codex_telegram_bridge/tests/test_exec_bridge.py b/codex_telegram_bridge/tests/test_exec_bridge.py index da37f12..94aa3ab 100644 --- a/codex_telegram_bridge/tests/test_exec_bridge.py +++ b/codex_telegram_bridge/tests/test_exec_bridge.py @@ -8,11 +8,18 @@ from codex_telegram_bridge.exec_bridge import extract_session_id, truncate_for_t def test_extract_session_id_finds_uuid_v7() -> None: uuid = "019b66fc-64c2-7a71-81cd-081c504cfeb2" - text = f"resume session `{uuid}` please" + text = f"resume: `{uuid}`" assert extract_session_id(text) == uuid +def test_extract_session_id_requires_resume_line() -> None: + uuid = "019b66fc-64c2-7a71-81cd-081c504cfeb2" + text = f"here is a uuid {uuid}" + + assert extract_session_id(text) is None + + def test_truncate_for_telegram_preserves_resume_line() -> None: uuid = "019b66fc-64c2-7a71-81cd-081c504cfeb2" md = ("x" * 10_000) + f"\nresume: `{uuid}`"