@elizaos/plugin-elizacloud 1.7.2 → 1.7.3

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.
@@ -373,7 +373,19 @@ async function handleObjectLarge(runtime, params) {
373
373
  }
374
374
  // src/models/embeddings.ts
375
375
  var import_core7 = require("@elizaos/core");
376
- async function handleTextEmbedding(runtime, params) {
376
+ var MAX_BATCH_SIZE = 100;
377
+ function extractRateLimitInfo(response) {
378
+ return {
379
+ remainingRequests: parseInt(response.headers.get("x-ratelimit-remaining-requests") || "", 10) || undefined,
380
+ remainingTokens: parseInt(response.headers.get("x-ratelimit-remaining-tokens") || "", 10) || undefined,
381
+ limitRequests: parseInt(response.headers.get("x-ratelimit-limit-requests") || "", 10) || undefined,
382
+ limitTokens: parseInt(response.headers.get("x-ratelimit-limit-tokens") || "", 10) || undefined,
383
+ resetRequests: response.headers.get("x-ratelimit-reset-requests") || undefined,
384
+ resetTokens: response.headers.get("x-ratelimit-reset-tokens") || undefined,
385
+ retryAfter: parseInt(response.headers.get("retry-after") || "", 10) || undefined
386
+ };
387
+ }
388
+ function getEmbeddingConfig(runtime) {
377
389
  const embeddingModelName = getSetting(runtime, "ELIZAOS_CLOUD_EMBEDDING_MODEL", "text-embedding-3-small");
378
390
  const embeddingDimension = Number.parseInt(getSetting(runtime, "ELIZAOS_CLOUD_EMBEDDING_DIMENSIONS", "1536") || "1536", 10);
379
391
  if (!Object.values(import_core7.VECTOR_DIMS).includes(embeddingDimension)) {
@@ -381,11 +393,23 @@ async function handleTextEmbedding(runtime, params) {
381
393
  import_core7.logger.error(errorMsg);
382
394
  throw new Error(errorMsg);
383
395
  }
396
+ return { embeddingModelName, embeddingDimension };
397
+ }
398
+ function createErrorVector(dimension, marker) {
399
+ const vector = Array(dimension).fill(0);
400
+ vector[0] = marker;
401
+ return vector;
402
+ }
403
+ async function handleTextEmbedding(runtime, params) {
404
+ const { embeddingDimension } = getEmbeddingConfig(runtime);
384
405
  if (params === null) {
385
406
  import_core7.logger.debug("Creating test embedding for initialization");
386
- const testVector = Array(embeddingDimension).fill(0);
387
- testVector[0] = 0.1;
388
- return testVector;
407
+ return createErrorVector(embeddingDimension, 0.1);
408
+ }
409
+ const anyParams = params;
410
+ if (typeof anyParams === "object" && "texts" in anyParams && Array.isArray(anyParams.texts)) {
411
+ import_core7.logger.debug(`[Embeddings] Batch mode: ${anyParams.texts.length} texts`);
412
+ return await handleBatchTextEmbedding(runtime, anyParams.texts);
389
413
  }
390
414
  let text;
391
415
  if (typeof params === "string") {
@@ -394,60 +418,126 @@ async function handleTextEmbedding(runtime, params) {
394
418
  text = params.text;
395
419
  } else {
396
420
  import_core7.logger.warn("Invalid input format for embedding");
397
- const fallbackVector = Array(embeddingDimension).fill(0);
398
- fallbackVector[0] = 0.2;
399
- return fallbackVector;
421
+ return createErrorVector(embeddingDimension, 0.2);
400
422
  }
401
423
  if (!text.trim()) {
402
424
  import_core7.logger.warn("Empty text for embedding");
403
- const emptyVector = Array(embeddingDimension).fill(0);
404
- emptyVector[0] = 0.3;
405
- return emptyVector;
425
+ return createErrorVector(embeddingDimension, 0.3);
406
426
  }
427
+ const results = await handleBatchTextEmbedding(runtime, [text]);
428
+ return results[0];
429
+ }
430
+ async function handleBatchTextEmbedding(runtime, texts) {
431
+ const { embeddingModelName, embeddingDimension } = getEmbeddingConfig(runtime);
407
432
  const embeddingBaseURL = getEmbeddingBaseURL(runtime);
408
- try {
409
- const response = await fetch(`${embeddingBaseURL}/embeddings`, {
410
- method: "POST",
411
- headers: {
412
- ...getAuthHeader(runtime, true),
413
- "Content-Type": "application/json"
414
- },
415
- body: JSON.stringify({
416
- model: embeddingModelName,
417
- input: text
418
- })
419
- });
420
- if (!response.ok) {
421
- import_core7.logger.error(`ElizaOS Cloud API error: ${response.status} - ${response.statusText}`);
422
- const errorVector = Array(embeddingDimension).fill(0);
423
- errorVector[0] = 0.4;
424
- return errorVector;
425
- }
426
- const data = await response.json();
427
- if (!data?.data?.[0]?.embedding) {
428
- import_core7.logger.error("API returned invalid structure");
429
- const errorVector = Array(embeddingDimension).fill(0);
430
- errorVector[0] = 0.5;
431
- return errorVector;
433
+ if (!texts || texts.length === 0) {
434
+ import_core7.logger.warn("[BatchEmbeddings] Empty texts array");
435
+ return [];
436
+ }
437
+ const validTexts = [];
438
+ const results = new Array(texts.length);
439
+ for (let i = 0;i < texts.length; i++) {
440
+ const text = texts[i]?.trim();
441
+ if (text) {
442
+ validTexts.push({ text, originalIndex: i });
443
+ } else {
444
+ results[i] = createErrorVector(embeddingDimension, 0.3);
432
445
  }
433
- const embedding = data.data[0].embedding;
434
- if (data.usage) {
435
- const usage = {
436
- inputTokens: data.usage.prompt_tokens,
437
- outputTokens: 0,
438
- totalTokens: data.usage.total_tokens
439
- };
440
- emitModelUsageEvent(runtime, import_core7.ModelType.TEXT_EMBEDDING, text, usage);
446
+ }
447
+ if (validTexts.length === 0) {
448
+ import_core7.logger.warn("[BatchEmbeddings] All texts were empty");
449
+ return results;
450
+ }
451
+ for (let batchStart = 0;batchStart < validTexts.length; batchStart += MAX_BATCH_SIZE) {
452
+ const batchEnd = Math.min(batchStart + MAX_BATCH_SIZE, validTexts.length);
453
+ const batch = validTexts.slice(batchStart, batchEnd);
454
+ const batchTexts = batch.map((b) => b.text);
455
+ import_core7.logger.info(`[BatchEmbeddings] Processing batch ${Math.floor(batchStart / MAX_BATCH_SIZE) + 1}/${Math.ceil(validTexts.length / MAX_BATCH_SIZE)}: ${batch.length} texts`);
456
+ try {
457
+ const response = await fetch(`${embeddingBaseURL}/embeddings`, {
458
+ method: "POST",
459
+ headers: {
460
+ ...getAuthHeader(runtime, true),
461
+ "Content-Type": "application/json"
462
+ },
463
+ body: JSON.stringify({
464
+ model: embeddingModelName,
465
+ input: batchTexts
466
+ })
467
+ });
468
+ const rateLimitInfo = extractRateLimitInfo(response);
469
+ if (rateLimitInfo.remainingRequests !== undefined && rateLimitInfo.remainingRequests < 50) {
470
+ import_core7.logger.warn(`[BatchEmbeddings] Rate limit: ${rateLimitInfo.remainingRequests}/${rateLimitInfo.limitRequests} requests remaining`);
471
+ }
472
+ if (response.status === 429) {
473
+ const retryAfter = rateLimitInfo.retryAfter || 30;
474
+ import_core7.logger.warn(`[BatchEmbeddings] Rate limited, waiting ${retryAfter}s...`);
475
+ await new Promise((resolve) => setTimeout(resolve, retryAfter * 1000));
476
+ const retryResponse = await fetch(`${embeddingBaseURL}/embeddings`, {
477
+ method: "POST",
478
+ headers: {
479
+ ...getAuthHeader(runtime, true),
480
+ "Content-Type": "application/json"
481
+ },
482
+ body: JSON.stringify({
483
+ model: embeddingModelName,
484
+ input: batchTexts
485
+ })
486
+ });
487
+ if (!retryResponse.ok) {
488
+ import_core7.logger.error(`[BatchEmbeddings] Retry failed: ${retryResponse.status}`);
489
+ for (const item of batch) {
490
+ results[item.originalIndex] = createErrorVector(embeddingDimension, 0.4);
491
+ }
492
+ continue;
493
+ }
494
+ const retryData = await retryResponse.json();
495
+ if (retryData?.data) {
496
+ for (const item of retryData.data) {
497
+ const originalIndex = batch[item.index].originalIndex;
498
+ results[originalIndex] = item.embedding;
499
+ }
500
+ import_core7.logger.info(`[BatchEmbeddings] Retry successful for ${batch.length} embeddings`);
501
+ }
502
+ continue;
503
+ }
504
+ if (!response.ok) {
505
+ import_core7.logger.error(`[BatchEmbeddings] API error: ${response.status} - ${response.statusText}`);
506
+ for (const item of batch) {
507
+ results[item.originalIndex] = createErrorVector(embeddingDimension, 0.4);
508
+ }
509
+ continue;
510
+ }
511
+ const data = await response.json();
512
+ if (!data?.data || !Array.isArray(data.data)) {
513
+ import_core7.logger.error("[BatchEmbeddings] API returned invalid structure");
514
+ for (const item of batch) {
515
+ results[item.originalIndex] = createErrorVector(embeddingDimension, 0.5);
516
+ }
517
+ continue;
518
+ }
519
+ for (const item of data.data) {
520
+ const originalIndex = batch[item.index].originalIndex;
521
+ results[originalIndex] = item.embedding;
522
+ }
523
+ if (data.usage) {
524
+ const usage = {
525
+ inputTokens: data.usage.prompt_tokens,
526
+ outputTokens: 0,
527
+ totalTokens: data.usage.total_tokens
528
+ };
529
+ emitModelUsageEvent(runtime, import_core7.ModelType.TEXT_EMBEDDING, `batch:${batch.length}`, usage);
530
+ }
531
+ import_core7.logger.debug(`[BatchEmbeddings] Got ${batch.length} embeddings (${embeddingDimension}d), remaining: ${rateLimitInfo.remainingRequests ?? "unknown"}`);
532
+ } catch (error) {
533
+ const message = error instanceof Error ? error.message : String(error);
534
+ import_core7.logger.error(`[BatchEmbeddings] Error: ${message}`);
535
+ for (const item of batch) {
536
+ results[item.originalIndex] = createErrorVector(embeddingDimension, 0.6);
537
+ }
441
538
  }
442
- import_core7.logger.log(`Got valid embedding with length ${embedding.length}`);
443
- return embedding;
444
- } catch (error) {
445
- const message = error instanceof Error ? error.message : String(error);
446
- import_core7.logger.error(`Error generating embedding: ${message}`);
447
- const errorVector = Array(embeddingDimension).fill(0);
448
- errorVector[0] = 0.6;
449
- return errorVector;
450
539
  }
540
+ return results;
451
541
  }
452
542
  // src/models/image.ts
453
543
  var import_core8 = require("@elizaos/core");
@@ -808,4 +898,4 @@ var elizaOSCloudPlugin = {
808
898
  };
809
899
  var src_default = elizaOSCloudPlugin;
810
900
 
811
- //# debugId=811C63D22E2DA02364756E2164756E21
901
+ //# debugId=6F6BBDBF3B2AA6B264756E2164756E21
@@ -10,11 +10,11 @@
10
10
  "import {\n EventType,\n type IAgentRuntime,\n type ModelTypeName,\n} from \"@elizaos/core\";\nimport type { LanguageModelUsage } from \"ai\";\n\n/**\n * Emits a model usage event\n * @param runtime The runtime context\n * @param type The model type\n * @param prompt The prompt used\n * @param usage The LLM usage data\n */\nexport function emitModelUsageEvent(\n runtime: IAgentRuntime,\n type: ModelTypeName,\n prompt: string,\n usage: LanguageModelUsage,\n) {\n // Never emit the full prompt; truncate to avoid leaking secrets/PII\n const truncatedPrompt =\n typeof prompt === \"string\"\n ? prompt.length > 200\n ? `${prompt.slice(0, 200)}…`\n : prompt\n : \"\";\n\n const inputTokens = Number(usage.inputTokens || 0);\n const outputTokens = Number(usage.outputTokens || 0);\n const totalTokens = Number(\n usage.totalTokens != null ? usage.totalTokens : inputTokens + outputTokens,\n );\n\n runtime.emitEvent(EventType.MODEL_USED, {\n runtime,\n source: \"elizacloud\",\n provider: \"elizacloud\",\n type,\n prompt: truncatedPrompt,\n tokens: {\n prompt: inputTokens,\n completion: outputTokens,\n total: totalTokens,\n },\n });\n}\n",
11
11
  "import type { IAgentRuntime, ObjectGenerationParams } from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { generateObject, JSONParseError } from \"ai\";\nimport { createOpenAIClient } from \"../providers/openai\";\nimport { getSmallModel, getLargeModel } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\nimport { getJsonRepairFunction } from \"../utils/helpers\";\n\n/**\n * Common object generation logic for both small and large models\n */\nasync function generateObjectByModelType(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams,\n modelType: string,\n getModelFn: (runtime: IAgentRuntime) => string,\n): Promise<Record<string, unknown>> {\n const openai = createOpenAIClient(runtime);\n const modelName = getModelFn(runtime);\n logger.log(`[ELIZAOS_CLOUD] Using ${modelType} model: ${modelName}`);\n const temperature = params.temperature ?? 0;\n const schemaPresent = !!params.schema;\n\n if (schemaPresent) {\n logger.info(\n `Using ${modelType} without schema validation (schema provided but output=no-schema)`,\n );\n }\n\n try {\n const { object, usage } = await generateObject({\n model: openai.languageModel(modelName),\n output: \"no-schema\",\n prompt: params.prompt,\n temperature: temperature,\n experimental_repairText: getJsonRepairFunction(),\n });\n\n if (usage) {\n emitModelUsageEvent(runtime, modelType as never, params.prompt, usage);\n }\n return object as Record<string, unknown>;\n } catch (error: unknown) {\n if (error instanceof JSONParseError) {\n logger.error(`[generateObject] Failed to parse JSON: ${error.message}`);\n\n const repairFunction = getJsonRepairFunction();\n const repairedJsonString = await repairFunction({\n text: error.text,\n error,\n });\n\n if (repairedJsonString) {\n try {\n const repairedObject = JSON.parse(repairedJsonString);\n logger.info(\"[generateObject] Successfully repaired JSON.\");\n return repairedObject as Record<string, unknown>;\n } catch (repairParseError: unknown) {\n const message =\n repairParseError instanceof Error\n ? repairParseError.message\n : String(repairParseError);\n logger.error(\n `[generateObject] Failed to parse repaired JSON: ${message}`,\n );\n throw repairParseError;\n }\n } else {\n logger.error(\"[generateObject] JSON repair failed.\");\n throw error;\n }\n } else {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`[generateObject] Unknown error: ${message}`);\n throw error;\n }\n }\n}\n\n/**\n * OBJECT_SMALL model handler\n */\nexport async function handleObjectSmall(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams,\n): Promise<Record<string, unknown>> {\n return generateObjectByModelType(\n runtime,\n params,\n ModelType.OBJECT_SMALL,\n getSmallModel,\n );\n}\n\n/**\n * OBJECT_LARGE model handler\n */\nexport async function handleObjectLarge(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams,\n): Promise<Record<string, unknown>> {\n return generateObjectByModelType(\n runtime,\n params,\n ModelType.OBJECT_LARGE,\n getLargeModel,\n );\n}\n",
12
12
  "import { logger } from \"@elizaos/core\";\nimport { JSONParseError } from \"ai\";\nimport type { ImageDescriptionResult } from \"../types\";\n\n/**\n * Returns a function to repair JSON text\n */\nexport function getJsonRepairFunction(): (params: {\n text: string;\n error: unknown;\n}) => Promise<string | null> {\n return async ({ text, error }: { text: string; error: unknown }) => {\n try {\n if (error instanceof JSONParseError) {\n const cleanedText = text.replace(/```json\\n|\\n```|```/g, \"\");\n JSON.parse(cleanedText);\n return cleanedText;\n }\n return null;\n } catch (jsonError: unknown) {\n const message =\n jsonError instanceof Error ? jsonError.message : String(jsonError);\n logger.warn(`Failed to repair JSON text: ${message}`);\n return null;\n }\n };\n}\n\n/**\n * Detects audio MIME type from buffer by checking magic bytes (file signature)\n * @param buffer The audio buffer to analyze\n * @returns The detected MIME type or 'application/octet-stream' if unknown\n */\nexport function detectAudioMimeType(buffer: Buffer): string {\n if (buffer.length < 12) {\n return \"application/octet-stream\";\n }\n\n // Check magic bytes for common audio formats\n // WAV: \"RIFF\" + size + \"WAVE\"\n if (\n buffer[0] === 0x52 &&\n buffer[1] === 0x49 &&\n buffer[2] === 0x46 &&\n buffer[3] === 0x46 &&\n buffer[8] === 0x57 &&\n buffer[9] === 0x41 &&\n buffer[10] === 0x56 &&\n buffer[11] === 0x45\n ) {\n return \"audio/wav\";\n }\n\n // MP3: ID3 tag or MPEG frame sync\n if (\n (buffer[0] === 0x49 && buffer[1] === 0x44 && buffer[2] === 0x33) || // ID3\n (buffer[0] === 0xff && (buffer[1] & 0xe0) === 0xe0) // MPEG sync\n ) {\n return \"audio/mpeg\";\n }\n\n // OGG: \"OggS\"\n if (\n buffer[0] === 0x4f &&\n buffer[1] === 0x67 &&\n buffer[2] === 0x67 &&\n buffer[3] === 0x53\n ) {\n return \"audio/ogg\";\n }\n\n // FLAC: \"fLaC\"\n if (\n buffer[0] === 0x66 &&\n buffer[1] === 0x4c &&\n buffer[2] === 0x61 &&\n buffer[3] === 0x43\n ) {\n return \"audio/flac\";\n }\n\n // M4A/MP4: \"ftyp\" at offset 4\n if (\n buffer[4] === 0x66 &&\n buffer[5] === 0x74 &&\n buffer[6] === 0x79 &&\n buffer[7] === 0x70\n ) {\n return \"audio/mp4\";\n }\n\n // WebM: EBML header\n if (\n buffer[0] === 0x1a &&\n buffer[1] === 0x45 &&\n buffer[2] === 0xdf &&\n buffer[3] === 0xa3\n ) {\n return \"audio/webm\";\n }\n\n // Unknown format - let API try to detect\n logger.warn(\n \"Could not detect audio format from buffer, using generic binary type\",\n );\n return \"application/octet-stream\";\n}\n\n/**\n * Converts a Web ReadableStream to a Node.js Readable stream\n * Handles both browser and Node.js environments\n * Uses dynamic import to avoid bundling node:stream in browser builds\n */\nexport async function webStreamToNodeStream(\n webStream: ReadableStream<Uint8Array>,\n) {\n try {\n // Dynamic import to avoid browser bundling issues\n const { Readable } = await import(\"node:stream\");\n const reader = webStream.getReader();\n\n return new Readable({\n async read() {\n try {\n const { done, value } = await reader.read();\n if (done) {\n this.push(null);\n } else {\n // Push the Uint8Array directly; Node.js Readable can handle it\n this.push(value);\n }\n } catch (error) {\n this.destroy(error as Error);\n }\n },\n destroy(error, callback) {\n reader.cancel().finally(() => callback(error));\n },\n });\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Failed to load node:stream module: ${message}`);\n throw new Error(\n `Cannot convert stream: node:stream module unavailable. This feature requires a Node.js environment.`,\n );\n }\n}\n\n/**\n * Parses image description response from text format\n */\nexport function parseImageDescriptionResponse(\n responseText: string,\n): ImageDescriptionResult {\n const titleMatch = responseText.match(/title[:\\s]+(.+?)(?:\\n|$)/i);\n const title = titleMatch?.[1]?.trim() || \"Image Analysis\";\n const description = responseText\n .replace(/title[:\\s]+(.+?)(?:\\n|$)/i, \"\")\n .trim();\n\n return { title, description };\n}\n",
13
- "import type { IAgentRuntime, TextEmbeddingParams } from \"@elizaos/core\";\nimport { logger, ModelType, VECTOR_DIMS } from \"@elizaos/core\";\nimport {\n getSetting,\n getEmbeddingBaseURL,\n getAuthHeader,\n} from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\n/**\n * TEXT_EMBEDDING model handler\n */\nexport async function handleTextEmbedding(\n runtime: IAgentRuntime,\n params: TextEmbeddingParams | string | null,\n): Promise<number[]> {\n const embeddingModelName = getSetting(\n runtime,\n \"ELIZAOS_CLOUD_EMBEDDING_MODEL\",\n \"text-embedding-3-small\",\n );\n const embeddingDimension = Number.parseInt(\n getSetting(runtime, \"ELIZAOS_CLOUD_EMBEDDING_DIMENSIONS\", \"1536\") || \"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 if (params === null) {\n logger.debug(\"Creating test embedding for initialization\");\n const testVector = Array(embeddingDimension).fill(0);\n testVector[0] = 0.1;\n return testVector;\n }\n 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 logger.warn(\"Invalid input format for embedding\");\n const fallbackVector = Array(embeddingDimension).fill(0);\n fallbackVector[0] = 0.2;\n return fallbackVector;\n }\n if (!text.trim()) {\n logger.warn(\"Empty text for embedding\");\n const emptyVector = Array(embeddingDimension).fill(0);\n emptyVector[0] = 0.3;\n return emptyVector;\n }\n\n const embeddingBaseURL = getEmbeddingBaseURL(runtime);\n\n try {\n const response = await fetch(`${embeddingBaseURL}/embeddings`, {\n method: \"POST\",\n headers: {\n ...getAuthHeader(runtime, true),\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n model: embeddingModelName,\n input: text,\n }),\n });\n\n if (!response.ok) {\n logger.error(\n `ElizaOS Cloud API error: ${response.status} - ${response.statusText}`,\n );\n const errorVector = Array(embeddingDimension).fill(0);\n errorVector[0] = 0.4;\n return errorVector;\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 const errorVector = Array(embeddingDimension).fill(0);\n errorVector[0] = 0.5;\n return errorVector;\n }\n\n const embedding = data.data[0].embedding;\n\n if (data.usage) {\n const usage = {\n inputTokens: data.usage.prompt_tokens,\n outputTokens: 0,\n totalTokens: data.usage.total_tokens,\n };\n\n emitModelUsageEvent(runtime, ModelType.TEXT_EMBEDDING, text, usage);\n }\n\n logger.log(`Got valid embedding with length ${embedding.length}`);\n return embedding;\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error generating embedding: ${message}`);\n const errorVector = Array(embeddingDimension).fill(0);\n errorVector[0] = 0.6;\n return errorVector;\n }\n}\n",
13
+ "import type { IAgentRuntime, TextEmbeddingParams } from \"@elizaos/core\";\nimport { logger, ModelType, VECTOR_DIMS } from \"@elizaos/core\";\nimport {\n getSetting,\n getEmbeddingBaseURL,\n getAuthHeader,\n} from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\n// Maximum texts per batch (OpenAI limit is 2048, but we use smaller for safety)\nconst MAX_BATCH_SIZE = 100;\n\n/**\n * Extract rate limit info from response headers\n */\nfunction extractRateLimitInfo(response: Response): {\n remainingRequests?: number;\n remainingTokens?: number;\n limitRequests?: number;\n limitTokens?: number;\n resetRequests?: string;\n resetTokens?: string;\n retryAfter?: number;\n} {\n return {\n remainingRequests: parseInt(response.headers.get(\"x-ratelimit-remaining-requests\") || \"\", 10) || undefined,\n remainingTokens: parseInt(response.headers.get(\"x-ratelimit-remaining-tokens\") || \"\", 10) || undefined,\n limitRequests: parseInt(response.headers.get(\"x-ratelimit-limit-requests\") || \"\", 10) || undefined,\n limitTokens: parseInt(response.headers.get(\"x-ratelimit-limit-tokens\") || \"\", 10) || undefined,\n resetRequests: response.headers.get(\"x-ratelimit-reset-requests\") || undefined,\n resetTokens: response.headers.get(\"x-ratelimit-reset-tokens\") || undefined,\n retryAfter: parseInt(response.headers.get(\"retry-after\") || \"\", 10) || undefined,\n };\n}\n\n/**\n * Get embedding configuration from runtime\n */\nfunction getEmbeddingConfig(runtime: IAgentRuntime) {\n const embeddingModelName = getSetting(\n runtime,\n \"ELIZAOS_CLOUD_EMBEDDING_MODEL\",\n \"text-embedding-3-small\",\n );\n const embeddingDimension = Number.parseInt(\n getSetting(runtime, \"ELIZAOS_CLOUD_EMBEDDING_DIMENSIONS\", \"1536\") || \"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 return { embeddingModelName, embeddingDimension };\n}\n\n/**\n * Create a zero/error vector with a marker value\n */\nfunction createErrorVector(dimension: number, marker: number): number[] {\n const vector = Array(dimension).fill(0);\n vector[0] = marker;\n return vector;\n}\n\n/**\n * TEXT_EMBEDDING model handler (registered with ElizaOS runtime)\n * \n * Supports both single text and batch mode at runtime:\n * - Single: { text: \"...\" } or \"string\" → returns number[]\n * - Batch: { texts: [\"...\", \"...\"] } → returns number[][] (cast to any at runtime)\n * \n * The return type is number[] for TypeScript compatibility with ElizaOS core,\n * but batch mode returns number[][] at runtime.\n */\nexport async function handleTextEmbedding(\n runtime: IAgentRuntime,\n params: TextEmbeddingParams | string | null,\n): Promise<number[]> {\n const { embeddingDimension } = getEmbeddingConfig(runtime);\n\n if (params === null) {\n logger.debug(\"Creating test embedding for initialization\");\n return createErrorVector(embeddingDimension, 0.1);\n }\n\n // Check for batch mode: { texts: string[] }\n // This works at runtime even though TypeScript doesn't know about it\n const anyParams = params as any;\n if (typeof anyParams === \"object\" && \"texts\" in anyParams && Array.isArray(anyParams.texts)) {\n logger.debug(`[Embeddings] Batch mode: ${anyParams.texts.length} texts`);\n // Return batch result - caller expects number[][] at runtime\n return await handleBatchTextEmbedding(runtime, anyParams.texts) as any;\n }\n\n // Single text mode\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 logger.warn(\"Invalid input format for embedding\");\n return createErrorVector(embeddingDimension, 0.2);\n }\n\n if (!text.trim()) {\n logger.warn(\"Empty text for embedding\");\n return createErrorVector(embeddingDimension, 0.3);\n }\n\n // Use batch function with single text for consistency\n const results = await handleBatchTextEmbedding(runtime, [text]);\n return results[0];\n}\n\n/**\n * Batch result type for tracking individual embedding results\n */\nexport interface BatchEmbeddingResult {\n embedding: number[];\n index: number;\n success: boolean;\n error?: string;\n}\n\n/**\n * BATCH TEXT_EMBEDDING handler - sends multiple texts in ONE API request\n * This is MUCH more efficient for processing large documents\n * OpenAI supports up to 2048 texts per request\n * \n * @param runtime - Agent runtime\n * @param texts - Array of texts to embed (max 100 per batch for safety)\n * @returns Array of embeddings in same order as input texts\n */\nexport async function handleBatchTextEmbedding(\n runtime: IAgentRuntime,\n texts: string[],\n): Promise<number[][]> {\n const { embeddingModelName, embeddingDimension } = getEmbeddingConfig(runtime);\n const embeddingBaseURL = getEmbeddingBaseURL(runtime);\n\n if (!texts || texts.length === 0) {\n logger.warn(\"[BatchEmbeddings] Empty texts array\");\n return [];\n }\n\n // Filter out empty texts and track indices\n const validTexts: { text: string; originalIndex: number }[] = [];\n const results: number[][] = new Array(texts.length);\n\n for (let i = 0; i < texts.length; i++) {\n const text = texts[i]?.trim();\n if (text) {\n validTexts.push({ text, originalIndex: i });\n } else {\n // Fill with error vector for empty texts\n results[i] = createErrorVector(embeddingDimension, 0.3);\n }\n }\n\n if (validTexts.length === 0) {\n logger.warn(\"[BatchEmbeddings] All texts were empty\");\n return results;\n }\n\n // Process in batches of MAX_BATCH_SIZE\n for (let batchStart = 0; batchStart < validTexts.length; batchStart += MAX_BATCH_SIZE) {\n const batchEnd = Math.min(batchStart + MAX_BATCH_SIZE, validTexts.length);\n const batch = validTexts.slice(batchStart, batchEnd);\n const batchTexts = batch.map(b => b.text);\n\n logger.info(\n `[BatchEmbeddings] Processing batch ${Math.floor(batchStart / MAX_BATCH_SIZE) + 1}/${Math.ceil(validTexts.length / MAX_BATCH_SIZE)}: ${batch.length} texts`\n );\n\n try {\n const response = await fetch(`${embeddingBaseURL}/embeddings`, {\n method: \"POST\",\n headers: {\n ...getAuthHeader(runtime, true),\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n model: embeddingModelName,\n input: batchTexts, // Array of texts!\n }),\n });\n\n const rateLimitInfo = extractRateLimitInfo(response);\n\n // Log rate limit status\n if (rateLimitInfo.remainingRequests !== undefined && rateLimitInfo.remainingRequests < 50) {\n logger.warn(\n `[BatchEmbeddings] Rate limit: ${rateLimitInfo.remainingRequests}/${rateLimitInfo.limitRequests} requests remaining`\n );\n }\n\n // Handle rate limit (429)\n if (response.status === 429) {\n const retryAfter = rateLimitInfo.retryAfter || 30;\n logger.warn(`[BatchEmbeddings] Rate limited, waiting ${retryAfter}s...`);\n await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));\n\n // Retry this batch\n const retryResponse = await fetch(`${embeddingBaseURL}/embeddings`, {\n method: \"POST\",\n headers: {\n ...getAuthHeader(runtime, true),\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n model: embeddingModelName,\n input: batchTexts,\n }),\n });\n\n if (!retryResponse.ok) {\n logger.error(`[BatchEmbeddings] Retry failed: ${retryResponse.status}`);\n // Fill batch with error vectors\n for (const item of batch) {\n results[item.originalIndex] = createErrorVector(embeddingDimension, 0.4);\n }\n continue;\n }\n\n const retryData = await retryResponse.json() as {\n data: Array<{ embedding: number[]; index: number }>;\n };\n\n if (retryData?.data) {\n for (const item of retryData.data) {\n const originalIndex = batch[item.index].originalIndex;\n results[originalIndex] = item.embedding;\n }\n logger.info(`[BatchEmbeddings] Retry successful for ${batch.length} embeddings`);\n }\n continue;\n }\n\n if (!response.ok) {\n logger.error(`[BatchEmbeddings] API error: ${response.status} - ${response.statusText}`);\n for (const item of batch) {\n results[item.originalIndex] = createErrorVector(embeddingDimension, 0.4);\n }\n continue;\n }\n\n const data = await response.json() as {\n data: Array<{ embedding: number[]; index: number }>;\n usage?: { prompt_tokens: number; total_tokens: number };\n };\n\n if (!data?.data || !Array.isArray(data.data)) {\n logger.error(\"[BatchEmbeddings] API returned invalid structure\");\n for (const item of batch) {\n results[item.originalIndex] = createErrorVector(embeddingDimension, 0.5);\n }\n continue;\n }\n\n // Map embeddings back to original indices\n for (const item of data.data) {\n const originalIndex = batch[item.index].originalIndex;\n results[originalIndex] = item.embedding;\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 emitModelUsageEvent(runtime, ModelType.TEXT_EMBEDDING, `batch:${batch.length}`, usage);\n }\n\n logger.debug(\n `[BatchEmbeddings] Got ${batch.length} embeddings (${embeddingDimension}d), remaining: ${rateLimitInfo.remainingRequests ?? 'unknown'}`\n );\n\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`[BatchEmbeddings] Error: ${message}`);\n for (const item of batch) {\n results[item.originalIndex] = createErrorVector(embeddingDimension, 0.6);\n }\n }\n }\n\n return results;\n}\n\n",
14
14
  "import type {\n IAgentRuntime,\n ImageDescriptionParams,\n ImageGenerationParams,\n} from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport {\n getSetting,\n getBaseURL,\n getAuthHeader,\n getImageDescriptionModel,\n getImageGenerationModel,\n} from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\nimport { parseImageDescriptionResponse } from \"../utils/helpers\";\n\n/**\n * IMAGE model handler - generates images from text prompts\n * Uses ElizaOS Cloud's custom /generate-image endpoint (not OpenAI-compatible)\n */\nexport async function handleImageGeneration(\n runtime: IAgentRuntime,\n params: ImageGenerationParams,\n): Promise<{ url: string }[]> {\n const numImages = params.count || 1;\n const size = params.size || \"1024x1024\";\n const prompt = params.prompt;\n const modelName = getImageGenerationModel(runtime);\n logger.log(`[ELIZAOS_CLOUD] Using IMAGE model: ${modelName}`);\n\n const baseURL = getBaseURL(runtime);\n\n // Convert size to aspect ratio for ElizaOS Cloud API\n const aspectRatioMap: Record<string, string> = {\n \"1024x1024\": \"1:1\",\n \"1792x1024\": \"16:9\",\n \"1024x1792\": \"9:16\",\n };\n const aspectRatio = aspectRatioMap[size] || \"1:1\";\n\n try {\n // ElizaOS Cloud uses /generate-image endpoint, not /images/generations\n const response = await fetch(`${baseURL}/generate-image`, {\n method: \"POST\",\n headers: {\n ...getAuthHeader(runtime),\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n prompt: prompt,\n numImages: numImages,\n aspectRatio: aspectRatio,\n }),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new Error(\n `Failed to generate image: ${response.status} ${errorText}`,\n );\n }\n\n const data = await response.json();\n const typedData = data as {\n images: Array<{ url?: string; image: string }>;\n numImages: number;\n };\n\n // Map response to expected format\n return typedData.images.map((img) => ({\n url: img.url || img.image,\n }));\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`[ELIZAOS_CLOUD] Image generation error: ${message}`);\n throw error;\n }\n}\n\n/**\n * IMAGE_DESCRIPTION model handler - analyzes images and provides descriptions\n */\nexport async function handleImageDescription(\n runtime: IAgentRuntime,\n params: ImageDescriptionParams | string,\n): Promise<{ title: string; description: string }> {\n let imageUrl: string;\n let promptText: string | undefined;\n const modelName = getImageDescriptionModel(runtime);\n logger.log(`[ELIZAOS_CLOUD] Using IMAGE_DESCRIPTION model: ${modelName}`);\n const maxTokens = Number.parseInt(\n getSetting(runtime, \"ELIZAOS_CLOUD_IMAGE_DESCRIPTION_MAX_TOKENS\", \"8192\") ||\n \"8192\",\n 10,\n );\n\n if (typeof params === \"string\") {\n imageUrl = params;\n promptText =\n \"Please analyze this image and provide a title and detailed description.\";\n } else {\n imageUrl = params.imageUrl;\n promptText =\n params.prompt ||\n \"Please analyze this image and provide a title and detailed description.\";\n }\n\n const messages = [\n {\n role: \"user\",\n content: [\n { type: \"text\", text: promptText },\n { type: \"image_url\", image_url: { url: imageUrl } },\n ],\n },\n ];\n\n const baseURL = getBaseURL(runtime);\n\n try {\n const requestBody: Record<string, unknown> = {\n model: modelName,\n messages: messages,\n max_tokens: maxTokens,\n };\n\n const response = await fetch(`${baseURL}/chat/completions`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...getAuthHeader(runtime),\n },\n body: JSON.stringify(requestBody),\n });\n\n if (!response.ok) {\n throw new Error(`ElizaOS Cloud API error: ${response.status}`);\n }\n\n const result: unknown = await response.json();\n\n type OpenAIResponseType = {\n choices?: Array<{\n message?: { content?: string };\n finish_reason?: string;\n }>;\n usage?: {\n prompt_tokens: number;\n completion_tokens: number;\n total_tokens: number;\n };\n };\n\n const typedResult = result as OpenAIResponseType;\n const content = typedResult.choices?.[0]?.message?.content;\n\n if (typedResult.usage) {\n emitModelUsageEvent(\n runtime,\n ModelType.IMAGE_DESCRIPTION,\n typeof params === \"string\" ? params : params.prompt || \"\",\n {\n inputTokens: typedResult.usage.prompt_tokens,\n outputTokens: typedResult.usage.completion_tokens,\n totalTokens: typedResult.usage.total_tokens,\n },\n );\n }\n\n if (!content) {\n return {\n title: \"Failed to analyze image\",\n description: \"No response from API\",\n };\n }\n\n // Always return structured object with title and description\n const processedResult = parseImageDescriptionResponse(content);\n return processedResult;\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error analyzing image: ${message}`);\n return {\n title: \"Failed to analyze image\",\n description: `Error: ${message}`,\n };\n }\n}\n",
15
15
  "import type { IAgentRuntime } from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport {\n getSetting,\n getBaseURL,\n getAuthHeader,\n isBrowser,\n} from \"../utils/config\";\nimport { webStreamToNodeStream } from \"../utils/helpers\";\nimport type { OpenAITextToSpeechParams } from \"../types\";\nimport type { Readable } from \"node:stream\";\n\n/**\n * function for text-to-speech\n */\nasync function fetchTextToSpeech(\n runtime: IAgentRuntime,\n options: OpenAITextToSpeechParams,\n): Promise<ReadableStream<Uint8Array> | Readable> {\n const defaultModel = getSetting(\n runtime,\n \"ELIZAOS_CLOUD_TTS_MODEL\",\n \"gpt-4o-mini-tts\",\n );\n const defaultVoice = getSetting(runtime, \"ELIZAOS_CLOUD_TTS_VOICE\", \"nova\");\n const defaultInstructions = getSetting(\n runtime,\n \"ELIZAOS_CLOUD_TTS_INSTRUCTIONS\",\n \"\",\n );\n const baseURL = getBaseURL(runtime);\n\n const model = options.model || (defaultModel as string);\n const voice = options.voice || (defaultVoice as string);\n const instructions = options.instructions ?? (defaultInstructions as string);\n const format = options.format || \"mp3\";\n\n try {\n const res = await fetch(`${baseURL}/audio/speech`, {\n method: \"POST\",\n headers: {\n ...getAuthHeader(runtime),\n \"Content-Type\": \"application/json\",\n // Hint desired audio format in Accept when possible\n ...(format === \"mp3\" ? { Accept: \"audio/mpeg\" } : {}),\n },\n body: JSON.stringify({\n model,\n voice,\n input: options.text,\n format,\n ...(instructions && { instructions }),\n }),\n });\n\n if (!res.ok) {\n const err = await res.text();\n throw new Error(`ElizaOS Cloud TTS error ${res.status}: ${err}`);\n }\n\n // Ensure response body exists\n if (!res.body) {\n throw new Error(\"ElizaOS Cloud TTS response body is null\");\n }\n\n // In Node.js, convert Web ReadableStream to Node.js Readable\n // In browser, return the Web ReadableStream directly\n if (!isBrowser()) {\n return await webStreamToNodeStream(res.body);\n }\n\n return res.body;\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n throw new Error(`Failed to fetch speech from ElizaOS Cloud TTS: ${message}`);\n }\n}\n\n/**\n * TEXT_TO_SPEECH model handler\n */\nexport async function handleTextToSpeech(\n runtime: IAgentRuntime,\n input: string | OpenAITextToSpeechParams,\n): Promise<ReadableStream<Uint8Array> | Readable> {\n // Normalize input into options with per-call overrides\n const options: OpenAITextToSpeechParams =\n typeof input === \"string\"\n ? { text: input }\n : (input as OpenAITextToSpeechParams);\n\n const resolvedModel =\n options.model ||\n (getSetting(runtime, \"ELIZAOS_CLOUD_TTS_MODEL\", \"gpt-4o-mini-tts\") as string);\n logger.log(`[ELIZAOS_CLOUD] Using TEXT_TO_SPEECH model: ${resolvedModel}`);\n try {\n const speechStream = await fetchTextToSpeech(runtime, options);\n return speechStream;\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error in TEXT_TO_SPEECH: ${message}`);\n throw error;\n }\n}\n\nexport { fetchTextToSpeech };\n"
16
16
  ],
17
- "mappings": "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",
18
- "debugId": "811C63D22E2DA02364756E2164756E21",
17
+ "mappings": "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",
18
+ "debugId": "6F6BBDBF3B2AA6B264756E2164756E21",
19
19
  "names": []
20
20
  }
@@ -1,5 +1,31 @@
1
1
  import type { IAgentRuntime, TextEmbeddingParams } from "@elizaos/core";
2
2
  /**
3
- * TEXT_EMBEDDING model handler
3
+ * TEXT_EMBEDDING model handler (registered with ElizaOS runtime)
4
+ *
5
+ * Supports both single text and batch mode at runtime:
6
+ * - Single: { text: "..." } or "string" → returns number[]
7
+ * - Batch: { texts: ["...", "..."] } → returns number[][] (cast to any at runtime)
8
+ *
9
+ * The return type is number[] for TypeScript compatibility with ElizaOS core,
10
+ * but batch mode returns number[][] at runtime.
4
11
  */
5
12
  export declare function handleTextEmbedding(runtime: IAgentRuntime, params: TextEmbeddingParams | string | null): Promise<number[]>;
13
+ /**
14
+ * Batch result type for tracking individual embedding results
15
+ */
16
+ export interface BatchEmbeddingResult {
17
+ embedding: number[];
18
+ index: number;
19
+ success: boolean;
20
+ error?: string;
21
+ }
22
+ /**
23
+ * BATCH TEXT_EMBEDDING handler - sends multiple texts in ONE API request
24
+ * This is MUCH more efficient for processing large documents
25
+ * OpenAI supports up to 2048 texts per request
26
+ *
27
+ * @param runtime - Agent runtime
28
+ * @param texts - Array of texts to embed (max 100 per batch for safety)
29
+ * @returns Array of embeddings in same order as input texts
30
+ */
31
+ export declare function handleBatchTextEmbedding(runtime: IAgentRuntime, texts: string[]): Promise<number[][]>;
@@ -1,6 +1,7 @@
1
1
  export { handleTextSmall, handleTextLarge } from "./text";
2
2
  export { handleObjectSmall, handleObjectLarge } from "./object";
3
- export { handleTextEmbedding } from "./embeddings";
3
+ export { handleTextEmbedding, handleBatchTextEmbedding } from "./embeddings";
4
+ export type { BatchEmbeddingResult } from "./embeddings";
4
5
  export { handleImageGeneration, handleImageDescription } from "./image";
5
6
  export { handleTranscription } from "./transcription";
6
7
  export { handleTextToSpeech, fetchTextToSpeech } from "./speech";