From b665589b55a32e9eb768b34ebb948e1f4a8e6e97 Mon Sep 17 00:00:00 2001 From: Nicolas Hrubec Date: Wed, 12 Nov 2025 13:32:30 +0100 Subject: [PATCH 1/3] Move ai integrations from utils to tracing --- packages/core/src/index.ts | 30 +++++++++---------- .../ai/gen-ai-attributes.ts | 0 .../ai/messageTruncation.ts | 0 .../core/src/{utils => tracing}/ai/utils.ts | 0 .../anthropic-ai/constants.ts | 0 .../{utils => tracing}/anthropic-ai/index.ts | 2 +- .../anthropic-ai/streaming.ts | 0 .../{utils => tracing}/anthropic-ai/types.ts | 0 .../{utils => tracing}/anthropic-ai/utils.ts | 0 .../google-genai/constants.ts | 0 .../{utils => tracing}/google-genai/index.ts | 2 +- .../google-genai/streaming.ts | 0 .../{utils => tracing}/google-genai/types.ts | 0 .../{utils => tracing}/google-genai/utils.ts | 0 .../{utils => tracing}/langchain/constants.ts | 0 .../src/{utils => tracing}/langchain/index.ts | 0 .../src/{utils => tracing}/langchain/types.ts | 0 .../src/{utils => tracing}/langchain/utils.ts | 0 .../{utils => tracing}/openai/constants.ts | 0 .../src/{utils => tracing}/openai/index.ts | 0 .../{utils => tracing}/openai/streaming.ts | 0 .../src/{utils => tracing}/openai/types.ts | 0 .../src/{utils => tracing}/openai/utils.ts | 0 .../{utils => tracing}/vercel-ai/constants.ts | 0 .../src/{utils => tracing}/vercel-ai/index.ts | 2 +- .../src/{utils => tracing}/vercel-ai/types.ts | 0 .../src/{utils => tracing}/vercel-ai/utils.ts | 0 .../vercel-ai/vercel-ai-attributes.ts | 0 .../core/test/lib/utils/openai-utils.test.ts | 2 +- .../openai-integration-functions.test.ts | 2 +- 30 files changed, 20 insertions(+), 20 deletions(-) rename packages/core/src/{utils => tracing}/ai/gen-ai-attributes.ts (100%) rename packages/core/src/{utils => tracing}/ai/messageTruncation.ts (100%) rename packages/core/src/{utils => tracing}/ai/utils.ts (100%) rename packages/core/src/{utils => tracing}/anthropic-ai/constants.ts (100%) rename packages/core/src/{utils => tracing}/anthropic-ai/index.ts (99%) rename packages/core/src/{utils => tracing}/anthropic-ai/streaming.ts (100%) rename packages/core/src/{utils => tracing}/anthropic-ai/types.ts (100%) rename packages/core/src/{utils => tracing}/anthropic-ai/utils.ts (100%) rename packages/core/src/{utils => tracing}/google-genai/constants.ts (100%) rename packages/core/src/{utils => tracing}/google-genai/index.ts (99%) rename packages/core/src/{utils => tracing}/google-genai/streaming.ts (100%) rename packages/core/src/{utils => tracing}/google-genai/types.ts (100%) rename packages/core/src/{utils => tracing}/google-genai/utils.ts (100%) rename packages/core/src/{utils => tracing}/langchain/constants.ts (100%) rename packages/core/src/{utils => tracing}/langchain/index.ts (100%) rename packages/core/src/{utils => tracing}/langchain/types.ts (100%) rename packages/core/src/{utils => tracing}/langchain/utils.ts (100%) rename packages/core/src/{utils => tracing}/openai/constants.ts (100%) rename packages/core/src/{utils => tracing}/openai/index.ts (100%) rename packages/core/src/{utils => tracing}/openai/streaming.ts (100%) rename packages/core/src/{utils => tracing}/openai/types.ts (100%) rename packages/core/src/{utils => tracing}/openai/utils.ts (100%) rename packages/core/src/{utils => tracing}/vercel-ai/constants.ts (100%) rename packages/core/src/{utils => tracing}/vercel-ai/index.ts (99%) rename packages/core/src/{utils => tracing}/vercel-ai/types.ts (100%) rename packages/core/src/{utils => tracing}/vercel-ai/utils.ts (100%) rename packages/core/src/{utils => tracing}/vercel-ai/vercel-ai-attributes.ts (100%) diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index f3b29009b9ce..2650826562aa 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -135,31 +135,31 @@ export { export * as metrics from './metrics/public-api'; export type { MetricOptions } from './metrics/public-api'; export { createConsolaReporter } from './integrations/consola'; -export { addVercelAiProcessors } from './utils/vercel-ai'; -export { _INTERNAL_getSpanForToolCallId, _INTERNAL_cleanupToolCallSpan } from './utils/vercel-ai/utils'; -export { instrumentOpenAiClient } from './utils/openai'; -export { OPENAI_INTEGRATION_NAME } from './utils/openai/constants'; -export { instrumentAnthropicAiClient } from './utils/anthropic-ai'; -export { ANTHROPIC_AI_INTEGRATION_NAME } from './utils/anthropic-ai/constants'; -export { instrumentGoogleGenAIClient } from './utils/google-genai'; -export { GOOGLE_GENAI_INTEGRATION_NAME } from './utils/google-genai/constants'; -export type { GoogleGenAIResponse } from './utils/google-genai/types'; -export { createLangChainCallbackHandler } from './utils/langchain'; -export { LANGCHAIN_INTEGRATION_NAME } from './utils/langchain/constants'; -export type { LangChainOptions, LangChainIntegration } from './utils/langchain/types'; -export type { OpenAiClient, OpenAiOptions, InstrumentedMethod } from './utils/openai/types'; +export { addVercelAiProcessors } from './tracing/vercel-ai'; +export { _INTERNAL_getSpanForToolCallId, _INTERNAL_cleanupToolCallSpan } from './tracing/vercel-ai/utils'; +export { instrumentOpenAiClient } from './tracing/openai'; +export { OPENAI_INTEGRATION_NAME } from './tracing/openai/constants'; +export { instrumentAnthropicAiClient } from './tracing/anthropic-ai'; +export { ANTHROPIC_AI_INTEGRATION_NAME } from './tracing/anthropic-ai/constants'; +export { instrumentGoogleGenAIClient } from './tracing/google-genai'; +export { GOOGLE_GENAI_INTEGRATION_NAME } from './tracing/google-genai/constants'; +export type { GoogleGenAIResponse } from './tracing/google-genai/types'; +export { createLangChainCallbackHandler } from './tracing/langchain'; +export { LANGCHAIN_INTEGRATION_NAME } from './tracing/langchain/constants'; +export type { LangChainOptions, LangChainIntegration } from './tracing/langchain/types'; +export type { OpenAiClient, OpenAiOptions, InstrumentedMethod } from './tracing/openai/types'; export type { AnthropicAiClient, AnthropicAiOptions, AnthropicAiInstrumentedMethod, AnthropicAiResponse, -} from './utils/anthropic-ai/types'; +} from './tracing/anthropic-ai/types'; export type { GoogleGenAIClient, GoogleGenAIChat, GoogleGenAIOptions, GoogleGenAIIstrumentedMethod, -} from './utils/google-genai/types'; +} from './tracing/google-genai/types'; export type { FeatureFlag } from './utils/featureFlags'; export { diff --git a/packages/core/src/utils/ai/gen-ai-attributes.ts b/packages/core/src/tracing/ai/gen-ai-attributes.ts similarity index 100% rename from packages/core/src/utils/ai/gen-ai-attributes.ts rename to packages/core/src/tracing/ai/gen-ai-attributes.ts diff --git a/packages/core/src/utils/ai/messageTruncation.ts b/packages/core/src/tracing/ai/messageTruncation.ts similarity index 100% rename from packages/core/src/utils/ai/messageTruncation.ts rename to packages/core/src/tracing/ai/messageTruncation.ts diff --git a/packages/core/src/utils/ai/utils.ts b/packages/core/src/tracing/ai/utils.ts similarity index 100% rename from packages/core/src/utils/ai/utils.ts rename to packages/core/src/tracing/ai/utils.ts diff --git a/packages/core/src/utils/anthropic-ai/constants.ts b/packages/core/src/tracing/anthropic-ai/constants.ts similarity index 100% rename from packages/core/src/utils/anthropic-ai/constants.ts rename to packages/core/src/tracing/anthropic-ai/constants.ts diff --git a/packages/core/src/utils/anthropic-ai/index.ts b/packages/core/src/tracing/anthropic-ai/index.ts similarity index 99% rename from packages/core/src/utils/anthropic-ai/index.ts rename to packages/core/src/tracing/anthropic-ai/index.ts index 669d8a61b068..5fcdbf1fe8ba 100644 --- a/packages/core/src/utils/anthropic-ai/index.ts +++ b/packages/core/src/tracing/anthropic-ai/index.ts @@ -30,7 +30,7 @@ import { getTruncatedJsonString, setTokenUsageAttributes, } from '../ai/utils'; -import { handleCallbackErrors } from '../handleCallbackErrors'; +import { handleCallbackErrors } from '../../utils/handleCallbackErrors'; import { instrumentAsyncIterableStream, instrumentMessageStream } from './streaming'; import type { AnthropicAiInstrumentedMethod, diff --git a/packages/core/src/utils/anthropic-ai/streaming.ts b/packages/core/src/tracing/anthropic-ai/streaming.ts similarity index 100% rename from packages/core/src/utils/anthropic-ai/streaming.ts rename to packages/core/src/tracing/anthropic-ai/streaming.ts diff --git a/packages/core/src/utils/anthropic-ai/types.ts b/packages/core/src/tracing/anthropic-ai/types.ts similarity index 100% rename from packages/core/src/utils/anthropic-ai/types.ts rename to packages/core/src/tracing/anthropic-ai/types.ts diff --git a/packages/core/src/utils/anthropic-ai/utils.ts b/packages/core/src/tracing/anthropic-ai/utils.ts similarity index 100% rename from packages/core/src/utils/anthropic-ai/utils.ts rename to packages/core/src/tracing/anthropic-ai/utils.ts diff --git a/packages/core/src/utils/google-genai/constants.ts b/packages/core/src/tracing/google-genai/constants.ts similarity index 100% rename from packages/core/src/utils/google-genai/constants.ts rename to packages/core/src/tracing/google-genai/constants.ts diff --git a/packages/core/src/utils/google-genai/index.ts b/packages/core/src/tracing/google-genai/index.ts similarity index 99% rename from packages/core/src/utils/google-genai/index.ts rename to packages/core/src/tracing/google-genai/index.ts index 9639b1255d29..2d959e01f120 100644 --- a/packages/core/src/utils/google-genai/index.ts +++ b/packages/core/src/tracing/google-genai/index.ts @@ -23,7 +23,7 @@ import { GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, } from '../ai/gen-ai-attributes'; import { buildMethodPath, getFinalOperationName, getSpanOperation, getTruncatedJsonString } from '../ai/utils'; -import { handleCallbackErrors } from '../handleCallbackErrors'; +import { handleCallbackErrors } from '../../utils/handleCallbackErrors'; import { CHAT_PATH, CHATS_CREATE_METHOD, GOOGLE_GENAI_SYSTEM_NAME } from './constants'; import { instrumentStream } from './streaming'; import type { diff --git a/packages/core/src/utils/google-genai/streaming.ts b/packages/core/src/tracing/google-genai/streaming.ts similarity index 100% rename from packages/core/src/utils/google-genai/streaming.ts rename to packages/core/src/tracing/google-genai/streaming.ts diff --git a/packages/core/src/utils/google-genai/types.ts b/packages/core/src/tracing/google-genai/types.ts similarity index 100% rename from packages/core/src/utils/google-genai/types.ts rename to packages/core/src/tracing/google-genai/types.ts diff --git a/packages/core/src/utils/google-genai/utils.ts b/packages/core/src/tracing/google-genai/utils.ts similarity index 100% rename from packages/core/src/utils/google-genai/utils.ts rename to packages/core/src/tracing/google-genai/utils.ts diff --git a/packages/core/src/utils/langchain/constants.ts b/packages/core/src/tracing/langchain/constants.ts similarity index 100% rename from packages/core/src/utils/langchain/constants.ts rename to packages/core/src/tracing/langchain/constants.ts diff --git a/packages/core/src/utils/langchain/index.ts b/packages/core/src/tracing/langchain/index.ts similarity index 100% rename from packages/core/src/utils/langchain/index.ts rename to packages/core/src/tracing/langchain/index.ts diff --git a/packages/core/src/utils/langchain/types.ts b/packages/core/src/tracing/langchain/types.ts similarity index 100% rename from packages/core/src/utils/langchain/types.ts rename to packages/core/src/tracing/langchain/types.ts diff --git a/packages/core/src/utils/langchain/utils.ts b/packages/core/src/tracing/langchain/utils.ts similarity index 100% rename from packages/core/src/utils/langchain/utils.ts rename to packages/core/src/tracing/langchain/utils.ts diff --git a/packages/core/src/utils/openai/constants.ts b/packages/core/src/tracing/openai/constants.ts similarity index 100% rename from packages/core/src/utils/openai/constants.ts rename to packages/core/src/tracing/openai/constants.ts diff --git a/packages/core/src/utils/openai/index.ts b/packages/core/src/tracing/openai/index.ts similarity index 100% rename from packages/core/src/utils/openai/index.ts rename to packages/core/src/tracing/openai/index.ts diff --git a/packages/core/src/utils/openai/streaming.ts b/packages/core/src/tracing/openai/streaming.ts similarity index 100% rename from packages/core/src/utils/openai/streaming.ts rename to packages/core/src/tracing/openai/streaming.ts diff --git a/packages/core/src/utils/openai/types.ts b/packages/core/src/tracing/openai/types.ts similarity index 100% rename from packages/core/src/utils/openai/types.ts rename to packages/core/src/tracing/openai/types.ts diff --git a/packages/core/src/utils/openai/utils.ts b/packages/core/src/tracing/openai/utils.ts similarity index 100% rename from packages/core/src/utils/openai/utils.ts rename to packages/core/src/tracing/openai/utils.ts diff --git a/packages/core/src/utils/vercel-ai/constants.ts b/packages/core/src/tracing/vercel-ai/constants.ts similarity index 100% rename from packages/core/src/utils/vercel-ai/constants.ts rename to packages/core/src/tracing/vercel-ai/constants.ts diff --git a/packages/core/src/utils/vercel-ai/index.ts b/packages/core/src/tracing/vercel-ai/index.ts similarity index 99% rename from packages/core/src/utils/vercel-ai/index.ts rename to packages/core/src/tracing/vercel-ai/index.ts index 747a3c105449..fd4ad955fc7a 100644 --- a/packages/core/src/utils/vercel-ai/index.ts +++ b/packages/core/src/tracing/vercel-ai/index.ts @@ -7,7 +7,7 @@ import { GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE, } from '../ai/gen-ai-attributes'; import { getTruncatedJsonString } from '../ai/utils'; -import { spanToJSON } from '../spanUtils'; +import { spanToJSON } from '../../utils/spanUtils'; import { toolCallSpanMap } from './constants'; import type { TokenSummary } from './types'; import { accumulateTokensForParent, applyAccumulatedTokens } from './utils'; diff --git a/packages/core/src/utils/vercel-ai/types.ts b/packages/core/src/tracing/vercel-ai/types.ts similarity index 100% rename from packages/core/src/utils/vercel-ai/types.ts rename to packages/core/src/tracing/vercel-ai/types.ts diff --git a/packages/core/src/utils/vercel-ai/utils.ts b/packages/core/src/tracing/vercel-ai/utils.ts similarity index 100% rename from packages/core/src/utils/vercel-ai/utils.ts rename to packages/core/src/tracing/vercel-ai/utils.ts diff --git a/packages/core/src/utils/vercel-ai/vercel-ai-attributes.ts b/packages/core/src/tracing/vercel-ai/vercel-ai-attributes.ts similarity index 100% rename from packages/core/src/utils/vercel-ai/vercel-ai-attributes.ts rename to packages/core/src/tracing/vercel-ai/vercel-ai-attributes.ts diff --git a/packages/core/test/lib/utils/openai-utils.test.ts b/packages/core/test/lib/utils/openai-utils.test.ts index 0076a617e219..c68a35e5becc 100644 --- a/packages/core/test/lib/utils/openai-utils.test.ts +++ b/packages/core/test/lib/utils/openai-utils.test.ts @@ -8,7 +8,7 @@ import { isResponsesApiResponse, isResponsesApiStreamEvent, shouldInstrument, -} from '../../../src/utils/openai/utils'; +} from '../../../src/tracing/openai/utils'; describe('openai-utils', () => { describe('getOperationName', () => { diff --git a/packages/core/test/utils/openai-integration-functions.test.ts b/packages/core/test/utils/openai-integration-functions.test.ts index d032fb1e69ed..240ba14d429b 100644 --- a/packages/core/test/utils/openai-integration-functions.test.ts +++ b/packages/core/test/utils/openai-integration-functions.test.ts @@ -1,6 +1,6 @@ import { beforeEach, describe, expect, it } from 'vitest'; import type { OpenAiClient } from '../../src'; -import { instrumentOpenAiClient } from '../../src/utils/openai'; +import { instrumentOpenAiClient } from '../../src/tracing/openai'; interface FullOpenAIClient { chat: { From 617a2c92fc7325e0ac6dca376a5c99c819714f53 Mon Sep 17 00:00:00 2001 From: Nicolas Hrubec Date: Wed, 12 Nov 2025 13:39:42 +0100 Subject: [PATCH 2/3] . --- .../test/{utils => tracing}/openai-integration-functions.test.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/core/test/{utils => tracing}/openai-integration-functions.test.ts (100%) diff --git a/packages/core/test/utils/openai-integration-functions.test.ts b/packages/core/test/tracing/openai-integration-functions.test.ts similarity index 100% rename from packages/core/test/utils/openai-integration-functions.test.ts rename to packages/core/test/tracing/openai-integration-functions.test.ts From f14267ce1cee651bf4220f1e5af752fc1021237c Mon Sep 17 00:00:00 2001 From: Nicolas Hrubec Date: Wed, 12 Nov 2025 14:15:14 +0100 Subject: [PATCH 3/3] Lint --- packages/core/src/tracing/anthropic-ai/index.ts | 2 +- packages/core/src/tracing/google-genai/index.ts | 2 +- packages/core/src/tracing/vercel-ai/index.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/core/src/tracing/anthropic-ai/index.ts b/packages/core/src/tracing/anthropic-ai/index.ts index 5fcdbf1fe8ba..aa48a1e4c21d 100644 --- a/packages/core/src/tracing/anthropic-ai/index.ts +++ b/packages/core/src/tracing/anthropic-ai/index.ts @@ -4,6 +4,7 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes'; import { SPAN_STATUS_ERROR } from '../../tracing'; import { startSpan, startSpanManual } from '../../tracing/trace'; import type { Span, SpanAttributeValue } from '../../types-hoist/span'; +import { handleCallbackErrors } from '../../utils/handleCallbackErrors'; import { ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE, GEN_AI_OPERATION_NAME_ATTRIBUTE, @@ -30,7 +31,6 @@ import { getTruncatedJsonString, setTokenUsageAttributes, } from '../ai/utils'; -import { handleCallbackErrors } from '../../utils/handleCallbackErrors'; import { instrumentAsyncIterableStream, instrumentMessageStream } from './streaming'; import type { AnthropicAiInstrumentedMethod, diff --git a/packages/core/src/tracing/google-genai/index.ts b/packages/core/src/tracing/google-genai/index.ts index 2d959e01f120..6ee3e9df8b5b 100644 --- a/packages/core/src/tracing/google-genai/index.ts +++ b/packages/core/src/tracing/google-genai/index.ts @@ -4,6 +4,7 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes'; import { SPAN_STATUS_ERROR } from '../../tracing'; import { startSpan, startSpanManual } from '../../tracing/trace'; import type { Span, SpanAttributeValue } from '../../types-hoist/span'; +import { handleCallbackErrors } from '../../utils/handleCallbackErrors'; import { GEN_AI_OPERATION_NAME_ATTRIBUTE, GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE, @@ -23,7 +24,6 @@ import { GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE, } from '../ai/gen-ai-attributes'; import { buildMethodPath, getFinalOperationName, getSpanOperation, getTruncatedJsonString } from '../ai/utils'; -import { handleCallbackErrors } from '../../utils/handleCallbackErrors'; import { CHAT_PATH, CHATS_CREATE_METHOD, GOOGLE_GENAI_SYSTEM_NAME } from './constants'; import { instrumentStream } from './streaming'; import type { diff --git a/packages/core/src/tracing/vercel-ai/index.ts b/packages/core/src/tracing/vercel-ai/index.ts index fd4ad955fc7a..8e802edc789f 100644 --- a/packages/core/src/tracing/vercel-ai/index.ts +++ b/packages/core/src/tracing/vercel-ai/index.ts @@ -2,12 +2,12 @@ import type { Client } from '../../client'; import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes'; import type { Event } from '../../types-hoist/event'; import type { Span, SpanAttributes, SpanAttributeValue, SpanJSON, SpanOrigin } from '../../types-hoist/span'; +import { spanToJSON } from '../../utils/spanUtils'; import { GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE_ATTRIBUTE, GEN_AI_USAGE_INPUT_TOKENS_CACHED_ATTRIBUTE, } from '../ai/gen-ai-attributes'; import { getTruncatedJsonString } from '../ai/utils'; -import { spanToJSON } from '../../utils/spanUtils'; import { toolCallSpanMap } from './constants'; import type { TokenSummary } from './types'; import { accumulateTokensForParent, applyAccumulatedTokens } from './utils';