Adds the following demos to the built-in-agent showcase:
- open-gen-ui-advanced: sandboxFunctions bridge between agent-authored
iframe UI and host-defined handlers
- tool-rendering-default-catchall: useDefaultRenderTool with no config
- tool-rendering-custom-catchall: useDefaultRenderTool with branded
wildcard renderer
- frontend-tools: useFrontendTool that mutates page background
- frontend-tools-async: async useFrontendTool with branded NotesCard
Also expands server-tools.ts with mock get_weather, search_flights,
get_stock_price, and roll_dice tools used by the catch-all demos.
Manifest updated with new feature ids, demo entries, and highlight
files.
Reasoning-related demos (agentic-chat-reasoning, reasoning-default-render,
tool-rendering-reasoning-chain) are NOT included: the tanstack/openai
adapter with gpt-4o does not natively emit REASONING_* events, so
reasoning would not surface in the UI.
Picks up the remaining demos from D13's port. Adds:
- mcp-apps: dedicated route with mcpApps.servers config (Excalidraw), no-tools Mastra agent
- tool-rendering-reasoning-chain: per-tool renderers + custom reasoningMessage slot
- gen-ui-tool-based: manifest entry for the existing useFrontendTool haiku page
- hitl-in-chat-booking: manifest alias pointing at the existing /demos/hitl-in-chat route
- hitl: manifest entry for the existing step-selection page (useLangGraphInterrupt branch is a no-op on Mastra; useHumanInTheLoop branch works)
BLOCKED on Mastra adapter capabilities:
- gen-ui-interrupt: useInterrupt requires AG-UI INTERRUPT events the Mastra adapter does not emit
- interrupt-headless: same root cause
Adds five missing showcase demos to the Claude Agent SDK (TypeScript)
integration:
- tool-rendering-default-catchall: zero-config wildcard tool renderer.
- tool-rendering-custom-catchall: branded wildcard renderer.
- agentic-chat-reasoning: custom reasoningMessage slot.
- reasoning-default-render: built-in reasoning slot.
- tool-rendering-reasoning-chain: reasoning + per-tool renderers + catch-all.
Backend changes in agent_server.ts wire Anthropic extended thinking on a
new /reasoning endpoint and forward thinking_delta events as AG-UI
REASONING_MESSAGE_* events. A dedicated Next.js runtime route
copilotkit-reasoning/route.ts proxies the three reasoning agent ids.
Catch-all tool demos register the LangGraph reference's mock tools
(get_weather, search_flights, get_stock_price, roll_dice) via
useFrontendTool with stub handlers, so the pass-through agent can call
them without backend agent changes.
PARITY_NOTES updated to reflect what shipped and what remains BLOCKED
(headless-complete, beautiful-chat, a2ui-fixed-schema, and the four
LangGraph-interrupt-only demos).
Ports the second batch of langgraph-python showcase cells to AG2.
Each demo gets a dedicated AG2 sub-app mounted at a named path on the
agent server, plus (where required) its own /api/copilotkit-* runtime
route so the runtime middleware config doesn't leak into other cells.
- declarative-gen-ui — A2UI Dynamic Schema. Backend (a2ui_dynamic.py)
owns the generate_a2ui tool, calls a secondary LLM bound to
render_a2ui, returns an a2ui_operations container. Runtime route
with a2ui.injectA2UITool: false.
- a2ui-fixed-schema — A2UI Fixed Schema. Backend (a2ui_fixed.py) ships
flight_schema.json and emits a2ui_operations directly from
display_flight. Runtime route with a2ui.injectA2UITool: false.
- mcp-apps — Backend (mcp_apps_agent.py) is a no-tools ConversableAgent;
runtime route configures mcpApps.servers pointing at the public
Excalidraw MCP server.
- open-gen-ui, open-gen-ui-advanced — Backends are no-tools
ConversableAgents; shared runtime route enables openGenerativeUI.
- agentic-chat-reasoning, tool-rendering-reasoning-chain — Frontend
ports of the reasoning cells. Custom reasoningMessage slot wired as
in the canonical reference. tool-rendering-reasoning-chain has its
own backend with weather/flights/stock/dice tools. AG2 caveat
documented: ConversableAgent does not natively emit AG-UI
REASONING_MESSAGE_* events the way LangGraph deepagents does, so the
reasoning slot may render empty until/if AG2 adds reasoning emission.
Updates manifest.yaml with all 7 new demo entries plus matching feature
list, and updates PARITY_NOTES.md to record Batch 4.
- hitl-in-chat-booking: frontend useHumanInTheLoop with inline time-picker
- mcp-apps: separate route with mcpApps middleware → Excalidraw MCP server
- open-gen-ui: separate route with openGenerativeUI middleware + design skill
Ports beautiful-chat, byoc-hashbrown, byoc-json-render, multimodal, open-gen-ui, open-gen-ui-advanced, and voice from the langgraph-python reference into the mastra integration.
Each frontend page is reused as-is. Backends use existing weatherAgent for cells where the UI shape is enforced on the frontend (byoc-*, open-gen-ui-*, beautiful-chat). Multimodal gets a dedicated vision-capable Mastra agent (gpt-4o) registered in the Mastra config. Voice wires the V2 runtime directly with TranscriptionServiceOpenAI so OPENAI_API_KEY-missing returns a clean 401.
Manifest features and demos lists updated. Frontend/backend agent name aliases aligned with each page's <CopilotKit agent=...> prop.
Adds beautiful-chat, cli-start (manifest), prebuilt-sidebar, prebuilt-popup,
chat-slots, chat-customization-css, headless-simple, and headless-complete
demos to the built-in-agent integration. All cells route through the single
in-process /api/copilotkit endpoint and target the 'default' agent.
The headless-complete tool renderers are adapted to the built-in-agent's
existing 'weather' and 'haiku' server tools, with HighlightNote retained as
a frontend-only useComponent example. Beautiful-chat is a simplified
two-pane polished starter rather than the full 4084 reference clone, since
the built-in-agent runner is intentionally minimal.
Adds 5 missing showcase features to crewai-crews manifest:
- cli-start: informational entry with starter clone command
- gen-ui-tool-based: uses pre-existing demo page (haiku via useFrontendTool)
- tool-rendering-default-catchall: built-in DefaultToolCallRenderer wildcard
- tool-rendering-custom-catchall: branded wildcard via useDefaultRenderTool
- hitl-in-chat-booking: alias to hitl-in-chat for booking flow
All demo page stubs already exist on disk and the relevant agent names are
already registered in src/app/api/copilotkit/route.ts; this commit only
surfaces them through manifest features + demo entries.
BLOCKED (omitted, no LangGraph interrupt or MCP runtime in CrewAI):
- gen-ui-interrupt
- interrupt-headless
- mcp-apps
Adds three feature-matrix entries to the Agno integration manifest:
- `cli-start` — informational copy-paste starter command card (no route).
- `gen-ui-tool-based` — frontend-only haiku-renderer demo that already ships
in `src/app/demos/gen-ui-tool-based/`; the manifest entry plus the
existing alias in `src/app/api/copilotkit/route.ts` (mainAgentNames)
surface it in the showcase.
- `hitl-in-chat-booking` — second cell for the booking flavor of the
time-picker HITL surface; reuses `src/app/demos/hitl-in-chat/` files and
the main agent's `book_call` external-execution tool.
PARITY_NOTES.md updated with a fourth-pass entry summarising the additions.
Five sibling features (`beautiful-chat`, `gen-ui-interrupt`,
`interrupt-headless`, `declarative-gen-ui`, `a2ui-fixed-schema`) remain
deferred for the reasons already documented in PARITY_NOTES.md — Agno's
AGUI adapter has no interrupt primitive, and the dedicated combined
runtimes (openGenerativeUI + a2ui injection + mcpApps) and the
CopilotKit-middleware-driven catalog injection that the langgraph-python
reference relies on have not been wired into Agno yet.
Adds the in-chat HITL demo (frontend-only useHumanInTheLoop with a
book_call tool and time-picker card) and the manifest entries that were
missing for cli-start, gen-ui-tool-based, hitl-in-chat, and
hitl-in-chat-booking.
Documents in PARITY_NOTES.md why mcp-apps is blocked on Langroid: the
runtime-level mcpApps middleware injects tools that the langroid custom
AG-UI adapter does not consume, since it builds a static tool list
against ALL_TOOLS.
Adds a dedicated CopilotRuntime route configured with mcpApps.servers pointing at the public Excalidraw MCP server, plus a no-tools ADK agent. The MCP middleware injects the remote tools and emits activity events that CopilotKit's built-in MCPAppsActivityRenderer renders inline as a sandboxed iframe.
Frontend-tool HITL via useHumanInTheLoop with an in-chat time-picker. Adds a dedicated ADK agent that prompts the model to call the frontend-defined book_call tool; the picker card is rendered inline by useHumanInTheLoop and resolves with the chosen slot or a cancellation.
Wires a dedicated chart-viz agent at /gen_ui_tool_based and updates the
demo page to mirror langgraph-python's tool-based generative UI pattern
(useComponent + render_bar_chart / render_pie_chart). Other reasoning
and interrupt-dependent demos remain framework-blocked; PARITY_NOTES
extended to cover hitl-in-chat-booking under the existing interrupt
skip.
The strands showcase already shipped frontend pages and route registrations
for gen-ui-tool-based, tool-rendering-default-catchall, and
tool-rendering-custom-catchall, but the manifest never advertised them so
the harness/dojo did not surface them. Add the four missing manifest rows
(plus the hitl-in-chat-booking alias that points at the existing hitl-in-chat
route) so feature-fill catches up to the langgraph-python topology.
Three other features in the fill set (gen-ui-interrupt, interrupt-headless,
mcp-apps) require backend interrupt() / MCP middleware that strands does
not expose; they remain skipped per PARITY_NOTES.md. beautiful-chat is a
much larger surface (dozens of sub-components plus a dedicated runtime
combining openGenerativeUI + a2ui + mcpApps) and stays deferred per the
existing parity note.
Mount /gen-ui-tool-based and /hitl-in-chat endpoints in agent_server.py,
register the corresponding agents in the Next.js runtime route, and add
the three new feature ids (gen-ui-tool-based, hitl-in-chat,
hitl-in-chat-booking) plus their demo entries to manifest.yaml.
Port the in-chat HITL pattern (useHumanInTheLoop) from langgraph-python.
The book_call tool is defined entirely on the frontend; the MS Agent
Framework agent has tools=[] and just calls it by name. The booking-flow
alias reuses the same backend agent and shares the time-picker component.
Replace haiku stub with bar/pie chart variant ported from langgraph-python.
Frontend registers render_bar_chart and render_pie_chart via useComponent;
the MS Agent Framework agent has tools=[] and routes the user's chart
intent to whichever frontend tool fits.
- cli-start: informational manifest entry with the framework init command
- hitl-in-chat: in-chat HITL via the high-level useHumanInTheLoop hook
with a time-picker card; backend graph is tools=[] +
CopilotKitMiddleware
- hitl-in-chat-booking: alias mapped to the same demo route + backend
graph as hitl-in-chat, registered as a separate agent slot so the
feature card resolves to the same booking surface
Wires the new hitl_in_chat graph into langgraph.json and registers both
agent slots in src/app/api/copilotkit/route.ts.
Add demo entries for hitl, hitl-in-app, hitl-in-chat, tool-rendering,
shared-state-read-write, and gen-ui-tool-based across 14 integrations.
Ensure every demo ID also appears in the features list so the showcase
matrix and D5 probes discover them correctly.
STATE_SNAPSHOT can deliver a Preferences object with interests undefined,
crashing .includes(), .filter(), and spread at 4 sites per file. Add
(value.interests ?? []) guards across all 17 integrations.
The first parameter of Mastra ToolAction.execute is the raw
Zod-validated input, not a destructured wrapper. Changed all 4
tools from ({ context }, executionContext) to (inputData,
executionContext) and updated field accesses accordingly.
The built-in-agent runtime uses mode: "single-route" which means all
requests go to a single POST endpoint (/api/copilotkit). Without
useSingleEndpoint, the CopilotKitProvider defaults to transport: "auto"
which auto-detects by trying GET /info first (404 from Next.js), then
falls back to single-endpoint POST. During this auto-detect window,
the provisional agent created by useAgent() has transport: "auto",
which constructs REST-style URLs (/api/copilotkit/agent/default/run)
that don't exist in single-route mode. If the user sends a message
before auto-detect completes, the request hits a Next.js 404 and the
run silently fails, causing the e2e-smoke probe to time out waiting
for an assistant response.
Adding useSingleEndpoint to all 8 demo pages forces transport:
"single" from initialization, so both the provisional agent and the
final agent use the correct single-endpoint POST format from the
start.