UNPKG

@juspay/neurolink

Version:

The pipe layer of an AI nervous system: one interface connecting provider neurons to your application, across three inference types — generate, stream and decide. `decide` returns typed, calibrated judgements from a non-generative model (~400ms, ~$0.00002

48 lines (47 loc) • 2.06 kB
import { context, ROOT_CONTEXT, trace, isSpanContextValid, } from "@opentelemetry/api"; const requests = new Map(); /** Correlation belongs to the in-flight HTTP request, not to an async callback. */ export function registerProxyRequestTraceContext(requestId, ids) { requests.set(requestId, ids); } /** Release once transport and terminal accounting have settled. */ export function releaseProxyRequestTraceContext(requestId) { requests.delete(requestId); } /** Internal fallback records share their parent request's trace. */ export function getProxyRequestTraceContext(requestId) { return (requests.get(requestId) ?? requests.get(requestId.replace(/:codex-fallback$/, ""))); } /** Retain IDs and sampling flags before deferred processing leaves the request. */ export function resolveProxyLogTraceContext(record) { const saved = typeof record.requestId === "string" ? getProxyRequestTraceContext(record.requestId) : undefined; const active = trace.getSpanContext(context.active()); const ids = typeof record.traceId === "string" && typeof record.spanId === "string" ? { traceId: record.traceId, spanId: record.spanId } : (saved ?? active); if (!ids) { return undefined; } const traceFlags = typeof record.traceFlags === "number" && Number.isInteger(record.traceFlags) && record.traceFlags >= 0 && record.traceFlags <= 255 ? record.traceFlags : saved?.traceId === ids.traceId ? saved.traceFlags : active?.traceId === ids.traceId ? active.traceFlags : 0; const result = { ...ids, traceFlags }; return isSpanContextValid(result) ? { traceId: result.traceId, spanId: result.spanId, traceFlags } : undefined; } /** Populate native OTLP correlation, including valid unsampled contexts. */ export function proxyLogContext(record) { const ids = resolveProxyLogTraceContext(record); return ids ? trace.setSpanContext(ROOT_CONTEXT, ids) : context.active(); }