google-adk 0.4.0__tar.gz → 1.0.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 (204) hide show
  1. {google_adk-0.4.0 → google_adk-1.0.0}/PKG-INFO +7 -5
  2. {google_adk-0.4.0 → google_adk-1.0.0}/pyproject.toml +18 -7
  3. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/agents/active_streaming_tool.py +1 -0
  4. google_adk-1.0.0/src/google/adk/agents/base_agent.py +389 -0
  5. google_adk-0.4.0/src/google/adk/agents/base_agent.py → google_adk-1.0.0/src/google/adk/agents/base_agent.py.orig +6 -21
  6. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/agents/callback_context.py +4 -9
  7. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/agents/invocation_context.py +1 -0
  8. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/agents/langgraph_agent.py +1 -0
  9. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/agents/live_request_queue.py +1 -0
  10. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/agents/llm_agent.py +172 -35
  11. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/agents/loop_agent.py +1 -1
  12. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/agents/parallel_agent.py +7 -0
  13. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/agents/readonly_context.py +7 -1
  14. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/agents/run_config.py +5 -1
  15. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/agents/sequential_agent.py +31 -0
  16. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/agents/transcription_entry.py +5 -2
  17. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/artifacts/base_artifact_service.py +5 -10
  18. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/artifacts/gcs_artifact_service.py +9 -9
  19. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/artifacts/in_memory_artifact_service.py +6 -6
  20. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/auth/auth_credential.py +9 -5
  21. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/auth/auth_preprocessor.py +7 -1
  22. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/auth/auth_tool.py +3 -4
  23. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/cli/agent_graph.py +5 -5
  24. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/cli/browser/index.html +2 -2
  25. google_adk-0.4.0/src/google/adk/cli/browser/main-HWIBUY2R.js → google_adk-1.0.0/src/google/adk/cli/browser/main-QOEMUXM4.js +58 -58
  26. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/cli/cli.py +7 -7
  27. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/cli/cli_deploy.py +7 -2
  28. google_adk-1.0.0/src/google/adk/cli/cli_eval.py +357 -0
  29. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/cli/cli_tools_click.py +147 -62
  30. google_adk-1.0.0/src/google/adk/cli/fast_api.py +1004 -0
  31. google_adk-1.0.0/src/google/adk/cli/utils/common.py +23 -0
  32. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/cli/utils/evals.py +83 -1
  33. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/cli/utils/logs.py +13 -5
  34. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/code_executors/__init__.py +3 -1
  35. google_adk-1.0.0/src/google/adk/code_executors/built_in_code_executor.py +52 -0
  36. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/evaluation/__init__.py +1 -1
  37. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/evaluation/agent_evaluator.py +168 -128
  38. google_adk-1.0.0/src/google/adk/evaluation/eval_case.py +102 -0
  39. google_adk-1.0.0/src/google/adk/evaluation/eval_set.py +37 -0
  40. google_adk-1.0.0/src/google/adk/evaluation/eval_sets_manager.py +42 -0
  41. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/evaluation/evaluation_constants.py +1 -0
  42. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/evaluation/evaluation_generator.py +89 -114
  43. google_adk-1.0.0/src/google/adk/evaluation/evaluator.py +56 -0
  44. google_adk-1.0.0/src/google/adk/evaluation/local_eval_sets_manager.py +264 -0
  45. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/evaluation/response_evaluator.py +107 -3
  46. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/evaluation/trajectory_evaluator.py +83 -2
  47. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/events/event.py +7 -1
  48. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/events/event_actions.py +7 -1
  49. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/examples/example.py +1 -0
  50. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/examples/example_util.py +3 -2
  51. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/flows/llm_flows/_code_execution.py +19 -11
  52. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/flows/llm_flows/audio_transcriber.py +4 -3
  53. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/flows/llm_flows/base_llm_flow.py +86 -22
  54. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/flows/llm_flows/basic.py +3 -0
  55. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/flows/llm_flows/functions.py +10 -9
  56. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/flows/llm_flows/instructions.py +28 -9
  57. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/flows/llm_flows/single_flow.py +1 -1
  58. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/memory/__init__.py +1 -1
  59. google_adk-1.0.0/src/google/adk/memory/_utils.py +23 -0
  60. google_adk-1.0.0/src/google/adk/memory/base_memory_service.py +78 -0
  61. google_adk-0.4.0/src/google/adk/memory/base_memory_service.py → google_adk-1.0.0/src/google/adk/memory/base_memory_service.py.orig +4 -2
  62. google_adk-1.0.0/src/google/adk/memory/in_memory_memory_service.py +94 -0
  63. google_adk-1.0.0/src/google/adk/memory/memory_entry.py +37 -0
  64. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/memory/vertex_ai_rag_memory_service.py +40 -17
  65. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/models/anthropic_llm.py +36 -11
  66. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/models/base_llm.py +45 -4
  67. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/models/gemini_llm_connection.py +15 -2
  68. google_adk-1.0.0/src/google/adk/models/google_llm.py +295 -0
  69. google_adk-0.4.0/src/google/adk/models/google_llm.py → google_adk-1.0.0/src/google/adk/models/google_llm.py.orig +19 -44
  70. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/models/lite_llm.py +94 -38
  71. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/models/llm_request.py +1 -1
  72. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/models/llm_response.py +15 -3
  73. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/models/registry.py +1 -1
  74. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/runners.py +68 -44
  75. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/sessions/__init__.py +1 -1
  76. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/sessions/_session_util.py +14 -0
  77. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/sessions/base_session_service.py +8 -32
  78. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/sessions/database_session_service.py +58 -61
  79. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/sessions/in_memory_session_service.py +108 -26
  80. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/sessions/session.py +4 -0
  81. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/sessions/vertex_ai_session_service.py +23 -45
  82. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/telemetry.py +3 -0
  83. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/__init__.py +4 -7
  84. google_adk-0.4.0/src/google/adk/tools/built_in_code_execution_tool.py → google_adk-1.0.0/src/google/adk/tools/_built_in_code_execution_tool.py +11 -0
  85. google_adk-1.0.0/src/google/adk/tools/_memory_entry_utils.py +30 -0
  86. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/agent_tool.py +16 -13
  87. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/apihub_tool/apihub_toolset.py +55 -74
  88. {google_adk-0.4.0/src/google/adk/flows → google_adk-1.0.0/src/google/adk/tools/apihub_tool/clients}/__init__.py +0 -1
  89. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/application_integration_tool/application_integration_toolset.py +107 -85
  90. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/application_integration_tool/clients/connections_client.py +29 -25
  91. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/application_integration_tool/clients/integration_client.py +6 -6
  92. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/application_integration_tool/integration_connector_tool.py +69 -26
  93. google_adk-1.0.0/src/google/adk/tools/base_toolset.py +58 -0
  94. google_adk-1.0.0/src/google/adk/tools/enterprise_search_tool.py +65 -0
  95. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/function_parameter_parse_util.py +2 -2
  96. google_adk-1.0.0/src/google/adk/tools/google_api_tool/__init__.py +35 -0
  97. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/google_api_tool/google_api_tool.py +11 -5
  98. google_adk-1.0.0/src/google/adk/tools/google_api_tool/google_api_toolset.py +126 -0
  99. google_adk-1.0.0/src/google/adk/tools/google_api_tool/google_api_toolsets.py +102 -0
  100. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/google_api_tool/googleapi_to_openapi_converter.py +40 -42
  101. google_adk-1.0.0/src/google/adk/tools/langchain_tool.py +133 -0
  102. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/load_artifacts_tool.py +4 -4
  103. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/load_memory_tool.py +16 -5
  104. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/mcp_tool/__init__.py +3 -2
  105. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/mcp_tool/conversion_utils.py +1 -1
  106. google_adk-1.0.0/src/google/adk/tools/mcp_tool/mcp_session_manager.py +327 -0
  107. google_adk-1.0.0/src/google/adk/tools/mcp_tool/mcp_session_manager.py.orig +322 -0
  108. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/mcp_tool/mcp_tool.py +12 -12
  109. google_adk-1.0.0/src/google/adk/tools/mcp_tool/mcp_toolset.py +226 -0
  110. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/openapi_tool/common/common.py +2 -5
  111. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/openapi_tool/openapi_spec_parser/openapi_toolset.py +32 -7
  112. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/openapi_tool/openapi_spec_parser/operation_parser.py +43 -33
  113. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.py +1 -1
  114. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/preload_memory_tool.py +27 -18
  115. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/retrieval/__init__.py +1 -1
  116. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/retrieval/vertex_ai_rag_retrieval.py +1 -1
  117. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/tool_context.py +4 -4
  118. google_adk-1.0.0/src/google/adk/tools/toolbox_toolset.py +79 -0
  119. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/transfer_to_agent_tool.py +0 -1
  120. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/version.py +1 -1
  121. google_adk-0.4.0/src/google/adk/agents/remote_agent.py +0 -50
  122. google_adk-0.4.0/src/google/adk/cli/cli_eval.py +0 -282
  123. google_adk-0.4.0/src/google/adk/memory/in_memory_memory_service.py +0 -62
  124. google_adk-0.4.0/src/google/adk/tools/google_api_tool/__init__.py +0 -87
  125. google_adk-0.4.0/src/google/adk/tools/google_api_tool/google_api_tool_set.py +0 -110
  126. google_adk-0.4.0/src/google/adk/tools/google_api_tool/google_api_tool_sets.py +0 -112
  127. google_adk-0.4.0/src/google/adk/tools/langchain_tool.py +0 -86
  128. google_adk-0.4.0/src/google/adk/tools/mcp_tool/mcp_session_manager.py +0 -176
  129. google_adk-0.4.0/src/google/adk/tools/mcp_tool/mcp_toolset.py +0 -266
  130. google_adk-0.4.0/src/google/adk/tools/toolbox_tool.py +0 -46
  131. {google_adk-0.4.0 → google_adk-1.0.0}/LICENSE +0 -0
  132. {google_adk-0.4.0 → google_adk-1.0.0}/README.md +0 -0
  133. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/__init__.py +0 -0
  134. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/agents/__init__.py +0 -0
  135. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/artifacts/__init__.py +0 -0
  136. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/auth/__init__.py +0 -0
  137. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/auth/auth_handler.py +0 -0
  138. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/auth/auth_schemes.py +0 -0
  139. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/cli/__init__.py +0 -0
  140. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/cli/__main__.py +0 -0
  141. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/cli/browser/adk_favicon.svg +0 -0
  142. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/cli/browser/assets/audio-processor.js +0 -0
  143. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/cli/browser/assets/config/runtime-config.json +0 -0
  144. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/cli/browser/polyfills-FFHMD2TL.js +0 -0
  145. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/cli/browser/styles-4VDSPQ37.css +0 -0
  146. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/cli/cli_create.py +0 -0
  147. /google_adk-0.4.0/src/google/adk/cli/fast_api.py → /google_adk-1.0.0/src/google/adk/cli/fast_api.py.orig +0 -0
  148. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/cli/utils/__init__.py +0 -0
  149. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/cli/utils/envs.py +0 -0
  150. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/code_executors/base_code_executor.py +0 -0
  151. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/code_executors/code_execution_utils.py +0 -0
  152. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/code_executors/code_executor_context.py +0 -0
  153. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/code_executors/container_code_executor.py +0 -0
  154. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/code_executors/unsafe_local_code_executor.py +0 -0
  155. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/code_executors/vertex_ai_code_executor.py +0 -0
  156. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/events/__init__.py +0 -0
  157. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/examples/__init__.py +0 -0
  158. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/examples/base_example_provider.py +0 -0
  159. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/examples/vertex_ai_example_store.py +0 -0
  160. {google_adk-0.4.0/src/google/adk/tools/apihub_tool/clients → google_adk-1.0.0/src/google/adk/flows}/__init__.py +0 -0
  161. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/flows/llm_flows/__init__.py +0 -0
  162. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/flows/llm_flows/_base_llm_processor.py +0 -0
  163. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/flows/llm_flows/_nl_planning.py +0 -0
  164. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/flows/llm_flows/agent_transfer.py +0 -0
  165. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/flows/llm_flows/auto_flow.py +0 -0
  166. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/flows/llm_flows/contents.py +0 -0
  167. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/flows/llm_flows/identity.py +0 -0
  168. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/models/__init__.py +0 -0
  169. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/models/base_llm_connection.py +0 -0
  170. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/planners/__init__.py +0 -0
  171. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/planners/base_planner.py +0 -0
  172. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/planners/built_in_planner.py +0 -0
  173. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/planners/plan_re_act_planner.py +0 -0
  174. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/sessions/state.py +0 -0
  175. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/_automatic_function_calling_util.py +0 -0
  176. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/apihub_tool/__init__.py +0 -0
  177. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/apihub_tool/clients/apihub_client.py +0 -0
  178. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/apihub_tool/clients/secret_client.py +0 -0
  179. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/application_integration_tool/__init__.py +0 -0
  180. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/base_tool.py +0 -0
  181. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/crewai_tool.py +0 -0
  182. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/example_tool.py +0 -0
  183. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/exit_loop_tool.py +0 -0
  184. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/function_tool.py +0 -0
  185. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/get_user_choice_tool.py +0 -0
  186. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/google_search_tool.py +0 -0
  187. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/load_web_page.py +0 -0
  188. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/long_running_tool.py +0 -0
  189. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/openapi_tool/__init__.py +0 -0
  190. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/openapi_tool/auth/__init__.py +0 -0
  191. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/openapi_tool/auth/auth_helpers.py +0 -0
  192. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/openapi_tool/auth/credential_exchangers/__init__.py +0 -0
  193. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.py +0 -0
  194. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/openapi_tool/auth/credential_exchangers/base_credential_exchanger.py +0 -0
  195. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/openapi_tool/auth/credential_exchangers/oauth2_exchanger.py +0 -0
  196. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.py +0 -0
  197. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/openapi_tool/common/__init__.py +0 -0
  198. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/openapi_tool/openapi_spec_parser/__init__.py +0 -0
  199. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.py +0 -0
  200. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/openapi_tool/openapi_spec_parser/rest_api_tool.py +0 -0
  201. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/retrieval/base_retrieval_tool.py +0 -0
  202. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/retrieval/files_retrieval.py +0 -0
  203. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/retrieval/llama_index_retrieval.py +0 -0
  204. {google_adk-0.4.0 → google_adk-1.0.0}/src/google/adk/tools/vertex_ai_search_tool.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: google-adk
3
- Version: 0.4.0
3
+ Version: 1.0.0
4
4
  Summary: Agent Development Kit
5
5
  Author-email: Google LLC <googleapis-packages@google.com>
6
6
  Requires-Python: >=3.9
@@ -11,10 +11,10 @@ Classifier: Intended Audience :: Science/Research
11
11
  Classifier: Programming Language :: Python
12
12
  Classifier: Programming Language :: Python :: 3
13
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
14
  Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
18
  Classifier: Operating System :: OS Independent
19
19
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
20
  Classifier: License :: OSI Approved :: Apache Software License
@@ -27,7 +27,7 @@ Requires-Dist: google-cloud-aiplatform>=1.87.0
27
27
  Requires-Dist: google-cloud-secret-manager>=2.22.0
28
28
  Requires-Dist: google-cloud-speech>=2.30.0
29
29
  Requires-Dist: google-cloud-storage>=2.18.0, <3.0.0
30
- Requires-Dist: google-genai>=1.11.0
30
+ Requires-Dist: google-genai>=1.14.0
31
31
  Requires-Dist: graphviz>=0.20.2
32
32
  Requires-Dist: mcp>=1.5.0;python_version>='3.10'
33
33
  Requires-Dist: opentelemetry-api>=1.31.0
@@ -43,6 +43,7 @@ Requires-Dist: flit>=3.10.0 ; extra == "dev"
43
43
  Requires-Dist: isort>=6.0.0 ; extra == "dev"
44
44
  Requires-Dist: pyink>=24.10.0 ; extra == "dev"
45
45
  Requires-Dist: pylint>=2.6.0 ; extra == "dev"
46
+ Requires-Dist: mypy>=1.15.0 ; extra == "dev"
46
47
  Requires-Dist: autodoc_pydantic ; extra == "docs"
47
48
  Requires-Dist: furo ; extra == "docs"
48
49
  Requires-Dist: myst-parser ; extra == "docs"
@@ -60,6 +61,7 @@ Requires-Dist: langgraph>=0.2.60 ; extra == "extensions"
60
61
  Requires-Dist: litellm>=1.63.11 ; extra == "extensions"
61
62
  Requires-Dist: llama-index-readers-file>=0.4.0 ; extra == "extensions"
62
63
  Requires-Dist: lxml>=5.3.0 ; extra == "extensions"
64
+ Requires-Dist: toolbox-core>=0.1.0 ; extra == "extensions"
63
65
  Requires-Dist: anthropic>=0.43.0 ; extra == "test"
64
66
  Requires-Dist: langchain-community>=0.3.17 ; extra == "test"
65
67
  Requires-Dist: langgraph>=0.2.60 ; extra == "test"
@@ -15,10 +15,10 @@ classifiers = [ # List of https://pypi.org/classifiers/
15
15
  "Programming Language :: Python",
16
16
  "Programming Language :: Python :: 3",
17
17
  "Programming Language :: Python :: 3.9",
18
- "Programming Language :: Python :: 3.13",
19
- "Programming Language :: Python :: 3.12",
20
- "Programming Language :: Python :: 3.11",
21
18
  "Programming Language :: Python :: 3.10",
19
+ "Programming Language :: Python :: 3.11",
20
+ "Programming Language :: Python :: 3.12",
21
+ "Programming Language :: Python :: 3.13",
22
22
  "Operating System :: OS Independent",
23
23
  "Topic :: Software Development :: Libraries :: Python Modules",
24
24
  "License :: OSI Approved :: Apache Software License",
@@ -31,9 +31,9 @@ dependencies = [
31
31
  "google-api-python-client>=2.157.0", # Google API client discovery
32
32
  "google-cloud-aiplatform>=1.87.0", # For VertexAI integrations, e.g. example store.
33
33
  "google-cloud-secret-manager>=2.22.0", # Fetching secrets in RestAPI Tool
34
- "google-cloud-speech>=2.30.0", # For Audo Transcription
34
+ "google-cloud-speech>=2.30.0", # For Audio Transcription
35
35
  "google-cloud-storage>=2.18.0, <3.0.0", # For GCS Artifact service
36
- "google-genai>=1.11.0", # Google GenAI SDK
36
+ "google-genai>=1.14.0", # Google GenAI SDK
37
37
  "graphviz>=0.20.2", # Graphviz for graph rendering
38
38
  "mcp>=1.5.0;python_version>='3.10'", # For MCP Toolset
39
39
  "opentelemetry-api>=1.31.0", # OpenTelemetry
@@ -66,6 +66,7 @@ dev = [
66
66
  "isort>=6.0.0",
67
67
  "pyink>=24.10.0",
68
68
  "pylint>=2.6.0",
69
+ "mypy>=1.15.0",
69
70
  # go/keep-sorted end
70
71
  ]
71
72
 
@@ -83,7 +84,8 @@ test = [
83
84
  "langchain-community>=0.3.17",
84
85
  "langgraph>=0.2.60", # For LangGraphAgent
85
86
  "litellm>=1.63.11", # For LiteLLM tests
86
- "llama-index-readers-file>=0.4.0", # for retrieval tests
87
+ "llama-index-readers-file>=0.4.0", # For retrieval tests
88
+
87
89
  "pytest-asyncio>=0.25.0",
88
90
  "pytest-mock>=3.14.0",
89
91
  "pytest-xdist>=3.6.1",
@@ -108,8 +110,9 @@ extensions = [
108
110
  "docker>=7.0.0", # For ContainerCodeExecutor
109
111
  "langgraph>=0.2.60", # For LangGraphAgent
110
112
  "litellm>=1.63.11", # For LiteLLM support
111
- "llama-index-readers-file>=0.4.0", # for retrieval usings LlamaIndex.
113
+ "llama-index-readers-file>=0.4.0", # For retrieval using LlamaIndex.
112
114
  "lxml>=5.3.0", # For load_web_page tool.
115
+ "toolbox-core>=0.1.0", # For tools.toolbox_toolset.ToolboxToolset
113
116
  ]
114
117
 
115
118
 
@@ -145,9 +148,17 @@ name = "google.adk"
145
148
 
146
149
  [tool.isort]
147
150
  profile = "google"
151
+ single_line_exclusions = []
152
+ known_third_party = ["google.adk"]
148
153
 
149
154
 
150
155
  [tool.pytest.ini_options]
151
156
  testpaths = ["tests"]
152
157
  asyncio_default_fixture_loop_scope = "function"
153
158
  asyncio_mode = "auto"
159
+
160
+ [tool.mypy]
161
+ exclude = "tests/"
162
+ plugins = ["pydantic.mypy"]
163
+ strict = true
164
+ disable_error_code = ["import-not-found", "import-untyped", "unused-ignore"]
@@ -30,6 +30,7 @@ class ActiveStreamingTool(BaseModel):
30
30
  arbitrary_types_allowed=True,
31
31
  extra='forbid',
32
32
  )
33
+ """The pydantic model config."""
33
34
 
34
35
  task: Optional[asyncio.Task] = None
35
36
  """The active task of this streaming tool."""
@@ -0,0 +1,389 @@
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 inspect
18
+ from typing import Any
19
+ from typing import AsyncGenerator
20
+ from typing import Awaitable
21
+ from typing import Callable
22
+ from typing import final
23
+ from typing import Optional
24
+ from typing import TYPE_CHECKING
25
+ from typing import Union
26
+
27
+ from google.genai import types
28
+ from opentelemetry import trace
29
+ from pydantic import BaseModel
30
+ from pydantic import ConfigDict
31
+ from pydantic import Field
32
+ from pydantic import field_validator
33
+ from typing_extensions import override
34
+ from typing_extensions import TypeAlias
35
+
36
+ from ..events.event import Event
37
+ from .callback_context import CallbackContext
38
+
39
+ if TYPE_CHECKING:
40
+ from .invocation_context import InvocationContext
41
+
42
+ tracer = trace.get_tracer('gcp.vertex.agent')
43
+
44
+ _SingleAgentCallback: TypeAlias = Callable[
45
+ [CallbackContext],
46
+ Union[Awaitable[Optional[types.Content]], Optional[types.Content]],
47
+ ]
48
+
49
+ BeforeAgentCallback: TypeAlias = Union[
50
+ _SingleAgentCallback,
51
+ list[_SingleAgentCallback],
52
+ ]
53
+
54
+ AfterAgentCallback: TypeAlias = Union[
55
+ _SingleAgentCallback,
56
+ list[_SingleAgentCallback],
57
+ ]
58
+
59
+
60
+ class BaseAgent(BaseModel):
61
+ """Base class for all agents in Agent Development Kit."""
62
+
63
+ model_config = ConfigDict(
64
+ arbitrary_types_allowed=True,
65
+ extra='forbid',
66
+ )
67
+ """The pydantic model config."""
68
+
69
+ name: str
70
+ """The agent's name.
71
+
72
+ Agent name must be a Python identifier and unique within the agent tree.
73
+ Agent name cannot be "user", since it's reserved for end-user's input.
74
+ """
75
+
76
+ description: str = ''
77
+ """Description about the agent's capability.
78
+
79
+ The model uses this to determine whether to delegate control to the agent.
80
+ One-line description is enough and preferred.
81
+ """
82
+
83
+ parent_agent: Optional[BaseAgent] = Field(default=None, init=False)
84
+ """The parent agent of this agent.
85
+
86
+ Note that an agent can ONLY be added as sub-agent once.
87
+
88
+ If you want to add one agent twice as sub-agent, consider to create two agent
89
+ instances with identical config, but with different name and add them to the
90
+ agent tree.
91
+ """
92
+ sub_agents: list[BaseAgent] = Field(default_factory=list)
93
+ """The sub-agents of this agent."""
94
+
95
+ before_agent_callback: Optional[BeforeAgentCallback] = None
96
+ """Callback or list of callbacks to be invoked before the agent run.
97
+
98
+ When a list of callbacks is provided, the callbacks will be called in the
99
+ order they are listed until a callback does not return None.
100
+
101
+ Args:
102
+ callback_context: MUST be named 'callback_context' (enforced).
103
+
104
+ Returns:
105
+ Optional[types.Content]: The content to return to the user.
106
+ When the content is present, the agent run will be skipped and the
107
+ provided content will be returned to user.
108
+ """
109
+ after_agent_callback: Optional[AfterAgentCallback] = None
110
+ """Callback or list of callbacks to be invoked after the agent run.
111
+
112
+ When a list of callbacks is provided, the callbacks will be called in the
113
+ order they are listed until a callback does not return None.
114
+
115
+ Args:
116
+ callback_context: MUST be named 'callback_context' (enforced).
117
+
118
+ Returns:
119
+ Optional[types.Content]: The content to return to the user.
120
+ When the content is present, the provided content will be used as agent
121
+ response and appended to event history as agent response.
122
+ """
123
+
124
+ @final
125
+ async def run_async(
126
+ self,
127
+ parent_context: InvocationContext,
128
+ ) -> AsyncGenerator[Event, None]:
129
+ """Entry method to run an agent via text-based conversation.
130
+
131
+ Args:
132
+ parent_context: InvocationContext, the invocation context of the parent
133
+ agent.
134
+
135
+ Yields:
136
+ Event: the events generated by the agent.
137
+ """
138
+
139
+ with tracer.start_as_current_span(f'agent_run [{self.name}]'):
140
+ ctx = self._create_invocation_context(parent_context)
141
+
142
+ if event := await self.__handle_before_agent_callback(ctx):
143
+ yield event
144
+ if ctx.end_invocation:
145
+ return
146
+
147
+ async for event in self._run_async_impl(ctx):
148
+ yield event
149
+
150
+ if ctx.end_invocation:
151
+ return
152
+
153
+ if event := await self.__handle_after_agent_callback(ctx):
154
+ yield event
155
+
156
+ @final
157
+ async def run_live(
158
+ self,
159
+ parent_context: InvocationContext,
160
+ ) -> AsyncGenerator[Event, None]:
161
+ """Entry method to run an agent via video/audio-based conversation.
162
+
163
+ Args:
164
+ parent_context: InvocationContext, the invocation context of the parent
165
+ agent.
166
+
167
+ Yields:
168
+ Event: the events generated by the agent.
169
+ """
170
+ with tracer.start_as_current_span(f'agent_run [{self.name}]'):
171
+ ctx = self._create_invocation_context(parent_context)
172
+ # TODO(hangfei): support before/after_agent_callback
173
+
174
+ async for event in self._run_live_impl(ctx):
175
+ yield event
176
+
177
+ async def _run_async_impl(
178
+ self, ctx: InvocationContext
179
+ ) -> AsyncGenerator[Event, None]:
180
+ """Core logic to run this agent via text-based conversation.
181
+
182
+ Args:
183
+ ctx: InvocationContext, the invocation context for this agent.
184
+
185
+ Yields:
186
+ Event: the events generated by the agent.
187
+ """
188
+ raise NotImplementedError(
189
+ f'_run_async_impl for {type(self)} is not implemented.'
190
+ )
191
+ yield # AsyncGenerator requires having at least one yield statement
192
+
193
+ async def _run_live_impl(
194
+ self, ctx: InvocationContext
195
+ ) -> AsyncGenerator[Event, None]:
196
+ """Core logic to run this agent via video/audio-based conversation.
197
+
198
+ Args:
199
+ ctx: InvocationContext, the invocation context for this agent.
200
+
201
+ Yields:
202
+ Event: the events generated by the agent.
203
+ """
204
+ raise NotImplementedError(
205
+ f'_run_live_impl for {type(self)} is not implemented.'
206
+ )
207
+ yield # AsyncGenerator requires having at least one yield statement
208
+
209
+ @property
210
+ def root_agent(self) -> BaseAgent:
211
+ """Gets the root agent of this agent."""
212
+ root_agent = self
213
+ while root_agent.parent_agent is not None:
214
+ root_agent = root_agent.parent_agent
215
+ return root_agent
216
+
217
+ def find_agent(self, name: str) -> Optional[BaseAgent]:
218
+ """Finds the agent with the given name in this agent and its descendants.
219
+
220
+ Args:
221
+ name: The name of the agent to find.
222
+
223
+ Returns:
224
+ The agent with the matching name, or None if no such agent is found.
225
+ """
226
+ if self.name == name:
227
+ return self
228
+ return self.find_sub_agent(name)
229
+
230
+ def find_sub_agent(self, name: str) -> Optional[BaseAgent]:
231
+ """Finds the agent with the given name in this agent's descendants.
232
+
233
+ Args:
234
+ name: The name of the agent to find.
235
+
236
+ Returns:
237
+ The agent with the matching name, or None if no such agent is found.
238
+ """
239
+ for sub_agent in self.sub_agents:
240
+ if result := sub_agent.find_agent(name):
241
+ return result
242
+ return None
243
+
244
+ def _create_invocation_context(
245
+ self, parent_context: InvocationContext
246
+ ) -> InvocationContext:
247
+ """Creates a new invocation context for this agent."""
248
+ invocation_context = parent_context.model_copy(update={'agent': self})
249
+ if parent_context.branch:
250
+ invocation_context.branch = f'{parent_context.branch}.{self.name}'
251
+ return invocation_context
252
+
253
+ @property
254
+ def canonical_before_agent_callbacks(self) -> list[_SingleAgentCallback]:
255
+ """The resolved self.before_agent_callback field as a list of _SingleAgentCallback.
256
+
257
+ This method is only for use by Agent Development Kit.
258
+ """
259
+ if not self.before_agent_callback:
260
+ return []
261
+ if isinstance(self.before_agent_callback, list):
262
+ return self.before_agent_callback
263
+ return [self.before_agent_callback]
264
+
265
+ @property
266
+ def canonical_after_agent_callbacks(self) -> list[_SingleAgentCallback]:
267
+ """The resolved self.after_agent_callback field as a list of _SingleAgentCallback.
268
+
269
+ This method is only for use by Agent Development Kit.
270
+ """
271
+ if not self.after_agent_callback:
272
+ return []
273
+ if isinstance(self.after_agent_callback, list):
274
+ return self.after_agent_callback
275
+ return [self.after_agent_callback]
276
+
277
+ async def __handle_before_agent_callback(
278
+ self, ctx: InvocationContext
279
+ ) -> Optional[Event]:
280
+ """Runs the before_agent_callback if it exists.
281
+
282
+ Returns:
283
+ Optional[Event]: an event if callback provides content or changed state.
284
+ """
285
+ ret_event = None
286
+
287
+ if not self.canonical_before_agent_callbacks:
288
+ return ret_event
289
+
290
+ callback_context = CallbackContext(ctx)
291
+
292
+ for callback in self.canonical_before_agent_callbacks:
293
+ before_agent_callback_content = callback(
294
+ callback_context=callback_context
295
+ )
296
+ if inspect.isawaitable(before_agent_callback_content):
297
+ before_agent_callback_content = await before_agent_callback_content
298
+ if before_agent_callback_content:
299
+ ret_event = Event(
300
+ invocation_id=ctx.invocation_id,
301
+ author=self.name,
302
+ branch=ctx.branch,
303
+ content=before_agent_callback_content,
304
+ actions=callback_context._event_actions,
305
+ )
306
+ ctx.end_invocation = True
307
+ return ret_event
308
+
309
+ if callback_context.state.has_delta():
310
+ ret_event = Event(
311
+ invocation_id=ctx.invocation_id,
312
+ author=self.name,
313
+ branch=ctx.branch,
314
+ actions=callback_context._event_actions,
315
+ )
316
+
317
+ return ret_event
318
+
319
+ async def __handle_after_agent_callback(
320
+ self, invocation_context: InvocationContext
321
+ ) -> Optional[Event]:
322
+ """Runs the after_agent_callback if it exists.
323
+
324
+ Returns:
325
+ Optional[Event]: an event if callback provides content or changed state.
326
+ """
327
+ ret_event = None
328
+
329
+ if not self.canonical_after_agent_callbacks:
330
+ return ret_event
331
+
332
+ callback_context = CallbackContext(invocation_context)
333
+
334
+ for callback in self.canonical_after_agent_callbacks:
335
+ after_agent_callback_content = callback(callback_context=callback_context)
336
+ if inspect.isawaitable(after_agent_callback_content):
337
+ after_agent_callback_content = await after_agent_callback_content
338
+ if after_agent_callback_content:
339
+ ret_event = Event(
340
+ invocation_id=invocation_context.invocation_id,
341
+ author=self.name,
342
+ branch=invocation_context.branch,
343
+ content=after_agent_callback_content,
344
+ actions=callback_context._event_actions,
345
+ )
346
+ return ret_event
347
+
348
+ if callback_context.state.has_delta():
349
+ ret_event = Event(
350
+ invocation_id=invocation_context.invocation_id,
351
+ author=self.name,
352
+ branch=invocation_context.branch,
353
+ content=after_agent_callback_content,
354
+ actions=callback_context._event_actions,
355
+ )
356
+
357
+ return ret_event
358
+
359
+ @override
360
+ def model_post_init(self, __context: Any) -> None:
361
+ self.__set_parent_agent_for_sub_agents()
362
+
363
+ @field_validator('name', mode='after')
364
+ @classmethod
365
+ def __validate_name(cls, value: str):
366
+ if not value.isidentifier():
367
+ raise ValueError(
368
+ f'Found invalid agent name: `{value}`.'
369
+ ' Agent name must be a valid identifier. It should start with a'
370
+ ' letter (a-z, A-Z) or an underscore (_), and can only contain'
371
+ ' letters, digits (0-9), and underscores.'
372
+ )
373
+ if value == 'user':
374
+ raise ValueError(
375
+ "Agent name cannot be `user`. `user` is reserved for end-user's"
376
+ ' input.'
377
+ )
378
+ return value
379
+
380
+ def __set_parent_agent_for_sub_agents(self) -> BaseAgent:
381
+ for sub_agent in self.sub_agents:
382
+ if sub_agent.parent_agent is not None:
383
+ raise ValueError(
384
+ f'Agent `{sub_agent.name}` already has a parent agent, current'
385
+ f' parent: `{sub_agent.parent_agent.name}`, trying to add:'
386
+ f' `{self.name}`'
387
+ )
388
+ sub_agent.parent_agent = self
389
+ return self
@@ -38,26 +38,9 @@ if TYPE_CHECKING:
38
38
  tracer = trace.get_tracer('gcp.vertex.agent')
39
39
 
40
40
  BeforeAgentCallback = Callable[[CallbackContext], Optional[types.Content]]
41
- """Callback signature that is invoked before the agent run.
42
41
 
43
- Args:
44
- callback_context: MUST be named 'callback_context' (enforced).
45
-
46
- Returns:
47
- The content to return to the user. When set, the agent run will be skipped and
48
- the provided content will be returned to user.
49
- """
50
42
 
51
43
  AfterAgentCallback = Callable[[CallbackContext], Optional[types.Content]]
52
- """Callback signature that is invoked after the agent run.
53
-
54
- Args:
55
- callback_context: MUST be named 'callback_context' (enforced).
56
-
57
- Returns:
58
- The content to return to the user. When set, the provided content will be
59
- appended to event history as agent response.
60
- """
61
44
 
62
45
 
63
46
  class BaseAgent(BaseModel):
@@ -101,8 +84,9 @@ class BaseAgent(BaseModel):
101
84
  callback_context: MUST be named 'callback_context' (enforced).
102
85
 
103
86
  Returns:
104
- The content to return to the user. When set, the agent run will be skipped
105
- and the provided content will be returned to user.
87
+ Optional[types.Content]: The content to return to the user.
88
+ When the content is present, the agent run will be skipped and the
89
+ provided content will be returned to user.
106
90
  """
107
91
  after_agent_callback: Optional[AfterAgentCallback] = None
108
92
  """Callback signature that is invoked after the agent run.
@@ -111,8 +95,9 @@ class BaseAgent(BaseModel):
111
95
  callback_context: MUST be named 'callback_context' (enforced).
112
96
 
113
97
  Returns:
114
- The content to return to the user. When set, the provided content will be
115
- appended to event history as agent response.
98
+ Optional[types.Content]: The content to return to the user.
99
+ When the content is present, the provided content will be used as agent
100
+ response and appended to event history as agent response.
116
101
  """
117
102
 
118
103
  @final
@@ -60,12 +60,7 @@ class CallbackContext(ReadonlyContext):
60
60
  """
61
61
  return self._state
62
62
 
63
- @property
64
- def user_content(self) -> Optional[types.Content]:
65
- """The user content that started this invocation. READONLY field."""
66
- return self._invocation_context.user_content
67
-
68
- def load_artifact(
63
+ async def load_artifact(
69
64
  self, filename: str, version: Optional[int] = None
70
65
  ) -> Optional[types.Part]:
71
66
  """Loads an artifact attached to the current session.
@@ -80,7 +75,7 @@ class CallbackContext(ReadonlyContext):
80
75
  """
81
76
  if self._invocation_context.artifact_service is None:
82
77
  raise ValueError("Artifact service is not initialized.")
83
- return self._invocation_context.artifact_service.load_artifact(
78
+ return await self._invocation_context.artifact_service.load_artifact(
84
79
  app_name=self._invocation_context.app_name,
85
80
  user_id=self._invocation_context.user_id,
86
81
  session_id=self._invocation_context.session.id,
@@ -88,7 +83,7 @@ class CallbackContext(ReadonlyContext):
88
83
  version=version,
89
84
  )
90
85
 
91
- def save_artifact(self, filename: str, artifact: types.Part) -> int:
86
+ async def save_artifact(self, filename: str, artifact: types.Part) -> int:
92
87
  """Saves an artifact and records it as delta for the current session.
93
88
 
94
89
  Args:
@@ -100,7 +95,7 @@ class CallbackContext(ReadonlyContext):
100
95
  """
101
96
  if self._invocation_context.artifact_service is None:
102
97
  raise ValueError("Artifact service is not initialized.")
103
- version = self._invocation_context.artifact_service.save_artifact(
98
+ version = await self._invocation_context.artifact_service.save_artifact(
104
99
  app_name=self._invocation_context.app_name,
105
100
  user_id=self._invocation_context.user_id,
106
101
  session_id=self._invocation_context.session.id,
@@ -110,6 +110,7 @@ class InvocationContext(BaseModel):
110
110
  arbitrary_types_allowed=True,
111
111
  extra="forbid",
112
112
  )
113
+ """The pydantic model config."""
113
114
 
114
115
  artifact_service: Optional[BaseArtifactService] = None
115
116
  session_service: BaseSessionService
@@ -53,6 +53,7 @@ class LangGraphAgent(BaseAgent):
53
53
  model_config = ConfigDict(
54
54
  arbitrary_types_allowed=True,
55
55
  )
56
+ """The pydantic model config."""
56
57
 
57
58
  graph: CompiledGraph
58
59
 
@@ -24,6 +24,7 @@ class LiveRequest(BaseModel):
24
24
  """Request send to live agents."""
25
25
 
26
26
  model_config = ConfigDict(ser_json_bytes='base64', val_json_bytes='base64')
27
+ """The pydantic model config."""
27
28
 
28
29
  content: Optional[types.Content] = None
29
30
  """If set, send the content to the model in turn-by-turn mode."""