@docyrus/ai-sdk-provider
v0.0.1
Published
AI SDK provider and chat transport for Docyrus AI agent endpoints
Downloads
46
Keywords
Readme
@docyrus/ai-sdk-provider
AI SDK provider and chat transport for Docyrus AI agent endpoints.
This package exposes a single factory, createDocyrusProvider(...), that supports:
- AI SDK Core server-side usage with
generateText/streamText - AI SDK UI frontend usage with
useChatviaprovider.chatTransport()
Installation
pnpm add @docyrus/ai-sdk-provider aiUsage
import { createDocyrusProvider } from '@docyrus/ai-sdk-provider';
const docyrus = createDocyrusProvider({
baseURL: 'https://api.docyrus.com/v1/ai/chat',
providerBaseURL: 'https://api.docyrus.com/v1/ai/provider',
apiKey: 'docyrus-oauth-client-id',
headers: async () => ({
Authorization: `Bearer ${await getAccessToken()}`,
}),
});streamText
import { streamText } from 'ai';
const docyrus = createDocyrusProvider({
providerBaseURL: 'https://api.docyrus.com/v1/ai/provider',
headers: {
Authorization: 'Bearer YOUR_DOCYRUS_ACCESS_TOKEN',
},
});
const result = streamText({
model: docyrus('default'),
prompt: 'Summarize the latest project updates.',
});
for await (const delta of result.textStream) {
process.stdout.write(delta);
}generateText
import { generateText } from 'ai';
const docyrus = createDocyrusProvider({
providerBaseURL: 'https://api.docyrus.com/v1/ai/provider',
headers: {
Authorization: 'Bearer YOUR_DOCYRUS_ACCESS_TOKEN',
},
});
const result = await generateText({
model: docyrus('default'),
prompt: 'Say hello from Docyrus.',
});
console.log(result.text);useChat
import { useChat } from '@ai-sdk/react';
import { createDocyrusProvider } from '@docyrus/ai-sdk-provider';
const docyrus = createDocyrusProvider({
baseURL: 'https://api.docyrus.com/v1/ai/chat',
headers: async () => ({
Authorization: `Bearer ${await getAccessToken()}`,
}),
});
export function Chat() {
const { messages, sendMessage } = useChat({
transport: docyrus.chatTransport({
body: {
projectId: 'project-id',
workId: 'work-id',
thinkingActive: true,
},
}),
});
return (
<div>
<button onClick={() => sendMessage({ text: 'Hello Docyrus' })}>
Send
</button>
<pre>{JSON.stringify(messages, null, 2)}</pre>
</div>
);
}The transport sends:
messages: a Docyrus-compatible{ role, content }[]projection of the UI messagesuiMessages: the raw AI SDK UI messages for forward-compatible backend upgradesthreadId: defaults to the AI SDK chat id unless you override it inbody
Backend Metadata Contract
For server-side provider parity, the provider endpoint should include AI SDK response metadata in either:
- the JSON response body
messageMetadata.docyrusProvideron the streamed UI message response
Recommended shape:
{
docyrusProvider: {
usage: {
inputTokens: {
total: 10,
noCache: 10,
cacheRead: 0,
cacheWrite: 0,
},
outputTokens: {
total: 20,
text: 18,
reasoning: 2,
},
},
warnings: [],
finishReason: { unified: 'stop', raw: 'stop' },
response: {
id: 'response-id',
modelId: 'default',
timestamp: '2026-03-16T12:00:00.000Z',
},
},
}See docs/ai-sdk-provider-backend-contract.md for the full handoff.
