feat(crewai): reasoning, multimodal, subgraphs dojo demos + parity fixes - #2310
Open
ranst91 wants to merge 7 commits into
Open
feat(crewai): reasoning, multimodal, subgraphs dojo demos + parity fixes#2310ranst91 wants to merge 7 commits into
ranst91 wants to merge 7 commits into
Conversation
ranst91
force-pushed
the
claude/focused-boyd-c351e4
branch
from
August 4, 2026 14:15
9759ae6 to
1a6250e
Compare
Contributor
Python Preview PackagesVersion
Install with uvAdd the TestPyPI index to your [[tool.uv.index]]
name = "testpypi"
url = "https://test.pypi.org/simple/"
explicit = trueThen install the packages you need: # Core SDK
uv add 'ag-ui-protocol==0.0.0.dev1785953322' --index testpypi
# Integrations (each already depends on the matching ag-ui-protocol preview)
uv add 'ag-ui-langgraph==0.0.0.dev1785953322' --index testpypi
uv add 'ag-ui-crewai==0.0.0.dev1785953322' --index testpypi
# NOTE: ag-ui-agent-spec depends on pyagentspec (git-only, not on PyPI).
# You will need to install pyagentspec separately from its git repo.
uv add 'ag-ui-agent-spec==0.0.0.dev1785953322' --index testpypi
uv add 'ag_ui_adk==0.0.0.dev1785953322' --index testpypi
uv add 'ag_ui_strands==0.0.0.dev1785953322' --index testpypiInstall with pippip install \
--index-url https://test.pypi.org/simple/ \
--extra-index-url https://pypi.org/simple/ \
ag-ui-protocol==0.0.0.dev1785953322
Commit: fd862da |
@ag-ui/a2a-middleware
@ag-ui/a2ui-middleware
@ag-ui/event-throttle-middleware
@ag-ui/mcp-apps-middleware
@ag-ui/mcp-middleware
@ag-ui/a2a
@ag-ui/adk
@ag-ui/ag2
@ag-ui/agno
@ag-ui/aws-strands
@ag-ui/claude-agent-sdk
@ag-ui/claude-managed-agents
@ag-ui/crewai
@ag-ui/langchain
@ag-ui/langgraph
@ag-ui/llamaindex
@ag-ui/mastra
@ag-ui/pydantic-ai
@ag-ui/vercel-ai-sdk
@ag-ui/watsonx
@ag-ui/a2ui-toolkit
create-ag-ui-app
@ag-ui/client
@ag-ui/core
@ag-ui/encoder
@ag-ui/proto
commit: |
ranst91
force-pushed
the
claude/focused-boyd-c351e4
branch
from
August 4, 2026 14:33
1a6250e to
2c87403
Compare
ranst91
marked this pull request as draft
August 4, 2026 14:36
ranst91
force-pushed
the
claude/focused-boyd-c351e4
branch
from
August 4, 2026 15:49
2c87403 to
b7336db
Compare
…y fixes Bring the CrewAI dojo column to feature parity with LangGraph/Mastra for the Lane 2 capabilities by adding the three missing demos: - agentic_chat_reasoning: provider-selectable (Anthropic thinking / Gemini / OpenAI); surfaces REASONING_* where the provider emits reasoning tokens - agentic_chat_multimodal: image passthrough to a vision model - subgraphs: multi-agent travel planner with two HITL flow suspends and shared active_agent / itinerary state Also: - tool_based_generative_ui: bind the frontend generate_haiku tool instead of a backend duplicate, so the canvas renders the haiku with image + gradient at LangGraph parity - upgrade all demo models to gpt-5.4 - remove the crewai-only error_flow demo - e2e specs + SubgraphsPage page object for the three new demos
ranst91
force-pushed
the
claude/focused-boyd-c351e4
branch
from
August 4, 2026 16:38
b7336db to
2ed7237
Compare
…se loop PNI-202: OpenAI reasoning models expose reasoning summaries only through the Responses API, so chat-completions carried none. Adds a third reasoning channel (`copilotkit_responses`) that projects Responses summary deltas and encrypted blobs onto the same `DeltaReasoning` / `Bridged*` lifecycle as the litellm delta and crewai's native thinking event, so REASONING_* reaches both transports (legacy bus listener and StreamFrame) unchanged. Channel selection is a runtime capability probe: litellm must expose `aresponses` AND be able to model every event type the bridge reads, because litellm 1.63-1.67 raise for types they have no model for and the channel is unusable there. No version compare, no model-name branch; callers degrade to chat-completions. PNI-203: both A2UI demo flows were single-shot, so a surface-action click that made the model tool-call first ended the run on that call and never acknowledged the choice. Both now loop the model over their own tool results (bounded by MAX_MODEL_TURNS), plan per turn so the render sub-agent sees the current conversation, drop a tool call neither side can answer instead of poisoning the thread, and the composition guide now teaches the action event shape so a generated card carries a working button. Tests: 672 passing, up from 559. Adds Responses-channel coverage on both transports, A2UI action-loop coverage, and dojo e2e specs asserting a real "Thought for" trace and choice-specific action replies.
…ning-a2ui-actions fix(crew-ai): OpenAI Responses reasoning channel + A2UI action response loop
ranst91
marked this pull request as ready for review
August 5, 2026 10:49
AlemTuzlak
previously approved these changes
Aug 5, 2026
Closes the one e2e gap in the CrewAI dojo column. The backend_tool_rendering demo runs a "Weather Assistant" crew agent that calls the backend get_weather tool (executed server-side, surfaced via the StreamFrame path) so the client renders a weather card, followed by a text summary. The crew agent's execution uses native function calling and loops internally: one LLM turn to call get_weather, then a second turn (with the tool result in history) to produce the final answer. Both turns route through aimock. The new Weather-Assistant fixtures match on the unique role string and are registered before the crew_chat "Your personal goal is" catch-all so they win (first registered wins); the final-answer turn is also excluded from the generic tool-result catch-all so its dedicated summary is served. Verified against a real LLM (crewai 1.15.7 + gpt-5.4: card + summary render) and against the aimock harness (new spec green, full crewAITests suite 36/36, no regression to crew_chat).
…6382 test(dojo): add CrewAI backend_tool_rendering e2e + aimock fixtures
…astra sysIncludes is case-insensitive, so matching the Weather Assistant role alone also matched Mastra's helpful-weather-assistant backend_tool_rendering agent, serving it the crewai weather responses and failing mastra-agent-local. Require the crewai agent's unique backstory phrase too.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Brings the CrewAI dojo column to feature parity with LangGraph/Mastra for the Lane 2 capabilities, by adding the three demos that were missing despite the bridge support already shipping.
New demos
agentic_chat_reasoningagentic_chat_multimodalsubgraphsactive_agent/itinerarystateAll three: shared frontend component already existed; this wires the CrewAI backend flow + dojo config (menu/agents/config/files.json) + example.
Fixes surfaced by the parity audit
tool_based_generative_ui: bind the frontendgenerate_haikutool instead of a backend duplicate (wrong schema, no canvas handler). The main canvas now renders the haiku with image + gradient, matching hosted LangGraph. (verified live)gpt-5.4across all CrewAI demos.error_flow(a CrewAI-only diagnostic demo, not a parity feature).Testing
crewai-pythonunit suite: 517 passed, 2 skippedsubgraphsPage×2,agenticChatMultimodalPage,agenticChatReasoningPage) pass against the aimock replay harness (the CI path) — reuse existing fixturesactive_agentsnapshot; stable ids on mid-flow assistant messages), re-verifiedKnown follow-ups (filed)