Skip to content

Commit 6ca0199

Browse files
committed
feat(amazonq): configuration support for vscode
1 parent 467e33b commit 6ca0199

File tree

5 files changed

+27
-8
lines changed

5 files changed

+27
-8
lines changed

server/aws-lsp-codewhisperer/src/language-server/codeWhispererServer.ts

+18-4
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
TextDocument,
1515
Workspace,
1616
SDKInitializator,
17+
DidChangeConfigurationParams,
1718
} from '@aws/language-server-runtimes/server-interface'
1819
import { AWSError } from 'aws-sdk'
1920
import { autoTrigger, triggerType } from './auto-trigger/autoTrigger'
@@ -36,7 +37,7 @@ import {
3637
} from './telemetry/types'
3738
import { getCompletionType, getEndPositionForAcceptedSuggestion, isAwsError } from './utils'
3839
import { getUserAgent, makeUserContextObject } from './utilities/telemetryUtils'
39-
import { Q_CONFIGURATION_SECTION } from './configuration/qConfigurationServer'
40+
import { Q_CONFIGURATION_SECTION, Q_CONFIGURATION_VSC } from './configuration/qConfigurationServer'
4041
import { fetchSupplementalContext } from './utilities/supplementalContextUtil/supplementalContextUtil'
4142
import { undefinedIfEmpty } from './utilities/textUtils'
4243
import { TelemetryService } from './telemetryService'
@@ -640,8 +641,21 @@ export const CodewhispererServerFactory =
640641
await emitUserTriggerDecisionTelemetry(telemetry, telemetryService, session, timeSinceLastUserModification)
641642
}
642643

643-
const updateConfiguration = async () => {
644+
const updateConfiguration = async (params?: DidChangeConfigurationParams) => {
644645
try {
646+
const ideCategory = telemetryService.getUserContext()?.ideCategory
647+
if (ideCategory === 'VSCODE') {
648+
const vscConfig = await lsp.workspace.getConfiguration(Q_CONFIGURATION_VSC)
649+
const optOutTelemetryPreference = vscConfig['shareContentWithAWS'] === true ? 'OPTOUT' : 'OPTIN'
650+
telemetryService.updateOptOutPreference(optOutTelemetryPreference)
651+
includeSuggestionsWithCodeReferences = vscConfig['showCodeWithReferences'] === true
652+
codeWhispererService.customizationArn = undefinedIfEmpty(params?.settings['customization'])
653+
codePercentageTracker.customizationArn = undefinedIfEmpty(params?.settings['customization'])
654+
logging.log(
655+
`Inline completion configuration updated to use ${codeWhispererService.customizationArn}`
656+
)
657+
return
658+
}
645659
const qConfig = await lsp.workspace.getConfiguration(Q_CONFIGURATION_SECTION)
646660
if (qConfig) {
647661
codeWhispererService.customizationArn = undefinedIfEmpty(qConfig.customization)
@@ -679,8 +693,8 @@ export const CodewhispererServerFactory =
679693

680694
lsp.extensions.onInlineCompletionWithReferences(onInlineCompletionHandler)
681695
lsp.extensions.onLogInlineCompletionSessionResults(onLogInlineCompletionSessionResultsHandler)
682-
lsp.onInitialized(updateConfiguration)
683-
lsp.didChangeConfiguration(updateConfiguration)
696+
lsp.onInitialized(() => updateConfiguration())
697+
lsp.didChangeConfiguration(params => updateConfiguration(params))
684698

685699
lsp.onDidChangeTextDocument(async p => {
686700
const textDocument = await workspace.getTextDocument(p.textDocument.uri)

server/aws-lsp-codewhisperer/src/language-server/configuration/qConfigurationServer.ts

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { SDKInitializator } from '@aws/language-server-runtimes/server-interface
1313

1414
// The configuration section that the server will register and listen to
1515
export const Q_CONFIGURATION_SECTION = 'aws.q'
16+
export const Q_CONFIGURATION_VSC = 'amazonQ'
1617
export const QConfigurationServerToken =
1718
(
1819
service: (

server/aws-lsp-codewhisperer/src/language-server/telemetryService.ts

+4
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,10 @@ export class TelemetryService extends CodeWhispererServiceToken {
7676
this.userContext = userContext
7777
}
7878

79+
public getUserContext() {
80+
return this.userContext
81+
}
82+
7983
public updateOptOutPreference(optOutPreference: OptOutPreference): void {
8084
this.optOutPreference = optOutPreference
8185
}

server/aws-lsp-codewhisperer/src/language-server/utilities/telemetryUtils.test.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ describe('makeUserContextObject', () => {
125125
name: 'test-custom-client-name',
126126
version: '1.2.3',
127127
extension: {
128-
name: 'AmazonQ-For-VSCode',
128+
name: 'AWS IDE Extensions for VSCode',
129129
version: '2.2.2',
130130
},
131131
clientId: 'test-client-id',
@@ -178,7 +178,7 @@ describe('makeUserContextObject', () => {
178178

179179
it('should handle all possible client name values to define ideCategory', () => {
180180
const clientNames = [
181-
'AmazonQ-For-VSCode',
181+
'AWS IDE Extensions for VSCode',
182182
'Amazon-Q-For-JetBrains',
183183
'AmazonQ-For-Eclipse',
184184
'AWS-Toolkit-For-VisualStudio',
@@ -190,7 +190,7 @@ describe('makeUserContextObject', () => {
190190

191191
const result = makeUserContextObject(mockInitializeParams, 'linux', 'TestProduct')
192192
switch (clientName) {
193-
case 'AmazonQ-For-VSCode':
193+
case 'AWS IDE Extensions for VSCode':
194194
assert.strictEqual(result?.ideCategory, 'VSCODE')
195195
break
196196
case 'Amazon-Q-For-JetBrains':

server/aws-lsp-codewhisperer/src/language-server/utilities/telemetryUtils.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export const getUserAgent = (initializeParams: InitializeParams, serverInfo?: Se
4747
}
4848

4949
const IDE_CATEGORY_MAP: { [key: string]: IdeCategory } = {
50-
'AmazonQ-For-VSCode': 'VSCODE',
50+
'AWS IDE Extensions for VSCode': 'VSCODE',
5151
'Amazon-Q-For-JetBrains': 'JETBRAINS',
5252
'AmazonQ-For-Eclipse': 'ECLIPSE',
5353
'AWS-Toolkit-For-VisualStudio': 'VISUAL_STUDIO',

0 commit comments

Comments
 (0)