diff --git a/src/hooks/useChatSession.ts b/src/hooks/useChatSession.ts index 4115cbc..72c54cf 100644 --- a/src/hooks/useChatSession.ts +++ b/src/hooks/useChatSession.ts @@ -106,12 +106,16 @@ export function useChatSession( usage: session?.usage, cost: session?.sessionCost ?? 0, - // Resume state + // Resume state - only show resume when there's actually something to continue + // tool_calls: model called tools, waiting for results + // length: response was truncated + // null: user aborted mid-stream (only if there's partial content) canResume: Boolean( session && !session.isLoading && - session.finishReason !== "stop" && - session.finishReason !== "error", + (session.finishReason === "tool_calls" || + session.finishReason === "length" || + (session.finishReason === null && session.streamingContent)), ), finishReason: session?.finishReason, }), diff --git a/src/services/llm/session-manager.ts b/src/services/llm/session-manager.ts index 6c59ab8..6e4aa68 100644 --- a/src/services/llm/session-manager.ts +++ b/src/services/llm/session-manager.ts @@ -116,6 +116,7 @@ class ChatSessionManager { sessionCost: 0, subscriberCount: 1, lastActivity: Date.now(), + finishReason: "stop", // Nothing to resume initially }; this.updateSession(conversationId, session);