feat: Add @openuidev/vue-headless - Vue 3 port of @openuidev/react-headless
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- typescript
- Domain
- frontend
Research direction
Start by reading @openuidev/react-headless to understand the API and behavior this proposal aims to match. Then compare the proposed Vue adaptations and initial AG-UI-only scope with the questions raised for maintainers. The next step and definition of done depend on whether maintainers approve the package and partial-parity scope.
Written by the indexing model from the issue text.
Description
Summary
I would like to contribute packages/vue-headless, a Vue 3 port of @openuidev/react-headless, so Vue apps can use the same headless chat primitives as the React ecosystem.
I built this package while testing the Mastra + OpenUI + Vue 3 stack and would like to share the result with the community.
Problem
OpenUI has headless support for React, but not for Vue. Vue/Nuxt teams currently have no official way to integrate AG-UI streaming, thread state, tool activity, and artifact rendering using OpenUI patterns.
Proposed solution
New package @openuidev/vue-headless with API and behavior aligned to react-headless, adapted for Vue:
| React | Vue |
|---|---|
| Zustand | Pinia |
| React context + hooks | provide/inject + composables |
Initial scope:
- Chat store (threads, messages, streaming, cancellation)
- AG-UI adapter +
processStreamedMessage - Tool activity pairing (
pairToolActivity,useToolActivities) - Artifact renderers and detailed view composables
fetchLLM/restStorageadapters- Vitest coverage + README
Deferred to follow-up PRs:
- OpenAI stream adapters
- LangGraph adapter
- OpenAI / LangGraph message format converters
Message types remain re-exported from @ag-ui/core (not redefined).
Questions for maintainers
- Is a new
@openuidev/vue-headlesspackage aligned with the roadmap? - Is partial parity (AG-UI only in v1) acceptable for the first merge?
Happy to adjust scope before opening a PR.
- Dominant language
- TypeScript
- Stars
- 10k
- Forks
- 698
- Avg merge
- 1d 3h
- Merged PRs (30d)
- 133
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from thesysdev/openui
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
thesysdev/openui#1445 · 2 comments ·
Maintainers usually reply within 1 day
-
Add dataInvention flag to PromptOptions to disable the 'generate realistic/plausible data' ruleOpen
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
thesysdev/openui#959 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 18/100
thesysdev/openui#1528 · 1 reaction ·
Maintainers usually reply within 1 day
All issues in thesysdev/openui
Similar issues
-
Difficulty 1/5 Under an hour Newbie friendliness 85/100
formbricks/formbricks#9918 ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
thecodacus/pithagoras#364 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
openclimatefix/quartz-frontend#823 ·
Maintainers usually reply within 4 days
-
area:agent-manager community needs-triage
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
`contacts.create` posts to `/audiences/undefined/contacts` when `audienceId` is undefinedPossibly taken @RaphaelFakhri claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
resend/resend-node#1176 ·
Maintainers usually reply within 1 day