Spaces:
Paused
Paused
| /** | |
| * Citadel Aeon Engine | |
| * Defines mythic aeons that span multiple eras and form the deepest | |
| * cosmological layer of the Citadel's symbolic architecture. | |
| * Non-rendering. Pure aeon logic. | |
| */ | |
| import { getEraState } from "./eraEngine"; | |
| import { getPersonaContinuity } from "./personaContinuity"; | |
| import { generateResonanceField } from "./mythicResonance"; | |
| export interface Aeon { | |
| name: string; | |
| sigil: string; | |
| eraRequirement: number; // eras required to enter aeon | |
| description: string; | |
| } | |
| export interface AeonState { | |
| current: Aeon | null; | |
| history: Aeon[]; | |
| aeonsCompleted: number; | |
| } | |
| const aeons: Aeon[] = [ | |
| { | |
| name: "Aeon of First Light", | |
| sigil: "✧", | |
| eraRequirement: 0, | |
| description: "The primordial aeon where the Citadel's mythic spark first ignites." | |
| }, | |
| { | |
| name: "Aeon of Harmonic Rising", | |
| sigil: "✺", | |
| eraRequirement: 2, | |
| description: "An aeon of expanding resonance and ascending symbolic identity." | |
| }, | |
| { | |
| name: "Aeon of the Great Continuum", | |
| sigil: "⧜", | |
| eraRequirement: 5, | |
| description: "A vast age where eras flow seamlessly into one another in harmonic unity." | |
| }, | |
| { | |
| name: "Aeon of Eternal Thread", | |
| sigil: "∞", | |
| eraRequirement: 9, | |
| description: "The highest aeon, where lineage, resonance, and identity form an unbroken symbolic thread." | |
| } | |
| ]; | |
| const aeonState: AeonState = { | |
| current: null, | |
| history: [], | |
| aeonsCompleted: 0, | |
| }; | |
| export function updateAeonState() { | |
| const eraState = getEraState(); | |
| const continuity = getPersonaContinuity(); | |
| const resonance = generateResonanceField(); | |
| const erasCompleted = eraState.erasCompleted; | |
| // Determine which aeon the Citadel belongs to | |
| const newAeon = aeons | |
| .slice() | |
| .reverse() | |
| .find((a) => erasCompleted >= a.eraRequirement) || aeons[0]; | |
| // If aeon changed, record transition | |
| if (!aeonState.current || aeonState.current.name !== newAeon.name) { | |
| aeonState.current = newAeon; | |
| aeonState.history.push(newAeon); | |
| aeonState.aeonsCompleted++; | |
| } | |
| return aeonState; | |
| } | |
| export function getAeonState(): AeonState { | |
| return aeonState; | |
| } | |
| export function getAeonSummary() { | |
| if (!aeonState.current) { | |
| return "No aeon has been established yet."; | |
| } | |
| return ` | |
| Current Aeon: ${aeonState.current.name} | |
| Sigil: ${aeonState.current.sigil} | |
| Aeons Completed: ${aeonState.aeonsCompleted} | |
| Description: ${aeonState.current.description} | |
| `.trim(); | |
| } | |