@paean-ai/adk 0.2.17 → 0.2.18

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 (253) hide show
  1. package/dist/cjs/index.js +11 -11
  2. package/dist/cjs/index.js.map +3 -3
  3. package/dist/esm/index.js +11 -11
  4. package/dist/esm/index.js.map +3 -3
  5. package/dist/web/index.js +1 -1
  6. package/dist/web/index.js.map +3 -3
  7. package/package.json +2 -2
  8. package/dist/cjs/agents/active_streaming_tool.js +0 -44
  9. package/dist/cjs/agents/base_agent.js +0 -245
  10. package/dist/cjs/agents/base_llm_processor.js +0 -44
  11. package/dist/cjs/agents/callback_context.js +0 -98
  12. package/dist/cjs/agents/content_processor_utils.js +0 -346
  13. package/dist/cjs/agents/functions.js +0 -424
  14. package/dist/cjs/agents/instructions.js +0 -110
  15. package/dist/cjs/agents/invocation_context.js +0 -107
  16. package/dist/cjs/agents/live_request_queue.js +0 -136
  17. package/dist/cjs/agents/llm_agent.js +0 -1247
  18. package/dist/cjs/agents/loop_agent.js +0 -68
  19. package/dist/cjs/agents/parallel_agent.js +0 -78
  20. package/dist/cjs/agents/readonly_context.js +0 -68
  21. package/dist/cjs/agents/run_config.js +0 -70
  22. package/dist/cjs/agents/sequential_agent.js +0 -84
  23. package/dist/cjs/agents/transcription_entry.js +0 -27
  24. package/dist/cjs/artifacts/base_artifact_service.js +0 -27
  25. package/dist/cjs/artifacts/gcs_artifact_service.js +0 -140
  26. package/dist/cjs/artifacts/in_memory_artifact_service.js +0 -119
  27. package/dist/cjs/auth/auth_credential.js +0 -46
  28. package/dist/cjs/auth/auth_handler.js +0 -92
  29. package/dist/cjs/auth/auth_schemes.js +0 -62
  30. package/dist/cjs/auth/auth_tool.js +0 -27
  31. package/dist/cjs/auth/credential_service/base_credential_service.js +0 -27
  32. package/dist/cjs/auth/credential_service/in_memory_credential_service.js +0 -63
  33. package/dist/cjs/auth/exchanger/base_credential_exchanger.js +0 -40
  34. package/dist/cjs/auth/exchanger/credential_exchanger_registry.js +0 -59
  35. package/dist/cjs/code_executors/base_code_executor.js +0 -76
  36. package/dist/cjs/code_executors/built_in_code_executor.js +0 -58
  37. package/dist/cjs/code_executors/code_execution_utils.js +0 -142
  38. package/dist/cjs/code_executors/code_executor_context.js +0 -198
  39. package/dist/cjs/common.js +0 -181
  40. package/dist/cjs/events/event.js +0 -119
  41. package/dist/cjs/events/event_actions.js +0 -83
  42. package/dist/cjs/examples/base_example_provider.js +0 -40
  43. package/dist/cjs/examples/example.js +0 -27
  44. package/dist/cjs/examples/example_util.js +0 -107
  45. package/dist/cjs/index_web.js +0 -33
  46. package/dist/cjs/memory/base_memory_service.js +0 -27
  47. package/dist/cjs/memory/in_memory_memory_service.js +0 -97
  48. package/dist/cjs/memory/memory_entry.js +0 -27
  49. package/dist/cjs/models/base_llm.js +0 -95
  50. package/dist/cjs/models/base_llm_connection.js +0 -27
  51. package/dist/cjs/models/gemini_llm_connection.js +0 -132
  52. package/dist/cjs/models/google_llm.js +0 -559
  53. package/dist/cjs/models/llm_request.js +0 -82
  54. package/dist/cjs/models/llm_response.js +0 -71
  55. package/dist/cjs/models/registry.js +0 -121
  56. package/dist/cjs/plugins/base_plugin.js +0 -236
  57. package/dist/cjs/plugins/logging_plugin.js +0 -222
  58. package/dist/cjs/plugins/plugin_manager.js +0 -239
  59. package/dist/cjs/plugins/security_plugin.js +0 -153
  60. package/dist/cjs/runner/in_memory_runner.js +0 -58
  61. package/dist/cjs/runner/runner.js +0 -277
  62. package/dist/cjs/sessions/base_session_service.js +0 -71
  63. package/dist/cjs/sessions/in_memory_session_service.js +0 -184
  64. package/dist/cjs/sessions/session.js +0 -48
  65. package/dist/cjs/sessions/state.js +0 -101
  66. package/dist/cjs/telemetry/google_cloud.js +0 -85
  67. package/dist/cjs/telemetry/setup.js +0 -97
  68. package/dist/cjs/telemetry/tracing.js +0 -231
  69. package/dist/cjs/tools/agent_tool.js +0 -134
  70. package/dist/cjs/tools/base_tool.js +0 -107
  71. package/dist/cjs/tools/base_toolset.js +0 -76
  72. package/dist/cjs/tools/forwarding_artifact_service.js +0 -71
  73. package/dist/cjs/tools/function_tool.js +0 -101
  74. package/dist/cjs/tools/google_search_tool.js +0 -77
  75. package/dist/cjs/tools/long_running_tool.js +0 -63
  76. package/dist/cjs/tools/mcp/mcp_session_manager.js +0 -65
  77. package/dist/cjs/tools/mcp/mcp_tool.js +0 -65
  78. package/dist/cjs/tools/mcp/mcp_toolset.js +0 -61
  79. package/dist/cjs/tools/tool_confirmation.js +0 -49
  80. package/dist/cjs/tools/tool_context.js +0 -129
  81. package/dist/cjs/utils/client_labels.js +0 -56
  82. package/dist/cjs/utils/deep_clone.js +0 -44
  83. package/dist/cjs/utils/env_aware_utils.js +0 -83
  84. package/dist/cjs/utils/gemini_schema_util.js +0 -88
  85. package/dist/cjs/utils/logger.js +0 -121
  86. package/dist/cjs/utils/model_name.js +0 -76
  87. package/dist/cjs/utils/simple_zod_to_json.js +0 -191
  88. package/dist/cjs/utils/variant_utils.js +0 -55
  89. package/dist/cjs/version.js +0 -39
  90. package/dist/esm/agents/active_streaming_tool.js +0 -14
  91. package/dist/esm/agents/base_agent.js +0 -214
  92. package/dist/esm/agents/base_llm_processor.js +0 -13
  93. package/dist/esm/agents/callback_context.js +0 -68
  94. package/dist/esm/agents/content_processor_utils.js +0 -315
  95. package/dist/esm/agents/functions.js +0 -383
  96. package/dist/esm/agents/instructions.js +0 -80
  97. package/dist/esm/agents/invocation_context.js +0 -76
  98. package/dist/esm/agents/live_request_queue.js +0 -106
  99. package/dist/esm/agents/llm_agent.js +0 -1215
  100. package/dist/esm/agents/loop_agent.js +0 -38
  101. package/dist/esm/agents/parallel_agent.js +0 -48
  102. package/dist/esm/agents/readonly_context.js +0 -38
  103. package/dist/esm/agents/run_config.js +0 -39
  104. package/dist/esm/agents/sequential_agent.js +0 -54
  105. package/dist/esm/agents/transcription_entry.js +0 -5
  106. package/dist/esm/artifacts/base_artifact_service.js +0 -5
  107. package/dist/esm/artifacts/gcs_artifact_service.js +0 -110
  108. package/dist/esm/artifacts/in_memory_artifact_service.js +0 -89
  109. package/dist/esm/auth/auth_credential.js +0 -16
  110. package/dist/esm/auth/auth_handler.js +0 -62
  111. package/dist/esm/auth/auth_schemes.js +0 -31
  112. package/dist/esm/auth/auth_tool.js +0 -5
  113. package/dist/esm/auth/credential_service/base_credential_service.js +0 -5
  114. package/dist/esm/auth/credential_service/in_memory_credential_service.js +0 -33
  115. package/dist/esm/auth/exchanger/base_credential_exchanger.js +0 -10
  116. package/dist/esm/auth/exchanger/credential_exchanger_registry.js +0 -29
  117. package/dist/esm/code_executors/base_code_executor.js +0 -46
  118. package/dist/esm/code_executors/built_in_code_executor.js +0 -28
  119. package/dist/esm/code_executors/code_execution_utils.js +0 -108
  120. package/dist/esm/code_executors/code_executor_context.js +0 -168
  121. package/dist/esm/common.js +0 -98
  122. package/dist/esm/events/event.js +0 -83
  123. package/dist/esm/events/event_actions.js +0 -52
  124. package/dist/esm/examples/base_example_provider.js +0 -10
  125. package/dist/esm/examples/example.js +0 -5
  126. package/dist/esm/examples/example_util.js +0 -76
  127. package/dist/esm/index_web.js +0 -6
  128. package/dist/esm/memory/base_memory_service.js +0 -5
  129. package/dist/esm/memory/in_memory_memory_service.js +0 -67
  130. package/dist/esm/memory/memory_entry.js +0 -5
  131. package/dist/esm/models/base_llm.js +0 -64
  132. package/dist/esm/models/base_llm_connection.js +0 -5
  133. package/dist/esm/models/gemini_llm_connection.js +0 -102
  134. package/dist/esm/models/google_llm.js +0 -533
  135. package/dist/esm/models/llm_request.js +0 -50
  136. package/dist/esm/models/llm_response.js +0 -41
  137. package/dist/esm/models/registry.js +0 -91
  138. package/dist/esm/plugins/base_plugin.js +0 -206
  139. package/dist/esm/plugins/logging_plugin.js +0 -192
  140. package/dist/esm/plugins/plugin_manager.js +0 -209
  141. package/dist/esm/plugins/security_plugin.js +0 -119
  142. package/dist/esm/runner/in_memory_runner.js +0 -28
  143. package/dist/esm/runner/runner.js +0 -247
  144. package/dist/esm/sessions/base_session_service.js +0 -41
  145. package/dist/esm/sessions/in_memory_session_service.js +0 -154
  146. package/dist/esm/sessions/session.js +0 -18
  147. package/dist/esm/sessions/state.js +0 -71
  148. package/dist/esm/telemetry/google_cloud.js +0 -54
  149. package/dist/esm/telemetry/setup.js +0 -67
  150. package/dist/esm/telemetry/tracing.js +0 -195
  151. package/dist/esm/tools/agent_tool.js +0 -104
  152. package/dist/esm/tools/base_tool.js +0 -77
  153. package/dist/esm/tools/base_toolset.js +0 -46
  154. package/dist/esm/tools/forwarding_artifact_service.js +0 -41
  155. package/dist/esm/tools/function_tool.js +0 -71
  156. package/dist/esm/tools/google_search_tool.js +0 -47
  157. package/dist/esm/tools/long_running_tool.js +0 -33
  158. package/dist/esm/tools/mcp/mcp_session_manager.js +0 -35
  159. package/dist/esm/tools/mcp/mcp_tool.js +0 -35
  160. package/dist/esm/tools/mcp/mcp_toolset.js +0 -31
  161. package/dist/esm/tools/tool_confirmation.js +0 -19
  162. package/dist/esm/tools/tool_context.js +0 -99
  163. package/dist/esm/utils/client_labels.js +0 -26
  164. package/dist/esm/utils/deep_clone.js +0 -14
  165. package/dist/esm/utils/env_aware_utils.js +0 -49
  166. package/dist/esm/utils/gemini_schema_util.js +0 -58
  167. package/dist/esm/utils/logger.js +0 -89
  168. package/dist/esm/utils/model_name.js +0 -41
  169. package/dist/esm/utils/simple_zod_to_json.js +0 -160
  170. package/dist/esm/utils/variant_utils.js +0 -24
  171. package/dist/esm/version.js +0 -9
  172. package/dist/web/agents/active_streaming_tool.js +0 -14
  173. package/dist/web/agents/base_agent.js +0 -265
  174. package/dist/web/agents/base_llm_processor.js +0 -13
  175. package/dist/web/agents/callback_context.js +0 -68
  176. package/dist/web/agents/content_processor_utils.js +0 -315
  177. package/dist/web/agents/functions.js +0 -383
  178. package/dist/web/agents/instructions.js +0 -80
  179. package/dist/web/agents/invocation_context.js +0 -76
  180. package/dist/web/agents/live_request_queue.js +0 -124
  181. package/dist/web/agents/llm_agent.js +0 -1345
  182. package/dist/web/agents/loop_agent.js +0 -71
  183. package/dist/web/agents/parallel_agent.js +0 -83
  184. package/dist/web/agents/readonly_context.js +0 -38
  185. package/dist/web/agents/run_config.js +0 -54
  186. package/dist/web/agents/sequential_agent.js +0 -99
  187. package/dist/web/agents/transcription_entry.js +0 -5
  188. package/dist/web/artifacts/base_artifact_service.js +0 -5
  189. package/dist/web/artifacts/gcs_artifact_service.js +0 -126
  190. package/dist/web/artifacts/in_memory_artifact_service.js +0 -89
  191. package/dist/web/auth/auth_credential.js +0 -16
  192. package/dist/web/auth/auth_handler.js +0 -62
  193. package/dist/web/auth/auth_schemes.js +0 -31
  194. package/dist/web/auth/auth_tool.js +0 -5
  195. package/dist/web/auth/credential_service/base_credential_service.js +0 -5
  196. package/dist/web/auth/credential_service/in_memory_credential_service.js +0 -33
  197. package/dist/web/auth/exchanger/base_credential_exchanger.js +0 -10
  198. package/dist/web/auth/exchanger/credential_exchanger_registry.js +0 -29
  199. package/dist/web/code_executors/base_code_executor.js +0 -46
  200. package/dist/web/code_executors/built_in_code_executor.js +0 -28
  201. package/dist/web/code_executors/code_execution_utils.js +0 -105
  202. package/dist/web/code_executors/code_executor_context.js +0 -168
  203. package/dist/web/common.js +0 -98
  204. package/dist/web/events/event.js +0 -101
  205. package/dist/web/events/event_actions.js +0 -67
  206. package/dist/web/examples/base_example_provider.js +0 -10
  207. package/dist/web/examples/example.js +0 -5
  208. package/dist/web/examples/example_util.js +0 -75
  209. package/dist/web/index_web.js +0 -6
  210. package/dist/web/memory/base_memory_service.js +0 -5
  211. package/dist/web/memory/in_memory_memory_service.js +0 -67
  212. package/dist/web/memory/memory_entry.js +0 -5
  213. package/dist/web/models/base_llm.js +0 -64
  214. package/dist/web/models/base_llm_connection.js +0 -5
  215. package/dist/web/models/gemini_llm_connection.js +0 -120
  216. package/dist/web/models/google_llm.js +0 -574
  217. package/dist/web/models/llm_request.js +0 -50
  218. package/dist/web/models/llm_response.js +0 -41
  219. package/dist/web/models/registry.js +0 -91
  220. package/dist/web/plugins/base_plugin.js +0 -206
  221. package/dist/web/plugins/logging_plugin.js +0 -192
  222. package/dist/web/plugins/plugin_manager.js +0 -209
  223. package/dist/web/plugins/security_plugin.js +0 -119
  224. package/dist/web/runner/in_memory_runner.js +0 -28
  225. package/dist/web/runner/runner.js +0 -278
  226. package/dist/web/sessions/base_session_service.js +0 -41
  227. package/dist/web/sessions/in_memory_session_service.js +0 -154
  228. package/dist/web/sessions/session.js +0 -18
  229. package/dist/web/sessions/state.js +0 -87
  230. package/dist/web/telemetry/google_cloud.js +0 -54
  231. package/dist/web/telemetry/setup.js +0 -67
  232. package/dist/web/telemetry/tracing.js +0 -210
  233. package/dist/web/tools/agent_tool.js +0 -118
  234. package/dist/web/tools/base_tool.js +0 -77
  235. package/dist/web/tools/base_toolset.js +0 -46
  236. package/dist/web/tools/forwarding_artifact_service.js +0 -41
  237. package/dist/web/tools/function_tool.js +0 -71
  238. package/dist/web/tools/google_search_tool.js +0 -47
  239. package/dist/web/tools/long_running_tool.js +0 -50
  240. package/dist/web/tools/mcp/mcp_session_manager.js +0 -35
  241. package/dist/web/tools/mcp/mcp_tool.js +0 -35
  242. package/dist/web/tools/mcp/mcp_toolset.js +0 -31
  243. package/dist/web/tools/tool_confirmation.js +0 -19
  244. package/dist/web/tools/tool_context.js +0 -99
  245. package/dist/web/utils/client_labels.js +0 -26
  246. package/dist/web/utils/deep_clone.js +0 -14
  247. package/dist/web/utils/env_aware_utils.js +0 -49
  248. package/dist/web/utils/gemini_schema_util.js +0 -58
  249. package/dist/web/utils/logger.js +0 -89
  250. package/dist/web/utils/model_name.js +0 -41
  251. package/dist/web/utils/simple_zod_to_json.js +0 -174
  252. package/dist/web/utils/variant_utils.js +0 -24
  253. package/dist/web/version.js +0 -9
@@ -1,54 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { GoogleAuth } from "google-auth-library";
7
- import { PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics";
8
- import { detectResources } from "@opentelemetry/resources";
9
- import { gcpDetector } from "@opentelemetry/resource-detector-gcp";
10
- import { TraceExporter } from "@google-cloud/opentelemetry-cloud-trace-exporter";
11
- import { BatchSpanProcessor } from "@opentelemetry/sdk-trace-base";
12
- import { MetricExporter } from "@google-cloud/opentelemetry-cloud-monitoring-exporter";
13
- import { logger } from "../utils/logger.js";
14
- const GCP_PROJECT_ERROR_MESSAGE = "Cannot determine GCP Project. OTel GCP Exporters cannot be set up. Please make sure to log into correct GCP Project.";
15
- async function getGcpProjectId() {
16
- try {
17
- const auth = new GoogleAuth();
18
- const projectId = await auth.getProjectId();
19
- return projectId || void 0;
20
- } catch (error) {
21
- return void 0;
22
- }
23
- }
24
- async function getGcpExporters(config = {}) {
25
- const {
26
- enableTracing = false,
27
- enableMetrics = false
28
- // enableCloudLogging = false,
29
- } = config;
30
- const projectId = await getGcpProjectId();
31
- if (!projectId) {
32
- logger.warn(GCP_PROJECT_ERROR_MESSAGE);
33
- return {};
34
- }
35
- return {
36
- spanProcessors: enableTracing ? [
37
- new BatchSpanProcessor(new TraceExporter({ projectId }))
38
- ] : [],
39
- metricReaders: enableMetrics ? [
40
- new PeriodicExportingMetricReader({
41
- exporter: new MetricExporter({ projectId }),
42
- exportIntervalMillis: 5e3
43
- })
44
- ] : [],
45
- logRecordProcessors: []
46
- };
47
- }
48
- function getGcpResource() {
49
- return detectResources({ detectors: [gcpDetector] });
50
- }
51
- export {
52
- getGcpExporters,
53
- getGcpResource
54
- };
@@ -1,67 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { trace, metrics } from "@opentelemetry/api";
7
- import { logs } from "@opentelemetry/api-logs";
8
- import { LoggerProvider, BatchLogRecordProcessor } from "@opentelemetry/sdk-logs";
9
- import { MeterProvider, PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics";
10
- import { detectResources } from "@opentelemetry/resources";
11
- import { BatchSpanProcessor } from "@opentelemetry/sdk-trace-base";
12
- import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
13
- import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
14
- import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http";
15
- import { OTLPLogExporter } from "@opentelemetry/exporter-logs-otlp-http";
16
- function maybeSetOtelProviders(otelHooksToSetup = [], otelResource) {
17
- const resource = otelResource || getOtelResource();
18
- const allHooks = [...otelHooksToSetup, getOtelExporters()];
19
- const spanProcessors = allHooks.flatMap((hooks) => hooks.spanProcessors || []);
20
- const metricReaders = allHooks.flatMap((hooks) => hooks.metricReaders || []);
21
- const logRecordProcessors = allHooks.flatMap((hooks) => hooks.logRecordProcessors || []);
22
- if (spanProcessors.length > 0) {
23
- const tracerProvider = new NodeTracerProvider({
24
- resource,
25
- spanProcessors
26
- });
27
- tracerProvider.register();
28
- trace.setGlobalTracerProvider(tracerProvider);
29
- }
30
- if (metricReaders.length > 0) {
31
- const meterProvider = new MeterProvider({
32
- readers: metricReaders,
33
- resource
34
- });
35
- metrics.setGlobalMeterProvider(meterProvider);
36
- }
37
- if (logRecordProcessors.length > 0) {
38
- const loggerProvider = new LoggerProvider({
39
- resource,
40
- processors: logRecordProcessors
41
- });
42
- logs.setGlobalLoggerProvider(loggerProvider);
43
- }
44
- }
45
- function getOtelResource() {
46
- return detectResources({
47
- detectors: []
48
- });
49
- }
50
- function getOtelExportersConfig() {
51
- return {
52
- enableTracing: !!(process.env.OTEL_EXPORTER_OTLP_ENDPOINT || process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT),
53
- enableMetrics: !!(process.env.OTEL_EXPORTER_OTLP_ENDPOINT || process.env.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT),
54
- enableLogging: !!(process.env.OTEL_EXPORTER_OTLP_ENDPOINT || process.env.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT)
55
- };
56
- }
57
- function getOtelExporters(config = getOtelExportersConfig()) {
58
- const { enableTracing, enableMetrics, enableLogging } = config;
59
- return {
60
- spanProcessors: enableTracing ? [new BatchSpanProcessor(new OTLPTraceExporter())] : [],
61
- metricReaders: enableMetrics ? [new PeriodicExportingMetricReader({ exporter: new OTLPMetricExporter() })] : [],
62
- logRecordProcessors: enableLogging ? [new BatchLogRecordProcessor(new OTLPLogExporter())] : []
63
- };
64
- }
65
- export {
66
- maybeSetOtelProviders
67
- };
@@ -1,195 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { trace, context } from "@opentelemetry/api";
7
- import { version } from "../version.js";
8
- const GEN_AI_AGENT_DESCRIPTION = "gen_ai.agent.description";
9
- const GEN_AI_AGENT_NAME = "gen_ai.agent.name";
10
- const GEN_AI_CONVERSATION_ID = "gen_ai.conversation.id";
11
- const GEN_AI_OPERATION_NAME = "gen_ai.operation.name";
12
- const GEN_AI_TOOL_CALL_ID = "gen_ai.tool.call.id";
13
- const GEN_AI_TOOL_DESCRIPTION = "gen_ai.tool.description";
14
- const GEN_AI_TOOL_NAME = "gen_ai.tool.name";
15
- const GEN_AI_TOOL_TYPE = "gen_ai.tool.type";
16
- const tracer = trace.getTracer(
17
- "gcp.vertex.agent",
18
- version
19
- );
20
- function safeJsonSerialize(obj) {
21
- try {
22
- return JSON.stringify(obj);
23
- } catch (error) {
24
- return "<not serializable>";
25
- }
26
- }
27
- function traceAgentInvocation({
28
- agent,
29
- invocationContext
30
- }) {
31
- const span = trace.getActiveSpan();
32
- if (!span) return;
33
- span.setAttributes({
34
- [GEN_AI_OPERATION_NAME]: "invoke_agent",
35
- // Conditionally Required
36
- [GEN_AI_AGENT_DESCRIPTION]: agent.description,
37
- [GEN_AI_AGENT_NAME]: agent.name,
38
- [GEN_AI_CONVERSATION_ID]: invocationContext.session.id
39
- });
40
- }
41
- function traceToolCall({
42
- tool,
43
- args,
44
- functionResponseEvent
45
- }) {
46
- var _a, _b;
47
- const span = trace.getActiveSpan();
48
- if (!span) return;
49
- span.setAttributes({
50
- [GEN_AI_OPERATION_NAME]: "execute_tool",
51
- [GEN_AI_TOOL_DESCRIPTION]: tool.description || "",
52
- [GEN_AI_TOOL_NAME]: tool.name,
53
- // e.g. FunctionTool
54
- [GEN_AI_TOOL_TYPE]: tool.constructor.name,
55
- // Setting empty llm request and response (as UI expect these) while not
56
- // applicable for tool_response.
57
- "gcp.vertex.agent.llm_request": "{}",
58
- "gcp.vertex.agent.llm_response": "{}",
59
- "gcp.vertex.agent.tool_call_args": shouldAddRequestResponseToSpans() ? safeJsonSerialize(args) : "{}"
60
- });
61
- let toolCallId = "<not specified>";
62
- let toolResponse = "<not specified>";
63
- if ((_a = functionResponseEvent.content) == null ? void 0 : _a.parts) {
64
- const responseParts = functionResponseEvent.content.parts;
65
- const functionResponse = (_b = responseParts[0]) == null ? void 0 : _b.functionResponse;
66
- if (functionResponse == null ? void 0 : functionResponse.id) {
67
- toolCallId = functionResponse.id;
68
- }
69
- if (functionResponse == null ? void 0 : functionResponse.response) {
70
- toolResponse = functionResponse.response;
71
- }
72
- }
73
- if (typeof toolResponse !== "object" || toolResponse === null) {
74
- toolResponse = { result: toolResponse };
75
- }
76
- span.setAttributes({
77
- [GEN_AI_TOOL_CALL_ID]: toolCallId,
78
- "gcp.vertex.agent.event_id": functionResponseEvent.id,
79
- "gcp.vertex.agent.tool_response": shouldAddRequestResponseToSpans() ? safeJsonSerialize(toolResponse) : "{}"
80
- });
81
- }
82
- function traceMergedToolCalls({
83
- responseEventId,
84
- functionResponseEvent
85
- }) {
86
- const span = trace.getActiveSpan();
87
- if (!span) return;
88
- span.setAttributes({
89
- [GEN_AI_OPERATION_NAME]: "execute_tool",
90
- [GEN_AI_TOOL_NAME]: "(merged tools)",
91
- [GEN_AI_TOOL_DESCRIPTION]: "(merged tools)",
92
- [GEN_AI_TOOL_CALL_ID]: responseEventId,
93
- "gcp.vertex.agent.tool_call_args": "N/A",
94
- "gcp.vertex.agent.event_id": responseEventId,
95
- // Setting empty llm request and response (as UI expect these) while not
96
- // applicable for tool_response.
97
- "gcp.vertex.agent.llm_request": "{}",
98
- "gcp.vertex.agent.llm_response": "{}"
99
- });
100
- span.setAttribute("gcp.vertex.agent.tool_response", shouldAddRequestResponseToSpans() ? safeJsonSerialize(functionResponseEvent) : "{}");
101
- }
102
- function traceCallLlm({
103
- invocationContext,
104
- eventId,
105
- llmRequest,
106
- llmResponse
107
- }) {
108
- var _a, _b, _c;
109
- const span = trace.getActiveSpan();
110
- if (!span) return;
111
- span.setAttributes({
112
- "gen_ai.system": "gcp.vertex.agent",
113
- "gen_ai.request.model": llmRequest.model,
114
- "gcp.vertex.agent.invocation_id": invocationContext.invocationId,
115
- "gcp.vertex.agent.session_id": invocationContext.session.id,
116
- "gcp.vertex.agent.event_id": eventId,
117
- // Consider removing once GenAI SDK provides a way to record this info.
118
- "gcp.vertex.agent.llm_request": shouldAddRequestResponseToSpans() ? safeJsonSerialize(buildLlmRequestForTrace(llmRequest)) : "{}"
119
- });
120
- if ((_a = llmRequest.config) == null ? void 0 : _a.topP) {
121
- span.setAttribute("gen_ai.request.top_p", llmRequest.config.topP);
122
- }
123
- if (((_b = llmRequest.config) == null ? void 0 : _b.maxOutputTokens) !== void 0) {
124
- span.setAttribute("gen_ai.request.max_tokens", llmRequest.config.maxOutputTokens);
125
- }
126
- span.setAttribute("gcp.vertex.agent.llm_response", shouldAddRequestResponseToSpans() ? safeJsonSerialize(llmResponse) : "{}");
127
- if (llmResponse.usageMetadata) {
128
- span.setAttribute("gen_ai.usage.input_tokens", llmResponse.usageMetadata.promptTokenCount || 0);
129
- }
130
- if ((_c = llmResponse.usageMetadata) == null ? void 0 : _c.candidatesTokenCount) {
131
- span.setAttribute("gen_ai.usage.output_tokens", llmResponse.usageMetadata.candidatesTokenCount);
132
- }
133
- if (llmResponse.finishReason) {
134
- const finishReasonValue = typeof llmResponse.finishReason === "string" ? llmResponse.finishReason.toLowerCase() : String(llmResponse.finishReason).toLowerCase();
135
- span.setAttribute("gen_ai.response.finish_reasons", [finishReasonValue]);
136
- }
137
- }
138
- function traceSendData({
139
- invocationContext,
140
- eventId,
141
- data
142
- }) {
143
- const span = trace.getActiveSpan();
144
- if (!span) return;
145
- span.setAttributes({
146
- "gcp.vertex.agent.invocation_id": invocationContext.invocationId,
147
- "gcp.vertex.agent.event_id": eventId
148
- });
149
- span.setAttribute("gcp.vertex.agent.data", shouldAddRequestResponseToSpans() ? safeJsonSerialize(data) : "{}");
150
- }
151
- function buildLlmRequestForTrace(llmRequest) {
152
- const result = {
153
- model: llmRequest.model,
154
- contents: []
155
- };
156
- if (llmRequest.config) {
157
- const { responseSchema, ...cleanConfig } = llmRequest.config;
158
- result.config = cleanConfig;
159
- }
160
- result.contents = llmRequest.contents.map((content) => {
161
- var _a;
162
- return {
163
- role: content.role,
164
- parts: ((_a = content.parts) == null ? void 0 : _a.filter((part) => !part.inlineData)) || []
165
- };
166
- });
167
- return result;
168
- }
169
- function bindAsyncGenerator(ctx, generator) {
170
- return {
171
- // Bind the next() method to execute within the provided context
172
- next: context.bind(ctx, generator.next.bind(generator)),
173
- // Bind the return() method to execute within the provided context
174
- return: context.bind(ctx, generator.return.bind(generator)),
175
- // Bind the throw() method to execute within the provided context
176
- throw: context.bind(ctx, generator.throw.bind(generator)),
177
- // Ensure the async iterator symbol also returns a context-bound generator
178
- [Symbol.asyncIterator]() {
179
- return bindAsyncGenerator(ctx, generator[Symbol.asyncIterator]());
180
- }
181
- };
182
- }
183
- function shouldAddRequestResponseToSpans() {
184
- const envValue = process.env.ADK_CAPTURE_MESSAGE_CONTENT_IN_SPANS || "true";
185
- return envValue === "true" || envValue === "1";
186
- }
187
- export {
188
- bindAsyncGenerator,
189
- traceAgentInvocation,
190
- traceCallLlm,
191
- traceMergedToolCalls,
192
- traceSendData,
193
- traceToolCall,
194
- tracer
195
- };
@@ -1,104 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { Type } from "@google/genai";
7
- import { LlmAgent } from "../agents/llm_agent.js";
8
- import { InMemoryMemoryService } from "../memory/in_memory_memory_service.js";
9
- import { Runner } from "../runner/runner.js";
10
- import { InMemorySessionService } from "../sessions/in_memory_session_service.js";
11
- import { GoogleLLMVariant } from "../utils/variant_utils.js";
12
- import { BaseTool } from "./base_tool.js";
13
- import { ForwardingArtifactService } from "./forwarding_artifact_service.js";
14
- class AgentTool extends BaseTool {
15
- constructor(config) {
16
- super(
17
- { name: config.agent.name, description: config.agent.description || "" }
18
- );
19
- this.agent = config.agent;
20
- this.skipSummarization = config.skipSummarization || false;
21
- }
22
- _getDeclaration() {
23
- let declaration;
24
- if (this.agent instanceof LlmAgent && this.agent.inputSchema) {
25
- declaration = {
26
- name: this.name,
27
- description: this.description,
28
- // TODO(b/425992518): We should not use the agent's input schema as is.
29
- // It should be validated and possibly transformed. Consider similar
30
- // logic to one we have in Python ADK.
31
- parameters: this.agent.inputSchema
32
- };
33
- } else {
34
- declaration = {
35
- name: this.name,
36
- description: this.description,
37
- parameters: {
38
- type: Type.OBJECT,
39
- properties: {
40
- "request": {
41
- type: Type.STRING
42
- }
43
- },
44
- required: ["request"]
45
- }
46
- };
47
- }
48
- if (this.apiVariant !== GoogleLLMVariant.GEMINI_API) {
49
- const hasOutputSchema = this.agent instanceof LlmAgent && this.agent.outputSchema;
50
- declaration.response = hasOutputSchema ? { type: Type.OBJECT } : { type: Type.STRING };
51
- }
52
- return declaration;
53
- }
54
- async runAsync({ args, toolContext }) {
55
- var _a, _b;
56
- if (this.skipSummarization) {
57
- toolContext.actions.skipSummarization = true;
58
- }
59
- const hasInputSchema = this.agent instanceof LlmAgent && this.agent.inputSchema;
60
- const content = {
61
- role: "user",
62
- parts: [
63
- {
64
- // TODO(b/425992518): Should be validated. Consider similar
65
- // logic to one we have in Python ADK.
66
- text: hasInputSchema ? JSON.stringify(args) : args["request"]
67
- }
68
- ]
69
- };
70
- const runner = new Runner({
71
- appName: this.agent.name,
72
- agent: this.agent,
73
- artifactService: new ForwardingArtifactService(toolContext),
74
- sessionService: new InMemorySessionService(),
75
- memoryService: new InMemoryMemoryService(),
76
- credentialService: toolContext.invocationContext.credentialService
77
- });
78
- const session = await runner.sessionService.createSession({
79
- appName: this.agent.name,
80
- userId: "tmp_user",
81
- state: toolContext.state.toRecord()
82
- });
83
- let lastEvent;
84
- for await (const event of runner.runAsync({
85
- userId: session.userId,
86
- sessionId: session.id,
87
- newMessage: content
88
- })) {
89
- if (event.actions.stateDelta) {
90
- toolContext.state.update(event.actions.stateDelta);
91
- }
92
- lastEvent = event;
93
- }
94
- if (!((_b = (_a = lastEvent == null ? void 0 : lastEvent.content) == null ? void 0 : _a.parts) == null ? void 0 : _b.length)) {
95
- return "";
96
- }
97
- const hasOutputSchema = this.agent instanceof LlmAgent && this.agent.outputSchema;
98
- const mergetText = lastEvent.content.parts.map((part) => part.text).filter((text) => text).join("\n");
99
- return hasOutputSchema ? JSON.parse(mergetText) : mergetText;
100
- }
101
- }
102
- export {
103
- AgentTool
104
- };
@@ -1,77 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { getGoogleLlmVariant } from "../utils/variant_utils.js";
7
- class BaseTool {
8
- /**
9
- * Base constructor for a tool.
10
- *
11
- * @param params The parameters for `BaseTool`.
12
- */
13
- constructor(params) {
14
- var _a;
15
- this.name = params.name;
16
- this.description = params.description;
17
- this.isLongRunning = (_a = params.isLongRunning) != null ? _a : false;
18
- }
19
- /**
20
- * Gets the OpenAPI specification of this tool in the form of a
21
- * FunctionDeclaration.
22
- *
23
- * NOTE
24
- * - Required if subclass uses the default implementation of
25
- * `processLlmRequest` to add function declaration to LLM request.
26
- * - Otherwise, can be skipped, e.g. for a built-in GoogleSearch tool for
27
- * Gemini.
28
- *
29
- * @return The FunctionDeclaration of this tool, or undefined if it doesn't
30
- * need to be added to LlmRequest.config.
31
- */
32
- _getDeclaration() {
33
- return void 0;
34
- }
35
- /**
36
- * Processes the outgoing LLM request for this tool.
37
- *
38
- * Use cases:
39
- * - Most common use case is adding this tool to the LLM request.
40
- * - Some tools may just preprocess the LLM request before it's sent out.
41
- *
42
- * @param request The request to process the LLM request.
43
- */
44
- async processLlmRequest({ toolContext, llmRequest }) {
45
- const functionDeclaration = this._getDeclaration();
46
- if (!functionDeclaration) {
47
- return;
48
- }
49
- llmRequest.toolsDict[this.name] = this;
50
- const tool = findToolWithFunctionDeclarations(llmRequest);
51
- if (tool) {
52
- if (!tool.functionDeclarations) {
53
- tool.functionDeclarations = [];
54
- }
55
- tool.functionDeclarations.push(functionDeclaration);
56
- } else {
57
- llmRequest.config = llmRequest.config || {};
58
- llmRequest.config.tools = llmRequest.config.tools || [];
59
- llmRequest.config.tools.push({
60
- functionDeclarations: [functionDeclaration]
61
- });
62
- }
63
- }
64
- /**
65
- * The Google API LLM variant to use.
66
- */
67
- get apiVariant() {
68
- return getGoogleLlmVariant();
69
- }
70
- }
71
- function findToolWithFunctionDeclarations(llmRequest) {
72
- var _a;
73
- return (((_a = llmRequest.config) == null ? void 0 : _a.tools) || []).find((tool) => "functionDeclarations" in tool);
74
- }
75
- export {
76
- BaseTool
77
- };
@@ -1,46 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- class BaseToolset {
7
- constructor(toolFilter) {
8
- this.toolFilter = toolFilter;
9
- }
10
- /**
11
- * Returns whether the tool should be exposed to LLM.
12
- *
13
- * @param tool The tool to check.
14
- * @param context Context used to filter tools available to the agent.
15
- * @return Whether the tool should be exposed to LLM.
16
- */
17
- isToolSelected(tool, context) {
18
- if (!this.toolFilter) {
19
- return true;
20
- }
21
- if (typeof this.toolFilter === "function") {
22
- return this.toolFilter(tool, context);
23
- }
24
- if (Array.isArray(this.toolFilter)) {
25
- return this.toolFilter.includes(tool.name);
26
- }
27
- return false;
28
- }
29
- /**
30
- * Processes the outgoing LLM request for this toolset. This method will be
31
- * called before each tool processes the llm request.
32
- *
33
- * Use cases:
34
- * - Instead of let each tool process the llm request, we can let the toolset
35
- * process the llm request. e.g. ComputerUseToolset can add computer use
36
- * tool to the llm request.
37
- *
38
- * @param toolContext The context of the tool.
39
- * @param llmRequest The outgoing LLM request, mutable this method.
40
- */
41
- async processLlmRequest(toolContext, llmRequest) {
42
- }
43
- }
44
- export {
45
- BaseToolset
46
- };
@@ -1,41 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- class ForwardingArtifactService {
7
- constructor(toolContext) {
8
- this.toolContext = toolContext;
9
- this.invocationContext = toolContext.invocationContext;
10
- }
11
- // TODO - b/425992518: Remove unnecessary parameters. We should rethink the
12
- // abstraction layer to make it more clear.
13
- async saveArtifact(request) {
14
- return this.toolContext.saveArtifact(request.filename, request.artifact);
15
- }
16
- async loadArtifact(request) {
17
- return this.toolContext.loadArtifact(request.filename, request.version);
18
- }
19
- async listArtifactKeys(request) {
20
- return this.toolContext.listArtifacts();
21
- }
22
- async deleteArtifact(request) {
23
- if (!this.toolContext.invocationContext.artifactService) {
24
- throw new Error("Artifact service is not initialized.");
25
- }
26
- return this.toolContext.invocationContext.artifactService.deleteArtifact(
27
- request
28
- );
29
- }
30
- async listVersions(request) {
31
- if (!this.toolContext.invocationContext.artifactService) {
32
- throw new Error("Artifact service is not initialized.");
33
- }
34
- return this.toolContext.invocationContext.artifactService.listVersions(
35
- request
36
- );
37
- }
38
- }
39
- export {
40
- ForwardingArtifactService
41
- };
@@ -1,71 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { Type } from "@google/genai";
7
- import { ZodObject } from "zod";
8
- import { isZodObject, zodObjectToSchema } from "../utils/simple_zod_to_json.js";
9
- import { BaseTool } from "./base_tool.js";
10
- function toSchema(parameters) {
11
- if (parameters === void 0) {
12
- return { type: Type.OBJECT, properties: {} };
13
- }
14
- if (isZodObject(parameters)) {
15
- return zodObjectToSchema(parameters);
16
- }
17
- return parameters;
18
- }
19
- class FunctionTool extends BaseTool {
20
- /**
21
- * The constructor acts as the user-friendly factory.
22
- * @param options The configuration for the tool.
23
- */
24
- constructor(options) {
25
- var _a;
26
- const name = (_a = options.name) != null ? _a : options.execute.name;
27
- if (!name) {
28
- throw new Error(
29
- "Tool name cannot be empty. Either name the `execute` function or provide a `name`."
30
- );
31
- }
32
- super({
33
- name,
34
- description: options.description,
35
- isLongRunning: options.isLongRunning
36
- });
37
- this.execute = options.execute;
38
- this.parameters = options.parameters;
39
- }
40
- /**
41
- * Provide a schema for the function.
42
- */
43
- _getDeclaration() {
44
- return {
45
- name: this.name,
46
- description: this.description,
47
- parameters: toSchema(this.parameters)
48
- };
49
- }
50
- /**
51
- * Logic for running the tool.
52
- */
53
- async runAsync(req) {
54
- try {
55
- let validatedArgs = req.args;
56
- if (this.parameters instanceof ZodObject) {
57
- validatedArgs = this.parameters.parse(req.args);
58
- }
59
- return await this.execute(
60
- validatedArgs,
61
- req.toolContext
62
- );
63
- } catch (error) {
64
- const errorMessage = error instanceof Error ? error.message : String(error);
65
- throw new Error(`Error in tool '${this.name}': ${errorMessage}`);
66
- }
67
- }
68
- }
69
- export {
70
- FunctionTool
71
- };