@tehreet/conduit
Version:
LLM API gateway with intelligent routing, robust process management, and health monitoring
86 lines • 2.12 kB
TypeScript
import { EventEmitter } from 'events';
export interface UsageRecord {
projectId: string;
agentId: string;
model: string;
inputTokens: number;
outputTokens: number;
duration?: number;
timestamp: string;
cost?: number;
}
export interface CostReport {
totalCost: number;
costByModel: Record<string, number>;
costByAgent: Record<string, number>;
tokenUsage: {
input: number;
output: number;
total: number;
};
}
export interface PerformanceMetrics {
model: string;
latency: number;
tokensPerSecond: number;
projectId: string;
agentId: string;
timestamp: string;
}
export declare class SynapseFeatures extends EventEmitter {
private usageLogPath;
private performanceLogPath;
private telemetryEndpoint?;
private modelPricing;
constructor(config?: {
dataDir?: string;
telemetryEndpoint?: string;
});
private ensureDataDir;
/**
* Track model usage for a request
*/
trackUsage(params: {
projectId: string;
agentId: string;
model: string;
inputTokens: number;
outputTokens?: number;
duration?: number;
}): Promise<void>;
/**
* Get project costs for a time period
*/
getProjectCosts(projectId: string, since?: Date): Promise<CostReport>;
/**
* Record performance metrics
*/
recordPerformance(params: PerformanceMetrics): Promise<void>;
/**
* Query usage records
*/
private queryUsage;
/**
* Calculate cost for token usage
*/
private calculateCost;
/**
* Append record to NDJSON log file
*/
private appendToLog;
/**
* Send telemetry to Synapse
*/
private sendTelemetry;
/**
* Get usage statistics
*/
getStats(projectId?: string, days?: number): Promise<{
totalRequests: number;
totalTokens: number;
totalCost: number;
averageTokensPerRequest: number;
modelDistribution: Record<string, number>;
}>;
}
//# sourceMappingURL=synapse-features.d.ts.map