diff --git a/src/app/hooks/useChat.ts b/src/app/hooks/useChat.ts index 7d240780..c0f98ca9 100644 --- a/src/app/hooks/useChat.ts +++ b/src/app/hooks/useChat.ts @@ -3,16 +3,28 @@ import { useStream } from "@langchain/langgraph-sdk/react"; import { type Message } from "@langchain/langgraph-sdk"; import { getDeployment } from "@/lib/environment/deployments"; import { v4 as uuidv4 } from "uuid"; -import type { TodoItem } from "../types/types"; +import type { TodoItem, FileData } from "../types/types"; import { createClient } from "@/lib/client"; import { useAuthContext } from "@/providers/Auth"; type StateType = { messages: Message[]; todos: TodoItem[]; - files: Record; + files: Record; }; +function convertFileDataToString(fileData: FileData): string { + return fileData.content.join("\n"); +} + +function convertFilesMapToStrings(files: Record): Record { + const result: Record = {}; + for (const [path, fileData] of Object.entries(files)) { + result[path] = convertFileDataToString(fileData); + } + return result; +} + export function useChat( threadId: string | null, setThreadId: ( @@ -39,7 +51,7 @@ export function useChat( onTodosUpdate(nodeData.todos); } if (nodeData?.files) { - onFilesUpdate(nodeData.files); + onFilesUpdate(convertFilesMapToStrings(nodeData.files)); } }); }, diff --git a/src/app/page.tsx b/src/app/page.tsx index 385cf87c..20448e26 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -8,9 +8,21 @@ import { SubAgentPanel } from "./components/SubAgentPanel/SubAgentPanel"; import { FileViewDialog } from "./components/FileViewDialog/FileViewDialog"; import { createClient } from "@/lib/client"; import { useAuthContext } from "@/providers/Auth"; -import type { SubAgent, FileItem, TodoItem } from "./types/types"; +import type { SubAgent, FileItem, TodoItem, FileData } from "./types/types"; import styles from "./page.module.scss"; +function convertFileDataToString(fileData: FileData): string { + return fileData.content.join("\n"); +} + +function convertFilesMapToStrings(files: Record): Record { + const result: Record = {}; + for (const [path, fileData] of Object.entries(files)) { + result[path] = convertFileDataToString(fileData); + } + return result; +} + export default function HomePage() { const { session } = useAuthContext(); const [threadId, setThreadId] = useQueryState("threadId"); @@ -44,10 +56,11 @@ export default function HomePage() { if (state.values) { const currentState = state.values as { todos?: TodoItem[]; - files?: Record; + files?: Record; }; setTodos(currentState.todos || []); - setFiles(currentState.files || {}); + const filesData = currentState.files || {}; + setFiles(convertFilesMapToStrings(filesData)); } } catch (error) { console.error("Failed to fetch thread state:", error); diff --git a/src/app/types/types.ts b/src/app/types/types.ts index c123d9b8..a5e2fff3 100644 --- a/src/app/types/types.ts +++ b/src/app/types/types.ts @@ -15,6 +15,12 @@ export interface SubAgent { status: "pending" | "active" | "completed" | "error"; } +export interface FileData { + content: string[]; + created_at: string; + modified_at: string; +} + export interface FileItem { path: string; content: string;