Skip to content

Commit 1b28bf8

Browse files
committed
send telemetry when attempts to use inline chat with IAM auth
1 parent ef56385 commit 1b28bf8

File tree

3 files changed

+41
-5
lines changed

3 files changed

+41
-5
lines changed

packages/amazonq/src/inlineChat/provider/inlineChatProvider.ts

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import {
1616
ChatTriggerType,
1717
EditorContextExtractor,
1818
PromptMessage,
19+
TriggerEvent,
1920
TriggerEventsStorage,
2021
TriggerPayload,
2122
triggerPayloadToChatRequest,
@@ -30,6 +31,7 @@ import { extractAuthFollowUp } from 'aws-core-vscode/amazonq'
3031
import { InlineChatParams, InlineChatResult } from '@aws/language-server-runtimes-types'
3132
import { decryptResponse, encryptRequest } from '../../lsp/encryption'
3233
import { getCursorState } from '../../lsp/utils'
34+
import { CwsprChatTriggerInteraction, telemetry } from 'aws-core-vscode/telemetry'
3335

3436
export class InlineChatProvider {
3537
private readonly editorContextExtractor: EditorContextExtractor
@@ -68,11 +70,34 @@ export class InlineChatProvider {
6870
}
6971
}
7072

73+
private getTriggerInteractionFromTriggerEvent(triggerEvent: TriggerEvent | undefined): CwsprChatTriggerInteraction {
74+
switch (triggerEvent?.type) {
75+
case 'editor_context_command':
76+
return triggerEvent.command?.triggerType === 'keybinding' ? 'hotkeys' : 'contextMenu'
77+
case 'follow_up':
78+
case 'chat_message':
79+
default:
80+
return 'click'
81+
}
82+
}
83+
7184
public async processPromptMessageLSP(message: PromptMessage): Promise<InlineChatResult> {
85+
const triggerInteraction = this.getTriggerInteractionFromTriggerEvent(
86+
this.triggerEventsStorage.getLastTriggerEventByTabID(message.tabID)
87+
)
7288
if (!AuthUtil.instance.isSsoSession()) {
89+
telemetry.amazonq_messageResponseError.emit({
90+
result: 'Failed',
91+
cwsprChatConversationType: 'Chat',
92+
cwsprChatRequestLength: message.message?.length ?? 0,
93+
cwsprChatResponseCode: 401,
94+
cwsprChatTriggerInteraction: triggerInteraction,
95+
reason: 'AuthenticationError',
96+
reasonDesc: 'Inline chat requires SSO authentication, but current session is not',
97+
})
7398
throw new ToolkitError('Inline chat is only available with SSO authentication')
7499
}
75-
100+
76101
// TODO: handle partial responses.
77102
getLogger().info('Making inline chat request with message %O', message)
78103
const params = this.getCurrentEditorParams(message.message ?? '')
@@ -87,10 +112,23 @@ export class InlineChatProvider {
87112

88113
// TODO: remove in favor of LSP implementation.
89114
public async processPromptMessage(message: PromptMessage) {
115+
const triggerInteraction = this.getTriggerInteractionFromTriggerEvent(
116+
this.triggerEventsStorage.getLastTriggerEventByTabID(message.tabID)
117+
)
90118
if (!AuthUtil.instance.isSsoSession()) {
119+
telemetry.amazonq_messageResponseError.emit({
120+
result: 'Failed',
121+
cwsprChatConversationType: 'Chat',
122+
cwsprChatRequestLength: message.message?.length ?? 0,
123+
cwsprChatResponseCode: 401,
124+
cwsprChatTriggerInteraction: triggerInteraction,
125+
reason: 'AuthenticationError',
126+
reasonDesc: 'Inline chat requires SSO authentication, but current session is not',
127+
credentialStartUrl: AuthUtil.instance.connection?.startUrl,
128+
})
91129
throw new ToolkitError('Inline chat is only available with SSO authentication')
92130
}
93-
131+
94132
return this.editorContextExtractor
95133
.extractContextForTrigger('ChatMessage')
96134
.then((context) => {

packages/core/src/codewhisperer/util/authUtil.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -465,8 +465,6 @@ export class AuthUtil implements IAuthProvider {
465465
} else if (this.isIamSession()) {
466466
return {
467467
credentialSourceId: 'sharedCredentials',
468-
credentialAccessKey: AuthUtil.instance.connection?.accessKey,
469-
credentialRoleArn: AuthUtil.instance.connection?.roleArn,
470468
}
471469
}
472470

packages/core/src/codewhispererChat/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@ export { ChatTriggerType, PromptMessage, TriggerPayload } from './controllers/ch
1212
export { UserIntentRecognizer } from './controllers/chat/userIntent/userIntentRecognizer'
1313
export { EditorContextExtractor } from './editor/context/extractor'
1414
export { ChatSessionStorage } from './storages/chatSession'
15-
export { TriggerEventsStorage } from './storages/triggerEvents'
15+
export { TriggerEventsStorage, TriggerEvent } from './storages/triggerEvents'
1616
export { ReferenceLogController } from './view/messages/referenceLogController'
1717
export { extractLanguageNameFromFile } from './editor/context/file/languages'

0 commit comments

Comments
 (0)