Rework story engine flow and reorganize project docs
Some checks failed
CI / verify (push) Has been cancelled
Some checks failed
CI / verify (push) Has been cancelled
This commit is contained in:
57
src/services/storyEngine/documentCarrierCompiler.ts
Normal file
57
src/services/storyEngine/documentCarrierCompiler.ts
Normal file
@@ -0,0 +1,57 @@
|
||||
import type { InventoryItem, ThreadContract } from '../../types';
|
||||
|
||||
export function buildNarrativeDocument(params: {
|
||||
contract: ThreadContract;
|
||||
titleSeed?: string;
|
||||
}) {
|
||||
const title = params.titleSeed || `${params.contract.threadId}调查简札`;
|
||||
const currentStep = params.contract.steps[params.contract.visibleStage] ?? params.contract.steps[0];
|
||||
const relatedThreadIds = [params.contract.threadId];
|
||||
|
||||
return {
|
||||
id: `document:${params.contract.id}`,
|
||||
category: '文书',
|
||||
name: title,
|
||||
quantity: 1,
|
||||
rarity: 'rare',
|
||||
tags: ['document', 'relic'],
|
||||
description: `${title} 里记着当前线程的阶段性摘要与下一步线索。`,
|
||||
runtimeMetadata: {
|
||||
origin: 'ai_compiled',
|
||||
generationChannel: 'quest_reward',
|
||||
seedKey: `document:${params.contract.id}`,
|
||||
sourceReason: `${params.contract.threadId} 当前进入了新的阶段。`,
|
||||
storyFingerprint: {
|
||||
visibleClue: currentStep?.revealText ?? `${title} 里写着当前线程的进展。`,
|
||||
witnessMark: `${title} 记录着 ${params.contract.threadId} 这一线被谁、在何处继续推了下去。`,
|
||||
unresolvedQuestion:
|
||||
currentStep?.title
|
||||
?? `${params.contract.threadId} 接下来还要如何继续推进?`,
|
||||
currentAppearanceReason: `${params.contract.threadId} 当前进入了新的阶段。`,
|
||||
relatedThreadIds,
|
||||
relatedScarIds: [],
|
||||
reactionHooks: [params.contract.threadId],
|
||||
},
|
||||
},
|
||||
} satisfies InventoryItem;
|
||||
}
|
||||
|
||||
export function compileDocumentKnowledgeFacts(params: {
|
||||
document: InventoryItem;
|
||||
contract: ThreadContract;
|
||||
}) {
|
||||
return [
|
||||
{
|
||||
id: `document-fact:${params.document.id}`,
|
||||
title: `${params.document.name}的记录`,
|
||||
content: params.contract.steps[params.contract.visibleStage]?.revealText ?? params.contract.threadId,
|
||||
ownerActorIds: [],
|
||||
relatedThreadIds: [params.contract.threadId],
|
||||
relatedScarIds: [],
|
||||
sourceType: 'document',
|
||||
visibility: 'discoverable',
|
||||
sayability: 'direct',
|
||||
aliases: [params.document.name],
|
||||
},
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user