Skip to content

Commit c1b03c9

Browse files
authored
Merge pull request #6563 from aws/autoMerge/feature/amazonqLSP
Merge master into feature/amazonqLSP
2 parents 79ab9f8 + b83f6e9 commit c1b03c9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+297
-344
lines changed

.github/workflows/filterDuplicates.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,9 @@ async function run() {
111111
console.log('%s duplicates found', filteredDuplicates.length)
112112
if (filteredDuplicates.length > 0) {
113113
console.log(formatDuplicates(filteredDuplicates, commitHash, repoName))
114+
console.log(
115+
'* Hint: if these duplicates appear unrelated to the changes, rebase onto the latest target branch.'
116+
)
114117
process.exit(1)
115118
}
116119
}

package-lock.json

Lines changed: 3 additions & 3 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": "/review: Code review starts automatically when invoked from menu"
4+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type": "Removal",
3+
"description": "Reverted prefetch logic to enable more stable inline completion"
4+
}

packages/amazonq/src/app/amazonqScan/app.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ export function init(appContext: AmazonQAppInitContext) {
2525
authClicked: new vscode.EventEmitter<any>(),
2626
tabOpened: new vscode.EventEmitter<any>(),
2727
tabClosed: new vscode.EventEmitter<any>(),
28-
runScan: new vscode.EventEmitter<any>(),
2928
formActionClicked: new vscode.EventEmitter<any>(),
3029
errorThrown: new vscode.EventEmitter<any>(),
3130
showSecurityScan: new vscode.EventEmitter<any>(),
@@ -35,6 +34,7 @@ export function init(appContext: AmazonQAppInitContext) {
3534
processResponseBodyLinkClick: new vscode.EventEmitter<any>(),
3635
fileClicked: new vscode.EventEmitter<any>(),
3736
scanCancelled: new vscode.EventEmitter<any>(),
37+
processChatItemVotedMessage: new vscode.EventEmitter<any>(),
3838
}
3939
const dispatcher = new AppToWebViewMessageDispatcher(appContext.getAppsToWebViewMessagePublisher())
4040
const messenger = new Messenger(dispatcher)

packages/amazonq/src/app/amazonqScan/chat/controller/controller.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import {
3232
scanSummaryMessage,
3333
} from '../../models/constants'
3434
import path from 'path'
35+
import { telemetry } from 'aws-core-vscode/telemetry'
3536

3637
export class ScanController {
3738
private readonly messenger: Messenger
@@ -48,7 +49,7 @@ export class ScanController {
4849
this.authController = new AuthController()
4950

5051
this.chatControllerMessageListeners.tabOpened.event((data) => {
51-
return this.tabOpened(data)
52+
return this.tabOpened(data).then(() => this.scanInitiated(data))
5253
})
5354

5455
this.chatControllerMessageListeners.tabClosed.event((data) => {
@@ -59,10 +60,6 @@ export class ScanController {
5960
this.authClicked(data)
6061
})
6162

62-
this.chatControllerMessageListeners.runScan.event((data) => {
63-
return this.scanInitiated(data)
64-
})
65-
6663
this.chatControllerMessageListeners.formActionClicked.event((data) => {
6764
return this.formActionClicked(data)
6865
})
@@ -98,6 +95,15 @@ export class ScanController {
9895
this.chatControllerMessageListeners.scanCancelled.event((data) => {
9996
return this.handleScanCancelled(data)
10097
})
98+
99+
this.chatControllerMessageListeners.processChatItemVotedMessage.event((data) => {
100+
telemetry.amazonq_feedback.emit({
101+
featureId: 'amazonQReview',
102+
amazonqConversationId: this.sessionStorage.getSession().scanUuid,
103+
credentialStartUrl: AuthUtil.instance.startUrl,
104+
interactionType: data.vote,
105+
})
106+
})
101107
}
102108

103109
private async tabOpened(message: any) {

packages/amazonq/src/app/amazonqScan/chat/views/actions/uiMessageListener.ts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,6 @@ export class UIMessageListener {
4040
case 'auth-follow-up-was-clicked':
4141
this.authClicked(msg)
4242
break
43-
case 'review':
44-
this.scan(msg)
45-
break
4643
case 'form-action-click':
4744
this.formActionClicked(msg)
4845
break
@@ -55,15 +52,12 @@ export class UIMessageListener {
5552
case 'file-click':
5653
this.processFileClick(msg)
5754
break
55+
case 'chat-item-voted':
56+
this.chatItemVoted(msg)
57+
break
5858
}
5959
}
6060

61-
private scan(msg: UIMessage) {
62-
this.scanControllerEventsEmitters?.runScan.fire({
63-
tabID: msg.tabID,
64-
})
65-
}
66-
6761
private formActionClicked(msg: UIMessage) {
6862
this.scanControllerEventsEmitters?.formActionClicked.fire({
6963
...msg,
@@ -112,4 +106,12 @@ export class UIMessageListener {
112106
filePath: msg.filePath,
113107
})
114108
}
109+
110+
private chatItemVoted(msg: any) {
111+
this.scanControllerEventsEmitters?.processChatItemVotedMessage.fire({
112+
tabID: msg.tabID,
113+
command: msg.command,
114+
vote: msg.vote,
115+
})
116+
}
115117
}

packages/amazonq/test/unit/codewhisperer/commands/onAcceptance.test.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,19 @@ import * as sinon from 'sinon'
99
import {
1010
onAcceptance,
1111
AcceptedSuggestionEntry,
12-
CodeWhispererSessionState,
12+
session,
1313
CodeWhispererTracker,
1414
RecommendationHandler,
1515
AuthUtil,
16-
CodeWhispererSession,
1716
} from 'aws-core-vscode/codewhisperer'
1817
import { resetCodeWhispererGlobalVariables, createMockTextEditor } from 'aws-core-vscode/test'
1918
import { assertTelemetryCurried } from 'aws-core-vscode/test'
2019

2120
describe('onAcceptance', function () {
22-
let session: CodeWhispererSession
2321
describe('onAcceptance', function () {
2422
beforeEach(async function () {
25-
session = CodeWhispererSessionState.instance.getSession()
2623
await resetCodeWhispererGlobalVariables()
24+
session.reset()
2725
})
2826

2927
afterEach(function () {

packages/amazonq/test/unit/codewhisperer/commands/onInlineAcceptance.test.ts

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,15 @@ import * as vscode from 'vscode'
88
import * as sinon from 'sinon'
99
import { resetCodeWhispererGlobalVariables, createMockTextEditor } from 'aws-core-vscode/test'
1010
import { assertTelemetryCurried } from 'aws-core-vscode/test'
11-
import {
12-
onInlineAcceptance,
13-
RecommendationHandler,
14-
AuthUtil,
15-
CodeWhispererSessionState,
16-
CodeWhispererSession,
17-
} from 'aws-core-vscode/codewhisperer'
11+
import { onInlineAcceptance, RecommendationHandler, AuthUtil, session } from 'aws-core-vscode/codewhisperer'
1812
import { globals } from 'aws-core-vscode/shared'
1913
import { extensionVersion } from 'aws-core-vscode/shared'
2014

2115
describe('onInlineAcceptance', function () {
22-
let session: CodeWhispererSession
2316
describe('onInlineAcceptance', function () {
2417
beforeEach(async function () {
25-
session = CodeWhispererSessionState.instance.getSession()
2618
await resetCodeWhispererGlobalVariables()
19+
session.reset()
2720
})
2821

2922
afterEach(function () {

packages/amazonq/test/unit/codewhisperer/service/completionProvider.test.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
getLabel,
1313
Recommendation,
1414
RecommendationHandler,
15-
CodeWhispererSessionState,
15+
session,
1616
} from 'aws-core-vscode/codewhisperer'
1717
import { createMockDocument, resetCodeWhispererGlobalVariables } from 'aws-core-vscode/test'
1818

@@ -39,7 +39,6 @@ describe('completionProviderService', function () {
3939

4040
describe('getCompletionItem', function () {
4141
it('should return targetCompletionItem given input', function () {
42-
const session = CodeWhispererSessionState.instance.getSession()
4342
session.startPos = new vscode.Position(0, 0)
4443
RecommendationHandler.instance.requestId = 'mock_requestId_getCompletionItem'
4544
session.sessionId = 'mock_sessionId_getCompletionItem'
@@ -96,7 +95,6 @@ describe('completionProviderService', function () {
9695

9796
describe('getCompletionItems', function () {
9897
it('should return completion items for each non-empty recommendation', async function () {
99-
const session = CodeWhispererSessionState.instance.getSession()
10098
session.recommendations = [
10199
{ content: "\n\t\tconsole.log('Hello world!');\n\t}" },
102100
{ content: '\nvar a = 10' },
@@ -108,7 +106,6 @@ describe('completionProviderService', function () {
108106
})
109107

110108
it('should return empty completion items when recommendation is empty', async function () {
111-
const session = CodeWhispererSessionState.instance.getSession()
112109
session.recommendations = []
113110
const mockPosition = new vscode.Position(14, 83)
114111
const mockDocument = createMockDocument()

0 commit comments

Comments
 (0)