@elizaos/plugin-elizacloud 1.5.20 → 1.7.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/index.ts", "../../src/init.ts", "../../src/utils/config.ts", "../../src/models/text.ts", "../../src/providers/openai.ts", "../../src/utils/events.ts", "../../src/models/object.ts", "../../src/utils/helpers.ts", "../../src/models/embeddings.ts", "../../src/models/image.ts", "../../src/models/speech.ts"],
3
+ "sources": ["../../src/index.ts", "../../src/init.ts", "../../src/utils/config.ts", "../../src/models/text.ts", "../../src/providers/openai.ts", "../../src/utils/events.ts", "../../src/models/object.ts", "../../src/utils/helpers.ts", "../../src/models/embeddings.ts", "../../src/models/image.ts", "../../src/models/transcription.ts", "../../src/models/speech.ts", "../../src/models/tokenization.ts", "../../src/database/adapter.ts", "../../src/storage/service.ts", "../../src/database/direct-adapter.ts", "../../src/database/schema.ts"],
4
4
  "sourcesContent": [
5
- "import type { IAgentRuntime, Plugin } from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { initializeOpenAI } from \"./init\";\nimport {\n handleTextSmall,\n handleTextLarge,\n handleObjectSmall,\n handleObjectLarge,\n handleTextEmbedding,\n handleImageGeneration,\n handleImageDescription,\n handleTranscription,\n handleTextToSpeech,\n handleTokenizerEncode,\n handleTokenizerDecode,\n fetchTextToSpeech,\n} from \"./models\";\nimport { getApiKey, getBaseURL } from \"./utils/config\";\n\n// Re-export types for convenience\nexport type {\n OpenAITranscriptionParams,\n OpenAITextToSpeechParams,\n} from \"./types\";\n\n/**\n * Defines the ElizaOS Cloud plugin with its name, description, and configuration options.\n *\n * Configuration:\n * - ELIZAOS_CLOUD_API_KEY: Your ElizaOS Cloud API key (format: eliza_xxxxx)\n * Get it from: https://www.elizacloud.ai/dashboard/api-keys\n *\n * - ELIZAOS_CLOUD_BASE_URL: ElizaOS Cloud API base URL\n * Default: https://www.elizacloud.ai/api/v1\n *\n * - ELIZAOS_CLOUD_SMALL_MODEL: Small/fast model for quick tasks\n * Available: gpt-4o-mini, gpt-4o, claude-3-5-sonnet, gemini-2.0-flash\n * Default: gpt-4o-mini\n *\n * - ELIZAOS_CLOUD_LARGE_MODEL: Large/powerful model for complex tasks\n * Available: gpt-4o-mini, gpt-4o, claude-3-5-sonnet, gemini-2.0-flash\n * Default: gpt-4o\n *\n * - ELIZAOS_CLOUD_EMBEDDING_MODEL: Model for text embeddings\n * - ELIZAOS_CLOUD_EMBEDDING_API_KEY: Separate API key for embeddings (optional)\n * - ELIZAOS_CLOUD_EMBEDDING_URL: Separate URL for embeddings (optional)\n * - ELIZAOS_CLOUD_IMAGE_DESCRIPTION_MODEL: Model for image description (default: gpt-4o-mini)\n *\n * @type {Plugin}\n */\nexport const elizaOSCloudPlugin: Plugin = {\n name: \"elizaOSCloud\",\n description:\n \"ElizaOS Cloud plugin - Multi-model AI generation with text, image, and video support\",\n config: {\n ELIZAOS_CLOUD_API_KEY: process.env.ELIZAOS_CLOUD_API_KEY,\n ELIZAOS_CLOUD_BASE_URL: process.env.ELIZAOS_CLOUD_BASE_URL,\n ELIZAOS_CLOUD_SMALL_MODEL: process.env.ELIZAOS_CLOUD_SMALL_MODEL,\n ELIZAOS_CLOUD_LARGE_MODEL: process.env.ELIZAOS_CLOUD_LARGE_MODEL,\n SMALL_MODEL: process.env.SMALL_MODEL,\n LARGE_MODEL: process.env.LARGE_MODEL,\n ELIZAOS_CLOUD_EMBEDDING_MODEL: process.env.ELIZAOS_CLOUD_EMBEDDING_MODEL,\n ELIZAOS_CLOUD_EMBEDDING_API_KEY:\n process.env.ELIZAOS_CLOUD_EMBEDDING_API_KEY,\n ELIZAOS_CLOUD_EMBEDDING_URL: process.env.ELIZAOS_CLOUD_EMBEDDING_URL,\n ELIZAOS_CLOUD_EMBEDDING_DIMENSIONS:\n process.env.ELIZAOS_CLOUD_EMBEDDING_DIMENSIONS,\n ELIZAOS_CLOUD_IMAGE_DESCRIPTION_MODEL:\n process.env.ELIZAOS_CLOUD_IMAGE_DESCRIPTION_MODEL,\n ELIZAOS_CLOUD_IMAGE_DESCRIPTION_MAX_TOKENS:\n process.env.ELIZAOS_CLOUD_IMAGE_DESCRIPTION_MAX_TOKENS,\n ELIZAOS_CLOUD_EXPERIMENTAL_TELEMETRY:\n process.env.ELIZAOS_CLOUD_EXPERIMENTAL_TELEMETRY,\n ELIZAOS_CLOUD_IMAGE_GENERATION_MODEL:\n process.env.ELIZAOS_CLOUD_IMAGE_GENERATION_MODEL,\n },\n async init(config, runtime) {\n initializeOpenAI(config, runtime);\n },\n\n models: {\n [ModelType.TEXT_EMBEDDING]: handleTextEmbedding,\n // [ModelType.TEXT_TOKENIZER_ENCODE]: handleTokenizerEncode,\n // [ModelType.TEXT_TOKENIZER_DECODE]: handleTokenizerDecode,\n [ModelType.TEXT_SMALL]: handleTextSmall,\n [ModelType.TEXT_LARGE]: handleTextLarge,\n [ModelType.IMAGE]: handleImageGeneration,\n [ModelType.IMAGE_DESCRIPTION]: handleImageDescription,\n // [ModelType.TRANSCRIPTION]: handleTranscription,\n // [ModelType.TEXT_TO_SPEECH]: handleTextToSpeech,\n [ModelType.OBJECT_SMALL]: handleObjectSmall,\n [ModelType.OBJECT_LARGE]: handleObjectLarge,\n },\n tests: [\n {\n name: \"ELIZAOS_CLOUD_plugin_tests\",\n tests: [\n {\n name: \"ELIZAOS_CLOUD_test_url_and_api_key_validation\",\n fn: async (runtime: IAgentRuntime) => {\n const baseURL = getBaseURL(runtime);\n const response = await fetch(`${baseURL}/models`, {\n headers: {\n Authorization: `Bearer ${getApiKey(runtime)}`,\n },\n });\n const data = await response.json();\n logger.log(\n { data: (data as { data?: unknown[] })?.data?.length ?? \"N/A\" },\n \"Models Available\",\n );\n if (!response.ok) {\n throw new Error(\n `Failed to validate OpenAI API key: ${response.statusText}`,\n );\n }\n },\n },\n {\n name: \"ELIZAOS_CLOUD_test_text_embedding\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n const embedding = await runtime.useModel(\n ModelType.TEXT_EMBEDDING,\n {\n text: \"Hello, world!\",\n },\n );\n logger.log({ embedding }, \"embedding\");\n } catch (error: unknown) {\n const message =\n error instanceof Error ? error.message : String(error);\n logger.error(`Error in test_text_embedding: ${message}`);\n throw error;\n }\n },\n },\n {\n name: \"ELIZAOS_CLOUD_test_text_large\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n const text = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt: \"What is the nature of reality in 10 words?\",\n });\n if (text.length === 0) {\n throw new Error(\"Failed to generate text\");\n }\n logger.log({ text }, \"generated with test_text_large\");\n } catch (error: unknown) {\n const message =\n 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: \"ELIZAOS_CLOUD_test_text_small\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n const text = await runtime.useModel(ModelType.TEXT_SMALL, {\n prompt: \"What is the nature of reality in 10 words?\",\n });\n if (text.length === 0) {\n throw new Error(\"Failed to generate text\");\n }\n logger.log({ text }, \"generated with test_text_small\");\n } catch (error: unknown) {\n const message =\n 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: \"ELIZAOS_CLOUD_test_image_generation\",\n fn: async (runtime: IAgentRuntime) => {\n logger.log(\"ELIZAOS_CLOUD_test_image_generation\");\n try {\n const image = await runtime.useModel(ModelType.IMAGE, {\n prompt: \"A beautiful sunset over a calm ocean\",\n n: 1,\n size: \"1024x1024\",\n });\n logger.log({ image }, \"generated with test_image_generation\");\n } catch (error: unknown) {\n const message =\n error instanceof Error ? error.message : String(error);\n logger.error(`Error in test_image_generation: ${message}`);\n throw error;\n }\n },\n },\n {\n name: \"image-description\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n logger.log(\"ELIZAOS_CLOUD_test_image_description\");\n try {\n const result = await runtime.useModel(\n ModelType.IMAGE_DESCRIPTION,\n \"https://upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Vitalik_Buterin_TechCrunch_London_2015_%28cropped%29.jpg/537px-Vitalik_Buterin_TechCrunch_London_2015_%28cropped%29.jpg\",\n );\n\n if (\n result &&\n typeof result === \"object\" &&\n \"title\" in result &&\n \"description\" in result\n ) {\n logger.log({ result }, \"Image description\");\n } else {\n logger.error(\n \"Invalid image description result format:\",\n result,\n );\n }\n } catch (e: unknown) {\n const message = e instanceof Error ? e.message : String(e);\n logger.error(`Error in image description test: ${message}`);\n }\n } catch (e: unknown) {\n const message = e instanceof Error ? e.message : String(e);\n logger.error(\n `Error in ELIZAOS_CLOUD_test_image_description: ${message}`,\n );\n }\n },\n },\n {\n name: \"ELIZAOS_CLOUD_test_transcription\",\n fn: async (runtime: IAgentRuntime) => {\n logger.log(\"ELIZAOS_CLOUD_test_transcription\");\n try {\n const response = await fetch(\n \"https://upload.wikimedia.org/wikipedia/en/4/40/Chris_Benoit_Voice_Message.ogg\",\n );\n const arrayBuffer = await response.arrayBuffer();\n const transcription = await runtime.useModel(\n ModelType.TRANSCRIPTION,\n Buffer.from(new Uint8Array(arrayBuffer)),\n );\n logger.log(\n { transcription },\n \"generated with test_transcription\",\n );\n } catch (error: unknown) {\n const message =\n error instanceof Error ? error.message : String(error);\n logger.error(`Error in test_transcription: ${message}`);\n throw error;\n }\n },\n },\n {\n name: \"ELIZAOS_CLOUD_test_text_tokenizer_encode\",\n fn: async (runtime: IAgentRuntime) => {\n const prompt = \"Hello tokenizer encode!\";\n const tokens = await runtime.useModel(\n ModelType.TEXT_TOKENIZER_ENCODE,\n { prompt },\n );\n if (!Array.isArray(tokens) || tokens.length === 0) {\n throw new Error(\n \"Failed to tokenize text: expected non-empty array of tokens\",\n );\n }\n logger.log({ tokens }, \"Tokenized output\");\n },\n },\n {\n name: \"ELIZAOS_CLOUD_test_text_tokenizer_decode\",\n fn: async (runtime: IAgentRuntime) => {\n const prompt = \"Hello tokenizer decode!\";\n const tokens = await runtime.useModel(\n ModelType.TEXT_TOKENIZER_ENCODE,\n { prompt },\n );\n const decodedText = await runtime.useModel(\n ModelType.TEXT_TOKENIZER_DECODE,\n { tokens },\n );\n if (decodedText !== prompt) {\n throw new Error(\n `Decoded text does not match original. Expected \"${prompt}\", got \"${decodedText}\"`,\n );\n }\n logger.log({ decodedText }, \"Decoded text\");\n },\n },\n {\n name: \"ELIZAOS_CLOUD_test_text_to_speech\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n const response = await fetchTextToSpeech(runtime, {\n text: \"Hello, this is a test for text-to-speech.\",\n });\n if (!response) {\n throw new Error(\"Failed to generate speech\");\n }\n logger.log(\"Generated speech successfully\");\n } catch (error: unknown) {\n const message =\n error instanceof Error ? error.message : String(error);\n logger.error(\n `Error in ELIZAOS_CLOUD_test_text_to_speech: ${message}`,\n );\n throw error;\n }\n },\n },\n ],\n },\n ],\n};\nexport default elizaOSCloudPlugin;\n",
5
+ "import type { IAgentRuntime, Plugin, IDatabaseAdapter } from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { initializeOpenAI } from \"./init\";\nimport {\n handleTextSmall,\n handleTextLarge,\n handleObjectSmall,\n handleObjectLarge,\n handleTextEmbedding,\n handleImageGeneration,\n handleImageDescription,\n handleTranscription,\n handleTextToSpeech,\n handleTokenizerEncode,\n handleTokenizerDecode,\n fetchTextToSpeech,\n} from \"./models\";\nimport { getApiKey, getBaseURL, isBrowser } from \"./utils/config\";\nimport { createCloudDatabaseAdapter } from \"./database/adapter\";\nimport { CloudStorageService } from \"./storage/service\";\n\n// Re-export types for convenience\nexport type {\n OpenAITranscriptionParams,\n OpenAITextToSpeechParams,\n} from \"./types\";\n\n// Re-export database module\nexport {\n CloudDatabaseAdapter,\n createCloudDatabaseAdapter,\n createDirectDatabaseAdapter,\n createDatabaseAdapter,\n // Schema tables\n agentTable,\n roomTable,\n participantTable,\n memoryTable,\n embeddingTable,\n entityTable,\n relationshipTable,\n componentTable,\n taskTable,\n logTable,\n cacheTable,\n worldTable,\n serverTable,\n serverAgentsTable, // Alias for serverTable (backwards compat)\n messageTable,\n messageServerTable,\n messageServerAgentsTable,\n channelTable,\n channelParticipantsTable,\n pluginSql,\n} from \"./database\";\nexport type { CloudDatabaseConfig, CloudDatabaseStatus } from \"./database/types\";\n\n// Re-export storage module\nexport { CloudStorageService, createCloudStorageService } from \"./storage\";\nexport type {\n CloudStorageConfig,\n StorageUploadResult,\n StorageListResult,\n StorageItem,\n} from \"./storage/types\";\n\n// Global storage service instance (available after init)\nlet cloudStorageInstance: CloudStorageService | null = null;\n\n/**\n * Get the cloud storage service instance\n * Available after plugin initialization\n */\nexport function getCloudStorage(): CloudStorageService | null {\n return cloudStorageInstance;\n}\n\n/**\n * Initialize cloud database for the runtime\n * This provisions a managed PostgreSQL database from ElizaOS Cloud\n */\nasync function initializeCloudDatabase(runtime: IAgentRuntime): Promise<void> {\n const apiKey = getApiKey(runtime);\n const baseUrl = getBaseURL(runtime);\n\n if (!apiKey) {\n logger.warn(\n { src: \"plugin:elizacloud\" },\n \"Cloud database enabled but no API key found - skipping database initialization\",\n );\n return;\n }\n\n logger.info(\n { src: \"plugin:elizacloud\", agentId: runtime.agentId },\n \"Initializing cloud database\",\n );\n\n const adapter = await createCloudDatabaseAdapter({\n apiKey,\n baseUrl,\n agentId: runtime.agentId,\n });\n\n if (adapter) {\n // Cast to IDatabaseAdapter - the actual adapter from plugin-sql implements this interface\n runtime.registerDatabaseAdapter(adapter as IDatabaseAdapter);\n logger.info(\n { src: \"plugin:elizacloud\", agentId: runtime.agentId },\n \"Cloud database adapter registered successfully\",\n );\n } else {\n logger.error(\n { src: \"plugin:elizacloud\", agentId: runtime.agentId },\n \"Failed to initialize cloud database adapter\",\n );\n }\n}\n\n/**\n * Initialize cloud storage service\n */\nfunction initializeCloudStorage(runtime: IAgentRuntime): void {\n const apiKey = getApiKey(runtime);\n const baseUrl = getBaseURL(runtime);\n\n if (!apiKey) {\n logger.warn(\n { src: \"plugin:elizacloud\" },\n \"No API key found - cloud storage will not be available\",\n );\n return;\n }\n\n cloudStorageInstance = new CloudStorageService({\n apiKey,\n baseUrl,\n });\n\n logger.info(\n { src: \"plugin:elizacloud\", agentId: runtime.agentId },\n \"Cloud storage service initialized\",\n );\n}\n\n/**\n * Defines the ElizaOS Cloud plugin with its name, description, and configuration options.\n *\n * Configuration:\n * - ELIZAOS_CLOUD_API_KEY: Your ElizaOS Cloud API key (format: eliza_xxxxx)\n * Get it from: https://www.elizacloud.ai/dashboard/api-keys\n *\n * - ELIZAOS_CLOUD_BASE_URL: ElizaOS Cloud API base URL\n * Default: https://www.elizacloud.ai/api/v1\n *\n * - ELIZAOS_CLOUD_SMALL_MODEL: Small/fast model for quick tasks\n * Available: gpt-4o-mini, gpt-4o, claude-3-5-sonnet, gemini-2.0-flash\n * Default: gpt-4o-mini\n *\n * - ELIZAOS_CLOUD_LARGE_MODEL: Large/powerful model for complex tasks\n * Available: gpt-4o-mini, gpt-4o, claude-3-5-sonnet, gemini-2.0-flash\n * Default: gpt-4o\n *\n * - ELIZAOS_CLOUD_EMBEDDING_MODEL: Model for text embeddings\n * - ELIZAOS_CLOUD_EMBEDDING_API_KEY: Separate API key for embeddings (optional)\n * - ELIZAOS_CLOUD_EMBEDDING_URL: Separate URL for embeddings (optional)\n * - ELIZAOS_CLOUD_IMAGE_DESCRIPTION_MODEL: Model for image description (default: gpt-4o-mini)\n *\n * @type {Plugin}\n */\nexport const elizaOSCloudPlugin: Plugin = {\n name: \"elizaOSCloud\",\n description:\n \"ElizaOS Cloud plugin - Complete AI, storage, and database solution. Provides multi-model inference (GPT-4, Claude, Gemini), embeddings, image generation, transcription, TTS, managed PostgreSQL database, and cloud file storage. A single plugin that replaces all other AI and database plugins.\",\n config: {\n // Core API configuration\n ELIZAOS_CLOUD_API_KEY: process.env.ELIZAOS_CLOUD_API_KEY,\n ELIZAOS_CLOUD_BASE_URL: process.env.ELIZAOS_CLOUD_BASE_URL,\n \n // AI model configuration\n ELIZAOS_CLOUD_SMALL_MODEL: process.env.ELIZAOS_CLOUD_SMALL_MODEL,\n ELIZAOS_CLOUD_LARGE_MODEL: process.env.ELIZAOS_CLOUD_LARGE_MODEL,\n SMALL_MODEL: process.env.SMALL_MODEL,\n LARGE_MODEL: process.env.LARGE_MODEL,\n \n // Embedding configuration\n ELIZAOS_CLOUD_EMBEDDING_MODEL: process.env.ELIZAOS_CLOUD_EMBEDDING_MODEL,\n ELIZAOS_CLOUD_EMBEDDING_API_KEY: process.env.ELIZAOS_CLOUD_EMBEDDING_API_KEY,\n ELIZAOS_CLOUD_EMBEDDING_URL: process.env.ELIZAOS_CLOUD_EMBEDDING_URL,\n ELIZAOS_CLOUD_EMBEDDING_DIMENSIONS: process.env.ELIZAOS_CLOUD_EMBEDDING_DIMENSIONS,\n \n // Image configuration\n ELIZAOS_CLOUD_IMAGE_DESCRIPTION_MODEL: process.env.ELIZAOS_CLOUD_IMAGE_DESCRIPTION_MODEL,\n ELIZAOS_CLOUD_IMAGE_DESCRIPTION_MAX_TOKENS: process.env.ELIZAOS_CLOUD_IMAGE_DESCRIPTION_MAX_TOKENS,\n ELIZAOS_CLOUD_IMAGE_GENERATION_MODEL: process.env.ELIZAOS_CLOUD_IMAGE_GENERATION_MODEL,\n \n // Audio configuration\n ELIZAOS_CLOUD_TTS_MODEL: process.env.ELIZAOS_CLOUD_TTS_MODEL,\n ELIZAOS_CLOUD_TTS_VOICE: process.env.ELIZAOS_CLOUD_TTS_VOICE,\n ELIZAOS_CLOUD_TRANSCRIPTION_MODEL: process.env.ELIZAOS_CLOUD_TRANSCRIPTION_MODEL,\n \n // Database configuration\n ELIZAOS_CLOUD_DATABASE: process.env.ELIZAOS_CLOUD_DATABASE,\n \n // Storage configuration (always available with API key)\n ELIZAOS_CLOUD_STORAGE: process.env.ELIZAOS_CLOUD_STORAGE,\n \n // Telemetry\n ELIZAOS_CLOUD_EXPERIMENTAL_TELEMETRY: process.env.ELIZAOS_CLOUD_EXPERIMENTAL_TELEMETRY,\n },\n // Set priority higher than plugin-sql so we can register database first\n priority: -1,\n async init(config, runtime) {\n // Initialize AI model configuration\n initializeOpenAI(config, runtime);\n\n // Initialize storage service (always available if API key is present)\n if (!isBrowser()) {\n initializeCloudStorage(runtime);\n }\n\n // Check if cloud database is enabled and we're in Node.js environment\n const cloudDatabaseEnabled =\n runtime.getSetting(\"ELIZAOS_CLOUD_DATABASE\") === \"true\" ||\n process.env.ELIZAOS_CLOUD_DATABASE === \"true\";\n\n if (cloudDatabaseEnabled && !isBrowser()) {\n await initializeCloudDatabase(runtime);\n }\n },\n\n models: {\n // Text generation models\n [ModelType.TEXT_SMALL]: handleTextSmall,\n [ModelType.TEXT_LARGE]: handleTextLarge,\n [ModelType.TEXT_REASONING_SMALL]: handleTextSmall, // Uses same handler with different model config\n [ModelType.TEXT_REASONING_LARGE]: handleTextLarge, // Uses same handler with different model config\n \n // Structured output models\n [ModelType.OBJECT_SMALL]: handleObjectSmall,\n [ModelType.OBJECT_LARGE]: handleObjectLarge,\n \n // Embedding and tokenization\n [ModelType.TEXT_EMBEDDING]: handleTextEmbedding,\n [ModelType.TEXT_TOKENIZER_ENCODE]: handleTokenizerEncode,\n [ModelType.TEXT_TOKENIZER_DECODE]: handleTokenizerDecode,\n \n // Image generation and understanding\n [ModelType.IMAGE]: handleImageGeneration,\n [ModelType.IMAGE_DESCRIPTION]: handleImageDescription,\n \n // Audio processing\n [ModelType.TRANSCRIPTION]: handleTranscription,\n [ModelType.TEXT_TO_SPEECH]: handleTextToSpeech,\n },\n tests: [\n {\n name: \"ELIZAOS_CLOUD_plugin_tests\",\n tests: [\n {\n name: \"ELIZAOS_CLOUD_test_url_and_api_key_validation\",\n fn: async (runtime: IAgentRuntime) => {\n const baseURL = getBaseURL(runtime);\n const response = await fetch(`${baseURL}/models`, {\n headers: {\n Authorization: `Bearer ${getApiKey(runtime)}`,\n },\n });\n const data = await response.json();\n logger.log(\n { data: (data as { data?: unknown[] })?.data?.length ?? \"N/A\" },\n \"Models Available\",\n );\n if (!response.ok) {\n throw new Error(\n `Failed to validate OpenAI API key: ${response.statusText}`,\n );\n }\n },\n },\n {\n name: \"ELIZAOS_CLOUD_test_text_embedding\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n const embedding = await runtime.useModel(\n ModelType.TEXT_EMBEDDING,\n {\n text: \"Hello, world!\",\n },\n );\n logger.log({ embedding }, \"embedding\");\n } catch (error: unknown) {\n const message =\n error instanceof Error ? error.message : String(error);\n logger.error(`Error in test_text_embedding: ${message}`);\n throw error;\n }\n },\n },\n {\n name: \"ELIZAOS_CLOUD_test_text_large\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n const text = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt: \"What is the nature of reality in 10 words?\",\n });\n if (text.length === 0) {\n throw new Error(\"Failed to generate text\");\n }\n logger.log({ text }, \"generated with test_text_large\");\n } catch (error: unknown) {\n const message =\n 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: \"ELIZAOS_CLOUD_test_text_small\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n const text = await runtime.useModel(ModelType.TEXT_SMALL, {\n prompt: \"What is the nature of reality in 10 words?\",\n });\n if (text.length === 0) {\n throw new Error(\"Failed to generate text\");\n }\n logger.log({ text }, \"generated with test_text_small\");\n } catch (error: unknown) {\n const message =\n 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: \"ELIZAOS_CLOUD_test_image_generation\",\n fn: async (runtime: IAgentRuntime) => {\n logger.log(\"ELIZAOS_CLOUD_test_image_generation\");\n try {\n const image = await runtime.useModel(ModelType.IMAGE, {\n prompt: \"A beautiful sunset over a calm ocean\",\n n: 1,\n size: \"1024x1024\",\n });\n logger.log({ image }, \"generated with test_image_generation\");\n } catch (error: unknown) {\n const message =\n error instanceof Error ? error.message : String(error);\n logger.error(`Error in test_image_generation: ${message}`);\n throw error;\n }\n },\n },\n {\n name: \"image-description\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n logger.log(\"ELIZAOS_CLOUD_test_image_description\");\n try {\n const result = await runtime.useModel(\n ModelType.IMAGE_DESCRIPTION,\n \"https://upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Vitalik_Buterin_TechCrunch_London_2015_%28cropped%29.jpg/537px-Vitalik_Buterin_TechCrunch_London_2015_%28cropped%29.jpg\",\n );\n\n if (\n result &&\n typeof result === \"object\" &&\n \"title\" in result &&\n \"description\" in result\n ) {\n logger.log({ result }, \"Image description\");\n } else {\n logger.error(\n \"Invalid image description result format:\",\n result,\n );\n }\n } catch (e: unknown) {\n const message = e instanceof Error ? e.message : String(e);\n logger.error(`Error in image description test: ${message}`);\n }\n } catch (e: unknown) {\n const message = e instanceof Error ? e.message : String(e);\n logger.error(\n `Error in ELIZAOS_CLOUD_test_image_description: ${message}`,\n );\n }\n },\n },\n {\n name: \"ELIZAOS_CLOUD_test_transcription\",\n fn: async (runtime: IAgentRuntime) => {\n logger.log(\"ELIZAOS_CLOUD_test_transcription\");\n try {\n const response = await fetch(\n \"https://upload.wikimedia.org/wikipedia/en/4/40/Chris_Benoit_Voice_Message.ogg\",\n );\n const arrayBuffer = await response.arrayBuffer();\n const transcription = await runtime.useModel(\n ModelType.TRANSCRIPTION,\n Buffer.from(new Uint8Array(arrayBuffer)),\n );\n logger.log(\n { transcription },\n \"generated with test_transcription\",\n );\n } catch (error: unknown) {\n const message =\n error instanceof Error ? error.message : String(error);\n logger.error(`Error in test_transcription: ${message}`);\n throw error;\n }\n },\n },\n {\n name: \"ELIZAOS_CLOUD_test_text_tokenizer_encode\",\n fn: async (runtime: IAgentRuntime) => {\n const prompt = \"Hello tokenizer encode!\";\n const tokens = await runtime.useModel(\n ModelType.TEXT_TOKENIZER_ENCODE,\n { prompt },\n );\n if (!Array.isArray(tokens) || tokens.length === 0) {\n throw new Error(\n \"Failed to tokenize text: expected non-empty array of tokens\",\n );\n }\n logger.log({ tokens }, \"Tokenized output\");\n },\n },\n {\n name: \"ELIZAOS_CLOUD_test_text_tokenizer_decode\",\n fn: async (runtime: IAgentRuntime) => {\n const prompt = \"Hello tokenizer decode!\";\n const tokens = await runtime.useModel(\n ModelType.TEXT_TOKENIZER_ENCODE,\n { prompt },\n );\n const decodedText = await runtime.useModel(\n ModelType.TEXT_TOKENIZER_DECODE,\n { tokens },\n );\n if (decodedText !== prompt) {\n throw new Error(\n `Decoded text does not match original. Expected \"${prompt}\", got \"${decodedText}\"`,\n );\n }\n logger.log({ decodedText }, \"Decoded text\");\n },\n },\n {\n name: \"ELIZAOS_CLOUD_test_text_to_speech\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n const response = await fetchTextToSpeech(runtime, {\n text: \"Hello, this is a test for text-to-speech.\",\n });\n if (!response) {\n throw new Error(\"Failed to generate speech\");\n }\n logger.log(\"Generated speech successfully\");\n } catch (error: unknown) {\n const message =\n error instanceof Error ? error.message : String(error);\n logger.error(\n `Error in ELIZAOS_CLOUD_test_text_to_speech: ${message}`,\n );\n throw error;\n }\n },\n },\n ],\n },\n ],\n};\nexport default elizaOSCloudPlugin;\n",
6
6
  "import { logger, type IAgentRuntime } from \"@elizaos/core\";\nimport {\n getApiKey,\n getBaseURL,\n getAuthHeader,\n isBrowser,\n} from \"./utils/config\";\n\n/**\n * Initialize and validate ElizaOS Cloud configuration\n */\nexport function initializeOpenAI(\n _config: Record<string, unknown>,\n runtime: IAgentRuntime,\n): void {\n // Do check in the background\n new Promise<void>(async (resolve) => {\n resolve();\n try {\n if (!getApiKey(runtime) && !isBrowser()) {\n logger.warn(\n \"ELIZAOS_CLOUD_API_KEY is not set in environment - ElizaOS Cloud functionality will be limited\",\n );\n logger.info(\n \"Get your API key from https://www.elizacloud.ai/dashboard/api-keys\",\n );\n return;\n }\n try {\n const baseURL = getBaseURL(runtime);\n const response = await fetch(`${baseURL}/models`, {\n headers: { ...getAuthHeader(runtime) },\n });\n if (!response.ok) {\n logger.warn(\n `ElizaOS Cloud API key validation failed: ${response.statusText}`,\n );\n logger.warn(\n \"ElizaOS Cloud functionality will be limited until a valid API key is provided\",\n );\n logger.info(\n \"Get your API key from https://www.elizacloud.ai/dashboard/api-keys\",\n );\n } else {\n logger.log(\"ElizaOS Cloud API key validated successfully\");\n }\n } catch (fetchError: unknown) {\n const message =\n fetchError instanceof Error ? fetchError.message : String(fetchError);\n logger.warn(`Error validating ElizaOS Cloud API key: ${message}`);\n logger.warn(\n \"ElizaOS Cloud functionality will be limited until a valid API key is provided\",\n );\n }\n } catch (error: unknown) {\n const message =\n (error as { errors?: Array<{ message: string }> })?.errors\n ?.map((e) => e.message)\n .join(\", \") ||\n (error instanceof Error ? error.message : String(error));\n logger.warn(\n `ElizaOS Cloud plugin configuration issue: ${message} - You need to configure the ELIZAOS_CLOUD_API_KEY in your environment variables`,\n );\n logger.info(\n \"Get your API key from https://www.elizacloud.ai/dashboard/api-keys\",\n );\n }\n });\n}\n",
7
7
  "import type { IAgentRuntime } from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\n\n/**\n * Retrieves a configuration setting from the runtime, falling back to environment variables or a default value if not found.\n *\n * @param key - The name of the setting to retrieve.\n * @param defaultValue - The value to return if the setting is not found in the runtime or environment.\n * @returns The resolved setting value, or {@link defaultValue} if not found.\n */\nexport function getSetting(\n runtime: IAgentRuntime,\n key: string,\n defaultValue?: string,\n): string | undefined {\n return runtime.getSetting(key) ?? process.env[key] ?? defaultValue;\n}\n\nexport function isBrowser(): boolean {\n return (\n typeof globalThis !== \"undefined\" &&\n typeof (globalThis as Record<string, unknown>).document !== \"undefined\"\n );\n}\n\n/**\n * Determines whether we're running in a browser with a server-hosted proxy configured.\n * In this mode, we do not require a real API key on the client and rely on the proxy to inject it.\n */\nexport function isProxyMode(runtime: IAgentRuntime): boolean {\n return isBrowser() && !!getSetting(runtime, \"ELIZAOS_CLOUD_BROWSER_BASE_URL\");\n}\n\nexport function getAuthHeader(\n runtime: IAgentRuntime,\n forEmbedding = false,\n): Record<string, string> {\n if (isBrowser()) return {};\n const key = forEmbedding ? getEmbeddingApiKey(runtime) : getApiKey(runtime);\n return key ? { Authorization: `Bearer ${key}` } : {};\n}\n\n/**\n * Retrieves the ElizaOS Cloud API base URL from runtime settings, environment variables, or defaults.\n *\n * @returns The resolved base URL for ElizaOS Cloud API requests.\n */\nexport function getBaseURL(runtime: IAgentRuntime): string {\n const browserURL = getSetting(runtime, \"ELIZAOS_CLOUD_BROWSER_BASE_URL\");\n const baseURL = (\n isBrowser() && browserURL\n ? browserURL\n : getSetting(runtime, \"ELIZAOS_CLOUD_BASE_URL\", \"https://www.elizacloud.ai/api/v1\")\n ) as string;\n console.log(`[ELIZAOS_CLOUD] Default base URL: ${baseURL}`);\n return baseURL;\n}\n\n/**\n * Retrieves the ElizaOS Cloud API base URL for embeddings, falling back to the general base URL.\n *\n * @returns The resolved base URL for ElizaOS Cloud embedding requests.\n */\nexport function getEmbeddingBaseURL(runtime: IAgentRuntime): string {\n const embeddingURL = isBrowser()\n ? getSetting(runtime, \"ELIZAOS_CLOUD_BROWSER_EMBEDDING_URL\") ||\n getSetting(runtime, \"ELIZAOS_CLOUD_BROWSER_BASE_URL\")\n : getSetting(runtime, \"ELIZAOS_CLOUD_EMBEDDING_URL\");\n if (embeddingURL) {\n logger.debug(\n `[ELIZAOS_CLOUD] Using specific embedding base URL: ${embeddingURL}`,\n );\n return embeddingURL;\n }\n logger.debug(\n \"[ELIZAOS_CLOUD] Falling back to general base URL for embeddings.\",\n );\n return getBaseURL(runtime);\n}\n\n/**\n * Helper function to get the API key for ElizaOS Cloud\n * Expected format: eliza_<random_32_chars>\n *\n * @param runtime The runtime context\n * @returns The configured API key\n */\nexport function getApiKey(runtime: IAgentRuntime): string | undefined {\n return getSetting(runtime, \"ELIZAOS_CLOUD_API_KEY\");\n}\n\n/**\n * Helper function to get the embedding API key for ElizaOS Cloud, falling back to the general API key if not set.\n *\n * @param runtime The runtime context\n * @returns The configured API key\n */\nexport function getEmbeddingApiKey(runtime: IAgentRuntime): string | undefined {\n const embeddingApiKey = getSetting(runtime, \"ELIZAOS_CLOUD_EMBEDDING_API_KEY\");\n if (embeddingApiKey) {\n logger.debug(\"[ELIZAOS_CLOUD] Using specific embedding API key (present)\");\n return embeddingApiKey;\n }\n logger.debug(\n \"[ELIZAOS_CLOUD] Falling back to general API key for embeddings.\",\n );\n return getApiKey(runtime);\n}\n\n/**\n * Helper function to get the small model name with fallbacks\n * Available models on ElizaOS Cloud: gpt-4o-mini, gpt-4o, claude-3-5-sonnet, gemini-2.0-flash\n *\n * @param runtime The runtime context\n * @returns The configured small model name\n */\nexport function getSmallModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"ELIZAOS_CLOUD_SMALL_MODEL\") ??\n (getSetting(runtime, \"SMALL_MODEL\", \"gpt-4o-mini\") as string)\n );\n}\n\n/**\n * Helper function to get the large model name with fallbacks\n * Available models on ElizaOS Cloud: gpt-4o-mini, gpt-4o, claude-3-5-sonnet, gemini-2.0-flash\n *\n * @param runtime The runtime context\n * @returns The configured large model name\n */\nexport function getLargeModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"ELIZAOS_CLOUD_LARGE_MODEL\") ??\n (getSetting(runtime, \"LARGE_MODEL\", \"gpt-4o\") as string)\n );\n}\n\n/**\n * Helper function to get the image description model name with fallbacks\n *\n * @param runtime The runtime context\n * @returns The configured image description model name\n */\nexport function getImageDescriptionModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"ELIZAOS_CLOUD_IMAGE_DESCRIPTION_MODEL\", \"gpt-4o-mini\") ??\n \"gpt-4o-mini\"\n );\n}\n\n/**\n * Helper function to get the image generation model name with fallbacks\n *\n * @param runtime The runtime context\n * @returns The configured image generation model name\n */\nexport function getImageGenerationModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"ELIZAOS_CLOUD_IMAGE_GENERATION_MODEL\", \"openai/gpt-5-nano\") ??\n \"openai/gpt-5-nano\"\n );\n}\n\n/**\n * Helper function to get experimental telemetry setting\n *\n * @param runtime The runtime context\n * @returns Whether experimental telemetry is enabled\n */\nexport function getExperimentalTelemetry(runtime: IAgentRuntime): boolean {\n const setting = getSetting(\n runtime,\n \"ELIZAOS_CLOUD_EXPERIMENTAL_TELEMETRY\",\n \"false\",\n );\n // Convert to string and check for truthy values\n const normalizedSetting = String(setting).toLowerCase();\n const result = normalizedSetting === \"true\";\n logger.debug(\n `[ELIZAOS_CLOUD] Experimental telemetry in function: \"${setting}\" (type: ${typeof setting}, normalized: \"${normalizedSetting}\", result: ${result})`,\n );\n return result;\n}\n",
8
8
  "import type { GenerateTextParams, IAgentRuntime } from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { generateText } from \"ai\";\nimport { createOpenAIClient } from \"../providers/openai\";\nimport {\n getSmallModel,\n getLargeModel,\n getExperimentalTelemetry,\n} from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\n/**\n * TEXT_SMALL model handler\n */\nexport async function handleTextSmall(\n runtime: IAgentRuntime,\n {\n prompt,\n stopSequences = [],\n maxTokens = 8192,\n temperature = 0.7,\n frequencyPenalty = 0.7,\n presencePenalty = 0.7,\n }: GenerateTextParams,\n): Promise<string> {\n const openai = createOpenAIClient(runtime);\n const modelName = getSmallModel(runtime);\n const experimentalTelemetry = getExperimentalTelemetry(runtime);\n\n logger.log(`[ELIZAOS_CLOUD] Using TEXT_SMALL model: ${modelName}`);\n logger.log(prompt);\n\n const { text: openaiResponse, usage } = await generateText({\n model: openai.languageModel(modelName),\n prompt: prompt,\n system: runtime.character.system ?? undefined,\n temperature: temperature,\n maxOutputTokens: maxTokens,\n frequencyPenalty: frequencyPenalty,\n presencePenalty: presencePenalty,\n stopSequences: stopSequences,\n experimental_telemetry: {\n isEnabled: experimentalTelemetry,\n },\n });\n\n if (usage) {\n emitModelUsageEvent(runtime, ModelType.TEXT_SMALL, prompt, usage);\n }\n\n return openaiResponse;\n}\n\n/**\n * TEXT_LARGE model handler\n */\nexport async function handleTextLarge(\n runtime: IAgentRuntime,\n {\n prompt,\n stopSequences = [],\n maxTokens = 8192,\n temperature = 0.7,\n frequencyPenalty = 0.7,\n presencePenalty = 0.7,\n }: GenerateTextParams,\n): Promise<string> {\n const openai = createOpenAIClient(runtime);\n const modelName = getLargeModel(runtime);\n const experimentalTelemetry = getExperimentalTelemetry(runtime);\n\n logger.log(`[ELIZAOS_CLOUD] Using TEXT_LARGE model: ${modelName}`);\n logger.log(prompt);\n\n const { text: openaiResponse, usage } = await generateText({\n model: openai.languageModel(modelName),\n prompt: prompt,\n system: runtime.character.system ?? undefined,\n temperature: temperature,\n maxOutputTokens: maxTokens,\n frequencyPenalty: frequencyPenalty,\n presencePenalty: presencePenalty,\n stopSequences: stopSequences,\n experimental_telemetry: {\n isEnabled: experimentalTelemetry,\n },\n });\n\n if (usage) {\n emitModelUsageEvent(runtime, ModelType.TEXT_LARGE, prompt, usage);\n }\n\n return openaiResponse;\n}\n",
@@ -12,9 +12,15 @@
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
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",
14
14
  "import type { IAgentRuntime, ImageDescriptionParams } 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\";\nimport type { ImageDescriptionResult } from \"../types\";\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: {\n prompt: string;\n n?: number;\n size?: string;\n },\n): Promise<{ url: string }[]> {\n const numImages = params.n || 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<ImageDescriptionResult | 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 // Check if a custom prompt was provided (not the default prompt)\n const isCustomPrompt =\n typeof params === \"object\" &&\n params.prompt &&\n params.prompt !==\n \"Please analyze this image and provide a title and detailed description.\";\n\n // If custom prompt is used, return the raw content\n if (isCustomPrompt) {\n return content;\n }\n\n // Otherwise, maintain backwards compatibility with object return\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
- "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"
15
+ "import type { IAgentRuntime } from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport { getSetting, getBaseURL, getAuthHeader } from \"../utils/config\";\nimport { detectAudioMimeType } from \"../utils/helpers\";\nimport type { OpenAITranscriptionParams } from \"../types\";\n\n/**\n * TRANSCRIPTION model handler\n */\nexport async function handleTranscription(\n runtime: IAgentRuntime,\n input: Blob | File | Buffer | OpenAITranscriptionParams,\n): Promise<string> {\n let modelName = getSetting(\n runtime,\n \"ELIZAOS_CLOUD_TRANSCRIPTION_MODEL\",\n \"gpt-4o-mini-transcribe\",\n );\n logger.log(`[ELIZAOS_CLOUD] Using TRANSCRIPTION model: ${modelName}`);\n\n const baseURL = getBaseURL(runtime);\n\n // Support Blob/File/Buffer directly, or an object with { audio: Blob/File/Buffer, ...options }\n let blob: Blob;\n let extraParams: OpenAITranscriptionParams | null = null;\n\n if (input instanceof Blob || input instanceof File) {\n blob = input as Blob;\n } else if (Buffer.isBuffer(input)) {\n // Convert Buffer to Blob for Node.js environments\n // Auto-detect MIME type from buffer content\n const detectedMimeType = detectAudioMimeType(input);\n logger.debug(`Auto-detected audio MIME type: ${detectedMimeType}`);\n // Cast to any to satisfy TypeScript's strict ArrayBufferLike typing\n // Note: Blob constructor creates a copy of the buffer data\n blob = new Blob([input] as never, { type: detectedMimeType });\n } else if (\n typeof input === \"object\" &&\n input !== null &&\n \"audio\" in input &&\n input.audio != null\n ) {\n const params = input as OpenAITranscriptionParams;\n if (\n !(params.audio instanceof Blob) &&\n !(params.audio instanceof File) &&\n !Buffer.isBuffer(params.audio)\n ) {\n throw new Error(\n \"TRANSCRIPTION param 'audio' must be a Blob/File/Buffer.\",\n );\n }\n // Convert Buffer to Blob if needed\n if (Buffer.isBuffer(params.audio)) {\n // Use provided mimeType or auto-detect from buffer\n let mimeType = params.mimeType;\n if (!mimeType) {\n mimeType = detectAudioMimeType(params.audio);\n logger.debug(`Auto-detected audio MIME type: ${mimeType}`);\n } else {\n logger.debug(`Using provided MIME type: ${mimeType}`);\n }\n // Cast to any to satisfy TypeScript's strict ArrayBufferLike typing\n // Note: Blob constructor creates a copy of the buffer data\n blob = new Blob([params.audio] as never, { type: mimeType });\n } else {\n blob = params.audio as Blob;\n }\n extraParams = params;\n if (typeof params.model === \"string\" && params.model) {\n modelName = params.model;\n }\n } else {\n throw new Error(\n \"TRANSCRIPTION expects a Blob/File/Buffer or an object { audio: Blob/File/Buffer, mimeType?, language?, response_format?, timestampGranularities?, prompt?, temperature?, model? }\",\n );\n }\n\n const mime = (blob as File).type || \"audio/webm\";\n const filename =\n (blob as File).name ||\n (mime.includes(\"mp3\") || mime.includes(\"mpeg\")\n ? \"recording.mp3\"\n : mime.includes(\"ogg\")\n ? \"recording.ogg\"\n : mime.includes(\"wav\")\n ? \"recording.wav\"\n : mime.includes(\"webm\")\n ? \"recording.webm\"\n : \"recording.bin\");\n\n const formData = new FormData();\n formData.append(\"file\", blob, filename);\n formData.append(\"model\", String(modelName));\n if (extraParams) {\n if (typeof extraParams.language === \"string\") {\n formData.append(\"language\", String(extraParams.language));\n }\n if (typeof extraParams.response_format === \"string\") {\n formData.append(\"response_format\", String(extraParams.response_format));\n }\n if (typeof extraParams.prompt === \"string\") {\n formData.append(\"prompt\", String(extraParams.prompt));\n }\n if (typeof extraParams.temperature === \"number\") {\n formData.append(\"temperature\", String(extraParams.temperature));\n }\n if (Array.isArray(extraParams.timestampGranularities)) {\n for (const g of extraParams.timestampGranularities) {\n formData.append(\"timestamp_granularities[]\", String(g));\n }\n }\n }\n\n try {\n const response = await fetch(`${baseURL}/audio/transcriptions`, {\n method: \"POST\",\n headers: {\n ...getAuthHeader(runtime),\n },\n body: formData,\n });\n\n if (!response.ok) {\n throw new Error(\n `Failed to transcribe audio: ${response.status} ${response.statusText}`,\n );\n }\n\n const data = (await response.json()) as { text: string };\n return data.text || \"\";\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`TRANSCRIPTION error: ${message}`);\n throw error;\n }\n}\n",
16
+ "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",
17
+ "import type {\n DetokenizeTextParams,\n IAgentRuntime,\n ModelTypeName,\n TokenizeTextParams,\n} from \"@elizaos/core\";\nimport { ModelType } from \"@elizaos/core\";\nimport { encodingForModel, type TiktokenModel } from \"js-tiktoken\";\n\n/**\n * Asynchronously tokenizes the given text based on the specified model and prompt.\n *\n * @param {ModelTypeName} model - The type of model to use for tokenization.\n * @param {string} prompt - The text prompt to tokenize.\n * @returns {number[]} - An array of tokens representing the encoded prompt.\n */\nasync function tokenizeText(\n model: ModelTypeName,\n prompt: string,\n): Promise<number[]> {\n const modelName =\n model === ModelType.TEXT_SMALL\n ? (process.env.ELIZAOS_CLOUD_SMALL_MODEL ??\n process.env.SMALL_MODEL ??\n \"gpt-5-nano\")\n : (process.env.LARGE_MODEL ?? \"gpt-5-mini\");\n const tokens = encodingForModel(modelName as TiktokenModel).encode(prompt);\n return tokens;\n}\n\n/**\n * Detokenize a sequence of tokens back into text using the specified model.\n *\n * @param {ModelTypeName} model - The type of model to use for detokenization.\n * @param {number[]} tokens - The sequence of tokens to detokenize.\n * @returns {string} The detokenized text.\n */\nasync function detokenizeText(\n model: ModelTypeName,\n tokens: number[],\n): Promise<string> {\n const modelName =\n model === ModelType.TEXT_SMALL\n ? (process.env.ELIZAOS_CLOUD_SMALL_MODEL ??\n process.env.SMALL_MODEL ??\n \"gpt-5-nano\")\n : (process.env.ELIZAOS_CLOUD_LARGE_MODEL ??\n process.env.LARGE_MODEL ??\n \"gpt-5-mini\");\n return encodingForModel(modelName as TiktokenModel).decode(tokens);\n}\n\n/**\n * TEXT_TOKENIZER_ENCODE handler\n */\nexport async function handleTokenizerEncode(\n _runtime: IAgentRuntime,\n { prompt, modelType = ModelType.TEXT_LARGE }: TokenizeTextParams,\n): Promise<number[]> {\n return await tokenizeText(modelType ?? ModelType.TEXT_LARGE, prompt);\n}\n\n/**\n * TEXT_TOKENIZER_DECODE handler\n */\nexport async function handleTokenizerDecode(\n _runtime: IAgentRuntime,\n { tokens, modelType = ModelType.TEXT_LARGE }: DetokenizeTextParams,\n): Promise<string> {\n return await detokenizeText(modelType ?? ModelType.TEXT_LARGE, tokens);\n}\n",
18
+ "/**\n * Cloud Database Adapter\n *\n * Connects to ElizaOS Cloud's managed PostgreSQL database.\n * This adapter requests a database connection URL from the cloud service\n * and uses the standard PostgreSQL adapter from plugin-sql.\n */\n\nimport type { UUID, IDatabaseAdapter } from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport pluginSql from \"@elizaos/plugin-sql/node\";\nimport type { CloudDatabaseConfig, DatabaseProvisionResponse } from \"./types\";\n\nconst DEFAULT_CLOUD_URL = \"https://www.elizacloud.ai\";\n\n/**\n * Creates a cloud database adapter that connects to ElizaOS Cloud's managed database.\n *\n * @param config - Cloud database configuration\n * @returns Database adapter or null if cloud database is not available\n */\nexport async function createCloudDatabaseAdapter(\n config: CloudDatabaseConfig,\n): Promise<IDatabaseAdapter | null> {\n const baseUrl = config.baseUrl || DEFAULT_CLOUD_URL;\n\n logger.info(\n { src: \"plugin:elizacloud\", agentId: config.agentId },\n \"Provisioning cloud database\",\n );\n\n // Request database connection from cloud service\n const response = await provisionCloudDatabase(\n config.apiKey,\n baseUrl,\n config.agentId,\n );\n\n if (!response.success || !response.connectionUrl) {\n logger.error(\n {\n src: \"plugin:elizacloud\",\n error: response.error,\n agentId: config.agentId,\n },\n \"Failed to provision cloud database\",\n );\n return null;\n }\n\n logger.info(\n { src: \"plugin:elizacloud\", agentId: config.agentId },\n \"Cloud database provisioned successfully\",\n );\n\n const adapter = pluginSql.createDatabaseAdapter(\n { postgresUrl: response.connectionUrl },\n config.agentId as UUID,\n );\n\n logger.info(\n { src: \"plugin:elizacloud\", agentId: config.agentId },\n \"Cloud database adapter created using PostgreSQL connection\",\n );\n\n return adapter;\n}\n\n/**\n * Request a database connection from ElizaOS Cloud\n */\nasync function provisionCloudDatabase(\n apiKey: string,\n baseUrl: string,\n agentId: string,\n): Promise<DatabaseProvisionResponse> {\n try {\n const response = await fetch(`${baseUrl}/api/v1/database/provision`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${apiKey}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n agentId,\n type: \"postgresql\",\n }),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n return {\n success: false,\n error: `Cloud database provisioning failed: ${response.status} ${errorText}`,\n };\n }\n\n const data = await response.json();\n return {\n success: true,\n connectionUrl: data.connectionUrl,\n expiresAt: data.expiresAt,\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return {\n success: false,\n error: `Network error during database provisioning: ${message}`,\n };\n }\n}\n\n/**\n * Cloud Database Adapter class\n * Wraps the provisioning logic for use in plugin initialization\n */\nexport class CloudDatabaseAdapter {\n private config: CloudDatabaseConfig;\n private adapter: IDatabaseAdapter | null = null;\n\n constructor(config: CloudDatabaseConfig) {\n this.config = config;\n }\n\n async initialize(): Promise<IDatabaseAdapter | null> {\n if (this.adapter) {\n return this.adapter;\n }\n\n this.adapter = await createCloudDatabaseAdapter(this.config);\n return this.adapter;\n }\n\n getAdapter(): IDatabaseAdapter | null {\n return this.adapter;\n }\n}\n",
19
+ "/**\n * Cloud Storage Service\n *\n * Provides file storage operations via ElizaOS Cloud API.\n * Uses credit-based authenticated storage endpoints.\n *\n * Storage costs are deducted from your credit balance automatically.\n * - Upload: ~$0.01 per MB (minimum $0.001)\n * - Download: Free for your own files\n * - Delete: Free for your own files\n */\n\nimport { logger } from \"@elizaos/core\";\nimport type {\n CloudStorageConfig,\n StorageUploadResult,\n StorageListResult,\n StorageUploadOptions,\n} from \"./types\";\n\nconst DEFAULT_CLOUD_URL = \"https://www.elizacloud.ai\";\n\n// Use authenticated storage endpoint (credit-based)\nconst STORAGE_ENDPOINT = \"/api/v1/storage/files\";\n\n/**\n * Creates a cloud storage service instance\n */\nexport function createCloudStorageService(\n config: CloudStorageConfig,\n): CloudStorageService {\n return new CloudStorageService(config);\n}\n\n/**\n * Cloud Storage Service for ElizaOS Cloud\n */\nexport class CloudStorageService {\n private apiKey: string;\n private baseUrl: string;\n\n constructor(config: CloudStorageConfig) {\n this.apiKey = config.apiKey;\n this.baseUrl = config.baseUrl || DEFAULT_CLOUD_URL;\n }\n\n /**\n * Upload a file to cloud storage\n */\n async upload(\n file: Buffer | Blob | File,\n options: StorageUploadOptions = {},\n ): Promise<StorageUploadResult> {\n try {\n const formData = new FormData();\n\n // Convert Buffer to Blob if needed\n let blob: Blob;\n if (Buffer.isBuffer(file)) {\n // Cast Buffer to BlobPart-compatible type\n blob = new Blob([file as unknown as BlobPart], {\n type: options.contentType || \"application/octet-stream\",\n });\n } else {\n blob = file;\n }\n\n const filename =\n options.filename ||\n (file instanceof File ? file.name : \"file\") ||\n \"upload\";\n\n formData.append(\"file\", blob, filename);\n\n // Add metadata if provided\n if (options.metadata) {\n formData.append(\"metadata\", JSON.stringify(options.metadata));\n }\n\n const response = await fetch(`${this.baseUrl}${STORAGE_ENDPOINT}`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${this.apiKey}`,\n },\n body: formData,\n });\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({}));\n \n // Handle insufficient credits (402)\n if (response.status === 402) {\n return {\n success: false,\n error: `Insufficient credits. Required: ${errorData.required || \"unknown\"}, Available: ${errorData.available || \"unknown\"}. Top up at ${errorData.topUpUrl || \"/dashboard/billing\"}`,\n };\n }\n \n return {\n success: false,\n error: `Upload failed: ${response.status} ${errorData.error || \"Unknown error\"}`,\n };\n }\n\n const data = await response.json();\n \n logger.info(\n { src: \"plugin:elizacloud\", cost: data.cost, remaining: data.creditsRemaining },\n \"Storage upload successful\"\n );\n \n return {\n success: true,\n id: data.id,\n url: data.url,\n pathname: data.pathname,\n contentType: data.contentType,\n size: data.size,\n cost: data.cost,\n creditsRemaining: data.creditsRemaining,\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error({ src: \"plugin:elizacloud\", error }, \"Storage upload failed\");\n return {\n success: false,\n error: `Upload error: ${message}`,\n };\n }\n }\n\n /**\n * Download a file from cloud storage\n * @param id - File ID\n * @param url - Full URL of the file (required for download)\n */\n async download(id: string, url?: string): Promise<Buffer | null> {\n // If URL is provided, download directly from it\n if (url) {\n try {\n const response = await fetch(url);\n if (!response.ok) {\n logger.error(\n { src: \"plugin:elizacloud\", status: response.status, url },\n \"Storage direct download failed\",\n );\n return null;\n }\n const arrayBuffer = await response.arrayBuffer();\n return Buffer.from(arrayBuffer);\n } catch (error) {\n logger.error({ src: \"plugin:elizacloud\", error }, \"Storage direct download error\");\n return null;\n }\n }\n \n // Otherwise, try to get metadata first to get the URL\n try {\n const response = await fetch(\n `${this.baseUrl}${STORAGE_ENDPOINT}/${id}?download=true`,\n {\n headers: {\n Authorization: `Bearer ${this.apiKey}`,\n },\n redirect: \"follow\",\n }\n );\n\n if (!response.ok) {\n logger.error(\n { src: \"plugin:elizacloud\", status: response.status },\n \"Storage download failed\",\n );\n return null;\n }\n\n const arrayBuffer = await response.arrayBuffer();\n return Buffer.from(arrayBuffer);\n } catch (error) {\n logger.error({ src: \"plugin:elizacloud\", error }, \"Storage download error\");\n return null;\n }\n }\n\n /**\n * List files in cloud storage\n * Lists files owned by your organization\n */\n async list(options: {\n prefix?: string;\n limit?: number;\n cursor?: string;\n } = {}): Promise<StorageListResult> {\n try {\n const params = new URLSearchParams();\n if (options.prefix) params.set(\"prefix\", options.prefix);\n if (options.limit) params.set(\"limit\", String(options.limit));\n if (options.cursor) params.set(\"cursor\", options.cursor);\n\n const response = await fetch(\n `${this.baseUrl}${STORAGE_ENDPOINT}?${params.toString()}`,\n {\n headers: {\n Authorization: `Bearer ${this.apiKey}`,\n },\n },\n );\n\n if (!response.ok) {\n logger.error(\n { src: \"plugin:elizacloud\", status: response.status },\n \"Storage list failed\",\n );\n return { items: [], hasMore: false };\n }\n\n const data = await response.json();\n return {\n items: data.items || [],\n cursor: data.cursor,\n hasMore: data.hasMore || false,\n };\n } catch (error) {\n logger.error({ src: \"plugin:elizacloud\", error }, \"Storage list error\");\n return { items: [], hasMore: false };\n }\n }\n\n /**\n * Delete a file from cloud storage\n * @param id - File ID\n * @param url - Full URL of the file (required for deletion)\n */\n async delete(id: string, url?: string): Promise<boolean> {\n if (!url) {\n logger.error({ src: \"plugin:elizacloud\" }, \"Storage delete requires file URL\");\n return false;\n }\n \n try {\n const params = new URLSearchParams({ url });\n const response = await fetch(\n `${this.baseUrl}${STORAGE_ENDPOINT}/${id}?${params.toString()}`,\n {\n method: \"DELETE\",\n headers: {\n Authorization: `Bearer ${this.apiKey}`,\n },\n }\n );\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({}));\n logger.error(\n { src: \"plugin:elizacloud\", status: response.status, error: errorData.error },\n \"Storage delete failed\"\n );\n return false;\n }\n \n return true;\n } catch (error) {\n logger.error({ src: \"plugin:elizacloud\", error }, \"Storage delete error\");\n return false;\n }\n }\n\n /**\n * Get storage stats for your organization\n */\n async getStats(): Promise<{\n totalFiles: number;\n totalSize: number;\n totalSizeGB: number;\n pricing: {\n uploadPerMB: string;\n retrievalPerMB: string;\n minUploadFee: string;\n };\n } | null> {\n try {\n const response = await fetch(\n `${this.baseUrl}${STORAGE_ENDPOINT}?stats=true`,\n {\n headers: {\n Authorization: `Bearer ${this.apiKey}`,\n },\n },\n );\n\n if (!response.ok) {\n return null;\n }\n\n const data = await response.json();\n return {\n totalFiles: data.stats?.totalFiles || 0,\n totalSize: data.stats?.totalSize || 0,\n totalSizeGB: data.stats?.totalSizeGB || 0,\n pricing: data.pricing || {},\n };\n } catch (error) {\n logger.error({ src: \"plugin:elizacloud\", error }, \"Storage stats error\");\n return null;\n }\n }\n}\n",
20
+ "/**\n * Direct Database Adapter\n *\n * Creates a database adapter from a direct PostgreSQL connection URL.\n * This is used by the ElizaOS Cloud platform itself which already has\n * database access and doesn't need to provision via API.\n *\n * For users who want managed database provisioning, use createCloudDatabaseAdapter instead.\n */\n\nimport type { UUID, IDatabaseAdapter } from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport pluginSql from \"@elizaos/plugin-sql/node\";\n\nexport interface DirectDatabaseConfig {\n postgresUrl: string;\n}\n\n/**\n * Creates a database adapter from a direct PostgreSQL connection URL (sync version).\n * This is the primary method for cloud platform use.\n *\n * @param config - Configuration with postgresUrl\n * @param agentId - UUID of the agent\n * @returns Database adapter from plugin-sql\n */\nexport function createDatabaseAdapter(\n config: DirectDatabaseConfig,\n agentId: UUID,\n): IDatabaseAdapter {\n const adapter = pluginSql.createDatabaseAdapter(\n { postgresUrl: config.postgresUrl },\n agentId,\n );\n\n logger.info(\n { src: \"plugin:elizacloud\", agentId },\n \"Direct database adapter created\",\n );\n\n return adapter;\n}\n\n/**\n * Creates a database adapter from a direct PostgreSQL connection URL (async version).\n * Kept for backwards compatibility with existing code.\n *\n * @param config - Configuration with postgresUrl\n * @param agentId - UUID of the agent\n * @returns Database adapter from plugin-sql\n */\nexport async function createDirectDatabaseAdapter(\n config: DirectDatabaseConfig,\n agentId: UUID,\n): Promise<IDatabaseAdapter> {\n return createDatabaseAdapter(config, agentId);\n}\n",
21
+ "/**\n * ElizaOS Database Schema Re-exports\n *\n * Re-exports database schema tables from @elizaos/plugin-sql for use in cloud platform.\n * This allows cloud consumers to import schema from plugin-elizacloud without directly\n * depending on plugin-sql.\n */\n\nimport pluginSql from \"@elizaos/plugin-sql/node\";\n\n// Re-export the entire plugin for schema access\nexport { pluginSql };\n\n// Extract and re-export schema tables using correct names from plugin-sql\nexport const {\n agentTable,\n roomTable,\n participantTable,\n memoryTable,\n embeddingTable,\n entityTable,\n relationshipTable,\n componentTable,\n taskTable,\n logTable,\n cacheTable,\n worldTable,\n serverTable,\n messageTable,\n messageServerTable,\n messageServerAgentsTable,\n channelTable,\n channelParticipantsTable,\n} = pluginSql.schema;\n\n// Alias for backwards compatibility\nexport const serverAgentsTable = serverTable;\n"
16
22
  ],
17
- "mappings": "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",
18
- "debugId": "548988954854953B64756E2164756E21",
23
+ "mappings": "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",
24
+ "debugId": "1EA438C51CA2A03164756E2164756E21",
19
25
  "names": []
20
26
  }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * ElizaOS Cloud Storage Module
3
+ *
4
+ * Provides file storage capabilities via ElizaOS Cloud.
5
+ * Supports uploading, downloading, and listing files.
6
+ */
7
+ export { CloudStorageService, createCloudStorageService } from "./service";
8
+ export type { CloudStorageConfig, StorageUploadResult, StorageListResult, StorageItem, } from "./types";
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Cloud Storage Service
3
+ *
4
+ * Provides file storage operations via ElizaOS Cloud API.
5
+ * Uses credit-based authenticated storage endpoints.
6
+ *
7
+ * Storage costs are deducted from your credit balance automatically.
8
+ * - Upload: ~$0.01 per MB (minimum $0.001)
9
+ * - Download: Free for your own files
10
+ * - Delete: Free for your own files
11
+ */
12
+ import type { CloudStorageConfig, StorageUploadResult, StorageListResult, StorageUploadOptions } from "./types";
13
+ /**
14
+ * Creates a cloud storage service instance
15
+ */
16
+ export declare function createCloudStorageService(config: CloudStorageConfig): CloudStorageService;
17
+ /**
18
+ * Cloud Storage Service for ElizaOS Cloud
19
+ */
20
+ export declare class CloudStorageService {
21
+ private apiKey;
22
+ private baseUrl;
23
+ constructor(config: CloudStorageConfig);
24
+ /**
25
+ * Upload a file to cloud storage
26
+ */
27
+ upload(file: Buffer | Blob | File, options?: StorageUploadOptions): Promise<StorageUploadResult>;
28
+ /**
29
+ * Download a file from cloud storage
30
+ * @param id - File ID
31
+ * @param url - Full URL of the file (required for download)
32
+ */
33
+ download(id: string, url?: string): Promise<Buffer | null>;
34
+ /**
35
+ * List files in cloud storage
36
+ * Lists files owned by your organization
37
+ */
38
+ list(options?: {
39
+ prefix?: string;
40
+ limit?: number;
41
+ cursor?: string;
42
+ }): Promise<StorageListResult>;
43
+ /**
44
+ * Delete a file from cloud storage
45
+ * @param id - File ID
46
+ * @param url - Full URL of the file (required for deletion)
47
+ */
48
+ delete(id: string, url?: string): Promise<boolean>;
49
+ /**
50
+ * Get storage stats for your organization
51
+ */
52
+ getStats(): Promise<{
53
+ totalFiles: number;
54
+ totalSize: number;
55
+ totalSizeGB: number;
56
+ pricing: {
57
+ uploadPerMB: string;
58
+ retrievalPerMB: string;
59
+ minUploadFee: string;
60
+ };
61
+ } | null>;
62
+ }
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Cloud Storage Types
3
+ */
4
+ /** Configuration for cloud storage */
5
+ export interface CloudStorageConfig {
6
+ apiKey: string;
7
+ baseUrl: string;
8
+ }
9
+ /** Result of a storage upload */
10
+ export interface StorageUploadResult {
11
+ success: boolean;
12
+ id?: string;
13
+ url?: string;
14
+ pathname?: string;
15
+ contentType?: string;
16
+ size?: number;
17
+ /** Cost charged for this upload (e.g., "$0.01") */
18
+ cost?: string;
19
+ /** Remaining credit balance after upload (e.g., "$99.99") */
20
+ creditsRemaining?: string;
21
+ error?: string;
22
+ }
23
+ /** A stored item */
24
+ export interface StorageItem {
25
+ id: string;
26
+ url: string;
27
+ pathname: string;
28
+ contentType: string;
29
+ size: number;
30
+ /** ISO timestamp of when the file was uploaded */
31
+ uploadedAt: string;
32
+ }
33
+ /** Result of listing stored items */
34
+ export interface StorageListResult {
35
+ items: StorageItem[];
36
+ cursor?: string;
37
+ hasMore: boolean;
38
+ }
39
+ /** Upload options */
40
+ export interface StorageUploadOptions {
41
+ filename?: string;
42
+ contentType?: string;
43
+ metadata?: Record<string, string>;
44
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elizaos/plugin-elizacloud",
3
- "version": "1.5.20",
3
+ "version": "1.7.0-alpha.0",
4
4
  "type": "module",
5
5
  "main": "dist/cjs/index.node.cjs",
6
6
  "module": "dist/node/index.node.js",
@@ -49,6 +49,9 @@
49
49
  "js-tiktoken": "^1.0.21",
50
50
  "undici": "^7.16.0"
51
51
  },
52
+ "optionalDependencies": {
53
+ "@elizaos/plugin-sql": "^1.5.20"
54
+ },
52
55
  "devDependencies": {
53
56
  "@types/bun": "^1.3.0",
54
57
  "@types/node": "^24.5.2",
@@ -189,6 +192,13 @@
189
192
  "description": "Browser-only proxy endpoint base URL for ElizaOS Cloud embeddings.",
190
193
  "required": false,
191
194
  "sensitive": false
195
+ },
196
+ "ELIZAOS_CLOUD_DATABASE": {
197
+ "type": "boolean",
198
+ "description": "Enable ElizaOS Cloud managed PostgreSQL database. When true, a database is automatically provisioned.",
199
+ "required": false,
200
+ "default": false,
201
+ "sensitive": false
192
202
  }
193
203
  }
194
204
  },