Skip to content

Commit 0b8edb3

Browse files
authored
Merge pull request #7488 from ctlai95/model-selection-feature-flag
feat(q): enable model selection from serverCapabilities
2 parents 655ceda + 03e1d8e commit 0b8edb3

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

packages/amazonq/src/lsp/chat/activation.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import { pushConfigUpdate } from '../config'
1717
export async function activate(languageClient: LanguageClient, encryptionKey: Buffer, mynahUIPath: string) {
1818
const disposables = globals.context.subscriptions
1919

20-
const provider = new AmazonQChatViewProvider(mynahUIPath)
20+
const provider = new AmazonQChatViewProvider(mynahUIPath, languageClient)
2121

2222
disposables.push(
2323
window.registerWebviewViewProvider(AmazonQChatViewProvider.viewType, provider, {

packages/amazonq/src/lsp/chat/webviewProvider.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import {
2424
import { AuthUtil, RegionProfile } from 'aws-core-vscode/codewhisperer'
2525
import { featureConfig } from 'aws-core-vscode/amazonq'
2626
import { getAmazonQLspConfig } from '../config'
27+
import { LanguageClient } from 'vscode-languageclient'
2728

2829
export class AmazonQChatViewProvider implements WebviewViewProvider {
2930
public static readonly viewType = 'aws.amazonq.AmazonQChatView'
@@ -36,7 +37,10 @@ export class AmazonQChatViewProvider implements WebviewViewProvider {
3637
connectorAdapterPath?: string
3738
uiPath?: string
3839

39-
constructor(private readonly mynahUIPath: string) {}
40+
constructor(
41+
private readonly mynahUIPath: string,
42+
private readonly languageClient: LanguageClient
43+
) {}
4044

4145
public async resolveWebviewView(
4246
webviewView: WebviewView,
@@ -95,6 +99,8 @@ export class AmazonQChatViewProvider implements WebviewViewProvider {
9599
const pairProgrammingAcknowledged =
96100
!AmazonQPromptSettings.instance.isPromptEnabled('amazonQChatPairProgramming')
97101
const welcomeCount = globals.globalState.tryGet('aws.amazonq.welcomeChatShowCount', Number, 0)
102+
const modelSelectionEnabled =
103+
this.languageClient.initializeResult?.awsServerCapabilities?.chatOptions?.modelSelection ?? false
98104

99105
// only show profile card when the two conditions
100106
// 1. profile count >= 2
@@ -143,14 +149,14 @@ export class AmazonQChatViewProvider implements WebviewViewProvider {
143149
const vscodeApi = acquireVsCodeApi()
144150
const hybridChatConnector = new HybridChatAdapter(${(await AuthUtil.instance.getChatAuthState()).amazonQ === 'connected'},${featureConfigData},${welcomeCount},${disclaimerAcknowledged},${regionProfileString},${disabledCommands},${isSMUS},${isSM},vscodeApi.postMessage)
145151
const commands = [hybridChatConnector.initialQuickActions[0]]
146-
qChat = amazonQChat.createChat(vscodeApi, {disclaimerAcknowledged: ${disclaimerAcknowledged}, pairProgrammingAcknowledged: ${pairProgrammingAcknowledged}, agenticMode: true, quickActionCommands: commands}, hybridChatConnector, ${JSON.stringify(featureConfigData)});
152+
qChat = amazonQChat.createChat(vscodeApi, {disclaimerAcknowledged: ${disclaimerAcknowledged}, pairProgrammingAcknowledged: ${pairProgrammingAcknowledged}, agenticMode: true, quickActionCommands: commands, modelSelectionEnabled: ${modelSelectionEnabled}}, hybridChatConnector, ${JSON.stringify(featureConfigData)});
147153
}
148154
window.addEventListener('message', (event) => {
149155
/**
150156
* special handler that "simulates" reloading the webview when a profile changes.
151157
* required because chat-client relies on initializedResult from the lsp that
152158
* are only sent once
153-
*
159+
*
154160
* References:
155161
* closing tabs: https://github.com/aws/mynah-ui/blob/de736b52f369ba885cd19f33ac86c6f57b4a3134/docs/USAGE.md#removing-a-tab-programmatically-
156162
* opening tabs: https://github.com/aws/aws-toolkit-vscode/blob/c22efa03e73b241564c8051c35761eb8620edb83/packages/amazonq/test/e2e/amazonq/framework/framework.ts#L98

0 commit comments

Comments
 (0)