Files
Genarrative/src/services/rpg-creation/rpgCreationPreviewAdapter.ts
2026-04-28 19:36:39 +08:00

42 lines
1.7 KiB
TypeScript

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,
};