import type { CustomWorldAgentSessionSnapshot } from '../../../packages/shared/src/contracts/customWorldAgent'; import { normalizeCustomWorldProfileRecord } from '../../data/customWorldLibrary'; import type { CustomWorldProfile } from '../../types'; export function buildCustomWorldProfileFromResultPreview( resultPreview: | CustomWorldAgentSessionSnapshot['resultPreview'] | null | undefined, ): CustomWorldProfile | null { return normalizeCustomWorldProfileRecord(resultPreview?.preview ?? null); } export function buildCustomWorldProfileFromAgentSession( session: CustomWorldAgentSessionSnapshot | null | undefined, ): CustomWorldProfile | null { return ( normalizeCustomWorldProfileRecord(session?.draftProfile ?? null) ?? buildCustomWorldProfileFromResultPreview(session?.resultPreview) ); } /** * 这是工作包 A 提供的新命名兼容层。 * 主入口保持命名稳定,优先消费 Agent 草稿真相源,缺失时才回退到 resultPreview。 */ export const rpgCreationPreviewAdapter = { buildPreviewFromSession: buildCustomWorldProfileFromAgentSession, buildPreviewFromResultPreview: buildCustomWorldProfileFromResultPreview, }; export { buildCustomWorldProfileFromAgentSession as buildRpgCreationPreviewFromSession, buildCustomWorldProfileFromResultPreview as buildRpgCreationPreviewFromResultPreview, };