@google/adk 2.0.0 → 2.1.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 (566) hide show
  1. package/dist/cjs/a2a/a2a_event.js +0 -29
  2. package/dist/cjs/a2a/a2a_remote_agent.js +8 -5
  3. package/dist/cjs/a2a/a2a_remote_agent_utils.js +104 -2
  4. package/dist/cjs/a2a/agent_card.js +58 -6
  5. package/dist/cjs/a2a/agent_executor.js +10 -3
  6. package/dist/cjs/a2a/agent_to_a2a.js +6 -1
  7. package/dist/cjs/a2a/event_processor_utils.js +1 -1
  8. package/dist/cjs/a2a/executor_context.js +4 -2
  9. package/dist/cjs/a2a/index.js +4 -0
  10. package/dist/cjs/a2a/request_metadata.js +94 -0
  11. package/dist/cjs/agents/base_agent.js +9 -8
  12. package/dist/cjs/agents/context.js +7 -0
  13. package/dist/cjs/agents/functions.js +150 -47
  14. package/dist/cjs/agents/invocation_context.js +1 -0
  15. package/dist/cjs/agents/llm_agent.js +6 -5
  16. package/dist/cjs/agents/loop_agent.js +1 -1
  17. package/dist/cjs/agents/parallel_agent.js +1 -1
  18. package/dist/cjs/agents/processors/agent_transfer_llm_request_processor.js +26 -5
  19. package/dist/cjs/agents/processors/code_execution_request_processor.js +2 -2
  20. package/dist/cjs/agents/processors/content_processor_utils.js +5 -5
  21. package/dist/cjs/agents/processors/content_request_processor.js +4 -1
  22. package/dist/cjs/agents/processors/request_confirmation_llm_request_processor.js +19 -12
  23. package/dist/cjs/agents/processors/request_input_llm_request_processor.js +3 -7
  24. package/dist/cjs/agents/readonly_context.js +6 -0
  25. package/dist/cjs/agents/routed_agent.js +1 -1
  26. package/dist/cjs/agents/sequential_agent.js +1 -1
  27. package/dist/cjs/apps/app.js +1 -1
  28. package/dist/cjs/artifacts/file_artifact_service.js +1 -2
  29. package/dist/cjs/artifacts/scoped_artifact_service.js +9 -0
  30. package/dist/cjs/artifacts/session_artifact_service.js +19 -0
  31. package/dist/cjs/auth/auth_handler.js +44 -8
  32. package/dist/cjs/auth/oauth2/oauth2_credential_refresher.js +1 -1
  33. package/dist/cjs/auth/oauth2/oauth2_utils.js +17 -2
  34. package/dist/cjs/code_executors/base_code_executor.js +1 -1
  35. package/dist/cjs/code_executors/built_in_code_executor.js +1 -1
  36. package/dist/cjs/code_executors/code_execution_utils.js +2 -2
  37. package/dist/cjs/code_executors/container_code_executor.js +186 -0
  38. package/dist/cjs/code_executors/docker_container.js +282 -0
  39. package/dist/cjs/code_executors/unsafe_local_code_executor.js +11 -6
  40. package/dist/cjs/common.js +74 -45
  41. package/dist/cjs/context/agent_controlled_context_compactor.js +10 -5
  42. package/dist/cjs/context/anchored_context_compactor.js +41 -18
  43. package/dist/cjs/context/compaction_utils.js +15 -6
  44. package/dist/cjs/context/token_based_context_compactor.js +10 -2
  45. package/dist/cjs/context/trajectory_thought_pruning_compactor.js +17 -10
  46. package/dist/cjs/context/truncating_context_compactor.js +17 -5
  47. package/dist/cjs/errors/already_exists_error.js +50 -0
  48. package/dist/cjs/errors/input_validation_error.js +50 -0
  49. package/dist/cjs/errors/not_found_error.js +50 -0
  50. package/dist/cjs/errors/session_not_found_error.js +50 -0
  51. package/dist/cjs/errors/tool_execution_error.js +68 -0
  52. package/dist/cjs/events/event.js +1 -1
  53. package/dist/cjs/events/event_actions.js +7 -0
  54. package/dist/cjs/examples/base_example_provider.js +1 -1
  55. package/dist/cjs/index.js +47 -0
  56. package/dist/cjs/index_web.js +2 -0
  57. package/dist/cjs/integrations/agent_registry/agent_registry.js +3 -2
  58. package/dist/cjs/memory/rag_memory_transcript.js +136 -0
  59. package/dist/cjs/memory/vertex_ai_memory_bank_service.js +2 -2
  60. package/dist/cjs/memory/vertex_ai_rag_api.js +120 -0
  61. package/dist/cjs/memory/vertex_ai_rag_memory_service.js +228 -0
  62. package/dist/cjs/models/apigee_llm.js +1 -1
  63. package/dist/cjs/models/base_llm.js +1 -1
  64. package/dist/cjs/models/chrome_prompt_llm.js +304 -0
  65. package/dist/cjs/models/chrome_prompt_utils.js +229 -0
  66. package/dist/cjs/models/google_llm.js +9 -4
  67. package/dist/cjs/models/interactions_utils.js +2 -3
  68. package/dist/cjs/models/registry.js +2 -0
  69. package/dist/cjs/plugins/_reflect_retry_utils.js +142 -0
  70. package/dist/cjs/plugins/reflect_retry_model_plugin.js +274 -0
  71. package/dist/cjs/plugins/reflect_retry_tool_plugin.js +276 -0
  72. package/dist/cjs/runner/runner.js +29 -26
  73. package/dist/cjs/sessions/database_session_service.js +78 -43
  74. package/dist/cjs/sessions/db/operations.js +229 -22
  75. package/dist/cjs/sessions/db/schema.js +113 -159
  76. package/dist/cjs/sessions/registry.js +5 -1
  77. package/dist/cjs/sessions/vertex_ai_session_service.js +2 -2
  78. package/dist/cjs/telemetry/setup.js +1 -1
  79. package/dist/cjs/telemetry/tracing.js +11 -1
  80. package/dist/cjs/tools/agent_tool.js +4 -5
  81. package/dist/cjs/tools/base_tool.js +14 -4
  82. package/dist/cjs/tools/base_toolset.js +4 -4
  83. package/dist/cjs/tools/built_in_tool.js +75 -0
  84. package/dist/cjs/tools/enterprise_web_search_tool.js +3 -6
  85. package/dist/cjs/tools/forwarding_artifact_service.js +18 -13
  86. package/dist/cjs/tools/function_tool.js +6 -3
  87. package/dist/cjs/tools/google_maps_grounding_tool.js +3 -6
  88. package/dist/cjs/tools/google_search_tool.js +3 -6
  89. package/dist/cjs/tools/load_artifacts_tool.js +47 -23
  90. package/dist/cjs/tools/load_web_page.js +6 -172
  91. package/dist/cjs/tools/mcp/load_mcp_resource_tool.js +34 -5
  92. package/dist/cjs/tools/openapi_tool/auth/auth_helpers.js +11 -2
  93. package/dist/cjs/tools/openapi_tool/openapi_spec_parser/operation_parser.js +1 -1
  94. package/dist/cjs/tools/openapi_tool/rest_api_tool.js +16 -18
  95. package/dist/cjs/tools/preload_memory_tool.js +1 -1
  96. package/dist/cjs/tools/resume_inputs.js +27 -0
  97. package/dist/cjs/tools/retrieval/base_retrieval_tool.js +60 -0
  98. package/dist/cjs/tools/retrieval/files_retrieval.js +95 -0
  99. package/dist/cjs/tools/retrieval/llama_index_retrieval.js +57 -0
  100. package/dist/cjs/tools/url_context_tool.js +3 -6
  101. package/dist/cjs/tools/vertex_ai_search_tool.js +4 -8
  102. package/dist/cjs/tools/vertex_rag_retrieval_tool.js +3 -10
  103. package/dist/cjs/utils/crypto_shim.js +16 -0
  104. package/dist/cjs/utils/gemini_schema_util.js +0 -6
  105. package/dist/cjs/utils/logger.js +15 -50
  106. package/dist/cjs/utils/logger_browser.js +86 -0
  107. package/dist/cjs/utils/logger_node.js +119 -0
  108. package/dist/cjs/utils/redact_inline_data.js +46 -0
  109. package/dist/cjs/utils/redact_uri.js +15 -1
  110. package/dist/cjs/utils/schema.js +1 -1
  111. package/dist/cjs/utils/ssrf_guard.js +262 -0
  112. package/dist/cjs/version.js +1 -1
  113. package/dist/cjs/workflow/base_node.js +1 -1
  114. package/dist/cjs/workflow/graph.js +1 -1
  115. package/dist/cjs/workflow/nodes/node_tool.js +2 -11
  116. package/dist/cjs/workflow/request_input.js +1 -1
  117. package/dist/cjs/workflow/run_llm_agent_as_node.js +1 -1
  118. package/dist/cjs/workflow/workflow.js +1 -1
  119. package/dist/esm/a2a/a2a_event.js +0 -28
  120. package/dist/esm/a2a/a2a_remote_agent.js +10 -5
  121. package/dist/esm/a2a/a2a_remote_agent_utils.js +102 -2
  122. package/dist/esm/a2a/agent_card.js +63 -6
  123. package/dist/esm/a2a/agent_executor.js +10 -3
  124. package/dist/esm/a2a/agent_to_a2a.js +8 -2
  125. package/dist/esm/a2a/event_processor_utils.js +1 -2
  126. package/dist/esm/a2a/executor_context.js +4 -2
  127. package/dist/esm/a2a/index.js +7 -1
  128. package/dist/esm/a2a/request_metadata.js +68 -0
  129. package/dist/esm/agents/base_agent.js +9 -8
  130. package/dist/esm/agents/context.js +7 -0
  131. package/dist/esm/agents/functions.js +152 -48
  132. package/dist/esm/agents/invocation_context.js +1 -0
  133. package/dist/esm/agents/llm_agent.js +6 -5
  134. package/dist/esm/agents/loop_agent.js +1 -1
  135. package/dist/esm/agents/parallel_agent.js +1 -1
  136. package/dist/esm/agents/processors/agent_transfer_llm_request_processor.js +26 -5
  137. package/dist/esm/agents/processors/code_execution_request_processor.js +2 -2
  138. package/dist/esm/agents/processors/content_processor_utils.js +5 -5
  139. package/dist/esm/agents/processors/content_request_processor.js +4 -1
  140. package/dist/esm/agents/processors/request_confirmation_llm_request_processor.js +19 -12
  141. package/dist/esm/agents/processors/request_input_llm_request_processor.js +3 -7
  142. package/dist/esm/agents/readonly_context.js +6 -0
  143. package/dist/esm/agents/routed_agent.js +1 -1
  144. package/dist/esm/agents/sequential_agent.js +1 -1
  145. package/dist/esm/apps/app.js +1 -1
  146. package/dist/esm/artifacts/file_artifact_service.js +1 -2
  147. package/dist/esm/artifacts/scoped_artifact_service.js +9 -0
  148. package/dist/esm/artifacts/session_artifact_service.js +12 -0
  149. package/dist/esm/auth/auth_handler.js +47 -8
  150. package/dist/esm/auth/oauth2/oauth2_credential_refresher.js +1 -1
  151. package/dist/esm/auth/oauth2/oauth2_utils.js +15 -2
  152. package/dist/esm/code_executors/base_code_executor.js +1 -1
  153. package/dist/esm/code_executors/built_in_code_executor.js +1 -1
  154. package/dist/esm/code_executors/code_execution_utils.js +2 -2
  155. package/dist/esm/code_executors/container_code_executor.js +155 -0
  156. package/dist/esm/code_executors/docker_container.js +265 -0
  157. package/dist/esm/code_executors/unsafe_local_code_executor.js +11 -6
  158. package/dist/esm/common.js +73 -38
  159. package/dist/esm/context/agent_controlled_context_compactor.js +10 -5
  160. package/dist/esm/context/anchored_context_compactor.js +45 -19
  161. package/dist/esm/context/compaction_utils.js +13 -5
  162. package/dist/esm/context/token_based_context_compactor.js +10 -2
  163. package/dist/esm/context/trajectory_thought_pruning_compactor.js +17 -10
  164. package/dist/esm/context/truncating_context_compactor.js +17 -5
  165. package/dist/esm/errors/already_exists_error.js +23 -0
  166. package/dist/esm/errors/input_validation_error.js +23 -0
  167. package/dist/{web/auth/refresher/base_credential_refresher.js → esm/errors/not_found_error.js} +9 -6
  168. package/dist/esm/errors/session_not_found_error.js +23 -0
  169. package/dist/esm/errors/tool_execution_error.js +40 -0
  170. package/dist/esm/events/event.js +1 -1
  171. package/dist/esm/events/event_actions.js +6 -0
  172. package/dist/esm/examples/base_example_provider.js +1 -1
  173. package/dist/esm/index.js +37 -0
  174. package/dist/esm/index_web.js +2 -0
  175. package/dist/esm/integrations/agent_registry/agent_registry.js +3 -2
  176. package/dist/esm/memory/rag_memory_transcript.js +106 -0
  177. package/dist/esm/memory/vertex_ai_memory_bank_service.js +2 -2
  178. package/dist/esm/memory/vertex_ai_rag_api.js +93 -0
  179. package/dist/esm/memory/vertex_ai_rag_memory_service.js +208 -0
  180. package/dist/esm/models/apigee_llm.js +1 -1
  181. package/dist/esm/models/base_llm.js +1 -1
  182. package/dist/esm/models/chrome_prompt_llm.js +285 -0
  183. package/dist/esm/models/chrome_prompt_utils.js +192 -0
  184. package/dist/esm/models/google_llm.js +9 -4
  185. package/dist/esm/models/interactions_utils.js +2 -3
  186. package/dist/esm/models/registry.js +2 -0
  187. package/dist/esm/plugins/_reflect_retry_utils.js +111 -0
  188. package/dist/esm/plugins/reflect_retry_model_plugin.js +250 -0
  189. package/dist/esm/plugins/reflect_retry_tool_plugin.js +254 -0
  190. package/dist/esm/runner/runner.js +35 -27
  191. package/dist/esm/sessions/database_session_service.js +58 -25
  192. package/dist/esm/sessions/db/operations.js +229 -22
  193. package/dist/esm/sessions/db/schema.js +111 -160
  194. package/dist/esm/sessions/registry.js +5 -1
  195. package/dist/esm/sessions/vertex_ai_session_service.js +1 -1
  196. package/dist/esm/telemetry/setup.js +1 -1
  197. package/dist/esm/telemetry/tracing.js +11 -1
  198. package/dist/esm/tools/agent_tool.js +4 -5
  199. package/dist/esm/tools/base_tool.js +11 -3
  200. package/dist/esm/tools/base_toolset.js +4 -4
  201. package/dist/esm/tools/built_in_tool.js +51 -0
  202. package/dist/esm/tools/enterprise_web_search_tool.js +3 -6
  203. package/dist/esm/tools/forwarding_artifact_service.js +18 -13
  204. package/dist/esm/tools/function_tool.js +6 -3
  205. package/dist/esm/tools/google_maps_grounding_tool.js +3 -6
  206. package/dist/esm/tools/google_search_tool.js +3 -6
  207. package/dist/esm/tools/load_artifacts_tool.js +48 -24
  208. package/dist/esm/tools/load_web_page.js +10 -170
  209. package/dist/esm/tools/mcp/load_mcp_resource_tool.js +34 -5
  210. package/dist/esm/tools/openapi_tool/auth/auth_helpers.js +13 -2
  211. package/dist/esm/tools/openapi_tool/openapi_spec_parser/operation_parser.js +1 -1
  212. package/dist/esm/tools/openapi_tool/rest_api_tool.js +16 -18
  213. package/dist/esm/tools/preload_memory_tool.js +1 -1
  214. package/dist/esm/tools/retrieval/base_retrieval_tool.js +33 -0
  215. package/dist/esm/tools/retrieval/files_retrieval.js +81 -0
  216. package/dist/esm/tools/retrieval/llama_index_retrieval.js +30 -0
  217. package/dist/esm/tools/url_context_tool.js +3 -6
  218. package/dist/esm/tools/vertex_ai_search_tool.js +4 -8
  219. package/dist/esm/tools/vertex_rag_retrieval_tool.js +3 -10
  220. package/dist/esm/utils/crypto_shim.js +14 -0
  221. package/dist/esm/utils/gemini_schema_util.js +0 -6
  222. package/dist/esm/utils/logger.js +14 -40
  223. package/dist/esm/utils/logger_browser.js +58 -0
  224. package/dist/esm/utils/logger_node.js +81 -0
  225. package/dist/esm/utils/redact_inline_data.js +19 -0
  226. package/dist/esm/utils/redact_uri.js +15 -1
  227. package/dist/esm/utils/schema.js +1 -1
  228. package/dist/{web/tools/load_web_page.js → esm/utils/ssrf_guard.js} +95 -107
  229. package/dist/esm/version.js +1 -1
  230. package/dist/esm/workflow/base_node.js +1 -1
  231. package/dist/esm/workflow/graph.js +1 -1
  232. package/dist/esm/workflow/nodes/node_tool.js +2 -11
  233. package/dist/esm/workflow/request_input.js +1 -1
  234. package/dist/esm/workflow/run_llm_agent_as_node.js +1 -1
  235. package/dist/esm/workflow/workflow.js +1 -1
  236. package/dist/types/a2a/a2a_event.d.ts +7 -10
  237. package/dist/types/a2a/a2a_remote_agent.d.ts +5 -0
  238. package/dist/types/a2a/a2a_remote_agent_utils.d.ts +25 -0
  239. package/dist/types/a2a/agent_card.d.ts +9 -0
  240. package/dist/types/a2a/agent_executor.d.ts +1 -1
  241. package/dist/types/a2a/agent_to_a2a.d.ts +2 -0
  242. package/dist/types/a2a/auth.d.ts +5 -1
  243. package/dist/types/a2a/executor_context.d.ts +7 -1
  244. package/dist/types/a2a/index.d.ts +1 -1
  245. package/dist/types/a2a/request_metadata.d.ts +22 -0
  246. package/dist/types/agents/base_agent.d.ts +19 -16
  247. package/dist/types/agents/context.d.ts +8 -0
  248. package/dist/types/agents/functions.d.ts +72 -6
  249. package/dist/types/agents/invocation_context.d.ts +11 -3
  250. package/dist/types/agents/llm_agent.d.ts +9 -7
  251. package/dist/types/agents/processors/agent_transfer_llm_request_processor.d.ts +16 -1
  252. package/dist/types/agents/readonly_context.d.ts +4 -0
  253. package/dist/types/agents/run_config.d.ts +21 -8
  254. package/dist/types/artifacts/scoped_artifact_service.d.ts +13 -0
  255. package/dist/types/artifacts/session_artifact_service.d.ts +8 -1
  256. package/dist/types/auth/auth_credential.d.ts +13 -8
  257. package/dist/types/auth/auth_handler.d.ts +12 -1
  258. package/dist/types/auth/oauth2/oauth2_credential_refresher.d.ts +1 -1
  259. package/dist/types/auth/oauth2/oauth2_utils.d.ts +9 -0
  260. package/dist/types/auth/refresher/base_credential_refresher.d.ts +1 -1
  261. package/dist/types/code_executors/code_execution_utils.d.ts +1 -1
  262. package/dist/types/code_executors/container_code_executor.d.ts +89 -0
  263. package/dist/types/code_executors/docker_container.d.ts +79 -0
  264. package/dist/types/common.d.ts +22 -20
  265. package/dist/types/context/compaction_utils.d.ts +9 -1
  266. package/dist/types/errors/already_exists_error.d.ts +14 -0
  267. package/dist/types/errors/input_validation_error.d.ts +14 -0
  268. package/dist/types/errors/not_found_error.d.ts +14 -0
  269. package/dist/types/errors/session_not_found_error.d.ts +14 -0
  270. package/dist/types/errors/tool_execution_error.d.ts +36 -0
  271. package/dist/types/events/event_actions.d.ts +13 -0
  272. package/dist/types/index.d.ts +22 -1
  273. package/dist/types/memory/rag_memory_transcript.d.ts +55 -0
  274. package/dist/types/memory/vertex_ai_rag_api.d.ts +89 -0
  275. package/dist/types/memory/vertex_ai_rag_memory_service.d.ts +68 -0
  276. package/dist/types/models/chrome_prompt_llm.d.ts +210 -0
  277. package/dist/types/models/chrome_prompt_utils.d.ts +68 -0
  278. package/dist/types/models/google_llm.d.ts +8 -3
  279. package/dist/types/models/registry.d.ts +3 -2
  280. package/dist/types/plugins/_reflect_retry_utils.d.ts +72 -0
  281. package/dist/types/plugins/base_plugin.d.ts +12 -10
  282. package/dist/types/plugins/logging_plugin.d.ts +3 -2
  283. package/dist/types/plugins/reflect_retry_model_plugin.d.ts +132 -0
  284. package/dist/types/plugins/reflect_retry_tool_plugin.d.ts +187 -0
  285. package/dist/types/runner/runner.d.ts +7 -8
  286. package/dist/types/sessions/database_session_service.d.ts +1 -1
  287. package/dist/types/sessions/db/operations.d.ts +13 -1
  288. package/dist/types/sessions/db/schema.d.ts +23 -9
  289. package/dist/types/tools/base_tool.d.ts +11 -0
  290. package/dist/types/tools/base_toolset.d.ts +3 -4
  291. package/dist/types/tools/built_in_tool.d.ts +41 -0
  292. package/dist/types/tools/enterprise_web_search_tool.d.ts +4 -4
  293. package/dist/types/tools/forwarding_artifact_service.d.ts +23 -10
  294. package/dist/types/tools/function_tool.d.ts +42 -9
  295. package/dist/types/tools/google_maps_grounding_tool.d.ts +4 -4
  296. package/dist/types/tools/google_search_tool.d.ts +4 -4
  297. package/dist/types/tools/long_running_tool.d.ts +1 -1
  298. package/dist/types/tools/mcp/mcp_toolset.d.ts +11 -10
  299. package/dist/types/tools/openapi_tool/auth/auth_helpers.d.ts +5 -0
  300. package/dist/types/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.d.ts +0 -1
  301. package/dist/types/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.d.ts +0 -1
  302. package/dist/types/tools/preload_memory_tool.d.ts +1 -1
  303. package/dist/types/tools/resume_inputs.d.ts +25 -0
  304. package/dist/types/tools/retrieval/base_retrieval_tool.d.ts +21 -0
  305. package/dist/types/tools/retrieval/files_retrieval.d.ts +50 -0
  306. package/dist/types/tools/retrieval/llama_index_retrieval.d.ts +62 -0
  307. package/dist/types/tools/url_context_tool.d.ts +4 -4
  308. package/dist/types/tools/vertex_ai_search_tool.d.ts +4 -4
  309. package/dist/types/tools/vertex_rag_retrieval_tool.d.ts +13 -12
  310. package/dist/types/utils/crypto_shim.d.ts +16 -0
  311. package/dist/types/utils/gemini_schema_util.d.ts +5 -7
  312. package/dist/types/utils/logger.d.ts +23 -1
  313. package/dist/types/utils/logger_browser.d.ts +28 -0
  314. package/dist/types/utils/logger_node.d.ts +20 -0
  315. package/dist/types/utils/output_schema_utils.d.ts +3 -3
  316. package/dist/types/utils/redact_inline_data.d.ts +16 -0
  317. package/dist/types/utils/redact_uri.d.ts +12 -8
  318. package/dist/types/utils/ssrf_guard.d.ts +32 -0
  319. package/dist/types/version.d.ts +1 -1
  320. package/dist/web/index_web.js +304 -3
  321. package/dist/web/index_web.js.map +7 -0
  322. package/package.json +17 -14
  323. package/dist/web/a2a/a2a_event.js +0 -290
  324. package/dist/web/a2a/a2a_remote_agent.js +0 -200
  325. package/dist/web/a2a/a2a_remote_agent_run_processor.js +0 -189
  326. package/dist/web/a2a/a2a_remote_agent_utils.js +0 -141
  327. package/dist/web/a2a/agent_card.js +0 -373
  328. package/dist/web/a2a/agent_executor.js +0 -246
  329. package/dist/web/a2a/agent_to_a2a.js +0 -126
  330. package/dist/web/a2a/auth.js +0 -41
  331. package/dist/web/a2a/event_converter_utils.js +0 -242
  332. package/dist/web/a2a/event_processor_utils.js +0 -209
  333. package/dist/web/a2a/executor_context.js +0 -28
  334. package/dist/web/a2a/index.js +0 -20
  335. package/dist/web/a2a/metadata_converter_utils.js +0 -115
  336. package/dist/web/a2a/part_converter_utils.js +0 -201
  337. package/dist/web/agents/active_streaming_tool.js +0 -25
  338. package/dist/web/agents/base_agent.js +0 -462
  339. package/dist/web/agents/context.js +0 -146
  340. package/dist/web/agents/framework_function_calls.js +0 -34
  341. package/dist/web/agents/functions.js +0 -462
  342. package/dist/web/agents/instructions.js +0 -188
  343. package/dist/web/agents/invocation_context.js +0 -126
  344. package/dist/web/agents/live_request_queue.js +0 -151
  345. package/dist/web/agents/llm_agent.js +0 -1514
  346. package/dist/web/agents/loop_agent.js +0 -131
  347. package/dist/web/agents/parallel_agent.js +0 -122
  348. package/dist/web/agents/processors/agent_transfer_llm_request_processor.js +0 -113
  349. package/dist/web/agents/processors/base_llm_processor.js +0 -21
  350. package/dist/web/agents/processors/basic_llm_request_processor.js +0 -84
  351. package/dist/web/agents/processors/code_execution_request_processor.js +0 -381
  352. package/dist/web/agents/processors/content_processor_utils.js +0 -432
  353. package/dist/web/agents/processors/content_request_processor.js +0 -73
  354. package/dist/web/agents/processors/context_compactor_request_processor.js +0 -78
  355. package/dist/web/agents/processors/identity_llm_request_processor.js +0 -59
  356. package/dist/web/agents/processors/instructions_llm_request_processor.js +0 -85
  357. package/dist/web/agents/processors/interactions_request_processor.js +0 -56
  358. package/dist/web/agents/processors/request_confirmation_llm_request_processor.js +0 -393
  359. package/dist/web/agents/processors/request_input_llm_request_processor.js +0 -228
  360. package/dist/web/agents/processors/tool_filter_request_processor.js +0 -72
  361. package/dist/web/agents/readonly_context.js +0 -60
  362. package/dist/web/agents/routed_agent.js +0 -161
  363. package/dist/web/agents/run_config.js +0 -74
  364. package/dist/web/agents/sequential_agent.js +0 -141
  365. package/dist/web/agents/transcription_entry.js +0 -7
  366. package/dist/web/agents/user_input_request.js +0 -135
  367. package/dist/web/apps/app.js +0 -52
  368. package/dist/web/apps/resumability_config.js +0 -33
  369. package/dist/web/artifacts/base_artifact_service.js +0 -7
  370. package/dist/web/artifacts/file_artifact_service.js +0 -568
  371. package/dist/web/artifacts/gcs_artifact_service.js +0 -298
  372. package/dist/web/artifacts/in_memory_artifact_service.js +0 -172
  373. package/dist/web/artifacts/registry.js +0 -36
  374. package/dist/web/artifacts/scoped_artifact_service.js +0 -89
  375. package/dist/web/auth/auth_credential.js +0 -18
  376. package/dist/web/auth/auth_handler.js +0 -151
  377. package/dist/web/auth/auth_preprocessor.js +0 -184
  378. package/dist/web/auth/auth_provider_registry.js +0 -37
  379. package/dist/web/auth/auth_schemes.js +0 -36
  380. package/dist/web/auth/auth_tool.js +0 -7
  381. package/dist/web/auth/base_auth_provider.js +0 -7
  382. package/dist/web/auth/credential_response_binding.js +0 -91
  383. package/dist/web/auth/credential_service/base_credential_service.js +0 -7
  384. package/dist/web/auth/credential_service/in_memory_credential_service.js +0 -50
  385. package/dist/web/auth/credential_service/session_state_credential_service.js +0 -27
  386. package/dist/web/auth/exchanger/base_credential_exchanger.js +0 -16
  387. package/dist/web/auth/exchanger/credential_exchanger_registry.js +0 -35
  388. package/dist/web/auth/oauth2/oauth2_credential_exchanger.js +0 -194
  389. package/dist/web/auth/oauth2/oauth2_credential_refresher.js +0 -105
  390. package/dist/web/auth/oauth2/oauth2_discovery.js +0 -196
  391. package/dist/web/auth/oauth2/oauth2_utils.js +0 -105
  392. package/dist/web/auth/refresher/credential_refresher_registry.js +0 -44
  393. package/dist/web/code_executors/agent_engine_sandbox_code_executor.js +0 -284
  394. package/dist/web/code_executors/base_code_executor.js +0 -68
  395. package/dist/web/code_executors/built_in_code_executor.js +0 -50
  396. package/dist/web/code_executors/code_execution_utils.js +0 -131
  397. package/dist/web/code_executors/code_executor_context.js +0 -174
  398. package/dist/web/code_executors/unsafe_local_code_executor.js +0 -221
  399. package/dist/web/common.js +0 -452
  400. package/dist/web/context/agent_controlled_context_compactor.js +0 -76
  401. package/dist/web/context/anchored_context_compactor.js +0 -120
  402. package/dist/web/context/base_context_compactor.js +0 -7
  403. package/dist/web/context/compaction_utils.js +0 -42
  404. package/dist/web/context/summarizers/base_summarizer.js +0 -7
  405. package/dist/web/context/summarizers/llm_summarizer.js +0 -91
  406. package/dist/web/context/token_based_context_compactor.js +0 -118
  407. package/dist/web/context/trajectory_thought_pruning_compactor.js +0 -47
  408. package/dist/web/context/truncating_context_compactor.js +0 -34
  409. package/dist/web/environment/base_environment.js +0 -71
  410. package/dist/web/environment/local_environment.js +0 -165
  411. package/dist/web/events/compacted_event.js +0 -51
  412. package/dist/web/events/event.js +0 -208
  413. package/dist/web/events/event_actions.js +0 -74
  414. package/dist/web/events/structured_events.js +0 -79
  415. package/dist/web/examples/base_example_provider.js +0 -32
  416. package/dist/web/examples/example.js +0 -7
  417. package/dist/web/examples/example_util.js +0 -83
  418. package/dist/web/features/feature_registry.js +0 -115
  419. package/dist/web/index.js +0 -57
  420. package/dist/web/integrations/agent_registry/agent_registry.js +0 -337
  421. package/dist/web/integrations/agent_registry/agent_registry_mcp_toolset.js +0 -120
  422. package/dist/web/integrations/agent_registry/helpers.js +0 -32
  423. package/dist/web/integrations/agent_registry/types.js +0 -20
  424. package/dist/web/memory/base_memory_service.js +0 -7
  425. package/dist/web/memory/in_memory_memory_service.js +0 -89
  426. package/dist/web/memory/memory_entry.js +0 -7
  427. package/dist/web/memory/vertex_ai_memory_bank_service.js +0 -496
  428. package/dist/web/models/apigee_llm.js +0 -227
  429. package/dist/web/models/base_llm.js +0 -78
  430. package/dist/web/models/base_llm_connection.js +0 -7
  431. package/dist/web/models/gemini_llm_connection.js +0 -183
  432. package/dist/web/models/google_llm.js +0 -396
  433. package/dist/web/models/interactions_utils.js +0 -745
  434. package/dist/web/models/llm_request.js +0 -57
  435. package/dist/web/models/llm_response.js +0 -48
  436. package/dist/web/models/registry.js +0 -100
  437. package/dist/web/models/routed_llm.js +0 -112
  438. package/dist/web/plugins/base_plugin.js +0 -305
  439. package/dist/web/plugins/global_instruction_plugin.js +0 -71
  440. package/dist/web/plugins/logging_plugin.js +0 -241
  441. package/dist/web/plugins/plugin_manager.js +0 -318
  442. package/dist/web/plugins/security_plugin.js +0 -148
  443. package/dist/web/runner/in_memory_runner.js +0 -50
  444. package/dist/web/runner/runner.js +0 -747
  445. package/dist/web/sessions/base_session_service.js +0 -123
  446. package/dist/web/sessions/database_session_service.js +0 -440
  447. package/dist/web/sessions/db/operations.js +0 -124
  448. package/dist/web/sessions/db/schema.js +0 -216
  449. package/dist/web/sessions/in_memory_session_service.js +0 -251
  450. package/dist/web/sessions/registry.js +0 -38
  451. package/dist/web/sessions/session.js +0 -23
  452. package/dist/web/sessions/state.js +0 -159
  453. package/dist/web/sessions/state_write_order.js +0 -74
  454. package/dist/web/sessions/vertex_ai_session_service.js +0 -546
  455. package/dist/web/skills/gcp_skill_registry.js +0 -80
  456. package/dist/web/skills/loader.js +0 -372
  457. package/dist/web/skills/prompt.js +0 -34
  458. package/dist/web/skills/skill.js +0 -67
  459. package/dist/web/skills/skill_registry.js +0 -7
  460. package/dist/web/telemetry/google_cloud.js +0 -99
  461. package/dist/web/telemetry/setup.js +0 -89
  462. package/dist/web/telemetry/tracing.js +0 -304
  463. package/dist/web/tools/agent_tool.js +0 -150
  464. package/dist/web/tools/base_tool.js +0 -116
  465. package/dist/web/tools/base_toolset.js +0 -62
  466. package/dist/web/tools/consolidate_context_tool.js +0 -55
  467. package/dist/web/tools/enterprise_web_search_tool.js +0 -60
  468. package/dist/web/tools/example_tool.js +0 -46
  469. package/dist/web/tools/exit_loop_tool.js +0 -47
  470. package/dist/web/tools/finish_task_tool.js +0 -92
  471. package/dist/web/tools/forwarding_artifact_service.js +0 -51
  472. package/dist/web/tools/function_tool.js +0 -151
  473. package/dist/web/tools/get_user_choice_tool.js +0 -27
  474. package/dist/web/tools/google_maps_grounding_tool.js +0 -59
  475. package/dist/web/tools/google_search_tool.js +0 -55
  476. package/dist/web/tools/load_artifacts_tool.js +0 -159
  477. package/dist/web/tools/load_memory_tool.js +0 -83
  478. package/dist/web/tools/long_running_tool.js +0 -58
  479. package/dist/web/tools/mcp/index.js +0 -11
  480. package/dist/web/tools/mcp/load_mcp_resource_tool.js +0 -111
  481. package/dist/web/tools/mcp/mcp_session_manager.js +0 -114
  482. package/dist/web/tools/mcp/mcp_tool.js +0 -47
  483. package/dist/web/tools/mcp/mcp_toolset.js +0 -144
  484. package/dist/web/tools/openapi_tool/auth/auth_helpers.js +0 -53
  485. package/dist/web/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +0 -62
  486. package/dist/web/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +0 -113
  487. package/dist/web/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +0 -242
  488. package/dist/web/tools/openapi_tool/openapi_spec_parser/operation_parser.js +0 -200
  489. package/dist/web/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +0 -98
  490. package/dist/web/tools/openapi_tool/openapi_toolset.js +0 -99
  491. package/dist/web/tools/openapi_tool/rest_api_tool.js +0 -247
  492. package/dist/web/tools/preload_memory_tool.js +0 -81
  493. package/dist/web/tools/request_input_tool.js +0 -29
  494. package/dist/web/tools/skill/list_skills_tool.js +0 -52
  495. package/dist/web/tools/skill/load_skill_resource_tool.js +0 -192
  496. package/dist/web/tools/skill/load_skill_tool.js +0 -96
  497. package/dist/web/tools/skill/run_skill_inline_script_tool.js +0 -191
  498. package/dist/web/tools/skill/run_skill_script_tool.js +0 -227
  499. package/dist/web/tools/skill/search_skills_tool.js +0 -84
  500. package/dist/web/tools/skill/skill_toolset.js +0 -185
  501. package/dist/web/tools/tool_confirmation.js +0 -43
  502. package/dist/web/tools/url_context_tool.js +0 -48
  503. package/dist/web/tools/vertex_ai_search_tool.js +0 -107
  504. package/dist/web/tools/vertex_rag_retrieval_tool.js +0 -40
  505. package/dist/web/utils/async_hooks_shim.js +0 -28
  506. package/dist/web/utils/async_queue.js +0 -88
  507. package/dist/web/utils/branch_trie.js +0 -16
  508. package/dist/web/utils/case_utils.js +0 -28
  509. package/dist/web/utils/client_labels.js +0 -70
  510. package/dist/web/utils/crypto_shim.js +0 -18
  511. package/dist/web/utils/deprecated.js +0 -40
  512. package/dist/web/utils/env_aware_utils.js +0 -115
  513. package/dist/web/utils/error_utils.js +0 -101
  514. package/dist/web/utils/experimental.js +0 -54
  515. package/dist/web/utils/failover_utils.js +0 -100
  516. package/dist/web/utils/file_extension_utils.js +0 -55
  517. package/dist/web/utils/file_utils.js +0 -108
  518. package/dist/web/utils/gemini_schema_util.js +0 -177
  519. package/dist/web/utils/genai_schema_to_json.js +0 -80
  520. package/dist/web/utils/live_connection_utils.js +0 -257
  521. package/dist/web/utils/logger.js +0 -140
  522. package/dist/web/utils/model_name.js +0 -75
  523. package/dist/web/utils/object_notation_utils.js +0 -54
  524. package/dist/web/utils/optional_peer.js +0 -38
  525. package/dist/web/utils/output_schema_utils.js +0 -18
  526. package/dist/web/utils/partial_copy.js +0 -26
  527. package/dist/web/utils/redact_uri.js +0 -39
  528. package/dist/web/utils/schema.js +0 -167
  529. package/dist/web/utils/simple_zod_to_json.js +0 -134
  530. package/dist/web/utils/streaming_utils.js +0 -438
  531. package/dist/web/utils/task.js +0 -38
  532. package/dist/web/utils/variant_utils.js +0 -23
  533. package/dist/web/utils/vertex_ai_utils.js +0 -27
  534. package/dist/web/version.js +0 -11
  535. package/dist/web/workflow/base_node.js +0 -215
  536. package/dist/web/workflow/branch_path.js +0 -77
  537. package/dist/web/workflow/dynamic_node_scheduler.js +0 -202
  538. package/dist/web/workflow/errors.js +0 -140
  539. package/dist/web/workflow/graph.js +0 -127
  540. package/dist/web/workflow/index.js +0 -80
  541. package/dist/web/workflow/node.js +0 -87
  542. package/dist/web/workflow/node_builders.js +0 -40
  543. package/dist/web/workflow/node_context.js +0 -236
  544. package/dist/web/workflow/node_error_event.js +0 -86
  545. package/dist/web/workflow/node_runner.js +0 -481
  546. package/dist/web/workflow/node_state.js +0 -43
  547. package/dist/web/workflow/node_status.js +0 -20
  548. package/dist/web/workflow/nodes/function_node.js +0 -221
  549. package/dist/web/workflow/nodes/join_node.js +0 -47
  550. package/dist/web/workflow/nodes/node_tool.js +0 -131
  551. package/dist/web/workflow/nodes/parallel_worker.js +0 -120
  552. package/dist/web/workflow/nodes/tool_node.js +0 -126
  553. package/dist/web/workflow/request_input.js +0 -36
  554. package/dist/web/workflow/retry_config.js +0 -43
  555. package/dist/web/workflow/run_llm_agent_as_node.js +0 -266
  556. package/dist/web/workflow/run_node_as_invocation.js +0 -170
  557. package/dist/web/workflow/schedule_dynamic_node.js +0 -26
  558. package/dist/web/workflow/trigger.js +0 -7
  559. package/dist/web/workflow/utils/graph_parser.js +0 -188
  560. package/dist/web/workflow/utils/graph_validation.js +0 -189
  561. package/dist/web/workflow/utils/hitl_utils.js +0 -239
  562. package/dist/web/workflow/utils/rehydration_utils.js +0 -342
  563. package/dist/web/workflow/utils/retry_utils.js +0 -82
  564. package/dist/web/workflow/utils/workflow_graph_utils.js +0 -115
  565. package/dist/web/workflow/workflow.js +0 -529
  566. /package/dist/{web/artifacts/session_artifact_service.js → esm/tools/resume_inputs.js} +0 -0
@@ -0,0 +1,72 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export declare const REFLECT_AND_RETRY_RESPONSE_TYPE = "ERROR_HANDLED_BY_REFLECT_AND_RETRY_PLUGIN";
7
+ export declare const GLOBAL_SCOPE_KEY = "__global_reflect_and_retry_scope__";
8
+ /**
9
+ * Defines the lifecycle scope for tracking failure counts.
10
+ */
11
+ export declare enum TrackingScope {
12
+ /** Track failures within the current agent invocation. */
13
+ INVOCATION = "invocation",
14
+ /** Track failures globally across all invocations. */
15
+ GLOBAL = "global"
16
+ }
17
+ /**
18
+ * A mapping from an item's (tool or model) name to its consecutive failure count.
19
+ */
20
+ export type PerItemFailuresCounter = Map<string, number>;
21
+ /**
22
+ * Response containing tool failure details and retry guidance.
23
+ *
24
+ * Field names use snake_case to match the model-facing reflection payload schema
25
+ * and maintain parity with ADK Python.
26
+ */
27
+ export interface ToolFailureResponse {
28
+ response_type: string;
29
+ error_type: string;
30
+ error_details: string;
31
+ retry_count: number;
32
+ reflection_guidance: string;
33
+ [key: string]: unknown;
34
+ }
35
+ /**
36
+ * Resolves the scope key based on tracking scope and invocation ID.
37
+ *
38
+ * @param scope - The tracking scope (INVOCATION or GLOBAL).
39
+ * @param invocationId - The invocation ID (required for INVOCATION scope).
40
+ * @returns The resolved scope key string.
41
+ */
42
+ export declare function resolveScopeKey(scope: TrackingScope, invocationId?: string): string;
43
+ /**
44
+ * Thread-safe failure counter scoped by invocation or global key.
45
+ */
46
+ export declare class ScopedFailureTracker {
47
+ private readonly scopedFailureCounters;
48
+ private lockPromise;
49
+ private acquireLock;
50
+ /**
51
+ * Atomically increments and returns the failure count for an item.
52
+ *
53
+ * @param scopeKey - The scope identifier (e.g. invocation ID or global key).
54
+ * @param itemName - The name of the tool or model.
55
+ * @returns The updated failure count.
56
+ */
57
+ increment(scopeKey: string, itemName: string): Promise<number>;
58
+ /**
59
+ * Atomically resets the failure count for an item and cleans up state.
60
+ *
61
+ * @param scopeKey - The scope identifier.
62
+ * @param itemName - The name of the tool or model.
63
+ */
64
+ reset(scopeKey: string, itemName: string): Promise<void>;
65
+ /**
66
+ * Gets the current failure count for an item.
67
+ *
68
+ * @param scopeKey - The scope identifier.
69
+ * @param itemName - The name of the tool or model.
70
+ */
71
+ getCount(scopeKey: string, itemName: string): Promise<number>;
72
+ }
@@ -60,38 +60,40 @@ export declare enum ContextCompactionTrigger {
60
60
  * Example:
61
61
  * A simple plugin that logs every tool call.
62
62
  * ```typescript
63
+ * import {BasePlugin, BaseTool, Context, getLogger} from '@google/adk';
64
+ *
65
+ * const logger = getLogger();
66
+ *
63
67
  * class ToolLoggerPlugin extends BasePlugin {
64
68
  * constructor() {
65
69
  * super('tool_logger');
66
70
  * }
67
71
  *
68
72
  * override async beforeToolCallback(
69
- * {tool, toolArgs, toolContext}: {
73
+ * {tool, toolArgs}: {
70
74
  * tool: BaseTool,
71
75
  * toolArgs: Record<string, unknown>,
72
76
  * toolContext: Context,
73
77
  * },
74
78
  * ): Promise<Record<string, unknown> | undefined> {
75
- * this.logger.info(
76
- * `[${this.name}] Calling tool '${tool.name}' with args:
77
- * ${JSON.stringify( toolArgs,
78
- * )}`,
79
+ * logger.info(
80
+ * `[${this.name}] calling tool '${tool.name}' with args: ` +
81
+ * JSON.stringify(toolArgs),
79
82
  * );
80
83
  * return;
81
84
  * }
82
85
  *
83
86
  * override async afterToolCallback(
84
- * {tool, toolArgs, toolContext, result}: {
87
+ * {tool, result}: {
85
88
  * tool: BaseTool,
86
89
  * toolArgs: Record<string, unknown>,
87
90
  * toolContext: Context,
88
91
  * result: Record<string, unknown>,
89
92
  * },
90
93
  * ): Promise<Record<string, unknown> | undefined> {
91
- * this.logger.info(
92
- * `[${this.name}] Tool '${tool.name}' finished with result:
93
- * ${JSON.stringify( result,
94
- * )}`,
94
+ * logger.info(
95
+ * `[${this.name}] tool '${tool.name}' finished with result: ` +
96
+ * JSON.stringify(result),
95
97
  * );
96
98
  * return;
97
99
  * }
@@ -32,8 +32,9 @@ import { BasePlugin } from './base_plugin.js';
32
32
  * ```typescript
33
33
  * const loggingPlugin = new LoggingPlugin();
34
34
  * const runner = new Runner({
35
- * agents: [myAgent],
36
- * // ...
35
+ * appName: 'my_app',
36
+ * agent: myAgent,
37
+ * sessionService: new InMemorySessionService(),
37
38
  * plugins: [loggingPlugin],
38
39
  * });
39
40
  * ```
@@ -0,0 +1,132 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { FinishReason, Part } from '@google/genai';
7
+ import { Context } from '../agents/context.js';
8
+ import { LlmRequest } from '../models/llm_request.js';
9
+ import { LlmResponse } from '../models/llm_response.js';
10
+ import { TrackingScope } from './_reflect_retry_utils.js';
11
+ import { BasePlugin } from './base_plugin.js';
12
+ export declare const RESERVED_TOOL_CALL_ERROR_TYPE = "RESERVED_TOOL_CALL";
13
+ export declare const ADK_HANDLE_MODEL_ERROR_TOOL_NAME = "adk_handle_model_error";
14
+ /**
15
+ * Options for configuring {@link ReflectAndRetryModelPlugin}.
16
+ */
17
+ export interface ReflectAndRetryModelPluginOptions {
18
+ /** Plugin instance identifier. Defaults to 'reflect_retry_model_plugin'. */
19
+ name?: string;
20
+ /** Maximum consecutive model failures before giving up (0 = no retries). Defaults to 3. */
21
+ maxRetries?: number;
22
+ /** If true, raises the exception when retry limit is reached. If false, returns response. Defaults to true. */
23
+ throwExceptionIfRetryExceeded?: boolean;
24
+ /** Determines the lifecycle of the error tracking state. Defaults to TrackingScope.INVOCATION. */
25
+ trackingScope?: TrackingScope;
26
+ /** A list of FinishReasons that should be treated as model errors. Defaults to [FinishReason.MALFORMED_FUNCTION_CALL]. */
27
+ onModelErrors?: FinishReason[];
28
+ }
29
+ /**
30
+ * Provides self-healing, concurrent-safe error recovery for model failures.
31
+ *
32
+ * This plugin intercepts model failures (such as `MALFORMED_FUNCTION_CALL`),
33
+ * provides structured guidance to the LLM for reflection and correction, and
34
+ * retries the turn up to a configurable limit.
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * import {ReflectAndRetryModelPlugin, TrackingScope} from '@google/adk';
39
+ *
40
+ * const modelRetryPlugin = new ReflectAndRetryModelPlugin({
41
+ * maxRetries: 3,
42
+ * trackingScope: TrackingScope.INVOCATION,
43
+ * });
44
+ * ```
45
+ */
46
+ export declare class ReflectAndRetryModelPlugin extends BasePlugin {
47
+ readonly maxRetries: number;
48
+ readonly throwExceptionIfRetryExceeded: boolean;
49
+ readonly scope: TrackingScope;
50
+ readonly onModelErrors: FinishReason[];
51
+ private readonly tracker;
52
+ /**
53
+ * Initializes the {@link ReflectAndRetryModelPlugin}.
54
+ *
55
+ * @param options - Configuration options for the plugin.
56
+ */
57
+ constructor(options?: ReflectAndRetryModelPluginOptions);
58
+ /**
59
+ * Internal framework reflection tool handler.
60
+ */
61
+ adkHandleModelError({ retryCount, }: {
62
+ responseType?: string;
63
+ errorType?: string;
64
+ errorDetails?: string;
65
+ finishReason?: string;
66
+ retryCount?: number;
67
+ }): {
68
+ reflection_guidance: string;
69
+ };
70
+ /**
71
+ * Checks if the model response contains an error matching `onModelErrors`.
72
+ */
73
+ protected checkForModelError(llmResponse: LlmResponse): boolean;
74
+ /**
75
+ * Retrieves the model name from context.
76
+ */
77
+ protected getModelNameFromContext(callbackContext: Context): string;
78
+ /**
79
+ * Prepares the LLM request by attaching the reflection tool.
80
+ */
81
+ beforeModelCallback({ llmRequest, }: {
82
+ callbackContext: Context;
83
+ llmRequest: LlmRequest;
84
+ }): Promise<LlmResponse | undefined>;
85
+ /**
86
+ * Inspects LLM responses, intercepts model errors or reserved tool calls, and handles retries.
87
+ */
88
+ afterModelCallback({ callbackContext, llmResponse, }: {
89
+ callbackContext: Context;
90
+ llmResponse: LlmResponse;
91
+ }): Promise<LlmResponse | undefined>;
92
+ /**
93
+ * Provides the adk_handle_model_error tool for reflection and retries.
94
+ */
95
+ protected provideReflectionTool(llmRequest: LlmRequest): void;
96
+ /**
97
+ * Checks if the model response calls the reserved reflection tool.
98
+ */
99
+ protected hasReservedToolCall(llmResponse: LlmResponse): boolean;
100
+ /**
101
+ * Handles direct calls to the reserved reflection tool.
102
+ */
103
+ protected handleReservedToolCall(callbackContext: Context, _llmResponse: LlmResponse): Promise<LlmResponse | undefined>;
104
+ /**
105
+ * Handles detected model errors by initiating retry logic.
106
+ */
107
+ protected handleModelError(callbackContext: Context, llmResponse: LlmResponse): Promise<LlmResponse | undefined>;
108
+ /**
109
+ * Tracks retry count, generates retry response, and checks against limits.
110
+ */
111
+ protected handleModelRetry(callbackContext: Context, errorType?: string, errorDetails?: string, finishReason?: FinishReason): Promise<LlmResponse | undefined>;
112
+ /**
113
+ * Generates a function call part for the model retry tool.
114
+ */
115
+ protected generateModelRetryPart(retryCount: number, errorType?: string, errorDetails?: string, finishReason?: FinishReason): Part;
116
+ /**
117
+ * Generates a unique ID for the model retry tool call.
118
+ */
119
+ protected getModelRetryUuid(): string;
120
+ /**
121
+ * Returns the scope key for model failure tracking.
122
+ */
123
+ protected getModelScopeKey(callbackContext: Context): string;
124
+ /**
125
+ * Increment the failure count for a model within a scope.
126
+ */
127
+ protected incrementModelFailureCount(scopeKey: string, itemName: string): Promise<number>;
128
+ /**
129
+ * Reset the failure count for a model within a scope.
130
+ */
131
+ protected resetModelFailureCount(scopeKey: string, itemName: string): Promise<void>;
132
+ }
@@ -0,0 +1,187 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Context } from '../agents/context.js';
7
+ import { BaseTool } from '../tools/base_tool.js';
8
+ import { TrackingScope } from './_reflect_retry_utils.js';
9
+ import { BasePlugin } from './base_plugin.js';
10
+ /**
11
+ * Options for configuring {@link ReflectAndRetryToolPlugin}.
12
+ */
13
+ export interface ReflectAndRetryToolPluginOptions {
14
+ /**
15
+ * Plugin instance identifier.
16
+ * Defaults to 'reflect_retry_tool_plugin'.
17
+ */
18
+ name?: string;
19
+ /**
20
+ * Maximum consecutive failures before giving up (0 = no retries).
21
+ * Defaults to 3.
22
+ */
23
+ maxRetries?: number;
24
+ /**
25
+ * If true, raises the final exception when the retry limit is reached.
26
+ * If false, returns structured retry-exceeded guidance instead.
27
+ * Defaults to true.
28
+ */
29
+ throwExceptionIfRetryExceeded?: boolean;
30
+ /**
31
+ * Determines the lifecycle of the error tracking state.
32
+ * Defaults to `TrackingScope.INVOCATION` (tracking per-invocation).
33
+ */
34
+ trackingScope?: TrackingScope;
35
+ }
36
+ /**
37
+ * Provides self-healing, concurrent-safe error recovery for tool failures.
38
+ *
39
+ * This plugin intercepts tool failures, provides structured guidance to the LLM
40
+ * for reflection and correction, and retries the operation up to a configurable
41
+ * limit.
42
+ *
43
+ * **Key Features:**
44
+ * - **Concurrency Safe:** Uses locking to safely handle parallel tool executions.
45
+ * - **Configurable Scope:** Tracks failures per-invocation (default) or globally
46
+ * using the {@link TrackingScope} enum.
47
+ * - **Extensible Scoping:** The `getScopeKey` method can be overridden to
48
+ * implement custom tracking logic (e.g., per-user or per-session).
49
+ * - **Granular Tracking:** Failure counts are tracked per-tool within the defined
50
+ * scope. A success with one tool resets its counter without affecting others.
51
+ * - **Custom Error Extraction:** Supports detecting errors in normal tool responses
52
+ * that do not throw exceptions, by overriding `extractErrorFromResult`.
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * import {ReflectAndRetryToolPlugin, TrackingScope} from '@google/adk';
57
+ *
58
+ * // Example 1: Track failures per invocation (default)
59
+ * const errorPlugin = new ReflectAndRetryToolPlugin({maxRetries: 3});
60
+ *
61
+ * // Example 2: Track failures globally across all turns
62
+ * const globalPlugin = new ReflectAndRetryToolPlugin({
63
+ * maxRetries: 5,
64
+ * trackingScope: TrackingScope.GLOBAL,
65
+ * });
66
+ *
67
+ * // Example 3: Do not throw exception when retry limit is exceeded
68
+ * const softFailPlugin = new ReflectAndRetryToolPlugin({
69
+ * maxRetries: 3,
70
+ * throwExceptionIfRetryExceeded: false,
71
+ * });
72
+ * ```
73
+ */
74
+ export declare class ReflectAndRetryToolPlugin extends BasePlugin {
75
+ readonly maxRetries: number;
76
+ readonly throwExceptionIfRetryExceeded: boolean;
77
+ readonly scope: TrackingScope;
78
+ private readonly tracker;
79
+ /**
80
+ * Initializes the {@link ReflectAndRetryToolPlugin}.
81
+ *
82
+ * @param options - Configuration options for the plugin.
83
+ */
84
+ constructor(options?: ReflectAndRetryToolPluginOptions);
85
+ /**
86
+ * Handles successful tool calls or extracts and processes errors.
87
+ *
88
+ * @param params - The tool callback parameters.
89
+ * @returns An optional record containing reflection guidance if an error is
90
+ * detected, or undefined if the tool call was successful or the response is
91
+ * already a reflection message.
92
+ */
93
+ afterToolCallback({ tool, toolArgs, toolContext, result, }: {
94
+ tool: BaseTool;
95
+ toolArgs: Record<string, unknown>;
96
+ toolContext: Context;
97
+ result: Record<string, unknown>;
98
+ }): Promise<Record<string, unknown> | undefined>;
99
+ /**
100
+ * Extracts an error from a successful tool result and triggers retry logic.
101
+ *
102
+ * This is useful when a tool call finishes without throwing an exception but
103
+ * the result contains an error payload like `{status: 'error', message: '...'}`
104
+ * that should be handled by the plugin.
105
+ *
106
+ * @param params - Tool execution context and result.
107
+ * @returns The extracted error if any, or undefined if no error was detected.
108
+ */
109
+ extractErrorFromResult(params: {
110
+ tool: BaseTool;
111
+ toolArgs: Record<string, unknown>;
112
+ toolContext: Context;
113
+ result: unknown;
114
+ }): Promise<unknown | undefined>;
115
+ /**
116
+ * Handles tool exceptions by providing reflection guidance.
117
+ *
118
+ * @param params - The error callback parameters.
119
+ * @returns An optional record containing reflection guidance for the error.
120
+ */
121
+ onToolErrorCallback({ tool, toolArgs, toolContext, error, }: {
122
+ tool: BaseTool;
123
+ toolArgs: Record<string, unknown>;
124
+ toolContext: Context;
125
+ error: Error;
126
+ }): Promise<Record<string, unknown> | undefined>;
127
+ /**
128
+ * Central, thread-safe logic for processing tool errors.
129
+ *
130
+ * @param tool - The tool that was called.
131
+ * @param toolArgs - The arguments passed to the tool.
132
+ * @param toolContext - The context of the tool call.
133
+ * @param error - The error to be handled.
134
+ * @returns An optional record containing reflection guidance for the error.
135
+ */
136
+ protected handleToolError(tool: BaseTool, toolArgs: Record<string, unknown>, toolContext: Context, error: unknown): Promise<Record<string, unknown> | undefined>;
137
+ /**
138
+ * Returns a unique key for the state tracker based on the configured scope.
139
+ *
140
+ * This method can be overridden in a subclass to implement custom scoping
141
+ * logic, for example tracking failures on a per-user or per-session basis.
142
+ *
143
+ * @param toolContext - The tool context.
144
+ * @returns The resolved scope key.
145
+ */
146
+ protected getScopeKey(toolContext: Context): string;
147
+ /**
148
+ * Atomically resets the failure count for a tool and cleans up state.
149
+ *
150
+ * @param toolContext - The tool context.
151
+ * @param toolName - The name of the tool.
152
+ */
153
+ protected resetFailuresForTool(toolContext: Context, toolName: string): Promise<void>;
154
+ /**
155
+ * Ensures the given error is an Error instance, wrapping if not.
156
+ *
157
+ * @param error - The error object.
158
+ * @returns An Error instance.
159
+ */
160
+ protected ensureException(error: unknown): Error;
161
+ /**
162
+ * Formats error details for inclusion in the reflection message.
163
+ *
164
+ * @param error - The error object.
165
+ * @returns Formatted error string.
166
+ */
167
+ protected formatErrorDetails(error: unknown): string;
168
+ /**
169
+ * Generates structured reflection guidance for tool failures.
170
+ *
171
+ * @param tool - The tool that failed.
172
+ * @param toolArgs - The arguments supplied to the tool.
173
+ * @param error - The error encountered.
174
+ * @param retryCount - The current retry count.
175
+ * @returns The structured tool failure response record.
176
+ */
177
+ protected createToolReflectionResponse(tool: BaseTool, toolArgs: Record<string, unknown>, error: unknown, retryCount: number): Record<string, unknown>;
178
+ /**
179
+ * Generates guidance when the maximum retry limit is exceeded.
180
+ *
181
+ * @param tool - The tool that failed.
182
+ * @param toolArgs - The arguments supplied to the tool.
183
+ * @param error - The error encountered.
184
+ * @returns The structured retry-exceeded failure response record.
185
+ */
186
+ protected getToolRetryExceedMsg(tool: BaseTool, toolArgs: Record<string, unknown>, error: unknown): Record<string, unknown>;
187
+ }
@@ -10,6 +10,7 @@ import { RunConfig } from '../agents/run_config.js';
10
10
  import { App } from '../apps/app.js';
11
11
  import { ResumabilityConfig } from '../apps/resumability_config.js';
12
12
  import { BaseArtifactService } from '../artifacts/base_artifact_service.js';
13
+ import { SessionArtifactService } from '../artifacts/session_artifact_service.js';
13
14
  import { BaseCredentialService } from '../auth/credential_service/base_credential_service.js';
14
15
  import { Event } from '../events/event.js';
15
16
  import { BaseMemoryService } from '../memory/base_memory_service.js';
@@ -37,8 +38,7 @@ export interface RunnerConfig {
37
38
  * A bare node — a `Workflow`, most usefully — is accepted as the root and
38
39
  * driven directly, so a graph does not have to be wrapped by hand to be run.
39
40
  * The accepted set is the one an edge takes: any other node-like value
40
- * becomes the single node of a one-node workflow. Mirrors adk-python, whose
41
- * `Runner.agent` is typed `BaseNode`.
41
+ * becomes the single node of a one-node workflow.
42
42
  */
43
43
  agent?: RunnableNode;
44
44
  /**
@@ -48,7 +48,7 @@ export interface RunnerConfig {
48
48
  /**
49
49
  * An optional service for storing and retrieving artifacts.
50
50
  */
51
- artifactService?: BaseArtifactService;
51
+ artifactService?: BaseArtifactService | SessionArtifactService;
52
52
  /**
53
53
  * The service for managing sessions.
54
54
  */
@@ -111,7 +111,7 @@ export declare class Runner {
111
111
  */
112
112
  readonly agent: RunnableRoot;
113
113
  readonly pluginManager: PluginManager;
114
- readonly artifactService?: BaseArtifactService;
114
+ readonly artifactService?: BaseArtifactService | SessionArtifactService;
115
115
  readonly sessionService: BaseSessionService;
116
116
  readonly memoryService?: BaseMemoryService;
117
117
  readonly credentialService?: BaseCredentialService;
@@ -175,9 +175,8 @@ export declare class Runner {
175
175
  * Saves artifacts from the message parts and replaces the inline data with
176
176
  * a file name placeholder and optional file reference.
177
177
  *
178
+ * @param artifactService The session-scoped artifact service to save to.
178
179
  * @param invocationId The current invocation ID.
179
- * @param userId The user ID of the session.
180
- * @param sessionId The session ID of the session.
181
180
  * @param message The message containing parts to process.
182
181
  */
183
182
  private saveArtifacts;
@@ -194,7 +193,7 @@ export declare class Runner {
194
193
  * Whether the agent to run can transfer to any other agent in the agent tree.
195
194
  *
196
195
  * @param agentToRun The agent to check for transferability.
197
- * @returns True if the agent can transfer, False otherwise.
196
+ * @returns True if the agent can transfer, false otherwise.
198
197
  */
199
198
  private isRoutableLlmAgent;
200
199
  /**
@@ -242,7 +241,7 @@ export declare function determineAgentForResumption(session: Session, rootAgent:
242
241
  * `disallowTransferToParent` set to false).
243
242
  *
244
243
  * @param agentToRun The agent to check for transferability.
245
- * @returns True if the agent can transfer, False otherwise.
244
+ * @returns True if the agent can transfer, false otherwise.
246
245
  */
247
246
  export declare function isRoutableLlmAgent(agentToRun: BaseAgent): boolean;
248
247
  /**
@@ -3,7 +3,7 @@
3
3
  * Copyright 2026 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { Options as MikroDBOptions } from '@mikro-orm/core';
6
+ import type { MikroORMOptions as MikroDBOptions } from './db/operations.js';
7
7
  import { Event } from '../events/event.js';
8
8
  import { AppendEventRequest, BaseSessionService, CreateSessionRequest, DeleteSessionRequest, GetSessionRequest, ListSessionsRequest, ListSessionsResponse } from './base_session_service.js';
9
9
  import { Session } from './session.js';
@@ -3,10 +3,22 @@
3
3
  * Copyright 2026 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { MikroORM, Options as MikroORMOptions } from '@mikro-orm/core';
6
+ import type { MikroORM, Options } from '@mikro-orm/core';
7
+ /**
8
+ * The user-facing MikroORM config shape. Since v7 `Options` marks every key
9
+ * that has a default as required, so a partial config has to be described as
10
+ * `Partial<Options>`.
11
+ */
12
+ export type MikroORMOptions = Partial<Options>;
7
13
  /**
8
14
  * Parses a database connection URI and returns MikroORM Options.
9
15
  *
16
+ * Dialect drivers are imported dynamically so that installing `@google/adk`
17
+ * does not pull in five database drivers. Adding a dialect here therefore also
18
+ * means adding it to core's `peerDependencies` and to dev's `dependencies` (see
19
+ * "Dependency declarations" in CONTRIBUTING.md);
20
+ * `tests/integration/lazy_load_db_drivers/driver_manifest_test.ts` enforces it.
21
+ *
10
22
  * @param uri The database connection URI (e.g., "postgres://user:password@host:port/database")
11
23
  * @returns MikroORM Options configured for the database
12
24
  * @throws Error if the URI is invalid or unsupported
@@ -3,38 +3,50 @@
3
3
  * Copyright 2026 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { PrimaryKey } from '@mikro-orm/core';
6
+ import { EntitySchema, type Opt, PrimaryKeyProp } from '@mikro-orm/core';
7
7
  import { Event } from '../../events/event.js';
8
8
  export declare const SCHEMA_VERSION_KEY = "schema_version";
9
9
  export declare const SCHEMA_VERSION_1_JSON = "1";
10
10
  export declare const STORAGE_KEY_COLUMN_LENGTH = 191;
11
+ /**
12
+ * Fractional-second digits requested for the stored event timestamp.
13
+ *
14
+ * MySQL and MariaDB round a `datetime` column to whole seconds unless a
15
+ * precision is given. That collapses events written in the same second onto one
16
+ * value and leaves their order undefined. Other backends are unaffected:
17
+ * PostgreSQL already defaults to six digits and SQLite ignores the precision.
18
+ */
19
+ export declare const EVENT_TIMESTAMP_PRECISION = 6;
11
20
  export declare class StorageMetadata {
12
21
  key: string;
13
22
  value: string;
14
23
  }
24
+ export declare const storageMetadataSchema: EntitySchema<StorageMetadata, never, import("@mikro-orm/core").EntityCtor<StorageMetadata>>;
15
25
  export declare class StorageAppState {
16
26
  appName: string;
17
27
  state: Record<string, unknown>;
18
- updateTime: Date;
28
+ updateTime: Opt<Date>;
19
29
  }
30
+ export declare const storageAppStateSchema: EntitySchema<StorageAppState, never, import("@mikro-orm/core").EntityCtor<StorageAppState>>;
20
31
  export declare class StorageUserState {
21
- [PrimaryKey.name]?: [string, string] | undefined;
22
32
  appName: string;
23
33
  userId: string;
24
34
  state: Record<string, unknown>;
25
- updateTime: Date;
35
+ updateTime: Opt<Date>;
36
+ [PrimaryKeyProp]?: ['appName', 'userId'];
26
37
  }
38
+ export declare const storageUserStateSchema: EntitySchema<StorageUserState, never, import("@mikro-orm/core").EntityCtor<StorageUserState>>;
27
39
  export declare class StorageSession {
28
- [PrimaryKey.name]?: [string, string, string] | undefined;
29
40
  id: string;
30
41
  appName: string;
31
42
  userId: string;
32
43
  state: Record<string, unknown>;
33
- createTime: Date;
34
- updateTime: Date;
44
+ createTime: Opt<Date>;
45
+ updateTime: Opt<Date>;
46
+ [PrimaryKeyProp]?: ['id', 'appName', 'userId'];
35
47
  }
48
+ export declare const storageSessionSchema: EntitySchema<StorageSession, never, import("@mikro-orm/core").EntityCtor<StorageSession>>;
36
49
  export declare class StorageEvent {
37
- [PrimaryKey.name]?: [string, string, string, string] | undefined;
38
50
  id: string;
39
51
  appName: string;
40
52
  userId: string;
@@ -42,5 +54,7 @@ export declare class StorageEvent {
42
54
  invocationId: string;
43
55
  timestamp: Date;
44
56
  eventData: Event;
57
+ [PrimaryKeyProp]?: ['id', 'appName', 'userId', 'sessionId'];
45
58
  }
46
- export declare const ENTITIES: (typeof StorageMetadata | typeof StorageAppState | typeof StorageEvent)[];
59
+ export declare const storageEventSchema: EntitySchema<StorageEvent, never, import("@mikro-orm/core").EntityCtor<StorageEvent>>;
60
+ export declare const ENTITIES: (EntitySchema<StorageMetadata, never, import("@mikro-orm/core").EntityCtor<StorageMetadata>> | EntitySchema<StorageAppState, never, import("@mikro-orm/core").EntityCtor<StorageAppState>> | EntitySchema<StorageUserState, never, import("@mikro-orm/core").EntityCtor<StorageUserState>> | EntitySchema<StorageSession, never, import("@mikro-orm/core").EntityCtor<StorageSession>> | EntitySchema<StorageEvent, never, import("@mikro-orm/core").EntityCtor<StorageEvent>>)[];
@@ -33,6 +33,17 @@ export interface BaseToolParams {
33
33
  * Defined once and shared by all BaseTool instances.
34
34
  */
35
35
  declare const BASE_TOOL_SIGNATURE_SYMBOL: unique symbol;
36
+ /**
37
+ * Marks a tool the model runs itself rather than the framework — see
38
+ * `BuiltInTool`. Such a tool claims its name in the `toolsDict` only so a
39
+ * function call naming it can be routed, so a genuinely callable tool of the
40
+ * same name takes precedence over it.
41
+ */
42
+ export declare const IN_MODEL_TOOL_SYMBOL: unique symbol;
43
+ /**
44
+ * Whether `tool` is one the model runs itself.
45
+ */
46
+ export declare function isInModelTool(tool: unknown): boolean;
36
47
  /**
37
48
  * Type guard to check if an object is an instance of BaseTool.
38
49
  * @param obj The object to check.
@@ -65,10 +65,9 @@ export declare abstract class BaseToolset {
65
65
  * process the llm request. e.g. ComputerUseToolset can add computer use
66
66
  * tool to the llm request.
67
67
  *
68
- * @param toolContext The context of the tool.
69
- * @param llmRequest The outgoing LLM request, mutable this method.
68
+ * @param _toolContext The context of the tool.
69
+ * @param _llmRequest The outgoing LLM request, mutable this method.
70
70
  */
71
- processLlmRequest(toolContext: Context, // eslint-disable-line @typescript-eslint/no-unused-vars
72
- llmRequest: LlmRequest): Promise<void>;
71
+ processLlmRequest(_toolContext: Context, _llmRequest: LlmRequest): Promise<void>;
73
72
  }
74
73
  export {};