CoolFace
Datasetpublic

basant307/AI_Governance_Project

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes48downloads
trace-context.ts68 linesDownload Raw Back to telemetry
1/**2 * @license3 * Copyright 2025 Qwen4 * SPDX-License-Identifier: Apache-2.05 */6 7import { trace, isSpanContextValid, INVALID_TRACEID } from '@opentelemetry/api';8import type { Span } from '@opentelemetry/api';9import { getSessionContext } from './session-context.js';10 11export const ZERO_TRACE_ID = INVALID_TRACEID;12 13export interface TraceContext {14  traceId: string;15  spanId: string;16  traceFlags: number;17}18 19function extractTraceContext(span: Span | undefined): TraceContext | null {20  const ctx = span?.spanContext();21  if (ctx && isSpanContextValid(ctx)) {22    return {23      traceId: ctx.traceId,24      spanId: ctx.spanId,25      traceFlags: ctx.traceFlags,26    };27  }28  return null;29}30 31export function getActiveSpanTraceContext(): TraceContext | null {32  try {33    return extractTraceContext(trace.getActiveSpan());34  } catch {35    return null;36  }37}38 39export function getSessionRootTraceContext(): TraceContext | null {40  try {41    const sessionCtx = getSessionContext();42    return extractTraceContext(43      sessionCtx ? trace.getSpan(sessionCtx) : undefined,44    );45  } catch {46    return null;47  }48}49 50export function getTraceContext(): TraceContext | null {51  return getActiveSpanTraceContext() ?? getSessionRootTraceContext();52}53 54export function formatTraceparent(ctx: TraceContext): string {55  const flags = (ctx.traceFlags & 0xff).toString(16).padStart(2, '0');56  return `00-${ctx.traceId}-${ctx.spanId}-${flags}`;57}58 59let shellTracePropagationEnabled = false;60 61export function setShellTracePropagation(enabled: boolean): void {62  shellTracePropagationEnabled = enabled;63}64 65export function isShellTracePropagationEnabled(): boolean {66  return shellTracePropagationEnabled;67}68 
basant307/AI_Governance_Project · CoolFace