|
|
const pluralize = require("pluralize");const { WorkspaceAgentInvocation,} = require("../../models/workspaceAgentInvocation");const { writeResponseChunk } = require("../helpers/chat/responses");
async function grepAgents({ uuid, response, message, workspace, user = null, thread = null,}) { const agentHandles = WorkspaceAgentInvocation.parseAgents(message); if (agentHandles.length > 0) { const { invocation: newInvocation } = await WorkspaceAgentInvocation.new({ prompt: message, workspace: workspace, user: user, thread: thread, });
if (!newInvocation) { writeResponseChunk(response, { id: uuid, type: "statusResponse", textResponse: `${pluralize( "Agent", agentHandles.length )} ${agentHandles.join( ", " )} could not be called. Chat will be handled as default chat.`,
sources: [], close: true, animate: false, error: null, }); return; }
writeResponseChunk(response, { id: uuid, type: "agentInitWebsocketConnection", textResponse: null, sources: [], close: false, error: null, websocketUUID: newInvocation.uuid, });
// Close HTTP stream-able chunk response method because we will swap to agents now.
writeResponseChunk(response, { id: uuid, type: "statusResponse", textResponse: `${pluralize( "Agent", agentHandles.length )} ${agentHandles.join( ", " )} invoked.\nSwapping over to agent chat. Type /exit to exit agent execution loop early.`,
sources: [], close: true, error: null, animate: true, }); return true; }
return false;}
module.exports = { grepAgents };
|