UNPKG

tryaii-mcp-server

Version:

TryAII MCP Server - 15+ AI models with comparison, cost tracking, and collective intelligence

106 lines 4.05 kB
import mongoose, { Schema } from 'mongoose'; const BrainsSessionSchema = new Schema({ userId: { type: String, required: true, index: true }, apiKeyId: { type: String, required: true, index: true }, request: { question: { type: String, required: true }, temperature: Number, maxTokens: Number, enableWebSearch: Boolean }, modelInteractions: [{ modelId: { type: String, required: true, enum: ['o3', 'claude-opus-4', 'deepseek-chat', 'gemini-2.5-pro', 'grok-3'] }, provider: { type: String, required: true }, inputTokens: { type: Number, required: true, min: 0 }, outputTokens: { type: Number, required: true, min: 0 }, thinkingTokens: { type: Number, default: 0, min: 0 }, // 🆕 Reasoning tokens totalTokens: { type: Number, default: 0, min: 0 }, // 🆕 Total tokens cost: { type: Number, required: true, min: 0, get: (v) => parseFloat(v.toFixed(6)) }, costBreakdown: { inputCost: { type: Number, default: 0, min: 0 }, outputCost: { type: Number, default: 0, min: 0 }, thinkingCost: { type: Number, default: 0, min: 0 } // Same as output pricing }, latency: { type: Number, required: true, min: 0 }, success: { type: Boolean, required: true }, errorMessage: String, fullResponse: String, // responsePreview field removed for storage optimization timestamp: { type: String }, requestMetadata: mongoose.Schema.Types.Mixed }], brainsResults: { htmlReportPath: String, htmlReportUrl: String, summaryGenerated: { type: Boolean, default: false }, aggregatedStats: { totalInputTokens: { type: Number, default: 0 }, totalOutputTokens: { type: Number, default: 0 }, totalThinkingTokens: { type: Number, default: 0 }, // 🆕 Total thinking tokens totalTokens: { type: Number, default: 0 }, // 🆕 Total all tokens averageLatency: { type: Number, default: 0 }, successfulModels: { type: Number, default: 0 }, failedModels: { type: Number, default: 0 } }, costBreakdown: { totalInputCost: { type: Number, default: 0 }, totalOutputCost: { type: Number, default: 0 }, totalThinkingCost: { type: Number, default: 0 } } }, clientMetadata: { ipAddress: String, userAgent: String, requestId: String }, balanceUpdate: { attempted: { type: Boolean, default: false }, success: { type: Boolean, default: false }, errorMessage: String, transactionId: String, balanceAfter: { type: Number, get: (v) => v ? parseFloat(v.toFixed(6)) : v } }, totalCost: { type: Number, required: true, min: 0, get: (v) => parseFloat(v.toFixed(6)) }, duration: { type: Number, required: true, min: 0 }, status: { type: String, enum: ['processing', 'success', 'partial', 'error', 'timeout'], required: true, default: 'processing' } }, { timestamps: true, versionKey: false }); // Add indexes BrainsSessionSchema.index({ userId: 1, createdAt: -1 }); BrainsSessionSchema.index({ apiKeyId: 1, createdAt: -1 }); BrainsSessionSchema.index({ totalCost: 1, createdAt: -1 }); BrainsSessionSchema.index({ status: 1 }); BrainsSessionSchema.index({ 'modelInteractions.modelId': 1, createdAt: -1 }); BrainsSessionSchema.index({ 'brainsResults.summaryGenerated': 1, createdAt: -1 }); export function createBrainsSessionModel(connection) { return connection.model('MCP_BrainsSession', BrainsSessionSchema); } //# sourceMappingURL=BrainsSession.js.map