@personaai/adaptersv0.3.0

Quickstart — @personaai/adapters

Express / Next.js / NestJS — one package, pick your framework

Quickstart

Express

ts
import express from 'express';import { createExpressAdapter } from '@personaai/adapters/express';
const app = express();app.use(express.json());const persona = createExpressAdapter({  baseUrl: process.env.PERSONA_BASE_URL!,  credential: process.env.PERSONA_CREDENTIAL!,  resolveUserFrom: (req) => (req as any).user?.id ?? null, // your auth});app.use('/api/persona', persona.router);app.listen(3000);

Or toExpressRouter(runtime) for two mounts (app + admin) at different paths.

Next.js (App Router)

ts
// app/api/persona/[...persona]/route.tsimport { createPersonaHandler } from '@personaai/adapters/nextjs/server';import { auth } from '@clerk/nextjs/server';
export const { GET, POST, PUT, PATCH, DELETE } = createPersonaHandler({  baseUrl: process.env.PERSONA_BASE_URL!,  credential: process.env.PERSONA_CREDENTIAL!,  resolveUserFrom: async () => (await auth()).userId,});export const dynamic = 'force-dynamic';
tsx
// app/layout.tsximport { PersonaProvider } from '@personaai/adapters/nextjs';export default function Layout({ children }: { children: React.ReactNode }) {  return <PersonaProvider baseUrl="/api/persona">{children}</PersonaProvider>;}

NestJS

ts
import { Module } from '@nestjs/common';import { PersonaModule } from '@personaai/adapters/nestjs';
@Module({  imports: [PersonaModule.forRoot({    baseUrl: process.env.PERSONA_BASE_URL!,    credential: process.env.PERSONA_CREDENTIAL!,    resolveUserFrom: (req) => req.user?.id ?? null,    routePrefix: '/api/persona',  })],})export class AppModule {}

forRootAsync + PersonaService.forUser(id) also available.

Next

  • · ·
  • (via runtime guide)