refactor: trim progress renderer state

This commit is contained in:
banteg
2025-12-29 13:56:43 +04:00
parent 9b8a4b958c
commit abbb1a8825
4 changed files with 6 additions and 8 deletions
+3 -2
View File
@@ -3,8 +3,9 @@
Route Telegram replies back into Codex sessions using non-interactive Route Telegram replies back into Codex sessions using non-interactive
`codex exec` + `codex exec resume`. `codex exec` + `codex exec resume`.
The bridge stores a mapping from `(chat_id, bot_message_id)` to a route so The bridge does not persist routes. It resumes only when the incoming
replies can be routed correctly. message (or the replied-to bot message) contains an explicit `resume: <uuid>`
line.
## Install ## Install
@@ -201,7 +201,7 @@ class CodexExecRunner:
found_session: str | None = session_id found_session: str | None = session_id
last_agent_text: str | None = None last_agent_text: str | None = None
saw_agent_message = False saw_agent_message = False
cli_last_turn: int | None = None cli_last_item: int | None = None
cancelled = False cancelled = False
rc: int | None = None rc: int | None = None
@@ -223,7 +223,7 @@ class CodexExecRunner:
logger.debug("[codex][jsonl] invalid line: %r", line) logger.debug("[codex][jsonl] invalid line: %r", line)
continue continue
cli_last_turn, out_lines = render_event_cli(evt, cli_last_turn) cli_last_item, out_lines = render_event_cli(evt, cli_last_item)
for out in out_lines: for out in out_lines:
logger.info("[codex] %s", out) logger.info("[codex] %s", out)
@@ -15,7 +15,6 @@ HARD_BREAK = " \n"
MAX_PROGRESS_CMD_LEN = 300 MAX_PROGRESS_CMD_LEN = 300
MAX_QUERY_LEN = 60 MAX_QUERY_LEN = 60
MAX_PATH_LEN = 40 MAX_PATH_LEN = 40
MAX_PROGRESS_CHARS = 300
def format_elapsed(elapsed_s: float) -> str: def format_elapsed(elapsed_s: float) -> str:
@@ -169,11 +168,9 @@ class ExecProgressRenderer:
def __init__( def __init__(
self, self,
max_actions: int = 5, max_actions: int = 5,
max_chars: int = MAX_PROGRESS_CHARS,
command_width: int | None = MAX_PROGRESS_CMD_LEN, command_width: int | None = MAX_PROGRESS_CMD_LEN,
) -> None: ) -> None:
self.max_actions = max_actions self.max_actions = max_actions
self.max_chars = max_chars
self.command_width = command_width self.command_width = command_width
self.recent_actions: deque[str] = deque(maxlen=max_actions) self.recent_actions: deque[str] = deque(maxlen=max_actions)
self.last_item: int | None = None self.last_item: int | None = None
@@ -62,7 +62,7 @@ def test_render_event_cli_real_run_fixture() -> None:
def test_progress_renderer_renders_progress_and_final() -> None: def test_progress_renderer_renders_progress_and_final() -> None:
r = ExecProgressRenderer(max_actions=5, max_chars=10_000) r = ExecProgressRenderer(max_actions=5)
for evt in _loads(SAMPLE_STREAM): for evt in _loads(SAMPLE_STREAM):
r.note_event(evt) r.note_event(evt)