From ef3ced592490214af916174a69740a5646482f26 Mon Sep 17 00:00:00 2001 From: Mingxuan Wang Date: Wed, 6 Aug 2025 12:01:13 -0700 Subject: [PATCH 1/6] add change log --- .../Feature-a517b202-5a1c-42c7-b7a4-06bae2a38e8f.json | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 packages/amazonq/.changes/next-release/Feature-a517b202-5a1c-42c7-b7a4-06bae2a38e8f.json diff --git a/packages/amazonq/.changes/next-release/Feature-a517b202-5a1c-42c7-b7a4-06bae2a38e8f.json b/packages/amazonq/.changes/next-release/Feature-a517b202-5a1c-42c7-b7a4-06bae2a38e8f.json new file mode 100644 index 00000000000..386908256e0 --- /dev/null +++ b/packages/amazonq/.changes/next-release/Feature-a517b202-5a1c-42c7-b7a4-06bae2a38e8f.json @@ -0,0 +1,4 @@ +{ + "type": "Feature", + "description": "add Amazon Q error fix/explain on hover/right-click for VSCode error indicators and messages" +} From ac1e682839806ecc366c95ca36d7f580a5e9cb6c Mon Sep 17 00:00:00 2001 From: Mingxuan Wang Date: Wed, 6 Aug 2025 12:27:42 -0700 Subject: [PATCH 2/6] edit change log --- .../Feature-a517b202-5a1c-42c7-b7a4-06bae2a38e8f.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/amazonq/.changes/next-release/Feature-a517b202-5a1c-42c7-b7a4-06bae2a38e8f.json b/packages/amazonq/.changes/next-release/Feature-a517b202-5a1c-42c7-b7a4-06bae2a38e8f.json index 386908256e0..0f5dc6d01d3 100644 --- a/packages/amazonq/.changes/next-release/Feature-a517b202-5a1c-42c7-b7a4-06bae2a38e8f.json +++ b/packages/amazonq/.changes/next-release/Feature-a517b202-5a1c-42c7-b7a4-06bae2a38e8f.json @@ -1,4 +1,4 @@ { "type": "Feature", - "description": "add Amazon Q error fix/explain on hover/right-click for VSCode error indicators and messages" + "description": "Amazon Q Chat provides error explanations and fixes when hovering or right-clicking on error indicators and messages" } From 4559e522bdc049df42faefffdc8912e6596ddb68 Mon Sep 17 00:00:00 2001 From: Mingxuan Wang Date: Fri, 8 Aug 2025 10:50:30 -0700 Subject: [PATCH 3/6] feat(amazonq): add diagnostics and editor controlling support for Flare --- packages/amazonq/src/lsp/chat/messages.ts | 56 +++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/packages/amazonq/src/lsp/chat/messages.ts b/packages/amazonq/src/lsp/chat/messages.ts index 16965e2f41f..9c13f6d0c3d 100644 --- a/packages/amazonq/src/lsp/chat/messages.ts +++ b/packages/amazonq/src/lsp/chat/messages.ts @@ -66,6 +66,10 @@ import { ShowOpenDialogParams, openFileDialogRequestType, OpenFileDialogResult, + CheckDiagnosticsRequestType, + CheckDiagnosticsParams, + openWorkspaceFileRequestType, + OpenWorkspaceFileParams, } from '@aws/language-server-runtimes/protocol' import { v4 as uuidv4 } from 'uuid' import * as vscode from 'vscode' @@ -559,6 +563,58 @@ export function registerMessageListeners( registerHandlerWithResponseRouter(openTabRequestType.method) registerHandlerWithResponseRouter(getSerializedChatRequestType.method) + // Register diagnostic check handler + languageClient.onRequest(CheckDiagnosticsRequestType.method, async (params: CheckDiagnosticsParams) => { + const result: Record = {} + + for (const [filePath, diagnosticJson] of Object.entries(params.filePaths)) { + try { + const uri = vscode.Uri.file(filePath) + const diagnostics = vscode.languages.getDiagnostics(uri) + + if (diagnostics && diagnostics.length > 0) { + // Convert VSCode diagnostics to JSON format + const diagnosticsJson = diagnostics.map((diagnostic) => ({ + range: { + start: { + line: diagnostic.range.start.line, + character: diagnostic.range.start.character, + }, + end: { line: diagnostic.range.end.line, character: diagnostic.range.end.character }, + }, + severity: diagnostic.severity, + message: diagnostic.message, + source: diagnostic.source, + code: diagnostic.code, + })) + result[filePath] = diagnosticsJson + } else { + // No diagnostics found, return the original or empty + result[filePath] = diagnosticJson || [] + } + } catch (error) { + languageClient.error(`Failed to get diagnostics for ${filePath}: ${error}`) + result[filePath] = diagnosticJson || [] + } + } + return { filePaths: result } + }) + + // Register openWorkspaceFile handler + languageClient.onRequest(openWorkspaceFileRequestType.method, async (params: OpenWorkspaceFileParams) => { + try { + const uri = vscode.Uri.file(params.filePath) + const doc = await vscode.workspace.openTextDocument(uri) + await vscode.window.showTextDocument(doc, { preview: false }) + if (params.makeActive) { + await vscode.window.showTextDocument(doc, { preview: false, preserveFocus: false }) + } + return { success: true } + } catch (error) { + languageClient.error(`Failed to open workspace file ${params.filePath}: ${error}`) + return { success: false } + } + }) languageClient.onRequest(ShowSaveFileDialogRequestType.method, async (params: ShowSaveFileDialogParams) => { const filters: Record = {} From 50b56b06268aca3cd33aa57742f2a324bb160613 Mon Sep 17 00:00:00 2001 From: Mingxuan Wang Date: Fri, 8 Aug 2025 10:56:33 -0700 Subject: [PATCH 4/6] remove useless chage log from the PR --- .../Feature-a517b202-5a1c-42c7-b7a4-06bae2a38e8f.json | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 packages/amazonq/.changes/next-release/Feature-a517b202-5a1c-42c7-b7a4-06bae2a38e8f.json diff --git a/packages/amazonq/.changes/next-release/Feature-a517b202-5a1c-42c7-b7a4-06bae2a38e8f.json b/packages/amazonq/.changes/next-release/Feature-a517b202-5a1c-42c7-b7a4-06bae2a38e8f.json deleted file mode 100644 index 0f5dc6d01d3..00000000000 --- a/packages/amazonq/.changes/next-release/Feature-a517b202-5a1c-42c7-b7a4-06bae2a38e8f.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "Feature", - "description": "Amazon Q Chat provides error explanations and fixes when hovering or right-clicking on error indicators and messages" -} From 3dc2a5f85ce23f9233610e3c61dcaadc27446935 Mon Sep 17 00:00:00 2001 From: Mingxuan Wang Date: Tue, 12 Aug 2025 14:16:49 -0700 Subject: [PATCH 5/6] fix: remove unnecessary code changes --- package-lock.json | 87 ++++++++++++----------- packages/amazonq/src/lsp/chat/messages.ts | 30 ++++++-- packages/core/package.json | 4 +- 3 files changed, 70 insertions(+), 51 deletions(-) diff --git a/package-lock.json b/package-lock.json index b85728e18b8..d3ac9ae64cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15044,13 +15044,13 @@ } }, "node_modules/@aws/language-server-runtimes": { - "version": "0.2.119", - "resolved": "https://registry.npmjs.org/@aws/language-server-runtimes/-/language-server-runtimes-0.2.119.tgz", - "integrity": "sha512-zHonaOBuZ9K81/EQ1hg6ieu45YK7J5M6kiFD/dpdwJwsU36Ia4rbnN2W5ZIDPryZ9Hx9WYpw72YBl+q8+6BdGQ==", + "version": "0.2.124", + "resolved": "https://registry.npmjs.org/@aws/language-server-runtimes/-/language-server-runtimes-0.2.124.tgz", + "integrity": "sha512-fbz9qV7P0A/N22D0dHHPZYAvQRKurOQuAHhnZAyXQ3e8bWv4pxbQJT8gZGsAqcPa+tpwKYTSEiQrDU/stjptFw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws/language-server-runtimes-types": "^0.1.51", + "@aws/language-server-runtimes-types": "^0.1.56", "@opentelemetry/api": "^1.9.0", "@opentelemetry/api-logs": "^0.200.0", "@opentelemetry/core": "^2.0.0", @@ -15065,7 +15065,7 @@ "hpagent": "^1.2.0", "jose": "^5.9.6", "mac-ca": "^3.1.1", - "os-proxy-config": "^1.1.2", + "registry-js": "^1.16.1", "rxjs": "^7.8.2", "vscode-languageserver": "^9.0.1", "vscode-languageserver-protocol": "^3.17.5", @@ -15077,9 +15077,9 @@ } }, "node_modules/@aws/language-server-runtimes-types": { - "version": "0.1.51", - "resolved": "https://registry.npmjs.org/@aws/language-server-runtimes-types/-/language-server-runtimes-types-0.1.51.tgz", - "integrity": "sha512-TuCA821MSRCpO/1thhHaBRpKzU/CiHM/Bvd6quJRUKwvSb8/gTG1mSBp2YoHYx4p7FUZYBko2DKDmpaB1WfvUw==", + "version": "0.1.56", + "resolved": "https://registry.npmjs.org/@aws/language-server-runtimes-types/-/language-server-runtimes-types-0.1.56.tgz", + "integrity": "sha512-Md/L750JShCHUsCQUJva51Ofkn/GDBEX8PpZnWUIVqkpddDR00SLQS2smNf4UHtKNJ2fefsfks/Kqfuatjkjvg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -18872,7 +18872,8 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/are-we-there-yet": { "version": "1.1.7", @@ -18880,6 +18881,7 @@ "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", "deprecated": "This package is no longer supported.", "dev": true, + "license": "ISC", "dependencies": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -18890,6 +18892,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -18904,13 +18907,15 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/are-we-there-yet/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } @@ -20020,6 +20025,7 @@ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -20174,7 +20180,8 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/content-disposition": { "version": "0.5.4", @@ -22223,6 +22230,7 @@ "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", "deprecated": "This package is no longer supported.", "dev": true, + "license": "ISC", "dependencies": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -22239,6 +22247,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -22248,6 +22257,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", "dev": true, + "license": "MIT", "dependencies": { "number-is-nan": "^1.0.0" }, @@ -22260,6 +22270,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", "dev": true, + "license": "MIT", "dependencies": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -22274,6 +22285,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^2.0.0" }, @@ -22597,7 +22609,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/hash-base": { "version": "3.1.0", @@ -24281,12 +24294,6 @@ "undici": "^6.16.1" } }, - "node_modules/mac-system-proxy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mac-system-proxy/-/mac-system-proxy-1.0.4.tgz", - "integrity": "sha512-IAkNLxXZrYuM99A2OhPrvUoAxohsxQciJh2D2xnD+R6vypn/AVyOYLsbZsMVCS/fEbLIe67nQ8krEAfqP12BVg==", - "dev": true - }, "node_modules/magic-string": { "version": "0.30.0", "license": "MIT", @@ -25078,7 +25085,8 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", "integrity": "sha512-6kM8CLXvuW5crTxsAtva2YLrRrDaiTIkIePWs9moLHqbFWT94WpNFjwS/5dfLfECg5i/lkmw3aoqVidxt23TEQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/normalize-package-data": { "version": "3.0.3", @@ -25129,6 +25137,7 @@ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "deprecated": "This package is no longer supported.", "dev": true, + "license": "ISC", "dependencies": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -25152,6 +25161,7 @@ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -25341,16 +25351,6 @@ "version": "0.3.0", "license": "MIT" }, - "node_modules/os-proxy-config": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/os-proxy-config/-/os-proxy-config-1.1.2.tgz", - "integrity": "sha512-sV7htE8y6NQORU0oKOUGTwQYe1gSFK3a3Z1i4h6YaqdrA9C0JIsUPQAqEkO8ejjYbRrQ+jsnks5qjtisr7042Q==", - "dev": true, - "dependencies": { - "mac-system-proxy": "^1.0.0", - "windows-system-proxy": "^1.0.0" - } - }, "node_modules/p-cancelable": { "version": "2.1.1", "license": "MIT", @@ -26485,6 +26485,7 @@ "integrity": "sha512-pQ2kD36lh+YNtpaXm6HCCb0QZtV/zQEeKnkfEIj5FDSpF/oFts7pwizEUkWSvP8IbGb4A4a5iBhhS9eUearMmQ==", "dev": true, "hasInstallScript": true, + "license": "MIT", "dependencies": { "node-addon-api": "^3.2.1", "prebuild-install": "^5.3.5" @@ -26495,6 +26496,7 @@ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", "dev": true, + "license": "MIT", "dependencies": { "mimic-response": "^2.0.0" }, @@ -26507,6 +26509,7 @@ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", "dev": true, + "license": "Apache-2.0", "bin": { "detect-libc": "bin/detect-libc.js" }, @@ -26519,6 +26522,7 @@ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -26531,6 +26535,7 @@ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz", "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^5.4.1" } @@ -26539,13 +26544,15 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/registry-js/node_modules/prebuild-install": { "version": "5.3.6", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.6.tgz", "integrity": "sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg==", "dev": true, + "license": "MIT", "dependencies": { "detect-libc": "^1.0.3", "expand-template": "^2.0.3", @@ -26575,6 +26582,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } @@ -26584,6 +26592,7 @@ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", "dev": true, + "license": "MIT", "dependencies": { "decompress-response": "^4.2.0", "once": "^1.3.1", @@ -27193,7 +27202,8 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/set-function-length": { "version": "1.2.2", @@ -29434,6 +29444,7 @@ "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -29461,6 +29472,7 @@ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } @@ -29493,15 +29505,6 @@ "node": ">=4" } }, - "node_modules/windows-system-proxy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/windows-system-proxy/-/windows-system-proxy-1.0.0.tgz", - "integrity": "sha512-qd1WfyX9gjAqI36RHt95di2+FBr74DhvELd1EASgklCGScjwReHnWnXfUyabp/CJWl/IdnkUzG0Ub6Cv2R4KJQ==", - "dev": true, - "dependencies": { - "registry-js": "^1.15.1" - } - }, "node_modules/winston": { "version": "3.11.0", "license": "MIT", @@ -30063,8 +30066,8 @@ "@aws-sdk/types": "^3.13.1", "@aws/chat-client": "^0.1.4", "@aws/chat-client-ui-types": "^0.1.47", - "@aws/language-server-runtimes": "^0.2.119", - "@aws/language-server-runtimes-types": "^0.1.47", + "@aws/language-server-runtimes": "^0.2.124", + "@aws/language-server-runtimes-types": "^0.1.56", "@cspotcode/source-map-support": "^0.8.1", "@sinonjs/fake-timers": "^10.0.2", "@types/adm-zip": "^0.4.34", diff --git a/packages/amazonq/src/lsp/chat/messages.ts b/packages/amazonq/src/lsp/chat/messages.ts index 9c13f6d0c3d..c0dcc6d8c0e 100644 --- a/packages/amazonq/src/lsp/chat/messages.ts +++ b/packages/amazonq/src/lsp/chat/messages.ts @@ -68,6 +68,7 @@ import { OpenFileDialogResult, CheckDiagnosticsRequestType, CheckDiagnosticsParams, + DiagnosticInfo, openWorkspaceFileRequestType, OpenWorkspaceFileParams, } from '@aws/language-server-runtimes/protocol' @@ -565,16 +566,16 @@ export function registerMessageListeners( registerHandlerWithResponseRouter(getSerializedChatRequestType.method) // Register diagnostic check handler languageClient.onRequest(CheckDiagnosticsRequestType.method, async (params: CheckDiagnosticsParams) => { - const result: Record = {} + const result: Record = {} - for (const [filePath, diagnosticJson] of Object.entries(params.filePaths)) { + for (const [filePath, diagnosticJson] of Object.entries(params.fileDiagnostics)) { try { const uri = vscode.Uri.file(filePath) const diagnostics = vscode.languages.getDiagnostics(uri) if (diagnostics && diagnostics.length > 0) { // Convert VSCode diagnostics to JSON format - const diagnosticsJson = diagnostics.map((diagnostic) => ({ + const diagnosticsJson: DiagnosticInfo[] = diagnostics.map((diagnostic) => ({ range: { start: { line: diagnostic.range.start.line, @@ -585,7 +586,10 @@ export function registerMessageListeners( severity: diagnostic.severity, message: diagnostic.message, source: diagnostic.source, - code: diagnostic.code, + code: + typeof diagnostic.code === 'object' && diagnostic.code !== null + ? diagnostic.code.value + : diagnostic.code, })) result[filePath] = diagnosticsJson } else { @@ -597,15 +601,27 @@ export function registerMessageListeners( result[filePath] = diagnosticJson || [] } } - return { filePaths: result } + return { fileDiagnostics: result } }) // Register openWorkspaceFile handler languageClient.onRequest(openWorkspaceFileRequestType.method, async (params: OpenWorkspaceFileParams) => { try { const uri = vscode.Uri.file(params.filePath) - const doc = await vscode.workspace.openTextDocument(uri) - await vscode.window.showTextDocument(doc, { preview: false }) + + // Check if the file is already opened in any visible text editor + const existingEditor = vscode.window.visibleTextEditors.find( + (editor) => editor.document.uri.toString() === uri.toString() + ) + + let doc: vscode.TextDocument + if (existingEditor) { + // File is already open, use the existing document + doc = existingEditor.document + } else { + // File is not open, open it + doc = await vscode.workspace.openTextDocument(uri) + } if (params.makeActive) { await vscode.window.showTextDocument(doc, { preview: false, preserveFocus: false }) } diff --git a/packages/core/package.json b/packages/core/package.json index 7be37423006..2188c0cb0a2 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -471,8 +471,8 @@ "@aws-sdk/types": "^3.13.1", "@aws/chat-client": "^0.1.4", "@aws/chat-client-ui-types": "^0.1.47", - "@aws/language-server-runtimes": "^0.2.119", - "@aws/language-server-runtimes-types": "^0.1.47", + "@aws/language-server-runtimes": "^0.2.124", + "@aws/language-server-runtimes-types": "^0.1.56", "@cspotcode/source-map-support": "^0.8.1", "@sinonjs/fake-timers": "^10.0.2", "@types/adm-zip": "^0.4.34", From 8dbc9a22a4207ca5cdc976c250fd8ae64267c16f Mon Sep 17 00:00:00 2001 From: Mingxuan Wang Date: Wed, 13 Aug 2025 10:49:26 -0700 Subject: [PATCH 6/6] fix(amazonq): add feature flag for loopDebug --- packages/amazonq/src/lsp/client.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/amazonq/src/lsp/client.ts b/packages/amazonq/src/lsp/client.ts index bc065c8f620..ce47ae23a3a 100644 --- a/packages/amazonq/src/lsp/client.ts +++ b/packages/amazonq/src/lsp/client.ts @@ -174,6 +174,7 @@ export async function startLanguageServer( }, awsClientCapabilities: { q: { + LoopDebug: true, developerProfiles: true, pinnedContextEnabled: true, imageContextEnabled: true,