Skip to content
13 changes: 10 additions & 3 deletions apps/web/src/components/chat/ChatComposer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3178,6 +3178,7 @@ export const ChatComposer = memo(function ChatComposer(props: ChatComposerProps)
const importContextRecords = (
records: ReadonlyArray<ComposerContextRecord>,
sourceEnvironmentId: EnvironmentId | null,
threadDraftTarget = attachmentDraftTarget,
): ReadonlyMap<string, string> => {
const rewritten = new Map<string, string>();
const dependentAttachmentLocalIds = new Map<string, string>();
Expand Down Expand Up @@ -3232,7 +3233,11 @@ export const ChatComposer = memo(function ChatComposer(props: ChatComposerProps)
: existing
? (uploadedContextRecordFromDraft(existing) ?? undefined)
: undefined;
if (existingRecord && isSameComposerContextPayload(existingRecord, record)) {
if (
existingRecord &&
isSameComposerContextPayload(existingRecord, record) &&
(record.kind !== "thread" || threadDraftTarget === attachmentDraftTarget)
) {
if (record.kind === "preview-annotation" && record.screenshotContextId) {
skippedDependentAttachmentIds.add(record.screenshotContextId);
}
Expand Down Expand Up @@ -3279,7 +3284,7 @@ export const ChatComposer = memo(function ChatComposer(props: ChatComposerProps)
case "thread": {
// The agent can only read threads on its own server; a pasted foreign one is dropped.
if (record.environmentId !== environmentId) break;
addComposerDraftThreadContexts(attachmentDraftTarget, [record], {
addComposerDraftThreadContexts(threadDraftTarget, [record], {
appendReference: false,
});
rewritten.set(record.contextId, record.contextId);
Expand Down Expand Up @@ -4344,7 +4349,7 @@ export const ChatComposer = memo(function ChatComposer(props: ChatComposerProps)
}

const rewrittenContextIds = entry.records
? importContextRecords(entry.records, null)
? importContextRecords(entry.records, null, composerDraftTarget)
: new Map<string, string>();
const restoredPrompt = replaceComposerContextReferences(entry.prompt, (reference) => {
const contextId = rewrittenContextIds.get(reference.contextId);
Expand Down Expand Up @@ -4597,6 +4602,7 @@ export const ChatComposer = memo(function ChatComposer(props: ChatComposerProps)
const images = [...composerImagesRef.current];
const files = [...composerFilesRef.current];
const stashedRecords: ComposerContextRecord[] = [
...composerThreadContexts,
...composerTerminalContextsRef.current.map(terminalContextRecord),
...composerReviewComments.map(reviewCommentContextRecord),
...composerPreviewAnnotations.map((annotation) =>
Expand Down Expand Up @@ -4702,6 +4708,7 @@ export const ChatComposer = memo(function ChatComposer(props: ChatComposerProps)
promptRef.current = "";
clearComposerDraftPromptAndImages(stashTarget);
clearComposerDraftTerminalContexts(stashTarget);
setComposerDraftThreadContexts(stashTarget, []);
for (const comment of composerReviewComments) {
removeComposerDraftReviewComment(stashTarget, comment.id);
}
Expand Down
Loading