helloya20's picture
Upload 2345 files
f0743f4 verified
import type { MemoryArtifact } from 'librechat-data-provider';
import { useMemo } from 'react';
import { useLocalize } from '~/hooks';
export default function MemoryInfo({ memoryArtifacts }: { memoryArtifacts: MemoryArtifact[] }) {
const localize = useLocalize();
const { updatedMemories, deletedMemories, errorMessages } = useMemo(() => {
const updated = memoryArtifacts.filter((art) => art.type === 'update');
const deleted = memoryArtifacts.filter((art) => art.type === 'delete');
const errors = memoryArtifacts.filter((art) => art.type === 'error');
const messages = errors.map((artifact) => {
try {
const errorData = JSON.parse(artifact.value as string);
if (errorData.errorType === 'already_exceeded') {
return localize('com_ui_memory_already_exceeded', {
tokens: errorData.tokenCount,
});
} else if (errorData.errorType === 'would_exceed') {
return localize('com_ui_memory_would_exceed', {
tokens: errorData.tokenCount,
});
} else {
return localize('com_ui_memory_error');
}
} catch {
return localize('com_ui_memory_error');
}
});
return {
updatedMemories: updated,
deletedMemories: deleted,
errorMessages: messages,
};
}, [memoryArtifacts, localize]);
if (memoryArtifacts.length === 0) {
return null;
}
if (updatedMemories.length === 0 && deletedMemories.length === 0 && errorMessages.length === 0) {
return null;
}
return (
<div className="space-y-4 p-4">
{updatedMemories.length > 0 && (
<div>
<h4 className="mb-2 text-sm font-semibold text-text-primary">
{localize('com_ui_memory_updated_items')}
</h4>
<div className="space-y-2">
{updatedMemories.map((artifact) => (
<div key={`update-${artifact.key}`} className="rounded-lg p-3">
<div className="mb-1 text-xs font-medium uppercase tracking-wide text-text-secondary">
{artifact.key}
</div>
<div className="whitespace-pre-wrap text-sm text-text-primary">
{artifact.value}
</div>
</div>
))}
</div>
</div>
)}
{deletedMemories.length > 0 && (
<div>
<h4 className="mb-2 text-sm font-semibold text-text-primary">
{localize('com_ui_memory_deleted_items')}
</h4>
<div className="space-y-2">
{deletedMemories.map((artifact) => (
<div key={`delete-${artifact.key}`} className="rounded-lg p-3 opacity-60">
<div className="mb-1 text-xs font-medium uppercase tracking-wide text-text-secondary">
{artifact.key}
</div>
<div className="text-sm italic text-text-secondary">
{localize('com_ui_memory_deleted')}
</div>
</div>
))}
</div>
</div>
)}
{errorMessages.length > 0 && (
<div>
<h4 className="mb-2 text-sm font-semibold text-red-500">
{localize('com_ui_memory_storage_full')}
</h4>
<div className="space-y-2">
{errorMessages.map((errorMessage) => (
<div
key={errorMessage}
className="rounded-md bg-red-50 p-3 text-sm text-red-800 dark:bg-red-900/20 dark:text-red-400"
>
{errorMessage}
</div>
))}
</div>
</div>
)}
</div>
);
}