@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,184 @@
|
|
|
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 in_memory_session_service_exports = {};
|
|
26
|
+
__export(in_memory_session_service_exports, {
|
|
27
|
+
InMemorySessionService: () => InMemorySessionService
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(in_memory_session_service_exports);
|
|
30
|
+
var import_deep_clone = require("../utils/deep_clone.js");
|
|
31
|
+
var import_env_aware_utils = require("../utils/env_aware_utils.js");
|
|
32
|
+
var import_logger = require("../utils/logger.js");
|
|
33
|
+
var import_base_session_service = require("./base_session_service.js");
|
|
34
|
+
var import_session = require("./session.js");
|
|
35
|
+
var import_state = require("./state.js");
|
|
36
|
+
/**
|
|
37
|
+
* @license
|
|
38
|
+
* Copyright 2025 Google LLC
|
|
39
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
40
|
+
*/
|
|
41
|
+
class InMemorySessionService extends import_base_session_service.BaseSessionService {
|
|
42
|
+
constructor() {
|
|
43
|
+
super(...arguments);
|
|
44
|
+
/**
|
|
45
|
+
* A map from app name to a map from user ID to a map from session ID to
|
|
46
|
+
* session.
|
|
47
|
+
*/
|
|
48
|
+
this.sessions = {};
|
|
49
|
+
/**
|
|
50
|
+
* A map from app name to a map from user ID to a map from key to the value.
|
|
51
|
+
*/
|
|
52
|
+
this.userState = {};
|
|
53
|
+
/**
|
|
54
|
+
* A map from app name to a map from key to the value.
|
|
55
|
+
*/
|
|
56
|
+
this.appState = {};
|
|
57
|
+
}
|
|
58
|
+
createSession({ appName, userId, state, sessionId }) {
|
|
59
|
+
const session = (0, import_session.createSession)({
|
|
60
|
+
id: sessionId || (0, import_env_aware_utils.randomUUID)(),
|
|
61
|
+
appName,
|
|
62
|
+
userId,
|
|
63
|
+
state,
|
|
64
|
+
events: [],
|
|
65
|
+
lastUpdateTime: Date.now()
|
|
66
|
+
});
|
|
67
|
+
if (!this.sessions[appName]) {
|
|
68
|
+
this.sessions[appName] = {};
|
|
69
|
+
}
|
|
70
|
+
if (!this.sessions[appName][userId]) {
|
|
71
|
+
this.sessions[appName][userId] = {};
|
|
72
|
+
}
|
|
73
|
+
this.sessions[appName][userId][session.id] = session;
|
|
74
|
+
return Promise.resolve(
|
|
75
|
+
this.mergeState(appName, userId, (0, import_deep_clone.deepClone)(session))
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
getSession({ appName, userId, sessionId, config }) {
|
|
79
|
+
if (!this.sessions[appName] || !this.sessions[appName][userId] || !this.sessions[appName][userId][sessionId]) {
|
|
80
|
+
return Promise.resolve(void 0);
|
|
81
|
+
}
|
|
82
|
+
const session = this.sessions[appName][userId][sessionId];
|
|
83
|
+
const copiedSession = (0, import_deep_clone.deepClone)(session);
|
|
84
|
+
if (config) {
|
|
85
|
+
if (config.numRecentEvents) {
|
|
86
|
+
copiedSession.events = copiedSession.events.slice(-config.numRecentEvents);
|
|
87
|
+
}
|
|
88
|
+
if (config.afterTimestamp) {
|
|
89
|
+
let i = copiedSession.events.length - 1;
|
|
90
|
+
while (i >= 0) {
|
|
91
|
+
if (copiedSession.events[i].timestamp < config.afterTimestamp) {
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
i--;
|
|
95
|
+
}
|
|
96
|
+
if (i >= 0) {
|
|
97
|
+
copiedSession.events = copiedSession.events.slice(i + 1);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return Promise.resolve(this.mergeState(appName, userId, copiedSession));
|
|
102
|
+
}
|
|
103
|
+
listSessions({ appName, userId }) {
|
|
104
|
+
if (!this.sessions[appName] || !this.sessions[appName][userId]) {
|
|
105
|
+
return Promise.resolve({ sessions: [] });
|
|
106
|
+
}
|
|
107
|
+
const sessionsWithoutEvents = [];
|
|
108
|
+
for (const session of Object.values(this.sessions[appName][userId])) {
|
|
109
|
+
sessionsWithoutEvents.push((0, import_session.createSession)({
|
|
110
|
+
id: session.id,
|
|
111
|
+
appName: session.appName,
|
|
112
|
+
userId: session.userId,
|
|
113
|
+
state: {},
|
|
114
|
+
events: [],
|
|
115
|
+
lastUpdateTime: session.lastUpdateTime
|
|
116
|
+
}));
|
|
117
|
+
}
|
|
118
|
+
return Promise.resolve({ sessions: sessionsWithoutEvents });
|
|
119
|
+
}
|
|
120
|
+
async deleteSession({ appName, userId, sessionId }) {
|
|
121
|
+
const session = await this.getSession({ appName, userId, sessionId });
|
|
122
|
+
if (!session) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
delete this.sessions[appName][userId][sessionId];
|
|
126
|
+
}
|
|
127
|
+
async appendEvent({ session, event }) {
|
|
128
|
+
await super.appendEvent({ session, event });
|
|
129
|
+
session.lastUpdateTime = event.timestamp;
|
|
130
|
+
const appName = session.appName;
|
|
131
|
+
const userId = session.userId;
|
|
132
|
+
const sessionId = session.id;
|
|
133
|
+
const warning = (message) => {
|
|
134
|
+
import_logger.logger.warn(`Failed to append event to session ${sessionId}: ${message}`);
|
|
135
|
+
};
|
|
136
|
+
if (!this.sessions[appName]) {
|
|
137
|
+
warning(`appName ${appName} not in sessions`);
|
|
138
|
+
return event;
|
|
139
|
+
}
|
|
140
|
+
if (!this.sessions[appName][userId]) {
|
|
141
|
+
warning(`userId ${userId} not in sessions[appName]`);
|
|
142
|
+
return event;
|
|
143
|
+
}
|
|
144
|
+
if (!this.sessions[appName][userId][sessionId]) {
|
|
145
|
+
warning(`sessionId ${sessionId} not in sessions[appName][userId]`);
|
|
146
|
+
return event;
|
|
147
|
+
}
|
|
148
|
+
if (event.actions && event.actions.stateDelta) {
|
|
149
|
+
for (const key of Object.keys(event.actions.stateDelta)) {
|
|
150
|
+
if (key.startsWith(import_state.State.APP_PREFIX)) {
|
|
151
|
+
this.appState[appName] = this.appState[appName] || {};
|
|
152
|
+
this.appState[appName][key.replace(import_state.State.APP_PREFIX, "")] = event.actions.stateDelta[key];
|
|
153
|
+
}
|
|
154
|
+
if (key.startsWith(import_state.State.USER_PREFIX)) {
|
|
155
|
+
this.userState[appName] = this.userState[appName] || {};
|
|
156
|
+
this.userState[appName][userId] = this.userState[appName][userId] || {};
|
|
157
|
+
this.userState[appName][userId][key.replace(import_state.State.USER_PREFIX, "")] = event.actions.stateDelta[key];
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
const storageSession = this.sessions[appName][userId][sessionId];
|
|
162
|
+
await super.appendEvent({ session: storageSession, event });
|
|
163
|
+
storageSession.lastUpdateTime = event.timestamp;
|
|
164
|
+
return event;
|
|
165
|
+
}
|
|
166
|
+
mergeState(appName, userId, copiedSession) {
|
|
167
|
+
if (this.appState[appName]) {
|
|
168
|
+
for (const key of Object.keys(this.appState[appName])) {
|
|
169
|
+
copiedSession.state[import_state.State.APP_PREFIX + key] = this.appState[appName][key];
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
if (!this.userState[appName] || !this.userState[appName][userId]) {
|
|
173
|
+
return copiedSession;
|
|
174
|
+
}
|
|
175
|
+
for (const key of Object.keys(this.userState[appName][userId])) {
|
|
176
|
+
copiedSession.state[import_state.State.USER_PREFIX + key] = this.userState[appName][userId][key];
|
|
177
|
+
}
|
|
178
|
+
return copiedSession;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
182
|
+
0 && (module.exports = {
|
|
183
|
+
InMemorySessionService
|
|
184
|
+
});
|
|
@@ -0,0 +1,48 @@
|
|
|
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 session_exports = {};
|
|
26
|
+
__export(session_exports, {
|
|
27
|
+
createSession: () => createSession
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(session_exports);
|
|
30
|
+
/**
|
|
31
|
+
* @license
|
|
32
|
+
* Copyright 2025 Google LLC
|
|
33
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
34
|
+
*/
|
|
35
|
+
function createSession(params) {
|
|
36
|
+
return {
|
|
37
|
+
id: params.id,
|
|
38
|
+
appName: params.appName,
|
|
39
|
+
userId: params.userId || "",
|
|
40
|
+
state: params.state || {},
|
|
41
|
+
events: params.events || [],
|
|
42
|
+
lastUpdateTime: params.lastUpdateTime || 0
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
46
|
+
0 && (module.exports = {
|
|
47
|
+
createSession
|
|
48
|
+
});
|
|
@@ -0,0 +1,101 @@
|
|
|
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 state_exports = {};
|
|
26
|
+
__export(state_exports, {
|
|
27
|
+
State: () => State
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(state_exports);
|
|
30
|
+
/**
|
|
31
|
+
* @license
|
|
32
|
+
* Copyright 2025 Google LLC
|
|
33
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
34
|
+
*/
|
|
35
|
+
class State {
|
|
36
|
+
constructor(value, delta) {
|
|
37
|
+
this.value = value;
|
|
38
|
+
this.delta = delta;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Returns the value of the state dict for the given key.
|
|
42
|
+
*
|
|
43
|
+
* @param key The key to get the value for.
|
|
44
|
+
* @param defaultValue The default value to return if the key is not found.
|
|
45
|
+
* @return The value of the state for the given key, or the default value if
|
|
46
|
+
* not found.
|
|
47
|
+
*/
|
|
48
|
+
get(key, defaultValue) {
|
|
49
|
+
if (key in this.delta) {
|
|
50
|
+
return this.delta[key];
|
|
51
|
+
}
|
|
52
|
+
if (key in this.value) {
|
|
53
|
+
return this.value[key];
|
|
54
|
+
}
|
|
55
|
+
return defaultValue;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Sets the value of the state dict for the given key.
|
|
59
|
+
*
|
|
60
|
+
* @param key The key to set the value for.
|
|
61
|
+
* @param value The value to set.
|
|
62
|
+
*/
|
|
63
|
+
set(key, value) {
|
|
64
|
+
this.value[key] = value;
|
|
65
|
+
this.delta[key] = value;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Whether the state has pending delta.
|
|
69
|
+
*/
|
|
70
|
+
has(key) {
|
|
71
|
+
return key in this.value || key in this.delta;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Whether the state has pending delta.
|
|
75
|
+
*/
|
|
76
|
+
hasDelta() {
|
|
77
|
+
return Object.keys(this.delta).length > 0;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Updates the state dict with the given delta.
|
|
81
|
+
*
|
|
82
|
+
* @param delta The delta to update the state with.
|
|
83
|
+
*/
|
|
84
|
+
update(delta) {
|
|
85
|
+
this.delta = { ...this.delta, ...delta };
|
|
86
|
+
this.value = { ...this.value, ...delta };
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Returns the state as a plain JSON object.
|
|
90
|
+
*/
|
|
91
|
+
toRecord() {
|
|
92
|
+
return { ...this.value, ...this.delta };
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
State.APP_PREFIX = "app:";
|
|
96
|
+
State.USER_PREFIX = "user:";
|
|
97
|
+
State.TEMP_PREFIX = "temp:";
|
|
98
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
99
|
+
0 && (module.exports = {
|
|
100
|
+
State
|
|
101
|
+
});
|
|
@@ -0,0 +1,134 @@
|
|
|
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 agent_tool_exports = {};
|
|
26
|
+
__export(agent_tool_exports, {
|
|
27
|
+
AgentTool: () => AgentTool
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(agent_tool_exports);
|
|
30
|
+
var import_genai = require("@google/genai");
|
|
31
|
+
var import_llm_agent = require("../agents/llm_agent.js");
|
|
32
|
+
var import_in_memory_memory_service = require("../memory/in_memory_memory_service.js");
|
|
33
|
+
var import_runner = require("../runner/runner.js");
|
|
34
|
+
var import_in_memory_session_service = require("../sessions/in_memory_session_service.js");
|
|
35
|
+
var import_variant_utils = require("../utils/variant_utils.js");
|
|
36
|
+
var import_base_tool = require("./base_tool.js");
|
|
37
|
+
var import_forwarding_artifact_service = require("./forwarding_artifact_service.js");
|
|
38
|
+
/**
|
|
39
|
+
* @license
|
|
40
|
+
* Copyright 2025 Google LLC
|
|
41
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
42
|
+
*/
|
|
43
|
+
class AgentTool extends import_base_tool.BaseTool {
|
|
44
|
+
constructor(config) {
|
|
45
|
+
super(
|
|
46
|
+
{ name: config.agent.name, description: config.agent.description || "" }
|
|
47
|
+
);
|
|
48
|
+
this.agent = config.agent;
|
|
49
|
+
this.skipSummarization = config.skipSummarization || false;
|
|
50
|
+
}
|
|
51
|
+
_getDeclaration() {
|
|
52
|
+
let declaration;
|
|
53
|
+
if (this.agent instanceof import_llm_agent.LlmAgent && this.agent.inputSchema) {
|
|
54
|
+
declaration = {
|
|
55
|
+
name: this.name,
|
|
56
|
+
description: this.description,
|
|
57
|
+
// TODO(b/425992518): We should not use the agent's input schema as is.
|
|
58
|
+
// It should be validated and possibly transformed. Consider similar
|
|
59
|
+
// logic to one we have in Python ADK.
|
|
60
|
+
parameters: this.agent.inputSchema
|
|
61
|
+
};
|
|
62
|
+
} else {
|
|
63
|
+
declaration = {
|
|
64
|
+
name: this.name,
|
|
65
|
+
description: this.description,
|
|
66
|
+
parameters: {
|
|
67
|
+
type: import_genai.Type.OBJECT,
|
|
68
|
+
properties: {
|
|
69
|
+
"request": {
|
|
70
|
+
type: import_genai.Type.STRING
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
required: ["request"]
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
if (this.apiVariant !== import_variant_utils.GoogleLLMVariant.GEMINI_API) {
|
|
78
|
+
const hasOutputSchema = this.agent instanceof import_llm_agent.LlmAgent && this.agent.outputSchema;
|
|
79
|
+
declaration.response = hasOutputSchema ? { type: import_genai.Type.OBJECT } : { type: import_genai.Type.STRING };
|
|
80
|
+
}
|
|
81
|
+
return declaration;
|
|
82
|
+
}
|
|
83
|
+
async runAsync({ args, toolContext }) {
|
|
84
|
+
var _a, _b;
|
|
85
|
+
if (this.skipSummarization) {
|
|
86
|
+
toolContext.actions.skipSummarization = true;
|
|
87
|
+
}
|
|
88
|
+
const hasInputSchema = this.agent instanceof import_llm_agent.LlmAgent && this.agent.inputSchema;
|
|
89
|
+
const content = {
|
|
90
|
+
role: "user",
|
|
91
|
+
parts: [
|
|
92
|
+
{
|
|
93
|
+
// TODO(b/425992518): Should be validated. Consider similar
|
|
94
|
+
// logic to one we have in Python ADK.
|
|
95
|
+
text: hasInputSchema ? JSON.stringify(args) : args["request"]
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
};
|
|
99
|
+
const runner = new import_runner.Runner({
|
|
100
|
+
appName: this.agent.name,
|
|
101
|
+
agent: this.agent,
|
|
102
|
+
artifactService: new import_forwarding_artifact_service.ForwardingArtifactService(toolContext),
|
|
103
|
+
sessionService: new import_in_memory_session_service.InMemorySessionService(),
|
|
104
|
+
memoryService: new import_in_memory_memory_service.InMemoryMemoryService(),
|
|
105
|
+
credentialService: toolContext.invocationContext.credentialService
|
|
106
|
+
});
|
|
107
|
+
const session = await runner.sessionService.createSession({
|
|
108
|
+
appName: this.agent.name,
|
|
109
|
+
userId: "tmp_user",
|
|
110
|
+
state: toolContext.state.toRecord()
|
|
111
|
+
});
|
|
112
|
+
let lastEvent;
|
|
113
|
+
for await (const event of runner.runAsync({
|
|
114
|
+
userId: session.userId,
|
|
115
|
+
sessionId: session.id,
|
|
116
|
+
newMessage: content
|
|
117
|
+
})) {
|
|
118
|
+
if (event.actions.stateDelta) {
|
|
119
|
+
toolContext.state.update(event.actions.stateDelta);
|
|
120
|
+
}
|
|
121
|
+
lastEvent = event;
|
|
122
|
+
}
|
|
123
|
+
if (!((_b = (_a = lastEvent == null ? void 0 : lastEvent.content) == null ? void 0 : _a.parts) == null ? void 0 : _b.length)) {
|
|
124
|
+
return "";
|
|
125
|
+
}
|
|
126
|
+
const hasOutputSchema = this.agent instanceof import_llm_agent.LlmAgent && this.agent.outputSchema;
|
|
127
|
+
const mergetText = lastEvent.content.parts.map((part) => part.text).filter((text) => text).join("\n");
|
|
128
|
+
return hasOutputSchema ? JSON.parse(mergetText) : mergetText;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
132
|
+
0 && (module.exports = {
|
|
133
|
+
AgentTool
|
|
134
|
+
});
|
|
@@ -0,0 +1,107 @@
|
|
|
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 base_tool_exports = {};
|
|
26
|
+
__export(base_tool_exports, {
|
|
27
|
+
BaseTool: () => BaseTool
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(base_tool_exports);
|
|
30
|
+
var import_variant_utils = require("../utils/variant_utils.js");
|
|
31
|
+
/**
|
|
32
|
+
* @license
|
|
33
|
+
* Copyright 2025 Google LLC
|
|
34
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
35
|
+
*/
|
|
36
|
+
class BaseTool {
|
|
37
|
+
/**
|
|
38
|
+
* Base constructor for a tool.
|
|
39
|
+
*
|
|
40
|
+
* @param params The parameters for `BaseTool`.
|
|
41
|
+
*/
|
|
42
|
+
constructor(params) {
|
|
43
|
+
var _a;
|
|
44
|
+
this.name = params.name;
|
|
45
|
+
this.description = params.description;
|
|
46
|
+
this.isLongRunning = (_a = params.isLongRunning) != null ? _a : false;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Gets the OpenAPI specification of this tool in the form of a
|
|
50
|
+
* FunctionDeclaration.
|
|
51
|
+
*
|
|
52
|
+
* NOTE
|
|
53
|
+
* - Required if subclass uses the default implementation of
|
|
54
|
+
* `processLlmRequest` to add function declaration to LLM request.
|
|
55
|
+
* - Otherwise, can be skipped, e.g. for a built-in GoogleSearch tool for
|
|
56
|
+
* Gemini.
|
|
57
|
+
*
|
|
58
|
+
* @return The FunctionDeclaration of this tool, or undefined if it doesn't
|
|
59
|
+
* need to be added to LlmRequest.config.
|
|
60
|
+
*/
|
|
61
|
+
_getDeclaration() {
|
|
62
|
+
return void 0;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Processes the outgoing LLM request for this tool.
|
|
66
|
+
*
|
|
67
|
+
* Use cases:
|
|
68
|
+
* - Most common use case is adding this tool to the LLM request.
|
|
69
|
+
* - Some tools may just preprocess the LLM request before it's sent out.
|
|
70
|
+
*
|
|
71
|
+
* @param request The request to process the LLM request.
|
|
72
|
+
*/
|
|
73
|
+
async processLlmRequest({ toolContext, llmRequest }) {
|
|
74
|
+
const functionDeclaration = this._getDeclaration();
|
|
75
|
+
if (!functionDeclaration) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
llmRequest.toolsDict[this.name] = this;
|
|
79
|
+
const tool = findToolWithFunctionDeclarations(llmRequest);
|
|
80
|
+
if (tool) {
|
|
81
|
+
if (!tool.functionDeclarations) {
|
|
82
|
+
tool.functionDeclarations = [];
|
|
83
|
+
}
|
|
84
|
+
tool.functionDeclarations.push(functionDeclaration);
|
|
85
|
+
} else {
|
|
86
|
+
llmRequest.config = llmRequest.config || {};
|
|
87
|
+
llmRequest.config.tools = llmRequest.config.tools || [];
|
|
88
|
+
llmRequest.config.tools.push({
|
|
89
|
+
functionDeclarations: [functionDeclaration]
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* The Google API LLM variant to use.
|
|
95
|
+
*/
|
|
96
|
+
get apiVariant() {
|
|
97
|
+
return (0, import_variant_utils.getGoogleLlmVariant)();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function findToolWithFunctionDeclarations(llmRequest) {
|
|
101
|
+
var _a;
|
|
102
|
+
return (((_a = llmRequest.config) == null ? void 0 : _a.tools) || []).find((tool) => "functionDeclarations" in tool);
|
|
103
|
+
}
|
|
104
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
105
|
+
0 && (module.exports = {
|
|
106
|
+
BaseTool
|
|
107
|
+
});
|
|
@@ -0,0 +1,76 @@
|
|
|
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 base_toolset_exports = {};
|
|
26
|
+
__export(base_toolset_exports, {
|
|
27
|
+
BaseToolset: () => BaseToolset
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(base_toolset_exports);
|
|
30
|
+
/**
|
|
31
|
+
* @license
|
|
32
|
+
* Copyright 2025 Google LLC
|
|
33
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
34
|
+
*/
|
|
35
|
+
class BaseToolset {
|
|
36
|
+
constructor(toolFilter) {
|
|
37
|
+
this.toolFilter = toolFilter;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Returns whether the tool should be exposed to LLM.
|
|
41
|
+
*
|
|
42
|
+
* @param tool The tool to check.
|
|
43
|
+
* @param context Context used to filter tools available to the agent.
|
|
44
|
+
* @return Whether the tool should be exposed to LLM.
|
|
45
|
+
*/
|
|
46
|
+
isToolSelected(tool, context) {
|
|
47
|
+
if (!this.toolFilter) {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
if (typeof this.toolFilter === "function") {
|
|
51
|
+
return this.toolFilter(tool, context);
|
|
52
|
+
}
|
|
53
|
+
if (Array.isArray(this.toolFilter)) {
|
|
54
|
+
return this.toolFilter.includes(tool.name);
|
|
55
|
+
}
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Processes the outgoing LLM request for this toolset. This method will be
|
|
60
|
+
* called before each tool processes the llm request.
|
|
61
|
+
*
|
|
62
|
+
* Use cases:
|
|
63
|
+
* - Instead of let each tool process the llm request, we can let the toolset
|
|
64
|
+
* process the llm request. e.g. ComputerUseToolset can add computer use
|
|
65
|
+
* tool to the llm request.
|
|
66
|
+
*
|
|
67
|
+
* @param toolContext The context of the tool.
|
|
68
|
+
* @param llmRequest The outgoing LLM request, mutable this method.
|
|
69
|
+
*/
|
|
70
|
+
async processLlmRequest(toolContext, llmRequest) {
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
74
|
+
0 && (module.exports = {
|
|
75
|
+
BaseToolset
|
|
76
|
+
});
|