memory-engineering-mcp
Version:
🧠AI Memory System powered by MongoDB Atlas & Voyage AI - Autonomous memory management with zero manual work
94 lines • 3.65 kB
JavaScript
import { z } from 'zod';
// Enhanced validation schemas using Zod (official TypeScript validation library)
// Environment variable validation
export const EnvironmentSchema = z.object({
MONGODB_URI: z.string().url('MongoDB URI must be a valid URL'),
VOYAGE_API_KEY: z.string().min(10, 'Voyage API key must be at least 10 characters'),
MEMORY_ENGINEERING_DB: z.string().optional().default('memory_engineering'),
MEMORY_ENGINEERING_COLLECTION: z.string().optional().default('memory_engineering_documents'),
NODE_ENV: z.enum(['development', 'production', 'test']).optional().default('development'),
});
// Memory content validation
export const MemoryContentSchema = z.object({
memoryName: z.enum(['projectbrief', 'productContext', 'activeContext', 'systemPatterns', 'techContext', 'progress', 'codebaseMap']),
content: z.string()
.min(10, 'Memory content must be at least 10 characters')
.max(100000, 'Memory content must be less than 100,000 characters'),
projectPath: z.string().optional(),
});
// Project configuration validation
export const ProjectConfigSchema = z.object({
projectId: z.string().min(1, 'Project ID is required'),
projectName: z.string().min(1, 'Project name is required'),
createdAt: z.date().optional(),
lastModified: z.date().optional(),
});
// Search query validation
export const SearchQuerySchema = z.object({
query: z.string().min(1, 'Search query cannot be empty').max(1000, 'Search query too long'),
limit: z.number().int().min(1).max(100).optional().default(10),
projectPath: z.string().optional(),
});
// Code sync validation
export const CodeSyncSchema = z.object({
patterns: z.array(z.string()).min(1, 'At least one pattern is required'),
projectPath: z.string().optional(),
minChunkSize: z.number().int().min(10).max(10000).optional().default(80),
includeTests: z.boolean().optional().default(true),
forceRegenerate: z.boolean().optional().default(false),
});
// Validation helper functions
export function validateEnvironment(env) {
try {
return {
isValid: true,
data: EnvironmentSchema.parse(env),
errors: []
};
}
catch (error) {
if (error instanceof z.ZodError) {
return {
isValid: false,
data: null,
errors: error.issues.map((e) => `🔴 VALIDATION FAILED at ${e.path.join('.')}: ${e.message.toUpperCase()}! FIX IMMEDIATELY!`)
};
}
return {
isValid: false,
data: null,
errors: ['💀 CATASTROPHIC VALIDATION EXPLOSION! System cannot process this data! CHECK EVERYTHING!']
};
}
}
export function validateMemoryContent(data) {
try {
return {
isValid: true,
data: MemoryContentSchema.parse(data),
errors: []
};
}
catch (error) {
if (error instanceof z.ZodError) {
return {
isValid: false,
data: null,
errors: error.issues.map((e) => `🔴 VALIDATION FAILED at ${e.path.join('.')}: ${e.message.toUpperCase()}! FIX IMMEDIATELY!`)
};
}
return {
isValid: false,
data: null,
errors: ['💀 CATASTROPHIC VALIDATION EXPLOSION! System cannot process this data! CHECK EVERYTHING!']
};
}
}
// Legacy function for backward compatibility
export function validateMemoryStructure(_memoryName, _content) {
return {
isValid: true,
requiredSections: []
};
}
//# sourceMappingURL=validation-v5.js.map