@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
@@ -56,7 +56,7 @@ function removeClientFunctionCallId(content) {
56
56
  }
57
57
  }
58
58
  __name(removeClientFunctionCallId, "removeClientFunctionCallId");
59
- function getContents(events, agentName, currentBranch, currentIsolationScope) {
59
+ function getContents(events, agentName, currentBranch, currentIsolationScope, preserveFunctionCallIds = false) {
60
60
  const filteredEvents = [];
61
61
  for (const event of events) {
62
62
  if (!(0, import_compaction_utils.isEventVisibleInIsolationScope)(event, currentIsolationScope)) {
@@ -69,16 +69,23 @@ function getContents(events, agentName, currentBranch, currentIsolationScope) {
69
69
  if (!shouldIncludeEventInContext(event, currentBranch, currentIsolationScope)) {
70
70
  continue;
71
71
  }
72
- filteredEvents.push(
73
- isEventFromAnotherAgent(agentName, event) ? convertForeignEvent(event) : event
74
- );
72
+ if (isEventFromAnotherAgent(agentName, event)) {
73
+ const converted = convertForeignEvent(event);
74
+ if (converted) {
75
+ filteredEvents.push(converted);
76
+ }
77
+ } else {
78
+ filteredEvents.push(event);
79
+ }
75
80
  }
76
81
  let resultEvents = rearrangeEventsForLatestFunctionResponse(filteredEvents);
77
82
  resultEvents = rearrangeEventsForAsyncFunctionResponsesInHistory(resultEvents);
78
83
  const contents = [];
79
84
  for (const event of resultEvents) {
80
85
  const content = (0, import_lodash_es.cloneDeep)(event.content);
81
- removeClientFunctionCallId(content);
86
+ if (!preserveFunctionCallIds) {
87
+ removeClientFunctionCallId(content);
88
+ }
82
89
  contents.push(content);
83
90
  }
84
91
  return contents;
@@ -111,18 +118,20 @@ function isRequestInputEvent(event) {
111
118
  return false;
112
119
  }
113
120
  __name(isRequestInputEvent, "isRequestInputEvent");
114
- function getCurrentTurnContents(events, agentName, currentBranch, currentIsolationScope) {
121
+ function getCurrentTurnContents(events, agentName, currentBranch, currentIsolationScope, preserveFunctionCallIds = false) {
122
+ var _a;
115
123
  for (let i = events.length - 1; i >= 0; i--) {
116
124
  const event = events[i];
117
125
  if (!shouldIncludeEventInContext(event, currentBranch, currentIsolationScope)) {
118
126
  continue;
119
127
  }
120
- if (event.author === "user" || isEventFromAnotherAgent(agentName, event)) {
128
+ if (event.author === "user" || isEventFromAnotherAgent(agentName, event) && ((_a = event.content.parts) == null ? void 0 : _a.some(isVisibleForeignPart))) {
121
129
  return getContents(
122
130
  events.slice(turnStart(events, i)),
123
131
  agentName,
124
132
  currentBranch,
125
- currentIsolationScope
133
+ currentIsolationScope,
134
+ preserveFunctionCallIds
126
135
  );
127
136
  }
128
137
  }
@@ -187,6 +196,13 @@ function isEventFromAnotherAgent(agentName, event) {
187
196
  return !!agentName && event.author !== agentName && event.author !== "user";
188
197
  }
189
198
  __name(isEventFromAnotherAgent, "isEventFromAnotherAgent");
199
+ function isVisibleForeignPart(part) {
200
+ if (part.functionCall || part.functionResponse) {
201
+ return true;
202
+ }
203
+ return !part.thought && part.text !== "";
204
+ }
205
+ __name(isVisibleForeignPart, "isVisibleForeignPart");
190
206
  function convertForeignEvent(event) {
191
207
  var _a, _b, _c, _d, _e, _f;
192
208
  if (!((_b = (_a = event.content) == null ? void 0 : _a.parts) == null ? void 0 : _b.length)) {
@@ -201,7 +217,10 @@ function convertForeignEvent(event) {
201
217
  ]
202
218
  };
203
219
  for (const part of event.content.parts) {
204
- if (part.text && !part.thought) {
220
+ if (!isVisibleForeignPart(part)) {
221
+ continue;
222
+ }
223
+ if (part.text) {
205
224
  (_c = content.parts) == null ? void 0 : _c.push({
206
225
  text: `[${event.author}] said: ${part.text}`
207
226
  });
@@ -218,9 +237,18 @@ function convertForeignEvent(event) {
218
237
  )}`
219
238
  });
220
239
  } else {
221
- (_f = content.parts) == null ? void 0 : _f.push((0, import_lodash_es.cloneDeep)(part));
240
+ const {
241
+ thought: _thought,
242
+ thoughtSignature: _thoughtSignature,
243
+ ...rest
244
+ } = part;
245
+ (_f = content.parts) == null ? void 0 : _f.push((0, import_lodash_es.cloneDeep)(rest));
222
246
  }
223
247
  }
248
+ const preambleOnly = content.parts.length === 1;
249
+ if (preambleOnly) {
250
+ return void 0;
251
+ }
224
252
  return (0, import_event.createEvent)({
225
253
  invocationId: event.invocationId,
226
254
  author: "user",
@@ -30,6 +30,7 @@ __export(content_request_processor_exports, {
30
30
  });
31
31
  module.exports = __toCommonJS(content_request_processor_exports);
32
32
  var import_compaction_utils = require("../../context/compaction_utils.js");
33
+ var import_base_llm = require("../../models/base_llm.js");
33
34
  var import_llm_agent = require("../llm_agent.js");
34
35
  var import_content_processor_utils = require("./content_processor_utils.js");
35
36
  /**
@@ -37,6 +38,31 @@ var import_content_processor_utils = require("./content_processor_utils.js");
37
38
  * Copyright 2025 Google LLC
38
39
  * SPDX-License-Identifier: Apache-2.0
39
40
  */
41
+ const CLAUDE_MODEL_SYMBOL = /* @__PURE__ */ Symbol.for("google.adk.claudeModel");
42
+ const CLAUDE_MODEL_NAME_PATTERN = /^claude-/i;
43
+ function isClaudeModelInstance(model) {
44
+ return CLAUDE_MODEL_SYMBOL in model && model[CLAUDE_MODEL_SYMBOL] === true || CLAUDE_MODEL_NAME_PATTERN.test(model.model);
45
+ }
46
+ __name(isClaudeModelInstance, "isClaudeModelInstance");
47
+ function shouldPreserveFunctionCallIds(agent, llmRequest) {
48
+ if (llmRequest.model && CLAUDE_MODEL_NAME_PATTERN.test(llmRequest.model)) {
49
+ return true;
50
+ }
51
+ let current = agent;
52
+ while (current) {
53
+ if ((0, import_llm_agent.isLlmAgent)(current)) {
54
+ if ((0, import_base_llm.isBaseLlm)(current.model)) {
55
+ return isClaudeModelInstance(current.model);
56
+ }
57
+ if (typeof current.model === "string" && current.model.length > 0) {
58
+ return CLAUDE_MODEL_NAME_PATTERN.test(current.model);
59
+ }
60
+ }
61
+ current = current.parentAgent;
62
+ }
63
+ return false;
64
+ }
65
+ __name(shouldPreserveFunctionCallIds, "shouldPreserveFunctionCallIds");
40
66
  const _ContentRequestProcessor = class _ContentRequestProcessor {
41
67
  /**
42
68
  * Fills {@link LlmRequest.contents} based on the session event history and
@@ -55,19 +81,25 @@ const _ContentRequestProcessor = class _ContentRequestProcessor {
55
81
  invocationContext.session.events,
56
82
  invocationContext.isolationScope
57
83
  );
84
+ const preserveFunctionCallIds = shouldPreserveFunctionCallIds(
85
+ agent,
86
+ llmRequest
87
+ );
58
88
  if (agent.includeContents === "default") {
59
89
  llmRequest.contents = (0, import_content_processor_utils.getContents)(
60
90
  events,
61
91
  agent.name,
62
92
  invocationContext.branch,
63
- invocationContext.isolationScope
93
+ invocationContext.isolationScope,
94
+ preserveFunctionCallIds
64
95
  );
65
96
  } else {
66
97
  llmRequest.contents = (0, import_content_processor_utils.getCurrentTurnContents)(
67
98
  events,
68
99
  agent.name,
69
100
  invocationContext.branch,
70
- invocationContext.isolationScope
101
+ invocationContext.isolationScope,
102
+ preserveFunctionCallIds
71
103
  );
72
104
  }
73
105
  return;
@@ -78,7 +78,7 @@ const _InstructionsLlmRequestProcessor = class _InstructionsLlmRequestProcessor
78
78
  }
79
79
  (0, import_llm_request.appendInstructions)(llmRequest, [instructionWithState]);
80
80
  }
81
- if (agent.outputSchema && ((_a = agent.tools) == null ? void 0 : _a.length) && !(0, import_output_schema_utils.canUseOutputSchemaWithTools)(agent.canonicalModel.model)) {
81
+ if (agent.outputSchema && ((_a = agent.tools) == null ? void 0 : _a.length) && !(0, import_output_schema_utils.canUseOutputSchemaWithTools)(agent.canonicalModel)) {
82
82
  (0, import_llm_request.appendInstructions)(llmRequest, [
83
83
  'To output the final result, you must call the "set_model_response" function with the appropriate values. Do not output anything else.'
84
84
  ]);
@@ -31,6 +31,7 @@ __export(nl_planning_processor_exports, {
31
31
  NlPlanningResponseProcessor: () => NlPlanningResponseProcessor
32
32
  });
33
33
  module.exports = __toCommonJS(nl_planning_processor_exports);
34
+ var import_event = require("../../events/event.js");
34
35
  var import_llm_request = require("../../models/llm_request.js");
35
36
  var import_base_planner = require("../../planners/base_planner.js");
36
37
  var import_built_in_planner = require("../../planners/built_in_planner.js");
@@ -85,20 +86,28 @@ const _NlPlanningRequestProcessor = class _NlPlanningRequestProcessor extends im
85
86
  __name(_NlPlanningRequestProcessor, "NlPlanningRequestProcessor");
86
87
  let NlPlanningRequestProcessor = _NlPlanningRequestProcessor;
87
88
  const _NlPlanningResponseProcessor = class _NlPlanningResponseProcessor extends import_base_llm_processor.BaseLlmResponseProcessor {
88
- // eslint-disable-next-line require-yield -- this processor only rewrites the response and has no event to emit
89
89
  async *runAsync(invocationContext, llmResponse) {
90
- var _a, _b;
90
+ var _a, _b, _c;
91
91
  const planner = getPlanner(invocationContext);
92
92
  if (!planner || !((_b = (_a = llmResponse.content) == null ? void 0 : _a.parts) == null ? void 0 : _b.length)) {
93
93
  return;
94
94
  }
95
+ const callbackContext = new import_context.Context({ invocationContext });
95
96
  const processedParts = planner.processPlanningResponse(
96
- new import_context.Context({ invocationContext }),
97
+ callbackContext,
97
98
  llmResponse.content.parts
98
99
  );
99
100
  if (processedParts !== void 0) {
100
101
  llmResponse.content = { ...llmResponse.content, parts: processedParts };
101
102
  }
103
+ if (callbackContext.state.hasDelta()) {
104
+ yield (0, import_event.createEvent)({
105
+ invocationId: invocationContext.invocationId,
106
+ author: (_c = invocationContext.agent) == null ? void 0 : _c.name,
107
+ branch: invocationContext.branch,
108
+ actions: callbackContext.eventActions
109
+ });
110
+ }
102
111
  }
103
112
  };
104
113
  __name(_NlPlanningResponseProcessor, "NlPlanningResponseProcessor");
@@ -63,6 +63,13 @@ const _InMemoryArtifactService = class _InMemoryArtifactService {
63
63
  const version = this.artifacts[path].length;
64
64
  const metadata = {
65
65
  version,
66
+ canonicalUri: getCanonicalUri(
67
+ appName,
68
+ userId,
69
+ sessionId,
70
+ filename,
71
+ version
72
+ ),
66
73
  customMetadata
67
74
  };
68
75
  if (!artifact.inlineData && artifact.text === void 0) {
@@ -189,6 +196,13 @@ function artifactPrefix(scope, ...parts) {
189
196
  return `${[scope, ...parts].map(encodeURIComponent).join("/")}/`;
190
197
  }
191
198
  __name(artifactPrefix, "artifactPrefix");
199
+ function getCanonicalUri(appName, userId, sessionId, filename, version) {
200
+ if (fileHasUserNamespace(filename)) {
201
+ return `memory://apps/${appName}/users/${userId}/artifacts/${filename}/versions/${version}`;
202
+ }
203
+ return `memory://apps/${appName}/users/${userId}/sessions/${sessionId}/artifacts/${filename}/versions/${version}`;
204
+ }
205
+ __name(getCanonicalUri, "getCanonicalUri");
192
206
  function fileHasUserNamespace(filename) {
193
207
  return filename.startsWith("user:");
194
208
  }
@@ -28,6 +28,7 @@ __export(auth_handler_exports, {
28
28
  AuthHandler: () => AuthHandler
29
29
  });
30
30
  module.exports = __toCommonJS(auth_handler_exports);
31
+ var import_lodash_es = require("lodash-es");
31
32
  var import_env_aware_utils = require("../utils/env_aware_utils.js");
32
33
  var import_oauth2_credential_exchanger = require("./oauth2/oauth2_credential_exchanger.js");
33
34
  var import_oauth2_utils = require("./oauth2/oauth2_utils.js");
@@ -38,6 +39,11 @@ var import_oauth2_utils = require("./oauth2/oauth2_utils.js");
38
39
  */
39
40
  const S256_CODE_CHALLENGE_METHOD = "S256";
40
41
  const _AuthHandler = class _AuthHandler {
42
+ /**
43
+ * @param authConfig The auth config this handler reads. It stays readable
44
+ * and replaceable after construction; each method reads the current
45
+ * value.
46
+ */
41
47
  constructor(authConfig) {
42
48
  this.authConfig = authConfig;
43
49
  }
@@ -70,14 +76,32 @@ const _AuthHandler = class _AuthHandler {
70
76
  state.set(credentialKey, exchangedCredential.credential);
71
77
  }
72
78
  }
79
+ /**
80
+ * Builds the auth request to send to the client.
81
+ *
82
+ * The result is always a new object, and its `exchangedAuthCredential` is
83
+ * never an object held by {@link authConfig}. A caller that fills in the
84
+ * response, for example `exchangedAuthCredential.oauth2.authResponseUri`,
85
+ * therefore leaves the handler's credentials unchanged.
86
+ *
87
+ * When the config is returned as is, because the scheme is not OAuth2 or
88
+ * OpenID Connect or the exchanged credential already has an auth URI, the
89
+ * result is a deep copy of the whole config. In the other branches only the
90
+ * exchanged credential is guaranteed independent: `authScheme` and
91
+ * `rawAuthCredential` are the handler's own objects.
92
+ *
93
+ * @return The auth config to request from the client.
94
+ * @throws Error: If an OAuth2 or OpenID Connect scheme has no raw
95
+ * credential, no `oauth2` on it, or no client ID and secret.
96
+ */
73
97
  generateAuthRequest() {
74
98
  var _a, _b;
75
99
  const authSchemeType = this.authConfig.authScheme.type;
76
100
  if (!["oauth2", "openIdConnect"].includes(authSchemeType)) {
77
- return this.authConfig;
101
+ return (0, import_lodash_es.cloneDeep)(this.authConfig);
78
102
  }
79
103
  if ((_b = (_a = this.authConfig.exchangedAuthCredential) == null ? void 0 : _a.oauth2) == null ? void 0 : _b.authUri) {
80
- return this.authConfig;
104
+ return (0, import_lodash_es.cloneDeep)(this.authConfig);
81
105
  }
82
106
  if (!this.authConfig.rawAuthCredential) {
83
107
  throw new Error(`Auth Scheme ${authSchemeType} requires authCredential.`);
@@ -92,7 +116,7 @@ const _AuthHandler = class _AuthHandler {
92
116
  credentialKey: this.authConfig.credentialKey,
93
117
  authScheme: this.authConfig.authScheme,
94
118
  rawAuthCredential: this.authConfig.rawAuthCredential,
95
- exchangedAuthCredential: this.authConfig.rawAuthCredential
119
+ exchangedAuthCredential: (0, import_lodash_es.cloneDeep)(this.authConfig.rawAuthCredential)
96
120
  };
97
121
  }
98
122
  if (!this.authConfig.rawAuthCredential.oauth2.clientId || !this.authConfig.rawAuthCredential.oauth2.clientSecret) {
@@ -114,6 +138,10 @@ const _AuthHandler = class _AuthHandler {
114
138
  * challenge derived from the credential's code verifier, and the returned
115
139
  * credential carries the verifier the later token exchange must send.
116
140
  *
141
+ * The URI leaves out `redirect_uri` when the credential has no
142
+ * `redirectUri`, so the provider uses the redirect registered for the
143
+ * client, and leaves out `scope` when the scheme lists no scopes.
144
+ *
117
145
  * @return An AuthCredential object containing the auth URI and state.
118
146
  * @throws Error: If the authorization endpoint is not configured in the
119
147
  * auth scheme, or the credential requests a code challenge method other
@@ -157,9 +185,13 @@ const _AuthHandler = class _AuthHandler {
157
185
  const state = (0, import_env_aware_utils.randomUUID)();
158
186
  const url = new URL(authorizationEndpoint);
159
187
  url.searchParams.set("client_id", oauth2.clientId || "");
160
- url.searchParams.set("redirect_uri", oauth2.redirectUri || "");
188
+ if (oauth2.redirectUri) {
189
+ url.searchParams.set("redirect_uri", oauth2.redirectUri);
190
+ }
161
191
  url.searchParams.set("response_type", "code");
162
- url.searchParams.set("scope", scopes.join(" "));
192
+ if (scopes.length > 0) {
193
+ url.searchParams.set("scope", scopes.join(" "));
194
+ }
163
195
  url.searchParams.set("state", state);
164
196
  url.searchParams.set("access_type", "offline");
165
197
  url.searchParams.set("prompt", "consent");
@@ -25,6 +25,7 @@ var __copyProps = (to, from, except, desc) => {
25
25
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
26
26
  var auth_schemes_exports = {};
27
27
  __export(auth_schemes_exports, {
28
+ AuthSchemeType: () => AuthSchemeType,
28
29
  OAuthGrantType: () => OAuthGrantType,
29
30
  getOAuthGrantTypeFromFlow: () => getOAuthGrantTypeFromFlow
30
31
  });
@@ -34,6 +35,13 @@ module.exports = __toCommonJS(auth_schemes_exports);
34
35
  * Copyright 2025 Google LLC
35
36
  * SPDX-License-Identifier: Apache-2.0
36
37
  */
38
+ var AuthSchemeType = /* @__PURE__ */ ((AuthSchemeType2) => {
39
+ AuthSchemeType2["API_KEY"] = "apiKey";
40
+ AuthSchemeType2["HTTP"] = "http";
41
+ AuthSchemeType2["OAUTH2"] = "oauth2";
42
+ AuthSchemeType2["OPEN_ID_CONNECT"] = "openIdConnect";
43
+ return AuthSchemeType2;
44
+ })(AuthSchemeType || {});
37
45
  var OAuthGrantType = /* @__PURE__ */ ((OAuthGrantType2) => {
38
46
  OAuthGrantType2["CLIENT_CREDENTIALS"] = "client_credentials";
39
47
  OAuthGrantType2["AUTHORIZATION_CODE"] = "authorization_code";
@@ -59,6 +67,7 @@ function getOAuthGrantTypeFromFlow(flow) {
59
67
  __name(getOAuthGrantTypeFromFlow, "getOAuthGrantTypeFromFlow");
60
68
  // Annotate the CommonJS export names for ESM import in node:
61
69
  0 && (module.exports = {
70
+ AuthSchemeType,
62
71
  OAuthGrantType,
63
72
  getOAuthGrantTypeFromFlow
64
73
  });