feat: require resume line for session ids
This commit is contained in:
@@ -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<id>{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
|
||||
|
||||
|
||||
|
||||
@@ -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}`"
|
||||
|
||||
Reference in New Issue
Block a user