From 864b00d9886b953022dc9956212d91750062a2c9 Mon Sep 17 00:00:00 2001 From: banteg <4562643+banteg@users.noreply.github.com> Date: Sun, 28 Dec 2025 22:10:19 +0400 Subject: [PATCH] feat: show turn number in progress updates --- .../src/codex_telegram_bridge/exec_render.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/codex_telegram_bridge/src/codex_telegram_bridge/exec_render.py b/codex_telegram_bridge/src/codex_telegram_bridge/exec_render.py index 16b3468..08b92b2 100644 --- a/codex_telegram_bridge/src/codex_telegram_bridge/exec_render.py +++ b/codex_telegram_bridge/src/codex_telegram_bridge/exec_render.py @@ -1,6 +1,7 @@ from __future__ import annotations import json +import re from collections import deque from dataclasses import dataclass, field from textwrap import indent @@ -52,12 +53,16 @@ def _shorten(text: str, max_len: int = 140) -> str: class ExecRenderState: items: dict[str, dict[str, Any]] = field(default_factory=dict) recent: deque[str] = field(default_factory=lambda: deque(maxlen=4)) + last_turn: Optional[int] = None def _record_item(state: ExecRenderState, item: dict[str, Any]) -> None: item_id = item.get("id") if isinstance(item_id, str) and item_id: state.items[item_id] = item + match = re.search(r"item_(\d+)", item_id) + if match: + state.last_turn = int(match.group(1)) def render_event_cli( @@ -282,6 +287,11 @@ class ExecProgressRenderer: return line def render(self, header: str) -> str: - if not self.state.recent: + lines: list[str] = [] + if self.state.last_turn is not None: + lines.append(f"Turn: {self.state.last_turn}") + if self.state.recent: + lines.extend(self.state.recent) + if not lines: return header - return header + "\n\n" + "\n".join(f"- {line}" for line in self.state.recent) + return header + "\n\n" + "\n".join(lines)