Add retry button to Duo Chat responses
What does this MR do and why?
- Adds
agentic_manual_retry_for_duo_chat_responses(gitlab_com_derisk, default off). - Wires
@retry-messagefrom duo-ui throughDuoAgenticChatViewtoDuoAgenticChatStateManager, which resubmits the preceding user prompt. - Pushes the flag via
gon_helperso it's available wherever Duo Agentic Chat mounts.
This MR is the frontend wire-up only — it resubmits the preceding user prompt as a fresh chat message. The duo-workflow-service has no idea the new submission is a retry, so behavior (history, credit consumption, checkpoint handling) is identical to a normal user submission.
Follow-up work (server-aware retry)
Server-aware retry is tracked in a separate MR to keep this one small:
- !238116 — plumbs an
isRetryboolean from the Vue retry handler throughonSendChatPrompt/startWorkflowinto the WebSocketstartRequestpayload sent to the duo-workflow-service. - ai-assist!5570 —
the duo-workflow-service side that consumes
startRequest.isRetryto swap the previous agent attempt rather than appending a new turn, per the retry semantics in epic &21289.
The feature flag agentic_manual_retry_for_duo_chat_responses remains
off until all three (this MR, !238116, ai-assist!5570) are merged.
References
- Parent epic: &21289
- Issue: #587828
- Follow-up frontend MR: !238116
- Backend (duo-workflow-service): ai-assist!5570
Screenshots or screen recordings
| Before | After |
|---|---|
![]() |
![]() |
![]() |
How to set up and validate locally
- In rails console enable the feature flag
Feature.enable(:agentic_manual_retry_for_duo_chat_responses) - Write message to the chat, wait for response see the retry button
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
Related to #587828
Edited by Tomas Bulva


