@google/adk 1.1.0 → 1.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.
Files changed (300) hide show
  1. package/dist/cjs/agents/base_agent.js +19 -1
  2. package/dist/cjs/agents/functions.js +4 -0
  3. package/dist/cjs/agents/instructions.js +81 -33
  4. package/dist/cjs/agents/invocation_context.js +0 -1
  5. package/dist/cjs/agents/llm_agent.js +52 -5
  6. package/dist/cjs/agents/processors/agent_transfer_llm_request_processor.js +7 -0
  7. package/dist/cjs/agents/processors/basic_llm_request_processor.js +8 -1
  8. package/dist/cjs/agents/processors/content_processor_utils.js +37 -24
  9. package/dist/cjs/agents/processors/content_request_processor.js +7 -0
  10. package/dist/cjs/agents/processors/context_compactor_request_processor.js +12 -0
  11. package/dist/cjs/agents/processors/identity_llm_request_processor.js +7 -0
  12. package/dist/cjs/agents/processors/instructions_llm_request_processor.js +5 -0
  13. package/dist/cjs/agents/processors/request_confirmation_llm_request_processor.js +9 -1
  14. package/dist/cjs/agents/processors/tool_filter_request_processor.js +7 -1
  15. package/dist/cjs/auth/auth_preprocessor.js +12 -10
  16. package/dist/cjs/auth/oauth2/oauth2_discovery.js +26 -2
  17. package/dist/cjs/code_executors/agent_engine_sandbox_code_executor.js +305 -0
  18. package/dist/cjs/code_executors/code_execution_utils.js +1 -1
  19. package/dist/cjs/code_executors/code_executor_context.js +7 -7
  20. package/dist/cjs/common.js +50 -0
  21. package/dist/cjs/context/summarizers/llm_summarizer.js +11 -0
  22. package/dist/cjs/context/token_based_context_compactor.js +1 -1
  23. package/dist/cjs/events/event.js +4 -2
  24. package/dist/cjs/index.js +14 -0
  25. package/dist/cjs/integrations/agent_registry/agent_registry.js +362 -0
  26. package/dist/cjs/integrations/agent_registry/agent_registry_mcp_toolset.js +122 -0
  27. package/dist/cjs/integrations/agent_registry/helpers.js +57 -0
  28. package/dist/cjs/integrations/agent_registry/types.js +50 -0
  29. package/dist/cjs/memory/vertex_ai_memory_bank_service.js +496 -0
  30. package/dist/cjs/models/gemini_llm_connection.js +62 -19
  31. package/dist/cjs/models/google_llm.js +26 -8
  32. package/dist/cjs/plugins/security_plugin.js +16 -0
  33. package/dist/cjs/runner/in_memory_runner.js +10 -5
  34. package/dist/cjs/runner/runner.js +32 -2
  35. package/dist/cjs/sessions/base_session_service.js +13 -2
  36. package/dist/cjs/sessions/database_session_service.js +51 -5
  37. package/dist/cjs/sessions/db/schema.js +45 -10
  38. package/dist/cjs/sessions/in_memory_session_service.js +72 -15
  39. package/dist/cjs/sessions/registry.js +4 -0
  40. package/dist/cjs/sessions/vertex_ai_session_service.js +429 -0
  41. package/dist/cjs/skills/gcp_skill_registry.js +104 -0
  42. package/dist/cjs/skills/loader.js +65 -0
  43. package/dist/cjs/skills/skill_registry.js +27 -0
  44. package/dist/cjs/tools/agent_tool.js +10 -5
  45. package/dist/cjs/tools/exit_loop_tool.js +9 -0
  46. package/dist/cjs/tools/function_tool.js +7 -2
  47. package/dist/cjs/tools/google_maps_grounding_tool.js +80 -0
  48. package/dist/cjs/tools/long_running_tool.js +2 -1
  49. package/dist/cjs/tools/mcp/mcp_session_manager.js +11 -0
  50. package/dist/cjs/tools/mcp/mcp_tool.js +10 -6
  51. package/dist/cjs/tools/mcp/mcp_toolset.js +26 -3
  52. package/dist/cjs/tools/openapi_tool/auth/auth_helpers.js +78 -0
  53. package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +84 -0
  54. package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +133 -0
  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 +127 -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 +27 -28
  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/tools/vertex_rag_retrieval_tool.js +64 -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/env_aware_utils.js +4 -0
  69. package/dist/cjs/utils/file_utils.js +28 -0
  70. package/dist/cjs/utils/gemini_schema_util.js +18 -0
  71. package/dist/cjs/utils/live_connection_utils.js +284 -0
  72. package/dist/cjs/utils/model_name.js +9 -0
  73. package/dist/cjs/utils/partial_copy.js +51 -0
  74. package/dist/cjs/utils/streaming_utils.js +169 -122
  75. package/dist/cjs/utils/vertex_ai_utils.js +50 -0
  76. package/dist/cjs/version.js +1 -1
  77. package/dist/esm/agents/base_agent.js +19 -1
  78. package/dist/esm/agents/functions.js +4 -0
  79. package/dist/esm/agents/instructions.js +81 -33
  80. package/dist/esm/agents/invocation_context.js +0 -1
  81. package/dist/esm/agents/llm_agent.js +53 -5
  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/content_processor_utils.js +35 -23
  85. package/dist/esm/agents/processors/content_request_processor.js +7 -0
  86. package/dist/esm/agents/processors/context_compactor_request_processor.js +12 -0
  87. package/dist/esm/agents/processors/identity_llm_request_processor.js +7 -0
  88. package/dist/esm/agents/processors/instructions_llm_request_processor.js +5 -0
  89. package/dist/esm/agents/processors/request_confirmation_llm_request_processor.js +9 -1
  90. package/dist/esm/agents/processors/tool_filter_request_processor.js +7 -1
  91. package/dist/esm/auth/auth_preprocessor.js +12 -10
  92. package/dist/esm/auth/oauth2/oauth2_discovery.js +26 -2
  93. package/dist/esm/code_executors/agent_engine_sandbox_code_executor.js +281 -0
  94. package/dist/esm/code_executors/code_execution_utils.js +1 -1
  95. package/dist/esm/code_executors/code_executor_context.js +7 -7
  96. package/dist/esm/common.js +43 -1
  97. package/dist/esm/context/summarizers/llm_summarizer.js +11 -0
  98. package/dist/esm/context/token_based_context_compactor.js +1 -1
  99. package/dist/esm/events/event.js +4 -2
  100. package/dist/esm/index.js +11 -0
  101. package/dist/esm/integrations/agent_registry/agent_registry.js +333 -0
  102. package/dist/esm/integrations/agent_registry/agent_registry_mcp_toolset.js +96 -0
  103. package/dist/esm/integrations/agent_registry/helpers.js +28 -0
  104. package/dist/esm/integrations/agent_registry/types.js +20 -0
  105. package/dist/esm/memory/vertex_ai_memory_bank_service.js +468 -0
  106. package/dist/esm/models/gemini_llm_connection.js +62 -19
  107. package/dist/esm/models/google_llm.js +26 -8
  108. package/dist/esm/plugins/security_plugin.js +16 -0
  109. package/dist/esm/runner/in_memory_runner.js +10 -5
  110. package/dist/esm/runner/runner.js +32 -2
  111. package/dist/esm/sessions/base_session_service.js +11 -1
  112. package/dist/esm/sessions/database_session_service.js +51 -5
  113. package/dist/esm/sessions/db/schema.js +44 -10
  114. package/dist/esm/sessions/in_memory_session_service.js +74 -16
  115. package/dist/esm/sessions/registry.js +7 -0
  116. package/dist/esm/sessions/vertex_ai_session_service.js +405 -0
  117. package/dist/esm/skills/gcp_skill_registry.js +78 -0
  118. package/dist/esm/skills/loader.js +64 -0
  119. package/dist/esm/skills/skill_registry.js +7 -0
  120. package/dist/esm/tools/agent_tool.js +10 -5
  121. package/dist/esm/tools/exit_loop_tool.js +9 -0
  122. package/dist/esm/tools/function_tool.js +7 -2
  123. package/dist/esm/tools/google_maps_grounding_tool.js +54 -0
  124. package/dist/esm/tools/long_running_tool.js +2 -1
  125. package/dist/esm/tools/mcp/mcp_session_manager.js +11 -0
  126. package/dist/esm/tools/mcp/mcp_tool.js +10 -6
  127. package/dist/esm/tools/mcp/mcp_toolset.js +26 -3
  128. package/dist/esm/tools/openapi_tool/auth/auth_helpers.js +48 -0
  129. package/dist/esm/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +60 -0
  130. package/dist/esm/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +111 -0
  131. package/dist/esm/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +206 -0
  132. package/dist/esm/tools/openapi_tool/openapi_spec_parser/operation_parser.js +198 -0
  133. package/dist/esm/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +101 -0
  134. package/dist/esm/tools/openapi_tool/openapi_toolset.js +97 -0
  135. package/dist/esm/tools/openapi_tool/rest_api_tool.js +229 -0
  136. package/dist/esm/tools/skill/load_skill_resource_tool.js +26 -27
  137. package/dist/esm/tools/skill/load_skill_tool.js +12 -1
  138. package/dist/esm/tools/skill/run_skill_script_tool.js +12 -1
  139. package/dist/esm/tools/skill/search_skills_tool.js +82 -0
  140. package/dist/esm/tools/skill/skill_toolset.js +40 -5
  141. package/dist/esm/tools/vertex_rag_retrieval_tool.js +36 -0
  142. package/dist/esm/utils/async_queue.js +60 -0
  143. package/dist/esm/utils/case_utils.js +25 -0
  144. package/dist/esm/utils/env_aware_utils.js +4 -0
  145. package/dist/esm/utils/file_utils.js +26 -0
  146. package/dist/esm/utils/gemini_schema_util.js +18 -0
  147. package/dist/esm/utils/live_connection_utils.js +256 -0
  148. package/dist/esm/utils/model_name.js +8 -0
  149. package/dist/esm/utils/partial_copy.js +23 -0
  150. package/dist/esm/utils/streaming_utils.js +167 -121
  151. package/dist/esm/utils/vertex_ai_utils.js +22 -0
  152. package/dist/esm/version.js +1 -1
  153. package/dist/types/a2a/a2a_remote_agent.d.ts +14 -0
  154. package/dist/types/a2a/a2a_remote_agent_utils.d.ts +29 -4
  155. package/dist/types/a2a/event_converter_utils.d.ts +14 -1
  156. package/dist/types/a2a/metadata_converter_utils.d.ts +18 -0
  157. package/dist/types/a2a/part_converter_utils.d.ts +51 -6
  158. package/dist/types/agents/invocation_context.d.ts +0 -9
  159. package/dist/types/agents/llm_agent.d.ts +14 -0
  160. package/dist/types/agents/processors/agent_transfer_llm_request_processor.d.ts +14 -0
  161. package/dist/types/agents/processors/base_llm_processor.d.ts +12 -4
  162. package/dist/types/agents/processors/basic_llm_request_processor.d.ts +12 -0
  163. package/dist/types/agents/processors/content_processor_utils.d.ts +26 -0
  164. package/dist/types/agents/processors/content_request_processor.d.ts +16 -0
  165. package/dist/types/agents/processors/context_compactor_request_processor.d.ts +12 -0
  166. package/dist/types/agents/processors/identity_llm_request_processor.d.ts +11 -0
  167. package/dist/types/agents/processors/request_confirmation_llm_request_processor.d.ts +14 -1
  168. package/dist/types/agents/processors/tool_filter_request_processor.d.ts +12 -1
  169. package/dist/types/agents/run_config.d.ts +15 -0
  170. package/dist/types/code_executors/agent_engine_sandbox_code_executor.d.ts +51 -0
  171. package/dist/types/common.d.ts +19 -1
  172. package/dist/types/context/summarizers/llm_summarizer.d.ts +17 -0
  173. package/dist/types/events/event_actions.d.ts +25 -8
  174. package/dist/types/events/structured_events.d.ts +13 -0
  175. package/dist/types/examples/example_util.d.ts +25 -0
  176. package/dist/types/index.d.ts +6 -0
  177. package/dist/types/integrations/agent_registry/agent_registry.d.ts +94 -0
  178. package/dist/types/integrations/agent_registry/agent_registry_mcp_toolset.d.ts +62 -0
  179. package/dist/types/integrations/agent_registry/helpers.d.ts +7 -0
  180. package/dist/types/integrations/agent_registry/types.d.ts +101 -0
  181. package/dist/types/memory/vertex_ai_memory_bank_service.d.ts +52 -0
  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/llm_response.d.ts +10 -1
  185. package/dist/types/plugins/security_plugin.d.ts +30 -0
  186. package/dist/types/runner/in_memory_runner.d.ts +28 -1
  187. package/dist/types/runner/runner.d.ts +47 -0
  188. package/dist/types/sessions/base_session_service.d.ts +22 -0
  189. package/dist/types/sessions/database_session_service.d.ts +1 -1
  190. package/dist/types/sessions/db/schema.d.ts +1 -0
  191. package/dist/types/sessions/in_memory_session_service.d.ts +1 -1
  192. package/dist/types/sessions/vertex_ai_session_service.d.ts +37 -0
  193. package/dist/types/skills/gcp_skill_registry.d.ts +24 -0
  194. package/dist/types/skills/loader.d.ts +7 -0
  195. package/dist/types/skills/skill.d.ts +1 -1
  196. package/dist/types/skills/skill_registry.d.ts +29 -0
  197. package/dist/types/tools/exit_loop_tool.d.ts +9 -0
  198. package/dist/types/tools/function_tool.d.ts +22 -2
  199. package/dist/types/tools/google_maps_grounding_tool.d.ts +22 -0
  200. package/dist/types/tools/long_running_tool.d.ts +11 -1
  201. package/dist/types/tools/mcp/mcp_session_manager.d.ts +3 -0
  202. package/dist/types/tools/mcp/mcp_toolset.d.ts +2 -1
  203. package/dist/types/tools/openapi_tool/auth/auth_helpers.d.ts +25 -0
  204. package/dist/types/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.d.ts +20 -0
  205. package/dist/types/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.d.ts +20 -0
  206. package/dist/types/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.d.ts +34 -0
  207. package/dist/types/tools/openapi_tool/openapi_spec_parser/operation_parser.d.ts +59 -0
  208. package/dist/types/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.d.ts +23 -0
  209. package/dist/types/tools/openapi_tool/openapi_toolset.d.ts +27 -0
  210. package/dist/types/tools/openapi_tool/rest_api_tool.d.ts +50 -0
  211. package/dist/types/tools/skill/load_skill_resource_tool.d.ts +1 -1
  212. package/dist/types/tools/skill/search_skills_tool.d.ts +14 -0
  213. package/dist/types/tools/skill/skill_toolset.d.ts +5 -0
  214. package/dist/types/tools/vertex_rag_retrieval_tool.d.ts +42 -0
  215. package/dist/types/utils/async_queue.d.ts +18 -0
  216. package/dist/types/utils/case_utils.d.ts +12 -0
  217. package/dist/types/utils/file_utils.d.ts +2 -0
  218. package/dist/types/utils/live_connection_utils.d.ts +30 -0
  219. package/dist/types/utils/model_name.d.ts +7 -0
  220. package/dist/types/utils/partial_copy.d.ts +13 -0
  221. package/dist/types/utils/streaming_utils.d.ts +7 -17
  222. package/dist/types/utils/vertex_ai_utils.d.ts +14 -0
  223. package/dist/types/version.d.ts +1 -1
  224. package/dist/web/agents/base_agent.js +31 -1
  225. package/dist/web/agents/functions.js +4 -0
  226. package/dist/web/agents/instructions.js +81 -33
  227. package/dist/web/agents/invocation_context.js +0 -1
  228. package/dist/web/agents/llm_agent.js +53 -5
  229. package/dist/web/agents/processors/agent_transfer_llm_request_processor.js +7 -0
  230. package/dist/web/agents/processors/basic_llm_request_processor.js +8 -1
  231. package/dist/web/agents/processors/content_processor_utils.js +53 -23
  232. package/dist/web/agents/processors/content_request_processor.js +7 -0
  233. package/dist/web/agents/processors/context_compactor_request_processor.js +12 -0
  234. package/dist/web/agents/processors/identity_llm_request_processor.js +7 -0
  235. package/dist/web/agents/processors/instructions_llm_request_processor.js +5 -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/auth/auth_preprocessor.js +12 -10
  239. package/dist/web/auth/oauth2/oauth2_discovery.js +26 -2
  240. package/dist/web/code_executors/agent_engine_sandbox_code_executor.js +281 -0
  241. package/dist/web/code_executors/code_execution_utils.js +1 -1
  242. package/dist/web/code_executors/code_executor_context.js +7 -7
  243. package/dist/web/common.js +43 -1
  244. package/dist/web/context/summarizers/llm_summarizer.js +11 -0
  245. package/dist/web/context/token_based_context_compactor.js +1 -1
  246. package/dist/web/events/event.js +4 -2
  247. package/dist/web/index.js +11 -0
  248. package/dist/web/integrations/agent_registry/agent_registry.js +333 -0
  249. package/dist/web/integrations/agent_registry/agent_registry_mcp_toolset.js +109 -0
  250. package/dist/web/integrations/agent_registry/helpers.js +28 -0
  251. package/dist/web/integrations/agent_registry/types.js +20 -0
  252. package/dist/web/memory/vertex_ai_memory_bank_service.js +475 -0
  253. package/dist/web/models/gemini_llm_connection.js +75 -19
  254. package/dist/web/models/google_llm.js +26 -8
  255. package/dist/web/plugins/security_plugin.js +16 -0
  256. package/dist/web/runner/in_memory_runner.js +10 -5
  257. package/dist/web/runner/runner.js +32 -2
  258. package/dist/web/sessions/base_session_service.js +11 -1
  259. package/dist/web/sessions/database_session_service.js +51 -5
  260. package/dist/web/sessions/db/schema.js +44 -10
  261. package/dist/web/sessions/in_memory_session_service.js +74 -16
  262. package/dist/web/sessions/registry.js +7 -0
  263. package/dist/web/sessions/vertex_ai_session_service.js +416 -0
  264. package/dist/web/skills/gcp_skill_registry.js +78 -0
  265. package/dist/web/skills/loader.js +64 -0
  266. package/dist/web/skills/skill_registry.js +7 -0
  267. package/dist/web/tools/agent_tool.js +10 -5
  268. package/dist/web/tools/exit_loop_tool.js +9 -0
  269. package/dist/web/tools/function_tool.js +7 -2
  270. package/dist/web/tools/google_maps_grounding_tool.js +54 -0
  271. package/dist/web/tools/long_running_tool.js +2 -1
  272. package/dist/web/tools/mcp/mcp_session_manager.js +11 -0
  273. package/dist/web/tools/mcp/mcp_tool.js +10 -6
  274. package/dist/web/tools/mcp/mcp_toolset.js +26 -3
  275. package/dist/web/tools/openapi_tool/auth/auth_helpers.js +48 -0
  276. package/dist/web/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +60 -0
  277. package/dist/web/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +111 -0
  278. package/dist/web/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +221 -0
  279. package/dist/web/tools/openapi_tool/openapi_spec_parser/operation_parser.js +198 -0
  280. package/dist/web/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +101 -0
  281. package/dist/web/tools/openapi_tool/openapi_toolset.js +97 -0
  282. package/dist/web/tools/openapi_tool/rest_api_tool.js +229 -0
  283. package/dist/web/tools/skill/load_skill_resource_tool.js +26 -27
  284. package/dist/web/tools/skill/load_skill_tool.js +12 -1
  285. package/dist/web/tools/skill/run_skill_script_tool.js +12 -1
  286. package/dist/web/tools/skill/search_skills_tool.js +82 -0
  287. package/dist/web/tools/skill/skill_toolset.js +40 -5
  288. package/dist/web/tools/vertex_rag_retrieval_tool.js +36 -0
  289. package/dist/web/utils/async_queue.js +60 -0
  290. package/dist/web/utils/case_utils.js +25 -0
  291. package/dist/web/utils/env_aware_utils.js +4 -0
  292. package/dist/web/utils/file_utils.js +26 -0
  293. package/dist/web/utils/gemini_schema_util.js +18 -0
  294. package/dist/web/utils/live_connection_utils.js +254 -0
  295. package/dist/web/utils/model_name.js +8 -0
  296. package/dist/web/utils/partial_copy.js +23 -0
  297. package/dist/web/utils/streaming_utils.js +221 -122
  298. package/dist/web/utils/vertex_ai_utils.js +22 -0
  299. package/dist/web/version.js +1 -1
  300. package/package.json +4 -1
@@ -18,34 +18,11 @@ var __decorateClass = (decorators, target, key, kind) => {
18
18
  import { Type } from "@google/genai";
19
19
  import path from "node:path";
20
20
  import { experimental } from "../../utils/experimental.js";
21
+ import { guessMimeType } from "../../utils/file_utils.js";
21
22
  import {
22
23
  BaseTool
23
24
  } from "../base_tool.js";
24
25
  const BINARY_FILE_DETECTED_MSG = "Binary file detected. The content has been injected into the conversation history for you to analyze.";
25
- const EXTENSION_TO_MIME_TYPE = {
26
- "pdf": "application/pdf",
27
- "jpg": "image/jpeg",
28
- "jpeg": "image/jpeg",
29
- "png": "image/png",
30
- "gif": "image/gif",
31
- "csv": "text/csv",
32
- "json": "application/json",
33
- "xml": "application/xml",
34
- "sh": "text/x-shellscript",
35
- "bash": "text/x-shellscript",
36
- "py": "text/x-python",
37
- "js": "text/javascript",
38
- "cjs": "text/javascript",
39
- "mjs": "text/javascript",
40
- "ts": "text/javascript",
41
- "cts": "text/javascript",
42
- "mts": "text/javascript"
43
- };
44
- function guessMimeType(filePath) {
45
- var _a;
46
- const ext = ((_a = filePath.split(".").pop()) == null ? void 0 : _a.toLowerCase()) || "";
47
- return EXTENSION_TO_MIME_TYPE[ext] || "application/octet-stream";
48
- }
49
26
  let LoadSkillResourceTool = class extends BaseTool {
50
27
  constructor(toolset) {
51
28
  super({
@@ -74,7 +51,10 @@ let LoadSkillResourceTool = class extends BaseTool {
74
51
  }
75
52
  };
76
53
  }
77
- async runAsync({ args }) {
54
+ async runAsync({
55
+ args,
56
+ toolContext
57
+ }) {
78
58
  var _a, _b, _c;
79
59
  const skillName = args["skill_name"];
80
60
  let resourcePath = args["path"];
@@ -91,7 +71,18 @@ let LoadSkillResourceTool = class extends BaseTool {
91
71
  };
92
72
  }
93
73
  resourcePath = path.posix.normalize(resourcePath);
94
- const skill = this.toolset.getSkill(skillName);
74
+ let skill;
75
+ try {
76
+ skill = await this.toolset.getOrFetchSkill(
77
+ skillName,
78
+ toolContext.invocationId
79
+ );
80
+ } catch (e) {
81
+ return {
82
+ error: "Failed to fetch skill '".concat(skillName, "' from registry: ").concat(e.message || e),
83
+ error_code: "REGISTRY_ERROR"
84
+ };
85
+ }
95
86
  if (!skill) {
96
87
  return {
97
88
  error: "Skill '".concat(skillName, "' not found."),
@@ -154,7 +145,15 @@ let LoadSkillResourceTool = class extends BaseTool {
154
145
  if (response["status"] === BINARY_FILE_DETECTED_MSG) {
155
146
  const skillName = response["skill_name"];
156
147
  const resourcePath = response["path"];
157
- const skill = this.toolset.getSkill(skillName);
148
+ let skill;
149
+ try {
150
+ skill = await this.toolset.getOrFetchSkill(
151
+ skillName,
152
+ request.toolContext.invocationId
153
+ );
154
+ } catch (_e) {
155
+ continue;
156
+ }
158
157
  if (!skill) continue;
159
158
  const skillResources = skill.resources || {};
160
159
  let content;
@@ -53,7 +53,18 @@ let LoadSkillTool = class extends BaseTool {
53
53
  error_code: "MISSING_SKILL_NAME"
54
54
  };
55
55
  }
56
- const skill = this.toolset.getSkill(skillName);
56
+ let skill;
57
+ try {
58
+ skill = await this.toolset.getOrFetchSkill(
59
+ skillName,
60
+ toolContext.invocationId
61
+ );
62
+ } catch (e) {
63
+ return {
64
+ error: "Failed to fetch skill '".concat(skillName, "' from registry: ").concat(e.message || e),
65
+ error_code: "REGISTRY_ERROR"
66
+ };
67
+ }
57
68
  if (!skill) {
58
69
  return {
59
70
  error: "Skill '".concat(skillName, "' not found."),
@@ -80,7 +80,18 @@ let RunSkillScriptTool = class extends BaseTool {
80
80
  errorCode: "MISSING_SCRIPT_PATH"
81
81
  };
82
82
  }
83
- const skill = this.toolset.getSkill(skillName);
83
+ let skill;
84
+ try {
85
+ skill = await this.toolset.getOrFetchSkill(
86
+ skillName,
87
+ toolContext.invocationId
88
+ );
89
+ } catch (e) {
90
+ return {
91
+ error: "Failed to fetch skill '".concat(skillName, "' from registry: ").concat(e.message || e),
92
+ errorCode: "REGISTRY_ERROR"
93
+ };
94
+ }
84
95
  if (!skill) {
85
96
  return {
86
97
  error: "Skill '".concat(skillName, "' not found."),
@@ -0,0 +1,82 @@
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 { Type } from "@google/genai";
19
+ import { experimental } from "../../utils/experimental.js";
20
+ import { logger } from "../../utils/logger.js";
21
+ import { BaseTool } from "../base_tool.js";
22
+ let SearchSkillsTool = class extends BaseTool {
23
+ constructor(toolset) {
24
+ var _a, _b;
25
+ if (!toolset.registry) {
26
+ throw new Error("SearchSkillsTool requires a configured skill registry.");
27
+ }
28
+ super({
29
+ name: "search_skills",
30
+ description: ((_b = (_a = toolset.registry).searchToolDescription) == null ? void 0 : _b.call(_a)) || "Searches for relevant skills in the registry based on a semantic or keyword query."
31
+ });
32
+ this.toolset = toolset;
33
+ }
34
+ _getDeclaration() {
35
+ return {
36
+ name: this.name,
37
+ description: this.description,
38
+ parameters: {
39
+ type: Type.OBJECT,
40
+ properties: {
41
+ query: {
42
+ type: Type.STRING,
43
+ description: "Semantic or keyword search query."
44
+ }
45
+ },
46
+ required: ["query"]
47
+ }
48
+ };
49
+ }
50
+ async runAsync({ args }) {
51
+ const query = args["query"];
52
+ if (!query) {
53
+ return {
54
+ error: "Argument 'query' is required.",
55
+ error_code: "INVALID_ARGUMENTS"
56
+ };
57
+ }
58
+ try {
59
+ const results = await this.toolset.registry.searchSkills(query);
60
+ return results.filter((r) => {
61
+ if (this.toolset.skills[r.name]) {
62
+ logger.warn(
63
+ "Skill naming conflict: skill '".concat(r.name, "' already exists locally. Registry skill is filtered.")
64
+ );
65
+ return false;
66
+ }
67
+ return true;
68
+ });
69
+ } catch (e) {
70
+ return {
71
+ error: "Failed to search skills from registry: ".concat(e.message || e),
72
+ error_code: "REGISTRY_ERROR"
73
+ };
74
+ }
75
+ }
76
+ };
77
+ SearchSkillsTool = __decorateClass([
78
+ experimental
79
+ ], SearchSkillsTool);
80
+ export {
81
+ SearchSkillsTool
82
+ };
@@ -18,6 +18,7 @@ var __decorateClass = (decorators, target, key, kind) => {
18
18
  import { appendInstructions } from "../../models/llm_request.js";
19
19
  import { formatSkillsAsXml } from "../../skills/prompt.js";
20
20
  import { experimental } from "../../utils/experimental.js";
21
+ import { logger } from "../../utils/logger.js";
21
22
  import { BaseTool } from "../base_tool.js";
22
23
  import { BaseToolset } from "../base_toolset.js";
23
24
  import { ListSkillsTool } from "./list_skills_tool.js";
@@ -25,14 +26,17 @@ import { LoadSkillResourceTool } from "./load_skill_resource_tool.js";
25
26
  import { LoadSkillTool } from "./load_skill_tool.js";
26
27
  import { RunSkillInlineScriptTool } from "./run_skill_inline_script_tool.js";
27
28
  import { RunSkillScriptTool } from "./run_skill_script_tool.js";
29
+ import { SearchSkillsTool } from "./search_skills_tool.js";
28
30
  const DEFAULT_SKILL_SYSTEM_INSTRUCTION = "You can use specialized 'skills' to help you with complex tasks. You MUST use the skill tools to interact with these skills.\n\nSkills are folders of instructions and resources that extend your capabilities for specialized tasks. Each skill folder contains:\n- **SKILL.md** (required): The main instruction file with skill metadata and detailed markdown instructions.\n- **references/** (Optional): Additional documentation or examples for skill usage.\n- **assets/** (Optional): Templates, scripts or other resources used by the skill.\n- **scripts/** (Optional): Executable scripts that can be run via bash.\n\nThis is very important:\n\n1. If a skill seems relevant to the current user query, you MUST use the `load_skill` tool with `name=\"<SKILL_NAME>\"` to read its full instructions before proceeding.\n2. Once you have read the instructions, follow them exactly as documented before replying to the user. For example, If the instruction lists multiple steps, please make sure you complete all of them in order.\n3. The `load_skill_resource` tool is for viewing files within a skill's directory (e.g., `references/*`, `assets/*`, `scripts/*`). Do NOT use other tools to access these files.\n4. Use `run_skill_script` to run scripts from a skill's `scripts/` directory. Use `load_skill_resource` to view script content first if needed.\n";
29
31
  let SkillToolset = class extends BaseToolset {
30
32
  constructor(skills, options = {}) {
31
33
  super([], "adk_skill_toolset");
32
34
  this.toolCache = /* @__PURE__ */ new Map();
35
+ this.fetchedSkillCache = /* @__PURE__ */ new Map();
33
36
  this.skills = Array.isArray(skills) ? Object.fromEntries(skills.map((s) => [s.frontmatter.name, s])) : skills;
34
37
  this.codeExecutor = options.codeExecutor;
35
38
  this.additionalTools = options.additionalTools || [];
39
+ this.registry = options.registry;
36
40
  this.tools = [
37
41
  new ListSkillsTool(this),
38
42
  new LoadSkillTool(this),
@@ -40,24 +44,55 @@ let SkillToolset = class extends BaseToolset {
40
44
  new RunSkillScriptTool(this),
41
45
  new RunSkillInlineScriptTool(this)
42
46
  ];
47
+ if (this.registry) {
48
+ this.tools.push(new SearchSkillsTool(this));
49
+ }
43
50
  }
44
51
  async getTools(context) {
45
52
  const dynamicTools = await this.resolveAdditionalTools(context);
46
53
  return [...this.tools, ...dynamicTools];
47
54
  }
48
55
  async close() {
56
+ this.fetchedSkillCache.clear();
49
57
  }
50
58
  getSkill(name) {
51
59
  return this.skills[name];
52
60
  }
61
+ async getOrFetchSkill(name, invocationId) {
62
+ if (this.skills[name]) {
63
+ return this.skills[name];
64
+ }
65
+ if (!this.registry) {
66
+ return void 0;
67
+ }
68
+ const contextKey = invocationId || "default";
69
+ if (!this.fetchedSkillCache.has(contextKey)) {
70
+ this.fetchedSkillCache.set(contextKey, /* @__PURE__ */ new Map());
71
+ }
72
+ const cache = this.fetchedSkillCache.get(contextKey);
73
+ if (cache.has(name)) {
74
+ return cache.get(name);
75
+ }
76
+ try {
77
+ const skill = await this.registry.getSkill(name);
78
+ cache.set(name, skill);
79
+ return skill;
80
+ } catch (e) {
81
+ logger.warn("Failed to fetch skill '".concat(name, "' from registry: ").concat(e));
82
+ throw e;
83
+ }
84
+ }
53
85
  async processLlmRequest(toolContext, llmRequest) {
54
86
  await super.processLlmRequest(toolContext, llmRequest);
55
87
  const skills = Object.values(this.skills);
56
88
  const skillsXml = formatSkillsAsXml(skills);
57
- appendInstructions(llmRequest, [
58
- DEFAULT_SKILL_SYSTEM_INSTRUCTION,
59
- skillsXml
60
- ]);
89
+ const instructions = [DEFAULT_SKILL_SYSTEM_INSTRUCTION, skillsXml];
90
+ if (this.registry) {
91
+ instructions.push(
92
+ "\nIf the locally available skills are not sufficient to complete your task, you can use the `search_skills` tool to discover additional skills from the registry."
93
+ );
94
+ }
95
+ appendInstructions(llmRequest, instructions);
61
96
  }
62
97
  async resolveAdditionalTools(context) {
63
98
  if (!context) return [];
@@ -71,7 +106,7 @@ let SkillToolset = class extends BaseToolset {
71
106
  }
72
107
  const additionalToolNames = /* @__PURE__ */ new Set();
73
108
  for (const skillName of activatedSkills) {
74
- const skill = this.skills[skillName];
109
+ const skill = await this.getOrFetchSkill(skillName, context.invocationId);
75
110
  if (skill && skill.frontmatter.metadata) {
76
111
  const tools = skill.frontmatter.metadata["adk_additional_tools"];
77
112
  if (tools) {
@@ -0,0 +1,36 @@
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 { BaseTool } from "./base_tool.js";
9
+ class VertexRagRetrievalTool extends BaseTool {
10
+ constructor(config) {
11
+ super({
12
+ name: "vertex_rag_retrieval",
13
+ description: "Vertex AI RAG Retrieval Tool"
14
+ });
15
+ this.vertexRagStore = config;
16
+ }
17
+ /**
18
+ * This tool is executed server-side by the Vertex AI RAG Engine.
19
+ * Local execution is not required.
20
+ */
21
+ runAsync() {
22
+ return Promise.resolve();
23
+ }
24
+ async processLlmRequest({
25
+ llmRequest
26
+ }) {
27
+ llmRequest.config = llmRequest.config || {};
28
+ llmRequest.config.tools = llmRequest.config.tools || [];
29
+ llmRequest.config.tools.push({
30
+ retrieval: { vertexRagStore: this.vertexRagStore }
31
+ });
32
+ }
33
+ }
34
+ export {
35
+ VertexRagRetrievalTool
36
+ };
@@ -0,0 +1,60 @@
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
+ class AsyncQueue {
9
+ constructor() {
10
+ this.queue = [];
11
+ this.resolvers = [];
12
+ this.closed = false;
13
+ }
14
+ push(value) {
15
+ if (this.closed) return;
16
+ if (this.resolvers.length > 0) {
17
+ const { resolve } = this.resolvers.shift();
18
+ resolve({ value, done: false });
19
+ } else {
20
+ this.queue.push(value);
21
+ }
22
+ }
23
+ error(err) {
24
+ this.errorVal = err;
25
+ while (this.resolvers.length > 0) {
26
+ const { reject } = this.resolvers.shift();
27
+ reject(err);
28
+ }
29
+ }
30
+ close() {
31
+ this.closed = true;
32
+ while (this.resolvers.length > 0) {
33
+ const { resolve } = this.resolvers.shift();
34
+ resolve({ value: void 0, done: true });
35
+ }
36
+ }
37
+ [Symbol.asyncIterator]() {
38
+ return {
39
+ next: () => {
40
+ if (this.errorVal) {
41
+ const err = this.errorVal;
42
+ this.errorVal = void 0;
43
+ return Promise.reject(err);
44
+ }
45
+ if (this.queue.length > 0) {
46
+ return Promise.resolve({ value: this.queue.shift(), done: false });
47
+ }
48
+ if (this.closed) {
49
+ return Promise.resolve({ value: void 0, done: true });
50
+ }
51
+ return new Promise((resolve, reject) => {
52
+ this.resolvers.push({ resolve, reject });
53
+ });
54
+ }
55
+ };
56
+ }
57
+ }
58
+ export {
59
+ AsyncQueue
60
+ };
@@ -0,0 +1,25 @@
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
+ function camelCaseKeys(val) {
9
+ if (Array.isArray(val)) {
10
+ return val.map(camelCaseKeys);
11
+ }
12
+ if (val !== null && typeof val === "object" && val.constructor === Object) {
13
+ const obj = val;
14
+ const newObj = {};
15
+ for (const key of Object.keys(obj)) {
16
+ const camelKey = key.replace(/_([a-z])/g, (_, g) => g.toUpperCase());
17
+ newObj[camelKey] = camelCaseKeys(obj[key]);
18
+ }
19
+ return newObj;
20
+ }
21
+ return val;
22
+ }
23
+ export {
24
+ camelCaseKeys
25
+ };
@@ -10,6 +10,10 @@ function isBrowser() {
10
10
  }
11
11
  const UUID_MASK = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";
12
12
  function randomUUID() {
13
+ var _a;
14
+ if ((_a = globalThis.crypto) == null ? void 0 : _a.randomUUID) {
15
+ return globalThis.crypto.randomUUID();
16
+ }
13
17
  let uuid = "";
14
18
  for (let i = 0; i < UUID_MASK.length; i++) {
15
19
  const randomValue = Math.random() * 16 | 0;
@@ -69,6 +69,32 @@ async function materializeFiles(files, dir = process.cwd()) {
69
69
  }
70
70
  return createdFiles;
71
71
  }
72
+ const EXTENSION_TO_MIME_TYPE = {
73
+ "pdf": "application/pdf",
74
+ "jpg": "image/jpeg",
75
+ "jpeg": "image/jpeg",
76
+ "png": "image/png",
77
+ "gif": "image/gif",
78
+ "csv": "text/csv",
79
+ "json": "application/json",
80
+ "xml": "application/xml",
81
+ "sh": "text/x-shellscript",
82
+ "bash": "text/x-shellscript",
83
+ "py": "text/x-python",
84
+ "js": "text/javascript",
85
+ "cjs": "text/javascript",
86
+ "mjs": "text/javascript",
87
+ "ts": "text/javascript",
88
+ "cts": "text/javascript",
89
+ "mts": "text/javascript"
90
+ };
91
+ function guessMimeType(filePath) {
92
+ var _a;
93
+ const ext = ((_a = filePath.split(".").pop()) == null ? void 0 : _a.toLowerCase()) || "";
94
+ return EXTENSION_TO_MIME_TYPE[ext] || "application/octet-stream";
95
+ }
72
96
  export {
97
+ EXTENSION_TO_MIME_TYPE,
98
+ guessMimeType,
73
99
  materializeFiles
74
100
  };
@@ -112,6 +112,21 @@ function toGeminiSchema(mcpSchema) {
112
112
  mcp.type = "array";
113
113
  } else if (isNullable) {
114
114
  mcp.type = "null";
115
+ } else if (mcp.enum) {
116
+ const enumTypes = new Set(mcp.enum.map((v) => typeof v));
117
+ if (enumTypes.size === 1) {
118
+ const jsType = [...enumTypes][0];
119
+ if (jsType === "string") mcp.type = "string";
120
+ else if (jsType === "number") mcp.type = "number";
121
+ else if (jsType === "boolean") mcp.type = "boolean";
122
+ }
123
+ } else if (mcp.const !== void 0) {
124
+ const jsType = typeof mcp.const;
125
+ let inferredType;
126
+ if (jsType === "string") inferredType = "string";
127
+ else if (jsType === "number") inferredType = "number";
128
+ else if (jsType === "boolean") inferredType = "boolean";
129
+ mcp = __spreadProps(__spreadValues({}, mcp), { type: inferredType, enum: [mcp.const] });
115
130
  }
116
131
  }
117
132
  const geminiType = toGeminiType(mcp.type);
@@ -126,6 +141,9 @@ function toGeminiSchema(mcpSchema) {
126
141
  if (mcp.description) {
127
142
  geminiSchema.description = mcp.description;
128
143
  }
144
+ if (mcp.enum) {
145
+ geminiSchema.enum = mcp.enum.map(String);
146
+ }
129
147
  if (isNullable && mcp.type !== "null") {
130
148
  geminiSchema.nullable = true;
131
149
  }