import type { GameState, SaveMigrationManifest, } from '../../types'; import { createEmptyStoryEngineMemoryState } from './visibilityEngine'; export function buildSaveMigrationManifest(params: { version: string; }) { return { version: params.version, requiredTransforms: [ 'ensure_story_engine_memory', 'ensure_campaign_state', 'ensure_player_style_profile', ], backwardCompatible: true, } satisfies SaveMigrationManifest; } export function applyStoryEngineMigration(params: { state: GameState; manifest: SaveMigrationManifest; }) { const storyEngineMemory = params.state.storyEngineMemory ?? createEmptyStoryEngineMemoryState(); return { ...params.state, storyEngineMemory: { ...createEmptyStoryEngineMemoryState(), ...storyEngineMemory, saveMigrationManifest: params.manifest, }, }; }