Skip to content

Commit dae7f99

Browse files
Merge master into feature/LSP-gamma
2 parents 2384f8c + 340309c commit dae7f99

File tree

4 files changed

+57
-1
lines changed

4 files changed

+57
-1
lines changed

packages/amazonq/package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -805,6 +805,11 @@
805805
{
806806
"command": "aws.amazonq.walkthrough.show",
807807
"title": "%AWS.amazonq.welcomeWalkthrough%"
808+
},
809+
{
810+
"command": "aws.amazonq.clearCache",
811+
"title": "%AWS.amazonq.clearCache%",
812+
"category": "%AWS.amazonq.title%"
808813
}
809814
],
810815
"keybindings": [

packages/amazonq/src/commands.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@
99
import * as vscode from 'vscode'
1010
import { Auth } from 'aws-core-vscode/auth'
1111
import { Commands } from 'aws-core-vscode/shared'
12+
import { clearCacheDeclaration } from './util/clearCache'
1213

1314
export function registerCommands(context: vscode.ExtensionContext) {
14-
context.subscriptions.push(Commands.register('_aws.amazonq.auth.autoConnect', Auth.instance.tryAutoConnect))
15+
context.subscriptions.push(
16+
Commands.register('_aws.amazonq.auth.autoConnect', Auth.instance.tryAutoConnect),
17+
clearCacheDeclaration.register()
18+
)
1519
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*!
2+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
import { AuthUtil } from 'aws-core-vscode/codewhisperer'
7+
import { Commands, globals } from 'aws-core-vscode/shared'
8+
import vscode from 'vscode'
9+
10+
/**
11+
* The purpose of this module is to provide a util to clear all extension cache so that it has a clean state
12+
*/
13+
14+
/**
15+
* Clears "all" cache of the extension, effectively putting the user in a "net new" state.
16+
*
17+
* NOTE: This is a best attempt. There may be state like a file in the filesystem which is not deleted.
18+
* We should aim to add all state clearing in to this method.
19+
*/
20+
async function clearCache() {
21+
// Check a final time if they want to clear their cache
22+
const doContinue = await vscode.window
23+
.showInformationMessage(
24+
'This will wipe your Amazon Q extension state, then reload your VS Code window. This operation is not dangerous. ',
25+
{ modal: true },
26+
'Continue'
27+
)
28+
.then((value) => {
29+
return value === 'Continue'
30+
})
31+
if (!doContinue) {
32+
return
33+
}
34+
35+
// SSO cache persists on disk, this should indirectly delete it
36+
const conn = AuthUtil.instance.conn
37+
if (conn) {
38+
await AuthUtil.instance.auth.deleteConnection(conn)
39+
}
40+
41+
await globals.globalState.clear()
42+
43+
// Make the IDE reload so all new changes take effect
44+
void vscode.commands.executeCommand('workbench.action.reloadWindow')
45+
}
46+
export const clearCacheDeclaration = Commands.declare({ id: 'aws.amazonq.clearCache' }, () => clearCache)

packages/core/package.nls.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,7 @@
328328
"AWS.amazonq.title": "Amazon Q",
329329
"AWS.amazonq.chat": "Chat",
330330
"AWS.amazonq.openChat": "Open Chat",
331+
"AWS.amazonq.clearCache": "Clear extension cache",
331332
"AWS.amazonq.context.folders.title": "Folders",
332333
"AWS.amazonq.context.folders.description": "Add all files in a folder to context",
333334
"AWS.amazonq.context.files.title": "Files",

0 commit comments

Comments
 (0)