@google/adk 0.6.1 → 1.0.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 (402) hide show
  1. package/dist/cjs/agents/base_agent.js +11 -2
  2. package/dist/cjs/agents/context.js +1 -0
  3. package/dist/cjs/agents/functions.js +1 -0
  4. package/dist/cjs/agents/invocation_context.js +1 -0
  5. package/dist/cjs/agents/llm_agent.js +70 -13
  6. package/dist/cjs/agents/loop_agent.js +4 -0
  7. package/dist/cjs/agents/parallel_agent.js +4 -0
  8. package/dist/cjs/agents/processors/code_execution_request_processor.js +2 -0
  9. package/dist/cjs/agents/processors/context_compactor_request_processor.js +9 -0
  10. package/dist/cjs/agents/processors/tool_filter_request_processor.js +73 -0
  11. package/dist/cjs/agents/routed_agent.js +97 -0
  12. package/dist/cjs/auth/auth_handler.js +66 -1
  13. package/dist/cjs/auth/auth_preprocessor.js +178 -0
  14. package/dist/cjs/auth/auth_provider_registry.js +61 -0
  15. package/dist/cjs/auth/base_auth_provider.js +27 -0
  16. package/dist/cjs/auth/credential_service/session_state_credential_service.js +51 -0
  17. package/dist/cjs/auth/oauth2/oauth2_credential_exchanger.js +198 -0
  18. package/dist/cjs/auth/oauth2/oauth2_credential_refresher.js +109 -0
  19. package/dist/cjs/auth/oauth2/oauth2_discovery.js +186 -0
  20. package/dist/cjs/auth/oauth2/oauth2_utils.js +119 -0
  21. package/dist/cjs/auth/refresher/base_credential_refresher.js +44 -0
  22. package/dist/cjs/auth/refresher/credential_refresher_registry.js +68 -0
  23. package/dist/cjs/code_executors/base_code_executor.js +9 -5
  24. package/dist/cjs/code_executors/code_execution_utils.js +19 -0
  25. package/dist/cjs/code_executors/unsafe_local_code_executor.js +241 -0
  26. package/dist/cjs/common.js +61 -0
  27. package/dist/cjs/features/feature_registry.js +141 -0
  28. package/dist/cjs/index.js +32 -20
  29. package/dist/cjs/index.js.map +4 -4
  30. package/dist/cjs/models/apigee_llm.js +2 -2
  31. package/dist/cjs/models/google_llm.js +18 -53
  32. package/dist/cjs/models/routed_llm.js +99 -0
  33. package/dist/cjs/plugins/base_plugin.js +39 -2
  34. package/dist/cjs/plugins/plugin_manager.js +39 -0
  35. package/dist/cjs/runner/runner.js +31 -3
  36. package/dist/cjs/sessions/db/operations.js +3 -10
  37. package/dist/cjs/skills/loader.js +283 -0
  38. package/dist/cjs/skills/prompt.js +58 -0
  39. package/dist/cjs/skills/skill.js +78 -0
  40. package/dist/cjs/tools/agent_tool.js +10 -3
  41. package/dist/cjs/tools/mcp/mcp_tool.js +4 -1
  42. package/dist/cjs/tools/skill/list_skills_tool.js +76 -0
  43. package/dist/cjs/tools/skill/load_skill_resource_tool.js +225 -0
  44. package/dist/cjs/tools/skill/load_skill_tool.js +108 -0
  45. package/dist/cjs/tools/skill/run_skill_inline_script_tool.js +146 -0
  46. package/dist/cjs/tools/skill/run_skill_script_tool.js +224 -0
  47. package/dist/cjs/tools/skill/skill_toolset.js +163 -0
  48. package/dist/cjs/utils/experimental.js +74 -0
  49. package/dist/cjs/utils/failover_utils.js +93 -0
  50. package/dist/cjs/utils/file_extension_utils.js +77 -0
  51. package/dist/cjs/utils/file_utils.js +94 -0
  52. package/dist/cjs/utils/streaming_utils.js +333 -0
  53. package/dist/cjs/version.js +1 -1
  54. package/dist/esm/a2a/a2a_event.js +2 -0
  55. package/dist/esm/a2a/a2a_remote_agent.js +2 -0
  56. package/dist/esm/a2a/a2a_remote_agent_run_processor.js +2 -0
  57. package/dist/esm/a2a/a2a_remote_agent_utils.js +2 -0
  58. package/dist/esm/a2a/agent_card.js +2 -0
  59. package/dist/esm/a2a/agent_executor.js +2 -0
  60. package/dist/esm/a2a/agent_to_a2a.js +2 -0
  61. package/dist/esm/a2a/event_converter_utils.js +2 -0
  62. package/dist/esm/a2a/event_processor_utils.js +2 -0
  63. package/dist/esm/a2a/executor_context.js +2 -0
  64. package/dist/esm/a2a/metadata_converter_utils.js +2 -0
  65. package/dist/esm/a2a/part_converter_utils.js +2 -0
  66. package/dist/esm/agents/active_streaming_tool.js +2 -0
  67. package/dist/esm/agents/base_agent.js +13 -2
  68. package/dist/esm/agents/context.js +3 -0
  69. package/dist/esm/agents/functions.js +3 -0
  70. package/dist/esm/agents/instructions.js +2 -0
  71. package/dist/esm/agents/invocation_context.js +3 -0
  72. package/dist/esm/agents/live_request_queue.js +2 -0
  73. package/dist/esm/agents/llm_agent.js +72 -13
  74. package/dist/esm/agents/loop_agent.js +6 -0
  75. package/dist/esm/agents/parallel_agent.js +6 -0
  76. package/dist/esm/agents/processors/agent_transfer_llm_request_processor.js +2 -0
  77. package/dist/esm/agents/processors/base_llm_processor.js +2 -0
  78. package/dist/esm/agents/processors/basic_llm_request_processor.js +2 -0
  79. package/dist/esm/agents/processors/code_execution_request_processor.js +5 -0
  80. package/dist/esm/agents/processors/content_processor_utils.js +2 -0
  81. package/dist/esm/agents/processors/content_request_processor.js +2 -0
  82. package/dist/esm/agents/processors/context_compactor_request_processor.js +11 -0
  83. package/dist/esm/agents/processors/identity_llm_request_processor.js +2 -0
  84. package/dist/esm/agents/processors/instructions_llm_request_processor.js +2 -0
  85. package/dist/esm/agents/processors/request_confirmation_llm_request_processor.js +2 -0
  86. package/dist/esm/agents/processors/tool_filter_request_processor.js +44 -0
  87. package/dist/esm/agents/readonly_context.js +2 -0
  88. package/dist/esm/agents/routed_agent.js +70 -0
  89. package/dist/esm/agents/run_config.js +2 -0
  90. package/dist/esm/agents/sequential_agent.js +2 -0
  91. package/dist/esm/agents/transcription_entry.js +2 -0
  92. package/dist/esm/artifacts/base_artifact_service.js +2 -0
  93. package/dist/esm/artifacts/file_artifact_service.js +2 -0
  94. package/dist/esm/artifacts/gcs_artifact_service.js +2 -0
  95. package/dist/esm/artifacts/in_memory_artifact_service.js +2 -0
  96. package/dist/esm/artifacts/registry.js +2 -0
  97. package/dist/esm/auth/auth_credential.js +2 -0
  98. package/dist/esm/auth/auth_handler.js +68 -1
  99. package/dist/esm/auth/auth_preprocessor.js +155 -0
  100. package/dist/esm/auth/auth_provider_registry.js +33 -0
  101. package/dist/esm/auth/auth_schemes.js +2 -0
  102. package/dist/esm/auth/auth_tool.js +2 -0
  103. package/dist/esm/auth/base_auth_provider.js +7 -0
  104. package/dist/esm/auth/credential_service/base_credential_service.js +2 -0
  105. package/dist/esm/auth/credential_service/in_memory_credential_service.js +2 -0
  106. package/dist/esm/auth/credential_service/session_state_credential_service.js +23 -0
  107. package/dist/esm/auth/exchanger/base_credential_exchanger.js +2 -0
  108. package/dist/esm/auth/exchanger/credential_exchanger_registry.js +2 -0
  109. package/dist/esm/auth/oauth2/oauth2_credential_exchanger.js +177 -0
  110. package/dist/esm/auth/oauth2/oauth2_credential_refresher.js +85 -0
  111. package/dist/esm/auth/oauth2/oauth2_discovery.js +156 -0
  112. package/dist/esm/auth/oauth2/oauth2_utils.js +87 -0
  113. package/dist/esm/auth/refresher/base_credential_refresher.js +16 -0
  114. package/dist/esm/auth/refresher/credential_refresher_registry.js +40 -0
  115. package/dist/esm/code_executors/base_code_executor.js +11 -5
  116. package/dist/esm/code_executors/built_in_code_executor.js +2 -0
  117. package/dist/esm/code_executors/code_execution_utils.js +19 -0
  118. package/dist/esm/code_executors/code_executor_context.js +2 -0
  119. package/dist/esm/code_executors/unsafe_local_code_executor.js +205 -0
  120. package/dist/esm/common.js +47 -3
  121. package/dist/esm/context/base_context_compactor.js +2 -0
  122. package/dist/esm/context/summarizers/base_summarizer.js +2 -0
  123. package/dist/esm/context/summarizers/llm_summarizer.js +2 -0
  124. package/dist/esm/context/token_based_context_compactor.js +2 -0
  125. package/dist/esm/context/truncating_context_compactor.js +2 -0
  126. package/dist/esm/events/compacted_event.js +2 -0
  127. package/dist/esm/events/event.js +2 -0
  128. package/dist/esm/events/event_actions.js +2 -0
  129. package/dist/esm/events/structured_events.js +2 -0
  130. package/dist/esm/examples/base_example_provider.js +2 -0
  131. package/dist/esm/examples/example.js +2 -0
  132. package/dist/esm/examples/example_util.js +2 -0
  133. package/dist/esm/features/feature_registry.js +107 -0
  134. package/dist/esm/index.js +34 -21
  135. package/dist/esm/index.js.map +4 -4
  136. package/dist/esm/index_web.js +2 -0
  137. package/dist/esm/memory/base_memory_service.js +2 -0
  138. package/dist/esm/memory/in_memory_memory_service.js +2 -0
  139. package/dist/esm/memory/memory_entry.js +2 -0
  140. package/dist/esm/models/apigee_llm.js +4 -2
  141. package/dist/esm/models/base_llm.js +2 -0
  142. package/dist/esm/models/base_llm_connection.js +2 -0
  143. package/dist/esm/models/gemini_llm_connection.js +2 -0
  144. package/dist/esm/models/google_llm.js +20 -54
  145. package/dist/esm/models/llm_request.js +2 -0
  146. package/dist/esm/models/llm_response.js +2 -0
  147. package/dist/esm/models/registry.js +2 -0
  148. package/dist/esm/models/routed_llm.js +73 -0
  149. package/dist/esm/plugins/base_plugin.js +41 -1
  150. package/dist/esm/plugins/logging_plugin.js +2 -0
  151. package/dist/esm/plugins/plugin_manager.js +41 -0
  152. package/dist/esm/plugins/security_plugin.js +2 -0
  153. package/dist/esm/runner/in_memory_runner.js +2 -0
  154. package/dist/esm/runner/runner.js +33 -3
  155. package/dist/esm/sessions/base_session_service.js +2 -0
  156. package/dist/esm/sessions/database_session_service.js +2 -0
  157. package/dist/esm/sessions/db/operations.js +5 -10
  158. package/dist/esm/sessions/db/schema.js +2 -0
  159. package/dist/esm/sessions/in_memory_session_service.js +2 -0
  160. package/dist/esm/sessions/registry.js +2 -0
  161. package/dist/esm/sessions/session.js +2 -0
  162. package/dist/esm/sessions/state.js +2 -0
  163. package/dist/esm/skills/loader.js +244 -0
  164. package/dist/esm/skills/prompt.js +30 -0
  165. package/dist/esm/skills/skill.js +49 -0
  166. package/dist/esm/telemetry/google_cloud.js +2 -0
  167. package/dist/esm/telemetry/setup.js +2 -0
  168. package/dist/esm/telemetry/tracing.js +2 -0
  169. package/dist/esm/tools/agent_tool.js +12 -3
  170. package/dist/esm/tools/base_tool.js +2 -0
  171. package/dist/esm/tools/base_toolset.js +2 -0
  172. package/dist/esm/tools/exit_loop_tool.js +2 -0
  173. package/dist/esm/tools/forwarding_artifact_service.js +2 -0
  174. package/dist/esm/tools/function_tool.js +2 -0
  175. package/dist/esm/tools/google_search_tool.js +2 -0
  176. package/dist/esm/tools/load_artifacts_tool.js +2 -0
  177. package/dist/esm/tools/load_memory_tool.js +2 -0
  178. package/dist/esm/tools/long_running_tool.js +2 -0
  179. package/dist/esm/tools/mcp/mcp_session_manager.js +2 -0
  180. package/dist/esm/tools/mcp/mcp_tool.js +6 -1
  181. package/dist/esm/tools/mcp/mcp_toolset.js +2 -0
  182. package/dist/esm/tools/preload_memory_tool.js +2 -0
  183. package/dist/esm/tools/skill/list_skills_tool.js +50 -0
  184. package/dist/esm/tools/skill/load_skill_resource_tool.js +191 -0
  185. package/dist/esm/tools/skill/load_skill_tool.js +82 -0
  186. package/dist/esm/tools/skill/run_skill_inline_script_tool.js +120 -0
  187. package/dist/esm/tools/skill/run_skill_script_tool.js +192 -0
  188. package/dist/esm/tools/skill/skill_toolset.js +137 -0
  189. package/dist/esm/tools/tool_confirmation.js +2 -0
  190. package/dist/esm/utils/client_labels.js +2 -0
  191. package/dist/esm/utils/env_aware_utils.js +2 -0
  192. package/dist/esm/utils/experimental.js +46 -0
  193. package/dist/esm/utils/failover_utils.js +65 -0
  194. package/dist/esm/utils/file_extension_utils.js +51 -0
  195. package/dist/esm/utils/file_utils.js +56 -0
  196. package/dist/esm/utils/gemini_schema_util.js +2 -0
  197. package/dist/esm/utils/logger.js +2 -0
  198. package/dist/esm/utils/model_name.js +2 -0
  199. package/dist/esm/utils/object_notation_utils.js +2 -0
  200. package/dist/esm/utils/simple_zod_to_json.js +2 -0
  201. package/dist/esm/utils/streaming_utils.js +307 -0
  202. package/dist/esm/utils/variant_utils.js +2 -0
  203. package/dist/esm/version.js +3 -1
  204. package/dist/types/agents/context.d.ts +1 -0
  205. package/dist/types/agents/invocation_context.d.ts +5 -0
  206. package/dist/types/agents/processors/tool_filter_request_processor.d.ts +14 -0
  207. package/dist/types/agents/routed_agent.d.ts +59 -0
  208. package/dist/types/auth/auth_credential.d.ts +17 -0
  209. package/dist/types/auth/auth_handler.d.ts +1 -0
  210. package/dist/types/auth/auth_preprocessor.d.ts +12 -0
  211. package/dist/types/auth/auth_provider_registry.d.ts +27 -0
  212. package/dist/types/auth/base_auth_provider.d.ts +20 -0
  213. package/dist/types/auth/credential_service/session_state_credential_service.d.ts +20 -0
  214. package/dist/types/auth/exchanger/base_credential_exchanger.d.ts +12 -5
  215. package/dist/types/auth/oauth2/oauth2_credential_exchanger.d.ts +26 -0
  216. package/dist/types/auth/oauth2/oauth2_credential_refresher.d.ts +29 -0
  217. package/dist/types/auth/oauth2/oauth2_discovery.d.ts +38 -0
  218. package/dist/types/auth/oauth2/oauth2_utils.d.ts +56 -0
  219. package/dist/types/auth/refresher/base_credential_refresher.d.ts +38 -0
  220. package/dist/types/auth/refresher/credential_refresher_registry.d.ts +27 -0
  221. package/dist/types/code_executors/base_code_executor.d.ts +4 -4
  222. package/dist/types/code_executors/code_execution_utils.d.ts +29 -1
  223. package/dist/types/code_executors/unsafe_local_code_executor.d.ts +48 -0
  224. package/dist/types/common.d.ts +26 -3
  225. package/dist/types/features/feature_registry.d.ts +66 -0
  226. package/dist/types/index.d.ts +4 -0
  227. package/dist/types/memory/base_memory_service.d.ts +6 -0
  228. package/dist/types/memory/memory_entry.d.ts +11 -5
  229. package/dist/types/models/apigee_llm.d.ts +1 -1
  230. package/dist/types/models/base_llm.d.ts +1 -1
  231. package/dist/types/models/google_llm.d.ts +1 -1
  232. package/dist/types/models/llm_request.d.ts +4 -0
  233. package/dist/types/models/routed_llm.d.ts +38 -0
  234. package/dist/types/plugins/base_plugin.d.ts +49 -0
  235. package/dist/types/plugins/plugin_manager.d.ts +22 -1
  236. package/dist/types/runner/runner.d.ts +1 -0
  237. package/dist/types/skills/loader.d.ts +38 -0
  238. package/dist/types/skills/prompt.d.ts +13 -0
  239. package/dist/types/skills/skill.d.ts +48 -0
  240. package/dist/types/tools/skill/list_skills_tool.d.ts +14 -0
  241. package/dist/types/tools/skill/load_skill_resource_tool.d.ts +15 -0
  242. package/dist/types/tools/skill/load_skill_tool.d.ts +14 -0
  243. package/dist/types/tools/skill/run_skill_inline_script_tool.d.ts +14 -0
  244. package/dist/types/tools/skill/run_skill_script_tool.d.ts +17 -0
  245. package/dist/types/tools/skill/skill_toolset.d.ts +28 -0
  246. package/dist/types/utils/experimental.d.ts +11 -0
  247. package/dist/types/utils/failover_utils.d.ts +17 -0
  248. package/dist/types/utils/file_extension_utils.d.ts +21 -0
  249. package/dist/types/utils/file_utils.d.ts +11 -0
  250. package/dist/types/utils/streaming_utils.d.ts +40 -0
  251. package/dist/types/version.d.ts +1 -1
  252. package/dist/web/a2a/a2a_event.js +2 -0
  253. package/dist/web/a2a/a2a_remote_agent.js +2 -0
  254. package/dist/web/a2a/a2a_remote_agent_run_processor.js +2 -0
  255. package/dist/web/a2a/a2a_remote_agent_utils.js +2 -0
  256. package/dist/web/a2a/agent_card.js +2 -0
  257. package/dist/web/a2a/agent_executor.js +2 -0
  258. package/dist/web/a2a/agent_to_a2a.js +2 -0
  259. package/dist/web/a2a/event_converter_utils.js +2 -0
  260. package/dist/web/a2a/event_processor_utils.js +2 -0
  261. package/dist/web/a2a/executor_context.js +2 -0
  262. package/dist/web/a2a/metadata_converter_utils.js +2 -0
  263. package/dist/web/a2a/part_converter_utils.js +2 -0
  264. package/dist/web/agents/active_streaming_tool.js +2 -0
  265. package/dist/web/agents/base_agent.js +13 -2
  266. package/dist/web/agents/context.js +3 -0
  267. package/dist/web/agents/functions.js +3 -0
  268. package/dist/web/agents/instructions.js +2 -0
  269. package/dist/web/agents/invocation_context.js +3 -0
  270. package/dist/web/agents/live_request_queue.js +2 -0
  271. package/dist/web/agents/llm_agent.js +72 -13
  272. package/dist/web/agents/loop_agent.js +6 -0
  273. package/dist/web/agents/parallel_agent.js +6 -0
  274. package/dist/web/agents/processors/agent_transfer_llm_request_processor.js +2 -0
  275. package/dist/web/agents/processors/base_llm_processor.js +2 -0
  276. package/dist/web/agents/processors/basic_llm_request_processor.js +2 -0
  277. package/dist/web/agents/processors/code_execution_request_processor.js +5 -0
  278. package/dist/web/agents/processors/content_processor_utils.js +2 -0
  279. package/dist/web/agents/processors/content_request_processor.js +2 -0
  280. package/dist/web/agents/processors/context_compactor_request_processor.js +11 -0
  281. package/dist/web/agents/processors/identity_llm_request_processor.js +2 -0
  282. package/dist/web/agents/processors/instructions_llm_request_processor.js +2 -0
  283. package/dist/web/agents/processors/request_confirmation_llm_request_processor.js +2 -0
  284. package/dist/web/agents/processors/tool_filter_request_processor.js +62 -0
  285. package/dist/web/agents/readonly_context.js +2 -0
  286. package/dist/web/agents/routed_agent.js +138 -0
  287. package/dist/web/agents/run_config.js +2 -0
  288. package/dist/web/agents/sequential_agent.js +2 -0
  289. package/dist/web/agents/transcription_entry.js +2 -0
  290. package/dist/web/artifacts/base_artifact_service.js +2 -0
  291. package/dist/web/artifacts/file_artifact_service.js +2 -0
  292. package/dist/web/artifacts/gcs_artifact_service.js +2 -0
  293. package/dist/web/artifacts/in_memory_artifact_service.js +2 -0
  294. package/dist/web/artifacts/registry.js +2 -0
  295. package/dist/web/auth/auth_credential.js +2 -0
  296. package/dist/web/auth/auth_handler.js +85 -1
  297. package/dist/web/auth/auth_preprocessor.js +173 -0
  298. package/dist/web/auth/auth_provider_registry.js +33 -0
  299. package/dist/web/auth/auth_schemes.js +2 -0
  300. package/dist/web/auth/auth_tool.js +2 -0
  301. package/dist/web/auth/base_auth_provider.js +7 -0
  302. package/dist/web/auth/credential_service/base_credential_service.js +2 -0
  303. package/dist/web/auth/credential_service/in_memory_credential_service.js +2 -0
  304. package/dist/web/auth/credential_service/session_state_credential_service.js +23 -0
  305. package/dist/web/auth/exchanger/base_credential_exchanger.js +2 -0
  306. package/dist/web/auth/exchanger/credential_exchanger_registry.js +2 -0
  307. package/dist/web/auth/oauth2/oauth2_credential_exchanger.js +188 -0
  308. package/dist/web/auth/oauth2/oauth2_credential_refresher.js +102 -0
  309. package/dist/web/auth/oauth2/oauth2_discovery.js +156 -0
  310. package/dist/web/auth/oauth2/oauth2_utils.js +87 -0
  311. package/dist/web/auth/refresher/base_credential_refresher.js +16 -0
  312. package/dist/web/auth/refresher/credential_refresher_registry.js +40 -0
  313. package/dist/web/code_executors/base_code_executor.js +11 -5
  314. package/dist/web/code_executors/built_in_code_executor.js +2 -0
  315. package/dist/web/code_executors/code_execution_utils.js +19 -0
  316. package/dist/web/code_executors/code_executor_context.js +2 -0
  317. package/dist/web/code_executors/unsafe_local_code_executor.js +203 -0
  318. package/dist/web/common.js +47 -3
  319. package/dist/web/context/base_context_compactor.js +2 -0
  320. package/dist/web/context/summarizers/base_summarizer.js +2 -0
  321. package/dist/web/context/summarizers/llm_summarizer.js +2 -0
  322. package/dist/web/context/token_based_context_compactor.js +2 -0
  323. package/dist/web/context/truncating_context_compactor.js +2 -0
  324. package/dist/web/events/compacted_event.js +2 -0
  325. package/dist/web/events/event.js +2 -0
  326. package/dist/web/events/event_actions.js +2 -0
  327. package/dist/web/events/structured_events.js +2 -0
  328. package/dist/web/examples/base_example_provider.js +2 -0
  329. package/dist/web/examples/example.js +2 -0
  330. package/dist/web/examples/example_util.js +2 -0
  331. package/dist/web/features/feature_registry.js +107 -0
  332. package/dist/web/index.js +3 -2
  333. package/dist/web/index.js.map +4 -4
  334. package/dist/web/index_web.js +2 -0
  335. package/dist/web/memory/base_memory_service.js +2 -0
  336. package/dist/web/memory/in_memory_memory_service.js +2 -0
  337. package/dist/web/memory/memory_entry.js +2 -0
  338. package/dist/web/models/apigee_llm.js +4 -2
  339. package/dist/web/models/base_llm.js +2 -0
  340. package/dist/web/models/base_llm_connection.js +2 -0
  341. package/dist/web/models/gemini_llm_connection.js +2 -0
  342. package/dist/web/models/google_llm.js +37 -59
  343. package/dist/web/models/llm_request.js +2 -0
  344. package/dist/web/models/llm_response.js +2 -0
  345. package/dist/web/models/registry.js +2 -0
  346. package/dist/web/models/routed_llm.js +122 -0
  347. package/dist/web/plugins/base_plugin.js +41 -1
  348. package/dist/web/plugins/logging_plugin.js +2 -0
  349. package/dist/web/plugins/plugin_manager.js +41 -0
  350. package/dist/web/plugins/security_plugin.js +2 -0
  351. package/dist/web/runner/in_memory_runner.js +2 -0
  352. package/dist/web/runner/runner.js +33 -3
  353. package/dist/web/sessions/base_session_service.js +2 -0
  354. package/dist/web/sessions/database_session_service.js +2 -0
  355. package/dist/web/sessions/db/operations.js +5 -10
  356. package/dist/web/sessions/db/schema.js +2 -0
  357. package/dist/web/sessions/in_memory_session_service.js +2 -0
  358. package/dist/web/sessions/registry.js +2 -0
  359. package/dist/web/sessions/session.js +2 -0
  360. package/dist/web/sessions/state.js +2 -0
  361. package/dist/web/skills/loader.js +262 -0
  362. package/dist/web/skills/prompt.js +30 -0
  363. package/dist/web/skills/skill.js +67 -0
  364. package/dist/web/telemetry/google_cloud.js +2 -0
  365. package/dist/web/telemetry/setup.js +2 -0
  366. package/dist/web/telemetry/tracing.js +2 -0
  367. package/dist/web/tools/agent_tool.js +12 -3
  368. package/dist/web/tools/base_tool.js +2 -0
  369. package/dist/web/tools/base_toolset.js +2 -0
  370. package/dist/web/tools/exit_loop_tool.js +2 -0
  371. package/dist/web/tools/forwarding_artifact_service.js +2 -0
  372. package/dist/web/tools/function_tool.js +2 -0
  373. package/dist/web/tools/google_search_tool.js +2 -0
  374. package/dist/web/tools/load_artifacts_tool.js +2 -0
  375. package/dist/web/tools/load_memory_tool.js +2 -0
  376. package/dist/web/tools/long_running_tool.js +2 -0
  377. package/dist/web/tools/mcp/mcp_session_manager.js +2 -0
  378. package/dist/web/tools/mcp/mcp_tool.js +6 -1
  379. package/dist/web/tools/mcp/mcp_toolset.js +2 -0
  380. package/dist/web/tools/preload_memory_tool.js +2 -0
  381. package/dist/web/tools/skill/list_skills_tool.js +50 -0
  382. package/dist/web/tools/skill/load_skill_resource_tool.js +191 -0
  383. package/dist/web/tools/skill/load_skill_tool.js +82 -0
  384. package/dist/web/tools/skill/run_skill_inline_script_tool.js +120 -0
  385. package/dist/web/tools/skill/run_skill_script_tool.js +190 -0
  386. package/dist/web/tools/skill/skill_toolset.js +123 -0
  387. package/dist/web/tools/tool_confirmation.js +2 -0
  388. package/dist/web/utils/client_labels.js +2 -0
  389. package/dist/web/utils/env_aware_utils.js +2 -0
  390. package/dist/web/utils/experimental.js +46 -0
  391. package/dist/web/utils/failover_utils.js +96 -0
  392. package/dist/web/utils/file_extension_utils.js +51 -0
  393. package/dist/web/utils/file_utils.js +74 -0
  394. package/dist/web/utils/gemini_schema_util.js +2 -0
  395. package/dist/web/utils/logger.js +2 -0
  396. package/dist/web/utils/model_name.js +2 -0
  397. package/dist/web/utils/object_notation_utils.js +2 -0
  398. package/dist/web/utils/simple_zod_to_json.js +2 -0
  399. package/dist/web/utils/streaming_utils.js +325 -0
  400. package/dist/web/utils/variant_utils.js +2 -0
  401. package/dist/web/version.js +3 -1
  402. package/package.json +19 -17
@@ -0,0 +1,178 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ "use strict";
8
+ var __defProp = Object.defineProperty;
9
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
+ var __getOwnPropNames = Object.getOwnPropertyNames;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __export = (target, all) => {
13
+ for (var name in all)
14
+ __defProp(target, name, { get: all[name], enumerable: true });
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from))
19
+ if (!__hasOwnProp.call(to, key) && key !== except)
20
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
+ }
22
+ return to;
23
+ };
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var auth_preprocessor_exports = {};
26
+ __export(auth_preprocessor_exports, {
27
+ AUTH_PREPROCESSOR: () => AUTH_PREPROCESSOR,
28
+ AuthPreprocessor: () => AuthPreprocessor
29
+ });
30
+ module.exports = __toCommonJS(auth_preprocessor_exports);
31
+ var import_functions = require("../agents/functions.js");
32
+ var import_llm_agent = require("../agents/llm_agent.js");
33
+ var import_base_llm_processor = require("../agents/processors/base_llm_processor.js");
34
+ var import_readonly_context = require("../agents/readonly_context.js");
35
+ var import_event = require("../events/event.js");
36
+ var import_state = require("../sessions/state.js");
37
+ var import_auth_handler = require("./auth_handler.js");
38
+ /**
39
+ * @license
40
+ * Copyright 2026 Google LLC
41
+ * SPDX-License-Identifier: Apache-2.0
42
+ */
43
+ const TOOLSET_AUTH_CREDENTIAL_ID_PREFIX = "_adk_toolset_auth_";
44
+ async function storeAuthAndCollectResumeTargets(events, authFcIds, authResponses, state) {
45
+ const requestedAuthConfigById = {};
46
+ for (const event of events) {
47
+ const eventFunctionCalls = (0, import_event.getFunctionCalls)(event);
48
+ for (const functionCall of eventFunctionCalls) {
49
+ if (functionCall.id && authFcIds.has(functionCall.id) && functionCall.name === import_functions.REQUEST_EUC_FUNCTION_CALL_NAME) {
50
+ const args = functionCall.args;
51
+ if (args && args.authConfig) {
52
+ requestedAuthConfigById[functionCall.id] = args.authConfig;
53
+ }
54
+ }
55
+ }
56
+ }
57
+ for (const fcId of authFcIds) {
58
+ if (!(fcId in authResponses)) {
59
+ continue;
60
+ }
61
+ const authConfig = authResponses[fcId];
62
+ const requestedAuthConfig = requestedAuthConfigById[fcId];
63
+ if (requestedAuthConfig && requestedAuthConfig.credentialKey) {
64
+ authConfig.credentialKey = requestedAuthConfig.credentialKey;
65
+ }
66
+ await new import_auth_handler.AuthHandler(authConfig).parseAndStoreAuthResponse(state);
67
+ }
68
+ const toolsToResume = /* @__PURE__ */ new Set();
69
+ for (const fcId of authFcIds) {
70
+ const requestedAuthConfig = requestedAuthConfigById[fcId];
71
+ if (!requestedAuthConfig) {
72
+ continue;
73
+ }
74
+ for (const event of events) {
75
+ const eventFunctionCalls = (0, import_event.getFunctionCalls)(event);
76
+ for (const functionCall of eventFunctionCalls) {
77
+ if (functionCall.id === fcId && functionCall.name === import_functions.REQUEST_EUC_FUNCTION_CALL_NAME) {
78
+ const args = functionCall.args;
79
+ if (args && args.functionCallId) {
80
+ if (args.functionCallId.startsWith(TOOLSET_AUTH_CREDENTIAL_ID_PREFIX)) {
81
+ continue;
82
+ }
83
+ toolsToResume.add(args.functionCallId);
84
+ }
85
+ }
86
+ }
87
+ }
88
+ }
89
+ return toolsToResume;
90
+ }
91
+ class AuthPreprocessor extends import_base_llm_processor.BaseLlmRequestProcessor {
92
+ async *runAsync(invocationContext) {
93
+ const agent = invocationContext.agent;
94
+ if (!(0, import_llm_agent.isLlmAgent)(agent)) {
95
+ return;
96
+ }
97
+ const events = invocationContext.session.events;
98
+ if (!events || events.length === 0) {
99
+ return;
100
+ }
101
+ let lastEventWithContent = null;
102
+ for (let i = events.length - 1; i >= 0; i--) {
103
+ const event = events[i];
104
+ if (event.content !== void 0) {
105
+ lastEventWithContent = event;
106
+ break;
107
+ }
108
+ }
109
+ if (!lastEventWithContent || lastEventWithContent.author !== "user") {
110
+ return;
111
+ }
112
+ const responses = (0, import_event.getFunctionResponses)(lastEventWithContent);
113
+ if (!responses || responses.length === 0) {
114
+ return;
115
+ }
116
+ const authFcIds = /* @__PURE__ */ new Set();
117
+ const authResponses = {};
118
+ for (const functionCallResponse of responses) {
119
+ if (functionCallResponse.name !== import_functions.REQUEST_EUC_FUNCTION_CALL_NAME) {
120
+ continue;
121
+ }
122
+ if (functionCallResponse.id) {
123
+ authFcIds.add(functionCallResponse.id);
124
+ authResponses[functionCallResponse.id] = functionCallResponse.response;
125
+ }
126
+ }
127
+ if (authFcIds.size === 0) {
128
+ return;
129
+ }
130
+ const state = new import_state.State(invocationContext.session.state);
131
+ const toolsToResume = await storeAuthAndCollectResumeTargets(
132
+ events,
133
+ authFcIds,
134
+ authResponses,
135
+ state
136
+ );
137
+ if (toolsToResume.size === 0) {
138
+ return;
139
+ }
140
+ for (let i = events.length - 2; i >= 0; i--) {
141
+ const event = events[i];
142
+ const functionCalls = (0, import_event.getFunctionCalls)(event);
143
+ if (!functionCalls || functionCalls.length === 0) {
144
+ continue;
145
+ }
146
+ const hasMatchingCall = functionCalls.some(
147
+ (call) => call.id ? toolsToResume.has(call.id) : false
148
+ );
149
+ if (hasMatchingCall) {
150
+ const canonicalTools = await agent.canonicalTools(
151
+ new import_readonly_context.ReadonlyContext(invocationContext)
152
+ );
153
+ const toolsDict = {};
154
+ for (const tool of canonicalTools) {
155
+ toolsDict[tool.name] = tool;
156
+ }
157
+ const functionResponseEvent = await (0, import_functions.handleFunctionCallsAsync)({
158
+ invocationContext,
159
+ functionCallEvent: event,
160
+ toolsDict,
161
+ beforeToolCallbacks: agent.canonicalBeforeToolCallbacks,
162
+ afterToolCallbacks: agent.canonicalAfterToolCallbacks,
163
+ filters: toolsToResume
164
+ });
165
+ if (functionResponseEvent) {
166
+ yield functionResponseEvent;
167
+ }
168
+ return;
169
+ }
170
+ }
171
+ }
172
+ }
173
+ const AUTH_PREPROCESSOR = new AuthPreprocessor();
174
+ // Annotate the CommonJS export names for ESM import in node:
175
+ 0 && (module.exports = {
176
+ AUTH_PREPROCESSOR,
177
+ AuthPreprocessor
178
+ });
@@ -0,0 +1,61 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ "use strict";
8
+ var __defProp = Object.defineProperty;
9
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
+ var __getOwnPropNames = Object.getOwnPropertyNames;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __export = (target, all) => {
13
+ for (var name in all)
14
+ __defProp(target, name, { get: all[name], enumerable: true });
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from))
19
+ if (!__hasOwnProp.call(to, key) && key !== except)
20
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
+ }
22
+ return to;
23
+ };
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var auth_provider_registry_exports = {};
26
+ __export(auth_provider_registry_exports, {
27
+ AuthProviderRegistry: () => AuthProviderRegistry
28
+ });
29
+ module.exports = __toCommonJS(auth_provider_registry_exports);
30
+ /**
31
+ * @license
32
+ * Copyright 2026 Google LLC
33
+ * SPDX-License-Identifier: Apache-2.0
34
+ */
35
+ class AuthProviderRegistry {
36
+ constructor() {
37
+ this.providers = /* @__PURE__ */ new Map();
38
+ }
39
+ /**
40
+ * Register a provider instance for an auth scheme type.
41
+ *
42
+ * @param authSchemeType The auth scheme type (e.g., 'oauth2', 'apiKey').
43
+ * @param providerInstance The provider instance to register.
44
+ */
45
+ register(authSchemeType, providerInstance) {
46
+ this.providers.set(authSchemeType, providerInstance);
47
+ }
48
+ /**
49
+ * Get the provider instance for an auth scheme.
50
+ *
51
+ * @param authScheme The auth scheme to get provider for.
52
+ * @returns The provider instance if registered, undefined otherwise.
53
+ */
54
+ getProvider(authScheme) {
55
+ return this.providers.get(authScheme.type);
56
+ }
57
+ }
58
+ // Annotate the CommonJS export names for ESM import in node:
59
+ 0 && (module.exports = {
60
+ AuthProviderRegistry
61
+ });
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ "use strict";
8
+ var __defProp = Object.defineProperty;
9
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
+ var __getOwnPropNames = Object.getOwnPropertyNames;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
+ var base_auth_provider_exports = {};
22
+ module.exports = __toCommonJS(base_auth_provider_exports);
23
+ /**
24
+ * @license
25
+ * Copyright 2026 Google LLC
26
+ * SPDX-License-Identifier: Apache-2.0
27
+ */
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ "use strict";
8
+ var __defProp = Object.defineProperty;
9
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
+ var __getOwnPropNames = Object.getOwnPropertyNames;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __export = (target, all) => {
13
+ for (var name in all)
14
+ __defProp(target, name, { get: all[name], enumerable: true });
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from))
19
+ if (!__hasOwnProp.call(to, key) && key !== except)
20
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
+ }
22
+ return to;
23
+ };
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var session_state_credential_service_exports = {};
26
+ __export(session_state_credential_service_exports, {
27
+ SessionStateCredentialService: () => SessionStateCredentialService
28
+ });
29
+ module.exports = __toCommonJS(session_state_credential_service_exports);
30
+ /**
31
+ * @license
32
+ * Copyright 2026 Google LLC
33
+ * SPDX-License-Identifier: Apache-2.0
34
+ */
35
+ class SessionStateCredentialService {
36
+ loadCredential(authConfig, toolContext) {
37
+ return Promise.resolve(toolContext.state.get(authConfig.credentialKey));
38
+ }
39
+ async saveCredential(authConfig, toolContext) {
40
+ if (authConfig.exchangedAuthCredential) {
41
+ toolContext.state.set(
42
+ authConfig.credentialKey,
43
+ authConfig.exchangedAuthCredential
44
+ );
45
+ }
46
+ }
47
+ }
48
+ // Annotate the CommonJS export names for ESM import in node:
49
+ 0 && (module.exports = {
50
+ SessionStateCredentialService
51
+ });
@@ -0,0 +1,198 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ "use strict";
8
+ var __defProp = Object.defineProperty;
9
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
+ var __getOwnPropNames = Object.getOwnPropertyNames;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __export = (target, all) => {
13
+ for (var name in all)
14
+ __defProp(target, name, { get: all[name], enumerable: true });
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from))
19
+ if (!__hasOwnProp.call(to, key) && key !== except)
20
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
+ }
22
+ return to;
23
+ };
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var oauth2_credential_exchanger_exports = {};
26
+ __export(oauth2_credential_exchanger_exports, {
27
+ OAuth2CredentialExchanger: () => OAuth2CredentialExchanger,
28
+ determineGrantType: () => determineGrantType,
29
+ exchangeAuthorizationCode: () => exchangeAuthorizationCode,
30
+ exchangeClientCredentials: () => exchangeClientCredentials
31
+ });
32
+ module.exports = __toCommonJS(oauth2_credential_exchanger_exports);
33
+ var import_logger = require("../../utils/logger.js");
34
+ var import_auth_schemes = require("../auth_schemes.js");
35
+ var import_base_credential_exchanger = require("../exchanger/base_credential_exchanger.js");
36
+ var import_oauth2_utils = require("./oauth2_utils.js");
37
+ /**
38
+ * @license
39
+ * Copyright 2026 Google LLC
40
+ * SPDX-License-Identifier: Apache-2.0
41
+ */
42
+ class OAuth2CredentialExchanger {
43
+ async exchange({
44
+ authCredential,
45
+ authScheme
46
+ }) {
47
+ var _a;
48
+ if (!authScheme) {
49
+ throw new import_base_credential_exchanger.CredentialExchangeError(
50
+ "authScheme is required for OAuth2 credential exchange"
51
+ );
52
+ }
53
+ if ((_a = authCredential.oauth2) == null ? void 0 : _a.accessToken) {
54
+ return {
55
+ credential: authCredential,
56
+ wasExchanged: false
57
+ };
58
+ }
59
+ const grantType = determineGrantType(authScheme);
60
+ if (grantType === import_auth_schemes.OAuthGrantType.CLIENT_CREDENTIALS) {
61
+ return exchangeClientCredentials({ authCredential, authScheme });
62
+ }
63
+ if (grantType === import_auth_schemes.OAuthGrantType.AUTHORIZATION_CODE) {
64
+ return exchangeAuthorizationCode({ authCredential, authScheme });
65
+ }
66
+ import_logger.logger.warn(`Unsupported OAuth2 grant type: ${grantType}`);
67
+ return {
68
+ credential: authCredential,
69
+ wasExchanged: false
70
+ };
71
+ }
72
+ }
73
+ function determineGrantType(authScheme) {
74
+ var _a;
75
+ if ("flows" in authScheme && authScheme.flows) {
76
+ return (0, import_auth_schemes.getOAuthGrantTypeFromFlow)(authScheme.flows);
77
+ }
78
+ if (authScheme.grantTypesSupported) {
79
+ const oidcScheme = authScheme;
80
+ if ((_a = oidcScheme.grantTypesSupported) == null ? void 0 : _a.includes("client_credentials")) {
81
+ return import_auth_schemes.OAuthGrantType.CLIENT_CREDENTIALS;
82
+ }
83
+ return import_auth_schemes.OAuthGrantType.AUTHORIZATION_CODE;
84
+ }
85
+ return void 0;
86
+ }
87
+ async function exchangeClientCredentials({
88
+ authCredential,
89
+ authScheme
90
+ }) {
91
+ var _a, _b;
92
+ const tokenEndpoint = (0, import_oauth2_utils.getTokenEndpoint)(authScheme);
93
+ if (!tokenEndpoint) {
94
+ throw new import_base_credential_exchanger.CredentialExchangeError(
95
+ "Token endpoint not found in auth scheme."
96
+ );
97
+ }
98
+ if (!((_a = authCredential.oauth2) == null ? void 0 : _a.clientId) || !((_b = authCredential.oauth2) == null ? void 0 : _b.clientSecret)) {
99
+ throw new import_base_credential_exchanger.CredentialExchangeError(
100
+ "clientId and clientSecret are required for client credentials exchange."
101
+ );
102
+ }
103
+ const body = (0, import_oauth2_utils.createOAuth2TokenRequestBody)({
104
+ grantType: "client_credentials",
105
+ clientId: authCredential.oauth2.clientId,
106
+ clientSecret: authCredential.oauth2.clientSecret
107
+ });
108
+ try {
109
+ const oauth2Auth = await (0, import_oauth2_utils.fetchOAuth2Tokens)(tokenEndpoint, body);
110
+ return {
111
+ credential: {
112
+ ...authCredential,
113
+ oauth2: {
114
+ ...authCredential.oauth2,
115
+ ...oauth2Auth
116
+ }
117
+ },
118
+ wasExchanged: true
119
+ };
120
+ } catch (error) {
121
+ throw new import_base_credential_exchanger.CredentialExchangeError(
122
+ `Failed to exchange tokens: ${error instanceof Error ? error.message : String(error)}`
123
+ );
124
+ }
125
+ }
126
+ async function exchangeAuthorizationCode({
127
+ authCredential,
128
+ authScheme
129
+ }) {
130
+ var _a, _b, _c, _d;
131
+ const tokenEndpoint = (0, import_oauth2_utils.getTokenEndpoint)(authScheme);
132
+ if (!tokenEndpoint) {
133
+ throw new import_base_credential_exchanger.CredentialExchangeError(
134
+ "Token endpoint not found in auth scheme."
135
+ );
136
+ }
137
+ if (!((_a = authCredential.oauth2) == null ? void 0 : _a.clientId) || !((_b = authCredential.oauth2) == null ? void 0 : _b.clientSecret) || !((_c = authCredential.oauth2) == null ? void 0 : _c.authCode) && !((_d = authCredential.oauth2) == null ? void 0 : _d.authResponseUri)) {
138
+ throw new import_base_credential_exchanger.CredentialExchangeError(
139
+ "clientId, clientSecret, and either authCode or authResponseUri are required for authorization code exchange."
140
+ );
141
+ }
142
+ let code = authCredential.oauth2.authCode;
143
+ if (!code && authCredential.oauth2.authResponseUri) {
144
+ code = (0, import_oauth2_utils.parseAuthorizationCode)(authCredential.oauth2.authResponseUri);
145
+ }
146
+ if (authCredential.oauth2.authResponseUri && authCredential.oauth2.state) {
147
+ try {
148
+ const url = new URL(authCredential.oauth2.authResponseUri);
149
+ const receivedState = url.searchParams.get("state") || void 0;
150
+ if (authCredential.oauth2.state !== receivedState) {
151
+ throw new import_base_credential_exchanger.CredentialExchangeError(
152
+ "State mismatch detected. Potential CSRF attack."
153
+ );
154
+ }
155
+ } catch (e) {
156
+ throw new import_base_credential_exchanger.CredentialExchangeError(
157
+ `Failed to parse authResponseUri for state validation: ${e instanceof Error ? e.message : String(e)}`
158
+ );
159
+ }
160
+ }
161
+ if (!code) {
162
+ throw new import_base_credential_exchanger.CredentialExchangeError(
163
+ "Authorization code not found in auth response."
164
+ );
165
+ }
166
+ const body = (0, import_oauth2_utils.createOAuth2TokenRequestBody)({
167
+ grantType: "authorization_code",
168
+ clientId: authCredential.oauth2.clientId,
169
+ clientSecret: authCredential.oauth2.clientSecret,
170
+ code,
171
+ redirectUri: authCredential.oauth2.redirectUri,
172
+ codeVerifier: authCredential.oauth2.codeVerifier
173
+ });
174
+ try {
175
+ const oauth2Auth = await (0, import_oauth2_utils.fetchOAuth2Tokens)(tokenEndpoint, body);
176
+ return {
177
+ credential: {
178
+ ...authCredential,
179
+ oauth2: {
180
+ ...authCredential.oauth2,
181
+ ...oauth2Auth
182
+ }
183
+ },
184
+ wasExchanged: true
185
+ };
186
+ } catch (error) {
187
+ throw new import_base_credential_exchanger.CredentialExchangeError(
188
+ `Failed to exchange tokens: ${error instanceof Error ? error.message : String(error)}`
189
+ );
190
+ }
191
+ }
192
+ // Annotate the CommonJS export names for ESM import in node:
193
+ 0 && (module.exports = {
194
+ OAuth2CredentialExchanger,
195
+ determineGrantType,
196
+ exchangeAuthorizationCode,
197
+ exchangeClientCredentials
198
+ });
@@ -0,0 +1,109 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ "use strict";
8
+ var __defProp = Object.defineProperty;
9
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
+ var __getOwnPropNames = Object.getOwnPropertyNames;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __export = (target, all) => {
13
+ for (var name in all)
14
+ __defProp(target, name, { get: all[name], enumerable: true });
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from))
19
+ if (!__hasOwnProp.call(to, key) && key !== except)
20
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
+ }
22
+ return to;
23
+ };
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var oauth2_credential_refresher_exports = {};
26
+ __export(oauth2_credential_refresher_exports, {
27
+ OAuth2CredentialRefresher: () => OAuth2CredentialRefresher
28
+ });
29
+ module.exports = __toCommonJS(oauth2_credential_refresher_exports);
30
+ var import_logger = require("../../utils/logger.js");
31
+ var import_oauth2_utils = require("./oauth2_utils.js");
32
+ /**
33
+ * @license
34
+ * Copyright 2026 Google LLC
35
+ * SPDX-License-Identifier: Apache-2.0
36
+ */
37
+ class OAuth2CredentialRefresher {
38
+ /**
39
+ * Check if the OAuth2 credential needs to be refreshed.
40
+ *
41
+ * @param authCredential The OAuth2 credential to check.
42
+ * @param authScheme The OAuth2 authentication scheme (optional).
43
+ * @returns True if the credential needs to be refreshed, False otherwise.
44
+ */
45
+ async isRefreshNeeded(authCredential) {
46
+ if (!authCredential.oauth2) {
47
+ return false;
48
+ }
49
+ if (authCredential.oauth2 && authCredential.oauth2.expiresAt) {
50
+ return (0, import_oauth2_utils.isTokenExpired)(authCredential.oauth2);
51
+ }
52
+ return false;
53
+ }
54
+ /**
55
+ * Refresh the OAuth2 credential.
56
+ *
57
+ * @param authCredential The OAuth2 credential to refresh.
58
+ * @param authScheme The OAuth2 authentication scheme.
59
+ * @returns The refreshed credential.
60
+ */
61
+ async refresh(authCredential, authScheme) {
62
+ if (!authCredential.oauth2 || !authScheme) {
63
+ return authCredential;
64
+ }
65
+ if (!authCredential.oauth2.refreshToken) {
66
+ import_logger.logger.warn("No refresh token available to refresh credential");
67
+ return authCredential;
68
+ }
69
+ const isNeeded = await this.isRefreshNeeded(authCredential);
70
+ if (!isNeeded) {
71
+ return authCredential;
72
+ }
73
+ const tokenEndpoint = (0, import_oauth2_utils.getTokenEndpoint)(authScheme);
74
+ if (!tokenEndpoint) {
75
+ import_logger.logger.warn("Token endpoint not found in auth scheme.");
76
+ return authCredential;
77
+ }
78
+ if (!authCredential.oauth2.clientId || !authCredential.oauth2.clientSecret) {
79
+ import_logger.logger.warn("clientId and clientSecret are required for token refresh.");
80
+ return authCredential;
81
+ }
82
+ const body = new URLSearchParams();
83
+ body.set("grant_type", "refresh_token");
84
+ body.set("refresh_token", authCredential.oauth2.refreshToken);
85
+ body.set("client_id", authCredential.oauth2.clientId);
86
+ body.set("client_secret", authCredential.oauth2.clientSecret);
87
+ try {
88
+ const data = await (0, import_oauth2_utils.fetchOAuth2Tokens)(tokenEndpoint, body);
89
+ const updatedOAuth2 = {
90
+ ...authCredential.oauth2,
91
+ accessToken: data.accessToken || authCredential.oauth2.accessToken,
92
+ refreshToken: data.refreshToken || authCredential.oauth2.refreshToken,
93
+ expiresIn: data.expiresIn,
94
+ expiresAt: data.expiresAt || authCredential.oauth2.expiresAt
95
+ };
96
+ return {
97
+ ...authCredential,
98
+ oauth2: updatedOAuth2
99
+ };
100
+ } catch (error) {
101
+ import_logger.logger.error("Failed to refresh tokens:", error);
102
+ return authCredential;
103
+ }
104
+ }
105
+ }
106
+ // Annotate the CommonJS export names for ESM import in node:
107
+ 0 && (module.exports = {
108
+ OAuth2CredentialRefresher
109
+ });