diff --git a/api/app/clients/prompts/shadcn-docs/generate.js b/api/app/clients/prompts/shadcn-docs/generate.js index 6cb56f1077..6a4cf8c7e3 100644 --- a/api/app/clients/prompts/shadcn-docs/generate.js +++ b/api/app/clients/prompts/shadcn-docs/generate.js @@ -18,17 +18,17 @@ function generateShadcnPrompt(options) { Here are the components that are available, along with how to import them, and how to use them: ${Object.values(components) - .map((component) => { - if (useXML) { - return dedent` + .map((component) => { + if (useXML) { + return dedent` ${component.componentName} ${component.importDocs} ${component.usageDocs} `; - } else { - return dedent` + } else { + return dedent` # ${component.componentName} ## Import Instructions @@ -37,9 +37,9 @@ function generateShadcnPrompt(options) { ## Usage Instructions ${component.usageDocs} `; - } - }) - .join('\n\n')} + } + }) + .join('\n\n')} `; return systemPrompt; diff --git a/api/app/clients/tools/structured/OpenWeather.js b/api/app/clients/tools/structured/OpenWeather.js index b84225101c..f92fe522ce 100644 --- a/api/app/clients/tools/structured/OpenWeather.js +++ b/api/app/clients/tools/structured/OpenWeather.js @@ -232,7 +232,7 @@ class OpenWeather extends Tool { if (['current_forecast', 'timestamp', 'daily_aggregation', 'overview'].includes(action)) { if (typeof finalLat !== 'number' || typeof finalLon !== 'number') { - return 'Error: lat and lon are required and must be numbers for this action (or specify \'city\').'; + return "Error: lat and lon are required and must be numbers for this action (or specify 'city')."; } } @@ -243,7 +243,7 @@ class OpenWeather extends Tool { let dt; if (action === 'timestamp') { if (!date) { - return 'Error: For timestamp action, a \'date\' in YYYY-MM-DD format is required.'; + return "Error: For timestamp action, a 'date' in YYYY-MM-DD format is required."; } dt = this.convertDateToUnix(date); } diff --git a/api/server/routes/__tests__/config.spec.js b/api/server/routes/__tests__/config.spec.js index 054e4726f0..7d7d3ea13a 100644 --- a/api/server/routes/__tests__/config.spec.js +++ b/api/server/routes/__tests__/config.spec.js @@ -43,7 +43,6 @@ afterEach(() => { //TODO: This works/passes locally but http request tests fail with 404 in CI. Need to figure out why. -// eslint-disable-next-line jest/no-disabled-tests describe.skip('GET /', () => { it('should return 200 and the correct body', async () => { process.env.APP_TITLE = 'Test Title'; diff --git a/api/server/services/Endpoints/azureAssistants/build.js b/api/server/services/Endpoints/azureAssistants/build.js index 54a32e4d3c..53b1dbeb68 100644 --- a/api/server/services/Endpoints/azureAssistants/build.js +++ b/api/server/services/Endpoints/azureAssistants/build.js @@ -3,7 +3,6 @@ const generateArtifactsPrompt = require('~/app/clients/prompts/artifacts'); const { getAssistant } = require('~/models/Assistant'); const buildOptions = async (endpoint, parsedBody) => { - const { promptPrefix, assistant_id, iconURL, greeting, spec, artifacts, ...modelOptions } = parsedBody; const endpointOption = removeNullishValues({ diff --git a/api/server/services/Threads/processMessages.spec.js b/api/server/services/Threads/processMessages.spec.js index 673b96bf7c..a89f2b9f5b 100644 --- a/api/server/services/Threads/processMessages.spec.js +++ b/api/server/services/Threads/processMessages.spec.js @@ -255,7 +255,7 @@ describe('processMessages', () => { type: 'text', text: { value: - 'The text you have uploaded is from the book "Harry Potter and the Philosopher\'s Stone" by J.K. Rowling. It follows the story of a young boy named Harry Potter who discovers that he is a wizard on his eleventh birthday. Here are some key points of the narrative:\n\n1. **Discovery and Invitation to Hogwarts**: Harry learns that he is a wizard and receives an invitation to attend Hogwarts School of Witchcraft and Wizardry【11:2†source】【11:4†source】.\n\n2. **Shopping for Supplies**: Hagrid takes Harry to Diagon Alley to buy his school supplies, including his wand from Ollivander\'s【11:9†source】【11:14†source】.\n\n3. **Introduction to Hogwarts**: Harry is introduced to Hogwarts, the magical school where he will learn about magic and discover more about his own background【11:12†source】【11:18†source】.\n\n4. **Meeting Friends and Enemies**: At Hogwarts, Harry makes friends like Ron Weasley and Hermione Granger, and enemies like Draco Malfoy【11:16†source】.\n\n5. **Uncovering the Mystery**: Harry, along with Ron and Hermione, uncovers the mystery of the Philosopher\'s Stone and its connection to the dark wizard Voldemort【11:1†source】【11:10†source】【11:7†source】.\n\nThese points highlight Harry\'s initial experiences in the magical world and set the stage for his adventures at Hogwarts.', + "The text you have uploaded is from the book \"Harry Potter and the Philosopher's Stone\" by J.K. Rowling. It follows the story of a young boy named Harry Potter who discovers that he is a wizard on his eleventh birthday. Here are some key points of the narrative:\n\n1. **Discovery and Invitation to Hogwarts**: Harry learns that he is a wizard and receives an invitation to attend Hogwarts School of Witchcraft and Wizardry【11:2†source】【11:4†source】.\n\n2. **Shopping for Supplies**: Hagrid takes Harry to Diagon Alley to buy his school supplies, including his wand from Ollivander's【11:9†source】【11:14†source】.\n\n3. **Introduction to Hogwarts**: Harry is introduced to Hogwarts, the magical school where he will learn about magic and discover more about his own background【11:12†source】【11:18†source】.\n\n4. **Meeting Friends and Enemies**: At Hogwarts, Harry makes friends like Ron Weasley and Hermione Granger, and enemies like Draco Malfoy【11:16†source】.\n\n5. **Uncovering the Mystery**: Harry, along with Ron and Hermione, uncovers the mystery of the Philosopher's Stone and its connection to the dark wizard Voldemort【11:1†source】【11:10†source】【11:7†source】.\n\nThese points highlight Harry's initial experiences in the magical world and set the stage for his adventures at Hogwarts.", annotations: [ { type: 'file_citation', @@ -424,7 +424,7 @@ These points highlight Harry's initial experiences in the magical world and set type: 'text', text: { value: - 'The text you have uploaded is from the book "Harry Potter and the Philosopher\'s Stone" by J.K. Rowling. It follows the story of a young boy named Harry Potter who discovers that he is a wizard on his eleventh birthday. Here are some key points of the narrative:\n\n1. **Discovery and Invitation to Hogwarts**: Harry learns that he is a wizard and receives an invitation to attend Hogwarts School of Witchcraft and Wizardry【11:2†source】【11:4†source】.\n\n2. **Shopping for Supplies**: Hagrid takes Harry to Diagon Alley to buy his school supplies, including his wand from Ollivander\'s【11:9†source】【11:14†source】.\n\n3. **Introduction to Hogwarts**: Harry is introduced to Hogwarts, the magical school where he will learn about magic and discover more about his own background【11:12†source】【11:18†source】.\n\n4. **Meeting Friends and Enemies**: At Hogwarts, Harry makes friends like Ron Weasley and Hermione Granger, and enemies like Draco Malfoy【11:16†source】.\n\n5. **Uncovering the Mystery**: Harry, along with Ron and Hermione, uncovers the mystery of the Philosopher\'s Stone and its connection to the dark wizard Voldemort【11:1†source】【11:10†source】【11:7†source】.\n\nThese points highlight Harry\'s initial experiences in the magical world and set the stage for his adventures at Hogwarts.', + "The text you have uploaded is from the book \"Harry Potter and the Philosopher's Stone\" by J.K. Rowling. It follows the story of a young boy named Harry Potter who discovers that he is a wizard on his eleventh birthday. Here are some key points of the narrative:\n\n1. **Discovery and Invitation to Hogwarts**: Harry learns that he is a wizard and receives an invitation to attend Hogwarts School of Witchcraft and Wizardry【11:2†source】【11:4†source】.\n\n2. **Shopping for Supplies**: Hagrid takes Harry to Diagon Alley to buy his school supplies, including his wand from Ollivander's【11:9†source】【11:14†source】.\n\n3. **Introduction to Hogwarts**: Harry is introduced to Hogwarts, the magical school where he will learn about magic and discover more about his own background【11:12†source】【11:18†source】.\n\n4. **Meeting Friends and Enemies**: At Hogwarts, Harry makes friends like Ron Weasley and Hermione Granger, and enemies like Draco Malfoy【11:16†source】.\n\n5. **Uncovering the Mystery**: Harry, along with Ron and Hermione, uncovers the mystery of the Philosopher's Stone and its connection to the dark wizard Voldemort【11:1†source】【11:10†source】【11:7†source】.\n\nThese points highlight Harry's initial experiences in the magical world and set the stage for his adventures at Hogwarts.", annotations: [ { type: 'file_citation', @@ -582,7 +582,7 @@ These points highlight Harry's initial experiences in the magical world and set type: 'text', text: { value: - 'This is a test ^1^ with pre-existing citation-like text. Here\'s a real citation【11:2†source】.', + "This is a test ^1^ with pre-existing citation-like text. Here's a real citation【11:2†source】.", annotations: [ { type: 'file_citation', @@ -610,7 +610,7 @@ These points highlight Harry's initial experiences in the magical world and set }); const expectedText = - 'This is a test ^1^ with pre-existing citation-like text. Here\'s a real citation^1^.\n\n^1.^ test.txt'; + "This is a test ^1^ with pre-existing citation-like text. Here's a real citation^1^.\n\n^1.^ test.txt"; expect(result.text).toBe(expectedText); expect(result.edited).toBe(true); diff --git a/client/src/@types/i18next.d.ts b/client/src/@types/i18next.d.ts index 2d50f5a3cd..82f1ce1a3d 100644 --- a/client/src/@types/i18next.d.ts +++ b/client/src/@types/i18next.d.ts @@ -1,9 +1,9 @@ import { defaultNS, resources } from '~/locales/i18n'; declare module 'i18next' { - interface CustomTypeOptions { - defaultNS: typeof defaultNS; - resources: typeof resources.en; - strictKeyChecks: true - } -} \ No newline at end of file + interface CustomTypeOptions { + defaultNS: typeof defaultNS; + resources: typeof resources.en; + strictKeyChecks: true; + } +} diff --git a/client/src/components/Auth/__tests__/Registration.spec.tsx b/client/src/components/Auth/__tests__/Registration.spec.tsx index a1211ae6be..6993c862d4 100644 --- a/client/src/components/Auth/__tests__/Registration.spec.tsx +++ b/client/src/components/Auth/__tests__/Registration.spec.tsx @@ -156,7 +156,6 @@ test('renders registration form', () => { ); }); -// eslint-disable-next-line jest/no-commented-out-tests // test('calls registerUser.mutate on registration', async () => { // const mutate = jest.fn(); // const { getByTestId, getByRole, history } = setup({ diff --git a/client/src/components/Chat/Input/Artifacts.tsx b/client/src/components/Chat/Input/Artifacts.tsx index 6df404f451..8bc92744b4 100644 --- a/client/src/components/Chat/Input/Artifacts.tsx +++ b/client/src/components/Chat/Input/Artifacts.tsx @@ -100,7 +100,8 @@ function Artifacts() { 'ml-1 h-4 w-4 text-text-secondary transition-transform duration-300 md:ml-0.5', isButtonExpanded && 'rotate-180', )} - aria-hidden="true" /> + aria-hidden="true" + /> [] = [ className="px-2 py-0 text-xs hover:bg-surface-hover sm:px-2 sm:py-2 sm:text-sm" onClick={() => column.toggleSorting(column.getIsSorted() === 'asc')} aria-sort={ariaSort} - aria-label={localize('com_ui_name_sort')} aria-hidden="true" + aria-label={localize('com_ui_name_sort')} + aria-hidden="true" aria-current={sortState ? 'true' : 'false'} > {localize('com_ui_name')} @@ -150,7 +151,8 @@ export const columns: ColumnDef[] = [ onClick={() => column.toggleSorting(column.getIsSorted() === 'asc')} className="px-2 py-0 text-xs hover:bg-surface-hover sm:px-2 sm:py-2 sm:text-sm" aria-sort={ariaSort} - aria-label={localize('com_ui_date_sort')} aria-hidden="true" + aria-label={localize('com_ui_date_sort')} + aria-hidden="true" aria-current={sortState ? 'true' : 'false'} > {localize('com_ui_date')} @@ -268,7 +270,8 @@ export const columns: ColumnDef[] = [ className="px-2 py-0 text-xs hover:bg-surface-hover sm:px-2 sm:py-2 sm:text-sm" onClick={() => column.toggleSorting(column.getIsSorted() === 'asc')} aria-sort={ariaSort} - aria-label={localize('com_ui_size_sort')} aria-hidden="true" + aria-label={localize('com_ui_size_sort')} + aria-hidden="true" aria-current={sortState ? 'true' : 'false'} > {localize('com_ui_size')} diff --git a/client/src/components/Chat/Input/StreamAudio.tsx b/client/src/components/Chat/Input/StreamAudio.tsx index 83eb9e7fae..221acaaa2c 100644 --- a/client/src/components/Chat/Input/StreamAudio.tsx +++ b/client/src/components/Chat/Input/StreamAudio.tsx @@ -39,7 +39,7 @@ export default function StreamAudio({ index = 0 }) { const { pauseGlobalAudio } = usePauseGlobalAudio(); const { conversationId: paramId } = useParams(); - const queryParam = paramId === 'new' ? paramId : latestMessage?.conversationId ?? paramId ?? ''; + const queryParam = paramId === 'new' ? paramId : (latestMessage?.conversationId ?? paramId ?? ''); const queryClient = useQueryClient(); const getMessages = useCallback( diff --git a/client/src/components/Chat/Menus/Models/fakeData.ts b/client/src/components/Chat/Menus/Models/fakeData.ts index 7c994adb7b..43d4cf489a 100644 --- a/client/src/components/Chat/Menus/Models/fakeData.ts +++ b/client/src/components/Chat/Menus/Models/fakeData.ts @@ -33,7 +33,7 @@ export const data: TModelSpec[] = [ iconURL: EModelEndpoint.openAI, // Allow using project-included icons preset: { chatGptLabel: 'Vision Helper', - greeting: 'What\'s up!!', + greeting: "What's up!!", endpoint: EModelEndpoint.openAI, model: 'gpt-4-turbo', promptPrefix: diff --git a/client/src/components/Chat/Menus/UI/MenuItem.tsx b/client/src/components/Chat/Menus/UI/MenuItem.tsx index 30b0e59c4d..f2d74d09c6 100644 --- a/client/src/components/Chat/Menus/UI/MenuItem.tsx +++ b/client/src/components/Chat/Menus/UI/MenuItem.tsx @@ -55,7 +55,7 @@ const MenuItem: FC = ({ >
-
+
{icon != null ? icon : null}
{title} @@ -72,7 +72,7 @@ const MenuItem: FC = ({ viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" - className="icon-md block " + className="icon-md block" >
) : ( -
+
)} diff --git a/client/src/components/Share/MultiMessage.tsx b/client/src/components/Share/MultiMessage.tsx index 349f2d55a8..24ec2a5dd3 100644 --- a/client/src/components/Share/MultiMessage.tsx +++ b/client/src/components/Share/MultiMessage.tsx @@ -2,7 +2,7 @@ import { useEffect } from 'react'; import { useRecoilState } from 'recoil'; import type { TMessage } from 'librechat-data-provider'; import type { TMessageProps } from '~/common'; -// eslint-disable-next-line import/no-cycle + import Message from './Message'; import store from '~/store'; diff --git a/client/src/components/SidePanel/Builder/ActionsAuth.tsx b/client/src/components/SidePanel/Builder/ActionsAuth.tsx index 15ff89626e..84b24bce6d 100644 --- a/client/src/components/SidePanel/Builder/ActionsAuth.tsx +++ b/client/src/components/SidePanel/Builder/ActionsAuth.tsx @@ -33,9 +33,7 @@ export default function ActionsAuth({ disableOAuth }: { disableOAuth?: boolean }
-
- {localize(getAuthLocalizationKey(type))} -
+
{localize(getAuthLocalizationKey(type))}