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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions