in server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts [1604:1667]
async onInlineChatPrompt(
params: InlineChatParams,
token: CancellationToken
): Promise<InlineChatResult | ResponseError<InlineChatResult>> {
// TODO: This metric needs to be removed later, just added for now to be able to create a ChatEventParser object
const metric = new Metric<AddMessageEvent>({
cwsprChatConversationType: 'Chat',
})
const triggerContext = await this.#getInlineChatTriggerContext(params)
let response: SendMessageCommandOutput
let requestInput: SendMessageCommandInput
try {
requestInput = await this.#triggerContext.getChatParamsFromTrigger(
params,
triggerContext,
ChatTriggerType.INLINE_CHAT,
this.#customizationArn
)
if (!this.#serviceManager) {
throw new Error('amazonQServiceManager is not initialized')
}
const client = this.#serviceManager.getStreamingClient()
response = await client.sendMessage(requestInput as SendMessageCommandInputCodeWhispererStreaming)
this.#log('Response for inline chat', JSON.stringify(response.$metadata), JSON.stringify(response))
} catch (err) {
if (err instanceof AmazonQServicePendingSigninError || err instanceof AmazonQServicePendingProfileError) {
this.#log(`Q Inline Chat SSO Connection error: ${getErrorMessage(err)}`)
return new ResponseError<ChatResult>(LSPErrorCodes.RequestFailed, err.message)
}
this.#log(`Q api request error ${err instanceof Error ? JSON.stringify(err) : 'unknown'}`)
return new ResponseError<ChatResult>(
LSPErrorCodes.RequestFailed,
err instanceof Error ? err.message : 'Unknown request error'
)
}
try {
const result = await this.#processSendMessageResponseForInlineChat(
response,
metric,
params.partialResultToken
)
return result.success
? {
...result.data.chatResult,
requestId: response.$metadata.requestId,
}
: new ResponseError<ChatResult>(LSPErrorCodes.RequestFailed, result.error)
} catch (err) {
this.#log(
'Error encountered during inline chat response streaming:',
err instanceof Error ? err.message : 'unknown'
)
return new ResponseError<ChatResult>(
LSPErrorCodes.RequestFailed,
err instanceof Error ? err.message : 'Unknown error occurred during inline chat response stream'
)
}
}