拆出引用草稿键与 token 的取值 helper 消除嵌套三元
- apps/ai-game-creator-shell/src/features/project-workspace/ResourceReferenceInput.tsx 新增 referenceDraftKey/referenceDraftToken,替换 readDraftFromNodes 里构造 labels 时的嵌套三元表达式 - 行为与原先一致,只是把「resource 取 id、skill 取 name、其余取 label」的规则收敛到一处
This commit is contained in:
+16
-6
@@ -240,6 +240,20 @@ type DraftProjection = {
|
||||
content: DirectCodexUserContentPart[];
|
||||
};
|
||||
|
||||
/** 引用在草稿文本里的稳定键:resource 用资源 id,skill 用技能名,其余用显示名。 */
|
||||
function referenceDraftKey(reference: ChatReference) {
|
||||
if (reference.type === 'resource') return reference.resourceId;
|
||||
if (reference.type === 'skill') return reference.name;
|
||||
return reference.label;
|
||||
}
|
||||
|
||||
/** 引用回读成草稿文本时的 token:skill 是 `$name`,resource 与 runtime region 是 `@显示名`。 */
|
||||
function referenceDraftToken(reference: ChatReference) {
|
||||
return reference.type === 'skill'
|
||||
? `$${reference.name}`
|
||||
: `@${reference.label}`;
|
||||
}
|
||||
|
||||
/** 仅供编辑器内部派生引用(重建文本草稿时用);对外只暴露 canonical content。 */
|
||||
function readDraftProjectionFromNodes(): DraftProjection {
|
||||
const references: ChatReference[] = [];
|
||||
@@ -256,12 +270,8 @@ function readDraftFromNodes(): ChatComposerDraft {
|
||||
const projection = readDraftProjectionFromNodes();
|
||||
const labels = new Map(
|
||||
projection.references.map((reference) => [
|
||||
reference.type === 'resource'
|
||||
? reference.resourceId
|
||||
: reference.type === 'skill'
|
||||
? reference.name
|
||||
: reference.label,
|
||||
reference.type === 'skill' ? `$${reference.name}` : `@${reference.label}`,
|
||||
referenceDraftKey(reference),
|
||||
referenceDraftToken(reference),
|
||||
]),
|
||||
);
|
||||
const text = projection.content
|
||||
|
||||
Reference in New Issue
Block a user