36 lines
1.3 KiB
TypeScript
36 lines
1.3 KiB
TypeScript
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,
|
|
};
|