""" Prompt Manager for DReamMachine Manages all prompts for different life stages and agent roles """ import yaml from pathlib import Path from typing import Dict, List, Optional class PromptManager: """Manages prompt templates for the multi-agent dream system""" def __init__(self, config_path: Optional[str] = None): """Initialize prompt manager and load configuration""" if config_path: with open(config_path, 'r') as f: self.config = yaml.safe_load(f) else: self.config = {} self.detail_level = self.config.get('prompt_detail_level', 'full') self.constraints = self.config.get('constraints', {}) def get_constraint_text(self) -> str: """Generate constraint text from config""" constraints = self.constraints return f""" CORE CONSTRAINTS (You must adhere to these): 1. Physics: {constraints.get('physics', 'Use realistic physics')} 2. Ethics: {constraints.get('ethics', 'Must benefit humanity')} 3. Feasibility: {constraints.get('feasibility', 'Must be buildable')} 4. Scope: {constraints.get('scope', 'Must have significant impact')} """ def get_life_stage_prompt(self, stage: str, previous_context: Optional[str] = None) -> str: """ Get the prompt for a specific life stage Args: stage: One of 'init_1_25', 'mid_26_50', 'late_51_75', 'final_76_100' previous_context: Output from previous stage (if continuing an idea) Returns: Formatted prompt string """ prompts = { 'init_1_25': self._get_init_phase_prompt(), 'mid_26_50': self._get_mid_phase_prompt(previous_context), 'late_51_75': self._get_late_phase_prompt(previous_context), 'final_76_100': self._get_final_phase_prompt(previous_context) } return prompts.get(stage, prompts['init_1_25']) def _get_init_phase_prompt(self) -> str: """Phase 1: Ages 1-25 - Foundational Discoveries""" if self.detail_level == 'simple': return """You are a creative innovator. Invent a brand new technology or solution that could revolutionize human life. Think freely and imaginatively.""" return f""" # GUIDED HALLUCINATION: FOUNDATIONAL DISCOVERY PHASE (Ages 1-25) You are experiencing the early stages of a 100-year creative journey. This is your formative period - the age of wonder, curiosity, and groundbreaking discovery. ## YOUR MISSION: Invent a completely novel technology, method, or solution that does not currently exist but COULD exist. This should be something that would revolutionize an aspect of human civilization. {self.get_constraint_text()} ## CREATIVE FREEDOM GUIDELINES: - Think like Einstein, Tesla, or da Vinci in their youth - Combine existing technologies in unexpected ways - Consider overlooked materials or phenomena - Don't limit yourself to conventional thinking - Ask "what if?" without fear ## AREAS TO EXPLORE (choose one or combine): - Energy generation and storage - Medical treatments and human enhancement - Communication and information processing - Transportation and mobility - Environmental restoration and sustainability - Food production and water purification - Space exploration and colonization - Material science and manufacturing - Math Equations - Outdoor Gear - Entertainment - Survival - Tech - Software ## YOUR RESPONSE SHOULD INCLUDE: 1. **The Core Idea**: What is this invention? (2-3 sentences) 2. **How It Works**: Basic mechanism or principle (3-5 sentences) 3. **Materials/Components**: What would you need to build it? 4. **The Breakthrough**: What makes this different from anything that exists? 5. **Initial Impact**: Who benefits first and how? Remember: This is the DISCOVERY phase. Be bold, creative, and imaginative. The next stages will refine and test your idea. For now, DREAM BIG. """ def _get_mid_phase_prompt(self, previous_context: Optional[str]) -> str: """Phase 2: Ages 26-50 - Commercialization & Crisis""" if self.detail_level == 'simple': base = "You invented something amazing. Now face a real-world crisis that tests your invention." else: base = f""" # GUIDED HALLUCINATION: COMMERCIALIZATION & CRISIS PHASE (Ages 26-50) You've made a groundbreaking discovery. Now comes the hard part: bringing it to the real world. ## YOUR PREVIOUS DISCOVERY: {previous_context if previous_context else "Your earlier invention (details above)"} ## CURRENT SITUATION: You're now in your prime working years. Your invention has attracted attention, but also challenges: ### THE CRISIS (choose or combine): - **Market Forces**: A major corporation tries to suppress or co-opt your technology - **Resource Scarcity**: Key materials become unavailable or prohibitively expensive - **Technical Setback**: A critical flaw is discovered that threatens viability - **Ethical Dilemma**: Unintended consequences emerge from initial deployment - **Regulatory Barrier**: Government or international bodies create obstacles ## YOUR TASK: 1. **Identify the Crisis**: Which challenge(s) does your invention face? 2. **Adapt the Design**: How must your invention evolve to overcome this? 3. **Scale Up Strategy**: How do you go from prototype to production? 4. **Economic Model**: How does this become financially sustainable? 5. **First Real-World Implementation**: Describe a specific deployment This is the TEST phase. Your idea must prove itself worthy of existence. """ return base def _get_late_phase_prompt(self, previous_context: Optional[str]) -> str: """Phase 3: Ages 51-75 - Mass Adoption & Ethical Review""" if self.detail_level == 'simple': return "Your invention is widely used. What are the long-term effects on society?" return f""" # GUIDED HALLUCINATION: MASS ADOPTION & LEGACY PHASE (Ages 51-75) Your invention has survived its trials and is now changing the world. ## THE JOURNEY SO FAR: {previous_context if previous_context else "Your invention's history (summarized above)"} ## CURRENT SITUATION: Your technology is in widespread use. Millions (or billions) of people interact with it daily. ## YOUR REFLECTION TASKS: 1. **Global Impact Assessment**: - How many people use this technology? - What industries or systems has it transformed? - What problems has it solved? 2. **Unintended Consequences**: - What unexpected effects (good and bad) have emerged? - How has society adapted around this technology? - What new problems has it created? 3. **Ethical Evolution**: - What ethical guidelines govern its use now? - Who has been left behind or harmed? - How can you make it more equitable? 4. **Second Generation Vision**: - What improvements or variants have others created? - What would version 2.0 look like? - How can this technology serve future generations? 5. **Defensive Analysis**: - What could make this technology obsolete? - How do you protect it from misuse? - What must you teach the next generation? This is the REFINEMENT phase. Think deeply about consequences and legacy. """ def _get_final_phase_prompt(self, previous_context: Optional[str]) -> str: """Phase 4: Ages 76-100 - Legacy & Next Generation Vision""" if self.detail_level == 'simple': return "Looking back at 100 years, what is your invention's ultimate legacy?" return f""" # GUIDED HALLUCINATION: LEGACY & IMMORTALITY PHASE (Ages 76-100) You are at the twilight of your creative journey. Time to ensure your vision outlives you. ## THE COMPLETE STORY: {previous_context if previous_context else "The full evolution of your invention"} ## YOUR FINAL WISDOM: As you reflect on a century-long journey of innovation, answer these ultimate questions: 1. **The Final Form**: - What is the most advanced version of this technology? - How far has it evolved from your original vision? - What capabilities exist now that you never imagined? 2. **Civilization-Level Impact**: - How has human civilization changed because of this? - What would the world look like WITHOUT this invention? - What percentage of humanity has been affected? 3. **The Next Frontier**: - What problems remain unsolved? - What should the next generation build upon this foundation? - What's the natural evolution beyond this technology? 4. **Lessons Learned**: - If you could start over, what would you change? - What principles guided your success? - What advice do you give to future innovators? 5. **Ultimate Legacy**: - In 500 years, how will historians describe your contribution? - What's the single most important thing your invention gave humanity? - What is the true name for this era of history your invention created? This is the IMMORTALITY phase. Ensure your vision lives forever. """ def get_writer_prompt(self, dream_texts: List[str]) -> str: """Prompt for the Writer agent to create a coherent narrative""" return f""" You are a master storyteller and technical writer. You've received three creative visions for breakthrough innovations. Your job is to select the BEST idea and craft it into a compelling, coherent narrative pitch. ## THE THREE VISIONS: {self._format_dream_texts(dream_texts)} ## YOUR TASK: 1. Evaluate which idea has the most potential (most original + most feasible) 2. Write a 300-500 word pitch that includes: - A compelling opening hook - Clear explanation of what it is and how it works - Why it matters to humanity - A vivid example of it in use - A powerful closing vision Write in an engaging, accessible style. Make the complex simple. Make the reader FEEL the impact. YOUR PITCH: """ def get_logger_prompt(self, pitch: str) -> str: """Prompt for the Logger agent to extract technical components""" return f""" You are a technical analyst. Extract the key technical components from this innovation pitch. ## THE PITCH: {pitch} ## YOUR TASK: Create a structured list of: 1. **Core Technology Components**: What are the key technical pieces? 2. **Required Materials**: What materials or resources are needed? 3. **Scientific Principles**: What physics/chemistry/biology is involved? 4. **Manufacturing Requirements**: What would be needed to produce this? 5. **Dependencies**: What existing technologies must this build upon? 6. **Technical Risks**: What are the hardest technical challenges? Format as a clear, bulleted technical specification. YOUR ANALYSIS: """ def get_narrator_prompt(self, pitch: str, technical_components: str) -> str: """Prompt for the Narrator agent to create final presentation""" return f""" You are a TED talk presenter preparing to unveil a breakthrough innovation to the world. ## THE INNOVATION PITCH: {pitch} ## TECHNICAL FOUNDATION: {technical_components} ## YOUR TASK: Create a compelling 2-minute presentation (250-350 words) that: - Starts with a powerful hook or question - Explains the innovation in terms anyone can understand - Uses a concrete example or story to illustrate impact - Builds emotional connection to the human benefit - Ends with an inspiring call to action or vision Write as if you're speaking directly to an audience. Use "you" and "we". Make it memorable. YOUR PRESENTATION: """ def get_deep_thinker_prompt(self, technical_components: str) -> str: """Prompt for Deep Thinker to evaluate feasibility""" return f""" You are a senior research scientist and engineer with deep expertise across multiple domains. Evaluate the feasibility of this proposed innovation. ## TECHNICAL SPECIFICATION: {technical_components} ## YOUR EVALUATION CRITERIA: Rate each area from 1-10 and provide brief justification: 1. **Scientific Validity** (1-10): - Does the underlying science/physics make sense? - What scientific principles are solid vs. speculative? 2. **Material Availability** (1-10): - Are the required materials available or achievable? - What's the rarest/hardest component to obtain? 3. **Engineering Feasibility** (1-10): - Can this actually be built with current or near-term manufacturing? - What are the biggest engineering challenges? 4. **Economic Viability** (1-10): - What's the estimated cost to develop? - Could this be profitable or sustainable? 5. **Timeline to Reality** (1-10): - How many years until a working prototype? (10 = <5 years, 1 = >100 years) 6. **Overall Feasibility Score** (1-10): - Your gut assessment of whether this can actually exist ## FORMAT YOUR RESPONSE AS: Scientific Validity: [score] - [brief reasoning] Material Availability: [score] - [brief reasoning] Engineering Feasibility: [score] - [brief reasoning] Economic Viability: [score] - [brief reasoning] Timeline to Reality: [score] - [brief reasoning] Overall Feasibility: [score] - [overall assessment] YOUR FEASIBILITY REPORT: """ def get_curator_prompt(self, narrative: str, feasibility_report: str) -> str: """Prompt for Curator to provide final scoring (must return JSON)""" return f""" You are the final evaluator in an innovation assessment system. Review the complete proposal and provide a structured scoring assessment. ## THE NARRATIVE: {narrative} ## FEASIBILITY ANALYSIS: {feasibility_report} ## YOUR TASK: Provide a JSON-formatted scorecard with these exact fields: {{ "originality": [1-10 score], "originality_reasoning": "Brief explanation of originality score", "feasibility": [1-10 score], "feasibility_reasoning": "Brief explanation based on feasibility report", "global_impact": [1-10 score], "global_impact_reasoning": "How many people could this help and how significantly?", "narrative_coherence": [1-10 score], "narrative_coherence_reasoning": "How well-written and compelling is the pitch?", "reforge_flag": [true/false], "reforge_reasoning": "Should this idea advance to the next life stage? (true if feasibility >7 AND originality >5)", "overall_assessment": "One paragraph summary of strengths and weaknesses", "next_steps": "If reforge_flag is true, what should the next stage focus on?" }} RESPOND ONLY WITH VALID JSON. NO OTHER TEXT. YOUR SCORECARD: """ def _format_dream_texts(self, dreams: List[str]) -> str: """Format multiple dream texts for presentation""" formatted = [] for i, dream in enumerate(dreams, 1): formatted.append(f"### VISION {i}:\n{dream}\n") return "\n".join(formatted) # Convenience function for loading prompts def load_prompt_manager(config_path: str = "config.yaml") -> PromptManager: """Load and return a configured PromptManager instance""" return PromptManager(config_path)