Implement AbortAiAction Mutation for GitLab Duo Chat
Problem to Solve
As part of our initiative to enhance the GitLab Duo Chat with abort functionality and following along to the implementation Plan in the parent epic. We need to implement a new GraphQL mutation AbortAiAction.
Proposal
Introduce a new mutation that will allow users to cancel ongoing AI operations initiated via the chat interface.
Details:
Mutation Name: AbortAiAction
Required Parameters: userId (UserID): The user identifier.
clientSubscriptionId (String): Unique identifier for the client's subscription session, used to track and abort the specific ongoing operation.
Structure:
mutation AbortAiAction($userId: UserID, $clientSubscriptionId: String) {
abortAiAction(
userId: $userId,
clientSubscriptionId: $clientSubscriptionId
) {
success
message
}
}
Task Breakdown:
- Implement AbortAiAction Mutation: Create the AbortAiAction mutation to accept userId and clientSubscriptionId, tasked with initiating the session termination.
- Server-Side Abort Handling: When the abort mutation is received, locate and terminate the ongoing process associated with the provided clientSubscriptionId.
- Subscription Update on Abort: Modify the subscription logic to handle an "abort" status. When an abort request is processed, push an update with a specific keyword (e.g., "status": "aborted") to the client through the existing subscription channel.
- Ensure this status update is received as part of the regular message stream, allowing the client to handle it seamlessly within the existing subscription handling logic.
Edited by Dylan Bernardi