| const prisma = require("../utils/prisma"); |
| const { v4: uuidv4 } = require("uuid"); |
|
|
| const WorkspaceAgentInvocation = { |
| |
| |
| parseAgents: function (promptString) { |
| if (!promptString.startsWith("@agent")) return []; |
| return promptString.split(/\s+/).filter((v) => v.startsWith("@")); |
| }, |
|
|
| close: async function (uuid) { |
| if (!uuid) return; |
| try { |
| await prisma.workspace_agent_invocations.update({ |
| where: { uuid: String(uuid) }, |
| data: { closed: true }, |
| }); |
| } catch {} |
| }, |
|
|
| new: async function ({ prompt, workspace, user = null, thread = null }) { |
| try { |
| const invocation = await prisma.workspace_agent_invocations.create({ |
| data: { |
| uuid: uuidv4(), |
| workspace_id: workspace.id, |
| prompt: String(prompt), |
| user_id: user?.id, |
| thread_id: thread?.id, |
| }, |
| }); |
|
|
| return { invocation, message: null }; |
| } catch (error) { |
| console.error(error.message); |
| return { invocation: null, message: error.message }; |
| } |
| }, |
|
|
| get: async function (clause = {}) { |
| try { |
| const invocation = await prisma.workspace_agent_invocations.findFirst({ |
| where: clause, |
| }); |
|
|
| return invocation || null; |
| } catch (error) { |
| console.error(error.message); |
| return null; |
| } |
| }, |
|
|
| getWithWorkspace: async function (clause = {}) { |
| try { |
| const invocation = await prisma.workspace_agent_invocations.findFirst({ |
| where: clause, |
| include: { |
| workspace: true, |
| }, |
| }); |
|
|
| return invocation || null; |
| } catch (error) { |
| console.error(error.message); |
| return null; |
| } |
| }, |
|
|
| delete: async function (clause = {}) { |
| try { |
| await prisma.workspace_agent_invocations.delete({ |
| where: clause, |
| }); |
| return true; |
| } catch (error) { |
| console.error(error.message); |
| return false; |
| } |
| }, |
|
|
| where: async function (clause = {}, limit = null, orderBy = null) { |
| try { |
| const results = await prisma.workspace_agent_invocations.findMany({ |
| where: clause, |
| ...(limit !== null ? { take: limit } : {}), |
| ...(orderBy !== null ? { orderBy } : {}), |
| }); |
| return results; |
| } catch (error) { |
| console.error(error.message); |
| return []; |
| } |
| }, |
| }; |
|
|
| module.exports = { WorkspaceAgentInvocation }; |
|
|