@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
@@ -10,9 +10,15 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
10
10
  import {
11
11
  AGENT_CARD_PATH
12
12
  } from "@a2a-js/sdk";
13
- import { ClientFactory } from "@a2a-js/sdk/client";
13
+ import {
14
+ ClientFactory,
15
+ ClientFactoryOptions,
16
+ JsonRpcTransportFactory,
17
+ RestTransportFactory
18
+ } from "@a2a-js/sdk/client";
14
19
  import { BaseAgent } from "../agents/base_agent.js";
15
20
  import { createEvent } from "../events/event.js";
21
+ import { propagateTraceContext } from "../telemetry/api/instrumentation.js";
16
22
  import { randomUUID } from "../utils/env_aware_utils.js";
17
23
  import { logger } from "../utils/logger.js";
18
24
  import { MessageRole } from "./a2a_event.js";
@@ -26,6 +32,18 @@ import {
26
32
  import { resolveAgentCard } from "./agent_card.js";
27
33
  import { toAdkEvent } from "./event_converter_utils.js";
28
34
  import { getA2ASessionMetadata } from "./metadata_converter_utils.js";
35
+ function createTracePropagatingClientFactory() {
36
+ const fetchImpl = propagateTraceContext();
37
+ return new ClientFactory(
38
+ ClientFactoryOptions.createFrom(ClientFactoryOptions.default, {
39
+ transports: [
40
+ new JsonRpcTransportFactory({ fetchImpl }),
41
+ new RestTransportFactory({ fetchImpl })
42
+ ]
43
+ })
44
+ );
45
+ }
46
+ __name(createTracePropagatingClientFactory, "createTracePropagatingClientFactory");
29
47
  const _RemoteA2AAgent = class _RemoteA2AAgent extends BaseAgent {
30
48
  constructor(a2aConfig) {
31
49
  super(a2aConfig);
@@ -36,6 +54,7 @@ const _RemoteA2AAgent = class _RemoteA2AAgent extends BaseAgent {
36
54
  }
37
55
  }
38
56
  async init() {
57
+ var _a;
39
58
  if (this.isInitialized) {
40
59
  return;
41
60
  }
@@ -48,7 +67,7 @@ const _RemoteA2AAgent = class _RemoteA2AAgent extends BaseAgent {
48
67
  this.a2aConfig.resolveAgentCardOptions
49
68
  );
50
69
  if (!this.client) {
51
- const factory = this.a2aConfig.clientFactory || new ClientFactory();
70
+ const factory = (_a = this.a2aConfig.clientFactory) != null ? _a : createTracePropagatingClientFactory();
52
71
  this.client = await factory.createFromAgentCard(this.card);
53
72
  }
54
73
  }
@@ -64,7 +83,8 @@ const _RemoteA2AAgent = class _RemoteA2AAgent extends BaseAgent {
64
83
  }
65
84
  const userFnCall = getUserFunctionCallAt(
66
85
  context.session,
67
- events.length - 1
86
+ events.length - 1,
87
+ this.name
68
88
  );
69
89
  let parts;
70
90
  let taskId = void 0;
@@ -14,7 +14,8 @@ import { camelCaseKeys } from "../utils/case_utils.js";
14
14
  import { logger } from "../utils/logger.js";
15
15
  import { AdkMetadataKeys } from "./metadata_converter_utils.js";
16
16
  import { toA2AParts } from "./part_converter_utils.js";
17
- function getUserFunctionCallAt(session, index) {
17
+ function getUserFunctionCallAt(session, index, agentName) {
18
+ var _a, _b;
18
19
  const events = session.events;
19
20
  if (index < 0 || index >= events.length) {
20
21
  return void 0;
@@ -23,13 +24,16 @@ function getUserFunctionCallAt(session, index) {
23
24
  if (candidate.author !== "user") {
24
25
  return void 0;
25
26
  }
26
- const fnCallId = getFunctionResponseCallId(candidate);
27
- if (!fnCallId) {
27
+ const fnCallIds = (_b = (_a = candidate.content) == null ? void 0 : _a.parts) == null ? void 0 : _b.map((part) => {
28
+ var _a2;
29
+ return (_a2 = part.functionResponse) == null ? void 0 : _a2.id;
30
+ }).filter((id) => !!id);
31
+ if (!(fnCallIds == null ? void 0 : fnCallIds.length)) {
28
32
  return void 0;
29
33
  }
30
34
  for (let i = index - 1; i >= 0; i--) {
31
35
  const request = events[i];
32
- if (!isFunctionCallEvent(request, fnCallId)) {
36
+ if (request.author !== agentName || !fnCallIds.some((callId) => isFunctionCallEvent(request, callId))) {
33
37
  continue;
34
38
  }
35
39
  const metadata = request.customMetadata || {};
@@ -10,14 +10,11 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
10
10
  import { DefaultAgentCardResolver } from "@a2a-js/sdk/client";
11
11
  import * as fs from "node:fs/promises";
12
12
  import { fileURLToPath } from "node:url";
13
- import {
14
- InvocationContext
15
- } from "../agents/invocation_context.js";
16
13
  import { isLlmAgent } from "../agents/llm_agent.js";
17
14
  import { isLoopAgent } from "../agents/loop_agent.js";
18
15
  import { isParallelAgent } from "../agents/parallel_agent.js";
19
- import { ReadonlyContext } from "../agents/readonly_context.js";
20
16
  import { isSequentialAgent } from "../agents/sequential_agent.js";
17
+ import { propagateTraceContext } from "../telemetry/api/instrumentation.js";
21
18
  import { isBaseTool } from "../tools/base_tool.js";
22
19
  import { isBaseToolset } from "../tools/base_toolset.js";
23
20
  import { logger } from "../utils/logger.js";
@@ -36,7 +33,7 @@ async function resolveAgentCard(agentCard, options = {}) {
36
33
  if (source.startsWith("http://") || source.startsWith("https://")) {
37
34
  await refuseLinkLocalHost(source);
38
35
  const resolver = new DefaultAgentCardResolver({
39
- fetchImpl: refuseRedirectFetch
36
+ fetchImpl: tracePropagatingRefuseRedirectFetch
40
37
  });
41
38
  const card = await resolver.resolve(source);
42
39
  validateCardRpcTargets(card, source, options);
@@ -76,6 +73,7 @@ async function refuseRedirectFetch(url, init) {
76
73
  return response;
77
74
  }
78
75
  __name(refuseRedirectFetch, "refuseRedirectFetch");
76
+ const tracePropagatingRefuseRedirectFetch = propagateTraceContext(refuseRedirectFetch);
79
77
  function parseCardUrl(source) {
80
78
  let url;
81
79
  try {
@@ -242,7 +240,7 @@ async function buildLLMAgentSkills(agent) {
242
240
  {
243
241
  id: agent.name,
244
242
  name: "model",
245
- description: await buildDescriptionFromInstructions(agent),
243
+ description: buildAgentDescription(agent),
246
244
  tags: ["llm"]
247
245
  }
248
246
  ];
@@ -311,7 +309,7 @@ function buildAgentDescription(agent) {
311
309
  if (agent.description) {
312
310
  descriptionParts.push(agent.description);
313
311
  }
314
- if (agent.subAgents.length > 0) {
312
+ if (!isLlmAgent(agent) && agent.subAgents.length > 0) {
315
313
  if (isLoopAgent(agent)) {
316
314
  descriptionParts.push(buildLoopAgentDescription(agent));
317
315
  } else if (isParallelAgent(agent)) {
@@ -389,82 +387,6 @@ function buildLoopAgentDescription(agent) {
389
387
  return `${descriptions.join(" ")} in a loop (max ${maxIterations} iterations).`;
390
388
  }
391
389
  __name(buildLoopAgentDescription, "buildLoopAgentDescription");
392
- async function buildDescriptionFromInstructions(agent) {
393
- const descriptionParts = [];
394
- if (agent.description) {
395
- descriptionParts.push(agent.description);
396
- }
397
- if (agent.instruction) {
398
- let instructionStr;
399
- if (typeof agent.instruction === "function") {
400
- const dummyContext = new ReadonlyContext(
401
- new InvocationContext({
402
- agent
403
- })
404
- );
405
- try {
406
- instructionStr = await agent.instruction(dummyContext);
407
- } catch (e) {
408
- logger.warn("Failed to resolve dynamic instruction for AgentCard", e);
409
- instructionStr = "";
410
- }
411
- } else {
412
- instructionStr = agent.instruction;
413
- }
414
- if (instructionStr) {
415
- descriptionParts.push(replacePronouns(instructionStr));
416
- }
417
- }
418
- const root = agent.rootAgent;
419
- if (isLlmAgent(root) && root.globalInstruction) {
420
- let globalInstructionStr;
421
- if (typeof root.globalInstruction === "function") {
422
- const dummyContext = new ReadonlyContext(
423
- new InvocationContext({
424
- agent
425
- })
426
- );
427
- try {
428
- globalInstructionStr = await root.globalInstruction(dummyContext);
429
- } catch (e) {
430
- logger.warn(
431
- "Failed to resolve dynamic global instruction for AgentCard",
432
- e
433
- );
434
- globalInstructionStr = "";
435
- }
436
- } else {
437
- globalInstructionStr = root.globalInstruction;
438
- }
439
- if (globalInstructionStr) {
440
- descriptionParts.push(replacePronouns(globalInstructionStr));
441
- }
442
- }
443
- if (descriptionParts.length > 0) {
444
- return descriptionParts.join(" ");
445
- } else {
446
- return getDefaultAgentDescription(agent);
447
- }
448
- }
449
- __name(buildDescriptionFromInstructions, "buildDescriptionFromInstructions");
450
- function replacePronouns(instruction) {
451
- const substitutions = [
452
- { original: "you were", target: "I was" },
453
- { original: "you are", target: "I am" },
454
- { original: "you're", target: "I am" },
455
- { original: "you've", target: "I have" },
456
- { original: "yours", target: "mine" },
457
- { original: "your", target: "my" },
458
- { original: "you", target: "I" }
459
- ];
460
- let result = instruction;
461
- for (const sub of substitutions) {
462
- const pattern = new RegExp(`\\b${sub.original}\\b`, "gi");
463
- result = result.replace(pattern, sub.target);
464
- }
465
- return result;
466
- }
467
- __name(replacePronouns, "replacePronouns");
468
390
  function getDefaultAgentDescription(agent) {
469
391
  if (isLoopAgent(agent)) {
470
392
  return "A loop workflow agent";
@@ -32,6 +32,7 @@ import { AGENT_CARD_PATH } from "@a2a-js/sdk";
32
32
  import { InMemoryTaskStore } from "@a2a-js/sdk/server";
33
33
  import { StreamingMode } from "../agents/run_config.js";
34
34
  import { InMemorySessionService } from "../sessions/in_memory_session_service.js";
35
+ import { runWithRemoteTraceContext } from "../telemetry/api/instrumentation.js";
35
36
  import { logger } from "../utils/logger.js";
36
37
  import { loadOptionalPeer } from "../utils/optional_peer.js";
37
38
  import {
@@ -52,6 +53,10 @@ async function loadExpressBindings() {
52
53
  return { express: expressModule.default, a2aExpress };
53
54
  }
54
55
  __name(loadExpressBindings, "loadExpressBindings");
56
+ function continueRemoteTrace(req, _res, next) {
57
+ runWithRemoteTraceContext(req.headers, () => next());
58
+ }
59
+ __name(continueRemoteTrace, "continueRemoteTrace");
55
60
  function resolveA2aUserBuilder(options, a2aExpress) {
56
61
  if (options.authentication) {
57
62
  return options.authentication;
@@ -113,6 +118,7 @@ async function toA2a(agent, options = {}) {
113
118
  );
114
119
  app.use(
115
120
  `${basePath}/rest`,
121
+ continueRemoteTrace,
116
122
  a2aExpress.restHandler({
117
123
  requestHandler,
118
124
  userBuilder
@@ -120,6 +126,7 @@ async function toA2a(agent, options = {}) {
120
126
  );
121
127
  app.use(
122
128
  `${basePath}/jsonrpc`,
129
+ continueRemoteTrace,
123
130
  a2aExpress.jsonRpcHandler({
124
131
  requestHandler,
125
132
  userBuilder
@@ -69,7 +69,12 @@ function messageToAdkEvent(msg, invocationId, agentName, branch) {
69
69
  return {
70
70
  ...createAdkEventFromMetadata(msg),
71
71
  invocationId,
72
- author: msg.role === MessageRole.USER ? MessageRole.USER : agentName,
72
+ // The role on a peer's message is the peer's own claim and must not decide
73
+ // authorship: letting `user` through here lets a remote agent post events
74
+ // that read as the local user's, which is a trust anchor elsewhere (tool
75
+ // confirmations are approved only from user-authored events). Attribute the
76
+ // event to the peer, the same way the task and status converters below do.
77
+ author: agentName,
73
78
  branch,
74
79
  content,
75
80
  turnComplete: true,
@@ -184,8 +189,10 @@ function createAdkEventFromMetadata(a2aEvent) {
184
189
  // (set it to a shared ancestor branch, or omit it) to leak its content
185
190
  // into an unrelated sibling agent's LLM context. Every caller of the
186
191
  // `*ToAdkEvent` functions in this file force-sets `branch` from its own
187
- // local `InvocationContext` instead, the same way `author` is handled.
188
- author: metadata[A2AMetadataKeys.AUTHOR],
192
+ // local `InvocationContext` instead, the same way `author` is handled:
193
+ // `author` is likewise never restored from peer metadata here, since every
194
+ // converter sets it from the local context after the spread, so reading it
195
+ // from metadata would be dead and read as if a peer could set the author.
189
196
  partial: metadata[A2AMetadataKeys.PARTIAL],
190
197
  errorCode: metadata[A2AMetadataKeys.ERROR_CODE],
191
198
  errorMessage: metadata[A2AMetadataKeys.ERROR_MESSAGE],