gitextract_gssbqr3a/ ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ ├── actions/ │ │ └── setup/ │ │ └── action.yml │ ├── pull_request_template.md │ └── workflows/ │ ├── go.yml │ └── nightly.yml ├── .gitignore ├── .golangci.yml ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── agent/ │ ├── agent.go │ ├── agent_test.go │ ├── context.go │ ├── doc.go │ ├── llmagent/ │ │ ├── doc.go │ │ ├── llmagent.go │ │ ├── llmagent_saveoutput_test.go │ │ ├── llmagent_test.go │ │ ├── state_agent_test.go │ │ └── testdata/ │ │ ├── TestFunctionTool.httprr │ │ ├── TestLLMAgentStreamingModeSSE.httprr │ │ ├── TestLLMAgent_healthy_backend.httprr │ │ ├── TestToolCallback_after_callback_response_used.httprr │ │ ├── TestToolCallback_after_callback_returned_when_used_with_before_callback.httprr │ │ ├── TestToolCallback_before_callback_response_used.httprr │ │ ├── TestToolCallback_both_callbacks_return_nil_actual_tool_is_executed.httprr │ │ ├── TestToolCallback_extra_after_callback_skipped.httprr │ │ └── TestToolCallback_extra_before_callback_skipped.httprr │ ├── loader.go │ ├── loader_test.go │ ├── remoteagent/ │ │ ├── a2a_agent.go │ │ ├── a2a_agent_run_processor.go │ │ ├── a2a_agent_run_processor_test.go │ │ ├── a2a_agent_test.go │ │ ├── a2a_e2e_test.go │ │ ├── doc.go │ │ ├── testdata/ │ │ │ ├── TestA2ARemoteAgentStreamingGeminiError.httprr │ │ │ ├── TestA2ARemoteAgentStreamingGeminiSuccess.httprr │ │ │ ├── TestA2ASingleHopFinalResponse_llm_mid-response_error.httprr │ │ │ └── TestA2ASingleHopFinalResponse_llm_mid-response_error_response.httprr │ │ ├── utils.go │ │ └── utils_test.go │ ├── run_config.go │ └── workflowagents/ │ ├── loopagent/ │ │ ├── agent.go │ │ └── agent_test.go │ ├── parallelagent/ │ │ ├── agent.go │ │ ├── agent_test.go │ │ └── testdata/ │ │ ├── TestParallelAgentWithTools_agent1.httprr │ │ └── TestParallelAgentWithTools_agent2.httprr │ └── sequentialagent/ │ ├── agent.go │ └── agent_test.go ├── artifact/ │ ├── artifact_key_test.go │ ├── gcsartifact/ │ │ ├── gcs_client.go │ │ ├── gcs_test.go │ │ └── service.go │ ├── inmemory.go │ ├── inmemory_test.go │ ├── request_validation_test.go │ └── service.go ├── cmd/ │ ├── adkgo/ │ │ ├── adkgo.go │ │ └── internal/ │ │ ├── deploy/ │ │ │ ├── cloudrun/ │ │ │ │ └── cloudrun.go │ │ │ └── deploy.go │ │ └── root/ │ │ └── root.go │ ├── internal/ │ │ └── adkcli/ │ │ └── main.go │ └── launcher/ │ ├── console/ │ │ └── console.go │ ├── full/ │ │ └── full.go │ ├── internal/ │ │ └── telemetry/ │ │ └── telemetry.go │ ├── launcher.go │ ├── prod/ │ │ └── prod.go │ ├── universal/ │ │ └── universal.go │ └── web/ │ ├── a2a/ │ │ ├── a2a.go │ │ └── a2a_test.go │ ├── api/ │ │ └── api.go │ ├── web.go │ └── webui/ │ ├── distr/ │ │ ├── assets/ │ │ │ ├── audio-processor.js │ │ │ └── config/ │ │ │ └── runtime-config.json │ │ ├── chunk-2FK4DXD6.js │ │ ├── chunk-4ZK7FQPX.js │ │ ├── chunk-7TJPJFPQ.js │ │ ├── chunk-ABUNXR7C.js │ │ ├── chunk-BWOBGCSA.js │ │ ├── chunk-C7MGZAFQ.js │ │ ├── chunk-CZPJTTNC.js │ │ ├── chunk-GLGRLUIJ.js │ │ ├── chunk-JFJZPIJV.js │ │ ├── chunk-JOTH6MSK.js │ │ ├── chunk-KPALJACC.js │ │ ├── chunk-P66EZ4FO.js │ │ ├── chunk-POBF2O3Z.js │ │ ├── chunk-QWN7CXIU.js │ │ ├── chunk-QZL3KUOO.js │ │ ├── chunk-R2V2IE5A.js │ │ ├── chunk-W7GRJBO5.js │ │ ├── chunk-YQ6GIDJJ.js │ │ ├── index.html │ │ ├── main-ORIYWHAC.js │ │ ├── polyfills-5CFQRCPP.js │ │ └── styles-YY6V3TJU.css │ └── webui.go ├── examples/ │ ├── README.md │ ├── a2a/ │ │ └── main.go │ ├── mcp/ │ │ └── main.go │ ├── quickstart/ │ │ └── main.go │ ├── rest/ │ │ └── main.go │ ├── telemetry/ │ │ └── main.go │ ├── toolconfirmation/ │ │ └── main.go │ ├── tools/ │ │ ├── loadartifacts/ │ │ │ └── main.go │ │ ├── loadmemory/ │ │ │ └── main.go │ │ └── multipletools/ │ │ └── main.go │ ├── vertexai/ │ │ ├── agent.go │ │ ├── imagegenerator/ │ │ │ └── main.go │ │ └── vertexengine/ │ │ └── create_engine.go │ ├── web/ │ │ ├── agents/ │ │ │ ├── image_generator.go │ │ │ └── llmauditor.go │ │ └── main.go │ └── workflowagents/ │ ├── loop/ │ │ └── main.go │ ├── parallel/ │ │ └── main.go │ ├── sequential/ │ │ └── main.go │ └── sequentialCode/ │ └── main.go ├── go.mod ├── go.sum ├── internal/ │ ├── agent/ │ │ ├── parentmap/ │ │ │ ├── map.go │ │ │ └── map_test.go │ │ ├── remoteagent/ │ │ │ └── a2a_config.go │ │ ├── runconfig/ │ │ │ └── run_config.go │ │ └── state.go │ ├── artifact/ │ │ ├── artifacts.go │ │ ├── artifacts_test.go │ │ └── tests/ │ │ └── service_suite.go │ ├── cli/ │ │ └── util/ │ │ ├── doc.go │ │ ├── flagset_helpers.go │ │ ├── oscmd.go │ │ └── text_helpers.go │ ├── configurable/ │ │ ├── configurable.go │ │ ├── configurable_utils.go │ │ └── conformance/ │ │ ├── callbacks.go │ │ ├── functions.go │ │ ├── loader.go │ │ └── replayplugin/ │ │ ├── invocation_replay_state.go │ │ ├── recording/ │ │ │ └── recording.go │ │ ├── replay_plugin.go │ │ ├── replay_plugin_test.go │ │ └── yaml_utils.go │ ├── context/ │ │ ├── callback_context.go │ │ ├── context_test.go │ │ ├── invocation_context.go │ │ └── readonly_context.go │ ├── converters/ │ │ └── map_structure.go │ ├── httprr/ │ │ ├── LICENSE │ │ ├── rr.go │ │ └── rr_test.go │ ├── llminternal/ │ │ ├── agent.go │ │ ├── agent_transfer.go │ │ ├── agent_transfer_test.go │ │ ├── base_flow.go │ │ ├── base_flow_telemetry_test.go │ │ ├── base_flow_test.go │ │ ├── basic_processor.go │ │ ├── clone_test.go │ │ ├── contents_processor.go │ │ ├── contents_processor_test.go │ │ ├── converters/ │ │ │ └── converters.go │ │ ├── file_uploads_processor.go │ │ ├── functions.go │ │ ├── functions_test.go │ │ ├── googlellm/ │ │ │ ├── variant.go │ │ │ └── variant_test.go │ │ ├── handle_function_calls_async_test.go │ │ ├── helpers_test.go │ │ ├── identity_request_processor.go │ │ ├── identity_request_processor_test.go │ │ ├── instruction_processor.go │ │ ├── instruction_processor_test.go │ │ ├── other_processors.go │ │ ├── outputschema_processor.go │ │ ├── outputschema_processor_test.go │ │ ├── parallel_function_call_test.go │ │ ├── request_confirmation_processor.go │ │ ├── request_confirmation_processor_test.go │ │ ├── stream_aggregator.go │ │ ├── stream_aggregator_test.go │ │ ├── testdata/ │ │ │ ├── TestParallelFunctionCalls_test_parallel_function_calls_gemini-2.5-flash.httprr │ │ │ ├── TestParallelFunctionCalls_test_parallel_function_calls_gemini-3-flash-preview.httprr │ │ │ └── TestParallelFunctionCalls_test_parallel_function_calls_gemini-3.1-pro-preview.httprr │ │ └── tools_processor.go │ ├── memory/ │ │ ├── memory.go │ │ └── memory_test.go │ ├── plugininternal/ │ │ ├── plugin_manager.go │ │ └── plugincontext/ │ │ └── context.go │ ├── sessionutils/ │ │ └── utils.go │ ├── style_test.go │ ├── telemetry/ │ │ ├── converters.go │ │ ├── converters_test.go │ │ ├── logger.go │ │ ├── logger_test.go │ │ ├── telemetry.go │ │ └── telemetry_test.go │ ├── testutil/ │ │ ├── genai.go │ │ └── test_agent_runner.go │ ├── toolinternal/ │ │ ├── context.go │ │ ├── context_test.go │ │ ├── tool.go │ │ └── toolutils/ │ │ └── toolutils.go │ ├── typeutil/ │ │ └── convert.go │ ├── utils/ │ │ ├── schema_test.go │ │ ├── schema_utils.go │ │ ├── utils.go │ │ └── utils_test.go │ └── version/ │ └── version.go ├── memory/ │ ├── inmemory.go │ ├── inmemory_test.go │ └── service.go ├── model/ │ ├── apigee/ │ │ ├── apigee.go │ │ └── apigee_test.go │ ├── gemini/ │ │ ├── gemini.go │ │ ├── gemini_test.go │ │ └── testdata/ │ │ ├── TestModel_GenerateStream_ok.httprr │ │ ├── TestModel_Generate_ok.httprr │ │ ├── TestModel_TrackingHeaders_verifies_headers_are_set_vertex_disabled.httprr │ │ └── TestModel_TrackingHeaders_verifies_headers_are_set_vertex_enabled.httprr │ ├── llm.go │ └── llm_test.go ├── plugin/ │ ├── functioncallmodifier/ │ │ ├── integration_test.go │ │ ├── plugin.go │ │ ├── plugin_test.go │ │ └── testdata/ │ │ ├── TestPluginCallbackIntegration_agent_tool_default_schema.httprr │ │ ├── TestPluginCallbackIntegration_no_relevant_tools.httprr │ │ └── TestPluginCallbackIntegration_transfer_to_agent_tool.httprr │ ├── loggingplugin/ │ │ └── logging_plugin.go │ ├── plugin.go │ ├── plugin_manager_test.go │ ├── plugin_test.go │ └── retryandreflect/ │ ├── exceeded.md │ ├── plugin.go │ ├── plugin_test.go │ └── reflection.md ├── runner/ │ ├── runner.go │ └── runner_test.go ├── scripts/ │ └── adk-web/ │ ├── Dockerfile │ └── update-adk-web.sh ├── server/ │ ├── adka2a/ │ │ ├── agent_card.go │ │ ├── agent_card_test.go │ │ ├── doc.go │ │ ├── events.go │ │ ├── events_test.go │ │ ├── executor.go │ │ ├── executor_context.go │ │ ├── executor_plugin.go │ │ ├── executor_test.go │ │ ├── input_required.go │ │ ├── metadata.go │ │ ├── metadata_test.go │ │ ├── parts.go │ │ ├── parts_test.go │ │ ├── processor.go │ │ ├── processor_test.go │ │ ├── task_artifact.go │ │ └── utils.go │ ├── adkrest/ │ │ ├── controllers/ │ │ │ ├── apps.go │ │ │ ├── artifacts.go │ │ │ ├── debug.go │ │ │ ├── debug_test.go │ │ │ ├── errors.go │ │ │ ├── handlers.go │ │ │ ├── runtime.go │ │ │ ├── runtime_test.go │ │ │ ├── sessions.go │ │ │ └── sessions_test.go │ │ ├── handler.go │ │ └── internal/ │ │ ├── fakes/ │ │ │ └── testsessionservice.go │ │ ├── models/ │ │ │ ├── event.go │ │ │ ├── models.go │ │ │ ├── runtime.go │ │ │ └── session.go │ │ ├── routers/ │ │ │ ├── apps.go │ │ │ ├── artifacts.go │ │ │ ├── debug.go │ │ │ ├── eval.go │ │ │ ├── routers.go │ │ │ ├── runtime.go │ │ │ └── sessions.go │ │ └── services/ │ │ ├── agentgraphgenerator.go │ │ ├── agentgraphgenerator_test.go │ │ ├── debugtelemetry.go │ │ ├── debugtelemetry_test.go │ │ └── doc.go │ └── doc.go ├── session/ │ ├── database/ │ │ ├── gorm_datatypes.go │ │ ├── service.go │ │ ├── service_test.go │ │ ├── session.go │ │ └── storage_session.go │ ├── doc.go │ ├── inmemory.go │ ├── inmemory_test.go │ ├── service.go │ ├── session.go │ └── vertexai/ │ ├── service_test.go │ ├── session.go │ ├── testdata/ │ │ ├── app_state_is_shared.replay │ │ ├── append_event_to_the_session_and_overwrite_in_storage.replay │ │ ├── append_event_to_the_session_with_events_and_overwrite_in_storage.replay │ │ ├── append_event_when_session_not_found_should_fail.replay │ │ ├── append_event_with_all_fields.replay │ │ ├── append_event_with_bytes_content.replay │ │ ├── empty_list_for_non-existent_user.replay │ │ ├── error_when_not_found.replay │ │ ├── full_key.replay │ │ ├── generated_session_id.replay │ │ ├── get_session_respects_user_id.replay │ │ ├── list_all_users_for_app.replay │ │ ├── list_for_user1.replay │ │ ├── list_for_user2.replay │ │ ├── missing_author.replay │ │ ├── missing_invocation_id.replay │ │ ├── missing_session_id.replay │ │ ├── nil_event.replay │ │ ├── ok.replay │ │ ├── partial_events_are_not_persisted.replay │ │ ├── session_state_is_not_shared.replay │ │ ├── temp_state_is_not_persisted.replay │ │ ├── user_state_is_user_specific.replay │ │ ├── when_already_exists__it_fails.replay │ │ ├── with_config_after_timestamp.replay │ │ ├── with_config_combined_filters.replay │ │ ├── with_config_no_config_returns_all_events.replay │ │ └── with_config_num_recent_events.replay │ ├── vertexai.go │ ├── vertexai_client.go │ └── vertexai_test.go ├── telemetry/ │ ├── config.go │ ├── setup_otel.go │ ├── telemetry.go │ └── telemetry_test.go ├── tool/ │ ├── agenttool/ │ │ ├── agent_tool.go │ │ └── agent_tool_test.go │ ├── exampletool/ │ │ ├── tool.go │ │ └── tool_test.go │ ├── exitlooptool/ │ │ ├── tool.go │ │ └── tool_test.go │ ├── functiontool/ │ │ ├── function.go │ │ ├── function_test.go │ │ ├── long_running_function_test.go │ │ └── testdata/ │ │ └── TestFunctionTool_Simple.httprr │ ├── geminitool/ │ │ ├── google_search.go │ │ ├── tool.go │ │ └── tool_test.go │ ├── loadartifactstool/ │ │ ├── load_artifacts_tool.go │ │ └── load_artifacts_tool_test.go │ ├── loadmemorytool/ │ │ ├── tool.go │ │ └── tool_test.go │ ├── mcptoolset/ │ │ ├── client.go │ │ ├── set.go │ │ ├── set_test.go │ │ ├── testdata/ │ │ │ ├── TestMCPToolSet.httprr │ │ │ ├── TestMCPToolSetConfirmation_Conditional_Confirmation_Not_Required.httprr │ │ │ ├── TestMCPToolSetConfirmation_Conditional_Confirmation_Not_Required_For_This_Tool.httprr │ │ │ ├── TestMCPToolSetConfirmation_Conditional_Confirmation_Required.httprr │ │ │ ├── TestMCPToolSetConfirmation_Conditional_Confirmation_Required_For_This_Tool.httprr │ │ │ ├── TestMCPToolSetConfirmation_Conditional_Confirmation_Required_and_is_confirmed.httprr │ │ │ ├── TestMCPToolSetConfirmation_Conditional_Confirmation_Required_and_is_rejected.httprr │ │ │ ├── TestMCPToolSetConfirmation_Confirmation_Required.httprr │ │ │ ├── TestMCPToolSetConfirmation_Confirmation_Required_and_is_confirmed.httprr │ │ │ ├── TestMCPToolSetConfirmation_Confirmation_Required_and_is_rejected.httprr │ │ │ └── TestMCPToolSetConfirmation_No_Confirmation_Required.httprr │ │ └── tool.go │ ├── preloadmemorytool/ │ │ ├── tool.go │ │ └── tool_test.go │ ├── tool.go │ ├── tool_test.go │ └── toolconfirmation/ │ ├── tool_confirmation.go │ └── tool_confirmation_test.go └── util/ └── instructionutil/ └── instruction.go