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 ))}
-