Mishig
commited on
[Assistnats] improve reporting (#797)
Browse files* [Assistnats] improve reporting
* typo
* make it more general
* typo
* update prodEnv script
* Update scripts/updateProdEnv.ts
.env
CHANGED
|
@@ -133,4 +133,6 @@ EXPOSE_API=true
|
|
| 133 |
|
| 134 |
ENABLE_ASSISTANTS=false #set to true to enable assistants feature
|
| 135 |
|
| 136 |
-
ALTERNATIVE_REDIRECT_URLS=`[]` #valide alternative redirect URL for OAuth
|
|
|
|
|
|
|
|
|
| 133 |
|
| 134 |
ENABLE_ASSISTANTS=false #set to true to enable assistants feature
|
| 135 |
|
| 136 |
+
ALTERNATIVE_REDIRECT_URLS=`[]` #valide alternative redirect URL for OAuth
|
| 137 |
+
|
| 138 |
+
WEBHOOK_URL_REPORT_ASSISTANT=#provide webhook url to get notified when an assistant gets reported
|
scripts/updateProdEnv.ts
CHANGED
|
@@ -6,6 +6,7 @@ const SERPER_API_KEY = process.env.SERPER_API_KEY;
|
|
| 6 |
const OPENID_CONFIG = process.env.OPENID_CONFIG;
|
| 7 |
const MONGODB_URL = process.env.MONGODB_URL;
|
| 8 |
const HF_TOKEN = process.env.HF_TOKEN ?? process.env.HF_ACCESS_TOKEN; // token used for API requests in prod
|
|
|
|
| 9 |
|
| 10 |
// Read the content of the file .env.template
|
| 11 |
const PUBLIC_CONFIG = fs.readFileSync(".env.template", "utf8");
|
|
@@ -16,6 +17,7 @@ MONGODB_URL=${MONGODB_URL}
|
|
| 16 |
OPENID_CONFIG=${OPENID_CONFIG}
|
| 17 |
SERPER_API_KEY=${SERPER_API_KEY}
|
| 18 |
HF_TOKEN=${HF_TOKEN}
|
|
|
|
| 19 |
`;
|
| 20 |
|
| 21 |
// Make an HTTP POST request to add the space secrets
|
|
|
|
| 6 |
const OPENID_CONFIG = process.env.OPENID_CONFIG;
|
| 7 |
const MONGODB_URL = process.env.MONGODB_URL;
|
| 8 |
const HF_TOKEN = process.env.HF_TOKEN ?? process.env.HF_ACCESS_TOKEN; // token used for API requests in prod
|
| 9 |
+
const WEBHOOK_URL_REPORT_ASSISTANT = process.env.WEBHOOK_URL_REPORT_ASSISTANT; // slack webhook url used to get "report assistant" events
|
| 10 |
|
| 11 |
// Read the content of the file .env.template
|
| 12 |
const PUBLIC_CONFIG = fs.readFileSync(".env.template", "utf8");
|
|
|
|
| 17 |
OPENID_CONFIG=${OPENID_CONFIG}
|
| 18 |
SERPER_API_KEY=${SERPER_API_KEY}
|
| 19 |
HF_TOKEN=${HF_TOKEN}
|
| 20 |
+
WEBHOOK_URL_REPORT_ASSISTANT=${WEBHOOK_URL_REPORT_ASSISTANT}
|
| 21 |
`;
|
| 22 |
|
| 23 |
// Make an HTTP POST request to add the space secrets
|
src/routes/settings/assistants/[assistantId]/+page.server.ts
CHANGED
|
@@ -3,6 +3,8 @@ import { type Actions, fail, redirect } from "@sveltejs/kit";
|
|
| 3 |
import { ObjectId } from "mongodb";
|
| 4 |
import { authCondition } from "$lib/server/auth";
|
| 5 |
import { base } from "$app/paths";
|
|
|
|
|
|
|
| 6 |
|
| 7 |
async function assistantOnlyIfAuthor(locals: App.Locals, assistantId?: string) {
|
| 8 |
const assistant = await collections.assistants.findOne({ _id: new ObjectId(assistantId) });
|
|
@@ -49,7 +51,7 @@ export const actions: Actions = {
|
|
| 49 |
|
| 50 |
throw redirect(302, `${base}/settings`);
|
| 51 |
},
|
| 52 |
-
report: async ({ params, locals }) => {
|
| 53 |
// is there already a report from this user for this model ?
|
| 54 |
const report = await collections.reports.findOne({
|
| 55 |
assistantId: new ObjectId(params.assistantId),
|
|
@@ -71,6 +73,31 @@ export const actions: Actions = {
|
|
| 71 |
if (!acknowledged) {
|
| 72 |
return fail(500, { error: true, message: "Failed to report assistant" });
|
| 73 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 74 |
return { from: "report", ok: true, message: "Assistant reported" };
|
| 75 |
},
|
| 76 |
|
|
|
|
| 3 |
import { ObjectId } from "mongodb";
|
| 4 |
import { authCondition } from "$lib/server/auth";
|
| 5 |
import { base } from "$app/paths";
|
| 6 |
+
import { PUBLIC_ORIGIN, PUBLIC_SHARE_PREFIX } from "$env/static/public";
|
| 7 |
+
import { WEBHOOK_URL_REPORT_ASSISTANT } from "$env/static/private";
|
| 8 |
|
| 9 |
async function assistantOnlyIfAuthor(locals: App.Locals, assistantId?: string) {
|
| 10 |
const assistant = await collections.assistants.findOne({ _id: new ObjectId(assistantId) });
|
|
|
|
| 51 |
|
| 52 |
throw redirect(302, `${base}/settings`);
|
| 53 |
},
|
| 54 |
+
report: async ({ params, locals, url }) => {
|
| 55 |
// is there already a report from this user for this model ?
|
| 56 |
const report = await collections.reports.findOne({
|
| 57 |
assistantId: new ObjectId(params.assistantId),
|
|
|
|
| 73 |
if (!acknowledged) {
|
| 74 |
return fail(500, { error: true, message: "Failed to report assistant" });
|
| 75 |
}
|
| 76 |
+
|
| 77 |
+
if (WEBHOOK_URL_REPORT_ASSISTANT) {
|
| 78 |
+
const prefixUrl = PUBLIC_SHARE_PREFIX || `${PUBLIC_ORIGIN || url.origin}${base}`;
|
| 79 |
+
const assistantUrl = `${prefixUrl}/assistant/${params.assistantId}`;
|
| 80 |
+
|
| 81 |
+
const assistant = await collections.assistants.findOne(
|
| 82 |
+
{ _id: new ObjectId(params.assistantId) },
|
| 83 |
+
{ projection: { name: 1 } }
|
| 84 |
+
);
|
| 85 |
+
|
| 86 |
+
const res = await fetch(WEBHOOK_URL_REPORT_ASSISTANT, {
|
| 87 |
+
method: "POST",
|
| 88 |
+
headers: {
|
| 89 |
+
"Content-type": "application/json",
|
| 90 |
+
},
|
| 91 |
+
body: JSON.stringify({
|
| 92 |
+
text: `Assistant <${assistantUrl}|${assistant?.name}> reported by <http://hf.co/${locals.user?.username}|${locals.user?.username}>`,
|
| 93 |
+
}),
|
| 94 |
+
});
|
| 95 |
+
|
| 96 |
+
if (!res.ok) {
|
| 97 |
+
console.error(`Webhook assistant report failed. ${res.statusText} ${res.text}`);
|
| 98 |
+
}
|
| 99 |
+
}
|
| 100 |
+
|
| 101 |
return { from: "report", ok: true, message: "Assistant reported" };
|
| 102 |
},
|
| 103 |
|