@elizaos/plugin-google-genai 2.0.0-alpha.8 → 2.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +124 -0
- package/auto-enable.ts +21 -0
- package/dist/browser/index.browser.js +412 -165
- package/dist/browser/index.browser.js.map +11 -11
- package/dist/build.d.ts +3 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/build.js +117 -0
- package/dist/cjs/index.node.cjs +413 -172
- package/dist/cjs/index.node.js.map +11 -11
- package/dist/generated/specs/specs.d.ts +55 -0
- package/dist/generated/specs/specs.d.ts.map +1 -0
- package/dist/generated/specs/specs.js +34 -0
- package/dist/index.browser.d.ts +5 -0
- package/dist/index.browser.d.ts.map +1 -0
- package/dist/index.browser.js +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +252 -0
- package/dist/index.node.d.ts +5 -0
- package/dist/index.node.d.ts.map +1 -0
- package/dist/index.node.js +4 -0
- package/dist/init.d.ts +16 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +27 -0
- package/dist/models/embedding.d.ts +6 -0
- package/dist/models/embedding.d.ts.map +1 -0
- package/dist/models/embedding.js +57 -0
- package/dist/models/image.d.ts +7 -0
- package/dist/models/image.d.ts.map +1 -0
- package/dist/models/image.js +91 -0
- package/dist/models/index.d.ts +13 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +12 -0
- package/dist/models/object.d.ts +10 -0
- package/dist/models/object.d.ts.map +1 -0
- package/dist/models/object.js +84 -0
- package/dist/models/text.d.ts +51 -0
- package/dist/models/text.d.ts.map +1 -0
- package/dist/models/text.js +257 -0
- package/dist/node/index.node.d.ts +2 -0
- package/dist/node/index.node.js +412 -165
- package/dist/node/index.node.js.map +11 -11
- package/dist/types/index.d.ts +47 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +1 -0
- package/dist/utils/config.d.ts +25 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +115 -0
- package/dist/utils/events.d.ts +12 -0
- package/dist/utils/events.d.ts.map +1 -0
- package/dist/utils/events.js +14 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/tokenization.d.ts +2 -0
- package/dist/utils/tokenization.d.ts.map +1 -0
- package/dist/utils/tokenization.js +3 -0
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +8 -0
- package/package.json +32 -16
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../index.ts", "../../init.ts", "../../utils/config.ts", "../../models/embedding.ts", "../../utils/events.ts", "../../utils/tokenization.ts", "../../models/image.ts", "../../models/
|
|
3
|
+
"sources": ["../../index.ts", "../../init.ts", "../../utils/config.ts", "../../models/embedding.ts", "../../utils/events.ts", "../../utils/tokenization.ts", "../../models/image.ts", "../../models/text.ts", "../../index.node.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import type {\n GenerateTextParams,\n IAgentRuntime,\n ImageDescriptionParams,\n ObjectGenerationParams,\n Plugin,\n TestCase,\n TestSuite,\n TextEmbeddingParams,\n} from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { GoogleGenAI } from \"@google/genai\";\nimport { initializeGoogleGenAI, type PluginConfig } from \"./init\";\nimport {\n handleImageDescription,\n handleObjectLarge,\n handleObjectSmall,\n handleTextEmbedding,\n handleTextLarge,\n handleTextSmall,\n} from \"./models\";\nimport { getApiKey } from \"./utils/config\";\n\nexport type { PluginConfig } from \"./init\";\nexport * from \"./types\";\n\nconst pluginTests = [\n {\n name: \"google_genai_plugin_tests\",\n tests: [\n {\n name: \"google_test_api_key_validation\",\n fn: async (runtime: IAgentRuntime) => {\n const apiKey = getApiKey(runtime);\n if (!apiKey) {\n throw new Error(\"GOOGLE_GENERATIVE_AI_API_KEY not set\");\n }\n const genAI = new GoogleGenAI({ apiKey });\n const modelList = await genAI.models.list();\n const models = [];\n for await (const model of modelList) {\n models.push(model);\n }\n logger.log(`Available models: ${models.length}`);\n },\n },\n {\n name: \"google_test_text_embedding\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n const embedding = await runtime.useModel(ModelType.TEXT_EMBEDDING, {\n text: \"Hello, world!\",\n });\n logger.log(`Embedding dimension: ${embedding.length}`);\n if (embedding.length === 0) {\n throw new Error(\"Failed to generate embedding\");\n }\n } catch (error) {\n logger.error(\n `Error in test_text_embedding: ${error instanceof Error ? error.message : String(error)}`\n );\n throw error;\n }\n },\n },\n {\n name: \"google_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(\"Generated with TEXT_SMALL:\", text);\n } catch (error) {\n logger.error(\n `Error in test_text_small: ${error instanceof Error ? error.message : String(error)}`\n );\n throw error;\n }\n },\n },\n {\n name: \"google_test_text_large\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n const text = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt: \"Explain quantum mechanics in simple terms.\",\n });\n if (text.length === 0) {\n throw new Error(\"Failed to generate text\");\n }\n logger.log(\"Generated with TEXT_LARGE:\", `${text.substring(0, 100)}...`);\n } catch (error) {\n logger.error(\n `Error in test_text_large: ${error instanceof Error ? error.message : String(error)}`\n );\n throw error;\n }\n },\n },\n {\n name: \"google_test_image_description\",\n fn: async (runtime: IAgentRuntime) => {\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(\"Image description:\", JSON.stringify(result));\n } else {\n logger.error(`Invalid image description result format: ${JSON.stringify(result)}`);\n }\n } catch (error) {\n logger.error(\n `Error in test_image_description: ${error instanceof Error ? error.message : String(error)}`\n );\n throw error;\n }\n },\n },\n {\n name: \"google_test_object_generation\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n const schema = {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n age: { type: \"number\" },\n hobbies: { type: \"array\", items: { type: \"string\" } },\n },\n required: [\"name\", \"age\", \"hobbies\"],\n };\n\n const result = await runtime.useModel(ModelType.OBJECT_SMALL, {\n prompt: \"Generate a person profile with name, age, and hobbies.\",\n schema,\n });\n\n logger.log(\"Generated object:\", JSON.stringify(result));\n\n if (!result.name || !result.age || !result.hobbies) {\n throw new Error(\"Generated object missing required fields\");\n }\n } catch (error) {\n logger.error(\n `Error in test_object_generation: ${error instanceof Error ? error.message : String(error)}`\n );\n throw error;\n }\n },\n },\n ] as TestCase[],\n },\n] as TestSuite[];\n\ntype ProcessEnvLike = Record<string, string | undefined>;\n\nfunction getProcessEnv(): ProcessEnvLike {\n if (typeof process === \"undefined\") {\n return {};\n }\n return process.env as ProcessEnvLike;\n}\n\nconst env = getProcessEnv();\n\nexport const googleGenAIPlugin: Plugin = {\n name: \"google-genai\",\n description: \"Google Generative AI plugin for Gemini models\",\n\n config: {\n GOOGLE_GENERATIVE_AI_API_KEY: env.GOOGLE_GENERATIVE_AI_API_KEY ?? null,\n GOOGLE_SMALL_MODEL: env.GOOGLE_SMALL_MODEL ?? null,\n GOOGLE_LARGE_MODEL: env.GOOGLE_LARGE_MODEL ?? null,\n GOOGLE_IMAGE_MODEL: env.GOOGLE_IMAGE_MODEL ?? null,\n GOOGLE_EMBEDDING_MODEL: env.GOOGLE_EMBEDDING_MODEL ?? null,\n SMALL_MODEL: env.SMALL_MODEL ?? null,\n LARGE_MODEL: env.LARGE_MODEL ?? null,\n IMAGE_MODEL: env.IMAGE_MODEL ?? null,\n },\n\n async init(config, runtime) {\n initializeGoogleGenAI(config as PluginConfig, runtime);\n },\n\n models: {\n [ModelType.TEXT_SMALL]: async (\n runtime: IAgentRuntime,\n params: GenerateTextParams\n ): Promise<string> => {\n return handleTextSmall(runtime, params);\n },\n\n [ModelType.TEXT_LARGE]: async (\n runtime: IAgentRuntime,\n params: GenerateTextParams\n ): Promise<string> => {\n return handleTextLarge(runtime, params);\n },\n\n [ModelType.TEXT_EMBEDDING]: async (\n runtime: IAgentRuntime,\n params: TextEmbeddingParams | string | null\n ): Promise<number[]> => {\n return handleTextEmbedding(runtime, params);\n },\n\n [ModelType.IMAGE_DESCRIPTION]: async (\n runtime: IAgentRuntime,\n params: ImageDescriptionParams | string\n ): Promise<{ title: string; description: string }> => {\n return handleImageDescription(runtime, params);\n },\n\n [ModelType.OBJECT_SMALL]: async (\n runtime: IAgentRuntime,\n params: ObjectGenerationParams\n ): Promise<Record<string, string | number | boolean | null>> => {\n return handleObjectSmall(runtime, params);\n },\n\n [ModelType.OBJECT_LARGE]: async (\n runtime: IAgentRuntime,\n params: ObjectGenerationParams\n ): Promise<Record<string, string | number | boolean | null>> => {\n return handleObjectLarge(runtime, params);\n },\n },\n\n tests: pluginTests,\n};\n\nexport default googleGenAIPlugin;\n",
|
|
6
|
-
"import { type IAgentRuntime, logger } from \"@elizaos/core\";\nimport { GoogleGenAI } from \"@google/genai\";\nimport { getApiKey } from \"./utils/config\";\n\nexport interface PluginConfig {\n readonly GOOGLE_GENERATIVE_AI_API_KEY?: string;\n readonly GOOGLE_SMALL_MODEL?: string;\n readonly GOOGLE_LARGE_MODEL?: string;\n readonly GOOGLE_IMAGE_MODEL?: string;\n readonly GOOGLE_EMBEDDING_MODEL?: string;\n readonly SMALL_MODEL?: string;\n readonly LARGE_MODEL?: string;\n readonly IMAGE_MODEL?: string;\n}\n\nexport function initializeGoogleGenAI(_config: PluginConfig
|
|
7
|
-
"import type { IAgentRuntime } from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport { GoogleGenAI, HarmBlockThreshold, HarmCategory } from \"@google/genai\";\n\nfunction getEnvValue(key: string): string | undefined {\n // In browsers, `process` is not defined. `typeof process` is safe.\n if (typeof process === \"undefined\") {\n return undefined;\n }\n const value = process.env[key];\n return value === undefined ? undefined : String(value);\n}\n\nexport function getSetting(\n runtime: IAgentRuntime,\n key: string,\n defaultValue?: string
|
|
8
|
-
"import type { IAgentRuntime, TextEmbeddingParams } from \"@elizaos/core\";\nimport { logger
|
|
9
|
-
"import type { IAgentRuntime, ModelTypeName } from \"@elizaos/core\";\
|
|
5
|
+
"import type {\n GenerateTextParams,\n IAgentRuntime,\n ImageDescriptionParams,\n Plugin,\n TestCase,\n TestSuite,\n TextEmbeddingParams,\n} from \"@elizaos/core\";\nimport * as ElizaCore from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { GoogleGenAI } from \"@google/genai\";\nimport { initializeGoogleGenAI, type PluginConfig } from \"./init\";\nimport {\n handleActionPlanner,\n handleImageDescription,\n handleResponseHandler,\n handleTextEmbedding,\n handleTextLarge,\n handleTextMedium,\n handleTextMega,\n handleTextNano,\n handleTextSmall,\n} from \"./models\";\nimport { getApiKey } from \"./utils/config\";\n\nexport type { PluginConfig } from \"./init\";\nexport * from \"./types\";\n\nconst CORE_MODEL_TYPES =\n (ElizaCore as { ModelType?: Record<string, string> }).ModelType ?? {};\nconst TEXT_NANO_MODEL_TYPE = (CORE_MODEL_TYPES.TEXT_NANO ??\n \"TEXT_NANO\") as string;\nconst TEXT_MEDIUM_MODEL_TYPE = (CORE_MODEL_TYPES.TEXT_MEDIUM ??\n \"TEXT_MEDIUM\") as string;\nconst TEXT_SMALL_MODEL_TYPE = (CORE_MODEL_TYPES.TEXT_SMALL ??\n \"TEXT_SMALL\") as string;\nconst TEXT_LARGE_MODEL_TYPE = (CORE_MODEL_TYPES.TEXT_LARGE ??\n \"TEXT_LARGE\") as string;\nconst TEXT_EMBEDDING_MODEL_TYPE = (CORE_MODEL_TYPES.TEXT_EMBEDDING ??\n \"TEXT_EMBEDDING\") as string;\nconst IMAGE_DESCRIPTION_MODEL_TYPE = (CORE_MODEL_TYPES.IMAGE_DESCRIPTION ??\n \"IMAGE_DESCRIPTION\") as string;\nconst TEXT_MEGA_MODEL_TYPE = (CORE_MODEL_TYPES.TEXT_MEGA ??\n \"TEXT_MEGA\") as string;\nconst RESPONSE_HANDLER_MODEL_TYPE = (CORE_MODEL_TYPES.RESPONSE_HANDLER ??\n \"RESPONSE_HANDLER\") as string;\nconst ACTION_PLANNER_MODEL_TYPE = (CORE_MODEL_TYPES.ACTION_PLANNER ??\n \"ACTION_PLANNER\") as string;\n\nconst pluginTests = [\n {\n name: \"google_genai_plugin_tests\",\n tests: [\n {\n name: \"google_test_api_key_validation\",\n fn: async (runtime: IAgentRuntime) => {\n const apiKey = getApiKey(runtime);\n if (!apiKey) {\n throw new Error(\"GOOGLE_GENERATIVE_AI_API_KEY not set\");\n }\n const genAI = new GoogleGenAI({ apiKey });\n const modelList = await genAI.models.list();\n const models = [];\n for await (const model of modelList) {\n models.push(model);\n }\n logger.log(`Available models: ${models.length}`);\n },\n },\n {\n name: \"google_test_text_embedding\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n const embedding = await runtime.useModel(ModelType.TEXT_EMBEDDING, {\n text: \"Hello, world!\",\n });\n logger.log(`Embedding dimension: ${embedding.length}`);\n if (embedding.length === 0) {\n throw new Error(\"Failed to generate embedding\");\n }\n } catch (error) {\n logger.error(\n `Error in test_text_embedding: ${error instanceof Error ? error.message : String(error)}`,\n );\n throw error;\n }\n },\n },\n {\n name: \"google_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(\"Generated with TEXT_SMALL:\", text);\n } catch (error) {\n logger.error(\n `Error in test_text_small: ${error instanceof Error ? error.message : String(error)}`,\n );\n throw error;\n }\n },\n },\n {\n name: \"google_test_text_large\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n const text = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt: \"Explain quantum mechanics in simple terms.\",\n });\n if (text.length === 0) {\n throw new Error(\"Failed to generate text\");\n }\n logger.log(\n \"Generated with TEXT_LARGE:\",\n `${text.substring(0, 100)}...`,\n );\n } catch (error) {\n logger.error(\n `Error in test_text_large: ${error instanceof Error ? error.message : String(error)}`,\n );\n throw error;\n }\n },\n },\n {\n name: \"google_test_image_description\",\n fn: async (runtime: IAgentRuntime) => {\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 != null &&\n typeof result === \"object\" &&\n \"title\" in result &&\n \"description\" in result\n ) {\n logger.log(\"Image description:\", JSON.stringify(result));\n } else {\n logger.error(\n `Invalid image description result format: ${JSON.stringify(result)}`,\n );\n }\n } catch (error) {\n logger.error(\n `Error in test_image_description: ${error instanceof Error ? error.message : String(error)}`,\n );\n throw error;\n }\n },\n },\n {\n name: \"google_test_structured_output_via_text_large\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n const schema = {\n type: \"object\",\n properties: {\n name: { type: \"string\" },\n age: { type: \"number\" },\n hobbies: { type: \"array\", items: { type: \"string\" } },\n },\n required: [\"name\", \"age\", \"hobbies\"],\n };\n\n const result = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt: \"Generate a person profile with name, age, and hobbies.\",\n responseSchema: schema,\n } as GenerateTextParams);\n\n logger.log(\"Generated structured output:\", JSON.stringify(result));\n\n if (!result) {\n throw new Error(\"Generated structured output is empty\");\n }\n } catch (error) {\n logger.error(\n `Error in test_structured_output_via_text_large: ${error instanceof Error ? error.message : String(error)}`,\n );\n throw error;\n }\n },\n },\n ] as TestCase[],\n },\n] as TestSuite[];\n\ntype ProcessEnvLike = Record<string, string | undefined>;\n\nfunction getProcessEnv(): ProcessEnvLike {\n if (typeof process === \"undefined\") {\n return {};\n }\n return process.env as ProcessEnvLike;\n}\n\nconst env = getProcessEnv();\n\nexport const googleGenAIPlugin: Plugin = {\n name: \"google-genai\",\n description: \"Google Generative AI plugin for Gemini models\",\n autoEnable: {\n envKeys: [\"GOOGLE_API_KEY\", \"GOOGLE_GENERATIVE_AI_API_KEY\"],\n },\n\n config: {\n GOOGLE_GENERATIVE_AI_API_KEY: env.GOOGLE_GENERATIVE_AI_API_KEY ?? null,\n GOOGLE_NANO_MODEL: env.GOOGLE_NANO_MODEL ?? null,\n GOOGLE_MEDIUM_MODEL: env.GOOGLE_MEDIUM_MODEL ?? null,\n GOOGLE_SMALL_MODEL: env.GOOGLE_SMALL_MODEL ?? null,\n GOOGLE_LARGE_MODEL: env.GOOGLE_LARGE_MODEL ?? null,\n GOOGLE_MEGA_MODEL: env.GOOGLE_MEGA_MODEL ?? null,\n GOOGLE_RESPONSE_HANDLER_MODEL: env.GOOGLE_RESPONSE_HANDLER_MODEL ?? null,\n GOOGLE_SHOULD_RESPOND_MODEL: env.GOOGLE_SHOULD_RESPOND_MODEL ?? null,\n GOOGLE_ACTION_PLANNER_MODEL: env.GOOGLE_ACTION_PLANNER_MODEL ?? null,\n GOOGLE_PLANNER_MODEL: env.GOOGLE_PLANNER_MODEL ?? null,\n GOOGLE_IMAGE_MODEL: env.GOOGLE_IMAGE_MODEL ?? null,\n GOOGLE_EMBEDDING_MODEL: env.GOOGLE_EMBEDDING_MODEL ?? null,\n NANO_MODEL: env.NANO_MODEL ?? null,\n MEDIUM_MODEL: env.MEDIUM_MODEL ?? null,\n SMALL_MODEL: env.SMALL_MODEL ?? null,\n LARGE_MODEL: env.LARGE_MODEL ?? null,\n MEGA_MODEL: env.MEGA_MODEL ?? null,\n RESPONSE_HANDLER_MODEL: env.RESPONSE_HANDLER_MODEL ?? null,\n SHOULD_RESPOND_MODEL: env.SHOULD_RESPOND_MODEL ?? null,\n ACTION_PLANNER_MODEL: env.ACTION_PLANNER_MODEL ?? null,\n PLANNER_MODEL: env.PLANNER_MODEL ?? null,\n IMAGE_MODEL: env.IMAGE_MODEL ?? null,\n },\n\n async init(config, runtime) {\n initializeGoogleGenAI(config as PluginConfig, runtime);\n },\n\n models: {\n [TEXT_NANO_MODEL_TYPE]: async (\n runtime: IAgentRuntime,\n params: GenerateTextParams,\n ): Promise<string> => {\n return handleTextNano(runtime, params);\n },\n\n [TEXT_MEDIUM_MODEL_TYPE]: async (\n runtime: IAgentRuntime,\n params: GenerateTextParams,\n ): Promise<string> => {\n return handleTextMedium(runtime, params);\n },\n\n [TEXT_SMALL_MODEL_TYPE]: async (\n runtime: IAgentRuntime,\n params: GenerateTextParams,\n ): Promise<string> => {\n return handleTextSmall(runtime, params);\n },\n\n [TEXT_LARGE_MODEL_TYPE]: async (\n runtime: IAgentRuntime,\n params: GenerateTextParams,\n ): Promise<string> => {\n return handleTextLarge(runtime, params);\n },\n\n [TEXT_MEGA_MODEL_TYPE]: async (\n runtime: IAgentRuntime,\n params: GenerateTextParams,\n ): Promise<string> => {\n return handleTextMega(runtime, params);\n },\n\n [RESPONSE_HANDLER_MODEL_TYPE]: async (\n runtime: IAgentRuntime,\n params: GenerateTextParams,\n ): Promise<string> => {\n return handleResponseHandler(runtime, params);\n },\n\n [ACTION_PLANNER_MODEL_TYPE]: async (\n runtime: IAgentRuntime,\n params: GenerateTextParams,\n ): Promise<string> => {\n return handleActionPlanner(runtime, params);\n },\n\n [TEXT_EMBEDDING_MODEL_TYPE]: async (\n runtime: IAgentRuntime,\n params: TextEmbeddingParams | string | null,\n ): Promise<number[]> => {\n return handleTextEmbedding(runtime, params);\n },\n\n [IMAGE_DESCRIPTION_MODEL_TYPE]: async (\n runtime: IAgentRuntime,\n params: ImageDescriptionParams | string,\n ): Promise<{ title: string; description: string }> => {\n return handleImageDescription(runtime, params);\n },\n },\n\n tests: pluginTests,\n};\n\nexport default googleGenAIPlugin;\n",
|
|
6
|
+
"import { type IAgentRuntime, logger } from \"@elizaos/core\";\nimport { GoogleGenAI } from \"@google/genai\";\nimport { getApiKey } from \"./utils/config\";\n\nexport interface PluginConfig {\n readonly GOOGLE_GENERATIVE_AI_API_KEY?: string;\n readonly GOOGLE_SMALL_MODEL?: string;\n readonly GOOGLE_LARGE_MODEL?: string;\n readonly GOOGLE_IMAGE_MODEL?: string;\n readonly GOOGLE_EMBEDDING_MODEL?: string;\n readonly SMALL_MODEL?: string;\n readonly LARGE_MODEL?: string;\n readonly IMAGE_MODEL?: string;\n}\n\nexport function initializeGoogleGenAI(\n _config: PluginConfig,\n runtime: IAgentRuntime,\n): void {\n (async () => {\n try {\n const apiKey = getApiKey(runtime);\n if (!apiKey) {\n logger.warn(\"GOOGLE_GENERATIVE_AI_API_KEY is not set\");\n return;\n }\n\n const genAI = new GoogleGenAI({ apiKey });\n const modelList = await genAI.models.list();\n const models = [];\n for await (const model of modelList) {\n models.push(model);\n }\n logger.log(\n `Google AI API key validated. Available models: ${models.length}`,\n );\n } catch (error) {\n logger.warn(\n `Google AI configuration error: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n })();\n}\n",
|
|
7
|
+
"import type { IAgentRuntime } from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport { GoogleGenAI, HarmBlockThreshold, HarmCategory } from \"@google/genai\";\n\nfunction getEnvValue(key: string): string | undefined {\n // In browsers, `process` is not defined. `typeof process` is safe.\n if (typeof process === \"undefined\") {\n return undefined;\n }\n const value = process.env[key];\n return value === undefined ? undefined : String(value);\n}\n\nexport function getSetting(\n runtime: IAgentRuntime,\n key: string,\n defaultValue?: string,\n): string | undefined {\n const runtimeValue = runtime.getSetting(key);\n if (runtimeValue !== undefined) {\n return String(runtimeValue);\n }\n return getEnvValue(key) ?? defaultValue;\n}\n\nexport function getApiKey(runtime: IAgentRuntime): string | undefined {\n return getSetting(runtime, \"GOOGLE_GENERATIVE_AI_API_KEY\");\n}\n\nexport function getSmallModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"GOOGLE_SMALL_MODEL\") ??\n getSetting(runtime, \"SMALL_MODEL\", \"gemini-2.0-flash-001\") ??\n \"gemini-2.0-flash-001\"\n );\n}\n\nexport function getNanoModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"GOOGLE_NANO_MODEL\") ??\n getSetting(runtime, \"NANO_MODEL\") ??\n getSmallModel(runtime)\n );\n}\n\nexport function getMediumModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"GOOGLE_MEDIUM_MODEL\") ??\n getSetting(runtime, \"MEDIUM_MODEL\") ??\n getSmallModel(runtime)\n );\n}\n\nexport function getLargeModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"GOOGLE_LARGE_MODEL\") ??\n getSetting(runtime, \"LARGE_MODEL\", \"gemini-2.5-pro-preview-03-25\") ??\n \"gemini-2.5-pro-preview-03-25\"\n );\n}\n\nexport function getMegaModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"GOOGLE_MEGA_MODEL\") ??\n getSetting(runtime, \"MEGA_MODEL\") ??\n getLargeModel(runtime)\n );\n}\n\nexport function getResponseHandlerModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"GOOGLE_RESPONSE_HANDLER_MODEL\") ??\n getSetting(runtime, \"GOOGLE_SHOULD_RESPOND_MODEL\") ??\n getSetting(runtime, \"RESPONSE_HANDLER_MODEL\") ??\n getSetting(runtime, \"SHOULD_RESPOND_MODEL\") ??\n getNanoModel(runtime)\n );\n}\n\nexport function getActionPlannerModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"GOOGLE_ACTION_PLANNER_MODEL\") ??\n getSetting(runtime, \"GOOGLE_PLANNER_MODEL\") ??\n getSetting(runtime, \"ACTION_PLANNER_MODEL\") ??\n getSetting(runtime, \"PLANNER_MODEL\") ??\n getMediumModel(runtime)\n );\n}\n\nexport function getImageModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"GOOGLE_IMAGE_MODEL\") ??\n getSetting(runtime, \"IMAGE_MODEL\", \"gemini-2.5-pro-preview-03-25\") ??\n \"gemini-2.5-pro-preview-03-25\"\n );\n}\n\nexport function getEmbeddingModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"GOOGLE_EMBEDDING_MODEL\", \"text-embedding-004\") ??\n \"text-embedding-004\"\n );\n}\n\nexport function createGoogleGenAI(runtime: IAgentRuntime): GoogleGenAI | null {\n const apiKey = getApiKey(runtime);\n if (!apiKey) {\n logger.error(\"Google Generative AI API Key is missing\");\n return null;\n }\n\n return new GoogleGenAI({ apiKey });\n}\n\nexport function getSafetySettings() {\n return [\n {\n category: HarmCategory.HARM_CATEGORY_HARASSMENT,\n threshold: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE,\n },\n {\n category: HarmCategory.HARM_CATEGORY_HATE_SPEECH,\n threshold: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE,\n },\n {\n category: HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,\n threshold: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE,\n },\n {\n category: HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,\n threshold: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE,\n },\n ];\n}\n",
|
|
8
|
+
"import type { IAgentRuntime, TextEmbeddingParams } from \"@elizaos/core\";\nimport * as ElizaCore from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport { createGoogleGenAI, getEmbeddingModel } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\nimport { countTokens } from \"../utils/tokenization\";\n\nconst TEXT_EMBEDDING_MODEL_TYPE = ((\n ElizaCore as { ModelType?: Record<string, string> }\n).ModelType?.TEXT_EMBEDDING ?? \"TEXT_EMBEDDING\") as string;\n\nexport async function handleTextEmbedding(\n runtime: IAgentRuntime,\n params: TextEmbeddingParams | string | null,\n): Promise<number[]> {\n const genAI = createGoogleGenAI(runtime);\n if (!genAI) {\n throw new Error(\"Google Generative AI client not initialized\");\n }\n\n const embeddingModelName = getEmbeddingModel(runtime);\n logger.debug(`[TEXT_EMBEDDING] Using model: ${embeddingModelName}`);\n\n if (params === null) {\n return Array(768).fill(0) as number[];\n }\n\n let text =\n typeof params === \"string\"\n ? params\n : typeof params === \"object\" && params.text\n ? params.text\n : \"\";\n\n if (!text.trim()) {\n logger.warn(\"Empty text for embedding\");\n return Array(768).fill(0) as number[];\n }\n\n // Truncate to stay within embedding model token limits (~4 chars per token)\n const maxChars = 8_192 * 4;\n if (text.length > maxChars) {\n logger.warn(\n `[Google GenAI] Embedding input too long (~${Math.ceil(text.length / 4)} tokens), truncating to ~8192 tokens`,\n );\n text = text.slice(0, maxChars);\n }\n\n try {\n const response = await genAI.models.embedContent({\n model: embeddingModelName,\n contents: text,\n });\n\n const embedding = response.embeddings?.[0]?.values || [];\n\n const promptTokens = await countTokens(text);\n\n emitModelUsageEvent(runtime, TEXT_EMBEDDING_MODEL_TYPE, text, {\n promptTokens,\n completionTokens: 0,\n totalTokens: promptTokens,\n });\n\n logger.log(`Got embedding with length ${embedding.length}`);\n return embedding;\n } catch (error) {\n logger.error(\n `Error generating embedding: ${error instanceof Error ? error.message : String(error)}`,\n );\n return Array(768).fill(0) as number[];\n }\n}\n",
|
|
9
|
+
"import type { EventPayload, IAgentRuntime, ModelTypeName } from \"@elizaos/core\";\n\nconst MODEL_USED_EVENT = \"MODEL_USED\";\n\nexport function emitModelUsageEvent(\n runtime: IAgentRuntime,\n type: ModelTypeName,\n _prompt: string,\n usage: {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n },\n): void {\n void _prompt; // Not included in ModelEventPayload\n runtime.emitEvent(MODEL_USED_EVENT, {\n runtime,\n source: \"plugin-google-genai\",\n type,\n tokens: {\n prompt: usage.promptTokens,\n completion: usage.completionTokens,\n total: usage.totalTokens,\n },\n } as EventPayload);\n}\n",
|
|
10
10
|
"export async function countTokens(text: string): Promise<number> {\n return Math.ceil(text.length / 4);\n}\n",
|
|
11
|
-
"import type {
|
|
12
|
-
"import type { IAgentRuntime, ModelTypeName, ObjectGenerationParams } from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\nimport {\n createGoogleGenAI,\n getLargeModel,\n getSafetySettings,\n getSmallModel,\n} from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\nimport { countTokens } from \"../utils/tokenization\";\n\nasync function generateObjectByModelType(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams,\n modelType: string,\n getModelFn: (runtime: IAgentRuntime) => string\n): Promise<Record<string, string | number | boolean | null>> {\n const genAI = createGoogleGenAI(runtime);\n if (!genAI) {\n throw new Error(\"Google Generative AI client not initialized\");\n }\n\n const modelName = getModelFn(runtime);\n const temperature = params.temperature ?? 0.1;\n\n logger.info(`Using ${modelType} model: ${modelName}`);\n\n try {\n let enhancedPrompt = params.prompt;\n if (params.schema) {\n enhancedPrompt += `\\n\\nPlease respond with a JSON object that follows this schema:\\n${JSON.stringify(params.schema, null, 2)}`;\n }\n\n const response = await genAI.models.generateContent({\n model: modelName,\n contents: enhancedPrompt,\n config: {\n temperature,\n topK: 40,\n topP: 0.95,\n maxOutputTokens: 8192,\n responseMimeType: \"application/json\",\n safetySettings: getSafetySettings(),\n },\n });\n\n const text = response.text || \"\";\n\n const promptTokens = await countTokens(enhancedPrompt);\n const completionTokens = await countTokens(text);\n\n emitModelUsageEvent(runtime, modelType as ModelTypeName, params.prompt, {\n promptTokens,\n completionTokens,\n totalTokens: promptTokens + completionTokens,\n });\n\n try {\n return JSON.parse(text) as Record<string, string | number | boolean | null>;\n } catch {\n const jsonMatch = text.match(/\\{[\\s\\S]*\\}/);\n if (jsonMatch) {\n try {\n return JSON.parse(jsonMatch[0]) as Record<string, string | number | boolean | null>;\n } catch {\n throw new Error(\"Failed to parse JSON from response\");\n }\n }\n throw new Error(\"Failed to parse JSON from response\");\n }\n } catch (error) {\n logger.error(\n `[generateObject] Error: ${error instanceof Error ? error.message : String(error)}`\n );\n throw error;\n }\n}\n\nexport async function handleObjectSmall(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams\n): Promise<Record<string, string | number | boolean | null>> {\n return generateObjectByModelType(runtime, params, \"OBJECT_SMALL\", getSmallModel);\n}\n\nexport async function handleObjectLarge(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams\n): Promise<Record<string, string | number | boolean | null>> {\n return generateObjectByModelType(runtime, params, \"OBJECT_LARGE\", getLargeModel);\n}\n",
|
|
13
|
-
"import
|
|
11
|
+
"import type {\n IAgentRuntime,\n ImageDescriptionParams,\n RecordLlmCallDetails,\n} from \"@elizaos/core\";\nimport { logger, recordLlmCall } from \"@elizaos/core\";\nimport type { ImageDescriptionResponse } from \"../types\";\nimport {\n createGoogleGenAI,\n getImageModel,\n getSafetySettings,\n} from \"../utils/config\";\nimport { countTokens } from \"../utils/tokenization\";\n\nexport async function handleImageDescription(\n runtime: IAgentRuntime,\n params: ImageDescriptionParams | string,\n): Promise<ImageDescriptionResponse> {\n const genAI = createGoogleGenAI(runtime);\n if (!genAI) {\n throw new Error(\"Google Generative AI client not initialized\");\n }\n\n let imageUrl: string;\n let promptText: string;\n const modelName = getImageModel(runtime);\n logger.log(`[IMAGE_DESCRIPTION] Using model: ${modelName}`);\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 try {\n const imageResponse = await fetch(imageUrl);\n if (!imageResponse.ok) {\n throw new Error(`Failed to fetch image: ${imageResponse.statusText}`);\n }\n\n const imageData = await imageResponse.arrayBuffer();\n const base64Image = Buffer.from(imageData).toString(\"base64\");\n const contentType =\n imageResponse.headers.get(\"content-type\") || \"image/jpeg\";\n\n const details: RecordLlmCallDetails = {\n model: modelName,\n systemPrompt: \"\",\n userPrompt: promptText,\n temperature: 0.7,\n maxTokens: 8192,\n purpose: \"external_llm\",\n actionType: \"google-genai.IMAGE_DESCRIPTION.generateContent\",\n };\n const response = await recordLlmCall(runtime, details, async () => {\n const result = await genAI.models.generateContent({\n model: modelName,\n contents: [\n {\n role: \"user\",\n parts: [\n { text: promptText },\n {\n inlineData: {\n mimeType: contentType,\n data: base64Image,\n },\n },\n ],\n },\n ],\n config: {\n temperature: 0.7,\n topK: 40,\n topP: 0.95,\n maxOutputTokens: 8192,\n safetySettings: getSafetySettings(),\n },\n });\n const responseText = result.text || \"\";\n details.response = responseText;\n details.promptTokens = await countTokens(promptText);\n details.completionTokens = await countTokens(responseText);\n return result;\n });\n\n const responseText = response.text || \"\";\n\n try {\n const jsonResponse = JSON.parse(responseText) as {\n title?: string;\n description?: string;\n };\n if (\n typeof jsonResponse.title === \"string\" &&\n typeof jsonResponse.description === \"string\"\n ) {\n return {\n title: jsonResponse.title,\n description: jsonResponse.description,\n };\n }\n } catch {\n // Fall through to text parsing\n }\n\n const titleMatch = responseText.match(/title[:\\s]+(.+?)(?:\\n|$)/i);\n const title = titleMatch?.[1]?.trim() || \"Image Analysis\";\n const description = titleMatch\n ? responseText.replace(/title[:\\s]+(.+?)(?:\\n|$)/i, \"\").trim()\n : responseText.trim();\n\n return { title, description };\n } catch (error) {\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",
|
|
12
|
+
"import type {\n GenerateTextParams,\n IAgentRuntime,\n RecordLlmCallDetails,\n} from \"@elizaos/core\";\nimport * as ElizaCore from \"@elizaos/core\";\nimport {\n buildCanonicalSystemPrompt,\n logger,\n recordLlmCall,\n renderChatMessagesForPrompt,\n resolveEffectiveSystemPrompt,\n} from \"@elizaos/core\";\nimport {\n createGoogleGenAI,\n getActionPlannerModel,\n getLargeModel,\n getMediumModel,\n getMegaModel,\n getNanoModel,\n getResponseHandlerModel,\n getSafetySettings,\n getSmallModel,\n} from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\nimport { countTokens } from \"../utils/tokenization\";\n\nconst CORE_MODEL_TYPES =\n (ElizaCore as { ModelType?: Record<string, string> }).ModelType ?? {};\nconst TEXT_NANO_MODEL_TYPE = (CORE_MODEL_TYPES.TEXT_NANO ??\n \"TEXT_NANO\") as string;\nconst TEXT_MEDIUM_MODEL_TYPE = (CORE_MODEL_TYPES.TEXT_MEDIUM ??\n \"TEXT_MEDIUM\") as string;\nconst TEXT_SMALL_MODEL_TYPE = (CORE_MODEL_TYPES.TEXT_SMALL ??\n \"TEXT_SMALL\") as string;\nconst TEXT_LARGE_MODEL_TYPE = (CORE_MODEL_TYPES.TEXT_LARGE ??\n \"TEXT_LARGE\") as string;\nconst TEXT_MEGA_MODEL_TYPE = (CORE_MODEL_TYPES.TEXT_MEGA ??\n \"TEXT_MEGA\") as string;\nconst RESPONSE_HANDLER_MODEL_TYPE = (CORE_MODEL_TYPES.RESPONSE_HANDLER ??\n \"RESPONSE_HANDLER\") as string;\nconst ACTION_PLANNER_MODEL_TYPE = (CORE_MODEL_TYPES.ACTION_PLANNER ??\n \"ACTION_PLANNER\") as string;\n\ntype ChatAttachment = {\n data: string | Uint8Array | URL;\n mediaType: string;\n filename?: string;\n};\n\n/**\n * Native Google GenAI tool input. Each function declaration carries a name,\n * description, and JSON Schema parameters object that the model can choose to\n * invoke.\n */\ntype GoogleFunctionDeclaration = {\n name: string;\n description?: string;\n parameters?: Record<string, unknown>;\n};\n\ntype GoogleToolDeclaration = {\n functionDeclarations?: GoogleFunctionDeclaration[];\n};\n\ntype GenericToolDescriptor = {\n name?: string;\n description?: string;\n parameters?: unknown;\n inputSchema?: unknown;\n function?: { name?: string; description?: string; parameters?: unknown };\n};\n\ntype LocalToolChoice =\n | \"auto\"\n | \"required\"\n | \"none\"\n | { type: \"tool\"; toolName?: string; name?: string }\n | { type: \"function\"; function: { name: string } }\n | { name: string };\n\ntype GenerateTextParamsWithAttachments = Omit<\n GenerateTextParams,\n \"tools\" | \"toolChoice\" | \"responseSchema\"\n> & {\n attachments?: ChatAttachment[];\n /** Native or generic tool definitions; converted to Google functionDeclarations. */\n tools?:\n | GenericToolDescriptor[]\n | GoogleToolDeclaration[]\n | Record<string, GenericToolDescriptor>;\n /** Tool selection hint: \"auto\" | \"required\" | \"none\" | { type: \"tool\"; toolName } | { type: \"function\"; function }. */\n toolChoice?: LocalToolChoice;\n /** JSON Schema for structured output; routes through responseJsonSchema. */\n responseSchema?:\n | Record<string, unknown>\n | { schema: Record<string, unknown> };\n};\ntype GoogleGenAIClient = NonNullable<ReturnType<typeof createGoogleGenAI>>;\ntype GenerateContentParams = Parameters<\n GoogleGenAIClient[\"models\"][\"generateContent\"]\n>[0];\n\nfunction normalizeToolsForGoogle(\n tools: GenerateTextParamsWithAttachments[\"tools\"],\n): GoogleToolDeclaration[] | undefined {\n if (!tools) return undefined;\n\n // Already-shaped Google tools: array of { functionDeclarations: [...] }.\n if (\n Array.isArray(tools) &&\n tools.length > 0 &&\n typeof tools[0] === \"object\" &&\n tools[0] !== null &&\n \"functionDeclarations\" in (tools[0] as object)\n ) {\n return tools as GoogleToolDeclaration[];\n }\n\n const flat: GenericToolDescriptor[] = Array.isArray(tools)\n ? (tools as GenericToolDescriptor[])\n : Object.entries(tools).map(([name, value]) => ({ name, ...value }));\n\n const declarations: GoogleFunctionDeclaration[] = [];\n for (const tool of flat) {\n const name = tool.name ?? tool.function?.name;\n if (!name) {\n throw new Error(\"[GoogleGenAI] Tool definition is missing a name.\");\n }\n const description = tool.description ?? tool.function?.description;\n const parameters = (tool.parameters ??\n tool.inputSchema ??\n tool.function?.parameters ?? {\n type: \"object\",\n properties: {},\n }) as Record<string, unknown>;\n declarations.push({\n name,\n ...(description ? { description } : {}),\n parameters,\n });\n }\n\n return declarations.length > 0\n ? [{ functionDeclarations: declarations }]\n : undefined;\n}\n\nfunction normalizeToolConfigForGoogle(\n toolChoice: GenerateTextParamsWithAttachments[\"toolChoice\"],\n):\n | {\n functionCallingConfig: {\n mode: \"AUTO\" | \"ANY\" | \"NONE\";\n allowedFunctionNames?: string[];\n };\n }\n | undefined {\n if (!toolChoice) return undefined;\n if (toolChoice === \"auto\") {\n return { functionCallingConfig: { mode: \"AUTO\" } };\n }\n if (toolChoice === \"required\") {\n return { functionCallingConfig: { mode: \"ANY\" } };\n }\n if (toolChoice === \"none\") {\n return { functionCallingConfig: { mode: \"NONE\" } };\n }\n let toolName: string | undefined;\n if (\"type\" in toolChoice) {\n toolName =\n toolChoice.type === \"function\"\n ? toolChoice.function.name\n : (toolChoice.toolName ?? toolChoice.name);\n } else {\n toolName = toolChoice.name;\n }\n if (toolName) {\n return {\n functionCallingConfig: {\n mode: \"ANY\",\n allowedFunctionNames: [toolName],\n },\n };\n }\n return undefined;\n}\n\nfunction resolveResponseJsonSchema(\n responseSchema: GenerateTextParamsWithAttachments[\"responseSchema\"],\n): Record<string, unknown> | undefined {\n if (!responseSchema) return undefined;\n if (\"schema\" in responseSchema && responseSchema.schema) {\n return responseSchema.schema as Record<string, unknown>;\n }\n return responseSchema as Record<string, unknown>;\n}\n\nfunction buildPromptParts(prompt: string, attachments?: ChatAttachment[]) {\n const parts: Array<\n | { text: string }\n | { fileData: { mimeType: string; fileUri: string } }\n | { inlineData: { mimeType: string; data: string } }\n > = [{ text: prompt }];\n\n for (const attachment of attachments ?? []) {\n if (attachment.data instanceof URL) {\n parts.push({\n fileData: {\n mimeType: attachment.mediaType,\n fileUri: attachment.data.toString(),\n },\n });\n continue;\n }\n\n if (\n typeof attachment.data === \"string\" &&\n /^https?:\\/\\//i.test(attachment.data)\n ) {\n parts.push({\n fileData: {\n mimeType: attachment.mediaType,\n fileUri: attachment.data,\n },\n });\n continue;\n }\n\n if (typeof attachment.data === \"string\") {\n const dataUrlMatch = attachment.data.match(\n /^data:([^;,]+);base64,(.+)$/i,\n );\n parts.push({\n inlineData: {\n mimeType: dataUrlMatch?.[1] ?? attachment.mediaType,\n data: dataUrlMatch?.[2] ?? attachment.data,\n },\n });\n continue;\n }\n\n parts.push({\n inlineData: {\n mimeType: attachment.mediaType,\n data: Buffer.from(attachment.data).toString(\"base64\"),\n },\n });\n }\n\n return parts;\n}\n\nfunction resolveGoogleSystemInstruction(\n runtime: IAgentRuntime,\n params: GenerateTextParamsWithAttachments,\n): string | undefined {\n return resolveEffectiveSystemPrompt({\n params,\n fallback: buildCanonicalSystemPrompt({ character: runtime.character }),\n });\n}\n\nfunction resolveGooglePrompt(\n params: GenerateTextParamsWithAttachments,\n systemInstruction: string | undefined,\n): string {\n return (\n renderChatMessagesForPrompt(params.messages, {\n omitDuplicateSystem: systemInstruction,\n }) ?? params.prompt\n );\n}\n\nfunction getModelNameForType(\n runtime: IAgentRuntime,\n modelType: string,\n): string {\n switch (modelType) {\n case TEXT_NANO_MODEL_TYPE:\n return getNanoModel(runtime);\n case TEXT_MEDIUM_MODEL_TYPE:\n return getMediumModel(runtime);\n case TEXT_SMALL_MODEL_TYPE:\n return getSmallModel(runtime);\n case TEXT_LARGE_MODEL_TYPE:\n return getLargeModel(runtime);\n case TEXT_MEGA_MODEL_TYPE:\n return getMegaModel(runtime);\n case RESPONSE_HANDLER_MODEL_TYPE:\n return getResponseHandlerModel(runtime);\n case ACTION_PLANNER_MODEL_TYPE:\n return getActionPlannerModel(runtime);\n default:\n return getLargeModel(runtime);\n }\n}\n\nfunction buildGoogleGenerationConfig(\n params: GenerateTextParamsWithAttachments,\n systemInstruction: string | undefined,\n temperature: number,\n maxTokens: number,\n stopSequences: string[],\n): NonNullable<GenerateContentParams[\"config\"]> {\n const tools = normalizeToolsForGoogle(params.tools);\n const toolConfig = normalizeToolConfigForGoogle(params.toolChoice);\n const responseJsonSchema = resolveResponseJsonSchema(params.responseSchema);\n\n const baseConfig: Record<string, unknown> = {\n temperature,\n topK: 40,\n topP: 0.95,\n maxOutputTokens: maxTokens,\n stopSequences,\n safetySettings: getSafetySettings(),\n ...(systemInstruction && { systemInstruction }),\n ...(tools ? { tools } : {}),\n ...(toolConfig ? { toolConfig } : {}),\n ...(responseJsonSchema\n ? {\n responseMimeType: \"application/json\",\n responseJsonSchema,\n }\n : {}),\n };\n\n return baseConfig as NonNullable<GenerateContentParams[\"config\"]>;\n}\n\nfunction createLlmCallDetails(\n modelName: string,\n modelType: string,\n prompt: string,\n systemInstruction: string | undefined,\n temperature: number,\n maxTokens: number,\n): RecordLlmCallDetails {\n return {\n model: modelName,\n systemPrompt: systemInstruction ?? \"\",\n userPrompt: prompt,\n temperature,\n maxTokens,\n purpose: \"external_llm\",\n actionType: `google-genai.${modelType}.generateContent`,\n };\n}\n\nasync function generateContentWithTrajectory(\n runtime: IAgentRuntime,\n genAI: GoogleGenAIClient,\n modelName: string,\n modelType: string,\n prompt: string,\n systemInstruction: string | undefined,\n temperature: number,\n maxTokens: number,\n request: GenerateContentParams,\n): Promise<string> {\n const details = createLlmCallDetails(\n modelName,\n modelType,\n prompt,\n systemInstruction,\n temperature,\n maxTokens,\n );\n const response = await recordLlmCall(runtime, details, async () => {\n const result = await genAI.models.generateContent(request);\n const text = result.text || \"\";\n details.response = text;\n details.promptTokens = await countTokens(prompt);\n details.completionTokens = await countTokens(text);\n return result;\n });\n\n const text = response.text || \"\";\n const promptTokens = details.promptTokens ?? (await countTokens(prompt));\n const completionTokens =\n details.completionTokens ?? (await countTokens(text));\n\n emitModelUsageEvent(runtime, modelType, prompt, {\n promptTokens,\n completionTokens,\n totalTokens: promptTokens + completionTokens,\n });\n\n return text;\n}\n\nexport async function handleTextSmall(\n runtime: IAgentRuntime,\n params: GenerateTextParamsWithAttachments,\n): Promise<string> {\n const {\n stopSequences = [],\n maxTokens = 8192,\n temperature = 0.7,\n attachments,\n } = params;\n const genAI = createGoogleGenAI(runtime);\n if (!genAI) {\n throw new Error(\"Google Generative AI client not initialized\");\n }\n\n const modelName = getModelNameForType(runtime, TEXT_SMALL_MODEL_TYPE);\n\n logger.log(`[TEXT_SMALL] Using model: ${modelName}`);\n\n try {\n const systemInstruction = resolveGoogleSystemInstruction(runtime, params);\n const promptText = resolveGooglePrompt(params, systemInstruction);\n return await generateContentWithTrajectory(\n runtime,\n genAI,\n modelName,\n TEXT_SMALL_MODEL_TYPE,\n promptText,\n systemInstruction,\n temperature,\n maxTokens,\n {\n model: modelName,\n contents:\n (attachments?.length ?? 0) > 0\n ? [\n {\n role: \"user\",\n parts: buildPromptParts(promptText, attachments),\n },\n ]\n : promptText,\n config: buildGoogleGenerationConfig(\n params,\n systemInstruction,\n temperature,\n maxTokens,\n stopSequences,\n ),\n },\n );\n } catch (error) {\n logger.error(\n `[TEXT_SMALL] Error: ${error instanceof Error ? error.message : String(error)}`,\n );\n throw error;\n }\n}\n\nexport async function handleTextLarge(\n runtime: IAgentRuntime,\n params: GenerateTextParamsWithAttachments,\n): Promise<string> {\n const {\n stopSequences = [],\n maxTokens = 8192,\n temperature = 0.7,\n attachments,\n } = params;\n const genAI = createGoogleGenAI(runtime);\n if (!genAI) {\n throw new Error(\"Google Generative AI client not initialized\");\n }\n\n const modelName = getModelNameForType(runtime, TEXT_LARGE_MODEL_TYPE);\n\n logger.log(`[TEXT_LARGE] Using model: ${modelName}`);\n\n try {\n const systemInstruction = resolveGoogleSystemInstruction(runtime, params);\n const promptText = resolveGooglePrompt(params, systemInstruction);\n return await generateContentWithTrajectory(\n runtime,\n genAI,\n modelName,\n TEXT_LARGE_MODEL_TYPE,\n promptText,\n systemInstruction,\n temperature,\n maxTokens,\n {\n model: modelName,\n contents:\n (attachments?.length ?? 0) > 0\n ? [\n {\n role: \"user\",\n parts: buildPromptParts(promptText, attachments),\n },\n ]\n : promptText,\n config: buildGoogleGenerationConfig(\n params,\n systemInstruction,\n temperature,\n maxTokens,\n stopSequences,\n ),\n },\n );\n } catch (error) {\n logger.error(\n `[TEXT_LARGE] Error: ${error instanceof Error ? error.message : String(error)}`,\n );\n throw error;\n }\n}\n\nexport async function handleTextNano(\n runtime: IAgentRuntime,\n params: GenerateTextParamsWithAttachments,\n): Promise<string> {\n return handleTextWithType(runtime, TEXT_NANO_MODEL_TYPE, params);\n}\n\nexport async function handleTextMedium(\n runtime: IAgentRuntime,\n params: GenerateTextParamsWithAttachments,\n): Promise<string> {\n return handleTextWithType(runtime, TEXT_MEDIUM_MODEL_TYPE, params);\n}\n\nexport async function handleTextMega(\n runtime: IAgentRuntime,\n params: GenerateTextParamsWithAttachments,\n): Promise<string> {\n return handleTextWithType(runtime, TEXT_MEGA_MODEL_TYPE, params);\n}\n\nexport async function handleResponseHandler(\n runtime: IAgentRuntime,\n params: GenerateTextParamsWithAttachments,\n): Promise<string> {\n return handleTextWithType(runtime, RESPONSE_HANDLER_MODEL_TYPE, params);\n}\n\nexport async function handleActionPlanner(\n runtime: IAgentRuntime,\n params: GenerateTextParamsWithAttachments,\n): Promise<string> {\n return handleTextWithType(runtime, ACTION_PLANNER_MODEL_TYPE, params);\n}\n\nasync function handleTextWithType(\n runtime: IAgentRuntime,\n modelType: string,\n params: GenerateTextParamsWithAttachments,\n): Promise<string> {\n const {\n stopSequences = [],\n maxTokens = 8192,\n temperature = 0.7,\n attachments,\n } = params;\n const genAI = createGoogleGenAI(runtime);\n if (!genAI) {\n throw new Error(\"Google Generative AI client not initialized\");\n }\n\n const modelName = getModelNameForType(runtime, modelType);\n\n logger.log(`[${modelType}] Using model: ${modelName}`);\n\n try {\n const systemInstruction = resolveGoogleSystemInstruction(runtime, params);\n const promptText = resolveGooglePrompt(params, systemInstruction);\n return await generateContentWithTrajectory(\n runtime,\n genAI,\n modelName,\n modelType,\n promptText,\n systemInstruction,\n temperature,\n maxTokens,\n {\n model: modelName,\n contents:\n (attachments?.length ?? 0) > 0\n ? [\n {\n role: \"user\",\n parts: buildPromptParts(promptText, attachments),\n },\n ]\n : promptText,\n config: buildGoogleGenerationConfig(\n params,\n systemInstruction,\n temperature,\n maxTokens,\n stopSequences,\n ),\n },\n );\n } catch (error) {\n logger.error(\n `[${modelType}] Error: ${error instanceof Error ? error.message : String(error)}`,\n );\n throw error;\n }\n}\n",
|
|
13
|
+
"import pluginDefault from \"./index\";\n\nexport * from \"./index\";\nexport default pluginDefault;\n"
|
|
14
14
|
],
|
|
15
|
-
"mappings": "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",
|
|
16
|
-
"debugId": "
|
|
15
|
+
"mappings": "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",
|
|
16
|
+
"debugId": "20AEB5819D569BEA64756E2164756E21",
|
|
17
17
|
"names": []
|
|
18
18
|
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export interface TokenUsage {
|
|
2
|
+
promptTokens: number;
|
|
3
|
+
completionTokens: number;
|
|
4
|
+
totalTokens: number;
|
|
5
|
+
}
|
|
6
|
+
export interface TextGenerationParams {
|
|
7
|
+
prompt: string;
|
|
8
|
+
system?: string;
|
|
9
|
+
maxTokens?: number;
|
|
10
|
+
temperature?: number;
|
|
11
|
+
topK?: number;
|
|
12
|
+
topP?: number;
|
|
13
|
+
stopSequences?: string[];
|
|
14
|
+
}
|
|
15
|
+
export interface TextGenerationResponse {
|
|
16
|
+
text: string;
|
|
17
|
+
usage: TokenUsage;
|
|
18
|
+
model: string;
|
|
19
|
+
}
|
|
20
|
+
export interface EmbeddingParams {
|
|
21
|
+
text: string;
|
|
22
|
+
}
|
|
23
|
+
export interface EmbeddingResponse {
|
|
24
|
+
embedding: number[];
|
|
25
|
+
model: string;
|
|
26
|
+
}
|
|
27
|
+
export interface ImageDescriptionParams {
|
|
28
|
+
imageUrl: string;
|
|
29
|
+
prompt?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface ImageDescriptionResponse {
|
|
32
|
+
title: string;
|
|
33
|
+
description: string;
|
|
34
|
+
}
|
|
35
|
+
export interface ObjectGenerationParams {
|
|
36
|
+
prompt: string;
|
|
37
|
+
system?: string;
|
|
38
|
+
schema?: Record<string, string | number | boolean | null>;
|
|
39
|
+
temperature?: number;
|
|
40
|
+
maxTokens?: number;
|
|
41
|
+
}
|
|
42
|
+
export interface ObjectGenerationResponse {
|
|
43
|
+
object: Record<string, string | number | boolean | null>;
|
|
44
|
+
usage: TokenUsage;
|
|
45
|
+
model: string;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../typescript/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;IACzD,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { IAgentRuntime } from "@elizaos/core";
|
|
2
|
+
import { GoogleGenAI, HarmBlockThreshold, HarmCategory } from "@google/genai";
|
|
3
|
+
export declare function getSetting(
|
|
4
|
+
runtime: IAgentRuntime,
|
|
5
|
+
key: string,
|
|
6
|
+
defaultValue?: string,
|
|
7
|
+
): string | undefined;
|
|
8
|
+
export declare function getApiKey(runtime: IAgentRuntime): string | undefined;
|
|
9
|
+
export declare function getSmallModel(runtime: IAgentRuntime): string;
|
|
10
|
+
export declare function getNanoModel(runtime: IAgentRuntime): string;
|
|
11
|
+
export declare function getMediumModel(runtime: IAgentRuntime): string;
|
|
12
|
+
export declare function getLargeModel(runtime: IAgentRuntime): string;
|
|
13
|
+
export declare function getMegaModel(runtime: IAgentRuntime): string;
|
|
14
|
+
export declare function getResponseHandlerModel(runtime: IAgentRuntime): string;
|
|
15
|
+
export declare function getActionPlannerModel(runtime: IAgentRuntime): string;
|
|
16
|
+
export declare function getImageModel(runtime: IAgentRuntime): string;
|
|
17
|
+
export declare function getEmbeddingModel(runtime: IAgentRuntime): string;
|
|
18
|
+
export declare function createGoogleGenAI(
|
|
19
|
+
runtime: IAgentRuntime,
|
|
20
|
+
): GoogleGenAI | null;
|
|
21
|
+
export declare function getSafetySettings(): {
|
|
22
|
+
category: HarmCategory;
|
|
23
|
+
threshold: HarmBlockThreshold;
|
|
24
|
+
}[];
|
|
25
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../typescript/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAW9E,wBAAgB,UAAU,CACxB,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,MAAM,EACX,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,GAAG,SAAS,CAMpB;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAEpE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAM5D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAM3D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAM7D;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAM5D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAM3D;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAQtE;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAQpE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAM5D;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAIhE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,WAAW,GAAG,IAAI,CAQ5E;AAED,wBAAgB,iBAAiB;;;IAmBhC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { logger } from "@elizaos/core";
|
|
2
|
+
import { GoogleGenAI, HarmBlockThreshold, HarmCategory } from "@google/genai";
|
|
3
|
+
|
|
4
|
+
function getEnvValue(key) {
|
|
5
|
+
// In browsers, `process` is not defined. `typeof process` is safe.
|
|
6
|
+
if (typeof process === "undefined") {
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
const value = process.env[key];
|
|
10
|
+
return value === undefined ? undefined : String(value);
|
|
11
|
+
}
|
|
12
|
+
export function getSetting(runtime, key, defaultValue) {
|
|
13
|
+
const runtimeValue = runtime.getSetting(key);
|
|
14
|
+
if (runtimeValue !== undefined) {
|
|
15
|
+
return String(runtimeValue);
|
|
16
|
+
}
|
|
17
|
+
return getEnvValue(key) ?? defaultValue;
|
|
18
|
+
}
|
|
19
|
+
export function getApiKey(runtime) {
|
|
20
|
+
return getSetting(runtime, "GOOGLE_GENERATIVE_AI_API_KEY");
|
|
21
|
+
}
|
|
22
|
+
export function getSmallModel(runtime) {
|
|
23
|
+
return (
|
|
24
|
+
getSetting(runtime, "GOOGLE_SMALL_MODEL") ??
|
|
25
|
+
getSetting(runtime, "SMALL_MODEL", "gemini-2.0-flash-001") ??
|
|
26
|
+
"gemini-2.0-flash-001"
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
export function getNanoModel(runtime) {
|
|
30
|
+
return (
|
|
31
|
+
getSetting(runtime, "GOOGLE_NANO_MODEL") ??
|
|
32
|
+
getSetting(runtime, "NANO_MODEL") ??
|
|
33
|
+
getSmallModel(runtime)
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
export function getMediumModel(runtime) {
|
|
37
|
+
return (
|
|
38
|
+
getSetting(runtime, "GOOGLE_MEDIUM_MODEL") ??
|
|
39
|
+
getSetting(runtime, "MEDIUM_MODEL") ??
|
|
40
|
+
getSmallModel(runtime)
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
export function getLargeModel(runtime) {
|
|
44
|
+
return (
|
|
45
|
+
getSetting(runtime, "GOOGLE_LARGE_MODEL") ??
|
|
46
|
+
getSetting(runtime, "LARGE_MODEL", "gemini-2.5-pro-preview-03-25") ??
|
|
47
|
+
"gemini-2.5-pro-preview-03-25"
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
export function getMegaModel(runtime) {
|
|
51
|
+
return (
|
|
52
|
+
getSetting(runtime, "GOOGLE_MEGA_MODEL") ??
|
|
53
|
+
getSetting(runtime, "MEGA_MODEL") ??
|
|
54
|
+
getLargeModel(runtime)
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
export function getResponseHandlerModel(runtime) {
|
|
58
|
+
return (
|
|
59
|
+
getSetting(runtime, "GOOGLE_RESPONSE_HANDLER_MODEL") ??
|
|
60
|
+
getSetting(runtime, "GOOGLE_SHOULD_RESPOND_MODEL") ??
|
|
61
|
+
getSetting(runtime, "RESPONSE_HANDLER_MODEL") ??
|
|
62
|
+
getSetting(runtime, "SHOULD_RESPOND_MODEL") ??
|
|
63
|
+
getNanoModel(runtime)
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
export function getActionPlannerModel(runtime) {
|
|
67
|
+
return (
|
|
68
|
+
getSetting(runtime, "GOOGLE_ACTION_PLANNER_MODEL") ??
|
|
69
|
+
getSetting(runtime, "GOOGLE_PLANNER_MODEL") ??
|
|
70
|
+
getSetting(runtime, "ACTION_PLANNER_MODEL") ??
|
|
71
|
+
getSetting(runtime, "PLANNER_MODEL") ??
|
|
72
|
+
getMediumModel(runtime)
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
export function getImageModel(runtime) {
|
|
76
|
+
return (
|
|
77
|
+
getSetting(runtime, "GOOGLE_IMAGE_MODEL") ??
|
|
78
|
+
getSetting(runtime, "IMAGE_MODEL", "gemini-2.5-pro-preview-03-25") ??
|
|
79
|
+
"gemini-2.5-pro-preview-03-25"
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
export function getEmbeddingModel(runtime) {
|
|
83
|
+
return (
|
|
84
|
+
getSetting(runtime, "GOOGLE_EMBEDDING_MODEL", "text-embedding-004") ??
|
|
85
|
+
"text-embedding-004"
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
export function createGoogleGenAI(runtime) {
|
|
89
|
+
const apiKey = getApiKey(runtime);
|
|
90
|
+
if (!apiKey) {
|
|
91
|
+
logger.error("Google Generative AI API Key is missing");
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
return new GoogleGenAI({ apiKey });
|
|
95
|
+
}
|
|
96
|
+
export function getSafetySettings() {
|
|
97
|
+
return [
|
|
98
|
+
{
|
|
99
|
+
category: HarmCategory.HARM_CATEGORY_HARASSMENT,
|
|
100
|
+
threshold: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE,
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
category: HarmCategory.HARM_CATEGORY_HATE_SPEECH,
|
|
104
|
+
threshold: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE,
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
category: HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,
|
|
108
|
+
threshold: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE,
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
category: HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
|
|
112
|
+
threshold: HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE,
|
|
113
|
+
},
|
|
114
|
+
];
|
|
115
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IAgentRuntime, ModelTypeName } from "@elizaos/core";
|
|
2
|
+
export declare function emitModelUsageEvent(
|
|
3
|
+
runtime: IAgentRuntime,
|
|
4
|
+
type: ModelTypeName,
|
|
5
|
+
_prompt: string,
|
|
6
|
+
usage: {
|
|
7
|
+
promptTokens: number;
|
|
8
|
+
completionTokens: number;
|
|
9
|
+
totalTokens: number;
|
|
10
|
+
},
|
|
11
|
+
): void;
|
|
12
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../typescript/utils/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAIhF,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE;IACL,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB,GACA,IAAI,CAYN"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const MODEL_USED_EVENT = "MODEL_USED";
|
|
2
|
+
export function emitModelUsageEvent(runtime, type, _prompt, usage) {
|
|
3
|
+
void _prompt; // Not included in ModelEventPayload
|
|
4
|
+
runtime.emitEvent(MODEL_USED_EVENT, {
|
|
5
|
+
runtime,
|
|
6
|
+
source: "plugin-google-genai",
|
|
7
|
+
type,
|
|
8
|
+
tokens: {
|
|
9
|
+
prompt: usage.promptTokens,
|
|
10
|
+
completion: usage.completionTokens,
|
|
11
|
+
total: usage.totalTokens,
|
|
12
|
+
},
|
|
13
|
+
});
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../typescript/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenization.d.ts","sourceRoot":"","sources":["../../typescript/utils/tokenization.ts"],"names":[],"mappings":"AAAA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE/D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vitest.config.d.ts","sourceRoot":"","sources":["../typescript/vitest.config.ts"],"names":[],"mappings":";AAEA,wBAMG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elizaos/plugin-google-genai",
|
|
3
|
-
"version": "2.0.0-
|
|
3
|
+
"version": "2.0.0-beta.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/node/index.node.js",
|
|
6
6
|
"module": "dist/node/index.node.js",
|
|
@@ -27,37 +27,53 @@
|
|
|
27
27
|
"types": "./dist/node/index.d.ts",
|
|
28
28
|
"default": "./dist/node/index.node.js"
|
|
29
29
|
},
|
|
30
|
-
"require": "./dist/cjs/index.node.cjs",
|
|
31
30
|
"default": "./dist/node/index.node.js"
|
|
32
31
|
}
|
|
33
32
|
},
|
|
34
33
|
"files": [
|
|
35
|
-
"dist"
|
|
34
|
+
"dist",
|
|
35
|
+
"auto-enable.ts"
|
|
36
36
|
],
|
|
37
|
+
"elizaos": {
|
|
38
|
+
"plugin": {
|
|
39
|
+
"autoEnableModule": "./auto-enable.ts",
|
|
40
|
+
"capabilities": [
|
|
41
|
+
"text-large",
|
|
42
|
+
"text-small",
|
|
43
|
+
"tool-use",
|
|
44
|
+
"embedding",
|
|
45
|
+
"image-description"
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
},
|
|
37
49
|
"sideEffects": false,
|
|
38
50
|
"dependencies": {
|
|
39
|
-
"@
|
|
40
|
-
"@google/genai": "^1.5.1",
|
|
41
|
-
"undici": "^7.9.0"
|
|
51
|
+
"@google/genai": "^1.5.1"
|
|
42
52
|
},
|
|
43
53
|
"devDependencies": {
|
|
44
|
-
"@biomejs/biome": "^2.
|
|
54
|
+
"@biomejs/biome": "^2.4.14",
|
|
55
|
+
"@elizaos/core": "2.0.0-beta.1",
|
|
45
56
|
"@types/node": "^25.0.3",
|
|
57
|
+
"bun-types": "^1.3.12",
|
|
46
58
|
"dotenv": "^17.2.3",
|
|
47
|
-
"typescript": "^
|
|
59
|
+
"typescript": "^6.0.3",
|
|
60
|
+
"vitest": "^4.0.0"
|
|
61
|
+
},
|
|
62
|
+
"peerDependencies": {
|
|
63
|
+
"@elizaos/core": "2.0.0-beta.1"
|
|
48
64
|
},
|
|
49
65
|
"scripts": {
|
|
50
66
|
"dev": "bun run build.ts --watch",
|
|
51
|
-
"clean": "rm -rf dist .turbo
|
|
67
|
+
"clean": "rm -rf dist .turbo .turbo-tsconfig.json tsconfig.tsbuildinfo",
|
|
52
68
|
"format": "bunx @biomejs/biome format --write .",
|
|
53
69
|
"format:check": "bunx @biomejs/biome format .",
|
|
54
70
|
"typecheck": "tsc --noEmit -p tsconfig.json",
|
|
55
|
-
"test": "
|
|
56
|
-
"test:unit": "vitest run
|
|
57
|
-
"test:integration": "vitest run
|
|
58
|
-
"test:watch": "vitest",
|
|
59
|
-
"lint": "bunx @biomejs/biome check --write --unsafe .",
|
|
60
|
-
"lint:check": "bunx @biomejs/biome check .",
|
|
71
|
+
"test": "bunx vitest run --config vitest.config.ts",
|
|
72
|
+
"test:unit": "bunx vitest run --config vitest.config.ts --dir __tests__/unit",
|
|
73
|
+
"test:integration": "bunx vitest run --config vitest.config.ts --dir __tests__/integration",
|
|
74
|
+
"test:watch": "bunx vitest --config vitest.config.ts",
|
|
75
|
+
"lint": "bunx @biomejs/biome check --write --unsafe build.ts index.ts index.browser.ts index.node.ts init.ts __tests__ generated models types utils",
|
|
76
|
+
"lint:check": "bunx @biomejs/biome check build.ts index.ts index.browser.ts index.node.ts init.ts __tests__ generated models types utils",
|
|
61
77
|
"build": "bun run build.ts",
|
|
62
78
|
"build:ts": "bun run build.ts"
|
|
63
79
|
},
|
|
@@ -125,7 +141,7 @@
|
|
|
125
141
|
}
|
|
126
142
|
},
|
|
127
143
|
"gitHead": "646c632924826e2b75c2304a75ee56959fe4a460",
|
|
128
|
-
"
|
|
144
|
+
"eliza": {
|
|
129
145
|
"platforms": [
|
|
130
146
|
"browser",
|
|
131
147
|
"node"
|