@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
@@ -23,7 +23,7 @@ import { BaseAgent } from "./base_agent.js";
23
23
  import { isLlmAgent } from "./llm_agent.js";
24
24
  import { ReadonlyContext } from "./readonly_context.js";
25
25
  const TASK_COMPLETED_TOOL_NAME = "task_completed";
26
- const SEQUENTIAL_AGENT_SIGNATURE_SYMBOL = Symbol.for(
26
+ const SEQUENTIAL_AGENT_SIGNATURE_SYMBOL = /* @__PURE__ */ Symbol.for(
27
27
  "google.adk.sequentialAgent"
28
28
  );
29
29
  function isSequentialAgent(obj) {
@@ -23,7 +23,7 @@ function validateAppName(name) {
23
23
  }
24
24
  }
25
25
  __name(validateAppName, "validateAppName");
26
- const APP_SIGNATURE_SYMBOL = Symbol.for("google.adk.app");
26
+ const APP_SIGNATURE_SYMBOL = /* @__PURE__ */ Symbol.for("google.adk.app");
27
27
  function isApp(obj) {
28
28
  return typeof obj === "object" && obj !== null && APP_SIGNATURE_SYMBOL in obj && obj[APP_SIGNATURE_SYMBOL] === true;
29
29
  }
@@ -474,10 +474,9 @@ async function* iterateArtifactDirs(dir) {
474
474
  );
475
475
  if (hasVersions) {
476
476
  yield dir;
477
- return;
478
477
  }
479
478
  for (const entry of entries) {
480
- if (entry.isDirectory()) {
479
+ if (entry.isDirectory() && entry.name !== "versions") {
481
480
  const subdir = path.join(dir, entry.name);
482
481
  for await (const foundDir of iterateArtifactDirs(subdir)) {
483
482
  yield foundDir;
@@ -7,12 +7,21 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
7
7
  * Copyright 2026 Google LLC
8
8
  * SPDX-License-Identifier: Apache-2.0
9
9
  */
10
+ var _a;
11
+ const SESSION_ARTIFACT_SERVICE_SIGNATURE_SYMBOL = /* @__PURE__ */ Symbol.for(
12
+ "google.adk.sessionArtifactService"
13
+ );
14
+ _a = SESSION_ARTIFACT_SERVICE_SIGNATURE_SYMBOL;
10
15
  const _ScopedArtifactService = class _ScopedArtifactService {
11
16
  constructor(delegate, appName, userId, sessionId) {
12
17
  this.delegate = delegate;
13
18
  this.appName = appName;
14
19
  this.userId = userId;
15
20
  this.sessionId = sessionId;
21
+ /**
22
+ * Brands this class as a session-scoped artifact service.
23
+ */
24
+ this[_a] = true;
16
25
  }
17
26
  async saveArtifact(request) {
18
27
  return this.delegate.saveArtifact({
@@ -1,7 +1,19 @@
1
1
  import {createRequire as topLevelCreateRequire} from 'module';
2
2
  const require = topLevelCreateRequire(import.meta.url);
3
+ var __defProp = Object.defineProperty;
4
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
5
  /**
4
6
  * @license
5
7
  * Copyright 2026 Google LLC
6
8
  * SPDX-License-Identifier: Apache-2.0
7
9
  */
10
+ const SESSION_ARTIFACT_SERVICE_SIGNATURE_SYMBOL = /* @__PURE__ */ Symbol.for(
11
+ "google.adk.sessionArtifactService"
12
+ );
13
+ function isSessionArtifactService(service) {
14
+ return typeof service === "object" && service !== null && SESSION_ARTIFACT_SERVICE_SIGNATURE_SYMBOL in service && service[SESSION_ARTIFACT_SERVICE_SIGNATURE_SYMBOL] === true;
15
+ }
16
+ __name(isSessionArtifactService, "isSessionArtifactService");
17
+ export {
18
+ isSessionArtifactService
19
+ };
@@ -9,6 +9,11 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
9
9
  */
10
10
  import { randomUUID } from "../utils/env_aware_utils.js";
11
11
  import { OAuth2CredentialExchanger } from "./oauth2/oauth2_credential_exchanger.js";
12
+ import {
13
+ createS256CodeChallenge,
14
+ generateCodeVerifier
15
+ } from "./oauth2/oauth2_utils.js";
16
+ const S256_CODE_CHALLENGE_METHOD = "S256";
12
17
  const _AuthHandler = class _AuthHandler {
13
18
  constructor(authConfig) {
14
19
  this.authConfig = authConfig;
@@ -17,7 +22,16 @@ const _AuthHandler = class _AuthHandler {
17
22
  const credentialKey = "temp:" + this.authConfig.credentialKey;
18
23
  return state.get(credentialKey);
19
24
  }
25
+ /**
26
+ * Stores the exchanged credential in the session state.
27
+ *
28
+ * @param state The session state to store the credential in.
29
+ * @throws Error: If the auth config has no credentialKey.
30
+ */
20
31
  async parseAndStoreAuthResponse(state) {
32
+ if (!this.authConfig.credentialKey) {
33
+ throw new Error("credentialKey is empty.");
34
+ }
21
35
  const credentialKey = "temp:" + this.authConfig.credentialKey;
22
36
  const authSchemeType = this.authConfig.authScheme.type;
23
37
  if (!["oauth2", "openIdConnect"].includes(authSchemeType)) {
@@ -73,9 +87,14 @@ const _AuthHandler = class _AuthHandler {
73
87
  /**
74
88
  * Generates an response containing the auth uri for user to sign in.
75
89
  *
90
+ * When the credential requests PKCE, the URI also carries the S256 code
91
+ * challenge derived from the credential's code verifier, and the returned
92
+ * credential carries the verifier the later token exchange must send.
93
+ *
76
94
  * @return An AuthCredential object containing the auth URI and state.
77
95
  * @throws Error: If the authorization endpoint is not configured in the
78
- * auth scheme.
96
+ * auth scheme, or the credential requests a code challenge method other
97
+ * than 'S256'.
79
98
  */
80
99
  generateAuthUri() {
81
100
  const authScheme = this.authConfig.authScheme;
@@ -83,6 +102,13 @@ const _AuthHandler = class _AuthHandler {
83
102
  if (!authCredential || !authCredential.oauth2) {
84
103
  return authCredential;
85
104
  }
105
+ const oauth2 = authCredential.oauth2;
106
+ const codeChallengeMethod = oauth2.codeChallengeMethod;
107
+ if (codeChallengeMethod && codeChallengeMethod !== S256_CODE_CHALLENGE_METHOD) {
108
+ throw new Error(
109
+ `Unsupported codeChallengeMethod: ${codeChallengeMethod}. Only '${S256_CODE_CHALLENGE_METHOD}' is supported.`
110
+ );
111
+ }
86
112
  let authorizationEndpoint = "";
87
113
  let scopes = [];
88
114
  if ("authorizationEndpoint" in authScheme) {
@@ -107,22 +133,35 @@ const _AuthHandler = class _AuthHandler {
107
133
  }
108
134
  const state = randomUUID();
109
135
  const url = new URL(authorizationEndpoint);
110
- url.searchParams.set("client_id", authCredential.oauth2.clientId || "");
111
- url.searchParams.set(
112
- "redirect_uri",
113
- authCredential.oauth2.redirectUri || ""
114
- );
136
+ url.searchParams.set("client_id", oauth2.clientId || "");
137
+ url.searchParams.set("redirect_uri", oauth2.redirectUri || "");
115
138
  url.searchParams.set("response_type", "code");
116
139
  url.searchParams.set("scope", scopes.join(" "));
117
140
  url.searchParams.set("state", state);
118
141
  url.searchParams.set("access_type", "offline");
119
142
  url.searchParams.set("prompt", "consent");
143
+ if (oauth2.audience) {
144
+ url.searchParams.set("audience", oauth2.audience);
145
+ }
146
+ if (oauth2.nonce) {
147
+ url.searchParams.set("nonce", oauth2.nonce);
148
+ }
149
+ let codeVerifier = oauth2.codeVerifier;
150
+ if (codeChallengeMethod) {
151
+ codeVerifier != null ? codeVerifier : codeVerifier = generateCodeVerifier();
152
+ url.searchParams.set(
153
+ "code_challenge",
154
+ createS256CodeChallenge(codeVerifier)
155
+ );
156
+ url.searchParams.set("code_challenge_method", codeChallengeMethod);
157
+ }
120
158
  const exchangedAuthCredential = {
121
159
  ...authCredential,
122
160
  oauth2: {
123
- ...authCredential.oauth2,
161
+ ...oauth2,
124
162
  authUri: url.toString(),
125
- state
163
+ state,
164
+ codeVerifier
126
165
  }
127
166
  };
128
167
  return exchangedAuthCredential;
@@ -19,7 +19,7 @@ const _OAuth2CredentialRefresher = class _OAuth2CredentialRefresher {
19
19
  *
20
20
  * @param authCredential The OAuth2 credential to check.
21
21
  * @param authScheme The OAuth2 authentication scheme (optional).
22
- * @returns True if the credential needs to be refreshed, False otherwise.
22
+ * @returns True if the credential needs to be refreshed, false otherwise.
23
23
  */
24
24
  async isRefreshNeeded(authCredential) {
25
25
  if (!authCredential.oauth2) {
@@ -7,8 +7,19 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
7
7
  * Copyright 2026 Google LLC
8
8
  * SPDX-License-Identifier: Apache-2.0
9
9
  */
10
+ import { createHash, randomBytes } from "node:crypto";
10
11
  import { logger } from "../../utils/logger.js";
12
+ import { redactUriPassword } from "../../utils/redact_uri.js";
11
13
  import { validateDiscoveryUrl } from "./oauth2_discovery.js";
14
+ const CODE_VERIFIER_BYTES = 36;
15
+ function generateCodeVerifier() {
16
+ return randomBytes(CODE_VERIFIER_BYTES).toString("base64url");
17
+ }
18
+ __name(generateCodeVerifier, "generateCodeVerifier");
19
+ function createS256CodeChallenge(codeVerifier) {
20
+ return createHash("sha256").update(codeVerifier).digest("base64url");
21
+ }
22
+ __name(createS256CodeChallenge, "createS256CodeChallenge");
12
23
  function getTokenEndpoint(authScheme) {
13
24
  if (authScheme.type === "openIdConnect" && authScheme.tokenEndpoint) {
14
25
  return authScheme.tokenEndpoint;
@@ -63,8 +74,8 @@ function parseAuthorizationCode(uri) {
63
74
  try {
64
75
  const url = new URL(uri);
65
76
  return url.searchParams.get("code") || void 0;
66
- } catch (e) {
67
- logger.warn(`Failed to parse authorization URI ${uri}: ${e}`);
77
+ } catch {
78
+ logger.warn(`Failed to parse authorization URI ${redactUriPassword(uri)}`);
68
79
  return void 0;
69
80
  }
70
81
  }
@@ -98,7 +109,9 @@ function isTokenExpired(token, leeway = 60) {
98
109
  __name(isTokenExpired, "isTokenExpired");
99
110
  export {
100
111
  createOAuth2TokenRequestBody,
112
+ createS256CodeChallenge,
101
113
  fetchOAuth2Tokens,
114
+ generateCodeVerifier,
102
115
  getTokenEndpoint,
103
116
  isTokenExpired,
104
117
  parseAuthorizationCode
@@ -8,7 +8,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
8
8
  * SPDX-License-Identifier: Apache-2.0
9
9
  */
10
10
  var _a;
11
- const BASE_CODE_EXECUTOR_SIGNATURE_SYMBOL = Symbol.for(
11
+ const BASE_CODE_EXECUTOR_SIGNATURE_SYMBOL = /* @__PURE__ */ Symbol.for(
12
12
  "google.adk.baseCodeExecutor"
13
13
  );
14
14
  function isBaseCodeExecutor(obj) {
@@ -10,7 +10,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
10
10
  var _a, _b;
11
11
  import { isGemini2OrAbove } from "../utils/model_name.js";
12
12
  import { BaseCodeExecutor } from "./base_code_executor.js";
13
- const BUILT_IN_CODE_EXECUTOR_SIGNATURE_SYMBOL = Symbol.for(
13
+ const BUILT_IN_CODE_EXECUTOR_SIGNATURE_SYMBOL = /* @__PURE__ */ Symbol.for(
14
14
  "google.adk.builtInCodeExecutor"
15
15
  );
16
16
  function isBuiltInCodeExecutor(obj) {
@@ -38,7 +38,7 @@ function extractCodeAndTruncateContent(content, codeBlockDelimiters) {
38
38
  const part = content.parts[i];
39
39
  if (part.executableCode && (i === content.parts.length - 1 || !content.parts[i + 1].codeExecutionResult)) {
40
40
  content.parts = content.parts.slice(0, i + 1);
41
- return part.executableCode.code;
41
+ return part.executableCode.code || "";
42
42
  }
43
43
  }
44
44
  const textParts = content.parts.filter((part) => part.text);
@@ -113,7 +113,7 @@ function convertCodeExecutionParts(content, codeBlockDelimiter, executionResultD
113
113
  const lastPart = content.parts[content.parts.length - 1];
114
114
  if (lastPart.executableCode) {
115
115
  content.parts[content.parts.length - 1] = {
116
- text: codeBlockDelimiter[0] + lastPart.executableCode.code + codeBlockDelimiter[1]
116
+ text: codeBlockDelimiter[0] + (lastPart.executableCode.code || "") + codeBlockDelimiter[1]
117
117
  };
118
118
  } else if (content.parts.length == 1 && lastPart.codeExecutionResult) {
119
119
  content.parts[content.parts.length - 1] = {
@@ -0,0 +1,155 @@
1
+ import {createRequire as topLevelCreateRequire} from 'module';
2
+ const require = topLevelCreateRequire(import.meta.url);
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
+ var __decorateClass = (decorators, target, key, kind) => {
7
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
8
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
9
+ if (decorator = decorators[i])
10
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
11
+ if (kind && result) __defProp(target, key, result);
12
+ return result;
13
+ };
14
+ /**
15
+ * @license
16
+ * Copyright 2026 Google LLC
17
+ * SPDX-License-Identifier: Apache-2.0
18
+ */
19
+ import * as path from "node:path";
20
+ import { experimental } from "../utils/experimental.js";
21
+ import { logger } from "../utils/logger.js";
22
+ import { BaseCodeExecutor } from "./base_code_executor.js";
23
+ import {
24
+ CodeExecutionLanguage
25
+ } from "./code_execution_utils.js";
26
+ import {
27
+ DockerContainer,
28
+ TIMEOUT_EXIT_CODE
29
+ } from "./docker_container.js";
30
+ const DEFAULT_IMAGE_TAG = "adk-code-executor:latest";
31
+ const DEFAULT_TIMEOUT_SECONDS = 300;
32
+ const TIMEOUT_COMMAND = ["timeout", "-s", "KILL"];
33
+ const LANGUAGE_RUNTIME_COMMAND_MAP = {
34
+ [CodeExecutionLanguage.PYTHON]: ["python3", "-c"],
35
+ [CodeExecutionLanguage.JAVASCRIPT]: ["node", "-e"],
36
+ [CodeExecutionLanguage.TYPESCRIPT]: ["tsx", "--eval"],
37
+ [CodeExecutionLanguage.SHELL]: ["sh", "-c"]
38
+ };
39
+ let ContainerCodeExecutor = class extends BaseCodeExecutor {
40
+ constructor(options = {}) {
41
+ var _a, _b, _c;
42
+ super();
43
+ if (!options.image && !options.dockerPath) {
44
+ throw new Error(
45
+ "Either image or dockerPath must be set for ContainerCodeExecutor."
46
+ );
47
+ }
48
+ this.timeoutSeconds = (_a = options.timeoutSeconds) != null ? _a : DEFAULT_TIMEOUT_SECONDS;
49
+ if (this.timeoutSeconds <= 0) {
50
+ throw new Error(
51
+ "timeoutSeconds must be greater than 0 for ContainerCodeExecutor."
52
+ );
53
+ }
54
+ this.dockerPath = options.dockerPath ? path.resolve(options.dockerPath) : void 0;
55
+ this.containerOptions = {
56
+ image: (_b = options.image) != null ? _b : DEFAULT_IMAGE_TAG,
57
+ networkEnabled: (_c = options.networkEnabled) != null ? _c : false,
58
+ baseUrl: options.baseUrl,
59
+ docker: options.docker
60
+ };
61
+ defineFrozenFalse(this, "stateful");
62
+ defineFrozenFalse(this, "optimizeDataFile");
63
+ }
64
+ async executeCode(params) {
65
+ const { code, language } = params.codeExecutionInput;
66
+ const command = LANGUAGE_RUNTIME_COMMAND_MAP[language];
67
+ if (!command) {
68
+ throw new Error(
69
+ `Unsupported language for ContainerCodeExecutor: ${language}. Supported: ${Object.keys(LANGUAGE_RUNTIME_COMMAND_MAP).join(", ")}.`
70
+ );
71
+ }
72
+ await this.ensureContainer();
73
+ const { stdout, stderr, exitCode } = await this.container.execute(
74
+ [...TIMEOUT_COMMAND, String(this.timeoutSeconds), ...command, code],
75
+ this.timeoutSeconds
76
+ );
77
+ logger.debug(`Executed ${language} code:
78
+ \`\`\`
79
+ ${code}
80
+ \`\`\``);
81
+ return {
82
+ stdout,
83
+ stderr: this.describeExit(stderr, exitCode),
84
+ outputFiles: []
85
+ };
86
+ }
87
+ /**
88
+ * Turns a non-zero exit into stderr the model can see. An empty stderr maps
89
+ * to `OUTCOME_OK` downstream, so a program that exits non-zero without
90
+ * writing stderr would otherwise look successful (matching
91
+ * `UnsafeLocalCodeExecutor`).
92
+ */
93
+ describeExit(stderr, exitCode) {
94
+ if (exitCode === TIMEOUT_EXIT_CODE) {
95
+ const message = `Code execution timed out after ${this.timeoutSeconds} seconds.`;
96
+ return stderr ? `${stderr}
97
+ ${message}` : message;
98
+ }
99
+ if (exitCode !== 0 && exitCode !== null && !stderr) {
100
+ return `Exit code ${exitCode}`;
101
+ }
102
+ return stderr;
103
+ }
104
+ /**
105
+ * Stops and removes the container. Safe to call when no container has been
106
+ * started; provided for deterministic teardown in tests and app shutdown.
107
+ */
108
+ async close() {
109
+ const container = this.container;
110
+ this.container = void 0;
111
+ this.initPromise = void 0;
112
+ await (container == null ? void 0 : container.stop());
113
+ }
114
+ /** Lazily builds/starts the container exactly once. */
115
+ ensureContainer() {
116
+ if (!this.initPromise) {
117
+ this.initPromise = this.initContainer().catch((error) => {
118
+ this.initPromise = void 0;
119
+ throw error;
120
+ });
121
+ }
122
+ return this.initPromise;
123
+ }
124
+ async initContainer() {
125
+ const container = new DockerContainer(this.containerOptions);
126
+ if (this.dockerPath) {
127
+ await container.build(this.dockerPath);
128
+ }
129
+ await container.start();
130
+ this.container = container;
131
+ const { exitCode } = await container.execute(
132
+ ["which", "python3"],
133
+ this.timeoutSeconds
134
+ );
135
+ if (exitCode !== 0) {
136
+ throw new Error("python3 is not installed in the container.");
137
+ }
138
+ }
139
+ };
140
+ __name(ContainerCodeExecutor, "ContainerCodeExecutor");
141
+ ContainerCodeExecutor = __decorateClass([
142
+ experimental
143
+ ], ContainerCodeExecutor);
144
+ function defineFrozenFalse(target, key) {
145
+ Object.defineProperty(target, key, {
146
+ value: false,
147
+ writable: false,
148
+ enumerable: true,
149
+ configurable: false
150
+ });
151
+ }
152
+ __name(defineFrozenFalse, "defineFrozenFalse");
153
+ export {
154
+ ContainerCodeExecutor
155
+ };
@@ -0,0 +1,265 @@
1
+ import {createRequire as topLevelCreateRequire} from 'module';
2
+ const require = topLevelCreateRequire(import.meta.url);
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
19
+ // If the importer is in node compatibility mode or this is not an ESM
20
+ // file that has been converted to a CommonJS file using a Babel-
21
+ // compatible transform (i.e. "__esModule" has not been set), then set
22
+ // "default" to the CommonJS "module.exports" for node compatibility.
23
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
24
+ mod
25
+ ));
26
+ /**
27
+ * @license
28
+ * Copyright 2026 Google LLC
29
+ * SPDX-License-Identifier: Apache-2.0
30
+ */
31
+ import * as fs from "node:fs/promises";
32
+ import { PassThrough } from "node:stream";
33
+ import { text } from "node:stream/consumers";
34
+ import { setTimeout as delay } from "node:timers/promises";
35
+ import { logger } from "../utils/logger.js";
36
+ const TIMEOUT_EXIT_CODE = 124;
37
+ const STREAM_WAIT_GRACE_SECONDS = 5;
38
+ const MAX_INSPECT_ATTEMPTS = 50;
39
+ const INSPECT_POLL_MS = 100;
40
+ const KEEP_ALIVE_COMMAND = ["tail", "-f", "/dev/null"];
41
+ let dockerodeCtor;
42
+ function loadDockerodeCtor() {
43
+ dockerodeCtor != null ? dockerodeCtor : dockerodeCtor = Promise.resolve().then(() => __toESM(require("dockerode"), 1)).then(
44
+ (mod) => mod.default,
45
+ () => {
46
+ throw new Error(
47
+ "The `dockerode` package is required to use ContainerCodeExecutor. Install it with `npm install dockerode`."
48
+ );
49
+ }
50
+ );
51
+ return dockerodeCtor;
52
+ }
53
+ __name(loadDockerodeCtor, "loadDockerodeCtor");
54
+ const activeContainers = /* @__PURE__ */ new Set();
55
+ let exitHooksRegistered = false;
56
+ async function stopAndRemove(container) {
57
+ if (!container) {
58
+ return true;
59
+ }
60
+ try {
61
+ await container.stop();
62
+ } catch (error) {
63
+ logger.debug(`Container ${container.id} was not running: ${error}`);
64
+ }
65
+ try {
66
+ await container.remove({ force: true });
67
+ return true;
68
+ } catch (error) {
69
+ logger.error(`Failed to remove container ${container.id}: ${error}`);
70
+ return false;
71
+ }
72
+ }
73
+ __name(stopAndRemove, "stopAndRemove");
74
+ async function cleanupContainers() {
75
+ for (const container of activeContainers) {
76
+ if (await stopAndRemove(container)) {
77
+ activeContainers.delete(container);
78
+ }
79
+ }
80
+ }
81
+ __name(cleanupContainers, "cleanupContainers");
82
+ async function handleTerminationSignal(signal) {
83
+ await cleanupContainers();
84
+ process.kill(process.pid, signal);
85
+ }
86
+ __name(handleTerminationSignal, "handleTerminationSignal");
87
+ function registerExitHooks() {
88
+ if (exitHooksRegistered) {
89
+ return;
90
+ }
91
+ exitHooksRegistered = true;
92
+ process.once("beforeExit", cleanupContainers);
93
+ process.once("SIGINT", handleTerminationSignal);
94
+ process.once("SIGTERM", handleTerminationSignal);
95
+ }
96
+ __name(registerExitHooks, "registerExitHooks");
97
+ const PROTOCOL_BY_SCHEME = {
98
+ "https:": "https",
99
+ "ssh:": "ssh"
100
+ };
101
+ async function inspectExitCode(exec) {
102
+ for (let attempt = 0; attempt < MAX_INSPECT_ATTEMPTS; attempt++) {
103
+ const info = await exec.inspect();
104
+ if (!info.Running) {
105
+ return info.ExitCode;
106
+ }
107
+ await delay(INSPECT_POLL_MS);
108
+ }
109
+ return (await exec.inspect()).ExitCode;
110
+ }
111
+ __name(inspectExitCode, "inspectExitCode");
112
+ function parseBaseUrl(baseUrl) {
113
+ var _a;
114
+ const url = new URL(baseUrl);
115
+ if (url.protocol === "unix:") {
116
+ return { socketPath: url.pathname };
117
+ }
118
+ return {
119
+ host: url.hostname,
120
+ port: url.port || void 0,
121
+ protocol: (_a = PROTOCOL_BY_SCHEME[url.protocol]) != null ? _a : "http"
122
+ };
123
+ }
124
+ __name(parseBaseUrl, "parseBaseUrl");
125
+ const _DockerContainer = class _DockerContainer {
126
+ constructor(options) {
127
+ this.options = options;
128
+ }
129
+ /**
130
+ * Builds the image from a directory containing a Dockerfile. `src` is the raw
131
+ * directory listing; unlike the Docker CLI this does not honor
132
+ * `.dockerignore`.
133
+ */
134
+ async build(dockerPath) {
135
+ try {
136
+ await fs.access(dockerPath);
137
+ } catch {
138
+ throw new Error(`Invalid Docker path: ${dockerPath}`);
139
+ }
140
+ const client = await this.getClient();
141
+ logger.debug("Building Docker image...");
142
+ const stream = await client.buildImage(
143
+ { context: dockerPath, src: await fs.readdir(dockerPath) },
144
+ { t: this.options.image }
145
+ );
146
+ await new Promise((resolve, reject) => {
147
+ client.modem.followProgress(
148
+ stream,
149
+ (error) => error ? reject(error) : resolve()
150
+ );
151
+ });
152
+ logger.debug(`Docker image ${this.options.image} built.`);
153
+ }
154
+ /**
155
+ * Creates and starts the container, registering it for cleanup on process
156
+ * exit. Throws if already started: overwriting the handle would orphan the
157
+ * running container. Call {@link stop} first.
158
+ */
159
+ async start() {
160
+ if (this.container) {
161
+ throw new Error("Container is already started.");
162
+ }
163
+ const client = await this.getClient();
164
+ logger.debug("Starting container...");
165
+ this.container = await client.createContainer({
166
+ Image: this.options.image,
167
+ Tty: true,
168
+ Cmd: KEEP_ALIVE_COMMAND,
169
+ NetworkDisabled: !this.options.networkEnabled,
170
+ HostConfig: { CapDrop: ["ALL"], SecurityOpt: ["no-new-privileges"] }
171
+ });
172
+ await this.container.start();
173
+ activeContainers.add(this.container);
174
+ registerExitHooks();
175
+ logger.debug(`Container ${this.container.id} started.`);
176
+ }
177
+ /**
178
+ * Runs a command inside the container and returns its decoded output. The
179
+ * exec is created without a TTY so the stream stays multiplexed and can be
180
+ * split into stdout and stderr via `modem.demuxStream`.
181
+ *
182
+ * `timeoutSeconds` bounds the wait, not the in-container run: a process that
183
+ * keeps the exec's stdio open (e.g. a surviving background child) means
184
+ * `'end'` never fires, so without this cap the promise never settles (the
185
+ * same hang #793 fixed in the local executor). Callers that need to bound the
186
+ * run itself must wrap the command (see {@link ContainerCodeExecutor}). On a
187
+ * cap breach the result carries {@link TIMEOUT_EXIT_CODE}.
188
+ */
189
+ async execute(cmd, timeoutSeconds) {
190
+ if (!this.container) {
191
+ throw new Error("Container is not started.");
192
+ }
193
+ const client = await this.getClient();
194
+ const exec = await this.container.exec({
195
+ Cmd: cmd,
196
+ AttachStdout: true,
197
+ AttachStderr: true
198
+ });
199
+ const stream = await exec.start({ hijack: true, stdin: false });
200
+ const stdout = new PassThrough();
201
+ const stderr = new PassThrough();
202
+ client.modem.demuxStream(stream, stdout, stderr);
203
+ const collected = Promise.all([text(stdout), text(stderr)]);
204
+ let timedOut = false;
205
+ await new Promise((resolve, reject) => {
206
+ const timer = setTimeout(
207
+ () => {
208
+ timedOut = true;
209
+ stream.destroy();
210
+ resolve();
211
+ },
212
+ (timeoutSeconds + STREAM_WAIT_GRACE_SECONDS) * 1e3
213
+ );
214
+ timer.unref();
215
+ stream.on("end", () => {
216
+ clearTimeout(timer);
217
+ resolve();
218
+ });
219
+ stream.on("error", (error) => {
220
+ clearTimeout(timer);
221
+ reject(error);
222
+ });
223
+ });
224
+ stdout.end();
225
+ stderr.end();
226
+ const [stdoutText, stderrText] = await collected;
227
+ if (timedOut) {
228
+ return {
229
+ stdout: stdoutText,
230
+ stderr: stderrText,
231
+ exitCode: TIMEOUT_EXIT_CODE
232
+ };
233
+ }
234
+ const exitCode = await inspectExitCode(exec);
235
+ return { stdout: stdoutText, stderr: stderrText, exitCode };
236
+ }
237
+ /** Stops and removes the container. Safe to call when never started. */
238
+ async stop() {
239
+ const container = this.container;
240
+ if (!container) {
241
+ return;
242
+ }
243
+ if (await stopAndRemove(container)) {
244
+ this.container = void 0;
245
+ activeContainers.delete(container);
246
+ }
247
+ }
248
+ /**
249
+ * Resolves the Docker client once, lazily loading dockerode when no client
250
+ * was injected.
251
+ */
252
+ async getClient() {
253
+ var _a, _b;
254
+ (_b = this.client) != null ? _b : this.client = (_a = this.options.docker) != null ? _a : new (await loadDockerodeCtor())(
255
+ this.options.baseUrl ? parseBaseUrl(this.options.baseUrl) : void 0
256
+ );
257
+ return this.client;
258
+ }
259
+ };
260
+ __name(_DockerContainer, "DockerContainer");
261
+ let DockerContainer = _DockerContainer;
262
+ export {
263
+ DockerContainer,
264
+ TIMEOUT_EXIT_CODE
265
+ };