eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
42 lines (41 loc) • 1.94 kB
TypeScript
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;
};