fix: support AI commands in media captions
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user