From 75d4397f52395dd48e65ff65b5abdb113a77610d Mon Sep 17 00:00:00 2001 From: JPeer264 Date: Fri, 2 Oct 2026 15:33:25 +0200 Subject: [PATCH] fix(bun): Add conversationIdIntegration to the default integrations `@sentry/bun` builds its own list of default integrations, and it did not include `conversationIdIntegration`, which every other server SDK installs. So on Bun, a conversation id set on the scope never reached the gen_ai spans. This was the only reason the bundled Bun runs of the OpenAI and Vercel AI (v4) suites failed, so both run again. Co-Authored-By: Claude Opus 5.5 --- .../bun-integration-tests/node-suites/excludes.ts | 2 -- packages/bun/src/sdk.ts | 2 ++ packages/bun/test/init.test.ts | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/dev-packages/bun-integration-tests/node-suites/excludes.ts b/dev-packages/bun-integration-tests/node-suites/excludes.ts index 20124be5a264..ba3fc6a6ef95 100644 --- a/dev-packages/bun-integration-tests/node-suites/excludes.ts +++ b/dev-packages/bun-integration-tests/node-suites/excludes.ts @@ -258,10 +258,8 @@ const BUN_BUILD_NOT_TRIAGED = [ 'suites/tracing/mongoose-v9/test.ts', 'suites/tracing/mongoose/test.ts', 'suites/tracing/mysql/test.ts', - 'suites/tracing/openai/test.ts', 'suites/tracing/prisma-orm-v8/test.ts', 'suites/tracing/together-ai/test.ts', - 'suites/tracing/vercelai/test.ts', 'suites/tracing/vercelai/v6_v7/test.ts', ]; diff --git a/packages/bun/src/sdk.ts b/packages/bun/src/sdk.ts index bd936eae1adb..d1aba1b7aebc 100644 --- a/packages/bun/src/sdk.ts +++ b/packages/bun/src/sdk.ts @@ -2,6 +2,7 @@ import * as os from 'node:os'; import type { Integration, Options } from '@sentry/core'; import { applySdkMetadata, + conversationIdIntegration, dedupeIntegration, eventFiltersIntegration, functionToStringIntegration, @@ -51,6 +52,7 @@ export function getDefaultIntegrationsWithoutPerformance(): Integration[] { linkedErrorsIntegration(), dedupeIntegration(), requestDataIntegration(), + conversationIdIntegration(), // Native Wrappers consoleIntegration(), httpIntegration(), diff --git a/packages/bun/test/init.test.ts b/packages/bun/test/init.test.ts index 2fced80fd67a..ccadbcd8bc8d 100644 --- a/packages/bun/test/init.test.ts +++ b/packages/bun/test/init.test.ts @@ -1,3 +1,4 @@ +import { GEN_AI_CONVERSATION_ID } from '@sentry/conventions/attributes'; import { type Integration } from '@sentry/core'; import * as sentryServerUtils from '@sentry/server-utils'; import type { Mock } from 'bun:test'; @@ -8,6 +9,9 @@ import { getDefaultIntegrationsWithoutPerformance, init, initWithoutDefaultIntegrations, + spanToJSON, + startSpan, + withScope, } from '../src'; const PUBLIC_DSN = 'https://username@domain/123'; @@ -127,6 +131,17 @@ describe('init()', () => { expect(integrations?.map(({ name }) => name)).toContain('Some mock integration 4.1'); expect(integrations?.map(({ name }) => name)).toContain('Some mock integration 4.3'); }); + + it('adds the conversation id of the scope to gen_ai spans', () => { + init({ dsn: PUBLIC_DSN, tracesSampleRate: 1 }); + + withScope(scope => { + scope.setConversationId('conversation-1'); + startSpan({ name: 'chat', op: 'gen_ai.chat' }, span => { + expect(spanToJSON(span).attributes[GEN_AI_CONVERSATION_ID]).toBe('conversation-1'); + }); + }); + }); }); describe('runtime', () => {