UNPKG

@varia-bly/variably-sdk

Version:

Official JavaScript/TypeScript SDK for Variably feature flags, experimentation, LLM experiments with React hooks, and real-time dynamic configurations

119 lines 3.75 kB
/** * GraphQL client for Variably API */ import { VariablyConfig, UserContext, Event, FlagEvaluationResponse, GateEvaluationResponse, BatchFlagEvaluationResponse, ExperimentMetric } from './types'; import { Logger } from './logger'; import { MetricsCollector } from './metrics'; export declare class GraphQLClient { private baseUrl; private apiKey; private timeout; private retryAttempts; private logger; private metrics; constructor(config: Required<VariablyConfig>, logger: Logger, metrics: MetricsCollector); /** * Evaluate a single feature flag */ evaluateFlag(flagKey: string, context: UserContext): Promise<FlagEvaluationResponse>; /** * Evaluate multiple feature flags in batch */ evaluateFlags(flagKeys: string[], context: UserContext): Promise<BatchFlagEvaluationResponse>; /** * Evaluate a feature gate */ evaluateGate(gateKey: string, context: UserContext): Promise<GateEvaluationResponse>; /** * Track a single event */ trackEvent(event: Event): Promise<void>; /** * Track multiple events in batch */ trackEvents(events: Event[]): Promise<void>; /** * Track experiment metric */ trackExperimentMetric(experimentId: string, metric: ExperimentMetric): Promise<void>; /** * Logout and blacklist current token */ logout(): Promise<void>; /** * Execute LLM prompt */ executeLLMPrompt(messages: Array<{ role: string; content: string; }>, provider: string, model: string, temperature?: number, maxTokens?: number): Promise<{ content: string; model: string; provider: string; tokenUsage: { promptTokens: number; completionTokens: number; totalTokens: number; estimatedCost: number; }; finishReason: string; }>; /** * Evaluate a prompt experiment - selects variant, executes LLM, and saves evaluation * This is the recommended method for prompt experiments as it saves evaluation data */ evaluatePromptExperiment(experimentKey: string, context: UserContext, inputVariables?: Record<string, any>, metadata?: Record<string, any>): Promise<{ executionId: string; experimentId: string; variantUsed: string; content: string; model: string; provider: string; tokenUsage: { promptTokens: number; completionTokens: number; totalTokens: number; estimatedCost: number; }; latencyMs: number; qualityScore?: number; }>; /** * Execute a GraphQL query */ private executeQuery; /** * Execute a GraphQL mutation */ private executeMutation; /** * Execute a GraphQL request with retry logic */ private executeGraphQL; /** * Execute the actual HTTP request */ private makeRequest; /** * Handle HTTP error responses */ private handleHttpError; /** * Determine if an error should trigger a retry */ private shouldRetry; /** * Convert SDK UserContext to GraphQL input format */ private convertUserContext; /** * Track a success metric for an LLM prompt experiment * Uses the sdkTrackExperimentMetric GraphQL mutation */ trackSuccessMetric(experimentId: string, metricName: string, metricKey: string, userId: string, sessionId?: string, variantId?: string, variantKey?: string, value?: number, metadata?: Record<string, any>): Promise<void>; /** * Sleep for a given number of milliseconds */ private sleep; } //# sourceMappingURL=graphql-client.d.ts.map