diff --git a/apps/sim/app/api/copilot/chat/stream/route.test.ts b/apps/sim/app/api/copilot/chat/stream/route.test.ts index fc0e429a189..edcdaac695c 100644 --- a/apps/sim/app/api/copilot/chat/stream/route.test.ts +++ b/apps/sim/app/api/copilot/chat/stream/route.test.ts @@ -1,9 +1,5 @@ import { trace } from '@opentelemetry/api' -import { - BasicTracerProvider, - InMemorySpanExporter, - SimpleSpanProcessor, -} from '@opentelemetry/sdk-trace-base' +import { InMemorySpanExporter, SimpleSpanProcessor, TracerProvider } from '@opentelemetry/sdk-trace' import { authMockFns } from '@sim/testing' import { NextRequest } from 'next/server' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' @@ -209,7 +205,7 @@ describe('copilot chat stream replay route', () => { it('ends a still-running replay at its cap without a terminal so the client re-attaches', async () => { const exporter = new InMemorySpanExporter() trace.setGlobalTracerProvider( - new BasicTracerProvider({ spanProcessors: [new SimpleSpanProcessor(exporter)] }) + new TracerProvider({ spanProcessors: [new SimpleSpanProcessor({ exporter })] }) ) vi.useFakeTimers() getLatestRunForStream.mockResolvedValue({ diff --git a/apps/sim/instrumentation-node.ts b/apps/sim/instrumentation-node.ts index fa33c50b228..ccf71fe631c 100644 --- a/apps/sim/instrumentation-node.ts +++ b/apps/sim/instrumentation-node.ts @@ -11,7 +11,7 @@ import type { SamplingResult, Span, SpanProcessor, -} from '@opentelemetry/sdk-trace-base' +} from '@opentelemetry/sdk-trace' import { createLogger } from '@sim/logger' import { TraceAttr } from '@/lib/mothership/generated/trace-attributes-v1' import { env } from './lib/core/config/env' @@ -181,9 +181,8 @@ async function initializeOpenTelemetry() { const { PeriodicExportingMetricReader } = await import('@opentelemetry/sdk-metrics') const { OTLPLogExporter } = await import('@opentelemetry/exporter-logs-otlp-http') const { BatchLogRecordProcessor } = await import('@opentelemetry/sdk-logs') - const { BatchSpanProcessor } = await import('@opentelemetry/sdk-trace-node') - const { TraceIdRatioBasedSampler, SamplingDecision } = await import( - '@opentelemetry/sdk-trace-base' + const { BatchSpanProcessor, TraceIdRatioBasedSampler, SamplingDecision } = await import( + '@opentelemetry/sdk-trace' ) // Drops Next framework spans, inherits SAMPLED from business @@ -255,7 +254,8 @@ async function initializeOpenTelemetry() { }) } - const batchProcessor = new BatchSpanProcessor(exporter, { + const batchProcessor = new BatchSpanProcessor({ + exporter, maxQueueSize: telemetryConfig.batchSettings.maxQueueSize, maxExportBatchSize: telemetryConfig.batchSettings.maxExportBatchSize, scheduledDelayMillis: telemetryConfig.batchSettings.scheduledDelayMillis, diff --git a/apps/sim/lib/mothership/observability/timing.test.ts b/apps/sim/lib/mothership/observability/timing.test.ts index 5d87063eb05..fef1e7bb7e7 100644 --- a/apps/sim/lib/mothership/observability/timing.test.ts +++ b/apps/sim/lib/mothership/observability/timing.test.ts @@ -1,10 +1,6 @@ import { context, SpanStatusCode, trace } from '@opentelemetry/api' import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks' -import { - BasicTracerProvider, - InMemorySpanExporter, - SimpleSpanProcessor, -} from '@opentelemetry/sdk-trace-base' +import { InMemorySpanExporter, SimpleSpanProcessor, TracerProvider } from '@opentelemetry/sdk-trace' import { dbChainMockFns } from '@sim/testing/mocks/database.mock' import { afterAll, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest' import { createTracedCliTransport } from '@/lib/mothership/agent-cli/traced-transport' @@ -17,7 +13,7 @@ const transaction = dbChainMockFns.transaction describe('Mothership boundary timing', () => { const exporter = new InMemorySpanExporter() - const provider = new BasicTracerProvider({ spanProcessors: [new SimpleSpanProcessor(exporter)] }) + const provider = new TracerProvider({ spanProcessors: [new SimpleSpanProcessor({ exporter })] }) const manager = new AsyncLocalStorageContextManager() beforeAll(() => { diff --git a/apps/sim/lib/mothership/request/lifecycle/headless.test.ts b/apps/sim/lib/mothership/request/lifecycle/headless.test.ts index 14976927672..43f5f801369 100644 --- a/apps/sim/lib/mothership/request/lifecycle/headless.test.ts +++ b/apps/sim/lib/mothership/request/lifecycle/headless.test.ts @@ -1,6 +1,6 @@ import { propagation, trace } from '@opentelemetry/api' import { W3CTraceContextPropagator } from '@opentelemetry/core' -import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base' +import { TracerProvider } from '@opentelemetry/sdk-trace' import { beforeEach, describe, expect, it, vi } from 'vitest' import type { OrchestratorResult } from '@/lib/mothership/request/types' @@ -27,7 +27,7 @@ function createLifecycleResult(overrides?: Partial): Orchest describe('runHeadlessCopilotLifecycle', () => { beforeEach(() => { - trace.setGlobalTracerProvider(new BasicTracerProvider()) + trace.setGlobalTracerProvider(new TracerProvider()) propagation.setGlobalPropagator(new W3CTraceContextPropagator()) }) diff --git a/apps/sim/lib/mothership/request/lifecycle/start.test.ts b/apps/sim/lib/mothership/request/lifecycle/start.test.ts index 0510aaa6fdc..d547cf46957 100644 --- a/apps/sim/lib/mothership/request/lifecycle/start.test.ts +++ b/apps/sim/lib/mothership/request/lifecycle/start.test.ts @@ -1,6 +1,6 @@ import { propagation, trace } from '@opentelemetry/api' import { W3CTraceContextPropagator } from '@opentelemetry/core' -import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base' +import { TracerProvider } from '@opentelemetry/sdk-trace' import { dbChainMockFns, resetDbChainMock, resetEnvFlagsMock, setEnvFlags } from '@sim/testing' import { billingAttributionMock, @@ -187,7 +187,7 @@ describe('createSSEStream terminal error handling', () => { }, }) ) - trace.setGlobalTracerProvider(new BasicTracerProvider()) + trace.setGlobalTracerProvider(new TracerProvider()) propagation.setGlobalPropagator(new W3CTraceContextPropagator()) vi.stubGlobal( 'fetch', diff --git a/apps/sim/lib/mothership/request/session/replay-budget.integration.ts b/apps/sim/lib/mothership/request/session/replay-budget.integration.ts index d24837d9f7d..51a94f73518 100644 --- a/apps/sim/lib/mothership/request/session/replay-budget.integration.ts +++ b/apps/sim/lib/mothership/request/session/replay-budget.integration.ts @@ -132,7 +132,7 @@ vi.mock('@/lib/mothership/request/lifecycle/run', () => ({ })) import { trace } from '@opentelemetry/api' -import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base' +import { TracerProvider } from '@opentelemetry/sdk-trace' import { db } from '@sim/db' import { copilotChats, copilotRuns, permissions, user, workflow, workspace } from '@sim/db/schema' import { generateId } from '@sim/utils/id' @@ -513,7 +513,7 @@ describe.runIf(Boolean(redisUrl))('a turn whose stream exhausts its replay budge beforeAll(() => { trace.disable() trace.setGlobalTracerProvider( - new BasicTracerProvider({ + new TracerProvider({ spanProcessors: [ { onStart: () => {}, diff --git a/apps/sim/package.json b/apps/sim/package.json index dc0d465d8fd..1f33dc7c00c 100644 --- a/apps/sim/package.json +++ b/apps/sim/package.json @@ -115,8 +115,7 @@ "@opentelemetry/sdk-logs": "0.221.0", "@opentelemetry/sdk-metrics": "2.10.0", "@opentelemetry/sdk-node": "0.221.0", - "@opentelemetry/sdk-trace-base": "2.10.0", - "@opentelemetry/sdk-trace-node": "2.10.0", + "@opentelemetry/sdk-trace": "2.10.0", "@opentelemetry/semantic-conventions": "^1.32.0", "@radix-ui/react-avatar": "1.3.1", "@radix-ui/react-checkbox": "1.4.1", diff --git a/bun.lock b/bun.lock index 37837c8a373..a682761e128 100644 --- a/bun.lock +++ b/bun.lock @@ -229,8 +229,7 @@ "@opentelemetry/sdk-logs": "0.221.0", "@opentelemetry/sdk-metrics": "2.10.0", "@opentelemetry/sdk-node": "0.221.0", - "@opentelemetry/sdk-trace-base": "2.10.0", - "@opentelemetry/sdk-trace-node": "2.10.0", + "@opentelemetry/sdk-trace": "2.10.0", "@opentelemetry/semantic-conventions": "^1.32.0", "@radix-ui/react-avatar": "1.3.1", "@radix-ui/react-checkbox": "1.4.1",