Skip to content

Conversation

@afarntrog
Copy link
Contributor

@afarntrog afarntrog commented Jan 23, 2026

Description

This pull request updates the string representation logic for the AgentResult class to prioritize interrupts and structured output over message text, and adds comprehensive tests to ensure correct behavior. The changes clarify how AgentResult.__str__ behaves in different scenarios and improve test coverage accordingly.

AgentResult string representation logic:

  • Updated the __str__ method in AgentResult to follow a clear priority: (1) interrupts (if present), (2) structured output (if present), and (3) concatenated message text. This ensures that the most important information is always returned first.

Testing improvements:

  • Revised and expanded the tests in test_agent_result.py to:
    • Check that structured output is returned when present and interrupts are absent.
    • Verify that interrupts take precedence over both structured output and message text, including cases with empty interrupts lists.
    • Add imports and helpers for testing interrupts.

Related Issues

#1461

Documentation PR

Type of Change

Bug fix
Breaking change

Testing

How have you tested the change? Verify that the changes do not break functionality or introduce warnings in consuming repositories: agents-docs, agents-tools, agents-cli

  • I ran hatch run prepare

Checklist

  • I have read the CONTRIBUTING document
  • I have added any necessary tests that prove my fix is effective or my feature works
  • I have updated the documentation accordingly
  • I have added an appropriate example to the documentation to outline the feature, or no new docs are needed
  • My changes generate no new warnings
  • Any dependent changes have been merged and published

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Change string representation priority to:
1. Interrupts (if present) → stringified list of interrupt dicts
2. Structured output (if present) → JSON string
3. Text content from message → concatenated text blocks

Previously, structured output was only used as fallback when no text
content existed. Now structured output and interrupts take precedence
over raw text content for more predictable serialization behavior.
@codecov
Copy link

codecov bot commented Jan 23, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

"""
content_array = self.message.get("content", [])
if self.interrupts:
return str([interrupt.to_dict() for interrupt in self.interrupts])
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should this also be json?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's best we keep it like this to provide the stringified agent "output" as opposed to "interfering" by modifying it with some json. In addition, the majority case (just last message text) is also just text.

@afarntrog afarntrog requested a review from mkmeral January 23, 2026 18:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants