@flavoai/fastfold
Version:
Flavo frontend package
108 lines • 3.41 kB
TypeScript
import { Request, Response, NextFunction } from 'express';
export interface ServerObservabilityConfig {
enabled: boolean;
appId: string;
endpoint: string;
trackErrors?: boolean;
}
export type ErrorCategory = 'backend' | 'ai' | 'integration' | 'database' | 'auth' | 'validation';
export type ErrorSeverity = 'critical' | 'error' | 'warning';
/**
* Unified error metadata - can include any relevant context
*/
export interface ErrorMetadata {
operation?: string;
latencyMs?: number;
provider?: string;
model?: string;
inputTokens?: number;
outputTokens?: number;
estimatedCost?: number;
integration?: string;
table?: string;
query?: string;
[key: string]: any;
}
/**
* Creates Express error middleware that captures backend errors
* and sends them to the observability collector.
*
* @example
* import { observabilityErrorMiddleware } from '@flavoai/fastfold';
*
* app.use(observabilityErrorMiddleware({
* enabled: true,
* appId: process.env.APP_ID,
* endpoint: 'https://superbuilder.app/api/observe'
* }));
*/
export declare function observabilityErrorMiddleware(config: ServerObservabilityConfig): (_err: Error, _req: Request, _res: Response, next: NextFunction) => void;
/**
* Initialize observability config for standalone tracking
* Call this once during app initialization
*/
export declare function initObservability(config: ServerObservabilityConfig): void;
/**
* Get the current observability config
*/
export declare function getObservabilityConfig(): ServerObservabilityConfig | null;
/**
* Unified error tracking function - works for all error types
*
* @example
* // AI error
* trackError(error, 'ai', {
* provider: 'openai',
* model: 'gpt-4o',
* operation: 'chat',
* latencyMs: 1234
* });
*
* // Integration error
* trackError(error, 'integration', {
* integration: 'stripe',
* operation: 'createPaymentIntent',
* customerId: 'cus_123'
* });
*
* // Generic backend error
* trackError(error, 'backend', { endpoint: '/api/users' });
*/
export declare function trackError(error: Error, category: ErrorCategory, metadata?: ErrorMetadata, context?: {
sessionId?: string;
visitorId?: string;
userId?: string;
endpoint?: string;
userAgent?: string;
}): void;
/**
* Track AI-specific errors (convenience wrapper)
*/
export declare function trackAIError(error: Error, metadata: ErrorMetadata & {
provider: string;
operation: string;
}, context?: {
sessionId?: string;
visitorId?: string;
userId?: string;
endpoint?: string;
}): void;
/**
* Track integration errors (convenience wrapper)
*/
export declare function trackIntegrationError(error: Error, integration: string, operation: string, metadata?: Omit<ErrorMetadata, 'integration' | 'operation'>, context?: {
sessionId?: string;
visitorId?: string;
userId?: string;
endpoint?: string;
}): void;
export interface RequestTrackingConfig extends ServerObservabilityConfig {
trackRequests?: boolean;
excludePaths?: string[];
}
/**
* Optional middleware to track all requests (for debugging/analytics)
* Note: This generates a lot of data, use carefully in production
*/
export declare function observabilityRequestMiddleware(config: RequestTrackingConfig): (_req: Request, _res: Response, next: NextFunction) => void;
//# sourceMappingURL=observability.d.ts.map