@ukiahinsure/a2ui-react-adapter
v0.1.13
Published
Reusable MedAid A2UI client adapter: LiveKit envelope handling and official A2UI v0.9.1 React rendering behind a clean public API.
Readme
@ukiahinsure/a2ui-react-adapter
Reusable MedAid A2UI client adapter. Owns all protocol-specific client
code for Stage 17: the A2UIClientAdapter over the official A2UI v0.9.1
packages (@a2ui/react, @a2ui/web_core) with the trusted Basic Catalog,
the A2UISurfaceHost React component (no-surface and render-error
fallbacks), and the MedAid LiveKit envelope constants/types
(medaid-a2ui-livekit-envelope.v1).
A2UISessionController attaches that adapter to a caller-owned structural
room, filters streams through a required trusted-participant predicate,
announces exact member capabilities, validates/serializes server streams,
restores authoritative snapshots across revision gaps and reconnects, and
maps trusted Basic Catalog interactions to correlated client envelopes.
It never disconnects a shared room. joinA2UIRoom is the explicit ownership
alternative: it requests backend-issued { serverUrl, token } material once,
connects a room, and returns an idempotent close handle without retaining or
logging the token.
Host applications (the MedAid member website; later the APAI human-agent
frontend) consume only the public API from the package entry point and the
./styles.css export. They never import @a2ui/* directly, never parse
authored YAML, and never construct envelopes themselves — so a future
official React v1 renderer can replace the internals without host changes.
Canonical envelope contract: livekitFlowfactory/contracts/ and MediAid
docs/aide/contracts/a2ui-livekit-envelope-contract.md.
Commands
npm run build— bundle todist/(tsup, ESM + d.ts) and copy the renderer structural CSS todist/a2ui-structural.css.npm test— vitest (jsdom) fixture-driven adapter and host tests.npm run lint/npm run typecheck
Status
Queue-Item 024-005 plumbing complete: the Queue-Item 024-004 session behavior
plus exact flow.submit/flow.skip/flow.revise and safe clientError
publication, value-free pending/result snapshots, duplicate suppression,
delivery/ack separation, and same-request-id retry after timeout or
authoritative reconnect restoration. Server validation and deterministic
voice/UI engine serialization remain Queue-Item 024-006; provider-backed
acceptance remains 024-008.
