| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import pytest
- from agents.stream_events import RawResponsesStreamEvent, RunItemStreamEvent
- from agency_swarm import Agent
- from agency_swarm.agent.conversation_starters_streaming import stream_cached_items_events
- @pytest.mark.asyncio
- async def test_stream_cached_items_preserves_handoff_output_type() -> None:
- agent = Agent(
- name="StreamAgent",
- instructions="You are helpful.",
- model="gpt-5.4-mini",
- )
- items = [
- {
- "type": "handoff_output_item",
- "call_id": "call_handoff_1",
- "output": '{"assistant": "Worker"}',
- }
- ]
- events = [event async for event in stream_cached_items_events(items=items, agent=agent)]
- run_item_events = [event for event in events if isinstance(event, RunItemStreamEvent)]
- assert run_item_events
- assert run_item_events[0].item.type == "handoff_output_item"
- @pytest.mark.asyncio
- async def test_stream_cached_items_emits_response_envelope_for_tool_calls() -> None:
- agent = Agent(
- name="StreamAgent",
- instructions="You are helpful.",
- model="gpt-5.4-mini",
- )
- items = [
- {
- "type": "function_call",
- "call_id": "call_weather_1",
- "name": "get_weather",
- "arguments": '{"location":"London"}',
- "role": "assistant",
- }
- ]
- events = [event async for event in stream_cached_items_events(items=items, agent=agent)]
- raw_events = [event for event in events if isinstance(event, RawResponsesStreamEvent)]
- raw_types = [event.data.type for event in raw_events if hasattr(event.data, "type")]
- assert raw_types
- assert raw_types[0] == "response.created"
- assert raw_types[-1] == "response.completed"
- @pytest.mark.asyncio
- async def test_stream_cached_items_emits_reasoning_summary_only_once() -> None:
- agent = Agent(
- name="StreamAgent",
- instructions="You are helpful.",
- model="gpt-5.4-mini",
- )
- items = [
- {
- "type": "reasoning",
- "id": "rs_test",
- "summary": [{"text": "Thinking", "type": "summary_text"}],
- }
- ]
- events = [event async for event in stream_cached_items_events(items=items, agent=agent)]
- raw_events = [event for event in events if isinstance(event, RawResponsesStreamEvent)]
- raw_types = [event.data.type for event in raw_events if hasattr(event.data, "type")]
- assert any(event_type.startswith("response.reasoning_summary_") for event_type in raw_types)
- assert "response.output_item.added" not in raw_types
- assert "response.output_item.done" not in raw_types
|