UNPKG

ai

Version:

AI SDK by Vercel - build apps like ChatGPT, Claude, Gemini, and more with a single interface for any model using the Vercel AI Gateway or go direct to OpenAI, Anthropic, Google, or any other model provider.

45 lines (42 loc) • 1.53 kB
import type { Context } from '@ai-sdk/provider-utils'; import { createTelemetryDispatcher } from '../telemetry/create-telemetry-dispatcher'; import { filterIncludedContext } from '../telemetry/filter-included-context'; import type { TelemetryDispatcher } from '../telemetry/telemetry'; import type { TelemetryOptions } from '../telemetry/telemetry-options'; import type { Callback } from '../util/callback'; import type { EmbedStartEvent, EmbedEndEvent } from './embed-events'; /** * Filters runtime context before sending operation events to telemetry integrations. * User callbacks continue to receive the original context. */ export function createRestrictedTelemetryDispatcher< RUNTIME_CONTEXT extends Context, >({ telemetry, }: { telemetry?: TelemetryOptions<RUNTIME_CONTEXT>; }): Omit<TelemetryDispatcher, 'onStart' | 'onEnd'> & { onStart: Callback<EmbedStartEvent<RUNTIME_CONTEXT>>; onEnd: Callback<EmbedEndEvent<RUNTIME_CONTEXT>>; } { const dispatcher = createTelemetryDispatcher({ telemetry }); return { ...dispatcher, onStart: event => dispatcher.onStart?.({ ...event, runtimeContext: filterIncludedContext({ context: event.runtimeContext, includeContext: telemetry?.includeRuntimeContext, }), }), onEnd: event => dispatcher.onEnd?.({ ...event, runtimeContext: filterIncludedContext({ context: event.runtimeContext, includeContext: telemetry?.includeRuntimeContext, }), }), }; }