/** * GitMem Diagnostics Channels * * Defines diagnostics_channel channels for zero-overhead instrumentation. * When no subscriber is attached, publish() is essentially a no-op. * * Pattern reference: @ibm/telemetry-js * */ import { channel, Channel } from "diagnostics_channel"; /** * Channel names for GitMem diagnostics */ export declare const CHANNEL_NAMES: { readonly TOOL_CALL: "gitmem:tool:call"; readonly CACHE_HIT: "gitmem:cache:hit"; readonly CACHE_MISS: "gitmem:cache:miss"; readonly DB_QUERY: "gitmem:db:query"; readonly EMBEDDING_CALL: "gitmem:embedding:call"; readonly ERROR: "gitmem:error"; }; /** * Tool call event payload */ export interface ToolCallEvent { tool: string; startTime: number; endTime?: number; durationMs?: number; success?: boolean; error?: string; params?: Record; } /** * Cache event payload */ export interface CacheEvent { key: string; type: "scar_search" | "decisions" | "wins" | "embeddings"; ageMs?: number; sizeBytes?: number; } /** * Database query event payload */ export interface DbQueryEvent { operation: string; table?: string; startTime: number; endTime?: number; durationMs?: number; rowCount?: number; success?: boolean; error?: string; } /** * Embedding call event payload */ export interface EmbeddingCallEvent { provider: string; model?: string; inputLength: number; startTime: number; endTime?: number; durationMs?: number; success?: boolean; error?: string; } /** * Error event payload */ export interface ErrorEvent { error: Error | string; context: string; timestamp: number; severity: "warning" | "error" | "fatal"; } /** * Diagnostics channels singleton */ declare class DiagnosticsChannels { readonly toolCall: Channel; readonly cacheHit: Channel; readonly cacheMiss: Channel; readonly dbQuery: Channel; readonly embeddingCall: Channel; readonly error: Channel; constructor(); /** * Publish tool call start event */ publishToolCallStart(tool: string, params?: Record): ToolCallEvent; /** * Publish tool call end event */ publishToolCallEnd(event: ToolCallEvent, success: boolean, error?: string): void; /** * Publish cache hit event */ publishCacheHit(key: string, type: CacheEvent["type"], ageMs?: number, sizeBytes?: number): void; /** * Publish cache miss event */ publishCacheMiss(key: string, type: CacheEvent["type"]): void; /** * Publish database query start event */ publishDbQueryStart(operation: string, table?: string): DbQueryEvent; /** * Publish database query end event */ publishDbQueryEnd(event: DbQueryEvent, success: boolean, rowCount?: number, error?: string): void; /** * Publish embedding call start event */ publishEmbeddingStart(provider: string, inputLength: number, model?: string): EmbeddingCallEvent; /** * Publish embedding call end event */ publishEmbeddingEnd(event: EmbeddingCallEvent, success: boolean, error?: string): void; /** * Publish error event */ publishError(error: Error | string, context: string, severity?: ErrorEvent["severity"]): void; /** * Check if any channel has subscribers */ hasSubscribers(): boolean; } export declare const diagnostics: DiagnosticsChannels; export { channel }; //# sourceMappingURL=channels.d.ts.map