Improve pilot chat live traces and remove mock placeholders

This commit is contained in:
Ruslan Bakiev
2026-02-18 21:22:35 +07:00
parent 46e5908244
commit fdc85d5c42
6 changed files with 120 additions and 81 deletions

View File

@@ -5,6 +5,7 @@ import { clearAuthSession, setSession } from "../utils/auth";
import { prisma } from "../utils/prisma";
import { normalizePhone, verifyPassword } from "../utils/password";
import { persistChatMessage, runCrmAgentFor } from "../agent/crmAgent";
import type { AgentTraceEvent } from "../agent/crmAgent";
type GraphQLContext = {
auth: AuthContext | null;
@@ -222,7 +223,7 @@ async function getChatMessages(auth: AuthContext | null) {
role: m.role === "USER" ? "user" : m.role === "ASSISTANT" ? "assistant" : "system",
text: m.text,
plan: Array.isArray(debug.steps) ? (debug.steps as string[]) : [],
thinking: Array.isArray(debug.thinking) ? (debug.thinking as string[]) : Array.isArray(debug.steps) ? (debug.steps as string[]) : [],
thinking: Array.isArray(debug.thinking) ? (debug.thinking as string[]) : [],
tools: Array.isArray(debug.tools) ? (debug.tools as string[]) : [],
toolRuns: Array.isArray(debug.toolRuns)
? (debug.toolRuns as any[])
@@ -510,7 +511,24 @@ async function sendPilotMessage(auth: AuthContext | null, textInput: string) {
text,
});
const reply = await runCrmAgentFor({ teamId: ctx.teamId, userId: ctx.userId, userText: text });
const reply = await runCrmAgentFor({
teamId: ctx.teamId,
userId: ctx.userId,
userText: text,
onTrace: async (event: AgentTraceEvent) => {
await persistChatMessage({
teamId: ctx.teamId,
conversationId: ctx.conversationId,
authorUserId: null,
role: "SYSTEM",
text: event.text,
plan: [],
thinking: [],
tools: event.toolRun ? [event.toolRun.name] : [],
toolRuns: event.toolRun ? [event.toolRun] : [],
});
},
});
await persistChatMessage({
teamId: ctx.teamId,
conversationId: ctx.conversationId,
@@ -518,7 +536,7 @@ async function sendPilotMessage(auth: AuthContext | null, textInput: string) {
role: "ASSISTANT",
text: reply.text,
plan: reply.plan,
thinking: reply.thinking ?? reply.plan,
thinking: reply.thinking ?? [],
tools: reply.tools,
toolRuns: reply.toolRuns ?? [],
});