Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bugfix/amazon q /doc: remove retry followup button and propose user instead New Task and End session to make it in sync with vscode plugin #5288

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"type" : "bugfix",
"description" : "Amazon Q /doc: Prompt users to start a new documentation task if current task failed"
}
Original file line number Diff line number Diff line change
Expand Up @@ -407,10 +407,9 @@

else -> {
logger.error { "$FEATURE_NAME: OpenDiff event is received for a conversation that has ${session.sessionState.phase} phase" }
messenger.sendError(
messenger.sendErrorToUser(
tabId = message.tabId,
errMessage = message("amazonqFeatureDev.exception.open_diff_failed"),
retries = 0,
conversationId = session.conversationIdUnsafe
)
}
Expand Down Expand Up @@ -509,10 +508,9 @@
)
} catch (err: Exception) {
val message = createUserFacingErrorMessage("Failed to insert code changes: ${err.message}")
messenger.sendError(
messenger.sendErrorToUser(
tabId = tabId,
errMessage = message ?: message("amazonqFeatureDev.exception.insert_code_failed"),
retries = retriesRemaining(session),
conversationId = session?.conversationIdUnsafe
)
}
Expand Down Expand Up @@ -590,10 +588,9 @@

when (err) {
is RepoSizeError -> {
messenger.sendError(
messenger.sendErrorToUser(
tabId = tabId,
errMessage = err.message,
retries = retriesRemaining(session),
conversationId = session?.conversationIdUnsafe
)
messenger.sendSystemPrompt(
Expand All @@ -609,10 +606,9 @@
}

is ZipFileError -> {
messenger.sendError(
messenger.sendErrorToUser(
tabId = tabId,
errMessage = err.message,
retries = 0,
conversationId = session?.conversationIdUnsafe
)
}
Expand Down Expand Up @@ -704,10 +700,9 @@
else -> message("amazonqFeatureDev.error_text")
}

messenger.sendError(
messenger.sendErrorToUser(
tabId = tabId,
errMessage = defaultMessage,
retries = retriesRemaining(session),
conversationId = session?.conversationIdUnsafe
)
}
Expand Down Expand Up @@ -805,9 +800,12 @@
) {
return
}

if (filePaths.isEmpty() && deletedFiles.isEmpty()) {
handleEmptyFiles(followUpMessage, session)
messenger.sendErrorToUser(
followUpMessage.tabId,
message("amazonqDoc.error.generating"),
conversationId = session.conversationId
)
return
}

Expand Down Expand Up @@ -862,37 +860,6 @@
}
}

private suspend fun handleEmptyFiles(
message: IncomingDocMessage.FollowupClicked,
session: DocSession,
) {
messenger.sendAnswer(
message = message("amazonqDoc.error.generating"),
messageType = DocMessageType.Answer,
tabId = message.tabId,
canBeVoted = true
)

messenger.sendAnswer(
messageType = DocMessageType.SystemPrompt,
tabId = message.tabId,
followUp = if (retriesRemaining(session) > 0) {
listOf(
FollowUp(
pillText = message("amazonqFeatureDev.follow_up.retry"),
type = FollowUpTypes.RETRY,
status = FollowUpStatusType.Warning
)
)
} else {
emptyList()
}
)

// Lock the chat input until they explicitly click retry
messenger.sendChatInputEnabledMessage(tabId = message.tabId, enabled = false)
}

private suspend fun retryRequests(tabId: String) {
var session: DocSession? = null
docGenerationTask = DocGenerationTask()
Expand Down Expand Up @@ -1028,7 +995,7 @@

private fun getSessionInfo(tabId: String) = chatSessionStorage.getSession(tabId, context.project)

fun retriesRemaining(session: DocSession?): Int = session?.retries ?: DEFAULT_RETRY_LIMIT

Check notice on line 998 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonqDoc/controller/DocController.kt

View workflow job for this annotation

GitHub Actions / qodana

Class member can have 'private' visibility

Function 'retriesRemaining' could be private

companion object {
private val logger = getLogger<DocController>()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,11 @@ package software.aws.toolkits.jetbrains.services.amazonqDoc.controller
import com.intellij.notification.NotificationAction
import software.aws.toolkits.jetbrains.services.amazonqDoc.inProgress
import software.aws.toolkits.jetbrains.services.amazonqDoc.messages.DocMessageType
import software.aws.toolkits.jetbrains.services.amazonqDoc.messages.FollowUp
import software.aws.toolkits.jetbrains.services.amazonqDoc.messages.FollowUpStatusType
import software.aws.toolkits.jetbrains.services.amazonqDoc.messages.FollowUpTypes
import software.aws.toolkits.jetbrains.services.amazonqDoc.messages.sendAnswer
import software.aws.toolkits.jetbrains.services.amazonqDoc.messages.sendAsyncEventProgress
import software.aws.toolkits.jetbrains.services.amazonqDoc.messages.sendChatInputEnabledMessage
import software.aws.toolkits.jetbrains.services.amazonqDoc.messages.sendCodeResult
import software.aws.toolkits.jetbrains.services.amazonqDoc.messages.sendErrorToUser
import software.aws.toolkits.jetbrains.services.amazonqDoc.messages.sendSystemPrompt
import software.aws.toolkits.jetbrains.services.amazonqDoc.messages.sendUpdatePlaceholder
import software.aws.toolkits.jetbrains.services.amazonqDoc.messages.sendUpdatePromptProgress
Expand Down Expand Up @@ -73,26 +71,12 @@ suspend fun DocController.onCodeGeneration(session: DocSession, message: String,

// Atm this is the only possible path as codegen is mocked to return empty.
if (filePaths.size or deletedFiles.size == 0) {
messenger.sendAnswer(
tabId = tabId,
messageType = DocMessageType.Answer,
message = message("amazonqFeatureDev.code_generation.no_file_changes")
)
messenger.sendSystemPrompt(
tabId = tabId,
followUp = if (retriesRemaining(session) > 0) {
listOf(
FollowUp(
pillText = message("amazonqFeatureDev.follow_up.retry"),
type = FollowUpTypes.RETRY,
status = FollowUpStatusType.Warning
)
)
} else {
emptyList()
}
messenger.sendErrorToUser(
tabId,
message("amazonqDoc.error.generating"),
conversationId = session.conversationId
)
messenger.sendChatInputEnabledMessage(tabId = tabId, enabled = false) // Lock chat input until retry is clicked.

return
}

Expand Down
Loading