@@ -73,7 +73,7 @@ import { ChatSessionManagementService } from '../chat/chatSessionManagementServi
73
73
import { ChatTelemetryController } from '../chat/telemetry/chatTelemetryController'
74
74
import { QuickAction } from '../chat/quickActions'
75
75
import { Metric } from '../../shared/telemetry/metric'
76
- import { getErrorMessage , getHttpStatusCode , isAwsError , isNullish , isObject } from '../../shared/utils'
76
+ import { getErrorMessage , getHttpStatusCode , getRequestID , isAwsError , isNullish , isObject } from '../../shared/utils'
77
77
import { HELP_MESSAGE , loadingMessage } from '../chat/constants'
78
78
import { TelemetryService } from '../../shared/telemetry/telemetryService'
79
79
import {
@@ -120,7 +120,7 @@ import {
120
120
responseTimeoutPartialMsg ,
121
121
} from './constants'
122
122
import { URI } from 'vscode-uri'
123
- import { AgenticChatError , customerFacingErrorCodes } from './errors'
123
+ import { AgenticChatError , customerFacingErrorCodes , unactionableErrorCodes } from './errors'
124
124
125
125
type ChatHandlers = Omit <
126
126
LspHandlers < Chat > ,
@@ -1548,22 +1548,22 @@ export class AgenticChatController implements ChatHandlers {
1548
1548
tabId : string ,
1549
1549
metric : Metric < CombinedConversationEvent >
1550
1550
) : ChatResult | ResponseError < ChatResult > {
1551
- let errorMessage : string | undefined
1552
- let requestID : string | undefined
1553
- if ( isAwsError ( err ) || ( isObject ( err ) && typeof getHttpStatusCode ( err ) === 'number' ) ) {
1554
- if ( err instanceof CodeWhispererStreamingServiceException ) {
1555
- errorMessage = err . message
1556
- requestID = err . $metadata . requestId
1557
- } else if ( err ?. cause ?. message ) {
1558
- errorMessage = err ?. cause ?. message
1559
- requestID = err . cause ?. $metadata . requestId
1560
- } else if ( err instanceof Error || err ?. message ) {
1561
- errorMessage = err . message
1562
- }
1551
+ const errorMessage = getErrorMessage ( err )
1552
+ const requestID = getRequestID ( err )
1553
+ metric . setDimension ( 'cwsprChatResponseCode' , getHttpStatusCode ( err ) ?? 0 )
1554
+ metric . setDimension ( 'languageServerVersion' , this . #features. runtime . serverInfo . version )
1563
1555
1564
- metric . setDimension ( 'cwsprChatResponseCode' , getHttpStatusCode ( err ) ?? 0 )
1565
- metric . setDimension ( 'languageServerVersion' , this . #features. runtime . serverInfo . version )
1566
- this . #telemetryController. emitMessageResponseError ( tabId , metric . metric , requestID , errorMessage )
1556
+ // use custom error message for unactionable errors (user-dependent errors like PromptCharacterLimit)
1557
+ if ( err . code && err . code in unactionableErrorCodes ) {
1558
+ const customErrMessage = unactionableErrorCodes [ err . code as keyof typeof unactionableErrorCodes ]
1559
+ this . #telemetryController. emitMessageResponseError ( tabId , metric . metric , requestID , customErrMessage )
1560
+ } else {
1561
+ this . #telemetryController. emitMessageResponseError (
1562
+ tabId ,
1563
+ metric . metric ,
1564
+ requestID ,
1565
+ errorMessage ?? genericErrorMsg
1566
+ )
1567
1567
}
1568
1568
1569
1569
let authFollowType : ReturnType < typeof getAuthFollowUpType > = undefined
0 commit comments