77import type { SdkLayerConfig } from './sdkLayerConfig' ;
88import { AzureMonitorTraceExporter } from '@azure/monitor-opentelemetry-exporter' ;
99import { NodeSdk } from '@effect/opentelemetry' ;
10+ import type { ExportResult } from '@opentelemetry/core' ;
1011import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http' ;
11- import { ConsoleSpanExporter } from '@opentelemetry/sdk-trace-base' ;
12+ import { ConsoleSpanExporter , type ReadableSpan } from '@opentelemetry/sdk-trace-base' ;
1213import { Global } from '@salesforce/core/global' ;
1314import { join } from 'node:path' ;
1415import { DEFAULT_AI_CONNECTION_STRING , isTelemetryExtensionConfigurationEnabled } from './appInsights' ;
1516import { FileSpanExporterNode } from './fileSpanExporterNode' ;
1617import { getConsoleTracesEnabled , getFileTracesEnabled , getLocalTracesEnabled } from './localTracing' ;
1718import { O11ySpanExporter } from './o11ySpanExporter' ;
1819import { SpanTransformProcessor } from './spanTransformProcessor' ;
20+ import { isCommandSpan , isTopLevelSpan } from './spanUtils' ;
21+
22+ class FilteredAzureMonitorTraceExporter extends AzureMonitorTraceExporter {
23+ public override async export (
24+ spans : ReadableSpan [ ] ,
25+ resultCallback : ( result : ExportResult ) => void
26+ ) : Promise < void > {
27+ const filteredSpans = spans . filter ( span => isTopLevelSpan ( span ) || isCommandSpan ( span ) ) ;
28+ return super . export ( filteredSpans , resultCallback ) ;
29+ }
30+ }
1931
2032export const NodeSdkLayerFor = ( { extensionName, extensionVersion, o11yEndpoint, productFeatureId } : SdkLayerConfig ) =>
2133 NodeSdk . layer ( ( ) => ( {
@@ -33,7 +45,7 @@ export const NodeSdkLayerFor = ({ extensionName, extensionVersion, o11yEndpoint,
3345 ...( isTelemetryExtensionConfigurationEnabled ( )
3446 ? [
3547 new SpanTransformProcessor (
36- new AzureMonitorTraceExporter ( {
48+ new FilteredAzureMonitorTraceExporter ( {
3749 connectionString : DEFAULT_AI_CONNECTION_STRING ,
3850 storageDirectory : join ( Global . SF_DIR , 'vscode-extensions-telemetry' )
3951 } ) ,
0 commit comments