Skip to content

Commit f2e9403

Browse files
authored
fix(amazonq): Use document change event for auto trigger classifier input (#7697)
## Problem The auto trigger classifier needs the entire document change event as input to correctly predict whether to make auto trigger or not. This code path was lost when we migrate inline completion to Flare (language server). ## Solution Implement the IDE side changes for below PRs: aws/language-server-runtimes#618 aws/language-servers#1912 https://github.com/aws/language-servers/pull/1914/files --- - Treat all work as PUBLIC. Private `feature/x` branches will not be squash-merged at release time. - Your code changes must meet the guidelines in [CONTRIBUTING.md](https://github.com/aws/aws-toolkit-vscode/blob/master/CONTRIBUTING.md#guidelines). - License: I confirm that my contribution is made under the terms of the Apache 2.0 license.
1 parent df9a02b commit f2e9403

File tree

6 files changed

+33
-13
lines changed

6 files changed

+33
-13
lines changed

package-lock.json

Lines changed: 9 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type": "Bug Fix",
3+
"description": "Use documentChangeEvent as auto trigger condition"
4+
}

packages/amazonq/src/app/inline/completion.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,8 @@ export class AmazonQInlineCompletionItemProvider implements InlineCompletionItem
335335
context,
336336
token,
337337
isAutoTrigger,
338-
getAllRecommendationsOptions
338+
getAllRecommendationsOptions,
339+
this.documentEventListener.getLastDocumentChangeEvent(document.uri.fsPath)?.event
339340
)
340341
// get active item from session for displaying
341342
const items = this.sessionManager.getActiveRecommendation()

packages/amazonq/src/app/inline/recommendationService.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
33
* SPDX-License-Identifier: Apache-2.0
44
*/
5+
import * as vscode from 'vscode'
56
import {
67
InlineCompletionListWithReferences,
78
InlineCompletionWithReferencesParams,
89
inlineCompletionWithReferencesRequestType,
10+
TextDocumentContentChangeEvent,
911
} from '@aws/language-server-runtimes/protocol'
1012
import { CancellationToken, InlineCompletionContext, Position, TextDocument } from 'vscode'
1113
import { LanguageClient } from 'vscode-languageclient'
@@ -40,17 +42,28 @@ export class RecommendationService {
4042
context: InlineCompletionContext,
4143
token: CancellationToken,
4244
isAutoTrigger: boolean,
43-
options: GetAllRecommendationsOptions = { emitTelemetry: true, showUi: true }
45+
options: GetAllRecommendationsOptions = { emitTelemetry: true, showUi: true },
46+
documentChangeEvent?: vscode.TextDocumentChangeEvent
4447
) {
4548
// Record that a regular request is being made
4649
this.cursorUpdateRecorder?.recordCompletionRequest()
50+
const documentChangeParams = documentChangeEvent
51+
? {
52+
textDocument: {
53+
uri: document.uri.toString(),
54+
version: document.version,
55+
},
56+
contentChanges: documentChangeEvent.contentChanges.map((x) => x as TextDocumentContentChangeEvent),
57+
}
58+
: undefined
4759

4860
let request: InlineCompletionWithReferencesParams = {
4961
textDocument: {
5062
uri: document.uri.toString(),
5163
},
5264
position,
5365
context,
66+
documentChangeParams: documentChangeParams,
5467
}
5568
if (options.editsStreakToken) {
5669
request = { ...request, partialResultToken: options.editsStreakToken }

packages/amazonq/test/unit/amazonq/apps/inline/recommendationService.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ describe('RecommendationService', () => {
146146
},
147147
position: mockPosition,
148148
context: mockContext,
149+
documentChangeParams: undefined,
149150
})
150151

151152
// Verify session management
@@ -187,6 +188,7 @@ describe('RecommendationService', () => {
187188
},
188189
position: mockPosition,
189190
context: mockContext,
191+
documentChangeParams: undefined,
190192
}
191193
const secondRequestArgs = sendRequestStub.secondCall.args[1]
192194
assert.deepStrictEqual(firstRequestArgs, expectedRequestArgs)

packages/core/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -471,8 +471,8 @@
471471
"@aws-sdk/types": "^3.13.1",
472472
"@aws/chat-client": "^0.1.4",
473473
"@aws/chat-client-ui-types": "^0.1.47",
474-
"@aws/language-server-runtimes": "^0.2.102",
475-
"@aws/language-server-runtimes-types": "^0.1.43",
474+
"@aws/language-server-runtimes": "^0.2.111",
475+
"@aws/language-server-runtimes-types": "^0.1.47",
476476
"@cspotcode/source-map-support": "^0.8.1",
477477
"@sinonjs/fake-timers": "^10.0.2",
478478
"@types/adm-zip": "^0.4.34",

0 commit comments

Comments
 (0)