@elizaos/plugin-openrouter 2.0.0-alpha.10 → 2.0.0-alpha.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/index.browser.js +2 -467
- package/dist/browser/index.browser.js.map +4 -13
- package/dist/cjs/index.node.cjs +3 -463
- package/dist/cjs/index.node.cjs.map +4 -13
- package/dist/node/index.node.js +2 -467
- package/dist/node/index.node.js.map +4 -13
- package/package.json +206 -202
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
// plugin.ts
|
|
2
|
-
import {
|
|
3
|
-
logger as logger6,
|
|
4
|
-
ModelType as ModelType5
|
|
5
|
-
} from "@elizaos/core";
|
|
6
|
-
|
|
7
|
-
// init.ts
|
|
8
|
-
import { logger } from "@elizaos/core";
|
|
9
|
-
|
|
10
1
|
// utils/config.ts
|
|
11
2
|
var DEFAULT_BASE_URL = "https://openrouter.ai/api/v1";
|
|
12
3
|
var DEFAULT_SMALL_MODEL = "google/gemini-2.0-flash-001";
|
|
@@ -62,462 +53,6 @@ function shouldAutoCleanupImages(runtime) {
|
|
|
62
53
|
const setting = getSetting(runtime, "OPENROUTER_AUTO_CLEANUP_IMAGES", "false");
|
|
63
54
|
return setting?.toLowerCase() === "true";
|
|
64
55
|
}
|
|
65
|
-
|
|
66
|
-
// init.ts
|
|
67
|
-
globalThis.AI_SDK_LOG_WARNINGS ??= false;
|
|
68
|
-
function initializeOpenRouter(_config, runtime) {
|
|
69
|
-
(async () => {
|
|
70
|
-
try {
|
|
71
|
-
const isBrowser = typeof globalThis !== "undefined" && globalThis.document;
|
|
72
|
-
if (isBrowser) {
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
if (!getApiKey(runtime)) {
|
|
76
|
-
logger.warn("OPENROUTER_API_KEY is not set in environment - OpenRouter functionality will be limited");
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
const baseURL = getBaseURL(runtime);
|
|
80
|
-
const response = await fetch(`${baseURL}/models`, {
|
|
81
|
-
headers: { Authorization: `Bearer ${getApiKey(runtime)}` }
|
|
82
|
-
});
|
|
83
|
-
if (!response.ok) {
|
|
84
|
-
logger.warn(`OpenRouter API key validation failed: ${response.statusText}`);
|
|
85
|
-
} else {
|
|
86
|
-
logger.log("OpenRouter API key validated successfully");
|
|
87
|
-
}
|
|
88
|
-
} catch (error) {
|
|
89
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
90
|
-
logger.warn(`Error validating OpenRouter API key: ${message}`);
|
|
91
|
-
}
|
|
92
|
-
})();
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// models/embedding.ts
|
|
96
|
-
import { logger as logger3, ModelType, VECTOR_DIMS } from "@elizaos/core";
|
|
97
|
-
|
|
98
|
-
// utils/events.ts
|
|
99
|
-
import { logger as logger2 } from "@elizaos/core";
|
|
100
|
-
function emitModelUsageEvent(_runtime, modelType, prompt, usage) {
|
|
101
|
-
const inputTokens = usage.inputTokens ?? usage.promptTokens ?? 0;
|
|
102
|
-
const outputTokens = usage.outputTokens ?? usage.completionTokens ?? 0;
|
|
103
|
-
const totalTokens = usage.totalTokens ?? inputTokens + outputTokens;
|
|
104
|
-
logger2.debug({
|
|
105
|
-
event: "model:usage",
|
|
106
|
-
modelType,
|
|
107
|
-
provider: "openrouter",
|
|
108
|
-
prompt: prompt.substring(0, 100),
|
|
109
|
-
usage: {
|
|
110
|
-
promptTokens: inputTokens,
|
|
111
|
-
completionTokens: outputTokens,
|
|
112
|
-
totalTokens
|
|
113
|
-
},
|
|
114
|
-
timestamp: Date.now()
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
// models/embedding.ts
|
|
119
|
-
async function handleTextEmbedding(runtime, params) {
|
|
120
|
-
const embeddingModelName = getEmbeddingModel(runtime);
|
|
121
|
-
const embeddingDimension = Number.parseInt(getSetting(runtime, "OPENROUTER_EMBEDDING_DIMENSIONS") ?? getSetting(runtime, "EMBEDDING_DIMENSIONS") ?? "1536", 10);
|
|
122
|
-
if (!Object.values(VECTOR_DIMS).includes(embeddingDimension)) {
|
|
123
|
-
const errorMsg = `Invalid embedding dimension: ${embeddingDimension}. Must be one of: ${Object.values(VECTOR_DIMS).join(", ")}`;
|
|
124
|
-
logger3.error(errorMsg);
|
|
125
|
-
throw new Error(errorMsg);
|
|
126
|
-
}
|
|
127
|
-
if (params === null) {
|
|
128
|
-
const testVector = Array(embeddingDimension).fill(0);
|
|
129
|
-
testVector[0] = 0.1;
|
|
130
|
-
return testVector;
|
|
131
|
-
}
|
|
132
|
-
let text;
|
|
133
|
-
if (typeof params === "string") {
|
|
134
|
-
text = params;
|
|
135
|
-
} else if (typeof params === "object" && params.text) {
|
|
136
|
-
text = params.text;
|
|
137
|
-
} else {
|
|
138
|
-
const errorMsg = "Invalid input format for embedding";
|
|
139
|
-
logger3.warn(errorMsg);
|
|
140
|
-
const fallbackVector = Array(embeddingDimension).fill(0);
|
|
141
|
-
fallbackVector[0] = 0.2;
|
|
142
|
-
return fallbackVector;
|
|
143
|
-
}
|
|
144
|
-
if (!text.trim()) {
|
|
145
|
-
const errorMsg = "Empty text for embedding";
|
|
146
|
-
logger3.warn(errorMsg);
|
|
147
|
-
const fallbackVector = Array(embeddingDimension).fill(0);
|
|
148
|
-
fallbackVector[0] = 0.3;
|
|
149
|
-
return fallbackVector;
|
|
150
|
-
}
|
|
151
|
-
const apiKey = getApiKey(runtime);
|
|
152
|
-
if (!apiKey) {
|
|
153
|
-
const errorMsg = "OPENROUTER_API_KEY is not set";
|
|
154
|
-
logger3.error(errorMsg);
|
|
155
|
-
throw new Error(errorMsg);
|
|
156
|
-
}
|
|
157
|
-
const baseURL = getBaseURL(runtime);
|
|
158
|
-
try {
|
|
159
|
-
const response = await fetch(`${baseURL}/embeddings`, {
|
|
160
|
-
method: "POST",
|
|
161
|
-
headers: {
|
|
162
|
-
Authorization: `Bearer ${apiKey}`,
|
|
163
|
-
"Content-Type": "application/json",
|
|
164
|
-
"HTTP-Referer": getSetting(runtime, "OPENROUTER_HTTP_REFERER") || "",
|
|
165
|
-
"X-Title": getSetting(runtime, "OPENROUTER_X_TITLE") || "elizaOS"
|
|
166
|
-
},
|
|
167
|
-
body: JSON.stringify({
|
|
168
|
-
model: embeddingModelName,
|
|
169
|
-
input: text
|
|
170
|
-
})
|
|
171
|
-
});
|
|
172
|
-
if (!response.ok) {
|
|
173
|
-
logger3.error(`OpenRouter API error: ${response.status} - ${response.statusText}`);
|
|
174
|
-
throw new Error(`OpenRouter API error: ${response.status} - ${response.statusText}`);
|
|
175
|
-
}
|
|
176
|
-
const data = await response.json();
|
|
177
|
-
if (!data?.data?.[0]?.embedding) {
|
|
178
|
-
logger3.error("API returned invalid structure");
|
|
179
|
-
throw new Error("API returned invalid structure");
|
|
180
|
-
}
|
|
181
|
-
const embedding = data.data[0].embedding;
|
|
182
|
-
if (!Array.isArray(embedding) || embedding.length !== embeddingDimension) {
|
|
183
|
-
const errorMsg = `Embedding length ${embedding?.length ?? 0} does not match configured dimension ${embeddingDimension}`;
|
|
184
|
-
logger3.error(errorMsg);
|
|
185
|
-
const fallbackVector = Array(embeddingDimension).fill(0);
|
|
186
|
-
fallbackVector[0] = 0.4;
|
|
187
|
-
return fallbackVector;
|
|
188
|
-
}
|
|
189
|
-
if (data.usage) {
|
|
190
|
-
const usage = {
|
|
191
|
-
inputTokens: data.usage.prompt_tokens,
|
|
192
|
-
outputTokens: 0,
|
|
193
|
-
totalTokens: data.usage.total_tokens
|
|
194
|
-
};
|
|
195
|
-
emitModelUsageEvent(runtime, ModelType.TEXT_EMBEDDING, text, usage);
|
|
196
|
-
}
|
|
197
|
-
return embedding;
|
|
198
|
-
} catch (error) {
|
|
199
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
200
|
-
logger3.error(`Error generating embedding: ${message}`);
|
|
201
|
-
throw error instanceof Error ? error : new Error(message);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
// models/image.ts
|
|
206
|
-
import { logger as logger4, ModelType as ModelType2 } from "@elizaos/core";
|
|
207
|
-
import { generateText } from "ai";
|
|
208
|
-
|
|
209
|
-
// providers/openrouter.ts
|
|
210
|
-
import { createOpenRouter } from "@openrouter/ai-sdk-provider";
|
|
211
|
-
function createOpenRouterProvider(runtime) {
|
|
212
|
-
const apiKey = getApiKey(runtime);
|
|
213
|
-
const isBrowser = typeof globalThis !== "undefined" && globalThis.document;
|
|
214
|
-
const baseURL = getBaseURL(runtime);
|
|
215
|
-
return createOpenRouter({
|
|
216
|
-
apiKey: isBrowser ? undefined : apiKey,
|
|
217
|
-
baseURL
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
// models/image.ts
|
|
221
|
-
async function handleImageDescription(runtime, params) {
|
|
222
|
-
const openrouter = createOpenRouterProvider(runtime);
|
|
223
|
-
const modelName = getImageModel(runtime);
|
|
224
|
-
const imageUrl = typeof params === "string" ? params : params.imageUrl;
|
|
225
|
-
const prompt = typeof params === "string" ? "Describe this image" : params.prompt || "Describe this image";
|
|
226
|
-
try {
|
|
227
|
-
const generateParams = {
|
|
228
|
-
model: openrouter.chat(modelName),
|
|
229
|
-
messages: [
|
|
230
|
-
{
|
|
231
|
-
role: "user",
|
|
232
|
-
content: [
|
|
233
|
-
{ type: "text", text: prompt },
|
|
234
|
-
{ type: "image", image: imageUrl }
|
|
235
|
-
]
|
|
236
|
-
}
|
|
237
|
-
]
|
|
238
|
-
};
|
|
239
|
-
const response = await generateText(generateParams);
|
|
240
|
-
if (response.usage) {
|
|
241
|
-
emitModelUsageEvent(runtime, ModelType2.IMAGE_DESCRIPTION, prompt, response.usage);
|
|
242
|
-
}
|
|
243
|
-
return response.text;
|
|
244
|
-
} catch (error) {
|
|
245
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
246
|
-
logger4.error(`Error describing image: ${message}`);
|
|
247
|
-
throw error instanceof Error ? error : new Error(message);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
async function handleImageGeneration(runtime, params) {
|
|
251
|
-
const openrouter = createOpenRouterProvider(runtime);
|
|
252
|
-
const modelName = getImageGenerationModel(runtime);
|
|
253
|
-
try {
|
|
254
|
-
const generateParams = {
|
|
255
|
-
model: openrouter.chat(modelName),
|
|
256
|
-
prompt: `Generate an image: ${params.prompt}`
|
|
257
|
-
};
|
|
258
|
-
const response = await generateText(generateParams);
|
|
259
|
-
if (response.usage) {
|
|
260
|
-
emitModelUsageEvent(runtime, ModelType2.IMAGE, params.prompt, response.usage);
|
|
261
|
-
}
|
|
262
|
-
return {
|
|
263
|
-
imageUrl: response.text,
|
|
264
|
-
caption: params.prompt
|
|
265
|
-
};
|
|
266
|
-
} catch (error) {
|
|
267
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
268
|
-
logger4.error(`Error generating image: ${message}`);
|
|
269
|
-
throw error instanceof Error ? error : new Error(message);
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
// models/object.ts
|
|
274
|
-
import {
|
|
275
|
-
ModelType as ModelType3
|
|
276
|
-
} from "@elizaos/core";
|
|
277
|
-
import { generateObject, jsonSchema } from "ai";
|
|
278
|
-
|
|
279
|
-
// utils/helpers.ts
|
|
280
|
-
import { logger as logger5 } from "@elizaos/core";
|
|
281
|
-
function handleObjectGenerationError(error) {
|
|
282
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
283
|
-
logger5.error(`Error generating object: ${message}`);
|
|
284
|
-
return { error: message };
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
// models/object.ts
|
|
288
|
-
async function generateObjectWithModel(runtime, modelType, params) {
|
|
289
|
-
const openrouter = createOpenRouterProvider(runtime);
|
|
290
|
-
const modelName = modelType === ModelType3.OBJECT_SMALL ? getSmallModel(runtime) : getLargeModel(runtime);
|
|
291
|
-
const temperature = params.temperature ?? 0.7;
|
|
292
|
-
try {
|
|
293
|
-
const generateParams = {
|
|
294
|
-
model: openrouter.chat(modelName),
|
|
295
|
-
...params.schema && {
|
|
296
|
-
schema: jsonSchema(params.schema)
|
|
297
|
-
},
|
|
298
|
-
output: params.schema ? "object" : "no-schema",
|
|
299
|
-
messages: [{ role: "user", content: params.prompt }],
|
|
300
|
-
temperature
|
|
301
|
-
};
|
|
302
|
-
const { object, usage } = await generateObject(generateParams);
|
|
303
|
-
if (usage) {
|
|
304
|
-
emitModelUsageEvent(runtime, modelType, params.prompt, usage);
|
|
305
|
-
}
|
|
306
|
-
return object;
|
|
307
|
-
} catch (error) {
|
|
308
|
-
return handleObjectGenerationError(error);
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
async function handleObjectSmall(runtime, params) {
|
|
312
|
-
return generateObjectWithModel(runtime, ModelType3.OBJECT_SMALL, params);
|
|
313
|
-
}
|
|
314
|
-
async function handleObjectLarge(runtime, params) {
|
|
315
|
-
return generateObjectWithModel(runtime, ModelType3.OBJECT_LARGE, params);
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
// models/text.ts
|
|
319
|
-
import { ModelType as ModelType4 } from "@elizaos/core";
|
|
320
|
-
import { generateText as generateText2, streamText } from "ai";
|
|
321
|
-
function buildGenerateParams(runtime, modelType, params) {
|
|
322
|
-
const { prompt, stopSequences = [] } = params;
|
|
323
|
-
const temperature = params.temperature ?? 0.7;
|
|
324
|
-
const frequencyPenalty = params.frequencyPenalty ?? 0.7;
|
|
325
|
-
const presencePenalty = params.presencePenalty ?? 0.7;
|
|
326
|
-
const paramsWithMax = params;
|
|
327
|
-
const resolvedMaxOutput = paramsWithMax.maxOutputTokens ?? paramsWithMax.maxTokens ?? 8192;
|
|
328
|
-
const openrouter = createOpenRouterProvider(runtime);
|
|
329
|
-
const modelName = modelType === ModelType4.TEXT_SMALL ? getSmallModel(runtime) : getLargeModel(runtime);
|
|
330
|
-
const modelLabel = modelType === ModelType4.TEXT_SMALL ? "TEXT_SMALL" : "TEXT_LARGE";
|
|
331
|
-
const generateParams = {
|
|
332
|
-
model: openrouter.chat(modelName),
|
|
333
|
-
prompt,
|
|
334
|
-
system: runtime.character?.system ?? undefined,
|
|
335
|
-
temperature,
|
|
336
|
-
frequencyPenalty,
|
|
337
|
-
presencePenalty,
|
|
338
|
-
stopSequences,
|
|
339
|
-
maxOutputTokens: resolvedMaxOutput
|
|
340
|
-
};
|
|
341
|
-
return { generateParams, modelName, modelLabel, prompt };
|
|
342
|
-
}
|
|
343
|
-
function handleStreamingGeneration(runtime, modelType, generateParams, prompt, _modelLabel) {
|
|
344
|
-
const streamResult = streamText(generateParams);
|
|
345
|
-
return {
|
|
346
|
-
textStream: streamResult.textStream,
|
|
347
|
-
text: Promise.resolve(streamResult.text),
|
|
348
|
-
usage: Promise.resolve(streamResult.usage).then((usage) => {
|
|
349
|
-
if (usage) {
|
|
350
|
-
emitModelUsageEvent(runtime, modelType, prompt, usage);
|
|
351
|
-
const inputTokens = usage.inputTokens ?? 0;
|
|
352
|
-
const outputTokens = usage.outputTokens ?? 0;
|
|
353
|
-
return {
|
|
354
|
-
promptTokens: inputTokens,
|
|
355
|
-
completionTokens: outputTokens,
|
|
356
|
-
totalTokens: inputTokens + outputTokens
|
|
357
|
-
};
|
|
358
|
-
}
|
|
359
|
-
return;
|
|
360
|
-
}),
|
|
361
|
-
finishReason: Promise.resolve(streamResult.finishReason)
|
|
362
|
-
};
|
|
363
|
-
}
|
|
364
|
-
async function generateTextWithModel(runtime, modelType, params) {
|
|
365
|
-
const {
|
|
366
|
-
generateParams,
|
|
367
|
-
modelName: _modelName,
|
|
368
|
-
modelLabel,
|
|
369
|
-
prompt
|
|
370
|
-
} = buildGenerateParams(runtime, modelType, params);
|
|
371
|
-
if (params.stream) {
|
|
372
|
-
return handleStreamingGeneration(runtime, modelType, generateParams, prompt, modelLabel);
|
|
373
|
-
}
|
|
374
|
-
const response = await generateText2(generateParams);
|
|
375
|
-
if (response.usage) {
|
|
376
|
-
emitModelUsageEvent(runtime, modelType, prompt, response.usage);
|
|
377
|
-
}
|
|
378
|
-
return response.text;
|
|
379
|
-
}
|
|
380
|
-
async function handleTextSmall(runtime, params) {
|
|
381
|
-
return generateTextWithModel(runtime, ModelType4.TEXT_SMALL, params);
|
|
382
|
-
}
|
|
383
|
-
async function handleTextLarge(runtime, params) {
|
|
384
|
-
return generateTextWithModel(runtime, ModelType4.TEXT_LARGE, params);
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
// plugin.ts
|
|
388
|
-
function getProcessEnv() {
|
|
389
|
-
if (typeof process === "undefined" || !process.env) {
|
|
390
|
-
return {};
|
|
391
|
-
}
|
|
392
|
-
return process.env;
|
|
393
|
-
}
|
|
394
|
-
var env = getProcessEnv();
|
|
395
|
-
var openrouterPlugin = {
|
|
396
|
-
name: "openrouter",
|
|
397
|
-
description: "OpenRouter multi-model AI gateway plugin",
|
|
398
|
-
config: {
|
|
399
|
-
OPENROUTER_API_KEY: env.OPENROUTER_API_KEY ?? null,
|
|
400
|
-
OPENROUTER_BASE_URL: env.OPENROUTER_BASE_URL ?? null,
|
|
401
|
-
OPENROUTER_SMALL_MODEL: env.OPENROUTER_SMALL_MODEL ?? null,
|
|
402
|
-
OPENROUTER_LARGE_MODEL: env.OPENROUTER_LARGE_MODEL ?? null,
|
|
403
|
-
OPENROUTER_IMAGE_MODEL: env.OPENROUTER_IMAGE_MODEL ?? null,
|
|
404
|
-
OPENROUTER_IMAGE_GENERATION_MODEL: env.OPENROUTER_IMAGE_GENERATION_MODEL ?? null,
|
|
405
|
-
OPENROUTER_EMBEDDING_MODEL: env.OPENROUTER_EMBEDDING_MODEL ?? null,
|
|
406
|
-
OPENROUTER_EMBEDDING_DIMENSIONS: env.OPENROUTER_EMBEDDING_DIMENSIONS ?? null,
|
|
407
|
-
OPENROUTER_AUTO_CLEANUP_IMAGES: env.OPENROUTER_AUTO_CLEANUP_IMAGES ?? null,
|
|
408
|
-
SMALL_MODEL: env.SMALL_MODEL ?? null,
|
|
409
|
-
LARGE_MODEL: env.LARGE_MODEL ?? null,
|
|
410
|
-
IMAGE_MODEL: env.IMAGE_MODEL ?? null,
|
|
411
|
-
IMAGE_GENERATION_MODEL: env.IMAGE_GENERATION_MODEL ?? null,
|
|
412
|
-
EMBEDDING_MODEL: env.EMBEDDING_MODEL ?? null,
|
|
413
|
-
EMBEDDING_DIMENSIONS: env.EMBEDDING_DIMENSIONS ?? null
|
|
414
|
-
},
|
|
415
|
-
async init(config, runtime) {
|
|
416
|
-
initializeOpenRouter(config, runtime);
|
|
417
|
-
},
|
|
418
|
-
models: {
|
|
419
|
-
[ModelType5.TEXT_SMALL]: async (runtime, params) => {
|
|
420
|
-
return handleTextSmall(runtime, params);
|
|
421
|
-
},
|
|
422
|
-
[ModelType5.TEXT_LARGE]: async (runtime, params) => {
|
|
423
|
-
return handleTextLarge(runtime, params);
|
|
424
|
-
},
|
|
425
|
-
[ModelType5.OBJECT_SMALL]: async (runtime, params) => {
|
|
426
|
-
return handleObjectSmall(runtime, params);
|
|
427
|
-
},
|
|
428
|
-
[ModelType5.OBJECT_LARGE]: async (runtime, params) => {
|
|
429
|
-
return handleObjectLarge(runtime, params);
|
|
430
|
-
},
|
|
431
|
-
[ModelType5.IMAGE_DESCRIPTION]: async (runtime, params) => {
|
|
432
|
-
const description = await handleImageDescription(runtime, params);
|
|
433
|
-
return { title: "", description };
|
|
434
|
-
},
|
|
435
|
-
[ModelType5.IMAGE]: async (runtime, params) => {
|
|
436
|
-
const result = await handleImageGeneration(runtime, params);
|
|
437
|
-
return [{ url: result.imageUrl }];
|
|
438
|
-
},
|
|
439
|
-
[ModelType5.TEXT_EMBEDDING]: async (runtime, params) => {
|
|
440
|
-
return handleTextEmbedding(runtime, params);
|
|
441
|
-
}
|
|
442
|
-
},
|
|
443
|
-
tests: [
|
|
444
|
-
{
|
|
445
|
-
name: "openrouter_plugin_tests",
|
|
446
|
-
tests: [
|
|
447
|
-
{
|
|
448
|
-
name: "openrouter_test_text_small",
|
|
449
|
-
fn: async (runtime) => {
|
|
450
|
-
try {
|
|
451
|
-
const text = await runtime.useModel(ModelType5.TEXT_SMALL, {
|
|
452
|
-
prompt: "What is the nature of reality in 10 words?"
|
|
453
|
-
});
|
|
454
|
-
if (text.length === 0) {
|
|
455
|
-
throw new Error("Failed to generate text");
|
|
456
|
-
}
|
|
457
|
-
logger6.log({ text }, "generated with test_text_small");
|
|
458
|
-
} catch (error) {
|
|
459
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
460
|
-
logger6.error(`Error in test_text_small: ${message}`);
|
|
461
|
-
throw error;
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
},
|
|
465
|
-
{
|
|
466
|
-
name: "openrouter_test_text_large",
|
|
467
|
-
fn: async (runtime) => {
|
|
468
|
-
try {
|
|
469
|
-
const text = await runtime.useModel(ModelType5.TEXT_LARGE, {
|
|
470
|
-
prompt: "What is the nature of reality in 10 words?"
|
|
471
|
-
});
|
|
472
|
-
if (text.length === 0) {
|
|
473
|
-
throw new Error("Failed to generate text");
|
|
474
|
-
}
|
|
475
|
-
logger6.log({ text }, "generated with test_text_large");
|
|
476
|
-
} catch (error) {
|
|
477
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
478
|
-
logger6.error(`Error in test_text_large: ${message}`);
|
|
479
|
-
throw error;
|
|
480
|
-
}
|
|
481
|
-
}
|
|
482
|
-
},
|
|
483
|
-
{
|
|
484
|
-
name: "openrouter_test_object_small",
|
|
485
|
-
fn: async (runtime) => {
|
|
486
|
-
try {
|
|
487
|
-
const result = await runtime.useModel(ModelType5.OBJECT_SMALL, {
|
|
488
|
-
prompt: "Create a simple JSON object with a message field saying hello",
|
|
489
|
-
schema: { type: "object" }
|
|
490
|
-
});
|
|
491
|
-
logger6.log({ result }, "Generated object with test_object_small");
|
|
492
|
-
if (!result || typeof result === "object" && "error" in result) {
|
|
493
|
-
throw new Error("Failed to generate object");
|
|
494
|
-
}
|
|
495
|
-
} catch (error) {
|
|
496
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
497
|
-
logger6.error(`Error in test_object_small: ${message}`);
|
|
498
|
-
throw error;
|
|
499
|
-
}
|
|
500
|
-
}
|
|
501
|
-
},
|
|
502
|
-
{
|
|
503
|
-
name: "openrouter_test_text_embedding",
|
|
504
|
-
fn: async (runtime) => {
|
|
505
|
-
try {
|
|
506
|
-
const embedding = await runtime.useModel(ModelType5.TEXT_EMBEDDING, {
|
|
507
|
-
text: "Hello, world!"
|
|
508
|
-
});
|
|
509
|
-
logger6.log({ embedding }, "embedding");
|
|
510
|
-
} catch (error) {
|
|
511
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
512
|
-
logger6.error(`Error in test_text_embedding: ${message}`);
|
|
513
|
-
throw error;
|
|
514
|
-
}
|
|
515
|
-
}
|
|
516
|
-
}
|
|
517
|
-
]
|
|
518
|
-
}
|
|
519
|
-
]
|
|
520
|
-
};
|
|
521
56
|
export {
|
|
522
57
|
shouldAutoCleanupImages,
|
|
523
58
|
openrouterPlugin,
|
|
@@ -530,7 +65,7 @@ export {
|
|
|
530
65
|
getEmbeddingDimensions,
|
|
531
66
|
getBaseURL,
|
|
532
67
|
getApiKey,
|
|
533
|
-
|
|
68
|
+
openrouterPlugin2 as default,
|
|
534
69
|
DEFAULT_SMALL_MODEL,
|
|
535
70
|
DEFAULT_LARGE_MODEL,
|
|
536
71
|
DEFAULT_IMAGE_MODEL,
|
|
@@ -540,5 +75,5 @@ export {
|
|
|
540
75
|
DEFAULT_BASE_URL
|
|
541
76
|
};
|
|
542
77
|
|
|
543
|
-
//# debugId=
|
|
78
|
+
//# debugId=B9F8AC74D6EA35A764756E2164756E21
|
|
544
79
|
//# sourceMappingURL=index.browser.js.map
|
|
@@ -1,19 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../
|
|
3
|
+
"sources": ["../../utils/config.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import
|
|
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, 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 generateParams = {\n model: openrouter.chat(modelName) as LanguageModel,\n ...(params.schema && {\n schema: jsonSchema(params.schema as JSONSchema7),\n }),\n output: params.schema ? \"object\" : \"no-schema\",\n messages: [{ role: \"user\" as const, content: params.prompt }],\n temperature: temperature,\n };\n\n const { object, usage } = await generateObject(\n generateParams as Parameters<typeof generateObject>[0]\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 { 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, 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\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) as LanguageModel,\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\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"
|
|
5
|
+
"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 =\n\t\"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\tif (typeof process === \"undefined\" || !process.env) {\n\t\treturn undefined;\n\t}\n\tconst value = process.env[key];\n\treturn value === undefined ? undefined : String(value);\n}\n\nexport function getSetting(\n\truntime: IAgentRuntime,\n\tkey: string,\n\tdefaultValue?: string,\n): string | undefined {\n\tconst value = runtime.getSetting(key);\n\tif (value !== undefined && value !== null) {\n\t\treturn String(value);\n\t}\n\treturn getEnvValue(key) ?? defaultValue;\n}\n\nexport function getBaseURL(runtime: IAgentRuntime): string {\n\tconst browserURL = getSetting(runtime, \"OPENROUTER_BROWSER_BASE_URL\");\n\tif (\n\t\ttypeof globalThis !== \"undefined\" &&\n\t\t(globalThis as Record<string, unknown>).document &&\n\t\tbrowserURL\n\t) {\n\t\treturn browserURL;\n\t}\n\treturn (\n\t\tgetSetting(runtime, \"OPENROUTER_BASE_URL\", DEFAULT_BASE_URL) ||\n\t\tDEFAULT_BASE_URL\n\t);\n}\n\nexport function getApiKey(runtime: IAgentRuntime): string | undefined {\n\treturn getSetting(runtime, \"OPENROUTER_API_KEY\");\n}\n\nexport function getSmallModel(runtime: IAgentRuntime): string {\n\treturn (\n\t\tgetSetting(runtime, \"OPENROUTER_SMALL_MODEL\") ??\n\t\tgetSetting(runtime, \"SMALL_MODEL\", DEFAULT_SMALL_MODEL) ??\n\t\tDEFAULT_SMALL_MODEL\n\t);\n}\n\nexport function getLargeModel(runtime: IAgentRuntime): string {\n\treturn (\n\t\tgetSetting(runtime, \"OPENROUTER_LARGE_MODEL\") ??\n\t\tgetSetting(runtime, \"LARGE_MODEL\", DEFAULT_LARGE_MODEL) ??\n\t\tDEFAULT_LARGE_MODEL\n\t);\n}\n\nexport function getImageModel(runtime: IAgentRuntime): string {\n\treturn (\n\t\tgetSetting(runtime, \"OPENROUTER_IMAGE_MODEL\") ??\n\t\tgetSetting(runtime, \"IMAGE_MODEL\", DEFAULT_IMAGE_MODEL) ??\n\t\tDEFAULT_IMAGE_MODEL\n\t);\n}\n\nexport function getImageGenerationModel(runtime: IAgentRuntime): string {\n\treturn (\n\t\tgetSetting(runtime, \"OPENROUTER_IMAGE_GENERATION_MODEL\") ??\n\t\tgetSetting(\n\t\t\truntime,\n\t\t\t\"IMAGE_GENERATION_MODEL\",\n\t\t\tDEFAULT_IMAGE_GENERATION_MODEL,\n\t\t) ??\n\t\tDEFAULT_IMAGE_GENERATION_MODEL\n\t);\n}\n\nexport function getEmbeddingModel(runtime: IAgentRuntime): string {\n\treturn (\n\t\tgetSetting(runtime, \"OPENROUTER_EMBEDDING_MODEL\") ??\n\t\tgetSetting(runtime, \"EMBEDDING_MODEL\", DEFAULT_EMBEDDING_MODEL) ??\n\t\tDEFAULT_EMBEDDING_MODEL\n\t);\n}\n\nexport function getEmbeddingDimensions(runtime: IAgentRuntime): number {\n\tconst setting =\n\t\tgetSetting(runtime, \"OPENROUTER_EMBEDDING_DIMENSIONS\") ??\n\t\tgetSetting(runtime, \"EMBEDDING_DIMENSIONS\");\n\treturn setting ? parseInt(setting, 10) : DEFAULT_EMBEDDING_DIMENSIONS;\n}\n\nexport function shouldAutoCleanupImages(runtime: IAgentRuntime): boolean {\n\tconst setting = getSetting(\n\t\truntime,\n\t\t\"OPENROUTER_AUTO_CLEANUP_IMAGES\",\n\t\t\"false\",\n\t);\n\treturn setting?.toLowerCase() === \"true\";\n}\n"
|
|
15
6
|
],
|
|
16
|
-
"mappings": "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",
|
|
17
|
-
"debugId": "
|
|
7
|
+
"mappings": ";AAEO,IAAM,mBAAmB;AACzB,IAAM,sBAAsB;AAC5B,IAAM,sBAAsB;AAC5B,IAAM,sBAAsB;AAC5B,IAAM,iCACZ;AACM,IAAM,0BAA0B;AAChC,IAAM,+BAA+B;AAE5C,SAAS,WAAW,CAAC,KAAiC;AAAA,EACrD,IAAI,OAAO,YAAY,eAAe,CAAC,QAAQ,KAAK;AAAA,IACnD;AAAA,EACD;AAAA,EACA,MAAM,QAAQ,QAAQ,IAAI;AAAA,EAC1B,OAAO,UAAU,YAAY,YAAY,OAAO,KAAK;AAAA;AAG/C,SAAS,UAAU,CACzB,SACA,KACA,cACqB;AAAA,EACrB,MAAM,QAAQ,QAAQ,WAAW,GAAG;AAAA,EACpC,IAAI,UAAU,aAAa,UAAU,MAAM;AAAA,IAC1C,OAAO,OAAO,KAAK;AAAA,EACpB;AAAA,EACA,OAAO,YAAY,GAAG,KAAK;AAAA;AAGrB,SAAS,UAAU,CAAC,SAAgC;AAAA,EAC1D,MAAM,aAAa,WAAW,SAAS,6BAA6B;AAAA,EACpE,IACC,OAAO,eAAe,eACrB,WAAuC,YACxC,YACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,OACC,WAAW,SAAS,uBAAuB,gBAAgB,KAC3D;AAAA;AAIK,SAAS,SAAS,CAAC,SAA4C;AAAA,EACrE,OAAO,WAAW,SAAS,oBAAoB;AAAA;AAGzC,SAAS,aAAa,CAAC,SAAgC;AAAA,EAC7D,OACC,WAAW,SAAS,wBAAwB,KAC5C,WAAW,SAAS,eAAe,mBAAmB,KACtD;AAAA;AAIK,SAAS,aAAa,CAAC,SAAgC;AAAA,EAC7D,OACC,WAAW,SAAS,wBAAwB,KAC5C,WAAW,SAAS,eAAe,mBAAmB,KACtD;AAAA;AAIK,SAAS,aAAa,CAAC,SAAgC;AAAA,EAC7D,OACC,WAAW,SAAS,wBAAwB,KAC5C,WAAW,SAAS,eAAe,mBAAmB,KACtD;AAAA;AAIK,SAAS,uBAAuB,CAAC,SAAgC;AAAA,EACvE,OACC,WAAW,SAAS,mCAAmC,KACvD,WACC,SACA,0BACA,8BACD,KACA;AAAA;AAIK,SAAS,iBAAiB,CAAC,SAAgC;AAAA,EACjE,OACC,WAAW,SAAS,4BAA4B,KAChD,WAAW,SAAS,mBAAmB,uBAAuB,KAC9D;AAAA;AAIK,SAAS,sBAAsB,CAAC,SAAgC;AAAA,EACtE,MAAM,UACL,WAAW,SAAS,iCAAiC,KACrD,WAAW,SAAS,sBAAsB;AAAA,EAC3C,OAAO,UAAU,SAAS,SAAS,EAAE,IAAI;AAAA;AAGnC,SAAS,uBAAuB,CAAC,SAAiC;AAAA,EACxE,MAAM,UAAU,WACf,SACA,kCACA,OACD;AAAA,EACA,OAAO,SAAS,YAAY,MAAM;AAAA;",
|
|
8
|
+
"debugId": "B9F8AC74D6EA35A764756E2164756E21",
|
|
18
9
|
"names": []
|
|
19
10
|
}
|