Skip to content

feat: Add @openuidev/vue-headless - Vue 3 port of @openuidev/react-headless #765

Description

@AlexQuidditch

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 / restStorage adapters
  • 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

  1. Is a new @openuidev/vue-headless package aligned with the roadmap?
  2. Is partial parity (AG-UI only in v1) acceptable for the first merge?

Happy to adjust scope before opening a PR.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions