@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,107 @@
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 { ERROR_TYPE_ATTR, GenAiAttr } from "../common/attributes.js";
11
+ import {
12
+ isExperimentalFeatureEnabled
13
+ } from "../common/config.js";
14
+ import {
15
+ cachedInstruments,
16
+ CALL_COUNT_BUCKETS,
17
+ createHistogram,
18
+ createTokenHistograms,
19
+ recordTokenHistograms
20
+ } from "./meters.js";
21
+ const PER_INVOCATION = "one agent invocation";
22
+ const AGENT_DURATION_BUCKETS = Object.freeze([
23
+ 0.1,
24
+ 0.2,
25
+ 0.4,
26
+ 0.8,
27
+ 1.6,
28
+ 3.2,
29
+ 6.4,
30
+ 12.8,
31
+ 25.6,
32
+ 51.2,
33
+ 102.4,
34
+ 204.8,
35
+ 409.6
36
+ ]);
37
+ const getAgentInstruments = cachedInstruments((meter) => ({
38
+ duration: createHistogram({
39
+ meter,
40
+ name: "gen_ai.invoke_agent.duration",
41
+ unit: "s",
42
+ description: "Duration of agent invocations.",
43
+ buckets: AGENT_DURATION_BUCKETS
44
+ }),
45
+ inferenceCalls: createHistogram({
46
+ meter,
47
+ name: "gen_ai.invoke_agent.inference_calls",
48
+ unit: "1",
49
+ description: "Number of inference (model) calls per agent invocation.",
50
+ buckets: CALL_COUNT_BUCKETS
51
+ }),
52
+ toolCalls: createHistogram({
53
+ meter,
54
+ name: "gen_ai.invoke_agent.tool_calls",
55
+ unit: "1",
56
+ description: "Number of tool calls per agent invocation.",
57
+ buckets: CALL_COUNT_BUCKETS
58
+ }),
59
+ skillLoads: createHistogram({
60
+ meter,
61
+ name: "adk.experimental.invoke_agent.skill.loads",
62
+ unit: "1",
63
+ description: `Number of skill loads over ${PER_INVOCATION}.`,
64
+ buckets: CALL_COUNT_BUCKETS
65
+ }),
66
+ tokens: createTokenHistograms(
67
+ meter,
68
+ "adk.experimental.invoke_agent",
69
+ PER_INVOCATION
70
+ )
71
+ }));
72
+ function recordAgentDuration({
73
+ agentName,
74
+ durationSeconds,
75
+ errorType
76
+ }) {
77
+ const attributes = {
78
+ [GenAiAttr.AGENT_NAME]: agentName,
79
+ ...errorType === void 0 ? {} : { [ERROR_TYPE_ATTR]: errorType }
80
+ };
81
+ getAgentInstruments().duration.record(durationSeconds, attributes);
82
+ }
83
+ __name(recordAgentDuration, "recordAgentDuration");
84
+ function recordAgentTotals({
85
+ agentName,
86
+ totals,
87
+ config
88
+ }) {
89
+ const instruments = getAgentInstruments();
90
+ const attributes = {
91
+ [GenAiAttr.AGENT_NAME]: agentName
92
+ };
93
+ if (totals.tokens !== void 0 && isExperimentalFeatureEnabled(config, "token_usage")) {
94
+ recordTokenHistograms(instruments.tokens, totals.tokens, attributes);
95
+ }
96
+ instruments.inferenceCalls.record(totals.inferenceCalls, attributes);
97
+ instruments.toolCalls.record(totals.toolCalls, attributes);
98
+ if (isExperimentalFeatureEnabled(config, "skills")) {
99
+ instruments.skillLoads.record(totals.skillLoads, attributes);
100
+ }
101
+ }
102
+ __name(recordAgentTotals, "recordAgentTotals");
103
+ export {
104
+ AGENT_DURATION_BUCKETS,
105
+ recordAgentDuration,
106
+ recordAgentTotals
107
+ };
@@ -0,0 +1,29 @@
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 { formatError } from "../../../../utils/error_utils.js";
11
+ import { logger } from "../../../../utils/logger.js";
12
+ const INFERENCE_START_HOOK_KEY = /* @__PURE__ */ Symbol.for(
13
+ "google.adk.telemetry.inferenceStartHook"
14
+ );
15
+ function notifyInferenceStart() {
16
+ const hook = Reflect.get(globalThis, INFERENCE_START_HOOK_KEY);
17
+ if (typeof hook !== "function") {
18
+ return;
19
+ }
20
+ try {
21
+ hook();
22
+ } catch (error) {
23
+ logger.warn(`Model-call metric hook failed: ${formatError(error)}`);
24
+ }
25
+ }
26
+ __name(notifyInferenceStart, "notifyInferenceStart");
27
+ export {
28
+ notifyInferenceStart
29
+ };
@@ -0,0 +1,165 @@
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
+ metrics
12
+ } from "@opentelemetry/api";
13
+ import { version } from "../../../../version.js";
14
+ import { GEN_AI_SYSTEM_VALUE, SCHEMA_URL } from "../common/attributes.js";
15
+ import {
16
+ CACHE_READ_INPUT_TOKENS_MEANING,
17
+ INPUT_TOKENS_MEANING,
18
+ OUTPUT_TOKENS_MEANING,
19
+ REASONING_OUTPUT_TOKENS_MEANING,
20
+ TOOL_INPUT_TOKENS_MEANING,
21
+ TOTAL_TOKENS_MEANING
22
+ } from "../common/token_usage.js";
23
+ const CALL_COUNT_BUCKETS = Object.freeze([
24
+ 0,
25
+ 1,
26
+ 2,
27
+ 3,
28
+ 4,
29
+ 5,
30
+ 6,
31
+ 8,
32
+ 12,
33
+ 16,
34
+ 24,
35
+ 32,
36
+ 64,
37
+ 128,
38
+ 256,
39
+ 512
40
+ ]);
41
+ const INPUT_TOKEN_BUCKETS = Object.freeze([
42
+ 0,
43
+ 128,
44
+ 256,
45
+ 512,
46
+ 1024,
47
+ 2048,
48
+ 4096,
49
+ 8192,
50
+ 16384,
51
+ 32768,
52
+ 65536,
53
+ 131072,
54
+ 262144,
55
+ 524288,
56
+ 1048576
57
+ ]);
58
+ const OUTPUT_TOKEN_BUCKETS = Object.freeze([
59
+ 0,
60
+ 32,
61
+ 64,
62
+ 128,
63
+ 256,
64
+ 512,
65
+ 1024,
66
+ 2048,
67
+ 4096,
68
+ 8192,
69
+ 16384,
70
+ 32768,
71
+ 65536,
72
+ 131072
73
+ ]);
74
+ function cachedInstruments(create) {
75
+ const cache = /* @__PURE__ */ new WeakMap();
76
+ return () => {
77
+ const provider = metrics.getMeterProvider();
78
+ let instruments = cache.get(provider);
79
+ if (instruments === void 0) {
80
+ instruments = create(
81
+ provider.getMeter(GEN_AI_SYSTEM_VALUE, version, {
82
+ schemaUrl: SCHEMA_URL
83
+ })
84
+ );
85
+ cache.set(provider, instruments);
86
+ }
87
+ return instruments;
88
+ };
89
+ }
90
+ __name(cachedInstruments, "cachedInstruments");
91
+ function createHistogram({
92
+ meter,
93
+ name,
94
+ unit,
95
+ description,
96
+ buckets
97
+ }) {
98
+ return meter.createHistogram(name, {
99
+ unit,
100
+ description,
101
+ ...buckets === void 0 ? {} : { advice: { explicitBucketBoundaries: [...buckets] } }
102
+ });
103
+ }
104
+ __name(createHistogram, "createHistogram");
105
+ function createTokenHistograms(meter, prefix, scopeDescription) {
106
+ const tokenHistogram = /* @__PURE__ */ __name((suffix, meaning, buckets) => createHistogram({
107
+ meter,
108
+ name: `${prefix}.${suffix}`,
109
+ unit: "{token}",
110
+ description: `${meaning} Summed over ${scopeDescription}.`,
111
+ buckets
112
+ }), "tokenHistogram");
113
+ return {
114
+ input: tokenHistogram(
115
+ "input_tokens",
116
+ INPUT_TOKENS_MEANING,
117
+ INPUT_TOKEN_BUCKETS
118
+ ),
119
+ output: tokenHistogram(
120
+ "output_tokens",
121
+ OUTPUT_TOKENS_MEANING,
122
+ OUTPUT_TOKEN_BUCKETS
123
+ ),
124
+ total: tokenHistogram(
125
+ "total_tokens",
126
+ TOTAL_TOKENS_MEANING,
127
+ INPUT_TOKEN_BUCKETS
128
+ ),
129
+ cacheRead: tokenHistogram(
130
+ "cache_read.input_tokens",
131
+ CACHE_READ_INPUT_TOKENS_MEANING,
132
+ INPUT_TOKEN_BUCKETS
133
+ ),
134
+ reasoning: tokenHistogram(
135
+ "reasoning.output_tokens",
136
+ REASONING_OUTPUT_TOKENS_MEANING,
137
+ OUTPUT_TOKEN_BUCKETS
138
+ ),
139
+ toolInput: tokenHistogram(
140
+ "tool.input_tokens",
141
+ TOOL_INPUT_TOKENS_MEANING,
142
+ INPUT_TOKEN_BUCKETS
143
+ )
144
+ };
145
+ }
146
+ __name(createTokenHistograms, "createTokenHistograms");
147
+ function recordTokenHistograms(histograms, usage, attributes) {
148
+ var _a, _b, _c, _d, _e;
149
+ histograms.input.record((_a = usage.input) != null ? _a : 0, attributes);
150
+ histograms.output.record((_b = usage.output) != null ? _b : 0, attributes);
151
+ histograms.total.record(usage.totalTokenUsage(), attributes);
152
+ histograms.cacheRead.record((_c = usage.cacheRead) != null ? _c : 0, attributes);
153
+ histograms.reasoning.record((_d = usage.reasoning) != null ? _d : 0, attributes);
154
+ histograms.toolInput.record((_e = usage.toolInput) != null ? _e : 0, attributes);
155
+ }
156
+ __name(recordTokenHistograms, "recordTokenHistograms");
157
+ export {
158
+ CALL_COUNT_BUCKETS,
159
+ INPUT_TOKEN_BUCKETS,
160
+ OUTPUT_TOKEN_BUCKETS,
161
+ cachedInstruments,
162
+ createHistogram,
163
+ createTokenHistograms,
164
+ recordTokenHistograms
165
+ };
@@ -0,0 +1,119 @@
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 { ERROR_TYPE_ATTR, GenAiAttr } from "../common/attributes.js";
11
+ import {
12
+ isExperimentalFeatureEnabled
13
+ } from "../common/config.js";
14
+ import { cachedInstruments, createHistogram } from "./meters.js";
15
+ const HALLUCINATED = "<hallucinated>";
16
+ const TOOL_DURATION_BUCKETS = Object.freeze([
17
+ 0.01,
18
+ 0.02,
19
+ 0.04,
20
+ 0.08,
21
+ 0.16,
22
+ 0.32,
23
+ 0.64,
24
+ 1.28,
25
+ 2.56,
26
+ 5.12,
27
+ 10.24,
28
+ 20.48,
29
+ 40.96,
30
+ 81.92
31
+ ]);
32
+ const getToolInstruments = cachedInstruments((meter) => ({
33
+ duration: createHistogram({
34
+ meter,
35
+ name: "gen_ai.execute_tool.duration",
36
+ unit: "s",
37
+ description: "Duration of tool executions.",
38
+ buckets: TOOL_DURATION_BUCKETS
39
+ }),
40
+ skillLoads: meter.createCounter("adk.experimental.skill.loads", {
41
+ unit: "1",
42
+ description: "Number of times a skill was loaded. Counts the attempt, so a load that resolved no skill is counted too, under its `error.type`."
43
+ }),
44
+ skillScriptExecutions: meter.createCounter(
45
+ "adk.experimental.skill.script.executions",
46
+ {
47
+ unit: "1",
48
+ description: "Number of skill script executions."
49
+ }
50
+ )
51
+ }));
52
+ function recordToolDuration({
53
+ agentName,
54
+ toolName,
55
+ toolType,
56
+ durationSeconds,
57
+ errorType
58
+ }) {
59
+ const attributes = {
60
+ [GenAiAttr.AGENT_NAME]: agentName,
61
+ [GenAiAttr.TOOL_NAME]: toolName,
62
+ [GenAiAttr.TOOL_TYPE]: toolType,
63
+ ...errorType === void 0 ? {} : { [ERROR_TYPE_ATTR]: errorType }
64
+ };
65
+ getToolInstruments().duration.record(durationSeconds, attributes);
66
+ }
67
+ __name(recordToolDuration, "recordToolDuration");
68
+ function recordSkillLoad({
69
+ agentName,
70
+ skill,
71
+ errorType,
72
+ config
73
+ }) {
74
+ var _a;
75
+ if (!isExperimentalFeatureEnabled(config, "skills")) {
76
+ return;
77
+ }
78
+ const attributes = {
79
+ [GenAiAttr.AGENT_NAME]: agentName,
80
+ [GenAiAttr.SKILL_NAME]: (_a = skill == null ? void 0 : skill.frontmatter.name) != null ? _a : HALLUCINATED,
81
+ ...errorType === void 0 ? {} : { [ERROR_TYPE_ATTR]: errorType }
82
+ };
83
+ getToolInstruments().skillLoads.add(1, attributes);
84
+ }
85
+ __name(recordSkillLoad, "recordSkillLoad");
86
+ function hasSkillScript(skill, scriptPath) {
87
+ var _a;
88
+ const scripts = (_a = skill == null ? void 0 : skill.resources) == null ? void 0 : _a.scripts;
89
+ if (!scripts) {
90
+ return false;
91
+ }
92
+ const relativePath = scriptPath.startsWith("scripts/") ? scriptPath.slice("scripts/".length) : scriptPath;
93
+ return Object.prototype.hasOwnProperty.call(scripts, relativePath) || Object.prototype.hasOwnProperty.call(scripts, scriptPath);
94
+ }
95
+ __name(hasSkillScript, "hasSkillScript");
96
+ function recordSkillScriptExecution({
97
+ agentName,
98
+ skill,
99
+ scriptPath,
100
+ config
101
+ }) {
102
+ var _a;
103
+ if (!isExperimentalFeatureEnabled(config, "skills")) {
104
+ return;
105
+ }
106
+ const attributes = {
107
+ [GenAiAttr.AGENT_NAME]: agentName,
108
+ [GenAiAttr.SKILL_NAME]: (_a = skill == null ? void 0 : skill.frontmatter.name) != null ? _a : HALLUCINATED,
109
+ [GenAiAttr.SKILL_RESOURCE_NAME]: hasSkillScript(skill, scriptPath) ? scriptPath : HALLUCINATED
110
+ };
111
+ getToolInstruments().skillScriptExecutions.add(1, attributes);
112
+ }
113
+ __name(recordSkillScriptExecution, "recordSkillScriptExecution");
114
+ export {
115
+ TOOL_DURATION_BUCKETS,
116
+ recordSkillLoad,
117
+ recordSkillScriptExecution,
118
+ recordToolDuration
119
+ };
@@ -0,0 +1,112 @@
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 { AdkAttr, ERROR_TYPE_ATTR, GenAiAttr } from "../common/attributes.js";
11
+ import {
12
+ isExperimentalFeatureEnabled
13
+ } from "../common/config.js";
14
+ import {
15
+ cachedInstruments,
16
+ CALL_COUNT_BUCKETS,
17
+ createHistogram,
18
+ createTokenHistograms,
19
+ recordTokenHistograms
20
+ } from "./meters.js";
21
+ const PER_WORKFLOW = "one workflow invocation, across every agent that ran in it";
22
+ const getWorkflowInstruments = cachedInstruments(
23
+ (meter) => ({
24
+ duration: createHistogram({
25
+ meter,
26
+ name: "gen_ai.invoke_workflow.duration",
27
+ unit: "s",
28
+ description: "Duration of workflow invocations."
29
+ }),
30
+ inferenceCalls: createHistogram({
31
+ meter,
32
+ name: "adk.experimental.invoke_workflow.inference_calls",
33
+ unit: "1",
34
+ description: `Number of inference (model) calls over ${PER_WORKFLOW}.`,
35
+ buckets: CALL_COUNT_BUCKETS
36
+ }),
37
+ toolCalls: createHistogram({
38
+ meter,
39
+ name: "adk.experimental.invoke_workflow.tool_calls",
40
+ unit: "1",
41
+ description: `Number of tool calls over ${PER_WORKFLOW}. Includes the \`transfer_to_agent\` calls that route between them.`,
42
+ buckets: CALL_COUNT_BUCKETS
43
+ }),
44
+ skillLoads: createHistogram({
45
+ meter,
46
+ name: "adk.experimental.invoke_workflow.skill.loads",
47
+ unit: "1",
48
+ description: `Number of skill loads over ${PER_WORKFLOW}.`,
49
+ buckets: CALL_COUNT_BUCKETS
50
+ }),
51
+ compactions: createHistogram({
52
+ meter,
53
+ name: "adk.experimental.invoke_workflow.compactions",
54
+ unit: "1",
55
+ description: `Number of conversation compactions over ${PER_WORKFLOW}. Counts every summary produced, including one the runner then discards because a newer turn changed the session meanwhile. Recorded whether or not the workflow compacted, so the share of turns that do is readable off the unnested datapoints.`,
56
+ buckets: CALL_COUNT_BUCKETS
57
+ }),
58
+ tokens: createTokenHistograms(
59
+ meter,
60
+ "adk.experimental.invoke_workflow",
61
+ PER_WORKFLOW
62
+ )
63
+ })
64
+ );
65
+ function recordWorkflowDuration({
66
+ workflowName,
67
+ durationSeconds,
68
+ nested,
69
+ errorType
70
+ }) {
71
+ const attributes = {
72
+ [GenAiAttr.OPERATION_NAME]: "invoke_workflow",
73
+ ...nested ? { [GenAiAttr.WORKFLOW_NESTED]: true } : {},
74
+ ...errorType === void 0 ? {} : { [ERROR_TYPE_ATTR]: errorType },
75
+ ...workflowName ? { [GenAiAttr.WORKFLOW_NAME]: workflowName } : {}
76
+ };
77
+ getWorkflowInstruments().duration.record(durationSeconds, attributes);
78
+ }
79
+ __name(recordWorkflowDuration, "recordWorkflowDuration");
80
+ function recordWorkflowTotals({
81
+ rootAgentName,
82
+ workflowName,
83
+ nested,
84
+ totals,
85
+ config
86
+ }) {
87
+ if (!isExperimentalFeatureEnabled(config, "workflow")) {
88
+ return;
89
+ }
90
+ const instruments = getWorkflowInstruments();
91
+ const attributes = {
92
+ [AdkAttr.EXPERIMENTAL_ROOT_AGENT_NAME]: rootAgentName,
93
+ ...workflowName ? { [GenAiAttr.WORKFLOW_NAME]: workflowName } : {},
94
+ ...nested ? { [GenAiAttr.WORKFLOW_NESTED]: true } : {}
95
+ };
96
+ if (totals.tokens !== void 0 && isExperimentalFeatureEnabled(config, "token_usage")) {
97
+ recordTokenHistograms(instruments.tokens, totals.tokens, attributes);
98
+ }
99
+ instruments.inferenceCalls.record(totals.inferenceCalls, attributes);
100
+ instruments.toolCalls.record(totals.toolCalls, attributes);
101
+ if (isExperimentalFeatureEnabled(config, "skills")) {
102
+ instruments.skillLoads.record(totals.skillLoads, attributes);
103
+ }
104
+ if (isExperimentalFeatureEnabled(config, "compaction")) {
105
+ instruments.compactions.record(totals.compactions, attributes);
106
+ }
107
+ }
108
+ __name(recordWorkflowTotals, "recordWorkflowTotals");
109
+ export {
110
+ recordWorkflowDuration,
111
+ recordWorkflowTotals
112
+ };
@@ -0,0 +1,25 @@
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 { GenAiAttr } from "../common/attributes.js";
11
+ function buildAgentInvocationAttributes({
12
+ agent,
13
+ sessionId
14
+ }) {
15
+ return {
16
+ [GenAiAttr.OPERATION_NAME]: "invoke_agent",
17
+ [GenAiAttr.AGENT_DESCRIPTION]: agent.description,
18
+ [GenAiAttr.AGENT_NAME]: agent.name,
19
+ ...sessionId === void 0 ? {} : { [GenAiAttr.CONVERSATION_ID]: sessionId }
20
+ };
21
+ }
22
+ __name(buildAgentInvocationAttributes, "buildAgentInvocationAttributes");
23
+ export {
24
+ buildAgentInvocationAttributes
25
+ };
@@ -0,0 +1,50 @@
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 { isCompactedEvent } from "../../../../events/compacted_event.js";
11
+ import { toSnakeCaseName } from "../../../../utils/case_utils.js";
12
+ import { GenAiAttr } from "../common/attributes.js";
13
+ import { guessGeminiSystemName } from "../common/provider_name.js";
14
+ import { getTracer } from "./tracer.js";
15
+ function startCompactionSpan({
16
+ sessionId,
17
+ trigger
18
+ }) {
19
+ const triggerName = toSnakeCaseName(trigger);
20
+ return getTracer().startSpan(`compact_events ${triggerName}`, {
21
+ attributes: {
22
+ [GenAiAttr.SYSTEM]: guessGeminiSystemName(),
23
+ [GenAiAttr.OPERATION_NAME]: "compact_events",
24
+ [GenAiAttr.CONVERSATION_ID]: sessionId,
25
+ [GenAiAttr.COMPACTION_TRIGGER]: triggerName
26
+ }
27
+ });
28
+ }
29
+ __name(startCompactionSpan, "startCompactionSpan");
30
+ function buildCompactionResultAttributes(eventsBefore, eventsAfter) {
31
+ const before = new Set(eventsBefore);
32
+ const compactedEvent = eventsAfter.filter((event) => !before.has(event)).find(isCompactedEvent);
33
+ if (!compactedEvent) {
34
+ return {};
35
+ }
36
+ const { startTime, endTime } = compactedEvent;
37
+ return {
38
+ [GenAiAttr.COMPACTION_EVENT_COUNT]: eventsBefore.filter(
39
+ (event) => event.timestamp >= startTime && event.timestamp <= endTime
40
+ ).length,
41
+ [GenAiAttr.COMPACTION_RESULT_EVENT_ID]: compactedEvent.id,
42
+ [GenAiAttr.COMPACTION_START_TIMESTAMP]: startTime,
43
+ [GenAiAttr.COMPACTION_END_TIMESTAMP]: endTime
44
+ };
45
+ }
46
+ __name(buildCompactionResultAttributes, "buildCompactionResultAttributes");
47
+ export {
48
+ buildCompactionResultAttributes,
49
+ startCompactionSpan
50
+ };