Variable: server
@providerprotocol/ai / proxy / server
Variable: server
Section titled “Variable: server”
constserver:object
Defined in: src/providers/proxy/server/index.ts:96
Server adapters namespace.
Contains framework-specific adapters for Web API, Express, Fastify, and H3.
Type Declaration
Section titled “Type Declaration”express
Section titled “express”express:
object
Express/Connect adapter
express.sendEmbeddingJSON()
Section titled “express.sendEmbeddingJSON()”sendEmbeddingJSON: (
result,res) =>void
Send an EmbeddingResult as JSON response.
Parameters
Section titled “Parameters”result
Section titled “result”The embedding result
ExpressResponse
Express response object
Returns
Section titled “Returns”void
express.sendError()
Section titled “express.sendError()”sendError: (
message,status,res) =>void
Send an error response.
Parameters
Section titled “Parameters”message
Section titled “message”string
Error message
status
Section titled “status”number
HTTP status code
ExpressResponse
Express response object
Returns
Section titled “Returns”void
express.sendImageJSON()
Section titled “express.sendImageJSON()”sendImageJSON: (
result,res) =>void
Send an ImageResult as JSON response.
Parameters
Section titled “Parameters”result
Section titled “result”The image result
ExpressResponse
Express response object
Returns
Section titled “Returns”void
express.sendJSON()
Section titled “express.sendJSON()”sendJSON: (
turn,res) =>void
Send a Turn as JSON response.
Parameters
Section titled “Parameters”The completed inference turn
ExpressResponse
Express response object
Returns
Section titled “Returns”void
Example
Section titled “Example”const turn = await instance.generate(messages);expressAdapter.sendJSON(turn, res);express.streamImageSSE()
Section titled “express.streamImageSSE()”streamImageSSE: (
stream,res) =>void
Stream an ImageStreamResult as Server-Sent Events.
Parameters
Section titled “Parameters”stream
Section titled “stream”ImageStreamLike
The ImageStreamResult or ImageProviderStreamResult from image().stream()
ExpressResponse
Express response object
Returns
Section titled “Returns”void
express.streamSSE()
Section titled “express.streamSSE()”streamSSE: (
stream,res) =>void
Stream a StreamResult as Server-Sent Events.
Parameters
Section titled “Parameters”stream
Section titled “stream”The StreamResult from instance.stream()
ExpressResponse
Express response object
Returns
Section titled “Returns”void
Example
Section titled “Example”const stream = instance.stream(messages);expressAdapter.streamSSE(stream, res);fastify
Section titled “fastify”fastify:
object
Fastify adapter
fastify.sendEmbeddingJSON()
Section titled “fastify.sendEmbeddingJSON()”sendEmbeddingJSON: (
result,reply) =>FastifyReply
Send an EmbeddingResult as JSON response.
Parameters
Section titled “Parameters”result
Section titled “result”The embedding result
FastifyReply
Fastify reply object
Returns
Section titled “Returns”FastifyReply
fastify.sendError()
Section titled “fastify.sendError()”sendError: (
message,status,reply) =>FastifyReply
Send an error response.
Parameters
Section titled “Parameters”message
Section titled “message”string
Error message
status
Section titled “status”number
HTTP status code
FastifyReply
Fastify reply object
Returns
Section titled “Returns”FastifyReply
fastify.sendImageJSON()
Section titled “fastify.sendImageJSON()”sendImageJSON: (
result,reply) =>FastifyReply
Send an ImageResult as JSON response.
Parameters
Section titled “Parameters”result
Section titled “result”The image result
FastifyReply
Fastify reply object
Returns
Section titled “Returns”FastifyReply
fastify.sendJSON()
Section titled “fastify.sendJSON()”sendJSON: (
turn,reply) =>FastifyReply
Send a Turn as JSON response.
Parameters
Section titled “Parameters”The completed inference turn
FastifyReply
Fastify reply object
Returns
Section titled “Returns”FastifyReply
Example
Section titled “Example”const turn = await instance.generate(messages);return fastifyAdapter.sendJSON(turn, reply);fastify.streamImageSSE()
Section titled “fastify.streamImageSSE()”streamImageSSE: (
stream,reply) =>FastifyReply
Stream an ImageStreamResult as Server-Sent Events.
Parameters
Section titled “Parameters”stream
Section titled “stream”ImageStreamLike
The ImageStreamResult or ImageProviderStreamResult from image().stream()
FastifyReply
Fastify reply object
Returns
Section titled “Returns”FastifyReply
fastify.streamSSE()
Section titled “fastify.streamSSE()”streamSSE: (
stream,reply) =>FastifyReply
Stream a StreamResult as Server-Sent Events.
Parameters
Section titled “Parameters”stream
Section titled “stream”The StreamResult from instance.stream()
FastifyReply
Fastify reply object
Returns
Section titled “Returns”FastifyReply
Example
Section titled “Example”const stream = instance.stream(messages);return fastifyAdapter.streamSSE(stream, reply);h3:
object
H3/Nitro/Nuxt adapter
h3.createImageSSEStream()
Section titled “h3.createImageSSEStream()”createImageSSEStream: (
stream) =>ReadableStream<Uint8Array<ArrayBufferLike>>
Create a ReadableStream for image SSE data.
Parameters
Section titled “Parameters”stream
Section titled “stream”ImageStreamLike
The ImageStreamResult or ImageProviderStreamResult from image().stream()
Returns
Section titled “Returns”ReadableStream<Uint8Array<ArrayBufferLike>>
A ReadableStream of SSE data
h3.createSSEStream()
Section titled “h3.createSSEStream()”createSSEStream: (
stream) =>ReadableStream<Uint8Array<ArrayBufferLike>>
Create a ReadableStream for H3’s sendStream utility.
Use this with H3’s sendStream for better integration:
import { sendStream } from 'h3';return sendStream(event, h3Adapter.createSSEStream(stream));Parameters
Section titled “Parameters”stream
Section titled “stream”The StreamResult from instance.stream()
Returns
Section titled “Returns”ReadableStream<Uint8Array<ArrayBufferLike>>
A ReadableStream of SSE data
h3.sendEmbeddingJSON()
Section titled “h3.sendEmbeddingJSON()”sendEmbeddingJSON: (
result,event) =>unknown
Send an EmbeddingResult as JSON response.
Parameters
Section titled “Parameters”result
Section titled “result”The embedding result
H3Event
H3 event object
Returns
Section titled “Returns”unknown
Serialized result data
h3.sendError()
Section titled “h3.sendError()”sendError: (
message,status,event) =>object
Send an error response with proper HTTP status.
Parameters
Section titled “Parameters”message
Section titled “message”string
Error message
status
Section titled “status”number
HTTP status code
H3Event
H3 event object
Returns
Section titled “Returns”object
Error object for H3 to serialize
error:
string
statusCode
Section titled “statusCode”statusCode:
number
h3.sendImageJSON()
Section titled “h3.sendImageJSON()”sendImageJSON: (
result,event) =>unknown
Send an ImageResult as JSON response.
Parameters
Section titled “Parameters”result
Section titled “result”The image result
H3Event
H3 event object
Returns
Section titled “Returns”unknown
Serialized image result data
h3.sendJSON()
Section titled “h3.sendJSON()”sendJSON: (
turn,event) =>unknown
Send a Turn as JSON response.
Parameters
Section titled “Parameters”The completed inference turn
H3Event
H3 event object
Returns
Section titled “Returns”unknown
Serialized turn data
Example
Section titled “Example”const turn = await instance.generate(messages);return h3Adapter.sendJSON(turn, event);h3.streamImageSSE()
Section titled “h3.streamImageSSE()”streamImageSSE: (
stream,event) =>void
Stream an ImageStreamResult as Server-Sent Events.
Parameters
Section titled “Parameters”stream
Section titled “stream”ImageStreamLike
The ImageStreamResult or ImageProviderStreamResult from image().stream()
H3Event
H3 event object
Returns
Section titled “Returns”void
h3.streamSSE()
Section titled “h3.streamSSE()”streamSSE: (
stream,event) =>void
Stream a StreamResult as Server-Sent Events.
Note: For better H3/Nuxt integration, prefer using createSSEStream with sendStream:
import { sendStream } from 'h3';return sendStream(event, h3Adapter.createSSEStream(stream));Parameters
Section titled “Parameters”stream
Section titled “stream”The StreamResult from instance.stream()
H3Event
H3 event object
Returns
Section titled “Returns”void
webapi
Section titled “webapi”webapi:
object
Web API adapter (Bun, Deno, Next.js, Workers)
webapi.bindTools()
Section titled “webapi.bindTools()”bindTools: (
schemas,implementations) =>Tool<unknown,unknown>[]
Bind tool schemas to implementation functions.
Takes tool schemas from the request and binds them to your server-side implementations.
Parameters
Section titled “Parameters”schemas
Section titled “schemas”Tool schemas from the request
object[] | undefined
implementations
Section titled “implementations”Record<string, (params) => unknown | Promise<unknown>>
Map of tool name to implementation
Returns
Section titled “Returns”Tool<unknown, unknown>[]
Array of complete Tool objects
Example
Section titled “Example”const { tools: schemas } = parseBody(body);
const tools = bindTools(schemas, { get_weather: async ({ location }) => fetchWeather(location), search: async ({ query }) => searchDB(query),});
const instance = llm({ model, tools });webapi.parseBody()
Section titled “webapi.parseBody()”parseBody: (
body) =>ParsedRequest
Parse an HTTP request body into PP types.
Parameters
Section titled “Parameters”unknown
The JSON-parsed request body
Returns
Section titled “Returns”Deserialized PP data
Example
Section titled “Example”const body = await req.json();const { messages, system, params } = parseBody(body);
const instance = llm({ model: anthropic('...'), system, params });const turn = await instance.generate(messages);webapi.parseEmbeddingBody()
Section titled “webapi.parseEmbeddingBody()”parseEmbeddingBody: (
body) =>ParsedEmbeddingRequest
Parse an HTTP request body into embedding inputs.
Parameters
Section titled “Parameters”unknown
The JSON-parsed request body
Returns
Section titled “Returns”Parsed embedding request data
webapi.parseImageBody()
Section titled “webapi.parseImageBody()”parseImageBody: (
body) =>ParsedImageRequest
Parse an HTTP request body into image request data.
Parameters
Section titled “Parameters”unknown
The JSON-parsed request body
Returns
Section titled “Returns”Parsed image request data
webapi.toEmbeddingJSON()
Section titled “webapi.toEmbeddingJSON()”toEmbeddingJSON: (
result) =>Response
Create a JSON Response from an embedding result.
Parameters
Section titled “Parameters”result
Section titled “result”The embedding result
Returns
Section titled “Returns”Response
HTTP Response with JSON body
webapi.toError()
Section titled “webapi.toError()”toError: (
message,status) =>Response
Create an error Response.
Parameters
Section titled “Parameters”message
Section titled “message”string
Error message
status
Section titled “status”number = 500
HTTP status code (default: 500)
Returns
Section titled “Returns”Response
HTTP Response with error body
webapi.toImageJSON()
Section titled “webapi.toImageJSON()”toImageJSON: (
result) =>Response
Create a JSON Response from an image result.
Parameters
Section titled “Parameters”result
Section titled “result”The image result
Returns
Section titled “Returns”Response
HTTP Response with JSON body
webapi.toImageSSE()
Section titled “webapi.toImageSSE()”toImageSSE: (
stream) =>Response
Create an SSE Response from an ImageStreamResult.
Streams image events as SSE, then sends the final image result.
Parameters
Section titled “Parameters”stream
Section titled “stream”ImageStreamLike
The ImageStreamResult or ImageProviderStreamResult from image().stream()
Returns
Section titled “Returns”Response
HTTP Response with SSE body
webapi.toJSON()
Section titled “webapi.toJSON()”toJSON: (
turn) =>Response
Create a JSON Response from a Turn.
Parameters
Section titled “Parameters”The completed inference turn
Returns
Section titled “Returns”Response
HTTP Response with JSON body
Example
Section titled “Example”const turn = await instance.generate(messages);return toJSON(turn);webapi.toSSE()
Section titled “webapi.toSSE()”toSSE: (
stream) =>Response
Create an SSE Response from a StreamResult.
Streams PP StreamEvents as SSE, then sends the final Turn data.
Parameters
Section titled “Parameters”stream
Section titled “stream”The StreamResult from instance.stream()
Returns
Section titled “Returns”Response
HTTP Response with SSE body
Example
Section titled “Example”const stream = instance.stream(messages);return toSSE(stream);Examples
Section titled “Examples”import { express } from '@providerprotocol/ai/proxy/server';
app.post('/api/ai', async (req, res) => { const { messages } = parseBody(req.body); if (req.headers.accept?.includes('text/event-stream')) { express.streamSSE(instance.stream(messages), res); } else { express.sendJSON(await instance.generate(messages), res); }});import { fastify } from '@providerprotocol/ai/proxy/server';
app.post('/api/ai', async (request, reply) => { const { messages } = parseBody(request.body); if (request.headers.accept?.includes('text/event-stream')) { return fastify.streamSSE(instance.stream(messages), reply); } return fastify.sendJSON(await instance.generate(messages), reply);});import { h3 } from '@providerprotocol/ai/proxy/server';
export default defineEventHandler(async (event) => { const { messages } = parseBody(await readBody(event)); if (getHeader(event, 'accept')?.includes('text/event-stream')) { return h3.streamSSE(instance.stream(messages), event); } return h3.sendJSON(await instance.generate(messages), event);});