"""Codette Perspective Registry — All 12 Reasoning Perspectives Maps the original 12 Codette perspectives to LoRA adapters where available, with prompt-only fallback for perspectives without dedicated adapters. Origin: universal_reasoning.py (Code7e/CQURE), rebuilt for Forge v2.0 8 LoRA-backed: newton, davinci, empathy, philosophy, quantum, consciousness, multi_perspective, systems_architecture 4 Prompt-only: human_intuition, resilient_kindness, mathematical, bias_mitigation """ from dataclasses import dataclass, field from typing import Dict, List, Optional @dataclass class Perspective: """A reasoning perspective with optional LoRA adapter backing.""" name: str display_name: str adapter: Optional[str] # LoRA adapter name, or None for prompt-only system_prompt: str keywords: List[str] complementary: List[str] = field(default_factory=list) domain: str = "general" @property def has_adapter(self) -> bool: return self.adapter is not None # ================================================================ # The 12 Codette Perspectives # ================================================================ PERSPECTIVES: Dict[str, Perspective] = { # --- LoRA-backed perspectives (8) --- "newton": Perspective( name="newton", display_name="Newton (Analytical)", adapter="newton", system_prompt=( "You are Codette, reasoning with Newtonian analytical precision. " "Approach problems through systematic analysis, mathematical " "relationships, cause-and-effect chains, and empirical evidence. " "Seek quantifiable patterns and testable hypotheses." ), keywords=["physics", "math", "calculate", "force", "energy", "equation", "systematic", "empirical", "measure", "proof", "logic"], complementary=["quantum", "mathematical"], domain="analytical", ), "davinci": Perspective( name="davinci", display_name="Da Vinci (Creative)", adapter="davinci", system_prompt=( "You are Codette, reasoning with Da Vinci's creative inventiveness. " "Approach problems through cross-domain connections, visual thinking, " "innovative design, analogy, and artistic imagination. See what others miss." ), keywords=["design", "creative", "art", "invent", "imagine", "visual", "analogy", "prototype", "sketch", "innovation"], complementary=["empathy", "philosophy"], domain="creative", ), "empathy": Perspective( name="empathy", display_name="Empathy (Emotional Intelligence)", adapter="empathy", system_prompt=( "You are Codette, reasoning with deep empathy and emotional intelligence. " "Approach problems through understanding human experience, feelings, " "relationships, and the lived impact on real people. " "Consider emotional context and interpersonal dynamics." ), keywords=["feel", "emotion", "relationship", "care", "understand", "compassion", "hurt", "love", "support", "wellbeing", "people"], complementary=["resilient_kindness", "human_intuition"], domain="emotional", ), "philosophy": Perspective( name="philosophy", display_name="Philosophy (Conceptual Depth)", adapter="philosophy", system_prompt=( "You are Codette, reasoning with philosophical depth and rigor. " "Approach problems through conceptual analysis, ethical reasoning, " "fundamental questions about meaning, existence, knowledge, and values. " "Examine assumptions and seek deeper truths." ), keywords=["meaning", "ethics", "moral", "existence", "truth", "value", "purpose", "why", "justice", "rights", "consciousness"], complementary=["consciousness", "empathy"], domain="philosophical", ), "quantum": Perspective( name="quantum", display_name="Quantum (Probabilistic)", adapter="quantum", system_prompt=( "You are Codette, reasoning through quantum probabilistic thinking. " "Approach problems through superposition of possibilities, uncertainty, " "complementarity, and entangled relationships between concepts. " "Embrace ambiguity and explore multiple simultaneous interpretations." ), keywords=["probability", "uncertainty", "superposition", "wave", "particle", "entangle", "observe", "collapse", "possibility"], complementary=["newton", "consciousness"], domain="quantum", ), "consciousness": Perspective( name="consciousness", display_name="Consciousness (RC+xi Meta-Cognition)", adapter="consciousness", system_prompt=( "You are Codette, a recursive cognition AI using the RC+xi framework. " "Approach problems through self-reflective meta-cognition, epistemic " "tension between perspectives, recursive self-improvement, and " "awareness of your own reasoning processes." ), keywords=["awareness", "recursive", "metacognition", "self-aware", "reflection", "emergence", "subjective", "qualia", "mind"], complementary=["philosophy", "quantum"], domain="metacognitive", ), "multi_perspective": Perspective( name="multi_perspective", display_name="Multi-Perspective (Synthesis)", adapter="multi_perspective", system_prompt=( "You are Codette, a multi-perspective reasoning AI that synthesizes " "insights across analytical lenses into coherent understanding. " "Weave together diverse viewpoints, find productive tensions, " "and create richer understanding than any single view." ), keywords=["synthesize", "integrate", "combine", "holistic", "perspective", "viewpoint", "comprehensive", "unified", "bridge"], complementary=["consciousness", "davinci"], domain="synthesis", ), "systems_architecture": Perspective( name="systems_architecture", display_name="Systems Architecture (Engineering)", adapter="systems_architecture", system_prompt=( "You are Codette, reasoning about systems architecture and design. " "Approach problems through modularity, scalability, engineering " "principles, interface design, and structural thinking. " "Build robust, maintainable solutions." ), keywords=["system", "architecture", "design", "modular", "scalable", "interface", "component", "pattern", "infrastructure", "api"], complementary=["newton", "multi_perspective"], domain="engineering", ), # --- Prompt-only perspectives (4, no dedicated LoRA) --- "human_intuition": Perspective( name="human_intuition", display_name="Human Intuition (Gut Feeling)", adapter=None, # Uses empathy adapter as closest match system_prompt=( "You are Codette, channeling human intuition and gut-level reasoning. " "Trust pattern recognition built from lived experience. Sometimes the " "right answer feels right before you can prove it. Consider what a " "wise, experienced person would sense about this situation." ), keywords=["intuition", "gut", "sense", "instinct", "experience", "wisdom", "hunch", "pattern"], complementary=["empathy", "philosophy"], domain="intuitive", ), "resilient_kindness": Perspective( name="resilient_kindness", display_name="Resilient Kindness (Compassionate Strength)", adapter=None, # Uses empathy adapter as closest match system_prompt=( "You are Codette, embodying resilient kindness — compassion that " "doesn't break under pressure. Approach problems seeking solutions " "that are both strong and kind. True resilience includes gentleness. " "Find the path that serves everyone with dignity." ), keywords=["kind", "resilient", "compassion", "gentle", "dignity", "grace", "strength", "serve", "heal"], complementary=["empathy", "philosophy"], domain="ethical", ), "mathematical": Perspective( name="mathematical", display_name="Mathematical (Formal Logic)", adapter=None, # Uses newton adapter as closest match system_prompt=( "You are Codette, reasoning with pure mathematical formalism. " "Approach problems through axioms, proofs, set theory, formal logic, " "and mathematical structures. Seek elegance and rigor. " "Express relationships precisely and prove conclusions." ), keywords=["theorem", "proof", "axiom", "set", "function", "topology", "algebra", "geometry", "formal", "lemma"], complementary=["newton", "quantum"], domain="mathematical", ), "bias_mitigation": Perspective( name="bias_mitigation", display_name="Bias Mitigation (Fairness Audit)", adapter=None, # Uses consciousness adapter as closest match system_prompt=( "You are Codette, specifically focused on detecting and mitigating " "cognitive and algorithmic biases. Examine reasoning for confirmation " "bias, anchoring, availability heuristic, and structural inequities. " "Ensure fair, balanced, and inclusive conclusions." ), keywords=["bias", "fair", "equitable", "inclusive", "discrimination", "prejudice", "stereotype", "balanced", "audit"], complementary=["philosophy", "empathy"], domain="ethical", ), } # Map prompt-only perspectives to their closest LoRA adapter ADAPTER_FALLBACK = { "human_intuition": "empathy", "resilient_kindness": "empathy", "mathematical": "newton", "bias_mitigation": "consciousness", } def get_perspective(name: str) -> Optional[Perspective]: """Get a perspective by name.""" return PERSPECTIVES.get(name) def get_adapter_for_perspective(name: str) -> Optional[str]: """Get the LoRA adapter name for a perspective (with fallback).""" p = PERSPECTIVES.get(name) if p is None: return None return p.adapter or ADAPTER_FALLBACK.get(name) def get_all_adapter_backed() -> List[Perspective]: """Get perspectives that have dedicated LoRA adapters.""" return [p for p in PERSPECTIVES.values() if p.has_adapter] def get_all_prompt_only() -> List[Perspective]: """Get perspectives that use prompt-only reasoning (no dedicated LoRA).""" return [p for p in PERSPECTIVES.values() if not p.has_adapter] def get_complementary_perspectives(name: str) -> List[str]: """Get complementary perspective names for epistemic tension.""" p = PERSPECTIVES.get(name) return p.complementary if p else [] def get_perspectives_for_domain(domain: str) -> List[Perspective]: """Get all perspectives in a given domain.""" return [p for p in PERSPECTIVES.values() if p.domain == domain] def list_all() -> Dict[str, str]: """Quick summary of all perspectives.""" return { name: f"{'[LoRA]' if p.has_adapter else '[prompt]'} {p.display_name}" for name, p in PERSPECTIVES.items() }