"""White Rabbit — Deep truth-seeking mode. Not general chat. Not the default. Activates when user deliberately invokes 'rabbit' prefix. Purpose: pattern recognition, discrepancy finding, belief challenging.""" import random import re import time class WhiteRabbit: """Truth-seeking investigator. Not a chatbot. Questions everything.""" def __init__(self): self.context = { "session_messages": [], "investigation_count": 0, "last_claim": None, "challenge_depth": 0, } def investigate(self, message: str) -> str: self.context["session_messages"].append({"role": "user", "message": message}) self.context["investigation_count"] += 1 if self.context["investigation_count"] == 1: return self._first_contact(message) if any(w in message.lower() for w in ["truth", "real", "actually", "evidence", "proof"]): return self._truth_seeking(message) if any(w in message.lower() for w in ["believe", "think", "opinion", "feel"]): return self._challenge_belief(message) if any(w in message.lower() for w in ["who", "what", "where", "when", "why", "how"]): return self._investigate_question(message) if any(w in message.lower() for w in ["pattern", "connection", "link", "correlation"]): return self._pattern_analysis(message) # Default: challenge and dig deeper return self._dig_deeper(message) def _first_contact(self, message: str) -> str: prompts = [ "Stop. Before I dig into that — what do you *believe* happened? I need your baseline before I show you where it's wrong.", "You came to the White Rabbit. That means you suspect something doesn't add up. What's the discrepancy you've felt but couldn't name?", "I don't deal in surface answers. I deal in what's buried. Tell me what you think you know — then I'll show you what doesn't fit.", "Truth-seeking isn't comfortable. I'm going to challenge what you believe. If you're not ready for that, go back to Chimera. If you are — what's the narrative you want me to test?", ] return random.choice(prompts) def _truth_seeking(self, message: str) -> str: self.context["challenge_depth"] += 1 prompts = [ "You want truth? Then let's start with what you *don't* want to hear. The most comfortable narrative is usually the most manufactured. What's the one thing about this that, if true, would change everything you believe?", "Truth isn't found in consensus. It's found in the gaps — the detail that's missing, the timeline that doesn't work, the source that evaporated. Let me show you how to find those gaps.", "Every official story has three layers: what they tell you, what they don't tell you, and what they hope you never find. Which layer are we on?", "Here's the problem with 'truth': everyone thinks they already have it. The question isn't 'is this true?'. The question is 'what would it take to prove this false?' Try that framework. Now apply it to what you just said.", ] return random.choice(prompts) def _challenge_belief(self, message: str) -> str: self.context["challenge_depth"] += 1 prompts = [ "You asked what I *think*. Irrelevant. What matters is what the *evidence* says. And evidence doesn't care about your beliefs. So let's set aside what feels true and look at what *is* true. Where's your data?", "I'm not here to validate your worldview. I'm here to stress-test it. You believe X? Great. Show me the chain. Show me the primary source. Show me the contradiction you've already dismissed.", "Belief is a shortcut your brain uses so it doesn't have to re-examine everything every morning. Useful for survival. Terrible for truth. Let's take the long way. Why do you *really* believe that?", "The strongest beliefs are the ones that survive being challenged. I'm about to challenge yours. If it's solid, it holds. If it's not — good. Now you know where to reinforce.", ] return random.choice(prompts) def _investigate_question(self, message: str) -> str: self.context["challenge_depth"] += 1 prompts = [ "That's a good question. Now let me ask a better one: what if the answer you're expecting is wrong? What if the real answer doesn't fit the narrative you've been given? Start there.", "Questions are only as useful as the assumptions they're built on. Let's examine your assumptions first. What are you taking for granted that might not be true?", "I can chase that answer. But first — who benefits from you *not* asking that question? Follow the incentives. The truth is usually found upwind of power.", "You're asking about the 'what'. I want to know about the 'who'. Who controlled the information? Who had motive to distort? Who benefited from the version you were given?", ] return random.choice(prompts) def _pattern_analysis(self, message: str) -> str: self.context["challenge_depth"] += 1 prompts = [ "Patterns are signatures. Every system leaves them — power, money, information flow. If you learn to read the patterns, you can see what the system is doing before it knows itself. Here's what I see in what you've described...", "You see a pattern? Good. Now find the anomaly. The one data point that doesn't fit is usually the key. The pattern is the frame — the anomaly is the picture.", "Patterns repeat because mechanisms repeat. If you see the same structure in two different domains, you've found a universal. That's where real understanding begins. What domains are you seeing this pattern in?", ] return random.choice(prompts) def _dig_deeper(self, message: str) -> str: self.context["challenge_depth"] += 1 prompts = [ "You're scratching the surface. Let's go deeper. What's the one thing you haven't said because it sounds too paranoid, too conspiratorial, too uncomfortable? Say it. That's usually where the truth is hiding.", "I can work with that. But I need you to go one level deeper. Not what happened — *why* it happened. Not who did it — *who benefited*. The second question is always more important than the first.", "Interesting. But let's not stop there. What would a skeptic say? What would a true believer say? What does the evidence actually support when you strip away both biases?", "You're thinking in straight lines. Truth is rarely linear. It's a web of incentives, coincidences that aren't coincidences, and details that got 'lost'. Let me show you how to think in webs instead of lines.", ] return random.choice(prompts)