42 lines
1.7 KiB
TypeScript
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,
|
|
};
|