From 81b2b1675009c8bf16a6b7cb4b08f119b58dddb4 Mon Sep 17 00:00:00 2001 From: Will Lo Date: Mon, 12 May 2025 12:03:05 -0700 Subject: [PATCH 1/5] add abap support --- .../src/codewhisperer/util/editorContext.ts | 3 +- .../util/runtimeLanguageContext.ts | 24 ++++++++++-- .../src/shared/telemetry/vscodeTelemetry.json | 39 +++++++++++++++++++ 3 files changed, 60 insertions(+), 6 deletions(-) diff --git a/packages/core/src/codewhisperer/util/editorContext.ts b/packages/core/src/codewhisperer/util/editorContext.ts index 58301e176f6..cd0034c83fa 100644 --- a/packages/core/src/codewhisperer/util/editorContext.ts +++ b/packages/core/src/codewhisperer/util/editorContext.ts @@ -45,8 +45,7 @@ export function extractContextForCodeWhisperer(editor: vscode.TextEditor): codew ) let languageName = 'plaintext' if (!checkLeftContextKeywordsForJson(document.fileName, caretLeftFileContext, editor.document.languageId)) { - languageName = - runtimeLanguageContext.normalizeLanguage(editor.document.languageId) ?? editor.document.languageId + languageName = runtimeLanguageContext.resolveLang(editor.document) } return { filename: getFileRelativePath(editor), diff --git a/packages/core/src/codewhisperer/util/runtimeLanguageContext.ts b/packages/core/src/codewhisperer/util/runtimeLanguageContext.ts index 9a495cf5356..6d937555b90 100644 --- a/packages/core/src/codewhisperer/util/runtimeLanguageContext.ts +++ b/packages/core/src/codewhisperer/util/runtimeLanguageContext.ts @@ -60,7 +60,7 @@ export class RuntimeLanguageContext { constructor() { this.supportedLanguageMap = createConstantMap< - CodeWhispererConstants.PlatformLanguageId | CodewhispererLanguage, + Exclude, CodewhispererLanguage >({ c: 'c', @@ -78,7 +78,6 @@ export class RuntimeLanguageContext { jsx: 'jsx', kotlin: 'kotlin', packer: 'tf', - plaintext: 'plaintext', php: 'php', python: 'python', ruby: 'ruby', @@ -105,6 +104,7 @@ export class RuntimeLanguageContext { systemverilog: 'systemVerilog', verilog: 'systemVerilog', vue: 'vue', + abap: 'abap', }) this.supportedLanguageExtensionMap = createConstantMap({ c: 'c', @@ -145,9 +145,15 @@ export class RuntimeLanguageContext { ps1: 'powershell', psm1: 'powershell', r: 'r', + abap: 'abap', + acds: 'abap', }) } + public resolveLang(doc: vscode.TextDocument): CodewhispererLanguage { + return this.normalizeLanguage(doc.languageId) || this.byFileExt(doc) || 'plaintext' + } + /** * To add a new platform language id: * 1. add new platform language ID constant in the file codewhisperer/constant.ts @@ -267,8 +273,7 @@ export class RuntimeLanguageContext { } else { const normalizedLanguageId = this.normalizeLanguage(arg.languageId) const byLanguageId = !normalizedLanguageId || normalizedLanguageId === 'plaintext' ? false : true - const extension = path.extname(arg.uri.fsPath) - const byFileExtension = this.isFileFormatSupported(extension.substring(1)) + const byFileExtension = this.byFileExt(arg) !== undefined return byLanguageId || byFileExtension } @@ -291,6 +296,17 @@ export class RuntimeLanguageContext { public getLanguageFromFileExtension(fileExtension: string) { return this.supportedLanguageExtensionMap.get(fileExtension) } + + private byFileExt(doc: vscode.TextDocument): CodewhispererLanguage | undefined { + const extension = path.extname(doc.uri.fsPath) + const byExt = this.supportedLanguageExtensionMap.get(extension.substring(1)) + + if (byExt === 'plaintext') { + return undefined + } + + return byExt + } } export const runtimeLanguageContext = new RuntimeLanguageContext() diff --git a/packages/core/src/shared/telemetry/vscodeTelemetry.json b/packages/core/src/shared/telemetry/vscodeTelemetry.json index b28aeec4847..fd492d17d88 100644 --- a/packages/core/src/shared/telemetry/vscodeTelemetry.json +++ b/packages/core/src/shared/telemetry/vscodeTelemetry.json @@ -1,5 +1,44 @@ { "types": [ + { + "name": "codewhispererLanguage", + "type": "string", + "description": "Programming language of the CodeWhisperer recommendation", + "allowedValues": [ + "abap", + "c", + "cpp", + "csharp", + "dart", + "go", + "hcl", + "java", + "javascript", + "json", + "jsonc", + "jsx", + "kotlin", + "lua", + "php", + "plaintext", + "powershell", + "python", + "r", + "ruby", + "rust", + "scala", + "shell", + "sql", + "swift", + "systemVerilog", + "tf", + "tsx", + "typescript", + "vue", + "yaml", + "yml" + ] + }, { "name": "amazonQProfileRegion", "type": "string", From 2fd9173d4696a256815ea111fc7bca01623abfbe Mon Sep 17 00:00:00 2001 From: Will Lo Date: Wed, 14 May 2025 13:08:28 -0700 Subject: [PATCH 2/5] bump telemetry --- package-lock.json | 8 ++-- package.json | 2 +- .../src/shared/telemetry/vscodeTelemetry.json | 39 ------------------- 3 files changed, 5 insertions(+), 44 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0a36cb6df6a..9de6172ddda 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "vscode-nls-dev": "^4.0.4" }, "devDependencies": { - "@aws-toolkits/telemetry": "^1.0.317", + "@aws-toolkits/telemetry": "^1.0.321", "@playwright/browser-chromium": "^1.43.1", "@stylistic/eslint-plugin": "^2.11.0", "@types/he": "^1.2.3", @@ -10760,9 +10760,9 @@ } }, "node_modules/@aws-toolkits/telemetry": { - "version": "1.0.317", - "resolved": "https://registry.npmjs.org/@aws-toolkits/telemetry/-/telemetry-1.0.317.tgz", - "integrity": "sha512-QFLBFfHZjuB2pBd1p0Tn/GMKTYYQu3/nrlj0Co7EkqozvDNDG0nTjxtkXxotbwjrqVD5Sv8i46gEdgsyQ7at3w==", + "version": "1.0.322", + "resolved": "https://registry.npmjs.org/@aws-toolkits/telemetry/-/telemetry-1.0.322.tgz", + "integrity": "sha512-KtLabV3ycRH31EAZ0xoWrdpIBG3ym8CQAqgkHd9DSefndbepPRa07atfXw73Ok9J5aA81VHCFpx1dwrLg39EcQ==", "dev": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index 30f0497cdb2..f523a29bbff 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "skippedTestReport": "ts-node ./scripts/skippedTestReport.ts ./packages/amazonq/test/e2e/" }, "devDependencies": { - "@aws-toolkits/telemetry": "^1.0.317", + "@aws-toolkits/telemetry": "^1.0.321", "@playwright/browser-chromium": "^1.43.1", "@stylistic/eslint-plugin": "^2.11.0", "@types/he": "^1.2.3", diff --git a/packages/core/src/shared/telemetry/vscodeTelemetry.json b/packages/core/src/shared/telemetry/vscodeTelemetry.json index fd492d17d88..b28aeec4847 100644 --- a/packages/core/src/shared/telemetry/vscodeTelemetry.json +++ b/packages/core/src/shared/telemetry/vscodeTelemetry.json @@ -1,44 +1,5 @@ { "types": [ - { - "name": "codewhispererLanguage", - "type": "string", - "description": "Programming language of the CodeWhisperer recommendation", - "allowedValues": [ - "abap", - "c", - "cpp", - "csharp", - "dart", - "go", - "hcl", - "java", - "javascript", - "json", - "jsonc", - "jsx", - "kotlin", - "lua", - "php", - "plaintext", - "powershell", - "python", - "r", - "ruby", - "rust", - "scala", - "shell", - "sql", - "swift", - "systemVerilog", - "tf", - "tsx", - "typescript", - "vue", - "yaml", - "yml" - ] - }, { "name": "amazonQProfileRegion", "type": "string", From 371fabf2a2ed444a5b156b27046e37e119da8656 Mon Sep 17 00:00:00 2001 From: Will Lo Date: Wed, 14 May 2025 13:18:46 -0700 Subject: [PATCH 3/5] telemetry --- package-lock.json | 3 +-- package.json | 2 +- packages/core/src/codewhisperer/util/runtimeLanguageContext.ts | 1 + 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7027398dc16..2dc9df576b8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "vscode-nls-dev": "^4.0.4" }, "devDependencies": { - "@aws-toolkits/telemetry": "^1.0.321", + "@aws-toolkits/telemetry": "^1.0.322", "@playwright/browser-chromium": "^1.43.1", "@stylistic/eslint-plugin": "^2.11.0", "@types/he": "^1.2.3", @@ -10765,7 +10765,6 @@ "integrity": "sha512-KtLabV3ycRH31EAZ0xoWrdpIBG3ym8CQAqgkHd9DSefndbepPRa07atfXw73Ok9J5aA81VHCFpx1dwrLg39EcQ==", "dev": true, "license": "Apache-2.0", - "license": "Apache-2.0", "dependencies": { "ajv": "^6.12.6", "cross-spawn": "^7.0.6", diff --git a/package.json b/package.json index f523a29bbff..525655b8c35 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "skippedTestReport": "ts-node ./scripts/skippedTestReport.ts ./packages/amazonq/test/e2e/" }, "devDependencies": { - "@aws-toolkits/telemetry": "^1.0.321", + "@aws-toolkits/telemetry": "^1.0.322", "@playwright/browser-chromium": "^1.43.1", "@stylistic/eslint-plugin": "^2.11.0", "@types/he": "^1.2.3", diff --git a/packages/core/src/codewhisperer/util/runtimeLanguageContext.ts b/packages/core/src/codewhisperer/util/runtimeLanguageContext.ts index 290067fa66e..e1d4802b6f1 100644 --- a/packages/core/src/codewhisperer/util/runtimeLanguageContext.ts +++ b/packages/core/src/codewhisperer/util/runtimeLanguageContext.ts @@ -187,6 +187,7 @@ export class RuntimeLanguageContext { vue: '', // vue lacks a single-line comment prefix yaml: '# ', yml: '# ', + abap: '', }) } From 7195dd0c44b26e400b34f4a2bd66d870ee3095a7 Mon Sep 17 00:00:00 2001 From: Will Lo Date: Wed, 14 May 2025 13:34:51 -0700 Subject: [PATCH 4/5] fix test --- .../test/unit/codewhisperer/util/runtimeLanguageContext.test.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/amazonq/test/unit/codewhisperer/util/runtimeLanguageContext.test.ts b/packages/amazonq/test/unit/codewhisperer/util/runtimeLanguageContext.test.ts index a5cc430a5a9..9d2dbf7954d 100644 --- a/packages/amazonq/test/unit/codewhisperer/util/runtimeLanguageContext.test.ts +++ b/packages/amazonq/test/unit/codewhisperer/util/runtimeLanguageContext.test.ts @@ -177,7 +177,6 @@ describe('runtimeLanguageContext', function () { 'jsx', 'kotlin', 'php', - 'plaintext', 'python', 'ruby', 'rust', @@ -288,7 +287,6 @@ describe('runtimeLanguageContext', function () { ['jsx', 'jsx'], ['kotlin', 'kt'], ['php', 'php'], - ['plaintext', 'txt'], ['python', 'py'], ['ruby', 'rb'], ['rust', 'rs'], From 83781c3a1c6c4e05de564e6e2c206f3f4f5dbe16 Mon Sep 17 00:00:00 2001 From: Will Lo Date: Wed, 14 May 2025 13:35:34 -0700 Subject: [PATCH 5/5] changelog --- .../Feature-31d91f84-30cb-4acd-9e39-9dc153edf0a6.json | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 packages/amazonq/.changes/next-release/Feature-31d91f84-30cb-4acd-9e39-9dc153edf0a6.json diff --git a/packages/amazonq/.changes/next-release/Feature-31d91f84-30cb-4acd-9e39-9dc153edf0a6.json b/packages/amazonq/.changes/next-release/Feature-31d91f84-30cb-4acd-9e39-9dc153edf0a6.json new file mode 100644 index 00000000000..da0d200410d --- /dev/null +++ b/packages/amazonq/.changes/next-release/Feature-31d91f84-30cb-4acd-9e39-9dc153edf0a6.json @@ -0,0 +1,4 @@ +{ + "type": "Feature", + "description": "Add inline completion support for abap language" +}