@google/adk 1.2.0 → 1.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 (294) hide show
  1. package/dist/cjs/agents/active_streaming_tool.js +6 -1
  2. package/dist/cjs/agents/base_agent.js +19 -1
  3. package/dist/cjs/agents/context.js +1 -11
  4. package/dist/cjs/agents/functions.js +35 -16
  5. package/dist/cjs/agents/instructions.js +99 -33
  6. package/dist/cjs/agents/invocation_context.js +2 -6
  7. package/dist/cjs/agents/llm_agent.js +60 -11
  8. package/dist/cjs/agents/processors/agent_transfer_llm_request_processor.js +7 -0
  9. package/dist/cjs/agents/processors/basic_llm_request_processor.js +8 -1
  10. package/dist/cjs/agents/processors/code_execution_request_processor.js +0 -3
  11. package/dist/cjs/agents/processors/content_processor_utils.js +51 -25
  12. package/dist/cjs/agents/processors/content_request_processor.js +7 -0
  13. package/dist/cjs/agents/processors/context_compactor_request_processor.js +16 -2
  14. package/dist/cjs/agents/processors/identity_llm_request_processor.js +7 -0
  15. package/dist/cjs/agents/processors/instructions_llm_request_processor.js +5 -0
  16. package/dist/cjs/agents/processors/interactions_request_processor.js +63 -0
  17. package/dist/cjs/agents/processors/request_confirmation_llm_request_processor.js +9 -1
  18. package/dist/cjs/agents/processors/tool_filter_request_processor.js +7 -1
  19. package/dist/cjs/apps/app.js +79 -0
  20. package/dist/cjs/apps/resumability_config.js +44 -0
  21. package/dist/cjs/artifacts/file_artifact_service.js +14 -1
  22. package/dist/cjs/artifacts/gcs_artifact_service.js +57 -15
  23. package/dist/cjs/artifacts/in_memory_artifact_service.js +5 -1
  24. package/dist/cjs/artifacts/scoped_artifact_service.js +101 -0
  25. package/dist/cjs/artifacts/session_artifact_service.js +27 -0
  26. package/dist/cjs/auth/auth_preprocessor.js +12 -10
  27. package/dist/cjs/auth/oauth2/oauth2_discovery.js +17 -5
  28. package/dist/cjs/auth/oauth2/oauth2_utils.js +12 -1
  29. package/dist/cjs/code_executors/code_executor_context.js +7 -7
  30. package/dist/cjs/common.js +86 -0
  31. package/dist/cjs/context/agent_controlled_context_compactor.js +109 -0
  32. package/dist/cjs/context/summarizers/llm_summarizer.js +11 -0
  33. package/dist/cjs/context/token_based_context_compactor.js +43 -11
  34. package/dist/cjs/context/trajectory_thought_pruning_compactor.js +71 -0
  35. package/dist/cjs/events/event.js +25 -1
  36. package/dist/cjs/integrations/agent_registry/agent_registry_mcp_toolset.js +21 -2
  37. package/dist/cjs/models/gemini_llm_connection.js +62 -19
  38. package/dist/cjs/models/google_llm.js +51 -18
  39. package/dist/cjs/models/interactions_utils.js +732 -0
  40. package/dist/cjs/plugins/base_plugin.js +1 -0
  41. package/dist/cjs/plugins/security_plugin.js +16 -0
  42. package/dist/cjs/runner/in_memory_runner.js +13 -2
  43. package/dist/cjs/runner/runner.js +93 -72
  44. package/dist/cjs/sessions/base_session_service.js +19 -3
  45. package/dist/cjs/sessions/database_session_service.js +26 -9
  46. package/dist/cjs/sessions/db/schema.js +45 -10
  47. package/dist/cjs/sessions/in_memory_session_service.js +2 -1
  48. package/dist/cjs/sessions/vertex_ai_session_service.js +21 -5
  49. package/dist/cjs/skills/gcp_skill_registry.js +104 -0
  50. package/dist/cjs/skills/loader.js +67 -2
  51. package/dist/cjs/skills/skill_registry.js +27 -0
  52. package/dist/cjs/tools/base_toolset.js +1 -1
  53. package/dist/cjs/tools/consolidate_context_tool.js +79 -0
  54. package/dist/cjs/tools/forwarding_artifact_service.js +16 -28
  55. package/dist/cjs/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +232 -0
  56. package/dist/cjs/tools/openapi_tool/openapi_spec_parser/operation_parser.js +224 -0
  57. package/dist/cjs/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +117 -0
  58. package/dist/cjs/tools/openapi_tool/openapi_toolset.js +133 -0
  59. package/dist/cjs/tools/openapi_tool/rest_api_tool.js +256 -0
  60. package/dist/cjs/tools/skill/load_skill_resource_tool.js +25 -3
  61. package/dist/cjs/tools/skill/load_skill_tool.js +12 -1
  62. package/dist/cjs/tools/skill/run_skill_script_tool.js +12 -1
  63. package/dist/cjs/tools/skill/search_skills_tool.js +108 -0
  64. package/dist/cjs/tools/skill/skill_toolset.js +40 -5
  65. package/dist/cjs/utils/async_hooks_shim.js +52 -0
  66. package/dist/cjs/utils/async_queue.js +88 -0
  67. package/dist/cjs/utils/case_utils.js +53 -0
  68. package/dist/cjs/utils/client_labels.js +41 -3
  69. package/dist/cjs/utils/env_aware_utils.js +14 -1
  70. package/dist/cjs/utils/live_connection_utils.js +284 -0
  71. package/dist/cjs/utils/model_name.js +9 -0
  72. package/dist/cjs/utils/streaming_utils.js +18 -11
  73. package/dist/cjs/utils/task.js +62 -0
  74. package/dist/cjs/version.js +1 -1
  75. package/dist/esm/agents/active_streaming_tool.js +6 -1
  76. package/dist/esm/agents/base_agent.js +19 -1
  77. package/dist/esm/agents/context.js +1 -11
  78. package/dist/esm/agents/functions.js +36 -15
  79. package/dist/esm/agents/instructions.js +99 -33
  80. package/dist/esm/agents/invocation_context.js +2 -6
  81. package/dist/esm/agents/llm_agent.js +61 -11
  82. package/dist/esm/agents/processors/agent_transfer_llm_request_processor.js +7 -0
  83. package/dist/esm/agents/processors/basic_llm_request_processor.js +8 -1
  84. package/dist/esm/agents/processors/code_execution_request_processor.js +0 -3
  85. package/dist/esm/agents/processors/content_processor_utils.js +48 -24
  86. package/dist/esm/agents/processors/content_request_processor.js +7 -0
  87. package/dist/esm/agents/processors/context_compactor_request_processor.js +16 -2
  88. package/dist/esm/agents/processors/identity_llm_request_processor.js +7 -0
  89. package/dist/esm/agents/processors/instructions_llm_request_processor.js +5 -0
  90. package/dist/esm/agents/processors/interactions_request_processor.js +34 -0
  91. package/dist/esm/agents/processors/request_confirmation_llm_request_processor.js +9 -1
  92. package/dist/esm/agents/processors/tool_filter_request_processor.js +7 -1
  93. package/dist/esm/apps/app.js +49 -0
  94. package/dist/esm/apps/resumability_config.js +16 -0
  95. package/dist/esm/artifacts/file_artifact_service.js +14 -1
  96. package/dist/esm/artifacts/gcs_artifact_service.js +57 -15
  97. package/dist/esm/artifacts/in_memory_artifact_service.js +5 -1
  98. package/dist/esm/artifacts/scoped_artifact_service.js +73 -0
  99. package/dist/esm/artifacts/session_artifact_service.js +7 -0
  100. package/dist/esm/auth/auth_preprocessor.js +12 -10
  101. package/dist/esm/auth/oauth2/oauth2_discovery.js +14 -4
  102. package/dist/esm/auth/oauth2/oauth2_utils.js +12 -1
  103. package/dist/esm/code_executors/code_executor_context.js +7 -7
  104. package/dist/esm/common.js +75 -3
  105. package/dist/esm/context/agent_controlled_context_compactor.js +81 -0
  106. package/dist/esm/context/summarizers/llm_summarizer.js +11 -0
  107. package/dist/esm/context/token_based_context_compactor.js +43 -11
  108. package/dist/esm/context/trajectory_thought_pruning_compactor.js +43 -0
  109. package/dist/esm/events/event.js +23 -1
  110. package/dist/esm/integrations/agent_registry/agent_registry_mcp_toolset.js +21 -2
  111. package/dist/esm/models/gemini_llm_connection.js +62 -19
  112. package/dist/esm/models/google_llm.js +49 -17
  113. package/dist/esm/models/interactions_utils.js +697 -0
  114. package/dist/esm/plugins/base_plugin.js +1 -0
  115. package/dist/esm/plugins/security_plugin.js +16 -0
  116. package/dist/esm/runner/in_memory_runner.js +13 -2
  117. package/dist/esm/runner/runner.js +91 -73
  118. package/dist/esm/sessions/base_session_service.js +17 -2
  119. package/dist/esm/sessions/database_session_service.js +26 -9
  120. package/dist/esm/sessions/db/schema.js +44 -10
  121. package/dist/esm/sessions/in_memory_session_service.js +4 -2
  122. package/dist/esm/sessions/vertex_ai_session_service.js +21 -5
  123. package/dist/esm/skills/gcp_skill_registry.js +78 -0
  124. package/dist/esm/skills/loader.js +66 -2
  125. package/dist/esm/skills/skill_registry.js +7 -0
  126. package/dist/esm/tools/base_toolset.js +1 -1
  127. package/dist/esm/tools/consolidate_context_tool.js +51 -0
  128. package/dist/esm/tools/forwarding_artifact_service.js +16 -28
  129. package/dist/esm/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +206 -0
  130. package/dist/esm/tools/openapi_tool/openapi_spec_parser/operation_parser.js +198 -0
  131. package/dist/esm/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +91 -0
  132. package/dist/esm/tools/openapi_tool/openapi_toolset.js +97 -0
  133. package/dist/esm/tools/openapi_tool/rest_api_tool.js +229 -0
  134. package/dist/esm/tools/skill/load_skill_resource_tool.js +25 -3
  135. package/dist/esm/tools/skill/load_skill_tool.js +12 -1
  136. package/dist/esm/tools/skill/run_skill_script_tool.js +12 -1
  137. package/dist/esm/tools/skill/search_skills_tool.js +82 -0
  138. package/dist/esm/tools/skill/skill_toolset.js +40 -5
  139. package/dist/esm/utils/async_hooks_shim.js +24 -0
  140. package/dist/esm/utils/async_queue.js +60 -0
  141. package/dist/esm/utils/case_utils.js +25 -0
  142. package/dist/esm/utils/client_labels.js +38 -2
  143. package/dist/esm/utils/env_aware_utils.js +14 -1
  144. package/dist/esm/utils/live_connection_utils.js +256 -0
  145. package/dist/esm/utils/model_name.js +8 -0
  146. package/dist/esm/utils/streaming_utils.js +18 -11
  147. package/dist/esm/utils/task.js +34 -0
  148. package/dist/esm/version.js +1 -1
  149. package/dist/types/a2a/a2a_remote_agent_utils.d.ts +29 -4
  150. package/dist/types/a2a/event_converter_utils.d.ts +14 -1
  151. package/dist/types/a2a/metadata_converter_utils.d.ts +18 -0
  152. package/dist/types/a2a/part_converter_utils.d.ts +51 -6
  153. package/dist/types/agents/active_streaming_tool.d.ts +3 -4
  154. package/dist/types/agents/functions.d.ts +12 -9
  155. package/dist/types/agents/invocation_context.d.ts +7 -12
  156. package/dist/types/agents/llm_agent.d.ts +14 -0
  157. package/dist/types/agents/processors/agent_transfer_llm_request_processor.d.ts +14 -0
  158. package/dist/types/agents/processors/basic_llm_request_processor.d.ts +7 -0
  159. package/dist/types/agents/processors/content_processor_utils.d.ts +34 -0
  160. package/dist/types/agents/processors/content_request_processor.d.ts +16 -0
  161. package/dist/types/agents/processors/context_compactor_request_processor.d.ts +12 -0
  162. package/dist/types/agents/processors/identity_llm_request_processor.d.ts +7 -0
  163. package/dist/types/agents/processors/interactions_request_processor.d.ts +17 -0
  164. package/dist/types/agents/processors/request_confirmation_llm_request_processor.d.ts +9 -1
  165. package/dist/types/agents/processors/tool_filter_request_processor.d.ts +12 -1
  166. package/dist/types/apps/app.d.ts +52 -0
  167. package/dist/types/apps/resumability_config.d.ts +27 -0
  168. package/dist/types/artifacts/base_artifact_service.d.ts +6 -36
  169. package/dist/types/artifacts/gcs_artifact_service.d.ts +2 -1
  170. package/dist/types/artifacts/scoped_artifact_service.d.ts +25 -0
  171. package/dist/types/artifacts/session_artifact_service.d.ts +25 -0
  172. package/dist/types/auth/oauth2/oauth2_discovery.d.ts +11 -0
  173. package/dist/types/common.d.ts +35 -4
  174. package/dist/types/context/agent_controlled_context_compactor.d.ts +24 -0
  175. package/dist/types/context/base_context_compactor.d.ts +3 -0
  176. package/dist/types/context/summarizers/llm_summarizer.d.ts +17 -0
  177. package/dist/types/context/token_based_context_compactor.d.ts +6 -1
  178. package/dist/types/context/trajectory_thought_pruning_compactor.d.ts +27 -0
  179. package/dist/types/events/event.d.ts +8 -0
  180. package/dist/types/events/event_actions.d.ts +1 -2
  181. package/dist/types/integrations/agent_registry/agent_registry_mcp_toolset.d.ts +21 -2
  182. package/dist/types/models/base_llm_connection.d.ts +10 -0
  183. package/dist/types/models/gemini_llm_connection.d.ts +15 -4
  184. package/dist/types/models/google_llm.d.ts +15 -1
  185. package/dist/types/models/interactions_utils.d.ts +92 -0
  186. package/dist/types/models/llm_request.d.ts +4 -0
  187. package/dist/types/models/llm_response.d.ts +14 -1
  188. package/dist/types/plugins/base_plugin.d.ts +2 -1
  189. package/dist/types/plugins/security_plugin.d.ts +30 -0
  190. package/dist/types/runner/in_memory_runner.d.ts +7 -1
  191. package/dist/types/runner/runner.d.ts +43 -9
  192. package/dist/types/sessions/base_session_service.d.ts +7 -16
  193. package/dist/types/sessions/db/schema.d.ts +1 -0
  194. package/dist/types/sessions/session.d.ts +11 -0
  195. package/dist/types/sessions/vertex_ai_session_service.d.ts +9 -1
  196. package/dist/types/skills/gcp_skill_registry.d.ts +24 -0
  197. package/dist/types/skills/loader.d.ts +7 -0
  198. package/dist/types/skills/skill.d.ts +1 -1
  199. package/dist/types/skills/skill_registry.d.ts +29 -0
  200. package/dist/types/tools/consolidate_context_tool.d.ts +19 -0
  201. package/dist/types/tools/forwarding_artifact_service.d.ts +3 -2
  202. package/dist/types/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.d.ts +34 -0
  203. package/dist/types/tools/openapi_tool/openapi_spec_parser/operation_parser.d.ts +59 -0
  204. package/dist/types/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.d.ts +23 -0
  205. package/dist/types/tools/openapi_tool/openapi_toolset.d.ts +27 -0
  206. package/dist/types/tools/openapi_tool/rest_api_tool.d.ts +50 -0
  207. package/dist/types/tools/skill/load_skill_resource_tool.d.ts +1 -1
  208. package/dist/types/tools/skill/search_skills_tool.d.ts +14 -0
  209. package/dist/types/tools/skill/skill_toolset.d.ts +5 -0
  210. package/dist/types/utils/async_hooks_shim.d.ts +10 -0
  211. package/dist/types/utils/async_queue.d.ts +18 -0
  212. package/dist/types/utils/case_utils.d.ts +12 -0
  213. package/dist/types/utils/client_labels.d.ts +10 -0
  214. package/dist/types/utils/env_aware_utils.d.ts +3 -3
  215. package/dist/types/utils/live_connection_utils.d.ts +30 -0
  216. package/dist/types/utils/model_name.d.ts +7 -0
  217. package/dist/types/utils/streaming_utils.d.ts +0 -1
  218. package/dist/types/utils/task.d.ts +24 -0
  219. package/dist/types/version.d.ts +1 -1
  220. package/dist/web/agents/active_streaming_tool.js +6 -1
  221. package/dist/web/agents/base_agent.js +31 -1
  222. package/dist/web/agents/context.js +1 -11
  223. package/dist/web/agents/functions.js +36 -15
  224. package/dist/web/agents/instructions.js +99 -33
  225. package/dist/web/agents/invocation_context.js +2 -6
  226. package/dist/web/agents/llm_agent.js +61 -11
  227. package/dist/web/agents/processors/agent_transfer_llm_request_processor.js +7 -0
  228. package/dist/web/agents/processors/basic_llm_request_processor.js +8 -1
  229. package/dist/web/agents/processors/code_execution_request_processor.js +0 -3
  230. package/dist/web/agents/processors/content_processor_utils.js +66 -24
  231. package/dist/web/agents/processors/content_request_processor.js +7 -0
  232. package/dist/web/agents/processors/context_compactor_request_processor.js +16 -2
  233. package/dist/web/agents/processors/identity_llm_request_processor.js +7 -0
  234. package/dist/web/agents/processors/instructions_llm_request_processor.js +5 -0
  235. package/dist/web/agents/processors/interactions_request_processor.js +52 -0
  236. package/dist/web/agents/processors/request_confirmation_llm_request_processor.js +9 -1
  237. package/dist/web/agents/processors/tool_filter_request_processor.js +7 -1
  238. package/dist/web/apps/app.js +49 -0
  239. package/dist/web/apps/resumability_config.js +31 -0
  240. package/dist/web/artifacts/file_artifact_service.js +14 -1
  241. package/dist/web/artifacts/gcs_artifact_service.js +55 -15
  242. package/dist/web/artifacts/in_memory_artifact_service.js +5 -1
  243. package/dist/web/artifacts/scoped_artifact_service.js +86 -0
  244. package/dist/web/artifacts/session_artifact_service.js +7 -0
  245. package/dist/web/auth/auth_preprocessor.js +12 -10
  246. package/dist/web/auth/oauth2/oauth2_discovery.js +14 -4
  247. package/dist/web/auth/oauth2/oauth2_utils.js +12 -1
  248. package/dist/web/code_executors/code_executor_context.js +7 -7
  249. package/dist/web/common.js +75 -3
  250. package/dist/web/context/agent_controlled_context_compactor.js +81 -0
  251. package/dist/web/context/summarizers/llm_summarizer.js +11 -0
  252. package/dist/web/context/token_based_context_compactor.js +43 -11
  253. package/dist/web/context/trajectory_thought_pruning_compactor.js +43 -0
  254. package/dist/web/events/event.js +21 -1
  255. package/dist/web/integrations/agent_registry/agent_registry_mcp_toolset.js +21 -2
  256. package/dist/web/models/gemini_llm_connection.js +75 -19
  257. package/dist/web/models/google_llm.js +80 -17
  258. package/dist/web/models/interactions_utils.js +728 -0
  259. package/dist/web/plugins/base_plugin.js +1 -0
  260. package/dist/web/plugins/security_plugin.js +16 -0
  261. package/dist/web/runner/in_memory_runner.js +13 -2
  262. package/dist/web/runner/runner.js +111 -75
  263. package/dist/web/sessions/base_session_service.js +17 -2
  264. package/dist/web/sessions/database_session_service.js +26 -9
  265. package/dist/web/sessions/db/schema.js +44 -10
  266. package/dist/web/sessions/in_memory_session_service.js +4 -2
  267. package/dist/web/sessions/vertex_ai_session_service.js +21 -5
  268. package/dist/web/skills/gcp_skill_registry.js +78 -0
  269. package/dist/web/skills/loader.js +66 -2
  270. package/dist/web/skills/skill_registry.js +7 -0
  271. package/dist/web/tools/base_toolset.js +1 -1
  272. package/dist/web/tools/consolidate_context_tool.js +51 -0
  273. package/dist/web/tools/forwarding_artifact_service.js +16 -28
  274. package/dist/web/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +221 -0
  275. package/dist/web/tools/openapi_tool/openapi_spec_parser/operation_parser.js +198 -0
  276. package/dist/web/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +91 -0
  277. package/dist/web/tools/openapi_tool/openapi_toolset.js +97 -0
  278. package/dist/web/tools/openapi_tool/rest_api_tool.js +229 -0
  279. package/dist/web/tools/skill/load_skill_resource_tool.js +25 -3
  280. package/dist/web/tools/skill/load_skill_tool.js +12 -1
  281. package/dist/web/tools/skill/run_skill_script_tool.js +12 -1
  282. package/dist/web/tools/skill/search_skills_tool.js +82 -0
  283. package/dist/web/tools/skill/skill_toolset.js +40 -5
  284. package/dist/web/utils/async_hooks_shim.js +24 -0
  285. package/dist/web/utils/async_queue.js +60 -0
  286. package/dist/web/utils/case_utils.js +25 -0
  287. package/dist/web/utils/client_labels.js +38 -2
  288. package/dist/web/utils/env_aware_utils.js +14 -1
  289. package/dist/web/utils/live_connection_utils.js +254 -0
  290. package/dist/web/utils/model_name.js +8 -0
  291. package/dist/web/utils/streaming_utils.js +18 -11
  292. package/dist/web/utils/task.js +34 -0
  293. package/dist/web/version.js +1 -1
  294. package/package.json +4 -2
@@ -0,0 +1,78 @@
1
+ import {createRequire as topLevelCreateRequire} from 'module';
2
+ const require = topLevelCreateRequire(import.meta.url);
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __decorateClass = (decorators, target, key, kind) => {
6
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
7
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
8
+ if (decorator = decorators[i])
9
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
10
+ if (kind && result) __defProp(target, key, result);
11
+ return result;
12
+ };
13
+ /**
14
+ * @license
15
+ * Copyright 2026 Google LLC
16
+ * SPDX-License-Identifier: Apache-2.0
17
+ */
18
+ import { Client } from "@google-cloud/vertexai";
19
+ import { experimental } from "../utils/experimental.js";
20
+ import { loadSkillFromZipBuffer } from "./loader.js";
21
+ let GCPSkillRegistry = class {
22
+ constructor(options = {}) {
23
+ this.projectId = options.projectId || process.env.GOOGLE_CLOUD_PROJECT;
24
+ this.location = options.location || process.env.GOOGLE_CLOUD_LOCATION;
25
+ this.client = options.client || new Client({
26
+ project: this.projectId,
27
+ location: this.location
28
+ });
29
+ }
30
+ async getSkill(name) {
31
+ const apiClient = this.client.apiClient;
32
+ const httpResponse = await apiClient.request({
33
+ path: "skills/".concat(name),
34
+ httpMethod: "GET",
35
+ httpOptions: { apiVersion: "v1beta1" }
36
+ });
37
+ const response = await httpResponse.json();
38
+ const zippedFilesystem = response.zippedFilesystem || response.zipped_filesystem;
39
+ if (!zippedFilesystem) {
40
+ throw new Error("Skill '".concat(name, "' does not contain zipped filesystem."));
41
+ }
42
+ const zipBuffer = Buffer.from(zippedFilesystem, "base64");
43
+ return loadSkillFromZipBuffer(zipBuffer);
44
+ }
45
+ async searchSkills(query) {
46
+ const apiClient = this.client.apiClient;
47
+ const trimmedQuery = query.trim();
48
+ const isSearch = trimmedQuery.length > 0;
49
+ const path = isSearch ? "skills:retrieve?query=".concat(encodeURIComponent(trimmedQuery)) : "skills";
50
+ const httpResponse = await apiClient.request({
51
+ path,
52
+ httpMethod: "GET",
53
+ httpOptions: { apiVersion: "v1beta1" }
54
+ });
55
+ const response = await httpResponse.json();
56
+ const skillsList = isSearch ? response.retrievedSkills || response.retrieved_skills : response.skills;
57
+ const results = [];
58
+ if (skillsList && Array.isArray(skillsList)) {
59
+ for (const s of skillsList) {
60
+ const skillNameStr = s.skillName || s.skill_name || s.name || "";
61
+ const descriptionStr = s.description || "";
62
+ const parts = skillNameStr.split("/");
63
+ const name = skillNameStr ? parts[parts.length - 1] : "";
64
+ results.push({
65
+ name,
66
+ description: descriptionStr
67
+ });
68
+ }
69
+ }
70
+ return results;
71
+ }
72
+ };
73
+ GCPSkillRegistry = __decorateClass([
74
+ experimental
75
+ ], GCPSkillRegistry);
76
+ export {
77
+ GCPSkillRegistry
78
+ };
@@ -24,6 +24,7 @@ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
24
24
  * Copyright 2026 Google LLC
25
25
  * SPDX-License-Identifier: Apache-2.0
26
26
  */
27
+ import AdmZip from "adm-zip";
27
28
  import yaml from "js-yaml";
28
29
  import * as fs from "node:fs/promises";
29
30
  import * as path from "node:path";
@@ -102,12 +103,12 @@ function parseSkillMdContent(content) {
102
103
  if (!content.startsWith("---")) {
103
104
  throw new Error("SKILL.md must start with YAML frontmatter (---)");
104
105
  }
105
- const parts = content.split("---", 3);
106
+ const parts = content.split("---");
106
107
  if (parts.length < 3) {
107
108
  throw new Error("SKILL.md frontmatter not properly closed with ---");
108
109
  }
109
110
  const frontmatterStr = parts[1];
110
- const body = parts[2].trim();
111
+ const body = parts.filter((_, i) => i >= 2).join("---").trim();
111
112
  try {
112
113
  const parsed = yaml.load(frontmatterStr);
113
114
  if (typeof parsed !== "object" || parsed === null) {
@@ -254,9 +255,72 @@ async function loadAllSkillsInDir(skillsBasePath) {
254
255
  }
255
256
  return skills;
256
257
  }
258
+ function loadSkillFromZipBuffer(zipBuffer) {
259
+ const zip = new AdmZip(zipBuffer);
260
+ const entries = zip.getEntries();
261
+ let skillMdContent = "";
262
+ for (const entry of entries) {
263
+ if (entry.isDirectory) continue;
264
+ if (entry.entryName.toLowerCase() === "skill.md") {
265
+ skillMdContent = entry.getData().toString("utf-8");
266
+ break;
267
+ }
268
+ }
269
+ if (!skillMdContent) {
270
+ throw new Error("SKILL.md not found in zipped filesystem.");
271
+ }
272
+ const { frontmatter: parsed, body } = parseSkillMdContent(skillMdContent);
273
+ const frontmatter = FrontmatterSchema.parse(parsed);
274
+ const references = {};
275
+ const assets = {};
276
+ const scripts = {};
277
+ function loadZipDir(prefix) {
278
+ const res = {};
279
+ const normPrefix = prefix.endsWith("/") ? prefix : "".concat(prefix, "/");
280
+ for (const entry of entries) {
281
+ if (entry.isDirectory) continue;
282
+ if (entry.entryName.startsWith(normPrefix)) {
283
+ if (entry.entryName.includes("__pycache__")) continue;
284
+ const relativePath = entry.entryName.substring(normPrefix.length);
285
+ if (!relativePath) continue;
286
+ const data = entry.getData();
287
+ try {
288
+ res[relativePath] = data.toString("utf-8");
289
+ } catch (_e) {
290
+ res[relativePath] = data;
291
+ }
292
+ }
293
+ }
294
+ return res;
295
+ }
296
+ const refFiles = loadZipDir("references");
297
+ for (const [key, val] of Object.entries(refFiles)) {
298
+ references[key] = val;
299
+ }
300
+ const assetFiles = loadZipDir("assets");
301
+ for (const [key, val] of Object.entries(assetFiles)) {
302
+ assets[key] = val;
303
+ }
304
+ const rawScripts = loadZipDir("scripts");
305
+ for (const [key, val] of Object.entries(rawScripts)) {
306
+ if (typeof val === "string") {
307
+ scripts[key] = { src: val };
308
+ }
309
+ }
310
+ return {
311
+ frontmatter,
312
+ instructions: body,
313
+ resources: {
314
+ references,
315
+ assets,
316
+ scripts
317
+ }
318
+ };
319
+ }
257
320
  export {
258
321
  loadAllSkillsInDir,
259
322
  loadSkillFromDir,
323
+ loadSkillFromZipBuffer,
260
324
  parseSkillMdContent,
261
325
  validateSkillDir
262
326
  };
@@ -0,0 +1,7 @@
1
+ import {createRequire as topLevelCreateRequire} from 'module';
2
+ const require = topLevelCreateRequire(import.meta.url);
3
+ /**
4
+ * @license
5
+ * Copyright 2026 Google LLC
6
+ * SPDX-License-Identifier: Apache-2.0
7
+ */
@@ -25,7 +25,7 @@ class BaseToolset {
25
25
  * @return Whether the tool should be exposed to LLM.
26
26
  */
27
27
  isToolSelected(tool, context) {
28
- if (!this.toolFilter) {
28
+ if (!this.toolFilter || Array.isArray(this.toolFilter) && this.toolFilter.length === 0) {
29
29
  return true;
30
30
  }
31
31
  if (typeof this.toolFilter === "function") {
@@ -0,0 +1,51 @@
1
+ import {createRequire as topLevelCreateRequire} from 'module';
2
+ const require = topLevelCreateRequire(import.meta.url);
3
+ /**
4
+ * @license
5
+ * Copyright 2026 Google LLC
6
+ * SPDX-License-Identifier: Apache-2.0
7
+ */
8
+ import { Type } from "@google/genai";
9
+ import { BaseTool } from "./base_tool.js";
10
+ class ConsolidateContextTool extends BaseTool {
11
+ constructor() {
12
+ super({
13
+ name: "consolidate_context",
14
+ description: "Requests context consolidation (compaction) to manage history size. Use this when a subtask is complete and you want to summarize progress and clear detailed history."
15
+ });
16
+ }
17
+ _getDeclaration() {
18
+ return {
19
+ name: this.name,
20
+ description: this.description,
21
+ parameters: {
22
+ type: Type.OBJECT,
23
+ properties: {
24
+ detail: {
25
+ type: Type.STRING,
26
+ description: "Optional description of what has been accomplished so far. This detail will be used to guide the summarization of the history."
27
+ }
28
+ }
29
+ }
30
+ };
31
+ }
32
+ async runAsync({
33
+ args,
34
+ toolContext
35
+ }) {
36
+ toolContext.state.set("temp:consolidate_context", true);
37
+ if (args["detail"] !== void 0) {
38
+ toolContext.state.set(
39
+ "temp:consolidate_context_detail",
40
+ args["detail"]
41
+ );
42
+ }
43
+ return {
44
+ status: "success",
45
+ message: "Context consolidation requested."
46
+ };
47
+ }
48
+ }
49
+ export {
50
+ ConsolidateContextTool
51
+ };
@@ -10,48 +10,36 @@ class ForwardingArtifactService {
10
10
  this.toolContext = toolContext;
11
11
  this.invocationContext = toolContext.invocationContext;
12
12
  }
13
- // TODO - b/425992518: Remove unnecessary parameters. We should rethink the
14
- // abstraction layer to make it more clear.
15
13
  async saveArtifact(request) {
16
14
  return this.toolContext.saveArtifact(request.filename, request.artifact);
17
15
  }
18
16
  async loadArtifact(request) {
19
17
  return this.toolContext.loadArtifact(request.filename, request.version);
20
18
  }
21
- async listArtifactKeys() {
19
+ async listArtifactKeys(_request) {
22
20
  return this.toolContext.listArtifacts();
23
21
  }
24
- async deleteArtifact(request) {
25
- if (!this.toolContext.invocationContext.artifactService) {
22
+ getArtifactService() {
23
+ const service = this.invocationContext.artifactService;
24
+ if (!service) {
26
25
  throw new Error("Artifact service is not initialized.");
27
26
  }
28
- return this.toolContext.invocationContext.artifactService.deleteArtifact(
29
- request
30
- );
27
+ return service;
28
+ }
29
+ async deleteArtifact(request) {
30
+ return this.getArtifactService().deleteArtifact(request.filename);
31
31
  }
32
32
  async listVersions(request) {
33
- if (!this.toolContext.invocationContext.artifactService) {
34
- throw new Error("Artifact service is not initialized.");
35
- }
36
- return this.toolContext.invocationContext.artifactService.listVersions(
37
- request
38
- );
33
+ return this.getArtifactService().listVersions(request.filename);
39
34
  }
40
- listArtifactVersions(request) {
41
- if (!this.toolContext.invocationContext.artifactService) {
42
- throw new Error("Artifact service is not initialized.");
43
- }
44
- return this.toolContext.invocationContext.artifactService.listArtifactVersions(
45
- request
46
- );
35
+ async listArtifactVersions(request) {
36
+ return this.getArtifactService().listArtifactVersions(request.filename);
47
37
  }
48
- getArtifactVersion(request) {
49
- if (!this.toolContext.invocationContext.artifactService) {
50
- throw new Error("Artifact service is not initialized.");
51
- }
52
- return this.toolContext.invocationContext.artifactService.getArtifactVersion(
53
- request
54
- );
38
+ async getArtifactVersion(request) {
39
+ return this.getArtifactService().getArtifactVersion({
40
+ filename: request.filename,
41
+ version: request.version
42
+ });
55
43
  }
56
44
  }
57
45
  export {
@@ -0,0 +1,221 @@
1
+ import {createRequire as topLevelCreateRequire} from 'module';
2
+ const require = topLevelCreateRequire(import.meta.url);
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __spreadValues = (a, b) => {
10
+ for (var prop in b || (b = {}))
11
+ if (__hasOwnProp.call(b, prop))
12
+ __defNormalProp(a, prop, b[prop]);
13
+ if (__getOwnPropSymbols)
14
+ for (var prop of __getOwnPropSymbols(b)) {
15
+ if (__propIsEnum.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ }
18
+ return a;
19
+ };
20
+ var __decorateClass = (decorators, target, key, kind) => {
21
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
22
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
23
+ if (decorator = decorators[i])
24
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
25
+ if (kind && result) __defProp(target, key, result);
26
+ return result;
27
+ };
28
+ /**
29
+ * @license
30
+ * Copyright 2026 Google LLC
31
+ * SPDX-License-Identifier: Apache-2.0
32
+ */
33
+ import { experimental } from "../../../utils/experimental.js";
34
+ import { OperationParser } from "./operation_parser.js";
35
+ const VALID_SCHEMA_TYPES = /* @__PURE__ */ new Set([
36
+ "array",
37
+ "boolean",
38
+ "integer",
39
+ "null",
40
+ "number",
41
+ "object",
42
+ "string"
43
+ ]);
44
+ let OpenApiSpecParser = class {
45
+ constructor(options = {}) {
46
+ var _a;
47
+ this.preservePropertyNames = (_a = options.preservePropertyNames) != null ? _a : false;
48
+ }
49
+ parse(openapiSpec) {
50
+ const resolvedSpec = resolveReferences(openapiSpec);
51
+ const sanitizedSpec = sanitizeSchemaTypes(resolvedSpec);
52
+ return collectOperations(sanitizedSpec, {
53
+ preservePropertyNames: this.preservePropertyNames
54
+ });
55
+ }
56
+ };
57
+ __decorateClass([
58
+ experimental
59
+ ], OpenApiSpecParser.prototype, "parse", 1);
60
+ OpenApiSpecParser = __decorateClass([
61
+ experimental
62
+ ], OpenApiSpecParser);
63
+ function resolveReferences(spec) {
64
+ const resolvedCache = /* @__PURE__ */ new Map();
65
+ const specCopy = JSON.parse(JSON.stringify(spec));
66
+ const recursiveResolve = (obj, currentDoc, seenRefs = /* @__PURE__ */ new Set()) => {
67
+ if (typeof obj !== "object" || obj === null) {
68
+ return obj;
69
+ }
70
+ if (Array.isArray(obj)) {
71
+ return obj.map((item) => recursiveResolve(item, currentDoc, seenRefs));
72
+ }
73
+ const objRecord = obj;
74
+ if ("$ref" in objRecord && typeof objRecord["$ref"] === "string") {
75
+ const refString = objRecord["$ref"];
76
+ if (seenRefs.has(refString) && !resolvedCache.has(refString)) {
77
+ const copy = __spreadValues({}, objRecord);
78
+ delete copy["$ref"];
79
+ return copy;
80
+ }
81
+ seenRefs.add(refString);
82
+ if (resolvedCache.has(refString)) {
83
+ return resolvedCache.get(refString);
84
+ }
85
+ let resolvedValue = resolveRef(refString, currentDoc);
86
+ if (resolvedValue !== void 0) {
87
+ resolvedValue = recursiveResolve(resolvedValue, currentDoc, seenRefs);
88
+ resolvedCache.set(refString, resolvedValue);
89
+ return resolvedValue;
90
+ } else {
91
+ return obj;
92
+ }
93
+ }
94
+ const newDict = {};
95
+ for (const [key, value] of Object.entries(objRecord)) {
96
+ newDict[key] = recursiveResolve(value, currentDoc, seenRefs);
97
+ }
98
+ return newDict;
99
+ };
100
+ return recursiveResolve(specCopy, specCopy);
101
+ }
102
+ function resolveRef(refString, currentDoc) {
103
+ const parts = refString.split("/");
104
+ if (parts[0] !== "#") {
105
+ throw new Error("External references not supported: ".concat(refString));
106
+ }
107
+ let current = currentDoc;
108
+ for (const part of parts.slice(1)) {
109
+ if (typeof current === "object" && current !== null && part in current) {
110
+ current = current[part];
111
+ } else {
112
+ return void 0;
113
+ }
114
+ }
115
+ return current;
116
+ }
117
+ function sanitizeSchemaTypes(openapiSpec) {
118
+ const specCopy = JSON.parse(JSON.stringify(openapiSpec));
119
+ const sanitizeTypeField = (schemaDict) => {
120
+ if (!("type" in schemaDict)) return;
121
+ const typeValue = schemaDict["type"];
122
+ if (typeof typeValue === "string") {
123
+ const normalizedType = typeValue.toLowerCase();
124
+ if (VALID_SCHEMA_TYPES.has(normalizedType)) {
125
+ schemaDict["type"] = normalizedType;
126
+ } else {
127
+ delete schemaDict["type"];
128
+ }
129
+ return;
130
+ }
131
+ if (Array.isArray(typeValue)) {
132
+ const validTypes = [];
133
+ for (const entry of typeValue) {
134
+ if (typeof entry !== "string") continue;
135
+ const normalizedEntry = entry.toLowerCase();
136
+ if (VALID_SCHEMA_TYPES.has(normalizedEntry) && !validTypes.includes(normalizedEntry)) {
137
+ validTypes.push(normalizedEntry);
138
+ }
139
+ }
140
+ if (validTypes.length > 0) {
141
+ schemaDict["type"] = validTypes;
142
+ } else {
143
+ delete schemaDict["type"];
144
+ }
145
+ }
146
+ };
147
+ const sanitizeRecursive = (obj, inSchema) => {
148
+ if (typeof obj !== "object" || obj === null) {
149
+ return obj;
150
+ }
151
+ if (Array.isArray(obj)) {
152
+ return obj.map((item) => sanitizeRecursive(item, inSchema));
153
+ }
154
+ const objRecord = obj;
155
+ if (inSchema) {
156
+ sanitizeTypeField(objRecord);
157
+ }
158
+ for (const [key, value] of Object.entries(objRecord)) {
159
+ const isSchemaContainer = key === "schema" || key === "schemas";
160
+ objRecord[key] = sanitizeRecursive(value, inSchema || isSchemaContainer);
161
+ }
162
+ return objRecord;
163
+ };
164
+ return sanitizeRecursive(specCopy, false);
165
+ }
166
+ function collectOperations(spec, options = {}) {
167
+ var _a, _b, _c, _d;
168
+ const preservePropertyNames = (_a = options.preservePropertyNames) != null ? _a : false;
169
+ const operations = [];
170
+ const baseUrl = ((_c = (_b = spec.servers) == null ? void 0 : _b[0]) == null ? void 0 : _c.url) || "";
171
+ const globalSecurity = spec.security || [];
172
+ let globalSchemeName;
173
+ if (globalSecurity.length > 0) {
174
+ globalSchemeName = Object.keys(globalSecurity[0])[0];
175
+ }
176
+ const authSchemes = ((_d = spec.components) == null ? void 0 : _d.securitySchemes) || {};
177
+ for (const [path, pathItem] of Object.entries(spec.paths || {})) {
178
+ if (!pathItem) continue;
179
+ const methods = [
180
+ "get",
181
+ "post",
182
+ "put",
183
+ "delete",
184
+ "patch",
185
+ "head",
186
+ "options",
187
+ "trace"
188
+ ];
189
+ for (const method of methods) {
190
+ const operation = pathItem[method];
191
+ if (!operation) continue;
192
+ const pathParams = pathItem.parameters || [];
193
+ const opParams = operation.parameters || [];
194
+ operation.parameters = [...opParams, ...pathParams];
195
+ if (!operation.operationId) {
196
+ operation.operationId = "".concat(method, "_").concat(path.replace(/[^a-zA-Z0-9]/g, "_"));
197
+ }
198
+ const parser = new OperationParser(operation, {
199
+ preservePropertyNames
200
+ });
201
+ let authSchemeName;
202
+ if (operation.security && operation.security.length > 0) {
203
+ authSchemeName = Object.keys(operation.security[0])[0];
204
+ }
205
+ authSchemeName = authSchemeName || globalSchemeName;
206
+ const authScheme = authSchemeName ? authSchemes[authSchemeName] : void 0;
207
+ operations.push({
208
+ name: parser.getFunctionName(),
209
+ description: parser.getDescription(),
210
+ endpoint: { baseUrl, path, method },
211
+ operation,
212
+ parameters: parser.getParameters(),
213
+ authScheme
214
+ });
215
+ }
216
+ }
217
+ return operations;
218
+ }
219
+ export {
220
+ OpenApiSpecParser
221
+ };