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.

47 lines (44 loc) • 1.5 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 { DecideEndEvent, DecideStartEvent } from './decide-events'; export function createRestrictedTelemetryDispatcher< RUNTIME_CONTEXT extends Context, >({ telemetry, }: { telemetry?: TelemetryOptions<RUNTIME_CONTEXT>; }): Omit< TelemetryDispatcher, | 'onStart' | 'onEnd' | 'experimental_onDecideStart' | 'experimental_onDecideEnd' > & { onStart: Callback<DecideStartEvent<RUNTIME_CONTEXT>>; onEnd: Callback<DecideEndEvent<RUNTIME_CONTEXT>>; } { const dispatcher = createTelemetryDispatcher({ telemetry }); return { ...dispatcher, onStart: event => dispatcher.experimental_onDecideStart?.({ ...event, runtimeContext: filterIncludedContext({ context: event.runtimeContext, includeContext: telemetry?.includeRuntimeContext, }), }), onEnd: event => dispatcher.experimental_onDecideEnd?.({ ...event, runtimeContext: filterIncludedContext({ context: event.runtimeContext, includeContext: telemetry?.includeRuntimeContext, }), }), }; }