@elizaos/plugin-openrouter 2.0.0-alpha.8 → 2.0.0-beta.1
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/LICENSE +21 -0
- package/README.md +125 -0
- package/auto-enable.ts +17 -0
- package/dist/browser/index.browser.js +333 -137
- package/dist/browser/index.browser.js.map +10 -11
- package/dist/cjs/index.node.cjs +334 -134
- package/dist/cjs/index.node.cjs.map +10 -11
- package/dist/node/index.node.js +333 -137
- package/dist/node/index.node.js.map +10 -11
- package/package.json +29 -13
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../plugin.ts", "../../init.ts", "../../utils/config.ts", "../../models/embedding.ts", "../../utils/events.ts", "../../models/image.ts", "../../providers/openrouter.ts", "../../models/
|
|
3
|
+
"sources": ["../../plugin.ts", "../../init.ts", "../../utils/config.ts", "../../models/embedding.ts", "../../utils/events.ts", "../../models/image.ts", "../../providers/openrouter.ts", "../../models/text.ts", "../../index.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import {\n type GenerateTextParams,\n type IAgentRuntime,\n type ImageDescriptionParams,\n type ImageGenerationParams,\n
|
|
5
|
+
"import {\n type GenerateTextParams,\n type IAgentRuntime,\n type ImageDescriptionParams,\n type ImageGenerationParams,\n logger,\n ModelType,\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 {\n handleActionPlanner,\n handleResponseHandler,\n handleTextLarge,\n handleTextMedium,\n handleTextMega,\n handleTextNano,\n handleTextSmall,\n} 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();\nconst TEXT_NANO_MODEL_TYPE = (ModelType.TEXT_NANO ?? \"TEXT_NANO\") as string;\nconst TEXT_MEDIUM_MODEL_TYPE = (ModelType.TEXT_MEDIUM ?? \"TEXT_MEDIUM\") as string;\nconst TEXT_MEGA_MODEL_TYPE = (ModelType.TEXT_MEGA ?? \"TEXT_MEGA\") as string;\nconst RESPONSE_HANDLER_MODEL_TYPE = (ModelType.RESPONSE_HANDLER ?? \"RESPONSE_HANDLER\") as string;\nconst ACTION_PLANNER_MODEL_TYPE = (ModelType.ACTION_PLANNER ?? \"ACTION_PLANNER\") as string;\n\nexport const openrouterPlugin: Plugin = {\n name: \"openrouter\",\n description: \"OpenRouter multi-model AI gateway plugin\",\n autoEnable: {\n envKeys: [\"OPENROUTER_API_KEY\"],\n },\n\n config: {\n OPENROUTER_API_KEY: env.OPENROUTER_API_KEY ?? null,\n OPENROUTER_BASE_URL: env.OPENROUTER_BASE_URL ?? null,\n OPENROUTER_NANO_MODEL: env.OPENROUTER_NANO_MODEL ?? null,\n OPENROUTER_MEDIUM_MODEL: env.OPENROUTER_MEDIUM_MODEL ?? null,\n OPENROUTER_SMALL_MODEL: env.OPENROUTER_SMALL_MODEL ?? null,\n OPENROUTER_LARGE_MODEL: env.OPENROUTER_LARGE_MODEL ?? null,\n OPENROUTER_MEGA_MODEL: env.OPENROUTER_MEGA_MODEL ?? null,\n OPENROUTER_RESPONSE_HANDLER_MODEL: env.OPENROUTER_RESPONSE_HANDLER_MODEL ?? null,\n OPENROUTER_SHOULD_RESPOND_MODEL: env.OPENROUTER_SHOULD_RESPOND_MODEL ?? null,\n OPENROUTER_ACTION_PLANNER_MODEL: env.OPENROUTER_ACTION_PLANNER_MODEL ?? null,\n OPENROUTER_PLANNER_MODEL: env.OPENROUTER_PLANNER_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 NANO_MODEL: env.NANO_MODEL ?? null,\n MEDIUM_MODEL: env.MEDIUM_MODEL ?? null,\n SMALL_MODEL: env.SMALL_MODEL ?? null,\n LARGE_MODEL: env.LARGE_MODEL ?? null,\n MEGA_MODEL: env.MEGA_MODEL ?? null,\n RESPONSE_HANDLER_MODEL: env.RESPONSE_HANDLER_MODEL ?? null,\n SHOULD_RESPOND_MODEL: env.SHOULD_RESPOND_MODEL ?? null,\n ACTION_PLANNER_MODEL: env.ACTION_PLANNER_MODEL ?? null,\n PLANNER_MODEL: env.PLANNER_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 [TEXT_NANO_MODEL_TYPE]: async (runtime: IAgentRuntime, params: GenerateTextParams) => {\n return handleTextNano(runtime, params);\n },\n\n [ModelType.TEXT_SMALL]: async (runtime: IAgentRuntime, params: GenerateTextParams) => {\n return handleTextSmall(runtime, params);\n },\n\n [TEXT_MEDIUM_MODEL_TYPE]: async (runtime: IAgentRuntime, params: GenerateTextParams) => {\n return handleTextMedium(runtime, params);\n },\n\n [ModelType.TEXT_LARGE]: async (runtime: IAgentRuntime, params: GenerateTextParams) => {\n return handleTextLarge(runtime, params);\n },\n\n [TEXT_MEGA_MODEL_TYPE]: async (runtime: IAgentRuntime, params: GenerateTextParams) => {\n return handleTextMega(runtime, params);\n },\n\n [RESPONSE_HANDLER_MODEL_TYPE]: async (runtime: IAgentRuntime, params: GenerateTextParams) => {\n return handleResponseHandler(runtime, params);\n },\n\n [ACTION_PLANNER_MODEL_TYPE]: async (runtime: IAgentRuntime, params: GenerateTextParams) => {\n return handleActionPlanner(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 runModel = runtime.useModel.bind(runtime);\n const text = await runModel(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 runModel = runtime.useModel.bind(runtime);\n const text = await runModel(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_structured_output_via_text_large\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n const runModel = runtime.useModel.bind(runtime);\n const result = await runModel(ModelType.TEXT_LARGE, {\n prompt: \"Create a simple JSON object with a message field saying hello\",\n responseSchema: {\n type: \"object\",\n properties: { message: { type: \"string\" } },\n required: [\"message\"],\n },\n } as Parameters<typeof runModel>[1]);\n logger.log({ result }, \"Generated structured output via TEXT_LARGE\");\n if (!result) {\n throw new Error(\"Failed to generate structured output\");\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error in test_structured_output_via_text_large: ${message}`);\n throw error;\n }\n },\n },\n {\n name: \"openrouter_test_text_embedding\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n const runModel = runtime.useModel.bind(runtime);\n const embedding = await runModel(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",
|
|
6
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 // Truncate to stay within embedding model token limits (~4 chars per token)\n const maxChars = 8_000 * 4;\n if (text.length > maxChars) {\n logger.warn(\n `[OpenRouter] Embedding input too long (~${Math.ceil(text.length / 4)} tokens), truncating to ~8000 tokens`\n );\n text = text.slice(0, maxChars);\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,
|
|
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",
|
|
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 getNanoModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"OPENROUTER_NANO_MODEL\") ??\n getSetting(runtime, \"NANO_MODEL\") ??\n getSmallModel(runtime)\n );\n}\n\nexport function getMediumModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"OPENROUTER_MEDIUM_MODEL\") ??\n getSetting(runtime, \"MEDIUM_MODEL\") ??\n getSmallModel(runtime)\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 getMegaModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"OPENROUTER_MEGA_MODEL\") ??\n getSetting(runtime, \"MEGA_MODEL\") ??\n getLargeModel(runtime)\n );\n}\n\nexport function getResponseHandlerModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"OPENROUTER_RESPONSE_HANDLER_MODEL\") ??\n getSetting(runtime, \"OPENROUTER_SHOULD_RESPOND_MODEL\") ??\n getSetting(runtime, \"RESPONSE_HANDLER_MODEL\") ??\n getSetting(runtime, \"SHOULD_RESPOND_MODEL\") ??\n getNanoModel(runtime)\n );\n}\n\nexport function getActionPlannerModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"OPENROUTER_ACTION_PLANNER_MODEL\") ??\n getSetting(runtime, \"OPENROUTER_PLANNER_MODEL\") ??\n getSetting(runtime, \"ACTION_PLANNER_MODEL\") ??\n getSetting(runtime, \"PLANNER_MODEL\") ??\n getMediumModel(runtime)\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 // Truncate to stay within embedding model token limits (~4 chars per token)\n const maxChars = 8_000 * 4;\n if (text.length > maxChars) {\n logger.warn(\n `[OpenRouter] Embedding input too long (~${Math.ceil(text.length / 4)} tokens), truncating to ~8000 tokens`\n );\n text = text.slice(0, maxChars);\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 // @trajectory-allow Embeddings return numeric retrieval vectors, not generative LLM text.\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, embeddingModelName);\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 { EventPayload, IAgentRuntime, ModelTypeName } from \"@elizaos/core\";\nimport { EventType } from \"@elizaos/core\";\n\ninterface AIUsage {\n inputTokens?: number;\n outputTokens?: number;\n promptTokens?: number;\n completionTokens?: number;\n totalTokens?: number;\n}\n\nexport type NormalizedModelUsage = {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n};\n\nexport function emitModelUsageEvent(\n runtime: IAgentRuntime,\n modelType: ModelTypeName,\n _prompt: string,\n usage: AIUsage,\n modelName?: string,\n modelLabel?: string\n): NormalizedModelUsage {\n const inputTokens = usage.inputTokens ?? usage.promptTokens ?? 0;\n const outputTokens = usage.outputTokens ?? usage.completionTokens ?? 0;\n const totalTokens = usage.totalTokens ?? inputTokens + outputTokens;\n const model = modelName?.trim() || modelLabel?.trim() || String(modelType);\n\n runtime.emitEvent(EventType.MODEL_USED, {\n runtime,\n source: \"openrouter\",\n provider: \"openrouter\",\n type: modelType,\n model,\n modelName: model,\n modelLabel: modelLabel ?? String(modelType),\n tokens: {\n prompt: inputTokens,\n completion: outputTokens,\n total: totalTokens,\n },\n } as EventPayload);\n\n return {\n promptTokens: inputTokens,\n completionTokens: outputTokens,\n totalTokens,\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, modelName);\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, modelName);\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
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, type LanguageModel } 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 model = openrouter.chat(modelName) as LanguageModel;\n const { object, usage } = params.schema\n ? await generateObject({\n model,\n schema: jsonSchema(params.schema as JSONSchema7),\n output: \"object\",\n prompt: params.prompt,\n temperature,\n })\n : await generateObject({\n model,\n output: \"no-schema\",\n prompt: params.prompt,\n temperature,\n });\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
|
|
14
|
-
"import type { GenerateTextParams, IAgentRuntime, TextStreamResult } from \"@elizaos/core\";\nimport { ModelType } from \"@elizaos/core\";\nimport { generateText, type LanguageModel, streamText } from \"ai\";\n\nimport { createOpenRouterProvider } from \"../providers\";\nimport { getLargeModel, getSmallModel } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\nconst RESPONSES_ROUTED_PREFIXES = [\"openai/\", \"anthropic/\"] as const;\nconst NO_SAMPLING_MODEL_PATTERNS = [\"o1\", \"o3\", \"o4\", \"gpt-5\", \"gpt-5-mini\"] as const;\n\nfunction supportsSamplingParameters(modelName: string): boolean {\n const lowerModelName = modelName.toLowerCase();\n\n if (RESPONSES_ROUTED_PREFIXES.some((prefix) => lowerModelName.startsWith(prefix))) {\n return false;\n }\n\n return !NO_SAMPLING_MODEL_PATTERNS.some((pattern) => lowerModelName.includes(pattern));\n}\n\nfunction buildGenerateParams(\n runtime: IAgentRuntime,\n modelType: typeof ModelType.TEXT_SMALL | typeof ModelType.TEXT_LARGE,\n params: GenerateTextParams\n) {\n const { prompt } = params;\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 const supportsSampling = supportsSamplingParameters(modelName);\n const stopSequences =\n Array.isArray(params.stopSequences) && params.stopSequences.length > 0\n ? params.stopSequences\n : undefined;\n const temperature = params.temperature ?? 0.7;\n const frequencyPenalty = params.frequencyPenalty ?? 0.7;\n const presencePenalty = params.presencePenalty ?? 0.7;\n\n const generateParams = {\n model: openrouter.chat(modelName) as LanguageModel,\n prompt: prompt,\n system: runtime.character?.system ?? undefined,\n ...(supportsSampling\n ? {\n temperature: temperature,\n frequencyPenalty: frequencyPenalty,\n presencePenalty: presencePenalty,\n ...(stopSequences ? { stopSequences } : {}),\n }\n : {}),\n maxOutputTokens: resolvedMaxOutput,\n };\n\n return { generateParams, modelName, modelLabel, prompt };\n}\n\ntype GenerateParams = ReturnType<typeof buildGenerateParams>[\"generateParams\"];\n\nfunction handleStreamingGeneration(\n runtime: IAgentRuntime,\n modelType: typeof ModelType.TEXT_SMALL | typeof ModelType.TEXT_LARGE,\n generateParams: GenerateParams,\n prompt: string,\n _modelLabel: string\n): TextStreamResult {\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 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"
|
|
12
|
+
"import type {\n GenerateTextParams,\n IAgentRuntime,\n ModelTypeName,\n TextStreamResult,\n} from \"@elizaos/core\";\nimport {\n buildCanonicalSystemPrompt,\n dropDuplicateLeadingSystemMessage,\n ModelType,\n resolveEffectiveSystemPrompt,\n} from \"@elizaos/core\";\nimport {\n generateText,\n type JSONSchema7,\n type LanguageModel,\n type ModelMessage,\n streamText,\n type ToolChoice,\n type ToolSet,\n type UserContent,\n} from \"ai\";\n\nimport { createOpenRouterProvider } from \"../providers\";\nimport {\n getActionPlannerModel,\n getLargeModel,\n getMediumModel,\n getMegaModel,\n getNanoModel,\n getResponseHandlerModel,\n getSmallModel,\n} from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\nconst RESPONSES_ROUTED_PREFIXES = [\"openai/\", \"anthropic/\"] as const;\nconst NO_SAMPLING_MODEL_PATTERNS = [\"o1\", \"o3\", \"o4\", \"gpt-5\", \"gpt-5-mini\"] as const;\nconst TEXT_NANO_MODEL_TYPE = (ModelType.TEXT_NANO ?? \"TEXT_NANO\") as ModelTypeName;\nconst TEXT_MEDIUM_MODEL_TYPE = (ModelType.TEXT_MEDIUM ?? \"TEXT_MEDIUM\") as ModelTypeName;\nconst TEXT_MEGA_MODEL_TYPE = (ModelType.TEXT_MEGA ?? \"TEXT_MEGA\") as ModelTypeName;\nconst RESPONSE_HANDLER_MODEL_TYPE = (ModelType.RESPONSE_HANDLER ??\n \"RESPONSE_HANDLER\") as ModelTypeName;\nconst ACTION_PLANNER_MODEL_TYPE = (ModelType.ACTION_PLANNER ?? \"ACTION_PLANNER\") as ModelTypeName;\ntype ChatAttachment = {\n data: string | Uint8Array | URL;\n mediaType: string;\n filename?: string;\n};\n\ninterface OpenRouterPromptCacheOptions {\n promptCacheKey?: string;\n}\n\ntype GenerateTextParamsWithAttachments = GenerateTextParams & {\n attachments?: ChatAttachment[];\n messages?: ModelMessage[];\n tools?: ToolSet;\n toolChoice?: ToolChoice<ToolSet>;\n responseSchema?: unknown;\n providerOptions?: Record<string, object | unknown> & {\n openrouter?: OpenRouterPromptCacheOptions;\n };\n};\n\ntype NativeOutput = NonNullable<Parameters<typeof generateText<ToolSet>>[0][\"output\"]>;\ntype NativeGenerateTextParams = Parameters<typeof generateText<ToolSet, NativeOutput>>[0];\ntype NativeStreamTextParams = Parameters<typeof streamText<ToolSet, NativeOutput>>[0];\ntype NativePrompt =\n | { prompt: string; messages?: never }\n | { messages: ModelMessage[]; prompt?: never };\ntype NativeTextParams = Omit<NativeGenerateTextParams, \"messages\" | \"prompt\"> &\n Omit<NativeStreamTextParams, \"messages\" | \"prompt\"> &\n NativePrompt;\n\ntype NormalizedUsage = {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n cacheReadInputTokens?: number;\n cacheCreationInputTokens?: number;\n};\n\ntype NativeGenerateTextResult = {\n text: string;\n toolCalls?: unknown[];\n finishReason?: string;\n usage?: NormalizedUsage;\n};\ntype NativeTextModelResult = string & NativeGenerateTextResult;\n\nfunction buildUserContent(params: GenerateTextParamsWithAttachments): UserContent {\n const content: Array<\n | { type: \"text\"; text: string }\n | {\n type: \"file\";\n data: string | Uint8Array | URL;\n mediaType: string;\n filename?: string;\n }\n > = [{ type: \"text\", text: params.prompt }];\n\n for (const attachment of params.attachments ?? []) {\n content.push({\n type: \"file\",\n data: attachment.data,\n mediaType: attachment.mediaType,\n ...(attachment.filename ? { filename: attachment.filename } : {}),\n });\n }\n\n return content;\n}\n\nfunction supportsSamplingParameters(modelName: string): boolean {\n const lowerModelName = modelName.toLowerCase();\n\n if (RESPONSES_ROUTED_PREFIXES.some((prefix) => lowerModelName.startsWith(prefix))) {\n return false;\n }\n\n return !NO_SAMPLING_MODEL_PATTERNS.some((pattern) => lowerModelName.includes(pattern));\n}\n\nfunction buildStructuredOutput(responseSchema: unknown): NativeOutput {\n if (\n responseSchema &&\n typeof responseSchema === \"object\" &&\n \"responseFormat\" in responseSchema &&\n \"parseCompleteOutput\" in responseSchema\n ) {\n return responseSchema as NativeOutput;\n }\n\n const schemaOptions =\n responseSchema && typeof responseSchema === \"object\" && \"schema\" in responseSchema\n ? (responseSchema as { schema: unknown; name?: string; description?: string })\n : { schema: responseSchema };\n\n return {\n name: \"object\",\n responseFormat: Promise.resolve({\n type: \"json\" as const,\n schema: schemaOptions.schema as JSONSchema7,\n ...(schemaOptions.name ? { name: schemaOptions.name } : {}),\n ...(schemaOptions.description ? { description: schemaOptions.description } : {}),\n }),\n async parseCompleteOutput({ text }: { text: string }) {\n return JSON.parse(text);\n },\n async parsePartialOutput(): Promise<undefined> {\n return undefined;\n },\n createElementStreamTransform(): undefined {\n return undefined;\n },\n } satisfies NativeOutput;\n}\n\nfunction usesNativeTextResult(params: GenerateTextParamsWithAttachments): boolean {\n return Boolean(params.messages || params.tools || params.toolChoice || params.responseSchema);\n}\n\ntype TextModelType =\n | typeof TEXT_NANO_MODEL_TYPE\n | typeof ModelType.TEXT_SMALL\n | typeof TEXT_MEDIUM_MODEL_TYPE\n | typeof ModelType.TEXT_LARGE\n | typeof TEXT_MEGA_MODEL_TYPE\n | typeof RESPONSE_HANDLER_MODEL_TYPE\n | typeof ACTION_PLANNER_MODEL_TYPE;\n\nfunction getModelNameForType(runtime: IAgentRuntime, modelType: TextModelType): string {\n switch (modelType) {\n case TEXT_NANO_MODEL_TYPE:\n return getNanoModel(runtime);\n case TEXT_MEDIUM_MODEL_TYPE:\n return getMediumModel(runtime);\n case ModelType.TEXT_SMALL:\n return getSmallModel(runtime);\n case ModelType.TEXT_LARGE:\n return getLargeModel(runtime);\n case TEXT_MEGA_MODEL_TYPE:\n return getMegaModel(runtime);\n case RESPONSE_HANDLER_MODEL_TYPE:\n return getResponseHandlerModel(runtime);\n case ACTION_PLANNER_MODEL_TYPE:\n return getActionPlannerModel(runtime);\n default:\n return getLargeModel(runtime);\n }\n}\n\nfunction getModelLabelForType(modelType: TextModelType): string {\n switch (modelType) {\n case TEXT_NANO_MODEL_TYPE:\n return \"TEXT_NANO\";\n case TEXT_MEDIUM_MODEL_TYPE:\n return \"TEXT_MEDIUM\";\n case ModelType.TEXT_SMALL:\n return \"TEXT_SMALL\";\n case ModelType.TEXT_LARGE:\n return \"TEXT_LARGE\";\n case TEXT_MEGA_MODEL_TYPE:\n return \"TEXT_MEGA\";\n case RESPONSE_HANDLER_MODEL_TYPE:\n return \"RESPONSE_HANDLER\";\n case ACTION_PLANNER_MODEL_TYPE:\n return \"ACTION_PLANNER\";\n default:\n return String(modelType);\n }\n}\n\nfunction buildGenerateParams(\n runtime: IAgentRuntime,\n modelType: TextModelType,\n params: GenerateTextParams\n) {\n const paramsWithAttachments = params as GenerateTextParamsWithAttachments;\n const { prompt } = params;\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 = getModelNameForType(runtime, modelType);\n const modelLabel = getModelLabelForType(modelType);\n const supportsSampling = supportsSamplingParameters(modelName);\n const stopSequences =\n Array.isArray(params.stopSequences) && params.stopSequences.length > 0\n ? params.stopSequences\n : undefined;\n const userContent =\n (paramsWithAttachments.attachments?.length ?? 0) > 0\n ? buildUserContent(paramsWithAttachments)\n : undefined;\n const temperature = params.temperature ?? 0.7;\n const frequencyPenalty = params.frequencyPenalty ?? 0.7;\n const presencePenalty = params.presencePenalty ?? 0.7;\n const systemPrompt = resolveEffectiveSystemPrompt({\n params: paramsWithAttachments,\n fallback: buildCanonicalSystemPrompt({ character: runtime.character }),\n });\n\n const wireMessages = dropDuplicateLeadingSystemMessage(\n paramsWithAttachments.messages,\n systemPrompt\n );\n const promptOrMessages: NativePrompt = paramsWithAttachments.messages\n ? wireMessages && wireMessages.length > 0\n ? { messages: wireMessages }\n : userContent\n ? { messages: [{ role: \"user\" as const, content: userContent }] }\n : { prompt }\n : userContent\n ? { messages: [{ role: \"user\" as const, content: userContent }] }\n : { prompt };\n // Resolve providerOptions: forward any caller-supplied options and merge in\n // the openrouter.promptCacheKey when present. OpenRouter passes prompt_cache_key\n // through to the underlying model provider for prefix caching.\n const rawProviderOptions = paramsWithAttachments.providerOptions;\n const { openrouter: rawOpenrouterOptions, ...restProviderOptions } = rawProviderOptions ?? {};\n const openrouterOptions: Record<string, unknown> = {\n ...(rawOpenrouterOptions ?? {}),\n };\n const mergedProviderOptions: Record<string, unknown> = {\n ...restProviderOptions,\n ...(Object.keys(openrouterOptions).length > 0 ? { openrouter: openrouterOptions } : {}),\n };\n const resolvedProviderOptions =\n Object.keys(mergedProviderOptions).length > 0 ? mergedProviderOptions : undefined;\n\n type NativeProviderOptions = NativeTextParams[\"providerOptions\"];\n const generateParams: NativeTextParams = {\n model: openrouter.chat(modelName) as LanguageModel,\n ...promptOrMessages,\n system: systemPrompt,\n ...(supportsSampling\n ? {\n temperature: temperature,\n frequencyPenalty: frequencyPenalty,\n presencePenalty: presencePenalty,\n ...(stopSequences ? { stopSequences } : {}),\n }\n : {}),\n maxOutputTokens: resolvedMaxOutput,\n ...(paramsWithAttachments.tools ? { tools: paramsWithAttachments.tools } : {}),\n ...(paramsWithAttachments.toolChoice ? { toolChoice: paramsWithAttachments.toolChoice } : {}),\n ...(paramsWithAttachments.responseSchema\n ? { output: buildStructuredOutput(paramsWithAttachments.responseSchema) }\n : {}),\n ...(resolvedProviderOptions\n ? { providerOptions: resolvedProviderOptions as NativeProviderOptions }\n : {}),\n };\n\n return {\n generateParams,\n modelName,\n modelLabel,\n prompt,\n shouldReturnNativeResult: usesNativeTextResult(paramsWithAttachments),\n };\n}\n\ntype GenerateParams = ReturnType<typeof buildGenerateParams>[\"generateParams\"];\n\nfunction handleStreamingGeneration(\n runtime: IAgentRuntime,\n modelType: TextModelType,\n generateParams: GenerateParams,\n prompt: string,\n modelName: string,\n modelLabel: string,\n shouldReturnNativeResult: boolean\n): TextStreamResult {\n const streamResult = streamText(generateParams);\n const usagePromise = Promise.resolve(streamResult.usage).then((usage) => {\n if (!usage) {\n return undefined;\n }\n\n return emitModelUsageEvent(runtime, modelType, prompt, usage, modelName, modelLabel);\n });\n const ignoreUsageError = (): undefined => undefined;\n\n async function* textStreamWithUsage(): AsyncIterable<string> {\n let completed = false;\n try {\n for await (const chunk of streamResult.textStream) {\n yield chunk;\n }\n completed = true;\n } finally {\n if (completed) {\n await usagePromise.catch(ignoreUsageError);\n }\n }\n }\n\n return {\n textStream: textStreamWithUsage(),\n text: Promise.resolve(streamResult.text).then(async (text) => {\n await usagePromise.catch(ignoreUsageError);\n return text;\n }),\n ...(shouldReturnNativeResult ? { toolCalls: Promise.resolve(streamResult.toolCalls) } : {}),\n usage: usagePromise,\n finishReason: Promise.resolve(streamResult.finishReason) as Promise<string | undefined>,\n };\n}\n\nfunction buildNativeTextResult(result: {\n text: string;\n toolCalls?: unknown[];\n finishReason?: string;\n usage?: {\n inputTokens?: number;\n outputTokens?: number;\n promptTokens?: number;\n completionTokens?: number;\n totalTokens?: number;\n cachedInputTokens?: number;\n cacheReadInputTokens?: number;\n cacheCreationInputTokens?: number;\n };\n}): NativeGenerateTextResult {\n const inputTokens = result.usage?.inputTokens ?? result.usage?.promptTokens ?? 0;\n const outputTokens = result.usage?.outputTokens ?? result.usage?.completionTokens ?? 0;\n\n if (!result.usage) {\n return {\n text: result.text,\n toolCalls: result.toolCalls ?? [],\n finishReason: result.finishReason,\n };\n }\n\n const cacheRead = result.usage.cacheReadInputTokens ?? result.usage.cachedInputTokens;\n const cacheCreation = result.usage.cacheCreationInputTokens;\n\n const usage: NormalizedUsage = {\n promptTokens: inputTokens,\n completionTokens: outputTokens,\n totalTokens: result.usage.totalTokens ?? inputTokens + outputTokens,\n ...(typeof cacheRead === \"number\" ? { cacheReadInputTokens: cacheRead } : {}),\n ...(typeof cacheCreation === \"number\" ? { cacheCreationInputTokens: cacheCreation } : {}),\n };\n\n return {\n text: result.text,\n toolCalls: result.toolCalls ?? [],\n finishReason: result.finishReason,\n usage,\n };\n}\n\nasync function generateTextWithModel(\n runtime: IAgentRuntime,\n modelType: TextModelType,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n const { generateParams, modelName, modelLabel, prompt, shouldReturnNativeResult } =\n buildGenerateParams(runtime, modelType, params);\n\n if (params.stream) {\n return handleStreamingGeneration(\n runtime,\n modelType,\n generateParams,\n prompt,\n modelName,\n modelLabel,\n shouldReturnNativeResult\n );\n }\n\n const response = await generateText(generateParams);\n\n if (response.usage) {\n emitModelUsageEvent(runtime, modelType, prompt, response.usage, modelName, modelLabel);\n }\n\n if (shouldReturnNativeResult) {\n return buildNativeTextResult(response) as NativeTextModelResult;\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 handleTextNano(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n return generateTextWithModel(runtime, TEXT_NANO_MODEL_TYPE, params);\n}\n\nexport async function handleTextMedium(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n return generateTextWithModel(runtime, TEXT_MEDIUM_MODEL_TYPE, 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\nexport async function handleTextMega(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n return generateTextWithModel(runtime, TEXT_MEGA_MODEL_TYPE, params);\n}\n\nexport async function handleResponseHandler(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n return generateTextWithModel(runtime, RESPONSE_HANDLER_MODEL_TYPE, params);\n}\n\nexport async function handleActionPlanner(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n return generateTextWithModel(runtime, ACTION_PLANNER_MODEL_TYPE, params);\n}\n",
|
|
13
|
+
"import openrouterPluginImpl from \"./plugin\";\n\nconst openrouterPlugin = openrouterPluginImpl;\n\nexport * from \"./types\";\nexport * from \"./utils/config\";\nexport { openrouterPlugin, openrouterPlugin as default };\n"
|
|
15
14
|
],
|
|
16
|
-
"mappings": ";AAAA;AAAA,YAME;AAAA,eACA;AAAA;;;ACPF;;;ACEO,IAAM,mBAAmB;AACzB,IAAM,sBAAsB;AAC5B,IAAM,sBAAsB;AAC5B,IAAM,sBAAsB;AAC5B,IAAM,iCAAiC;AACvC,IAAM,0BAA0B;AAChC,IAAM,+BAA+B;AAE5C,SAAS,WAAW,CAAC,KAAiC;AAAA,EACpD,IAAI,OAAO,YAAY,eAAe,CAAC,QAAQ,KAAK;AAAA,IAClD;AAAA,EACF;AAAA,EACA,MAAM,QAAQ,QAAQ,IAAI;AAAA,EAC1B,OAAO,UAAU,YAAY,YAAY,OAAO,KAAK;AAAA;AAGhD,SAAS,UAAU,CACxB,SACA,KACA,cACoB;AAAA,EACpB,MAAM,QAAQ,QAAQ,WAAW,GAAG;AAAA,EACpC,IAAI,UAAU,aAAa,UAAU,MAAM;AAAA,IACzC,OAAO,OAAO,KAAK;AAAA,EACrB;AAAA,EACA,OAAO,YAAY,GAAG,KAAK;AAAA;AAGtB,SAAS,UAAU,CAAC,SAAgC;AAAA,EACzD,MAAM,aAAa,WAAW,SAAS,6BAA6B;AAAA,EACpE,IACE,OAAO,eAAe,eACrB,WAAuC,YACxC,YACA;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,OAAO,WAAW,SAAS,uBAAuB,gBAAgB,KAAK;AAAA;AAGlE,SAAS,SAAS,CAAC,SAA4C;AAAA,EACpE,OAAO,WAAW,SAAS,oBAAoB;AAAA;AAG1C,SAAS,aAAa,CAAC,SAAgC;AAAA,EAC5D,OACE,WAAW,SAAS,wBAAwB,KAC5C,WAAW,SAAS,eAAe,mBAAmB,KACtD;AAAA;AAIG,SAAS,aAAa,CAAC,SAAgC;AAAA,EAC5D,OACE,WAAW,SAAS,wBAAwB,KAC5C,WAAW,SAAS,eAAe,mBAAmB,KACtD;AAAA;AAIG,SAAS,aAAa,CAAC,SAAgC;AAAA,EAC5D,OACE,WAAW,SAAS,wBAAwB,KAC5C,WAAW,SAAS,eAAe,mBAAmB,KACtD;AAAA;AAIG,SAAS,uBAAuB,CAAC,SAAgC;AAAA,EACtE,OACE,WAAW,SAAS,mCAAmC,KACvD,WAAW,SAAS,0BAA0B,8BAA8B,KAC5E;AAAA;AAIG,SAAS,iBAAiB,CAAC,SAAgC;AAAA,EAChE,OACE,WAAW,SAAS,4BAA4B,KAChD,WAAW,SAAS,mBAAmB,uBAAuB,KAC9D;AAAA;AAIG,SAAS,sBAAsB,CAAC,SAAgC;AAAA,EACrE,MAAM,UACJ,WAAW,SAAS,iCAAiC,KACrD,WAAW,SAAS,sBAAsB;AAAA,EAC5C,OAAO,UAAU,SAAS,SAAS,EAAE,IAAI;AAAA;AAGpC,SAAS,uBAAuB,CAAC,SAAiC;AAAA,EACvE,MAAM,UAAU,WAAW,SAAS,kCAAkC,OAAO;AAAA,EAC7E,OAAO,SAAS,YAAY,MAAM;AAAA;;;AD5FnC,WAAuC,wBAAwB;AAEzD,SAAS,oBAAoB,CAClC,SACA,SACM;AAAA,GACL,YAAY;AAAA,IACX,IAAI;AAAA,MACF,MAAM,YACJ,OAAO,eAAe,eAAgB,WAAuC;AAAA,MAC/E,IAAI,WAAW;AAAA,QACb;AAAA,MACF;AAAA,MAEA,IAAI,CAAC,UAAU,OAAO,GAAG;AAAA,QACvB,OAAO,KACL,yFACF;AAAA,QACA;AAAA,MACF;AAAA,MAEA,MAAM,UAAU,WAAW,OAAO;AAAA,MAClC,MAAM,WAAW,MAAM,MAAM,GAAG,kBAAkB;AAAA,QAChD,SAAS,EAAE,eAAe,UAAU,UAAU,OAAO,IAAI;AAAA,MAC3D,CAAC;AAAA,MAED,IAAI,CAAC,SAAS,IAAI;AAAA,QAChB,OAAO,KAAK,yCAAyC,SAAS,YAAY;AAAA,MAC5E,EAAO;AAAA,QACL,OAAO,IAAI,2CAA2C;AAAA;AAAA,MAExD,OAAO,OAAgB;AAAA,MACvB,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MACrE,OAAO,KAAK,wCAAwC,SAAS;AAAA;AAAA,KAE9D;AAAA;;;AErCL,mBAAS;;;ACAT,mBAAS;AAUF,SAAS,mBAAmB,CACjC,UACA,WACA,QACA,OACM;AAAA,EACN,MAAM,cAAc,MAAM,eAAe,MAAM,gBAAgB;AAAA,EAC/D,MAAM,eAAe,MAAM,gBAAgB,MAAM,oBAAoB;AAAA,EACrE,MAAM,cAAc,MAAM,eAAe,cAAc;AAAA,EAEvD,QAAO,MAAM;AAAA,IACX,OAAO;AAAA,IACP;AAAA,IACA,UAAU;AAAA,IACV,QAAQ,OAAO,UAAU,GAAG,GAAG;AAAA,IAC/B,OAAO;AAAA,MACL,cAAc;AAAA,MACd,kBAAkB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,WAAW,KAAK,IAAI;AAAA,EACtB,CAAC;AAAA;;;AD1BH,eAAsB,mBAAmB,CACvC,SACA,QACmB;AAAA,EACnB,MAAM,qBAAqB,kBAAkB,OAAO;AAAA,EACpD,MAAM,qBAAqB,OAAO,SAChC,WAAW,SAAS,iCAAiC,KACnD,WAAW,SAAS,sBAAsB,KAC1C,QACF,EACF;AAAA,EAEA,IAAI,CAAC,OAAO,OAAO,WAAW,EAAE,SAAS,kBAAkB,GAAG;AAAA,IAC5D,MAAM,WAAW,gCAAgC,uCAAuC,OAAO,OAAO,WAAW,EAAE,KAAK,IAAI;AAAA,IAC5H,QAAO,MAAM,QAAQ;AAAA,IACrB,MAAM,IAAI,MAAM,QAAQ;AAAA,EAC1B;AAAA,EAEA,IAAI,WAAW,MAAM;AAAA,IACnB,MAAM,aAAa,MAAM,kBAAkB,EAAE,KAAK,CAAC;AAAA,IACnD,WAAW,KAAK;AAAA,IAChB,OAAO;AAAA,EACT;AAAA,EAEA,IAAI;AAAA,EACJ,IAAI,OAAO,WAAW,UAAU;AAAA,IAC9B,OAAO;AAAA,EACT,EAAO,SAAI,OAAO,WAAW,YAAY,OAAO,MAAM;AAAA,IACpD,OAAO,OAAO;AAAA,EAChB,EAAO;AAAA,IACL,MAAM,WAAW;AAAA,IACjB,QAAO,KAAK,QAAQ;AAAA,IACpB,MAAM,iBAAiB,MAAM,kBAAkB,EAAE,KAAK,CAAC;AAAA,IACvD,eAAe,KAAK;AAAA,IACpB,OAAO;AAAA;AAAA,EAGT,IAAI,CAAC,KAAK,KAAK,GAAG;AAAA,IAChB,MAAM,WAAW;AAAA,IACjB,QAAO,KAAK,QAAQ;AAAA,IACpB,MAAM,iBAAiB,MAAM,kBAAkB,EAAE,KAAK,CAAC;AAAA,IACvD,eAAe,KAAK;AAAA,IACpB,OAAO;AAAA,EACT;AAAA,EAGA,MAAM,WAAW,OAAQ;AAAA,EACzB,IAAI,KAAK,SAAS,UAAU;AAAA,IAC1B,QAAO,KACL,2CAA2C,KAAK,KAAK,KAAK,SAAS,CAAC,uCACtE;AAAA,IACA,OAAO,KAAK,MAAM,GAAG,QAAQ;AAAA,EAC/B;AAAA,EAEA,MAAM,SAAS,UAAU,OAAO;AAAA,EAChC,IAAI,CAAC,QAAQ;AAAA,IACX,MAAM,WAAW;AAAA,IACjB,QAAO,MAAM,QAAQ;AAAA,IACrB,MAAM,IAAI,MAAM,QAAQ;AAAA,EAC1B;AAAA,EAEA,MAAM,UAAU,WAAW,OAAO;AAAA,EAElC,IAAI;AAAA,IACF,MAAM,WAAW,MAAM,MAAM,GAAG,sBAAsB;AAAA,MACpD,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,eAAe,UAAU;AAAA,QACzB,gBAAgB;AAAA,QAChB,gBAAgB,WAAW,SAAS,yBAAyB,KAAK;AAAA,QAClE,WAAW,WAAW,SAAS,oBAAoB,KAAK;AAAA,MAC1D;AAAA,MACA,MAAM,KAAK,UAAU;AAAA,QACnB,OAAO;AAAA,QACP,OAAO;AAAA,MACT,CAAC;AAAA,IACH,CAAC;AAAA,IAED,IAAI,CAAC,SAAS,IAAI;AAAA,MAChB,QAAO,MAAM,yBAAyB,SAAS,YAAY,SAAS,YAAY;AAAA,MAChF,MAAM,IAAI,MAAM,yBAAyB,SAAS,YAAY,SAAS,YAAY;AAAA,IACrF;AAAA,IAEA,MAAM,OAAQ,MAAM,SAAS,KAAK;AAAA,IAKlC,IAAI,CAAC,MAAM,OAAO,IAAI,WAAW;AAAA,MAC/B,QAAO,MAAM,gCAAgC;AAAA,MAC7C,MAAM,IAAI,MAAM,gCAAgC;AAAA,IAClD;AAAA,IAEA,MAAM,YAAY,KAAK,KAAK,GAAG;AAAA,IAE/B,IAAI,CAAC,MAAM,QAAQ,SAAS,KAAK,UAAU,WAAW,oBAAoB;AAAA,MACxE,MAAM,WAAW,oBAAoB,WAAW,UAAU,yCAAyC;AAAA,MACnG,QAAO,MAAM,QAAQ;AAAA,MACrB,MAAM,iBAAiB,MAAM,kBAAkB,EAAE,KAAK,CAAC;AAAA,MACvD,eAAe,KAAK;AAAA,MACpB,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,KAAK,OAAO;AAAA,MACd,MAAM,QAAQ;AAAA,QACZ,aAAa,KAAK,MAAM;AAAA,QACxB,cAAc;AAAA,QACd,aAAa,KAAK,MAAM;AAAA,MAC1B;AAAA,MAEA,oBAAoB,SAAS,UAAU,gBAAgB,MAAM,KAAK;AAAA,IACpE;AAAA,IAEA,OAAO;AAAA,IACP,OAAO,OAAgB;AAAA,IACvB,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IACrE,QAAO,MAAM,+BAA+B,SAAS;AAAA,IACrD,MAAM,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO;AAAA;AAAA;;;AE1H5D,mBAAS,sBAAQ;AACjB;;;ACDA;AAGO,SAAS,wBAAwB,CAAC,SAAwB;AAAA,EAC/D,MAAM,SAAS,UAAU,OAAO;AAAA,EAChC,MAAM,YACJ,OAAO,eAAe,eAAgB,WAAuC;AAAA,EAC/E,MAAM,UAAU,WAAW,OAAO;AAAA,EAElC,OAAO,iBAAiB;AAAA,IACtB,QAAQ,YAAY,YAAY;AAAA,IAChC;AAAA,EACF,CAAC;AAAA;;ADLH,eAAsB,sBAAsB,CAC1C,SACA,QACiB;AAAA,EACjB,MAAM,aAAa,yBAAyB,OAAO;AAAA,EACnD,MAAM,YAAY,cAAc,OAAO;AAAA,EAEvC,MAAM,WAAW,OAAO,WAAW,WAAW,SAAS,OAAO;AAAA,EAC9D,MAAM,SACJ,OAAO,WAAW,WAAW,wBAAwB,OAAO,UAAU;AAAA,EAExE,IAAI;AAAA,IACF,MAAM,iBAAiB;AAAA,MACrB,OAAO,WAAW,KAAK,SAAS;AAAA,MAChC,UAAU;AAAA,QACR;AAAA,UACE,MAAM;AAAA,UACN,SAAS;AAAA,YACP,EAAE,MAAM,QAAiB,MAAM,OAAO;AAAA,YACtC,EAAE,MAAM,SAAkB,OAAO,SAAS;AAAA,UAC5C;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,MAAM,WAAW,MAAM,aAAa,cAAc;AAAA,IAElD,IAAI,SAAS,OAAO;AAAA,MAClB,oBAAoB,SAAS,WAAU,mBAAmB,QAAQ,SAAS,KAAK;AAAA,IAClF;AAAA,IAEA,OAAO,SAAS;AAAA,IAChB,OAAO,OAAgB;AAAA,IACvB,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IACrE,QAAO,MAAM,2BAA2B,SAAS;AAAA,IACjD,MAAM,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO;AAAA;AAAA;AAI5D,eAAsB,qBAAqB,CACzC,SACA,QACiD;AAAA,EACjD,MAAM,aAAa,yBAAyB,OAAO;AAAA,EACnD,MAAM,YAAY,wBAAwB,OAAO;AAAA,EAEjD,IAAI;AAAA,IACF,MAAM,iBAAiB;AAAA,MACrB,OAAO,WAAW,KAAK,SAAS;AAAA,MAChC,QAAQ,sBAAsB,OAAO;AAAA,IACvC;AAAA,IAEA,MAAM,WAAW,MAAM,aAAa,cAAc;AAAA,IAElD,IAAI,SAAS,OAAO;AAAA,MAClB,oBAAoB,SAAS,WAAU,OAAO,OAAO,QAAQ,SAAS,KAAK;AAAA,IAC7E;AAAA,IAEA,OAAO;AAAA,MACL,UAAU,SAAS;AAAA,MACnB,SAAS,OAAO;AAAA,IAClB;AAAA,IACA,OAAO,OAAgB;AAAA,IACvB,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IACrE,QAAO,MAAM,2BAA2B,SAAS;AAAA,IACjD,MAAM,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO;AAAA;AAAA;;;AEzE5D;AAAA,eAGE;AAAA;AAGF;;;ACNA,mBAAyB;AAWlB,SAAS,2BAA2B,CAAC,OAA2C;AAAA,EACrF,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,EACrE,QAAO,MAAM,4BAA4B,SAAS;AAAA,EAClD,OAAO,EAAE,OAAO,QAAQ;AAAA;;;ADA1B,eAAe,uBAAuB,CACpC,SACA,WACA,QACoC;AAAA,EACpC,MAAM,aAAa,yBAAyB,OAAO;AAAA,EACnD,MAAM,YACJ,cAAc,WAAU,eAAe,cAAc,OAAO,IAAI,cAAc,OAAO;AAAA,EAEvF,MAAM,cAAc,OAAO,eAAe;AAAA,EAE1C,IAAI;AAAA,IACF,MAAM,QAAQ,WAAW,KAAK,SAAS;AAAA,IACvC,QAAQ,QAAQ,UAAU,OAAO,SAC7B,MAAM,eAAe;AAAA,MACnB;AAAA,MACA,QAAQ,WAAW,OAAO,MAAqB;AAAA,MAC/C,QAAQ;AAAA,MACR,QAAQ,OAAO;AAAA,MACf;AAAA,IACF,CAAC,IACD,MAAM,eAAe;AAAA,MACnB;AAAA,MACA,QAAQ;AAAA,MACR,QAAQ,OAAO;AAAA,MACf;AAAA,IACF,CAAC;AAAA,IAEL,IAAI,OAAO;AAAA,MACT,oBAAoB,SAAS,WAAW,OAAO,QAAQ,KAAK;AAAA,IAC9D;AAAA,IACA,OAAO;AAAA,IACP,OAAO,OAAgB;AAAA,IACvB,OAAO,4BAA4B,KAAK;AAAA;AAAA;AAI5C,eAAsB,iBAAiB,CACrC,SACA,QACoC;AAAA,EACpC,OAAO,wBAAwB,SAAS,WAAU,cAAc,MAAM;AAAA;AAGxE,eAAsB,iBAAiB,CACrC,SACA,QACoC;AAAA,EACpC,OAAO,wBAAwB,SAAS,WAAU,cAAc,MAAM;AAAA;;;AE7DxE,sBAAS;AACT,yBAAS;AAMT,IAAM,4BAA4B,CAAC,WAAW,YAAY;AAC1D,IAAM,6BAA6B,CAAC,MAAM,MAAM,MAAM,SAAS,YAAY;AAE3E,SAAS,0BAA0B,CAAC,WAA4B;AAAA,EAC9D,MAAM,iBAAiB,UAAU,YAAY;AAAA,EAE7C,IAAI,0BAA0B,KAAK,CAAC,WAAW,eAAe,WAAW,MAAM,CAAC,GAAG;AAAA,IACjF,OAAO;AAAA,EACT;AAAA,EAEA,OAAO,CAAC,2BAA2B,KAAK,CAAC,YAAY,eAAe,SAAS,OAAO,CAAC;AAAA;AAGvF,SAAS,mBAAmB,CAC1B,SACA,WACA,QACA;AAAA,EACA,QAAQ,WAAW;AAAA,EACnB,MAAM,gBAAgB;AAAA,EAItB,MAAM,oBAAoB,cAAc,mBAAmB,cAAc,aAAa;AAAA,EAEtF,MAAM,aAAa,yBAAyB,OAAO;AAAA,EACnD,MAAM,YACJ,cAAc,WAAU,aAAa,cAAc,OAAO,IAAI,cAAc,OAAO;AAAA,EACrF,MAAM,aAAa,cAAc,WAAU,aAAa,eAAe;AAAA,EACvE,MAAM,mBAAmB,2BAA2B,SAAS;AAAA,EAC7D,MAAM,gBACJ,MAAM,QAAQ,OAAO,aAAa,KAAK,OAAO,cAAc,SAAS,IACjE,OAAO,gBACP;AAAA,EACN,MAAM,cAAc,OAAO,eAAe;AAAA,EAC1C,MAAM,mBAAmB,OAAO,oBAAoB;AAAA,EACpD,MAAM,kBAAkB,OAAO,mBAAmB;AAAA,EAElD,MAAM,iBAAiB;AAAA,IACrB,OAAO,WAAW,KAAK,SAAS;AAAA,IAChC;AAAA,IACA,QAAQ,QAAQ,WAAW,UAAU;AAAA,OACjC,mBACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,SACI,gBAAgB,EAAE,cAAc,IAAI,CAAC;AAAA,IAC3C,IACA,CAAC;AAAA,IACL,iBAAiB;AAAA,EACnB;AAAA,EAEA,OAAO,EAAE,gBAAgB,WAAW,YAAY,OAAO;AAAA;AAKzD,SAAS,yBAAyB,CAChC,SACA,WACA,gBACA,QACA,aACkB;AAAA,EAClB,MAAM,eAAe,WAAW,cAAc;AAAA,EAE9C,OAAO;AAAA,IACL,YAAY,aAAa;AAAA,IACzB,MAAM,QAAQ,QAAQ,aAAa,IAAI;AAAA,IACvC,OAAO,QAAQ,QAAQ,aAAa,KAAK,EAAE,KAAK,CAAC,UAAU;AAAA,MACzD,IAAI,OAAO;AAAA,QACT,oBAAoB,SAAS,WAAW,QAAQ,KAAK;AAAA,QACrD,MAAM,cAAc,MAAM,eAAe;AAAA,QACzC,MAAM,eAAe,MAAM,gBAAgB;AAAA,QAC3C,OAAO;AAAA,UACL,cAAc;AAAA,UACd,kBAAkB;AAAA,UAClB,aAAa,cAAc;AAAA,QAC7B;AAAA,MACF;AAAA,MACA;AAAA,KACD;AAAA,IACD,cAAc,QAAQ,QAAQ,aAAa,YAAY;AAAA,EACzD;AAAA;AAGF,eAAe,qBAAqB,CAClC,SACA,WACA,QACoC;AAAA,EACpC;AAAA,IACE;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,MACE,oBAAoB,SAAS,WAAW,MAAM;AAAA,EAElD,IAAI,OAAO,QAAQ;AAAA,IACjB,OAAO,0BAA0B,SAAS,WAAW,gBAAgB,QAAQ,UAAU;AAAA,EACzF;AAAA,EAEA,MAAM,WAAW,MAAM,cAAa,cAAc;AAAA,EAElD,IAAI,SAAS,OAAO;AAAA,IAClB,oBAAoB,SAAS,WAAW,QAAQ,SAAS,KAAK;AAAA,EAChE;AAAA,EAEA,OAAO,SAAS;AAAA;AAGlB,eAAsB,eAAe,CACnC,SACA,QACoC;AAAA,EACpC,OAAO,sBAAsB,SAAS,WAAU,YAAY,MAAM;AAAA;AAGpE,eAAsB,eAAe,CACnC,SACA,QACoC;AAAA,EACpC,OAAO,sBAAsB,SAAS,WAAU,YAAY,MAAM;AAAA;;;AT9GpE,SAAS,aAAa,GAAmB;AAAA,EACvC,IAAI,OAAO,YAAY,eAAe,CAAC,QAAQ,KAAK;AAAA,IAClD,OAAO,CAAC;AAAA,EACV;AAAA,EACA,OAAO,QAAQ;AAAA;AAGjB,IAAM,MAAM,cAAc;AAEnB,IAAM,mBAA2B;AAAA,EACtC,MAAM;AAAA,EACN,aAAa;AAAA,EAEb,QAAQ;AAAA,IACN,oBAAoB,IAAI,sBAAsB;AAAA,IAC9C,qBAAqB,IAAI,uBAAuB;AAAA,IAChD,wBAAwB,IAAI,0BAA0B;AAAA,IACtD,wBAAwB,IAAI,0BAA0B;AAAA,IACtD,wBAAwB,IAAI,0BAA0B;AAAA,IACtD,mCAAmC,IAAI,qCAAqC;AAAA,IAC5E,4BAA4B,IAAI,8BAA8B;AAAA,IAC9D,iCAAiC,IAAI,mCAAmC;AAAA,IACxE,gCAAgC,IAAI,kCAAkC;AAAA,IACtE,aAAa,IAAI,eAAe;AAAA,IAChC,aAAa,IAAI,eAAe;AAAA,IAChC,aAAa,IAAI,eAAe;AAAA,IAChC,wBAAwB,IAAI,0BAA0B;AAAA,IACtD,iBAAiB,IAAI,mBAAmB;AAAA,IACxC,sBAAsB,IAAI,wBAAwB;AAAA,EACpD;AAAA,OAEM,KAAI,CAAC,QAAiC,SAAwB;AAAA,IAClE,qBAAqB,QAAQ,OAAO;AAAA;AAAA,EAGtC,QAAQ;AAAA,KACL,WAAU,aAAa,OAAO,SAAwB,WAA+B;AAAA,MACpF,OAAO,gBAAgB,SAAS,MAAM;AAAA;AAAA,KAGvC,WAAU,aAAa,OAAO,SAAwB,WAA+B;AAAA,MACpF,OAAO,gBAAgB,SAAS,MAAM;AAAA;AAAA,KAGvC,WAAU,eAAe,OACxB,SACA,WACuC;AAAA,MACvC,OAAO,kBAAkB,SAAS,MAAM;AAAA;AAAA,KAGzC,WAAU,eAAe,OACxB,SACA,WACuC;AAAA,MACvC,OAAO,kBAAkB,SAAS,MAAM;AAAA;AAAA,KAGzC,WAAU,oBAAoB,OAC7B,SACA,WACG;AAAA,MACH,MAAM,cAAc,MAAM,uBAAuB,SAAS,MAAM;AAAA,MAChE,OAAO,EAAE,OAAO,IAAI,YAAY;AAAA;AAAA,KAGjC,WAAU,QAAQ,OAAO,SAAwB,WAAkC;AAAA,MAClF,MAAM,SAAS,MAAM,sBAAsB,SAAS,MAAM;AAAA,MAC1D,OAAO,CAAC,EAAE,KAAK,OAAO,SAAS,CAAC;AAAA;AAAA,KAGjC,WAAU,iBAAiB,OAC1B,SACA,WACG;AAAA,MACH,OAAO,oBAAoB,SAAS,MAAM;AAAA;AAAA,EAE9C;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,QACL;AAAA,UACE,MAAM;AAAA,UACN,IAAI,OAAO,YAA2B;AAAA,YACpC,IAAI;AAAA,cACF,MAAM,OAAO,MAAM,QAAQ,SAAS,WAAU,YAAY;AAAA,gBACxD,QAAQ;AAAA,cACV,CAAC;AAAA,cACD,IAAI,KAAK,WAAW,GAAG;AAAA,gBACrB,MAAM,IAAI,MAAM,yBAAyB;AAAA,cAC3C;AAAA,cACA,QAAO,IAAI,EAAE,KAAK,GAAG,gCAAgC;AAAA,cACrD,OAAO,OAAgB;AAAA,cACvB,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,cACrE,QAAO,MAAM,6BAA6B,SAAS;AAAA,cACnD,MAAM;AAAA;AAAA;AAAA,QAGZ;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,IAAI,OAAO,YAA2B;AAAA,YACpC,IAAI;AAAA,cACF,MAAM,OAAO,MAAM,QAAQ,SAAS,WAAU,YAAY;AAAA,gBACxD,QAAQ;AAAA,cACV,CAAC;AAAA,cACD,IAAI,KAAK,WAAW,GAAG;AAAA,gBACrB,MAAM,IAAI,MAAM,yBAAyB;AAAA,cAC3C;AAAA,cACA,QAAO,IAAI,EAAE,KAAK,GAAG,gCAAgC;AAAA,cACrD,OAAO,OAAgB;AAAA,cACvB,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,cACrE,QAAO,MAAM,6BAA6B,SAAS;AAAA,cACnD,MAAM;AAAA;AAAA;AAAA,QAGZ;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,IAAI,OAAO,YAA2B;AAAA,YACpC,IAAI;AAAA,cACF,MAAM,SAAS,MAAM,QAAQ,SAAS,WAAU,cAAc;AAAA,gBAC5D,QAAQ;AAAA,gBACR,QAAQ,EAAE,MAAM,SAAS;AAAA,cAC3B,CAAC;AAAA,cACD,QAAO,IAAI,EAAE,OAAO,GAAG,yCAAyC;AAAA,cAChE,IAAI,CAAC,UAAW,OAAO,WAAW,YAAY,WAAW,QAAS;AAAA,gBAChE,MAAM,IAAI,MAAM,2BAA2B;AAAA,cAC7C;AAAA,cACA,OAAO,OAAgB;AAAA,cACvB,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,cACrE,QAAO,MAAM,+BAA+B,SAAS;AAAA,cACrD,MAAM;AAAA;AAAA;AAAA,QAGZ;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,IAAI,OAAO,YAA2B;AAAA,YACpC,IAAI;AAAA,cACF,MAAM,YAAY,MAAM,QAAQ,SAAS,WAAU,gBAAgB;AAAA,gBACjE,MAAM;AAAA,cACR,CAAC;AAAA,cACD,QAAO,IAAI,EAAE,UAAU,GAAG,WAAW;AAAA,cACrC,OAAO,OAAgB;AAAA,cACvB,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,cACrE,QAAO,MAAM,iCAAiC,SAAS;AAAA,cACvD,MAAM;AAAA;AAAA;AAAA,QAGZ;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;",
|
|
17
|
-
"debugId": "
|
|
15
|
+
"mappings": "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",
|
|
16
|
+
"debugId": "778917F34416E3C764756E2164756E21",
|
|
18
17
|
"names": []
|
|
19
18
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elizaos/plugin-openrouter",
|
|
3
|
-
"version": "2.0.0-
|
|
3
|
+
"version": "2.0.0-beta.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/node/index.node.js",
|
|
6
6
|
"module": "dist/node/index.node.js",
|
|
@@ -27,39 +27,55 @@
|
|
|
27
27
|
"types": "./dist/node/index.d.ts",
|
|
28
28
|
"default": "./dist/node/index.node.js"
|
|
29
29
|
},
|
|
30
|
-
"require": "./dist/cjs/index.node.cjs",
|
|
31
30
|
"default": "./dist/node/index.node.js"
|
|
32
31
|
}
|
|
33
32
|
},
|
|
34
33
|
"files": [
|
|
35
|
-
"dist"
|
|
34
|
+
"dist",
|
|
35
|
+
"auto-enable.ts"
|
|
36
36
|
],
|
|
37
|
+
"elizaos": {
|
|
38
|
+
"plugin": {
|
|
39
|
+
"autoEnableModule": "./auto-enable.ts",
|
|
40
|
+
"capabilities": [
|
|
41
|
+
"text-large",
|
|
42
|
+
"text-small",
|
|
43
|
+
"tool-use",
|
|
44
|
+
"embedding",
|
|
45
|
+
"image-description",
|
|
46
|
+
"image-generation"
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
},
|
|
37
50
|
"sideEffects": false,
|
|
38
51
|
"dependencies": {
|
|
39
52
|
"@ai-sdk/openai": "^3.0.9",
|
|
40
53
|
"@ai-sdk/ui-utils": "^1.2.8",
|
|
41
|
-
"@
|
|
42
|
-
"
|
|
43
|
-
"ai": "^6.0.30",
|
|
44
|
-
"undici": "^7.16.0"
|
|
54
|
+
"@openrouter/ai-sdk-provider": "^2.0.0",
|
|
55
|
+
"ai": "^6.0.30"
|
|
45
56
|
},
|
|
46
57
|
"devDependencies": {
|
|
47
|
-
"@biomejs/biome": "^2.
|
|
58
|
+
"@biomejs/biome": "^2.4.14",
|
|
59
|
+
"@elizaos/core": "2.0.0-beta.1",
|
|
48
60
|
"@types/bun": "^1.3.5",
|
|
49
61
|
"@types/json-schema": "^7.0.15",
|
|
50
62
|
"@types/node": "^25.0.3",
|
|
51
63
|
"dotenv": "^17.2.3",
|
|
52
|
-
"typescript": "^
|
|
64
|
+
"typescript": "^6.0.3",
|
|
65
|
+
"vitest": "^4.0.0"
|
|
66
|
+
},
|
|
67
|
+
"peerDependencies": {
|
|
68
|
+
"@elizaos/core": "2.0.0-beta.1"
|
|
53
69
|
},
|
|
54
70
|
"scripts": {
|
|
55
71
|
"dev": "bun --hot build.ts",
|
|
56
72
|
"lint": "bunx @biomejs/biome check --write --unsafe .",
|
|
57
|
-
"clean": "rm -rf dist .turbo
|
|
73
|
+
"clean": "rm -rf dist .turbo .turbo-tsconfig.json tsconfig.tsbuildinfo",
|
|
58
74
|
"format": "bunx @biomejs/biome format --write .",
|
|
59
75
|
"format:check": "bunx @biomejs/biome format .",
|
|
60
76
|
"typecheck": "tsc --noEmit --noCheck -p tsconfig.json",
|
|
61
|
-
"test": "vitest run",
|
|
62
|
-
"test:unit": "vitest run __tests__/",
|
|
77
|
+
"test": "vitest run --config ./vitest.config.ts --passWithNoTests",
|
|
78
|
+
"test:unit": "vitest run __tests__/ --config ./vitest.config.ts --passWithNoTests",
|
|
63
79
|
"test:watch": "vitest",
|
|
64
80
|
"lint:check": "bunx @biomejs/biome check .",
|
|
65
81
|
"build": "bun run build.ts",
|
|
@@ -189,7 +205,7 @@
|
|
|
189
205
|
}
|
|
190
206
|
}
|
|
191
207
|
},
|
|
192
|
-
"
|
|
208
|
+
"eliza": {
|
|
193
209
|
"platforms": [
|
|
194
210
|
"browser",
|
|
195
211
|
"node"
|