/** * Provider Worker - exposes AI provider registry via RPC * * This worker can be deployed to Cloudflare Workers or run locally via Miniflare. * It exposes model and embedding model access via Workers RPC. * * Uses Cloudflare Workers RPC (WorkerEntrypoint, RpcTarget) for communication. */ import { WorkerEntrypoint, RpcTarget } from 'cloudflare:workers'; import type { LanguageModel, EmbeddingModel, ProviderRegistryProvider } from 'ai'; import { type ProviderId } from './registry.js'; /** * Environment bindings for the worker */ export interface Env { /** Cloudflare AI binding */ AI?: Ai; /** AI Gateway URL */ AI_GATEWAY_URL?: string; /** AI Gateway token */ AI_GATEWAY_TOKEN?: string; DO_TOKEN?: string; /** Provider API keys */ OPENAI_API_KEY?: string; ANTHROPIC_API_KEY?: string; GOOGLE_GENERATIVE_AI_API_KEY?: string; OPENROUTER_API_KEY?: string; CLOUDFLARE_ACCOUNT_ID?: string; CLOUDFLARE_API_TOKEN?: string; } /** * Core provider service - extends RpcTarget so it can be passed over RPC * * Contains all provider functionality: model access, embedding models, * and provider configuration. */ export declare class ProviderServiceCore extends RpcTarget { protected env: Env; protected registry: ProviderRegistryProvider | null; protected registryPromise: Promise | null; constructor(env: Env); /** * Get provider configuration from environment */ private getConfig; /** * Get or create the provider registry */ getRegistry(): Promise; /** * Get a language model by ID * * Supports multiple formats: * - Provider:model format: 'anthropic:claude-sonnet-4-20250514', 'openai:gpt-4o' * - Aliases: 'sonnet', 'opus', 'gpt-4o' * - OpenRouter format: 'meta-llama/llama-3.3-70b-instruct' * * @example * ```ts * const model = await core.model('anthropic:claude-sonnet-4-20250514') * const alias = await core.model('sonnet') * const llama = await core.model('meta-llama/llama-3.3-70b-instruct') * ``` */ model(id: string): Promise; /** * Get an embedding model by ID * * Supports: * - OpenAI: 'openai:text-embedding-3-small' * - Cloudflare Workers AI: 'cloudflare:@cf/baai/bge-m3' * * @example * ```ts * const openai = await core.embeddingModel('openai:text-embedding-3-small') * const cf = await core.embeddingModel('cloudflare:@cf/baai/bge-m3') * ``` */ embeddingModel(id: string): Promise>; /** * List all available provider IDs * * @returns Array of provider IDs that can be used with model() and embeddingModel() */ listProviders(): Promise; } /** * Main provider service exposed via RPC as WorkerEntrypoint * * Usage: * const providers = await env.PROVIDERS.connect() * const model = await providers.model('anthropic:claude-sonnet-4-20250514') * const embed = await providers.embeddingModel('cloudflare:@cf/baai/bge-m3') */ export declare class ProviderService extends WorkerEntrypoint { /** * Get a provider service instance - returns an RpcTarget that can be used directly */ connect(): ProviderServiceCore; } export default ProviderService; export { ProviderService as ProviderWorker }; //# sourceMappingURL=worker.d.ts.map