@google/adk 2.3.0 → 2.5.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 (396) hide show
  1. package/dist/cjs/a2a/a2a_remote_agent.js +17 -2
  2. package/dist/cjs/a2a/a2a_remote_agent_utils.js +8 -4
  3. package/dist/cjs/a2a/agent_card.js +5 -81
  4. package/dist/cjs/a2a/agent_to_a2a.js +7 -0
  5. package/dist/cjs/a2a/event_converter_utils.js +10 -3
  6. package/dist/cjs/agents/agent_engine_client.js +399 -0
  7. package/dist/cjs/agents/base_agent.js +127 -68
  8. package/dist/cjs/agents/functions.js +64 -59
  9. package/dist/cjs/agents/instructions.js +8 -6
  10. package/dist/cjs/agents/invocation_context.js +2 -2
  11. package/dist/cjs/agents/llm_agent.js +124 -101
  12. package/dist/cjs/agents/processors/basic_llm_request_processor.js +1 -1
  13. package/dist/cjs/agents/processors/code_execution_request_processor.js +8 -0
  14. package/dist/cjs/agents/processors/content_processor_utils.js +72 -17
  15. package/dist/cjs/agents/processors/content_request_processor.js +51 -2
  16. package/dist/cjs/agents/processors/context_compactor_request_processor.js +5 -1
  17. package/dist/cjs/agents/processors/instructions_llm_request_processor.js +1 -1
  18. package/dist/cjs/agents/processors/nl_planning_processor.js +13 -3
  19. package/dist/cjs/artifacts/file_artifact_service.js +1 -1
  20. package/dist/cjs/cli/cli_eval.js +884 -17
  21. package/dist/cjs/cli/utils/cleanup.js +84 -0
  22. package/dist/cjs/cli/utils/envs.js +33 -2
  23. package/dist/cjs/cli/utils/evals.js +75 -8
  24. package/dist/cjs/cli/utils/logs.js +134 -15
  25. package/dist/cjs/cli/utils/path_validation.js +83 -0
  26. package/dist/cjs/code_executors/container_code_executor.js +171 -38
  27. package/dist/cjs/code_executors/unsafe_local_code_executor.js +6 -1
  28. package/dist/cjs/common.js +59 -32
  29. package/dist/cjs/context/compaction_utils.js +19 -0
  30. package/dist/cjs/errors/input_validation_error.js +3 -2
  31. package/dist/cjs/events/event.js +7 -3
  32. package/dist/cjs/features/feature_registry.js +5 -0
  33. package/dist/cjs/index.js +34 -12
  34. package/dist/cjs/models/google_llm.js +33 -2
  35. package/dist/cjs/models/interactions_utils.js +3 -0
  36. package/dist/cjs/plugins/base_plugin.js +54 -40
  37. package/dist/cjs/plugins/plugin_manager.js +27 -0
  38. package/dist/cjs/runner/runner.js +306 -189
  39. package/dist/cjs/sessions/base_session_service.js +15 -12
  40. package/dist/cjs/sessions/database_session_service.js +232 -38
  41. package/dist/cjs/sessions/db/operations.js +70 -1
  42. package/dist/cjs/sessions/db/schema.js +4 -0
  43. package/dist/cjs/sessions/in_memory_session_service.js +2 -2
  44. package/dist/cjs/sessions/stale_session_error.js +59 -0
  45. package/dist/cjs/sessions/vertex_ai_session_service.js +11 -3
  46. package/dist/cjs/skills/loader.js +76 -41
  47. package/dist/cjs/telemetry/api/instrumentation.js +632 -0
  48. package/dist/cjs/telemetry/api/internal/common/accumulators.js +169 -0
  49. package/dist/cjs/telemetry/api/internal/common/attributes.js +131 -0
  50. package/dist/cjs/telemetry/api/internal/common/config.js +159 -0
  51. package/dist/cjs/telemetry/api/internal/common/error.js +98 -0
  52. package/dist/cjs/telemetry/api/internal/common/finish_reason.js +63 -0
  53. package/dist/cjs/telemetry/api/internal/common/genai_messages.js +217 -0
  54. package/dist/cjs/telemetry/api/internal/common/http_exchange.js +169 -0
  55. package/dist/cjs/telemetry/api/internal/common/provider_name.js +87 -0
  56. package/dist/cjs/telemetry/api/internal/common/redaction.js +148 -0
  57. package/dist/cjs/telemetry/api/internal/common/serialization.js +58 -0
  58. package/dist/cjs/telemetry/api/internal/common/token_usage.js +118 -0
  59. package/dist/cjs/telemetry/api/internal/logs/inference.js +50 -0
  60. package/dist/cjs/telemetry/api/internal/logs/logger.js +46 -0
  61. package/dist/cjs/telemetry/api/internal/logs/mcp.js +141 -0
  62. package/dist/cjs/telemetry/api/internal/metrics/agent.js +128 -0
  63. package/dist/cjs/telemetry/api/internal/metrics/inference_start_hook.js +56 -0
  64. package/dist/cjs/telemetry/api/internal/metrics/meters.js +189 -0
  65. package/dist/cjs/telemetry/api/internal/metrics/tool.js +147 -0
  66. package/dist/cjs/telemetry/api/internal/metrics/workflow.js +132 -0
  67. package/dist/cjs/telemetry/api/internal/trace/agent.js +52 -0
  68. package/dist/cjs/telemetry/api/internal/trace/compaction.js +78 -0
  69. package/dist/cjs/telemetry/api/internal/trace/inference.js +132 -0
  70. package/dist/cjs/telemetry/api/internal/trace/live.js +52 -0
  71. package/dist/cjs/telemetry/api/internal/trace/node.js +73 -0
  72. package/dist/cjs/telemetry/api/internal/trace/propagation.js +67 -0
  73. package/dist/cjs/telemetry/api/internal/trace/tool.js +122 -0
  74. package/dist/cjs/telemetry/api/internal/trace/tracer.js +77 -0
  75. package/dist/cjs/telemetry/api/internal/trace/workflow.js +77 -0
  76. package/dist/cjs/telemetry/export/agent_engine.js +90 -0
  77. package/dist/cjs/telemetry/export/agent_runtime.js +73 -0
  78. package/dist/cjs/telemetry/export/google_cloud.js +763 -0
  79. package/dist/cjs/telemetry/export/request_driven_metric_reader.js +303 -0
  80. package/dist/cjs/telemetry/{setup.js → export/setup.js} +72 -6
  81. package/dist/cjs/tools/agent_tool.js +9 -1
  82. package/dist/cjs/tools/apihub_tool/apihub_toolset.js +18 -23
  83. package/dist/cjs/tools/application_integration_tool/application_integration_toolset.js +109 -43
  84. package/dist/cjs/tools/application_integration_tool/clients/connections_client.js +222 -114
  85. package/dist/cjs/tools/application_integration_tool/clients/integration_client.js +34 -14
  86. package/dist/cjs/tools/application_integration_tool/integration_connector_tool.js +175 -0
  87. package/dist/cjs/tools/base_toolset.js +1 -1
  88. package/dist/cjs/tools/computer_use/base_computer.js +125 -0
  89. package/dist/cjs/tools/computer_use/computer_use_actions.js +502 -0
  90. package/dist/cjs/tools/computer_use/computer_use_tool.js +244 -0
  91. package/dist/cjs/tools/computer_use/computer_use_toolset.js +360 -0
  92. package/dist/cjs/tools/function_tool.js +15 -5
  93. package/dist/cjs/tools/google_api_tool/google_api_tool.js +4 -1
  94. package/dist/cjs/tools/google_api_tool/google_api_toolset.js +174 -0
  95. package/dist/cjs/tools/google_api_tool/google_api_toolsets.js +124 -0
  96. package/dist/cjs/tools/google_api_tool/googleapi_to_openapi_converter.js +5 -3
  97. package/dist/cjs/tools/google_api_tool/index.js +20 -23
  98. package/dist/cjs/tools/load_artifacts_tool.js +27 -11
  99. package/dist/cjs/tools/load_memory_tool.js +14 -15
  100. package/dist/cjs/tools/mcp/mcp_session_manager.js +23 -3
  101. package/dist/cjs/tools/mcp/mcp_tool.js +7 -3
  102. package/dist/cjs/tools/mcp/mcp_toolset.js +19 -20
  103. package/dist/cjs/tools/openapi_tool/auth/auth_helpers.js +30 -29
  104. package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/oauth2_exchanger.js +4 -4
  105. package/dist/cjs/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +20 -6
  106. package/dist/cjs/tools/openapi_tool/openapi_spec_parser/operation_parser.js +17 -6
  107. package/dist/cjs/tools/openapi_tool/openapi_toolset.js +7 -13
  108. package/dist/cjs/tools/openapi_tool/rest_api_tool.js +57 -10
  109. package/dist/cjs/tools/skill/load_skill_resource_tool.js +7 -0
  110. package/dist/cjs/tools/skill/load_skill_tool.js +3 -0
  111. package/dist/cjs/tools/skill/run_skill_script_tool.js +12 -2
  112. package/dist/cjs/tools/toolbox_toolset.js +193 -0
  113. package/dist/cjs/tools/webmcp/webmcp_toolset.js +1 -14
  114. package/dist/cjs/utils/async_queue.js +37 -3
  115. package/dist/cjs/utils/client_labels.js +17 -2
  116. package/dist/cjs/utils/env_aware_utils.js +13 -7
  117. package/dist/cjs/utils/error_utils.js +40 -2
  118. package/dist/cjs/utils/failover_utils.js +11 -10
  119. package/dist/cjs/utils/gemini_schema_util.js +145 -14
  120. package/dist/cjs/utils/id_provider.js +63 -0
  121. package/dist/cjs/utils/logger_node.js +4 -0
  122. package/dist/cjs/utils/model_name.js +15 -0
  123. package/dist/cjs/utils/output_schema_utils.js +5 -2
  124. package/dist/cjs/utils/simple_zod_to_json.js +13 -31
  125. package/dist/cjs/utils/ssrf_guard.js +46 -16
  126. package/dist/cjs/utils/task.js +1 -1
  127. package/dist/cjs/version.js +1 -1
  128. package/dist/cjs/workflow/index.js +2 -0
  129. package/dist/cjs/workflow/node_runner.js +24 -80
  130. package/dist/cjs/workflow/nodes/parallel_worker.js +18 -7
  131. package/dist/cjs/workflow/run_llm_agent_as_node.js +19 -14
  132. package/dist/cjs/workflow/utils/retry_utils.js +2 -2
  133. package/dist/cjs/workflow/workflow.js +12 -12
  134. package/dist/esm/a2a/a2a_remote_agent.js +23 -3
  135. package/dist/esm/a2a/a2a_remote_agent_utils.js +8 -4
  136. package/dist/esm/a2a/agent_card.js +5 -83
  137. package/dist/esm/a2a/agent_to_a2a.js +7 -0
  138. package/dist/esm/a2a/event_converter_utils.js +10 -3
  139. package/dist/esm/agents/agent_engine_client.js +382 -0
  140. package/dist/esm/agents/base_agent.js +127 -72
  141. package/dist/esm/agents/functions.js +69 -63
  142. package/dist/esm/agents/instructions.js +8 -6
  143. package/dist/esm/agents/invocation_context.js +2 -2
  144. package/dist/esm/agents/llm_agent.js +130 -106
  145. package/dist/esm/agents/processors/basic_llm_request_processor.js +1 -1
  146. package/dist/esm/agents/processors/code_execution_request_processor.js +8 -0
  147. package/dist/esm/agents/processors/content_processor_utils.js +72 -17
  148. package/dist/esm/agents/processors/content_request_processor.js +51 -2
  149. package/dist/esm/agents/processors/context_compactor_request_processor.js +5 -1
  150. package/dist/esm/agents/processors/instructions_llm_request_processor.js +1 -1
  151. package/dist/esm/agents/processors/nl_planning_processor.js +13 -3
  152. package/dist/esm/artifacts/file_artifact_service.js +1 -1
  153. package/dist/esm/cli/cli_eval.js +880 -17
  154. package/dist/esm/cli/utils/cleanup.js +56 -0
  155. package/dist/esm/cli/utils/envs.js +33 -2
  156. package/dist/esm/cli/utils/evals.js +74 -8
  157. package/dist/esm/cli/utils/logs.js +132 -13
  158. package/dist/esm/cli/utils/path_validation.js +45 -0
  159. package/dist/esm/code_executors/container_code_executor.js +171 -38
  160. package/dist/esm/code_executors/unsafe_local_code_executor.js +6 -1
  161. package/dist/esm/common.js +59 -19
  162. package/dist/esm/context/compaction_utils.js +19 -0
  163. package/dist/esm/errors/input_validation_error.js +3 -2
  164. package/dist/esm/events/event.js +7 -3
  165. package/dist/esm/features/feature_registry.js +5 -0
  166. package/dist/esm/index.js +36 -10
  167. package/dist/esm/models/google_llm.js +33 -2
  168. package/dist/esm/models/interactions_utils.js +3 -0
  169. package/dist/esm/plugins/base_plugin.js +54 -40
  170. package/dist/esm/plugins/plugin_manager.js +27 -0
  171. package/dist/esm/runner/runner.js +310 -192
  172. package/dist/esm/sessions/base_session_service.js +13 -11
  173. package/dist/esm/sessions/database_session_service.js +231 -38
  174. package/dist/esm/sessions/db/operations.js +70 -1
  175. package/dist/esm/sessions/db/schema.js +4 -0
  176. package/dist/esm/sessions/in_memory_session_service.js +2 -2
  177. package/dist/esm/sessions/stale_session_error.js +31 -0
  178. package/dist/esm/sessions/vertex_ai_session_service.js +11 -3
  179. package/dist/esm/skills/loader.js +76 -41
  180. package/dist/esm/telemetry/api/instrumentation.js +655 -0
  181. package/dist/esm/telemetry/api/internal/common/accumulators.js +139 -0
  182. package/dist/esm/telemetry/api/internal/common/attributes.js +94 -0
  183. package/dist/esm/telemetry/api/internal/common/config.js +128 -0
  184. package/dist/esm/telemetry/api/internal/common/error.js +69 -0
  185. package/dist/esm/telemetry/api/internal/common/finish_reason.js +35 -0
  186. package/dist/esm/telemetry/api/internal/common/genai_messages.js +188 -0
  187. package/dist/esm/telemetry/api/internal/common/http_exchange.js +142 -0
  188. package/dist/esm/telemetry/api/internal/common/provider_name.js +59 -0
  189. package/dist/esm/telemetry/api/internal/common/redaction.js +121 -0
  190. package/dist/esm/telemetry/api/internal/common/serialization.js +30 -0
  191. package/dist/esm/telemetry/api/internal/common/token_usage.js +85 -0
  192. package/dist/esm/telemetry/api/internal/logs/inference.js +23 -0
  193. package/dist/esm/telemetry/api/internal/logs/logger.js +19 -0
  194. package/dist/esm/telemetry/api/internal/logs/mcp.js +113 -0
  195. package/dist/esm/telemetry/api/internal/metrics/agent.js +107 -0
  196. package/dist/esm/telemetry/api/internal/metrics/inference_start_hook.js +29 -0
  197. package/dist/esm/telemetry/api/internal/metrics/meters.js +165 -0
  198. package/dist/esm/telemetry/api/internal/metrics/tool.js +119 -0
  199. package/dist/esm/telemetry/api/internal/metrics/workflow.js +112 -0
  200. package/dist/esm/telemetry/api/internal/trace/agent.js +25 -0
  201. package/dist/esm/telemetry/api/internal/trace/compaction.js +50 -0
  202. package/dist/esm/telemetry/api/internal/trace/inference.js +107 -0
  203. package/dist/esm/telemetry/api/internal/trace/live.js +28 -0
  204. package/dist/esm/telemetry/api/internal/trace/node.js +44 -0
  205. package/dist/esm/telemetry/api/internal/trace/propagation.js +39 -0
  206. package/dist/esm/telemetry/api/internal/trace/tool.js +96 -0
  207. package/dist/esm/telemetry/api/internal/trace/tracer.js +52 -0
  208. package/dist/esm/telemetry/api/internal/trace/workflow.js +54 -0
  209. package/dist/esm/telemetry/export/agent_engine.js +67 -0
  210. package/dist/esm/telemetry/export/agent_runtime.js +46 -0
  211. package/dist/esm/telemetry/export/google_cloud.js +733 -0
  212. package/dist/esm/telemetry/export/request_driven_metric_reader.js +276 -0
  213. package/dist/esm/telemetry/export/setup.js +160 -0
  214. package/dist/esm/tools/agent_tool.js +9 -1
  215. package/dist/esm/tools/apihub_tool/apihub_toolset.js +17 -22
  216. package/dist/esm/tools/application_integration_tool/application_integration_toolset.js +114 -44
  217. package/dist/esm/tools/application_integration_tool/clients/connections_client.js +226 -115
  218. package/dist/esm/tools/application_integration_tool/clients/integration_client.js +34 -14
  219. package/dist/esm/tools/application_integration_tool/integration_connector_tool.js +149 -0
  220. package/dist/esm/tools/base_toolset.js +1 -1
  221. package/dist/esm/tools/computer_use/base_computer.js +99 -0
  222. package/dist/esm/tools/computer_use/computer_use_actions.js +477 -0
  223. package/dist/esm/tools/computer_use/computer_use_tool.js +217 -0
  224. package/dist/esm/tools/computer_use/computer_use_toolset.js +344 -0
  225. package/dist/esm/tools/function_tool.js +15 -5
  226. package/dist/esm/tools/google_api_tool/google_api_tool.js +4 -1
  227. package/dist/esm/tools/google_api_tool/google_api_toolset.js +147 -0
  228. package/dist/esm/tools/google_api_tool/google_api_toolsets.js +94 -0
  229. package/dist/esm/tools/google_api_tool/googleapi_to_openapi_converter.js +5 -3
  230. package/dist/esm/tools/google_api_tool/index.js +18 -20
  231. package/dist/esm/tools/load_artifacts_tool.js +25 -10
  232. package/dist/esm/tools/load_memory_tool.js +14 -15
  233. package/dist/esm/tools/mcp/mcp_session_manager.js +23 -3
  234. package/dist/esm/tools/mcp/mcp_tool.js +7 -3
  235. package/dist/esm/tools/mcp/mcp_toolset.js +19 -20
  236. package/dist/esm/tools/openapi_tool/auth/auth_helpers.js +27 -26
  237. package/dist/esm/tools/openapi_tool/auth/credential_exchangers/oauth2_exchanger.js +4 -4
  238. package/dist/esm/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.js +20 -6
  239. package/dist/esm/tools/openapi_tool/openapi_spec_parser/operation_parser.js +17 -6
  240. package/dist/esm/tools/openapi_tool/openapi_toolset.js +6 -12
  241. package/dist/esm/tools/openapi_tool/rest_api_tool.js +57 -10
  242. package/dist/esm/tools/skill/load_skill_resource_tool.js +7 -0
  243. package/dist/esm/tools/skill/load_skill_tool.js +3 -0
  244. package/dist/esm/tools/skill/run_skill_script_tool.js +12 -2
  245. package/dist/esm/tools/toolbox_toolset.js +167 -0
  246. package/dist/esm/tools/webmcp/webmcp_toolset.js +1 -14
  247. package/dist/esm/utils/async_queue.js +37 -3
  248. package/dist/esm/utils/client_labels.js +17 -2
  249. package/dist/esm/utils/env_aware_utils.js +12 -7
  250. package/dist/esm/utils/error_utils.js +37 -1
  251. package/dist/esm/utils/failover_utils.js +11 -10
  252. package/dist/esm/utils/gemini_schema_util.js +144 -14
  253. package/dist/esm/utils/id_provider.js +33 -0
  254. package/dist/esm/utils/logger_node.js +4 -0
  255. package/dist/esm/utils/model_name.js +14 -0
  256. package/dist/esm/utils/output_schema_utils.js +5 -2
  257. package/dist/esm/utils/simple_zod_to_json.js +13 -31
  258. package/dist/esm/utils/ssrf_guard.js +55 -15
  259. package/dist/esm/utils/task.js +1 -1
  260. package/dist/esm/version.js +1 -1
  261. package/dist/esm/workflow/index.js +2 -1
  262. package/dist/esm/workflow/node_runner.js +26 -80
  263. package/dist/esm/workflow/nodes/parallel_worker.js +16 -6
  264. package/dist/esm/workflow/run_llm_agent_as_node.js +19 -14
  265. package/dist/esm/workflow/utils/retry_utils.js +2 -2
  266. package/dist/esm/workflow/workflow.js +12 -12
  267. package/dist/types/a2a/a2a_remote_agent.d.ts +6 -0
  268. package/dist/types/a2a/a2a_remote_agent_utils.d.ts +3 -2
  269. package/dist/types/agents/agent_engine_client.d.ts +155 -0
  270. package/dist/types/agents/base_agent.d.ts +14 -0
  271. package/dist/types/agents/llm_agent.d.ts +5 -1
  272. package/dist/types/agents/processors/content_processor_utils.d.ts +12 -10
  273. package/dist/types/agents/processors/nl_planning_processor.d.ts +2 -1
  274. package/dist/types/agents/run_config.d.ts +14 -0
  275. package/dist/types/cli/cli_eval.d.ts +172 -9
  276. package/dist/types/cli/utils/cleanup.d.ts +18 -0
  277. package/dist/types/cli/utils/envs.d.ts +13 -3
  278. package/dist/types/cli/utils/evals.d.ts +64 -1
  279. package/dist/types/cli/utils/logs.d.ts +20 -3
  280. package/dist/types/cli/utils/path_validation.d.ts +30 -0
  281. package/dist/types/code_executors/container_code_executor.d.ts +62 -9
  282. package/dist/types/common.d.ts +21 -18
  283. package/dist/types/context/compaction_utils.d.ts +13 -1
  284. package/dist/types/errors/input_validation_error.d.ts +2 -1
  285. package/dist/types/events/event.d.ts +3 -0
  286. package/dist/types/features/feature_registry.d.ts +1 -0
  287. package/dist/types/index.d.ts +11 -6
  288. package/dist/types/plugins/base_plugin.d.ts +50 -31
  289. package/dist/types/plugins/plugin_manager.d.ts +13 -0
  290. package/dist/types/runner/runner.d.ts +11 -0
  291. package/dist/types/sessions/base_session_service.d.ts +5 -2
  292. package/dist/types/sessions/database_session_service.d.ts +17 -1
  293. package/dist/types/sessions/db/operations.d.ts +2 -1
  294. package/dist/types/sessions/db/schema.d.ts +5 -3
  295. package/dist/types/sessions/stale_session_error.d.ts +21 -0
  296. package/dist/types/skills/loader.d.ts +3 -2
  297. package/dist/types/telemetry/api/instrumentation.d.ts +259 -0
  298. package/dist/types/telemetry/api/internal/common/accumulators.d.ts +91 -0
  299. package/dist/types/telemetry/api/internal/common/attributes.d.ts +90 -0
  300. package/dist/types/telemetry/api/internal/common/config.d.ts +61 -0
  301. package/dist/types/telemetry/api/internal/common/error.d.ts +29 -0
  302. package/dist/types/telemetry/api/internal/common/finish_reason.d.ts +18 -0
  303. package/dist/types/telemetry/api/internal/common/genai_messages.d.ts +26 -0
  304. package/dist/types/telemetry/api/internal/common/http_exchange.d.ts +50 -0
  305. package/dist/types/telemetry/api/internal/common/provider_name.d.ts +16 -0
  306. package/dist/types/telemetry/api/internal/common/redaction.d.ts +14 -0
  307. package/dist/types/telemetry/api/internal/common/serialization.d.ts +18 -0
  308. package/dist/types/telemetry/api/internal/common/token_usage.d.ts +47 -0
  309. package/dist/types/telemetry/api/internal/logs/inference.d.ts +15 -0
  310. package/dist/types/telemetry/api/internal/logs/logger.d.ts +13 -0
  311. package/dist/types/telemetry/api/internal/logs/mcp.d.ts +31 -0
  312. package/dist/types/telemetry/api/internal/metrics/agent.d.ts +28 -0
  313. package/dist/types/telemetry/api/internal/metrics/inference_start_hook.d.ts +12 -0
  314. package/dist/types/telemetry/api/internal/metrics/meters.d.ts +57 -0
  315. package/dist/types/telemetry/api/internal/metrics/tool.d.ts +44 -0
  316. package/dist/types/telemetry/api/internal/metrics/workflow.d.ts +32 -0
  317. package/dist/types/telemetry/api/internal/trace/agent.d.ts +14 -0
  318. package/dist/types/telemetry/api/internal/trace/compaction.d.ts +20 -0
  319. package/dist/types/telemetry/api/internal/trace/inference.d.ts +31 -0
  320. package/dist/types/telemetry/api/internal/trace/live.d.ts +21 -0
  321. package/dist/types/telemetry/api/internal/trace/node.d.ts +22 -0
  322. package/dist/types/telemetry/api/internal/trace/propagation.d.ts +22 -0
  323. package/dist/types/telemetry/api/internal/trace/tool.d.ts +57 -0
  324. package/dist/types/telemetry/api/internal/trace/tracer.d.ts +31 -0
  325. package/dist/types/telemetry/api/internal/trace/workflow.d.ts +21 -0
  326. package/dist/types/telemetry/export/agent_engine.d.ts +23 -0
  327. package/dist/types/telemetry/export/agent_runtime.d.ts +40 -0
  328. package/dist/types/telemetry/export/google_cloud.d.ts +189 -0
  329. package/dist/types/telemetry/export/request_driven_metric_reader.d.ts +144 -0
  330. package/dist/types/telemetry/{setup.d.ts → export/setup.d.ts} +3 -0
  331. package/dist/types/tools/agent_tool.d.ts +1 -1
  332. package/dist/types/tools/apihub_tool/apihub_toolset.d.ts +14 -21
  333. package/dist/types/tools/application_integration_tool/application_integration_toolset.d.ts +32 -9
  334. package/dist/types/tools/application_integration_tool/clients/connections_client.d.ts +35 -12
  335. package/dist/types/tools/application_integration_tool/clients/integration_client.d.ts +3 -3
  336. package/dist/types/tools/application_integration_tool/integration_connector_tool.d.ts +70 -0
  337. package/dist/types/tools/base_toolset.d.ts +7 -6
  338. package/dist/types/tools/computer_use/base_computer.d.ts +281 -0
  339. package/dist/types/tools/computer_use/computer_use_actions.d.ts +53 -0
  340. package/dist/types/tools/computer_use/computer_use_tool.d.ts +108 -0
  341. package/dist/types/tools/computer_use/computer_use_toolset.d.ts +132 -0
  342. package/dist/types/tools/google_api_tool/google_api_tool.d.ts +10 -3
  343. package/dist/types/tools/google_api_tool/google_api_toolset.d.ts +57 -0
  344. package/dist/types/tools/google_api_tool/google_api_toolsets.d.ts +48 -0
  345. package/dist/types/tools/google_api_tool/googleapi_to_openapi_converter.d.ts +5 -4
  346. package/dist/types/tools/google_api_tool/index.d.ts +4 -5
  347. package/dist/types/tools/load_artifacts_tool.d.ts +18 -1
  348. package/dist/types/tools/load_memory_tool.d.ts +32 -4
  349. package/dist/types/tools/mcp/mcp_session_manager.d.ts +16 -0
  350. package/dist/types/tools/openapi_tool/auth/auth_helpers.d.ts +8 -8
  351. package/dist/types/tools/openapi_tool/openapi_spec_parser/openapi_spec_parser.d.ts +12 -0
  352. package/dist/types/tools/openapi_tool/openapi_spec_parser/operation_parser.d.ts +15 -3
  353. package/dist/types/tools/openapi_tool/openapi_toolset.d.ts +5 -0
  354. package/dist/types/tools/openapi_tool/rest_api_tool.d.ts +10 -0
  355. package/dist/types/tools/toolbox_toolset.d.ts +154 -0
  356. package/dist/types/utils/async_queue.d.ts +14 -0
  357. package/dist/types/utils/client_labels.d.ts +2 -1
  358. package/dist/types/utils/env_aware_utils.d.ts +11 -0
  359. package/dist/types/utils/error_utils.d.ts +4 -0
  360. package/dist/types/utils/gemini_schema_util.d.ts +29 -0
  361. package/dist/types/utils/id_provider.d.ts +43 -0
  362. package/dist/types/utils/model_name.d.ts +8 -0
  363. package/dist/types/utils/output_schema_utils.d.ts +3 -2
  364. package/dist/types/utils/simple_zod_to_json.d.ts +1 -2
  365. package/dist/types/utils/ssrf_guard.d.ts +2 -0
  366. package/dist/types/version.d.ts +1 -1
  367. package/dist/types/workflow/index.d.ts +1 -1
  368. package/dist/types/workflow/nodes/parallel_worker.d.ts +8 -1
  369. package/dist/web/index_web.js +94 -88
  370. package/dist/web/index_web.js.map +4 -4
  371. package/package.json +43 -38
  372. package/dist/cjs/agents/remote_agent.js +0 -187
  373. package/dist/cjs/telemetry/google_cloud.js +0 -116
  374. package/dist/cjs/telemetry/tracing.js +0 -350
  375. package/dist/cjs/tools/crewai_tool.js +0 -132
  376. package/dist/cjs/tools/google_api_tool/google_api_tool_set.js +0 -226
  377. package/dist/cjs/tools/google_api_tool/google_api_tool_sets.js +0 -58
  378. package/dist/cjs/tools/langchain_tool.js +0 -172
  379. package/dist/cjs/tools/toolbox_tool.js +0 -108
  380. package/dist/esm/agents/remote_agent.js +0 -164
  381. package/dist/esm/telemetry/google_cloud.js +0 -99
  382. package/dist/esm/telemetry/setup.js +0 -89
  383. package/dist/esm/telemetry/tracing.js +0 -315
  384. package/dist/esm/tools/crewai_tool.js +0 -107
  385. package/dist/esm/tools/google_api_tool/google_api_tool_set.js +0 -188
  386. package/dist/esm/tools/google_api_tool/google_api_tool_sets.js +0 -24
  387. package/dist/esm/tools/langchain_tool.js +0 -148
  388. package/dist/esm/tools/toolbox_tool.js +0 -80
  389. package/dist/types/agents/remote_agent.d.ts +0 -68
  390. package/dist/types/telemetry/google_cloud.d.ts +0 -9
  391. package/dist/types/telemetry/tracing.d.ts +0 -129
  392. package/dist/types/tools/crewai_tool.d.ts +0 -85
  393. package/dist/types/tools/google_api_tool/google_api_tool_set.d.ts +0 -78
  394. package/dist/types/tools/google_api_tool/google_api_tool_sets.d.ts +0 -33
  395. package/dist/types/tools/langchain_tool.d.ts +0 -103
  396. package/dist/types/tools/toolbox_tool.d.ts +0 -73
@@ -0,0 +1,382 @@
1
+ import {createRequire as topLevelCreateRequire} from 'module';
2
+ const require = topLevelCreateRequire(import.meta.url);
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
19
+ // If the importer is in node compatibility mode or this is not an ESM
20
+ // file that has been converted to a CommonJS file using a Babel-
21
+ // compatible transform (i.e. "__esModule" has not been set), then set
22
+ // "default" to the CommonJS "module.exports" for node compatibility.
23
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
24
+ mod
25
+ ));
26
+ /**
27
+ * @license
28
+ * Copyright 2026 Google LLC
29
+ * SPDX-License-Identifier: Apache-2.0
30
+ */
31
+ import { getErrorMessage } from "../utils/error_utils.js";
32
+ import { loadOptionalPeer } from "../utils/optional_peer.js";
33
+ const _AgentExecutionError = class _AgentExecutionError extends Error {
34
+ constructor(message, cause) {
35
+ super(message);
36
+ this.cause = cause;
37
+ this.name = "AgentExecutionError";
38
+ }
39
+ };
40
+ __name(_AgentExecutionError, "AgentExecutionError");
41
+ let AgentExecutionError = _AgentExecutionError;
42
+ const WIRE_KEY_ALIASES = [
43
+ ["userId", "user_id"],
44
+ ["sessionId", "session_id"],
45
+ ["expireTime", "expire_time"],
46
+ ["runConfig", "run_config"],
47
+ ["stateDelta", "state_delta"]
48
+ ];
49
+ function toWireInput(config) {
50
+ var _a;
51
+ const input = { ...config };
52
+ delete input["classMethod"];
53
+ for (const [camel, snake] of WIRE_KEY_ALIASES) {
54
+ input[snake] = (_a = input[snake]) != null ? _a : input[camel];
55
+ delete input[camel];
56
+ }
57
+ for (const key of Object.keys(input)) {
58
+ if (input[key] === void 0) {
59
+ delete input[key];
60
+ }
61
+ }
62
+ return input;
63
+ }
64
+ __name(toWireInput, "toWireInput");
65
+ function buildInputStruct(sdkHelpers, input) {
66
+ var _a;
67
+ const value = sdkHelpers.toValue(input);
68
+ return (_a = value == null ? void 0 : value.structValue) != null ? _a : void 0;
69
+ }
70
+ __name(buildInputStruct, "buildInputStruct");
71
+ function parseOutput(sdkHelpers, output) {
72
+ return sdkHelpers.fromValue(output);
73
+ }
74
+ __name(parseOutput, "parseOutput");
75
+ const IGNORED_SSE_FIELDS = /* @__PURE__ */ new Set([
76
+ "event",
77
+ "id",
78
+ "retry"
79
+ ]);
80
+ const DONE_SENTINEL = "[DONE]";
81
+ function parseFragment(payload) {
82
+ try {
83
+ return JSON.parse(payload);
84
+ } catch (e) {
85
+ throw new AgentExecutionError(
86
+ `Failed to parse stream fragment: ${payload}`,
87
+ e
88
+ );
89
+ }
90
+ }
91
+ __name(parseFragment, "parseFragment");
92
+ function* dispatchEvent(dataLines) {
93
+ if (dataLines.length === 0) {
94
+ return;
95
+ }
96
+ const lines = dataLines.splice(0);
97
+ const payload = lines.join("\n").trim();
98
+ if (payload === "" || payload === DONE_SENTINEL) {
99
+ return;
100
+ }
101
+ let parsed;
102
+ try {
103
+ parsed = parseFragment(payload);
104
+ } catch (e) {
105
+ if (lines.length === 1) {
106
+ throw e;
107
+ }
108
+ const values = [];
109
+ try {
110
+ for (const line of lines) {
111
+ const trimmed = line.trim();
112
+ if (trimmed !== "" && trimmed !== DONE_SENTINEL) {
113
+ values.push(JSON.parse(trimmed));
114
+ }
115
+ }
116
+ } catch {
117
+ throw e;
118
+ }
119
+ yield* values;
120
+ return;
121
+ }
122
+ yield parsed;
123
+ }
124
+ __name(dispatchEvent, "dispatchEvent");
125
+ function* processLine(rawLine, dataLines) {
126
+ const line = (rawLine.endsWith("\r") ? rawLine.slice(0, -1) : rawLine).replace(/^[ \t]+/, "");
127
+ if (line === "") {
128
+ yield* dispatchEvent(dataLines);
129
+ return;
130
+ }
131
+ if (line.startsWith(":")) {
132
+ return;
133
+ }
134
+ const colon = line.indexOf(":");
135
+ const field = colon === -1 ? line : line.slice(0, colon);
136
+ if (IGNORED_SSE_FIELDS.has(field)) {
137
+ return;
138
+ }
139
+ if (field === "data") {
140
+ if (dataLines.length === 1) {
141
+ const buffered = dataLines[0].trim();
142
+ if (buffered === DONE_SENTINEL) {
143
+ yield* dispatchEvent(dataLines);
144
+ } else if (buffered !== "") {
145
+ try {
146
+ JSON.parse(buffered);
147
+ yield* dispatchEvent(dataLines);
148
+ } catch {
149
+ }
150
+ }
151
+ }
152
+ const value = colon === -1 ? "" : line.slice(colon + 1);
153
+ dataLines.push(value.startsWith(" ") ? value.slice(1) : value);
154
+ return;
155
+ }
156
+ yield* dispatchEvent(dataLines);
157
+ const trimmed = line.trim();
158
+ if (trimmed === "" || trimmed === DONE_SENTINEL) {
159
+ return;
160
+ }
161
+ yield parseFragment(trimmed);
162
+ }
163
+ __name(processLine, "processLine");
164
+ async function* parseStream(stream) {
165
+ var _a;
166
+ const decoder = new TextDecoder("utf-8");
167
+ const dataLines = [];
168
+ let buffer = "";
169
+ for await (const chunk of stream) {
170
+ const chunkData = chunk == null ? void 0 : chunk.data;
171
+ if (chunkData === void 0) {
172
+ if (typeof chunk === "object" && chunk !== null) {
173
+ yield chunk;
174
+ }
175
+ continue;
176
+ }
177
+ buffer += chunkData instanceof Uint8Array ? decoder.decode(chunkData, { stream: true }) : String(chunkData);
178
+ const lines = buffer.split("\n");
179
+ buffer = (_a = lines.pop()) != null ? _a : "";
180
+ for (const line of lines) {
181
+ yield* processLine(line, dataLines);
182
+ }
183
+ }
184
+ buffer += decoder.decode();
185
+ for (const line of buffer.split("\n")) {
186
+ yield* processLine(line, dataLines);
187
+ }
188
+ yield* dispatchEvent(dataLines);
189
+ }
190
+ __name(parseStream, "parseStream");
191
+ const _AgentEngineClient = class _AgentEngineClient {
192
+ constructor(config) {
193
+ var _a;
194
+ this.apiEndpoint = (_a = config.apiEndpoint) != null ? _a : config.location === "global" ? "aiplatform.googleapis.com" : `${config.location}-aiplatform.googleapis.com`;
195
+ this.reasoningEnginePath = `projects/${config.project}/locations/${config.location}/reasoningEngines/${config.reasoningEngineId}`;
196
+ }
197
+ /**
198
+ * Creates a remote session.
199
+ *
200
+ * Calls the `async_create_session` class method unless `config.classMethod`
201
+ * names another one.
202
+ *
203
+ * @returns The session payload returned by the Agent Engine. When
204
+ * `config.sessionId` is omitted the engine generates one, and this is the
205
+ * only place the caller can read it back from.
206
+ */
207
+ async createSession(config) {
208
+ return this.callQueryMethod({
209
+ config,
210
+ defaultClassMethod: "async_create_session",
211
+ errorPrefix: "Failed to create session"
212
+ });
213
+ }
214
+ /**
215
+ * Reads a remote session.
216
+ *
217
+ * Calls the `async_get_session` class method unless `config.classMethod`
218
+ * names another one.
219
+ *
220
+ * @throws {@link AgentExecutionError} if the user id or the session id is
221
+ * missing, or if the call fails.
222
+ */
223
+ async getSession(config) {
224
+ var _a, _b;
225
+ const userId = (_a = config.user_id) != null ? _a : config.userId;
226
+ const sessionId = (_b = config.session_id) != null ? _b : config.sessionId;
227
+ if (!userId || !sessionId) {
228
+ throw new AgentExecutionError(
229
+ "Failed to get session: user_id and session_id are required"
230
+ );
231
+ }
232
+ return this.callQueryMethod({
233
+ config,
234
+ defaultClassMethod: "async_get_session",
235
+ errorPrefix: "Failed to get session"
236
+ });
237
+ }
238
+ /**
239
+ * Lists the remote sessions of a user.
240
+ *
241
+ * Calls the `async_list_sessions` class method unless `config.classMethod`
242
+ * names another one.
243
+ */
244
+ async listSessions(config) {
245
+ return this.callQueryMethod({
246
+ config,
247
+ defaultClassMethod: "async_list_sessions",
248
+ errorPrefix: "Failed to list sessions"
249
+ });
250
+ }
251
+ /**
252
+ * Deletes a remote session.
253
+ *
254
+ * Calls the `async_delete_session` class method unless `config.classMethod`
255
+ * names another one.
256
+ */
257
+ async deleteSession(config) {
258
+ await this.callQueryMethod({
259
+ config,
260
+ defaultClassMethod: "async_delete_session",
261
+ errorPrefix: "Failed to delete session"
262
+ });
263
+ }
264
+ /**
265
+ * Sends a query and waits for the whole response.
266
+ *
267
+ * Calls the `query` class method unless `config.classMethod` names another
268
+ * one.
269
+ */
270
+ async query(config) {
271
+ return this.callQueryMethod({
272
+ config,
273
+ defaultClassMethod: "query",
274
+ errorPrefix: "Failed to execute query"
275
+ });
276
+ }
277
+ /**
278
+ * Sends a query and yields each streamed response value.
279
+ *
280
+ * Calls the `async_stream_query` class method unless `config.classMethod`
281
+ * names another one. The stream can be server-sent events or
282
+ * newline-delimited JSON.
283
+ */
284
+ async *streamQuery(config) {
285
+ var _a;
286
+ try {
287
+ const { helpers: sdkHelpers, client } = await this.getClient();
288
+ const stream = client.streamQueryReasoningEngine({
289
+ name: this.reasoningEnginePath,
290
+ classMethod: (_a = config.classMethod) != null ? _a : "async_stream_query",
291
+ input: buildInputStruct(sdkHelpers, toWireInput(config))
292
+ });
293
+ yield* parseStream(stream);
294
+ } catch (err) {
295
+ if (err instanceof AgentExecutionError) {
296
+ throw err;
297
+ }
298
+ throw new AgentExecutionError(
299
+ `Failed to execute stream query: ${getErrorMessage(err)}`,
300
+ err
301
+ );
302
+ }
303
+ }
304
+ /**
305
+ * Closes the underlying gRPC client.
306
+ *
307
+ * Does nothing if no call has created the client yet, and is safe to call
308
+ * more than once. A later call creates a new client.
309
+ */
310
+ async close() {
311
+ const pending = this.clientPromise;
312
+ if (!pending) {
313
+ return;
314
+ }
315
+ this.clientPromise = void 0;
316
+ let loaded;
317
+ try {
318
+ loaded = await pending;
319
+ } catch {
320
+ return;
321
+ }
322
+ await loaded.client.close();
323
+ }
324
+ async callQueryMethod({
325
+ config,
326
+ defaultClassMethod,
327
+ errorPrefix
328
+ }) {
329
+ var _a;
330
+ try {
331
+ const { helpers: sdkHelpers, client } = await this.getClient();
332
+ const [response] = await client.queryReasoningEngine({
333
+ name: this.reasoningEnginePath,
334
+ classMethod: (_a = config.classMethod) != null ? _a : defaultClassMethod,
335
+ input: buildInputStruct(sdkHelpers, toWireInput(config))
336
+ });
337
+ return response.output ? parseOutput(sdkHelpers, response.output) : void 0;
338
+ } catch (err) {
339
+ throw new AgentExecutionError(
340
+ `${errorPrefix}: ${getErrorMessage(err)}`,
341
+ err
342
+ );
343
+ }
344
+ }
345
+ /**
346
+ * Resolves the SDK helpers and the gRPC client, loading the optional peer on
347
+ * first use.
348
+ *
349
+ * A created client is kept. A failure is not kept, so the next call tries
350
+ * again, for example once the peer is installed.
351
+ */
352
+ getClient() {
353
+ if (!this.clientPromise) {
354
+ const promise = this.createClient();
355
+ this.clientPromise = promise;
356
+ promise.catch(() => {
357
+ if (this.clientPromise === promise) {
358
+ this.clientPromise = void 0;
359
+ }
360
+ });
361
+ }
362
+ return this.clientPromise;
363
+ }
364
+ async createClient() {
365
+ const aiplatform = await loadOptionalPeer(
366
+ { packageName: "@google-cloud/aiplatform", feature: "AgentEngineClient" },
367
+ () => Promise.resolve().then(() => __toESM(require("@google-cloud/aiplatform"), 1))
368
+ );
369
+ return {
370
+ helpers: aiplatform.helpers,
371
+ client: new aiplatform.v1.ReasoningEngineExecutionServiceClient({
372
+ apiEndpoint: this.apiEndpoint
373
+ })
374
+ };
375
+ }
376
+ };
377
+ __name(_AgentEngineClient, "AgentEngineClient");
378
+ let AgentEngineClient = _AgentEngineClient;
379
+ export {
380
+ AgentEngineClient,
381
+ AgentExecutionError
382
+ };
@@ -8,13 +8,10 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
8
8
  * SPDX-License-Identifier: Apache-2.0
9
9
  */
10
10
  var _a, _b;
11
- import { context, trace } from "@opentelemetry/api";
12
11
  import { createEvent } from "../events/event.js";
13
- import {
14
- runAsyncGeneratorWithOtelContext,
15
- traceAgentInvocation,
16
- tracer
17
- } from "../telemetry/tracing.js";
12
+ import { recordAgentInvocation } from "../telemetry/api/instrumentation.js";
13
+ import { isInvocationCancellation, toError } from "../utils/error_utils.js";
14
+ import { logger } from "../utils/logger.js";
18
15
  import { BaseNode } from "../workflow/base_node.js";
19
16
  import { Context } from "./context.js";
20
17
  import { InvocationContext } from "./invocation_context.js";
@@ -98,38 +95,38 @@ const _BaseAgent = class _BaseAgent extends (_b = BaseNode, _a = BASE_AGENT_SIGN
98
95
  * @returns An AsyncGenerator that yields the events generated by the agent.
99
96
  */
100
97
  async *runAsync(parentContext) {
101
- const span = tracer.startSpan(`invoke_agent ${this.name}`);
102
- const ctx = trace.setSpan(context.active(), span);
103
- try {
104
- yield* runAsyncGeneratorWithOtelContext(
105
- ctx,
106
- this,
107
- async function* () {
108
- var _a2, _b2;
109
- const context2 = this.createInvocationContext(parentContext);
110
- const beforeAgentCallbackEvent = await this.handleBeforeAgentCallback(context2);
98
+ const agentCtx = this;
99
+ yield* recordAgentInvocation(
100
+ { agent: this, invocationContext: parentContext },
101
+ async function* () {
102
+ var _a2, _b2;
103
+ const context = agentCtx.createInvocationContext(parentContext);
104
+ try {
105
+ const beforeAgentCallbackEvent = await agentCtx.handleBeforeAgentCallback(context);
111
106
  if (beforeAgentCallbackEvent) {
112
107
  yield beforeAgentCallbackEvent;
113
108
  }
114
- if (context2.endInvocation || ((_a2 = parentContext.abortSignal) == null ? void 0 : _a2.aborted)) {
109
+ if (context.endInvocation || ((_a2 = parentContext.abortSignal) == null ? void 0 : _a2.aborted)) {
115
110
  return;
116
111
  }
117
- traceAgentInvocation({ agent: this, invocationContext: context2 });
118
- for await (const event of this.runAsyncImpl(context2)) {
112
+ for await (const event of agentCtx.runAsyncImpl(context)) {
119
113
  yield event;
120
114
  }
121
- if (context2.endInvocation || ((_b2 = parentContext.abortSignal) == null ? void 0 : _b2.aborted)) {
115
+ if (context.endInvocation || ((_b2 = parentContext.abortSignal) == null ? void 0 : _b2.aborted)) {
122
116
  return;
123
117
  }
124
- const afterAgentCallbackEvent = await this.handleAfterAgentCallback(context2);
118
+ const afterAgentCallbackEvent = await agentCtx.handleAfterAgentCallback(context);
125
119
  if (afterAgentCallbackEvent) {
126
120
  yield afterAgentCallbackEvent;
127
121
  }
122
+ } catch (error) {
123
+ if (!isInvocationCancellation(error, context.abortSignal)) {
124
+ await agentCtx.handleAgentErrorCallback(context, error);
125
+ }
126
+ throw error;
128
127
  }
129
- );
130
- } finally {
131
- span.end();
132
- }
128
+ }
129
+ );
133
130
  }
134
131
  /**
135
132
  * Runs this agent as a workflow node.
@@ -164,36 +161,52 @@ const _BaseAgent = class _BaseAgent extends (_b = BaseNode, _a = BASE_AGENT_SIGN
164
161
  * @returns An AsyncGenerator that yields the events generated by the agent.
165
162
  */
166
163
  async *runLive(parentContext) {
167
- const span = tracer.startSpan(`invoke_agent ${this.name}`);
168
- const ctx = trace.setSpan(context.active(), span);
169
- try {
170
- yield* runAsyncGeneratorWithOtelContext(
171
- ctx,
172
- this,
173
- async function* () {
174
- var _a2, _b2;
175
- const context2 = this.createInvocationContext(parentContext);
176
- const beforeAgentCallbackEvent = await this.handleBeforeAgentCallback(context2);
164
+ const agentCtx = this;
165
+ yield* recordAgentInvocation(
166
+ { agent: this, invocationContext: parentContext },
167
+ async function* () {
168
+ var _a2, _b2;
169
+ const context = agentCtx.createInvocationContext(parentContext);
170
+ try {
171
+ const beforeAgentCallbackEvent = await agentCtx.handleBeforeAgentCallback(context);
177
172
  if (beforeAgentCallbackEvent) {
178
173
  yield beforeAgentCallbackEvent;
179
174
  }
180
- if (context2.endInvocation || ((_a2 = parentContext.abortSignal) == null ? void 0 : _a2.aborted)) {
175
+ if (context.endInvocation || ((_a2 = parentContext.abortSignal) == null ? void 0 : _a2.aborted)) {
181
176
  return;
182
177
  }
183
- for await (const event of this.runLiveImpl(context2)) {
178
+ for await (const event of agentCtx.runLiveImpl(context)) {
184
179
  yield event;
185
180
  }
186
- if (context2.endInvocation || ((_b2 = parentContext.abortSignal) == null ? void 0 : _b2.aborted)) {
181
+ if (context.endInvocation || ((_b2 = parentContext.abortSignal) == null ? void 0 : _b2.aborted)) {
187
182
  return;
188
183
  }
189
- const afterAgentCallbackEvent = await this.handleAfterAgentCallback(context2);
184
+ const afterAgentCallbackEvent = await agentCtx.handleAfterAgentCallback(context);
190
185
  if (afterAgentCallbackEvent) {
191
186
  yield afterAgentCallbackEvent;
192
187
  }
188
+ } catch (error) {
189
+ if (!isInvocationCancellation(error, context.abortSignal)) {
190
+ await agentCtx.handleAgentErrorCallback(context, error);
191
+ }
192
+ throw error;
193
193
  }
194
+ }
195
+ );
196
+ }
197
+ /** Reports execution failures without replacing the original thrown value. */
198
+ async handleAgentErrorCallback(invocationContext, error) {
199
+ try {
200
+ await invocationContext.pluginManager.runOnAgentErrorCallback({
201
+ agent: this,
202
+ callbackContext: new Context({ invocationContext }),
203
+ error: toError(error)
204
+ });
205
+ } catch (callbackError) {
206
+ logger.error(
207
+ "Agent error notification failed; preserving the original error.",
208
+ callbackError
194
209
  );
195
- } finally {
196
- span.end();
197
210
  }
198
211
  }
199
212
  /**
@@ -235,6 +248,22 @@ const _BaseAgent = class _BaseAgent extends (_b = BaseNode, _a = BASE_AGENT_SIGN
235
248
  agent: this
236
249
  });
237
250
  }
251
+ /**
252
+ * The resolved beforeAgentCallback field as a list of SingleAgentCallback.
253
+ *
254
+ * This method is only for use by Agent Development Kit.
255
+ */
256
+ get canonicalBeforeAgentCallbacks() {
257
+ return this.beforeAgentCallback;
258
+ }
259
+ /**
260
+ * The resolved afterAgentCallback field as a list of SingleAgentCallback.
261
+ *
262
+ * This method is only for use by Agent Development Kit.
263
+ */
264
+ get canonicalAfterAgentCallbacks() {
265
+ return this.afterAgentCallback;
266
+ }
238
267
  /**
239
268
  * Runs the before agent callback if it exists.
240
269
  *
@@ -243,27 +272,40 @@ const _BaseAgent = class _BaseAgent extends (_b = BaseNode, _a = BASE_AGENT_SIGN
243
272
  * generated.
244
273
  */
245
274
  async handleBeforeAgentCallback(invocationContext) {
246
- var _a2;
247
- if (this.beforeAgentCallback.length === 0) {
275
+ var _a2, _b2, _c;
276
+ const hasPlugins = Boolean((_a2 = invocationContext.pluginManager) == null ? void 0 : _a2.hasPlugins);
277
+ if (!hasPlugins && this.canonicalBeforeAgentCallbacks.length === 0) {
248
278
  return void 0;
249
279
  }
250
280
  const callbackContext = new Context({ invocationContext });
251
- for (const callback of this.beforeAgentCallback) {
252
- const content = await callback(callbackContext);
253
- if ((_a2 = invocationContext.abortSignal) == null ? void 0 : _a2.aborted) {
254
- return;
255
- }
256
- if (content) {
257
- invocationContext.endInvocation = true;
258
- return createEvent({
259
- invocationId: invocationContext.invocationId,
260
- author: this.name,
261
- branch: invocationContext.branch,
262
- content,
263
- actions: callbackContext.eventActions
264
- });
281
+ let content = hasPlugins ? await invocationContext.pluginManager.runBeforeAgentCallback({
282
+ agent: this,
283
+ callbackContext
284
+ }) : void 0;
285
+ if ((_b2 = invocationContext.abortSignal) == null ? void 0 : _b2.aborted) {
286
+ return;
287
+ }
288
+ if (!content) {
289
+ for (const callback of this.canonicalBeforeAgentCallbacks) {
290
+ content = await callback(callbackContext);
291
+ if ((_c = invocationContext.abortSignal) == null ? void 0 : _c.aborted) {
292
+ return;
293
+ }
294
+ if (content) {
295
+ break;
296
+ }
265
297
  }
266
298
  }
299
+ if (content) {
300
+ invocationContext.endInvocation = true;
301
+ return createEvent({
302
+ invocationId: invocationContext.invocationId,
303
+ author: this.name,
304
+ branch: invocationContext.branch,
305
+ content,
306
+ actions: callbackContext.eventActions
307
+ });
308
+ }
267
309
  if (callbackContext.state.hasDelta()) {
268
310
  return createEvent({
269
311
  invocationId: invocationContext.invocationId,
@@ -282,26 +324,39 @@ const _BaseAgent = class _BaseAgent extends (_b = BaseNode, _a = BASE_AGENT_SIGN
282
324
  * generated.
283
325
  */
284
326
  async handleAfterAgentCallback(invocationContext) {
285
- var _a2;
286
- if (this.afterAgentCallback.length === 0) {
327
+ var _a2, _b2, _c;
328
+ const hasPlugins = Boolean((_a2 = invocationContext.pluginManager) == null ? void 0 : _a2.hasPlugins);
329
+ if (!hasPlugins && this.canonicalAfterAgentCallbacks.length === 0) {
287
330
  return void 0;
288
331
  }
289
332
  const callbackContext = new Context({ invocationContext });
290
- for (const callback of this.afterAgentCallback) {
291
- const content = await callback(callbackContext);
292
- if ((_a2 = invocationContext.abortSignal) == null ? void 0 : _a2.aborted) {
293
- return;
294
- }
295
- if (content) {
296
- return createEvent({
297
- invocationId: invocationContext.invocationId,
298
- author: this.name,
299
- branch: invocationContext.branch,
300
- content,
301
- actions: callbackContext.eventActions
302
- });
333
+ let content = hasPlugins ? await invocationContext.pluginManager.runAfterAgentCallback({
334
+ agent: this,
335
+ callbackContext
336
+ }) : void 0;
337
+ if ((_b2 = invocationContext.abortSignal) == null ? void 0 : _b2.aborted) {
338
+ return;
339
+ }
340
+ if (!content) {
341
+ for (const callback of this.canonicalAfterAgentCallbacks) {
342
+ content = await callback(callbackContext);
343
+ if ((_c = invocationContext.abortSignal) == null ? void 0 : _c.aborted) {
344
+ return;
345
+ }
346
+ if (content) {
347
+ break;
348
+ }
303
349
  }
304
350
  }
351
+ if (content) {
352
+ return createEvent({
353
+ invocationId: invocationContext.invocationId,
354
+ author: this.name,
355
+ branch: invocationContext.branch,
356
+ content,
357
+ actions: callbackContext.eventActions
358
+ });
359
+ }
305
360
  if (callbackContext.state.hasDelta()) {
306
361
  return createEvent({
307
362
  invocationId: invocationContext.invocationId,