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