@uservane/vercel-ai: Presentation
Type Alias: Presentation
Section titled “Type Alias: Presentation”Presentation =
"corner"|"inline"|"banner"
Defined in: products/uservane/browser/dist/index.d.ts:14
@uservane/vercel-ai - agent-native capture for Vercel AI SDK hosts.
Thin positioning shim over @uservane/agent-core + @uservane/agent-react.
Headless core (AgentController) + React <UserVaneProvider> / <InlineFeedback/>.
Reuses @uservane/browser for bootstrap, decideShow, submit. Does not reimplement
show-token, suppression, or sampling.
Session correlation (production linked path):
- Server:
import { mintFeedbackToken } from "@uservane/vercel-ai/server"with the project SECRET key + the same sessionId passed to Langfuse propagateAttributes. - Thread showToken + sessionId to the client.
- Client:
controller.bind({ surveyId, showToken, sessionId })then resolveTask. Submit carries the bound token + sessionId -> response storedlinked.
Without bind(), the unbound bootstrap path still works (stored unlinked).
Do not import the /server entry from client code (secret key must stay server-side).
Observation-level auto-read remains deferred.
// NEEDS CEO VERIFICATION: observation-level auto-read (deferred)
import { UserVaneProvider, useUserVane } from "@uservane/vercel-ai";
<UserVaneProvider apiKey="uv_pk_live_..." surveySlug="post-task"> <Chat /></UserVaneProvider>
// after server mints a bound token:controller.bind({ surveyId, showToken, sessionId });// at true resolution:const { resolveTask } = useUserVane();resolveTask({ outcome: "refunded" });Headless-only: construct AgentController with headlessMode: true and supply
setHeadlessContract({ isTaskOpen, onDismiss }) or shows are refused.