mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-08-27 12:13:30 +00:00
🛂 fix: Preserve Legacy Assistant Attribution (#15118)
This commit is contained in:
parent
fc7d56dffe
commit
8f9fae0a6e
2 changed files with 49 additions and 1 deletions
|
|
@ -3211,6 +3211,52 @@ describe('AgentClient - titleConvo', () => {
|
|||
).toThrow(expect.objectContaining({ code: 'content_filter_block' }));
|
||||
});
|
||||
|
||||
it('preserves persisted assistant attribution at the final agent provider boundary', async () => {
|
||||
const marker = 'E2E-PERSISTED-UNATTRIBUTED-ASSISTANT';
|
||||
mockReq.config.filters = {
|
||||
messages: {
|
||||
pii: {
|
||||
fields: ['text'],
|
||||
starterPatterns: [],
|
||||
customPatterns: [
|
||||
{
|
||||
id: 'persisted-unattributed-assistant',
|
||||
label: 'persisted unattributed assistant content',
|
||||
regex: `^${marker}$`,
|
||||
},
|
||||
],
|
||||
},
|
||||
unattributedAssistantContent: 'inspect',
|
||||
},
|
||||
};
|
||||
const storedMessage = {
|
||||
messageId: 'legacy-assistant',
|
||||
parentMessageId: null,
|
||||
sender: 'Assistant',
|
||||
text: marker,
|
||||
isCreatedByUser: false,
|
||||
};
|
||||
client.setModelBoundStoredMessages([storedMessage]);
|
||||
|
||||
const result = await client.buildMessages([storedMessage], 'legacy-assistant', {}, {});
|
||||
const { messages: providerMessages } = jest
|
||||
.requireActual('@librechat/agents')
|
||||
.formatAgentMessages(result.prompt);
|
||||
|
||||
expect(() =>
|
||||
client
|
||||
.createModelBoundChatModelCallback()
|
||||
.handleChatModelStart(undefined, [providerMessages]),
|
||||
).toThrow(expect.objectContaining({ code: 'content_filter_block' }));
|
||||
|
||||
client.setModelBoundStoredMessages([{ ...storedMessage, isUserSubmitted: false }]);
|
||||
expect(() =>
|
||||
client
|
||||
.createModelBoundChatModelCallback()
|
||||
.handleChatModelStart(undefined, [providerMessages]),
|
||||
).not.toThrow();
|
||||
});
|
||||
|
||||
it('ignores historical file refs when this agent does not replay files', async () => {
|
||||
mockReq.config.filters = {
|
||||
files: {
|
||||
|
|
|
|||
|
|
@ -1986,7 +1986,9 @@ function projectStoredMessageForProvider(
|
|||
role: message.role,
|
||||
isCreatedByUser: message.isCreatedByUser,
|
||||
isUserSubmitted: message.isUserSubmitted,
|
||||
...(selectedContentPartIndices == null && messageContentCandidate == null && storedText != null
|
||||
...(messageContentCandidate == null &&
|
||||
storedText != null &&
|
||||
(selectedContentPartIndices == null || selectedContentPartIndices.has(0))
|
||||
? { text: storedText }
|
||||
: {}),
|
||||
...(attribution === 'user' && {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue