@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.
- package/dist/cjs/agents/base_agent.js +19 -1
- package/dist/cjs/agents/functions.js +4 -0
- package/dist/cjs/agents/instructions.js +81 -33
- package/dist/cjs/agents/invocation_context.js +0 -1
- package/dist/cjs/agents/llm_agent.js +52 -5
- package/dist/cjs/agents/processors/agent_transfer_llm_request_processor.js +7 -0
- package/dist/cjs/agents/processors/basic_llm_request_processor.js +8 -1
- package/dist/cjs/agents/processors/content_processor_utils.js +37 -24
- package/dist/cjs/agents/processors/content_request_processor.js +7 -0
- package/dist/cjs/agents/processors/context_compactor_request_processor.js +12 -0
- package/dist/cjs/agents/processors/identity_llm_request_processor.js +7 -0
- package/dist/cjs/agents/processors/instructions_llm_request_processor.js +5 -0
- package/dist/cjs/agents/processors/request_confirmation_llm_request_processor.js +9 -1
- package/dist/cjs/agents/processors/tool_filter_request_processor.js +7 -1
- package/dist/cjs/auth/auth_preprocessor.js +12 -10
- package/dist/cjs/auth/oauth2/oauth2_discovery.js +26 -2
- package/dist/cjs/code_executors/agent_engine_sandbox_code_executor.js +305 -0
- package/dist/cjs/code_executors/code_execution_utils.js +1 -1
- package/dist/cjs/code_executors/code_executor_context.js +7 -7
- package/dist/cjs/common.js +50 -0
- package/dist/cjs/context/summarizers/llm_summarizer.js +11 -0
- package/dist/cjs/context/token_based_context_compactor.js +1 -1
- package/dist/cjs/events/event.js +4 -2
- package/dist/cjs/index.js +14 -0
- package/dist/cjs/integrations/agent_registry/agent_registry.js +362 -0
- package/dist/cjs/integrations/agent_registry/agent_registry_mcp_toolset.js +122 -0
- package/dist/cjs/integrations/agent_registry/helpers.js +57 -0
- package/dist/cjs/integrations/agent_registry/types.js +50 -0
- package/dist/cjs/memory/vertex_ai_memory_bank_service.js +496 -0
- package/dist/cjs/models/gemini_llm_connection.js +62 -19
- package/dist/cjs/models/google_llm.js +26 -8
- package/dist/cjs/plugins/security_plugin.js +16 -0
- package/dist/cjs/runner/in_memory_runner.js +10 -5
- package/dist/cjs/runner/runner.js +32 -2
- package/dist/cjs/sessions/base_session_service.js +13 -2
- package/dist/cjs/sessions/database_session_service.js +51 -5
- package/dist/cjs/sessions/db/schema.js +45 -10
- package/dist/cjs/sessions/in_memory_session_service.js +72 -15
- package/dist/cjs/sessions/registry.js +4 -0
- package/dist/cjs/sessions/vertex_ai_session_service.js +429 -0
- package/dist/cjs/skills/gcp_skill_registry.js +104 -0
- package/dist/cjs/skills/loader.js +65 -0
- package/dist/cjs/skills/skill_registry.js +27 -0
- package/dist/cjs/tools/agent_tool.js +10 -5
- package/dist/cjs/tools/exit_loop_tool.js +9 -0
- package/dist/cjs/tools/function_tool.js +7 -2
- package/dist/cjs/tools/google_maps_grounding_tool.js +80 -0
- package/dist/cjs/tools/long_running_tool.js +2 -1
- package/dist/cjs/tools/mcp/mcp_session_manager.js +11 -0
- package/dist/cjs/tools/mcp/mcp_tool.js +10 -6
- package/dist/cjs/tools/mcp/mcp_toolset.js +26 -3
- package/dist/cjs/tools/openapi_tool/auth/auth_helpers.js +78 -0
- package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +84 -0
- package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +133 -0
- package/dist/cjs/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +232 -0
- package/dist/cjs/tools/openapi_tool/openapi_spec_parser/operation_parser.js +224 -0
- package/dist/cjs/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +127 -0
- package/dist/cjs/tools/openapi_tool/openapi_toolset.js +133 -0
- package/dist/cjs/tools/openapi_tool/rest_api_tool.js +256 -0
- package/dist/cjs/tools/skill/load_skill_resource_tool.js +27 -28
- package/dist/cjs/tools/skill/load_skill_tool.js +12 -1
- package/dist/cjs/tools/skill/run_skill_script_tool.js +12 -1
- package/dist/cjs/tools/skill/search_skills_tool.js +108 -0
- package/dist/cjs/tools/skill/skill_toolset.js +40 -5
- package/dist/cjs/tools/vertex_rag_retrieval_tool.js +64 -0
- package/dist/cjs/utils/async_queue.js +88 -0
- package/dist/cjs/utils/case_utils.js +53 -0
- package/dist/cjs/utils/env_aware_utils.js +4 -0
- package/dist/cjs/utils/file_utils.js +28 -0
- package/dist/cjs/utils/gemini_schema_util.js +18 -0
- package/dist/cjs/utils/live_connection_utils.js +284 -0
- package/dist/cjs/utils/model_name.js +9 -0
- package/dist/cjs/utils/partial_copy.js +51 -0
- package/dist/cjs/utils/streaming_utils.js +169 -122
- package/dist/cjs/utils/vertex_ai_utils.js +50 -0
- package/dist/cjs/version.js +1 -1
- package/dist/esm/agents/base_agent.js +19 -1
- package/dist/esm/agents/functions.js +4 -0
- package/dist/esm/agents/instructions.js +81 -33
- package/dist/esm/agents/invocation_context.js +0 -1
- package/dist/esm/agents/llm_agent.js +53 -5
- package/dist/esm/agents/processors/agent_transfer_llm_request_processor.js +7 -0
- package/dist/esm/agents/processors/basic_llm_request_processor.js +8 -1
- package/dist/esm/agents/processors/content_processor_utils.js +35 -23
- package/dist/esm/agents/processors/content_request_processor.js +7 -0
- package/dist/esm/agents/processors/context_compactor_request_processor.js +12 -0
- package/dist/esm/agents/processors/identity_llm_request_processor.js +7 -0
- package/dist/esm/agents/processors/instructions_llm_request_processor.js +5 -0
- package/dist/esm/agents/processors/request_confirmation_llm_request_processor.js +9 -1
- package/dist/esm/agents/processors/tool_filter_request_processor.js +7 -1
- package/dist/esm/auth/auth_preprocessor.js +12 -10
- package/dist/esm/auth/oauth2/oauth2_discovery.js +26 -2
- package/dist/esm/code_executors/agent_engine_sandbox_code_executor.js +281 -0
- package/dist/esm/code_executors/code_execution_utils.js +1 -1
- package/dist/esm/code_executors/code_executor_context.js +7 -7
- package/dist/esm/common.js +43 -1
- package/dist/esm/context/summarizers/llm_summarizer.js +11 -0
- package/dist/esm/context/token_based_context_compactor.js +1 -1
- package/dist/esm/events/event.js +4 -2
- package/dist/esm/index.js +11 -0
- package/dist/esm/integrations/agent_registry/agent_registry.js +333 -0
- package/dist/esm/integrations/agent_registry/agent_registry_mcp_toolset.js +96 -0
- package/dist/esm/integrations/agent_registry/helpers.js +28 -0
- package/dist/esm/integrations/agent_registry/types.js +20 -0
- package/dist/esm/memory/vertex_ai_memory_bank_service.js +468 -0
- package/dist/esm/models/gemini_llm_connection.js +62 -19
- package/dist/esm/models/google_llm.js +26 -8
- package/dist/esm/plugins/security_plugin.js +16 -0
- package/dist/esm/runner/in_memory_runner.js +10 -5
- package/dist/esm/runner/runner.js +32 -2
- package/dist/esm/sessions/base_session_service.js +11 -1
- package/dist/esm/sessions/database_session_service.js +51 -5
- package/dist/esm/sessions/db/schema.js +44 -10
- package/dist/esm/sessions/in_memory_session_service.js +74 -16
- package/dist/esm/sessions/registry.js +7 -0
- package/dist/esm/sessions/vertex_ai_session_service.js +405 -0
- package/dist/esm/skills/gcp_skill_registry.js +78 -0
- package/dist/esm/skills/loader.js +64 -0
- package/dist/esm/skills/skill_registry.js +7 -0
- package/dist/esm/tools/agent_tool.js +10 -5
- package/dist/esm/tools/exit_loop_tool.js +9 -0
- package/dist/esm/tools/function_tool.js +7 -2
- package/dist/esm/tools/google_maps_grounding_tool.js +54 -0
- package/dist/esm/tools/long_running_tool.js +2 -1
- package/dist/esm/tools/mcp/mcp_session_manager.js +11 -0
- package/dist/esm/tools/mcp/mcp_tool.js +10 -6
- package/dist/esm/tools/mcp/mcp_toolset.js +26 -3
- package/dist/esm/tools/openapi_tool/auth/auth_helpers.js +48 -0
- package/dist/esm/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +60 -0
- package/dist/esm/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +111 -0
- package/dist/esm/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +206 -0
- package/dist/esm/tools/openapi_tool/openapi_spec_parser/operation_parser.js +198 -0
- package/dist/esm/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +101 -0
- package/dist/esm/tools/openapi_tool/openapi_toolset.js +97 -0
- package/dist/esm/tools/openapi_tool/rest_api_tool.js +229 -0
- package/dist/esm/tools/skill/load_skill_resource_tool.js +26 -27
- package/dist/esm/tools/skill/load_skill_tool.js +12 -1
- package/dist/esm/tools/skill/run_skill_script_tool.js +12 -1
- package/dist/esm/tools/skill/search_skills_tool.js +82 -0
- package/dist/esm/tools/skill/skill_toolset.js +40 -5
- package/dist/esm/tools/vertex_rag_retrieval_tool.js +36 -0
- package/dist/esm/utils/async_queue.js +60 -0
- package/dist/esm/utils/case_utils.js +25 -0
- package/dist/esm/utils/env_aware_utils.js +4 -0
- package/dist/esm/utils/file_utils.js +26 -0
- package/dist/esm/utils/gemini_schema_util.js +18 -0
- package/dist/esm/utils/live_connection_utils.js +256 -0
- package/dist/esm/utils/model_name.js +8 -0
- package/dist/esm/utils/partial_copy.js +23 -0
- package/dist/esm/utils/streaming_utils.js +167 -121
- package/dist/esm/utils/vertex_ai_utils.js +22 -0
- package/dist/esm/version.js +1 -1
- package/dist/types/a2a/a2a_remote_agent.d.ts +14 -0
- package/dist/types/a2a/a2a_remote_agent_utils.d.ts +29 -4
- package/dist/types/a2a/event_converter_utils.d.ts +14 -1
- package/dist/types/a2a/metadata_converter_utils.d.ts +18 -0
- package/dist/types/a2a/part_converter_utils.d.ts +51 -6
- package/dist/types/agents/invocation_context.d.ts +0 -9
- package/dist/types/agents/llm_agent.d.ts +14 -0
- package/dist/types/agents/processors/agent_transfer_llm_request_processor.d.ts +14 -0
- package/dist/types/agents/processors/base_llm_processor.d.ts +12 -4
- package/dist/types/agents/processors/basic_llm_request_processor.d.ts +12 -0
- package/dist/types/agents/processors/content_processor_utils.d.ts +26 -0
- package/dist/types/agents/processors/content_request_processor.d.ts +16 -0
- package/dist/types/agents/processors/context_compactor_request_processor.d.ts +12 -0
- package/dist/types/agents/processors/identity_llm_request_processor.d.ts +11 -0
- package/dist/types/agents/processors/request_confirmation_llm_request_processor.d.ts +14 -1
- package/dist/types/agents/processors/tool_filter_request_processor.d.ts +12 -1
- package/dist/types/agents/run_config.d.ts +15 -0
- package/dist/types/code_executors/agent_engine_sandbox_code_executor.d.ts +51 -0
- package/dist/types/common.d.ts +19 -1
- package/dist/types/context/summarizers/llm_summarizer.d.ts +17 -0
- package/dist/types/events/event_actions.d.ts +25 -8
- package/dist/types/events/structured_events.d.ts +13 -0
- package/dist/types/examples/example_util.d.ts +25 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/integrations/agent_registry/agent_registry.d.ts +94 -0
- package/dist/types/integrations/agent_registry/agent_registry_mcp_toolset.d.ts +62 -0
- package/dist/types/integrations/agent_registry/helpers.d.ts +7 -0
- package/dist/types/integrations/agent_registry/types.d.ts +101 -0
- package/dist/types/memory/vertex_ai_memory_bank_service.d.ts +52 -0
- package/dist/types/models/base_llm_connection.d.ts +10 -0
- package/dist/types/models/gemini_llm_connection.d.ts +15 -4
- package/dist/types/models/llm_response.d.ts +10 -1
- package/dist/types/plugins/security_plugin.d.ts +30 -0
- package/dist/types/runner/in_memory_runner.d.ts +28 -1
- package/dist/types/runner/runner.d.ts +47 -0
- package/dist/types/sessions/base_session_service.d.ts +22 -0
- package/dist/types/sessions/database_session_service.d.ts +1 -1
- package/dist/types/sessions/db/schema.d.ts +1 -0
- package/dist/types/sessions/in_memory_session_service.d.ts +1 -1
- package/dist/types/sessions/vertex_ai_session_service.d.ts +37 -0
- package/dist/types/skills/gcp_skill_registry.d.ts +24 -0
- package/dist/types/skills/loader.d.ts +7 -0
- package/dist/types/skills/skill.d.ts +1 -1
- package/dist/types/skills/skill_registry.d.ts +29 -0
- package/dist/types/tools/exit_loop_tool.d.ts +9 -0
- package/dist/types/tools/function_tool.d.ts +22 -2
- package/dist/types/tools/google_maps_grounding_tool.d.ts +22 -0
- package/dist/types/tools/long_running_tool.d.ts +11 -1
- package/dist/types/tools/mcp/mcp_session_manager.d.ts +3 -0
- package/dist/types/tools/mcp/mcp_toolset.d.ts +2 -1
- package/dist/types/tools/openapi_tool/auth/auth_helpers.d.ts +25 -0
- package/dist/types/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.d.ts +20 -0
- package/dist/types/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.d.ts +20 -0
- package/dist/types/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.d.ts +34 -0
- package/dist/types/tools/openapi_tool/openapi_spec_parser/operation_parser.d.ts +59 -0
- package/dist/types/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.d.ts +23 -0
- package/dist/types/tools/openapi_tool/openapi_toolset.d.ts +27 -0
- package/dist/types/tools/openapi_tool/rest_api_tool.d.ts +50 -0
- package/dist/types/tools/skill/load_skill_resource_tool.d.ts +1 -1
- package/dist/types/tools/skill/search_skills_tool.d.ts +14 -0
- package/dist/types/tools/skill/skill_toolset.d.ts +5 -0
- package/dist/types/tools/vertex_rag_retrieval_tool.d.ts +42 -0
- package/dist/types/utils/async_queue.d.ts +18 -0
- package/dist/types/utils/case_utils.d.ts +12 -0
- package/dist/types/utils/file_utils.d.ts +2 -0
- package/dist/types/utils/live_connection_utils.d.ts +30 -0
- package/dist/types/utils/model_name.d.ts +7 -0
- package/dist/types/utils/partial_copy.d.ts +13 -0
- package/dist/types/utils/streaming_utils.d.ts +7 -17
- package/dist/types/utils/vertex_ai_utils.d.ts +14 -0
- package/dist/types/version.d.ts +1 -1
- package/dist/web/agents/base_agent.js +31 -1
- package/dist/web/agents/functions.js +4 -0
- package/dist/web/agents/instructions.js +81 -33
- package/dist/web/agents/invocation_context.js +0 -1
- package/dist/web/agents/llm_agent.js +53 -5
- package/dist/web/agents/processors/agent_transfer_llm_request_processor.js +7 -0
- package/dist/web/agents/processors/basic_llm_request_processor.js +8 -1
- package/dist/web/agents/processors/content_processor_utils.js +53 -23
- package/dist/web/agents/processors/content_request_processor.js +7 -0
- package/dist/web/agents/processors/context_compactor_request_processor.js +12 -0
- package/dist/web/agents/processors/identity_llm_request_processor.js +7 -0
- package/dist/web/agents/processors/instructions_llm_request_processor.js +5 -0
- package/dist/web/agents/processors/request_confirmation_llm_request_processor.js +9 -1
- package/dist/web/agents/processors/tool_filter_request_processor.js +7 -1
- package/dist/web/auth/auth_preprocessor.js +12 -10
- package/dist/web/auth/oauth2/oauth2_discovery.js +26 -2
- package/dist/web/code_executors/agent_engine_sandbox_code_executor.js +281 -0
- package/dist/web/code_executors/code_execution_utils.js +1 -1
- package/dist/web/code_executors/code_executor_context.js +7 -7
- package/dist/web/common.js +43 -1
- package/dist/web/context/summarizers/llm_summarizer.js +11 -0
- package/dist/web/context/token_based_context_compactor.js +1 -1
- package/dist/web/events/event.js +4 -2
- package/dist/web/index.js +11 -0
- package/dist/web/integrations/agent_registry/agent_registry.js +333 -0
- package/dist/web/integrations/agent_registry/agent_registry_mcp_toolset.js +109 -0
- package/dist/web/integrations/agent_registry/helpers.js +28 -0
- package/dist/web/integrations/agent_registry/types.js +20 -0
- package/dist/web/memory/vertex_ai_memory_bank_service.js +475 -0
- package/dist/web/models/gemini_llm_connection.js +75 -19
- package/dist/web/models/google_llm.js +26 -8
- package/dist/web/plugins/security_plugin.js +16 -0
- package/dist/web/runner/in_memory_runner.js +10 -5
- package/dist/web/runner/runner.js +32 -2
- package/dist/web/sessions/base_session_service.js +11 -1
- package/dist/web/sessions/database_session_service.js +51 -5
- package/dist/web/sessions/db/schema.js +44 -10
- package/dist/web/sessions/in_memory_session_service.js +74 -16
- package/dist/web/sessions/registry.js +7 -0
- package/dist/web/sessions/vertex_ai_session_service.js +416 -0
- package/dist/web/skills/gcp_skill_registry.js +78 -0
- package/dist/web/skills/loader.js +64 -0
- package/dist/web/skills/skill_registry.js +7 -0
- package/dist/web/tools/agent_tool.js +10 -5
- package/dist/web/tools/exit_loop_tool.js +9 -0
- package/dist/web/tools/function_tool.js +7 -2
- package/dist/web/tools/google_maps_grounding_tool.js +54 -0
- package/dist/web/tools/long_running_tool.js +2 -1
- package/dist/web/tools/mcp/mcp_session_manager.js +11 -0
- package/dist/web/tools/mcp/mcp_tool.js +10 -6
- package/dist/web/tools/mcp/mcp_toolset.js +26 -3
- package/dist/web/tools/openapi_tool/auth/auth_helpers.js +48 -0
- package/dist/web/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +60 -0
- package/dist/web/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +111 -0
- package/dist/web/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +221 -0
- package/dist/web/tools/openapi_tool/openapi_spec_parser/operation_parser.js +198 -0
- package/dist/web/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +101 -0
- package/dist/web/tools/openapi_tool/openapi_toolset.js +97 -0
- package/dist/web/tools/openapi_tool/rest_api_tool.js +229 -0
- package/dist/web/tools/skill/load_skill_resource_tool.js +26 -27
- package/dist/web/tools/skill/load_skill_tool.js +12 -1
- package/dist/web/tools/skill/run_skill_script_tool.js +12 -1
- package/dist/web/tools/skill/search_skills_tool.js +82 -0
- package/dist/web/tools/skill/skill_toolset.js +40 -5
- package/dist/web/tools/vertex_rag_retrieval_tool.js +36 -0
- package/dist/web/utils/async_queue.js +60 -0
- package/dist/web/utils/case_utils.js +25 -0
- package/dist/web/utils/env_aware_utils.js +4 -0
- package/dist/web/utils/file_utils.js +26 -0
- package/dist/web/utils/gemini_schema_util.js +18 -0
- package/dist/web/utils/live_connection_utils.js +254 -0
- package/dist/web/utils/model_name.js +8 -0
- package/dist/web/utils/partial_copy.js +23 -0
- package/dist/web/utils/streaming_utils.js +221 -122
- package/dist/web/utils/vertex_ai_utils.js +22 -0
- package/dist/web/version.js +1 -1
- package/package.json +4 -1
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
var __create = Object.create;
|
|
9
|
+
var __defProp = Object.defineProperty;
|
|
10
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
11
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
12
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
13
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
14
|
+
var __export = (target, all) => {
|
|
15
|
+
for (var name in all)
|
|
16
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
17
|
+
};
|
|
18
|
+
var __copyProps = (to, from, except, desc) => {
|
|
19
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
20
|
+
for (let key of __getOwnPropNames(from))
|
|
21
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
22
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
23
|
+
}
|
|
24
|
+
return to;
|
|
25
|
+
};
|
|
26
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
27
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
28
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
29
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
30
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
31
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
32
|
+
mod
|
|
33
|
+
));
|
|
34
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
35
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
36
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
37
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
38
|
+
if (decorator = decorators[i])
|
|
39
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
40
|
+
if (kind && result) __defProp(target, key, result);
|
|
41
|
+
return result;
|
|
42
|
+
};
|
|
43
|
+
var openapi_toolset_exports = {};
|
|
44
|
+
__export(openapi_toolset_exports, {
|
|
45
|
+
OpenAPIToolset: () => OpenAPIToolset
|
|
46
|
+
});
|
|
47
|
+
module.exports = __toCommonJS(openapi_toolset_exports);
|
|
48
|
+
var import_js_yaml = __toESM(require("js-yaml"), 1);
|
|
49
|
+
var import_experimental = require("../../utils/experimental.js");
|
|
50
|
+
var import_base_toolset = require("../base_toolset.js");
|
|
51
|
+
var import_openapi_spec_parser = require("./openapi_spec_parser/openapi_spec_parser.js");
|
|
52
|
+
var import_rest_api_tool = require("./rest_api_tool.js");
|
|
53
|
+
/**
|
|
54
|
+
* @license
|
|
55
|
+
* Copyright 2026 Google LLC
|
|
56
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
57
|
+
*/
|
|
58
|
+
let OpenAPIToolset = class extends import_base_toolset.BaseToolset {
|
|
59
|
+
constructor(options = {}) {
|
|
60
|
+
super(options.toolFilter || [], options.prefix);
|
|
61
|
+
this.tools = [];
|
|
62
|
+
let spec = options.specDict;
|
|
63
|
+
if (!spec && options.specStr) {
|
|
64
|
+
if (options.specType === "yaml" || !options.specType && options.specStr.trim().startsWith("---")) {
|
|
65
|
+
spec = import_js_yaml.default.load(options.specStr);
|
|
66
|
+
} else {
|
|
67
|
+
spec = JSON.parse(options.specStr);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (!spec) {
|
|
71
|
+
throw new Error("Either specDict or specStr must be provided.");
|
|
72
|
+
}
|
|
73
|
+
const parser = new import_openapi_spec_parser.OpenApiSpecParser({
|
|
74
|
+
preservePropertyNames: options.preservePropertyNames
|
|
75
|
+
});
|
|
76
|
+
const parsedOperations = parser.parse(spec);
|
|
77
|
+
for (const op of parsedOperations) {
|
|
78
|
+
let toolName = op.name;
|
|
79
|
+
if (this.prefix) {
|
|
80
|
+
toolName = `${this.prefix}_${toolName}`;
|
|
81
|
+
}
|
|
82
|
+
const tool = (0, import_rest_api_tool.createRestApiTool)(
|
|
83
|
+
{
|
|
84
|
+
name: toolName,
|
|
85
|
+
description: op.description,
|
|
86
|
+
endpoint: op.endpoint,
|
|
87
|
+
operation: op.operation,
|
|
88
|
+
authScheme: op.authScheme
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
preservePropertyNames: options.preservePropertyNames,
|
|
92
|
+
headerProvider: options.headerProvider,
|
|
93
|
+
credentialKey: options.credentialKey
|
|
94
|
+
}
|
|
95
|
+
);
|
|
96
|
+
this.tools.push(tool);
|
|
97
|
+
}
|
|
98
|
+
if (options.authScheme || options.authCredential) {
|
|
99
|
+
for (const tool of this.tools) {
|
|
100
|
+
if (options.authScheme) tool.configureAuthScheme(options.authScheme);
|
|
101
|
+
if (options.authCredential)
|
|
102
|
+
tool.configureAuthCredential(options.authCredential);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
async getTools(context) {
|
|
107
|
+
return this.tools.filter((tool) => {
|
|
108
|
+
if (Array.isArray(this.toolFilter) && this.toolFilter.length > 0) {
|
|
109
|
+
return this.toolFilter.includes(tool.name);
|
|
110
|
+
}
|
|
111
|
+
if (context) {
|
|
112
|
+
return this.isToolSelected(tool, context);
|
|
113
|
+
}
|
|
114
|
+
return true;
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
async close() {
|
|
118
|
+
return Promise.resolve();
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
__decorateClass([
|
|
122
|
+
import_experimental.experimental
|
|
123
|
+
], OpenAPIToolset.prototype, "getTools", 1);
|
|
124
|
+
__decorateClass([
|
|
125
|
+
import_experimental.experimental
|
|
126
|
+
], OpenAPIToolset.prototype, "close", 1);
|
|
127
|
+
OpenAPIToolset = __decorateClass([
|
|
128
|
+
import_experimental.experimental
|
|
129
|
+
], OpenAPIToolset);
|
|
130
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
131
|
+
0 && (module.exports = {
|
|
132
|
+
OpenAPIToolset
|
|
133
|
+
});
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
11
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
12
|
+
var __export = (target, all) => {
|
|
13
|
+
for (var name in all)
|
|
14
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
15
|
+
};
|
|
16
|
+
var __copyProps = (to, from, except, desc) => {
|
|
17
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
18
|
+
for (let key of __getOwnPropNames(from))
|
|
19
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
20
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
21
|
+
}
|
|
22
|
+
return to;
|
|
23
|
+
};
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
26
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
27
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
28
|
+
if (decorator = decorators[i])
|
|
29
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
30
|
+
if (kind && result) __defProp(target, key, result);
|
|
31
|
+
return result;
|
|
32
|
+
};
|
|
33
|
+
var rest_api_tool_exports = {};
|
|
34
|
+
__export(rest_api_tool_exports, {
|
|
35
|
+
RestApiTool: () => RestApiTool,
|
|
36
|
+
createRestApiTool: () => createRestApiTool,
|
|
37
|
+
prepareRequestBody: () => prepareRequestBody,
|
|
38
|
+
prepareRequestParams: () => prepareRequestParams
|
|
39
|
+
});
|
|
40
|
+
module.exports = __toCommonJS(rest_api_tool_exports);
|
|
41
|
+
var import_experimental = require("../../utils/experimental.js");
|
|
42
|
+
var import_base_tool = require("../base_tool.js");
|
|
43
|
+
var import_auth_helpers = require("./auth/auth_helpers.js");
|
|
44
|
+
var import_operation_parser = require("./openapi_spec_parser/operation_parser.js");
|
|
45
|
+
var import_tool_auth_handler = require("./openapi_spec_parser/tool_auth_handler.js");
|
|
46
|
+
/**
|
|
47
|
+
* @license
|
|
48
|
+
* Copyright 2026 Google LLC
|
|
49
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
50
|
+
*/
|
|
51
|
+
let RestApiTool = class extends import_base_tool.BaseTool {
|
|
52
|
+
constructor(name, description, endpoint, operation, authScheme, authCredential, options = {}) {
|
|
53
|
+
super({ name, description });
|
|
54
|
+
this.endpoint = endpoint;
|
|
55
|
+
this.operation = operation;
|
|
56
|
+
this.authScheme = authScheme;
|
|
57
|
+
this.authCredential = authCredential;
|
|
58
|
+
this.authScheme = authScheme;
|
|
59
|
+
this.authCredential = authCredential;
|
|
60
|
+
this.headerProvider = options.headerProvider;
|
|
61
|
+
this.credentialKey = options.credentialKey;
|
|
62
|
+
this.operationParser = new import_operation_parser.OperationParser(operation, options);
|
|
63
|
+
}
|
|
64
|
+
configureAuthScheme(authScheme) {
|
|
65
|
+
this.authScheme = authScheme;
|
|
66
|
+
}
|
|
67
|
+
configureAuthCredential(authCredential) {
|
|
68
|
+
this.authCredential = authCredential;
|
|
69
|
+
}
|
|
70
|
+
configureCredentialKey(credentialKey) {
|
|
71
|
+
this.credentialKey = credentialKey;
|
|
72
|
+
}
|
|
73
|
+
_getDeclaration() {
|
|
74
|
+
const schema = this.operationParser.getJsonSchema();
|
|
75
|
+
return {
|
|
76
|
+
name: this.name,
|
|
77
|
+
description: this.description,
|
|
78
|
+
parameters: schema
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
async runAsync(request) {
|
|
82
|
+
const context = request.toolContext;
|
|
83
|
+
const args = request.args;
|
|
84
|
+
const authHandler = import_tool_auth_handler.ToolAuthHandler.fromToolContext(
|
|
85
|
+
context,
|
|
86
|
+
this.authScheme,
|
|
87
|
+
this.authCredential,
|
|
88
|
+
{ credentialKey: this.credentialKey }
|
|
89
|
+
);
|
|
90
|
+
const authResult = await authHandler.prepareAuthCredentials();
|
|
91
|
+
if (authResult.state === "pending") {
|
|
92
|
+
return {
|
|
93
|
+
pending: true,
|
|
94
|
+
message: "Needs your authorization to access your data."
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
const credential = authResult.authCredential;
|
|
98
|
+
const method = this.endpoint.method.toUpperCase();
|
|
99
|
+
const {
|
|
100
|
+
url: initialUrl,
|
|
101
|
+
headers,
|
|
102
|
+
body: parsedBody,
|
|
103
|
+
bodyData
|
|
104
|
+
} = prepareRequestParams(
|
|
105
|
+
this.endpoint,
|
|
106
|
+
this.operationParser.getParameters(),
|
|
107
|
+
args
|
|
108
|
+
);
|
|
109
|
+
const body = prepareRequestBody(
|
|
110
|
+
this.operation.requestBody,
|
|
111
|
+
parsedBody,
|
|
112
|
+
bodyData,
|
|
113
|
+
headers
|
|
114
|
+
);
|
|
115
|
+
const url = (0, import_auth_helpers.applyCredential)(
|
|
116
|
+
initialUrl,
|
|
117
|
+
headers,
|
|
118
|
+
credential,
|
|
119
|
+
this.authScheme
|
|
120
|
+
);
|
|
121
|
+
if (this.headerProvider) {
|
|
122
|
+
const providerHeaders = this.headerProvider(context);
|
|
123
|
+
Object.assign(headers, providerHeaders);
|
|
124
|
+
}
|
|
125
|
+
try {
|
|
126
|
+
const response = await globalThis.fetch(url, {
|
|
127
|
+
method,
|
|
128
|
+
headers,
|
|
129
|
+
// eslint-disable-next-line no-undef
|
|
130
|
+
body
|
|
131
|
+
});
|
|
132
|
+
const contentType = response.headers.get("content-type");
|
|
133
|
+
if (contentType && contentType.includes("application/json")) {
|
|
134
|
+
return await response.json();
|
|
135
|
+
} else {
|
|
136
|
+
return await response.text();
|
|
137
|
+
}
|
|
138
|
+
} catch (error) {
|
|
139
|
+
return {
|
|
140
|
+
error: `Failed to execute API call: ${error.message}`
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
__decorateClass([
|
|
146
|
+
import_experimental.experimental
|
|
147
|
+
], RestApiTool.prototype, "configureAuthScheme", 1);
|
|
148
|
+
__decorateClass([
|
|
149
|
+
import_experimental.experimental
|
|
150
|
+
], RestApiTool.prototype, "configureAuthCredential", 1);
|
|
151
|
+
__decorateClass([
|
|
152
|
+
import_experimental.experimental
|
|
153
|
+
], RestApiTool.prototype, "configureCredentialKey", 1);
|
|
154
|
+
__decorateClass([
|
|
155
|
+
import_experimental.experimental
|
|
156
|
+
], RestApiTool.prototype, "_getDeclaration", 1);
|
|
157
|
+
__decorateClass([
|
|
158
|
+
import_experimental.experimental
|
|
159
|
+
], RestApiTool.prototype, "runAsync", 1);
|
|
160
|
+
RestApiTool = __decorateClass([
|
|
161
|
+
import_experimental.experimental
|
|
162
|
+
], RestApiTool);
|
|
163
|
+
function prepareRequestParams(endpoint, parameters, args) {
|
|
164
|
+
const headers = {};
|
|
165
|
+
const queryParams = new URLSearchParams();
|
|
166
|
+
let body = void 0;
|
|
167
|
+
const paramsMap = new Map(parameters.map((p) => [p.name, p]));
|
|
168
|
+
const pathParams = {};
|
|
169
|
+
const bodyData = {};
|
|
170
|
+
for (const [argName, argValue] of Object.entries(args)) {
|
|
171
|
+
const param = paramsMap.get(argName);
|
|
172
|
+
if (!param) continue;
|
|
173
|
+
const originalName = param.originalName;
|
|
174
|
+
const location = param.paramLocation;
|
|
175
|
+
if (location === "path") {
|
|
176
|
+
pathParams[originalName] = String(argValue);
|
|
177
|
+
} else if (location === "query") {
|
|
178
|
+
queryParams.append(originalName, String(argValue));
|
|
179
|
+
} else if (location === "header") {
|
|
180
|
+
headers[originalName] = String(argValue);
|
|
181
|
+
} else if (location === "body") {
|
|
182
|
+
if (originalName === "body" || originalName === "array" || originalName === "") {
|
|
183
|
+
body = argValue;
|
|
184
|
+
} else {
|
|
185
|
+
bodyData[originalName] = argValue;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
let url = `${endpoint.baseUrl}${endpoint.path}`;
|
|
190
|
+
for (const [key, value] of Object.entries(pathParams)) {
|
|
191
|
+
url = url.replace(`{${key}}`, value);
|
|
192
|
+
}
|
|
193
|
+
const urlParts = url.split("?");
|
|
194
|
+
if (urlParts.length > 1) {
|
|
195
|
+
const pathQueryParams = new URLSearchParams(urlParts[1]);
|
|
196
|
+
for (const [key, value] of pathQueryParams.entries()) {
|
|
197
|
+
queryParams.append(key, value);
|
|
198
|
+
}
|
|
199
|
+
url = urlParts[0];
|
|
200
|
+
}
|
|
201
|
+
const queryString = queryParams.toString();
|
|
202
|
+
if (queryString) {
|
|
203
|
+
url += `?${queryString}`;
|
|
204
|
+
}
|
|
205
|
+
return { url, headers, body, bodyData };
|
|
206
|
+
}
|
|
207
|
+
function prepareRequestBody(requestBody, body, bodyData, headers) {
|
|
208
|
+
const finalData = body !== void 0 ? body : Object.keys(bodyData).length > 0 ? bodyData : void 0;
|
|
209
|
+
if (requestBody && "content" in requestBody) {
|
|
210
|
+
const content = requestBody.content;
|
|
211
|
+
for (const [mimeType, _mediaTypeObject] of Object.entries(content)) {
|
|
212
|
+
if (finalData !== void 0) {
|
|
213
|
+
if (mimeType === "application/json" || mimeType.endsWith("+json")) {
|
|
214
|
+
headers["Content-Type"] = mimeType;
|
|
215
|
+
return typeof finalData === "string" ? finalData : JSON.stringify(finalData);
|
|
216
|
+
} else if (mimeType === "application/x-www-form-urlencoded") {
|
|
217
|
+
return new URLSearchParams(finalData);
|
|
218
|
+
} else if (mimeType === "multipart/form-data") {
|
|
219
|
+
const formData = new FormData();
|
|
220
|
+
if (typeof finalData === "object" && finalData !== null) {
|
|
221
|
+
for (const [key, value] of Object.entries(finalData)) {
|
|
222
|
+
formData.append(key, String(value));
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
return formData;
|
|
226
|
+
} else if (mimeType === "text/plain") {
|
|
227
|
+
headers["Content-Type"] = mimeType;
|
|
228
|
+
return String(finalData);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
break;
|
|
232
|
+
}
|
|
233
|
+
} else if (finalData !== void 0) {
|
|
234
|
+
headers["Content-Type"] = "application/json";
|
|
235
|
+
return typeof finalData === "string" ? finalData : JSON.stringify(finalData);
|
|
236
|
+
}
|
|
237
|
+
return void 0;
|
|
238
|
+
}
|
|
239
|
+
function createRestApiTool(parsed, options = {}) {
|
|
240
|
+
return new RestApiTool(
|
|
241
|
+
parsed.name,
|
|
242
|
+
parsed.description,
|
|
243
|
+
parsed.endpoint,
|
|
244
|
+
parsed.operation,
|
|
245
|
+
parsed.authScheme,
|
|
246
|
+
void 0,
|
|
247
|
+
options
|
|
248
|
+
);
|
|
249
|
+
}
|
|
250
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
251
|
+
0 && (module.exports = {
|
|
252
|
+
RestApiTool,
|
|
253
|
+
createRestApiTool,
|
|
254
|
+
prepareRequestBody,
|
|
255
|
+
prepareRequestParams
|
|
256
|
+
});
|
|
@@ -48,6 +48,7 @@ module.exports = __toCommonJS(load_skill_resource_tool_exports);
|
|
|
48
48
|
var import_genai = require("@google/genai");
|
|
49
49
|
var import_node_path = __toESM(require("node:path"), 1);
|
|
50
50
|
var import_experimental = require("../../utils/experimental.js");
|
|
51
|
+
var import_file_utils = require("../../utils/file_utils.js");
|
|
51
52
|
var import_base_tool = require("../base_tool.js");
|
|
52
53
|
/**
|
|
53
54
|
* @license
|
|
@@ -55,30 +56,6 @@ var import_base_tool = require("../base_tool.js");
|
|
|
55
56
|
* SPDX-License-Identifier: Apache-2.0
|
|
56
57
|
*/
|
|
57
58
|
const BINARY_FILE_DETECTED_MSG = "Binary file detected. The content has been injected into the conversation history for you to analyze.";
|
|
58
|
-
const EXTENSION_TO_MIME_TYPE = {
|
|
59
|
-
"pdf": "application/pdf",
|
|
60
|
-
"jpg": "image/jpeg",
|
|
61
|
-
"jpeg": "image/jpeg",
|
|
62
|
-
"png": "image/png",
|
|
63
|
-
"gif": "image/gif",
|
|
64
|
-
"csv": "text/csv",
|
|
65
|
-
"json": "application/json",
|
|
66
|
-
"xml": "application/xml",
|
|
67
|
-
"sh": "text/x-shellscript",
|
|
68
|
-
"bash": "text/x-shellscript",
|
|
69
|
-
"py": "text/x-python",
|
|
70
|
-
"js": "text/javascript",
|
|
71
|
-
"cjs": "text/javascript",
|
|
72
|
-
"mjs": "text/javascript",
|
|
73
|
-
"ts": "text/javascript",
|
|
74
|
-
"cts": "text/javascript",
|
|
75
|
-
"mts": "text/javascript"
|
|
76
|
-
};
|
|
77
|
-
function guessMimeType(filePath) {
|
|
78
|
-
var _a;
|
|
79
|
-
const ext = ((_a = filePath.split(".").pop()) == null ? void 0 : _a.toLowerCase()) || "";
|
|
80
|
-
return EXTENSION_TO_MIME_TYPE[ext] || "application/octet-stream";
|
|
81
|
-
}
|
|
82
59
|
let LoadSkillResourceTool = class extends import_base_tool.BaseTool {
|
|
83
60
|
constructor(toolset) {
|
|
84
61
|
super({
|
|
@@ -107,7 +84,10 @@ let LoadSkillResourceTool = class extends import_base_tool.BaseTool {
|
|
|
107
84
|
}
|
|
108
85
|
};
|
|
109
86
|
}
|
|
110
|
-
async runAsync({
|
|
87
|
+
async runAsync({
|
|
88
|
+
args,
|
|
89
|
+
toolContext
|
|
90
|
+
}) {
|
|
111
91
|
var _a, _b, _c;
|
|
112
92
|
const skillName = args["skill_name"];
|
|
113
93
|
let resourcePath = args["path"];
|
|
@@ -124,7 +104,18 @@ let LoadSkillResourceTool = class extends import_base_tool.BaseTool {
|
|
|
124
104
|
};
|
|
125
105
|
}
|
|
126
106
|
resourcePath = import_node_path.default.posix.normalize(resourcePath);
|
|
127
|
-
|
|
107
|
+
let skill;
|
|
108
|
+
try {
|
|
109
|
+
skill = await this.toolset.getOrFetchSkill(
|
|
110
|
+
skillName,
|
|
111
|
+
toolContext.invocationId
|
|
112
|
+
);
|
|
113
|
+
} catch (e) {
|
|
114
|
+
return {
|
|
115
|
+
error: `Failed to fetch skill '${skillName}' from registry: ${e.message || e}`,
|
|
116
|
+
error_code: "REGISTRY_ERROR"
|
|
117
|
+
};
|
|
118
|
+
}
|
|
128
119
|
if (!skill) {
|
|
129
120
|
return {
|
|
130
121
|
error: `Skill '${skillName}' not found.`,
|
|
@@ -187,7 +178,15 @@ let LoadSkillResourceTool = class extends import_base_tool.BaseTool {
|
|
|
187
178
|
if (response["status"] === BINARY_FILE_DETECTED_MSG) {
|
|
188
179
|
const skillName = response["skill_name"];
|
|
189
180
|
const resourcePath = response["path"];
|
|
190
|
-
|
|
181
|
+
let skill;
|
|
182
|
+
try {
|
|
183
|
+
skill = await this.toolset.getOrFetchSkill(
|
|
184
|
+
skillName,
|
|
185
|
+
request.toolContext.invocationId
|
|
186
|
+
);
|
|
187
|
+
} catch (_e) {
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
191
190
|
if (!skill) continue;
|
|
192
191
|
const skillResources = skill.resources || {};
|
|
193
192
|
let content;
|
|
@@ -197,7 +196,7 @@ let LoadSkillResourceTool = class extends import_base_tool.BaseTool {
|
|
|
197
196
|
content = (_b = skillResources.assets) == null ? void 0 : _b[resourcePath.substring("assets/".length)];
|
|
198
197
|
}
|
|
199
198
|
if (Buffer.isBuffer(content)) {
|
|
200
|
-
const mimeType = guessMimeType(resourcePath);
|
|
199
|
+
const mimeType = (0, import_file_utils.guessMimeType)(resourcePath);
|
|
201
200
|
llmRequest.contents.push({
|
|
202
201
|
role: "user",
|
|
203
202
|
parts: [
|
|
@@ -78,7 +78,18 @@ let LoadSkillTool = class extends import_base_tool.BaseTool {
|
|
|
78
78
|
error_code: "MISSING_SKILL_NAME"
|
|
79
79
|
};
|
|
80
80
|
}
|
|
81
|
-
|
|
81
|
+
let skill;
|
|
82
|
+
try {
|
|
83
|
+
skill = await this.toolset.getOrFetchSkill(
|
|
84
|
+
skillName,
|
|
85
|
+
toolContext.invocationId
|
|
86
|
+
);
|
|
87
|
+
} catch (e) {
|
|
88
|
+
return {
|
|
89
|
+
error: `Failed to fetch skill '${skillName}' from registry: ${e.message || e}`,
|
|
90
|
+
error_code: "REGISTRY_ERROR"
|
|
91
|
+
};
|
|
92
|
+
}
|
|
82
93
|
if (!skill) {
|
|
83
94
|
return {
|
|
84
95
|
error: `Skill '${skillName}' not found.`,
|
|
@@ -111,7 +111,18 @@ let RunSkillScriptTool = class extends import_base_tool.BaseTool {
|
|
|
111
111
|
errorCode: "MISSING_SCRIPT_PATH"
|
|
112
112
|
};
|
|
113
113
|
}
|
|
114
|
-
|
|
114
|
+
let skill;
|
|
115
|
+
try {
|
|
116
|
+
skill = await this.toolset.getOrFetchSkill(
|
|
117
|
+
skillName,
|
|
118
|
+
toolContext.invocationId
|
|
119
|
+
);
|
|
120
|
+
} catch (e) {
|
|
121
|
+
return {
|
|
122
|
+
error: `Failed to fetch skill '${skillName}' from registry: ${e.message || e}`,
|
|
123
|
+
errorCode: "REGISTRY_ERROR"
|
|
124
|
+
};
|
|
125
|
+
}
|
|
115
126
|
if (!skill) {
|
|
116
127
|
return {
|
|
117
128
|
error: `Skill '${skillName}' not found.`,
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
11
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
12
|
+
var __export = (target, all) => {
|
|
13
|
+
for (var name in all)
|
|
14
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
15
|
+
};
|
|
16
|
+
var __copyProps = (to, from, except, desc) => {
|
|
17
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
18
|
+
for (let key of __getOwnPropNames(from))
|
|
19
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
20
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
21
|
+
}
|
|
22
|
+
return to;
|
|
23
|
+
};
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
26
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
27
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
28
|
+
if (decorator = decorators[i])
|
|
29
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
30
|
+
if (kind && result) __defProp(target, key, result);
|
|
31
|
+
return result;
|
|
32
|
+
};
|
|
33
|
+
var search_skills_tool_exports = {};
|
|
34
|
+
__export(search_skills_tool_exports, {
|
|
35
|
+
SearchSkillsTool: () => SearchSkillsTool
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(search_skills_tool_exports);
|
|
38
|
+
var import_genai = require("@google/genai");
|
|
39
|
+
var import_experimental = require("../../utils/experimental.js");
|
|
40
|
+
var import_logger = require("../../utils/logger.js");
|
|
41
|
+
var import_base_tool = require("../base_tool.js");
|
|
42
|
+
/**
|
|
43
|
+
* @license
|
|
44
|
+
* Copyright 2026 Google LLC
|
|
45
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
46
|
+
*/
|
|
47
|
+
let SearchSkillsTool = class extends import_base_tool.BaseTool {
|
|
48
|
+
constructor(toolset) {
|
|
49
|
+
var _a, _b;
|
|
50
|
+
if (!toolset.registry) {
|
|
51
|
+
throw new Error("SearchSkillsTool requires a configured skill registry.");
|
|
52
|
+
}
|
|
53
|
+
super({
|
|
54
|
+
name: "search_skills",
|
|
55
|
+
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."
|
|
56
|
+
});
|
|
57
|
+
this.toolset = toolset;
|
|
58
|
+
}
|
|
59
|
+
_getDeclaration() {
|
|
60
|
+
return {
|
|
61
|
+
name: this.name,
|
|
62
|
+
description: this.description,
|
|
63
|
+
parameters: {
|
|
64
|
+
type: import_genai.Type.OBJECT,
|
|
65
|
+
properties: {
|
|
66
|
+
query: {
|
|
67
|
+
type: import_genai.Type.STRING,
|
|
68
|
+
description: "Semantic or keyword search query."
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
required: ["query"]
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
async runAsync({ args }) {
|
|
76
|
+
const query = args["query"];
|
|
77
|
+
if (!query) {
|
|
78
|
+
return {
|
|
79
|
+
error: "Argument 'query' is required.",
|
|
80
|
+
error_code: "INVALID_ARGUMENTS"
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
const results = await this.toolset.registry.searchSkills(query);
|
|
85
|
+
return results.filter((r) => {
|
|
86
|
+
if (this.toolset.skills[r.name]) {
|
|
87
|
+
import_logger.logger.warn(
|
|
88
|
+
`Skill naming conflict: skill '${r.name}' already exists locally. Registry skill is filtered.`
|
|
89
|
+
);
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
return true;
|
|
93
|
+
});
|
|
94
|
+
} catch (e) {
|
|
95
|
+
return {
|
|
96
|
+
error: `Failed to search skills from registry: ${e.message || e}`,
|
|
97
|
+
error_code: "REGISTRY_ERROR"
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
SearchSkillsTool = __decorateClass([
|
|
103
|
+
import_experimental.experimental
|
|
104
|
+
], SearchSkillsTool);
|
|
105
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
106
|
+
0 && (module.exports = {
|
|
107
|
+
SearchSkillsTool
|
|
108
|
+
});
|