@google/adk 0.6.1 → 1.1.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 +11 -2
- package/dist/cjs/agents/context.js +1 -0
- package/dist/cjs/agents/functions.js +1 -0
- package/dist/cjs/agents/invocation_context.js +1 -0
- package/dist/cjs/agents/llm_agent.js +70 -13
- package/dist/cjs/agents/loop_agent.js +4 -0
- package/dist/cjs/agents/parallel_agent.js +4 -0
- package/dist/cjs/agents/processors/code_execution_request_processor.js +2 -0
- package/dist/cjs/agents/processors/context_compactor_request_processor.js +9 -0
- package/dist/cjs/agents/processors/tool_filter_request_processor.js +73 -0
- package/dist/cjs/agents/routed_agent.js +97 -0
- package/dist/cjs/auth/auth_handler.js +66 -1
- package/dist/cjs/auth/auth_preprocessor.js +178 -0
- package/dist/cjs/auth/auth_provider_registry.js +61 -0
- package/dist/cjs/auth/base_auth_provider.js +27 -0
- package/dist/cjs/auth/credential_service/session_state_credential_service.js +51 -0
- package/dist/cjs/auth/oauth2/oauth2_credential_exchanger.js +198 -0
- package/dist/cjs/auth/oauth2/oauth2_credential_refresher.js +109 -0
- package/dist/cjs/auth/oauth2/oauth2_discovery.js +186 -0
- package/dist/cjs/auth/oauth2/oauth2_utils.js +119 -0
- package/dist/cjs/auth/refresher/base_credential_refresher.js +44 -0
- package/dist/cjs/auth/refresher/credential_refresher_registry.js +68 -0
- package/dist/cjs/code_executors/base_code_executor.js +9 -5
- package/dist/cjs/code_executors/code_execution_utils.js +19 -0
- package/dist/cjs/code_executors/unsafe_local_code_executor.js +241 -0
- package/dist/cjs/common.js +69 -0
- package/dist/cjs/features/feature_registry.js +141 -0
- package/dist/cjs/index.js +83 -113
- package/dist/cjs/models/apigee_llm.js +2 -2
- package/dist/cjs/models/google_llm.js +18 -53
- package/dist/cjs/models/routed_llm.js +99 -0
- package/dist/cjs/plugins/base_plugin.js +39 -2
- package/dist/cjs/plugins/plugin_manager.js +39 -0
- package/dist/cjs/runner/runner.js +31 -3
- package/dist/cjs/sessions/db/operations.js +3 -10
- package/dist/cjs/skills/loader.js +283 -0
- package/dist/cjs/skills/prompt.js +58 -0
- package/dist/cjs/skills/skill.js +78 -0
- package/dist/cjs/tools/agent_tool.js +11 -4
- package/dist/cjs/tools/mcp/mcp_tool.js +7 -3
- package/dist/cjs/tools/mcp/mcp_toolset.js +1 -1
- package/dist/cjs/tools/skill/list_skills_tool.js +76 -0
- package/dist/cjs/tools/skill/load_skill_resource_tool.js +225 -0
- package/dist/cjs/tools/skill/load_skill_tool.js +108 -0
- package/dist/cjs/tools/skill/run_skill_inline_script_tool.js +146 -0
- package/dist/cjs/tools/skill/run_skill_script_tool.js +224 -0
- package/dist/cjs/tools/skill/skill_toolset.js +163 -0
- package/dist/cjs/tools/url_context_tool.js +73 -0
- package/dist/cjs/tools/vertex_ai_search_tool.js +127 -0
- package/dist/cjs/utils/experimental.js +74 -0
- package/dist/cjs/utils/failover_utils.js +93 -0
- package/dist/cjs/utils/file_extension_utils.js +77 -0
- package/dist/cjs/utils/file_utils.js +94 -0
- package/dist/cjs/utils/model_name.js +8 -2
- package/dist/cjs/utils/streaming_utils.js +333 -0
- package/dist/cjs/version.js +1 -1
- package/dist/esm/a2a/a2a_event.js +2 -0
- package/dist/esm/a2a/a2a_remote_agent.js +2 -0
- package/dist/esm/a2a/a2a_remote_agent_run_processor.js +2 -0
- package/dist/esm/a2a/a2a_remote_agent_utils.js +2 -0
- package/dist/esm/a2a/agent_card.js +2 -0
- package/dist/esm/a2a/agent_executor.js +2 -0
- package/dist/esm/a2a/agent_to_a2a.js +2 -0
- package/dist/esm/a2a/event_converter_utils.js +2 -0
- package/dist/esm/a2a/event_processor_utils.js +2 -0
- package/dist/esm/a2a/executor_context.js +2 -0
- package/dist/esm/a2a/metadata_converter_utils.js +2 -0
- package/dist/esm/a2a/part_converter_utils.js +2 -0
- package/dist/esm/agents/active_streaming_tool.js +2 -0
- package/dist/esm/agents/base_agent.js +13 -2
- package/dist/esm/agents/context.js +3 -0
- package/dist/esm/agents/functions.js +3 -0
- package/dist/esm/agents/instructions.js +2 -0
- package/dist/esm/agents/invocation_context.js +3 -0
- package/dist/esm/agents/live_request_queue.js +2 -0
- package/dist/esm/agents/llm_agent.js +72 -13
- package/dist/esm/agents/loop_agent.js +6 -0
- package/dist/esm/agents/parallel_agent.js +6 -0
- package/dist/esm/agents/processors/agent_transfer_llm_request_processor.js +2 -0
- package/dist/esm/agents/processors/base_llm_processor.js +2 -0
- package/dist/esm/agents/processors/basic_llm_request_processor.js +2 -0
- package/dist/esm/agents/processors/code_execution_request_processor.js +5 -0
- package/dist/esm/agents/processors/content_processor_utils.js +2 -0
- package/dist/esm/agents/processors/content_request_processor.js +2 -0
- package/dist/esm/agents/processors/context_compactor_request_processor.js +11 -0
- package/dist/esm/agents/processors/identity_llm_request_processor.js +2 -0
- package/dist/esm/agents/processors/instructions_llm_request_processor.js +2 -0
- package/dist/esm/agents/processors/request_confirmation_llm_request_processor.js +2 -0
- package/dist/esm/agents/processors/tool_filter_request_processor.js +44 -0
- package/dist/esm/agents/readonly_context.js +2 -0
- package/dist/esm/agents/routed_agent.js +70 -0
- package/dist/esm/agents/run_config.js +2 -0
- package/dist/esm/agents/sequential_agent.js +2 -0
- package/dist/esm/agents/transcription_entry.js +2 -0
- package/dist/esm/artifacts/base_artifact_service.js +2 -0
- package/dist/esm/artifacts/file_artifact_service.js +2 -0
- package/dist/esm/artifacts/gcs_artifact_service.js +2 -0
- package/dist/esm/artifacts/in_memory_artifact_service.js +2 -0
- package/dist/esm/artifacts/registry.js +2 -0
- package/dist/esm/auth/auth_credential.js +2 -0
- package/dist/esm/auth/auth_handler.js +68 -1
- package/dist/esm/auth/auth_preprocessor.js +155 -0
- package/dist/esm/auth/auth_provider_registry.js +33 -0
- package/dist/esm/auth/auth_schemes.js +2 -0
- package/dist/esm/auth/auth_tool.js +2 -0
- package/dist/esm/auth/base_auth_provider.js +7 -0
- package/dist/esm/auth/credential_service/base_credential_service.js +2 -0
- package/dist/esm/auth/credential_service/in_memory_credential_service.js +2 -0
- package/dist/esm/auth/credential_service/session_state_credential_service.js +23 -0
- package/dist/esm/auth/exchanger/base_credential_exchanger.js +2 -0
- package/dist/esm/auth/exchanger/credential_exchanger_registry.js +2 -0
- package/dist/esm/auth/oauth2/oauth2_credential_exchanger.js +177 -0
- package/dist/esm/auth/oauth2/oauth2_credential_refresher.js +85 -0
- package/dist/esm/auth/oauth2/oauth2_discovery.js +156 -0
- package/dist/esm/auth/oauth2/oauth2_utils.js +87 -0
- package/dist/esm/auth/refresher/base_credential_refresher.js +16 -0
- package/dist/esm/auth/refresher/credential_refresher_registry.js +40 -0
- package/dist/esm/code_executors/base_code_executor.js +11 -5
- package/dist/esm/code_executors/built_in_code_executor.js +2 -0
- package/dist/esm/code_executors/code_execution_utils.js +19 -0
- package/dist/esm/code_executors/code_executor_context.js +2 -0
- package/dist/esm/code_executors/unsafe_local_code_executor.js +205 -0
- package/dist/esm/common.js +52 -3
- package/dist/esm/context/base_context_compactor.js +2 -0
- package/dist/esm/context/summarizers/base_summarizer.js +2 -0
- package/dist/esm/context/summarizers/llm_summarizer.js +2 -0
- package/dist/esm/context/token_based_context_compactor.js +2 -0
- package/dist/esm/context/truncating_context_compactor.js +2 -0
- package/dist/esm/events/compacted_event.js +2 -0
- package/dist/esm/events/event.js +2 -0
- package/dist/esm/events/event_actions.js +2 -0
- package/dist/esm/events/structured_events.js +2 -0
- package/dist/esm/examples/base_example_provider.js +2 -0
- package/dist/esm/examples/example.js +2 -0
- package/dist/esm/examples/example_util.js +2 -0
- package/dist/esm/features/feature_registry.js +107 -0
- package/dist/esm/index.js +45 -119
- package/dist/esm/index_web.js +2 -0
- package/dist/esm/memory/base_memory_service.js +2 -0
- package/dist/esm/memory/in_memory_memory_service.js +2 -0
- package/dist/esm/memory/memory_entry.js +2 -0
- package/dist/esm/models/apigee_llm.js +4 -2
- package/dist/esm/models/base_llm.js +2 -0
- package/dist/esm/models/base_llm_connection.js +2 -0
- package/dist/esm/models/gemini_llm_connection.js +2 -0
- package/dist/esm/models/google_llm.js +20 -54
- package/dist/esm/models/llm_request.js +2 -0
- package/dist/esm/models/llm_response.js +2 -0
- package/dist/esm/models/registry.js +2 -0
- package/dist/esm/models/routed_llm.js +73 -0
- package/dist/esm/plugins/base_plugin.js +41 -1
- package/dist/esm/plugins/logging_plugin.js +2 -0
- package/dist/esm/plugins/plugin_manager.js +41 -0
- package/dist/esm/plugins/security_plugin.js +2 -0
- package/dist/esm/runner/in_memory_runner.js +2 -0
- package/dist/esm/runner/runner.js +33 -3
- package/dist/esm/sessions/base_session_service.js +2 -0
- package/dist/esm/sessions/database_session_service.js +2 -0
- package/dist/esm/sessions/db/operations.js +5 -10
- package/dist/esm/sessions/db/schema.js +2 -0
- package/dist/esm/sessions/in_memory_session_service.js +2 -0
- package/dist/esm/sessions/registry.js +2 -0
- package/dist/esm/sessions/session.js +2 -0
- package/dist/esm/sessions/state.js +2 -0
- package/dist/esm/skills/loader.js +244 -0
- package/dist/esm/skills/prompt.js +30 -0
- package/dist/esm/skills/skill.js +49 -0
- package/dist/esm/telemetry/google_cloud.js +2 -0
- package/dist/esm/telemetry/setup.js +2 -0
- package/dist/esm/telemetry/tracing.js +2 -0
- package/dist/esm/tools/agent_tool.js +13 -4
- package/dist/esm/tools/base_tool.js +2 -0
- package/dist/esm/tools/base_toolset.js +2 -0
- package/dist/esm/tools/exit_loop_tool.js +2 -0
- package/dist/esm/tools/forwarding_artifact_service.js +2 -0
- package/dist/esm/tools/function_tool.js +2 -0
- package/dist/esm/tools/google_search_tool.js +2 -0
- package/dist/esm/tools/load_artifacts_tool.js +2 -0
- package/dist/esm/tools/load_memory_tool.js +2 -0
- package/dist/esm/tools/long_running_tool.js +2 -0
- package/dist/esm/tools/mcp/mcp_session_manager.js +2 -0
- package/dist/esm/tools/mcp/mcp_tool.js +9 -3
- package/dist/esm/tools/mcp/mcp_toolset.js +3 -1
- package/dist/esm/tools/preload_memory_tool.js +2 -0
- package/dist/esm/tools/skill/list_skills_tool.js +50 -0
- package/dist/esm/tools/skill/load_skill_resource_tool.js +191 -0
- package/dist/esm/tools/skill/load_skill_tool.js +82 -0
- package/dist/esm/tools/skill/run_skill_inline_script_tool.js +120 -0
- package/dist/esm/tools/skill/run_skill_script_tool.js +192 -0
- package/dist/esm/tools/skill/skill_toolset.js +137 -0
- package/dist/esm/tools/tool_confirmation.js +2 -0
- package/dist/esm/tools/url_context_tool.js +44 -0
- package/dist/esm/tools/vertex_ai_search_tool.js +103 -0
- package/dist/esm/utils/client_labels.js +2 -0
- package/dist/esm/utils/env_aware_utils.js +2 -0
- package/dist/esm/utils/experimental.js +46 -0
- package/dist/esm/utils/failover_utils.js +65 -0
- package/dist/esm/utils/file_extension_utils.js +51 -0
- package/dist/esm/utils/file_utils.js +56 -0
- package/dist/esm/utils/gemini_schema_util.js +2 -0
- package/dist/esm/utils/logger.js +2 -0
- package/dist/esm/utils/model_name.js +8 -1
- package/dist/esm/utils/object_notation_utils.js +2 -0
- package/dist/esm/utils/simple_zod_to_json.js +2 -0
- package/dist/esm/utils/streaming_utils.js +307 -0
- package/dist/esm/utils/variant_utils.js +2 -0
- package/dist/esm/version.js +3 -1
- package/dist/types/agents/context.d.ts +1 -0
- package/dist/types/agents/invocation_context.d.ts +5 -0
- package/dist/types/agents/processors/tool_filter_request_processor.d.ts +14 -0
- package/dist/types/agents/routed_agent.d.ts +59 -0
- package/dist/types/auth/auth_credential.d.ts +17 -0
- package/dist/types/auth/auth_handler.d.ts +1 -0
- package/dist/types/auth/auth_preprocessor.d.ts +12 -0
- package/dist/types/auth/auth_provider_registry.d.ts +27 -0
- package/dist/types/auth/base_auth_provider.d.ts +20 -0
- package/dist/types/auth/credential_service/session_state_credential_service.d.ts +20 -0
- package/dist/types/auth/exchanger/base_credential_exchanger.d.ts +12 -5
- package/dist/types/auth/oauth2/oauth2_credential_exchanger.d.ts +26 -0
- package/dist/types/auth/oauth2/oauth2_credential_refresher.d.ts +29 -0
- package/dist/types/auth/oauth2/oauth2_discovery.d.ts +38 -0
- package/dist/types/auth/oauth2/oauth2_utils.d.ts +56 -0
- package/dist/types/auth/refresher/base_credential_refresher.d.ts +38 -0
- package/dist/types/auth/refresher/credential_refresher_registry.d.ts +27 -0
- package/dist/types/code_executors/base_code_executor.d.ts +4 -4
- package/dist/types/code_executors/code_execution_utils.d.ts +29 -1
- package/dist/types/code_executors/unsafe_local_code_executor.d.ts +48 -0
- package/dist/types/common.d.ts +29 -3
- package/dist/types/features/feature_registry.d.ts +66 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/memory/base_memory_service.d.ts +6 -0
- package/dist/types/memory/memory_entry.d.ts +11 -5
- package/dist/types/models/apigee_llm.d.ts +1 -1
- package/dist/types/models/base_llm.d.ts +1 -1
- package/dist/types/models/google_llm.d.ts +1 -1
- package/dist/types/models/llm_request.d.ts +4 -0
- package/dist/types/models/routed_llm.d.ts +38 -0
- package/dist/types/plugins/base_plugin.d.ts +49 -0
- package/dist/types/plugins/plugin_manager.d.ts +22 -1
- package/dist/types/runner/runner.d.ts +1 -0
- package/dist/types/skills/loader.d.ts +38 -0
- package/dist/types/skills/prompt.d.ts +13 -0
- package/dist/types/skills/skill.d.ts +48 -0
- package/dist/types/tools/mcp/mcp_tool.d.ts +7 -1
- package/dist/types/tools/mcp/mcp_toolset.d.ts +5 -0
- package/dist/types/tools/skill/list_skills_tool.d.ts +14 -0
- package/dist/types/tools/skill/load_skill_resource_tool.d.ts +15 -0
- package/dist/types/tools/skill/load_skill_tool.d.ts +14 -0
- package/dist/types/tools/skill/run_skill_inline_script_tool.d.ts +14 -0
- package/dist/types/tools/skill/run_skill_script_tool.d.ts +17 -0
- package/dist/types/tools/skill/skill_toolset.d.ts +28 -0
- package/dist/types/tools/url_context_tool.d.ts +17 -0
- package/dist/types/tools/vertex_ai_search_tool.d.ts +55 -0
- package/dist/types/utils/experimental.d.ts +11 -0
- package/dist/types/utils/failover_utils.d.ts +17 -0
- package/dist/types/utils/file_extension_utils.d.ts +21 -0
- package/dist/types/utils/file_utils.d.ts +11 -0
- package/dist/types/utils/model_name.d.ts +4 -0
- package/dist/types/utils/streaming_utils.d.ts +40 -0
- package/dist/types/version.d.ts +1 -1
- package/dist/web/a2a/a2a_event.js +2 -0
- package/dist/web/a2a/a2a_remote_agent.js +2 -0
- package/dist/web/a2a/a2a_remote_agent_run_processor.js +2 -0
- package/dist/web/a2a/a2a_remote_agent_utils.js +2 -0
- package/dist/web/a2a/agent_card.js +2 -0
- package/dist/web/a2a/agent_executor.js +2 -0
- package/dist/web/a2a/agent_to_a2a.js +2 -0
- package/dist/web/a2a/event_converter_utils.js +2 -0
- package/dist/web/a2a/event_processor_utils.js +2 -0
- package/dist/web/a2a/executor_context.js +2 -0
- package/dist/web/a2a/metadata_converter_utils.js +2 -0
- package/dist/web/a2a/part_converter_utils.js +2 -0
- package/dist/web/agents/active_streaming_tool.js +2 -0
- package/dist/web/agents/base_agent.js +13 -2
- package/dist/web/agents/context.js +3 -0
- package/dist/web/agents/functions.js +3 -0
- package/dist/web/agents/instructions.js +2 -0
- package/dist/web/agents/invocation_context.js +3 -0
- package/dist/web/agents/live_request_queue.js +2 -0
- package/dist/web/agents/llm_agent.js +72 -13
- package/dist/web/agents/loop_agent.js +6 -0
- package/dist/web/agents/parallel_agent.js +6 -0
- package/dist/web/agents/processors/agent_transfer_llm_request_processor.js +2 -0
- package/dist/web/agents/processors/base_llm_processor.js +2 -0
- package/dist/web/agents/processors/basic_llm_request_processor.js +2 -0
- package/dist/web/agents/processors/code_execution_request_processor.js +5 -0
- package/dist/web/agents/processors/content_processor_utils.js +2 -0
- package/dist/web/agents/processors/content_request_processor.js +2 -0
- package/dist/web/agents/processors/context_compactor_request_processor.js +11 -0
- package/dist/web/agents/processors/identity_llm_request_processor.js +2 -0
- package/dist/web/agents/processors/instructions_llm_request_processor.js +2 -0
- package/dist/web/agents/processors/request_confirmation_llm_request_processor.js +2 -0
- package/dist/web/agents/processors/tool_filter_request_processor.js +62 -0
- package/dist/web/agents/readonly_context.js +2 -0
- package/dist/web/agents/routed_agent.js +138 -0
- package/dist/web/agents/run_config.js +2 -0
- package/dist/web/agents/sequential_agent.js +2 -0
- package/dist/web/agents/transcription_entry.js +2 -0
- package/dist/web/artifacts/base_artifact_service.js +2 -0
- package/dist/web/artifacts/file_artifact_service.js +2 -0
- package/dist/web/artifacts/gcs_artifact_service.js +2 -0
- package/dist/web/artifacts/in_memory_artifact_service.js +2 -0
- package/dist/web/artifacts/registry.js +2 -0
- package/dist/web/auth/auth_credential.js +2 -0
- package/dist/web/auth/auth_handler.js +85 -1
- package/dist/web/auth/auth_preprocessor.js +173 -0
- package/dist/web/auth/auth_provider_registry.js +33 -0
- package/dist/web/auth/auth_schemes.js +2 -0
- package/dist/web/auth/auth_tool.js +2 -0
- package/dist/web/auth/base_auth_provider.js +7 -0
- package/dist/web/auth/credential_service/base_credential_service.js +2 -0
- package/dist/web/auth/credential_service/in_memory_credential_service.js +2 -0
- package/dist/web/auth/credential_service/session_state_credential_service.js +23 -0
- package/dist/web/auth/exchanger/base_credential_exchanger.js +2 -0
- package/dist/web/auth/exchanger/credential_exchanger_registry.js +2 -0
- package/dist/web/auth/oauth2/oauth2_credential_exchanger.js +188 -0
- package/dist/web/auth/oauth2/oauth2_credential_refresher.js +102 -0
- package/dist/web/auth/oauth2/oauth2_discovery.js +156 -0
- package/dist/web/auth/oauth2/oauth2_utils.js +87 -0
- package/dist/web/auth/refresher/base_credential_refresher.js +16 -0
- package/dist/web/auth/refresher/credential_refresher_registry.js +40 -0
- package/dist/web/code_executors/base_code_executor.js +11 -5
- package/dist/web/code_executors/built_in_code_executor.js +2 -0
- package/dist/web/code_executors/code_execution_utils.js +19 -0
- package/dist/web/code_executors/code_executor_context.js +2 -0
- package/dist/web/code_executors/unsafe_local_code_executor.js +203 -0
- package/dist/web/common.js +52 -3
- package/dist/web/context/base_context_compactor.js +2 -0
- package/dist/web/context/summarizers/base_summarizer.js +2 -0
- package/dist/web/context/summarizers/llm_summarizer.js +2 -0
- package/dist/web/context/token_based_context_compactor.js +2 -0
- package/dist/web/context/truncating_context_compactor.js +2 -0
- package/dist/web/events/compacted_event.js +2 -0
- package/dist/web/events/event.js +2 -0
- package/dist/web/events/event_actions.js +2 -0
- package/dist/web/events/structured_events.js +2 -0
- package/dist/web/examples/base_example_provider.js +2 -0
- package/dist/web/examples/example.js +2 -0
- package/dist/web/examples/example_util.js +2 -0
- package/dist/web/features/feature_registry.js +107 -0
- package/dist/web/index.js +45 -13
- package/dist/web/index_web.js +2 -0
- package/dist/web/memory/base_memory_service.js +2 -0
- package/dist/web/memory/in_memory_memory_service.js +2 -0
- package/dist/web/memory/memory_entry.js +2 -0
- package/dist/web/models/apigee_llm.js +4 -2
- package/dist/web/models/base_llm.js +2 -0
- package/dist/web/models/base_llm_connection.js +2 -0
- package/dist/web/models/gemini_llm_connection.js +2 -0
- package/dist/web/models/google_llm.js +37 -59
- package/dist/web/models/llm_request.js +2 -0
- package/dist/web/models/llm_response.js +2 -0
- package/dist/web/models/registry.js +2 -0
- package/dist/web/models/routed_llm.js +122 -0
- package/dist/web/plugins/base_plugin.js +41 -1
- package/dist/web/plugins/logging_plugin.js +2 -0
- package/dist/web/plugins/plugin_manager.js +41 -0
- package/dist/web/plugins/security_plugin.js +2 -0
- package/dist/web/runner/in_memory_runner.js +2 -0
- package/dist/web/runner/runner.js +33 -3
- package/dist/web/sessions/base_session_service.js +2 -0
- package/dist/web/sessions/database_session_service.js +2 -0
- package/dist/web/sessions/db/operations.js +5 -10
- package/dist/web/sessions/db/schema.js +2 -0
- package/dist/web/sessions/in_memory_session_service.js +2 -0
- package/dist/web/sessions/registry.js +2 -0
- package/dist/web/sessions/session.js +2 -0
- package/dist/web/sessions/state.js +2 -0
- package/dist/web/skills/loader.js +262 -0
- package/dist/web/skills/prompt.js +30 -0
- package/dist/web/skills/skill.js +67 -0
- package/dist/web/telemetry/google_cloud.js +2 -0
- package/dist/web/telemetry/setup.js +2 -0
- package/dist/web/telemetry/tracing.js +2 -0
- package/dist/web/tools/agent_tool.js +13 -4
- package/dist/web/tools/base_tool.js +2 -0
- package/dist/web/tools/base_toolset.js +2 -0
- package/dist/web/tools/exit_loop_tool.js +2 -0
- package/dist/web/tools/forwarding_artifact_service.js +2 -0
- package/dist/web/tools/function_tool.js +2 -0
- package/dist/web/tools/google_search_tool.js +2 -0
- package/dist/web/tools/load_artifacts_tool.js +2 -0
- package/dist/web/tools/load_memory_tool.js +2 -0
- package/dist/web/tools/long_running_tool.js +2 -0
- package/dist/web/tools/mcp/mcp_session_manager.js +2 -0
- package/dist/web/tools/mcp/mcp_tool.js +9 -3
- package/dist/web/tools/mcp/mcp_toolset.js +3 -1
- package/dist/web/tools/preload_memory_tool.js +2 -0
- package/dist/web/tools/skill/list_skills_tool.js +50 -0
- package/dist/web/tools/skill/load_skill_resource_tool.js +191 -0
- package/dist/web/tools/skill/load_skill_tool.js +82 -0
- package/dist/web/tools/skill/run_skill_inline_script_tool.js +120 -0
- package/dist/web/tools/skill/run_skill_script_tool.js +190 -0
- package/dist/web/tools/skill/skill_toolset.js +123 -0
- package/dist/web/tools/tool_confirmation.js +2 -0
- package/dist/web/tools/url_context_tool.js +44 -0
- package/dist/web/tools/vertex_ai_search_tool.js +103 -0
- package/dist/web/utils/client_labels.js +2 -0
- package/dist/web/utils/env_aware_utils.js +2 -0
- package/dist/web/utils/experimental.js +46 -0
- package/dist/web/utils/failover_utils.js +96 -0
- package/dist/web/utils/file_extension_utils.js +51 -0
- package/dist/web/utils/file_utils.js +74 -0
- package/dist/web/utils/gemini_schema_util.js +2 -0
- package/dist/web/utils/logger.js +2 -0
- package/dist/web/utils/model_name.js +8 -1
- package/dist/web/utils/object_notation_utils.js +2 -0
- package/dist/web/utils/simple_zod_to_json.js +2 -0
- package/dist/web/utils/streaming_utils.js +325 -0
- package/dist/web/utils/variant_utils.js +2 -0
- package/dist/web/version.js +3 -1
- package/package.json +20 -18
- package/dist/cjs/index.js.map +0 -7
- package/dist/esm/index.js.map +0 -7
- package/dist/web/index.js.map +0 -7
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
var __create = Object.create;
|
|
9
|
+
var __defProp = Object.defineProperty;
|
|
10
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
11
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
12
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
13
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
14
|
+
var __export = (target, all) => {
|
|
15
|
+
for (var name in all)
|
|
16
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
17
|
+
};
|
|
18
|
+
var __copyProps = (to, from, except, desc) => {
|
|
19
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
20
|
+
for (let key of __getOwnPropNames(from))
|
|
21
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
22
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
23
|
+
}
|
|
24
|
+
return to;
|
|
25
|
+
};
|
|
26
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
27
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
28
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
29
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
30
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
31
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
32
|
+
mod
|
|
33
|
+
));
|
|
34
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
35
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
36
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
37
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
38
|
+
if (decorator = decorators[i])
|
|
39
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
40
|
+
if (kind && result) __defProp(target, key, result);
|
|
41
|
+
return result;
|
|
42
|
+
};
|
|
43
|
+
var load_skill_resource_tool_exports = {};
|
|
44
|
+
__export(load_skill_resource_tool_exports, {
|
|
45
|
+
LoadSkillResourceTool: () => LoadSkillResourceTool
|
|
46
|
+
});
|
|
47
|
+
module.exports = __toCommonJS(load_skill_resource_tool_exports);
|
|
48
|
+
var import_genai = require("@google/genai");
|
|
49
|
+
var import_node_path = __toESM(require("node:path"), 1);
|
|
50
|
+
var import_experimental = require("../../utils/experimental.js");
|
|
51
|
+
var import_base_tool = require("../base_tool.js");
|
|
52
|
+
/**
|
|
53
|
+
* @license
|
|
54
|
+
* Copyright 2026 Google LLC
|
|
55
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
56
|
+
*/
|
|
57
|
+
const BINARY_FILE_DETECTED_MSG = "Binary file detected. The content has been injected into the conversation history for you to analyze.";
|
|
58
|
+
const EXTENSION_TO_MIME_TYPE = {
|
|
59
|
+
"pdf": "application/pdf",
|
|
60
|
+
"jpg": "image/jpeg",
|
|
61
|
+
"jpeg": "image/jpeg",
|
|
62
|
+
"png": "image/png",
|
|
63
|
+
"gif": "image/gif",
|
|
64
|
+
"csv": "text/csv",
|
|
65
|
+
"json": "application/json",
|
|
66
|
+
"xml": "application/xml",
|
|
67
|
+
"sh": "text/x-shellscript",
|
|
68
|
+
"bash": "text/x-shellscript",
|
|
69
|
+
"py": "text/x-python",
|
|
70
|
+
"js": "text/javascript",
|
|
71
|
+
"cjs": "text/javascript",
|
|
72
|
+
"mjs": "text/javascript",
|
|
73
|
+
"ts": "text/javascript",
|
|
74
|
+
"cts": "text/javascript",
|
|
75
|
+
"mts": "text/javascript"
|
|
76
|
+
};
|
|
77
|
+
function guessMimeType(filePath) {
|
|
78
|
+
var _a;
|
|
79
|
+
const ext = ((_a = filePath.split(".").pop()) == null ? void 0 : _a.toLowerCase()) || "";
|
|
80
|
+
return EXTENSION_TO_MIME_TYPE[ext] || "application/octet-stream";
|
|
81
|
+
}
|
|
82
|
+
let LoadSkillResourceTool = class extends import_base_tool.BaseTool {
|
|
83
|
+
constructor(toolset) {
|
|
84
|
+
super({
|
|
85
|
+
name: "load_skill_resource",
|
|
86
|
+
description: "Loads a resource file (from references/, assets/, or scripts/) from within a skill."
|
|
87
|
+
});
|
|
88
|
+
this.toolset = toolset;
|
|
89
|
+
}
|
|
90
|
+
_getDeclaration() {
|
|
91
|
+
return {
|
|
92
|
+
name: this.name,
|
|
93
|
+
description: this.description,
|
|
94
|
+
parameters: {
|
|
95
|
+
type: import_genai.Type.OBJECT,
|
|
96
|
+
properties: {
|
|
97
|
+
skill_name: {
|
|
98
|
+
type: import_genai.Type.STRING,
|
|
99
|
+
description: "The name of the skill."
|
|
100
|
+
},
|
|
101
|
+
path: {
|
|
102
|
+
type: import_genai.Type.STRING,
|
|
103
|
+
description: "The relative path to the resource (e.g., 'references/my_doc.md', 'assets/template.txt', or 'scripts/setup.sh')."
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
required: ["skill_name", "path"]
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
async runAsync({ args }) {
|
|
111
|
+
var _a, _b, _c;
|
|
112
|
+
const skillName = args["skill_name"];
|
|
113
|
+
let resourcePath = args["path"];
|
|
114
|
+
if (!skillName) {
|
|
115
|
+
return {
|
|
116
|
+
error: "Skill name is required.",
|
|
117
|
+
error_code: "MISSING_SKILL_NAME"
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
if (!resourcePath) {
|
|
121
|
+
return {
|
|
122
|
+
error: "Resource path is required.",
|
|
123
|
+
error_code: "MISSING_RESOURCE_PATH"
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
resourcePath = import_node_path.default.posix.normalize(resourcePath);
|
|
127
|
+
const skill = this.toolset.getSkill(skillName);
|
|
128
|
+
if (!skill) {
|
|
129
|
+
return {
|
|
130
|
+
error: `Skill '${skillName}' not found.`,
|
|
131
|
+
error_code: "SKILL_NOT_FOUND"
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
let content;
|
|
135
|
+
const skillResources = skill.resources || {};
|
|
136
|
+
if (resourcePath.startsWith("references/")) {
|
|
137
|
+
const refName = resourcePath.substring("references/".length);
|
|
138
|
+
content = (_a = skillResources.references) == null ? void 0 : _a[refName];
|
|
139
|
+
} else if (resourcePath.startsWith("assets/")) {
|
|
140
|
+
const assetName = resourcePath.substring("assets/".length);
|
|
141
|
+
content = (_b = skillResources.assets) == null ? void 0 : _b[assetName];
|
|
142
|
+
} else if (resourcePath.startsWith("scripts/")) {
|
|
143
|
+
const scriptName = resourcePath.substring("scripts/".length);
|
|
144
|
+
const script = (_c = skillResources.scripts) == null ? void 0 : _c[scriptName];
|
|
145
|
+
if (script) {
|
|
146
|
+
content = script.src;
|
|
147
|
+
}
|
|
148
|
+
} else {
|
|
149
|
+
return {
|
|
150
|
+
error: "Path must start with 'references/', 'assets/', or 'scripts/'.",
|
|
151
|
+
error_code: "INVALID_RESOURCE_PATH"
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
if (content === void 0) {
|
|
155
|
+
return {
|
|
156
|
+
error: `Resource '${resourcePath}' not found in skill '${skillName}'.`,
|
|
157
|
+
error_code: "RESOURCE_NOT_FOUND"
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
if (Buffer.isBuffer(content)) {
|
|
161
|
+
return {
|
|
162
|
+
skill_name: skillName,
|
|
163
|
+
path: resourcePath,
|
|
164
|
+
status: BINARY_FILE_DETECTED_MSG
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
return {
|
|
168
|
+
skill_name: skillName,
|
|
169
|
+
path: resourcePath,
|
|
170
|
+
content
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
async processLlmRequest(request) {
|
|
174
|
+
var _a, _b;
|
|
175
|
+
await super.processLlmRequest(request);
|
|
176
|
+
const llmRequest = request.llmRequest;
|
|
177
|
+
if (!llmRequest.contents || llmRequest.contents.length === 0) {
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
const lastContent = llmRequest.contents[llmRequest.contents.length - 1];
|
|
181
|
+
if (lastContent.role !== "user" || !lastContent.parts) {
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
for (const part of lastContent.parts) {
|
|
185
|
+
if (part.functionResponse && part.functionResponse.name === this.name) {
|
|
186
|
+
const response = part.functionResponse.response || {};
|
|
187
|
+
if (response["status"] === BINARY_FILE_DETECTED_MSG) {
|
|
188
|
+
const skillName = response["skill_name"];
|
|
189
|
+
const resourcePath = response["path"];
|
|
190
|
+
const skill = this.toolset.getSkill(skillName);
|
|
191
|
+
if (!skill) continue;
|
|
192
|
+
const skillResources = skill.resources || {};
|
|
193
|
+
let content;
|
|
194
|
+
if (resourcePath.startsWith("references/")) {
|
|
195
|
+
content = (_a = skillResources.references) == null ? void 0 : _a[resourcePath.substring("references/".length)];
|
|
196
|
+
} else if (resourcePath.startsWith("assets/")) {
|
|
197
|
+
content = (_b = skillResources.assets) == null ? void 0 : _b[resourcePath.substring("assets/".length)];
|
|
198
|
+
}
|
|
199
|
+
if (Buffer.isBuffer(content)) {
|
|
200
|
+
const mimeType = guessMimeType(resourcePath);
|
|
201
|
+
llmRequest.contents.push({
|
|
202
|
+
role: "user",
|
|
203
|
+
parts: [
|
|
204
|
+
{ text: `The content of binary file '${resourcePath}' is:` },
|
|
205
|
+
{
|
|
206
|
+
inlineData: {
|
|
207
|
+
data: content.toString("base64"),
|
|
208
|
+
mimeType
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
]
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
LoadSkillResourceTool = __decorateClass([
|
|
220
|
+
import_experimental.experimental
|
|
221
|
+
], LoadSkillResourceTool);
|
|
222
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
223
|
+
0 && (module.exports = {
|
|
224
|
+
LoadSkillResourceTool
|
|
225
|
+
});
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
11
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
12
|
+
var __export = (target, all) => {
|
|
13
|
+
for (var name in all)
|
|
14
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
15
|
+
};
|
|
16
|
+
var __copyProps = (to, from, except, desc) => {
|
|
17
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
18
|
+
for (let key of __getOwnPropNames(from))
|
|
19
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
20
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
21
|
+
}
|
|
22
|
+
return to;
|
|
23
|
+
};
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
26
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
27
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
28
|
+
if (decorator = decorators[i])
|
|
29
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
30
|
+
if (kind && result) __defProp(target, key, result);
|
|
31
|
+
return result;
|
|
32
|
+
};
|
|
33
|
+
var load_skill_tool_exports = {};
|
|
34
|
+
__export(load_skill_tool_exports, {
|
|
35
|
+
LoadSkillTool: () => LoadSkillTool
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(load_skill_tool_exports);
|
|
38
|
+
var import_genai = require("@google/genai");
|
|
39
|
+
var import_experimental = require("../../utils/experimental.js");
|
|
40
|
+
var import_base_tool = require("../base_tool.js");
|
|
41
|
+
/**
|
|
42
|
+
* @license
|
|
43
|
+
* Copyright 2026 Google LLC
|
|
44
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
45
|
+
*/
|
|
46
|
+
let LoadSkillTool = class extends import_base_tool.BaseTool {
|
|
47
|
+
constructor(toolset) {
|
|
48
|
+
super({
|
|
49
|
+
name: "load_skill",
|
|
50
|
+
description: "Loads the SKILL.md instructions for a given skill."
|
|
51
|
+
});
|
|
52
|
+
this.toolset = toolset;
|
|
53
|
+
}
|
|
54
|
+
_getDeclaration() {
|
|
55
|
+
return {
|
|
56
|
+
name: this.name,
|
|
57
|
+
description: this.description,
|
|
58
|
+
parameters: {
|
|
59
|
+
type: import_genai.Type.OBJECT,
|
|
60
|
+
properties: {
|
|
61
|
+
name: {
|
|
62
|
+
type: import_genai.Type.STRING,
|
|
63
|
+
description: "The name of the skill to load."
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
required: ["name"]
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
async runAsync({
|
|
71
|
+
args,
|
|
72
|
+
toolContext
|
|
73
|
+
}) {
|
|
74
|
+
const skillName = args["name"];
|
|
75
|
+
if (!skillName) {
|
|
76
|
+
return {
|
|
77
|
+
error: "Skill name is required.",
|
|
78
|
+
error_code: "MISSING_SKILL_NAME"
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
const skill = this.toolset.getSkill(skillName);
|
|
82
|
+
if (!skill) {
|
|
83
|
+
return {
|
|
84
|
+
error: `Skill '${skillName}' not found.`,
|
|
85
|
+
error_code: "SKILL_NOT_FOUND"
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
const agentName = toolContext.invocationContext.agent.name;
|
|
89
|
+
const stateKey = `_adk_activated_skill_${agentName}`;
|
|
90
|
+
const currentActivated = toolContext.state.get(stateKey) || [];
|
|
91
|
+
if (!currentActivated.includes(skillName)) {
|
|
92
|
+
toolContext.state.set(stateKey, [...currentActivated, skillName]);
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
skill_name: skillName,
|
|
96
|
+
instructions: skill.instructions,
|
|
97
|
+
frontmatter: skill.frontmatter,
|
|
98
|
+
resources: skill.resources
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
LoadSkillTool = __decorateClass([
|
|
103
|
+
import_experimental.experimental
|
|
104
|
+
], LoadSkillTool);
|
|
105
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
106
|
+
0 && (module.exports = {
|
|
107
|
+
LoadSkillTool
|
|
108
|
+
});
|
|
@@ -0,0 +1,146 @@
|
|
|
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 run_skill_inline_script_tool_exports = {};
|
|
34
|
+
__export(run_skill_inline_script_tool_exports, {
|
|
35
|
+
RunSkillInlineScriptTool: () => RunSkillInlineScriptTool
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(run_skill_inline_script_tool_exports);
|
|
38
|
+
var import_genai = require("@google/genai");
|
|
39
|
+
var import_llm_agent = require("../../agents/llm_agent.js");
|
|
40
|
+
var import_code_execution_utils = require("../../code_executors/code_execution_utils.js");
|
|
41
|
+
var import_experimental = require("../../utils/experimental.js");
|
|
42
|
+
var import_file_utils = require("../../utils/file_utils.js");
|
|
43
|
+
var import_base_tool = require("../base_tool.js");
|
|
44
|
+
/**
|
|
45
|
+
* @license
|
|
46
|
+
* Copyright 2026 Google LLC
|
|
47
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
48
|
+
*/
|
|
49
|
+
let RunSkillInlineScriptTool = class extends import_base_tool.BaseTool {
|
|
50
|
+
constructor(toolset) {
|
|
51
|
+
super({
|
|
52
|
+
name: "run_skill_inline_script",
|
|
53
|
+
description: "Executes an inline script provided directly in the request."
|
|
54
|
+
});
|
|
55
|
+
this.toolset = toolset;
|
|
56
|
+
}
|
|
57
|
+
_getDeclaration() {
|
|
58
|
+
return {
|
|
59
|
+
name: this.name,
|
|
60
|
+
description: this.description,
|
|
61
|
+
parameters: {
|
|
62
|
+
type: import_genai.Type.OBJECT,
|
|
63
|
+
properties: {
|
|
64
|
+
script_content: {
|
|
65
|
+
type: import_genai.Type.STRING,
|
|
66
|
+
description: "The content of the script to execute."
|
|
67
|
+
},
|
|
68
|
+
language: {
|
|
69
|
+
type: import_genai.Type.STRING,
|
|
70
|
+
description: "The language/type of the script.",
|
|
71
|
+
enum: Object.values(import_code_execution_utils.CodeExecutionLanguage).filter(
|
|
72
|
+
(l) => l !== import_code_execution_utils.CodeExecutionLanguage.UNSPECIFIED
|
|
73
|
+
)
|
|
74
|
+
},
|
|
75
|
+
args: {
|
|
76
|
+
anyOf: [
|
|
77
|
+
{ type: import_genai.Type.OBJECT },
|
|
78
|
+
{ type: import_genai.Type.ARRAY, items: { type: import_genai.Type.STRING } }
|
|
79
|
+
],
|
|
80
|
+
description: "Optional arguments to pass to the script as key-value pairs or an array of strings."
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
required: ["script_content", "language"]
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
async runAsync({
|
|
88
|
+
args,
|
|
89
|
+
toolContext
|
|
90
|
+
}) {
|
|
91
|
+
var _a;
|
|
92
|
+
const inlineScriptContent = args["script_content"];
|
|
93
|
+
const language = args["language"];
|
|
94
|
+
const scriptArgs = args["args"];
|
|
95
|
+
if (!inlineScriptContent) {
|
|
96
|
+
return {
|
|
97
|
+
error: "Script content is required.",
|
|
98
|
+
errorCode: "MISSING_SCRIPT_CONTENT"
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
if (!language) {
|
|
102
|
+
return {
|
|
103
|
+
error: "Language is required.",
|
|
104
|
+
errorCode: "MISSING_LANGUAGE"
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
let codeExecutor = (_a = this.toolset) == null ? void 0 : _a.codeExecutor;
|
|
108
|
+
if (!codeExecutor) {
|
|
109
|
+
const agent = toolContext.invocationContext.agent;
|
|
110
|
+
if ((0, import_llm_agent.isLlmAgent)(agent)) {
|
|
111
|
+
codeExecutor = agent.codeExecutor;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (!codeExecutor) {
|
|
115
|
+
return {
|
|
116
|
+
error: "No code executor configured.",
|
|
117
|
+
errorCode: "NO_CODE_EXECUTOR"
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
try {
|
|
121
|
+
const result = await codeExecutor.executeCode({
|
|
122
|
+
invocationContext: toolContext.invocationContext,
|
|
123
|
+
codeExecutionInput: {
|
|
124
|
+
code: inlineScriptContent,
|
|
125
|
+
inputFiles: [],
|
|
126
|
+
language,
|
|
127
|
+
args: scriptArgs
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
result.outputFiles = await (0, import_file_utils.materializeFiles)(result.outputFiles);
|
|
131
|
+
return result;
|
|
132
|
+
} catch (e) {
|
|
133
|
+
return {
|
|
134
|
+
error: `Failed to execute inline script: ${e.message}`,
|
|
135
|
+
errorCode: "EXECUTION_ERROR"
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
RunSkillInlineScriptTool = __decorateClass([
|
|
141
|
+
import_experimental.experimental
|
|
142
|
+
], RunSkillInlineScriptTool);
|
|
143
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
144
|
+
0 && (module.exports = {
|
|
145
|
+
RunSkillInlineScriptTool
|
|
146
|
+
});
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
var __create = Object.create;
|
|
9
|
+
var __defProp = Object.defineProperty;
|
|
10
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
11
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
12
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
13
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
14
|
+
var __export = (target, all) => {
|
|
15
|
+
for (var name in all)
|
|
16
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
17
|
+
};
|
|
18
|
+
var __copyProps = (to, from, except, desc) => {
|
|
19
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
20
|
+
for (let key of __getOwnPropNames(from))
|
|
21
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
22
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
23
|
+
}
|
|
24
|
+
return to;
|
|
25
|
+
};
|
|
26
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
27
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
28
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
29
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
30
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
31
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
32
|
+
mod
|
|
33
|
+
));
|
|
34
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
35
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
36
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
37
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
38
|
+
if (decorator = decorators[i])
|
|
39
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
40
|
+
if (kind && result) __defProp(target, key, result);
|
|
41
|
+
return result;
|
|
42
|
+
};
|
|
43
|
+
var run_skill_script_tool_exports = {};
|
|
44
|
+
__export(run_skill_script_tool_exports, {
|
|
45
|
+
RunSkillScriptTool: () => RunSkillScriptTool,
|
|
46
|
+
getSkillResourceFiles: () => getSkillResourceFiles
|
|
47
|
+
});
|
|
48
|
+
module.exports = __toCommonJS(run_skill_script_tool_exports);
|
|
49
|
+
var import_genai = require("@google/genai");
|
|
50
|
+
var path = __toESM(require("node:path"), 1);
|
|
51
|
+
var import_llm_agent = require("../../agents/llm_agent.js");
|
|
52
|
+
var import_code_execution_utils = require("../../code_executors/code_execution_utils.js");
|
|
53
|
+
var import_experimental = require("../../utils/experimental.js");
|
|
54
|
+
var import_file_extension_utils = require("../../utils/file_extension_utils.js");
|
|
55
|
+
var import_file_utils = require("../../utils/file_utils.js");
|
|
56
|
+
var import_base_tool = require("../base_tool.js");
|
|
57
|
+
/**
|
|
58
|
+
* @license
|
|
59
|
+
* Copyright 2026 Google LLC
|
|
60
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
61
|
+
*/
|
|
62
|
+
let RunSkillScriptTool = class extends import_base_tool.BaseTool {
|
|
63
|
+
constructor(toolset) {
|
|
64
|
+
super({
|
|
65
|
+
name: "run_skill_script",
|
|
66
|
+
description: "Executes a script from a skill's scripts/ directory."
|
|
67
|
+
});
|
|
68
|
+
this.toolset = toolset;
|
|
69
|
+
}
|
|
70
|
+
_getDeclaration() {
|
|
71
|
+
return {
|
|
72
|
+
name: this.name,
|
|
73
|
+
description: this.description,
|
|
74
|
+
parameters: {
|
|
75
|
+
type: import_genai.Type.OBJECT,
|
|
76
|
+
properties: {
|
|
77
|
+
skill_name: {
|
|
78
|
+
type: import_genai.Type.STRING,
|
|
79
|
+
description: "The name of the skill."
|
|
80
|
+
},
|
|
81
|
+
script_path: {
|
|
82
|
+
type: import_genai.Type.STRING,
|
|
83
|
+
description: "The relative path to the script (e.g., 'scripts/setup.js')."
|
|
84
|
+
},
|
|
85
|
+
args: {
|
|
86
|
+
type: import_genai.Type.OBJECT,
|
|
87
|
+
description: "Optional arguments to pass to the script as key-value pairs."
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
required: ["skill_name", "script_path"]
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
async runAsync({
|
|
95
|
+
args,
|
|
96
|
+
toolContext
|
|
97
|
+
}) {
|
|
98
|
+
var _a, _b, _c, _d;
|
|
99
|
+
const skillName = args["skill_name"];
|
|
100
|
+
const scriptPath = args["script_path"];
|
|
101
|
+
const scriptArgs = args["args"] || {};
|
|
102
|
+
if (!skillName) {
|
|
103
|
+
return {
|
|
104
|
+
error: "Skill name is required.",
|
|
105
|
+
errorCode: "MISSING_SKILL_NAME"
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
if (!scriptPath) {
|
|
109
|
+
return {
|
|
110
|
+
error: "Script path is required.",
|
|
111
|
+
errorCode: "MISSING_SCRIPT_PATH"
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
const skill = this.toolset.getSkill(skillName);
|
|
115
|
+
if (!skill) {
|
|
116
|
+
return {
|
|
117
|
+
error: `Skill '${skillName}' not found.`,
|
|
118
|
+
errorCode: "SKILL_NOT_FOUND"
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
const relScriptPath = scriptPath.startsWith("scripts/") ? scriptPath.substring("scripts/".length) : scriptPath;
|
|
122
|
+
let script = (_b = (_a = skill.resources) == null ? void 0 : _a.scripts) == null ? void 0 : _b[relScriptPath];
|
|
123
|
+
if (!script) {
|
|
124
|
+
script = (_d = (_c = skill.resources) == null ? void 0 : _c.scripts) == null ? void 0 : _d[scriptPath];
|
|
125
|
+
}
|
|
126
|
+
if (!script) {
|
|
127
|
+
return {
|
|
128
|
+
error: `Script '${scriptPath}' not found in skill '${skillName}'.`,
|
|
129
|
+
errorCode: "SCRIPT_NOT_FOUND"
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
let codeExecutor = this.toolset.codeExecutor;
|
|
133
|
+
if (!codeExecutor) {
|
|
134
|
+
const agent = toolContext.invocationContext.agent;
|
|
135
|
+
if ((0, import_llm_agent.isLlmAgent)(agent)) {
|
|
136
|
+
codeExecutor = agent.codeExecutor;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (!codeExecutor) {
|
|
140
|
+
return {
|
|
141
|
+
error: "No code executor configured.",
|
|
142
|
+
errorCode: "NO_CODE_EXECUTOR"
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
try {
|
|
146
|
+
const language = (0, import_file_extension_utils.getScriptLanguageByExtension)(path.extname(scriptPath));
|
|
147
|
+
const result = await codeExecutor.executeCode({
|
|
148
|
+
invocationContext: toolContext.invocationContext,
|
|
149
|
+
codeExecutionInput: {
|
|
150
|
+
code: buildWrapperCode(scriptPath, language),
|
|
151
|
+
inputFiles: getSkillResourceFiles(skill),
|
|
152
|
+
language,
|
|
153
|
+
args: scriptArgs
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
result.outputFiles = await (0, import_file_utils.materializeFiles)(result.outputFiles);
|
|
157
|
+
return result;
|
|
158
|
+
} catch (e) {
|
|
159
|
+
return {
|
|
160
|
+
error: `Failed to execute script '${scriptPath}': ${e.message}`,
|
|
161
|
+
errorCode: "EXECUTION_ERROR"
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
RunSkillScriptTool = __decorateClass([
|
|
167
|
+
import_experimental.experimental
|
|
168
|
+
], RunSkillScriptTool);
|
|
169
|
+
function buildWrapperCode(scriptPath, language) {
|
|
170
|
+
switch (language) {
|
|
171
|
+
case import_code_execution_utils.CodeExecutionLanguage.JAVASCRIPT:
|
|
172
|
+
return `require('./${scriptPath}');`;
|
|
173
|
+
case import_code_execution_utils.CodeExecutionLanguage.TYPESCRIPT:
|
|
174
|
+
return `require('ts-node/register');
|
|
175
|
+
require('./${scriptPath}');`;
|
|
176
|
+
case import_code_execution_utils.CodeExecutionLanguage.PYTHON:
|
|
177
|
+
return `import runpy
|
|
178
|
+
runpy.run_path('./${scriptPath}', run_name='__main__')`;
|
|
179
|
+
case import_code_execution_utils.CodeExecutionLanguage.SHELL:
|
|
180
|
+
return `source ./${scriptPath} "$@"`;
|
|
181
|
+
case import_code_execution_utils.CodeExecutionLanguage.POWERSHELL:
|
|
182
|
+
return `& .\\${scriptPath.replace(/\//g, "\\\\")} $args`;
|
|
183
|
+
case import_code_execution_utils.CodeExecutionLanguage.WINDOWS_CMD:
|
|
184
|
+
return `call .\\${scriptPath.replace(/\//g, "\\\\")} %*`;
|
|
185
|
+
default:
|
|
186
|
+
throw new Error(`Unsupported wrapper language: ${language}`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
function getSkillResourceFiles(skill) {
|
|
190
|
+
var _a, _b, _c;
|
|
191
|
+
const files = [];
|
|
192
|
+
for (const resourceType of ["references", "assets", "scripts"]) {
|
|
193
|
+
const resources = (_b = (_a = skill.resources) == null ? void 0 : _a[resourceType]) != null ? _b : {};
|
|
194
|
+
for (const resourceName of Object.keys(resources)) {
|
|
195
|
+
const content = (_c = resources[resourceName]) != null ? _c : void 0;
|
|
196
|
+
if (content === void 0) {
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
let fileContent = void 0;
|
|
200
|
+
if (typeof content === "string" || Buffer.isBuffer(content)) {
|
|
201
|
+
fileContent = content;
|
|
202
|
+
} else if (typeof content === "object" && content !== null && "src" in content && typeof content.src === "string") {
|
|
203
|
+
fileContent = content.src;
|
|
204
|
+
}
|
|
205
|
+
if (fileContent === void 0) {
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
const ext = path.extname(resourceName).toLowerCase();
|
|
209
|
+
const { encoding, mimeType } = (0, import_file_extension_utils.getMimeTypeAndEncoding)(ext);
|
|
210
|
+
files.push({
|
|
211
|
+
name: `${resourceType}/${resourceName}`,
|
|
212
|
+
content: Buffer.from(fileContent).toString(encoding),
|
|
213
|
+
contentEncoding: encoding,
|
|
214
|
+
mimeType
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return files;
|
|
219
|
+
}
|
|
220
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
221
|
+
0 && (module.exports = {
|
|
222
|
+
RunSkillScriptTool,
|
|
223
|
+
getSkillResourceFiles
|
|
224
|
+
});
|