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 (
|
||
buildCustomWorldProfileFromResultPreview(session?.resultPreview) ??
|
||
normalizeCustomWorldProfileRecord(session?.draftProfile ?? null)
|
||
);
|
||
}
|
||
|
||
/**
|
||
* 这是工作包 A 提供的新命名兼容层。
|
||
* 主入口保持命名稳定,优先消费服务端 resultPreview,缺失时回退到 draftProfile。
|
||
*/
|
||
export const rpgCreationPreviewAdapter = {
|
||
buildPreviewFromSession: buildCustomWorldProfileFromAgentSession,
|
||
buildPreviewFromResultPreview: buildCustomWorldProfileFromResultPreview,
|
||
};
|
||
|
||
export {
|
||
buildCustomWorldProfileFromAgentSession as buildRpgCreationPreviewFromSession,
|
||
buildCustomWorldProfileFromResultPreview as buildRpgCreationPreviewFromResultPreview,
|
||
};
|