main's static/quality format gate was red because this file was not
ruff-formatted (introduced by an earlier unrelated python commit).
Apply ruff 0.15.13 format to restore the gate.
ag-ui-protocol 0.1.15 added a validator requiring TextMessageContentEvent.delta
to have length >= 1. The test asserted that manually_emit_message with an empty
string still emits the full TEXT_MESSAGE_START/CONTENT/END sequence — that
behavior is no longer achievable at the protocol layer, and emitting empty
content events was never semantically useful. Removing rather than guarding
in code: the protocol should fail loudly on empty deltas, not silently drop
them in CopilotKit.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Add TestAGUIStyleEventIntegration to test_agui_agent.py: proves that AG-UI-style
unprefixed events (manually_emit_message, manually_emit_tool_call, exit) flow
correctly through CopilotKit's _handle_single_event to the AG-UI base handler
without being suppressed or double-converted by the CopilotKit layer.
- Replace LangGraphAgent with LangGraphAGUIAgent in both example files
(canvas/gemini and v1/_legacy/saas-dynamic-dashboards) to close the concern
about removed APIs still being referenced externally.
- Update poetry.lock to reflect ag_ui_langgraph 0.0.32 and dependency updates.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Expands test suite for LangGraphAGUIAgent:
- TestLanggraphDefaultMergeState: verify no duplicates in copilotkit.actions
and that tool ordering is preserved in the merged result
- TestReasoningContentPreservation: verify unknown custom events pass through,
empty-string messages still emit the full TEXT_MESSAGE_* sequence, and
empty-args tool calls still emit the full TOOL_CALL_* sequence
Expands test suite for emit filtering:
- TestMissingOrNoneRawEvent: events with rawEvent=None should pass through
to super() without crashing
- TestNoneEmitMetadataValues: None and 0 values for emit metadata keys
should NOT filter (only exactly False suppresses events)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Python SDK: 18 new tests for LangGraphAGUIAgent (custom event handling,
emit filtering, state merging, copilotkit namespace)
- TypeScript SDK: 25 new tests for copilotkitCustomizeConfig and
convertActionsToDynamicStructuredTools
- TypeScript Runtime: 27 new tests for event-source helpers
(shouldEmitToolCall, getCurrentMessageId, getCurrentContent, etc.)
- TypeScript Runtime: expanded dispatch-event-filtering tests with
custom event dispatch (manually_emit_message/tool_call/state, exit)
and langGraphDefaultMergeState tests
- Dead code annotations: LangGraphAgent class and use_function_call=True
branch annotated with TODO(ran-review) for Ran to verify
https://claude.ai/code/session_01BPMn7zhadhapfyyD8kYeAH