Commit Graph

8572 Commits

Author SHA1 Message Date
github-actions[bot] 7d131608c0 style: auto-fix formatting 2026-04-29 11:03:09 +00:00
Alem Tuzlak b375349e6a fix(showcase): cr-loop fixes — manifest validation, types, env-var fallbacks
- generate-registry: cross-validate not_supported_features against features list
- catalog-types: widen manifestation union to include 'starter'
- claude-sdk-python: drop invalid 'declarative-schema' from generative_ui enum
- crewai-crews: remove duplicate animated_preview_url key in mcp-apps demo
- built-in-agent + pydantic-ai: REASONING_MODEL env-var fallback so deployers can swap if gpt-5.2/gpt-5 isn't available
2026-04-29 12:58:31 +02:00
Alem Tuzlak 1727746a5e fix(showcase/claude-sdk-ts): add a2ui-fixed-schema to features list 2026-04-29 12:42:56 +02:00
Alem Tuzlak 1ba8f91b77 chore(blitz): merge G6 into integration 2026-04-29 12:41:47 +02:00
Alem Tuzlak 366a8b429e chore(blitz): merge G5 into integration 2026-04-29 12:41:45 +02:00
Alem Tuzlak 34befcc3e3 chore(blitz): merge G4 into integration 2026-04-29 12:41:43 +02:00
Alem Tuzlak 335c6c57bc chore(blitz): merge G3 into integration 2026-04-29 12:41:42 +02:00
Alem Tuzlak 01bcebfbf3 chore(blitz): merge G2 into integration 2026-04-29 12:41:40 +02:00
Alem Tuzlak 6774c6026b chore(blitz): merge G1 into integration 2026-04-29 12:41:39 +02:00
Alem Tuzlak b9dbacd99b feat(showcase): claude-sdk-typescript hitl-in-chat + a2ui-fixed-schema + headless-complete
Wave-3 fill for the Claude Agent SDK (TypeScript) showcase.

- hitl-in-chat / hitl-in-chat-booking: frontend-tool useHumanInTheLoop
  flow with an inline TimePickerCard. Pass-through agent — Claude sees
  the book_call tool definition forwarded via AG-UI and calls it; the
  frontend renders the picker and returns the user's selection.
- a2ui-fixed-schema: dedicated /a2ui-fixed-schema endpoint on the
  Express agent ships flight_schema.json and a display_flight tool that
  emits an a2ui_operations container. New runtime route
  copilotkit-a2ui-fixed-schema runs the A2UI middleware with
  injectA2UITool: false because the backend owns the rendering tool.
- headless-complete: dedicated /headless-complete endpoint exposes
  get_weather + get_stock_price backend tools, frontend ports the
  fully-headless useAgent surface and per-tool renderers from
  claude-sdk-python (highlight_note remains a frontend-only useComponent
  tool). New runtime route copilotkit-headless-complete proxies to it.
2026-04-29 12:40:51 +02:00
Alem Tuzlak 78660ac61e feat(agno): port declarative-gen-ui demo
Adds a dedicated A2UI dynamic-schema cell for the Agno integration:
new `a2ui_dynamic_agent.py` owns its own `generate_a2ui` tool that
reads the runtime-injected client catalog from
`run_context.session_state["copilotkit"]["context"]` and feeds it
to a secondary OpenAI client bound to `render_a2ui`. Result is an
`a2ui_operations` container the runtime A2UI middleware forwards
to the registered frontend catalog renderer.

Unlike the main agent's existing `generate_a2ui` (hardcoded
internal catalog), this dedicated agent stays in sync with whatever
catalog the frontend registers via `<CopilotKit a2ui={{ catalog }}>`.
Frontend ports `page.tsx` + Zod definitions / renderers / catalog
from the langgraph-python reference. Dedicated runtime route at
`/api/copilotkit-declarative-gen-ui` runs with
`injectA2UITool: false` so the agent owns the tool itself.
2026-04-29 12:36:58 +02:00
Alem Tuzlak fbbaccaf54 feat(agno): port a2ui-fixed-schema demo
Adds a dedicated A2UI fixed-schema cell for the Agno integration:
backend `a2ui_fixed_agent.py` ships `flight_schema.json` +
`booked_schema.json` and a single `display_flight` tool that emits
an `a2ui_operations` container directly (no secondary LLM).
Frontend ports `page.tsx` + Zod definitions / renderers / catalog
from the langgraph-python reference. Dedicated runtime route at
`/api/copilotkit-a2ui-fixed-schema` runs the A2UI middleware with
`injectA2UITool: false` so the agent owns its rendering tool.
2026-04-29 12:36:06 +02:00
Alem Tuzlak 53455bfeb9 feat(built-in-agent): add declarative-gen-ui (A2UI dynamic schema) demo
Port the A2UI dynamic-schema demo to the built-in-agent showcase. The
in-process tanstack agent owns a generate_a2ui tool that fires a
secondary LLM call (forced JSON output) to design the surface tree from
the registered client catalog. The dedicated runtime route runs the
A2UI middleware with injectA2UITool: false so the runtime does not
duplicate the tool slot; the middleware still serialises the catalog
into input.context and detects the a2ui_operations container in tool
results.

Manifest: register both new demos under features and demos.
2026-04-29 12:35:26 +02:00
Alem Tuzlak 0db5260f81 feat: add a2ui-fixed-schema demo to langroid showcase 2026-04-29 12:35:13 +02:00
Alem Tuzlak 96725d0478 feat: claude-sdk-python adds hitl-in-chat, declarative-gen-ui, a2ui-fixed-schema, gen-ui-tool-based manifest
- hitl-in-chat (+ booking alias): frontend useHumanInTheLoop book_call tool;
  basic Claude SDK chat agent forwards AG-UI tool defs and lets standard
  tool-call lifecycle resolve the user's choice.
- declarative-gen-ui: backend a2ui_dynamic agent owns generate_a2ui tool
  (calls secondary OpenAI client bound to render_a2ui), dedicated runtime
  route with injectA2UITool: false.
- a2ui-fixed-schema: backend a2ui_fixed ships flight_schema.json and the
  display_flight tool emitting a2ui_operations directly; dedicated runtime
  route with injectA2UITool: false.
- gen-ui-tool-based: manifest entry for the existing haiku demo
  (useFrontendTool + useRenderTool).
- Per-demo READMEs documenting the architectural choice for each cell.
2026-04-29 12:33:41 +02:00
Alem Tuzlak 7c44b71f64 feat(built-in-agent): add a2ui-fixed-schema demo
Port the A2UI fixed-schema flight-card demo to built-in-agent. The
in-process tanstack agent owns a display_flight tool that emits an
a2ui_operations container directly; the dedicated runtime route runs the
A2UI middleware with injectA2UITool: false so the runtime does not
duplicate the slot.
2026-04-29 12:32:45 +02:00
Alem Tuzlak 8d9e2c9a2c feat: add simplified beautiful-chat demo to langroid showcase 2026-04-29 12:31:03 +02:00
Alem Tuzlak 53943a2b7b feat(pydantic-ai): add hitl-in-chat demo with useHumanInTheLoop frontend tool
Ports the langgraph-python hitl-in-chat demo to PydanticAI using the frontend-tool pattern: a Zod-typed book_call tool defined via useHumanInTheLoop renders a TimePickerCard inline in chat. Backend agent is a chat-only PydanticAI Agent with no tools — the AG-UI bridge surfaces the frontend-registered tool to the model on each run. Adds hitl-in-chat-booking as a manifest alias pointing at the same route.
2026-04-29 12:28:59 +02:00
Alem Tuzlak 025c9a2601 chore(blitz): merge F13 into integration 2026-04-29 12:13:57 +02:00
Alem Tuzlak bb961b6f9d chore(blitz): merge F12 into integration 2026-04-29 12:13:56 +02:00
Alem Tuzlak 7eff30a7aa chore(blitz): merge F11 into integration 2026-04-29 12:13:55 +02:00
Alem Tuzlak 8eae4b639e chore(blitz): merge F10 langroid into integration 2026-04-29 12:13:54 +02:00
Alem Tuzlak e9ef6d12cd chore(blitz): merge F9 into integration 2026-04-29 12:13:34 +02:00
Alem Tuzlak c4ec9ee2ff chore(blitz): merge F8 into integration 2026-04-29 12:13:32 +02:00
Alem Tuzlak 895f98a038 chore(blitz): merge F7 llamaindex into integration 2026-04-29 12:13:31 +02:00
Alem Tuzlak ac0183c8a4 chore(blitz): merge F6 into integration 2026-04-29 12:13:13 +02:00
Alem Tuzlak 3863c98acd chore(blitz): merge F5 claude-sdk-python into integration 2026-04-29 12:13:12 +02:00
Alem Tuzlak 6c4e4ed735 chore(blitz): merge F4 into integration 2026-04-29 12:12:24 +02:00
Alem Tuzlak 299a4af70b chore(blitz): merge F3 into integration 2026-04-29 12:12:23 +02:00
Alem Tuzlak afa9a7efdb chore(blitz): merge F2 into integration 2026-04-29 12:12:22 +02:00
Alem Tuzlak b845f62af4 chore(blitz): merge F1 into integration 2026-04-29 12:12:21 +02:00
Alem Tuzlak 47c09df93f chore(blitz): merge D5 into integration 2026-04-29 12:12:20 +02:00
Alem Tuzlak f7ba090a30 chore(blitz): merge D4 into integration 2026-04-29 12:12:20 +02:00
Alem Tuzlak 749d626389 chore(blitz): merge D3 into integration 2026-04-29 12:12:19 +02:00
Alem Tuzlak b5e771c71a chore(blitz): merge D2 langgraph-fastapi into integration 2026-04-29 12:12:18 +02:00
Alem Tuzlak 20dff72610 feat(langroid): voice, multimodal, byoc-hashbrown, byoc-json-render, mcp-apps demos 2026-04-29 12:09:36 +02:00
Alem Tuzlak 251038127f feat(showcase): mark graph-interrupt features unsupported in built-in-agent
Adds not_supported_features to the manifest for gen-ui-interrupt,
interrupt-headless, and hitl (the LangGraph graph-interrupt variant —
distinct from the supported hitl-in-chat / hitl-in-app / hitl-in-chat-booking).

All three depend on a graph-interrupt primitive that LangGraph
provides via interrupt() nodes. The built-in-agent integration uses
TanStack AI's chat-completions adapter, which has no equivalent
node-level pause/resume — so the underlying primitive simply isn't
available.

Adds placeholder pages and READMEs for gen-ui-interrupt and
interrupt-headless explaining the limitation and pointing at
langgraph-python for a working reference. Adds a disambiguation
README in the existing hitl/ directory (which hosts the supported
hitl-in-chat demo) to clarify the distinction with the unsupported
hitl feature ID.
2026-04-29 12:05:37 +02:00
Alem Tuzlak d7db181261 feat(claude-sdk-python): add not-supported stubs for interrupt demos
Adds page.tsx + README stubs for gen-ui-interrupt and interrupt-headless.
Both rely on LangGraph's graph-level interrupt() / Command(resume=...)
primitive, which the Claude Agent SDK's Anthropic Messages stream does
not expose. Stubs explain the gap and link users to the hitl /
hitl-in-app cells, which model approval gating with regular tool calls.
2026-04-29 12:05:33 +02:00
Alem Tuzlak 69cb5f51c9 feat(showcase): add reasoning trio to built-in-agent
Implements agentic-chat-reasoning, reasoning-default-render, and
tool-rendering-reasoning-chain for the built-in-agent integration.

The default tanstack factory uses gpt-4o (non-reasoning), so
REASONING_* events never flow. This commit adds a dedicated
reasoning-factory wrapping the v2 runtime with a reasoning-capable
OpenAI model (gpt-5.2) and reasoning_effort: low. The runtime's
tanstack converter already translates upstream
REASONING_START/REASONING_MESSAGE_CONTENT/REASONING_END events into
AG-UI reasoning events, so once the model emits reasoning the chain
surfaces in the chat with no extra plumbing.

A single shared route /api/copilotkit-reasoning registers all three
agents by ID, keeping bundle and cold-start cost out of unrelated
demos.
2026-04-29 12:05:24 +02:00
Alem Tuzlak 36ffb40ed2 feat(claude-sdk-python): add simplified beautiful-chat demo
A polished brand-themed chat surface over the shared Claude agent.
Mirrors the simplified spring-ai port: gradient background, brand
fonts, seeded suggestion pills, plus a small decorative side panel
(static SVG sparkline + intent breakdown). No A2UI / declarative
generative UI infrastructure required — pure frontend dressing on top
of the existing /api/copilotkit endpoint.

The full canonical version (langgraph-python ExampleCanvas + A2UI
catalog) is documented as out-of-scope in the per-demo README.
2026-04-29 12:05:22 +02:00
Alem Tuzlak 27497206a3 feat(claude-sdk-python): add mcp-apps demo + not_supported_features schema
Adds the MCP Apps demo to the claude-sdk-python integration. The
dedicated /mcp-apps FastAPI endpoint forwards AG-UI input_data.tools
(injected by the runtime's MCP Apps middleware) straight to the
Anthropic Messages API and streams tool_use blocks back as AG-UI
TOOL_CALL_* events. The runtime middleware then fetches each MCP UI
resource and emits the activity event the built-in
MCPAppsActivityRenderer paints in the chat.

Also extends the manifest schema with not_supported_features (a
pre-approved field for surfacing stub pages on features that cannot
be ported to a given backend).
2026-04-29 12:05:09 +02:00
Alem Tuzlak d609ae4f0c feat: mark gen-ui-interrupt + interrupt-headless as unsupported on strands
Both demos are built on useLangGraphInterrupt, which hooks into the
LangGraph interrupt lifecycle. AWS Strands does not expose an equivalent
first-class interrupt primitive, and we don't yet have a Strands-side
adapter. Rather than skipping them silently, surface them under the
manifest's new not_supported_features list and ship per-demo stub pages
that explain the rationale and link to ergonomic replacements
(hitl-in-chat for gen-ui-interrupt; headless-complete + hitl-in-chat
for interrupt-headless).

- manifest.yaml: add not_supported_features list with both ids.
- src/app/demos/gen-ui-interrupt/page.tsx + README.md: stub.
- src/app/demos/interrupt-headless/page.tsx + README.md: stub.
- PARITY_NOTES.md: cross-reference the stubs from the Skipped section.
2026-04-29 12:03:28 +02:00
Alem Tuzlak 4a12f19468 feat(showcase): allow not_supported_features in manifest schema
Adds the optional not_supported_features array to the manifest JSON schema so integrations can declare features whose framework cannot architecturally support them. This unblocks llamaindex (and other emerging frameworks) from declaring such gaps without tripping AJV's additionalProperties:false.

The dashboard rendering logic that turns this field into 'unsupported' cells lives in a separate dashboard PR (879b18740) — this commit is the schema half so manifest validation passes today.
2026-04-29 12:02:57 +02:00
Alem Tuzlak 79f1839b60 feat: ag2 simplified beautiful-chat — A2UI Dynamic + Open Generative UI in one cell
Simplified port of the langgraph-python flagship beautiful-chat. The
canonical reference combines THREE features (A2UI Dynamic + Open
Generative UI + MCP Apps); the AG2 port ships the first two together
in a single dedicated runtime so users can see them coexist. MCP is
left to the existing /demos/mcp-apps cell, and the canonical's app-mode
toggle / todos canvas is intentionally out of scope.

Components:
- src/agents/beautiful_chat.py — ConversableAgent that owns generate_a2ui
  explicitly (mirrors a2ui_dynamic.py); system prompt steers the LLM toward
  generate_a2ui for catalog-bound visuals and generateSandboxedUi for
  free-form / educational visualisations.
- src/agent_server.py — mounted at /beautiful-chat.
- src/app/api/copilotkit-beautiful-chat/route.ts — dedicated runtime with
  a2ui.injectA2UITool: false (agent owns the tool) and
  openGenerativeUI.agents: ['beautiful-chat']. Both flags scoped to this
  cell so they don't leak into the shared /api/copilotkit endpoint.
- src/app/demos/beautiful-chat/page.tsx — single CopilotKit provider with
  both a2ui catalog and openGenerativeUI design skill; reuses the catalog
  from /demos/declarative-gen-ui to avoid duplication.
- src/app/demos/beautiful-chat/README.md — per-demo doc.

Manifest: added beautiful-chat to features list and demos section.
2026-04-29 12:02:52 +02:00
Alem Tuzlak 44c4c6c84f feat: ship simplified beautiful-chat demo for strands
The langgraph-python beautiful-chat ships a much larger surface
(ExampleCanvas, GenerativeUIExamples, declarative A2UI catalog,
dedicated runtime combining openGenerativeUI + a2ui + mcpApps). That
ecosystem depends on dozens of starter-level sub-components.

This Strands port mirrors the spring-ai sibling pattern: a polished
landing-style chat shell with brand theming and seeded suggestions,
sitting on top of the shared Strands agent. It is the 'show me a
great-looking starter chat' cell.

Cosmetic styling is entirely on the frontend; the backend agent and
the shared /api/copilotkit runtime are unchanged. Register the new
'beautiful-chat' agent name in the shared route so the cell resolves.

- src/app/demos/beautiful-chat/page.tsx + README.md: brand-themed
  CopilotChat shell with useConfigureSuggestions for seeded prompts.
- src/app/api/copilotkit/route.ts: register 'beautiful-chat' agent name.
- manifest.yaml: surface beautiful-chat under features + demos.
- PARITY_NOTES.md: move beautiful-chat from Skipped to Shipped (simplified).
2026-04-29 12:02:49 +02:00
Alem Tuzlak 1c7ca96514 feat(llamaindex): wire hitl-in-chat-booking and mark interrupt features unsupported
- Add hitl-in-chat-booking as a manifest alias to /demos/hitl-in-chat (frontend-tool pattern via useHumanInTheLoop — no backend interrupt required)

- Mark gen-ui-interrupt and interrupt-headless as not_supported_features: LlamaIndex FunctionAgent has no graph-interrupt API equivalent to LangGraph's interrupt()/Command(resume=...) primitive

- Stub page.tsx + README for each unsupported feature explaining the architectural gap and pointing to /demos/hitl-in-chat as the equivalent UX
2026-04-29 12:02:46 +02:00
Alem Tuzlak 057954a37e feat: ag2 stub pages + READMEs for unsupported gen-ui-interrupt and interrupt-headless
Both routes now render an in-page explanation panel with links to the
supported AG2 alternatives (hitl-in-chat for the in-chat surface;
hitl-in-app and frontend-tools-async for the out-of-chat surface). Each
stub ships a README.md documenting the missing primitive (LangGraph
interrupt() resumable round-trip) and why AG2 ConversableAgent cannot
reproduce it.
2026-04-29 12:02:35 +02:00
Alem Tuzlak bda6f9e094 feat: ag2 hitl-in-chat-booking alias + mark gen-ui-interrupt/interrupt-headless unsupported
Wave-2 follow-up — ag2:
- hitl-in-chat-booking is functionally identical to hitl-in-chat on AG2 (both
  use useHumanInTheLoop with TimePickerCard); aliased to the same /demos/hitl-in-chat
  route, mirroring the langgraph-python manifest. Earlier 'skipped — missing
  primitive' note was incorrect (it conflated the booking variant with the
  useInterrupt-driven flow).
- Added not_supported_features: [gen-ui-interrupt, interrupt-headless] to the
  manifest. Both depend on LangGraph interrupt() resumable round-trips that
  AG2 ConversableAgent cannot reproduce.
- PARITY_NOTES updated to reflect the corrected classification.
2026-04-29 12:02:19 +02:00
Alem Tuzlak 72aec88fb4 feat(showcase/pydantic-ai): mark interrupt features unsupported + manifest
Marks gen-ui-interrupt and interrupt-headless as not_supported_features
in manifest.yaml. PydanticAI's AG-UI bridge has no graph-interrupt
primitive (runs are linear; agent.run / agent.iter cannot pause to
await a frontend response and resume the same in-flight call), so both
LangGraph-style interrupt cells fundamentally cannot be ported.

Adds minimal placeholder pages with "Not supported by pydantic-ai"
panels that link to the per-demo READMEs explaining the rationale and
pointing to the working langgraph-python references.

Adds the four new shipped features (agentic-chat-reasoning,
reasoning-default-render, tool-rendering-reasoning-chain, mcp-apps)
plus their demo entries to the features list.
2026-04-29 12:02:01 +02:00
Alem Tuzlak 2b129694b4 feat: port mcp-apps demo to strands via mcpApps middleware
The langgraph-python sibling demonstrates MCP-server-driven UI via
the runtime's mcpApps middleware. The Strands integration can use
exactly the same pattern — the middleware advertises MCP tools to the
agent at request time and emits activity events that CopilotKit's
built-in MCPAppsActivityRenderer paints inline as a sandboxed iframe.

This unblocks the previously-deferred mcp-apps cell (D8 had marked it
BLOCKED). The Strands shared agent itself needs no bespoke MCP tools.

- src/app/api/copilotkit-mcp-apps/route.ts: dedicated runtime with
  mcpApps.servers pointing at the public Excalidraw MCP server
  (serverId pinned for stable thread restoration).
- src/app/demos/mcp-apps/page.tsx + README.md: cell wired to the new
  runtime endpoint with seeded suggestions.
- manifest.yaml: surface mcp-apps under features + demos.
- PARITY_NOTES.md: move mcp-apps from Skipped to Ported (simplified).
2026-04-29 12:01:47 +02:00