From 75738e6ce9f3e6cb3fba45383e8f6e4e2ba75c54 Mon Sep 17 00:00:00 2001 From: Nicolas Hrubec Date: Thu, 13 Nov 2025 13:13:22 +0100 Subject: [PATCH 1/2] Flatten available tools in google-genai --- .../suites/tracing/google-genai/test.ts | 7 +++++-- packages/core/src/tracing/google-genai/index.ts | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/dev-packages/node-integration-tests/suites/tracing/google-genai/test.ts b/dev-packages/node-integration-tests/suites/tracing/google-genai/test.ts index 7507ca255ae0..e442bc9f46f8 100644 --- a/dev-packages/node-integration-tests/suites/tracing/google-genai/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/google-genai/test.ts @@ -204,6 +204,9 @@ describe('Google GenAI integration', () => { }); }); + const EXPECTED_AVAILABLE_TOOLS_JSON = + '[{\"name\":\"controlLight\",\"parametersJsonSchema\":{\"type\":\"object\",\"properties\":{\"brightness\":{\"type\":\"number\"},\"colorTemperature\":{\"type\":\"string\"}},\"required\":[\"brightness\",\"colorTemperature\"]}}]'; + const EXPECTED_TRANSACTION_TOOLS = { transaction: 'main', spans: expect.arrayContaining([ @@ -215,7 +218,7 @@ describe('Google GenAI integration', () => { 'sentry.origin': 'auto.ai.google_genai', 'gen_ai.system': 'google_genai', 'gen_ai.request.model': 'gemini-2.0-flash-001', - 'gen_ai.request.available_tools': expect.any(String), // Should include tools + 'gen_ai.request.available_tools': EXPECTED_AVAILABLE_TOOLS_JSON, 'gen_ai.request.messages': expect.any(String), // Should include contents 'gen_ai.response.text': expect.any(String), // Should include response text 'gen_ai.response.tool_calls': expect.any(String), // Should include tool calls @@ -236,7 +239,7 @@ describe('Google GenAI integration', () => { 'sentry.origin': 'auto.ai.google_genai', 'gen_ai.system': 'google_genai', 'gen_ai.request.model': 'gemini-2.0-flash-001', - 'gen_ai.request.available_tools': expect.any(String), // Should include tools + 'gen_ai.request.available_tools': EXPECTED_AVAILABLE_TOOLS_JSON, 'gen_ai.request.messages': expect.any(String), // Should include contents 'gen_ai.response.streaming': true, 'gen_ai.response.text': expect.any(String), // Should include response text diff --git a/packages/core/src/tracing/google-genai/index.ts b/packages/core/src/tracing/google-genai/index.ts index 6ee3e9df8b5b..cc0226c5cb37 100644 --- a/packages/core/src/tracing/google-genai/index.ts +++ b/packages/core/src/tracing/google-genai/index.ts @@ -115,7 +115,7 @@ function extractRequestAttributes( // Extract available tools from config if ('tools' in config && Array.isArray(config.tools)) { - const functionDeclarations = config.tools.map( + const functionDeclarations = config.tools.flatMap( (tool: { functionDeclarations: unknown[] }) => tool.functionDeclarations, ); attributes[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE] = JSON.stringify(functionDeclarations); From bd311654e70f3c46f0e6b77ea8eb8c7f633c7c15 Mon Sep 17 00:00:00 2001 From: Nicolas Hrubec Date: Thu, 13 Nov 2025 16:18:45 +0100 Subject: [PATCH 2/2] Fix formatting --- .../node-integration-tests/suites/tracing/google-genai/test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-packages/node-integration-tests/suites/tracing/google-genai/test.ts b/dev-packages/node-integration-tests/suites/tracing/google-genai/test.ts index e442bc9f46f8..8b2b04137fff 100644 --- a/dev-packages/node-integration-tests/suites/tracing/google-genai/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/google-genai/test.ts @@ -205,7 +205,7 @@ describe('Google GenAI integration', () => { }); const EXPECTED_AVAILABLE_TOOLS_JSON = - '[{\"name\":\"controlLight\",\"parametersJsonSchema\":{\"type\":\"object\",\"properties\":{\"brightness\":{\"type\":\"number\"},\"colorTemperature\":{\"type\":\"string\"}},\"required\":[\"brightness\",\"colorTemperature\"]}}]'; + '[{"name":"controlLight","parametersJsonSchema":{"type":"object","properties":{"brightness":{"type":"number"},"colorTemperature":{"type":"string"}},"required":["brightness","colorTemperature"]}}]'; const EXPECTED_TRANSACTION_TOOLS = { transaction: 'main',