deerflow2/frontend/src/core/threads/utils.ts

49 lines
1.1 KiB
TypeScript

import type { Message } from "@langchain/langgraph-sdk";
import type { AgentThread } from "./types";
export interface ThreadQueryIntentInput {
pathThreadId?: string | null;
queryThreadId?: string | null;
isNewRoute?: boolean;
}
export interface ThreadQueryIntent {
threadId: string | undefined;
isNewThread: boolean;
showWelcomeStyle: boolean;
}
export function pathOfThread(threadId: string) {
return `/workspace/chats/${threadId}`;
}
function normalizeThreadId(value?: string | null): string | undefined {
if (!value) {
return undefined;
}
const trimmed = value.trim();
if (!trimmed || trimmed === "new") {
return undefined;
}
return trimmed;
}
export function textOfMessage(message: Message) {
if (typeof message.content === "string") {
return message.content;
} else if (Array.isArray(message.content)) {
for (const part of message.content) {
if (part.type === "text") {
return part.text;
}
}
}
return null;
}
export function titleOfThread(thread: AgentThread) {
return thread.values?.title ?? "Untitled";
}