Status: done
event acceptance from Runtime and EventAgent production consumers.[DONE] integration test for compatible providers without finish_reason.77 passed) and the full suite passes (82 passed, one existing warning).Enforce typed event-source isolation at production consumer boundaries so the legacy compatibility constructor cannot silently mask incorrect ChatAgent or EventAgent wiring.
text_event from ChatAgent streams.provider_tool_call from its provider-tools argument request.[DONE] flush emits one provider tool call when no finish reason is present.src/agent_lab/application/runtime.pysrc/agent_lab/application/event_agent.pytests/test_debug_runtime.pytests/test_event_agent.pytests/test_websocket_api.py[DONE] integration test for the real chat client.provider_tool_call and legacy event from the ChatAgent fake and assert no tool handoff occurs; keep the positive text_event test.text_event/legacy event from its provider fake and assert it falls back rather than treating either as resolved provider arguments; keep the positive provider call test.finish_reason, then [DONE]; assert exactly one provider_tool_call.event from consumer condition sets.Confirm typed-source isolation is enforced by negative tests and that no remaining production-path fixture relies on StreamItem.event(...).
done only after renewed spec and quality review.uv run pytest tests/test_debug_runtime.py tests/test_event_agent.py tests/test_websocket_api.py tests/test_openai_stream_parser.py -quv run pytestgit diff --check