Skip to content

Commit 8796548

Browse files
committed
fix(chat): don't flash the legacy notice for in-flight messages
1 parent eb29eab commit 8796548

2 files changed

Lines changed: 36 additions & 1 deletion

File tree

__tests__/legacyChat.test.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,35 @@ describe('chatPredatesSourceLinking', () => {
102102
expect(chatPredatesSourceLinking([], BOUNDARY)).toBe(false);
103103
});
104104

105+
it('ignores an optimistic message still carrying its negative placeholder id', () => {
106+
expect(
107+
chatPredatesSourceLinking(
108+
[
109+
message({
110+
id: -1785487200000,
111+
role: 'user',
112+
documentName: 'new.pdf',
113+
}),
114+
message({ id: -1, role: 'assistant', content: '' }),
115+
],
116+
BOUNDARY
117+
)
118+
).toBe(false);
119+
});
120+
121+
it('still flags a genuine legacy chat that also has an in-flight message', () => {
122+
expect(
123+
chatPredatesSourceLinking(
124+
[
125+
message({ id: 10, role: 'user', documentName: 'report.pdf' }),
126+
message({ id: 11, role: 'assistant', content: 'summary' }),
127+
message({ id: -1785487200000, role: 'user', content: 'follow-up' }),
128+
],
129+
BOUNDARY
130+
)
131+
).toBe(true);
132+
});
133+
105134
it('reads the module boundary when none is passed', () => {
106135
setSourceLinkingBoundary(BOUNDARY);
107136
expect(

utils/legacyChat.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ export type LegacyChatDiagnosis = {
77
isLegacy: boolean;
88
};
99

10+
const isPersisted = (message: Message) => message.id > 0;
11+
1012
// Both checks are scoped to the pre-boundary era (id <= boundary) on purpose: a
1113
// new turn that retrieves a source (id > boundary) must not flip a legacy chat to
1214
// "linked" and drop the notice mid-conversation.
@@ -15,10 +17,14 @@ export const diagnoseLegacyChat = (
1517
boundaryMessageId: number = getSourceLinkingBoundary()
1618
): LegacyChatDiagnosis => {
1719
const hasLegacyDocument = messages.some(
18-
(message) => !!message.documentName && message.id <= boundaryMessageId
20+
(message) =>
21+
!!message.documentName &&
22+
isPersisted(message) &&
23+
message.id <= boundaryMessageId
1924
);
2025
const hasSourceLinking = messages.some(
2126
(message) =>
27+
isPersisted(message) &&
2228
message.id <= boundaryMessageId &&
2329
!!message.sourceDocuments &&
2430
message.sourceDocuments.length > 0

0 commit comments

Comments
 (0)