@@ -24,6 +24,7 @@ import {
24
24
import { AuthUtil , RegionProfile } from 'aws-core-vscode/codewhisperer'
25
25
import { featureConfig } from 'aws-core-vscode/amazonq'
26
26
import { getAmazonQLspConfig } from '../config'
27
+ import { LanguageClient } from 'vscode-languageclient'
27
28
28
29
export class AmazonQChatViewProvider implements WebviewViewProvider {
29
30
public static readonly viewType = 'aws.amazonq.AmazonQChatView'
@@ -36,7 +37,10 @@ export class AmazonQChatViewProvider implements WebviewViewProvider {
36
37
connectorAdapterPath ?: string
37
38
uiPath ?: string
38
39
39
- constructor ( private readonly mynahUIPath : string ) { }
40
+ constructor (
41
+ private readonly mynahUIPath : string ,
42
+ private readonly languageClient : LanguageClient
43
+ ) { }
40
44
41
45
public async resolveWebviewView (
42
46
webviewView : WebviewView ,
@@ -95,6 +99,8 @@ export class AmazonQChatViewProvider implements WebviewViewProvider {
95
99
const pairProgrammingAcknowledged =
96
100
! AmazonQPromptSettings . instance . isPromptEnabled ( 'amazonQChatPairProgramming' )
97
101
const welcomeCount = globals . globalState . tryGet ( 'aws.amazonq.welcomeChatShowCount' , Number , 0 )
102
+ const modelSelectionEnabled =
103
+ this . languageClient . initializeResult ?. awsServerCapabilities ?. chatOptions ?. modelSelection ?? false
98
104
99
105
// only show profile card when the two conditions
100
106
// 1. profile count >= 2
@@ -143,14 +149,14 @@ export class AmazonQChatViewProvider implements WebviewViewProvider {
143
149
const vscodeApi = acquireVsCodeApi()
144
150
const hybridChatConnector = new HybridChatAdapter(${ ( await AuthUtil . instance . getChatAuthState ( ) ) . amazonQ === 'connected' } ,${ featureConfigData } ,${ welcomeCount } ,${ disclaimerAcknowledged } ,${ regionProfileString } ,${ disabledCommands } ,${ isSMUS } ,${ isSM } ,vscodeApi.postMessage)
145
151
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 ) } );
147
153
}
148
154
window.addEventListener('message', (event) => {
149
155
/**
150
156
* special handler that "simulates" reloading the webview when a profile changes.
151
157
* required because chat-client relies on initializedResult from the lsp that
152
158
* are only sent once
153
- *
159
+ *
154
160
* References:
155
161
* closing tabs: https://github.com/aws/mynah-ui/blob/de736b52f369ba885cd19f33ac86c6f57b4a3134/docs/USAGE.md#removing-a-tab-programmatically-
156
162
* opening tabs: https://github.com/aws/aws-toolkit-vscode/blob/c22efa03e73b241564c8051c35761eb8620edb83/packages/amazonq/test/e2e/amazonq/framework/framework.ts#L98
0 commit comments