@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
JavaScript
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();
}