hmc-rag / frontend /src /lib /fork.ts
webmuppet
Refactor: replace Streamlit with React+Vite SPA + FastAPI server
b5c0df4
Raw
History Blame Contribute Delete
1.09 kB
/**
* fork.ts — Pure function to fork a SavedResponse into a new ChatState.
*
* Extracted from App.tsx handleSelectSavedResponse for testability.
*
* Requirements: 7.5
*/
import type { ChatState, SavedResponse } from "../types";
/**
* Forks a SavedResponse into a new ChatState.
*
* The new ChatState:
* - Has a new conversationId (distinct from source_conversation_id)
* - messages equals messages_pair from the SavedResponse
* - history equals history_pair from the SavedResponse
* - results contains { "1": sr.result }
* - Streaming state is reset (null/empty/false)
*
* @param sr - The SavedResponse to fork
* @param newConversationId - A new UUID for the forked session
* @returns A fresh ChatState seeded with the saved response data
*/
export function forkSavedResponse(
sr: SavedResponse,
newConversationId: string
): ChatState {
return {
conversationId: newConversationId,
messages: sr.messages_pair,
history: sr.history_pair,
results: { "1": sr.result },
streamingIndex: null,
streamingContent: "",
isStreaming: false,
};
}