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
|
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}`"
|
||||||
|
|||||||
Reference in New Issue
Block a user