Skip to content

Commit acde0a2

Browse files
authored
feat: add conversation id on error messages (#4472)
1 parent 58b1555 commit acde0a2

File tree

3 files changed

+35
-13
lines changed

3 files changed

+35
-13
lines changed

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/controller/FeatureDevController.kt

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,8 @@ class FeatureDevController(
220220
tabId = message.tabId,
221221
errMessage = message("amazonqFeatureDev.exception.open_diff_failed"),
222222
retries = 0,
223-
phase = session.sessionState.phase
223+
phase = session.sessionState.phase,
224+
conversationId = session.conversationIdUnsafe
224225
)
225226
}
226227
}
@@ -268,7 +269,8 @@ class FeatureDevController(
268269
tabId = tabId,
269270
errMessage = message ?: message("amazonqFeatureDev.exception.request_failed"),
270271
retries = retriesRemaining(session),
271-
phase = session?.sessionState?.phase
272+
phase = session?.sessionState?.phase,
273+
conversationId = session?.conversationIdUnsafe
272274
)
273275
}
274276
}
@@ -284,7 +286,8 @@ class FeatureDevController(
284286
tabId = tabId,
285287
errMessage = message ?: message("amazonqFeatureDev.exception.request_failed"),
286288
retries = retriesRemaining(session),
287-
phase = session.sessionState.phase
289+
phase = session.sessionState.phase,
290+
conversationId = session.conversationIdUnsafe
288291
)
289292
}
290293
}
@@ -353,7 +356,8 @@ class FeatureDevController(
353356
tabId = tabId,
354357
errMessage = message ?: message("amazonqFeatureDev.exception.insert_code_failed"),
355358
retries = retriesRemaining(session),
356-
phase = session?.sessionState?.phase
359+
phase = session?.sessionState?.phase,
360+
conversationId = session?.conversationIdUnsafe
357361
)
358362
}
359363
}
@@ -434,7 +438,8 @@ class FeatureDevController(
434438
messenger.sendError(
435439
tabId = tabId,
436440
errMessage = err.message,
437-
retries = retriesRemaining(session)
441+
retries = retriesRemaining(session),
442+
conversationId = session?.conversationIdUnsafe
438443
)
439444
messenger.sendSystemPrompt(
440445
tabId = tabId,
@@ -450,7 +455,12 @@ class FeatureDevController(
450455
messenger.sendMonthlyLimitError(tabId = tabId)
451456
messenger.sendChatInputEnabledMessage(tabId, enabled = false)
452457
} else if (err is PlanIterationLimitError) {
453-
messenger.sendError(tabId = tabId, errMessage = err.message, retries = retriesRemaining(session))
458+
messenger.sendError(
459+
tabId = tabId,
460+
errMessage = err.message,
461+
retries = retriesRemaining(session),
462+
conversationId = session?.conversationIdUnsafe
463+
)
454464
messenger.sendSystemPrompt(
455465
tabId = tabId,
456466
followUp = listOf(
@@ -468,7 +478,12 @@ class FeatureDevController(
468478
)
469479
messenger.sendUpdatePlaceholder(tabId = tabId, newPlaceholder = message("amazonqFeatureDev.placeholder.after_code_generation"))
470480
} else if (err is CodeIterationLimitError) {
471-
messenger.sendError(tabId = tabId, errMessage = err.message, retries = retriesRemaining(session))
481+
messenger.sendError(
482+
tabId = tabId,
483+
errMessage = err.message,
484+
retries = retriesRemaining(session),
485+
conversationId = session?.conversationIdUnsafe
486+
)
472487
messenger.sendSystemPrompt(
473488
tabId = tabId,
474489
followUp = listOf(
@@ -486,7 +501,8 @@ class FeatureDevController(
486501
tabId = tabId,
487502
errMessage = msg ?: message("amazonqFeatureDev.exception.request_failed"),
488503
retries = retriesRemaining(session),
489-
phase = session?.sessionState?.phase
504+
phase = session?.sessionState?.phase,
505+
conversationId = session?.conversationIdUnsafe
490506
)
491507
}
492508

@@ -558,7 +574,8 @@ class FeatureDevController(
558574
tabId = tabId,
559575
errMessage = message ?: message("amazonqFeatureDev.exception.retry_request_failed"),
560576
retries = retriesRemaining(session),
561-
phase = session?.sessionState?.phase
577+
phase = session?.sessionState?.phase,
578+
conversationId = session?.conversationIdUnsafe,
562579
)
563580
} finally {
564581
// Finish processing the event

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/messages/FeatureDevMessagePublisherExtensions.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,12 +118,14 @@ suspend fun MessagePublisher.sendChatInputEnabledMessage(tabId: String, enabled:
118118
this.publish(chatInputEnabledMessage)
119119
}
120120

121-
suspend fun MessagePublisher.sendError(tabId: String, errMessage: String, retries: Int, phase: SessionStatePhase? = null) {
121+
suspend fun MessagePublisher.sendError(tabId: String, errMessage: String, retries: Int, phase: SessionStatePhase? = null, conversationId: String? = null) {
122+
val conversationIdText = if (conversationId == null) "" else "\n\nConversation ID: **$conversationId**"
123+
122124
if (retries == 0) {
123125
this.sendAnswer(
124126
tabId = tabId,
125127
messageType = FeatureDevMessageType.Answer,
126-
message = message("amazonqFeatureDev.no_retries.error_text"),
128+
message = message("amazonqFeatureDev.no_retries.error_text") + conversationIdText,
127129
)
128130

129131
this.sendAnswer(
@@ -145,14 +147,14 @@ suspend fun MessagePublisher.sendError(tabId: String, errMessage: String, retrie
145147
this.sendErrorMessage(
146148
tabId = tabId,
147149
title = message("amazonqFeatureDev.approach_gen.error_text"),
148-
message = errMessage,
150+
message = errMessage + conversationIdText,
149151
)
150152
}
151153
else -> {
152154
this.sendErrorMessage(
153155
tabId = tabId,
154156
title = message("amazonqFeatureDev.error_text"),
155-
message = errMessage,
157+
message = errMessage + conversationIdText,
156158
)
157159
}
158160
}

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/session/Session.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,9 @@ class Session(val tabID: String, val project: Project) {
152152
}
153153
}
154154

155+
val conversationIdUnsafe: String?
156+
get() = _conversationId
157+
155158
val sessionState: SessionState
156159
get() {
157160
if (_state == null) {

0 commit comments

Comments
 (0)