Add an @openuidev/copilotkit adapter for OpenUI tool rendering
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Ferma
- Stack tecnologico
- react, typescript
- Ambito
- developer-experience, frontend
Direzione di ricerca
Start by comparing the existing @openuidev/assistant-ui integration with the proposed package under packages/copilotkit, and check CopilotKit v2 APIs from @copilotkit/react-core/v2. The issue outlines the required tool flows, rendering, replay behavior, tests, docs, and example, but does not name specific files or tests. Done means the package and example meet the listed validation cases and package checks; linked PR #1102 is already open.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Is your feature request related to a problem? Please describe.
CopilotKit applications already own the chat shell, conversation state, AG-UI transport, and tool lifecycle. There is no first-party OpenUI adapter for rendering streamed OpenUI Lang inside CopilotKit tool calls. Applications must currently register tools, inject the OpenUI component instructions, map streaming status, handle human input, and restore submitted form state themselves.
This is different from using OpenUI's AG-UI adapter with AgentInterface. In this case CopilotKit remains the host shell and OpenUI renders generated interfaces inside its tool-call extension points.
Describe the solution you'd like
Add a focused @openuidev/copilotkit package under packages/copilotkit, modeled on the existing @openuidev/assistant-ui integration.
Proposed behavior:
- Register
present_openuithrough CopilotKit v2useFrontendToolfor display-only UI, withfollowUp: false. - Register
prompt_openuithroughuseHumanInTheLoopfor forms and choices that pause until the user responds. - Render partial streamed
uiarguments with OpenUIRendererandopenuiChatLibrary. - Generate model instructions from the same OpenUI library used by the renderer.
- Return
@ToAssistantaction context, parameters, form name, and form state through CopilotKit's tool result flow. - Restore submitted form state when completed tool calls are replayed from conversation history.
- Apply an OpenUI
ThemeProviderby default, with an opt-out for applications that already own the theme boundary. - Support custom libraries, prompt options, tool names, renderer options, and error handling.
- Add focused unit and renderer tests, package documentation, API reference documentation, and a small runnable CopilotKit example for browser validation.
The adapter would target CopilotKit v2 from @copilotkit/react-core/v2. The current published @copilotkit/react-core version is 1.69.3.
Division of responsibility:
- CopilotKit owns the chat shell, agent connection, messages, tool execution, and continuation.
- OpenUI owns the generated UI language, streaming parser, component library, rendering, interaction state, and action payloads.
Describe alternatives you've considered
- Document an app-local integration only. This leaves every application to duplicate status mapping, prompt generation, action serialization, and replay behavior.
- Add CopilotKit directly to
@openuidev/react-ui. This would make an optional chat shell a dependency or peer of the main React UI package. - Use OpenUI
AgentInterfacewith the AG-UI adapter. That is useful when OpenUI owns the shell, but it does not address applications where CopilotKit must remain the shell.
A separate adapter package keeps the host-specific dependency isolated and matches the existing assistant-ui package boundary.
Additional context
Proposed interaction path:
CopilotKit chat -> model tool call -> streamed OpenUI Lang -> OpenUI Renderer
CopilotKit chat <- next model turn <- tool result <- follow-up or form action
Planned validation includes:
- display-only chart rendering with no raw OpenUI Lang visible;
- a
FollowUpBlockitem producing exactly one new CopilotKit turn; - a validated form submission carrying distinctive form values into exactly one new turn;
- streamed partial arguments, parser error handling, theme application, and replayed form state;
- package typecheck, tests, lint, build, publint, and package export checks.
If this package boundary and scope are acceptable, I can implement it on a linked branch and open a pull request after approval.
- Lingua principale
- TypeScript
- Stelle
- 10k
- Fork
- 698
- Merge medio
- 1g 6h
- PR unite (30g)
- 158
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di thesysdev/openui
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
thesysdev/openui#1445 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Add dataInvention flag to PromptOptions to disable the 'generate realistic/plausible data' ruleAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
thesysdev/openui#959 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 15/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di thesysdev/openui
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
earendil-works/pi-claude-code#36 ·
I maintainer di solito rispondono entro 6 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
-
Resources: New work of jabodetabekForse già presa @rmt-svc l’ha presa oggi. Apertaresources
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
railmapgen/rmp-gallery#4167 ·
I maintainer di solito rispondono entro 2 giorni
-
documentation p1
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
microsoft/monaco-editor#5577 ·
I maintainer di solito rispondono entro 1 giorno