Skip to content

@uservane/langfuse-push

Server-only adapter that completes the UserVane → Langfuse round-trip.

Credential-safe by design. Runs in your server or cron. Holds the UserVane secret key (pending-scores queue) and the Langfuse write keys. UserVane never receives the Langfuse key. Never import from a client component.

Terminal window
npm install @uservane/langfuse-push
import { pushPendingScores } from "@uservane/langfuse-push";
const summary = await pushPendingScores({
uservane: {
secretKey: process.env.USERVANE_SECRET_KEY!,
// apiBase: "https://api.uservane.com",
},
langfuse: {
publicKey: process.env.LANGFUSE_PUBLIC_KEY!,
secretKey: process.env.LANGFUSE_SECRET_KEY!,
// baseUrl: "https://cloud.langfuse.com",
},
// scoreName: "uservane.satisfaction",
// includeFailed: true,
// limit: 50,
});
// { delivered: number, failed: number }
  1. GET /v1/sdk/pending-scores (secret key) for linked + pending rows (this project only).
  2. Create a Langfuse session-level score: name uservane.satisfaction (or scoreName), value = rating, comment = text, keyed by sessionId.
  3. POST /v1/sdk/pending-scores/ack with per-id delivered | failed.
  4. Session-less linked rows are acked failed (observation-only push is not v1).
  5. Unlinked rows never appear in the queue.
FieldNotes
uservane.secretKeyRequired, server-only
uservane.apiBaseDefault https://api.uservane.com
langfuse.publicKey / secretKeyRequired
langfuse.baseUrlOptional Langfuse host
scoreNameDefault uservane.satisfaction
limitMax pull per run (capped)
includeFailedRe-poll previously failed rows

Round-trip guide · TypeDoc · Credential-safe concept