@google/adk 0.1.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.
- package/LICENSE +202 -0
- package/README.md +9 -0
- package/dist/cjs/agents/active_streaming_tool.js +44 -0
- package/dist/cjs/agents/base_agent.js +245 -0
- package/dist/cjs/agents/base_llm_processor.js +44 -0
- package/dist/cjs/agents/callback_context.js +98 -0
- package/dist/cjs/agents/content_processor_utils.js +299 -0
- package/dist/cjs/agents/functions.js +394 -0
- package/dist/cjs/agents/instructions.js +110 -0
- package/dist/cjs/agents/invocation_context.js +109 -0
- package/dist/cjs/agents/live_request_queue.js +136 -0
- package/dist/cjs/agents/llm_agent.js +859 -0
- package/dist/cjs/agents/loop_agent.js +68 -0
- package/dist/cjs/agents/parallel_agent.js +78 -0
- package/dist/cjs/agents/readonly_context.js +68 -0
- package/dist/cjs/agents/run_config.js +74 -0
- package/dist/cjs/agents/sequential_agent.js +84 -0
- package/dist/cjs/agents/transcription_entry.js +27 -0
- package/dist/cjs/artifacts/base_artifact_service.js +27 -0
- package/dist/cjs/artifacts/in_memory_artifact_service.js +119 -0
- package/dist/cjs/auth/auth_credential.js +46 -0
- package/dist/cjs/auth/auth_handler.js +92 -0
- package/dist/cjs/auth/auth_schemes.js +62 -0
- package/dist/cjs/auth/auth_tool.js +27 -0
- package/dist/cjs/auth/credential_service/base_credential_service.js +27 -0
- package/dist/cjs/auth/credential_service/in_memory_credential_service.js +63 -0
- package/dist/cjs/code_executors/base_code_executor.js +76 -0
- package/dist/cjs/code_executors/built_in_code_executor.js +58 -0
- package/dist/cjs/code_executors/code_execution_utils.js +142 -0
- package/dist/cjs/code_executors/code_executor_context.js +198 -0
- package/dist/cjs/common.js +161 -0
- package/dist/cjs/events/event.js +107 -0
- package/dist/cjs/events/event_actions.js +83 -0
- package/dist/cjs/examples/base_example_provider.js +40 -0
- package/dist/cjs/examples/example.js +27 -0
- package/dist/cjs/examples/example_util.js +107 -0
- package/dist/cjs/index.js +40 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/index_web.js +33 -0
- package/dist/cjs/memory/base_memory_service.js +27 -0
- package/dist/cjs/memory/in_memory_memory_service.js +97 -0
- package/dist/cjs/memory/memory_entry.js +27 -0
- package/dist/cjs/models/base_llm.js +77 -0
- package/dist/cjs/models/base_llm_connection.js +27 -0
- package/dist/cjs/models/gemini_llm_connection.js +132 -0
- package/dist/cjs/models/google_llm.js +321 -0
- package/dist/cjs/models/llm_request.js +82 -0
- package/dist/cjs/models/llm_response.js +71 -0
- package/dist/cjs/models/registry.js +121 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/plugins/base_plugin.js +236 -0
- package/dist/cjs/plugins/logging_plugin.js +222 -0
- package/dist/cjs/plugins/plugin_manager.js +239 -0
- package/dist/cjs/plugins/security_plugin.js +153 -0
- package/dist/cjs/runner/in_memory_runner.js +58 -0
- package/dist/cjs/runner/runner.js +276 -0
- package/dist/cjs/sessions/base_session_service.js +71 -0
- package/dist/cjs/sessions/in_memory_session_service.js +184 -0
- package/dist/cjs/sessions/session.js +48 -0
- package/dist/cjs/sessions/state.js +101 -0
- package/dist/cjs/tools/agent_tool.js +134 -0
- package/dist/cjs/tools/base_tool.js +107 -0
- package/dist/cjs/tools/base_toolset.js +76 -0
- package/dist/cjs/tools/forwarding_artifact_service.js +71 -0
- package/dist/cjs/tools/function_tool.js +101 -0
- package/dist/cjs/tools/google_search_tool.js +76 -0
- package/dist/cjs/tools/long_running_tool.js +63 -0
- package/dist/cjs/tools/mcp/mcp_session_manager.js +65 -0
- package/dist/cjs/tools/mcp/mcp_tool.js +65 -0
- package/dist/cjs/tools/mcp/mcp_toolset.js +61 -0
- package/dist/cjs/tools/tool_confirmation.js +49 -0
- package/dist/cjs/tools/tool_context.js +129 -0
- package/dist/cjs/utils/deep_clone.js +44 -0
- package/dist/cjs/utils/env_aware_utils.js +83 -0
- package/dist/cjs/utils/gemini_schema_util.js +88 -0
- package/dist/cjs/utils/logger.js +121 -0
- package/dist/cjs/utils/model_name.js +64 -0
- package/dist/cjs/utils/simple_zod_to_json.js +191 -0
- package/dist/cjs/utils/variant_utils.js +55 -0
- package/dist/cjs/version.js +39 -0
- package/dist/esm/agents/active_streaming_tool.js +14 -0
- package/dist/esm/agents/base_agent.js +214 -0
- package/dist/esm/agents/base_llm_processor.js +13 -0
- package/dist/esm/agents/callback_context.js +68 -0
- package/dist/esm/agents/content_processor_utils.js +268 -0
- package/dist/esm/agents/functions.js +353 -0
- package/dist/esm/agents/instructions.js +80 -0
- package/dist/esm/agents/invocation_context.js +78 -0
- package/dist/esm/agents/live_request_queue.js +106 -0
- package/dist/esm/agents/llm_agent.js +828 -0
- package/dist/esm/agents/loop_agent.js +38 -0
- package/dist/esm/agents/parallel_agent.js +48 -0
- package/dist/esm/agents/readonly_context.js +38 -0
- package/dist/esm/agents/run_config.js +43 -0
- package/dist/esm/agents/sequential_agent.js +54 -0
- package/dist/esm/agents/transcription_entry.js +5 -0
- package/dist/esm/artifacts/base_artifact_service.js +5 -0
- package/dist/esm/artifacts/in_memory_artifact_service.js +89 -0
- package/dist/esm/auth/auth_credential.js +16 -0
- package/dist/esm/auth/auth_handler.js +62 -0
- package/dist/esm/auth/auth_schemes.js +31 -0
- package/dist/esm/auth/auth_tool.js +5 -0
- package/dist/esm/auth/credential_service/base_credential_service.js +5 -0
- package/dist/esm/auth/credential_service/in_memory_credential_service.js +33 -0
- package/dist/esm/code_executors/base_code_executor.js +46 -0
- package/dist/esm/code_executors/built_in_code_executor.js +28 -0
- package/dist/esm/code_executors/code_execution_utils.js +108 -0
- package/dist/esm/code_executors/code_executor_context.js +168 -0
- package/dist/esm/common.js +85 -0
- package/dist/esm/events/event.js +72 -0
- package/dist/esm/events/event_actions.js +52 -0
- package/dist/esm/examples/base_example_provider.js +10 -0
- package/dist/esm/examples/example.js +5 -0
- package/dist/esm/examples/example_util.js +76 -0
- package/dist/esm/index.js +40 -0
- package/dist/esm/index.js.map +7 -0
- package/dist/esm/index_web.js +6 -0
- package/dist/esm/memory/base_memory_service.js +5 -0
- package/dist/esm/memory/in_memory_memory_service.js +67 -0
- package/dist/esm/memory/memory_entry.js +5 -0
- package/dist/esm/models/base_llm.js +47 -0
- package/dist/esm/models/base_llm_connection.js +5 -0
- package/dist/esm/models/gemini_llm_connection.js +102 -0
- package/dist/esm/models/google_llm.js +291 -0
- package/dist/esm/models/llm_request.js +50 -0
- package/dist/esm/models/llm_response.js +41 -0
- package/dist/esm/models/registry.js +91 -0
- package/dist/esm/plugins/base_plugin.js +206 -0
- package/dist/esm/plugins/logging_plugin.js +192 -0
- package/dist/esm/plugins/plugin_manager.js +209 -0
- package/dist/esm/plugins/security_plugin.js +119 -0
- package/dist/esm/runner/in_memory_runner.js +28 -0
- package/dist/esm/runner/runner.js +246 -0
- package/dist/esm/sessions/base_session_service.js +41 -0
- package/dist/esm/sessions/in_memory_session_service.js +154 -0
- package/dist/esm/sessions/session.js +18 -0
- package/dist/esm/sessions/state.js +71 -0
- package/dist/esm/tools/agent_tool.js +104 -0
- package/dist/esm/tools/base_tool.js +77 -0
- package/dist/esm/tools/base_toolset.js +46 -0
- package/dist/esm/tools/forwarding_artifact_service.js +41 -0
- package/dist/esm/tools/function_tool.js +71 -0
- package/dist/esm/tools/google_search_tool.js +46 -0
- package/dist/esm/tools/long_running_tool.js +33 -0
- package/dist/esm/tools/mcp/mcp_session_manager.js +35 -0
- package/dist/esm/tools/mcp/mcp_tool.js +35 -0
- package/dist/esm/tools/mcp/mcp_toolset.js +31 -0
- package/dist/esm/tools/tool_confirmation.js +19 -0
- package/dist/esm/tools/tool_context.js +99 -0
- package/dist/esm/utils/deep_clone.js +14 -0
- package/dist/esm/utils/env_aware_utils.js +49 -0
- package/dist/esm/utils/gemini_schema_util.js +58 -0
- package/dist/esm/utils/logger.js +89 -0
- package/dist/esm/utils/model_name.js +31 -0
- package/dist/esm/utils/simple_zod_to_json.js +160 -0
- package/dist/esm/utils/variant_utils.js +24 -0
- package/dist/esm/version.js +9 -0
- package/dist/types/agents/active_streaming_tool.d.ts +29 -0
- package/dist/types/agents/base_agent.d.ts +167 -0
- package/dist/types/agents/base_llm_processor.d.ts +27 -0
- package/dist/types/agents/callback_context.d.ts +42 -0
- package/dist/types/agents/content_processor_utils.d.ts +36 -0
- package/dist/types/agents/functions.d.ts +90 -0
- package/dist/types/agents/instructions.d.ts +32 -0
- package/dist/types/agents/invocation_context.d.ts +155 -0
- package/dist/types/agents/live_request_queue.d.ts +67 -0
- package/dist/types/agents/llm_agent.d.ts +333 -0
- package/dist/types/agents/loop_agent.d.ts +31 -0
- package/dist/types/agents/parallel_agent.d.ts +21 -0
- package/dist/types/agents/readonly_context.d.ts +31 -0
- package/dist/types/agents/run_config.d.ts +76 -0
- package/dist/types/agents/sequential_agent.d.ts +26 -0
- package/dist/types/agents/transcription_entry.d.ts +17 -0
- package/dist/types/artifacts/base_artifact_service.d.ts +127 -0
- package/dist/types/artifacts/in_memory_artifact_service.d.ts +18 -0
- package/dist/types/auth/auth_credential.d.ts +227 -0
- package/dist/types/auth/auth_handler.d.ts +27 -0
- package/dist/types/auth/auth_schemes.d.ts +36 -0
- package/dist/types/auth/auth_tool.d.ts +51 -0
- package/dist/types/auth/credential_service/base_credential_service.d.ts +27 -0
- package/dist/types/auth/credential_service/in_memory_credential_service.d.ts +19 -0
- package/dist/types/code_executors/base_code_executor.d.ts +60 -0
- package/dist/types/code_executors/built_in_code_executor.d.ts +13 -0
- package/dist/types/code_executors/code_execution_utils.d.ts +99 -0
- package/dist/types/code_executors/code_executor_context.d.ts +92 -0
- package/dist/types/common.d.ts +51 -0
- package/dist/types/events/event.d.ts +81 -0
- package/dist/types/events/event_actions.d.ts +74 -0
- package/dist/types/examples/base_example_provider.d.ts +20 -0
- package/dist/types/examples/example.d.ts +19 -0
- package/dist/types/examples/example_util.d.ts +13 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index_web.d.ts +6 -0
- package/dist/types/memory/base_memory_service.d.ts +47 -0
- package/dist/types/memory/in_memory_memory_service.d.ts +18 -0
- package/dist/types/memory/memory_entry.d.ts +24 -0
- package/dist/types/models/base_llm.d.ts +46 -0
- package/dist/types/models/base_llm_connection.d.ts +51 -0
- package/dist/types/models/gemini_llm_connection.d.ts +54 -0
- package/dist/types/models/google_llm.d.ts +88 -0
- package/dist/types/models/llm_request.d.ts +49 -0
- package/dist/types/models/llm_response.d.ts +79 -0
- package/dist/types/models/registry.d.ts +45 -0
- package/dist/types/plugins/base_plugin.d.ts +310 -0
- package/dist/types/plugins/logging_plugin.d.ts +104 -0
- package/dist/types/plugins/plugin_manager.d.ts +155 -0
- package/dist/types/plugins/security_plugin.d.ts +60 -0
- package/dist/types/runner/in_memory_runner.d.ts +15 -0
- package/dist/types/runner/runner.d.ts +80 -0
- package/dist/types/sessions/base_session_service.d.ts +129 -0
- package/dist/types/sessions/in_memory_session_service.d.ts +32 -0
- package/dist/types/sessions/session.d.ts +46 -0
- package/dist/types/sessions/state.d.ts +57 -0
- package/dist/types/tools/agent_tool.d.ts +37 -0
- package/dist/types/tools/base_tool.d.ts +84 -0
- package/dist/types/tools/base_toolset.d.ts +64 -0
- package/dist/types/tools/forwarding_artifact_service.d.ts +21 -0
- package/dist/types/tools/function_tool.d.ts +48 -0
- package/dist/types/tools/google_search_tool.d.ts +18 -0
- package/dist/types/tools/long_running_tool.d.ts +18 -0
- package/dist/types/tools/mcp/mcp_session_manager.d.ts +57 -0
- package/dist/types/tools/mcp/mcp_tool.d.ts +30 -0
- package/dist/types/tools/mcp/mcp_toolset.d.ts +39 -0
- package/dist/types/tools/tool_confirmation.d.ts +25 -0
- package/dist/types/tools/tool_context.d.ts +63 -0
- package/dist/types/utils/deep_clone.d.ts +1 -0
- package/dist/types/utils/env_aware_utils.d.ts +31 -0
- package/dist/types/utils/gemini_schema_util.d.ts +23 -0
- package/dist/types/utils/logger.d.ts +41 -0
- package/dist/types/utils/model_name.d.ts +34 -0
- package/dist/types/utils/simple_zod_to_json.d.ts +12 -0
- package/dist/types/utils/variant_utils.d.ts +24 -0
- package/dist/types/version.d.ts +6 -0
- package/dist/web/agents/active_streaming_tool.js +14 -0
- package/dist/web/agents/base_agent.js +265 -0
- package/dist/web/agents/base_llm_processor.js +13 -0
- package/dist/web/agents/callback_context.js +68 -0
- package/dist/web/agents/content_processor_utils.js +268 -0
- package/dist/web/agents/functions.js +353 -0
- package/dist/web/agents/instructions.js +80 -0
- package/dist/web/agents/invocation_context.js +78 -0
- package/dist/web/agents/live_request_queue.js +124 -0
- package/dist/web/agents/llm_agent.js +973 -0
- package/dist/web/agents/loop_agent.js +71 -0
- package/dist/web/agents/parallel_agent.js +83 -0
- package/dist/web/agents/readonly_context.js +38 -0
- package/dist/web/agents/run_config.js +43 -0
- package/dist/web/agents/sequential_agent.js +99 -0
- package/dist/web/agents/transcription_entry.js +5 -0
- package/dist/web/artifacts/base_artifact_service.js +5 -0
- package/dist/web/artifacts/in_memory_artifact_service.js +89 -0
- package/dist/web/auth/auth_credential.js +16 -0
- package/dist/web/auth/auth_handler.js +62 -0
- package/dist/web/auth/auth_schemes.js +31 -0
- package/dist/web/auth/auth_tool.js +5 -0
- package/dist/web/auth/credential_service/base_credential_service.js +5 -0
- package/dist/web/auth/credential_service/in_memory_credential_service.js +33 -0
- package/dist/web/code_executors/base_code_executor.js +46 -0
- package/dist/web/code_executors/built_in_code_executor.js +28 -0
- package/dist/web/code_executors/code_execution_utils.js +105 -0
- package/dist/web/code_executors/code_executor_context.js +168 -0
- package/dist/web/common.js +85 -0
- package/dist/web/events/event.js +90 -0
- package/dist/web/events/event_actions.js +67 -0
- package/dist/web/examples/base_example_provider.js +10 -0
- package/dist/web/examples/example.js +5 -0
- package/dist/web/examples/example_util.js +75 -0
- package/dist/web/index.js +13 -0
- package/dist/web/index.js.map +7 -0
- package/dist/web/index_web.js +6 -0
- package/dist/web/memory/base_memory_service.js +5 -0
- package/dist/web/memory/in_memory_memory_service.js +67 -0
- package/dist/web/memory/memory_entry.js +5 -0
- package/dist/web/models/base_llm.js +47 -0
- package/dist/web/models/base_llm_connection.js +5 -0
- package/dist/web/models/gemini_llm_connection.js +120 -0
- package/dist/web/models/google_llm.js +332 -0
- package/dist/web/models/llm_request.js +50 -0
- package/dist/web/models/llm_response.js +41 -0
- package/dist/web/models/registry.js +91 -0
- package/dist/web/plugins/base_plugin.js +206 -0
- package/dist/web/plugins/logging_plugin.js +192 -0
- package/dist/web/plugins/plugin_manager.js +209 -0
- package/dist/web/plugins/security_plugin.js +119 -0
- package/dist/web/runner/in_memory_runner.js +28 -0
- package/dist/web/runner/runner.js +277 -0
- package/dist/web/sessions/base_session_service.js +41 -0
- package/dist/web/sessions/in_memory_session_service.js +154 -0
- package/dist/web/sessions/session.js +18 -0
- package/dist/web/sessions/state.js +87 -0
- package/dist/web/tools/agent_tool.js +118 -0
- package/dist/web/tools/base_tool.js +77 -0
- package/dist/web/tools/base_toolset.js +46 -0
- package/dist/web/tools/forwarding_artifact_service.js +41 -0
- package/dist/web/tools/function_tool.js +71 -0
- package/dist/web/tools/google_search_tool.js +46 -0
- package/dist/web/tools/long_running_tool.js +50 -0
- package/dist/web/tools/mcp/mcp_session_manager.js +35 -0
- package/dist/web/tools/mcp/mcp_tool.js +35 -0
- package/dist/web/tools/mcp/mcp_toolset.js +31 -0
- package/dist/web/tools/tool_confirmation.js +19 -0
- package/dist/web/tools/tool_context.js +99 -0
- package/dist/web/utils/deep_clone.js +14 -0
- package/dist/web/utils/env_aware_utils.js +49 -0
- package/dist/web/utils/gemini_schema_util.js +58 -0
- package/dist/web/utils/logger.js +89 -0
- package/dist/web/utils/model_name.js +31 -0
- package/dist/web/utils/simple_zod_to_json.js +174 -0
- package/dist/web/utils/variant_utils.js +24 -0
- package/dist/web/version.js +9 -0
- package/package.json +61 -0
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
11
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
12
|
+
var __export = (target, all) => {
|
|
13
|
+
for (var name in all)
|
|
14
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
15
|
+
};
|
|
16
|
+
var __copyProps = (to, from, except, desc) => {
|
|
17
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
18
|
+
for (let key of __getOwnPropNames(from))
|
|
19
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
20
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
21
|
+
}
|
|
22
|
+
return to;
|
|
23
|
+
};
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var google_llm_exports = {};
|
|
26
|
+
__export(google_llm_exports, {
|
|
27
|
+
Gemini: () => Gemini
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(google_llm_exports);
|
|
30
|
+
var import_genai = require("@google/genai");
|
|
31
|
+
var import_env_aware_utils = require("../utils/env_aware_utils.js");
|
|
32
|
+
var import_logger = require("../utils/logger.js");
|
|
33
|
+
var import_variant_utils = require("../utils/variant_utils.js");
|
|
34
|
+
var import_version = require("../version.js");
|
|
35
|
+
var import_base_llm = require("./base_llm.js");
|
|
36
|
+
var import_gemini_llm_connection = require("./gemini_llm_connection.js");
|
|
37
|
+
var import_llm_response = require("./llm_response.js");
|
|
38
|
+
/**
|
|
39
|
+
* @license
|
|
40
|
+
* Copyright 2025 Google LLC
|
|
41
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
42
|
+
*/
|
|
43
|
+
const AGENT_ENGINE_TELEMETRY_TAG = "remote_reasoning_engine";
|
|
44
|
+
const AGENT_ENGINE_TELEMETRY_ENV_VARIABLE_NAME = "GOOGLE_CLOUD_AGENT_ENGINE_ID";
|
|
45
|
+
class Gemini extends import_base_llm.BaseLlm {
|
|
46
|
+
/**
|
|
47
|
+
* @param params The parameters for creating a Gemini instance.
|
|
48
|
+
*/
|
|
49
|
+
constructor({
|
|
50
|
+
model = "gemini-2.5-flash",
|
|
51
|
+
apiKey,
|
|
52
|
+
vertexai,
|
|
53
|
+
project,
|
|
54
|
+
location,
|
|
55
|
+
headers
|
|
56
|
+
} = {}) {
|
|
57
|
+
super(model);
|
|
58
|
+
this.project = project;
|
|
59
|
+
this.location = location;
|
|
60
|
+
this.apiKey = apiKey;
|
|
61
|
+
this.headers = headers;
|
|
62
|
+
const canReadEnv = typeof process === "object";
|
|
63
|
+
this.vertexai = !!vertexai;
|
|
64
|
+
if (!this.vertexai && canReadEnv) {
|
|
65
|
+
const vertexAIfromEnv = process.env["GOOGLE_GENAI_USE_VERTEXAI"];
|
|
66
|
+
if (vertexAIfromEnv) {
|
|
67
|
+
this.vertexai = vertexAIfromEnv.toLowerCase() === "true" || vertexAIfromEnv === "1";
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (this.vertexai) {
|
|
71
|
+
if (canReadEnv && !this.project) {
|
|
72
|
+
this.project = process.env["GOOGLE_CLOUD_PROJECT"];
|
|
73
|
+
}
|
|
74
|
+
if (canReadEnv && !this.location) {
|
|
75
|
+
this.location = process.env["GOOGLE_CLOUD_LOCATION"];
|
|
76
|
+
}
|
|
77
|
+
if (!this.project) {
|
|
78
|
+
throw new Error(
|
|
79
|
+
"VertexAI project must be provided via constructor or GOOGLE_CLOUD_PROJECT environment variable."
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
if (!this.location) {
|
|
83
|
+
throw new Error(
|
|
84
|
+
"VertexAI location must be provided via constructor or GOOGLE_CLOUD_LOCATION environment variable."
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
} else {
|
|
88
|
+
if (!this.apiKey && canReadEnv) {
|
|
89
|
+
this.apiKey = process.env["GOOGLE_GENAI_API_KEY"] || process.env["GEMINI_API_KEY"];
|
|
90
|
+
}
|
|
91
|
+
if (!this.apiKey) {
|
|
92
|
+
throw new Error(
|
|
93
|
+
"API key must be provided via constructor or GOOGLE_GENAI_API_KEY or GEMINI_API_KEY environment variable."
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Sends a request to the Gemini model.
|
|
100
|
+
*
|
|
101
|
+
* @param llmRequest LlmRequest, the request to send to the Gemini model.
|
|
102
|
+
* @param stream bool = false, whether to do streaming call.
|
|
103
|
+
* @yields LlmResponse: The model response.
|
|
104
|
+
*/
|
|
105
|
+
async *generateContentAsync(llmRequest, stream = false) {
|
|
106
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
107
|
+
this.preprocessRequest(llmRequest);
|
|
108
|
+
this.maybeAppendUserContent(llmRequest);
|
|
109
|
+
import_logger.logger.info(
|
|
110
|
+
`Sending out request, model: ${llmRequest.model}, backend: ${this.apiBackend}, stream: ${stream}`
|
|
111
|
+
);
|
|
112
|
+
if ((_a = llmRequest.config) == null ? void 0 : _a.httpOptions) {
|
|
113
|
+
llmRequest.config.httpOptions.headers = {
|
|
114
|
+
...llmRequest.config.httpOptions.headers,
|
|
115
|
+
...this.trackingHeaders
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
if (stream) {
|
|
119
|
+
const streamResult = await this.apiClient.models.generateContentStream({
|
|
120
|
+
model: (_b = llmRequest.model) != null ? _b : this.model,
|
|
121
|
+
contents: llmRequest.contents,
|
|
122
|
+
config: llmRequest.config
|
|
123
|
+
});
|
|
124
|
+
let thoughtText = "";
|
|
125
|
+
let text = "";
|
|
126
|
+
let usageMetadata;
|
|
127
|
+
let lastResponse;
|
|
128
|
+
for await (const response of streamResult) {
|
|
129
|
+
lastResponse = response;
|
|
130
|
+
const llmResponse = (0, import_llm_response.createLlmResponse)(response);
|
|
131
|
+
usageMetadata = llmResponse.usageMetadata;
|
|
132
|
+
const firstPart = (_d = (_c = llmResponse.content) == null ? void 0 : _c.parts) == null ? void 0 : _d[0];
|
|
133
|
+
if (firstPart == null ? void 0 : firstPart.text) {
|
|
134
|
+
if ("thought" in firstPart && firstPart.thought) {
|
|
135
|
+
thoughtText += firstPart.text;
|
|
136
|
+
} else {
|
|
137
|
+
text += firstPart.text;
|
|
138
|
+
}
|
|
139
|
+
llmResponse.partial = true;
|
|
140
|
+
} else if ((thoughtText || text) && (!firstPart || !firstPart.inlineData)) {
|
|
141
|
+
const parts = [];
|
|
142
|
+
if (thoughtText) {
|
|
143
|
+
parts.push({ text: thoughtText, thought: true });
|
|
144
|
+
}
|
|
145
|
+
if (text) {
|
|
146
|
+
parts.push((0, import_genai.createPartFromText)(text));
|
|
147
|
+
}
|
|
148
|
+
yield {
|
|
149
|
+
content: {
|
|
150
|
+
role: "model",
|
|
151
|
+
parts
|
|
152
|
+
},
|
|
153
|
+
usageMetadata: llmResponse.usageMetadata
|
|
154
|
+
};
|
|
155
|
+
thoughtText = "";
|
|
156
|
+
text = "";
|
|
157
|
+
}
|
|
158
|
+
yield llmResponse;
|
|
159
|
+
}
|
|
160
|
+
if ((text || thoughtText) && ((_f = (_e = lastResponse == null ? void 0 : lastResponse.candidates) == null ? void 0 : _e[0]) == null ? void 0 : _f.finishReason) === import_genai.FinishReason.STOP) {
|
|
161
|
+
const parts = [];
|
|
162
|
+
if (thoughtText) {
|
|
163
|
+
parts.push({ text: thoughtText, thought: true });
|
|
164
|
+
}
|
|
165
|
+
if (text) {
|
|
166
|
+
parts.push({ text });
|
|
167
|
+
}
|
|
168
|
+
yield {
|
|
169
|
+
content: {
|
|
170
|
+
role: "model",
|
|
171
|
+
parts
|
|
172
|
+
},
|
|
173
|
+
usageMetadata
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
} else {
|
|
177
|
+
const response = await this.apiClient.models.generateContent({
|
|
178
|
+
model: (_g = llmRequest.model) != null ? _g : this.model,
|
|
179
|
+
contents: llmRequest.contents,
|
|
180
|
+
config: llmRequest.config
|
|
181
|
+
});
|
|
182
|
+
yield (0, import_llm_response.createLlmResponse)(response);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
get apiClient() {
|
|
186
|
+
if (this._apiClient) {
|
|
187
|
+
return this._apiClient;
|
|
188
|
+
}
|
|
189
|
+
const combinedHeaders = {
|
|
190
|
+
...this.trackingHeaders,
|
|
191
|
+
...this.headers
|
|
192
|
+
};
|
|
193
|
+
if (this.vertexai) {
|
|
194
|
+
this._apiClient = new import_genai.GoogleGenAI({
|
|
195
|
+
vertexai: this.vertexai,
|
|
196
|
+
project: this.project,
|
|
197
|
+
location: this.location,
|
|
198
|
+
httpOptions: { headers: combinedHeaders }
|
|
199
|
+
});
|
|
200
|
+
} else {
|
|
201
|
+
this._apiClient = new import_genai.GoogleGenAI({
|
|
202
|
+
apiKey: this.apiKey,
|
|
203
|
+
httpOptions: { headers: combinedHeaders }
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
return this._apiClient;
|
|
207
|
+
}
|
|
208
|
+
get apiBackend() {
|
|
209
|
+
if (!this._apiBackend) {
|
|
210
|
+
this._apiBackend = this.apiClient.vertexai ? import_variant_utils.GoogleLLMVariant.VERTEX_AI : import_variant_utils.GoogleLLMVariant.GEMINI_API;
|
|
211
|
+
}
|
|
212
|
+
return this._apiBackend;
|
|
213
|
+
}
|
|
214
|
+
get trackingHeaders() {
|
|
215
|
+
if (!this._trackingHeaders) {
|
|
216
|
+
let frameworkLabel = `google-adk/${import_version.version}`;
|
|
217
|
+
if (!(0, import_env_aware_utils.isBrowser)() && process.env[AGENT_ENGINE_TELEMETRY_ENV_VARIABLE_NAME]) {
|
|
218
|
+
frameworkLabel = `${frameworkLabel}+${AGENT_ENGINE_TELEMETRY_TAG}`;
|
|
219
|
+
}
|
|
220
|
+
const languageLabel = `gl-typescript/${(0, import_env_aware_utils.isBrowser)() ? window.navigator.userAgent : process.version}`;
|
|
221
|
+
const versionHeaderValue = `${frameworkLabel} ${languageLabel}`;
|
|
222
|
+
this._trackingHeaders = {
|
|
223
|
+
"x-goog-api-client": versionHeaderValue,
|
|
224
|
+
"user-agent": versionHeaderValue
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
return this._trackingHeaders;
|
|
228
|
+
}
|
|
229
|
+
get liveApiVersion() {
|
|
230
|
+
if (!this._liveApiVersion) {
|
|
231
|
+
this._liveApiVersion = this.apiBackend === import_variant_utils.GoogleLLMVariant.VERTEX_AI ? "v1beta1" : "v1alpha";
|
|
232
|
+
}
|
|
233
|
+
return this._liveApiVersion;
|
|
234
|
+
}
|
|
235
|
+
get liveApiClient() {
|
|
236
|
+
if (!this._liveApiClient) {
|
|
237
|
+
this._liveApiClient = new import_genai.GoogleGenAI({
|
|
238
|
+
apiKey: this.apiKey,
|
|
239
|
+
httpOptions: {
|
|
240
|
+
headers: this.trackingHeaders,
|
|
241
|
+
apiVersion: this.liveApiVersion
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
return this._liveApiClient;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Connects to the Gemini model and returns an llm connection.
|
|
249
|
+
*
|
|
250
|
+
* @param llmRequest LlmRequest, the request to send to the Gemini model.
|
|
251
|
+
* @returns BaseLlmConnection, the connection to the Gemini model.
|
|
252
|
+
*/
|
|
253
|
+
async connect(llmRequest) {
|
|
254
|
+
var _a, _b, _c, _d;
|
|
255
|
+
if ((_a = llmRequest.liveConnectConfig) == null ? void 0 : _a.httpOptions) {
|
|
256
|
+
if (!llmRequest.liveConnectConfig.httpOptions.headers) {
|
|
257
|
+
llmRequest.liveConnectConfig.httpOptions.headers = {};
|
|
258
|
+
}
|
|
259
|
+
Object.assign(
|
|
260
|
+
llmRequest.liveConnectConfig.httpOptions.headers,
|
|
261
|
+
this.trackingHeaders
|
|
262
|
+
);
|
|
263
|
+
llmRequest.liveConnectConfig.httpOptions.apiVersion = this.liveApiVersion;
|
|
264
|
+
}
|
|
265
|
+
if ((_b = llmRequest.config) == null ? void 0 : _b.systemInstruction) {
|
|
266
|
+
llmRequest.liveConnectConfig.systemInstruction = {
|
|
267
|
+
role: "system",
|
|
268
|
+
// TODO - b/425992518: validate type casting works well.
|
|
269
|
+
parts: [(0, import_genai.createPartFromText)(llmRequest.config.systemInstruction)]
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
llmRequest.liveConnectConfig.tools = (_c = llmRequest.config) == null ? void 0 : _c.tools;
|
|
273
|
+
const liveSession = await this.liveApiClient.live.connect({
|
|
274
|
+
model: (_d = llmRequest.model) != null ? _d : this.model,
|
|
275
|
+
config: llmRequest.liveConnectConfig,
|
|
276
|
+
callbacks: {
|
|
277
|
+
// TODO - b/425992518: GenAI SDK inconsistent API, missing methods.
|
|
278
|
+
onmessage: () => {
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
});
|
|
282
|
+
return new import_gemini_llm_connection.GeminiLlmConnection(liveSession);
|
|
283
|
+
}
|
|
284
|
+
preprocessRequest(llmRequest) {
|
|
285
|
+
if (this.apiBackend === import_variant_utils.GoogleLLMVariant.GEMINI_API) {
|
|
286
|
+
if (llmRequest.config) {
|
|
287
|
+
llmRequest.config.labels = void 0;
|
|
288
|
+
}
|
|
289
|
+
if (llmRequest.contents) {
|
|
290
|
+
for (const content of llmRequest.contents) {
|
|
291
|
+
if (!content.parts) continue;
|
|
292
|
+
for (const part of content.parts) {
|
|
293
|
+
removeDisplayNameIfPresent(part.inlineData);
|
|
294
|
+
removeDisplayNameIfPresent(part.fileData);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* A list of model name patterns that are supported by this LLM.
|
|
303
|
+
*
|
|
304
|
+
* @returns A list of supported models.
|
|
305
|
+
*/
|
|
306
|
+
Gemini.supportedModels = [
|
|
307
|
+
/gemini-.*/,
|
|
308
|
+
// fine-tuned vertex endpoint pattern
|
|
309
|
+
/projects\/.+\/locations\/.+\/endpoints\/.+/,
|
|
310
|
+
// vertex gemini long name
|
|
311
|
+
/projects\/.+\/locations\/.+\/publishers\/google\/models\/gemini.+/
|
|
312
|
+
];
|
|
313
|
+
function removeDisplayNameIfPresent(dataObj) {
|
|
314
|
+
if (dataObj && dataObj.displayName) {
|
|
315
|
+
dataObj.displayName = void 0;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
319
|
+
0 && (module.exports = {
|
|
320
|
+
Gemini
|
|
321
|
+
});
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
11
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
12
|
+
var __export = (target, all) => {
|
|
13
|
+
for (var name in all)
|
|
14
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
15
|
+
};
|
|
16
|
+
var __copyProps = (to, from, except, desc) => {
|
|
17
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
18
|
+
for (let key of __getOwnPropNames(from))
|
|
19
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
20
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
21
|
+
}
|
|
22
|
+
return to;
|
|
23
|
+
};
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var llm_request_exports = {};
|
|
26
|
+
__export(llm_request_exports, {
|
|
27
|
+
appendInstructions: () => appendInstructions,
|
|
28
|
+
appendTools: () => appendTools,
|
|
29
|
+
setOutputSchema: () => setOutputSchema
|
|
30
|
+
});
|
|
31
|
+
module.exports = __toCommonJS(llm_request_exports);
|
|
32
|
+
/**
|
|
33
|
+
* @license
|
|
34
|
+
* Copyright 2025 Google LLC
|
|
35
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
36
|
+
*/
|
|
37
|
+
function appendInstructions(llmRequest, instructions) {
|
|
38
|
+
if (!llmRequest.config) {
|
|
39
|
+
llmRequest.config = {};
|
|
40
|
+
}
|
|
41
|
+
const newInstructions = instructions.join("\n\n");
|
|
42
|
+
if (llmRequest.config.systemInstruction) {
|
|
43
|
+
llmRequest.config.systemInstruction += "\n\n" + newInstructions;
|
|
44
|
+
} else {
|
|
45
|
+
llmRequest.config.systemInstruction = newInstructions;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function appendTools(llmRequest, tools) {
|
|
49
|
+
if (!(tools == null ? void 0 : tools.length)) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const functionDeclarations = [];
|
|
53
|
+
for (const tool of tools) {
|
|
54
|
+
const declaration = tool._getDeclaration();
|
|
55
|
+
if (declaration) {
|
|
56
|
+
functionDeclarations.push(declaration);
|
|
57
|
+
llmRequest.toolsDict[tool.name] = tool;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (functionDeclarations.length) {
|
|
61
|
+
if (!llmRequest.config) {
|
|
62
|
+
llmRequest.config = {};
|
|
63
|
+
}
|
|
64
|
+
if (!llmRequest.config.tools) {
|
|
65
|
+
llmRequest.config.tools = [];
|
|
66
|
+
}
|
|
67
|
+
llmRequest.config.tools.push({ functionDeclarations });
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function setOutputSchema(llmRequest, schema) {
|
|
71
|
+
if (!llmRequest.config) {
|
|
72
|
+
llmRequest.config = {};
|
|
73
|
+
}
|
|
74
|
+
llmRequest.config.responseSchema = schema;
|
|
75
|
+
llmRequest.config.responseMimeType = "application/json";
|
|
76
|
+
}
|
|
77
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
78
|
+
0 && (module.exports = {
|
|
79
|
+
appendInstructions,
|
|
80
|
+
appendTools,
|
|
81
|
+
setOutputSchema
|
|
82
|
+
});
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
11
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
12
|
+
var __export = (target, all) => {
|
|
13
|
+
for (var name in all)
|
|
14
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
15
|
+
};
|
|
16
|
+
var __copyProps = (to, from, except, desc) => {
|
|
17
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
18
|
+
for (let key of __getOwnPropNames(from))
|
|
19
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
20
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
21
|
+
}
|
|
22
|
+
return to;
|
|
23
|
+
};
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var llm_response_exports = {};
|
|
26
|
+
__export(llm_response_exports, {
|
|
27
|
+
createLlmResponse: () => createLlmResponse
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(llm_response_exports);
|
|
30
|
+
/**
|
|
31
|
+
* @license
|
|
32
|
+
* Copyright 2025 Google LLC
|
|
33
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
34
|
+
*/
|
|
35
|
+
function createLlmResponse(response) {
|
|
36
|
+
var _a;
|
|
37
|
+
const usageMetadata = response.usageMetadata;
|
|
38
|
+
if (response.candidates && response.candidates.length > 0) {
|
|
39
|
+
const candidate = response.candidates[0];
|
|
40
|
+
if (((_a = candidate.content) == null ? void 0 : _a.parts) && candidate.content.parts.length > 0) {
|
|
41
|
+
return {
|
|
42
|
+
content: candidate.content,
|
|
43
|
+
groundingMetadata: candidate.groundingMetadata,
|
|
44
|
+
usageMetadata,
|
|
45
|
+
finishReason: candidate.finishReason
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
errorCode: candidate.finishReason,
|
|
50
|
+
errorMessage: candidate.finishMessage,
|
|
51
|
+
usageMetadata,
|
|
52
|
+
finishReason: candidate.finishReason
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
if (response.promptFeedback) {
|
|
56
|
+
return {
|
|
57
|
+
errorCode: response.promptFeedback.blockReason,
|
|
58
|
+
errorMessage: response.promptFeedback.blockReasonMessage,
|
|
59
|
+
usageMetadata
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
errorCode: "UNKNOWN_ERROR",
|
|
64
|
+
errorMessage: "Unknown error.",
|
|
65
|
+
usageMetadata
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
69
|
+
0 && (module.exports = {
|
|
70
|
+
createLlmResponse
|
|
71
|
+
});
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
11
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
12
|
+
var __export = (target, all) => {
|
|
13
|
+
for (var name in all)
|
|
14
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
15
|
+
};
|
|
16
|
+
var __copyProps = (to, from, except, desc) => {
|
|
17
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
18
|
+
for (let key of __getOwnPropNames(from))
|
|
19
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
20
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
21
|
+
}
|
|
22
|
+
return to;
|
|
23
|
+
};
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var registry_exports = {};
|
|
26
|
+
__export(registry_exports, {
|
|
27
|
+
LLMRegistry: () => LLMRegistry
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(registry_exports);
|
|
30
|
+
var import_logger = require("../utils/logger.js");
|
|
31
|
+
var import_google_llm = require("./google_llm.js");
|
|
32
|
+
/**
|
|
33
|
+
* @license
|
|
34
|
+
* Copyright 2025 Google LLC
|
|
35
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
36
|
+
*/
|
|
37
|
+
class LRUCache {
|
|
38
|
+
constructor(maxSize) {
|
|
39
|
+
this.maxSize = maxSize;
|
|
40
|
+
this.cache = /* @__PURE__ */ new Map();
|
|
41
|
+
}
|
|
42
|
+
get(key) {
|
|
43
|
+
const item = this.cache.get(key);
|
|
44
|
+
if (item) {
|
|
45
|
+
this.cache.delete(key);
|
|
46
|
+
this.cache.set(key, item);
|
|
47
|
+
}
|
|
48
|
+
return item;
|
|
49
|
+
}
|
|
50
|
+
set(key, value) {
|
|
51
|
+
if (this.cache.size >= this.maxSize && !this.cache.has(key)) {
|
|
52
|
+
const lruKey = this.cache.keys().next().value;
|
|
53
|
+
if (lruKey !== void 0) {
|
|
54
|
+
this.cache.delete(lruKey);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
this.cache.set(key, value);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const _LLMRegistry = class _LLMRegistry {
|
|
61
|
+
/**
|
|
62
|
+
* Creates a new LLM instance.
|
|
63
|
+
* @param model The model name.
|
|
64
|
+
* @returns The LLM instance.
|
|
65
|
+
*/
|
|
66
|
+
static newLlm(model) {
|
|
67
|
+
return new (_LLMRegistry.resolve(model))(model);
|
|
68
|
+
}
|
|
69
|
+
static _register(modelNameRegex, llmCls) {
|
|
70
|
+
if (_LLMRegistry.llmRegistryDict.has(modelNameRegex)) {
|
|
71
|
+
import_logger.logger.info(
|
|
72
|
+
`Updating LLM class for ${modelNameRegex} from ${_LLMRegistry.llmRegistryDict.get(modelNameRegex)} to ${llmCls}`
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
_LLMRegistry.llmRegistryDict.set(modelNameRegex, llmCls);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Registers a new LLM class.
|
|
79
|
+
* @param llmCls The class that implements the model.
|
|
80
|
+
*/
|
|
81
|
+
static register(llmCls) {
|
|
82
|
+
for (const regex of llmCls.supportedModels) {
|
|
83
|
+
_LLMRegistry._register(regex, llmCls);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Resolves the model to a BaseLlm subclass.
|
|
88
|
+
* @param model The model name.
|
|
89
|
+
* @returns The BaseLlm subclass.
|
|
90
|
+
* @throws If the model is not found.
|
|
91
|
+
*/
|
|
92
|
+
static resolve(model) {
|
|
93
|
+
const cachedLlm = _LLMRegistry.resolveCache.get(model);
|
|
94
|
+
if (cachedLlm) {
|
|
95
|
+
return cachedLlm;
|
|
96
|
+
}
|
|
97
|
+
for (const [regex, llmClass] of _LLMRegistry.llmRegistryDict.entries()) {
|
|
98
|
+
const pattern = new RegExp(
|
|
99
|
+
`^${regex instanceof RegExp ? regex.source : regex}$`,
|
|
100
|
+
regex instanceof RegExp ? regex.flags : void 0
|
|
101
|
+
);
|
|
102
|
+
if (pattern.test(model)) {
|
|
103
|
+
_LLMRegistry.resolveCache.set(model, llmClass);
|
|
104
|
+
return llmClass;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
throw new Error(`Model ${model} not found.`);
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* Key is the regex that matches the model name.
|
|
112
|
+
* Value is the class that implements the model.
|
|
113
|
+
*/
|
|
114
|
+
_LLMRegistry.llmRegistryDict = /* @__PURE__ */ new Map();
|
|
115
|
+
_LLMRegistry.resolveCache = new LRUCache(32);
|
|
116
|
+
let LLMRegistry = _LLMRegistry;
|
|
117
|
+
LLMRegistry.register(import_google_llm.Gemini);
|
|
118
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
119
|
+
0 && (module.exports = {
|
|
120
|
+
LLMRegistry
|
|
121
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type": "commonjs"}
|