google-adk 0.1.0__tar.gz → 0.2.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.
Files changed (180) hide show
  1. google_adk-0.2.0/PKG-INFO +212 -0
  2. google_adk-0.2.0/README.md +130 -0
  3. {google_adk-0.1.0 → google_adk-0.2.0}/pyproject.toml +4 -0
  4. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/agents/base_agent.py +4 -4
  5. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/agents/invocation_context.py +1 -1
  6. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/agents/remote_agent.py +1 -1
  7. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/agents/run_config.py +1 -1
  8. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/auth/auth_preprocessor.py +2 -2
  9. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/auth/auth_tool.py +1 -1
  10. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/cli/browser/index.html +2 -2
  11. google_adk-0.1.0/src/google/adk/cli/browser/main-SLIAU2JL.js → google_adk-0.2.0/src/google/adk/cli/browser/main-ZBO76GRM.js +65 -81
  12. google_adk-0.2.0/src/google/adk/cli/cli_create.py +279 -0
  13. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/cli/cli_deploy.py +4 -0
  14. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/cli/cli_eval.py +2 -2
  15. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/cli/cli_tools_click.py +67 -7
  16. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/cli/fast_api.py +51 -16
  17. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/cli/utils/envs.py +0 -3
  18. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/cli/utils/evals.py +2 -2
  19. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/evaluation/evaluation_generator.py +4 -4
  20. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/evaluation/response_evaluator.py +15 -3
  21. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/events/event.py +3 -3
  22. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/flows/llm_flows/_nl_planning.py +10 -4
  23. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/flows/llm_flows/contents.py +1 -1
  24. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/models/lite_llm.py +51 -34
  25. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/planners/plan_re_act_planner.py +2 -2
  26. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/runners.py +1 -1
  27. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/sessions/database_session_service.py +84 -23
  28. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/sessions/state.py +1 -1
  29. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/telemetry.py +2 -2
  30. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/application_integration_tool/clients/integration_client.py +3 -2
  31. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/base_tool.py +1 -1
  32. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/function_parameter_parse_util.py +2 -2
  33. google_adk-0.2.0/src/google/adk/tools/google_api_tool/__init__.py +87 -0
  34. google_adk-0.2.0/src/google/adk/tools/google_api_tool/google_api_tool_sets.py +112 -0
  35. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/google_api_tool/googleapi_to_openapi_converter.py +3 -1
  36. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/load_memory_tool.py +25 -2
  37. google_adk-0.2.0/src/google/adk/tools/mcp_tool/mcp_session_manager.py +176 -0
  38. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/mcp_tool/mcp_tool.py +15 -2
  39. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/mcp_tool/mcp_toolset.py +31 -37
  40. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/openapi_tool/openapi_spec_parser/rest_api_tool.py +1 -1
  41. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/toolbox_tool.py +1 -1
  42. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/version.py +1 -1
  43. google_adk-0.1.0/PKG-INFO +0 -160
  44. google_adk-0.1.0/README.md +0 -82
  45. google_adk-0.1.0/src/google/adk/tools/google_api_tool/__init__.py +0 -14
  46. google_adk-0.1.0/src/google/adk/tools/google_api_tool/google_api_tool_sets.py +0 -55
  47. {google_adk-0.1.0 → google_adk-0.2.0}/LICENSE +0 -0
  48. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/__init__.py +0 -0
  49. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/agents/__init__.py +0 -0
  50. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/agents/active_streaming_tool.py +0 -0
  51. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/agents/callback_context.py +0 -0
  52. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/agents/langgraph_agent.py +0 -0
  53. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/agents/live_request_queue.py +0 -0
  54. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/agents/llm_agent.py +0 -0
  55. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/agents/loop_agent.py +0 -0
  56. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/agents/parallel_agent.py +0 -0
  57. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/agents/readonly_context.py +0 -0
  58. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/agents/sequential_agent.py +0 -0
  59. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/agents/transcription_entry.py +0 -0
  60. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/artifacts/__init__.py +0 -0
  61. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/artifacts/base_artifact_service.py +0 -0
  62. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/artifacts/gcs_artifact_service.py +0 -0
  63. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/artifacts/in_memory_artifact_service.py +0 -0
  64. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/auth/__init__.py +0 -0
  65. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/auth/auth_credential.py +0 -0
  66. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/auth/auth_handler.py +0 -0
  67. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/auth/auth_schemes.py +0 -0
  68. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/cli/__init__.py +0 -0
  69. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/cli/__main__.py +0 -0
  70. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/cli/agent_graph.py +0 -0
  71. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/cli/browser/adk_favicon.svg +0 -0
  72. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/cli/browser/assets/audio-processor.js +0 -0
  73. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/cli/browser/assets/config/runtime-config.json +0 -0
  74. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/cli/browser/polyfills-FFHMD2TL.js +0 -0
  75. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/cli/browser/styles-4VDSPQ37.css +0 -0
  76. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/cli/cli.py +0 -0
  77. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/cli/utils/__init__.py +0 -0
  78. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/cli/utils/logs.py +0 -0
  79. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/code_executors/__init__.py +0 -0
  80. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/code_executors/base_code_executor.py +0 -0
  81. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/code_executors/code_execution_utils.py +0 -0
  82. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/code_executors/code_executor_context.py +0 -0
  83. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/code_executors/container_code_executor.py +0 -0
  84. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/code_executors/unsafe_local_code_executor.py +0 -0
  85. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/code_executors/vertex_ai_code_executor.py +0 -0
  86. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/evaluation/__init__.py +0 -0
  87. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/evaluation/agent_evaluator.py +0 -0
  88. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/evaluation/evaluation_constants.py +0 -0
  89. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/evaluation/trajectory_evaluator.py +0 -0
  90. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/events/__init__.py +0 -0
  91. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/events/event_actions.py +0 -0
  92. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/examples/__init__.py +0 -0
  93. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/examples/base_example_provider.py +0 -0
  94. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/examples/example.py +0 -0
  95. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/examples/example_util.py +0 -0
  96. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/examples/vertex_ai_example_store.py +0 -0
  97. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/flows/__init__.py +0 -0
  98. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/flows/llm_flows/__init__.py +0 -0
  99. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/flows/llm_flows/_base_llm_processor.py +0 -0
  100. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/flows/llm_flows/_code_execution.py +0 -0
  101. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/flows/llm_flows/agent_transfer.py +0 -0
  102. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/flows/llm_flows/audio_transcriber.py +0 -0
  103. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/flows/llm_flows/auto_flow.py +0 -0
  104. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/flows/llm_flows/base_llm_flow.py +0 -0
  105. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/flows/llm_flows/basic.py +0 -0
  106. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/flows/llm_flows/functions.py +0 -0
  107. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/flows/llm_flows/identity.py +0 -0
  108. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/flows/llm_flows/instructions.py +0 -0
  109. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/flows/llm_flows/single_flow.py +0 -0
  110. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/memory/__init__.py +0 -0
  111. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/memory/base_memory_service.py +0 -0
  112. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/memory/in_memory_memory_service.py +0 -0
  113. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/memory/vertex_ai_rag_memory_service.py +0 -0
  114. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/models/__init__.py +0 -0
  115. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/models/anthropic_llm.py +0 -0
  116. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/models/base_llm.py +0 -0
  117. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/models/base_llm_connection.py +0 -0
  118. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/models/gemini_llm_connection.py +0 -0
  119. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/models/google_llm.py +0 -0
  120. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/models/llm_request.py +0 -0
  121. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/models/llm_response.py +0 -0
  122. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/models/registry.py +0 -0
  123. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/planners/__init__.py +0 -0
  124. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/planners/base_planner.py +0 -0
  125. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/planners/built_in_planner.py +0 -0
  126. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/sessions/__init__.py +0 -0
  127. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/sessions/base_session_service.py +0 -0
  128. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/sessions/in_memory_session_service.py +0 -0
  129. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/sessions/session.py +0 -0
  130. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/sessions/vertex_ai_session_service.py +0 -0
  131. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/__init__.py +0 -0
  132. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/_automatic_function_calling_util.py +0 -0
  133. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/agent_tool.py +0 -0
  134. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/apihub_tool/__init__.py +0 -0
  135. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/apihub_tool/apihub_toolset.py +0 -0
  136. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/apihub_tool/clients/__init__.py +0 -0
  137. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/apihub_tool/clients/apihub_client.py +0 -0
  138. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/apihub_tool/clients/secret_client.py +0 -0
  139. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/application_integration_tool/__init__.py +0 -0
  140. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/application_integration_tool/application_integration_toolset.py +0 -0
  141. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/application_integration_tool/clients/connections_client.py +0 -0
  142. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/built_in_code_execution_tool.py +0 -0
  143. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/crewai_tool.py +0 -0
  144. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/example_tool.py +0 -0
  145. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/exit_loop_tool.py +0 -0
  146. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/function_tool.py +0 -0
  147. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/get_user_choice_tool.py +0 -0
  148. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/google_api_tool/google_api_tool.py +0 -0
  149. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/google_api_tool/google_api_tool_set.py +0 -0
  150. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/google_search_tool.py +0 -0
  151. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/langchain_tool.py +0 -0
  152. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/load_artifacts_tool.py +0 -0
  153. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/load_web_page.py +0 -0
  154. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/long_running_tool.py +0 -0
  155. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/mcp_tool/__init__.py +0 -0
  156. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/mcp_tool/conversion_utils.py +0 -0
  157. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/openapi_tool/__init__.py +0 -0
  158. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/openapi_tool/auth/__init__.py +0 -0
  159. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/openapi_tool/auth/auth_helpers.py +0 -0
  160. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/openapi_tool/auth/credential_exchangers/__init__.py +0 -0
  161. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.py +0 -0
  162. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/openapi_tool/auth/credential_exchangers/base_credential_exchanger.py +0 -0
  163. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/openapi_tool/auth/credential_exchangers/oauth2_exchanger.py +0 -0
  164. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.py +0 -0
  165. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/openapi_tool/common/__init__.py +0 -0
  166. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/openapi_tool/common/common.py +0 -0
  167. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/openapi_tool/openapi_spec_parser/__init__.py +0 -0
  168. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.py +0 -0
  169. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/openapi_tool/openapi_spec_parser/openapi_toolset.py +0 -0
  170. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/openapi_tool/openapi_spec_parser/operation_parser.py +0 -0
  171. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.py +0 -0
  172. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/preload_memory_tool.py +0 -0
  173. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/retrieval/__init__.py +0 -0
  174. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/retrieval/base_retrieval_tool.py +0 -0
  175. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/retrieval/files_retrieval.py +0 -0
  176. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/retrieval/llama_index_retrieval.py +0 -0
  177. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/retrieval/vertex_ai_rag_retrieval.py +0 -0
  178. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/tool_context.py +0 -0
  179. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/transfer_to_agent_tool.py +0 -0
  180. {google_adk-0.1.0 → google_adk-0.2.0}/src/google/adk/tools/vertex_ai_search_tool.py +0 -0
@@ -0,0 +1,212 @@
1
+ Metadata-Version: 2.4
2
+ Name: google-adk
3
+ Version: 0.2.0
4
+ Summary: Agent Development Kit
5
+ Author-email: Google LLC <googleapis-packages@google.com>
6
+ Requires-Python: >=3.9
7
+ Description-Content-Type: text/markdown
8
+ Classifier: Typing :: Typed
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: Intended Audience :: Science/Research
11
+ Classifier: Programming Language :: Python
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.9
14
+ Classifier: Programming Language :: Python :: 3.13
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Operating System :: OS Independent
19
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
+ Classifier: License :: OSI Approved :: Apache Software License
21
+ License-File: LICENSE
22
+ Requires-Dist: authlib>=1.5.1
23
+ Requires-Dist: click>=8.1.8
24
+ Requires-Dist: fastapi>=0.115.0
25
+ Requires-Dist: google-api-python-client>=2.157.0
26
+ Requires-Dist: google-cloud-aiplatform>=1.87.0
27
+ Requires-Dist: google-cloud-secret-manager>=2.22.0
28
+ Requires-Dist: google-cloud-speech>=2.30.0
29
+ Requires-Dist: google-cloud-storage>=2.18.0, <3.0.0
30
+ Requires-Dist: google-genai>=1.9.0
31
+ Requires-Dist: graphviz>=0.20.2
32
+ Requires-Dist: mcp>=1.5.0;python_version>='3.10'
33
+ Requires-Dist: opentelemetry-api>=1.31.0
34
+ Requires-Dist: opentelemetry-exporter-gcp-trace>=1.9.0
35
+ Requires-Dist: opentelemetry-sdk>=1.31.0
36
+ Requires-Dist: pydantic>=2.0, <3.0.0
37
+ Requires-Dist: python-dotenv>=1.0.0
38
+ Requires-Dist: PyYAML>=6.0.2
39
+ Requires-Dist: sqlalchemy>=2.0
40
+ Requires-Dist: tzlocal>=5.3
41
+ Requires-Dist: uvicorn>=0.34.0
42
+ Requires-Dist: flit>=3.10.0 ; extra == "dev"
43
+ Requires-Dist: isort>=6.0.0 ; extra == "dev"
44
+ Requires-Dist: pyink>=24.10.0 ; extra == "dev"
45
+ Requires-Dist: pylint>=2.6.0 ; extra == "dev"
46
+ Requires-Dist: autodoc_pydantic ; extra == "docs"
47
+ Requires-Dist: furo ; extra == "docs"
48
+ Requires-Dist: myst-parser ; extra == "docs"
49
+ Requires-Dist: sphinx ; extra == "docs"
50
+ Requires-Dist: sphinx-autodoc-typehints ; extra == "docs"
51
+ Requires-Dist: sphinx-rtd-theme ; extra == "docs"
52
+ Requires-Dist: google-cloud-aiplatform[evaluation]>=1.87.0 ; extra == "eval"
53
+ Requires-Dist: pandas>=2.2.3 ; extra == "eval"
54
+ Requires-Dist: tabulate>=0.9.0 ; extra == "eval"
55
+ Requires-Dist: anthropic>=0.43.0 ; extra == "extensions"
56
+ Requires-Dist: beautifulsoup4>=3.2.2 ; extra == "extensions"
57
+ Requires-Dist: crewai[tools] ; extra == "extensions" and (python_version>='3.10')
58
+ Requires-Dist: docker>=7.0.0 ; extra == "extensions"
59
+ Requires-Dist: langgraph>=0.2.60 ; extra == "extensions"
60
+ Requires-Dist: litellm>=1.63.11 ; extra == "extensions"
61
+ Requires-Dist: llama-index-readers-file>=0.4.0 ; extra == "extensions"
62
+ Requires-Dist: lxml>=5.3.0 ; extra == "extensions"
63
+ Requires-Dist: anthropic>=0.43.0 ; extra == "test"
64
+ Requires-Dist: langchain-community>=0.3.17 ; extra == "test"
65
+ Requires-Dist: langgraph>=0.2.60 ; extra == "test"
66
+ Requires-Dist: litellm>=1.63.11 ; extra == "test"
67
+ Requires-Dist: llama-index-readers-file>=0.4.0 ; extra == "test"
68
+ Requires-Dist: pytest-asyncio>=0.25.0 ; extra == "test"
69
+ Requires-Dist: pytest-mock>=3.14.0 ; extra == "test"
70
+ Requires-Dist: pytest-xdist>=3.6.1 ; extra == "test"
71
+ Requires-Dist: pytest>=8.3.4 ; extra == "test"
72
+ Project-URL: changelog, https://github.com/google/adk-python/blob/main/CHANGELOG.md
73
+ Project-URL: documentation, https://google.github.io/adk-docs/
74
+ Project-URL: homepage, https://google.github.io/adk-docs/
75
+ Project-URL: repository, https://github.com/google/adk-python
76
+ Provides-Extra: dev
77
+ Provides-Extra: docs
78
+ Provides-Extra: eval
79
+ Provides-Extra: extensions
80
+ Provides-Extra: test
81
+
82
+ # Agent Development Kit (ADK)
83
+
84
+ [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)
85
+ [![Python Unit Tests](https://github.com/google/adk-python/actions/workflows/python-unit-tests.yml/badge.svg)](https://github.com/google/adk-python/actions/workflows/python-unit-tests.yml)
86
+ [![r/agentdevelopmentkit](https://img.shields.io/badge/Reddit-r%2Fagentdevelopmentkit-FF4500?style=flat&logo=reddit&logoColor=white)](https://www.reddit.com/r/agentdevelopmentkit/)
87
+
88
+ <html>
89
+ <h2 align="center">
90
+ <img src="https://raw.githubusercontent.com/google/adk-python/main/assets/agent-development-kit.png" width="256"/>
91
+ </h2>
92
+ <h3 align="center">
93
+ An open-source, code-first Python toolkit for building, evaluating, and deploying sophisticated AI agents with flexibility and control.
94
+ </h3>
95
+ <h3 align="center">
96
+ Important Links:
97
+ <a href="https://google.github.io/adk-docs/">Docs</a> &
98
+ <a href="https://github.com/google/adk-samples">Samples</a>.
99
+ </h3>
100
+ </html>
101
+
102
+ Agent Development Kit (ADK) is designed for developers seeking fine-grained
103
+ control and flexibility when building advanced AI agents that are tightly
104
+ integrated with services in Google Cloud. It allows you to define agent
105
+ behavior, orchestration, and tool use directly in code, enabling robust
106
+ debugging, versioning, and deployment anywhere – from your laptop to the cloud.
107
+
108
+
109
+ ---
110
+
111
+ ## ✨ Key Features
112
+
113
+ - **Rich Tool Ecosystem**: Utilize pre-built tools, custom functions,
114
+ OpenAPI specs, or integrate existing tools to give agents diverse
115
+ capabilities, all for tight integration with the Google ecosystem.
116
+
117
+ - **Code-First Development**: Define agent logic, tools, and orchestration
118
+ directly in Python for ultimate flexibility, testability, and versioning.
119
+
120
+ - **Modular Multi-Agent Systems**: Design scalable applications by composing
121
+ multiple specialized agents into flexible hierarchies.
122
+
123
+ - **Deploy Anywhere**: Easily containerize and deploy agents on Cloud Run or
124
+ scale seamlessly with Vertex AI Agent Engine.
125
+
126
+
127
+ ## 🚀 Installation
128
+
129
+ You can install the ADK using `pip`:
130
+
131
+ ```bash
132
+ pip install google-adk
133
+ ```
134
+
135
+ ## 📚 Documentation
136
+
137
+ Explore the full documentation for detailed guides on building, evaluating, and
138
+ deploying agents:
139
+
140
+ * **[Documentation](https://google.github.io/adk-docs)**
141
+
142
+ ## 🏁 Feature Highlight
143
+
144
+ ### Define a single agent:
145
+
146
+ ```python
147
+ from google.adk.agents import Agent
148
+ from google.adk.tools import google_search
149
+
150
+ root_agent = Agent(
151
+ name="search_assistant",
152
+ model="gemini-2.0-flash", # Or your preferred Gemini model
153
+ instruction="You are a helpful assistant. Answer user questions using Google Search when needed.",
154
+ description="An assistant that can search the web.",
155
+ tools=[google_search]
156
+ )
157
+ ```
158
+
159
+ ### Define a multi-agent system:
160
+
161
+ Define a multi-agent system with coordinator agent, greeter agent, and task execution agent. Then ADK engine and the model will guide the agents works together to accomplish the task.
162
+
163
+ ```python
164
+ from google.adk.agents import LlmAgent, BaseAgent
165
+
166
+ # Define individual agents
167
+ greeter = LlmAgent(name="greeter", model="gemini-2.0-flash", ...)
168
+ task_executor = LlmAgent(name="task_executor", model="gemini-2.0-flash", ...)
169
+
170
+ # Create parent agent and assign children via sub_agents
171
+ coordinator = LlmAgent(
172
+ name="Coordinator",
173
+ model="gemini-2.0-flash",
174
+ description="I coordinate greetings and tasks.",
175
+ sub_agents=[ # Assign sub_agents here
176
+ greeter,
177
+ task_executor
178
+ ]
179
+ )
180
+ ```
181
+
182
+ ### Development UI
183
+
184
+ A built-in development UI to help you test, evaluate, debug, and showcase your agent(s).
185
+
186
+ <img src="https://raw.githubusercontent.com/google/adk-python/main/assets/adk-web-dev-ui-function-call.png"/>
187
+
188
+ ### Evaluate Agents
189
+
190
+ ```bash
191
+ adk eval \
192
+ samples_for_testing/hello_world \
193
+ samples_for_testing/hello_world/hello_world_eval_set_001.evalset.json
194
+ ```
195
+
196
+
197
+ ## 🤝 Contributing
198
+
199
+ We welcome contributions from the community! Whether it's bug reports, feature requests, documentation improvements, or code contributions, please see our [**Contributing Guidelines**](./CONTRIBUTING.md) to get started.
200
+
201
+ ## 📄 License
202
+
203
+ This project is licensed under the Apache 2.0 License - see the [LICENSE](LICENSE) file for details.
204
+
205
+ ## Preview
206
+
207
+ This feature is subject to the "Pre-GA Offerings Terms" in the General Service Terms section of the [Service Specific Terms](https://cloud.google.com/terms/service-terms#1). Pre-GA features are available "as is" and might have limited support. For more information, see the [launch stage descriptions](https://cloud.google.com/products?hl=en#product-launch-stages).
208
+
209
+ ---
210
+
211
+ *Happy Agent Building!*
212
+
@@ -0,0 +1,130 @@
1
+ # Agent Development Kit (ADK)
2
+
3
+ [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)
4
+ [![Python Unit Tests](https://github.com/google/adk-python/actions/workflows/python-unit-tests.yml/badge.svg)](https://github.com/google/adk-python/actions/workflows/python-unit-tests.yml)
5
+ [![r/agentdevelopmentkit](https://img.shields.io/badge/Reddit-r%2Fagentdevelopmentkit-FF4500?style=flat&logo=reddit&logoColor=white)](https://www.reddit.com/r/agentdevelopmentkit/)
6
+
7
+ <html>
8
+ <h2 align="center">
9
+ <img src="https://raw.githubusercontent.com/google/adk-python/main/assets/agent-development-kit.png" width="256"/>
10
+ </h2>
11
+ <h3 align="center">
12
+ An open-source, code-first Python toolkit for building, evaluating, and deploying sophisticated AI agents with flexibility and control.
13
+ </h3>
14
+ <h3 align="center">
15
+ Important Links:
16
+ <a href="https://google.github.io/adk-docs/">Docs</a> &
17
+ <a href="https://github.com/google/adk-samples">Samples</a>.
18
+ </h3>
19
+ </html>
20
+
21
+ Agent Development Kit (ADK) is designed for developers seeking fine-grained
22
+ control and flexibility when building advanced AI agents that are tightly
23
+ integrated with services in Google Cloud. It allows you to define agent
24
+ behavior, orchestration, and tool use directly in code, enabling robust
25
+ debugging, versioning, and deployment anywhere – from your laptop to the cloud.
26
+
27
+
28
+ ---
29
+
30
+ ## ✨ Key Features
31
+
32
+ - **Rich Tool Ecosystem**: Utilize pre-built tools, custom functions,
33
+ OpenAPI specs, or integrate existing tools to give agents diverse
34
+ capabilities, all for tight integration with the Google ecosystem.
35
+
36
+ - **Code-First Development**: Define agent logic, tools, and orchestration
37
+ directly in Python for ultimate flexibility, testability, and versioning.
38
+
39
+ - **Modular Multi-Agent Systems**: Design scalable applications by composing
40
+ multiple specialized agents into flexible hierarchies.
41
+
42
+ - **Deploy Anywhere**: Easily containerize and deploy agents on Cloud Run or
43
+ scale seamlessly with Vertex AI Agent Engine.
44
+
45
+
46
+ ## 🚀 Installation
47
+
48
+ You can install the ADK using `pip`:
49
+
50
+ ```bash
51
+ pip install google-adk
52
+ ```
53
+
54
+ ## 📚 Documentation
55
+
56
+ Explore the full documentation for detailed guides on building, evaluating, and
57
+ deploying agents:
58
+
59
+ * **[Documentation](https://google.github.io/adk-docs)**
60
+
61
+ ## 🏁 Feature Highlight
62
+
63
+ ### Define a single agent:
64
+
65
+ ```python
66
+ from google.adk.agents import Agent
67
+ from google.adk.tools import google_search
68
+
69
+ root_agent = Agent(
70
+ name="search_assistant",
71
+ model="gemini-2.0-flash", # Or your preferred Gemini model
72
+ instruction="You are a helpful assistant. Answer user questions using Google Search when needed.",
73
+ description="An assistant that can search the web.",
74
+ tools=[google_search]
75
+ )
76
+ ```
77
+
78
+ ### Define a multi-agent system:
79
+
80
+ Define a multi-agent system with coordinator agent, greeter agent, and task execution agent. Then ADK engine and the model will guide the agents works together to accomplish the task.
81
+
82
+ ```python
83
+ from google.adk.agents import LlmAgent, BaseAgent
84
+
85
+ # Define individual agents
86
+ greeter = LlmAgent(name="greeter", model="gemini-2.0-flash", ...)
87
+ task_executor = LlmAgent(name="task_executor", model="gemini-2.0-flash", ...)
88
+
89
+ # Create parent agent and assign children via sub_agents
90
+ coordinator = LlmAgent(
91
+ name="Coordinator",
92
+ model="gemini-2.0-flash",
93
+ description="I coordinate greetings and tasks.",
94
+ sub_agents=[ # Assign sub_agents here
95
+ greeter,
96
+ task_executor
97
+ ]
98
+ )
99
+ ```
100
+
101
+ ### Development UI
102
+
103
+ A built-in development UI to help you test, evaluate, debug, and showcase your agent(s).
104
+
105
+ <img src="https://raw.githubusercontent.com/google/adk-python/main/assets/adk-web-dev-ui-function-call.png"/>
106
+
107
+ ### Evaluate Agents
108
+
109
+ ```bash
110
+ adk eval \
111
+ samples_for_testing/hello_world \
112
+ samples_for_testing/hello_world/hello_world_eval_set_001.evalset.json
113
+ ```
114
+
115
+
116
+ ## 🤝 Contributing
117
+
118
+ We welcome contributions from the community! Whether it's bug reports, feature requests, documentation improvements, or code contributions, please see our [**Contributing Guidelines**](./CONTRIBUTING.md) to get started.
119
+
120
+ ## 📄 License
121
+
122
+ This project is licensed under the Apache 2.0 License - see the [LICENSE](LICENSE) file for details.
123
+
124
+ ## Preview
125
+
126
+ This feature is subject to the "Pre-GA Offerings Terms" in the General Service Terms section of the [Service Specific Terms](https://cloud.google.com/terms/service-terms#1). Pre-GA features are available "as is" and might have limited support. For more information, see the [launch stage descriptions](https://cloud.google.com/products?hl=en#product-launch-stages).
127
+
128
+ ---
129
+
130
+ *Happy Agent Building!*
@@ -79,7 +79,11 @@ eval = [
79
79
 
80
80
  test = [
81
81
  # go/keep-sorted start
82
+ "anthropic>=0.43.0", # For anthropic model tests
82
83
  "langchain-community>=0.3.17",
84
+ "langgraph>=0.2.60", # For LangGraphAgent
85
+ "litellm>=1.63.11", # For LiteLLM tests
86
+ "llama-index-readers-file>=0.4.0", # for retrieval tests
83
87
  "pytest-asyncio>=0.25.0",
84
88
  "pytest-mock>=3.14.0",
85
89
  "pytest-xdist>=3.6.1",
@@ -120,7 +120,7 @@ class BaseAgent(BaseModel):
120
120
  self,
121
121
  parent_context: InvocationContext,
122
122
  ) -> AsyncGenerator[Event, None]:
123
- """Entry method to run an agent via text-based conversaction.
123
+ """Entry method to run an agent via text-based conversation.
124
124
 
125
125
  Args:
126
126
  parent_context: InvocationContext, the invocation context of the parent
@@ -152,7 +152,7 @@ class BaseAgent(BaseModel):
152
152
  self,
153
153
  parent_context: InvocationContext,
154
154
  ) -> AsyncGenerator[Event, None]:
155
- """Entry method to run an agent via video/audio-based conversaction.
155
+ """Entry method to run an agent via video/audio-based conversation.
156
156
 
157
157
  Args:
158
158
  parent_context: InvocationContext, the invocation context of the parent
@@ -171,7 +171,7 @@ class BaseAgent(BaseModel):
171
171
  async def _run_async_impl(
172
172
  self, ctx: InvocationContext
173
173
  ) -> AsyncGenerator[Event, None]:
174
- """Core logic to run this agent via text-based conversaction.
174
+ """Core logic to run this agent via text-based conversation.
175
175
 
176
176
  Args:
177
177
  ctx: InvocationContext, the invocation context for this agent.
@@ -187,7 +187,7 @@ class BaseAgent(BaseModel):
187
187
  async def _run_live_impl(
188
188
  self, ctx: InvocationContext
189
189
  ) -> AsyncGenerator[Event, None]:
190
- """Core logic to run this agent via video/audio-based conversaction.
190
+ """Core logic to run this agent via video/audio-based conversation.
191
191
 
192
192
  Args:
193
193
  ctx: InvocationContext, the invocation context for this agent.
@@ -124,7 +124,7 @@ class InvocationContext(BaseModel):
124
124
  agent_2, and agent_2 is the parent of agent_3.
125
125
 
126
126
  Branch is used when multiple sub-agents shouldn't see their peer agents'
127
- conversaction history.
127
+ conversation history.
128
128
  """
129
129
  agent: BaseAgent
130
130
  """The current agent of this invocation context. Readonly."""
@@ -32,7 +32,7 @@ class RemoteAgent(BaseAgent):
32
32
  sub_agents: list[BaseAgent] = Field(
33
33
  default_factory=list, init=False, frozen=True
34
34
  )
35
- """Sub-agent is dsiabled in RemoteAgent."""
35
+ """Sub-agent is disabled in RemoteAgent."""
36
36
 
37
37
  @override
38
38
  async def _run_async_impl(
@@ -42,7 +42,7 @@ class RunConfig(BaseModel):
42
42
  """Speech configuration for the live agent."""
43
43
 
44
44
  response_modalities: Optional[list[str]] = None
45
- """The output modalities. If not set, its default to AUDIO."""
45
+ """The output modalities. If not set, it's default to AUDIO."""
46
46
 
47
47
  save_input_blobs_as_artifacts: bool = False
48
48
  """Whether or not to save the input blobs as artifacts."""
@@ -76,7 +76,7 @@ class _AuthLlmRequestProcessor(BaseLlmRequestProcessor):
76
76
 
77
77
  for i in range(len(events) - 2, -1, -1):
78
78
  event = events[i]
79
- # looking for the system long running reqeust euc function call
79
+ # looking for the system long running request euc function call
80
80
  function_calls = event.get_function_calls()
81
81
  if not function_calls:
82
82
  continue
@@ -92,7 +92,7 @@ class _AuthLlmRequestProcessor(BaseLlmRequestProcessor):
92
92
  if not tools_to_resume:
93
93
  continue
94
94
 
95
- # found the the system long running reqeust euc function call
95
+ # found the the system long running request euc function call
96
96
  # looking for original function call that requests euc
97
97
  for j in range(i - 1, -1, -1):
98
98
  event = events[j]
@@ -19,7 +19,7 @@ from .auth_schemes import AuthScheme
19
19
 
20
20
 
21
21
  class AuthConfig(BaseModel):
22
- """The auth config sent by tool asking client to collect auth credentails and
22
+ """The auth config sent by tool asking client to collect auth credentials and
23
23
 
24
24
  adk and client will help to fill in the response
25
25
  """
@@ -25,9 +25,9 @@
25
25
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
26
26
  <style>@font-face{font-family:'Open Sans';font-style:italic;font-weight:300 800;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v40/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6F15M.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300 800;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v40/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6F15M.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300 800;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v40/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6F15M.woff2) format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300 800;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v40/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6F15M.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300 800;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v40/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06F15M.woff2) format('woff2');unicode-range:U+0307-0308, U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F;}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300 800;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v40/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWxU6F15M.woff2) format('woff2');unicode-range:U+0302-0303, U+0305, U+0307-0308, U+0310, U+0312, U+0315, U+031A, U+0326-0327, U+032C, U+032F-0330, U+0332-0333, U+0338, U+033A, U+0346, U+034D, U+0391-03A1, U+03A3-03A9, U+03B1-03C9, U+03D1, U+03D5-03D6, U+03F0-03F1, U+03F4-03F5, U+2016-2017, U+2034-2038, U+203C, U+2040, U+2043, U+2047, U+2050, U+2057, U+205F, U+2070-2071, U+2074-208E, U+2090-209C, U+20D0-20DC, U+20E1, U+20E5-20EF, U+2100-2112, U+2114-2115, U+2117-2121, U+2123-214F, U+2190, U+2192, U+2194-21AE, U+21B0-21E5, U+21F1-21F2, U+21F4-2211, U+2213-2214, U+2216-22FF, U+2308-230B, U+2310, U+2319, U+231C-2321, U+2336-237A, U+237C, U+2395, U+239B-23B7, U+23D0, U+23DC-23E1, U+2474-2475, U+25AF, U+25B3, U+25B7, U+25BD, U+25C1, U+25CA, U+25CC, U+25FB, U+266D-266F, U+27C0-27FF, U+2900-2AFF, U+2B0E-2B11, U+2B30-2B4C, U+2BFE, U+3030, U+FF5B, U+FF5D, U+1D400-1D7FF, U+1EE00-1EEFF;}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300 800;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v40/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqW106F15M.woff2) format('woff2');unicode-range:U+0001-000C, U+000E-001F, U+007F-009F, U+20DD-20E0, U+20E2-20E4, U+2150-218F, U+2190, U+2192, U+2194-2199, U+21AF, U+21E6-21F0, U+21F3, U+2218-2219, U+2299, U+22C4-22C6, U+2300-243F, U+2440-244A, U+2460-24FF, U+25A0-27BF, U+2800-28FF, U+2921-2922, U+2981, U+29BF, U+29EB, U+2B00-2BFF, U+4DC0-4DFF, U+FFF9-FFFB, U+10140-1018E, U+10190-1019C, U+101A0, U+101D0-101FD, U+102E0-102FB, U+10E60-10E7E, U+1D2C0-1D2D3, U+1D2E0-1D37F, U+1F000-1F0FF, U+1F100-1F1AD, U+1F1E6-1F1FF, U+1F30D-1F30F, U+1F315, U+1F31C, U+1F31E, U+1F320-1F32C, U+1F336, U+1F378, U+1F37D, U+1F382, U+1F393-1F39F, U+1F3A7-1F3A8, U+1F3AC-1F3AF, U+1F3C2, U+1F3C4-1F3C6, U+1F3CA-1F3CE, U+1F3D4-1F3E0, U+1F3ED, U+1F3F1-1F3F3, U+1F3F5-1F3F7, U+1F408, U+1F415, U+1F41F, U+1F426, U+1F43F, U+1F441-1F442, U+1F444, U+1F446-1F449, U+1F44C-1F44E, U+1F453, U+1F46A, U+1F47D, U+1F4A3, U+1F4B0, U+1F4B3, U+1F4B9, U+1F4BB, U+1F4BF, U+1F4C8-1F4CB, U+1F4D6, U+1F4DA, U+1F4DF, U+1F4E3-1F4E6, U+1F4EA-1F4ED, U+1F4F7, U+1F4F9-1F4FB, U+1F4FD-1F4FE, U+1F503, U+1F507-1F50B, U+1F50D, U+1F512-1F513, U+1F53E-1F54A, U+1F54F-1F5FA, U+1F610, U+1F650-1F67F, U+1F687, U+1F68D, U+1F691, U+1F694, U+1F698, U+1F6AD, U+1F6B2, U+1F6B9-1F6BA, U+1F6BC, U+1F6C6-1F6CF, U+1F6D3-1F6D7, U+1F6E0-1F6EA, U+1F6F0-1F6F3, U+1F6F7-1F6FC, U+1F700-1F7FF, U+1F800-1F80B, U+1F810-1F847, U+1F850-1F859, U+1F860-1F887, U+1F890-1F8AD, U+1F8B0-1F8BB, U+1F8C0-1F8C1, U+1F900-1F90B, U+1F93B, U+1F946, U+1F984, U+1F996, U+1F9E9, U+1FA00-1FA6F, U+1FA70-1FA7C, U+1FA80-1FA89, U+1FA8F-1FAC6, U+1FACE-1FADC, U+1FADF-1FAE9, U+1FAF0-1FAF8, U+1FB00-1FBFF;}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300 800;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v40/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6F15M.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300 800;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v40/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06F15M.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300 800;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v40/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6F.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300 800;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v40/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu1aB.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300 800;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v40/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu1aB.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300 800;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v40/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu1aB.woff2) format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300 800;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v40/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu1aB.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300 800;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v40/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu1aB.woff2) format('woff2');unicode-range:U+0307-0308, U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F;}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300 800;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v40/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTVOmu1aB.woff2) format('woff2');unicode-range:U+0302-0303, U+0305, U+0307-0308, U+0310, U+0312, U+0315, U+031A, U+0326-0327, U+032C, U+032F-0330, U+0332-0333, U+0338, U+033A, U+0346, U+034D, U+0391-03A1, U+03A3-03A9, U+03B1-03C9, U+03D1, U+03D5-03D6, U+03F0-03F1, U+03F4-03F5, U+2016-2017, U+2034-2038, U+203C, U+2040, U+2043, U+2047, U+2050, U+2057, U+205F, U+2070-2071, U+2074-208E, U+2090-209C, U+20D0-20DC, U+20E1, U+20E5-20EF, U+2100-2112, U+2114-2115, U+2117-2121, U+2123-214F, U+2190, U+2192, U+2194-21AE, U+21B0-21E5, U+21F1-21F2, U+21F4-2211, U+2213-2214, U+2216-22FF, U+2308-230B, U+2310, U+2319, U+231C-2321, U+2336-237A, U+237C, U+2395, U+239B-23B7, U+23D0, U+23DC-23E1, U+2474-2475, U+25AF, U+25B3, U+25B7, U+25BD, U+25C1, U+25CA, U+25CC, U+25FB, U+266D-266F, U+27C0-27FF, U+2900-2AFF, U+2B0E-2B11, U+2B30-2B4C, U+2BFE, U+3030, U+FF5B, U+FF5D, U+1D400-1D7FF, U+1EE00-1EEFF;}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300 800;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v40/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTUGmu1aB.woff2) format('woff2');unicode-range:U+0001-000C, U+000E-001F, U+007F-009F, U+20DD-20E0, U+20E2-20E4, U+2150-218F, U+2190, U+2192, U+2194-2199, U+21AF, U+21E6-21F0, U+21F3, U+2218-2219, U+2299, U+22C4-22C6, U+2300-243F, U+2440-244A, U+2460-24FF, U+25A0-27BF, U+2800-28FF, U+2921-2922, U+2981, U+29BF, U+29EB, U+2B00-2BFF, U+4DC0-4DFF, U+FFF9-FFFB, U+10140-1018E, U+10190-1019C, U+101A0, U+101D0-101FD, U+102E0-102FB, U+10E60-10E7E, U+1D2C0-1D2D3, U+1D2E0-1D37F, U+1F000-1F0FF, U+1F100-1F1AD, U+1F1E6-1F1FF, U+1F30D-1F30F, U+1F315, U+1F31C, U+1F31E, U+1F320-1F32C, U+1F336, U+1F378, U+1F37D, U+1F382, U+1F393-1F39F, U+1F3A7-1F3A8, U+1F3AC-1F3AF, U+1F3C2, U+1F3C4-1F3C6, U+1F3CA-1F3CE, U+1F3D4-1F3E0, U+1F3ED, U+1F3F1-1F3F3, U+1F3F5-1F3F7, U+1F408, U+1F415, U+1F41F, U+1F426, U+1F43F, U+1F441-1F442, U+1F444, U+1F446-1F449, U+1F44C-1F44E, U+1F453, U+1F46A, U+1F47D, U+1F4A3, U+1F4B0, U+1F4B3, U+1F4B9, U+1F4BB, U+1F4BF, U+1F4C8-1F4CB, U+1F4D6, U+1F4DA, U+1F4DF, U+1F4E3-1F4E6, U+1F4EA-1F4ED, U+1F4F7, U+1F4F9-1F4FB, U+1F4FD-1F4FE, U+1F503, U+1F507-1F50B, U+1F50D, U+1F512-1F513, U+1F53E-1F54A, U+1F54F-1F5FA, U+1F610, U+1F650-1F67F, U+1F687, U+1F68D, U+1F691, U+1F694, U+1F698, U+1F6AD, U+1F6B2, U+1F6B9-1F6BA, U+1F6BC, U+1F6C6-1F6CF, U+1F6D3-1F6D7, U+1F6E0-1F6EA, U+1F6F0-1F6F3, U+1F6F7-1F6FC, U+1F700-1F7FF, U+1F800-1F80B, U+1F810-1F847, U+1F850-1F859, U+1F860-1F887, U+1F890-1F8AD, U+1F8B0-1F8BB, U+1F8C0-1F8C1, U+1F900-1F90B, U+1F93B, U+1F946, U+1F984, U+1F996, U+1F9E9, U+1FA00-1FA6F, U+1FA70-1FA7C, U+1FA80-1FA89, U+1FA8F-1FAC6, U+1FACE-1FADC, U+1FADF-1FAE9, U+1FAF0-1FAF8, U+1FB00-1FBFF;}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300 800;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v40/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu1aB.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300 800;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v40/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu1aB.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300 800;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/opensans/v40/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-muw.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}</style>
27
27
  <style>@font-face{font-family:'Material Icons';font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialicons/v143/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2) format('woff2');}.material-icons{font-family:'Material Icons';font-weight:normal;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:'liga';-webkit-font-smoothing:antialiased;}</style>
28
- <style>@font-face{font-family:'Material Symbols Outlined';font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v232/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOej.woff2) format('woff2');}.material-symbols-outlined{font-family:'Material Symbols Outlined';font-weight:normal;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:'liga';-webkit-font-smoothing:antialiased;}</style>
28
+ <style>@font-face{font-family:'Material Symbols Outlined';font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v241/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOej.woff2) format('woff2');}.material-symbols-outlined{font-family:'Material Symbols Outlined';font-weight:normal;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:'liga';-webkit-font-smoothing:antialiased;}</style>
29
29
  <style>html{color-scheme:dark}html{--mat-sys-background:light-dark(#fcf9f8, #131314);--mat-sys-error:light-dark(#ba1a1a, #ffb4ab);--mat-sys-error-container:light-dark(#ffdad6, #93000a);--mat-sys-inverse-on-surface:light-dark(#f3f0f0, #313030);--mat-sys-inverse-primary:light-dark(#c1c7cd, #595f65);--mat-sys-inverse-surface:light-dark(#313030, #e5e2e2);--mat-sys-on-background:light-dark(#1c1b1c, #e5e2e2);--mat-sys-on-error:light-dark(#ffffff, #690005);--mat-sys-on-error-container:light-dark(#410002, #ffdad6);--mat-sys-on-primary:light-dark(#ffffff, #2b3136);--mat-sys-on-primary-container:light-dark(#161c21, #dde3e9);--mat-sys-on-primary-fixed:light-dark(#161c21, #161c21);--mat-sys-on-primary-fixed-variant:light-dark(#41474d, #41474d);--mat-sys-on-secondary:light-dark(#ffffff, #003061);--mat-sys-on-secondary-container:light-dark(#001b3c, #d5e3ff);--mat-sys-on-secondary-fixed:light-dark(#001b3c, #001b3c);--mat-sys-on-secondary-fixed-variant:light-dark(#0f4784, #0f4784);--mat-sys-on-surface:light-dark(#1c1b1c, #e5e2e2);--mat-sys-on-surface-variant:light-dark(#44474a, #e1e2e6);--mat-sys-on-tertiary:light-dark(#ffffff, #2b3136);--mat-sys-on-tertiary-container:light-dark(#161c21, #dde3e9);--mat-sys-on-tertiary-fixed:light-dark(#161c21, #161c21);--mat-sys-on-tertiary-fixed-variant:light-dark(#41474d, #41474d);--mat-sys-outline:light-dark(#74777b, #8e9194);--mat-sys-outline-variant:light-dark(#c4c7ca, #44474a);--mat-sys-primary:light-dark(#595f65, #c1c7cd);--mat-sys-primary-container:light-dark(#dde3e9, #41474d);--mat-sys-primary-fixed:light-dark(#dde3e9, #dde3e9);--mat-sys-primary-fixed-dim:light-dark(#c1c7cd, #c1c7cd);--mat-sys-scrim:light-dark(#000000, #000000);--mat-sys-secondary:light-dark(#305f9d, #a7c8ff);--mat-sys-secondary-container:light-dark(#d5e3ff, #0f4784);--mat-sys-secondary-fixed:light-dark(#d5e3ff, #d5e3ff);--mat-sys-secondary-fixed-dim:light-dark(#a7c8ff, #a7c8ff);--mat-sys-shadow:light-dark(#000000, #000000);--mat-sys-surface:light-dark(#fcf9f8, #131314);--mat-sys-surface-bright:light-dark(#fcf9f8, #393939);--mat-sys-surface-container:light-dark(#f0eded, #201f20);--mat-sys-surface-container-high:light-dark(#eae7e7, #2a2a2a);--mat-sys-surface-container-highest:light-dark(#e5e2e2, #393939);--mat-sys-surface-container-low:light-dark(#f6f3f3, #1c1b1c);--mat-sys-surface-container-lowest:light-dark(#ffffff, #0e0e0e);--mat-sys-surface-dim:light-dark(#dcd9d9, #131314);--mat-sys-surface-tint:light-dark(#595f65, #c1c7cd);--mat-sys-surface-variant:light-dark(#e1e2e6, #44474a);--mat-sys-tertiary:light-dark(#595f65, #c1c7cd);--mat-sys-tertiary-container:light-dark(#dde3e9, #41474d);--mat-sys-tertiary-fixed:light-dark(#dde3e9, #dde3e9);--mat-sys-tertiary-fixed-dim:light-dark(#c1c7cd, #c1c7cd);--mat-sys-neutral-variant20:#2d3134;--mat-sys-neutral10:#1c1b1c}html{--mat-sys-level0:0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12)}html{--mat-sys-level1:0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12)}html{--mat-sys-level2:0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12)}html{--mat-sys-level3:0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12)}html{--mat-sys-level4:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html{--mat-sys-level5:0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12)}html{--mat-sys-corner-extra-large:28px;--mat-sys-corner-extra-large-top:28px 28px 0 0;--mat-sys-corner-extra-small:4px;--mat-sys-corner-extra-small-top:4px 4px 0 0;--mat-sys-corner-full:9999px;--mat-sys-corner-large:16px;--mat-sys-corner-large-end:0 16px 16px 0;--mat-sys-corner-large-start:16px 0 0 16px;--mat-sys-corner-large-top:16px 16px 0 0;--mat-sys-corner-medium:12px;--mat-sys-corner-none:0;--mat-sys-corner-small:8px}html{--mat-sys-dragged-state-layer-opacity:.16;--mat-sys-focus-state-layer-opacity:.12;--mat-sys-hover-state-layer-opacity:.08;--mat-sys-pressed-state-layer-opacity:.12}html{font-family:Google Sans,Helvetica Neue,sans-serif!important}body{height:100vh;margin:0}:root{--mat-sys-primary:black;--mdc-checkbox-selected-icon-color:white;--mat-sys-background:#131314;--mat-tab-header-active-label-text-color:#8AB4F8;--mat-tab-header-active-hover-label-text-color:#8AB4F8;--mat-tab-header-active-focus-label-text-color:#8AB4F8;--mat-tab-header-label-text-weight:500;--mdc-text-button-label-text-color:#89b4f8}:root{--mdc-dialog-container-color:#2b2b2f}:root{--mdc-dialog-subhead-color:white}:root{--mdc-circular-progress-active-indicator-color:#a8c7fa}:root{--mdc-circular-progress-size:80}</style><link rel="stylesheet" href="styles-4VDSPQ37.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-4VDSPQ37.css"></noscript></head>
30
30
  <body>
31
31
  <app-root></app-root>
32
- <script src="polyfills-FFHMD2TL.js" type="module"></script><script src="main-SLIAU2JL.js" type="module"></script></body>
32
+ <script src="polyfills-FFHMD2TL.js" type="module"></script><script src="main-ZBO76GRM.js" type="module"></script></body>
33
33
  </html>