import type { EventContext, ObservationEndData, ObservationHandle, ObservationStartContext, ObservabilityConfig, ObservabilitySink, PropagationContext, ScoreRecord, TraceEndData, TraceHandle, TraceStartContext } from './types.js'; export interface ObservabilityContext { traceId: string; /** 根会话 ID(启动 trace 的 session)。子 Agent 的 on_complete 不会结束 trace */ rootSessionId?: string; currentObservationId?: string; /** observation 栈:维护自动父子嵌套关系,栈顶为当前活跃的 observation */ observationStack?: string[]; sampled: boolean; startTime: number; metadata?: Record; /** trace 是否已结束(由 on_complete/endTrace 置位),防止 runWithTrace 成功路径覆盖错误状态 */ ended?: boolean; /** 运行环境(dev/prod/test),贯穿整个 trace 及其 observations */ environment?: string; /** 全局标签,贯穿整个 trace 及其 observations */ tags?: string[]; /** 关联提示词/agent 配置版本 */ promptVersion?: string; } export declare class NoOpObservabilitySink implements ObservabilitySink { startTrace(ctx: TraceStartContext): TraceHandle; endTrace(_traceId: string, _data?: TraceEndData): void; startObservation(ctx: ObservationStartContext): ObservationHandle; endObservation(_observationId: string, _data?: ObservationEndData): void; recordEvent(_ctx: EventContext): void; recordScore(_score: ScoreRecord): void; } export declare class ObservabilityManager implements ObservabilitySink { private storage; private sink; private config; constructor(sink?: ObservabilitySink, config?: ObservabilityConfig); configure(config: ObservabilityConfig): void; setSink(sink: ObservabilitySink): void; getTraceContext(): ObservabilityContext | undefined; runWithContext(context: ObservabilityContext, fn: () => T): T; runWithTrace(ctx: TraceStartContext, fn: () => T | Promise): Promise; /** * 跨进程继续 trace:在子进程(delegate_task / A2A)中,用父进程传入的 * PropagationContext 重建观测上下文,使子进程的 observations 挂到同一棵 trace 树下。 * 不会结束 trace(trace 生命周期由父进程拥有),仅在本进程内传播上下文。 */ continueTrace(propCtx: PropagationContext, fn: () => T | Promise): Promise; /** 导出当前上下文为可跨进程传播的 PropagationContext(供注入到子调用参数/HTTP 头) */ getPropagationContext(): PropagationContext | undefined; startTrace(ctx: TraceStartContext): Promise; endTrace(traceId: string, data?: TraceEndData): void; startObservation(ctx: ObservationStartContext): Promise; endObservation(observationId: string, data?: ObservationEndData): void; recordEvent(ctx: EventContext): Promise; recordScore(score: ScoreRecord): Promise; private shouldSample; private isSampled; private sanitize; } export declare function generateObservabilityId(prefix?: string): string; //# sourceMappingURL=sink.d.ts.map