@google/adk 0.6.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) 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 +69 -0
  27. package/dist/cjs/features/feature_registry.js +141 -0
  28. package/dist/cjs/index.js +83 -113
  29. package/dist/cjs/models/apigee_llm.js +2 -2
  30. package/dist/cjs/models/google_llm.js +18 -53
  31. package/dist/cjs/models/routed_llm.js +99 -0
  32. package/dist/cjs/plugins/base_plugin.js +39 -2
  33. package/dist/cjs/plugins/plugin_manager.js +39 -0
  34. package/dist/cjs/runner/runner.js +31 -3
  35. package/dist/cjs/sessions/db/operations.js +3 -10
  36. package/dist/cjs/skills/loader.js +283 -0
  37. package/dist/cjs/skills/prompt.js +58 -0
  38. package/dist/cjs/skills/skill.js +78 -0
  39. package/dist/cjs/tools/agent_tool.js +11 -4
  40. package/dist/cjs/tools/mcp/mcp_tool.js +7 -3
  41. package/dist/cjs/tools/mcp/mcp_toolset.js +1 -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/tools/url_context_tool.js +73 -0
  49. package/dist/cjs/tools/vertex_ai_search_tool.js +127 -0
  50. package/dist/cjs/utils/experimental.js +74 -0
  51. package/dist/cjs/utils/failover_utils.js +93 -0
  52. package/dist/cjs/utils/file_extension_utils.js +77 -0
  53. package/dist/cjs/utils/file_utils.js +94 -0
  54. package/dist/cjs/utils/model_name.js +8 -2
  55. package/dist/cjs/utils/streaming_utils.js +333 -0
  56. package/dist/cjs/version.js +1 -1
  57. package/dist/esm/a2a/a2a_event.js +2 -0
  58. package/dist/esm/a2a/a2a_remote_agent.js +2 -0
  59. package/dist/esm/a2a/a2a_remote_agent_run_processor.js +2 -0
  60. package/dist/esm/a2a/a2a_remote_agent_utils.js +2 -0
  61. package/dist/esm/a2a/agent_card.js +2 -0
  62. package/dist/esm/a2a/agent_executor.js +2 -0
  63. package/dist/esm/a2a/agent_to_a2a.js +2 -0
  64. package/dist/esm/a2a/event_converter_utils.js +2 -0
  65. package/dist/esm/a2a/event_processor_utils.js +2 -0
  66. package/dist/esm/a2a/executor_context.js +2 -0
  67. package/dist/esm/a2a/metadata_converter_utils.js +2 -0
  68. package/dist/esm/a2a/part_converter_utils.js +2 -0
  69. package/dist/esm/agents/active_streaming_tool.js +2 -0
  70. package/dist/esm/agents/base_agent.js +13 -2
  71. package/dist/esm/agents/context.js +3 -0
  72. package/dist/esm/agents/functions.js +3 -0
  73. package/dist/esm/agents/instructions.js +2 -0
  74. package/dist/esm/agents/invocation_context.js +3 -0
  75. package/dist/esm/agents/live_request_queue.js +2 -0
  76. package/dist/esm/agents/llm_agent.js +72 -13
  77. package/dist/esm/agents/loop_agent.js +6 -0
  78. package/dist/esm/agents/parallel_agent.js +6 -0
  79. package/dist/esm/agents/processors/agent_transfer_llm_request_processor.js +2 -0
  80. package/dist/esm/agents/processors/base_llm_processor.js +2 -0
  81. package/dist/esm/agents/processors/basic_llm_request_processor.js +2 -0
  82. package/dist/esm/agents/processors/code_execution_request_processor.js +5 -0
  83. package/dist/esm/agents/processors/content_processor_utils.js +2 -0
  84. package/dist/esm/agents/processors/content_request_processor.js +2 -0
  85. package/dist/esm/agents/processors/context_compactor_request_processor.js +11 -0
  86. package/dist/esm/agents/processors/identity_llm_request_processor.js +2 -0
  87. package/dist/esm/agents/processors/instructions_llm_request_processor.js +2 -0
  88. package/dist/esm/agents/processors/request_confirmation_llm_request_processor.js +2 -0
  89. package/dist/esm/agents/processors/tool_filter_request_processor.js +44 -0
  90. package/dist/esm/agents/readonly_context.js +2 -0
  91. package/dist/esm/agents/routed_agent.js +70 -0
  92. package/dist/esm/agents/run_config.js +2 -0
  93. package/dist/esm/agents/sequential_agent.js +2 -0
  94. package/dist/esm/agents/transcription_entry.js +2 -0
  95. package/dist/esm/artifacts/base_artifact_service.js +2 -0
  96. package/dist/esm/artifacts/file_artifact_service.js +2 -0
  97. package/dist/esm/artifacts/gcs_artifact_service.js +2 -0
  98. package/dist/esm/artifacts/in_memory_artifact_service.js +2 -0
  99. package/dist/esm/artifacts/registry.js +2 -0
  100. package/dist/esm/auth/auth_credential.js +2 -0
  101. package/dist/esm/auth/auth_handler.js +68 -1
  102. package/dist/esm/auth/auth_preprocessor.js +155 -0
  103. package/dist/esm/auth/auth_provider_registry.js +33 -0
  104. package/dist/esm/auth/auth_schemes.js +2 -0
  105. package/dist/esm/auth/auth_tool.js +2 -0
  106. package/dist/esm/auth/base_auth_provider.js +7 -0
  107. package/dist/esm/auth/credential_service/base_credential_service.js +2 -0
  108. package/dist/esm/auth/credential_service/in_memory_credential_service.js +2 -0
  109. package/dist/esm/auth/credential_service/session_state_credential_service.js +23 -0
  110. package/dist/esm/auth/exchanger/base_credential_exchanger.js +2 -0
  111. package/dist/esm/auth/exchanger/credential_exchanger_registry.js +2 -0
  112. package/dist/esm/auth/oauth2/oauth2_credential_exchanger.js +177 -0
  113. package/dist/esm/auth/oauth2/oauth2_credential_refresher.js +85 -0
  114. package/dist/esm/auth/oauth2/oauth2_discovery.js +156 -0
  115. package/dist/esm/auth/oauth2/oauth2_utils.js +87 -0
  116. package/dist/esm/auth/refresher/base_credential_refresher.js +16 -0
  117. package/dist/esm/auth/refresher/credential_refresher_registry.js +40 -0
  118. package/dist/esm/code_executors/base_code_executor.js +11 -5
  119. package/dist/esm/code_executors/built_in_code_executor.js +2 -0
  120. package/dist/esm/code_executors/code_execution_utils.js +19 -0
  121. package/dist/esm/code_executors/code_executor_context.js +2 -0
  122. package/dist/esm/code_executors/unsafe_local_code_executor.js +205 -0
  123. package/dist/esm/common.js +52 -3
  124. package/dist/esm/context/base_context_compactor.js +2 -0
  125. package/dist/esm/context/summarizers/base_summarizer.js +2 -0
  126. package/dist/esm/context/summarizers/llm_summarizer.js +2 -0
  127. package/dist/esm/context/token_based_context_compactor.js +2 -0
  128. package/dist/esm/context/truncating_context_compactor.js +2 -0
  129. package/dist/esm/events/compacted_event.js +2 -0
  130. package/dist/esm/events/event.js +2 -0
  131. package/dist/esm/events/event_actions.js +2 -0
  132. package/dist/esm/events/structured_events.js +2 -0
  133. package/dist/esm/examples/base_example_provider.js +2 -0
  134. package/dist/esm/examples/example.js +2 -0
  135. package/dist/esm/examples/example_util.js +2 -0
  136. package/dist/esm/features/feature_registry.js +107 -0
  137. package/dist/esm/index.js +45 -119
  138. package/dist/esm/index_web.js +2 -0
  139. package/dist/esm/memory/base_memory_service.js +2 -0
  140. package/dist/esm/memory/in_memory_memory_service.js +2 -0
  141. package/dist/esm/memory/memory_entry.js +2 -0
  142. package/dist/esm/models/apigee_llm.js +4 -2
  143. package/dist/esm/models/base_llm.js +2 -0
  144. package/dist/esm/models/base_llm_connection.js +2 -0
  145. package/dist/esm/models/gemini_llm_connection.js +2 -0
  146. package/dist/esm/models/google_llm.js +20 -54
  147. package/dist/esm/models/llm_request.js +2 -0
  148. package/dist/esm/models/llm_response.js +2 -0
  149. package/dist/esm/models/registry.js +2 -0
  150. package/dist/esm/models/routed_llm.js +73 -0
  151. package/dist/esm/plugins/base_plugin.js +41 -1
  152. package/dist/esm/plugins/logging_plugin.js +2 -0
  153. package/dist/esm/plugins/plugin_manager.js +41 -0
  154. package/dist/esm/plugins/security_plugin.js +2 -0
  155. package/dist/esm/runner/in_memory_runner.js +2 -0
  156. package/dist/esm/runner/runner.js +33 -3
  157. package/dist/esm/sessions/base_session_service.js +2 -0
  158. package/dist/esm/sessions/database_session_service.js +2 -0
  159. package/dist/esm/sessions/db/operations.js +5 -10
  160. package/dist/esm/sessions/db/schema.js +2 -0
  161. package/dist/esm/sessions/in_memory_session_service.js +2 -0
  162. package/dist/esm/sessions/registry.js +2 -0
  163. package/dist/esm/sessions/session.js +2 -0
  164. package/dist/esm/sessions/state.js +2 -0
  165. package/dist/esm/skills/loader.js +244 -0
  166. package/dist/esm/skills/prompt.js +30 -0
  167. package/dist/esm/skills/skill.js +49 -0
  168. package/dist/esm/telemetry/google_cloud.js +2 -0
  169. package/dist/esm/telemetry/setup.js +2 -0
  170. package/dist/esm/telemetry/tracing.js +2 -0
  171. package/dist/esm/tools/agent_tool.js +13 -4
  172. package/dist/esm/tools/base_tool.js +2 -0
  173. package/dist/esm/tools/base_toolset.js +2 -0
  174. package/dist/esm/tools/exit_loop_tool.js +2 -0
  175. package/dist/esm/tools/forwarding_artifact_service.js +2 -0
  176. package/dist/esm/tools/function_tool.js +2 -0
  177. package/dist/esm/tools/google_search_tool.js +2 -0
  178. package/dist/esm/tools/load_artifacts_tool.js +2 -0
  179. package/dist/esm/tools/load_memory_tool.js +2 -0
  180. package/dist/esm/tools/long_running_tool.js +2 -0
  181. package/dist/esm/tools/mcp/mcp_session_manager.js +2 -0
  182. package/dist/esm/tools/mcp/mcp_tool.js +9 -3
  183. package/dist/esm/tools/mcp/mcp_toolset.js +3 -1
  184. package/dist/esm/tools/preload_memory_tool.js +2 -0
  185. package/dist/esm/tools/skill/list_skills_tool.js +50 -0
  186. package/dist/esm/tools/skill/load_skill_resource_tool.js +191 -0
  187. package/dist/esm/tools/skill/load_skill_tool.js +82 -0
  188. package/dist/esm/tools/skill/run_skill_inline_script_tool.js +120 -0
  189. package/dist/esm/tools/skill/run_skill_script_tool.js +192 -0
  190. package/dist/esm/tools/skill/skill_toolset.js +137 -0
  191. package/dist/esm/tools/tool_confirmation.js +2 -0
  192. package/dist/esm/tools/url_context_tool.js +44 -0
  193. package/dist/esm/tools/vertex_ai_search_tool.js +103 -0
  194. package/dist/esm/utils/client_labels.js +2 -0
  195. package/dist/esm/utils/env_aware_utils.js +2 -0
  196. package/dist/esm/utils/experimental.js +46 -0
  197. package/dist/esm/utils/failover_utils.js +65 -0
  198. package/dist/esm/utils/file_extension_utils.js +51 -0
  199. package/dist/esm/utils/file_utils.js +56 -0
  200. package/dist/esm/utils/gemini_schema_util.js +2 -0
  201. package/dist/esm/utils/logger.js +2 -0
  202. package/dist/esm/utils/model_name.js +8 -1
  203. package/dist/esm/utils/object_notation_utils.js +2 -0
  204. package/dist/esm/utils/simple_zod_to_json.js +2 -0
  205. package/dist/esm/utils/streaming_utils.js +307 -0
  206. package/dist/esm/utils/variant_utils.js +2 -0
  207. package/dist/esm/version.js +3 -1
  208. package/dist/types/agents/context.d.ts +1 -0
  209. package/dist/types/agents/invocation_context.d.ts +5 -0
  210. package/dist/types/agents/processors/tool_filter_request_processor.d.ts +14 -0
  211. package/dist/types/agents/routed_agent.d.ts +59 -0
  212. package/dist/types/auth/auth_credential.d.ts +17 -0
  213. package/dist/types/auth/auth_handler.d.ts +1 -0
  214. package/dist/types/auth/auth_preprocessor.d.ts +12 -0
  215. package/dist/types/auth/auth_provider_registry.d.ts +27 -0
  216. package/dist/types/auth/base_auth_provider.d.ts +20 -0
  217. package/dist/types/auth/credential_service/session_state_credential_service.d.ts +20 -0
  218. package/dist/types/auth/exchanger/base_credential_exchanger.d.ts +12 -5
  219. package/dist/types/auth/oauth2/oauth2_credential_exchanger.d.ts +26 -0
  220. package/dist/types/auth/oauth2/oauth2_credential_refresher.d.ts +29 -0
  221. package/dist/types/auth/oauth2/oauth2_discovery.d.ts +38 -0
  222. package/dist/types/auth/oauth2/oauth2_utils.d.ts +56 -0
  223. package/dist/types/auth/refresher/base_credential_refresher.d.ts +38 -0
  224. package/dist/types/auth/refresher/credential_refresher_registry.d.ts +27 -0
  225. package/dist/types/code_executors/base_code_executor.d.ts +4 -4
  226. package/dist/types/code_executors/code_execution_utils.d.ts +29 -1
  227. package/dist/types/code_executors/unsafe_local_code_executor.d.ts +48 -0
  228. package/dist/types/common.d.ts +29 -3
  229. package/dist/types/features/feature_registry.d.ts +66 -0
  230. package/dist/types/index.d.ts +4 -0
  231. package/dist/types/memory/base_memory_service.d.ts +6 -0
  232. package/dist/types/memory/memory_entry.d.ts +11 -5
  233. package/dist/types/models/apigee_llm.d.ts +1 -1
  234. package/dist/types/models/base_llm.d.ts +1 -1
  235. package/dist/types/models/google_llm.d.ts +1 -1
  236. package/dist/types/models/llm_request.d.ts +4 -0
  237. package/dist/types/models/routed_llm.d.ts +38 -0
  238. package/dist/types/plugins/base_plugin.d.ts +49 -0
  239. package/dist/types/plugins/plugin_manager.d.ts +22 -1
  240. package/dist/types/runner/runner.d.ts +1 -0
  241. package/dist/types/skills/loader.d.ts +38 -0
  242. package/dist/types/skills/prompt.d.ts +13 -0
  243. package/dist/types/skills/skill.d.ts +48 -0
  244. package/dist/types/tools/mcp/mcp_tool.d.ts +7 -1
  245. package/dist/types/tools/mcp/mcp_toolset.d.ts +5 -0
  246. package/dist/types/tools/skill/list_skills_tool.d.ts +14 -0
  247. package/dist/types/tools/skill/load_skill_resource_tool.d.ts +15 -0
  248. package/dist/types/tools/skill/load_skill_tool.d.ts +14 -0
  249. package/dist/types/tools/skill/run_skill_inline_script_tool.d.ts +14 -0
  250. package/dist/types/tools/skill/run_skill_script_tool.d.ts +17 -0
  251. package/dist/types/tools/skill/skill_toolset.d.ts +28 -0
  252. package/dist/types/tools/url_context_tool.d.ts +17 -0
  253. package/dist/types/tools/vertex_ai_search_tool.d.ts +55 -0
  254. package/dist/types/utils/experimental.d.ts +11 -0
  255. package/dist/types/utils/failover_utils.d.ts +17 -0
  256. package/dist/types/utils/file_extension_utils.d.ts +21 -0
  257. package/dist/types/utils/file_utils.d.ts +11 -0
  258. package/dist/types/utils/model_name.d.ts +4 -0
  259. package/dist/types/utils/streaming_utils.d.ts +40 -0
  260. package/dist/types/version.d.ts +1 -1
  261. package/dist/web/a2a/a2a_event.js +2 -0
  262. package/dist/web/a2a/a2a_remote_agent.js +2 -0
  263. package/dist/web/a2a/a2a_remote_agent_run_processor.js +2 -0
  264. package/dist/web/a2a/a2a_remote_agent_utils.js +2 -0
  265. package/dist/web/a2a/agent_card.js +2 -0
  266. package/dist/web/a2a/agent_executor.js +2 -0
  267. package/dist/web/a2a/agent_to_a2a.js +2 -0
  268. package/dist/web/a2a/event_converter_utils.js +2 -0
  269. package/dist/web/a2a/event_processor_utils.js +2 -0
  270. package/dist/web/a2a/executor_context.js +2 -0
  271. package/dist/web/a2a/metadata_converter_utils.js +2 -0
  272. package/dist/web/a2a/part_converter_utils.js +2 -0
  273. package/dist/web/agents/active_streaming_tool.js +2 -0
  274. package/dist/web/agents/base_agent.js +13 -2
  275. package/dist/web/agents/context.js +3 -0
  276. package/dist/web/agents/functions.js +3 -0
  277. package/dist/web/agents/instructions.js +2 -0
  278. package/dist/web/agents/invocation_context.js +3 -0
  279. package/dist/web/agents/live_request_queue.js +2 -0
  280. package/dist/web/agents/llm_agent.js +72 -13
  281. package/dist/web/agents/loop_agent.js +6 -0
  282. package/dist/web/agents/parallel_agent.js +6 -0
  283. package/dist/web/agents/processors/agent_transfer_llm_request_processor.js +2 -0
  284. package/dist/web/agents/processors/base_llm_processor.js +2 -0
  285. package/dist/web/agents/processors/basic_llm_request_processor.js +2 -0
  286. package/dist/web/agents/processors/code_execution_request_processor.js +5 -0
  287. package/dist/web/agents/processors/content_processor_utils.js +2 -0
  288. package/dist/web/agents/processors/content_request_processor.js +2 -0
  289. package/dist/web/agents/processors/context_compactor_request_processor.js +11 -0
  290. package/dist/web/agents/processors/identity_llm_request_processor.js +2 -0
  291. package/dist/web/agents/processors/instructions_llm_request_processor.js +2 -0
  292. package/dist/web/agents/processors/request_confirmation_llm_request_processor.js +2 -0
  293. package/dist/web/agents/processors/tool_filter_request_processor.js +62 -0
  294. package/dist/web/agents/readonly_context.js +2 -0
  295. package/dist/web/agents/routed_agent.js +138 -0
  296. package/dist/web/agents/run_config.js +2 -0
  297. package/dist/web/agents/sequential_agent.js +2 -0
  298. package/dist/web/agents/transcription_entry.js +2 -0
  299. package/dist/web/artifacts/base_artifact_service.js +2 -0
  300. package/dist/web/artifacts/file_artifact_service.js +2 -0
  301. package/dist/web/artifacts/gcs_artifact_service.js +2 -0
  302. package/dist/web/artifacts/in_memory_artifact_service.js +2 -0
  303. package/dist/web/artifacts/registry.js +2 -0
  304. package/dist/web/auth/auth_credential.js +2 -0
  305. package/dist/web/auth/auth_handler.js +85 -1
  306. package/dist/web/auth/auth_preprocessor.js +173 -0
  307. package/dist/web/auth/auth_provider_registry.js +33 -0
  308. package/dist/web/auth/auth_schemes.js +2 -0
  309. package/dist/web/auth/auth_tool.js +2 -0
  310. package/dist/web/auth/base_auth_provider.js +7 -0
  311. package/dist/web/auth/credential_service/base_credential_service.js +2 -0
  312. package/dist/web/auth/credential_service/in_memory_credential_service.js +2 -0
  313. package/dist/web/auth/credential_service/session_state_credential_service.js +23 -0
  314. package/dist/web/auth/exchanger/base_credential_exchanger.js +2 -0
  315. package/dist/web/auth/exchanger/credential_exchanger_registry.js +2 -0
  316. package/dist/web/auth/oauth2/oauth2_credential_exchanger.js +188 -0
  317. package/dist/web/auth/oauth2/oauth2_credential_refresher.js +102 -0
  318. package/dist/web/auth/oauth2/oauth2_discovery.js +156 -0
  319. package/dist/web/auth/oauth2/oauth2_utils.js +87 -0
  320. package/dist/web/auth/refresher/base_credential_refresher.js +16 -0
  321. package/dist/web/auth/refresher/credential_refresher_registry.js +40 -0
  322. package/dist/web/code_executors/base_code_executor.js +11 -5
  323. package/dist/web/code_executors/built_in_code_executor.js +2 -0
  324. package/dist/web/code_executors/code_execution_utils.js +19 -0
  325. package/dist/web/code_executors/code_executor_context.js +2 -0
  326. package/dist/web/code_executors/unsafe_local_code_executor.js +203 -0
  327. package/dist/web/common.js +52 -3
  328. package/dist/web/context/base_context_compactor.js +2 -0
  329. package/dist/web/context/summarizers/base_summarizer.js +2 -0
  330. package/dist/web/context/summarizers/llm_summarizer.js +2 -0
  331. package/dist/web/context/token_based_context_compactor.js +2 -0
  332. package/dist/web/context/truncating_context_compactor.js +2 -0
  333. package/dist/web/events/compacted_event.js +2 -0
  334. package/dist/web/events/event.js +2 -0
  335. package/dist/web/events/event_actions.js +2 -0
  336. package/dist/web/events/structured_events.js +2 -0
  337. package/dist/web/examples/base_example_provider.js +2 -0
  338. package/dist/web/examples/example.js +2 -0
  339. package/dist/web/examples/example_util.js +2 -0
  340. package/dist/web/features/feature_registry.js +107 -0
  341. package/dist/web/index.js +45 -13
  342. package/dist/web/index_web.js +2 -0
  343. package/dist/web/memory/base_memory_service.js +2 -0
  344. package/dist/web/memory/in_memory_memory_service.js +2 -0
  345. package/dist/web/memory/memory_entry.js +2 -0
  346. package/dist/web/models/apigee_llm.js +4 -2
  347. package/dist/web/models/base_llm.js +2 -0
  348. package/dist/web/models/base_llm_connection.js +2 -0
  349. package/dist/web/models/gemini_llm_connection.js +2 -0
  350. package/dist/web/models/google_llm.js +37 -59
  351. package/dist/web/models/llm_request.js +2 -0
  352. package/dist/web/models/llm_response.js +2 -0
  353. package/dist/web/models/registry.js +2 -0
  354. package/dist/web/models/routed_llm.js +122 -0
  355. package/dist/web/plugins/base_plugin.js +41 -1
  356. package/dist/web/plugins/logging_plugin.js +2 -0
  357. package/dist/web/plugins/plugin_manager.js +41 -0
  358. package/dist/web/plugins/security_plugin.js +2 -0
  359. package/dist/web/runner/in_memory_runner.js +2 -0
  360. package/dist/web/runner/runner.js +33 -3
  361. package/dist/web/sessions/base_session_service.js +2 -0
  362. package/dist/web/sessions/database_session_service.js +2 -0
  363. package/dist/web/sessions/db/operations.js +5 -10
  364. package/dist/web/sessions/db/schema.js +2 -0
  365. package/dist/web/sessions/in_memory_session_service.js +2 -0
  366. package/dist/web/sessions/registry.js +2 -0
  367. package/dist/web/sessions/session.js +2 -0
  368. package/dist/web/sessions/state.js +2 -0
  369. package/dist/web/skills/loader.js +262 -0
  370. package/dist/web/skills/prompt.js +30 -0
  371. package/dist/web/skills/skill.js +67 -0
  372. package/dist/web/telemetry/google_cloud.js +2 -0
  373. package/dist/web/telemetry/setup.js +2 -0
  374. package/dist/web/telemetry/tracing.js +2 -0
  375. package/dist/web/tools/agent_tool.js +13 -4
  376. package/dist/web/tools/base_tool.js +2 -0
  377. package/dist/web/tools/base_toolset.js +2 -0
  378. package/dist/web/tools/exit_loop_tool.js +2 -0
  379. package/dist/web/tools/forwarding_artifact_service.js +2 -0
  380. package/dist/web/tools/function_tool.js +2 -0
  381. package/dist/web/tools/google_search_tool.js +2 -0
  382. package/dist/web/tools/load_artifacts_tool.js +2 -0
  383. package/dist/web/tools/load_memory_tool.js +2 -0
  384. package/dist/web/tools/long_running_tool.js +2 -0
  385. package/dist/web/tools/mcp/mcp_session_manager.js +2 -0
  386. package/dist/web/tools/mcp/mcp_tool.js +9 -3
  387. package/dist/web/tools/mcp/mcp_toolset.js +3 -1
  388. package/dist/web/tools/preload_memory_tool.js +2 -0
  389. package/dist/web/tools/skill/list_skills_tool.js +50 -0
  390. package/dist/web/tools/skill/load_skill_resource_tool.js +191 -0
  391. package/dist/web/tools/skill/load_skill_tool.js +82 -0
  392. package/dist/web/tools/skill/run_skill_inline_script_tool.js +120 -0
  393. package/dist/web/tools/skill/run_skill_script_tool.js +190 -0
  394. package/dist/web/tools/skill/skill_toolset.js +123 -0
  395. package/dist/web/tools/tool_confirmation.js +2 -0
  396. package/dist/web/tools/url_context_tool.js +44 -0
  397. package/dist/web/tools/vertex_ai_search_tool.js +103 -0
  398. package/dist/web/utils/client_labels.js +2 -0
  399. package/dist/web/utils/env_aware_utils.js +2 -0
  400. package/dist/web/utils/experimental.js +46 -0
  401. package/dist/web/utils/failover_utils.js +96 -0
  402. package/dist/web/utils/file_extension_utils.js +51 -0
  403. package/dist/web/utils/file_utils.js +74 -0
  404. package/dist/web/utils/gemini_schema_util.js +2 -0
  405. package/dist/web/utils/logger.js +2 -0
  406. package/dist/web/utils/model_name.js +8 -1
  407. package/dist/web/utils/object_notation_utils.js +2 -0
  408. package/dist/web/utils/simple_zod_to_json.js +2 -0
  409. package/dist/web/utils/streaming_utils.js +325 -0
  410. package/dist/web/utils/variant_utils.js +2 -0
  411. package/dist/web/version.js +3 -1
  412. package/package.json +20 -18
  413. package/dist/cjs/index.js.map +0 -7
  414. package/dist/esm/index.js.map +0 -7
  415. package/dist/web/index.js.map +0 -7
@@ -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_streaming_utils = require("../utils/streaming_utils.js");
35
36
  var import_base_llm = require("./base_llm.js");
36
37
  var import_gemini_llm_connection = require("./gemini_llm_connection.js");
37
38
  var import_llm_response = require("./llm_response.js");
@@ -81,80 +82,44 @@ class Gemini extends import_base_llm.BaseLlm {
81
82
  * @param stream bool = false, whether to do streaming call.
82
83
  * @yields LlmResponse: The model response.
83
84
  */
84
- async *generateContentAsync(llmRequest, stream = false) {
85
- var _a, _b, _c, _d, _e, _f, _g;
85
+ async *generateContentAsync(llmRequest, stream = false, abortSignal) {
86
+ var _a, _b, _c;
86
87
  this.preprocessRequest(llmRequest);
87
88
  this.maybeAppendUserContent(llmRequest);
88
89
  import_logger.logger.info(
89
- `Sending out request, model: ${llmRequest.model}, backend: ${this.apiBackend}, stream: ${stream}`
90
+ `Sending out request, model: ${(_a = llmRequest.model) != null ? _a : this.model}, backend: ${this.apiBackend}, stream: ${stream}`
90
91
  );
91
- if ((_a = llmRequest.config) == null ? void 0 : _a.httpOptions) {
92
+ if (!llmRequest.config) {
93
+ llmRequest.config = {};
94
+ }
95
+ if (llmRequest.config.httpOptions) {
92
96
  llmRequest.config.httpOptions.headers = {
93
97
  ...llmRequest.config.httpOptions.headers,
94
98
  ...this.trackingHeaders
95
99
  };
96
100
  }
101
+ if (abortSignal) {
102
+ llmRequest.config.abortSignal = abortSignal;
103
+ }
97
104
  if (stream) {
98
105
  const streamResult = await this.apiClient.models.generateContentStream({
99
106
  model: (_b = llmRequest.model) != null ? _b : this.model,
100
107
  contents: llmRequest.contents,
101
108
  config: llmRequest.config
102
109
  });
103
- let thoughtText = "";
104
- let text = "";
105
- let usageMetadata;
106
- let lastResponse;
110
+ const aggregator = new import_streaming_utils.StreamingResponseAggregator();
107
111
  for await (const response of streamResult) {
108
- lastResponse = response;
109
- const llmResponse = (0, import_llm_response.createLlmResponse)(response);
110
- usageMetadata = llmResponse.usageMetadata;
111
- const firstPart = (_d = (_c = llmResponse.content) == null ? void 0 : _c.parts) == null ? void 0 : _d[0];
112
- if (firstPart == null ? void 0 : firstPart.text) {
113
- if ("thought" in firstPart && firstPart.thought) {
114
- thoughtText += firstPart.text;
115
- } else {
116
- text += firstPart.text;
117
- }
118
- llmResponse.partial = true;
119
- } else if ((thoughtText || text) && (!firstPart || !firstPart.inlineData)) {
120
- const parts = [];
121
- if (thoughtText) {
122
- parts.push({ text: thoughtText, thought: true });
123
- }
124
- if (text) {
125
- parts.push((0, import_genai.createPartFromText)(text));
126
- }
127
- yield {
128
- content: {
129
- role: "model",
130
- parts
131
- },
132
- usageMetadata: llmResponse.usageMetadata
133
- };
134
- thoughtText = "";
135
- text = "";
112
+ for await (const llmResponse of aggregator.processResponse(response)) {
113
+ yield llmResponse;
136
114
  }
137
- yield llmResponse;
138
115
  }
139
- if ((text || thoughtText) && ((_f = (_e = lastResponse == null ? void 0 : lastResponse.candidates) == null ? void 0 : _e[0]) == null ? void 0 : _f.finishReason) === import_genai.FinishReason.STOP) {
140
- const parts = [];
141
- if (thoughtText) {
142
- parts.push({ text: thoughtText, thought: true });
143
- }
144
- if (text) {
145
- parts.push({ text });
146
- }
147
- yield {
148
- content: {
149
- role: "model",
150
- parts
151
- },
152
- usageMetadata
153
- };
116
+ const finalResponse = aggregator.close();
117
+ if (finalResponse) {
118
+ yield finalResponse;
154
119
  }
155
120
  } else {
156
121
  const response = await this.apiClient.models.generateContent({
157
- model: (_g = llmRequest.model) != null ? _g : this.model,
122
+ model: (_c = llmRequest.model) != null ? _c : this.model,
158
123
  contents: llmRequest.contents,
159
124
  config: llmRequest.config
160
125
  });
@@ -0,0 +1,99 @@
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 __decorateClass = (decorators, target, key, kind) => {
26
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
27
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
28
+ if (decorator = decorators[i])
29
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
30
+ if (kind && result) __defProp(target, key, result);
31
+ return result;
32
+ };
33
+ var routed_llm_exports = {};
34
+ __export(routed_llm_exports, {
35
+ RoutedLlm: () => RoutedLlm
36
+ });
37
+ module.exports = __toCommonJS(routed_llm_exports);
38
+ var import_base_llm = require("./base_llm.js");
39
+ var import_experimental = require("../utils/experimental.js");
40
+ var import_failover_utils = require("../utils/failover_utils.js");
41
+ var import_logger = require("../utils/logger.js");
42
+ /**
43
+ * @license
44
+ * Copyright 2026 Google LLC
45
+ * SPDX-License-Identifier: Apache-2.0
46
+ */
47
+ let RoutedLlm = class extends import_base_llm.BaseLlm {
48
+ constructor({
49
+ models,
50
+ router,
51
+ modelName = "routed-llm"
52
+ }) {
53
+ const modelsMap = Array.isArray(models) ? Object.fromEntries(models.map((m) => [m.model, m])) : models;
54
+ const modelNames = Object.entries(modelsMap).map(
55
+ ([name, model]) => `${name} (${model.model})`
56
+ );
57
+ const computedName = `RoutedLlm[${modelNames.join(", ")}]`;
58
+ super({ model: modelName === "routed-llm" ? computedName : modelName });
59
+ this.models = modelsMap;
60
+ this.router = router;
61
+ }
62
+ /**
63
+ * Generates content by delegating to the selected model.
64
+ */
65
+ async *generateContentAsync(llmRequest, stream) {
66
+ import_logger.logger.info(`Routing request via ${this.model}`);
67
+ yield* (0, import_failover_utils.runWithRouting)(
68
+ this.models,
69
+ llmRequest,
70
+ this.router,
71
+ (model) => model.generateContentAsync(llmRequest, stream)
72
+ );
73
+ }
74
+ /**
75
+ * Creates a live connection to the LLM by delegating to the selected model.
76
+ * This live connection cannot be switched mid-stream, it is tied to the model
77
+ * selected at the time of connection.
78
+ */
79
+ async connect(llmRequest) {
80
+ const generator = (0, import_failover_utils.runWithRouting)(
81
+ this.models,
82
+ llmRequest,
83
+ this.router,
84
+ (model) => model.connect(llmRequest)
85
+ );
86
+ const result = await generator.next();
87
+ if (result.done || result.value === void 0) {
88
+ throw new Error("Failed to establish connection: No connection yielded.");
89
+ }
90
+ return result.value;
91
+ }
92
+ };
93
+ RoutedLlm = __decorateClass([
94
+ import_experimental.experimental
95
+ ], RoutedLlm);
96
+ // Annotate the CommonJS export names for ESM import in node:
97
+ 0 && (module.exports = {
98
+ RoutedLlm
99
+ });
@@ -22,16 +22,31 @@ var __copyProps = (to, from, except, desc) => {
22
22
  return to;
23
23
  };
24
24
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var __decorateClass = (decorators, target, key, kind) => {
26
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
27
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
28
+ if (decorator = decorators[i])
29
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
30
+ if (kind && result) __defProp(target, key, result);
31
+ return result;
32
+ };
25
33
  var base_plugin_exports = {};
26
34
  __export(base_plugin_exports, {
27
- BasePlugin: () => BasePlugin
35
+ BasePlugin: () => BasePlugin,
36
+ ContextCompactionTrigger: () => ContextCompactionTrigger
28
37
  });
29
38
  module.exports = __toCommonJS(base_plugin_exports);
39
+ var import_experimental = require("../utils/experimental.js");
30
40
  /**
31
41
  * @license
32
42
  * Copyright 2025 Google LLC
33
43
  * SPDX-License-Identifier: Apache-2.0
34
44
  */
45
+ var ContextCompactionTrigger = /* @__PURE__ */ ((ContextCompactionTrigger2) => {
46
+ ContextCompactionTrigger2["Manual"] = "Manual";
47
+ ContextCompactionTrigger2["Auto"] = "Auto";
48
+ return ContextCompactionTrigger2;
49
+ })(ContextCompactionTrigger || {});
35
50
  class BasePlugin {
36
51
  /**
37
52
  * Initializes the plugin.
@@ -186,6 +201,18 @@ class BasePlugin {
186
201
  async onModelErrorCallback(params) {
187
202
  return;
188
203
  }
204
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
205
+ async beforeToolSelection(params) {
206
+ return;
207
+ }
208
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
209
+ async beforeContextCompaction(params) {
210
+ return;
211
+ }
212
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
213
+ async afterContextCompaction(params) {
214
+ return;
215
+ }
189
216
  /**
190
217
  * Callback executed before a tool is called.
191
218
  *
@@ -252,7 +279,17 @@ class BasePlugin {
252
279
  return;
253
280
  }
254
281
  }
282
+ __decorateClass([
283
+ import_experimental.experimental
284
+ ], BasePlugin.prototype, "beforeToolSelection", 1);
285
+ __decorateClass([
286
+ import_experimental.experimental
287
+ ], BasePlugin.prototype, "beforeContextCompaction", 1);
288
+ __decorateClass([
289
+ import_experimental.experimental
290
+ ], BasePlugin.prototype, "afterContextCompaction", 1);
255
291
  // Annotate the CommonJS export names for ESM import in node:
256
292
  0 && (module.exports = {
257
- BasePlugin
293
+ BasePlugin,
294
+ ContextCompactionTrigger
258
295
  });
@@ -180,6 +180,45 @@ class PluginManager {
180
180
  "afterAgentCallback"
181
181
  );
182
182
  }
183
+ /**
184
+ * Runs the `beforeToolSelection` for all plugins.
185
+ */
186
+ async runBeforeToolSelection({
187
+ callbackContext,
188
+ tools
189
+ }) {
190
+ return await this.runCallbacks(
191
+ this.plugins,
192
+ (plugin) => plugin.beforeToolSelection({ callbackContext, tools }),
193
+ "beforeToolSelection"
194
+ );
195
+ }
196
+ /**
197
+ * Runs the `beforeContextCompaction` for all plugins.
198
+ */
199
+ async runBeforeContextCompaction({
200
+ invocationContext,
201
+ trigger
202
+ }) {
203
+ await this.runCallbacks(
204
+ this.plugins,
205
+ (plugin) => plugin.beforeContextCompaction({ invocationContext, trigger }),
206
+ "beforeContextCompaction"
207
+ );
208
+ }
209
+ /**
210
+ * Runs the `afterContextCompaction` for all plugins.
211
+ */
212
+ async runAfterContextCompaction({
213
+ invocationContext,
214
+ trigger
215
+ }) {
216
+ await this.runCallbacks(
217
+ this.plugins,
218
+ (plugin) => plugin.afterContextCompaction({ invocationContext, trigger }),
219
+ "afterContextCompaction"
220
+ );
221
+ }
183
222
  /**
184
223
  * Runs the `beforeToolCallback` for all plugins.
185
224
  */
@@ -117,12 +117,15 @@ class Runner {
117
117
  ctx,
118
118
  this,
119
119
  async function* () {
120
- var _a2;
120
+ var _a2, _b, _c, _d, _e, _f, _g, _h, _i, _j;
121
121
  const session = await this.sessionService.getSession({
122
122
  appName: this.appName,
123
123
  userId,
124
124
  sessionId
125
125
  });
126
+ if ((_a2 = params.abortSignal) == null ? void 0 : _a2.aborted) {
127
+ return;
128
+ }
126
129
  if (!session) {
127
130
  if (!this.appName) {
128
131
  throw new Error(
@@ -152,17 +155,21 @@ class Runner {
152
155
  session,
153
156
  userContent: newMessage,
154
157
  runConfig,
155
- pluginManager: this.pluginManager
158
+ pluginManager: this.pluginManager,
159
+ abortSignal: params.abortSignal
156
160
  });
157
161
  const pluginUserMessage = await this.pluginManager.runOnUserMessageCallback({
158
162
  userMessage: newMessage,
159
163
  invocationContext
160
164
  });
165
+ if ((_b = params.abortSignal) == null ? void 0 : _b.aborted) {
166
+ return;
167
+ }
161
168
  if (pluginUserMessage) {
162
169
  newMessage = pluginUserMessage;
163
170
  }
164
171
  if (newMessage) {
165
- if (!((_a2 = newMessage.parts) == null ? void 0 : _a2.length)) {
172
+ if (!((_c = newMessage.parts) == null ? void 0 : _c.length)) {
166
173
  throw new Error("No parts in the newMessage.");
167
174
  }
168
175
  if (runConfig.saveInputBlobsAsArtifacts) {
@@ -172,6 +179,9 @@ class Runner {
172
179
  session.id,
173
180
  newMessage
174
181
  );
182
+ if ((_d = params.abortSignal) == null ? void 0 : _d.aborted) {
183
+ return;
184
+ }
175
185
  }
176
186
  await this.sessionService.appendEvent({
177
187
  session,
@@ -182,6 +192,9 @@ class Runner {
182
192
  content: newMessage
183
193
  })
184
194
  });
195
+ if ((_e = params.abortSignal) == null ? void 0 : _e.aborted) {
196
+ return;
197
+ }
185
198
  }
186
199
  invocationContext.agent = this.determineAgentForResumption(
187
200
  session,
@@ -191,6 +204,9 @@ class Runner {
191
204
  const beforeRunCallbackResponse = await this.pluginManager.runBeforeRunCallback({
192
205
  invocationContext
193
206
  });
207
+ if ((_f = params.abortSignal) == null ? void 0 : _f.aborted) {
208
+ return;
209
+ }
194
210
  if (beforeRunCallbackResponse) {
195
211
  const earlyExitEvent = (0, import_event.createEvent)({
196
212
  invocationId: invocationContext.invocationId,
@@ -201,11 +217,17 @@ class Runner {
201
217
  session,
202
218
  event: earlyExitEvent
203
219
  });
220
+ if ((_g = params.abortSignal) == null ? void 0 : _g.aborted) {
221
+ return;
222
+ }
204
223
  yield earlyExitEvent;
205
224
  } else {
206
225
  for await (const event of invocationContext.agent.runAsync(
207
226
  invocationContext
208
227
  )) {
228
+ if ((_h = params.abortSignal) == null ? void 0 : _h.aborted) {
229
+ return;
230
+ }
209
231
  if (!event.partial) {
210
232
  await this.sessionService.appendEvent({ session, event });
211
233
  }
@@ -213,6 +235,9 @@ class Runner {
213
235
  invocationContext,
214
236
  event
215
237
  });
238
+ if ((_i = params.abortSignal) == null ? void 0 : _i.aborted) {
239
+ return;
240
+ }
216
241
  if (modifiedEvent) {
217
242
  yield modifiedEvent;
218
243
  } else {
@@ -220,6 +245,9 @@ class Runner {
220
245
  }
221
246
  }
222
247
  await this.pluginManager.runAfterRunCallback({ invocationContext });
248
+ if ((_j = params.abortSignal) == null ? void 0 : _j.aborted) {
249
+ return;
250
+ }
223
251
  }
224
252
  }
225
253
  }
@@ -65,23 +65,16 @@ async function getConnectionOptionsFromUri(uri) {
65
65
  } else {
66
66
  throw new Error(`Unsupported database URI: ${uri}`);
67
67
  }
68
- if (uri === "sqlite://:memory:") {
68
+ if (uri.startsWith("sqlite://")) {
69
69
  return {
70
70
  entities: import_schema.ENTITIES,
71
- dbName: ":memory:",
71
+ dbName: uri === "sqlite://:memory:" ? ":memory:" : uri.substring("sqlite://".length),
72
72
  driver
73
73
  };
74
74
  }
75
- const { host, port, username, password, pathname } = new URL(uri);
76
- const hostName = host.split(":")[0];
77
- const dbName = uri.startsWith("sqlite://") ? uri.substring("sqlite://".length) : pathname.slice(1);
78
75
  return {
79
76
  entities: import_schema.ENTITIES,
80
- dbName,
81
- host: hostName,
82
- port: port ? parseInt(port) : void 0,
83
- user: username,
84
- password,
77
+ clientUrl: uri,
85
78
  driver
86
79
  };
87
80
  }