@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,142 @@
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 { resolveErrorType } from "./error.js";
11
+ const MAX_BODY_LENGTH = 1e3;
12
+ const TRUNCATED_SUFFIX = "... [truncated]";
13
+ const SSE_BODY = "<SSE stream>";
14
+ const REDACTED_HEADER_VALUE = "<redacted>";
15
+ const REDACTED_QUERY_VALUE = "REDACTED";
16
+ const CREDENTIAL_HEADERS = /* @__PURE__ */ new Set([
17
+ "api-key",
18
+ "authorization",
19
+ "cookie",
20
+ "proxy-authorization",
21
+ "set-cookie",
22
+ "x-api-key",
23
+ "x-goog-api-key"
24
+ ]);
25
+ function captureHttpExchange({
26
+ url,
27
+ init,
28
+ response,
29
+ captureBodies
30
+ }) {
31
+ var _a, _b;
32
+ const requestUrl = new URL(url);
33
+ const isEventStream = ((_a = response.headers.get("content-type")) != null ? _a : "").toLowerCase().includes("text/event-stream");
34
+ const responseCopy = captureBodies && !isEventStream ? response.clone() : void 0;
35
+ const requestBody = captureBodies ? readRequestBody(init == null ? void 0 : init.body) : void 0;
36
+ const exchange = {
37
+ method: ((_b = init == null ? void 0 : init.method) != null ? _b : "GET").toUpperCase(),
38
+ url: sanitizeUrl(requestUrl),
39
+ serverAddress: requestUrl.hostname.replace(/^\[(.*)\]$/, "$1"),
40
+ ...requestUrl.port ? { serverPort: Number(requestUrl.port) } : {},
41
+ querySessionId: firstNonEmpty(
42
+ requestUrl.searchParams.getAll("sessionId"),
43
+ requestUrl.searchParams.getAll("session_id")
44
+ ),
45
+ statusCode: response.status,
46
+ requestHeaders: redactHeaders(new Headers(init == null ? void 0 : init.headers)),
47
+ responseHeaders: redactHeaders(response.headers),
48
+ ...requestBody === void 0 ? {} : { requestBody }
49
+ };
50
+ return withResponseBody(exchange, {
51
+ captureBodies,
52
+ isEventStream,
53
+ responseCopy
54
+ });
55
+ }
56
+ __name(captureHttpExchange, "captureHttpExchange");
57
+ async function withResponseBody(exchange, {
58
+ captureBodies,
59
+ isEventStream,
60
+ responseCopy
61
+ }) {
62
+ if (isEventStream) {
63
+ return { ...exchange, responseBody: SSE_BODY };
64
+ }
65
+ if (!captureBodies || responseCopy === void 0) {
66
+ return exchange;
67
+ }
68
+ try {
69
+ return { ...exchange, responseBody: truncate(await responseCopy.text()) };
70
+ } catch (error) {
71
+ return {
72
+ ...exchange,
73
+ responseBody: `<failed to read body: ${resolveErrorType(error)}>`
74
+ };
75
+ }
76
+ }
77
+ __name(withResponseBody, "withResponseBody");
78
+ function readRequestBody(body) {
79
+ if (typeof body === "string") {
80
+ return truncate(body);
81
+ }
82
+ if (body instanceof URLSearchParams) {
83
+ return truncate(body.toString());
84
+ }
85
+ if (body instanceof ArrayBuffer || ArrayBuffer.isView(body)) {
86
+ return truncate(new TextDecoder().decode(body));
87
+ }
88
+ return void 0;
89
+ }
90
+ __name(readRequestBody, "readRequestBody");
91
+ function truncate(text) {
92
+ if (text.length <= MAX_BODY_LENGTH) {
93
+ return text;
94
+ }
95
+ let end = 0;
96
+ let count = 0;
97
+ for (const character of text) {
98
+ if (count === MAX_BODY_LENGTH) {
99
+ return text.slice(0, end) + TRUNCATED_SUFFIX;
100
+ }
101
+ end += character.length;
102
+ count++;
103
+ }
104
+ return text;
105
+ }
106
+ __name(truncate, "truncate");
107
+ function sanitizeUrl(url) {
108
+ const sanitized = new URL(url);
109
+ sanitized.username = "";
110
+ sanitized.password = "";
111
+ if (sanitized.search) {
112
+ const keys = /* @__PURE__ */ new Set();
113
+ for (const [key, value] of sanitized.searchParams) {
114
+ if (value) {
115
+ keys.add(key);
116
+ }
117
+ }
118
+ sanitized.search = new URLSearchParams(
119
+ Array.from(keys, (key) => [key, REDACTED_QUERY_VALUE])
120
+ ).toString();
121
+ }
122
+ return sanitized.href;
123
+ }
124
+ __name(sanitizeUrl, "sanitizeUrl");
125
+ function redactHeaders(headers) {
126
+ const redacted = /* @__PURE__ */ new Map();
127
+ headers.forEach((value, name) => {
128
+ redacted.set(
129
+ name,
130
+ CREDENTIAL_HEADERS.has(name) ? REDACTED_HEADER_VALUE : value
131
+ );
132
+ });
133
+ return redacted;
134
+ }
135
+ __name(redactHeaders, "redactHeaders");
136
+ function firstNonEmpty(...candidates) {
137
+ return candidates.flat().find((value) => value !== "");
138
+ }
139
+ __name(firstNonEmpty, "firstNonEmpty");
140
+ export {
141
+ captureHttpExchange
142
+ };
@@ -0,0 +1,59 @@
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 { isEnterpriseModeEnabled } from "../../../../utils/env_aware_utils.js";
11
+ import { extractModelName, isGeminiModel } from "../../../../utils/model_name.js";
12
+ const ANTHROPIC_MODEL_PATTERN = /^claude[-.]/i;
13
+ const RESOURCE_COLLECTION_SEGMENTS = /* @__PURE__ */ new Set([
14
+ "endpoints",
15
+ "locations",
16
+ "models",
17
+ "projects",
18
+ "publishers",
19
+ "tunedmodels"
20
+ ]);
21
+ const PROVIDER_NAME_BY_SYSTEM_NAME = {
22
+ gemini: "gcp.gemini",
23
+ vertex_ai: "gcp.vertex_ai"
24
+ };
25
+ function guessGeminiSystemName() {
26
+ return isEnterpriseModeEnabled() ? "vertex_ai" : "gemini";
27
+ }
28
+ __name(guessGeminiSystemName, "guessGeminiSystemName");
29
+ function systemNameFromModel(model) {
30
+ if (!model) {
31
+ return void 0;
32
+ }
33
+ if (isGeminiModel(model)) {
34
+ return guessGeminiSystemName();
35
+ }
36
+ const modelName = extractModelName(model);
37
+ if (ANTHROPIC_MODEL_PATTERN.test(modelName)) {
38
+ return "anthropic";
39
+ }
40
+ const separator = modelName.indexOf("/");
41
+ if (separator > 0) {
42
+ const provider = modelName.slice(0, separator).toLowerCase();
43
+ if (!RESOURCE_COLLECTION_SEGMENTS.has(provider)) {
44
+ return provider;
45
+ }
46
+ }
47
+ return void 0;
48
+ }
49
+ __name(systemNameFromModel, "systemNameFromModel");
50
+ function resolveProviderName(model) {
51
+ var _a, _b;
52
+ const systemName = (_a = systemNameFromModel(model)) != null ? _a : guessGeminiSystemName();
53
+ return (_b = PROVIDER_NAME_BY_SYSTEM_NAME[systemName]) != null ? _b : systemName;
54
+ }
55
+ __name(resolveProviderName, "resolveProviderName");
56
+ export {
57
+ guessGeminiSystemName,
58
+ resolveProviderName
59
+ };
@@ -0,0 +1,121 @@
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 { REQUEST_CREDENTIAL_FUNCTION_CALL_NAME } from "../../../../agents/framework_function_calls.js";
11
+ import { AuthCredentialTypes } from "../../../../auth/auth_credential.js";
12
+ const CREDENTIAL_SECRET_KEYS = /* @__PURE__ */ new Set([
13
+ "password",
14
+ "token",
15
+ "additionalHeaders",
16
+ "additional_headers",
17
+ "clientSecret",
18
+ "client_secret",
19
+ "authResponseUri",
20
+ "auth_response_uri",
21
+ "authCode",
22
+ "auth_code",
23
+ "accessToken",
24
+ "access_token",
25
+ "refreshToken",
26
+ "refresh_token",
27
+ "idToken",
28
+ "id_token",
29
+ "codeVerifier",
30
+ "code_verifier",
31
+ "privateKeyId",
32
+ "private_key_id",
33
+ "privateKey",
34
+ "private_key",
35
+ "apiKey",
36
+ "api_key"
37
+ ]);
38
+ const CREDENTIAL_CARRIER_KEYS = /* @__PURE__ */ new Set([
39
+ "requestedAuthConfigs",
40
+ "requested_auth_configs",
41
+ "rawAuthCredential",
42
+ "raw_auth_credential",
43
+ "exchangedAuthCredential",
44
+ "exchanged_auth_credential"
45
+ ]);
46
+ const AUTH_TYPE_VALUES = new Set(
47
+ Object.entries(AuthCredentialTypes).flatMap(([name, value]) => [
48
+ value,
49
+ name,
50
+ name.toLowerCase()
51
+ ])
52
+ );
53
+ function isRecord(value) {
54
+ return typeof value === "object" && value !== null && !Array.isArray(value);
55
+ }
56
+ __name(isRecord, "isRecord");
57
+ function redactAuthConfigSecrets(value) {
58
+ if (Array.isArray(value)) {
59
+ return value.map(redactAuthConfigSecrets);
60
+ }
61
+ if (!isRecord(value)) {
62
+ return value;
63
+ }
64
+ return Object.fromEntries(
65
+ Object.entries(value).filter(([key]) => !CREDENTIAL_SECRET_KEYS.has(key)).map(([key, item]) => [key, redactAuthConfigSecrets(item)])
66
+ );
67
+ }
68
+ __name(redactAuthConfigSecrets, "redactAuthConfigSecrets");
69
+ function isAuthCredential(value) {
70
+ return ["authType", "auth_type"].some((key) => {
71
+ const authType = value[key];
72
+ return typeof authType === "string" && AUTH_TYPE_VALUES.has(authType);
73
+ });
74
+ }
75
+ __name(isAuthCredential, "isAuthCredential");
76
+ function redactCredentialRequest(value) {
77
+ return Object.fromEntries(
78
+ Object.entries(value).map(([key, item]) => {
79
+ if (key === "args" && isRecord(item)) {
80
+ return [
81
+ key,
82
+ Object.fromEntries(
83
+ Object.entries(item).map(([argKey, arg]) => [
84
+ argKey,
85
+ argKey === "authConfig" || argKey === "auth_config" ? redactAuthConfigSecrets(arg) : arg
86
+ ])
87
+ )
88
+ ];
89
+ }
90
+ if (key === "response") {
91
+ return [key, redactAuthConfigSecrets(item)];
92
+ }
93
+ return [key, redactCredentialSecrets(item)];
94
+ })
95
+ );
96
+ }
97
+ __name(redactCredentialRequest, "redactCredentialRequest");
98
+ function redactCredentialSecrets(value) {
99
+ if (Array.isArray(value)) {
100
+ return value.map(redactCredentialSecrets);
101
+ }
102
+ if (!isRecord(value)) {
103
+ return value;
104
+ }
105
+ if (isAuthCredential(value)) {
106
+ return redactAuthConfigSecrets(value);
107
+ }
108
+ if (value["name"] === REQUEST_CREDENTIAL_FUNCTION_CALL_NAME) {
109
+ return redactCredentialRequest(value);
110
+ }
111
+ return Object.fromEntries(
112
+ Object.entries(value).map(([key, item]) => [
113
+ key,
114
+ CREDENTIAL_CARRIER_KEYS.has(key) ? redactAuthConfigSecrets(item) : redactCredentialSecrets(item)
115
+ ])
116
+ );
117
+ }
118
+ __name(redactCredentialSecrets, "redactCredentialSecrets");
119
+ export {
120
+ redactCredentialSecrets
121
+ };
@@ -0,0 +1,30 @@
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 { getEnvVar } from "../../../../utils/env_aware_utils.js";
11
+ function safeJsonSerialize(obj) {
12
+ try {
13
+ return JSON.stringify(
14
+ obj,
15
+ (_key, value) => typeof value === "bigint" ? "<not serializable>" : value
16
+ );
17
+ } catch (_e) {
18
+ return "<not serializable>";
19
+ }
20
+ }
21
+ __name(safeJsonSerialize, "safeJsonSerialize");
22
+ function shouldAddRequestResponseToSpans() {
23
+ const envValue = getEnvVar("ADK_CAPTURE_MESSAGE_CONTENT_IN_SPANS") || "true";
24
+ return envValue === "true" || envValue === "1";
25
+ }
26
+ __name(shouldAddRequestResponseToSpans, "shouldAddRequestResponseToSpans");
27
+ export {
28
+ safeJsonSerialize,
29
+ shouldAddRequestResponseToSpans
30
+ };
@@ -0,0 +1,85 @@
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 "./attributes.js";
11
+ const INPUT_TOKENS_MEANING = "Input (prompt) tokens, summing the prompt itself and the results of server-side tool calls. Prompt tokens served from a cache are part of the prompt count, so they are included here too.";
12
+ const OUTPUT_TOKENS_MEANING = "Output (completion) tokens, summing candidate and reasoning tokens. The tokens a model spends emitting a tool call are candidate tokens, so they count here.";
13
+ const TOTAL_TOKENS_MEANING = "Input plus output tokens, derived from those two rather than taken from the model-reported total.";
14
+ const CACHE_READ_INPUT_TOKENS_MEANING = "Input tokens served from a provider-managed cache.";
15
+ const REASONING_OUTPUT_TOKENS_MEANING = "Output tokens spent on reasoning (chain-of-thought / extended thinking).";
16
+ const TOOL_INPUT_TOKENS_MEANING = "Input tokens from server-side tool results the model fed back to itself within one request, such as code execution or search grounding. Zero for client-side function tools, whose responses arrive as ordinary content on the next request and bill as plain prompt tokens.";
17
+ function sumOrUndefined(a, b) {
18
+ return a === void 0 && b === void 0 ? void 0 : (a != null ? a : 0) + (b != null ? b : 0);
19
+ }
20
+ __name(sumOrUndefined, "sumOrUndefined");
21
+ const _TokenUsage = class _TokenUsage {
22
+ constructor(usage) {
23
+ if (!usage) {
24
+ return;
25
+ }
26
+ this.input = sumOrUndefined(
27
+ usage.promptTokenCount,
28
+ usage.toolUsePromptTokenCount
29
+ );
30
+ this.output = sumOrUndefined(
31
+ usage.candidatesTokenCount,
32
+ usage.thoughtsTokenCount
33
+ );
34
+ this.cacheRead = usage.cachedContentTokenCount;
35
+ this.reasoning = usage.thoughtsTokenCount;
36
+ this.toolInput = usage.toolUsePromptTokenCount;
37
+ }
38
+ /** Folds another call's usage into these totals, bucket by bucket. */
39
+ add(other) {
40
+ this.input = sumOrUndefined(this.input, other.input);
41
+ this.output = sumOrUndefined(this.output, other.output);
42
+ this.cacheRead = sumOrUndefined(this.cacheRead, other.cacheRead);
43
+ this.reasoning = sumOrUndefined(this.reasoning, other.reasoning);
44
+ this.toolInput = sumOrUndefined(this.toolInput, other.toolInput);
45
+ }
46
+ /**
47
+ * Input plus output tokens, derived from those two rather than taken from
48
+ * the model-reported total.
49
+ */
50
+ totalTokenUsage() {
51
+ var _a, _b;
52
+ return ((_a = this.input) != null ? _a : 0) + ((_b = this.output) != null ? _b : 0);
53
+ }
54
+ /**
55
+ * Returns the GenAI token usage attributes for the reported buckets,
56
+ * omitting `undefined` buckets and preserving `0`.
57
+ */
58
+ asAttributes() {
59
+ const attributes = {};
60
+ if (this.input !== void 0) {
61
+ attributes[GenAiAttr.USAGE_INPUT_TOKENS] = this.input;
62
+ }
63
+ if (this.output !== void 0) {
64
+ attributes[GenAiAttr.USAGE_OUTPUT_TOKENS] = this.output;
65
+ }
66
+ if (this.cacheRead !== void 0) {
67
+ attributes[GenAiAttr.USAGE_CACHE_READ_INPUT_TOKENS] = this.cacheRead;
68
+ }
69
+ if (this.reasoning !== void 0) {
70
+ attributes[GenAiAttr.USAGE_REASONING_OUTPUT_TOKENS] = this.reasoning;
71
+ }
72
+ return attributes;
73
+ }
74
+ };
75
+ __name(_TokenUsage, "TokenUsage");
76
+ let TokenUsage = _TokenUsage;
77
+ export {
78
+ CACHE_READ_INPUT_TOKENS_MEANING,
79
+ INPUT_TOKENS_MEANING,
80
+ OUTPUT_TOKENS_MEANING,
81
+ REASONING_OUTPUT_TOKENS_MEANING,
82
+ TOOL_INPUT_TOKENS_MEANING,
83
+ TOTAL_TOKENS_MEANING,
84
+ TokenUsage
85
+ };
@@ -0,0 +1,23 @@
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 { context, trace } from "@opentelemetry/api";
11
+ import { getTelemetryLogger } from "./logger.js";
12
+ const INFERENCE_OPERATION_DETAILS_EVENT = "gen_ai.client.inference.operation.details";
13
+ function emitInferenceOperationDetails(span, attributes) {
14
+ getTelemetryLogger().emit({
15
+ eventName: INFERENCE_OPERATION_DETAILS_EVENT,
16
+ attributes,
17
+ context: trace.setSpan(context.active(), span)
18
+ });
19
+ }
20
+ __name(emitInferenceOperationDetails, "emitInferenceOperationDetails");
21
+ export {
22
+ emitInferenceOperationDetails
23
+ };
@@ -0,0 +1,19 @@
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 { logs } from "@opentelemetry/api-logs";
11
+ import { version } from "../../../../version.js";
12
+ import { GEN_AI_SYSTEM_VALUE, SCHEMA_URL } from "../common/attributes.js";
13
+ function getTelemetryLogger() {
14
+ return logs.getLogger(GEN_AI_SYSTEM_VALUE, version, { schemaUrl: SCHEMA_URL });
15
+ }
16
+ __name(getTelemetryLogger, "getTelemetryLogger");
17
+ export {
18
+ getTelemetryLogger
19
+ };
@@ -0,0 +1,113 @@
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 { SeverityNumber } from "@opentelemetry/api-logs";
11
+ import { getEnvVar } from "../../../../utils/env_aware_utils.js";
12
+ import { logger } from "../../../../utils/logger.js";
13
+ import { ERROR_TYPE_ATTR, HttpAttr, McpAttr } from "../common/attributes.js";
14
+ import { isTruthyEnv } from "../common/config.js";
15
+ import { captureHttpExchange } from "../common/http_exchange.js";
16
+ import { getTelemetryLogger } from "./logger.js";
17
+ const MCP_HTTP_RESPONSE_END_EVENT = "adk.experimental.mcp.http.client.response.end";
18
+ const CAPTURE_BODIES_ENV = "ADK_CAPTURE_MCP_HTTP_BODIES";
19
+ const CAPTURE_REQUEST_HEADERS_ENV = "OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_CLIENT_REQUEST";
20
+ const CAPTURE_RESPONSE_HEADERS_ENV = "OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_CLIENT_RESPONSE";
21
+ const ELIDED_BODY = "<elided>";
22
+ function readHeaderPatterns(envName) {
23
+ var _a;
24
+ const patterns = [];
25
+ for (const entry of ((_a = getEnvVar(envName)) != null ? _a : "").split(",")) {
26
+ const pattern = entry.trim();
27
+ if (!pattern) {
28
+ continue;
29
+ }
30
+ try {
31
+ patterns.push(new RegExp(`^(?:${pattern})$`, "i"));
32
+ } catch {
33
+ logger.warn(`Ignoring malformed header pattern in ${envName}.`);
34
+ }
35
+ }
36
+ return patterns;
37
+ }
38
+ __name(readHeaderPatterns, "readHeaderPatterns");
39
+ function readMcpHttpExchangeSettings() {
40
+ return {
41
+ captureBodies: isTruthyEnv(CAPTURE_BODIES_ENV),
42
+ requestHeaderPatterns: readHeaderPatterns(CAPTURE_REQUEST_HEADERS_ENV),
43
+ responseHeaderPatterns: readHeaderPatterns(CAPTURE_RESPONSE_HEADERS_ENV)
44
+ };
45
+ }
46
+ __name(readMcpHttpExchangeSettings, "readMcpHttpExchangeSettings");
47
+ function headerAttributes(headers, patterns, prefix) {
48
+ const attributes = {};
49
+ for (const [name, value] of headers) {
50
+ if (patterns.some((pattern) => pattern.test(name))) {
51
+ attributes[`${prefix}${name}`] = [value];
52
+ }
53
+ }
54
+ return attributes;
55
+ }
56
+ __name(headerAttributes, "headerAttributes");
57
+ async function reportMcpHttpExchange({
58
+ url,
59
+ init,
60
+ response,
61
+ settings,
62
+ context
63
+ }) {
64
+ const exchange = await captureHttpExchange({
65
+ url,
66
+ init,
67
+ response,
68
+ captureBodies: settings.captureBodies
69
+ });
70
+ const sessionId = exchange.querySessionId || exchange.responseHeaders.get("mcp-session-id") || exchange.requestHeaders.get("mcp-session-id");
71
+ const protocolVersion = exchange.responseHeaders.get("mcp-protocol-version") || exchange.requestHeaders.get("mcp-protocol-version");
72
+ const attributes = {
73
+ [HttpAttr.REQUEST_METHOD]: exchange.method,
74
+ [HttpAttr.URL_FULL]: exchange.url,
75
+ [HttpAttr.RESPONSE_STATUS_CODE]: exchange.statusCode,
76
+ ...exchange.serverAddress ? { [HttpAttr.SERVER_ADDRESS]: exchange.serverAddress } : {},
77
+ ...exchange.serverPort === void 0 ? {} : { [HttpAttr.SERVER_PORT]: exchange.serverPort },
78
+ ...sessionId ? { [McpAttr.SESSION_ID]: sessionId } : {},
79
+ ...protocolVersion ? { [McpAttr.PROTOCOL_VERSION]: protocolVersion } : {},
80
+ // HTTP semantic conventions name a failed response by its status code.
81
+ ...exchange.statusCode >= 400 ? { [ERROR_TYPE_ATTR]: String(exchange.statusCode) } : {},
82
+ ...headerAttributes(
83
+ exchange.requestHeaders,
84
+ settings.requestHeaderPatterns,
85
+ HttpAttr.REQUEST_HEADER_PREFIX
86
+ ),
87
+ ...headerAttributes(
88
+ exchange.responseHeaders,
89
+ settings.responseHeaderPatterns,
90
+ HttpAttr.RESPONSE_HEADER_PREFIX
91
+ )
92
+ };
93
+ const body = settings.captureBodies ? {
94
+ ...exchange.requestBody === void 0 ? {} : { [HttpAttr.REQUEST_BODY_CONTENT]: exchange.requestBody },
95
+ ...exchange.responseBody === void 0 ? {} : { [HttpAttr.RESPONSE_BODY_CONTENT]: exchange.responseBody }
96
+ } : {
97
+ [HttpAttr.REQUEST_BODY_CONTENT]: ELIDED_BODY,
98
+ [HttpAttr.RESPONSE_BODY_CONTENT]: ELIDED_BODY
99
+ };
100
+ getTelemetryLogger().emit({
101
+ eventName: MCP_HTTP_RESPONSE_END_EVENT,
102
+ severityNumber: SeverityNumber.DEBUG,
103
+ severityText: "DEBUG",
104
+ body,
105
+ attributes,
106
+ context
107
+ });
108
+ }
109
+ __name(reportMcpHttpExchange, "reportMcpHttpExchange");
110
+ export {
111
+ readMcpHttpExchangeSettings,
112
+ reportMcpHttpExchange
113
+ };