ci(backend-review.yml): add linter step to the backend review workflow (#625)

* ci(backend-review.yml): add linter step to the backend review workflow

* chore(backend-review.yml): remove prettier from lint-action configuration

* chore: apply new linting workflow

* chore(lint-staged.config.js): reorder lint-staged tasks for JavaScript and TypeScript files

* chore(eslint): update ignorePatterns in .eslintrc.js
chore(lint-action): remove prettier option in backend-review.yml
chore(package.json): add lint and lint:fix scripts

* chore(lint-staged.config.js): remove prettier --write command for js, jsx, ts, tsx files

* chore(titleConvo.js): remove unnecessary console.log statement
chore(titleConvo.js): add missing comma in options object

* chore: apply linting to all files

* chore(lint-staged.config.js): update lint-staged configuration to include prettier formatting
This commit is contained in:
Danny Avila 2023-07-14 09:36:49 -04:00 committed by GitHub
parent 637bb6bc11
commit e5336039fc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
231 changed files with 1688 additions and 1526 deletions

View file

@ -5,19 +5,19 @@ const addToCache = async ({ endpoint, endpointOption, userMessage, responseMessa
try {
const conversationsCache = new Keyv({
store: new KeyvFile({ filename: './data/cache.json' }),
namespace: 'chatgpt' // should be 'bing' for bing/sydney
namespace: 'chatgpt', // should be 'bing' for bing/sydney
});
const {
conversationId,
messageId: userMessageId,
parentMessageId: userParentMessageId,
text: userText
text: userText,
} = userMessage;
const {
messageId: responseMessageId,
parentMessageId: responseParentMessageId,
text: responseText
text: responseText,
} = responseMessage;
let conversation = await conversationsCache.get(conversationId);
@ -26,7 +26,7 @@ const addToCache = async ({ endpoint, endpointOption, userMessage, responseMessa
if (!conversation) {
conversation = {
messages: [],
createdAt: Date.now()
createdAt: Date.now(),
};
// isNewConversation = true;
}
@ -43,14 +43,14 @@ const addToCache = async ({ endpoint, endpointOption, userMessage, responseMessa
id: userMessageId,
parentMessageId: userParentMessageId,
role: 'User',
message: userText
message: userText,
};
let _responseMessage = {
id: responseMessageId,
parentMessageId: responseParentMessageId,
role: roles(endpointOption),
message: responseText
message: responseText,
};
conversation.messages.push(_userMessage, _responseMessage);

View file

@ -27,8 +27,8 @@ router.post('/', requireJwtAuth, async (req, res) => {
temperature: req.body?.temperature ?? 0.7,
maxOutputTokens: req.body?.maxOutputTokens ?? 1024,
topP: req.body?.topP ?? 0.7,
topK: req.body?.topK ?? 40
}
topK: req.body?.topK ?? 40,
},
};
const conversationId = oldConversationId || crypto.randomUUID();
@ -39,7 +39,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
conversationId,
parentMessageId,
req,
res
res,
});
});
@ -49,7 +49,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache, no-transform',
'Access-Control-Allow-Origin': '*',
'X-Accel-Buffering': 'no'
'X-Accel-Buffering': 'no',
});
let userMessage;
@ -81,10 +81,10 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
text: partialText,
unfinished: true,
cancelled: false,
error: false
error: false,
});
}
}
},
});
const abortController = new AbortController();
@ -110,7 +110,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
final: true,
conversation: await getConvo(req.user.id, conversationId),
requestMessage: userMessage,
responseMessage: responseMessage
responseMessage: responseMessage,
};
};
@ -132,10 +132,10 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
onProgress: progressCallback.call(null, {
res,
text,
parentMessageId: overrideParentMessageId || userMessageId
parentMessageId: overrideParentMessageId || userMessageId,
}),
onStart,
abortController
abortController,
});
if (overrideParentMessageId) {
@ -146,7 +146,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
...endpointOption,
...endpointOption.modelOptions,
conversationId,
endpoint: 'anthropic'
endpoint: 'anthropic',
});
await saveMessage(response);
@ -155,7 +155,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
final: true,
conversation: await getConvo(req.user.id, conversationId),
requestMessage: userMessage,
responseMessage: response
responseMessage: response,
});
res.end();
@ -163,7 +163,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
const title = await titleConvo({ text, response });
await saveConvo(req.user.id, {
conversationId,
title
title,
});
}
} catch (error) {
@ -176,7 +176,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
unfinished: false,
cancelled: false,
error: true,
text: error.message
text: error.message,
};
await saveMessage(errorMessage);
handleError(res, errorMessage);

View file

@ -13,7 +13,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
messageId,
overrideParentMessageId = null,
parentMessageId,
conversationId: oldConversationId
conversationId: oldConversationId,
} = req.body;
if (text.length === 0) return handleError(res, { text: 'Prompt empty or too short' });
if (endpoint !== 'bingAI') return handleError(res, { text: 'Illegal request' });
@ -29,7 +29,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
text,
parentMessageId: userParentMessageId,
conversationId,
isCreatedByUser: true
isCreatedByUser: true,
};
// build endpoint option
@ -41,7 +41,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
systemMessage: req.body?.systemMessage ?? null,
context: req.body?.context ?? null,
toneStyle: req.body?.toneStyle ?? 'creative',
token: req.body?.token ?? null
token: req.body?.token ?? null,
};
else
endpointOption = {
@ -52,13 +52,13 @@ router.post('/', requireJwtAuth, async (req, res) => {
clientId: req.body?.clientId ?? null,
invocationId: req.body?.invocationId ?? null,
toneStyle: req.body?.toneStyle ?? 'creative',
token: req.body?.token ?? null
token: req.body?.token ?? null,
};
console.log('ask log', {
userMessage,
endpointOption,
conversationId
conversationId,
});
if (!overrideParentMessageId) {
@ -67,7 +67,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
...userMessage,
...endpointOption,
conversationId,
endpoint
endpoint,
});
}
@ -80,7 +80,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
preSendRequest: true,
overrideParentMessageId,
req,
res
res,
});
});
@ -92,7 +92,7 @@ const ask = async ({
preSendRequest = true,
overrideParentMessageId = null,
req,
res
res,
}) => {
let { text, parentMessageId: userParentMessageId, messageId: userMessageId } = userMessage;
@ -103,7 +103,7 @@ const ask = async ({
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache, no-transform',
'Access-Control-Allow-Origin': '*',
'X-Accel-Buffering': 'no'
'X-Accel-Buffering': 'no',
});
if (preSendRequest) sendMessage(res, { message: userMessage, created: true });
@ -123,10 +123,10 @@ const ask = async ({
text: text,
unfinished: true,
cancelled: false,
error: false
error: false,
});
}
}
},
});
const abortController = new AbortController();
let bingConversationId = null;
@ -142,9 +142,9 @@ const ask = async ({
onProgress: progressCallback.call(null, {
res,
text,
parentMessageId: overrideParentMessageId || userMessageId
parentMessageId: overrideParentMessageId || userMessageId,
}),
abortController
abortController,
});
console.log('BING RESPONSE', response);
@ -173,7 +173,7 @@ const ask = async ({
response.details.suggestedResponses.map((s) => s.text),
unfinished: false,
cancelled: false,
error: false
error: false,
};
await saveMessage(responseMessage);
@ -199,7 +199,7 @@ const ask = async ({
await saveMessage({
...userMessage,
messageId: userMessageId,
newMessageId: newUserMessageId
newMessageId: newUserMessageId,
});
userMessageId = newUserMessageId;
@ -208,19 +208,19 @@ const ask = async ({
final: true,
conversation: await getConvo(req.user.id, conversationId),
requestMessage: userMessage,
responseMessage: responseMessage
responseMessage: responseMessage,
});
res.end();
if (userParentMessageId == '00000000-0000-0000-0000-000000000000') {
const title = await titleConvoBing({
text,
response: responseMessage
response: responseMessage,
});
await saveConvo(req.user.id, {
conversationId: conversationId,
title
title,
});
}
} catch (error) {
@ -233,7 +233,7 @@ const ask = async ({
unfinished: false,
cancelled: false,
error: true,
text: error.message
text: error.message,
};
await saveMessage(errorMessage);
handleError(res, errorMessage);

View file

@ -13,7 +13,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
text,
overrideParentMessageId = null,
parentMessageId,
conversationId: oldConversationId
conversationId: oldConversationId,
} = req.body;
if (text.length === 0) return handleError(res, { text: 'Prompt empty or too short' });
if (endpoint !== 'chatGPTBrowser') return handleError(res, { text: 'Illegal request' });
@ -29,13 +29,13 @@ router.post('/', requireJwtAuth, async (req, res) => {
text,
parentMessageId: userParentMessageId,
conversationId,
isCreatedByUser: true
isCreatedByUser: true,
};
// build endpoint option
const endpointOption = {
model: req.body?.model ?? 'text-davinci-002-render-sha',
token: req.body?.token ?? null
token: req.body?.token ?? null,
};
// const availableModels = getChatGPTBrowserModels();
@ -45,7 +45,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
console.log('ask log', {
userMessage,
endpointOption,
conversationId
conversationId,
});
if (!overrideParentMessageId) {
@ -54,7 +54,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
...userMessage,
...endpointOption,
conversationId,
endpoint
endpoint,
});
}
@ -67,7 +67,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
preSendRequest: true,
overrideParentMessageId,
req,
res
res,
});
});
@ -78,7 +78,7 @@ const ask = async ({
conversationId,
overrideParentMessageId = null,
req,
res
res,
}) => {
let { text, parentMessageId: userParentMessageId, messageId: userMessageId } = userMessage;
const userId = req.user.id;
@ -88,7 +88,7 @@ const ask = async ({
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache, no-transform',
'Access-Control-Allow-Origin': '*',
'X-Accel-Buffering': 'no'
'X-Accel-Buffering': 'no',
});
let responseMessageId = crypto.randomUUID();
@ -108,10 +108,10 @@ const ask = async ({
text: text,
unfinished: true,
cancelled: false,
error: false
error: false,
});
}
}
},
});
getPartialMessage = getPartialText;
@ -134,9 +134,9 @@ const ask = async ({
sendMessage(res, {
message: { ...userMessage, conversationId: data.conversation_id },
created: true
created: true,
});
}
},
});
console.log('CLIENT RESPONSE', response);
@ -157,7 +157,7 @@ const ask = async ({
sender: endpointOption?.chatGptLabel || 'ChatGPT',
unfinished: false,
cancelled: false,
error: false
error: false,
};
await saveMessage(responseMessage);
@ -173,13 +173,13 @@ const ask = async ({
conversationUpdate = {
...conversationUpdate,
conversationId: conversationId,
newConversationId: newConversationId
newConversationId: newConversationId,
};
} else {
// create new conversation
conversationUpdate = {
...conversationUpdate,
...endpointOption
...endpointOption,
};
}
@ -195,7 +195,7 @@ const ask = async ({
await saveMessage({
...userMessage,
messageId: userMessageId,
newMessageId: newUserMassageId
newMessageId: newUserMassageId,
});
userMessageId = newUserMassageId;
@ -204,7 +204,7 @@ const ask = async ({
final: true,
conversation: await getConvo(req.user.id, conversationId),
requestMessage: userMessage,
responseMessage: responseMessage
responseMessage: responseMessage,
});
res.end();
@ -213,7 +213,7 @@ const ask = async ({
const title = await response.details.title;
await saveConvo(req.user.id, {
conversationId: conversationId,
title
title,
});
}
} catch (error) {
@ -225,7 +225,7 @@ const ask = async ({
unfinished: false,
cancelled: false,
// error: true,
text: `${getPartialMessage() ?? ''}\n\nError message: "${error.message}"`
text: `${getPartialMessage() ?? ''}\n\nError message: "${error.message}"`,
};
await saveMessage(errorMessage);
handleError(res, errorMessage);

View file

@ -23,13 +23,13 @@ router.post('/', requireJwtAuth, async (req, res) => {
temperature: req.body?.temperature ?? 0.2,
maxOutputTokens: req.body?.maxOutputTokens ?? 1024,
topP: req.body?.topP ?? 0.95,
topK: req.body?.topK ?? 40
}
topK: req.body?.topK ?? 40,
},
};
const availableModels = ['chat-bison', 'text-bison', 'codechat-bison'];
if (availableModels.find((model) => model === endpointOption.modelOptions.model) === undefined) {
return handleError(res, { text: `Illegal request: model` });
return handleError(res, { text: 'Illegal request: model' });
}
const conversationId = oldConversationId || crypto.randomUUID();
@ -41,7 +41,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
conversationId,
parentMessageId,
req,
res
res,
});
});
@ -51,7 +51,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache, no-transform',
'Access-Control-Allow-Origin': '*',
'X-Accel-Buffering': 'no'
'X-Accel-Buffering': 'no',
});
let userMessage;
let userMessageId;
@ -84,10 +84,10 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
text: partialText,
unfinished: true,
cancelled: false,
error: false
error: false,
});
}
}
},
});
const abortController = new AbortController();
@ -104,14 +104,14 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
key = require('../../../data/auth.json');
}
} catch (e) {
console.log("No 'auth.json' file (service account key) found in /api/data/ for PaLM models");
console.log('No \'auth.json\' file (service account key) found in /api/data/ for PaLM models');
}
const clientOptions = {
// debug: true, // for testing
reverseProxyUrl: process.env.GOOGLE_REVERSE_PROXY || null,
proxy: process.env.PROXY || null,
...endpointOption
...endpointOption,
};
const client = new GoogleClient(key, clientOptions);
@ -125,9 +125,9 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
onProgress: progressCallback.call(null, {
res,
text,
parentMessageId: overrideParentMessageId || userMessageId
parentMessageId: overrideParentMessageId || userMessageId,
}),
abortController
abortController,
});
if (overrideParentMessageId) {
@ -138,7 +138,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
...endpointOption,
...endpointOption.modelOptions,
conversationId,
endpoint: 'google'
endpoint: 'google',
});
await saveMessage(response);
@ -147,7 +147,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
final: true,
conversation: await getConvo(req.user.id, conversationId),
requestMessage: userMessage,
responseMessage: response
responseMessage: response,
});
res.end();
@ -155,7 +155,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
const title = await titleConvo({ text, response });
await saveConvo(req.user.id, {
conversationId,
title
title,
});
}
} catch (error) {
@ -168,7 +168,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, conversationI
unfinished: false,
cancelled: false,
error: true,
text: error.message
text: error.message,
};
await saveMessage(errorMessage);
handleError(res, errorMessage);

View file

@ -8,7 +8,7 @@ const {
sendMessage,
createOnProgress,
formatSteps,
formatAction
formatAction,
} = require('./handlers');
const requireJwtAuth = require('../../../middleware/requireJwtAuth');
@ -44,12 +44,12 @@ router.post('/', requireJwtAuth, async (req, res) => {
temperature: req.body?.temperature ?? 0,
top_p: req.body?.top_p ?? 1,
presence_penalty: req.body?.presence_penalty ?? 0,
frequency_penalty: req.body?.frequency_penalty ?? 0
frequency_penalty: req.body?.frequency_penalty ?? 0,
},
agentOptions: {
...agentOptions,
// agent: 'functions'
}
},
};
console.log('ask log');
@ -63,7 +63,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
conversationId,
parentMessageId,
req,
res
res,
});
});
@ -73,7 +73,7 @@ const ask = async ({ text, endpoint, endpointOption, parentMessageId = null, con
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache, no-transform',
'Access-Control-Allow-Origin': '*',
'X-Accel-Buffering': 'no'
'X-Accel-Buffering': 'no',
});
let userMessage;
let userMessageId;
@ -87,7 +87,7 @@ const ask = async ({ text, endpoint, endpointOption, parentMessageId = null, con
loading: true,
inputs: [],
latest: null,
outputs: null
outputs: null,
};
try {
@ -119,10 +119,10 @@ const ask = async ({ text, endpoint, endpointOption, parentMessageId = null, con
model: endpointOption.modelOptions.model,
unfinished: true,
cancelled: false,
error: false
error: false,
});
}
}
},
});
const abortController = new AbortController();
@ -149,7 +149,7 @@ const ask = async ({ text, endpoint, endpointOption, parentMessageId = null, con
final: true,
conversation: await getConvo(req.user.id, conversationId),
requestMessage: userMessage,
responseMessage: responseMessage
responseMessage: responseMessage,
};
};
@ -164,7 +164,7 @@ const ask = async ({ text, endpoint, endpointOption, parentMessageId = null, con
endpoint,
reverseProxyUrl: process.env.OPENAI_REVERSE_PROXY || null,
proxy: process.env.PROXY || null,
...endpointOption
...endpointOption,
};
let openAIApiKey = req.body?.token ?? process.env.OPENAI_API_KEY;
@ -211,9 +211,9 @@ const ask = async ({ text, endpoint, endpointOption, parentMessageId = null, con
res,
text,
plugin,
parentMessageId: overrideParentMessageId || userMessageId
parentMessageId: overrideParentMessageId || userMessageId,
}),
abortController
abortController,
});
if (overrideParentMessageId) {
@ -230,7 +230,7 @@ const ask = async ({ text, endpoint, endpointOption, parentMessageId = null, con
final: true,
conversation: await getConvo(req.user.id, conversationId),
requestMessage: userMessage,
responseMessage: response
responseMessage: response,
});
res.end();
@ -243,7 +243,7 @@ const ask = async ({ text, endpoint, endpointOption, parentMessageId = null, con
});
await saveConvo(req.user.id, {
conversationId: conversationId,
title
title,
});
}
} catch (error) {
@ -256,7 +256,7 @@ const ask = async ({ text, endpoint, endpointOption, parentMessageId = null, con
unfinished: false,
cancelled: false,
error: true,
text: error.message
text: error.message,
};
await saveMessage(errorMessage);
handleError(res, errorMessage);

View file

@ -134,7 +134,7 @@ function formatAction(action) {
input: getString(action.toolInput),
thought: action.log.includes('Thought: ')
? action.log.split('\n')[0].replace('Thought: ', '')
: action.log.split('\n')[0]
: action.log.split('\n')[0],
};
formattedAction.thought = getString(formattedAction.thought);
@ -161,5 +161,5 @@ module.exports = {
createOnProgress,
handleText,
formatSteps,
formatAction
formatAction,
};

View file

@ -31,8 +31,8 @@ router.post('/', requireJwtAuth, async (req, res) => {
temperature: req.body?.temperature ?? 1,
top_p: req.body?.top_p ?? 1,
presence_penalty: req.body?.presence_penalty ?? 0,
frequency_penalty: req.body?.frequency_penalty ?? 0
}
frequency_penalty: req.body?.frequency_penalty ?? 0,
},
};
console.log('ask log');
@ -46,7 +46,7 @@ router.post('/', requireJwtAuth, async (req, res) => {
parentMessageId,
endpoint,
req,
res
res,
});
});
@ -56,7 +56,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, endpoint, con
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache, no-transform',
'Access-Control-Allow-Origin': '*',
'X-Accel-Buffering': 'no'
'X-Accel-Buffering': 'no',
});
let userMessage;
let userMessageId;
@ -90,10 +90,10 @@ const ask = async ({ text, endpointOption, parentMessageId = null, endpoint, con
model: endpointOption.modelOptions.model,
unfinished: true,
cancelled: false,
error: false
error: false,
});
}
}
},
});
const abortController = new AbortController();
@ -119,7 +119,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, endpoint, con
final: true,
conversation: await getConvo(req.user.id, conversationId),
requestMessage: userMessage,
responseMessage: responseMessage
responseMessage: responseMessage,
};
};
@ -135,7 +135,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, endpoint, con
reverseProxyUrl: process.env.OPENAI_REVERSE_PROXY || null,
proxy: process.env.PROXY || null,
endpoint,
...endpointOption
...endpointOption,
};
let openAIApiKey = req.body?.token ?? process.env.OPENAI_API_KEY;
@ -157,9 +157,9 @@ const ask = async ({ text, endpointOption, parentMessageId = null, endpoint, con
onProgress: progressCallback.call(null, {
res,
text,
parentMessageId: overrideParentMessageId || userMessageId
parentMessageId: overrideParentMessageId || userMessageId,
}),
abortController
abortController,
});
if (overrideParentMessageId) {
@ -174,7 +174,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, endpoint, con
final: true,
conversation: await getConvo(req.user.id, conversationId),
requestMessage: userMessage,
responseMessage: response
responseMessage: response,
});
res.end();
@ -183,11 +183,11 @@ const ask = async ({ text, endpointOption, parentMessageId = null, endpoint, con
text,
response,
openAIApiKey,
azure: endpoint === 'azureOpenAI'
azure: endpoint === 'azureOpenAI',
});
await saveConvo(req.user.id, {
conversationId,
title
title,
});
}
} catch (error) {
@ -204,7 +204,7 @@ const ask = async ({ text, endpointOption, parentMessageId = null, endpoint, con
unfinished: false,
cancelled: false,
error: true,
text: error.message
text: error.message,
};
await saveMessage(errorMessage);
handleError(res, errorMessage);