Skip to content

Commit 3a20116

Browse files
committed
fix: skip echo for peer messages; clean shutdown on KeyboardInterrupt in client
Signed-off-by: Sam Betts <1769706+Tehsmash@users.noreply.github.com>
1 parent 82e635b commit 3a20116

2 files changed

Lines changed: 26 additions & 15 deletions

File tree

examples/echo_agent/client.py

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -103,21 +103,27 @@ async def main() -> None:
103103

104104
client = client_factory.create(card=cards)
105105

106-
if isinstance(client, MulticastClient) and args.broadcast:
107-
print(f"> {args.text} (broadcast live to {agent_names})")
108-
await send_live_message_broadcast(client, args.text)
109-
elif isinstance(client, MulticastClient):
110-
print(f"> {args.text} (multicast to {agent_names})")
111-
await send_message_multicast(client, args.text)
112-
elif args.live:
113-
logger.info("A2AClient initialized.")
114-
print(f"> {args.text} (live)")
115-
await send_live_message(client, args.text)
116-
else:
117-
logger.info("A2AClient initialized.")
118-
response_text = await send_message(client, args.text)
119-
print(f"> {args.text}")
120-
print(response_text)
106+
try:
107+
if isinstance(client, MulticastClient) and args.broadcast:
108+
print(f"> {args.text} (broadcast live to {agent_names})")
109+
await send_live_message_broadcast(client, args.text)
110+
elif isinstance(client, MulticastClient):
111+
print(f"> {args.text} (multicast to {agent_names})")
112+
await send_message_multicast(client, args.text)
113+
elif args.live:
114+
logger.info("A2AClient initialized.")
115+
print(f"> {args.text} (live)")
116+
await send_live_message(client, args.text)
117+
else:
118+
logger.info("A2AClient initialized.")
119+
response_text = await send_message(client, args.text)
120+
print(f"> {args.text}")
121+
print(response_text)
122+
except KeyboardInterrupt:
123+
pass
124+
finally:
125+
await client.close()
126+
await httpx_client.aclose()
121127

122128

123129
def parse_arguments() -> argparse.Namespace:

examples/echo_agent/echo_agent_executor.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ async def execute(
5050
context_id=task.context_id,
5151
)
5252

53+
# Peer-translated messages carry slim-src metadata — don't echo them
54+
if turn.metadata.get("slim-src"):
55+
logger.info(f"skipping peer message from {turn.metadata['slim-src']}")
56+
continue
57+
5358
if turn.message.parts[0].WhichOneof("content") != "text":
5459
logger.warning("skipping non-text message part")
5560
continue

0 commit comments

Comments
 (0)