google-adk 1.4.2__tar.gz → 1.5.0__tar.gz
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.
- {google_adk-1.4.2 → google_adk-1.5.0}/PKG-INFO +6 -5
- {google_adk-1.4.2 → google_adk-1.5.0}/README.md +1 -1
- {google_adk-1.4.2 → google_adk-1.5.0}/pyproject.toml +4 -4
- google_adk-1.5.0/src/google/adk/a2a/converters/request_converter.py +90 -0
- google_adk-1.5.0/src/google/adk/a2a/converters/utils.py +71 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/agents/llm_agent.py +5 -3
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/artifacts/gcs_artifact_service.py +3 -2
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/auth/auth_tool.py +2 -2
- google_adk-1.5.0/src/google/adk/auth/credential_service/session_state_credential_service.py +83 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/cli/cli_deploy.py +9 -2
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/cli/cli_tools_click.py +110 -52
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/cli/fast_api.py +26 -2
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/cli/utils/evals.py +53 -0
- google_adk-1.5.0/src/google/adk/evaluation/final_response_match_v1.py +110 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/evaluation/gcs_eval_sets_manager.py +8 -5
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/evaluation/response_evaluator.py +12 -1
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/events/event.py +5 -5
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/flows/llm_flows/contents.py +49 -4
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/flows/llm_flows/functions.py +32 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/memory/__init__.py +3 -1
- google_adk-1.5.0/src/google/adk/memory/vertex_ai_memory_bank_service.py +150 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/models/lite_llm.py +9 -1
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/runners.py +10 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/sessions/vertex_ai_session_service.py +53 -18
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/telemetry.py +10 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/version.py +1 -1
- google_adk-1.4.2/src/google/adk/a2a/converters/utils.py +0 -34
- {google_adk-1.4.2 → google_adk-1.5.0}/LICENSE +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/a2a/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/a2a/converters/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/a2a/converters/event_converter.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/a2a/converters/part_converter.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/agents/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/agents/active_streaming_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/agents/base_agent.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/agents/callback_context.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/agents/invocation_context.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/agents/langgraph_agent.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/agents/live_request_queue.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/agents/loop_agent.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/agents/parallel_agent.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/agents/readonly_context.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/agents/run_config.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/agents/sequential_agent.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/agents/transcription_entry.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/artifacts/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/artifacts/base_artifact_service.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/artifacts/in_memory_artifact_service.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/auth/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/auth/auth_credential.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/auth/auth_handler.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/auth/auth_preprocessor.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/auth/auth_schemes.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/auth/credential_manager.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/auth/credential_service/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/auth/credential_service/base_credential_service.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/auth/credential_service/in_memory_credential_service.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/auth/exchanger/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/auth/exchanger/base_credential_exchanger.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/auth/exchanger/credential_exchanger_registry.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/auth/exchanger/oauth2_credential_exchanger.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/auth/oauth2_credential_util.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/auth/refresher/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/auth/refresher/base_credential_refresher.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/auth/refresher/credential_refresher_registry.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/auth/refresher/oauth2_credential_refresher.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/cli/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/cli/__main__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/cli/agent_graph.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/cli/browser/adk_favicon.svg +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/cli/browser/assets/ADK-512-color.svg +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/cli/browser/assets/audio-processor.js +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/cli/browser/assets/config/runtime-config.json +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/cli/browser/index.html +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/cli/browser/main-JAAWEV7F.js +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/cli/browser/polyfills-B6TNHZQ6.js +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/cli/browser/styles-4VDSPQ37.css +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/cli/cli.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/cli/cli_create.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/cli/cli_eval.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/cli/utils/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/cli/utils/agent_loader.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/cli/utils/cleanup.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/cli/utils/common.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/cli/utils/envs.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/cli/utils/logs.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/code_executors/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/code_executors/base_code_executor.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/code_executors/built_in_code_executor.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/code_executors/code_execution_utils.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/code_executors/code_executor_context.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/code_executors/container_code_executor.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/code_executors/unsafe_local_code_executor.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/code_executors/vertex_ai_code_executor.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/errors/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/errors/not_found_error.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/evaluation/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/evaluation/_eval_set_results_manager_utils.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/evaluation/_eval_sets_manager_utils.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/evaluation/agent_evaluator.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/evaluation/eval_case.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/evaluation/eval_metrics.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/evaluation/eval_result.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/evaluation/eval_set.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/evaluation/eval_set_results_manager.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/evaluation/eval_sets_manager.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/evaluation/evaluation_constants.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/evaluation/evaluation_generator.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/evaluation/evaluator.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/evaluation/gcs_eval_set_results_manager.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/evaluation/local_eval_set_results_manager.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/evaluation/local_eval_sets_manager.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/evaluation/trajectory_evaluator.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/events/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/events/event_actions.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/examples/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/examples/base_example_provider.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/examples/example.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/examples/example_util.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/examples/vertex_ai_example_store.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/flows/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/flows/llm_flows/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/flows/llm_flows/_base_llm_processor.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/flows/llm_flows/_code_execution.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/flows/llm_flows/_nl_planning.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/flows/llm_flows/agent_transfer.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/flows/llm_flows/audio_transcriber.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/flows/llm_flows/auto_flow.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/flows/llm_flows/base_llm_flow.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/flows/llm_flows/basic.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/flows/llm_flows/identity.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/flows/llm_flows/instructions.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/flows/llm_flows/single_flow.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/memory/_utils.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/memory/base_memory_service.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/memory/in_memory_memory_service.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/memory/memory_entry.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/memory/vertex_ai_rag_memory_service.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/models/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/models/anthropic_llm.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/models/base_llm.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/models/base_llm_connection.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/models/gemini_llm_connection.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/models/google_llm.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/models/llm_request.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/models/llm_response.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/models/registry.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/planners/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/planners/base_planner.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/planners/built_in_planner.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/planners/plan_re_act_planner.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/platform/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/platform/internal/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/platform/internal/thread.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/platform/thread.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/py.typed +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/sessions/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/sessions/_session_util.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/sessions/base_session_service.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/sessions/database_session_service.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/sessions/in_memory_session_service.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/sessions/session.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/sessions/state.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/_automatic_function_calling_util.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/_forwarding_artifact_service.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/_function_parameter_parse_util.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/_gemini_schema_util.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/_memory_entry_utils.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/agent_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/apihub_tool/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/apihub_tool/apihub_toolset.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/apihub_tool/clients/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/apihub_tool/clients/apihub_client.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/apihub_tool/clients/secret_client.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/application_integration_tool/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/application_integration_tool/application_integration_toolset.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/application_integration_tool/clients/connections_client.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/application_integration_tool/clients/integration_client.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/application_integration_tool/integration_connector_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/authenticated_function_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/base_authenticated_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/base_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/base_toolset.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/bigquery/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/bigquery/bigquery_credentials.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/bigquery/bigquery_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/bigquery/bigquery_toolset.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/bigquery/client.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/bigquery/config.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/bigquery/metadata_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/bigquery/query_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/crewai_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/enterprise_search_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/example_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/exit_loop_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/function_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/get_user_choice_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/google_api_tool/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/google_api_tool/google_api_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/google_api_tool/google_api_toolset.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/google_api_tool/google_api_toolsets.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/google_api_tool/googleapi_to_openapi_converter.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/google_search_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/langchain_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/load_artifacts_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/load_memory_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/load_web_page.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/long_running_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/mcp_tool/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/mcp_tool/conversion_utils.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/mcp_tool/mcp_session_manager.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/mcp_tool/mcp_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/mcp_tool/mcp_toolset.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/openapi_tool/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/openapi_tool/auth/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/openapi_tool/auth/auth_helpers.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/openapi_tool/auth/credential_exchangers/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/openapi_tool/auth/credential_exchangers/base_credential_exchanger.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/openapi_tool/auth/credential_exchangers/oauth2_exchanger.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/openapi_tool/common/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/openapi_tool/common/common.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/openapi_tool/openapi_spec_parser/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/openapi_tool/openapi_spec_parser/openapi_toolset.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/openapi_tool/openapi_spec_parser/operation_parser.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/openapi_tool/openapi_spec_parser/rest_api_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/preload_memory_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/retrieval/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/retrieval/base_retrieval_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/retrieval/files_retrieval.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/retrieval/llama_index_retrieval.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/retrieval/vertex_ai_rag_retrieval.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/tool_context.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/toolbox_toolset.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/transfer_to_agent_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/url_context_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/tools/vertex_ai_search_tool.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/utils/__init__.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/utils/feature_decorator.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/utils/instructions_utils.py +0 -0
- {google_adk-1.4.2 → google_adk-1.5.0}/src/google/adk/utils/variant_utils.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: google-adk
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.5.0
|
4
4
|
Summary: Agent Development Kit
|
5
5
|
Author-email: Google LLC <googleapis-packages@google.com>
|
6
6
|
Requires-Python: >=3.9
|
@@ -19,6 +19,7 @@ Classifier: Operating System :: OS Independent
|
|
19
19
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
20
20
|
Classifier: License :: OSI Approved :: Apache Software License
|
21
21
|
License-File: LICENSE
|
22
|
+
Requires-Dist: PyYAML>=6.0.2
|
22
23
|
Requires-Dist: anyio>=4.9.0;python_version>='3.10'
|
23
24
|
Requires-Dist: authlib>=1.5.1
|
24
25
|
Requires-Dist: click>=8.1.8
|
@@ -28,7 +29,7 @@ Requires-Dist: google-cloud-aiplatform[agent-engines]>=1.95.1
|
|
28
29
|
Requires-Dist: google-cloud-secret-manager>=2.22.0
|
29
30
|
Requires-Dist: google-cloud-speech>=2.30.0
|
30
31
|
Requires-Dist: google-cloud-storage>=2.18.0, <3.0.0
|
31
|
-
Requires-Dist: google-genai>=1.
|
32
|
+
Requires-Dist: google-genai>=1.21.1
|
32
33
|
Requires-Dist: graphviz>=0.20.2
|
33
34
|
Requires-Dist: mcp>=1.8.0;python_version>='3.10'
|
34
35
|
Requires-Dist: opentelemetry-api>=1.31.0
|
@@ -37,7 +38,6 @@ Requires-Dist: opentelemetry-sdk>=1.31.0
|
|
37
38
|
Requires-Dist: pydantic>=2.0, <3.0.0
|
38
39
|
Requires-Dist: python-dateutil>=2.9.0.post0
|
39
40
|
Requires-Dist: python-dotenv>=1.0.0
|
40
|
-
Requires-Dist: PyYAML>=6.0.2
|
41
41
|
Requires-Dist: requests>=2.32.4
|
42
42
|
Requires-Dist: sqlalchemy>=2.0
|
43
43
|
Requires-Dist: starlette>=0.46.2
|
@@ -48,9 +48,9 @@ Requires-Dist: websockets>=15.0.1
|
|
48
48
|
Requires-Dist: a2a-sdk>=0.2.7 ; extra == "a2a" and (python_version>='3.10')
|
49
49
|
Requires-Dist: flit>=3.10.0 ; extra == "dev"
|
50
50
|
Requires-Dist: isort>=6.0.0 ; extra == "dev"
|
51
|
+
Requires-Dist: mypy>=1.15.0 ; extra == "dev"
|
51
52
|
Requires-Dist: pyink>=24.10.0 ; extra == "dev"
|
52
53
|
Requires-Dist: pylint>=2.6.0 ; extra == "dev"
|
53
|
-
Requires-Dist: mypy>=1.15.0 ; extra == "dev"
|
54
54
|
Requires-Dist: autodoc_pydantic ; extra == "docs"
|
55
55
|
Requires-Dist: furo ; extra == "docs"
|
56
56
|
Requires-Dist: myst-parser ; extra == "docs"
|
@@ -60,6 +60,7 @@ Requires-Dist: sphinx-rtd-theme ; extra == "docs"
|
|
60
60
|
Requires-Dist: google-cloud-aiplatform[evaluation]>=1.87.0 ; extra == "eval"
|
61
61
|
Requires-Dist: pandas>=2.2.3 ; extra == "eval"
|
62
62
|
Requires-Dist: tabulate>=0.9.0 ; extra == "eval"
|
63
|
+
Requires-Dist: rouge-score>=0.1.2 ; extra == "eval"
|
63
64
|
Requires-Dist: anthropic>=0.43.0 ; extra == "extensions"
|
64
65
|
Requires-Dist: beautifulsoup4>=3.2.2 ; extra == "extensions"
|
65
66
|
Requires-Dist: crewai[tools] ; extra == "extensions" and (python_version>='3.10')
|
@@ -226,7 +227,7 @@ adk eval \
|
|
226
227
|
## 🤝 Contributing
|
227
228
|
|
228
229
|
We welcome contributions from the community! Whether it's bug reports, feature requests, documentation improvements, or code contributions, please see our
|
229
|
-
- [General contribution guideline and flow](https://google.github.io/adk-docs/contributing-guide
|
230
|
+
- [General contribution guideline and flow](https://google.github.io/adk-docs/contributing-guide/).
|
230
231
|
- Then if you want to contribute code, please read [Code Contributing Guidelines](./CONTRIBUTING.md) to get started.
|
231
232
|
|
232
233
|
## 📄 License
|
@@ -135,7 +135,7 @@ adk eval \
|
|
135
135
|
## 🤝 Contributing
|
136
136
|
|
137
137
|
We welcome contributions from the community! Whether it's bug reports, feature requests, documentation improvements, or code contributions, please see our
|
138
|
-
- [General contribution guideline and flow](https://google.github.io/adk-docs/contributing-guide
|
138
|
+
- [General contribution guideline and flow](https://google.github.io/adk-docs/contributing-guide/).
|
139
139
|
- Then if you want to contribute code, please read [Code Contributing Guidelines](./CONTRIBUTING.md) to get started.
|
140
140
|
|
141
141
|
## 📄 License
|
@@ -25,6 +25,7 @@ classifiers = [ # List of https://pypi.org/classifiers/
|
|
25
25
|
]
|
26
26
|
dependencies = [
|
27
27
|
# go/keep-sorted start
|
28
|
+
"PyYAML>=6.0.2", # For APIHubToolset.
|
28
29
|
"anyio>=4.9.0;python_version>='3.10'", # For MCP Session Manager
|
29
30
|
"authlib>=1.5.1", # For RestAPI Tool
|
30
31
|
"click>=8.1.8", # For CLI tools
|
@@ -34,7 +35,7 @@ dependencies = [
|
|
34
35
|
"google-cloud-secret-manager>=2.22.0", # Fetching secrets in RestAPI Tool
|
35
36
|
"google-cloud-speech>=2.30.0", # For Audio Transcription
|
36
37
|
"google-cloud-storage>=2.18.0, <3.0.0", # For GCS Artifact service
|
37
|
-
"google-genai>=1.
|
38
|
+
"google-genai>=1.21.1", # Google GenAI SDK
|
38
39
|
"graphviz>=0.20.2", # Graphviz for graph rendering
|
39
40
|
"mcp>=1.8.0;python_version>='3.10'", # For MCP Toolset
|
40
41
|
"opentelemetry-api>=1.31.0", # OpenTelemetry
|
@@ -43,7 +44,6 @@ dependencies = [
|
|
43
44
|
"pydantic>=2.0, <3.0.0", # For data validation/models
|
44
45
|
"python-dateutil>=2.9.0.post0", # For Vertext AI Session Service
|
45
46
|
"python-dotenv>=1.0.0", # To manage environment variables
|
46
|
-
"PyYAML>=6.0.2", # For APIHubToolset.
|
47
47
|
"requests>=2.32.4",
|
48
48
|
"sqlalchemy>=2.0", # SQL database ORM
|
49
49
|
"starlette>=0.46.2", # For FastAPI CLI
|
@@ -70,9 +70,9 @@ dev = [
|
|
70
70
|
# go/keep-sorted start
|
71
71
|
"flit>=3.10.0",
|
72
72
|
"isort>=6.0.0",
|
73
|
+
"mypy>=1.15.0",
|
73
74
|
"pyink>=24.10.0",
|
74
75
|
"pylint>=2.6.0",
|
75
|
-
"mypy>=1.15.0",
|
76
76
|
# go/keep-sorted end
|
77
77
|
]
|
78
78
|
|
@@ -87,6 +87,7 @@ eval = [
|
|
87
87
|
"google-cloud-aiplatform[evaluation]>=1.87.0",
|
88
88
|
"pandas>=2.2.3",
|
89
89
|
"tabulate>=0.9.0",
|
90
|
+
"rouge-score>=0.1.2",
|
90
91
|
# go/keep-sorted end
|
91
92
|
]
|
92
93
|
|
@@ -97,7 +98,6 @@ test = [
|
|
97
98
|
"langgraph>=0.2.60", # For LangGraphAgent
|
98
99
|
"litellm>=1.71.2", # For LiteLLM tests
|
99
100
|
"llama-index-readers-file>=0.4.0", # For retrieval tests
|
100
|
-
|
101
101
|
"pytest-asyncio>=0.25.0",
|
102
102
|
"pytest-mock>=3.14.0",
|
103
103
|
"pytest-xdist>=3.6.1",
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# Copyright 2025 Google LLC
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
from __future__ import annotations
|
16
|
+
|
17
|
+
import sys
|
18
|
+
from typing import Any
|
19
|
+
|
20
|
+
try:
|
21
|
+
from a2a.server.agent_execution import RequestContext
|
22
|
+
except ImportError as e:
|
23
|
+
if sys.version_info < (3, 10):
|
24
|
+
raise ImportError(
|
25
|
+
'A2A Tool requires Python 3.10 or above. Please upgrade your Python'
|
26
|
+
' version.'
|
27
|
+
) from e
|
28
|
+
else:
|
29
|
+
raise e
|
30
|
+
|
31
|
+
from google.genai import types as genai_types
|
32
|
+
|
33
|
+
from ...runners import RunConfig
|
34
|
+
from ...utils.feature_decorator import working_in_progress
|
35
|
+
from .part_converter import convert_a2a_part_to_genai_part
|
36
|
+
from .utils import _from_a2a_context_id
|
37
|
+
from .utils import _get_adk_metadata_key
|
38
|
+
|
39
|
+
|
40
|
+
def _get_user_id(request: RequestContext, user_id_from_context: str) -> str:
|
41
|
+
# Get user from call context if available (auth is enabled on a2a server)
|
42
|
+
if request.call_context and request.call_context.user:
|
43
|
+
return request.call_context.user.user_name
|
44
|
+
|
45
|
+
# Get user from context id if available
|
46
|
+
if user_id_from_context:
|
47
|
+
return user_id_from_context
|
48
|
+
|
49
|
+
# Get user from message metadata if available (client is an ADK agent)
|
50
|
+
if request.message.metadata:
|
51
|
+
user_id = request.message.metadata.get(_get_adk_metadata_key('user_id'))
|
52
|
+
if user_id:
|
53
|
+
return f'ADK_USER_{user_id}'
|
54
|
+
|
55
|
+
# Get user from task if available (client is a an ADK agent)
|
56
|
+
if request.current_task:
|
57
|
+
user_id = request.current_task.metadata.get(
|
58
|
+
_get_adk_metadata_key('user_id')
|
59
|
+
)
|
60
|
+
if user_id:
|
61
|
+
return f'ADK_USER_{user_id}'
|
62
|
+
return (
|
63
|
+
f'temp_user_{request.task_id}'
|
64
|
+
if request.task_id
|
65
|
+
else f'TEMP_USER_{request.message.messageId}'
|
66
|
+
)
|
67
|
+
|
68
|
+
|
69
|
+
@working_in_progress
|
70
|
+
def convert_a2a_request_to_adk_run_args(
|
71
|
+
request: RequestContext,
|
72
|
+
) -> dict[str, Any]:
|
73
|
+
|
74
|
+
if not request.message:
|
75
|
+
raise ValueError('Request message cannot be None')
|
76
|
+
|
77
|
+
_, user_id, session_id = _from_a2a_context_id(request.context_id)
|
78
|
+
|
79
|
+
return {
|
80
|
+
'user_id': _get_user_id(request, user_id),
|
81
|
+
'session_id': session_id,
|
82
|
+
'new_message': genai_types.Content(
|
83
|
+
role='user',
|
84
|
+
parts=[
|
85
|
+
convert_a2a_part_to_genai_part(part)
|
86
|
+
for part in request.message.parts
|
87
|
+
],
|
88
|
+
),
|
89
|
+
'run_config': RunConfig(),
|
90
|
+
}
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# Copyright 2025 Google LLC
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
from __future__ import annotations
|
16
|
+
|
17
|
+
ADK_METADATA_KEY_PREFIX = "adk_"
|
18
|
+
ADK_CONTEXT_ID_PREFIX = "ADK"
|
19
|
+
|
20
|
+
|
21
|
+
def _get_adk_metadata_key(key: str) -> str:
|
22
|
+
"""Gets the A2A event metadata key for the given key.
|
23
|
+
|
24
|
+
Args:
|
25
|
+
key: The metadata key to prefix.
|
26
|
+
|
27
|
+
Returns:
|
28
|
+
The prefixed metadata key.
|
29
|
+
|
30
|
+
Raises:
|
31
|
+
ValueError: If key is empty or None.
|
32
|
+
"""
|
33
|
+
if not key:
|
34
|
+
raise ValueError("Metadata key cannot be empty or None")
|
35
|
+
return f"{ADK_METADATA_KEY_PREFIX}{key}"
|
36
|
+
|
37
|
+
|
38
|
+
def _to_a2a_context_id(app_name: str, user_id: str, session_id: str) -> str:
|
39
|
+
"""Converts app name, user id and session id to an A2A context id.
|
40
|
+
|
41
|
+
Args:
|
42
|
+
app_name: The app name.
|
43
|
+
user_id: The user id.
|
44
|
+
session_id: The session id.
|
45
|
+
|
46
|
+
Returns:
|
47
|
+
The A2A context id.
|
48
|
+
"""
|
49
|
+
return [ADK_CONTEXT_ID_PREFIX, app_name, user_id, session_id].join("$")
|
50
|
+
|
51
|
+
|
52
|
+
def _from_a2a_context_id(context_id: str) -> tuple[str, str, str]:
|
53
|
+
"""Converts an A2A context id to app name, user id and session id.
|
54
|
+
if context_id is None, return None, None, None
|
55
|
+
if context_id is not None, but not in the format of
|
56
|
+
ADK$app_name$user_id$session_id, return None, None, None
|
57
|
+
|
58
|
+
Args:
|
59
|
+
context_id: The A2A context id.
|
60
|
+
|
61
|
+
Returns:
|
62
|
+
The app name, user id and session id.
|
63
|
+
"""
|
64
|
+
if not context_id:
|
65
|
+
return None, None, None
|
66
|
+
|
67
|
+
prefix, app_name, user_id, session_id = context_id.split("$")
|
68
|
+
if prefix == "ADK" and app_name and user_id and session_id:
|
69
|
+
return app_name, user_id, session_id
|
70
|
+
|
71
|
+
return None, None, None
|
@@ -161,10 +161,12 @@ class LlmAgent(BaseAgent):
|
|
161
161
|
# LLM-based agent transfer configs - End
|
162
162
|
|
163
163
|
include_contents: Literal['default', 'none'] = 'default'
|
164
|
-
"""
|
164
|
+
"""Controls content inclusion in model requests.
|
165
165
|
|
166
|
-
|
167
|
-
|
166
|
+
Options:
|
167
|
+
default: Model receives relevant conversation history
|
168
|
+
none: Model receives no prior history, operates solely on current
|
169
|
+
instruction and input
|
168
170
|
"""
|
169
171
|
|
170
172
|
# Controlled input/output configurations - Start
|
@@ -13,6 +13,7 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
15
|
"""An artifact service implementation using Google Cloud Storage (GCS)."""
|
16
|
+
from __future__ import annotations
|
16
17
|
|
17
18
|
import logging
|
18
19
|
from typing import Optional
|
@@ -151,7 +152,7 @@ class GcsArtifactService(BaseArtifactService):
|
|
151
152
|
self.bucket, prefix=session_prefix
|
152
153
|
)
|
153
154
|
for blob in session_blobs:
|
154
|
-
_,
|
155
|
+
*_, filename, _ = blob.name.split("/")
|
155
156
|
filenames.add(filename)
|
156
157
|
|
157
158
|
user_namespace_prefix = f"{app_name}/{user_id}/user/"
|
@@ -159,7 +160,7 @@ class GcsArtifactService(BaseArtifactService):
|
|
159
160
|
self.bucket, prefix=user_namespace_prefix
|
160
161
|
)
|
161
162
|
for blob in user_namespace_blobs:
|
162
|
-
_,
|
163
|
+
*_, filename, _ = blob.name.split("/")
|
163
164
|
filenames.add(filename)
|
164
165
|
|
165
166
|
return sorted(list(filenames))
|
@@ -31,12 +31,12 @@ class AuthConfig(BaseModelWithConfig):
|
|
31
31
|
|
32
32
|
auth_scheme: AuthScheme
|
33
33
|
"""The auth scheme used to collect credentials"""
|
34
|
-
raw_auth_credential: AuthCredential = None
|
34
|
+
raw_auth_credential: Optional[AuthCredential] = None
|
35
35
|
"""The raw auth credential used to collect credentials. The raw auth
|
36
36
|
credentials are used in some auth scheme that needs to exchange auth
|
37
37
|
credentials. e.g. OAuth2 and OIDC. For other auth scheme, it could be None.
|
38
38
|
"""
|
39
|
-
exchanged_auth_credential: AuthCredential = None
|
39
|
+
exchanged_auth_credential: Optional[AuthCredential] = None
|
40
40
|
"""The exchanged auth credential used to collect credentials. adk and client
|
41
41
|
will work together to fill it. For those auth scheme that doesn't need to
|
42
42
|
exchange auth credentials, e.g. API key, service account etc. It's filled by
|
@@ -0,0 +1,83 @@
|
|
1
|
+
# Copyright 2025 Google LLC
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
from __future__ import annotations
|
16
|
+
|
17
|
+
from typing import Optional
|
18
|
+
|
19
|
+
from typing_extensions import override
|
20
|
+
|
21
|
+
from ...tools.tool_context import ToolContext
|
22
|
+
from ...utils.feature_decorator import experimental
|
23
|
+
from ..auth_credential import AuthCredential
|
24
|
+
from ..auth_tool import AuthConfig
|
25
|
+
from .base_credential_service import BaseCredentialService
|
26
|
+
|
27
|
+
|
28
|
+
@experimental
|
29
|
+
class SessionStateCredentialService(BaseCredentialService):
|
30
|
+
"""Class for implementation of credential service using session state as the
|
31
|
+
store.
|
32
|
+
Note: store credential in session may not be secure, use at your own risk.
|
33
|
+
"""
|
34
|
+
|
35
|
+
@override
|
36
|
+
async def load_credential(
|
37
|
+
self,
|
38
|
+
auth_config: AuthConfig,
|
39
|
+
tool_context: ToolContext,
|
40
|
+
) -> Optional[AuthCredential]:
|
41
|
+
"""
|
42
|
+
Loads the credential by auth config and current tool context from the
|
43
|
+
backend credential store.
|
44
|
+
|
45
|
+
Args:
|
46
|
+
auth_config: The auth config which contains the auth scheme and auth
|
47
|
+
credential information. auth_config.get_credential_key will be used to
|
48
|
+
build the key to load the credential.
|
49
|
+
|
50
|
+
tool_context: The context of the current invocation when the tool is
|
51
|
+
trying to load the credential.
|
52
|
+
|
53
|
+
Returns:
|
54
|
+
Optional[AuthCredential]: the credential saved in the store.
|
55
|
+
|
56
|
+
"""
|
57
|
+
return tool_context.state.get(auth_config.credential_key)
|
58
|
+
|
59
|
+
@override
|
60
|
+
async def save_credential(
|
61
|
+
self,
|
62
|
+
auth_config: AuthConfig,
|
63
|
+
tool_context: ToolContext,
|
64
|
+
) -> None:
|
65
|
+
"""
|
66
|
+
Saves the exchanged_auth_credential in auth config to the backend credential
|
67
|
+
store.
|
68
|
+
|
69
|
+
Args:
|
70
|
+
auth_config: The auth config which contains the auth scheme and auth
|
71
|
+
credential information. auth_config.get_credential_key will be used to
|
72
|
+
build the key to save the credential.
|
73
|
+
|
74
|
+
tool_context: The context of the current invocation when the tool is
|
75
|
+
trying to save the credential.
|
76
|
+
|
77
|
+
Returns:
|
78
|
+
None
|
79
|
+
"""
|
80
|
+
|
81
|
+
tool_context.state[auth_config.credential_key] = (
|
82
|
+
auth_config.exchanged_auth_credential
|
83
|
+
)
|
@@ -55,7 +55,7 @@ COPY "agents/{app_name}/" "/app/agents/{app_name}/"
|
|
55
55
|
|
56
56
|
EXPOSE {port}
|
57
57
|
|
58
|
-
CMD adk {command} --port={port} {host_option} {service_option} {trace_to_cloud_option} "/app/agents"
|
58
|
+
CMD adk {command} --port={port} {host_option} {service_option} {trace_to_cloud_option} {allow_origins_option} "/app/agents"
|
59
59
|
"""
|
60
60
|
|
61
61
|
_AGENT_ENGINE_APP_TEMPLATE = """
|
@@ -121,8 +121,10 @@ def to_cloud_run(
|
|
121
121
|
port: int,
|
122
122
|
trace_to_cloud: bool,
|
123
123
|
with_ui: bool,
|
124
|
+
log_level: str,
|
124
125
|
verbosity: str,
|
125
126
|
adk_version: str,
|
127
|
+
allow_origins: Optional[list[str]] = None,
|
126
128
|
session_service_uri: Optional[str] = None,
|
127
129
|
artifact_service_uri: Optional[str] = None,
|
128
130
|
memory_service_uri: Optional[str] = None,
|
@@ -150,6 +152,7 @@ def to_cloud_run(
|
|
150
152
|
app_name: The name of the app, by default, it's basename of `agent_folder`.
|
151
153
|
temp_folder: The temp folder for the generated Cloud Run source files.
|
152
154
|
port: The port of the ADK api server.
|
155
|
+
allow_origins: The list of allowed origins for the ADK api server.
|
153
156
|
trace_to_cloud: Whether to enable Cloud Trace.
|
154
157
|
with_ui: Whether to deploy with UI.
|
155
158
|
verbosity: The verbosity level of the CLI.
|
@@ -183,6 +186,9 @@ def to_cloud_run(
|
|
183
186
|
# create Dockerfile
|
184
187
|
click.echo('Creating Dockerfile...')
|
185
188
|
host_option = '--host=0.0.0.0' if adk_version > '0.5.0' else ''
|
189
|
+
allow_origins_option = (
|
190
|
+
f'--allow_origins={",".join(allow_origins)}' if allow_origins else ''
|
191
|
+
)
|
186
192
|
dockerfile_content = _DOCKERFILE_TEMPLATE.format(
|
187
193
|
gcp_project_id=project,
|
188
194
|
gcp_region=region,
|
@@ -197,6 +203,7 @@ def to_cloud_run(
|
|
197
203
|
memory_service_uri,
|
198
204
|
),
|
199
205
|
trace_to_cloud_option='--trace_to_cloud' if trace_to_cloud else '',
|
206
|
+
allow_origins_option=allow_origins_option,
|
200
207
|
adk_version=adk_version,
|
201
208
|
host_option=host_option,
|
202
209
|
)
|
@@ -226,7 +233,7 @@ def to_cloud_run(
|
|
226
233
|
'--port',
|
227
234
|
str(port),
|
228
235
|
'--verbosity',
|
229
|
-
verbosity,
|
236
|
+
log_level.lower() if log_level else verbosity,
|
230
237
|
'--labels',
|
231
238
|
'created-by=adk',
|
232
239
|
],
|