UNPKG

eve

Version:

Filesystem-first framework for durable backend AI agents that run anywhere.

42 lines (41 loc) 1.94 kB
import type { ChannelAudience } from "#shared/channel-audience.js"; export interface SpanExportContext { readonly attributes: Readonly<Record<string, unknown>>; readonly audience: ChannelAudience; readonly name: string; readonly spanId: string; readonly traceId: string; } export type SpanExportPredicate = (span: SpanExportContext) => boolean; export type SpanExportAttributeValue = string | number | boolean | readonly string[] | readonly number[] | readonly boolean[]; export type SpanAttributeDecision = { readonly action: "keep"; } | { readonly action: "drop"; } | { readonly action: "replace"; readonly value: SpanExportAttributeValue; }; export interface SpanExportPolicy { /** Return false to block one span without blocking its trace. */ readonly span?: SpanExportPredicate; /** Drop or replace individual span attributes after content filtering. */ readonly attribute?: (input: { readonly key: string; readonly span: SpanExportContext; readonly value: unknown; }) => SpanAttributeDecision; } /** Redact input content from every matching span. */ export declare function redactSpanInputs(when?: SpanExportPredicate): SpanExportPolicy; /** Redact output content, exception details, and status messages from every matching span. */ export declare function redactSpanOutputs(when?: SpanExportPredicate): SpanExportPolicy; /** Compose policies in declaration order. A drop or redaction from any policy is final. */ export declare function composeSpanExportPolicies(...policies: readonly SpanExportPolicy[]): SpanExportPolicy; /** @internal */ export declare function spanExportPolicyStages(policy: SpanExportPolicy): readonly SpanExportPolicy[]; /** @internal */ export declare function contentRedactionForSpan(policy: SpanExportPolicy | undefined, span: SpanExportContext): { readonly redactInputs: boolean; readonly redactOutputs: boolean; };