#!/usr/bin/env bun /** * Year-Ahead Calendar * * Shows Personal Month cycles for an entire year, giving you a strategic * overview of the energy themes for each month ahead. * * Usage: * bun year-ahead.ts --birthdate "5/13/1982" --year 2025 * bun year-ahead.ts --birthdate "5/13/1982" --name "John Doe" */ import { calculateCycles } from './cycles'; import { personalMonth, personalYear as personalYearMeanings } from './cycle-meanings'; import { loadProfile } from './profile-manager'; // Parse command line arguments const args = process.argv.slice(2); let birthdate = ''; let year: number = new Date().getFullYear(); let name = ''; let profileId = ''; for (let i = 0; i < args.length; i++) { if ((args[i] === '--profile' || args[i] === '-p') && args[i + 1]) { profileId = args[i + 1]; i++; } else if ((args[i] === '--birthdate' || args[i] === '-b') && args[i + 1]) { birthdate = args[i + 1]; i++; } else if ((args[i] === '--year' || args[i] === '-y') && args[i + 1]) { year = parseInt(args[i + 1]); i++; } else if ((args[i] === '--name' || args[i] === '-n') && args[i + 1]) { name = args[i + 1]; i++; } else if (args[i] === '--help' || args[i] === '-h') { console.log(` Year-Ahead Calendar Shows Personal Month cycles for the entire year ahead, giving you a strategic overview of energy themes and planning opportunities. USAGE: bun year-ahead.ts --profile [OPTIONS] bun year-ahead.ts --birthdate "mm/dd/yyyy" [OPTIONS] OPTIONS: -p, --profile ID Use saved profile -b, --birthdate DATE Your birthdate (mm/dd/yyyy) [required if no profile] -y, --year NUMBER Year to preview [default: current year] -n, --name NAME Your name [optional - for personalized output] -h, --help Show this help message EXAMPLES: # With profile bun year-ahead.ts --profile rob bun year-ahead.ts --profile rob -y 2026 # With birthdate bun year-ahead.ts -b "5/13/1982" bun year-ahead.ts -b "5/13/1982" -y 2026 bun year-ahead.ts -b "5/13/1982" -n "John Doe" -y 2025 PERSONAL MONTH MEANINGS: 1 - New beginnings, fresh starts, independence 2 - Cooperation, relationships, patience 3 - Creativity, communication, self-expression 4 - Hard work, structure, foundation building 5 - Change, freedom, adventure, variety 6 - Responsibility, service, family, home 7 - Reflection, study, spirituality, rest 8 - Achievement, ambition, financial focus 9 - Completion, endings, release, preparation 11 - Inspiration, intuition, spiritual awakening 22 - Master building, manifesting visions 33 - Master teaching, compassionate service STRATEGIC PLANNING: Use this calendar to: - Plan major projects around supportive month cycles - Schedule launches during Personal Month 1 or 8 - Block creative work for Month 3 - Reserve Month 7 for planning and strategy - Complete and release during Month 9 `); process.exit(0); } } // Load profile if specified if (profileId) { const profile = loadProfile(profileId); if (!profile) { console.error(`Error: Profile '${profileId}' not found`); console.error('List profiles with: bun profile.ts list'); process.exit(1); } name = profile.name; birthdate = profile.birthdate; } if (!birthdate) { console.error('Error: --birthdate is required (or use --profile)'); console.error('Try: bun year-ahead.ts --help'); process.exit(1); } interface MonthInfo { month: number; monthName: string; personalMonth: number; personalYear: number; universalMonth: number; universalYear: number; theme: string; focus: string[]; bestFor: string[]; avoid: string[]; } // Month names const monthNames = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ]; // Simplified month guidance const monthGuidance: Record = { 1: { theme: 'New Beginnings', focus: ['Fresh starts', 'Independence', 'Initiative'], bestFor: ['Launching projects', 'Starting new ventures', 'Bold decisions', 'Leadership actions'], avoid: ['Waiting for others', 'Being passive', 'Following only'] }, 2: { theme: 'Cooperation', focus: ['Partnerships', 'Patience', 'Details'], bestFor: ['Building relationships', 'Collaborative work', 'Diplomacy', 'Refinement'], avoid: ['Solo ventures', 'Rushing', 'Impatience'] }, 3: { theme: 'Creative Expression', focus: ['Communication', 'Creativity', 'Social connection'], bestFor: ['Content creation', 'Public speaking', 'Networking', 'Creative projects'], avoid: ['Heavy analytical work', 'Isolation', 'Overthinking'] }, 4: { theme: 'Foundation Building', focus: ['Hard work', 'Organization', 'Structure'], bestFor: ['System building', 'Planning', 'Infrastructure', 'Financial organization'], avoid: ['Starting completely new things', 'Taking shortcuts', 'Scattered efforts'] }, 5: { theme: 'Change & Freedom', focus: ['Variety', 'Adventure', 'Adaptation'], bestFor: ['Marketing', 'Trying new approaches', 'Travel', 'Experimentation'], avoid: ['Rigid routines', 'Being stuck', 'Resisting change'] }, 6: { theme: 'Service & Responsibility', focus: ['Teaching', 'Helping', 'Family'], bestFor: ['Client service', 'Teaching', 'Community work', 'Home projects'], avoid: ['Selfish pursuits', 'Avoiding responsibility', 'Neglecting others'] }, 7: { theme: 'Introspection', focus: ['Study', 'Spirituality', 'Analysis'], bestFor: ['Deep study', 'Research', 'Strategy', 'Rest and rejuvenation'], avoid: ['Major public launches', 'Excessive socializing', 'Surface-level work'] }, 8: { theme: 'Achievement', focus: ['Power', 'Business', 'Success'], bestFor: ['Business deals', 'Financial decisions', 'Scaling', 'Major launches'], avoid: ['Spiritual retreats', 'Passive waiting', 'Small thinking'] }, 9: { theme: 'Completion', focus: ['Release', 'Endings', 'Letting go'], bestFor: ['Completing projects', 'Publishing', 'Clearing space', 'Endings'], avoid: ['Starting new ventures', 'Beginning fresh', 'Major initiations'] }, 11: { theme: 'Inspiration', focus: ['Intuition', 'Illumination', 'Spiritual leadership'], bestFor: ['Inspiring others', 'Visionary work', 'Spiritual teaching', 'Master guidance'], avoid: ['Ignoring intuition', 'Playing small', 'Logical-only thinking'] }, 22: { theme: 'Master Building', focus: ['Manifestation', 'Large-scale vision', 'Legacy work'], bestFor: ['Building legacies', 'Large projects', 'Visionary implementation', 'Ambitious launches'], avoid: ['Small projects', 'Short-term thinking', 'Doubting vision'] }, 33: { theme: 'Master Teaching', focus: ['Healing', 'Compassionate service', 'Education'], bestFor: ['Master teaching', 'Healing work', 'Educational initiatives', 'High-level service'], avoid: ['Selfish profit focus', 'Burnout', 'Boundary violations'] } }; // Calculate all months function getYearAhead(birthdate: string, year: number): MonthInfo[] { const months: MonthInfo[] = []; for (let month = 1; month <= 12; month++) { const dateStr = `${month}/15/${year}`; // Use middle of month const cycles = calculateCycles(birthdate, dateStr); const guidance = monthGuidance[cycles.personal.month] || monthGuidance[1]; months.push({ month, monthName: monthNames[month - 1], personalMonth: cycles.personal.month, personalYear: cycles.personal.year, universalMonth: cycles.universal.month, universalYear: cycles.universal.year, theme: guidance.theme, focus: guidance.focus, bestFor: guidance.bestFor, avoid: guidance.avoid }); } return months; } // Main execution console.log(`\n═══════════════════════════════════════════════════════════════`); console.log(`📅 YOUR YEAR AHEAD: ${year}`); if (name) console.log(` ${name}`); console.log(`═══════════════════════════════════════════════════════════════\n`); const months = getYearAhead(birthdate, year); const personalYear = months[0].personalYear; const pyNum = months[0].personalYear; const pyMeaning = personalYearMeanings[pyNum]; console.log(`🌟 Personal Year ${pyNum}: ${pyMeaning?.keywords.join(', ') || 'Growth & Evolution'}\n`); // Year overview if (pyMeaning) { console.log(`YEAR ${year} OVERVIEW:\n`); console.log(`Theme: ${pyMeaning.theme}\n`); } console.log(`═══════════════════════════════════════════════════════════════`); console.log(`MONTHLY BREAKDOWN`); console.log(`═══════════════════════════════════════════════════════════════\n`); // Display each month months.forEach((month, index) => { const isCurrentMonth = new Date().getMonth() === month.month - 1 && new Date().getFullYear() === year; const marker = isCurrentMonth ? '▶️ ' : ' '; console.log(`${marker}${month.monthName.toUpperCase()} - Personal Month ${month.personalMonth}`); console.log(` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`); console.log(` 🎯 THEME: ${month.theme}`); console.log(` 📍 FOCUS: ${month.focus.join(' • ')}`); console.log(` ✅ BEST FOR: ${month.bestFor[0]}`); if (index < months.length - 1) { console.log(''); } }); console.log(`\n═══════════════════════════════════════════════════════════════`); console.log(`STRATEGIC PLANNING GUIDE`); console.log(`═══════════════════════════════════════════════════════════════\n`); // Group months by theme for strategic planning const monthsByNumber: Record = {}; months.forEach(m => { if (!monthsByNumber[m.personalMonth]) { monthsByNumber[m.personalMonth] = []; } monthsByNumber[m.personalMonth].push(m.monthName); }); console.log(`KEY PLANNING OPPORTUNITIES:\n`); // Highlight strategic months if (monthsByNumber[1]) { console.log(`🚀 LAUNCH MONTHS (Personal Month 1):`); console.log(` ${monthsByNumber[1].join(', ')}`); console.log(` → Best for: New projects, bold initiatives, fresh starts\n`); } if (monthsByNumber[3]) { console.log(`🎨 CREATIVE MONTHS (Personal Month 3):`); console.log(` ${monthsByNumber[3].join(', ')}`); console.log(` → Best for: Content creation, communication, networking\n`); } if (monthsByNumber[7]) { console.log(`🧘 REFLECTION MONTHS (Personal Month 7):`); console.log(` ${monthsByNumber[7].join(', ')}`); console.log(` → Best for: Strategy, deep study, rest and planning\n`); } if (monthsByNumber[8]) { console.log(`💼 BUSINESS MONTHS (Personal Month 8):`); console.log(` ${monthsByNumber[8].join(', ')}`); console.log(` → Best for: Major deals, scaling, financial decisions\n`); } if (monthsByNumber[9]) { console.log(`🏁 COMPLETION MONTHS (Personal Month 9):`); console.log(` ${monthsByNumber[9].join(', ')}`); console.log(` → Best for: Finishing projects, releasing, wrapping up\n`); } // Master numbers [11, 22, 33].forEach(num => { if (monthsByNumber[num]) { const names = { 11: 'INSPIRATION', 22: 'MASTER BUILDING', 33: 'MASTER TEACHING' }; console.log(`✨ ${names[num as 11 | 22 | 33]} MONTHS (Personal Month ${num}):`); console.log(` ${monthsByNumber[num].join(', ')}`); console.log(` → Special high-vibration months with amplified potential\n`); } }); console.log(`═══════════════════════════════════════════════════════════════`); console.log(`💡 HOW TO USE THIS CALENDAR`); console.log(`═══════════════════════════════════════════════════════════════\n`); console.log(`1. ALIGN MAJOR PROJECTS with supportive month cycles`); console.log(`2. SCHEDULE LAUNCHES during Month 1 or Month 8`); console.log(`3. BLOCK CREATIVE TIME during Month 3`); console.log(`4. RESERVE Month 7 for strategic planning and rest`); console.log(`5. COMPLETE & RELEASE during Month 9\n`); console.log(`💫 Use this overview for annual planning, then drill down with:`); console.log(` • telos-week.ts for weekly planning`); console.log(` • optimal-days.ts to find specific optimal days`); console.log(` • cycles.ts for daily cycle guidance\n`); console.log(`✨ Align your actions with natural cycles for maximum effectiveness\n`);