移除草稿转换的文本引用回退
将 ChatComposerDraft.content 设为必填的 canonical 唯一来源。 删除 text 与 references 重建 DirectCodexUserItem 的兼容分支及其无效空值兜底。
This commit is contained in:
@@ -4073,7 +4073,7 @@ export function App({
|
||||
}
|
||||
|
||||
function handleChatComposerChange(draft: ChatComposerDraft) {
|
||||
const content = draft.content ?? [];
|
||||
const content = draft.content;
|
||||
setChatContent(content);
|
||||
setChatInput(directCodexContentToPromptText(content, manifest.assets));
|
||||
setChatReferences(
|
||||
|
||||
+7
-11
@@ -916,11 +916,7 @@ function ResourceReferenceEditor({
|
||||
);
|
||||
|
||||
const readPromptText = useCallback(
|
||||
() =>
|
||||
directCodexContentToPromptText(
|
||||
liveDraftRef.current.content ?? [],
|
||||
assets,
|
||||
),
|
||||
() => directCodexContentToPromptText(liveDraftRef.current.content, assets),
|
||||
[assets],
|
||||
);
|
||||
const resolvePolishContext = useCallback(
|
||||
@@ -957,7 +953,7 @@ function ResourceReferenceEditor({
|
||||
const submitCurrentDraft = useCallback(() => {
|
||||
setReminderOpen(false);
|
||||
acknowledgedDraftKeyRef.current = chatPromptDraftKey(
|
||||
liveDraftRef.current.content ?? [],
|
||||
liveDraftRef.current.content,
|
||||
);
|
||||
rootRef.current?.closest('form')?.requestSubmit();
|
||||
}, [rootRef]);
|
||||
@@ -995,9 +991,9 @@ function ResourceReferenceEditor({
|
||||
const handleFormSubmit = (event: Event) => {
|
||||
if (
|
||||
!shouldRemindChatPromptPolish({
|
||||
content: liveDraftRef.current.content ?? [],
|
||||
content: liveDraftRef.current.content,
|
||||
prompt: directCodexContentToPromptText(
|
||||
liveDraftRef.current.content ?? [],
|
||||
liveDraftRef.current.content,
|
||||
assetsRef.current,
|
||||
),
|
||||
acknowledgedDraftKey: acknowledgedDraftKeyRef.current,
|
||||
@@ -1016,7 +1012,7 @@ function ResourceReferenceEditor({
|
||||
|
||||
// 草稿发出去或被清空后重新开始一轮:清掉润色结果与「本轮已确认」标记。
|
||||
useEffect(() => {
|
||||
if ((liveDraftRef.current.content ?? []).length > 0) return;
|
||||
if (liveDraftRef.current.content.length > 0) return;
|
||||
resetPromptPolish();
|
||||
acknowledgedDraftKeyRef.current = null;
|
||||
}, [resetPromptPolish]);
|
||||
@@ -1365,9 +1361,9 @@ function ResourceReferenceEditor({
|
||||
const nextDraft = readResourceReferenceDraft(editorState);
|
||||
liveDraftRef.current = nextDraft;
|
||||
setDraftText(
|
||||
directCodexContentToPromptText(nextDraft.content ?? [], assets),
|
||||
directCodexContentToPromptText(nextDraft.content, assets),
|
||||
);
|
||||
if ((nextDraft.content ?? []).length === 0) {
|
||||
if (nextDraft.content.length === 0) {
|
||||
resetPromptPolish();
|
||||
acknowledgedDraftKeyRef.current = null;
|
||||
}
|
||||
|
||||
@@ -51,8 +51,8 @@ export type ChatReference = ResourceReference | RuntimeRegionReference;
|
||||
export type ChatComposerDraft = {
|
||||
text: string;
|
||||
references: ChatReference[];
|
||||
/** Lexical 顺序对应的 canonical user content;仅由编辑器读回时提供。 */
|
||||
content?: DirectCodexUserContentPart[];
|
||||
/** Lexical 顺序对应的 canonical user content,是草稿的唯一结构化来源。 */
|
||||
content: DirectCodexUserContentPart[];
|
||||
};
|
||||
|
||||
export const RESOURCE_REFERENCE_INSERT_EVENT = 'agc-resource-reference-insert';
|
||||
@@ -153,22 +153,10 @@ export function chatComposerDraftToDirectCodexUserItem(
|
||||
draft: ChatComposerDraft,
|
||||
id: string,
|
||||
): DirectCodexUserItem {
|
||||
const content =
|
||||
draft.content ??
|
||||
(draft.references.length > 0
|
||||
? [
|
||||
...(draft.text
|
||||
? [{ type: 'input_text' as const, text: draft.text }]
|
||||
: []),
|
||||
...draft.references.map(chatReferenceToContentPart),
|
||||
]
|
||||
: draft.text
|
||||
? [{ type: 'input_text' as const, text: draft.text }]
|
||||
: []);
|
||||
return {
|
||||
type: 'message',
|
||||
role: 'user',
|
||||
content,
|
||||
content: draft.content,
|
||||
id,
|
||||
} satisfies DirectCodexUserItem;
|
||||
}
|
||||
|
||||
@@ -6712,7 +6712,7 @@ export default function ProjectDevelopmentView({
|
||||
if (
|
||||
currentDraft &&
|
||||
directCodexContentToPromptText(
|
||||
currentDraft.content ?? [],
|
||||
currentDraft.content,
|
||||
manifest.assets,
|
||||
) !== text
|
||||
) {
|
||||
@@ -6743,7 +6743,7 @@ export default function ProjectDevelopmentView({
|
||||
const applyResourceQuickEditDraft = useCallback(
|
||||
(draft: ChatComposerDraft) => {
|
||||
applyResourceQuickEditPrompt(
|
||||
directCodexContentToPromptText(draft.content ?? [], manifest.assets),
|
||||
directCodexContentToPromptText(draft.content, manifest.assets),
|
||||
);
|
||||
},
|
||||
[applyResourceQuickEditPrompt, manifest.assets],
|
||||
|
||||
Reference in New Issue
Block a user