Skip to content

Commit e05ce3e

Browse files
Merge master into feature/model-selection
2 parents 8cbe56d + dd6a2c8 commit e05ce3e

File tree

7 files changed

+454
-47
lines changed

7 files changed

+454
-47
lines changed

package-lock.json

Lines changed: 398 additions & 41 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@ import { window } from 'vscode'
77
import { LanguageClient } from 'vscode-languageclient'
88
import { AmazonQChatViewProvider } from './webviewProvider'
99
import { focusAmazonQPanel, registerCommands } from './commands'
10-
import { registerLanguageServerEventListener, registerMessageListeners } from './messages'
10+
import {
11+
registerActiveEditorChangeListener,
12+
registerLanguageServerEventListener,
13+
registerMessageListeners,
14+
} from './messages'
1115
import { Commands, getLogger, globals, undefinedIfEmpty } from 'aws-core-vscode/shared'
1216
import { activate as registerLegacyChatListeners } from '../../app/chat/activation'
1317
import { DefaultAmazonQAppInitContext } from 'aws-core-vscode/amazonq'
@@ -33,6 +37,7 @@ export async function activate(languageClient: LanguageClient, encryptionKey: Bu
3337
**/
3438
registerCommands(provider)
3539
registerLanguageServerEventListener(languageClient, provider)
40+
registerActiveEditorChangeListener(languageClient)
3641

3742
provider.onDidResolveWebview(() => {
3843
const disposable = DefaultAmazonQAppInitContext.instance.getAppsToWebViewMessageListener().onMessage((msg) => {

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

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,18 @@ import {
5555
ChatUpdateParams,
5656
chatOptionsUpdateType,
5757
ChatOptionsUpdateParams,
58+
listRulesRequestType,
59+
ruleClickRequestType,
60+
pinnedContextNotificationType,
61+
activeEditorChangedNotificationType,
5862
} from '@aws/language-server-runtimes/protocol'
5963
import { v4 as uuidv4 } from 'uuid'
6064
import * as vscode from 'vscode'
6165
import { Disposable, LanguageClient, Position, TextDocumentIdentifier } from 'vscode-languageclient'
6266
import * as jose from 'jose'
6367
import { AmazonQChatViewProvider } from './webviewProvider'
6468
import { AuthUtil, ReferenceLogViewProvider } from 'aws-core-vscode/codewhisperer'
65-
import { amazonQDiffScheme, AmazonQPromptSettings, messages, openUrl } from 'aws-core-vscode/shared'
69+
import { amazonQDiffScheme, AmazonQPromptSettings, messages, openUrl, isTextEditor } from 'aws-core-vscode/shared'
6670
import {
6771
DefaultAmazonQAppInitContext,
6872
messageDispatcher,
@@ -74,6 +78,29 @@ import { telemetry, TelemetryBase } from 'aws-core-vscode/telemetry'
7478
import { isValidResponseError } from './error'
7579
import { focusAmazonQPanel } from './commands'
7680

81+
export function registerActiveEditorChangeListener(languageClient: LanguageClient) {
82+
let debounceTimer: NodeJS.Timeout | undefined
83+
vscode.window.onDidChangeActiveTextEditor((editor) => {
84+
if (debounceTimer) {
85+
clearTimeout(debounceTimer)
86+
}
87+
debounceTimer = setTimeout(() => {
88+
let textDocument = undefined
89+
let cursorState = undefined
90+
if (editor) {
91+
textDocument = {
92+
uri: editor.document.uri.toString(),
93+
}
94+
cursorState = getCursorState(editor.selections)
95+
}
96+
languageClient.sendNotification(activeEditorChangedNotificationType.method, {
97+
textDocument,
98+
cursorState,
99+
})
100+
}, 100)
101+
})
102+
}
103+
77104
export function registerLanguageServerEventListener(languageClient: LanguageClient, provider: AmazonQChatViewProvider) {
78105
languageClient.info(
79106
'Language client received initializeResult from server:',
@@ -316,6 +343,8 @@ export function registerMessageListeners(
316343
)
317344
break
318345
}
346+
case listRulesRequestType.method:
347+
case ruleClickRequestType.method:
319348
case listConversationsRequestType.method:
320349
case conversationClickRequestType.method:
321350
case listMcpServersRequestType.method:
@@ -471,6 +500,20 @@ export function registerMessageListeners(
471500
params: params,
472501
})
473502
})
503+
languageClient.onNotification(
504+
pinnedContextNotificationType.method,
505+
(params: ContextCommandParams & { tabId: string; textDocument?: TextDocumentIdentifier }) => {
506+
const editor = vscode.window.activeTextEditor
507+
let textDocument = undefined
508+
if (editor && isTextEditor(editor)) {
509+
textDocument = { uri: vscode.workspace.asRelativePath(editor.document.uri) }
510+
}
511+
void provider.webview?.postMessage({
512+
command: pinnedContextNotificationType.method,
513+
params: { ...params, textDocument },
514+
})
515+
}
516+
)
474517

475518
languageClient.onNotification(openFileDiffNotificationType.method, async (params: OpenFileDiffParams) => {
476519
const ecc = new EditorContentController()

packages/amazonq/src/lsp/client.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ export async function startLanguageServer(
123123
awsClientCapabilities: {
124124
q: {
125125
developerProfiles: true,
126+
pinnedContextEnabled: true,
126127
mcp: true,
127128
},
128129
window: {

packages/core/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -443,8 +443,8 @@
443443
"@aws-sdk/types": "^3.13.1",
444444
"@aws/chat-client": "^0.1.4",
445445
"@aws/chat-client-ui-types": "^0.1.24",
446-
"@aws/language-server-runtimes": "^0.2.81",
447-
"@aws/language-server-runtimes-types": "^0.1.28",
446+
"@aws/language-server-runtimes": "^0.2.97",
447+
"@aws/language-server-runtimes-types": "^0.1.39",
448448
"@cspotcode/source-map-support": "^0.8.1",
449449
"@sinonjs/fake-timers": "^10.0.2",
450450
"@types/adm-zip": "^0.4.34",
@@ -526,7 +526,7 @@
526526
"@aws-sdk/s3-request-presigner": "<3.731.0",
527527
"@aws-sdk/smithy-client": "<3.731.0",
528528
"@aws-sdk/util-arn-parser": "<3.731.0",
529-
"@aws/mynah-ui": "^4.34.1",
529+
"@aws/mynah-ui": "^4.35.4",
530530
"@gerhobbelt/gitignore-parser": "^0.2.0-9",
531531
"@iarna/toml": "^2.2.5",
532532
"@smithy/fetch-http-handler": "^5.0.1",

packages/core/src/amazonq/webview/ui/quickActions/handler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ export class QuickActionHandler {
362362
cancelButtonWhenLoading: false,
363363
})
364364
} else {
365-
this.mynahUI.updateStore(affectedTabId, { promptInputOptions: [] })
365+
this.mynahUI.updateStore(affectedTabId, { promptInputOptions: [], promptTopBarTitle: '' })
366366
}
367367

368368
if (affectedTabId && this.isHybridChatEnabled) {

packages/core/src/shared/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export * from './vscode/commands2'
5151
export * from './utilities/pathUtils'
5252
export * from './utilities/zipStream'
5353
export * from './errors'
54+
export { isTextEditor } from './utilities/editorUtilities'
5455
export * as messages from './utilities/messages'
5556
export * as errors from './errors'
5657
export * as funcUtil from './utilities/functionUtils'

0 commit comments

Comments
 (0)