don't commit distribution folder

This commit is contained in:
2025-06-29 15:05:04 -04:00
parent 3200b2bdd3
commit 91e2f56937
2 changed files with 1 additions and 133 deletions

1
.gitignore vendored
View File

@ -3,5 +3,6 @@ node_modules
.env
*.log
*.db
/dist/
/generated/prisma

133
dist/main.js vendored
View File

@ -1,133 +0,0 @@
import striptags from "striptags";
import { PrismaClient } from "../generated/prisma/client.js";
const prisma = new PrismaClient();
const getNotifications = async () => {
try {
const request = await fetch(`${process.env.PLEROMA_INSTANCE_URL}/api/v1/notifications?types[]=mention`, {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.INSTANCE_BEARER_TOKEN}`,
},
});
const notifications = await request.json();
return notifications;
}
catch (error) {
throw new Error(error.message);
}
};
const notifications = await getNotifications();
const storeUserData = async (notification) => {
try {
const user = await prisma.user.upsert({
where: { userFqn: notification.status.account.fqn },
update: {
lastRespondedTo: new Date(Date.now()),
},
create: {
userFqn: notification.status.account.fqn,
lastRespondedTo: new Date(Date.now()),
},
});
}
catch (error) {
throw new Error(error.message);
}
};
const alreadyRespondedTo = async (notification) => {
try {
const duplicate = await prisma.response.findFirst({
where: { pleromaNotificationId: notification.status.id },
});
if (duplicate) {
return true;
}
return false;
}
catch (error) {
throw new Error(error.message);
}
};
const storePromptData = async (notification, ollamaResponseBody) => {
try {
await prisma.response.create({
data: {
response: ollamaResponseBody.response,
request: striptags(notification.status.content),
to: notification.account.fqn,
pleromaNotificationId: notification.status.id,
createdAt: new Date(Date.now()),
},
});
}
catch (error) {
throw new Error(error.message);
}
};
const generateOllamaRequest = async (notification) => {
try {
if (striptags(notification.status.content).includes("!prompt") &&
!notification.status.account.bot) {
if (process.env.ONLY_LOCAL_REPLIES === "true" &&
!notification.status.account.fqn.includes(`@${process.env.PLEROMA_INSTANCE_DOMAIN}`)) {
return;
}
if (await alreadyRespondedTo(notification)) {
// console.log(
// `Already responded to notification ID ${notification.status.id}. Canceling.`
// );
return;
}
await storeUserData(notification);
const ollamaRequestBody = {
model: process.env.OLLAMA_MODEL,
system: process.env.OLLAMA_SYSTEM_PROMPT,
prompt: striptags(notification.status.content),
stream: false,
};
const response = await fetch(`${process.env.OLLAMA_URL}/api/generate`, {
method: "POST",
body: JSON.stringify(ollamaRequestBody),
});
const ollamaResponse = await response.json();
await storePromptData(notification, ollamaResponse);
console.log(`${notification.status.account.fqn} asked:\n${notification.status.content}\nResponse:\n${ollamaResponse.response}`);
postReplyToStatus(notification, ollamaResponse);
}
}
catch (error) {
throw new Error(error.message);
}
};
const postReplyToStatus = async (notification, ollamaResponseBody) => {
try {
const mentions = notification.status.mentions?.map((mention) => {
return mention.acct;
});
let statusBody = {
content_type: "text/markdown",
status: ollamaResponseBody.response,
in_reply_to_id: notification.status.id,
to: mentions,
};
const response = await fetch(`${process.env.PLEROMA_INSTANCE_URL}/api/v1/statuses`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INSTANCE_BEARER_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify(statusBody),
});
if (!response.ok) {
throw new Error(`New status request failed: ${response.statusText}`);
}
}
catch (error) {
throw new Error(error.message);
}
};
if (notifications) {
await Promise.all(notifications.map((notification) => {
generateOllamaRequest(notification);
}));
}