Skip to content

feat(crewai): reasoning, multimodal, subgraphs dojo demos + parity fixes - #2310

Open
ranst91 wants to merge 7 commits into
mainfrom
claude/focused-boyd-c351e4
Open

feat(crewai): reasoning, multimodal, subgraphs dojo demos + parity fixes#2310
ranst91 wants to merge 7 commits into
mainfrom
claude/focused-boyd-c351e4

Conversation

@ranst91

@ranst91 ranst91 commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

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

Demo Capability Verified
agentic_chat_reasoning PNI-128 reasoning (provider-selectable: Anthropic thinking / Gemini / OpenAI) e2e (aimock) + live
agentic_chat_multimodal PNI-135 image passthrough to a vision model e2e (aimock)
subgraphs PNI-131 + PNI-133 + PNI-132: multi-agent travel planner with two HITL flow suspends + shared active_agent/itinerary state e2e (aimock) + full live drive-through

All 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 frontend generate_haiku tool 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)
  • Models → gpt-5.4 across all CrewAI demos.
  • Removed error_flow (a CrewAI-only diagnostic demo, not a parity feature).

Testing

  • crewai-python unit suite: 517 passed, 2 skipped
  • New e2e specs (subgraphsPage ×2, agenticChatMultimodalPage, agenticChatReasoningPage) pass against the aimock replay harness (the CI path) — reuse existing fixtures
  • Live drive-through on real gpt-5.4 for subgraphs (both interrupts + experiences), tool_based canvas, shared_state
  • cr-loop: two findings fixed (experiences active_agent snapshot; stable ids on mid-flow assistant messages), re-verified

Known follow-ups (filed)

  • PNI-202 — reasoning shows no thinking trace on OpenAI (chat-completions API limitation; needs Responses API in the bridge)
  • PNI-203 — A2UI action-button clicks don't elicit an agent response to the specific choice

@ranst91
ranst91 requested a review from a team as a code owner August 4, 2026 14:14
@ranst91
ranst91 force-pushed the claude/focused-boyd-c351e4 branch from 9759ae6 to 1a6250e Compare August 4, 2026 14:15
@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Python Preview Packages

Version 0.0.0.dev1785953322 published to TestPyPI.

Warning: These packages are built from contributor code that may not yet have been vetted for correctness or security. Install at your own risk and do not use in production.

Install with uv

Add the TestPyPI index to your pyproject.toml:

[[tool.uv.index]]
name = "testpypi"
url = "https://test.pypi.org/simple/"
explicit = true

Then 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 testpypi

Install with pip

pip install \
  --index-url https://test.pypi.org/simple/ \
  --extra-index-url https://pypi.org/simple/ \
  ag-ui-protocol==0.0.0.dev1785953322

Use --extra-index-url https://pypi.org/simple/ so pip can resolve
transitive dependencies (pydantic, fastapi, etc.) from real PyPI.


Commit: fd862da

@pkg-pr-new

pkg-pr-new Bot commented Aug 4, 2026

Copy link
Copy Markdown

Open in StackBlitz

@ag-ui/a2a-middleware

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/a2a-middleware@2310

@ag-ui/a2ui-middleware

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/a2ui-middleware@2310

@ag-ui/event-throttle-middleware

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/event-throttle-middleware@2310

@ag-ui/mcp-apps-middleware

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/mcp-apps-middleware@2310

@ag-ui/mcp-middleware

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/mcp-middleware@2310

@ag-ui/a2a

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/a2a@2310

@ag-ui/adk

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/adk@2310

@ag-ui/ag2

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/ag2@2310

@ag-ui/agno

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/agno@2310

@ag-ui/aws-strands

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/aws-strands@2310

@ag-ui/claude-agent-sdk

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/claude-agent-sdk@2310

@ag-ui/claude-managed-agents

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/claude-managed-agents@2310

@ag-ui/crewai

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/crewai@2310

@ag-ui/langchain

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/langchain@2310

@ag-ui/langgraph

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/langgraph@2310

@ag-ui/llamaindex

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/llamaindex@2310

@ag-ui/mastra

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/mastra@2310

@ag-ui/pydantic-ai

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/pydantic-ai@2310

@ag-ui/vercel-ai-sdk

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/vercel-ai-sdk@2310

@ag-ui/watsonx

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/watsonx@2310

@ag-ui/a2ui-toolkit

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/a2ui-toolkit@2310

create-ag-ui-app

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/create-ag-ui-app@2310

@ag-ui/client

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/client@2310

@ag-ui/core

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/core@2310

@ag-ui/encoder

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/encoder@2310

@ag-ui/proto

pnpm add https://pkg.pr.new/ag-ui-protocol/ag-ui/@ag-ui/proto@2310

commit: 6049e71

@ranst91
ranst91 force-pushed the claude/focused-boyd-c351e4 branch from 1a6250e to 2c87403 Compare August 4, 2026 14:33
@ranst91
ranst91 marked this pull request as draft August 4, 2026 14:36
@ranst91
ranst91 force-pushed the claude/focused-boyd-c351e4 branch from 2c87403 to b7336db Compare August 4, 2026 15:49
…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
ranst91 force-pushed the claude/focused-boyd-c351e4 branch from b7336db to 2ed7237 Compare August 4, 2026 16:38
ranst91 and others added 2 commits August 5, 2026 10:53
…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
ranst91 marked this pull request as ready for review August 5, 2026 10:49
AlemTuzlak
AlemTuzlak previously approved these changes Aug 5, 2026
ranst91 and others added 2 commits August 5, 2026 14:45
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants