Skip to content

Commit 1a5bdcb

Browse files
authored
feat(codewhisperer): remove IntelliSense and assign user group (#3504)
* removes IntelliSense trigger * divide users into 3 user groups for A/B
1 parent 79f6f66 commit 1a5bdcb

File tree

6 files changed

+30
-21
lines changed

6 files changed

+30
-21
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type": "Feature",
3+
"description": "CodeWhisperer no longer trigger suggestions on IntelliSense acceptance"
4+
}

src/codewhisperer/activation.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ export async function activate(context: ExtContext): Promise<void> {
6262
if (isCloud9()) {
6363
await enableDefaultConfigCloud9()
6464
} else {
65-
determineIsClassifierEnabled()
65+
determineUserGroup()
6666
}
6767
/**
6868
* CodeWhisperer security panel
@@ -214,13 +214,20 @@ export async function activate(context: ExtContext): Promise<void> {
214214
)
215215
}
216216

217-
function determineIsClassifierEnabled() {
218-
const isClassifierEnabled = context.extensionContext.globalState.get<boolean | undefined>(
219-
CodeWhispererConstants.isClassifierEnabledKey
217+
function determineUserGroup() {
218+
const userGroup = context.extensionContext.globalState.get<CodeWhispererConstants.UserGroup | undefined>(
219+
CodeWhispererConstants.userGroupKey
220220
)
221-
if (isClassifierEnabled === undefined) {
222-
const result = Math.random() <= 0.5
223-
context.extensionContext.globalState.update(CodeWhispererConstants.isClassifierEnabledKey, result)
221+
if (userGroup === undefined) {
222+
const randomNum = Math.random()
223+
const result =
224+
randomNum <= 1 / 3
225+
? CodeWhispererConstants.UserGroup.Control
226+
: randomNum <= 2 / 3
227+
? CodeWhispererConstants.UserGroup.CrossFile
228+
: CodeWhispererConstants.UserGroup.Classifier
229+
230+
context.extensionContext.globalState.update(CodeWhispererConstants.userGroupKey, result)
224231
}
225232
}
226233

src/codewhisperer/models/constants.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,12 @@ export const stopScanMessage =
252252

253253
export const showScannedFilesMessage = 'Show Scanned Files'
254254

255-
export const isClassifierEnabledKey = 'CODEWHISPERER_CLASSIFIER_TRIGGER_ENABLED'
255+
export const userGroupKey = 'CODEWHISPERER_USER_GROUP'
256256

257257
export const updateInlineLockKey = 'CODEWHISPERER_INLINE_UPDATE_LOCK_KEY'
258+
259+
export enum UserGroup {
260+
Classifier = 'Classifier',
261+
CrossFile = 'CrossFile',
262+
Control = 'Control',
263+
}

src/codewhisperer/service/classifierTrigger.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,11 @@ export class ClassifierTrigger {
319319
}
320320

321321
public isClassifierEnabled() {
322-
return globals.context.globalState.get<boolean>(CodeWhispererConstants.isClassifierEnabledKey)
322+
const userGroup = globals.context.globalState.get<CodeWhispererConstants.UserGroup | undefined>(
323+
CodeWhispererConstants.userGroupKey
324+
)
325+
326+
return userGroup === CodeWhispererConstants.UserGroup.Classifier
323327
}
324328

325329
public getThreshold() {

src/codewhisperer/service/keyStrokeHandler.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -126,10 +126,6 @@ export class KeyStrokeHandler {
126126
triggerType = 'SpecialCharacters'
127127
break
128128
}
129-
case DocumentChangedSource.IntelliSense: {
130-
triggerType = 'IntelliSenseAcceptance'
131-
break
132-
}
133129
case DocumentChangedSource.RegularKey: {
134130
if (!ClassifierTrigger.instance.shouldInvokeClassifier(editor.document.languageId)) {
135131
this.startIdleTimeTriggerTimer(event, editor, client, config)
@@ -303,10 +299,6 @@ export class DefaultDocumentChangedType extends DocumentChangedType {
303299
} else if (new RegExp('^[ ]+$').test(changedText)) {
304300
// single line && single place reformat should consist of space chars only
305301
return DocumentChangedSource.Reformatting
306-
} else if (new RegExp('^[\\S]+$').test(changedText) && !isCloud9()) {
307-
// match single word only, which is general case for intellisense suggestion, it's still possible intllisense suggest
308-
// multi-words code snippets
309-
return DocumentChangedSource.IntelliSense
310302
} else {
311303
return isCloud9() ? DocumentChangedSource.RegularKey : DocumentChangedSource.Unknown
312304
}
@@ -322,7 +314,6 @@ export enum DocumentChangedSource {
322314
RegularKey = 'RegularKey',
323315
TabKey = 'TabKey',
324316
EnterKey = 'EnterKey',
325-
IntelliSense = 'IntelliSense',
326317
Reformatting = 'Reformatting',
327318
Deletion = 'Deletion',
328319
Unknown = 'Unknown',

src/test/codewhisperer/service/keyStrokeHandler.test.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -256,9 +256,6 @@ describe('keyStrokeHandler', function () {
256256
[':', DocumentChangedSource.SpecialCharsKey],
257257
['a', DocumentChangedSource.RegularKey],
258258
[tabStr, DocumentChangedSource.TabKey],
259-
['__str__', DocumentChangedSource.IntelliSense],
260-
['toString()', DocumentChangedSource.IntelliSense],
261-
['</p>', DocumentChangedSource.IntelliSense],
262259
[' ', DocumentChangedSource.Reformatting],
263260
['def add(a,b):\n return a + b\n', DocumentChangedSource.Unknown],
264261
['function suggestedByIntelliSense():', DocumentChangedSource.Unknown],

0 commit comments

Comments
 (0)