feat: require resume line for session ids

This commit is contained in:
banteg
2025-12-29 13:53:10 +04:00
parent 70928d5bdf
commit 3566a0a004
2 changed files with 15 additions and 5 deletions
@@ -24,16 +24,19 @@ from .rendering import render_markdown
from .telegram_client import TelegramClient from .telegram_client import TelegramClient
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
UUID_PATTERN = re.compile( 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"
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 = re.compile(UUID_PATTERN_TEXT, re.IGNORECASE)
RESUME_LINE = re.compile(
rf"^\s*resume\s*:\s*`?(?P<id>{UUID_PATTERN_TEXT})`?\s*$",
re.IGNORECASE | re.MULTILINE,
) )
def extract_session_id(text: str | None) -> str | None: def extract_session_id(text: str | None) -> str | None:
if not text: if not text:
return None return None
if m := UUID_PATTERN.search(text): if m := RESUME_LINE.search(text):
return m.group(0) return m.group("id")
return None return None
@@ -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: def test_extract_session_id_finds_uuid_v7() -> None:
uuid = "019b66fc-64c2-7a71-81cd-081c504cfeb2" uuid = "019b66fc-64c2-7a71-81cd-081c504cfeb2"
text = f"resume session `{uuid}` please" text = f"resume: `{uuid}`"
assert extract_session_id(text) == 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: def test_truncate_for_telegram_preserves_resume_line() -> None:
uuid = "019b66fc-64c2-7a71-81cd-081c504cfeb2" uuid = "019b66fc-64c2-7a71-81cd-081c504cfeb2"
md = ("x" * 10_000) + f"\nresume: `{uuid}`" md = ("x" * 10_000) + f"\nresume: `{uuid}`"