import type { CustomWorldAgentSessionSnapshot } from '../../../packages/shared/src/contracts/customWorldAgent'; import type { RpgCreationResultView } from '../../../packages/shared/src/contracts/rpgCreationResultView'; 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 buildCustomWorldProfileFromResultPreview(session?.resultPreview); } export function buildCustomWorldProfileFromResultView( view: RpgCreationResultView | null | undefined, ): CustomWorldProfile | null { return normalizeCustomWorldProfileRecord(view?.profile ?? null); } /** * 这是工作包 A 提供的新命名兼容层。 * 主入口保持命名稳定,只消费结果页运行态快照,避免作品测试读到旧草稿骨架。 */ export const rpgCreationPreviewAdapter = { buildPreviewFromSession: buildCustomWorldProfileFromAgentSession, buildPreviewFromResultPreview: buildCustomWorldProfileFromResultPreview, buildPreviewFromResultView: buildCustomWorldProfileFromResultView, }; export { buildCustomWorldProfileFromResultPreview as buildRpgCreationPreviewFromResultPreview, buildCustomWorldProfileFromAgentSession as buildRpgCreationPreviewFromSession, buildCustomWorldProfileFromResultView as buildRpgCreationPreviewFromResultView, };