diff --git a/api/server/controllers/agents/client.js b/api/server/controllers/agents/client.js
index d8c528fd91..7cb265464e 100644
--- a/api/server/controllers/agents/client.js
+++ b/api/server/controllers/agents/client.js
@@ -1920,7 +1920,7 @@ class AgentClient extends BaseClient {
// type mismatch, is silently dropped against) the pre-pause content.
customHandlers: createContentIndexOffsetHandlers(
this.options.eventHandlers,
- Array.isArray(seedContent) ? seedContent.length : 0,
+ Array.isArray(seedContent) ? seedContent : [],
),
requestBody: config.configurable.requestBody,
user: createSafeUser(this.options.req?.user),
diff --git a/api/server/routes/agents/index.js b/api/server/routes/agents/index.js
index f479ab4b3d..a4221a3c37 100644
--- a/api/server/routes/agents/index.js
+++ b/api/server/routes/agents/index.js
@@ -8,6 +8,7 @@ const {
toClientPendingAction,
isHITLEnabled,
deleteAgentCheckpoint,
+ attachAskUserQuestionArgs,
} = require('@librechat/api');
const { createSseStreamTelemetry } = require('@librechat/api/telemetry');
const { logger } = require('@librechat/data-schemas');
@@ -318,7 +319,15 @@ router.post('/chat/abort', configMiddleware, async (req, res) => {
abortResult.jobData?.responseMessageId &&
hasPersistableAbortContent(abortResult.content)
) {
- const { jobData, content, text } = abortResult;
+ const { jobData, text } = abortResult;
+ let { content } = abortResult;
+ // Redis reconstructs abort content from the graph/chunk log, which never saw
+ // the pause-time args stamp applied to the in-process contentParts — re-stamp
+ // here so a question abandoned via Stop persists with its question intact.
+ const abortedPayload = job.metadata?.pendingAction?.payload;
+ if (abortedPayload?.type === 'ask_user_question' && Array.isArray(content)) {
+ content = attachAskUserQuestionArgs(content, abortedPayload.question);
+ }
const responseMessage = {
messageId: jobData.responseMessageId,
parentMessageId: jobData.userMessage.messageId,
diff --git a/client/src/components/Chat/Input/AskUserQuestionPopover.tsx b/client/src/components/Chat/Input/AskUserQuestionPopover.tsx
index 880be0d70b..87fc0bdc3a 100644
--- a/client/src/components/Chat/Input/AskUserQuestionPopover.tsx
+++ b/client/src/components/Chat/Input/AskUserQuestionPopover.tsx
@@ -14,7 +14,7 @@ import { cn } from '~/utils';
*/
function AskUserQuestionPopoverContent({ conversationId }: { conversationId: string }) {
const localize = useLocalize();
- const { liveAsk, active, options, selected, setSelected, canSubmit, submit, dismiss } =
+ const { liveAsk, active, options, selected, setSelected, canSubmit, submit, skip, dismiss } =
useAskAnswerMode(conversationId);
if (!active || !liveAsk) {
@@ -61,7 +61,7 @@ function AskUserQuestionPopoverContent({ conversationId }: { conversationId: str
))}
-