@elizaos/plugin-vercel-ai-gateway 2.0.0-alpha.2 → 2.0.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/index.browser.js +18 -8
- package/dist/browser/index.browser.js.map +4 -4
- package/dist/browser/index.node.js +18 -8
- package/dist/browser/index.node.js.map +4 -4
- package/dist/cjs/index.browser.cjs +30 -20
- package/dist/cjs/index.browser.cjs.map +4 -4
- package/dist/cjs/index.node.cjs +30 -20
- package/dist/cjs/index.node.cjs.map +4 -4
- package/dist/node/index.browser.js +18 -8
- package/dist/node/index.browser.js.map +4 -4
- package/dist/node/index.node.js +18 -8
- package/dist/node/index.node.js.map +4 -4
- package/package.json +13 -3
- package/LICENSE +0 -21
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../index.ts", "../../init.ts", "../../types/index.ts", "../../utils/config.ts", "../../
|
|
4
|
-
"sourcesContent": ["import type {\n GenerateTextParams,\n IAgentRuntime,\n ImageDescriptionParams,\n ImageGenerationParams,\n JsonValue,\n ObjectGenerationParams,\n Plugin,\n TestCase,\n TestSuite,\n TextEmbeddingParams,\n} from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { type GatewayPluginConfig, initializeGateway } from \"./init\";\nimport {\n handleImageDescription,\n handleImageGeneration,\n handleObjectLarge,\n handleObjectSmall,\n handleTextEmbedding,\n handleTextLarge,\n handleTextSmall,\n} from \"./models\";\nimport type { ImageDescriptionResult, ImageGenerationResult } from \"./types\";\nimport { getApiKeyOptional, getBaseUrl } from \"./utils/config\";\n\nexport { GatewayClient } from \"./providers/client\";\n\nconst pluginTests = [\n {\n name: \"gateway_plugin_tests\",\n tests: [\n {\n name: \"gateway_test_api_key_validation\",\n fn: async (runtime: IAgentRuntime) => {\n const apiKey = getApiKeyOptional(runtime);\n if (!apiKey) {\n throw new Error(\n \"AI_GATEWAY_API_KEY, AIGATEWAY_API_KEY, or VERCEL_OIDC_TOKEN is not configured\"\n );\n }\n logger.info(\"[Gateway Test] API key is configured\");\n },\n },\n {\n name: \"gateway_test_api_connectivity\",\n fn: async (runtime: IAgentRuntime) => {\n const baseUrl = getBaseUrl(runtime);\n const apiKey = getApiKeyOptional(runtime);\n\n if (!apiKey) {\n throw new Error(\"API key is required for connectivity test\");\n }\n\n const response = await fetch(`${baseUrl}/models`, {\n headers: { Authorization: `Bearer ${apiKey}` },\n });\n\n if (!response.ok) {\n throw new Error(\n `API connectivity test failed: ${response.status} ${response.statusText}`\n );\n }\n\n const data = (await response.json()) as { data?: Array<Record<string, never>> };\n logger.info(`[Gateway Test] API connected. ${data.data?.length ?? 0} models available.`);\n },\n },\n {\n name: \"gateway_test_text_small\",\n fn: async (runtime: IAgentRuntime) => {\n const text = await runtime.useModel(ModelType.TEXT_SMALL, {\n prompt: \"Say hello in exactly 5 words.\",\n });\n\n if (typeof text !== \"string\" || text.length === 0) {\n throw new Error(\"TEXT_SMALL should return non-empty string\");\n }\n\n logger.info(`[Gateway Test] TEXT_SMALL generated: \"${text.substring(0, 50)}...\"`);\n },\n },\n {\n name: \"gateway_test_text_large\",\n fn: async (runtime: IAgentRuntime) => {\n const text = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt: \"Explain quantum computing in 2 sentences.\",\n });\n\n if (typeof text !== \"string\" || text.length === 0) {\n throw new Error(\"TEXT_LARGE should return non-empty string\");\n }\n\n logger.info(`[Gateway Test] TEXT_LARGE generated: \"${text.substring(0, 50)}...\"`);\n },\n },\n {\n name: \"gateway_test_text_embedding\",\n fn: async (runtime: IAgentRuntime) => {\n const embedding = await runtime.useModel(ModelType.TEXT_EMBEDDING, {\n text: \"Hello, world!\",\n });\n\n if (!Array.isArray(embedding) || embedding.length === 0) {\n throw new Error(\"Embedding should return a non-empty array\");\n }\n\n logger.info(`[Gateway Test] Generated embedding with ${embedding.length} dimensions`);\n },\n },\n {\n name: \"gateway_test_object_generation\",\n fn: async (runtime: IAgentRuntime) => {\n const result = await runtime.useModel(ModelType.OBJECT_SMALL, {\n prompt:\n \"Return a JSON object with exactly these fields: name (string), age (number), active (boolean)\",\n });\n\n if (!result || typeof result !== \"object\") {\n throw new Error(\"Object generation should return an object\");\n }\n\n logger.info(\n `[Gateway Test] Object generated: ${JSON.stringify(result).substring(0, 100)}`\n );\n },\n },\n {\n name: \"gateway_test_streaming\",\n fn: async (runtime: IAgentRuntime) => {\n const chunks: string[] = [];\n\n const result = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt: \"Count from 1 to 5, one number per line.\",\n stream: true,\n onStreamChunk: (chunk: string) => {\n chunks.push(chunk);\n },\n });\n\n if (typeof result !== \"string\" || result.length === 0) {\n throw new Error(\"Streaming should return non-empty result\");\n }\n\n if (chunks.length === 0) {\n throw new Error(\"No streaming chunks received\");\n }\n\n logger.info(`[Gateway Test] Streaming test: ${chunks.length} chunks received`);\n },\n },\n ] as TestCase[],\n },\n] as TestSuite[];\n\ntype ProcessEnvLike = Record<string, string | undefined>;\n\nfunction getProcessEnv(): ProcessEnvLike {\n if (typeof process === \"undefined\") {\n return {};\n }\n return process.env as ProcessEnvLike;\n}\n\nconst env = getProcessEnv();\n\nexport const gatewayPlugin: Plugin = {\n name: \"gateway\",\n description: \"Vercel AI Gateway integration for text, image, audio, and embedding models\",\n\n config: {\n AI_GATEWAY_API_KEY: env.AI_GATEWAY_API_KEY ?? null,\n AIGATEWAY_API_KEY: env.AIGATEWAY_API_KEY ?? null,\n VERCEL_OIDC_TOKEN: env.VERCEL_OIDC_TOKEN ?? null,\n AI_GATEWAY_BASE_URL: env.AI_GATEWAY_BASE_URL ?? null,\n AI_GATEWAY_SMALL_MODEL: env.AI_GATEWAY_SMALL_MODEL ?? null,\n AI_GATEWAY_LARGE_MODEL: env.AI_GATEWAY_LARGE_MODEL ?? null,\n AI_GATEWAY_EMBEDDING_MODEL: env.AI_GATEWAY_EMBEDDING_MODEL ?? null,\n AI_GATEWAY_EMBEDDING_DIMENSIONS: env.AI_GATEWAY_EMBEDDING_DIMENSIONS ?? null,\n AI_GATEWAY_IMAGE_MODEL: env.AI_GATEWAY_IMAGE_MODEL ?? null,\n },\n\n async init(config: Record<string, string>, runtime: IAgentRuntime): Promise<void> {\n initializeGateway(config as GatewayPluginConfig, runtime);\n },\n\n models: {\n [ModelType.TEXT_EMBEDDING]: async (\n runtime: IAgentRuntime,\n params: TextEmbeddingParams | string | null\n ): Promise<number[]> => {\n return handleTextEmbedding(runtime, params);\n },\n\n [ModelType.TEXT_SMALL]: async (\n runtime: IAgentRuntime,\n params: GenerateTextParams\n ): Promise<string> => {\n return handleTextSmall(runtime, params);\n },\n\n [ModelType.TEXT_LARGE]: async (\n runtime: IAgentRuntime,\n params: GenerateTextParams\n ): Promise<string> => {\n return handleTextLarge(runtime, params);\n },\n\n [ModelType.IMAGE]: async (\n runtime: IAgentRuntime,\n params: ImageGenerationParams\n ): Promise<ImageGenerationResult[]> => {\n return handleImageGeneration(runtime, params);\n },\n\n [ModelType.IMAGE_DESCRIPTION]: async (\n runtime: IAgentRuntime,\n params: ImageDescriptionParams | string\n ): Promise<ImageDescriptionResult> => {\n return handleImageDescription(runtime, params);\n },\n\n [ModelType.OBJECT_SMALL]: async (\n runtime: IAgentRuntime,\n params: ObjectGenerationParams\n ): Promise<Record<string, JsonValue>> => {\n return handleObjectSmall(runtime, params);\n },\n\n [ModelType.OBJECT_LARGE]: async (\n runtime: IAgentRuntime,\n params: ObjectGenerationParams\n ): Promise<Record<string, JsonValue>> => {\n return handleObjectLarge(runtime, params);\n },\n },\n\n tests: pluginTests,\n};\n\nexport default gatewayPlugin;\n", "import type { IAgentRuntime } from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport { getApiKeyOptional } from \"./utils/config\";\n\nexport interface GatewayPluginConfig {\n AI_GATEWAY_API_KEY?: string;\n AIGATEWAY_API_KEY?: string;\n VERCEL_OIDC_TOKEN?: string;\n AI_GATEWAY_BASE_URL?: string;\n AI_GATEWAY_SMALL_MODEL?: string;\n AI_GATEWAY_LARGE_MODEL?: string;\n AI_GATEWAY_EMBEDDING_MODEL?: string;\n AI_GATEWAY_EMBEDDING_DIMENSIONS?: string;\n AI_GATEWAY_IMAGE_MODEL?: string;\n AI_GATEWAY_TIMEOUT_MS?: string;\n}\n\nexport function initializeGateway(\n _config: GatewayPluginConfig | undefined,\n runtime: IAgentRuntime\n): void {\n const apiKey = getApiKeyOptional(runtime);\n\n if (apiKey) {\n logger.info(\"[Gateway] Vercel AI Gateway plugin initialized\");\n } else {\n logger.warn(\n \"[Gateway] No API key found. Set AI_GATEWAY_API_KEY, AIGATEWAY_API_KEY, or VERCEL_OIDC_TOKEN.\"\n );\n }\n}\n", "export interface GatewayConfig {\n apiKey: string;\n baseUrl: string;\n smallModel: string;\n largeModel: string;\n embeddingModel: string;\n embeddingDimensions: number;\n imageModel: string;\n timeoutMs: number;\n}\n\nexport const DEFAULT_CONFIG: Omit<GatewayConfig, \"apiKey\"> = {\n baseUrl: \"https://ai-gateway.vercel.sh/v1\",\n smallModel: \"gpt-5-mini\",\n largeModel: \"gpt-5\",\n embeddingModel: \"text-embedding-3-small\",\n embeddingDimensions: 1536,\n imageModel: \"dall-e-3\",\n timeoutMs: 60000,\n};\n\nexport interface TextGenerationParams {\n prompt: string;\n system?: string;\n model?: string;\n temperature?: number;\n maxTokens?: number;\n frequencyPenalty?: number;\n presencePenalty?: number;\n stopSequences?: string[];\n stream?: boolean;\n onStreamChunk?: (chunk: string) => void;\n}\n\nexport interface EmbeddingParams {\n text: string;\n model?: string;\n dimensions?: number;\n}\n\nexport interface ObjectGenerationParams {\n prompt: string;\n schema?: Record<string, unknown>;\n model?: string;\n temperature?: number;\n maxTokens?: number;\n}\n\nexport type ImageSize = \"256x256\" | \"512x512\" | \"1024x1024\" | \"1792x1024\" | \"1024x1792\";\n\nexport type ImageQuality = \"standard\" | \"hd\";\n\nexport type ImageStyle = \"vivid\" | \"natural\";\n\nexport interface ImageGenerationParams {\n prompt: string;\n model?: string;\n n?: number;\n size?: ImageSize;\n quality?: ImageQuality;\n style?: ImageStyle;\n}\n\nexport interface ImageDescriptionParams {\n imageUrl: string;\n prompt?: string;\n model?: string;\n maxTokens?: number;\n}\n\nexport interface ImageGenerationResult {\n url: string;\n revisedPrompt?: string;\n}\n\nexport interface ImageDescriptionResult {\n title: string;\n description: string;\n}\n\nexport interface TokenUsage {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n}\n\nexport type MessageRole = \"system\" | \"user\" | \"assistant\";\n\nexport interface ChatMessage {\n role: MessageRole;\n content: string | null;\n}\n\nexport interface ChatCompletionChoice {\n index: number;\n message: ChatMessage;\n finishReason: string | null;\n}\n\nexport interface ChatCompletionResponse {\n id: string;\n object: \"chat.completion\";\n created: number;\n model: string;\n choices: ChatCompletionChoice[];\n usage?: TokenUsage;\n}\n\nexport interface EmbeddingData {\n embedding: number[];\n index: number;\n}\n\nexport interface EmbeddingResponse {\n object: \"list\";\n data: EmbeddingData[];\n model: string;\n usage: TokenUsage;\n}\n\nexport interface ImageResponseData {\n url: string;\n revised_prompt?: string;\n}\n\nexport interface ImageGenerationResponse {\n created: number;\n data: ImageResponseData[];\n}\n\nexport class GatewayError extends Error {\n statusCode?: number;\n\n constructor(message: string, statusCode?: number) {\n super(message);\n this.name = \"GatewayError\";\n this.statusCode = statusCode;\n }\n}\n", "import type { IAgentRuntime } from \"@elizaos/core\";\nimport type { GatewayConfig } from \"../types\";\nimport { DEFAULT_CONFIG } from \"../types\";\n\nfunction getEnvValue(key: string): string | undefined {\n if (typeof process === \"undefined\") {\n return undefined;\n }\n const value = process.env[key];\n return value === undefined ? undefined : String(value);\n}\n\nexport function getSetting(runtime: IAgentRuntime | undefined, key: string): string | undefined {\n if (runtime) {\n const value = runtime.getSetting(key);\n if (value) return String(value);\n }\n return getEnvValue(key);\n}\n\nexport function getApiKey(runtime?: IAgentRuntime): string {\n const apiKey =\n getSetting(runtime, \"AI_GATEWAY_API_KEY\") ||\n getSetting(runtime, \"AIGATEWAY_API_KEY\") ||\n getSetting(runtime, \"VERCEL_OIDC_TOKEN\");\n\n if (!apiKey) {\n throw new Error(\"AI_GATEWAY_API_KEY, AIGATEWAY_API_KEY, or VERCEL_OIDC_TOKEN is required\");\n }\n\n return apiKey;\n}\n\nexport function getApiKeyOptional(runtime?: IAgentRuntime): string | undefined {\n return (\n getSetting(runtime, \"AI_GATEWAY_API_KEY\") ||\n getSetting(runtime, \"AIGATEWAY_API_KEY\") ||\n getSetting(runtime, \"VERCEL_OIDC_TOKEN\")\n );\n}\n\nexport function getBaseUrl(runtime?: IAgentRuntime): string {\n return getSetting(runtime, \"AI_GATEWAY_BASE_URL\") || DEFAULT_CONFIG.baseUrl;\n}\n\nexport function getSmallModel(runtime?: IAgentRuntime): string {\n return (\n getSetting(runtime, \"AI_GATEWAY_SMALL_MODEL\") ||\n getSetting(runtime, \"SMALL_MODEL\") ||\n DEFAULT_CONFIG.smallModel\n );\n}\n\nexport function getLargeModel(runtime?: IAgentRuntime): string {\n return (\n getSetting(runtime, \"AI_GATEWAY_LARGE_MODEL\") ||\n getSetting(runtime, \"LARGE_MODEL\") ||\n DEFAULT_CONFIG.largeModel\n );\n}\n\nexport function getEmbeddingModel(runtime?: IAgentRuntime): string {\n return getSetting(runtime, \"AI_GATEWAY_EMBEDDING_MODEL\") || DEFAULT_CONFIG.embeddingModel;\n}\n\nexport function getEmbeddingDimensions(runtime?: IAgentRuntime): number {\n const dims = getSetting(runtime, \"AI_GATEWAY_EMBEDDING_DIMENSIONS\");\n if (dims) {\n const parsed = parseInt(dims, 10);\n if (!Number.isNaN(parsed) && parsed > 0) return parsed;\n }\n return DEFAULT_CONFIG.embeddingDimensions;\n}\n\nexport function getImageModel(runtime?: IAgentRuntime): string {\n return getSetting(runtime, \"AI_GATEWAY_IMAGE_MODEL\") || DEFAULT_CONFIG.imageModel;\n}\n\nexport function getTimeoutMs(runtime?: IAgentRuntime): number {\n const timeout = getSetting(runtime, \"AI_GATEWAY_TIMEOUT_MS\");\n if (timeout) {\n const parsed = parseInt(timeout, 10);\n if (!Number.isNaN(parsed) && parsed > 0) return parsed;\n }\n return DEFAULT_CONFIG.timeoutMs;\n}\n\nexport function buildConfig(runtime?: IAgentRuntime): GatewayConfig {\n return {\n apiKey: getApiKey(runtime),\n baseUrl: getBaseUrl(runtime),\n smallModel: getSmallModel(runtime),\n largeModel: getLargeModel(runtime),\n embeddingModel: getEmbeddingModel(runtime),\n embeddingDimensions: getEmbeddingDimensions(runtime),\n imageModel: getImageModel(runtime),\n timeoutMs: getTimeoutMs(runtime),\n };\n}\n\nexport function getAuthHeader(runtime?: IAgentRuntime): Record<string, string> {\n const apiKey = getApiKey(runtime);\n return {\n Authorization: `Bearer ${apiKey}`,\n };\n}\n\nconst NO_TEMPERATURE_MODELS = new Set([\n \"o1\",\n \"o1-preview\",\n \"o1-mini\",\n \"o3\",\n \"o3-mini\",\n \"gpt-5\",\n \"gpt-5-mini\",\n]);\n\nexport function modelSupportsTemperature(model: string): boolean {\n const modelLower = model.toLowerCase();\n for (const noTempModel of NO_TEMPERATURE_MODELS) {\n if (modelLower.includes(noTempModel)) {\n return false;\n }\n }\n return true;\n}\n", "import type {\n ChatCompletionResponse,\n EmbeddingParams,\n EmbeddingResponse,\n GatewayConfig,\n ImageDescriptionParams,\n ImageDescriptionResult,\n ImageGenerationParams,\n ImageGenerationResponse,\n ImageGenerationResult,\n TextGenerationParams,\n} from \"../types\";\nimport { GatewayError } from \"../types\";\nimport { modelSupportsTemperature } from \"../utils/config\";\n\nexport class GatewayClient {\n private readonly config: GatewayConfig;\n\n constructor(config: GatewayConfig) {\n this.config = config;\n }\n\n private url(endpoint: string): string {\n const base = this.config.baseUrl.replace(/\\/$/, \"\");\n return `${base}${endpoint}`;\n }\n\n private async request<T>(endpoint: string, options: RequestInit): Promise<T> {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.config.timeoutMs);\n\n try {\n const response = await fetch(this.url(endpoint), {\n ...options,\n signal: controller.signal,\n headers: {\n Authorization: `Bearer ${this.config.apiKey}`,\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n if (!response.ok) {\n let message: string;\n try {\n const errorData = (await response.json()) as {\n error?: { message?: string };\n };\n message = errorData?.error?.message || response.statusText;\n } catch {\n message = response.statusText;\n }\n throw new GatewayError(\n `Gateway API error (${response.status}): ${message}`,\n response.status\n );\n }\n\n return (await response.json()) as T;\n } catch (error) {\n if (error instanceof GatewayError) throw error;\n if (error instanceof Error && error.name === \"AbortError\") {\n throw new GatewayError(\"Request timeout\");\n }\n throw new GatewayError(\n `Network error: ${error instanceof Error ? error.message : \"Unknown error\"}`\n );\n } finally {\n clearTimeout(timeoutId);\n }\n }\n\n async generateText(params: TextGenerationParams): Promise<string> {\n const model = params.model || this.config.largeModel;\n\n const messages: Array<{ role: string; content: string }> = [];\n if (params.system) {\n messages.push({ role: \"system\", content: params.system });\n }\n messages.push({ role: \"user\", content: params.prompt });\n\n const body: Record<\n string,\n string | number | boolean | string[] | Array<{ role: string; content: string }>\n > = {\n model,\n messages,\n };\n\n if (modelSupportsTemperature(model)) {\n if (params.temperature !== undefined) {\n body.temperature = params.temperature;\n }\n if (params.frequencyPenalty !== undefined) {\n body.frequency_penalty = params.frequencyPenalty;\n }\n if (params.presencePenalty !== undefined) {\n body.presence_penalty = params.presencePenalty;\n }\n if (params.stopSequences !== undefined) {\n body.stop = params.stopSequences;\n }\n if (params.maxTokens !== undefined) {\n body.max_tokens = params.maxTokens;\n }\n } else {\n if (params.maxTokens !== undefined) {\n body.max_completion_tokens = params.maxTokens;\n }\n }\n\n const response = await this.request<ChatCompletionResponse>(\"/chat/completions\", {\n method: \"POST\",\n body: JSON.stringify(body),\n });\n\n if (!response.choices || response.choices.length === 0) {\n throw new GatewayError(\"API returned no choices\");\n }\n\n const content = response.choices[0].message.content;\n if (content === null) {\n throw new GatewayError(\"API returned empty content\");\n }\n\n return content;\n }\n\n async *streamText(params: TextGenerationParams): AsyncGenerator<string, void, void> {\n const model = params.model || this.config.largeModel;\n\n const messages: Array<{ role: string; content: string }> = [];\n if (params.system) {\n messages.push({ role: \"system\", content: params.system });\n }\n messages.push({ role: \"user\", content: params.prompt });\n\n const body: Record<\n string,\n string | number | boolean | Array<{ role: string; content: string }>\n > = {\n model,\n messages,\n stream: true,\n };\n\n if (modelSupportsTemperature(model)) {\n if (params.temperature !== undefined) {\n body.temperature = params.temperature;\n }\n if (params.maxTokens !== undefined) {\n body.max_tokens = params.maxTokens;\n }\n } else {\n if (params.maxTokens !== undefined) {\n body.max_completion_tokens = params.maxTokens;\n }\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.config.timeoutMs);\n\n try {\n const response = await fetch(this.url(\"/chat/completions\"), {\n method: \"POST\",\n signal: controller.signal,\n headers: {\n Authorization: `Bearer ${this.config.apiKey}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n\n if (!response.ok) {\n throw new GatewayError(\n `Gateway API error (${response.status}): ${response.statusText}`,\n response.status\n );\n }\n\n const reader = response.body?.getReader();\n if (!reader) {\n throw new GatewayError(\"No response body\");\n }\n\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() || \"\";\n\n for (const line of lines) {\n if (!line.startsWith(\"data: \")) continue;\n const data = line.slice(6);\n if (data === \"[DONE]\") return;\n\n try {\n const chunk = JSON.parse(data) as {\n choices?: Array<{ delta?: { content?: string } }>;\n };\n const content = chunk.choices?.[0]?.delta?.content;\n if (content) {\n yield content;\n }\n } catch {}\n }\n }\n } finally {\n clearTimeout(timeoutId);\n }\n }\n\n async createEmbedding(params: EmbeddingParams): Promise<number[]> {\n const model = params.model || this.config.embeddingModel;\n const dimensions = params.dimensions || this.config.embeddingDimensions;\n\n const body: Record<string, unknown> = {\n model,\n input: params.text,\n };\n\n if (dimensions) {\n body.dimensions = dimensions;\n }\n\n const response = await this.request<EmbeddingResponse>(\"/embeddings\", {\n method: \"POST\",\n body: JSON.stringify(body),\n });\n\n if (!response.data || response.data.length === 0) {\n throw new GatewayError(\"API returned empty embedding data\");\n }\n\n return response.data[0].embedding;\n }\n\n // =========================================================================\n // Image Generation\n // =========================================================================\n\n /**\n * Generate images.\n */\n async generateImage(params: ImageGenerationParams): Promise<ImageGenerationResult[]> {\n const model = params.model || this.config.imageModel;\n\n const body: Record<string, string | number | undefined> = {\n model,\n prompt: params.prompt,\n };\n\n if (params.n !== undefined) body.n = params.n;\n if (params.size !== undefined) body.size = params.size;\n if (params.quality !== undefined) body.quality = params.quality;\n if (params.style !== undefined) body.style = params.style;\n\n const response = await this.request<ImageGenerationResponse>(\"/images/generations\", {\n method: \"POST\",\n body: JSON.stringify(body),\n });\n\n return response.data.map((item) => ({\n url: item.url,\n revisedPrompt: item.revised_prompt,\n }));\n }\n\n // =========================================================================\n // Image Description\n // =========================================================================\n\n /**\n * Describe/analyze an image using vision capabilities.\n */\n async describeImage(params: ImageDescriptionParams): Promise<ImageDescriptionResult> {\n const model = params.model || \"gpt-5-mini\";\n const prompt =\n params.prompt || \"Please analyze this image and provide a title and detailed description.\";\n const maxTokens = params.maxTokens || 8192;\n\n const body = {\n model,\n messages: [\n {\n role: \"user\",\n content: [\n { type: \"text\", text: prompt },\n { type: \"image_url\", image_url: { url: params.imageUrl } },\n ],\n },\n ],\n max_tokens: maxTokens,\n };\n\n const response = await this.request<ChatCompletionResponse>(\"/chat/completions\", {\n method: \"POST\",\n body: JSON.stringify(body),\n });\n\n if (!response.choices || response.choices.length === 0) {\n throw new GatewayError(\"API returned no choices for image description\");\n }\n\n const content = response.choices[0].message.content;\n if (content === null) {\n throw new GatewayError(\"API returned empty image description\");\n }\n\n let title = \"Image Analysis\";\n let description = content;\n\n const titleMatch = /title[:\\s]+(.+?)(?:\\n|$)/i.exec(content);\n if (titleMatch) {\n title = titleMatch[1].trim();\n description = content.replace(/title[:\\s]+.+?(?:\\n|$)/i, \"\").trim();\n }\n\n return { title, description };\n }\n\n async generateObject(params: {\n prompt: string;\n model?: string;\n temperature?: number;\n }): Promise<Record<string, unknown>> {\n const model = params.model || this.config.smallModel;\n const prompt = `Respond with only valid JSON. ${params.prompt}`;\n\n const response = await this.generateText({\n prompt,\n model,\n temperature: params.temperature,\n });\n\n let cleaned = response.trim();\n if (cleaned.startsWith(\"```json\")) {\n cleaned = cleaned.slice(7);\n }\n if (cleaned.startsWith(\"```\")) {\n cleaned = cleaned.slice(3);\n }\n if (cleaned.endsWith(\"```\")) {\n cleaned = cleaned.slice(0, -3);\n }\n\n try {\n return JSON.parse(cleaned.trim()) as Record<string, unknown>;\n } catch {\n throw new GatewayError(`Failed to parse JSON response: ${cleaned}`);\n }\n }\n}\n", "import type { IAgentRuntime, TextEmbeddingParams } from \"@elizaos/core\";\nimport { GatewayClient } from \"../providers/client\";\nimport { buildConfig, getEmbeddingDimensions, getEmbeddingModel } from \"../utils/config\";\n\nexport async function handleTextEmbedding(\n runtime: IAgentRuntime,\n params: TextEmbeddingParams | string | null\n): Promise<number[]> {\n const config = buildConfig(runtime);\n const client = new GatewayClient(config);\n\n let text: string;\n if (params === null) {\n text = \"test\";\n } else if (typeof params === \"string\") {\n text = params;\n } else {\n text = params.text;\n }\n\n const model = getEmbeddingModel(runtime);\n const dimensions = getEmbeddingDimensions(runtime);\n\n return client.createEmbedding({\n text,\n model,\n dimensions,\n });\n}\n", "import type {\n ImageDescriptionParams as CoreImageDescParams,\n ImageGenerationParams as CoreImageParams,\n IAgentRuntime,\n} from \"@elizaos/core\";\nimport { GatewayClient } from \"../providers/client\";\nimport type {\n ImageDescriptionResult,\n ImageGenerationResult,\n ImageQuality,\n ImageSize,\n ImageStyle,\n} from \"../types\";\nimport { buildConfig, getImageModel } from \"../utils/config\";\n\nexport async function handleImageGeneration(\n runtime: IAgentRuntime,\n params: CoreImageParams\n): Promise<ImageGenerationResult[]> {\n const config = buildConfig(runtime);\n const client = new GatewayClient(config);\n\n const model = getImageModel(runtime);\n\n const extendedParams = params as { quality?: string; style?: string };\n return client.generateImage({\n prompt: params.prompt,\n model,\n n: params.count,\n size: params.size as ImageSize | undefined,\n quality: extendedParams.quality as ImageQuality | undefined,\n style: extendedParams.style as ImageStyle | undefined,\n });\n}\n\nexport async function handleImageDescription(\n runtime: IAgentRuntime,\n params: CoreImageDescParams | string\n): Promise<ImageDescriptionResult> {\n const config = buildConfig(runtime);\n const client = new GatewayClient(config);\n\n let imageUrl: string;\n let prompt: string | undefined;\n\n if (typeof params === \"string\") {\n imageUrl = params;\n } else {\n imageUrl = params.imageUrl;\n prompt = params.prompt;\n }\n\n return client.describeImage({\n imageUrl,\n prompt,\n });\n}\n", "import type { IAgentRuntime, JsonValue, ObjectGenerationParams } from \"@elizaos/core\";\nimport { GatewayClient } from \"../providers/client\";\nimport { buildConfig, getLargeModel, getSmallModel } from \"../utils/config\";\n\nexport async function handleObjectSmall(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams\n): Promise<Record<string, JsonValue>> {\n const config = buildConfig(runtime);\n const client = new GatewayClient(config);\n\n const model = getSmallModel(runtime);\n\n return (await client.generateObject({\n prompt: params.prompt,\n model,\n temperature: params.temperature,\n })) as Record<string, JsonValue>;\n}\n\nexport async function handleObjectLarge(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams\n): Promise<Record<string, JsonValue>> {\n const config = buildConfig(runtime);\n const client = new GatewayClient(config);\n\n const model = getLargeModel(runtime);\n\n return (await client.generateObject({\n prompt: params.prompt,\n model,\n temperature: params.temperature,\n })) as Record<string, JsonValue>;\n}\n", "import type { GenerateTextParams, IAgentRuntime } from \"@elizaos/core\";\nimport { GatewayClient } from \"../providers/client\";\nimport { buildConfig, getLargeModel, getSmallModel } from \"../utils/config\";\n\nexport async function handleTextSmall(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string> {\n const config = buildConfig(runtime);\n const client = new GatewayClient(config);\n\n const model = getSmallModel(runtime);\n\n if (params.stream && params.onStreamChunk) {\n const chunks: string[] = [];\n for await (const chunk of client.streamText({\n prompt: params.prompt,\n system: runtime.character?.system,\n model,\n maxTokens: params.maxTokens,\n temperature: params.temperature,\n stopSequences: params.stopSequences,\n })) {\n chunks.push(chunk);\n params.onStreamChunk(chunk);\n }\n return chunks.join(\"\");\n }\n\n return client.generateText({\n prompt: params.prompt,\n system: runtime.character?.system,\n model,\n maxTokens: params.maxTokens,\n temperature: params.temperature,\n frequencyPenalty: params.frequencyPenalty,\n presencePenalty: params.presencePenalty,\n stopSequences: params.stopSequences,\n });\n}\n\n/**\n * Handle TEXT_LARGE model requests.\n */\nexport async function handleTextLarge(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string> {\n const config = buildConfig(runtime);\n const client = new GatewayClient(config);\n\n const model = getLargeModel(runtime);\n\n if (params.stream && params.onStreamChunk) {\n const chunks: string[] = [];\n for await (const chunk of client.streamText({\n prompt: params.prompt,\n system: runtime.character?.system,\n model,\n maxTokens: params.maxTokens,\n temperature: params.temperature,\n stopSequences: params.stopSequences,\n })) {\n chunks.push(chunk);\n params.onStreamChunk(chunk);\n }\n return chunks.join(\"\");\n }\n\n return client.generateText({\n prompt: params.prompt,\n system: runtime.character?.system,\n model,\n maxTokens: params.maxTokens,\n temperature: params.temperature,\n frequencyPenalty: params.frequencyPenalty,\n presencePenalty: params.presencePenalty,\n stopSequences: params.stopSequences,\n });\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["logger", "logger"]
|
|
3
|
+
"sources": ["../../index.ts", "../../init.ts", "../../types/index.ts", "../../utils/config.ts", "../../models/embedding.ts", "../../providers/client.ts", "../../models/image.ts", "../../models/object.ts", "../../models/text.ts"],
|
|
4
|
+
"sourcesContent": ["import type {\n GenerateTextParams,\n IAgentRuntime,\n ImageDescriptionParams,\n ImageGenerationParams,\n JsonValue,\n ObjectGenerationParams,\n Plugin,\n TestCase,\n TestSuite,\n TextEmbeddingParams,\n} from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { type GatewayPluginConfig, initializeGateway } from \"./init\";\nimport {\n handleImageDescription,\n handleImageGeneration,\n handleObjectLarge,\n handleObjectSmall,\n handleTextEmbedding,\n handleTextLarge,\n handleTextSmall,\n} from \"./models\";\nimport type { ImageDescriptionResult, ImageGenerationResult } from \"./types\";\nimport { getApiKeyOptional, getBaseUrl } from \"./utils/config\";\n\nexport { GatewayClient } from \"./providers/client\";\n\nconst pluginTests = [\n {\n name: \"gateway_plugin_tests\",\n tests: [\n {\n name: \"gateway_test_api_key_validation\",\n fn: async (runtime: IAgentRuntime) => {\n const apiKey = getApiKeyOptional(runtime);\n if (!apiKey) {\n throw new Error(\n \"AI_GATEWAY_API_KEY, AIGATEWAY_API_KEY, or VERCEL_OIDC_TOKEN is not configured\"\n );\n }\n logger.info(\"[Gateway Test] API key is configured\");\n },\n },\n {\n name: \"gateway_test_api_connectivity\",\n fn: async (runtime: IAgentRuntime) => {\n const baseUrl = getBaseUrl(runtime);\n const apiKey = getApiKeyOptional(runtime);\n\n if (!apiKey) {\n throw new Error(\"API key is required for connectivity test\");\n }\n\n const response = await fetch(`${baseUrl}/models`, {\n headers: { Authorization: `Bearer ${apiKey}` },\n });\n\n if (!response.ok) {\n throw new Error(\n `API connectivity test failed: ${response.status} ${response.statusText}`\n );\n }\n\n const data = (await response.json()) as { data?: Array<Record<string, never>> };\n logger.info(`[Gateway Test] API connected. ${data.data?.length ?? 0} models available.`);\n },\n },\n {\n name: \"gateway_test_text_small\",\n fn: async (runtime: IAgentRuntime) => {\n const text = await runtime.useModel(ModelType.TEXT_SMALL, {\n prompt: \"Say hello in exactly 5 words.\",\n });\n\n if (typeof text !== \"string\" || text.length === 0) {\n throw new Error(\"TEXT_SMALL should return non-empty string\");\n }\n\n logger.info(`[Gateway Test] TEXT_SMALL generated: \"${text.substring(0, 50)}...\"`);\n },\n },\n {\n name: \"gateway_test_text_large\",\n fn: async (runtime: IAgentRuntime) => {\n const text = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt: \"Explain quantum computing in 2 sentences.\",\n });\n\n if (typeof text !== \"string\" || text.length === 0) {\n throw new Error(\"TEXT_LARGE should return non-empty string\");\n }\n\n logger.info(`[Gateway Test] TEXT_LARGE generated: \"${text.substring(0, 50)}...\"`);\n },\n },\n {\n name: \"gateway_test_text_embedding\",\n fn: async (runtime: IAgentRuntime) => {\n const embedding = await runtime.useModel(ModelType.TEXT_EMBEDDING, {\n text: \"Hello, world!\",\n });\n\n if (!Array.isArray(embedding) || embedding.length === 0) {\n throw new Error(\"Embedding should return a non-empty array\");\n }\n\n logger.info(`[Gateway Test] Generated embedding with ${embedding.length} dimensions`);\n },\n },\n {\n name: \"gateway_test_object_generation\",\n fn: async (runtime: IAgentRuntime) => {\n const result = await runtime.useModel(ModelType.OBJECT_SMALL, {\n prompt:\n \"Return a JSON object with exactly these fields: name (string), age (number), active (boolean)\",\n });\n\n if (!result || typeof result !== \"object\") {\n throw new Error(\"Object generation should return an object\");\n }\n\n logger.info(\n `[Gateway Test] Object generated: ${JSON.stringify(result).substring(0, 100)}`\n );\n },\n },\n {\n name: \"gateway_test_streaming\",\n fn: async (runtime: IAgentRuntime) => {\n const chunks: string[] = [];\n\n const result = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt: \"Count from 1 to 5, one number per line.\",\n stream: true,\n onStreamChunk: (chunk: string) => {\n chunks.push(chunk);\n },\n });\n\n if (typeof result !== \"string\" || result.length === 0) {\n throw new Error(\"Streaming should return non-empty result\");\n }\n\n if (chunks.length === 0) {\n throw new Error(\"No streaming chunks received\");\n }\n\n logger.info(`[Gateway Test] Streaming test: ${chunks.length} chunks received`);\n },\n },\n ] as TestCase[],\n },\n] as TestSuite[];\n\ntype ProcessEnvLike = Record<string, string | undefined>;\n\nfunction getProcessEnv(): ProcessEnvLike {\n if (typeof process === \"undefined\") {\n return {};\n }\n return process.env as ProcessEnvLike;\n}\n\nconst env = getProcessEnv();\n\nexport const gatewayPlugin: Plugin = {\n name: \"gateway\",\n description: \"Vercel AI Gateway integration for text, image, audio, and embedding models\",\n\n config: {\n AI_GATEWAY_API_KEY: env.AI_GATEWAY_API_KEY ?? null,\n AIGATEWAY_API_KEY: env.AIGATEWAY_API_KEY ?? null,\n VERCEL_OIDC_TOKEN: env.VERCEL_OIDC_TOKEN ?? null,\n AI_GATEWAY_BASE_URL: env.AI_GATEWAY_BASE_URL ?? null,\n AI_GATEWAY_SMALL_MODEL: env.AI_GATEWAY_SMALL_MODEL ?? null,\n AI_GATEWAY_LARGE_MODEL: env.AI_GATEWAY_LARGE_MODEL ?? null,\n AI_GATEWAY_EMBEDDING_MODEL: env.AI_GATEWAY_EMBEDDING_MODEL ?? null,\n AI_GATEWAY_EMBEDDING_DIMENSIONS: env.AI_GATEWAY_EMBEDDING_DIMENSIONS ?? null,\n AI_GATEWAY_IMAGE_MODEL: env.AI_GATEWAY_IMAGE_MODEL ?? null,\n },\n\n async init(config: Record<string, string>, runtime: IAgentRuntime): Promise<void> {\n initializeGateway(config as GatewayPluginConfig, runtime);\n },\n\n models: {\n [ModelType.TEXT_EMBEDDING]: async (\n runtime: IAgentRuntime,\n params: TextEmbeddingParams | string | null\n ): Promise<number[]> => {\n return handleTextEmbedding(runtime, params);\n },\n\n [ModelType.TEXT_SMALL]: async (\n runtime: IAgentRuntime,\n params: GenerateTextParams\n ): Promise<string> => {\n return handleTextSmall(runtime, params);\n },\n\n [ModelType.TEXT_LARGE]: async (\n runtime: IAgentRuntime,\n params: GenerateTextParams\n ): Promise<string> => {\n return handleTextLarge(runtime, params);\n },\n\n [ModelType.IMAGE]: async (\n runtime: IAgentRuntime,\n params: ImageGenerationParams\n ): Promise<ImageGenerationResult[]> => {\n return handleImageGeneration(runtime, params);\n },\n\n [ModelType.IMAGE_DESCRIPTION]: async (\n runtime: IAgentRuntime,\n params: ImageDescriptionParams | string\n ): Promise<ImageDescriptionResult> => {\n return handleImageDescription(runtime, params);\n },\n\n [ModelType.OBJECT_SMALL]: async (\n runtime: IAgentRuntime,\n params: ObjectGenerationParams\n ): Promise<Record<string, JsonValue>> => {\n return handleObjectSmall(runtime, params);\n },\n\n [ModelType.OBJECT_LARGE]: async (\n runtime: IAgentRuntime,\n params: ObjectGenerationParams\n ): Promise<Record<string, JsonValue>> => {\n return handleObjectLarge(runtime, params);\n },\n },\n\n tests: pluginTests,\n};\n\nexport default gatewayPlugin;\n", "import type { IAgentRuntime } from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport { getApiKeyOptional } from \"./utils/config\";\n\nexport interface GatewayPluginConfig {\n AI_GATEWAY_API_KEY?: string;\n AIGATEWAY_API_KEY?: string;\n VERCEL_OIDC_TOKEN?: string;\n AI_GATEWAY_BASE_URL?: string;\n AI_GATEWAY_SMALL_MODEL?: string;\n AI_GATEWAY_LARGE_MODEL?: string;\n AI_GATEWAY_EMBEDDING_MODEL?: string;\n AI_GATEWAY_EMBEDDING_DIMENSIONS?: string;\n AI_GATEWAY_IMAGE_MODEL?: string;\n AI_GATEWAY_TIMEOUT_MS?: string;\n}\n\nexport function initializeGateway(\n _config: GatewayPluginConfig | undefined,\n runtime: IAgentRuntime\n): void {\n const apiKey = getApiKeyOptional(runtime);\n\n if (apiKey) {\n logger.info(\"[Gateway] Vercel AI Gateway plugin initialized\");\n } else {\n logger.warn(\n \"[Gateway] No API key found. Set AI_GATEWAY_API_KEY, AIGATEWAY_API_KEY, or VERCEL_OIDC_TOKEN.\"\n );\n }\n}\n", "export interface GatewayConfig {\n apiKey: string;\n baseUrl: string;\n smallModel: string;\n largeModel: string;\n embeddingModel: string;\n embeddingDimensions: number;\n imageModel: string;\n timeoutMs: number;\n}\n\nexport const DEFAULT_CONFIG: Omit<GatewayConfig, \"apiKey\"> = {\n baseUrl: \"https://ai-gateway.vercel.sh/v1\",\n smallModel: \"gpt-5-mini\",\n largeModel: \"gpt-5\",\n embeddingModel: \"text-embedding-3-small\",\n embeddingDimensions: 1536,\n imageModel: \"dall-e-3\",\n timeoutMs: 60000,\n};\n\nexport interface TextGenerationParams {\n prompt: string;\n system?: string;\n model?: string;\n temperature?: number;\n maxTokens?: number;\n frequencyPenalty?: number;\n presencePenalty?: number;\n stopSequences?: string[];\n stream?: boolean;\n onStreamChunk?: (chunk: string) => void;\n}\n\nexport interface EmbeddingParams {\n text: string;\n model?: string;\n dimensions?: number;\n}\n\nexport interface ObjectGenerationParams {\n prompt: string;\n schema?: Record<string, unknown>;\n model?: string;\n temperature?: number;\n maxTokens?: number;\n}\n\nexport type ImageSize = \"256x256\" | \"512x512\" | \"1024x1024\" | \"1792x1024\" | \"1024x1792\";\n\nexport type ImageQuality = \"standard\" | \"hd\";\n\nexport type ImageStyle = \"vivid\" | \"natural\";\n\nexport interface ImageGenerationParams {\n prompt: string;\n model?: string;\n n?: number;\n size?: ImageSize;\n quality?: ImageQuality;\n style?: ImageStyle;\n}\n\nexport interface ImageDescriptionParams {\n imageUrl: string;\n prompt?: string;\n model?: string;\n maxTokens?: number;\n}\n\nexport interface ImageGenerationResult {\n url: string;\n revisedPrompt?: string;\n}\n\nexport interface ImageDescriptionResult {\n title: string;\n description: string;\n}\n\nexport interface TokenUsage {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n}\n\nexport type MessageRole = \"system\" | \"user\" | \"assistant\";\n\nexport interface ChatMessage {\n role: MessageRole;\n content: string | null;\n}\n\nexport interface ChatCompletionChoice {\n index: number;\n message: ChatMessage;\n finishReason: string | null;\n}\n\nexport interface ChatCompletionResponse {\n id: string;\n object: \"chat.completion\";\n created: number;\n model: string;\n choices: ChatCompletionChoice[];\n usage?: TokenUsage;\n}\n\nexport interface EmbeddingData {\n embedding: number[];\n index: number;\n}\n\nexport interface EmbeddingResponse {\n object: \"list\";\n data: EmbeddingData[];\n model: string;\n usage: TokenUsage;\n}\n\nexport interface ImageResponseData {\n url: string;\n revised_prompt?: string;\n}\n\nexport interface ImageGenerationResponse {\n created: number;\n data: ImageResponseData[];\n}\n\nexport class GatewayError extends Error {\n statusCode?: number;\n\n constructor(message: string, statusCode?: number) {\n super(message);\n this.name = \"GatewayError\";\n this.statusCode = statusCode;\n }\n}\n", "import type { IAgentRuntime } from \"@elizaos/core\";\nimport type { GatewayConfig } from \"../types\";\nimport { DEFAULT_CONFIG } from \"../types\";\n\nfunction getEnvValue(key: string): string | undefined {\n if (typeof process === \"undefined\") {\n return undefined;\n }\n const value = process.env[key];\n return value === undefined ? undefined : String(value);\n}\n\nexport function getSetting(runtime: IAgentRuntime | undefined, key: string): string | undefined {\n if (runtime) {\n const value = runtime.getSetting(key);\n if (value) return String(value);\n }\n return getEnvValue(key);\n}\n\nexport function getApiKey(runtime?: IAgentRuntime): string {\n const apiKey =\n getSetting(runtime, \"AI_GATEWAY_API_KEY\") ||\n getSetting(runtime, \"AIGATEWAY_API_KEY\") ||\n getSetting(runtime, \"VERCEL_OIDC_TOKEN\");\n\n if (!apiKey) {\n throw new Error(\"AI_GATEWAY_API_KEY, AIGATEWAY_API_KEY, or VERCEL_OIDC_TOKEN is required\");\n }\n\n return apiKey;\n}\n\nexport function getApiKeyOptional(runtime?: IAgentRuntime): string | undefined {\n return (\n getSetting(runtime, \"AI_GATEWAY_API_KEY\") ||\n getSetting(runtime, \"AIGATEWAY_API_KEY\") ||\n getSetting(runtime, \"VERCEL_OIDC_TOKEN\")\n );\n}\n\nexport function getBaseUrl(runtime?: IAgentRuntime): string {\n return getSetting(runtime, \"AI_GATEWAY_BASE_URL\") || DEFAULT_CONFIG.baseUrl;\n}\n\nexport function getSmallModel(runtime?: IAgentRuntime): string {\n return (\n getSetting(runtime, \"AI_GATEWAY_SMALL_MODEL\") ||\n getSetting(runtime, \"SMALL_MODEL\") ||\n DEFAULT_CONFIG.smallModel\n );\n}\n\nexport function getLargeModel(runtime?: IAgentRuntime): string {\n return (\n getSetting(runtime, \"AI_GATEWAY_LARGE_MODEL\") ||\n getSetting(runtime, \"LARGE_MODEL\") ||\n DEFAULT_CONFIG.largeModel\n );\n}\n\nexport function getEmbeddingModel(runtime?: IAgentRuntime): string {\n return getSetting(runtime, \"AI_GATEWAY_EMBEDDING_MODEL\") || DEFAULT_CONFIG.embeddingModel;\n}\n\nexport function getEmbeddingDimensions(runtime?: IAgentRuntime): number {\n const dims = getSetting(runtime, \"AI_GATEWAY_EMBEDDING_DIMENSIONS\");\n if (dims) {\n const parsed = parseInt(dims, 10);\n if (!Number.isNaN(parsed) && parsed > 0) return parsed;\n }\n return DEFAULT_CONFIG.embeddingDimensions;\n}\n\nexport function getImageModel(runtime?: IAgentRuntime): string {\n return getSetting(runtime, \"AI_GATEWAY_IMAGE_MODEL\") || DEFAULT_CONFIG.imageModel;\n}\n\nexport function getTimeoutMs(runtime?: IAgentRuntime): number {\n const timeout = getSetting(runtime, \"AI_GATEWAY_TIMEOUT_MS\");\n if (timeout) {\n const parsed = parseInt(timeout, 10);\n if (!Number.isNaN(parsed) && parsed > 0) return parsed;\n }\n return DEFAULT_CONFIG.timeoutMs;\n}\n\nexport function buildConfig(runtime?: IAgentRuntime): GatewayConfig {\n return {\n apiKey: getApiKey(runtime),\n baseUrl: getBaseUrl(runtime),\n smallModel: getSmallModel(runtime),\n largeModel: getLargeModel(runtime),\n embeddingModel: getEmbeddingModel(runtime),\n embeddingDimensions: getEmbeddingDimensions(runtime),\n imageModel: getImageModel(runtime),\n timeoutMs: getTimeoutMs(runtime),\n };\n}\n\nexport function getAuthHeader(runtime?: IAgentRuntime): Record<string, string> {\n const apiKey = getApiKey(runtime);\n return {\n Authorization: `Bearer ${apiKey}`,\n };\n}\n\nconst NO_TEMPERATURE_MODELS = new Set([\n \"o1\",\n \"o1-preview\",\n \"o1-mini\",\n \"o3\",\n \"o3-mini\",\n \"gpt-5\",\n \"gpt-5-mini\",\n]);\n\nexport function modelSupportsTemperature(model: string): boolean {\n const modelLower = model.toLowerCase();\n for (const noTempModel of NO_TEMPERATURE_MODELS) {\n if (modelLower.includes(noTempModel)) {\n return false;\n }\n }\n return true;\n}\n", "import type { IAgentRuntime, TextEmbeddingParams } from \"@elizaos/core\";\nimport { logger, MAX_EMBEDDING_TOKENS } from \"@elizaos/core\";\nimport { GatewayClient } from \"../providers/client\";\nimport { buildConfig, getEmbeddingDimensions, getEmbeddingModel } from \"../utils/config\";\n\nexport async function handleTextEmbedding(\n runtime: IAgentRuntime,\n params: TextEmbeddingParams | string | null\n): Promise<number[]> {\n const config = buildConfig(runtime);\n const client = new GatewayClient(config);\n\n let text: string;\n if (params === null) {\n text = \"test\";\n } else if (typeof params === \"string\") {\n text = params;\n } else {\n text = params.text;\n }\n\n // Truncate to stay within embedding model token limits\n const maxChars = MAX_EMBEDDING_TOKENS * 4; // ~4 chars per token\n if (text.length > maxChars) {\n logger.warn(\n `[Vercel] Embedding input too long (~${Math.ceil(text.length / 4)} tokens), truncating to ~${MAX_EMBEDDING_TOKENS} tokens`\n );\n text = text.slice(0, maxChars);\n }\n\n const model = getEmbeddingModel(runtime);\n const dimensions = getEmbeddingDimensions(runtime);\n\n return client.createEmbedding({\n text,\n model,\n dimensions,\n });\n}\n", "import type {\n ChatCompletionResponse,\n EmbeddingParams,\n EmbeddingResponse,\n GatewayConfig,\n ImageDescriptionParams,\n ImageDescriptionResult,\n ImageGenerationParams,\n ImageGenerationResponse,\n ImageGenerationResult,\n TextGenerationParams,\n} from \"../types\";\nimport { GatewayError } from \"../types\";\nimport { modelSupportsTemperature } from \"../utils/config\";\n\nexport class GatewayClient {\n private readonly config: GatewayConfig;\n\n constructor(config: GatewayConfig) {\n this.config = config;\n }\n\n private url(endpoint: string): string {\n const base = this.config.baseUrl.replace(/\\/$/, \"\");\n return `${base}${endpoint}`;\n }\n\n private async request<T>(endpoint: string, options: RequestInit): Promise<T> {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.config.timeoutMs);\n\n try {\n const response = await fetch(this.url(endpoint), {\n ...options,\n signal: controller.signal,\n headers: {\n Authorization: `Bearer ${this.config.apiKey}`,\n \"Content-Type\": \"application/json\",\n ...options.headers,\n },\n });\n\n if (!response.ok) {\n let message: string;\n try {\n const errorData = (await response.json()) as {\n error?: { message?: string };\n };\n message = errorData?.error?.message || response.statusText;\n } catch {\n message = response.statusText;\n }\n throw new GatewayError(\n `Gateway API error (${response.status}): ${message}`,\n response.status\n );\n }\n\n return (await response.json()) as T;\n } catch (error) {\n if (error instanceof GatewayError) throw error;\n if (error instanceof Error && error.name === \"AbortError\") {\n throw new GatewayError(\"Request timeout\");\n }\n throw new GatewayError(\n `Network error: ${error instanceof Error ? error.message : \"Unknown error\"}`\n );\n } finally {\n clearTimeout(timeoutId);\n }\n }\n\n async generateText(params: TextGenerationParams): Promise<string> {\n const model = params.model || this.config.largeModel;\n\n const messages: Array<{ role: string; content: string }> = [];\n if (params.system) {\n messages.push({ role: \"system\", content: params.system });\n }\n messages.push({ role: \"user\", content: params.prompt });\n\n const body: Record<\n string,\n string | number | boolean | string[] | Array<{ role: string; content: string }>\n > = {\n model,\n messages,\n };\n\n if (modelSupportsTemperature(model)) {\n if (params.temperature !== undefined) {\n body.temperature = params.temperature;\n }\n if (params.frequencyPenalty !== undefined) {\n body.frequency_penalty = params.frequencyPenalty;\n }\n if (params.presencePenalty !== undefined) {\n body.presence_penalty = params.presencePenalty;\n }\n if (params.stopSequences !== undefined) {\n body.stop = params.stopSequences;\n }\n if (params.maxTokens !== undefined) {\n body.max_tokens = params.maxTokens;\n }\n } else {\n if (params.maxTokens !== undefined) {\n body.max_completion_tokens = params.maxTokens;\n }\n }\n\n const response = await this.request<ChatCompletionResponse>(\"/chat/completions\", {\n method: \"POST\",\n body: JSON.stringify(body),\n });\n\n if (!response.choices || response.choices.length === 0) {\n throw new GatewayError(\"API returned no choices\");\n }\n\n const content = response.choices[0].message.content;\n if (content === null) {\n throw new GatewayError(\"API returned empty content\");\n }\n\n return content;\n }\n\n async *streamText(params: TextGenerationParams): AsyncGenerator<string, void, void> {\n const model = params.model || this.config.largeModel;\n\n const messages: Array<{ role: string; content: string }> = [];\n if (params.system) {\n messages.push({ role: \"system\", content: params.system });\n }\n messages.push({ role: \"user\", content: params.prompt });\n\n const body: Record<\n string,\n string | number | boolean | Array<{ role: string; content: string }>\n > = {\n model,\n messages,\n stream: true,\n };\n\n if (modelSupportsTemperature(model)) {\n if (params.temperature !== undefined) {\n body.temperature = params.temperature;\n }\n if (params.maxTokens !== undefined) {\n body.max_tokens = params.maxTokens;\n }\n } else {\n if (params.maxTokens !== undefined) {\n body.max_completion_tokens = params.maxTokens;\n }\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.config.timeoutMs);\n\n try {\n const response = await fetch(this.url(\"/chat/completions\"), {\n method: \"POST\",\n signal: controller.signal,\n headers: {\n Authorization: `Bearer ${this.config.apiKey}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n\n if (!response.ok) {\n throw new GatewayError(\n `Gateway API error (${response.status}): ${response.statusText}`,\n response.status\n );\n }\n\n const reader = response.body?.getReader();\n if (!reader) {\n throw new GatewayError(\"No response body\");\n }\n\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() || \"\";\n\n for (const line of lines) {\n if (!line.startsWith(\"data: \")) continue;\n const data = line.slice(6);\n if (data === \"[DONE]\") return;\n\n try {\n const chunk = JSON.parse(data) as {\n choices?: Array<{ delta?: { content?: string } }>;\n };\n const content = chunk.choices?.[0]?.delta?.content;\n if (content) {\n yield content;\n }\n } catch {}\n }\n }\n } finally {\n clearTimeout(timeoutId);\n }\n }\n\n async createEmbedding(params: EmbeddingParams): Promise<number[]> {\n const model = params.model || this.config.embeddingModel;\n const dimensions = params.dimensions || this.config.embeddingDimensions;\n\n const body: Record<string, unknown> = {\n model,\n input: params.text,\n };\n\n if (dimensions) {\n body.dimensions = dimensions;\n }\n\n const response = await this.request<EmbeddingResponse>(\"/embeddings\", {\n method: \"POST\",\n body: JSON.stringify(body),\n });\n\n if (!response.data || response.data.length === 0) {\n throw new GatewayError(\"API returned empty embedding data\");\n }\n\n return response.data[0].embedding;\n }\n\n // =========================================================================\n // Image Generation\n // =========================================================================\n\n /**\n * Generate images.\n */\n async generateImage(params: ImageGenerationParams): Promise<ImageGenerationResult[]> {\n const model = params.model || this.config.imageModel;\n\n const body: Record<string, string | number | undefined> = {\n model,\n prompt: params.prompt,\n };\n\n if (params.n !== undefined) body.n = params.n;\n if (params.size !== undefined) body.size = params.size;\n if (params.quality !== undefined) body.quality = params.quality;\n if (params.style !== undefined) body.style = params.style;\n\n const response = await this.request<ImageGenerationResponse>(\"/images/generations\", {\n method: \"POST\",\n body: JSON.stringify(body),\n });\n\n return response.data.map((item) => ({\n url: item.url,\n revisedPrompt: item.revised_prompt,\n }));\n }\n\n // =========================================================================\n // Image Description\n // =========================================================================\n\n /**\n * Describe/analyze an image using vision capabilities.\n */\n async describeImage(params: ImageDescriptionParams): Promise<ImageDescriptionResult> {\n const model = params.model || \"gpt-5-mini\";\n const prompt =\n params.prompt || \"Please analyze this image and provide a title and detailed description.\";\n const maxTokens = params.maxTokens || 8192;\n\n const body = {\n model,\n messages: [\n {\n role: \"user\",\n content: [\n { type: \"text\", text: prompt },\n { type: \"image_url\", image_url: { url: params.imageUrl } },\n ],\n },\n ],\n max_tokens: maxTokens,\n };\n\n const response = await this.request<ChatCompletionResponse>(\"/chat/completions\", {\n method: \"POST\",\n body: JSON.stringify(body),\n });\n\n if (!response.choices || response.choices.length === 0) {\n throw new GatewayError(\"API returned no choices for image description\");\n }\n\n const content = response.choices[0].message.content;\n if (content === null) {\n throw new GatewayError(\"API returned empty image description\");\n }\n\n let title = \"Image Analysis\";\n let description = content;\n\n const titleMatch = /title[:\\s]+(.+?)(?:\\n|$)/i.exec(content);\n if (titleMatch) {\n title = titleMatch[1].trim();\n description = content.replace(/title[:\\s]+.+?(?:\\n|$)/i, \"\").trim();\n }\n\n return { title, description };\n }\n\n async generateObject(params: {\n prompt: string;\n model?: string;\n temperature?: number;\n }): Promise<Record<string, unknown>> {\n const model = params.model || this.config.smallModel;\n const prompt = `Respond with only valid JSON. ${params.prompt}`;\n\n const response = await this.generateText({\n prompt,\n model,\n temperature: params.temperature,\n });\n\n let cleaned = response.trim();\n if (cleaned.startsWith(\"```json\")) {\n cleaned = cleaned.slice(7);\n }\n if (cleaned.startsWith(\"```\")) {\n cleaned = cleaned.slice(3);\n }\n if (cleaned.endsWith(\"```\")) {\n cleaned = cleaned.slice(0, -3);\n }\n\n try {\n return JSON.parse(cleaned.trim()) as Record<string, unknown>;\n } catch {\n throw new GatewayError(`Failed to parse JSON response: ${cleaned}`);\n }\n }\n}\n", "import type {\n ImageDescriptionParams as CoreImageDescParams,\n ImageGenerationParams as CoreImageParams,\n IAgentRuntime,\n} from \"@elizaos/core\";\nimport { GatewayClient } from \"../providers/client\";\nimport type {\n ImageDescriptionResult,\n ImageGenerationResult,\n ImageQuality,\n ImageSize,\n ImageStyle,\n} from \"../types\";\nimport { buildConfig, getImageModel } from \"../utils/config\";\n\nexport async function handleImageGeneration(\n runtime: IAgentRuntime,\n params: CoreImageParams\n): Promise<ImageGenerationResult[]> {\n const config = buildConfig(runtime);\n const client = new GatewayClient(config);\n\n const model = getImageModel(runtime);\n\n const extendedParams = params as { quality?: string; style?: string };\n return client.generateImage({\n prompt: params.prompt,\n model,\n n: params.count,\n size: params.size as ImageSize | undefined,\n quality: extendedParams.quality as ImageQuality | undefined,\n style: extendedParams.style as ImageStyle | undefined,\n });\n}\n\nexport async function handleImageDescription(\n runtime: IAgentRuntime,\n params: CoreImageDescParams | string\n): Promise<ImageDescriptionResult> {\n const config = buildConfig(runtime);\n const client = new GatewayClient(config);\n\n let imageUrl: string;\n let prompt: string | undefined;\n\n if (typeof params === \"string\") {\n imageUrl = params;\n } else {\n imageUrl = params.imageUrl;\n prompt = params.prompt;\n }\n\n return client.describeImage({\n imageUrl,\n prompt,\n });\n}\n", "import type { IAgentRuntime, JsonValue, ObjectGenerationParams } from \"@elizaos/core\";\nimport { GatewayClient } from \"../providers/client\";\nimport { buildConfig, getLargeModel, getSmallModel } from \"../utils/config\";\n\nexport async function handleObjectSmall(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams\n): Promise<Record<string, JsonValue>> {\n const config = buildConfig(runtime);\n const client = new GatewayClient(config);\n\n const model = getSmallModel(runtime);\n\n return (await client.generateObject({\n prompt: params.prompt,\n model,\n temperature: params.temperature,\n })) as Record<string, JsonValue>;\n}\n\nexport async function handleObjectLarge(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams\n): Promise<Record<string, JsonValue>> {\n const config = buildConfig(runtime);\n const client = new GatewayClient(config);\n\n const model = getLargeModel(runtime);\n\n return (await client.generateObject({\n prompt: params.prompt,\n model,\n temperature: params.temperature,\n })) as Record<string, JsonValue>;\n}\n", "import type { GenerateTextParams, IAgentRuntime } from \"@elizaos/core\";\nimport { GatewayClient } from \"../providers/client\";\nimport { buildConfig, getLargeModel, getSmallModel } from \"../utils/config\";\n\nexport async function handleTextSmall(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string> {\n const config = buildConfig(runtime);\n const client = new GatewayClient(config);\n\n const model = getSmallModel(runtime);\n\n if (params.stream && params.onStreamChunk) {\n const chunks: string[] = [];\n for await (const chunk of client.streamText({\n prompt: params.prompt,\n system: runtime.character?.system,\n model,\n maxTokens: params.maxTokens,\n temperature: params.temperature,\n stopSequences: params.stopSequences,\n })) {\n chunks.push(chunk);\n params.onStreamChunk(chunk);\n }\n return chunks.join(\"\");\n }\n\n return client.generateText({\n prompt: params.prompt,\n system: runtime.character?.system,\n model,\n maxTokens: params.maxTokens,\n temperature: params.temperature,\n frequencyPenalty: params.frequencyPenalty,\n presencePenalty: params.presencePenalty,\n stopSequences: params.stopSequences,\n });\n}\n\n/**\n * Handle TEXT_LARGE model requests.\n */\nexport async function handleTextLarge(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string> {\n const config = buildConfig(runtime);\n const client = new GatewayClient(config);\n\n const model = getLargeModel(runtime);\n\n if (params.stream && params.onStreamChunk) {\n const chunks: string[] = [];\n for await (const chunk of client.streamText({\n prompt: params.prompt,\n system: runtime.character?.system,\n model,\n maxTokens: params.maxTokens,\n temperature: params.temperature,\n stopSequences: params.stopSequences,\n })) {\n chunks.push(chunk);\n params.onStreamChunk(chunk);\n }\n return chunks.join(\"\");\n }\n\n return client.generateText({\n prompt: params.prompt,\n system: runtime.character?.system,\n model,\n maxTokens: params.maxTokens,\n temperature: params.temperature,\n frequencyPenalty: params.frequencyPenalty,\n presencePenalty: params.presencePenalty,\n stopSequences: params.stopSequences,\n });\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["logger", "logger", "logger", "logger"]
|
|
7
7
|
}
|
|
@@ -26,7 +26,7 @@ __export(index_browser_exports, {
|
|
|
26
26
|
module.exports = __toCommonJS(index_browser_exports);
|
|
27
27
|
|
|
28
28
|
// index.ts
|
|
29
|
-
var
|
|
29
|
+
var import_core3 = require("@elizaos/core");
|
|
30
30
|
|
|
31
31
|
// init.ts
|
|
32
32
|
var import_core = require("@elizaos/core");
|
|
@@ -149,6 +149,9 @@ function initializeGateway(_config, runtime) {
|
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
+
// models/embedding.ts
|
|
153
|
+
var import_core2 = require("@elizaos/core");
|
|
154
|
+
|
|
152
155
|
// providers/client.ts
|
|
153
156
|
var GatewayClient = class {
|
|
154
157
|
config;
|
|
@@ -440,6 +443,13 @@ async function handleTextEmbedding(runtime, params) {
|
|
|
440
443
|
} else {
|
|
441
444
|
text = params.text;
|
|
442
445
|
}
|
|
446
|
+
const maxChars = import_core2.MAX_EMBEDDING_TOKENS * 4;
|
|
447
|
+
if (text.length > maxChars) {
|
|
448
|
+
import_core2.logger.warn(
|
|
449
|
+
`[Vercel] Embedding input too long (~${Math.ceil(text.length / 4)} tokens), truncating to ~${import_core2.MAX_EMBEDDING_TOKENS} tokens`
|
|
450
|
+
);
|
|
451
|
+
text = text.slice(0, maxChars);
|
|
452
|
+
}
|
|
443
453
|
const model = getEmbeddingModel(runtime);
|
|
444
454
|
const dimensions = getEmbeddingDimensions(runtime);
|
|
445
455
|
return client.createEmbedding({
|
|
@@ -579,7 +589,7 @@ var pluginTests = [
|
|
|
579
589
|
"AI_GATEWAY_API_KEY, AIGATEWAY_API_KEY, or VERCEL_OIDC_TOKEN is not configured"
|
|
580
590
|
);
|
|
581
591
|
}
|
|
582
|
-
|
|
592
|
+
import_core3.logger.info("[Gateway Test] API key is configured");
|
|
583
593
|
}
|
|
584
594
|
},
|
|
585
595
|
{
|
|
@@ -599,55 +609,55 @@ var pluginTests = [
|
|
|
599
609
|
);
|
|
600
610
|
}
|
|
601
611
|
const data = await response.json();
|
|
602
|
-
|
|
612
|
+
import_core3.logger.info(`[Gateway Test] API connected. ${data.data?.length ?? 0} models available.`);
|
|
603
613
|
}
|
|
604
614
|
},
|
|
605
615
|
{
|
|
606
616
|
name: "gateway_test_text_small",
|
|
607
617
|
fn: async (runtime) => {
|
|
608
|
-
const text = await runtime.useModel(
|
|
618
|
+
const text = await runtime.useModel(import_core3.ModelType.TEXT_SMALL, {
|
|
609
619
|
prompt: "Say hello in exactly 5 words."
|
|
610
620
|
});
|
|
611
621
|
if (typeof text !== "string" || text.length === 0) {
|
|
612
622
|
throw new Error("TEXT_SMALL should return non-empty string");
|
|
613
623
|
}
|
|
614
|
-
|
|
624
|
+
import_core3.logger.info(`[Gateway Test] TEXT_SMALL generated: "${text.substring(0, 50)}..."`);
|
|
615
625
|
}
|
|
616
626
|
},
|
|
617
627
|
{
|
|
618
628
|
name: "gateway_test_text_large",
|
|
619
629
|
fn: async (runtime) => {
|
|
620
|
-
const text = await runtime.useModel(
|
|
630
|
+
const text = await runtime.useModel(import_core3.ModelType.TEXT_LARGE, {
|
|
621
631
|
prompt: "Explain quantum computing in 2 sentences."
|
|
622
632
|
});
|
|
623
633
|
if (typeof text !== "string" || text.length === 0) {
|
|
624
634
|
throw new Error("TEXT_LARGE should return non-empty string");
|
|
625
635
|
}
|
|
626
|
-
|
|
636
|
+
import_core3.logger.info(`[Gateway Test] TEXT_LARGE generated: "${text.substring(0, 50)}..."`);
|
|
627
637
|
}
|
|
628
638
|
},
|
|
629
639
|
{
|
|
630
640
|
name: "gateway_test_text_embedding",
|
|
631
641
|
fn: async (runtime) => {
|
|
632
|
-
const embedding = await runtime.useModel(
|
|
642
|
+
const embedding = await runtime.useModel(import_core3.ModelType.TEXT_EMBEDDING, {
|
|
633
643
|
text: "Hello, world!"
|
|
634
644
|
});
|
|
635
645
|
if (!Array.isArray(embedding) || embedding.length === 0) {
|
|
636
646
|
throw new Error("Embedding should return a non-empty array");
|
|
637
647
|
}
|
|
638
|
-
|
|
648
|
+
import_core3.logger.info(`[Gateway Test] Generated embedding with ${embedding.length} dimensions`);
|
|
639
649
|
}
|
|
640
650
|
},
|
|
641
651
|
{
|
|
642
652
|
name: "gateway_test_object_generation",
|
|
643
653
|
fn: async (runtime) => {
|
|
644
|
-
const result = await runtime.useModel(
|
|
654
|
+
const result = await runtime.useModel(import_core3.ModelType.OBJECT_SMALL, {
|
|
645
655
|
prompt: "Return a JSON object with exactly these fields: name (string), age (number), active (boolean)"
|
|
646
656
|
});
|
|
647
657
|
if (!result || typeof result !== "object") {
|
|
648
658
|
throw new Error("Object generation should return an object");
|
|
649
659
|
}
|
|
650
|
-
|
|
660
|
+
import_core3.logger.info(
|
|
651
661
|
`[Gateway Test] Object generated: ${JSON.stringify(result).substring(0, 100)}`
|
|
652
662
|
);
|
|
653
663
|
}
|
|
@@ -656,7 +666,7 @@ var pluginTests = [
|
|
|
656
666
|
name: "gateway_test_streaming",
|
|
657
667
|
fn: async (runtime) => {
|
|
658
668
|
const chunks = [];
|
|
659
|
-
const result = await runtime.useModel(
|
|
669
|
+
const result = await runtime.useModel(import_core3.ModelType.TEXT_LARGE, {
|
|
660
670
|
prompt: "Count from 1 to 5, one number per line.",
|
|
661
671
|
stream: true,
|
|
662
672
|
onStreamChunk: (chunk) => {
|
|
@@ -669,7 +679,7 @@ var pluginTests = [
|
|
|
669
679
|
if (chunks.length === 0) {
|
|
670
680
|
throw new Error("No streaming chunks received");
|
|
671
681
|
}
|
|
672
|
-
|
|
682
|
+
import_core3.logger.info(`[Gateway Test] Streaming test: ${chunks.length} chunks received`);
|
|
673
683
|
}
|
|
674
684
|
}
|
|
675
685
|
]
|
|
@@ -700,25 +710,25 @@ var gatewayPlugin = {
|
|
|
700
710
|
initializeGateway(config, runtime);
|
|
701
711
|
},
|
|
702
712
|
models: {
|
|
703
|
-
[
|
|
713
|
+
[import_core3.ModelType.TEXT_EMBEDDING]: async (runtime, params) => {
|
|
704
714
|
return handleTextEmbedding(runtime, params);
|
|
705
715
|
},
|
|
706
|
-
[
|
|
716
|
+
[import_core3.ModelType.TEXT_SMALL]: async (runtime, params) => {
|
|
707
717
|
return handleTextSmall(runtime, params);
|
|
708
718
|
},
|
|
709
|
-
[
|
|
719
|
+
[import_core3.ModelType.TEXT_LARGE]: async (runtime, params) => {
|
|
710
720
|
return handleTextLarge(runtime, params);
|
|
711
721
|
},
|
|
712
|
-
[
|
|
722
|
+
[import_core3.ModelType.IMAGE]: async (runtime, params) => {
|
|
713
723
|
return handleImageGeneration(runtime, params);
|
|
714
724
|
},
|
|
715
|
-
[
|
|
725
|
+
[import_core3.ModelType.IMAGE_DESCRIPTION]: async (runtime, params) => {
|
|
716
726
|
return handleImageDescription(runtime, params);
|
|
717
727
|
},
|
|
718
|
-
[
|
|
728
|
+
[import_core3.ModelType.OBJECT_SMALL]: async (runtime, params) => {
|
|
719
729
|
return handleObjectSmall(runtime, params);
|
|
720
730
|
},
|
|
721
|
-
[
|
|
731
|
+
[import_core3.ModelType.OBJECT_LARGE]: async (runtime, params) => {
|
|
722
732
|
return handleObjectLarge(runtime, params);
|
|
723
733
|
}
|
|
724
734
|
},
|