import type { TelemetryExporter } from './telemetry.js'; /** * Optional Langfuse exporter. Adapts Fabric's `TelemetrySpan` shape to * Langfuse's tracing API. The Langfuse client is provided by the caller — * we don't take a hard dependency. * * Install peer dep: * ```sh * npm install langfuse * ``` * * Usage: * ```ts * import { Langfuse } from 'langfuse'; * import { langfuseExporter } from '@fabric-harness/sdk'; * * const langfuse = new Langfuse({ publicKey, secretKey, baseUrl }); * const exporter = langfuseExporter({ client: langfuse, defaultName: 'my-agent' }); * * await exporter.export({ * name: 'fabric.tool_end', * startedAt: '...', * endedAt: '...', * durationMs: 42, * attributes: { 'fabric.tool': 'bash' }, * }); * ``` */ export interface LangfuseClientLike { trace?(input: { name?: string; sessionId?: string; metadata?: Record; }): { id?: string; span?(input: LangfuseSpanInput): { id?: string; }; }; span?(input: LangfuseSpanInput): { id?: string; }; /** Optional flush hook (Langfuse has `flushAsync()` / `flush()`). */ flushAsync?(): Promise; flush?(): void | Promise; } interface LangfuseSpanInput { name: string; startTime?: Date; endTime?: Date; metadata?: Record; } export interface LangfuseExporterOptions { client: LangfuseClientLike; /** Default span name used when the telemetry span lacks one. */ defaultName?: string; /** Always-on attributes added to every span. */ attributes?: Record; /** When true, calls `client.flushAsync()` (or `flush()`) after each export. */ flushOnExport?: boolean; } export declare function langfuseExporter(options: LangfuseExporterOptions): TelemetryExporter; export {}; //# sourceMappingURL=langfuse.d.ts.map