@google/adk 2.3.0 → 2.4.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.
Files changed (162) hide show
  1. package/dist/cjs/agents/agent_engine_client.js +172 -0
  2. package/dist/cjs/agents/base_agent.js +20 -4
  3. package/dist/cjs/agents/functions.js +28 -0
  4. package/dist/cjs/agents/instructions.js +2 -1
  5. package/dist/cjs/agents/llm_agent.js +19 -6
  6. package/dist/cjs/agents/processors/basic_llm_request_processor.js +1 -1
  7. package/dist/cjs/agents/processors/code_execution_request_processor.js +8 -0
  8. package/dist/cjs/agents/processors/content_processor_utils.js +38 -10
  9. package/dist/cjs/agents/processors/content_request_processor.js +34 -2
  10. package/dist/cjs/agents/processors/instructions_llm_request_processor.js +1 -1
  11. package/dist/cjs/agents/processors/nl_planning_processor.js +12 -3
  12. package/dist/cjs/cli/utils/logs.js +6 -6
  13. package/dist/cjs/code_executors/container_code_executor.js +27 -16
  14. package/dist/cjs/code_executors/unsafe_local_code_executor.js +6 -1
  15. package/dist/cjs/common.js +9 -20
  16. package/dist/cjs/errors/input_validation_error.js +3 -2
  17. package/dist/cjs/index.js +9 -2
  18. package/dist/cjs/plugins/base_plugin.js +13 -23
  19. package/dist/cjs/sessions/base_session_service.js +14 -8
  20. package/dist/cjs/sessions/database_session_service.js +50 -28
  21. package/dist/cjs/sessions/stale_session_error.js +59 -0
  22. package/dist/cjs/skills/loader.js +52 -18
  23. package/dist/cjs/telemetry/setup.js +0 -1
  24. package/dist/cjs/telemetry/tracing.js +53 -10
  25. package/dist/cjs/tools/apihub_tool/apihub_toolset.js +18 -23
  26. package/dist/cjs/tools/application_integration_tool/application_integration_toolset.js +120 -42
  27. package/dist/cjs/tools/application_integration_tool/clients/connections_client.js +163 -95
  28. package/dist/cjs/tools/application_integration_tool/clients/integration_client.js +13 -9
  29. package/dist/cjs/tools/application_integration_tool/integration_connector_tool.js +184 -0
  30. package/dist/cjs/tools/google_api_tool/google_api_tool.js +4 -1
  31. package/dist/cjs/tools/google_api_tool/google_api_toolset.js +173 -0
  32. package/dist/cjs/tools/google_api_tool/google_api_toolsets.js +124 -0
  33. package/dist/cjs/tools/google_api_tool/googleapi_to_openapi_converter.js +2 -2
  34. package/dist/cjs/tools/google_api_tool/index.js +20 -23
  35. package/dist/cjs/tools/load_artifacts_tool.js +12 -6
  36. package/dist/cjs/tools/load_memory_tool.js +12 -10
  37. package/dist/cjs/tools/mcp/mcp_toolset.js +1 -14
  38. package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/oauth2_exchanger.js +2 -2
  39. package/dist/cjs/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +20 -6
  40. package/dist/cjs/tools/openapi_tool/openapi_spec_parser/operation_parser.js +17 -6
  41. package/dist/cjs/tools/openapi_tool/openapi_toolset.js +7 -13
  42. package/dist/cjs/tools/openapi_tool/rest_api_tool.js +17 -1
  43. package/dist/cjs/tools/toolbox_toolset.js +174 -0
  44. package/dist/cjs/tools/webmcp/webmcp_toolset.js +1 -14
  45. package/dist/cjs/utils/client_labels.js +19 -2
  46. package/dist/cjs/utils/failover_utils.js +1 -1
  47. package/dist/cjs/utils/gemini_schema_util.js +24 -6
  48. package/dist/cjs/utils/logger_node.js +4 -0
  49. package/dist/cjs/utils/output_schema_utils.js +5 -2
  50. package/dist/cjs/utils/task.js +1 -1
  51. package/dist/cjs/version.js +1 -1
  52. package/dist/esm/agents/agent_engine_client.js +144 -0
  53. package/dist/esm/agents/base_agent.js +20 -4
  54. package/dist/esm/agents/functions.js +28 -0
  55. package/dist/esm/agents/instructions.js +2 -1
  56. package/dist/esm/agents/llm_agent.js +19 -6
  57. package/dist/esm/agents/processors/basic_llm_request_processor.js +1 -1
  58. package/dist/esm/agents/processors/code_execution_request_processor.js +8 -0
  59. package/dist/esm/agents/processors/content_processor_utils.js +38 -10
  60. package/dist/esm/agents/processors/content_request_processor.js +34 -2
  61. package/dist/esm/agents/processors/instructions_llm_request_processor.js +1 -1
  62. package/dist/esm/agents/processors/nl_planning_processor.js +12 -3
  63. package/dist/esm/cli/utils/logs.js +4 -4
  64. package/dist/esm/code_executors/container_code_executor.js +27 -16
  65. package/dist/esm/code_executors/unsafe_local_code_executor.js +6 -1
  66. package/dist/esm/common.js +10 -13
  67. package/dist/esm/errors/input_validation_error.js +3 -2
  68. package/dist/esm/index.js +17 -3
  69. package/dist/esm/plugins/base_plugin.js +13 -23
  70. package/dist/esm/sessions/base_session_service.js +12 -7
  71. package/dist/esm/sessions/database_session_service.js +49 -28
  72. package/dist/esm/sessions/stale_session_error.js +31 -0
  73. package/dist/esm/skills/loader.js +51 -17
  74. package/dist/esm/telemetry/setup.js +1 -2
  75. package/dist/esm/telemetry/tracing.js +57 -11
  76. package/dist/esm/tools/apihub_tool/apihub_toolset.js +17 -22
  77. package/dist/esm/tools/application_integration_tool/application_integration_toolset.js +124 -42
  78. package/dist/esm/tools/application_integration_tool/clients/connections_client.js +163 -95
  79. package/dist/esm/tools/application_integration_tool/clients/integration_client.js +13 -9
  80. package/dist/esm/tools/application_integration_tool/integration_connector_tool.js +158 -0
  81. package/dist/esm/tools/google_api_tool/google_api_tool.js +4 -1
  82. package/dist/esm/tools/google_api_tool/google_api_toolset.js +146 -0
  83. package/dist/esm/tools/google_api_tool/google_api_toolsets.js +94 -0
  84. package/dist/esm/tools/google_api_tool/googleapi_to_openapi_converter.js +2 -2
  85. package/dist/esm/tools/google_api_tool/index.js +18 -20
  86. package/dist/esm/tools/load_artifacts_tool.js +10 -5
  87. package/dist/esm/tools/load_memory_tool.js +12 -10
  88. package/dist/esm/tools/mcp/mcp_toolset.js +1 -14
  89. package/dist/esm/tools/openapi_tool/auth/credential_exchangers/oauth2_exchanger.js +2 -2
  90. package/dist/esm/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +20 -6
  91. package/dist/esm/tools/openapi_tool/openapi_spec_parser/operation_parser.js +17 -6
  92. package/dist/esm/tools/openapi_tool/openapi_toolset.js +6 -12
  93. package/dist/esm/tools/openapi_tool/rest_api_tool.js +17 -1
  94. package/dist/esm/tools/toolbox_toolset.js +148 -0
  95. package/dist/esm/tools/webmcp/webmcp_toolset.js +1 -14
  96. package/dist/esm/utils/client_labels.js +19 -2
  97. package/dist/esm/utils/failover_utils.js +1 -1
  98. package/dist/esm/utils/gemini_schema_util.js +23 -6
  99. package/dist/esm/utils/logger_node.js +4 -0
  100. package/dist/esm/utils/output_schema_utils.js +5 -2
  101. package/dist/esm/utils/task.js +1 -1
  102. package/dist/esm/version.js +1 -1
  103. package/dist/types/agents/agent_engine_client.d.ts +37 -0
  104. package/dist/types/agents/base_agent.d.ts +12 -0
  105. package/dist/types/agents/llm_agent.d.ts +5 -1
  106. package/dist/types/agents/processors/content_processor_utils.d.ts +4 -2
  107. package/dist/types/agents/processors/nl_planning_processor.d.ts +2 -1
  108. package/dist/types/cli/utils/logs.d.ts +1 -1
  109. package/dist/types/code_executors/container_code_executor.d.ts +17 -5
  110. package/dist/types/common.d.ts +5 -9
  111. package/dist/types/errors/input_validation_error.d.ts +2 -1
  112. package/dist/types/index.d.ts +4 -2
  113. package/dist/types/plugins/base_plugin.d.ts +0 -10
  114. package/dist/types/sessions/base_session_service.d.ts +5 -0
  115. package/dist/types/sessions/database_session_service.d.ts +17 -1
  116. package/dist/types/sessions/stale_session_error.d.ts +21 -0
  117. package/dist/types/skills/loader.d.ts +3 -2
  118. package/dist/types/telemetry/tracing.d.ts +17 -3
  119. package/dist/types/tools/apihub_tool/apihub_toolset.d.ts +14 -21
  120. package/dist/types/tools/application_integration_tool/application_integration_toolset.d.ts +32 -9
  121. package/dist/types/tools/application_integration_tool/clients/connections_client.d.ts +22 -8
  122. package/dist/types/tools/application_integration_tool/clients/integration_client.d.ts +3 -3
  123. package/dist/types/tools/application_integration_tool/integration_connector_tool.d.ts +70 -0
  124. package/dist/types/tools/base_toolset.d.ts +6 -5
  125. package/dist/types/tools/google_api_tool/google_api_tool.d.ts +10 -3
  126. package/dist/types/tools/google_api_tool/google_api_toolset.d.ts +55 -0
  127. package/dist/types/tools/google_api_tool/google_api_toolsets.d.ts +48 -0
  128. package/dist/types/tools/google_api_tool/googleapi_to_openapi_converter.d.ts +5 -4
  129. package/dist/types/tools/google_api_tool/index.d.ts +4 -5
  130. package/dist/types/tools/load_artifacts_tool.d.ts +14 -1
  131. package/dist/types/tools/load_memory_tool.d.ts +23 -1
  132. package/dist/types/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.d.ts +12 -0
  133. package/dist/types/tools/openapi_tool/openapi_spec_parser/operation_parser.d.ts +8 -0
  134. package/dist/types/tools/openapi_tool/openapi_toolset.d.ts +5 -0
  135. package/dist/types/tools/openapi_tool/rest_api_tool.d.ts +10 -0
  136. package/dist/types/tools/toolbox_toolset.d.ts +159 -0
  137. package/dist/types/utils/client_labels.d.ts +2 -1
  138. package/dist/types/utils/gemini_schema_util.d.ts +8 -0
  139. package/dist/types/utils/output_schema_utils.d.ts +3 -2
  140. package/dist/types/utils/simple_zod_to_json.d.ts +1 -2
  141. package/dist/types/version.d.ts +1 -1
  142. package/dist/web/index_web.js +74 -66
  143. package/dist/web/index_web.js.map +4 -4
  144. package/package.json +34 -27
  145. package/dist/cjs/agents/remote_agent.js +0 -187
  146. package/dist/cjs/tools/crewai_tool.js +0 -132
  147. package/dist/cjs/tools/google_api_tool/google_api_tool_set.js +0 -226
  148. package/dist/cjs/tools/google_api_tool/google_api_tool_sets.js +0 -58
  149. package/dist/cjs/tools/langchain_tool.js +0 -172
  150. package/dist/cjs/tools/toolbox_tool.js +0 -108
  151. package/dist/esm/agents/remote_agent.js +0 -164
  152. package/dist/esm/tools/crewai_tool.js +0 -107
  153. package/dist/esm/tools/google_api_tool/google_api_tool_set.js +0 -188
  154. package/dist/esm/tools/google_api_tool/google_api_tool_sets.js +0 -24
  155. package/dist/esm/tools/langchain_tool.js +0 -148
  156. package/dist/esm/tools/toolbox_tool.js +0 -80
  157. package/dist/types/agents/remote_agent.d.ts +0 -68
  158. package/dist/types/tools/crewai_tool.d.ts +0 -85
  159. package/dist/types/tools/google_api_tool/google_api_tool_set.d.ts +0 -78
  160. package/dist/types/tools/google_api_tool/google_api_tool_sets.d.ts +0 -33
  161. package/dist/types/tools/langchain_tool.d.ts +0 -103
  162. package/dist/types/tools/toolbox_tool.d.ts +0 -73
@@ -0,0 +1,173 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 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 __name = (target, value) => __defProp(target, "name", { value, configurable: true });
13
+ var __export = (target, all) => {
14
+ for (var name in all)
15
+ __defProp(target, name, { get: all[name], enumerable: true });
16
+ };
17
+ var __copyProps = (to, from, except, desc) => {
18
+ if (from && typeof from === "object" || typeof from === "function") {
19
+ for (let key of __getOwnPropNames(from))
20
+ if (!__hasOwnProp.call(to, key) && key !== except)
21
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
22
+ }
23
+ return to;
24
+ };
25
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
26
+ var __decorateClass = (decorators, target, key, kind) => {
27
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
28
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
29
+ if (decorator = decorators[i])
30
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
31
+ if (kind && result) __defProp(target, key, result);
32
+ return result;
33
+ };
34
+ var google_api_toolset_exports = {};
35
+ __export(google_api_toolset_exports, {
36
+ GoogleApiToolset: () => GoogleApiToolset,
37
+ isGoogleApiToolset: () => isGoogleApiToolset
38
+ });
39
+ module.exports = __toCommonJS(google_api_toolset_exports);
40
+ var import_experimental = require("../../utils/experimental.js");
41
+ var import_base_toolset = require("../base_toolset.js");
42
+ var import_openapi_toolset = require("../openapi_tool/openapi_toolset.js");
43
+ var import_google_api_tool = require("./google_api_tool.js");
44
+ var import_googleapi_to_openapi_converter = require("./googleapi_to_openapi_converter.js");
45
+ /**
46
+ * @license
47
+ * Copyright 2026 Google LLC
48
+ * SPDX-License-Identifier: Apache-2.0
49
+ */
50
+ var _a, _b;
51
+ const GOOGLE_API_TOOLSET_SIGNATURE_SYMBOL = /* @__PURE__ */ Symbol.for(
52
+ "google.adk.googleApiToolset"
53
+ );
54
+ const GOOGLE_OIDC_AUTH_ENDPOINT = "https://accounts.google.com/o/oauth2/v2/auth";
55
+ const GOOGLE_OIDC_TOKEN_ENDPOINT = "https://oauth2.googleapis.com/token";
56
+ const GOOGLE_OIDC_USERINFO_ENDPOINT = "https://openidconnect.googleapis.com/v1/userinfo";
57
+ const GOOGLE_OIDC_REVOCATION_ENDPOINT = "https://oauth2.googleapis.com/revoke";
58
+ function isGoogleApiToolset(obj) {
59
+ return typeof obj === "object" && obj !== null && GOOGLE_API_TOOLSET_SIGNATURE_SYMBOL in obj && obj[GOOGLE_API_TOOLSET_SIGNATURE_SYMBOL] === true;
60
+ }
61
+ __name(isGoogleApiToolset, "isGoogleApiToolset");
62
+ let GoogleApiToolset = class extends (_b = import_base_toolset.BaseToolset, _a = GOOGLE_API_TOOLSET_SIGNATURE_SYMBOL, _b) {
63
+ constructor(options = {}) {
64
+ var _a2;
65
+ const toolFilter = (_a2 = options.toolFilter) != null ? _a2 : [];
66
+ super(toolFilter);
67
+ this[_a] = true;
68
+ this.tools = [];
69
+ this.toolFilter = toolFilter;
70
+ this.apiName = options.apiName;
71
+ this.apiVersion = options.apiVersion;
72
+ this.clientId = options.clientId;
73
+ this.clientSecret = options.clientSecret;
74
+ }
75
+ async loadToolsetWithOidcAuth() {
76
+ var _a2, _b2, _c, _d, _e;
77
+ if (!this.apiName || !this.apiVersion) {
78
+ throw new Error(
79
+ "Both apiName and apiVersion are required to load a GoogleApiToolset."
80
+ );
81
+ }
82
+ const specDict = await new import_googleapi_to_openapi_converter.GoogleApiToOpenApiConverter(
83
+ this.apiName,
84
+ this.apiVersion
85
+ ).convert();
86
+ const oauth2Scheme = (_b2 = (_a2 = specDict.components) == null ? void 0 : _a2.securitySchemes) == null ? void 0 : _b2["oauth2"];
87
+ const scopesMap = (_e = (_d = (_c = oauth2Scheme == null ? void 0 : oauth2Scheme.flows) == null ? void 0 : _c.authorizationCode) == null ? void 0 : _d.scopes) != null ? _e : {};
88
+ const firstScope = Object.keys(scopesMap)[0];
89
+ const scopes = firstScope ? [firstScope] : void 0;
90
+ const authScheme = {
91
+ type: "openIdConnect",
92
+ openIdConnectUrl: "",
93
+ authorizationEndpoint: GOOGLE_OIDC_AUTH_ENDPOINT,
94
+ tokenEndpoint: GOOGLE_OIDC_TOKEN_ENDPOINT,
95
+ userinfoEndpoint: GOOGLE_OIDC_USERINFO_ENDPOINT,
96
+ revocationEndpoint: GOOGLE_OIDC_REVOCATION_ENDPOINT,
97
+ tokenEndpointAuthMethodsSupported: [
98
+ "client_secret_post",
99
+ "client_secret_basic"
100
+ ],
101
+ grantTypesSupported: ["authorization_code"],
102
+ scopes
103
+ };
104
+ return new import_openapi_toolset.OpenAPIToolset({
105
+ specDict,
106
+ specType: "yaml",
107
+ authScheme
108
+ });
109
+ }
110
+ async ensureToolsLoaded() {
111
+ var _a2;
112
+ if (this.openapiToolset || !this.apiName || !this.apiVersion) {
113
+ return;
114
+ }
115
+ (_a2 = this.loadingPromise) != null ? _a2 : this.loadingPromise = (async () => {
116
+ try {
117
+ const openapiToolset = await this.loadToolsetWithOidcAuth();
118
+ const restTools = await openapiToolset.getTools();
119
+ this.tools = restTools.map(
120
+ (tool) => new import_google_api_tool.GoogleApiTool(tool, {
121
+ clientId: this.clientId,
122
+ clientSecret: this.clientSecret
123
+ })
124
+ );
125
+ this.openapiToolset = openapiToolset;
126
+ } catch (error) {
127
+ this.loadingPromise = void 0;
128
+ throw error;
129
+ }
130
+ })();
131
+ await this.loadingPromise;
132
+ }
133
+ async getTools(context) {
134
+ await this.ensureToolsLoaded();
135
+ return this.tools.filter((tool) => this.isToolSelected(tool, context));
136
+ }
137
+ setToolFilter(toolFilter) {
138
+ this.toolFilter = toolFilter;
139
+ }
140
+ configureAuth(clientId, clientSecret) {
141
+ this.clientId = clientId;
142
+ this.clientSecret = clientSecret;
143
+ for (const tool of this.tools) {
144
+ tool.configureAuth(clientId, clientSecret);
145
+ }
146
+ }
147
+ async close() {
148
+ if (this.openapiToolset) {
149
+ await this.openapiToolset.close();
150
+ }
151
+ }
152
+ };
153
+ __name(GoogleApiToolset, "GoogleApiToolset");
154
+ __decorateClass([
155
+ import_experimental.experimental
156
+ ], GoogleApiToolset.prototype, "getTools", 1);
157
+ __decorateClass([
158
+ import_experimental.experimental
159
+ ], GoogleApiToolset.prototype, "setToolFilter", 1);
160
+ __decorateClass([
161
+ import_experimental.experimental
162
+ ], GoogleApiToolset.prototype, "configureAuth", 1);
163
+ __decorateClass([
164
+ import_experimental.experimental
165
+ ], GoogleApiToolset.prototype, "close", 1);
166
+ GoogleApiToolset = __decorateClass([
167
+ import_experimental.experimental
168
+ ], GoogleApiToolset);
169
+ // Annotate the CommonJS export names for ESM import in node:
170
+ 0 && (module.exports = {
171
+ GoogleApiToolset,
172
+ isGoogleApiToolset
173
+ });
@@ -0,0 +1,124 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 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 __name = (target, value) => __defProp(target, "name", { value, configurable: true });
13
+ var __export = (target, all) => {
14
+ for (var name in all)
15
+ __defProp(target, name, { get: all[name], enumerable: true });
16
+ };
17
+ var __copyProps = (to, from, except, desc) => {
18
+ if (from && typeof from === "object" || typeof from === "function") {
19
+ for (let key of __getOwnPropNames(from))
20
+ if (!__hasOwnProp.call(to, key) && key !== except)
21
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
22
+ }
23
+ return to;
24
+ };
25
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
26
+ var __decorateClass = (decorators, target, key, kind) => {
27
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
28
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
29
+ if (decorator = decorators[i])
30
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
31
+ if (kind && result) __defProp(target, key, result);
32
+ return result;
33
+ };
34
+ var google_api_toolsets_exports = {};
35
+ __export(google_api_toolsets_exports, {
36
+ BigQueryToolset: () => BigQueryToolset,
37
+ CalendarToolset: () => CalendarToolset,
38
+ DocsToolset: () => DocsToolset,
39
+ GmailToolset: () => GmailToolset,
40
+ SheetsToolset: () => SheetsToolset,
41
+ SlidesToolset: () => SlidesToolset,
42
+ YoutubeToolset: () => YoutubeToolset
43
+ });
44
+ module.exports = __toCommonJS(google_api_toolsets_exports);
45
+ var import_experimental = require("../../utils/experimental.js");
46
+ var import_google_api_toolset = require("./google_api_toolset.js");
47
+ /**
48
+ * @license
49
+ * Copyright 2026 Google LLC
50
+ * SPDX-License-Identifier: Apache-2.0
51
+ */
52
+ let BigQueryToolset = class extends import_google_api_toolset.GoogleApiToolset {
53
+ constructor(options = {}) {
54
+ super({ ...options, apiName: "bigquery", apiVersion: "v2" });
55
+ }
56
+ };
57
+ __name(BigQueryToolset, "BigQueryToolset");
58
+ BigQueryToolset = __decorateClass([
59
+ import_experimental.experimental
60
+ ], BigQueryToolset);
61
+ let CalendarToolset = class extends import_google_api_toolset.GoogleApiToolset {
62
+ constructor(options = {}) {
63
+ super({ ...options, apiName: "calendar", apiVersion: "v3" });
64
+ }
65
+ };
66
+ __name(CalendarToolset, "CalendarToolset");
67
+ CalendarToolset = __decorateClass([
68
+ import_experimental.experimental
69
+ ], CalendarToolset);
70
+ let GmailToolset = class extends import_google_api_toolset.GoogleApiToolset {
71
+ constructor(options = {}) {
72
+ super({ ...options, apiName: "gmail", apiVersion: "v1" });
73
+ }
74
+ };
75
+ __name(GmailToolset, "GmailToolset");
76
+ GmailToolset = __decorateClass([
77
+ import_experimental.experimental
78
+ ], GmailToolset);
79
+ let YoutubeToolset = class extends import_google_api_toolset.GoogleApiToolset {
80
+ constructor(options = {}) {
81
+ super({ ...options, apiName: "youtube", apiVersion: "v3" });
82
+ }
83
+ };
84
+ __name(YoutubeToolset, "YoutubeToolset");
85
+ YoutubeToolset = __decorateClass([
86
+ import_experimental.experimental
87
+ ], YoutubeToolset);
88
+ let SlidesToolset = class extends import_google_api_toolset.GoogleApiToolset {
89
+ constructor(options = {}) {
90
+ super({ ...options, apiName: "slides", apiVersion: "v1" });
91
+ }
92
+ };
93
+ __name(SlidesToolset, "SlidesToolset");
94
+ SlidesToolset = __decorateClass([
95
+ import_experimental.experimental
96
+ ], SlidesToolset);
97
+ let SheetsToolset = class extends import_google_api_toolset.GoogleApiToolset {
98
+ constructor(options = {}) {
99
+ super({ ...options, apiName: "sheets", apiVersion: "v4" });
100
+ }
101
+ };
102
+ __name(SheetsToolset, "SheetsToolset");
103
+ SheetsToolset = __decorateClass([
104
+ import_experimental.experimental
105
+ ], SheetsToolset);
106
+ let DocsToolset = class extends import_google_api_toolset.GoogleApiToolset {
107
+ constructor(options = {}) {
108
+ super({ ...options, apiName: "docs", apiVersion: "v1" });
109
+ }
110
+ };
111
+ __name(DocsToolset, "DocsToolset");
112
+ DocsToolset = __decorateClass([
113
+ import_experimental.experimental
114
+ ], DocsToolset);
115
+ // Annotate the CommonJS export names for ESM import in node:
116
+ 0 && (module.exports = {
117
+ BigQueryToolset,
118
+ CalendarToolset,
119
+ DocsToolset,
120
+ GmailToolset,
121
+ SheetsToolset,
122
+ SlidesToolset,
123
+ YoutubeToolset
124
+ });
@@ -319,10 +319,10 @@ function convertOperation(methodData, pathParams) {
319
319
  }
320
320
  __name(convertOperation, "convertOperation");
321
321
  function convertMethods(methods, _resourcePath, openapiSpec) {
322
- var _a, _b;
322
+ var _a, _b, _c;
323
323
  for (const methodData of Object.values(methods)) {
324
324
  const httpMethod = ((_a = methodData.httpMethod) != null ? _a : "GET").toLowerCase();
325
- let restPath = ((_b = methodData.path) != null ? _b : "/").replace(
325
+ let restPath = ((_c = (_b = methodData.flatPath) != null ? _b : methodData.path) != null ? _c : "/").replace(
326
326
  /\{\+([^{}]+)\}/g,
327
327
  (_match, paramName) => `{${paramName}}`
328
328
  );
@@ -24,24 +24,22 @@ var __copyProps = (to, from, except, desc) => {
24
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
25
  var google_api_tool_exports = {};
26
26
  __export(google_api_tool_exports, {
27
- GoogleApiToOpenApiConverter: () => import_googleapi_to_openapi_converter.GoogleApiToOpenApiConverter,
27
+ BigQueryToolset: () => import_google_api_toolsets.BigQueryToolset,
28
+ CalendarToolset: () => import_google_api_toolsets.CalendarToolset,
29
+ DocsToolset: () => import_google_api_toolsets.DocsToolset,
30
+ GmailToolset: () => import_google_api_toolsets.GmailToolset,
28
31
  GoogleApiTool: () => import_google_api_tool.GoogleApiTool,
29
- GoogleApiToolSet: () => import_google_api_tool_set.GoogleApiToolSet,
30
- bigqueryToolSet: () => import_google_api_tool_sets.bigqueryToolSet,
31
- calendarToolSet: () => import_google_api_tool_sets.calendarToolSet,
32
- docsToolSet: () => import_google_api_tool_sets.docsToolSet,
33
- gmailToolSet: () => import_google_api_tool_sets.gmailToolSet,
32
+ GoogleApiToolset: () => import_google_api_toolset.GoogleApiToolset,
33
+ SheetsToolset: () => import_google_api_toolsets.SheetsToolset,
34
+ SlidesToolset: () => import_google_api_toolsets.SlidesToolset,
35
+ YoutubeToolset: () => import_google_api_toolsets.YoutubeToolset,
34
36
  isGoogleApiTool: () => import_google_api_tool.isGoogleApiTool,
35
- isGoogleApiToolSet: () => import_google_api_tool_set.isGoogleApiToolSet,
36
- sheetsToolSet: () => import_google_api_tool_sets.sheetsToolSet,
37
- slidesToolSet: () => import_google_api_tool_sets.slidesToolSet,
38
- youtubeToolSet: () => import_google_api_tool_sets.youtubeToolSet
37
+ isGoogleApiToolset: () => import_google_api_toolset.isGoogleApiToolset
39
38
  });
40
39
  module.exports = __toCommonJS(google_api_tool_exports);
41
40
  var import_google_api_tool = require("./google_api_tool.js");
42
- var import_google_api_tool_set = require("./google_api_tool_set.js");
43
- var import_google_api_tool_sets = require("./google_api_tool_sets.js");
44
- var import_googleapi_to_openapi_converter = require("./googleapi_to_openapi_converter.js");
41
+ var import_google_api_toolset = require("./google_api_toolset.js");
42
+ var import_google_api_toolsets = require("./google_api_toolsets.js");
45
43
  /**
46
44
  * @license
47
45
  * Copyright 2026 Google LLC
@@ -49,16 +47,15 @@ var import_googleapi_to_openapi_converter = require("./googleapi_to_openapi_conv
49
47
  */
50
48
  // Annotate the CommonJS export names for ESM import in node:
51
49
  0 && (module.exports = {
52
- GoogleApiToOpenApiConverter,
50
+ BigQueryToolset,
51
+ CalendarToolset,
52
+ DocsToolset,
53
+ GmailToolset,
53
54
  GoogleApiTool,
54
- GoogleApiToolSet,
55
- bigqueryToolSet,
56
- calendarToolSet,
57
- docsToolSet,
58
- gmailToolSet,
55
+ GoogleApiToolset,
56
+ SheetsToolset,
57
+ SlidesToolset,
58
+ YoutubeToolset,
59
59
  isGoogleApiTool,
60
- isGoogleApiToolSet,
61
- sheetsToolSet,
62
- slidesToolSet,
63
- youtubeToolSet
60
+ isGoogleApiToolset
64
61
  });
@@ -26,11 +26,13 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
26
26
  var load_artifacts_tool_exports = {};
27
27
  __export(load_artifacts_tool_exports, {
28
28
  LOAD_ARTIFACTS: () => LOAD_ARTIFACTS,
29
- LoadArtifactsTool: () => LoadArtifactsTool
29
+ LoadArtifactsTool: () => LoadArtifactsTool,
30
+ asSafePartForLlm: () => asSafePartForLlm
30
31
  });
31
32
  module.exports = __toCommonJS(load_artifacts_tool_exports);
32
33
  var import_genai = require("@google/genai");
33
34
  var import_llm_request = require("../models/llm_request.js");
35
+ var import_env_aware_utils = require("../utils/env_aware_utils.js");
34
36
  var import_logger = require("../utils/logger.js");
35
37
  var import_base_tool = require("./base_tool.js");
36
38
  /**
@@ -62,6 +64,11 @@ function isInlineMimeTypeSupported(mimeType) {
62
64
  ) || GEMINI_SUPPORTED_INLINE_MIME_TYPES.has(normalized);
63
65
  }
64
66
  __name(isInlineMimeTypeSupported, "isInlineMimeTypeSupported");
67
+ function base64ByteLength(data) {
68
+ const digits = data.replace(/[=\s]/g, "").length;
69
+ return Math.floor(digits * 3 / 4);
70
+ }
71
+ __name(base64ByteLength, "base64ByteLength");
65
72
  function asSafePartForLlm(artifact, artifactName) {
66
73
  const inlineData = artifact.inlineData;
67
74
  if (!inlineData) {
@@ -78,15 +85,13 @@ function asSafePartForLlm(artifact, artifactName) {
78
85
  };
79
86
  }
80
87
  const isTextLike = mimeType.startsWith("text/") || TEXT_LIKE_MIME_TYPES.has(mimeType);
81
- const decodedBuffer = Buffer.from(data, "base64");
82
88
  if (isTextLike) {
83
89
  try {
84
- const decoded = decodedBuffer.toString("utf8");
85
- return { text: decoded };
90
+ return { text: (0, import_env_aware_utils.base64Decode)(data.replace(/-/g, "+").replace(/_/g, "/")) };
86
91
  } catch {
87
92
  }
88
93
  }
89
- const sizeKb = decodedBuffer.length / 1024;
94
+ const sizeKb = base64ByteLength(data) / 1024;
90
95
  return {
91
96
  text: `[Binary artifact: ${artifactName}, type: ${mimeType}, size: ${sizeKb.toFixed(1)} KB. Content cannot be displayed inline.]`
92
97
  };
@@ -214,5 +219,6 @@ const LOAD_ARTIFACTS = new LoadArtifactsTool();
214
219
  // Annotate the CommonJS export names for ESM import in node:
215
220
  0 && (module.exports = {
216
221
  LOAD_ARTIFACTS,
217
- LoadArtifactsTool
222
+ LoadArtifactsTool,
223
+ asSafePartForLlm
218
224
  });
@@ -38,11 +38,13 @@ var import_base_tool = require("./base_tool.js");
38
38
  * SPDX-License-Identifier: Apache-2.0
39
39
  */
40
40
  const _LoadMemoryTool = class _LoadMemoryTool extends import_base_tool.BaseTool {
41
- constructor() {
41
+ constructor(options = {}) {
42
+ var _a;
42
43
  super({
43
44
  name: "load_memory",
44
45
  description: "Loads the memory for the current user.\n\nNOTE: Currently this tool only uses text part from the memory."
45
46
  });
47
+ this.textOnlyContent = (_a = options.textOnlyContent) != null ? _a : false;
46
48
  }
47
49
  _getDeclaration() {
48
50
  return {
@@ -64,12 +66,12 @@ const _LoadMemoryTool = class _LoadMemoryTool extends import_base_tool.BaseTool
64
66
  args,
65
67
  toolContext
66
68
  }) {
67
- try {
68
- const query = args["query"];
69
- if (!toolContext.invocationContext.memoryService) {
70
- throw new Error("Memory service is not initialized.");
71
- }
72
- const searchMemoryResponse = await toolContext.searchMemory(query);
69
+ const query = args["query"];
70
+ if (!toolContext.invocationContext.memoryService) {
71
+ throw new Error("Memory service is not initialized.");
72
+ }
73
+ const searchMemoryResponse = await toolContext.searchMemory(query);
74
+ if (this.textOnlyContent) {
73
75
  return {
74
76
  memories: searchMemoryResponse.memories.map((m) => {
75
77
  var _a, _b;
@@ -84,10 +86,10 @@ const _LoadMemoryTool = class _LoadMemoryTool extends import_base_tool.BaseTool
84
86
  };
85
87
  })
86
88
  };
87
- } catch (e) {
88
- console.error("ERROR in LoadMemoryTool runAsync:", e);
89
- throw e;
90
89
  }
90
+ return {
91
+ memories: searchMemoryResponse.memories
92
+ };
91
93
  }
92
94
  async processLlmRequest(request) {
93
95
  await super.processLlmRequest(request);
@@ -61,20 +61,7 @@ const _MCPToolset = class _MCPToolset extends import_base_toolset.BaseToolset {
61
61
  };
62
62
  return new import_mcp_tool.MCPTool(toolWithPrefix, this.mcpSessionManager, tool.name);
63
63
  });
64
- const filter = this.toolFilter;
65
- if (!filter || Array.isArray(filter) && filter.length === 0) {
66
- return tools;
67
- }
68
- if (Array.isArray(filter)) {
69
- return tools.filter((tool) => filter.includes(tool.name));
70
- }
71
- if (context) {
72
- return tools.filter((tool) => filter(tool, context));
73
- }
74
- import_logger.logger.warn(
75
- "MCPToolset: a ToolPredicate toolFilter was provided but getTools() was called without a ReadonlyContext. The filter will not be applied."
76
- );
77
- return tools;
64
+ return tools.filter((tool) => this.isToolSelected(tool, context));
78
65
  }
79
66
  /**
80
67
  * Lists the names of the resources advertised by the MCP server.
@@ -81,12 +81,12 @@ function generateAuthToken(authCredential) {
81
81
  }
82
82
  __name(generateAuthToken, "generateAuthToken");
83
83
  function exchangeCredential(authScheme, authCredential) {
84
- var _a, _b;
84
+ var _a;
85
85
  checkSchemeCredentialType(authScheme, authCredential);
86
86
  if (authCredential.http) {
87
87
  return authCredential;
88
88
  }
89
- if (((_a = authCredential.oauth2) == null ? void 0 : _a.accessToken) || ((_b = authCredential.oauth2) == null ? void 0 : _b.refreshToken)) {
89
+ if ((_a = authCredential.oauth2) == null ? void 0 : _a.accessToken) {
90
90
  return generateAuthToken(authCredential);
91
91
  }
92
92
  return null;
@@ -54,15 +54,27 @@ const VALID_SCHEMA_TYPES = /* @__PURE__ */ new Set([
54
54
  "string"
55
55
  ]);
56
56
  let OpenApiSpecParser = class {
57
+ /**
58
+ * @param options.preservePropertyNames Keeps the original parameter and
59
+ * function names instead of converting them to snake_case.
60
+ * @param options.unconstrainedObjectBodyAsParameter Emits a whole-body
61
+ * parameter named `body` when an object request body schema has no
62
+ * properties. Defaults to `false`.
63
+ * @deprecated Retained for backwards compatibility; empty object schemas
64
+ * produce no parameters by default. This option will be removed in a
65
+ * future release.
66
+ */
57
67
  constructor(options = {}) {
58
- var _a;
68
+ var _a, _b;
59
69
  this.preservePropertyNames = (_a = options.preservePropertyNames) != null ? _a : false;
70
+ this.unconstrainedObjectBodyAsParameter = (_b = options.unconstrainedObjectBodyAsParameter) != null ? _b : false;
60
71
  }
61
72
  parse(openapiSpec) {
62
73
  const resolvedSpec = resolveReferences(openapiSpec);
63
74
  const sanitizedSpec = sanitizeSchemaTypes(resolvedSpec);
64
75
  return collectOperations(sanitizedSpec, {
65
- preservePropertyNames: this.preservePropertyNames
76
+ preservePropertyNames: this.preservePropertyNames,
77
+ unconstrainedObjectBodyAsParameter: this.unconstrainedObjectBodyAsParameter
66
78
  });
67
79
  }
68
80
  };
@@ -197,17 +209,18 @@ function resolveServerUrl(server) {
197
209
  }
198
210
  __name(resolveServerUrl, "resolveServerUrl");
199
211
  function collectOperations(spec, options = {}) {
200
- var _a, _b, _c;
212
+ var _a, _b, _c, _d;
201
213
  const preservePropertyNames = (_a = options.preservePropertyNames) != null ? _a : false;
214
+ const unconstrainedObjectBodyAsParameter = (_b = options.unconstrainedObjectBodyAsParameter) != null ? _b : false;
202
215
  const operations = [];
203
- const server = (_b = spec.servers) == null ? void 0 : _b[0];
216
+ const server = (_c = spec.servers) == null ? void 0 : _c[0];
204
217
  const baseUrl = server ? resolveServerUrl(server) : "";
205
218
  const globalSecurity = spec.security || [];
206
219
  let globalSchemeName;
207
220
  if (globalSecurity.length > 0) {
208
221
  globalSchemeName = Object.keys(globalSecurity[0])[0];
209
222
  }
210
- const authSchemes = ((_c = spec.components) == null ? void 0 : _c.securitySchemes) || {};
223
+ const authSchemes = ((_d = spec.components) == null ? void 0 : _d.securitySchemes) || {};
211
224
  for (const [path, pathItem] of Object.entries(spec.paths || {})) {
212
225
  if (!pathItem) continue;
213
226
  const methods = [
@@ -230,7 +243,8 @@ function collectOperations(spec, options = {}) {
230
243
  operation.operationId = (0, import_case_utils.toSnakeCaseName)(`${path}_${method}`);
231
244
  }
232
245
  const parser = new import_operation_parser.OperationParser(operation, {
233
- preservePropertyNames
246
+ preservePropertyNames,
247
+ unconstrainedObjectBodyAsParameter
234
248
  });
235
249
  let authSchemeName;
236
250
  if (operation.security && operation.security.length > 0) {
@@ -52,13 +52,20 @@ let OperationParser = class {
52
52
  * function names instead of converting them to snake_case.
53
53
  * @param options.shouldParse Whether to parse the operation during
54
54
  * construction. Defaults to `true`.
55
+ * @param options.unconstrainedObjectBodyAsParameter Emits a whole-body
56
+ * parameter named `body` when an object request body schema has no
57
+ * properties. Defaults to `false`.
58
+ * @deprecated Retained for backwards compatibility; empty object schemas
59
+ * produce no parameters by default. This option will be removed in a
60
+ * future release.
55
61
  */
56
62
  constructor(operation, options = {}) {
57
63
  this.params = [];
58
- var _a, _b;
64
+ var _a, _b, _c;
59
65
  this.operation = typeof operation === "string" ? JSON.parse(operation) : operation;
60
66
  this.preservePropertyNames = (_a = options.preservePropertyNames) != null ? _a : false;
61
- if ((_b = options.shouldParse) != null ? _b : true) {
67
+ this.unconstrainedObjectBodyAsParameter = (_b = options.unconstrainedObjectBodyAsParameter) != null ? _b : false;
68
+ if ((_c = options.shouldParse) != null ? _c : true) {
62
69
  this.processOperationParameters();
63
70
  this.processRequestBody();
64
71
  this.returnValue = this.processReturnValue();
@@ -78,6 +85,7 @@ let OperationParser = class {
78
85
  return (0, import_case_utils.renameReservedKeywords)((0, import_case_utils.toSnakeCaseName)(originalName));
79
86
  }
80
87
  processOperationParameters() {
88
+ var _a;
81
89
  const parameters = this.operation.parameters || [];
82
90
  for (const param of parameters) {
83
91
  if ("name" in param) {
@@ -88,9 +96,12 @@ let OperationParser = class {
88
96
  this.params.push({
89
97
  originalName,
90
98
  paramLocation: location,
91
- paramSchema: schema,
99
+ paramSchema: {
100
+ ...schema,
101
+ description: schema.description || description || void 0
102
+ },
92
103
  description,
93
- required: param.required || false,
104
+ required: (_a = param.required) != null ? _a : false,
94
105
  name: this.getParamName(originalName)
95
106
  });
96
107
  }
@@ -126,7 +137,7 @@ let OperationParser = class {
126
137
  });
127
138
  }
128
139
  }
129
- } else {
140
+ } else if (this.unconstrainedObjectBodyAsParameter) {
130
141
  this.params.push({
131
142
  originalName: "",
132
143
  paramLocation: "body",
@@ -147,7 +158,7 @@ let OperationParser = class {
147
158
  });
148
159
  } else {
149
160
  this.params.push({
150
- originalName: "body",
161
+ originalName: "",
151
162
  paramLocation: "body",
152
163
  paramSchema: schema,
153
164
  description,