@google/adk 2.4.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 (326) 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 +282 -55
  7. package/dist/cjs/agents/base_agent.js +111 -68
  8. package/dist/cjs/agents/functions.js +62 -85
  9. package/dist/cjs/agents/instructions.js +7 -6
  10. package/dist/cjs/agents/invocation_context.js +2 -2
  11. package/dist/cjs/agents/llm_agent.js +105 -95
  12. package/dist/cjs/agents/processors/content_processor_utils.js +42 -15
  13. package/dist/cjs/agents/processors/content_request_processor.js +28 -11
  14. package/dist/cjs/agents/processors/context_compactor_request_processor.js +5 -1
  15. package/dist/cjs/agents/processors/instructions_llm_request_processor.js +1 -1
  16. package/dist/cjs/agents/processors/nl_planning_processor.js +2 -1
  17. package/dist/cjs/artifacts/file_artifact_service.js +1 -1
  18. package/dist/cjs/cli/cli_eval.js +884 -17
  19. package/dist/cjs/cli/utils/cleanup.js +84 -0
  20. package/dist/cjs/cli/utils/envs.js +33 -2
  21. package/dist/cjs/cli/utils/evals.js +75 -8
  22. package/dist/cjs/cli/utils/logs.js +128 -9
  23. package/dist/cjs/cli/utils/path_validation.js +83 -0
  24. package/dist/cjs/code_executors/container_code_executor.js +158 -36
  25. package/dist/cjs/common.js +50 -12
  26. package/dist/cjs/context/compaction_utils.js +19 -0
  27. package/dist/cjs/events/event.js +7 -3
  28. package/dist/cjs/features/feature_registry.js +5 -0
  29. package/dist/cjs/index.js +29 -14
  30. package/dist/cjs/models/google_llm.js +33 -2
  31. package/dist/cjs/models/interactions_utils.js +3 -0
  32. package/dist/cjs/plugins/base_plugin.js +45 -21
  33. package/dist/cjs/plugins/plugin_manager.js +27 -0
  34. package/dist/cjs/runner/runner.js +306 -189
  35. package/dist/cjs/sessions/base_session_service.js +1 -4
  36. package/dist/cjs/sessions/database_session_service.js +191 -19
  37. package/dist/cjs/sessions/db/operations.js +70 -1
  38. package/dist/cjs/sessions/db/schema.js +4 -0
  39. package/dist/cjs/sessions/in_memory_session_service.js +2 -2
  40. package/dist/cjs/sessions/vertex_ai_session_service.js +11 -3
  41. package/dist/cjs/skills/loader.js +29 -28
  42. package/dist/cjs/telemetry/api/instrumentation.js +632 -0
  43. package/dist/cjs/telemetry/api/internal/common/accumulators.js +169 -0
  44. package/dist/cjs/telemetry/api/internal/common/attributes.js +131 -0
  45. package/dist/cjs/telemetry/api/internal/common/config.js +159 -0
  46. package/dist/cjs/telemetry/api/internal/common/error.js +98 -0
  47. package/dist/cjs/telemetry/api/internal/common/finish_reason.js +63 -0
  48. package/dist/cjs/telemetry/api/internal/common/genai_messages.js +217 -0
  49. package/dist/cjs/telemetry/api/internal/common/http_exchange.js +169 -0
  50. package/dist/cjs/telemetry/api/internal/common/provider_name.js +87 -0
  51. package/dist/cjs/telemetry/api/internal/common/redaction.js +148 -0
  52. package/dist/cjs/telemetry/api/internal/common/serialization.js +58 -0
  53. package/dist/cjs/telemetry/api/internal/common/token_usage.js +118 -0
  54. package/dist/cjs/telemetry/api/internal/logs/inference.js +50 -0
  55. package/dist/cjs/telemetry/api/internal/logs/logger.js +46 -0
  56. package/dist/cjs/telemetry/api/internal/logs/mcp.js +141 -0
  57. package/dist/cjs/telemetry/api/internal/metrics/agent.js +128 -0
  58. package/dist/cjs/telemetry/api/internal/metrics/inference_start_hook.js +56 -0
  59. package/dist/cjs/telemetry/api/internal/metrics/meters.js +189 -0
  60. package/dist/cjs/telemetry/api/internal/metrics/tool.js +147 -0
  61. package/dist/cjs/telemetry/api/internal/metrics/workflow.js +132 -0
  62. package/dist/cjs/telemetry/api/internal/trace/agent.js +52 -0
  63. package/dist/cjs/telemetry/api/internal/trace/compaction.js +78 -0
  64. package/dist/cjs/telemetry/api/internal/trace/inference.js +132 -0
  65. package/dist/cjs/telemetry/api/internal/trace/live.js +52 -0
  66. package/dist/cjs/telemetry/api/internal/trace/node.js +73 -0
  67. package/dist/cjs/telemetry/api/internal/trace/propagation.js +67 -0
  68. package/dist/cjs/telemetry/api/internal/trace/tool.js +122 -0
  69. package/dist/cjs/telemetry/api/internal/trace/tracer.js +77 -0
  70. package/dist/cjs/telemetry/api/internal/trace/workflow.js +77 -0
  71. package/dist/cjs/telemetry/export/agent_engine.js +90 -0
  72. package/dist/cjs/telemetry/export/agent_runtime.js +73 -0
  73. package/dist/cjs/telemetry/export/google_cloud.js +763 -0
  74. package/dist/cjs/telemetry/export/request_driven_metric_reader.js +303 -0
  75. package/dist/cjs/telemetry/{setup.js → export/setup.js} +72 -5
  76. package/dist/cjs/tools/agent_tool.js +9 -1
  77. package/dist/cjs/tools/application_integration_tool/application_integration_toolset.js +22 -34
  78. package/dist/cjs/tools/application_integration_tool/clients/connections_client.js +60 -20
  79. package/dist/cjs/tools/application_integration_tool/clients/integration_client.js +26 -10
  80. package/dist/cjs/tools/application_integration_tool/integration_connector_tool.js +14 -23
  81. package/dist/cjs/tools/base_toolset.js +1 -1
  82. package/dist/cjs/tools/computer_use/base_computer.js +125 -0
  83. package/dist/cjs/tools/computer_use/computer_use_actions.js +502 -0
  84. package/dist/cjs/tools/computer_use/computer_use_tool.js +244 -0
  85. package/dist/cjs/tools/computer_use/computer_use_toolset.js +360 -0
  86. package/dist/cjs/tools/function_tool.js +15 -5
  87. package/dist/cjs/tools/google_api_tool/google_api_toolset.js +3 -2
  88. package/dist/cjs/tools/google_api_tool/googleapi_to_openapi_converter.js +3 -1
  89. package/dist/cjs/tools/load_artifacts_tool.js +15 -5
  90. package/dist/cjs/tools/load_memory_tool.js +2 -5
  91. package/dist/cjs/tools/mcp/mcp_session_manager.js +23 -3
  92. package/dist/cjs/tools/mcp/mcp_tool.js +7 -3
  93. package/dist/cjs/tools/mcp/mcp_toolset.js +18 -6
  94. package/dist/cjs/tools/openapi_tool/auth/auth_helpers.js +30 -29
  95. package/dist/cjs/tools/openapi_tool/auth/credential_exchangers/oauth2_exchanger.js +2 -2
  96. package/dist/cjs/tools/openapi_tool/rest_api_tool.js +45 -14
  97. package/dist/cjs/tools/skill/load_skill_resource_tool.js +7 -0
  98. package/dist/cjs/tools/skill/load_skill_tool.js +3 -0
  99. package/dist/cjs/tools/skill/run_skill_script_tool.js +12 -2
  100. package/dist/cjs/tools/toolbox_toolset.js +47 -28
  101. package/dist/cjs/utils/async_queue.js +37 -3
  102. package/dist/cjs/utils/client_labels.js +9 -11
  103. package/dist/cjs/utils/env_aware_utils.js +13 -7
  104. package/dist/cjs/utils/error_utils.js +40 -2
  105. package/dist/cjs/utils/failover_utils.js +10 -9
  106. package/dist/cjs/utils/gemini_schema_util.js +125 -12
  107. package/dist/cjs/utils/id_provider.js +63 -0
  108. package/dist/cjs/utils/model_name.js +15 -0
  109. package/dist/cjs/utils/simple_zod_to_json.js +13 -31
  110. package/dist/cjs/utils/ssrf_guard.js +46 -16
  111. package/dist/cjs/version.js +1 -1
  112. package/dist/cjs/workflow/index.js +2 -0
  113. package/dist/cjs/workflow/node_runner.js +24 -80
  114. package/dist/cjs/workflow/nodes/parallel_worker.js +18 -7
  115. package/dist/cjs/workflow/run_llm_agent_as_node.js +19 -14
  116. package/dist/cjs/workflow/utils/retry_utils.js +2 -2
  117. package/dist/cjs/workflow/workflow.js +12 -12
  118. package/dist/esm/a2a/a2a_remote_agent.js +23 -3
  119. package/dist/esm/a2a/a2a_remote_agent_utils.js +8 -4
  120. package/dist/esm/a2a/agent_card.js +5 -83
  121. package/dist/esm/a2a/agent_to_a2a.js +7 -0
  122. package/dist/esm/a2a/event_converter_utils.js +10 -3
  123. package/dist/esm/agents/agent_engine_client.js +293 -55
  124. package/dist/esm/agents/base_agent.js +111 -72
  125. package/dist/esm/agents/functions.js +67 -89
  126. package/dist/esm/agents/instructions.js +7 -6
  127. package/dist/esm/agents/invocation_context.js +2 -2
  128. package/dist/esm/agents/llm_agent.js +111 -100
  129. package/dist/esm/agents/processors/content_processor_utils.js +42 -15
  130. package/dist/esm/agents/processors/content_request_processor.js +28 -11
  131. package/dist/esm/agents/processors/context_compactor_request_processor.js +5 -1
  132. package/dist/esm/agents/processors/instructions_llm_request_processor.js +1 -1
  133. package/dist/esm/agents/processors/nl_planning_processor.js +2 -1
  134. package/dist/esm/artifacts/file_artifact_service.js +1 -1
  135. package/dist/esm/cli/cli_eval.js +880 -17
  136. package/dist/esm/cli/utils/cleanup.js +56 -0
  137. package/dist/esm/cli/utils/envs.js +33 -2
  138. package/dist/esm/cli/utils/evals.js +74 -8
  139. package/dist/esm/cli/utils/logs.js +128 -9
  140. package/dist/esm/cli/utils/path_validation.js +45 -0
  141. package/dist/esm/code_executors/container_code_executor.js +158 -36
  142. package/dist/esm/common.js +49 -6
  143. package/dist/esm/context/compaction_utils.js +19 -0
  144. package/dist/esm/events/event.js +7 -3
  145. package/dist/esm/features/feature_registry.js +5 -0
  146. package/dist/esm/index.js +27 -15
  147. package/dist/esm/models/google_llm.js +33 -2
  148. package/dist/esm/models/interactions_utils.js +3 -0
  149. package/dist/esm/plugins/base_plugin.js +45 -21
  150. package/dist/esm/plugins/plugin_manager.js +27 -0
  151. package/dist/esm/runner/runner.js +310 -192
  152. package/dist/esm/sessions/base_session_service.js +1 -4
  153. package/dist/esm/sessions/database_session_service.js +191 -19
  154. package/dist/esm/sessions/db/operations.js +70 -1
  155. package/dist/esm/sessions/db/schema.js +4 -0
  156. package/dist/esm/sessions/in_memory_session_service.js +2 -2
  157. package/dist/esm/sessions/vertex_ai_session_service.js +11 -3
  158. package/dist/esm/skills/loader.js +29 -28
  159. package/dist/esm/telemetry/api/instrumentation.js +655 -0
  160. package/dist/esm/telemetry/api/internal/common/accumulators.js +139 -0
  161. package/dist/esm/telemetry/api/internal/common/attributes.js +94 -0
  162. package/dist/esm/telemetry/api/internal/common/config.js +128 -0
  163. package/dist/esm/telemetry/api/internal/common/error.js +69 -0
  164. package/dist/esm/telemetry/api/internal/common/finish_reason.js +35 -0
  165. package/dist/esm/telemetry/api/internal/common/genai_messages.js +188 -0
  166. package/dist/esm/telemetry/api/internal/common/http_exchange.js +142 -0
  167. package/dist/esm/telemetry/api/internal/common/provider_name.js +59 -0
  168. package/dist/esm/telemetry/api/internal/common/redaction.js +121 -0
  169. package/dist/esm/telemetry/api/internal/common/serialization.js +30 -0
  170. package/dist/esm/telemetry/api/internal/common/token_usage.js +85 -0
  171. package/dist/esm/telemetry/api/internal/logs/inference.js +23 -0
  172. package/dist/esm/telemetry/api/internal/logs/logger.js +19 -0
  173. package/dist/esm/telemetry/api/internal/logs/mcp.js +113 -0
  174. package/dist/esm/telemetry/api/internal/metrics/agent.js +107 -0
  175. package/dist/esm/telemetry/api/internal/metrics/inference_start_hook.js +29 -0
  176. package/dist/esm/telemetry/api/internal/metrics/meters.js +165 -0
  177. package/dist/esm/telemetry/api/internal/metrics/tool.js +119 -0
  178. package/dist/esm/telemetry/api/internal/metrics/workflow.js +112 -0
  179. package/dist/esm/telemetry/api/internal/trace/agent.js +25 -0
  180. package/dist/esm/telemetry/api/internal/trace/compaction.js +50 -0
  181. package/dist/esm/telemetry/api/internal/trace/inference.js +107 -0
  182. package/dist/esm/telemetry/api/internal/trace/live.js +28 -0
  183. package/dist/esm/telemetry/api/internal/trace/node.js +44 -0
  184. package/dist/esm/telemetry/api/internal/trace/propagation.js +39 -0
  185. package/dist/esm/telemetry/api/internal/trace/tool.js +96 -0
  186. package/dist/esm/telemetry/api/internal/trace/tracer.js +52 -0
  187. package/dist/esm/telemetry/api/internal/trace/workflow.js +54 -0
  188. package/dist/esm/telemetry/export/agent_engine.js +67 -0
  189. package/dist/esm/telemetry/export/agent_runtime.js +46 -0
  190. package/dist/esm/telemetry/export/google_cloud.js +733 -0
  191. package/dist/esm/telemetry/export/request_driven_metric_reader.js +276 -0
  192. package/dist/esm/telemetry/export/setup.js +160 -0
  193. package/dist/esm/tools/agent_tool.js +9 -1
  194. package/dist/esm/tools/application_integration_tool/application_integration_toolset.js +23 -35
  195. package/dist/esm/tools/application_integration_tool/clients/connections_client.js +64 -21
  196. package/dist/esm/tools/application_integration_tool/clients/integration_client.js +26 -10
  197. package/dist/esm/tools/application_integration_tool/integration_connector_tool.js +14 -23
  198. package/dist/esm/tools/base_toolset.js +1 -1
  199. package/dist/esm/tools/computer_use/base_computer.js +99 -0
  200. package/dist/esm/tools/computer_use/computer_use_actions.js +477 -0
  201. package/dist/esm/tools/computer_use/computer_use_tool.js +217 -0
  202. package/dist/esm/tools/computer_use/computer_use_toolset.js +344 -0
  203. package/dist/esm/tools/function_tool.js +15 -5
  204. package/dist/esm/tools/google_api_tool/google_api_toolset.js +3 -2
  205. package/dist/esm/tools/google_api_tool/googleapi_to_openapi_converter.js +3 -1
  206. package/dist/esm/tools/load_artifacts_tool.js +15 -5
  207. package/dist/esm/tools/load_memory_tool.js +2 -5
  208. package/dist/esm/tools/mcp/mcp_session_manager.js +23 -3
  209. package/dist/esm/tools/mcp/mcp_tool.js +7 -3
  210. package/dist/esm/tools/mcp/mcp_toolset.js +18 -6
  211. package/dist/esm/tools/openapi_tool/auth/auth_helpers.js +27 -26
  212. package/dist/esm/tools/openapi_tool/auth/credential_exchangers/oauth2_exchanger.js +2 -2
  213. package/dist/esm/tools/openapi_tool/rest_api_tool.js +45 -14
  214. package/dist/esm/tools/skill/load_skill_resource_tool.js +7 -0
  215. package/dist/esm/tools/skill/load_skill_tool.js +3 -0
  216. package/dist/esm/tools/skill/run_skill_script_tool.js +12 -2
  217. package/dist/esm/tools/toolbox_toolset.js +47 -28
  218. package/dist/esm/utils/async_queue.js +37 -3
  219. package/dist/esm/utils/client_labels.js +9 -11
  220. package/dist/esm/utils/env_aware_utils.js +12 -7
  221. package/dist/esm/utils/error_utils.js +37 -1
  222. package/dist/esm/utils/failover_utils.js +10 -9
  223. package/dist/esm/utils/gemini_schema_util.js +124 -11
  224. package/dist/esm/utils/id_provider.js +33 -0
  225. package/dist/esm/utils/model_name.js +14 -0
  226. package/dist/esm/utils/simple_zod_to_json.js +13 -31
  227. package/dist/esm/utils/ssrf_guard.js +55 -15
  228. package/dist/esm/version.js +1 -1
  229. package/dist/esm/workflow/index.js +2 -1
  230. package/dist/esm/workflow/node_runner.js +26 -80
  231. package/dist/esm/workflow/nodes/parallel_worker.js +16 -6
  232. package/dist/esm/workflow/run_llm_agent_as_node.js +19 -14
  233. package/dist/esm/workflow/utils/retry_utils.js +2 -2
  234. package/dist/esm/workflow/workflow.js +12 -12
  235. package/dist/types/a2a/a2a_remote_agent.d.ts +6 -0
  236. package/dist/types/a2a/a2a_remote_agent_utils.d.ts +3 -2
  237. package/dist/types/agents/agent_engine_client.d.ts +121 -3
  238. package/dist/types/agents/base_agent.d.ts +2 -0
  239. package/dist/types/agents/processors/content_processor_utils.d.ts +9 -9
  240. package/dist/types/agents/run_config.d.ts +14 -0
  241. package/dist/types/cli/cli_eval.d.ts +172 -9
  242. package/dist/types/cli/utils/cleanup.d.ts +18 -0
  243. package/dist/types/cli/utils/envs.d.ts +13 -3
  244. package/dist/types/cli/utils/evals.d.ts +64 -1
  245. package/dist/types/cli/utils/logs.d.ts +19 -2
  246. package/dist/types/cli/utils/path_validation.d.ts +30 -0
  247. package/dist/types/code_executors/container_code_executor.d.ts +49 -8
  248. package/dist/types/common.d.ts +16 -9
  249. package/dist/types/context/compaction_utils.d.ts +13 -1
  250. package/dist/types/events/event.d.ts +3 -0
  251. package/dist/types/features/feature_registry.d.ts +1 -0
  252. package/dist/types/index.d.ts +9 -6
  253. package/dist/types/plugins/base_plugin.d.ts +50 -21
  254. package/dist/types/plugins/plugin_manager.d.ts +13 -0
  255. package/dist/types/runner/runner.d.ts +11 -0
  256. package/dist/types/sessions/base_session_service.d.ts +0 -2
  257. package/dist/types/sessions/db/operations.d.ts +2 -1
  258. package/dist/types/sessions/db/schema.d.ts +5 -3
  259. package/dist/types/telemetry/api/instrumentation.d.ts +259 -0
  260. package/dist/types/telemetry/api/internal/common/accumulators.d.ts +91 -0
  261. package/dist/types/telemetry/api/internal/common/attributes.d.ts +90 -0
  262. package/dist/types/telemetry/api/internal/common/config.d.ts +61 -0
  263. package/dist/types/telemetry/api/internal/common/error.d.ts +29 -0
  264. package/dist/types/telemetry/api/internal/common/finish_reason.d.ts +18 -0
  265. package/dist/types/telemetry/api/internal/common/genai_messages.d.ts +26 -0
  266. package/dist/types/telemetry/api/internal/common/http_exchange.d.ts +50 -0
  267. package/dist/types/telemetry/api/internal/common/provider_name.d.ts +16 -0
  268. package/dist/types/telemetry/api/internal/common/redaction.d.ts +14 -0
  269. package/dist/types/telemetry/api/internal/common/serialization.d.ts +18 -0
  270. package/dist/types/telemetry/api/internal/common/token_usage.d.ts +47 -0
  271. package/dist/types/telemetry/api/internal/logs/inference.d.ts +15 -0
  272. package/dist/types/telemetry/api/internal/logs/logger.d.ts +13 -0
  273. package/dist/types/telemetry/api/internal/logs/mcp.d.ts +31 -0
  274. package/dist/types/telemetry/api/internal/metrics/agent.d.ts +28 -0
  275. package/dist/types/telemetry/api/internal/metrics/inference_start_hook.d.ts +12 -0
  276. package/dist/types/telemetry/api/internal/metrics/meters.d.ts +57 -0
  277. package/dist/types/telemetry/api/internal/metrics/tool.d.ts +44 -0
  278. package/dist/types/telemetry/api/internal/metrics/workflow.d.ts +32 -0
  279. package/dist/types/telemetry/api/internal/trace/agent.d.ts +14 -0
  280. package/dist/types/telemetry/api/internal/trace/compaction.d.ts +20 -0
  281. package/dist/types/telemetry/api/internal/trace/inference.d.ts +31 -0
  282. package/dist/types/telemetry/api/internal/trace/live.d.ts +21 -0
  283. package/dist/types/telemetry/api/internal/trace/node.d.ts +22 -0
  284. package/dist/types/telemetry/api/internal/trace/propagation.d.ts +22 -0
  285. package/dist/types/telemetry/api/internal/trace/tool.d.ts +57 -0
  286. package/dist/types/telemetry/api/internal/trace/tracer.d.ts +31 -0
  287. package/dist/types/telemetry/api/internal/trace/workflow.d.ts +21 -0
  288. package/dist/types/telemetry/export/agent_engine.d.ts +23 -0
  289. package/dist/types/telemetry/export/agent_runtime.d.ts +40 -0
  290. package/dist/types/telemetry/export/google_cloud.d.ts +189 -0
  291. package/dist/types/telemetry/export/request_driven_metric_reader.d.ts +144 -0
  292. package/dist/types/telemetry/{setup.d.ts → export/setup.d.ts} +3 -0
  293. package/dist/types/tools/agent_tool.d.ts +1 -1
  294. package/dist/types/tools/application_integration_tool/clients/connections_client.d.ts +13 -4
  295. package/dist/types/tools/base_toolset.d.ts +1 -1
  296. package/dist/types/tools/computer_use/base_computer.d.ts +281 -0
  297. package/dist/types/tools/computer_use/computer_use_actions.d.ts +53 -0
  298. package/dist/types/tools/computer_use/computer_use_tool.d.ts +108 -0
  299. package/dist/types/tools/computer_use/computer_use_toolset.d.ts +132 -0
  300. package/dist/types/tools/google_api_tool/google_api_toolset.d.ts +2 -0
  301. package/dist/types/tools/load_artifacts_tool.d.ts +5 -1
  302. package/dist/types/tools/load_memory_tool.d.ts +13 -7
  303. package/dist/types/tools/mcp/mcp_session_manager.d.ts +16 -0
  304. package/dist/types/tools/openapi_tool/auth/auth_helpers.d.ts +8 -8
  305. package/dist/types/tools/openapi_tool/openapi_spec_parser/operation_parser.d.ts +7 -3
  306. package/dist/types/tools/toolbox_toolset.d.ts +15 -20
  307. package/dist/types/utils/async_queue.d.ts +14 -0
  308. package/dist/types/utils/env_aware_utils.d.ts +11 -0
  309. package/dist/types/utils/error_utils.d.ts +4 -0
  310. package/dist/types/utils/gemini_schema_util.d.ts +27 -6
  311. package/dist/types/utils/id_provider.d.ts +43 -0
  312. package/dist/types/utils/model_name.d.ts +8 -0
  313. package/dist/types/utils/ssrf_guard.d.ts +2 -0
  314. package/dist/types/version.d.ts +1 -1
  315. package/dist/types/workflow/index.d.ts +1 -1
  316. package/dist/types/workflow/nodes/parallel_worker.d.ts +8 -1
  317. package/dist/web/index_web.js +86 -88
  318. package/dist/web/index_web.js.map +4 -4
  319. package/package.json +13 -15
  320. package/dist/cjs/telemetry/google_cloud.js +0 -116
  321. package/dist/cjs/telemetry/tracing.js +0 -393
  322. package/dist/esm/telemetry/google_cloud.js +0 -99
  323. package/dist/esm/telemetry/setup.js +0 -88
  324. package/dist/esm/telemetry/tracing.js +0 -361
  325. package/dist/types/telemetry/google_cloud.d.ts +0 -9
  326. package/dist/types/telemetry/tracing.d.ts +0 -143
@@ -0,0 +1,655 @@
1
+ import {createRequire as topLevelCreateRequire} from 'module';
2
+ const require = topLevelCreateRequire(import.meta.url);
3
+ var __defProp = Object.defineProperty;
4
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
5
+ /**
6
+ * @license
7
+ * Copyright 2026 Google LLC
8
+ * SPDX-License-Identifier: Apache-2.0
9
+ */
10
+ import {
11
+ context,
12
+ createContextKey,
13
+ propagation,
14
+ SpanStatusCode,
15
+ trace
16
+ } from "@opentelemetry/api";
17
+ import { logger } from "../../utils/logger.js";
18
+ import {
19
+ captureAccumulators,
20
+ claimEntrypointWorkflowFrame,
21
+ openAgentFrame,
22
+ openWorkflowFrame
23
+ } from "./internal/common/accumulators.js";
24
+ import {
25
+ GcpAttr,
26
+ GenAiAttr,
27
+ USER_ID_ATTR
28
+ } from "./internal/common/attributes.js";
29
+ import {
30
+ isExperimentalFeatureEnabled,
31
+ resolveTelemetryConfig,
32
+ shouldAddContentToLogs
33
+ } from "./internal/common/config.js";
34
+ import {
35
+ getToolResponseErrorType,
36
+ resolveErrorType
37
+ } from "./internal/common/error.js";
38
+ import { isReportedFinishReason } from "./internal/common/finish_reason.js";
39
+ import {
40
+ buildOutputMessage,
41
+ buildRequestOperationDetails,
42
+ withoutContent
43
+ } from "./internal/common/genai_messages.js";
44
+ import { resolveProviderName } from "./internal/common/provider_name.js";
45
+ import { TokenUsage } from "./internal/common/token_usage.js";
46
+ import { emitInferenceOperationDetails } from "./internal/logs/inference.js";
47
+ import {
48
+ readMcpHttpExchangeSettings,
49
+ reportMcpHttpExchange
50
+ } from "./internal/logs/mcp.js";
51
+ import {
52
+ recordAgentDuration,
53
+ recordAgentTotals
54
+ } from "./internal/metrics/agent.js";
55
+ import { notifyInferenceStart } from "./internal/metrics/inference_start_hook.js";
56
+ import {
57
+ recordSkillLoad,
58
+ recordSkillScriptExecution,
59
+ recordToolDuration
60
+ } from "./internal/metrics/tool.js";
61
+ import {
62
+ recordWorkflowDuration,
63
+ recordWorkflowTotals
64
+ } from "./internal/metrics/workflow.js";
65
+ import { buildAgentInvocationAttributes } from "./internal/trace/agent.js";
66
+ import {
67
+ buildCompactionResultAttributes,
68
+ startCompactionSpan
69
+ } from "./internal/trace/compaction.js";
70
+ import {
71
+ buildResponseAttributes,
72
+ setInferenceOperationDetails,
73
+ setInferenceResponseAttributes,
74
+ startInferenceSpan
75
+ } from "./internal/trace/inference.js";
76
+ import { setSendDataAttributes } from "./internal/trace/live.js";
77
+ import {
78
+ hasOwnInvocationSpan,
79
+ setAssociatedEventIds,
80
+ startNodeSpan
81
+ } from "./internal/trace/node.js";
82
+ import {
83
+ addMissingHeaders,
84
+ INCOMING_HEADERS_GETTER
85
+ } from "./internal/trace/propagation.js";
86
+ import {
87
+ buildMergedToolCallsAttributes,
88
+ buildToolCallAttributes,
89
+ setSkillSpanAttributes
90
+ } from "./internal/trace/tool.js";
91
+ import {
92
+ bindOtelContextToAsyncGenerator,
93
+ getTracer,
94
+ setSpanError
95
+ } from "./internal/trace/tracer.js";
96
+ import { startWorkflowSpan } from "./internal/trace/workflow.js";
97
+ function nowMillis() {
98
+ return typeof performance !== "undefined" ? performance.now() : Date.now();
99
+ }
100
+ __name(nowMillis, "nowMillis");
101
+ function elapsedSeconds(startMillis) {
102
+ return Math.max(0, (nowMillis() - startMillis) / 1e3);
103
+ }
104
+ __name(elapsedSeconds, "elapsedSeconds");
105
+ function streamInScope(start, createGenerator) {
106
+ return (async function* () {
107
+ const scope = start();
108
+ try {
109
+ yield* bindOtelContextToAsyncGenerator(
110
+ scope.context,
111
+ context.with(scope.context, createGenerator)
112
+ );
113
+ } catch (error) {
114
+ scope.end(error);
115
+ throw error;
116
+ } finally {
117
+ scope.end();
118
+ }
119
+ })();
120
+ }
121
+ __name(streamInScope, "streamInScope");
122
+ function startWorkflowScope({
123
+ workflowName,
124
+ sessionId,
125
+ entrypoint,
126
+ telemetry
127
+ }) {
128
+ const startMillis = nowMillis();
129
+ const parentContext = context.active();
130
+ const { frame, context: frameContext } = openWorkflowFrame({
131
+ workflowName,
132
+ config: resolveTelemetryConfig(telemetry),
133
+ entrypoint,
134
+ parentContext
135
+ });
136
+ const nested = frame.parent !== void 0;
137
+ const span = startWorkflowSpan({
138
+ workflowName,
139
+ sessionId,
140
+ nested,
141
+ parentContext
142
+ });
143
+ const ctx = trace.setSpan(frameContext, span);
144
+ let ended = false;
145
+ return {
146
+ context: ctx,
147
+ run: /* @__PURE__ */ __name((fn) => context.with(ctx, fn), "run"),
148
+ end(error) {
149
+ if (ended) {
150
+ return;
151
+ }
152
+ ended = true;
153
+ let errorType;
154
+ if (error !== void 0) {
155
+ errorType = resolveErrorType(error);
156
+ setSpanError(span, error);
157
+ }
158
+ span.end();
159
+ recordWorkflowDuration({
160
+ workflowName,
161
+ durationSeconds: elapsedSeconds(startMillis),
162
+ nested,
163
+ errorType
164
+ });
165
+ recordWorkflowTotals({
166
+ rootAgentName: frame.rootAgentName,
167
+ workflowName,
168
+ nested,
169
+ totals: frame.totals,
170
+ config: frame.config
171
+ });
172
+ }
173
+ };
174
+ }
175
+ __name(startWorkflowScope, "startWorkflowScope");
176
+ function recordInvocation({ entrypoint, sessionId, runConfig }, createGenerator) {
177
+ return streamInScope(
178
+ () => startWorkflowScope({
179
+ workflowName: entrypoint.name,
180
+ sessionId,
181
+ entrypoint,
182
+ telemetry: runConfig == null ? void 0 : runConfig.telemetry
183
+ }),
184
+ createGenerator
185
+ );
186
+ }
187
+ __name(recordInvocation, "recordInvocation");
188
+ function recordAgentInvocation({ agent, invocationContext }, createGenerator) {
189
+ return streamInScope(() => {
190
+ var _a, _b;
191
+ const startMillis = nowMillis();
192
+ const config = resolveTelemetryConfig(
193
+ (_a = invocationContext.runConfig) == null ? void 0 : _a.telemetry
194
+ );
195
+ const parentContext = context.active();
196
+ const { frame, context: frameContext } = openAgentFrame(parentContext);
197
+ const span = getTracer().startSpan(
198
+ `invoke_agent ${agent.name}`,
199
+ {
200
+ attributes: buildAgentInvocationAttributes({
201
+ agent,
202
+ // Read defensively: telemetry must not fail a run whose context was
203
+ // assembled without a session.
204
+ sessionId: (_b = invocationContext.session) == null ? void 0 : _b.id
205
+ })
206
+ },
207
+ parentContext
208
+ );
209
+ const ctx = trace.setSpan(frameContext, span);
210
+ let ended = false;
211
+ return {
212
+ context: ctx,
213
+ end(error) {
214
+ if (ended) {
215
+ return;
216
+ }
217
+ ended = true;
218
+ let errorType;
219
+ if (error !== void 0) {
220
+ errorType = resolveErrorType(error);
221
+ setSpanError(span, error);
222
+ }
223
+ span.end();
224
+ recordAgentDuration({
225
+ agentName: agent.name,
226
+ durationSeconds: elapsedSeconds(startMillis),
227
+ errorType
228
+ });
229
+ recordAgentTotals({
230
+ agentName: agent.name,
231
+ totals: frame.totals,
232
+ config
233
+ });
234
+ }
235
+ };
236
+ }, createGenerator);
237
+ }
238
+ __name(recordAgentInvocation, "recordAgentInvocation");
239
+ function startInference({
240
+ invocationContext,
241
+ llmRequest,
242
+ modelResponseEvent
243
+ }) {
244
+ var _a, _b, _c;
245
+ const config = resolveTelemetryConfig((_a = invocationContext.runConfig) == null ? void 0 : _a.telemetry);
246
+ const accumulators = captureAccumulators(context.active());
247
+ const agentName = (_b = invocationContext.agent) == null ? void 0 : _b.name;
248
+ const commonAttributes = {
249
+ ...agentName ? { [GenAiAttr.AGENT_NAME]: agentName } : {},
250
+ [GenAiAttr.CONVERSATION_ID]: (_c = invocationContext.session) == null ? void 0 : _c.id,
251
+ [GcpAttr.EVENT_ID]: modelResponseEvent.id,
252
+ [GcpAttr.INVOCATION_ID]: invocationContext.invocationId,
253
+ [GenAiAttr.PROVIDER_NAME]: resolveProviderName(llmRequest.model)
254
+ };
255
+ const span = startInferenceSpan({ llmRequest, commonAttributes });
256
+ notifyInferenceStart();
257
+ const requestDetails = buildRequestOperationDetails(llmRequest);
258
+ const outputMessages = [];
259
+ let responseAttributes = {};
260
+ let newestUsage;
261
+ let spanEnded = false;
262
+ let finished = false;
263
+ const endSpan = /* @__PURE__ */ __name((failure) => {
264
+ var _a2;
265
+ if (spanEnded) {
266
+ return;
267
+ }
268
+ spanEnded = true;
269
+ if (failure) {
270
+ setSpanError(span, failure.error);
271
+ }
272
+ const details = outputMessages.length > 0 ? { ...requestDetails, [GenAiAttr.OUTPUT_MESSAGES]: outputMessages } : requestDetails;
273
+ const captureContent = shouldAddContentToLogs(config);
274
+ emitInferenceOperationDetails(span, {
275
+ ...commonAttributes,
276
+ ...captureContent ? { [USER_ID_ATTR]: (_a2 = invocationContext.session) == null ? void 0 : _a2.userId } : {},
277
+ ...responseAttributes,
278
+ ...captureContent ? details : withoutContent(details)
279
+ });
280
+ setInferenceOperationDetails(span, details, config);
281
+ span.end();
282
+ }, "endSpan");
283
+ return {
284
+ context: trace.setSpan(context.active(), span),
285
+ record(llmResponse) {
286
+ var _a2;
287
+ newestUsage = (_a2 = llmResponse.usageMetadata) != null ? _a2 : newestUsage;
288
+ if (spanEnded) {
289
+ return;
290
+ }
291
+ setInferenceResponseAttributes(span, llmResponse, config);
292
+ responseAttributes = {
293
+ ...responseAttributes,
294
+ ...buildResponseAttributes(llmResponse)
295
+ };
296
+ const outputMessage = buildOutputMessage(llmResponse);
297
+ if (outputMessage) {
298
+ outputMessages.push(outputMessage);
299
+ }
300
+ if (isReportedFinishReason(llmResponse.finishReason)) {
301
+ endSpan();
302
+ }
303
+ },
304
+ finish(failure) {
305
+ if (finished) {
306
+ return;
307
+ }
308
+ finished = true;
309
+ endSpan(failure);
310
+ accumulators.addInferenceCall();
311
+ if (newestUsage !== void 0) {
312
+ const usage = new TokenUsage(newestUsage);
313
+ if (usage.input !== void 0 || usage.output !== void 0) {
314
+ accumulators.addTokens(usage);
315
+ }
316
+ }
317
+ }
318
+ };
319
+ }
320
+ __name(startInference, "startInference");
321
+ function recordInference(params, createStream) {
322
+ return (async function* () {
323
+ const inference = startInference(params);
324
+ try {
325
+ for await (const llmResponse of bindOtelContextToAsyncGenerator(
326
+ inference.context,
327
+ context.with(inference.context, createStream)
328
+ )) {
329
+ inference.record(llmResponse);
330
+ yield llmResponse;
331
+ }
332
+ } catch (error) {
333
+ inference.finish({ error });
334
+ throw error;
335
+ } finally {
336
+ inference.finish();
337
+ }
338
+ })();
339
+ }
340
+ __name(recordInference, "recordInference");
341
+ async function recordSendData(params, fn) {
342
+ return getTracer().startActiveSpan("send_data", async (span) => {
343
+ try {
344
+ const result = await fn();
345
+ setSendDataAttributes(span, params);
346
+ return result;
347
+ } finally {
348
+ span.end();
349
+ }
350
+ });
351
+ }
352
+ __name(recordSendData, "recordSendData");
353
+ const TOOL_SCOPE_KEY = createContextKey("adk_tool_scope");
354
+ function isToolScopeState(value) {
355
+ return typeof value === "object" && value !== null && "skill" in value;
356
+ }
357
+ __name(isToolScopeState, "isToolScopeState");
358
+ async function recordToolExecution({ tool, args, invocationContext }, fn) {
359
+ var _a;
360
+ const startMillis = nowMillis();
361
+ const config = resolveTelemetryConfig((_a = invocationContext.runConfig) == null ? void 0 : _a.telemetry);
362
+ const accumulators = captureAccumulators(context.active());
363
+ const toolScope = { skill: void 0 };
364
+ return getTracer().startActiveSpan(
365
+ `execute_tool ${tool.name}`,
366
+ {},
367
+ context.active().setValue(TOOL_SCOPE_KEY, toolScope),
368
+ async (span) => {
369
+ var _a2;
370
+ let outcome = { kind: "response" };
371
+ try {
372
+ return await fn({
373
+ recordSuccess({ functionResponseEvent, rawResult }) {
374
+ outcome = {
375
+ kind: "response",
376
+ functionResponseEvent,
377
+ errorType: getToolResponseErrorType(rawResult)
378
+ };
379
+ }
380
+ });
381
+ } catch (error) {
382
+ outcome = { kind: "error", errorType: resolveErrorType(error) };
383
+ setSpanError(span, error);
384
+ throw error;
385
+ } finally {
386
+ const agentName = (_a2 = invocationContext.agent) == null ? void 0 : _a2.name;
387
+ span.setAttributes(
388
+ buildToolCallAttributes({
389
+ tool,
390
+ args,
391
+ agentName,
392
+ outcome,
393
+ config
394
+ })
395
+ );
396
+ if (outcome.kind === "response" && outcome.errorType !== void 0) {
397
+ span.setStatus({
398
+ code: SpanStatusCode.ERROR,
399
+ message: outcome.errorType
400
+ });
401
+ }
402
+ const skillReport = toolScope.skill;
403
+ if (skillReport) {
404
+ setSkillSpanAttributes(span, tool.name, skillReport);
405
+ if (skillReport.isSkillLoad) {
406
+ accumulators.addSkillLoad();
407
+ if (agentName !== void 0) {
408
+ recordSkillLoad({
409
+ agentName,
410
+ skill: skillReport.skill,
411
+ errorType: outcome.errorType,
412
+ config
413
+ });
414
+ }
415
+ } else if (skillReport.isSkillScript && skillReport.resourceName !== void 0 && agentName !== void 0) {
416
+ recordSkillScriptExecution({
417
+ agentName,
418
+ skill: skillReport.skill,
419
+ scriptPath: skillReport.resourceName,
420
+ config
421
+ });
422
+ }
423
+ }
424
+ span.end();
425
+ accumulators.addToolCall();
426
+ recordToolDuration({
427
+ agentName: agentName != null ? agentName : "",
428
+ toolName: tool.name,
429
+ toolType: tool.constructor.name,
430
+ durationSeconds: elapsedSeconds(startMillis),
431
+ errorType: outcome.errorType
432
+ });
433
+ }
434
+ }
435
+ );
436
+ }
437
+ __name(recordToolExecution, "recordToolExecution");
438
+ const NO_OP_SKILL_ACTIVITY_SCOPE = Object.freeze({
439
+ recordSkill() {
440
+ }
441
+ });
442
+ function toSkillReport(activity) {
443
+ switch (activity.kind) {
444
+ case "load":
445
+ return { skillName: activity.skillName, isSkillLoad: true };
446
+ case "resource":
447
+ return {
448
+ skillName: activity.skillName,
449
+ resourceName: activity.resourcePath,
450
+ isSkillLoad: false
451
+ };
452
+ case "script":
453
+ return {
454
+ skillName: activity.skillName,
455
+ resourceName: activity.scriptPath,
456
+ isSkillLoad: false,
457
+ isSkillScript: true
458
+ };
459
+ default: {
460
+ const exhaustive = activity;
461
+ throw new Error(`Unknown skill activity: ${JSON.stringify(exhaustive)}`);
462
+ }
463
+ }
464
+ }
465
+ __name(toSkillReport, "toSkillReport");
466
+ function recordSkillActivity(activity) {
467
+ const toolScope = context.active().getValue(TOOL_SCOPE_KEY);
468
+ if (!isToolScopeState(toolScope)) {
469
+ return NO_OP_SKILL_ACTIVITY_SCOPE;
470
+ }
471
+ const report = toSkillReport(activity);
472
+ toolScope.skill = report;
473
+ return {
474
+ recordSkill(skill) {
475
+ toolScope.skill = { ...report, skill };
476
+ }
477
+ };
478
+ }
479
+ __name(recordSkillActivity, "recordSkillActivity");
480
+ function recordMergedToolCalls({
481
+ responseEventId
482
+ }) {
483
+ getTracer().startSpan("execute_tool (merged)", {
484
+ attributes: buildMergedToolCallsAttributes(responseEventId)
485
+ }).end();
486
+ }
487
+ __name(recordMergedToolCalls, "recordMergedToolCalls");
488
+ const PASS_THROUGH_SCOPE = Object.freeze({
489
+ run: /* @__PURE__ */ __name((fn) => fn(), "run"),
490
+ end() {
491
+ }
492
+ });
493
+ function startSyncScope(span, ctx, onSuccess) {
494
+ let ended = false;
495
+ return {
496
+ run: /* @__PURE__ */ __name((fn) => context.with(ctx, fn), "run"),
497
+ end(error) {
498
+ if (ended) {
499
+ return;
500
+ }
501
+ ended = true;
502
+ if (error === void 0) {
503
+ onSuccess == null ? void 0 : onSuccess();
504
+ } else {
505
+ setSpanError(span, error);
506
+ }
507
+ span.end();
508
+ }
509
+ };
510
+ }
511
+ __name(startSyncScope, "startSyncScope");
512
+ function recordWorkflowInvocation({
513
+ workflow,
514
+ sessionId
515
+ }) {
516
+ const entrypointContext = claimEntrypointWorkflowFrame(workflow);
517
+ if (entrypointContext) {
518
+ return { run: /* @__PURE__ */ __name((fn) => context.with(entrypointContext, fn), "run"), end() {
519
+ } };
520
+ }
521
+ return startWorkflowScope({
522
+ workflowName: workflow.name,
523
+ sessionId
524
+ });
525
+ }
526
+ __name(recordWorkflowInvocation, "recordWorkflowInvocation");
527
+ const PASS_THROUGH_NODE_SCOPE = Object.freeze({
528
+ ...PASS_THROUGH_SCOPE,
529
+ recordEvent() {
530
+ }
531
+ });
532
+ function recordNodeInvocation({
533
+ node,
534
+ nodeName,
535
+ sessionId
536
+ }) {
537
+ if (hasOwnInvocationSpan(node)) {
538
+ return PASS_THROUGH_NODE_SCOPE;
539
+ }
540
+ const span = startNodeSpan({ nodeName, sessionId });
541
+ const eventIds = [];
542
+ return {
543
+ ...startSyncScope(
544
+ span,
545
+ trace.setSpan(context.active(), span),
546
+ () => setAssociatedEventIds(span, eventIds)
547
+ ),
548
+ recordEvent(event) {
549
+ eventIds.push(event.id);
550
+ }
551
+ };
552
+ }
553
+ __name(recordNodeInvocation, "recordNodeInvocation");
554
+ async function recordCompaction({ invocationContext, trigger }, fn) {
555
+ const { session } = invocationContext;
556
+ const eventsBefore = [...session.events];
557
+ const accumulators = captureAccumulators(context.active());
558
+ const span = startCompactionSpan({ sessionId: session.id, trigger });
559
+ return context.with(trace.setSpan(context.active(), span), async () => {
560
+ try {
561
+ const result = await fn();
562
+ const attributes = buildCompactionResultAttributes(
563
+ eventsBefore,
564
+ session.events
565
+ );
566
+ span.setAttributes(attributes);
567
+ if (GenAiAttr.COMPACTION_RESULT_EVENT_ID in attributes) {
568
+ accumulators.addCompaction();
569
+ }
570
+ return result;
571
+ } catch (error) {
572
+ setSpanError(span, error);
573
+ throw error;
574
+ } finally {
575
+ span.end();
576
+ }
577
+ });
578
+ }
579
+ __name(recordCompaction, "recordCompaction");
580
+ function instrumentMcpFetch(fetch) {
581
+ if (!isExperimentalFeatureEnabled(resolveTelemetryConfig(), "mcp")) {
582
+ return fetch;
583
+ }
584
+ return async (url, init) => {
585
+ const settings = readMcpHttpExchangeSettings();
586
+ const requestContext = context.active();
587
+ const response = await (fetch != null ? fetch : globalThis.fetch)(url, init);
588
+ void reportMcpHttpExchange({
589
+ url,
590
+ init,
591
+ response,
592
+ settings,
593
+ context: requestContext
594
+ }).catch((error) => {
595
+ logger.warn(
596
+ `Failed to record an MCP HTTP exchange: ${resolveErrorType(error)}`
597
+ );
598
+ });
599
+ return response;
600
+ };
601
+ }
602
+ __name(instrumentMcpFetch, "instrumentMcpFetch");
603
+ function propagateTraceContext(fetchImpl) {
604
+ return (input, init) => {
605
+ const send = fetchImpl != null ? fetchImpl : globalThis.fetch;
606
+ const injected = {};
607
+ try {
608
+ propagation.inject(context.active(), injected);
609
+ } catch (error) {
610
+ logger.warn(
611
+ `Failed to inject trace context into a request: ${resolveErrorType(error)}`
612
+ );
613
+ return send(input, init);
614
+ }
615
+ if (Object.keys(injected).length === 0) {
616
+ return send(input, init);
617
+ }
618
+ return send(input, {
619
+ ...init,
620
+ headers: addMissingHeaders(input, init, injected)
621
+ });
622
+ };
623
+ }
624
+ __name(propagateTraceContext, "propagateTraceContext");
625
+ function runWithRemoteTraceContext(headers, fn) {
626
+ const active = context.active();
627
+ if (trace.getSpan(active)) {
628
+ return fn();
629
+ }
630
+ let remote = active;
631
+ try {
632
+ remote = propagation.extract(active, headers, INCOMING_HEADERS_GETTER);
633
+ } catch (error) {
634
+ logger.warn(
635
+ `Failed to extract trace context from a request: ${resolveErrorType(error)}`
636
+ );
637
+ }
638
+ return context.with(remote, fn);
639
+ }
640
+ __name(runWithRemoteTraceContext, "runWithRemoteTraceContext");
641
+ export {
642
+ instrumentMcpFetch,
643
+ propagateTraceContext,
644
+ recordAgentInvocation,
645
+ recordCompaction,
646
+ recordInference,
647
+ recordInvocation,
648
+ recordMergedToolCalls,
649
+ recordNodeInvocation,
650
+ recordSendData,
651
+ recordSkillActivity,
652
+ recordToolExecution,
653
+ recordWorkflowInvocation,
654
+ runWithRemoteTraceContext
655
+ };