@google/adk 0.2.4 → 0.3.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/dist/cjs/agents/base_agent.js +52 -24
- package/dist/cjs/agents/callback_context.js +4 -1
- package/dist/cjs/agents/content_processor_utils.js +15 -7
- package/dist/cjs/agents/functions.js +79 -29
- package/dist/cjs/agents/invocation_context.js +3 -1
- package/dist/cjs/agents/llm_agent.js +188 -108
- package/dist/cjs/agents/loop_agent.js +18 -6
- package/dist/cjs/agents/parallel_agent.js +20 -7
- package/dist/cjs/agents/readonly_context.js +4 -1
- package/dist/cjs/agents/sequential_agent.js +34 -12
- package/dist/cjs/artifacts/gcs_artifact_service.js +28 -20
- package/dist/cjs/artifacts/in_memory_artifact_service.js +18 -4
- package/dist/cjs/auth/auth_handler.js +3 -1
- package/dist/cjs/code_executors/base_code_executor.js +14 -2
- package/dist/cjs/code_executors/built_in_code_executor.js +21 -5
- package/dist/cjs/code_executors/code_executor_context.js +5 -5
- package/dist/cjs/common.js +45 -0
- package/dist/cjs/events/event.js +1 -3
- package/dist/cjs/examples/base_example_provider.js +18 -2
- package/dist/cjs/examples/example_util.js +1 -1
- package/dist/cjs/index.js +19 -19
- package/dist/cjs/index.js.map +4 -4
- package/dist/cjs/memory/in_memory_memory_service.js +3 -1
- package/dist/cjs/models/base_llm.js +8 -4
- package/dist/cjs/models/gemini_llm_connection.js +1 -0
- package/dist/cjs/models/google_llm.js +3 -3
- package/dist/cjs/plugins/base_plugin.js +71 -49
- package/dist/cjs/plugins/logging_plugin.js +50 -13
- package/dist/cjs/plugins/plugin_manager.js +56 -24
- package/dist/cjs/plugins/security_plugin.js +5 -2
- package/dist/cjs/runner/runner.js +126 -101
- package/dist/cjs/sessions/in_memory_session_service.js +38 -14
- package/dist/cjs/telemetry/google_cloud.js +7 -9
- package/dist/cjs/telemetry/setup.js +15 -7
- package/dist/cjs/telemetry/tracing.js +37 -15
- package/dist/cjs/tools/agent_tool.js +26 -13
- package/dist/cjs/tools/base_tool.js +19 -7
- package/dist/cjs/tools/forwarding_artifact_service.js +1 -1
- package/dist/cjs/tools/function_tool.js +15 -7
- package/dist/cjs/tools/google_search_tool.js +8 -4
- package/dist/cjs/tools/mcp/mcp_session_manager.js +16 -10
- package/dist/cjs/tools/mcp/mcp_tool.js +1 -3
- package/dist/cjs/tools/mcp/mcp_toolset.js +1 -1
- package/dist/cjs/tools/tool_context.js +4 -9
- package/dist/cjs/utils/env_aware_utils.js +1 -1
- package/dist/cjs/utils/gemini_schema_util.js +10 -4
- package/dist/cjs/utils/logger.js +47 -3
- package/dist/cjs/utils/simple_zod_to_json.js +100 -141
- package/dist/cjs/utils/variant_utils.js +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/agents/base_agent.js +57 -25
- package/dist/esm/agents/callback_context.js +4 -1
- package/dist/esm/agents/content_processor_utils.js +25 -9
- package/dist/esm/agents/functions.js +83 -29
- package/dist/esm/agents/invocation_context.js +3 -1
- package/dist/esm/agents/llm_agent.js +228 -116
- package/dist/esm/agents/loop_agent.js +16 -5
- package/dist/esm/agents/parallel_agent.js +18 -6
- package/dist/esm/agents/readonly_context.js +4 -1
- package/dist/esm/agents/sequential_agent.js +33 -12
- package/dist/esm/artifacts/gcs_artifact_service.js +28 -20
- package/dist/esm/artifacts/in_memory_artifact_service.js +18 -4
- package/dist/esm/auth/auth_handler.js +3 -1
- package/dist/esm/code_executors/base_code_executor.js +12 -1
- package/dist/esm/code_executors/built_in_code_executor.js +19 -4
- package/dist/esm/code_executors/code_executor_context.js +5 -5
- package/dist/esm/common.js +56 -11
- package/dist/esm/events/event.js +1 -3
- package/dist/esm/examples/base_example_provider.js +16 -1
- package/dist/esm/examples/example_util.js +4 -2
- package/dist/esm/index.js +19 -19
- package/dist/esm/index.js.map +4 -4
- package/dist/esm/memory/in_memory_memory_service.js +3 -1
- package/dist/esm/models/base_llm.js +8 -4
- package/dist/esm/models/gemini_llm_connection.js +1 -0
- package/dist/esm/models/google_llm.js +8 -4
- package/dist/esm/plugins/base_plugin.js +71 -49
- package/dist/esm/plugins/logging_plugin.js +55 -14
- package/dist/esm/plugins/plugin_manager.js +56 -24
- package/dist/esm/plugins/security_plugin.js +5 -2
- package/dist/esm/runner/runner.js +139 -105
- package/dist/esm/sessions/in_memory_session_service.js +41 -15
- package/dist/esm/telemetry/google_cloud.js +7 -9
- package/dist/esm/telemetry/setup.js +23 -9
- package/dist/esm/telemetry/tracing.js +37 -15
- package/dist/esm/tools/agent_tool.js +25 -13
- package/dist/esm/tools/base_tool.js +17 -6
- package/dist/esm/tools/forwarding_artifact_service.js +1 -1
- package/dist/esm/tools/function_tool.js +13 -8
- package/dist/esm/tools/google_search_tool.js +6 -3
- package/dist/esm/tools/long_running_tool.js +3 -1
- package/dist/esm/tools/mcp/mcp_session_manager.js +22 -12
- package/dist/esm/tools/mcp/mcp_tool.js +1 -3
- package/dist/esm/tools/mcp/mcp_toolset.js +1 -1
- package/dist/esm/tools/tool_context.js +4 -9
- package/dist/esm/utils/env_aware_utils.js +1 -1
- package/dist/esm/utils/gemini_schema_util.js +10 -4
- package/dist/esm/utils/logger.js +43 -2
- package/dist/esm/utils/simple_zod_to_json.js +102 -141
- package/dist/esm/utils/variant_utils.js +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/types/agents/base_agent.d.ts +16 -4
- package/dist/types/agents/callback_context.d.ts +1 -1
- package/dist/types/agents/invocation_context.d.ts +4 -2
- package/dist/types/agents/llm_agent.d.ts +43 -31
- package/dist/types/agents/loop_agent.d.ts +17 -1
- package/dist/types/agents/parallel_agent.d.ts +17 -1
- package/dist/types/agents/sequential_agent.d.ts +17 -1
- package/dist/types/artifacts/in_memory_artifact_service.d.ts +3 -3
- package/dist/types/auth/auth_schemes.d.ts +5 -2
- package/dist/types/code_executors/base_code_executor.d.ts +14 -0
- package/dist/types/code_executors/built_in_code_executor.d.ts +20 -1
- package/dist/types/code_executors/code_executor_context.d.ts +2 -4
- package/dist/types/common.d.ts +40 -15
- package/dist/types/examples/base_example_provider.d.ts +16 -0
- package/dist/types/index.d.ts +3 -3
- package/dist/types/models/base_llm_connection.d.ts +1 -1
- package/dist/types/models/llm_response.d.ts +1 -1
- package/dist/types/plugins/base_plugin.d.ts +50 -40
- package/dist/types/plugins/logging_plugin.d.ts +12 -12
- package/dist/types/plugins/plugin_manager.d.ts +12 -12
- package/dist/types/plugins/security_plugin.d.ts +1 -1
- package/dist/types/runner/runner.d.ts +18 -10
- package/dist/types/sessions/in_memory_session_service.d.ts +5 -5
- package/dist/types/telemetry/setup.d.ts +1 -1
- package/dist/types/telemetry/tracing.d.ts +7 -6
- package/dist/types/tools/agent_tool.d.ts +15 -1
- package/dist/types/tools/base_tool.d.ts +15 -1
- package/dist/types/tools/base_toolset.d.ts +2 -1
- package/dist/types/tools/forwarding_artifact_service.d.ts +2 -2
- package/dist/types/tools/function_tool.d.ts +18 -4
- package/dist/types/tools/google_search_tool.d.ts +5 -6
- package/dist/types/tools/mcp/mcp_session_manager.d.ts +10 -3
- package/dist/types/tools/mcp/mcp_toolset.d.ts +1 -2
- package/dist/types/tools/tool_context.d.ts +1 -1
- package/dist/types/utils/gemini_schema_util.d.ts +4 -12
- package/dist/types/utils/logger.d.ts +11 -10
- package/dist/types/utils/simple_zod_to_json.d.ts +5 -4
- package/dist/types/version.d.ts +1 -1
- package/dist/web/agents/base_agent.js +103 -36
- package/dist/web/agents/callback_context.js +4 -1
- package/dist/web/agents/content_processor_utils.js +25 -9
- package/dist/web/agents/functions.js +83 -29
- package/dist/web/agents/invocation_context.js +3 -1
- package/dist/web/agents/llm_agent.js +282 -137
- package/dist/web/agents/loop_agent.js +16 -5
- package/dist/web/agents/parallel_agent.js +18 -6
- package/dist/web/agents/readonly_context.js +4 -1
- package/dist/web/agents/sequential_agent.js +33 -12
- package/dist/web/artifacts/gcs_artifact_service.js +25 -17
- package/dist/web/artifacts/in_memory_artifact_service.js +18 -4
- package/dist/web/auth/auth_handler.js +3 -1
- package/dist/web/code_executors/base_code_executor.js +12 -1
- package/dist/web/code_executors/built_in_code_executor.js +19 -4
- package/dist/web/code_executors/code_executor_context.js +5 -5
- package/dist/web/common.js +56 -11
- package/dist/web/events/event.js +1 -3
- package/dist/web/examples/base_example_provider.js +16 -1
- package/dist/web/examples/example_util.js +4 -2
- package/dist/web/index.js +1 -1
- package/dist/web/index.js.map +4 -4
- package/dist/web/memory/in_memory_memory_service.js +3 -1
- package/dist/web/models/base_llm.js +8 -4
- package/dist/web/models/gemini_llm_connection.js +1 -0
- package/dist/web/models/google_llm.js +8 -4
- package/dist/web/plugins/base_plugin.js +71 -49
- package/dist/web/plugins/logging_plugin.js +55 -14
- package/dist/web/plugins/plugin_manager.js +56 -24
- package/dist/web/plugins/security_plugin.js +5 -2
- package/dist/web/runner/runner.js +186 -119
- package/dist/web/sessions/in_memory_session_service.js +41 -15
- package/dist/web/telemetry/google_cloud.js +7 -9
- package/dist/web/telemetry/setup.js +23 -9
- package/dist/web/telemetry/tracing.js +37 -15
- package/dist/web/tools/agent_tool.js +25 -13
- package/dist/web/tools/base_tool.js +17 -6
- package/dist/web/tools/forwarding_artifact_service.js +1 -1
- package/dist/web/tools/function_tool.js +13 -8
- package/dist/web/tools/google_search_tool.js +6 -3
- package/dist/web/tools/long_running_tool.js +3 -1
- package/dist/web/tools/mcp/mcp_session_manager.js +22 -12
- package/dist/web/tools/mcp/mcp_tool.js +1 -3
- package/dist/web/tools/mcp/mcp_toolset.js +1 -1
- package/dist/web/tools/tool_context.js +4 -9
- package/dist/web/utils/env_aware_utils.js +1 -1
- package/dist/web/utils/gemini_schema_util.js +10 -4
- package/dist/web/utils/logger.js +43 -2
- package/dist/web/utils/simple_zod_to_json.js +102 -155
- package/dist/web/utils/variant_utils.js +1 -1
- package/dist/web/version.js +1 -1
- package/package.json +5 -3
|
@@ -3,25 +3,33 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
var _a, _b;
|
|
6
7
|
import { Type } from "@google/genai";
|
|
7
|
-
import {
|
|
8
|
+
import { isLlmAgent } from "../agents/llm_agent.js";
|
|
8
9
|
import { InMemoryMemoryService } from "../memory/in_memory_memory_service.js";
|
|
9
10
|
import { Runner } from "../runner/runner.js";
|
|
10
11
|
import { InMemorySessionService } from "../sessions/in_memory_session_service.js";
|
|
11
12
|
import { GoogleLLMVariant } from "../utils/variant_utils.js";
|
|
12
13
|
import { BaseTool } from "./base_tool.js";
|
|
13
14
|
import { ForwardingArtifactService } from "./forwarding_artifact_service.js";
|
|
14
|
-
|
|
15
|
+
const AGENT_TOOL_SIGNATURE_SYMBOL = Symbol.for("google.adk.agentTool");
|
|
16
|
+
function isAgentTool(obj) {
|
|
17
|
+
return typeof obj === "object" && obj !== null && AGENT_TOOL_SIGNATURE_SYMBOL in obj && obj[AGENT_TOOL_SIGNATURE_SYMBOL] === true;
|
|
18
|
+
}
|
|
19
|
+
class AgentTool extends (_b = BaseTool, _a = AGENT_TOOL_SIGNATURE_SYMBOL, _b) {
|
|
15
20
|
constructor(config) {
|
|
16
|
-
super(
|
|
17
|
-
|
|
18
|
-
|
|
21
|
+
super({
|
|
22
|
+
name: config.agent.name,
|
|
23
|
+
description: config.agent.description || ""
|
|
24
|
+
});
|
|
25
|
+
/** A unique symbol to identify ADK agent tool class. */
|
|
26
|
+
this[_a] = true;
|
|
19
27
|
this.agent = config.agent;
|
|
20
28
|
this.skipSummarization = config.skipSummarization || false;
|
|
21
29
|
}
|
|
22
30
|
_getDeclaration() {
|
|
23
31
|
let declaration;
|
|
24
|
-
if (this.agent
|
|
32
|
+
if (isLlmAgent(this.agent) && this.agent.inputSchema) {
|
|
25
33
|
declaration = {
|
|
26
34
|
name: this.name,
|
|
27
35
|
description: this.description,
|
|
@@ -46,17 +54,20 @@ class AgentTool extends BaseTool {
|
|
|
46
54
|
};
|
|
47
55
|
}
|
|
48
56
|
if (this.apiVariant !== GoogleLLMVariant.GEMINI_API) {
|
|
49
|
-
const hasOutputSchema = this.agent
|
|
57
|
+
const hasOutputSchema = isLlmAgent(this.agent) && this.agent.outputSchema;
|
|
50
58
|
declaration.response = hasOutputSchema ? { type: Type.OBJECT } : { type: Type.STRING };
|
|
51
59
|
}
|
|
52
60
|
return declaration;
|
|
53
61
|
}
|
|
54
|
-
async runAsync({
|
|
55
|
-
|
|
62
|
+
async runAsync({
|
|
63
|
+
args,
|
|
64
|
+
toolContext
|
|
65
|
+
}) {
|
|
66
|
+
var _a2, _b2;
|
|
56
67
|
if (this.skipSummarization) {
|
|
57
68
|
toolContext.actions.skipSummarization = true;
|
|
58
69
|
}
|
|
59
|
-
const hasInputSchema = this.agent
|
|
70
|
+
const hasInputSchema = isLlmAgent(this.agent) && this.agent.inputSchema;
|
|
60
71
|
const content = {
|
|
61
72
|
role: "user",
|
|
62
73
|
parts: [
|
|
@@ -91,14 +102,15 @@ class AgentTool extends BaseTool {
|
|
|
91
102
|
}
|
|
92
103
|
lastEvent = event;
|
|
93
104
|
}
|
|
94
|
-
if (!((
|
|
105
|
+
if (!((_b2 = (_a2 = lastEvent == null ? void 0 : lastEvent.content) == null ? void 0 : _a2.parts) == null ? void 0 : _b2.length)) {
|
|
95
106
|
return "";
|
|
96
107
|
}
|
|
97
|
-
const hasOutputSchema = this.agent
|
|
108
|
+
const hasOutputSchema = isLlmAgent(this.agent) && this.agent.outputSchema;
|
|
98
109
|
const mergedText = lastEvent.content.parts.map((part) => part.text).filter((text) => text).join("\n");
|
|
99
110
|
return hasOutputSchema ? JSON.parse(mergedText) : mergedText;
|
|
100
111
|
}
|
|
101
112
|
}
|
|
102
113
|
export {
|
|
103
|
-
AgentTool
|
|
114
|
+
AgentTool,
|
|
115
|
+
isAgentTool
|
|
104
116
|
};
|
|
@@ -3,7 +3,13 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
var _a;
|
|
6
7
|
import { getGoogleLlmVariant } from "../utils/variant_utils.js";
|
|
8
|
+
const BASE_TOOL_SIGNATURE_SYMBOL = Symbol.for("google.adk.baseTool");
|
|
9
|
+
function isBaseTool(obj) {
|
|
10
|
+
return typeof obj === "object" && obj !== null && BASE_TOOL_SIGNATURE_SYMBOL in obj && obj[BASE_TOOL_SIGNATURE_SYMBOL] === true;
|
|
11
|
+
}
|
|
12
|
+
_a = BASE_TOOL_SIGNATURE_SYMBOL;
|
|
7
13
|
class BaseTool {
|
|
8
14
|
/**
|
|
9
15
|
* Base constructor for a tool.
|
|
@@ -11,10 +17,12 @@ class BaseTool {
|
|
|
11
17
|
* @param params The parameters for `BaseTool`.
|
|
12
18
|
*/
|
|
13
19
|
constructor(params) {
|
|
14
|
-
|
|
20
|
+
/** A unique symbol to identify ADK base tool class. */
|
|
21
|
+
this[_a] = true;
|
|
22
|
+
var _a2;
|
|
15
23
|
this.name = params.name;
|
|
16
24
|
this.description = params.description;
|
|
17
|
-
this.isLongRunning = (
|
|
25
|
+
this.isLongRunning = (_a2 = params.isLongRunning) != null ? _a2 : false;
|
|
18
26
|
}
|
|
19
27
|
/**
|
|
20
28
|
* Gets the OpenAPI specification of this tool in the form of a
|
|
@@ -41,7 +49,7 @@ class BaseTool {
|
|
|
41
49
|
*
|
|
42
50
|
* @param request The request to process the LLM request.
|
|
43
51
|
*/
|
|
44
|
-
async processLlmRequest({
|
|
52
|
+
async processLlmRequest({ llmRequest }) {
|
|
45
53
|
const functionDeclaration = this._getDeclaration();
|
|
46
54
|
if (!functionDeclaration) {
|
|
47
55
|
return;
|
|
@@ -69,9 +77,12 @@ class BaseTool {
|
|
|
69
77
|
}
|
|
70
78
|
}
|
|
71
79
|
function findToolWithFunctionDeclarations(llmRequest) {
|
|
72
|
-
var
|
|
73
|
-
return (((
|
|
80
|
+
var _a2;
|
|
81
|
+
return (((_a2 = llmRequest.config) == null ? void 0 : _a2.tools) || []).find(
|
|
82
|
+
(tool) => "functionDeclarations" in tool
|
|
83
|
+
);
|
|
74
84
|
}
|
|
75
85
|
export {
|
|
76
|
-
BaseTool
|
|
86
|
+
BaseTool,
|
|
87
|
+
isBaseTool
|
|
77
88
|
};
|
|
@@ -16,7 +16,7 @@ class ForwardingArtifactService {
|
|
|
16
16
|
async loadArtifact(request) {
|
|
17
17
|
return this.toolContext.loadArtifact(request.filename, request.version);
|
|
18
18
|
}
|
|
19
|
-
async listArtifactKeys(
|
|
19
|
+
async listArtifactKeys() {
|
|
20
20
|
return this.toolContext.listArtifacts();
|
|
21
21
|
}
|
|
22
22
|
async deleteArtifact(request) {
|
|
@@ -3,10 +3,8 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
var _a, _b;
|
|
6
7
|
import { Type } from "@google/genai";
|
|
7
|
-
import {
|
|
8
|
-
ZodObject
|
|
9
|
-
} from "zod";
|
|
10
8
|
import { isZodObject, zodObjectToSchema } from "../utils/simple_zod_to_json.js";
|
|
11
9
|
import { BaseTool } from "./base_tool.js";
|
|
12
10
|
function toSchema(parameters) {
|
|
@@ -18,14 +16,18 @@ function toSchema(parameters) {
|
|
|
18
16
|
}
|
|
19
17
|
return parameters;
|
|
20
18
|
}
|
|
21
|
-
|
|
19
|
+
const FUNCTION_TOOL_SIGNATURE_SYMBOL = Symbol.for("google.adk.functionTool");
|
|
20
|
+
function isFunctionTool(obj) {
|
|
21
|
+
return typeof obj === "object" && obj !== null && FUNCTION_TOOL_SIGNATURE_SYMBOL in obj && obj[FUNCTION_TOOL_SIGNATURE_SYMBOL] === true;
|
|
22
|
+
}
|
|
23
|
+
class FunctionTool extends (_b = BaseTool, _a = FUNCTION_TOOL_SIGNATURE_SYMBOL, _b) {
|
|
22
24
|
/**
|
|
23
25
|
* The constructor acts as the user-friendly factory.
|
|
24
26
|
* @param options The configuration for the tool.
|
|
25
27
|
*/
|
|
26
28
|
constructor(options) {
|
|
27
|
-
var
|
|
28
|
-
const name = (
|
|
29
|
+
var _a2;
|
|
30
|
+
const name = (_a2 = options.name) != null ? _a2 : options.execute.name;
|
|
29
31
|
if (!name) {
|
|
30
32
|
throw new Error(
|
|
31
33
|
"Tool name cannot be empty. Either name the `execute` function or provide a `name`."
|
|
@@ -36,6 +38,8 @@ class FunctionTool extends BaseTool {
|
|
|
36
38
|
description: options.description,
|
|
37
39
|
isLongRunning: options.isLongRunning
|
|
38
40
|
});
|
|
41
|
+
/** A unique symbol to identify ADK function tool class. */
|
|
42
|
+
this[_a] = true;
|
|
39
43
|
this.execute = options.execute;
|
|
40
44
|
this.parameters = options.parameters;
|
|
41
45
|
}
|
|
@@ -55,7 +59,7 @@ class FunctionTool extends BaseTool {
|
|
|
55
59
|
async runAsync(req) {
|
|
56
60
|
try {
|
|
57
61
|
let validatedArgs = req.args;
|
|
58
|
-
if (this.parameters
|
|
62
|
+
if (isZodObject(this.parameters)) {
|
|
59
63
|
validatedArgs = this.parameters.parse(req.args);
|
|
60
64
|
}
|
|
61
65
|
return await this.execute(
|
|
@@ -69,5 +73,6 @@ class FunctionTool extends BaseTool {
|
|
|
69
73
|
}
|
|
70
74
|
}
|
|
71
75
|
export {
|
|
72
|
-
FunctionTool
|
|
76
|
+
FunctionTool,
|
|
77
|
+
isFunctionTool
|
|
73
78
|
};
|
|
@@ -9,10 +9,12 @@ class GoogleSearchTool extends BaseTool {
|
|
|
9
9
|
constructor() {
|
|
10
10
|
super({ name: "google_search", description: "Google Search Tool" });
|
|
11
11
|
}
|
|
12
|
-
runAsync(
|
|
12
|
+
runAsync() {
|
|
13
13
|
return Promise.resolve();
|
|
14
14
|
}
|
|
15
|
-
async processLlmRequest({
|
|
15
|
+
async processLlmRequest({
|
|
16
|
+
llmRequest
|
|
17
|
+
}) {
|
|
16
18
|
if (!llmRequest.model) {
|
|
17
19
|
return;
|
|
18
20
|
}
|
|
@@ -42,5 +44,6 @@ class GoogleSearchTool extends BaseTool {
|
|
|
42
44
|
}
|
|
43
45
|
const GOOGLE_SEARCH = new GoogleSearchTool();
|
|
44
46
|
export {
|
|
45
|
-
GOOGLE_SEARCH
|
|
47
|
+
GOOGLE_SEARCH,
|
|
48
|
+
GoogleSearchTool
|
|
46
49
|
};
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
FunctionTool
|
|
8
|
+
} from "./function_tool.js";
|
|
7
9
|
const LONG_RUNNING_INSTRUCTION = `
|
|
8
10
|
|
|
9
11
|
NOTE: This is a long-running operation. Do not call this tool again if it has already returned some intermediate or pending status.`;
|
|
@@ -4,13 +4,18 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
7
|
-
import {
|
|
8
|
-
|
|
7
|
+
import {
|
|
8
|
+
StdioClientTransport
|
|
9
|
+
} from "@modelcontextprotocol/sdk/client/stdio.js";
|
|
10
|
+
import {
|
|
11
|
+
StreamableHTTPClientTransport
|
|
12
|
+
} from "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
|
9
13
|
class MCPSessionManager {
|
|
10
14
|
constructor(connectionParams) {
|
|
11
15
|
this.connectionParams = connectionParams;
|
|
12
16
|
}
|
|
13
17
|
async createSession() {
|
|
18
|
+
var _a;
|
|
14
19
|
const client = new Client({ name: "MCPClient", version: "1.0.0" });
|
|
15
20
|
switch (this.connectionParams.type) {
|
|
16
21
|
case "StdioConnectionParams":
|
|
@@ -18,20 +23,25 @@ class MCPSessionManager {
|
|
|
18
23
|
new StdioClientTransport(this.connectionParams.serverParams)
|
|
19
24
|
);
|
|
20
25
|
break;
|
|
21
|
-
case "StreamableHTTPConnectionParams":
|
|
22
|
-
const
|
|
23
|
-
|
|
26
|
+
case "StreamableHTTPConnectionParams": {
|
|
27
|
+
const options = (_a = this.connectionParams.transportOptions) != null ? _a : {};
|
|
28
|
+
if (!options.requestInit && this.connectionParams.header !== void 0) {
|
|
29
|
+
options.requestInit = {
|
|
24
30
|
headers: this.connectionParams.header
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
await client.connect(
|
|
28
|
-
new
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
await client.connect(
|
|
34
|
+
new StreamableHTTPClientTransport(
|
|
35
|
+
new URL(this.connectionParams.url),
|
|
36
|
+
options
|
|
37
|
+
)
|
|
38
|
+
);
|
|
31
39
|
break;
|
|
32
|
-
|
|
40
|
+
}
|
|
41
|
+
default: {
|
|
33
42
|
const _exhaustiveCheck = this.connectionParams;
|
|
34
43
|
break;
|
|
44
|
+
}
|
|
35
45
|
}
|
|
36
46
|
return client;
|
|
37
47
|
}
|
|
@@ -12,8 +12,7 @@ class MCPTool extends BaseTool {
|
|
|
12
12
|
this.mcpSessionManager = mcpSessionManager;
|
|
13
13
|
}
|
|
14
14
|
_getDeclaration() {
|
|
15
|
-
|
|
16
|
-
declaration = {
|
|
15
|
+
return {
|
|
17
16
|
name: this.mcpTool.name,
|
|
18
17
|
description: this.mcpTool.description,
|
|
19
18
|
parameters: toGeminiSchema(this.mcpTool.inputSchema),
|
|
@@ -21,7 +20,6 @@ class MCPTool extends BaseTool {
|
|
|
21
20
|
// https://modelcontextprotocol.io/specification/2025-06-18/server/tools#tool-result
|
|
22
21
|
response: toGeminiSchema(this.mcpTool.outputSchema)
|
|
23
22
|
};
|
|
24
|
-
return declaration;
|
|
25
23
|
}
|
|
26
24
|
async runAsync(request) {
|
|
27
25
|
const session = await this.mcpSessionManager.createSession();
|
|
@@ -12,7 +12,7 @@ class MCPToolset extends BaseToolset {
|
|
|
12
12
|
super(toolFilter);
|
|
13
13
|
this.mcpSessionManager = new MCPSessionManager(connectionParams);
|
|
14
14
|
}
|
|
15
|
-
async getTools(
|
|
15
|
+
async getTools() {
|
|
16
16
|
const session = await this.mcpSessionManager.createSession();
|
|
17
17
|
const listResult = await session.listTools();
|
|
18
18
|
logger.debug(`number of tools: ${listResult.tools.length}`);
|
|
@@ -18,15 +18,10 @@ class ToolContext extends CallbackContext {
|
|
|
18
18
|
* @param params.toolConfirmation The tool confirmation of the current tool
|
|
19
19
|
* call.
|
|
20
20
|
*/
|
|
21
|
-
constructor({
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
toolConfirmation
|
|
26
|
-
}) {
|
|
27
|
-
super({ invocationContext, eventActions });
|
|
28
|
-
this.functionCallId = functionCallId;
|
|
29
|
-
this.toolConfirmation = toolConfirmation;
|
|
21
|
+
constructor(params) {
|
|
22
|
+
super(params);
|
|
23
|
+
this.functionCallId = params.functionCallId;
|
|
24
|
+
this.toolConfirmation = params.toolConfirmation;
|
|
30
25
|
}
|
|
31
26
|
get actions() {
|
|
32
27
|
return this.eventActions;
|
|
@@ -5,12 +5,13 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Type } from "@google/genai";
|
|
7
7
|
import { z } from "zod";
|
|
8
|
-
const
|
|
8
|
+
const MCPToolSchemaObject = z.object({
|
|
9
9
|
type: z.literal("object"),
|
|
10
|
-
properties: z.record(z.unknown()).optional(),
|
|
10
|
+
properties: z.record(z.string(), z.unknown()).optional(),
|
|
11
11
|
required: z.string().array().optional()
|
|
12
12
|
});
|
|
13
13
|
function toGeminiType(mcpType) {
|
|
14
|
+
if (!mcpType) return Type.TYPE_UNSPECIFIED;
|
|
14
15
|
switch (mcpType.toLowerCase()) {
|
|
15
16
|
case "text":
|
|
16
17
|
case "string":
|
|
@@ -51,12 +52,17 @@ function toGeminiSchema(mcpSchema) {
|
|
|
51
52
|
}
|
|
52
53
|
}
|
|
53
54
|
const geminiType = toGeminiType(mcp.type);
|
|
54
|
-
const geminiSchema = {
|
|
55
|
+
const geminiSchema = {
|
|
56
|
+
type: geminiType,
|
|
57
|
+
description: mcp.description
|
|
58
|
+
};
|
|
55
59
|
if (geminiType === Type.OBJECT) {
|
|
56
60
|
geminiSchema.properties = {};
|
|
57
61
|
if (mcp.properties) {
|
|
58
62
|
for (const name in mcp.properties) {
|
|
59
|
-
geminiSchema.properties[name] = recursiveConvert(
|
|
63
|
+
geminiSchema.properties[name] = recursiveConvert(
|
|
64
|
+
mcp.properties[name]
|
|
65
|
+
);
|
|
60
66
|
}
|
|
61
67
|
}
|
|
62
68
|
geminiSchema.required = mcp.required;
|
package/dist/esm/utils/logger.js
CHANGED
|
@@ -61,6 +61,18 @@ class SimpleLogger {
|
|
|
61
61
|
console.error(getColoredPrefix(3 /* ERROR */), ...args);
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
+
class NoOpLogger {
|
|
65
|
+
log(_level, ..._args) {
|
|
66
|
+
}
|
|
67
|
+
debug(..._args) {
|
|
68
|
+
}
|
|
69
|
+
info(..._args) {
|
|
70
|
+
}
|
|
71
|
+
warn(..._args) {
|
|
72
|
+
}
|
|
73
|
+
error(..._args) {
|
|
74
|
+
}
|
|
75
|
+
}
|
|
64
76
|
const LOG_LEVEL_STR = {
|
|
65
77
|
[0 /* DEBUG */]: "DEBUG",
|
|
66
78
|
[1 /* INFO */]: "INFO",
|
|
@@ -81,9 +93,38 @@ const RESET_COLOR = "\x1B[0m";
|
|
|
81
93
|
function getColoredPrefix(level) {
|
|
82
94
|
return `${CONSOLE_COLOR_MAP[level]}[ADK ${LOG_LEVEL_STR[level]}]:${RESET_COLOR}`;
|
|
83
95
|
}
|
|
84
|
-
|
|
96
|
+
let currentLogger = new SimpleLogger();
|
|
97
|
+
function setLogger(customLogger) {
|
|
98
|
+
currentLogger = customLogger != null ? customLogger : new NoOpLogger();
|
|
99
|
+
}
|
|
100
|
+
function getLogger() {
|
|
101
|
+
return currentLogger;
|
|
102
|
+
}
|
|
103
|
+
function resetLogger() {
|
|
104
|
+
currentLogger = new SimpleLogger();
|
|
105
|
+
}
|
|
106
|
+
const logger = {
|
|
107
|
+
log(level, ...args) {
|
|
108
|
+
currentLogger.log(level, ...args);
|
|
109
|
+
},
|
|
110
|
+
debug(...args) {
|
|
111
|
+
currentLogger.debug(...args);
|
|
112
|
+
},
|
|
113
|
+
info(...args) {
|
|
114
|
+
currentLogger.info(...args);
|
|
115
|
+
},
|
|
116
|
+
warn(...args) {
|
|
117
|
+
currentLogger.warn(...args);
|
|
118
|
+
},
|
|
119
|
+
error(...args) {
|
|
120
|
+
currentLogger.error(...args);
|
|
121
|
+
}
|
|
122
|
+
};
|
|
85
123
|
export {
|
|
86
124
|
LogLevel,
|
|
125
|
+
getLogger,
|
|
87
126
|
logger,
|
|
88
|
-
|
|
127
|
+
resetLogger,
|
|
128
|
+
setLogLevel,
|
|
129
|
+
setLogger
|
|
89
130
|
};
|