@google/adk 2.2.1 → 2.4.0

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 (298) hide show
  1. package/dist/cjs/a2a/a2a_remote_agent.js +4 -1
  2. package/dist/cjs/a2a/agent_card.js +102 -26
  3. package/dist/cjs/a2a/agent_to_a2a.js +1 -1
  4. package/dist/cjs/agents/agent_engine_client.js +172 -0
  5. package/dist/cjs/agents/base_agent.js +20 -4
  6. package/dist/cjs/agents/functions.js +227 -25
  7. package/dist/cjs/agents/instructions.js +6 -2
  8. package/dist/cjs/agents/invocation_context.js +26 -4
  9. package/dist/cjs/agents/langgraph_agent.js +152 -0
  10. package/dist/cjs/agents/llm_agent.js +194 -107
  11. package/dist/cjs/agents/processors/basic_llm_request_processor.js +1 -1
  12. package/dist/cjs/agents/processors/code_execution_request_processor.js +18 -6
  13. package/dist/cjs/agents/processors/content_processor_utils.js +38 -10
  14. package/dist/cjs/agents/processors/content_request_processor.js +34 -2
  15. package/dist/cjs/agents/processors/instructions_llm_request_processor.js +1 -1
  16. package/dist/cjs/agents/processors/nl_planning_processor.js +12 -3
  17. package/dist/cjs/artifacts/in_memory_artifact_service.js +14 -0
  18. package/dist/cjs/auth/auth_handler.js +37 -5
  19. package/dist/cjs/auth/auth_schemes.js +9 -0
  20. package/dist/cjs/cli/cli_eval.js +532 -0
  21. package/dist/cjs/cli/utils/envs.js +116 -0
  22. package/dist/cjs/cli/utils/evals.js +137 -0
  23. package/dist/cjs/cli/utils/logs.js +150 -0
  24. package/dist/cjs/code_executors/agent_engine_sandbox_code_executor.js +7 -2
  25. package/dist/cjs/code_executors/code_execution_utils.js +48 -16
  26. package/dist/cjs/code_executors/code_executor_context.js +6 -2
  27. package/dist/cjs/code_executors/container_code_executor.js +27 -16
  28. package/dist/cjs/code_executors/unsafe_local_code_executor.js +6 -1
  29. package/dist/cjs/common.js +61 -0
  30. package/dist/cjs/context/summarizers/llm_summarizer.js +12 -10
  31. package/dist/cjs/context/token_based_context_compactor.js +2 -1
  32. package/dist/cjs/errors/input_validation_error.js +3 -2
  33. package/dist/cjs/events/event.js +4 -2
  34. package/dist/cjs/examples/example_util.js +23 -2
  35. package/dist/cjs/flows/llm_flows/audio_transcriber.js +170 -0
  36. package/dist/cjs/index.js +104 -1
  37. package/dist/cjs/integrations/agent_registry/helpers.js +1 -1
  38. package/dist/cjs/models/gemini_llm_connection.js +16 -8
  39. package/dist/cjs/models/google_llm.js +13 -16
  40. package/dist/cjs/models/llm_response.js +9 -1
  41. package/dist/cjs/models/registry.js +1 -1
  42. package/dist/cjs/models/routed_llm.js +9 -8
  43. package/dist/cjs/planners/plan_re_act_planner.js +1 -1
  44. package/dist/cjs/plugins/base_plugin.js +13 -23
  45. package/dist/cjs/runner/in_memory_runner.js +6 -11
  46. package/dist/cjs/runner/runner.js +105 -33
  47. package/dist/cjs/sessions/base_session_service.js +14 -8
  48. package/dist/cjs/sessions/database_session_service.js +50 -28
  49. package/dist/cjs/sessions/db/operations.js +1 -1
  50. package/dist/cjs/sessions/in_memory_session_service.js +3 -1
  51. package/dist/cjs/sessions/stale_session_error.js +59 -0
  52. package/dist/cjs/sessions/state.js +8 -4
  53. package/dist/cjs/sessions/vertex_ai_session_service.js +34 -15
  54. package/dist/cjs/skills/loader.js +52 -18
  55. package/dist/cjs/telemetry/setup.js +0 -1
  56. package/dist/cjs/telemetry/tracing.js +147 -73
  57. package/dist/cjs/tools/agent_tool.js +44 -0
  58. package/dist/cjs/tools/apihub_tool/apihub_toolset.js +137 -0
  59. package/dist/cjs/tools/apihub_tool/clients/apihub_client.js +272 -0
  60. package/dist/cjs/tools/apihub_tool/clients/secret_client.js +148 -0
  61. package/dist/cjs/tools/apihub_tool/clients/service_account.js +48 -0
  62. package/dist/cjs/tools/application_integration_tool/application_integration_toolset.js +263 -0
  63. package/dist/cjs/tools/application_integration_tool/clients/cloud_request.js +133 -0
  64. package/dist/cjs/tools/application_integration_tool/clients/connections_client.js +671 -0
  65. package/dist/cjs/tools/application_integration_tool/clients/integration_client.js +223 -0
  66. package/dist/cjs/tools/application_integration_tool/integration_connector_tool.js +184 -0
  67. package/dist/cjs/tools/example_tool.js +10 -0
  68. package/dist/cjs/tools/function_tool.js +319 -0
  69. package/dist/cjs/tools/google_api_tool/google_api_tool.js +100 -0
  70. package/dist/cjs/tools/google_api_tool/google_api_toolset.js +173 -0
  71. package/dist/cjs/tools/google_api_tool/google_api_toolsets.js +124 -0
  72. package/dist/cjs/tools/google_api_tool/googleapi_to_openapi_converter.js +440 -0
  73. package/dist/cjs/tools/google_api_tool/index.js +61 -0
  74. package/dist/cjs/tools/load_artifacts_tool.js +12 -6
  75. package/dist/cjs/tools/load_memory_tool.js +12 -10
  76. package/dist/cjs/tools/mcp/index.js +12 -0
  77. package/dist/cjs/tools/mcp/mcp_session_manager.js +25 -0
  78. package/dist/cjs/tools/mcp/mcp_toolset.js +1 -14
  79. package/dist/cjs/tools/openapi_tool/auth/auth_helpers.js +1 -2
  80. package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +46 -2
  81. package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/oauth2_exchanger.js +4 -3
  82. package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +94 -10
  83. package/dist/cjs/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +20 -6
  84. package/dist/cjs/tools/openapi_tool/openapi_spec_parser/operation_parser.js +17 -6
  85. package/dist/cjs/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +14 -2
  86. package/dist/cjs/tools/openapi_tool/openapi_toolset.js +7 -13
  87. package/dist/cjs/tools/openapi_tool/rest_api_tool.js +17 -1
  88. package/dist/cjs/tools/retrieval/base_retrieval_tool.js +18 -3
  89. package/dist/cjs/tools/toolbox_toolset.js +174 -0
  90. package/dist/cjs/tools/webmcp/webmcp_toolset.js +1 -14
  91. package/dist/cjs/utils/client_labels.js +19 -2
  92. package/dist/cjs/utils/env_aware_utils.js +6 -8
  93. package/dist/cjs/utils/error_utils.js +11 -11
  94. package/dist/cjs/utils/failover_utils.js +1 -1
  95. package/dist/cjs/utils/file_extension_utils.js +11 -0
  96. package/dist/cjs/utils/file_utils.js +2 -24
  97. package/dist/cjs/utils/gemini_schema_util.js +28 -7
  98. package/dist/cjs/utils/json_utils.js +49 -0
  99. package/dist/cjs/utils/live_connection_utils.js +4 -5
  100. package/dist/cjs/utils/logger_node.js +11 -1
  101. package/dist/cjs/utils/object_notation_utils.js +6 -3
  102. package/dist/cjs/utils/output_schema_utils.js +5 -2
  103. package/dist/cjs/utils/streaming_utils.js +12 -12
  104. package/dist/cjs/utils/task.js +1 -1
  105. package/dist/cjs/version.js +1 -1
  106. package/dist/esm/a2a/a2a_remote_agent.js +4 -1
  107. package/dist/esm/a2a/agent_card.js +103 -27
  108. package/dist/esm/a2a/agent_to_a2a.js +5 -2
  109. package/dist/esm/agents/agent_engine_client.js +144 -0
  110. package/dist/esm/agents/base_agent.js +20 -4
  111. package/dist/esm/agents/functions.js +226 -25
  112. package/dist/esm/agents/instructions.js +6 -2
  113. package/dist/esm/agents/invocation_context.js +24 -4
  114. package/dist/esm/agents/langgraph_agent.js +123 -0
  115. package/dist/esm/agents/llm_agent.js +204 -110
  116. package/dist/esm/agents/processors/basic_llm_request_processor.js +1 -1
  117. package/dist/esm/agents/processors/code_execution_request_processor.js +21 -8
  118. package/dist/esm/agents/processors/content_processor_utils.js +38 -10
  119. package/dist/esm/agents/processors/content_request_processor.js +34 -2
  120. package/dist/esm/agents/processors/instructions_llm_request_processor.js +1 -1
  121. package/dist/esm/agents/processors/nl_planning_processor.js +12 -3
  122. package/dist/esm/artifacts/in_memory_artifact_service.js +14 -0
  123. package/dist/esm/auth/auth_handler.js +37 -5
  124. package/dist/esm/auth/auth_schemes.js +8 -0
  125. package/dist/esm/cli/cli_eval.js +510 -0
  126. package/dist/esm/cli/utils/envs.js +78 -0
  127. package/dist/esm/cli/utils/evals.js +109 -0
  128. package/dist/esm/cli/utils/logs.js +111 -0
  129. package/dist/esm/code_executors/agent_engine_sandbox_code_executor.js +7 -2
  130. package/dist/esm/code_executors/code_execution_utils.js +46 -16
  131. package/dist/esm/code_executors/code_executor_context.js +5 -2
  132. package/dist/esm/code_executors/container_code_executor.js +27 -16
  133. package/dist/esm/code_executors/unsafe_local_code_executor.js +6 -1
  134. package/dist/esm/common.js +65 -4
  135. package/dist/esm/context/summarizers/llm_summarizer.js +12 -10
  136. package/dist/esm/context/token_based_context_compactor.js +2 -1
  137. package/dist/esm/errors/input_validation_error.js +3 -2
  138. package/dist/esm/events/event.js +4 -2
  139. package/dist/esm/examples/example_util.js +21 -1
  140. package/dist/esm/flows/llm_flows/audio_transcriber.js +142 -0
  141. package/dist/esm/index.js +114 -2
  142. package/dist/esm/integrations/agent_registry/helpers.js +1 -1
  143. package/dist/esm/models/gemini_llm_connection.js +16 -8
  144. package/dist/esm/models/google_llm.js +14 -17
  145. package/dist/esm/models/llm_response.js +9 -1
  146. package/dist/esm/models/registry.js +1 -1
  147. package/dist/esm/models/routed_llm.js +9 -8
  148. package/dist/esm/planners/plan_re_act_planner.js +1 -1
  149. package/dist/esm/plugins/base_plugin.js +13 -23
  150. package/dist/esm/runner/in_memory_runner.js +6 -11
  151. package/dist/esm/runner/runner.js +105 -33
  152. package/dist/esm/sessions/base_session_service.js +12 -7
  153. package/dist/esm/sessions/database_session_service.js +49 -28
  154. package/dist/esm/sessions/db/operations.js +1 -1
  155. package/dist/esm/sessions/in_memory_session_service.js +3 -1
  156. package/dist/esm/sessions/stale_session_error.js +31 -0
  157. package/dist/esm/sessions/state.js +8 -4
  158. package/dist/esm/sessions/vertex_ai_session_service.js +34 -15
  159. package/dist/esm/skills/loader.js +51 -17
  160. package/dist/esm/telemetry/setup.js +1 -2
  161. package/dist/esm/telemetry/tracing.js +151 -74
  162. package/dist/esm/tools/agent_tool.js +44 -0
  163. package/dist/esm/tools/apihub_tool/apihub_toolset.js +101 -0
  164. package/dist/esm/tools/apihub_tool/clients/apihub_client.js +244 -0
  165. package/dist/esm/tools/apihub_tool/clients/secret_client.js +132 -0
  166. package/dist/esm/tools/apihub_tool/clients/service_account.js +21 -0
  167. package/dist/esm/tools/application_integration_tool/application_integration_toolset.js +245 -0
  168. package/dist/esm/tools/application_integration_tool/clients/cloud_request.js +103 -0
  169. package/dist/esm/tools/application_integration_tool/clients/connections_client.js +629 -0
  170. package/dist/esm/tools/application_integration_tool/clients/integration_client.js +219 -0
  171. package/dist/esm/tools/application_integration_tool/integration_connector_tool.js +158 -0
  172. package/dist/esm/tools/example_tool.js +13 -1
  173. package/dist/esm/tools/function_tool.js +316 -0
  174. package/dist/esm/tools/google_api_tool/google_api_tool.js +73 -0
  175. package/dist/esm/tools/google_api_tool/google_api_toolset.js +146 -0
  176. package/dist/esm/tools/google_api_tool/google_api_toolsets.js +94 -0
  177. package/dist/esm/tools/google_api_tool/googleapi_to_openapi_converter.js +393 -0
  178. package/dist/esm/tools/google_api_tool/index.js +31 -0
  179. package/dist/esm/tools/load_artifacts_tool.js +10 -5
  180. package/dist/esm/tools/load_memory_tool.js +12 -10
  181. package/dist/esm/tools/mcp/index.js +6 -0
  182. package/dist/esm/tools/mcp/mcp_session_manager.js +25 -0
  183. package/dist/esm/tools/mcp/mcp_toolset.js +1 -14
  184. package/dist/esm/tools/openapi_tool/auth/auth_helpers.js +1 -2
  185. package/dist/esm/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +50 -3
  186. package/dist/esm/tools/openapi_tool/auth/credential_exchangers/oauth2_exchanger.js +4 -3
  187. package/dist/esm/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +94 -10
  188. package/dist/esm/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +20 -6
  189. package/dist/esm/tools/openapi_tool/openapi_spec_parser/operation_parser.js +17 -6
  190. package/dist/esm/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +15 -2
  191. package/dist/esm/tools/openapi_tool/openapi_toolset.js +6 -12
  192. package/dist/esm/tools/openapi_tool/rest_api_tool.js +17 -1
  193. package/dist/esm/tools/retrieval/base_retrieval_tool.js +16 -2
  194. package/dist/esm/tools/toolbox_toolset.js +148 -0
  195. package/dist/esm/tools/webmcp/webmcp_toolset.js +1 -14
  196. package/dist/esm/utils/client_labels.js +19 -2
  197. package/dist/esm/utils/env_aware_utils.js +6 -8
  198. package/dist/esm/utils/error_utils.js +9 -10
  199. package/dist/esm/utils/failover_utils.js +1 -1
  200. package/dist/esm/utils/file_extension_utils.js +11 -0
  201. package/dist/esm/utils/file_utils.js +2 -23
  202. package/dist/esm/utils/gemini_schema_util.js +27 -7
  203. package/dist/esm/utils/json_utils.js +21 -0
  204. package/dist/esm/utils/live_connection_utils.js +4 -5
  205. package/dist/esm/utils/logger_node.js +11 -1
  206. package/dist/esm/utils/object_notation_utils.js +4 -2
  207. package/dist/esm/utils/output_schema_utils.js +5 -2
  208. package/dist/esm/utils/streaming_utils.js +11 -11
  209. package/dist/esm/utils/task.js +1 -1
  210. package/dist/esm/version.js +1 -1
  211. package/dist/types/a2a/a2a_remote_agent.d.ts +9 -0
  212. package/dist/types/a2a/agent_card.d.ts +44 -1
  213. package/dist/types/a2a/agent_to_a2a.d.ts +9 -0
  214. package/dist/types/a2a/index.d.ts +1 -0
  215. package/dist/types/agents/agent_engine_client.d.ts +37 -0
  216. package/dist/types/agents/base_agent.d.ts +12 -0
  217. package/dist/types/agents/functions.d.ts +33 -1
  218. package/dist/types/agents/invocation_context.d.ts +20 -1
  219. package/dist/types/agents/langgraph_agent.d.ts +153 -0
  220. package/dist/types/agents/llm_agent.d.ts +5 -1
  221. package/dist/types/agents/processors/content_processor_utils.d.ts +4 -2
  222. package/dist/types/agents/processors/nl_planning_processor.d.ts +2 -1
  223. package/dist/types/auth/auth_handler.d.ts +28 -1
  224. package/dist/types/auth/auth_schemes.d.ts +13 -0
  225. package/dist/types/cli/cli_eval.d.ts +173 -0
  226. package/dist/types/cli/utils/envs.d.ts +23 -0
  227. package/dist/types/cli/utils/evals.d.ts +47 -0
  228. package/dist/types/cli/utils/logs.d.ts +38 -0
  229. package/dist/types/code_executors/code_execution_utils.d.ts +39 -0
  230. package/dist/types/code_executors/code_executor_context.d.ts +1 -0
  231. package/dist/types/code_executors/container_code_executor.d.ts +17 -5
  232. package/dist/types/common.d.ts +24 -5
  233. package/dist/types/errors/input_validation_error.d.ts +2 -1
  234. package/dist/types/events/event.d.ts +4 -0
  235. package/dist/types/examples/example_util.d.ts +17 -0
  236. package/dist/types/flows/llm_flows/audio_transcriber.d.ts +85 -0
  237. package/dist/types/index.d.ts +19 -2
  238. package/dist/types/models/gemini_llm_connection.d.ts +6 -7
  239. package/dist/types/models/routed_llm.d.ts +1 -1
  240. package/dist/types/plugins/base_plugin.d.ts +0 -10
  241. package/dist/types/runner/in_memory_runner.d.ts +2 -1
  242. package/dist/types/runner/runner.d.ts +34 -0
  243. package/dist/types/sessions/base_session_service.d.ts +5 -0
  244. package/dist/types/sessions/database_session_service.d.ts +17 -1
  245. package/dist/types/sessions/stale_session_error.d.ts +21 -0
  246. package/dist/types/sessions/state.d.ts +5 -1
  247. package/dist/types/sessions/vertex_ai_session_service.d.ts +8 -0
  248. package/dist/types/skills/loader.d.ts +3 -2
  249. package/dist/types/skills/skill.d.ts +1 -1
  250. package/dist/types/telemetry/tracing.d.ts +20 -4
  251. package/dist/types/tools/apihub_tool/apihub_toolset.d.ts +115 -0
  252. package/dist/types/tools/apihub_tool/clients/apihub_client.d.ts +142 -0
  253. package/dist/types/tools/apihub_tool/clients/secret_client.d.ts +55 -0
  254. package/dist/types/tools/apihub_tool/clients/service_account.d.ts +11 -0
  255. package/dist/types/tools/application_integration_tool/application_integration_toolset.d.ts +109 -0
  256. package/dist/types/tools/application_integration_tool/clients/cloud_request.d.ts +53 -0
  257. package/dist/types/tools/application_integration_tool/clients/connections_client.d.ts +229 -0
  258. package/dist/types/tools/application_integration_tool/clients/integration_client.d.ts +72 -0
  259. package/dist/types/tools/application_integration_tool/integration_connector_tool.d.ts +70 -0
  260. package/dist/types/tools/base_toolset.d.ts +6 -5
  261. package/dist/types/tools/example_tool.d.ts +10 -0
  262. package/dist/types/tools/function_tool.d.ts +32 -0
  263. package/dist/types/tools/google_api_tool/google_api_tool.d.ts +37 -0
  264. package/dist/types/tools/google_api_tool/google_api_toolset.d.ts +55 -0
  265. package/dist/types/tools/google_api_tool/google_api_toolsets.d.ts +48 -0
  266. package/dist/types/tools/google_api_tool/googleapi_to_openapi_converter.d.ts +165 -0
  267. package/dist/types/tools/google_api_tool/index.d.ts +10 -0
  268. package/dist/types/tools/load_artifacts_tool.d.ts +14 -1
  269. package/dist/types/tools/load_memory_tool.d.ts +23 -1
  270. package/dist/types/tools/mcp/index.d.ts +3 -0
  271. package/dist/types/tools/mcp/mcp_session_manager.d.ts +34 -1
  272. package/dist/types/tools/mcp/mcp_toolset.d.ts +15 -0
  273. package/dist/types/tools/openapi_tool/auth/auth_helpers.d.ts +19 -0
  274. package/dist/types/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.d.ts +18 -1
  275. package/dist/types/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.d.ts +12 -0
  276. package/dist/types/tools/openapi_tool/openapi_spec_parser/operation_parser.d.ts +8 -0
  277. package/dist/types/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.d.ts +2 -1
  278. package/dist/types/tools/openapi_tool/openapi_toolset.d.ts +5 -0
  279. package/dist/types/tools/openapi_tool/rest_api_tool.d.ts +10 -0
  280. package/dist/types/tools/retrieval/base_retrieval_tool.d.ts +15 -0
  281. package/dist/types/tools/toolbox_toolset.d.ts +159 -0
  282. package/dist/types/utils/client_labels.d.ts +2 -1
  283. package/dist/types/utils/env_aware_utils.d.ts +18 -2
  284. package/dist/types/utils/error_utils.d.ts +7 -0
  285. package/dist/types/utils/file_utils.d.ts +6 -1
  286. package/dist/types/utils/gemini_schema_util.d.ts +9 -2
  287. package/dist/types/utils/json_utils.d.ts +11 -0
  288. package/dist/types/utils/object_notation_utils.d.ts +7 -0
  289. package/dist/types/utils/output_schema_utils.d.ts +3 -2
  290. package/dist/types/utils/simple_zod_to_json.d.ts +1 -2
  291. package/dist/types/utils/streaming_utils.d.ts +11 -4
  292. package/dist/types/version.d.ts +1 -1
  293. package/dist/web/index_web.js +117 -110
  294. package/dist/web/index_web.js.map +4 -4
  295. package/package.json +38 -26
  296. package/dist/cjs/models/gemini_continuation.js +0 -232
  297. package/dist/esm/models/gemini_continuation.js +0 -205
  298. package/dist/types/models/gemini_continuation.d.ts +0 -59
@@ -38,7 +38,7 @@ function removeClientFunctionCallId(content) {
38
38
  }
39
39
  }
40
40
  __name(removeClientFunctionCallId, "removeClientFunctionCallId");
41
- function getContents(events, agentName, currentBranch, currentIsolationScope) {
41
+ function getContents(events, agentName, currentBranch, currentIsolationScope, preserveFunctionCallIds = false) {
42
42
  const filteredEvents = [];
43
43
  for (const event of events) {
44
44
  if (!isEventVisibleInIsolationScope(event, currentIsolationScope)) {
@@ -51,16 +51,23 @@ function getContents(events, agentName, currentBranch, currentIsolationScope) {
51
51
  if (!shouldIncludeEventInContext(event, currentBranch, currentIsolationScope)) {
52
52
  continue;
53
53
  }
54
- filteredEvents.push(
55
- isEventFromAnotherAgent(agentName, event) ? convertForeignEvent(event) : event
56
- );
54
+ if (isEventFromAnotherAgent(agentName, event)) {
55
+ const converted = convertForeignEvent(event);
56
+ if (converted) {
57
+ filteredEvents.push(converted);
58
+ }
59
+ } else {
60
+ filteredEvents.push(event);
61
+ }
57
62
  }
58
63
  let resultEvents = rearrangeEventsForLatestFunctionResponse(filteredEvents);
59
64
  resultEvents = rearrangeEventsForAsyncFunctionResponsesInHistory(resultEvents);
60
65
  const contents = [];
61
66
  for (const event of resultEvents) {
62
67
  const content = cloneDeep(event.content);
63
- removeClientFunctionCallId(content);
68
+ if (!preserveFunctionCallIds) {
69
+ removeClientFunctionCallId(content);
70
+ }
64
71
  contents.push(content);
65
72
  }
66
73
  return contents;
@@ -93,18 +100,20 @@ function isRequestInputEvent(event) {
93
100
  return false;
94
101
  }
95
102
  __name(isRequestInputEvent, "isRequestInputEvent");
96
- function getCurrentTurnContents(events, agentName, currentBranch, currentIsolationScope) {
103
+ function getCurrentTurnContents(events, agentName, currentBranch, currentIsolationScope, preserveFunctionCallIds = false) {
104
+ var _a;
97
105
  for (let i = events.length - 1; i >= 0; i--) {
98
106
  const event = events[i];
99
107
  if (!shouldIncludeEventInContext(event, currentBranch, currentIsolationScope)) {
100
108
  continue;
101
109
  }
102
- if (event.author === "user" || isEventFromAnotherAgent(agentName, event)) {
110
+ if (event.author === "user" || isEventFromAnotherAgent(agentName, event) && ((_a = event.content.parts) == null ? void 0 : _a.some(isVisibleForeignPart))) {
103
111
  return getContents(
104
112
  events.slice(turnStart(events, i)),
105
113
  agentName,
106
114
  currentBranch,
107
- currentIsolationScope
115
+ currentIsolationScope,
116
+ preserveFunctionCallIds
108
117
  );
109
118
  }
110
119
  }
@@ -169,6 +178,13 @@ function isEventFromAnotherAgent(agentName, event) {
169
178
  return !!agentName && event.author !== agentName && event.author !== "user";
170
179
  }
171
180
  __name(isEventFromAnotherAgent, "isEventFromAnotherAgent");
181
+ function isVisibleForeignPart(part) {
182
+ if (part.functionCall || part.functionResponse) {
183
+ return true;
184
+ }
185
+ return !part.thought && part.text !== "";
186
+ }
187
+ __name(isVisibleForeignPart, "isVisibleForeignPart");
172
188
  function convertForeignEvent(event) {
173
189
  var _a, _b, _c, _d, _e, _f;
174
190
  if (!((_b = (_a = event.content) == null ? void 0 : _a.parts) == null ? void 0 : _b.length)) {
@@ -183,7 +199,10 @@ function convertForeignEvent(event) {
183
199
  ]
184
200
  };
185
201
  for (const part of event.content.parts) {
186
- if (part.text && !part.thought) {
202
+ if (!isVisibleForeignPart(part)) {
203
+ continue;
204
+ }
205
+ if (part.text) {
187
206
  (_c = content.parts) == null ? void 0 : _c.push({
188
207
  text: `[${event.author}] said: ${part.text}`
189
208
  });
@@ -200,9 +219,18 @@ function convertForeignEvent(event) {
200
219
  )}`
201
220
  });
202
221
  } else {
203
- (_f = content.parts) == null ? void 0 : _f.push(cloneDeep(part));
222
+ const {
223
+ thought: _thought,
224
+ thoughtSignature: _thoughtSignature,
225
+ ...rest
226
+ } = part;
227
+ (_f = content.parts) == null ? void 0 : _f.push(cloneDeep(rest));
204
228
  }
205
229
  }
230
+ const preambleOnly = content.parts.length === 1;
231
+ if (preambleOnly) {
232
+ return void 0;
233
+ }
206
234
  return createEvent({
207
235
  invocationId: event.invocationId,
208
236
  author: "user",
@@ -8,11 +8,37 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
8
8
  * SPDX-License-Identifier: Apache-2.0
9
9
  */
10
10
  import { getActiveEvents } from "../../context/compaction_utils.js";
11
+ import { isBaseLlm } from "../../models/base_llm.js";
11
12
  import { isLlmAgent } from "../llm_agent.js";
12
13
  import {
13
14
  getContents,
14
15
  getCurrentTurnContents
15
16
  } from "./content_processor_utils.js";
17
+ const CLAUDE_MODEL_SYMBOL = /* @__PURE__ */ Symbol.for("google.adk.claudeModel");
18
+ const CLAUDE_MODEL_NAME_PATTERN = /^claude-/i;
19
+ function isClaudeModelInstance(model) {
20
+ return CLAUDE_MODEL_SYMBOL in model && model[CLAUDE_MODEL_SYMBOL] === true || CLAUDE_MODEL_NAME_PATTERN.test(model.model);
21
+ }
22
+ __name(isClaudeModelInstance, "isClaudeModelInstance");
23
+ function shouldPreserveFunctionCallIds(agent, llmRequest) {
24
+ if (llmRequest.model && CLAUDE_MODEL_NAME_PATTERN.test(llmRequest.model)) {
25
+ return true;
26
+ }
27
+ let current = agent;
28
+ while (current) {
29
+ if (isLlmAgent(current)) {
30
+ if (isBaseLlm(current.model)) {
31
+ return isClaudeModelInstance(current.model);
32
+ }
33
+ if (typeof current.model === "string" && current.model.length > 0) {
34
+ return CLAUDE_MODEL_NAME_PATTERN.test(current.model);
35
+ }
36
+ }
37
+ current = current.parentAgent;
38
+ }
39
+ return false;
40
+ }
41
+ __name(shouldPreserveFunctionCallIds, "shouldPreserveFunctionCallIds");
16
42
  const _ContentRequestProcessor = class _ContentRequestProcessor {
17
43
  /**
18
44
  * Fills {@link LlmRequest.contents} based on the session event history and
@@ -31,19 +57,25 @@ const _ContentRequestProcessor = class _ContentRequestProcessor {
31
57
  invocationContext.session.events,
32
58
  invocationContext.isolationScope
33
59
  );
60
+ const preserveFunctionCallIds = shouldPreserveFunctionCallIds(
61
+ agent,
62
+ llmRequest
63
+ );
34
64
  if (agent.includeContents === "default") {
35
65
  llmRequest.contents = getContents(
36
66
  events,
37
67
  agent.name,
38
68
  invocationContext.branch,
39
- invocationContext.isolationScope
69
+ invocationContext.isolationScope,
70
+ preserveFunctionCallIds
40
71
  );
41
72
  } else {
42
73
  llmRequest.contents = getCurrentTurnContents(
43
74
  events,
44
75
  agent.name,
45
76
  invocationContext.branch,
46
- invocationContext.isolationScope
77
+ invocationContext.isolationScope,
78
+ preserveFunctionCallIds
47
79
  );
48
80
  }
49
81
  return;
@@ -51,7 +51,7 @@ const _InstructionsLlmRequestProcessor = class _InstructionsLlmRequestProcessor
51
51
  }
52
52
  appendInstructions(llmRequest, [instructionWithState]);
53
53
  }
54
- if (agent.outputSchema && ((_a = agent.tools) == null ? void 0 : _a.length) && !canUseOutputSchemaWithTools(agent.canonicalModel.model)) {
54
+ if (agent.outputSchema && ((_a = agent.tools) == null ? void 0 : _a.length) && !canUseOutputSchemaWithTools(agent.canonicalModel)) {
55
55
  appendInstructions(llmRequest, [
56
56
  'To output the final result, you must call the "set_model_response" function with the appropriate values. Do not output anything else.'
57
57
  ]);
@@ -7,6 +7,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
7
7
  * Copyright 2026 Google LLC
8
8
  * SPDX-License-Identifier: Apache-2.0
9
9
  */
10
+ import { createEvent } from "../../events/event.js";
10
11
  import { appendInstructions } from "../../models/llm_request.js";
11
12
  import { isBasePlanner } from "../../planners/base_planner.js";
12
13
  import { isBuiltInPlanner } from "../../planners/built_in_planner.js";
@@ -59,20 +60,28 @@ const _NlPlanningRequestProcessor = class _NlPlanningRequestProcessor extends Ba
59
60
  __name(_NlPlanningRequestProcessor, "NlPlanningRequestProcessor");
60
61
  let NlPlanningRequestProcessor = _NlPlanningRequestProcessor;
61
62
  const _NlPlanningResponseProcessor = class _NlPlanningResponseProcessor extends BaseLlmResponseProcessor {
62
- // eslint-disable-next-line require-yield -- this processor only rewrites the response and has no event to emit
63
63
  async *runAsync(invocationContext, llmResponse) {
64
- var _a, _b;
64
+ var _a, _b, _c;
65
65
  const planner = getPlanner(invocationContext);
66
66
  if (!planner || !((_b = (_a = llmResponse.content) == null ? void 0 : _a.parts) == null ? void 0 : _b.length)) {
67
67
  return;
68
68
  }
69
+ const callbackContext = new Context({ invocationContext });
69
70
  const processedParts = planner.processPlanningResponse(
70
- new Context({ invocationContext }),
71
+ callbackContext,
71
72
  llmResponse.content.parts
72
73
  );
73
74
  if (processedParts !== void 0) {
74
75
  llmResponse.content = { ...llmResponse.content, parts: processedParts };
75
76
  }
77
+ if (callbackContext.state.hasDelta()) {
78
+ yield createEvent({
79
+ invocationId: invocationContext.invocationId,
80
+ author: (_c = invocationContext.agent) == null ? void 0 : _c.name,
81
+ branch: invocationContext.branch,
82
+ actions: callbackContext.eventActions
83
+ });
84
+ }
76
85
  }
77
86
  };
78
87
  __name(_NlPlanningResponseProcessor, "NlPlanningResponseProcessor");
@@ -36,6 +36,13 @@ const _InMemoryArtifactService = class _InMemoryArtifactService {
36
36
  const version = this.artifacts[path].length;
37
37
  const metadata = {
38
38
  version,
39
+ canonicalUri: getCanonicalUri(
40
+ appName,
41
+ userId,
42
+ sessionId,
43
+ filename,
44
+ version
45
+ ),
39
46
  customMetadata
40
47
  };
41
48
  if (!artifact.inlineData && artifact.text === void 0) {
@@ -162,6 +169,13 @@ function artifactPrefix(scope, ...parts) {
162
169
  return `${[scope, ...parts].map(encodeURIComponent).join("/")}/`;
163
170
  }
164
171
  __name(artifactPrefix, "artifactPrefix");
172
+ function getCanonicalUri(appName, userId, sessionId, filename, version) {
173
+ if (fileHasUserNamespace(filename)) {
174
+ return `memory://apps/${appName}/users/${userId}/artifacts/${filename}/versions/${version}`;
175
+ }
176
+ return `memory://apps/${appName}/users/${userId}/sessions/${sessionId}/artifacts/${filename}/versions/${version}`;
177
+ }
178
+ __name(getCanonicalUri, "getCanonicalUri");
165
179
  function fileHasUserNamespace(filename) {
166
180
  return filename.startsWith("user:");
167
181
  }
@@ -7,6 +7,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
7
7
  * Copyright 2025 Google LLC
8
8
  * SPDX-License-Identifier: Apache-2.0
9
9
  */
10
+ import { cloneDeep } from "lodash-es";
10
11
  import { randomUUID } from "../utils/env_aware_utils.js";
11
12
  import { OAuth2CredentialExchanger } from "./oauth2/oauth2_credential_exchanger.js";
12
13
  import {
@@ -15,6 +16,11 @@ import {
15
16
  } from "./oauth2/oauth2_utils.js";
16
17
  const S256_CODE_CHALLENGE_METHOD = "S256";
17
18
  const _AuthHandler = class _AuthHandler {
19
+ /**
20
+ * @param authConfig The auth config this handler reads. It stays readable
21
+ * and replaceable after construction; each method reads the current
22
+ * value.
23
+ */
18
24
  constructor(authConfig) {
19
25
  this.authConfig = authConfig;
20
26
  }
@@ -47,14 +53,32 @@ const _AuthHandler = class _AuthHandler {
47
53
  state.set(credentialKey, exchangedCredential.credential);
48
54
  }
49
55
  }
56
+ /**
57
+ * Builds the auth request to send to the client.
58
+ *
59
+ * The result is always a new object, and its `exchangedAuthCredential` is
60
+ * never an object held by {@link authConfig}. A caller that fills in the
61
+ * response, for example `exchangedAuthCredential.oauth2.authResponseUri`,
62
+ * therefore leaves the handler's credentials unchanged.
63
+ *
64
+ * When the config is returned as is, because the scheme is not OAuth2 or
65
+ * OpenID Connect or the exchanged credential already has an auth URI, the
66
+ * result is a deep copy of the whole config. In the other branches only the
67
+ * exchanged credential is guaranteed independent: `authScheme` and
68
+ * `rawAuthCredential` are the handler's own objects.
69
+ *
70
+ * @return The auth config to request from the client.
71
+ * @throws Error: If an OAuth2 or OpenID Connect scheme has no raw
72
+ * credential, no `oauth2` on it, or no client ID and secret.
73
+ */
50
74
  generateAuthRequest() {
51
75
  var _a, _b;
52
76
  const authSchemeType = this.authConfig.authScheme.type;
53
77
  if (!["oauth2", "openIdConnect"].includes(authSchemeType)) {
54
- return this.authConfig;
78
+ return cloneDeep(this.authConfig);
55
79
  }
56
80
  if ((_b = (_a = this.authConfig.exchangedAuthCredential) == null ? void 0 : _a.oauth2) == null ? void 0 : _b.authUri) {
57
- return this.authConfig;
81
+ return cloneDeep(this.authConfig);
58
82
  }
59
83
  if (!this.authConfig.rawAuthCredential) {
60
84
  throw new Error(`Auth Scheme ${authSchemeType} requires authCredential.`);
@@ -69,7 +93,7 @@ const _AuthHandler = class _AuthHandler {
69
93
  credentialKey: this.authConfig.credentialKey,
70
94
  authScheme: this.authConfig.authScheme,
71
95
  rawAuthCredential: this.authConfig.rawAuthCredential,
72
- exchangedAuthCredential: this.authConfig.rawAuthCredential
96
+ exchangedAuthCredential: cloneDeep(this.authConfig.rawAuthCredential)
73
97
  };
74
98
  }
75
99
  if (!this.authConfig.rawAuthCredential.oauth2.clientId || !this.authConfig.rawAuthCredential.oauth2.clientSecret) {
@@ -91,6 +115,10 @@ const _AuthHandler = class _AuthHandler {
91
115
  * challenge derived from the credential's code verifier, and the returned
92
116
  * credential carries the verifier the later token exchange must send.
93
117
  *
118
+ * The URI leaves out `redirect_uri` when the credential has no
119
+ * `redirectUri`, so the provider uses the redirect registered for the
120
+ * client, and leaves out `scope` when the scheme lists no scopes.
121
+ *
94
122
  * @return An AuthCredential object containing the auth URI and state.
95
123
  * @throws Error: If the authorization endpoint is not configured in the
96
124
  * auth scheme, or the credential requests a code challenge method other
@@ -134,9 +162,13 @@ const _AuthHandler = class _AuthHandler {
134
162
  const state = randomUUID();
135
163
  const url = new URL(authorizationEndpoint);
136
164
  url.searchParams.set("client_id", oauth2.clientId || "");
137
- url.searchParams.set("redirect_uri", oauth2.redirectUri || "");
165
+ if (oauth2.redirectUri) {
166
+ url.searchParams.set("redirect_uri", oauth2.redirectUri);
167
+ }
138
168
  url.searchParams.set("response_type", "code");
139
- url.searchParams.set("scope", scopes.join(" "));
169
+ if (scopes.length > 0) {
170
+ url.searchParams.set("scope", scopes.join(" "));
171
+ }
140
172
  url.searchParams.set("state", state);
141
173
  url.searchParams.set("access_type", "offline");
142
174
  url.searchParams.set("prompt", "consent");
@@ -7,6 +7,13 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
7
7
  * Copyright 2025 Google LLC
8
8
  * SPDX-License-Identifier: Apache-2.0
9
9
  */
10
+ var AuthSchemeType = /* @__PURE__ */ ((AuthSchemeType2) => {
11
+ AuthSchemeType2["API_KEY"] = "apiKey";
12
+ AuthSchemeType2["HTTP"] = "http";
13
+ AuthSchemeType2["OAUTH2"] = "oauth2";
14
+ AuthSchemeType2["OPEN_ID_CONNECT"] = "openIdConnect";
15
+ return AuthSchemeType2;
16
+ })(AuthSchemeType || {});
10
17
  var OAuthGrantType = /* @__PURE__ */ ((OAuthGrantType2) => {
11
18
  OAuthGrantType2["CLIENT_CREDENTIALS"] = "client_credentials";
12
19
  OAuthGrantType2["AUTHORIZATION_CODE"] = "authorization_code";
@@ -31,6 +38,7 @@ function getOAuthGrantTypeFromFlow(flow) {
31
38
  }
32
39
  __name(getOAuthGrantTypeFromFlow, "getOAuthGrantTypeFromFlow");
33
40
  export {
41
+ AuthSchemeType,
34
42
  OAuthGrantType,
35
43
  getOAuthGrantTypeFromFlow
36
44
  };