@google/adk 1.1.0 → 1.3.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 (300) hide show
  1. package/dist/cjs/agents/base_agent.js +19 -1
  2. package/dist/cjs/agents/functions.js +4 -0
  3. package/dist/cjs/agents/instructions.js +81 -33
  4. package/dist/cjs/agents/invocation_context.js +0 -1
  5. package/dist/cjs/agents/llm_agent.js +52 -5
  6. package/dist/cjs/agents/processors/agent_transfer_llm_request_processor.js +7 -0
  7. package/dist/cjs/agents/processors/basic_llm_request_processor.js +8 -1
  8. package/dist/cjs/agents/processors/content_processor_utils.js +37 -24
  9. package/dist/cjs/agents/processors/content_request_processor.js +7 -0
  10. package/dist/cjs/agents/processors/context_compactor_request_processor.js +12 -0
  11. package/dist/cjs/agents/processors/identity_llm_request_processor.js +7 -0
  12. package/dist/cjs/agents/processors/instructions_llm_request_processor.js +5 -0
  13. package/dist/cjs/agents/processors/request_confirmation_llm_request_processor.js +9 -1
  14. package/dist/cjs/agents/processors/tool_filter_request_processor.js +7 -1
  15. package/dist/cjs/auth/auth_preprocessor.js +12 -10
  16. package/dist/cjs/auth/oauth2/oauth2_discovery.js +26 -2
  17. package/dist/cjs/code_executors/agent_engine_sandbox_code_executor.js +305 -0
  18. package/dist/cjs/code_executors/code_execution_utils.js +1 -1
  19. package/dist/cjs/code_executors/code_executor_context.js +7 -7
  20. package/dist/cjs/common.js +50 -0
  21. package/dist/cjs/context/summarizers/llm_summarizer.js +11 -0
  22. package/dist/cjs/context/token_based_context_compactor.js +1 -1
  23. package/dist/cjs/events/event.js +4 -2
  24. package/dist/cjs/index.js +14 -0
  25. package/dist/cjs/integrations/agent_registry/agent_registry.js +362 -0
  26. package/dist/cjs/integrations/agent_registry/agent_registry_mcp_toolset.js +122 -0
  27. package/dist/cjs/integrations/agent_registry/helpers.js +57 -0
  28. package/dist/cjs/integrations/agent_registry/types.js +50 -0
  29. package/dist/cjs/memory/vertex_ai_memory_bank_service.js +496 -0
  30. package/dist/cjs/models/gemini_llm_connection.js +62 -19
  31. package/dist/cjs/models/google_llm.js +26 -8
  32. package/dist/cjs/plugins/security_plugin.js +16 -0
  33. package/dist/cjs/runner/in_memory_runner.js +10 -5
  34. package/dist/cjs/runner/runner.js +32 -2
  35. package/dist/cjs/sessions/base_session_service.js +13 -2
  36. package/dist/cjs/sessions/database_session_service.js +51 -5
  37. package/dist/cjs/sessions/db/schema.js +45 -10
  38. package/dist/cjs/sessions/in_memory_session_service.js +72 -15
  39. package/dist/cjs/sessions/registry.js +4 -0
  40. package/dist/cjs/sessions/vertex_ai_session_service.js +429 -0
  41. package/dist/cjs/skills/gcp_skill_registry.js +104 -0
  42. package/dist/cjs/skills/loader.js +65 -0
  43. package/dist/cjs/skills/skill_registry.js +27 -0
  44. package/dist/cjs/tools/agent_tool.js +10 -5
  45. package/dist/cjs/tools/exit_loop_tool.js +9 -0
  46. package/dist/cjs/tools/function_tool.js +7 -2
  47. package/dist/cjs/tools/google_maps_grounding_tool.js +80 -0
  48. package/dist/cjs/tools/long_running_tool.js +2 -1
  49. package/dist/cjs/tools/mcp/mcp_session_manager.js +11 -0
  50. package/dist/cjs/tools/mcp/mcp_tool.js +10 -6
  51. package/dist/cjs/tools/mcp/mcp_toolset.js +26 -3
  52. package/dist/cjs/tools/openapi_tool/auth/auth_helpers.js +78 -0
  53. package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +84 -0
  54. package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +133 -0
  55. package/dist/cjs/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +232 -0
  56. package/dist/cjs/tools/openapi_tool/openapi_spec_parser/operation_parser.js +224 -0
  57. package/dist/cjs/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +127 -0
  58. package/dist/cjs/tools/openapi_tool/openapi_toolset.js +133 -0
  59. package/dist/cjs/tools/openapi_tool/rest_api_tool.js +256 -0
  60. package/dist/cjs/tools/skill/load_skill_resource_tool.js +27 -28
  61. package/dist/cjs/tools/skill/load_skill_tool.js +12 -1
  62. package/dist/cjs/tools/skill/run_skill_script_tool.js +12 -1
  63. package/dist/cjs/tools/skill/search_skills_tool.js +108 -0
  64. package/dist/cjs/tools/skill/skill_toolset.js +40 -5
  65. package/dist/cjs/tools/vertex_rag_retrieval_tool.js +64 -0
  66. package/dist/cjs/utils/async_queue.js +88 -0
  67. package/dist/cjs/utils/case_utils.js +53 -0
  68. package/dist/cjs/utils/env_aware_utils.js +4 -0
  69. package/dist/cjs/utils/file_utils.js +28 -0
  70. package/dist/cjs/utils/gemini_schema_util.js +18 -0
  71. package/dist/cjs/utils/live_connection_utils.js +284 -0
  72. package/dist/cjs/utils/model_name.js +9 -0
  73. package/dist/cjs/utils/partial_copy.js +51 -0
  74. package/dist/cjs/utils/streaming_utils.js +169 -122
  75. package/dist/cjs/utils/vertex_ai_utils.js +50 -0
  76. package/dist/cjs/version.js +1 -1
  77. package/dist/esm/agents/base_agent.js +19 -1
  78. package/dist/esm/agents/functions.js +4 -0
  79. package/dist/esm/agents/instructions.js +81 -33
  80. package/dist/esm/agents/invocation_context.js +0 -1
  81. package/dist/esm/agents/llm_agent.js +53 -5
  82. package/dist/esm/agents/processors/agent_transfer_llm_request_processor.js +7 -0
  83. package/dist/esm/agents/processors/basic_llm_request_processor.js +8 -1
  84. package/dist/esm/agents/processors/content_processor_utils.js +35 -23
  85. package/dist/esm/agents/processors/content_request_processor.js +7 -0
  86. package/dist/esm/agents/processors/context_compactor_request_processor.js +12 -0
  87. package/dist/esm/agents/processors/identity_llm_request_processor.js +7 -0
  88. package/dist/esm/agents/processors/instructions_llm_request_processor.js +5 -0
  89. package/dist/esm/agents/processors/request_confirmation_llm_request_processor.js +9 -1
  90. package/dist/esm/agents/processors/tool_filter_request_processor.js +7 -1
  91. package/dist/esm/auth/auth_preprocessor.js +12 -10
  92. package/dist/esm/auth/oauth2/oauth2_discovery.js +26 -2
  93. package/dist/esm/code_executors/agent_engine_sandbox_code_executor.js +281 -0
  94. package/dist/esm/code_executors/code_execution_utils.js +1 -1
  95. package/dist/esm/code_executors/code_executor_context.js +7 -7
  96. package/dist/esm/common.js +43 -1
  97. package/dist/esm/context/summarizers/llm_summarizer.js +11 -0
  98. package/dist/esm/context/token_based_context_compactor.js +1 -1
  99. package/dist/esm/events/event.js +4 -2
  100. package/dist/esm/index.js +11 -0
  101. package/dist/esm/integrations/agent_registry/agent_registry.js +333 -0
  102. package/dist/esm/integrations/agent_registry/agent_registry_mcp_toolset.js +96 -0
  103. package/dist/esm/integrations/agent_registry/helpers.js +28 -0
  104. package/dist/esm/integrations/agent_registry/types.js +20 -0
  105. package/dist/esm/memory/vertex_ai_memory_bank_service.js +468 -0
  106. package/dist/esm/models/gemini_llm_connection.js +62 -19
  107. package/dist/esm/models/google_llm.js +26 -8
  108. package/dist/esm/plugins/security_plugin.js +16 -0
  109. package/dist/esm/runner/in_memory_runner.js +10 -5
  110. package/dist/esm/runner/runner.js +32 -2
  111. package/dist/esm/sessions/base_session_service.js +11 -1
  112. package/dist/esm/sessions/database_session_service.js +51 -5
  113. package/dist/esm/sessions/db/schema.js +44 -10
  114. package/dist/esm/sessions/in_memory_session_service.js +74 -16
  115. package/dist/esm/sessions/registry.js +7 -0
  116. package/dist/esm/sessions/vertex_ai_session_service.js +405 -0
  117. package/dist/esm/skills/gcp_skill_registry.js +78 -0
  118. package/dist/esm/skills/loader.js +64 -0
  119. package/dist/esm/skills/skill_registry.js +7 -0
  120. package/dist/esm/tools/agent_tool.js +10 -5
  121. package/dist/esm/tools/exit_loop_tool.js +9 -0
  122. package/dist/esm/tools/function_tool.js +7 -2
  123. package/dist/esm/tools/google_maps_grounding_tool.js +54 -0
  124. package/dist/esm/tools/long_running_tool.js +2 -1
  125. package/dist/esm/tools/mcp/mcp_session_manager.js +11 -0
  126. package/dist/esm/tools/mcp/mcp_tool.js +10 -6
  127. package/dist/esm/tools/mcp/mcp_toolset.js +26 -3
  128. package/dist/esm/tools/openapi_tool/auth/auth_helpers.js +48 -0
  129. package/dist/esm/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +60 -0
  130. package/dist/esm/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +111 -0
  131. package/dist/esm/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +206 -0
  132. package/dist/esm/tools/openapi_tool/openapi_spec_parser/operation_parser.js +198 -0
  133. package/dist/esm/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +101 -0
  134. package/dist/esm/tools/openapi_tool/openapi_toolset.js +97 -0
  135. package/dist/esm/tools/openapi_tool/rest_api_tool.js +229 -0
  136. package/dist/esm/tools/skill/load_skill_resource_tool.js +26 -27
  137. package/dist/esm/tools/skill/load_skill_tool.js +12 -1
  138. package/dist/esm/tools/skill/run_skill_script_tool.js +12 -1
  139. package/dist/esm/tools/skill/search_skills_tool.js +82 -0
  140. package/dist/esm/tools/skill/skill_toolset.js +40 -5
  141. package/dist/esm/tools/vertex_rag_retrieval_tool.js +36 -0
  142. package/dist/esm/utils/async_queue.js +60 -0
  143. package/dist/esm/utils/case_utils.js +25 -0
  144. package/dist/esm/utils/env_aware_utils.js +4 -0
  145. package/dist/esm/utils/file_utils.js +26 -0
  146. package/dist/esm/utils/gemini_schema_util.js +18 -0
  147. package/dist/esm/utils/live_connection_utils.js +256 -0
  148. package/dist/esm/utils/model_name.js +8 -0
  149. package/dist/esm/utils/partial_copy.js +23 -0
  150. package/dist/esm/utils/streaming_utils.js +167 -121
  151. package/dist/esm/utils/vertex_ai_utils.js +22 -0
  152. package/dist/esm/version.js +1 -1
  153. package/dist/types/a2a/a2a_remote_agent.d.ts +14 -0
  154. package/dist/types/a2a/a2a_remote_agent_utils.d.ts +29 -4
  155. package/dist/types/a2a/event_converter_utils.d.ts +14 -1
  156. package/dist/types/a2a/metadata_converter_utils.d.ts +18 -0
  157. package/dist/types/a2a/part_converter_utils.d.ts +51 -6
  158. package/dist/types/agents/invocation_context.d.ts +0 -9
  159. package/dist/types/agents/llm_agent.d.ts +14 -0
  160. package/dist/types/agents/processors/agent_transfer_llm_request_processor.d.ts +14 -0
  161. package/dist/types/agents/processors/base_llm_processor.d.ts +12 -4
  162. package/dist/types/agents/processors/basic_llm_request_processor.d.ts +12 -0
  163. package/dist/types/agents/processors/content_processor_utils.d.ts +26 -0
  164. package/dist/types/agents/processors/content_request_processor.d.ts +16 -0
  165. package/dist/types/agents/processors/context_compactor_request_processor.d.ts +12 -0
  166. package/dist/types/agents/processors/identity_llm_request_processor.d.ts +11 -0
  167. package/dist/types/agents/processors/request_confirmation_llm_request_processor.d.ts +14 -1
  168. package/dist/types/agents/processors/tool_filter_request_processor.d.ts +12 -1
  169. package/dist/types/agents/run_config.d.ts +15 -0
  170. package/dist/types/code_executors/agent_engine_sandbox_code_executor.d.ts +51 -0
  171. package/dist/types/common.d.ts +19 -1
  172. package/dist/types/context/summarizers/llm_summarizer.d.ts +17 -0
  173. package/dist/types/events/event_actions.d.ts +25 -8
  174. package/dist/types/events/structured_events.d.ts +13 -0
  175. package/dist/types/examples/example_util.d.ts +25 -0
  176. package/dist/types/index.d.ts +6 -0
  177. package/dist/types/integrations/agent_registry/agent_registry.d.ts +94 -0
  178. package/dist/types/integrations/agent_registry/agent_registry_mcp_toolset.d.ts +62 -0
  179. package/dist/types/integrations/agent_registry/helpers.d.ts +7 -0
  180. package/dist/types/integrations/agent_registry/types.d.ts +101 -0
  181. package/dist/types/memory/vertex_ai_memory_bank_service.d.ts +52 -0
  182. package/dist/types/models/base_llm_connection.d.ts +10 -0
  183. package/dist/types/models/gemini_llm_connection.d.ts +15 -4
  184. package/dist/types/models/llm_response.d.ts +10 -1
  185. package/dist/types/plugins/security_plugin.d.ts +30 -0
  186. package/dist/types/runner/in_memory_runner.d.ts +28 -1
  187. package/dist/types/runner/runner.d.ts +47 -0
  188. package/dist/types/sessions/base_session_service.d.ts +22 -0
  189. package/dist/types/sessions/database_session_service.d.ts +1 -1
  190. package/dist/types/sessions/db/schema.d.ts +1 -0
  191. package/dist/types/sessions/in_memory_session_service.d.ts +1 -1
  192. package/dist/types/sessions/vertex_ai_session_service.d.ts +37 -0
  193. package/dist/types/skills/gcp_skill_registry.d.ts +24 -0
  194. package/dist/types/skills/loader.d.ts +7 -0
  195. package/dist/types/skills/skill.d.ts +1 -1
  196. package/dist/types/skills/skill_registry.d.ts +29 -0
  197. package/dist/types/tools/exit_loop_tool.d.ts +9 -0
  198. package/dist/types/tools/function_tool.d.ts +22 -2
  199. package/dist/types/tools/google_maps_grounding_tool.d.ts +22 -0
  200. package/dist/types/tools/long_running_tool.d.ts +11 -1
  201. package/dist/types/tools/mcp/mcp_session_manager.d.ts +3 -0
  202. package/dist/types/tools/mcp/mcp_toolset.d.ts +2 -1
  203. package/dist/types/tools/openapi_tool/auth/auth_helpers.d.ts +25 -0
  204. package/dist/types/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.d.ts +20 -0
  205. package/dist/types/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.d.ts +20 -0
  206. package/dist/types/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.d.ts +34 -0
  207. package/dist/types/tools/openapi_tool/openapi_spec_parser/operation_parser.d.ts +59 -0
  208. package/dist/types/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.d.ts +23 -0
  209. package/dist/types/tools/openapi_tool/openapi_toolset.d.ts +27 -0
  210. package/dist/types/tools/openapi_tool/rest_api_tool.d.ts +50 -0
  211. package/dist/types/tools/skill/load_skill_resource_tool.d.ts +1 -1
  212. package/dist/types/tools/skill/search_skills_tool.d.ts +14 -0
  213. package/dist/types/tools/skill/skill_toolset.d.ts +5 -0
  214. package/dist/types/tools/vertex_rag_retrieval_tool.d.ts +42 -0
  215. package/dist/types/utils/async_queue.d.ts +18 -0
  216. package/dist/types/utils/case_utils.d.ts +12 -0
  217. package/dist/types/utils/file_utils.d.ts +2 -0
  218. package/dist/types/utils/live_connection_utils.d.ts +30 -0
  219. package/dist/types/utils/model_name.d.ts +7 -0
  220. package/dist/types/utils/partial_copy.d.ts +13 -0
  221. package/dist/types/utils/streaming_utils.d.ts +7 -17
  222. package/dist/types/utils/vertex_ai_utils.d.ts +14 -0
  223. package/dist/types/version.d.ts +1 -1
  224. package/dist/web/agents/base_agent.js +31 -1
  225. package/dist/web/agents/functions.js +4 -0
  226. package/dist/web/agents/instructions.js +81 -33
  227. package/dist/web/agents/invocation_context.js +0 -1
  228. package/dist/web/agents/llm_agent.js +53 -5
  229. package/dist/web/agents/processors/agent_transfer_llm_request_processor.js +7 -0
  230. package/dist/web/agents/processors/basic_llm_request_processor.js +8 -1
  231. package/dist/web/agents/processors/content_processor_utils.js +53 -23
  232. package/dist/web/agents/processors/content_request_processor.js +7 -0
  233. package/dist/web/agents/processors/context_compactor_request_processor.js +12 -0
  234. package/dist/web/agents/processors/identity_llm_request_processor.js +7 -0
  235. package/dist/web/agents/processors/instructions_llm_request_processor.js +5 -0
  236. package/dist/web/agents/processors/request_confirmation_llm_request_processor.js +9 -1
  237. package/dist/web/agents/processors/tool_filter_request_processor.js +7 -1
  238. package/dist/web/auth/auth_preprocessor.js +12 -10
  239. package/dist/web/auth/oauth2/oauth2_discovery.js +26 -2
  240. package/dist/web/code_executors/agent_engine_sandbox_code_executor.js +281 -0
  241. package/dist/web/code_executors/code_execution_utils.js +1 -1
  242. package/dist/web/code_executors/code_executor_context.js +7 -7
  243. package/dist/web/common.js +43 -1
  244. package/dist/web/context/summarizers/llm_summarizer.js +11 -0
  245. package/dist/web/context/token_based_context_compactor.js +1 -1
  246. package/dist/web/events/event.js +4 -2
  247. package/dist/web/index.js +11 -0
  248. package/dist/web/integrations/agent_registry/agent_registry.js +333 -0
  249. package/dist/web/integrations/agent_registry/agent_registry_mcp_toolset.js +109 -0
  250. package/dist/web/integrations/agent_registry/helpers.js +28 -0
  251. package/dist/web/integrations/agent_registry/types.js +20 -0
  252. package/dist/web/memory/vertex_ai_memory_bank_service.js +475 -0
  253. package/dist/web/models/gemini_llm_connection.js +75 -19
  254. package/dist/web/models/google_llm.js +26 -8
  255. package/dist/web/plugins/security_plugin.js +16 -0
  256. package/dist/web/runner/in_memory_runner.js +10 -5
  257. package/dist/web/runner/runner.js +32 -2
  258. package/dist/web/sessions/base_session_service.js +11 -1
  259. package/dist/web/sessions/database_session_service.js +51 -5
  260. package/dist/web/sessions/db/schema.js +44 -10
  261. package/dist/web/sessions/in_memory_session_service.js +74 -16
  262. package/dist/web/sessions/registry.js +7 -0
  263. package/dist/web/sessions/vertex_ai_session_service.js +416 -0
  264. package/dist/web/skills/gcp_skill_registry.js +78 -0
  265. package/dist/web/skills/loader.js +64 -0
  266. package/dist/web/skills/skill_registry.js +7 -0
  267. package/dist/web/tools/agent_tool.js +10 -5
  268. package/dist/web/tools/exit_loop_tool.js +9 -0
  269. package/dist/web/tools/function_tool.js +7 -2
  270. package/dist/web/tools/google_maps_grounding_tool.js +54 -0
  271. package/dist/web/tools/long_running_tool.js +2 -1
  272. package/dist/web/tools/mcp/mcp_session_manager.js +11 -0
  273. package/dist/web/tools/mcp/mcp_tool.js +10 -6
  274. package/dist/web/tools/mcp/mcp_toolset.js +26 -3
  275. package/dist/web/tools/openapi_tool/auth/auth_helpers.js +48 -0
  276. package/dist/web/tools/openapi_tool/auth/credential_exchangers/auto_auth_credential_exchanger.js +60 -0
  277. package/dist/web/tools/openapi_tool/auth/credential_exchangers/service_account_exchanger.js +111 -0
  278. package/dist/web/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +221 -0
  279. package/dist/web/tools/openapi_tool/openapi_spec_parser/operation_parser.js +198 -0
  280. package/dist/web/tools/openapi_tool/openapi_spec_parser/tool_auth_handler.js +101 -0
  281. package/dist/web/tools/openapi_tool/openapi_toolset.js +97 -0
  282. package/dist/web/tools/openapi_tool/rest_api_tool.js +229 -0
  283. package/dist/web/tools/skill/load_skill_resource_tool.js +26 -27
  284. package/dist/web/tools/skill/load_skill_tool.js +12 -1
  285. package/dist/web/tools/skill/run_skill_script_tool.js +12 -1
  286. package/dist/web/tools/skill/search_skills_tool.js +82 -0
  287. package/dist/web/tools/skill/skill_toolset.js +40 -5
  288. package/dist/web/tools/vertex_rag_retrieval_tool.js +36 -0
  289. package/dist/web/utils/async_queue.js +60 -0
  290. package/dist/web/utils/case_utils.js +25 -0
  291. package/dist/web/utils/env_aware_utils.js +4 -0
  292. package/dist/web/utils/file_utils.js +26 -0
  293. package/dist/web/utils/gemini_schema_util.js +18 -0
  294. package/dist/web/utils/live_connection_utils.js +254 -0
  295. package/dist/web/utils/model_name.js +8 -0
  296. package/dist/web/utils/partial_copy.js +23 -0
  297. package/dist/web/utils/streaming_utils.js +221 -122
  298. package/dist/web/utils/vertex_ai_utils.js +22 -0
  299. package/dist/web/version.js +1 -1
  300. package/package.json +4 -1
@@ -0,0 +1,496 @@
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 vertex_ai_memory_bank_service_exports = {};
26
+ __export(vertex_ai_memory_bank_service_exports, {
27
+ VertexAiMemoryBankService: () => VertexAiMemoryBankService
28
+ });
29
+ module.exports = __toCommonJS(vertex_ai_memory_bank_service_exports);
30
+ var import_vertexai = require("@google-cloud/vertexai");
31
+ var import_genai = require("@google/genai");
32
+ var import_logger = require("../utils/logger.js");
33
+ var import_vertex_ai_utils = require("../utils/vertex_ai_utils.js");
34
+ /**
35
+ * @license
36
+ * Copyright 2026 Google LLC
37
+ * SPDX-License-Identifier: Apache-2.0
38
+ */
39
+ const GENERATE_MEMORIES_KNOWN_FIELDS = [
40
+ "disableConsolidation",
41
+ "waitForCompletion",
42
+ "revisionLabels",
43
+ "revisionExpireTime",
44
+ "revisionTtl",
45
+ "disableMemoryRevisions",
46
+ "metadataMergeStrategy",
47
+ "allowedTopics"
48
+ ];
49
+ const CREATE_MEMORY_KNOWN_FIELDS = [
50
+ "displayName",
51
+ "description",
52
+ "waitForCompletion",
53
+ "ttl",
54
+ "expireTime",
55
+ "revisionExpireTime",
56
+ "revisionTtl",
57
+ "disableMemoryRevisions",
58
+ "topics",
59
+ "memoryId"
60
+ ];
61
+ const ENABLE_CONSOLIDATION_KEY = "enable_consolidation";
62
+ const MAX_DIRECT_MEMORIES_PER_GENERATE_CALL = 5;
63
+ function shouldFilterOutEvent(content) {
64
+ return !((content == null ? void 0 : content.parts) || []).some(
65
+ (p) => p.text || p.inlineData || p.fileData
66
+ );
67
+ }
68
+ function toVertexMetadataValue(key, value) {
69
+ if (typeof value === "boolean") {
70
+ return { boolValue: value };
71
+ }
72
+ if (typeof value === "number") {
73
+ return { doubleValue: value };
74
+ }
75
+ if (typeof value === "string") {
76
+ return { stringValue: value };
77
+ }
78
+ if (value instanceof Date) {
79
+ return { timestampValue: value.toISOString() };
80
+ }
81
+ if (typeof value === "object" && value !== null) {
82
+ const v = value;
83
+ if (v.boolValue !== void 0 || v.doubleValue !== void 0 || v.stringValue !== void 0 || v.timestampValue !== void 0) {
84
+ return v;
85
+ }
86
+ return { stringValue: JSON.stringify(value) };
87
+ }
88
+ if (value === null || value === void 0) {
89
+ import_logger.logger.warn(
90
+ `Ignoring custom metadata key ${key} because its value is null or undefined.`
91
+ );
92
+ return void 0;
93
+ }
94
+ return { stringValue: String(value) };
95
+ }
96
+ class VertexAiMemoryBankService {
97
+ constructor(options) {
98
+ if (!options.agentEngineId) {
99
+ throw new Error(
100
+ "agentEngineId is required for VertexAiMemoryBankService."
101
+ );
102
+ }
103
+ this.projectId = options.projectId;
104
+ this.location = options.location;
105
+ this.agentEngineId = options.agentEngineId;
106
+ this.expressModeApiKey = (0, import_vertex_ai_utils.getExpressModeApiKey)(
107
+ options.projectId,
108
+ options.location,
109
+ options.expressModeApiKey
110
+ );
111
+ if (options.agentEngineId.includes("/")) {
112
+ import_logger.logger.warn(
113
+ `agentEngineId appears to be a full resource path: '${options.agentEngineId}'. Expected just the ID (e.g., '456'). Extract the ID using: agentEngine.apiResource.name.split('/').pop()`
114
+ );
115
+ }
116
+ if (options.client) {
117
+ this.memories = options.client.agentEnginesInternal.memories;
118
+ } else {
119
+ const client = new import_vertexai.Client({
120
+ project: this.projectId,
121
+ location: this.location
122
+ });
123
+ this.memories = client.agentEnginesInternal.memories;
124
+ }
125
+ }
126
+ async addSessionToMemory(session) {
127
+ await this.addEventsToMemoryFromEvents({
128
+ appName: session.appName,
129
+ userId: session.userId,
130
+ eventsToProcess: session.events
131
+ });
132
+ }
133
+ /**
134
+ * Adds events to Vertex AI Memory Bank via memories.generate.
135
+ */
136
+ async addEventsToMemory(request) {
137
+ await this.addEventsToMemoryFromEvents({
138
+ appName: request.appName,
139
+ userId: request.userId,
140
+ eventsToProcess: request.events,
141
+ customMetadata: request.customMetadata
142
+ });
143
+ }
144
+ /**
145
+ * Adds explicit memory items using Vertex Memory Bank.
146
+ */
147
+ async addMemory(request) {
148
+ if (isConsolidationEnabled(request.customMetadata)) {
149
+ return this.addMemoriesViaGenerateDirectMemoriesSource(request);
150
+ }
151
+ await this.addMemoriesViaCreate(request);
152
+ }
153
+ async searchMemory(request) {
154
+ const params = {
155
+ name: `reasoningEngines/${this.agentEngineId}`,
156
+ scope: {
157
+ app_name: request.appName,
158
+ user_id: request.userId
159
+ },
160
+ similaritySearchParams: {
161
+ searchQuery: request.query
162
+ }
163
+ };
164
+ const retrievedMemoriesResponse = await this.memories.retrieveInternal(params);
165
+ import_logger.logger.debug("Search memory response received.");
166
+ const memoryEvents = [];
167
+ const retrievedMemories = retrievedMemoriesResponse.retrievedMemories || [];
168
+ for (const retrievedMemory of retrievedMemories) {
169
+ import_logger.logger.debug(`Retrieved memory: ${JSON.stringify(retrievedMemory)}`);
170
+ if (retrievedMemory.memory && retrievedMemory.memory.fact) {
171
+ const content = (0, import_genai.createUserContent)(retrievedMemory.memory.fact);
172
+ memoryEvents.push({
173
+ author: "user",
174
+ content,
175
+ timestamp: retrievedMemory.memory.updateTime
176
+ });
177
+ }
178
+ }
179
+ return { memories: memoryEvents };
180
+ }
181
+ async addEventsToMemoryFromEvents(request) {
182
+ const directEvents = [];
183
+ for (const event of request.eventsToProcess) {
184
+ if (shouldFilterOutEvent(event.content)) {
185
+ continue;
186
+ }
187
+ directEvents.push({
188
+ content: JSON.parse(JSON.stringify(event.content))
189
+ });
190
+ }
191
+ if (directEvents.length > 0) {
192
+ const config = buildGenerateMemoriesConfig(request.customMetadata);
193
+ const params = {
194
+ name: `reasoningEngines/${this.agentEngineId}`,
195
+ directContentsSource: { events: directEvents },
196
+ scope: {
197
+ app_name: request.appName,
198
+ user_id: request.userId
199
+ },
200
+ config
201
+ };
202
+ const operation = await this.memories.generateInternal(params);
203
+ import_logger.logger.debug("Generate memory response received.");
204
+ import_logger.logger.debug(`Generate memory response: ${JSON.stringify(operation)}`);
205
+ } else {
206
+ import_logger.logger.info("No events to add to memory.");
207
+ }
208
+ }
209
+ async addMemoriesViaCreate(request) {
210
+ const validatedMemories = normalizeMemoriesForCreate(request.memories);
211
+ for (let index = 0; index < validatedMemories.length; index++) {
212
+ const memory = validatedMemories[index];
213
+ const memoryFact = memoryEntryToFact(memory, index);
214
+ const memoryMetadata = mergeCustomMetadataForMemory({
215
+ customMetadata: request.customMetadata,
216
+ memory
217
+ });
218
+ const memoryRevisionLabels = revisionLabelsForMemory(memory);
219
+ const config = buildCreateMemoryConfig({
220
+ customMetadata: memoryMetadata,
221
+ memoryRevisionLabels
222
+ });
223
+ const params = {
224
+ name: `reasoningEngines/${this.agentEngineId}`,
225
+ fact: memoryFact,
226
+ scope: {
227
+ app_name: request.appName,
228
+ user_id: request.userId
229
+ },
230
+ config
231
+ };
232
+ const operation = await this.memories.createInternal(params);
233
+ import_logger.logger.info("Create memory response received.");
234
+ import_logger.logger.debug(`Create memory response: ${JSON.stringify(operation)}`);
235
+ }
236
+ }
237
+ async addMemoriesViaGenerateDirectMemoriesSource(request) {
238
+ const validatedMemories = normalizeMemoriesForCreate(request.memories);
239
+ const memoryTexts = validatedMemories.map(
240
+ (m, i) => memoryEntryToFact(m, i)
241
+ );
242
+ const config = buildGenerateMemoriesConfig(request.customMetadata);
243
+ const memoryBatches = iterMemoryBatches(memoryTexts);
244
+ for (const memoryBatch of memoryBatches) {
245
+ const params = {
246
+ name: `reasoningEngines/${this.agentEngineId}`,
247
+ directMemoriesSource: {
248
+ directMemories: memoryBatch.map((fact) => ({ fact }))
249
+ },
250
+ scope: {
251
+ app_name: request.appName,
252
+ user_id: request.userId
253
+ },
254
+ config
255
+ };
256
+ const operation = await this.memories.generateInternal(params);
257
+ import_logger.logger.info("Generate direct memory response received.");
258
+ import_logger.logger.debug(
259
+ `Generate direct memory response: ${JSON.stringify(operation)}`
260
+ );
261
+ }
262
+ }
263
+ }
264
+ function buildCreateMemoryConfig(params) {
265
+ const config = { waitForCompletion: false };
266
+ if (params.customMetadata) {
267
+ import_logger.logger.debug(
268
+ `Memory creation metadata: ${JSON.stringify(params.customMetadata)}`
269
+ );
270
+ }
271
+ const metadataByKey = {};
272
+ const customRevisionLabels = {};
273
+ for (const [key, value] of Object.entries(params.customMetadata || {})) {
274
+ if (key === ENABLE_CONSOLIDATION_KEY) {
275
+ continue;
276
+ }
277
+ if (key === "metadata") {
278
+ if (value === null || value === void 0) continue;
279
+ if (typeof value === "object" && !Array.isArray(value)) {
280
+ config["metadata"] = buildVertexMetadata(
281
+ value
282
+ );
283
+ } else {
284
+ import_logger.logger.warn(
285
+ 'Ignoring metadata because customMetadata["metadata"] is not an object.'
286
+ );
287
+ }
288
+ continue;
289
+ }
290
+ if (key === "revisionLabels") {
291
+ if (value === null || value === void 0) continue;
292
+ const extractedLabels = extractRevisionLabels(
293
+ value,
294
+ 'customMetadata["revisionLabels"]'
295
+ );
296
+ if (extractedLabels) {
297
+ Object.assign(customRevisionLabels, extractedLabels);
298
+ }
299
+ continue;
300
+ }
301
+ if (CREATE_MEMORY_KNOWN_FIELDS.includes(key)) {
302
+ if (value !== null && value !== void 0) {
303
+ config[key] = value;
304
+ }
305
+ } else {
306
+ metadataByKey[key] = value;
307
+ }
308
+ }
309
+ if (Object.keys(metadataByKey).length > 0) {
310
+ const existingMetadata = config["metadata"];
311
+ if (!existingMetadata) {
312
+ config["metadata"] = buildVertexMetadata(metadataByKey);
313
+ } else {
314
+ config["metadata"] = {
315
+ ...existingMetadata,
316
+ ...buildVertexMetadata(metadataByKey)
317
+ };
318
+ }
319
+ }
320
+ const revisionLabels = {
321
+ ...customRevisionLabels,
322
+ ...params.memoryRevisionLabels
323
+ };
324
+ if (Object.keys(revisionLabels).length > 0) {
325
+ config["revisionLabels"] = revisionLabels;
326
+ }
327
+ return config;
328
+ }
329
+ function extractRevisionLabels(value, source) {
330
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
331
+ import_logger.logger.warn(`Ignoring ${source} because it is not an object.`);
332
+ return void 0;
333
+ }
334
+ const revisionLabels = {};
335
+ for (const [key, labelValue] of Object.entries(value)) {
336
+ if (typeof labelValue !== "string") {
337
+ import_logger.logger.warn(
338
+ `Ignoring revision label ${key} from ${source} because its value is not a string.`
339
+ );
340
+ continue;
341
+ }
342
+ revisionLabels[key] = labelValue;
343
+ }
344
+ if (Object.keys(revisionLabels).length === 0) {
345
+ return void 0;
346
+ }
347
+ return revisionLabels;
348
+ }
349
+ function buildVertexMetadata(metadataByKey) {
350
+ const vertexMetadata = {};
351
+ for (const [key, value] of Object.entries(metadataByKey)) {
352
+ const convertedValue = toVertexMetadataValue(key, value);
353
+ if (convertedValue !== void 0) {
354
+ vertexMetadata[key] = convertedValue;
355
+ }
356
+ }
357
+ return vertexMetadata;
358
+ }
359
+ function buildGenerateMemoriesConfig(customMetadata) {
360
+ const config = { waitForCompletion: false };
361
+ if (!customMetadata) {
362
+ return config;
363
+ }
364
+ import_logger.logger.debug(`Memory generation metadata: ${JSON.stringify(customMetadata)}`);
365
+ const metadataByKey = {};
366
+ for (const [key, value] of Object.entries(customMetadata)) {
367
+ if (key === ENABLE_CONSOLIDATION_KEY) {
368
+ continue;
369
+ }
370
+ if (key === "ttl") {
371
+ if (value === null || value === void 0) continue;
372
+ if (customMetadata["revisionTtl"] === void 0) {
373
+ config["revisionTtl"] = value;
374
+ }
375
+ continue;
376
+ }
377
+ if (key === "metadata") {
378
+ if (value === null || value === void 0) continue;
379
+ if (typeof value === "object" && !Array.isArray(value)) {
380
+ config["metadata"] = buildVertexMetadata(
381
+ value
382
+ );
383
+ } else {
384
+ import_logger.logger.warn(
385
+ 'Ignoring metadata because customMetadata["metadata"] is not an object.'
386
+ );
387
+ }
388
+ continue;
389
+ }
390
+ if (GENERATE_MEMORIES_KNOWN_FIELDS.includes(key)) {
391
+ if (value !== null && value !== void 0) {
392
+ config[key] = value;
393
+ }
394
+ } else {
395
+ metadataByKey[key] = value;
396
+ }
397
+ }
398
+ if (Object.keys(metadataByKey).length > 0) {
399
+ const existingMetadata = config["metadata"];
400
+ if (!existingMetadata) {
401
+ config["metadata"] = buildVertexMetadata(metadataByKey);
402
+ } else {
403
+ config["metadata"] = {
404
+ ...existingMetadata,
405
+ ...buildVertexMetadata(metadataByKey)
406
+ };
407
+ }
408
+ }
409
+ return config;
410
+ }
411
+ function normalizeMemoriesForCreate(memories) {
412
+ if (!Array.isArray(memories)) {
413
+ throw new TypeError("memories must be a sequence of memory items.");
414
+ }
415
+ if (memories.length === 0) {
416
+ throw new Error("memories must contain at least one entry.");
417
+ }
418
+ return memories;
419
+ }
420
+ function memoryEntryToFact(memory, index) {
421
+ const textParts = [];
422
+ if (memory.content && memory.content.parts) {
423
+ for (const part of memory.content.parts) {
424
+ if (part.inlineData || part.fileData) {
425
+ throw new Error(
426
+ `memories[${index}] must include text only; inlineData and fileData are not supported.`
427
+ );
428
+ }
429
+ if (part.text) {
430
+ const strippedText = part.text.trim();
431
+ if (strippedText) {
432
+ textParts.push(strippedText);
433
+ }
434
+ }
435
+ }
436
+ }
437
+ if (textParts.length === 0) {
438
+ throw new Error(`memories[${index}] must include non-whitespace text.`);
439
+ }
440
+ return textParts.join("\n");
441
+ }
442
+ function mergeCustomMetadataForMemory(params) {
443
+ const mergedMetadata = {};
444
+ if (params.customMetadata) {
445
+ Object.assign(mergedMetadata, params.customMetadata);
446
+ }
447
+ const memoryWithMetadata = params.memory;
448
+ if (memoryWithMetadata.customMetadata) {
449
+ Object.assign(mergedMetadata, memoryWithMetadata.customMetadata);
450
+ }
451
+ if (Object.keys(mergedMetadata).length === 0) {
452
+ return void 0;
453
+ }
454
+ return mergedMetadata;
455
+ }
456
+ function revisionLabelsForMemory(memory) {
457
+ const revisionLabels = {};
458
+ if (memory.author) {
459
+ revisionLabels["author"] = memory.author;
460
+ }
461
+ if (memory.timestamp) {
462
+ revisionLabels["timestamp"] = memory.timestamp;
463
+ }
464
+ if (Object.keys(revisionLabels).length === 0) {
465
+ return void 0;
466
+ }
467
+ return revisionLabels;
468
+ }
469
+ function isConsolidationEnabled(customMetadata) {
470
+ if (!customMetadata) {
471
+ return false;
472
+ }
473
+ const enableConsolidation = customMetadata[ENABLE_CONSOLIDATION_KEY];
474
+ if (enableConsolidation === void 0) {
475
+ return false;
476
+ }
477
+ if (typeof enableConsolidation !== "boolean") {
478
+ throw new TypeError(
479
+ `customMetadata["${ENABLE_CONSOLIDATION_KEY}"] must be a bool.`
480
+ );
481
+ }
482
+ return enableConsolidation;
483
+ }
484
+ function iterMemoryBatches(memories) {
485
+ const memoryBatches = [];
486
+ for (let index = 0; index < memories.length; index += MAX_DIRECT_MEMORIES_PER_GENERATE_CALL) {
487
+ memoryBatches.push(
488
+ memories.slice(index, index + MAX_DIRECT_MEMORIES_PER_GENERATE_CALL)
489
+ );
490
+ }
491
+ return memoryBatches;
492
+ }
493
+ // Annotate the CommonJS export names for ESM import in node:
494
+ 0 && (module.exports = {
495
+ VertexAiMemoryBankService
496
+ });
@@ -27,15 +27,19 @@ __export(gemini_llm_connection_exports, {
27
27
  GeminiLlmConnection: () => GeminiLlmConnection
28
28
  });
29
29
  module.exports = __toCommonJS(gemini_llm_connection_exports);
30
+ var import_live_connection_utils = require("../utils/live_connection_utils.js");
30
31
  var import_logger = require("../utils/logger.js");
32
+ var import_model_name = require("../utils/model_name.js");
31
33
  /**
32
34
  * @license
33
- * Copyright 2025 Google LLC
35
+ * Copyright 2026 Google LLC
34
36
  * SPDX-License-Identifier: Apache-2.0
35
37
  */
36
38
  class GeminiLlmConnection {
37
- constructor(geminiSession) {
39
+ constructor(geminiSession, modelVersion, messageQueue) {
38
40
  this.geminiSession = geminiSession;
41
+ this.modelVersion = modelVersion;
42
+ this.messageQueue = messageQueue;
39
43
  }
40
44
  /**
41
45
  * Sends the conversation history to the gemini model.
@@ -54,9 +58,10 @@ class GeminiLlmConnection {
54
58
  }
55
59
  );
56
60
  if (contents.length > 0) {
61
+ const isGemini3x = (0, import_model_name.isGemini3xFlashLive)(this.modelVersion);
57
62
  this.geminiSession.sendClientContent({
58
63
  turns: contents,
59
- turnComplete: contents[contents.length - 1].role === "user"
64
+ turnComplete: isGemini3x ? true : contents[contents.length - 1].role === "user"
60
65
  });
61
66
  } else {
62
67
  import_logger.logger.info("no content is sent");
@@ -83,10 +88,16 @@ class GeminiLlmConnection {
83
88
  });
84
89
  } else {
85
90
  import_logger.logger.debug("Sending LLM new content", content);
86
- this.geminiSession.sendClientContent({
87
- turns: [content],
88
- turnComplete: true
89
- });
91
+ const isGemini3x = (0, import_model_name.isGemini3xFlashLive)(this.modelVersion);
92
+ if (isGemini3x && content.parts.length === 1 && content.parts[0].text) {
93
+ import_logger.logger.debug("Using sendRealtimeInput for Gemini 3.x text input");
94
+ this.geminiSession.sendRealtimeInput({ text: content.parts[0].text });
95
+ } else {
96
+ this.geminiSession.sendClientContent({
97
+ turns: [content],
98
+ turnComplete: true
99
+ });
100
+ }
90
101
  }
91
102
  }
92
103
  /**
@@ -95,8 +106,36 @@ class GeminiLlmConnection {
95
106
  * @param blob The blob to send to the model.
96
107
  */
97
108
  async sendRealtime(blob) {
109
+ var _a, _b, _c;
98
110
  import_logger.logger.debug("Sending LLM Blob:", blob);
99
- this.geminiSession.sendRealtimeInput({ media: blob });
111
+ const isGemini3x = (0, import_model_name.isGemini3xFlashLive)(this.modelVersion);
112
+ const isNativeAudio = (_a = this.modelVersion) == null ? void 0 : _a.includes("native-audio");
113
+ if (isGemini3x || isNativeAudio) {
114
+ if ((_b = blob.mimeType) == null ? void 0 : _b.startsWith("audio/")) {
115
+ this.geminiSession.sendRealtimeInput({ audio: blob });
116
+ } else if ((_c = blob.mimeType) == null ? void 0 : _c.startsWith("image/")) {
117
+ this.geminiSession.sendRealtimeInput({ video: blob });
118
+ } else {
119
+ import_logger.logger.warn(
120
+ "Blob not sent. Unknown or empty mime type for sendRealtimeInput:",
121
+ blob.mimeType
122
+ );
123
+ }
124
+ } else {
125
+ this.geminiSession.sendRealtimeInput({ media: blob });
126
+ }
127
+ }
128
+ /**
129
+ * Sends an activity start signal to the model.
130
+ */
131
+ async sendActivityStart() {
132
+ this.geminiSession.sendRealtimeInput({ activityStart: {} });
133
+ }
134
+ /**
135
+ * Sends an activity end signal to the model.
136
+ */
137
+ async sendActivityEnd() {
138
+ this.geminiSession.sendRealtimeInput({ activityEnd: {} });
100
139
  }
101
140
  /**
102
141
  * Builds a full text response.
@@ -105,20 +144,24 @@ class GeminiLlmConnection {
105
144
  * partial.
106
145
  *
107
146
  * @param text The text to be included in the response.
147
+ * @param isThought Whether the text is a thought.
148
+ * @param groundingMetadata The grounding metadata to include.
108
149
  * @returns An LlmResponse containing the full text.
109
150
  */
110
- buildFullTextResponse(text) {
111
- return {
112
- content: {
113
- role: "model",
114
- parts: [{ text }]
115
- }
116
- };
117
- }
118
- // TODO(b/425992518): GenAI SDK inconsistent API, missing methods.
119
- // eslint-disable-next-line require-yield
120
151
  async *receive() {
121
- throw new Error("Not Implemented.");
152
+ if (!this.messageQueue) {
153
+ throw new Error("Message queue is not initialized.");
154
+ }
155
+ const aggregator = new import_live_connection_utils.LiveResponseAggregator(this.modelVersion);
156
+ for await (const message of this.messageQueue) {
157
+ import_logger.logger.debug("Got LLM Live message:", message);
158
+ for (const response of aggregator.processMessage(message)) {
159
+ yield response;
160
+ }
161
+ }
162
+ for (const response of aggregator.close()) {
163
+ yield response;
164
+ }
122
165
  }
123
166
  /**
124
167
  * Closes the llm server connection.
@@ -32,6 +32,7 @@ var import_genai = require("@google/genai");
32
32
  var import_env_aware_utils = require("../utils/env_aware_utils.js");
33
33
  var import_logger = require("../utils/logger.js");
34
34
  var import_variant_utils = require("../utils/variant_utils.js");
35
+ var import_async_queue = require("../utils/async_queue.js");
35
36
  var import_streaming_utils = require("../utils/streaming_utils.js");
36
37
  var import_base_llm = require("./base_llm.js");
37
38
  var import_gemini_llm_connection = require("./gemini_llm_connection.js");
@@ -168,10 +169,19 @@ class Gemini extends import_base_llm.BaseLlm {
168
169
  }
169
170
  get liveApiClient() {
170
171
  if (!this._liveApiClient) {
171
- this._liveApiClient = new import_genai.GoogleGenAI({
172
- apiKey: this.apiKey,
173
- httpOptions: this.getLiveHttpOptions()
174
- });
172
+ if (this.vertexai) {
173
+ this._liveApiClient = new import_genai.GoogleGenAI({
174
+ vertexai: this.vertexai,
175
+ project: this.project,
176
+ location: this.location || "global",
177
+ httpOptions: this.getLiveHttpOptions()
178
+ });
179
+ } else {
180
+ this._liveApiClient = new import_genai.GoogleGenAI({
181
+ apiKey: this.apiKey,
182
+ httpOptions: this.getLiveHttpOptions()
183
+ });
184
+ }
175
185
  }
176
186
  return this._liveApiClient;
177
187
  }
@@ -203,16 +213,24 @@ class Gemini extends import_base_llm.BaseLlm {
203
213
  };
204
214
  }
205
215
  llmRequest.liveConnectConfig.tools = (_c = llmRequest.config) == null ? void 0 : _c.tools;
216
+ const modelVersion = (_d = llmRequest.model) != null ? _d : this.model;
217
+ const messageQueue = new import_async_queue.AsyncQueue();
206
218
  const liveSession = await this.liveApiClient.live.connect({
207
- model: (_d = llmRequest.model) != null ? _d : this.model,
219
+ model: modelVersion,
208
220
  config: llmRequest.liveConnectConfig,
209
221
  callbacks: {
210
- // TODO - b/425992518: GenAI SDK inconsistent API, missing methods.
211
- onmessage: () => {
222
+ onmessage: (message) => {
223
+ messageQueue.push(message);
224
+ },
225
+ onerror: (error) => {
226
+ messageQueue.error(error);
227
+ },
228
+ onclose: () => {
229
+ messageQueue.close();
212
230
  }
213
231
  }
214
232
  });
215
- return new import_gemini_llm_connection.GeminiLlmConnection(liveSession);
233
+ return new import_gemini_llm_connection.GeminiLlmConnection(liveSession, modelVersion, messageQueue);
216
234
  }
217
235
  preprocessRequest(llmRequest) {
218
236
  if (this.apiBackend === import_variant_utils.GoogleLLMVariant.GEMINI_API) {