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 { EvaluateEndEvent, EvaluateStartEvent } from './evaluate-events'; export function createRestrictedTelemetryDispatcher< RUNTIME_CONTEXT extends Context, >({ telemetry, }: { telemetry?: TelemetryOptions; }): Omit< TelemetryDispatcher, | 'onStart' | 'onEnd' | 'experimental_onEvaluateStart' | 'experimental_onEvaluateEnd' > & { onStart: Callback>; onEnd: Callback>; } { const dispatcher = createTelemetryDispatcher({ telemetry }); return { ...dispatcher, onStart: event => dispatcher.experimental_onEvaluateStart?.({ ...event, runtimeContext: filterIncludedContext({ context: event.runtimeContext, includeContext: telemetry?.includeRuntimeContext, }), }), onEnd: event => dispatcher.experimental_onEvaluateEnd?.({ ...event, runtimeContext: filterIncludedContext({ context: event.runtimeContext, includeContext: telemetry?.includeRuntimeContext, }), }), }; }