mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-24 04:10:15 +01:00
* ✨ feat: Implement Show Thinking feature; refactor: testing thinking render optimizations * ✨ feat: Refactor Thinking component styles and enhance Markdown rendering * chore: add back removed code, revert type changes * chore: Add back resetCounter effect to Markdown component for improved code block indexing * chore: bump @librechat/agents and google langchain packages * WIP: reasoning type updates * WIP: first pass, reasoning content blocks * chore: revert code * chore: bump @librechat/agents * refactor: optimize reasoning tag handling * style: ul indent padding * feat: add Reasoning component to handle reasoning display * feat: first pass, content reasoning part styling * refactor: add content placeholder for endpoints using new stream handler * refactor: only cache messages when requesting stream audio * fix: circular dep. * fix: add default param * refactor: tts, only request after message stream, fix chrome autoplay * style: update label for submitting state and add localization for 'Thinking...' * fix: improve global audio pause logic and reset active run ID * fix: handle artifact edge cases * fix: remove unnecessary console log from artifact update test * feat: add support for continued message handling with new streaming method --------- Co-authored-by: Marco Beretta <81851188+berry-13@users.noreply.github.com>
62 lines
1.9 KiB
JavaScript
62 lines
1.9 KiB
JavaScript
import { RecoilRoot } from 'recoil';
|
|
import { DndProvider } from 'react-dnd';
|
|
import { RouterProvider } from 'react-router-dom';
|
|
import * as RadixToast from '@radix-ui/react-toast';
|
|
import { HTML5Backend } from 'react-dnd-html5-backend';
|
|
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
|
|
import { QueryClient, QueryClientProvider, QueryCache } from '@tanstack/react-query';
|
|
import { ScreenshotProvider, ThemeProvider, useApiErrorBoundary } from './hooks';
|
|
import { ToastProvider } from './Providers';
|
|
import Toast from './components/ui/Toast';
|
|
import { LiveAnnouncer } from '~/a11y';
|
|
import { router } from './routes';
|
|
|
|
const App = () => {
|
|
const { setError } = useApiErrorBoundary();
|
|
|
|
const queryClient = new QueryClient({
|
|
queryCache: new QueryCache({
|
|
onError: (error) => {
|
|
if (error?.response?.status === 401) {
|
|
setError(error);
|
|
}
|
|
},
|
|
}),
|
|
});
|
|
|
|
return (
|
|
<QueryClientProvider client={queryClient}>
|
|
<RecoilRoot>
|
|
<LiveAnnouncer>
|
|
<ThemeProvider>
|
|
<RadixToast.Provider>
|
|
<ToastProvider>
|
|
<DndProvider backend={HTML5Backend}>
|
|
<RouterProvider router={router} />
|
|
<ReactQueryDevtools initialIsOpen={false} position="top-right" />
|
|
<Toast />
|
|
<RadixToast.Viewport className="pointer-events-none fixed inset-0 z-[1000] mx-auto my-2 flex max-w-[560px] flex-col items-stretch justify-start md:pb-5" />
|
|
</DndProvider>
|
|
</ToastProvider>
|
|
</RadixToast.Provider>
|
|
</ThemeProvider>
|
|
</LiveAnnouncer>
|
|
</RecoilRoot>
|
|
</QueryClientProvider>
|
|
);
|
|
};
|
|
|
|
export default () => (
|
|
<ScreenshotProvider>
|
|
<App />
|
|
<iframe
|
|
src="/assets/silence.mp3"
|
|
allow="autoplay"
|
|
id="audio"
|
|
title="audio-silence"
|
|
style={{
|
|
display: 'none',
|
|
}}
|
|
/>
|
|
</ScreenshotProvider>
|
|
);
|