@google/adk 0.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 (311) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +9 -0
  3. package/dist/cjs/agents/active_streaming_tool.js +44 -0
  4. package/dist/cjs/agents/base_agent.js +245 -0
  5. package/dist/cjs/agents/base_llm_processor.js +44 -0
  6. package/dist/cjs/agents/callback_context.js +98 -0
  7. package/dist/cjs/agents/content_processor_utils.js +299 -0
  8. package/dist/cjs/agents/functions.js +394 -0
  9. package/dist/cjs/agents/instructions.js +110 -0
  10. package/dist/cjs/agents/invocation_context.js +109 -0
  11. package/dist/cjs/agents/live_request_queue.js +136 -0
  12. package/dist/cjs/agents/llm_agent.js +859 -0
  13. package/dist/cjs/agents/loop_agent.js +68 -0
  14. package/dist/cjs/agents/parallel_agent.js +78 -0
  15. package/dist/cjs/agents/readonly_context.js +68 -0
  16. package/dist/cjs/agents/run_config.js +74 -0
  17. package/dist/cjs/agents/sequential_agent.js +84 -0
  18. package/dist/cjs/agents/transcription_entry.js +27 -0
  19. package/dist/cjs/artifacts/base_artifact_service.js +27 -0
  20. package/dist/cjs/artifacts/in_memory_artifact_service.js +119 -0
  21. package/dist/cjs/auth/auth_credential.js +46 -0
  22. package/dist/cjs/auth/auth_handler.js +92 -0
  23. package/dist/cjs/auth/auth_schemes.js +62 -0
  24. package/dist/cjs/auth/auth_tool.js +27 -0
  25. package/dist/cjs/auth/credential_service/base_credential_service.js +27 -0
  26. package/dist/cjs/auth/credential_service/in_memory_credential_service.js +63 -0
  27. package/dist/cjs/code_executors/base_code_executor.js +76 -0
  28. package/dist/cjs/code_executors/built_in_code_executor.js +58 -0
  29. package/dist/cjs/code_executors/code_execution_utils.js +142 -0
  30. package/dist/cjs/code_executors/code_executor_context.js +198 -0
  31. package/dist/cjs/common.js +161 -0
  32. package/dist/cjs/events/event.js +107 -0
  33. package/dist/cjs/events/event_actions.js +83 -0
  34. package/dist/cjs/examples/base_example_provider.js +40 -0
  35. package/dist/cjs/examples/example.js +27 -0
  36. package/dist/cjs/examples/example_util.js +107 -0
  37. package/dist/cjs/index.js +40 -0
  38. package/dist/cjs/index.js.map +7 -0
  39. package/dist/cjs/index_web.js +33 -0
  40. package/dist/cjs/memory/base_memory_service.js +27 -0
  41. package/dist/cjs/memory/in_memory_memory_service.js +97 -0
  42. package/dist/cjs/memory/memory_entry.js +27 -0
  43. package/dist/cjs/models/base_llm.js +77 -0
  44. package/dist/cjs/models/base_llm_connection.js +27 -0
  45. package/dist/cjs/models/gemini_llm_connection.js +132 -0
  46. package/dist/cjs/models/google_llm.js +321 -0
  47. package/dist/cjs/models/llm_request.js +82 -0
  48. package/dist/cjs/models/llm_response.js +71 -0
  49. package/dist/cjs/models/registry.js +121 -0
  50. package/dist/cjs/package.json +1 -0
  51. package/dist/cjs/plugins/base_plugin.js +236 -0
  52. package/dist/cjs/plugins/logging_plugin.js +222 -0
  53. package/dist/cjs/plugins/plugin_manager.js +239 -0
  54. package/dist/cjs/plugins/security_plugin.js +153 -0
  55. package/dist/cjs/runner/in_memory_runner.js +58 -0
  56. package/dist/cjs/runner/runner.js +276 -0
  57. package/dist/cjs/sessions/base_session_service.js +71 -0
  58. package/dist/cjs/sessions/in_memory_session_service.js +184 -0
  59. package/dist/cjs/sessions/session.js +48 -0
  60. package/dist/cjs/sessions/state.js +101 -0
  61. package/dist/cjs/tools/agent_tool.js +134 -0
  62. package/dist/cjs/tools/base_tool.js +107 -0
  63. package/dist/cjs/tools/base_toolset.js +76 -0
  64. package/dist/cjs/tools/forwarding_artifact_service.js +71 -0
  65. package/dist/cjs/tools/function_tool.js +101 -0
  66. package/dist/cjs/tools/google_search_tool.js +76 -0
  67. package/dist/cjs/tools/long_running_tool.js +63 -0
  68. package/dist/cjs/tools/mcp/mcp_session_manager.js +65 -0
  69. package/dist/cjs/tools/mcp/mcp_tool.js +65 -0
  70. package/dist/cjs/tools/mcp/mcp_toolset.js +61 -0
  71. package/dist/cjs/tools/tool_confirmation.js +49 -0
  72. package/dist/cjs/tools/tool_context.js +129 -0
  73. package/dist/cjs/utils/deep_clone.js +44 -0
  74. package/dist/cjs/utils/env_aware_utils.js +83 -0
  75. package/dist/cjs/utils/gemini_schema_util.js +88 -0
  76. package/dist/cjs/utils/logger.js +121 -0
  77. package/dist/cjs/utils/model_name.js +64 -0
  78. package/dist/cjs/utils/simple_zod_to_json.js +191 -0
  79. package/dist/cjs/utils/variant_utils.js +55 -0
  80. package/dist/cjs/version.js +39 -0
  81. package/dist/esm/agents/active_streaming_tool.js +14 -0
  82. package/dist/esm/agents/base_agent.js +214 -0
  83. package/dist/esm/agents/base_llm_processor.js +13 -0
  84. package/dist/esm/agents/callback_context.js +68 -0
  85. package/dist/esm/agents/content_processor_utils.js +268 -0
  86. package/dist/esm/agents/functions.js +353 -0
  87. package/dist/esm/agents/instructions.js +80 -0
  88. package/dist/esm/agents/invocation_context.js +78 -0
  89. package/dist/esm/agents/live_request_queue.js +106 -0
  90. package/dist/esm/agents/llm_agent.js +828 -0
  91. package/dist/esm/agents/loop_agent.js +38 -0
  92. package/dist/esm/agents/parallel_agent.js +48 -0
  93. package/dist/esm/agents/readonly_context.js +38 -0
  94. package/dist/esm/agents/run_config.js +43 -0
  95. package/dist/esm/agents/sequential_agent.js +54 -0
  96. package/dist/esm/agents/transcription_entry.js +5 -0
  97. package/dist/esm/artifacts/base_artifact_service.js +5 -0
  98. package/dist/esm/artifacts/in_memory_artifact_service.js +89 -0
  99. package/dist/esm/auth/auth_credential.js +16 -0
  100. package/dist/esm/auth/auth_handler.js +62 -0
  101. package/dist/esm/auth/auth_schemes.js +31 -0
  102. package/dist/esm/auth/auth_tool.js +5 -0
  103. package/dist/esm/auth/credential_service/base_credential_service.js +5 -0
  104. package/dist/esm/auth/credential_service/in_memory_credential_service.js +33 -0
  105. package/dist/esm/code_executors/base_code_executor.js +46 -0
  106. package/dist/esm/code_executors/built_in_code_executor.js +28 -0
  107. package/dist/esm/code_executors/code_execution_utils.js +108 -0
  108. package/dist/esm/code_executors/code_executor_context.js +168 -0
  109. package/dist/esm/common.js +85 -0
  110. package/dist/esm/events/event.js +72 -0
  111. package/dist/esm/events/event_actions.js +52 -0
  112. package/dist/esm/examples/base_example_provider.js +10 -0
  113. package/dist/esm/examples/example.js +5 -0
  114. package/dist/esm/examples/example_util.js +76 -0
  115. package/dist/esm/index.js +40 -0
  116. package/dist/esm/index.js.map +7 -0
  117. package/dist/esm/index_web.js +6 -0
  118. package/dist/esm/memory/base_memory_service.js +5 -0
  119. package/dist/esm/memory/in_memory_memory_service.js +67 -0
  120. package/dist/esm/memory/memory_entry.js +5 -0
  121. package/dist/esm/models/base_llm.js +47 -0
  122. package/dist/esm/models/base_llm_connection.js +5 -0
  123. package/dist/esm/models/gemini_llm_connection.js +102 -0
  124. package/dist/esm/models/google_llm.js +291 -0
  125. package/dist/esm/models/llm_request.js +50 -0
  126. package/dist/esm/models/llm_response.js +41 -0
  127. package/dist/esm/models/registry.js +91 -0
  128. package/dist/esm/plugins/base_plugin.js +206 -0
  129. package/dist/esm/plugins/logging_plugin.js +192 -0
  130. package/dist/esm/plugins/plugin_manager.js +209 -0
  131. package/dist/esm/plugins/security_plugin.js +119 -0
  132. package/dist/esm/runner/in_memory_runner.js +28 -0
  133. package/dist/esm/runner/runner.js +246 -0
  134. package/dist/esm/sessions/base_session_service.js +41 -0
  135. package/dist/esm/sessions/in_memory_session_service.js +154 -0
  136. package/dist/esm/sessions/session.js +18 -0
  137. package/dist/esm/sessions/state.js +71 -0
  138. package/dist/esm/tools/agent_tool.js +104 -0
  139. package/dist/esm/tools/base_tool.js +77 -0
  140. package/dist/esm/tools/base_toolset.js +46 -0
  141. package/dist/esm/tools/forwarding_artifact_service.js +41 -0
  142. package/dist/esm/tools/function_tool.js +71 -0
  143. package/dist/esm/tools/google_search_tool.js +46 -0
  144. package/dist/esm/tools/long_running_tool.js +33 -0
  145. package/dist/esm/tools/mcp/mcp_session_manager.js +35 -0
  146. package/dist/esm/tools/mcp/mcp_tool.js +35 -0
  147. package/dist/esm/tools/mcp/mcp_toolset.js +31 -0
  148. package/dist/esm/tools/tool_confirmation.js +19 -0
  149. package/dist/esm/tools/tool_context.js +99 -0
  150. package/dist/esm/utils/deep_clone.js +14 -0
  151. package/dist/esm/utils/env_aware_utils.js +49 -0
  152. package/dist/esm/utils/gemini_schema_util.js +58 -0
  153. package/dist/esm/utils/logger.js +89 -0
  154. package/dist/esm/utils/model_name.js +31 -0
  155. package/dist/esm/utils/simple_zod_to_json.js +160 -0
  156. package/dist/esm/utils/variant_utils.js +24 -0
  157. package/dist/esm/version.js +9 -0
  158. package/dist/types/agents/active_streaming_tool.d.ts +29 -0
  159. package/dist/types/agents/base_agent.d.ts +167 -0
  160. package/dist/types/agents/base_llm_processor.d.ts +27 -0
  161. package/dist/types/agents/callback_context.d.ts +42 -0
  162. package/dist/types/agents/content_processor_utils.d.ts +36 -0
  163. package/dist/types/agents/functions.d.ts +90 -0
  164. package/dist/types/agents/instructions.d.ts +32 -0
  165. package/dist/types/agents/invocation_context.d.ts +155 -0
  166. package/dist/types/agents/live_request_queue.d.ts +67 -0
  167. package/dist/types/agents/llm_agent.d.ts +333 -0
  168. package/dist/types/agents/loop_agent.d.ts +31 -0
  169. package/dist/types/agents/parallel_agent.d.ts +21 -0
  170. package/dist/types/agents/readonly_context.d.ts +31 -0
  171. package/dist/types/agents/run_config.d.ts +76 -0
  172. package/dist/types/agents/sequential_agent.d.ts +26 -0
  173. package/dist/types/agents/transcription_entry.d.ts +17 -0
  174. package/dist/types/artifacts/base_artifact_service.d.ts +127 -0
  175. package/dist/types/artifacts/in_memory_artifact_service.d.ts +18 -0
  176. package/dist/types/auth/auth_credential.d.ts +227 -0
  177. package/dist/types/auth/auth_handler.d.ts +27 -0
  178. package/dist/types/auth/auth_schemes.d.ts +36 -0
  179. package/dist/types/auth/auth_tool.d.ts +51 -0
  180. package/dist/types/auth/credential_service/base_credential_service.d.ts +27 -0
  181. package/dist/types/auth/credential_service/in_memory_credential_service.d.ts +19 -0
  182. package/dist/types/code_executors/base_code_executor.d.ts +60 -0
  183. package/dist/types/code_executors/built_in_code_executor.d.ts +13 -0
  184. package/dist/types/code_executors/code_execution_utils.d.ts +99 -0
  185. package/dist/types/code_executors/code_executor_context.d.ts +92 -0
  186. package/dist/types/common.d.ts +51 -0
  187. package/dist/types/events/event.d.ts +81 -0
  188. package/dist/types/events/event_actions.d.ts +74 -0
  189. package/dist/types/examples/base_example_provider.d.ts +20 -0
  190. package/dist/types/examples/example.d.ts +19 -0
  191. package/dist/types/examples/example_util.d.ts +13 -0
  192. package/dist/types/index.d.ts +9 -0
  193. package/dist/types/index_web.d.ts +6 -0
  194. package/dist/types/memory/base_memory_service.d.ts +47 -0
  195. package/dist/types/memory/in_memory_memory_service.d.ts +18 -0
  196. package/dist/types/memory/memory_entry.d.ts +24 -0
  197. package/dist/types/models/base_llm.d.ts +46 -0
  198. package/dist/types/models/base_llm_connection.d.ts +51 -0
  199. package/dist/types/models/gemini_llm_connection.d.ts +54 -0
  200. package/dist/types/models/google_llm.d.ts +88 -0
  201. package/dist/types/models/llm_request.d.ts +49 -0
  202. package/dist/types/models/llm_response.d.ts +79 -0
  203. package/dist/types/models/registry.d.ts +45 -0
  204. package/dist/types/plugins/base_plugin.d.ts +310 -0
  205. package/dist/types/plugins/logging_plugin.d.ts +104 -0
  206. package/dist/types/plugins/plugin_manager.d.ts +155 -0
  207. package/dist/types/plugins/security_plugin.d.ts +60 -0
  208. package/dist/types/runner/in_memory_runner.d.ts +15 -0
  209. package/dist/types/runner/runner.d.ts +80 -0
  210. package/dist/types/sessions/base_session_service.d.ts +129 -0
  211. package/dist/types/sessions/in_memory_session_service.d.ts +32 -0
  212. package/dist/types/sessions/session.d.ts +46 -0
  213. package/dist/types/sessions/state.d.ts +57 -0
  214. package/dist/types/tools/agent_tool.d.ts +37 -0
  215. package/dist/types/tools/base_tool.d.ts +84 -0
  216. package/dist/types/tools/base_toolset.d.ts +64 -0
  217. package/dist/types/tools/forwarding_artifact_service.d.ts +21 -0
  218. package/dist/types/tools/function_tool.d.ts +48 -0
  219. package/dist/types/tools/google_search_tool.d.ts +18 -0
  220. package/dist/types/tools/long_running_tool.d.ts +18 -0
  221. package/dist/types/tools/mcp/mcp_session_manager.d.ts +57 -0
  222. package/dist/types/tools/mcp/mcp_tool.d.ts +30 -0
  223. package/dist/types/tools/mcp/mcp_toolset.d.ts +39 -0
  224. package/dist/types/tools/tool_confirmation.d.ts +25 -0
  225. package/dist/types/tools/tool_context.d.ts +63 -0
  226. package/dist/types/utils/deep_clone.d.ts +1 -0
  227. package/dist/types/utils/env_aware_utils.d.ts +31 -0
  228. package/dist/types/utils/gemini_schema_util.d.ts +23 -0
  229. package/dist/types/utils/logger.d.ts +41 -0
  230. package/dist/types/utils/model_name.d.ts +34 -0
  231. package/dist/types/utils/simple_zod_to_json.d.ts +12 -0
  232. package/dist/types/utils/variant_utils.d.ts +24 -0
  233. package/dist/types/version.d.ts +6 -0
  234. package/dist/web/agents/active_streaming_tool.js +14 -0
  235. package/dist/web/agents/base_agent.js +265 -0
  236. package/dist/web/agents/base_llm_processor.js +13 -0
  237. package/dist/web/agents/callback_context.js +68 -0
  238. package/dist/web/agents/content_processor_utils.js +268 -0
  239. package/dist/web/agents/functions.js +353 -0
  240. package/dist/web/agents/instructions.js +80 -0
  241. package/dist/web/agents/invocation_context.js +78 -0
  242. package/dist/web/agents/live_request_queue.js +124 -0
  243. package/dist/web/agents/llm_agent.js +973 -0
  244. package/dist/web/agents/loop_agent.js +71 -0
  245. package/dist/web/agents/parallel_agent.js +83 -0
  246. package/dist/web/agents/readonly_context.js +38 -0
  247. package/dist/web/agents/run_config.js +43 -0
  248. package/dist/web/agents/sequential_agent.js +99 -0
  249. package/dist/web/agents/transcription_entry.js +5 -0
  250. package/dist/web/artifacts/base_artifact_service.js +5 -0
  251. package/dist/web/artifacts/in_memory_artifact_service.js +89 -0
  252. package/dist/web/auth/auth_credential.js +16 -0
  253. package/dist/web/auth/auth_handler.js +62 -0
  254. package/dist/web/auth/auth_schemes.js +31 -0
  255. package/dist/web/auth/auth_tool.js +5 -0
  256. package/dist/web/auth/credential_service/base_credential_service.js +5 -0
  257. package/dist/web/auth/credential_service/in_memory_credential_service.js +33 -0
  258. package/dist/web/code_executors/base_code_executor.js +46 -0
  259. package/dist/web/code_executors/built_in_code_executor.js +28 -0
  260. package/dist/web/code_executors/code_execution_utils.js +105 -0
  261. package/dist/web/code_executors/code_executor_context.js +168 -0
  262. package/dist/web/common.js +85 -0
  263. package/dist/web/events/event.js +90 -0
  264. package/dist/web/events/event_actions.js +67 -0
  265. package/dist/web/examples/base_example_provider.js +10 -0
  266. package/dist/web/examples/example.js +5 -0
  267. package/dist/web/examples/example_util.js +75 -0
  268. package/dist/web/index.js +13 -0
  269. package/dist/web/index.js.map +7 -0
  270. package/dist/web/index_web.js +6 -0
  271. package/dist/web/memory/base_memory_service.js +5 -0
  272. package/dist/web/memory/in_memory_memory_service.js +67 -0
  273. package/dist/web/memory/memory_entry.js +5 -0
  274. package/dist/web/models/base_llm.js +47 -0
  275. package/dist/web/models/base_llm_connection.js +5 -0
  276. package/dist/web/models/gemini_llm_connection.js +120 -0
  277. package/dist/web/models/google_llm.js +332 -0
  278. package/dist/web/models/llm_request.js +50 -0
  279. package/dist/web/models/llm_response.js +41 -0
  280. package/dist/web/models/registry.js +91 -0
  281. package/dist/web/plugins/base_plugin.js +206 -0
  282. package/dist/web/plugins/logging_plugin.js +192 -0
  283. package/dist/web/plugins/plugin_manager.js +209 -0
  284. package/dist/web/plugins/security_plugin.js +119 -0
  285. package/dist/web/runner/in_memory_runner.js +28 -0
  286. package/dist/web/runner/runner.js +277 -0
  287. package/dist/web/sessions/base_session_service.js +41 -0
  288. package/dist/web/sessions/in_memory_session_service.js +154 -0
  289. package/dist/web/sessions/session.js +18 -0
  290. package/dist/web/sessions/state.js +87 -0
  291. package/dist/web/tools/agent_tool.js +118 -0
  292. package/dist/web/tools/base_tool.js +77 -0
  293. package/dist/web/tools/base_toolset.js +46 -0
  294. package/dist/web/tools/forwarding_artifact_service.js +41 -0
  295. package/dist/web/tools/function_tool.js +71 -0
  296. package/dist/web/tools/google_search_tool.js +46 -0
  297. package/dist/web/tools/long_running_tool.js +50 -0
  298. package/dist/web/tools/mcp/mcp_session_manager.js +35 -0
  299. package/dist/web/tools/mcp/mcp_tool.js +35 -0
  300. package/dist/web/tools/mcp/mcp_toolset.js +31 -0
  301. package/dist/web/tools/tool_confirmation.js +19 -0
  302. package/dist/web/tools/tool_context.js +99 -0
  303. package/dist/web/utils/deep_clone.js +14 -0
  304. package/dist/web/utils/env_aware_utils.js +49 -0
  305. package/dist/web/utils/gemini_schema_util.js +58 -0
  306. package/dist/web/utils/logger.js +89 -0
  307. package/dist/web/utils/model_name.js +31 -0
  308. package/dist/web/utils/simple_zod_to_json.js +174 -0
  309. package/dist/web/utils/variant_utils.js +24 -0
  310. package/dist/web/version.js +9 -0
  311. package/package.json +61 -0
@@ -0,0 +1,79 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Content, FinishReason, GenerateContentResponse, GenerateContentResponseUsageMetadata, GroundingMetadata, LiveServerSessionResumptionUpdate, Transcription } from '@google/genai';
7
+ /**
8
+ * LLM response class that provides the first candidate response from the
9
+ * model if available. Otherwise, returns error code and message.
10
+ */
11
+ export interface LlmResponse {
12
+ /**
13
+ * The content of the response.
14
+ */
15
+ content?: Content;
16
+ /**
17
+ * The grounding metadata of the response.
18
+ */
19
+ groundingMetadata?: GroundingMetadata;
20
+ /**
21
+ * Indicates whether the text content is part of a unfinished text stream.
22
+ * Only used for streaming mode and when the content is plain text.
23
+ */
24
+ partial?: boolean;
25
+ /**
26
+ * Indicates whether the response from the model is complete.
27
+ * Only used for streaming mode.
28
+ */
29
+ turnComplete?: boolean;
30
+ /**
31
+ * Error code if the response is an error. Code varies by model.
32
+ */
33
+ errorCode?: string;
34
+ /**
35
+ * Error message if the response is an error.
36
+ */
37
+ errorMessage?: string;
38
+ /**
39
+ * Flag indicating that LLM was interrupted when generating the content.
40
+ * Usually it's due to user interruption during a bidi streaming.
41
+ */
42
+ interrupted?: boolean;
43
+ /**
44
+ * The custom metadata of the LlmResponse.
45
+ * An optional key-value pair to label an LlmResponse.
46
+ * NOTE: the entire object must be JSON serializable.
47
+ */
48
+ customMetadata?: {
49
+ [key: string]: any;
50
+ };
51
+ /**
52
+ * The usage metadata of the LlmResponse.
53
+ */
54
+ usageMetadata?: GenerateContentResponseUsageMetadata;
55
+ /**
56
+ * The finish reason of the response.
57
+ */
58
+ finishReason?: FinishReason;
59
+ /**
60
+ * The session resumption update of the LlmResponse
61
+ */
62
+ liveSessionResumptionUpdate?: LiveServerSessionResumptionUpdate;
63
+ /**
64
+ * Audio transcription of user input.
65
+ */
66
+ inputTranscription?: Transcription;
67
+ /**
68
+ * Audio transcription of model output.
69
+ */
70
+ outputTranscription?: Transcription;
71
+ }
72
+ /**
73
+ * Creates an LlmResponse from a GenerateContentResponse.
74
+ *
75
+ * @param response The GenerateContentResponse to create the
76
+ * LlmResponse from.
77
+ * @returns The LlmResponse.
78
+ */
79
+ export declare function createLlmResponse(response: GenerateContentResponse): LlmResponse;
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { BaseLlm } from './base_llm.js';
7
+ /**
8
+ * type[BaseLlm] equivalent in TypeScript, represents a class that can be new-ed
9
+ * to create a BaseLlm instance.
10
+ */
11
+ export type BaseLlmType = (new (model: string) => BaseLlm) & {
12
+ readonly supportedModels: Array<string | RegExp>;
13
+ };
14
+ /**
15
+ * Registry for LLMs.
16
+ */
17
+ export declare class LLMRegistry {
18
+ /**
19
+ * Key is the regex that matches the model name.
20
+ * Value is the class that implements the model.
21
+ */
22
+ private static llmRegistryDict;
23
+ private static resolveCache;
24
+ /**
25
+ * Creates a new LLM instance.
26
+ * @param model The model name.
27
+ * @returns The LLM instance.
28
+ */
29
+ static newLlm(model: string): BaseLlm;
30
+ private static _register;
31
+ /**
32
+ * Registers a new LLM class.
33
+ * @param llmCls The class that implements the model.
34
+ */
35
+ static register<T extends BaseLlm>(llmCls: (new (model: string) => T) & {
36
+ readonly supportedModels: Array<string | RegExp>;
37
+ }): void;
38
+ /**
39
+ * Resolves the model to a BaseLlm subclass.
40
+ * @param model The model name.
41
+ * @returns The BaseLlm subclass.
42
+ * @throws If the model is not found.
43
+ */
44
+ static resolve(model: string): BaseLlmType;
45
+ }
@@ -0,0 +1,310 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Content } from '@google/genai';
7
+ import { BaseAgent } from '../agents/base_agent.js';
8
+ import { CallbackContext } from '../agents/callback_context.js';
9
+ import { InvocationContext } from '../agents/invocation_context.js';
10
+ import { Event } from '../events/event.js';
11
+ import { LlmRequest } from '../models/llm_request.js';
12
+ import { LlmResponse } from '../models/llm_response.js';
13
+ import { BaseTool } from '../tools/base_tool.js';
14
+ import { ToolContext } from '../tools/tool_context.js';
15
+ /**
16
+ * Base class for creating plugins.
17
+ *
18
+ * Plugins provide a structured way to intercept and modify agent, tool, and
19
+ * LLM behaviors at critical execution points in a callback manner. While agent
20
+ * callbacks apply to a particular agent, plugins applies globally to all
21
+ * agents added in the runner. Plugins are best used for adding custom behaviors
22
+ * like logging, monitoring, caching, or modifying requests and responses at key
23
+ * stages.
24
+ *
25
+ * A plugin can implement one or more methods of callbacks, but should not
26
+ * implement the same method of callback for multiple times.
27
+ *
28
+ * Relation with [Agent
29
+ * callbacks](https://google.github.io/adk-docs/callbacks/):
30
+ *
31
+ * **Execution Order**
32
+ * Similar to Agent callbacks, Plugins are executed in the order they are
33
+ * registered. However, Plugin and Agent Callbacks are executed sequentially,
34
+ * with Plugins takes precedence over agent callbacks. When the callback in a
35
+ * plugin returns a value, it will short circuit all remaining plugins and
36
+ * agent callbacks, causing all remaining plugins and agent callbacks
37
+ * to be skipped.
38
+ *
39
+ * **Change Propagation**
40
+ * Plugins and agent callbacks can both modify the value of the input
41
+ * parameters, including agent input, tool input, and LLM request/response, etc.
42
+ * They work in the exactly same way. The modifications will be visible and
43
+ * passed to the next callback in the chain. For example, if a plugin modifies
44
+ * the tool input with before_tool_callback, the modified tool input will be
45
+ * passed to the before_tool_callback of the next plugin, and further passed to
46
+ * the agent callbacks if not short circuited.
47
+ *
48
+ * To use a plugin, implement the desired callback methods and pass an instance
49
+ * of your custom plugin class to the ADK Runner.
50
+ *
51
+ * Example:
52
+ * A simple plugin that logs every tool call.
53
+ * ```typescript
54
+ * class ToolLoggerPlugin extends BasePlugin {
55
+ * constructor() {
56
+ * super('tool_logger');
57
+ * }
58
+ *
59
+ * override async beforeToolCallback(
60
+ * {tool, toolArgs, toolContext}: {
61
+ * tool: BaseTool,
62
+ * toolArgs: Record<string, unknown>,
63
+ * toolContext: ToolContext,
64
+ * },
65
+ * ): Promise<Record<string, unknown> | undefined> {
66
+ * this.logger.info(
67
+ * `[${this.name}] Calling tool '${tool.name}' with args:
68
+ * ${JSON.stringify( toolArgs,
69
+ * )}`,
70
+ * );
71
+ * return;
72
+ * }
73
+ *
74
+ * override async afterToolCallback(
75
+ * {tool, toolArgs, toolContext, result}: {
76
+ * tool: BaseTool,
77
+ * toolArgs: Record<string, unknown>,
78
+ * toolContext: ToolContext,
79
+ * result: Record<string, unknown>,
80
+ * },
81
+ * ): Promise<Record<string, unknown> | undefined> {
82
+ * this.logger.info(
83
+ * `[${this.name}] Tool '${tool.name}' finished with result:
84
+ * ${JSON.stringify( result,
85
+ * )}`,
86
+ * );
87
+ * return;
88
+ * }
89
+ * }
90
+ *
91
+ * // Add the plugin to ADK Runner
92
+ * // runner = new Runner({
93
+ * // ...
94
+ * // plugins: [new ToolLoggerPlugin(), new AgentPolicyPlugin()],
95
+ * // });
96
+ * ```
97
+ */
98
+ export declare abstract class BasePlugin {
99
+ readonly name: string;
100
+ /**
101
+ * Initializes the plugin.
102
+ *
103
+ * @param name A unique identifier for this plugin instance.
104
+ */
105
+ constructor(name: string);
106
+ /**
107
+ * Callback executed when a user message is received before an invocation
108
+ * starts.
109
+ *
110
+ * This callback helps logging and modifying the user message before the
111
+ * runner starts the invocation.
112
+ *
113
+ * @param invocationContext The context for the entire invocation.
114
+ * @param userMessage The message content input by user.
115
+ * @returns An optional `Content` to be returned to the ADK. Returning a
116
+ * value to replace the user message. Returning `undefined` to proceed
117
+ * normally.
118
+ */
119
+ onUserMessageCallback({ invocationContext, userMessage }: {
120
+ invocationContext: InvocationContext;
121
+ userMessage: Content;
122
+ }): Promise<Content | undefined>;
123
+ /**
124
+ * Callback executed before the ADK runner runs.
125
+ *
126
+ * This is the first callback to be called in the lifecycle, ideal for global
127
+ * setup or initialization tasks.
128
+ *
129
+ * @param invocationContext The context for the entire invocation, containing
130
+ * session information, the root agent, etc.
131
+ * @returns An optional `Event` to be returned to the ADK. Returning a value
132
+ * to halt execution of the runner and ends the runner with that event.
133
+ * Return `undefined` to proceed normally.
134
+ */
135
+ beforeRunCallback({ invocationContext }: {
136
+ invocationContext: InvocationContext;
137
+ }): Promise<Content | undefined>;
138
+ /**
139
+ * Callback executed after an event is yielded from runner.
140
+ *
141
+ * This is the ideal place to make modification to the event before the event
142
+ * is handled by the underlying agent app.
143
+ *
144
+ * @param invocationContext The context for the entire invocation.
145
+ * @param event The event raised by the runner.
146
+ * @returns An optional value. A non-`undefined` return may be used by the
147
+ * framework to modify or replace the response. Returning `undefined`
148
+ * allows the original response to be used.
149
+ */
150
+ onEventCallback({ invocationContext, event }: {
151
+ invocationContext: InvocationContext;
152
+ event: Event;
153
+ }): Promise<Event | undefined>;
154
+ /**
155
+ * Callback executed after an ADK runner run has completed.
156
+ *
157
+ * This is the final callback in the ADK lifecycle, suitable for cleanup,
158
+ * final logging, or reporting tasks.
159
+ *
160
+ * @param invocationContext The context for the entire invocation.
161
+ * @returns undefined
162
+ */
163
+ afterRunCallback({ invocationContext }: {
164
+ invocationContext: InvocationContext;
165
+ }): Promise<void>;
166
+ /**
167
+ * Callback executed before an agent's primary logic is invoked.
168
+ *
169
+ * This callback can be used for logging, setup, or to short-circuit the
170
+ * agent's execution by returning a value.
171
+ *
172
+ * @param agent The agent that is about to run.
173
+ * @param callbackContext The context for the agent invocation.
174
+ * @returns An optional `Content` object. If a value is returned, it will
175
+ * bypass the agent's callbacks and its execution, and return this value
176
+ * directly. Returning `undefined` allows the agent to proceed normally.
177
+ */
178
+ beforeAgentCallback({ agent, callbackContext }: {
179
+ agent: BaseAgent;
180
+ callbackContext: CallbackContext;
181
+ }): Promise<Content | undefined>;
182
+ /**
183
+ * Callback executed after an agent's primary logic has completed.
184
+ *
185
+ * This callback can be used to inspect, log, or modify the agent's final
186
+ * result before it is returned.
187
+ *
188
+ * @param agent The agent that has just run.
189
+ * @param callbackContext The context for the agent invocation.
190
+ * @returns An optional `Content` object. If a value is returned, it will
191
+ * replace the agent's original result. Returning `undefined` uses the
192
+ * original, unmodified result.
193
+ */
194
+ afterAgentCallback({ agent, callbackContext }: {
195
+ agent: BaseAgent;
196
+ callbackContext: CallbackContext;
197
+ }): Promise<Content | undefined>;
198
+ /**
199
+ * Callback executed before a request is sent to the model.
200
+ *
201
+ * This provides an opportunity to inspect, log, or modify the `LlmRequest`
202
+ * object. It can also be used to implement caching by returning a cached
203
+ * `LlmResponse`, which would skip the actual model call.
204
+ *
205
+ * @param callbackContext The context for the current agent call.
206
+ * @param llmRequest The prepared request object to be sent to the model.
207
+ * @returns An optional value. The interpretation of a non-`undefined`
208
+ * trigger an early exit and returns the response immediately. Returning
209
+ * `undefined` allows the LLM request to proceed normally.
210
+ */
211
+ beforeModelCallback({ callbackContext, llmRequest }: {
212
+ callbackContext: CallbackContext;
213
+ llmRequest: LlmRequest;
214
+ }): Promise<LlmResponse | undefined>;
215
+ /**
216
+ * Callback executed after a response is received from the model.
217
+ *
218
+ * This is the ideal place to log model responses, collect metrics on token
219
+ * usage, or perform post-processing on the raw `LlmResponse`.
220
+ *
221
+ * @param callbackContext The context for the current agent call.
222
+ * @param llmResponse The response object received from the model.
223
+ * @returns An optional value. A non-`undefined` return may be used by the
224
+ * framework to modify or replace the response. Returning `undefined`
225
+ * allows the original response to be used.
226
+ */
227
+ afterModelCallback({ callbackContext, llmResponse }: {
228
+ callbackContext: CallbackContext;
229
+ llmResponse: LlmResponse;
230
+ }): Promise<LlmResponse | undefined>;
231
+ /**
232
+ * Callback executed when a model call encounters an error.
233
+ *
234
+ * This callback provides an opportunity to handle model errors gracefully,
235
+ * potentially providing alternative responses or recovery mechanisms.
236
+ *
237
+ * @param callbackContext The context for the current agent call.
238
+ * @param llmRequest The request that was sent to the model when the error
239
+ * occurred.
240
+ * @param error The exception that was raised during model execution.
241
+ * @returns An optional LlmResponse. If an LlmResponse is returned, it will be
242
+ * used instead of propagating the error. Returning `undefined` allows
243
+ * the original error to be raised.
244
+ */
245
+ onModelErrorCallback({ callbackContext, llmRequest, error }: {
246
+ callbackContext: CallbackContext;
247
+ llmRequest: LlmRequest;
248
+ error: Error;
249
+ }): Promise<LlmResponse | undefined>;
250
+ /**
251
+ * Callback executed before a tool is called.
252
+ *
253
+ * This callback is useful for logging tool usage, input validation, or
254
+ * modifying the arguments before they are passed to the tool.
255
+ *
256
+ * @param tool The tool instance that is about to be executed.
257
+ * @param toolArgs The dictionary of arguments to be used for invoking the
258
+ * tool.
259
+ * @param toolContext The context specific to the tool execution.
260
+ * @returns An optional dictionary. If a dictionary is returned, it will stop
261
+ * the tool execution and return this response immediately. Returning
262
+ * `undefined` uses the original, unmodified arguments.
263
+ */
264
+ beforeToolCallback({ tool, toolArgs, toolContext }: {
265
+ tool: BaseTool;
266
+ toolArgs: Record<string, unknown>;
267
+ toolContext: ToolContext;
268
+ }): Promise<Record<string, unknown> | undefined>;
269
+ /**
270
+ * Callback executed after a tool has been called.
271
+ *
272
+ * This callback allows for inspecting, logging, or modifying the result
273
+ * returned by a tool.
274
+ *
275
+ * @param tool The tool instance that has just been executed.
276
+ * @param toolArgs The original arguments that were passed to the tool.
277
+ * @param toolContext The context specific to the tool execution.
278
+ * @param result The dictionary returned by the tool invocation.
279
+ * @returns An optional dictionary. If a dictionary is returned, it will
280
+ * **replace** the original result from the tool. This allows for
281
+ * post-processing or altering tool outputs. Returning `undefined` uses
282
+ * the original, unmodified result.
283
+ */
284
+ afterToolCallback({ tool, toolArgs, toolContext, result }: {
285
+ tool: BaseTool;
286
+ toolArgs: Record<string, unknown>;
287
+ toolContext: ToolContext;
288
+ result: Record<string, unknown>;
289
+ }): Promise<Record<string, unknown> | undefined>;
290
+ /**
291
+ * Callback executed when a tool call encounters an error.
292
+ *
293
+ * This callback provides an opportunity to handle tool errors gracefully,
294
+ * potentially providing alternative responses or recovery mechanisms.
295
+ *
296
+ * @param tool The tool instance that encountered an error.
297
+ * @param toolArgs The arguments that were passed to the tool.
298
+ * @param toolContext The context specific to the tool execution.
299
+ * @param error The exception that was raised during tool execution.
300
+ * @returns An optional dictionary. If a dictionary is returned, it will be
301
+ * used as the tool response instead of propagating the error. Returning
302
+ * `undefined` allows the original error to be raised.
303
+ */
304
+ onToolErrorCallback({ tool, toolArgs, toolContext, error }: {
305
+ tool: BaseTool;
306
+ toolArgs: Record<string, unknown>;
307
+ toolContext: ToolContext;
308
+ error: Error;
309
+ }): Promise<Record<string, unknown> | undefined>;
310
+ }
@@ -0,0 +1,104 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Content } from '@google/genai';
7
+ import { BaseAgent } from '../agents/base_agent.js';
8
+ import { CallbackContext } from '../agents/callback_context.js';
9
+ import { InvocationContext } from '../agents/invocation_context.js';
10
+ import { Event } from '../events/event.js';
11
+ import { LlmRequest } from '../models/llm_request.js';
12
+ import { LlmResponse } from '../models/llm_response.js';
13
+ import { BaseTool } from '../tools/base_tool.js';
14
+ import { ToolContext } from '../tools/tool_context.js';
15
+ import { BasePlugin } from './base_plugin.js';
16
+ /**
17
+ * A plugin that logs important information at each callback point.
18
+ *
19
+ * This plugin helps printing all critical events in the console. It is not a
20
+ * replacement of existing logging in ADK. It rather helps terminal based
21
+ * debugging by showing all logs in the console, and serves as a simple demo for
22
+ * everyone to leverage when developing new plugins.
23
+ *
24
+ * This plugin helps users track the invocation status by logging:
25
+ * - User messages and invocation context
26
+ * - Agent execution flow
27
+ * - LLM requests and responses
28
+ * - Tool calls with arguments and results
29
+ * - Events and final responses
30
+ * - Errors during model and tool execution
31
+ *
32
+ * Example:
33
+ * ```typescript
34
+ * const loggingPlugin = new LoggingPlugin();
35
+ * const runner = new Runner({
36
+ * agents: [myAgent],
37
+ * // ...
38
+ * plugins: [loggingPlugin],
39
+ * });
40
+ * ```
41
+ */
42
+ export declare class LoggingPlugin extends BasePlugin {
43
+ /**
44
+ * Initialize the logging plugin.
45
+ *
46
+ * @param name The name of the plugin instance.
47
+ */
48
+ constructor(name?: string);
49
+ onUserMessageCallback({ invocationContext, userMessage }: {
50
+ invocationContext: InvocationContext;
51
+ userMessage: Content;
52
+ }): Promise<Content | undefined>;
53
+ beforeRunCallback({ invocationContext }: {
54
+ invocationContext: InvocationContext;
55
+ }): Promise<Content | undefined>;
56
+ onEventCallback({ invocationContext, event }: {
57
+ invocationContext: InvocationContext;
58
+ event: Event;
59
+ }): Promise<Event | undefined>;
60
+ afterRunCallback({ invocationContext }: {
61
+ invocationContext: InvocationContext;
62
+ }): Promise<void>;
63
+ beforeAgentCallback({ agent, callbackContext }: {
64
+ agent: BaseAgent;
65
+ callbackContext: CallbackContext;
66
+ }): Promise<Content | undefined>;
67
+ afterAgentCallback({ agent, callbackContext }: {
68
+ agent: BaseAgent;
69
+ callbackContext: CallbackContext;
70
+ }): Promise<Content | undefined>;
71
+ beforeModelCallback({ callbackContext, llmRequest }: {
72
+ callbackContext: CallbackContext;
73
+ llmRequest: LlmRequest;
74
+ }): Promise<LlmResponse | undefined>;
75
+ afterModelCallback({ callbackContext, llmResponse }: {
76
+ callbackContext: CallbackContext;
77
+ llmResponse: LlmResponse;
78
+ }): Promise<LlmResponse | undefined>;
79
+ beforeToolCallback({ tool, toolArgs, toolContext }: {
80
+ tool: BaseTool;
81
+ toolArgs: Record<string, unknown>;
82
+ toolContext: ToolContext;
83
+ }): Promise<Record<string, unknown> | undefined>;
84
+ afterToolCallback({ tool, toolArgs, toolContext, result }: {
85
+ tool: BaseTool;
86
+ toolArgs: Record<string, unknown>;
87
+ toolContext: ToolContext;
88
+ result: Record<string, unknown>;
89
+ }): Promise<Record<string, unknown> | undefined>;
90
+ onModelErrorCallback({ callbackContext, llmRequest, error }: {
91
+ callbackContext: CallbackContext;
92
+ llmRequest: LlmRequest;
93
+ error: Error;
94
+ }): Promise<LlmResponse | undefined>;
95
+ onToolErrorCallback({ tool, toolArgs, toolContext, error }: {
96
+ tool: BaseTool;
97
+ toolArgs: Record<string, unknown>;
98
+ toolContext: ToolContext;
99
+ error: Error;
100
+ }): Promise<Record<string, unknown> | undefined>;
101
+ private log;
102
+ private formatContent;
103
+ private formatArgs;
104
+ }
@@ -0,0 +1,155 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Content } from '@google/genai';
7
+ import { BaseAgent } from '../agents/base_agent.js';
8
+ import { CallbackContext } from '../agents/callback_context.js';
9
+ import { InvocationContext } from '../agents/invocation_context.js';
10
+ import { Event } from '../events/event.js';
11
+ import { LlmRequest } from '../models/llm_request.js';
12
+ import { LlmResponse } from '../models/llm_response.js';
13
+ import { BaseTool } from '../tools/base_tool.js';
14
+ import { ToolContext } from '../tools/tool_context.js';
15
+ import { BasePlugin } from './base_plugin.js';
16
+ /**
17
+ * Manages the registration and execution of plugins.
18
+ *
19
+ * The PluginManager is an internal class that orchestrates the invocation of
20
+ * plugin callbacks at key points in the SDK's execution lifecycle. It maintains
21
+ * a list of registered plugins and ensures they are called in the order they
22
+ * were registered.
23
+ *
24
+ * The core execution logic implements an "early exit" strategy: if any plugin
25
+ * callback returns a non-`undefined` value, the execution of subsequent plugins
26
+ * for that specific event is halted, and the returned value is propagated up
27
+ * the call stack. This allows plugins to short-circuit operations like agent
28
+ * runs, tool calls, or model requests.
29
+ */
30
+ export declare class PluginManager {
31
+ private readonly plugins;
32
+ /**
33
+ * Initializes the plugin service.
34
+ *
35
+ * @param plugins An optional list of plugins to register upon
36
+ * initialization.
37
+ */
38
+ constructor(plugins?: BasePlugin[]);
39
+ /**
40
+ * Registers a new plugin.
41
+ *
42
+ * @param plugin The plugin instance to register.
43
+ * @throws If the same exact plugin or a plugin with the same name is already
44
+ * registered.
45
+ */
46
+ registerPlugin(plugin: BasePlugin): void;
47
+ /**
48
+ * Retrieves a registered plugin by its name.
49
+ *
50
+ * @param pluginName The name of the plugin to retrieve.
51
+ * @returns The plugin instance if found, otherwise `undefined`.
52
+ */
53
+ getPlugin(pluginName: string): BasePlugin | undefined;
54
+ /**
55
+ * Runs the same callback for all plugins. This is a utility method to reduce
56
+ * duplication below.
57
+ *
58
+ * @param plugins The set of plugins to run
59
+ * @param callback A closure containing the callback method to run on each
60
+ * plugin
61
+ * @param callbackName The name of the function being called in the closure
62
+ * above. Used for logging purposes.
63
+ * @returns A promise containing the plugin method result. Must be casted to
64
+ * the proper type for the plugin method.
65
+ */
66
+ private runCallbacks;
67
+ /**
68
+ * Runs the `onUserMessageCallback` for all plugins.
69
+ */
70
+ runOnUserMessageCallback({ userMessage, invocationContext }: {
71
+ userMessage: Content;
72
+ invocationContext: InvocationContext;
73
+ }): Promise<Content | undefined>;
74
+ /**
75
+ * Runs the `beforeRunCallback` for all plugins.
76
+ */
77
+ runBeforeRunCallback({ invocationContext }: {
78
+ invocationContext: InvocationContext;
79
+ }): Promise<Content | undefined>;
80
+ /**
81
+ * Runs the `afterRunCallback` for all plugins.
82
+ */
83
+ runAfterRunCallback({ invocationContext }: {
84
+ invocationContext: InvocationContext;
85
+ }): Promise<void>;
86
+ /**
87
+ * Runs the `onEventCallback` for all plugins.
88
+ */
89
+ runOnEventCallback({ invocationContext, event }: {
90
+ invocationContext: InvocationContext;
91
+ event: Event;
92
+ }): Promise<Event | undefined>;
93
+ /**
94
+ * Runs the `beforeAgentCallback` for all plugins.
95
+ */
96
+ runBeforeAgentCallback({ agent, callbackContext }: {
97
+ agent: BaseAgent;
98
+ callbackContext: CallbackContext;
99
+ }): Promise<Content | undefined>;
100
+ /**
101
+ * Runs the `afterAgentCallback` for all plugins.
102
+ */
103
+ runAfterAgentCallback({ agent, callbackContext }: {
104
+ agent: BaseAgent;
105
+ callbackContext: CallbackContext;
106
+ }): Promise<Content | undefined>;
107
+ /**
108
+ * Runs the `beforeToolCallback` for all plugins.
109
+ */
110
+ runBeforeToolCallback({ tool, toolArgs, toolContext }: {
111
+ tool: BaseTool;
112
+ toolArgs: Record<string, unknown>;
113
+ toolContext: ToolContext;
114
+ }): Promise<Record<string, unknown> | undefined>;
115
+ /**
116
+ * Runs the `afterToolCallback` for all plugins.
117
+ */
118
+ runAfterToolCallback({ tool, toolArgs, toolContext, result }: {
119
+ tool: BaseTool;
120
+ toolArgs: Record<string, unknown>;
121
+ toolContext: ToolContext;
122
+ result: Record<string, unknown>;
123
+ }): Promise<Record<string, unknown> | undefined>;
124
+ /**
125
+ * Runs the `onModelErrorCallback` for all plugins.
126
+ */
127
+ runOnModelErrorCallback({ callbackContext, llmRequest, error }: {
128
+ callbackContext: CallbackContext;
129
+ llmRequest: LlmRequest;
130
+ error: Error;
131
+ }): Promise<LlmResponse | undefined>;
132
+ /**
133
+ * Runs the `beforeModelCallback` for all plugins.
134
+ */
135
+ runBeforeModelCallback({ callbackContext, llmRequest }: {
136
+ callbackContext: CallbackContext;
137
+ llmRequest: LlmRequest;
138
+ }): Promise<LlmResponse | undefined>;
139
+ /**
140
+ * Runs the `afterModelCallback` for all plugins.
141
+ */
142
+ runAfterModelCallback({ callbackContext, llmResponse }: {
143
+ callbackContext: CallbackContext;
144
+ llmResponse: LlmResponse;
145
+ }): Promise<LlmResponse | undefined>;
146
+ /**
147
+ * Runs the `onToolErrorCallback` for all plugins.
148
+ */
149
+ runOnToolErrorCallback({ tool, toolArgs, toolContext, error }: {
150
+ tool: BaseTool;
151
+ toolArgs: Record<string, unknown>;
152
+ toolContext: ToolContext;
153
+ error: Error;
154
+ }): Promise<Record<string, unknown> | undefined>;
155
+ }