@elizaos/plugin-openrouter 1.5.17 → 2.0.0-alpha.2

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.
@@ -1,21 +1,19 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["node:path", "../../src/index.ts", "../../src/init.ts", "../../src/utils/config.ts", "../../src/models/text.ts", "../../src/providers/openrouter.ts", "../../src/utils/events.ts", "../../src/models/object.ts", "../../src/utils/helpers.ts", "../../src/models/image.ts", "../../src/utils/image-storage.ts", "../../src/models/embedding.ts"],
3
+ "sources": ["../../plugin.ts", "../../init.ts", "../../utils/config.ts", "../../models/embedding.ts", "../../utils/events.ts", "../../models/image.ts", "../../providers/openrouter.ts", "../../models/object.ts", "../../utils/helpers.ts", "../../models/text.ts"],
4
4
  "sourcesContent": [
5
- "function assertPath(path){if(typeof path!==\"string\")throw TypeError(\"Path must be a string. Received \"+JSON.stringify(path))}function normalizeStringPosix(path,allowAboveRoot){var res=\"\",lastSegmentLength=0,lastSlash=-1,dots=0,code;for(var i=0;i<=path.length;++i){if(i<path.length)code=path.charCodeAt(i);else if(code===47)break;else code=47;if(code===47){if(lastSlash===i-1||dots===1);else if(lastSlash!==i-1&&dots===2){if(res.length<2||lastSegmentLength!==2||res.charCodeAt(res.length-1)!==46||res.charCodeAt(res.length-2)!==46){if(res.length>2){var lastSlashIndex=res.lastIndexOf(\"/\");if(lastSlashIndex!==res.length-1){if(lastSlashIndex===-1)res=\"\",lastSegmentLength=0;else res=res.slice(0,lastSlashIndex),lastSegmentLength=res.length-1-res.lastIndexOf(\"/\");lastSlash=i,dots=0;continue}}else if(res.length===2||res.length===1){res=\"\",lastSegmentLength=0,lastSlash=i,dots=0;continue}}if(allowAboveRoot){if(res.length>0)res+=\"/..\";else res=\"..\";lastSegmentLength=2}}else{if(res.length>0)res+=\"/\"+path.slice(lastSlash+1,i);else res=path.slice(lastSlash+1,i);lastSegmentLength=i-lastSlash-1}lastSlash=i,dots=0}else if(code===46&&dots!==-1)++dots;else dots=-1}return res}function _format(sep,pathObject){var dir=pathObject.dir||pathObject.root,base=pathObject.base||(pathObject.name||\"\")+(pathObject.ext||\"\");if(!dir)return base;if(dir===pathObject.root)return dir+base;return dir+sep+base}function resolve(){var resolvedPath=\"\",resolvedAbsolute=!1,cwd;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path;if(i>=0)path=arguments[i];else{if(cwd===void 0)cwd=process.cwd();path=cwd}if(assertPath(path),path.length===0)continue;resolvedPath=path+\"/\"+resolvedPath,resolvedAbsolute=path.charCodeAt(0)===47}if(resolvedPath=normalizeStringPosix(resolvedPath,!resolvedAbsolute),resolvedAbsolute)if(resolvedPath.length>0)return\"/\"+resolvedPath;else return\"/\";else if(resolvedPath.length>0)return resolvedPath;else return\".\"}function normalize(path){if(assertPath(path),path.length===0)return\".\";var isAbsolute=path.charCodeAt(0)===47,trailingSeparator=path.charCodeAt(path.length-1)===47;if(path=normalizeStringPosix(path,!isAbsolute),path.length===0&&!isAbsolute)path=\".\";if(path.length>0&&trailingSeparator)path+=\"/\";if(isAbsolute)return\"/\"+path;return path}function isAbsolute(path){return assertPath(path),path.length>0&&path.charCodeAt(0)===47}function join(){if(arguments.length===0)return\".\";var joined;for(var i=0;i<arguments.length;++i){var arg=arguments[i];if(assertPath(arg),arg.length>0)if(joined===void 0)joined=arg;else joined+=\"/\"+arg}if(joined===void 0)return\".\";return normalize(joined)}function relative(from,to){if(assertPath(from),assertPath(to),from===to)return\"\";if(from=resolve(from),to=resolve(to),from===to)return\"\";var fromStart=1;for(;fromStart<from.length;++fromStart)if(from.charCodeAt(fromStart)!==47)break;var fromEnd=from.length,fromLen=fromEnd-fromStart,toStart=1;for(;toStart<to.length;++toStart)if(to.charCodeAt(toStart)!==47)break;var toEnd=to.length,toLen=toEnd-toStart,length=fromLen<toLen?fromLen:toLen,lastCommonSep=-1,i=0;for(;i<=length;++i){if(i===length){if(toLen>length){if(to.charCodeAt(toStart+i)===47)return to.slice(toStart+i+1);else if(i===0)return to.slice(toStart+i)}else if(fromLen>length){if(from.charCodeAt(fromStart+i)===47)lastCommonSep=i;else if(i===0)lastCommonSep=0}break}var fromCode=from.charCodeAt(fromStart+i),toCode=to.charCodeAt(toStart+i);if(fromCode!==toCode)break;else if(fromCode===47)lastCommonSep=i}var out=\"\";for(i=fromStart+lastCommonSep+1;i<=fromEnd;++i)if(i===fromEnd||from.charCodeAt(i)===47)if(out.length===0)out+=\"..\";else out+=\"/..\";if(out.length>0)return out+to.slice(toStart+lastCommonSep);else{if(toStart+=lastCommonSep,to.charCodeAt(toStart)===47)++toStart;return to.slice(toStart)}}function _makeLong(path){return path}function dirname(path){if(assertPath(path),path.length===0)return\".\";var code=path.charCodeAt(0),hasRoot=code===47,end=-1,matchedSlash=!0;for(var i=path.length-1;i>=1;--i)if(code=path.charCodeAt(i),code===47){if(!matchedSlash){end=i;break}}else matchedSlash=!1;if(end===-1)return hasRoot?\"/\":\".\";if(hasRoot&&end===1)return\"//\";return path.slice(0,end)}function basename(path,ext){if(ext!==void 0&&typeof ext!==\"string\")throw TypeError('\"ext\" argument must be a string');assertPath(path);var start=0,end=-1,matchedSlash=!0,i;if(ext!==void 0&&ext.length>0&&ext.length<=path.length){if(ext.length===path.length&&ext===path)return\"\";var extIdx=ext.length-1,firstNonSlashEnd=-1;for(i=path.length-1;i>=0;--i){var code=path.charCodeAt(i);if(code===47){if(!matchedSlash){start=i+1;break}}else{if(firstNonSlashEnd===-1)matchedSlash=!1,firstNonSlashEnd=i+1;if(extIdx>=0)if(code===ext.charCodeAt(extIdx)){if(--extIdx===-1)end=i}else extIdx=-1,end=firstNonSlashEnd}}if(start===end)end=firstNonSlashEnd;else if(end===-1)end=path.length;return path.slice(start,end)}else{for(i=path.length-1;i>=0;--i)if(path.charCodeAt(i)===47){if(!matchedSlash){start=i+1;break}}else if(end===-1)matchedSlash=!1,end=i+1;if(end===-1)return\"\";return path.slice(start,end)}}function extname(path){assertPath(path);var startDot=-1,startPart=0,end=-1,matchedSlash=!0,preDotState=0;for(var i=path.length-1;i>=0;--i){var code=path.charCodeAt(i);if(code===47){if(!matchedSlash){startPart=i+1;break}continue}if(end===-1)matchedSlash=!1,end=i+1;if(code===46){if(startDot===-1)startDot=i;else if(preDotState!==1)preDotState=1}else if(startDot!==-1)preDotState=-1}if(startDot===-1||end===-1||preDotState===0||preDotState===1&&startDot===end-1&&startDot===startPart+1)return\"\";return path.slice(startDot,end)}function format(pathObject){if(pathObject===null||typeof pathObject!==\"object\")throw TypeError('The \"pathObject\" argument must be of type Object. Received type '+typeof pathObject);return _format(\"/\",pathObject)}function parse(path){assertPath(path);var ret={root:\"\",dir:\"\",base:\"\",ext:\"\",name:\"\"};if(path.length===0)return ret;var code=path.charCodeAt(0),isAbsolute2=code===47,start;if(isAbsolute2)ret.root=\"/\",start=1;else start=0;var startDot=-1,startPart=0,end=-1,matchedSlash=!0,i=path.length-1,preDotState=0;for(;i>=start;--i){if(code=path.charCodeAt(i),code===47){if(!matchedSlash){startPart=i+1;break}continue}if(end===-1)matchedSlash=!1,end=i+1;if(code===46){if(startDot===-1)startDot=i;else if(preDotState!==1)preDotState=1}else if(startDot!==-1)preDotState=-1}if(startDot===-1||end===-1||preDotState===0||preDotState===1&&startDot===end-1&&startDot===startPart+1){if(end!==-1)if(startPart===0&&isAbsolute2)ret.base=ret.name=path.slice(1,end);else ret.base=ret.name=path.slice(startPart,end)}else{if(startPart===0&&isAbsolute2)ret.name=path.slice(1,startDot),ret.base=path.slice(1,end);else ret.name=path.slice(startPart,startDot),ret.base=path.slice(startPart,end);ret.ext=path.slice(startDot,end)}if(startPart>0)ret.dir=path.slice(0,startPart-1);else if(isAbsolute2)ret.dir=\"/\";return ret}var sep=\"/\",delimiter=\":\",posix=((p)=>(p.posix=p,p))({resolve,normalize,isAbsolute,join,relative,_makeLong,dirname,basename,extname,format,parse,sep,delimiter,win32:null,posix:null});var path_default=posix;export{sep,resolve,relative,posix,parse,normalize,join,isAbsolute,format,extname,dirname,delimiter,path_default as default,basename,_makeLong};",
6
- "import {\n ModelType,\n logger,\n type Plugin,\n type IAgentRuntime,\n type GenerateTextParams,\n type ObjectGenerationParams,\n type ImageDescriptionParams,\n type ImageGenerationParams,\n type TextEmbeddingParams,\n} from '@elizaos/core';\nimport { initializeOpenRouter } from './init';\nimport { handleTextSmall, handleTextLarge } from './models/text';\nimport { handleObjectSmall, handleObjectLarge } from './models/object';\nimport { handleImageDescription, handleImageGeneration } from './models/image';\nimport { handleTextEmbedding } from './models/embedding';\n\n/**\n * Defines the OpenRouter plugin with its name, description, and configuration options.\n * @type {Plugin}\n */\nexport const openrouterPlugin: Plugin = {\n name: 'openrouter',\n description: 'OpenRouter plugin',\n config: {\n OPENROUTER_API_KEY: process.env.OPENROUTER_API_KEY,\n OPENROUTER_BASE_URL: process.env.OPENROUTER_BASE_URL,\n OPENROUTER_SMALL_MODEL: process.env.OPENROUTER_SMALL_MODEL,\n OPENROUTER_LARGE_MODEL: process.env.OPENROUTER_LARGE_MODEL,\n OPENROUTER_IMAGE_MODEL: process.env.OPENROUTER_IMAGE_MODEL,\n OPENROUTER_IMAGE_GENERATION_MODEL: process.env.OPENROUTER_IMAGE_GENERATION_MODEL,\n OPENROUTER_EMBEDDING_MODEL: process.env.OPENROUTER_EMBEDDING_MODEL,\n OPENROUTER_EMBEDDING_DIMENSIONS: process.env.OPENROUTER_EMBEDDING_DIMENSIONS,\n OPENROUTER_AUTO_CLEANUP_IMAGES: process.env.OPENROUTER_AUTO_CLEANUP_IMAGES,\n SMALL_MODEL: process.env.SMALL_MODEL,\n LARGE_MODEL: process.env.LARGE_MODEL,\n IMAGE_MODEL: process.env.IMAGE_MODEL,\n IMAGE_GENERATION_MODEL: process.env.IMAGE_GENERATION_MODEL,\n EMBEDDING_MODEL: process.env.EMBEDDING_MODEL,\n EMBEDDING_DIMENSIONS: process.env.EMBEDDING_DIMENSIONS,\n },\n async init(config, runtime) {\n // Note: We intentionally don't await here because ElizaOS expects\n // the init method to return quickly. The initializeOpenRouter function\n // only performs synchronous validation and logging, so it's safe to\n // call without await. This prevents blocking the plugin initialization.\n initializeOpenRouter(config, runtime);\n },\n models: {\n [ModelType.TEXT_SMALL]: async (\n runtime: IAgentRuntime,\n params: GenerateTextParams\n ) => {\n return handleTextSmall(runtime, params);\n },\n [ModelType.TEXT_LARGE]: async (\n runtime: IAgentRuntime,\n params: GenerateTextParams\n ) => {\n return handleTextLarge(runtime, params);\n },\n [ModelType.OBJECT_SMALL]: async (runtime: IAgentRuntime, params: ObjectGenerationParams) => {\n return handleObjectSmall(runtime, params);\n },\n [ModelType.OBJECT_LARGE]: async (runtime: IAgentRuntime, params: ObjectGenerationParams) => {\n return handleObjectLarge(runtime, params);\n },\n [ModelType.IMAGE_DESCRIPTION]: async (\n runtime: IAgentRuntime,\n params: ImageDescriptionParams | string\n ) => {\n return handleImageDescription(runtime, params);\n },\n [ModelType.IMAGE]: async (runtime: IAgentRuntime, params: ImageGenerationParams) => {\n return handleImageGeneration(runtime, params);\n },\n [ModelType.TEXT_EMBEDDING]: async (\n runtime: IAgentRuntime,\n params: TextEmbeddingParams | string | null\n ) => {\n return handleTextEmbedding(runtime, params);\n },\n },\n tests: [\n {\n name: 'openrouter_plugin_tests',\n tests: [\n {\n name: 'openrouter_test_text_small',\n fn: async (runtime: IAgentRuntime) => {\n try {\n const text = await runtime.useModel(ModelType.TEXT_SMALL, {\n prompt: 'What is the nature of reality in 10 words?',\n });\n if (text.length === 0) {\n throw new Error('Failed to generate text');\n }\n logger.log({ text }, 'generated with test_text_small');\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error in test_text_small: ${message}`);\n throw error;\n }\n },\n },\n {\n name: 'openrouter_test_text_large',\n fn: async (runtime: IAgentRuntime) => {\n try {\n const text = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt: 'What is the nature of reality in 10 words?',\n });\n if (text.length === 0) {\n throw new Error('Failed to generate text');\n }\n logger.log({ text }, 'generated with test_text_large');\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error in test_text_large: ${message}`);\n throw error;\n }\n },\n },\n {\n name: 'openrouter_test_text_generation_large',\n fn: async (runtime: IAgentRuntime) => {\n try {\n const result = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt: 'Say hello in 5 words.',\n });\n if (!result || result.length === 0) {\n throw new Error('Text generation returned empty result');\n }\n logger.log({ result }, 'Text generation test completed');\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error in openrouter_test_text_generation_large: ${message}`);\n throw error;\n }\n },\n },\n {\n name: 'openrouter_test_streaming',\n fn: async (runtime: IAgentRuntime) => {\n try {\n const chunks: string[] = [];\n const result = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt: 'Count from 1 to 5.',\n onStreamChunk: (chunk: string) => {\n chunks.push(chunk);\n },\n });\n if (!result || result.length === 0) {\n throw new Error('Streaming returned empty result');\n }\n if (chunks.length === 0) {\n throw new Error('No streaming chunks received');\n }\n logger.log({ chunks: chunks.length, result: result.substring(0, 50) }, 'Streaming test completed');\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error in openrouter_test_streaming: ${message}`);\n throw error;\n }\n },\n },\n {\n name: 'openrouter_test_object_small',\n fn: async (runtime: IAgentRuntime) => {\n try {\n const result = await runtime.useModel(ModelType.OBJECT_SMALL, {\n prompt: 'Create a simple JSON object with a message field saying hello',\n schema: { type: 'object' },\n });\n logger.log({ result }, 'Generated object with test_object_small');\n if (!result || (typeof result === 'object' && 'error' in result)) {\n throw new Error('Failed to generate object');\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error in test_object_small: ${message}`);\n throw error;\n }\n },\n },\n {\n name: 'openrouter_test_text_embedding',\n fn: async (runtime: IAgentRuntime) => {\n try {\n const embedding = await runtime.useModel(ModelType.TEXT_EMBEDDING, {\n text: 'Hello, world!',\n });\n logger.log({ embedding }, 'embedding');\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error in test_text_embedding: ${message}`);\n throw error;\n }\n },\n },\n ],\n },\n ],\n};\n\nexport default openrouterPlugin;\n",
7
- "import { logger, type IAgentRuntime } from \"@elizaos/core\";\nimport { fetch } from \"undici\";\nimport { getApiKey, getBaseURL } from \"./utils/config\";\n\n/**\n * Initialize and validate OpenRouter configuration\n * Returns the exact same function that works inline\n */\nexport function initializeOpenRouter(_config: any, runtime: IAgentRuntime) {\n // do check in the background\n (async () => {\n try {\n const isBrowser =\n typeof globalThis !== \"undefined\" && (globalThis as any).document;\n // In browser, skip validation entirely to avoid exposing secrets\n if (isBrowser) {\n return;\n }\n if (!getApiKey(runtime)) {\n logger.warn(\n \"OPENROUTER_API_KEY is not set in environment - OpenRouter functionality will be limited\",\n );\n return;\n }\n try {\n const baseURL = getBaseURL(runtime);\n const response = await fetch(`${baseURL}/models`, {\n headers: { Authorization: `Bearer ${getApiKey(runtime)}` },\n });\n if (!response.ok) {\n logger.warn(\n `OpenRouter API key validation failed: ${response.statusText}`,\n );\n logger.warn(\n \"OpenRouter functionality will be limited until a valid API key is provided\",\n );\n } else {\n logger.log(\"OpenRouter API key validated successfully\");\n }\n } catch (fetchError: unknown) {\n const message =\n fetchError instanceof Error ? fetchError.message : String(fetchError);\n logger.warn(`Error validating OpenRouter API key: ${message}`);\n logger.warn(\n \"OpenRouter functionality will be limited until a valid API key is provided\",\n );\n }\n } catch (error: unknown) {\n const message =\n (error as { errors?: Array<{ message: string }> })?.errors\n ?.map((e) => e.message)\n .join(\", \") ||\n (error instanceof Error ? error.message : String(error));\n logger.warn(\n `OpenRouter plugin configuration issue: ${message} - You need to configure the OPENROUTER_API_KEY in your environment variables`,\n );\n }\n })();\n return;\n}\n",
8
- "import type { IAgentRuntime } from '@elizaos/core';\n\n/**\n * Retrieves a configuration setting from the runtime, falling back to environment variables or a default value if not found.\n *\n * @param key - The name of the setting to retrieve.\n * @param defaultValue - The value to return if the setting is not found in the runtime or environment.\n * @returns The resolved setting value, or {@link defaultValue} if not found.\n */\nexport function getSetting(\n runtime: IAgentRuntime,\n key: string,\n defaultValue?: string\n): string | undefined {\n const value = runtime.getSetting(key);\n // Convert to string if value is a number or boolean\n if (value !== undefined && value !== null) {\n return String(value);\n }\n return process.env[key] ?? defaultValue;\n}\n\n/**\n * Retrieves the OpenRouter API base URL from runtime settings, environment variables, or defaults.\n *\n * @returns The resolved base URL for OpenRouter API requests.\n */\nexport function getBaseURL(runtime: IAgentRuntime): string {\n const browserURL = getSetting(runtime, 'OPENROUTER_BROWSER_BASE_URL');\n if (typeof globalThis !== 'undefined' && (globalThis as any).document && browserURL) {\n return browserURL;\n }\n return (\n getSetting(runtime, 'OPENROUTER_BASE_URL', 'https://openrouter.ai/api/v1') ||\n 'https://openrouter.ai/api/v1'\n );\n}\n\n/**\n * Helper function to get the API key for OpenRouter\n *\n * @param runtime The runtime context\n * @returns The configured API key\n */\nexport function getApiKey(runtime: IAgentRuntime): string | undefined {\n return getSetting(runtime, 'OPENROUTER_API_KEY');\n}\n\n/**\n * Helper function to get the small model name with fallbacks\n *\n * @param runtime The runtime context\n * @returns The configured small model name\n */\nexport function getSmallModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, 'OPENROUTER_SMALL_MODEL') ??\n getSetting(runtime, 'SMALL_MODEL', 'google/gemini-2.0-flash-001') ??\n 'google/gemini-2.0-flash-001'\n );\n}\n\n/**\n * Helper function to get the large model name with fallbacks\n *\n * @param runtime The runtime context\n * @returns The configured large model name\n */\nexport function getLargeModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, 'OPENROUTER_LARGE_MODEL') ??\n getSetting(runtime, 'LARGE_MODEL', 'google/gemini-2.5-flash') ??\n 'google/gemini-2.5-flash'\n );\n}\n\n/**\n * Helper function to get the image model name with fallbacks\n *\n * @param runtime The runtime context\n * @returns The configured image model name\n */\nexport function getImageModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, 'OPENROUTER_IMAGE_MODEL') ??\n getSetting(runtime, 'IMAGE_MODEL', 'x-ai/grok-2-vision-1212') ??\n 'x-ai/grok-2-vision-1212'\n );\n}\n\n/**\n * Helper function to get the image generation model name with fallbacks\n *\n * @param runtime The runtime context\n * @returns The configured image generation model name\n */\nexport function getImageGenerationModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, 'OPENROUTER_IMAGE_GENERATION_MODEL') ??\n getSetting(runtime, 'IMAGE_GENERATION_MODEL', 'google/gemini-2.5-flash-image-preview') ??\n 'google/gemini-2.5-flash-image-preview'\n );\n}\n\n/**\n * Helper function to get the embedding model name with fallbacks\n *\n * @param runtime The runtime context\n * @returns The configured embedding model name\n */\nexport function getEmbeddingModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, 'OPENROUTER_EMBEDDING_MODEL') ??\n getSetting(runtime, 'EMBEDDING_MODEL', 'openai/text-embedding-3-small') ??\n 'openai/text-embedding-3-small'\n );\n}\n\n/**\n * Helper function to check if auto cleanup is enabled for generated images\n *\n * @param runtime The runtime context\n * @returns Whether to auto-cleanup generated images (default: false)\n */\nexport function shouldAutoCleanupImages(runtime: IAgentRuntime): boolean {\n const setting = getSetting(runtime, 'OPENROUTER_AUTO_CLEANUP_IMAGES', 'false');\n return setting?.toLowerCase() === 'true';\n}\n\n",
9
- "import type {\n GenerateTextParams,\n IAgentRuntime,\n TextStreamResult,\n} from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { generateText, streamText } from \"ai\";\n\nimport { createOpenRouterProvider } from \"../providers\";\nimport { getSmallModel, getLargeModel } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\n/**\n * Build common generation parameters for both streaming and non-streaming modes\n */\nfunction buildGenerateParams(\n runtime: IAgentRuntime,\n modelType: typeof ModelType.TEXT_SMALL | typeof ModelType.TEXT_LARGE,\n params: GenerateTextParams,\n) {\n const { prompt, stopSequences = [] } = params;\n const temperature = params.temperature ?? 0.7;\n const frequencyPenalty = params.frequencyPenalty ?? 0.7;\n const presencePenalty = params.presencePenalty ?? 0.7;\n const resolvedMaxOutput =\n (params as any).maxOutputTokens ?? (params as any).maxTokens ?? 8192;\n\n const openrouter = createOpenRouterProvider(runtime);\n const modelName =\n modelType === ModelType.TEXT_SMALL\n ? getSmallModel(runtime)\n : getLargeModel(runtime);\n const modelLabel =\n modelType === ModelType.TEXT_SMALL ? \"TEXT_SMALL\" : \"TEXT_LARGE\";\n\n const generateParams: Parameters<typeof generateText>[0] = {\n model: openrouter.chat(modelName),\n prompt: prompt,\n system: runtime.character.system ?? undefined,\n temperature: temperature,\n frequencyPenalty: frequencyPenalty,\n presencePenalty: presencePenalty,\n stopSequences: stopSequences,\n };\n\n (generateParams as any).maxOutputTokens = resolvedMaxOutput;\n\n return { generateParams, modelName, modelLabel, prompt };\n}\n\n/**\n * Handle streaming text generation\n */\nfunction handleStreamingGeneration(\n runtime: IAgentRuntime,\n modelType: typeof ModelType.TEXT_SMALL | typeof ModelType.TEXT_LARGE,\n generateParams: Parameters<typeof streamText>[0],\n prompt: string,\n modelLabel: string,\n): TextStreamResult {\n logger.debug(`[OpenRouter] Streaming text with ${modelLabel} model`);\n\n const streamResult = streamText(generateParams);\n\n return {\n textStream: streamResult.textStream,\n text: streamResult.text,\n usage: streamResult.usage.then((usage) => {\n if (usage) {\n emitModelUsageEvent(runtime, modelType, prompt, usage);\n const inputTokens = usage.inputTokens ?? 0;\n const outputTokens = usage.outputTokens ?? 0;\n return {\n promptTokens: inputTokens,\n completionTokens: outputTokens,\n totalTokens: inputTokens + outputTokens,\n };\n }\n return undefined;\n }),\n finishReason: streamResult.finishReason,\n };\n}\n\n/**\n * Common text generation logic for both small and large models\n */\nasync function generateTextWithModel(\n runtime: IAgentRuntime,\n modelType: typeof ModelType.TEXT_SMALL | typeof ModelType.TEXT_LARGE,\n params: GenerateTextParams,\n): Promise<string | TextStreamResult> {\n const { generateParams, modelName, modelLabel, prompt } =\n buildGenerateParams(runtime, modelType, params);\n\n logger.debug(\n `[OpenRouter] Generating text with ${modelLabel} model: ${modelName}`,\n );\n\n // Handle streaming mode\n if (params.stream) {\n return handleStreamingGeneration(\n runtime,\n modelType,\n generateParams,\n prompt,\n modelLabel,\n );\n }\n\n // Non-streaming mode\n const response = await generateText(generateParams);\n\n if (response.usage) {\n emitModelUsageEvent(runtime, modelType, prompt, response.usage);\n }\n\n return response.text;\n}\n\n/**\n * TEXT_SMALL model handler\n *\n * Returns:\n * - `string` for simple text generation\n * - `TextStreamResult` for streaming\n */\nexport async function handleTextSmall(\n runtime: IAgentRuntime,\n params: GenerateTextParams,\n): Promise<string | TextStreamResult> {\n return generateTextWithModel(runtime, ModelType.TEXT_SMALL, params);\n}\n\n/**\n * TEXT_LARGE model handler\n *\n * Returns:\n * - `string` for simple text generation\n * - `TextStreamResult` for streaming\n */\nexport async function handleTextLarge(\n runtime: IAgentRuntime,\n params: GenerateTextParams,\n): Promise<string | TextStreamResult> {\n return generateTextWithModel(runtime, ModelType.TEXT_LARGE, params);\n}\n",
10
- "import { createOpenRouter } from \"@openrouter/ai-sdk-provider\";\nimport { logger, type IAgentRuntime } from \"@elizaos/core\";\nimport { getApiKey, getBaseURL } from \"../utils/config\";\n\n/**\n * Create an OpenRouter provider instance with proper configuration\n *\n * @param runtime The runtime context\n * @returns Configured OpenRouter provider instance\n */\nexport function createOpenRouterProvider(runtime: IAgentRuntime) {\n const apiKey = getApiKey(runtime);\n const isBrowser =\n typeof globalThis !== \"undefined\" && (globalThis as any).document;\n const baseURL = getBaseURL(runtime);\n // In browser, omit apiKey and rely on proxy baseURL\n return createOpenRouter({\n apiKey: isBrowser ? undefined : apiKey,\n baseURL,\n });\n}\n",
11
- "import {\n EventType,\n type IAgentRuntime,\n type ModelTypeName,\n} from \"@elizaos/core\";\nimport type { LanguageModelUsage } from \"ai\";\n\n/**\n * Emits a model usage event\n */\nexport function emitModelUsageEvent(\n runtime: IAgentRuntime,\n type: ModelTypeName,\n prompt: string,\n usage: LanguageModelUsage,\n) {\n // Never emit the full prompt; truncate to avoid leaking secrets/PII\n const truncatedPrompt =\n typeof prompt === \"string\"\n ? prompt.length > 200\n ? `${prompt.slice(0, 200)}…`\n : prompt\n : \"\";\n // Coalesce optional usage fields to stable numbers\n const inputTokens = Number((usage as { inputTokens?: number }).inputTokens || 0);\n const outputTokens = Number((usage as { outputTokens?: number }).outputTokens || 0);\n const totalTokens = Number(\n usage.totalTokens != null ? usage.totalTokens : inputTokens + outputTokens,\n );\n runtime.emitEvent(EventType.MODEL_USED, {\n runtime,\n source: \"openrouter\",\n provider: \"openrouter\",\n type,\n prompt: truncatedPrompt,\n tokens: {\n prompt: inputTokens,\n completion: outputTokens,\n total: totalTokens,\n },\n });\n}\n",
12
- "import {\n ModelType,\n logger,\n type IAgentRuntime,\n type ObjectGenerationParams,\n} from \"@elizaos/core\";\nimport { generateObject, jsonSchema } from \"ai\";\nimport type { JSONSchema7 } from \"json-schema\";\nimport { createOpenRouterProvider } from \"../providers\";\nimport { getSmallModel, getLargeModel } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\nimport {\n getJsonRepairFunction,\n handleObjectGenerationError,\n} from \"../utils/helpers\";\n\n/**\n * Common object generation logic for both small and large models\n */\nasync function generateObjectWithModel(\n runtime: IAgentRuntime,\n modelType: typeof ModelType.OBJECT_SMALL | typeof ModelType.OBJECT_LARGE,\n params: ObjectGenerationParams,\n): Promise<Record<string, unknown>> {\n const openrouter = createOpenRouterProvider(runtime);\n const modelName =\n modelType === ModelType.OBJECT_SMALL\n ? getSmallModel(runtime)\n : getLargeModel(runtime);\n const modelLabel =\n modelType === ModelType.OBJECT_SMALL ? \"OBJECT_SMALL\" : \"OBJECT_LARGE\";\n\n logger.log(`[OpenRouter] Using ${modelLabel} model: ${modelName}`);\n const temperature = params.temperature ?? 0.7;\n\n try {\n const { object, usage } = await generateObject({\n model: openrouter.chat(modelName),\n ...(params.schema && { schema: jsonSchema(params.schema as JSONSchema7) }),\n output: params.schema ? \"object\" : \"no-schema\",\n prompt: params.prompt,\n temperature: temperature,\n experimental_repairText: getJsonRepairFunction(),\n });\n\n if (usage) {\n emitModelUsageEvent(runtime, modelType, params.prompt, usage);\n }\n return object as Record<string, unknown>;\n } catch (error: unknown) {\n return handleObjectGenerationError(error);\n }\n}\n\n/**\n * OBJECT_SMALL model handler\n */\nexport async function handleObjectSmall(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams,\n): Promise<Record<string, unknown>> {\n return generateObjectWithModel(runtime, ModelType.OBJECT_SMALL, params);\n}\n\n/**\n * OBJECT_LARGE model handler\n */\nexport async function handleObjectLarge(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams,\n): Promise<Record<string, unknown>> {\n return generateObjectWithModel(runtime, ModelType.OBJECT_LARGE, params);\n}\n",
13
- "import { logger } from \"@elizaos/core\";\nimport { JSONParseError } from \"ai\";\nimport type { GenerateTextResponse, ImageDescriptionResult } from \"../types\";\n\n/**\n * Returns a function to repair JSON text\n */\nexport function getJsonRepairFunction(): (params: {\n text: string;\n error: unknown;\n}) => Promise<string | null> {\n return async ({ text, error }: { text: string; error: unknown }) => {\n try {\n if (error instanceof JSONParseError) {\n const cleanedText = text.replace(/```json\\n|\\n```|```/g, \"\");\n JSON.parse(cleanedText);\n return cleanedText;\n }\n return null;\n } catch (jsonError: unknown) {\n const message =\n jsonError instanceof Error ? jsonError.message : String(jsonError);\n logger.warn(`Failed to repair JSON text: ${message}`);\n return null;\n }\n };\n}\n\n// Re-export for backward compatibility\nexport { emitModelUsageEvent } from \"./events\";\n\n/**\n * Logs response structure for debugging (debug level only)\n */\nexport function logResponseStructure(\n modelType: string,\n response: GenerateTextResponse,\n) {\n // Only log safe, non-sensitive usage fields (avoid raw request bodies)\n const u = (response as any)?.usage;\n const safeUsage =\n u && typeof u === \"object\"\n ? {\n inputTokens: u.inputTokens,\n outputTokens: u.outputTokens,\n totalTokens: u.totalTokens,\n }\n : undefined;\n logger.debug(\n `[${modelType}] Response structure: ${JSON.stringify(\n {\n hasText: !!response.text,\n textLength: response.text?.length || 0,\n finishReason: response.finishReason,\n usage: safeUsage,\n },\n null,\n 2,\n )}`,\n );\n}\n\n/**\n * Parses image description response from text or JSON format\n */\nexport function parseImageDescriptionResponse(\n responseText: string,\n): ImageDescriptionResult {\n // Try to parse as JSON first\n try {\n const jsonResponse = JSON.parse(responseText);\n if (jsonResponse.title && jsonResponse.description) {\n return jsonResponse;\n }\n } catch (e) {\n // If not valid JSON, process as text\n logger.debug(`Parsing as JSON failed, processing as text: ${e}`);\n }\n\n // Extract title and description from text format\n const titleMatch = responseText.match(/title[:\\s]+(.+?)(?:\\n|$)/i);\n const title = titleMatch?.[1]?.trim() || \"Image Analysis\";\n const description = responseText\n .replace(/title[:\\s]+(.+?)(?:\\n|$)/i, \"\")\n .trim();\n\n return { title, description };\n}\n\n/**\n * Handles errors during object generation, including JSON repair attempts\n */\nexport async function handleObjectGenerationError(\n error: unknown,\n): Promise<Record<string, unknown>> {\n if (error instanceof JSONParseError) {\n logger.error(`[generateObject] Failed to parse JSON: ${error.message}`);\n const repairFunction = getJsonRepairFunction();\n const repairedJsonString = await repairFunction({\n text: error.text,\n error,\n });\n\n if (repairedJsonString) {\n try {\n const repairedObject = JSON.parse(repairedJsonString);\n logger.log(\"[generateObject] Successfully repaired JSON.\");\n return repairedObject;\n } catch (repairParseError: unknown) {\n const message =\n repairParseError instanceof Error\n ? repairParseError.message\n : String(repairParseError);\n logger.error(\n `[generateObject] Failed to parse repaired JSON: ${message}`,\n );\n if (repairParseError instanceof Error) throw repairParseError;\n throw Object.assign(new Error(message), { cause: repairParseError });\n }\n } else {\n logger.error(\"[generateObject] JSON repair failed.\");\n throw error;\n }\n } else {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`[generateObject] Unknown error: ${message}`);\n if (error instanceof Error) throw error;\n throw Object.assign(new Error(message), { cause: error });\n }\n}\n\n",
14
- "import {\n logger,\n type IAgentRuntime,\n type ImageDescriptionParams,\n type ImageGenerationParams,\n} from \"@elizaos/core\";\nimport { generateText } from \"ai\";\nimport type { OpenRouterImageResponse } from \"../types\";\nimport { createOpenRouterProvider } from \"../providers\";\nimport {\n getApiKey,\n getBaseURL,\n getImageGenerationModel,\n getImageModel,\n shouldAutoCleanupImages,\n} from \"../utils/config\";\nimport { parseImageDescriptionResponse } from \"../utils/helpers\";\nimport { deleteImage, saveBase64Image } from \"../utils/image-storage\";\n\n/**\n * IMAGE_DESCRIPTION model handler\n */\nexport async function handleImageDescription(\n runtime: IAgentRuntime,\n params: ImageDescriptionParams | string,\n): Promise<{ title: string; description: string }> {\n let imageUrl: string;\n let promptText: string | undefined;\n const modelName = getImageModel(runtime);\n logger.log(`[OpenRouter] Using IMAGE_DESCRIPTION model: ${modelName}`);\n const maxOutputTokens = 300;\n\n if (typeof params === \"string\") {\n imageUrl = params;\n promptText =\n \"Please analyze this image and provide a title and detailed description.\";\n } else {\n imageUrl = params.imageUrl;\n promptText =\n params.prompt ||\n \"Please analyze this image and provide a title and detailed description.\";\n }\n\n const openrouter = createOpenRouterProvider(runtime);\n\n const messages = [\n {\n role: \"user\" as const,\n content: [\n { type: \"text\" as const, text: promptText },\n { type: \"image\" as const, image: imageUrl },\n ],\n },\n ];\n\n try {\n const model = openrouter.chat(modelName);\n\n const { text: responseText } = await generateText({\n model: model,\n messages: messages,\n maxOutputTokens: maxOutputTokens,\n });\n\n return parseImageDescriptionResponse(responseText);\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error analyzing image: ${message}`);\n return {\n title: \"Failed to analyze image\",\n description: `Error: ${message}`,\n };\n }\n}\n\n/**\n * IMAGE model handler for image generation\n */\nexport async function handleImageGeneration(\n runtime: IAgentRuntime,\n params: ImageGenerationParams,\n): Promise<{ url: string }[]> {\n const modelName = getImageGenerationModel(runtime);\n logger.log(`[OpenRouter] Using IMAGE_GENERATION model: ${modelName}`);\n const apiKey = getApiKey(runtime);\n\n try {\n const baseUrl = getBaseURL(runtime);\n const isBrowser =\n typeof globalThis !== \"undefined\" && (globalThis as any).document;\n const response = await fetch(`${baseUrl}/chat/completions`, {\n method: \"POST\",\n headers: {\n ...(isBrowser ? {} : { Authorization: `Bearer ${apiKey}` }),\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n model: modelName,\n messages: [\n {\n role: \"user\",\n content: params.prompt,\n },\n ],\n modalities: [\"image\", \"text\"],\n }),\n // 60 seconds timeout\n signal: AbortSignal.timeout ? AbortSignal.timeout(60000) : undefined,\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => \"\");\n throw new Error(\n `HTTP ${response.status} ${response.statusText} ${errorText}`,\n );\n }\n\n const result = (await response.json()) as OpenRouterImageResponse;\n\n const images: { url: string; filepath?: string }[] = [];\n const savedPaths: string[] = [];\n\n // Extract images from the response\n if (result.choices?.[0]?.message?.images) {\n for (const [index, image] of result.choices[0].message.images.entries()) {\n const base64Url = image.image_url.url;\n\n // Save image to disk\n const filepath = await saveBase64Image(\n base64Url,\n runtime.agentId,\n index,\n );\n if (filepath) {\n // Return the actual file path for Discord/Telegram compatibility\n logger.log(`[OpenRouter] Returning image with filepath: ${filepath}`);\n images.push({\n url: filepath, // Use actual file path\n });\n savedPaths.push(filepath);\n } else if (!base64Url.startsWith(\"data:\")) {\n // If not base64, return as is (might be a URL)\n images.push({ url: base64Url });\n } else {\n // Failed to save base64 image\n logger.warn(\n `[OpenRouter] Failed to save image ${index + 1}, skipping`,\n );\n }\n }\n }\n\n // Clean up images after a short delay if auto-cleanup is enabled\n if (savedPaths.length > 0 && shouldAutoCleanupImages(runtime)) {\n setTimeout(() => {\n savedPaths.forEach((path) => {\n deleteImage(path);\n });\n }, 30000); // Delete after 30 seconds\n }\n\n if (images.length === 0) {\n throw new Error(\"No images generated in response\");\n }\n\n logger.log(`[OpenRouter] Generated ${images.length} image(s)`);\n return images;\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`[OpenRouter] Error generating image: ${message}`);\n return [];\n }\n}\n",
15
- "import { logger, getGeneratedDir } from \"@elizaos/core\";\n\nfunction isBrowser(): boolean {\n return typeof globalThis !== \"undefined\" && (globalThis as any).document;\n}\n\n// Restrict identifiers to a safe subset to prevent path traversal/FS escape\nfunction sanitizeId(id: string): string {\n const src = (id ?? \"\").toString();\n const normalized = src.normalize(\"NFKC\");\n let safe = normalized.replace(/[^a-zA-Z0-9_-]/g, \"_\");\n safe = safe.replace(/_+/g, \"_\");\n safe = safe.slice(0, 64);\n safe = safe.replace(/^_+|_+$/g, \"\");\n return safe || \"agent\";\n}\n\n// Lightweight base64 decoder that avoids Node Buffer and works in browser/Node\nfunction base64ToBytes(base64: string): Uint8Array {\n // Remove padding\n const cleaned = base64.replace(/\\s+/g, \"\");\n const chars =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n const lookup: number[] = new Array(256).fill(-1);\n for (let i = 0; i < chars.length; i++) lookup[chars.charCodeAt(i)] = i;\n\n const len = cleaned.length;\n let pad = 0;\n if (len >= 2 && cleaned[len - 1] === \"=\") pad++;\n if (len >= 2 && cleaned[len - 2] === \"=\") pad++;\n const outLen = ((len * 3) >> 2) - pad;\n const out = new Uint8Array(outLen);\n\n let o = 0;\n for (let i = 0; i < len; i += 4) {\n const c0 = lookup[cleaned.charCodeAt(i)];\n const c1 = lookup[cleaned.charCodeAt(i + 1)];\n const c2 = lookup[cleaned.charCodeAt(i + 2)];\n const c3 = lookup[cleaned.charCodeAt(i + 3)];\n const n = (c0 << 18) | (c1 << 12) | ((c2 & 63) << 6) | (c3 & 63);\n if (o < outLen) out[o++] = (n >> 16) & 255;\n if (o < outLen) out[o++] = (n >> 8) & 255;\n if (o < outLen) out[o++] = n & 255;\n }\n return out;\n}\n\n/**\n * Save base64 image to disk and return the file path\n */\nexport async function saveBase64Image(\n base64Url: string,\n agentId: string,\n index: number = 0,\n): Promise<string | null> {\n if (isBrowser()) {\n return null;\n }\n // Extract base64 data and extension with MIME type validation\n const m = base64Url.match(\n /^data:(image\\/[a-zA-Z0-9.+-]+);base64,([A-Za-z0-9+/=]+)$/,\n );\n if (!m) return null;\n\n const mime = m[1];\n const base64Data = m[2];\n\n // Whitelist of allowed MIME types mapped to extensions\n const extMap: Record<string, string> = {\n \"image/png\": \"png\",\n \"image/jpeg\": \"jpg\",\n \"image/jpg\": \"jpg\",\n \"image/webp\": \"webp\",\n \"image/gif\": \"gif\",\n \"image/bmp\": \"bmp\",\n \"image/tiff\": \"tiff\",\n };\n\n const extension = extMap[mime];\n if (!extension) return null;\n\n // Use ElizaOS convention: .eliza/data/generated/{agentId}/\n const { join } = await import(\"node:path\");\n const safeAgentId = sanitizeId(agentId);\n const baseDir = join(getGeneratedDir(), safeAgentId);\n\n // Create directory if it doesn't exist\n const { existsSync } = await import(\"node:fs\");\n if (!existsSync(baseDir)) {\n const { mkdir } = await import(\"node:fs/promises\");\n await mkdir(baseDir, { recursive: true });\n }\n\n // Generate filename with timestamp\n const timestamp = Date.now();\n const filename = `image_${timestamp}_${index}.${extension}`;\n const filepath = join(baseDir, filename);\n\n // Save image to disk\n const buffer = base64ToBytes(base64Data);\n const { writeFile } = await import(\"node:fs/promises\");\n await writeFile(filepath, buffer);\n\n logger.info(`[OpenRouter] Saved generated image to ${filepath}`);\n\n // Return only the file path for Discord/Telegram to read\n return filepath;\n}\n\n/**\n * Delete a specific image file\n */\nexport function deleteImage(filepath: string): void {\n if (isBrowser()) {\n return;\n }\n try {\n (async () => {\n const { existsSync, unlinkSync } = await import(\"node:fs\");\n if (existsSync(filepath)) {\n unlinkSync(filepath);\n logger.debug(`[OpenRouter] Deleted image: ${filepath}`);\n }\n })().catch((error) => {\n logger.warn(\n `[OpenRouter] Failed to delete image ${filepath}:`,\n String(error),\n );\n });\n } catch (error) {\n logger.warn(\n `[OpenRouter] Failed to delete image ${filepath}:`,\n String(error),\n );\n }\n}\n",
16
- "import type { IAgentRuntime, TextEmbeddingParams } from '@elizaos/core';\nimport { logger, ModelType, VECTOR_DIMS } from '@elizaos/core';\nimport { getSetting, getBaseURL, getApiKey, getEmbeddingModel } from '../utils/config';\nimport { emitModelUsageEvent } from '../utils/events';\n\n/**\n * TEXT_EMBEDDING model handler for OpenRouter\n */\nexport async function handleTextEmbedding(\n runtime: IAgentRuntime,\n params: TextEmbeddingParams | string | null\n): Promise<number[]> {\n const embeddingModelName = getEmbeddingModel(runtime);\n const embeddingDimension = Number.parseInt(\n getSetting(runtime, 'OPENROUTER_EMBEDDING_DIMENSIONS') ??\n getSetting(runtime, 'EMBEDDING_DIMENSIONS') ??\n '1536',\n 10\n ) as (typeof VECTOR_DIMS)[keyof typeof VECTOR_DIMS];\n\n if (!Object.values(VECTOR_DIMS).includes(embeddingDimension)) {\n const errorMsg = `Invalid embedding dimension: ${embeddingDimension}. Must be one of: ${Object.values(VECTOR_DIMS).join(', ')}`;\n logger.error(errorMsg);\n throw new Error(errorMsg);\n }\n\n if (params === null) {\n logger.debug('Creating test embedding for initialization');\n const testVector = Array(embeddingDimension).fill(0);\n testVector[0] = 0.1;\n return testVector;\n }\n\n let text: string;\n if (typeof params === 'string') {\n text = params;\n } else if (typeof params === 'object' && params.text) {\n text = params.text;\n } else {\n const errorMsg = 'Invalid input format for embedding';\n logger.warn(errorMsg);\n const fallbackVector = Array(embeddingDimension).fill(0);\n fallbackVector[0] = 0.2;\n return fallbackVector;\n }\n\n if (!text.trim()) {\n const errorMsg = 'Empty text for embedding';\n logger.warn(errorMsg);\n const fallbackVector = Array(embeddingDimension).fill(0);\n fallbackVector[0] = 0.3;\n return fallbackVector;\n }\n\n const apiKey = getApiKey(runtime);\n if (!apiKey) {\n const errorMsg = 'OPENROUTER_API_KEY is not set';\n logger.error(errorMsg);\n throw new Error(errorMsg);\n }\n\n const baseURL = getBaseURL(runtime);\n\n try {\n const response = await fetch(`${baseURL}/embeddings`, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${apiKey}`,\n 'Content-Type': 'application/json',\n 'HTTP-Referer': getSetting(runtime, 'OPENROUTER_HTTP_REFERER') || '',\n 'X-Title': getSetting(runtime, 'OPENROUTER_X_TITLE') || 'ElizaOS',\n },\n body: JSON.stringify({\n model: embeddingModelName,\n input: text,\n }),\n });\n\n if (!response.ok) {\n logger.error(`OpenRouter API error: ${response.status} - ${response.statusText}`);\n throw new Error(`OpenRouter API error: ${response.status} - ${response.statusText}`);\n }\n\n const data = (await response.json()) as {\n data: [{ embedding: number[] }];\n usage?: { prompt_tokens: number; total_tokens: number };\n };\n\n if (!data?.data?.[0]?.embedding) {\n logger.error('API returned invalid structure');\n throw new Error('API returned invalid structure');\n }\n\n const embedding = data.data[0].embedding;\n\n if (!Array.isArray(embedding) || embedding.length !== embeddingDimension) {\n const errorMsg = `Embedding length ${embedding?.length ?? 0} does not match configured dimension ${embeddingDimension}`;\n logger.error(errorMsg);\n const fallbackVector = Array(embeddingDimension).fill(0);\n fallbackVector[0] = 0.4;\n return fallbackVector;\n }\n\n if (data.usage) {\n const usage = {\n inputTokens: data.usage.prompt_tokens,\n outputTokens: 0,\n totalTokens: data.usage.total_tokens,\n };\n\n emitModelUsageEvent(runtime, ModelType.TEXT_EMBEDDING, text, usage);\n }\n\n logger.log(`Got valid embedding with length ${embedding.length}`);\n return embedding;\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error generating embedding: ${message}`);\n throw error instanceof Error ? error : new Error(message);\n }\n}\n"
5
+ "import {\n type GenerateTextParams,\n type IAgentRuntime,\n type ImageDescriptionParams,\n type ImageGenerationParams,\n type JsonValue,\n logger,\n ModelType,\n type ObjectGenerationParams,\n type Plugin,\n type TextEmbeddingParams,\n} from \"@elizaos/core\";\n\nimport { initializeOpenRouter } from \"./init\";\nimport { handleTextEmbedding } from \"./models/embedding\";\nimport { handleImageDescription, handleImageGeneration } from \"./models/image\";\nimport { handleObjectLarge, handleObjectSmall } from \"./models/object\";\nimport { handleTextLarge, handleTextSmall } from \"./models/text\";\n\ntype ProcessEnvLike = Record<string, string | undefined>;\n\nfunction getProcessEnv(): ProcessEnvLike {\n if (typeof process === \"undefined\" || !process.env) {\n return {};\n }\n return process.env as ProcessEnvLike;\n}\n\nconst env = getProcessEnv();\n\nexport const openrouterPlugin: Plugin = {\n name: \"openrouter\",\n description: \"OpenRouter multi-model AI gateway plugin\",\n\n config: {\n OPENROUTER_API_KEY: env.OPENROUTER_API_KEY ?? null,\n OPENROUTER_BASE_URL: env.OPENROUTER_BASE_URL ?? null,\n OPENROUTER_SMALL_MODEL: env.OPENROUTER_SMALL_MODEL ?? null,\n OPENROUTER_LARGE_MODEL: env.OPENROUTER_LARGE_MODEL ?? null,\n OPENROUTER_IMAGE_MODEL: env.OPENROUTER_IMAGE_MODEL ?? null,\n OPENROUTER_IMAGE_GENERATION_MODEL: env.OPENROUTER_IMAGE_GENERATION_MODEL ?? null,\n OPENROUTER_EMBEDDING_MODEL: env.OPENROUTER_EMBEDDING_MODEL ?? null,\n OPENROUTER_EMBEDDING_DIMENSIONS: env.OPENROUTER_EMBEDDING_DIMENSIONS ?? null,\n OPENROUTER_AUTO_CLEANUP_IMAGES: env.OPENROUTER_AUTO_CLEANUP_IMAGES ?? null,\n SMALL_MODEL: env.SMALL_MODEL ?? null,\n LARGE_MODEL: env.LARGE_MODEL ?? null,\n IMAGE_MODEL: env.IMAGE_MODEL ?? null,\n IMAGE_GENERATION_MODEL: env.IMAGE_GENERATION_MODEL ?? null,\n EMBEDDING_MODEL: env.EMBEDDING_MODEL ?? null,\n EMBEDDING_DIMENSIONS: env.EMBEDDING_DIMENSIONS ?? null,\n },\n\n async init(config: Record<string, unknown>, runtime: IAgentRuntime) {\n initializeOpenRouter(config, runtime);\n },\n\n models: {\n [ModelType.TEXT_SMALL]: async (runtime: IAgentRuntime, params: GenerateTextParams) => {\n return handleTextSmall(runtime, params);\n },\n\n [ModelType.TEXT_LARGE]: async (runtime: IAgentRuntime, params: GenerateTextParams) => {\n return handleTextLarge(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 [ModelType.IMAGE_DESCRIPTION]: async (\n runtime: IAgentRuntime,\n params: ImageDescriptionParams | string\n ) => {\n const description = await handleImageDescription(runtime, params);\n return { title: \"\", description };\n },\n\n [ModelType.IMAGE]: async (runtime: IAgentRuntime, params: ImageGenerationParams) => {\n const result = await handleImageGeneration(runtime, params);\n return [{ url: result.imageUrl }];\n },\n\n [ModelType.TEXT_EMBEDDING]: async (\n runtime: IAgentRuntime,\n params: TextEmbeddingParams | string | null\n ) => {\n return handleTextEmbedding(runtime, params);\n },\n },\n\n tests: [\n {\n name: \"openrouter_plugin_tests\",\n tests: [\n {\n name: \"openrouter_test_text_small\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n const text = await runtime.useModel(ModelType.TEXT_SMALL, {\n prompt: \"What is the nature of reality in 10 words?\",\n });\n if (text.length === 0) {\n throw new Error(\"Failed to generate text\");\n }\n logger.log({ text }, \"generated with test_text_small\");\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error in test_text_small: ${message}`);\n throw error;\n }\n },\n },\n {\n name: \"openrouter_test_text_large\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n const text = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt: \"What is the nature of reality in 10 words?\",\n });\n if (text.length === 0) {\n throw new Error(\"Failed to generate text\");\n }\n logger.log({ text }, \"generated with test_text_large\");\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error in test_text_large: ${message}`);\n throw error;\n }\n },\n },\n {\n name: \"openrouter_test_object_small\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n const result = await runtime.useModel(ModelType.OBJECT_SMALL, {\n prompt: \"Create a simple JSON object with a message field saying hello\",\n schema: { type: \"object\" },\n });\n logger.log({ result }, \"Generated object with test_object_small\");\n if (!result || (typeof result === \"object\" && \"error\" in result)) {\n throw new Error(\"Failed to generate object\");\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error in test_object_small: ${message}`);\n throw error;\n }\n },\n },\n {\n name: \"openrouter_test_text_embedding\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n const embedding = await runtime.useModel(ModelType.TEXT_EMBEDDING, {\n text: \"Hello, world!\",\n });\n logger.log({ embedding }, \"embedding\");\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error in test_text_embedding: ${message}`);\n throw error;\n }\n },\n },\n ],\n },\n ],\n};\n",
6
+ "import { type IAgentRuntime, logger } from \"@elizaos/core\";\nimport { getApiKey, getBaseURL } from \"./utils/config\";\n\n(globalThis as Record<string, unknown>).AI_SDK_LOG_WARNINGS ??= false;\n\nexport function initializeOpenRouter(\n _config: Record<string, unknown>,\n runtime: IAgentRuntime\n): void {\n (async () => {\n try {\n const isBrowser =\n typeof globalThis !== \"undefined\" && (globalThis as Record<string, unknown>).document;\n if (isBrowser) {\n return;\n }\n\n if (!getApiKey(runtime)) {\n logger.warn(\n \"OPENROUTER_API_KEY is not set in environment - OpenRouter functionality will be limited\"\n );\n return;\n }\n\n const baseURL = getBaseURL(runtime);\n const response = await fetch(`${baseURL}/models`, {\n headers: { Authorization: `Bearer ${getApiKey(runtime)}` },\n });\n\n if (!response.ok) {\n logger.warn(`OpenRouter API key validation failed: ${response.statusText}`);\n } else {\n logger.log(\"OpenRouter API key validated successfully\");\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.warn(`Error validating OpenRouter API key: ${message}`);\n }\n })();\n}\n",
7
+ "import type { IAgentRuntime } from \"@elizaos/core\";\n\nexport const DEFAULT_BASE_URL = \"https://openrouter.ai/api/v1\";\nexport const DEFAULT_SMALL_MODEL = \"google/gemini-2.0-flash-001\";\nexport const DEFAULT_LARGE_MODEL = \"google/gemini-2.5-flash\";\nexport const DEFAULT_IMAGE_MODEL = \"x-ai/grok-2-vision-1212\";\nexport const DEFAULT_IMAGE_GENERATION_MODEL = \"google/gemini-2.5-flash-image-preview\";\nexport const DEFAULT_EMBEDDING_MODEL = \"openai/text-embedding-3-small\";\nexport const DEFAULT_EMBEDDING_DIMENSIONS = 1536;\n\nfunction getEnvValue(key: string): string | undefined {\n if (typeof process === \"undefined\" || !process.env) {\n return undefined;\n }\n const value = process.env[key];\n return value === undefined ? undefined : String(value);\n}\n\nexport function getSetting(\n runtime: IAgentRuntime,\n key: string,\n defaultValue?: string\n): string | undefined {\n const value = runtime.getSetting(key);\n if (value !== undefined && value !== null) {\n return String(value);\n }\n return getEnvValue(key) ?? defaultValue;\n}\n\nexport function getBaseURL(runtime: IAgentRuntime): string {\n const browserURL = getSetting(runtime, \"OPENROUTER_BROWSER_BASE_URL\");\n if (\n typeof globalThis !== \"undefined\" &&\n (globalThis as Record<string, unknown>).document &&\n browserURL\n ) {\n return browserURL;\n }\n return getSetting(runtime, \"OPENROUTER_BASE_URL\", DEFAULT_BASE_URL) || DEFAULT_BASE_URL;\n}\n\nexport function getApiKey(runtime: IAgentRuntime): string | undefined {\n return getSetting(runtime, \"OPENROUTER_API_KEY\");\n}\n\nexport function getSmallModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"OPENROUTER_SMALL_MODEL\") ??\n getSetting(runtime, \"SMALL_MODEL\", DEFAULT_SMALL_MODEL) ??\n DEFAULT_SMALL_MODEL\n );\n}\n\nexport function getLargeModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"OPENROUTER_LARGE_MODEL\") ??\n getSetting(runtime, \"LARGE_MODEL\", DEFAULT_LARGE_MODEL) ??\n DEFAULT_LARGE_MODEL\n );\n}\n\nexport function getImageModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"OPENROUTER_IMAGE_MODEL\") ??\n getSetting(runtime, \"IMAGE_MODEL\", DEFAULT_IMAGE_MODEL) ??\n DEFAULT_IMAGE_MODEL\n );\n}\n\nexport function getImageGenerationModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"OPENROUTER_IMAGE_GENERATION_MODEL\") ??\n getSetting(runtime, \"IMAGE_GENERATION_MODEL\", DEFAULT_IMAGE_GENERATION_MODEL) ??\n DEFAULT_IMAGE_GENERATION_MODEL\n );\n}\n\nexport function getEmbeddingModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"OPENROUTER_EMBEDDING_MODEL\") ??\n getSetting(runtime, \"EMBEDDING_MODEL\", DEFAULT_EMBEDDING_MODEL) ??\n DEFAULT_EMBEDDING_MODEL\n );\n}\n\nexport function getEmbeddingDimensions(runtime: IAgentRuntime): number {\n const setting =\n getSetting(runtime, \"OPENROUTER_EMBEDDING_DIMENSIONS\") ??\n getSetting(runtime, \"EMBEDDING_DIMENSIONS\");\n return setting ? parseInt(setting, 10) : DEFAULT_EMBEDDING_DIMENSIONS;\n}\n\nexport function shouldAutoCleanupImages(runtime: IAgentRuntime): boolean {\n const setting = getSetting(runtime, \"OPENROUTER_AUTO_CLEANUP_IMAGES\", \"false\");\n return setting?.toLowerCase() === \"true\";\n}\n",
8
+ "import type { IAgentRuntime, TextEmbeddingParams } from \"@elizaos/core\";\nimport { logger, ModelType, VECTOR_DIMS } from \"@elizaos/core\";\n\nimport { getApiKey, getBaseURL, getEmbeddingModel, getSetting } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\nexport async function handleTextEmbedding(\n runtime: IAgentRuntime,\n params: TextEmbeddingParams | string | null\n): Promise<number[]> {\n const embeddingModelName = getEmbeddingModel(runtime);\n const embeddingDimension = Number.parseInt(\n getSetting(runtime, \"OPENROUTER_EMBEDDING_DIMENSIONS\") ??\n getSetting(runtime, \"EMBEDDING_DIMENSIONS\") ??\n \"1536\",\n 10\n ) as (typeof VECTOR_DIMS)[keyof typeof VECTOR_DIMS];\n\n if (!Object.values(VECTOR_DIMS).includes(embeddingDimension)) {\n const errorMsg = `Invalid embedding dimension: ${embeddingDimension}. Must be one of: ${Object.values(VECTOR_DIMS).join(\", \")}`;\n logger.error(errorMsg);\n throw new Error(errorMsg);\n }\n\n if (params === null) {\n const testVector = Array(embeddingDimension).fill(0) as number[];\n testVector[0] = 0.1;\n return testVector;\n }\n\n let text: string;\n if (typeof params === \"string\") {\n text = params;\n } else if (typeof params === \"object\" && params.text) {\n text = params.text;\n } else {\n const errorMsg = \"Invalid input format for embedding\";\n logger.warn(errorMsg);\n const fallbackVector = Array(embeddingDimension).fill(0) as number[];\n fallbackVector[0] = 0.2;\n return fallbackVector;\n }\n\n if (!text.trim()) {\n const errorMsg = \"Empty text for embedding\";\n logger.warn(errorMsg);\n const fallbackVector = Array(embeddingDimension).fill(0) as number[];\n fallbackVector[0] = 0.3;\n return fallbackVector;\n }\n\n const apiKey = getApiKey(runtime);\n if (!apiKey) {\n const errorMsg = \"OPENROUTER_API_KEY is not set\";\n logger.error(errorMsg);\n throw new Error(errorMsg);\n }\n\n const baseURL = getBaseURL(runtime);\n\n try {\n const response = await fetch(`${baseURL}/embeddings`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${apiKey}`,\n \"Content-Type\": \"application/json\",\n \"HTTP-Referer\": getSetting(runtime, \"OPENROUTER_HTTP_REFERER\") || \"\",\n \"X-Title\": getSetting(runtime, \"OPENROUTER_X_TITLE\") || \"ElizaOS\",\n },\n body: JSON.stringify({\n model: embeddingModelName,\n input: text,\n }),\n });\n\n if (!response.ok) {\n logger.error(`OpenRouter API error: ${response.status} - ${response.statusText}`);\n throw new Error(`OpenRouter API error: ${response.status} - ${response.statusText}`);\n }\n\n const data = (await response.json()) as {\n data: [{ embedding: number[] }];\n usage?: { prompt_tokens: number; total_tokens: number };\n };\n\n if (!data?.data?.[0]?.embedding) {\n logger.error(\"API returned invalid structure\");\n throw new Error(\"API returned invalid structure\");\n }\n\n const embedding = data.data[0].embedding;\n\n if (!Array.isArray(embedding) || embedding.length !== embeddingDimension) {\n const errorMsg = `Embedding length ${embedding?.length ?? 0} does not match configured dimension ${embeddingDimension}`;\n logger.error(errorMsg);\n const fallbackVector = Array(embeddingDimension).fill(0) as number[];\n fallbackVector[0] = 0.4;\n return fallbackVector;\n }\n\n if (data.usage) {\n const usage = {\n inputTokens: data.usage.prompt_tokens,\n outputTokens: 0,\n totalTokens: data.usage.total_tokens,\n };\n\n emitModelUsageEvent(runtime, ModelType.TEXT_EMBEDDING, text, usage);\n }\n\n return embedding;\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error generating embedding: ${message}`);\n throw error instanceof Error ? error : new Error(message);\n }\n}\n",
9
+ "import type { IAgentRuntime, ModelType } from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\n\ninterface AIUsage {\n inputTokens?: number;\n outputTokens?: number;\n promptTokens?: number;\n completionTokens?: number;\n totalTokens?: number;\n}\n\nexport function emitModelUsageEvent(\n _runtime: IAgentRuntime,\n modelType: (typeof ModelType)[keyof typeof ModelType],\n prompt: string,\n usage: AIUsage\n): void {\n const inputTokens = usage.inputTokens ?? usage.promptTokens ?? 0;\n const outputTokens = usage.outputTokens ?? usage.completionTokens ?? 0;\n const totalTokens = usage.totalTokens ?? inputTokens + outputTokens;\n\n logger.debug({\n event: \"model:usage\",\n modelType,\n provider: \"openrouter\",\n prompt: prompt.substring(0, 100),\n usage: {\n promptTokens: inputTokens,\n completionTokens: outputTokens,\n totalTokens,\n },\n timestamp: Date.now(),\n });\n}\n",
10
+ "import type { IAgentRuntime, ImageDescriptionParams, ImageGenerationParams } from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { generateText, type LanguageModel } from \"ai\";\n\nimport { createOpenRouterProvider } from \"../providers\";\nimport { getImageGenerationModel, getImageModel } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\nexport async function handleImageDescription(\n runtime: IAgentRuntime,\n params: ImageDescriptionParams | string\n): Promise<string> {\n const openrouter = createOpenRouterProvider(runtime);\n const modelName = getImageModel(runtime);\n\n const imageUrl = typeof params === \"string\" ? params : params.imageUrl;\n const prompt =\n typeof params === \"string\" ? \"Describe this image\" : params.prompt || \"Describe this image\";\n\n try {\n const generateParams = {\n model: openrouter.chat(modelName) as LanguageModel,\n messages: [\n {\n role: \"user\" as const,\n content: [\n { type: \"text\" as const, text: prompt },\n { type: \"image\" as const, image: imageUrl },\n ],\n },\n ],\n };\n\n const response = await generateText(generateParams);\n\n if (response.usage) {\n emitModelUsageEvent(runtime, ModelType.IMAGE_DESCRIPTION, prompt, response.usage);\n }\n\n return response.text;\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error describing image: ${message}`);\n throw error instanceof Error ? error : new Error(message);\n }\n}\n\nexport async function handleImageGeneration(\n runtime: IAgentRuntime,\n params: ImageGenerationParams\n): Promise<{ imageUrl: string; caption?: string }> {\n const openrouter = createOpenRouterProvider(runtime);\n const modelName = getImageGenerationModel(runtime);\n\n try {\n const generateParams = {\n model: openrouter.chat(modelName) as LanguageModel,\n prompt: `Generate an image: ${params.prompt}`,\n };\n\n const response = await generateText(generateParams);\n\n if (response.usage) {\n emitModelUsageEvent(runtime, ModelType.IMAGE, params.prompt, response.usage);\n }\n\n return {\n imageUrl: response.text,\n caption: params.prompt,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error generating image: ${message}`);\n throw error instanceof Error ? error : new Error(message);\n }\n}\n",
11
+ "import type { IAgentRuntime } from \"@elizaos/core\";\nimport { createOpenRouter } from \"@openrouter/ai-sdk-provider\";\nimport { getApiKey, getBaseURL } from \"../utils/config\";\n\nexport function createOpenRouterProvider(runtime: IAgentRuntime) {\n const apiKey = getApiKey(runtime);\n const isBrowser =\n typeof globalThis !== \"undefined\" && (globalThis as Record<string, unknown>).document;\n const baseURL = getBaseURL(runtime);\n\n return createOpenRouter({\n apiKey: isBrowser ? undefined : apiKey,\n baseURL,\n });\n}\n",
12
+ "import {\n type IAgentRuntime,\n type JsonValue,\n ModelType,\n type ObjectGenerationParams,\n} from \"@elizaos/core\";\nimport { generateObject, jsonSchema } from \"ai\";\nimport type { JSONSchema7 } from \"json-schema\";\n\nimport { createOpenRouterProvider } from \"../providers\";\nimport { getLargeModel, getSmallModel } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\nimport { handleObjectGenerationError } from \"../utils/helpers\";\n\nasync function generateObjectWithModel(\n runtime: IAgentRuntime,\n modelType: typeof ModelType.OBJECT_SMALL | typeof ModelType.OBJECT_LARGE,\n params: ObjectGenerationParams\n): Promise<Record<string, JsonValue>> {\n const openrouter = createOpenRouterProvider(runtime);\n const modelName =\n modelType === ModelType.OBJECT_SMALL ? getSmallModel(runtime) : getLargeModel(runtime);\n\n const temperature = params.temperature ?? 0.7;\n\n try {\n const generateParams = {\n model: openrouter.chat(modelName),\n ...(params.schema && {\n schema: jsonSchema(params.schema as JSONSchema7),\n }),\n output: params.schema ? \"object\" : \"no-schema\",\n prompt: params.prompt,\n temperature: temperature,\n };\n\n // @ts-expect-error - AI SDK type compatibility issue with OpenRouter provider\n const { object, usage } = await generateObject(generateParams);\n\n if (usage) {\n emitModelUsageEvent(runtime, modelType, params.prompt, usage);\n }\n return object as Record<string, JsonValue>;\n } catch (error: unknown) {\n return handleObjectGenerationError(error);\n }\n}\n\nexport async function handleObjectSmall(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams\n): Promise<Record<string, JsonValue>> {\n return generateObjectWithModel(runtime, ModelType.OBJECT_SMALL, params);\n}\n\nexport async function handleObjectLarge(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams\n): Promise<Record<string, JsonValue>> {\n return generateObjectWithModel(runtime, ModelType.OBJECT_LARGE, params);\n}\n",
13
+ "import { type JsonValue, logger } from \"@elizaos/core\";\n\nexport function getJsonRepairFunction(): ((text: string) => string) | undefined {\n try {\n const { jsonrepair } = require(\"jsonrepair\");\n return jsonrepair;\n } catch {\n return undefined;\n }\n}\n\nexport function handleObjectGenerationError(error: unknown): Record<string, JsonValue> {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error generating object: ${message}`);\n return { error: message };\n}\n\nexport function extractJsonFromText(text: string): Record<string, JsonValue> {\n try {\n return JSON.parse(text) as Record<string, JsonValue>;\n } catch {}\n\n const jsonBlockMatch = text.match(/```json\\s*([\\s\\S]*?)\\s*```/);\n if (jsonBlockMatch?.[1]) {\n try {\n return JSON.parse(jsonBlockMatch[1].trim()) as Record<string, JsonValue>;\n } catch {}\n }\n\n const codeBlockMatch = text.match(/```\\w*\\s*([\\s\\S]*?)\\s*```/);\n if (codeBlockMatch?.[1]) {\n const content = codeBlockMatch[1].trim();\n if (content.startsWith(\"{\") && content.endsWith(\"}\")) {\n try {\n return JSON.parse(content) as Record<string, JsonValue>;\n } catch {}\n }\n }\n\n const jsonMatch = text.match(/\\{[\\s\\S]*\\}/);\n if (jsonMatch?.[0]) {\n try {\n return JSON.parse(jsonMatch[0]) as Record<string, JsonValue>;\n } catch {}\n }\n\n return {};\n}\n",
14
+ "import type { GenerateTextParams, IAgentRuntime, JsonValue, TextStreamResult } from \"@elizaos/core\";\nimport { ModelType } from \"@elizaos/core\";\nimport { generateText, streamText } from \"ai\";\n\nimport { createOpenRouterProvider } from \"../providers\";\nimport { getLargeModel, getSmallModel } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\nfunction buildGenerateParams(\n runtime: IAgentRuntime,\n modelType: typeof ModelType.TEXT_SMALL | typeof ModelType.TEXT_LARGE,\n params: GenerateTextParams\n) {\n const { prompt, stopSequences = [] } = params;\n const temperature = params.temperature ?? 0.7;\n const frequencyPenalty = params.frequencyPenalty ?? 0.7;\n const presencePenalty = params.presencePenalty ?? 0.7;\n const paramsWithMax = params as GenerateTextParams & {\n maxOutputTokens?: number;\n maxTokens?: number;\n };\n const resolvedMaxOutput = paramsWithMax.maxOutputTokens ?? paramsWithMax.maxTokens ?? 8192;\n\n const openrouter = createOpenRouterProvider(runtime);\n const modelName =\n modelType === ModelType.TEXT_SMALL ? getSmallModel(runtime) : getLargeModel(runtime);\n const modelLabel = modelType === ModelType.TEXT_SMALL ? \"TEXT_SMALL\" : \"TEXT_LARGE\";\n\n const generateParams = {\n model: openrouter.chat(modelName),\n prompt: prompt,\n system: runtime.character?.system ?? undefined,\n temperature: temperature,\n frequencyPenalty: frequencyPenalty,\n presencePenalty: presencePenalty,\n stopSequences: stopSequences,\n maxOutputTokens: resolvedMaxOutput,\n };\n\n return { generateParams, modelName, modelLabel, prompt };\n}\n\nfunction handleStreamingGeneration(\n runtime: IAgentRuntime,\n modelType: typeof ModelType.TEXT_SMALL | typeof ModelType.TEXT_LARGE,\n generateParams: Record<string, JsonValue | object>,\n prompt: string,\n _modelLabel: string\n): TextStreamResult {\n // @ts-expect-error - AI SDK type compatibility issue with OpenRouter provider\n const streamResult = streamText(generateParams);\n\n return {\n textStream: streamResult.textStream,\n text: Promise.resolve(streamResult.text),\n usage: Promise.resolve(streamResult.usage).then((usage) => {\n if (usage) {\n emitModelUsageEvent(runtime, modelType, prompt, usage);\n const inputTokens = usage.inputTokens ?? 0;\n const outputTokens = usage.outputTokens ?? 0;\n return {\n promptTokens: inputTokens,\n completionTokens: outputTokens,\n totalTokens: inputTokens + outputTokens,\n };\n }\n return undefined;\n }),\n finishReason: Promise.resolve(streamResult.finishReason) as Promise<string | undefined>,\n };\n}\n\nasync function generateTextWithModel(\n runtime: IAgentRuntime,\n modelType: typeof ModelType.TEXT_SMALL | typeof ModelType.TEXT_LARGE,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n const {\n generateParams,\n modelName: _modelName,\n modelLabel,\n prompt,\n } = buildGenerateParams(runtime, modelType, params);\n\n if (params.stream) {\n return handleStreamingGeneration(runtime, modelType, generateParams, prompt, modelLabel);\n }\n\n // @ts-expect-error - AI SDK type compatibility issue with OpenRouter provider\n const response = await generateText(generateParams);\n\n if (response.usage) {\n emitModelUsageEvent(runtime, modelType, prompt, response.usage);\n }\n\n return response.text;\n}\n\nexport async function handleTextSmall(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n return generateTextWithModel(runtime, ModelType.TEXT_SMALL, params);\n}\n\nexport async function handleTextLarge(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n return generateTextWithModel(runtime, ModelType.TEXT_LARGE, params);\n}\n"
17
15
  ],
18
- "mappings": "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",
19
- "debugId": "2BBC786BCBA31E1064756E2164756E21",
16
+ "mappings": "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",
17
+ "debugId": "E561D2F888727E6264756E2164756E21",
20
18
  "names": []
21
19
  }