feat(cli): log runner events

This commit is contained in:
banteg
2026-01-01 01:26:57 +04:00
parent c45a81fc57
commit 75a93e0f85
+18 -1
View File
@@ -15,7 +15,7 @@ import anyio
from .markdown import TELEGRAM_MARKDOWN_LIMIT, prepare_telegram from .markdown import TELEGRAM_MARKDOWN_LIMIT, prepare_telegram
from .model import CompletedEvent, ResumeToken, StartedEvent, TakopiEvent from .model import CompletedEvent, ResumeToken, StartedEvent, TakopiEvent
from .render import ExecProgressRenderer from .render import ExecProgressRenderer, render_event_cli
from .runner import Runner from .runner import Runner
from .telegram import BotClient from .telegram import BotClient
@@ -29,6 +29,22 @@ def _resolve_resume(
return runner.extract_resume(text) or runner.extract_resume(reply_text) return runner.extract_resume(text) or runner.extract_resume(reply_text)
def _summarize_error(error: str | None) -> str:
if not error:
return "error"
return error
def _log_runner_event(evt: TakopiEvent) -> None:
for line in render_event_cli(evt):
logger.info("[runner] %s", line)
if isinstance(evt, CompletedEvent):
if evt.ok:
logger.info("[runner] done")
else:
logger.info("[runner] error: %s", _summarize_error(evt.error))
def _is_cancel_command(text: str) -> bool: def _is_cancel_command(text: str) -> bool:
stripped = text.strip() stripped = text.strip()
if not stripped: if not stripped:
@@ -364,6 +380,7 @@ async def handle_message(
nonlocal resume_token_value, completed, answer, run_ok, run_error nonlocal resume_token_value, completed, answer, run_ok, run_error
try: try:
async for evt in runner.run(runner_text, resume_token): async for evt in runner.run(runner_text, resume_token):
_log_runner_event(evt)
if isinstance(evt, StartedEvent): if isinstance(evt, StartedEvent):
resume_token_value = evt.resume resume_token_value = evt.resume
if ( if (