@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,429 @@
|
|
|
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 vertex_ai_session_service_exports = {};
|
|
34
|
+
__export(vertex_ai_session_service_exports, {
|
|
35
|
+
VertexAiSessionService: () => VertexAiSessionService,
|
|
36
|
+
isVertexAiConnectionString: () => isVertexAiConnectionString
|
|
37
|
+
});
|
|
38
|
+
module.exports = __toCommonJS(vertex_ai_session_service_exports);
|
|
39
|
+
var import_client = require("@google-cloud/vertexai/build/src/genai/client.js");
|
|
40
|
+
var import_compacted_event = require("../events/compacted_event.js");
|
|
41
|
+
var import_experimental = require("../utils/experimental.js");
|
|
42
|
+
var import_logger = require("../utils/logger.js");
|
|
43
|
+
var import_vertex_ai_utils = require("../utils/vertex_ai_utils.js");
|
|
44
|
+
var import_partial_copy = require("../utils/partial_copy.js");
|
|
45
|
+
var import_base_session_service = require("./base_session_service.js");
|
|
46
|
+
var import_session = require("./session.js");
|
|
47
|
+
/**
|
|
48
|
+
* @license
|
|
49
|
+
* Copyright 2026 Google LLC
|
|
50
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
51
|
+
*/
|
|
52
|
+
const DEFAULT_MAX_ATTEMPTS = 30;
|
|
53
|
+
const GRPC_NOT_FOUND = 5;
|
|
54
|
+
const HTTP_NOT_FOUND = 404;
|
|
55
|
+
function isVertexAiConnectionString(uri) {
|
|
56
|
+
return (uri == null ? void 0 : uri.startsWith("vertexai://")) || false;
|
|
57
|
+
}
|
|
58
|
+
let VertexAiSessionService = class extends import_base_session_service.BaseSessionService {
|
|
59
|
+
constructor(options) {
|
|
60
|
+
super();
|
|
61
|
+
this.agentEngineId = options.agentEngineId;
|
|
62
|
+
this.projectId = options.projectId;
|
|
63
|
+
this.location = options.location;
|
|
64
|
+
this.expressModeApiKey = (0, import_vertex_ai_utils.getExpressModeApiKey)(
|
|
65
|
+
this.projectId,
|
|
66
|
+
this.location,
|
|
67
|
+
options.expressModeApiKey
|
|
68
|
+
);
|
|
69
|
+
if (!options.sessions) {
|
|
70
|
+
if (!this.expressModeApiKey && (!this.projectId || !this.location)) {
|
|
71
|
+
throw new Error(
|
|
72
|
+
"Either (Project ID and Location) or an expressModeApiKey is required."
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (options.sessions) {
|
|
77
|
+
this.sessions = options.sessions;
|
|
78
|
+
} else {
|
|
79
|
+
const client = new import_client.Client({
|
|
80
|
+
project: this.projectId,
|
|
81
|
+
location: this.location
|
|
82
|
+
});
|
|
83
|
+
this.sessions = client.agentEnginesInternal.sessions;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
getReasoningEngineId(appName) {
|
|
87
|
+
if (this.agentEngineId) {
|
|
88
|
+
return this.agentEngineId;
|
|
89
|
+
}
|
|
90
|
+
if (/^\d+$/.test(appName)) {
|
|
91
|
+
return appName;
|
|
92
|
+
}
|
|
93
|
+
const pattern = /^projects\/([a-zA-Z0-9-_]+)\/locations\/([a-zA-Z0-9-_]+)\/reasoningEngines\/(\d+)$/;
|
|
94
|
+
const match = appName.match(pattern);
|
|
95
|
+
if (!match) {
|
|
96
|
+
throw new Error(
|
|
97
|
+
`App name ${appName} is not valid. It should either be the full ReasoningEngine resource name, or the reasoning engine id.`
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
return match[3];
|
|
101
|
+
}
|
|
102
|
+
async createSession({
|
|
103
|
+
appName,
|
|
104
|
+
userId,
|
|
105
|
+
state,
|
|
106
|
+
sessionId
|
|
107
|
+
}) {
|
|
108
|
+
var _a;
|
|
109
|
+
const reasoningEngineId = this.getReasoningEngineId(appName);
|
|
110
|
+
const filteredState = state ? (0, import_base_session_service.trimTempState)(state) : void 0;
|
|
111
|
+
let apiResponse = await this.sessions.createInternal({
|
|
112
|
+
name: `reasoningEngines/${reasoningEngineId}`,
|
|
113
|
+
userId,
|
|
114
|
+
config: {
|
|
115
|
+
...filteredState ? { sessionState: filteredState } : {},
|
|
116
|
+
...sessionId ? { sessionId } : {}
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
const operationName = apiResponse.name;
|
|
120
|
+
let attempts = 0;
|
|
121
|
+
while (!apiResponse.done && attempts < DEFAULT_MAX_ATTEMPTS) {
|
|
122
|
+
const [nextResponse] = await Promise.all([
|
|
123
|
+
this.sessions.getSessionOperationInternal({
|
|
124
|
+
operationName
|
|
125
|
+
}),
|
|
126
|
+
new Promise((resolve) => setTimeout(resolve, 1e3))
|
|
127
|
+
]);
|
|
128
|
+
apiResponse = nextResponse;
|
|
129
|
+
attempts++;
|
|
130
|
+
}
|
|
131
|
+
if (!apiResponse.done) {
|
|
132
|
+
throw new Error(
|
|
133
|
+
`Session creation operation ${operationName} did not complete in time.`
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
const getSessionResponse = apiResponse.response;
|
|
137
|
+
const id = ((_a = getSessionResponse.name) == null ? void 0 : _a.split("/").pop()) || "";
|
|
138
|
+
return (0, import_session.createSession)({
|
|
139
|
+
id,
|
|
140
|
+
appName,
|
|
141
|
+
userId,
|
|
142
|
+
state: getSessionResponse.sessionState,
|
|
143
|
+
events: [],
|
|
144
|
+
lastUpdateTime: getSessionResponse.updateTime ? Date.parse(getSessionResponse.updateTime) : Date.now()
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
async getSession({
|
|
148
|
+
appName,
|
|
149
|
+
userId,
|
|
150
|
+
sessionId,
|
|
151
|
+
config
|
|
152
|
+
}) {
|
|
153
|
+
const reasoningEngineId = this.getReasoningEngineId(appName);
|
|
154
|
+
const sessionResourceName = `reasoningEngines/${reasoningEngineId}/sessions/${sessionId}`;
|
|
155
|
+
try {
|
|
156
|
+
let getSessionResponse;
|
|
157
|
+
let eventsIterator = [];
|
|
158
|
+
if (config && config.numRecentEvents === 0) {
|
|
159
|
+
getSessionResponse = await this.sessions.get({
|
|
160
|
+
name: sessionResourceName
|
|
161
|
+
});
|
|
162
|
+
} else {
|
|
163
|
+
const listConfig = {};
|
|
164
|
+
if (config && config.afterTimestamp) {
|
|
165
|
+
listConfig.filter = `timestamp>="${new Date(
|
|
166
|
+
config.afterTimestamp
|
|
167
|
+
).toISOString()}"`;
|
|
168
|
+
}
|
|
169
|
+
const [sessionRes, eventsRes] = await Promise.all([
|
|
170
|
+
this.sessions.get({ name: sessionResourceName }),
|
|
171
|
+
this.sessions.events.listInternal({
|
|
172
|
+
name: sessionResourceName,
|
|
173
|
+
config: listConfig
|
|
174
|
+
})
|
|
175
|
+
]);
|
|
176
|
+
getSessionResponse = sessionRes;
|
|
177
|
+
eventsIterator = eventsRes.sessionEvents || [];
|
|
178
|
+
}
|
|
179
|
+
const sessionObj = getSessionResponse;
|
|
180
|
+
if (sessionObj.userId !== userId) {
|
|
181
|
+
throw new Error(
|
|
182
|
+
`Session ${sessionId} does not belong to user ${userId}.`
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
const session = (0, import_session.createSession)({
|
|
186
|
+
id: sessionId,
|
|
187
|
+
appName,
|
|
188
|
+
userId,
|
|
189
|
+
state: sessionObj.sessionState,
|
|
190
|
+
events: [],
|
|
191
|
+
lastUpdateTime: sessionObj.updateTime ? Date.parse(sessionObj.updateTime) : Date.now()
|
|
192
|
+
});
|
|
193
|
+
for (const event of eventsIterator) {
|
|
194
|
+
session.events.push(_fromApiEvent(event));
|
|
195
|
+
}
|
|
196
|
+
if (config && config.numRecentEvents) {
|
|
197
|
+
session.events = session.events.slice(-config.numRecentEvents);
|
|
198
|
+
}
|
|
199
|
+
return session;
|
|
200
|
+
} catch (error) {
|
|
201
|
+
const err = error;
|
|
202
|
+
if (err.code === GRPC_NOT_FOUND || err.code === HTTP_NOT_FOUND) {
|
|
203
|
+
return void 0;
|
|
204
|
+
}
|
|
205
|
+
import_logger.logger.error(`Error getting session from Vertex AI: ${err.message}`);
|
|
206
|
+
throw error;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
async listSessions({
|
|
210
|
+
appName,
|
|
211
|
+
userId,
|
|
212
|
+
limit,
|
|
213
|
+
offset,
|
|
214
|
+
page,
|
|
215
|
+
order
|
|
216
|
+
}) {
|
|
217
|
+
var _a;
|
|
218
|
+
const reasoningEngineId = this.getReasoningEngineId(appName);
|
|
219
|
+
const adkSessions = [];
|
|
220
|
+
let pageToken = void 0;
|
|
221
|
+
do {
|
|
222
|
+
const response = await this.sessions.listInternal({
|
|
223
|
+
name: `reasoningEngines/${reasoningEngineId}`,
|
|
224
|
+
config: {
|
|
225
|
+
...userId ? { filter: `user_id="${userId}"` } : {},
|
|
226
|
+
...pageToken ? { pageToken } : {}
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
const sessions = response.sessions || [];
|
|
230
|
+
for (const sessionObj of sessions) {
|
|
231
|
+
const id = ((_a = sessionObj.name) == null ? void 0 : _a.split("/").pop()) || "";
|
|
232
|
+
adkSessions.push(
|
|
233
|
+
(0, import_session.createSession)({
|
|
234
|
+
id,
|
|
235
|
+
appName,
|
|
236
|
+
userId: sessionObj.userId,
|
|
237
|
+
state: sessionObj.sessionState,
|
|
238
|
+
events: [],
|
|
239
|
+
lastUpdateTime: sessionObj.updateTime ? new Date(sessionObj.updateTime).getTime() : Date.now()
|
|
240
|
+
})
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
pageToken = response.nextPageToken;
|
|
244
|
+
} while (pageToken);
|
|
245
|
+
if (order === "asc") {
|
|
246
|
+
adkSessions.sort(
|
|
247
|
+
(a, b) => a.lastUpdateTime - b.lastUpdateTime || a.id.localeCompare(b.id)
|
|
248
|
+
);
|
|
249
|
+
} else if (order === "desc") {
|
|
250
|
+
adkSessions.sort(
|
|
251
|
+
(a, b) => b.lastUpdateTime - a.lastUpdateTime || a.id.localeCompare(b.id)
|
|
252
|
+
);
|
|
253
|
+
}
|
|
254
|
+
if (limit === void 0) {
|
|
255
|
+
const totalItems2 = adkSessions.length;
|
|
256
|
+
const sliced = offset ? adkSessions.slice(offset) : adkSessions;
|
|
257
|
+
return {
|
|
258
|
+
sessions: sliced,
|
|
259
|
+
page: 1,
|
|
260
|
+
limit: totalItems2,
|
|
261
|
+
totalItems: totalItems2,
|
|
262
|
+
totalPages: totalItems2 === 0 ? 0 : 1
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
const totalItems = adkSessions.length;
|
|
266
|
+
const totalPages = limit === 0 ? 0 : Math.ceil(totalItems / limit);
|
|
267
|
+
let effectiveOffset;
|
|
268
|
+
let effectivePage;
|
|
269
|
+
if (page !== void 0) {
|
|
270
|
+
effectiveOffset = (page - 1) * limit;
|
|
271
|
+
effectivePage = page;
|
|
272
|
+
} else {
|
|
273
|
+
effectiveOffset = offset != null ? offset : 0;
|
|
274
|
+
effectivePage = limit === 0 ? 1 : Math.floor(effectiveOffset / limit) + 1;
|
|
275
|
+
}
|
|
276
|
+
return {
|
|
277
|
+
sessions: adkSessions.slice(effectiveOffset, effectiveOffset + limit),
|
|
278
|
+
page: effectivePage,
|
|
279
|
+
limit,
|
|
280
|
+
totalItems,
|
|
281
|
+
totalPages
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
async deleteSession({
|
|
285
|
+
appName,
|
|
286
|
+
userId: _userId,
|
|
287
|
+
sessionId
|
|
288
|
+
}) {
|
|
289
|
+
const reasoningEngineId = this.getReasoningEngineId(appName);
|
|
290
|
+
await this.sessions.delete({
|
|
291
|
+
name: `reasoningEngines/${reasoningEngineId}/sessions/${sessionId}`
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
async appendEvent({
|
|
295
|
+
session,
|
|
296
|
+
event
|
|
297
|
+
}) {
|
|
298
|
+
await super.appendEvent({ session, event });
|
|
299
|
+
session.lastUpdateTime = event.timestamp;
|
|
300
|
+
const reasoningEngineId = this.getReasoningEngineId(session.appName);
|
|
301
|
+
const customMetadata = { ...event.customMetadata };
|
|
302
|
+
if ((0, import_compacted_event.isCompactedEvent)(event)) {
|
|
303
|
+
customMetadata._compaction = {
|
|
304
|
+
startTime: event.startTime,
|
|
305
|
+
endTime: event.endTime,
|
|
306
|
+
compactedContent: event.compactedContent
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
if (event.usageMetadata) {
|
|
310
|
+
customMetadata._usage_metadata = event.usageMetadata;
|
|
311
|
+
}
|
|
312
|
+
const config = (0, import_partial_copy.partialCopy)(event, [
|
|
313
|
+
"content",
|
|
314
|
+
"actions",
|
|
315
|
+
"errorCode",
|
|
316
|
+
"errorMessage"
|
|
317
|
+
]);
|
|
318
|
+
config.eventMetadata = {
|
|
319
|
+
...(0, import_partial_copy.partialCopy)(event, [
|
|
320
|
+
"partial",
|
|
321
|
+
"turnComplete",
|
|
322
|
+
"interrupted",
|
|
323
|
+
"branch",
|
|
324
|
+
"longRunningToolIds",
|
|
325
|
+
"groundingMetadata"
|
|
326
|
+
]),
|
|
327
|
+
customMetadata: Object.keys(customMetadata).length > 0 ? customMetadata : void 0
|
|
328
|
+
};
|
|
329
|
+
config.rawEvent = JSON.parse(JSON.stringify(event));
|
|
330
|
+
const params = {
|
|
331
|
+
name: `reasoningEngines/${reasoningEngineId}/sessions/${session.id}`,
|
|
332
|
+
author: event.author || "user",
|
|
333
|
+
invocationId: event.invocationId || `inv-${Date.now()}`,
|
|
334
|
+
timestamp: new Date(event.timestamp).toISOString(),
|
|
335
|
+
config
|
|
336
|
+
};
|
|
337
|
+
try {
|
|
338
|
+
await this.sessions.events.append(params);
|
|
339
|
+
} catch (error) {
|
|
340
|
+
import_logger.logger.warn(
|
|
341
|
+
"Failed to append event with rawEvent, falling back...",
|
|
342
|
+
error
|
|
343
|
+
);
|
|
344
|
+
delete config.rawEvent;
|
|
345
|
+
await this.sessions.events.append({
|
|
346
|
+
name: `reasoningEngines/${reasoningEngineId}/sessions/${session.id}`,
|
|
347
|
+
author: event.author || "user",
|
|
348
|
+
invocationId: event.invocationId || `inv-${Date.now()}`,
|
|
349
|
+
timestamp: new Date(event.timestamp).toISOString(),
|
|
350
|
+
config
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
return event;
|
|
354
|
+
}
|
|
355
|
+
};
|
|
356
|
+
VertexAiSessionService = __decorateClass([
|
|
357
|
+
import_experimental.experimental
|
|
358
|
+
], VertexAiSessionService);
|
|
359
|
+
function _fromApiEvent(apiEventObj) {
|
|
360
|
+
var _a, _b, _c;
|
|
361
|
+
const rawEvent = apiEventObj.rawEvent;
|
|
362
|
+
if (rawEvent) {
|
|
363
|
+
const event2 = JSON.parse(JSON.stringify(rawEvent));
|
|
364
|
+
event2.id = ((_a = apiEventObj.name) == null ? void 0 : _a.split("/").pop()) || "";
|
|
365
|
+
event2.invocationId = apiEventObj.invocationId || "";
|
|
366
|
+
event2.author = apiEventObj.author;
|
|
367
|
+
if (apiEventObj.timestamp) {
|
|
368
|
+
event2.timestamp = new Date(apiEventObj.timestamp).getTime();
|
|
369
|
+
}
|
|
370
|
+
return event2;
|
|
371
|
+
}
|
|
372
|
+
const actions = apiEventObj.actions || {};
|
|
373
|
+
const eventMetadata = apiEventObj.eventMetadata || {};
|
|
374
|
+
let customMetadata = eventMetadata.customMetadata;
|
|
375
|
+
let compactionData = null;
|
|
376
|
+
let usageMetadataData = null;
|
|
377
|
+
if (customMetadata) {
|
|
378
|
+
if (customMetadata._compaction) {
|
|
379
|
+
compactionData = customMetadata._compaction;
|
|
380
|
+
delete customMetadata._compaction;
|
|
381
|
+
}
|
|
382
|
+
if (customMetadata._usage_metadata) {
|
|
383
|
+
usageMetadataData = customMetadata._usage_metadata;
|
|
384
|
+
delete customMetadata._usage_metadata;
|
|
385
|
+
}
|
|
386
|
+
if (Object.keys(customMetadata).length === 0) {
|
|
387
|
+
customMetadata = void 0;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
const eventActions = {
|
|
391
|
+
stateDelta: actions["stateDelta"] || {},
|
|
392
|
+
artifactDelta: actions["artifactDelta"] || {},
|
|
393
|
+
requestedAuthConfigs: actions.requestedAuthConfigs || {},
|
|
394
|
+
requestedToolConfirmations: actions["requestedToolConfirmations"] || {},
|
|
395
|
+
skipSummarization: actions["skipSummarization"],
|
|
396
|
+
transferToAgent: actions["transferAgent"],
|
|
397
|
+
escalate: actions["escalate"],
|
|
398
|
+
compaction: compactionData || void 0
|
|
399
|
+
};
|
|
400
|
+
const event = {
|
|
401
|
+
id: ((_b = apiEventObj.name) == null ? void 0 : _b.split("/").pop()) || "",
|
|
402
|
+
invocationId: apiEventObj.invocationId || "",
|
|
403
|
+
author: apiEventObj.author,
|
|
404
|
+
actions: eventActions,
|
|
405
|
+
content: apiEventObj.content,
|
|
406
|
+
timestamp: apiEventObj.timestamp ? new Date(apiEventObj.timestamp).getTime() : Date.now(),
|
|
407
|
+
errorCode: (_c = apiEventObj.errorCode) == null ? void 0 : _c.toString(),
|
|
408
|
+
errorMessage: apiEventObj.errorMessage,
|
|
409
|
+
partial: eventMetadata["partial"],
|
|
410
|
+
turnComplete: eventMetadata["turnComplete"],
|
|
411
|
+
interrupted: eventMetadata["interrupted"],
|
|
412
|
+
branch: eventMetadata["branch"],
|
|
413
|
+
customMetadata,
|
|
414
|
+
longRunningToolIds: eventMetadata["longRunningToolIds"],
|
|
415
|
+
usageMetadata: usageMetadataData
|
|
416
|
+
};
|
|
417
|
+
if (compactionData) {
|
|
418
|
+
event.isCompacted = true;
|
|
419
|
+
event.startTime = compactionData.startTime;
|
|
420
|
+
event.endTime = compactionData.endTime;
|
|
421
|
+
event.compactedContent = compactionData.compactedContent;
|
|
422
|
+
}
|
|
423
|
+
return event;
|
|
424
|
+
}
|
|
425
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
426
|
+
0 && (module.exports = {
|
|
427
|
+
VertexAiSessionService,
|
|
428
|
+
isVertexAiConnectionString
|
|
429
|
+
});
|
|
@@ -0,0 +1,104 @@
|
|
|
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 gcp_skill_registry_exports = {};
|
|
34
|
+
__export(gcp_skill_registry_exports, {
|
|
35
|
+
GCPSkillRegistry: () => GCPSkillRegistry
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(gcp_skill_registry_exports);
|
|
38
|
+
var import_vertexai = require("@google-cloud/vertexai");
|
|
39
|
+
var import_experimental = require("../utils/experimental.js");
|
|
40
|
+
var import_loader = require("./loader.js");
|
|
41
|
+
/**
|
|
42
|
+
* @license
|
|
43
|
+
* Copyright 2026 Google LLC
|
|
44
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
45
|
+
*/
|
|
46
|
+
let GCPSkillRegistry = class {
|
|
47
|
+
constructor(options = {}) {
|
|
48
|
+
this.projectId = options.projectId || process.env.GOOGLE_CLOUD_PROJECT;
|
|
49
|
+
this.location = options.location || process.env.GOOGLE_CLOUD_LOCATION;
|
|
50
|
+
this.client = options.client || new import_vertexai.Client({
|
|
51
|
+
project: this.projectId,
|
|
52
|
+
location: this.location
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
async getSkill(name) {
|
|
56
|
+
const apiClient = this.client.apiClient;
|
|
57
|
+
const httpResponse = await apiClient.request({
|
|
58
|
+
path: `skills/${name}`,
|
|
59
|
+
httpMethod: "GET",
|
|
60
|
+
httpOptions: { apiVersion: "v1beta1" }
|
|
61
|
+
});
|
|
62
|
+
const response = await httpResponse.json();
|
|
63
|
+
const zippedFilesystem = response.zippedFilesystem || response.zipped_filesystem;
|
|
64
|
+
if (!zippedFilesystem) {
|
|
65
|
+
throw new Error(`Skill '${name}' does not contain zipped filesystem.`);
|
|
66
|
+
}
|
|
67
|
+
const zipBuffer = Buffer.from(zippedFilesystem, "base64");
|
|
68
|
+
return (0, import_loader.loadSkillFromZipBuffer)(zipBuffer);
|
|
69
|
+
}
|
|
70
|
+
async searchSkills(query) {
|
|
71
|
+
const apiClient = this.client.apiClient;
|
|
72
|
+
const trimmedQuery = query.trim();
|
|
73
|
+
const isSearch = trimmedQuery.length > 0;
|
|
74
|
+
const path = isSearch ? `skills:retrieve?query=${encodeURIComponent(trimmedQuery)}` : "skills";
|
|
75
|
+
const httpResponse = await apiClient.request({
|
|
76
|
+
path,
|
|
77
|
+
httpMethod: "GET",
|
|
78
|
+
httpOptions: { apiVersion: "v1beta1" }
|
|
79
|
+
});
|
|
80
|
+
const response = await httpResponse.json();
|
|
81
|
+
const skillsList = isSearch ? response.retrievedSkills || response.retrieved_skills : response.skills;
|
|
82
|
+
const results = [];
|
|
83
|
+
if (skillsList && Array.isArray(skillsList)) {
|
|
84
|
+
for (const s of skillsList) {
|
|
85
|
+
const skillNameStr = s.skillName || s.skill_name || s.name || "";
|
|
86
|
+
const descriptionStr = s.description || "";
|
|
87
|
+
const parts = skillNameStr.split("/");
|
|
88
|
+
const name = skillNameStr ? parts[parts.length - 1] : "";
|
|
89
|
+
results.push({
|
|
90
|
+
name,
|
|
91
|
+
description: descriptionStr
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return results;
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
GCPSkillRegistry = __decorateClass([
|
|
99
|
+
import_experimental.experimental
|
|
100
|
+
], GCPSkillRegistry);
|
|
101
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
102
|
+
0 && (module.exports = {
|
|
103
|
+
GCPSkillRegistry
|
|
104
|
+
});
|
|
@@ -36,10 +36,12 @@ var loader_exports = {};
|
|
|
36
36
|
__export(loader_exports, {
|
|
37
37
|
loadAllSkillsInDir: () => loadAllSkillsInDir,
|
|
38
38
|
loadSkillFromDir: () => loadSkillFromDir,
|
|
39
|
+
loadSkillFromZipBuffer: () => loadSkillFromZipBuffer,
|
|
39
40
|
parseSkillMdContent: () => parseSkillMdContent,
|
|
40
41
|
validateSkillDir: () => validateSkillDir
|
|
41
42
|
});
|
|
42
43
|
module.exports = __toCommonJS(loader_exports);
|
|
44
|
+
var import_adm_zip = __toESM(require("adm-zip"), 1);
|
|
43
45
|
var import_js_yaml = __toESM(require("js-yaml"), 1);
|
|
44
46
|
var fs = __toESM(require("node:fs/promises"), 1);
|
|
45
47
|
var path = __toESM(require("node:path"), 1);
|
|
@@ -274,10 +276,73 @@ async function loadAllSkillsInDir(skillsBasePath) {
|
|
|
274
276
|
}
|
|
275
277
|
return skills;
|
|
276
278
|
}
|
|
279
|
+
function loadSkillFromZipBuffer(zipBuffer) {
|
|
280
|
+
const zip = new import_adm_zip.default(zipBuffer);
|
|
281
|
+
const entries = zip.getEntries();
|
|
282
|
+
let skillMdContent = "";
|
|
283
|
+
for (const entry of entries) {
|
|
284
|
+
if (entry.isDirectory) continue;
|
|
285
|
+
if (entry.entryName.toLowerCase() === "skill.md") {
|
|
286
|
+
skillMdContent = entry.getData().toString("utf-8");
|
|
287
|
+
break;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
if (!skillMdContent) {
|
|
291
|
+
throw new Error("SKILL.md not found in zipped filesystem.");
|
|
292
|
+
}
|
|
293
|
+
const { frontmatter: parsed, body } = parseSkillMdContent(skillMdContent);
|
|
294
|
+
const frontmatter = import_skill.FrontmatterSchema.parse(parsed);
|
|
295
|
+
const references = {};
|
|
296
|
+
const assets = {};
|
|
297
|
+
const scripts = {};
|
|
298
|
+
function loadZipDir(prefix) {
|
|
299
|
+
const res = {};
|
|
300
|
+
const normPrefix = prefix.endsWith("/") ? prefix : `${prefix}/`;
|
|
301
|
+
for (const entry of entries) {
|
|
302
|
+
if (entry.isDirectory) continue;
|
|
303
|
+
if (entry.entryName.startsWith(normPrefix)) {
|
|
304
|
+
if (entry.entryName.includes("__pycache__")) continue;
|
|
305
|
+
const relativePath = entry.entryName.substring(normPrefix.length);
|
|
306
|
+
if (!relativePath) continue;
|
|
307
|
+
const data = entry.getData();
|
|
308
|
+
try {
|
|
309
|
+
res[relativePath] = data.toString("utf-8");
|
|
310
|
+
} catch (_e) {
|
|
311
|
+
res[relativePath] = data;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
return res;
|
|
316
|
+
}
|
|
317
|
+
const refFiles = loadZipDir("references");
|
|
318
|
+
for (const [key, val] of Object.entries(refFiles)) {
|
|
319
|
+
references[key] = val;
|
|
320
|
+
}
|
|
321
|
+
const assetFiles = loadZipDir("assets");
|
|
322
|
+
for (const [key, val] of Object.entries(assetFiles)) {
|
|
323
|
+
assets[key] = val;
|
|
324
|
+
}
|
|
325
|
+
const rawScripts = loadZipDir("scripts");
|
|
326
|
+
for (const [key, val] of Object.entries(rawScripts)) {
|
|
327
|
+
if (typeof val === "string") {
|
|
328
|
+
scripts[key] = { src: val };
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
return {
|
|
332
|
+
frontmatter,
|
|
333
|
+
instructions: body,
|
|
334
|
+
resources: {
|
|
335
|
+
references,
|
|
336
|
+
assets,
|
|
337
|
+
scripts
|
|
338
|
+
}
|
|
339
|
+
};
|
|
340
|
+
}
|
|
277
341
|
// Annotate the CommonJS export names for ESM import in node:
|
|
278
342
|
0 && (module.exports = {
|
|
279
343
|
loadAllSkillsInDir,
|
|
280
344
|
loadSkillFromDir,
|
|
345
|
+
loadSkillFromZipBuffer,
|
|
281
346
|
parseSkillMdContent,
|
|
282
347
|
validateSkillDir
|
|
283
348
|
});
|
|
@@ -0,0 +1,27 @@
|
|
|
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 __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
21
|
+
var skill_registry_exports = {};
|
|
22
|
+
module.exports = __toCommonJS(skill_registry_exports);
|
|
23
|
+
/**
|
|
24
|
+
* @license
|
|
25
|
+
* Copyright 2026 Google LLC
|
|
26
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
27
|
+
*/
|
|
@@ -34,6 +34,7 @@ var import_in_memory_memory_service = require("../memory/in_memory_memory_servic
|
|
|
34
34
|
var import_runner = require("../runner/runner.js");
|
|
35
35
|
var import_in_memory_session_service = require("../sessions/in_memory_session_service.js");
|
|
36
36
|
var import_variant_utils = require("../utils/variant_utils.js");
|
|
37
|
+
var import_state = require("../sessions/state.js");
|
|
37
38
|
var import_base_tool = require("./base_tool.js");
|
|
38
39
|
var import_forwarding_artifact_service = require("./forwarding_artifact_service.js");
|
|
39
40
|
/**
|
|
@@ -94,9 +95,6 @@ class AgentTool extends (_b = import_base_tool.BaseTool, _a = AGENT_TOOL_SIGNATU
|
|
|
94
95
|
toolContext
|
|
95
96
|
}) {
|
|
96
97
|
var _a2, _b2, _c, _d, _e, _f;
|
|
97
|
-
if (this.skipSummarization) {
|
|
98
|
-
toolContext.actions.skipSummarization = true;
|
|
99
|
-
}
|
|
100
98
|
const hasInputSchema = (0, import_llm_agent.isLlmAgent)(this.agent) && this.agent.inputSchema;
|
|
101
99
|
const content = {
|
|
102
100
|
role: "user",
|
|
@@ -136,7 +134,14 @@ class AgentTool extends (_b = import_base_tool.BaseTool, _a = AGENT_TOOL_SIGNATU
|
|
|
136
134
|
return;
|
|
137
135
|
}
|
|
138
136
|
if (event.actions.stateDelta) {
|
|
139
|
-
|
|
137
|
+
const filteredDelta = Object.fromEntries(
|
|
138
|
+
Object.entries(event.actions.stateDelta).filter(
|
|
139
|
+
([key]) => !key.startsWith(import_state.State.TEMP_PREFIX)
|
|
140
|
+
)
|
|
141
|
+
);
|
|
142
|
+
if (Object.keys(filteredDelta).length > 0) {
|
|
143
|
+
toolContext.state.update(filteredDelta);
|
|
144
|
+
}
|
|
140
145
|
}
|
|
141
146
|
lastEvent = event;
|
|
142
147
|
}
|
|
@@ -144,7 +149,7 @@ class AgentTool extends (_b = import_base_tool.BaseTool, _a = AGENT_TOOL_SIGNATU
|
|
|
144
149
|
return "";
|
|
145
150
|
}
|
|
146
151
|
const hasOutputSchema = (0, import_llm_agent.isLlmAgent)(this.agent) && this.agent.outputSchema;
|
|
147
|
-
const mergedText = lastEvent.content.parts.map((part) => part.text).filter((text) => text).join("\n");
|
|
152
|
+
const mergedText = lastEvent.content.parts.filter((part) => !part.thought).map((part) => part.text).filter((text) => text).join("\n");
|
|
148
153
|
return hasOutputSchema ? JSON.parse(mergedText) : mergedText;
|
|
149
154
|
}
|
|
150
155
|
}
|