mcp-ai-agent-guidelines
Version:
A comprehensive Model Context Protocol server providing advanced tools, resources, and prompts for implementing AI agent best practices
197 lines • 5.16 kB
TypeScript
/**
* Trace Logger for A2A Orchestration
*
* Provides structured tracing and observability for tool chains:
* - Correlation ID propagation
* - Execution timeline visualization
* - Performance metrics
* - Error tracking
* - Distributed tracing support
*/
import type { A2AContext } from "./a2a-context.js";
/**
* Trace event types
*/
export type TraceEventType = "chain_start" | "chain_end" | "tool_start" | "tool_end" | "tool_error" | "context_update";
/**
* Trace event
*/
export interface TraceEvent {
/** Event type */
type: TraceEventType;
/** Timestamp */
timestamp: Date;
/** Correlation ID */
correlationId: string;
/** Tool name (if applicable) */
toolName?: string;
/** Execution depth */
depth?: number;
/** Additional event data */
data?: Record<string, unknown>;
}
/**
* Trace span for a tool invocation
*/
export interface TraceSpan {
/** Span ID */
spanId: string;
/** Parent span ID (if nested) */
parentSpanId?: string;
/** Correlation ID */
correlationId: string;
/** Tool name */
toolName: string;
/** Start time */
startTime: Date;
/** End time */
endTime?: Date;
/** Duration in milliseconds */
durationMs?: number;
/** Execution depth */
depth: number;
/** Status */
status: "success" | "error" | "pending";
/** Error message if failed */
error?: string;
/** Input hash */
inputHash: string;
/** Output summary */
outputSummary?: string;
}
/**
* Trace Logger class for managing traces
*/
export declare class TraceLogger {
private events;
private spans;
private activeSpans;
/**
* Start a new chain trace
*
* @param context - A2A context
*/
startChain(context: A2AContext): void;
/**
* End a chain trace
*
* @param context - A2A context
* @param success - Whether chain succeeded
* @param error - Error message if failed
*/
endChain(context: A2AContext, success: boolean, error?: string): void;
/**
* Start a tool span
*
* @param context - A2A context
* @param toolName - Tool name
* @param inputHash - Input hash
* @returns Span ID
*/
startToolSpan(context: A2AContext, toolName: string, inputHash: string): string;
/**
* End a tool span
*
* @param spanId - Span ID
* @param success - Whether tool succeeded
* @param outputSummary - Output summary
* @param error - Error message if failed
*/
endToolSpan(spanId: string, success: boolean, outputSummary?: string, error?: string): void;
/**
* Get all spans for a correlation ID
*
* @param correlationId - Correlation ID
* @returns Array of spans
*/
getSpans(correlationId: string): TraceSpan[];
/**
* Get all events for a correlation ID
*
* @param correlationId - Correlation ID
* @returns Array of events
*/
getEvents(correlationId: string): TraceEvent[];
/**
* Get execution timeline for a correlation ID
*
* @param correlationId - Correlation ID
* @returns Timeline visualization data
*/
getTimeline(correlationId: string): {
spans: TraceSpan[];
totalDurationMs: number;
criticalPath: string[];
};
/**
* Export trace data for external systems
*
* @param correlationId - Correlation ID
* @param format - Export format
* @returns Formatted trace data
*/
exportTrace(correlationId: string, format?: "json" | "otlp"): string;
/**
* Clear all traces (for testing)
*/
clear(): void;
/**
* Get summary statistics
*/
getSummary(): {
totalChains: number;
totalSpans: number;
totalEvents: number;
avgSpansPerChain: number;
};
/**
* Maximum number of events to keep in memory
*/
private static readonly MAX_EVENTS;
/**
* Maximum number of spans to keep in memory per correlation ID
*/
private static readonly MAX_SPANS_PER_CORRELATION;
/**
* Maximum age of spans to keep (in milliseconds)
*/
private static readonly MAX_SPAN_AGE_MS;
/**
* Add a trace event
*/
private addEvent;
/**
* Clean up old spans to prevent memory leaks in long-running servers
*/
private cleanupOldSpans;
/**
* Force run cleanup of old spans (public wrapper for tests)
*
* NOTE: Deterministic API used by tests to exercise cleanup branches.
*/
forceCleanupOldSpans(): void;
/**
* Generate a unique span ID
*/
private generateSpanId;
/**
* Find critical path through spans
*/
private findCriticalPath;
}
/**
* Singleton trace logger instance
*/
export declare const traceLogger: TraceLogger;
/**
* Helper: Create trace from A2A context execution log
*
* @param context - A2A context
* @returns Trace data
*/
export declare function createTraceFromContext(context: A2AContext): {
correlationId: string;
spans: TraceSpan[];
totalDurationMs: number;
};
//# sourceMappingURL=trace-logger.d.ts.map