fix: support AI commands in media captions

This commit is contained in:
Azimkin
2026-09-14 14:35:48 +02:00
parent 40e7930e60
commit c6b93c9aa8
6 changed files with 62 additions and 10 deletions

View File

@@ -437,8 +437,14 @@ async def run_agent_turn(
context["base_dir"] = config.base_dir
existing.session.context.clear()
existing.session.context.update(context)
media = await _download_message_media(
client,
command_message,
Path(existing.workspace.name),
config.max_media_bytes,
)
return AgentTurnResult(
answer=await _run_session(existing.session, invocation.prompt),
answer=await _run_session(existing.session, invocation.prompt, media=media),
handle=existing,
)
@@ -463,6 +469,12 @@ async def run_agent_turn(
user_template=templates.user,
template_context=context,
)
media = await _download_message_media(
client,
command_message,
temp_path,
config.max_media_bytes,
)
tools = [
*WebPageTools(
timeout_seconds=config.web_page_timeout_seconds,
@@ -501,7 +513,7 @@ async def run_agent_turn(
session_name=f"telegram:{chat_id}",
messages=messages,
)
answer = await _run_session(session, invocation.prompt)
answer = await _run_session(session, invocation.prompt, media=media)
return AgentTurnResult(
answer=answer,
handle=AgentSessionHandle(session, workspace, set()),
@@ -511,8 +523,11 @@ async def run_agent_turn(
raise
async def _run_session(session: Any, prompt: str) -> str:
result = await session.run(prompt)
async def _run_session(session: Any, prompt: str, *, media: list[Media] | None = None) -> str:
if media:
result = await session.run(prompt, media=media)
else:
result = await session.run(prompt)
if not result.succeeded or result.final_message is None:
raise AgentError("Agent loop failed") from result.error
answer = result.final_message.message().strip()