@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
@@ -0,0 +1,198 @@
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 { experimental } from "../../../utils/experimental.js";
19
+ let OperationParser = class {
20
+ constructor(operation, options = {}) {
21
+ this.operation = operation;
22
+ this.params = [];
23
+ var _a;
24
+ this.preservePropertyNames = (_a = options.preservePropertyNames) != null ? _a : false;
25
+ this.processOperationParameters();
26
+ this.processRequestBody();
27
+ this.processReturnValue();
28
+ this.dedupeParamNames();
29
+ }
30
+ getParamName(originalName) {
31
+ if (this.preservePropertyNames) {
32
+ return originalName;
33
+ }
34
+ return originalName.replace(/[A-Z]/g, (g) => "_" + g.toLowerCase()).replace(/^_/, "");
35
+ }
36
+ processOperationParameters() {
37
+ const parameters = this.operation.parameters || [];
38
+ for (const param of parameters) {
39
+ if ("name" in param) {
40
+ const originalName = param.name;
41
+ const description = param.description || "";
42
+ const location = param.in || "";
43
+ const schema = param.schema || {};
44
+ this.params.push({
45
+ originalName,
46
+ paramLocation: location,
47
+ paramSchema: schema,
48
+ description,
49
+ required: param.required || false,
50
+ name: this.getParamName(originalName)
51
+ });
52
+ }
53
+ }
54
+ }
55
+ processRequestBody() {
56
+ const requestBody = this.operation.requestBody;
57
+ if (!requestBody || "$ref" in requestBody) {
58
+ return;
59
+ }
60
+ const content = requestBody.content || {};
61
+ const firstMimeType = Object.keys(content)[0];
62
+ if (!firstMimeType) {
63
+ return;
64
+ }
65
+ const mediaTypeObject = content[firstMimeType];
66
+ const schema = mediaTypeObject.schema;
67
+ const description = requestBody.description || "";
68
+ if (schema && !("$ref" in schema)) {
69
+ if (schema.type === "object") {
70
+ const properties = schema.properties || {};
71
+ if (Object.keys(properties).length > 0) {
72
+ for (const [propName, propDetails] of Object.entries(properties)) {
73
+ if (!("$ref" in propDetails)) {
74
+ this.params.push({
75
+ originalName: propName,
76
+ paramLocation: "body",
77
+ paramSchema: propDetails,
78
+ description: propDetails.description,
79
+ required: (schema.required || []).includes(propName),
80
+ name: this.getParamName(propName)
81
+ });
82
+ }
83
+ }
84
+ } else {
85
+ this.params.push({
86
+ originalName: "",
87
+ paramLocation: "body",
88
+ paramSchema: schema,
89
+ description,
90
+ required: true,
91
+ name: "body"
92
+ });
93
+ }
94
+ } else if (schema.type === "array") {
95
+ this.params.push({
96
+ originalName: "array",
97
+ paramLocation: "body",
98
+ paramSchema: schema,
99
+ description,
100
+ required: true,
101
+ name: "body"
102
+ });
103
+ } else {
104
+ this.params.push({
105
+ originalName: "body",
106
+ paramLocation: "body",
107
+ paramSchema: schema,
108
+ description,
109
+ required: true,
110
+ name: "body"
111
+ });
112
+ }
113
+ }
114
+ }
115
+ processReturnValue() {
116
+ const responses = this.operation.responses || {};
117
+ const validCodes = Object.keys(responses).filter((k) => k.startsWith("2"));
118
+ const min20x = validCodes.sort()[0];
119
+ let returnSchema = {};
120
+ if (min20x) {
121
+ const response = responses[min20x];
122
+ if (!("$ref" in response) && response.content) {
123
+ const firstMimeType = Object.keys(response.content)[0];
124
+ if (firstMimeType) {
125
+ const schema = response.content[firstMimeType].schema;
126
+ if (schema && !("$ref" in schema)) {
127
+ returnSchema = schema;
128
+ }
129
+ }
130
+ }
131
+ }
132
+ this.returnValue = {
133
+ originalName: "",
134
+ paramLocation: "",
135
+ paramSchema: returnSchema,
136
+ required: true,
137
+ name: "return"
138
+ };
139
+ }
140
+ dedupeParamNames() {
141
+ const nameCounts = /* @__PURE__ */ new Map();
142
+ for (const param of this.params) {
143
+ const name = param.name;
144
+ const count = nameCounts.get(name) || 0;
145
+ if (count > 0) {
146
+ param.name = `${name}_${count}`;
147
+ }
148
+ nameCounts.set(name, count + 1);
149
+ }
150
+ }
151
+ getParameters() {
152
+ return this.params;
153
+ }
154
+ getJsonSchema() {
155
+ const properties = {};
156
+ const required = [];
157
+ for (const param of this.params) {
158
+ properties[param.name] = param.paramSchema;
159
+ if (param.required) {
160
+ required.push(param.name);
161
+ }
162
+ }
163
+ return {
164
+ type: "object",
165
+ properties,
166
+ required: required.length > 0 ? required : void 0,
167
+ title: `${this.operation.operationId || "unnamed"}_Arguments`
168
+ };
169
+ }
170
+ getFunctionName() {
171
+ const operationId = this.operation.operationId;
172
+ if (!operationId) {
173
+ throw new Error("Operation ID is missing");
174
+ }
175
+ return this.getParamName(operationId).substring(0, 60);
176
+ }
177
+ getDescription() {
178
+ return this.operation.description || this.operation.summary || "";
179
+ }
180
+ };
181
+ __decorateClass([
182
+ experimental
183
+ ], OperationParser.prototype, "getParameters", 1);
184
+ __decorateClass([
185
+ experimental
186
+ ], OperationParser.prototype, "getJsonSchema", 1);
187
+ __decorateClass([
188
+ experimental
189
+ ], OperationParser.prototype, "getFunctionName", 1);
190
+ __decorateClass([
191
+ experimental
192
+ ], OperationParser.prototype, "getDescription", 1);
193
+ OperationParser = __decorateClass([
194
+ experimental
195
+ ], OperationParser);
196
+ export {
197
+ OperationParser
198
+ };
@@ -0,0 +1,101 @@
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 { experimental } from "../../../utils/experimental.js";
19
+ import { AutoAuthCredentialExchanger } from "../auth/credential_exchangers/auto_auth_credential_exchanger.js";
20
+ class ToolContextCredentialStore {
21
+ constructor(context) {
22
+ this.context = context;
23
+ }
24
+ getCredentialKey(authScheme) {
25
+ const schemeName = (authScheme == null ? void 0 : authScheme.type) || "default";
26
+ return `${schemeName}_existing_exchanged_credential`;
27
+ }
28
+ getCredential(authScheme) {
29
+ const key = this.getCredentialKey(authScheme);
30
+ const state = this.context.state;
31
+ if (state) {
32
+ const serialized = state[key];
33
+ if (serialized) {
34
+ return serialized;
35
+ }
36
+ }
37
+ return void 0;
38
+ }
39
+ storeCredential(key, credential) {
40
+ const state = this.context.state;
41
+ if (state) {
42
+ state[key] = credential;
43
+ }
44
+ }
45
+ }
46
+ let ToolAuthHandler = class {
47
+ constructor(context, authScheme, authCredential, credentialKey) {
48
+ this.context = context;
49
+ this.authScheme = authScheme;
50
+ this.authCredential = authCredential;
51
+ this.credentialKey = credentialKey;
52
+ }
53
+ static fromToolContext(context, authScheme, authCredential, options = {}) {
54
+ return new ToolAuthHandler(
55
+ context,
56
+ authScheme,
57
+ authCredential,
58
+ options.credentialKey
59
+ );
60
+ }
61
+ async prepareAuthCredentials() {
62
+ if (!this.authScheme) {
63
+ return { state: "done" };
64
+ }
65
+ const store = new ToolContextCredentialStore(this.context);
66
+ const existingCredential = store.getCredential(this.authScheme);
67
+ if (existingCredential) {
68
+ return { state: "done", authCredential: existingCredential };
69
+ }
70
+ const authConfig = {
71
+ authScheme: this.authScheme,
72
+ rawAuthCredential: this.authCredential,
73
+ credentialKey: this.credentialKey || "default_openapi_key"
74
+ };
75
+ const credential = this.context.getAuthResponse(authConfig);
76
+ if (credential) {
77
+ const exchanger = new AutoAuthCredentialExchanger();
78
+ const result = await exchanger.exchange({
79
+ authScheme: this.authScheme,
80
+ authCredential: credential
81
+ });
82
+ const key = store.getCredentialKey(this.authScheme);
83
+ store.storeCredential(key, result.credential);
84
+ return { state: "done", authCredential: result.credential };
85
+ }
86
+ this.context.requestCredential(authConfig);
87
+ return { state: "pending" };
88
+ }
89
+ };
90
+ __decorateClass([
91
+ experimental
92
+ ], ToolAuthHandler.prototype, "prepareAuthCredentials", 1);
93
+ __decorateClass([
94
+ experimental
95
+ ], ToolAuthHandler, "fromToolContext", 1);
96
+ ToolAuthHandler = __decorateClass([
97
+ experimental
98
+ ], ToolAuthHandler);
99
+ export {
100
+ ToolAuthHandler
101
+ };
@@ -0,0 +1,97 @@
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 yaml from "js-yaml";
19
+ import { experimental } from "../../utils/experimental.js";
20
+ import { BaseToolset } from "../base_toolset.js";
21
+ import { OpenApiSpecParser } from "./openapi_spec_parser/openapi_spec_parser.js";
22
+ import { createRestApiTool } from "./rest_api_tool.js";
23
+ let OpenAPIToolset = class extends BaseToolset {
24
+ constructor(options = {}) {
25
+ super(options.toolFilter || [], options.prefix);
26
+ this.tools = [];
27
+ let spec = options.specDict;
28
+ if (!spec && options.specStr) {
29
+ if (options.specType === "yaml" || !options.specType && options.specStr.trim().startsWith("---")) {
30
+ spec = yaml.load(options.specStr);
31
+ } else {
32
+ spec = JSON.parse(options.specStr);
33
+ }
34
+ }
35
+ if (!spec) {
36
+ throw new Error("Either specDict or specStr must be provided.");
37
+ }
38
+ const parser = new OpenApiSpecParser({
39
+ preservePropertyNames: options.preservePropertyNames
40
+ });
41
+ const parsedOperations = parser.parse(spec);
42
+ for (const op of parsedOperations) {
43
+ let toolName = op.name;
44
+ if (this.prefix) {
45
+ toolName = `${this.prefix}_${toolName}`;
46
+ }
47
+ const tool = createRestApiTool(
48
+ {
49
+ name: toolName,
50
+ description: op.description,
51
+ endpoint: op.endpoint,
52
+ operation: op.operation,
53
+ authScheme: op.authScheme
54
+ },
55
+ {
56
+ preservePropertyNames: options.preservePropertyNames,
57
+ headerProvider: options.headerProvider,
58
+ credentialKey: options.credentialKey
59
+ }
60
+ );
61
+ this.tools.push(tool);
62
+ }
63
+ if (options.authScheme || options.authCredential) {
64
+ for (const tool of this.tools) {
65
+ if (options.authScheme) tool.configureAuthScheme(options.authScheme);
66
+ if (options.authCredential)
67
+ tool.configureAuthCredential(options.authCredential);
68
+ }
69
+ }
70
+ }
71
+ async getTools(context) {
72
+ return this.tools.filter((tool) => {
73
+ if (Array.isArray(this.toolFilter) && this.toolFilter.length > 0) {
74
+ return this.toolFilter.includes(tool.name);
75
+ }
76
+ if (context) {
77
+ return this.isToolSelected(tool, context);
78
+ }
79
+ return true;
80
+ });
81
+ }
82
+ async close() {
83
+ return Promise.resolve();
84
+ }
85
+ };
86
+ __decorateClass([
87
+ experimental
88
+ ], OpenAPIToolset.prototype, "getTools", 1);
89
+ __decorateClass([
90
+ experimental
91
+ ], OpenAPIToolset.prototype, "close", 1);
92
+ OpenAPIToolset = __decorateClass([
93
+ experimental
94
+ ], OpenAPIToolset);
95
+ export {
96
+ OpenAPIToolset
97
+ };
@@ -0,0 +1,229 @@
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 { experimental } from "../../utils/experimental.js";
19
+ import { BaseTool } from "../base_tool.js";
20
+ import { applyCredential } from "./auth/auth_helpers.js";
21
+ import {
22
+ OperationParser
23
+ } from "./openapi_spec_parser/operation_parser.js";
24
+ import { ToolAuthHandler } from "./openapi_spec_parser/tool_auth_handler.js";
25
+ let RestApiTool = class extends BaseTool {
26
+ constructor(name, description, endpoint, operation, authScheme, authCredential, options = {}) {
27
+ super({ name, description });
28
+ this.endpoint = endpoint;
29
+ this.operation = operation;
30
+ this.authScheme = authScheme;
31
+ this.authCredential = authCredential;
32
+ this.authScheme = authScheme;
33
+ this.authCredential = authCredential;
34
+ this.headerProvider = options.headerProvider;
35
+ this.credentialKey = options.credentialKey;
36
+ this.operationParser = new OperationParser(operation, options);
37
+ }
38
+ configureAuthScheme(authScheme) {
39
+ this.authScheme = authScheme;
40
+ }
41
+ configureAuthCredential(authCredential) {
42
+ this.authCredential = authCredential;
43
+ }
44
+ configureCredentialKey(credentialKey) {
45
+ this.credentialKey = credentialKey;
46
+ }
47
+ _getDeclaration() {
48
+ const schema = this.operationParser.getJsonSchema();
49
+ return {
50
+ name: this.name,
51
+ description: this.description,
52
+ parameters: schema
53
+ };
54
+ }
55
+ async runAsync(request) {
56
+ const context = request.toolContext;
57
+ const args = request.args;
58
+ const authHandler = ToolAuthHandler.fromToolContext(
59
+ context,
60
+ this.authScheme,
61
+ this.authCredential,
62
+ { credentialKey: this.credentialKey }
63
+ );
64
+ const authResult = await authHandler.prepareAuthCredentials();
65
+ if (authResult.state === "pending") {
66
+ return {
67
+ pending: true,
68
+ message: "Needs your authorization to access your data."
69
+ };
70
+ }
71
+ const credential = authResult.authCredential;
72
+ const method = this.endpoint.method.toUpperCase();
73
+ const {
74
+ url: initialUrl,
75
+ headers,
76
+ body: parsedBody,
77
+ bodyData
78
+ } = prepareRequestParams(
79
+ this.endpoint,
80
+ this.operationParser.getParameters(),
81
+ args
82
+ );
83
+ const body = prepareRequestBody(
84
+ this.operation.requestBody,
85
+ parsedBody,
86
+ bodyData,
87
+ headers
88
+ );
89
+ const url = applyCredential(
90
+ initialUrl,
91
+ headers,
92
+ credential,
93
+ this.authScheme
94
+ );
95
+ if (this.headerProvider) {
96
+ const providerHeaders = this.headerProvider(context);
97
+ Object.assign(headers, providerHeaders);
98
+ }
99
+ try {
100
+ const response = await globalThis.fetch(url, {
101
+ method,
102
+ headers,
103
+ // eslint-disable-next-line no-undef
104
+ body
105
+ });
106
+ const contentType = response.headers.get("content-type");
107
+ if (contentType && contentType.includes("application/json")) {
108
+ return await response.json();
109
+ } else {
110
+ return await response.text();
111
+ }
112
+ } catch (error) {
113
+ return {
114
+ error: `Failed to execute API call: ${error.message}`
115
+ };
116
+ }
117
+ }
118
+ };
119
+ __decorateClass([
120
+ experimental
121
+ ], RestApiTool.prototype, "configureAuthScheme", 1);
122
+ __decorateClass([
123
+ experimental
124
+ ], RestApiTool.prototype, "configureAuthCredential", 1);
125
+ __decorateClass([
126
+ experimental
127
+ ], RestApiTool.prototype, "configureCredentialKey", 1);
128
+ __decorateClass([
129
+ experimental
130
+ ], RestApiTool.prototype, "_getDeclaration", 1);
131
+ __decorateClass([
132
+ experimental
133
+ ], RestApiTool.prototype, "runAsync", 1);
134
+ RestApiTool = __decorateClass([
135
+ experimental
136
+ ], RestApiTool);
137
+ function prepareRequestParams(endpoint, parameters, args) {
138
+ const headers = {};
139
+ const queryParams = new URLSearchParams();
140
+ let body = void 0;
141
+ const paramsMap = new Map(parameters.map((p) => [p.name, p]));
142
+ const pathParams = {};
143
+ const bodyData = {};
144
+ for (const [argName, argValue] of Object.entries(args)) {
145
+ const param = paramsMap.get(argName);
146
+ if (!param) continue;
147
+ const originalName = param.originalName;
148
+ const location = param.paramLocation;
149
+ if (location === "path") {
150
+ pathParams[originalName] = String(argValue);
151
+ } else if (location === "query") {
152
+ queryParams.append(originalName, String(argValue));
153
+ } else if (location === "header") {
154
+ headers[originalName] = String(argValue);
155
+ } else if (location === "body") {
156
+ if (originalName === "body" || originalName === "array" || originalName === "") {
157
+ body = argValue;
158
+ } else {
159
+ bodyData[originalName] = argValue;
160
+ }
161
+ }
162
+ }
163
+ let url = `${endpoint.baseUrl}${endpoint.path}`;
164
+ for (const [key, value] of Object.entries(pathParams)) {
165
+ url = url.replace(`{${key}}`, value);
166
+ }
167
+ const urlParts = url.split("?");
168
+ if (urlParts.length > 1) {
169
+ const pathQueryParams = new URLSearchParams(urlParts[1]);
170
+ for (const [key, value] of pathQueryParams.entries()) {
171
+ queryParams.append(key, value);
172
+ }
173
+ url = urlParts[0];
174
+ }
175
+ const queryString = queryParams.toString();
176
+ if (queryString) {
177
+ url += `?${queryString}`;
178
+ }
179
+ return { url, headers, body, bodyData };
180
+ }
181
+ function prepareRequestBody(requestBody, body, bodyData, headers) {
182
+ const finalData = body !== void 0 ? body : Object.keys(bodyData).length > 0 ? bodyData : void 0;
183
+ if (requestBody && "content" in requestBody) {
184
+ const content = requestBody.content;
185
+ for (const [mimeType, _mediaTypeObject] of Object.entries(content)) {
186
+ if (finalData !== void 0) {
187
+ if (mimeType === "application/json" || mimeType.endsWith("+json")) {
188
+ headers["Content-Type"] = mimeType;
189
+ return typeof finalData === "string" ? finalData : JSON.stringify(finalData);
190
+ } else if (mimeType === "application/x-www-form-urlencoded") {
191
+ return new URLSearchParams(finalData);
192
+ } else if (mimeType === "multipart/form-data") {
193
+ const formData = new FormData();
194
+ if (typeof finalData === "object" && finalData !== null) {
195
+ for (const [key, value] of Object.entries(finalData)) {
196
+ formData.append(key, String(value));
197
+ }
198
+ }
199
+ return formData;
200
+ } else if (mimeType === "text/plain") {
201
+ headers["Content-Type"] = mimeType;
202
+ return String(finalData);
203
+ }
204
+ }
205
+ break;
206
+ }
207
+ } else if (finalData !== void 0) {
208
+ headers["Content-Type"] = "application/json";
209
+ return typeof finalData === "string" ? finalData : JSON.stringify(finalData);
210
+ }
211
+ return void 0;
212
+ }
213
+ function createRestApiTool(parsed, options = {}) {
214
+ return new RestApiTool(
215
+ parsed.name,
216
+ parsed.description,
217
+ parsed.endpoint,
218
+ parsed.operation,
219
+ parsed.authScheme,
220
+ void 0,
221
+ options
222
+ );
223
+ }
224
+ export {
225
+ RestApiTool,
226
+ createRestApiTool,
227
+ prepareRequestBody,
228
+ prepareRequestParams
229
+ };
@@ -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 '${skillName}' from registry: ${e.message || e}`,
83
+ error_code: "REGISTRY_ERROR"
84
+ };
85
+ }
95
86
  if (!skill) {
96
87
  return {
97
88
  error: `Skill '${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;