chore: changes

This commit is contained in:
Lluis Agusti
2025-12-16 19:15:58 +01:00
parent ba003a5e18
commit 9e1354bfee
2 changed files with 35 additions and 20 deletions

View File

@@ -33,6 +33,8 @@ export function useChatContainer({
const allMessages = useMemo(() => {
const processedInitialMessages: ChatMessageData[] = [];
// Map to track tool calls by their ID so we can look up tool names for tool responses
const toolCallMap = new Map<string, string>();
for (const msg of initialMessages) {
if (!isValidMessage(msg)) {
@@ -63,21 +65,7 @@ export function useChatContainer({
continue;
}
// Handle tool messages
if (role === "tool") {
const toolResponse = parseToolResponse(
content,
(msg.tool_call_id as string) || "",
"unknown",
timestamp,
);
if (toolResponse) {
processedInitialMessages.push(toolResponse);
}
continue;
}
// Handle assistant messages
// Handle assistant messages first (before tool messages) to build tool call map
if (role === "assistant") {
// Strip <thinking> tags from content
content = content
@@ -87,12 +75,17 @@ export function useChatContainer({
// If assistant has tool calls, create tool_call messages for each
if (toolCalls && isToolCallArray(toolCalls) && toolCalls.length > 0) {
for (const toolCall of toolCalls) {
const toolName = toolCall.function.name;
const toolId = toolCall.id;
// Store tool name for later lookup
toolCallMap.set(toolId, toolName);
try {
const args = JSON.parse(toolCall.function.arguments || "{}");
processedInitialMessages.push({
type: "tool_call",
toolId: toolCall.id,
toolName: toolCall.function.name,
toolId,
toolName,
arguments: args,
timestamp,
});
@@ -100,8 +93,8 @@ export function useChatContainer({
console.warn("Failed to parse tool call arguments:", err);
processedInitialMessages.push({
type: "tool_call",
toolId: toolCall.id,
toolName: toolCall.function.name,
toolId,
toolName,
arguments: {},
timestamp,
});
@@ -128,6 +121,22 @@ export function useChatContainer({
continue;
}
// Handle tool messages - look up tool name from tool call map
if (role === "tool") {
const toolCallId = (msg.tool_call_id as string) || "";
const toolName = toolCallMap.get(toolCallId) || "unknown";
const toolResponse = parseToolResponse(
content,
toolCallId,
toolName,
timestamp,
);
if (toolResponse) {
processedInitialMessages.push(toolResponse);
}
continue;
}
// Handle other message types (system, etc.)
if (content.trim()) {
processedInitialMessages.push({

View File

@@ -155,11 +155,17 @@ export function useChatSession({
async function loadSession(id: string) {
try {
setError(null);
// Invalidate the query cache for this session to force a fresh fetch
await queryClient.invalidateQueries({
queryKey: getGetV2GetSessionQueryKey(id),
});
// Set sessionId after invalidation to ensure the hook refetches
setSessionId(id);
storage.set(Key.CHAT_SESSION_ID, id);
// Force fetch with fresh data (bypass cache)
const queryOptions = getGetV2GetSessionQueryOptions(id, {
query: {
staleTime: Infinity,
staleTime: 0, // Force fresh fetch
retry: 1,
},
});