34 lines
952 B
TypeScript
34 lines
952 B
TypeScript
import { readBody } from "h3";
|
|
import { persistChatMessage, runCrmAgentFor } from "../agent/crmAgent";
|
|
import { getAuthContext } from "../utils/auth";
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
const body = await readBody<{ text?: string }>(event);
|
|
const text = (body?.text ?? "").trim();
|
|
if (!text) {
|
|
throw createError({ statusCode: 400, statusMessage: "text is required" });
|
|
}
|
|
|
|
const auth = await getAuthContext(event);
|
|
await persistChatMessage({
|
|
teamId: auth.teamId,
|
|
conversationId: auth.conversationId,
|
|
authorUserId: auth.userId,
|
|
role: "USER",
|
|
text,
|
|
});
|
|
|
|
const reply = await runCrmAgentFor({ teamId: auth.teamId, userId: auth.userId, userText: text });
|
|
await persistChatMessage({
|
|
teamId: auth.teamId,
|
|
conversationId: auth.conversationId,
|
|
authorUserId: null,
|
|
role: "ASSISTANT",
|
|
text: reply.text,
|
|
plan: reply.plan,
|
|
tools: reply.tools,
|
|
});
|
|
|
|
return { ok: true };
|
|
});
|