593 lines
22 KiB
YAML
593 lines
22 KiB
YAML
name: Spring AI
|
|
slug: spring-ai
|
|
category: enterprise-platform
|
|
language: java
|
|
logo: /logos/spring-ai.svg
|
|
description: >-
|
|
CopilotKit integration with Spring AI. Java-based agent backend with full
|
|
feature coverage including frontend tools, in-chat and in-app human-in-the-
|
|
loop, generative UI, per-tool renderers, agent context, interrupt-adapted
|
|
scheduling (Strategy B), per-token state streaming, and prebuilt chat surfaces
|
|
(sidebar / popup / slots / headless). Demos that depend on LangGraph-specific
|
|
primitives (interrupt, multi-agent orchestration, MCP-driven UI) are
|
|
documented as skipped in PARITY_NOTES.md.
|
|
partner_docs: null
|
|
repo: https://github.com/CopilotKit/CopilotKit/tree/main/showcase/integrations/spring-ai
|
|
copilotkit_version: 2.0.0
|
|
deployed: true
|
|
docs_mode: hidden
|
|
sort_order: 170
|
|
generative_ui:
|
|
- constrained-explicit
|
|
- a2ui-dynamic-schema
|
|
interaction_modalities:
|
|
- sidebar
|
|
- embedded
|
|
- chat
|
|
not_supported_features:
|
|
# QUARANTINED pending a @copilotkit/react-core release. gen-ui-interrupt /
|
|
# interrupt-headless fail turn-2 on a useInterrupt/useHeadlessInterrupt
|
|
# RESUME-PATH hook bug in @copilotkit/react-core/v2: backend resumes + streams
|
|
# (HTTP 200) but the frontend never appends the confirmation assistant bubble,
|
|
# so the harness DOM settle-check times out. Fix is a published-package change
|
|
# (out of scope here); honestly marked not-supported (skipped-incapable, not
|
|
# green, not red) rather than a regression. Demos remain wired below.
|
|
- gen-ui-interrupt
|
|
- interrupt-headless
|
|
# Reasoning-family NSF: while spring-ai DOES emit REASONING_MESSAGE_* events
|
|
# for the `reasoning-custom` / `reasoning-default` demos (via the dedicated
|
|
# ReasoningController at /reasoning/, which writes raw-JSON
|
|
# REASONING_MESSAGE_START/CONTENT/END frames whose `type` matches the
|
|
# @ag-ui/core zod schema — workaround for the AG-UI Java SDK gap where
|
|
# Spring AI 1.0.1's SDK has no REASONING_MESSAGE_* subtypes), the following
|
|
# canonical reasoning cell-ids are NOT covered by that workaround and
|
|
# cannot mount here:
|
|
# * `reasoning-default-render` — alternate render-path for default
|
|
# reasoning that this Spring backend does not parallel.
|
|
# * `agentic-chat-reasoning` — agentic-chat composed with reasoning
|
|
# frames; spring-ai's default agent at `/` does not emit reasoning.
|
|
# * `tool-rendering-reasoning-chain` — registered against the default
|
|
# Spring agent at the root path (no reasoning emission), and spring-ai
|
|
# has no parallel multi-tool-call streaming surface to interleave with
|
|
# reasoning frames, so the reasoning-chain composition cannot mount.
|
|
# Skipped-incapable, not regressions. NSF entries are canonical cell-ids
|
|
# matching the dashboard cell-schema.
|
|
- reasoning-default-render
|
|
- agentic-chat-reasoning
|
|
- tool-rendering-reasoning-chain
|
|
features:
|
|
- cli-start
|
|
- agentic-chat
|
|
- tool-rendering-default-catchall
|
|
- tool-rendering-custom-catchall
|
|
- chat-customization-css
|
|
- frontend-tools
|
|
- frontend-tools-async
|
|
- gen-ui-agent
|
|
- gen-ui-tool-based
|
|
- open-gen-ui
|
|
- open-gen-ui-advanced
|
|
- declarative-gen-ui
|
|
- a2ui-fixed-schema
|
|
- prebuilt-sidebar
|
|
- prebuilt-popup
|
|
- chat-slots
|
|
- headless-simple
|
|
- headless-complete
|
|
- beautiful-chat
|
|
- readonly-state-agent-context
|
|
- shared-state-read-write
|
|
- shared-state-streaming
|
|
- subagents
|
|
- auth
|
|
- voice
|
|
- multimodal
|
|
- agent-config
|
|
- hitl-in-chat
|
|
- hitl-in-chat-booking
|
|
- hitl-in-app
|
|
- hitl
|
|
- tool-rendering
|
|
- mcp-apps
|
|
- declarative-hashbrown
|
|
- declarative-json-render
|
|
a2ui_pattern: schema-inline
|
|
agent_config_pattern: shared-state
|
|
auth_pattern: runtime-onrequest
|
|
demos:
|
|
- id: agentic-chat
|
|
name: Agentic Chat
|
|
description: Natural conversation with frontend tool execution
|
|
tags:
|
|
- chat-ui
|
|
route: /demos/agentic-chat
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/main/java/com/copilotkit/showcase/springai/AgentConfig.java
|
|
- src/main/java/com/copilotkit/showcase/springai/AgentController.java
|
|
- src/app/demos/agentic-chat/page.tsx
|
|
- src/app/api/copilotkit/route.ts
|
|
- id: chat-customization-css
|
|
name: Chat Customization (CSS)
|
|
description: Default CopilotChat re-themed via scoped CSS overrides
|
|
tags:
|
|
- chat-ui
|
|
route: /demos/chat-customization-css
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/chat-customization-css/page.tsx
|
|
- src/app/demos/chat-customization-css/theme.css
|
|
- src/app/api/copilotkit/route.ts
|
|
- id: frontend-tools
|
|
name: Frontend Tools (In-App Actions)
|
|
description: Agent invokes client-side handlers registered with useFrontendTool
|
|
tags:
|
|
- interactivity
|
|
route: /demos/frontend-tools
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/frontend-tools/page.tsx
|
|
- src/app/api/copilotkit/route.ts
|
|
- id: frontend-tools-async
|
|
name: Frontend Tools (Async)
|
|
description:
|
|
useFrontendTool with an async handler — agent awaits a client-side
|
|
async operation and uses the returned result
|
|
tags:
|
|
- interactivity
|
|
route: /demos/frontend-tools-async
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/frontend-tools-async/page.tsx
|
|
- src/app/demos/frontend-tools-async/notes-card.tsx
|
|
- src/app/api/copilotkit/route.ts
|
|
- id: gen-ui-agent
|
|
name: Agentic Generative UI
|
|
description: Long-running agent tasks with generated UI
|
|
tags:
|
|
- generative-ui
|
|
route: /demos/gen-ui-agent
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/gen-ui-agent/page.tsx
|
|
- src/app/api/copilotkit/route.ts
|
|
- id: prebuilt-sidebar
|
|
name: "Pre-Built: Sidebar"
|
|
description: Docked sidebar chat via <CopilotSidebar />
|
|
tags:
|
|
- chat-ui
|
|
route: /demos/prebuilt-sidebar
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/prebuilt-sidebar/page.tsx
|
|
- src/app/api/copilotkit/route.ts
|
|
- id: prebuilt-popup
|
|
name: "Pre-Built: Popup"
|
|
description: Floating popup chat via <CopilotPopup />
|
|
tags:
|
|
- chat-ui
|
|
route: /demos/prebuilt-popup
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/prebuilt-popup/page.tsx
|
|
- src/app/api/copilotkit/route.ts
|
|
- id: chat-slots
|
|
name: Chat Customization (Slots)
|
|
description: Customize CopilotChat via its slot system
|
|
tags:
|
|
- chat-ui
|
|
route: /demos/chat-slots
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/chat-slots/page.tsx
|
|
- src/app/api/copilotkit/route.ts
|
|
- src/app/demos/chat-slots/slot-wrappers.tsx
|
|
- id: headless-simple
|
|
name: Headless Chat (Simple)
|
|
description: Minimal custom chat surface built on useAgent
|
|
tags:
|
|
- chat-ui
|
|
route: /demos/headless-simple
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/headless-simple/page.tsx
|
|
- src/app/api/copilotkit/route.ts
|
|
- id: readonly-state-agent-context
|
|
name: Readonly State (Agent Context)
|
|
description: Frontend provides read-only context to the agent via useAgentContext
|
|
tags:
|
|
- agent-state
|
|
route: /demos/readonly-state-agent-context
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/readonly-state-agent-context/page.tsx
|
|
- src/app/api/copilotkit/route.ts
|
|
- id: auth
|
|
name: Authentication
|
|
description:
|
|
Bearer-token gate via runtime onRequest hook with unauthenticated /
|
|
authenticated states
|
|
tags:
|
|
- chat-ui
|
|
route: /demos/auth
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/auth/page.tsx
|
|
- src/app/demos/auth/auth-banner.tsx
|
|
- src/app/demos/auth/use-demo-auth.ts
|
|
- src/app/demos/auth/demo-token.ts
|
|
- src/app/api/copilotkit-auth/[[...slug]]/route.ts
|
|
- id: open-gen-ui
|
|
name: Open Generative UI (Minimal)
|
|
description:
|
|
Agent streams HTML + CSS into a sandboxed iframe via the built-in
|
|
OpenGenerativeUIActivityRenderer
|
|
tags:
|
|
- generative-ui
|
|
route: /demos/open-gen-ui
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/open-gen-ui/page.tsx
|
|
- src/app/api/copilotkit-ogui/route.ts
|
|
- id: open-gen-ui-advanced
|
|
name: Open Generative UI (Advanced)
|
|
description: Sandboxed UI can call host-side functions (evaluateExpression,
|
|
notifyHost) via the provider's sandboxFunctions registration
|
|
tags:
|
|
- generative-ui
|
|
route: /demos/open-gen-ui-advanced
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/open-gen-ui-advanced/page.tsx
|
|
- src/app/demos/open-gen-ui-advanced/sandbox-functions.ts
|
|
- src/app/demos/open-gen-ui-advanced/suggestions.ts
|
|
- src/app/api/copilotkit-ogui/route.ts
|
|
- id: voice
|
|
name: Voice
|
|
description: CopilotChat mic button via a runtime mounted with
|
|
TranscriptionServiceOpenAI; transcribed text is forwarded to the Spring AI
|
|
backend
|
|
tags:
|
|
- interactivity
|
|
route: /demos/voice
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/voice/page.tsx
|
|
- src/app/demos/voice/sample-audio-button.tsx
|
|
- src/app/api/copilotkit-voice/[[...slug]]/route.ts
|
|
- id: agent-config
|
|
name: Agent Config Object
|
|
description:
|
|
Frontend forwards typed config (tone, expertise, responseLength) to
|
|
Spring, which rebuilds the system prompt per request
|
|
tags:
|
|
- agent-capabilities
|
|
route: /demos/agent-config
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/main/java/com/copilotkit/showcase/springai/AgentConfigController.java
|
|
- src/app/demos/agent-config/page.tsx
|
|
- src/app/demos/agent-config/config-card.tsx
|
|
- src/app/demos/agent-config/use-agent-config.ts
|
|
- src/app/demos/agent-config/config-types.ts
|
|
- src/app/api/copilotkit-agent-config/route.ts
|
|
- id: a2ui-fixed-schema
|
|
name: A2UI Fixed Schema
|
|
description:
|
|
Dedicated Spring tool emits a fixed flight-card component tree plus
|
|
a data model; frontend catalog renders each component
|
|
tags:
|
|
- generative-ui
|
|
route: /demos/a2ui-fixed-schema
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/main/java/com/copilotkit/showcase/springai/A2uiFixedSchemaController.java
|
|
- src/main/java/com/copilotkit/showcase/springai/tools/DisplayFlightTool.java
|
|
- src/app/demos/a2ui-fixed-schema/page.tsx
|
|
- src/app/demos/a2ui-fixed-schema/a2ui/definitions.ts
|
|
- src/app/demos/a2ui-fixed-schema/a2ui/renderers.tsx
|
|
- src/app/demos/a2ui-fixed-schema/a2ui/catalog.ts
|
|
- src/app/api/copilotkit-a2ui-fixed-schema/route.ts
|
|
- id: headless-complete
|
|
name: Headless Chat (Complete)
|
|
description: Full chat built from scratch on useAgent plus low-level render
|
|
hooks (useRenderToolCall, useRenderActivityMessage,
|
|
useRenderCustomMessages)
|
|
tags:
|
|
- chat-ui
|
|
route: /demos/headless-complete
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/headless-complete/page.tsx
|
|
- src/app/api/copilotkit/route.ts
|
|
- src/app/demos/headless-complete/chat/chat.tsx
|
|
- src/app/demos/headless-complete/hooks/use-tool-renderers.tsx
|
|
- src/app/demos/headless-complete/hooks/use-frontend-components.ts
|
|
- src/app/demos/headless-complete/hooks/use-headless-suggestions.ts
|
|
- src/app/demos/headless-complete/attachments/use-attachments-config.ts
|
|
- src/app/demos/headless-complete/tools/weather-card.tsx
|
|
- src/app/demos/headless-complete/tools/stock-card.tsx
|
|
- src/app/demos/headless-complete/tools/chart-card.tsx
|
|
- src/app/demos/headless-complete/tools/highlight-note.tsx
|
|
- id: beautiful-chat
|
|
name: Beautiful Chat
|
|
description:
|
|
Polished brand-themed chat surface over the Spring AI agent with
|
|
seeded suggestion pills
|
|
tags:
|
|
- chat-ui
|
|
route: /demos/beautiful-chat
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/beautiful-chat/page.tsx
|
|
- src/app/api/copilotkit/route.ts
|
|
- id: tool-rendering-reasoning-chain
|
|
name: Tool Rendering (Reasoning Chain)
|
|
description: Per-tool renderers (WeatherCard, FlightListCard) plus custom
|
|
reasoningMessage slot composed in a single chat
|
|
tags:
|
|
- generative-ui
|
|
route: /demos/tool-rendering-reasoning-chain
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/tool-rendering-reasoning-chain/page.tsx
|
|
- src/app/demos/tool-rendering-reasoning-chain/reasoning-block.tsx
|
|
- src/app/demos/tool-rendering-reasoning-chain/weather-card.tsx
|
|
- src/app/demos/tool-rendering-reasoning-chain/flight-list-card.tsx
|
|
- src/app/demos/tool-rendering-reasoning-chain/custom-catchall-renderer.tsx
|
|
- src/app/api/copilotkit/route.ts
|
|
- id: declarative-gen-ui
|
|
name: Declarative Generative UI
|
|
description: A2UI dynamic-schema against a branded catalog; backend owns the
|
|
`generate_a2ui` tool
|
|
tags:
|
|
- generative-ui
|
|
route: /demos/declarative-gen-ui
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/main/java/com/copilotkit/showcase/springai/tools/GenerateA2uiTool.java
|
|
- src/app/demos/declarative-gen-ui/page.tsx
|
|
- src/app/demos/declarative-gen-ui/a2ui/definitions.ts
|
|
- src/app/demos/declarative-gen-ui/a2ui/renderers.tsx
|
|
- src/app/demos/declarative-gen-ui/a2ui/catalog.ts
|
|
- src/app/api/copilotkit-declarative-gen-ui/route.ts
|
|
- id: shared-state-read-write
|
|
name: Shared State (Read + Write)
|
|
description: Bidirectional shared state — UI writes preferences into agent
|
|
state; the agent's set_notes tool mutates state.notes and emits a
|
|
STATE_SNAPSHOT back to the UI
|
|
tags:
|
|
- agent-state
|
|
route: /demos/shared-state-read-write
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/main/java/com/copilotkit/showcase/springai/SharedStateReadWriteController.java
|
|
- src/app/demos/shared-state-read-write/page.tsx
|
|
- src/app/demos/shared-state-read-write/preferences-card.tsx
|
|
- src/app/demos/shared-state-read-write/notes-card.tsx
|
|
- src/app/api/copilotkit-shared-state-read-write/route.ts
|
|
- id: shared-state-streaming
|
|
name: Shared State Streaming
|
|
description:
|
|
Per-token state streaming — the agent's write_document tool streams
|
|
content into state.document via STATE_SNAPSHOT events; the frontend
|
|
renders the growing document live
|
|
tags:
|
|
- agent-state
|
|
route: /demos/shared-state-streaming
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/main/java/com/copilotkit/showcase/springai/SharedStateStreamingController.java
|
|
- src/app/demos/shared-state-streaming/page.tsx
|
|
- src/app/demos/shared-state-streaming/document-view.tsx
|
|
- src/app/api/copilotkit-shared-state-streaming/route.ts
|
|
- id: subagents
|
|
name: Sub-Agents
|
|
description:
|
|
Supervisor delegates to research / writing / critique sub-agents
|
|
(each its own ChatClient call). Every delegation appends a Delegation
|
|
entry to state.delegations and emits a STATE_SNAPSHOT for a live UI log
|
|
tags:
|
|
- agent-capabilities
|
|
route: /demos/subagents
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/main/java/com/copilotkit/showcase/springai/SubagentsController.java
|
|
- src/app/demos/subagents/page.tsx
|
|
- src/app/demos/subagents/delegation-log.tsx
|
|
- src/app/api/copilotkit-subagents/route.ts
|
|
- id: multimodal
|
|
name: Multimodal Attachments
|
|
description: CopilotChat AttachmentsConfig for images + PDFs; sample files
|
|
inject through the same pipeline as the paperclip upload
|
|
tags:
|
|
- interactivity
|
|
route: /demos/multimodal
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/multimodal/page.tsx
|
|
- src/app/demos/multimodal/sample-attachment-buttons.tsx
|
|
- src/app/api/copilotkit-multimodal/route.ts
|
|
- id: hitl-in-chat
|
|
name: In-Chat Human in the Loop
|
|
description: User approves agent actions before execution via text input inside the chat
|
|
tags:
|
|
- interactivity
|
|
route: /demos/hitl-in-chat
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/hitl-in-chat/page.tsx
|
|
- src/app/demos/hitl-in-chat/time-picker-card.tsx
|
|
- src/app/api/copilotkit/route.ts
|
|
- id: hitl-in-app
|
|
name: In-App Human in the Loop
|
|
description:
|
|
Agent requests approval via useFrontendTool; the approval UI pops
|
|
up as an app-level modal OUTSIDE the chat
|
|
tags:
|
|
- interactivity
|
|
route: /demos/hitl-in-app
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/hitl-in-app/page.tsx
|
|
- src/app/demos/hitl-in-app/approval-dialog.tsx
|
|
- src/app/api/copilotkit/route.ts
|
|
- id: hitl
|
|
name: Human in the Loop (Steps)
|
|
description:
|
|
Multi-step HITL flow where the agent pauses for user confirmation
|
|
at each step
|
|
tags:
|
|
- interactivity
|
|
route: /demos/hitl
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/hitl/page.tsx
|
|
- src/app/api/copilotkit/route.ts
|
|
- id: tool-rendering
|
|
name: Tool Rendering
|
|
description: Backend agent tools rendered as UI components
|
|
tags:
|
|
- agent-capabilities
|
|
route: /demos/tool-rendering
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/main/java/com/copilotkit/showcase/springai/tools/WeatherTool.java
|
|
- src/app/demos/tool-rendering/page.tsx
|
|
- src/app/api/copilotkit/route.ts
|
|
- id: cli-start
|
|
name: CLI Start Command
|
|
description: Copy-paste command to clone the canonical Spring AI starter
|
|
tags:
|
|
- chat-ui
|
|
command: "npx copilotkit@latest init --framework spring-ai"
|
|
- id: gen-ui-tool-based
|
|
name: Tool-Based Generative UI
|
|
description:
|
|
Frontend registers per-tool component renderers via useComponent;
|
|
the Spring agent calls render tools that paint chart components inline in
|
|
the chat
|
|
tags:
|
|
- generative-ui
|
|
route: /demos/gen-ui-tool-based
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/gen-ui-tool-based/page.tsx
|
|
- src/app/demos/gen-ui-tool-based/bar-chart.tsx
|
|
- src/app/demos/gen-ui-tool-based/pie-chart.tsx
|
|
- src/app/api/copilotkit/route.ts
|
|
- id: tool-rendering-default-catchall
|
|
name: Tool Rendering (Default Catch-all)
|
|
description:
|
|
Out-of-the-box tool rendering — the Spring backend defines tools;
|
|
the frontend adds zero custom renderers and relies on CopilotKit's
|
|
built-in default UI
|
|
tags:
|
|
- generative-ui
|
|
route: /demos/tool-rendering-default-catchall
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/tool-rendering-default-catchall/page.tsx
|
|
- src/main/java/com/copilotkit/showcase/springai/AgentConfig.java
|
|
- src/app/api/copilotkit/route.ts
|
|
- id: tool-rendering-custom-catchall
|
|
name: Tool Rendering (Custom Catch-all)
|
|
description: Single branded wildcard renderer via useDefaultRenderTool — the
|
|
same app-designed card paints every Spring tool call
|
|
tags:
|
|
- generative-ui
|
|
route: /demos/tool-rendering-custom-catchall
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/tool-rendering-custom-catchall/page.tsx
|
|
- src/app/demos/tool-rendering-custom-catchall/custom-catchall-renderer.tsx
|
|
- src/main/java/com/copilotkit/showcase/springai/AgentConfig.java
|
|
- src/app/api/copilotkit/route.ts
|
|
- id: hitl-in-chat-booking
|
|
name: In-Chat HITL (Booking)
|
|
description: Time-picker card rendered inline via useHumanInTheLoop for a
|
|
booking flow against the Spring AI agent
|
|
tags:
|
|
- interactivity
|
|
route: /demos/hitl-in-chat
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/hitl-in-chat/page.tsx
|
|
- src/app/demos/hitl-in-chat/time-picker-card.tsx
|
|
- src/app/api/copilotkit/route.ts
|
|
- id: mcp-apps
|
|
name: MCP Apps
|
|
description:
|
|
MCP server-driven UI via the runtime mcpApps middleware; sandboxed
|
|
iframe rendered via the built-in MCPAppsActivityRenderer
|
|
tags:
|
|
- generative-ui
|
|
route: /demos/mcp-apps
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/app/demos/mcp-apps/page.tsx
|
|
- src/app/api/copilotkit-mcp-apps/route.ts
|
|
- id: declarative-hashbrown
|
|
name: "Declarative UI: Hashbrown"
|
|
description: Streaming structured output via @hashbrownai/react, rendering a sales dashboard catalog (MetricCard + PieChart + BarChart)
|
|
tags:
|
|
- generative-ui
|
|
route: /demos/declarative-hashbrown
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/main/java/com/copilotkit/showcase/springai/ByocHashbrownController.java
|
|
- src/app/demos/declarative-hashbrown/page.tsx
|
|
- src/app/demos/declarative-hashbrown/hashbrown-renderer.tsx
|
|
- src/app/demos/declarative-hashbrown/metric-card.tsx
|
|
- src/app/demos/declarative-hashbrown/charts/bar-chart.tsx
|
|
- src/app/demos/declarative-hashbrown/charts/pie-chart.tsx
|
|
- src/app/demos/declarative-hashbrown/types.ts
|
|
- src/app/demos/declarative-hashbrown/suggestions.ts
|
|
- src/app/api/copilotkit-declarative-hashbrown/route.ts
|
|
- id: declarative-json-render
|
|
name: "Declarative UI: json-render"
|
|
description: Streaming structured output via @json-render/react, rendering a sales dashboard catalog (MetricCard + PieChart + BarChart)
|
|
tags:
|
|
- generative-ui
|
|
route: /demos/declarative-json-render
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/main/java/com/copilotkit/showcase/springai/ByocJsonRenderController.java
|
|
- src/app/demos/declarative-json-render/page.tsx
|
|
- src/app/demos/declarative-json-render/json-render-renderer.tsx
|
|
- src/app/demos/declarative-json-render/metric-card.tsx
|
|
- src/app/demos/declarative-json-render/charts/bar-chart.tsx
|
|
- src/app/demos/declarative-json-render/charts/pie-chart.tsx
|
|
- src/app/demos/declarative-json-render/types.ts
|
|
- src/app/demos/declarative-json-render/suggestions.ts
|
|
- src/app/api/copilotkit-declarative-json-render/route.ts
|
|
- id: gen-ui-interrupt
|
|
name: Generative UI (Interrupt)
|
|
description:
|
|
Time-picker card rendered inline via useFrontendTool with an async
|
|
handler that blocks until the user picks a slot — Strategy B adaptation of
|
|
LangGraph's interrupt() primitive
|
|
tags:
|
|
- interactivity
|
|
route: /demos/gen-ui-interrupt
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/main/java/com/copilotkit/showcase/springai/InterruptAgentController.java
|
|
- src/app/demos/gen-ui-interrupt/page.tsx
|
|
- src/app/demos/gen-ui-interrupt/_components/time-picker-card.tsx
|
|
- src/app/api/copilotkit/route.ts
|
|
- id: interrupt-headless
|
|
name: Headless Interrupt
|
|
description:
|
|
Time-picker popup rendered in the app surface (outside the chat)
|
|
via useFrontendTool with an async handler — headless variant of the
|
|
interrupt-adapted pattern
|
|
tags:
|
|
- interactivity
|
|
route: /demos/interrupt-headless
|
|
animated_preview_url:
|
|
highlight:
|
|
- src/main/java/com/copilotkit/showcase/springai/InterruptAgentController.java
|
|
- src/app/demos/interrupt-headless/page.tsx
|
|
- src/app/api/copilotkit/route.ts
|