UNPKG

mcp-context-engineering

Version:

The intelligent context optimization system for AI coding assistants. Built with Cole's PRP methodology, Context Portal knowledge graphs, and production-ready MongoDB architecture.

136 lines (135 loc) 4.93 kB
import { ObjectId } from 'mongodb'; import { z } from 'zod'; // Project DNA Schema (Universal equivalent of Cole's CLAUDE.md) export const ProjectDNASchema = z.object({ project_id: z.string(), project_name: z.string(), // Coding standards and patterns (extracted from codebase) coding_standards: z.object({ style_guide: z.string(), naming_conventions: z.object({ variables: z.string(), functions: z.string(), classes: z.string(), files: z.string() }), code_organization: z.object({ directory_structure: z.string(), module_patterns: z.array(z.string()), import_conventions: z.array(z.string()) }), best_practices: z.array(z.string()), anti_patterns: z.array(z.string()) }), // Technology stack and architecture tech_stack: z.object({ languages: z.array(z.string()), frameworks: z.array(z.string()), libraries: z.array(z.string()), databases: z.array(z.string()), tools: z.array(z.string()), version_requirements: z.record(z.string()) }), // Project-specific rules and preferences project_rules: z.object({ development_guidelines: z.array(z.string()), testing_requirements: z.array(z.string()), documentation_standards: z.array(z.string()), deployment_patterns: z.array(z.string()), security_requirements: z.array(z.string()) }), // Architecture patterns and decisions architecture: z.object({ design_patterns: z.array(z.string()), architectural_decisions: z.array(z.object({ decision: z.string(), rationale: z.string(), alternatives_considered: z.array(z.string()), consequences: z.array(z.string()) })), integration_patterns: z.array(z.string()), data_flow_patterns: z.array(z.string()) }), // Context Portal workspace data workspace_context: z.object({ active_features: z.array(z.string()), current_priorities: z.array(z.string()), known_issues: z.array(z.string()), recent_changes: z.array(z.object({ change: z.string(), date: z.date(), impact: z.string() })) }) }); // Agent-specific project preferences export const AgentProjectPreferencesSchema = z.object({ cursor: z.object({ preferred_context_sections: z.array(z.string()), code_example_preferences: z.string(), explanation_depth: z.enum(['minimal', 'moderate', 'detailed']), focus_areas: z.array(z.string()) }), windsurf: z.object({ preferred_context_sections: z.array(z.string()), step_by_step_preference: z.boolean(), error_handling_emphasis: z.boolean(), explanation_depth: z.enum(['minimal', 'moderate', 'detailed']), focus_areas: z.array(z.string()) }), claude_code: z.object({ preferred_context_sections: z.array(z.string()), full_prp_preference: z.boolean(), comprehensive_context: z.boolean(), explanation_depth: z.enum(['minimal', 'moderate', 'detailed']), focus_areas: z.array(z.string()) }), generic: z.object({ preferred_context_sections: z.array(z.string()), balanced_approach: z.boolean(), explanation_depth: z.enum(['minimal', 'moderate', 'detailed']), focus_areas: z.array(z.string()) }) }); // Project evolution tracking export const ProjectEvolutionSchema = z.object({ version: z.number(), evolution_history: z.array(z.object({ version: z.number(), changes: z.object({ standards_updates: z.array(z.string()), pattern_additions: z.array(z.string()), rule_modifications: z.array(z.string()), architecture_changes: z.array(z.string()) }), reason: z.string(), timestamp: z.date(), effectiveness_impact: z.number().min(-1).max(1) })), learning_insights: z.array(z.object({ insight: z.string(), source: z.enum(['successful_pattern', 'failed_pattern', 'user_feedback', 'cross_project']), confidence: z.number().min(0).max(1), applied_date: z.date() })) }); // Main Project Context Schema export const ProjectContextSchema = z.object({ _id: z.instanceof(ObjectId).optional(), // Core project DNA project_dna: ProjectDNASchema, // Agent-specific preferences agent_preferences: AgentProjectPreferencesSchema, // Evolution and learning evolution: ProjectEvolutionSchema, // Embedding for project similarity embedding: z.array(z.number()), // Metadata metadata: z.object({ created_at: z.date(), updated_at: z.date(), last_accessed: z.date(), access_count: z.number(), active: z.boolean() }) });