import type { InstrumentationContextRunner, InstrumentationHooks } from "#instrumentation/lifecycle.js"; /** Standard GenAI memory operations that eve can identify from its lifecycle. */ export type InstrumentationMemoryOperationName = "search_memory" | "upsert_memory"; /** One memory record in the OpenTelemetry GenAI memory-records shape. */ export interface InstrumentationMemoryRecord { readonly content: string; readonly id?: string; } /** Stable framework context for one memory operation. */ export interface InstrumentationMemoryOperation { readonly idempotencyKey: string; readonly operationName: InstrumentationMemoryOperationName; /** * The operation phase that caused eve to call the memory provider. * * This is eve-specific context; `operationName` is the corresponding * OpenTelemetry GenAI operation. */ readonly phase: string; /** The path-derived memory slot. */ readonly slot: string; /** The opaque memory scope key, used as eve's memory-store identifier. */ readonly storeId: string; readonly turnId?: string; } /** Bound session identity added when eve publishes a memory operation. */ export interface InstrumentationMemoryOperationEvent extends InstrumentationMemoryOperation { readonly traceSessionId?: string; readonly rootSessionId: string; readonly sessionId: string; } export interface InstrumentationMemoryOperationStartedEvent extends InstrumentationMemoryOperationEvent { readonly type: "memory.operation.started"; } export interface InstrumentationMemoryOperationCompletedEvent extends InstrumentationMemoryOperationEvent { readonly type: "memory.operation.completed"; /** The number of records the operation returned or changed, when known. */ readonly recordCount?: number; /** Content. Absent unless this provider's trace policy records inputs. */ readonly outputRecords?: readonly InstrumentationMemoryRecord[]; } export interface InstrumentationMemoryOperationFailedEvent extends InstrumentationMemoryOperationEvent { readonly type: "memory.operation.failed"; /** Content. Absent unless this provider's trace policy records outputs. */ readonly error?: unknown; } export type InstrumentationMemoryOperationTerminalEvent = InstrumentationMemoryOperationCompletedEvent | InstrumentationMemoryOperationFailedEvent; export interface InstrumentationMemoryExecutionOperation { readonly idempotencyKey: string; readonly sessionId: string; readonly turnId?: string; readonly type: "memory.operation"; } /** The terminal details a memory operation reports to instrumentation. */ export interface MemoryInstrumentationResult { readonly value: T; readonly recordCount?: number; readonly outputRecords?: readonly InstrumentationMemoryRecord[]; } /** Runtime bridge from memory providers to the active instrumentation pipeline. */ export interface MemoryInstrumentation { execute(operation: InstrumentationMemoryOperation, execute: () => Promise>): Promise; } export declare function createMemoryInstrumentation(input: { readonly resolveContext: () => { readonly hooks: InstrumentationHooks; readonly rootSessionId: string; readonly traceSessionId: string; }; readonly runInContext: InstrumentationContextRunner; readonly sessionId: string; }): MemoryInstrumentation; /** Runs one provider operation under memory instrumentation, when installed. */ export declare function instrumentMemoryOperation(instrumentation: MemoryInstrumentation | undefined, operation: InstrumentationMemoryOperation | (() => InstrumentationMemoryOperation), execute: () => Promise>): Promise;