Todo 43.1 Typed Event Consumer Regression Plan
Status: done
Result
- Runtime now consumes typed ChatAgent
text_event output.
- EventAgent now consumes typed provider
provider_tool_call output.
- Realistic fixtures exposed and fixed the legacy consumer mismatch.
- Todo 43.2 completed strict source isolation and remaining fixture migration.
Goal
Restore the existing dual-agent production paths after Todo 43 introduced typed stream kinds but legacy consumers and fixtures still listened for kind="event".
Scope
- Runtime consumes
text_event from ChatAgent and preserves its name-only handoff behavior.
- EventAgent argument generation consumes
provider_tool_call and preserves provider-generated arguments.
- Production-like test fixtures emit typed kinds instead of the legacy compatibility constructor.
- Keep
StreamItem.event(...) only as a temporary compatibility API for unrelated callers; new/updated production-path tests must not use it.
- Do not add direct ChatAgent tool routing.
Files
- Modify:
src/agent_lab/application/runtime.py
- Modify:
src/agent_lab/application/event_agent.py
- Modify:
tests/test_debug_runtime.py
- Modify:
tests/test_event_agent.py
Plan
Plan
- Add or update tests so realistic ChatAgent fixtures emit
text_event and EventAgent provider fixtures emit provider_tool_call.
- Verify tests fail because Runtime/EventAgent still consume only
event.
- Change only the two legacy consumer checks to the correct typed kinds.
- Run focused and full regressions to prove no legacy path was silently lost.
Act
- Update the minimum runtime fixture that drives text-event handoff to use
StreamItem.text_event(...).
- Update EventAgent LLM argument fixtures to use
StreamItem.provider_tool_call(...).
- Add explicit assertions that Runtime enqueues/executes the text event and EventAgent executes provider arguments without falling back.
- Run the focused tests and confirm expected RED failures before production changes.
- Update Runtime and EventAgent kind checks.
- Re-run focused and full tests.
Observe
Confirm that:
- Runtime receives a real typed text event and still emits
chat_event_detected plus tool execution.
- EventAgent receives a real provider tool call and returns its arguments.
- No direct ChatAgent tool transcript behavior appears in this fix.
- The compatibility constructor is not used to hide production-path type mismatches in the updated tests.
Update
- Mark 43 and 43.1
done only after spec and quality reviews pass.
- Commit this repair separately with the regression and compatibility risk in the message.
Verification
uv run pytest tests/test_debug_runtime.py tests/test_event_agent.py tests/test_openai_stream_parser.py -q
uv run pytest
git diff --check