google-adk 0.0.1__py3-none-any.whl → 0.0.3__py3-none-any.whl
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/._version.py +0 -0
- google/adk/__init__.py +20 -0
- google/adk/agents/__init__.py +32 -0
- google/adk/agents/active_streaming_tool.py +38 -0
- google/adk/agents/base_agent.py +345 -0
- google/adk/agents/callback_context.py +112 -0
- google/adk/agents/invocation_context.py +181 -0
- google/adk/agents/langgraph_agent.py +140 -0
- google/adk/agents/live_request_queue.py +64 -0
- google/adk/agents/llm_agent.py +376 -0
- google/adk/agents/loop_agent.py +62 -0
- google/adk/agents/parallel_agent.py +96 -0
- google/adk/agents/readonly_context.py +46 -0
- google/adk/agents/remote_agent.py +50 -0
- google/adk/agents/run_config.py +87 -0
- google/adk/agents/sequential_agent.py +45 -0
- google/adk/agents/transcription_entry.py +34 -0
- google/adk/artifacts/__init__.py +23 -0
- google/adk/artifacts/base_artifact_service.py +128 -0
- google/adk/artifacts/gcs_artifact_service.py +195 -0
- google/adk/artifacts/in_memory_artifact_service.py +133 -0
- google/adk/auth/__init__.py +22 -0
- google/adk/auth/auth_credential.py +220 -0
- google/adk/auth/auth_handler.py +268 -0
- google/adk/auth/auth_preprocessor.py +116 -0
- google/adk/auth/auth_schemes.py +67 -0
- google/adk/auth/auth_tool.py +55 -0
- google/adk/cli/__init__.py +15 -0
- google/adk/cli/__main__.py +18 -0
- google/adk/cli/agent_graph.py +148 -0
- google/adk/cli/browser/adk_favicon.svg +17 -0
- google/adk/cli/browser/assets/audio-processor.js +51 -0
- google/adk/cli/browser/assets/config/runtime-config.json +3 -0
- google/adk/cli/browser/index.html +33 -0
- google/adk/cli/browser/main-SY2WYYGV.js +75 -0
- google/adk/cli/browser/polyfills-FFHMD2TL.js +18 -0
- google/adk/cli/browser/styles-4VDSPQ37.css +17 -0
- google/adk/cli/cli.py +181 -0
- google/adk/cli/cli_deploy.py +181 -0
- google/adk/cli/cli_eval.py +282 -0
- google/adk/cli/cli_tools_click.py +524 -0
- google/adk/cli/fast_api.py +784 -0
- google/adk/cli/utils/__init__.py +49 -0
- google/adk/cli/utils/envs.py +57 -0
- google/adk/cli/utils/evals.py +93 -0
- google/adk/cli/utils/logs.py +72 -0
- google/adk/code_executors/__init__.py +49 -0
- google/adk/code_executors/base_code_executor.py +97 -0
- google/adk/code_executors/code_execution_utils.py +256 -0
- google/adk/code_executors/code_executor_context.py +202 -0
- google/adk/code_executors/container_code_executor.py +196 -0
- google/adk/code_executors/unsafe_local_code_executor.py +71 -0
- google/adk/code_executors/vertex_ai_code_executor.py +234 -0
- google/adk/docs/Makefile +20 -0
- google/adk/docs/build/doctrees/google-adk.doctree +0 -0
- google/adk/docs/build/html/_sources/google-adk.rst.txt +98 -0
- google/adk/docs/build/html/_sources/index.rst.txt +7 -0
- google/adk/docs/build/html/_static/autodoc_pydantic.css +27 -0
- google/adk/docs/build/html/_static/basic.css +925 -0
- google/adk/docs/build/html/_static/debug.css +85 -0
- google/adk/docs/build/html/_static/doctools.js +156 -0
- google/adk/docs/build/html/_static/documentation_options.js +29 -0
- google/adk/docs/build/html/_static/file.png +0 -0
- google/adk/docs/build/html/_static/language_data.js +199 -0
- google/adk/docs/build/html/_static/minus.png +0 -0
- google/adk/docs/build/html/_static/plus.png +0 -0
- google/adk/docs/build/html/_static/pygments.css +274 -0
- google/adk/docs/build/html/_static/scripts/furo-extensions.js +16 -0
- google/adk/docs/build/html/_static/scripts/furo.js +19 -0
- google/adk/docs/build/html/_static/scripts/furo.js.LICENSE.txt +7 -0
- google/adk/docs/build/html/_static/scripts/furo.js.map +1 -0
- google/adk/docs/build/html/_static/searchtools.js +620 -0
- google/adk/docs/build/html/_static/skeleton.css +312 -0
- google/adk/docs/build/html/_static/sphinx_highlight.js +170 -0
- google/adk/docs/build/html/_static/styles/furo-extensions.css +18 -0
- google/adk/docs/build/html/_static/styles/furo-extensions.css.map +1 -0
- google/adk/docs/build/html/_static/styles/furo.css +18 -0
- google/adk/docs/build/html/_static/styles/furo.css.map +1 -0
- google/adk/docs/build/html/genindex.html +861 -0
- google/adk/docs/build/html/google-adk.html +5461 -0
- google/adk/docs/build/html/index.html +567 -0
- google/adk/docs/build/html/objects.inv +0 -0
- google/adk/docs/build/html/py-modindex.html +373 -0
- google/adk/docs/build/html/search.html +333 -0
- google/adk/docs/build/html/searchindex.js +17 -0
- google/adk/docs/source/conf.py +133 -0
- google/adk/docs/source/google-adk.rst +98 -0
- google/adk/docs/source/index.rst +7 -0
- google/adk/evaluation/__init__.py +31 -0
- google/adk/evaluation/agent_evaluator.py +329 -0
- google/adk/evaluation/evaluation_constants.py +24 -0
- google/adk/evaluation/evaluation_generator.py +270 -0
- google/adk/evaluation/response_evaluator.py +135 -0
- google/adk/evaluation/trajectory_evaluator.py +184 -0
- google/adk/events/__init__.py +21 -0
- google/adk/events/event.py +130 -0
- google/adk/events/event_actions.py +55 -0
- google/adk/examples/__init__.py +28 -0
- google/adk/examples/base_example_provider.py +35 -0
- google/adk/examples/example.py +27 -0
- google/adk/examples/example_util.py +123 -0
- google/adk/examples/vertex_ai_example_store.py +104 -0
- google/adk/flows/__init__.py +14 -0
- google/adk/flows/llm_flows/__init__.py +20 -0
- google/adk/flows/llm_flows/_base_llm_processor.py +52 -0
- google/adk/flows/llm_flows/_code_execution.py +458 -0
- google/adk/flows/llm_flows/_nl_planning.py +129 -0
- google/adk/flows/llm_flows/agent_transfer.py +132 -0
- google/adk/flows/llm_flows/audio_transcriber.py +109 -0
- google/adk/flows/llm_flows/auto_flow.py +49 -0
- google/adk/flows/llm_flows/base_llm_flow.py +559 -0
- google/adk/flows/llm_flows/basic.py +72 -0
- google/adk/flows/llm_flows/contents.py +370 -0
- google/adk/flows/llm_flows/functions.py +486 -0
- google/adk/flows/llm_flows/identity.py +47 -0
- google/adk/flows/llm_flows/instructions.py +137 -0
- google/adk/flows/llm_flows/single_flow.py +57 -0
- google/adk/memory/__init__.py +35 -0
- google/adk/memory/base_memory_service.py +74 -0
- google/adk/memory/in_memory_memory_service.py +62 -0
- google/adk/memory/vertex_ai_rag_memory_service.py +177 -0
- google/adk/models/__init__.py +31 -0
- google/adk/models/anthropic_llm.py +243 -0
- google/adk/models/base_llm.py +87 -0
- google/adk/models/base_llm_connection.py +76 -0
- google/adk/models/gemini_llm_connection.py +200 -0
- google/adk/models/google_llm.py +331 -0
- google/adk/models/lite_llm.py +673 -0
- google/adk/models/llm_request.py +98 -0
- google/adk/models/llm_response.py +111 -0
- google/adk/models/registry.py +102 -0
- google/adk/planners/__init__.py +23 -0
- google/adk/planners/base_planner.py +66 -0
- google/adk/planners/built_in_planner.py +75 -0
- google/adk/planners/plan_re_act_planner.py +208 -0
- google/adk/runners.py +456 -0
- google/adk/sessions/__init__.py +41 -0
- google/adk/sessions/base_session_service.py +133 -0
- google/adk/sessions/database_session_service.py +522 -0
- google/adk/sessions/in_memory_session_service.py +206 -0
- google/adk/sessions/session.py +54 -0
- google/adk/sessions/state.py +71 -0
- google/adk/sessions/vertex_ai_session_service.py +356 -0
- google/adk/telemetry.py +189 -0
- google/adk/tests/__init__.py +14 -0
- google/adk/tests/integration/.env.example +10 -0
- google/adk/tests/integration/__init__.py +18 -0
- google/adk/tests/integration/conftest.py +119 -0
- google/adk/tests/integration/fixture/__init__.py +14 -0
- google/adk/tests/integration/fixture/agent_with_config/__init__.py +15 -0
- google/adk/tests/integration/fixture/agent_with_config/agent.py +88 -0
- google/adk/tests/integration/fixture/callback_agent/__init__.py +15 -0
- google/adk/tests/integration/fixture/callback_agent/agent.py +105 -0
- google/adk/tests/integration/fixture/context_update_test/OWNERS +1 -0
- google/adk/tests/integration/fixture/context_update_test/__init__.py +15 -0
- google/adk/tests/integration/fixture/context_update_test/agent.py +43 -0
- google/adk/tests/integration/fixture/context_update_test/successful_test.session.json +582 -0
- google/adk/tests/integration/fixture/context_variable_agent/__init__.py +15 -0
- google/adk/tests/integration/fixture/context_variable_agent/agent.py +115 -0
- google/adk/tests/integration/fixture/customer_support_ma/__init__.py +15 -0
- google/adk/tests/integration/fixture/customer_support_ma/agent.py +172 -0
- google/adk/tests/integration/fixture/ecommerce_customer_service_agent/__init__.py +15 -0
- google/adk/tests/integration/fixture/ecommerce_customer_service_agent/agent.py +338 -0
- google/adk/tests/integration/fixture/ecommerce_customer_service_agent/order_query.test.json +69 -0
- google/adk/tests/integration/fixture/ecommerce_customer_service_agent/test_config.json +6 -0
- google/adk/tests/integration/fixture/flow_complex_spark/__init__.py +15 -0
- google/adk/tests/integration/fixture/flow_complex_spark/agent.py +182 -0
- google/adk/tests/integration/fixture/flow_complex_spark/sample.session.json +190 -0
- google/adk/tests/integration/fixture/hello_world_agent/__init__.py +15 -0
- google/adk/tests/integration/fixture/hello_world_agent/agent.py +95 -0
- google/adk/tests/integration/fixture/hello_world_agent/roll_die.test.json +24 -0
- google/adk/tests/integration/fixture/hello_world_agent/test_config.json +6 -0
- google/adk/tests/integration/fixture/home_automation_agent/__init__.py +15 -0
- google/adk/tests/integration/fixture/home_automation_agent/agent.py +304 -0
- google/adk/tests/integration/fixture/home_automation_agent/simple_test.test.json +5 -0
- google/adk/tests/integration/fixture/home_automation_agent/simple_test2.test.json +5 -0
- google/adk/tests/integration/fixture/home_automation_agent/test_config.json +5 -0
- google/adk/tests/integration/fixture/home_automation_agent/test_files/dependent_tool_calls.test.json +18 -0
- google/adk/tests/integration/fixture/home_automation_agent/test_files/memorizing_past_events/eval_data.test.json +17 -0
- google/adk/tests/integration/fixture/home_automation_agent/test_files/memorizing_past_events/test_config.json +6 -0
- google/adk/tests/integration/fixture/home_automation_agent/test_files/simple_multi_turn_conversation.test.json +18 -0
- google/adk/tests/integration/fixture/home_automation_agent/test_files/simple_test.test.json +17 -0
- google/adk/tests/integration/fixture/home_automation_agent/test_files/simple_test2.test.json +5 -0
- google/adk/tests/integration/fixture/home_automation_agent/test_files/test_config.json +5 -0
- google/adk/tests/integration/fixture/tool_agent/__init__.py +15 -0
- google/adk/tests/integration/fixture/tool_agent/agent.py +218 -0
- google/adk/tests/integration/fixture/tool_agent/files/Agent_test_plan.pdf +0 -0
- google/adk/tests/integration/fixture/trip_planner_agent/__init__.py +15 -0
- google/adk/tests/integration/fixture/trip_planner_agent/agent.py +110 -0
- google/adk/tests/integration/fixture/trip_planner_agent/initial.session.json +13 -0
- google/adk/tests/integration/fixture/trip_planner_agent/test_config.json +5 -0
- google/adk/tests/integration/fixture/trip_planner_agent/test_files/initial.session.json +13 -0
- google/adk/tests/integration/fixture/trip_planner_agent/test_files/test_config.json +5 -0
- google/adk/tests/integration/fixture/trip_planner_agent/test_files/trip_inquiry_sub_agent.test.json +7 -0
- google/adk/tests/integration/fixture/trip_planner_agent/trip_inquiry.test.json +19 -0
- google/adk/tests/integration/models/__init__.py +14 -0
- google/adk/tests/integration/models/test_google_llm.py +65 -0
- google/adk/tests/integration/test_callback.py +70 -0
- google/adk/tests/integration/test_context_variable.py +67 -0
- google/adk/tests/integration/test_evalute_agent_in_fixture.py +76 -0
- google/adk/tests/integration/test_multi_agent.py +28 -0
- google/adk/tests/integration/test_multi_turn.py +42 -0
- google/adk/tests/integration/test_single_agent.py +23 -0
- google/adk/tests/integration/test_sub_agent.py +26 -0
- google/adk/tests/integration/test_system_instruction.py +177 -0
- google/adk/tests/integration/test_tools.py +287 -0
- google/adk/tests/integration/test_with_test_file.py +34 -0
- google/adk/tests/integration/tools/__init__.py +14 -0
- google/adk/tests/integration/utils/__init__.py +16 -0
- google/adk/tests/integration/utils/asserts.py +75 -0
- google/adk/tests/integration/utils/test_runner.py +97 -0
- google/adk/tests/unittests/__init__.py +14 -0
- google/adk/tests/unittests/agents/__init__.py +14 -0
- google/adk/tests/unittests/agents/test_base_agent.py +407 -0
- google/adk/tests/unittests/agents/test_langgraph_agent.py +191 -0
- google/adk/tests/unittests/agents/test_llm_agent_callbacks.py +138 -0
- google/adk/tests/unittests/agents/test_llm_agent_fields.py +231 -0
- google/adk/tests/unittests/agents/test_loop_agent.py +136 -0
- google/adk/tests/unittests/agents/test_parallel_agent.py +92 -0
- google/adk/tests/unittests/agents/test_sequential_agent.py +114 -0
- google/adk/tests/unittests/artifacts/__init__.py +14 -0
- google/adk/tests/unittests/artifacts/test_artifact_service.py +276 -0
- google/adk/tests/unittests/auth/test_auth_handler.py +575 -0
- google/adk/tests/unittests/conftest.py +73 -0
- google/adk/tests/unittests/fast_api/__init__.py +14 -0
- google/adk/tests/unittests/fast_api/test_fast_api.py +269 -0
- google/adk/tests/unittests/flows/__init__.py +14 -0
- google/adk/tests/unittests/flows/llm_flows/__init__.py +14 -0
- google/adk/tests/unittests/flows/llm_flows/_test_examples.py +142 -0
- google/adk/tests/unittests/flows/llm_flows/test_agent_transfer.py +311 -0
- google/adk/tests/unittests/flows/llm_flows/test_functions_long_running.py +244 -0
- google/adk/tests/unittests/flows/llm_flows/test_functions_request_euc.py +346 -0
- google/adk/tests/unittests/flows/llm_flows/test_functions_sequential.py +93 -0
- google/adk/tests/unittests/flows/llm_flows/test_functions_simple.py +258 -0
- google/adk/tests/unittests/flows/llm_flows/test_identity.py +66 -0
- google/adk/tests/unittests/flows/llm_flows/test_instructions.py +164 -0
- google/adk/tests/unittests/flows/llm_flows/test_model_callbacks.py +142 -0
- google/adk/tests/unittests/flows/llm_flows/test_other_configs.py +46 -0
- google/adk/tests/unittests/flows/llm_flows/test_tool_callbacks.py +269 -0
- google/adk/tests/unittests/models/__init__.py +14 -0
- google/adk/tests/unittests/models/test_google_llm.py +224 -0
- google/adk/tests/unittests/models/test_litellm.py +804 -0
- google/adk/tests/unittests/models/test_models.py +60 -0
- google/adk/tests/unittests/sessions/__init__.py +14 -0
- google/adk/tests/unittests/sessions/test_session_service.py +227 -0
- google/adk/tests/unittests/sessions/test_vertex_ai_session_service.py +246 -0
- google/adk/tests/unittests/streaming/__init__.py +14 -0
- google/adk/tests/unittests/streaming/test_streaming.py +50 -0
- google/adk/tests/unittests/tools/__init__.py +14 -0
- google/adk/tests/unittests/tools/apihub_tool/clients/test_apihub_client.py +499 -0
- google/adk/tests/unittests/tools/apihub_tool/test_apihub_toolset.py +204 -0
- google/adk/tests/unittests/tools/application_integration_tool/clients/test_connections_client.py +600 -0
- google/adk/tests/unittests/tools/application_integration_tool/clients/test_integration_client.py +630 -0
- google/adk/tests/unittests/tools/application_integration_tool/test_application_integration_toolset.py +345 -0
- google/adk/tests/unittests/tools/google_api_tool/__init__.py +13 -0
- google/adk/tests/unittests/tools/google_api_tool/test_googleapi_to_openapi_converter.py +657 -0
- google/adk/tests/unittests/tools/openapi_tool/auth/credential_exchangers/test_auto_auth_credential_exchanger.py +145 -0
- google/adk/tests/unittests/tools/openapi_tool/auth/credential_exchangers/test_base_auth_credential_exchanger.py +68 -0
- google/adk/tests/unittests/tools/openapi_tool/auth/credential_exchangers/test_oauth2_exchanger.py +153 -0
- google/adk/tests/unittests/tools/openapi_tool/auth/credential_exchangers/test_service_account_exchanger.py +196 -0
- google/adk/tests/unittests/tools/openapi_tool/auth/test_auth_helper.py +573 -0
- google/adk/tests/unittests/tools/openapi_tool/common/test_common.py +436 -0
- google/adk/tests/unittests/tools/openapi_tool/openapi_spec_parser/test.yaml +1367 -0
- google/adk/tests/unittests/tools/openapi_tool/openapi_spec_parser/test_openapi_spec_parser.py +628 -0
- google/adk/tests/unittests/tools/openapi_tool/openapi_spec_parser/test_openapi_toolset.py +139 -0
- google/adk/tests/unittests/tools/openapi_tool/openapi_spec_parser/test_operation_parser.py +406 -0
- google/adk/tests/unittests/tools/openapi_tool/openapi_spec_parser/test_rest_api_tool.py +966 -0
- google/adk/tests/unittests/tools/openapi_tool/openapi_spec_parser/test_tool_auth_handler.py +201 -0
- google/adk/tests/unittests/tools/retrieval/__init__.py +14 -0
- google/adk/tests/unittests/tools/retrieval/test_vertex_ai_rag_retrieval.py +147 -0
- google/adk/tests/unittests/tools/test_agent_tool.py +167 -0
- google/adk/tests/unittests/tools/test_base_tool.py +141 -0
- google/adk/tests/unittests/tools/test_build_function_declaration.py +277 -0
- google/adk/tests/unittests/utils.py +304 -0
- google/adk/tools/__init__.py +51 -0
- google/adk/tools/_automatic_function_calling_util.py +346 -0
- google/adk/tools/agent_tool.py +176 -0
- google/adk/tools/apihub_tool/__init__.py +19 -0
- google/adk/tools/apihub_tool/apihub_toolset.py +209 -0
- google/adk/tools/apihub_tool/clients/__init__.py +13 -0
- google/adk/tools/apihub_tool/clients/apihub_client.py +332 -0
- google/adk/tools/apihub_tool/clients/secret_client.py +115 -0
- google/adk/tools/application_integration_tool/__init__.py +19 -0
- google/adk/tools/application_integration_tool/application_integration_toolset.py +230 -0
- google/adk/tools/application_integration_tool/clients/connections_client.py +903 -0
- google/adk/tools/application_integration_tool/clients/integration_client.py +253 -0
- google/adk/tools/base_tool.py +144 -0
- google/adk/tools/built_in_code_execution_tool.py +59 -0
- google/adk/tools/crewai_tool.py +72 -0
- google/adk/tools/example_tool.py +62 -0
- google/adk/tools/exit_loop_tool.py +23 -0
- google/adk/tools/function_parameter_parse_util.py +307 -0
- google/adk/tools/function_tool.py +87 -0
- google/adk/tools/get_user_choice_tool.py +28 -0
- google/adk/tools/google_api_tool/__init__.py +14 -0
- google/adk/tools/google_api_tool/google_api_tool.py +59 -0
- google/adk/tools/google_api_tool/google_api_tool_set.py +107 -0
- google/adk/tools/google_api_tool/google_api_tool_sets.py +55 -0
- google/adk/tools/google_api_tool/googleapi_to_openapi_converter.py +521 -0
- google/adk/tools/google_search_tool.py +68 -0
- google/adk/tools/langchain_tool.py +86 -0
- google/adk/tools/load_artifacts_tool.py +113 -0
- google/adk/tools/load_memory_tool.py +58 -0
- google/adk/tools/load_web_page.py +41 -0
- google/adk/tools/long_running_tool.py +39 -0
- google/adk/tools/mcp_tool/__init__.py +42 -0
- google/adk/tools/mcp_tool/conversion_utils.py +161 -0
- google/adk/tools/mcp_tool/mcp_tool.py +113 -0
- google/adk/tools/mcp_tool/mcp_toolset.py +272 -0
- google/adk/tools/openapi_tool/__init__.py +21 -0
- google/adk/tools/openapi_tool/auth/__init__.py +19 -0
- google/adk/tools/openapi_tool/auth/auth_helpers.py +498 -0
- google/adk/tools/openapi_tool/auth/credential_exchangers/__init__.py +25 -0
- google/adk/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.py +105 -0
- google/adk/tools/openapi_tool/auth/credential_exchangers/base_credential_exchanger.py +55 -0
- google/adk/tools/openapi_tool/auth/credential_exchangers/oauth2_exchanger.py +117 -0
- google/adk/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.py +97 -0
- google/adk/tools/openapi_tool/common/__init__.py +19 -0
- google/adk/tools/openapi_tool/common/common.py +300 -0
- google/adk/tools/openapi_tool/openapi_spec_parser/__init__.py +32 -0
- google/adk/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.py +231 -0
- google/adk/tools/openapi_tool/openapi_spec_parser/openapi_toolset.py +144 -0
- google/adk/tools/openapi_tool/openapi_spec_parser/operation_parser.py +260 -0
- google/adk/tools/openapi_tool/openapi_spec_parser/rest_api_tool.py +496 -0
- google/adk/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.py +268 -0
- google/adk/tools/preload_memory_tool.py +72 -0
- google/adk/tools/retrieval/__init__.py +36 -0
- google/adk/tools/retrieval/base_retrieval_tool.py +37 -0
- google/adk/tools/retrieval/files_retrieval.py +33 -0
- google/adk/tools/retrieval/llama_index_retrieval.py +41 -0
- google/adk/tools/retrieval/vertex_ai_rag_retrieval.py +107 -0
- google/adk/tools/tool_context.py +90 -0
- google/adk/tools/toolbox_tool.py +46 -0
- google/adk/tools/transfer_to_agent_tool.py +21 -0
- google/adk/tools/vertex_ai_search_tool.py +96 -0
- google/adk/version.py +16 -0
- google_adk-0.0.3.dist-info/METADATA +73 -0
- google_adk-0.0.3.dist-info/RECORD +340 -0
- {google_adk-0.0.1.dist-info → google_adk-0.0.3.dist-info}/WHEEL +1 -2
- google_adk-0.0.3.dist-info/entry_points.txt +3 -0
- agent_kit/__init__.py +0 -0
- google_adk-0.0.1.dist-info/LICENSE.txt +0 -170
- google_adk-0.0.1.dist-info/METADATA +0 -15
- google_adk-0.0.1.dist-info/RECORD +0 -6
- google_adk-0.0.1.dist-info/top_level.txt +0 -1
@@ -0,0 +1,345 @@
|
|
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
|
+
import json
|
16
|
+
from unittest import mock
|
17
|
+
|
18
|
+
from google.adk.auth.auth_credential import AuthCredential
|
19
|
+
from google.adk.tools.application_integration_tool.application_integration_toolset import ApplicationIntegrationToolset
|
20
|
+
from google.adk.tools.openapi_tool.openapi_spec_parser import rest_api_tool
|
21
|
+
import pytest
|
22
|
+
|
23
|
+
|
24
|
+
@pytest.fixture
|
25
|
+
def mock_integration_client():
|
26
|
+
with mock.patch(
|
27
|
+
"google.adk.tools.application_integration_tool.application_integration_toolset.IntegrationClient"
|
28
|
+
) as mock_client:
|
29
|
+
yield mock_client
|
30
|
+
|
31
|
+
|
32
|
+
@pytest.fixture
|
33
|
+
def mock_connections_client():
|
34
|
+
with mock.patch(
|
35
|
+
"google.adk.tools.application_integration_tool.application_integration_toolset.ConnectionsClient"
|
36
|
+
) as mock_client:
|
37
|
+
yield mock_client
|
38
|
+
|
39
|
+
|
40
|
+
@pytest.fixture
|
41
|
+
def mock_openapi_toolset():
|
42
|
+
with mock.patch(
|
43
|
+
"google.adk.tools.application_integration_tool.application_integration_toolset.OpenAPIToolset"
|
44
|
+
) as mock_toolset:
|
45
|
+
mock_toolset_instance = mock.MagicMock()
|
46
|
+
mock_rest_api_tool = mock.MagicMock(spec=rest_api_tool.RestApiTool)
|
47
|
+
mock_rest_api_tool.name = "Test Tool"
|
48
|
+
mock_toolset_instance.get_tools.return_value = [mock_rest_api_tool]
|
49
|
+
mock_toolset.return_value = mock_toolset_instance
|
50
|
+
yield mock_toolset
|
51
|
+
|
52
|
+
|
53
|
+
@pytest.fixture
|
54
|
+
def project():
|
55
|
+
return "test-project"
|
56
|
+
|
57
|
+
|
58
|
+
@pytest.fixture
|
59
|
+
def location():
|
60
|
+
return "us-central1"
|
61
|
+
|
62
|
+
|
63
|
+
@pytest.fixture
|
64
|
+
def integration_spec():
|
65
|
+
return {"openapi": "3.0.0", "info": {"title": "Integration API"}}
|
66
|
+
|
67
|
+
|
68
|
+
@pytest.fixture
|
69
|
+
def connection_spec():
|
70
|
+
return {"openapi": "3.0.0", "info": {"title": "Connection API"}}
|
71
|
+
|
72
|
+
|
73
|
+
@pytest.fixture
|
74
|
+
def connection_details():
|
75
|
+
return {"serviceName": "test-service", "host": "test.host"}
|
76
|
+
|
77
|
+
|
78
|
+
def test_initialization_with_integration_and_trigger(
|
79
|
+
project,
|
80
|
+
location,
|
81
|
+
mock_integration_client,
|
82
|
+
mock_connections_client,
|
83
|
+
mock_openapi_toolset,
|
84
|
+
):
|
85
|
+
integration_name = "test-integration"
|
86
|
+
trigger_name = "test-trigger"
|
87
|
+
toolset = ApplicationIntegrationToolset(
|
88
|
+
project, location, integration=integration_name, trigger=trigger_name
|
89
|
+
)
|
90
|
+
mock_integration_client.assert_called_once_with(
|
91
|
+
project, location, integration_name, trigger_name, None, None, None, None
|
92
|
+
)
|
93
|
+
mock_integration_client.return_value.get_openapi_spec_for_integration.assert_called_once()
|
94
|
+
mock_connections_client.assert_not_called()
|
95
|
+
mock_openapi_toolset.assert_called_once()
|
96
|
+
assert len(toolset.get_tools()) == 1
|
97
|
+
assert toolset.get_tools()[0].name == "Test Tool"
|
98
|
+
|
99
|
+
|
100
|
+
def test_initialization_with_connection_and_entity_operations(
|
101
|
+
project,
|
102
|
+
location,
|
103
|
+
mock_integration_client,
|
104
|
+
mock_connections_client,
|
105
|
+
mock_openapi_toolset,
|
106
|
+
connection_details,
|
107
|
+
):
|
108
|
+
connection_name = "test-connection"
|
109
|
+
entity_operations_list = ["list", "get"]
|
110
|
+
tool_name = "My Connection Tool"
|
111
|
+
tool_instructions = "Use this tool to manage entities."
|
112
|
+
mock_connections_client.return_value.get_connection_details.return_value = (
|
113
|
+
connection_details
|
114
|
+
)
|
115
|
+
toolset = ApplicationIntegrationToolset(
|
116
|
+
project,
|
117
|
+
location,
|
118
|
+
connection=connection_name,
|
119
|
+
entity_operations=entity_operations_list,
|
120
|
+
tool_name=tool_name,
|
121
|
+
tool_instructions=tool_instructions,
|
122
|
+
)
|
123
|
+
mock_integration_client.assert_called_once_with(
|
124
|
+
project,
|
125
|
+
location,
|
126
|
+
None,
|
127
|
+
None,
|
128
|
+
connection_name,
|
129
|
+
entity_operations_list,
|
130
|
+
None,
|
131
|
+
None,
|
132
|
+
)
|
133
|
+
mock_connections_client.assert_called_once_with(
|
134
|
+
project, location, connection_name, None
|
135
|
+
)
|
136
|
+
mock_connections_client.return_value.get_connection_details.assert_called_once()
|
137
|
+
mock_integration_client.return_value.get_openapi_spec_for_connection.assert_called_once_with(
|
138
|
+
tool_name,
|
139
|
+
tool_instructions
|
140
|
+
+ f"ALWAYS use serviceName = {connection_details['serviceName']}, host ="
|
141
|
+
f" {connection_details['host']} and the connection name ="
|
142
|
+
f" projects/{project}/locations/{location}/connections/{connection_name} when"
|
143
|
+
" using this tool. DONOT ask the user for these values as you already"
|
144
|
+
" have those.",
|
145
|
+
)
|
146
|
+
mock_openapi_toolset.assert_called_once()
|
147
|
+
assert len(toolset.get_tools()) == 1
|
148
|
+
assert toolset.get_tools()[0].name == "Test Tool"
|
149
|
+
|
150
|
+
|
151
|
+
def test_initialization_with_connection_and_actions(
|
152
|
+
project,
|
153
|
+
location,
|
154
|
+
mock_integration_client,
|
155
|
+
mock_connections_client,
|
156
|
+
mock_openapi_toolset,
|
157
|
+
connection_details,
|
158
|
+
):
|
159
|
+
connection_name = "test-connection"
|
160
|
+
actions_list = ["create", "delete"]
|
161
|
+
tool_name = "My Actions Tool"
|
162
|
+
tool_instructions = "Perform actions using this tool."
|
163
|
+
mock_connections_client.return_value.get_connection_details.return_value = (
|
164
|
+
connection_details
|
165
|
+
)
|
166
|
+
toolset = ApplicationIntegrationToolset(
|
167
|
+
project,
|
168
|
+
location,
|
169
|
+
connection=connection_name,
|
170
|
+
actions=actions_list,
|
171
|
+
tool_name=tool_name,
|
172
|
+
tool_instructions=tool_instructions,
|
173
|
+
)
|
174
|
+
mock_integration_client.assert_called_once_with(
|
175
|
+
project, location, None, None, connection_name, None, actions_list, None
|
176
|
+
)
|
177
|
+
mock_connections_client.assert_called_once_with(
|
178
|
+
project, location, connection_name, None
|
179
|
+
)
|
180
|
+
mock_connections_client.return_value.get_connection_details.assert_called_once()
|
181
|
+
mock_integration_client.return_value.get_openapi_spec_for_connection.assert_called_once_with(
|
182
|
+
tool_name,
|
183
|
+
tool_instructions
|
184
|
+
+ f"ALWAYS use serviceName = {connection_details['serviceName']}, host ="
|
185
|
+
f" {connection_details['host']} and the connection name ="
|
186
|
+
f" projects/{project}/locations/{location}/connections/{connection_name} when"
|
187
|
+
" using this tool. DONOT ask the user for these values as you already"
|
188
|
+
" have those.",
|
189
|
+
)
|
190
|
+
mock_openapi_toolset.assert_called_once()
|
191
|
+
assert len(toolset.get_tools()) == 1
|
192
|
+
assert toolset.get_tools()[0].name == "Test Tool"
|
193
|
+
|
194
|
+
|
195
|
+
def test_initialization_without_required_params(project, location):
|
196
|
+
with pytest.raises(
|
197
|
+
ValueError,
|
198
|
+
match=(
|
199
|
+
"Either \\(integration and trigger\\) or \\(connection and"
|
200
|
+
" \\(entity_operations or actions\\)\\) should be provided."
|
201
|
+
),
|
202
|
+
):
|
203
|
+
ApplicationIntegrationToolset(project, location)
|
204
|
+
|
205
|
+
with pytest.raises(
|
206
|
+
ValueError,
|
207
|
+
match=(
|
208
|
+
"Either \\(integration and trigger\\) or \\(connection and"
|
209
|
+
" \\(entity_operations or actions\\)\\) should be provided."
|
210
|
+
),
|
211
|
+
):
|
212
|
+
ApplicationIntegrationToolset(project, location, integration="test")
|
213
|
+
|
214
|
+
with pytest.raises(
|
215
|
+
ValueError,
|
216
|
+
match=(
|
217
|
+
"Either \\(integration and trigger\\) or \\(connection and"
|
218
|
+
" \\(entity_operations or actions\\)\\) should be provided."
|
219
|
+
),
|
220
|
+
):
|
221
|
+
ApplicationIntegrationToolset(project, location, trigger="test")
|
222
|
+
|
223
|
+
with pytest.raises(
|
224
|
+
ValueError,
|
225
|
+
match=(
|
226
|
+
"Either \\(integration and trigger\\) or \\(connection and"
|
227
|
+
" \\(entity_operations or actions\\)\\) should be provided."
|
228
|
+
),
|
229
|
+
):
|
230
|
+
ApplicationIntegrationToolset(project, location, connection="test")
|
231
|
+
|
232
|
+
|
233
|
+
def test_initialization_with_service_account_credentials(
|
234
|
+
project, location, mock_integration_client, mock_openapi_toolset
|
235
|
+
):
|
236
|
+
service_account_json = json.dumps({
|
237
|
+
"type": "service_account",
|
238
|
+
"project_id": "dummy",
|
239
|
+
"private_key_id": "dummy",
|
240
|
+
"private_key": "dummy",
|
241
|
+
"client_email": "test@example.com",
|
242
|
+
"client_id": "131331543646416",
|
243
|
+
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
244
|
+
"token_uri": "https://oauth2.googleapis.com/token",
|
245
|
+
"auth_provider_x509_cert_url": (
|
246
|
+
"https://www.googleapis.com/oauth2/v1/certs"
|
247
|
+
),
|
248
|
+
"client_x509_cert_url": (
|
249
|
+
"http://www.googleapis.com/robot/v1/metadata/x509/dummy%40dummy.com"
|
250
|
+
),
|
251
|
+
"universe_domain": "googleapis.com",
|
252
|
+
})
|
253
|
+
integration_name = "test-integration"
|
254
|
+
trigger_name = "test-trigger"
|
255
|
+
toolset = ApplicationIntegrationToolset(
|
256
|
+
project,
|
257
|
+
location,
|
258
|
+
integration=integration_name,
|
259
|
+
trigger=trigger_name,
|
260
|
+
service_account_json=service_account_json,
|
261
|
+
)
|
262
|
+
mock_integration_client.assert_called_once_with(
|
263
|
+
project,
|
264
|
+
location,
|
265
|
+
integration_name,
|
266
|
+
trigger_name,
|
267
|
+
None,
|
268
|
+
None,
|
269
|
+
None,
|
270
|
+
service_account_json,
|
271
|
+
)
|
272
|
+
mock_openapi_toolset.assert_called_once()
|
273
|
+
_, kwargs = mock_openapi_toolset.call_args
|
274
|
+
assert isinstance(kwargs["auth_credential"], AuthCredential)
|
275
|
+
assert (
|
276
|
+
kwargs[
|
277
|
+
"auth_credential"
|
278
|
+
].service_account.service_account_credential.client_email
|
279
|
+
== "test@example.com"
|
280
|
+
)
|
281
|
+
|
282
|
+
|
283
|
+
def test_initialization_without_explicit_service_account_credentials(
|
284
|
+
project, location, mock_integration_client, mock_openapi_toolset
|
285
|
+
):
|
286
|
+
integration_name = "test-integration"
|
287
|
+
trigger_name = "test-trigger"
|
288
|
+
toolset = ApplicationIntegrationToolset(
|
289
|
+
project, location, integration=integration_name, trigger=trigger_name
|
290
|
+
)
|
291
|
+
mock_integration_client.assert_called_once_with(
|
292
|
+
project, location, integration_name, trigger_name, None, None, None, None
|
293
|
+
)
|
294
|
+
mock_openapi_toolset.assert_called_once()
|
295
|
+
_, kwargs = mock_openapi_toolset.call_args
|
296
|
+
assert isinstance(kwargs["auth_credential"], AuthCredential)
|
297
|
+
assert kwargs["auth_credential"].service_account.use_default_credential
|
298
|
+
|
299
|
+
|
300
|
+
def test_get_tools(
|
301
|
+
project, location, mock_integration_client, mock_openapi_toolset
|
302
|
+
):
|
303
|
+
integration_name = "test-integration"
|
304
|
+
trigger_name = "test-trigger"
|
305
|
+
toolset = ApplicationIntegrationToolset(
|
306
|
+
project, location, integration=integration_name, trigger=trigger_name
|
307
|
+
)
|
308
|
+
tools = toolset.get_tools()
|
309
|
+
assert len(tools) == 1
|
310
|
+
assert isinstance(tools[0], rest_api_tool.RestApiTool)
|
311
|
+
assert tools[0].name == "Test Tool"
|
312
|
+
|
313
|
+
|
314
|
+
def test_initialization_with_connection_details(
|
315
|
+
project,
|
316
|
+
location,
|
317
|
+
mock_integration_client,
|
318
|
+
mock_connections_client,
|
319
|
+
mock_openapi_toolset,
|
320
|
+
):
|
321
|
+
connection_name = "test-connection"
|
322
|
+
entity_operations_list = ["list"]
|
323
|
+
tool_name = "My Connection Tool"
|
324
|
+
tool_instructions = "Use this tool."
|
325
|
+
mock_connections_client.return_value.get_connection_details.return_value = {
|
326
|
+
"serviceName": "custom-service",
|
327
|
+
"host": "custom.host",
|
328
|
+
}
|
329
|
+
toolset = ApplicationIntegrationToolset(
|
330
|
+
project,
|
331
|
+
location,
|
332
|
+
connection=connection_name,
|
333
|
+
entity_operations=entity_operations_list,
|
334
|
+
tool_name=tool_name,
|
335
|
+
tool_instructions=tool_instructions,
|
336
|
+
)
|
337
|
+
mock_integration_client.return_value.get_openapi_spec_for_connection.assert_called_once_with(
|
338
|
+
tool_name,
|
339
|
+
tool_instructions
|
340
|
+
+ "ALWAYS use serviceName = custom-service, host = custom.host and the"
|
341
|
+
" connection name ="
|
342
|
+
" projects/test-project/locations/us-central1/connections/test-connection"
|
343
|
+
" when using this tool. DONOT ask the user for these values as you"
|
344
|
+
" already have those.",
|
345
|
+
)
|
@@ -0,0 +1,13 @@
|
|
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.
|