@juspay/neurolink
Version:
Universal AI Development Platform with working MCP integration, multi-provider support, and professional CLI. Built-in tools operational, 58+ external MCP servers discoverable. Connect to filesystem, GitHub, database operations, and more. Build, test, and
66 lines (65 loc) • 2.3 kB
TypeScript
import type { AnalyticsData } from "./types.js";
import type { TokenUsage } from "../types/providers.js";
import type { ToolCall, ToolResult } from "../types/streamTypes.js";
/**
* Stream analytics result from Vercel AI SDK streamText
*/
export interface StreamTextResult {
textStream: AsyncIterable<string>;
text: Promise<string>;
usage: Promise<{
promptTokens: number;
completionTokens: number;
totalTokens: number;
} | undefined>;
response: Promise<{
id?: string;
model?: string;
timestamp?: number | Date;
} | undefined>;
finishReason: Promise<"stop" | "length" | "content-filter" | "tool-calls" | "error" | "other" | "unknown">;
toolResults?: Promise<ToolResult[]>;
toolCalls?: Promise<ToolCall[]>;
}
/**
* Interface for collecting analytics from streaming results
*/
export interface StreamAnalyticsCollector {
collectUsage(result: StreamTextResult): Promise<TokenUsage>;
collectMetadata(result: StreamTextResult): Promise<ResponseMetadata>;
createAnalytics(provider: string, model: string, result: StreamTextResult, responseTime: number, metadata?: Record<string, unknown>): Promise<AnalyticsData>;
}
/**
* Response metadata from stream result
*/
export interface ResponseMetadata {
id?: string;
model?: string;
timestamp?: number;
finishReason?: string;
}
/**
* Base implementation for collecting analytics from Vercel AI SDK stream results
*/
export declare class BaseStreamAnalyticsCollector implements StreamAnalyticsCollector {
/**
* Collect token usage from stream result
*/
collectUsage(result: StreamTextResult): Promise<TokenUsage>;
/**
* Collect response metadata from stream result
*/
collectMetadata(result: StreamTextResult): Promise<ResponseMetadata>;
/**
* Create comprehensive analytics from stream result
*/
createAnalytics(provider: string, model: string, result: StreamTextResult, responseTime: number, metadata?: Record<string, unknown>): Promise<AnalyticsData>;
/**
* Clean up resources and force garbage collection if needed
*/
cleanup(): void;
}
/**
* Global instance of stream analytics collector
*/
export declare const streamAnalyticsCollector: BaseStreamAnalyticsCollector;